ai-vision-mcp 0.0.4 → 0.0.5-dev.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 (76) hide show
  1. package/README.md +102 -132
  2. package/dist/cli/commands/analyze-image.d.ts +3 -0
  3. package/dist/cli/commands/analyze-image.d.ts.map +1 -0
  4. package/dist/cli/commands/analyze-image.js +30 -0
  5. package/dist/cli/commands/analyze-image.js.map +1 -0
  6. package/dist/cli/commands/analyze-video.d.ts +3 -0
  7. package/dist/cli/commands/analyze-video.d.ts.map +1 -0
  8. package/dist/cli/commands/analyze-video.js +30 -0
  9. package/dist/cli/commands/analyze-video.js.map +1 -0
  10. package/dist/cli/commands/compare-images.d.ts +3 -0
  11. package/dist/cli/commands/compare-images.d.ts.map +1 -0
  12. package/dist/cli/commands/compare-images.js +30 -0
  13. package/dist/cli/commands/compare-images.js.map +1 -0
  14. package/dist/cli/commands/detect-objects.d.ts +3 -0
  15. package/dist/cli/commands/detect-objects.d.ts.map +1 -0
  16. package/dist/cli/commands/detect-objects.js +31 -0
  17. package/dist/cli/commands/detect-objects.js.map +1 -0
  18. package/dist/cli/index.d.ts +3 -0
  19. package/dist/cli/index.d.ts.map +1 -0
  20. package/dist/cli/index.js +63 -0
  21. package/dist/cli/index.js.map +1 -0
  22. package/dist/cli/utils.d.ts +15 -0
  23. package/dist/cli/utils.d.ts.map +1 -0
  24. package/dist/cli/utils.js +69 -0
  25. package/dist/cli/utils.js.map +1 -0
  26. package/dist/file-upload/gemini/GeminiFilesAPI.js +1 -1
  27. package/dist/file-upload/gemini/GeminiFilesAPI.js.map +1 -1
  28. package/dist/file-upload/vertexai/VertexAIStorageStrategy.js +1 -1
  29. package/dist/file-upload/vertexai/VertexAIStorageStrategy.js.map +1 -1
  30. package/dist/index.d.ts +1 -1
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +17 -1
  33. package/dist/index.js.map +1 -1
  34. package/dist/providers/base/VisionProvider.d.ts +9 -0
  35. package/dist/providers/base/VisionProvider.d.ts.map +1 -1
  36. package/dist/providers/base/VisionProvider.js +67 -12
  37. package/dist/providers/base/VisionProvider.js.map +1 -1
  38. package/dist/providers/gemini/GeminiProvider.d.ts +1 -0
  39. package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -1
  40. package/dist/providers/gemini/GeminiProvider.js +60 -9
  41. package/dist/providers/gemini/GeminiProvider.js.map +1 -1
  42. package/dist/providers/vertexai/VertexAIProvider.d.ts.map +1 -1
  43. package/dist/providers/vertexai/VertexAIProvider.js +11 -11
  44. package/dist/providers/vertexai/VertexAIProvider.js.map +1 -1
  45. package/dist/server.d.ts +1 -1
  46. package/dist/server.d.ts.map +1 -1
  47. package/dist/server.js +141 -53
  48. package/dist/server.js.map +1 -1
  49. package/dist/services/ConfigService.d.ts +3 -0
  50. package/dist/services/ConfigService.d.ts.map +1 -1
  51. package/dist/services/ConfigService.js +44 -0
  52. package/dist/services/ConfigService.js.map +1 -1
  53. package/dist/services/FileService.d.ts.map +1 -1
  54. package/dist/services/FileService.js +10 -10
  55. package/dist/services/FileService.js.map +1 -1
  56. package/dist/services/LoggerService.d.ts +19 -0
  57. package/dist/services/LoggerService.d.ts.map +1 -0
  58. package/dist/services/LoggerService.js +74 -0
  59. package/dist/services/LoggerService.js.map +1 -0
  60. package/dist/tools/analyze_image.js +3 -3
  61. package/dist/tools/analyze_image.js.map +1 -1
  62. package/dist/tools/compare_images.js +3 -3
  63. package/dist/tools/compare_images.js.map +1 -1
  64. package/dist/tools/detect_objects_in_image.d.ts.map +1 -1
  65. package/dist/tools/detect_objects_in_image.js +89 -67
  66. package/dist/tools/detect_objects_in_image.js.map +1 -1
  67. package/dist/types/Config.d.ts +2 -2
  68. package/dist/types/Config.d.ts.map +1 -1
  69. package/dist/utils/imageAnnotator.d.ts +4 -2
  70. package/dist/utils/imageAnnotator.d.ts.map +1 -1
  71. package/dist/utils/imageAnnotator.js +80 -89
  72. package/dist/utils/imageAnnotator.js.map +1 -1
  73. package/dist/utils/validation.d.ts +9 -9
  74. package/dist/utils/validation.js +1 -1
  75. package/dist/utils/validation.js.map +1 -1
  76. package/package.json +23 -14
