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.
- package/README.md +102 -132
- package/dist/cli/commands/analyze-image.d.ts +3 -0
- package/dist/cli/commands/analyze-image.d.ts.map +1 -0
- package/dist/cli/commands/analyze-image.js +30 -0
- package/dist/cli/commands/analyze-image.js.map +1 -0
- package/dist/cli/commands/analyze-video.d.ts +3 -0
- package/dist/cli/commands/analyze-video.d.ts.map +1 -0
- package/dist/cli/commands/analyze-video.js +30 -0
- package/dist/cli/commands/analyze-video.js.map +1 -0
- package/dist/cli/commands/compare-images.d.ts +3 -0
- package/dist/cli/commands/compare-images.d.ts.map +1 -0
- package/dist/cli/commands/compare-images.js +30 -0
- package/dist/cli/commands/compare-images.js.map +1 -0
- package/dist/cli/commands/detect-objects.d.ts +3 -0
- package/dist/cli/commands/detect-objects.d.ts.map +1 -0
- package/dist/cli/commands/detect-objects.js +31 -0
- package/dist/cli/commands/detect-objects.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +63 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils.d.ts +15 -0
- package/dist/cli/utils.d.ts.map +1 -0
- package/dist/cli/utils.js +69 -0
- package/dist/cli/utils.js.map +1 -0
- package/dist/file-upload/gemini/GeminiFilesAPI.js +1 -1
- package/dist/file-upload/gemini/GeminiFilesAPI.js.map +1 -1
- package/dist/file-upload/vertexai/VertexAIStorageStrategy.js +1 -1
- package/dist/file-upload/vertexai/VertexAIStorageStrategy.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/providers/base/VisionProvider.d.ts +9 -0
- package/dist/providers/base/VisionProvider.d.ts.map +1 -1
- package/dist/providers/base/VisionProvider.js +67 -12
- package/dist/providers/base/VisionProvider.js.map +1 -1
- package/dist/providers/gemini/GeminiProvider.d.ts +1 -0
- package/dist/providers/gemini/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/gemini/GeminiProvider.js +60 -9
- package/dist/providers/gemini/GeminiProvider.js.map +1 -1
- package/dist/providers/vertexai/VertexAIProvider.d.ts.map +1 -1
- package/dist/providers/vertexai/VertexAIProvider.js +11 -11
- package/dist/providers/vertexai/VertexAIProvider.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +141 -53
- package/dist/server.js.map +1 -1
- package/dist/services/ConfigService.d.ts +3 -0
- package/dist/services/ConfigService.d.ts.map +1 -1
- package/dist/services/ConfigService.js +44 -0
- package/dist/services/ConfigService.js.map +1 -1
- package/dist/services/FileService.d.ts.map +1 -1
- package/dist/services/FileService.js +10 -10
- package/dist/services/FileService.js.map +1 -1
- package/dist/services/LoggerService.d.ts +19 -0
- package/dist/services/LoggerService.d.ts.map +1 -0
- package/dist/services/LoggerService.js +74 -0
- package/dist/services/LoggerService.js.map +1 -0
- package/dist/tools/analyze_image.js +3 -3
- package/dist/tools/analyze_image.js.map +1 -1
- package/dist/tools/compare_images.js +3 -3
- package/dist/tools/compare_images.js.map +1 -1
- package/dist/tools/detect_objects_in_image.d.ts.map +1 -1
- package/dist/tools/detect_objects_in_image.js +89 -67
- package/dist/tools/detect_objects_in_image.js.map +1 -1
- package/dist/types/Config.d.ts +2 -2
- package/dist/types/Config.d.ts.map +1 -1
- package/dist/utils/imageAnnotator.d.ts +4 -2
- package/dist/utils/imageAnnotator.d.ts.map +1 -1
- package/dist/utils/imageAnnotator.js +80 -89
- package/dist/utils/imageAnnotator.js.map +1 -1
- package/dist/utils/validation.d.ts +9 -9
- package/dist/utils/validation.js +1 -1
- package/dist/utils/validation.js.map +1 -1
- 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;
|
|
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.
|
|
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.
|
|
17
|
+
console.error(`[FileService] Returning existing file reference`);
|
|
18
18
|
return imageSource;
|
|
19
19
|
}
|
|
20
20
|
if (this.isGcsUri(imageSource)) {
|
|
21
|
-
console.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
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
|
|
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":"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"}
|
|
@@ -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.
|
|
13
|
-
console.
|
|
14
|
-
console.
|
|
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,
|
|
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.
|
|
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.
|
|
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.
|
|
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":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAQ/D,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAuB,EACvB,MAAc,EACd,aAA6B,EAC7B,gBAA6B;IAE7B,IAAI,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,WAAW,CACnB,+BAA+B,EAC/B,kBAAkB,CACnB,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,WAAW,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;QAClE,CAAC;QAGD,MAAM,SAAS,GAAG,MAAM,CAAC,yBAAyB,IAAI,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,WAAW,CACnB,+CAA+C,EAC/C,kBAAkB,CACnB,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YACzC,MAAM,IAAI,WAAW,CACnB,WAAW,SAAS,4CAA4C,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAC1F,kBAAkB,CACnB,CAAC;QACJ,CAAC;QAGD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACtE,MAAM,IAAI,WAAW,CACnB,yBAAyB,CAAC,aAAa,EACvC,kBAAkB,CACnB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,CAAC,
|
|
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,
|
|
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
|
|
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(
|
|
151
|
-
summary.push(
|
|
152
|
-
summary.push(
|
|
153
|
-
summary.push(
|
|
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(
|
|
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(
|
|
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(`##
|
|
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.
|
|
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
|
|
237
|
-
imageWidth =
|
|
238
|
-
imageHeight =
|
|
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.
|
|
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.
|
|
264
|
-
console.
|
|
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.
|
|
267
|
-
console.
|
|
268
|
-
let detections;
|
|
269
|
-
|
|
270
|
-
|
|
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
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
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
|
-
|
|
295
|
+
break;
|
|
284
296
|
}
|
|
285
|
-
|
|
286
|
-
detections = JSON.parse(cleanedText);
|
|
287
|
-
console.log(`[detect_objects_in_image] Successfully parsed after cleanup`);
|
|
297
|
+
catch {
|
|
288
298
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
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
|
-
|
|
310
|
-
throw new VisionError(`Failed to parse detection results as JSON
|
|
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
|
-
|
|
314
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
348
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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: {
|