hazo_llm_api 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/components/index.d.ts +7 -0
  2. package/dist/components/index.d.ts.map +1 -0
  3. package/dist/components/index.js +7 -0
  4. package/dist/components/index.js.map +1 -0
  5. package/dist/components/layout/index.d.ts +7 -0
  6. package/dist/components/layout/index.d.ts.map +1 -0
  7. package/dist/components/layout/index.js +7 -0
  8. package/dist/components/layout/index.js.map +1 -0
  9. package/dist/components/layout/layout.d.ts +21 -0
  10. package/dist/components/layout/layout.d.ts.map +1 -0
  11. package/dist/components/layout/layout.js +18 -0
  12. package/dist/components/layout/layout.js.map +1 -0
  13. package/dist/index.d.ts +15 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +21 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/lib/config/config_parser.d.ts +131 -0
  18. package/dist/lib/config/config_parser.d.ts.map +1 -0
  19. package/dist/lib/config/config_parser.js +297 -0
  20. package/dist/lib/config/config_parser.js.map +1 -0
  21. package/dist/lib/config/index.d.ts +8 -0
  22. package/dist/lib/config/index.d.ts.map +1 -0
  23. package/dist/lib/config/index.js +22 -0
  24. package/dist/lib/config/index.js.map +1 -0
  25. package/dist/lib/config/provider_loader.d.ts +113 -0
  26. package/dist/lib/config/provider_loader.d.ts.map +1 -0
  27. package/dist/lib/config/provider_loader.js +169 -0
  28. package/dist/lib/config/provider_loader.js.map +1 -0
  29. package/dist/lib/database/index.d.ts +8 -0
  30. package/dist/lib/database/index.d.ts.map +1 -0
  31. package/dist/lib/database/index.js +10 -0
  32. package/dist/lib/database/index.js.map +1 -0
  33. package/dist/lib/database/init_database.d.ts +118 -0
  34. package/dist/lib/database/init_database.d.ts.map +1 -0
  35. package/dist/lib/database/init_database.js +591 -0
  36. package/dist/lib/database/init_database.js.map +1 -0
  37. package/dist/lib/database/utils.d.ts +53 -0
  38. package/dist/lib/database/utils.d.ts.map +1 -0
  39. package/dist/lib/database/utils.js +87 -0
  40. package/dist/lib/database/utils.js.map +1 -0
  41. package/dist/lib/index.d.ts +14 -0
  42. package/dist/lib/index.d.ts.map +1 -0
  43. package/dist/lib/index.js +17 -0
  44. package/dist/lib/index.js.map +1 -0
  45. package/dist/lib/llm_api/chain_helpers.d.ts +117 -0
  46. package/dist/lib/llm_api/chain_helpers.d.ts.map +1 -0
  47. package/dist/lib/llm_api/chain_helpers.js +445 -0
  48. package/dist/lib/llm_api/chain_helpers.js.map +1 -0
  49. package/dist/lib/llm_api/hazo_llm_image_image.d.ts +26 -0
  50. package/dist/lib/llm_api/hazo_llm_image_image.d.ts.map +1 -0
  51. package/dist/lib/llm_api/hazo_llm_image_image.js +94 -0
  52. package/dist/lib/llm_api/hazo_llm_image_image.js.map +1 -0
  53. package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts +26 -0
  54. package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts.map +1 -0
  55. package/dist/lib/llm_api/hazo_llm_image_image_text.js +222 -0
  56. package/dist/lib/llm_api/hazo_llm_image_image_text.js.map +1 -0
  57. package/dist/lib/llm_api/hazo_llm_image_text.d.ts +20 -0
  58. package/dist/lib/llm_api/hazo_llm_image_text.d.ts.map +1 -0
  59. package/dist/lib/llm_api/hazo_llm_image_text.js +78 -0
  60. package/dist/lib/llm_api/hazo_llm_image_text.js.map +1 -0
  61. package/dist/lib/llm_api/hazo_llm_prompt_chain.d.ts +20 -0
  62. package/dist/lib/llm_api/hazo_llm_prompt_chain.d.ts.map +1 -0
  63. package/dist/lib/llm_api/hazo_llm_prompt_chain.js +368 -0
  64. package/dist/lib/llm_api/hazo_llm_prompt_chain.js.map +1 -0
  65. package/dist/lib/llm_api/hazo_llm_text_image.d.ts +20 -0
  66. package/dist/lib/llm_api/hazo_llm_text_image.d.ts.map +1 -0
  67. package/dist/lib/llm_api/hazo_llm_text_image.js +69 -0
  68. package/dist/lib/llm_api/hazo_llm_text_image.js.map +1 -0
  69. package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts +26 -0
  70. package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts.map +1 -0
  71. package/dist/lib/llm_api/hazo_llm_text_image_text.js +154 -0
  72. package/dist/lib/llm_api/hazo_llm_text_image_text.js.map +1 -0
  73. package/dist/lib/llm_api/hazo_llm_text_text.d.ts +20 -0
  74. package/dist/lib/llm_api/hazo_llm_text_text.d.ts.map +1 -0
  75. package/dist/lib/llm_api/hazo_llm_text_text.js +91 -0
  76. package/dist/lib/llm_api/hazo_llm_text_text.js.map +1 -0
  77. package/dist/lib/llm_api/index.d.ts +223 -0
  78. package/dist/lib/llm_api/index.d.ts.map +1 -0
  79. package/dist/lib/llm_api/index.js +1220 -0
  80. package/dist/lib/llm_api/index.js.map +1 -0
  81. package/dist/lib/llm_api/provider_helper.d.ts +163 -0
  82. package/dist/lib/llm_api/provider_helper.d.ts.map +1 -0
  83. package/dist/lib/llm_api/provider_helper.js +346 -0
  84. package/dist/lib/llm_api/provider_helper.js.map +1 -0
  85. package/dist/lib/llm_api/types.d.ts +667 -0
  86. package/dist/lib/llm_api/types.d.ts.map +1 -0
  87. package/dist/lib/llm_api/types.js +49 -0
  88. package/dist/lib/llm_api/types.js.map +1 -0
  89. package/dist/lib/prompts/get_prompt.d.ts +76 -0
  90. package/dist/lib/prompts/get_prompt.d.ts.map +1 -0
  91. package/dist/lib/prompts/get_prompt.js +342 -0
  92. package/dist/lib/prompts/get_prompt.js.map +1 -0
  93. package/dist/lib/prompts/index.d.ts +9 -0
  94. package/dist/lib/prompts/index.d.ts.map +1 -0
  95. package/dist/lib/prompts/index.js +9 -0
  96. package/dist/lib/prompts/index.js.map +1 -0
  97. package/dist/lib/prompts/prompt_cache.d.ts +151 -0
  98. package/dist/lib/prompts/prompt_cache.d.ts.map +1 -0
  99. package/dist/lib/prompts/prompt_cache.js +276 -0
  100. package/dist/lib/prompts/prompt_cache.js.map +1 -0
  101. package/dist/lib/prompts/substitute_variables.d.ts +38 -0
  102. package/dist/lib/prompts/substitute_variables.d.ts.map +1 -0
  103. package/dist/lib/prompts/substitute_variables.js +171 -0
  104. package/dist/lib/prompts/substitute_variables.js.map +1 -0
  105. package/dist/lib/providers/gemini/gemini_client.d.ts +25 -0
  106. package/dist/lib/providers/gemini/gemini_client.d.ts.map +1 -0
  107. package/dist/lib/providers/gemini/gemini_client.js +235 -0
  108. package/dist/lib/providers/gemini/gemini_client.js.map +1 -0
  109. package/dist/lib/providers/gemini/gemini_provider.d.ts +111 -0
  110. package/dist/lib/providers/gemini/gemini_provider.d.ts.map +1 -0
  111. package/dist/lib/providers/gemini/gemini_provider.js +431 -0
  112. package/dist/lib/providers/gemini/gemini_provider.js.map +1 -0
  113. package/dist/lib/providers/gemini/index.d.ts +8 -0
  114. package/dist/lib/providers/gemini/index.d.ts.map +1 -0
  115. package/dist/lib/providers/gemini/index.js +8 -0
  116. package/dist/lib/providers/gemini/index.js.map +1 -0
  117. package/dist/lib/providers/index.d.ts +8 -0
  118. package/dist/lib/providers/index.d.ts.map +1 -0
  119. package/dist/lib/providers/index.js +8 -0
  120. package/dist/lib/providers/index.js.map +1 -0
  121. package/dist/lib/providers/qwen/index.d.ts +8 -0
  122. package/dist/lib/providers/qwen/index.d.ts.map +1 -0
  123. package/dist/lib/providers/qwen/index.js +8 -0
  124. package/dist/lib/providers/qwen/index.js.map +1 -0
  125. package/dist/lib/providers/qwen/qwen_client.d.ts +154 -0
  126. package/dist/lib/providers/qwen/qwen_client.d.ts.map +1 -0
  127. package/dist/lib/providers/qwen/qwen_client.js +1002 -0
  128. package/dist/lib/providers/qwen/qwen_client.js.map +1 -0
  129. package/dist/lib/providers/qwen/qwen_provider.d.ts +139 -0
  130. package/dist/lib/providers/qwen/qwen_provider.d.ts.map +1 -0
  131. package/dist/lib/providers/qwen/qwen_provider.js +304 -0
  132. package/dist/lib/providers/qwen/qwen_provider.js.map +1 -0
  133. package/dist/lib/providers/registry.d.ts +66 -0
  134. package/dist/lib/providers/registry.d.ts.map +1 -0
  135. package/dist/lib/providers/registry.js +158 -0
  136. package/dist/lib/providers/registry.js.map +1 -0
  137. package/dist/lib/providers/types.d.ts +145 -0
  138. package/dist/lib/providers/types.d.ts.map +1 -0
  139. package/dist/lib/providers/types.js +37 -0
  140. package/dist/lib/providers/types.js.map +1 -0
  141. package/dist/server.d.ts +27 -0
  142. package/dist/server.d.ts.map +1 -0
  143. package/dist/server.js +50 -0
  144. package/dist/server.js.map +1 -0
  145. package/package.json +12 -1
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Provider Loader Factory
3
+ *
4
+ * Generic factory for loading LLM providers from configuration.
5
+ * Reduces duplication by providing a unified approach to provider loading.
6
+ */
7
+ import type { LLMProvider, ServiceType } from '../providers/types.js';
8
+ import type { Logger } from '../llm_api/types.js';
9
+ import { type ParameterMapping } from './config_parser.js';
10
+ /**
11
+ * Base configuration that all providers share
12
+ */
13
+ export interface BaseProviderConfig {
14
+ api_key: string;
15
+ api_url?: string;
16
+ capabilities?: ServiceType[];
17
+ logger: Logger;
18
+ }
19
+ /**
20
+ * Provider factory definition
21
+ * Used to register how to load a specific provider type
22
+ */
23
+ export interface ProviderFactory<TConfig extends BaseProviderConfig> {
24
+ /** Provider name (lowercase) */
25
+ name: string;
26
+ /** INI section name (e.g., "llm_gemini") */
27
+ config_section: string;
28
+ /** Parameter mappings for text generation config */
29
+ text_param_mappings: ParameterMapping[];
30
+ /** Parameter mappings for image generation config */
31
+ image_param_mappings: ParameterMapping[];
32
+ /**
33
+ * Build provider-specific config from INI section
34
+ *
35
+ * @param section - The parsed INI section
36
+ * @param api_key - The API key loaded from environment
37
+ * @param text_config - Parsed text generation config
38
+ * @param image_config - Parsed image generation config
39
+ * @param capabilities - Parsed capabilities
40
+ * @param logger - Logger instance
41
+ * @returns Provider-specific config object
42
+ */
43
+ build_config(section: Record<string, string>, api_key: string, text_config: unknown, image_config: unknown, capabilities: ServiceType[], logger: Logger): TConfig;
44
+ /**
45
+ * Create provider instance from config
46
+ *
47
+ * @param config - Provider-specific config object
48
+ * @returns Provider instance
49
+ */
50
+ create_provider(config: TConfig): LLMProvider;
51
+ }
52
+ /**
53
+ * Result of loading a provider
54
+ */
55
+ export type ProviderLoadResult = {
56
+ success: true;
57
+ provider: LLMProvider;
58
+ } | {
59
+ success: false;
60
+ error: string;
61
+ };
62
+ /**
63
+ * Register a provider factory
64
+ *
65
+ * @param factory - Provider factory to register
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * register_provider_factory({
70
+ * name: 'gemini',
71
+ * config_section: 'llm_gemini',
72
+ * text_param_mappings: GEMINI_PARAM_MAPPINGS,
73
+ * image_param_mappings: GEMINI_PARAM_MAPPINGS,
74
+ * build_config: (section, api_key, text_config, image_config, capabilities, logger) => ({
75
+ * api_key,
76
+ * api_url: section.api_url,
77
+ * // ... other gemini-specific fields
78
+ * }),
79
+ * create_provider: (config) => new GeminiProvider(config),
80
+ * });
81
+ * ```
82
+ */
83
+ export declare function register_provider_factory<TConfig extends BaseProviderConfig>(factory: ProviderFactory<TConfig>): void;
84
+ /**
85
+ * Get a registered provider factory by name
86
+ *
87
+ * @param name - Provider name (case-insensitive)
88
+ * @returns Provider factory or undefined
89
+ */
90
+ export declare function get_provider_factory(name: string): ProviderFactory<BaseProviderConfig> | undefined;
91
+ /**
92
+ * Get all registered provider factory names
93
+ *
94
+ * @returns Array of provider names
95
+ */
96
+ export declare function get_registered_factory_names(): string[];
97
+ /**
98
+ * Load a provider from config using its registered factory
99
+ *
100
+ * @param provider_name - Name of the provider to load
101
+ * @param logger - Logger instance
102
+ * @returns Provider instance or error result
103
+ */
104
+ export declare function load_provider_from_config(provider_name: string, logger: Logger): ProviderLoadResult;
105
+ /**
106
+ * Load all enabled providers from config
107
+ *
108
+ * @param enabled_llms - List of enabled LLM names
109
+ * @param logger - Logger instance
110
+ * @returns Map of successfully loaded providers
111
+ */
112
+ export declare function load_all_providers(enabled_llms: string[], logger: Logger): Map<string, LLMProvider>;
113
+ //# sourceMappingURL=provider_loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider_loader.d.ts","sourceRoot":"","sources":["../../../src/lib/config/provider_loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAOL,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAM5B;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe,CAAC,OAAO,SAAS,kBAAkB;IACjE,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IAEb,4CAA4C;IAC5C,cAAc,EAAE,MAAM,CAAC;IAEvB,oDAAoD;IACpD,mBAAmB,EAAE,gBAAgB,EAAE,CAAC;IAExC,qDAAqD;IACrD,oBAAoB,EAAE,gBAAgB,EAAE,CAAC;IAEzC;;;;;;;;;;OAUG;IACH,YAAY,CACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,EACpB,YAAY,EAAE,OAAO,EACrB,YAAY,EAAE,WAAW,EAAE,EAC3B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAEX;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,WAAW,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,WAAW,CAAA;CAAE,GACxC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAWtC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,SAAS,kBAAkB,EAC1E,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,GAChC,IAAI,CAKN;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GACX,eAAe,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,EAAE,CAEvD;AAMD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,GACb,kBAAkB,CAmGpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,EAAE,MAAM,GACb,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAsB1B"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Provider Loader Factory
3
+ *
4
+ * Generic factory for loading LLM providers from configuration.
5
+ * Reduces duplication by providing a unified approach to provider loading.
6
+ */
7
+ import { find_config_file, read_config_file, parse_generation_config, parse_capabilities, load_api_key_from_env, get_api_key_env_var_name, } from './config_parser.js';
8
+ // =============================================================================
9
+ // Provider Registry
10
+ // =============================================================================
11
+ /**
12
+ * Map of registered provider factories by name
13
+ */
14
+ const provider_factories = new Map();
15
+ /**
16
+ * Register a provider factory
17
+ *
18
+ * @param factory - Provider factory to register
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * register_provider_factory({
23
+ * name: 'gemini',
24
+ * config_section: 'llm_gemini',
25
+ * text_param_mappings: GEMINI_PARAM_MAPPINGS,
26
+ * image_param_mappings: GEMINI_PARAM_MAPPINGS,
27
+ * build_config: (section, api_key, text_config, image_config, capabilities, logger) => ({
28
+ * api_key,
29
+ * api_url: section.api_url,
30
+ * // ... other gemini-specific fields
31
+ * }),
32
+ * create_provider: (config) => new GeminiProvider(config),
33
+ * });
34
+ * ```
35
+ */
36
+ export function register_provider_factory(factory) {
37
+ provider_factories.set(factory.name.toLowerCase(), factory);
38
+ }
39
+ /**
40
+ * Get a registered provider factory by name
41
+ *
42
+ * @param name - Provider name (case-insensitive)
43
+ * @returns Provider factory or undefined
44
+ */
45
+ export function get_provider_factory(name) {
46
+ return provider_factories.get(name.toLowerCase());
47
+ }
48
+ /**
49
+ * Get all registered provider factory names
50
+ *
51
+ * @returns Array of provider names
52
+ */
53
+ export function get_registered_factory_names() {
54
+ return Array.from(provider_factories.keys());
55
+ }
56
+ // =============================================================================
57
+ // Provider Loading
58
+ // =============================================================================
59
+ /**
60
+ * Load a provider from config using its registered factory
61
+ *
62
+ * @param provider_name - Name of the provider to load
63
+ * @param logger - Logger instance
64
+ * @returns Provider instance or error result
65
+ */
66
+ export function load_provider_from_config(provider_name, logger) {
67
+ const file_name = 'provider_loader.ts';
68
+ const name_lower = provider_name.toLowerCase();
69
+ // Get the factory for this provider
70
+ const factory = provider_factories.get(name_lower);
71
+ if (!factory) {
72
+ return {
73
+ success: false,
74
+ error: `No factory registered for provider "${provider_name}". Available: ${get_registered_factory_names().join(', ')}`,
75
+ };
76
+ }
77
+ // Find and read config file
78
+ const config_path = find_config_file();
79
+ if (!config_path) {
80
+ logger.warn('Config file not found', {
81
+ file: file_name,
82
+ data: { provider: provider_name },
83
+ });
84
+ return {
85
+ success: false,
86
+ error: 'Config file config/hazo_llm_api_config.ini not found',
87
+ };
88
+ }
89
+ const config = read_config_file(config_path);
90
+ if (!config) {
91
+ return {
92
+ success: false,
93
+ error: `Failed to read config file: ${config_path}`,
94
+ };
95
+ }
96
+ // Get the provider's section
97
+ const section = config[factory.config_section] || {};
98
+ // Load API key from environment
99
+ const api_key = load_api_key_from_env(name_lower);
100
+ if (!api_key) {
101
+ const env_var = get_api_key_env_var_name(name_lower);
102
+ logger.error(`${env_var} not found in environment variables`, {
103
+ file: file_name,
104
+ data: { provider: provider_name, config_path },
105
+ });
106
+ return {
107
+ success: false,
108
+ error: `${env_var} not found in environment variables. Add it to your .env.local file.`,
109
+ };
110
+ }
111
+ try {
112
+ // Parse generation configs
113
+ const text_config = parse_generation_config(section, factory.text_param_mappings, 'text_');
114
+ const image_config = parse_generation_config(section, factory.image_param_mappings, 'image_');
115
+ // Parse capabilities
116
+ const capabilities = parse_capabilities(section.capabilities);
117
+ // Build provider config
118
+ const provider_config = factory.build_config(section, api_key, text_config, image_config, capabilities, logger);
119
+ // Create provider instance
120
+ const provider = factory.create_provider(provider_config);
121
+ logger.info(`Loaded ${provider_name} provider`, {
122
+ file: file_name,
123
+ data: {
124
+ capabilities: Array.from(provider.get_capabilities()),
125
+ },
126
+ });
127
+ return { success: true, provider };
128
+ }
129
+ catch (error) {
130
+ const error_message = error instanceof Error ? error.message : String(error);
131
+ logger.error(`Failed to load ${provider_name} provider`, {
132
+ file: file_name,
133
+ data: { error: error_message, config_path },
134
+ });
135
+ return {
136
+ success: false,
137
+ error: `Failed to create ${provider_name} provider: ${error_message}`,
138
+ };
139
+ }
140
+ }
141
+ /**
142
+ * Load all enabled providers from config
143
+ *
144
+ * @param enabled_llms - List of enabled LLM names
145
+ * @param logger - Logger instance
146
+ * @returns Map of successfully loaded providers
147
+ */
148
+ export function load_all_providers(enabled_llms, logger) {
149
+ const file_name = 'provider_loader.ts';
150
+ const providers = new Map();
151
+ for (const llm_name of enabled_llms) {
152
+ const result = load_provider_from_config(llm_name, logger);
153
+ if (result.success) {
154
+ providers.set(llm_name.toLowerCase(), result.provider);
155
+ }
156
+ else {
157
+ logger.warn(`${llm_name} provider is enabled but failed to load`, {
158
+ file: file_name,
159
+ data: {
160
+ llm_name,
161
+ error: result.error,
162
+ hint: `Check ${get_api_key_env_var_name(llm_name)} in environment variables and [llm_${llm_name.toLowerCase()}] section in config.`,
163
+ },
164
+ });
165
+ }
166
+ }
167
+ return providers;
168
+ }
169
+ //# sourceMappingURL=provider_loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider_loader.js","sourceRoot":"","sources":["../../../src/lib/config/provider_loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Database Module Exports
3
+ *
4
+ * Export all database-related functions from this module
5
+ */
6
+ export { initialize_database, get_database, close_database, insert_prompt, update_prompt, delete_prompt, get_default_sqlite_path, expand_path, resolve_sqlite_path, } from './init_database.js';
7
+ export { row_to_prompt_record, PROMPT_COLUMNS, PROMPT_COLUMN_NAMES, get_prompt_select_clause, } from './utils.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/database/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EAEb,uBAAuB,EACvB,WAAW,EACX,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Database Module Exports
3
+ *
4
+ * Export all database-related functions from this module
5
+ */
6
+ export { initialize_database, get_database, close_database, insert_prompt, update_prompt, delete_prompt,
7
+ // Path helpers
8
+ get_default_sqlite_path, expand_path, resolve_sqlite_path, } from './init_database.js';
9
+ export { row_to_prompt_record, PROMPT_COLUMNS, PROMPT_COLUMN_NAMES, get_prompt_select_clause, } from './utils.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/database/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa;AACb,eAAe;AACf,uBAAuB,EACvB,WAAW,EACX,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,118 @@
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 { Database as SqlJsDatabase } from 'sql.js';
9
+ import type { Logger, PromptRecord } from '../llm_api/types.js';
10
+ /**
11
+ * Get the default SQLite database path
12
+ * Returns an absolute path relative to the current working directory
13
+ *
14
+ * @returns Default database path: "{process.cwd()}/prompt_library.sqlite"
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import { get_default_sqlite_path } from 'hazo_llm_api/server';
19
+ *
20
+ * const path = get_default_sqlite_path();
21
+ * // Returns: "/path/to/your/app/prompt_library.sqlite"
22
+ * ```
23
+ */
24
+ export declare function get_default_sqlite_path(): string;
25
+ /**
26
+ * Expand tilde (~) in path to user's home directory
27
+ * Also supports environment variables in the format ${VAR_NAME}
28
+ *
29
+ * @param file_path - Path that may contain ~ or environment variables
30
+ * @returns Expanded path
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * import { expand_path } from 'hazo_llm_api/server';
35
+ *
36
+ * expand_path('~/data/prompts.db');
37
+ * // Returns: "/Users/username/data/prompts.db"
38
+ *
39
+ * expand_path('${HOME}/data/prompts.db');
40
+ * // Returns: "/Users/username/data/prompts.db"
41
+ * ```
42
+ */
43
+ export declare function expand_path(file_path: string): string;
44
+ /**
45
+ * Resolve a database path to an absolute path
46
+ * Handles tilde expansion, environment variables, and relative paths
47
+ *
48
+ * @param sqlite_path - Path to resolve (can be relative, absolute, or contain ~/$VAR)
49
+ * @returns Absolute path to the database file
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * import { resolve_sqlite_path } from 'hazo_llm_api/server';
54
+ *
55
+ * resolve_sqlite_path('prompt_library.sqlite');
56
+ * // Returns: "/path/to/cwd/prompt_library.sqlite"
57
+ *
58
+ * resolve_sqlite_path('~/data/prompts.db');
59
+ * // Returns: "/Users/username/data/prompts.db"
60
+ *
61
+ * resolve_sqlite_path('/absolute/path/prompts.db');
62
+ * // Returns: "/absolute/path/prompts.db"
63
+ * ```
64
+ */
65
+ export declare function resolve_sqlite_path(sqlite_path: string): string;
66
+ /**
67
+ * Initialize the SQLite database connection and create tables if needed
68
+ * @param sqlite_path - Path to the SQLite database file (relative to app root)
69
+ * @param logger - Logger instance for logging operations
70
+ * @returns Database instance
71
+ */
72
+ export declare function initialize_database(sqlite_path: string, logger: Logger): Promise<SqlJsDatabase>;
73
+ /**
74
+ * Initialize database synchronously (for use in already async contexts)
75
+ * Note: This should only be called after initialize_database has been called once
76
+ */
77
+ export declare function initialize_database_sync(sqlite_path: string, logger: Logger): SqlJsDatabase | null;
78
+ /**
79
+ * Get the current database instance
80
+ * @returns Database instance or null if not initialized
81
+ */
82
+ export declare function get_database(): SqlJsDatabase | null;
83
+ /**
84
+ * Save the database to file
85
+ * @param logger - Logger instance
86
+ */
87
+ export declare function save_database(logger: Logger): void;
88
+ /**
89
+ * Close the database connection
90
+ * @param logger - Logger instance
91
+ */
92
+ export declare function close_database(logger: Logger): void;
93
+ /**
94
+ * Insert a new prompt into the database
95
+ * @param db - Database instance
96
+ * @param prompt - Prompt data to insert
97
+ * @param logger - Logger instance
98
+ * @returns The inserted prompt record
99
+ */
100
+ export declare function insert_prompt(db: SqlJsDatabase, prompt: Omit<PromptRecord, 'uuid' | 'created_at' | 'changed_by'>, logger: Logger): PromptRecord;
101
+ /**
102
+ * Update an existing prompt in the database
103
+ * @param db - Database instance
104
+ * @param uuid - UUID of the prompt to update
105
+ * @param updates - Fields to update
106
+ * @param logger - Logger instance
107
+ * @returns The updated prompt record
108
+ */
109
+ export declare function update_prompt(db: SqlJsDatabase, uuid: string, updates: Partial<Omit<PromptRecord, 'uuid' | 'created_at' | 'changed_by'>>, logger: Logger): PromptRecord | null;
110
+ /**
111
+ * Delete a prompt from the database
112
+ * @param db - Database instance
113
+ * @param uuid - UUID of the prompt to delete
114
+ * @param logger - Logger instance
115
+ * @returns True if deleted successfully, false if not found
116
+ */
117
+ export declare function delete_prompt(db: SqlJsDatabase, uuid: string, logger: Logger): boolean;
118
+ //# sourceMappingURL=init_database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init_database.d.ts","sourceRoot":"","sources":["../../../src/lib/database/init_database.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAkB,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,QAAQ,CAAC;AAK9D,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAYhE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBrD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQ/D;AAcD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,CAAC,CAgFxB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,aAAa,GAAG,IAAI,CAatB;AA+GD;;;GAGG;AACH,wBAAgB,YAAY,IAAI,aAAa,GAAG,IAAI,CAEnD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAoClD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAyBnD;AAMD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,aAAa,EACjB,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC,EAChE,MAAM,EAAE,MAAM,GACb,YAAY,CAqEd;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC,CAAC,EAC1E,MAAM,EAAE,MAAM,GACb,YAAY,GAAG,IAAI,CA2GrB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAgDT"}