@llmindset/hf-mcp-server 0.2.40 → 0.2.42

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 (50) hide show
  1. package/dist/server/gradio-endpoint-connector.d.ts +2 -8
  2. package/dist/server/gradio-endpoint-connector.d.ts.map +1 -1
  3. package/dist/server/gradio-endpoint-connector.js +115 -223
  4. package/dist/server/gradio-endpoint-connector.js.map +1 -1
  5. package/dist/server/mcp-proxy.d.ts.map +1 -1
  6. package/dist/server/mcp-proxy.js +45 -46
  7. package/dist/server/mcp-proxy.js.map +1 -1
  8. package/dist/server/mcp-server.d.ts.map +1 -1
  9. package/dist/server/mcp-server.js +97 -2
  10. package/dist/server/mcp-server.js.map +1 -1
  11. package/dist/server/utils/gradio-cache.d.ts +87 -0
  12. package/dist/server/utils/gradio-cache.d.ts.map +1 -0
  13. package/dist/server/utils/gradio-cache.js +186 -0
  14. package/dist/server/utils/gradio-cache.js.map +1 -0
  15. package/dist/server/utils/gradio-discovery.d.ts +23 -0
  16. package/dist/server/utils/gradio-discovery.d.ts.map +1 -0
  17. package/dist/server/utils/gradio-discovery.js +273 -0
  18. package/dist/server/utils/gradio-discovery.js.map +1 -0
  19. package/dist/server/utils/gradio-result-processor.d.ts +9 -0
  20. package/dist/server/utils/gradio-result-processor.d.ts.map +1 -0
  21. package/dist/server/utils/gradio-result-processor.js +53 -0
  22. package/dist/server/utils/gradio-result-processor.js.map +1 -0
  23. package/dist/server/utils/gradio-tool-caller.d.ts +20 -0
  24. package/dist/server/utils/gradio-tool-caller.d.ts.map +1 -0
  25. package/dist/server/utils/gradio-tool-caller.js +91 -0
  26. package/dist/server/utils/gradio-tool-caller.js.map +1 -0
  27. package/dist/server/utils/gradio-utils.d.ts +2 -2
  28. package/dist/server/utils/gradio-utils.d.ts.map +1 -1
  29. package/dist/server/utils/gradio-utils.js +18 -31
  30. package/dist/server/utils/gradio-utils.js.map +1 -1
  31. package/dist/server/utils/query-logger.d.ts +1 -0
  32. package/dist/server/utils/query-logger.d.ts.map +1 -1
  33. package/dist/server/utils/query-logger.js +1 -0
  34. package/dist/server/utils/query-logger.js.map +1 -1
  35. package/dist/server/utils/tool-selection-strategy.d.ts.map +1 -1
  36. package/dist/server/utils/tool-selection-strategy.js.map +1 -1
  37. package/dist/server/web-server.d.ts.map +1 -1
  38. package/dist/server/web-server.js +2 -0
  39. package/dist/server/web-server.js.map +1 -1
  40. package/dist/shared/bouquet-presets.d.ts.map +1 -1
  41. package/dist/shared/bouquet-presets.js +5 -1
  42. package/dist/shared/bouquet-presets.js.map +1 -1
  43. package/dist/shared/transport-metrics.d.ts +19 -0
  44. package/dist/shared/transport-metrics.d.ts.map +1 -1
  45. package/dist/shared/transport-metrics.js.map +1 -1
  46. package/dist/web/assets/main-BTa3PJAr.js +197 -0
  47. package/dist/web/index.html +1 -1
  48. package/dist/web/mcp-welcome.html +46 -46
  49. package/package.json +2 -2
  50. package/dist/web/assets/main-C7vQ9_hk.js +0 -197
