@cyanheads/congressgov-mcp-server 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/CLAUDE.md +270 -0
  2. package/Dockerfile +99 -0
  3. package/LICENSE +191 -0
  4. package/README.md +296 -0
  5. package/dist/config/server-config.d.ts +13 -0
  6. package/dist/config/server-config.d.ts.map +1 -0
  7. package/dist/config/server-config.js +22 -0
  8. package/dist/config/server-config.js.map +1 -0
  9. package/dist/index.d.ts +7 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +50 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/mcp-server/prompts/definitions/bill-analysis.prompt.d.ts +11 -0
  14. package/dist/mcp-server/prompts/definitions/bill-analysis.prompt.d.ts.map +1 -0
  15. package/dist/mcp-server/prompts/definitions/bill-analysis.prompt.js +36 -0
  16. package/dist/mcp-server/prompts/definitions/bill-analysis.prompt.js.map +1 -0
  17. package/dist/mcp-server/prompts/definitions/legislative-research.prompt.d.ts +10 -0
  18. package/dist/mcp-server/prompts/definitions/legislative-research.prompt.d.ts.map +1 -0
  19. package/dist/mcp-server/prompts/definitions/legislative-research.prompt.js +47 -0
  20. package/dist/mcp-server/prompts/definitions/legislative-research.prompt.js.map +1 -0
  21. package/dist/mcp-server/resources/definitions/bill-types.resource.d.ts +8 -0
  22. package/dist/mcp-server/resources/definitions/bill-types.resource.d.ts.map +1 -0
  23. package/dist/mcp-server/resources/definitions/bill-types.resource.js +39 -0
  24. package/dist/mcp-server/resources/definitions/bill-types.resource.js.map +1 -0
  25. package/dist/mcp-server/resources/definitions/bill.resource.d.ts +11 -0
  26. package/dist/mcp-server/resources/definitions/bill.resource.d.ts.map +1 -0
  27. package/dist/mcp-server/resources/definitions/bill.resource.js +31 -0
  28. package/dist/mcp-server/resources/definitions/bill.resource.js.map +1 -0
  29. package/dist/mcp-server/resources/definitions/committee.resource.d.ts +9 -0
  30. package/dist/mcp-server/resources/definitions/committee.resource.d.ts.map +1 -0
  31. package/dist/mcp-server/resources/definitions/committee.resource.js +26 -0
  32. package/dist/mcp-server/resources/definitions/committee.resource.js.map +1 -0
  33. package/dist/mcp-server/resources/definitions/current-congress.resource.d.ts +8 -0
  34. package/dist/mcp-server/resources/definitions/current-congress.resource.d.ts.map +1 -0
  35. package/dist/mcp-server/resources/definitions/current-congress.resource.js +18 -0
  36. package/dist/mcp-server/resources/definitions/current-congress.resource.js.map +1 -0
  37. package/dist/mcp-server/resources/definitions/member.resource.d.ts +9 -0
  38. package/dist/mcp-server/resources/definitions/member.resource.d.ts.map +1 -0
  39. package/dist/mcp-server/resources/definitions/member.resource.js +21 -0
  40. package/dist/mcp-server/resources/definitions/member.resource.js.map +1 -0
  41. package/dist/mcp-server/tools/definitions/bill-lookup.tool.d.ts +37 -0
  42. package/dist/mcp-server/tools/definitions/bill-lookup.tool.d.ts.map +1 -0
  43. package/dist/mcp-server/tools/definitions/bill-lookup.tool.js +105 -0
  44. package/dist/mcp-server/tools/definitions/bill-lookup.tool.js.map +1 -0
  45. package/dist/mcp-server/tools/definitions/bill-summaries.tool.d.ts +23 -0
  46. package/dist/mcp-server/tools/definitions/bill-summaries.tool.d.ts.map +1 -0
  47. package/dist/mcp-server/tools/definitions/bill-summaries.tool.js +57 -0
  48. package/dist/mcp-server/tools/definitions/bill-summaries.tool.js.map +1 -0
  49. package/dist/mcp-server/tools/definitions/committee-lookup.tool.d.ts +24 -0
  50. package/dist/mcp-server/tools/definitions/committee-lookup.tool.d.ts.map +1 -0
  51. package/dist/mcp-server/tools/definitions/committee-lookup.tool.js +70 -0
  52. package/dist/mcp-server/tools/definitions/committee-lookup.tool.js.map +1 -0
  53. package/dist/mcp-server/tools/definitions/committee-reports.tool.d.ts +22 -0
  54. package/dist/mcp-server/tools/definitions/committee-reports.tool.d.ts.map +1 -0
  55. package/dist/mcp-server/tools/definitions/committee-reports.tool.js +80 -0
  56. package/dist/mcp-server/tools/definitions/committee-reports.tool.js.map +1 -0
  57. package/dist/mcp-server/tools/definitions/crs-reports.tool.d.ts +15 -0
  58. package/dist/mcp-server/tools/definitions/crs-reports.tool.d.ts.map +1 -0
  59. package/dist/mcp-server/tools/definitions/crs-reports.tool.js +41 -0
  60. package/dist/mcp-server/tools/definitions/crs-reports.tool.js.map +1 -0
  61. package/dist/mcp-server/tools/definitions/daily-record.tool.d.ts +17 -0
  62. package/dist/mcp-server/tools/definitions/daily-record.tool.d.ts.map +1 -0
  63. package/dist/mcp-server/tools/definitions/daily-record.tool.js +67 -0
  64. package/dist/mcp-server/tools/definitions/daily-record.tool.js.map +1 -0
  65. package/dist/mcp-server/tools/definitions/enacted-laws.tool.d.ts +20 -0
  66. package/dist/mcp-server/tools/definitions/enacted-laws.tool.d.ts.map +1 -0
  67. package/dist/mcp-server/tools/definitions/enacted-laws.tool.js +55 -0
  68. package/dist/mcp-server/tools/definitions/enacted-laws.tool.js.map +1 -0
  69. package/dist/mcp-server/tools/definitions/member-lookup.tool.d.ts +21 -0
  70. package/dist/mcp-server/tools/definitions/member-lookup.tool.d.ts.map +1 -0
  71. package/dist/mcp-server/tools/definitions/member-lookup.tool.js +86 -0
  72. package/dist/mcp-server/tools/definitions/member-lookup.tool.js.map +1 -0
  73. package/dist/mcp-server/tools/definitions/roll-votes.tool.d.ts +18 -0
  74. package/dist/mcp-server/tools/definitions/roll-votes.tool.d.ts.map +1 -0
  75. package/dist/mcp-server/tools/definitions/roll-votes.tool.js +65 -0
  76. package/dist/mcp-server/tools/definitions/roll-votes.tool.js.map +1 -0
  77. package/dist/mcp-server/tools/definitions/senate-nominations.tool.d.ts +21 -0
  78. package/dist/mcp-server/tools/definitions/senate-nominations.tool.d.ts.map +1 -0
  79. package/dist/mcp-server/tools/definitions/senate-nominations.tool.js +90 -0
  80. package/dist/mcp-server/tools/definitions/senate-nominations.tool.js.map +1 -0
  81. package/dist/mcp-server/tools/format-helpers.d.ts +12 -0
  82. package/dist/mcp-server/tools/format-helpers.d.ts.map +1 -0
  83. package/dist/mcp-server/tools/format-helpers.js +72 -0
  84. package/dist/mcp-server/tools/format-helpers.js.map +1 -0
  85. package/dist/services/congress-api/congress-api-service.d.ts +75 -0
  86. package/dist/services/congress-api/congress-api-service.d.ts.map +1 -0
  87. package/dist/services/congress-api/congress-api-service.js +292 -0
  88. package/dist/services/congress-api/congress-api-service.js.map +1 -0
  89. package/dist/services/congress-api/types.d.ts +122 -0
  90. package/dist/services/congress-api/types.d.ts.map +1 -0
  91. package/dist/services/congress-api/types.js +6 -0
  92. package/dist/services/congress-api/types.js.map +1 -0
  93. package/package.json +71 -0
  94. package/server.json +111 -0
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @fileoverview Shared formatting for tool output — lists, details, HTML stripping.
3
+ * @module mcp-server/tools/format-helpers
4
+ */
5
+ /** Format any tool result into readable text content blocks. */
6
+ export function formatResult(result) {
7
+ return [{ type: 'text', text: render(result) }];
8
+ }
9
+ function render(obj) {
10
+ // Paginated list: { data: [...], pagination: {...} }
11
+ if (Array.isArray(obj.data) && obj.pagination) {
12
+ const p = obj.pagination;
13
+ const items = obj.data;
14
+ const header = `${p.count} total${p.nextOffset != null ? ` | next offset: ${p.nextOffset}` : ''}`;
15
+ if (items.length === 0)
16
+ return header;
17
+ return [header, '', ...items.map((item, i) => `${i + 1}. ${summarize(item)}`)].join('\n');
18
+ }
19
+ // Single-key wrapper: { bill: {...} }, { issues: [...] }, etc.
20
+ const keys = Object.keys(obj);
21
+ if (keys.length === 1 && keys[0] !== undefined) {
22
+ const val = obj[keys[0]];
23
+ if (Array.isArray(val)) {
24
+ if (val.length === 0)
25
+ return `No ${keys[0]}.`;
26
+ return val
27
+ .map((item, i) => `${i + 1}. ${typeof item === 'object' && item ? summarize(item) : String(item)}`)
28
+ .join('\n');
29
+ }
30
+ }
31
+ // Detail object or fallback
32
+ return cleanJson(obj);
33
+ }
34
+ function summarize(item) {
35
+ const parts = [];
36
+ // Identifier
37
+ if (item.type && item.number)
38
+ parts.push(`${item.type} ${item.number}`);
39
+ else if (item.citation)
40
+ parts.push(String(item.citation));
41
+ else if (item.id)
42
+ parts.push(String(item.id));
43
+ // Name
44
+ const name = item.title ?? item.name ?? item.fullName ?? item.directOrderName ?? item.description;
45
+ if (name)
46
+ parts.push(stripHtml(String(name)).slice(0, 200));
47
+ // Status
48
+ if (typeof item.latestAction === 'object' && item.latestAction) {
49
+ const a = item.latestAction;
50
+ parts.push(`[${a.actionDate}: ${a.text}]`);
51
+ }
52
+ else if (item.actionDate && item.text) {
53
+ parts.push(`${item.actionDate}: ${stripHtml(String(item.text)).slice(0, 150)}`);
54
+ }
55
+ return parts.join(' — ') || JSON.stringify(item).slice(0, 300);
56
+ }
57
+ function cleanJson(value) {
58
+ return JSON.stringify(value, (_key, val) => (typeof val === 'string' && val.includes('<') ? stripHtml(val) : val), 2);
59
+ }
60
+ function stripHtml(html) {
61
+ return html
62
+ .replace(/<[^>]*>/g, '')
63
+ .replace(/&nbsp;/g, ' ')
64
+ .replace(/&#039;/g, "'")
65
+ .replace(/&amp;/g, '&')
66
+ .replace(/&lt;/g, '<')
67
+ .replace(/&gt;/g, '>')
68
+ .replace(/&quot;/g, '"')
69
+ .replace(/\s+/g, ' ')
70
+ .trim();
71
+ }
72
+ //# sourceMappingURL=format-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-helpers.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/format-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @fileoverview Congress.gov API v3 client — auth, pagination, rate limiting, response normalization.
3
+ * @module services/congress-api/congress-api-service
4
+ */
5
+ import type { BillSubResourceParams, CommitteeSubResourceParams, CongressDetail, GetBillParams, GetCommitteeReportParams, GetCrsReportParams, GetDailyArticlesParams, GetDailyIssuesParams, GetLawParams, GetMemberLegislationParams, GetVoteParams, ListBillsParams, ListCommitteeReportsParams, ListCommitteesParams, ListDailyRecordParams, ListLawsParams, ListMembersParams, ListNominationsParams, ListSummariesParams, ListVotesParams, NominationSubResourceParams, Pagination, PaginationParams } from './types.js';
6
+ interface FetchListResult {
7
+ data: unknown[];
8
+ pagination: Pagination;
9
+ [key: string]: unknown;
10
+ }
11
+ export declare class CongressApiService {
12
+ private readonly apiKey;
13
+ private readonly baseUrl;
14
+ private requestCount;
15
+ private windowStart;
16
+ constructor();
17
+ listBills(params: ListBillsParams): Promise<FetchListResult>;
18
+ getBill(params: GetBillParams): Promise<{
19
+ bill: unknown;
20
+ }>;
21
+ getBillSubResource(params: BillSubResourceParams): Promise<FetchListResult>;
22
+ listLaws(params: ListLawsParams): Promise<FetchListResult>;
23
+ getLaw(params: GetLawParams): Promise<{
24
+ law: unknown;
25
+ }>;
26
+ listMembers(params: ListMembersParams): Promise<FetchListResult>;
27
+ getMember(bioguideId: string): Promise<{
28
+ member: unknown;
29
+ }>;
30
+ getMemberLegislation(params: GetMemberLegislationParams): Promise<FetchListResult>;
31
+ listCommittees(params: ListCommitteesParams): Promise<FetchListResult>;
32
+ getCommittee(chamber: string, committeeCode: string): Promise<{
33
+ committee: unknown;
34
+ }>;
35
+ getCommitteeSubResource(params: CommitteeSubResourceParams): Promise<FetchListResult>;
36
+ listVotes(params: ListVotesParams): Promise<FetchListResult>;
37
+ getVote(params: GetVoteParams): Promise<{
38
+ vote: unknown;
39
+ }>;
40
+ getVoteMembers(params: GetVoteParams): Promise<{
41
+ vote: unknown;
42
+ }>;
43
+ listNominations(params: ListNominationsParams): Promise<FetchListResult>;
44
+ getNomination(congress: number, nominationNumber: string): Promise<{
45
+ nomination: unknown;
46
+ }>;
47
+ getNominee(congress: number, nominationNumber: string, ordinal: number, params?: PaginationParams): Promise<FetchListResult>;
48
+ getNominationSubResource(params: NominationSubResourceParams): Promise<FetchListResult>;
49
+ listSummaries(params: ListSummariesParams): Promise<FetchListResult>;
50
+ listCrsReports(params?: PaginationParams): Promise<FetchListResult>;
51
+ getCrsReport(params: GetCrsReportParams): Promise<{
52
+ report: unknown;
53
+ }>;
54
+ listCommitteeReports(params: ListCommitteeReportsParams): Promise<FetchListResult>;
55
+ getCommitteeReport(params: GetCommitteeReportParams): Promise<{
56
+ report: unknown;
57
+ }>;
58
+ getCommitteeReportText(params: GetCommitteeReportParams): Promise<{
59
+ text: unknown;
60
+ }>;
61
+ listDailyRecord(params?: ListDailyRecordParams): Promise<FetchListResult>;
62
+ getDailyIssues(params: GetDailyIssuesParams): Promise<FetchListResult>;
63
+ getDailyArticles(params: GetDailyArticlesParams): Promise<FetchListResult>;
64
+ getCurrentCongress(): Promise<CongressDetail>;
65
+ getCongress(congress: number): Promise<CongressDetail>;
66
+ private fetchList;
67
+ private extractPagination;
68
+ private get;
69
+ private checkRateLimit;
70
+ private inferListKey;
71
+ }
72
+ export declare function initCongressApi(): void;
73
+ export declare function getCongressApi(): CongressApiService;
74
+ export {};
75
+ //# sourceMappingURL=congress-api-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"congress-api-service.d.ts","sourceRoot":"","sources":["../../../src/services/congress-api/congress-api-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,292 @@
1
+ /**
2
+ * @fileoverview Congress.gov API v3 client — auth, pagination, rate limiting, response normalization.
3
+ * @module services/congress-api/congress-api-service
4
+ */
5
+ import { notFound, rateLimited, serviceUnavailable } from '@cyanheads/mcp-ts-core/errors';
6
+ import { getServerConfig } from '../../config/server-config.js';
7
+ const MAX_RETRIES = 3;
8
+ const BASE_BACKOFF_MS = 1000;
9
+ const RATE_LIMIT_WINDOW_MS = 60 * 60 * 1000;
10
+ const RATE_LIMIT_MAX = 5000;
11
+ export class CongressApiService {
12
+ apiKey;
13
+ baseUrl;
14
+ requestCount = 0;
15
+ windowStart = Date.now();
16
+ constructor() {
17
+ const config = getServerConfig();
18
+ this.apiKey = config.apiKey;
19
+ this.baseUrl = config.baseUrl.replace(/\/$/, '');
20
+ }
21
+ // --- Bills ---
22
+ listBills(params) {
23
+ const path = params.billType
24
+ ? `/bill/${params.congress}/${params.billType}`
25
+ : `/bill/${params.congress}`;
26
+ return this.fetchList(path, 'bills', params);
27
+ }
28
+ async getBill(params) {
29
+ const data = await this.get(`/bill/${params.congress}/${params.billType}/${params.billNumber}`);
30
+ return { bill: data.bill };
31
+ }
32
+ getBillSubResource(params) {
33
+ const path = `/bill/${params.congress}/${params.billType}/${params.billNumber}/${params.subResource}`;
34
+ const key = this.inferListKey(params.subResource);
35
+ return this.fetchList(path, key, params);
36
+ }
37
+ // --- Laws ---
38
+ listLaws(params) {
39
+ const path = params.lawType
40
+ ? `/law/${params.congress}/${params.lawType}`
41
+ : `/law/${params.congress}`;
42
+ return this.fetchList(path, 'bills', params);
43
+ }
44
+ async getLaw(params) {
45
+ const data = await this.get(`/law/${params.congress}/${params.lawType}/${params.lawNumber}`);
46
+ return { law: data.law };
47
+ }
48
+ // --- Members ---
49
+ listMembers(params) {
50
+ let path = '/member';
51
+ if (params.congress)
52
+ path = `/member/congress/${params.congress}`;
53
+ if (params.stateCode) {
54
+ path = `/member/${params.stateCode}`;
55
+ if (params.district !== undefined)
56
+ path += `/${params.district}`;
57
+ }
58
+ const query = {};
59
+ if (params.currentMember !== undefined)
60
+ query.currentMember = params.currentMember ? 'true' : 'false';
61
+ return this.fetchList(path, 'members', params, query);
62
+ }
63
+ async getMember(bioguideId) {
64
+ const data = await this.get(`/member/${bioguideId}`);
65
+ return { member: data.member };
66
+ }
67
+ getMemberLegislation(params) {
68
+ const path = `/member/${params.bioguideId}/${params.type}`;
69
+ const key = params.type.replace('-legislation', 'Legislation');
70
+ return this.fetchList(path, key, params);
71
+ }
72
+ // --- Committees ---
73
+ listCommittees(params) {
74
+ let path = '/committee';
75
+ if (params.congress && params.chamber)
76
+ path = `/committee/${params.congress}/${params.chamber}`;
77
+ else if (params.congress)
78
+ path = `/committee/${params.congress}`;
79
+ else if (params.chamber)
80
+ path = `/committee/${params.chamber}`;
81
+ return this.fetchList(path, 'committees', params);
82
+ }
83
+ async getCommittee(chamber, committeeCode) {
84
+ const data = await this.get(`/committee/${chamber}/${committeeCode}`);
85
+ return { committee: data.committee };
86
+ }
87
+ getCommitteeSubResource(params) {
88
+ const path = `/committee/${params.chamber}/${params.committeeCode}/${params.subResource}`;
89
+ const key = this.inferListKey(params.subResource);
90
+ return this.fetchList(path, key, params);
91
+ }
92
+ // --- Votes ---
93
+ listVotes(params) {
94
+ return this.fetchList(`/house-vote/${params.congress}/${params.session}`, 'houseRollCallVotes', params);
95
+ }
96
+ async getVote(params) {
97
+ const data = await this.get(`/house-vote/${params.congress}/${params.session}/${params.voteNumber}`);
98
+ return { vote: data.houseRollCallVote ?? data };
99
+ }
100
+ async getVoteMembers(params) {
101
+ const data = await this.get(`/house-vote/${params.congress}/${params.session}/${params.voteNumber}/members`);
102
+ return { vote: data.houseRollCallVoteMemberVotes ?? data };
103
+ }
104
+ // --- Nominations ---
105
+ listNominations(params) {
106
+ return this.fetchList(`/nomination/${params.congress}`, 'nominations', params);
107
+ }
108
+ async getNomination(congress, nominationNumber) {
109
+ const data = await this.get(`/nomination/${congress}/${nominationNumber}`);
110
+ return { nomination: data.nomination };
111
+ }
112
+ getNominee(congress, nominationNumber, ordinal, params) {
113
+ return this.fetchList(`/nomination/${congress}/${nominationNumber}/${ordinal}`, 'nominees', params);
114
+ }
115
+ getNominationSubResource(params) {
116
+ const path = `/nomination/${params.congress}/${params.nominationNumber}/${params.subResource}`;
117
+ const key = this.inferListKey(params.subResource);
118
+ return this.fetchList(path, key, params);
119
+ }
120
+ // --- Summaries ---
121
+ listSummaries(params) {
122
+ let path = '/summaries';
123
+ if (params.congress && params.billType)
124
+ path = `/summaries/${params.congress}/${params.billType}`;
125
+ else if (params.congress)
126
+ path = `/summaries/${params.congress}`;
127
+ return this.fetchList(path, 'summaries', params);
128
+ }
129
+ // --- CRS Reports ---
130
+ listCrsReports(params) {
131
+ return this.fetchList('/crsreport', 'CRSReports', params);
132
+ }
133
+ async getCrsReport(params) {
134
+ const data = await this.get(`/crsreport/${params.reportNumber}`);
135
+ return { report: data.CRSReport ?? data };
136
+ }
137
+ // --- Committee Reports ---
138
+ listCommitteeReports(params) {
139
+ const path = params.reportType
140
+ ? `/committee-report/${params.congress}/${params.reportType}`
141
+ : `/committee-report/${params.congress}`;
142
+ return this.fetchList(path, 'reports', params);
143
+ }
144
+ async getCommitteeReport(params) {
145
+ const data = await this.get(`/committee-report/${params.congress}/${params.reportType}/${params.reportNumber}`);
146
+ const reports = data.committeeReports;
147
+ const report = Array.isArray(reports) ? reports[0] : (reports ?? data);
148
+ if (!report || (typeof report === 'object' && Object.keys(report).length === 0)) {
149
+ throw notFound('Committee report not found', {
150
+ congress: params.congress,
151
+ reportType: params.reportType,
152
+ reportNumber: params.reportNumber,
153
+ });
154
+ }
155
+ return { report };
156
+ }
157
+ async getCommitteeReportText(params) {
158
+ const data = await this.get(`/committee-report/${params.congress}/${params.reportType}/${params.reportNumber}/text`);
159
+ return { text: data.text ?? data['text-versions'] ?? data };
160
+ }
161
+ // --- Daily Congressional Record ---
162
+ listDailyRecord(params) {
163
+ return this.fetchList('/daily-congressional-record', 'dailyCongressionalRecord', params);
164
+ }
165
+ getDailyIssues(params) {
166
+ return this.fetchList(`/daily-congressional-record/${params.volumeNumber}`, 'dailyCongressionalRecord', params);
167
+ }
168
+ getDailyArticles(params) {
169
+ const path = `/daily-congressional-record/${params.volumeNumber}/${params.issueNumber}/articles`;
170
+ return this.fetchList(path, 'articles', params);
171
+ }
172
+ // --- Congress metadata ---
173
+ async getCurrentCongress() {
174
+ const data = await this.get('/congress/current');
175
+ return data.congress;
176
+ }
177
+ async getCongress(congress) {
178
+ const data = await this.get(`/congress/${congress}`);
179
+ return data.congress;
180
+ }
181
+ // --- Internal ---
182
+ async fetchList(path, listKey, params, extraQuery) {
183
+ const query = { ...extraQuery };
184
+ if (params?.limit)
185
+ query.limit = String(params.limit);
186
+ if (params?.offset)
187
+ query.offset = String(params.offset);
188
+ if (params?.fromDateTime)
189
+ query.fromDateTime = params.fromDateTime;
190
+ if (params?.toDateTime)
191
+ query.toDateTime = params.toDateTime;
192
+ const data = await this.get(path, query);
193
+ const raw = data[listKey];
194
+ // Some endpoints (e.g. committee-bills) nest the array inside an object — unwrap it.
195
+ const items = Array.isArray(raw)
196
+ ? raw
197
+ : raw && typeof raw === 'object'
198
+ ? (Object.values(raw).find(Array.isArray) ?? [])
199
+ : [];
200
+ const pagination = this.extractPagination(data.pagination, items.length, params);
201
+ return { data: items, pagination };
202
+ }
203
+ extractPagination(raw, itemCount, params) {
204
+ const count = raw?.count ?? itemCount;
205
+ const currentOffset = params?.offset ?? 0;
206
+ const limit = params?.limit ?? 20;
207
+ const nextOffset = raw?.next ? currentOffset + limit : null;
208
+ return { count, nextOffset };
209
+ }
210
+ // biome-ignore lint/suspicious/noExplicitAny: API responses are dynamic JSON
211
+ async get(path, query) {
212
+ this.checkRateLimit();
213
+ const url = new URL(`${this.baseUrl}${path}`);
214
+ url.searchParams.set('format', 'json');
215
+ url.searchParams.set('api_key', this.apiKey);
216
+ if (query) {
217
+ for (const [k, v] of Object.entries(query)) {
218
+ if (v !== undefined && v !== '')
219
+ url.searchParams.set(k, v);
220
+ }
221
+ }
222
+ for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
223
+ const res = await fetch(url.toString(), {
224
+ headers: { Accept: 'application/json' },
225
+ });
226
+ if (res.status === 429) {
227
+ throw rateLimited('Congress.gov API rate limit reached (5,000 requests/hour). Wait before retrying — the limit resets hourly.');
228
+ }
229
+ if (res.status >= 500) {
230
+ const body = await res.text().catch(() => '');
231
+ // The API returns 500 instead of 404 for some nonexistent entities —
232
+ // these have structured JSON error bodies vs. empty/HTML for real outages
233
+ if (body.includes('"error"')) {
234
+ throw new Error(`Congress.gov API returned HTTP ${res.status}: ${body}`);
235
+ }
236
+ if (attempt < MAX_RETRIES - 1) {
237
+ await sleep(BASE_BACKOFF_MS * 2 ** attempt);
238
+ continue;
239
+ }
240
+ throw serviceUnavailable(`Congress.gov API returned HTTP ${res.status} after ${MAX_RETRIES} attempts.`, { status: res.status });
241
+ }
242
+ if (!res.ok) {
243
+ const body = await res.text().catch(() => '');
244
+ throw new Error(`Congress.gov API returned HTTP ${res.status}: ${body || res.statusText}`);
245
+ }
246
+ this.requestCount++;
247
+ return res.json();
248
+ }
249
+ }
250
+ checkRateLimit() {
251
+ const now = Date.now();
252
+ if (now - this.windowStart > RATE_LIMIT_WINDOW_MS) {
253
+ this.windowStart = now;
254
+ this.requestCount = 0;
255
+ }
256
+ if (this.requestCount >= RATE_LIMIT_MAX) {
257
+ throw rateLimited('Congress.gov API rate limit reached (5,000 requests/hour). Wait before retrying — the limit resets hourly.');
258
+ }
259
+ }
260
+ inferListKey(subResource) {
261
+ const mapping = {
262
+ actions: 'actions',
263
+ amendments: 'amendments',
264
+ articles: 'articles',
265
+ bills: 'committee-bills',
266
+ committees: 'committees',
267
+ cosponsors: 'cosponsors',
268
+ hearings: 'hearings',
269
+ nominations: 'nominations',
270
+ relatedbills: 'relatedBills',
271
+ reports: 'reports',
272
+ subjects: 'subjects',
273
+ summaries: 'summaries',
274
+ text: 'textVersions',
275
+ titles: 'titles',
276
+ };
277
+ return mapping[subResource] ?? subResource;
278
+ }
279
+ }
280
+ function sleep(ms) {
281
+ return new Promise((resolve) => setTimeout(resolve, ms));
282
+ }
283
+ let _service;
284
+ export function initCongressApi() {
285
+ _service = new CongressApiService();
286
+ }
287
+ export function getCongressApi() {
288
+ if (!_service)
289
+ throw new Error('CongressApiService not initialized — call initCongressApi() in setup()');
290
+ return _service;
291
+ }
292
+ //# sourceMappingURL=congress-api-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"congress-api-service.js","sourceRoot":"","sources":["../../../src/services/congress-api/congress-api-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * @fileoverview Types for Congress.gov API v3 responses.
3
+ * @module services/congress-api/types
4
+ */
5
+ /** Shared pagination metadata returned by list endpoints. */
6
+ export interface Pagination {
7
+ count: number;
8
+ nextOffset: number | null;
9
+ }
10
+ /** Standard pagination query params. */
11
+ export interface PaginationParams {
12
+ limit?: number | undefined;
13
+ offset?: number | undefined;
14
+ }
15
+ /** Date range filter params. */
16
+ export interface DateRangeParams {
17
+ fromDateTime?: string | undefined;
18
+ toDateTime?: string | undefined;
19
+ }
20
+ export type BillType = 'hr' | 's' | 'hjres' | 'sjres' | 'hconres' | 'sconres' | 'hres' | 'sres';
21
+ export type BillSubResource = 'actions' | 'amendments' | 'cosponsors' | 'committees' | 'subjects' | 'summaries' | 'text' | 'titles' | 'relatedbills';
22
+ export interface ListBillsParams extends PaginationParams, DateRangeParams {
23
+ billType?: BillType | undefined;
24
+ congress: number;
25
+ }
26
+ export interface GetBillParams {
27
+ billNumber: number;
28
+ billType: BillType;
29
+ congress: number;
30
+ }
31
+ export interface BillSubResourceParams extends GetBillParams, PaginationParams {
32
+ subResource: BillSubResource;
33
+ }
34
+ export type LawType = 'pub' | 'priv';
35
+ export interface ListLawsParams extends PaginationParams {
36
+ congress: number;
37
+ lawType?: LawType | undefined;
38
+ }
39
+ export interface GetLawParams {
40
+ congress: number;
41
+ lawNumber: number;
42
+ lawType: LawType;
43
+ }
44
+ export interface ListMembersParams extends PaginationParams {
45
+ congress?: number | undefined;
46
+ currentMember?: boolean | undefined;
47
+ district?: number | undefined;
48
+ stateCode?: string | undefined;
49
+ }
50
+ export interface GetMemberLegislationParams extends PaginationParams {
51
+ bioguideId: string;
52
+ type: 'sponsored-legislation' | 'cosponsored-legislation';
53
+ }
54
+ export type Chamber = 'house' | 'senate' | 'joint';
55
+ export type CommitteeSubResource = 'bills' | 'reports' | 'nominations';
56
+ export interface ListCommitteesParams extends PaginationParams {
57
+ chamber?: Chamber | undefined;
58
+ congress?: number | undefined;
59
+ }
60
+ export interface CommitteeSubResourceParams extends PaginationParams {
61
+ chamber: Chamber;
62
+ committeeCode: string;
63
+ subResource: CommitteeSubResource;
64
+ }
65
+ export interface ListVotesParams extends PaginationParams {
66
+ congress: number;
67
+ session: number;
68
+ }
69
+ export interface GetVoteParams {
70
+ congress: number;
71
+ session: number;
72
+ voteNumber: number;
73
+ }
74
+ export type NominationSubResource = 'actions' | 'committees' | 'hearings';
75
+ export interface ListNominationsParams extends PaginationParams {
76
+ congress: number;
77
+ }
78
+ export interface NominationSubResourceParams extends PaginationParams {
79
+ congress: number;
80
+ nominationNumber: string;
81
+ subResource: NominationSubResource;
82
+ }
83
+ export interface ListSummariesParams extends PaginationParams, DateRangeParams {
84
+ billType?: BillType | undefined;
85
+ congress?: number | undefined;
86
+ }
87
+ export interface GetCrsReportParams {
88
+ reportNumber: string;
89
+ }
90
+ export type CommitteeReportType = 'hrpt' | 'srpt' | 'erpt';
91
+ export interface ListCommitteeReportsParams extends PaginationParams {
92
+ congress: number;
93
+ reportType?: CommitteeReportType | undefined;
94
+ }
95
+ export interface GetCommitteeReportParams {
96
+ congress: number;
97
+ reportNumber: number;
98
+ reportType: CommitteeReportType;
99
+ }
100
+ export interface ListDailyRecordParams extends PaginationParams {
101
+ }
102
+ export interface GetDailyIssuesParams extends PaginationParams {
103
+ volumeNumber: number;
104
+ }
105
+ export interface GetDailyArticlesParams extends PaginationParams {
106
+ issueNumber: number;
107
+ volumeNumber: number;
108
+ }
109
+ export interface CongressDetail {
110
+ congress: number;
111
+ endYear: number;
112
+ name: string;
113
+ sessions: Array<{
114
+ number: number;
115
+ chamber: string;
116
+ type: string;
117
+ startDate: string;
118
+ endDate?: string | undefined;
119
+ }>;
120
+ startYear: number;
121
+ }
122
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/congress-api/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @fileoverview Types for Congress.gov API v3 responses.
3
+ * @module services/congress-api/types
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/congress-api/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}