@revenium/perplexity 2.0.4 → 2.0.6

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 (200) hide show
  1. package/CHANGELOG.md +113 -98
  2. package/LICENSE +21 -21
  3. package/README.md +292 -271
  4. package/SECURITY.md +34 -0
  5. package/dist/cjs/core/client/index.js +13 -0
  6. package/dist/cjs/core/client/index.js.map +1 -0
  7. package/dist/cjs/core/client/manager.js +88 -0
  8. package/dist/cjs/core/client/manager.js.map +1 -0
  9. package/dist/cjs/core/config/index.js +21 -0
  10. package/dist/cjs/core/config/index.js.map +1 -0
  11. package/dist/cjs/core/config/loader.js +48 -0
  12. package/dist/cjs/core/config/loader.js.map +1 -0
  13. package/dist/cjs/core/config/manager.js +77 -0
  14. package/dist/cjs/core/config/manager.js.map +1 -0
  15. package/dist/cjs/core/config/validator.js +47 -0
  16. package/dist/cjs/core/config/validator.js.map +1 -0
  17. package/dist/cjs/core/middleware/index.js +14 -0
  18. package/dist/cjs/core/middleware/index.js.map +1 -0
  19. package/dist/cjs/core/middleware/interfaces.js +94 -0
  20. package/dist/cjs/core/middleware/interfaces.js.map +1 -0
  21. package/dist/cjs/core/middleware/revenium-client.js +44 -0
  22. package/dist/cjs/core/middleware/revenium-client.js.map +1 -0
  23. package/dist/cjs/core/middleware/streaming-wrapper.js +80 -0
  24. package/dist/cjs/core/middleware/streaming-wrapper.js.map +1 -0
  25. package/dist/cjs/core/providers/detector.js +38 -0
  26. package/dist/cjs/core/providers/detector.js.map +1 -0
  27. package/dist/cjs/core/providers/index.js +14 -0
  28. package/dist/cjs/core/providers/index.js.map +1 -0
  29. package/dist/cjs/core/tracking/api-client.js +67 -0
  30. package/dist/cjs/core/tracking/api-client.js.map +1 -0
  31. package/dist/cjs/core/tracking/index.js +21 -0
  32. package/dist/cjs/core/tracking/index.js.map +1 -0
  33. package/dist/cjs/core/tracking/payload-builder.js +95 -0
  34. package/dist/cjs/core/tracking/payload-builder.js.map +1 -0
  35. package/dist/cjs/core/tracking/usage-tracker.js +83 -0
  36. package/dist/cjs/core/tracking/usage-tracker.js.map +1 -0
  37. package/dist/cjs/index.js +55 -59
  38. package/dist/cjs/index.js.map +1 -1
  39. package/dist/cjs/types/function-parameters.js +14 -0
  40. package/dist/cjs/types/function-parameters.js.map +1 -0
  41. package/dist/cjs/types/index.js +20 -1
  42. package/dist/cjs/types/index.js.map +1 -1
  43. package/dist/cjs/utils/constants.js +20 -0
  44. package/dist/cjs/utils/constants.js.map +1 -0
  45. package/dist/cjs/utils/error-handler.js +194 -0
  46. package/dist/cjs/utils/error-handler.js.map +1 -0
  47. package/dist/cjs/utils/metadata-builder.js +191 -0
  48. package/dist/cjs/utils/metadata-builder.js.map +1 -0
  49. package/dist/cjs/utils/stop-reason-mapper.js +74 -0
  50. package/dist/cjs/utils/stop-reason-mapper.js.map +1 -0
  51. package/dist/cjs/utils/transaction-id.js +19 -0
  52. package/dist/cjs/utils/transaction-id.js.map +1 -0
  53. package/dist/cjs/utils/url-builder.js +57 -0
  54. package/dist/cjs/utils/url-builder.js.map +1 -0
  55. package/dist/esm/core/client/index.js +5 -0
  56. package/dist/esm/core/client/index.js.map +1 -0
  57. package/dist/esm/core/client/manager.js +81 -0
  58. package/dist/esm/core/client/manager.js.map +1 -0
  59. package/dist/esm/core/config/index.js +11 -0
  60. package/dist/esm/core/config/index.js.map +1 -0
  61. package/dist/esm/core/config/loader.js +45 -0
  62. package/dist/esm/core/config/loader.js.map +1 -0
  63. package/dist/esm/core/config/manager.js +70 -0
  64. package/dist/esm/core/config/manager.js.map +1 -0
  65. package/dist/esm/core/config/validator.js +44 -0
  66. package/dist/esm/core/config/validator.js.map +1 -0
  67. package/dist/esm/core/middleware/index.js +7 -0
  68. package/dist/esm/core/middleware/index.js.map +1 -0
  69. package/dist/esm/core/middleware/interfaces.js +89 -0
  70. package/dist/esm/core/middleware/interfaces.js.map +1 -0
  71. package/dist/esm/core/middleware/revenium-client.js +37 -0
  72. package/dist/esm/core/middleware/revenium-client.js.map +1 -0
  73. package/dist/esm/core/middleware/streaming-wrapper.js +76 -0
  74. package/dist/esm/core/middleware/streaming-wrapper.js.map +1 -0
  75. package/dist/esm/core/providers/detector.js +34 -0
  76. package/dist/esm/core/providers/detector.js.map +1 -0
  77. package/dist/esm/core/providers/index.js +9 -0
  78. package/dist/esm/core/providers/index.js.map +1 -0
  79. package/dist/esm/core/tracking/api-client.js +64 -0
  80. package/dist/esm/core/tracking/api-client.js.map +1 -0
  81. package/dist/esm/core/tracking/index.js +13 -0
  82. package/dist/esm/core/tracking/index.js.map +1 -0
  83. package/dist/esm/core/tracking/payload-builder.js +92 -0
  84. package/dist/esm/core/tracking/payload-builder.js.map +1 -0
  85. package/dist/esm/core/tracking/usage-tracker.js +79 -0
  86. package/dist/esm/core/tracking/usage-tracker.js.map +1 -0
  87. package/dist/esm/index.js +42 -39
  88. package/dist/esm/index.js.map +1 -1
  89. package/dist/esm/types/function-parameters.js +13 -0
  90. package/dist/esm/types/function-parameters.js.map +1 -0
  91. package/dist/esm/types/index.js +6 -2
  92. package/dist/esm/types/index.js.map +1 -1
  93. package/dist/esm/utils/constants.js +17 -0
  94. package/dist/esm/utils/constants.js.map +1 -0
  95. package/dist/esm/utils/error-handler.js +182 -0
  96. package/dist/esm/utils/error-handler.js.map +1 -0
  97. package/dist/esm/utils/metadata-builder.js +183 -0
  98. package/dist/esm/utils/metadata-builder.js.map +1 -0
  99. package/dist/esm/utils/stop-reason-mapper.js +69 -0
  100. package/dist/esm/utils/stop-reason-mapper.js.map +1 -0
  101. package/dist/esm/utils/transaction-id.js +16 -0
  102. package/dist/esm/utils/transaction-id.js.map +1 -0
  103. package/dist/esm/utils/url-builder.js +53 -0
  104. package/dist/esm/utils/url-builder.js.map +1 -0
  105. package/dist/types/core/client/index.d.ts +5 -0
  106. package/dist/types/core/client/index.d.ts.map +1 -0
  107. package/dist/types/core/client/manager.d.ts +44 -0
  108. package/dist/types/core/client/manager.d.ts.map +1 -0
  109. package/dist/types/core/config/index.d.ts +10 -0
  110. package/dist/types/core/config/index.d.ts.map +1 -0
  111. package/dist/types/core/config/loader.d.ts +13 -0
  112. package/dist/types/core/config/loader.d.ts.map +1 -0
  113. package/dist/types/core/config/manager.d.ts +28 -0
  114. package/dist/types/core/config/manager.d.ts.map +1 -0
  115. package/dist/types/core/config/validator.d.ts +12 -0
  116. package/dist/types/core/config/validator.d.ts.map +1 -0
  117. package/dist/types/core/middleware/index.d.ts +7 -0
  118. package/dist/types/core/middleware/index.d.ts.map +1 -0
  119. package/dist/types/core/middleware/interfaces.d.ts +35 -0
  120. package/dist/types/core/middleware/interfaces.d.ts.map +1 -0
  121. package/dist/types/core/middleware/revenium-client.d.ts +25 -0
  122. package/dist/types/core/middleware/revenium-client.d.ts.map +1 -0
  123. package/dist/types/core/middleware/streaming-wrapper.d.ts +21 -0
  124. package/dist/types/core/middleware/streaming-wrapper.d.ts.map +1 -0
  125. package/dist/types/core/providers/detector.d.ts +24 -0
  126. package/dist/types/core/providers/detector.d.ts.map +1 -0
  127. package/dist/types/core/providers/index.d.ts +8 -0
  128. package/dist/types/core/providers/index.d.ts.map +1 -0
  129. package/dist/types/core/tracking/api-client.d.ts +17 -0
  130. package/dist/types/core/tracking/api-client.d.ts.map +1 -0
  131. package/dist/types/core/tracking/index.d.ts +11 -0
  132. package/dist/types/core/tracking/index.d.ts.map +1 -0
  133. package/dist/types/core/tracking/payload-builder.d.ts +24 -0
  134. package/dist/types/core/tracking/payload-builder.d.ts.map +1 -0
  135. package/dist/types/core/tracking/usage-tracker.d.ts +30 -0
  136. package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -0
  137. package/dist/types/index.d.ts +50 -26
  138. package/dist/types/index.d.ts.map +1 -1
  139. package/dist/types/types/function-parameters.d.ts +185 -0
  140. package/dist/types/types/function-parameters.d.ts.map +1 -0
  141. package/dist/types/types/index.d.ts +108 -129
  142. package/dist/types/types/index.d.ts.map +1 -1
  143. package/dist/types/utils/constants.d.ts +9 -0
  144. package/dist/types/utils/constants.d.ts.map +1 -0
  145. package/dist/types/utils/error-handler.d.ts +95 -0
  146. package/dist/types/utils/error-handler.d.ts.map +1 -0
  147. package/dist/types/utils/metadata-builder.d.ts +65 -0
  148. package/dist/types/utils/metadata-builder.d.ts.map +1 -0
  149. package/dist/types/utils/stop-reason-mapper.d.ts +29 -0
  150. package/dist/types/utils/stop-reason-mapper.d.ts.map +1 -0
  151. package/dist/types/utils/transaction-id.d.ts +14 -0
  152. package/dist/types/utils/transaction-id.d.ts.map +1 -0
  153. package/dist/types/utils/url-builder.d.ts +22 -0
  154. package/dist/types/utils/url-builder.d.ts.map +1 -0
  155. package/examples/README.md +226 -322
  156. package/examples/advanced.ts +123 -0
  157. package/examples/basic.ts +45 -50
  158. package/examples/getting_started.ts +41 -64
  159. package/examples/metadata.ts +68 -65
  160. package/examples/stream.ts +53 -0
  161. package/package.json +72 -72
  162. package/dist/cjs/constants.js +0 -70
  163. package/dist/cjs/constants.js.map +0 -1
  164. package/dist/cjs/core/config/perplexity-config.js +0 -45
  165. package/dist/cjs/core/config/perplexity-config.js.map +0 -1
  166. package/dist/cjs/core/config/revenium-config.js +0 -80
  167. package/dist/cjs/core/config/revenium-config.js.map +0 -1
  168. package/dist/cjs/core/tracking/metering.js +0 -211
  169. package/dist/cjs/core/tracking/metering.js.map +0 -1
  170. package/dist/cjs/core/wrapper/perplexity-client.js +0 -187
  171. package/dist/cjs/core/wrapper/perplexity-client.js.map +0 -1
  172. package/dist/cjs/utils/logger.js +0 -23
  173. package/dist/cjs/utils/logger.js.map +0 -1
  174. package/dist/esm/constants.js +0 -67
  175. package/dist/esm/constants.js.map +0 -1
  176. package/dist/esm/core/config/perplexity-config.js +0 -40
  177. package/dist/esm/core/config/perplexity-config.js.map +0 -1
  178. package/dist/esm/core/config/revenium-config.js +0 -72
  179. package/dist/esm/core/config/revenium-config.js.map +0 -1
  180. package/dist/esm/core/tracking/metering.js +0 -206
  181. package/dist/esm/core/tracking/metering.js.map +0 -1
  182. package/dist/esm/core/wrapper/perplexity-client.js +0 -180
  183. package/dist/esm/core/wrapper/perplexity-client.js.map +0 -1
  184. package/dist/esm/utils/logger.js +0 -20
  185. package/dist/esm/utils/logger.js.map +0 -1
  186. package/dist/types/constants.d.ts +0 -67
  187. package/dist/types/constants.d.ts.map +0 -1
  188. package/dist/types/core/config/perplexity-config.d.ts +0 -24
  189. package/dist/types/core/config/perplexity-config.d.ts.map +0 -1
  190. package/dist/types/core/config/revenium-config.d.ts +0 -37
  191. package/dist/types/core/config/revenium-config.d.ts.map +0 -1
  192. package/dist/types/core/tracking/metering.d.ts +0 -31
  193. package/dist/types/core/tracking/metering.d.ts.map +0 -1
  194. package/dist/types/core/wrapper/perplexity-client.d.ts +0 -32
  195. package/dist/types/core/wrapper/perplexity-client.d.ts.map +0 -1
  196. package/dist/types/utils/logger.d.ts +0 -10
  197. package/dist/types/utils/logger.d.ts.map +0 -1
  198. package/examples/advanced-features.ts +0 -148
  199. package/examples/chat.ts +0 -73
  200. package/examples/streaming.ts +0 -50
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Revenium API Client Module
3
+ *
4
+ * Handles HTTP communication with the Revenium API.
5
+ * Extracted from tracking.ts for single responsibility.
6
+ */
7
+ import { ReveniumPayload } from "../../types";
8
+ /**
9
+ * Send payload to Revenium API
10
+ *
11
+ * This is the shared HTTP function that eliminates all duplication
12
+ * between chat completions and embeddings tracking.
13
+ *
14
+ * @param payload - The payload to send to Revenium
15
+ */
16
+ export declare function sendToRevenium(payload: ReveniumPayload): Promise<void>;
17
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/api-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO9C;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Tracking module - Main exports
3
+ *
4
+ * This module provides a clean interface for usage tracking,
5
+ * separating concerns into focused sub-modules.
6
+ */
7
+ export { sendToRevenium } from './api-client.js';
8
+ export { buildPayload } from './payload-builder.js';
9
+ export { sendReveniumMetrics, trackUsageAsync } from './usage-tracker.js';
10
+ export { mapStopReason } from '../../utils/stop-reason-mapper.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1E,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Payload Builder Module
3
+ *
4
+ * Handles construction of Revenium API payloads.
5
+ * Extracted from tracking.ts for single responsibility.
6
+ */
7
+ import { ReveniumPayload, PerplexityResponse, PerplexityChatRequest, ProviderInfo } from "../../types/index.js";
8
+ /**
9
+ * Build payload for Revenium API
10
+ *
11
+ * This shared payload builder eliminates payload duplication.
12
+ * Handles CHAT operation type for Perplexity.
13
+ *
14
+ * @param operationType - Type of operation (CHAT)
15
+ * @param response - API response from Perplexity
16
+ * @param request - Original request parameters
17
+ * @param startTime - Request start timestamp
18
+ * @param duration - Request duration in milliseconds
19
+ * @param providerInfo - Provider information (always Perplexity)
20
+ * @param timeToFirstToken - Time to first token in milliseconds (for streaming)
21
+ * @returns Constructed payload for Revenium API
22
+ */
23
+ export declare function buildPayload(operationType: "CHAT", response: PerplexityResponse, request: PerplexityChatRequest, startTime: number, duration: number, providerInfo?: ProviderInfo, timeToFirstToken?: number): ReveniumPayload;
24
+ //# sourceMappingURL=payload-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-builder.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/payload-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,YAAY,EACb,MAAM,sBAAsB,CAAC;AAS9B;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAC1B,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,EAC3B,gBAAgB,CAAC,EAAE,MAAM,GACxB,eAAe,CA4EjB"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Usage Tracker Module
3
+ *
4
+ * High-level tracking functions that combine payload building and API communication.
5
+ * Extracted from tracking.ts for better organization.
6
+ */
7
+ import { UsageMetadata, ProviderInfo, PerplexityResponse, PerplexityChatRequest, PerplexityCost } from "../../types/index.js";
8
+ /**
9
+ * Chat completions tracking - thin wrapper
10
+ */
11
+ export declare function sendReveniumMetrics(response: PerplexityResponse, request: PerplexityChatRequest, startTime: number, duration: number, providerInfo?: ProviderInfo, timeToFirstToken?: number): Promise<void>;
12
+ /**
13
+ * Fire-and-forget wrapper for chat completions
14
+ * Constructs DTO objects from simple tracking data to call sendReveniumMetrics
15
+ */
16
+ export declare function trackUsageAsync(trackingData: {
17
+ requestId: string;
18
+ model: string;
19
+ promptTokens: number;
20
+ completionTokens: number;
21
+ totalTokens: number;
22
+ duration: number;
23
+ finishReason: string | null;
24
+ usageMetadata?: UsageMetadata;
25
+ isStreamed?: boolean;
26
+ timeToFirstToken?: number;
27
+ providerInfo?: ProviderInfo;
28
+ cost?: PerplexityCost;
29
+ }): void;
30
+ //# sourceMappingURL=usage-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-tracker.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/usage-tracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAS9B;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,EAC3B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB,GAAG,IAAI,CA0DP"}
@@ -1,34 +1,58 @@
1
1
  /**
2
- * Revenium Middleware for Perplexity
2
+ * Revenium Perplexity Middleware for TypeScript
3
3
  *
4
- * A lightweight middleware that adds Revenium metering to Perplexity API calls.
4
+ * This middleware tracks Perplexity AI usage and sends metrics to Revenium.
5
+ * Uses Go-aligned API pattern with Initialize/GetClient.
5
6
  *
6
- * @example
7
- * ```typescript
8
- * import {
9
- * initializeReveniumFromEnv,
10
- * initializePerplexityFromEnv,
11
- * createChatCompletion,
12
- * } from '@revenium/perplexity';
7
+ * Environment Variables:
8
+ * REVENIUM_METERING_API_KEY=hak_your_api_key
9
+ * REVENIUM_METERING_BASE_URL=https://api.revenium.ai (optional)
10
+ * PERPLEXITY_API_KEY=pplx_your_perplexity_key
13
11
  *
14
- * // Initialize configurations
15
- * initializeReveniumFromEnv();
16
- * initializePerplexityFromEnv();
12
+ * Usage:
13
+ * import { Initialize, GetClient } from "@revenium/perplexity";
17
14
  *
18
- * // Create a chat completion
19
- * const result = await createChatCompletion({
20
- * messages: [{ role: 'user', content: 'Hello!' }],
21
- * model: 'sonar-pro',
22
- * });
15
+ * // Initialize from environment
16
+ * Initialize();
17
+ *
18
+ * // Get client
19
+ * const client = GetClient();
23
20
  *
24
- * console.log(result.content);
25
- * ```
21
+ * // Use client
22
+ * const response = await client.chat().completions().create({
23
+ * model: "sonar",
24
+ * messages: [{ role: "user", content: "Hello!" }]
25
+ * }, {
26
+ * organizationId: "my-org",
27
+ * productId: "my-app",
28
+ * subscriber: {
29
+ * id: "user-123",
30
+ * email: "user@my-org.com"
31
+ * }
32
+ * });
33
+ */
34
+ /**
35
+ * Core types for TypeScript developers using Revenium middleware
36
+ */
37
+ export type { ReveniumConfig, UsageMetadata, Logger, ProviderInfo, Subscriber, Credential, ReveniumPayload, MeteringData, } from "./types/index.js";
38
+ /**
39
+ * Perplexity API types
40
+ */
41
+ export type { PerplexityChatRequest, PerplexityChatResponse, PerplexityMessage, PerplexityChoice, PerplexityUsage, PerplexityStreamChunk, PerplexityResponse, TrackingData, } from "./types/function-parameters.js";
42
+ /**
43
+ * Main API - Go-aligned pattern
44
+ */
45
+ export { Initialize, GetClient, IsInitialized, Reset, Configure, } from "./core/client/index.js";
46
+ /**
47
+ * Middleware classes
48
+ */
49
+ export { ReveniumPerplexity, ChatInterface, CompletionsInterface, StreamingWrapper, } from "./core/middleware/index.js";
50
+ /**
51
+ * Tracking functions (for advanced use cases)
52
+ */
53
+ export { trackUsageAsync } from "./core/tracking/index.js";
54
+ /**
55
+ * Provider detection functions
26
56
  */
