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,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)
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,95 @@
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, TextTextParams, ImageTextParams, TextImageParams, ImageImageParams, Logger } from '../llm_api/types.js';
8
+ /**
9
+ * Service type identifiers for LLM capabilities
10
+ */
11
+ export declare const SERVICE_TYPES: {
12
+ readonly TEXT_TEXT: "text_text";
13
+ readonly IMAGE_TEXT: "image_text";
14
+ readonly TEXT_IMAGE: "text_image";
15
+ readonly IMAGE_IMAGE: "image_image";
16
+ };
17
+ /**
18
+ * Service type string literal union
19
+ */
20
+ export type ServiceType = typeof SERVICE_TYPES[keyof typeof SERVICE_TYPES];
21
+ /**
22
+ * Set of capabilities that a provider supports
23
+ */
24
+ export type LLMCapabilities = Set<ServiceType>;
25
+ /**
26
+ * Interface that all LLM providers must implement
27
+ * Providers handle the specific API calls and transformations for their LLM service
28
+ */
29
+ export interface LLMProvider {
30
+ /**
31
+ * Get the name/identifier of this provider (e.g., "gemini", "openai")
32
+ */
33
+ get_name(): string;
34
+ /**
35
+ * Get the capabilities this provider supports
36
+ * @returns Set of supported service types
37
+ */
38
+ get_capabilities(): LLMCapabilities;
39
+ /**
40
+ * Get the model name configured for a specific service type
41
+ * @param service_type - The service type to get the model for
42
+ * @returns Model name/identifier or undefined if not configured for this service
43
+ */
44
+ get_model_for_service(service_type: ServiceType): string | undefined;
45
+ /**
46
+ * Text input → Text output
47
+ * Generate text from a text prompt
48
+ *
49
+ * @param params - Text input parameters
50
+ * @param logger - Logger instance
51
+ * @returns LLM response with generated text
52
+ */
53
+ text_text(params: TextTextParams, logger: Logger): Promise<LLMResponse>;
54
+ /**
55
+ * Image input → Text output
56
+ * Analyze an image and generate text description
57
+ *
58
+ * @param params - Image input parameters
59
+ * @param logger - Logger instance
60
+ * @returns LLM response with generated text
61
+ */
62
+ image_text(params: ImageTextParams, logger: Logger): Promise<LLMResponse>;
63
+ /**
64
+ * Text input → Image output
65
+ * Generate an image from a text prompt
66
+ *
67
+ * @param params - Text input parameters for image generation
68
+ * @param logger - Logger instance
69
+ * @returns LLM response with generated image
70
+ */
71
+ text_image(params: TextImageParams, logger: Logger): Promise<LLMResponse>;
72
+ /**
73
+ * Image input → Image output
74
+ * Transform/edit an image based on instructions
75
+ *
76
+ * @param params - Image input parameters with transformation instructions
77
+ * @param logger - Logger instance
78
+ * @returns LLM response with transformed image
79
+ */
80
+ image_image(params: ImageImageParams, logger: Logger): Promise<LLMResponse>;
81
+ }
82
+ /**
83
+ * Base configuration for initializing an LLM provider
84
+ */
85
+ export interface LLMProviderConfig {
86
+ /** Provider name/identifier (e.g., "gemini", "openai") */
87
+ name: string;
88
+ /** API key - should be read from .env.local (e.g., GEMINI_API_KEY) */
89
+ api_key?: string;
90
+ /** Logger instance */
91
+ logger: Logger;
92
+ /** Additional provider-specific configuration */
93
+ [key: string]: unknown;
94
+ }
95
+ //# 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,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,MAAM,EACP,MAAM,qBAAqB,CAAC;AAM7B;;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;CAC7E;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,19 @@
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
+ // Service Type Constants
9
+ // =============================================================================
10
+ /**
11
+ * Service type identifiers for LLM capabilities
12
+ */
13
+ export const SERVICE_TYPES = {
14
+ TEXT_TEXT: 'text_text',
15
+ IMAGE_TEXT: 'image_text',
16
+ TEXT_IMAGE: 'text_image',
17
+ IMAGE_IMAGE: 'image_image',
18
+ };
19
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,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,21 @@
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
+ */
16
+ 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, is_initialized, get_current_config, } from './lib/llm_api/index.js';
17
+ export { initialize_database, get_database, close_database, insert_prompt, update_prompt, delete_prompt, } from './lib/database/index.js';
18
+ export { get_prompt_by_area_and_key, 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';
19
+ export { call_gemini_api, get_gemini_api_url, } from './lib/providers/index.js';
20
+ export type { LLMApiConfig, LLMApiClient, LLMResponse, TextTextParams, ImageTextParams, TextImageParams, ImageImageParams, TextImageTextParams, ImageImageTextParams, ChainImage, Logger, PromptVariable, PromptVariables, Base64Data, PromptTextMode, PromptRecord, CallLLMParams, } from './lib/llm_api/types.js';
21
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EACL,eAAe,EACf,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAKlC,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,GACd,MAAM,wBAAwB,CAAC"}
package/dist/server.js ADDED
@@ -0,0 +1,32 @@
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
+ */
16
+ // =============================================================================
17
+ // LLM API Exports (Server-side ONLY)
18
+ // =============================================================================
19
+ 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, is_initialized, get_current_config, } from './lib/llm_api/index.js';
20
+ // =============================================================================
21
+ // Database Exports (Server-side ONLY)
22
+ // =============================================================================
23
+ export { initialize_database, get_database, close_database, insert_prompt, update_prompt, delete_prompt, } from './lib/database/index.js';
24
+ // =============================================================================
25
+ // Prompt Utility Exports (Server-side ONLY)
26
+ // =============================================================================
27
+ export { get_prompt_by_area_and_key, 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';
28
+ // =============================================================================
29
+ // Provider Exports (Server-side ONLY)
30
+ // =============================================================================
31
+ export { call_gemini_api, get_gemini_api_url, } from './lib/providers/index.js';
32
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,gFAAgF;AAChF,qCAAqC;AACrC,gFAAgF;AAChF,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAEhC,gFAAgF;AAChF,sCAAsC;AACtC,gFAAgF;AAChF,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,yBAAyB,CAAC;AAEjC,gFAAgF;AAChF,4CAA4C;AAC5C,gFAAgF;AAChF,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAEhC,gFAAgF;AAChF,sCAAsC;AACtC,gFAAgF;AAChF,OAAO,EACL,eAAe,EACf,kBAAkB,GACnB,MAAM,0BAA0B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "hazo_llm_api",
3
+ "version": "1.0.1",
4
+ "description": "Wrapper to call different LLMs and includes prompt management",
5
+ "keywords": [
6
+ "LLM",
7
+ "wrapper",
8
+ "api",
9
+ "caller"
10
+ ],
11
+ "homepage": "https://github.com/pub12/hazo_llm_api#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/pub12/hazo_llm_api/issues"
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/pub12/hazo_llm_api.git"
18
+ },
19
+ "license": "MIT",
20
+ "author": "Pubs Abayasiri",
21
+ "type": "module",
22
+ "main": "./dist/index.js",
23
+ "module": "./dist/index.js",
24
+ "types": "./dist/index.d.ts",
25
+ "exports": {
26
+ ".": {
27
+ "import": "./dist/index.js",
28
+ "types": "./dist/index.d.ts"
29
+ },
30
+ "./server": {
31
+ "import": "./dist/server.js",
32
+ "types": "./dist/server.d.ts"
33
+ }
34
+ },
35
+ "files": [
36
+ "dist",
37
+ "README.md",
38
+ "techdoc.md"
39
+ ],
40
+ "workspaces": [
41
+ "test-app"
42
+ ],
43
+ "scripts": {
44
+ "build": "tsc -p tsconfig.build.json",
45
+ "dev:package": "tsc -p tsconfig.build.json --watch",
46
+ "dev:test-app": "npm run dev --workspace=test-app",
47
+ "build:test-app": "npm run build --workspace=test-app",
48
+ "start:test-app": "npm start --workspace=test-app",
49
+ "install:all": "npm install",
50
+ "test": "echo \"Error: no test specified\" && exit 1"
51
+ },
52
+ "dependencies": {
53
+ "ini": "^6.0.0",
54
+ "sql.js": "^1.10.0"
55
+ },
56
+ "peerDependencies": {
57
+ "react": "^18.0.0",
58
+ "react-dom": "^18.0.0"
59
+ },
60
+ "devDependencies": {
61
+ "@types/ini": "^4.1.1",
62
+ "@types/node": "^20.0.0",
63
+ "@types/react": "^18.0.0",
64
+ "@types/react-dom": "^18.0.0",
65
+ "@types/sql.js": "^1.4.9",
66
+ "typescript": "^5.0.0"
67
+ }
68
+ }