@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
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* High-level tracking functions that combine payload building and API communication.
|
|
5
5
|
* Extracted from tracking.ts for better organization.
|
|
6
6
|
*/
|
|
7
|
-
import { getLogger } from
|
|
8
|
-
import { sendToRevenium } from
|
|
9
|
-
import { buildPayload } from
|
|
10
|
-
import { safeAsyncOperation } from
|
|
7
|
+
import { getLogger } from "../config";
|
|
8
|
+
import { sendToRevenium } from "./api-client.js";
|
|
9
|
+
import { buildPayload } from "./payload-builder.js";
|
|
10
|
+
import { safeAsyncOperation } from "../../utils/error-handler.js";
|
|
11
11
|
// Global logger
|
|
12
12
|
const logger = getLogger();
|
|
13
13
|
/**
|
|
@@ -15,12 +15,12 @@ const logger = getLogger();
|
|
|
15
15
|
*/
|
|
16
16
|
export async function sendReveniumMetrics(response, request, startTime, duration, providerInfo) {
|
|
17
17
|
await safeAsyncOperation(async () => {
|
|
18
|
-
const payload = buildPayload(
|
|
18
|
+
const payload = buildPayload("CHAT", response, request, startTime, duration, providerInfo);
|
|
19
19
|
await sendToRevenium(payload);
|
|
20
|
-
},
|
|
20
|
+
}, "Chat completion tracking", {
|
|
21
21
|
logError: true,
|
|
22
22
|
rethrow: false, // Don't rethrow to maintain fire-and-forget behavior
|
|
23
|
-
messagePrefix:
|
|
23
|
+
messagePrefix: "Chat completion tracking failed: ",
|
|
24
24
|
}, logger);
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
@@ -28,12 +28,12 @@ export async function sendReveniumMetrics(response, request, startTime, duration
|
|
|
28
28
|
*/
|
|
29
29
|
export async function sendReveniumEmbeddingsMetrics(response, request, startTime, duration, providerInfo) {
|
|
30
30
|
await safeAsyncOperation(async () => {
|
|
31
|
-
const payload = buildPayload(
|
|
31
|
+
const payload = buildPayload("EMBED", response, request, startTime, duration, providerInfo);
|
|
32
32
|
await sendToRevenium(payload);
|
|
33
|
-
},
|
|
33
|
+
}, "Embeddings tracking", {
|
|
34
34
|
logError: true,
|
|
35
35
|
rethrow: false, // Don't rethrow to maintain fire-and-forget behavior
|
|
36
|
-
messagePrefix:
|
|
36
|
+
messagePrefix: "Embeddings tracking failed: ",
|
|
37
37
|
}, logger);
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
@@ -47,8 +47,12 @@ export function trackUsageAsync(trackingData) {
|
|
|
47
47
|
prompt_tokens: trackingData.promptTokens,
|
|
48
48
|
completion_tokens: trackingData.completionTokens,
|
|
49
49
|
total_tokens: trackingData.totalTokens,
|
|
50
|
-
...(trackingData.reasoningTokens && {
|
|
51
|
-
|
|
50
|
+
...(trackingData.reasoningTokens && {
|
|
51
|
+
reasoning_tokens: trackingData.reasoningTokens,
|
|
52
|
+
}),
|
|
53
|
+
...(trackingData.cachedTokens && {
|
|
54
|
+
cached_tokens: trackingData.cachedTokens,
|
|
55
|
+
}),
|
|
52
56
|
},
|
|
53
57
|
choices: [
|
|
54
58
|
{
|
|
@@ -65,15 +69,15 @@ export function trackUsageAsync(trackingData) {
|
|
|
65
69
|
const startTime = Date.now() - trackingData.duration;
|
|
66
70
|
sendReveniumMetrics(mockResponse, mockRequest, startTime, trackingData.duration, trackingData.providerInfo)
|
|
67
71
|
.then(() => {
|
|
68
|
-
logger.debug(
|
|
72
|
+
logger.debug("Usage tracking completed successfully", {
|
|
69
73
|
requestId: trackingData.requestId,
|
|
70
74
|
model: trackingData.model,
|
|
71
75
|
totalTokens: trackingData.totalTokens,
|
|
72
76
|
isStreamed: trackingData.isStreamed,
|
|
73
77
|
});
|
|
74
78
|
})
|
|
75
|
-
.catch(error => {
|
|
76
|
-
logger.warn(
|
|
79
|
+
.catch((error) => {
|
|
80
|
+
logger.warn("Usage tracking failed", {
|
|
77
81
|
error: error instanceof Error ? error.message : String(error),
|
|
78
82
|
requestId: trackingData.requestId,
|
|
79
83
|
model: trackingData.model,
|
|
@@ -91,21 +95,75 @@ export function trackEmbeddingsUsageAsync(trackingData) {
|
|
|
91
95
|
total_tokens: trackingData.totalTokens,
|
|
92
96
|
},
|
|
93
97
|
data: [], // Mock empty data array for type compliance
|
|
94
|
-
object:
|
|
98
|
+
object: "list",
|
|
95
99
|
};
|
|
96
100
|
const mockRequest = {
|
|
97
101
|
model: trackingData.model,
|
|
98
|
-
input:
|
|
102
|
+
input: "", // Mock empty input for type compliance
|
|
99
103
|
usageMetadata: trackingData.usageMetadata,
|
|
100
104
|
};
|
|
101
105
|
sendReveniumEmbeddingsMetrics(mockResponse, mockRequest, trackingData.requestStartTime, trackingData.duration, trackingData.providerInfo)
|
|
102
106
|
.then(() => {
|
|
103
|
-
logger.debug(
|
|
107
|
+
logger.debug("Embeddings tracking completed successfully", {
|
|
104
108
|
transactionId: trackingData.transactionId,
|
|
105
109
|
});
|
|
106
110
|
})
|
|
107
|
-
.catch(error => {
|
|
108
|
-
logger.warn(
|
|
111
|
+
.catch((error) => {
|
|
112
|
+
logger.warn("Embeddings tracking failed", {
|
|
113
|
+
error: error instanceof Error ? error.message : String(error),
|
|
114
|
+
transactionId: trackingData.transactionId,
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
export async function trackImageUsageAsync(operationSubtype, response, request, startTime, duration, config, providerInfo, metadata) {
|
|
119
|
+
const trackingData = {
|
|
120
|
+
transactionId: `image-${operationSubtype}-${Date.now()}`,
|
|
121
|
+
operationSubtype,
|
|
122
|
+
model: request.model || "dall-e-2",
|
|
123
|
+
startTime,
|
|
124
|
+
duration,
|
|
125
|
+
};
|
|
126
|
+
logger.debug("Starting image tracking", trackingData);
|
|
127
|
+
Promise.resolve()
|
|
128
|
+
.then(async () => {
|
|
129
|
+
const { buildImagePayload } = await import("./payload-builder.js");
|
|
130
|
+
const payload = buildImagePayload(operationSubtype, response, request, startTime, duration, providerInfo, metadata);
|
|
131
|
+
await sendToRevenium(payload);
|
|
132
|
+
})
|
|
133
|
+
.then(() => {
|
|
134
|
+
logger.debug("Image tracking completed successfully", {
|
|
135
|
+
transactionId: trackingData.transactionId,
|
|
136
|
+
});
|
|
137
|
+
})
|
|
138
|
+
.catch((error) => {
|
|
139
|
+
logger.warn("Image tracking failed", {
|
|
140
|
+
error: error instanceof Error ? error.message : String(error),
|
|
141
|
+
transactionId: trackingData.transactionId,
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
export async function trackAudioUsageAsync(operationSubtype, response, request, startTime, duration, config, providerInfo, metadata) {
|
|
146
|
+
const trackingData = {
|
|
147
|
+
transactionId: `audio-${operationSubtype}-${Date.now()}`,
|
|
148
|
+
operationSubtype,
|
|
149
|
+
model: request.model || "whisper-1",
|
|
150
|
+
startTime,
|
|
151
|
+
duration,
|
|
152
|
+
};
|
|
153
|
+
logger.debug("Starting audio tracking", trackingData);
|
|
154
|
+
Promise.resolve()
|
|
155
|
+
.then(async () => {
|
|
156
|
+
const { buildAudioPayload } = await import("./payload-builder.js");
|
|
157
|
+
const payload = buildAudioPayload(operationSubtype, response, request, startTime, duration, providerInfo, metadata);
|
|
158
|
+
await sendToRevenium(payload);
|
|
159
|
+
})
|
|
160
|
+
.then(() => {
|
|
161
|
+
logger.debug("Audio tracking completed successfully", {
|
|
162
|
+
transactionId: trackingData.transactionId,
|
|
163
|
+
});
|
|
164
|
+
})
|
|
165
|
+
.catch((error) => {
|
|
166
|
+
logger.warn("Audio tracking failed", {
|
|
109
167
|
error: error instanceof Error ? error.message : String(error),
|
|
110
168
|
transactionId: trackingData.transactionId,
|
|
111
169
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../../../src/core/tracking/usage-tracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../../../src/core/tracking/usage-tracker.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -2,194 +2,26 @@
|
|
|
2
2
|
* Revenium OpenAI Middleware for TypeScript
|
|
3
3
|
*
|
|
4
4
|
* This middleware tracks OpenAI usage and sends metrics to Revenium.
|
|
5
|
-
* Uses hybrid initialization: auto-initializes on import with graceful fallback to manual init.
|
|
6
|
-
*
|
|
7
|
-
* Environment Variables:
|
|
8
|
-
* REVENIUM_METERING_API_KEY=hak_your_api_key
|
|
9
|
-
* REVENIUM_METERING_BASE_URL=https://api.revenium.ai (optional)
|
|
10
|
-
* OPENAI_API_KEY=sk_your_openai_key
|
|
11
|
-
*
|
|
12
|
-
* Simple Usage (auto-initialization):
|
|
13
|
-
* import { patchOpenAIInstance } from '@revenium/openai';
|
|
14
|
-
* import OpenAI from 'openai';
|
|
15
|
-
*
|
|
16
|
-
* const openai = patchOpenAIInstance(new OpenAI());
|
|
17
|
-
* // Auto-initializes from environment variables
|
|
18
|
-
*
|
|
19
|
-
* Advanced Usage (explicit initialization):
|
|
20
|
-
* import { initializeReveniumFromEnv, patchOpenAIInstance } from '@revenium/openai';
|
|
21
|
-
* import OpenAI from 'openai';
|
|
22
|
-
*
|
|
23
|
-
* const result = initializeReveniumFromEnv();
|
|
24
|
-
* if (!result.success) {
|
|
25
|
-
* throw new Error(result.message);
|
|
26
|
-
* }
|
|
27
|
-
* const openai = patchOpenAIInstance(new OpenAI());
|
|
28
|
-
*
|
|
29
|
-
* const response = await openai.chat.completions.create({
|
|
30
|
-
* model: 'gpt-4',
|
|
31
|
-
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
32
|
-
* usageMetadata: {
|
|
33
|
-
* subscriber: {
|
|
34
|
-
* id: 'user-123',
|
|
35
|
-
* email: 'user@my-org.com'
|
|
36
|
-
* },
|
|
37
|
-
* organizationId: 'my-org',
|
|
38
|
-
* productId: 'my-app'
|
|
39
|
-
* }
|
|
40
|
-
* });
|
|
41
5
|
*/
|
|
42
6
|
// Import type augmentations to extend OpenAI types with usageMetadata
|
|
43
|
-
import
|
|
44
|
-
// Import from new modular structure
|
|
45
|
-
import { setConfig, validateConfig, initializeConfig, getConfig, getLogger, } from './core/config/index.js';
|
|
46
|
-
import { patchOpenAI } from './core/wrapper/index.js';
|
|
47
|
-
// Track initialization state
|
|
48
|
-
let isInitialized = false;
|
|
49
|
-
let autoInitAttempted = false;
|
|
7
|
+
import "./types/openai-augmentation.js";
|
|
50
8
|
// Note: ExtendedChatCompletionCreateParams and ExtendedEmbeddingCreateParams are no longer exported
|
|
51
9
|
// as they have been replaced with seamless TypeScript module augmentation. The usageMetadata field
|
|
52
10
|
// is now natively available on OpenAI's types without requiring additional imports.
|
|
53
|
-
// Export tracking functions
|
|
54
|
-
export { trackUsageAsync, trackEmbeddingsUsageAsync } from './core/tracking/index.js';
|
|
55
|
-
// Export provider detection functions
|
|
56
|
-
export { detectProvider, hasAzureConfig, validateAzureConfig, getProviderMetadata, } from './core/providers/index.js';
|
|
57
|
-
export { getProviderInfo } from './core/wrapper/index.js';
|
|
58
|
-
// Export Azure model resolution functions
|
|
59
|
-
export { resolveAzureModelName, clearModelNameCache, getModelNameCacheStats, batchResolveModelNames, wouldTransformDeploymentName, } from './utils/azure-model-resolver.js';
|
|
60
|
-
// Global logger
|
|
61
|
-
const logger = getLogger();
|
|
62
|
-
/**
|
|
63
|
-
* Initialize Revenium middleware with configuration
|
|
64
|
-
*/
|
|
65
|
-
export function initializeRevenium(config) {
|
|
66
|
-
// Check if already initialized to prevent duplicate initialization
|
|
67
|
-
if (isInitialized) {
|
|
68
|
-
return {
|
|
69
|
-
success: true,
|
|
70
|
-
message: 'Revenium middleware already initialized',
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
try {
|
|
74
|
-
// Apply default base URL if not provided
|
|
75
|
-
const configWithDefaults = {
|
|
76
|
-
...config,
|
|
77
|
-
reveniumBaseUrl: config.reveniumBaseUrl || 'https://api.revenium.ai',
|
|
78
|
-
};
|
|
79
|
-
validateConfig(configWithDefaults);
|
|
80
|
-
setConfig(configWithDefaults);
|
|
81
|
-
// Mark as initialized
|
|
82
|
-
isInitialized = true;
|
|
83
|
-
// Patch OpenAI prototype methods
|
|
84
|
-
patchOpenAI();
|
|
85
|
-
return {
|
|
86
|
-
success: true,
|
|
87
|
-
message: 'Revenium middleware initialized successfully',
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
isInitialized = false;
|
|
92
|
-
return {
|
|
93
|
-
success: false,
|
|
94
|
-
message: error instanceof Error ? error.message : 'Unknown initialization error',
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Configure Revenium middleware manually
|
|
100
|
-
* Alias for initializeRevenium() with a more intuitive name
|
|
101
|
-
*
|
|
102
|
-
* @param config - Revenium configuration object
|
|
103
|
-
* @returns Initialization result with success status and message
|
|
104
|
-
*
|
|
105
|
-
* @example
|
|
106
|
-
* ```typescript
|
|
107
|
-
* import { configure } from '@revenium/openai';
|
|
108
|
-
*
|
|
109
|
-
* configure({
|
|
110
|
-
* reveniumApiKey: 'hak_your_api_key',
|
|
111
|
-
* reveniumBaseUrl: 'https://api.revenium.ai',
|
|
112
|
-
* });
|
|
113
|
-
* ```
|
|
114
|
-
*/
|
|
115
|
-
export function configure(config) {
|
|
116
|
-
return initializeRevenium(config);
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Initialize Revenium middleware from environment variables
|
|
120
|
-
*/
|
|
121
|
-
export function initializeReveniumFromEnv() {
|
|
122
|
-
// Check if already initialized to prevent duplicate initialization
|
|
123
|
-
if (isInitialized) {
|
|
124
|
-
return {
|
|
125
|
-
success: true,
|
|
126
|
-
message: 'Revenium middleware already initialized',
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
const envSuccess = initializeConfig();
|
|
130
|
-
if (!envSuccess) {
|
|
131
|
-
isInitialized = false;
|
|
132
|
-
return {
|
|
133
|
-
success: false,
|
|
134
|
-
message: 'Failed to load configuration from environment variables. Check REVENIUM_METERING_API_KEY and REVENIUM_METERING_BASE_URL.',
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
// Mark as initialized
|
|
138
|
-
isInitialized = true;
|
|
139
|
-
// Patch OpenAI prototype methods
|
|
140
|
-
patchOpenAI();
|
|
141
|
-
return {
|
|
142
|
-
success: true,
|
|
143
|
-
message: 'Revenium middleware initialized from environment',
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
11
|
/**
|
|
147
|
-
*
|
|
12
|
+
* Main API
|
|
148
13
|
*/
|
|
149
|
-
export {
|
|
14
|
+
export { Initialize, GetClient, IsInitialized, Reset, Configure, } from "./core/client";
|
|
150
15
|
/**
|
|
151
|
-
*
|
|
152
|
-
* Attempts to initialize from environment variables on module load.
|
|
153
|
-
* If it fails, logs a debug message but doesn't throw - allows manual configuration later.
|
|
16
|
+
* Middleware classes
|
|
154
17
|
*/
|
|
155
|
-
|
|
156
|
-
if (autoInitAttempted || isInitialized)
|
|
157
|
-
return;
|
|
158
|
-
autoInitAttempted = true;
|
|
159
|
-
try {
|
|
160
|
-
const result = initializeReveniumFromEnv();
|
|
161
|
-
if (result.success) {
|
|
162
|
-
// Auto-init succeeded - log debug message
|
|
163
|
-
logger.debug('Revenium middleware auto-initialized from environment variables');
|
|
164
|
-
}
|
|
165
|
-
else {
|
|
166
|
-
// Auto-init failed - log debug message but don't throw
|
|
167
|
-
logger.debug('Auto-initialization failed, manual initialization required:', result.message);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
catch (error) {
|
|
171
|
-
// Unexpected error during auto-init - log but don't throw
|
|
172
|
-
logger.debug('Auto-initialization encountered error:', error instanceof Error ? error.message : String(error));
|
|
173
|
-
}
|
|
174
|
-
}
|
|
18
|
+
export { ReveniumOpenAI, ChatInterface, CompletionsInterface, EmbeddingsInterface, ResponsesInterface, StreamingWrapper, ImagesInterface, AudioTranscriptionsInterface, AudioTranslationsInterface, AudioSpeechInterface, } from "./core/middleware";
|
|
175
19
|
/**
|
|
176
|
-
*
|
|
20
|
+
* Tracking functions (for advanced use cases)
|
|
177
21
|
*/
|
|
178
|
-
export
|
|
179
|
-
return isInitialized;
|
|
180
|
-
}
|
|
22
|
+
export { trackUsageAsync, trackEmbeddingsUsageAsync, trackImageUsageAsync, trackAudioUsageAsync, } from "./core/tracking";
|
|
181
23
|
/**
|
|
182
|
-
*
|
|
24
|
+
* Provider detection functions
|
|
183
25
|
*/
|
|
184
|
-
export
|
|
185
|
-
const config = getConfig();
|
|
186
|
-
return {
|
|
187
|
-
initialized: isInitialized,
|
|
188
|
-
hasConfig: !!config,
|
|
189
|
-
hasApiKey: !!config?.reveniumApiKey,
|
|
190
|
-
autoInitAttempted,
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
// Perform auto-initialization when module is imported
|
|
194
|
-
attemptAutoInitialization();
|
|
26
|
+
export { detectProvider, hasAzureConfig, validateAzureConfig, getProviderMetadata, } from "./core/providers";
|
|
195
27
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,sEAAsE;AACtE,OAAO,gCAAgC,CAAC;AA8DxC,oGAAoG;AACpG,mGAAmG;AACnG,oFAAoF;AAEpF;;GAEG;AACH,OAAO,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,KAAK,EACL,SAAS,GACV,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,OAAO,EACL,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,4BAA4B,EAC5B,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
|
package/dist/esm/types/index.js
CHANGED
|
@@ -5,22 +5,14 @@
|
|
|
5
5
|
* This module exports all core types used throughout the application.
|
|
6
6
|
*/
|
|
7
7
|
// Re-export function parameter types
|
|
8
|
-
export * from
|
|
8
|
+
export * from "./function-parameters.js";
|
|
9
9
|
// Re-export Responses API types
|
|
10
|
-
export * from
|
|
10
|
+
export * from "./responses-api.js";
|
|
11
11
|
/**
|
|
12
12
|
* Supported AI providers
|
|
13
13
|
*
|
|
14
14
|
* Enumeration of AI providers supported by the Revenium middleware.
|
|
15
15
|
* Used for automatic detection, routing, and provider-specific handling.
|
|
16
|
-
*
|
|
17
|
-
* @public
|
|
18
|
-
* @example
|
|
19
|
-
* ```typescript
|
|
20
|
-
* if (providerInfo.provider === Provider.AZURE_OPENAI) {
|
|
21
|
-
* console.log('Using Azure OpenAI');
|
|
22
|
-
* }
|
|
23
|
-
* ```
|
|
24
16
|
*/
|
|
25
17
|
export var Provider;
|
|
26
18
|
(function (Provider) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qCAAqC;AACrC,cAAc,0BAA0B,CAAC;AAEzC,gCAAgC;AAChC,cAAc,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qCAAqC;AACrC,cAAc,0BAA0B,CAAC;AAEzC,gCAAgC;AAChC,cAAc,oBAAoB,CAAC;AAiFnC;;;;;GAKG;AACH,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,0BAA0B;IAC1B,6BAAiB,CAAA;IACjB,2BAA2B;IAC3B,yCAA6B,CAAA;AAC/B,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB"}
|
|
@@ -1,54 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* TypeScript module augmentation for OpenAI SDK
|
|
3
|
-
*
|
|
4
|
-
* This file extends OpenAI's existing types to include the usageMetadata field
|
|
5
|
-
* through TypeScript's declaration merging feature. This provides seamless
|
|
6
|
-
* integration with the OpenAI SDK, allowing developers to use usageMetadata
|
|
7
|
-
* directly in OpenAI API calls without type casting or additional imports.
|
|
8
|
-
*
|
|
9
|
-
* The augmentation covers all major OpenAI API endpoints including:
|
|
10
|
-
* - Chat completions (streaming and non-streaming)
|
|
11
|
-
* - Embeddings
|
|
12
|
-
* - Future API endpoints as they become available
|
|
13
|
-
*
|
|
14
|
-
* @fileoverview OpenAI SDK type augmentation for Revenium middleware
|
|
15
|
-
* @author Revenium
|
|
16
|
-
* @since 1.0.0
|
|
17
|
-
*
|
|
18
|
-
* @example Basic usage with chat completions
|
|
19
|
-
* ```typescript
|
|
20
|
-
* import '@revenium/openai';
|
|
21
|
-
* import OpenAI from 'openai';
|
|
22
|
-
*
|
|
23
|
-
* const openai = new OpenAI();
|
|
24
|
-
*
|
|
25
|
-
* const response = await openai.chat.completions.create({
|
|
26
|
-
* model: 'gpt-4o-mini',
|
|
27
|
-
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
28
|
-
* usageMetadata: { // TypeScript recognizes this natively
|
|
29
|
-
* subscriber: {
|
|
30
|
-
* id: 'user-123',
|
|
31
|
-
* email: 'user@my-company.com'
|
|
32
|
-
* },
|
|
33
|
-
* organizationId: 'my-company',
|
|
34
|
-
* productId: 'chat-app',
|
|
35
|
-
* taskType: 'customer-support'
|
|
36
|
-
* }
|
|
37
|
-
* });
|
|
38
|
-
* ```
|
|
39
|
-
*
|
|
40
|
-
* @example Usage with embeddings
|
|
41
|
-
* ```typescript
|
|
42
|
-
* const embedding = await openai.embeddings.create({
|
|
43
|
-
* model: 'text-embedding-ada-002',
|
|
44
|
-
* input: 'Text to embed',
|
|
45
|
-
* usageMetadata: {
|
|
46
|
-
* subscriber: { id: 'user-456' },
|
|
47
|
-
* productId: 'search-engine',
|
|
48
|
-
* taskType: 'document-indexing'
|
|
49
|
-
* }
|
|
50
|
-
* });
|
|
51
|
-
* ```
|
|
52
3
|
*/
|
|
53
4
|
export {};
|
|
54
5
|
//# sourceMappingURL=openai-augmentation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-augmentation.js","sourceRoot":"","sources":["../../../src/types/openai-augmentation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"openai-augmentation.js","sourceRoot":"","sources":["../../../src/types/openai-augmentation.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
'gpt-3.5-turbo',
|
|
9
|
-
'gpt-3.5-turbo-instruct',
|
|
10
|
-
'text-embedding-3-large',
|
|
11
|
-
'text-embedding-3-small',
|
|
12
|
-
'text-embedding-ada-002',
|
|
13
|
-
'dall-e-3',
|
|
14
|
-
'dall-e-2',
|
|
15
|
-
'whisper-1',
|
|
16
|
-
'tts-1',
|
|
17
|
-
'tts-1-hd'
|
|
1
|
+
/**
|
|
2
|
+
* Error message patterns for network-related errors
|
|
3
|
+
*/
|
|
4
|
+
export const MESSAGE_PATTERNS_TYPE_NETWORK = [
|
|
5
|
+
"network",
|
|
6
|
+
"timeout",
|
|
7
|
+
"ECONNRESET",
|
|
18
8
|
];
|
|
19
|
-
|
|
20
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Error message patterns for configuration-related errors
|
|
11
|
+
*/
|
|
12
|
+
export const ERROR_MESSAGE_PATTERNS_TYPE_CONFIG = [
|
|
13
|
+
"config",
|
|
14
|
+
"key",
|
|
15
|
+
"unauthorized",
|
|
16
|
+
];
|
|
17
|
+
export const DEFAULT_REVENIUM_BASE_URL = "https://api.revenium.ai";
|
|
21
18
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,SAAS;IACT,SAAS;IACT,YAAY;CACb,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD,QAAQ;IACR,KAAK;IACL,cAAc;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,yBAAyB,CAAC"}
|
|
@@ -4,16 +4,16 @@
|
|
|
4
4
|
* Centralized error handling patterns to eliminate repetitive try/catch blocks
|
|
5
5
|
* and provide consistent error logging and recovery strategies.
|
|
6
6
|
*/
|
|
7
|
-
import { ERROR_MESSAGE_PATTERNS_TYPE_CONFIG, MESSAGE_PATTERNS_TYPE_NETWORK } from
|
|
7
|
+
import { ERROR_MESSAGE_PATTERNS_TYPE_CONFIG, MESSAGE_PATTERNS_TYPE_NETWORK, } from "./constants.js";
|
|
8
8
|
/**
|
|
9
9
|
* Default error handling strategy
|
|
10
10
|
*/
|
|
11
11
|
const DEFAULT_STRATEGY = {
|
|
12
12
|
logError: true,
|
|
13
13
|
rethrow: true,
|
|
14
|
-
messagePrefix:
|
|
14
|
+
messagePrefix: "",
|
|
15
15
|
fallbackValue: undefined,
|
|
16
|
-
transformError: (error) =>
|
|
16
|
+
transformError: (error) => error instanceof Error ? error : new Error(String(error)),
|
|
17
17
|
};
|
|
18
18
|
/**
|
|
19
19
|
* Safe async operation wrapper with comprehensive error handling
|
|
@@ -126,7 +126,7 @@ export async function withRetry(operation, maxRetries = 3, delayMs = 1000, logge
|
|
|
126
126
|
nextRetryIn: delayMs,
|
|
127
127
|
});
|
|
128
128
|
}
|
|
129
|
-
await new Promise(resolve => setTimeout(resolve, delayMs));
|
|
129
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
// eslint-disable-next-line no-throw-literal
|
|
@@ -139,21 +139,21 @@ export class ValidationError extends Error {
|
|
|
139
139
|
constructor(message, context) {
|
|
140
140
|
super(message);
|
|
141
141
|
this.context = context;
|
|
142
|
-
this.name =
|
|
142
|
+
this.name = "ValidationError";
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
export class ConfigurationError extends Error {
|
|
146
146
|
constructor(message, context) {
|
|
147
147
|
super(message);
|
|
148
148
|
this.context = context;
|
|
149
|
-
this.name =
|
|
149
|
+
this.name = "ConfigurationError";
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
export class NetworkError extends Error {
|
|
153
153
|
constructor(message, context) {
|
|
154
154
|
super(message);
|
|
155
155
|
this.context = context;
|
|
156
|
-
this.name =
|
|
156
|
+
this.name = "NetworkError";
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
159
|
/**
|
|
@@ -161,22 +161,26 @@ export class NetworkError extends Error {
|
|
|
161
161
|
*/
|
|
162
162
|
export function classifyError(error) {
|
|
163
163
|
if (error instanceof ValidationError) {
|
|
164
|
-
return { type:
|
|
164
|
+
return { type: "validation", message: error.message, isRetryable: false };
|
|
165
165
|
}
|
|
166
166
|
if (error instanceof ConfigurationError) {
|
|
167
|
-
return {
|
|
167
|
+
return {
|
|
168
|
+
type: "configuration",
|
|
169
|
+
message: error.message,
|
|
170
|
+
isRetryable: false,
|
|
171
|
+
};
|
|
168
172
|
}
|
|
169
173
|
if (error instanceof NetworkError) {
|
|
170
|
-
return { type:
|
|
174
|
+
return { type: "network", message: error.message, isRetryable: true };
|
|
171
175
|
}
|
|
172
176
|
const message = error instanceof Error ? error.message : String(error);
|
|
173
177
|
// Classify based on message patterns
|
|
174
|
-
if (MESSAGE_PATTERNS_TYPE_NETWORK.some(pattern => message.includes(pattern))) {
|
|
175
|
-
return { type:
|
|
178
|
+
if (MESSAGE_PATTERNS_TYPE_NETWORK.some((pattern) => message.includes(pattern))) {
|
|
179
|
+
return { type: "network", message, isRetryable: true };
|
|
176
180
|
}
|
|
177
|
-
if (ERROR_MESSAGE_PATTERNS_TYPE_CONFIG.some(pattern => message.includes(pattern))) {
|
|
178
|
-
return { type:
|
|
181
|
+
if (ERROR_MESSAGE_PATTERNS_TYPE_CONFIG.some((pattern) => message.includes(pattern))) {
|
|
182
|
+
return { type: "configuration", message, isRetryable: false };
|
|
179
183
|
}
|
|
180
|
-
return { type:
|
|
184
|
+
return { type: "unknown", message, isRetryable: false };
|
|
181
185
|
}
|
|
182
186
|
//# sourceMappingURL=error-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../src/utils/error-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../src/utils/error-handler.ts"],"names":[],"mappings":"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"}
|