hazo_llm_api 1.0.1

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 +536 -0
  2. package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.d.ts +16 -0
  3. package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.d.ts.map +1 -0
  4. package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.js +258 -0
  5. package/dist/components/hazo_llm_prompt_config/hazo_llm_prompt_config.js.map +1 -0
  6. package/dist/components/hazo_llm_prompt_config/index.d.ts +8 -0
  7. package/dist/components/hazo_llm_prompt_config/index.d.ts.map +1 -0
  8. package/dist/components/hazo_llm_prompt_config/index.js +7 -0
  9. package/dist/components/hazo_llm_prompt_config/index.js.map +1 -0
  10. package/dist/components/hazo_llm_prompt_config/types.d.ts +74 -0
  11. package/dist/components/hazo_llm_prompt_config/types.d.ts.map +1 -0
  12. package/dist/components/hazo_llm_prompt_config/types.js +8 -0
  13. package/dist/components/hazo_llm_prompt_config/types.js.map +1 -0
  14. package/dist/components/index.d.ts +7 -0
  15. package/dist/components/index.d.ts.map +1 -0
  16. package/dist/components/index.js +7 -0
  17. package/dist/components/index.js.map +1 -0
  18. package/dist/components/layout/index.d.ts +7 -0
  19. package/dist/components/layout/index.d.ts.map +1 -0
  20. package/dist/components/layout/index.js +7 -0
  21. package/dist/components/layout/index.js.map +1 -0
  22. package/dist/components/layout/layout.d.ts +21 -0
  23. package/dist/components/layout/layout.d.ts.map +1 -0
  24. package/dist/components/layout/layout.js +18 -0
  25. package/dist/components/layout/layout.js.map +1 -0
  26. package/dist/index.d.ts +11 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +13 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/lib/config/config_parser.d.ts +131 -0
  31. package/dist/lib/config/config_parser.d.ts.map +1 -0
  32. package/dist/lib/config/config_parser.js +297 -0
  33. package/dist/lib/config/config_parser.js.map +1 -0
  34. package/dist/lib/config/index.d.ts +8 -0
  35. package/dist/lib/config/index.d.ts.map +1 -0
  36. package/dist/lib/config/index.js +22 -0
  37. package/dist/lib/config/index.js.map +1 -0
  38. package/dist/lib/config/provider_loader.d.ts +113 -0
  39. package/dist/lib/config/provider_loader.d.ts.map +1 -0
  40. package/dist/lib/config/provider_loader.js +169 -0
  41. package/dist/lib/config/provider_loader.js.map +1 -0
  42. package/dist/lib/database/index.d.ts +8 -0
  43. package/dist/lib/database/index.d.ts.map +1 -0
  44. package/dist/lib/database/index.js +8 -0
  45. package/dist/lib/database/index.js.map +1 -0
  46. package/dist/lib/database/init_database.d.ts +62 -0
  47. package/dist/lib/database/init_database.d.ts.map +1 -0
  48. package/dist/lib/database/init_database.js +436 -0
  49. package/dist/lib/database/init_database.js.map +1 -0
  50. package/dist/lib/database/utils.d.ts +50 -0
  51. package/dist/lib/database/utils.d.ts.map +1 -0
  52. package/dist/lib/database/utils.js +78 -0
  53. package/dist/lib/database/utils.js.map +1 -0
  54. package/dist/lib/index.d.ts +14 -0
  55. package/dist/lib/index.d.ts.map +1 -0
  56. package/dist/lib/index.js +17 -0
  57. package/dist/lib/index.js.map +1 -0
  58. package/dist/lib/llm_api/hazo_llm_image_image.d.ts +26 -0
  59. package/dist/lib/llm_api/hazo_llm_image_image.d.ts.map +1 -0
  60. package/dist/lib/llm_api/hazo_llm_image_image.js +92 -0
  61. package/dist/lib/llm_api/hazo_llm_image_image.js.map +1 -0
  62. package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts +26 -0
  63. package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts.map +1 -0
  64. package/dist/lib/llm_api/hazo_llm_image_image_text.js +220 -0
  65. package/dist/lib/llm_api/hazo_llm_image_image_text.js.map +1 -0
  66. package/dist/lib/llm_api/hazo_llm_image_text.d.ts +20 -0
  67. package/dist/lib/llm_api/hazo_llm_image_text.d.ts.map +1 -0
  68. package/dist/lib/llm_api/hazo_llm_image_text.js +76 -0
  69. package/dist/lib/llm_api/hazo_llm_image_text.js.map +1 -0
  70. package/dist/lib/llm_api/hazo_llm_text_image.d.ts +20 -0
  71. package/dist/lib/llm_api/hazo_llm_text_image.d.ts.map +1 -0
  72. package/dist/lib/llm_api/hazo_llm_text_image.js +67 -0
  73. package/dist/lib/llm_api/hazo_llm_text_image.js.map +1 -0
  74. package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts +26 -0
  75. package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts.map +1 -0
  76. package/dist/lib/llm_api/hazo_llm_text_image_text.js +152 -0
  77. package/dist/lib/llm_api/hazo_llm_text_image_text.js.map +1 -0
  78. package/dist/lib/llm_api/hazo_llm_text_text.d.ts +20 -0
  79. package/dist/lib/llm_api/hazo_llm_text_text.d.ts.map +1 -0
  80. package/dist/lib/llm_api/hazo_llm_text_text.js +89 -0
  81. package/dist/lib/llm_api/hazo_llm_text_text.js.map +1 -0
  82. package/dist/lib/llm_api/index.d.ts +99 -0
  83. package/dist/lib/llm_api/index.d.ts.map +1 -0
  84. package/dist/lib/llm_api/index.js +952 -0
  85. package/dist/lib/llm_api/index.js.map +1 -0
  86. package/dist/lib/llm_api/provider_helper.d.ts +107 -0
  87. package/dist/lib/llm_api/provider_helper.d.ts.map +1 -0
  88. package/dist/lib/llm_api/provider_helper.js +159 -0
  89. package/dist/lib/llm_api/provider_helper.js.map +1 -0
  90. package/dist/lib/llm_api/types.d.ts +352 -0
  91. package/dist/lib/llm_api/types.d.ts.map +1 -0
  92. package/dist/lib/llm_api/types.js +8 -0
  93. package/dist/lib/llm_api/types.js.map +1 -0
  94. package/dist/lib/prompts/get_prompt.d.ts +50 -0
  95. package/dist/lib/prompts/get_prompt.d.ts.map +1 -0
  96. package/dist/lib/prompts/get_prompt.js +232 -0
  97. package/dist/lib/prompts/get_prompt.js.map +1 -0
  98. package/dist/lib/prompts/index.d.ts +9 -0
  99. package/dist/lib/prompts/index.d.ts.map +1 -0
  100. package/dist/lib/prompts/index.js +9 -0
  101. package/dist/lib/prompts/index.js.map +1 -0
  102. package/dist/lib/prompts/prompt_cache.d.ts +151 -0
  103. package/dist/lib/prompts/prompt_cache.d.ts.map +1 -0
  104. package/dist/lib/prompts/prompt_cache.js +276 -0
  105. package/dist/lib/prompts/prompt_cache.js.map +1 -0
  106. package/dist/lib/prompts/substitute_variables.d.ts +38 -0
  107. package/dist/lib/prompts/substitute_variables.d.ts.map +1 -0
  108. package/dist/lib/prompts/substitute_variables.js +175 -0
  109. package/dist/lib/prompts/substitute_variables.js.map +1 -0
  110. package/dist/lib/providers/gemini/gemini_client.d.ts +25 -0
  111. package/dist/lib/providers/gemini/gemini_client.d.ts.map +1 -0
  112. package/dist/lib/providers/gemini/gemini_client.js +235 -0
  113. package/dist/lib/providers/gemini/gemini_client.js.map +1 -0
  114. package/dist/lib/providers/gemini/gemini_provider.d.ts +111 -0
  115. package/dist/lib/providers/gemini/gemini_provider.d.ts.map +1 -0
  116. package/dist/lib/providers/gemini/gemini_provider.js +431 -0
  117. package/dist/lib/providers/gemini/gemini_provider.js.map +1 -0
  118. package/dist/lib/providers/gemini/index.d.ts +8 -0
  119. package/dist/lib/providers/gemini/index.d.ts.map +1 -0
  120. package/dist/lib/providers/gemini/index.js +8 -0
  121. package/dist/lib/providers/gemini/index.js.map +1 -0
  122. package/dist/lib/providers/index.d.ts +8 -0
  123. package/dist/lib/providers/index.d.ts.map +1 -0
  124. package/dist/lib/providers/index.js +8 -0
  125. package/dist/lib/providers/index.js.map +1 -0
  126. package/dist/lib/providers/qwen/index.d.ts +8 -0
  127. package/dist/lib/providers/qwen/index.d.ts.map +1 -0
  128. package/dist/lib/providers/qwen/index.js +8 -0
  129. package/dist/lib/providers/qwen/index.js.map +1 -0
  130. package/dist/lib/providers/qwen/qwen_client.d.ts +154 -0
  131. package/dist/lib/providers/qwen/qwen_client.d.ts.map +1 -0
  132. package/dist/lib/providers/qwen/qwen_client.js +1002 -0
  133. package/dist/lib/providers/qwen/qwen_client.js.map +1 -0
  134. package/dist/lib/providers/qwen/qwen_provider.d.ts +139 -0
  135. package/dist/lib/providers/qwen/qwen_provider.d.ts.map +1 -0
  136. package/dist/lib/providers/qwen/qwen_provider.js +304 -0
  137. package/dist/lib/providers/qwen/qwen_provider.js.map +1 -0
  138. package/dist/lib/providers/registry.d.ts +66 -0
  139. package/dist/lib/providers/registry.d.ts.map +1 -0
  140. package/dist/lib/providers/registry.js +158 -0
  141. package/dist/lib/providers/registry.js.map +1 -0
  142. package/dist/lib/providers/types.d.ts +95 -0
  143. package/dist/lib/providers/types.d.ts.map +1 -0
  144. package/dist/lib/providers/types.js +19 -0
  145. package/dist/lib/providers/types.js.map +1 -0
  146. package/dist/server.d.ts +21 -0
  147. package/dist/server.d.ts.map +1 -0
  148. package/dist/server.js +32 -0
  149. package/dist/server.js.map +1 -0
  150. package/package.json +68 -0
  151. package/techdoc.md +857 -0
