@revenium/perplexity 2.0.4 → 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 (205) hide show
  1. package/CHANGELOG.md +32 -33
  2. package/README.md +120 -101
  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 -59
  39. package/dist/cjs/index.js.map +1 -1
  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 -1
  43. package/dist/cjs/types/index.js.map +1 -1
  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 -39
  91. package/dist/esm/index.js.map +1 -1
  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 -2
  95. package/dist/esm/types/index.js.map +1 -1
  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 -1
  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 -129
  147. package/dist/types/types/index.d.ts.map +1 -1
  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 +124 -220
  161. package/examples/advanced.ts +123 -0
  162. package/examples/basic.ts +32 -37
  163. package/examples/getting_started.ts +26 -49
  164. package/examples/metadata.ts +51 -48
  165. package/examples/stream.ts +53 -0
  166. package/package.json +9 -10
  167. package/dist/cjs/constants.js +0 -70
  168. package/dist/cjs/constants.js.map +0 -1
  169. package/dist/cjs/core/config/perplexity-config.js +0 -45
  170. package/dist/cjs/core/config/perplexity-config.js.map +0 -1
  171. package/dist/cjs/core/config/revenium-config.js +0 -80
  172. package/dist/cjs/core/config/revenium-config.js.map +0 -1
  173. package/dist/cjs/core/tracking/metering.js +0 -211
  174. package/dist/cjs/core/tracking/metering.js.map +0 -1
  175. package/dist/cjs/core/wrapper/perplexity-client.js +0 -187
  176. package/dist/cjs/core/wrapper/perplexity-client.js.map +0 -1
  177. package/dist/cjs/utils/logger.js +0 -23
  178. package/dist/cjs/utils/logger.js.map +0 -1
  179. package/dist/esm/constants.js +0 -67
  180. package/dist/esm/constants.js.map +0 -1
  181. package/dist/esm/core/config/perplexity-config.js +0 -40
  182. package/dist/esm/core/config/perplexity-config.js.map +0 -1
  183. package/dist/esm/core/config/revenium-config.js +0 -72
  184. package/dist/esm/core/config/revenium-config.js.map +0 -1
  185. package/dist/esm/core/tracking/metering.js +0 -206
  186. package/dist/esm/core/tracking/metering.js.map +0 -1
  187. package/dist/esm/core/wrapper/perplexity-client.js +0 -180
  188. package/dist/esm/core/wrapper/perplexity-client.js.map +0 -1
  189. package/dist/esm/utils/logger.js +0 -20
  190. package/dist/esm/utils/logger.js.map +0 -1
  191. package/dist/types/constants.d.ts +0 -67
  192. package/dist/types/constants.d.ts.map +0 -1
  193. package/dist/types/core/config/perplexity-config.d.ts +0 -24
  194. package/dist/types/core/config/perplexity-config.d.ts.map +0 -1
  195. package/dist/types/core/config/revenium-config.d.ts +0 -37
  196. package/dist/types/core/config/revenium-config.d.ts.map +0 -1
  197. package/dist/types/core/tracking/metering.d.ts +0 -31
  198. package/dist/types/core/tracking/metering.d.ts.map +0 -1
  199. package/dist/types/core/wrapper/perplexity-client.d.ts +0 -32
  200. package/dist/types/core/wrapper/perplexity-client.d.ts.map +0 -1
  201. package/dist/types/utils/logger.d.ts +0 -10
  202. package/dist/types/utils/logger.d.ts.map +0 -1
  203. package/examples/advanced-features.ts +0 -148
  204. package/examples/chat.ts +0 -73
  205. package/examples/streaming.ts +0 -50
