@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.
@@ -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 var LogLevel;
@@ -31,6 +31,49 @@ export class Logger {
31
31
  this.logLevel = LogLevel.INFO;
32
32
  }
33
33
  }
34
+ /**
35
+ * 脱敏可能包含敏感信息的字符串(如 URL 中的 API key)
36
+ * @param text - 可能包含敏感信息的文本
37
+ * @returns 脱敏后的文本
38
+ */
39
+ sanitizeForLogging(text) {
40
+ if (!text || typeof text !== 'string') {
41
+ return text;
42
+ }
43
+ // 匹配 URL 中的敏感查询参数
44
+ // 支持: ?key=, ?api_key=, ?apikey=, ?token=, ?access_token=, ?api-key=
45
+ // 正确捕获: 第1组捕获 "key=" 前缀,第2组捕获值(不使用),替换为 "$1***"
46
+ return text.replace(/([?&](?:key|api_key|apikey|token|access_token|api-key)=)([^&\s'"\\]+)/gi, '$1***');
47
+ }
48
+ /**
49
+ * 递归脱敏对象中的所有字符串值
50
+ * @param obj - 要脱敏的对象
51
+ * @returns 脱敏后的对象
52
+ */
53
+ sanitizeObject(obj) {
54
+ if (!obj || typeof obj !== 'object') {
55
+ return obj;
56
+ }
57
+ if (Array.isArray(obj)) {
58
+ return obj.map(item => this.sanitizeObject(item));
59
+ }
60
+ const sanitized = {};
61
+ for (const key in obj) {
62
+ if (obj.hasOwnProperty(key)) {
63
+ const value = obj[key];
64
+ if (typeof value === 'string') {
65
+ sanitized[key] = this.sanitizeForLogging(value);
66
+ }
67
+ else if (typeof value === 'object' && value !== null) {
68
+ sanitized[key] = this.sanitizeObject(value);
69
+ }
70
+ else {
71
+ sanitized[key] = value;
72
+ }
73
+ }
74
+ }
75
+ return sanitized;
76
+ }
34
77
  static getInstance() {
35
78
  if (!Logger.instance) {
36
79
  Logger.instance = new Logger();
@@ -54,7 +97,7 @@ export class Logger {
54
97
  timestamp: new Date().toISOString(),
55
98
  level: 'DEBUG',
56
99
  message,
57
- ...meta
100
+ ...(meta ? this.sanitizeObject(meta) : {})
58
101
  });
59
102
  }
60
103
  }
@@ -67,7 +110,7 @@ export class Logger {
67
110
  timestamp: new Date().toISOString(),
68
111
  level: 'INFO',
69
112
  message,
70
- ...meta
113
+ ...(meta ? this.sanitizeObject(meta) : {})
71
114
  });
72
115
  }
73
116
  }
@@ -80,7 +123,7 @@ export class Logger {
80
123
  timestamp: new Date().toISOString(),
81
124
  level: 'WARN',
82
125
  message,
83
- ...meta
126
+ ...(meta ? this.sanitizeObject(meta) : {})
84
127
  });
85
128
  }
86
129
  }
@@ -93,18 +136,22 @@ export class Logger {
93
136
  timestamp: new Date().toISOString(),
94
137
  level: 'ERROR',
95
138
  message,
96
- ...meta
139
+ ...(meta ? this.sanitizeObject(meta) : {})
97
140
  };
