@revenium/openai 1.0.12 → 1.0.14
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 +59 -0
- package/CODE_OF_CONDUCT.md +57 -0
- package/CONTRIBUTING.md +38 -0
- package/README.md +109 -515
- 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 +12 -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 +17 -0
- package/dist/cjs/core/middleware/index.js.map +1 -0
- package/dist/cjs/core/middleware/interfaces.js +361 -0
- package/dist/cjs/core/middleware/interfaces.js.map +1 -0
- package/dist/cjs/core/middleware/revenium-client.js +142 -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 +14 -13
- package/dist/cjs/core/tracking/api-client.js.map +1 -1
- package/dist/cjs/core/tracking/payload-builder.js +30 -35
- package/dist/cjs/core/tracking/payload-builder.js.map +1 -1
- package/dist/cjs/core/tracking/usage-tracker.js +22 -18
- package/dist/cjs/core/tracking/usage-tracker.js.map +1 -1
- package/dist/cjs/index.js +26 -174
- 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 +27 -19
- 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/stop-reason-mapper.js +4 -0
- package/dist/cjs/utils/stop-reason-mapper.js.map +1 -1
- package/dist/cjs/utils/url-builder.js +3 -3
- 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 +14 -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 +353 -0
- package/dist/esm/core/middleware/interfaces.js.map +1 -0
- package/dist/esm/core/middleware/revenium-client.js +105 -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 +13 -12
- package/dist/esm/core/tracking/api-client.js.map +1 -1
- package/dist/esm/core/tracking/payload-builder.js +31 -36
- package/dist/esm/core/tracking/payload-builder.js.map +1 -1
- package/dist/esm/core/tracking/usage-tracker.js +24 -20
- package/dist/esm/core/tracking/usage-tracker.js.map +1 -1
- package/dist/esm/index.js +9 -157
- 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 +27 -19
- 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/stop-reason-mapper.js +4 -0
- package/dist/esm/utils/stop-reason-mapper.js.map +1 -1
- package/dist/esm/utils/url-builder.js +3 -3
- 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 +74 -0
- package/dist/types/core/middleware/interfaces.d.ts.map +1 -0
- package/dist/types/core/middleware/revenium-client.d.ts +58 -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/payload-builder.d.ts +3 -3
- package/dist/types/core/tracking/payload-builder.d.ts.map +1 -1
- package/dist/types/core/tracking/usage-tracker.d.ts +2 -2
- package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -1
- package/dist/types/index.d.ts +11 -114
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/function-parameters.d.ts +2 -23
- package/dist/types/types/function-parameters.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +17 -115
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/openai-augmentation.d.ts +4 -139
- 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 +4 -3
- 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/stop-reason-mapper.d.ts.map +1 -1
- package/dist/types/utils/url-builder.d.ts +3 -3
- package/examples/README.md +270 -224
- 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 +20 -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 -94
- 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 -132
- 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 -336
- package/src/types/function-parameters.ts +0 -251
- package/src/types/index.ts +0 -313
- package/src/types/openai-augmentation.ts +0 -233
- 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 -219
- 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 -74
- package/src/utils/type-guards.ts +0 -202
- package/src/utils/url-builder.ts +0 -68
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,qCAAqC;AACrC,2DAAyC;AAEzC,gCAAgC;AAChC,qDAAmC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,qCAAqC;AACrC,2DAAyC;AAEzC,gCAAgC;AAChC,qDAAmC;AAiFnC;;;;;GAKG;AACH,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,0BAA0B;IAC1B,6BAAiB,CAAA;IACjB,2BAA2B;IAC3B,yCAA6B,CAAA;AAC/B,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB"}
|
|
@@ -1,55 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
3
|
* TypeScript module augmentation for OpenAI SDK
|
|
4
|
-
*
|
|
5
|
-
* This file extends OpenAI's existing types to include the usageMetadata field
|
|
6
|
-
* through TypeScript's declaration merging feature. This provides seamless
|
|
7
|
-
* integration with the OpenAI SDK, allowing developers to use usageMetadata
|
|
8
|
-
* directly in OpenAI API calls without type casting or additional imports.
|
|
9
|
-
*
|
|
10
|
-
* The augmentation covers all major OpenAI API endpoints including:
|
|
11
|
-
* - Chat completions (streaming and non-streaming)
|
|
12
|
-
* - Embeddings
|
|
13
|
-
* - Future API endpoints as they become available
|
|
14
|
-
*
|
|
15
|
-
* @fileoverview OpenAI SDK type augmentation for Revenium middleware
|
|
16
|
-
* @author Revenium
|
|
17
|
-
* @since 1.0.0
|
|
18
|
-
*
|
|
19
|
-
* @example Basic usage with chat completions
|
|
20
|
-
* ```typescript
|
|
21
|
-
* import '@revenium/openai';
|
|
22
|
-
* import OpenAI from 'openai';
|
|
23
|
-
*
|
|
24
|
-
* const openai = new OpenAI();
|
|
25
|
-
*
|
|
26
|
-
* const response = await openai.chat.completions.create({
|
|
27
|
-
* model: 'gpt-4o-mini',
|
|
28
|
-
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
29
|
-
* usageMetadata: { // TypeScript recognizes this natively
|
|
30
|
-
* subscriber: {
|
|
31
|
-
* id: 'user-123',
|
|
32
|
-
* email: 'user@my-company.com'
|
|
33
|
-
* },
|
|
34
|
-
* organizationId: 'my-company',
|
|
35
|
-
* productId: 'chat-app',
|
|
36
|
-
* taskType: 'customer-support'
|
|
37
|
-
* }
|
|
38
|
-
* });
|
|
39
|
-
* ```
|
|
40
|
-
*
|
|
41
|
-
* @example Usage with embeddings
|
|
42
|
-
* ```typescript
|
|
43
|
-
* const embedding = await openai.embeddings.create({
|
|
44
|
-
* model: 'text-embedding-ada-002',
|
|
45
|
-
* input: 'Text to embed',
|
|
46
|
-
* usageMetadata: {
|
|
47
|
-
* subscriber: { id: 'user-456' },
|
|
48
|
-
* productId: 'search-engine',
|
|
49
|
-
* taskType: 'document-indexing'
|
|
50
|
-
* }
|
|
51
|
-
* });
|
|
52
|
-
* ```
|
|
53
4
|
*/
|
|
54
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
55
6
|
//# 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,24 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
'gpt-3.5-turbo',
|
|
12
|
-
'gpt-3.5-turbo-instruct',
|
|
13
|
-
'text-embedding-3-large',
|
|
14
|
-
'text-embedding-3-small',
|
|
15
|
-
'text-embedding-ada-002',
|
|
16
|
-
'dall-e-3',
|
|
17
|
-
'dall-e-2',
|
|
18
|
-
'whisper-1',
|
|
19
|
-
'tts-1',
|
|
20
|
-
'tts-1-hd'
|
|
3
|
+
exports.DEFAULT_REVENIUM_BASE_URL = exports.ERROR_MESSAGE_PATTERNS_TYPE_CONFIG = exports.MESSAGE_PATTERNS_TYPE_NETWORK = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Error message patterns for network-related errors
|
|
6
|
+
*/
|
|
7
|
+
exports.MESSAGE_PATTERNS_TYPE_NETWORK = [
|
|
8
|
+
"network",
|
|
9
|
+
"timeout",
|
|
10
|
+
"ECONNRESET",
|
|
21
11
|
];
|
|
22
|
-
|
|
23
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Error message patterns for configuration-related errors
|
|
14
|
+
*/
|
|
15
|
+
exports.ERROR_MESSAGE_PATTERNS_TYPE_CONFIG = [
|
|
16
|
+
"config",
|
|
17
|
+
"key",
|
|
18
|
+
"unauthorized",
|
|
19
|
+
];
|
|
20
|
+
exports.DEFAULT_REVENIUM_BASE_URL = "https://api.revenium.ai";
|
|
24
21
|
//# 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;AACU,QAAA,6BAA6B,GAAG;IAC3C,SAAS;IACT,SAAS;IACT,YAAY;CACb,CAAC;AAEF;;GAEG;AACU,QAAA,kCAAkC,GAAG;IAChD,QAAQ;IACR,KAAK;IACL,cAAc;CACf,CAAC;AAEW,QAAA,yBAAyB,GAAG,yBAAyB,CAAC"}
|
|
@@ -20,9 +20,9 @@ const constants_js_1 = require("./constants.js");
|
|
|
20
20
|
const DEFAULT_STRATEGY = {
|
|
21
21
|
logError: true,
|
|
22
22
|
rethrow: true,
|
|
23
|
-
messagePrefix:
|
|
23
|
+
messagePrefix: "",
|
|
24
24
|
fallbackValue: undefined,
|
|
25
|
-
transformError: (error) =>
|
|
25
|
+
transformError: (error) => error instanceof Error ? error : new Error(String(error)),
|
|
26
26
|
};
|
|
27
27
|
/**
|
|
28
28
|
* Safe async operation wrapper with comprehensive error handling
|
|
@@ -135,7 +135,7 @@ async function withRetry(operation, maxRetries = 3, delayMs = 1000, logger) {
|
|
|
135
135
|
nextRetryIn: delayMs,
|
|
136
136
|
});
|
|
137
137
|
}
|
|
138
|
-
await new Promise(resolve => setTimeout(resolve, delayMs));
|
|
138
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
141
|
// eslint-disable-next-line no-throw-literal
|
|
@@ -148,7 +148,7 @@ class ValidationError extends Error {
|
|
|
148
148
|
constructor(message, context) {
|
|
149
149
|
super(message);
|
|
150
150
|
this.context = context;
|
|
151
|
-
this.name =
|
|
151
|
+
this.name = "ValidationError";
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
exports.ValidationError = ValidationError;
|
|
@@ -156,7 +156,7 @@ class ConfigurationError extends Error {
|
|
|
156
156
|
constructor(message, context) {
|
|
157
157
|
super(message);
|
|
158
158
|
this.context = context;
|
|
159
|
-
this.name =
|
|
159
|
+
this.name = "ConfigurationError";
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
exports.ConfigurationError = ConfigurationError;
|
|
@@ -164,7 +164,7 @@ class NetworkError extends Error {
|
|
|
164
164
|
constructor(message, context) {
|
|
165
165
|
super(message);
|
|
166
166
|
this.context = context;
|
|
167
|
-
this.name =
|
|
167
|
+
this.name = "NetworkError";
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
170
|
exports.NetworkError = NetworkError;
|
|
@@ -173,22 +173,26 @@ exports.NetworkError = NetworkError;
|
|
|
173
173
|
*/
|
|
174
174
|
function classifyError(error) {
|
|
175
175
|
if (error instanceof ValidationError) {
|
|
176
|
-
return { type:
|
|
176
|
+
return { type: "validation", message: error.message, isRetryable: false };
|
|
177
177
|
}
|
|
178
178
|
if (error instanceof ConfigurationError) {
|
|
179
|
-
return {
|
|
179
|
+
return {
|
|
180
|
+
type: "configuration",
|
|
181
|
+
message: error.message,
|
|
182
|
+
isRetryable: false,
|
|
183
|
+
};
|
|
180
184
|
}
|
|
181
185
|
if (error instanceof NetworkError) {
|
|
182
|
-
return { type:
|
|
186
|
+
return { type: "network", message: error.message, isRetryable: true };
|
|
183
187
|
}
|
|
184
188
|
const message = error instanceof Error ? error.message : String(error);
|
|
185
189
|
// Classify based on message patterns
|
|
186
|
-
if (constants_js_1.MESSAGE_PATTERNS_TYPE_NETWORK.some(pattern => message.includes(pattern))) {
|
|
187
|
-
return { type:
|
|
190
|
+
if (constants_js_1.MESSAGE_PATTERNS_TYPE_NETWORK.some((pattern) => message.includes(pattern))) {
|
|
191
|
+
return { type: "network", message, isRetryable: true };
|
|
188
192
|
}
|
|
189
|
-
if (constants_js_1.ERROR_MESSAGE_PATTERNS_TYPE_CONFIG.some(pattern => message.includes(pattern))) {
|
|
190
|
-
return { type:
|
|
193
|
+
if (constants_js_1.ERROR_MESSAGE_PATTERNS_TYPE_CONFIG.some((pattern) => message.includes(pattern))) {
|
|
194
|
+
return { type: "configuration", message, isRetryable: false };
|
|
191
195
|
}
|
|
192
|
-
return { type:
|
|
196
|
+
return { type: "unknown", message, isRetryable: false };
|
|
193
197
|
}
|
|
194
198
|
//# 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;;;
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../src/utils/error-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,18 +18,18 @@ exports.sanitizeMetadataForLogging = sanitizeMetadataForLogging;
|
|
|
18
18
|
* Subscriber object is passed through directly without transformation
|
|
19
19
|
*/
|
|
20
20
|
const METADATA_FIELD_MAP = [
|
|
21
|
-
{ source:
|
|
22
|
-
{ source:
|
|
23
|
-
{ source:
|
|
24
|
-
{ source:
|
|
25
|
-
{ source:
|
|
26
|
-
{ source:
|
|
27
|
-
{ source:
|
|
21
|
+
{ source: "traceId" },
|
|
22
|
+
{ source: "taskType" },
|
|
23
|
+
{ source: "agent" },
|
|
24
|
+
{ source: "organizationId" },
|
|
25
|
+
{ source: "productId" },
|
|
26
|
+
{ source: "subscriber" }, // Pass through nested subscriber object directly
|
|
27
|
+
{ source: "subscriptionId" },
|
|
28
28
|
{
|
|
29
|
-
source:
|
|
29
|
+
source: "responseQualityScore",
|
|
30
30
|
transform: (value) => {
|
|
31
|
-
// Ensure quality score is between 0 and 1
|
|
32
|
-
if (typeof value ===
|
|
31
|
+
// Ensure quality score is between 0.0 and 1.0 (API spec requirement)
|
|
32
|
+
if (typeof value === "number")
|
|
33
33
|
return Math.max(0, Math.min(1, value));
|
|
34
34
|
return value;
|
|
35
35
|
},
|
|
@@ -77,7 +77,7 @@ function validateMetadata(usageMetadata, requiredFields = []) {
|
|
|
77
77
|
return {
|
|
78
78
|
isValid: false,
|
|
79
79
|
missingFields: requiredFields,
|
|
80
|
-
warnings: [
|
|
80
|
+
warnings: ["No metadata provided"],
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
83
|
if (usageMetadata) {
|
|
@@ -89,12 +89,15 @@ function validateMetadata(usageMetadata, requiredFields = []) {
|
|
|
89
89
|
// Check for common issues
|
|
90
90
|
if (usageMetadata.responseQualityScore) {
|
|
91
91
|
const score = usageMetadata.responseQualityScore;
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
// API Spec: https://revenium.readme.io/reference/meter_ai_completion (responseQualityScore)
|
|
93
|
+
// "typically on a 0.0-1.0 scale"
|
|
94
|
+
if (typeof score !== "number" || score < 0 || score > 1) {
|
|
95
|
+
warnings.push("responseQualityScore should be a number between 0.0 and 1.0");
|
|
94
96
|
}
|
|
95
97
|
}
|
|
96
|
-
if (usageMetadata.subscriber?.email &&
|
|
97
|
-
|
|
98
|
+
if (usageMetadata.subscriber?.email &&
|
|
99
|
+
!usageMetadata.subscriber.email.includes("@")) {
|
|
100
|
+
warnings.push("subscriber.email does not appear to be a valid email address");
|
|
98
101
|
}
|
|
99
102
|
}
|
|
100
103
|
return {
|
|
@@ -133,18 +136,22 @@ function extractMetadata(params) {
|
|
|
133
136
|
}
|
|
134
137
|
/**
|
|
135
138
|
* Create a metadata context for consistent logging
|
|
139
|
+
* Uses sanitization to protect PII (emails are masked)
|
|
136
140
|
*
|
|
137
141
|
* @param usageMetadata - Source metadata
|
|
138
|
-
* @returns Logging context object
|
|
142
|
+
* @returns Logging context object with sanitized PII
|
|
139
143
|
*/
|
|
140
144
|
function createLoggingContext(usageMetadata) {
|
|
141
145
|
if (!usageMetadata)
|
|
142
146
|
return {};
|
|
147
|
+
// Use sanitizer to protect PII in logs
|
|
148
|
+
const sanitized = sanitizeMetadataForLogging(usageMetadata);
|
|
149
|
+
const sanitizedSubscriber = sanitized.subscriber;
|
|
143
150
|
return {
|
|
144
151
|
traceId: usageMetadata.traceId,
|
|
145
152
|
taskType: usageMetadata.taskType,
|
|
146
153
|
subscriberId: usageMetadata.subscriber?.id,
|
|
147
|
-
subscriberEmail:
|
|
154
|
+
subscriberEmail: sanitizedSubscriber?.email, // ← Now masked: us***@example.com
|
|
148
155
|
organizationId: usageMetadata.organizationId,
|
|
149
156
|
productId: usageMetadata.productId,
|
|
150
157
|
agent: usageMetadata.agent,
|
|
@@ -169,12 +176,13 @@ function sanitizeMetadataForLogging(usageMetadata) {
|
|
|
169
176
|
sanitizedSubscriber.id = subscriber.id;
|
|
170
177
|
}
|
|
171
178
|
if (subscriber.email) {
|
|
172
|
-
|
|
179
|
+
// Mask email: handles single-char emails (a@x.com → a***@x.com)
|
|
180
|
+
sanitizedSubscriber.email = subscriber.email.replace(/(.{1,2}).*(@.*)/, "$1***$2");
|
|
173
181
|
}
|
|
174
182
|
if (subscriber.credential) {
|
|
175
183
|
sanitizedSubscriber.credential = {
|
|
176
184
|
name: subscriber.credential.name,
|
|
177
|
-
value:
|
|
185
|
+
value: "[REDACTED]",
|
|
178
186
|
};
|
|
179
187
|
}
|
|
180
188
|
result.subscriber = sanitizedSubscriber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-builder.js","sourceRoot":"","sources":["../../../src/utils/metadata-builder.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAmDH,
|
|
1
|
+
{"version":3,"file":"metadata-builder.js","sourceRoot":"","sources":["../../../src/utils/metadata-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,40 +16,39 @@ const index_js_1 = require("../types/index.js");
|
|
|
16
16
|
*/
|
|
17
17
|
const DETECTION_STRATEGIES = [
|
|
18
18
|
{
|
|
19
|
-
name:
|
|
19
|
+
name: "Constructor Name",
|
|
20
20
|
priority: 100,
|
|
21
|
-
detect: client => {
|
|
22
|
-
return client?.constructor?.name?.includes(
|
|
21
|
+
detect: (client) => {
|
|
22
|
+
return client?.constructor?.name?.includes("Azure") || false;
|
|
23
23
|
},
|
|
24
|
-
getContext: client => ({
|
|
24
|
+
getContext: (client) => ({
|
|
25
25
|
constructorName: client?.constructor?.name,
|
|
26
26
|
}),
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
|
-
name:
|
|
29
|
+
name: "Base URL",
|
|
30
30
|
priority: 90,
|
|
31
|
-
detect: client => {
|
|
31
|
+
detect: (client) => {
|
|
32
32
|
const baseUrl = getBaseUrlString(client);
|
|
33
|
-
return baseUrl?.toLowerCase().includes(
|
|
33
|
+
return baseUrl?.toLowerCase().includes("azure") || false;
|
|
34
34
|
},
|
|
35
|
-
getContext: client => ({
|
|
35
|
+
getContext: (client) => ({
|
|
36
36
|
baseURL: getBaseUrlString(client),
|
|
37
37
|
}),
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
|
-
name:
|
|
40
|
+
name: "Environment Variables",
|
|
41
41
|
priority: 80,
|
|
42
|
-
detect: client => {
|
|
42
|
+
detect: (client) => {
|
|
43
43
|
// Only use env vars if not explicitly OpenAI
|
|
44
44
|
const baseUrl = getBaseUrlString(client);
|
|
45
|
-
const isExplicitlyOpenAI = baseUrl?.includes(
|
|
46
|
-
(client?.constructor?.name?.toLowerCase().includes(
|
|
47
|
-
!client?.constructor?.name?.toLowerCase().includes(
|
|
45
|
+
const isExplicitlyOpenAI = baseUrl?.includes("api.openai.com") ||
|
|
46
|
+
(client?.constructor?.name?.toLowerCase().includes("openai") &&
|
|
47
|
+
!client?.constructor?.name?.toLowerCase().includes("azure"));
|
|
48
48
|
return !isExplicitlyOpenAI && !!process.env.AZURE_OPENAI_ENDPOINT;
|
|
49
49
|
},
|
|
50
50
|
getContext: () => ({
|
|
51
51
|
hasAzureEndpoint: !!process.env.AZURE_OPENAI_ENDPOINT,
|
|
52
|
-
hasAzureDeployment: !!process.env.AZURE_OPENAI_DEPLOYMENT,
|
|
53
52
|
hasAzureApiKey: !!process.env.AZURE_OPENAI_API_KEY,
|
|
54
53
|
}),
|
|
55
54
|
},
|
|
@@ -60,7 +59,9 @@ const DETECTION_STRATEGIES = [
|
|
|
60
59
|
function getBaseUrlString(client) {
|
|
61
60
|
if (!client?.baseURL)
|
|
62
61
|
return undefined;
|
|
63
|
-
return typeof client.baseURL ===
|
|
62
|
+
return typeof client.baseURL === "string"
|
|
63
|
+
? client.baseURL
|
|
64
|
+
: client.baseURL.toString();
|
|
64
65
|
}
|
|
65
66
|
/**
|
|
66
67
|
* Detect provider using strategy pattern
|
|
@@ -99,27 +100,24 @@ function detectProviderStrategy(client, logger) {
|
|
|
99
100
|
}
|
|
100
101
|
// Default to OpenAI
|
|
101
102
|
if (logger) {
|
|
102
|
-
logger.debug(
|
|
103
|
+
logger.debug("Standard OpenAI provider detected (no Azure indicators found)");
|
|
103
104
|
}
|
|
104
105
|
return { provider: index_js_1.Provider.OPENAI };
|
|
105
106
|
}
|
|
106
107
|
const AZURE_CONFIG_STRATEGIES = [
|
|
107
108
|
{
|
|
108
|
-
name:
|
|
109
|
-
gather: client => {
|
|
109
|
+
name: "Client BaseURL",
|
|
110
|
+
gather: (client) => {
|
|
110
111
|
const baseUrl = getBaseUrlString(client);
|
|
111
112
|
return baseUrl ? { endpoint: baseUrl } : {};
|
|
112
113
|
},
|
|
113
114
|
},
|
|
114
115
|
{
|
|
115
|
-
name:
|
|
116
|
+
name: "Environment Variables",
|
|
116
117
|
gather: () => ({
|
|
117
118
|
endpoint: process.env.AZURE_OPENAI_ENDPOINT,
|
|
118
|
-
|
|
119
|
-
apiVersion: process.env.AZURE_OPENAI_API_VERSION || '2024-12-01-preview',
|
|
119
|
+
apiVersion: process.env.AZURE_OPENAI_API_VERSION,
|
|
120
120
|
apiKey: process.env.AZURE_OPENAI_API_KEY,
|
|
121
|
-
tenantId: process.env.AZURE_OPENAI_TENANT_ID,
|
|
122
|
-
resourceGroup: process.env.AZURE_OPENAI_RESOURCE_GROUP,
|
|
123
121
|
}),
|
|
124
122
|
},
|
|
125
123
|
];
|
|
@@ -151,9 +149,8 @@ function gatherAzureConfigStrategy(client, logger) {
|
|
|
151
149
|
}
|
|
152
150
|
}
|
|
153
151
|
if (logger) {
|
|
154
|
-
logger.debug(
|
|
152
|
+
logger.debug("Azure configuration gathered", {
|
|
155
153
|
hasEndpoint: !!config.endpoint,
|
|
156
|
-
hasDeployment: !!config.deployment,
|
|
157
154
|
hasApiKey: !!config.apiKey,
|
|
158
155
|
apiVersion: config.apiVersion,
|
|
159
156
|
});
|
|
@@ -193,14 +190,14 @@ function validateProviderInfo(providerInfo) {
|
|
|
193
190
|
const warnings = [];
|
|
194
191
|
if (providerInfo.isAzure) {
|
|
195
192
|
if (!providerInfo.azureConfig) {
|
|
196
|
-
warnings.push(
|
|
193
|
+
warnings.push("Azure provider detected but no Azure configuration available");
|
|
197
194
|
}
|
|
198
195
|
else {
|
|
199
196
|
if (!providerInfo.azureConfig.endpoint) {
|
|
200
|
-
warnings.push(
|
|
197
|
+
warnings.push("Azure configuration missing endpoint");
|
|
201
198
|
}
|
|
202
199
|
if (!providerInfo.azureConfig.apiKey) {
|
|
203
|
-
warnings.push(
|
|
200
|
+
warnings.push("Azure configuration missing API key");
|
|
204
201
|
}
|
|
205
202
|
}
|
|
206
203
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-detection.js","sourceRoot":"","sources":["../../../src/utils/provider-detection.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"provider-detection.js","sourceRoot":"","sources":["../../../src/utils/provider-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,8 +22,12 @@ const STOP_REASON_MAP = {
|
|
|
22
22
|
timeout: 'TIMEOUT',
|
|
23
23
|
length: 'TOKEN_LIMIT',
|
|
24
24
|
max_tokens: 'TOKEN_LIMIT',
|
|
25
|
+
cost_limit: 'COST_LIMIT',
|
|
26
|
+
completion_limit: 'COMPLETION_LIMIT',
|
|
25
27
|
content_filter: 'ERROR',
|
|
26
28
|
error: 'ERROR',
|
|
29
|
+
cancelled: 'CANCELLED',
|
|
30
|
+
canceled: 'CANCELLED', // Handle both spellings
|
|
27
31
|
// Anthropic stop reasons (for consistency across middleware)
|
|
28
32
|
end_turn: 'END',
|
|
29
33
|
stop_sequence: 'END_SEQUENCE',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop-reason-mapper.js","sourceRoot":"","sources":["../../../src/utils/stop-reason-mapper.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"stop-reason-mapper.js","sourceRoot":"","sources":["../../../src/utils/stop-reason-mapper.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA0CH,sCAeC;AAKD,0DAEC;AAKD,sDAEC;AArED;;;GAGG;AACH,MAAM,eAAe,GAA2B;IAC9C,mCAAmC;IACnC,IAAI,EAAE,KAAK;IACX,aAAa,EAAE,cAAc;IAC7B,UAAU,EAAE,cAAc;IAC1B,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,aAAa;IACrB,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE,YAAY;IACxB,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,OAAO;IACvB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,WAAW,EAAG,wBAAwB;IAEhD,6DAA6D;IAC7D,QAAQ,EAAE,KAAK;IACf,aAAa,EAAE,cAAc;IAC7B,QAAQ,EAAE,cAAc;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAElC;;;;;;;;;GASG;AACH,SAAgB,aAAa,CAC3B,kBAA6C,EAC7C,MAA4D;IAE5D,IAAI,CAAC,kBAAkB;QAAE,OAAO,mBAAmB,CAAC;IACpD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,YAAY,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAEvD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,mEAAmE;QACnE,MAAM,EAAE,IAAI,CAAC,wBAAwB,kBAAkB,gBAAgB,mBAAmB,EAAE,CAAC,CAAC;QAC9F,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB;IACrC,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,MAAc;IAClD,OAAO,MAAM,CAAC,WAAW,EAAE,IAAI,eAAe,CAAC;AACjD,CAAC"}
|
|
@@ -18,9 +18,9 @@ exports.isValidUrl = isValidUrl;
|
|
|
18
18
|
* - If URL has neither → append /meter/v2 and endpoint
|
|
19
19
|
*
|
|
20
20
|
* Examples:
|
|
21
|
-
* - 'https://api.revenium.
|
|
22
|
-
* - 'https://api.revenium.
|
|
23
|
-
* - 'https://api.revenium.
|
|
21
|
+
* - 'https://api.revenium.ai' + '/ai/completions' → 'https://api.revenium.ai/meter/v2/ai/completions'
|
|
22
|
+
* - 'https://api.revenium.ai/meter' + '/ai/completions' → 'https://api.revenium.ai/meter/v2/ai/completions'
|
|
23
|
+
* - 'https://api.revenium.ai/meter/v2' + '/ai/completions' → 'https://api.revenium.ai/meter/v2/ai/completions'
|
|
24
24
|
*
|
|
25
25
|
* @param baseUrl - The base URL from configuration (may include /meter or /meter/v2)
|
|
26
26
|
* @param endpoint - The API endpoint to append (e.g., '/ai/completions')
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/client/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,KAAK,EACL,SAAS,GACV,MAAM,cAAc,CAAC"}
|