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,276 @@
1
+ /**
2
+ * Prompt Cache Module
3
+ *
4
+ * Simple LRU cache for frequently accessed prompts.
5
+ * Reduces database queries for repeated prompt lookups.
6
+ */
7
+ // =============================================================================
8
+ // Cache Configuration
9
+ // =============================================================================
10
+ /** Default cache TTL in milliseconds (5 minutes) */
11
+ const DEFAULT_CACHE_TTL_MS = 5 * 60 * 1000;
12
+ /** Default maximum cache size */
13
+ const DEFAULT_MAX_CACHE_SIZE = 100;
14
+ // =============================================================================
15
+ // Prompt Cache Implementation
16
+ // =============================================================================
17
+ /**
18
+ * Simple LRU cache for prompts
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const cache = new PromptCache({ ttl_ms: 60000, max_size: 50 });
23
+ *
24
+ * // Check cache first
25
+ * const cached = cache.get('marketing', 'greeting');
26
+ * if (cached) {
27
+ * return cached;
28
+ * }
29
+ *
30
+ * // Fetch from database and cache
31
+ * const prompt = get_prompt_by_area_and_key(db, 'marketing', 'greeting', logger);
32
+ * if (prompt) {
33
+ * cache.set(prompt);
34
+ * }
35
+ * ```
36
+ */
37
+ export class PromptCache {
38
+ constructor(config = {}) {
39
+ this.cache = new Map();
40
+ this.ttl_ms = config.ttl_ms ?? DEFAULT_CACHE_TTL_MS;
41
+ this.max_size = config.max_size ?? DEFAULT_MAX_CACHE_SIZE;
42
+ this.enabled = config.enabled ?? true;
43
+ this.hits = 0;
44
+ this.misses = 0;
45
+ }
46
+ /**
47
+ * Generate cache key from area and key
48
+ */
49
+ make_key(area, key) {
50
+ return `${area}:${key}`;
51
+ }
52
+ /**
53
+ * Check if an entry is expired
54
+ */
55
+ is_expired(entry) {
56
+ return Date.now() - entry.timestamp > this.ttl_ms;
57
+ }
58
+ /**
59
+ * Evict least recently used entries if cache is full
60
+ */
61
+ evict_if_needed() {
62
+ if (this.cache.size < this.max_size) {
63
+ return;
64
+ }
65
+ // Find entry with oldest timestamp
66
+ let oldest_key = null;
67
+ let oldest_time = Infinity;
68
+ for (const [key, entry] of this.cache.entries()) {
69
+ if (entry.timestamp < oldest_time) {
70
+ oldest_time = entry.timestamp;
71
+ oldest_key = key;
72
+ }
73
+ }
74
+ if (oldest_key) {
75
+ this.cache.delete(oldest_key);
76
+ }
77
+ }
78
+ /**
79
+ * Get a prompt from the cache
80
+ *
81
+ * @param area - Prompt area
82
+ * @param key - Prompt key
83
+ * @returns Cached prompt or null if not found/expired
84
+ */
85
+ get(area, key) {
86
+ if (!this.enabled) {
87
+ return null;
88
+ }
89
+ const cache_key = this.make_key(area, key);
90
+ const entry = this.cache.get(cache_key);
91
+ if (!entry) {
92
+ this.misses++;
93
+ return null;
94
+ }
95
+ if (this.is_expired(entry)) {
96
+ this.cache.delete(cache_key);
97
+ this.misses++;
98
+ return null;
99
+ }
100
+ // Update access metadata
101
+ entry.access_count++;
102
+ entry.timestamp = Date.now();
103
+ this.hits++;
104
+ return entry.prompt;
105
+ }
106
+ /**
107
+ * Get a prompt by UUID from the cache
108
+ *
109
+ * @param uuid - Prompt UUID
110
+ * @returns Cached prompt or null if not found/expired
111
+ */
112
+ get_by_uuid(uuid) {
113
+ if (!this.enabled) {
114
+ return null;
115
+ }
116
+ // Linear search through cache (UUID lookups are less common)
117
+ for (const entry of this.cache.values()) {
118
+ if (entry.prompt.uuid === uuid) {
119
+ if (this.is_expired(entry)) {
120
+ // Let the area:key lookup handle deletion
121
+ this.misses++;
122
+ return null;
123
+ }
124
+ entry.access_count++;
125
+ entry.timestamp = Date.now();
126
+ this.hits++;
127
+ return entry.prompt;
128
+ }
129
+ }
130
+ this.misses++;
131
+ return null;
132
+ }
133
+ /**
134
+ * Add a prompt to the cache
135
+ *
136
+ * @param prompt - Prompt record to cache
137
+ */
138
+ set(prompt) {
139
+ if (!this.enabled) {
140
+ return;
141
+ }
142
+ this.evict_if_needed();
143
+ const cache_key = this.make_key(prompt.prompt_area, prompt.prompt_key);
144
+ this.cache.set(cache_key, {
145
+ prompt,
146
+ timestamp: Date.now(),
147
+ access_count: 1,
148
+ });
149
+ }
150
+ /**
151
+ * Remove a prompt from the cache
152
+ *
153
+ * @param area - Prompt area
154
+ * @param key - Prompt key
155
+ */
156
+ invalidate(area, key) {
157
+ const cache_key = this.make_key(area, key);
158
+ this.cache.delete(cache_key);
159
+ }
160
+ /**
161
+ * Remove a prompt by UUID from the cache
162
+ *
163
+ * @param uuid - Prompt UUID
164
+ */
165
+ invalidate_by_uuid(uuid) {
166
+ for (const [key, entry] of this.cache.entries()) {
167
+ if (entry.prompt.uuid === uuid) {
168
+ this.cache.delete(key);
169
+ break;
170
+ }
171
+ }
172
+ }
173
+ /**
174
+ * Invalidate all prompts in an area
175
+ *
176
+ * @param area - Prompt area to invalidate
177
+ */
178
+ invalidate_area(area) {
179
+ const prefix = `${area}:`;
180
+ for (const key of this.cache.keys()) {
181
+ if (key.startsWith(prefix)) {
182
+ this.cache.delete(key);
183
+ }
184
+ }
185
+ }
186
+ /**
187
+ * Clear all cached entries
188
+ */
189
+ clear() {
190
+ this.cache.clear();
191
+ this.hits = 0;
192
+ this.misses = 0;
193
+ }
194
+ /**
195
+ * Remove all expired entries
196
+ *
197
+ * @returns Number of entries removed
198
+ */
199
+ cleanup() {
200
+ let removed = 0;
201
+ for (const [key, entry] of this.cache.entries()) {
202
+ if (this.is_expired(entry)) {
203
+ this.cache.delete(key);
204
+ removed++;
205
+ }
206
+ }
207
+ return removed;
208
+ }
209
+ /**
210
+ * Get cache statistics
211
+ */
212
+ get_stats() {
213
+ const total = this.hits + this.misses;
214
+ return {
215
+ hits: this.hits,
216
+ misses: this.misses,
217
+ size: this.cache.size,
218
+ max_size: this.max_size,
219
+ hit_rate: total > 0 ? this.hits / total : 0,
220
+ };
221
+ }
222
+ /**
223
+ * Enable or disable the cache
224
+ *
225
+ * @param enabled - Whether to enable caching
226
+ */
227
+ set_enabled(enabled) {
228
+ this.enabled = enabled;
229
+ if (!enabled) {
230
+ this.clear();
231
+ }
232
+ }
233
+ /**
234
+ * Check if caching is enabled
235
+ */
236
+ is_enabled() {
237
+ return this.enabled;
238
+ }
239
+ }
240
+ // =============================================================================
241
+ // Global Cache Instance
242
+ // =============================================================================
243
+ /**
244
+ * Global prompt cache instance
245
+ * Can be configured via configure_prompt_cache()
246
+ */
247
+ let global_cache = null;
248
+ /**
249
+ * Get the global prompt cache instance
250
+ * Creates one with default settings if not configured
251
+ *
252
+ * @returns Global prompt cache
253
+ */
254
+ export function get_prompt_cache() {
255
+ if (!global_cache) {
256
+ global_cache = new PromptCache();
257
+ }
258
+ return global_cache;
259
+ }
260
+ /**
261
+ * Configure the global prompt cache
262
+ *
263
+ * @param config - Cache configuration options
264
+ */
265
+ export function configure_prompt_cache(config) {
266
+ global_cache = new PromptCache(config);
267
+ }
268
+ /**
269
+ * Clear the global prompt cache
270
+ */
271
+ export function clear_prompt_cache() {
272
+ if (global_cache) {
273
+ global_cache.clear();
274
+ }
275
+ }
276
+ //# sourceMappingURL=prompt_cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt_cache.js","sourceRoot":"","sources":["../../../src/lib/prompts/prompt_cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Variable Substitution Module
3
+ *
4
+ * Functions to replace variables in prompt text.
5
+ * Variables use double curly brace syntax: {{variable_name}}
6
+ * Values come from the prompt_variables JSON array.
7
+ */
8
+ import type { Logger, PromptVariables } from '../llm_api/types.js';
9
+ /**
10
+ * Substitute variables in prompt text with values from prompt_variables
11
+ * Variables are identified by double curly braces (e.g., {{location}} becomes "Tokyo")
12
+ *
13
+ * @param prompt_text - The prompt text containing variables to replace
14
+ * @param prompt_variables - Array of key-value objects with variable values
15
+ * Format: [{ "variable1": "value1", "variable2": "value2" }]
16
+ * @param logger - Logger instance
17
+ * @returns The prompt text with all variables substituted
18
+ */
19
+ export declare function substitute_variables(prompt_text: string, prompt_variables: PromptVariables | undefined, logger: Logger): string;
20
+ /**
21
+ * Parse prompt_variables from JSON string
22
+ * @param json_string - JSON string containing prompt variables
23
+ * @param logger - Logger instance
24
+ * @returns Parsed prompt variables array, or empty array if parsing fails
25
+ */
26
+ export declare function parse_prompt_variables(json_string: string | undefined | null, logger: Logger): PromptVariables;
27
+ /**
28
+ * Validate that all required variables are present
29
+ * @param prompt_text - The prompt text containing variables
30
+ * @param prompt_variables - The variables provided for substitution
31
+ * @param logger - Logger instance
32
+ * @returns Object with validation result and any missing variables
33
+ */
34
+ export declare function validate_variables(prompt_text: string, prompt_variables: PromptVariables | undefined, logger: Logger): {
35
+ valid: boolean;
36
+ missing_variables: string[];
37
+ };
38
+ //# sourceMappingURL=substitute_variables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substitute_variables.d.ts","sourceRoot":"","sources":["../../../src/lib/prompts/substitute_variables.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAMnE;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,eAAe,GAAG,SAAS,EAC7C,MAAM,EAAE,MAAM,GACb,MAAM,CA8DR;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACtC,MAAM,EAAE,MAAM,GACb,eAAe,CAuCjB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,eAAe,GAAG,SAAS,EAC7C,MAAM,EAAE,MAAM,GACb;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAAE,CAqDjD"}
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Variable Substitution Module
3
+ *
4
+ * Functions to replace variables in prompt text.
5
+ * Variables use double curly brace syntax: {{variable_name}}
6
+ * Values come from the prompt_variables JSON array.
7
+ */
8
+ // =============================================================================
9
+ // Variable Substitution Functions
10
+ // =============================================================================
11
+ /**
12
+ * Substitute variables in prompt text with values from prompt_variables
13
+ * Variables are identified by double curly braces (e.g., {{location}} becomes "Tokyo")
14
+ *
15
+ * @param prompt_text - The prompt text containing variables to replace
16
+ * @param prompt_variables - Array of key-value objects with variable values
17
+ * Format: [{ "variable1": "value1", "variable2": "value2" }]
18
+ * @param logger - Logger instance
19
+ * @returns The prompt text with all variables substituted
20
+ */
21
+ export function substitute_variables(prompt_text, prompt_variables, logger) {
22
+ const file_name = 'substitute_variables.ts';
23
+ // If no variables provided, return original text
24
+ if (!prompt_variables || prompt_variables.length === 0) {
25
+ return prompt_text;
26
+ }
27
+ let result_text = prompt_text;
28
+ const substitutions_made = {};
29
+ const missing_variables = [];
30
+ // Flatten all variables from the array into a single object
31
+ const all_variables = {};
32
+ for (const var_obj of prompt_variables) {
33
+ for (const [key, value] of Object.entries(var_obj)) {
34
+ all_variables[key] = value;
35
+ }
36
+ }
37
+ // Find all {{variable}} patterns in the text
38
+ const variable_pattern = /\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g;
39
+ const found_variables = [];
40
+ let match;
41
+ while ((match = variable_pattern.exec(prompt_text)) !== null) {
42
+ const var_name = match[1];
43
+ if (!found_variables.includes(var_name)) {
44
+ found_variables.push(var_name);
45
+ }
46
+ }
47
+ // Substitute each found variable
48
+ for (const var_name of found_variables) {
49
+ const var_pattern = new RegExp(`\\{\\{${var_name}\\}\\}`, 'g');
50
+ if (var_name in all_variables) {
51
+ const value = all_variables[var_name];
52
+ result_text = result_text.replace(var_pattern, value);
53
+ substitutions_made[`{{${var_name}}}`] = value;
54
+ }
55
+ else {
56
+ missing_variables.push(var_name);
57
+ logger.warn(`Variable not found in prompt_variables: {{${var_name}}}`, {
58
+ file: file_name,
59
+ data: { variable: var_name, available_variables: Object.keys(all_variables) },
60
+ });
61
+ }
62
+ }
63
+ // Log variable substitution with before and after in one message
64
+ if (Object.keys(substitutions_made).length > 0) {
65
+ logger.info('Variable substitution', {
66
+ file: file_name,
67
+ data: {
68
+ before: prompt_text,
69
+ after: result_text,
70
+ substitutions: substitutions_made,
71
+ },
72
+ });
73
+ }
74
+ return result_text;
75
+ }
76
+ /**
77
+ * Parse prompt_variables from JSON string
78
+ * @param json_string - JSON string containing prompt variables
79
+ * @param logger - Logger instance
80
+ * @returns Parsed prompt variables array, or empty array if parsing fails
81
+ */
82
+ export function parse_prompt_variables(json_string, logger) {
83
+ const file_name = 'substitute_variables.ts';
84
+ if (!json_string || json_string.trim() === '') {
85
+ logger.debug('Empty or null prompt_variables string', {
86
+ file: file_name,
87
+ line: 118,
88
+ });
89
+ return [];
90
+ }
91
+ try {
92
+ const parsed = JSON.parse(json_string);
93
+ // Ensure it's an array
94
+ if (!Array.isArray(parsed)) {
95
+ logger.warn('prompt_variables is not an array, wrapping in array', {
96
+ file: file_name,
97
+ line: 129,
98
+ });
99
+ return [parsed];
100
+ }
101
+ logger.debug('Parsed prompt_variables successfully', {
102
+ file: file_name,
103
+ line: 135,
104
+ data: { count: parsed.length },
105
+ });
106
+ return parsed;
107
+ }
108
+ catch (error) {
109
+ const error_message = error instanceof Error ? error.message : String(error);
110
+ logger.error('Failed to parse prompt_variables JSON', {
111
+ file: file_name,
112
+ line: 143,
113
+ data: { error: error_message },
114
+ });
115
+ return [];
116
+ }
117
+ }
118
+ /**
119
+ * Validate that all required variables are present
120
+ * @param prompt_text - The prompt text containing variables
121
+ * @param prompt_variables - The variables provided for substitution
122
+ * @param logger - Logger instance
123
+ * @returns Object with validation result and any missing variables
124
+ */
125
+ export function validate_variables(prompt_text, prompt_variables, logger) {
126
+ const file_name = 'substitute_variables.ts';
127
+ // Find all {{variable}} patterns in the prompt text
128
+ const variable_pattern = /\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g;
129
+ const found_variables = [];
130
+ let match;
131
+ while ((match = variable_pattern.exec(prompt_text)) !== null) {
132
+ const var_name = match[1];
133
+ if (!found_variables.includes(var_name)) {
134
+ found_variables.push(var_name);
135
+ }
136
+ }
137
+ // If no variables in text, validation passes
138
+ if (found_variables.length === 0) {
139
+ logger.debug('No variables found in prompt text', {
140
+ file: file_name,
141
+ });
142
+ return { valid: true, missing_variables: [] };
143
+ }
144
+ // Flatten provided variables
145
+ const all_variables = {};
146
+ if (prompt_variables) {
147
+ for (const var_obj of prompt_variables) {
148
+ for (const [key, value] of Object.entries(var_obj)) {
149
+ all_variables[key] = value;
150
+ }
151
+ }
152
+ }
153
+ // Check for missing variables
154
+ const missing_variables = [];
155
+ for (const var_name of found_variables) {
156
+ if (!(var_name in all_variables)) {
157
+ missing_variables.push(var_name);
158
+ }
159
+ }
160
+ const valid = missing_variables.length === 0;
161
+ logger.debug('Variable validation completed', {
162
+ file: file_name,
163
+ data: {
164
+ valid,
165
+ found_variables,
166
+ missing_variables,
167
+ },
168
+ });
169
+ return { valid, missing_variables };
170
+ }
171
+ //# sourceMappingURL=substitute_variables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substitute_variables.js","sourceRoot":"","sources":["../../../src/lib/prompts/substitute_variables.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Gemini API Client Module
3
+ *
4
+ * Handles communication with the Google Gemini API.
5
+ * Formats requests according to Gemini API specification and parses responses.
6
+ */
7
+ import type { Logger, Base64Data, LLMResponse, GeminiGenerationConfig } from '../../llm_api/types.js';
8
+ /**
9
+ * Call the Gemini API with the given prompt and optional image data
10
+ * @param api_url - The Gemini API endpoint URL
11
+ * @param api_key - The API key for authentication
12
+ * @param prompt_text - The text prompt to send
13
+ * @param b64_data - Optional array of base64 encoded images
14
+ * @param logger - Logger instance
15
+ * @param generation_config - Optional generation configuration parameters
16
+ * @returns LLM response with generated text or error
17
+ */
18
+ export declare function call_gemini_api(api_url: string, api_key: string, prompt_text: string, b64_data: Base64Data[] | undefined, logger: Logger, generation_config?: GeminiGenerationConfig): Promise<LLMResponse>;
19
+ /**
20
+ * Get the default Gemini API URL
21
+ * @param model - The model name (default: gemini-2.5-flash)
22
+ * @returns The API URL
23
+ */
24
+ export declare function get_gemini_api_url(model?: string): string;
25
+ //# sourceMappingURL=gemini_client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini_client.d.ts","sourceRoot":"","sources":["../../../../src/lib/providers/gemini/gemini_client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,UAAU,EACV,WAAW,EAIX,sBAAsB,EAEvB,MAAM,wBAAwB,CAAC;AAMhC;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,UAAU,EAAE,GAAG,SAAS,EAClC,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,sBAAsB,GACzC,OAAO,CAAC,WAAW,CAAC,CA0FtB;AA2JD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,GAAE,MAA2B,GAAG,MAAM,CAE7E"}