legismcp 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -0
- package/bin/legismcp.js +2 -0
- package/dist/services/CongressApiService.d.ts +128 -0
- package/dist/services/CongressApiService.d.ts.map +1 -0
- package/dist/services/CongressApiService.js +355 -0
- package/dist/services/CongressApiService.js.map +1 -0
- package/dist/services/RateLimitService.d.ts +38 -0
- package/dist/services/RateLimitService.d.ts.map +1 -0
- package/dist/services/RateLimitService.js +57 -0
- package/dist/services/RateLimitService.js.map +1 -0
- package/dist/stdio.d.ts +3 -0
- package/dist/stdio.d.ts.map +1 -0
- package/dist/stdio.js +39 -0
- package/dist/stdio.js.map +1 -0
- package/dist/tools/analysis/billAnalysisParams.d.ts +11 -0
- package/dist/tools/analysis/billAnalysisParams.d.ts.map +1 -0
- package/dist/tools/analysis/billAnalysisParams.js +21 -0
- package/dist/tools/analysis/billAnalysisParams.js.map +1 -0
- package/dist/tools/analysis/billAnalysisTool.d.ts +9 -0
- package/dist/tools/analysis/billAnalysisTool.d.ts.map +1 -0
- package/dist/tools/analysis/billAnalysisTool.js +9 -0
- package/dist/tools/analysis/billAnalysisTool.js.map +1 -0
- package/dist/tools/analysis/enhancedBillAnalysisTool.d.ts +17 -0
- package/dist/tools/analysis/enhancedBillAnalysisTool.d.ts.map +1 -0
- package/dist/tools/analysis/enhancedBillAnalysisTool.js +202 -0
- package/dist/tools/analysis/enhancedBillAnalysisTool.js.map +1 -0
- package/dist/tools/bills/getBill.d.ts +13 -0
- package/dist/tools/bills/getBill.d.ts.map +1 -0
- package/dist/tools/bills/getBill.js +87 -0
- package/dist/tools/bills/getBill.js.map +1 -0
- package/dist/tools/bills/listRecentBills.d.ts +14 -0
- package/dist/tools/bills/listRecentBills.d.ts.map +1 -0
- package/dist/tools/bills/listRecentBills.js +83 -0
- package/dist/tools/bills/listRecentBills.js.map +1 -0
- package/dist/tools/errors/index.d.ts +25 -0
- package/dist/tools/errors/index.d.ts.map +1 -0
- package/dist/tools/errors/index.js +43 -0
- package/dist/tools/errors/index.js.map +1 -0
- package/dist/tools/index.d.ts +9 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +52 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/members/memberDetails.d.ts +47 -0
- package/dist/tools/members/memberDetails.d.ts.map +1 -0
- package/dist/tools/members/memberDetails.js +173 -0
- package/dist/tools/members/memberDetails.js.map +1 -0
- package/dist/tools/members/memberSearch.d.ts +78 -0
- package/dist/tools/members/memberSearch.d.ts.map +1 -0
- package/dist/tools/members/memberSearch.js +244 -0
- package/dist/tools/members/memberSearch.js.map +1 -0
- package/dist/tools/subresource/subresourceTool.d.ts +56 -0
- package/dist/tools/subresource/subresourceTool.d.ts.map +1 -0
- package/dist/tools/subresource/subresourceTool.js +209 -0
- package/dist/tools/subresource/subresourceTool.js.map +1 -0
- package/dist/tools/trending/trendingBillsTool.d.ts +44 -0
- package/dist/tools/trending/trendingBillsTool.d.ts.map +1 -0
- package/dist/tools/trending/trendingBillsTool.js +140 -0
- package/dist/tools/trending/trendingBillsTool.js.map +1 -0
- package/dist/utils/congress.d.ts +6 -0
- package/dist/utils/congress.d.ts.map +1 -0
- package/dist/utils/congress.js +14 -0
- package/dist/utils/congress.js.map +1 -0
- package/dist/utils/errors.d.ts +66 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +105 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/member.d.ts +12 -0
- package/dist/utils/member.d.ts.map +1 -0
- package/dist/utils/member.js +35 -0
- package/dist/utils/member.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { getMemberSummary } from "../../utils/member.js";
|
|
3
|
+
/**
|
|
4
|
+
* Zod schema for member search parameters
|
|
5
|
+
*/
|
|
6
|
+
export const memberSearchParamsSchema = z.object({
|
|
7
|
+
query: z.string().optional().describe("Search query for member names"),
|
|
8
|
+
chamber: z.enum(["house", "senate"]).optional().describe("Chamber: 'house' or 'senate'"),
|
|
9
|
+
state: z.string().optional().describe("Two-letter state code (e.g., 'CA', 'TX')"),
|
|
10
|
+
party: z.enum(["D", "R", "I"]).optional().describe("Party: 'D' (Democrat), 'R' (Republican), 'I' (Independent)"),
|
|
11
|
+
currentMember: z.boolean().optional().default(true).describe("Whether to include only current members"),
|
|
12
|
+
congress: z.string().optional().describe("Specific congress number (e.g., '118')"),
|
|
13
|
+
limit: z.number().min(1).max(100).optional().default(20).describe("Maximum number of results to return"),
|
|
14
|
+
offset: z.number().min(0).optional().default(0).describe("Number of results to skip")
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* Member search tool with filtering
|
|
18
|
+
*/
|
|
19
|
+
export class MemberSearchTool {
|
|
20
|
+
constructor(congressApi) {
|
|
21
|
+
this.congressApi = congressApi;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Search for members with filtering
|
|
25
|
+
*/
|
|
26
|
+
async searchMembers(params) {
|
|
27
|
+
try {
|
|
28
|
+
console.log('Searching members', {
|
|
29
|
+
query: params.query,
|
|
30
|
+
chamber: params.chamber,
|
|
31
|
+
state: params.state,
|
|
32
|
+
party: params.party
|
|
33
|
+
});
|
|
34
|
+
// Build search filters
|
|
35
|
+
const filters = {};
|
|
36
|
+
if (params.congress) {
|
|
37
|
+
filters.congress = params.congress;
|
|
38
|
+
}
|
|
39
|
+
if (params.currentMember !== undefined) {
|
|
40
|
+
filters.currentMember = params.currentMember.toString();
|
|
41
|
+
}
|
|
42
|
+
// Over-fetch when local filters are active since the API doesn't support them.
|
|
43
|
+
// Also over-fetch when query (name) is provided, since the API ignores the query param
|
|
44
|
+
// for member endpoints and results aren't alphabetical.
|
|
45
|
+
const hasLocalFilters = !!(params.chamber || params.state || params.party || params.query);
|
|
46
|
+
const fetchLimit = hasLocalFilters ? 535 : params.limit;
|
|
47
|
+
// Execute search using CongressApiService — omit query since API ignores it for members
|
|
48
|
+
const searchResult = await this.congressApi.searchCollection('member', {
|
|
49
|
+
limit: fetchLimit,
|
|
50
|
+
offset: params.offset,
|
|
51
|
+
filters
|
|
52
|
+
});
|
|
53
|
+
if (!searchResult.members || searchResult.members.length === 0) {
|
|
54
|
+
return {
|
|
55
|
+
members: [],
|
|
56
|
+
totalCount: 0,
|
|
57
|
+
searchCriteria: this.formatSearchCriteria(params),
|
|
58
|
+
pagination: {
|
|
59
|
+
limit: params.limit,
|
|
60
|
+
offset: params.offset,
|
|
61
|
+
hasMore: false
|
|
62
|
+
},
|
|
63
|
+
metadata: {
|
|
64
|
+
searchedAt: new Date().toISOString(),
|
|
65
|
+
congress: params.congress
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
// Filter results based on local criteria (API may not support all filters)
|
|
70
|
+
let filteredMembers = this.applyLocalFilters(searchResult.members, params);
|
|
71
|
+
// Trim to requested limit after local filtering
|
|
72
|
+
filteredMembers = filteredMembers.slice(0, params.limit);
|
|
73
|
+
// Add summaries (no extra API calls needed)
|
|
74
|
+
const membersWithSummaries = filteredMembers.map(member => ({
|
|
75
|
+
...member,
|
|
76
|
+
summary: this.generateMemberSummary(member)
|
|
77
|
+
}));
|
|
78
|
+
return {
|
|
79
|
+
members: membersWithSummaries,
|
|
80
|
+
totalCount: membersWithSummaries.length,
|
|
81
|
+
searchCriteria: this.formatSearchCriteria(params),
|
|
82
|
+
pagination: {
|
|
83
|
+
limit: params.limit,
|
|
84
|
+
offset: params.offset,
|
|
85
|
+
hasMore: hasLocalFilters ? false : (searchResult.pagination?.next ? true : false)
|
|
86
|
+
},
|
|
87
|
+
metadata: {
|
|
88
|
+
searchedAt: new Date().toISOString(),
|
|
89
|
+
congress: params.congress
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
console.error('Error searching members', { error: error.message });
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Apply local filters that may not be supported by API
|
|
100
|
+
*/
|
|
101
|
+
applyLocalFilters(members, params) {
|
|
102
|
+
let filtered = [...members];
|
|
103
|
+
// Name filtering — API ignores query param for member endpoint.
|
|
104
|
+
// API returns names in "Last, First" format (e.g., "Cruz, Ted").
|
|
105
|
+
// Match by checking that all query words appear in at least one name field.
|
|
106
|
+
if (params.query) {
|
|
107
|
+
const queryWords = params.query.toLowerCase().split(/\s+/).filter(Boolean);
|
|
108
|
+
filtered = filtered.filter(member => {
|
|
109
|
+
const nameFields = [
|
|
110
|
+
member.name,
|
|
111
|
+
member.directOrderName,
|
|
112
|
+
member.invertedOrderName,
|
|
113
|
+
member.firstName,
|
|
114
|
+
member.lastName,
|
|
115
|
+
member.firstName && member.lastName ? `${member.firstName} ${member.lastName}` : null
|
|
116
|
+
].filter(Boolean).map((n) => n.toLowerCase());
|
|
117
|
+
// All query words must appear in at least one name field
|
|
118
|
+
return queryWords.every(word => nameFields.some(n => n.includes(word)));
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
if (params.chamber) {
|
|
122
|
+
const chamberFull = MemberSearchTool.CHAMBER_MAP[params.chamber.toLowerCase()] || params.chamber;
|
|
123
|
+
filtered = filtered.filter(member => {
|
|
124
|
+
// Chamber is in terms.item[].chamber
|
|
125
|
+
const terms = member.terms?.item;
|
|
126
|
+
if (!terms || terms.length === 0)
|
|
127
|
+
return false;
|
|
128
|
+
// Check the most recent term
|
|
129
|
+
const latestTerm = terms[terms.length - 1];
|
|
130
|
+
return latestTerm.chamber?.toLowerCase() === chamberFull.toLowerCase();
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
if (params.state) {
|
|
134
|
+
const stateFull = MemberSearchTool.STATE_MAP[params.state.toUpperCase()] || params.state;
|
|
135
|
+
filtered = filtered.filter(member => member.state?.toLowerCase() === stateFull.toLowerCase());
|
|
136
|
+
}
|
|
137
|
+
if (params.party) {
|
|
138
|
+
const partyFull = MemberSearchTool.PARTY_MAP[params.party.toUpperCase()] || params.party;
|
|
139
|
+
filtered = filtered.filter(member => member.partyName?.toLowerCase() === partyFull.toLowerCase());
|
|
140
|
+
}
|
|
141
|
+
return filtered;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Generate member summary
|
|
145
|
+
*/
|
|
146
|
+
generateMemberSummary(member) {
|
|
147
|
+
return getMemberSummary(member);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Format search criteria for display
|
|
151
|
+
*/
|
|
152
|
+
formatSearchCriteria(params) {
|
|
153
|
+
const criteria = [];
|
|
154
|
+
if (params.query)
|
|
155
|
+
criteria.push(`Query: "${params.query}"`);
|
|
156
|
+
if (params.chamber)
|
|
157
|
+
criteria.push(`Chamber: ${params.chamber}`);
|
|
158
|
+
if (params.state)
|
|
159
|
+
criteria.push(`State: ${params.state}`);
|
|
160
|
+
if (params.party)
|
|
161
|
+
criteria.push(`Party: ${params.party}`);
|
|
162
|
+
if (params.congress)
|
|
163
|
+
criteria.push(`Congress: ${params.congress}`);
|
|
164
|
+
if (params.currentMember === false)
|
|
165
|
+
criteria.push('Including former members');
|
|
166
|
+
return criteria.length > 0 ? criteria.join(', ') : 'No specific criteria';
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Map two-letter state codes to full state names used by Congress.gov API
|
|
170
|
+
MemberSearchTool.STATE_MAP = {
|
|
171
|
+
AL: 'Alabama', AK: 'Alaska', AZ: 'Arizona', AR: 'Arkansas', CA: 'California',
|
|
172
|
+
CO: 'Colorado', CT: 'Connecticut', DE: 'Delaware', FL: 'Florida', GA: 'Georgia',
|
|
173
|
+
HI: 'Hawaii', ID: 'Idaho', IL: 'Illinois', IN: 'Indiana', IA: 'Iowa',
|
|
174
|
+
KS: 'Kansas', KY: 'Kentucky', LA: 'Louisiana', ME: 'Maine', MD: 'Maryland',
|
|
175
|
+
MA: 'Massachusetts', MI: 'Michigan', MN: 'Minnesota', MS: 'Mississippi', MO: 'Missouri',
|
|
176
|
+
MT: 'Montana', NE: 'Nebraska', NV: 'Nevada', NH: 'New Hampshire', NJ: 'New Jersey',
|
|
177
|
+
NM: 'New Mexico', NY: 'New York', NC: 'North Carolina', ND: 'North Dakota', OH: 'Ohio',
|
|
178
|
+
OK: 'Oklahoma', OR: 'Oregon', PA: 'Pennsylvania', RI: 'Rhode Island', SC: 'South Carolina',
|
|
179
|
+
SD: 'South Dakota', TN: 'Tennessee', TX: 'Texas', UT: 'Utah', VT: 'Vermont',
|
|
180
|
+
VA: 'Virginia', WA: 'Washington', WV: 'West Virginia', WI: 'Wisconsin', WY: 'Wyoming',
|
|
181
|
+
DC: 'District of Columbia', PR: 'Puerto Rico', GU: 'Guam', VI: 'Virgin Islands',
|
|
182
|
+
AS: 'American Samoa', MP: 'Northern Mariana Islands',
|
|
183
|
+
};
|
|
184
|
+
MemberSearchTool.PARTY_MAP = {
|
|
185
|
+
D: 'Democratic', R: 'Republican', I: 'Independent',
|
|
186
|
+
};
|
|
187
|
+
MemberSearchTool.CHAMBER_MAP = {
|
|
188
|
+
house: 'House of Representatives', senate: 'Senate',
|
|
189
|
+
};
|
|
190
|
+
/**
|
|
191
|
+
* Handle member search tool execution
|
|
192
|
+
*/
|
|
193
|
+
export async function handleMemberSearch(params, congressApi) {
|
|
194
|
+
try {
|
|
195
|
+
const tool = new MemberSearchTool(congressApi);
|
|
196
|
+
const result = await tool.searchMembers(params);
|
|
197
|
+
return {
|
|
198
|
+
content: [{
|
|
199
|
+
type: "text",
|
|
200
|
+
text: JSON.stringify(result, null, 2)
|
|
201
|
+
}]
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
console.error('Error in handleMemberSearch:', error);
|
|
206
|
+
return {
|
|
207
|
+
content: [{
|
|
208
|
+
type: "text",
|
|
209
|
+
text: `Failed to search members: ${error instanceof Error ? error.message : String(error)}`
|
|
210
|
+
}],
|
|
211
|
+
isError: true
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
// Export constants for tool registration
|
|
216
|
+
export const TOOL_NAME = "member-search";
|
|
217
|
+
export const TOOL_DESCRIPTION = `Search for members of Congress with filtering.
|
|
218
|
+
|
|
219
|
+
Use this tool to find members by name, state, party, or chamber. This is the
|
|
220
|
+
starting point for member-related queries like "Who represents Texas?" or
|
|
221
|
+
"Find Ted Cruz". Use the returned bioguideId with member-details for full info.
|
|
222
|
+
|
|
223
|
+
Filtering capabilities:
|
|
224
|
+
- Name-based search with partial matching
|
|
225
|
+
- Chamber filtering (House/Senate)
|
|
226
|
+
- State and party filtering
|
|
227
|
+
- Current/former member filtering
|
|
228
|
+
|
|
229
|
+
Examples:
|
|
230
|
+
- Search by name: query = "Pelosi"
|
|
231
|
+
- Search by state: state = "CA"
|
|
232
|
+
- Search House Republicans: chamber = "house", party = "R"
|
|
233
|
+
- Search former members: currentMember = false`;
|
|
234
|
+
export const TOOL_PARAMS = {
|
|
235
|
+
query: z.string().optional().describe("Search query for member names"),
|
|
236
|
+
chamber: z.enum(["house", "senate"]).optional().describe("Chamber: 'house' or 'senate'"),
|
|
237
|
+
state: z.string().optional().describe("Two-letter state code (e.g., 'CA', 'TX')"),
|
|
238
|
+
party: z.enum(["D", "R", "I"]).optional().describe("Party: 'D' (Democrat), 'R' (Republican), 'I' (Independent)"),
|
|
239
|
+
currentMember: z.boolean().optional().default(true).describe("Whether to include only current members"),
|
|
240
|
+
congress: z.string().optional().describe("Specific congress number (e.g., '118')"),
|
|
241
|
+
limit: z.number().min(1).max(100).optional().default(20).describe("Maximum number of results to return"),
|
|
242
|
+
offset: z.number().min(0).optional().default(0).describe("Number of results to skip")
|
|
243
|
+
};
|
|
244
|
+
//# sourceMappingURL=memberSearch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memberSearch.js","sourceRoot":"","sources":["../../../src/tools/members/memberSearch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACtE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACxF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACjF,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;IAChH,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACvG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IAClF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACxG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACtF,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAC3B,YAAoB,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;IAAG,CAAC;IAEvD;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,MAA0B;QAC5C,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE;gBAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;YAEH,uBAAuB;YACvB,MAAM,OAAO,GAA2B,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YACrC,CAAC;YACD,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBACvC,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC1D,CAAC;YAED,+EAA+E;YAC/E,uFAAuF;YACvF,wDAAwD;YACxD,MAAM,eAAe,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3F,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAExD,wFAAwF;YACxF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE;gBACrE,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO;aACR,CAAC,CAAC;YAEH,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/D,OAAO;oBACL,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,CAAC;oBACb,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;oBACjD,UAAU,EAAE;wBACV,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,OAAO,EAAE,KAAK;qBACf;oBACD,QAAQ,EAAE;wBACR,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ;qBAC1B;iBACF,CAAC;YACJ,CAAC;YAED,2EAA2E;YAC3E,IAAI,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAE3E,gDAAgD;YAChD,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAEzD,4CAA4C;YAC5C,MAAM,oBAAoB,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC1D,GAAG,MAAM;gBACT,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;aAC5C,CAAC,CAAC,CAAC;YAEJ,OAAO;gBACL,OAAO,EAAE,oBAAoB;gBAC7B,UAAU,EAAE,oBAAoB,CAAC,MAAM;gBACvC,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;gBACjD,UAAU,EAAE;oBACV,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;iBAClF;gBACD,QAAQ,EAAE;oBACR,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B;aACF,CAAC;QAEJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9E,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IA0BD;;OAEG;IACK,iBAAiB,CAAC,OAAc,EAAE,MAA0B;QAClE,IAAI,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAE5B,gEAAgE;QAChE,iEAAiE;QACjE,4EAA4E;QAC5E,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3E,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gBAClC,MAAM,UAAU,GAAG;oBACjB,MAAM,CAAC,IAAI;oBACX,MAAM,CAAC,eAAe;oBACtB,MAAM,CAAC,iBAAiB;oBACxB,MAAM,CAAC,SAAS;oBAChB,MAAM,CAAC,QAAQ;oBACf,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;iBACtF,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBACtD,yDAAyD;gBACzD,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAC7B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CACvC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC;YACjG,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gBAClC,qCAAqC;gBACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;gBACjC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;gBAC/C,6BAA6B;gBAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC3C,OAAO,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC;YACzE,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC;YACzF,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAClC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,CACxD,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC;YACzF,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAClC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,CAC5D,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,MAAW;QACvC,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,MAA0B;QACrD,MAAM,QAAQ,GAAG,EAAE,CAAC;QAEpB,IAAI,MAAM,CAAC,KAAK;YAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,KAAK;YAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,KAAK;YAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK;YAAE,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAE9E,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAC5E,CAAC;;AArGD,0EAA0E;AAC3D,0BAAS,GAA2B;IACjD,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY;IAC5E,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS;IAC/E,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM;IACpE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU;IAC1E,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU;IACvF,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY;IAClF,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM;IACtF,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,gBAAgB;IAC1F,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS;IAC3E,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS;IACrF,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB;IAC/E,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,0BAA0B;CACrD,CAAC;AAEa,0BAAS,GAA2B;IACjD,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa;CACnD,CAAC;AAEa,4BAAW,GAA2B;IACnD,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,QAAQ;CACpD,CAAC;AAkFJ;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA0B,EAC1B,WAA+B;IAE/B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAEhD,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAC5F,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,yCAAyC;AACzC,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;+CAgBe,CAAC;AAEhD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IACtE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IACxF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACjF,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;IAChH,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACvG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IAClF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACxG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CACtF,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { CongressApiService } from "../../services/CongressApiService.js";
|
|
4
|
+
/**
|
|
5
|
+
* Zod schema for subresource parameters
|
|
6
|
+
*/
|
|
7
|
+
export declare const subresourceParamsSchema: z.ZodObject<{
|
|
8
|
+
parentUri: z.ZodString;
|
|
9
|
+
subresource: z.ZodString;
|
|
10
|
+
limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
11
|
+
offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
12
|
+
format: z.ZodDefault<z.ZodOptional<z.ZodEnum<["detailed", "summary", "raw"]>>>;
|
|
13
|
+
}, "strip", z.ZodTypeAny, {
|
|
14
|
+
format: "detailed" | "summary" | "raw";
|
|
15
|
+
limit: number;
|
|
16
|
+
offset: number;
|
|
17
|
+
parentUri: string;
|
|
18
|
+
subresource: string;
|
|
19
|
+
}, {
|
|
20
|
+
parentUri: string;
|
|
21
|
+
subresource: string;
|
|
22
|
+
format?: "detailed" | "summary" | "raw" | undefined;
|
|
23
|
+
limit?: number | undefined;
|
|
24
|
+
offset?: number | undefined;
|
|
25
|
+
}>;
|
|
26
|
+
export type SubresourceParams = z.infer<typeof subresourceParamsSchema>;
|
|
27
|
+
/**
|
|
28
|
+
* Subresource tool — fetches sub-resource data and returns raw items
|
|
29
|
+
*/
|
|
30
|
+
export declare class SubresourceTool {
|
|
31
|
+
private congressApi;
|
|
32
|
+
constructor(congressApi: CongressApiService);
|
|
33
|
+
/**
|
|
34
|
+
* Get subresource data
|
|
35
|
+
*/
|
|
36
|
+
getSubresource(params: SubresourceParams): Promise<any>;
|
|
37
|
+
/**
|
|
38
|
+
* Parse parent URI to extract resource information
|
|
39
|
+
*/
|
|
40
|
+
private parseParentUri;
|
|
41
|
+
private extractItems;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Handle subresource tool execution
|
|
45
|
+
*/
|
|
46
|
+
export declare function handleSubresource(params: SubresourceParams, congressApi: CongressApiService): Promise<CallToolResult>;
|
|
47
|
+
export declare const TOOL_NAME = "subresource";
|
|
48
|
+
export declare const TOOL_DESCRIPTION = "Get detailed subresource data for a legislative resource.\n\nSupports all legislative subresources including:\n- Bill subresources: actions, cosponsors, committees, subjects, text, amendments, summaries\n- Member subresources: sponsored-legislation, cosponsored-legislation, committees\n- Committee subresources: bills, reports, members\n\nOutput formats:\n- detailed: Items array with count (default)\n- summary: Items array with count\n- raw: Unprocessed API response\n\nExamples:\n- Get bill actions: parentUri = \"congress-gov:/bill/118/hr/1\", subresource = \"actions\"\n- Get member committees: parentUri = \"congress-gov:/member/P000197\", subresource = \"committees\"\n- Raw format: parentUri = \"congress-gov:/bill/118/hr/1\", subresource = \"cosponsors\", format = \"raw\"\n- With pagination: parentUri = \"congress-gov:/bill/118/hr/1\", subresource = \"actions\", limit = 50, offset = 0";
|
|
49
|
+
export declare const TOOL_PARAMS: {
|
|
50
|
+
parentUri: z.ZodString;
|
|
51
|
+
subresource: z.ZodString;
|
|
52
|
+
limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
53
|
+
offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
54
|
+
format: z.ZodDefault<z.ZodOptional<z.ZodEnum<["detailed", "summary", "raw"]>>>;
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=subresourceTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subresourceTool.d.ts","sourceRoot":"","sources":["../../../src/tools/subresource/subresourceTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAG1E;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;EAMlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;GAEG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,kBAAkB;IAEnD;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC;IAqD7D;;OAEG;IACH,OAAO,CAAC,cAAc;IA2DtB,OAAO,CAAC,YAAY;CAqCrB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC,cAAc,CAAC,CAsBzB;AAGD,eAAO,MAAM,SAAS,gBAAgB,CAAC;AACvC,eAAO,MAAM,gBAAgB,s4BAgBiF,CAAC;AAE/G,eAAO,MAAM,WAAW;;;;;;CAMvB,CAAC"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ValidationError } from "../../utils/errors.js";
|
|
3
|
+
/**
|
|
4
|
+
* Zod schema for subresource parameters
|
|
5
|
+
*/
|
|
6
|
+
export const subresourceParamsSchema = z.object({
|
|
7
|
+
parentUri: z.string().min(1).describe("Parent resource URI (e.g., 'congress-gov:/bill/118/hr/1')"),
|
|
8
|
+
subresource: z.string().min(1).describe("Subresource name (e.g., 'actions', 'cosponsors', 'committees')"),
|
|
9
|
+
limit: z.number().min(1).max(100).optional().default(20).describe("Maximum number of results to return"),
|
|
10
|
+
offset: z.number().min(0).optional().default(0).describe("Number of results to skip"),
|
|
11
|
+
format: z.enum(["detailed", "summary", "raw"]).optional().default("detailed").describe("Output format: 'raw' returns API response unchanged, 'detailed' and 'summary' return items with count")
|
|
12
|
+
});
|
|
13
|
+
/**
|
|
14
|
+
* Subresource tool — fetches sub-resource data and returns raw items
|
|
15
|
+
*/
|
|
16
|
+
export class SubresourceTool {
|
|
17
|
+
constructor(congressApi) {
|
|
18
|
+
this.congressApi = congressApi;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get subresource data
|
|
22
|
+
*/
|
|
23
|
+
async getSubresource(params) {
|
|
24
|
+
try {
|
|
25
|
+
console.log('Fetching subresource', {
|
|
26
|
+
parentUri: params.parentUri,
|
|
27
|
+
subresource: params.subresource
|
|
28
|
+
});
|
|
29
|
+
// Validate parent URI
|
|
30
|
+
const cleanUri = params.parentUri.replace(/^congress-gov:\/\/?/, '');
|
|
31
|
+
if (!cleanUri || cleanUri.split('/').length < 1) {
|
|
32
|
+
throw new ValidationError(`Invalid parent URI format: ${params.parentUri}`);
|
|
33
|
+
}
|
|
34
|
+
// Fetch subresource data using CongressApiService
|
|
35
|
+
const subresourceData = await this.congressApi.getSubResource(params.parentUri, params.subresource, { limit: params.limit, offset: params.offset });
|
|
36
|
+
// Parse parent URI for context
|
|
37
|
+
const parentInfo = this.parseParentUri(params.parentUri);
|
|
38
|
+
// Format the data
|
|
39
|
+
const format = params.format || 'detailed';
|
|
40
|
+
let data;
|
|
41
|
+
if (format === 'raw') {
|
|
42
|
+
data = subresourceData;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
const items = this.extractItems(subresourceData, params.subresource);
|
|
46
|
+
data = { count: items.length, items };
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
parentResource: parentInfo,
|
|
50
|
+
subresource: params.subresource,
|
|
51
|
+
data,
|
|
52
|
+
metadata: {
|
|
53
|
+
fetchedAt: new Date().toISOString(),
|
|
54
|
+
format,
|
|
55
|
+
pagination: {
|
|
56
|
+
limit: params.limit,
|
|
57
|
+
offset: params.offset
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.error('Error fetching subresource', { error: error.message });
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Parse parent URI to extract resource information
|
|
69
|
+
*/
|
|
70
|
+
parseParentUri(uri) {
|
|
71
|
+
try {
|
|
72
|
+
const cleanUri = uri.replace(/^congress-gov:\/\/?/, '');
|
|
73
|
+
const parts = cleanUri.split('/');
|
|
74
|
+
if (parts.length < 1)
|
|
75
|
+
return null;
|
|
76
|
+
const collection = parts[0];
|
|
77
|
+
const resourceInfo = {
|
|
78
|
+
collection,
|
|
79
|
+
path: `/${cleanUri}`,
|
|
80
|
+
identifiers: {}
|
|
81
|
+
};
|
|
82
|
+
switch (collection) {
|
|
83
|
+
case 'bill':
|
|
84
|
+
if (parts.length >= 4) {
|
|
85
|
+
resourceInfo.identifiers = {
|
|
86
|
+
congress: parts[1],
|
|
87
|
+
billType: parts[2],
|
|
88
|
+
billNumber: parts[3]
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
break;
|
|
92
|
+
case 'amendment':
|
|
93
|
+
if (parts.length >= 4) {
|
|
94
|
+
resourceInfo.identifiers = {
|
|
95
|
+
congress: parts[1],
|
|
96
|
+
amendmentType: parts[2],
|
|
97
|
+
amendmentNumber: parts[3]
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
break;
|
|
101
|
+
case 'member':
|
|
102
|
+
if (parts.length >= 2) {
|
|
103
|
+
resourceInfo.identifiers = {
|
|
104
|
+
memberId: parts[1],
|
|
105
|
+
congress: parts[2]
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
break;
|
|
109
|
+
case 'committee':
|
|
110
|
+
if (parts.length >= 3) {
|
|
111
|
+
resourceInfo.identifiers = {
|
|
112
|
+
chamber: parts[1],
|
|
113
|
+
committeeCode: parts[2],
|
|
114
|
+
congress: parts[3]
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
return resourceInfo;
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
console.error('Error parsing parent URI:', error);
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
extractItems(data, subresource) {
|
|
127
|
+
if (!data)
|
|
128
|
+
return [];
|
|
129
|
+
const dataMapping = {
|
|
130
|
+
'actions': 'actions',
|
|
131
|
+
'cosponsors': 'cosponsors',
|
|
132
|
+
'committees': 'committees',
|
|
133
|
+
'subjects': 'subjects',
|
|
134
|
+
'text': 'text',
|
|
135
|
+
'amendments': 'amendments',
|
|
136
|
+
'related-bills': 'relatedBills',
|
|
137
|
+
'summaries': 'summaries',
|
|
138
|
+
'titles': 'titles',
|
|
139
|
+
'sponsored-legislation': 'sponsoredLegislation',
|
|
140
|
+
'cosponsored-legislation': 'cosponsoredLegislation'
|
|
141
|
+
};
|
|
142
|
+
const propertyName = dataMapping[subresource] || subresource;
|
|
143
|
+
if (Array.isArray(data[propertyName])) {
|
|
144
|
+
return data[propertyName];
|
|
145
|
+
}
|
|
146
|
+
if (data[propertyName] && Array.isArray(data[propertyName][propertyName])) {
|
|
147
|
+
return data[propertyName][propertyName];
|
|
148
|
+
}
|
|
149
|
+
if (Array.isArray(data)) {
|
|
150
|
+
return data;
|
|
151
|
+
}
|
|
152
|
+
if (subresource === 'subjects' && data.subjects) {
|
|
153
|
+
return [data.subjects];
|
|
154
|
+
}
|
|
155
|
+
return [];
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Handle subresource tool execution
|
|
160
|
+
*/
|
|
161
|
+
export async function handleSubresource(params, congressApi) {
|
|
162
|
+
try {
|
|
163
|
+
const tool = new SubresourceTool(congressApi);
|
|
164
|
+
const result = await tool.getSubresource(params);
|
|
165
|
+
return {
|
|
166
|
+
content: [{
|
|
167
|
+
type: "text",
|
|
168
|
+
text: JSON.stringify(result, null, 2)
|
|
169
|
+
}]
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
console.error('Error in handleSubresource:', error);
|
|
174
|
+
return {
|
|
175
|
+
content: [{
|
|
176
|
+
type: "text",
|
|
177
|
+
text: `Failed to get subresource: ${error instanceof Error ? error.message : String(error)}`
|
|
178
|
+
}],
|
|
179
|
+
isError: true
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Export constants for tool registration
|
|
184
|
+
export const TOOL_NAME = "subresource";
|
|
185
|
+
export const TOOL_DESCRIPTION = `Get detailed subresource data for a legislative resource.
|
|
186
|
+
|
|
187
|
+
Supports all legislative subresources including:
|
|
188
|
+
- Bill subresources: actions, cosponsors, committees, subjects, text, amendments, summaries
|
|
189
|
+
- Member subresources: sponsored-legislation, cosponsored-legislation, committees
|
|
190
|
+
- Committee subresources: bills, reports, members
|
|
191
|
+
|
|
192
|
+
Output formats:
|
|
193
|
+
- detailed: Items array with count (default)
|
|
194
|
+
- summary: Items array with count
|
|
195
|
+
- raw: Unprocessed API response
|
|
196
|
+
|
|
197
|
+
Examples:
|
|
198
|
+
- Get bill actions: parentUri = "congress-gov:/bill/118/hr/1", subresource = "actions"
|
|
199
|
+
- Get member committees: parentUri = "congress-gov:/member/P000197", subresource = "committees"
|
|
200
|
+
- Raw format: parentUri = "congress-gov:/bill/118/hr/1", subresource = "cosponsors", format = "raw"
|
|
201
|
+
- With pagination: parentUri = "congress-gov:/bill/118/hr/1", subresource = "actions", limit = 50, offset = 0`;
|
|
202
|
+
export const TOOL_PARAMS = {
|
|
203
|
+
parentUri: z.string().min(1).describe("Parent resource URI (e.g., 'congress-gov:/bill/118/hr/1')"),
|
|
204
|
+
subresource: z.string().min(1).describe("Subresource name (e.g., 'actions', 'cosponsors', 'committees')"),
|
|
205
|
+
limit: z.number().min(1).max(100).optional().default(20).describe("Maximum number of results to return"),
|
|
206
|
+
offset: z.number().min(0).optional().default(0).describe("Number of results to skip"),
|
|
207
|
+
format: z.enum(["detailed", "summary", "raw"]).optional().default("detailed").describe("Output format: 'raw' returns API response unchanged, 'detailed' and 'summary' return items with count")
|
|
208
|
+
};
|
|
209
|
+
//# sourceMappingURL=subresourceTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subresourceTool.js","sourceRoot":"","sources":["../../../src/tools/subresource/subresourceTool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IAClG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gEAAgE,CAAC;IACzG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACxG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACrF,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,uGAAuG,CAAC;CAChM,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B,YAAoB,WAA+B;QAA/B,gBAAW,GAAX,WAAW,CAAoB;IAAG,CAAC;IAEvD;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,MAAyB;QAC5C,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE;gBAClC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAC;YAEH,sBAAsB;YACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,eAAe,CAAC,8BAA8B,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YAC9E,CAAC;YAED,kDAAkD;YAClD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAC3D,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,WAAW,EAClB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAC/C,CAAC;YAEF,+BAA+B;YAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAEzD,kBAAkB;YAClB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,CAAC;YAC3C,IAAI,IAAI,CAAC;YACT,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,IAAI,GAAG,eAAe,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;gBACrE,IAAI,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;YACxC,CAAC;YAED,OAAO;gBACL,cAAc,EAAE,UAAU;gBAC1B,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,IAAI;gBACJ,QAAQ,EAAE;oBACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,MAAM;oBACN,UAAU,EAAE;wBACV,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;qBACtB;iBACF;aACF,CAAC;QAEJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACjF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,GAAW;QAChC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;YACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAElC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YAElC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM,YAAY,GAAQ;gBACxB,UAAU;gBACV,IAAI,EAAE,IAAI,QAAQ,EAAE;gBACpB,WAAW,EAAE,EAAE;aAChB,CAAC;YAEF,QAAQ,UAAU,EAAE,CAAC;gBACnB,KAAK,MAAM;oBACT,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;wBACtB,YAAY,CAAC,WAAW,GAAG;4BACzB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;4BAClB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;4BAClB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;yBACrB,CAAC;oBACJ,CAAC;oBACD,MAAM;gBACR,KAAK,WAAW;oBACd,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;wBACtB,YAAY,CAAC,WAAW,GAAG;4BACzB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;4BAClB,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;4BACvB,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;yBAC1B,CAAC;oBACJ,CAAC;oBACD,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;wBACtB,YAAY,CAAC,WAAW,GAAG;4BACzB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;4BAClB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;yBACnB,CAAC;oBACJ,CAAC;oBACD,MAAM;gBACR,KAAK,WAAW;oBACd,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;wBACtB,YAAY,CAAC,WAAW,GAAG;4BACzB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;4BACjB,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;4BACvB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;yBACnB,CAAC;oBACJ,CAAC;oBACD,MAAM;YACV,CAAC;YAED,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,IAAS,EAAE,WAAmB;QACjD,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QAErB,MAAM,WAAW,GAA2B;YAC1C,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,YAAY;YAC1B,YAAY,EAAE,YAAY;YAC1B,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,MAAM;YACd,YAAY,EAAE,YAAY;YAC1B,eAAe,EAAE,cAAc;YAC/B,WAAW,EAAE,WAAW;YACxB,QAAQ,EAAE,QAAQ;YAClB,uBAAuB,EAAE,sBAAsB;YAC/C,yBAAyB,EAAE,wBAAwB;SACpD,CAAC;QAEF,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC;QAE7D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YAC1E,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,WAAW,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAyB,EACzB,WAA+B;IAE/B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEjD,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QAEpD,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAC7F,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,yCAAyC;AACzC,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAC;AACvC,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;8GAgB8E,CAAC;AAE/G,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2DAA2D,CAAC;IAClG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gEAAgE,CAAC;IACzG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACxG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACrF,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,uGAAuG,CAAC;CAChM,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { CongressApiService } from "../../services/CongressApiService.js";
|
|
4
|
+
/**
|
|
5
|
+
* Zod schema for trending bills parameters
|
|
6
|
+
*/
|
|
7
|
+
export declare const trendingBillsParamsSchema: z.ZodObject<{
|
|
8
|
+
timeframe: z.ZodDefault<z.ZodOptional<z.ZodEnum<["week", "month", "quarter", "year"]>>>;
|
|
9
|
+
limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
10
|
+
congress: z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
limit: number;
|
|
13
|
+
timeframe: "week" | "month" | "quarter" | "year";
|
|
14
|
+
congress?: number | undefined;
|
|
15
|
+
}, {
|
|
16
|
+
congress?: number | undefined;
|
|
17
|
+
limit?: number | undefined;
|
|
18
|
+
timeframe?: "week" | "month" | "quarter" | "year" | undefined;
|
|
19
|
+
}>;
|
|
20
|
+
export type TrendingBillsParams = z.infer<typeof trendingBillsParamsSchema>;
|
|
21
|
+
/**
|
|
22
|
+
* Trending bills tool — fetches recently active bills with sub-resource data
|
|
23
|
+
*/
|
|
24
|
+
export declare class TrendingBillsTool {
|
|
25
|
+
private congressApi;
|
|
26
|
+
constructor(congressApi: CongressApiService);
|
|
27
|
+
/**
|
|
28
|
+
* Get recently active bills with sub-resource data
|
|
29
|
+
*/
|
|
30
|
+
getTrendingBills(params: TrendingBillsParams): Promise<any>;
|
|
31
|
+
/**
|
|
32
|
+
* Fetch recent bills sorted by updateDate
|
|
33
|
+
*/
|
|
34
|
+
private fetchRecentBills;
|
|
35
|
+
/**
|
|
36
|
+
* Enhance bills with sub-resource data using parallel fetching
|
|
37
|
+
*/
|
|
38
|
+
private enhanceBillsWithData;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Handle trending bills tool execution
|
|
42
|
+
*/
|
|
43
|
+
export declare function handleTrendingBills(params: TrendingBillsParams, congressApi: CongressApiService): Promise<CallToolResult>;
|
|
44
|
+
//# sourceMappingURL=trendingBillsTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trendingBillsTool.d.ts","sourceRoot":"","sources":["../../../src/tools/trending/trendingBillsTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAG1E;;GAEG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;EAIpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;;GAEG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,kBAAkB;IAEnD;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IAkCjE;;OAEG;YACW,gBAAgB;IAiB9B;;OAEG;YACW,oBAAoB;CAqDnC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,mBAAmB,EAC3B,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC,cAAc,CAAC,CAsBzB"}
|