@@ -1 +1 @@
1
- {"version":3,"file":"FileService.d.ts","sourceRoot":"","sources":["../../src/services/FileService.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOnD,qBAAa,WAAW;IACtB,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAgB;gBAGnC,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,OAAO,GAAG,OAAO,EACvB,cAAc,EAAE,cAAc;IAU1B,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgDvD,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBvD,UAAU,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IA4BZ,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAQnC,YAAY;YAkEZ,iBAAiB;YAmBjB,eAAe;IA6B7B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,WAAW;IA0CnB,OAAO,CAAC,qBAAqB;IAyD7B,OAAO,CAAC,gBAAgB;IAMxB,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI7C,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI7C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAuBlD"}
1
+ {"version":3,"file":"FileService.d.ts","sourceRoot":"","sources":["../../src/services/FileService.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOnD,qBAAa,WAAW;IACtB,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAgB;gBAGnC,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,OAAO,GAAG,OAAO,EACvB,cAAc,EAAE,cAAc;IAU1B,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgDvD,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBvD,UAAU,CACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IA4BZ,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAQnC,YAAY;YAkEZ,iBAAiB;YAmBjB,eAAe;IA0B7B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,WAAW;IA0CnB,OAAO,CAAC,qBAAqB;IAyD7B,OAAO,CAAC,gBAAgB;IAMxB,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI7C,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI7C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAuBlD"}
@@ -11,27 +11,27 @@ export class FileService {
11
11
  this.uploadStrategy = FileUploadFactory.createStrategy(configService.getConfig(), type, visionProvider);
12
12
  }
13
13
  async handleImageSource(imageSource) {
14
- console.log(`[FileService] handleImageSource input: ${imageSource.substring(0, 100)}${imageSource.length > 100 ? '...' : ''}`);
14
+ console.error(`[FileService] handleImageSource input: ${imageSource.substring(0, 100)}${imageSource.length > 100 ? '...' : ''}`);
15
15
  if (imageSource.startsWith('files/') ||
16
16
  imageSource.includes('generativelanguage.googleapis.com')) {
17
- console.log(`[FileService] Returning existing file reference`);
17
+ console.error(`[FileService] Returning existing file reference`);
18
18
  return imageSource;
19
19
  }
20
20
  if (this.isGcsUri(imageSource)) {
21
- console.log(`[FileService] Returning GCS URI`);
21
+ console.error(`[FileService] Returning GCS URI`);
22
22
  return imageSource;
23
23
  }
24
24
  const { buffer, mimeType, filename } = await this.getImageData(imageSource);
25
25
  const threshold = this.configService.getGeminiFilesApiThreshold();
26
- console.log(`[FileService] Buffer size: ${buffer.length}, Threshold: ${threshold}`);
26
+ console.error(`[FileService] Buffer size: ${buffer.length}, Threshold: ${threshold}`);
27
27
  if (buffer.length <= threshold) {
28
28
  const result = `data:${mimeType};base64,${buffer.toString('base64')}`;
29
- console.log(`[FileService] Returning inline data URL: ${result.substring(0, 100)}...`);
29
+ console.error(`[FileService] Returning inline data URL: ${result.substring(0, 100)}...`);
30
30
  return result;
31
31
  }
32
32
  else {
33
33
  const result = await this.uploadFile(buffer, filename || `image.${this.getFileExtension(mimeType)}`, mimeType);
34
- console.log(`[FileService] Returning file URI: ${result}`);
34
+ console.error(`[FileService] Returning file URI: ${result}`);
35
35
  return result;
36
36
  }
37
37
  }
@@ -40,7 +40,7 @@ export class FileService {
40
40
  return videoSource;
41
41
  }
42
42
  if (this.isLocalFilePath(videoSource)) {
43
- return await this.handleLocalFile(videoSource, 'video');
43
+ return await this.handleLocalFile(videoSource);
44
44
  }
45
45
  if (videoSource.startsWith('files/')) {
46
46
  return videoSource;
@@ -84,7 +84,7 @@ export class FileService {
84
84
  if (this.isPublicUrl(imageSource)) {
85
85
  try {
86
86
  const decodedUrl = imageSource.replace(/\\&/g, '&');
87
- console.log(`[FileService] Fetching URL: ${decodedUrl}`);
87
+ console.error(`[FileService] Fetching URL: ${decodedUrl}`);
88
88
  const response = await fetch(decodedUrl);
89
89
  if (!response.ok) {
90
90
  throw new FileUploadError(`Failed to fetch image from URL: ${decodedUrl} (Status: ${response.status})`);
@@ -93,7 +93,7 @@ export class FileService {
93
93
  const buffer = Buffer.from(arrayBuffer);
94
94
  const filename = decodedUrl.split('/').pop() || 'image.jpg';
95
95
  const mimeType = this.getMimeType(filename, buffer);
96
- console.log(`[FileService] Successfully fetched image - size: ${buffer.length}, mimeType: ${mimeType}`);
96
+ console.error(`[FileService] Successfully fetched image - size: ${buffer.length}, mimeType: ${mimeType}`);
97
97
  return { buffer, mimeType, filename };
98
98
  }
99
99
  catch (error) {
@@ -130,7 +130,7 @@ export class FileService {
130
130
  throw new FileUploadError(`Failed to process base64 image: ${error instanceof Error ? error.message : String(error)}`);
131
131
  }
132
132
  }
133
- async handleLocalFile(filePath, _type) {
133
+ async handleLocalFile(filePath) {
134
134
  try {
135
135
  const normalizedPath = path.normalize(filePath);
136
136
  await fs.access(normalizedPath);
@@ -1 +1 @@
1
- {"version":3,"file":"FileService.js","sourceRoot":"","sources":["../../src/services/FileService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileService.js","sourceRoot":"","sources":["../../src/services/FileService.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAGhF,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,OAAO,WAAW;IACd,cAAc,CAAqB;IACnC,aAAa,CAAgB;IAErC,YACE,aAA4B,EAC5B,IAAuB,EACvB,cAA8B;QAE9B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,iBAAiB,CAAC,cAAc,CACpD,aAAa,CAAC,SAAS,EAAE,EACzB,IAAI,EACJ,cAAc,CACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QACzC,OAAO,CAAC,KAAK,CACX,0CAA0C,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAClH,CAAC;QAGF,IACE,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC;YAChC,WAAW,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EACzD,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACjE,OAAO,WAAW,CAAC;QACrB,CAAC;QAGD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACjD,OAAO,WAAW,CAAC;QACrB,CAAC;QAGD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAG5E,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,0BAA0B,EAAE,CAAC;QAClE,OAAO,CAAC,KAAK,CACX,8BAA8B,MAAM,CAAC,MAAM,gBAAgB,SAAS,EAAE,CACvE,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;YAE/B,MAAM,MAAM,GAAG,QAAQ,QAAQ,WAAW,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtE,OAAO,CAAC,KAAK,CACX,4CAA4C,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAC1E,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,CAAC;YAEN,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAClC,MAAM,EACN,QAAQ,IAAI,SAAS,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EACtD,QAAQ,CACT,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,qCAAqC,MAAM,EAAE,CAAC,CAAC;YAC7D,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QAEzC,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAChE,OAAO,WAAW,CAAC;QACrB,CAAC;QAGD,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACjD,CAAC;QAGD,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,IAAI,eAAe,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,UAAU,CACd,MAAc,EACd,QAAgB,EAChB,QAAgB;QAGhB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QAGD,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,wBAAwB,CAChC,QAAQ,EACR,IAAI,CAAC,qBAAqB,EAAE,CAC7B,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CACvD,MAAM,EACN,QAAQ,EACR,QAAQ,CACT,CAAC;QACF,MAAM,aAAa,GACjB,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAE7D,OAAO,aAAa,CAAC,IAAI,KAAK,UAAU;YACtC,CAAC,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE;YACzB,CAAC,CAAC,aAAa,CAAC,GAAG,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAGD,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAChC,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC;IAIO,KAAK,CAAC,YAAY,CAAC,WAAmB;QAK5C,IAAI,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAE1C,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAC/B,uCAAuC,CACxC,CAAC;YACF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,eAAe,CAAC,6BAA6B,CAAC,CAAC;YAC3D,CAAC;YACD,MAAM,QAAQ,GAAG,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YACjD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/D,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;YAElC,IAAI,CAAC;gBAEH,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACpD,OAAO,CAAC,KAAK,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;gBAE3D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;gBACzC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,IAAI,eAAe,CACvB,mCAAmC,UAAU,aAAa,QAAQ,CAAC,MAAM,GAAG,CAC7E,CAAC;gBACJ,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACjD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,WAAW,CAAC;gBAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACpD,OAAO,CAAC,KAAK,CACX,oDAAoD,MAAM,CAAC,MAAM,eAAe,QAAQ,EAAE,CAC3F,CAAC;gBACF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YACxC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;gBAC1D,MAAM,IAAI,eAAe,CACvB,sCAAsC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC/F,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;YAEtC,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACnD,MAAM,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACpD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;YACxC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,eAAe,CACvB,6BAA6B,WAAW,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACtG,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,IAAI,eAAe,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,UAAkB;QAChD,IAAI,CAAC;YAEH,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,eAAe,CAAC,6BAA6B,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,QAAQ,GAAG,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAEjD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,eAAe,CACvB,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC5F,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,QAAgB;QAC5C,IAAI,CAAC;YAEH,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAGhD,MAAM,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAGhC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAG/C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEpD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBACrC,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,eAAe,CACvB,gCAAgC,QAAQ,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACtG,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,GAAW;QAC7B,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACjE,CAAC;IAEO,QAAQ,CAAC,GAAW;QAC1B,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAEO,eAAe,CAAC,QAAgB;QAEtC,IACE,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;YACxB,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;YACzB,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAC1B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAID,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAGD,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAGD,IACE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAC3D,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,mBAAmB,CAAC,QAAgB;QAC1C,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;QACtE,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;QAEtE,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACzC,OAAO,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,qBAAqB;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC;QAC/D,OAAO,CAAC,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC,CAAC;IACxC,CAAC;IAEO,cAAc,CAAC,QAAgB;QACrC,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;QAC9C,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;QAC9C,CAAC;QAED,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,CAAC;IAEO,WAAW,CAAC,QAAgB,EAAE,MAAe;QAEnD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,SAAS,GAA2B;YAExC,GAAG,EAAE,YAAY;YACjB,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,WAAW;YAChB,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,WAAW;YAChB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,YAAY;YAElB,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,iBAAiB;YACtB,GAAG,EAAE,iBAAiB;YACtB,GAAG,EAAE,kBAAkB;YACvB,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,aAAa;YAClB,GAAG,EAAE,gBAAgB;YACrB,KAAK,EAAE,YAAY;YACnB,GAAG,EAAE,aAAa;SACnB,CAAC;QAEF,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAGD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;QAGD,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5D,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,0BAA0B,CAAC;IACjC,CAAC;IAEO,qBAAqB,CAAC,MAAc;QAE1C,IACE,MAAM,CAAC,MAAM,IAAI,CAAC;YAClB,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;YAClB,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;YAClB,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;YAClB,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;YAClB,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;YAClB,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;YAClB,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;YAClB,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAClB,CAAC;YACD,OAAO,WAAW,CAAC;QACrB,CAAC;QAGD,IACE,MAAM,CAAC,MAAM,IAAI,CAAC;YAClB,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;YAClB,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;YAClB,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAClB,CAAC;YACD,OAAO,YAAY,CAAC;QACtB,CAAC;QAGD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/C,OAAO,WAAW,CAAC;YACrB,CAAC;QACH,CAAC;QAGD,IACE,MAAM,CAAC,MAAM,IAAI,EAAE;YACnB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,MAAM;YAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,MAAM,EAChD,CAAC;YACD,OAAO,YAAY,CAAC;QACtB,CAAC;QAGD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;YAE1E,OAAO,YAAY,CAAC;QACtB,CAAC;QAGD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;YAC1E,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,0BAA0B,CAAC;IACpC,CAAC;IAEO,gBAAgB,CAAC,QAAgB;QACvC,OAAO,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAID,MAAM,CAAC,WAAW,CAAC,QAAgB;QACjC,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,QAAgB;QACjC,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,QAAgB;QACtC,MAAM,UAAU,GAA2B;YACzC,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,KAAK;YAClB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,MAAM;YACpB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,MAAM;YACpB,YAAY,EAAE,MAAM;YACpB,YAAY,EAAE,MAAM;YACpB,WAAW,EAAE,KAAK;YAClB,iBAAiB,EAAE,KAAK;YACxB,iBAAiB,EAAE,KAAK;YACxB,kBAAkB,EAAE,KAAK;YACzB,YAAY,EAAE,MAAM;YACpB,aAAa,EAAE,KAAK;YACpB,gBAAgB,EAAE,KAAK;YACvB,YAAY,EAAE,KAAK;YACnB,aAAa,EAAE,KAAK;SACrB,CAAC;QAEF,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export type McpLogLevel = 'debug' | 'info' | 'notice' | 'warning' | 'error' | 'critical' | 'alert' | 'emergency';
3
+ export declare class LoggerService {
4
+ private static instance;
5
+ private mcpServer;
6
+ private loggerName;
7
+ private constructor();
8
+ static getInstance(loggerName?: string): LoggerService;
9
+ attachServer(server: McpServer): void;
10
+ setLoggerName(name: string): void;
11
+ debug(data: unknown, logger?: string): Promise<void>;
12
+ info(data: unknown, logger?: string): Promise<void>;
13
+ notice(data: unknown, logger?: string): Promise<void>;
14
+ warn(data: unknown, logger?: string): Promise<void>;
15
+ error(data: unknown, logger?: string): Promise<void>;
16
+ log(level: McpLogLevel, data: unknown, logger?: string): Promise<void>;
17
+ private scrub;
18
+ }
19
+ //# sourceMappingURL=LoggerService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoggerService.d.ts","sourceRoot":"","sources":["../../src/services/LoggerService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,MAAM,MAAM,WAAW,GACnB,OAAO,GACP,MAAM,GACN,QAAQ,GACR,SAAS,GACT,OAAO,GACP,UAAU,GACV,OAAO,GACP,WAAW,CAAC;AAQhB,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA8B;IAErD,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO;IAIP,MAAM,CAAC,WAAW,CAAC,UAAU,GAAE,MAAwB;IAOvD,YAAY,CAAC,MAAM,EAAE,SAAS;IAI9B,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM;IAGpC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM;IAGnC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM;IAGrC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM;IAGnC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM;IAI9B,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM;IAgC5D,OAAO,CAAC,KAAK;CAkBd"}
@@ -0,0 +1,74 @@
1
+ export class LoggerService {
2
+ static instance = null;
3
+ mcpServer = null;
4
+ loggerName;
5
+ constructor(loggerName) {
6
+ this.loggerName = loggerName;
7
+ }
8
+ static getInstance(loggerName = 'ai-vision-mcp') {
9
+ if (!LoggerService.instance) {
10
+ LoggerService.instance = new LoggerService(loggerName);
11
+ }
12
+ return LoggerService.instance;
13
+ }
14
+ attachServer(server) {
15
+ this.mcpServer = server;
16
+ }
17
+ setLoggerName(name) {
18
+ this.loggerName = name;
19
+ }
20
+ debug(data, logger) {
21
+ return this.log('debug', data, logger);
22
+ }
23
+ info(data, logger) {
24
+ return this.log('info', data, logger);
25
+ }
26
+ notice(data, logger) {
27
+ return this.log('notice', data, logger);
28
+ }
29
+ warn(data, logger) {
30
+ return this.log('warning', data, logger);
31
+ }
32
+ error(data, logger) {
33
+ return this.log('error', data, logger);
34
+ }
35
+ async log(level, data, logger) {
36
+ const msg = this.scrub(data);
37
+ if (this.mcpServer) {
38
+ try {
39
+ await this.mcpServer.server.sendLoggingMessage({
40
+ level,
41
+ logger: logger || this.loggerName,
42
+ data: msg,
43
+ });
44
+ return;
45
+ }
46
+ catch {
47
+ }
48
+ }
49
+ const prefix = `[${level}] ${logger || this.loggerName}:`;
50
+ if (typeof msg === 'string') {
51
+ console.error(prefix, msg);
52
+ }
53
+ else {
54
+ console.error(prefix, JSON.stringify(msg));
55
+ }
56
+ }
57
+ scrub(data) {
58
+ const s = typeof data === 'string'
59
+ ? data
60
+ : (() => {
61
+ try {
62
+ return JSON.stringify(data);
63
+ }
64
+ catch {
65
+ return String(data);
66
+ }
67
+ })();
68
+ return s
69
+ .replace(/(api[_-]?key\s*[:=]\s*)([^\s"']+)/gi, '$1[REDACTED]')
70
+ .replace(/(authorization\s*[:=]\s*)([^\s"']+)/gi, '$1[REDACTED]')
71
+ .replace(/(bearer\s+)([a-z0-9\-\._~\+\/]+=*)/gi, '$1[REDACTED]');
72
+ }
73
+ }
74
+ //# sourceMappingURL=LoggerService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoggerService.js","sourceRoot":"","sources":["../../src/services/LoggerService.ts"],"names":[],"mappings":"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"}
@@ -9,9 +9,9 @@ export async function analyze_image(args, config, imageProvider, imageFileServic
9
9
  throw new VisionError('prompt is required', 'MISSING_ARGUMENT');
10
10
  }
11
11
  const processedImageSource = await imageFileService.handleImageSource(args.imageSource);
12
- console.log(`[analyze_image] Processed image source: ${processedImageSource.substring(0, 100)}${processedImageSource.length > 100 ? '...' : ''}`);
13
- console.log(`[analyze_image] Original source: ${args.imageSource}`);
14
- console.log(`[analyze_image] Processed source starts with data:image: ${processedImageSource.startsWith('data:image/')}`);
12
+ console.error(`[analyze_image] Processed image source: ${processedImageSource.substring(0, 100)}${processedImageSource.length > 100 ? '...' : ''}`);
13
+ console.error(`[analyze_image] Original source: ${args.imageSource}`);
14
+ console.error(`[analyze_image] Processed source starts with data:image: ${processedImageSource.startsWith('data:image/')}`);
15
15
  const options = {
16
16
  temperature: config.TEMPERATURE_FOR_ANALYZE_IMAGE ??
17
17
  config.TEMPERATURE_FOR_IMAGE ??
@@ -1 +1 @@
1
- {"version":3,"file":"analyze_image.js","sourceRoot":"","sources":["../../src/tools/analyze_image.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAQ/D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAsB,EACtB,MAAc,EACd,aAA6B,EAC7B,gBAA6B;IAE7B,IAAI,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,WAAW,CAAC,yBAAyB,EAAE,kBAAkB,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,WAAW,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;QAClE,CAAC;QAGD,MAAM,oBAAoB,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,CACnE,IAAI,CAAC,WAAW,CACjB,CAAC;QACF,OAAO,CAAC,GAAG,CACT,2CAA2C,oBAAoB,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,oBAAoB,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CACrI,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CACT,4DAA4D,oBAAoB,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAC7G,CAAC;QAGF,MAAM,OAAO,GAAoB;YAC/B,WAAW,EACT,MAAM,CAAC,6BAA6B;gBACpC,MAAM,CAAC,qBAAqB;gBAC5B,MAAM,CAAC,WAAW;YACpB,IAAI,EACF,MAAM,CAAC,uBAAuB;gBAC9B,MAAM,CAAC,eAAe;gBACtB,MAAM,CAAC,KAAK;YACd,IAAI,EACF,MAAM,CAAC,uBAAuB;gBAC9B,MAAM,CAAC,eAAe;gBACtB,MAAM,CAAC,KAAK;YACd,SAAS,EACP,MAAM,CAAC,4BAA4B;gBACnC,MAAM,CAAC,oBAAoB;gBAC3B,MAAM,CAAC,UAAU;YACnB,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,cAAc,CAAC,aAAa;YAC1C,GAAG,IAAI,CAAC,OAAO;SAChB,CAAC;QAGF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,YAAY,CAC7C,oBAAoB,EACpB,IAAI,CAAC,MAAM,EACX,OAAO,CACR,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QAErD,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,WAAW,CACnB,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACpF,gBAAgB,EAChB,QAAQ,EACR,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"analyze_image.js","sourceRoot":"","sources":["../../src/tools/analyze_image.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAQ/D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAsB,EACtB,MAAc,EACd,aAA6B,EAC7B,gBAA6B;IAE7B,IAAI,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,WAAW,CAAC,yBAAyB,EAAE,kBAAkB,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,WAAW,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;QAClE,CAAC;QAGD,MAAM,oBAAoB,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,CACnE,IAAI,CAAC,WAAW,CACjB,CAAC;QACF,OAAO,CAAC,KAAK,CACX,2CAA2C,oBAAoB,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,oBAAoB,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CACrI,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,oCAAoC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CACX,4DAA4D,oBAAoB,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAC7G,CAAC;QAGF,MAAM,OAAO,GAAoB;YAC/B,WAAW,EACT,MAAM,CAAC,6BAA6B;gBACpC,MAAM,CAAC,qBAAqB;gBAC5B,MAAM,CAAC,WAAW;YACpB,IAAI,EACF,MAAM,CAAC,uBAAuB;gBAC9B,MAAM,CAAC,eAAe;gBACtB,MAAM,CAAC,KAAK;YACd,IAAI,EACF,MAAM,CAAC,uBAAuB;gBAC9B,MAAM,CAAC,eAAe;gBACtB,MAAM,CAAC,KAAK;YACd,SAAS,EACP,MAAM,CAAC,4BAA4B;gBACnC,MAAM,CAAC,oBAAoB;gBAC3B,MAAM,CAAC,UAAU;YACnB,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,cAAc,CAAC,aAAa;YAC1C,GAAG,IAAI,CAAC,OAAO;SAChB,CAAC;QAGF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,YAAY,CAC7C,oBAAoB,EACpB,IAAI,CAAC,MAAM,EACX,OAAO,CACR,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QAErD,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,WAAW,CACnB,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACpF,gBAAgB,EAChB,QAAQ,EACR,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -20,12 +20,12 @@ export async function compare_images(args, config, imageProvider, imageFileServi
20
20
  throw new VisionError(`Image source at index ${i} is invalid`, 'INVALID_ARGUMENT');
21
21
  }
22
22
  }
23
- console.log(`[compare_images] Processing ${args.imageSources.length} images for comparison`);
23
+ console.error(`[compare_images] Processing ${args.imageSources.length} images for comparison`);
24
24
  const processedImageSources = await Promise.all(args.imageSources.map(async (imageSource, index) => {
25
- console.log(`[compare_images] Processing image ${index + 1}: ${imageSource.substring(0, 100)}${imageSource.length > 100 ? '...' : ''}`);
25
+ console.error(`[compare_images] Processing image ${index + 1}: ${imageSource.substring(0, 100)}${imageSource.length > 100 ? '...' : ''}`);
26
26
  return await imageFileService.handleImageSource(imageSource);
27
27
  }));
28
- console.log(`[compare_images] All ${processedImageSources.length} images processed successfully`);
28
+ console.error(`[compare_images] All ${processedImageSources.length} images processed successfully`);
29
29
  const options = {
30
30
  temperature: config.TEMPERATURE_FOR_COMPARE_IMAGES ??
31
31
  config.TEMPERATURE_FOR_IMAGE ??
@@ -1 +1 @@
1
- {"version":3,"file":"compare_images.js","sourceRoot":"","sources":["../../src/tools/compare_images.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare_images.js","sourceRoot":"","sources":["../../src/tools/compare_images.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"detect_objects_in_image.d.ts","sourceRoot":"","sources":["../../src/tools/detect_objects_in_image.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EAMxB,MAAM,6BAA6B,CAAC;AAqGrC,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAyLvE,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,mBAAmB,EACzB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,cAAc,EAC7B,gBAAgB,EAAE,WAAW,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CA4YlC"}
1
+ {"version":3,"file":"detect_objects_in_image.d.ts","sourceRoot":"","sources":["../../src/tools/detect_objects_in_image.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EAMxB,MAAM,6BAA6B,CAAC;AAqGrC,YAAY,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAyLvE,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,mBAAmB,EACzB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,cAAc,EAC7B,gBAAgB,EAAE,WAAW,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CA2YlC"}
@@ -2,7 +2,7 @@ import path from 'path';
2
2
  import { VisionError } from '../types/Errors.js';
3
3
  import { FUNCTION_NAMES } from '../constants/FunctionNames.js';
4
4
  import { ImageAnnotator } from '../utils/imageAnnotator.js';
5
- import sharp from 'sharp';
5
+ import { Image } from 'imagescript';
6
6
  const DETECTION_SYSTEM_INSTRUCTION = `
7
7
  You are a visual detection assistant that names detected objects based on image context.
8
8
 
@@ -147,10 +147,10 @@ function suggestCSSSelectors(detection) {
147
147
  }
148
148
  function generateDetectionSummary(detections, imageMetadata, model, provider) {
149
149
  const summary = [];
150
- summary.push(`🖼️ IMAGE ANALYSIS COMPLETE\n`);
151
- summary.push(`📏 Source Image: ${imageMetadata.width}×${imageMetadata.height} pixels (${imageMetadata.format.toUpperCase()}, ${(imageMetadata.size_bytes / 1024 / 1024).toFixed(1)}MB)`);
152
- summary.push(`🤖 Detection Model: ${model} (${provider})`);
153
- summary.push(`📊 Elements Found: ${detections.length} elements detected\n`);
150
+ summary.push(`IMAGE ANALYSIS COMPLETE\n`);
151
+ summary.push(`Source Image: ${imageMetadata.width}×${imageMetadata.height} pixels (${imageMetadata.format.toUpperCase()}, ${(imageMetadata.size_bytes / 1024 / 1024).toFixed(1)}MB)`);
152
+ summary.push(`Detection Model: ${model} (${provider})`);
153
+ summary.push(`Elements Found: ${detections.length} elements detected\n`);
154
154
  const webElements = [
155
155
  'button',
156
156
  'input',
@@ -169,18 +169,18 @@ function generateDetectionSummary(detections, imageMetadata, model, provider) {
169
169
  ];
170
170
  const hasWebElements = detections.some(d => webElements.some(webEl => d.object === webEl || d.object.startsWith(webEl + '[')));
171
171
  if (hasWebElements) {
172
- summary.push(`⚠️ FOR WEB AUTOMATION:`);
172
+ summary.push(`FOR WEB AUTOMATION:`);
173
173
  summary.push(`- **RECOMMENDED**: Use CSS selectors for reliable automation (primary approach)`);
174
174
  summary.push(`- **REFERENCE ONLY**: Percentage coordinates for spatial context (secondary reference)`);
175
175
  summary.push(`- **AVOID**: Direct coordinate-based clicking for automation`);
176
176
  summary.push(`- **Technical Note**: Raw coordinates use normalized_box_2d format [ymin, xmin, ymax, xmax] on 0-1000 scale\n`);
177
177
  }
178
178
  else {
179
- summary.push(`⚠️ OBJECT DETECTION RESULTS:`);
179
+ summary.push(`OBJECT DETECTION RESULTS:`);
180
180
  summary.push(`- **SPATIAL REFERENCE**: Coordinates show relative positioning within image`);
181
181
  summary.push(`- **COORDINATE FORMAT**: normalized_box_2d format [ymin, xmin, ymax, xmax] on 0-1000 scale\n`);
182
182
  }
183
- summary.push(`## 🔍 DETECTED ELEMENTS:\n`);
183
+ summary.push(`## DETECTED ELEMENTS:\n`);
184
184
  detections.forEach((detection, index) => {
185
185
  const [ymin, xmin, ymax, xmax] = detection.normalized_box_2d;
186
186
  const centerX = (xmin + xmax) / 2 / 10;
@@ -215,7 +215,7 @@ export async function detect_objects_in_image(args, config, imageProvider, image
215
215
  throw new VisionError('prompt is required', 'MISSING_ARGUMENT');
216
216
  }
217
217
  const processedImageSource = await imageFileService.handleImageSource(args.imageSource);
218
- console.log(`[detect_objects_in_image] Processed image source: ${processedImageSource.substring(0, 100)}${processedImageSource.length > 100 ? '...' : ''}`);
218
+ console.error(`[detect_objects_in_image] Processed image source: ${processedImageSource.substring(0, 100)}${processedImageSource.length > 100 ? '...' : ''}`);
219
219
  let originalImageBuffer;
220
220
  let imageWidth;
221
221
  let imageHeight;
@@ -233,13 +233,13 @@ export async function detect_objects_in_image(args, config, imageProvider, image
233
233
  else {
234
234
  originalImageBuffer = await imageFileService.readFile(args.imageSource);
235
235
  }
236
- const sharpMetadata = await sharp(originalImageBuffer).metadata();
237
- imageWidth = sharpMetadata.width || 0;
238
- imageHeight = sharpMetadata.height || 0;
236
+ const decoded = await Image.decode(originalImageBuffer);
237
+ imageWidth = decoded.width || 0;
238
+ imageHeight = decoded.height || 0;
239
239
  if (imageWidth === 0 || imageHeight === 0) {
240
240
  throw new VisionError('Unable to determine image dimensions', 'INVALID_IMAGE');
241
241
  }
242
- console.log(`[detect_objects_in_image] Image size: ${imageWidth}x${imageHeight}`);
242
+ console.error(`[detect_objects_in_image] Image size: ${imageWidth}x${imageHeight}`);
243
243
  const detectionPrompt = args.prompt;
244
244
  const options = {
245
245
  temperature: config.TEMPERATURE_FOR_DETECT_OBJECTS_IN_IMAGE ??
@@ -260,68 +260,72 @@ export async function detect_objects_in_image(args, config, imageProvider, image
260
260
  systemInstruction: DETECTION_SYSTEM_INSTRUCTION,
261
261
  ...args.options,
262
262
  };
263
- console.log('[detect_objects_in_image] Analyzing image for object detection...');
264
- console.log(`[detect_objects_in_image] Configuration: temperature=${options.temperature}, topP=${options.topP}, topK=${options.topK}, maxTokens=${options.maxTokens}`);
263
+ console.error('[detect_objects_in_image] Analyzing image for object detection...');
264
+ console.error(`[detect_objects_in_image] Configuration: temperature=${options.temperature}, topP=${options.topP}, topK=${options.topK}, maxTokens=${options.maxTokens}`);
265
265
  const result = await imageProvider.analyzeImage(processedImageSource, detectionPrompt, options);
266
- console.log(`[detect_objects_in_image] Response length: ${result.text.length} characters`);
267
- console.log(`[detect_objects_in_image] Response ends with: "${result.text.slice(-50)}"`);
268
- let detections;
269
- try {
270
- detections = JSON.parse(result.text);
266
+ console.error(`[detect_objects_in_image] Response length: ${result.text.length} characters`);
267
+ console.error(`[detect_objects_in_image] Response ends with: "${result.text.slice(-50)}"`);
268
+ let detections = [];
269
+ const rawText = (result.text || '').trim();
270
+ const candidates = [];
271
+ if (rawText)
272
+ candidates.push(rawText);
273
+ const fencedMatch = rawText.match(/```(?:json)?\s*([\s\S]*?)\s*```/i);
274
+ if (fencedMatch?.[1]) {
275
+ candidates.unshift(fencedMatch[1].trim());
271
276
  }
272
- catch (parseError) {
273
- console.log(`[detect_objects_in_image] Initial JSON parse failed, attempting cleanup...`);
274
- console.log(`[detect_objects_in_image] Raw response (first 500 chars): ${result.text.substring(0, 500)}`);
275
- console.log(`[detect_objects_in_image] Full response length: ${result.text.length} characters`);
276
- let cleanedText = result.text.trim();
277
- if (cleanedText.startsWith('```')) {
278
- const lines = cleanedText.split('\n');
279
- lines.shift();
280
- if (lines[lines.length - 1].trim() === '```') {
281
- lines.pop();
277
+ const arrayStart = rawText.indexOf('[');
278
+ const arrayEnd = rawText.lastIndexOf(']');
279
+ if (arrayStart !== -1 && arrayEnd !== -1 && arrayEnd > arrayStart) {
280
+ candidates.push(rawText.slice(arrayStart, arrayEnd + 1).trim());
281
+ }
282
+ const objStart = rawText.indexOf('{');
283
+ const objEnd = rawText.lastIndexOf('}');
284
+ if (objStart !== -1 && objEnd !== -1 && objEnd > objStart) {
285
+ candidates.push(rawText.slice(objStart, objEnd + 1).trim());
286
+ }
287
+ let parsed = false;
288
+ for (const candidate of candidates) {
289
+ try {
290
+ detections = JSON.parse(candidate);
291
+ parsed = true;
292
+ if (candidate !== rawText) {
293
+ console.error('[detect_objects_in_image] Successfully parsed JSON after extraction/cleanup');
282
294
  }
283
- cleanedText = lines.join('\n').trim();
295
+ break;
284
296
  }
285
- try {
286
- detections = JSON.parse(cleanedText);
287
- console.log(`[detect_objects_in_image] Successfully parsed after cleanup`);
297
+ catch {
288
298
  }
289
- catch (secondError) {
290
- console.error(`[detect_objects_in_image] Failed to parse even after cleanup`);
291
- console.error(`[detect_objects_in_image] Cleaned text (first 1000 chars): ${cleanedText.substring(0, 1000)}`);
292
- let fixedText = cleanedText;
293
- if (cleanedText.startsWith('[') && !cleanedText.endsWith(']')) {
294
- console.log(`[detect_objects_in_image] Attempting to fix truncated JSON array...`);
295
- const lastCompleteObjectIndex = cleanedText.lastIndexOf('},');
296
- if (lastCompleteObjectIndex > 0) {
297
- fixedText =
298
- cleanedText.substring(0, lastCompleteObjectIndex + 1) + '\n]';
299
- console.log(`[detect_objects_in_image] Fixed text ends with: "${fixedText.slice(-100)}"`);
300
- try {
301
- detections = JSON.parse(fixedText);
302
- console.log(`[detect_objects_in_image] Successfully parsed truncated JSON after fix. Objects found: ${detections.length}`);
303
- }
304
- catch (thirdError) {
305
- console.error(`[detect_objects_in_image] Failed to parse even after fixing truncated JSON`);
306
- throw new VisionError(`Failed to parse detection results as JSON (response appears truncated): ${parseError instanceof Error ? parseError.message : String(parseError)}. Raw response (first 500 chars): ${result.text.substring(0, 500)}. Consider increasing maxTokens parameter.`, 'PARSE_ERROR', config.IMAGE_PROVIDER, parseError instanceof Error ? parseError : undefined);
307
- }
299
+ }
300
+ if (!parsed) {
301
+ console.error('[detect_objects_in_image] Failed to parse detection JSON, attempting truncated-array fix...');
302
+ console.error(`[detect_objects_in_image] Raw response (first 500 chars): ${rawText.substring(0, 500)}`);
303
+ const best = candidates[0] || rawText;
304
+ if (best.startsWith('[') && !best.endsWith(']')) {
305
+ const lastCompleteObjectIndex = best.lastIndexOf('},');
306
+ if (lastCompleteObjectIndex > 0) {
307
+ const fixedText = best.substring(0, lastCompleteObjectIndex + 1) + '\n]';
308
+ try {
309
+ detections = JSON.parse(fixedText);
310
+ parsed = true;
311
+ console.error(`[detect_objects_in_image] Successfully parsed truncated JSON after fix. Objects found: ${detections.length}`);
308
312
  }
309
- else {
310
- throw new VisionError(`Failed to parse detection results as JSON (response appears truncated): ${parseError instanceof Error ? parseError.message : String(parseError)}. Raw response (first 500 chars): ${result.text.substring(0, 500)}. Consider increasing maxTokens parameter.`, 'PARSE_ERROR', config.IMAGE_PROVIDER, parseError instanceof Error ? parseError : undefined);
313
+ catch (parseError) {
314
+ throw new VisionError(`Failed to parse detection results as JSON: ${parseError instanceof Error ? parseError.message : String(parseError)}. Raw response (first 500 chars): ${rawText.substring(0, 500)}`, 'PARSE_ERROR', config.IMAGE_PROVIDER, parseError instanceof Error ? parseError : undefined);
311
315
  }
312
316
  }
313
- else {
314
- throw new VisionError(`Failed to parse detection results as JSON: ${parseError instanceof Error ? parseError.message : String(parseError)}. Raw response (first 500 chars): ${result.text.substring(0, 500)}`, 'PARSE_ERROR', config.IMAGE_PROVIDER, parseError instanceof Error ? parseError : undefined);
315
- }
317
+ }
318
+ if (!parsed) {
319
+ throw new VisionError(`Failed to parse detection results as JSON. Raw response (first 500 chars): ${rawText.substring(0, 500)}`, 'PARSE_ERROR', config.IMAGE_PROVIDER);
316
320
  }
317
321
  }
318
- console.log(`[detect_objects_in_image] Detected ${detections.length} objects`);
322
+ console.error(`[detect_objects_in_image] Detected ${detections.length} objects`);
319
323
  const processedDetections = detections
320
324
  .map((detection) => {
321
325
  if (!detection.normalized_box_2d ||
322
326
  !Array.isArray(detection.normalized_box_2d) ||
323
327
  detection.normalized_box_2d.length !== 4) {
324
- console.warn(`[detect_objects_in_image] Skipping detection with invalid coordinates: ${JSON.stringify(detection)}`);
328
+ console.error(`[detect_objects_in_image] Skipping detection with invalid coordinates: ${JSON.stringify(detection)}`);
325
329
  return null;
326
330
  }
327
331
  const [normY1, normX1, normY2, normX2] = detection.normalized_box_2d;
@@ -331,7 +335,7 @@ export async function detect_objects_in_image(args, config, imageProvider, image
331
335
  normX2 > 1000 ||
332
336
  normY1 >= normY2 ||
333
337
  normX1 >= normX2) {
334
- console.warn(`[detect_objects_in_image] Skipping detection with invalid coordinate ranges: ${detection.object} [${normY1}, ${normX1}, ${normY2}, ${normX2}]`);
338
+ console.error(`[detect_objects_in_image] Skipping detection with invalid coordinate ranges: ${detection.object} [${normY1}, ${normX1}, ${normY2}, ${normX2}]`);
335
339
  return null;
336
340
  }
337
341
  return {
@@ -344,8 +348,26 @@ export async function detect_objects_in_image(args, config, imageProvider, image
344
348
  const annotator = new ImageAnnotator();
345
349
  const annotatedImageBuffer = await annotator.drawAnnotations(originalImageBuffer, processedDetections, imageWidth, imageHeight);
346
350
  const annotatedImageSize = annotatedImageBuffer.length;
347
- const outputFormat = sharpMetadata.format || 'png';
348
- console.log(`[detect_objects_in_image] Annotated image size: ${annotatedImageSize} bytes`);
351
+ let outputFormat = 'png';
352
+ if (args.imageSource.startsWith('data:image/')) {
353
+ const mime = args.imageSource.split(';')[0];
354
+ const ext = mime.split('/')[1];
355
+ if (ext)
356
+ outputFormat = ext;
357
+ }
358
+ else if (args.imageSource.startsWith('http')) {
359
+ const urlPath = args.imageSource.split('?')[0];
360
+ const ext = path.extname(urlPath).replace('.', '').toLowerCase();
361
+ if (ext)
362
+ outputFormat = ext;
363
+ }
364
+ else {
365
+ const ext = path.extname(args.imageSource).replace('.', '').toLowerCase();
366
+ if (ext)
367
+ outputFormat = ext;
368
+ }
369
+ outputFormat = 'png';
370
+ console.error(`[detect_objects_in_image] Annotated image size: ${annotatedImageSize} bytes`);
349
371
  const imageMetadata = {
350
372
  width: imageWidth,
351
373
  height: imageHeight,
@@ -353,7 +375,7 @@ export async function detect_objects_in_image(args, config, imageProvider, image
353
375
  format: outputFormat,
354
376
  };
355
377
  const summary = generateDetectionSummary(processedDetections, imageMetadata, 'AI Vision Model', config.IMAGE_PROVIDER);
356
- console.log(`[detect_objects_in_image] Generated text summary (${summary.length} characters)`);
378
+ console.error(`[detect_objects_in_image] Generated text summary (${summary.length} characters)`);
357
379
  const detectionMetadata = {
358
380
  model: result.metadata?.model || 'unknown',
359
381
  provider: result.metadata?.provider || config.IMAGE_PROVIDER,
@@ -367,7 +389,7 @@ export async function detect_objects_in_image(args, config, imageProvider, image
367
389
  };
368
390
  if (args.outputFilePath) {
369
391
  await annotator.saveToExplicitPath(args.outputFilePath, annotatedImageBuffer);
370
- console.log(`[detect_objects_in_image] Annotated image saved to: ${args.outputFilePath}`);
392
+ console.error(`[detect_objects_in_image] Annotated image saved to: ${args.outputFilePath}`);
371
393
  const response = {
372
394
  detections: processedDetections,
373
395
  file: {
@@ -388,7 +410,7 @@ export async function detect_objects_in_image(args, config, imageProvider, image
388
410
  else {
389
411
  const saveResult = await annotator.saveToTempFileOrSkip(annotatedImageBuffer, outputFormat);
390
412
  if (saveResult.method === 'temp_file') {
391
- console.log(`[detect_objects_in_image] Image saved to temp: ${saveResult.path}`);
413
+ console.error(`[detect_objects_in_image] Image saved to temp: ${saveResult.path}`);
392
414
  const response = {
393
415
  detections: processedDetections,
394
416
  tempFile: {
@@ -407,7 +429,7 @@ export async function detect_objects_in_image(args, config, imageProvider, image
407
429
  return response;
408
430
  }
409
431
  else {
410
- console.warn(`[detect_objects_in_image] Returning detection results without file output due to permission error.`);
432
+ console.error(`[detect_objects_in_image] Returning detection results without file output due to permission error.`);
411
433
  const response = {
412
434
  detections: processedDetections,
413
435
  image_metadata: {