@revenium/openai 1.0.13 → 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 +44 -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 +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 +15 -25
- 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 -195
- 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/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 +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 +16 -26
- 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 -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/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 -135
- 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 +11 -105
- 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/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 +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 -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
|
@@ -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
31
|
// Ensure quality score is between 0.0 and 1.0 (API spec requirement)
|
|
32
|
-
if (typeof value ===
|
|
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) {
|
|
@@ -91,12 +91,13 @@ function validateMetadata(usageMetadata, requiredFields = []) {
|
|
|
91
91
|
const score = usageMetadata.responseQualityScore;
|
|
92
92
|
// API Spec: https://revenium.readme.io/reference/meter_ai_completion (responseQualityScore)
|
|
93
93
|
// "typically on a 0.0-1.0 scale"
|
|
94
|
-
if (typeof score !==
|
|
95
|
-
warnings.push(
|
|
94
|
+
if (typeof score !== "number" || score < 0 || score > 1) {
|
|
95
|
+
warnings.push("responseQualityScore should be a number between 0.0 and 1.0");
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
|
-
if (usageMetadata.subscriber?.email &&
|
|
99
|
-
|
|
98
|
+
if (usageMetadata.subscriber?.email &&
|
|
99
|
+
!usageMetadata.subscriber.email.includes("@")) {
|
|
100
|
+
warnings.push("subscriber.email does not appear to be a valid email address");
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
103
|
return {
|
|
@@ -176,12 +177,12 @@ function sanitizeMetadataForLogging(usageMetadata) {
|
|
|
176
177
|
}
|
|
177
178
|
if (subscriber.email) {
|
|
178
179
|
// Mask email: handles single-char emails (a@x.com → a***@x.com)
|
|
179
|
-
sanitizedSubscriber.email = subscriber.email.replace(/(.{1,2}).*(@.*)/,
|
|
180
|
+
sanitizedSubscriber.email = subscriber.email.replace(/(.{1,2}).*(@.*)/, "$1***$2");
|
|
180
181
|
}
|
|
181
182
|
if (subscriber.credential) {
|
|
182
183
|
sanitizedSubscriber.credential = {
|
|
183
184
|
name: subscriber.credential.name,
|
|
184
|
-
value:
|
|
185
|
+
value: "[REDACTED]",
|
|
185
186
|
};
|
|
186
187
|
}
|
|
187
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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"}
|
|
@@ -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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client Manager
|
|
3
|
+
*/
|
|
4
|
+
import { ReveniumOpenAI } from "../middleware/revenium-client.js";
|
|
5
|
+
import { initializeConfig, validateConfig, setConfig, getConfig, } from "../config";
|
|
6
|
+
import { detectProviderFromConfig } from "../providers";
|
|
7
|
+
import { getLogger } from "../config";
|
|
8
|
+
import { DEFAULT_REVENIUM_BASE_URL } from "../../utils/constants.js";
|
|
9
|
+
// Global client singleton
|
|
10
|
+
let globalClient = null;
|
|
11
|
+
// Global logger
|
|
12
|
+
const logger = getLogger();
|
|
13
|
+
/**
|
|
14
|
+
* Initialize - Initialize Revenium client
|
|
15
|
+
* Can be called with explicit config or will load from environment variables.
|
|
16
|
+
* @param config - Optional configuration. If not provided, loads from environment.
|
|
17
|
+
*/
|
|
18
|
+
export function Initialize(config) {
|
|
19
|
+
logger.debug("Initializing Revenium client");
|
|
20
|
+
let finalConfig;
|
|
21
|
+
if (config) {
|
|
22
|
+
// Merge provided config with defaults
|
|
23
|
+
const defaultConfig = {
|
|
24
|
+
reveniumBaseUrl: DEFAULT_REVENIUM_BASE_URL,
|
|
25
|
+
debug: false,
|
|
26
|
+
};
|
|
27
|
+
finalConfig = {
|
|
28
|
+
...defaultConfig,
|
|
29
|
+
...config,
|
|
30
|
+
};
|
|
31
|
+
logger.debug("Using provided configuration");
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
// Load from environment variables
|
|
35
|
+
const envLoaded = initializeConfig();
|
|
36
|
+
if (!envLoaded) {
|
|
37
|
+
throw new Error("Failed to load configuration from environment variables. " +
|
|
38
|
+
"Ensure REVENIUM_METERING_API_KEY and OPENAI_API_KEY are set, " +
|
|
39
|
+
"or provide configuration explicitly to Initialize().");
|
|
40
|
+
}
|
|
41
|
+
finalConfig = getConfig();
|
|
42
|
+
logger.debug("Loaded configuration from environment");
|
|
43
|
+
}
|
|
44
|
+
// Validate configuration
|
|
45
|
+
try {
|
|
46
|
+
validateConfig(finalConfig);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
logger.error("Configuration validation failed", {
|
|
50
|
+
error: error instanceof Error ? error.message : String(error),
|
|
51
|
+
});
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
// Store config globally
|
|
55
|
+
setConfig(finalConfig);
|
|
56
|
+
// Detect provider from configuration
|
|
57
|
+
const providerInfo = detectProviderFromConfig(finalConfig);
|
|
58
|
+
logger.info("Detected provider", {
|
|
59
|
+
provider: providerInfo.provider,
|
|
60
|
+
isAzure: providerInfo.isAzure,
|
|
61
|
+
});
|
|
62
|
+
// Create global client
|
|
63
|
+
globalClient = new ReveniumOpenAI(finalConfig, providerInfo.provider);
|
|
64
|
+
logger.info("Revenium client initialized successfully");
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* GetClient - Get the global Revenium client
|
|
68
|
+
* @returns The global ReveniumOpenAI client
|
|
69
|
+
* @throws Error if client is not initialized
|
|
70
|
+
*/
|
|
71
|
+
export function GetClient() {
|
|
72
|
+
if (!globalClient) {
|
|
73
|
+
throw new Error("Revenium client not initialized. Call Initialize() first.\n\n" +
|
|
74
|
+
"Example:\n" +
|
|
75
|
+
' import { Initialize, GetClient } from "@revenium/openai";\n' +
|
|
76
|
+
" Initialize();\n" +
|
|
77
|
+
" const client = GetClient();");
|
|
78
|
+
}
|
|
79
|
+
return globalClient;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* IsInitialized - Check if client is initialized
|
|
83
|
+
* @returns true if client is initialized, false otherwise
|
|
84
|
+
*/
|
|
85
|
+
export function IsInitialized() {
|
|
86
|
+
return globalClient !== null;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Reset - Reset the global client
|
|
90
|
+
*/
|
|
91
|
+
export function Reset() {
|
|
92
|
+
logger.debug("Resetting global client");
|
|
93
|
+
globalClient = null;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Configure - Alias for Initialize
|
|
97
|
+
* @param config - Configuration object
|
|
98
|
+
*/
|
|
99
|
+
export function Configure(config) {
|
|
100
|
+
Initialize(config);
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../src/core/client/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Handles Azure-specific configuration logic.
|
|
5
5
|
* Extracted from provider.ts for better separation of concerns.
|
|
6
6
|
*/
|
|
7
|
-
import { getLogger } from
|
|
7
|
+
import { getLogger } from "./manager.js";
|
|
8
8
|
// Global logger
|
|
9
9
|
const logger = getLogger();
|
|
10
10
|
/**
|
|
@@ -18,41 +18,29 @@ export function gatherAzureConfig(client) {
|
|
|
18
18
|
try {
|
|
19
19
|
// Extract from client baseURL if available
|
|
20
20
|
if (client?.baseURL) {
|
|
21
|
-
const baseUrl = typeof client.baseURL ===
|
|
21
|
+
const baseUrl = typeof client.baseURL === "string"
|
|
22
|
+
? client.baseURL
|
|
23
|
+
: client.baseURL?.toString();
|
|
22
24
|
config.endpoint = baseUrl;
|
|
23
25
|
}
|
|
24
26
|
// Extract from environment variables
|
|
25
27
|
if (process.env.AZURE_OPENAI_ENDPOINT) {
|
|
26
28
|
config.endpoint = process.env.AZURE_OPENAI_ENDPOINT;
|
|
27
29
|
}
|
|
28
|
-
if (process.env.AZURE_OPENAI_DEPLOYMENT) {
|
|
29
|
-
config.deployment = process.env.AZURE_OPENAI_DEPLOYMENT;
|
|
30
|
-
}
|
|
31
30
|
if (process.env.AZURE_OPENAI_API_VERSION) {
|
|
32
31
|
config.apiVersion = process.env.AZURE_OPENAI_API_VERSION;
|
|
33
32
|
}
|
|
34
|
-
else {
|
|
35
|
-
// Default to preferred API version from Python learnings
|
|
36
|
-
config.apiVersion = '2024-12-01-preview';
|
|
37
|
-
}
|
|
38
33
|
if (process.env.AZURE_OPENAI_API_KEY) {
|
|
39
34
|
config.apiKey = process.env.AZURE_OPENAI_API_KEY;
|
|
40
35
|
}
|
|
41
|
-
|
|
42
|
-
config.tenantId = process.env.AZURE_OPENAI_TENANT_ID;
|
|
43
|
-
}
|
|
44
|
-
if (process.env.AZURE_OPENAI_RESOURCE_GROUP) {
|
|
45
|
-
config.resourceGroup = process.env.AZURE_OPENAI_RESOURCE_GROUP;
|
|
46
|
-
}
|
|
47
|
-
logger.debug('Azure configuration gathered', {
|
|
36
|
+
logger.debug("Azure configuration gathered", {
|
|
48
37
|
hasEndpoint: !!config.endpoint,
|
|
49
|
-
hasDeployment: !!config.deployment,
|
|
50
38
|
hasApiKey: !!config.apiKey,
|
|
51
39
|
apiVersion: config.apiVersion,
|
|
52
40
|
});
|
|
53
41
|
}
|
|
54
42
|
catch (error) {
|
|
55
|
-
logger.warn(
|
|
43
|
+
logger.warn("Error gathering Azure configuration", {
|
|
56
44
|
error: error instanceof Error ? error.message : String(error),
|
|
57
45
|
});
|
|
58
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"azure-config.js","sourceRoot":"","sources":["../../../../src/core/config/azure-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,gBAAgB;AAChB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAE3B;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA4B;IAC5D,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,2CAA2C;QAC3C,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,OAAO,GACX,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"azure-config.js","sourceRoot":"","sources":["../../../../src/core/config/azure-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,gBAAgB;AAChB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAE3B;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA4B;IAC5D,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,2CAA2C;QAC3C,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,OAAO,GACX,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;gBAChC,CAAC,CAAC,MAAM,CAAC,OAAO;gBAChB,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC;QAC5B,CAAC;QAED,qCAAqC;QACrC,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;YACtC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACtD,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;YACzC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;QAC3D,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACnD,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;YAC3C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;YAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;YAC1B,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE;YACjD,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
* separating concerns into focused sub-modules.
|
|
6
6
|
*/
|
|
7
7
|
// Re-export all configuration functionality
|
|
8
|
-
export { loadConfigFromEnv, loadAzureConfigFromEnv, hasAzureConfigInEnv } from
|
|
9
|
-
|
|
10
|
-
export {
|
|
8
|
+
export { loadConfigFromEnv, loadAzureConfigFromEnv, hasAzureConfigInEnv, } from "./loader.js";
|
|
9
|
+
// Note: validateAzureConfig is exported from src/core/providers/index.ts
|
|
10
|
+
export { validateConfig } from "./validator.js";
|
|
11
|
+
export { getConfig, setConfig, getLogger, setLogger, initializeConfig, defaultLogger, } from "./manager.js";
|
|
11
12
|
// Export Azure-specific configuration
|
|
12
|
-
export * from
|
|
13
|
+
export * from "./azure-config.js";
|
|
13
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,4CAA4C;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,4CAA4C;AAC5C,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,yEAAyE;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,aAAa,GACd,MAAM,cAAc,CAAC;AAEtB,sCAAsC;AACtC,cAAc,mBAAmB,CAAC"}
|
|
@@ -4,14 +4,40 @@
|
|
|
4
4
|
* Handles loading configuration from environment variables.
|
|
5
5
|
* Separated from validation and management for single responsibility.
|
|
6
6
|
*/
|
|
7
|
+
import { config as loadDotenv } from "dotenv";
|
|
8
|
+
import { existsSync } from "fs";
|
|
9
|
+
import { join } from "path";
|
|
10
|
+
import { DEFAULT_REVENIUM_BASE_URL } from "../../utils/constants.js";
|
|
7
11
|
/**
|
|
8
|
-
*
|
|
12
|
+
* Flag to track if .env files have been loaded
|
|
9
13
|
*/
|
|
10
|
-
|
|
14
|
+
let envFilesLoaded = false;
|
|
15
|
+
/**
|
|
16
|
+
* Load .env files automatically
|
|
17
|
+
* Tries to load .env.local and .env files from current and parent directories
|
|
18
|
+
*/
|
|
19
|
+
function loadEnvFiles() {
|
|
20
|
+
if (envFilesLoaded)
|
|
21
|
+
return;
|
|
22
|
+
const envFiles = [".env.local", ".env"];
|
|
23
|
+
const cwd = process.cwd();
|
|
24
|
+
const searchDirs = [cwd, join(cwd, "..")];
|
|
25
|
+
for (const dir of searchDirs) {
|
|
26
|
+
for (const envFile of envFiles) {
|
|
27
|
+
const envPath = join(dir, envFile);
|
|
28
|
+
if (existsSync(envPath)) {
|
|
29
|
+
loadDotenv({ path: envPath });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
envFilesLoaded = true;
|
|
34
|
+
}
|
|
11
35
|
/**
|
|
12
36
|
* Load configuration from environment variables
|
|
37
|
+
* Automatically loads .env files first
|
|
13
38
|
*/
|
|
14
39
|
export function loadConfigFromEnv() {
|
|
40
|
+
loadEnvFiles();
|
|
15
41
|
const reveniumApiKey = process.env.REVENIUM_METERING_API_KEY || process.env.REVENIUM_API_KEY;
|
|
16
42
|
const reveniumBaseUrl = process.env.REVENIUM_METERING_BASE_URL ||
|
|
17
43
|
process.env.REVENIUM_BASE_URL ||
|
|
@@ -27,32 +53,26 @@ export function loadConfigFromEnv() {
|
|
|
27
53
|
}
|
|
28
54
|
/**
|
|
29
55
|
* Load Azure configuration from environment variables
|
|
56
|
+
* Automatically loads .env files first
|
|
30
57
|
*/
|
|
31
58
|
export function loadAzureConfigFromEnv() {
|
|
59
|
+
loadEnvFiles();
|
|
32
60
|
const endpoint = process.env.AZURE_OPENAI_ENDPOINT;
|
|
33
|
-
const deployment = process.env.AZURE_OPENAI_DEPLOYMENT;
|
|
34
61
|
const apiVersion = process.env.AZURE_OPENAI_API_VERSION;
|
|
35
62
|
const apiKey = process.env.AZURE_OPENAI_API_KEY;
|
|
36
|
-
const tenantId = process.env.AZURE_OPENAI_TENANT_ID;
|
|
37
|
-
const resourceGroup = process.env.AZURE_OPENAI_RESOURCE_GROUP;
|
|
38
63
|
// Return null if no Azure config is present
|
|
39
|
-
if (!endpoint && !
|
|
64
|
+
if (!endpoint && !apiKey)
|
|
40
65
|
return null;
|
|
41
66
|
return {
|
|
42
67
|
endpoint,
|
|
43
|
-
|
|
44
|
-
apiVersion: apiVersion || '2024-12-01-preview', // Default from Python learnings
|
|
68
|
+
apiVersion,
|
|
45
69
|
apiKey,
|
|
46
|
-
tenantId,
|
|
47
|
-
resourceGroup,
|
|
48
70
|
};
|
|
49
71
|
}
|
|
50
72
|
/**
|
|
51
73
|
* Check if Azure configuration is available in environment
|
|
52
74
|
*/
|
|
53
75
|
export function hasAzureConfigInEnv() {
|
|
54
|
-
return !!(process.env.AZURE_OPENAI_ENDPOINT ||
|
|
55
|
-
process.env.AZURE_OPENAI_DEPLOYMENT ||
|
|
56
|
-
process.env.AZURE_OPENAI_API_KEY);
|
|
76
|
+
return !!(process.env.AZURE_OPENAI_ENDPOINT || process.env.AZURE_OPENAI_API_KEY);
|
|
57
77
|
}
|
|
58
78
|
//# sourceMappingURL=loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../src/core/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../src/core/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE;;GAEG;AACH,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B;;;GAGG;AACH,SAAS,YAAY;IACnB,IAAI,cAAc;QAAE,OAAO;IAE3B,MAAM,QAAQ,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAE1C,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACnC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,YAAY,EAAE,CAAC;IAEf,MAAM,cAAc,GAClB,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACxE,MAAM,eAAe,GACnB,OAAO,CAAC,GAAG,CAAC,0BAA0B;QACtC,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,yBAAyB,CAAC;IAC5B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAEhD,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO;QACL,cAAc;QACd,eAAe;QACf,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,YAAY,EAAE,CAAC;IAEf,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IACnD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IACxD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAEhD,4CAA4C;IAC5C,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO;QACL,QAAQ;QACR,UAAU;QACV,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,CAAC,CAAC,CACP,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CACtE,CAAC;AACJ,CAAC"}
|
|
@@ -4,15 +4,15 @@
|
|
|
4
4
|
* Handles global configuration state management and logging.
|
|
5
5
|
* Separated from loading and validation for single responsibility.
|
|
6
6
|
*/
|
|
7
|
-
import { loadConfigFromEnv, hasAzureConfigInEnv } from
|
|
8
|
-
import { validateConfig } from
|
|
7
|
+
import { loadConfigFromEnv, loadAzureConfigFromEnv, hasAzureConfigInEnv, } from "./loader.js";
|
|
8
|
+
import { validateConfig } from "./validator.js";
|
|
9
9
|
/**
|
|
10
10
|
* Default console logger implementation
|
|
11
11
|
*/
|
|
12
12
|
export const defaultLogger = {
|
|
13
13
|
debug: (message, ...args) => {
|
|
14
14
|
// Check both config.debug and environment variable
|
|
15
|
-
if (globalConfig?.debug || process.env.REVENIUM_DEBUG ===
|
|
15
|
+
if (globalConfig?.debug || process.env.REVENIUM_DEBUG === "true") {
|
|
16
16
|
console.debug(`[Revenium Debug] ${message}`, ...args);
|
|
17
17
|
}
|
|
18
18
|
},
|
|
@@ -43,7 +43,7 @@ export function getConfig() {
|
|
|
43
43
|
export function setConfig(config) {
|
|
44
44
|
validateConfig(config);
|
|
45
45
|
globalConfig = config;
|
|
46
|
-
globalLogger.debug(
|
|
46
|
+
globalLogger.debug("Revenium configuration updated", {
|
|
47
47
|
baseUrl: config.reveniumBaseUrl,
|
|
48
48
|
hasApiKey: !!config.reveniumApiKey,
|
|
49
49
|
hasOpenAIKey: !!config.openaiApiKey,
|
|
@@ -68,16 +68,22 @@ export function initializeConfig() {
|
|
|
68
68
|
const envConfig = loadConfigFromEnv();
|
|
69
69
|
if (envConfig) {
|
|
70
70
|
try {
|
|
71
|
+
// Load Azure configuration if available
|
|
72
|
+
const azureConfig = loadAzureConfigFromEnv();
|
|
73
|
+
if (azureConfig) {
|
|
74
|
+
envConfig.azure = azureConfig;
|
|
75
|
+
globalLogger.debug("Azure OpenAI configuration loaded from environment");
|
|
76
|
+
}
|
|
71
77
|
setConfig(envConfig);
|
|
72
|
-
globalLogger.debug(
|
|
78
|
+
globalLogger.debug("Revenium middleware initialized from environment variables");
|
|
73
79
|
// Log Azure config availability for debugging
|
|
74
80
|
if (hasAzureConfigInEnv()) {
|
|
75
|
-
globalLogger.debug(
|
|
81
|
+
globalLogger.debug("Azure OpenAI configuration detected in environment");
|
|
76
82
|
}
|
|
77
83
|
return true;
|
|
78
84
|
}
|
|
79
85
|
catch (error) {
|
|
80
|
-
globalLogger.error(
|
|
86
|
+
globalLogger.error("Failed to initialize Revenium configuration:", error);
|
|
81
87
|
return false;
|
|
82
88
|
}
|
|
83
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../src/core/config/manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../src/core/config/manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAW;IACnC,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC7C,mDAAmD;QACnD,IAAI,YAAY,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IACD,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC5C,OAAO,CAAC,IAAI,CAAC,cAAc,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC5C,OAAO,CAAC,IAAI,CAAC,sBAAsB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC7C,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,IAAI,YAAY,GAA0B,IAAI,CAAC;AAC/C,IAAI,YAAY,GAAW,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAsB;IAC9C,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,YAAY,GAAG,MAAM,CAAC;IACtB,YAAY,CAAC,KAAK,CAAC,gCAAgC,EAAE;QACnD,OAAO,EAAE,MAAM,CAAC,eAAe;QAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc;QAClC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY;KACpC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,wCAAwC;YACxC,MAAM,WAAW,GAAG,sBAAsB,EAAE,CAAC;YAC7C,IAAI,WAAW,EAAE,CAAC;gBACf,SAAiB,CAAC,KAAK,GAAG,WAAW,CAAC;gBACvC,YAAY,CAAC,KAAK,CAChB,oDAAoD,CACrD,CAAC;YACJ,CAAC;YAED,SAAS,CAAC,SAAS,CAAC,CAAC;YACrB,YAAY,CAAC,KAAK,CAChB,4DAA4D,CAC7D,CAAC;YAEF,8CAA8C;YAC9C,IAAI,mBAAmB,EAAE,EAAE,CAAC;gBAC1B,YAAY,CAAC,KAAK,CAChB,oDAAoD,CACrD,CAAC;YACJ,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;YAC1E,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|