@revenium/openai 1.0.15 → 1.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 +28 -8
- package/CHANGELOG.md +19 -0
- package/README.md +173 -0
- package/dist/cjs/core/config/loader.js +27 -1
- package/dist/cjs/core/config/loader.js.map +1 -1
- package/dist/cjs/core/middleware/interfaces.js +70 -32
- package/dist/cjs/core/middleware/interfaces.js.map +1 -1
- package/dist/cjs/core/tracking/index.js +3 -1
- package/dist/cjs/core/tracking/index.js.map +1 -1
- package/dist/cjs/core/tracking/payload-builder.js +54 -4
- package/dist/cjs/core/tracking/payload-builder.js.map +1 -1
- package/dist/cjs/core/tracking/summary-printer.js +196 -0
- package/dist/cjs/core/tracking/summary-printer.js.map +1 -0
- package/dist/cjs/core/tracking/usage-tracker.js +39 -7
- package/dist/cjs/core/tracking/usage-tracker.js.map +1 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/utils/prompt-extraction.js +231 -0
- package/dist/cjs/utils/prompt-extraction.js.map +1 -0
- package/dist/esm/core/config/loader.js +27 -1
- package/dist/esm/core/config/loader.js.map +1 -1
- package/dist/esm/core/middleware/interfaces.js +70 -32
- package/dist/esm/core/middleware/interfaces.js.map +1 -1
- package/dist/esm/core/tracking/index.js +1 -0
- package/dist/esm/core/tracking/index.js.map +1 -1
- package/dist/esm/core/tracking/payload-builder.js +54 -4
- package/dist/esm/core/tracking/payload-builder.js.map +1 -1
- package/dist/esm/core/tracking/summary-printer.js +193 -0
- package/dist/esm/core/tracking/summary-printer.js.map +1 -0
- package/dist/esm/core/tracking/usage-tracker.js +39 -7
- package/dist/esm/core/tracking/usage-tracker.js.map +1 -1
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/utils/prompt-extraction.js +225 -0
- package/dist/esm/utils/prompt-extraction.js.map +1 -0
- package/dist/types/core/config/loader.d.ts.map +1 -1
- package/dist/types/core/middleware/interfaces.d.ts +4 -1
- package/dist/types/core/middleware/interfaces.d.ts.map +1 -1
- package/dist/types/core/tracking/index.d.ts +1 -0
- package/dist/types/core/tracking/index.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/summary-printer.d.ts +9 -0
- package/dist/types/core/tracking/summary-printer.d.ts.map +1 -0
- package/dist/types/core/tracking/usage-tracker.d.ts +2 -0
- package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +34 -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/examples/openai/prompt-capture.ts +95 -0
- package/package.json +12 -1
|
@@ -14,6 +14,8 @@ const config_1 = require("../config");
|
|
|
14
14
|
const stop_reason_mapper_js_1 = require("../../utils/stop-reason-mapper.js");
|
|
15
15
|
const metadata_builder_js_1 = require("../../utils/metadata-builder.js");
|
|
16
16
|
const providers_1 = require("../providers");
|
|
17
|
+
const trace_fields_js_1 = require("../../utils/trace-fields.js");
|
|
18
|
+
const prompt_extraction_js_1 = require("../../utils/prompt-extraction.js");
|
|
17
19
|
// Global logger
|
|
18
20
|
const logger = (0, config_1.getLogger)();
|
|
19
21
|
/**
|
|
@@ -30,10 +32,13 @@ const logger = (0, config_1.getLogger)();
|
|
|
30
32
|
* @param providerInfo - Provider information for Azure support
|
|
31
33
|
* @returns Constructed payload for Revenium API
|
|
32
34
|
*/
|
|
33
|
-
function buildPayload(operationType, response, request, startTime, duration, providerInfo) {
|
|
35
|
+
async function buildPayload(operationType, response, request, startTime, duration, providerInfo) {
|
|
34
36
|
const now = new Date().toISOString();
|
|
35
37
|
const requestTime = new Date(startTime).toISOString();
|
|
36
38
|
const usage = response.usage;
|
|
39
|
+
if (!usage) {
|
|
40
|
+
throw new Error("Response usage data is missing");
|
|
41
|
+
}
|
|
37
42
|
// For Azure, use the deployment name as-is
|
|
38
43
|
// The deployment name is what the user provided and should be sent to Revenium
|
|
39
44
|
const modelName = response.model;
|
|
@@ -41,8 +46,16 @@ function buildPayload(operationType, response, request, startTime, duration, pro
|
|
|
41
46
|
const providerMetadata = providerInfo
|
|
42
47
|
? (0, providers_1.getProviderMetadata)(providerInfo)
|
|
43
48
|
: { provider: "OpenAI", modelSource: "OPENAI" };
|
|
44
|
-
// Build metadata fields using utility (eliminates repetitive spreading)
|
|
45
49
|
const metadataFields = (0, metadata_builder_js_1.buildMetadataFields)(request.usageMetadata);
|
|
50
|
+
const environment = (0, trace_fields_js_1.getEnvironment)();
|
|
51
|
+
const region = await (0, trace_fields_js_1.getRegion)();
|
|
52
|
+
const credentialAlias = (0, trace_fields_js_1.getCredentialAlias)();
|
|
53
|
+
const traceType = (0, trace_fields_js_1.getTraceType)();
|
|
54
|
+
const traceName = (0, trace_fields_js_1.getTraceName)();
|
|
55
|
+
const parentTransactionId = (0, trace_fields_js_1.getParentTransactionId)();
|
|
56
|
+
const transactionName = (0, trace_fields_js_1.getTransactionName)();
|
|
57
|
+
const retryNumber = (0, trace_fields_js_1.getRetryNumber)();
|
|
58
|
+
const operationSubtype = (0, trace_fields_js_1.detectOperationSubtype)(request);
|
|
46
59
|
// Common fields for all operations
|
|
47
60
|
const commonPayload = {
|
|
48
61
|
costType: "AI",
|
|
@@ -56,8 +69,16 @@ function buildPayload(operationType, response, request, startTime, duration, pro
|
|
|
56
69
|
// Common token counts
|
|
57
70
|
inputTokenCount: usage.prompt_tokens,
|
|
58
71
|
totalTokenCount: usage.total_tokens,
|
|
59
|
-
// Metadata fields (processed by utility)
|
|
60
72
|
...metadataFields,
|
|
73
|
+
environment: environment || undefined,
|
|
74
|
+
region: region || undefined,
|
|
75
|
+
credentialAlias: credentialAlias || undefined,
|
|
76
|
+
traceType: traceType || undefined,
|
|
77
|
+
traceName: traceName || undefined,
|
|
78
|
+
parentTransactionId: parentTransactionId || undefined,
|
|
79
|
+
transactionName: transactionName || undefined,
|
|
80
|
+
retryNumber: retryNumber !== undefined ? retryNumber : undefined,
|
|
81
|
+
operationSubtype: operationSubtype || undefined,
|
|
61
82
|
// Fixed middleware source identifier (spec format: revenium-{provider}-{language})
|
|
62
83
|
middlewareSource: "revenium-openai-node",
|
|
63
84
|
// Backend calculates costs
|
|
@@ -84,6 +105,28 @@ function buildPayload(operationType, response, request, startTime, duration, pro
|
|
|
84
105
|
}
|
|
85
106
|
const chatResponse = response;
|
|
86
107
|
const chatUsage = chatResponse.usage;
|
|
108
|
+
const chatRequest = request;
|
|
109
|
+
const attributes = {};
|
|
110
|
+
if (chatRequest.response_format) {
|
|
111
|
+
if (typeof chatRequest.response_format === "object" &&
|
|
112
|
+
chatRequest.response_format !== null) {
|
|
113
|
+
const formatType = chatRequest.response_format.type;
|
|
114
|
+
if (formatType) {
|
|
115
|
+
attributes.response_format_type = formatType;
|
|
116
|
+
if (formatType === "json_schema") {
|
|
117
|
+
const schemaName = chatRequest.response_format.json_schema
|
|
118
|
+
?.name;
|
|
119
|
+
if (schemaName) {
|
|
120
|
+
attributes.response_format_schema_name = schemaName;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
attributes.response_format = chatRequest.response_format;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const promptData = (0, prompt_extraction_js_1.extractPrompts)(chatRequest, chatResponse, chatRequest.usageMetadata);
|
|
87
130
|
return {
|
|
88
131
|
...commonPayload,
|
|
89
132
|
operationType: "CHAT",
|
|
@@ -96,9 +139,16 @@ function buildPayload(operationType, response, request, startTime, duration, pro
|
|
|
96
139
|
// Only include if provider reports cache hits
|
|
97
140
|
cacheReadTokenCount: chatUsage.cached_tokens ?? undefined,
|
|
98
141
|
stopReason: (0, stop_reason_mapper_js_1.mapStopReason)(chatResponse.choices?.[0]?.finish_reason, logger),
|
|
99
|
-
isStreamed: Boolean(
|
|
142
|
+
isStreamed: Boolean(chatRequest.stream),
|
|
100
143
|
// TODO: Implement real TTFB tracking for streaming requests
|
|
101
144
|
timeToFirstToken: undefined,
|
|
145
|
+
...(Object.keys(attributes).length > 0 && { attributes }),
|
|
146
|
+
...(promptData && {
|
|
147
|
+
systemPrompt: promptData.systemPrompt,
|
|
148
|
+
inputMessages: promptData.inputMessages,
|
|
149
|
+
outputResponse: promptData.outputResponse,
|
|
150
|
+
promptsTruncated: promptData.promptsTruncated,
|
|
151
|
+
}),
|
|
102
152
|
};
|
|
103
153
|
}
|
|
104
154
|
function buildImagePayload(operationSubtype, response, request, startTime, duration, providerInfo, usageMetadata) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload-builder.js","sourceRoot":"","sources":["../../../../src/core/tracking/payload-builder.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"payload-builder.js","sourceRoot":"","sources":["../../../../src/core/tracking/payload-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Summary Printer Module
|
|
4
|
+
*
|
|
5
|
+
* Provides terminal output for cost/metrics summary after API requests.
|
|
6
|
+
* Fetches cost data from Revenium's traces API and formats for console display.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.printUsageSummary = printUsageSummary;
|
|
10
|
+
const config_1 = require("../config");
|
|
11
|
+
const constants_js_1 = require("../../utils/constants.js");
|
|
12
|
+
const logger = (0, config_1.getLogger)();
|
|
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
|
+
/**
|
|
22
|
+
* Fetch metrics from Revenium completions API
|
|
23
|
+
*
|
|
24
|
+
* @param transactionId - The transaction ID to query
|
|
25
|
+
* @param maxRetries - Maximum number of retry attempts
|
|
26
|
+
* @param retryDelay - Milliseconds to wait between retries
|
|
27
|
+
* @returns Completion metrics or null if unavailable
|
|
28
|
+
*/
|
|
29
|
+
async function fetchCompletionMetrics(transactionId, maxRetries = 3, retryDelay = 2000) {
|
|
30
|
+
const config = (0, config_1.getConfig)();
|
|
31
|
+
if (!config) {
|
|
32
|
+
logger.debug("No config available for summary printing");
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
if (!config.teamId) {
|
|
36
|
+
logger.debug("Team ID not configured, skipping cost retrieval for summary");
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
const baseUrl = (config.reveniumBaseUrl || constants_js_1.DEFAULT_REVENIUM_BASE_URL).replace(/\/+$/, "");
|
|
40
|
+
// Note: profitstream API uses a different path structure than the metering API,
|
|
41
|
+
// so we don't use buildReveniumUrl here (which adds /meter/v2 prefix)
|
|
42
|
+
const url = `${baseUrl}/profitstream/v2/api/sources/metrics/ai/completions`;
|
|
43
|
+
const urlWithParams = `${url}?teamId=${encodeURIComponent(config.teamId)}&transactionId=${encodeURIComponent(transactionId)}`;
|
|
44
|
+
logger.debug("Fetching completion metrics", { url: urlWithParams });
|
|
45
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
46
|
+
try {
|
|
47
|
+
const response = await fetch(urlWithParams, {
|
|
48
|
+
method: "GET",
|
|
49
|
+
headers: {
|
|
50
|
+
Accept: "application/json",
|
|
51
|
+
"x-api-key": config.reveniumApiKey,
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
if (!response.ok) {
|
|
55
|
+
// Drain the response body to prevent resource leaks (matches cleanup pattern in sendToRevenium)
|
|
56
|
+
try {
|
|
57
|
+
await response.text();
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// Ignore errors when draining the body
|
|
61
|
+
}
|
|
62
|
+
logger.debug(`Completions metrics API returned ${response.status}`, {
|
|
63
|
+
attempt: attempt + 1,
|
|
64
|
+
});
|
|
65
|
+
if (attempt < maxRetries - 1) {
|
|
66
|
+
await delayWithUnref(retryDelay);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
const data = (await response.json());
|
|
72
|
+
const completions = data._embedded?.aICompletionMetricResourceList;
|
|
73
|
+
if (completions && completions.length > 0) {
|
|
74
|
+
return completions[0];
|
|
75
|
+
}
|
|
76
|
+
if (attempt < maxRetries - 1) {
|
|
77
|
+
logger.debug(`Waiting for metrics to aggregate (attempt ${attempt + 1}/${maxRetries})...`);
|
|
78
|
+
await delayWithUnref(retryDelay);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
logger.debug("Failed to fetch trace metrics", {
|
|
83
|
+
error: error instanceof Error ? error.message : String(error),
|
|
84
|
+
attempt: attempt + 1,
|
|
85
|
+
});
|
|
86
|
+
if (attempt < maxRetries - 1) {
|
|
87
|
+
await delayWithUnref(retryDelay);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
function isSummaryFormat(value) {
|
|
94
|
+
return value === "human" || value === "json";
|
|
95
|
+
}
|
|
96
|
+
function formatAndPrintJsonSummary(payload, metrics) {
|
|
97
|
+
const config = (0, config_1.getConfig)();
|
|
98
|
+
const summary = {
|
|
99
|
+
model: payload.model,
|
|
100
|
+
provider: payload.provider,
|
|
101
|
+
durationSeconds: payload.requestDuration / 1000,
|
|
102
|
+
inputTokenCount: payload.inputTokenCount,
|
|
103
|
+
outputTokenCount: payload.outputTokenCount,
|
|
104
|
+
totalTokenCount: payload.totalTokenCount,
|
|
105
|
+
cost: typeof metrics?.totalCost === "number" ? metrics.totalCost : null,
|
|
106
|
+
};
|
|
107
|
+
if (summary.cost === null) {
|
|
108
|
+
summary.costStatus = config?.teamId ? "pending" : "unavailable";
|
|
109
|
+
}
|
|
110
|
+
if (payload.traceId) {
|
|
111
|
+
summary.traceId = payload.traceId;
|
|
112
|
+
}
|
|
113
|
+
console.log(JSON.stringify(summary));
|
|
114
|
+
}
|
|
115
|
+
function formatAndPrintHumanSummary(payload, metrics) {
|
|
116
|
+
console.log("\n" + "=".repeat(60));
|
|
117
|
+
console.log("📊 REVENIUM USAGE SUMMARY");
|
|
118
|
+
console.log("=".repeat(60));
|
|
119
|
+
console.log(`🤖 Model: ${payload.model}`);
|
|
120
|
+
console.log(`🏢 Provider: ${payload.provider}`);
|
|
121
|
+
console.log(`⏱️ Duration: ${(payload.requestDuration / 1000).toFixed(2)}s`);
|
|
122
|
+
console.log("\n💬 Token Usage:");
|
|
123
|
+
console.log(` 📥 Input Tokens: ${(payload.inputTokenCount ?? 0).toLocaleString()}`);
|
|
124
|
+
console.log(` 📤 Output Tokens: ${(payload.outputTokenCount ?? 0).toLocaleString()}`);
|
|
125
|
+
console.log(` 📊 Total Tokens: ${(payload.totalTokenCount ?? 0).toLocaleString()}`);
|
|
126
|
+
if (typeof metrics?.totalCost === "number") {
|
|
127
|
+
console.log(`\n💰 Cost: $${metrics.totalCost.toFixed(6)}`);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
const config = (0, config_1.getConfig)();
|
|
131
|
+
if (!config?.teamId) {
|
|
132
|
+
console.log(`\n💰 Cost: Set REVENIUM_TEAM_ID in .env to see pricing`);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
console.log(`\n💰 Cost: (pending aggregation)`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (payload.traceId) {
|
|
139
|
+
console.log(`\n🔖 Trace ID: ${payload.traceId}`);
|
|
140
|
+
}
|
|
141
|
+
console.log("=".repeat(60) + "\n");
|
|
142
|
+
}
|
|
143
|
+
function formatAndPrintSummary(payload, metrics, format) {
|
|
144
|
+
if (format === "json") {
|
|
145
|
+
formatAndPrintJsonSummary(payload, metrics);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
formatAndPrintHumanSummary(payload, metrics);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function safeFormatAndPrintSummary(payload, metrics, format) {
|
|
152
|
+
try {
|
|
153
|
+
formatAndPrintSummary(payload, metrics, format);
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
logger.debug("Failed to format and print summary", {
|
|
157
|
+
error: error instanceof Error ? error.message : String(error),
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function getSummaryFormat(value) {
|
|
162
|
+
if (!value)
|
|
163
|
+
return null;
|
|
164
|
+
if (value === true)
|
|
165
|
+
return "human";
|
|
166
|
+
if (isSummaryFormat(value)) {
|
|
167
|
+
return value;
|
|
168
|
+
}
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
function printUsageSummary(payload) {
|
|
172
|
+
const config = (0, config_1.getConfig)();
|
|
173
|
+
const format = getSummaryFormat(config?.printSummary);
|
|
174
|
+
if (!format) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
if (config?.teamId && payload.transactionId) {
|
|
178
|
+
fetchCompletionMetrics(payload.transactionId)
|
|
179
|
+
.then((metrics) => {
|
|
180
|
+
safeFormatAndPrintSummary(payload, metrics, format);
|
|
181
|
+
})
|
|
182
|
+
.catch((error) => {
|
|
183
|
+
logger.debug("Failed to print usage summary with metrics", {
|
|
184
|
+
error: error instanceof Error ? error.message : String(error),
|
|
185
|
+
});
|
|
186
|
+
safeFormatAndPrintSummary(payload, null, format);
|
|
187
|
+
})
|
|
188
|
+
.catch(() => {
|
|
189
|
+
// Final safety catch to prevent unhandled rejections
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
safeFormatAndPrintSummary(payload, null, format);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=summary-printer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary-printer.js","sourceRoot":"","sources":["../../../../src/core/tracking/summary-printer.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,7 @@ const config_1 = require("../config");
|
|
|
49
49
|
const api_client_js_1 = require("./api-client.js");
|
|
50
50
|
const payload_builder_js_1 = require("./payload-builder.js");
|
|
51
51
|
const error_handler_js_1 = require("../../utils/error-handler.js");
|
|
52
|
+
const summary_printer_js_1 = require("./summary-printer.js");
|
|
52
53
|
// Global logger
|
|
53
54
|
const logger = (0, config_1.getLogger)();
|
|
54
55
|
/**
|
|
@@ -56,8 +57,15 @@ const logger = (0, config_1.getLogger)();
|
|
|
56
57
|
*/
|
|
57
58
|
async function sendReveniumMetrics(response, request, startTime, duration, providerInfo) {
|
|
58
59
|
await (0, error_handler_js_1.safeAsyncOperation)(async () => {
|
|
59
|
-
const payload = (0, payload_builder_js_1.buildPayload)("CHAT", response, request, startTime, duration, providerInfo);
|
|
60
|
-
|
|
60
|
+
const payload = await (0, payload_builder_js_1.buildPayload)("CHAT", response, request, startTime, duration, providerInfo);
|
|
61
|
+
try {
|
|
62
|
+
await (0, api_client_js_1.sendToRevenium)(payload);
|
|
63
|
+
}
|
|
64
|
+
finally {
|
|
65
|
+
// Print summary regardless of whether sendToRevenium succeeded or failed
|
|
66
|
+
// This ensures local visibility even when tracking delivery fails
|
|
67
|
+
(0, summary_printer_js_1.printUsageSummary)(payload);
|
|
68
|
+
}
|
|
61
69
|
}, "Chat completion tracking", {
|
|
62
70
|
logError: true,
|
|
63
71
|
rethrow: false, // Don't rethrow to maintain fire-and-forget behavior
|
|
@@ -69,8 +77,15 @@ async function sendReveniumMetrics(response, request, startTime, duration, provi
|
|
|
69
77
|
*/
|
|
70
78
|
async function sendReveniumEmbeddingsMetrics(response, request, startTime, duration, providerInfo) {
|
|
71
79
|
await (0, error_handler_js_1.safeAsyncOperation)(async () => {
|
|
72
|
-
const payload = (0, payload_builder_js_1.buildPayload)("EMBED", response, request, startTime, duration, providerInfo);
|
|
73
|
-
|
|
80
|
+
const payload = await (0, payload_builder_js_1.buildPayload)("EMBED", response, request, startTime, duration, providerInfo);
|
|
81
|
+
try {
|
|
82
|
+
await (0, api_client_js_1.sendToRevenium)(payload);
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
// Print summary regardless of whether sendToRevenium succeeded or failed
|
|
86
|
+
// This ensures local visibility even when tracking delivery fails
|
|
87
|
+
(0, summary_printer_js_1.printUsageSummary)(payload);
|
|
88
|
+
}
|
|
74
89
|
}, "Embeddings tracking", {
|
|
75
90
|
logError: true,
|
|
76
91
|
rethrow: false, // Don't rethrow to maintain fire-and-forget behavior
|
|
@@ -98,12 +113,15 @@ function trackUsageAsync(trackingData) {
|
|
|
98
113
|
choices: [
|
|
99
114
|
{
|
|
100
115
|
finish_reason: trackingData.finishReason,
|
|
116
|
+
...(trackingData.responseContent && {
|
|
117
|
+
message: { content: trackingData.responseContent, role: "assistant" },
|
|
118
|
+
}),
|
|
101
119
|
},
|
|
102
120
|
],
|
|
103
121
|
};
|
|
104
122
|
const mockRequest = {
|
|
105
123
|
model: trackingData.model,
|
|
106
|
-
messages: [],
|
|
124
|
+
messages: trackingData.messages || [],
|
|
107
125
|
usageMetadata: trackingData.usageMetadata,
|
|
108
126
|
stream: trackingData.isStreamed,
|
|
109
127
|
};
|
|
@@ -169,7 +187,14 @@ async function trackImageUsageAsync(operationSubtype, response, request, startTi
|
|
|
169
187
|
.then(async () => {
|
|
170
188
|
const { buildImagePayload } = await Promise.resolve().then(() => __importStar(require("./payload-builder.js")));
|
|
171
189
|
const payload = buildImagePayload(operationSubtype, response, request, startTime, duration, providerInfo, metadata);
|
|
172
|
-
|
|
190
|
+
try {
|
|
191
|
+
await (0, api_client_js_1.sendToRevenium)(payload);
|
|
192
|
+
}
|
|
193
|
+
finally {
|
|
194
|
+
// Print summary regardless of whether sendToRevenium succeeded or failed
|
|
195
|
+
// This ensures local visibility even when tracking delivery fails
|
|
196
|
+
(0, summary_printer_js_1.printUsageSummary)(payload);
|
|
197
|
+
}
|
|
173
198
|
})
|
|
174
199
|
.then(() => {
|
|
175
200
|
logger.debug("Image tracking completed successfully", {
|
|
@@ -196,7 +221,14 @@ async function trackAudioUsageAsync(operationSubtype, response, request, startTi
|
|
|
196
221
|
.then(async () => {
|
|
197
222
|
const { buildAudioPayload } = await Promise.resolve().then(() => __importStar(require("./payload-builder.js")));
|
|
198
223
|
const payload = buildAudioPayload(operationSubtype, response, request, startTime, duration, providerInfo, metadata);
|
|
199
|
-
|
|
224
|
+
try {
|
|
225
|
+
await (0, api_client_js_1.sendToRevenium)(payload);
|
|
226
|
+
}
|
|
227
|
+
finally {
|
|
228
|
+
// Print summary regardless of whether sendToRevenium succeeded or failed
|
|
229
|
+
// This ensures local visibility even when tracking delivery fails
|
|
230
|
+
(0, summary_printer_js_1.printUsageSummary)(payload);
|
|
231
|
+
}
|
|
200
232
|
})
|
|
201
233
|
.then(() => {
|
|
202
234
|
logger.debug("Audio tracking completed successfully", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../../../src/core/tracking/usage-tracker.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../../../src/core/tracking/usage-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,qCAAqC;AACrC,2DAAyC;AAEzC,gCAAgC;AAChC,qDAAmC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,qCAAqC;AACrC,2DAAyC;AAEzC,gCAAgC;AAChC,qDAAmC;AAoFnC;;;;;GAKG;AACH,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,0BAA0B;IAC1B,6BAAiB,CAAA;IACjB,2BAA2B;IAC3B,yCAA6B,CAAA;AAC/B,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB"}
|