@@ -0,0 +1,186 @@
1
+ import { logger } from './logger.js';
2
+ export const CACHE_CONFIG = {
3
+ SPACE_METADATA_TTL: parseInt(process.env.GRADIO_SPACE_CACHE_TTL || '300000', 10),
4
+ SCHEMA_TTL: parseInt(process.env.GRADIO_SCHEMA_CACHE_TTL || '300000', 10),
5
+ DISCOVERY_CONCURRENCY: parseInt(process.env.GRADIO_DISCOVERY_CONCURRENCY || '10', 10),
6
+ SPACE_INFO_TIMEOUT: parseInt(process.env.GRADIO_SPACE_INFO_TIMEOUT || '5000', 10),
7
+ SCHEMA_TIMEOUT: parseInt(process.env.GRADIO_SCHEMA_TIMEOUT || '7500', 10),
8
+ };
9
+ class SpaceMetadataCache {
10
+ cache = new Map();
11
+ stats = {
12
+ hits: 0,
13
+ misses: 0,
14
+ etagRevalidations: 0,
15
+ };
16
+ get(spaceName) {
17
+ const entry = this.cache.get(spaceName);
18
+ if (!entry) {
19
+ this.stats.misses++;
20
+ logger.trace({ spaceName }, 'Space metadata cache miss');
21
+ return null;
22
+ }
23
+ const age = Date.now() - entry.fetchedAt;
24
+ const isValid = age < CACHE_CONFIG.SPACE_METADATA_TTL;
25
+ if (!isValid) {
26
+ this.stats.misses++;
27
+ logger.trace({ spaceName, age, ttl: CACHE_CONFIG.SPACE_METADATA_TTL }, 'Space metadata cache expired');
28
+ return null;
29
+ }
30
+ this.stats.hits++;
31
+ logger.trace({ spaceName, age }, 'Space metadata cache hit');
32
+ return entry;
33
+ }
34
+ getForRevalidation(spaceName) {
35
+ return this.cache.get(spaceName) || null;
36
+ }
37
+ set(spaceName, metadata) {
38
+ this.cache.set(spaceName, metadata);
39
+ logger.trace({ spaceName, hasEtag: !!metadata.etag }, 'Space metadata cached');
40
+ }
41
+ updateTimestamp(spaceName) {
42
+ const entry = this.cache.get(spaceName);
43
+ if (entry) {
44
+ entry.fetchedAt = Date.now();
45
+ this.stats.etagRevalidations++;
46
+ logger.trace({ spaceName }, 'Space metadata timestamp updated after 304');
47
+ }
48
+ }
49
+ clear() {
50
+ this.cache.clear();
51
+ this.stats.hits = 0;
52
+ this.stats.misses = 0;
53
+ this.stats.etagRevalidations = 0;
54
+ logger.debug('Space metadata cache cleared');
55
+ }
56
+ getStats() {
57
+ return {
58
+ hits: this.stats.hits,
59
+ misses: this.stats.misses,
60
+ etagRevalidations: this.stats.etagRevalidations,
61
+ size: this.cache.size,
62
+ };
63
+ }
64
+ }
65
+ class SchemaCache {
66
+ cache = new Map();
67
+ stats = {
68
+ hits: 0,
69
+ misses: 0,
70
+ };
71
+ get(spaceName) {
72
+ const entry = this.cache.get(spaceName);
73
+ if (!entry) {
74
+ this.stats.misses++;
75
+ logger.trace({ spaceName }, 'Schema cache miss');
76
+ return null;
77
+ }
78
+ const age = Date.now() - entry.fetchedAt;
79
+ const isValid = age < CACHE_CONFIG.SCHEMA_TTL;
80
+ if (!isValid) {
81
+ this.stats.misses++;
82
+ logger.trace({ spaceName, age, ttl: CACHE_CONFIG.SCHEMA_TTL }, 'Schema cache expired');
83
+ return null;
84
+ }
85
+ this.stats.hits++;
86
+ logger.trace({ spaceName, age, toolCount: entry.tools.length }, 'Schema cache hit');
87
+ return entry;
88
+ }
89
+ set(spaceName, schema) {
90
+ this.cache.set(spaceName, schema);
91
+ logger.trace({ spaceName, toolCount: schema.tools.length }, 'Schema cached');
92
+ }
93
+ clear() {
94
+ this.cache.clear();
95
+ this.stats.hits = 0;
96
+ this.stats.misses = 0;
97
+ logger.debug('Schema cache cleared');
98
+ }
99
+ getStats() {
100
+ return {
101
+ hits: this.stats.hits,
102
+ misses: this.stats.misses,
103
+ size: this.cache.size,
104
+ };
105
+ }
106
+ }
107
+ export const spaceMetadataCache = new SpaceMetadataCache();
108
+ export const schemaCache = new SchemaCache();
109
+ export function getCacheStats() {
110
+ const metadataStats = spaceMetadataCache.getStats();
111
+ const schemaStats = schemaCache.getStats();
112
+ return {
113
+ metadataHits: metadataStats.hits,
114
+ metadataMisses: metadataStats.misses,
115
+ metadataEtagRevalidations: metadataStats.etagRevalidations,
116
+ schemaHits: schemaStats.hits,
117
+ schemaMisses: schemaStats.misses,
118
+ metadataCacheSize: metadataStats.size,
119
+ schemaCacheSize: schemaStats.size,
120
+ };
121
+ }
122
+ export function clearAllCaches() {
123
+ spaceMetadataCache.clear();
124
+ schemaCache.clear();
125
+ logger.info('All Gradio caches cleared');
126
+ }
127
+ export function logCacheStats() {
128
+ const stats = getCacheStats();
129
+ const metadataHitRate = stats.metadataHits + stats.metadataMisses > 0
130
+ ? ((stats.metadataHits / (stats.metadataHits + stats.metadataMisses)) * 100).toFixed(1)
131
+ : '0.0';
132
+ const schemaHitRate = stats.schemaHits + stats.schemaMisses > 0
133
+ ? ((stats.schemaHits / (stats.schemaHits + stats.schemaMisses)) * 100).toFixed(1)
134
+ : '0.0';
135
+ logger.debug({
136
+ metadata: {
137
+ hits: stats.metadataHits,
138
+ misses: stats.metadataMisses,
139
+ etagRevalidations: stats.metadataEtagRevalidations,
140
+ hitRate: `${metadataHitRate}%`,
141
+ cacheSize: stats.metadataCacheSize,
142
+ },
143
+ schema: {
144
+ hits: stats.schemaHits,
145
+ misses: stats.schemaMisses,
146
+ hitRate: `${schemaHitRate}%`,
147
+ cacheSize: stats.schemaCacheSize,
148
+ },
149
+ }, 'Gradio cache statistics');
150
+ }
151
+ export function formatCacheMetricsForAPI() {
152
+ const stats = getCacheStats();
153
+ const metadataTotal = stats.metadataHits + stats.metadataMisses;
154
+ const metadataHitRate = metadataTotal > 0
155
+ ? Math.round((stats.metadataHits / metadataTotal) * 10000) / 100
156
+ : 0;
157
+ const schemaTotal = stats.schemaHits + stats.schemaMisses;
158
+ const schemaHitRate = schemaTotal > 0
159
+ ? Math.round((stats.schemaHits / schemaTotal) * 10000) / 100
160
+ : 0;
161
+ const totalHits = stats.metadataHits + stats.schemaHits;
162
+ const totalMisses = stats.metadataMisses + stats.schemaMisses;
163
+ const grandTotal = totalHits + totalMisses;
164
+ const overallHitRate = grandTotal > 0
165
+ ? Math.round((totalHits / grandTotal) * 10000) / 100
166
+ : 0;
167
+ return {
168
+ spaceMetadata: {
169
+ hits: stats.metadataHits,
170
+ misses: stats.metadataMisses,
171
+ hitRate: metadataHitRate,
172
+ etagRevalidations: stats.metadataEtagRevalidations,
173
+ cacheSize: stats.metadataCacheSize,
174
+ },
175
+ schemas: {
176
+ hits: stats.schemaHits,
177
+ misses: stats.schemaMisses,
178
+ hitRate: schemaHitRate,
179
+ cacheSize: stats.schemaCacheSize,
180
+ },
181
+ totalHits,
182
+ totalMisses,
183
+ overallHitRate,
184
+ };
185
+ }
186
+ //# sourceMappingURL=gradio-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradio-cache.js","sourceRoot":"","sources":["../../../src/server/utils/gradio-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ export interface GradioSpaceInfo {
3
+ name: string;
4
+ subdomain: string;
5
+ _id: string;
6
+ emoji: string;
7
+ private: boolean;
8
+ sdk: string;
9
+ tools: Tool[];
10
+ runtime?: {
11
+ stage?: string;
12
+ hardware?: string;
13
+ };
14
+ cached: boolean;
15
+ }
16
+ export interface GetGradioSpacesOptions {
17
+ skipSchemas?: boolean;
18
+ includeRuntime?: boolean;
19
+ timeout?: number;
20
+ }
21
+ export declare function getGradioSpaces(spaceNames: string[], hfToken?: string, options?: GetGradioSpacesOptions): Promise<GradioSpaceInfo[]>;
22
+ export declare function getGradioSpace(spaceName: string, hfToken?: string, options?: GetGradioSpacesOptions): Promise<GradioSpaceInfo | null>;
23
+ //# sourceMappingURL=gradio-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradio-discovery.d.ts","sourceRoot":"","sources":["../../../src/server/utils/gradio-discovery.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAe/D,MAAM,WAAW,eAAe;IAE/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IAGd,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IAGZ,KAAK,EAAE,IAAI,EAAE,CAAC;IAGd,OAAO,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAGF,MAAM,EAAE,OAAO,CAAC;CAChB;AAKD,MAAM,WAAW,sBAAsB;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAgZD,wBAAsB,eAAe,CACpC,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,sBAAsB,GAC9B,OAAO,CAAC,eAAe,EAAE,CAAC,CAyD5B;AAkBD,wBAAsB,cAAc,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,sBAAsB,GAC9B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAGjC"}
@@ -0,0 +1,273 @@
1
+ import { logger } from './logger.js';
2
+ import { spaceMetadataCache, schemaCache, CACHE_CONFIG, logCacheStats, } from './gradio-cache.js';
3
+ import { parseSchemaResponse } from '../gradio-endpoint-connector.js';
4
+ async function fetchSpaceMetadata(spaceName, hfToken, options) {
5
+ const timeout = options?.timeout || CACHE_CONFIG.SPACE_INFO_TIMEOUT;
6
+ try {
7
+ const cached = spaceMetadataCache.get(spaceName);
8
+ if (cached) {
9
+ logger.trace({ spaceName }, 'Using cached space metadata');
10
+ return { success: true, metadata: cached, cached: true };
11
+ }
12
+ const stale = spaceMetadataCache.getForRevalidation(spaceName);
13
+ const etag = stale?.etag;
14
+ logger.debug({ spaceName, hasEtag: !!etag }, 'Fetching space metadata from HuggingFace API');
15
+ const controller = new AbortController();
16
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
17
+ try {
18
+ const additionalFields = ['subdomain', 'private', 'sdk'];
19
+ if (options?.includeRuntime) {
20
+ additionalFields.push('runtime');
21
+ }
22
+ const url = `https://huggingface.co/api/spaces/${spaceName}`;
23
+ const headers = {};
24
+ if (hfToken) {
25
+ headers['Authorization'] = `Bearer ${hfToken}`;
26
+ }
27
+ if (etag) {
28
+ headers['If-None-Match'] = etag;
29
+ }
30
+ const response = await fetch(url, {
31
+ headers,
32
+ signal: controller.signal,
33
+ });
34
+ clearTimeout(timeoutId);
35
+ if (response.status === 304 && stale) {
36
+ logger.debug({ spaceName }, 'Space metadata not modified (304), using cached data');
37
+ spaceMetadataCache.updateTimestamp(spaceName);
38
+ return { success: true, metadata: stale, cached: true };
39
+ }
40
+ if (!response.ok) {
41
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
42
+ }
43
+ const info = await response.json();
44
+ const newEtag = response.headers.get('etag') || undefined;
45
+ if (!info.subdomain) {
46
+ throw new Error('Space does not have a subdomain');
47
+ }
48
+ const metadata = {
49
+ _id: info._id || `gradio_${info.subdomain}`,
50
+ name: spaceName,
51
+ subdomain: info.subdomain,
52
+ emoji: '🔧',
53
+ private: info.private || false,
54
+ sdk: info.sdk || 'gradio',
55
+ runtime: info.runtime,
56
+ etag: newEtag,
57
+ fetchedAt: Date.now(),
58
+ };
59
+ if (!metadata.private) {
60
+ spaceMetadataCache.set(spaceName, metadata);
61
+ logger.debug({ spaceName, subdomain: metadata.subdomain, hasEtag: !!newEtag }, 'Space metadata fetched and cached');
62
+ }
63
+ else {
64
+ logger.debug({ spaceName, subdomain: metadata.subdomain }, 'Private space metadata fetched (not cached)');
65
+ }
66
+ return { success: true, metadata, cached: false };
67
+ }
68
+ finally {
69
+ clearTimeout(timeoutId);
70
+ }
71
+ }
72
+ catch (error) {
73
+ logger.warn({
74
+ spaceName,
75
+ error: error instanceof Error ? error.message : String(error),
76
+ }, 'Failed to fetch space metadata');
77
+ return {
78
+ success: false,
79
+ spaceName,
80
+ error: error instanceof Error ? error : new Error(String(error)),
81
+ };
82
+ }
83
+ }
84
+ async function fetchSpaceMetadataWithCache(spaceNames, hfToken, options) {
85
+ const concurrency = options?.concurrency || CACHE_CONFIG.DISCOVERY_CONCURRENCY;
86
+ const results = new Map();
87
+ const batches = [];
88
+ for (let i = 0; i < spaceNames.length; i += concurrency) {
89
+ batches.push(spaceNames.slice(i, i + concurrency));
90
+ }
91
+ logger.debug({
92
+ totalSpaces: spaceNames.length,
93
+ batchCount: batches.length,
94
+ batchSize: concurrency,
95
+ }, 'Fetching space metadata in parallel batches');
96
+ for (const batch of batches) {
97
+ const batchPromises = batch.map(spaceName => fetchSpaceMetadata(spaceName, hfToken, options));
98
+ const batchResults = await Promise.all(batchPromises);
99
+ for (const result of batchResults) {
100
+ if (result.success) {
101
+ results.set(result.metadata.name, result.metadata);
102
+ }
103
+ }
104
+ }
105
+ logger.debug({
106
+ requested: spaceNames.length,
107
+ successful: results.size,
108
+ failed: spaceNames.length - results.size,
109
+ }, 'Space metadata fetch complete');
110
+ return results;
111
+ }
112
+ async function fetchSchema(metadata, hfToken, options) {
113
+ const spaceName = metadata.name;
114
+ const timeout = options?.timeout || CACHE_CONFIG.SCHEMA_TIMEOUT;
115
+ try {
116
+ const cached = schemaCache.get(spaceName);
117
+ if (cached) {
118
+ logger.trace({ spaceName }, 'Using cached schema');
119
+ return { success: true, spaceName, schema: cached, cached: true };
120
+ }
121
+ logger.debug({ spaceName, subdomain: metadata.subdomain }, 'Fetching schema from Gradio endpoint');
122
+ const schemaUrl = `https://${metadata.subdomain}.hf.space/gradio_api/mcp/schema`;
123
+ const headers = {
124
+ 'Content-Type': 'application/json',
125
+ };
126
+ if (metadata.private && hfToken) {
127
+ headers['X-HF-Authorization'] = `Bearer ${hfToken}`;
128
+ }
129
+ const controller = new AbortController();
130
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
131
+ try {
132
+ const response = await fetch(schemaUrl, {
133
+ method: 'GET',
134
+ headers,
135
+ signal: controller.signal,
136
+ });
137
+ clearTimeout(timeoutId);
138
+ if (!response.ok) {
139
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
140
+ }
141
+ const schemaResponse = await response.json();
142
+ const endpointId = `gradio_${metadata.subdomain}`;
143
+ const parsed = parseSchemaResponse(schemaResponse, endpointId, metadata.subdomain);
144
+ const tools = parsed
145
+ .filter((parsedTool) => !parsedTool.name.toLowerCase().includes('<lambda'))
146
+ .map((parsedTool) => ({
147
+ name: parsedTool.name,
148
+ description: parsedTool.description || `${parsedTool.name} tool`,
149
+ inputSchema: {
150
+ type: 'object',
151
+ properties: parsedTool.inputSchema.properties || {},
152
+ required: parsedTool.inputSchema.required || [],
153
+ description: parsedTool.inputSchema.description,
154
+ },
155
+ }));
156
+ const schema = {
157
+ tools,
158
+ fetchedAt: Date.now(),
159
+ };
160
+ if (!metadata.private) {
161
+ schemaCache.set(spaceName, schema);
162
+ logger.debug({ spaceName, toolCount: tools.length }, 'Schema fetched and cached');
163
+ }
164
+ else {
165
+ logger.debug({ spaceName, toolCount: tools.length }, 'Private space schema fetched (not cached)');
166
+ }
167
+ return { success: true, spaceName, schema, cached: false };
168
+ }
169
+ finally {
170
+ clearTimeout(timeoutId);
171
+ }
172
+ }
173
+ catch (error) {
174
+ logger.warn({
175
+ spaceName,
176
+ subdomain: metadata.subdomain,
177
+ error: error instanceof Error ? error.message : String(error),
178
+ }, 'Failed to fetch schema');
179
+ return {
180
+ success: false,
181
+ spaceName,
182
+ error: error instanceof Error ? error : new Error(String(error)),
183
+ };
184
+ }
185
+ }
186
+ async function fetchSchemasWithCache(metadataList, hfToken, options) {
187
+ const results = new Map();
188
+ if (metadataList.length === 0) {
189
+ return results;
190
+ }
191
+ logger.debug({ count: metadataList.length }, 'Fetching schemas in parallel');
192
+ const schemaPromises = metadataList.map(metadata => fetchSchema(metadata, hfToken, options));
193
+ const schemaResults = await Promise.all(schemaPromises);
194
+ for (const result of schemaResults) {
195
+ if (result.success) {
196
+ results.set(result.spaceName, result.schema);
197
+ }
198
+ }
199
+ logger.debug({
200
+ requested: metadataList.length,
201
+ successful: results.size,
202
+ failed: metadataList.length - results.size,
203
+ }, 'Schema fetch complete');
204
+ return results;
205
+ }
206
+ function combineMetadataAndSchemas(metadataMap, schemaMap, skipSchemas) {
207
+ const results = [];
208
+ for (const [spaceName, metadata] of metadataMap) {
209
+ const schema = schemaMap.get(spaceName);
210
+ if (!skipSchemas && !schema) {
211
+ logger.debug({ spaceName }, 'Skipping space without schema');
212
+ continue;
213
+ }
214
+ const spaceInfo = {
215
+ _id: metadata._id,
216
+ name: metadata.name,
217
+ subdomain: metadata.subdomain,
218
+ emoji: metadata.emoji,
219
+ private: metadata.private,
220
+ sdk: metadata.sdk,
221
+ tools: schema?.tools || [],
222
+ runtime: metadata.runtime,
223
+ cached: false,
224
+ };
225
+ results.push(spaceInfo);
226
+ }
227
+ return results;
228
+ }
229
+ export async function getGradioSpaces(spaceNames, hfToken, options) {
230
+ if (spaceNames.length === 0) {
231
+ return [];
232
+ }
233
+ const startTime = Date.now();
234
+ logger.debug({
235
+ count: spaceNames.length,
236
+ spaces: spaceNames,
237
+ skipSchemas: options?.skipSchemas,
238
+ includeRuntime: options?.includeRuntime,
239
+ }, 'Starting Gradio space discovery');
240
+ const metadataMap = await fetchSpaceMetadataWithCache(spaceNames, hfToken, {
241
+ includeRuntime: options?.includeRuntime,
242
+ timeout: options?.timeout,
243
+ concurrency: CACHE_CONFIG.DISCOVERY_CONCURRENCY,
244
+ });
245
+ const gradioMetadata = Array.from(metadataMap.values()).filter(m => m.sdk === 'gradio' && m.subdomain);
246
+ logger.debug({
247
+ total: metadataMap.size,
248
+ gradio: gradioMetadata.length,
249
+ filtered: metadataMap.size - gradioMetadata.length,
250
+ }, 'Filtered Gradio spaces');
251
+ let schemaMap = new Map();
252
+ if (!options?.skipSchemas && gradioMetadata.length > 0) {
253
+ schemaMap = await fetchSchemasWithCache(gradioMetadata, hfToken, {
254
+ timeout: options?.timeout,
255
+ });
256
+ }
257
+ const results = combineMetadataAndSchemas(metadataMap, schemaMap, !!options?.skipSchemas);
258
+ const duration = Date.now() - startTime;
259
+ logger.info({
260
+ requested: spaceNames.length,
261
+ successful: results.length,
262
+ failed: spaceNames.length - results.length,
263
+ durationMs: duration,
264
+ skipSchemas: options?.skipSchemas,
265
+ }, 'Gradio space discovery complete');
266
+ logCacheStats();
267
+ return results;
268
+ }
269
+ export async function getGradioSpace(spaceName, hfToken, options) {
270
+ const spaces = await getGradioSpaces([spaceName], hfToken, options);
271
+ return spaces[0] || null;
272
+ }
273
+ //# sourceMappingURL=gradio-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradio-discovery.js","sourceRoot":"","sources":["../../../src/server/utils/gradio-discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { CallToolResultSchema } from '@modelcontextprotocol/sdk/types.js';
2
+ export interface ImageFilterOptions {
3
+ enabled: boolean;
4
+ toolName: string;
5
+ outwardFacingName: string;
6
+ }
7
+ export declare function stripImageContentFromResult(callResult: typeof CallToolResultSchema._type, { enabled, toolName, outwardFacingName }: ImageFilterOptions): typeof CallToolResultSchema._type;
8
+ export declare function extractUrlFromContent(content: unknown[]): string | undefined;
9
+ //# sourceMappingURL=gradio-result-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradio-result-processor.d.ts","sourceRoot":"","sources":["../../../src/server/utils/gradio-result-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAM/E,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAQD,wBAAgB,2BAA2B,CAC1C,UAAU,EAAE,OAAO,oBAAoB,CAAC,KAAK,EAC7C,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,kBAAkB,GAC1D,OAAO,oBAAoB,CAAC,KAAK,CAmCnC;AAOD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,SAAS,CAgC5E"}
@@ -0,0 +1,53 @@
1
+ import { logger } from './logger.js';
2
+ export function stripImageContentFromResult(callResult, { enabled, toolName, outwardFacingName }) {
3
+ if (!enabled) {
4
+ return callResult;
5
+ }
6
+ const content = callResult.content;
7
+ if (!Array.isArray(content) || content.length === 0) {
8
+ return callResult;
9
+ }
10
+ const filteredContent = content.filter((item) => {
11
+ if (!item || typeof item !== 'object') {
12
+ return true;
13
+ }
14
+ const candidate = item;
15
+ const typeValue = typeof candidate.type === 'string' ? candidate.type.toLowerCase() : undefined;
16
+ return typeValue !== 'image';
17
+ });
18
+ if (filteredContent.length === content.length) {
19
+ return callResult;
20
+ }
21
+ const removedCount = content.length - filteredContent.length;
22
+ logger.debug({ tool: toolName, outwardFacingName, removedCount }, 'Stripped image content from Gradio tool response');
23
+ if (filteredContent.length === 0) {
24
+ filteredContent.push({
25
+ type: 'text',
26
+ text: 'Image content omitted due to client configuration (no_image_content=true).',
27
+ });
28
+ }
29
+ return { ...callResult, content: filteredContent };
30
+ }
31
+ export function extractUrlFromContent(content) {
32
+ if (!Array.isArray(content) || content.length === 0) {
33
+ return undefined;
34
+ }
35
+ for (const item of content) {
36
+ if (!item || typeof item !== 'object') {
37
+ continue;
38
+ }
39
+ const candidate = item;
40
+ if (typeof candidate.url === 'string' && /^https?:\/\//i.test(candidate.url.trim())) {
41
+ return candidate.url.trim();
42
+ }
43
+ if (typeof candidate.text === 'string') {
44
+ let text = candidate.text.trim();
45
+ text = text.replace(/^image\s+url\s*:\s*/i, '');
46
+ if (/^https?:\/\//i.test(text)) {
47
+ return text;
48
+ }
49
+ }
50
+ }
51
+ return undefined;
52
+ }
53
+ //# sourceMappingURL=gradio-result-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradio-result-processor.js","sourceRoot":"","sources":["../../../src/server/utils/gradio-result-processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAiBrC,MAAM,UAAU,2BAA2B,CAC1C,UAA6C,EAC7C,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAsB;IAE5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,SAAS,GAAG,IAA0B,CAAC;QAC7C,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAChG,OAAO,SAAS,KAAK,OAAO,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,eAAe,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QAC/C,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAC7D,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,EAAE,kDAAkD,CAAC,CAAC;IAEtH,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,eAAe,CAAC,IAAI,CAAC;YACpB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,4EAA4E;SAClF,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AACpD,CAAC;AAOD,MAAM,UAAU,qBAAqB,CAAC,OAAkB;IACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrD,OAAO,SAAS,CAAC;IAClB,CAAC;IAGD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvC,SAAS;QACV,CAAC;QAED,MAAM,SAAS,GAAG,IAAsD,CAAC;QAGzE,IAAI,OAAO,SAAS,CAAC,GAAG,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACrF,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QAGD,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxC,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAGjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;YAEhD,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { CallToolResultSchema, type ServerNotification, type ServerRequest } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
3
+ export interface GradioToolCallOptions {
4
+ stripImageContent?: boolean;
5
+ toolName: string;
6
+ outwardFacingName: string;
7
+ sessionInfo?: {
8
+ clientSessionId?: string;
9
+ isAuthenticated?: boolean;
10
+ clientInfo?: {
11
+ name: string;
12
+ version: string;
13
+ };
14
+ };
15
+ gradioWidgetUri?: string;
16
+ spaceName?: string;
17
+ }
18
+ export declare function callGradioTool(sseUrl: string, toolName: string, parameters: Record<string, unknown>, hfToken: string | undefined, extra: RequestHandlerExtra<ServerRequest, ServerNotification> | undefined): Promise<typeof CallToolResultSchema._type>;
19
+ export declare function applyResultPostProcessing(result: typeof CallToolResultSchema._type, options: GradioToolCallOptions): typeof CallToolResultSchema._type;
20
+ //# sourceMappingURL=gradio-tool-caller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradio-tool-caller.d.ts","sourceRoot":"","sources":["../../../src/server/utils/gradio-tool-caller.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,8CAA8C,CAAC;AAOxG,MAAM,WAAW,qBAAqB;IAErC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,QAAQ,EAAE,MAAM,CAAC;IAEjB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,WAAW,CAAC,EAAE;QACb,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,UAAU,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC;IAEF,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAkED,wBAAsB,cAAc,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAAG,SAAS,GACvE,OAAO,CAAC,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAgD5C;AAUD,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,OAAO,oBAAoB,CAAC,KAAK,EACzC,OAAO,EAAE,qBAAqB,GAC5B,OAAO,oBAAoB,CAAC,KAAK,CAyBnC"}