@@ -0,0 +1,152 @@
1
+ /**
2
+ * hazo_llm_text_image_text Function
3
+ *
4
+ * Text → Image → Text (Chained)
5
+ * 1. Generate an image from prompt_image using hazo_llm_text_image
6
+ * 2. Analyze the generated image with prompt_text using hazo_llm_image_text
7
+ * 3. Return both the generated image and the analysis text
8
+ */
9
+ import { hazo_llm_text_image } from './hazo_llm_text_image.js';
10
+ import { hazo_llm_image_text } from './hazo_llm_image_text.js';
11
+ // =============================================================================
12
+ // hazo_llm_text_image_text Function
13
+ // =============================================================================
14
+ /**
15
+ * Generate an image from text, then analyze it with a second prompt
16
+ *
17
+ * Flow:
18
+ * 1. Call hazo_llm_text_image with prompt_image to generate an image
19
+ * 2. Call hazo_llm_image_text with the generated image and prompt_text
20
+ * 3. Return the generated image and the text analysis from step 2
21
+ *
22
+ * @param params - Parameters with two prompts: one for image gen, one for analysis
23
+ * @param db - Database instance
24
+ * @param config - LLM API configuration
25
+ * @param llm - Optional LLM provider name (uses primary LLM if not specified)
26
+ * @returns LLM response with generated image and analysis text
27
+ */
28
+ export async function hazo_llm_text_image_text(params, db, config, llm) {
29
+ const file_name = 'hazo_llm_text_image_text.ts';
30
+ const logger = config.logger;
31
+ const api_name = 'text_image_text';
32
+ try {
33
+ // ==========================================================================
34
+ // Log API call start
35
+ // ==========================================================================
36
+ logger.debug(`########################################################################### ${api_name}`, {
37
+ file: file_name,
38
+ line: 48,
39
+ });
40
+ // Log API call details with generation configs
41
+ logger.debug('API call details', {
42
+ file: file_name,
43
+ line: 53,
44
+ data: {
45
+ chain_steps: ['text_image', 'image_text'],
46
+ prompt_image: params.prompt_image,
47
+ prompt_text: params.prompt_text,
48
+ prompt_image_variables: params.prompt_image_variables,
49
+ prompt_text_variables: params.prompt_text_variables,
50
+ llm_requested: llm || 'primary',
51
+ },
52
+ });
53
+ // ==========================================================================
54
+ // Step 1: Generate image from prompt_image
55
+ // ==========================================================================
56
+ logger.debug('Chain Step 1: Image generation', {
57
+ file: file_name,
58
+ line: 66,
59
+ });
60
+ const image_response = await hazo_llm_text_image({
61
+ prompt: params.prompt_image,
62
+ prompt_variables: params.prompt_image_variables,
63
+ }, db, config, llm);
64
+ // Check if image generation succeeded
65
+ if (!image_response.success) {
66
+ logger.error('Image generation failed in text_image_text chain', {
67
+ file: file_name,
68
+ line: 79,
69
+ data: { error: image_response.error },
70
+ });
71
+ return {
72
+ success: false,
73
+ error: `Image generation failed: ${image_response.error}`,
74
+ };
75
+ }
76
+ // Check if we got an image
77
+ if (!image_response.image_b64 || !image_response.image_mime_type) {
78
+ logger.error('No image returned from image generation', {
79
+ file: file_name,
80
+ line: 90,
81
+ });
82
+ return {
83
+ success: false,
84
+ error: 'Image generation did not return an image',
85
+ text: image_response.text, // Include any text that was returned
86
+ };
87
+ }
88
+ // ==========================================================================
89
+ // Step 2: Analyze the generated image with prompt_text
90
+ // ==========================================================================
91
+ logger.debug('Chain Step 2: Image analysis', {
92
+ file: file_name,
93
+ line: 103,
94
+ });
95
+ const text_response = await hazo_llm_image_text({
96
+ prompt: params.prompt_text,
97
+ image_b64: image_response.image_b64,
98
+ image_mime_type: image_response.image_mime_type,
99
+ prompt_variables: params.prompt_text_variables,
100
+ }, db, config, llm);
101
+ // Check if text analysis succeeded
102
+ if (!text_response.success) {
103
+ logger.error('Text analysis failed in text_image_text chain', {
104
+ file: file_name,
105
+ line: 120,
106
+ data: { error: text_response.error },
107
+ });
108
+ return {
109
+ success: false,
110
+ error: `Image analysis failed: ${text_response.error}`,
111
+ // Still return the generated image even if analysis failed
112
+ image_b64: image_response.image_b64,
113
+ image_mime_type: image_response.image_mime_type,
114
+ };
115
+ }
116
+ // ==========================================================================
117
+ // Log API response
118
+ // ==========================================================================
119
+ logger.debug('API response', {
120
+ file: file_name,
121
+ line: 136,
122
+ data: {
123
+ success: true,
124
+ text: text_response.text,
125
+ image_b64: '[IMAGE_DATA_PLACEHOLDER]',
126
+ image_mime_type: image_response.image_mime_type,
127
+ },
128
+ });
129
+ // Log API call complete
130
+ logger.debug(`<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ${api_name} >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`, {
131
+ file: file_name,
132
+ line: 147,
133
+ data: { success: true, has_image: true },
134
+ });
135
+ return {
136
+ success: true,
137
+ text: text_response.text,
138
+ image_b64: image_response.image_b64,
139
+ image_mime_type: image_response.image_mime_type,
140
+ };
141
+ }
142
+ catch (error) {
143
+ const error_message = error instanceof Error ? error.message : String(error);
144
+ logger.error('Error in hazo_llm_text_image_text', {
145
+ file: file_name,
146
+ line: 138,
147
+ data: { error: error_message },
148
+ });
149
+ return { success: false, error: error_message };
150
+ }
151
+ }
152
+ //# sourceMappingURL=hazo_llm_text_image_text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hazo_llm_text_image_text.js","sourceRoot":"","sources":["../../../src/lib/llm_api/hazo_llm_text_image_text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * hazo_llm_text_text Function
3
+ *
4
+ * Text input → Text output
5
+ * Standard text generation using LLM.
6
+ * Supports static prompts, dynamic prompts from database, and variable substitution.
7
+ */
8
+ import type { Database as SqlJsDatabase } from 'sql.js';
9
+ import type { TextTextParams, LLMResponse, LLMApiConfig } from './types.js';
10
+ /**
11
+ * Call the LLM with text input and get text output
12
+ *
13
+ * @param params - Text input parameters
14
+ * @param db - Database instance for dynamic prompts
15
+ * @param config - LLM API configuration
16
+ * @param llm - Optional LLM provider name (uses primary LLM if not specified)
17
+ * @returns LLM response with generated text
18
+ */
19
+ export declare function hazo_llm_text_text(params: TextTextParams, db: SqlJsDatabase | null, config: LLMApiConfig, llm?: string): Promise<LLMResponse>;
20
+ //# sourceMappingURL=hazo_llm_text_text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hazo_llm_text_text.d.ts","sourceRoot":"","sources":["../../../src/lib/llm_api/hazo_llm_text_text.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAC;AAwBpB;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,EACtB,EAAE,EAAE,aAAa,GAAG,IAAI,EACxB,MAAM,EAAE,YAAY,EACpB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,WAAW,CAAC,CA0EtB"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * hazo_llm_text_text Function
3
+ *
4
+ * Text input → Text output
5
+ * Standard text generation using LLM.
6
+ * Supports static prompts, dynamic prompts from database, and variable substitution.
7
+ */
8
+ import { get_prompt_text } from '../prompts/get_prompt.js';
9
+ import { substitute_variables } from '../prompts/substitute_variables.js';
10
+ import { SERVICE_TYPES } from '../providers/types.js';
11
+ import { get_validated_provider, log_api_start, log_api_complete, log_api_details, log_api_response, handle_caught_error, } from './provider_helper.js';
12
+ // =============================================================================
13
+ // Constants
14
+ // =============================================================================
15
+ const FILE_NAME = 'hazo_llm_text_text.ts';
16
+ const API_NAME = 'text_text';
17
+ // =============================================================================
18
+ // hazo_llm_text_text Function
19
+ // =============================================================================
20
+ /**
21
+ * Call the LLM with text input and get text output
22
+ *
23
+ * @param params - Text input parameters
24
+ * @param db - Database instance for dynamic prompts
25
+ * @param config - LLM API configuration
26
+ * @param llm - Optional LLM provider name (uses primary LLM if not specified)
27
+ * @returns LLM response with generated text
28
+ */
29
+ export async function hazo_llm_text_text(params, db, config, llm) {
30
+ const logger = config.logger;
31
+ try {
32
+ log_api_start(API_NAME, FILE_NAME, logger);
33
+ // ==========================================================================
34
+ // Step 1: Get the prompt text
35
+ // ==========================================================================
36
+ let prompt_text;
37
+ if (params.prompt_area && params.prompt_key) {
38
+ if (!db) {
39
+ const error_msg = 'Database not initialized for dynamic prompt retrieval';
40
+ logger.error(error_msg, { file: FILE_NAME });
41
+ return { success: false, error: error_msg };
42
+ }
43
+ const dynamic_prompt = get_prompt_text(db, params.prompt_area, params.prompt_key, logger);
44
+ if (!dynamic_prompt) {
45
+ const error_msg = `Prompt not found for area="${params.prompt_area}" key="${params.prompt_key}"`;
46
+ logger.error(error_msg, { file: FILE_NAME });
47
+ return { success: false, error: error_msg };
48
+ }
49
+ prompt_text = dynamic_prompt;
50
+ }
51
+ else {
52
+ prompt_text = params.prompt;
53
+ }
54
+ // ==========================================================================
55
+ // Step 2: Substitute variables
56
+ // ==========================================================================
57
+ const final_prompt = substitute_variables(prompt_text, params.prompt_variables, logger);
58
+ // ==========================================================================
59
+ // Step 3: Get and validate provider
60
+ // ==========================================================================
61
+ const provider_result = get_validated_provider({
62
+ llm,
63
+ service_type: SERVICE_TYPES.TEXT_TEXT,
64
+ logger,
65
+ });
66
+ if (!provider_result.success) {
67
+ return provider_result.error_response;
68
+ }
69
+ const provider = provider_result.provider;
70
+ log_api_details(provider, SERVICE_TYPES.TEXT_TEXT, FILE_NAME, logger, {
71
+ prompt_text: final_prompt,
72
+ llm_requested: llm || 'primary',
73
+ });
74
+ // ==========================================================================
75
+ // Step 4: Call the provider
76
+ // ==========================================================================
77
+ const response = await provider.text_text({
78
+ ...params,
79
+ prompt: final_prompt,
80
+ }, logger);
81
+ log_api_response(response, FILE_NAME, logger);
82
+ log_api_complete(API_NAME, FILE_NAME, response.success, logger);
83
+ return response;
84
+ }
85
+ catch (error) {
86
+ return handle_caught_error(error, 'hazo_llm_text_text', FILE_NAME, logger);
87
+ }
88
+ }
89
+ //# sourceMappingURL=hazo_llm_text_text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hazo_llm_text_text.js","sourceRoot":"","sources":["../../../src/lib/llm_api/hazo_llm_text_text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * LLM API Module
3
+ *
4
+ * Main entry point for the LLM API functionality.
5
+ * Provides initialization and specialized LLM functions:
6
+ * - hazo_llm_text_text: Text input → Text output
7
+ * - hazo_llm_image_text: Image input → Text output
8
+ * - hazo_llm_text_image: Text input → Image output
9
+ * - hazo_llm_image_image: Image input → Image output
10
+ * - hazo_llm_text_image_text: Text → Image → Text (chained)
11
+ * - hazo_llm_image_image_text: Images → Image → Text (chained)
12
+ *
13
+ * Database is auto-initialized on module import using config defaults.
14
+ */
15
+ import type { LLMApiConfig, LLMApiClient, LLMResponse, TextTextParams, ImageTextParams, TextImageParams, ImageImageParams, TextImageTextParams, ImageImageTextParams } from './types.js';
16
+ /**
17
+ * Initialize the LLM API with the given configuration
18
+ * Creates/connects to the database and prepares the client for use
19
+ *
20
+ * @param config - Configuration options for the LLM API
21
+ * @returns Initialized LLM API client
22
+ */
23
+ export declare function initialize_llm_api(config: LLMApiConfig): Promise<LLMApiClient>;
24
+ /**
25
+ * Check if database has been initialized (either auto or manual)
26
+ * @returns true if database is ready for use
27
+ */
28
+ export declare function is_database_ready(): boolean;
29
+ /**
30
+ * Wait for auto-initialization to complete
31
+ * Useful if you need to ensure database is ready before operations
32
+ */
33
+ export declare function ensure_database_ready(): Promise<boolean>;
34
+ /**
35
+ * Text input → Text output
36
+ * Standard text generation using LLM
37
+ *
38
+ * @param params - Text input parameters
39
+ * @param llm - Optional LLM provider name (uses primary LLM if not specified)
40
+ * @returns LLM response with generated text
41
+ */
42
+ export declare function hazo_llm_text_text(params: TextTextParams, llm?: string): Promise<LLMResponse>;
43
+ /**
44
+ * Image input → Text output
45
+ * Analyze an image and get text description
46
+ *
47
+ * @param params - Image input parameters
48
+ * @param llm - Optional LLM provider name (uses primary LLM if not specified)
49
+ * @returns LLM response with text description
50
+ */
51
+ export declare function hazo_llm_image_text(params: ImageTextParams, llm?: string): Promise<LLMResponse>;
52
+ /**
53
+ * Text input → Image output
54
+ * Generate an image from text description
55
+ *
56
+ * @param params - Text input parameters for image generation
57
+ * @param llm - Optional LLM provider name (uses primary LLM if not specified)
58
+ * @returns LLM response with generated image
59
+ */
60
+ export declare function hazo_llm_text_image(params: TextImageParams, llm?: string): Promise<LLMResponse>;
61
+ /**
62
+ * Image input → Image output
63
+ * Transform/edit an image based on instructions
64
+ *
65
+ * @param params - Image input parameters with transformation instructions
66
+ * @param llm - Optional LLM provider name (uses primary LLM if not specified)
67
+ * @returns LLM response with transformed image
68
+ */
69
+ export declare function hazo_llm_image_image(params: ImageImageParams, llm?: string): Promise<LLMResponse>;
70
+ /**
71
+ * Text → Image → Text (Chained)
72
+ * Generate an image from prompt_image, then analyze it with prompt_text
73
+ *
74
+ * @param params - Parameters with two prompts: one for image gen, one for analysis
75
+ * @param llm - Optional LLM provider name (uses primary LLM if not specified)
76
+ * @returns LLM response with generated image and analysis text
77
+ */
78
+ export declare function hazo_llm_text_image_text(params: TextImageTextParams, llm?: string): Promise<LLMResponse>;
79
+ /**
80
+ * Images → Image → Text (Chained)
81
+ * Chain multiple image transformations, then describe the final result
82
+ *
83
+ * @param params - Parameters with images, prompts, and description prompt
84
+ * @param llm - Optional LLM provider name (uses primary LLM if not specified)
85
+ * @returns LLM response with final image and description text
86
+ */
87
+ export declare function hazo_llm_image_image_text(params: ImageImageTextParams, llm?: string): Promise<LLMResponse>;
88
+ /**
89
+ * Check if the LLM API has been initialized
90
+ * @returns true if initialized
91
+ */
92
+ export declare function is_initialized(): boolean;
93
+ /**
94
+ * Get the current configuration (without sensitive data)
95
+ * @returns Current configuration or null if not initialized
96
+ */
97
+ export declare function get_current_config(): Omit<LLMApiConfig, 'api_key' | 'logger'> | null;
98
+ export type { LLMApiConfig, LLMApiClient, LLMResponse, TextTextParams, ImageTextParams, TextImageParams, ImageImageParams, TextImageTextParams, ImageImageTextParams, ChainImage, Logger, PromptVariable, PromptVariables, Base64Data, PromptTextMode, PromptRecord, CallLLMParams, GeminiGenerationConfig, GeminiApiGenerationConfig, } from './types.js';
99
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/llm_api/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EAGrB,MAAM,YAAY,CAAC;AAqwBpB;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CA8FpF;AAgBD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ9D;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAQnG;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAQrG;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAQrG;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAQvG;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAQ9G;AAED;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAQhH;AAMD;;;GAGG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAC,GAAG,IAAI,CAUpF;AAMD,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,UAAU,EACV,MAAM,EACN,cAAc,EACd,eAAe,EACf,UAAU,EACV,cAAc,EACd,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,YAAY,CAAC"}