hazo_llm_api 1.0.4 → 1.0.6

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,222 @@
1
+ /**
2
+ * hazo_llm_image_image_text Function
3
+ *
4
+ * Images → Image → Text (Chained)
5
+ *
6
+ * Flow:
7
+ * 1. Combine images[0] + images[1] using prompts[0] → result_1
8
+ * 2. Combine result_1 + images[2] using prompts[1] → result_2
9
+ * 3. Continue chaining through all images
10
+ * 4. Analyze final result with description_prompt → text output
11
+ *
12
+ * Returns both the final generated image and the text description.
13
+ */
14
+ import { hazo_llm_image_image } from './hazo_llm_image_image.js';
15
+ import { hazo_llm_image_text } from './hazo_llm_image_text.js';
16
+ // =============================================================================
17
+ // hazo_llm_image_image_text Function
18
+ // =============================================================================
19
+ /**
20
+ * Chain multiple image transformations, then describe the final result
21
+ *
22
+ * @param params - Parameters with images, prompts, and description prompt
23
+ * @param db - Database instance
24
+ * @param config - LLM API configuration
25
+ * @param llm - Optional LLM provider name (uses primary LLM if not specified)
26
+ * @returns LLM response with final image and description text
27
+ */
28
+ export async function hazo_llm_image_image_text(params, db, config, llm) {
29
+ const file_name = 'hazo_llm_image_image_text.ts';
30
+ // Use default logger if not provided
31
+ const { default_logger } = await import('./index.js');
32
+ const logger = config.logger || default_logger;
33
+ const api_name = 'image_image_text';
34
+ try {
35
+ // ==========================================================================
36
+ // Log API call start
37
+ // ==========================================================================
38
+ logger.debug(`########################################################################### ${api_name}`, {
39
+ file: file_name,
40
+ line: 48,
41
+ });
42
+ // ==========================================================================
43
+ // Validate input
44
+ // ==========================================================================
45
+ if (!params.images || params.images.length < 2) {
46
+ const error_msg = 'At least two images are required';
47
+ logger.error(error_msg, { file: file_name, line: 58 });
48
+ return { success: false, error: error_msg };
49
+ }
50
+ const expected_prompts = params.images.length - 1;
51
+ if (!params.prompts || params.prompts.length !== expected_prompts) {
52
+ const error_msg = `Expected ${expected_prompts} prompts for ${params.images.length} images, got ${params.prompts?.length || 0}`;
53
+ logger.error(error_msg, { file: file_name, line: 65 });
54
+ return { success: false, error: error_msg };
55
+ }
56
+ if (!params.description_prompt?.trim()) {
57
+ const error_msg = 'Description prompt is required';
58
+ logger.error(error_msg, { file: file_name, line: 71 });
59
+ return { success: false, error: error_msg };
60
+ }
61
+ // Log API call details with generation configs
62
+ logger.debug('API call details', {
63
+ file: file_name,
64
+ line: 77,
65
+ data: {
66
+ chain_steps: Array.from({ length: params.images.length }, (_, i) => i < params.images.length - 1 ? 'image_image' : 'image_text'),
67
+ image_count: params.images.length,
68
+ prompts: params.prompts,
69
+ description_prompt: params.description_prompt,
70
+ image_data: params.images.map(img => ({
71
+ mime_type: img.image_mime_type,
72
+ data: '[IMAGE_DATA_PLACEHOLDER]',
73
+ })),
74
+ llm_requested: llm || 'primary',
75
+ },
76
+ });
77
+ // ==========================================================================
78
+ // Step 1: Combine first two images
79
+ // ==========================================================================
80
+ logger.debug('Chain Step 1: Combining first two images', {
81
+ file: file_name,
82
+ line: 94,
83
+ });
84
+ let current_result = await hazo_llm_image_image({
85
+ prompt: params.prompts[0],
86
+ images: [
87
+ { data: params.images[0].image_b64, mime_type: params.images[0].image_mime_type },
88
+ { data: params.images[1].image_b64, mime_type: params.images[1].image_mime_type },
89
+ ],
90
+ }, db, config, llm);
91
+ if (!current_result.success) {
92
+ logger.error('Step 1 failed: combining first two images', {
93
+ file: file_name,
94
+ line: 111,
95
+ data: { error: current_result.error },
96
+ });
97
+ return {
98
+ success: false,
99
+ error: `Step 1 failed: ${current_result.error}`,
100
+ };
101
+ }
102
+ if (!current_result.image_b64 || !current_result.image_mime_type) {
103
+ logger.error('Step 1 did not return an image', {
104
+ file: file_name,
105
+ line: 122,
106
+ });
107
+ return {
108
+ success: false,
109
+ error: 'Step 1 did not return an image',
110
+ text: current_result.text,
111
+ };
112
+ }
113
+ // ==========================================================================
114
+ // Steps 2+: Chain through remaining images
115
+ // ==========================================================================
116
+ for (let i = 2; i < params.images.length; i++) {
117
+ const step_num = i;
118
+ const prompt_index = i - 1;
119
+ logger.debug(`Chain Step ${step_num}: Adding image ${i + 1}`, {
120
+ file: file_name,
121
+ line: 139,
122
+ });
123
+ // Combine current result with next image
124
+ current_result = await hazo_llm_image_image({
125
+ prompt: params.prompts[prompt_index],
126
+ images: [
127
+ { data: current_result.image_b64, mime_type: current_result.image_mime_type },
128
+ { data: params.images[i].image_b64, mime_type: params.images[i].image_mime_type },
129
+ ],
130
+ }, db, config, llm);
131
+ if (!current_result.success) {
132
+ logger.error(`Step ${step_num} failed`, {
133
+ file: file_name,
134
+ line: 157,
135
+ data: { step: step_num, error: current_result.error },
136
+ });
137
+ return {
138
+ success: false,
139
+ error: `Step ${step_num} failed: ${current_result.error}`,
140
+ };
141
+ }
142
+ if (!current_result.image_b64 || !current_result.image_mime_type) {
143
+ logger.error(`Step ${step_num} did not return an image`, {
144
+ file: file_name,
145
+ line: 168,
146
+ data: { step: step_num },
147
+ });
148
+ return {
149
+ success: false,
150
+ error: `Step ${step_num} did not return an image`,
151
+ text: current_result.text,
152
+ };
153
+ }
154
+ }
155
+ // ==========================================================================
156
+ // Final Step: Describe the final image
157
+ // ==========================================================================
158
+ logger.debug('Chain Final Step: Generating description', {
159
+ file: file_name,
160
+ line: 183,
161
+ });
162
+ const text_response = await hazo_llm_image_text({
163
+ prompt: params.description_prompt,
164
+ image_b64: current_result.image_b64,
165
+ image_mime_type: current_result.image_mime_type,
166
+ prompt_variables: params.description_prompt_variables,
167
+ }, db, config, llm);
168
+ if (!text_response.success) {
169
+ logger.error('Description generation failed', {
170
+ file: file_name,
171
+ line: 199,
172
+ data: { error: text_response.error },
173
+ });
174
+ return {
175
+ success: false,
176
+ error: `Description failed: ${text_response.error}`,
177
+ // Still return the final image even if description failed
178
+ image_b64: current_result.image_b64,
179
+ image_mime_type: current_result.image_mime_type,
180
+ };
181
+ }
182
+ // ==========================================================================
183
+ // Log API response
184
+ // ==========================================================================
185
+ logger.debug('API response', {
186
+ file: file_name,
187
+ line: 215,
188
+ data: {
189
+ success: true,
190
+ text: text_response.text,
191
+ image_b64: '[IMAGE_DATA_PLACEHOLDER]',
192
+ image_mime_type: current_result.image_mime_type,
193
+ },
194
+ });
195
+ // Log API call complete
196
+ logger.debug(`<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ${api_name} >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`, {
197
+ file: file_name,
198
+ line: 226,
199
+ data: {
200
+ success: true,
201
+ total_steps: params.images.length,
202
+ has_image: true,
203
+ },
204
+ });
205
+ return {
206
+ success: true,
207
+ text: text_response.text,
208
+ image_b64: current_result.image_b64,
209
+ image_mime_type: current_result.image_mime_type,
210
+ };
211
+ }
212
+ catch (error) {
213
+ const error_message = error instanceof Error ? error.message : String(error);
214
+ logger.error('Error in hazo_llm_image_image_text', {
215
+ file: file_name,
216
+ line: 231,
217
+ data: { error: error_message },
218
+ });
219
+ return { success: false, error: error_message };
220
+ }
221
+ }
222
+ //# sourceMappingURL=hazo_llm_image_image_text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hazo_llm_image_image_text.js","sourceRoot":"","sources":["../../../src/lib/llm_api/hazo_llm_image_image_text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * hazo_llm_image_text Function
3
+ *
4
+ * Image input → Text output
5
+ * Analyze an image and get text description/response.
6
+ * Supports image analysis, OCR, object detection descriptions, etc.
7
+ */
8
+ import type { Database as SqlJsDatabase } from 'sql.js';
9
+ import type { ImageTextParams, LLMResponse, LLMApiConfig } from './types.js';
10
+ /**
11
+ * Call the LLM with an image input and get text output
12
+ *
13
+ * @param params - Image input parameters
14
+ * @param _db - Database instance (unused, kept for API consistency)
15
+ * @param config - LLM API configuration
16
+ * @param llm - Optional LLM provider name (uses primary LLM if not specified)
17
+ * @returns LLM response with generated text description
18
+ */
19
+ export declare function hazo_llm_image_text(params: ImageTextParams, _db: SqlJsDatabase | null, config: LLMApiConfig, llm?: string): Promise<LLMResponse>;
20
+ //# sourceMappingURL=hazo_llm_image_text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hazo_llm_image_text.d.ts","sourceRoot":"","sources":["../../../src/lib/llm_api/hazo_llm_image_text.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAC;AAuBpB;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,aAAa,GAAG,IAAI,EACzB,MAAM,EAAE,YAAY,EACpB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,WAAW,CAAC,CA6DtB"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * hazo_llm_image_text Function
3
+ *
4
+ * Image input → Text output
5
+ * Analyze an image and get text description/response.
6
+ * Supports image analysis, OCR, object detection descriptions, etc.
7
+ */
8
+ import { substitute_variables } from '../prompts/substitute_variables.js';
9
+ import { SERVICE_TYPES } from '../providers/types.js';
10
+ import { get_validated_provider, log_api_start, log_api_complete, log_api_details, log_api_response, handle_caught_error, } from './provider_helper.js';
11
+ // =============================================================================
12
+ // Constants
13
+ // =============================================================================
14
+ const FILE_NAME = 'hazo_llm_image_text.ts';
15
+ const API_NAME = 'image_text';
16
+ // =============================================================================
17
+ // hazo_llm_image_text Function
18
+ // =============================================================================
19
+ /**
20
+ * Call the LLM with an image input and get text output
21
+ *
22
+ * @param params - Image input parameters
23
+ * @param _db - Database instance (unused, kept for API consistency)
24
+ * @param config - LLM API configuration
25
+ * @param llm - Optional LLM provider name (uses primary LLM if not specified)
26
+ * @returns LLM response with generated text description
27
+ */
28
+ export async function hazo_llm_image_text(params, _db, config, llm) {
29
+ // Use default logger if not provided
30
+ const { default_logger } = await import('./index.js');
31
+ const logger = config.logger || default_logger;
32
+ try {
33
+ log_api_start(API_NAME, FILE_NAME, logger);
34
+ // ==========================================================================
35
+ // Step 1: Validate image data
36
+ // ==========================================================================
37
+ if (!params.image_b64 || !params.image_mime_type) {
38
+ const error_msg = 'image_b64 and image_mime_type are required';
39
+ logger.error(error_msg, { file: FILE_NAME });
40
+ return { success: false, error: error_msg };
41
+ }
42
+ // ==========================================================================
43
+ // Step 2: Prepare prompt with variable substitution
44
+ // ==========================================================================
45
+ const final_prompt = substitute_variables(params.prompt, params.prompt_variables, logger);
46
+ // ==========================================================================
47
+ // Step 3: Get and validate provider
48
+ // ==========================================================================
49
+ const provider_result = get_validated_provider({
50
+ llm,
51
+ service_type: SERVICE_TYPES.IMAGE_TEXT,
52
+ logger,
53
+ });
54
+ if (!provider_result.success) {
55
+ return provider_result.error_response;
56
+ }
57
+ const provider = provider_result.provider;
58
+ log_api_details(provider, SERVICE_TYPES.IMAGE_TEXT, FILE_NAME, logger, {
59
+ prompt_text: final_prompt,
60
+ image_mime_type: params.image_mime_type,
61
+ llm_requested: llm || 'primary',
62
+ });
63
+ // ==========================================================================
64
+ // Step 4: Call the provider
65
+ // ==========================================================================
66
+ const response = await provider.image_text({
67
+ ...params,
68
+ prompt: final_prompt,
69
+ }, logger);
70
+ log_api_response(response, FILE_NAME, logger);
71
+ log_api_complete(API_NAME, FILE_NAME, response.success, logger);
72
+ return response;
73
+ }
74
+ catch (error) {
75
+ return handle_caught_error(error, 'hazo_llm_image_text', FILE_NAME, logger);
76
+ }
77
+ }
78
+ //# sourceMappingURL=hazo_llm_image_text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hazo_llm_image_text.js","sourceRoot":"","sources":["../../../src/lib/llm_api/hazo_llm_image_text.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAE9B,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,SAAS,GAAG,wBAAwB,CAAC;AAC3C,MAAM,QAAQ,GAAG,YAAY,CAAC;AAE9B,gFAAgF;AAChF,+BAA+B;AAC/B,gFAAgF;AAEhF;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAuB,EACvB,GAAyB,EACzB,MAAoB,EACpB,GAAY;IAEZ,qCAAqC;IACrC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,cAAc,CAAC;IAE/C,IAAI,CAAC;QACH,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAE3C,6EAA6E;QAC7E,8BAA8B;QAC9B,6EAA6E;QAC7E,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACjD,MAAM,SAAS,GAAG,4CAA4C,CAAC;YAC/D,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAC7C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC9C,CAAC;QAED,6EAA6E;QAC7E,oDAAoD;QACpD,6EAA6E;QAC7E,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAE1F,6EAA6E;QAC7E,oCAAoC;QACpC,6EAA6E;QAC7E,MAAM,eAAe,GAAG,sBAAsB,CAAC;YAC7C,GAAG;YACH,YAAY,EAAE,aAAa,CAAC,UAAU;YACtC,MAAM;SACP,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,eAAe,CAAC,cAAc,CAAC;QACxC,CAAC;QAED,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;QAE1C,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE;YACrE,WAAW,EAAE,YAAY;YACzB,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,aAAa,EAAE,GAAG,IAAI,SAAS;SAChC,CAAC,CAAC;QAEH,6EAA6E;QAC7E,4BAA4B;QAC5B,6EAA6E;QAC7E,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,UAAU,CACxC;YACE,GAAG,MAAM;YACT,MAAM,EAAE,YAAY;SACrB,EACD,MAAM,CACP,CAAC;QAEF,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9C,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEhE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * hazo_llm_prompt_chain Function
3
+ *
4
+ * Executes a sequence of LLM calls where each call can reference
5
+ * values from previous call results. Supports all 4 service types:
6
+ * text_text, image_text, text_image, image_image.
7
+ */
8
+ import type { Database as SqlJsDatabase } from 'sql.js';
9
+ import type { PromptChainParams, PromptChainResponse, LLMApiConfig } from './types.js';
10
+ /**
11
+ * Execute a chain of prompt calls with dynamic value resolution
12
+ *
13
+ * @param params - Chain parameters including call definitions
14
+ * @param db - Database instance for prompt retrieval
15
+ * @param config - LLM API configuration
16
+ * @param llm - Optional LLM provider name
17
+ * @returns Chain response with merged results and individual call outcomes
18
+ */
19
+ export declare function hazo_llm_prompt_chain(params: PromptChainParams, db: SqlJsDatabase | null, config: LLMApiConfig, llm?: string): Promise<PromptChainResponse>;
20
+ //# sourceMappingURL=hazo_llm_prompt_chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hazo_llm_prompt_chain.d.ts","sourceRoot":"","sources":["../../../src/lib/llm_api/hazo_llm_prompt_chain.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EAGnB,YAAY,EASb,MAAM,YAAY,CAAC;AA+OpB;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,iBAAiB,EACzB,EAAE,EAAE,aAAa,GAAG,IAAI,EACxB,MAAM,EAAE,YAAY,EACpB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,mBAAmB,CAAC,CA4O9B"}