hazo_llm_api 1.0.3 → 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.
- package/README.md +4 -4
- package/dist/lib/config/config_parser.d.ts +1 -1
- package/dist/lib/config/config_parser.js +5 -5
- package/dist/lib/config/config_parser.js.map +1 -1
- package/dist/lib/config/provider_loader.js +1 -1
- package/dist/lib/config/provider_loader.js.map +1 -1
- package/dist/lib/database/init_database.d.ts.map +1 -1
- package/dist/lib/database/init_database.js +72 -5
- package/dist/lib/database/init_database.js.map +1 -1
- package/dist/lib/database/utils.d.ts +9 -6
- package/dist/lib/database/utils.d.ts.map +1 -1
- package/dist/lib/database/utils.js +14 -5
- package/dist/lib/database/utils.js.map +1 -1
- package/dist/lib/llm_api/chain_helpers.d.ts +117 -0
- package/dist/lib/llm_api/chain_helpers.d.ts.map +1 -0
- package/dist/lib/llm_api/chain_helpers.js +445 -0
- package/dist/lib/llm_api/chain_helpers.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.d.ts +20 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.js +368 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.js.map +1 -0
- package/dist/lib/llm_api/index.d.ts +34 -2
- package/dist/lib/llm_api/index.d.ts.map +1 -1
- package/dist/lib/llm_api/index.js +57 -5
- package/dist/lib/llm_api/index.js.map +1 -1
- package/dist/lib/llm_api/provider_helper.js +1 -1
- package/dist/lib/llm_api/provider_helper.js.map +1 -1
- package/dist/lib/llm_api/types.d.ts +143 -1
- package/dist/lib/llm_api/types.d.ts.map +1 -1
- package/dist/lib/llm_api/types.js.map +1 -1
- package/dist/lib/prompts/get_prompt.d.ts +27 -1
- package/dist/lib/prompts/get_prompt.d.ts.map +1 -1
- package/dist/lib/prompts/get_prompt.js +112 -2
- package/dist/lib/prompts/get_prompt.js.map +1 -1
- package/dist/lib/prompts/index.d.ts +1 -1
- package/dist/lib/prompts/index.d.ts.map +1 -1
- package/dist/lib/prompts/index.js +1 -1
- package/dist/lib/prompts/index.js.map +1 -1
- package/dist/lib/prompts/substitute_variables.d.ts +2 -2
- package/dist/lib/prompts/substitute_variables.d.ts.map +1 -1
- package/dist/lib/prompts/substitute_variables.js +10 -14
- package/dist/lib/prompts/substitute_variables.js.map +1 -1
- package/dist/lib/providers/qwen/qwen_provider.js +1 -1
- package/dist/lib/providers/qwen/qwen_provider.js.map +1 -1
- package/dist/server.d.ts +4 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3 -2
- package/dist/server.js.map +1 -1
- package/package.json +12 -1
- package/techdoc.md +2 -2
- package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.d.ts +0 -16
- package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.d.ts.map +0 -1
- package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.js +0 -258
- package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.js.map +0 -1
- package/dist/components/hazo_llm_prompt_config/index.d.ts +0 -8
- package/dist/components/hazo_llm_prompt_config/index.d.ts.map +0 -1
- package/dist/components/hazo_llm_prompt_config/index.js +0 -7
- package/dist/components/hazo_llm_prompt_config/index.js.map +0 -1
- package/dist/components/hazo_llm_prompt_config/types.d.ts +0 -74
- package/dist/components/hazo_llm_prompt_config/types.d.ts.map +0 -1
- package/dist/components/hazo_llm_prompt_config/types.js +0 -8
- package/dist/components/hazo_llm_prompt_config/types.js.map +0 -1
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chain Helper Functions
|
|
3
|
+
*
|
|
4
|
+
* Utility functions for parsing call_chain paths, resolving values,
|
|
5
|
+
* and deep merging results in prompt chains.
|
|
6
|
+
*/
|
|
7
|
+
const FILE_NAME = 'chain_helpers.ts';
|
|
8
|
+
// =============================================================================
|
|
9
|
+
// Path Parsing Functions
|
|
10
|
+
// =============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Parse a call_chain path expression like "call[0].tax_category" or "call[2].data.nested.value"
|
|
13
|
+
*
|
|
14
|
+
* @param path_expr - The path expression to parse
|
|
15
|
+
* @param logger - Logger instance
|
|
16
|
+
* @returns Parsed path with call index and property path array, or null if invalid
|
|
17
|
+
*/
|
|
18
|
+
export function parse_call_chain_path(path_expr, logger) {
|
|
19
|
+
// Pattern: call[N].property.path
|
|
20
|
+
const match = path_expr.match(/^call\[(\d+)\]\.(.+)$/);
|
|
21
|
+
if (!match) {
|
|
22
|
+
logger.error('Invalid call_chain path format', {
|
|
23
|
+
file: FILE_NAME,
|
|
24
|
+
data: { path_expr, expected_format: 'call[N].property.path' },
|
|
25
|
+
});
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
const call_index = parseInt(match[1], 10);
|
|
29
|
+
const property_path = match[2].split('.');
|
|
30
|
+
logger.debug('Parsed call_chain path', {
|
|
31
|
+
file: FILE_NAME,
|
|
32
|
+
data: { path_expr, call_index, property_path },
|
|
33
|
+
});
|
|
34
|
+
return { call_index, property_path };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Extract a value from a nested object using a property path array
|
|
38
|
+
*
|
|
39
|
+
* @param obj - The object to extract from
|
|
40
|
+
* @param path - Array of property names to traverse
|
|
41
|
+
* @param logger - Logger instance
|
|
42
|
+
* @returns The extracted value as a string, or null if not found
|
|
43
|
+
*/
|
|
44
|
+
export function extract_value_from_path(obj, path, logger) {
|
|
45
|
+
let current = obj;
|
|
46
|
+
for (const key of path) {
|
|
47
|
+
if (current === null || current === undefined) {
|
|
48
|
+
logger.warn('Path traversal encountered null/undefined', {
|
|
49
|
+
file: FILE_NAME,
|
|
50
|
+
data: { path, failed_at: key },
|
|
51
|
+
});
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
if (typeof current !== 'object') {
|
|
55
|
+
logger.warn('Path traversal encountered non-object', {
|
|
56
|
+
file: FILE_NAME,
|
|
57
|
+
data: { path, failed_at: key, type: typeof current },
|
|
58
|
+
});
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
current = current[key];
|
|
62
|
+
}
|
|
63
|
+
// Convert result to string
|
|
64
|
+
if (current === null || current === undefined) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
if (typeof current === 'string') {
|
|
68
|
+
return current;
|
|
69
|
+
}
|
|
70
|
+
if (typeof current === 'number' || typeof current === 'boolean') {
|
|
71
|
+
return String(current);
|
|
72
|
+
}
|
|
73
|
+
// For objects/arrays, return JSON string
|
|
74
|
+
return JSON.stringify(current);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Extract a value from a ChainCallResult using a property path
|
|
78
|
+
* Supports both parsed_result fields and top-level image/text fields
|
|
79
|
+
*
|
|
80
|
+
* Examples:
|
|
81
|
+
* - "image_b64" -> returns result.image_b64
|
|
82
|
+
* - "image_mime_type" -> returns result.image_mime_type
|
|
83
|
+
* - "raw_text" -> returns result.raw_text
|
|
84
|
+
* - "country" -> traverses result.parsed_result.country
|
|
85
|
+
* - "data.nested.value" -> traverses result.parsed_result.data.nested.value
|
|
86
|
+
*
|
|
87
|
+
* @param result - The ChainCallResult to extract from
|
|
88
|
+
* @param property_path - Array of property names to traverse
|
|
89
|
+
* @param logger - Logger instance
|
|
90
|
+
* @returns The extracted value as a string, or null if not found
|
|
91
|
+
*/
|
|
92
|
+
export function extract_value_from_result(result, property_path, logger) {
|
|
93
|
+
if (property_path.length === 0) {
|
|
94
|
+
logger.warn('Empty property path provided', { file: FILE_NAME });
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
const first_key = property_path[0];
|
|
98
|
+
// Handle top-level image fields directly
|
|
99
|
+
if (property_path.length === 1) {
|
|
100
|
+
if (first_key === 'image_b64' && result.image_b64) {
|
|
101
|
+
return result.image_b64;
|
|
102
|
+
}
|
|
103
|
+
if (first_key === 'image_mime_type' && result.image_mime_type) {
|
|
104
|
+
return result.image_mime_type;
|
|
105
|
+
}
|
|
106
|
+
if (first_key === 'raw_text' && result.raw_text) {
|
|
107
|
+
return result.raw_text;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// For paths starting with top-level fields that don't exist, try parsed_result
|
|
111
|
+
if (first_key === 'image_b64' || first_key === 'image_mime_type' || first_key === 'raw_text') {
|
|
112
|
+
// These are top-level only, no nesting
|
|
113
|
+
if (property_path.length === 1) {
|
|
114
|
+
logger.warn('Top-level field not found in result', {
|
|
115
|
+
file: FILE_NAME,
|
|
116
|
+
data: { field: first_key, has_field: false },
|
|
117
|
+
});
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Otherwise, extract from parsed_result
|
|
122
|
+
if (!result.parsed_result) {
|
|
123
|
+
logger.warn('No parsed_result available for path extraction', {
|
|
124
|
+
file: FILE_NAME,
|
|
125
|
+
data: { property_path },
|
|
126
|
+
});
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
return extract_value_from_path(result.parsed_result, property_path, logger);
|
|
130
|
+
}
|
|
131
|
+
// =============================================================================
|
|
132
|
+
// Value Resolution Functions
|
|
133
|
+
// =============================================================================
|
|
134
|
+
/**
|
|
135
|
+
* Resolve a chain field definition to its actual value
|
|
136
|
+
* Supports both parsed_result fields and top-level image/text fields
|
|
137
|
+
*
|
|
138
|
+
* @param field - The field definition to resolve
|
|
139
|
+
* @param previous_results - Array of previous call results
|
|
140
|
+
* @param logger - Logger instance
|
|
141
|
+
* @returns Resolved string value, or null if resolution failed
|
|
142
|
+
*/
|
|
143
|
+
export function resolve_chain_field(field, previous_results, logger) {
|
|
144
|
+
if (field.match_type === 'direct') {
|
|
145
|
+
return field.value;
|
|
146
|
+
}
|
|
147
|
+
// match_type === 'call_chain'
|
|
148
|
+
const parsed = parse_call_chain_path(field.value, logger);
|
|
149
|
+
if (!parsed) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
// Check if referenced call exists
|
|
153
|
+
if (parsed.call_index >= previous_results.length) {
|
|
154
|
+
logger.error('call_chain references future or non-existent call', {
|
|
155
|
+
file: FILE_NAME,
|
|
156
|
+
data: {
|
|
157
|
+
call_index: parsed.call_index,
|
|
158
|
+
available_calls: previous_results.length,
|
|
159
|
+
},
|
|
160
|
+
});
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
const referenced_result = previous_results[parsed.call_index];
|
|
164
|
+
// Check if referenced call was successful
|
|
165
|
+
if (!referenced_result.success) {
|
|
166
|
+
logger.warn('call_chain references failed call', {
|
|
167
|
+
file: FILE_NAME,
|
|
168
|
+
data: {
|
|
169
|
+
call_index: parsed.call_index,
|
|
170
|
+
success: referenced_result.success,
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
// Extract value from result (supports both image fields and parsed_result)
|
|
176
|
+
const value = extract_value_from_result(referenced_result, parsed.property_path, logger);
|
|
177
|
+
if (value === null) {
|
|
178
|
+
logger.warn('Could not extract value from call_chain path', {
|
|
179
|
+
file: FILE_NAME,
|
|
180
|
+
data: {
|
|
181
|
+
path: field.value,
|
|
182
|
+
call_index: parsed.call_index,
|
|
183
|
+
},
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
return value;
|
|
187
|
+
}
|
|
188
|
+
// =============================================================================
|
|
189
|
+
// Variable Building Functions
|
|
190
|
+
// =============================================================================
|
|
191
|
+
/**
|
|
192
|
+
* Resolve a chain variable definition to its actual value
|
|
193
|
+
* Supports both parsed_result fields and top-level image/text fields
|
|
194
|
+
*
|
|
195
|
+
* @param variable - The variable definition to resolve
|
|
196
|
+
* @param previous_results - Array of previous call results
|
|
197
|
+
* @param logger - Logger instance
|
|
198
|
+
* @returns Resolved string value, or null if resolution failed
|
|
199
|
+
*/
|
|
200
|
+
export function resolve_chain_variable(variable, previous_results, logger) {
|
|
201
|
+
if (variable.match_type === 'direct') {
|
|
202
|
+
return variable.value;
|
|
203
|
+
}
|
|
204
|
+
// match_type === 'call_chain'
|
|
205
|
+
const parsed = parse_call_chain_path(variable.value, logger);
|
|
206
|
+
if (!parsed) {
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
// Check if referenced call exists
|
|
210
|
+
if (parsed.call_index >= previous_results.length) {
|
|
211
|
+
logger.error('call_chain references future or non-existent call', {
|
|
212
|
+
file: FILE_NAME,
|
|
213
|
+
data: {
|
|
214
|
+
call_index: parsed.call_index,
|
|
215
|
+
available_calls: previous_results.length,
|
|
216
|
+
variable_name: variable.variable_name,
|
|
217
|
+
},
|
|
218
|
+
});
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
const referenced_result = previous_results[parsed.call_index];
|
|
222
|
+
// Check if referenced call was successful
|
|
223
|
+
if (!referenced_result.success) {
|
|
224
|
+
logger.warn('call_chain references failed call', {
|
|
225
|
+
file: FILE_NAME,
|
|
226
|
+
data: {
|
|
227
|
+
call_index: parsed.call_index,
|
|
228
|
+
success: referenced_result.success,
|
|
229
|
+
variable_name: variable.variable_name,
|
|
230
|
+
},
|
|
231
|
+
});
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
// Extract value from result (supports both image fields and parsed_result)
|
|
235
|
+
const value = extract_value_from_result(referenced_result, parsed.property_path, logger);
|
|
236
|
+
if (value === null) {
|
|
237
|
+
logger.warn('Could not extract value from call_chain path', {
|
|
238
|
+
file: FILE_NAME,
|
|
239
|
+
data: {
|
|
240
|
+
path: variable.value,
|
|
241
|
+
call_index: parsed.call_index,
|
|
242
|
+
variable_name: variable.variable_name,
|
|
243
|
+
},
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
return value;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Build prompt variables from a variables array in a chain call definition
|
|
250
|
+
*
|
|
251
|
+
* @param variables_array - Array of variable definitions
|
|
252
|
+
* @param previous_results - Array of previous call results
|
|
253
|
+
* @param logger - Logger instance
|
|
254
|
+
* @returns PromptVariables array for substitution
|
|
255
|
+
*/
|
|
256
|
+
export function build_prompt_variables(variables_array, previous_results, logger) {
|
|
257
|
+
if (!variables_array || variables_array.length === 0) {
|
|
258
|
+
return [];
|
|
259
|
+
}
|
|
260
|
+
const variables = {};
|
|
261
|
+
variables_array.forEach((variable, index) => {
|
|
262
|
+
if (!variable.variable_name) {
|
|
263
|
+
logger.warn('Variable definition missing variable_name', {
|
|
264
|
+
file: FILE_NAME,
|
|
265
|
+
data: { index },
|
|
266
|
+
});
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
const resolved_value = resolve_chain_variable(variable, previous_results, logger);
|
|
270
|
+
if (resolved_value !== null) {
|
|
271
|
+
variables[variable.variable_name] = resolved_value;
|
|
272
|
+
logger.debug('Built variable from definition', {
|
|
273
|
+
file: FILE_NAME,
|
|
274
|
+
data: {
|
|
275
|
+
index,
|
|
276
|
+
variable_name: variable.variable_name,
|
|
277
|
+
match_type: variable.match_type,
|
|
278
|
+
value_preview: resolved_value.substring(0, 50),
|
|
279
|
+
},
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
logger.warn('Could not resolve variable value', {
|
|
284
|
+
file: FILE_NAME,
|
|
285
|
+
data: {
|
|
286
|
+
index,
|
|
287
|
+
variable_name: variable.variable_name,
|
|
288
|
+
match_type: variable.match_type,
|
|
289
|
+
value: variable.value,
|
|
290
|
+
},
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
return Object.keys(variables).length > 0 ? [variables] : [];
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Resolve a ChainImageDefinition to actual image data
|
|
298
|
+
*
|
|
299
|
+
* @param image_def - The image definition to resolve
|
|
300
|
+
* @param previous_results - Array of previous call results
|
|
301
|
+
* @param logger - Logger instance
|
|
302
|
+
* @returns Resolved image data or null if resolution failed
|
|
303
|
+
*/
|
|
304
|
+
export function resolve_chain_image_definition(image_def, previous_results, logger) {
|
|
305
|
+
const image_b64 = resolve_chain_field(image_def.image_b64, previous_results, logger);
|
|
306
|
+
const image_mime_type = resolve_chain_field(image_def.image_mime_type, previous_results, logger);
|
|
307
|
+
if (!image_b64) {
|
|
308
|
+
logger.error('Could not resolve image_b64 from definition', {
|
|
309
|
+
file: FILE_NAME,
|
|
310
|
+
data: {
|
|
311
|
+
match_type: image_def.image_b64.match_type,
|
|
312
|
+
value: image_def.image_b64.value,
|
|
313
|
+
},
|
|
314
|
+
});
|
|
315
|
+
return null;
|
|
316
|
+
}
|
|
317
|
+
if (!image_mime_type) {
|
|
318
|
+
logger.error('Could not resolve image_mime_type from definition', {
|
|
319
|
+
file: FILE_NAME,
|
|
320
|
+
data: {
|
|
321
|
+
match_type: image_def.image_mime_type.match_type,
|
|
322
|
+
value: image_def.image_mime_type.value,
|
|
323
|
+
},
|
|
324
|
+
});
|
|
325
|
+
return null;
|
|
326
|
+
}
|
|
327
|
+
logger.debug('Resolved image definition', {
|
|
328
|
+
file: FILE_NAME,
|
|
329
|
+
data: {
|
|
330
|
+
image_b64_length: image_b64.length,
|
|
331
|
+
image_mime_type,
|
|
332
|
+
},
|
|
333
|
+
});
|
|
334
|
+
return { image_b64, image_mime_type };
|
|
335
|
+
}
|
|
336
|
+
// =============================================================================
|
|
337
|
+
// Deep Merge Functions
|
|
338
|
+
// =============================================================================
|
|
339
|
+
/**
|
|
340
|
+
* Deep merge two objects, with source values overwriting target values
|
|
341
|
+
*
|
|
342
|
+
* @param target - Target object
|
|
343
|
+
* @param source - Source object to merge in
|
|
344
|
+
* @returns New merged object
|
|
345
|
+
*/
|
|
346
|
+
export function deep_merge(target, source) {
|
|
347
|
+
const result = { ...target };
|
|
348
|
+
for (const key of Object.keys(source)) {
|
|
349
|
+
const source_value = source[key];
|
|
350
|
+
const target_value = result[key];
|
|
351
|
+
if (source_value !== null &&
|
|
352
|
+
typeof source_value === 'object' &&
|
|
353
|
+
!Array.isArray(source_value) &&
|
|
354
|
+
target_value !== null &&
|
|
355
|
+
typeof target_value === 'object' &&
|
|
356
|
+
!Array.isArray(target_value)) {
|
|
357
|
+
// Both are objects - recurse
|
|
358
|
+
result[key] = deep_merge(target_value, source_value);
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
// Overwrite with source value
|
|
362
|
+
result[key] = source_value;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
return result;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Merge multiple call results into a single object
|
|
369
|
+
*
|
|
370
|
+
* @param results - Array of chain call results
|
|
371
|
+
* @param logger - Logger instance
|
|
372
|
+
* @returns Deep-merged object from all successful calls
|
|
373
|
+
*/
|
|
374
|
+
export function merge_chain_results(results, logger) {
|
|
375
|
+
let merged = {};
|
|
376
|
+
for (const result of results) {
|
|
377
|
+
if (result.success && result.parsed_result) {
|
|
378
|
+
merged = deep_merge(merged, result.parsed_result);
|
|
379
|
+
logger.debug('Merged result from call', {
|
|
380
|
+
file: FILE_NAME,
|
|
381
|
+
data: { call_index: result.call_index },
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
return merged;
|
|
386
|
+
}
|
|
387
|
+
// =============================================================================
|
|
388
|
+
// JSON Parsing Functions
|
|
389
|
+
// =============================================================================
|
|
390
|
+
/**
|
|
391
|
+
* Attempt to parse LLM response text as JSON
|
|
392
|
+
* Handles common LLM output formats (with markdown code blocks, etc.)
|
|
393
|
+
*
|
|
394
|
+
* @param text - Raw text response from LLM
|
|
395
|
+
* @param logger - Logger instance
|
|
396
|
+
* @returns Parsed JSON object or null if parsing fails
|
|
397
|
+
*/
|
|
398
|
+
export function parse_llm_json_response(text, logger) {
|
|
399
|
+
// Try direct JSON parse first
|
|
400
|
+
try {
|
|
401
|
+
const parsed = JSON.parse(text);
|
|
402
|
+
if (typeof parsed === 'object' && parsed !== null) {
|
|
403
|
+
return parsed;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
catch {
|
|
407
|
+
// Continue to try other formats
|
|
408
|
+
}
|
|
409
|
+
// Try extracting JSON from markdown code block
|
|
410
|
+
const code_block_match = text.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);
|
|
411
|
+
if (code_block_match) {
|
|
412
|
+
try {
|
|
413
|
+
const parsed = JSON.parse(code_block_match[1].trim());
|
|
414
|
+
if (typeof parsed === 'object' && parsed !== null) {
|
|
415
|
+
logger.debug('Extracted JSON from code block', { file: FILE_NAME });
|
|
416
|
+
return parsed;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
catch {
|
|
420
|
+
// Continue
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
// Try finding first { to last }
|
|
424
|
+
const first_brace = text.indexOf('{');
|
|
425
|
+
const last_brace = text.lastIndexOf('}');
|
|
426
|
+
if (first_brace !== -1 && last_brace > first_brace) {
|
|
427
|
+
try {
|
|
428
|
+
const json_substr = text.substring(first_brace, last_brace + 1);
|
|
429
|
+
const parsed = JSON.parse(json_substr);
|
|
430
|
+
if (typeof parsed === 'object' && parsed !== null) {
|
|
431
|
+
logger.debug('Extracted JSON by brace matching', { file: FILE_NAME });
|
|
432
|
+
return parsed;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
catch {
|
|
436
|
+
// Continue
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
logger.warn('Could not parse LLM response as JSON', {
|
|
440
|
+
file: FILE_NAME,
|
|
441
|
+
data: { text_preview: text.substring(0, 100) },
|
|
442
|
+
});
|
|
443
|
+
return null;
|
|
444
|
+
}
|
|
445
|
+
//# sourceMappingURL=chain_helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain_helpers.js","sourceRoot":"","sources":["../../../src/lib/llm_api/chain_helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|