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.
- package/dist/components/index.d.ts +7 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +7 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/layout/index.d.ts +7 -0
- package/dist/components/layout/index.d.ts.map +1 -0
- package/dist/components/layout/index.js +7 -0
- package/dist/components/layout/index.js.map +1 -0
- package/dist/components/layout/layout.d.ts +21 -0
- package/dist/components/layout/layout.d.ts.map +1 -0
- package/dist/components/layout/layout.js +18 -0
- package/dist/components/layout/layout.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/config/config_parser.d.ts +131 -0
- package/dist/lib/config/config_parser.d.ts.map +1 -0
- package/dist/lib/config/config_parser.js +297 -0
- package/dist/lib/config/config_parser.js.map +1 -0
- package/dist/lib/config/index.d.ts +8 -0
- package/dist/lib/config/index.d.ts.map +1 -0
- package/dist/lib/config/index.js +22 -0
- package/dist/lib/config/index.js.map +1 -0
- package/dist/lib/config/provider_loader.d.ts +113 -0
- package/dist/lib/config/provider_loader.d.ts.map +1 -0
- package/dist/lib/config/provider_loader.js +169 -0
- package/dist/lib/config/provider_loader.js.map +1 -0
- package/dist/lib/database/index.d.ts +8 -0
- package/dist/lib/database/index.d.ts.map +1 -0
- package/dist/lib/database/index.js +10 -0
- package/dist/lib/database/index.js.map +1 -0
- package/dist/lib/database/init_database.d.ts +118 -0
- package/dist/lib/database/init_database.d.ts.map +1 -0
- package/dist/lib/database/init_database.js +591 -0
- package/dist/lib/database/init_database.js.map +1 -0
- package/dist/lib/database/utils.d.ts +53 -0
- package/dist/lib/database/utils.d.ts.map +1 -0
- package/dist/lib/database/utils.js +87 -0
- package/dist/lib/database/utils.js.map +1 -0
- package/dist/lib/index.d.ts +14 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +17 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/llm_api/chain_helpers.d.ts +117 -0
- package/dist/lib/llm_api/chain_helpers.d.ts.map +1 -0
- package/dist/lib/llm_api/chain_helpers.js +445 -0
- package/dist/lib/llm_api/chain_helpers.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_image.d.ts +26 -0
- package/dist/lib/llm_api/hazo_llm_image_image.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_image.js +94 -0
- package/dist/lib/llm_api/hazo_llm_image_image.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts +26 -0
- package/dist/lib/llm_api/hazo_llm_image_image_text.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_image_text.js +222 -0
- package/dist/lib/llm_api/hazo_llm_image_image_text.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_text.d.ts +20 -0
- package/dist/lib/llm_api/hazo_llm_image_text.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_image_text.js +78 -0
- package/dist/lib/llm_api/hazo_llm_image_text.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.d.ts +20 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.js +368 -0
- package/dist/lib/llm_api/hazo_llm_prompt_chain.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_image.d.ts +20 -0
- package/dist/lib/llm_api/hazo_llm_text_image.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_image.js +69 -0
- package/dist/lib/llm_api/hazo_llm_text_image.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts +26 -0
- package/dist/lib/llm_api/hazo_llm_text_image_text.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_image_text.js +154 -0
- package/dist/lib/llm_api/hazo_llm_text_image_text.js.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_text.d.ts +20 -0
- package/dist/lib/llm_api/hazo_llm_text_text.d.ts.map +1 -0
- package/dist/lib/llm_api/hazo_llm_text_text.js +91 -0
- package/dist/lib/llm_api/hazo_llm_text_text.js.map +1 -0
- package/dist/lib/llm_api/index.d.ts +223 -0
- package/dist/lib/llm_api/index.d.ts.map +1 -0
- package/dist/lib/llm_api/index.js +1220 -0
- package/dist/lib/llm_api/index.js.map +1 -0
- package/dist/lib/llm_api/provider_helper.d.ts +163 -0
- package/dist/lib/llm_api/provider_helper.d.ts.map +1 -0
- package/dist/lib/llm_api/provider_helper.js +346 -0
- package/dist/lib/llm_api/provider_helper.js.map +1 -0
- package/dist/lib/llm_api/types.d.ts +667 -0
- package/dist/lib/llm_api/types.d.ts.map +1 -0
- package/dist/lib/llm_api/types.js +49 -0
- package/dist/lib/llm_api/types.js.map +1 -0
- package/dist/lib/prompts/get_prompt.d.ts +76 -0
- package/dist/lib/prompts/get_prompt.d.ts.map +1 -0
- package/dist/lib/prompts/get_prompt.js +342 -0
- package/dist/lib/prompts/get_prompt.js.map +1 -0
- package/dist/lib/prompts/index.d.ts +9 -0
- package/dist/lib/prompts/index.d.ts.map +1 -0
- package/dist/lib/prompts/index.js +9 -0
- package/dist/lib/prompts/index.js.map +1 -0
- package/dist/lib/prompts/prompt_cache.d.ts +151 -0
- package/dist/lib/prompts/prompt_cache.d.ts.map +1 -0
- package/dist/lib/prompts/prompt_cache.js +276 -0
- package/dist/lib/prompts/prompt_cache.js.map +1 -0
- package/dist/lib/prompts/substitute_variables.d.ts +38 -0
- package/dist/lib/prompts/substitute_variables.d.ts.map +1 -0
- package/dist/lib/prompts/substitute_variables.js +171 -0
- package/dist/lib/prompts/substitute_variables.js.map +1 -0
- package/dist/lib/providers/gemini/gemini_client.d.ts +25 -0
- package/dist/lib/providers/gemini/gemini_client.d.ts.map +1 -0
- package/dist/lib/providers/gemini/gemini_client.js +235 -0
- package/dist/lib/providers/gemini/gemini_client.js.map +1 -0
- package/dist/lib/providers/gemini/gemini_provider.d.ts +111 -0
- package/dist/lib/providers/gemini/gemini_provider.d.ts.map +1 -0
- package/dist/lib/providers/gemini/gemini_provider.js +431 -0
- package/dist/lib/providers/gemini/gemini_provider.js.map +1 -0
- package/dist/lib/providers/gemini/index.d.ts +8 -0
- package/dist/lib/providers/gemini/index.d.ts.map +1 -0
- package/dist/lib/providers/gemini/index.js +8 -0
- package/dist/lib/providers/gemini/index.js.map +1 -0
- package/dist/lib/providers/index.d.ts +8 -0
- package/dist/lib/providers/index.d.ts.map +1 -0
- package/dist/lib/providers/index.js +8 -0
- package/dist/lib/providers/index.js.map +1 -0
- package/dist/lib/providers/qwen/index.d.ts +8 -0
- package/dist/lib/providers/qwen/index.d.ts.map +1 -0
- package/dist/lib/providers/qwen/index.js +8 -0
- package/dist/lib/providers/qwen/index.js.map +1 -0
- package/dist/lib/providers/qwen/qwen_client.d.ts +154 -0
- package/dist/lib/providers/qwen/qwen_client.d.ts.map +1 -0
- package/dist/lib/providers/qwen/qwen_client.js +1002 -0
- package/dist/lib/providers/qwen/qwen_client.js.map +1 -0
- package/dist/lib/providers/qwen/qwen_provider.d.ts +139 -0
- package/dist/lib/providers/qwen/qwen_provider.d.ts.map +1 -0
- package/dist/lib/providers/qwen/qwen_provider.js +304 -0
- package/dist/lib/providers/qwen/qwen_provider.js.map +1 -0
- package/dist/lib/providers/registry.d.ts +66 -0
- package/dist/lib/providers/registry.d.ts.map +1 -0
- package/dist/lib/providers/registry.js +158 -0
- package/dist/lib/providers/registry.js.map +1 -0
- package/dist/lib/providers/types.d.ts +145 -0
- package/dist/lib/providers/types.d.ts.map +1 -0
- package/dist/lib/providers/types.js +37 -0
- package/dist/lib/providers/types.js.map +1 -0
- package/dist/server.d.ts +27 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +50 -0
- package/dist/server.js.map +1 -0
- package/package.json +12 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/llm_api/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Helper Utilities
|
|
3
|
+
*
|
|
4
|
+
* Centralized helper functions for provider lookup, validation, and error handling.
|
|
5
|
+
* Eliminates code duplication across service functions.
|
|
6
|
+
*/
|
|
7
|
+
import type { LLMProvider, ServiceType, ProviderName } from '../providers/types.js';
|
|
8
|
+
import type { Logger, LLMResponse, LLMErrorCode, LLMRequestContext, LLMResponseContext, LLMErrorContext } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Result of provider validation - either success with provider or failure with error response
|
|
11
|
+
*/
|
|
12
|
+
export type ProviderValidationResult = {
|
|
13
|
+
success: true;
|
|
14
|
+
provider: LLMProvider;
|
|
15
|
+
} | {
|
|
16
|
+
success: false;
|
|
17
|
+
error_response: LLMResponse;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Options for provider validation
|
|
21
|
+
*/
|
|
22
|
+
export interface ProviderValidationOptions {
|
|
23
|
+
/** LLM provider name (uses primary if not specified) */
|
|
24
|
+
llm?: ProviderName;
|
|
25
|
+
/** Service type to validate capability for */
|
|
26
|
+
service_type: ServiceType;
|
|
27
|
+
/** Logger instance */
|
|
28
|
+
logger: Logger;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get and validate a provider for a specific service type
|
|
32
|
+
*
|
|
33
|
+
* This function consolidates the provider lookup and capability validation
|
|
34
|
+
* logic that was previously duplicated across all service functions.
|
|
35
|
+
*
|
|
36
|
+
* @param options - Validation options
|
|
37
|
+
* @returns Provider if valid, or error response if not
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const result = get_validated_provider({
|
|
42
|
+
* llm: 'gemini',
|
|
43
|
+
* service_type: SERVICE_TYPES.TEXT_TEXT,
|
|
44
|
+
* logger,
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* if (!result.success) {
|
|
48
|
+
* return result.error_response;
|
|
49
|
+
* }
|
|
50
|
+
*
|
|
51
|
+
* const response = await result.provider.text_text(params, logger);
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function get_validated_provider(options: ProviderValidationOptions): ProviderValidationResult;
|
|
55
|
+
/**
|
|
56
|
+
* Build a structured error response with both legacy and new error formats
|
|
57
|
+
*
|
|
58
|
+
* @param code - Error code from LLM_ERROR_CODES
|
|
59
|
+
* @param message - Human-readable error message
|
|
60
|
+
* @param retryable - Whether this error is potentially retryable (default: false)
|
|
61
|
+
* @param details - Additional error details (optional)
|
|
62
|
+
* @returns LLMResponse with structured error
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* return build_error_response(
|
|
67
|
+
* LLM_ERROR_CODES.RATE_LIMITED,
|
|
68
|
+
* 'Rate limit exceeded. Please try again later.',
|
|
69
|
+
* true,
|
|
70
|
+
* { retry_after: 60 }
|
|
71
|
+
* );
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export declare function build_error_response(code: LLMErrorCode, message: string, retryable?: boolean, details?: Record<string, unknown>): LLMResponse;
|
|
75
|
+
/**
|
|
76
|
+
* Build a helpful error message when provider is not found
|
|
77
|
+
*
|
|
78
|
+
* @param llm - The requested LLM name (or undefined for primary)
|
|
79
|
+
* @returns LLMResponse with helpful error message
|
|
80
|
+
*/
|
|
81
|
+
export declare function build_provider_not_found_error(llm?: ProviderName): LLMResponse;
|
|
82
|
+
/**
|
|
83
|
+
* Build an error response for unsupported capability
|
|
84
|
+
*
|
|
85
|
+
* @param provider_name - Name of the provider
|
|
86
|
+
* @param service_type - The unsupported service type
|
|
87
|
+
* @returns LLMResponse with capability error
|
|
88
|
+
*/
|
|
89
|
+
export declare function build_capability_error(provider_name: string, service_type: ServiceType): LLMResponse;
|
|
90
|
+
/**
|
|
91
|
+
* Log API call start with consistent formatting
|
|
92
|
+
*
|
|
93
|
+
* @param api_name - Name of the API being called
|
|
94
|
+
* @param file_name - Source file name
|
|
95
|
+
* @param logger - Logger instance
|
|
96
|
+
*/
|
|
97
|
+
export declare function log_api_start(api_name: string, file_name: string, logger: Logger): void;
|
|
98
|
+
/**
|
|
99
|
+
* Log API call completion with consistent formatting
|
|
100
|
+
*
|
|
101
|
+
* @param api_name - Name of the API being called
|
|
102
|
+
* @param file_name - Source file name
|
|
103
|
+
* @param success - Whether the call was successful
|
|
104
|
+
* @param logger - Logger instance
|
|
105
|
+
*/
|
|
106
|
+
export declare function log_api_complete(api_name: string, file_name: string, success: boolean, logger: Logger): void;
|
|
107
|
+
/**
|
|
108
|
+
* Log API call details including provider and model
|
|
109
|
+
*
|
|
110
|
+
* @param provider - The LLM provider
|
|
111
|
+
* @param service_type - The service type being called
|
|
112
|
+
* @param file_name - Source file name
|
|
113
|
+
* @param logger - Logger instance
|
|
114
|
+
* @param additional_data - Additional data to include in log
|
|
115
|
+
*/
|
|
116
|
+
export declare function log_api_details(provider: LLMProvider, service_type: ServiceType, file_name: string, logger: Logger, additional_data?: Record<string, unknown>): void;
|
|
117
|
+
/**
|
|
118
|
+
* Log API response
|
|
119
|
+
*
|
|
120
|
+
* @param response - The LLM response
|
|
121
|
+
* @param file_name - Source file name
|
|
122
|
+
* @param logger - Logger instance
|
|
123
|
+
*/
|
|
124
|
+
export declare function log_api_response(response: LLMResponse, file_name: string, logger: Logger): void;
|
|
125
|
+
/**
|
|
126
|
+
* Log and build error response for caught exceptions
|
|
127
|
+
*
|
|
128
|
+
* @param error - The caught error
|
|
129
|
+
* @param function_name - Name of the function where error occurred
|
|
130
|
+
* @param file_name - Source file name
|
|
131
|
+
* @param logger - Logger instance
|
|
132
|
+
* @param error_code - Optional specific error code (defaults to UNKNOWN)
|
|
133
|
+
* @returns LLMResponse with error details
|
|
134
|
+
*/
|
|
135
|
+
export declare function handle_caught_error(error: unknown, function_name: string, file_name: string, logger: Logger, error_code?: LLMErrorCode): LLMResponse;
|
|
136
|
+
/**
|
|
137
|
+
* Call the beforeRequest hook if configured
|
|
138
|
+
*
|
|
139
|
+
* @param context - Request context
|
|
140
|
+
*/
|
|
141
|
+
export declare function call_before_request_hook(context: LLMRequestContext): Promise<void>;
|
|
142
|
+
/**
|
|
143
|
+
* Call the afterResponse hook if configured
|
|
144
|
+
*
|
|
145
|
+
* @param context - Response context
|
|
146
|
+
*/
|
|
147
|
+
export declare function call_after_response_hook(context: LLMResponseContext): Promise<void>;
|
|
148
|
+
/**
|
|
149
|
+
* Call the onError hook if configured
|
|
150
|
+
*
|
|
151
|
+
* @param context - Error context
|
|
152
|
+
*/
|
|
153
|
+
export declare function call_on_error_hook(context: LLMErrorContext): Promise<void>;
|
|
154
|
+
/**
|
|
155
|
+
* Create a request context for hooks
|
|
156
|
+
*
|
|
157
|
+
* @param service_type - Service type being called
|
|
158
|
+
* @param provider - Provider name
|
|
159
|
+
* @param params - Request parameters
|
|
160
|
+
* @returns Request context
|
|
161
|
+
*/
|
|
162
|
+
export declare function create_request_context(service_type: ServiceType, provider: string, params: Record<string, unknown>): LLMRequestContext;
|
|
163
|
+
//# sourceMappingURL=provider_helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider_helper.d.ts","sourceRoot":"","sources":["../../../src/lib/llm_api/provider_helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Helper Utilities
|
|
3
|
+
*
|
|
4
|
+
* Centralized helper functions for provider lookup, validation, and error handling.
|
|
5
|
+
* Eliminates code duplication across service functions.
|
|
6
|
+
*/
|
|
7
|
+
import { LLM_ERROR_CODES } from './types.js';
|
|
8
|
+
import { get_provider, validate_capability } from '../providers/registry.js';
|
|
9
|
+
import { get_hooks } from './index.js';
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Provider Validation Helper
|
|
12
|
+
// =============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Get and validate a provider for a specific service type
|
|
15
|
+
*
|
|
16
|
+
* This function consolidates the provider lookup and capability validation
|
|
17
|
+
* logic that was previously duplicated across all service functions.
|
|
18
|
+
*
|
|
19
|
+
* @param options - Validation options
|
|
20
|
+
* @returns Provider if valid, or error response if not
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const result = get_validated_provider({
|
|
25
|
+
* llm: 'gemini',
|
|
26
|
+
* service_type: SERVICE_TYPES.TEXT_TEXT,
|
|
27
|
+
* logger,
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* if (!result.success) {
|
|
31
|
+
* return result.error_response;
|
|
32
|
+
* }
|
|
33
|
+
*
|
|
34
|
+
* const response = await result.provider.text_text(params, logger);
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export function get_validated_provider(options) {
|
|
38
|
+
const { llm, service_type, logger } = options;
|
|
39
|
+
// ==========================================================================
|
|
40
|
+
// Step 1: Get provider from registry
|
|
41
|
+
// ==========================================================================
|
|
42
|
+
const provider = get_provider(llm, logger);
|
|
43
|
+
if (!provider) {
|
|
44
|
+
const error_response = build_provider_not_found_error(llm);
|
|
45
|
+
return { success: false, error_response };
|
|
46
|
+
}
|
|
47
|
+
// ==========================================================================
|
|
48
|
+
// Step 2: Validate capability
|
|
49
|
+
// ==========================================================================
|
|
50
|
+
if (!validate_capability(provider, service_type, logger)) {
|
|
51
|
+
const error_response = build_capability_error(provider.get_name(), service_type);
|
|
52
|
+
return { success: false, error_response };
|
|
53
|
+
}
|
|
54
|
+
return { success: true, provider };
|
|
55
|
+
}
|
|
56
|
+
// =============================================================================
|
|
57
|
+
// Error Response Builders
|
|
58
|
+
// =============================================================================
|
|
59
|
+
/**
|
|
60
|
+
* Build a structured error response with both legacy and new error formats
|
|
61
|
+
*
|
|
62
|
+
* @param code - Error code from LLM_ERROR_CODES
|
|
63
|
+
* @param message - Human-readable error message
|
|
64
|
+
* @param retryable - Whether this error is potentially retryable (default: false)
|
|
65
|
+
* @param details - Additional error details (optional)
|
|
66
|
+
* @returns LLMResponse with structured error
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* return build_error_response(
|
|
71
|
+
* LLM_ERROR_CODES.RATE_LIMITED,
|
|
72
|
+
* 'Rate limit exceeded. Please try again later.',
|
|
73
|
+
* true,
|
|
74
|
+
* { retry_after: 60 }
|
|
75
|
+
* );
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export function build_error_response(code, message, retryable = false, details) {
|
|
79
|
+
const error_info = {
|
|
80
|
+
code,
|
|
81
|
+
message,
|
|
82
|
+
retryable,
|
|
83
|
+
...(details && { details }),
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
success: false,
|
|
87
|
+
error: message, // Backward compatibility
|
|
88
|
+
error_info,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Build a helpful error message when provider is not found
|
|
93
|
+
*
|
|
94
|
+
* @param llm - The requested LLM name (or undefined for primary)
|
|
95
|
+
* @returns LLMResponse with helpful error message
|
|
96
|
+
*/
|
|
97
|
+
export function build_provider_not_found_error(llm) {
|
|
98
|
+
const provider_name = (llm || '').toLowerCase();
|
|
99
|
+
const env_var_name = provider_name ? `${provider_name.toUpperCase()}_API_KEY` : '';
|
|
100
|
+
const message = llm
|
|
101
|
+
? `LLM provider "${llm}" is enabled in config but not available. ${env_var_name ? `Check ${env_var_name} in environment variables.` : 'Provider may not be properly configured.'}`
|
|
102
|
+
: 'No LLM provider configured. Check enabled_llms and primary_llm in config/hazo_llm_api_config.ini';
|
|
103
|
+
return build_error_response(LLM_ERROR_CODES.PROVIDER_NOT_FOUND, message, false, { provider: llm, env_var_name: env_var_name || undefined });
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Build an error response for unsupported capability
|
|
107
|
+
*
|
|
108
|
+
* @param provider_name - Name of the provider
|
|
109
|
+
* @param service_type - The unsupported service type
|
|
110
|
+
* @returns LLMResponse with capability error
|
|
111
|
+
*/
|
|
112
|
+
export function build_capability_error(provider_name, service_type) {
|
|
113
|
+
return build_error_response(LLM_ERROR_CODES.CAPABILITY_NOT_SUPPORTED, `LLM provider "${provider_name}" does not support ${service_type} service`, false, { provider: provider_name, service_type });
|
|
114
|
+
}
|
|
115
|
+
// =============================================================================
|
|
116
|
+
// Logging Helpers
|
|
117
|
+
// =============================================================================
|
|
118
|
+
/**
|
|
119
|
+
* Log API call start with consistent formatting
|
|
120
|
+
*
|
|
121
|
+
* @param api_name - Name of the API being called
|
|
122
|
+
* @param file_name - Source file name
|
|
123
|
+
* @param logger - Logger instance
|
|
124
|
+
*/
|
|
125
|
+
export function log_api_start(api_name, file_name, logger) {
|
|
126
|
+
logger.debug(`########################################################################### ${api_name}`, {
|
|
127
|
+
file: file_name,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Log API call completion with consistent formatting
|
|
132
|
+
*
|
|
133
|
+
* @param api_name - Name of the API being called
|
|
134
|
+
* @param file_name - Source file name
|
|
135
|
+
* @param success - Whether the call was successful
|
|
136
|
+
* @param logger - Logger instance
|
|
137
|
+
*/
|
|
138
|
+
export function log_api_complete(api_name, file_name, success, logger) {
|
|
139
|
+
logger.debug(`<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ${api_name} >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`, {
|
|
140
|
+
file: file_name,
|
|
141
|
+
data: { success },
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Log API call details including provider and model
|
|
146
|
+
*
|
|
147
|
+
* @param provider - The LLM provider
|
|
148
|
+
* @param service_type - The service type being called
|
|
149
|
+
* @param file_name - Source file name
|
|
150
|
+
* @param logger - Logger instance
|
|
151
|
+
* @param additional_data - Additional data to include in log
|
|
152
|
+
*/
|
|
153
|
+
export function log_api_details(provider, service_type, file_name, logger, additional_data) {
|
|
154
|
+
const model = provider.get_model_for_service(service_type);
|
|
155
|
+
logger.debug('API call details', {
|
|
156
|
+
file: file_name,
|
|
157
|
+
data: {
|
|
158
|
+
provider: provider.get_name(),
|
|
159
|
+
model: model || 'default',
|
|
160
|
+
service_type,
|
|
161
|
+
...additional_data,
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Log API response
|
|
167
|
+
*
|
|
168
|
+
* @param response - The LLM response
|
|
169
|
+
* @param file_name - Source file name
|
|
170
|
+
* @param logger - Logger instance
|
|
171
|
+
*/
|
|
172
|
+
export function log_api_response(response, file_name, logger) {
|
|
173
|
+
logger.debug('API response', {
|
|
174
|
+
file: file_name,
|
|
175
|
+
data: {
|
|
176
|
+
success: response.success,
|
|
177
|
+
text: response.text,
|
|
178
|
+
has_image: !!response.image_b64,
|
|
179
|
+
error: response.error,
|
|
180
|
+
},
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Log and build error response for caught exceptions
|
|
185
|
+
*
|
|
186
|
+
* @param error - The caught error
|
|
187
|
+
* @param function_name - Name of the function where error occurred
|
|
188
|
+
* @param file_name - Source file name
|
|
189
|
+
* @param logger - Logger instance
|
|
190
|
+
* @param error_code - Optional specific error code (defaults to UNKNOWN)
|
|
191
|
+
* @returns LLMResponse with error details
|
|
192
|
+
*/
|
|
193
|
+
export function handle_caught_error(error, function_name, file_name, logger, error_code = LLM_ERROR_CODES.UNKNOWN) {
|
|
194
|
+
const error_message = error instanceof Error ? error.message : String(error);
|
|
195
|
+
// Determine if error is retryable based on common patterns
|
|
196
|
+
const retryable = is_retryable_error(error);
|
|
197
|
+
// Auto-detect error code if not specified
|
|
198
|
+
const detected_code = error_code === LLM_ERROR_CODES.UNKNOWN
|
|
199
|
+
? detect_error_code(error)
|
|
200
|
+
: error_code;
|
|
201
|
+
logger.error(`Error in ${function_name}`, {
|
|
202
|
+
file: file_name,
|
|
203
|
+
data: { error: error_message, code: detected_code },
|
|
204
|
+
});
|
|
205
|
+
return build_error_response(detected_code, error_message, retryable, { function_name, file_name });
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Determine if an error is potentially retryable
|
|
209
|
+
*
|
|
210
|
+
* @param error - The error to check
|
|
211
|
+
* @returns True if the error is retryable
|
|
212
|
+
*/
|
|
213
|
+
function is_retryable_error(error) {
|
|
214
|
+
if (!(error instanceof Error)) {
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
const message = error.message.toLowerCase();
|
|
218
|
+
// Network/timeout errors are retryable
|
|
219
|
+
if (message.includes('timeout') ||
|
|
220
|
+
message.includes('network') ||
|
|
221
|
+
message.includes('econnrefused') ||
|
|
222
|
+
message.includes('econnreset') ||
|
|
223
|
+
message.includes('socket') ||
|
|
224
|
+
message.includes('fetch failed')) {
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
// Rate limit errors are retryable
|
|
228
|
+
if (message.includes('rate limit') ||
|
|
229
|
+
message.includes('too many requests') ||
|
|
230
|
+
message.includes('429')) {
|
|
231
|
+
return true;
|
|
232
|
+
}
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Auto-detect error code from error message
|
|
237
|
+
*
|
|
238
|
+
* @param error - The error to analyze
|
|
239
|
+
* @returns Detected error code
|
|
240
|
+
*/
|
|
241
|
+
function detect_error_code(error) {
|
|
242
|
+
if (!(error instanceof Error)) {
|
|
243
|
+
return LLM_ERROR_CODES.UNKNOWN;
|
|
244
|
+
}
|
|
245
|
+
const message = error.message.toLowerCase();
|
|
246
|
+
// Network errors
|
|
247
|
+
if (message.includes('network') ||
|
|
248
|
+
message.includes('econnrefused') ||
|
|
249
|
+
message.includes('econnreset') ||
|
|
250
|
+
message.includes('socket') ||
|
|
251
|
+
message.includes('fetch failed')) {
|
|
252
|
+
return LLM_ERROR_CODES.NETWORK_ERROR;
|
|
253
|
+
}
|
|
254
|
+
// Timeout errors
|
|
255
|
+
if (message.includes('timeout')) {
|
|
256
|
+
return LLM_ERROR_CODES.TIMEOUT;
|
|
257
|
+
}
|
|
258
|
+
// Rate limit errors
|
|
259
|
+
if (message.includes('rate limit') ||
|
|
260
|
+
message.includes('too many requests') ||
|
|
261
|
+
message.includes('429')) {
|
|
262
|
+
return LLM_ERROR_CODES.RATE_LIMITED;
|
|
263
|
+
}
|
|
264
|
+
// API key errors
|
|
265
|
+
if (message.includes('api key') ||
|
|
266
|
+
message.includes('unauthorized') ||
|
|
267
|
+
message.includes('401') ||
|
|
268
|
+
message.includes('authentication')) {
|
|
269
|
+
return LLM_ERROR_CODES.API_KEY_MISSING;
|
|
270
|
+
}
|
|
271
|
+
// Invalid request errors
|
|
272
|
+
if (message.includes('invalid') ||
|
|
273
|
+
message.includes('bad request') ||
|
|
274
|
+
message.includes('400')) {
|
|
275
|
+
return LLM_ERROR_CODES.INVALID_REQUEST;
|
|
276
|
+
}
|
|
277
|
+
return LLM_ERROR_CODES.UNKNOWN;
|
|
278
|
+
}
|
|
279
|
+
// =============================================================================
|
|
280
|
+
// Hook Invocation Helpers
|
|
281
|
+
// =============================================================================
|
|
282
|
+
/**
|
|
283
|
+
* Call the beforeRequest hook if configured
|
|
284
|
+
*
|
|
285
|
+
* @param context - Request context
|
|
286
|
+
*/
|
|
287
|
+
export async function call_before_request_hook(context) {
|
|
288
|
+
const hooks = get_hooks();
|
|
289
|
+
if (hooks.beforeRequest) {
|
|
290
|
+
try {
|
|
291
|
+
await hooks.beforeRequest(context);
|
|
292
|
+
}
|
|
293
|
+
catch {
|
|
294
|
+
// Silently ignore hook errors to not affect main flow
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Call the afterResponse hook if configured
|
|
300
|
+
*
|
|
301
|
+
* @param context - Response context
|
|
302
|
+
*/
|
|
303
|
+
export async function call_after_response_hook(context) {
|
|
304
|
+
const hooks = get_hooks();
|
|
305
|
+
if (hooks.afterResponse) {
|
|
306
|
+
try {
|
|
307
|
+
await hooks.afterResponse(context);
|
|
308
|
+
}
|
|
309
|
+
catch {
|
|
310
|
+
// Silently ignore hook errors to not affect main flow
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Call the onError hook if configured
|
|
316
|
+
*
|
|
317
|
+
* @param context - Error context
|
|
318
|
+
*/
|
|
319
|
+
export async function call_on_error_hook(context) {
|
|
320
|
+
const hooks = get_hooks();
|
|
321
|
+
if (hooks.onError) {
|
|
322
|
+
try {
|
|
323
|
+
await hooks.onError(context);
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
// Silently ignore hook errors to not affect main flow
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Create a request context for hooks
|
|
332
|
+
*
|
|
333
|
+
* @param service_type - Service type being called
|
|
334
|
+
* @param provider - Provider name
|
|
335
|
+
* @param params - Request parameters
|
|
336
|
+
* @returns Request context
|
|
337
|
+
*/
|
|
338
|
+
export function create_request_context(service_type, provider, params) {
|
|
339
|
+
return {
|
|
340
|
+
service_type,
|
|
341
|
+
provider,
|
|
342
|
+
params,
|
|
343
|
+
timestamp: new Date(),
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
//# sourceMappingURL=provider_helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider_helper.js","sourceRoot":"","sources":["../../../src/lib/llm_api/provider_helper.ts"],"names":[],"mappings":"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"}
|