@xbg.solutions/utils-llm-connector 1.0.0

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 (45) hide show
  1. package/lib/index.d.ts +16 -0
  2. package/lib/index.d.ts.map +1 -0
  3. package/lib/index.js +54 -0
  4. package/lib/index.js.map +1 -0
  5. package/lib/llm-connector.d.ts +67 -0
  6. package/lib/llm-connector.d.ts.map +1 -0
  7. package/lib/llm-connector.js +206 -0
  8. package/lib/llm-connector.js.map +1 -0
  9. package/lib/providers/base.provider.d.ts +51 -0
  10. package/lib/providers/base.provider.d.ts.map +1 -0
  11. package/lib/providers/base.provider.js +106 -0
  12. package/lib/providers/base.provider.js.map +1 -0
  13. package/lib/providers/claude.provider.d.ts +26 -0
  14. package/lib/providers/claude.provider.d.ts.map +1 -0
  15. package/lib/providers/claude.provider.js +180 -0
  16. package/lib/providers/claude.provider.js.map +1 -0
  17. package/lib/providers/gemini.provider.d.ts +34 -0
  18. package/lib/providers/gemini.provider.d.ts.map +1 -0
  19. package/lib/providers/gemini.provider.js +285 -0
  20. package/lib/providers/gemini.provider.js.map +1 -0
  21. package/lib/providers/google-lens.provider.d.ts +58 -0
  22. package/lib/providers/google-lens.provider.d.ts.map +1 -0
  23. package/lib/providers/google-lens.provider.js +354 -0
  24. package/lib/providers/google-lens.provider.js.map +1 -0
  25. package/lib/providers/index.d.ts +6 -0
  26. package/lib/providers/index.d.ts.map +1 -0
  27. package/lib/providers/index.js +16 -0
  28. package/lib/providers/index.js.map +1 -0
  29. package/lib/providers/openai.provider.d.ts +30 -0
  30. package/lib/providers/openai.provider.d.ts.map +1 -0
  31. package/lib/providers/openai.provider.js +258 -0
  32. package/lib/providers/openai.provider.js.map +1 -0
  33. package/lib/providers/providers.types.d.ts +64 -0
  34. package/lib/providers/providers.types.d.ts.map +1 -0
  35. package/lib/providers/providers.types.js +3 -0
  36. package/lib/providers/providers.types.js.map +1 -0
  37. package/lib/requests.types.d.ts +69 -0
  38. package/lib/requests.types.d.ts.map +1 -0
  39. package/lib/requests.types.js +3 -0
  40. package/lib/requests.types.js.map +1 -0
  41. package/lib/types.d.ts +7 -0
  42. package/lib/types.d.ts.map +1 -0
  43. package/lib/types.js +25 -0
  44. package/lib/types.js.map +1 -0
  45. package/package.json +30 -0
