@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
|
@@ -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,14 +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 === "true") {
|
|
15
16
|
console.debug(`[Revenium Debug] ${message}`, ...args);
|
|
16
17
|
}
|
|
17
18
|
},
|
|
@@ -42,7 +43,7 @@ export function getConfig() {
|
|
|
42
43
|
export function setConfig(config) {
|
|
43
44
|
validateConfig(config);
|
|
44
45
|
globalConfig = config;
|
|
45
|
-
globalLogger.debug(
|
|
46
|
+
globalLogger.debug("Revenium configuration updated", {
|
|
46
47
|
baseUrl: config.reveniumBaseUrl,
|
|
47
48
|
hasApiKey: !!config.reveniumApiKey,
|
|
48
49
|
hasOpenAIKey: !!config.openaiApiKey,
|
|
@@ -67,16 +68,22 @@ export function initializeConfig() {
|
|
|
67
68
|
const envConfig = loadConfigFromEnv();
|
|
68
69
|
if (envConfig) {
|
|
69
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
|
+
}
|
|
70
77
|
setConfig(envConfig);
|
|
71
|
-
globalLogger.debug(
|
|
78
|
+
globalLogger.debug("Revenium middleware initialized from environment variables");
|
|
72
79
|
// Log Azure config availability for debugging
|
|
73
80
|
if (hasAzureConfigInEnv()) {
|
|
74
|
-
globalLogger.debug(
|
|
81
|
+
globalLogger.debug("Azure OpenAI configuration detected in environment");
|
|
75
82
|
}
|
|
76
83
|
return true;
|
|
77
84
|
}
|
|
78
85
|
catch (error) {
|
|
79
|
-
globalLogger.error(
|
|
86
|
+
globalLogger.error("Failed to initialize Revenium configuration:", error);
|
|
80
87
|
return false;
|
|
81
88
|
}
|
|
82
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"}
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export function validateConfig(config) {
|
|
11
11
|
if (!config.reveniumApiKey) {
|
|
12
|
-
throw new Error(
|
|
12
|
+
throw new Error("Revenium API key is required. Set REVENIUM_METERING_API_KEY environment variable or provide reveniumApiKey in config.");
|
|
13
13
|
}
|
|
14
|
-
if (!config.reveniumApiKey.startsWith(
|
|
14
|
+
if (!config.reveniumApiKey.startsWith("hak_")) {
|
|
15
15
|
throw new Error('Invalid Revenium API key format. Revenium API keys should start with "hak_"');
|
|
16
16
|
}
|
|
17
17
|
if (!config.reveniumBaseUrl) {
|
|
18
|
-
throw new Error(
|
|
18
|
+
throw new Error("Revenium base URL is missing. This should not happen as a default URL should be provided.");
|
|
19
19
|
}
|
|
20
20
|
// Validate URL format
|
|
21
21
|
try {
|
|
@@ -25,45 +25,4 @@ export function validateConfig(config) {
|
|
|
25
25
|
throw new Error(`Invalid Revenium base URL format: ${config.reveniumBaseUrl}`);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
/**
|
|
29
|
-
* Validate Azure configuration completeness
|
|
30
|
-
*
|
|
31
|
-
* @param config - Azure configuration to validate
|
|
32
|
-
* @returns validation result with missing fields
|
|
33
|
-
*/
|
|
34
|
-
export function validateAzureConfig(config) {
|
|
35
|
-
const missingFields = [];
|
|
36
|
-
const warnings = [];
|
|
37
|
-
// Required fields for basic Azure OpenAI operation
|
|
38
|
-
if (!config.endpoint) {
|
|
39
|
-
missingFields.push('endpoint');
|
|
40
|
-
}
|
|
41
|
-
if (!config.apiKey) {
|
|
42
|
-
missingFields.push('apiKey');
|
|
43
|
-
}
|
|
44
|
-
// Optional but recommended fields
|
|
45
|
-
if (!config.deployment) {
|
|
46
|
-
warnings.push('deployment name not specified - may need to be included in model parameter');
|
|
47
|
-
}
|
|
48
|
-
if (!config.apiVersion) {
|
|
49
|
-
warnings.push('API version not specified - using default 2024-12-01-preview');
|
|
50
|
-
}
|
|
51
|
-
// Validate endpoint format
|
|
52
|
-
if (config.endpoint) {
|
|
53
|
-
try {
|
|
54
|
-
new URL(config.endpoint);
|
|
55
|
-
if (!config.endpoint.toLowerCase().includes('azure')) {
|
|
56
|
-
warnings.push('endpoint does not contain "azure" - please verify this is an Azure OpenAI endpoint');
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
missingFields.push('valid endpoint URL');
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return {
|
|
64
|
-
isValid: missingFields.length === 0,
|
|
65
|
-
missingFields,
|
|
66
|
-
warnings,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
28
|
//# sourceMappingURL=validator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../../src/core/config/validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAsB;IACnD,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../../src/core/config/validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAsB;IACnD,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,qCAAqC,MAAM,CAAC,eAAe,EAAE,CAC9D,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Middleware Module
|
|
3
|
+
*
|
|
4
|
+
* Exports all middleware components.
|
|
5
|
+
*/
|
|
6
|
+
export { ReveniumOpenAI } from './revenium-client.js';
|
|
7
|
+
export { ChatInterface, CompletionsInterface, EmbeddingsInterface, ResponsesInterface, StreamingWrapper, } from './interfaces.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC"}
|