@nanogpt/mcp 1.1.6 → 1.3.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 (41) hide show
  1. package/dist/config.d.ts +5 -3
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +22 -19
  4. package/dist/config.js.map +1 -1
  5. package/dist/httpClient.d.ts +13 -0
  6. package/dist/httpClient.d.ts.map +1 -1
  7. package/dist/httpClient.js +94 -4
  8. package/dist/httpClient.js.map +1 -1
  9. package/dist/index.d.ts +3 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +49 -3
  12. package/dist/index.js.map +1 -1
  13. package/dist/resources.d.ts +9 -2
  14. package/dist/resources.d.ts.map +1 -1
  15. package/dist/resources.js +14 -5
  16. package/dist/resources.js.map +1 -1
  17. package/dist/tools/applicationScrapers.d.ts +1053 -0
  18. package/dist/tools/applicationScrapers.d.ts.map +1 -0
  19. package/dist/tools/applicationScrapers.js +333 -0
  20. package/dist/tools/applicationScrapers.js.map +1 -0
  21. package/dist/tools/chat.d.ts.map +1 -1
  22. package/dist/tools/chat.js +4 -1
  23. package/dist/tools/chat.js.map +1 -1
  24. package/dist/tools/generationExtras.d.ts +432 -0
  25. package/dist/tools/generationExtras.d.ts.map +1 -0
  26. package/dist/tools/generationExtras.js +419 -0
  27. package/dist/tools/generationExtras.js.map +1 -0
  28. package/dist/tools/index.d.ts +3 -0
  29. package/dist/tools/index.d.ts.map +1 -1
  30. package/dist/tools/index.js +3 -0
  31. package/dist/tools/index.js.map +1 -1
  32. package/dist/tools/listModels.d.ts +2 -2
  33. package/dist/tools/researchTools.d.ts +88 -0
  34. package/dist/tools/researchTools.d.ts.map +1 -0
  35. package/dist/tools/researchTools.js +241 -0
  36. package/dist/tools/researchTools.js.map +1 -0
  37. package/dist/tools/webSearch.d.ts +100 -5
  38. package/dist/tools/webSearch.d.ts.map +1 -1
  39. package/dist/tools/webSearch.js +143 -8
  40. package/dist/tools/webSearch.js.map +1 -1
  41. package/package.json +11 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applicationScrapers.d.ts","sourceRoot":"","sources":["../../src/tools/applicationScrapers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgCxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAwClB,CAAC;AAEjB,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAYzB,CAAC;AAEjB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAQtB,CAAC;AAEjB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAWrB,CAAC;AAEjB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA+Bd,CAAC;AAgBjB,eAAO,MAAM,yBAAyB,sCAAyC,CAAC;AAChF,eAAO,MAAM,gCAAgC,sCAAgD,CAAC;AAC9F,eAAO,MAAM,4BAA4B,sCAA4C,CAAC;AACtF,eAAO,MAAM,6BAA6B,sCAA6C,CAAC;AACxF,eAAO,MAAM,qBAAqB,sCAAqC,CAAC;AACxE,eAAO,MAAM,gBAAgB,sCAAuC,CAAC;AAErE,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAwGe,OAAO;;;;CA1F5C,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAwFQ,OAAO;;;;CA1E5C,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAwEY,OAAO;;;;CA1D5C,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAwDW,OAAO;;;;CA1C5C,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAwCmB,OAAO;;;;CA1B5C,CAAC"}