27
- export { initializeReveniumFromEnv, initializeRevenium, getReveniumConfig, isReveniumEnabled, disableRevenium, enableRevenium, type ReveniumConfig, } from "./core/config/revenium-config";
28
- export { initializePerplexityFromEnv, initializePerplexity, getPerplexityConfig, type PerplexityConfig, } from "./core/config/perplexity-config";
29
- export { createChatCompletion, createStreamingChatCompletion, } from "./core/wrapper/perplexity-client";
30
- export { generateTransactionId, buildMeteringData, sendMeteringData, } from "./core/tracking/metering";
31
- export type { PerplexityMessage, PerplexityChatRequest, PerplexityUsage, PerplexityChoice, PerplexityResponse, PerplexityStreamChunk, UsageMetadata, MeteringData, ChatCompletionResult, StreamingResult, } from "./types";
32
- export { PERPLEXITY_PATTERNS, DEFAULT_CONFIG, API_ENDPOINTS, MIDDLEWARE_INFO, } from "./constants";
33
- export { logger } from "./utils/logger";
57
+ export { detectProvider, getProviderMetadata } from "./core/providers/index.js";
34
58
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AASH,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,KAAK,cAAc,GACpB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,gBAAgB,GACtB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EACL,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAMlC,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,eAAe,GAChB,MAAM,SAAS,CAAC;AAMjB,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAC;AAMrB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH;;GAEG;AACH,YAAY,EACV,cAAc,EACd,aAAa,EACb,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,eAAe,EACf,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,GACb,MAAM,gCAAgC,CAAC;AAExC;;GAEG;AACH,OAAO,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,KAAK,EACL,SAAS,GACV,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAEpC;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Function Parameter Types
3
+ *
4
+ * Comprehensive type definitions for function parameters throughout the middleware.
5
+ * These interfaces provide type safety by replacing 'any' types with proper,
6
+ * well-documented interfaces that match Perplexity API structures and internal requirements.
7
+ *
8
+ * @fileoverview Type-safe function parameter definitions
9
+ * @author Revenium
10
+ * @since 2.0.0
11
+ */
12
+ import { UsageMetadata } from "./index.js";
13
+ /**
14
+ * Perplexity API response structure for chat completions
15
+ *
16
+ * Represents the complete response structure returned by Perplexity's chat completions API.
17
+ * Includes usage statistics, response choices, and metadata. Used internally for
18
+ * processing responses and extracting usage metrics.
19
+ *
20
+ * @public
21
+ */
22
+ export interface PerplexityChatResponse {
23
+ /** Unique identifier for the chat completion */
24
+ id: string;
25
+ /** Model used for the completion */
26
+ model: string;
27
+ /** Token usage statistics */
28
+ usage: {
29
+ /** Number of tokens in the prompt */
30
+ prompt_tokens: number;
31
+ /** Number of tokens in the completion */
32
+ completion_tokens: number;
33
+ /** Total tokens used (prompt + completion) */
34
+ total_tokens: number;
35
+ };
36
+ /** Array of completion choices */
37
+ choices: Array<{
38
+ /** Reason why the completion finished */
39
+ finish_reason: string | null;
40
+ /** Complete message (for non-streaming responses) */
41
+ message?: {
42
+ /** Message content */
43
+ content: string;
44
+ /** Message role (assistant, user, system) */
45
+ role: string;
46
+ };
47
+ /** Delta message (for streaming responses) */
48
+ delta?: {
49
+ /** Incremental content */
50
+ content?: string;
51
+ /** Message role */
52
+ role?: string;
53
+ };
54
+ }>;
55
+ /** Unix timestamp of when the completion was created */
56
+ created?: number;
57
+ /** Object type identifier */
58
+ object?: string;
59
+ }
60
+ /**
61
+ * Perplexity API request structure for chat completions
62
+ *
63
+ * Represents the request parameters sent to Perplexity's chat completions API.
64
+ * Includes model selection, messages, and optional parameters.
65
+ *
66
+ * @public
67
+ */
68
+ export interface PerplexityChatRequest {
69
+ /** Model to use for the completion */
70
+ model: string;
71
+ /** Array of messages in the conversation */
72
+ messages: Array<{
73
+ /** Message role */
74
+ role: "system" | "user" | "assistant";
75
+ /** Message content */
76
+ content: string;
77
+ }>;
78
+ /** Maximum number of tokens to generate */
79
+ max_tokens?: number;
80
+ /** Temperature for sampling */
81
+ temperature?: number;
82
+ /** Top-p for nucleus sampling */
83
+ top_p?: number;
84
+ /** Whether to stream the response */
85
+ stream?: boolean;
86
+ /** Presence penalty */
87
+ presence_penalty?: number;
88
+ /** Frequency penalty */
89
+ frequency_penalty?: number;
90
+ /** Usage metadata for Revenium tracking (custom field, not sent to Perplexity) */
91
+ usageMetadata?: UsageMetadata;
92
+ }
93
+ /**
94
+ * Perplexity message structure
95
+ */
96
+ export interface PerplexityMessage {
97
+ role: "system" | "user" | "assistant";
98
+ content: string;
99
+ }
100
+ /**
101
+ * Perplexity cost breakdown (specific to Perplexity API)
102
+ */
103
+ export interface PerplexityCost {
104
+ input_tokens_cost: number;
105
+ output_tokens_cost: number;
106
+ request_cost: number;
107
+ total_cost: number;
108
+ }
109
+ /**
110
+ * Perplexity usage statistics
111
+ */
112
+ export interface PerplexityUsage {
113
+ prompt_tokens: number;
114
+ completion_tokens: number;
115
+ total_tokens: number;
116
+ search_context_size?: string;
117
+ cost?: PerplexityCost;
118
+ }
119
+ /**
120
+ * Perplexity choice structure
121
+ */
122
+ export interface PerplexityChoice {
123
+ index: number;
124
+ message?: {
125
+ role: string;
126
+ content: string;
127
+ };
128
+ delta?: {
129
+ role?: string;
130
+ content?: string;
131
+ };
132
+ finish_reason: string | null;
133
+ }
134
+ /**
135
+ * Perplexity response structure
136
+ */
137
+ export interface PerplexityResponse {
138
+ id: string;
139
+ object: string;
140
+ created: number;
141
+ model: string;
142
+ choices: PerplexityChoice[];
143
+ usage?: PerplexityUsage;
144
+ }
145
+ /**
146
+ * Perplexity stream chunk structure
147
+ */
148
+ export interface PerplexityStreamChunk {
149
+ id: string;
150
+ object: string;
151
+ created: number;
152
+ model: string;
153
+ choices: PerplexityChoice[];
154
+ }
155
+ /**
156
+ * Tracking data structure for usage tracking
157
+ *
158
+ * Contains all necessary information for tracking API usage with Revenium.
159
+ * Used internally by the tracking system.
160
+ *
161
+ * @internal
162
+ */
163
+ export interface TrackingData {
164
+ /** Unique request identifier */
165
+ requestId: string;
166
+ /** Model used for the request */
167
+ model: string;
168
+ /** Number of prompt tokens */
169
+ promptTokens: number;
170
+ /** Number of completion tokens */
171
+ completionTokens: number;
172
+ /** Total number of tokens */
173
+ totalTokens: number;
174
+ /** Request duration in milliseconds */
175
+ duration: number;
176
+ /** Finish reason from the API */
177
+ finishReason: string | null;
178
+ /** Usage metadata */
179
+ usageMetadata?: UsageMetadata;
180
+ /** Whether the request was streamed */
181
+ isStreamed?: boolean;
182
+ /** Time to first token (for streaming) */
183
+ timeToFirstToken?: number;
184
+ }
185
+ //# sourceMappingURL=function-parameters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function-parameters.d.ts","sourceRoot":"","sources":["../../../src/types/function-parameters.ts"],"names":[],"mappings":"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"}
@@ -1,151 +1,130 @@
1
1
  /**
2
- * TypeScript Type Definitions for Perplexity Middleware
2
+ * Core Types Module
3
+ *
4
+ * Central type definitions for the Revenium Perplexity middleware.
5
+ * This module exports all core types used throughout the application.
3
6
  */
