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.
Files changed (151) hide show
  1. package/README.md +4 -4
  2. package/package.json +1 -1
  3. package/techdoc.md +2 -2
  4. package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.d.ts +0 -16
  5. package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.d.ts.map +0 -1
  6. package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.js +0 -258
  7. package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.js.map +0 -1
  8. package/dist/components/hazo_llm_prompt_config/index.d.ts +0 -8
  9. package/dist/components/hazo_llm_prompt_config/index.d.ts.map +0 -1
  10. package/dist/components/hazo_llm_prompt_config/index.js +0 -7
  11. package/dist/components/hazo_llm_prompt_config/index.js.map +0 -1
  12. package/dist/components/hazo_llm_prompt_config/types.d.ts +0 -74
  13. package/dist/components/hazo_llm_prompt_config/types.d.ts.map +0 -1
  14. package/dist/components/hazo_llm_prompt_config/types.js +0 -8
  15. package/dist/components/hazo_llm_prompt_config/types.js.map +0 -1
  16. package/dist/components/index.d.ts +0 -7
  17. package/dist/components/index.d.ts.map +0 -1
  18. package/dist/components/index.js +0 -7
  19. package/dist/components/index.js.map +0 -1
  20. package/dist/components/layout/index.d.ts +0 -7
  21. package/dist/components/layout/index.d.ts.map +0 -1
  22. package/dist/components/layout/index.js +0 -7
  23. package/dist/components/layout/index.js.map +0 -1
  24. package/dist/components/layout/layout.d.ts +0 -21
  25. package/dist/components/layout/layout.d.ts.map +0 -1
  26. package/dist/components/layout/layout.js +0 -18
  27. package/dist/components/layout/layout.js.map +0 -1
  28. package/dist/index.d.ts +0 -15
  29. package/dist/index.d.ts.map +0 -1
  30. package/dist/index.js +0 -21
  31. package/dist/index.js.map +0 -1
  32. package/dist/lib/config/config_parser.d.ts +0 -131
  33. package/dist/lib/config/config_parser.d.ts.map +0 -1
  34. package/dist/lib/config/config_parser.js +0 -297
  35. package/dist/lib/config/config_parser.js.map +0 -1
  36. package/dist/lib/config/index.d.ts +0 -8
  37. package/dist/lib/config/index.d.ts.map +0 -1
  38. package/dist/lib/config/index.js +0 -22
  39. package/dist/lib/config/index.js.map +0 -1
  40. package/dist/lib/config/provider_loader.d.ts +0 -113
  41. package/dist/lib/config/provider_loader.d.ts.map +0 -1
  42. package/dist/lib/config/provider_loader.js +0 -169
  43. package/dist/lib/config/provider_loader.js.map +0 -1
  44. package/dist/lib/database/index.d.ts +0 -8
  45. package/dist/lib/database/index.d.ts.map +0 -1
  46. package/dist/lib/database/index.js +0 -10
  47. package/dist/lib/database/index.js.map +0 -1
  48. package/dist/lib/database/init_database.d.ts +0 -118
  49. package/dist/lib/database/init_database.d.ts.map +0 -1
  50. package/dist/lib/database/init_database.js +0 -524
  51. package/dist/lib/database/init_database.js.map +0 -1
  52. package/dist/lib/database/utils.d.ts +0 -50
  53. package/dist/lib/database/utils.d.ts.map +0 -1
  54. package/dist/lib/database/utils.js +0 -78
  55. package/dist/lib/database/utils.js.map +0 -1
  56. package/dist/lib/index.d.ts +0 -14
  57. package/dist/lib/index.d.ts.map +0 -1
  58. package/dist/lib/index.js +0 -17
  59. package/dist/lib/index.js.map +0 -1
  60. package/dist/lib/llm_api/hazo_llm_image_image.d.ts +0 -26
  61. package/dist/lib/llm_api/hazo_llm_image_image.d.ts.map +0 -1
  62. package/dist/lib/llm_api/hazo_llm_image_image.js +0 -94
  63. package/dist/lib/llm_api/hazo_llm_image_image.js.map +0 -1
  64. package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts +0 -26
  65. package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts.map +0 -1
  66. package/dist/lib/llm_api/hazo_llm_image_image_text.js +0 -222
  67. package/dist/lib/llm_api/hazo_llm_image_image_text.js.map +0 -1
  68. package/dist/lib/llm_api/hazo_llm_image_text.d.ts +0 -20
  69. package/dist/lib/llm_api/hazo_llm_image_text.d.ts.map +0 -1
  70. package/dist/lib/llm_api/hazo_llm_image_text.js +0 -78
  71. package/dist/lib/llm_api/hazo_llm_image_text.js.map +0 -1
  72. package/dist/lib/llm_api/hazo_llm_text_image.d.ts +0 -20
  73. package/dist/lib/llm_api/hazo_llm_text_image.d.ts.map +0 -1
  74. package/dist/lib/llm_api/hazo_llm_text_image.js +0 -69
  75. package/dist/lib/llm_api/hazo_llm_text_image.js.map +0 -1
  76. package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts +0 -26
  77. package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts.map +0 -1
  78. package/dist/lib/llm_api/hazo_llm_text_image_text.js +0 -154
  79. package/dist/lib/llm_api/hazo_llm_text_image_text.js.map +0 -1
  80. package/dist/lib/llm_api/hazo_llm_text_text.d.ts +0 -20
  81. package/dist/lib/llm_api/hazo_llm_text_text.d.ts.map +0 -1
  82. package/dist/lib/llm_api/hazo_llm_text_text.js +0 -91
  83. package/dist/lib/llm_api/hazo_llm_text_text.js.map +0 -1
  84. package/dist/lib/llm_api/index.d.ts +0 -191
  85. package/dist/lib/llm_api/index.d.ts.map +0 -1
  86. package/dist/lib/llm_api/index.js +0 -1168
  87. package/dist/lib/llm_api/index.js.map +0 -1
  88. package/dist/lib/llm_api/provider_helper.d.ts +0 -163
  89. package/dist/lib/llm_api/provider_helper.d.ts.map +0 -1
  90. package/dist/lib/llm_api/provider_helper.js +0 -346
  91. package/dist/lib/llm_api/provider_helper.js.map +0 -1
  92. package/dist/lib/llm_api/types.d.ts +0 -525
  93. package/dist/lib/llm_api/types.d.ts.map +0 -1
  94. package/dist/lib/llm_api/types.js +0 -49
  95. package/dist/lib/llm_api/types.js.map +0 -1
  96. package/dist/lib/prompts/get_prompt.d.ts +0 -50
  97. package/dist/lib/prompts/get_prompt.d.ts.map +0 -1
  98. package/dist/lib/prompts/get_prompt.js +0 -232
  99. package/dist/lib/prompts/get_prompt.js.map +0 -1
  100. package/dist/lib/prompts/index.d.ts +0 -9
  101. package/dist/lib/prompts/index.d.ts.map +0 -1
  102. package/dist/lib/prompts/index.js +0 -9
  103. package/dist/lib/prompts/index.js.map +0 -1
  104. package/dist/lib/prompts/prompt_cache.d.ts +0 -151
  105. package/dist/lib/prompts/prompt_cache.d.ts.map +0 -1
  106. package/dist/lib/prompts/prompt_cache.js +0 -276
  107. package/dist/lib/prompts/prompt_cache.js.map +0 -1
  108. package/dist/lib/prompts/substitute_variables.d.ts +0 -38
  109. package/dist/lib/prompts/substitute_variables.d.ts.map +0 -1
  110. package/dist/lib/prompts/substitute_variables.js +0 -175
  111. package/dist/lib/prompts/substitute_variables.js.map +0 -1
  112. package/dist/lib/providers/gemini/gemini_client.d.ts +0 -25
  113. package/dist/lib/providers/gemini/gemini_client.d.ts.map +0 -1
  114. package/dist/lib/providers/gemini/gemini_client.js +0 -235
  115. package/dist/lib/providers/gemini/gemini_client.js.map +0 -1
  116. package/dist/lib/providers/gemini/gemini_provider.d.ts +0 -111
  117. package/dist/lib/providers/gemini/gemini_provider.d.ts.map +0 -1
  118. package/dist/lib/providers/gemini/gemini_provider.js +0 -431
  119. package/dist/lib/providers/gemini/gemini_provider.js.map +0 -1
  120. package/dist/lib/providers/gemini/index.d.ts +0 -8
  121. package/dist/lib/providers/gemini/index.d.ts.map +0 -1
  122. package/dist/lib/providers/gemini/index.js +0 -8
  123. package/dist/lib/providers/gemini/index.js.map +0 -1
  124. package/dist/lib/providers/index.d.ts +0 -8
  125. package/dist/lib/providers/index.d.ts.map +0 -1
  126. package/dist/lib/providers/index.js +0 -8
  127. package/dist/lib/providers/index.js.map +0 -1
  128. package/dist/lib/providers/qwen/index.d.ts +0 -8
  129. package/dist/lib/providers/qwen/index.d.ts.map +0 -1
  130. package/dist/lib/providers/qwen/index.js +0 -8
  131. package/dist/lib/providers/qwen/index.js.map +0 -1
  132. package/dist/lib/providers/qwen/qwen_client.d.ts +0 -154
  133. package/dist/lib/providers/qwen/qwen_client.d.ts.map +0 -1
  134. package/dist/lib/providers/qwen/qwen_client.js +0 -1002
  135. package/dist/lib/providers/qwen/qwen_client.js.map +0 -1
  136. package/dist/lib/providers/qwen/qwen_provider.d.ts +0 -139
  137. package/dist/lib/providers/qwen/qwen_provider.d.ts.map +0 -1
  138. package/dist/lib/providers/qwen/qwen_provider.js +0 -304
  139. package/dist/lib/providers/qwen/qwen_provider.js.map +0 -1
  140. package/dist/lib/providers/registry.d.ts +0 -66
  141. package/dist/lib/providers/registry.d.ts.map +0 -1
  142. package/dist/lib/providers/registry.js +0 -158
  143. package/dist/lib/providers/registry.js.map +0 -1
  144. package/dist/lib/providers/types.d.ts +0 -145
  145. package/dist/lib/providers/types.d.ts.map +0 -1
  146. package/dist/lib/providers/types.js +0 -37
  147. package/dist/lib/providers/types.js.map +0 -1
  148. package/dist/server.d.ts +0 -26
  149. package/dist/server.d.ts.map +0 -1
  150. package/dist/server.js +0 -49
  151. package/dist/server.js.map +0 -1