@@ -0,0 +1,333 @@
1
+ /**
2
+ * NanoGPT application scraper tools.
3
+ *
4
+ * These tools expose paid NanoGPT application scraper endpoints through MCP.
5
+ */
6
+ import { z } from 'zod';
7
+ import { requestJson } from '../httpClient.js';
8
+ import { handleToolError, processRawResponse, buildContent, zodToJsonSchema } from '../toolUtils.js';
9
+ const startUrlSchema = z.union([
10
+ z.string().min(1),
11
+ z.object({ url: z.string().min(1) }).passthrough(),
12
+ ]);
13
+ const socialProfilesSchema = z.object({
14
+ facebooks: z.boolean().optional(),
15
+ instagrams: z.boolean().optional(),
16
+ youtubes: z.boolean().optional(),
17
+ tiktoks: z.boolean().optional(),
18
+ twitters: z.boolean().optional(),
19
+ }).passthrough();
20
+ const commonControlsSchema = z.object({
21
+ maxTotalChargeUsd: z.number().positive().optional()
22
+ .describe('Maximum billed USD charge allowed for this run. Required by the API for unbounded runs.'),
23
+ waitForFinishSecs: z.number().int().min(5).max(240).optional()
24
+ .describe('Maximum time to wait for the scraper run to finish. Default/maximum: 240.'),
25
+ resultLimit: z.number().int().min(1).max(5000).optional()
26
+ .describe('Maximum number of dataset items to return from the completed run.'),
27
+ resultOffset: z.number().int().min(0).optional()
28
+ .describe('Dataset item offset for pagination.'),
29
+ clean: z.boolean().optional()
30
+ .describe('Return Apify clean dataset items. Default: true.'),
31
+ include_raw: z.boolean().optional().default(false)
32
+ .describe('Include the raw NanoGPT API response for debugging. Large raw responses are returned as a resource link.'),
33
+ });
34
+ export const googleMapsInputSchema = commonControlsSchema.extend({
35
+ searchStringsArray: z.array(z.string().min(1)).optional()
36
+ .describe('Google Maps search terms, e.g. ["coffee shops in Amsterdam"].'),
37
+ locationQuery: z.string().optional(),
38
+ maxCrawledPlacesPerSearch: z.number().int().positive().optional()
39
+ .describe('Limit places crawled per search term. Use this to keep search runs bounded.'),
40
+ language: z.string().optional(),
41
+ categoryFilterWords: z.array(z.string()).optional(),
42
+ searchMatching: z.string().optional(),
43
+ placeMinimumStars: z.string().optional(),
44
+ website: z.string().optional(),
45
+ skipClosedPlaces: z.boolean().optional(),
46
+ scrapePlaceDetailPage: z.boolean().optional(),
47
+ scrapeTableReservationProvider: z.boolean().optional(),
48
+ includeWebResults: z.boolean().optional(),
49
+ scrapeDirectories: z.boolean().optional(),
50
+ maxQuestions: z.number().int().min(0).optional(),
51
+ scrapeContacts: z.boolean().optional(),
52
+ scrapeSocialMediaProfiles: socialProfilesSchema.optional(),
53
+ maximumLeadsEnrichmentRecords: z.number().int().min(0).optional(),
54
+ leadsEnrichmentDepartments: z.array(z.string()).optional(),
55
+ verifyLeadsEnrichmentEmails: z.boolean().optional(),
56
+ maxReviews: z.number().int().min(0).optional(),
57
+ reviewsStartDate: z.string().optional(),
58
+ reviewsSort: z.string().optional(),
59
+ reviewsFilterString: z.string().optional(),
60
+ reviewsOrigin: z.string().optional(),
61
+ scrapeReviewsPersonalData: z.boolean().optional(),
62
+ maxImages: z.number().int().min(0).optional(),
63
+ scrapeImageAuthors: z.boolean().optional(),
64
+ countryCode: z.string().optional(),
65
+ city: z.string().optional(),
66
+ state: z.string().optional(),
67
+ county: z.string().optional(),
68
+ postalCode: z.string().optional(),
69
+ customGeolocation: z.record(z.unknown()).optional(),
70
+ startUrls: z.array(startUrlSchema).optional()
71
+ .describe('Google Maps place/list URLs. Strings or objects like { "url": "..." } are accepted.'),
72
+ placeIds: z.array(z.string().min(1)).optional(),
73
+ allPlacesNoSearchAction: z.string().optional(),
74
+ }).passthrough();
75
+ export const googleMapsReviewsInputSchema = commonControlsSchema.extend({
76
+ startUrls: z.array(startUrlSchema).optional()
77
+ .describe('Google Maps place URLs. Strings or objects like { "url": "..." } are accepted.'),
78
+ placeIds: z.array(z.string().min(1)).optional(),
79
+ maxReviews: z.number().int().positive().optional()
80
+ .describe('Maximum reviews per place. Required to make estimates bounded unless maxTotalChargeUsd is set.'),
81
+ reviewsSort: z.string().optional()
82
+ .describe('Review sort mode. If reviewsStartDate is set, use newest.'),
83
+ reviewsStartDate: z.string().optional(),
84
+ language: z.string().optional(),
85
+ reviewsOrigin: z.string().optional(),
86
+ personalData: z.boolean().optional(),
87
+ }).passthrough();
88
+ export const instagramPostsInputSchema = commonControlsSchema.extend({
89
+ username: z.array(z.string().min(1)).min(1)
90
+ .describe('Instagram usernames, profile URLs, or post/reel/TV URLs. Usernames may include @.'),
91
+ resultsLimit: z.number().int().positive().optional()
92
+ .describe('Posts per profile. Required for bounded profile runs unless maxTotalChargeUsd is set.'),
93
+ skipPinnedPosts: z.boolean().optional(),
94
+ onlyPostsNewerThan: z.string().optional(),
95
+ dataDetailLevel: z.enum(['basicData', 'detailedData']).optional(),
96
+ }).passthrough();
97
+ export const facebookPostsInputSchema = commonControlsSchema.extend({
98
+ startUrls: z.array(startUrlSchema).min(1)
99
+ .describe('Facebook page URLs to scrape. Strings or objects like { "url": "..." } are accepted.'),
100
+ resultsLimit: z.number().int().positive().optional()
101
+ .describe('Posts per page. Required for bounded runs unless maxTotalChargeUsd is set.'),
102
+ captionText: z.boolean().optional()
103
+ .describe('Include caption text in scraped post records.'),
104
+ onlyPostsNewerThan: z.string().optional()
105
+ .describe('Only return posts newer than this date/string accepted by the upstream scraper.'),
106
+ onlyPostsOlderThan: z.string().optional()
107
+ .describe('Only return posts older than this date/string accepted by the upstream scraper.'),
108
+ }).passthrough();
109
+ export const tiktokInputSchema = commonControlsSchema.extend({
110
+ hashtags: z.array(z.string().min(1)).optional(),
111
+ resultsPerPage: z.number().int().positive().optional(),
112
+ profiles: z.array(z.string().min(1)).optional(),
113
+ profileScrapeSections: z.array(z.string()).optional(),
114
+ profileSorting: z.string().optional(),
115
+ excludePinnedPosts: z.boolean().optional(),
116
+ oldestPostDateUnified: z.string().optional(),
117
+ newestPostDate: z.string().optional(),
118
+ mostDiggs: z.number().int().positive().optional(),
119
+ leastDiggs: z.number().int().positive().optional(),
120
+ maxFollowersPerProfile: z.number().int().min(0).optional(),
121
+ maxFollowingPerProfile: z.number().int().min(0).optional(),
122
+ searchQueries: z.array(z.string().min(1)).optional(),
123
+ searchSection: z.string().optional(),
124
+ maxProfilesPerQuery: z.number().int().positive().optional(),
125
+ videoSearchSorting: z.string().optional(),
126
+ videoSearchDateFilter: z.string().optional(),
127
+ postURLs: z.array(z.string().min(1)).optional(),
128
+ scrapeRelatedVideos: z.boolean().optional(),
129
+ shouldDownloadVideos: z.boolean().optional(),
130
+ shouldDownloadCovers: z.boolean().optional(),
131
+ shouldDownloadSlideshowImages: z.boolean().optional(),
132
+ shouldDownloadAvatars: z.boolean().optional(),
133
+ shouldDownloadMusicCovers: z.boolean().optional(),
134
+ videoKvStoreIdOrName: z.string().optional(),
135
+ downloadSubtitlesOptions: z.string().optional(),
136
+ commentsPerPost: z.number().int().min(0).optional(),
137
+ topLevelCommentsPerPost: z.number().int().min(0).optional(),
138
+ maxRepliesPerComment: z.number().int().min(0).optional(),
139
+ proxyCountryCode: z.string().optional(),
140
+ }).passthrough();
141
+ const scraperOutputSchema = z.object({
142
+ object: z.string().optional(),
143
+ actor: z.string().optional(),
144
+ name: z.string().optional(),
145
+ model: z.string().optional(),
146
+ status: z.string().optional(),
147
+ runId: z.string().optional(),
148
+ defaultDatasetId: z.string().optional(),
149
+ items: z.array(z.unknown()),
150
+ usage: z.record(z.unknown()),
151
+ metadata: z.record(z.unknown()),
152
+ raw: z.union([z.record(z.unknown()), z.string()]).optional(),
153
+ });
154
+ export const googleMapsInputJsonSchema = zodToJsonSchema(googleMapsInputSchema);
155
+ export const googleMapsReviewsInputJsonSchema = zodToJsonSchema(googleMapsReviewsInputSchema);
156
+ export const facebookPostsInputJsonSchema = zodToJsonSchema(facebookPostsInputSchema);
157
+ export const instagramPostsInputJsonSchema = zodToJsonSchema(instagramPostsInputSchema);
158
+ export const tiktokInputJsonSchema = zodToJsonSchema(tiktokInputSchema);
159
+ export const outputJsonSchema = zodToJsonSchema(scraperOutputSchema);
160
+ export const googleMaps = {
161
+ name: 'nanogpt_google_maps_scrape',
162
+ description: 'Scrape Google Maps places, place details, contacts, reviews, images, and lead enrichment through NanoGPT billing.',
163
+ inputSchema: googleMapsInputSchema,
164
+ inputJsonSchema: googleMapsInputJsonSchema,
165
+ outputJsonSchema,
166
+ annotations: { readOnlyHint: false, openWorldHint: true },
167
+ handler: makeScraperHandler({
168
+ path: '/api/v1/googlemaps',
169
+ label: 'Google Maps',
170
+ itemName: 'place',
171
+ schema: googleMapsInputSchema,
172
+ }),
173
+ };
174
+ export const googleMapsReviews = {
175
+ name: 'nanogpt_google_maps_reviews_scrape',
176
+ description: 'Scrape Google Maps reviews, reviewer metadata, and structured review records through NanoGPT billing.',
177
+ inputSchema: googleMapsReviewsInputSchema,
178
+ inputJsonSchema: googleMapsReviewsInputJsonSchema,
179
+ outputJsonSchema,
180
+ annotations: { readOnlyHint: false, openWorldHint: true },
181
+ handler: makeScraperHandler({
182
+ path: '/api/v1/googlemaps/reviews',
183
+ label: 'Google Maps reviews',
184
+ itemName: 'review',
185
+ schema: googleMapsReviewsInputSchema,
186
+ }),
187
+ };
188
+ export const facebookPosts = {
189
+ name: 'nanogpt_facebook_posts_scrape',
190
+ description: 'Scrape public Facebook page posts, captions, videos, reactions, images, links, and metadata through NanoGPT billing.',
191
+ inputSchema: facebookPostsInputSchema,
192
+ inputJsonSchema: facebookPostsInputJsonSchema,
193
+ outputJsonSchema,
194
+ annotations: { readOnlyHint: false, openWorldHint: true },
195
+ handler: makeScraperHandler({
196
+ path: '/api/v1/facebook/posts',
197
+ label: 'Facebook posts',
198
+ itemName: 'post',
199
+ schema: facebookPostsInputSchema,
200
+ }),
201
+ };
202
+ export const instagramPosts = {
203
+ name: 'nanogpt_instagram_posts_scrape',
204
+ description: 'Scrape Instagram posts, reels, captions, media metadata, and engagement data through NanoGPT billing.',
205
+ inputSchema: instagramPostsInputSchema,
206
+ inputJsonSchema: instagramPostsInputJsonSchema,
207
+ outputJsonSchema,
208
+ annotations: { readOnlyHint: false, openWorldHint: true },
209
+ handler: makeScraperHandler({
210
+ path: '/api/v1/instagram/posts',
211
+ label: 'Instagram posts',
212
+ itemName: 'post',
213
+ schema: instagramPostsInputSchema,
214
+ }),
215
+ };
216
+ export const tiktok = {
217
+ name: 'nanogpt_tiktok_scrape',
218
+ description: 'Scrape TikTok hashtags, profiles, searches, video URLs, comments, subtitles, media downloads, and metadata through NanoGPT billing.',
219
+ inputSchema: tiktokInputSchema,
220
+ inputJsonSchema: tiktokInputJsonSchema,
221
+ outputJsonSchema,
222
+ annotations: { readOnlyHint: false, openWorldHint: true },
223
+ handler: makeScraperHandler({
224
+ path: '/api/v1/tiktok',
225
+ label: 'TikTok',
226
+ itemName: 'item',
227
+ schema: tiktokInputSchema,
228
+ }),
229
+ };
230
+ function makeScraperHandler({ path, label, itemName, schema, }) {
231
+ return async function handler(args) {
232
+ try {
233
+ const input = schema.parse(args);
234
+ const { include_raw: includeRaw, ...requestBody } = input;
235
+ const response = await requestJson({
236
+ method: 'POST',
237
+ path,
238
+ body: requestBody,
239
+ timeoutMs: getScraperTimeoutMs(requestBody),
240
+ });
241
+ const data = response.json;
242
+ const items = Array.isArray(data.items) ? data.items : [];
243
+ const usage = data.usage || {};
244
+ const metadata = data.metadata || {};
245
+ const output = {
246
+ object: data.object,
247
+ actor: data.actor,
248
+ name: data.name,
249
+ model: data.model,
250
+ status: data.status,
251
+ runId: data.runId,
252
+ defaultDatasetId: data.defaultDatasetId,
253
+ items,
254
+ usage,
255
+ metadata,
256
+ };
257
+ const { raw, resourceLink } = processRawResponse({ status: response.status, headers: response.headers, body: data }, includeRaw);
258
+ if (raw !== undefined)
259
+ output.raw = raw;
260
+ return {
261
+ content: buildContent(formatScraperDisplayText(label, itemName, data, items), resourceLink),
262
+ structuredContent: output,
263
+ };
264
+ }
265
+ catch (err) {
266
+ return handleToolError(err);
267
+ }
268
+ };
269
+ }
270
+ function getScraperTimeoutMs(requestBody) {
271
+ const waitForFinishSecs = typeof requestBody.waitForFinishSecs === 'number'
272
+ ? requestBody.waitForFinishSecs
273
+ : 240;
274
+ return (waitForFinishSecs * 1000) + 30_000;
275
+ }
276
+ function formatScraperDisplayText(label, itemName, data, items) {
277
+ const plural = items.length === 1 ? itemName : `${itemName}s`;
278
+ let text = `${label} scrape returned ${items.length} ${plural}.`;
279
+ if (data.status)
280
+ text += ` Status: ${data.status}.`;
281
+ if (data.runId)
282
+ text += ` Run ID: ${data.runId}.`;
283
+ const usage = data.usage || {};
284
+ const actualCostUsd = typeof usage.actualCostUsd === 'number' ? usage.actualCostUsd : undefined;
285
+ const estimatedMaxChargeUsd = typeof usage.estimatedMaxChargeUsd === 'number'
286
+ ? usage.estimatedMaxChargeUsd
287
+ : undefined;
288
+ if (actualCostUsd !== undefined)
289
+ text += ` Actual cost: $${actualCostUsd.toFixed(6)}.`;
290
+ if (estimatedMaxChargeUsd !== undefined)
291
+ text += ` Estimated max charge: $${estimatedMaxChargeUsd.toFixed(6)}.`;
292
+ const preview = items.slice(0, 3).map((item, index) => summarizeItem(item, index + 1));
293
+ if (preview.length > 0) {
294
+ text += `\n\nPreview:\n${preview.join('\n')}`;
295
+ }
296
+ return text;
297
+ }
298
+ function summarizeItem(item, index) {
299
+ if (!item || typeof item !== 'object') {
300
+ return `- ${index}: ${String(item)}`;
301
+ }
302
+ const obj = item;
303
+ const candidateKeys = [
304
+ 'title',
305
+ 'name',
306
+ 'text',
307
+ 'caption',
308
+ 'shortCode',
309
+ 'url',
310
+ 'postUrl',
311
+ 'videoUrl',
312
+ 'placeId',
313
+ 'reviewId',
314
+ 'username',
315
+ ];
316
+ const parts = candidateKeys
317
+ .map((key) => {
318
+ const value = obj[key];
319
+ if (typeof value !== 'string' && typeof value !== 'number')
320
+ return null;
321
+ const text = String(value).replace(/\s+/g, ' ').trim();
322
+ if (!text)
323
+ return null;
324
+ return `${key}: ${text.slice(0, 120)}${text.length > 120 ? '...' : ''}`;
325
+ })
326
+ .filter((part) => Boolean(part))
327
+ .slice(0, 3);
328
+ if (parts.length > 0)
329
+ return `- ${index}: ${parts.join(', ')}`;
330
+ const keys = Object.keys(obj).slice(0, 8);
331
+ return `- ${index}: ${keys.length ? `fields: ${keys.join(', ')}` : 'empty object'}`;
332
+ }
333
+ //# sourceMappingURL=applicationScrapers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applicationScrapers.js","sourceRoot":"","sources":["../../src/tools/applicationScrapers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAErG,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC;IAC7B,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;CACnD,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;SAChD,QAAQ,CAAC,yFAAyF,CAAC;IACtG,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;SAC3D,QAAQ,CAAC,2EAA2E,CAAC;IACxF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;SACtD,QAAQ,CAAC,mEAAmE,CAAC;IAChF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC7C,QAAQ,CAAC,qCAAqC,CAAC;IAClD,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAC1B,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;SAC/C,QAAQ,CAAC,0GAA0G,CAAC;CACxH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,MAAM,CAAC;IAC/D,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;SACtD,QAAQ,CAAC,+DAA+D,CAAC;IAC5E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,yBAAyB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;SAC9D,QAAQ,CAAC,6EAA6E,CAAC;IAC1F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACxC,qBAAqB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC7C,8BAA8B,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACtD,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACzC,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACtC,yBAAyB,EAAE,oBAAoB,CAAC,QAAQ,EAAE;IAC1D,6BAA6B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACjE,0BAA0B,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1D,2BAA2B,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC9C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,yBAAyB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACjD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC7C,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;SAC1C,QAAQ,CAAC,qFAAqF,CAAC;IAClG,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,4BAA4B,GAAG,oBAAoB,CAAC,MAAM,CAAC;IACtE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;SAC1C,QAAQ,CAAC,gFAAgF,CAAC;IAC7F,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;SAC/C,QAAQ,CAAC,gGAAgG,CAAC;IAC7G,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC/B,QAAQ,CAAC,2DAA2D,CAAC;IACxE,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAAoB,CAAC,MAAM,CAAC;IACnE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACxC,QAAQ,CAAC,mFAAmF,CAAC;IAChG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;SACjD,QAAQ,CAAC,uFAAuF,CAAC;IACpG,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACvC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE;CAClE,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,wBAAwB,GAAG,oBAAoB,CAAC,MAAM,CAAC;IAClE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACtC,QAAQ,CAAC,sFAAsF,CAAC;IACnG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;SACjD,QAAQ,CAAC,4EAA4E,CAAC;IACzF,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAChC,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACtC,QAAQ,CAAC,iFAAiF,CAAC;IAC9F,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACtC,QAAQ,CAAC,iFAAiF,CAAC;CAC/F,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,MAAM,CAAC;IAC3D,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACtD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC1C,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACjD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAClD,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1D,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1D,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC3D,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzC,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC3C,oBAAoB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5C,oBAAoB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5C,6BAA6B,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACrD,qBAAqB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC7C,yBAAyB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACjD,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3C,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/C,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnD,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3D,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/B,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,eAAe,CAAC,qBAAqB,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,gCAAgC,GAAG,eAAe,CAAC,4BAA4B,CAAC,CAAC;AAC9F,MAAM,CAAC,MAAM,4BAA4B,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,6BAA6B,GAAG,eAAe,CAAC,yBAAyB,CAAC,CAAC;AACxF,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,4BAA4B;IAClC,WAAW,EACT,mHAAmH;IACrH,WAAW,EAAE,qBAAqB;IAClC,eAAe,EAAE,yBAAyB;IAC1C,gBAAgB;IAChB,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;IACzD,OAAO,EAAE,kBAAkB,CAAC;QAC1B,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,qBAAqB;KAC9B,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,oCAAoC;IAC1C,WAAW,EACT,uGAAuG;IACzG,WAAW,EAAE,4BAA4B;IACzC,eAAe,EAAE,gCAAgC;IACjD,gBAAgB;IAChB,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;IACzD,OAAO,EAAE,kBAAkB,CAAC;QAC1B,IAAI,EAAE,4BAA4B;QAClC,KAAK,EAAE,qBAAqB;QAC5B,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,4BAA4B;KACrC,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,+BAA+B;IACrC,WAAW,EACT,sHAAsH;IACxH,WAAW,EAAE,wBAAwB;IACrC,eAAe,EAAE,4BAA4B;IAC7C,gBAAgB;IAChB,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;IACzD,OAAO,EAAE,kBAAkB,CAAC;QAC1B,IAAI,EAAE,wBAAwB;QAC9B,KAAK,EAAE,gBAAgB;QACvB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,wBAAwB;KACjC,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,gCAAgC;IACtC,WAAW,EACT,uGAAuG;IACzG,WAAW,EAAE,yBAAyB;IACtC,eAAe,EAAE,6BAA6B;IAC9C,gBAAgB;IAChB,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;IACzD,OAAO,EAAE,kBAAkB,CAAC;QAC1B,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,yBAAyB;KAClC,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,qIAAqI;IACvI,WAAW,EAAE,iBAAiB;IAC9B,eAAe,EAAE,qBAAqB;IACtC,gBAAgB;IAChB,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;IACzD,OAAO,EAAE,kBAAkB,CAAC;QAC1B,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,iBAAiB;KAC1B,CAAC;CACH,CAAC;AAeF,SAAS,kBAAkB,CAAC,EAC1B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,GAMP;IACC,OAAO,KAAK,UAAU,OAAO,CAAC,IAAa;QACzC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAwD,CAAC;YACxF,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,GAAG,KAAK,CAAC;YAE1D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAkB;gBAClD,MAAM,EAAE,MAAM;gBACd,IAAI;gBACJ,IAAI,EAAE,WAAW;gBACjB,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC;aAC5C,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;YAErC,MAAM,MAAM,GAA4B;gBACtC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,KAAK;gBACL,KAAK;gBACL,QAAQ;aACT,CAAC;YAEF,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAC9C,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAClE,UAAU,CACX,CAAC;YACF,IAAI,GAAG,KAAK,SAAS;gBAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;YAExC,OAAO;gBACL,OAAO,EAAE,YAAY,CAAC,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,YAAY,CAAC;gBAC3F,iBAAiB,EAAE,MAAM;aAC1B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,WAAoC;IAC/D,MAAM,iBAAiB,GAAG,OAAO,WAAW,CAAC,iBAAiB,KAAK,QAAQ;QACzE,CAAC,CAAC,WAAW,CAAC,iBAAiB;QAC/B,CAAC,CAAC,GAAG,CAAC;IACR,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAa,EACb,QAAgB,EAChB,IAAqB,EACrB,KAAgB;IAEhB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC;IAC9D,IAAI,IAAI,GAAG,GAAG,KAAK,oBAAoB,KAAK,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC;IAEjE,IAAI,IAAI,CAAC,MAAM;QAAE,IAAI,IAAI,YAAY,IAAI,CAAC,MAAM,GAAG,CAAC;IACpD,IAAI,IAAI,CAAC,KAAK;QAAE,IAAI,IAAI,YAAY,IAAI,CAAC,KAAK,GAAG,CAAC;IAElD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC/B,MAAM,aAAa,GAAG,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAChG,MAAM,qBAAqB,GAAG,OAAO,KAAK,CAAC,qBAAqB,KAAK,QAAQ;QAC3E,CAAC,CAAC,KAAK,CAAC,qBAAqB;QAC7B,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,aAAa,KAAK,SAAS;QAAE,IAAI,IAAI,kBAAkB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACvF,IAAI,qBAAqB,KAAK,SAAS;QAAE,IAAI,IAAI,2BAA2B,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAEhH,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IACvF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,IAAI,iBAAiB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,IAAa,EAAE,KAAa;IACjD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,KAAK,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,MAAM,aAAa,GAAG;QACpB,OAAO;QACP,MAAM;QACN,MAAM;QACN,SAAS;QACT,WAAW;QACX,KAAK;QACL,SAAS;QACT,UAAU;QACV,SAAS;QACT,UAAU;QACV,UAAU;KACX,CAAC;IACF,MAAM,KAAK,GAAG,aAAa;SACxB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACxE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC1E,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC/C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEf,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAE/D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,OAAO,KAAK,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;AACtF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/tools/chat.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYtB,CAAC;AAGH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;EAKvB,CAAC;AAGH,eAAO,MAAM,eAAe,sCAA+B,CAAC;AAC5D,eAAO,MAAM,gBAAgB,sCAAgC,CAAC;AAG9D,eAAO,MAAM,IAAI,iBAAiB,CAAC;AACnC,eAAO,MAAM,WAAW,oGAC2E,CAAC;AAGpG,eAAO,MAAM,WAAW;;;CAGvB,CAAC;AAaF;;GAEG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,OAAO;;;GAiF1C"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/tools/chat.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYtB,CAAC;AAGH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;EAKvB,CAAC;AAGH,eAAO,MAAM,eAAe,sCAA+B,CAAC;AAC5D,eAAO,MAAM,gBAAgB,sCAAgC,CAAC;AAG9D,eAAO,MAAM,IAAI,iBAAiB,CAAC;AACnC,eAAO,MAAM,WAAW,oGAC2E,CAAC;AAGpG,eAAO,MAAM,WAAW;;;CAGvB,CAAC;AAaF;;GAEG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,OAAO;;;GAuF1C"}
@@ -54,8 +54,11 @@ export async function handler(args) {
54
54
  // Validate input
55
55
  const input = inputSchema.parse(args);
56
56
  const config = getConfig();
57
- // Use provided model or fall back to default (claude-sonnet-4-5-20250929)
57
+ // Determine model
58
58
  const model = input.model || config.defaultModel;
59
+ if (!model) {
60
+ throw new McpError(ErrorCode.InvalidRequest, 'No model specified. Either provide a "model" parameter or set NANOGPT_DEFAULT_MODEL environment variable.');
61
+ }
59
62
  // Build request body
60
63
  const requestBody = {
61
64
  model,
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/tools/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/tools/chat.ts"],"names":[],"mappings":"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"}