@lutery/vision-mcp 1.0.0 → 1.0.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.
@@ -0,0 +1,406 @@
1
+ /**
2
+ * Gemini Adapter
3
+ *
4
+ * @description Gemini generateContent API 适配器实现,支持 Google Gemini 多模态视觉模型
5
+ * @see https://ai.google.dev/api/rest/v1beta/models/generateContent
6
+ */
7
+ import { BaseVisionModelAdapter } from './base-adapter.js';
8
+ import { ModelAPIError, ModelConfigError } from '../utils/errors.js';
9
+ import { logger } from '../utils/logger.js';
10
+ import { parseDataUrl } from '../utils/data-url-parser.js';
11
+ import { filterThinkingContent } from '../utils/thinking-filter.js';
12
+ // Supported MIME types for images
13
+ const SUPPORTED_IMAGE_TYPES = new Set(['image/jpeg', 'image/jpg', 'image/png', 'image/webp']);
14
+ const MAX_DOWNLOAD_SIZE = 10 * 1024 * 1024; // 10MB
15
+ const DOWNLOAD_TIMEOUT = 30000; // 30 seconds
16
+ export class GeminiAdapter extends BaseVisionModelAdapter {
17
+ options;
18
+ constructor(config, options = {}) {
19
+ super(config);
20
+ if (config.type !== 'gemini') {
21
+ throw new ModelConfigError('Invalid model type. Expected: gemini', { expected: 'gemini', received: config.type });
22
+ }
23
+ this.options = {
24
+ maxTokens: options.maxTokens || 2048,
25
+ apiVersion: options.apiVersion ||
26
+ process.env.VISION_GEMINI_API_VERSION ||
27
+ 'v1beta',
28
+ authMode: options.authMode ||
29
+ process.env.VISION_GEMINI_AUTH_MODE ||
30
+ 'bearer',
31
+ imagePartMode: options.imagePartMode ||
32
+ process.env.VISION_GEMINI_IMAGE_PART_MODE ||
33
+ 'inline_data'
34
+ };
35
+ logger.info('Initialized Gemini adapter', {
36
+ model: config.name,
37
+ baseUrl: config.baseUrl,
38
+ apiVersion: this.options.apiVersion,
39
+ authMode: this.options.authMode,
40
+ imagePartMode: this.options.imagePartMode
41
+ });
42
+ }
43
+ async analyze(imageData, prompt) {
44
+ logger.logRequest('Analyzing image with Gemini', {
45
+ modelType: 'gemini',
46
+ model: this.config.name,
47
+ imageLength: imageData.length
48
+ });
49
+ try {
50
+ return await this.withRetry(async (signal) => {
51
+ const response = await this.callGeminiAPI(imageData, prompt, signal);
52
+ logger.logRequest('Gemini analysis completed', {
53
+ modelType: 'gemini',
54
+ model: this.config.name,
55
+ responseLength: response.content.length
56
+ });
57
+ return response.content;
58
+ });
59
+ }
60
+ catch (error) {
61
+ logger.error('Gemini analysis failed', error);
62
+ throw error;
63
+ }
64
+ }
65
+ async analyzeWithResponse(imageData, prompt) {
66
+ logger.logRequest('Analyzing image with Gemini (full response)', {
67
+ modelType: 'gemini',
68
+ model: this.config.name,
69
+ imageLength: imageData.length
70
+ });
71
+ try {
72
+ return await this.withRetry(async (signal) => {
73
+ const response = await this.callGeminiAPI(imageData, prompt, signal);
74
+ logger.logRequest('Gemini analysis completed', {
75
+ modelType: 'gemini',
76
+ model: this.config.name,
77
+ responseLength: response.content.length,
78
+ usage: response.usage
79
+ });
80
+ return response;
81
+ });
82
+ }
83
+ catch (error) {
84
+ logger.error('Gemini analysis failed', error);
85
+ throw error;
86
+ }
87
+ }
88
+ async callGeminiAPI(imageData, prompt, signal) {
89
+ const apiUrl = this.buildApiUrl();
90
+ const requestBody = await this.buildRequest(imageData, prompt);
91
+ const headers = this.buildAuthHeaders();
92
+ logger.debug('Calling Gemini generateContent API', {
93
+ endpoint: this.sanitizeUrl(apiUrl),
94
+ model: this.config.name,
95
+ hasImage: !!imageData,
96
+ imagePartMode: this.options.imagePartMode
97
+ });
98
+ try {
99
+ const response = await fetch(apiUrl, {
100
+ method: 'POST',
101
+ headers: {
102
+ 'Content-Type': 'application/json',
103
+ ...headers
104
+ },
105
+ body: JSON.stringify(requestBody),
106
+ signal
107
+ });
108
+ // Handle error responses
109
+ if (!response.ok) {
110
+ await this.handleErrorResponse(response);
111
+ }
112
+ // Parse response
113
+ const responseData = await this.parseResponseData(response);
114
+ // Normalize response
115
+ return this.normalizeResponse(responseData);
116
+ }
117
+ catch (error) {
118
+ // Re-throw if it's our error
119
+ if (error instanceof ModelAPIError) {
120
+ throw error;
121
+ }
122
+ // Handle AbortError
123
+ if (error instanceof Error && error.name === 'AbortError') {
124
+ throw new ModelAPIError('Request timed out', {
125
+ timeout: this.config.timeout || 60000,
126
+ reason: 'API request exceeded timeout'
127
+ });
128
+ }
129
+ throw error;
130
+ }
131
+ }
132
+ /**
133
+ * 构建 API URL
134
+ * Format: {baseUrl}/{apiVersion}/models/{model}:generateContent
135
+ */
136
+ buildApiUrl() {
137
+ let baseUrl = this.config.baseUrl.replace(/\/$/, '');
138
+ // Build URL based on auth mode
139
+ let url = `${baseUrl}/${this.options.apiVersion}/models/${this.config.name}:generateContent`;
140
+ // For query auth mode, append API key to URL
141
+ if (this.options.authMode === 'query') {
142
+ url += `?key=${this.config.apiKey}`;
143
+ }
144
+ return url;
145
+ }
146
+ /**
147
+ * 构建认证头
148
+ */
149
+ buildAuthHeaders() {
150
+ if (this.options.authMode === 'bearer') {
151
+ return {
152
+ 'Authorization': `Bearer ${this.config.apiKey}`
153
+ };
154
+ }
155
+ else if (this.options.authMode === 'x-goog') {
156
+ return {
157
+ 'x-goog-api-key': this.config.apiKey
158
+ };
159
+ }
160
+ // query mode - no headers needed
161
+ return {};
162
+ }
163
+ /**
164
+ * 构建请求体
165
+ */
166
+ async buildRequest(imageData, prompt) {
167
+ const imagePart = await this.buildImagePart(imageData);
168
+ return {
169
+ contents: [
170
+ {
171
+ role: 'user',
172
+ parts: [
173
+ imagePart,
174
+ { text: prompt }
175
+ ]
176
+ }
177
+ ],
178
+ generationConfig: {
179
+ maxOutputTokens: this.options.maxTokens
180
+ }
181
+ };
182
+ }
183
+ /**
184
+ * 构建图片 part
185
+ * 支持三种输入格式:
186
+ * 1. HTTP(S) URL - 下载并转换为 base64
187
+ * 2. Data URL - 直接解析
188
+ * 3. Base64 字符串 - 假设为图片
189
+ */
190
+ async buildImagePart(imageData) {
191
+ // Check if it's an HTTP(S) URL
192
+ if (imageData.startsWith('http://') || imageData.startsWith('https://')) {
193
+ logger.debug('Image is a URL, downloading...', { url: imageData });
194
+ const { mimeType, data } = await this.downloadImageAsBase64(imageData);
195
+ return this.createInlineDataPart(mimeType, data);
196
+ }
197
+ // Check if it's a data URL
198
+ if (imageData.startsWith('data:')) {
199
+ const parsed = parseDataUrl(imageData);
200
+ return this.createInlineDataPart(parsed.mimeType, parsed.data);
201
+ }
202
+ // Assume it's already base64 data
203
+ // Default to PNG if no type info
204
+ return this.createInlineDataPart('image/png', imageData);
205
+ }
206
+ /**
207
+ * 创建 inline_data part
208
+ */
209
+ createInlineDataPart(mimeType, data) {
210
+ if (this.options.imagePartMode === 'inline_bytes') {
211
+ // Proxy/legacy format
212
+ return {
213
+ mime_type: mimeType,
214
+ inline_bytes: data
215
+ };
216
+ }
217
+ // Official format
218
+ return {
219
+ inline_data: {
220
+ mime_type: mimeType,
221
+ data: data
222
+ }
223
+ };
224
+ }
225
+ /**
226
+ * 脱敏 URL 用于日志记录(移除敏感的查询参数)
227
+ * @param url - 原始 URL
228
+ * @returns 脱敏后的 URL(query 模式下的 key 会被替换为 ***)
229
+ */
230
+ sanitizeUrl(url) {
231
+ if (this.options.authMode === 'query') {
232
+ return url.replace(/\?key=([^&\s]+)/, '?key=***');
233
+ }
234
+ return url;
235
+ }
236
+ /**
237
+ * 下载图片并转换为 base64
238
+ * Gemini 不支持直接的 URL 输入,必须先下载
239
+ */
240
+ async downloadImageAsBase64(url) {
241
+ logger.debug('Downloading image from URL', { url });
242
+ try {
243
+ const response = await fetch(url, {
244
+ method: 'GET',
245
+ signal: AbortSignal.timeout(DOWNLOAD_TIMEOUT)
246
+ });
247
+ if (!response.ok) {
248
+ throw new ModelAPIError(`Failed to download image: ${response.status} ${response.statusText}`, { url, status: response.status });
249
+ }
250
+ // Check content length
251
+ const contentLength = response.headers.get('content-length');
252
+ if (contentLength && parseInt(contentLength) > MAX_DOWNLOAD_SIZE) {
253
+ throw new ModelAPIError(`Image too large: ${contentLength} bytes (max: ${MAX_DOWNLOAD_SIZE})`, { url, size: contentLength, maxSize: MAX_DOWNLOAD_SIZE });
254
+ }
255
+ // Get MIME type from Content-Type header
256
+ const contentType = response.headers.get('content-type') || 'image/png';
257
+ const mimeType = contentType.split(';')[0].trim();
258
+ // Validate MIME type
259
+ if (!SUPPORTED_IMAGE_TYPES.has(mimeType)) {
260
+ throw new ModelAPIError(`Unsupported image type: ${mimeType}. Supported types: ${Array.from(SUPPORTED_IMAGE_TYPES).join(', ')}`, { url, mimeType, supportedTypes: Array.from(SUPPORTED_IMAGE_TYPES) });
261
+ }
262
+ // Read and convert to base64
263
+ const arrayBuffer = await response.arrayBuffer();
264
+ const buffer = Buffer.from(arrayBuffer);
265
+ // Check size after download
266
+ if (buffer.length > MAX_DOWNLOAD_SIZE) {
267
+ throw new ModelAPIError(`Downloaded image too large: ${buffer.length} bytes (max: ${MAX_DOWNLOAD_SIZE})`, { url, size: buffer.length, maxSize: MAX_DOWNLOAD_SIZE });
268
+ }
269
+ const base64 = buffer.toString('base64');
270
+ logger.debug('Image downloaded successfully', {
271
+ url,
272
+ mimeType,
273
+ size: buffer.length
274
+ });
275
+ return { mimeType, data: base64 };
276
+ }
277
+ catch (error) {
278
+ if (error instanceof ModelAPIError) {
279
+ throw error;
280
+ }
281
+ throw new ModelAPIError(`Failed to download image from URL: ${url}`, { url, error: error instanceof Error ? error.message : String(error) }, error instanceof Error ? error : undefined);
282
+ }
283
+ }
284
+ /**
285
+ * 处理错误响应
286
+ */
287
+ async handleErrorResponse(response) {
288
+ const status = response.status;
289
+ let errorDetails = { status };
290
+ try {
291
+ const errorText = await response.text();
292
+ try {
293
+ const errorJson = JSON.parse(errorText);
294
+ errorDetails.error = errorJson;
295
+ }
296
+ catch {
297
+ errorDetails.errorText = errorText.slice(0, 500);
298
+ }
299
+ }
300
+ catch {
301
+ // Unable to read response body
302
+ }
303
+ // Special handling for 429
304
+ if (status === 429) {
305
+ const retryAfter = response.headers.get('retry-after');
306
+ throw new ModelAPIError(`Rate limit exceeded (429).${retryAfter ? ` Retry after ${retryAfter}s` : ''}`, errorDetails);
307
+ }
308
+ throw new ModelAPIError(`Gemini API request failed: ${status}`, errorDetails);
309
+ }
310
+ /**
311
+ * 解析响应数据
312
+ */
313
+ async parseResponseData(response) {
314
+ const contentType = response.headers.get('content-type');
315
+ try {
316
+ const rawText = await response.text();
317
+ try {
318
+ return JSON.parse(rawText);
319
+ }
320
+ catch (parseError) {
321
+ const bodyPreview = rawText.length > 500
322
+ ? `${rawText.slice(0, 500)}... (truncated, total length: ${rawText.length})`
323
+ : rawText;
324
+ logger.error('Failed to parse Gemini response as JSON', parseError, {
325
+ contentType,
326
+ bodyLength: rawText.length,
327
+ bodyPreview
328
+ });
329
+ throw new ModelAPIError('Failed to parse Gemini response as JSON', {
330
+ contentType,
331
+ bodyLength: rawText.length,
332
+ bodyPreview
333
+ }, parseError);
334
+ }
335
+ }
336
+ catch (error) {
337
+ if (error instanceof ModelAPIError) {
338
+ throw error;
339
+ }
340
+ throw new ModelAPIError('Failed to read Gemini response', { contentType }, error);
341
+ }
342
+ }
343
+ /**
344
+ * 归一化 Gemini 响应为 VisionModelResponse
345
+ * 支持两种响应格式:
346
+ * 1. 官方格式: candidates[0].content.parts[].text
347
+ * 2. 代理格式: candidates[0].output.parts[].text
348
+ */
349
+ normalizeResponse(geminiResponse) {
350
+ const candidate = geminiResponse?.candidates?.[0];
351
+ if (!candidate) {
352
+ throw new ModelAPIError('No candidates in Gemini response', {
353
+ response: geminiResponse
354
+ });
355
+ }
356
+ // Try both response formats
357
+ const parts = candidate?.content?.parts || candidate?.output?.parts || [];
358
+ if (!parts || parts.length === 0) {
359
+ throw new ModelAPIError('No parts in Gemini response', {
360
+ response: geminiResponse
361
+ });
362
+ }
363
+ // Extract all text parts
364
+ const textParts = parts
365
+ .filter((part) => part?.text)
366
+ .map((part) => part.text);
367
+ const content = textParts.join('\n\n');
368
+ if (!content) {
369
+ throw new ModelAPIError('Empty content in Gemini response', {
370
+ response: geminiResponse
371
+ });
372
+ }
373
+ // Filter thinking/reasoning content
374
+ let filteredContent;
375
+ try {
376
+ filteredContent = filterThinkingContent(geminiResponse, 'gemini');
377
+ if (filteredContent.length < content.length) {
378
+ logger.debug('Filtered thinking content from Gemini response', {
379
+ originalLength: content.length,
380
+ filteredLength: filteredContent.length,
381
+ reduction: content.length - filteredContent.length
382
+ });
383
+ }
384
+ }
385
+ catch (error) {
386
+ logger.warn('Failed to filter thinking content from Gemini response', {
387
+ error: error instanceof Error ? error.message : error
388
+ });
389
+ filteredContent = content;
390
+ }
391
+ // Map usage metadata
392
+ const usageMetadata = geminiResponse?.usageMetadata || geminiResponse?.usage;
393
+ const usage = usageMetadata ? {
394
+ promptTokens: usageMetadata.promptTokenCount || usageMetadata.inputTokens,
395
+ completionTokens: usageMetadata.candidatesTokenCount || usageMetadata.outputTokens,
396
+ totalTokens: usageMetadata.totalTokens || ((usageMetadata.promptTokenCount || usageMetadata.inputTokens || 0) +
397
+ (usageMetadata.candidatesTokenCount || usageMetadata.outputTokens || 0))
398
+ } : undefined;
399
+ return {
400
+ content: filteredContent,
401
+ usage,
402
+ model: geminiResponse?.modelVersion || this.config.name
403
+ };
404
+ }
405
+ }
406
+ //# sourceMappingURL=gemini-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-adapter.js","sourceRoot":"","sources":["../../src/adapters/gemini-adapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider-registry.d.ts","sourceRoot":"","sources":["../../src/providers/provider-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAoE,MAAM,iCAAiC,CAAC;AAOtI;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,cAAc;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,mBAAmB;IACnB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,CAAC;IACtD,cAAc;IACd,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,kBAAkB,CAAC;IAC3D,mBAAmB;IACnB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,oBAAoB;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,cAAM,gBAAgB;IACpB,OAAO,CAAC,SAAS,CAAyC;IAE1D;;OAEG;IACI,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAInD;;OAEG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIxD;;OAEG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACI,iBAAiB,IAAI,MAAM,EAAE;CAGrC;AAGD,eAAO,MAAM,QAAQ,kBAAyB,CAAC"}
1
+ {"version":3,"file":"provider-registry.d.ts","sourceRoot":"","sources":["../../src/providers/provider-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAA2F,MAAM,iCAAiC,CAAC;AAQ7J;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,cAAc;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,mBAAmB;IACnB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,CAAC;IACtD,cAAc;IACd,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,kBAAkB,CAAC;IAC3D,mBAAmB;IACnB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,oBAAoB;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,cAAM,gBAAgB;IACpB,OAAO,CAAC,SAAS,CAAyC;IAE1D;;OAEG;IACI,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAInD;;OAEG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAIxD;;OAEG;IACI,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACI,iBAAiB,IAAI,MAAM,EAAE;CAGrC;AAGD,eAAO,MAAM,QAAQ,kBAAyB,CAAC"}
@@ -4,12 +4,13 @@
4
4
  * @description 提供方注册表,集中管理所有支持的模型提供商
5
5
  * 添加新提供商只需在这里注册,无需修改其他文件
6
6
  */
7
- import { extractGLMThinking, extractOpenAIThinking, extractClaudeThinking } from '../utils/thinking-extractors.js';
7
+ import { extractGLMThinking, extractOpenAIThinking, extractClaudeThinking, extractGeminiThinking } from '../utils/thinking-extractors.js';
8
8
  import { GLM4VisionAdapter } from '../adapters/glm-adapter.js';
9
9
  import { SiliconFlowAdapter } from '../adapters/siliconflow-adapter.js';
10
10
  import { ModelScopeAdapter } from '../adapters/modelscope-adapter.js';
11
11
  import { OpenAIAdapter } from '../adapters/openai-adapter.js';
12
12
  import { ClaudeAdapter } from '../adapters/claude-adapter.js';
13
+ import { GeminiAdapter } from '../adapters/gemini-adapter.js';
13
14
  /**
14
15
  * 提供商注册表
15
16
  */
@@ -170,4 +171,25 @@ registry.register({
170
171
  thinkingExtractor: extractClaudeThinking,
171
172
  enableThinking: false
172
173
  });
174
+ // Gemini (Google generateContent API) Provider
175
+ registry.register({
176
+ type: 'gemini',
177
+ displayName: 'Google Gemini',
178
+ defaults: {
179
+ baseUrl: 'https://api.gptsapi.net',
180
+ modelName: 'gemini-2.0-flash-exp',
181
+ timeout: 60000,
182
+ maxRetries: 2
183
+ },
184
+ validateApiKey: (apiKey) => {
185
+ // Gemini API key validation - should be at least 10 characters
186
+ if (apiKey.length < 10) {
187
+ return 'Gemini API Key should be at least 10 characters';
188
+ }
189
+ return true;
190
+ },
191
+ createAdapter: (config) => new GeminiAdapter(config),
192
+ thinkingExtractor: extractGeminiThinking,
193
+ enableThinking: false
194
+ });
173
195
  //# sourceMappingURL=provider-registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-registry.js","sourceRoot":"","sources":["../../src/providers/provider-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-registry.js","sourceRoot":"","sources":["../../src/providers/provider-registry.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,18 @@ export declare class ImageLoadError extends VisionMCPError {
44
44
  }
