@revenium/perplexity 2.0.8 → 2.1.0
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 +18 -1
- package/CHANGELOG.md +42 -0
- package/README.md +223 -37
- package/dist/cjs/core/config/loader.js +22 -1
- 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/middleware/interfaces.js +38 -1
- package/dist/cjs/core/middleware/interfaces.js.map +1 -1
- package/dist/cjs/core/middleware/streaming-wrapper.js +67 -2
- package/dist/cjs/core/middleware/streaming-wrapper.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 +28 -1
- package/dist/cjs/core/tracking/payload-builder.js.map +1 -1
- package/dist/cjs/core/tracking/usage-tracker.js +9 -6
- package/dist/cjs/core/tracking/usage-tracker.js.map +1 -1
- package/dist/cjs/utils/prompt-extraction.js +194 -0
- package/dist/cjs/utils/prompt-extraction.js.map +1 -0
- 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 +22 -1
- 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/middleware/interfaces.js +38 -1
- package/dist/esm/core/middleware/interfaces.js.map +1 -1
- package/dist/esm/core/middleware/streaming-wrapper.js +67 -2
- package/dist/esm/core/middleware/streaming-wrapper.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 +28 -1
- package/dist/esm/core/tracking/payload-builder.js.map +1 -1
- package/dist/esm/core/tracking/usage-tracker.js +9 -6
- package/dist/esm/core/tracking/usage-tracker.js.map +1 -1
- package/dist/esm/utils/prompt-extraction.js +188 -0
- package/dist/esm/utils/prompt-extraction.js.map +1 -0
- 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/middleware/interfaces.d.ts.map +1 -1
- package/dist/types/core/middleware/streaming-wrapper.d.ts +9 -1
- package/dist/types/core/middleware/streaming-wrapper.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/core/tracking/usage-tracker.d.ts +8 -0
- package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -1
- package/dist/types/types/function-parameters.d.ts +7 -0
- package/dist/types/types/function-parameters.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +24 -0
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/utils/prompt-extraction.d.ts +29 -0
- package/dist/types/utils/prompt-extraction.d.ts.map +1 -0
- 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/examples/prompt-capture.ts +108 -0
- package/package.json +5 -2
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { getConfig } from "../core/config/index.js";
|
|
2
|
+
const DEFAULT_MAX_PROMPT_SIZE = 50000;
|
|
3
|
+
const CAPTURE_PROMPTS_DEFAULT = false;
|
|
4
|
+
export function getMaxPromptSize() {
|
|
5
|
+
const config = getConfig();
|
|
6
|
+
if (config?.maxPromptSize && config.maxPromptSize > 0) {
|
|
7
|
+
return config.maxPromptSize;
|
|
8
|
+
}
|
|
9
|
+
const envValue = process.env.REVENIUM_MAX_PROMPT_SIZE;
|
|
10
|
+
if (envValue) {
|
|
11
|
+
const parsed = parseInt(envValue, 10);
|
|
12
|
+
if (!isNaN(parsed) && parsed > 0) {
|
|
13
|
+
return parsed;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return DEFAULT_MAX_PROMPT_SIZE;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Sanitizes common credential patterns from text.
|
|
20
|
+
*
|
|
21
|
+
* Redacts the following credential types:
|
|
22
|
+
* - OpenAI keys: sk-*, sk-proj-*, sk-ant-* (20+ chars)
|
|
23
|
+
* - Perplexity keys: pplx-* (20+ chars)
|
|
24
|
+
* - AWS access keys: AKIA* (20 chars)
|
|
25
|
+
* - GitHub tokens: ghp_*, ghs_* (36+ chars)
|
|
26
|
+
* - JWT tokens: eyJ*.eyJ*.*
|
|
27
|
+
* - Bearer tokens
|
|
28
|
+
* - Generic API keys, tokens, passwords, secrets (8-20+ chars)
|
|
29
|
+
*
|
|
30
|
+
* LIMITATIONS:
|
|
31
|
+
* - Shorter credentials may pass through unsanitized
|
|
32
|
+
* - Length constraints balance security with false positive prevention
|
|
33
|
+
*/
|
|
34
|
+
export function sanitizeCredentials(text) {
|
|
35
|
+
const patterns = [
|
|
36
|
+
{
|
|
37
|
+
regex: /pplx-[a-zA-Z0-9_-]{20,}/g,
|
|
38
|
+
replacement: "pplx-***REDACTED***",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
regex: /sk-proj-[a-zA-Z0-9_-]{48,}/g,
|
|
42
|
+
replacement: "sk-proj-***REDACTED***",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
regex: /sk-ant-[a-zA-Z0-9_-]{20,}/g,
|
|
46
|
+
replacement: "sk-ant-***REDACTED***",
|
|
47
|
+
},
|
|
48
|
+
{ regex: /sk-[a-zA-Z0-9_-]{20,}/g, replacement: "sk-***REDACTED***" },
|
|
49
|
+
{
|
|
50
|
+
regex: /AKIA[A-Z0-9]{16}/g,
|
|
51
|
+
replacement: "AKIA***REDACTED***",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
regex: /ghp_[a-zA-Z0-9]{36,}/g,
|
|
55
|
+
replacement: "ghp_***REDACTED***",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
regex: /ghs_[a-zA-Z0-9]{36,}/g,
|
|
59
|
+
replacement: "ghs_***REDACTED***",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
regex: /eyJ[a-zA-Z0-9_-]+\.eyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+/g,
|
|
63
|
+
replacement: "***REDACTED_JWT***",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
regex: /Bearer\s+[a-zA-Z0-9_\-.+\/=]+/gi,
|
|
67
|
+
replacement: "Bearer ***REDACTED***",
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
regex: /api[_-]?key["'\s:=]+[a-zA-Z0-9_\-.+\/=]{20,}/gi,
|
|
71
|
+
replacement: "api_key: ***REDACTED***",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
regex: /token["'\s:=]+[a-zA-Z0-9_\-.+\/=]{20,}/gi,
|
|
75
|
+
replacement: "token: ***REDACTED***",
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
regex: /password["'\s:=]+["']?([^"'\s]{8,})["']?/gi,
|
|
79
|
+
replacement: "password: ***REDACTED***",
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
regex: /secret["'\s:=]+["']?([^"'\s]{8,})["']?/gi,
|
|
83
|
+
replacement: "secret: ***REDACTED***",
|
|
84
|
+
},
|
|
85
|
+
];
|
|
86
|
+
let sanitized = text;
|
|
87
|
+
for (const pattern of patterns) {
|
|
88
|
+
sanitized = sanitized.replace(pattern.regex, pattern.replacement);
|
|
89
|
+
}
|
|
90
|
+
return sanitized;
|
|
91
|
+
}
|
|
92
|
+
function truncateString(str, maxLength) {
|
|
93
|
+
if (!str || str.length === 0) {
|
|
94
|
+
return { value: "", truncated: false };
|
|
95
|
+
}
|
|
96
|
+
const sanitized = sanitizeCredentials(str);
|
|
97
|
+
if (sanitized.length <= maxLength) {
|
|
98
|
+
return { value: sanitized, truncated: false };
|
|
99
|
+
}
|
|
100
|
+
return { value: sanitized.substring(0, maxLength), truncated: true };
|
|
101
|
+
}
|
|
102
|
+
function extractSystemPrompt(params) {
|
|
103
|
+
if (!params.messages || !Array.isArray(params.messages)) {
|
|
104
|
+
return "";
|
|
105
|
+
}
|
|
106
|
+
const systemMessages = params.messages
|
|
107
|
+
.filter((msg) => msg.role === "system")
|
|
108
|
+
.map((msg) => msg.content)
|
|
109
|
+
.filter(Boolean);
|
|
110
|
+
return systemMessages.join("\n\n");
|
|
111
|
+
}
|
|
112
|
+
function extractInputMessages(params) {
|
|
113
|
+
if (!params.messages || !Array.isArray(params.messages)) {
|
|
114
|
+
return "";
|
|
115
|
+
}
|
|
116
|
+
return params.messages
|
|
117
|
+
.filter((msg) => msg.role !== "system")
|
|
118
|
+
.map((message) => `[${message.role}]\n${message.content}`)
|
|
119
|
+
.join("\n\n");
|
|
120
|
+
}
|
|
121
|
+
function extractOutputResponse(response) {
|
|
122
|
+
if (!response.choices || response.choices.length === 0) {
|
|
123
|
+
return "";
|
|
124
|
+
}
|
|
125
|
+
const choice = response.choices[0];
|
|
126
|
+
const parts = [];
|
|
127
|
+
if (choice.message?.content) {
|
|
128
|
+
parts.push(choice.message.content);
|
|
129
|
+
}
|
|
130
|
+
if (choice.delta?.content) {
|
|
131
|
+
parts.push(choice.delta.content);
|
|
132
|
+
}
|
|
133
|
+
const message = choice.message;
|
|
134
|
+
if (message?.tool_calls && Array.isArray(message.tool_calls)) {
|
|
135
|
+
message.tool_calls.forEach((toolCall) => {
|
|
136
|
+
if (toolCall.function?.name) {
|
|
137
|
+
parts.push(`[TOOL_USE: ${toolCall.function.name}]`);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
if (message?.function_call?.name) {
|
|
142
|
+
parts.push(`[FUNCTION_CALL: ${message.function_call.name}]`);
|
|
143
|
+
}
|
|
144
|
+
return parts.join("\n");
|
|
145
|
+
}
|
|
146
|
+
export function shouldCapturePrompts(metadata) {
|
|
147
|
+
if (metadata?.capturePrompts !== undefined) {
|
|
148
|
+
return metadata.capturePrompts;
|
|
149
|
+
}
|
|
150
|
+
const config = getConfig();
|
|
151
|
+
if (config?.capturePrompts !== undefined) {
|
|
152
|
+
return config.capturePrompts;
|
|
153
|
+
}
|
|
154
|
+
const envValue = process.env.REVENIUM_CAPTURE_PROMPTS;
|
|
155
|
+
if (envValue !== undefined) {
|
|
156
|
+
return envValue.toLowerCase() === "true";
|
|
157
|
+
}
|
|
158
|
+
return CAPTURE_PROMPTS_DEFAULT;
|
|
159
|
+
}
|
|
160
|
+
export function extractPrompts(params, response, metadata) {
|
|
161
|
+
if (!shouldCapturePrompts(metadata)) {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
const maxSize = getMaxPromptSize();
|
|
165
|
+
let anyTruncated = false;
|
|
166
|
+
const systemPromptRaw = extractSystemPrompt(params);
|
|
167
|
+
const systemPromptResult = truncateString(systemPromptRaw, maxSize);
|
|
168
|
+
anyTruncated = anyTruncated || systemPromptResult.truncated;
|
|
169
|
+
const inputMessagesRaw = extractInputMessages(params);
|
|
170
|
+
const inputMessagesResult = truncateString(inputMessagesRaw, maxSize);
|
|
171
|
+
anyTruncated = anyTruncated || inputMessagesResult.truncated;
|
|
172
|
+
const outputResponseRaw = extractOutputResponse(response);
|
|
173
|
+
const outputResponseResult = truncateString(outputResponseRaw, maxSize);
|
|
174
|
+
anyTruncated = anyTruncated || outputResponseResult.truncated;
|
|
175
|
+
const hasAnyContent = systemPromptResult.value ||
|
|
176
|
+
inputMessagesResult.value ||
|
|
177
|
+
outputResponseResult.value;
|
|
178
|
+
if (!hasAnyContent) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
systemPrompt: systemPromptResult.value || undefined,
|
|
183
|
+
inputMessages: inputMessagesResult.value || undefined,
|
|
184
|
+
outputResponse: outputResponseResult.value || undefined,
|
|
185
|
+
promptsTruncated: anyTruncated,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=prompt-extraction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-extraction.js","sourceRoot":"","sources":["../../../src/utils/prompt-extraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,CAkDzD"}
|
|
@@ -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":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/core/middleware/interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/core/middleware/interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK1D;;GAEG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;gBADN,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,GAAG;IAGrB;;OAEG;IACH,WAAW,IAAI,oBAAoB;CAGpC;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;gBADN,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,GAAG;IAGrB;;OAEG;IACG,MAAM,CACV,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAC9C,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,GAAG,CAAC;IAqEf;;OAEG;IACG,eAAe,CACnB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAC9C,QAAQ,CAAC,EAAE,aAAa;CAiD3B"}
|
|
@@ -12,7 +12,15 @@ export declare class StreamingWrapper {
|
|
|
12
12
|
private transactionId;
|
|
13
13
|
private metadata?;
|
|
14
14
|
private config;
|
|
15
|
-
|
|
15
|
+
private responseFormat?;
|
|
16
|
+
private messages;
|
|
17
|
+
private accumulatedContent;
|
|
18
|
+
constructor(stream: AsyncIterable<any>, model: string, startTime: Date, transactionId: string, metadata?: UsageMetadata, config?: any, responseFormat?: {
|
|
19
|
+
type: string;
|
|
20
|
+
json_schema?: {
|
|
21
|
+
name: string;
|
|
22
|
+
};
|
|
23
|
+
} | string, messages?: any);
|
|
16
24
|
/**
|
|
17
25
|
* Iterate over stream chunks
|
|
18
26
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-wrapper.d.ts","sourceRoot":"","sources":["../../../../src/core/middleware/streaming-wrapper.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"streaming-wrapper.d.ts","sourceRoot":"","sources":["../../../../src/core/middleware/streaming-wrapper.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAWjD;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,cAAc,CAAC,CAEZ;IACX,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,kBAAkB,CAAc;gBAGtC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAC1B,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,IAAI,EACf,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,aAAa,EACxB,MAAM,CAAC,EAAE,GAAG,EACZ,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GAAG,MAAM,EAC1E,QAAQ,CAAC,EAAE,GAAG;IAYhB;;OAEG;IACI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC;CAmIrD"}
|
|
@@ -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;AAqB9B;;;;;;;;;;;;;;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,CAqG1B"}
|
|
@@ -26,5 +26,13 @@ export declare function trackUsageAsync(trackingData: {
|
|
|
26
26
|
timeToFirstToken?: number;
|
|
27
27
|
providerInfo?: ProviderInfo;
|
|
28
28
|
cost?: PerplexityCost;
|
|
29
|
+
responseFormat?: {
|
|
30
|
+
type: string;
|
|
31
|
+
json_schema?: {
|
|
32
|
+
name: string;
|
|
33
|
+
};
|
|
34
|
+
} | string;
|
|
35
|
+
messages?: any;
|
|
36
|
+
responseContent?: string;
|
|
29
37
|
}): void;
|
|
30
38
|
//# sourceMappingURL=usage-tracker.d.ts.map
|