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.
- package/dist/components/index.d.ts +7 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +7 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/layout/index.d.ts +7 -0
- package/dist/components/layout/index.d.ts.map +1 -0
- package/dist/components/layout/index.js +7 -0
- package/dist/components/layout/index.js.map +1 -0
- package/dist/components/layout/layout.d.ts +21 -0
- package/dist/components/layout/layout.d.ts.map +1 -0
- package/dist/components/layout/layout.js +18 -0
- package/dist/components/layout/layout.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/config/config_parser.d.ts +131 -0
- package/dist/lib/config/config_parser.d.ts.map +1 -0
- package/dist/lib/config/config_parser.js +297 -0
- package/dist/lib/config/config_parser.js.map +1 -0
- package/dist/lib/config/index.d.ts +8 -0
- package/dist/lib/config/index.d.ts.map +1 -0
- package/dist/lib/config/index.js +22 -0
- package/dist/lib/config/index.js.map +1 -0
- package/dist/lib/config/provider_loader.d.ts +113 -0
- package/dist/lib/config/provider_loader.d.ts.map +1 -0
- package/dist/lib/config/provider_loader.js +169 -0
- package/dist/lib/config/provider_loader.js.map +1 -0
- package/dist/lib/database/index.d.ts +8 -0
- package/dist/lib/database/index.d.ts.map +1 -0
- package/dist/lib/database/index.js +10 -0
- package/dist/lib/database/index.js.map +1 -0
- package/dist/lib/database/init_database.d.ts +118 -0
- package/dist/lib/database/init_database.d.ts.map +1 -0
- package/dist/lib/database/init_database.js +591 -0
- package/dist/lib/database/init_database.js.map +1 -0
- package/dist/lib/database/utils.d.ts +53 -0
- package/dist/lib/database/utils.d.ts.map +1 -0
- package/dist/lib/database/utils.js +87 -0
- package/dist/lib/database/utils.js.map +1 -0
- package/dist/lib/index.d.ts +14 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +17 -0
- package/dist/lib/index.js.map +1 -0
- 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_image_image.d.ts +26 -0
- package/dist/lib/llm_api/hazo_llm_image_image.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_image.js +94 -0
- package/dist/lib/llm_api/hazo_llm_image_image.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts +26 -0
- package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_image_text.js +222 -0
- package/dist/lib/llm_api/hazo_llm_image_image_text.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_text.d.ts +20 -0
- package/dist/lib/llm_api/hazo_llm_image_text.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_text.js +78 -0
- package/dist/lib/llm_api/hazo_llm_image_text.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/hazo_llm_text_image.d.ts +20 -0
- package/dist/lib/llm_api/hazo_llm_text_image.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_image.js +69 -0
- package/dist/lib/llm_api/hazo_llm_text_image.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts +26 -0
- package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_image_text.js +154 -0
- package/dist/lib/llm_api/hazo_llm_text_image_text.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_text.d.ts +20 -0
- package/dist/lib/llm_api/hazo_llm_text_text.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_text.js +91 -0
- package/dist/lib/llm_api/hazo_llm_text_text.js.map +1 -0
- package/dist/lib/llm_api/index.d.ts +223 -0
- package/dist/lib/llm_api/index.d.ts.map +1 -0
- package/dist/lib/llm_api/index.js +1220 -0
- package/dist/lib/llm_api/index.js.map +1 -0
- package/dist/lib/llm_api/provider_helper.d.ts +163 -0
- package/dist/lib/llm_api/provider_helper.d.ts.map +1 -0
- package/dist/lib/llm_api/provider_helper.js +346 -0
- package/dist/lib/llm_api/provider_helper.js.map +1 -0
- package/dist/lib/llm_api/types.d.ts +667 -0
- package/dist/lib/llm_api/types.d.ts.map +1 -0
- package/dist/lib/llm_api/types.js +49 -0
- package/dist/lib/llm_api/types.js.map +1 -0
- package/dist/lib/prompts/get_prompt.d.ts +76 -0
- package/dist/lib/prompts/get_prompt.d.ts.map +1 -0
- package/dist/lib/prompts/get_prompt.js +342 -0
- package/dist/lib/prompts/get_prompt.js.map +1 -0
- package/dist/lib/prompts/index.d.ts +9 -0
- package/dist/lib/prompts/index.d.ts.map +1 -0
- package/dist/lib/prompts/index.js +9 -0
- package/dist/lib/prompts/index.js.map +1 -0
- package/dist/lib/prompts/prompt_cache.d.ts +151 -0
- package/dist/lib/prompts/prompt_cache.d.ts.map +1 -0
- package/dist/lib/prompts/prompt_cache.js +276 -0
- package/dist/lib/prompts/prompt_cache.js.map +1 -0
- package/dist/lib/prompts/substitute_variables.d.ts +38 -0
- package/dist/lib/prompts/substitute_variables.d.ts.map +1 -0
- package/dist/lib/prompts/substitute_variables.js +171 -0
- package/dist/lib/prompts/substitute_variables.js.map +1 -0
- package/dist/lib/providers/gemini/gemini_client.d.ts +25 -0
- package/dist/lib/providers/gemini/gemini_client.d.ts.map +1 -0
- package/dist/lib/providers/gemini/gemini_client.js +235 -0
- package/dist/lib/providers/gemini/gemini_client.js.map +1 -0
- package/dist/lib/providers/gemini/gemini_provider.d.ts +111 -0
- package/dist/lib/providers/gemini/gemini_provider.d.ts.map +1 -0
- package/dist/lib/providers/gemini/gemini_provider.js +431 -0
- package/dist/lib/providers/gemini/gemini_provider.js.map +1 -0
- package/dist/lib/providers/gemini/index.d.ts +8 -0
- package/dist/lib/providers/gemini/index.d.ts.map +1 -0
- package/dist/lib/providers/gemini/index.js +8 -0
- package/dist/lib/providers/gemini/index.js.map +1 -0
- package/dist/lib/providers/index.d.ts +8 -0
- package/dist/lib/providers/index.d.ts.map +1 -0
- package/dist/lib/providers/index.js +8 -0
- package/dist/lib/providers/index.js.map +1 -0
- package/dist/lib/providers/qwen/index.d.ts +8 -0
- package/dist/lib/providers/qwen/index.d.ts.map +1 -0
- package/dist/lib/providers/qwen/index.js +8 -0
- package/dist/lib/providers/qwen/index.js.map +1 -0
- package/dist/lib/providers/qwen/qwen_client.d.ts +154 -0
- package/dist/lib/providers/qwen/qwen_client.d.ts.map +1 -0
- package/dist/lib/providers/qwen/qwen_client.js +1002 -0
- package/dist/lib/providers/qwen/qwen_client.js.map +1 -0
- package/dist/lib/providers/qwen/qwen_provider.d.ts +139 -0
- package/dist/lib/providers/qwen/qwen_provider.d.ts.map +1 -0
- package/dist/lib/providers/qwen/qwen_provider.js +304 -0
- package/dist/lib/providers/qwen/qwen_provider.js.map +1 -0
- package/dist/lib/providers/registry.d.ts +66 -0
- package/dist/lib/providers/registry.d.ts.map +1 -0
- package/dist/lib/providers/registry.js +158 -0
- package/dist/lib/providers/registry.js.map +1 -0
- package/dist/lib/providers/types.d.ts +145 -0
- package/dist/lib/providers/types.d.ts.map +1 -0
- package/dist/lib/providers/types.js +37 -0
- package/dist/lib/providers/types.js.map +1 -0
- package/dist/server.d.ts +27 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +50 -0
- package/dist/server.js.map +1 -0
- 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"}
|