@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,258 @@
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.OpenAIProvider = void 0;
37
+ const base_provider_1 = require("./base.provider");
38
+ /**
39
+ * OpenAI provider implementation
40
+ * Supports GPT models for text generation
41
+ */
42
+ class OpenAIProvider extends base_provider_1.BaseProvider {
43
+ constructor(config) {
44
+ super('openai', config);
45
+ }
46
+ async generateText(request) {
47
+ var _a, _b, _c, _d;
48
+ const startTime = Date.now();
49
+ const requestId = this.generateRequestId();
50
+ try {
51
+ this.validateRequest(request);
52
+ await this.applyRateLimit();
53
+ // Import OpenAI SDK dynamically
54
+ const OpenAI = await this.getOpenAISDK();
55
+ // Use user API key if provided, otherwise platform key
56
+ const apiKey = this.getApiKey(request.userApiKey);
57
+ const client = new OpenAI({ apiKey });
58
+ const messages = [];
59
+ // Add system message if provided
60
+ if (request.systemPrompt) {
61
+ messages.push({ role: 'system', content: request.systemPrompt });
62
+ }
63
+ messages.push({ role: 'user', content: request.prompt });
64
+ const response = await client.chat.completions.create({
65
+ model: request.model,
66
+ messages,
67
+ max_tokens: request.maxTokens || 1000,
68
+ temperature: request.temperature || 0.7,
69
+ stop: request.stopSequences || undefined
70
+ });
71
+ const processingTime = Date.now() - startTime;
72
+ const choice = response.choices[0];
73
+ const usage = {
74
+ inputTokens: ((_a = response.usage) === null || _a === void 0 ? void 0 : _a.prompt_tokens) || 0,
75
+ outputTokens: ((_b = response.usage) === null || _b === void 0 ? void 0 : _b.completion_tokens) || 0,
76
+ totalTokens: ((_c = response.usage) === null || _c === void 0 ? void 0 : _c.total_tokens) || 0,
77
+ estimatedCost: this.calculateCost(response.usage, request.model),
78
+ processingTimeMs: processingTime
79
+ };
80
+ return Object.assign(Object.assign({}, this.createBaseResponse(requestId, usage)), { model: request.model, text: ((_d = choice.message) === null || _d === void 0 ? void 0 : _d.content) || '', finishReason: this.mapFinishReason(choice.finish_reason) });
81
+ }
82
+ catch (error) {
83
+ const processingTime = Date.now() - startTime;
84
+ return Object.assign(Object.assign({}, this.handleProviderError(error, requestId, request.model)), { text: '', finishReason: 'error', usage: {
85
+ inputTokens: 0,
86
+ outputTokens: 0,
87
+ totalTokens: 0,
88
+ processingTimeMs: processingTime
89
+ } });
90
+ }
91
+ }
92
+ async analyzeImage(request) {
93
+ var _a, _b, _c, _d;
94
+ const startTime = Date.now();
95
+ const requestId = this.generateRequestId();
96
+ try {
97
+ this.validateRequest(request);
98
+ await this.applyRateLimit();
99
+ // Import OpenAI SDK dynamically
100
+ const OpenAI = await this.getOpenAISDK();
101
+ // Use user API key if provided, otherwise platform key
102
+ const apiKey = this.getApiKey(request.userApiKey);
103
+ const client = new OpenAI({ apiKey });
104
+ // Prepare image content
105
+ let imageContent;
106
+ if (request.imageUrl) {
107
+ imageContent = {
108
+ type: "image_url",
109
+ image_url: { url: request.imageUrl }
110
+ };
111
+ }
112
+ else if (request.imageBase64) {
113
+ imageContent = {
114
+ type: "image_url",
115
+ image_url: { url: `data:image/jpeg;base64,${request.imageBase64}` }
116
+ };
117
+ }
118
+ else {
119
+ throw new Error('Either imageUrl or imageBase64 is required');
120
+ }
121
+ const prompt = request.prompt || this.getDefaultImagePrompt(request.analysisType);
122
+ const response = await client.chat.completions.create({
123
+ model: request.model,
124
+ messages: [
125
+ {
126
+ role: "user",
127
+ content: [
128
+ { type: "text", text: prompt },
129
+ imageContent
130
+ ]
131
+ }
132
+ ],
133
+ max_tokens: 1000
134
+ });
135
+ const processingTime = Date.now() - startTime;
136
+ const choice = response.choices[0];
137
+ const usage = {
138
+ inputTokens: ((_a = response.usage) === null || _a === void 0 ? void 0 : _a.prompt_tokens) || 0,
139
+ outputTokens: ((_b = response.usage) === null || _b === void 0 ? void 0 : _b.completion_tokens) || 0,
140
+ totalTokens: ((_c = response.usage) === null || _c === void 0 ? void 0 : _c.total_tokens) || 0,
141
+ estimatedCost: this.calculateCost(response.usage, request.model),
142
+ processingTimeMs: processingTime
143
+ };
144
+ return Object.assign(Object.assign({}, this.createBaseResponse(requestId, usage)), { model: request.model, analysis: {
145
+ description: ((_d = choice.message) === null || _d === void 0 ? void 0 : _d.content) || '',
146
+ confidence: 0.8, // OpenAI doesn't provide confidence scores
147
+ detectedObjects: [], // Would need additional processing
148
+ extractedText: '', // Would need OCR-specific prompt
149
+ } });
150
+ }
151
+ catch (error) {
152
+ const processingTime = Date.now() - startTime;
153
+ return Object.assign(Object.assign({}, this.handleProviderError(error, requestId, request.model)), { analysis: {
154
+ description: '',
155
+ detectedObjects: [],
156
+ extractedText: ''
157
+ }, usage: {
158
+ inputTokens: 0,
159
+ outputTokens: 0,
160
+ totalTokens: 0,
161
+ processingTimeMs: processingTime
162
+ } });
163
+ }
164
+ }
165
+ getInfo() {
166
+ return {
167
+ name: 'openai',
168
+ displayName: 'OpenAI',
169
+ availableModels: [
170
+ {
171
+ id: 'gpt-4o',
172
+ displayName: 'GPT-4o',
173
+ contextWindow: 128000,
174
+ costPer1kTokens: { input: 0.005, output: 0.015 }
175
+ },
176
+ {
177
+ id: 'gpt-4o-mini',
178
+ displayName: 'GPT-4o Mini',
179
+ contextWindow: 128000,
180
+ costPer1kTokens: { input: 0.00015, output: 0.0006 }
181
+ },
182
+ {
183
+ id: 'gpt-4-turbo',
184
+ displayName: 'GPT-4 Turbo',
185
+ contextWindow: 128000,
186
+ costPer1kTokens: { input: 0.01, output: 0.03 }
187
+ },
188
+ {
189
+ id: 'gpt-3.5-turbo',
190
+ displayName: 'GPT-3.5 Turbo',
191
+ contextWindow: 16385,
192
+ costPer1kTokens: { input: 0.0005, output: 0.0015 }
193
+ }
194
+ ],
195
+ supportedFeatures: ['text-generation', 'image-analysis']
196
+ };
197
+ }
198
+ getApiKeyEnvVar() {
199
+ return 'OPENAI_API_KEY';
200
+ }
201
+ /**
202
+ * Calculate estimated cost based on usage and model
203
+ */
204
+ calculateCost(usage, model) {
205
+ if (!usage)
206
+ return 0;
207
+ const modelInfo = this.getInfo().availableModels.find((m) => m.id === model);
208
+ if (!(modelInfo === null || modelInfo === void 0 ? void 0 : modelInfo.costPer1kTokens))
209
+ return 0;
210
+ const inputCost = (usage.prompt_tokens / 1000) * modelInfo.costPer1kTokens.input;
211
+ const outputCost = (usage.completion_tokens / 1000) * modelInfo.costPer1kTokens.output;
212
+ return Math.round((inputCost + outputCost) * 100000) / 100000; // Round to 5 decimal places
213
+ }
214
+ /**
215
+ * Map OpenAI's finish reasons to our standard format
216
+ */
217
+ mapFinishReason(reason) {
218
+ switch (reason) {
219
+ case 'stop':
220
+ return 'completed';
221
+ case 'length':
222
+ return 'length';
223
+ case 'content_filter':
224
+ return 'stop';
225
+ default:
226
+ return 'error';
227
+ }
228
+ }
229
+ /**
230
+ * Get default prompt for image analysis type
231
+ */
232
+ getDefaultImagePrompt(analysisType) {
233
+ switch (analysisType) {
234
+ case 'product-identification':
235
+ return 'Please identify the product in this image. Describe what it is, any visible brand names, and key features.';
236
+ case 'text-extraction':
237
+ return 'Please extract all visible text from this image.';
238
+ case 'general-description':
239
+ return 'Please describe what you see in this image in detail.';
240
+ default:
241
+ return 'Please analyze this image and describe what you see.';
242
+ }
243
+ }
244
+ /**
245
+ * Dynamically import OpenAI SDK
246
+ */
247
+ async getOpenAISDK() {
248
+ try {
249
+ const module = await Promise.resolve().then(() => __importStar(require('openai')));
250
+ return module.default || module;
251
+ }
252
+ catch (error) {
253
+ throw new Error('OpenAI SDK not found. Please install openai: npm install openai');
254
+ }
255
+ }
256
+ }
257
+ exports.OpenAIProvider = OpenAIProvider;
258
+ //# sourceMappingURL=openai.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.provider.js","sourceRoot":"","sources":["../../src/providers/openai.provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Provider configuration interface
3
+ */
4
+ export interface ProviderConfig {
5
+ name: string;
6
+ enabled: boolean;
7
+ defaultModel: string;
8
+ timeout: number;
9
+ maxRetries: number;
10
+ rateLimits?: {
11
+ requestsPerMinute: number;
12
+ tokensPerMinute: number;
13
+ };
14
+ }
15
+ /**
16
+ * Provider information for client queries
17
+ */
18
+ export interface ProviderInfo {
19
+ name: string;
20
+ displayName: string;
21
+ availableModels: ModelInfo[];
22
+ supportedFeatures: ('text-generation' | 'image-analysis')[];
23
+ }
24
+ /**
25
+ * Model information
26
+ */
27
+ export interface ModelInfo {
28
+ id: string;
29
+ displayName: string;
30
+ contextWindow: number;
31
+ costPer1kTokens?: {
32
+ input: number;
33
+ output: number;
34
+ };
35
+ }
36
+ /**
37
+ * Detected object in image analysis
38
+ */
39
+ export interface DetectedObject {
40
+ name: string;
41
+ confidence: number;
42
+ boundingBox?: BoundingBox;
43
+ }
44
+ /**
45
+ * Product information from Google Lens
46
+ */
47
+ export interface ProductInfo {
48
+ name?: string;
49
+ brand?: string;
50
+ description?: string;
51
+ price?: string;
52
+ availability?: string;
53
+ urls?: string[];
54
+ }
55
+ /**
56
+ * Bounding box coordinates
57
+ */
58
+ export interface BoundingBox {
59
+ x: number;
60
+ y: number;
61
+ width: number;
62
+ height: number;
63
+ }
64
+ //# sourceMappingURL=providers.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.types.d.ts","sourceRoot":"","sources":["../../src/providers/providers.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,SAAS,EAAE,CAAC;IAC7B,iBAAiB,EAAE,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,EAAE,CAAC;CAC7D;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=providers.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.types.js","sourceRoot":"","sources":["../../src/providers/providers.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
1
+ import { DetectedObject, ProductInfo } from './providers/providers.types';
2
+ /**
3
+ * Base request interface for all LLM operations
4
+ */
5
+ export interface BaseRequest {
6
+ provider: string;
7
+ model: string;
8
+ userApiKey?: string;
9
+ }
10
+ /**
11
+ * Text generation request
12
+ */
13
+ export interface TextGenerationRequest extends BaseRequest {
14
+ prompt: string;
15
+ maxTokens?: number;
16
+ temperature?: number;
17
+ systemPrompt?: string;
18
+ stopSequences?: string[];
19
+ }
20
+ /**
21
+ * Image analysis request
22
+ */
23
+ export interface ImageAnalysisRequest extends BaseRequest {
24
+ imageUrl?: string;
25
+ imageBase64?: string;
26
+ analysisType: 'product-identification' | 'general-description' | 'text-extraction';
27
+ prompt?: string;
28
+ }
29
+ /**
30
+ * Usage metrics for cost tracking
31
+ */
32
+ export interface UsageMetrics {
33
+ inputTokens: number;
34
+ outputTokens: number;
35
+ totalTokens: number;
36
+ estimatedCost?: number;
37
+ processingTimeMs: number;
38
+ }
39
+ /**
40
+ * Base response interface
41
+ */
42
+ export interface BaseResponse {
43
+ success: boolean;
44
+ error?: string;
45
+ usage: UsageMetrics;
46
+ provider: string;
47
+ model: string;
48
+ requestId: string;
49
+ }
50
+ /**
51
+ * Text generation response
52
+ */
53
+ export interface TextGenerationResponse extends BaseResponse {
54
+ text: string;
55
+ finishReason: 'completed' | 'length' | 'stop' | 'error';
56
+ }
57
+ /**
58
+ * Image analysis response
59
+ */
60
+ export interface ImageAnalysisResponse extends BaseResponse {
61
+ analysis: {
62
+ description: string;
63
+ confidence?: number;
64
+ detectedObjects?: DetectedObject[];
65
+ extractedText?: string;
66
+ productInfo?: ProductInfo;
67
+ };
68
+ }
69
+ //# sourceMappingURL=requests.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requests.types.d.ts","sourceRoot":"","sources":["../src/requests.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,wBAAwB,GAAG,qBAAqB,GAAG,iBAAiB,CAAC;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;QACnC,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,WAAW,CAAC;KAC3B,CAAC;CACH"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=requests.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requests.types.js","sourceRoot":"","sources":["../src/requests.types.ts"],"names":[],"mappings":""}
package/lib/types.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Central types file for LLM Connector
3
+ * Re-exports all types from request and provider type files
4
+ */
5
+ export * from './requests.types';
6
+ export * from './providers/providers.types';
7
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,6BAA6B,CAAC"}
package/lib/types.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /**
3
+ * Central types file for LLM Connector
4
+ * Re-exports all types from request and provider type files
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ // Re-export all request/response types
22
+ __exportStar(require("./requests.types"), exports);
23
+ // Re-export all provider types
24
+ __exportStar(require("./providers/providers.types"), exports);
25
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAEH,uCAAuC;AACvC,mDAAiC;AAEjC,+BAA+B;AAC/B,8DAA4C"}
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@xbg.solutions/utils-llm-connector",
3
+ "version": "1.0.0",
4
+ "description": "LLM integration with OpenAI, Claude, and Gemini",
5
+ "main": "lib/index.js",
6
+ "types": "lib/index.d.ts",
7
+ "files": [
8
+ "lib"
9
+ ],
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "build:watch": "tsc --watch",
13
+ "clean": "rm -rf lib",
14
+ "prepublishOnly": "npm run build"
15
+ },
16
+ "dependencies": {
17
+ "@xbg/utils-logger": "^1.0.0",
18
+ "axios": "^1.6.2"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "^20.11.0",
22
+ "typescript": "^5.3.3"
23
+ },
24
+ "engines": {
25
+ "node": "22"
26
+ },
27
+ "publishConfig": {
28
+ "access": "public"
29
+ }
30
+ }