45
45
  export declare class ModelAPIError extends VisionMCPError {
46
46
  constructor(message: string, details?: Record<string, any>, cause?: unknown);
47
+ /**
48
+ * 递归脱敏 details 中的 URL(移除 query 参数中的敏感信息如 API key)
49
+ * @param details - 原始 details 对象
50
+ * @returns 脱敏后的 details 对象
51
+ */
52
+ private static sanitizeDetails;
53
+ /**
54
+ * 脱敏字符串中的 URL(移除 query 参数中的敏感信息)
55
+ * @param text - 可能包含 URL 的文本
56
+ * @returns 脱敏后的文本
57
+ */
58
+ private static sanitizeUrlInString;
47
59
  }
48
60
  export declare class TimeoutError extends VisionMCPError {
49
61
  constructor(message: string, details?: Record<string, any>, cause?: unknown);
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oBAAY,kBAAkB;IAC5B,aAAa,kBAAkB;IAC/B,kBAAkB,uBAAuB;IACzC,gBAAgB,qBAAqB;IACrC,eAAe,oBAAoB;IACnC,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,IAAI,EAAE,kBAAkB,CAAC;IACzC,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9C,SAAgB,SAAS,EAAE,IAAI,CAAC;gBAEpB,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,qBAAqB;IAiBpE,MAAM;;;;;;;;;;CAaP;AAED,qBAAa,iBAAkB,SAAQ,cAAc;gBACvC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO;CAS5E;AAED,qBAAa,gBAAiB,SAAQ,cAAc;gBACtC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO;CAS5E;AAED,qBAAa,cAAe,SAAQ,cAAc;gBACpC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO;CAS5E;AAED,qBAAa,aAAc,SAAQ,cAAc;gBACnC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO;CAS5E;AAED,qBAAa,YAAa,SAAQ,cAAc;gBAClC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO;CAS5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CA+BjF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc;;;;;;EAUvD"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oBAAY,kBAAkB;IAC5B,aAAa,kBAAkB;IAC/B,kBAAkB,uBAAuB;IACzC,gBAAgB,qBAAqB;IACrC,eAAe,oBAAoB;IACnC,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,IAAI,EAAE,kBAAkB,CAAC;IACzC,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9C,SAAgB,SAAS,EAAE,IAAI,CAAC;gBAEpB,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,qBAAqB;IAiBpE,MAAM;;;;;;;;;;CAaP;AAED,qBAAa,iBAAkB,SAAQ,cAAc;gBACvC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO;CAS5E;AAED,qBAAa,gBAAiB,SAAQ,cAAc;gBACtC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO;CAS5E;AAED,qBAAa,cAAe,SAAQ,cAAc;gBACpC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO;CAS5E;AAED,qBAAa,aAAc,SAAQ,cAAc;gBACnC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO;IAU3E;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IA4B9B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;CAWnC;AAED,qBAAa,YAAa,SAAQ,cAAc;gBAClC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO;CAS5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CA+BjF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc;;;;;;EAUvD"}
@@ -81,11 +81,54 @@ export class ModelAPIError extends VisionMCPError {
81
81
  super({
82
82
  message: `Model API error: ${message}`,
83
83
  code: VisionMCPErrorCode.MODEL_API_ERROR,
84
- details,
84
+ details: ModelAPIError.sanitizeDetails(details || {}),
85
85
  cause
86
86
  });
87
87
  this.name = 'ModelAPIError';
88
88
  }
