@revenium/openai 1.0.12 → 1.0.13

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.
Files changed (71) hide show
  1. package/.env.example +8 -8
  2. package/CHANGELOG.md +26 -0
  3. package/README.md +57 -351
  4. package/dist/cjs/core/config/loader.js +1 -1
  5. package/dist/cjs/core/config/manager.js +2 -1
  6. package/dist/cjs/core/config/manager.js.map +1 -1
  7. package/dist/cjs/core/providers/detector.js +3 -3
  8. package/dist/cjs/core/providers/detector.js.map +1 -1
  9. package/dist/cjs/core/tracking/api-client.js +1 -1
  10. package/dist/cjs/core/tracking/payload-builder.js +17 -12
  11. package/dist/cjs/core/tracking/payload-builder.js.map +1 -1
  12. package/dist/cjs/index.js +23 -2
  13. package/dist/cjs/index.js.map +1 -1
  14. package/dist/cjs/types/index.js.map +1 -1
  15. package/dist/cjs/utils/metadata-builder.js +12 -5
  16. package/dist/cjs/utils/metadata-builder.js.map +1 -1
  17. package/dist/cjs/utils/stop-reason-mapper.js +4 -0
  18. package/dist/cjs/utils/stop-reason-mapper.js.map +1 -1
  19. package/dist/cjs/utils/url-builder.js +3 -3
  20. package/dist/esm/core/config/loader.js +1 -1
  21. package/dist/esm/core/config/manager.js +2 -1
  22. package/dist/esm/core/config/manager.js.map +1 -1
  23. package/dist/esm/core/providers/detector.js +3 -3
  24. package/dist/esm/core/providers/detector.js.map +1 -1
  25. package/dist/esm/core/tracking/api-client.js +1 -1
  26. package/dist/esm/core/tracking/payload-builder.js +17 -12
  27. package/dist/esm/core/tracking/payload-builder.js.map +1 -1
  28. package/dist/esm/index.js +22 -2
  29. package/dist/esm/index.js.map +1 -1
  30. package/dist/esm/types/index.js.map +1 -1
  31. package/dist/esm/utils/metadata-builder.js +12 -5
  32. package/dist/esm/utils/metadata-builder.js.map +1 -1
  33. package/dist/esm/utils/stop-reason-mapper.js +4 -0
  34. package/dist/esm/utils/stop-reason-mapper.js.map +1 -1
  35. package/dist/esm/utils/url-builder.js +3 -3
  36. package/dist/types/core/config/manager.d.ts.map +1 -1
  37. package/dist/types/core/tracking/payload-builder.d.ts.map +1 -1
  38. package/dist/types/index.d.ts +23 -2
  39. package/dist/types/index.d.ts.map +1 -1
  40. package/dist/types/types/index.d.ts +9 -13
  41. package/dist/types/types/index.d.ts.map +1 -1
  42. package/dist/types/types/openai-augmentation.d.ts +1 -2
  43. package/dist/types/types/openai-augmentation.d.ts.map +1 -1
  44. package/dist/types/utils/metadata-builder.d.ts +2 -1
  45. package/dist/types/utils/metadata-builder.d.ts.map +1 -1
  46. package/dist/types/utils/stop-reason-mapper.d.ts.map +1 -1
  47. package/dist/types/utils/url-builder.d.ts +3 -3
  48. package/examples/README.md +3 -41
  49. package/examples/azure-basic.ts +1 -1
  50. package/examples/azure-responses-basic.ts +3 -3
  51. package/examples/azure-responses-streaming.ts +3 -3
  52. package/examples/azure-streaming.ts +2 -2
  53. package/examples/getting_started.ts +1 -1
  54. package/examples/openai-basic.ts +2 -2
  55. package/examples/openai-function-calling.ts +2 -2
  56. package/examples/openai-responses-basic.ts +2 -2
  57. package/examples/openai-responses-streaming.ts +2 -2
  58. package/examples/openai-streaming.ts +1 -1
  59. package/examples/openai-vision.ts +2 -2
  60. package/package.json +1 -1
  61. package/src/core/config/loader.ts +1 -1
  62. package/src/core/config/manager.ts +2 -1
  63. package/src/core/providers/detector.ts +3 -3
  64. package/src/core/tracking/api-client.ts +1 -1
  65. package/src/core/tracking/payload-builder.ts +17 -12
  66. package/src/index.ts +27 -3
  67. package/src/types/index.ts +11 -14
  68. package/src/types/openai-augmentation.ts +1 -2
  69. package/src/utils/metadata-builder.ts +16 -7
  70. package/src/utils/stop-reason-mapper.ts +4 -0
  71. package/src/utils/url-builder.ts +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"stop-reason-mapper.js","sourceRoot":"","sources":["../../../src/utils/stop-reason-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,eAAe,GAA2B;IAC9C,mCAAmC;IACnC,IAAI,EAAE,KAAK;IACX,aAAa,EAAE,cAAc;IAC7B,UAAU,EAAE,cAAc;IAC1B,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,aAAa;IACrB,UAAU,EAAE,aAAa;IACzB,cAAc,EAAE,OAAO;IACvB,KAAK,EAAE,OAAO;IAEd,6DAA6D;IAC7D,QAAQ,EAAE,KAAK;IACf,aAAa,EAAE,cAAc;IAC7B,QAAQ,EAAE,cAAc;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAElC;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAC3B,kBAA6C,EAC7C,MAA4D;IAE5D,IAAI,CAAC,kBAAkB;QAAE,OAAO,mBAAmB,CAAC;IACpD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,YAAY,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAEvD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,mEAAmE;QACnE,MAAM,EAAE,IAAI,CAAC,wBAAwB,kBAAkB,gBAAgB,mBAAmB,EAAE,CAAC,CAAC;QAC9F,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,MAAM,CAAC,WAAW,EAAE,IAAI,eAAe,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"stop-reason-mapper.js","sourceRoot":"","sources":["../../../src/utils/stop-reason-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;GAGG;AACH,MAAM,eAAe,GAA2B;IAC9C,mCAAmC;IACnC,IAAI,EAAE,KAAK;IACX,aAAa,EAAE,cAAc;IAC7B,UAAU,EAAE,cAAc;IAC1B,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,aAAa;IACrB,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE,YAAY;IACxB,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,OAAO;IACvB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,WAAW,EAAG,wBAAwB;IAEhD,6DAA6D;IAC7D,QAAQ,EAAE,KAAK;IACf,aAAa,EAAE,cAAc;IAC7B,QAAQ,EAAE,cAAc;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAElC;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAC3B,kBAA6C,EAC7C,MAA4D;IAE5D,IAAI,CAAC,kBAAkB;QAAE,OAAO,mBAAmB,CAAC;IACpD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,YAAY,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAEvD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,mEAAmE;QACnE,MAAM,EAAE,IAAI,CAAC,wBAAwB,kBAAkB,gBAAgB,mBAAmB,EAAE,CAAC,CAAC;QAC9F,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,MAAM,CAAC,WAAW,EAAE,IAAI,eAAe,CAAC;AACjD,CAAC"}
@@ -14,9 +14,9 @@
14
14
  * - If URL has neither → append /meter/v2 and endpoint
15
15
  *
16
16
  * Examples:
17
- * - 'https://api.revenium.io' + '/ai/completions' → 'https://api.revenium.io/meter/v2/ai/completions'
18
- * - 'https://api.revenium.io/meter' + '/ai/completions' → 'https://api.revenium.io/meter/v2/ai/completions'
19
- * - 'https://api.revenium.io/meter/v2' + '/ai/completions' → 'https://api.revenium.io/meter/v2/ai/completions'
17
+ * - 'https://api.revenium.ai' + '/ai/completions' → 'https://api.revenium.ai/meter/v2/ai/completions'
18
+ * - 'https://api.revenium.ai/meter' + '/ai/completions' → 'https://api.revenium.ai/meter/v2/ai/completions'
19
+ * - 'https://api.revenium.ai/meter/v2' + '/ai/completions' → 'https://api.revenium.ai/meter/v2/ai/completions'
20
20
  *
21
21
  * @param baseUrl - The base URL from configuration (may include /meter or /meter/v2)
22
22
  * @param endpoint - The API endpoint to append (e.g., '/ai/completions')
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/core/config/manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI9D;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAQF;;GAEG;AACH,wBAAgB,SAAS,IAAI,cAAc,GAAG,IAAI,CAEjD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAQtD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAmB1C"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/core/config/manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI9D;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAgB3B,CAAC;AAQF;;GAEG;AACH,wBAAgB,SAAS,IAAI,cAAc,GAAG,IAAI,CAEjD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAQtD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAmB1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"payload-builder.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/payload-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,oCAAoC,CAAC;AAU5C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,MAAM,GAAG,OAAO,EAC/B,QAAQ,EAAE,kBAAkB,GAAG,uBAAuB,EACtD,OAAO,EAAE,iBAAiB,GAAG,sBAAsB,EACnD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,GAC1B,eAAe,CAsFjB"}
1
+ {"version":3,"file":"payload-builder.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/payload-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,oCAAoC,CAAC;AAU5C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,MAAM,GAAG,OAAO,EAC/B,QAAQ,EAAE,kBAAkB,GAAG,uBAAuB,EACtD,OAAO,EAAE,iBAAiB,GAAG,sBAAsB,EACnD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,GAC1B,eAAe,CA2FjB"}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * Environment Variables:
8
8
  * REVENIUM_METERING_API_KEY=hak_your_api_key
9
- * REVENIUM_METERING_BASE_URL=https://api.revenium.io (optional)
9
+ * REVENIUM_METERING_BASE_URL=https://api.revenium.ai (optional)
10
10
  * OPENAI_API_KEY=sk_your_openai_key
11
11
  *
12
12
  * Simple Usage (auto-initialization):
@@ -60,7 +60,7 @@ export type {
60
60
  * ```typescript
61
61
  * const config: ReveniumConfig = {
62
62
  * reveniumApiKey: 'hak_your_api_key',
63
- * reveniumBaseUrl: 'https://api.revenium.io',
63
+ * reveniumBaseUrl: 'https://api.revenium.ai',
64
64
  * debug: true
65
65
  * };
66
66
  * ```
@@ -152,6 +152,27 @@ export declare function initializeRevenium(config: ReveniumConfig): {
152
152
  success: boolean;
153
153
  message: string;
154
154
  };
155
+ /**
156
+ * Configure Revenium middleware manually
157
+ * Alias for initializeRevenium() with a more intuitive name
158
+ *
159
+ * @param config - Revenium configuration object
160
+ * @returns Initialization result with success status and message
161
+ *
162
+ * @example
163
+ * ```typescript
164
+ * import { configure } from '@revenium/openai';
165
+ *
166
+ * configure({
167
+ * reveniumApiKey: 'hak_your_api_key',
168
+ * reveniumBaseUrl: 'https://api.revenium.ai',
169
+ * });
170
+ * ```
171
+ */
172
+ export declare function configure(config: ReveniumConfig): {
173
+ success: boolean;
174
+ message: string;
175
+ };
155
176
  /**
156
177
  * Initialize Revenium middleware from environment variables
157
178
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAGH,OAAO,gCAAgC,CAAC;AAWxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMvD;;;;;;;GAOG;AACH,YAAY;AACV;;;;;;;;;;;;;;GAcG;AACH,cAAc;AAEd;;;;;;;;;;;;;;;;GAgBG;AACH,aAAa;AAEb;;;;;;;;;;;;;;;GAeG;AACH,MAAM;AAEN;;;;;;;;;;;;;;GAcG;AACH,WAAW;AAEX;;;;;GAKG;AACH,QAAQ;AAER;;;;;;;;;;;;;;;GAeG;AACH,YAAY,GACb,MAAM,SAAS,CAAC;AAOjB,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAGtF,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC;AAKzC;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAoCA;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CA8BA;AAED;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AA6B9D;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAQA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAGH,OAAO,gCAAgC,CAAC;AAWxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMvD;;;;;;;GAOG;AACH,YAAY;AACV;;;;;;;;;;;;;;GAcG;AACH,cAAc;AAEd;;;;;;;;;;;;;;;;GAgBG;AACH,aAAa;AAEb;;;;;;;;;;;;;;;GAeG;AACH,MAAM;AAEN;;;;;;;;;;;;;;GAcG;AACH,WAAW;AAEX;;;;;GAKG;AACH,QAAQ;AAER;;;;;;;;;;;;;;;GAeG;AACH,YAAY,GACb,MAAM,SAAS,CAAC;AAOjB,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAGtF,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC;AAKzC;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAoCA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAEA;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CA8BA;AAED;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AA6B9D;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAQA"}
@@ -73,7 +73,7 @@ export interface Subscriber {
73
73
  * productId: 'chat-assistant',
74
74
  * taskType: 'customer-support',
75
75
  * traceId: 'trace-789',
76
- * responseQualityScore: 0.95,
76
+ * responseQualityScore: 0.95, // 0.0-1.0 scale per API spec
77
77
  * agent: 'support-bot-v2'
78
78
  * };
79
79
  * ```
@@ -89,16 +89,12 @@ export interface UsageMetadata {
89
89
  subscriptionId?: string;
90
90
  /** Task type classification (e.g., 'chat', 'summarization', 'translation') */
91
91
  taskType?: string;
92
- /** Unique task identifier for request correlation */
93
- taskId?: string;
94
92
  /** Distributed tracing identifier for request tracking across services */
95
93
  traceId?: string;
96
- /** Quality score for response evaluation (0.0 to 1.0) */
94
+ /** Quality score for response evaluation (0.0-1.0 scale per API spec) */
97
95
  responseQualityScore?: number;
98
96
  /** Agent or model variant identifier for A/B testing and performance tracking */
99
97
  agent?: string;
100
- /** Allow additional custom fields for extensibility */
101
- [key: string]: unknown;
102
98
  }
103
99
  /**
104
100
  * Provider information for tracking API source
@@ -198,7 +194,7 @@ export interface AzureConfig {
198
194
  * ```typescript
199
195
  * const config: ReveniumConfig = {
200
196
  * reveniumApiKey: 'hak_your_revenium_api_key',
201
- * reveniumBaseUrl: 'https://api.revenium.io',
197
+ * reveniumBaseUrl: 'https://api.revenium.ai',
202
198
  * debug: true,
203
199
  * openaiApiKey: process.env.OPENAI_API_KEY
204
200
  * };
@@ -207,7 +203,7 @@ export interface AzureConfig {
207
203
  export interface ReveniumConfig {
208
204
  /** Revenium API key for authentication (required) */
209
205
  reveniumApiKey: string;
210
- /** Revenium API base URL (optional, defaults to https://api.revenium.io) */
206
+ /** Revenium API base URL (optional, defaults to https://api.revenium.ai) */
211
207
  reveniumBaseUrl?: string;
212
208
  /** Enable debug logging (optional, defaults to false) */
213
209
  debug?: boolean;
@@ -249,7 +245,7 @@ export interface Logger {
249
245
  */
250
246
  export interface ReveniumPayload {
251
247
  transactionId: string;
252
- operationType: 'CHAT' | 'EMBED';
248
+ operationType: 'CHAT' | 'GENERATE' | 'EMBED' | 'CLASSIFY' | 'SUMMARIZE' | 'TRANSLATE' | 'OTHER';
253
249
  costType: 'AI';
254
250
  model: string;
255
251
  provider: string;
@@ -262,12 +258,12 @@ export interface ReveniumPayload {
262
258
  inputTokenCount: number;
263
259
  outputTokenCount: number;
264
260
  totalTokenCount: number;
265
- reasoningTokenCount: number;
266
- cacheCreationTokenCount: number;
267
- cacheReadTokenCount: number;
261
+ reasoningTokenCount: number | undefined;
262
+ cacheCreationTokenCount: number | undefined;
263
+ cacheReadTokenCount: number | undefined;
268
264
  stopReason: string;
269
265
  isStreamed: boolean;
270
- timeToFirstToken?: number;
266
+ timeToFirstToken?: number | undefined;
271
267
  inputTokenCost?: number;
272
268
  outputTokenCost?: number;
273
269
  totalCost?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -147,8 +147,7 @@ declare module 'openai/resources/embeddings' {
147
147
  * },
148
148
  * organizationId: 'my-company',
149
149
  * productId: 'vector-search',
150
- * taskType: 'document-indexing',
151
- * taskId: 'batch-index-2024-01'
150
+ * taskType: 'document-indexing'
152
151
  * }
153
152
  * ```
154
153
  *
@@ -1 +1 @@
1
- {"version":3,"file":"openai-augmentation.d.ts","sourceRoot":"","sources":["../../../src/types/openai-augmentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,CAAC;AAEV;;;;;GAKG;AACH,OAAO,QAAQ,+CAA+C,CAAC;IAC7D,UAAU,8BAA8B;QACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAkCG;QACH,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B;IAED,UAAU,sCAAsC;QAC9C;;;;;;;WAOG;QACH,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B;IAED,UAAU,mCAAmC;QAC3C;;;;;;;WAOG;QACH,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B;CACF;AAED;;;;;GAKG;AACH,OAAO,QAAQ,6BAA6B,CAAC;IAC3C,UAAU,qBAAqB;QAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAoCG;QACH,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B;CACF;AAED;;;;;GAKG;AACH,OAAO,QAAQ,QAAQ,CAAC;IACtB,UAAU,SAAS,CAAC;QAClB,UAAU,oBAAoB;YAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAyCG;YACH,aAAa,CAAC,EAAE,aAAa,CAAC;SAC/B;KACF;CACF"}
1
+ {"version":3,"file":"openai-augmentation.d.ts","sourceRoot":"","sources":["../../../src/types/openai-augmentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EAAE,CAAC;AAEV;;;;;GAKG;AACH,OAAO,QAAQ,+CAA+C,CAAC;IAC7D,UAAU,8BAA8B;QACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAkCG;QACH,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B;IAED,UAAU,sCAAsC;QAC9C;;;;;;;WAOG;QACH,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B;IAED,UAAU,mCAAmC;QAC3C;;;;;;;WAOG;QACH,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B;CACF;AAED;;;;;GAKG;AACH,OAAO,QAAQ,6BAA6B,CAAC;IAC3C,UAAU,qBAAqB;QAC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAmCG;QACH,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B;CACF;AAED;;;;;GAKG;AACH,OAAO,QAAQ,QAAQ,CAAC;IACtB,UAAU,SAAS,CAAC;QAClB,UAAU,oBAAoB;YAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAyCG;YACH,aAAa,CAAC,EAAE,aAAa,CAAC;SAC/B;KACF;CACF"}
@@ -49,9 +49,10 @@ export declare function extractMetadata<T extends Record<string, unknown>>(param
49
49
  };
50
50
  /**
51
51
  * Create a metadata context for consistent logging
52
+ * Uses sanitization to protect PII (emails are masked)
52
53
  *
53
54
  * @param usageMetadata - Source metadata
54
- * @returns Logging context object
55
+ * @returns Logging context object with sanitized PII
55
56
  */
56
57
  export declare function createLoggingContext(usageMetadata?: UsageMetadata): Record<string, unknown>;
57
58
  /**
@@ -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,EAAc,MAAM,mBAAmB,CAAC;AAuC9D;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoB1F;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,CAmCA;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,OAAO,EAAE,CAAC,aAAa,GAAG,SAAS,CAAC,EAAE,GAAG,aAAa,CAQtF;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;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAW3F;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6BjG"}
1
+ {"version":3,"file":"metadata-builder.d.ts","sourceRoot":"","sources":["../../../src/utils/metadata-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAc,MAAM,mBAAmB,CAAC;AAuC9D;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoB1F;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,CAqCA;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,OAAO,EAAE,CAAC,aAAa,GAAG,SAAS,CAAC,EAAE,GAAG,aAAa,CAQtF;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,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgB3F;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA8BjG"}
@@ -1 +1 @@
1
- {"version":3,"file":"stop-reason-mapper.d.ts","sourceRoot":"","sources":["../../../src/utils/stop-reason-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA4BH;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC7C,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;CAAE,GAC3D,MAAM,CAYR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D"}
1
+ {"version":3,"file":"stop-reason-mapper.d.ts","sourceRoot":"","sources":["../../../src/utils/stop-reason-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgCH;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC7C,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;CAAE,GAC3D,MAAM,CAYR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D"}
@@ -14,9 +14,9 @@
14
14
  * - If URL has neither → append /meter/v2 and endpoint
15
15
  *
16
16
  * Examples:
17
- * - 'https://api.revenium.io' + '/ai/completions' → 'https://api.revenium.io/meter/v2/ai/completions'
18
- * - 'https://api.revenium.io/meter' + '/ai/completions' → 'https://api.revenium.io/meter/v2/ai/completions'
19
- * - 'https://api.revenium.io/meter/v2' + '/ai/completions' → 'https://api.revenium.io/meter/v2/ai/completions'
17
+ * - 'https://api.revenium.ai' + '/ai/completions' → 'https://api.revenium.ai/meter/v2/ai/completions'
18
+ * - 'https://api.revenium.ai/meter' + '/ai/completions' → 'https://api.revenium.ai/meter/v2/ai/completions'
19
+ * - 'https://api.revenium.ai/meter/v2' + '/ai/completions' → 'https://api.revenium.ai/meter/v2/ai/completions'
20
20
  *
21
21
  * @param baseUrl - The base URL from configuration (may include /meter or /meter/v2)
22
22
  * @param endpoint - The API endpoint to append (e.g., '/ai/completions')
@@ -32,7 +32,7 @@ REVENIUM_METERING_API_KEY=hak_your_revenium_api_key
32
32
  OPENAI_API_KEY=sk_your_openai_api_key
33
33
 
34
34
  # Optional
35
- REVENIUM_METERING_BASE_URL=https://api.revenium.io
35
+ REVENIUM_METERING_BASE_URL=https://api.revenium.ai
36
36
  REVENIUM_DEBUG=false
37
37
 
38
38
  # Optional - For Azure OpenAI examples
@@ -122,47 +122,9 @@ Demonstrates streaming responses with automatic token tracking:
122
122
 
123
123
  **See the file for complete code examples.**
124
124
 
125
- ### `openai-function-calling.ts` - Function Calling with Tools
125
+ ### `openai-responses-basic.ts` - Responses API
126
126
 
127
- Demonstrates OpenAI function calling (tools) with tracking:
128
-
129
- - **Tool definitions** - Define functions for the AI to call
130
- - **Function execution** - Handle tool calls and return results
131
- - **Multi-turn conversations** - Manage conversation flow with function results
132
-
133
- **Key Features:**
134
-
135
- - Complete function calling workflow
136
- - Type-safe tool definitions
137
- - Automatic tracking of tool usage
138
- - Multi-turn conversation handling
139
-
140
- **Perfect for:** AI agents, function-calling applications, structured outputs
141
-
142
- **See the file for complete code examples.**
143
-
144
- ### `openai-vision.ts` - Vision API with Images
145
-
146
- Demonstrates OpenAI Vision API with image analysis:
147
-
148
- - **Image URL analysis** - Analyze images from URLs
149
- - **Base64 images** - Process local images as base64
150
- - **Multi-image analysis** - Compare multiple images in one request
151
-
152
- **Key Features:**
153
-
154
- - Image analysis with GPT-4 Vision
155
- - Multiple image input methods
156
- - Detailed image descriptions
157
- - Usage tracking for vision API calls
158
-
159
- **Perfect for:** Image analysis applications, visual search, accessibility tools
160
-
161
- **See the file for complete code examples.**
162
-
163
- ### `openai-responses-basic.ts` - New Responses API
164
-
165
- Demonstrates OpenAI's new Responses API (SDK 5.8+):
127
+ Demonstrates OpenAI's Responses API:
166
128
 
167
129
  - **Simplified interface** - Uses `input` instead of `messages` parameter
168
130
  - **Stateful API** - Enhanced capabilities for agent-like applications
@@ -107,7 +107,7 @@ async function azureBasicExample() {
107
107
  traceId: 'azure-' + Date.now(),
108
108
 
109
109
  // Quality metrics
110
- responseQualityScore: 0.92,
110
+ responseQualityScore: 0.92, // 0.0-1.0 scale
111
111
  },
112
112
  });
113
113
 
@@ -44,7 +44,7 @@ async function main() {
44
44
  const azure = new OpenAI({
45
45
  apiKey: process.env.AZURE_OPENAI_API_KEY,
46
46
  baseURL: `${process.env.AZURE_OPENAI_ENDPOINT}/openai/deployments/${process.env.AZURE_OPENAI_DEPLOYMENT_NAME}`,
47
- defaultQuery: { 'api-version': '2024-10-21' },
47
+ defaultQuery: { 'api-version': '2024-12-01-preview' },
48
48
  defaultHeaders: {
49
49
  'api-key': process.env.AZURE_OPENAI_API_KEY,
50
50
  },
@@ -121,7 +121,7 @@ async function main() {
121
121
  traceId: 'azure-trace-789',
122
122
 
123
123
  // Quality metrics
124
- responseQualityScore: 0.96,
124
+ responseQualityScore: 0.96, // 0.0-1.0 scale
125
125
  },
126
126
  } as ResponsesCreateParams);
127
127
 
@@ -209,7 +209,7 @@ async function main() {
209
209
  traceId: 'azure-saas-trace-345',
210
210
 
211
211
  // Quality metrics
212
- responseQualityScore: 0.99,
212
+ responseQualityScore: 0.99, // 0.0-1.0 scale
213
213
  },
214
214
  } as ResponsesCreateParams);
215
215
 
@@ -44,7 +44,7 @@ async function main() {
44
44
  const azure = new OpenAI({
45
45
  apiKey: process.env.AZURE_OPENAI_API_KEY,
46
46
  baseURL: `${process.env.AZURE_OPENAI_ENDPOINT}/openai/deployments/${process.env.AZURE_OPENAI_DEPLOYMENT_NAME}`,
47
- defaultQuery: { 'api-version': '2024-10-21' },
47
+ defaultQuery: { 'api-version': '2024-12-01-preview' },
48
48
  defaultHeaders: {
49
49
  'api-key': process.env.AZURE_OPENAI_API_KEY,
50
50
  },
@@ -126,7 +126,7 @@ async function main() {
126
126
  traceId: 'azure-security-trace-789',
127
127
 
128
128
  // Quality metrics
129
- responseQualityScore: 0.94,
129
+ responseQualityScore: 0.94, // 0.0-1.0 scale
130
130
  },
131
131
  } as ResponsesCreateParams);
132
132
 
@@ -228,7 +228,7 @@ async function main() {
228
228
  traceId: 'azure-scalable-trace-345',
229
229
 
230
230
  // Quality metrics
231
- responseQualityScore: 0.98,
231
+ responseQualityScore: 0.98, // 0.0-1.0 scale
232
232
  },
233
233
  } as ResponsesCreateParams);
234
234
 
@@ -117,7 +117,7 @@ async function azureStreamingExample() {
117
117
  traceId: 'azure-stream-' + Date.now(),
118
118
 
119
119
  // Quality metrics
120
- responseQualityScore: 0.95,
120
+ responseQualityScore: 0.95, // 0.0-1.0 scale
121
121
  },
122
122
  });
123
123
 
@@ -184,7 +184,7 @@ async function azureStreamingExample() {
184
184
  traceId: 'azure-enterprise-' + Date.now(),
185
185
 
186
186
  // Quality metrics
187
- responseQualityScore: 0.96,
187
+ responseQualityScore: 0.96, // 0.0-1.0 scale
188
188
  },
189
189
  });
190
190
 
@@ -43,7 +43,7 @@ async function main() {
43
43
  traceId: 'session-' + Date.now(),
44
44
 
45
45
  // Quality metrics
46
- responseQualityScore: 0.95
46
+ responseQualityScore: 0.95 // 0.0-1.0 scale
47
47
  }
48
48
  */
49
49
  });
@@ -79,7 +79,7 @@ async function openaiBasicExample() {
79
79
  traceId: 'session-' + Date.now(),
80
80
 
81
81
  // Quality metrics
82
- responseQualityScore: 0.95,
82
+ responseQualityScore: 0.95, // 0.0-1.0 scale
83
83
  },
84
84
  });
85
85
 
@@ -133,7 +133,7 @@ async function openaiBasicExample() {
133
133
  traceId: 'embed-' + Date.now(),
134
134
 
135
135
  // Quality metrics
136
- responseQualityScore: 0.98,
136
+ responseQualityScore: 0.98, // 0.0-1.0 scale
137
137
  },
138
138
  });
139
139
 
@@ -170,7 +170,7 @@ async function openAIFunctionCallingExample() {
170
170
  taskType: 'function-calling-weather',
171
171
  traceId: `func-call-${Date.now()}`,
172
172
  agent: 'weather-assistant-node',
173
- responseQualityScore: 0.95,
173
+ responseQualityScore: 0.95, // 0.0-1.0 scale
174
174
  },
175
175
  });
176
176
 
@@ -228,7 +228,7 @@ async function openAIFunctionCallingExample() {
228
228
  taskType: 'function-calling-weather',
229
229
  traceId: `func-call-${Date.now()}`,
230
230
  agent: 'weather-assistant-node',
231
- responseQualityScore: 0.98,
231
+ responseQualityScore: 0.98, // 0.0-1.0 scale
232
232
  },
233
233
  });
234
234
 
@@ -103,7 +103,7 @@ async function main() {
103
103
  traceId: 'trace-789',
104
104
 
105
105
  // Quality metrics
106
- responseQualityScore: 0.95,
106
+ responseQualityScore: 0.95, // 0.0-1.0 scale
107
107
  },
108
108
  } as ResponsesCreateParams);
109
109
 
@@ -188,7 +188,7 @@ async function main() {
188
188
  traceId: 'enterprise-trace-012',
189
189
 
190
190
  // Quality metrics
191
- responseQualityScore: 0.98,
191
+ responseQualityScore: 0.98, // 0.0-1.0 scale
192
192
  },
193
193
  } as ResponsesCreateParams);
194
194
 
@@ -107,7 +107,7 @@ async function main() {
107
107
  traceId: 'stream-trace-789',
108
108
 
109
109
  // Quality metrics
110
- responseQualityScore: 0.92,
110
+ responseQualityScore: 0.92, // 0.0-1.0 scale
111
111
  },
112
112
  } as ResponsesCreateParams);
113
113
 
@@ -205,7 +205,7 @@ async function main() {
205
205
  traceId: 'advanced-stream-trace-345',
206
206
 
207
207
  // Quality metrics
208
- responseQualityScore: 0.97,
208
+ responseQualityScore: 0.97, // 0.0-1.0 scale
209
209
  },
210
210
  } as ResponsesCreateParams);
211
211
 
@@ -86,7 +86,7 @@ async function openaiStreamingExample() {
86
86
  traceId: 'stream-' + Date.now(),
87
87
 
88
88
  // Quality metrics
89
- responseQualityScore: 0.92,
89
+ responseQualityScore: 0.92, // 0.0-1.0 scale
90
90
  },
91
91
  });
92
92
 
@@ -108,7 +108,7 @@ async function openAIVisionExample() {
108
108
  taskType: 'image-analysis-detailed',
109
109
  traceId: `vision-${Date.now()}`,
110
110
  agent: 'vision-analyzer-node',
111
- responseQualityScore: 0.96,
111
+ responseQualityScore: 0.96, // 0.0-1.0 scale
112
112
  },
113
113
  });
114
114
 
@@ -164,7 +164,7 @@ async function openAIVisionExample() {
164
164
  taskType: 'multi-image-comparison',
165
165
  traceId: `multi-vision-${Date.now()}`,
166
166
  agent: 'comparison-analyzer-node',
167
- responseQualityScore: 0.88,
167
+ responseQualityScore: 0.88, // 0.0-1.0 scale
168
168
  },
169
169
  });
170
170
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revenium/openai",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
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",
@@ -10,7 +10,7 @@ import { ReveniumConfig, AzureConfig } from '../../types/index.js';
10
10
  /**
11
11
  * Default Revenium base URL for consistency with other middleware
12
12
  */
13
- const DEFAULT_REVENIUM_BASE_URL = 'https://api.revenium.io';
13
+ const DEFAULT_REVENIUM_BASE_URL = 'https://api.revenium.ai';
14
14
 
15
15
  /**
16
16
  * Load configuration from environment variables
@@ -14,7 +14,8 @@ import { validateConfig } from './validator.js';
14
14
  */
15
15
  export const defaultLogger: Logger = {
16
16
  debug: (message: string, ...args: unknown[]) => {
17
- if (process.env.REVENIUM_DEBUG === 'true') {
17
+ // Check both config.debug and environment variable
18
+ if (globalConfig?.debug || process.env.REVENIUM_DEBUG === 'true') {
18
19
  console.debug(`[Revenium Debug] ${message}`, ...args);
19
20
  }
20
21
  },
@@ -149,11 +149,11 @@ export function getProviderMetadata(providerInfo: ProviderInfo): {
149
149
  if (providerInfo.isAzure) {
150
150
  return {
151
151
  provider: 'Azure',
152
- modelSource: 'OPENAI',
152
+ modelSource: 'AZURE_OPENAI',
153
153
  };
154
154
  }
155
155
  return {
156
- provider: 'OPENAI',
157
- modelSource: 'OPENAI',
156
+ provider: 'OpenAI',
157
+ modelSource: 'OPENAI', // Provider name when calling directly per spec
158
158
  };
159
159
  }
@@ -26,7 +26,7 @@ export async function sendToRevenium(payload: ReveniumPayload): Promise<void> {
26
26
 
27
27
  // Use the new URL builder utility instead of nested conditionals
28
28
  const url = buildReveniumUrl(
29
- config.reveniumBaseUrl || 'https://api.revenium.io',
29
+ config.reveniumBaseUrl || 'https://api.revenium.ai',
30
30
  '/ai/completions'
31
31
  );
32
32
 
@@ -54,10 +54,10 @@ export function buildPayload(
54
54
  ? resolveAzureModelName(originalModel)
55
55
  : originalModel;
56
56
 
57
- // Get provider metadata
57
+ // Get provider metadata (fallback: OpenAI direct)
58
58
  const providerMetadata = providerInfo
59
59
  ? getProviderMetadata(providerInfo)
60
- : { provider: 'OPENAI', modelSource: 'OPENAI' };
60
+ : { provider: 'OpenAI', modelSource: 'OPENAI' };
61
61
 
62
62
  if (providerInfo?.isAzure && resolvedModel !== originalModel) {
63
63
  logger.debug('Azure model name resolved for pricing', {
@@ -88,8 +88,8 @@ export function buildPayload(
88
88
  // Metadata fields (processed by utility)
89
89
  ...metadataFields,
90
90
 
91
- // Fixed middleware source identifier
92
- middlewareSource: 'nodejs',
91
+ // Fixed middleware source identifier (spec format: revenium-{provider}-{language})
92
+ middlewareSource: 'revenium-openai-node',
93
93
 
94
94
  // Backend calculates costs
95
95
  inputTokenCost: undefined,
@@ -106,12 +106,13 @@ export function buildPayload(
106
106
  operationType: 'EMBED',
107
107
  transactionId: `embed-${randomUUID()}`,
108
108
  outputTokenCount: 0,
109
- reasoningTokenCount: 0,
110
- cacheCreationTokenCount: 0,
111
- cacheReadTokenCount: 0,
109
+ // Embeddings don't support reasoning or caching
110
+ reasoningTokenCount: undefined,
111
+ cacheCreationTokenCount: undefined,
112
+ cacheReadTokenCount: undefined,
112
113
  stopReason: 'END',
113
114
  isStreamed: false,
114
- timeToFirstToken: 0,
115
+ timeToFirstToken: undefined, // Not applicable for embeddings
115
116
  };
116
117
  }
117
118
  const chatResponse = response as OpenAIChatResponse;
@@ -122,11 +123,15 @@ export function buildPayload(
122
123
  operationType: 'CHAT',
123
124
  transactionId: chatResponse.id || `chat-${randomUUID()}`,
124
125
  outputTokenCount: chatUsage.completion_tokens || 0,
125
- reasoningTokenCount: chatUsage.reasoning_tokens || 0,
126
- cacheCreationTokenCount: 0,
127
- cacheReadTokenCount: chatUsage.cached_tokens || 0,
126
+ // Leave null for models without reasoning capabilities (API spec)
127
+ reasoningTokenCount: chatUsage.reasoning_tokens ?? undefined,
128
+ // OpenAI doesn't report cache creation tokens
129
+ cacheCreationTokenCount: undefined,
130
+ // Only include if provider reports cache hits
131
+ cacheReadTokenCount: chatUsage.cached_tokens ?? undefined,
128
132
  stopReason: mapStopReason(chatResponse.choices?.[0]?.finish_reason, logger),
129
133
  isStreamed: Boolean((request as OpenAIChatRequest).stream),
130
- timeToFirstToken: (request as OpenAIChatRequest).stream ? 0 : duration,
134
+ // TODO: Implement real TTFB tracking for streaming requests
135
+ timeToFirstToken: undefined,
131
136
  };
132
137
  }