hazo_llm_api 1.0.4 → 1.0.5

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 (145) hide show
  1. package/dist/components/index.d.ts +7 -0
  2. package/dist/components/index.d.ts.map +1 -0
  3. package/dist/components/index.js +7 -0
  4. package/dist/components/index.js.map +1 -0
  5. package/dist/components/layout/index.d.ts +7 -0
  6. package/dist/components/layout/index.d.ts.map +1 -0
  7. package/dist/components/layout/index.js +7 -0
  8. package/dist/components/layout/index.js.map +1 -0
  9. package/dist/components/layout/layout.d.ts +21 -0
  10. package/dist/components/layout/layout.d.ts.map +1 -0
  11. package/dist/components/layout/layout.js +18 -0
  12. package/dist/components/layout/layout.js.map +1 -0
  13. package/dist/index.d.ts +15 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +21 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/lib/config/config_parser.d.ts +131 -0
  18. package/dist/lib/config/config_parser.d.ts.map +1 -0
  19. package/dist/lib/config/config_parser.js +297 -0
  20. package/dist/lib/config/config_parser.js.map +1 -0
  21. package/dist/lib/config/index.d.ts +8 -0
  22. package/dist/lib/config/index.d.ts.map +1 -0
  23. package/dist/lib/config/index.js +22 -0
  24. package/dist/lib/config/index.js.map +1 -0
  25. package/dist/lib/config/provider_loader.d.ts +113 -0
  26. package/dist/lib/config/provider_loader.d.ts.map +1 -0
  27. package/dist/lib/config/provider_loader.js +169 -0
  28. package/dist/lib/config/provider_loader.js.map +1 -0
  29. package/dist/lib/database/index.d.ts +8 -0
  30. package/dist/lib/database/index.d.ts.map +1 -0
  31. package/dist/lib/database/index.js +10 -0
  32. package/dist/lib/database/index.js.map +1 -0
  33. package/dist/lib/database/init_database.d.ts +118 -0
  34. package/dist/lib/database/init_database.d.ts.map +1 -0
  35. package/dist/lib/database/init_database.js +591 -0
  36. package/dist/lib/database/init_database.js.map +1 -0
  37. package/dist/lib/database/utils.d.ts +53 -0
  38. package/dist/lib/database/utils.d.ts.map +1 -0
  39. package/dist/lib/database/utils.js +87 -0
  40. package/dist/lib/database/utils.js.map +1 -0
  41. package/dist/lib/index.d.ts +14 -0
  42. package/dist/lib/index.d.ts.map +1 -0
  43. package/dist/lib/index.js +17 -0
  44. package/dist/lib/index.js.map +1 -0
  45. package/dist/lib/llm_api/chain_helpers.d.ts +117 -0
  46. package/dist/lib/llm_api/chain_helpers.d.ts.map +1 -0
  47. package/dist/lib/llm_api/chain_helpers.js +445 -0
  48. package/dist/lib/llm_api/chain_helpers.js.map +1 -0
  49. package/dist/lib/llm_api/hazo_llm_image_image.d.ts +26 -0
  50. package/dist/lib/llm_api/hazo_llm_image_image.d.ts.map +1 -0
  51. package/dist/lib/llm_api/hazo_llm_image_image.js +94 -0
  52. package/dist/lib/llm_api/hazo_llm_image_image.js.map +1 -0
  53. package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts +26 -0
  54. package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts.map +1 -0
  55. package/dist/lib/llm_api/hazo_llm_image_image_text.js +222 -0
  56. package/dist/lib/llm_api/hazo_llm_image_image_text.js.map +1 -0
  57. package/dist/lib/llm_api/hazo_llm_image_text.d.ts +20 -0
  58. package/dist/lib/llm_api/hazo_llm_image_text.d.ts.map +1 -0
  59. package/dist/lib/llm_api/hazo_llm_image_text.js +78 -0
  60. package/dist/lib/llm_api/hazo_llm_image_text.js.map +1 -0
  61. package/dist/lib/llm_api/hazo_llm_prompt_chain.d.ts +20 -0
  62. package/dist/lib/llm_api/hazo_llm_prompt_chain.d.ts.map +1 -0
  63. package/dist/lib/llm_api/hazo_llm_prompt_chain.js +368 -0
  64. package/dist/lib/llm_api/hazo_llm_prompt_chain.js.map +1 -0
  65. package/dist/lib/llm_api/hazo_llm_text_image.d.ts +20 -0
  66. package/dist/lib/llm_api/hazo_llm_text_image.d.ts.map +1 -0
  67. package/dist/lib/llm_api/hazo_llm_text_image.js +69 -0
  68. package/dist/lib/llm_api/hazo_llm_text_image.js.map +1 -0
  69. package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts +26 -0
  70. package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts.map +1 -0
  71. package/dist/lib/llm_api/hazo_llm_text_image_text.js +154 -0
  72. package/dist/lib/llm_api/hazo_llm_text_image_text.js.map +1 -0
  73. package/dist/lib/llm_api/hazo_llm_text_text.d.ts +20 -0
  74. package/dist/lib/llm_api/hazo_llm_text_text.d.ts.map +1 -0
  75. package/dist/lib/llm_api/hazo_llm_text_text.js +91 -0
  76. package/dist/lib/llm_api/hazo_llm_text_text.js.map +1 -0
  77. package/dist/lib/llm_api/index.d.ts +223 -0
  78. package/dist/lib/llm_api/index.d.ts.map +1 -0
  79. package/dist/lib/llm_api/index.js +1220 -0
  80. package/dist/lib/llm_api/index.js.map +1 -0
  81. package/dist/lib/llm_api/provider_helper.d.ts +163 -0
  82. package/dist/lib/llm_api/provider_helper.d.ts.map +1 -0
  83. package/dist/lib/llm_api/provider_helper.js +346 -0
  84. package/dist/lib/llm_api/provider_helper.js.map +1 -0
  85. package/dist/lib/llm_api/types.d.ts +667 -0
  86. package/dist/lib/llm_api/types.d.ts.map +1 -0
  87. package/dist/lib/llm_api/types.js +49 -0
  88. package/dist/lib/llm_api/types.js.map +1 -0
  89. package/dist/lib/prompts/get_prompt.d.ts +76 -0
  90. package/dist/lib/prompts/get_prompt.d.ts.map +1 -0
  91. package/dist/lib/prompts/get_prompt.js +342 -0
  92. package/dist/lib/prompts/get_prompt.js.map +1 -0
  93. package/dist/lib/prompts/index.d.ts +9 -0
  94. package/dist/lib/prompts/index.d.ts.map +1 -0
  95. package/dist/lib/prompts/index.js +9 -0
  96. package/dist/lib/prompts/index.js.map +1 -0
  97. package/dist/lib/prompts/prompt_cache.d.ts +151 -0
  98. package/dist/lib/prompts/prompt_cache.d.ts.map +1 -0
  99. package/dist/lib/prompts/prompt_cache.js +276 -0
  100. package/dist/lib/prompts/prompt_cache.js.map +1 -0
  101. package/dist/lib/prompts/substitute_variables.d.ts +38 -0
  102. package/dist/lib/prompts/substitute_variables.d.ts.map +1 -0
  103. package/dist/lib/prompts/substitute_variables.js +171 -0
  104. package/dist/lib/prompts/substitute_variables.js.map +1 -0
  105. package/dist/lib/providers/gemini/gemini_client.d.ts +25 -0
  106. package/dist/lib/providers/gemini/gemini_client.d.ts.map +1 -0
  107. package/dist/lib/providers/gemini/gemini_client.js +235 -0
  108. package/dist/lib/providers/gemini/gemini_client.js.map +1 -0
  109. package/dist/lib/providers/gemini/gemini_provider.d.ts +111 -0
  110. package/dist/lib/providers/gemini/gemini_provider.d.ts.map +1 -0
  111. package/dist/lib/providers/gemini/gemini_provider.js +431 -0
  112. package/dist/lib/providers/gemini/gemini_provider.js.map +1 -0
  113. package/dist/lib/providers/gemini/index.d.ts +8 -0
  114. package/dist/lib/providers/gemini/index.d.ts.map +1 -0
  115. package/dist/lib/providers/gemini/index.js +8 -0
  116. package/dist/lib/providers/gemini/index.js.map +1 -0
  117. package/dist/lib/providers/index.d.ts +8 -0
  118. package/dist/lib/providers/index.d.ts.map +1 -0
  119. package/dist/lib/providers/index.js +8 -0
  120. package/dist/lib/providers/index.js.map +1 -0
  121. package/dist/lib/providers/qwen/index.d.ts +8 -0
  122. package/dist/lib/providers/qwen/index.d.ts.map +1 -0
  123. package/dist/lib/providers/qwen/index.js +8 -0
  124. package/dist/lib/providers/qwen/index.js.map +1 -0
  125. package/dist/lib/providers/qwen/qwen_client.d.ts +154 -0
  126. package/dist/lib/providers/qwen/qwen_client.d.ts.map +1 -0
  127. package/dist/lib/providers/qwen/qwen_client.js +1002 -0
  128. package/dist/lib/providers/qwen/qwen_client.js.map +1 -0
  129. package/dist/lib/providers/qwen/qwen_provider.d.ts +139 -0
  130. package/dist/lib/providers/qwen/qwen_provider.d.ts.map +1 -0
  131. package/dist/lib/providers/qwen/qwen_provider.js +304 -0
  132. package/dist/lib/providers/qwen/qwen_provider.js.map +1 -0
  133. package/dist/lib/providers/registry.d.ts +66 -0
  134. package/dist/lib/providers/registry.d.ts.map +1 -0
  135. package/dist/lib/providers/registry.js +158 -0
  136. package/dist/lib/providers/registry.js.map +1 -0
  137. package/dist/lib/providers/types.d.ts +145 -0
  138. package/dist/lib/providers/types.d.ts.map +1 -0
  139. package/dist/lib/providers/types.js +37 -0
  140. package/dist/lib/providers/types.js.map +1 -0
  141. package/dist/server.d.ts +27 -0
  142. package/dist/server.d.ts.map +1 -0
  143. package/dist/server.js +50 -0
  144. package/dist/server.js.map +1 -0
  145. package/package.json +12 -1