89
+ /**
90
+ * 递归脱敏 details 中的 URL(移除 query 参数中的敏感信息如 API key)
91
+ * @param details - 原始 details 对象
92
+ * @returns 脱敏后的 details 对象
93
+ */
94
+ static sanitizeDetails(details) {
95
+ const sanitized = {};
96
+ for (const key in details) {
97
+ const value = details[key];
98
+ if (typeof value === 'string') {
99
+ // 脱敏 URL 中的 query 参数(如 ?key=xxx)
100
+ sanitized[key] = ModelAPIError.sanitizeUrlInString(value);
101
+ }
102
+ else if (Array.isArray(value)) {
103
+ // 递归处理数组
104
+ sanitized[key] = value.map(item => typeof item === 'string' ? ModelAPIError.sanitizeUrlInString(item) :
105
+ typeof item === 'object' && item !== null ? ModelAPIError.sanitizeDetails(item) :
106
+ item);
107
+ }
108
+ else if (typeof value === 'object' && value !== null) {
109
+ // 递归处理嵌套对象
110
+ sanitized[key] = ModelAPIError.sanitizeDetails(value);
111
+ }
112
+ else {
113
+ // 保留其他类型不变(布尔值、数字等)
114
+ sanitized[key] = value;
115
+ }
116
+ }
117
+ return sanitized;
118
+ }
119
+ /**
120
+ * 脱敏字符串中的 URL(移除 query 参数中的敏感信息)
121
+ * @param text - 可能包含 URL 的文本
122
+ * @returns 脱敏后的文本
123
+ */
124
+ static sanitizeUrlInString(text) {
125
+ // 匹配 URL 中的 ?key= 参数(匹配各种常见的 API key 参数名)
126
+ // 支持: ?key=, ?api_key=, ?apikey=, ?token=, ?access_token=
127
+ return text.replace(/[?&](?:key|api_key|apikey|token|access_token|api-key|apikey)=([^&\s]+)/gi, (match, param, offset, string) => {
128
+ const separator = match[0] === '?' ? '?' : '&';
129
+ return `${separator}${match.slice(1).split('=')[0]}=***`;
130
+ });
131
+ }
89
132
  }