@@ -0,0 +1,354 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.GoogleLensProvider = void 0;
37
+ const base_provider_1 = require("./base.provider");
38
+ /**
39
+ * Google Lens provider implementation using Cloud Vision API
40
+ * Specialized for product identification and visual search
41
+ */
42
+ class GoogleLensProvider extends base_provider_1.BaseProvider {
43
+ constructor(config) {
44
+ super('google-lens', config);
45
+ }
46
+ async generateText(request) {
47
+ const requestId = this.generateRequestId();
48
+ const processingTime = Date.now();
49
+ return Object.assign(Object.assign({}, this.handleProviderError({ message: 'Google Lens provider does not support text generation' }, requestId, request.model)), { text: '', finishReason: 'error', usage: {
50
+ inputTokens: 0,
51
+ outputTokens: 0,
52
+ totalTokens: 0,
53
+ processingTimeMs: Date.now() - processingTime
54
+ } });
55
+ }
56
+ async analyzeImage(request) {
57
+ const startTime = Date.now();
58
+ const requestId = this.generateRequestId();
59
+ try {
60
+ this.validateRequest(request);
61
+ await this.applyRateLimit();
62
+ // Import Google Cloud Vision SDK dynamically
63
+ const vision = await this.getVisionSDK();
64
+ // Use user API key if provided, otherwise platform credentials
65
+ const client = this.createVisionClient(vision, request.userApiKey);
66
+ // Prepare image request
67
+ const imageRequest = this.buildImageRequest(request);
68
+ const features = this.getAnalysisFeatures(request.analysisType);
69
+ const visionRequest = {
70
+ image: imageRequest,
71
+ features
72
+ };
73
+ const [result] = await client.annotateImage(visionRequest);
74
+ const processingTime = Date.now() - startTime;
75
+ // Google Vision API doesn't use tokens, pricing is per request
76
+ const usage = {
77
+ inputTokens: 0,
78
+ outputTokens: 0,
79
+ totalTokens: 0,
80
+ estimatedCost: this.calculateCost(request.analysisType),
81
+ processingTimeMs: processingTime
82
+ };
83
+ const analysis = this.parseVisionResult(result, request.analysisType);
84
+ return Object.assign(Object.assign({}, this.createBaseResponse(requestId, usage)), { model: request.model, analysis });
85
+ }
86
+ catch (error) {
87
+ const processingTime = Date.now() - startTime;
88
+ return Object.assign(Object.assign({}, this.handleProviderError(error, requestId, request.model)), { analysis: {
89
+ description: '',
90
+ detectedObjects: [],
91
+ extractedText: ''
92
+ }, usage: {
93
+ inputTokens: 0,
94
+ outputTokens: 0,
95
+ totalTokens: 0,
96
+ processingTimeMs: processingTime
97
+ } });
98
+ }
99
+ }
100
+ getInfo() {
101
+ return {
102
+ name: 'google-lens',
103
+ displayName: 'Google Lens (Vision API)',
104
+ availableModels: [
105
+ {
106
+ id: 'vision-product-search',
107
+ displayName: 'Vision Product Search',
108
+ contextWindow: 0, // Not applicable for vision
109
+ costPer1kTokens: undefined
110
+ },
111
+ {
112
+ id: 'vision-object-detection',
113
+ displayName: 'Vision Object Detection',
114
+ contextWindow: 0,
115
+ costPer1kTokens: undefined
116
+ },
117
+ {
118
+ id: 'vision-text-detection',
119
+ displayName: 'Vision Text Detection (OCR)',
120
+ contextWindow: 0,
121
+ costPer1kTokens: undefined
122
+ }
123
+ ],
124
+ supportedFeatures: ['image-analysis']
125
+ };
126
+ }
127
+ getApiKeyEnvVar() {
128
+ return 'GOOGLE_CLOUD_API_KEY';
129
+ }
130
+ /**
131
+ * Build the image request object for Vision API
132
+ */
133
+ buildImageRequest(request) {
134
+ if (request.imageUrl) {
135
+ return { source: { imageUri: request.imageUrl } };
136
+ }
137
+ else if (request.imageBase64) {
138
+ return { content: request.imageBase64 };
139
+ }
140
+ else {
141
+ throw new Error('Either imageUrl or imageBase64 is required');
142
+ }
143
+ }
144
+ /**
145
+ * Get the appropriate features for analysis type
146
+ */
147
+ getAnalysisFeatures(analysisType) {
148
+ switch (analysisType) {
149
+ case 'product-identification':
150
+ return [
151
+ { type: 'PRODUCT_SEARCH', maxResults: 10 },
152
+ { type: 'OBJECT_LOCALIZATION', maxResults: 20 },
153
+ { type: 'LABEL_DETECTION', maxResults: 20 },
154
+ { type: 'TEXT_DETECTION' }
155
+ ];
156
+ case 'text-extraction':
157
+ return [
158
+ { type: 'TEXT_DETECTION' },
159
+ { type: 'DOCUMENT_TEXT_DETECTION' }
160
+ ];
161
+ case 'general-description':
162
+ return [
163
+ { type: 'LABEL_DETECTION', maxResults: 20 },
164
+ { type: 'OBJECT_LOCALIZATION', maxResults: 20 },
165
+ { type: 'IMAGE_PROPERTIES' },
166
+ { type: 'SAFE_SEARCH_DETECTION' }
167
+ ];
168
+ default:
169
+ return [
170
+ { type: 'LABEL_DETECTION', maxResults: 10 },
171
+ { type: 'TEXT_DETECTION' }
172
+ ];
173
+ }
174
+ }
175
+ /**
176
+ * Parse Vision API results into our standard format
177
+ */
178
+ parseVisionResult(result, analysisType) {
179
+ var _a, _b;
180
+ const analysis = {
181
+ description: this.buildDescription(result, analysisType),
182
+ confidence: this.calculateOverallConfidence(result),
183
+ detectedObjects: this.mapDetectedObjects(result.localizedObjectAnnotations || []),
184
+ extractedText: ((_b = (_a = result.textAnnotations) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.description) || ''
185
+ };
186
+ // Add product info for product identification
187
+ if (analysisType === 'product-identification' && result.productSearchResults) {
188
+ analysis.productInfo = this.extractProductInfo(result.productSearchResults);
189
+ }
190
+ return analysis;
191
+ }
192
+ /**
193
+ * Build a description from various Vision API results
194
+ */
195
+ buildDescription(result, analysisType) {
196
+ var _a, _b, _c, _d, _e, _f;
197
+ const descriptions = [];
198
+ // Add labels
199
+ if (((_a = result.labelAnnotations) === null || _a === void 0 ? void 0 : _a.length) > 0) {
200
+ const topLabels = result.labelAnnotations
201
+ .slice(0, 5)
202
+ .map((label) => label.description)
203
+ .join(', ');
204
+ descriptions.push(`Detected: ${topLabels}`);
205
+ }
206
+ // Add objects
207
+ if (((_b = result.localizedObjectAnnotations) === null || _b === void 0 ? void 0 : _b.length) > 0) {
208
+ const topObjects = result.localizedObjectAnnotations
209
+ .slice(0, 3)
210
+ .map((obj) => obj.name)
211
+ .join(', ');
212
+ descriptions.push(`Objects: ${topObjects}`);
213
+ }
214
+ // Add product information
215
+ if (((_d = (_c = result.productSearchResults) === null || _c === void 0 ? void 0 : _c.results) === null || _d === void 0 ? void 0 : _d.length) > 0) {
216
+ const topProduct = result.productSearchResults.results[0];
217
+ if ((_e = topProduct.product) === null || _e === void 0 ? void 0 : _e.displayName) {
218
+ descriptions.push(`Product: ${topProduct.product.displayName}`);
219
+ }
220
+ }
221
+ // Add text if it's the main focus
222
+ if (analysisType === 'text-extraction' && ((_f = result.textAnnotations) === null || _f === void 0 ? void 0 : _f.length) > 0) {
223
+ const text = result.textAnnotations[0].description;
224
+ if (text && text.length > 0) {
225
+ descriptions.push(`Text found: "${text.substring(0, 100)}${text.length > 100 ? '...' : ''}"`);
226
+ }
227
+ }
228
+ return descriptions.length > 0 ? descriptions.join('. ') : 'No significant features detected.';
229
+ }
230
+ /**
231
+ * Calculate overall confidence from all detections
232
+ */
233
+ calculateOverallConfidence(result) {
234
+ var _a, _b;
235
+ const confidences = [];
236
+ // Add label confidences
237
+ if (((_a = result.labelAnnotations) === null || _a === void 0 ? void 0 : _a.length) > 0) {
238
+ confidences.push(...result.labelAnnotations.map((label) => label.score || 0));
239
+ }
240
+ // Add object detection confidences
241
+ if (((_b = result.localizedObjectAnnotations) === null || _b === void 0 ? void 0 : _b.length) > 0) {
242
+ confidences.push(...result.localizedObjectAnnotations.map((obj) => obj.score || 0));
243
+ }
244
+ if (confidences.length === 0)
245
+ return 0;
246
+ // Return average of top 3 confidences
247
+ const topConfidences = confidences.sort((a, b) => b - a).slice(0, 3);
248
+ return topConfidences.reduce((sum, conf) => sum + conf, 0) / topConfidences.length;
249
+ }
250
+ /**
251
+ * Map Vision API objects to our standard format
252
+ */
253
+ mapDetectedObjects(objects) {
254
+ return objects.map(obj => ({
255
+ name: obj.name,
256
+ confidence: obj.score || 0,
257
+ boundingBox: this.mapBoundingBox(obj.boundingPoly)
258
+ }));
259
+ }
260
+ /**
261
+ * Map Vision API bounding poly to our standard bounding box
262
+ */
263
+ mapBoundingBox(boundingPoly) {
264
+ var _a;
265
+ if (!((_a = boundingPoly === null || boundingPoly === void 0 ? void 0 : boundingPoly.vertices) === null || _a === void 0 ? void 0 : _a.length))
266
+ return undefined;
267
+ const vertices = boundingPoly.vertices;
268
+ const xs = vertices.map((v) => v.x || 0);
269
+ const ys = vertices.map((v) => v.y || 0);
270
+ const minX = Math.min(...xs);
271
+ const minY = Math.min(...ys);
272
+ const maxX = Math.max(...xs);
273
+ const maxY = Math.max(...ys);
274
+ return {
275
+ x: minX,
276
+ y: minY,
277
+ width: maxX - minX,
278
+ height: maxY - minY
279
+ };
280
+ }
281
+ /**
282
+ * Extract product information from product search results
283
+ */
284
+ extractProductInfo(productResults) {
285
+ var _a, _b, _c, _d, _e, _f, _g;
286
+ if (!((_a = productResults === null || productResults === void 0 ? void 0 : productResults.results) === null || _a === void 0 ? void 0 : _a.length))
287
+ return undefined;
288
+ const topResult = productResults.results[0];
289
+ const product = topResult.product;
290
+ if (!product)
291
+ return undefined;
292
+ return {
293
+ name: product.displayName,
294
+ brand: (_c = (_b = product.productLabels) === null || _b === void 0 ? void 0 : _b.find((label) => { var _a; return (_a = label.key) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes('brand'); })) === null || _c === void 0 ? void 0 : _c.value,
295
+ description: product.description,
296
+ price: (_e = (_d = product.productLabels) === null || _d === void 0 ? void 0 : _d.find((label) => { var _a; return (_a = label.key) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes('price'); })) === null || _e === void 0 ? void 0 : _e.value,
297
+ availability: (_g = (_f = product.productLabels) === null || _f === void 0 ? void 0 : _f.find((label) => { var _a; return (_a = label.key) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes('availability'); })) === null || _g === void 0 ? void 0 : _g.value,
298
+ urls: topResult.image ? [topResult.image.uri] : undefined
299
+ };
300
+ }
301
+ /**
302
+ * Calculate estimated cost based on analysis type
303
+ */
304
+ calculateCost(analysisType) {
305
+ // Google Vision API pricing (as of 2024)
306
+ switch (analysisType) {
307
+ case 'product-identification':
308
+ return 0.003; // Product Search is ~$3 per 1000 requests
309
+ case 'text-extraction':
310
+ return 0.0015; // OCR is ~$1.50 per 1000 requests
311
+ case 'general-description':
312
+ return 0.0015; // Label/Object detection is ~$1.50 per 1000 requests
313
+ default:
314
+ return 0.0015;
315
+ }
316
+ }
317
+ /**
318
+ * Create Vision client with appropriate authentication
319
+ */
320
+ createVisionClient(vision, userApiKey) {
321
+ if (userApiKey) {
322
+ // Use provided API key
323
+ return new vision.ImageAnnotatorClient({
324
+ auth: userApiKey
325
+ });
326
+ }
327
+ else {
328
+ // Use service account or default credentials
329
+ const credentialsPath = process.env.GOOGLE_APPLICATION_CREDENTIALS;
330
+ if (credentialsPath) {
331
+ return new vision.ImageAnnotatorClient({
332
+ keyFilename: credentialsPath
333
+ });
334
+ }
335
+ else {
336
+ // Use default application credentials
337
+ return new vision.ImageAnnotatorClient();
338
+ }
339
+ }
340
+ }
341
+ /**
342
+ * Dynamically import Google Cloud Vision SDK
343
+ */
344
+ async getVisionSDK() {
345
+ try {
346
+ return await Promise.resolve().then(() => __importStar(require('@google-cloud/vision')));
347
+ }
348
+ catch (error) {
349
+ throw new Error('Google Cloud Vision SDK not found. Please install @google-cloud/vision: npm install @google-cloud/vision');
350
+ }
351
+ }
352
+ }
353
+ exports.GoogleLensProvider = GoogleLensProvider;
354
+ //# sourceMappingURL=google-lens.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-lens.provider.js","sourceRoot":"","sources":["../../src/providers/google-lens.provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { BaseProvider } from './base.provider';
2
+ export { ClaudeProvider } from './claude.provider';
3
+ export { OpenAIProvider } from './openai.provider';
4
+ export { GeminiProvider } from './gemini.provider';
5
+ export { GoogleLensProvider } from './google-lens.provider';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GoogleLensProvider = exports.GeminiProvider = exports.OpenAIProvider = exports.ClaudeProvider = exports.BaseProvider = void 0;
4
+ // Base provider
5
+ var base_provider_1 = require("./base.provider");
6
+ Object.defineProperty(exports, "BaseProvider", { enumerable: true, get: function () { return base_provider_1.BaseProvider; } });
7
+ // Concrete provider implementations
8
+ var claude_provider_1 = require("./claude.provider");
9
+ Object.defineProperty(exports, "ClaudeProvider", { enumerable: true, get: function () { return claude_provider_1.ClaudeProvider; } });
10
+ var openai_provider_1 = require("./openai.provider");
11
+ Object.defineProperty(exports, "OpenAIProvider", { enumerable: true, get: function () { return openai_provider_1.OpenAIProvider; } });
12
+ var gemini_provider_1 = require("./gemini.provider");
13
+ Object.defineProperty(exports, "GeminiProvider", { enumerable: true, get: function () { return gemini_provider_1.GeminiProvider; } });
14
+ var google_lens_provider_1 = require("./google-lens.provider");
15
+ Object.defineProperty(exports, "GoogleLensProvider", { enumerable: true, get: function () { return google_lens_provider_1.GoogleLensProvider; } });
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";;;AAAA,gBAAgB;AAChB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AAErB,oCAAoC;AACpC,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA"}
@@ -0,0 +1,30 @@
1
+ import { BaseProvider } from './base.provider';
2
+ import { TextGenerationRequest, TextGenerationResponse, ImageAnalysisRequest, ImageAnalysisResponse, ProviderInfo, ProviderConfig } from '../types';
3
+ /**
4
+ * OpenAI provider implementation
5
+ * Supports GPT models for text generation
6
+ */
7
+ export declare class OpenAIProvider extends BaseProvider {
8
+ constructor(config: ProviderConfig);
9
+ generateText(request: TextGenerationRequest): Promise<TextGenerationResponse>;
10
+ analyzeImage(request: ImageAnalysisRequest): Promise<ImageAnalysisResponse>;
11
+ getInfo(): ProviderInfo;
12
+ protected getApiKeyEnvVar(): string;
13
+ /**
14
+ * Calculate estimated cost based on usage and model
15
+ */
16
+ private calculateCost;
17
+ /**
18
+ * Map OpenAI's finish reasons to our standard format
19
+ */
20
+ private mapFinishReason;
21
+ /**
22
+ * Get default prompt for image analysis type
23
+ */
24
+ private getDefaultImagePrompt;
25
+ /**
26
+ * Dynamically import OpenAI SDK
27
+ */
28
+ private getOpenAISDK;
29
+ }
30
+ //# sourceMappingURL=openai.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.provider.d.ts","sourceRoot":"","sources":["../../src/providers/openai.provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EAErB,YAAY,EACZ,cAAc,EACf,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,qBAAa,cAAe,SAAQ,YAAY;gBAClC,MAAM,EAAE,cAAc;IAI5B,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAmE7E,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAyFjF,OAAO,IAAI,YAAY;IAkCvB,SAAS,CAAC,eAAe,IAAI,MAAM;IAInC;;OAEG;IACH,OAAO,CAAC,aAAa;IAYrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;YACW,YAAY;CAQ3B"}