@revenium/perplexity 2.0.3 → 2.0.4
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/CHANGELOG.md +39 -1
- package/README.md +86 -681
- package/dist/cjs/constants.js +70 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/core/config/perplexity-config.js.map +1 -0
- package/dist/cjs/core/config/revenium-config.js.map +1 -0
- package/dist/cjs/core/tracking/metering.js +86 -6
- package/dist/cjs/core/tracking/metering.js.map +1 -0
- package/dist/cjs/core/wrapper/perplexity-client.js +11 -1
- package/dist/cjs/core/wrapper/perplexity-client.js.map +1 -0
- package/dist/cjs/index.js +9 -4
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/types/index.js +0 -15
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/utils/logger.js.map +1 -0
- package/dist/esm/constants.js +67 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/core/config/perplexity-config.js.map +1 -0
- package/dist/esm/core/config/revenium-config.js.map +1 -0
- package/dist/esm/core/tracking/metering.js +86 -6
- package/dist/esm/core/tracking/metering.js.map +1 -0
- package/dist/esm/core/wrapper/perplexity-client.js +11 -1
- package/dist/esm/core/wrapper/perplexity-client.js.map +1 -0
- package/dist/esm/index.js +4 -1
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types/index.js +1 -14
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/types/constants.d.ts +67 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/core/config/perplexity-config.d.ts.map +1 -0
- package/dist/types/core/config/revenium-config.d.ts.map +1 -0
- package/dist/types/core/tracking/metering.d.ts.map +1 -0
- package/dist/types/core/wrapper/perplexity-client.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +3 -11
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/utils/logger.d.ts.map +1 -0
- package/examples/README.md +220 -221
- package/examples/advanced-features.ts +148 -0
- package/examples/basic.ts +16 -21
- package/examples/chat.ts +11 -25
- package/examples/getting_started.ts +64 -0
- package/examples/metadata.ts +33 -40
- package/examples/streaming.ts +6 -17
- package/package.json +7 -11
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration constants for Revenium Perplexity middleware
|
|
4
|
+
* Centralizes all magic numbers and default values
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.API_ENDPOINTS = exports.DEFAULT_CONFIG = exports.PERPLEXITY_PATTERNS = exports.MIDDLEWARE_INFO = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Middleware identification
|
|
10
|
+
*
|
|
11
|
+
* Per Revenium API spec (https://revenium.readme.io/reference/meter_ai_completion):
|
|
12
|
+
* "middlewareSource: Identifier of the Revenium middleware package or SDK that
|
|
13
|
+
* captured and submitted this AI completion metadata. This field is AUTOMATICALLY
|
|
14
|
+
* SET by Revenium's middleware packages (e.g., 'revenium-openai-python',
|
|
15
|
+
* 'revenium-anthropic-node')."
|
|
16
|
+
*/
|
|
17
|
+
exports.MIDDLEWARE_INFO = {
|
|
18
|
+
/** Package name */
|
|
19
|
+
NAME: "@revenium/perplexity",
|
|
20
|
+
/** Package version */
|
|
21
|
+
VERSION: "2.0.4",
|
|
22
|
+
/** Full middleware source identifier for API tracking */
|
|
23
|
+
SOURCE: "@revenium/perplexity-2.0.4",
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Perplexity model patterns and API response mappings
|
|
27
|
+
*
|
|
28
|
+
* Per Revenium API spec (https://revenium.readme.io/reference/meter_ai_completion):
|
|
29
|
+
* stopReason enum: "END", "END_SEQUENCE", "TIMEOUT", "TOKEN_LIMIT",
|
|
30
|
+
* "COST_LIMIT", "COMPLETION_LIMIT", "ERROR", "CANCELLED"
|
|
31
|
+
*
|
|
32
|
+
* We map Perplexity's finish_reason values to these Revenium enums.
|
|
33
|
+
* Only provider-reported values are mapped; middleware-level values
|
|
34
|
+
* (TIMEOUT, COST_LIMIT, etc.) are not applicable to provider responses.
|
|
35
|
+
*/
|
|
36
|
+
exports.PERPLEXITY_PATTERNS = {
|
|
37
|
+
/** Known Perplexity/OpenAI finish reasons */
|
|
38
|
+
FINISH_REASONS: {
|
|
39
|
+
STOP: "stop",
|
|
40
|
+
LENGTH: "length",
|
|
41
|
+
TOOL_CALLS: "tool_calls",
|
|
42
|
+
CONTENT_FILTER: "content_filter",
|
|
43
|
+
FUNCTION_CALL: "function_call",
|
|
44
|
+
},
|
|
45
|
+
/** Revenium stop reason mappings from Perplexity finish_reason to Revenium enum */
|
|
46
|
+
REVENIUM_STOP_REASON_MAP: {
|
|
47
|
+
stop: "END",
|
|
48
|
+
length: "TOKEN_LIMIT",
|
|
49
|
+
tool_calls: "END",
|
|
50
|
+
content_filter: "END",
|
|
51
|
+
function_call: "END",
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Default configuration values
|
|
56
|
+
*/
|
|
57
|
+
exports.DEFAULT_CONFIG = {
|
|
58
|
+
/** Default Revenium API base URL */
|
|
59
|
+
REVENIUM_BASE_URL: "https://api.revenium.ai",
|
|
60
|
+
/** Default Perplexity API base URL */
|
|
61
|
+
PERPLEXITY_BASE_URL: "https://api.perplexity.ai",
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* API endpoints
|
|
65
|
+
*/
|
|
66
|
+
exports.API_ENDPOINTS = {
|
|
67
|
+
/** Revenium AI completions endpoint */
|
|
68
|
+
AI_COMPLETIONS: "/meter/v2/ai/completions",
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;;;;;;;GAQG;AACU,QAAA,eAAe,GAAG;IAC7B,mBAAmB;IACnB,IAAI,EAAE,sBAAsB;IAC5B,sBAAsB;IACtB,OAAO,EAAE,OAAO;IAChB,yDAAyD;IACzD,MAAM,EAAE,4BAA4B;CAC5B,CAAC;AAEX;;;;;;;;;;GAUG;AACU,QAAA,mBAAmB,GAAG;IACjC,6CAA6C;IAC7C,cAAc,EAAE;QACd,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,YAAY;QACxB,cAAc,EAAE,gBAAgB;QAChC,aAAa,EAAE,eAAe;KACtB;IAEV,mFAAmF;IACnF,wBAAwB,EAAE;QACxB,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,aAAa;QACrB,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,KAAK;KACZ;CACF,CAAC;AAEX;;GAEG;AACU,QAAA,cAAc,GAAG;IAC5B,oCAAoC;IACpC,iBAAiB,EAAE,yBAAyB;IAE5C,sCAAsC;IACtC,mBAAmB,EAAE,2BAA2B;CACxC,CAAC;AAEX;;GAEG;AACU,QAAA,aAAa,GAAG;IAC3B,uCAAuC;IACvC,cAAc,EAAE,0BAA0B;CAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perplexity-config.js","sourceRoot":"","sources":["../../../../src/core/config/perplexity-config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAcH,kEAkBC;AAKD,oDAWC;AAKD,kDAEC;AArDD,+CAA4C;AAO5C,IAAI,gBAAgB,GAA4B,IAAI,CAAC;AAErD;;GAEG;AACH,SAAgB,2BAA2B;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC9C,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,2BAA2B,CAAC;IAErE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IAED,gBAAgB,GAAG;QACjB,MAAM;QACN,OAAO;KACR,CAAC;IAEF,eAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACjE,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,MAGpC;IACC,gBAAgB,GAAG;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,2BAA2B;KACvD,CAAC;IAEF,eAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACvE,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB;IACjC,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revenium-config.js","sourceRoot":"","sources":["../../../../src/core/config/revenium-config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAeH,8DA6BC;AAKD,gDAWC;AAKD,8CAEC;AAKD,8CAEC;AAKD,0CAKC;AAKD,wCAKC;AA5FD,+CAA4C;AAQ5C,IAAI,cAAc,GAA0B,IAAI,CAAC;AAEjD;;GAEG;AACH,SAAgB,yBAAyB;IACvC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,CAAC,OAAO,CAC1E,cAAc,EACd,EAAE,CACH,CAAC;IACF,MAAM,eAAe,GACnB,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAE7E,IAAI,CAAC,cAAc,IAAI,CAAC,eAAe,EAAE,CAAC;QACxC,eAAM,CAAC,IAAI,CACT,6FAA6F,CAC9F,CAAC;QACF,cAAc,GAAG;YACf,cAAc,EAAE,EAAE;YAClB,eAAe,EAAE,EAAE;YACnB,OAAO,EAAE,KAAK;SACf,CAAC;QACF,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,cAAc,GAAG;QACf,cAAc;QACd,eAAe;QACf,OAAO,EAAE,IAAI;KACd,CAAC;IAEF,eAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAC/D,eAAM,CAAC,KAAK,CAAC,sBAAsB,eAAe,EAAE,CAAC,CAAC;IACtD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,MAGlC;IACC,cAAc,GAAG;QACf,GAAG,MAAM;QACT,OAAO,EAAE,IAAI;KACd,CAAC;IAEF,eAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACrE,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,cAAc,EAAE,OAAO,IAAI,KAAK,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe;IAC7B,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,eAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc;IAC5B,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;QAC9B,eAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
|
|
@@ -9,6 +9,7 @@ exports.buildMeteringData = buildMeteringData;
|
|
|
9
9
|
exports.sendMeteringData = sendMeteringData;
|
|
10
10
|
const revenium_config_1 = require("../config/revenium-config");
|
|
11
11
|
const logger_1 = require("../../utils/logger");
|
|
12
|
+
const constants_1 = require("../../constants");
|
|
12
13
|
/**
|
|
13
14
|
* Generate a unique transaction ID
|
|
14
15
|
*/
|
|
@@ -27,6 +28,79 @@ function formatTimestamp(date) {
|
|
|
27
28
|
function calculateDuration(startTime, endTime) {
|
|
28
29
|
return endTime.getTime() - startTime.getTime();
|
|
29
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Map Perplexity finish_reason to Revenium stopReason enum
|
|
33
|
+
*/
|
|
34
|
+
function mapStopReason(finishReason) {
|
|
35
|
+
if (!finishReason) {
|
|
36
|
+
return "END";
|
|
37
|
+
}
|
|
38
|
+
const mapped = constants_1.PERPLEXITY_PATTERNS.REVENIUM_STOP_REASON_MAP[finishReason];
|
|
39
|
+
if (!mapped) {
|
|
40
|
+
logger_1.logger.info(`Unknown finish_reason '${finishReason}', defaulting to 'END'`);
|
|
41
|
+
return "END";
|
|
42
|
+
}
|
|
43
|
+
return mapped;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Sanitize metering data for debug logging by redacting sensitive fields
|
|
47
|
+
*
|
|
48
|
+
* SECURITY: Prevents exposure of PII and credentials in debug logs.
|
|
49
|
+
* Redacts: subscriber.id, subscriber.email, subscriber.credential.value,
|
|
50
|
+
* organizationId, subscriptionId, productId, traceId
|
|
51
|
+
*
|
|
52
|
+
* Per security best practices, debug logs should never contain:
|
|
53
|
+
* - Personally Identifiable Information (PII)
|
|
54
|
+
* - API keys or credentials
|
|
55
|
+
* - Business-sensitive identifiers
|
|
56
|
+
*/
|
|
57
|
+
function sanitizeMeteringData(data) {
|
|
58
|
+
return {
|
|
59
|
+
// Keep useful debugging info
|
|
60
|
+
stopReason: data.stopReason,
|
|
61
|
+
costType: data.costType,
|
|
62
|
+
isStreamed: data.isStreamed,
|
|
63
|
+
taskType: data.taskType,
|
|
64
|
+
agent: data.agent,
|
|
65
|
+
operationType: data.operationType,
|
|
66
|
+
inputTokenCount: data.inputTokenCount,
|
|
67
|
+
outputTokenCount: data.outputTokenCount,
|
|
68
|
+
reasoningTokenCount: data.reasoningTokenCount,
|
|
69
|
+
cacheCreationTokenCount: data.cacheCreationTokenCount,
|
|
70
|
+
cacheReadTokenCount: data.cacheReadTokenCount,
|
|
71
|
+
totalTokenCount: data.totalTokenCount,
|
|
72
|
+
model: data.model,
|
|
73
|
+
requestDuration: data.requestDuration,
|
|
74
|
+
provider: data.provider,
|
|
75
|
+
timeToFirstToken: data.timeToFirstToken,
|
|
76
|
+
middlewareSource: data.middlewareSource,
|
|
77
|
+
// Redact PII and sensitive identifiers
|
|
78
|
+
organizationId: data.organizationId ? "[REDACTED]" : undefined,
|
|
79
|
+
productId: data.productId ? "[REDACTED]" : undefined,
|
|
80
|
+
subscriptionId: data.subscriptionId ? "[REDACTED]" : undefined,
|
|
81
|
+
transactionId: data.transactionId ? "[REDACTED]" : undefined,
|
|
82
|
+
traceId: data.traceId ? "[REDACTED]" : undefined,
|
|
83
|
+
// Redact subscriber PII and credentials
|
|
84
|
+
subscriber: data.subscriber
|
|
85
|
+
? {
|
|
86
|
+
id: "[REDACTED]",
|
|
87
|
+
email: "[REDACTED]",
|
|
88
|
+
credential: data.subscriber.credential
|
|
89
|
+
? {
|
|
90
|
+
name: data.subscriber.credential.name,
|
|
91
|
+
value: "[REDACTED]",
|
|
92
|
+
}
|
|
93
|
+
: undefined,
|
|
94
|
+
}
|
|
95
|
+
: undefined,
|
|
96
|
+
// Keep timestamps (not sensitive)
|
|
97
|
+
requestTime: data.requestTime,
|
|
98
|
+
responseTime: data.responseTime,
|
|
99
|
+
completionStartTime: data.completionStartTime,
|
|
100
|
+
// Redact quality score if present (could be business-sensitive)
|
|
101
|
+
responseQualityScore: data.responseQualityScore !== undefined ? "[REDACTED]" : undefined,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
30
104
|
/**
|
|
31
105
|
* Build metering data from request information
|
|
32
106
|
*/
|
|
@@ -61,10 +135,10 @@ function buildMeteringData(params) {
|
|
|
61
135
|
};
|
|
62
136
|
// Build the payload in the exact order expected by Revenium API v2
|
|
63
137
|
const payload = {
|
|
64
|
-
stopReason:
|
|
138
|
+
stopReason: mapStopReason(stopReason), // Map finish_reason to Revenium enum
|
|
65
139
|
costType: "AI", // Fixed value as per Google middleware
|
|
66
140
|
isStreamed,
|
|
67
|
-
taskType: "AI", //
|
|
141
|
+
taskType: usageMetadata.taskType || "AI", // Allow override from metadata
|
|
68
142
|
agent: usageMetadata.agent || agent,
|
|
69
143
|
operationType: usageMetadata.operationType || operationType,
|
|
70
144
|
inputTokenCount: usageMetadata.inputTokenCount ?? inputTokens,
|
|
@@ -84,12 +158,18 @@ function buildMeteringData(params) {
|
|
|
84
158
|
requestTime: usageMetadata.requestTime || formatTimestamp(startTime),
|
|
85
159
|
completionStartTime: usageMetadata.completionStartTime || formatTimestamp(endTime),
|
|
86
160
|
timeToFirstToken: usageMetadata.timeToFirstToken || 0,
|
|
87
|
-
|
|
161
|
+
middlewareSource: constants_1.MIDDLEWARE_INFO.SOURCE,
|
|
88
162
|
};
|
|
89
|
-
//
|
|
163
|
+
// Add optional fields only if provided
|
|
90
164
|
if (usageMetadata.traceId) {
|
|
91
165
|
payload.traceId = usageMetadata.traceId;
|
|
92
166
|
}
|
|
167
|
+
if (usageMetadata.subscriptionId) {
|
|
168
|
+
payload.subscriptionId = usageMetadata.subscriptionId;
|
|
169
|
+
}
|
|
170
|
+
if (usageMetadata.responseQualityScore !== undefined) {
|
|
171
|
+
payload.responseQualityScore = usageMetadata.responseQualityScore;
|
|
172
|
+
}
|
|
93
173
|
return payload;
|
|
94
174
|
}
|
|
95
175
|
/**
|
|
@@ -106,8 +186,8 @@ async function sendMeteringData(meteringData) {
|
|
|
106
186
|
return;
|
|
107
187
|
}
|
|
108
188
|
try {
|
|
109
|
-
const url = `${config.meteringBaseUrl}/v2/ai/completions`;
|
|
110
|
-
logger_1.logger.debug("Sending metering data to Revenium:", JSON.stringify(meteringData, null, 2));
|
|
189
|
+
const url = `${config.meteringBaseUrl}/meter/v2/ai/completions`;
|
|
190
|
+
logger_1.logger.debug("Sending metering data to Revenium (sensitive fields redacted):", JSON.stringify(sanitizeMeteringData(meteringData), null, 2));
|
|
111
191
|
const response = await fetch(url, {
|
|
112
192
|
method: "POST",
|
|
113
193
|
headers: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metering.js","sourceRoot":"","sources":["../../../../src/core/tracking/metering.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAaH,sDAEC;AAyGD,8CA4GC;AAKD,4CA4CC;AAnRD,+DAGmC;AACnC,+CAA4C;AAE5C,+CAAuE;AAEvE;;GAEG;AACH,SAAgB,qBAAqB;IACnC,OAAO,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAU;IACjC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,SAAe,EAAE,OAAa;IACvD,OAAO,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,YAA2B;IAChD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GACV,+BAAmB,CAAC,wBAAwB,CAC1C,YAAyE,CAC1E,CAAC;IAEJ,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,eAAM,CAAC,IAAI,CAAC,0BAA0B,YAAY,wBAAwB,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,oBAAoB,CAAC,IAAS;IACrC,OAAO;QACL,6BAA6B;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;QACrD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QAEvC,uCAAuC;QACvC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QAC9D,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QACpD,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QAC9D,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QAC5D,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QAEhD,wCAAwC;QACxC,UAAU,EAAE,IAAI,CAAC,UAAU;YACzB,CAAC,CAAC;gBACE,EAAE,EAAE,YAAY;gBAChB,KAAK,EAAE,YAAY;gBACnB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU;oBACpC,CAAC,CAAC;wBACE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI;wBACrC,KAAK,EAAE,YAAY;qBACpB;oBACH,CAAC,CAAC,SAAS;aACd;YACH,CAAC,CAAC,SAAS;QAEb,kCAAkC;QAClC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAE7C,gEAAgE;QAChE,oBAAoB,EAClB,IAAI,CAAC,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;KACrE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,MAajC;IACC,MAAM,EACJ,KAAK,EACL,SAAS,EACT,OAAO,EACP,WAAW,EACX,YAAY,EACZ,WAAW,EACX,eAAe,GAAG,CAAC,EACnB,YAAY,GAAG,CAAC,EAChB,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAa,GAAG,EAAE,GACnB,GAAG,MAAM,CAAC;IAEX,MAAM,MAAM,GAAG,IAAA,mCAAiB,GAAE,CAAC;IACnC,MAAM,KAAK,GAAG,YAAY,CAAC;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC;IACzB,MAAM,aAAa,GAAG,MAAM,CAAC;IAE7B,+BAA+B;IAC/B,MAAM,YAAY,GAChB,aAAa,CAAC,UAAU,EAAE,EAAE;QAC5B,aAAa,CAAC,YAAY;QAC1B,QAAQ,qBAAqB,EAAE,EAAE,CAAC;IAEpC,MAAM,eAAe,GACnB,aAAa,CAAC,UAAU,EAAE,KAAK;QAC/B,aAAa,CAAC,eAAe;QAC7B,QAAQ,KAAK,KAAK,CAAC;IAErB,MAAM,oBAAoB,GACxB,aAAa,CAAC,UAAU,EAAE,UAAU;QACpC,CAAC,aAAa,CAAC,wBAAwB;YACvC,aAAa,CAAC,oBAAoB;YAChC,CAAC,CAAC;gBACE,IAAI,EAAE,aAAa,CAAC,wBAAwB;gBAC5C,KAAK,EAAE,aAAa,CAAC,oBAAoB;aAC1C;YACH,CAAC,CAAC;gBACE,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,oBAAoB;aAC5B,CAAC,CAAC;IAET,MAAM,UAAU,GAAG;QACjB,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,eAAe;QACtB,UAAU,EAAE,oBAAoB;KACjC,CAAC;IAEF,mEAAmE;IACnE,MAAM,OAAO,GAAQ;QACnB,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,qCAAqC;QAC5E,QAAQ,EAAE,IAAI,EAAE,uCAAuC;QACvD,UAAU;QACV,QAAQ,EAAE,aAAa,CAAC,QAAQ,IAAI,IAAI,EAAE,+BAA+B;QACzE,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,KAAK;QACnC,aAAa,EAAE,aAAa,CAAC,aAAa,IAAI,aAAa;QAC3D,eAAe,EAAE,aAAa,CAAC,eAAe,IAAI,WAAW;QAC7D,gBAAgB,EAAE,aAAa,CAAC,gBAAgB,IAAI,YAAY;QAChE,mBAAmB,EAAE,aAAa,CAAC,mBAAmB,IAAI,eAAe;QACzE,uBAAuB,EACrB,aAAa,CAAC,uBAAuB,IAAI,YAAY;QACvD,mBAAmB,EAAE,aAAa,CAAC,mBAAmB,IAAI,CAAC;QAC3D,eAAe,EAAE,aAAa,CAAC,eAAe,IAAI,WAAW;QAC7D,cAAc,EAAE,aAAa,CAAC,cAAc,IAAI,mBAAmB;QACnE,SAAS,EAAE,aAAa,CAAC,SAAS,IAAI,YAAY;QAClD,UAAU;QACV,KAAK;QACL,aAAa,EAAE,aAAa,CAAC,aAAa,IAAI,aAAa;QAC3D,YAAY,EAAE,aAAa,CAAC,YAAY,IAAI,eAAe,CAAC,OAAO,CAAC;QACpE,eAAe,EAAE,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC;QACtD,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,aAAa,CAAC,WAAW,IAAI,eAAe,CAAC,SAAS,CAAC;QACpE,mBAAmB,EACjB,aAAa,CAAC,mBAAmB,IAAI,eAAe,CAAC,OAAO,CAAC;QAC/D,gBAAgB,EAAE,aAAa,CAAC,gBAAgB,IAAI,CAAC;QACrD,gBAAgB,EAAE,2BAAe,CAAC,MAAM;KACzC,CAAC;IAEF,uCAAuC;IACvC,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa,CAAC,cAAc,EAAE,CAAC;QACjC,OAAO,CAAC,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC;IACxD,CAAC;IAED,IAAI,aAAa,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO,CAAC,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC;IACpE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,gBAAgB,CACpC,YAA0B;IAE1B,IAAI,CAAC,IAAA,mCAAiB,GAAE,EAAE,CAAC;QACzB,eAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,mCAAiB,GAAE,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,eAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,eAAe,0BAA0B,CAAC;QAEhE,eAAM,CAAC,KAAK,CACV,gEAAgE,EAChE,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAC5D,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,WAAW,EAAE,MAAM,CAAC,cAAc;gBAClC,MAAM,EAAE,kBAAkB;aAC3B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,eAAM,CAAC,KAAK,CACV,2CAA2C,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAC3E,CAAC;YACF,OAAO;QACT,CAAC;QAED,eAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,eAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC"}
|
|
@@ -138,8 +138,15 @@ async function* wrapStream(stream, transactionId, model, startTime, usageMetadat
|
|
|
138
138
|
let inputTokens = 0;
|
|
139
139
|
let outputTokens = 0;
|
|
140
140
|
let totalTokens = 0;
|
|
141
|
+
let firstChunkTime = null;
|
|
142
|
+
let timeToFirstToken = 0;
|
|
141
143
|
try {
|
|
142
144
|
for await (const chunk of stream) {
|
|
145
|
+
// Capture time of first chunk
|
|
146
|
+
if (!firstChunkTime) {
|
|
147
|
+
firstChunkTime = new Date();
|
|
148
|
+
timeToFirstToken = firstChunkTime.getTime() - startTime.getTime();
|
|
149
|
+
}
|
|
143
150
|
lastChunk = chunk;
|
|
144
151
|
// Track usage if available in chunk
|
|
145
152
|
if (chunk.usage) {
|
|
@@ -162,7 +169,10 @@ async function* wrapStream(stream, transactionId, model, startTime, usageMetadat
|
|
|
162
169
|
transactionId,
|
|
163
170
|
isStreamed: true,
|
|
164
171
|
stopReason: finishReason,
|
|
165
|
-
usageMetadata
|
|
172
|
+
usageMetadata: {
|
|
173
|
+
...usageMetadata,
|
|
174
|
+
timeToFirstToken,
|
|
175
|
+
},
|
|
166
176
|
});
|
|
167
177
|
// Send metering data asynchronously (don't wait)
|
|
168
178
|
(0, metering_1.sendMeteringData)(meteringData).catch((error) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perplexity-client.js","sourceRoot":"","sources":["../../../../src/core/wrapper/perplexity-client.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* ```
|
|
27
27
|
*/
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.logger = exports.
|
|
29
|
+
exports.logger = exports.MIDDLEWARE_INFO = exports.API_ENDPOINTS = exports.DEFAULT_CONFIG = exports.PERPLEXITY_PATTERNS = exports.sendMeteringData = exports.buildMeteringData = exports.generateTransactionId = exports.createStreamingChatCompletion = exports.createChatCompletion = exports.getPerplexityConfig = exports.initializePerplexity = exports.initializePerplexityFromEnv = exports.enableRevenium = exports.disableRevenium = exports.isReveniumEnabled = exports.getReveniumConfig = exports.initializeRevenium = exports.initializeReveniumFromEnv = void 0;
|
|
30
30
|
const dotenv_1 = require("dotenv");
|
|
31
31
|
(0, dotenv_1.config)();
|
|
32
32
|
// ============================================================================
|
|
@@ -53,9 +53,14 @@ var metering_1 = require("./core/tracking/metering");
|
|
|
53
53
|
Object.defineProperty(exports, "generateTransactionId", { enumerable: true, get: function () { return metering_1.generateTransactionId; } });
|
|
54
54
|
Object.defineProperty(exports, "buildMeteringData", { enumerable: true, get: function () { return metering_1.buildMeteringData; } });
|
|
55
55
|
Object.defineProperty(exports, "sendMeteringData", { enumerable: true, get: function () { return metering_1.sendMeteringData; } });
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// Constants
|
|
58
|
+
// ============================================================================
|
|
59
|
+
var constants_1 = require("./constants");
|
|
60
|
+
Object.defineProperty(exports, "PERPLEXITY_PATTERNS", { enumerable: true, get: function () { return constants_1.PERPLEXITY_PATTERNS; } });
|
|
61
|
+
Object.defineProperty(exports, "DEFAULT_CONFIG", { enumerable: true, get: function () { return constants_1.DEFAULT_CONFIG; } });
|
|
62
|
+
Object.defineProperty(exports, "API_ENDPOINTS", { enumerable: true, get: function () { return constants_1.API_ENDPOINTS; } });
|
|
63
|
+
Object.defineProperty(exports, "MIDDLEWARE_INFO", { enumerable: true, get: function () { return constants_1.MIDDLEWARE_INFO; } });
|
|
59
64
|
// ============================================================================
|
|
60
65
|
// Utilities
|
|
61
66
|
// ============================================================================
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;AAEH,mCAAgC;AAChC,IAAA,eAAM,GAAE,CAAC;AAET,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,iEAQuC;AAPrC,4HAAA,yBAAyB,OAAA;AACzB,qHAAA,kBAAkB,OAAA;AAClB,oHAAA,iBAAiB,OAAA;AACjB,oHAAA,iBAAiB,OAAA;AACjB,kHAAA,eAAe,OAAA;AACf,iHAAA,cAAc,OAAA;AAIhB,qEAKyC;AAJvC,gIAAA,2BAA2B,OAAA;AAC3B,yHAAA,oBAAoB,OAAA;AACpB,wHAAA,mBAAmB,OAAA;AAIrB,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E,sEAG0C;AAFxC,yHAAA,oBAAoB,OAAA;AACpB,kIAAA,6BAA6B,OAAA;AAG/B,qDAIkC;AAHhC,iHAAA,qBAAqB,OAAA;AACrB,6GAAA,iBAAiB,OAAA;AACjB,4GAAA,gBAAgB,OAAA;AAoBlB,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,yCAKqB;AAJnB,gHAAA,mBAAmB,OAAA;AACnB,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AAGjB,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,yCAAwC;AAA/B,gGAAA,MAAM,OAAA"}
|
package/dist/cjs/types/index.js
CHANGED
|
@@ -3,19 +3,4 @@
|
|
|
3
3
|
* TypeScript Type Definitions for Perplexity Middleware
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.DEFAULT_MODEL = exports.PERPLEXITY_MODELS = void 0;
|
|
7
|
-
// ============================================================================
|
|
8
|
-
// Constants
|
|
9
|
-
// ============================================================================
|
|
10
|
-
exports.PERPLEXITY_MODELS = {
|
|
11
|
-
// Sonar Models (Online)
|
|
12
|
-
SONAR: "sonar",
|
|
13
|
-
SONAR_PRO: "sonar-pro",
|
|
14
|
-
SONAR_REASONING: "sonar-reasoning",
|
|
15
|
-
// Chat Models (Offline)
|
|
16
|
-
LLAMA_3_1_SONAR_SMALL_128K_CHAT: "llama-3.1-sonar-small-128k-chat",
|
|
17
|
-
LLAMA_3_1_SONAR_LARGE_128K_CHAT: "llama-3.1-sonar-large-128k-chat",
|
|
18
|
-
LLAMA_3_1_SONAR_HUGE_128K_CHAT: "llama-3.1-sonar-huge-128k-chat",
|
|
19
|
-
};
|
|
20
|
-
exports.DEFAULT_MODEL = exports.PERPLEXITY_MODELS.SONAR_PRO;
|
|
21
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEU,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACvB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACvB,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACxB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7C,CAAC;IACD,KAAK,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE;QACxB,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration constants for Revenium Perplexity middleware
|
|
3
|
+
* Centralizes all magic numbers and default values
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Middleware identification
|
|
7
|
+
*
|
|
8
|
+
* Per Revenium API spec (https://revenium.readme.io/reference/meter_ai_completion):
|
|
9
|
+
* "middlewareSource: Identifier of the Revenium middleware package or SDK that
|
|
10
|
+
* captured and submitted this AI completion metadata. This field is AUTOMATICALLY
|
|
11
|
+
* SET by Revenium's middleware packages (e.g., 'revenium-openai-python',
|
|
12
|
+
* 'revenium-anthropic-node')."
|
|
13
|
+
*/
|
|
14
|
+
export const MIDDLEWARE_INFO = {
|
|
15
|
+
/** Package name */
|
|
16
|
+
NAME: "@revenium/perplexity",
|
|
17
|
+
/** Package version */
|
|
18
|
+
VERSION: "2.0.4",
|
|
19
|
+
/** Full middleware source identifier for API tracking */
|
|
20
|
+
SOURCE: "@revenium/perplexity-2.0.4",
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Perplexity model patterns and API response mappings
|
|
24
|
+
*
|
|
25
|
+
* Per Revenium API spec (https://revenium.readme.io/reference/meter_ai_completion):
|
|
26
|
+
* stopReason enum: "END", "END_SEQUENCE", "TIMEOUT", "TOKEN_LIMIT",
|
|
27
|
+
* "COST_LIMIT", "COMPLETION_LIMIT", "ERROR", "CANCELLED"
|
|
28
|
+
*
|
|
29
|
+
* We map Perplexity's finish_reason values to these Revenium enums.
|
|
30
|
+
* Only provider-reported values are mapped; middleware-level values
|
|
31
|
+
* (TIMEOUT, COST_LIMIT, etc.) are not applicable to provider responses.
|
|
32
|
+
*/
|
|
33
|
+
export const PERPLEXITY_PATTERNS = {
|
|
34
|
+
/** Known Perplexity/OpenAI finish reasons */
|
|
35
|
+
FINISH_REASONS: {
|
|
36
|
+
STOP: "stop",
|
|
37
|
+
LENGTH: "length",
|
|
38
|
+
TOOL_CALLS: "tool_calls",
|
|
39
|
+
CONTENT_FILTER: "content_filter",
|
|
40
|
+
FUNCTION_CALL: "function_call",
|
|
41
|
+
},
|
|
42
|
+
/** Revenium stop reason mappings from Perplexity finish_reason to Revenium enum */
|
|
43
|
+
REVENIUM_STOP_REASON_MAP: {
|
|
44
|
+
stop: "END",
|
|
45
|
+
length: "TOKEN_LIMIT",
|
|
46
|
+
tool_calls: "END",
|
|
47
|
+
content_filter: "END",
|
|
48
|
+
function_call: "END",
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Default configuration values
|
|
53
|
+
*/
|
|
54
|
+
export const DEFAULT_CONFIG = {
|
|
55
|
+
/** Default Revenium API base URL */
|
|
56
|
+
REVENIUM_BASE_URL: "https://api.revenium.ai",
|
|
57
|
+
/** Default Perplexity API base URL */
|
|
58
|
+
PERPLEXITY_BASE_URL: "https://api.perplexity.ai",
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* API endpoints
|
|
62
|
+
*/
|
|
63
|
+
export const API_ENDPOINTS = {
|
|
64
|
+
/** Revenium AI completions endpoint */
|
|
65
|
+
AI_COMPLETIONS: "/meter/v2/ai/completions",
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,mBAAmB;IACnB,IAAI,EAAE,sBAAsB;IAC5B,sBAAsB;IACtB,OAAO,EAAE,OAAO;IAChB,yDAAyD;IACzD,MAAM,EAAE,4BAA4B;CAC5B,CAAC;AAEX;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,6CAA6C;IAC7C,cAAc,EAAE;QACd,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,YAAY;QACxB,cAAc,EAAE,gBAAgB;QAChC,aAAa,EAAE,eAAe;KACtB;IAEV,mFAAmF;IACnF,wBAAwB,EAAE;QACxB,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,aAAa;QACrB,UAAU,EAAE,KAAK;QACjB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,KAAK;KACZ;CACF,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,oCAAoC;IACpC,iBAAiB,EAAE,yBAAyB;IAE5C,sCAAsC;IACtC,mBAAmB,EAAE,2BAA2B;CACxC,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,uCAAuC;IACvC,cAAc,EAAE,0BAA0B;CAClC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perplexity-config.js","sourceRoot":"","sources":["../../../../src/core/config/perplexity-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAO5C,IAAI,gBAAgB,GAA4B,IAAI,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC9C,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,2BAA2B,CAAC;IAErE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IAED,gBAAgB,GAAG;QACjB,MAAM;QACN,OAAO;KACR,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACjE,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAGpC;IACC,gBAAgB,GAAG;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,2BAA2B;KACvD,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACvE,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revenium-config.js","sourceRoot":"","sources":["../../../../src/core/config/revenium-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAQ5C,IAAI,cAAc,GAA0B,IAAI,CAAC;AAEjD;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,CAAC,OAAO,CAC1E,cAAc,EACd,EAAE,CACH,CAAC;IACF,MAAM,eAAe,GACnB,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAE7E,IAAI,CAAC,cAAc,IAAI,CAAC,eAAe,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CACT,6FAA6F,CAC9F,CAAC;QACF,cAAc,GAAG;YACf,cAAc,EAAE,EAAE;YAClB,eAAe,EAAE,EAAE;YACnB,OAAO,EAAE,KAAK;SACf,CAAC;QACF,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,cAAc,GAAG;QACf,cAAc;QACd,eAAe;QACf,OAAO,EAAE,IAAI;KACd,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAC/D,MAAM,CAAC,KAAK,CAAC,sBAAsB,eAAe,EAAE,CAAC,CAAC;IACtD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAGlC;IACC,cAAc,GAAG;QACf,GAAG,MAAM;QACT,OAAO,EAAE,IAAI;KACd,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACrE,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,cAAc,EAAE,OAAO,IAAI,KAAK,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { getReveniumConfig, isReveniumEnabled, } from "../config/revenium-config";
|
|
6
6
|
import { logger } from "../../utils/logger";
|
|
7
|
+
import { PERPLEXITY_PATTERNS, MIDDLEWARE_INFO } from "../../constants";
|
|
7
8
|
/**
|
|
8
9
|
* Generate a unique transaction ID
|
|
9
10
|
*/
|
|
@@ -22,6 +23,79 @@ function formatTimestamp(date) {
|
|
|
22
23
|
function calculateDuration(startTime, endTime) {
|
|
23
24
|
return endTime.getTime() - startTime.getTime();
|
|
24
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Map Perplexity finish_reason to Revenium stopReason enum
|
|
28
|
+
*/
|
|
29
|
+
function mapStopReason(finishReason) {
|
|
30
|
+
if (!finishReason) {
|
|
31
|
+
return "END";
|
|
32
|
+
}
|
|
33
|
+
const mapped = PERPLEXITY_PATTERNS.REVENIUM_STOP_REASON_MAP[finishReason];
|
|
34
|
+
if (!mapped) {
|
|
35
|
+
logger.info(`Unknown finish_reason '${finishReason}', defaulting to 'END'`);
|
|
36
|
+
return "END";
|
|
37
|
+
}
|
|
38
|
+
return mapped;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Sanitize metering data for debug logging by redacting sensitive fields
|
|
42
|
+
*
|
|
43
|
+
* SECURITY: Prevents exposure of PII and credentials in debug logs.
|
|
44
|
+
* Redacts: subscriber.id, subscriber.email, subscriber.credential.value,
|
|
45
|
+
* organizationId, subscriptionId, productId, traceId
|
|
46
|
+
*
|
|
47
|
+
* Per security best practices, debug logs should never contain:
|
|
48
|
+
* - Personally Identifiable Information (PII)
|
|
49
|
+
* - API keys or credentials
|
|
50
|
+
* - Business-sensitive identifiers
|
|
51
|
+
*/
|
|
52
|
+
function sanitizeMeteringData(data) {
|
|
53
|
+
return {
|
|
54
|
+
// Keep useful debugging info
|
|
55
|
+
stopReason: data.stopReason,
|
|
56
|
+
costType: data.costType,
|
|
57
|
+
isStreamed: data.isStreamed,
|
|
58
|
+
taskType: data.taskType,
|
|
59
|
+
agent: data.agent,
|
|
60
|
+
operationType: data.operationType,
|
|
61
|
+
inputTokenCount: data.inputTokenCount,
|
|
62
|
+
outputTokenCount: data.outputTokenCount,
|
|
63
|
+
reasoningTokenCount: data.reasoningTokenCount,
|
|
64
|
+
cacheCreationTokenCount: data.cacheCreationTokenCount,
|
|
65
|
+
cacheReadTokenCount: data.cacheReadTokenCount,
|
|
66
|
+
totalTokenCount: data.totalTokenCount,
|
|
67
|
+
model: data.model,
|
|
68
|
+
requestDuration: data.requestDuration,
|
|
69
|
+
provider: data.provider,
|
|
70
|
+
timeToFirstToken: data.timeToFirstToken,
|
|
71
|
+
middlewareSource: data.middlewareSource,
|
|
72
|
+
// Redact PII and sensitive identifiers
|
|
73
|
+
organizationId: data.organizationId ? "[REDACTED]" : undefined,
|
|
74
|
+
productId: data.productId ? "[REDACTED]" : undefined,
|
|
75
|
+
subscriptionId: data.subscriptionId ? "[REDACTED]" : undefined,
|
|
76
|
+
transactionId: data.transactionId ? "[REDACTED]" : undefined,
|
|
77
|
+
traceId: data.traceId ? "[REDACTED]" : undefined,
|
|
78
|
+
// Redact subscriber PII and credentials
|
|
79
|
+
subscriber: data.subscriber
|
|
80
|
+
? {
|
|
81
|
+
id: "[REDACTED]",
|
|
82
|
+
email: "[REDACTED]",
|
|
83
|
+
credential: data.subscriber.credential
|
|
84
|
+
? {
|
|
85
|
+
name: data.subscriber.credential.name,
|
|
86
|
+
value: "[REDACTED]",
|
|
87
|
+
}
|
|
88
|
+
: undefined,
|
|
89
|
+
}
|
|
90
|
+
: undefined,
|
|
91
|
+
// Keep timestamps (not sensitive)
|
|
92
|
+
requestTime: data.requestTime,
|
|
93
|
+
responseTime: data.responseTime,
|
|
94
|
+
completionStartTime: data.completionStartTime,
|
|
95
|
+
// Redact quality score if present (could be business-sensitive)
|
|
96
|
+
responseQualityScore: data.responseQualityScore !== undefined ? "[REDACTED]" : undefined,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
25
99
|
/**
|
|
26
100
|
* Build metering data from request information
|
|
27
101
|
*/
|
|
@@ -56,10 +130,10 @@ export function buildMeteringData(params) {
|
|
|
56
130
|
};
|
|
57
131
|
// Build the payload in the exact order expected by Revenium API v2
|
|
58
132
|
const payload = {
|
|
59
|
-
stopReason:
|
|
133
|
+
stopReason: mapStopReason(stopReason), // Map finish_reason to Revenium enum
|
|
60
134
|
costType: "AI", // Fixed value as per Google middleware
|
|
61
135
|
isStreamed,
|
|
62
|
-
taskType: "AI", //
|
|
136
|
+
taskType: usageMetadata.taskType || "AI", // Allow override from metadata
|
|
63
137
|
agent: usageMetadata.agent || agent,
|
|
64
138
|
operationType: usageMetadata.operationType || operationType,
|
|
65
139
|
inputTokenCount: usageMetadata.inputTokenCount ?? inputTokens,
|
|
@@ -79,12 +153,18 @@ export function buildMeteringData(params) {
|
|
|
79
153
|
requestTime: usageMetadata.requestTime || formatTimestamp(startTime),
|
|
80
154
|
completionStartTime: usageMetadata.completionStartTime || formatTimestamp(endTime),
|
|
81
155
|
timeToFirstToken: usageMetadata.timeToFirstToken || 0,
|
|
82
|
-
|
|
156
|
+
middlewareSource: MIDDLEWARE_INFO.SOURCE,
|
|
83
157
|
};
|
|
84
|
-
//
|
|
158
|
+
// Add optional fields only if provided
|
|
85
159
|
if (usageMetadata.traceId) {
|
|
86
160
|
payload.traceId = usageMetadata.traceId;
|
|
87
161
|
}
|
|
162
|
+
if (usageMetadata.subscriptionId) {
|
|
163
|
+
payload.subscriptionId = usageMetadata.subscriptionId;
|
|
164
|
+
}
|
|
165
|
+
if (usageMetadata.responseQualityScore !== undefined) {
|
|
166
|
+
payload.responseQualityScore = usageMetadata.responseQualityScore;
|
|
167
|
+
}
|
|
88
168
|
return payload;
|
|
89
169
|
}
|
|
90
170
|
/**
|
|
@@ -101,8 +181,8 @@ export async function sendMeteringData(meteringData) {
|
|
|
101
181
|
return;
|
|
102
182
|
}
|
|
103
183
|
try {
|
|
104
|
-
const url = `${config.meteringBaseUrl}/v2/ai/completions`;
|
|
105
|
-
logger.debug("Sending metering data to Revenium:", JSON.stringify(meteringData, null, 2));
|
|
184
|
+
const url = `${config.meteringBaseUrl}/meter/v2/ai/completions`;
|
|
185
|
+
logger.debug("Sending metering data to Revenium (sensitive fields redacted):", JSON.stringify(sanitizeMeteringData(meteringData), null, 2));
|
|
106
186
|
const response = await fetch(url, {
|
|
107
187
|
method: "POST",
|
|
108
188
|
headers: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metering.js","sourceRoot":"","sources":["../../../../src/core/tracking/metering.ts"],"names":[],"mappings":"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"}
|
|
@@ -131,8 +131,15 @@ async function* wrapStream(stream, transactionId, model, startTime, usageMetadat
|
|
|
131
131
|
let inputTokens = 0;
|
|
132
132
|
let outputTokens = 0;
|
|
133
133
|
let totalTokens = 0;
|
|
134
|
+
let firstChunkTime = null;
|
|
135
|
+
let timeToFirstToken = 0;
|
|
134
136
|
try {
|
|
135
137
|
for await (const chunk of stream) {
|
|
138
|
+
// Capture time of first chunk
|
|
139
|
+
if (!firstChunkTime) {
|
|
140
|
+
firstChunkTime = new Date();
|
|
141
|
+
timeToFirstToken = firstChunkTime.getTime() - startTime.getTime();
|
|
142
|
+
}
|
|
136
143
|
lastChunk = chunk;
|
|
137
144
|
// Track usage if available in chunk
|
|
138
145
|
if (chunk.usage) {
|
|
@@ -155,7 +162,10 @@ async function* wrapStream(stream, transactionId, model, startTime, usageMetadat
|
|
|
155
162
|
transactionId,
|
|
156
163
|
isStreamed: true,
|
|
157
164
|
stopReason: finishReason,
|
|
158
|
-
usageMetadata
|
|
165
|
+
usageMetadata: {
|
|
166
|
+
...usageMetadata,
|
|
167
|
+
timeToFirstToken,
|
|
168
|
+
},
|
|
159
169
|
});
|
|
160
170
|
// Send metering data asynchronously (don't wait)
|
|
161
171
|
sendMeteringData(meteringData).catch((error) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perplexity-client.js","sourceRoot":"","sources":["../../../../src/core/wrapper/perplexity-client.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -36,7 +36,10 @@ export { initializePerplexityFromEnv, initializePerplexity, getPerplexityConfig,
|
|
|
36
36
|
// ============================================================================
|
|
37
37
|
export { createChatCompletion, createStreamingChatCompletion, } from "./core/wrapper/perplexity-client";
|
|
38
38
|
export { generateTransactionId, buildMeteringData, sendMeteringData, } from "./core/tracking/metering";
|
|
39
|
-
|
|
39
|
+
// ============================================================================
|
|
40
|
+
// Constants
|
|
41
|
+
// ============================================================================
|
|
42
|
+
export { PERPLEXITY_PATTERNS, DEFAULT_CONFIG, API_ENDPOINTS, MIDDLEWARE_INFO, } from "./constants";
|
|
40
43
|
// ============================================================================
|
|
41
44
|
// Utilities
|
|
42
45
|
// ============================================================================
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,MAAM,EAAE,CAAC;AAET,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,cAAc,GAEf,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,mBAAmB,GAEpB,MAAM,iCAAiC,CAAC;AAEzC,+EAA+E;AAC/E,WAAW;AACX,+EAA+E;AAE/E,OAAO,EACL,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAmBlC,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC"}
|