90
133
  export class TimeoutError extends VisionMCPError {
91
134
  constructor(message, details, cause) {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Logger Utility
3
3
  *
4
- * @description 统一的日志工具,确保只使用 stdout 输出
4
+ * @description 统一的日志工具,确保只使用 stderr 输出
5
5
  * 符合 MCP 协议要求:stdout 用于 JSON-RPC 通信,日志使用 stderr
6
6
  */
7
7
  export declare enum LogLevel {
@@ -23,6 +23,18 @@ export declare class Logger {
23
23
  private static instance;
24
24
  private logLevel;
25
25
  private constructor();
26
+ /**
27
+ * 脱敏可能包含敏感信息的字符串(如 URL 中的 API key)
28
+ * @param text - 可能包含敏感信息的文本
29
+ * @returns 脱敏后的文本
30
+ */
31
+ private sanitizeForLogging;
32
+ /**
33
+ * 递归脱敏对象中的所有字符串值
34
+ * @param obj - 要脱敏的对象
35
+ * @returns 脱敏后的对象
36
+ */
37
+ private sanitizeObject;
26
38
  static getInstance(): Logger;
27
39
  /**
28
40
  * 写入日志到 stderr
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,OAAO,QAAQ,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO;WAkBO,WAAW,IAAI,MAAM;IAOnC;;;OAGG;IACH,OAAO,CAAC,KAAK;IAKb;;OAEG;IACI,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAW/D;;OAEG;IACI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAW9D;;OAEG;IACI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAW9D;;OAEG;IACI,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAyBxF;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,GAAG,IAAI;CAUT;AAGD,eAAO,MAAM,MAAM,QAAuB,CAAC;AAE3C;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,sBAgC3F"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,OAAO,QAAQ,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO;IAkBP;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;;;OAIG;IACH,OAAO,CAAC,cAAc;WA0BR,WAAW,IAAI,MAAM;IAOnC;;;OAGG;IACH,OAAO,CAAC,KAAK;IAKb;;OAEG;IACI,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAW/D;;OAEG;IACI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAW9D;;OAEG;IACI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAW9D;;OAEG;IACI,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IA6BxF;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,GAAG,IAAI;CAUT;AAGD,eAAO,MAAM,MAAM,QAAuB,CAAC;AAE3C;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,sBAgC3F"}