@revenium/perplexity 2.0.3 → 2.0.5

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 (183) hide show
  1. package/CHANGELOG.md +47 -10
  2. package/README.md +144 -720
  3. package/SECURITY.md +34 -0
  4. package/dist/cjs/constants/models.js +38 -0
  5. package/dist/cjs/constants/models.js.map +1 -0
  6. package/dist/cjs/core/client/index.js +13 -0
  7. package/dist/cjs/core/client/index.js.map +1 -0
  8. package/dist/cjs/core/client/manager.js +85 -0
  9. package/dist/cjs/core/client/manager.js.map +1 -0
  10. package/dist/cjs/core/config/index.js +21 -0
  11. package/dist/cjs/core/config/index.js.map +1 -0
  12. package/dist/cjs/core/config/loader.js +48 -0
  13. package/dist/cjs/core/config/loader.js.map +1 -0
  14. package/dist/cjs/core/config/manager.js +77 -0
  15. package/dist/cjs/core/config/manager.js.map +1 -0
  16. package/dist/cjs/core/config/validator.js +45 -0
  17. package/dist/cjs/core/config/validator.js.map +1 -0
  18. package/dist/cjs/core/middleware/index.js +14 -0
  19. package/dist/cjs/core/middleware/index.js.map +1 -0
  20. package/dist/cjs/core/middleware/interfaces.js +94 -0
  21. package/dist/cjs/core/middleware/interfaces.js.map +1 -0
  22. package/dist/cjs/core/middleware/revenium-client.js +44 -0
  23. package/dist/cjs/core/middleware/revenium-client.js.map +1 -0
  24. package/dist/cjs/core/middleware/streaming-wrapper.js +80 -0
  25. package/dist/cjs/core/middleware/streaming-wrapper.js.map +1 -0
  26. package/dist/cjs/core/providers/detector.js +38 -0
  27. package/dist/cjs/core/providers/detector.js.map +1 -0
  28. package/dist/cjs/core/providers/index.js +14 -0
  29. package/dist/cjs/core/providers/index.js.map +1 -0
  30. package/dist/cjs/core/tracking/api-client.js +67 -0
  31. package/dist/cjs/core/tracking/api-client.js.map +1 -0
  32. package/dist/cjs/core/tracking/index.js +21 -0
  33. package/dist/cjs/core/tracking/index.js.map +1 -0
  34. package/dist/cjs/core/tracking/payload-builder.js +95 -0
  35. package/dist/cjs/core/tracking/payload-builder.js.map +1 -0
  36. package/dist/cjs/core/tracking/usage-tracker.js +83 -0
  37. package/dist/cjs/core/tracking/usage-tracker.js.map +1 -0
  38. package/dist/cjs/index.js +60 -54
  39. package/dist/cjs/index.js.map +1 -0
  40. package/dist/cjs/types/function-parameters.js +14 -0
  41. package/dist/cjs/types/function-parameters.js.map +1 -0
  42. package/dist/cjs/types/index.js +20 -16
  43. package/dist/cjs/types/index.js.map +1 -0
  44. package/dist/cjs/utils/constants.js +20 -0
  45. package/dist/cjs/utils/constants.js.map +1 -0
  46. package/dist/cjs/utils/error-handler.js +194 -0
  47. package/dist/cjs/utils/error-handler.js.map +1 -0
  48. package/dist/cjs/utils/metadata-builder.js +191 -0
  49. package/dist/cjs/utils/metadata-builder.js.map +1 -0
  50. package/dist/cjs/utils/stop-reason-mapper.js +74 -0
  51. package/dist/cjs/utils/stop-reason-mapper.js.map +1 -0
  52. package/dist/cjs/utils/transaction-id.js +19 -0
  53. package/dist/cjs/utils/transaction-id.js.map +1 -0
  54. package/dist/cjs/utils/url-builder.js +57 -0
  55. package/dist/cjs/utils/url-builder.js.map +1 -0
  56. package/dist/esm/constants/models.js +35 -0
  57. package/dist/esm/constants/models.js.map +1 -0
  58. package/dist/esm/core/client/index.js +5 -0
  59. package/dist/esm/core/client/index.js.map +1 -0
  60. package/dist/esm/core/client/manager.js +78 -0
  61. package/dist/esm/core/client/manager.js.map +1 -0
  62. package/dist/esm/core/config/index.js +11 -0
  63. package/dist/esm/core/config/index.js.map +1 -0
  64. package/dist/esm/core/config/loader.js +45 -0
  65. package/dist/esm/core/config/loader.js.map +1 -0
  66. package/dist/esm/core/config/manager.js +70 -0
  67. package/dist/esm/core/config/manager.js.map +1 -0
  68. package/dist/esm/core/config/validator.js +42 -0
  69. package/dist/esm/core/config/validator.js.map +1 -0
  70. package/dist/esm/core/middleware/index.js +7 -0
  71. package/dist/esm/core/middleware/index.js.map +1 -0
  72. package/dist/esm/core/middleware/interfaces.js +89 -0
  73. package/dist/esm/core/middleware/interfaces.js.map +1 -0
  74. package/dist/esm/core/middleware/revenium-client.js +37 -0
  75. package/dist/esm/core/middleware/revenium-client.js.map +1 -0
  76. package/dist/esm/core/middleware/streaming-wrapper.js +76 -0
  77. package/dist/esm/core/middleware/streaming-wrapper.js.map +1 -0
  78. package/dist/esm/core/providers/detector.js +34 -0
  79. package/dist/esm/core/providers/detector.js.map +1 -0
  80. package/dist/esm/core/providers/index.js +9 -0
  81. package/dist/esm/core/providers/index.js.map +1 -0
  82. package/dist/esm/core/tracking/api-client.js +64 -0
  83. package/dist/esm/core/tracking/api-client.js.map +1 -0
  84. package/dist/esm/core/tracking/index.js +13 -0
  85. package/dist/esm/core/tracking/index.js.map +1 -0
  86. package/dist/esm/core/tracking/payload-builder.js +92 -0
  87. package/dist/esm/core/tracking/payload-builder.js.map +1 -0
  88. package/dist/esm/core/tracking/usage-tracker.js +79 -0
  89. package/dist/esm/core/tracking/usage-tracker.js.map +1 -0
  90. package/dist/esm/index.js +46 -36
  91. package/dist/esm/index.js.map +1 -0
  92. package/dist/esm/types/function-parameters.js +13 -0
  93. package/dist/esm/types/function-parameters.js.map +1 -0
  94. package/dist/esm/types/index.js +6 -15
  95. package/dist/esm/types/index.js.map +1 -0
  96. package/dist/esm/utils/constants.js +17 -0
  97. package/dist/esm/utils/constants.js.map +1 -0
  98. package/dist/esm/utils/error-handler.js +182 -0
  99. package/dist/esm/utils/error-handler.js.map +1 -0
  100. package/dist/esm/utils/metadata-builder.js +183 -0
  101. package/dist/esm/utils/metadata-builder.js.map +1 -0
  102. package/dist/esm/utils/stop-reason-mapper.js +69 -0
  103. package/dist/esm/utils/stop-reason-mapper.js.map +1 -0
  104. package/dist/esm/utils/transaction-id.js +16 -0
  105. package/dist/esm/utils/transaction-id.js.map +1 -0
  106. package/dist/esm/utils/url-builder.js +53 -0
  107. package/dist/esm/utils/url-builder.js.map +1 -0
  108. package/dist/types/constants/models.d.ts +39 -0
  109. package/dist/types/constants/models.d.ts.map +1 -0
  110. package/dist/types/core/client/index.d.ts +5 -0
  111. package/dist/types/core/client/index.d.ts.map +1 -0
  112. package/dist/types/core/client/manager.d.ts +44 -0
  113. package/dist/types/core/client/manager.d.ts.map +1 -0
  114. package/dist/types/core/config/index.d.ts +10 -0
  115. package/dist/types/core/config/index.d.ts.map +1 -0
  116. package/dist/types/core/config/loader.d.ts +13 -0
  117. package/dist/types/core/config/loader.d.ts.map +1 -0
  118. package/dist/types/core/config/manager.d.ts +28 -0
  119. package/dist/types/core/config/manager.d.ts.map +1 -0
  120. package/dist/types/core/config/validator.d.ts +12 -0
  121. package/dist/types/core/config/validator.d.ts.map +1 -0
  122. package/dist/types/core/middleware/index.d.ts +7 -0
  123. package/dist/types/core/middleware/index.d.ts.map +1 -0
  124. package/dist/types/core/middleware/interfaces.d.ts +35 -0
  125. package/dist/types/core/middleware/interfaces.d.ts.map +1 -0
  126. package/dist/types/core/middleware/revenium-client.d.ts +25 -0
  127. package/dist/types/core/middleware/revenium-client.d.ts.map +1 -0
  128. package/dist/types/core/middleware/streaming-wrapper.d.ts +21 -0
  129. package/dist/types/core/middleware/streaming-wrapper.d.ts.map +1 -0
  130. package/dist/types/core/providers/detector.d.ts +24 -0
  131. package/dist/types/core/providers/detector.d.ts.map +1 -0
  132. package/dist/types/core/providers/index.d.ts +8 -0
  133. package/dist/types/core/providers/index.d.ts.map +1 -0
  134. package/dist/types/core/tracking/api-client.d.ts +17 -0
  135. package/dist/types/core/tracking/api-client.d.ts.map +1 -0
  136. package/dist/types/core/tracking/index.d.ts +11 -0
  137. package/dist/types/core/tracking/index.d.ts.map +1 -0
  138. package/dist/types/core/tracking/payload-builder.d.ts +24 -0
  139. package/dist/types/core/tracking/payload-builder.d.ts.map +1 -0
  140. package/dist/types/core/tracking/usage-tracker.d.ts +30 -0
  141. package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -0
  142. package/dist/types/index.d.ts +56 -27
  143. package/dist/types/index.d.ts.map +1 -0
  144. package/dist/types/types/function-parameters.d.ts +185 -0
  145. package/dist/types/types/function-parameters.d.ts.map +1 -0
  146. package/dist/types/types/index.d.ts +108 -137
  147. package/dist/types/types/index.d.ts.map +1 -0
  148. package/dist/types/utils/constants.d.ts +9 -0
  149. package/dist/types/utils/constants.d.ts.map +1 -0
  150. package/dist/types/utils/error-handler.d.ts +95 -0
  151. package/dist/types/utils/error-handler.d.ts.map +1 -0
  152. package/dist/types/utils/metadata-builder.d.ts +65 -0
  153. package/dist/types/utils/metadata-builder.d.ts.map +1 -0
  154. package/dist/types/utils/stop-reason-mapper.d.ts +29 -0
  155. package/dist/types/utils/stop-reason-mapper.d.ts.map +1 -0
  156. package/dist/types/utils/transaction-id.d.ts +14 -0
  157. package/dist/types/utils/transaction-id.d.ts.map +1 -0
  158. package/dist/types/utils/url-builder.d.ts +22 -0
  159. package/dist/types/utils/url-builder.d.ts.map +1 -0
  160. package/examples/README.md +136 -233
  161. package/examples/advanced.ts +123 -0
  162. package/examples/basic.ts +36 -46
  163. package/examples/getting_started.ts +41 -0
  164. package/examples/metadata.ts +55 -59
  165. package/examples/stream.ts +53 -0
  166. package/package.json +12 -17
  167. package/dist/cjs/core/config/perplexity-config.js +0 -45
  168. package/dist/cjs/core/config/revenium-config.js +0 -80
  169. package/dist/cjs/core/tracking/metering.js +0 -131
  170. package/dist/cjs/core/wrapper/perplexity-client.js +0 -177
  171. package/dist/cjs/utils/logger.js +0 -23
  172. package/dist/esm/core/config/perplexity-config.js +0 -40
  173. package/dist/esm/core/config/revenium-config.js +0 -72
  174. package/dist/esm/core/tracking/metering.js +0 -126
  175. package/dist/esm/core/wrapper/perplexity-client.js +0 -170
  176. package/dist/esm/utils/logger.js +0 -20
  177. package/dist/types/core/config/perplexity-config.d.ts +0 -24
  178. package/dist/types/core/config/revenium-config.d.ts +0 -37
  179. package/dist/types/core/tracking/metering.d.ts +0 -31
  180. package/dist/types/core/wrapper/perplexity-client.d.ts +0 -32
  181. package/dist/types/utils/logger.d.ts +0 -10
  182. package/examples/chat.ts +0 -87
  183. package/examples/streaming.ts +0 -61
