@revenium/openai 1.0.13 → 1.0.15
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/.env.example +10 -15
- package/CHANGELOG.md +65 -11
- package/CODE_OF_CONDUCT.md +57 -0
- package/CONTRIBUTING.md +38 -0
- package/README.md +104 -216
- package/SECURITY.md +34 -0
- package/dist/cjs/core/client/index.js +14 -0
- package/dist/cjs/core/client/index.js.map +1 -0
- package/dist/cjs/core/client/manager.js +109 -0
- package/dist/cjs/core/client/manager.js.map +1 -0
- package/dist/cjs/core/config/azure-config.js +5 -17
- package/dist/cjs/core/config/azure-config.js.map +1 -1
- package/dist/cjs/core/config/index.js +2 -2
- package/dist/cjs/core/config/index.js.map +1 -1
- package/dist/cjs/core/config/loader.js +34 -14
- package/dist/cjs/core/config/loader.js.map +1 -1
- package/dist/cjs/core/config/manager.js +11 -5
- package/dist/cjs/core/config/manager.js.map +1 -1
- package/dist/cjs/core/config/validator.js +3 -45
- package/dist/cjs/core/config/validator.js.map +1 -1
- package/dist/cjs/core/middleware/index.js +21 -0
- package/dist/cjs/core/middleware/index.js.map +1 -0
- package/dist/cjs/core/middleware/interfaces.js +454 -0
- package/dist/cjs/core/middleware/interfaces.js.map +1 -0
- package/dist/cjs/core/middleware/revenium-client.js +152 -0
- package/dist/cjs/core/middleware/revenium-client.js.map +1 -0
- package/dist/cjs/core/providers/detector.js +45 -23
- package/dist/cjs/core/providers/detector.js.map +1 -1
- package/dist/cjs/core/providers/index.js +2 -1
- package/dist/cjs/core/providers/index.js.map +1 -1
- package/dist/cjs/core/tracking/api-client.js +21 -14
- package/dist/cjs/core/tracking/api-client.js.map +1 -1
- package/dist/cjs/core/tracking/index.js +5 -1
- package/dist/cjs/core/tracking/index.js.map +1 -1
- package/dist/cjs/core/tracking/payload-builder.js +143 -25
- package/dist/cjs/core/tracking/payload-builder.js.map +1 -1
- package/dist/cjs/core/tracking/usage-tracker.js +111 -18
- package/dist/cjs/core/tracking/usage-tracker.js.map +1 -1
- package/dist/cjs/index.js +39 -202
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/index.js +0 -8
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/openai-augmentation.js +0 -49
- package/dist/cjs/types/openai-augmentation.js.map +1 -1
- package/dist/cjs/utils/constants.js +17 -20
- package/dist/cjs/utils/constants.js.map +1 -1
- package/dist/cjs/utils/error-handler.js +18 -14
- package/dist/cjs/utils/error-handler.js.map +1 -1
- package/dist/cjs/utils/metadata-builder.js +17 -16
- package/dist/cjs/utils/metadata-builder.js.map +1 -1
- package/dist/cjs/utils/provider-detection.js +25 -28
- package/dist/cjs/utils/provider-detection.js.map +1 -1
- package/dist/cjs/utils/trace-fields.js +115 -0
- package/dist/cjs/utils/trace-fields.js.map +1 -0
- package/dist/esm/core/client/index.js +6 -0
- package/dist/esm/core/client/index.js.map +1 -0
- package/dist/esm/core/client/manager.js +102 -0
- package/dist/esm/core/client/manager.js.map +1 -0
- package/dist/esm/core/config/azure-config.js +6 -18
- package/dist/esm/core/config/azure-config.js.map +1 -1
- package/dist/esm/core/config/index.js +5 -4
- package/dist/esm/core/config/index.js.map +1 -1
- package/dist/esm/core/config/loader.js +33 -13
- package/dist/esm/core/config/loader.js.map +1 -1
- package/dist/esm/core/config/manager.js +13 -7
- package/dist/esm/core/config/manager.js.map +1 -1
- package/dist/esm/core/config/validator.js +3 -44
- package/dist/esm/core/config/validator.js.map +1 -1
- package/dist/esm/core/middleware/index.js +8 -0
- package/dist/esm/core/middleware/index.js.map +1 -0
- package/dist/esm/core/middleware/interfaces.js +442 -0
- package/dist/esm/core/middleware/interfaces.js.map +1 -0
- package/dist/esm/core/middleware/revenium-client.js +115 -0
- package/dist/esm/core/middleware/revenium-client.js.map +1 -0
- package/dist/esm/core/providers/detector.js +43 -22
- package/dist/esm/core/providers/detector.js.map +1 -1
- package/dist/esm/core/providers/index.js +2 -2
- package/dist/esm/core/providers/index.js.map +1 -1
- package/dist/esm/core/tracking/api-client.js +20 -13
- package/dist/esm/core/tracking/api-client.js.map +1 -1
- package/dist/esm/core/tracking/index.js +4 -4
- package/dist/esm/core/tracking/index.js.map +1 -1
- package/dist/esm/core/tracking/payload-builder.js +142 -26
- package/dist/esm/core/tracking/payload-builder.js.map +1 -1
- package/dist/esm/core/tracking/usage-tracker.js +78 -20
- package/dist/esm/core/tracking/usage-tracker.js.map +1 -1
- package/dist/esm/index.js +9 -177
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/index.js +2 -10
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/openai-augmentation.js +0 -49
- package/dist/esm/types/openai-augmentation.js.map +1 -1
- package/dist/esm/utils/constants.js +16 -19
- package/dist/esm/utils/constants.js.map +1 -1
- package/dist/esm/utils/error-handler.js +19 -15
- package/dist/esm/utils/error-handler.js.map +1 -1
- package/dist/esm/utils/metadata-builder.js +17 -16
- package/dist/esm/utils/metadata-builder.js.map +1 -1
- package/dist/esm/utils/provider-detection.js +26 -29
- package/dist/esm/utils/provider-detection.js.map +1 -1
- package/dist/esm/utils/trace-fields.js +100 -0
- package/dist/esm/utils/trace-fields.js.map +1 -0
- package/dist/types/core/client/index.d.ts +6 -0
- package/dist/types/core/client/index.d.ts.map +1 -0
- package/dist/types/core/client/manager.d.ts +32 -0
- package/dist/types/core/client/manager.d.ts.map +1 -0
- package/dist/types/core/config/azure-config.d.ts +2 -2
- package/dist/types/core/config/azure-config.d.ts.map +1 -1
- package/dist/types/core/config/index.d.ts +4 -4
- package/dist/types/core/config/index.d.ts.map +1 -1
- package/dist/types/core/config/loader.d.ts +3 -1
- package/dist/types/core/config/loader.d.ts.map +1 -1
- package/dist/types/core/config/manager.d.ts +1 -1
- package/dist/types/core/config/manager.d.ts.map +1 -1
- package/dist/types/core/config/validator.d.ts +1 -12
- package/dist/types/core/config/validator.d.ts.map +1 -1
- package/dist/types/core/middleware/index.d.ts +8 -0
- package/dist/types/core/middleware/index.d.ts.map +1 -0
- package/dist/types/core/middleware/interfaces.d.ts +104 -0
- package/dist/types/core/middleware/interfaces.d.ts.map +1 -0
- package/dist/types/core/middleware/revenium-client.d.ts +64 -0
- package/dist/types/core/middleware/revenium-client.d.ts.map +1 -0
- package/dist/types/core/providers/detector.d.ts +9 -2
- package/dist/types/core/providers/detector.d.ts.map +1 -1
- package/dist/types/core/providers/index.d.ts +2 -2
- package/dist/types/core/providers/index.d.ts.map +1 -1
- package/dist/types/core/tracking/api-client.d.ts +1 -1
- package/dist/types/core/tracking/api-client.d.ts.map +1 -1
- package/dist/types/core/tracking/index.d.ts +4 -4
- package/dist/types/core/tracking/index.d.ts.map +1 -1
- package/dist/types/core/tracking/payload-builder.d.ts +5 -3
- package/dist/types/core/tracking/payload-builder.d.ts.map +1 -1
- package/dist/types/core/tracking/usage-tracker.d.ts +4 -2
- package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -1
- package/dist/types/index.d.ts +11 -135
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/function-parameters.d.ts +91 -23
- package/dist/types/types/function-parameters.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +53 -108
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/openai-augmentation.d.ts +4 -138
- package/dist/types/types/openai-augmentation.d.ts.map +1 -1
- package/dist/types/utils/constants.d.ts +7 -1
- package/dist/types/utils/constants.d.ts.map +1 -1
- package/dist/types/utils/error-handler.d.ts +2 -2
- package/dist/types/utils/error-handler.d.ts.map +1 -1
- package/dist/types/utils/metadata-builder.d.ts +2 -2
- package/dist/types/utils/metadata-builder.d.ts.map +1 -1
- package/dist/types/utils/provider-detection.d.ts +3 -3
- package/dist/types/utils/provider-detection.d.ts.map +1 -1
- package/dist/types/utils/trace-fields.d.ts +11 -0
- package/dist/types/utils/trace-fields.d.ts.map +1 -0
- package/examples/README.md +282 -198
- package/examples/azure/basic.ts +62 -0
- package/examples/azure/responses-basic.ts +45 -0
- package/examples/azure/responses-stream.ts +61 -0
- package/examples/azure/stream.ts +56 -0
- package/examples/getting_started.ts +31 -43
- package/examples/openai/basic.ts +45 -0
- package/examples/openai/metadata.ts +67 -0
- package/examples/openai/responses-basic.ts +44 -0
- package/examples/openai/responses-embed.ts +34 -0
- package/examples/openai/responses-streaming.ts +63 -0
- package/examples/openai/streaming.ts +59 -0
- package/package.json +23 -13
- package/dist/cjs/core/wrapper/index.js +0 -15
- package/dist/cjs/core/wrapper/index.js.map +0 -1
- package/dist/cjs/core/wrapper/instance-patcher.js +0 -202
- package/dist/cjs/core/wrapper/instance-patcher.js.map +0 -1
- package/dist/cjs/core/wrapper/request-handler.js +0 -317
- package/dist/cjs/core/wrapper/request-handler.js.map +0 -1
- package/dist/cjs/core/wrapper/stream-wrapper.js +0 -82
- package/dist/cjs/core/wrapper/stream-wrapper.js.map +0 -1
- package/dist/cjs/utils/azure-model-resolver.js +0 -211
- package/dist/cjs/utils/azure-model-resolver.js.map +0 -1
- package/dist/cjs/utils/request-handler-factory.js +0 -185
- package/dist/cjs/utils/request-handler-factory.js.map +0 -1
- package/dist/esm/core/wrapper/index.js +0 -9
- package/dist/esm/core/wrapper/index.js.map +0 -1
- package/dist/esm/core/wrapper/instance-patcher.js +0 -199
- package/dist/esm/core/wrapper/instance-patcher.js.map +0 -1
- package/dist/esm/core/wrapper/request-handler.js +0 -310
- package/dist/esm/core/wrapper/request-handler.js.map +0 -1
- package/dist/esm/core/wrapper/stream-wrapper.js +0 -79
- package/dist/esm/core/wrapper/stream-wrapper.js.map +0 -1
- package/dist/esm/utils/azure-model-resolver.js +0 -204
- package/dist/esm/utils/azure-model-resolver.js.map +0 -1
- package/dist/esm/utils/request-handler-factory.js +0 -146
- package/dist/esm/utils/request-handler-factory.js.map +0 -1
- package/dist/types/core/wrapper/index.d.ts +0 -8
- package/dist/types/core/wrapper/index.d.ts.map +0 -1
- package/dist/types/core/wrapper/instance-patcher.d.ts +0 -33
- package/dist/types/core/wrapper/instance-patcher.d.ts.map +0 -1
- package/dist/types/core/wrapper/request-handler.d.ts +0 -29
- package/dist/types/core/wrapper/request-handler.d.ts.map +0 -1
- package/dist/types/core/wrapper/stream-wrapper.d.ts +0 -13
- package/dist/types/core/wrapper/stream-wrapper.d.ts.map +0 -1
- package/dist/types/utils/azure-model-resolver.d.ts +0 -41
- package/dist/types/utils/azure-model-resolver.d.ts.map +0 -1
- package/dist/types/utils/request-handler-factory.d.ts +0 -81
- package/dist/types/utils/request-handler-factory.d.ts.map +0 -1
- package/examples/azure-basic.ts +0 -206
- package/examples/azure-responses-basic.ts +0 -233
- package/examples/azure-responses-streaming.ts +0 -255
- package/examples/azure-streaming.ts +0 -209
- package/examples/openai-basic.ts +0 -147
- package/examples/openai-function-calling.ts +0 -259
- package/examples/openai-responses-basic.ts +0 -212
- package/examples/openai-responses-streaming.ts +0 -232
- package/examples/openai-streaming.ts +0 -172
- package/examples/openai-vision.ts +0 -289
- package/src/core/config/azure-config.ts +0 -72
- package/src/core/config/index.ts +0 -23
- package/src/core/config/loader.ts +0 -66
- package/src/core/config/manager.ts +0 -95
- package/src/core/config/validator.ts +0 -89
- package/src/core/providers/detector.ts +0 -159
- package/src/core/providers/index.ts +0 -16
- package/src/core/tracking/api-client.ts +0 -78
- package/src/core/tracking/index.ts +0 -21
- package/src/core/tracking/payload-builder.ts +0 -137
- package/src/core/tracking/usage-tracker.ts +0 -189
- package/src/core/wrapper/index.ts +0 -9
- package/src/core/wrapper/instance-patcher.ts +0 -288
- package/src/core/wrapper/request-handler.ts +0 -423
- package/src/core/wrapper/stream-wrapper.ts +0 -100
- package/src/index.ts +0 -360
- package/src/types/function-parameters.ts +0 -251
- package/src/types/index.ts +0 -310
- package/src/types/openai-augmentation.ts +0 -232
- package/src/types/responses-api.ts +0 -308
- package/src/utils/azure-model-resolver.ts +0 -220
- package/src/utils/constants.ts +0 -21
- package/src/utils/error-handler.ts +0 -251
- package/src/utils/metadata-builder.ts +0 -228
- package/src/utils/provider-detection.ts +0 -257
- package/src/utils/request-handler-factory.ts +0 -285
- package/src/utils/stop-reason-mapper.ts +0 -78
- package/src/utils/type-guards.ts +0 -202
- package/src/utils/url-builder.ts +0 -68
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveAzureModelName = resolveAzureModelName;
|
|
4
|
-
exports.clearModelNameCache = clearModelNameCache;
|
|
5
|
-
exports.getModelNameCacheStats = getModelNameCacheStats;
|
|
6
|
-
exports.batchResolveModelNames = batchResolveModelNames;
|
|
7
|
-
exports.wouldTransformDeploymentName = wouldTransformDeploymentName;
|
|
8
|
-
const index_js_1 = require("../core/config/index.js");
|
|
9
|
-
const constants_js_1 = require("./constants.js");
|
|
10
|
-
/**
|
|
11
|
-
* Azure Model Name Resolution Module
|
|
12
|
-
*
|
|
13
|
-
* This module maps Azure deployment names to LiteLLM-compatible model names for accurate pricing.
|
|
14
|
-
* Based on learnings from the Python implementation, it uses heuristic pattern matching
|
|
15
|
-
* with fallback strategies to ensure reliable model name resolution.
|
|
16
|
-
*
|
|
17
|
-
* Key patterns observed in real Azure deployments:
|
|
18
|
-
* - "gpt-4o-2024-11-20" → "gpt-4o"
|
|
19
|
-
* - "text-embedding-3-large" → "text-embedding-3-large" (exact match)
|
|
20
|
-
* - "o4-mini" → "gpt-4o-mini"
|
|
21
|
-
* - "gpt4o-prod" → "gpt-4o"
|
|
22
|
-
* - "gpt-35-turbo-dev" → "gpt-3.5-turbo"
|
|
23
|
-
*/
|
|
24
|
-
/**
|
|
25
|
-
* In-memory cache for resolved model names
|
|
26
|
-
* Using Map for thread-safe operations in Node.js
|
|
27
|
-
*/
|
|
28
|
-
const modelNameCache = new Map();
|
|
29
|
-
/**
|
|
30
|
-
* Cache for failed resolution attempts to avoid repeated warnings
|
|
31
|
-
*/
|
|
32
|
-
const failedResolutionCache = new Set();
|
|
33
|
-
// Global logger
|
|
34
|
-
const logger = (0, index_js_1.getLogger)();
|
|
35
|
-
/**
|
|
36
|
-
* Resolve Azure deployment name to LiteLLM-compatible model name
|
|
37
|
-
*
|
|
38
|
-
* @param deploymentName - Azure deployment name
|
|
39
|
-
* @param useCache - Whether to use cached results (default: true)
|
|
40
|
-
* @returns LiteLLM-compatible model name
|
|
41
|
-
*/
|
|
42
|
-
function resolveAzureModelName(deploymentName, useCache = true) {
|
|
43
|
-
if (!deploymentName) {
|
|
44
|
-
logger.warn('Empty deployment name provided to model resolver');
|
|
45
|
-
return deploymentName;
|
|
46
|
-
}
|
|
47
|
-
// Check cache first
|
|
48
|
-
if (useCache && modelNameCache.has(deploymentName)) {
|
|
49
|
-
const cachedResult = modelNameCache.get(deploymentName);
|
|
50
|
-
logger.debug('Model name resolved from cache', {
|
|
51
|
-
deployment: deploymentName,
|
|
52
|
-
resolved: cachedResult,
|
|
53
|
-
});
|
|
54
|
-
return cachedResult;
|
|
55
|
-
}
|
|
56
|
-
try {
|
|
57
|
-
const resolved = resolveModelNameHeuristic(deploymentName);
|
|
58
|
-
// Cache the result
|
|
59
|
-
if (useCache) {
|
|
60
|
-
modelNameCache.set(deploymentName, resolved);
|
|
61
|
-
}
|
|
62
|
-
// Log successful resolution
|
|
63
|
-
if (resolved !== deploymentName) {
|
|
64
|
-
logger.debug('Model name resolved via heuristics', {
|
|
65
|
-
deployment: deploymentName,
|
|
66
|
-
resolved,
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
return resolved;
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
logger.error('Error during model name resolution', {
|
|
73
|
-
deployment: deploymentName,
|
|
74
|
-
error: error instanceof Error ? error.message : String(error),
|
|
75
|
-
});
|
|
76
|
-
// Fallback to deployment name
|
|
77
|
-
return deploymentName;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Heuristic pattern matching for Azure deployment names
|
|
82
|
-
* Based on real-world patterns observed in the Python implementation
|
|
83
|
-
*
|
|
84
|
-
* @param deploymentName - Azure deployment name
|
|
85
|
-
* @returns LiteLLM-compatible model name
|
|
86
|
-
*/
|
|
87
|
-
function resolveModelNameHeuristic(deploymentName) {
|
|
88
|
-
const nameLower = deploymentName.toLowerCase();
|
|
89
|
-
// GPT-4o family - handle both "gpt-4o" and "o4" patterns
|
|
90
|
-
if (/gpt-?4o/.test(nameLower) || /o4/.test(nameLower)) {
|
|
91
|
-
if (/mini/.test(nameLower))
|
|
92
|
-
return 'gpt-4o-mini';
|
|
93
|
-
return 'gpt-4o';
|
|
94
|
-
}
|
|
95
|
-
// GPT-4 family (non-omni)
|
|
96
|
-
if (/gpt-?4(?!o)/.test(nameLower)) {
|
|
97
|
-
if (/turbo/.test(nameLower))
|
|
98
|
-
return 'gpt-4-turbo';
|
|
99
|
-
if (/vision/.test(nameLower) || /v/.test(nameLower))
|
|
100
|
-
return 'gpt-4-vision-preview';
|
|
101
|
-
return 'gpt-4';
|
|
102
|
-
}
|
|
103
|
-
// GPT-3.5 family
|
|
104
|
-
if (/gpt-?3\.?5/.test(nameLower) || /35-turbo/.test(nameLower) || /gpt-35/.test(nameLower)) {
|
|
105
|
-
if (/instruct/.test(nameLower))
|
|
106
|
-
return 'gpt-3.5-turbo-instruct';
|
|
107
|
-
return 'gpt-3.5-turbo';
|
|
108
|
-
}
|
|
109
|
-
// Embedding models - exact matches work well
|
|
110
|
-
if (/embed/.test(nameLower)) {
|
|
111
|
-
if (/text-embedding-3-large/.test(nameLower))
|
|
112
|
-
return 'text-embedding-3-large';
|
|
113
|
-
if (/text-embedding-3-small/.test(nameLower))
|
|
114
|
-
return 'text-embedding-3-small';
|
|
115
|
-
if (/text-embedding-ada-002/.test(nameLower) || /ada-002/.test(nameLower))
|
|
116
|
-
return 'text-embedding-ada-002';
|
|
117
|
-
if (/3-large/.test(nameLower))
|
|
118
|
-
return 'text-embedding-3-large';
|
|
119
|
-
if (/3-small/.test(nameLower))
|
|
120
|
-
return 'text-embedding-3-small';
|
|
121
|
-
}
|
|
122
|
-
// Ada-002 pattern (can appear without "embed" in deployment name)
|
|
123
|
-
if (/ada-002/.test(nameLower))
|
|
124
|
-
return 'text-embedding-ada-002';
|
|
125
|
-
// DALL-E models
|
|
126
|
-
if (/dall-?e/.test(nameLower)) {
|
|
127
|
-
if (/3/.test(nameLower))
|
|
128
|
-
return 'dall-e-3';
|
|
129
|
-
if (/2/.test(nameLower))
|
|
130
|
-
return 'dall-e-2';
|
|
131
|
-
}
|
|
132
|
-
// Whisper models
|
|
133
|
-
if (/whisper/.test(nameLower))
|
|
134
|
-
return 'whisper-1';
|
|
135
|
-
// TTS models
|
|
136
|
-
if (/tts/.test(nameLower)) {
|
|
137
|
-
if (/hd/.test(nameLower))
|
|
138
|
-
return 'tts-1-hd';
|
|
139
|
-
return 'tts-1';
|
|
140
|
-
}
|
|
141
|
-
if (constants_js_1.knownModels.includes(nameLower))
|
|
142
|
-
return nameLower;
|
|
143
|
-
// No heuristic match found - log warning and use deployment name
|
|
144
|
-
if (!failedResolutionCache.has(deploymentName)) {
|
|
145
|
-
logger.warn(`⚠️ No heuristic match for Azure deployment: ${deploymentName}. Using deployment name for pricing. Consider adding pattern to azure-model-resolver.ts`);
|
|
146
|
-
failedResolutionCache.add(deploymentName);
|
|
147
|
-
}
|
|
148
|
-
return deploymentName;
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Clear the model name cache
|
|
152
|
-
* Useful for testing or when deployment configurations change
|
|
153
|
-
*/
|
|
154
|
-
function clearModelNameCache() {
|
|
155
|
-
modelNameCache.clear();
|
|
156
|
-
failedResolutionCache.clear();
|
|
157
|
-
(0, index_js_1.getLogger)().debug('Model name cache cleared');
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Get cache statistics for monitoring
|
|
161
|
-
*/
|
|
162
|
-
function getModelNameCacheStats() {
|
|
163
|
-
return {
|
|
164
|
-
cacheSize: modelNameCache.size,
|
|
165
|
-
failedResolutionCount: failedResolutionCache.size,
|
|
166
|
-
cacheEntries: Array.from(modelNameCache.entries()).map(([deployment, resolved]) => ({
|
|
167
|
-
deployment,
|
|
168
|
-
resolved,
|
|
169
|
-
})),
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Batch resolve multiple deployment names
|
|
174
|
-
* Useful for pre-warming cache or bulk operations
|
|
175
|
-
*
|
|
176
|
-
* @param deploymentNames - Array of deployment names to resolve
|
|
177
|
-
* @returns Map of deployment name to resolved model name
|
|
178
|
-
*/
|
|
179
|
-
function batchResolveModelNames(deploymentNames) {
|
|
180
|
-
const results = new Map();
|
|
181
|
-
logger.debug('Batch resolving model names', {
|
|
182
|
-
count: deploymentNames.length,
|
|
183
|
-
deployments: deploymentNames,
|
|
184
|
-
});
|
|
185
|
-
for (const deployment of deploymentNames) {
|
|
186
|
-
try {
|
|
187
|
-
const resolved = resolveAzureModelName(deployment);
|
|
188
|
-
results.set(deployment, resolved);
|
|
189
|
-
}
|
|
190
|
-
catch (error) {
|
|
191
|
-
logger.error('Error in batch resolution', {
|
|
192
|
-
deployment,
|
|
193
|
-
error: error instanceof Error ? error.message : String(error),
|
|
194
|
-
});
|
|
195
|
-
results.set(deployment, deployment); // Fallback to original name
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
return results;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Check if a deployment name would be resolved to a different model name
|
|
202
|
-
* Useful for validation and testing
|
|
203
|
-
*
|
|
204
|
-
* @param deploymentName - Azure deployment name
|
|
205
|
-
* @returns true if the deployment name would be transformed
|
|
206
|
-
*/
|
|
207
|
-
function wouldTransformDeploymentName(deploymentName) {
|
|
208
|
-
const resolved = resolveAzureModelName(deploymentName, false); // Don't use cache for this check
|
|
209
|
-
return resolved !== deploymentName;
|
|
210
|
-
}
|
|
211
|
-
//# sourceMappingURL=azure-model-resolver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"azure-model-resolver.js","sourceRoot":"","sources":["../../../src/utils/azure-model-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Request Handler Factory
|
|
4
|
-
*
|
|
5
|
-
* Eliminates dynamic require() calls and provides a clean factory pattern
|
|
6
|
-
* for creating request handlers with proper dependency injection.
|
|
7
|
-
*/
|
|
8
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
-
if (k2 === undefined) k2 = k;
|
|
10
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
-
}
|
|
14
|
-
Object.defineProperty(o, k2, desc);
|
|
15
|
-
}) : (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
o[k2] = m[k];
|
|
18
|
-
}));
|
|
19
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
-
}) : function(o, v) {
|
|
22
|
-
o["default"] = v;
|
|
23
|
-
});
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.requestHandlerFactory = exports.RequestHandlerFactory = void 0;
|
|
43
|
-
exports.initializeRequestHandlerFactory = initializeRequestHandlerFactory;
|
|
44
|
-
exports.ensureFactoryInitialized = ensureFactoryInitialized;
|
|
45
|
-
/**
|
|
46
|
-
* Request handler factory class
|
|
47
|
-
*
|
|
48
|
-
* This eliminates the need for dynamic require() calls and provides
|
|
49
|
-
* a clean dependency injection pattern.
|
|
50
|
-
*/
|
|
51
|
-
class RequestHandlerFactory {
|
|
52
|
-
constructor() {
|
|
53
|
-
this.dependencies = null;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Initialize the factory with dependencies
|
|
57
|
-
*/
|
|
58
|
-
initialize(dependencies) {
|
|
59
|
-
this.dependencies = dependencies;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Get streaming request handler
|
|
63
|
-
*/
|
|
64
|
-
getStreamingHandler() {
|
|
65
|
-
if (!this.dependencies) {
|
|
66
|
-
throw new Error('RequestHandlerFactory not initialized. Call initialize() first.');
|
|
67
|
-
}
|
|
68
|
-
return this.dependencies.handleStreamingRequest;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Get non-streaming request handler
|
|
72
|
-
*/
|
|
73
|
-
getNonStreamingHandler() {
|
|
74
|
-
if (!this.dependencies) {
|
|
75
|
-
throw new Error('RequestHandlerFactory not initialized. Call initialize() first.');
|
|
76
|
-
}
|
|
77
|
-
return this.dependencies.handleNonStreamingRequest;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Get embeddings request handler
|
|
81
|
-
*/
|
|
82
|
-
getEmbeddingsHandler() {
|
|
83
|
-
if (!this.dependencies) {
|
|
84
|
-
throw new Error('RequestHandlerFactory not initialized. Call initialize() first.');
|
|
85
|
-
}
|
|
86
|
-
return this.dependencies.handleEmbeddingsRequest;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Route chat request to appropriate handler
|
|
90
|
-
*/
|
|
91
|
-
routeChatRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance) {
|
|
92
|
-
if (!this.dependencies) {
|
|
93
|
-
throw new Error('RequestHandlerFactory not initialized. Call initialize() first.');
|
|
94
|
-
}
|
|
95
|
-
// Pass clean params (without usageMetadata) to handlers
|
|
96
|
-
// The handlers will receive usageMetadata separately
|
|
97
|
-
if (params.stream) {
|
|
98
|
-
return this.dependencies.handleStreamingRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance);
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
return this.dependencies.handleNonStreamingRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Route embeddings request to appropriate handler
|
|
106
|
-
*/
|
|
107
|
-
routeEmbeddingsRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance) {
|
|
108
|
-
if (!this.dependencies) {
|
|
109
|
-
throw new Error('RequestHandlerFactory not initialized. Call initialize() first.');
|
|
110
|
-
}
|
|
111
|
-
// Pass clean params (without usageMetadata) to handler
|
|
112
|
-
// The handler will receive usageMetadata separately
|
|
113
|
-
return this.dependencies.handleEmbeddingsRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance);
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Route responses request to appropriate handler (new OpenAI Responses API)
|
|
117
|
-
*/
|
|
118
|
-
routeResponsesRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance) {
|
|
119
|
-
if (!this.dependencies) {
|
|
120
|
-
throw new Error('RequestHandlerFactory not initialized. Call initialize() first.');
|
|
121
|
-
}
|
|
122
|
-
// Route to appropriate handler based on streaming
|
|
123
|
-
if (params.stream) {
|
|
124
|
-
return this.dependencies.handleResponsesStreamingRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
return this.dependencies.handleResponsesNonStreamingRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Check if factory is initialized
|
|
132
|
-
*/
|
|
133
|
-
isInitialized() {
|
|
134
|
-
return this.dependencies !== null;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
exports.RequestHandlerFactory = RequestHandlerFactory;
|
|
138
|
-
/**
|
|
139
|
-
* Global factory instance
|
|
140
|
-
*/
|
|
141
|
-
exports.requestHandlerFactory = new RequestHandlerFactory();
|
|
142
|
-
/**
|
|
143
|
-
* Initialize the global factory (called once during module setup)
|
|
144
|
-
* Uses dynamic import to avoid circular dependencies
|
|
145
|
-
*/
|
|
146
|
-
async function initializeRequestHandlerFactory() {
|
|
147
|
-
// Use dynamic import instead of require for better TypeScript support
|
|
148
|
-
const handlerModule = await Promise.resolve().then(() => __importStar(require('../core/wrapper/request-handler.js')));
|
|
149
|
-
exports.requestHandlerFactory.initialize({
|
|
150
|
-
handleStreamingRequest: handlerModule.handleStreamingRequest,
|
|
151
|
-
handleNonStreamingRequest: handlerModule.handleNonStreamingRequest,
|
|
152
|
-
handleEmbeddingsRequest: handlerModule.handleEmbeddingsRequest,
|
|
153
|
-
handleResponsesStreamingRequest: handlerModule.handleResponsesStreamingRequest,
|
|
154
|
-
handleResponsesNonStreamingRequest: handlerModule.handleResponsesNonStreamingRequest,
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
// Promise cache to prevent race conditions during initialization
|
|
158
|
-
let initializationPromise = null;
|
|
159
|
-
/**
|
|
160
|
-
* Utility function to ensure factory is initialized
|
|
161
|
-
*/
|
|
162
|
-
async function ensureFactoryInitialized() {
|
|
163
|
-
if (!exports.requestHandlerFactory.isInitialized()) {
|
|
164
|
-
if (!initializationPromise) {
|
|
165
|
-
initializationPromise = initializeRequestHandlerFactoryAsync();
|
|
166
|
-
}
|
|
167
|
-
await initializationPromise;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Async initialization for ES Module compatibility
|
|
172
|
-
* Uses dynamic import for ES Module compatibility
|
|
173
|
-
*/
|
|
174
|
-
async function initializeRequestHandlerFactoryAsync() {
|
|
175
|
-
// Use dynamic import for ES Module compatibility
|
|
176
|
-
const handlerModule = await Promise.resolve().then(() => __importStar(require('../core/wrapper/request-handler.js')));
|
|
177
|
-
exports.requestHandlerFactory.initialize({
|
|
178
|
-
handleStreamingRequest: handlerModule.handleStreamingRequest,
|
|
179
|
-
handleNonStreamingRequest: handlerModule.handleNonStreamingRequest,
|
|
180
|
-
handleEmbeddingsRequest: handlerModule.handleEmbeddingsRequest,
|
|
181
|
-
handleResponsesStreamingRequest: handlerModule.handleResponsesStreamingRequest,
|
|
182
|
-
handleResponsesNonStreamingRequest: handlerModule.handleResponsesNonStreamingRequest,
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
//# sourceMappingURL=request-handler-factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"request-handler-factory.js","sourceRoot":"","sources":["../../../src/utils/request-handler-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wrapper module - Main exports
|
|
3
|
-
*
|
|
4
|
-
* This module provides a clean interface for OpenAI client wrapping,
|
|
5
|
-
* separating concerns into focused sub-modules.
|
|
6
|
-
*/
|
|
7
|
-
// Re-export all wrapper functionality
|
|
8
|
-
export { patchOpenAI, patchOpenAIInstance, getProviderInfo } from './instance-patcher.js';
|
|
9
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/wrapper/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sCAAsC;AACtC,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Instance Patcher Module
|
|
3
|
-
*
|
|
4
|
-
* Handles patching of OpenAI client instances.
|
|
5
|
-
* Extracted from wrapper.ts for better organization.
|
|
6
|
-
*/
|
|
7
|
-
import { isOpenAIClientInstance } from '../../utils/type-guards.js';
|
|
8
|
-
import { extractMetadata, createLoggingContext } from '../../utils/metadata-builder.js';
|
|
9
|
-
import { requestHandlerFactory, ensureFactoryInitialized, } from '../../utils/request-handler-factory.js';
|
|
10
|
-
import { getLogger, getConfig } from '../config/index.js';
|
|
11
|
-
import { detectProvider } from '../providers/index.js';
|
|
12
|
-
// Import the type augmentations to ensure they're available
|
|
13
|
-
import '../../types/openai-augmentation.js';
|
|
14
|
-
/**
|
|
15
|
-
* Set to track patched instances
|
|
16
|
-
*/
|
|
17
|
-
const patchedInstances = new WeakSet();
|
|
18
|
-
/**
|
|
19
|
-
* WeakMap to store provider information for each client instance
|
|
20
|
-
*/
|
|
21
|
-
const instanceProviders = new WeakMap();
|
|
22
|
-
// Global logger
|
|
23
|
-
const logger = getLogger();
|
|
24
|
-
/**
|
|
25
|
-
* Get provider information for a client instance
|
|
26
|
-
*/
|
|
27
|
-
export function getProviderInfo(instance) {
|
|
28
|
-
return instanceProviders.get(instance);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Simple approach: Only patch instances when users create them
|
|
32
|
-
* No global patching, no dummy keys - just clean instance patching
|
|
33
|
-
*/
|
|
34
|
-
export function patchOpenAI() {
|
|
35
|
-
logger.info('Revenium OpenAI middleware loaded and ready');
|
|
36
|
-
logger.debug('Use patchOpenAIInstance() to patch specific OpenAI instances');
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Manually patch an existing OpenAI instance
|
|
40
|
-
* This is the main function users should call
|
|
41
|
-
*/
|
|
42
|
-
export function patchOpenAIInstance(instance) {
|
|
43
|
-
// Check if middleware is initialized
|
|
44
|
-
const config = getConfig();
|
|
45
|
-
if (!config) {
|
|
46
|
-
logger.warn('Revenium middleware not initialized.');
|
|
47
|
-
logger.warn('Auto-initialization may have failed. Try calling initializeReveniumFromEnv() explicitly.');
|
|
48
|
-
logger.warn('Check that REVENIUM_METERING_API_KEY environment variable is set.');
|
|
49
|
-
logger.warn('OpenAI instance will be patched but tracking may not work without proper configuration.');
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
logger.debug('Revenium middleware is properly configured');
|
|
53
|
-
}
|
|
54
|
-
if (patchedInstances.has(instance)) {
|
|
55
|
-
logger.debug('OpenAI instance already patched, skipping');
|
|
56
|
-
return instance;
|
|
57
|
-
}
|
|
58
|
-
patchInstance(instance);
|
|
59
|
-
logger.debug('OpenAI instance patched successfully');
|
|
60
|
-
return instance;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Patch an individual OpenAI instance
|
|
64
|
-
*/
|
|
65
|
-
function patchInstance(instance) {
|
|
66
|
-
try {
|
|
67
|
-
// Validate instance
|
|
68
|
-
if (!isOpenAIClientInstance(instance)) {
|
|
69
|
-
logger.error('Invalid OpenAI client instance provided to patchInstance');
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
// Detect provider type for this instance
|
|
73
|
-
const providerInfo = detectProvider(instance);
|
|
74
|
-
instanceProviders.set(instance, providerInfo);
|
|
75
|
-
logger.debug('Provider detection completed for instance', {
|
|
76
|
-
provider: providerInfo.provider,
|
|
77
|
-
isAzure: providerInfo.isAzure,
|
|
78
|
-
hasAzureConfig: !!providerInfo.azureConfig,
|
|
79
|
-
});
|
|
80
|
-
// Patch chat completions
|
|
81
|
-
patchChatCompletions(instance);
|
|
82
|
-
// Patch embeddings
|
|
83
|
-
patchEmbeddings(instance);
|
|
84
|
-
// Patch responses API (new OpenAI Responses API)
|
|
85
|
-
patchResponses(instance);
|
|
86
|
-
// Mark as patched
|
|
87
|
-
patchedInstances.add(instance);
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
logger.error('Failed to patch OpenAI instance', {
|
|
91
|
-
error: error instanceof Error ? error.message : String(error),
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Patch chat completions endpoint
|
|
97
|
-
*/
|
|
98
|
-
function patchChatCompletions(instance) {
|
|
99
|
-
if (!instance.chat || !instance.chat.completions || !instance.chat.completions.create) {
|
|
100
|
-
return logger.warn('OpenAI instance missing chat.completions.create, skipping chat patch');
|
|
101
|
-
}
|
|
102
|
-
// Store the original create method
|
|
103
|
-
const originalCreate = instance.chat.completions.create.bind(instance.chat.completions);
|
|
104
|
-
// Replace the create method with our wrapped version
|
|
105
|
-
instance.chat.completions.create = async function (params, options) {
|
|
106
|
-
// Extract metadata using utility
|
|
107
|
-
const { metadata, cleanParams } = extractMetadata(params);
|
|
108
|
-
const typedParams = params;
|
|
109
|
-
logger.debug('OpenAI chat.completions.create intercepted', {
|
|
110
|
-
...createLoggingContext(metadata),
|
|
111
|
-
model: typedParams.model,
|
|
112
|
-
stream: !!typedParams.stream,
|
|
113
|
-
});
|
|
114
|
-
// Record request start time
|
|
115
|
-
const requestStartTime = Date.now();
|
|
116
|
-
// Ensure factory is initialized and route request
|
|
117
|
-
try {
|
|
118
|
-
await ensureFactoryInitialized();
|
|
119
|
-
}
|
|
120
|
-
catch (error) {
|
|
121
|
-
logger.error('Failed to initialize request handler factory', { error });
|
|
122
|
-
throw new Error('Middleware initialization failed - cannot process request');
|
|
123
|
-
}
|
|
124
|
-
return requestHandlerFactory.routeChatRequest(originalCreate, cleanParams, options, metadata, requestStartTime, instance);
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Patch embeddings endpoint
|
|
129
|
-
*/
|
|
130
|
-
function patchEmbeddings(instance) {
|
|
131
|
-
if (!instance.embeddings || !instance.embeddings.create) {
|
|
132
|
-
return logger.warn('OpenAI instance missing embeddings.create, skipping embeddings patch');
|
|
133
|
-
}
|
|
134
|
-
// Store the original embeddings create method
|
|
135
|
-
const originalEmbeddingsCreate = instance.embeddings.create.bind(instance.embeddings);
|
|
136
|
-
// Replace the embeddings create method with our wrapped version
|
|
137
|
-
instance.embeddings.create = async function (params, options) {
|
|
138
|
-
// Extract metadata using utility
|
|
139
|
-
const { metadata, cleanParams } = extractMetadata(params);
|
|
140
|
-
const typedParams = params;
|
|
141
|
-
logger.debug('OpenAI embeddings.create intercepted', {
|
|
142
|
-
...createLoggingContext(metadata),
|
|
143
|
-
model: typedParams.model,
|
|
144
|
-
inputType: typeof typedParams.input,
|
|
145
|
-
});
|
|
146
|
-
// Record request start time
|
|
147
|
-
const requestStartTime = Date.now();
|
|
148
|
-
// Ensure factory is initialized and route request
|
|
149
|
-
try {
|
|
150
|
-
await ensureFactoryInitialized();
|
|
151
|
-
}
|
|
152
|
-
catch (error) {
|
|
153
|
-
logger.error('Failed to initialize request handler factory', { error });
|
|
154
|
-
throw new Error('Middleware initialization failed - cannot process request');
|
|
155
|
-
}
|
|
156
|
-
return requestHandlerFactory.routeEmbeddingsRequest(originalEmbeddingsCreate, cleanParams, options, metadata, requestStartTime, instance);
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Patch responses endpoint (new OpenAI Responses API)
|
|
161
|
-
*/
|
|
162
|
-
function patchResponses(instance) {
|
|
163
|
-
// Type assertion for new Responses API (not yet in OpenAI types)
|
|
164
|
-
const responsesAPI = instance;
|
|
165
|
-
// Check if the instance has the responses API (it's a newer feature)
|
|
166
|
-
if (!responsesAPI.responses || !responsesAPI.responses.create) {
|
|
167
|
-
logger.debug('OpenAI instance missing responses.create, skipping responses patch (this is normal for older SDK versions)');
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
// Store the original responses create method
|
|
171
|
-
const originalResponsesCreate = responsesAPI.responses.create.bind(responsesAPI.responses);
|
|
172
|
-
// Replace the responses create method with our wrapped version
|
|
173
|
-
responsesAPI.responses.create = async function (params, options) {
|
|
174
|
-
// Extract metadata using utility (similar to chat completions)
|
|
175
|
-
const { metadata, cleanParams } = extractMetadata(params);
|
|
176
|
-
logger.debug('OpenAI responses.create intercepted', {
|
|
177
|
-
...createLoggingContext(metadata),
|
|
178
|
-
model: params.model,
|
|
179
|
-
stream: !!params.stream,
|
|
180
|
-
inputType: typeof params.input,
|
|
181
|
-
});
|
|
182
|
-
// Record request start time
|
|
183
|
-
const requestStartTime = Date.now();
|
|
184
|
-
// Ensure factory is initialized and route request
|
|
185
|
-
try {
|
|
186
|
-
await ensureFactoryInitialized();
|
|
187
|
-
}
|
|
188
|
-
catch (error) {
|
|
189
|
-
logger.error('Failed to initialize request handler factory', { error });
|
|
190
|
-
throw new Error('Middleware initialization failed - cannot process request');
|
|
191
|
-
}
|
|
192
|
-
return requestHandlerFactory.routeResponsesRequest(originalResponsesCreate, cleanParams, options, metadata, requestStartTime, instance);
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Export instance providers for request handlers
|
|
197
|
-
*/
|
|
198
|
-
export { instanceProviders };
|
|
199
|
-
//# sourceMappingURL=instance-patcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"instance-patcher.js","sourceRoot":"","sources":["../../../../src/core/wrapper/instance-patcher.ts"],"names":[],"mappings":"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"}
|