98
141
  if (error) {
99
142
  if (error instanceof Error) {
100
- logEntry.error = {
143
+ const errorObj = {
101
144
  name: error.name,
102
- message: error.message,
103
- stack: error.stack
145
+ message: this.sanitizeForLogging(error.message)
104
146
  };
147
+ // Stack trace may not be available in all environments
148
+ if (error.stack) {
149
+ errorObj.stack = this.sanitizeForLogging(error.stack);
150
+ }
151
+ logEntry.error = errorObj;
105
152
  }
106
153
  else {
107
- logEntry.error = String(error);
154
+ logEntry.error = this.sanitizeForLogging(String(error));
108
155
  }
109
156
  }
110
157
  this.write(logEntry);
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,11 @@ export interface ModelResponseEnvelope {
13
13
  reasoning?: string;
14
14
  thinking?: string;
15
15
  rawResponse?: unknown;
16
+ usage?: {
17
+ promptTokens?: number;
18
+ completionTokens?: number;
19
+ totalTokens?: number;
20
+ };
16
21
  }
17
22
  /**
18
23
  * Type for extracting thinking content from raw model responses
@@ -31,4 +36,10 @@ export declare function extractOpenAIThinking(rawResponse: unknown): ModelRespon
31
36
  * Claude response format: { content: [{type: "text", text: "..."}], usage: {...} }
32
37
  */
33
38
  export declare function extractClaudeThinking(rawResponse: unknown): ModelResponseEnvelope;
39
+ /**
40
+ * Extracts thinking content from Gemini generateContent responses
41
+ * Gemini response format: { candidates: [{ content: { parts: [{ text: "..." }] } }] }
42
+ * Supports both official format (content.parts) and proxy format (output.parts)
43
+ */
44
+ export declare function extractGeminiThinking(rawResponse: unknown): ModelResponseEnvelope;
34
45
  //# sourceMappingURL=thinking-extractors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"thinking-extractors.d.ts","sourceRoot":"","sources":["../../src/utils/thinking-extractors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,OAAO,KAAK,qBAAqB,CAAC;AAEhF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB,CAkB9E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB,CAkBjF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB,CA4BjF"}
1
+ {"version":3,"file":"thinking-extractors.d.ts","sourceRoot":"","sources":["../../src/utils/thinking-extractors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,OAAO,KAAK,qBAAqB,CAAC;AAEhF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB,CAkB9E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB,CAkBjF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB,CA4BjF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB,CAgDjF"}
@@ -80,4 +80,51 @@ export function extractClaudeThinking(rawResponse) {
80
80
  };
81
81
  }
82
82
  }
83
+ /**
84
+ * Extracts thinking content from Gemini generateContent responses
85
+ * Gemini response format: { candidates: [{ content: { parts: [{ text: "..." }] } }] }
86
+ * Supports both official format (content.parts) and proxy format (output.parts)
87
+ */
88
+ export function extractGeminiThinking(rawResponse) {
89
+ try {
90
+ // @ts-ignore - Access response structure
91
+ const candidate = rawResponse?.candidates?.[0];
92
+ if (!candidate) {
93
+ logger.warn('No candidates in Gemini response');
94
+ return {
95
+ content: '',
96
+ rawResponse
97
+ };
98
+ }
99
+ // Support two response formats:
100
+ // Official: candidates[0].content.parts[].text
101
+ // Proxy: candidates[0].output.parts[].text
102
+ const parts = candidate?.content?.parts || candidate?.output?.parts || [];
103
+ // Extract all text parts
104
+ const textParts = parts
105
+ .filter((part) => part?.text)
106
+ .map((part) => part.text);
107
+ const content = textParts.join('\n\n');
108
+ // Map usage metadata
109
+ const usageMetadata = rawResponse?.usageMetadata || rawResponse?.usage;
110
+ const usage = usageMetadata ? {
111
+ promptTokens: usageMetadata.promptTokenCount || usageMetadata.inputTokens,
112
+ completionTokens: usageMetadata.candidatesTokenCount || usageMetadata.outputTokens,
113
+ totalTokens: usageMetadata.totalTokens || ((usageMetadata.promptTokenCount || usageMetadata.inputTokens || 0) +
114
+ (usageMetadata.candidatesTokenCount || usageMetadata.outputTokens || 0))
115
+ } : undefined;
116
+ return {
117
+ content,
118
+ rawResponse,
119
+ usage
120
+ };
121
+ }
122
+ catch (error) {
123
+ logger.warn('Failed to extract Gemini thinking content', { error });
124
+ return {
125
+ content: '',
126
+ rawResponse
127
+ };
128
+ }
129
+ }
83
130
  //# sourceMappingURL=thinking-extractors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thinking-extractors.js","sourceRoot":"","sources":["../../src/utils/thinking-extractors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAkBrC;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAoB;IACrD,IAAI,CAAC;QACH,yCAAyC;QACzC,MAAM,MAAM,GAAG,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;QAEtC,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE;YACtD,WAAW;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,OAAO;YACL,OAAO,EAAE,EAAE;YACX,WAAW;SACZ,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAoB;IACxD,IAAI,CAAC;QACH,yCAAyC;QACzC,MAAM,MAAM,GAAG,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;QAEtC,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;YAClC,WAAW;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,OAAO;YACL,OAAO,EAAE,EAAE;YACX,WAAW;SACZ,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAoB;IACxD,IAAI,CAAC;QACH,yCAAyC;QACzC,MAAM,aAAa,GAAG,WAAW,EAAE,OAAO,IAAI,EAAE,CAAC;QAEjD,WAAW;QACX,MAAM,SAAS,GAAG,aAAa;aAC5B,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC;aAC9C,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;aACtC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvC,gDAAgD;QAChD,+BAA+B;QAC/B,wBAAwB;QACxB,OAAO;YACL,OAAO;YACP,SAAS,EAAG,WAAmB,EAAE,QAAQ,IAAI,EAAE;YAC/C,WAAW;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,OAAO;YACL,OAAO,EAAE,EAAE;YACX,WAAW;SACZ,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"thinking-extractors.js","sourceRoot":"","sources":["../../src/utils/thinking-extractors.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"thinking-filter.d.ts","sourceRoot":"","sources":["../../src/utils/thinking-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EAIlB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,CAAC;AAsBzD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAOjE,CAAC;AAuCF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAiCrE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAgCrF"}