4
- export interface PerplexityMessage {
5
- role: "system" | "user" | "assistant";
6
- content: string;
7
- }
8
- export interface PerplexityChatRequest {
9
- model: string;
10
- messages: PerplexityMessage[];
11
- max_tokens?: number;
12
- temperature?: number;
13
- top_p?: number;
14
- stream?: boolean;
15
- presence_penalty?: number;
16
- frequency_penalty?: number;
17
- }
18
- export interface PerplexityUsage {
19
- prompt_tokens: number;
20
- completion_tokens: number;
21
- total_tokens: number;
22
- }
23
- export interface PerplexityChoice {
24
- index: number;
25
- message?: {
26
- role: string;
27
- content: string;
28
- };
29
- delta?: {
30
- role?: string;
31
- content?: string;
32
- };
33
- finish_reason: string | null;
34
- }
35
- export interface PerplexityResponse {
36
- id: string;
37
- object: string;
38
- created: number;
39
- model: string;
40
- choices: PerplexityChoice[];
41
- usage?: PerplexityUsage;
7
+ export * from "./function-parameters.js";
8
+ /**
9
+ * Credential information for subscriber authentication
10
+ */
11
+ export interface Credential {
12
+ /** The name/type of the credential */
13
+ name: string;
14
+ /** The credential value */
15
+ value: string;
42
16
  }
43
- export interface PerplexityStreamChunk {
44
- id: string;
45
- object: string;
46
- created: number;
47
- model: string;
48
- choices: PerplexityChoice[];
17
+ /**
18
+ * Subscriber information for Revenium API
19
+ */
20
+ export interface Subscriber {
21
+ /** Unique identifier for the subscriber/user */
22
+ id?: string;
23
+ /** Email address of the subscriber */
24
+ email?: string;
25
+ /** Optional authentication credential for the subscriber */
26
+ credential?: Credential;
49
27
  }
28
+ /**
29
+ * Usage metadata interface for tracking additional context
30
+ */
50
31
  export interface UsageMetadata {
51
- subscriber?: {
52
- id: string;
53
- email?: string;
54
- credential?: {
55
- name: string;
56
- value: string;
57
- };
58
- };
32
+ /** User identification information */
33
+ subscriber?: Subscriber;
34
+ /** Organization or company identifier */
59
35
  organizationId?: string;
60
- subscriptionId?: string;
36
+ /** Product or application identifier */
61
37
  productId?: string;
62
- transactionId?: string;
63
- traceId?: string;
64
- inputTokenCount?: number;
65
- outputTokenCount?: number;
66
- totalTokenCount?: number;
67
- reasoningTokenCount?: number;
68
- cacheCreationTokenCount?: number;
69
- cacheReadTokenCount?: number;
70
- requestTime?: string;
71
- responseTime?: string;
72
- completionStartTime?: string;
73
- timeToFirstToken?: number;
74
- operationType?: string;
38
+ /** Subscription identifier */
39
+ subscriptionId?: string;
40
+ /** Task type classification */
75
41
  taskType?: string;
76
- agent?: string;
77
- stopReason?: string;
78
- costType?: string;
42
+ /** Distributed tracing identifier */
43
+ traceId?: string;
44
+ /** Quality score for response evaluation (0.0-1.0 scale) */
79
45
  responseQualityScore?: number;
80
- subscriberId?: string;
81
- subscriberEmail?: string;
82
- subscriberCredentialName?: string;
83
- subscriberCredential?: string;
46
+ /** Agent or model variant identifier */
47
+ agent?: string;
84
48
  }
85
49
  /**
86
- * Metering data sent to Revenium
87
- * Field order matches the expected API format
50
+ * Provider information for tracking API source
88
51
  */
89
- export interface MeteringData {
90
- stopReason: string;
91
- costType: string;
92
- isStreamed: boolean;
93
- taskType: string;
94
- agent: string;
95
- operationType: string;
96
- inputTokenCount: number;
97
- outputTokenCount: number;
98
- reasoningTokenCount: number;
99
- cacheCreationTokenCount: number;
100
- cacheReadTokenCount: number;
101
- totalTokenCount: number;
102
- organizationId: string;
103
- productId: string;
104
- subscriber: {
105
- id: string;
106
- email: string;
107
- credential: {
108
- name: string;
109
- value: string;
110
- };
111
- };
52
+ export interface ProviderInfo {
53
+ /** The detected AI provider type */
54
+ provider: string;
55
+ /** Model source identifier */
56
+ modelSource: string;
57
+ }
58
+ /**
59
+ * Logger interface aligned with Go implementation
60
+ */
61
+ export interface Logger {
62
+ debug(message: string, ...args: unknown[]): void;
63
+ info(message: string, ...args: unknown[]): void;
64
+ warn(message: string, ...args: unknown[]): void;
65
+ error(message: string, ...args: unknown[]): void;
66
+ }
67
+ /**
68
+ * Revenium configuration interface
69
+ */
70
+ export interface ReveniumConfig {
71
+ /** Revenium API key */
72
+ reveniumApiKey: string;
73
+ /** Revenium base URL */
74
+ reveniumBaseUrl: string;
75
+ /** Perplexity API key */
76
+ perplexityApiKey?: string;
77
+ /** Perplexity base URL */
78
+ perplexityBaseUrl?: string;
79
+ /** Debug mode flag */
80
+ debug?: boolean;
81
+ /** Custom logger */
82
+ logger?: Logger;
83
+ }
84
+ /**
85
+ * Configuration interface (alias for backward compatibility)
86
+ */
87
+ export interface Config extends ReveniumConfig {
88
+ }
89
+ /**
90
+ * Revenium API payload structure
91
+ */
92
+ export interface ReveniumPayload {
93
+ costType: "AI";
112
94
  model: string;
113
- transactionId: string;
114
95
  responseTime: string;
115
96
  requestDuration: number;
116
97
  provider: string;
98
+ modelSource: string;
117
99
  requestTime: string;
118
100
  completionStartTime: string;
119
- timeToFirstToken: number;
120
- middlewareSource: string;
121
- traceId?: string;
122
- }
123
- export interface ChatCompletionResult {
124
- content: string;
125
- role: string;
126
- finishReason: string | null;
127
- usage: {
128
- promptTokens: number;
129
- completionTokens: number;
130
- totalTokens: number;
131
- };
132
- model: string;
133
- transactionId: string;
134
- rawResponse: PerplexityResponse;
135
- }
136
- export interface StreamingResult {
137
- stream: AsyncGenerator<PerplexityStreamChunk>;
101
+ inputTokenCount: number;
102
+ outputTokenCount: number;
103
+ totalTokenCount: number;
104
+ reasoningTokenCount?: number;
105
+ cacheCreationTokenCount?: number;
106
+ cacheReadTokenCount?: number;
107
+ organizationId?: string;
108
+ subscriptionId?: string;
109
+ productId?: string;
110
+ subscriber?: Subscriber;
138
111
  transactionId: string;
139
- model: string;
140
- }
141
- export interface ReveniumConfig {
142
- meteringApiKey: string;
143
- meteringBaseUrl: string;
144
- teamId?: string;
145
- enabled: boolean;
112
+ traceId?: string;
113
+ taskType?: string;
114
+ operationType: "CHAT" | "EMBED";
115
+ stopReason: string;
116
+ isStreamed: boolean;
117
+ timeToFirstToken?: number;
118
+ agent?: string;
119
+ responseQualityScore?: number;
120
+ middlewareSource: string;
121
+ inputTokenCost?: number;
122
+ outputTokenCost?: number;
123
+ totalCost?: number;
146
124
  }
147
- export interface PerplexityConfig {
148
- apiKey: string;
149
- baseUrl: string;
125
+ /**
126
+ * Metering data interface (legacy, for backward compatibility)
127
+ */
128
+ export interface MeteringData extends ReveniumPayload {
150
129
  }
151
130
  //# sourceMappingURL=index.d.ts.map