@@ -1,31 +0,0 @@
1
- /**
2
- * Revenium Metering Module
3
- * Handles tracking and sending metering data to Revenium
4
- */
5
- import type { MeteringData, UsageMetadata } from "../../types";
6
- /**
7
- * Generate a unique transaction ID
8
- */
9
- export declare function generateTransactionId(): string;
10
- /**
11
- * Build metering data from request information
12
- */
13
- export declare function buildMeteringData(params: {
14
- model: string;
15
- startTime: Date;
16
- endTime: Date;
17
- inputTokens: number;
18
- outputTokens: number;
19
- totalTokens: number;
20
- reasoningTokens?: number;
21
- cachedTokens?: number;
22
- transactionId: string;
23
- isStreamed: boolean;
24
- stopReason: string;
25
- usageMetadata?: UsageMetadata;
26
- }): MeteringData;
27
- /**
28
- * Send metering data to Revenium
29
- */
30
- export declare function sendMeteringData(meteringData: MeteringData): Promise<void>;
31
- //# sourceMappingURL=metering.d.ts.map
@@ -1,32 +0,0 @@
1
- /**
2
- * Perplexity Client Wrapper
3
- * Wraps Perplexity API calls with Revenium metering
4
- */
5
- import type { PerplexityMessage, UsageMetadata, ChatCompletionResult, StreamingResult } from "../../types";
6
- /**
7
- * Create a chat completion
8
- */
9
- export declare function createChatCompletion(params: {
10
- messages: PerplexityMessage[];
11
- model: string;
12
- maxTokens?: number;
13
- temperature?: number;
14
- topP?: number;
15
- presencePenalty?: number;
16
- frequencyPenalty?: number;
17
- usageMetadata?: UsageMetadata;
18
- }): Promise<ChatCompletionResult>;
19
- /**
20
- * Create a streaming chat completion
21
- */
22
- export declare function createStreamingChatCompletion(params: {
23
- messages: PerplexityMessage[];
24
- model: string;
25
- maxTokens?: number;
26
- temperature?: number;
27
- topP?: number;
28
- presencePenalty?: number;
29
- frequencyPenalty?: number;
30
- usageMetadata?: UsageMetadata;
31
- }): Promise<StreamingResult>;
32
- //# sourceMappingURL=perplexity-client.d.ts.map
@@ -1,10 +0,0 @@
1
- /**
2
- * Simple logger utility
3
- */
4
- export declare const logger: {
5
- info: (...args: any[]) => void;
6
- warn: (...args: any[]) => void;
7
- error: (...args: any[]) => void;
8
- debug: (...args: any[]) => void;
9
- };
10
- //# sourceMappingURL=logger.d.ts.map
package/examples/chat.ts DELETED
@@ -1,87 +0,0 @@
1
- /**
2
- * Multi-turn Chat Example
3
- *
4
- * This example demonstrates how to have a multi-turn conversation
5
- * with the Perplexity middleware.
6
- */
7
-
8
- import {
9
- initializeReveniumFromEnv,
10
- initializePerplexityFromEnv,
11
- createChatCompletion,
12
- PERPLEXITY_MODELS,
13
- type PerplexityMessage,
14
- } from "../src";
15
-
16
- async function main() {
17
- console.log("Multi-turn Chat Example\n");
18
-
19
- // Initialize configurations from environment variables
20
- console.log("Initializing configurations...");
21
- initializeReveniumFromEnv();
22
- initializePerplexityFromEnv();
23
- console.log("Configurations initialized\n");
24
-
25
- // Start a conversation
26
- const messages: PerplexityMessage[] = [
27
- {
28
- role: "system",
29
- content: "You are a helpful assistant that provides concise answers.",
30
- },
31
- {
32
- role: "user",
33
- content: "What is the capital of France?",
34
- },
35
- ];
36
-
37
- console.log("Turn 1:");
38
- console.log("User: What is the capital of France?");
39
-
40
- const response1 = await createChatCompletion({
41
- messages,
42
- model: PERPLEXITY_MODELS.SONAR_PRO,
43
- maxTokens: 100,
44
- });
45
-
46
- console.log(`Assistant: ${response1.content}\n`);
47
-
48
- // Continue the conversation
49
- messages.push({
50
- role: "assistant",
51
- content: response1.content,
52
- });
53
-
54
- messages.push({
55
- role: "user",
56
- content: "What is its population?",
57
- });
58
-
59
- console.log("Turn 2:");
60
- console.log("User: What is its population?");
61
-
62
- const response2 = await createChatCompletion({
63
- messages,
64
- model: PERPLEXITY_MODELS.SONAR_PRO,
65
- maxTokens: 100,
66
- });
67
-
68
- console.log(`Assistant: ${response2.content}\n`);
69
-
70
- console.log("Summary:");
71
- console.log("─────────────────────────────────────────");
72
- console.log(`Total turns: 2`);
73
- console.log(`Transaction ID 1: ${response1.transactionId}`);
74
- console.log(`Transaction ID 2: ${response2.transactionId}`);
75
- console.log(
76
- `Total tokens used: ${response1.usage.totalTokens + response2.usage.totalTokens}`
77
- );
78
- console.log("─────────────────────────────────────────\n");
79
-
80
- console.log("Chat completed successfully!");
81
- }
82
-
83
- main().catch((error) => {
84
- console.error("Error:", error.message);
85
- process.exit(1);
86
- });
87
-
@@ -1,61 +0,0 @@
1
- /**
2
- * Streaming Chat Completion Example
3
- *
4
- * This example demonstrates how to use streaming responses
5
- * with the Perplexity middleware and Revenium metering.
6
- */
7
-
8
- import {
9
- initializeReveniumFromEnv,
10
- initializePerplexityFromEnv,
11
- createStreamingChatCompletion,
12
- PERPLEXITY_MODELS,
13
- } from "../src";
14
-
15
- async function main() {
16
- console.log("Streaming Chat Completion Example\n");
17
-
18
- // Initialize configurations from environment variables
19
- console.log("Initializing configurations...");
20
- initializeReveniumFromEnv();
21
- initializePerplexityFromEnv();
22
- console.log("Configurations initialized\n");
23
-
24
- // Create a streaming chat completion
25
- console.log("Creating streaming chat completion...");
26
- const result = await createStreamingChatCompletion({
27
- messages: [
28
- {
29
- role: "user",
30
- content: "Count from 1 to 5 slowly, one number per line.",
31
- },
32
- ],
33
- model: PERPLEXITY_MODELS.SONAR_PRO,
34
- maxTokens: 100,
35
- });
36
-
37
- console.log("\nStreaming Response:");
38
- console.log("─────────────────────────────────────────");
39
- console.log(`Transaction ID: ${result.transactionId}`);
40
- console.log(`Model: ${result.model}\n`);
41
-
42
- // Process the stream
43
- let fullContent = "";
44
- for await (const chunk of result.stream) {
45
- const content = chunk.choices[0]?.delta?.content || "";
46
- if (content) {
47
- process.stdout.write(content);
48
- fullContent += content;
49
- }
50
- }
51
-
52
- console.log("\n─────────────────────────────────────────");
53
- console.log(`\nFull Response: ${fullContent}`);
54
- console.log("\nStreaming completed successfully!");
55
- }
56
-
57
- main().catch((error) => {
58
- console.error("Error:", error.message);
59
- process.exit(1);
60
- });
61
-