hazo_llm_api 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,158 @@
1
+ /**
2
+ * LLM Provider Registry
3
+ *
4
+ * Central registry for managing and accessing LLM providers.
5
+ * Handles provider registration, capability validation, and enabled LLM tracking.
6
+ */
7
+ // =============================================================================
8
+ // Provider Registry
9
+ // =============================================================================
10
+ /**
11
+ * Map of registered providers by name
12
+ */
13
+ const provider_map = new Map();
14
+ /**
15
+ * Set of enabled LLM provider names
16
+ */
17
+ let enabled_llms = new Set();
18
+ /**
19
+ * Primary/default LLM provider name
20
+ */
21
+ let primary_llm = null;
22
+ // =============================================================================
23
+ // Registry Management
24
+ // =============================================================================
25
+ /**
26
+ * Register a provider in the registry
27
+ * @param provider - The provider instance to register
28
+ */
29
+ export function register_provider(provider) {
30
+ const name = provider.get_name().toLowerCase();
31
+ provider_map.set(name, provider);
32
+ }
33
+ /**
34
+ * Set which LLMs are enabled
35
+ * @param enabled_names - Array of LLM names that are enabled
36
+ */
37
+ export function set_enabled_llms(enabled_names) {
38
+ enabled_llms = new Set(enabled_names.map(name => name.toLowerCase()));
39
+ }
40
+ /**
41
+ * Set the primary/default LLM
42
+ * @param name - Name of the primary LLM
43
+ */
44
+ export function set_primary_llm(name) {
45
+ primary_llm = name.toLowerCase();
46
+ }
47
+ /**
48
+ * Get the primary/default LLM name
49
+ * @returns Primary LLM name or null if not set
50
+ */
51
+ export function get_primary_llm() {
52
+ return primary_llm;
53
+ }
54
+ /**
55
+ * Check if an LLM is enabled
56
+ * @param name - LLM name to check
57
+ * @returns True if the LLM is enabled
58
+ */
59
+ export function is_llm_enabled(name) {
60
+ return enabled_llms.has(name.toLowerCase());
61
+ }
62
+ /**
63
+ * Get a provider by name
64
+ * @param name - Provider name (case-insensitive). Use LLM_PROVIDERS constants for type safety.
65
+ * @param logger - Logger instance for error logging
66
+ * @returns Provider instance or null if not found
67
+ */
68
+ export function get_provider(name, logger) {
69
+ // Use primary LLM if name not specified
70
+ const provider_name = (name || primary_llm || '').toLowerCase();
71
+ if (!provider_name) {
72
+ logger.error('No LLM provider specified and no primary LLM configured', {
73
+ file: 'registry.ts',
74
+ line: 88,
75
+ data: { requested_name: name, primary_llm },
76
+ });
77
+ return null;
78
+ }
79
+ // Check if LLM is enabled
80
+ if (!is_llm_enabled(provider_name)) {
81
+ logger.error('Requested LLM is not enabled', {
82
+ file: 'registry.ts',
83
+ line: 96,
84
+ data: {
85
+ requested_llm: provider_name,
86
+ enabled_llms: Array.from(enabled_llms),
87
+ },
88
+ });
89
+ return null;
90
+ }
91
+ // Get provider
92
+ const provider = provider_map.get(provider_name);
93
+ if (!provider) {
94
+ // Provider is enabled but not registered - likely missing API key or config issue
95
+ const env_var_name = `${provider_name.toUpperCase()}_API_KEY`;
96
+ logger.error('LLM provider is enabled but not registered', {
97
+ file: 'registry.ts',
98
+ line: 108,
99
+ data: {
100
+ requested_llm: provider_name,
101
+ available_providers: Array.from(provider_map.keys()),
102
+ enabled_llms: Array.from(enabled_llms),
103
+ hint: `Provider "${provider_name}" is enabled in config but not loaded. Check ${env_var_name} in environment variables and provider configuration.`,
104
+ },
105
+ });
106
+ return null;
107
+ }
108
+ return provider;
109
+ }
110
+ /**
111
+ * Check if a provider supports a specific service type
112
+ * @param provider - Provider instance
113
+ * @param service_type - Service type to check
114
+ * @returns True if the provider supports the service
115
+ */
116
+ export function has_capability(provider, service_type) {
117
+ const capabilities = provider.get_capabilities();
118
+ return capabilities.has(service_type);
119
+ }
120
+ /**
121
+ * Validate that a provider supports a service before calling it
122
+ * @param provider - Provider instance
123
+ * @param service_type - Service type to validate
124
+ * @param logger - Logger instance
125
+ * @returns True if capability is supported, false otherwise
126
+ */
127
+ export function validate_capability(provider, service_type, logger) {
128
+ if (!has_capability(provider, service_type)) {
129
+ const provider_name = provider.get_name();
130
+ logger.error('Provider does not support requested service', {
131
+ file: 'registry.ts',
132
+ line: 142,
133
+ data: {
134
+ provider: provider_name,
135
+ service_type,
136
+ supported_capabilities: Array.from(provider.get_capabilities()),
137
+ },
138
+ });
139
+ return false;
140
+ }
141
+ return true;
142
+ }
143
+ /**
144
+ * Get all registered provider names
145
+ * @returns Array of provider names
146
+ */
147
+ export function get_registered_providers() {
148
+ return Array.from(provider_map.keys());
149
+ }
150
+ /**
151
+ * Clear all registered providers (useful for testing)
152
+ */
153
+ export function clear_registry() {
154
+ provider_map.clear();
155
+ enabled_llms.clear();
156
+ primary_llm = null;
157
+ }
158
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/lib/providers/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * LLM Provider Types
3
+ *
4
+ * Defines the interface that all LLM providers must implement.
5
+ * This ensures consistent behavior across different LLM implementations.
6
+ */
7
+ import type { LLMResponse, LLMStreamResponse, TextTextParams, ImageTextParams, TextImageParams, ImageImageParams, Logger } from '../llm_api/types.js';
8
+ /**
9
+ * Provider name constants for type-safe LLM provider selection
10
+ * Use these constants instead of string literals for autocomplete and type safety
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { LLM_PROVIDERS } from 'hazo_llm_api/server';
15
+ *
16
+ * const response = await hazo_llm_text_text(params, LLM_PROVIDERS.GEMINI);
17
+ * ```
18
+ */
19
+ export declare const LLM_PROVIDERS: {
20
+ readonly GEMINI: "gemini";
21
+ readonly QWEN: "qwen";
22
+ };
23
+ /**
24
+ * Type for provider name - union of all valid provider names
25
+ * Accepts both constants and string literals for backward compatibility
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * // Using constant (recommended)
30
+ * const provider: ProviderName = LLM_PROVIDERS.GEMINI;
31
+ *
32
+ * // Using string literal (still works)
33
+ * const provider: ProviderName = 'gemini';
34
+ *
35
+ * // Custom provider (also valid)
36
+ * const provider: ProviderName = 'my-custom-provider';
37
+ * ```
38
+ */
39
+ export type ProviderName = typeof LLM_PROVIDERS[keyof typeof LLM_PROVIDERS] | (string & {});
40
+ /**
41
+ * Service type identifiers for LLM capabilities
42
+ */
43
+ export declare const SERVICE_TYPES: {
44
+ readonly TEXT_TEXT: "text_text";
45
+ readonly IMAGE_TEXT: "image_text";
46
+ readonly TEXT_IMAGE: "text_image";
47
+ readonly IMAGE_IMAGE: "image_image";
48
+ };
49
+ /**
50
+ * Service type string literal union
51
+ */
52
+ export type ServiceType = typeof SERVICE_TYPES[keyof typeof SERVICE_TYPES];
53
+ /**
54
+ * Set of capabilities that a provider supports
55
+ */
56
+ export type LLMCapabilities = Set<ServiceType>;
57
+ /**
58
+ * Interface that all LLM providers must implement
59
+ * Providers handle the specific API calls and transformations for their LLM service
60
+ */
61
+ export interface LLMProvider {
62
+ /**
63
+ * Get the name/identifier of this provider (e.g., "gemini", "openai")
64
+ */
65
+ get_name(): string;
66
+ /**
67
+ * Get the capabilities this provider supports
68
+ * @returns Set of supported service types
69
+ */
70
+ get_capabilities(): LLMCapabilities;
71
+ /**
72
+ * Get the model name configured for a specific service type
73
+ * @param service_type - The service type to get the model for
74
+ * @returns Model name/identifier or undefined if not configured for this service
75
+ */
76
+ get_model_for_service(service_type: ServiceType): string | undefined;
77
+ /**
78
+ * Text input → Text output
79
+ * Generate text from a text prompt
80
+ *
81
+ * @param params - Text input parameters
82
+ * @param logger - Logger instance
83
+ * @returns LLM response with generated text
84
+ */
85
+ text_text(params: TextTextParams, logger: Logger): Promise<LLMResponse>;
86
+ /**
87
+ * Image input → Text output
88
+ * Analyze an image and generate text description
89
+ *
90
+ * @param params - Image input parameters
91
+ * @param logger - Logger instance
92
+ * @returns LLM response with generated text
93
+ */
94
+ image_text(params: ImageTextParams, logger: Logger): Promise<LLMResponse>;
95
+ /**
96
+ * Text input → Image output
97
+ * Generate an image from a text prompt
98
+ *
99
+ * @param params - Text input parameters for image generation
100
+ * @param logger - Logger instance
101
+ * @returns LLM response with generated image
102
+ */
103
+ text_image(params: TextImageParams, logger: Logger): Promise<LLMResponse>;
104
+ /**
105
+ * Image input → Image output
106
+ * Transform/edit an image based on instructions
107
+ *
108
+ * @param params - Image input parameters with transformation instructions
109
+ * @param logger - Logger instance
110
+ * @returns LLM response with transformed image
111
+ */
112
+ image_image(params: ImageImageParams, logger: Logger): Promise<LLMResponse>;
113
+ /**
114
+ * Text input → Text output (streaming)
115
+ * Generate text from a text prompt with streaming response
116
+ *
117
+ * @param params - Text input parameters
118
+ * @param logger - Logger instance
119
+ * @returns Async generator yielding text chunks
120
+ */
121
+ text_text_stream?(params: TextTextParams, logger: Logger): Promise<LLMStreamResponse>;
122
+ /**
123
+ * Image input → Text output (streaming)
124
+ * Analyze an image and generate text description with streaming response
125
+ *
126
+ * @param params - Image input parameters
127
+ * @param logger - Logger instance
128
+ * @returns Async generator yielding text chunks
129
+ */
130
+ image_text_stream?(params: ImageTextParams, logger: Logger): Promise<LLMStreamResponse>;
131
+ }
132
+ /**
133
+ * Base configuration for initializing an LLM provider
134
+ */
135
+ export interface LLMProviderConfig {
136
+ /** Provider name/identifier (e.g., "gemini", "openai") */
137
+ name: string;
138
+ /** API key - should be read from .env.local (e.g., GEMINI_API_KEY) */
139
+ api_key?: string;
140
+ /** Logger instance */
141
+ logger: Logger;
142
+ /** Additional provider-specific configuration */
143
+ [key: string]: unknown;
144
+ }
145
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,MAAM,EACP,MAAM,qBAAqB,CAAC;AAM7B;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AAEX;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,aAAa,CAAC,MAAM,OAAO,aAAa,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAM5F;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,aAAa,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;AAM/C;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC;IAEnB;;;OAGG;IACH,gBAAgB,IAAI,eAAe,CAAC;IAEpC;;;;OAIG;IACH,qBAAqB,CAAC,YAAY,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;IAErE;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAExE;;;;;;;OAOG;IACH,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE1E;;;;;;;OAOG;IACH,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE1E;;;;;;;OAOG;IACH,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAM5E;;;;;;;OAOG;IACH,gBAAgB,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEtF;;;;;;;OAOG;IACH,iBAAiB,CAAC,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACzF;AAMD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IAEb,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IAEf,iDAAiD;IACjD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * LLM Provider Types
3
+ *
4
+ * Defines the interface that all LLM providers must implement.
5
+ * This ensures consistent behavior across different LLM implementations.
6
+ */
7
+ // =============================================================================
8
+ // Provider Name Constants
9
+ // =============================================================================
10
+ /**
11
+ * Provider name constants for type-safe LLM provider selection
12
+ * Use these constants instead of string literals for autocomplete and type safety
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * import { LLM_PROVIDERS } from 'hazo_llm_api/server';
17
+ *
18
+ * const response = await hazo_llm_text_text(params, LLM_PROVIDERS.GEMINI);
19
+ * ```
20
+ */
21
+ export const LLM_PROVIDERS = {
22
+ GEMINI: 'gemini',
23
+ QWEN: 'qwen',
24
+ };
25
+ // =============================================================================
26
+ // Service Type Constants
27
+ // =============================================================================
28
+ /**
29
+ * Service type identifiers for LLM capabilities
30
+ */
31
+ export const SERVICE_TYPES = {
32
+ TEXT_TEXT: 'text_text',
33
+ IMAGE_TEXT: 'image_text',
34
+ TEXT_IMAGE: 'text_image',
35
+ IMAGE_IMAGE: 'image_image',
36
+ };
37
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;CACJ,CAAC;AAoBX,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;CAClB,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * hazo_llm_api Server-Side Exports
3
+ *
4
+ * This file exports server-side only functions for LLM API operations.
5
+ * These should ONLY be imported in server components, API routes, or server actions.
6
+ *
7
+ * Usage: import { initialize_llm_api, hazo_llm_text_text } from 'hazo_llm_api/server'
8
+ *
9
+ * Available functions:
10
+ * - hazo_llm_text_text: Text input → Text output
11
+ * - hazo_llm_image_text: Image input → Text output
12
+ * - hazo_llm_text_image: Text input → Image output
13
+ * - hazo_llm_image_image: Image input → Image output
14
+ * - hazo_llm_text_image_text: Text → Image → Text (chained)
15
+ * - hazo_llm_prompt_chain: Chain multiple prompts with dynamic value resolution
16
+ */
17
+ export { initialize_llm_api, hazo_llm_text_text, hazo_llm_image_text, hazo_llm_text_image, hazo_llm_image_image, hazo_llm_text_image_text, hazo_llm_image_image_text, hazo_llm_prompt_chain, hazo_llm_text_text_stream, hazo_llm_image_text_stream, is_initialized, get_current_config, default_logger, get_logger, set_logger, get_hooks, set_hooks, } from './lib/llm_api/index.js';
18
+ export { initialize_database, get_database, close_database, insert_prompt, update_prompt, delete_prompt, get_default_sqlite_path, expand_path, resolve_sqlite_path, } from './lib/database/index.js';
19
+ export { get_prompt_by_area_and_key, get_prompt_by_area_key_and_locals, get_prompt_text, get_prompts_by_area, get_prompt_by_uuid, get_all_prompts, substitute_variables, parse_prompt_variables, validate_variables, type LocalFilterOptions, } from './lib/prompts/index.js';
20
+ export { call_gemini_api, get_gemini_api_url, } from './lib/providers/index.js';
21
+ export { LLM_PROVIDERS, SERVICE_TYPES } from './lib/providers/types.js';
22
+ export type { ProviderName, ServiceType } from './lib/providers/types.js';
23
+ export { LLM_ERROR_CODES } from './lib/llm_api/types.js';
24
+ export { build_error_response } from './lib/llm_api/provider_helper.js';
25
+ export type { LLMErrorCode, LLMError } from './lib/llm_api/types.js';
26
+ export type { LLMApiConfig, LLMApiClient, LLMResponse, TextTextParams, ImageTextParams, TextImageParams, ImageImageParams, TextImageTextParams, ImageImageTextParams, ChainImage, Logger, PromptVariable, PromptVariables, Base64Data, PromptTextMode, PromptRecord, CallLLMParams, LLMHooks, LLMRequestContext, LLMResponseContext, LLMErrorContext, BeforeRequestHook, AfterResponseHook, OnErrorHook, LLMStreamChunk, LLMStreamResponse, ChainMatchType, ChainFieldDefinition, ChainVariableDefinition, ChainCallDefinition, ChainCallResult, PromptChainParams, PromptChainResponse, } from './lib/llm_api/types.js';
27
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EAErB,yBAAyB,EACzB,0BAA0B,EAC1B,cAAc,EACd,kBAAkB,EAElB,cAAc,EACd,UAAU,EACV,UAAU,EAEV,SAAS,EACT,SAAS,GACV,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EAEb,uBAAuB,EACvB,WAAW,EACX,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EACL,0BAA0B,EAC1B,iCAAiC,EACjC,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,kBAAkB,GACxB,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EACL,eAAe,EACf,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACxE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAK1E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAKrE,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,EAEb,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EAEX,cAAc,EACd,iBAAiB,EAEjB,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC"}
package/dist/server.js ADDED
@@ -0,0 +1,50 @@
1
+ /**
2
+ * hazo_llm_api Server-Side Exports
3
+ *
4
+ * This file exports server-side only functions for LLM API operations.
5
+ * These should ONLY be imported in server components, API routes, or server actions.
6
+ *
7
+ * Usage: import { initialize_llm_api, hazo_llm_text_text } from 'hazo_llm_api/server'
8
+ *
9
+ * Available functions:
10
+ * - hazo_llm_text_text: Text input → Text output
11
+ * - hazo_llm_image_text: Image input → Text output
12
+ * - hazo_llm_text_image: Text input → Image output
13
+ * - hazo_llm_image_image: Image input → Image output
14
+ * - hazo_llm_text_image_text: Text → Image → Text (chained)
15
+ * - hazo_llm_prompt_chain: Chain multiple prompts with dynamic value resolution
16
+ */
17
+ // =============================================================================
18
+ // LLM API Exports (Server-side ONLY)
19
+ // =============================================================================
20
+ export { initialize_llm_api, hazo_llm_text_text, hazo_llm_image_text, hazo_llm_text_image, hazo_llm_image_image, hazo_llm_text_image_text, hazo_llm_image_image_text, hazo_llm_prompt_chain,
21
+ // Streaming functions
22
+ hazo_llm_text_text_stream, hazo_llm_image_text_stream, is_initialized, get_current_config,
23
+ // Logger utilities
24
+ default_logger, get_logger, set_logger,
25
+ // Hooks utilities
26
+ get_hooks, set_hooks, } from './lib/llm_api/index.js';
27
+ // =============================================================================
28
+ // Database Exports (Server-side ONLY)
29
+ // =============================================================================
30
+ export { initialize_database, get_database, close_database, insert_prompt, update_prompt, delete_prompt,
31
+ // Path helpers
32
+ get_default_sqlite_path, expand_path, resolve_sqlite_path, } from './lib/database/index.js';
33
+ // =============================================================================
34
+ // Prompt Utility Exports (Server-side ONLY)
35
+ // =============================================================================
36
+ export { get_prompt_by_area_and_key, get_prompt_by_area_key_and_locals, get_prompt_text, get_prompts_by_area, get_prompt_by_uuid, get_all_prompts, substitute_variables, parse_prompt_variables, validate_variables, } from './lib/prompts/index.js';
37
+ // =============================================================================
38
+ // Provider Exports (Server-side ONLY)
39
+ // =============================================================================
40
+ export { call_gemini_api, get_gemini_api_url, } from './lib/providers/index.js';
41
+ // =============================================================================
42
+ // Provider Constants (Type-safe provider names)
43
+ // =============================================================================
44
+ export { LLM_PROVIDERS, SERVICE_TYPES } from './lib/providers/types.js';
45
+ // =============================================================================
46
+ // Error Handling Exports
47
+ // =============================================================================
48
+ export { LLM_ERROR_CODES } from './lib/llm_api/types.js';
49
+ export { build_error_response } from './lib/llm_api/provider_helper.js';
50
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,gFAAgF;AAChF,qCAAqC;AACrC,gFAAgF;AAChF,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB;AACrB,sBAAsB;AACtB,yBAAyB,EACzB,0BAA0B,EAC1B,cAAc,EACd,kBAAkB;AAClB,mBAAmB;AACnB,cAAc,EACd,UAAU,EACV,UAAU;AACV,kBAAkB;AAClB,SAAS,EACT,SAAS,GACV,MAAM,wBAAwB,CAAC;AAEhC,gFAAgF;AAChF,sCAAsC;AACtC,gFAAgF;AAChF,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa;AACb,eAAe;AACf,uBAAuB,EACvB,WAAW,EACX,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAEjC,gFAAgF;AAChF,4CAA4C;AAC5C,gFAAgF;AAChF,OAAO,EACL,0BAA0B,EAC1B,iCAAiC,EACjC,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GAEnB,MAAM,wBAAwB,CAAC;AAEhC,gFAAgF;AAChF,sCAAsC;AACtC,gFAAgF;AAChF,OAAO,EACL,eAAe,EACf,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAElC,gFAAgF;AAChF,gDAAgD;AAChD,gFAAgF;AAChF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGxE,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hazo_llm_api",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "Wrapper to call different LLMs and includes prompt management",
5
5
  "keywords": [
6
6
  "LLM",
@@ -53,10 +53,21 @@
53
53
  "ini": "^6.0.0",
54
54
  "sql.js": "^1.10.0"
55
55
  },
56
+ "engines": {
57
+ "node": ">=18.0.0"
58
+ },
56
59
  "peerDependencies": {
57
60
  "react": "^18.0.0",
58
61
  "react-dom": "^18.0.0"
59
62
  },
63
+ "peerDependenciesMeta": {
64
+ "react": {
65
+ "optional": true
66
+ },
67
+ "react-dom": {
68
+ "optional": true
69
+ }
70
+ },
60
71
  "devDependencies": {
61
72
  "@types/ini": "^4.1.1",
62
73
  "@types/node": "^20.0.0",