@@ -0,0 +1,431 @@
1
+ /**
2
+ * Gemini Provider Implementation
3
+ *
4
+ * Implements the LLMProvider interface for Google's Gemini API.
5
+ * Handles all Gemini-specific logic including API calls, configuration, and capabilities.
6
+ */
7
+ import { SERVICE_TYPES } from '../types.js';
8
+ import { call_gemini_api } from './gemini_client.js';
9
+ import { get_gemini_api_url } from './gemini_client.js';
10
+ // =============================================================================
11
+ // Gemini Provider Class
12
+ // =============================================================================
13
+ /**
14
+ * Gemini LLM Provider
15
+ * Implements the LLMProvider interface for Google Gemini API
16
+ */
17
+ export class GeminiProvider {
18
+ /**
19
+ * Create a new Gemini provider instance
20
+ * @param config - Gemini provider configuration
21
+ */
22
+ constructor(config) {
23
+ this.name = 'gemini';
24
+ this.api_key = config.api_key;
25
+ this.api_url = config.api_url || get_gemini_api_url();
26
+ this.api_url_image = config.api_url_image;
27
+ this.model_text_text = config.model_text_text;
28
+ this.model_image_text = config.model_image_text;
29
+ this.model_text_image = config.model_text_image;
30
+ this.model_image_image = config.model_image_image;
31
+ this.text_config = config.text_config;
32
+ this.image_config = config.image_config;
33
+ this.logger = config.logger;
34
+ // Set capabilities - default to all if not specified
35
+ if (config.capabilities && config.capabilities.length > 0) {
36
+ this.capabilities = new Set(config.capabilities);
37
+ }
38
+ else {
39
+ // Default: support all services
40
+ this.capabilities = new Set([
41
+ SERVICE_TYPES.TEXT_TEXT,
42
+ SERVICE_TYPES.IMAGE_TEXT,
43
+ SERVICE_TYPES.TEXT_IMAGE,
44
+ SERVICE_TYPES.IMAGE_IMAGE,
45
+ ]);
46
+ }
47
+ }
48
+ /**
49
+ * Get the provider name
50
+ * @returns Provider name
51
+ */
52
+ get_name() {
53
+ return this.name;
54
+ }
55
+ /**
56
+ * Get the capabilities this provider supports
57
+ * @returns Set of supported service types
58
+ */
59
+ get_capabilities() {
60
+ return new Set(this.capabilities); // Return a copy
61
+ }
62
+ /**
63
+ * Get the model name configured for a specific service type
64
+ * @param service_type - The service type to get the model for
65
+ * @returns Model name or undefined if not configured
66
+ */
67
+ get_model_for_service(service_type) {
68
+ switch (service_type) {
69
+ case SERVICE_TYPES.TEXT_TEXT:
70
+ return this.model_text_text;
71
+ case SERVICE_TYPES.IMAGE_TEXT:
72
+ return this.model_image_text;
73
+ case SERVICE_TYPES.TEXT_IMAGE:
74
+ return this.model_text_image;
75
+ case SERVICE_TYPES.IMAGE_IMAGE:
76
+ return this.model_image_image;
77
+ default:
78
+ return undefined;
79
+ }
80
+ }
81
+ /**
82
+ * Text input → Text output
83
+ * Generate text from a text prompt
84
+ *
85
+ * @param params - Text input parameters
86
+ * @param logger - Logger instance
87
+ * @returns LLM response with generated text
88
+ */
89
+ async text_text(params, logger) {
90
+ const file_name = 'gemini_provider.ts';
91
+ // Use the prompt directly (variable substitution should be done by service layer)
92
+ const prompt_text = params.prompt;
93
+ // Use per-service model if configured, otherwise use default api_url
94
+ const model = this.model_text_text;
95
+ const api_url = model ? get_gemini_api_url(model) : this.api_url;
96
+ logger.debug('Gemini provider: text_text', {
97
+ file: file_name,
98
+ line: 171,
99
+ data: {
100
+ prompt_length: prompt_text.length,
101
+ has_variables: !!params.prompt_variables,
102
+ model: model || 'default (from api_url)',
103
+ api_url,
104
+ },
105
+ });
106
+ return await call_gemini_api(api_url, this.api_key, prompt_text, undefined, // No image data
107
+ logger, this.text_config);
108
+ }
109
+ /**
110
+ * Image input → Text output
111
+ * Analyze an image and generate text description
112
+ *
113
+ * @param params - Image input parameters
114
+ * @param logger - Logger instance
115
+ * @returns LLM response with generated text
116
+ */
117
+ async image_text(params, logger) {
118
+ const file_name = 'gemini_provider.ts';
119
+ if (!params.image_b64 || !params.image_mime_type) {
120
+ return {
121
+ success: false,
122
+ error: 'image_b64 and image_mime_type are required',
123
+ };
124
+ }
125
+ const image_data = [{
126
+ mime_type: params.image_mime_type,
127
+ data: params.image_b64,
128
+ }];
129
+ // Use per-service model if configured, otherwise use default api_url
130
+ const model = this.model_image_text;
131
+ const api_url = model ? get_gemini_api_url(model) : this.api_url;
132
+ logger.debug('Gemini provider: image_text', {
133
+ file: file_name,
134
+ line: 213,
135
+ data: {
136
+ prompt_length: params.prompt.length,
137
+ image_mime_type: params.image_mime_type,
138
+ model: model || 'default (from api_url)',
139
+ api_url,
140
+ },
141
+ });
142
+ return await call_gemini_api(api_url, this.api_key, params.prompt, image_data, logger, this.image_config);
143
+ }
144
+ /**
145
+ * Text input → Image output
146
+ * Generate an image from a text prompt
147
+ *
148
+ * @param params - Text input parameters for image generation
149
+ * @param logger - Logger instance
150
+ * @returns LLM response with generated image
151
+ */
152
+ async text_image(params, logger) {
153
+ const file_name = 'gemini_provider.ts';
154
+ // Use per-service model if configured, otherwise use api_url_image or api_url
155
+ const model = this.model_text_image;
156
+ let api_url;
157
+ if (model) {
158
+ api_url = get_gemini_api_url(model);
159
+ }
160
+ else {
161
+ api_url = this.api_url_image || this.api_url;
162
+ }
163
+ logger.debug('Gemini provider: text_image', {
164
+ file: file_name,
165
+ line: 256,
166
+ data: {
167
+ prompt_length: params.prompt.length,
168
+ model: model || 'default (from api_url_image/api_url)',
169
+ api_url,
170
+ },
171
+ });
172
+ try {
173
+ const url = `${api_url}?key=${this.api_key}`;
174
+ // Build generation config with required responseModalities for image generation
175
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
176
+ const gen_config = {
177
+ responseModalities: ['TEXT', 'IMAGE'],
178
+ };
179
+ // Merge in any custom config
180
+ if (this.image_config) {
181
+ if (this.image_config.temperature !== undefined) {
182
+ gen_config.temperature = this.image_config.temperature;
183
+ }
184
+ if (this.image_config.max_output_tokens !== undefined) {
185
+ gen_config.maxOutputTokens = this.image_config.max_output_tokens;
186
+ }
187
+ if (this.image_config.top_p !== undefined) {
188
+ gen_config.topP = this.image_config.top_p;
189
+ }
190
+ if (this.image_config.top_k !== undefined) {
191
+ gen_config.topK = this.image_config.top_k;
192
+ }
193
+ if (this.image_config.candidate_count !== undefined) {
194
+ gen_config.candidateCount = this.image_config.candidate_count;
195
+ }
196
+ if (this.image_config.stop_sequences !== undefined && this.image_config.stop_sequences.length > 0) {
197
+ gen_config.stopSequences = this.image_config.stop_sequences;
198
+ }
199
+ if (this.image_config.response_mime_type !== undefined) {
200
+ gen_config.responseMimeType = this.image_config.response_mime_type;
201
+ }
202
+ }
203
+ const request_body = {
204
+ contents: [
205
+ {
206
+ parts: [{ text: params.prompt }],
207
+ },
208
+ ],
209
+ generationConfig: gen_config,
210
+ };
211
+ logger.debug('Calling Gemini image generation API', {
212
+ file: file_name,
213
+ line: 220,
214
+ data: {
215
+ api_url,
216
+ prompt: params.prompt,
217
+ generation_config: gen_config,
218
+ },
219
+ });
220
+ const response = await fetch(url, {
221
+ method: 'POST',
222
+ headers: { 'Content-Type': 'application/json' },
223
+ body: JSON.stringify(request_body),
224
+ });
225
+ const data = await response.json();
226
+ if (!response.ok) {
227
+ const error_msg = data?.error?.message || `API error: ${response.status}`;
228
+ logger.error('Gemini image generation failed', {
229
+ file: file_name,
230
+ line: 238,
231
+ data: { status: response.status, error: error_msg, generation_config: gen_config },
232
+ });
233
+ return { success: false, error: error_msg };
234
+ }
235
+ // Extract image and text from response
236
+ const candidates = data.candidates;
237
+ if (!candidates || candidates.length === 0) {
238
+ return { success: false, error: 'No content generated' };
239
+ }
240
+ const parts = candidates[0]?.content?.parts || [];
241
+ let image_b64;
242
+ let image_mime_type;
243
+ let text;
244
+ for (const part of parts) {
245
+ if (part.inlineData) {
246
+ image_b64 = part.inlineData.data;
247
+ image_mime_type = part.inlineData.mimeType || 'image/png';
248
+ }
249
+ if (part.text) {
250
+ text = part.text;
251
+ }
252
+ }
253
+ return {
254
+ success: true,
255
+ text,
256
+ image_b64,
257
+ image_mime_type,
258
+ raw_response: data,
259
+ };
260
+ }
261
+ catch (error) {
262
+ const error_message = error instanceof Error ? error.message : String(error);
263
+ logger.error('Error calling Gemini image generation', {
264
+ file: file_name,
265
+ line: 270,
266
+ data: { error: error_message },
267
+ });
268
+ return { success: false, error: error_message };
269
+ }
270
+ }
271
+ /**
272
+ * Image input → Image output
273
+ * Transform/edit an image based on instructions
274
+ *
275
+ * @param params - Image input parameters with transformation instructions
276
+ * @param logger - Logger instance
277
+ * @returns LLM response with transformed image
278
+ */
279
+ async image_image(params, logger) {
280
+ const file_name = 'gemini_provider.ts';
281
+ // Collect images
282
+ const images = [];
283
+ if (params.images && params.images.length > 0) {
284
+ images.push(...params.images);
285
+ }
286
+ else if (params.image_b64 && params.image_mime_type) {
287
+ images.push({
288
+ data: params.image_b64,
289
+ mime_type: params.image_mime_type,
290
+ });
291
+ }
292
+ if (images.length === 0) {
293
+ return {
294
+ success: false,
295
+ error: 'At least one image is required',
296
+ };
297
+ }
298
+ // Use per-service model if configured, otherwise use api_url_image or api_url
299
+ const model = this.model_image_image;
300
+ let api_url;
301
+ if (model) {
302
+ api_url = get_gemini_api_url(model);
303
+ }
304
+ else {
305
+ api_url = this.api_url_image || this.api_url;
306
+ }
307
+ logger.debug('Gemini provider: image_image', {
308
+ file: file_name,
309
+ line: 407,
310
+ data: {
311
+ prompt_length: params.prompt.length,
312
+ image_count: images.length,
313
+ model: model || 'default (from api_url_image/api_url)',
314
+ api_url,
315
+ },
316
+ });
317
+ try {
318
+ const url = `${api_url}?key=${this.api_key}`;
319
+ // Build parts array with all images followed by the text prompt
320
+ const parts = [];
321
+ // Add all images
322
+ for (const image of images) {
323
+ parts.push({
324
+ inlineData: {
325
+ mimeType: image.mime_type,
326
+ data: image.data,
327
+ },
328
+ });
329
+ }
330
+ // Add the text prompt
331
+ parts.push({ text: params.prompt });
332
+ // Build generation config with required responseModalities
333
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
334
+ const gen_config = {
335
+ responseModalities: ['TEXT', 'IMAGE'],
336
+ };
337
+ // Merge in any custom config
338
+ if (this.image_config) {
339
+ if (this.image_config.temperature !== undefined) {
340
+ gen_config.temperature = this.image_config.temperature;
341
+ }
342
+ if (this.image_config.max_output_tokens !== undefined) {
343
+ gen_config.maxOutputTokens = this.image_config.max_output_tokens;
344
+ }
345
+ if (this.image_config.top_p !== undefined) {
346
+ gen_config.topP = this.image_config.top_p;
347
+ }
348
+ if (this.image_config.top_k !== undefined) {
349
+ gen_config.topK = this.image_config.top_k;
350
+ }
351
+ if (this.image_config.candidate_count !== undefined) {
352
+ gen_config.candidateCount = this.image_config.candidate_count;
353
+ }
354
+ if (this.image_config.stop_sequences !== undefined && this.image_config.stop_sequences.length > 0) {
355
+ gen_config.stopSequences = this.image_config.stop_sequences;
356
+ }
357
+ if (this.image_config.response_mime_type !== undefined) {
358
+ gen_config.responseMimeType = this.image_config.response_mime_type;
359
+ }
360
+ }
361
+ const request_body = {
362
+ contents: [
363
+ {
364
+ parts: parts,
365
+ },
366
+ ],
367
+ generationConfig: gen_config,
368
+ };
369
+ logger.debug('Calling Gemini image transformation API', {
370
+ file: file_name,
371
+ line: 375,
372
+ data: {
373
+ api_url,
374
+ prompt: params.prompt,
375
+ image_count: images.length,
376
+ generation_config: gen_config,
377
+ },
378
+ });
379
+ const response = await fetch(url, {
380
+ method: 'POST',
381
+ headers: { 'Content-Type': 'application/json' },
382
+ body: JSON.stringify(request_body),
383
+ });
384
+ const data = await response.json();
385
+ if (!response.ok) {
386
+ const error_msg = data?.error?.message || `API error: ${response.status}`;
387
+ logger.error('Gemini image transformation failed', {
388
+ file: file_name,
389
+ line: 393,
390
+ data: { status: response.status, error: error_msg, generation_config: gen_config },
391
+ });
392
+ return { success: false, error: error_msg };
393
+ }
394
+ // Extract image and text from response
395
+ const candidates = data.candidates;
396
+ if (!candidates || candidates.length === 0) {
397
+ return { success: false, error: 'No content generated' };
398
+ }
399
+ const response_parts = candidates[0]?.content?.parts || [];
400
+ let image_b64;
401
+ let image_mime_type;
402
+ let text;
403
+ for (const part of response_parts) {
404
+ if (part.inlineData) {
405
+ image_b64 = part.inlineData.data;
406
+ image_mime_type = part.inlineData.mimeType || 'image/png';
407
+ }
408
+ if (part.text) {
409
+ text = part.text;
410
+ }
411
+ }
412
+ return {
413
+ success: true,
414
+ text,
415
+ image_b64,
416
+ image_mime_type,
417
+ raw_response: data,
418
+ };
419
+ }
420
+ catch (error) {
421
+ const error_message = error instanceof Error ? error.message : String(error);
422
+ logger.error('Error calling Gemini image transformation', {
423
+ file: file_name,
424
+ line: 428,
425
+ data: { error: error_message },
426
+ });
427
+ return { success: false, error: error_message };
428
+ }
429
+ }
430
+ }
431
+ //# sourceMappingURL=gemini_provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini_provider.js","sourceRoot":"","sources":["../../../../src/lib/providers/gemini/gemini_provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Gemini Provider Exports
3
+ *
4
+ * Export all Gemini-related functions and classes from this module
5
+ */
6
+ export { call_gemini_api, get_gemini_api_url, } from './gemini_client.js';
7
+ export { GeminiProvider, type GeminiProviderConfig, } from './gemini_provider.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/providers/gemini/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,cAAc,EACd,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Gemini Provider Exports
3
+ *
4
+ * Export all Gemini-related functions and classes from this module
5
+ */
6
+ export { call_gemini_api, get_gemini_api_url, } from './gemini_client.js';
7
+ export { GeminiProvider, } from './gemini_provider.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/providers/gemini/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,cAAc,GAEf,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Providers Module Exports
3
+ *
4
+ * Export all LLM provider modules
5
+ */
6
+ export * from './gemini/index.js';
7
+ export * from './qwen/index.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Providers Module Exports
3
+ *
4
+ * Export all LLM provider modules
5
+ */
6
+ export * from './gemini/index.js';
7
+ export * from './qwen/index.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Qwen Provider Exports
3
+ *
4
+ * Export all Qwen-related functions and classes from this module
5
+ */
6
+ export { call_qwen_api, build_qwen_messages, get_qwen_api_url, type QwenGenerationConfig, type QwenMessage, type QwenMessageRole, type QwenApiRequest, type QwenApiResponse, } from './qwen_client.js';
7
+ export { QwenProvider, type QwenProviderConfig, } from './qwen_provider.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/providers/qwen/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,YAAY,EACZ,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Qwen Provider Exports
3
+ *
4
+ * Export all Qwen-related functions and classes from this module
5
+ */
6
+ export { call_qwen_api, build_qwen_messages, get_qwen_api_url, } from './qwen_client.js';
7
+ export { QwenProvider, } from './qwen_provider.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/providers/qwen/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,gBAAgB,GAMjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,YAAY,GAEb,MAAM,oBAAoB,CAAC"}