@revenium/openai 1.1.0 → 1.1.1
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 +8 -28
- package/CHANGELOG.md +29 -1
- package/README.md +12 -12
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/utils/metadata-builder.js +21 -9
- package/dist/cjs/utils/metadata-builder.js.map +1 -1
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/utils/metadata-builder.js +21 -9
- package/dist/esm/utils/metadata-builder.js.map +1 -1
- package/dist/types/types/index.d.ts +14 -4
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/utils/metadata-builder.d.ts +3 -0
- package/dist/types/utils/metadata-builder.d.ts.map +1 -1
- package/examples/README.md +2 -2
- package/examples/azure/basic.ts +3 -3
- package/examples/azure/responses-basic.ts +4 -4
- package/examples/azure/responses-stream.ts +4 -4
- package/examples/azure/stream.ts +3 -3
- package/examples/getting_started.ts +2 -2
- package/examples/openai/basic.ts +3 -3
- package/examples/openai/metadata.ts +4 -4
- package/examples/openai/prompt-capture.ts +6 -6
- package/examples/openai/responses-basic.ts +4 -4
- package/examples/openai/responses-embed.ts +3 -3
- package/examples/openai/responses-streaming.ts +4 -4
- package/examples/openai/streaming.ts +3 -3
- package/package.json +1 -12
package/.env.example
CHANGED
|
@@ -1,35 +1,15 @@
|
|
|
1
|
-
#
|
|
2
|
-
OPENAI_API_KEY=sk-your-openai-api-key-here
|
|
3
|
-
|
|
4
|
-
# Azure OpenAI Configuration (Optional)
|
|
5
|
-
AZURE_OPENAI_API_KEY=your-azure-openai-api-key
|
|
6
|
-
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
|
|
7
|
-
AZURE_OPENAI_API_VERSION=2024-02-15-preview
|
|
8
|
-
|
|
9
|
-
# Revenium Metering Configuration
|
|
1
|
+
# Revenium Configuration (Required)
|
|
10
2
|
REVENIUM_METERING_API_KEY=hak_your_revenium_api_key_here
|
|
11
3
|
REVENIUM_METERING_BASE_URL=https://api.revenium.ai
|
|
12
4
|
|
|
13
|
-
#
|
|
14
|
-
|
|
15
|
-
REVENIUM_REGION=us-east-1
|
|
16
|
-
REVENIUM_CREDENTIAL_ALIAS=OpenAI Production Key
|
|
17
|
-
REVENIUM_TRACE_TYPE=customer_support
|
|
18
|
-
REVENIUM_TRACE_NAME=Support Ticket #12345
|
|
19
|
-
REVENIUM_PARENT_TRANSACTION_ID=parent-txn-123
|
|
20
|
-
REVENIUM_TRANSACTION_NAME=Answer Customer Question
|
|
21
|
-
REVENIUM_RETRY_NUMBER=0
|
|
5
|
+
# OpenAI Configuration (Required for OpenAI native API)
|
|
6
|
+
OPENAI_API_KEY=sk-your_openai_api_key_here
|
|
22
7
|
|
|
23
|
-
#
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
# Team ID required to display cost information in terminal summary
|
|
28
|
-
# Find your team ID in the Revenium web application
|
|
29
|
-
REVENIUM_TEAM_ID=your-team-id-here
|
|
8
|
+
# Azure OpenAI Configuration (Optional - for Azure OpenAI support)
|
|
9
|
+
AZURE_OPENAI_API_KEY=your_azure_openai_api_key
|
|
10
|
+
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
|
|
11
|
+
AZURE_OPENAI_API_VERSION=your_azure_openai_api_version
|
|
30
12
|
|
|
31
13
|
# Debug Configuration (Optional)
|
|
32
|
-
REVENIUM_DEBUG=false
|
|
14
|
+
REVENIUM_DEBUG=false # Set to true to enable debug logging
|
|
33
15
|
|
|
34
|
-
# AWS Region Detection (Optional - auto-detected if not set)
|
|
35
|
-
AWS_REGION=us-east-1
|
package/CHANGELOG.md
CHANGED
|
@@ -9,7 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
### Added
|
|
11
11
|
|
|
12
|
-
-
|
|
12
|
+
- Prompt capture functionality with comprehensive credential sanitization
|
|
13
|
+
- Automatic redaction of sensitive credentials in captured prompts:
|
|
13
14
|
- OpenAI keys (sk-_, sk-proj-_, sk-ant-\*)
|
|
14
15
|
- Perplexity keys (pplx-\*)
|
|
15
16
|
- AWS access keys (AKIA\*)
|
|
@@ -24,6 +25,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
24
25
|
- Fixed password regex pattern to properly handle quoted values
|
|
25
26
|
- Improved character class consistency across all patterns
|
|
26
27
|
|
|
28
|
+
## [1.0.16] - 2026-01-12
|
|
29
|
+
|
|
30
|
+
### Added
|
|
31
|
+
|
|
32
|
+
- **Trace Visualization Fields**: Full implementation of trace fields in payload builder
|
|
33
|
+
- `environment` - Deployment environment with fallback chain (REVENIUM_ENVIRONMENT → NODE_ENV → DEPLOYMENT_ENV)
|
|
34
|
+
- `region` - Cloud region with auto-detection from AWS/Azure/GCP and metadata service fallback
|
|
35
|
+
- `credentialAlias` - Human-readable credential name
|
|
36
|
+
- `traceType` - Categorical identifier with format validation (alphanumeric, hyphens, underscores, max 128 chars)
|
|
37
|
+
- `traceName` - Human-readable trace label with length validation (max 256 chars)
|
|
38
|
+
- `parentTransactionId` - Parent transaction reference for distributed tracing
|
|
39
|
+
- `transactionName` - Human-friendly operation label
|
|
40
|
+
- `retryNumber` - Retry attempt tracking (0 for first attempt, 1+ for retries)
|
|
41
|
+
- `operationSubtype` - Auto-detected operation details (e.g., function_call when tools are present)
|
|
42
|
+
|
|
43
|
+
### Changed
|
|
44
|
+
|
|
45
|
+
- Updated `buildPayload()` function to async to support region detection
|
|
46
|
+
- Enhanced README with comprehensive trace visualization fields documentation
|
|
47
|
+
- Added trace fields to TypeScript interface `ReveniumPayload`
|
|
48
|
+
|
|
49
|
+
### Documentation
|
|
50
|
+
|
|
51
|
+
- Added "Trace Visualization Fields" section to README with complete field descriptions
|
|
52
|
+
- Added example configuration for trace fields
|
|
53
|
+
- Updated documentation to match other middleware packages (anthropic-node, perplexity-node)
|
|
54
|
+
|
|
27
55
|
## [1.0.15] - 2025-12-09
|
|
28
56
|
|
|
29
57
|
### Added
|
package/README.md
CHANGED
|
@@ -110,18 +110,18 @@ The middleware provides a Go-aligned API with the following main functions:
|
|
|
110
110
|
|
|
111
111
|
The middleware supports the following optional metadata fields for tracking:
|
|
112
112
|
|
|
113
|
-
| Field | Type | Description
|
|
114
|
-
| ----------------------- | ------ |
|
|
115
|
-
| `traceId` | string | Unique identifier for session or conversation tracking
|
|
116
|
-
| `taskType` | string | Type of AI task being performed (e.g., "chat", "embedding")
|
|
117
|
-
| `agent` | string | AI agent or bot identifier
|
|
118
|
-
| `
|
|
119
|
-
| `
|
|
120
|
-
| `subscriptionId` | string | Subscription plan identifier
|
|
121
|
-
| `responseQualityScore` | number | Custom quality rating (0.0-1.0)
|
|
122
|
-
| `subscriber.id` | string | Unique user identifier
|
|
123
|
-
| `subscriber.email` | string | User email address
|
|
124
|
-
| `subscriber.credential` | object | Authentication credential (`name` and `value` fields)
|
|
113
|
+
| Field | Type | Description |
|
|
114
|
+
| ----------------------- | ------ | ------------------------------------------------------------ |
|
|
115
|
+
| `traceId` | string | Unique identifier for session or conversation tracking |
|
|
116
|
+
| `taskType` | string | Type of AI task being performed (e.g., "chat", "embedding") |
|
|
117
|
+
| `agent` | string | AI agent or bot identifier |
|
|
118
|
+
| `organizationName` | string | Organization or company name (used for lookup/auto-creation) |
|
|
119
|
+
| `productName` | string | Your product or feature name (used for lookup/auto-creation) |
|
|
120
|
+
| `subscriptionId` | string | Subscription plan identifier |
|
|
121
|
+
| `responseQualityScore` | number | Custom quality rating (0.0-1.0) |
|
|
122
|
+
| `subscriber.id` | string | Unique user identifier |
|
|
123
|
+
| `subscriber.email` | string | User email address |
|
|
124
|
+
| `subscriber.credential` | object | Authentication credential (`name` and `value` fields) |
|
|
125
125
|
|
|
126
126
|
**All metadata fields are optional.** For complete metadata documentation and usage examples, see:
|
|
127
127
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,qCAAqC;AACrC,2DAAyC;AAEzC,gCAAgC;AAChC,qDAAmC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,qCAAqC;AACrC,2DAAyC;AAEzC,gCAAgC;AAChC,qDAAmC;AAgGnC;;;;;GAKG;AACH,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,0BAA0B;IAC1B,6BAAiB,CAAA;IACjB,2BAA2B;IAC3B,yCAA6B,CAAA;AAC/B,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB"}
|
|
@@ -22,13 +22,14 @@ const METADATA_FIELD_MAP = [
|
|
|
22
22
|
{ source: "taskType" },
|
|
23
23
|
{ source: "agent" },
|
|
24
24
|
{ source: "organizationId" },
|
|
25
|
+
{ source: "organizationName" },
|
|
25
26
|
{ source: "productId" },
|
|
26
|
-
{ source: "
|
|
27
|
+
{ source: "productName" },
|
|
28
|
+
{ source: "subscriber" },
|
|
27
29
|
{ source: "subscriptionId" },
|
|
28
30
|
{
|
|
29
31
|
source: "responseQualityScore",
|
|
30
32
|
transform: (value) => {
|
|
31
|
-
// Ensure quality score is between 0.0 and 1.0 (API spec requirement)
|
|
32
33
|
if (typeof value === "number")
|
|
33
34
|
return Math.max(0, Math.min(1, value));
|
|
34
35
|
return value;
|
|
@@ -42,6 +43,9 @@ const METADATA_FIELD_MAP = [
|
|
|
42
43
|
* a clean, testable way to handle metadata transformation.
|
|
43
44
|
* Subscriber object is passed through directly without transformation.
|
|
44
45
|
*
|
|
46
|
+
* Implements field migration: organizationName/productName take priority over
|
|
47
|
+
* organizationId/productId for backward compatibility.
|
|
48
|
+
*
|
|
45
49
|
* @param usageMetadata - Source metadata from request
|
|
46
50
|
* @returns Clean metadata object for payload
|
|
47
51
|
*/
|
|
@@ -49,18 +53,26 @@ function buildMetadataFields(usageMetadata) {
|
|
|
49
53
|
if (!usageMetadata)
|
|
50
54
|
return {};
|
|
51
55
|
const result = {};
|
|
52
|
-
// Process all metadata fields including nested subscriber object
|
|
53
56
|
for (const config of METADATA_FIELD_MAP) {
|
|
54
57
|
const value = usageMetadata[config.source];
|
|
55
|
-
// Skip undefined values (but allow null, empty strings, objects, etc.)
|
|
56
58
|
if (value === undefined)
|
|
57
59
|
continue;
|
|
58
|
-
//
|
|
60
|
+
// Skip deprecated fields - they'll be handled by migration logic below
|
|
61
|
+
if (config.source === "organizationId" || config.source === "productId") {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
59
64
|
const transformedValue = config.transform ? config.transform(value) : value;
|
|
60
|
-
// Use target field name or default to source
|
|
61
65
|
const targetField = config.target || config.source;
|
|
62
66
|
result[targetField] = transformedValue;
|
|
63
67
|
}
|
|
68
|
+
// Handle field migration: new names take priority
|
|
69
|
+
if (usageMetadata.organizationName || usageMetadata.organizationId) {
|
|
70
|
+
result.organizationName =
|
|
71
|
+
usageMetadata.organizationName || usageMetadata.organizationId;
|
|
72
|
+
}
|
|
73
|
+
if (usageMetadata.productName || usageMetadata.productId) {
|
|
74
|
+
result.productName = usageMetadata.productName || usageMetadata.productId;
|
|
75
|
+
}
|
|
64
76
|
return result;
|
|
65
77
|
}
|
|
66
78
|
/**
|
|
@@ -151,9 +163,9 @@ function createLoggingContext(usageMetadata) {
|
|
|
151
163
|
traceId: usageMetadata.traceId,
|
|
152
164
|
taskType: usageMetadata.taskType,
|
|
153
165
|
subscriberId: usageMetadata.subscriber?.id,
|
|
154
|
-
subscriberEmail: sanitizedSubscriber?.email,
|
|
155
|
-
|
|
156
|
-
|
|
166
|
+
subscriberEmail: sanitizedSubscriber?.email,
|
|
167
|
+
organizationName: usageMetadata.organizationName || usageMetadata.organizationId,
|
|
168
|
+
productName: usageMetadata.productName || usageMetadata.productId,
|
|
157
169
|
agent: usageMetadata.agent,
|
|
158
170
|
};
|
|
159
171
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-builder.js","sourceRoot":"","sources":["../../../src/utils/metadata-builder.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"metadata-builder.js","sourceRoot":"","sources":["../../../src/utils/metadata-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qCAAqC;AACrC,cAAc,0BAA0B,CAAC;AAEzC,gCAAgC;AAChC,cAAc,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qCAAqC;AACrC,cAAc,0BAA0B,CAAC;AAEzC,gCAAgC;AAChC,cAAc,oBAAoB,CAAC;AAgGnC;;;;;GAKG;AACH,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,0BAA0B;IAC1B,6BAAiB,CAAA;IACjB,2BAA2B;IAC3B,yCAA6B,CAAA;AAC/B,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB"}
|
|
@@ -14,13 +14,14 @@ const METADATA_FIELD_MAP = [
|
|
|
14
14
|
{ source: "taskType" },
|
|
15
15
|
{ source: "agent" },
|
|
16
16
|
{ source: "organizationId" },
|
|
17
|
+
{ source: "organizationName" },
|
|
17
18
|
{ source: "productId" },
|
|
18
|
-
{ source: "
|
|
19
|
+
{ source: "productName" },
|
|
20
|
+
{ source: "subscriber" },
|
|
19
21
|
{ source: "subscriptionId" },
|
|
20
22
|
{
|
|
21
23
|
source: "responseQualityScore",
|
|
22
24
|
transform: (value) => {
|
|
23
|
-
// Ensure quality score is between 0.0 and 1.0 (API spec requirement)
|
|
24
25
|
if (typeof value === "number")
|
|
25
26
|
return Math.max(0, Math.min(1, value));
|
|
26
27
|
return value;
|
|
@@ -34,6 +35,9 @@ const METADATA_FIELD_MAP = [
|
|
|
34
35
|
* a clean, testable way to handle metadata transformation.
|
|
35
36
|
* Subscriber object is passed through directly without transformation.
|
|
36
37
|
*
|
|
38
|
+
* Implements field migration: organizationName/productName take priority over
|
|
39
|
+
* organizationId/productId for backward compatibility.
|
|
40
|
+
*
|
|
37
41
|
* @param usageMetadata - Source metadata from request
|
|
38
42
|
* @returns Clean metadata object for payload
|
|
39
43
|
*/
|
|
@@ -41,18 +45,26 @@ export function buildMetadataFields(usageMetadata) {
|
|
|
41
45
|
if (!usageMetadata)
|
|
42
46
|
return {};
|
|
43
47
|
const result = {};
|
|
44
|
-
// Process all metadata fields including nested subscriber object
|
|
45
48
|
for (const config of METADATA_FIELD_MAP) {
|
|
46
49
|
const value = usageMetadata[config.source];
|
|
47
|
-
// Skip undefined values (but allow null, empty strings, objects, etc.)
|
|
48
50
|
if (value === undefined)
|
|
49
51
|
continue;
|
|
50
|
-
//
|
|
52
|
+
// Skip deprecated fields - they'll be handled by migration logic below
|
|
53
|
+
if (config.source === "organizationId" || config.source === "productId") {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
51
56
|
const transformedValue = config.transform ? config.transform(value) : value;
|
|
52
|
-
// Use target field name or default to source
|
|
53
57
|
const targetField = config.target || config.source;
|
|
54
58
|
result[targetField] = transformedValue;
|
|
55
59
|
}
|
|
60
|
+
// Handle field migration: new names take priority
|
|
61
|
+
if (usageMetadata.organizationName || usageMetadata.organizationId) {
|
|
62
|
+
result.organizationName =
|
|
63
|
+
usageMetadata.organizationName || usageMetadata.organizationId;
|
|
64
|
+
}
|
|
65
|
+
if (usageMetadata.productName || usageMetadata.productId) {
|
|
66
|
+
result.productName = usageMetadata.productName || usageMetadata.productId;
|
|
67
|
+
}
|
|
56
68
|
return result;
|
|
57
69
|
}
|
|
58
70
|
/**
|
|
@@ -143,9 +155,9 @@ export function createLoggingContext(usageMetadata) {
|
|
|
143
155
|
traceId: usageMetadata.traceId,
|
|
144
156
|
taskType: usageMetadata.taskType,
|
|
145
157
|
subscriberId: usageMetadata.subscriber?.id,
|
|
146
|
-
subscriberEmail: sanitizedSubscriber?.email,
|
|
147
|
-
|
|
148
|
-
|
|
158
|
+
subscriberEmail: sanitizedSubscriber?.email,
|
|
159
|
+
organizationName: usageMetadata.organizationName || usageMetadata.organizationId,
|
|
160
|
+
productName: usageMetadata.productName || usageMetadata.productId,
|
|
149
161
|
agent: usageMetadata.agent,
|
|
150
162
|
};
|
|
151
163
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-builder.js","sourceRoot":"","sources":["../../../src/utils/metadata-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH;;;;GAIG;AACH,MAAM,kBAAkB,GAA0B;IAChD,EAAE,MAAM,EAAE,SAAS,EAAE;IACrB,EAAE,MAAM,EAAE,UAAU,EAAE;IACtB,EAAE,MAAM,EAAE,OAAO,EAAE;IACnB,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAC5B,EAAE,MAAM,EAAE,WAAW,EAAE;IACvB,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"metadata-builder.js","sourceRoot":"","sources":["../../../src/utils/metadata-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,9 +42,19 @@ export interface Subscriber {
|
|
|
42
42
|
export interface UsageMetadata {
|
|
43
43
|
/** User identification information (nested structure for detailed tracking) */
|
|
44
44
|
subscriber?: Subscriber;
|
|
45
|
-
/**
|
|
45
|
+
/** Customer organization name for multi-tenant applications (used for lookup/auto-creation) */
|
|
46
|
+
organizationName?: string;
|
|
47
|
+
/**
|
|
48
|
+
* @deprecated Use organizationName instead. This field will be removed in a future version.
|
|
49
|
+
* Organization or company identifier for multi-tenant applications
|
|
50
|
+
*/
|
|
46
51
|
organizationId?: string;
|
|
47
|
-
/** Product or
|
|
52
|
+
/** Product or feature name that is using AI services (used for lookup/auto-creation) */
|
|
53
|
+
productName?: string;
|
|
54
|
+
/**
|
|
55
|
+
* @deprecated Use productName instead. This field will be removed in a future version.
|
|
56
|
+
* Product or application identifier for usage segmentation
|
|
57
|
+
*/
|
|
48
58
|
productId?: string;
|
|
49
59
|
/** Subscription identifier for billing and plan management */
|
|
50
60
|
subscriptionId?: string;
|
|
@@ -197,8 +207,8 @@ export interface ReveniumPayload {
|
|
|
197
207
|
traceId?: string;
|
|
198
208
|
taskType?: string;
|
|
199
209
|
agent?: string;
|
|
200
|
-
|
|
201
|
-
|
|
210
|
+
organizationName?: string;
|
|
211
|
+
productName?: string;
|
|
202
212
|
subscriber?: Subscriber;
|
|
203
213
|
subscriptionId?: string;
|
|
204
214
|
responseQualityScore?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,0BAA0B,CAAC;AAGzC,cAAc,oBAAoB,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,+EAA+E;IAC/E,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,9 @@ import { UsageMetadata } from "../types";
|
|
|
12
12
|
* a clean, testable way to handle metadata transformation.
|
|
13
13
|
* Subscriber object is passed through directly without transformation.
|
|
14
14
|
*
|
|
15
|
+
* Implements field migration: organizationName/productName take priority over
|
|
16
|
+
* organizationId/productId for backward compatibility.
|
|
17
|
+
*
|
|
15
18
|
* @param usageMetadata - Source metadata from request
|
|
16
19
|
* @returns Clean metadata object for payload
|
|
17
20
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-builder.d.ts","sourceRoot":"","sources":["../../../src/utils/metadata-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"metadata-builder.d.ts","sourceRoot":"","sources":["../../../src/utils/metadata-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAwCzC;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,CAAC,EAAE,aAAa,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgCzB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,CAAC,EAAE,aAAa,EAC7B,cAAc,GAAE,CAAC,MAAM,aAAa,CAAC,EAAO,GAC3C;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CA4CA;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,GAAG,OAAO,EAAE,CAAC,aAAa,GAAG,SAAS,CAAC,EAAE,GACxC,aAAa,CAQf;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,MAAM,EAAE,CAAC,GAAG;IAAE,aAAa,CAAC,EAAE,aAAa,CAAA;CAAE,GAC5C;IACD,QAAQ,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,WAAW,EAAE,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;CACvC,CAMA;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,CAAC,EAAE,aAAa,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqBzB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,aAAa,CAAC,EAAE,aAAa,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiCzB"}
|
package/examples/README.md
CHANGED
|
@@ -120,8 +120,8 @@ npx tsx examples/openai/metadata.ts
|
|
|
120
120
|
- `traceId` - Session or conversation tracking identifier
|
|
121
121
|
- `taskType` - Type of AI task being performed
|
|
122
122
|
- `agent` - AI agent or bot identifier
|
|
123
|
-
- `
|
|
124
|
-
- `
|
|
123
|
+
- `organizationName` - Organization name (used for lookup/auto-creation)
|
|
124
|
+
- `productName` - Product or service name (used for lookup/auto-creation)
|
|
125
125
|
- `subscriptionId` - Subscription tier identifier
|
|
126
126
|
- `responseQualityScore` - Quality rating (0.0-1.0)
|
|
127
127
|
- `subscriber` - Nested subscriber object with `id`, `email`, `credential` (with `name` and `value`)
|
package/examples/azure/basic.ts
CHANGED
|
@@ -14,8 +14,8 @@ async function main() {
|
|
|
14
14
|
|
|
15
15
|
// Create a metadata
|
|
16
16
|
const metadata: UsageMetadata = {
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
organizationName: "org-azure-demo",
|
|
18
|
+
productName: "prod-azure-integration",
|
|
19
19
|
taskType: "question-answering",
|
|
20
20
|
agent: "azure-assistant",
|
|
21
21
|
};
|
|
@@ -49,7 +49,7 @@ async function main() {
|
|
|
49
49
|
max_completion_tokens: 2000, // Increased for reasoning models (gpt-5-mini uses reasoning tokens)
|
|
50
50
|
// Note: Reasoning models like gpt-5-mini only support default temperature (1.0)
|
|
51
51
|
},
|
|
52
|
-
metadata
|
|
52
|
+
metadata,
|
|
53
53
|
);
|
|
54
54
|
|
|
55
55
|
// Display the response
|
|
@@ -18,8 +18,8 @@ async function main() {
|
|
|
18
18
|
|
|
19
19
|
// Create a metadata
|
|
20
20
|
const metadata: UsageMetadata = {
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
organizationName: "org-azure-responses",
|
|
22
|
+
productName: "prod-azure-responses",
|
|
23
23
|
};
|
|
24
24
|
|
|
25
25
|
try {
|
|
@@ -28,7 +28,7 @@ async function main() {
|
|
|
28
28
|
model: "gpt-5-mini-2", // Your Azure deployment name
|
|
29
29
|
input: "What is the capital of France?",
|
|
30
30
|
},
|
|
31
|
-
metadata
|
|
31
|
+
metadata,
|
|
32
32
|
);
|
|
33
33
|
|
|
34
34
|
// Display response
|
|
@@ -37,7 +37,7 @@ async function main() {
|
|
|
37
37
|
} catch (error) {
|
|
38
38
|
console.error("Error:", (error as Error).message);
|
|
39
39
|
console.log(
|
|
40
|
-
"\nNote: Responses API is experimental and may not be available in all OpenAI SDK versions"
|
|
40
|
+
"\nNote: Responses API is experimental and may not be available in all OpenAI SDK versions",
|
|
41
41
|
);
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -18,8 +18,8 @@ async function main() {
|
|
|
18
18
|
|
|
19
19
|
// Create a metadata
|
|
20
20
|
const metadata: UsageMetadata = {
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
organizationName: "org-azure-responses-streaming-demo",
|
|
22
|
+
productName: "prod-azure-responses",
|
|
23
23
|
taskType: "creative-writing",
|
|
24
24
|
};
|
|
25
25
|
|
|
@@ -31,7 +31,7 @@ async function main() {
|
|
|
31
31
|
input: "Write a short poem about the ocean.",
|
|
32
32
|
stream: true as const,
|
|
33
33
|
},
|
|
34
|
-
metadata
|
|
34
|
+
metadata,
|
|
35
35
|
);
|
|
36
36
|
|
|
37
37
|
// Process the stream
|
|
@@ -53,7 +53,7 @@ async function main() {
|
|
|
53
53
|
} catch (error) {
|
|
54
54
|
console.error("Error:", (error as Error).message);
|
|
55
55
|
console.log(
|
|
56
|
-
"\nNote: Responses API is experimental and may not be available in all OpenAI SDK versions"
|
|
56
|
+
"\nNote: Responses API is experimental and may not be available in all OpenAI SDK versions",
|
|
57
57
|
);
|
|
58
58
|
}
|
|
59
59
|
}
|
package/examples/azure/stream.ts
CHANGED
|
@@ -14,8 +14,8 @@ async function main() {
|
|
|
14
14
|
|
|
15
15
|
// Create a metadata
|
|
16
16
|
const metadata: UsageMetadata = {
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
organizationName: "org-azure-streaming",
|
|
18
|
+
productName: "prod-azure-integration",
|
|
19
19
|
taskType: "creative-writing",
|
|
20
20
|
agent: "azure-poet",
|
|
21
21
|
};
|
|
@@ -39,7 +39,7 @@ async function main() {
|
|
|
39
39
|
max_completion_tokens: 2000,
|
|
40
40
|
stream: true as const,
|
|
41
41
|
},
|
|
42
|
-
metadata
|
|
42
|
+
metadata,
|
|
43
43
|
);
|
|
44
44
|
|
|
45
45
|
// Process the stream
|
|
@@ -17,8 +17,8 @@ async function main() {
|
|
|
17
17
|
|
|
18
18
|
// Create metadata
|
|
19
19
|
const metadata = {
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
organizationName: "org-getting-started-demo",
|
|
21
|
+
productName: "prod-getting-started",
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
// Make request
|
package/examples/openai/basic.ts
CHANGED
|
@@ -12,8 +12,8 @@ async function main() {
|
|
|
12
12
|
// Get client
|
|
13
13
|
const client = GetClient();
|
|
14
14
|
const metadata: UsageMetadata = {
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
organizationName: "org-basic-demo",
|
|
16
|
+
productName: "prod-openai-basic",
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
// Create chat completion
|
|
@@ -32,7 +32,7 @@ async function main() {
|
|
|
32
32
|
],
|
|
33
33
|
max_tokens: 1000,
|
|
34
34
|
},
|
|
35
|
-
metadata
|
|
35
|
+
metadata,
|
|
36
36
|
);
|
|
37
37
|
|
|
38
38
|
// Display response
|
|
@@ -15,11 +15,11 @@ async function main() {
|
|
|
15
15
|
// Optional metadata for advanced reporting, lineage tracking, and cost allocation
|
|
16
16
|
const metadata: UsageMetadata = {
|
|
17
17
|
// Organization & billing
|
|
18
|
-
|
|
18
|
+
organizationName: "org-metadata-demo",
|
|
19
19
|
subscriptionId: "plan-premium-2025",
|
|
20
20
|
|
|
21
21
|
// Product & task tracking
|
|
22
|
-
|
|
22
|
+
productName: "ai-assistant",
|
|
23
23
|
taskType: "explanation-request",
|
|
24
24
|
agent: "openai-metadata-chat-node",
|
|
25
25
|
|
|
@@ -27,7 +27,7 @@ async function main() {
|
|
|
27
27
|
traceId: "session-" + Date.now(),
|
|
28
28
|
|
|
29
29
|
// Quality metrics
|
|
30
|
-
responseQualityScore: 0.95,
|
|
30
|
+
responseQualityScore: 0.95,
|
|
31
31
|
|
|
32
32
|
// User tracking
|
|
33
33
|
subscriber: {
|
|
@@ -54,7 +54,7 @@ async function main() {
|
|
|
54
54
|
],
|
|
55
55
|
max_tokens: 1000,
|
|
56
56
|
},
|
|
57
|
-
metadata
|
|
57
|
+
metadata,
|
|
58
58
|
);
|
|
59
59
|
|
|
60
60
|
// Display response
|
|
@@ -32,8 +32,8 @@ async function main() {
|
|
|
32
32
|
},
|
|
33
33
|
],
|
|
34
34
|
usageMetadata: {
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
organizationName: "org-prompt-capture-demo",
|
|
36
|
+
productName: "prod-openai-prompt-capture",
|
|
37
37
|
},
|
|
38
38
|
});
|
|
39
39
|
|
|
@@ -42,7 +42,7 @@ async function main() {
|
|
|
42
42
|
} catch (error) {
|
|
43
43
|
console.error(
|
|
44
44
|
"Error:",
|
|
45
|
-
error instanceof Error ? error.message : String(error)
|
|
45
|
+
error instanceof Error ? error.message : String(error),
|
|
46
46
|
);
|
|
47
47
|
}
|
|
48
48
|
|
|
@@ -65,8 +65,8 @@ async function main() {
|
|
|
65
65
|
},
|
|
66
66
|
],
|
|
67
67
|
usageMetadata: {
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
organizationName: "org-prompt-capture-demo",
|
|
69
|
+
productName: "prod-openai-prompt-capture",
|
|
70
70
|
capturePrompts: false,
|
|
71
71
|
},
|
|
72
72
|
});
|
|
@@ -76,7 +76,7 @@ async function main() {
|
|
|
76
76
|
} catch (error) {
|
|
77
77
|
console.error(
|
|
78
78
|
"Error:",
|
|
79
|
-
error instanceof Error ? error.message : String(error)
|
|
79
|
+
error instanceof Error ? error.message : String(error),
|
|
80
80
|
);
|
|
81
81
|
}
|
|
82
82
|
|
|
@@ -17,8 +17,8 @@ async function main() {
|
|
|
17
17
|
|
|
18
18
|
// Create with metadata
|
|
19
19
|
const metadata: UsageMetadata = {
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
organizationName: "org-responses-basic-demo",
|
|
21
|
+
productName: "prod-openai-responses-basic",
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
try {
|
|
@@ -27,7 +27,7 @@ async function main() {
|
|
|
27
27
|
model: "gpt-4",
|
|
28
28
|
input: "What is the capital of France?",
|
|
29
29
|
},
|
|
30
|
-
metadata
|
|
30
|
+
metadata,
|
|
31
31
|
);
|
|
32
32
|
|
|
33
33
|
// Display response
|
|
@@ -36,7 +36,7 @@ async function main() {
|
|
|
36
36
|
} catch (error) {
|
|
37
37
|
console.error("Error:", (error as Error).message);
|
|
38
38
|
console.log(
|
|
39
|
-
"\nNote: Responses API is experimental and may not be available in all OpenAI SDK versions"
|
|
39
|
+
"\nNote: Responses API is experimental and may not be available in all OpenAI SDK versions",
|
|
40
40
|
);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
@@ -13,8 +13,8 @@ async function main() {
|
|
|
13
13
|
|
|
14
14
|
// Create with metadata
|
|
15
15
|
const metadata: UsageMetadata = {
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
organizationName: "org-responses-embed-demo",
|
|
17
|
+
productName: "prod-openai-responses-embed",
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
const embedding = await client.embeddings().create(
|
|
@@ -22,7 +22,7 @@ async function main() {
|
|
|
22
22
|
model: "text-embedding-3-small",
|
|
23
23
|
input: "Hello world",
|
|
24
24
|
},
|
|
25
|
-
metadata
|
|
25
|
+
metadata,
|
|
26
26
|
);
|
|
27
27
|
|
|
28
28
|
console.log("Model:", embedding.model);
|
|
@@ -18,8 +18,8 @@ async function main() {
|
|
|
18
18
|
|
|
19
19
|
// Create a metadata
|
|
20
20
|
const metadata: UsageMetadata = {
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
organizationName: "org-responses-streaming-demo",
|
|
22
|
+
productName: "prod-openai-responses",
|
|
23
23
|
taskType: "creative-writing",
|
|
24
24
|
};
|
|
25
25
|
|
|
@@ -31,7 +31,7 @@ async function main() {
|
|
|
31
31
|
input: "Write a short poem about the ocean.",
|
|
32
32
|
stream: true as const,
|
|
33
33
|
},
|
|
34
|
-
metadata
|
|
34
|
+
metadata,
|
|
35
35
|
);
|
|
36
36
|
|
|
37
37
|
// Process the stream
|
|
@@ -55,7 +55,7 @@ async function main() {
|
|
|
55
55
|
console.error("Error:", (error as Error).message);
|
|
56
56
|
console.error("Stack:", (error as Error).stack);
|
|
57
57
|
console.log(
|
|
58
|
-
"\nNote: Responses API is experimental and may not be available in all OpenAI SDK versions"
|
|
58
|
+
"\nNote: Responses API is experimental and may not be available in all OpenAI SDK versions",
|
|
59
59
|
);
|
|
60
60
|
}
|
|
61
61
|
}
|
|
@@ -15,8 +15,8 @@ async function main() {
|
|
|
15
15
|
|
|
16
16
|
// Create a metadata
|
|
17
17
|
const metadata: UsageMetadata = {
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
organizationName: "org-streaming-demo",
|
|
19
|
+
productName: "prod-openai-streaming",
|
|
20
20
|
taskType: "creative-writing",
|
|
21
21
|
agent: "story-generator",
|
|
22
22
|
};
|
|
@@ -41,7 +41,7 @@ async function main() {
|
|
|
41
41
|
max_tokens: 1000,
|
|
42
42
|
stream: true as const,
|
|
43
43
|
},
|
|
44
|
-
metadata
|
|
44
|
+
metadata,
|
|
45
45
|
);
|
|
46
46
|
|
|
47
47
|
// Process the stream
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@revenium/openai",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "Transparent TypeScript middleware for automatic Revenium usage tracking with OpenAI",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -25,13 +25,6 @@
|
|
|
25
25
|
"dev": "tsc --watch",
|
|
26
26
|
"clean": "node -e \"const fs = require('fs'); if (fs.existsSync('dist')) fs.rmSync('dist', {recursive: true, force: true})\"",
|
|
27
27
|
"prepublishOnly": "npm run clean && npm run build",
|
|
28
|
-
"test": "jest",
|
|
29
|
-
"test:unit": "jest --testPathPatterns=tests/unit",
|
|
30
|
-
"test:integration": "jest --testPathPatterns=tests/integration --passWithNoTests",
|
|
31
|
-
"test:performance": "jest --testPathPatterns=tests/performance --passWithNoTests",
|
|
32
|
-
"test:watch": "jest --watch",
|
|
33
|
-
"test:coverage": "jest --coverage",
|
|
34
|
-
"test:e2e": "jest --testPathPatterns=tests/integration/trace-fields.test.ts",
|
|
35
28
|
"example:getting-started": "npm run build && npx tsx examples/getting_started.ts",
|
|
36
29
|
"example:openai-basic": "npm run build && npx tsx examples/openai/basic.ts",
|
|
37
30
|
"example:openai-metadata": "npm run build && npx tsx examples/openai/metadata.ts",
|
|
@@ -66,13 +59,9 @@
|
|
|
66
59
|
"url": "https://github.com/revenium/revenium-middleware-openai-node/issues"
|
|
67
60
|
},
|
|
68
61
|
"devDependencies": {
|
|
69
|
-
"@jest/globals": "^30.2.0",
|
|
70
|
-
"@types/jest": "^30.0.0",
|
|
71
62
|
"@types/node": "^20.0.0",
|
|
72
63
|
"dotenv": "^16.5.0",
|
|
73
|
-
"jest": "^30.2.0",
|
|
74
64
|
"rimraf": "^6.0.1",
|
|
75
|
-
"ts-jest": "^29.4.6",
|
|
76
65
|
"ts-node": "^10.9.2",
|
|
77
66
|
"tsx": "^4.20.6",
|
|
78
67
|
"typescript": "^5.0.0"
|