@@ -1,524 +0,0 @@
1
- /**
2
- * Database Initialization Module
3
- *
4
- * Initializes and manages the SQLite database for prompt storage.
5
- * Uses sql.js for database operations (pure JavaScript SQLite).
6
- * Creates the prompts_library table if it doesn't exist.
7
- */
8
- import initSqlJs from 'sql.js';
9
- import fs from 'fs';
10
- import path from 'path';
11
- import os from 'os';
12
- import { randomUUID } from 'crypto';
13
- import { row_to_prompt_record } from './utils.js';
14
- // =============================================================================
15
- // Path Helpers
16
- // =============================================================================
17
- /**
18
- * Default SQLite database filename
19
- */
20
- const DEFAULT_SQLITE_FILENAME = 'prompt_library.sqlite';
21
- /**
22
- * Get the default SQLite database path
23
- * Returns an absolute path relative to the current working directory
24
- *
25
- * @returns Default database path: "{process.cwd()}/prompt_library.sqlite"
26
- *
27
- * @example
28
- * ```typescript
29
- * import { get_default_sqlite_path } from 'hazo_llm_api/server';
30
- *
31
- * const path = get_default_sqlite_path();
32
- * // Returns: "/path/to/your/app/prompt_library.sqlite"
33
- * ```
34
- */
35
- export function get_default_sqlite_path() {
36
- return path.join(process.cwd(), DEFAULT_SQLITE_FILENAME);
37
- }
38
- /**
39
- * Expand tilde (~) in path to user's home directory
40
- * Also supports environment variables in the format ${VAR_NAME}
41
- *
42
- * @param file_path - Path that may contain ~ or environment variables
43
- * @returns Expanded path
44
- *
45
- * @example
46
- * ```typescript
47
- * import { expand_path } from 'hazo_llm_api/server';
48
- *
49
- * expand_path('~/data/prompts.db');
50
- * // Returns: "/Users/username/data/prompts.db"
51
- *
52
- * expand_path('${HOME}/data/prompts.db');
53
- * // Returns: "/Users/username/data/prompts.db"
54
- * ```
55
- */
56
- export function expand_path(file_path) {
57
- let expanded = file_path;
58
- // Expand tilde to home directory
59
- if (expanded.startsWith('~')) {
60
- expanded = path.join(os.homedir(), expanded.slice(1));
61
- }
62
- // Expand environment variables ${VAR_NAME}
63
- expanded = expanded.replace(/\$\{([^}]+)\}/g, (_, var_name) => {
64
- return process.env[var_name] || '';
65
- });
66
- // Also support $VAR_NAME format (common in Unix)
67
- expanded = expanded.replace(/\$([A-Za-z_][A-Za-z0-9_]*)/g, (_, var_name) => {
68
- return process.env[var_name] || '';
69
- });
70
- return expanded;
71
- }
72
- /**
73
- * Resolve a database path to an absolute path
74
- * Handles tilde expansion, environment variables, and relative paths
75
- *
76
- * @param sqlite_path - Path to resolve (can be relative, absolute, or contain ~/$VAR)
77
- * @returns Absolute path to the database file
78
- *
79
- * @example
80
- * ```typescript
81
- * import { resolve_sqlite_path } from 'hazo_llm_api/server';
82
- *
83
- * resolve_sqlite_path('prompt_library.sqlite');
84
- * // Returns: "/path/to/cwd/prompt_library.sqlite"
85
- *
86
- * resolve_sqlite_path('~/data/prompts.db');
87
- * // Returns: "/Users/username/data/prompts.db"
88
- *
89
- * resolve_sqlite_path('/absolute/path/prompts.db');
90
- * // Returns: "/absolute/path/prompts.db"
91
- * ```
92
- */
93
- export function resolve_sqlite_path(sqlite_path) {
94
- // First expand any special characters
95
- const expanded = expand_path(sqlite_path);
96
- // Then resolve to absolute path if needed
97
- return path.isAbsolute(expanded)
98
- ? expanded
99
- : path.join(process.cwd(), expanded);
100
- }
101
- // =============================================================================
102
- // Database Instance
103
- // =============================================================================
104
- let db_instance = null;
105
- let db_path = null;
106
- let sql_initialized = false;
107
- // =============================================================================
108
- // Database Initialization
109
- // =============================================================================
110
- /**
111
- * Initialize the SQLite database connection and create tables if needed
112
- * @param sqlite_path - Path to the SQLite database file (relative to app root)
113
- * @param logger - Logger instance for logging operations
114
- * @returns Database instance
115
- */
116
- export async function initialize_database(sqlite_path, logger) {
117
- const file_name = 'init_database.ts';
118
- // Return existing instance if already initialized
119
- if (db_instance) {
120
- logger.debug('Database already initialized, returning existing instance', {
121
- file: file_name,
122
- line: 36,
123
- });
124
- return db_instance;
125
- }
126
- try {
127
- // Initialize sql.js
128
- if (!sql_initialized) {
129
- await initSqlJs();
130
- sql_initialized = true;
131
- }
132
- // Resolve database path relative to process.cwd() (consuming app root)
133
- const resolved_path = path.isAbsolute(sqlite_path)
134
- ? sqlite_path
135
- : path.join(process.cwd(), sqlite_path);
136
- db_path = resolved_path;
137
- logger.info('Initializing SQLite database', {
138
- file: file_name,
139
- line: 56,
140
- data: { path: resolved_path },
141
- });
142
- // Check if database file exists
143
- let file_buffer = null;
144
- try {
145
- if (fs.existsSync(resolved_path)) {
146
- file_buffer = fs.readFileSync(resolved_path);
147
- logger.debug('Loading existing database file', {
148
- file: file_name,
149
- line: 66,
150
- data: { path: resolved_path },
151
- });
152
- }
153
- }
154
- catch {
155
- // File doesn't exist, will create new database
156
- logger.debug('Database file does not exist, will create new', {
157
- file: file_name,
158
- line: 73,
159
- data: { path: resolved_path },
160
- });
161
- }
162
- // Create database connection
163
- const SQL = await initSqlJs();
164
- db_instance = file_buffer
165
- ? new SQL.Database(file_buffer)
166
- : new SQL.Database();
167
- // Create prompts_library table if it doesn't exist
168
- create_prompts_table(db_instance, logger);
169
- // Save database to file
170
- save_database(logger);
171
- logger.info('Database initialized successfully', {
172
- file: file_name,
173
- line: 92,
174
- data: { path: resolved_path },
175
- });
176
- return db_instance;
177
- }
178
- catch (error) {
179
- const error_message = error instanceof Error ? error.message : String(error);
180
- logger.error('Failed to initialize database', {
181
- file: file_name,
182
- line: 100,
183
- data: { error: error_message, sqlite_path },
184
- });
185
- throw error;
186
- }
187
- }
188
- /**
189
- * Initialize database synchronously (for use in already async contexts)
190
- * Note: This should only be called after initialize_database has been called once
191
- */
192
- export function initialize_database_sync(sqlite_path, logger) {
193
- // If already initialized, return the instance
194
- if (db_instance) {
195
- return db_instance;
196
- }
197
- // Otherwise, we need to initialize asynchronously first
198
- logger.warn('Database not initialized. Call initialize_database first.', {
199
- file: 'init_database.ts',
200
- line: 120,
201
- });
202
- return null;
203
- }
204
- // =============================================================================
205
- // Table Creation
206
- // =============================================================================
207
- /**
208
- * Create the prompts_library table if it doesn't exist
209
- * @param db - Database instance
210
- * @param logger - Logger instance
211
- */
212
- function create_prompts_table(db, logger) {
213
- const file_name = 'init_database.ts';
214
- const create_table_sql = `
215
- CREATE TABLE IF NOT EXISTS prompts_library (
216
- uuid TEXT PRIMARY KEY,
217
- prompt_area TEXT NOT NULL,
218
- prompt_key TEXT NOT NULL,
219
- prompt_text TEXT NOT NULL,
220
- prompt_variables TEXT DEFAULT '[]',
221
- prompt_notes TEXT DEFAULT '',
222
- created_at TEXT DEFAULT (datetime('now')),
223
- changed_by TEXT DEFAULT NULL
224
- )
225
- `;
226
- try {
227
- db.run(create_table_sql);
228
- // Create index for faster lookups by prompt_area and prompt_key
229
- const create_index_sql = `
230
- CREATE INDEX IF NOT EXISTS idx_prompts_area_key
231
- ON prompts_library(prompt_area, prompt_key)
232
- `;
233
- db.run(create_index_sql);
234
- logger.debug('prompts_library table created/verified', {
235
- file: file_name,
236
- line: 164,
237
- });
238
- }
239
- catch (error) {
240
- const error_message = error instanceof Error ? error.message : String(error);
241
- logger.error('Failed to create prompts_library table', {
242
- file: file_name,
243
- line: 170,
244
- data: { error: error_message },
245
- });
246
- throw error;
247
- }
248
- }
249
- // =============================================================================
250
- // Database Operations
251
- // =============================================================================
252
- /**
253
- * Get the current database instance
254
- * @returns Database instance or null if not initialized
255
- */
256
- export function get_database() {
257
- return db_instance;
258
- }
259
- /**
260
- * Save the database to file
261
- * @param logger - Logger instance
262
- */
263
- export function save_database(logger) {
264
- const file_name = 'init_database.ts';
265
- if (!db_instance || !db_path) {
266
- logger.warn('Cannot save database: not initialized', {
267
- file: file_name,
268
- line: 197,
269
- });
270
- return;
271
- }
272
- try {
273
- const data = db_instance.export();
274
- const buffer = Buffer.from(data);
275
- // Ensure directory exists
276
- const dir = path.dirname(db_path);
277
- if (!fs.existsSync(dir)) {
278
- fs.mkdirSync(dir, { recursive: true });
279
- }
280
- fs.writeFileSync(db_path, buffer);
281
- logger.debug('Database saved to file', {
282
- file: file_name,
283
- line: 214,
284
- data: { path: db_path },
285
- });
286
- }
287
- catch (error) {
288
- const error_message = error instanceof Error ? error.message : String(error);
289
- logger.error('Failed to save database', {
290
- file: file_name,
291
- line: 220,
292
- data: { error: error_message },
293
- });
294
- }
295
- }
296
- /**
297
- * Close the database connection
298
- * @param logger - Logger instance
299
- */
300
- export function close_database(logger) {
301
- const file_name = 'init_database.ts';
302
- if (db_instance) {
303
- try {
304
- // Save before closing
305
- save_database(logger);
306
- db_instance.close();
307
- db_instance = null;
308
- db_path = null;
309
- logger.info('Database connection closed', {
310
- file: file_name,
311
- line: 243,
312
- });
313
- }
314
- catch (error) {
315
- const error_message = error instanceof Error ? error.message : String(error);
316
- logger.error('Failed to close database connection', {
317
- file: file_name,
318
- line: 249,
319
- data: { error: error_message },
320
- });
321
- }
322
- }
323
- }
324
- // =============================================================================
325
- // Prompt CRUD Operations
326
- // =============================================================================
327
- /**
328
- * Insert a new prompt into the database
329
- * @param db - Database instance
330
- * @param prompt - Prompt data to insert
331
- * @param logger - Logger instance
332
- * @returns The inserted prompt record
333
- */
334
- export function insert_prompt(db, prompt, logger) {
335
- const file_name = 'init_database.ts';
336
- const uuid = randomUUID();
337
- const insert_sql = `
338
- INSERT INTO prompts_library (uuid, prompt_area, prompt_key, prompt_text, prompt_variables, prompt_notes)
339
- VALUES (?, ?, ?, ?, ?, ?)
340
- `;
341
- try {
342
- logger.debug('Inserting prompt into database', {
343
- file: file_name,
344
- line: 282,
345
- data: {
346
- uuid,
347
- prompt_area: prompt.prompt_area,
348
- prompt_key: prompt.prompt_key,
349
- },
350
- });
351
- db.run(insert_sql, [
352
- uuid,
353
- prompt.prompt_area,
354
- prompt.prompt_key,
355
- prompt.prompt_text,
356
- prompt.prompt_variables,
357
- prompt.prompt_notes,
358
- ]);
359
- // Save changes to file
360
- save_database(logger);
361
- // Fetch the inserted record
362
- const result = db.exec('SELECT * FROM prompts_library WHERE uuid = ?', [uuid]);
363
- if (result.length === 0 || result[0].values.length === 0) {
364
- throw new Error('Failed to retrieve inserted prompt');
365
- }
366
- const row = result[0].values[0];
367
- const columns = result[0].columns;
368
- const record = row_to_prompt_record(row, columns);
369
- logger.info('Prompt inserted successfully', {
370
- file: file_name,
371
- line: 318,
372
- data: { uuid, prompt_area: prompt.prompt_area, prompt_key: prompt.prompt_key },
373
- });
374
- return record;
375
- }
376
- catch (error) {
377
- const error_message = error instanceof Error ? error.message : String(error);
378
- logger.error('Failed to insert prompt', {
379
- file: file_name,
380
- line: 326,
381
- data: { error: error_message, prompt_area: prompt.prompt_area, prompt_key: prompt.prompt_key },
382
- });
383
- throw error;
384
- }
385
- }
386
- /**
387
- * Update an existing prompt in the database
388
- * @param db - Database instance
389
- * @param uuid - UUID of the prompt to update
390
- * @param updates - Fields to update
391
- * @param logger - Logger instance
392
- * @returns The updated prompt record
393
- */
394
- export function update_prompt(db, uuid, updates, logger) {
395
- const file_name = 'init_database.ts';
396
- // Build dynamic update SQL
397
- const fields = [];
398
- const values = [];
399
- if (updates.prompt_area !== undefined) {
400
- fields.push('prompt_area = ?');
401
- values.push(updates.prompt_area);
402
- }
403
- if (updates.prompt_key !== undefined) {
404
- fields.push('prompt_key = ?');
405
- values.push(updates.prompt_key);
406
- }
407
- if (updates.prompt_text !== undefined) {
408
- fields.push('prompt_text = ?');
409
- values.push(updates.prompt_text);
410
- }
411
- if (updates.prompt_variables !== undefined) {
412
- fields.push('prompt_variables = ?');
413
- values.push(updates.prompt_variables);
414
- }
415
- if (updates.prompt_notes !== undefined) {
416
- fields.push('prompt_notes = ?');
417
- values.push(updates.prompt_notes);
418
- }
419
- if (fields.length === 0) {
420
- logger.warn('No fields to update', {
421
- file: file_name,
422
- line: 377,
423
- data: { uuid },
424
- });
425
- return null;
426
- }
427
- // Add changed_by timestamp
428
- fields.push("changed_by = datetime('now')");
429
- values.push(uuid);
430
- const update_sql = `
431
- UPDATE prompts_library
432
- SET ${fields.join(', ')}
433
- WHERE uuid = ?
434
- `;
435
- try {
436
- logger.debug('Updating prompt in database', {
437
- file: file_name,
438
- line: 395,
439
- data: { uuid, fields: Object.keys(updates) },
440
- });
441
- db.run(update_sql, values);
442
- // Save changes to file
443
- save_database(logger);
444
- // Fetch the updated record
445
- const result = db.exec('SELECT * FROM prompts_library WHERE uuid = ?', [uuid]);
446
- if (result.length === 0 || result[0].values.length === 0) {
447
- logger.warn('Prompt not found after update', {
448
- file: file_name,
449
- line: 412,
450
- data: { uuid },
451
- });
452
- return null;
453
- }
454
- const row = result[0].values[0];
455
- const columns = result[0].columns;
456
- const record = row_to_prompt_record(row, columns);
457
- logger.info('Prompt updated successfully', {
458
- file: file_name,
459
- line: 423,
460
- data: { uuid },
461
- });
462
- return record;
463
- }
464
- catch (error) {
465
- const error_message = error instanceof Error ? error.message : String(error);
466
- logger.error('Failed to update prompt', {
467
- file: file_name,
468
- line: 431,
469
- data: { error: error_message, uuid },
470
- });
471
- throw error;
472
- }
473
- }
474
- /**
475
- * Delete a prompt from the database
476
- * @param db - Database instance
477
- * @param uuid - UUID of the prompt to delete
478
- * @param logger - Logger instance
479
- * @returns True if deleted successfully, false if not found
480
- */
481
- export function delete_prompt(db, uuid, logger) {
482
- const file_name = 'init_database.ts';
483
- const delete_sql = `DELETE FROM prompts_library WHERE uuid = ?`;
484
- try {
485
- logger.debug('Deleting prompt from database', {
486
- file: file_name,
487
- line: 475,
488
- data: { uuid },
489
- });
490
- // Check if prompt exists first
491
- const check_result = db.exec('SELECT uuid FROM prompts_library WHERE uuid = ?', [uuid]);
492
- if (check_result.length === 0 || check_result[0].values.length === 0) {
493
- logger.warn('Prompt not found for deletion', {
494
- file: file_name,
495
- line: 485,
496
- data: { uuid },
497
- });
498
- return false;
499
- }
500
- db.run(delete_sql, [uuid]);
501
- // Save changes to file
502
- save_database(logger);
503
- logger.info('Prompt deleted successfully', {
504
- file: file_name,
505
- line: 495,
506
- data: { uuid },
507
- });
508
- return true;
509
- }
510
- catch (error) {
511
- const error_message = error instanceof Error ? error.message : String(error);
512
- logger.error('Failed to delete prompt', {
513
- file: file_name,
514
- line: 502,
515
- data: { error: error_message, uuid },
516
- });
517
- throw error;
518
- }
519
- }
520
- // =============================================================================
521
- // Helper Functions
522
- // =============================================================================
523
- // Note: row_to_prompt_record is now imported from ./utils.js for single source of truth
524
- //# sourceMappingURL=init_database.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init_database.js","sourceRoot":"","sources":["../../../src/lib/database/init_database.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,SAAwC,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF;;GAEG;AACH,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAExD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,IAAI,QAAQ,GAAG,SAAS,CAAC;IAEzB,iCAAiC;IACjC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,2CAA2C;IAC3C,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;QAC5D,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,iDAAiD;IACjD,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,6BAA6B,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;QACzE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,sCAAsC;IACtC,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAE1C,0CAA0C;IAC1C,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC9B,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,IAAI,WAAW,GAAyB,IAAI,CAAC;AAC7C,IAAI,OAAO,GAAkB,IAAI,CAAC;AAClC,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,MAAc;IAEd,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,kDAAkD;IAClD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,2DAA2D,EAAE;YACxE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,CAAC;QACH,oBAAoB;QACpB,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,SAAS,EAAE,CAAC;YAClB,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,uEAAuE;QACvE,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAChD,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QAE1C,OAAO,GAAG,aAAa,CAAC;QAExB,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;YAC1C,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;SAC9B,CAAC,CAAC;QAEH,gCAAgC;QAChC,IAAI,WAAW,GAAkB,IAAI,CAAC;QACtC,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjC,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;oBAC7C,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;iBAC9B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;YAC/C,MAAM,CAAC,KAAK,CAAC,+CAA+C,EAAE;gBAC5D,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;aAC9B,CAAC,CAAC;QACL,CAAC;QAED,6BAA6B;QAC7B,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,WAAW,GAAG,WAAW;YACvB,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/B,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEvB,mDAAmD;QACnD,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAE1C,wBAAwB;QACxB,aAAa,CAAC,MAAM,CAAC,CAAC;QAEtB,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE;YAC/C,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;SAC9B,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7E,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE;YAC5C,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE;SAC5C,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,WAAmB,EACnB,MAAc;IAEd,8CAA8C;IAC9C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,wDAAwD;IACxD,MAAM,CAAC,IAAI,CAAC,2DAA2D,EAAE;QACvE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,GAAG;KACV,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,EAAiB,EAAE,MAAc;IAC7D,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,MAAM,gBAAgB,GAAG;;;;;;;;;;;GAWxB,CAAC;IAEF,IAAI,CAAC;QACH,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEzB,gEAAgE;QAChE,MAAM,gBAAgB,GAAG;;;KAGxB,CAAC;QACF,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEzB,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE;YACrD,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7E,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE;YACrD,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;SAC/B,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE;YACnD,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEjC,0BAA0B;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAElC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;YACrC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SACxB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7E,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;YACtC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,sBAAsB;YACtB,aAAa,CAAC,MAAM,CAAC,CAAC;YAEtB,WAAW,CAAC,KAAK,EAAE,CAAC;YACpB,WAAW,GAAG,IAAI,CAAC;YACnB,OAAO,GAAG,IAAI,CAAC;YAEf,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;gBACxC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,GAAG;aACV,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,aAAa,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7E,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE;gBAClD,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;aAC/B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,EAAiB,EACjB,MAAgE,EAChE,MAAc;IAEd,MAAM,SAAS,GAAG,kBAAkB,CAAC;IACrC,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;IAE1B,MAAM,UAAU,GAAG;;;GAGlB,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;YAC7C,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,IAAI,EAAE;gBACJ,IAAI;gBACJ,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B;SACF,CAAC,CAAC;QAEH,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE;YACjB,IAAI;YACJ,MAAM,CAAC,WAAW;YAClB,MAAM,CAAC,UAAU;YACjB,MAAM,CAAC,WAAW;YAClB,MAAM,CAAC,gBAAgB;YACvB,MAAM,CAAC,YAAY;SACpB,CAAC,CAAC;QAEH,uBAAuB;QACvB,aAAa,CAAC,MAAM,CAAC,CAAC;QAEtB,4BAA4B;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CACpB,8CAA8C,EAC9C,CAAC,IAAI,CAAC,CACP,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAElC,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAElD,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;YAC1C,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;SAC/E,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7E,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;YACtC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;SAC/F,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,EAAiB,EACjB,IAAY,EACZ,OAA0E,EAC1E,MAAc;IAEd,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,2BAA2B;IAC3B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACjC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,EAAE,IAAI,EAAE;SACf,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2BAA2B;IAC3B,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAElB,MAAM,UAAU,GAAG;;UAEX,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;GAExB,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;YAC1C,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;SAC7C,CAAC,CAAC;QAEH,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAE3B,uBAAuB;QACvB,aAAa,CAAC,MAAM,CAAC,CAAC;QAEtB,2BAA2B;QAC3B,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CACpB,8CAA8C,EAC9C,CAAC,IAAI,CAAC,CACP,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;gBAC3C,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,EAAE,IAAI,EAAE;aACf,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAElC,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAElD,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;YACzC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,EAAE,IAAI,EAAE;SACf,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7E,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;YACtC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;SACrC,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,EAAiB,EACjB,IAAY,EACZ,MAAc;IAEd,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,MAAM,UAAU,GAAG,4CAA4C,CAAC;IAEhE,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE;YAC5C,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,EAAE,IAAI,EAAE;SACf,CAAC,CAAC;QAEH,+BAA+B;QAC/B,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,CAC1B,iDAAiD,EACjD,CAAC,IAAI,CAAC,CACP,CAAC;QAEF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrE,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;gBAC3C,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,EAAE,IAAI,EAAE;aACf,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QAED,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3B,uBAAuB;QACvB,aAAa,CAAC,MAAM,CAAC,CAAC;QAEtB,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;YACzC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,EAAE,IAAI,EAAE;SACf,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7E,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;YACtC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;SACrC,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAChF,wFAAwF"}
@@ -1,50 +0,0 @@
1
- /**
2
- * Database Utilities
3
- *
4
- * Shared utility functions for database operations.
5
- * Single source of truth for common database helpers.
6
- */
7
- import type { PromptRecord } from '../llm_api/types.js';
8
- /**
9
- * Convert a database row to a PromptRecord object using column names
10
- *
11
- * This is the single source of truth for row-to-record conversion.
12
- * Used by both database initialization and prompt retrieval functions.
13
- *
14
- * @param row - Raw database row as array of values
15
- * @param columns - Array of column names from the query result
16
- * @returns PromptRecord object
17
- *
18
- * @example
19
- * ```typescript
20
- * const result = db.exec('SELECT * FROM prompts_library WHERE uuid = ?', [uuid]);
21
- * if (result.length > 0 && result[0].values.length > 0) {
22
- * const record = row_to_prompt_record(result[0].values[0], result[0].columns);
23
- * }
24
- * ```
25
- */
26
- export declare function row_to_prompt_record(row: unknown[], columns: string[]): PromptRecord;
27
- /**
28
- * Column indices for prompts_library table
29
- * Use these constants when building queries to ensure consistency
30
- */
31
- export declare const PROMPT_COLUMNS: {
32
- readonly UUID: 0;
33
- readonly PROMPT_AREA: 1;
34
- readonly PROMPT_KEY: 2;
35
- readonly PROMPT_TEXT: 3;
36
- readonly PROMPT_VARIABLES: 4;
37
- readonly PROMPT_NOTES: 5;
38
- readonly CREATED_AT: 6;
39
- readonly CHANGED_BY: 7;
40
- };
41
- /**
42
- * SQL column names for prompts_library table
43
- */
44
- export declare const PROMPT_COLUMN_NAMES: readonly ["uuid", "prompt_area", "prompt_key", "prompt_text", "prompt_variables", "prompt_notes", "created_at", "changed_by"];
45
- /**
46
- * Get the SELECT clause for all prompt columns
47
- * @returns SQL SELECT clause string
48
- */
49
- export declare function get_prompt_select_clause(): string;
50
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/database/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMxD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,CAiBpF;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;;;;CASjB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,mBAAmB,+HAStB,CAAC;AAEX;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD"}
@@ -1,78 +0,0 @@
1
- /**
2
- * Database Utilities
3
- *
4
- * Shared utility functions for database operations.
5
- * Single source of truth for common database helpers.
6
- */
7
- // =============================================================================
8
- // Row Conversion Utilities
9
- // =============================================================================
10
- /**
11
- * Convert a database row to a PromptRecord object using column names
12
- *
13
- * This is the single source of truth for row-to-record conversion.
14
- * Used by both database initialization and prompt retrieval functions.
15
- *
16
- * @param row - Raw database row as array of values
17
- * @param columns - Array of column names from the query result
18
- * @returns PromptRecord object
19
- *
20
- * @example
21
- * ```typescript
22
- * const result = db.exec('SELECT * FROM prompts_library WHERE uuid = ?', [uuid]);
23
- * if (result.length > 0 && result[0].values.length > 0) {
24
- * const record = row_to_prompt_record(result[0].values[0], result[0].columns);
25
- * }
26
- * ```
27
- */
28
- export function row_to_prompt_record(row, columns) {
29
- const record = {};
30
- for (let i = 0; i < columns.length; i++) {
31
- record[columns[i]] = row[i];
32
- }
33
- return {
34
- uuid: String(record.uuid || ''),
35
- prompt_area: String(record.prompt_area || ''),
36
- prompt_key: String(record.prompt_key || ''),
37
- prompt_text: String(record.prompt_text || ''),
38
- prompt_variables: String(record.prompt_variables || '[]'),
39
- prompt_notes: String(record.prompt_notes || ''),
40
- created_at: String(record.created_at || ''),
41
- changed_by: String(record.changed_by || ''),
42
- };
43
- }
44
- /**
45
- * Column indices for prompts_library table
46
- * Use these constants when building queries to ensure consistency
47
- */
48
- export const PROMPT_COLUMNS = {
49
- UUID: 0,
50
- PROMPT_AREA: 1,
51
- PROMPT_KEY: 2,
52
- PROMPT_TEXT: 3,
53
- PROMPT_VARIABLES: 4,
54
- PROMPT_NOTES: 5,
55
- CREATED_AT: 6,
56
- CHANGED_BY: 7,
57
- };
58
- /**
59
- * SQL column names for prompts_library table
60
- */
61
- export const PROMPT_COLUMN_NAMES = [
62
- 'uuid',
63
- 'prompt_area',
64
- 'prompt_key',
65
- 'prompt_text',
66
- 'prompt_variables',
67
- 'prompt_notes',
68
- 'created_at',
69
- 'changed_by',
70
- ];
71
- /**
72
- * Get the SELECT clause for all prompt columns
73
- * @returns SQL SELECT clause string
74
- */
75
- export function get_prompt_select_clause() {
76
- return PROMPT_COLUMN_NAMES.join(', ');
77
- }
78
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/database/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAc,EAAE,OAAiB;IACpE,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QAC7C,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3C,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QAC7C,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC;QACzD,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;QAC/C,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3C,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,CAAC;IACP,WAAW,EAAE,CAAC;IACd,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,CAAC;IACd,gBAAgB,EAAE,CAAC;IACnB,YAAY,EAAE,CAAC;IACf,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,CAAC;CACL,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,MAAM;IACN,aAAa;IACb,YAAY;IACZ,aAAa;IACb,kBAAkB;IAClB,cAAc;IACd,YAAY;IACZ,YAAY;CACJ,CAAC;AAEX;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC"}