1
+ {"version":3,"file":"thinking-filter.d.ts","sourceRoot":"","sources":["../../src/utils/thinking-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EAKlB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,CAAC;AAsBzD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAQjE,CAAC;AAuCF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAiCrE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAgCrF"}
@@ -8,7 +8,7 @@
8
8
  * content before returning to MCP client.
9
9
  */
10
10
  import { logger } from './logger.js';
11
- import { extractGLMThinking, extractOpenAIThinking, extractClaudeThinking } from './thinking-extractors.js';
11
+ import { extractGLMThinking, extractOpenAIThinking, extractClaudeThinking, extractGeminiThinking } from './thinking-extractors.js';
12
12
  /**
13
13
  * Thinking content patterns to filter from text
14
14
  * These patterns match common thinking/reasoning content markers used by various models
@@ -38,6 +38,7 @@ export const THINKING_EXTRACTORS = {
38
38
  'siliconflow': extractOpenAIThinking,
39
39
  'openai': extractOpenAIThinking,
40
40
  'claude': extractClaudeThinking,
41
+ 'gemini': extractGeminiThinking,
41
42
  // Add more model extractors as needed
42
43
  };
43
44
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"thinking-filter.js","sourceRoot":"","sources":["../../src/utils/thinking-filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thinking-filter.js","sourceRoot":"","sources":["../../src/utils/thinking-filter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lutery/vision-mcp",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "MCP Server providing vision capabilities for LLMs via GLM-4.6V, SiliconFlow, and ModelScope",
5
5
  "type": "module",
6
6
  "bin": {
@@ -14,7 +14,7 @@
14
14
  "prepublishOnly": "npm run build",
15
15
  "test": "npm run build && node -r dotenv/config test/simple-test.js",
16
16
  "test:complex": "npm run build && node -r dotenv/config test/run-tests.js",
17
- "test:unit": "node test/thinking-filter.test.js && node test/data-url-parser.test.js && node test/thinking-extractors.test.js && node test/claude-adapter.test.js",
17
+ "test:unit": "node test/thinking-filter.test.js && node test/data-url-parser.test.js && node test/thinking-extractors.test.js && node test/claude-adapter.test.js && node test/gemini-adapter.test.js && node test/logger-sanitization.test.js",
18
18
  "test:integration": "npm run build && node -r dotenv/config test/simple-test.js"
19
19
  },
20
20
  "keywords": [