@revenium/openai 1.0.8
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/LICENSE +21 -0
- package/README.md +1095 -0
- package/dist/cjs/core/config/azure-config.js +64 -0
- package/dist/cjs/core/config/azure-config.js.map +1 -0
- package/dist/cjs/core/config/index.js +41 -0
- package/dist/cjs/core/config/index.js.map +1 -0
- package/dist/cjs/core/config/loader.js +63 -0
- package/dist/cjs/core/config/loader.js.map +1 -0
- package/dist/cjs/core/config/manager.js +93 -0
- package/dist/cjs/core/config/manager.js.map +1 -0
- package/dist/cjs/core/config/validator.js +73 -0
- package/dist/cjs/core/config/validator.js.map +1 -0
- package/dist/cjs/core/providers/detector.js +140 -0
- package/dist/cjs/core/providers/detector.js.map +1 -0
- package/dist/cjs/core/providers/index.js +18 -0
- package/dist/cjs/core/providers/index.js.map +1 -0
- package/dist/cjs/core/tracking/api-client.js +68 -0
- package/dist/cjs/core/tracking/api-client.js.map +1 -0
- package/dist/cjs/core/tracking/index.js +23 -0
- package/dist/cjs/core/tracking/index.js.map +1 -0
- package/dist/cjs/core/tracking/payload-builder.js +107 -0
- package/dist/cjs/core/tracking/payload-builder.js.map +1 -0
- package/dist/cjs/core/tracking/usage-tracker.js +120 -0
- package/dist/cjs/core/tracking/usage-tracker.js.map +1 -0
- package/dist/cjs/core/wrapper/index.js +15 -0
- package/dist/cjs/core/wrapper/index.js.map +1 -0
- package/dist/cjs/core/wrapper/instance-patcher.js +202 -0
- package/dist/cjs/core/wrapper/instance-patcher.js.map +1 -0
- package/dist/cjs/core/wrapper/request-handler.js +317 -0
- package/dist/cjs/core/wrapper/request-handler.js.map +1 -0
- package/dist/cjs/core/wrapper/stream-wrapper.js +82 -0
- package/dist/cjs/core/wrapper/stream-wrapper.js.map +1 -0
- package/dist/cjs/index.js +195 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/types/function-parameters.js +14 -0
- package/dist/cjs/types/function-parameters.js.map +1 -0
- package/dist/cjs/types/index.js +49 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/openai-augmentation.js +55 -0
- package/dist/cjs/types/openai-augmentation.js.map +1 -0
- package/dist/cjs/types/responses-api.js +30 -0
- package/dist/cjs/types/responses-api.js.map +1 -0
- package/dist/cjs/utils/azure-model-resolver.js +211 -0
- package/dist/cjs/utils/azure-model-resolver.js.map +1 -0
- package/dist/cjs/utils/constants.js +24 -0
- package/dist/cjs/utils/constants.js.map +1 -0
- package/dist/cjs/utils/error-handler.js +194 -0
- package/dist/cjs/utils/error-handler.js.map +1 -0
- package/dist/cjs/utils/metadata-builder.js +184 -0
- package/dist/cjs/utils/metadata-builder.js.map +1 -0
- package/dist/cjs/utils/provider-detection.js +212 -0
- package/dist/cjs/utils/provider-detection.js.map +1 -0
- package/dist/cjs/utils/request-handler-factory.js +185 -0
- package/dist/cjs/utils/request-handler-factory.js.map +1 -0
- package/dist/cjs/utils/stop-reason-mapper.js +70 -0
- package/dist/cjs/utils/stop-reason-mapper.js.map +1 -0
- package/dist/cjs/utils/type-guards.js +175 -0
- package/dist/cjs/utils/type-guards.js.map +1 -0
- package/dist/cjs/utils/url-builder.js +43 -0
- package/dist/cjs/utils/url-builder.js.map +1 -0
- package/dist/esm/core/config/azure-config.js +61 -0
- package/dist/esm/core/config/azure-config.js.map +1 -0
- package/dist/esm/core/config/index.js +13 -0
- package/dist/esm/core/config/index.js.map +1 -0
- package/dist/esm/core/config/loader.js +58 -0
- package/dist/esm/core/config/loader.js.map +1 -0
- package/dist/esm/core/config/manager.js +85 -0
- package/dist/esm/core/config/manager.js.map +1 -0
- package/dist/esm/core/config/validator.js +69 -0
- package/dist/esm/core/config/validator.js.map +1 -0
- package/dist/esm/core/providers/detector.js +134 -0
- package/dist/esm/core/providers/detector.js.map +1 -0
- package/dist/esm/core/providers/index.js +10 -0
- package/dist/esm/core/providers/index.js.map +1 -0
- package/dist/esm/core/tracking/api-client.js +65 -0
- package/dist/esm/core/tracking/api-client.js.map +1 -0
- package/dist/esm/core/tracking/index.js +13 -0
- package/dist/esm/core/tracking/index.js.map +1 -0
- package/dist/esm/core/tracking/payload-builder.js +104 -0
- package/dist/esm/core/tracking/payload-builder.js.map +1 -0
- package/dist/esm/core/tracking/usage-tracker.js +114 -0
- package/dist/esm/core/tracking/usage-tracker.js.map +1 -0
- package/dist/esm/core/wrapper/index.js +9 -0
- package/dist/esm/core/wrapper/index.js.map +1 -0
- package/dist/esm/core/wrapper/instance-patcher.js +199 -0
- package/dist/esm/core/wrapper/instance-patcher.js.map +1 -0
- package/dist/esm/core/wrapper/request-handler.js +310 -0
- package/dist/esm/core/wrapper/request-handler.js.map +1 -0
- package/dist/esm/core/wrapper/stream-wrapper.js +79 -0
- package/dist/esm/core/wrapper/stream-wrapper.js.map +1 -0
- package/dist/esm/index.js +175 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types/function-parameters.js +13 -0
- package/dist/esm/types/function-parameters.js.map +1 -0
- package/dist/esm/types/index.js +32 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/openai-augmentation.js +54 -0
- package/dist/esm/types/openai-augmentation.js.map +1 -0
- package/dist/esm/types/responses-api.js +26 -0
- package/dist/esm/types/responses-api.js.map +1 -0
- package/dist/esm/utils/azure-model-resolver.js +204 -0
- package/dist/esm/utils/azure-model-resolver.js.map +1 -0
- package/dist/esm/utils/constants.js +21 -0
- package/dist/esm/utils/constants.js.map +1 -0
- package/dist/esm/utils/error-handler.js +182 -0
- package/dist/esm/utils/error-handler.js.map +1 -0
- package/dist/esm/utils/metadata-builder.js +176 -0
- package/dist/esm/utils/metadata-builder.js.map +1 -0
- package/dist/esm/utils/provider-detection.js +206 -0
- package/dist/esm/utils/provider-detection.js.map +1 -0
- package/dist/esm/utils/request-handler-factory.js +146 -0
- package/dist/esm/utils/request-handler-factory.js.map +1 -0
- package/dist/esm/utils/stop-reason-mapper.js +65 -0
- package/dist/esm/utils/stop-reason-mapper.js.map +1 -0
- package/dist/esm/utils/type-guards.js +158 -0
- package/dist/esm/utils/type-guards.js.map +1 -0
- package/dist/esm/utils/url-builder.js +39 -0
- package/dist/esm/utils/url-builder.js.map +1 -0
- package/dist/types/core/config/azure-config.d.ts +16 -0
- package/dist/types/core/config/azure-config.d.ts.map +1 -0
- package/dist/types/core/config/index.d.ts +11 -0
- package/dist/types/core/config/index.d.ts.map +1 -0
- package/dist/types/core/config/loader.d.ts +20 -0
- package/dist/types/core/config/loader.d.ts.map +1 -0
- package/dist/types/core/config/manager.d.ts +32 -0
- package/dist/types/core/config/manager.d.ts.map +1 -0
- package/dist/types/core/config/validator.d.ts +23 -0
- package/dist/types/core/config/validator.d.ts.map +1 -0
- package/dist/types/core/providers/detector.d.ts +44 -0
- package/dist/types/core/providers/detector.d.ts.map +1 -0
- package/dist/types/core/providers/index.d.ts +9 -0
- package/dist/types/core/providers/index.d.ts.map +1 -0
- package/dist/types/core/tracking/api-client.d.ts +17 -0
- package/dist/types/core/tracking/api-client.d.ts.map +1 -0
- package/dist/types/core/tracking/index.d.ts +11 -0
- package/dist/types/core/tracking/index.d.ts.map +1 -0
- package/dist/types/core/tracking/payload-builder.d.ts +24 -0
- package/dist/types/core/tracking/payload-builder.d.ts.map +1 -0
- package/dist/types/core/tracking/usage-tracker.d.ts +48 -0
- package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -0
- package/dist/types/core/wrapper/index.d.ts +8 -0
- package/dist/types/core/wrapper/index.d.ts.map +1 -0
- package/dist/types/core/wrapper/instance-patcher.d.ts +33 -0
- package/dist/types/core/wrapper/instance-patcher.d.ts.map +1 -0
- package/dist/types/core/wrapper/request-handler.d.ts +29 -0
- package/dist/types/core/wrapper/request-handler.d.ts.map +1 -0
- package/dist/types/core/wrapper/stream-wrapper.d.ts +13 -0
- package/dist/types/core/wrapper/stream-wrapper.d.ts.map +1 -0
- package/dist/types/index.d.ts +179 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/types/function-parameters.d.ts +229 -0
- package/dist/types/types/function-parameters.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +283 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/openai-augmentation.d.ts +226 -0
- package/dist/types/types/openai-augmentation.d.ts.map +1 -0
- package/dist/types/types/responses-api.d.ts +247 -0
- package/dist/types/types/responses-api.d.ts.map +1 -0
- package/dist/types/utils/azure-model-resolver.d.ts +41 -0
- package/dist/types/utils/azure-model-resolver.d.ts.map +1 -0
- package/dist/types/utils/constants.d.ts +4 -0
- package/dist/types/utils/constants.d.ts.map +1 -0
- package/dist/types/utils/error-handler.d.ts +95 -0
- package/dist/types/utils/error-handler.d.ts.map +1 -0
- package/dist/types/utils/metadata-builder.d.ts +64 -0
- package/dist/types/utils/metadata-builder.d.ts.map +1 -0
- package/dist/types/utils/provider-detection.d.ts +51 -0
- package/dist/types/utils/provider-detection.d.ts.map +1 -0
- package/dist/types/utils/request-handler-factory.d.ts +81 -0
- package/dist/types/utils/request-handler-factory.d.ts.map +1 -0
- package/dist/types/utils/stop-reason-mapper.d.ts +29 -0
- package/dist/types/utils/stop-reason-mapper.d.ts.map +1 -0
- package/dist/types/utils/type-guards.d.ts +73 -0
- package/dist/types/utils/type-guards.d.ts.map +1 -0
- package/dist/types/utils/url-builder.d.ts +25 -0
- package/dist/types/utils/url-builder.d.ts.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Azure Configuration Module
|
|
4
|
+
*
|
|
5
|
+
* Handles Azure-specific configuration logic.
|
|
6
|
+
* Extracted from provider.ts for better separation of concerns.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.gatherAzureConfig = gatherAzureConfig;
|
|
10
|
+
const manager_js_1 = require("./manager.js");
|
|
11
|
+
// Global logger
|
|
12
|
+
const logger = (0, manager_js_1.getLogger)();
|
|
13
|
+
/**
|
|
14
|
+
* Gather Azure configuration from client and environment
|
|
15
|
+
*
|
|
16
|
+
* @param client - OpenAI/AzureOpenAI client instance
|
|
17
|
+
* @returns AzureConfig object
|
|
18
|
+
*/
|
|
19
|
+
function gatherAzureConfig(client) {
|
|
20
|
+
const config = {};
|
|
21
|
+
try {
|
|
22
|
+
// Extract from client baseURL if available
|
|
23
|
+
if (client?.baseURL) {
|
|
24
|
+
const baseUrl = typeof client.baseURL === 'string' ? client.baseURL : client.baseURL?.toString();
|
|
25
|
+
config.endpoint = baseUrl;
|
|
26
|
+
}
|
|
27
|
+
// Extract from environment variables
|
|
28
|
+
if (process.env.AZURE_OPENAI_ENDPOINT) {
|
|
29
|
+
config.endpoint = process.env.AZURE_OPENAI_ENDPOINT;
|
|
30
|
+
}
|
|
31
|
+
if (process.env.AZURE_OPENAI_DEPLOYMENT) {
|
|
32
|
+
config.deployment = process.env.AZURE_OPENAI_DEPLOYMENT;
|
|
33
|
+
}
|
|
34
|
+
if (process.env.AZURE_OPENAI_API_VERSION) {
|
|
35
|
+
config.apiVersion = process.env.AZURE_OPENAI_API_VERSION;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// Default to preferred API version from Python learnings
|
|
39
|
+
config.apiVersion = '2024-12-01-preview';
|
|
40
|
+
}
|
|
41
|
+
if (process.env.AZURE_OPENAI_API_KEY) {
|
|
42
|
+
config.apiKey = process.env.AZURE_OPENAI_API_KEY;
|
|
43
|
+
}
|
|
44
|
+
if (process.env.AZURE_OPENAI_TENANT_ID) {
|
|
45
|
+
config.tenantId = process.env.AZURE_OPENAI_TENANT_ID;
|
|
46
|
+
}
|
|
47
|
+
if (process.env.AZURE_OPENAI_RESOURCE_GROUP) {
|
|
48
|
+
config.resourceGroup = process.env.AZURE_OPENAI_RESOURCE_GROUP;
|
|
49
|
+
}
|
|
50
|
+
logger.debug('Azure configuration gathered', {
|
|
51
|
+
hasEndpoint: !!config.endpoint,
|
|
52
|
+
hasDeployment: !!config.deployment,
|
|
53
|
+
hasApiKey: !!config.apiKey,
|
|
54
|
+
apiVersion: config.apiVersion,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
logger.warn('Error gathering Azure configuration', {
|
|
59
|
+
error: error instanceof Error ? error.message : String(error),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return config;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=azure-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-config.js","sourceRoot":"","sources":["../../../../src/core/config/azure-config.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAeH,8CAmDC;AA9DD,6CAAyC;AAEzC,gBAAgB;AAChB,MAAM,MAAM,GAAG,IAAA,sBAAS,GAAE,CAAC;AAE3B;;;;;GAKG;AACH,SAAgB,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,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YACnF,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,uBAAuB,EAAE,CAAC;YACxC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QAC1D,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;YACzC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,yDAAyD;YACzD,MAAM,CAAC,UAAU,GAAG,oBAAoB,CAAC;QAC3C,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACnD,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;YACvC,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;QACvD,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,CAAC;YAC5C,MAAM,CAAC,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;QACjE,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;YAC3C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;YAC9B,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU;YAClC,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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration module - Main exports
|
|
4
|
+
*
|
|
5
|
+
* This module provides a clean interface for configuration management,
|
|
6
|
+
* separating concerns into focused sub-modules.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.defaultLogger = exports.initializeConfig = exports.setLogger = exports.getLogger = exports.setConfig = exports.getConfig = exports.validateAzureConfig = exports.validateConfig = exports.hasAzureConfigInEnv = exports.loadAzureConfigFromEnv = exports.loadConfigFromEnv = void 0;
|
|
24
|
+
// Re-export all configuration functionality
|
|
25
|
+
var loader_js_1 = require("./loader.js");
|
|
26
|
+
Object.defineProperty(exports, "loadConfigFromEnv", { enumerable: true, get: function () { return loader_js_1.loadConfigFromEnv; } });
|
|
27
|
+
Object.defineProperty(exports, "loadAzureConfigFromEnv", { enumerable: true, get: function () { return loader_js_1.loadAzureConfigFromEnv; } });
|
|
28
|
+
Object.defineProperty(exports, "hasAzureConfigInEnv", { enumerable: true, get: function () { return loader_js_1.hasAzureConfigInEnv; } });
|
|
29
|
+
var validator_js_1 = require("./validator.js");
|
|
30
|
+
Object.defineProperty(exports, "validateConfig", { enumerable: true, get: function () { return validator_js_1.validateConfig; } });
|
|
31
|
+
Object.defineProperty(exports, "validateAzureConfig", { enumerable: true, get: function () { return validator_js_1.validateAzureConfig; } });
|
|
32
|
+
var manager_js_1 = require("./manager.js");
|
|
33
|
+
Object.defineProperty(exports, "getConfig", { enumerable: true, get: function () { return manager_js_1.getConfig; } });
|
|
34
|
+
Object.defineProperty(exports, "setConfig", { enumerable: true, get: function () { return manager_js_1.setConfig; } });
|
|
35
|
+
Object.defineProperty(exports, "getLogger", { enumerable: true, get: function () { return manager_js_1.getLogger; } });
|
|
36
|
+
Object.defineProperty(exports, "setLogger", { enumerable: true, get: function () { return manager_js_1.setLogger; } });
|
|
37
|
+
Object.defineProperty(exports, "initializeConfig", { enumerable: true, get: function () { return manager_js_1.initializeConfig; } });
|
|
38
|
+
Object.defineProperty(exports, "defaultLogger", { enumerable: true, get: function () { return manager_js_1.defaultLogger; } });
|
|
39
|
+
// Export Azure-specific configuration
|
|
40
|
+
__exportStar(require("./azure-config.js"), exports);
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/config/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,4CAA4C;AAC5C,yCAA6F;AAApF,8GAAA,iBAAiB,OAAA;AAAE,mHAAA,sBAAsB,OAAA;AAAE,gHAAA,mBAAmB,OAAA;AAEvE,+CAAqE;AAA5D,8GAAA,cAAc,OAAA;AAAE,mHAAA,mBAAmB,OAAA;AAE5C,2CAOsB;AANpB,uGAAA,SAAS,OAAA;AACT,uGAAA,SAAS,OAAA;AACT,uGAAA,SAAS,OAAA;AACT,uGAAA,SAAS,OAAA;AACT,8GAAA,gBAAgB,OAAA;AAChB,2GAAA,aAAa,OAAA;AAGf,sCAAsC;AACtC,oDAAkC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration Loader Module
|
|
4
|
+
*
|
|
5
|
+
* Handles loading configuration from environment variables.
|
|
6
|
+
* Separated from validation and management for single responsibility.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.loadConfigFromEnv = loadConfigFromEnv;
|
|
10
|
+
exports.loadAzureConfigFromEnv = loadAzureConfigFromEnv;
|
|
11
|
+
exports.hasAzureConfigInEnv = hasAzureConfigInEnv;
|
|
12
|
+
/**
|
|
13
|
+
* Default Revenium base URL for consistency with other middleware
|
|
14
|
+
*/
|
|
15
|
+
const DEFAULT_REVENIUM_BASE_URL = 'https://api.revenium.io/meter';
|
|
16
|
+
/**
|
|
17
|
+
* Load configuration from environment variables
|
|
18
|
+
*/
|
|
19
|
+
function loadConfigFromEnv() {
|
|
20
|
+
const reveniumApiKey = process.env.REVENIUM_METERING_API_KEY || process.env.REVENIUM_API_KEY;
|
|
21
|
+
const reveniumBaseUrl = process.env.REVENIUM_METERING_BASE_URL ||
|
|
22
|
+
process.env.REVENIUM_BASE_URL ||
|
|
23
|
+
DEFAULT_REVENIUM_BASE_URL;
|
|
24
|
+
const openaiApiKey = process.env.OPENAI_API_KEY;
|
|
25
|
+
if (!reveniumApiKey)
|
|
26
|
+
return null;
|
|
27
|
+
return {
|
|
28
|
+
reveniumApiKey,
|
|
29
|
+
reveniumBaseUrl,
|
|
30
|
+
openaiApiKey,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Load Azure configuration from environment variables
|
|
35
|
+
*/
|
|
36
|
+
function loadAzureConfigFromEnv() {
|
|
37
|
+
const endpoint = process.env.AZURE_OPENAI_ENDPOINT;
|
|
38
|
+
const deployment = process.env.AZURE_OPENAI_DEPLOYMENT;
|
|
39
|
+
const apiVersion = process.env.AZURE_OPENAI_API_VERSION;
|
|
40
|
+
const apiKey = process.env.AZURE_OPENAI_API_KEY;
|
|
41
|
+
const tenantId = process.env.AZURE_OPENAI_TENANT_ID;
|
|
42
|
+
const resourceGroup = process.env.AZURE_OPENAI_RESOURCE_GROUP;
|
|
43
|
+
// Return null if no Azure config is present
|
|
44
|
+
if (!endpoint && !deployment && !apiKey)
|
|
45
|
+
return null;
|
|
46
|
+
return {
|
|
47
|
+
endpoint,
|
|
48
|
+
deployment,
|
|
49
|
+
apiVersion: apiVersion || '2024-12-01-preview', // Default from Python learnings
|
|
50
|
+
apiKey,
|
|
51
|
+
tenantId,
|
|
52
|
+
resourceGroup,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check if Azure configuration is available in environment
|
|
57
|
+
*/
|
|
58
|
+
function hasAzureConfigInEnv() {
|
|
59
|
+
return !!(process.env.AZURE_OPENAI_ENDPOINT ||
|
|
60
|
+
process.env.AZURE_OPENAI_DEPLOYMENT ||
|
|
61
|
+
process.env.AZURE_OPENAI_API_KEY);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../src/core/config/loader.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAYH,8CAcC;AAKD,wDAkBC;AAKD,kDAMC;AAxDD;;GAEG;AACH,MAAM,yBAAyB,GAAG,+BAA+B,CAAC;AAElE;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC7F,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;;GAEG;AACH,SAAgB,sBAAsB;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IACnD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IACvD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IACxD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACpD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IAE9D,4CAA4C;IAC5C,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACrD,OAAO;QACL,QAAQ;QACR,UAAU;QACV,UAAU,EAAE,UAAU,IAAI,oBAAoB,EAAE,gCAAgC;QAChF,MAAM;QACN,QAAQ;QACR,aAAa;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB;IACjC,OAAO,CAAC,CAAC,CACP,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,OAAO,CAAC,GAAG,CAAC,uBAAuB;QACnC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CACjC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration Manager Module
|
|
4
|
+
*
|
|
5
|
+
* Handles global configuration state management and logging.
|
|
6
|
+
* Separated from loading and validation for single responsibility.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.defaultLogger = void 0;
|
|
10
|
+
exports.getConfig = getConfig;
|
|
11
|
+
exports.setConfig = setConfig;
|
|
12
|
+
exports.getLogger = getLogger;
|
|
13
|
+
exports.setLogger = setLogger;
|
|
14
|
+
exports.initializeConfig = initializeConfig;
|
|
15
|
+
const loader_js_1 = require("./loader.js");
|
|
16
|
+
const validator_js_1 = require("./validator.js");
|
|
17
|
+
/**
|
|
18
|
+
* Default console logger implementation
|
|
19
|
+
*/
|
|
20
|
+
exports.defaultLogger = {
|
|
21
|
+
debug: (message, ...args) => {
|
|
22
|
+
if (process.env.REVENIUM_DEBUG === 'true') {
|
|
23
|
+
console.debug(`[Revenium Debug] ${message}`, ...args);
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
info: (message, ...args) => {
|
|
27
|
+
console.info(`[Revenium] ${message}`, ...args);
|
|
28
|
+
},
|
|
29
|
+
warn: (message, ...args) => {
|
|
30
|
+
console.warn(`[Revenium Warning] ${message}`, ...args);
|
|
31
|
+
},
|
|
32
|
+
error: (message, ...args) => {
|
|
33
|
+
console.error(`[Revenium Error] ${message}`, ...args);
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Global configuration instance
|
|
38
|
+
*/
|
|
39
|
+
let globalConfig = null;
|
|
40
|
+
let globalLogger = exports.defaultLogger;
|
|
41
|
+
/**
|
|
42
|
+
* Get the current global configuration
|
|
43
|
+
*/
|
|
44
|
+
function getConfig() {
|
|
45
|
+
return globalConfig;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Set the global configuration
|
|
49
|
+
*/
|
|
50
|
+
function setConfig(config) {
|
|
51
|
+
(0, validator_js_1.validateConfig)(config);
|
|
52
|
+
globalConfig = config;
|
|
53
|
+
globalLogger.debug('Revenium configuration updated', {
|
|
54
|
+
baseUrl: config.reveniumBaseUrl,
|
|
55
|
+
hasApiKey: !!config.reveniumApiKey,
|
|
56
|
+
hasOpenAIKey: !!config.openaiApiKey,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get the current logger
|
|
61
|
+
*/
|
|
62
|
+
function getLogger() {
|
|
63
|
+
return globalLogger;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Set a custom logger
|
|
67
|
+
*/
|
|
68
|
+
function setLogger(logger) {
|
|
69
|
+
globalLogger = logger;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Initialize configuration from environment variables
|
|
73
|
+
*/
|
|
74
|
+
function initializeConfig() {
|
|
75
|
+
const envConfig = (0, loader_js_1.loadConfigFromEnv)();
|
|
76
|
+
if (envConfig) {
|
|
77
|
+
try {
|
|
78
|
+
setConfig(envConfig);
|
|
79
|
+
globalLogger.debug('Revenium middleware initialized from environment variables');
|
|
80
|
+
// Log Azure config availability for debugging
|
|
81
|
+
if ((0, loader_js_1.hasAzureConfigInEnv)()) {
|
|
82
|
+
globalLogger.debug('Azure OpenAI configuration detected in environment');
|
|
83
|
+
}
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
globalLogger.error('Failed to initialize Revenium configuration:', error);
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../src/core/config/manager.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAmCH,8BAEC;AAKD,8BAQC;AAKD,8BAEC;AAKD,8BAEC;AAKD,4CAmBC;AArFD,2CAAqE;AACrE,iDAAgD;AAEhD;;GAEG;AACU,QAAA,aAAa,GAAW;IACnC,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;YAC1C,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,qBAAa,CAAC;AAEzC;;GAEG;AACH,SAAgB,SAAS;IACvB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,MAAsB;IAC9C,IAAA,6BAAc,EAAC,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,SAAgB,SAAS;IACvB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,MAAc;IACtC,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB;IAC9B,MAAM,SAAS,GAAG,IAAA,6BAAiB,GAAE,CAAC;IACtC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,SAAS,CAAC,SAAS,CAAC,CAAC;YACrB,YAAY,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAEjF,8CAA8C;YAC9C,IAAI,IAAA,+BAAmB,GAAE,EAAE,CAAC;gBAC1B,YAAY,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YAC3E,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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration Validator Module
|
|
4
|
+
*
|
|
5
|
+
* Handles validation of configuration objects.
|
|
6
|
+
* Separated from loading and management for single responsibility.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.validateConfig = validateConfig;
|
|
10
|
+
exports.validateAzureConfig = validateAzureConfig;
|
|
11
|
+
/**
|
|
12
|
+
* Validate Revenium configuration
|
|
13
|
+
*/
|
|
14
|
+
function validateConfig(config) {
|
|
15
|
+
if (!config.reveniumApiKey) {
|
|
16
|
+
throw new Error('Revenium API key is required. Set REVENIUM_METERING_API_KEY environment variable or provide reveniumApiKey in config.');
|
|
17
|
+
}
|
|
18
|
+
if (!config.reveniumApiKey.startsWith('hak_')) {
|
|
19
|
+
throw new Error('Invalid Revenium API key format. Revenium API keys should start with "hak_"');
|
|
20
|
+
}
|
|
21
|
+
if (!config.reveniumBaseUrl) {
|
|
22
|
+
throw new Error('Revenium base URL is missing. This should not happen as a default URL should be provided.');
|
|
23
|
+
}
|
|
24
|
+
// Validate URL format
|
|
25
|
+
try {
|
|
26
|
+
new URL(config.reveniumBaseUrl);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
throw new Error(`Invalid Revenium base URL format: ${config.reveniumBaseUrl}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Validate Azure configuration completeness
|
|
34
|
+
*
|
|
35
|
+
* @param config - Azure configuration to validate
|
|
36
|
+
* @returns validation result with missing fields
|
|
37
|
+
*/
|
|
38
|
+
function validateAzureConfig(config) {
|
|
39
|
+
const missingFields = [];
|
|
40
|
+
const warnings = [];
|
|
41
|
+
// Required fields for basic Azure OpenAI operation
|
|
42
|
+
if (!config.endpoint) {
|
|
43
|
+
missingFields.push('endpoint');
|
|
44
|
+
}
|
|
45
|
+
if (!config.apiKey) {
|
|
46
|
+
missingFields.push('apiKey');
|
|
47
|
+
}
|
|
48
|
+
// Optional but recommended fields
|
|
49
|
+
if (!config.deployment) {
|
|
50
|
+
warnings.push('deployment name not specified - may need to be included in model parameter');
|
|
51
|
+
}
|
|
52
|
+
if (!config.apiVersion) {
|
|
53
|
+
warnings.push('API version not specified - using default 2024-12-01-preview');
|
|
54
|
+
}
|
|
55
|
+
// Validate endpoint format
|
|
56
|
+
if (config.endpoint) {
|
|
57
|
+
try {
|
|
58
|
+
new URL(config.endpoint);
|
|
59
|
+
if (!config.endpoint.toLowerCase().includes('azure')) {
|
|
60
|
+
warnings.push('endpoint does not contain "azure" - please verify this is an Azure OpenAI endpoint');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
missingFields.push('valid endpoint URL');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
isValid: missingFields.length === 0,
|
|
69
|
+
missingFields,
|
|
70
|
+
warnings,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../../src/core/config/validator.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAOH,wCAuBC;AAQD,kDA6CC;AA/ED;;GAEG;AACH,SAAgB,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,CAAC,6EAA6E,CAAC,CAAC;IACjG,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,CAAC,qCAAqC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IACjF,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,MAAmB;IAKrD,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,mDAAmD;IACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAChF,CAAC;IAED,2BAA2B;IAC3B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrD,QAAQ,CAAC,IAAI,CACX,oFAAoF,CACrF,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC;QACnC,aAAa;QACb,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Provider Detection Module
|
|
4
|
+
*
|
|
5
|
+
* Handles detection of AI providers (OpenAI vs Azure OpenAI).
|
|
6
|
+
* Extracted from provider.ts for better organization.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.detectProvider = detectProvider;
|
|
10
|
+
exports.hasAzureConfig = hasAzureConfig;
|
|
11
|
+
exports.validateAzureConfig = validateAzureConfig;
|
|
12
|
+
exports.getProviderMetadata = getProviderMetadata;
|
|
13
|
+
const index_js_1 = require("../../types/index.js");
|
|
14
|
+
const type_guards_js_1 = require("../../utils/type-guards.js");
|
|
15
|
+
const provider_detection_js_1 = require("../../utils/provider-detection.js");
|
|
16
|
+
const index_js_2 = require("../config/index.js");
|
|
17
|
+
// Global logger
|
|
18
|
+
const logger = (0, index_js_2.getLogger)();
|
|
19
|
+
/**
|
|
20
|
+
* Detect Azure OpenAI provider from client instance
|
|
21
|
+
*
|
|
22
|
+
* @param client - OpenAI or AzureOpenAI client instance
|
|
23
|
+
* @returns ProviderInfo with detection results
|
|
24
|
+
*/
|
|
25
|
+
function detectProvider(client) {
|
|
26
|
+
// Validate client instance
|
|
27
|
+
if (!(0, type_guards_js_1.isOpenAIClientInstance)(client)) {
|
|
28
|
+
logger.warn('Invalid OpenAI client instance provided to detectProvider');
|
|
29
|
+
return {
|
|
30
|
+
provider: index_js_1.Provider.OPENAI,
|
|
31
|
+
isAzure: false,
|
|
32
|
+
azureConfig: undefined,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
// Use strategy pattern for clean provider detection
|
|
37
|
+
const providerInfo = (0, provider_detection_js_1.createProviderInfo)(client, logger);
|
|
38
|
+
// Validate the result
|
|
39
|
+
const validation = (0, provider_detection_js_1.validateProviderInfo)(providerInfo);
|
|
40
|
+
if (validation.warnings.length > 0) {
|
|
41
|
+
logger.warn('Provider detection completed with warnings', {
|
|
42
|
+
warnings: validation.warnings,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
// Log final result
|
|
46
|
+
if (providerInfo.isAzure) {
|
|
47
|
+
logger.info('Azure OpenAI provider detected', {
|
|
48
|
+
provider: providerInfo.provider,
|
|
49
|
+
hasAzureConfig: !!providerInfo.azureConfig,
|
|
50
|
+
endpoint: providerInfo.azureConfig?.endpoint ? '[REDACTED]' : undefined,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
logger.debug('Standard OpenAI provider detected');
|
|
55
|
+
}
|
|
56
|
+
return providerInfo;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
logger.warn('Error during provider detection, defaulting to OpenAI', {
|
|
60
|
+
error: error instanceof Error ? error.message : String(error),
|
|
61
|
+
});
|
|
62
|
+
// Default to OpenAI on any error
|
|
63
|
+
return {
|
|
64
|
+
provider: index_js_1.Provider.OPENAI,
|
|
65
|
+
isAzure: false,
|
|
66
|
+
azureConfig: undefined,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Check if the current environment has Azure configuration
|
|
72
|
+
* This is a lightweight check for lazy loading decisions
|
|
73
|
+
*
|
|
74
|
+
* @returns boolean indicating if Azure config is present
|
|
75
|
+
*/
|
|
76
|
+
function hasAzureConfig() {
|
|
77
|
+
return !!(process.env.AZURE_OPENAI_ENDPOINT ||
|
|
78
|
+
process.env.AZURE_OPENAI_DEPLOYMENT ||
|
|
79
|
+
process.env.AZURE_OPENAI_API_KEY);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Validate Azure configuration completeness
|
|
83
|
+
*
|
|
84
|
+
* @param config - Azure configuration to validate
|
|
85
|
+
* @returns validation result with missing fields
|
|
86
|
+
*/
|
|
87
|
+
function validateAzureConfig(config) {
|
|
88
|
+
const missingFields = [];
|
|
89
|
+
const warnings = [];
|
|
90
|
+
// Required fields for basic Azure OpenAI operation
|
|
91
|
+
if (!config.endpoint) {
|
|
92
|
+
missingFields.push('endpoint');
|
|
93
|
+
}
|
|
94
|
+
if (!config.apiKey) {
|
|
95
|
+
missingFields.push('apiKey');
|
|
96
|
+
}
|
|
97
|
+
// Optional but recommended fields
|
|
98
|
+
if (!config.deployment) {
|
|
99
|
+
warnings.push('deployment name not specified - may need to be included in model parameter');
|
|
100
|
+
}
|
|
101
|
+
if (!config.apiVersion) {
|
|
102
|
+
warnings.push('API version not specified - using default 2024-12-01-preview');
|
|
103
|
+
}
|
|
104
|
+
// Validate endpoint format
|
|
105
|
+
if (config.endpoint) {
|
|
106
|
+
try {
|
|
107
|
+
new URL(config.endpoint);
|
|
108
|
+
if (!config.endpoint.toLowerCase().includes('azure')) {
|
|
109
|
+
warnings.push('endpoint does not contain "azure" - please verify this is an Azure OpenAI endpoint');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
missingFields.push('valid endpoint URL');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
isValid: missingFields.length === 0,
|
|
118
|
+
missingFields,
|
|
119
|
+
warnings,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get provider metadata for Revenium payload
|
|
124
|
+
*
|
|
125
|
+
* @param providerInfo - Provider detection result
|
|
126
|
+
* @returns metadata object for Revenium
|
|
127
|
+
*/
|
|
128
|
+
function getProviderMetadata(providerInfo) {
|
|
129
|
+
if (providerInfo.isAzure) {
|
|
130
|
+
return {
|
|
131
|
+
provider: 'Azure',
|
|
132
|
+
modelSource: 'OPENAI',
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
provider: 'OPENAI',
|
|
137
|
+
modelSource: 'OPENAI',
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../../src/core/providers/detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Providers module - Main exports
|
|
4
|
+
*
|
|
5
|
+
* This module provides a clean interface for provider detection and management,
|
|
6
|
+
* separating concerns into focused sub-modules.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.gatherAzureConfig = exports.getProviderMetadata = exports.validateAzureConfig = exports.hasAzureConfig = exports.detectProvider = void 0;
|
|
10
|
+
// Re-export all provider functionality
|
|
11
|
+
var detector_js_1 = require("./detector.js");
|
|
12
|
+
Object.defineProperty(exports, "detectProvider", { enumerable: true, get: function () { return detector_js_1.detectProvider; } });
|
|
13
|
+
Object.defineProperty(exports, "hasAzureConfig", { enumerable: true, get: function () { return detector_js_1.hasAzureConfig; } });
|
|
14
|
+
Object.defineProperty(exports, "validateAzureConfig", { enumerable: true, get: function () { return detector_js_1.validateAzureConfig; } });
|
|
15
|
+
Object.defineProperty(exports, "getProviderMetadata", { enumerable: true, get: function () { return detector_js_1.getProviderMetadata; } });
|
|
16
|
+
var azure_config_js_1 = require("../config/azure-config.js");
|
|
17
|
+
Object.defineProperty(exports, "gatherAzureConfig", { enumerable: true, get: function () { return azure_config_js_1.gatherAzureConfig; } });
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/providers/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,uCAAuC;AACvC,6CAKuB;AAJrB,6GAAA,cAAc,OAAA;AACd,6GAAA,cAAc,OAAA;AACd,kHAAA,mBAAmB,OAAA;AACnB,kHAAA,mBAAmB,OAAA;AAGrB,6DAA8D;AAArD,oHAAA,iBAAiB,OAAA"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Revenium API Client Module
|
|
4
|
+
*
|
|
5
|
+
* Handles HTTP communication with the Revenium API.
|
|
6
|
+
* Extracted from tracking.ts for single responsibility.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.sendToRevenium = sendToRevenium;
|
|
10
|
+
const index_js_1 = require("../config/index.js");
|
|
11
|
+
const url_builder_js_1 = require("../../utils/url-builder.js");
|
|
12
|
+
// Global logger
|
|
13
|
+
const logger = (0, index_js_1.getLogger)();
|
|
14
|
+
/**
|
|
15
|
+
* Send payload to Revenium API
|
|
16
|
+
*
|
|
17
|
+
* This is the shared HTTP function that eliminates all duplication
|
|
18
|
+
* between chat completions and embeddings tracking.
|
|
19
|
+
*
|
|
20
|
+
* @param payload - The payload to send to Revenium
|
|
21
|
+
*/
|
|
22
|
+
async function sendToRevenium(payload) {
|
|
23
|
+
const config = (0, index_js_1.getConfig)();
|
|
24
|
+
if (!config)
|
|
25
|
+
return logger.warn('Revenium configuration not found, skipping tracking');
|
|
26
|
+
// Use the new URL builder utility instead of nested conditionals
|
|
27
|
+
const url = (0, url_builder_js_1.buildReveniumUrl)(config.reveniumBaseUrl || 'https://api.revenium.io/meter', '/ai/completions');
|
|
28
|
+
logger.debug('Sending Revenium API request', {
|
|
29
|
+
url,
|
|
30
|
+
operationType: payload.operationType,
|
|
31
|
+
transactionId: payload.transactionId,
|
|
32
|
+
model: payload.model,
|
|
33
|
+
totalTokens: payload.totalTokenCount,
|
|
34
|
+
});
|
|
35
|
+
const response = await fetch(url, {
|
|
36
|
+
method: 'POST',
|
|
37
|
+
headers: {
|
|
38
|
+
'Content-Type': 'application/json',
|
|
39
|
+
Accept: 'application/json',
|
|
40
|
+
'x-api-key': config.reveniumApiKey,
|
|
41
|
+
},
|
|
42
|
+
body: JSON.stringify(payload),
|
|
43
|
+
});
|
|
44
|
+
logger.debug('Revenium API response', {
|
|
45
|
+
status: response.status,
|
|
46
|
+
statusText: response.statusText,
|
|
47
|
+
transactionId: payload.transactionId,
|
|
48
|
+
operationType: payload.operationType,
|
|
49
|
+
});
|
|
50
|
+
if (!response.ok) {
|
|
51
|
+
const responseText = await response.text();
|
|
52
|
+
logger.error('Revenium API error response', {
|
|
53
|
+
status: response.status,
|
|
54
|
+
statusText: response.statusText,
|
|
55
|
+
body: responseText,
|
|
56
|
+
transactionId: payload.transactionId,
|
|
57
|
+
operationType: payload.operationType,
|
|
58
|
+
});
|
|
59
|
+
throw new Error(`Revenium API error: ${response.status} ${response.statusText} - ${responseText}`);
|
|
60
|
+
}
|
|
61
|
+
const responseBody = await response.text();
|
|
62
|
+
logger.debug('Revenium tracking successful', {
|
|
63
|
+
transactionId: payload.transactionId,
|
|
64
|
+
operationType: payload.operationType,
|
|
65
|
+
response: responseBody,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../../src/core/tracking/api-client.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAiBH,wCAuDC;AArED,iDAA0D;AAC1D,+DAA8D;AAE9D,gBAAgB;AAChB,MAAM,MAAM,GAAG,IAAA,oBAAS,GAAE,CAAC;AAE3B;;;;;;;GAOG;AACI,KAAK,UAAU,cAAc,CAAC,OAAwB;IAC3D,MAAM,MAAM,GAAG,IAAA,oBAAS,GAAE,CAAC;IAC3B,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAEvF,iEAAiE;IACjE,MAAM,GAAG,GAAG,IAAA,iCAAgB,EAC1B,MAAM,CAAC,eAAe,IAAI,+BAA+B,EACzD,iBAAiB,CAClB,CAAC;IAEF,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;QAC3C,GAAG;QACH,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,eAAe;KACrC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;YAC1B,WAAW,EAAE,MAAM,CAAC,cAAc;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;QACpC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;YAC1C,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,IAAI,EAAE,YAAY;YAClB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,CACb,uBAAuB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,YAAY,EAAE,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3C,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;QAC3C,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tracking module - Main exports
|
|
4
|
+
*
|
|
5
|
+
* This module provides a clean interface for usage tracking,
|
|
6
|
+
* separating concerns into focused sub-modules.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.mapStopReason = exports.trackEmbeddingsUsageAsync = exports.trackUsageAsync = exports.sendReveniumEmbeddingsMetrics = exports.sendReveniumMetrics = exports.buildPayload = exports.sendToRevenium = void 0;
|
|
10
|
+
// Re-export all tracking functionality
|
|
11
|
+
var api_client_js_1 = require("./api-client.js");
|
|
12
|
+
Object.defineProperty(exports, "sendToRevenium", { enumerable: true, get: function () { return api_client_js_1.sendToRevenium; } });
|
|
13
|
+
var payload_builder_js_1 = require("./payload-builder.js");
|
|
14
|
+
Object.defineProperty(exports, "buildPayload", { enumerable: true, get: function () { return payload_builder_js_1.buildPayload; } });
|
|
15
|
+
var usage_tracker_js_1 = require("./usage-tracker.js");
|
|
16
|
+
Object.defineProperty(exports, "sendReveniumMetrics", { enumerable: true, get: function () { return usage_tracker_js_1.sendReveniumMetrics; } });
|
|
17
|
+
Object.defineProperty(exports, "sendReveniumEmbeddingsMetrics", { enumerable: true, get: function () { return usage_tracker_js_1.sendReveniumEmbeddingsMetrics; } });
|
|
18
|
+
Object.defineProperty(exports, "trackUsageAsync", { enumerable: true, get: function () { return usage_tracker_js_1.trackUsageAsync; } });
|
|
19
|
+
Object.defineProperty(exports, "trackEmbeddingsUsageAsync", { enumerable: true, get: function () { return usage_tracker_js_1.trackEmbeddingsUsageAsync; } });
|
|
20
|
+
// Export utility functions
|
|
21
|
+
var stop_reason_mapper_js_1 = require("../../utils/stop-reason-mapper.js");
|
|
22
|
+
Object.defineProperty(exports, "mapStopReason", { enumerable: true, get: function () { return stop_reason_mapper_js_1.mapStopReason; } });
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/tracking/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,uCAAuC;AACvC,iDAAiD;AAAxC,+GAAA,cAAc,OAAA;AAEvB,2DAAoD;AAA3C,kHAAA,YAAY,OAAA;AAErB,uDAK4B;AAJ1B,uHAAA,mBAAmB,OAAA;AACnB,iIAAA,6BAA6B,OAAA;AAC7B,mHAAA,eAAe,OAAA;AACf,6HAAA,yBAAyB,OAAA;AAG3B,2BAA2B;AAC3B,2EAAkE;AAAzD,sHAAA,aAAa,OAAA"}
|