@revenium/perplexity 2.0.8 → 2.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +14 -1
- package/CHANGELOG.md +17 -0
- package/README.md +157 -37
- package/dist/cjs/core/config/loader.js +16 -0
- package/dist/cjs/core/config/loader.js.map +1 -1
- package/dist/cjs/core/config/manager.js +9 -0
- package/dist/cjs/core/config/manager.js.map +1 -1
- package/dist/cjs/core/tracking/api-client.js +2 -0
- package/dist/cjs/core/tracking/api-client.js.map +1 -1
- package/dist/cjs/core/tracking/payload-builder.js +20 -1
- package/dist/cjs/core/tracking/payload-builder.js.map +1 -1
- package/dist/cjs/core/tracking/usage-tracker.js +1 -1
- package/dist/cjs/core/tracking/usage-tracker.js.map +1 -1
- package/dist/cjs/utils/summary-printer.js +237 -0
- package/dist/cjs/utils/summary-printer.js.map +1 -0
- package/dist/cjs/utils/trace-fields.js +136 -0
- package/dist/cjs/utils/trace-fields.js.map +1 -0
- package/dist/esm/core/config/loader.js +16 -0
- package/dist/esm/core/config/loader.js.map +1 -1
- package/dist/esm/core/config/manager.js +9 -0
- package/dist/esm/core/config/manager.js.map +1 -1
- package/dist/esm/core/tracking/api-client.js +2 -0
- package/dist/esm/core/tracking/api-client.js.map +1 -1
- package/dist/esm/core/tracking/payload-builder.js +20 -1
- package/dist/esm/core/tracking/payload-builder.js.map +1 -1
- package/dist/esm/core/tracking/usage-tracker.js +1 -1
- package/dist/esm/core/tracking/usage-tracker.js.map +1 -1
- package/dist/esm/utils/summary-printer.js +233 -0
- package/dist/esm/utils/summary-printer.js.map +1 -0
- package/dist/esm/utils/trace-fields.js +121 -0
- package/dist/esm/utils/trace-fields.js.map +1 -0
- package/dist/types/core/config/loader.d.ts.map +1 -1
- package/dist/types/core/config/manager.d.ts.map +1 -1
- package/dist/types/core/tracking/api-client.d.ts.map +1 -1
- package/dist/types/core/tracking/payload-builder.d.ts +1 -1
- package/dist/types/core/tracking/payload-builder.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +13 -0
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/utils/summary-printer.d.ts +23 -0
- package/dist/types/utils/summary-printer.d.ts.map +1 -0
- package/dist/types/utils/trace-fields.d.ts +11 -0
- package/dist/types/utils/trace-fields.d.ts.map +1 -0
- package/package.json +4 -2
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { getLogger } from "../core/config/index.js";
|
|
2
|
+
let globalConfig = null;
|
|
3
|
+
export function setConfig(config) {
|
|
4
|
+
globalConfig = config;
|
|
5
|
+
}
|
|
6
|
+
function getConfig() {
|
|
7
|
+
return globalConfig;
|
|
8
|
+
}
|
|
9
|
+
const DEFAULT_REVENIUM_BASE_URL = "https://api.revenium.ai";
|
|
10
|
+
const MAX_RETRIES = 3;
|
|
11
|
+
const RETRY_DELAY = 2000;
|
|
12
|
+
const FETCH_TIMEOUT = 10000;
|
|
13
|
+
function delayWithUnref(ms) {
|
|
14
|
+
return new Promise((resolve) => {
|
|
15
|
+
const timer = setTimeout(resolve, ms);
|
|
16
|
+
if (typeof timer.unref === "function") {
|
|
17
|
+
timer.unref();
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
async function fetchCompletionMetrics(transactionId, maxRetries = MAX_RETRIES, retryDelay = RETRY_DELAY) {
|
|
22
|
+
const config = getConfig();
|
|
23
|
+
if (!config) {
|
|
24
|
+
getLogger().debug("No config available for summary printing");
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
if (!config.teamId) {
|
|
28
|
+
getLogger().debug("Team ID not configured, skipping cost retrieval for summary");
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
if (!config.reveniumApiKey) {
|
|
32
|
+
getLogger().debug("Revenium API key not configured, skipping cost retrieval for summary");
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const baseUrl = (config.reveniumBaseUrl || DEFAULT_REVENIUM_BASE_URL).replace(/\/+$/, "");
|
|
36
|
+
const url = `${baseUrl}/profitstream/v2/api/sources/metrics/ai/completions`;
|
|
37
|
+
const urlWithParams = `${url}?teamId=${encodeURIComponent(config.teamId.trim())}&transactionId=${encodeURIComponent(transactionId)}`;
|
|
38
|
+
getLogger().debug("Fetching completion metrics", { url: urlWithParams });
|
|
39
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
40
|
+
// Create an AbortController with timeout to prevent hung requests from keeping Node process alive
|
|
41
|
+
const controller = new AbortController();
|
|
42
|
+
const timeoutId = setTimeout(() => controller.abort(), FETCH_TIMEOUT);
|
|
43
|
+
// Unref the timer so it doesn't keep the process alive
|
|
44
|
+
if (typeof timeoutId.unref === "function") {
|
|
45
|
+
timeoutId.unref();
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
const response = await fetch(urlWithParams, {
|
|
49
|
+
method: "GET",
|
|
50
|
+
headers: {
|
|
51
|
+
Accept: "application/json",
|
|
52
|
+
"x-api-key": config.reveniumApiKey,
|
|
53
|
+
},
|
|
54
|
+
signal: controller.signal,
|
|
55
|
+
});
|
|
56
|
+
if (!response.ok) {
|
|
57
|
+
try {
|
|
58
|
+
await response.text();
|
|
59
|
+
}
|
|
60
|
+
catch { }
|
|
61
|
+
getLogger().debug(`Completions metrics API returned ${response.status}`, {
|
|
62
|
+
attempt: attempt + 1,
|
|
63
|
+
});
|
|
64
|
+
if (attempt < maxRetries - 1) {
|
|
65
|
+
await delayWithUnref(retryDelay);
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const data = (await response.json());
|
|
71
|
+
const completions = data._embedded?.aICompletionMetricResourceList;
|
|
72
|
+
if (completions && completions.length > 0) {
|
|
73
|
+
return completions[0];
|
|
74
|
+
}
|
|
75
|
+
if (attempt < maxRetries - 1) {
|
|
76
|
+
getLogger().debug(`Waiting for metrics to aggregate (attempt ${attempt + 1}/${maxRetries})...`);
|
|
77
|
+
await delayWithUnref(retryDelay);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
getLogger().debug("Failed to fetch completion metrics", {
|
|
82
|
+
error: error instanceof Error ? error.message : String(error),
|
|
83
|
+
attempt: attempt + 1,
|
|
84
|
+
});
|
|
85
|
+
if (attempt < maxRetries - 1) {
|
|
86
|
+
await delayWithUnref(retryDelay);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
clearTimeout(timeoutId);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
function isSummaryFormat(value) {
|
|
96
|
+
return value === "human" || value === "json";
|
|
97
|
+
}
|
|
98
|
+
function formatAndPrintJsonSummary(payload, metrics) {
|
|
99
|
+
const config = getConfig();
|
|
100
|
+
const summary = {
|
|
101
|
+
model: payload.model,
|
|
102
|
+
provider: payload.provider,
|
|
103
|
+
durationSeconds: payload.requestDuration / 1000,
|
|
104
|
+
inputTokenCount: payload.inputTokenCount,
|
|
105
|
+
outputTokenCount: payload.outputTokenCount,
|
|
106
|
+
totalTokenCount: payload.totalTokenCount,
|
|
107
|
+
cost: typeof metrics?.totalCost === "number" ? metrics.totalCost : null,
|
|
108
|
+
};
|
|
109
|
+
if (summary.cost === null) {
|
|
110
|
+
summary.costStatus = config?.teamId ? "pending" : "unavailable";
|
|
111
|
+
}
|
|
112
|
+
if (payload.traceId) {
|
|
113
|
+
summary.traceId = payload.traceId;
|
|
114
|
+
}
|
|
115
|
+
console.log(JSON.stringify(summary));
|
|
116
|
+
}
|
|
117
|
+
function formatAndPrintHumanSummary(payload, metrics) {
|
|
118
|
+
console.log("\n" + "=".repeat(60));
|
|
119
|
+
console.log("📊 REVENIUM USAGE SUMMARY");
|
|
120
|
+
console.log("=".repeat(60));
|
|
121
|
+
console.log(`🤖 Model: ${payload.model}`);
|
|
122
|
+
console.log(`🏢 Provider: ${payload.provider}`);
|
|
123
|
+
console.log(`⏱️ Duration: ${(payload.requestDuration / 1000).toFixed(2)}s`);
|
|
124
|
+
console.log("\n💬 Token Usage:");
|
|
125
|
+
console.log(` 📥 Input Tokens: ${(payload.inputTokenCount ?? 0).toLocaleString()}`);
|
|
126
|
+
console.log(` 📤 Output Tokens: ${(payload.outputTokenCount ?? 0).toLocaleString()}`);
|
|
127
|
+
console.log(` 📊 Total Tokens: ${(payload.totalTokenCount ?? 0).toLocaleString()}`);
|
|
128
|
+
if (typeof metrics?.totalCost === "number") {
|
|
129
|
+
console.log(`\n💰 Cost: $${metrics.totalCost.toFixed(6)}`);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
const config = getConfig();
|
|
133
|
+
if (!config?.teamId) {
|
|
134
|
+
console.log(`\n💰 Cost: Set REVENIUM_TEAM_ID in .env to see pricing`);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
console.log(`\n💰 Cost: (pending aggregation)`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (payload.traceId) {
|
|
141
|
+
console.log(`\n🔖 Trace ID: ${payload.traceId}`);
|
|
142
|
+
}
|
|
143
|
+
console.log("=".repeat(60) + "\n");
|
|
144
|
+
}
|
|
145
|
+
function formatAndPrintSummary(payload, metrics, format) {
|
|
146
|
+
if (format === "json") {
|
|
147
|
+
formatAndPrintJsonSummary(payload, metrics);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
formatAndPrintHumanSummary(payload, metrics);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function safeFormatAndPrintSummary(payload, metrics, format) {
|
|
154
|
+
try {
|
|
155
|
+
formatAndPrintSummary(payload, metrics, format);
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
getLogger().debug("Failed to format and print summary", {
|
|
159
|
+
error: error instanceof Error ? error.message : String(error),
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function getSummaryFormat(value) {
|
|
164
|
+
if (!value)
|
|
165
|
+
return null;
|
|
166
|
+
if (value === true)
|
|
167
|
+
return "human";
|
|
168
|
+
if (isSummaryFormat(value)) {
|
|
169
|
+
return value;
|
|
170
|
+
}
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Initialize config from environment variables if not already set
|
|
175
|
+
* This ensures the summary printer works even if setConfig() is never called
|
|
176
|
+
*/
|
|
177
|
+
function initializeConfigFromEnv() {
|
|
178
|
+
if (globalConfig) {
|
|
179
|
+
return; // Already initialized
|
|
180
|
+
}
|
|
181
|
+
const printSummaryEnv = process.env.REVENIUM_PRINT_SUMMARY;
|
|
182
|
+
const teamId = process.env.REVENIUM_TEAM_ID;
|
|
183
|
+
const reveniumApiKey = process.env.REVENIUM_METERING_API_KEY;
|
|
184
|
+
const reveniumBaseUrl = process.env.REVENIUM_METERING_BASE_URL;
|
|
185
|
+
// Parse REVENIUM_PRINT_SUMMARY: env vars are always strings, so "true" !== true
|
|
186
|
+
let parsedPrintSummary;
|
|
187
|
+
if (printSummaryEnv === "true") {
|
|
188
|
+
parsedPrintSummary = true;
|
|
189
|
+
}
|
|
190
|
+
else if (printSummaryEnv === "false") {
|
|
191
|
+
parsedPrintSummary = false;
|
|
192
|
+
}
|
|
193
|
+
else if (printSummaryEnv === "human" || printSummaryEnv === "json") {
|
|
194
|
+
parsedPrintSummary = printSummaryEnv;
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
parsedPrintSummary = undefined;
|
|
198
|
+
}
|
|
199
|
+
if (parsedPrintSummary || teamId) {
|
|
200
|
+
globalConfig = {
|
|
201
|
+
printSummary: parsedPrintSummary,
|
|
202
|
+
teamId,
|
|
203
|
+
reveniumApiKey,
|
|
204
|
+
reveniumBaseUrl,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
export function printUsageSummary(payload) {
|
|
209
|
+
// Initialize from env vars if needed
|
|
210
|
+
initializeConfigFromEnv();
|
|
211
|
+
const config = getConfig();
|
|
212
|
+
const format = getSummaryFormat(config?.printSummary);
|
|
213
|
+
if (!format) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
if (config?.teamId && payload.transactionId) {
|
|
217
|
+
fetchCompletionMetrics(payload.transactionId)
|
|
218
|
+
.then((metrics) => {
|
|
219
|
+
safeFormatAndPrintSummary(payload, metrics, format);
|
|
220
|
+
})
|
|
221
|
+
.catch((error) => {
|
|
222
|
+
getLogger().debug("Failed to print usage summary with metrics", {
|
|
223
|
+
error: error instanceof Error ? error.message : String(error),
|
|
224
|
+
});
|
|
225
|
+
safeFormatAndPrintSummary(payload, null, format);
|
|
226
|
+
})
|
|
227
|
+
.catch(() => { });
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
safeFormatAndPrintSummary(payload, null, format);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=summary-printer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary-printer.js","sourceRoot":"","sources":["../../../src/utils/summary-printer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { getLogger } from "../core/config/index.js";
|
|
2
|
+
import axios from "axios";
|
|
3
|
+
const logger = getLogger();
|
|
4
|
+
let cachedRegion = null;
|
|
5
|
+
let regionCached = false;
|
|
6
|
+
let regionPromise = null;
|
|
7
|
+
export function resetRegionCache() {
|
|
8
|
+
cachedRegion = null;
|
|
9
|
+
regionCached = false;
|
|
10
|
+
regionPromise = null;
|
|
11
|
+
}
|
|
12
|
+
export function getEnvironment() {
|
|
13
|
+
const env = process.env.REVENIUM_ENVIRONMENT ||
|
|
14
|
+
process.env.NODE_ENV ||
|
|
15
|
+
process.env.DEPLOYMENT_ENV ||
|
|
16
|
+
null;
|
|
17
|
+
if (!env) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
const trimmed = env.trim();
|
|
21
|
+
if (trimmed.length > 255) {
|
|
22
|
+
logger.warn(`environment exceeds max length of 255 characters. Truncating.`);
|
|
23
|
+
return trimmed.substring(0, 255);
|
|
24
|
+
}
|
|
25
|
+
return trimmed;
|
|
26
|
+
}
|
|
27
|
+
export async function getRegion() {
|
|
28
|
+
if (regionCached) {
|
|
29
|
+
return cachedRegion;
|
|
30
|
+
}
|
|
31
|
+
if (regionPromise) {
|
|
32
|
+
return regionPromise;
|
|
33
|
+
}
|
|
34
|
+
const envRegion = process.env.AWS_REGION ||
|
|
35
|
+
process.env.AZURE_REGION ||
|
|
36
|
+
process.env.GCP_REGION ||
|
|
37
|
+
process.env.REVENIUM_REGION;
|
|
38
|
+
if (envRegion) {
|
|
39
|
+
cachedRegion = envRegion.trim();
|
|
40
|
+
regionCached = true;
|
|
41
|
+
return cachedRegion;
|
|
42
|
+
}
|
|
43
|
+
regionPromise = (async () => {
|
|
44
|
+
try {
|
|
45
|
+
const response = await axios.get("http://169.254.169.254/latest/meta-data/placement/region", { timeout: 500 });
|
|
46
|
+
cachedRegion = response.data.trim();
|
|
47
|
+
regionCached = true;
|
|
48
|
+
regionPromise = null;
|
|
49
|
+
return cachedRegion;
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
regionCached = false;
|
|
53
|
+
regionPromise = null;
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
})();
|
|
57
|
+
return regionPromise;
|
|
58
|
+
}
|
|
59
|
+
export function getCredentialAlias() {
|
|
60
|
+
const alias = process.env.REVENIUM_CREDENTIAL_ALIAS;
|
|
61
|
+
if (!alias) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const trimmed = alias.trim();
|
|
65
|
+
if (trimmed.length > 255) {
|
|
66
|
+
logger.warn(`credentialAlias exceeds max length of 255 characters. Truncating.`);
|
|
67
|
+
return trimmed.substring(0, 255);
|
|
68
|
+
}
|
|
69
|
+
return trimmed;
|
|
70
|
+
}
|
|
71
|
+
export function getTraceType() {
|
|
72
|
+
const traceType = process.env.REVENIUM_TRACE_TYPE;
|
|
73
|
+
if (!traceType) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
let value = traceType;
|
|
77
|
+
if (value.length > 128) {
|
|
78
|
+
logger.warn(`trace_type exceeds max length of 128 characters: ${value}. Truncating.`);
|
|
79
|
+
value = value.substring(0, 128);
|
|
80
|
+
}
|
|
81
|
+
if (!/^[a-zA-Z0-9_-]+$/.test(value)) {
|
|
82
|
+
logger.warn(`Invalid trace_type format: ${value}. Must be alphanumeric with hyphens/underscores only.`);
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
return value;
|
|
86
|
+
}
|
|
87
|
+
export function getTraceName() {
|
|
88
|
+
const traceName = process.env.REVENIUM_TRACE_NAME;
|
|
89
|
+
if (!traceName) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
if (traceName.length > 256) {
|
|
93
|
+
logger.warn(`trace_name exceeds max length of 256 characters. Truncating.`);
|
|
94
|
+
return traceName.substring(0, 256);
|
|
95
|
+
}
|
|
96
|
+
return traceName;
|
|
97
|
+
}
|
|
98
|
+
export function detectOperationSubtype(requestBody) {
|
|
99
|
+
if (requestBody && (requestBody.tools || requestBody.functions)) {
|
|
100
|
+
return "function_call";
|
|
101
|
+
}
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
export function getParentTransactionId() {
|
|
105
|
+
return process.env.REVENIUM_PARENT_TRANSACTION_ID || null;
|
|
106
|
+
}
|
|
107
|
+
export function getTransactionName() {
|
|
108
|
+
return process.env.REVENIUM_TRANSACTION_NAME || null;
|
|
109
|
+
}
|
|
110
|
+
export function getRetryNumber() {
|
|
111
|
+
const retryNum = process.env.REVENIUM_RETRY_NUMBER;
|
|
112
|
+
if (!retryNum) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
const parsed = parseInt(retryNum, 10);
|
|
116
|
+
if (isNaN(parsed) || parsed < 0) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
return parsed;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=trace-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-fields.js","sourceRoot":"","sources":["../../../src/utils/trace-fields.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/core/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AActD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/core/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AActD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CA2CzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/core/config/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/core/config/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAU9D;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAIF;;GAEG;AACH,wBAAgB,SAAS,IAAI,cAAc,GAAG,IAAI,CAEjD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAiBtD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,CAkBjD"}
|
|
@@ -1 +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;
|
|
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;AAQ9C;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAyD5E"}
|
|
@@ -20,5 +20,5 @@ import { ReveniumPayload, PerplexityResponse, PerplexityChatRequest, ProviderInf
|
|
|
20
20
|
* @param timeToFirstToken - Time to first token in milliseconds (for streaming)
|
|
21
21
|
* @returns Constructed payload for Revenium API
|
|
22
22
|
*/
|
|
23
|
-
export declare function buildPayload(operationType: "CHAT", response: PerplexityResponse, request: PerplexityChatRequest, startTime: number, duration: number, providerInfo?: ProviderInfo, timeToFirstToken?: number): ReveniumPayload
|
|
23
|
+
export declare function buildPayload(operationType: "CHAT", response: PerplexityResponse, request: PerplexityChatRequest, startTime: number, duration: number, providerInfo?: ProviderInfo, timeToFirstToken?: number): Promise<ReveniumPayload>;
|
|
24
24
|
//# sourceMappingURL=payload-builder.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAoB9B;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAChC,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,OAAO,CAAC,eAAe,CAAC,CA6F1B"}
|
|
@@ -80,6 +80,10 @@ export interface ReveniumConfig {
|
|
|
80
80
|
debug?: boolean;
|
|
81
81
|
/** Custom logger */
|
|
82
82
|
logger?: Logger;
|
|
83
|
+
/** Print usage summary to console (default: false). Can be true, false, 'human', or 'json' */
|
|
84
|
+
printSummary?: boolean | "human" | "json";
|
|
85
|
+
/** Team ID for cost retrieval from Revenium API */
|
|
86
|
+
teamId?: string;
|
|
83
87
|
}
|
|
84
88
|
/**
|
|
85
89
|
* Configuration interface (alias for backward compatibility)
|
|
@@ -117,6 +121,15 @@ export interface ReveniumPayload {
|
|
|
117
121
|
timeToFirstToken?: number;
|
|
118
122
|
agent?: string;
|
|
119
123
|
responseQualityScore?: number;
|
|
124
|
+
environment?: string;
|
|
125
|
+
region?: string;
|
|
126
|
+
credentialAlias?: string;
|
|
127
|
+
traceType?: string;
|
|
128
|
+
traceName?: string;
|
|
129
|
+
parentTransactionId?: string;
|
|
130
|
+
transactionName?: string;
|
|
131
|
+
retryNumber?: number;
|
|
132
|
+
operationSubtype?: string;
|
|
120
133
|
middlewareSource: string;
|
|
121
134
|
inputTokenCost?: number;
|
|
122
135
|
outputTokenCost?: 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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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Summary Printer Module
|
|
3
|
+
*
|
|
4
|
+
* Provides terminal output for cost/metrics summary after API requests.
|
|
5
|
+
* Fetches cost data from Revenium's completions API and formats for console display.
|
|
6
|
+
*
|
|
7
|
+
* NOTE: This module intentionally uses console.log() for user-facing output,
|
|
8
|
+
* which is an exception to the standard logging practices.
|
|
9
|
+
* The Logger class is used for debug/error messages, while console.log
|
|
10
|
+
* is used for the formatted summary that users want to see in their terminal.
|
|
11
|
+
*/
|
|
12
|
+
import { ReveniumPayload } from "../types/index.js";
|
|
13
|
+
type SummaryFormat = "human" | "json";
|
|
14
|
+
interface Config {
|
|
15
|
+
reveniumApiKey?: string;
|
|
16
|
+
reveniumBaseUrl?: string;
|
|
17
|
+
teamId?: string;
|
|
18
|
+
printSummary?: boolean | SummaryFormat;
|
|
19
|
+
}
|
|
20
|
+
export declare function setConfig(config: Config | null): void;
|
|
21
|
+
export declare function printUsageSummary(payload: ReveniumPayload): void;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=summary-printer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary-printer.d.ts","sourceRoot":"","sources":["../../../src/utils/summary-printer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,KAAK,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAEtC,UAAU,MAAM;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;CACxC;AAID,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAErD;AA4SD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CA0BhE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function resetRegionCache(): void;
|
|
2
|
+
export declare function getEnvironment(): string | null;
|
|
3
|
+
export declare function getRegion(): Promise<string | null>;
|
|
4
|
+
export declare function getCredentialAlias(): string | null;
|
|
5
|
+
export declare function getTraceType(): string | null;
|
|
6
|
+
export declare function getTraceName(): string | null;
|
|
7
|
+
export declare function detectOperationSubtype(requestBody?: any): string | null;
|
|
8
|
+
export declare function getParentTransactionId(): string | null;
|
|
9
|
+
export declare function getTransactionName(): string | null;
|
|
10
|
+
export declare function getRetryNumber(): number | null;
|
|
11
|
+
//# sourceMappingURL=trace-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-fields.d.ts","sourceRoot":"","sources":["../../../src/utils/trace-fields.ts"],"names":[],"mappings":"AASA,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAqB9C;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuCxD;AAED,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAiBlD;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAwB5C;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAa5C;AAED,wBAAgB,sBAAsB,CAAC,WAAW,CAAC,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAKvE;AAED,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAEtD;AAED,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAU9C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@revenium/perplexity",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.9",
|
|
4
4
|
"description": "NodeJS middleware for Perplexity AI API with Revenium metering",
|
|
5
5
|
"homepage": "https://github.com/revenium/revenium-middleware-perplexity-node#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"example:metadata": "npx tsx examples/metadata.ts",
|
|
47
47
|
"example:advanced": "npx tsx examples/advanced.ts",
|
|
48
48
|
"example:stream": "npx tsx examples/stream.ts",
|
|
49
|
-
"
|
|
49
|
+
"example": "npm run example:getting-started"
|
|
50
50
|
},
|
|
51
51
|
"keywords": [
|
|
52
52
|
"revenium",
|
|
@@ -66,11 +66,13 @@
|
|
|
66
66
|
"node": ">=20.0.0"
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
+
"axios": "^1.13.2",
|
|
69
70
|
"dotenv": "^17.2.2",
|
|
70
71
|
"uuid": "^13.0.0"
|
|
71
72
|
},
|
|
72
73
|
"devDependencies": {
|
|
73
74
|
"@types/node": "^24.7.1",
|
|
75
|
+
"openai": "^5.23.2",
|
|
74
76
|
"tsx": "^4.19.2",
|
|
75
77
|
"typescript": "^5.9.2"
|
|
76
78
|
},
|