@@ -1,148 +0,0 @@
1
- /**
2
- * Advanced Features Example
3
- *
4
- * This example demonstrates advanced middleware features:
5
- * - Streaming responses with real-time content
6
- * - Comprehensive metadata for analytics
7
- * - Multiple model types (search, reasoning, research)
8
- * - Session and quality tracking
9
- *
10
- * For complete documentation, see:
11
- * https://revenium.readme.io/reference/meter_ai_completion
12
- */
13
-
14
- import {
15
- initializeReveniumFromEnv,
16
- initializePerplexityFromEnv,
17
- createChatCompletion,
18
- createStreamingChatCompletion,
19
- UsageMetadata,
20
- } from "../src";
21
-
22
- async function demonstrateStreaming() {
23
- console.log("\n--- Streaming Responses ---");
24
- const usageMetadata: UsageMetadata = {
25
- subscriber: { id: "user-streaming-demo" },
26
- traceId: "streaming-session-" + Date.now(),
27
- taskType: "list-generation",
28
- };
29
-
30
- const result = await createStreamingChatCompletion({
31
- messages: [
32
- {
33
- role: "user",
34
- content: "List the first 3 planets in our solar system.",
35
- },
36
- ],
37
- model: "sonar-pro",
38
- maxTokens: 400,
39
- usageMetadata,
40
- });
41
-
42
- console.log(`Model: ${result.model}`);
43
- console.log("Response: ");
44
-
45
- let fullContent = "";
46
- for await (const chunk of result.stream) {
47
- const content = chunk.choices[0]?.delta?.content || "";
48
- if (content) {
49
- process.stdout.write(content);
50
- fullContent += content;
51
- }
52
- }
53
-
54
- console.log("\n✓ Streaming completed\n");
55
- }
56
-
57
- async function demonstrateComprehensiveMetadata() {
58
- console.log("\n--- Comprehensive Metadata Tracking ---");
59
-
60
- const usageMetadata: UsageMetadata = {
61
- traceId: "session-advanced-demo-" + Date.now(),
62
- taskType: "educational-query",
63
- subscriber: {
64
- id: "user-456",
65
- email: "advanced-user@example.com",
66
- credential: {
67
- name: "premium-api-key",
68
- value: "key-premium-abc123",
69
- },
70
- },
71
- organizationId: "org-enterprise-789",
72
- subscriptionId: "sub-enterprise-2024",
73
- productId: "learning-platform",
74
- agent: "educational-assistant-v2",
75
- responseQualityScore: 0.92,
76
- };
77
-
78
- const result = await createChatCompletion({
79
- messages: [
80
- {
81
- role: "user",
82
- content: "What is machine learning?",
83
- },
84
- ],
85
- model: "sonar-pro",
86
- maxTokens: 400,
87
- usageMetadata,
88
- });
89
-
90
- console.log(`Response: ${result.content.substring(0, 100)}...`);
91
- console.log(`✓ Metadata tracked successfully\n`);
92
- }
93
-
94
- async function demonstrateMultipleModels() {
95
- console.log("\n--- Multiple Model Types ---");
96
-
97
- const usageMetadata: UsageMetadata = {
98
- subscriber: { id: "model-comparison-user" },
99
- taskType: "weather-search",
100
- };
101
-
102
- // Search model
103
- console.log("Using sonar (lightweight search)...");
104
- const searchResult = await createChatCompletion({
105
- messages: [{ role: "user", content: "Current weather in Tokyo" }],
106
- model: "sonar-pro",
107
- maxTokens: 400,
108
- usageMetadata,
109
- });
110
- console.log(`Response: ${searchResult.content.substring(0, 80)}...`);
111
-
112
- // Reasoning model
113
- console.log("\nUsing sonar-reasoning (real-time reasoning)...");
114
- const reasoningResult = await createChatCompletion({
115
- messages: [
116
- { role: "user", content: "Why is the sky blue? Explain briefly." },
117
- ],
118
- model: "sonar-reasoning",
119
- maxTokens: 400,
120
- usageMetadata: {
121
- ...usageMetadata,
122
- taskType: "reasoning-query",
123
- },
124
- });
125
- console.log(`Response: ${reasoningResult.content.substring(0, 80)}...`);
126
-
127
- console.log("\n✓ Multiple models demonstrated\n");
128
- }
129
-
130
- async function main() {
131
- console.log("\n=== Advanced Features Example ===");
132
-
133
- // Initialize configurations
134
- initializeReveniumFromEnv();
135
- initializePerplexityFromEnv();
136
-
137
- // Demonstrate features
138
- await demonstrateStreaming();
139
- await demonstrateComprehensiveMetadata();
140
- await demonstrateMultipleModels();
141
-
142
- console.log("=== All Advanced Features Demonstrated ===\n");
143
- }
144
-
145
- main().catch((error) => {
146
- console.error("\nError:", error.message);
147
- process.exit(1);
148
- });
package/examples/chat.ts DELETED
@@ -1,73 +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
- type PerplexityMessage,
13
- } from "../src";
14
-
15
- async function main() {
16
- // Initialize configurations from environment variables
17
- initializeReveniumFromEnv();
18
- initializePerplexityFromEnv();
19
-
20
- // Start a conversation
21
- const messages: PerplexityMessage[] = [
22
- {
23
- role: "system",
24
- content: "You are a helpful assistant that provides concise answers.",
25
- },
26
- {
27
- role: "user",
28
- content: "What is the capital of France?",
29
- },
30
- ];
31
-
32
- console.log("\n--- Turn 1 ---");
33
- console.log("User: What is the capital of France?");
34
-
35
- const response1 = await createChatCompletion({
36
- messages,
37
- model: "sonar",
38
- maxTokens: 100,
39
- });
40
-
41
- console.log(`Assistant: ${response1.content}`);
42
-
43
- // Continue the conversation
44
- messages.push({
45
- role: "assistant",
46
- content: response1.content,
47
- });
48
-
49
- messages.push({
50
- role: "user",
51
- content: "What is its population?",
52
- });
53
-
54
- console.log("\n--- Turn 2 ---");
55
- console.log("User: What is its population?");
56
-
57
- const response2 = await createChatCompletion({
58
- messages,
59
- model: "sonar-pro",
60
- maxTokens: 500,
61
- });
62
-
63
- console.log(`Assistant: ${response2.content}`);
64
-
65
- // Summary
66
- const totalTokens = response1.usage.totalTokens + response2.usage.totalTokens;
67
- console.log(`\n✓ Chat completed - Total tokens used: ${totalTokens}`);
68
- }
69
-
70
- main().catch((error) => {
71
- console.error("Error:", error.message);
72
- process.exit(1);
73
- });
@@ -1,50 +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
- } from "../src";
13
-
14
- async function main() {
15
- // Initialize configurations from environment variables
16
- initializeReveniumFromEnv();
17
- initializePerplexityFromEnv();
18
-
19
- // Create a streaming chat completion
20
- const result = await createStreamingChatCompletion({
21
- messages: [
22
- {
23
- role: "user",
24
- content: "Count from 1 to 5 slowly, one number per line.",
25
- },
26
- ],
27
- model: "sonar-pro",
28
- maxTokens: 200,
29
- });
30
-
31
- console.log(`\nModel: ${result.model}`);
32
- console.log("Streaming response:\n");
33
-
34
- // Process the stream
35
- let fullContent = "";
36
- for await (const chunk of result.stream) {
37
- const content = chunk.choices[0]?.delta?.content || "";
38
- if (content) {
39
- process.stdout.write(content);
40
- fullContent += content;
41
- }
42
- }
43
-
44
- console.log("\n\n✓ Streaming completed");
45
- }
46
-
47
- main().catch((error) => {
48
- console.error("Error:", error.message);
49
- process.exit(1);
50
- });