hazo_llm_api 1.0.3 → 1.0.4
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/package.json +1 -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
- package/dist/components/index.d.ts +0 -7
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/index.js +0 -7
- package/dist/components/index.js.map +0 -1
- package/dist/components/layout/index.d.ts +0 -7
- package/dist/components/layout/index.d.ts.map +0 -1
- package/dist/components/layout/index.js +0 -7
- package/dist/components/layout/index.js.map +0 -1
- package/dist/components/layout/layout.d.ts +0 -21
- package/dist/components/layout/layout.d.ts.map +0 -1
- package/dist/components/layout/layout.js +0 -18
- package/dist/components/layout/layout.js.map +0 -1
- package/dist/index.d.ts +0 -15
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -21
- package/dist/index.js.map +0 -1
- package/dist/lib/config/config_parser.d.ts +0 -131
- package/dist/lib/config/config_parser.d.ts.map +0 -1
- package/dist/lib/config/config_parser.js +0 -297
- package/dist/lib/config/config_parser.js.map +0 -1
- package/dist/lib/config/index.d.ts +0 -8
- package/dist/lib/config/index.d.ts.map +0 -1
- package/dist/lib/config/index.js +0 -22
- package/dist/lib/config/index.js.map +0 -1
- package/dist/lib/config/provider_loader.d.ts +0 -113
- package/dist/lib/config/provider_loader.d.ts.map +0 -1
- package/dist/lib/config/provider_loader.js +0 -169
- package/dist/lib/config/provider_loader.js.map +0 -1
- package/dist/lib/database/index.d.ts +0 -8
- package/dist/lib/database/index.d.ts.map +0 -1
- package/dist/lib/database/index.js +0 -10
- package/dist/lib/database/index.js.map +0 -1
- package/dist/lib/database/init_database.d.ts +0 -118
- package/dist/lib/database/init_database.d.ts.map +0 -1
- package/dist/lib/database/init_database.js +0 -524
- package/dist/lib/database/init_database.js.map +0 -1
- package/dist/lib/database/utils.d.ts +0 -50
- package/dist/lib/database/utils.d.ts.map +0 -1
- package/dist/lib/database/utils.js +0 -78
- package/dist/lib/database/utils.js.map +0 -1
- package/dist/lib/index.d.ts +0 -14
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/index.js +0 -17
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/llm_api/hazo_llm_image_image.d.ts +0 -26
- package/dist/lib/llm_api/hazo_llm_image_image.d.ts.map +0 -1
- package/dist/lib/llm_api/hazo_llm_image_image.js +0 -94
- package/dist/lib/llm_api/hazo_llm_image_image.js.map +0 -1
- package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts +0 -26
- package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts.map +0 -1
- package/dist/lib/llm_api/hazo_llm_image_image_text.js +0 -222
- package/dist/lib/llm_api/hazo_llm_image_image_text.js.map +0 -1
- package/dist/lib/llm_api/hazo_llm_image_text.d.ts +0 -20
- package/dist/lib/llm_api/hazo_llm_image_text.d.ts.map +0 -1
- package/dist/lib/llm_api/hazo_llm_image_text.js +0 -78
- package/dist/lib/llm_api/hazo_llm_image_text.js.map +0 -1
- package/dist/lib/llm_api/hazo_llm_text_image.d.ts +0 -20
- package/dist/lib/llm_api/hazo_llm_text_image.d.ts.map +0 -1
- package/dist/lib/llm_api/hazo_llm_text_image.js +0 -69
- package/dist/lib/llm_api/hazo_llm_text_image.js.map +0 -1
- package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts +0 -26
- package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts.map +0 -1
- package/dist/lib/llm_api/hazo_llm_text_image_text.js +0 -154
- package/dist/lib/llm_api/hazo_llm_text_image_text.js.map +0 -1
- package/dist/lib/llm_api/hazo_llm_text_text.d.ts +0 -20
- package/dist/lib/llm_api/hazo_llm_text_text.d.ts.map +0 -1
- package/dist/lib/llm_api/hazo_llm_text_text.js +0 -91
- package/dist/lib/llm_api/hazo_llm_text_text.js.map +0 -1
- package/dist/lib/llm_api/index.d.ts +0 -191
- package/dist/lib/llm_api/index.d.ts.map +0 -1
- package/dist/lib/llm_api/index.js +0 -1168
- package/dist/lib/llm_api/index.js.map +0 -1
- package/dist/lib/llm_api/provider_helper.d.ts +0 -163
- package/dist/lib/llm_api/provider_helper.d.ts.map +0 -1
- package/dist/lib/llm_api/provider_helper.js +0 -346
- package/dist/lib/llm_api/provider_helper.js.map +0 -1
- package/dist/lib/llm_api/types.d.ts +0 -525
- package/dist/lib/llm_api/types.d.ts.map +0 -1
- package/dist/lib/llm_api/types.js +0 -49
- package/dist/lib/llm_api/types.js.map +0 -1
- package/dist/lib/prompts/get_prompt.d.ts +0 -50
- package/dist/lib/prompts/get_prompt.d.ts.map +0 -1
- package/dist/lib/prompts/get_prompt.js +0 -232
- package/dist/lib/prompts/get_prompt.js.map +0 -1
- package/dist/lib/prompts/index.d.ts +0 -9
- package/dist/lib/prompts/index.d.ts.map +0 -1
- package/dist/lib/prompts/index.js +0 -9
- package/dist/lib/prompts/index.js.map +0 -1
- package/dist/lib/prompts/prompt_cache.d.ts +0 -151
- package/dist/lib/prompts/prompt_cache.d.ts.map +0 -1
- package/dist/lib/prompts/prompt_cache.js +0 -276
- package/dist/lib/prompts/prompt_cache.js.map +0 -1
- package/dist/lib/prompts/substitute_variables.d.ts +0 -38
- package/dist/lib/prompts/substitute_variables.d.ts.map +0 -1
- package/dist/lib/prompts/substitute_variables.js +0 -175
- package/dist/lib/prompts/substitute_variables.js.map +0 -1
- package/dist/lib/providers/gemini/gemini_client.d.ts +0 -25
- package/dist/lib/providers/gemini/gemini_client.d.ts.map +0 -1
- package/dist/lib/providers/gemini/gemini_client.js +0 -235
- package/dist/lib/providers/gemini/gemini_client.js.map +0 -1
- package/dist/lib/providers/gemini/gemini_provider.d.ts +0 -111
- package/dist/lib/providers/gemini/gemini_provider.d.ts.map +0 -1
- package/dist/lib/providers/gemini/gemini_provider.js +0 -431
- package/dist/lib/providers/gemini/gemini_provider.js.map +0 -1
- package/dist/lib/providers/gemini/index.d.ts +0 -8
- package/dist/lib/providers/gemini/index.d.ts.map +0 -1
- package/dist/lib/providers/gemini/index.js +0 -8
- package/dist/lib/providers/gemini/index.js.map +0 -1
- package/dist/lib/providers/index.d.ts +0 -8
- package/dist/lib/providers/index.d.ts.map +0 -1
- package/dist/lib/providers/index.js +0 -8
- package/dist/lib/providers/index.js.map +0 -1
- package/dist/lib/providers/qwen/index.d.ts +0 -8
- package/dist/lib/providers/qwen/index.d.ts.map +0 -1
- package/dist/lib/providers/qwen/index.js +0 -8
- package/dist/lib/providers/qwen/index.js.map +0 -1
- package/dist/lib/providers/qwen/qwen_client.d.ts +0 -154
- package/dist/lib/providers/qwen/qwen_client.d.ts.map +0 -1
- package/dist/lib/providers/qwen/qwen_client.js +0 -1002
- package/dist/lib/providers/qwen/qwen_client.js.map +0 -1
- package/dist/lib/providers/qwen/qwen_provider.d.ts +0 -139
- package/dist/lib/providers/qwen/qwen_provider.d.ts.map +0 -1
- package/dist/lib/providers/qwen/qwen_provider.js +0 -304
- package/dist/lib/providers/qwen/qwen_provider.js.map +0 -1
- package/dist/lib/providers/registry.d.ts +0 -66
- package/dist/lib/providers/registry.d.ts.map +0 -1
- package/dist/lib/providers/registry.js +0 -158
- package/dist/lib/providers/registry.js.map +0 -1
- package/dist/lib/providers/types.d.ts +0 -145
- package/dist/lib/providers/types.d.ts.map +0 -1
- package/dist/lib/providers/types.js +0 -37
- package/dist/lib/providers/types.js.map +0 -1
- package/dist/server.d.ts +0 -26
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -49
- package/dist/server.js.map +0 -1
|
@@ -1,232 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prompt Retrieval Module
|
|
3
|
-
*
|
|
4
|
-
* Functions to retrieve prompts from the prompts_library database table.
|
|
5
|
-
* Searches by prompt_area and prompt_key to find the prompt_text.
|
|
6
|
-
*/
|
|
7
|
-
import { row_to_prompt_record } from '../database/utils.js';
|
|
8
|
-
// =============================================================================
|
|
9
|
-
// Prompt Retrieval Functions
|
|
10
|
-
// =============================================================================
|
|
11
|
-
/**
|
|
12
|
-
* Retrieve a prompt from the database by prompt_area and prompt_key
|
|
13
|
-
* @param db - Database instance
|
|
14
|
-
* @param prompt_area - Area/category of the prompt
|
|
15
|
-
* @param prompt_key - Key identifier for the prompt
|
|
16
|
-
* @param logger - Logger instance
|
|
17
|
-
* @returns The prompt record if found, null otherwise
|
|
18
|
-
*/
|
|
19
|
-
export function get_prompt_by_area_and_key(db, prompt_area, prompt_key, logger) {
|
|
20
|
-
const file_name = 'get_prompt.ts';
|
|
21
|
-
const select_sql = `
|
|
22
|
-
SELECT * FROM prompts_library
|
|
23
|
-
WHERE prompt_area = ? AND prompt_key = ?
|
|
24
|
-
LIMIT 1
|
|
25
|
-
`;
|
|
26
|
-
try {
|
|
27
|
-
logger.debug('Retrieving prompt from database', {
|
|
28
|
-
file: file_name,
|
|
29
|
-
line: 62,
|
|
30
|
-
data: { prompt_area, prompt_key },
|
|
31
|
-
});
|
|
32
|
-
const result = db.exec(select_sql, [prompt_area, prompt_key]);
|
|
33
|
-
if (result.length === 0 || result[0].values.length === 0) {
|
|
34
|
-
logger.warn('Prompt not found in database', {
|
|
35
|
-
file: file_name,
|
|
36
|
-
line: 71,
|
|
37
|
-
data: { prompt_area, prompt_key },
|
|
38
|
-
});
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
const row = result[0].values[0];
|
|
42
|
-
const columns = result[0].columns;
|
|
43
|
-
const record = row_to_prompt_record(row, columns);
|
|
44
|
-
logger.info('Prompt retrieved successfully', {
|
|
45
|
-
file: file_name,
|
|
46
|
-
line: 82,
|
|
47
|
-
data: {
|
|
48
|
-
uuid: record.uuid,
|
|
49
|
-
prompt_area: record.prompt_area,
|
|
50
|
-
prompt_key: record.prompt_key,
|
|
51
|
-
},
|
|
52
|
-
});
|
|
53
|
-
return record;
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
const error_message = error instanceof Error ? error.message : String(error);
|
|
57
|
-
logger.error('Failed to retrieve prompt from database', {
|
|
58
|
-
file: file_name,
|
|
59
|
-
line: 94,
|
|
60
|
-
data: { error: error_message, prompt_area, prompt_key },
|
|
61
|
-
});
|
|
62
|
-
throw error;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Retrieve the prompt text only by prompt_area and prompt_key
|
|
67
|
-
* @param db - Database instance
|
|
68
|
-
* @param prompt_area - Area/category of the prompt
|
|
69
|
-
* @param prompt_key - Key identifier for the prompt
|
|
70
|
-
* @param logger - Logger instance
|
|
71
|
-
* @returns The prompt text if found, null otherwise
|
|
72
|
-
*/
|
|
73
|
-
export function get_prompt_text(db, prompt_area, prompt_key, logger) {
|
|
74
|
-
const file_name = 'get_prompt.ts';
|
|
75
|
-
const prompt_record = get_prompt_by_area_and_key(db, prompt_area, prompt_key, logger);
|
|
76
|
-
if (prompt_record) {
|
|
77
|
-
logger.debug('Prompt text retrieved', {
|
|
78
|
-
file: file_name,
|
|
79
|
-
line: 121,
|
|
80
|
-
data: {
|
|
81
|
-
prompt_area,
|
|
82
|
-
prompt_key,
|
|
83
|
-
text_length: prompt_record.prompt_text.length,
|
|
84
|
-
},
|
|
85
|
-
});
|
|
86
|
-
return prompt_record.prompt_text;
|
|
87
|
-
}
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Get all prompts by prompt_area
|
|
92
|
-
* @param db - Database instance
|
|
93
|
-
* @param prompt_area - Area/category of the prompts
|
|
94
|
-
* @param logger - Logger instance
|
|
95
|
-
* @returns Array of prompt records
|
|
96
|
-
*/
|
|
97
|
-
export function get_prompts_by_area(db, prompt_area, logger) {
|
|
98
|
-
const file_name = 'get_prompt.ts';
|
|
99
|
-
const select_sql = `
|
|
100
|
-
SELECT * FROM prompts_library
|
|
101
|
-
WHERE prompt_area = ?
|
|
102
|
-
ORDER BY prompt_key
|
|
103
|
-
`;
|
|
104
|
-
try {
|
|
105
|
-
logger.debug('Retrieving prompts by area', {
|
|
106
|
-
file: file_name,
|
|
107
|
-
line: 157,
|
|
108
|
-
data: { prompt_area },
|
|
109
|
-
});
|
|
110
|
-
const result = db.exec(select_sql, [prompt_area]);
|
|
111
|
-
if (result.length === 0 || result[0].values.length === 0) {
|
|
112
|
-
logger.info('No prompts found for area', {
|
|
113
|
-
file: file_name,
|
|
114
|
-
line: 165,
|
|
115
|
-
data: { prompt_area },
|
|
116
|
-
});
|
|
117
|
-
return [];
|
|
118
|
-
}
|
|
119
|
-
const columns = result[0].columns;
|
|
120
|
-
const records = result[0].values.map(row => row_to_prompt_record(row, columns));
|
|
121
|
-
logger.info('Prompts retrieved by area', {
|
|
122
|
-
file: file_name,
|
|
123
|
-
line: 175,
|
|
124
|
-
data: { prompt_area, count: records.length },
|
|
125
|
-
});
|
|
126
|
-
return records;
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
const error_message = error instanceof Error ? error.message : String(error);
|
|
130
|
-
logger.error('Failed to retrieve prompts by area', {
|
|
131
|
-
file: file_name,
|
|
132
|
-
line: 183,
|
|
133
|
-
data: { error: error_message, prompt_area },
|
|
134
|
-
});
|
|
135
|
-
throw error;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Get a prompt by its UUID
|
|
140
|
-
* @param db - Database instance
|
|
141
|
-
* @param uuid - UUID of the prompt
|
|
142
|
-
* @param logger - Logger instance
|
|
143
|
-
* @returns The prompt record if found, null otherwise
|
|
144
|
-
*/
|
|
145
|
-
export function get_prompt_by_uuid(db, uuid, logger) {
|
|
146
|
-
const file_name = 'get_prompt.ts';
|
|
147
|
-
const select_sql = `
|
|
148
|
-
SELECT * FROM prompts_library
|
|
149
|
-
WHERE uuid = ?
|
|
150
|
-
`;
|
|
151
|
-
try {
|
|
152
|
-
logger.debug('Retrieving prompt by UUID', {
|
|
153
|
-
file: file_name,
|
|
154
|
-
line: 211,
|
|
155
|
-
data: { uuid },
|
|
156
|
-
});
|
|
157
|
-
const result = db.exec(select_sql, [uuid]);
|
|
158
|
-
if (result.length === 0 || result[0].values.length === 0) {
|
|
159
|
-
logger.warn('Prompt not found by UUID', {
|
|
160
|
-
file: file_name,
|
|
161
|
-
line: 219,
|
|
162
|
-
data: { uuid },
|
|
163
|
-
});
|
|
164
|
-
return null;
|
|
165
|
-
}
|
|
166
|
-
const row = result[0].values[0];
|
|
167
|
-
const columns = result[0].columns;
|
|
168
|
-
const record = row_to_prompt_record(row, columns);
|
|
169
|
-
logger.info('Prompt retrieved by UUID', {
|
|
170
|
-
file: file_name,
|
|
171
|
-
line: 229,
|
|
172
|
-
data: { uuid },
|
|
173
|
-
});
|
|
174
|
-
return record;
|
|
175
|
-
}
|
|
176
|
-
catch (error) {
|
|
177
|
-
const error_message = error instanceof Error ? error.message : String(error);
|
|
178
|
-
logger.error('Failed to retrieve prompt by UUID', {
|
|
179
|
-
file: file_name,
|
|
180
|
-
line: 237,
|
|
181
|
-
data: { error: error_message, uuid },
|
|
182
|
-
});
|
|
183
|
-
throw error;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Get all prompts from the library
|
|
188
|
-
* @param db - Database instance
|
|
189
|
-
* @param logger - Logger instance
|
|
190
|
-
* @returns Array of all prompt records
|
|
191
|
-
*/
|
|
192
|
-
export function get_all_prompts(db, logger) {
|
|
193
|
-
const file_name = 'get_prompt.ts';
|
|
194
|
-
const select_sql = `
|
|
195
|
-
SELECT * FROM prompts_library
|
|
196
|
-
ORDER BY prompt_area, prompt_key
|
|
197
|
-
`;
|
|
198
|
-
try {
|
|
199
|
-
logger.debug('Retrieving all prompts', {
|
|
200
|
-
file: file_name,
|
|
201
|
-
line: 265,
|
|
202
|
-
data: {},
|
|
203
|
-
});
|
|
204
|
-
const result = db.exec(select_sql);
|
|
205
|
-
if (result.length === 0 || result[0].values.length === 0) {
|
|
206
|
-
logger.info('No prompts found in library', {
|
|
207
|
-
file: file_name,
|
|
208
|
-
line: 273,
|
|
209
|
-
data: {},
|
|
210
|
-
});
|
|
211
|
-
return [];
|
|
212
|
-
}
|
|
213
|
-
const columns = result[0].columns;
|
|
214
|
-
const records = result[0].values.map(row => row_to_prompt_record(row, columns));
|
|
215
|
-
logger.info('All prompts retrieved', {
|
|
216
|
-
file: file_name,
|
|
217
|
-
line: 283,
|
|
218
|
-
data: { count: records.length },
|
|
219
|
-
});
|
|
220
|
-
return records;
|
|
221
|
-
}
|
|
222
|
-
catch (error) {
|
|
223
|
-
const error_message = error instanceof Error ? error.message : String(error);
|
|
224
|
-
logger.error('Failed to retrieve all prompts', {
|
|
225
|
-
file: file_name,
|
|
226
|
-
line: 291,
|
|
227
|
-
data: { error: error_message },
|
|
228
|
-
});
|
|
229
|
-
throw error;
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
//# sourceMappingURL=get_prompt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get_prompt.js","sourceRoot":"","sources":["../../../src/lib/prompts/get_prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prompts Module Exports
|
|
3
|
-
*
|
|
4
|
-
* Export all prompt-related functions from this module
|
|
5
|
-
*/
|
|
6
|
-
export { get_prompt_by_area_and_key, get_prompt_text, get_prompts_by_area, get_prompt_by_uuid, get_all_prompts, } from './get_prompt.js';
|
|
7
|
-
export { substitute_variables, parse_prompt_variables, validate_variables, } from './substitute_variables.js';
|
|
8
|
-
export { PromptCache, type PromptCacheConfig, type CacheStats, get_prompt_cache, configure_prompt_cache, clear_prompt_cache, } from './prompt_cache.js';
|
|
9
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prompts Module Exports
|
|
3
|
-
*
|
|
4
|
-
* Export all prompt-related functions from this module
|
|
5
|
-
*/
|
|
6
|
-
export { get_prompt_by_area_and_key, get_prompt_text, get_prompts_by_area, get_prompt_by_uuid, get_all_prompts, } from './get_prompt.js';
|
|
7
|
-
export { substitute_variables, parse_prompt_variables, validate_variables, } from './substitute_variables.js';
|
|
8
|
-
export { PromptCache, get_prompt_cache, configure_prompt_cache, clear_prompt_cache, } from './prompt_cache.js';
|
|
9
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,WAAW,EAGX,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Prompt Cache Module
|
|
3
|
-
*
|
|
4
|
-
* Simple LRU cache for frequently accessed prompts.
|
|
5
|
-
* Reduces database queries for repeated prompt lookups.
|
|
6
|
-
*/
|
|
7
|
-
import type { PromptRecord } from '../llm_api/types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Cache configuration options
|
|
10
|
-
*/
|
|
11
|
-
export interface PromptCacheConfig {
|
|
12
|
-
/** Time-to-live in milliseconds (default: 5 minutes) */
|
|
13
|
-
ttl_ms?: number;
|
|
14
|
-
/** Maximum number of entries (default: 100) */
|
|
15
|
-
max_size?: number;
|
|
16
|
-
/** Whether caching is enabled (default: true) */
|
|
17
|
-
enabled?: boolean;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Cache statistics
|
|
21
|
-
*/
|
|
22
|
-
export interface CacheStats {
|
|
23
|
-
hits: number;
|
|
24
|
-
misses: number;
|
|
25
|
-
size: number;
|
|
26
|
-
max_size: number;
|
|
27
|
-
hit_rate: number;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Simple LRU cache for prompts
|
|
31
|
-
*
|
|
32
|
-
* @example
|
|
33
|
-
* ```typescript
|
|
34
|
-
* const cache = new PromptCache({ ttl_ms: 60000, max_size: 50 });
|
|
35
|
-
*
|
|
36
|
-
* // Check cache first
|
|
37
|
-
* const cached = cache.get('marketing', 'greeting');
|
|
38
|
-
* if (cached) {
|
|
39
|
-
* return cached;
|
|
40
|
-
* }
|
|
41
|
-
*
|
|
42
|
-
* // Fetch from database and cache
|
|
43
|
-
* const prompt = get_prompt_by_area_and_key(db, 'marketing', 'greeting', logger);
|
|
44
|
-
* if (prompt) {
|
|
45
|
-
* cache.set(prompt);
|
|
46
|
-
* }
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
export declare class PromptCache {
|
|
50
|
-
private cache;
|
|
51
|
-
private ttl_ms;
|
|
52
|
-
private max_size;
|
|
53
|
-
private enabled;
|
|
54
|
-
private hits;
|
|
55
|
-
private misses;
|
|
56
|
-
constructor(config?: PromptCacheConfig);
|
|
57
|
-
/**
|
|
58
|
-
* Generate cache key from area and key
|
|
59
|
-
*/
|
|
60
|
-
private make_key;
|
|
61
|
-
/**
|
|
62
|
-
* Check if an entry is expired
|
|
63
|
-
*/
|
|
64
|
-
private is_expired;
|
|
65
|
-
/**
|
|
66
|
-
* Evict least recently used entries if cache is full
|
|
67
|
-
*/
|
|
68
|
-
private evict_if_needed;
|
|
69
|
-
/**
|
|
70
|
-
* Get a prompt from the cache
|
|
71
|
-
*
|
|
72
|
-
* @param area - Prompt area
|
|
73
|
-
* @param key - Prompt key
|
|
74
|
-
* @returns Cached prompt or null if not found/expired
|
|
75
|
-
*/
|
|
76
|
-
get(area: string, key: string): PromptRecord | null;
|
|
77
|
-
/**
|
|
78
|
-
* Get a prompt by UUID from the cache
|
|
79
|
-
*
|
|
80
|
-
* @param uuid - Prompt UUID
|
|
81
|
-
* @returns Cached prompt or null if not found/expired
|
|
82
|
-
*/
|
|
83
|
-
get_by_uuid(uuid: string): PromptRecord | null;
|
|
84
|
-
/**
|
|
85
|
-
* Add a prompt to the cache
|
|
86
|
-
*
|
|
87
|
-
* @param prompt - Prompt record to cache
|
|
88
|
-
*/
|
|
89
|
-
set(prompt: PromptRecord): void;
|
|
90
|
-
/**
|
|
91
|
-
* Remove a prompt from the cache
|
|
92
|
-
*
|
|
93
|
-
* @param area - Prompt area
|
|
94
|
-
* @param key - Prompt key
|
|
95
|
-
*/
|
|
96
|
-
invalidate(area: string, key: string): void;
|
|
97
|
-
/**
|
|
98
|
-
* Remove a prompt by UUID from the cache
|
|
99
|
-
*
|
|
100
|
-
* @param uuid - Prompt UUID
|
|
101
|
-
*/
|
|
102
|
-
invalidate_by_uuid(uuid: string): void;
|
|
103
|
-
/**
|
|
104
|
-
* Invalidate all prompts in an area
|
|
105
|
-
*
|
|
106
|
-
* @param area - Prompt area to invalidate
|
|
107
|
-
*/
|
|
108
|
-
invalidate_area(area: string): void;
|
|
109
|
-
/**
|
|
110
|
-
* Clear all cached entries
|
|
111
|
-
*/
|
|
112
|
-
clear(): void;
|
|
113
|
-
/**
|
|
114
|
-
* Remove all expired entries
|
|
115
|
-
*
|
|
116
|
-
* @returns Number of entries removed
|
|
117
|
-
*/
|
|
118
|
-
cleanup(): number;
|
|
119
|
-
/**
|
|
120
|
-
* Get cache statistics
|
|
121
|
-
*/
|
|
122
|
-
get_stats(): CacheStats;
|
|
123
|
-
/**
|
|
124
|
-
* Enable or disable the cache
|
|
125
|
-
*
|
|
126
|
-
* @param enabled - Whether to enable caching
|
|
127
|
-
*/
|
|
128
|
-
set_enabled(enabled: boolean): void;
|
|
129
|
-
/**
|
|
130
|
-
* Check if caching is enabled
|
|
131
|
-
*/
|
|
132
|
-
is_enabled(): boolean;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Get the global prompt cache instance
|
|
136
|
-
* Creates one with default settings if not configured
|
|
137
|
-
*
|
|
138
|
-
* @returns Global prompt cache
|
|
139
|
-
*/
|
|
140
|
-
export declare function get_prompt_cache(): PromptCache;
|
|
141
|
-
/**
|
|
142
|
-
* Configure the global prompt cache
|
|
143
|
-
*
|
|
144
|
-
* @param config - Cache configuration options
|
|
145
|
-
*/
|
|
146
|
-
export declare function configure_prompt_cache(config: PromptCacheConfig): void;
|
|
147
|
-
/**
|
|
148
|
-
* Clear the global prompt cache
|
|
149
|
-
*/
|
|
150
|
-
export declare function clear_prompt_cache(): void;
|
|
151
|
-
//# sourceMappingURL=prompt_cache.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt_cache.d.ts","sourceRoot":"","sources":["../../../src/lib/prompts/prompt_cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAyBxD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,GAAE,iBAAsB;IAS1C;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,eAAe;IAqBvB;;;;;;OAMG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IA2BnD;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAwB9C;;;;OAIG;IACH,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAe/B;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAK3C;;;;OAIG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAStC;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IASnC;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;;;OAIG;IACH,OAAO,IAAI,MAAM;IAWjB;;OAEG;IACH,SAAS,IAAI,UAAU;IAWvB;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAOnC;;OAEG;IACH,UAAU,IAAI,OAAO;CAGtB;AAYD;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,WAAW,CAK9C;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAEtE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
|