@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-wrapper.js","sourceRoot":"","sources":["../../../../src/core/middleware/streaming-wrapper.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,sCAAsC;AACtC,0CAA8C;
|
|
1
|
+
{"version":3,"file":"streaming-wrapper.js","sourceRoot":"","sources":["../../../../src/core/middleware/streaming-wrapper.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,sCAAsC;AACtC,0CAA8C;AAC9C,2EAI0C;AAE1C,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;AAE3B;;GAEG;AACH,MAAa,gBAAgB;IAa3B,YACE,MAA0B,EAC1B,KAAa,EACb,SAAe,EACf,aAAqB,EACrB,QAAwB,EACxB,MAAY,EACZ,cAA0E,EAC1E,QAAc;QAVR,uBAAkB,GAAW,EAAE,CAAC;QAYtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,IAAI,SAAS,GAAQ,IAAI,CAAC;QAC1B,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,QAAQ,GAAQ,SAAS,CAAC;QAC9B,IAAI,cAAc,GAAgB,IAAI,CAAC;QACvC,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACtC,8BAA8B;gBAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC;oBAC5B,gBAAgB;wBACd,cAAc,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACxD,CAAC;gBAED,SAAS,GAAG,KAAK,CAAC;gBAElB,IACE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO;oBAClC,IAAA,2CAAoB,EAAC,IAAI,CAAC,QAAQ,CAAC,EACnC,CAAC;oBACD,MAAM,OAAO,GAAG,IAAA,uCAAgB,GAAE,CAAC;oBACnC,MAAM,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;oBAC3D,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;wBAClB,IAAI,CAAC,kBAAkB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAC7D,CAAC,EACD,SAAS,CACV,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,oCAAoC;gBACpC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAChB,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;oBAC7C,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;oBAClD,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;oBAC5C,uDAAuD;oBACvD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;wBACrB,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;oBAC9B,CAAC;gBACH,CAAC;gBAED,MAAM,KAAK,CAAC;YACd,CAAC;YAED,SAAS,GAAG,IAAI,CAAC;YAEjB,6DAA6D;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAEpD,kBAAkB;YAClB,IAAA,0BAAe,EAAC;gBACd,SAAS,EAAE,IAAI,CAAC,aAAa;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,YAAY,EAAE,WAAW;gBACzB,gBAAgB,EAAE,YAAY;gBAC9B,WAAW;gBACX,QAAQ;gBACR,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,IAAI,IAAI;gBAC5D,aAAa,EAAE,IAAI,CAAC,QAAQ;gBAC5B,UAAU,EAAE,IAAI;gBAChB,gBAAgB;gBAChB,IAAI,EAAE,QAAQ;gBACd,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,eAAe,EAAE,IAAI,CAAC,kBAAkB;oBACtC,CAAC,CAAC,IAAA,0CAAmB,EAAC,IAAI,CAAC,kBAAkB,CAAC;oBAC9C,CAAC,CAAC,SAAS;aACd,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,SAAS,GAAG,IAAI,CAAC;YAEjB,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAEtE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAEpD,IAAA,0BAAe,EAAC;gBACd,SAAS,EAAE,IAAI,CAAC,aAAa;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,YAAY,EAAE,WAAW;gBACzB,gBAAgB,EAAE,YAAY;gBAC9B,WAAW;gBACX,QAAQ;gBACR,YAAY,EAAE,OAAO;gBACrB,aAAa,EAAE,IAAI,CAAC,QAAQ;gBAC5B,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,eAAe,EAAE,IAAI,CAAC,kBAAkB;oBACtC,CAAC,CAAC,IAAA,0CAAmB,EAAC,IAAI,CAAC,kBAAkB,CAAC;oBAC9C,CAAC,CAAC,SAAS;aACd,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBAEpD,IAAA,0BAAe,EAAC;oBACd,SAAS,EAAE,IAAI,CAAC,aAAa;oBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,YAAY,EAAE,WAAW;oBACzB,gBAAgB,EAAE,YAAY;oBAC9B,WAAW;oBACX,QAAQ;oBACR,YAAY,EAAE,WAAW;oBACzB,aAAa,EAAE,IAAI,CAAC,QAAQ;oBAC5B,UAAU,EAAE,IAAI;oBAChB,gBAAgB;oBAChB,IAAI,EAAE,QAAQ;oBACd,cAAc,EAAE,IAAI,CAAC,cAAc;oBACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,eAAe,EAAE,IAAI,CAAC,kBAAkB;wBACtC,CAAC,CAAC,IAAA,0CAAmB,EAAC,IAAI,CAAC,kBAAkB,CAAC;wBAC9C,CAAC,CAAC,SAAS;iBACd,CAAC,CAAC;gBAEH,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;oBAC7C,SAAS,EAAE,IAAI,CAAC,aAAa;oBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAvKD,4CAuKC"}
|
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.sendToRevenium = sendToRevenium;
|
|
10
10
|
const config_1 = require("../config");
|
|
11
11
|
const url_builder_js_1 = require("../../utils/url-builder.js");
|
|
12
|
+
const summary_printer_js_1 = require("../../utils/summary-printer.js");
|
|
12
13
|
// Global logger
|
|
13
14
|
const logger = (0, config_1.getLogger)();
|
|
14
15
|
/**
|
|
@@ -63,5 +64,6 @@ async function sendToRevenium(payload) {
|
|
|
63
64
|
operationType: payload.operationType,
|
|
64
65
|
response: responseBody,
|
|
65
66
|
});
|
|
67
|
+
(0, summary_printer_js_1.printUsageSummary)(payload);
|
|
66
68
|
}
|
|
67
69
|
//# sourceMappingURL=api-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../../src/core/tracking/api-client.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../../src/core/tracking/api-client.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAkBH,wCAyDC;AAxED,sCAAiD;AACjD,+DAA8D;AAC9D,uEAAmE;AAEnE,gBAAgB;AAChB,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;AAE3B;;;;;;;GAOG;AACI,KAAK,UAAU,cAAc,CAAC,OAAwB;IAC3D,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,IAAI,CAAC,MAAM;QACT,OAAO,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAE5E,MAAM,GAAG,GAAG,IAAA,iCAAgB,EAC1B,MAAM,CAAC,eAAe,IAAI,yBAAyB,EACnD,iBAAiB,CAClB,CAAC;IAEF,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;QAC3C,GAAG;QACH,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,eAAe;KACrC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;YAC1B,WAAW,EAAE,MAAM,CAAC,cAAc;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;QACpC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;YAC1C,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,IAAI,EAAE,YAAY;YAClB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,CACb,uBAAuB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,YAAY,EAAE,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3C,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;QAC3C,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAC;IAEH,IAAA,sCAAiB,EAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -12,6 +12,8 @@ const index_js_1 = require("../config/index.js");
|
|
|
12
12
|
const stop_reason_mapper_js_1 = require("../../utils/stop-reason-mapper.js");
|
|
13
13
|
const metadata_builder_js_1 = require("../../utils/metadata-builder.js");
|
|
14
14
|
const index_js_2 = require("../providers/index.js");
|
|
15
|
+
const trace_fields_js_1 = require("../../utils/trace-fields.js");
|
|
16
|
+
const prompt_extraction_js_1 = require("../../utils/prompt-extraction.js");
|
|
15
17
|
// Global logger
|
|
16
18
|
const logger = (0, index_js_1.getLogger)();
|
|
17
19
|
/**
|
|
@@ -29,7 +31,7 @@ const logger = (0, index_js_1.getLogger)();
|
|
|
29
31
|
* @param timeToFirstToken - Time to first token in milliseconds (for streaming)
|
|
30
32
|
* @returns Constructed payload for Revenium API
|
|
31
33
|
*/
|
|
32
|
-
function buildPayload(operationType, response, request, startTime, duration, providerInfo, timeToFirstToken) {
|
|
34
|
+
async function buildPayload(operationType, response, request, startTime, duration, providerInfo, timeToFirstToken) {
|
|
33
35
|
const now = new Date().toISOString();
|
|
34
36
|
const requestTime = new Date(startTime).toISOString();
|
|
35
37
|
const usage = response.usage;
|
|
@@ -43,6 +45,15 @@ function buildPayload(operationType, response, request, startTime, duration, pro
|
|
|
43
45
|
: { provider: "Perplexity", modelSource: "PERPLEXITY" };
|
|
44
46
|
// Build metadata fields using utility (eliminates repetitive spreading)
|
|
45
47
|
const metadataFields = (0, metadata_builder_js_1.buildMetadataFields)(request.usageMetadata);
|
|
48
|
+
const environment = (0, trace_fields_js_1.getEnvironment)();
|
|
49
|
+
const region = await (0, trace_fields_js_1.getRegion)();
|
|
50
|
+
const credentialAlias = (0, trace_fields_js_1.getCredentialAlias)();
|
|
51
|
+
const traceType = (0, trace_fields_js_1.getTraceType)();
|
|
52
|
+
const traceName = (0, trace_fields_js_1.getTraceName)();
|
|
53
|
+
const parentTransactionId = (0, trace_fields_js_1.getParentTransactionId)();
|
|
54
|
+
const transactionName = (0, trace_fields_js_1.getTransactionName)();
|
|
55
|
+
const retryNumber = (0, trace_fields_js_1.getRetryNumber)();
|
|
56
|
+
const operationSubtype = (0, trace_fields_js_1.detectOperationSubtype)(request);
|
|
46
57
|
// Map Perplexity cost object to Revenium cost fields
|
|
47
58
|
const costFields = usage.cost
|
|
48
59
|
? {
|
|
@@ -71,12 +82,22 @@ function buildPayload(operationType, response, request, startTime, duration, pro
|
|
|
71
82
|
totalTokenCount: usage.total_tokens,
|
|
72
83
|
// Metadata fields (processed by utility)
|
|
73
84
|
...metadataFields,
|
|
85
|
+
environment: environment || undefined,
|
|
86
|
+
region: region || undefined,
|
|
87
|
+
credentialAlias: credentialAlias || undefined,
|
|
88
|
+
traceType: traceType || undefined,
|
|
89
|
+
traceName: traceName || undefined,
|
|
90
|
+
parentTransactionId: parentTransactionId || undefined,
|
|
91
|
+
transactionName: transactionName || undefined,
|
|
92
|
+
retryNumber: retryNumber !== null ? retryNumber : undefined,
|
|
93
|
+
operationSubtype: operationSubtype || undefined,
|
|
74
94
|
// Fixed middleware source identifier (spec format: revenium-{provider}-{language})
|
|
75
95
|
middlewareSource: "revenium-perplexity-node",
|
|
76
96
|
// Cost fields from Perplexity
|
|
77
97
|
...costFields,
|
|
78
98
|
};
|
|
79
99
|
// Chat-specific fields
|
|
100
|
+
const promptData = (0, prompt_extraction_js_1.extractPrompts)(request, response, request.usageMetadata);
|
|
80
101
|
return {
|
|
81
102
|
...commonPayload,
|
|
82
103
|
operationType: "CHAT",
|
|
@@ -90,6 +111,12 @@ function buildPayload(operationType, response, request, startTime, duration, pro
|
|
|
90
111
|
isStreamed: Boolean(request.stream),
|
|
91
112
|
// Time to first token (for streaming requests)
|
|
92
113
|
timeToFirstToken: timeToFirstToken,
|
|
114
|
+
...(promptData && {
|
|
115
|
+
systemPrompt: promptData.systemPrompt,
|
|
116
|
+
inputMessages: promptData.inputMessages,
|
|
117
|
+
outputResponse: promptData.outputResponse,
|
|
118
|
+
promptsTruncated: promptData.promptsTruncated,
|
|
119
|
+
}),
|
|
93
120
|
};
|
|
94
121
|
}
|
|
95
122
|
//# sourceMappingURL=payload-builder.js.map
|
|
@@ -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":";AAAA;;;;;GAKG;;AA4CH,oCA6GC;AAvJD,mCAAoC;AAOpC,iDAA+C;AAC/C,6EAAkE;AAClE,yEAAsE;AACtE,oDAA4D;AAC5D,iEAUqC;AACrC,2EAAkE;AAElE,gBAAgB;AAChB,MAAM,MAAM,GAAG,IAAA,oBAAS,GAAE,CAAC;AAE3B;;;;;;;;;;;;;;GAcG;AACI,KAAK,UAAU,YAAY,CAChC,aAAqB,EACrB,QAA4B,EAC5B,OAA8B,EAC9B,SAAiB,EACjB,QAAgB,EAChB,YAA2B,EAC3B,gBAAyB;IAEzB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IAE7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC;IAEjC,4CAA4C;IAC5C,MAAM,gBAAgB,GAAG,YAAY;QACnC,CAAC,CAAC,IAAA,8BAAmB,GAAE;QACvB,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IAE1D,wEAAwE;IACxE,MAAM,cAAc,GAAG,IAAA,yCAAmB,EAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAElE,MAAM,WAAW,GAAG,IAAA,gCAAc,GAAE,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAS,GAAE,CAAC;IACjC,MAAM,eAAe,GAAG,IAAA,oCAAkB,GAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAA,8BAAY,GAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAA,8BAAY,GAAE,CAAC;IACjC,MAAM,mBAAmB,GAAG,IAAA,wCAAsB,GAAE,CAAC;IACrD,MAAM,eAAe,GAAG,IAAA,oCAAkB,GAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,IAAA,gCAAc,GAAE,CAAC;IACrC,MAAM,gBAAgB,GAAG,IAAA,wCAAsB,EAAC,OAAO,CAAC,CAAC;IAEzD,qDAAqD;IACrD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI;QAC3B,CAAC,CAAC;YACE,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB;YAC5C,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB;YAC9C,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU;SACjC;QACH,CAAC,CAAC;YACE,+CAA+C;YAC/C,cAAc,EAAE,SAAS;YACzB,eAAe,EAAE,SAAS;YAC1B,SAAS,EAAE,SAAS;SACrB,CAAC;IAEN,mCAAmC;IACnC,MAAM,aAAa,GAAG;QACpB,QAAQ,EAAE,IAAa;QACvB,KAAK,EAAE,SAAS;QAChB,YAAY,EAAE,GAAG;QACjB,eAAe,EAAE,QAAQ;QACzB,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;QACnC,WAAW,EAAE,gBAAgB,CAAC,WAAW;QACzC,WAAW;QACX,mBAAmB,EAAE,GAAG;QAExB,sBAAsB;QACtB,eAAe,EAAE,KAAK,CAAC,aAAa;QACpC,eAAe,EAAE,KAAK,CAAC,YAAY;QAEnC,yCAAyC;QACzC,GAAG,cAAc;QAEjB,WAAW,EAAE,WAAW,IAAI,SAAS;QACrC,MAAM,EAAE,MAAM,IAAI,SAAS;QAC3B,eAAe,EAAE,eAAe,IAAI,SAAS;QAC7C,SAAS,EAAE,SAAS,IAAI,SAAS;QACjC,SAAS,EAAE,SAAS,IAAI,SAAS;QACjC,mBAAmB,EAAE,mBAAmB,IAAI,SAAS;QACrD,eAAe,EAAE,eAAe,IAAI,SAAS;QAC7C,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAC3D,gBAAgB,EAAE,gBAAgB,IAAI,SAAS;QAE/C,mFAAmF;QACnF,gBAAgB,EAAE,0BAA0B;QAE5C,8BAA8B;QAC9B,GAAG,UAAU;KACd,CAAC;IAEF,uBAAuB;IACvB,MAAM,UAAU,GAAG,IAAA,qCAAc,EAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAE5E,OAAO;QACL,GAAG,aAAa;QAChB,aAAa,EAAE,MAAM;QACrB,aAAa,EAAE,QAAQ,CAAC,EAAE,IAAI,QAAQ,IAAA,mBAAU,GAAE,EAAE;QACpD,gBAAgB,EAAE,KAAK,CAAC,iBAAiB,IAAI,CAAC;QAC9C,kDAAkD;QAClD,mBAAmB,EAAE,SAAS;QAC9B,uBAAuB,EAAE,SAAS;QAClC,mBAAmB,EAAE,SAAS;QAC9B,UAAU,EAAE,IAAA,qCAAa,EAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC;QACvE,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,+CAA+C;QAC/C,gBAAgB,EAAE,gBAAgB;QAClC,GAAG,CAAC,UAAU,IAAI;YAChB,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,aAAa,EAAE,UAAU,CAAC,aAAa;YACvC,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;SAC9C,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -19,7 +19,7 @@ const logger = (0, index_js_1.getLogger)();
|
|
|
19
19
|
*/
|
|
20
20
|
async function sendReveniumMetrics(response, request, startTime, duration, providerInfo, timeToFirstToken) {
|
|
21
21
|
await (0, error_handler_js_1.safeAsyncOperation)(async () => {
|
|
22
|
-
const payload = (0, payload_builder_js_1.buildPayload)("CHAT", response, request, startTime, duration, providerInfo, timeToFirstToken);
|
|
22
|
+
const payload = await (0, payload_builder_js_1.buildPayload)("CHAT", response, request, startTime, duration, providerInfo, timeToFirstToken);
|
|
23
23
|
await (0, api_client_js_1.sendToRevenium)(payload);
|
|
24
24
|
}, "Chat completion tracking", {
|
|
25
25
|
logError: true,
|
|
@@ -48,19 +48,22 @@ function trackUsageAsync(trackingData) {
|
|
|
48
48
|
{
|
|
49
49
|
index: 0,
|
|
50
50
|
finish_reason: trackingData.finishReason,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
...(trackingData.responseContent && {
|
|
52
|
+
message: {
|
|
53
|
+
role: "assistant",
|
|
54
|
+
content: trackingData.responseContent,
|
|
55
|
+
},
|
|
56
|
+
}),
|
|
55
57
|
},
|
|
56
58
|
],
|
|
57
59
|
};
|
|
58
60
|
// Build DTO request object from tracking data
|
|
59
61
|
const dtoRequest = {
|
|
60
62
|
model: trackingData.model,
|
|
61
|
-
messages: [],
|
|
63
|
+
messages: trackingData.messages || [],
|
|
62
64
|
usageMetadata: trackingData.usageMetadata,
|
|
63
65
|
stream: trackingData.isStreamed,
|
|
66
|
+
response_format: trackingData.responseFormat,
|
|
64
67
|
};
|
|
65
68
|
const startTime = Date.now() - trackingData.duration;
|
|
66
69
|
sendReveniumMetrics(dtoResponse, dtoRequest, startTime, trackingData.duration, trackingData.providerInfo, trackingData.timeToFirstToken)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../../../src/core/tracking/usage-tracker.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAoBH,kDA6BC;AAMD,
|
|
1
|
+
{"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../../../src/core/tracking/usage-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMaxPromptSize = getMaxPromptSize;
|
|
4
|
+
exports.sanitizeCredentials = sanitizeCredentials;
|
|
5
|
+
exports.shouldCapturePrompts = shouldCapturePrompts;
|
|
6
|
+
exports.extractPrompts = extractPrompts;
|
|
7
|
+
const index_js_1 = require("../core/config/index.js");
|
|
8
|
+
const DEFAULT_MAX_PROMPT_SIZE = 50000;
|
|
9
|
+
const CAPTURE_PROMPTS_DEFAULT = false;
|
|
10
|
+
function getMaxPromptSize() {
|
|
11
|
+
const config = (0, index_js_1.getConfig)();
|
|
12
|
+
if (config?.maxPromptSize && config.maxPromptSize > 0) {
|
|
13
|
+
return config.maxPromptSize;
|
|
14
|
+
}
|
|
15
|
+
const envValue = process.env.REVENIUM_MAX_PROMPT_SIZE;
|
|
16
|
+
if (envValue) {
|
|
17
|
+
const parsed = parseInt(envValue, 10);
|
|
18
|
+
if (!isNaN(parsed) && parsed > 0) {
|
|
19
|
+
return parsed;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return DEFAULT_MAX_PROMPT_SIZE;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Sanitizes common credential patterns from text.
|
|
26
|
+
*
|
|
27
|
+
* Redacts the following credential types:
|
|
28
|
+
* - OpenAI keys: sk-*, sk-proj-*, sk-ant-* (20+ chars)
|
|
29
|
+
* - Perplexity keys: pplx-* (20+ chars)
|
|
30
|
+
* - AWS access keys: AKIA* (20 chars)
|
|
31
|
+
* - GitHub tokens: ghp_*, ghs_* (36+ chars)
|
|
32
|
+
* - JWT tokens: eyJ*.eyJ*.*
|
|
33
|
+
* - Bearer tokens
|
|
34
|
+
* - Generic API keys, tokens, passwords, secrets (8-20+ chars)
|
|
35
|
+
*
|
|
36
|
+
* LIMITATIONS:
|
|
37
|
+
* - Shorter credentials may pass through unsanitized
|
|
38
|
+
* - Length constraints balance security with false positive prevention
|
|
39
|
+
*/
|
|
40
|
+
function sanitizeCredentials(text) {
|
|
41
|
+
const patterns = [
|
|
42
|
+
{
|
|
43
|
+
regex: /pplx-[a-zA-Z0-9_-]{20,}/g,
|
|
44
|
+
replacement: "pplx-***REDACTED***",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
regex: /sk-proj-[a-zA-Z0-9_-]{48,}/g,
|
|
48
|
+
replacement: "sk-proj-***REDACTED***",
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
regex: /sk-ant-[a-zA-Z0-9_-]{20,}/g,
|
|
52
|
+
replacement: "sk-ant-***REDACTED***",
|
|
53
|
+
},
|
|
54
|
+
{ regex: /sk-[a-zA-Z0-9_-]{20,}/g, replacement: "sk-***REDACTED***" },
|
|
55
|
+
{
|
|
56
|
+
regex: /AKIA[A-Z0-9]{16}/g,
|
|
57
|
+
replacement: "AKIA***REDACTED***",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
regex: /ghp_[a-zA-Z0-9]{36,}/g,
|
|
61
|
+
replacement: "ghp_***REDACTED***",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
regex: /ghs_[a-zA-Z0-9]{36,}/g,
|
|
65
|
+
replacement: "ghs_***REDACTED***",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
regex: /eyJ[a-zA-Z0-9_-]+\.eyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+/g,
|
|
69
|
+
replacement: "***REDACTED_JWT***",
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
regex: /Bearer\s+[a-zA-Z0-9_\-.+\/=]+/gi,
|
|
73
|
+
replacement: "Bearer ***REDACTED***",
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
regex: /api[_-]?key["'\s:=]+[a-zA-Z0-9_\-.+\/=]{20,}/gi,
|
|
77
|
+
replacement: "api_key: ***REDACTED***",
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
regex: /token["'\s:=]+[a-zA-Z0-9_\-.+\/=]{20,}/gi,
|
|
81
|
+
replacement: "token: ***REDACTED***",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
regex: /password["'\s:=]+["']?([^"'\s]{8,})["']?/gi,
|
|
85
|
+
replacement: "password: ***REDACTED***",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
regex: /secret["'\s:=]+["']?([^"'\s]{8,})["']?/gi,
|
|
89
|
+
replacement: "secret: ***REDACTED***",
|
|
90
|
+
},
|
|
91
|
+
];
|
|
92
|
+
let sanitized = text;
|
|
93
|
+
for (const pattern of patterns) {
|
|
94
|
+
sanitized = sanitized.replace(pattern.regex, pattern.replacement);
|
|
95
|
+
}
|
|
96
|
+
return sanitized;
|
|
97
|
+
}
|
|
98
|
+
function truncateString(str, maxLength) {
|
|
99
|
+
if (!str || str.length === 0) {
|
|
100
|
+
return { value: "", truncated: false };
|
|
101
|
+
}
|
|
102
|
+
const sanitized = sanitizeCredentials(str);
|
|
103
|
+
if (sanitized.length <= maxLength) {
|
|
104
|
+
return { value: sanitized, truncated: false };
|
|
105
|
+
}
|
|
106
|
+
return { value: sanitized.substring(0, maxLength), truncated: true };
|
|
107
|
+
}
|
|
108
|
+
function extractSystemPrompt(params) {
|
|
109
|
+
if (!params.messages || !Array.isArray(params.messages)) {
|
|
110
|
+
return "";
|
|
111
|
+
}
|
|
112
|
+
const systemMessages = params.messages
|
|
113
|
+
.filter((msg) => msg.role === "system")
|
|
114
|
+
.map((msg) => msg.content)
|
|
115
|
+
.filter(Boolean);
|
|
116
|
+
return systemMessages.join("\n\n");
|
|
117
|
+
}
|
|
118
|
+
function extractInputMessages(params) {
|
|
119
|
+
if (!params.messages || !Array.isArray(params.messages)) {
|
|
120
|
+
return "";
|
|
121
|
+
}
|
|
122
|
+
return params.messages
|
|
123
|
+
.filter((msg) => msg.role !== "system")
|
|
124
|
+
.map((message) => `[${message.role}]\n${message.content}`)
|
|
125
|
+
.join("\n\n");
|
|
126
|
+
}
|
|
127
|
+
function extractOutputResponse(response) {
|
|
128
|
+
if (!response.choices || response.choices.length === 0) {
|
|
129
|
+
return "";
|
|
130
|
+
}
|
|
131
|
+
const choice = response.choices[0];
|
|
132
|
+
const parts = [];
|
|
133
|
+
if (choice.message?.content) {
|
|
134
|
+
parts.push(choice.message.content);
|
|
135
|
+
}
|
|
136
|
+
if (choice.delta?.content) {
|
|
137
|
+
parts.push(choice.delta.content);
|
|
138
|
+
}
|
|
139
|
+
const message = choice.message;
|
|
140
|
+
if (message?.tool_calls && Array.isArray(message.tool_calls)) {
|
|
141
|
+
message.tool_calls.forEach((toolCall) => {
|
|
142
|
+
if (toolCall.function?.name) {
|
|
143
|
+
parts.push(`[TOOL_USE: ${toolCall.function.name}]`);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
if (message?.function_call?.name) {
|
|
148
|
+
parts.push(`[FUNCTION_CALL: ${message.function_call.name}]`);
|
|
149
|
+
}
|
|
150
|
+
return parts.join("\n");
|
|
151
|
+
}
|
|
152
|
+
function shouldCapturePrompts(metadata) {
|
|
153
|
+
if (metadata?.capturePrompts !== undefined) {
|
|
154
|
+
return metadata.capturePrompts;
|
|
155
|
+
}
|
|
156
|
+
const config = (0, index_js_1.getConfig)();
|
|
157
|
+
if (config?.capturePrompts !== undefined) {
|
|
158
|
+
return config.capturePrompts;
|
|
159
|
+
}
|
|
160
|
+
const envValue = process.env.REVENIUM_CAPTURE_PROMPTS;
|
|
161
|
+
if (envValue !== undefined) {
|
|
162
|
+
return envValue.toLowerCase() === "true";
|
|
163
|
+
}
|
|
164
|
+
return CAPTURE_PROMPTS_DEFAULT;
|
|
165
|
+
}
|
|
166
|
+
function extractPrompts(params, response, metadata) {
|
|
167
|
+
if (!shouldCapturePrompts(metadata)) {
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
const maxSize = getMaxPromptSize();
|
|
171
|
+
let anyTruncated = false;
|
|
172
|
+
const systemPromptRaw = extractSystemPrompt(params);
|
|
173
|
+
const systemPromptResult = truncateString(systemPromptRaw, maxSize);
|
|
174
|
+
anyTruncated = anyTruncated || systemPromptResult.truncated;
|
|
175
|
+
const inputMessagesRaw = extractInputMessages(params);
|
|
176
|
+
const inputMessagesResult = truncateString(inputMessagesRaw, maxSize);
|
|
177
|
+
anyTruncated = anyTruncated || inputMessagesResult.truncated;
|
|
178
|
+
const outputResponseRaw = extractOutputResponse(response);
|
|
179
|
+
const outputResponseResult = truncateString(outputResponseRaw, maxSize);
|
|
180
|
+
anyTruncated = anyTruncated || outputResponseResult.truncated;
|
|
181
|
+
const hasAnyContent = systemPromptResult.value ||
|
|
182
|
+
inputMessagesResult.value ||
|
|
183
|
+
outputResponseResult.value;
|
|
184
|
+
if (!hasAnyContent) {
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
systemPrompt: systemPromptResult.value || undefined,
|
|
189
|
+
inputMessages: inputMessagesResult.value || undefined,
|
|
190
|
+
outputResponse: outputResponseResult.value || undefined,
|
|
191
|
+
promptsTruncated: anyTruncated,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
//# 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,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setConfig = setConfig;
|
|
4
|
+
exports.printUsageSummary = printUsageSummary;
|
|
5
|
+
const index_js_1 = require("../core/config/index.js");
|
|
6
|
+
let globalConfig = null;
|
|
7
|
+
function setConfig(config) {
|
|
8
|
+
globalConfig = config;
|
|
9
|
+
}
|
|
10
|
+
function getConfig() {
|
|
11
|
+
return globalConfig;
|
|
12
|
+
}
|
|
13
|
+
const DEFAULT_REVENIUM_BASE_URL = "https://api.revenium.ai";
|
|
14
|
+
const MAX_RETRIES = 3;
|
|
15
|
+
const RETRY_DELAY = 2000;
|
|
16
|
+
const FETCH_TIMEOUT = 10000;
|
|
17
|
+
function delayWithUnref(ms) {
|
|
18
|
+
return new Promise((resolve) => {
|
|
19
|
+
const timer = setTimeout(resolve, ms);
|
|
20
|
+
if (typeof timer.unref === "function") {
|
|
21
|
+
timer.unref();
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
async function fetchCompletionMetrics(transactionId, maxRetries = MAX_RETRIES, retryDelay = RETRY_DELAY) {
|
|
26
|
+
const config = getConfig();
|
|
27
|
+
if (!config) {
|
|
28
|
+
(0, index_js_1.getLogger)().debug("No config available for summary printing");
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
if (!config.teamId) {
|
|
32
|
+
(0, index_js_1.getLogger)().debug("Team ID not configured, skipping cost retrieval for summary");
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
if (!config.reveniumApiKey) {
|
|
36
|
+
(0, index_js_1.getLogger)().debug("Revenium API key not configured, skipping cost retrieval for summary");
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
const baseUrl = (config.reveniumBaseUrl || DEFAULT_REVENIUM_BASE_URL).replace(/\/+$/, "");
|
|
40
|
+
const url = `${baseUrl}/profitstream/v2/api/sources/metrics/ai/completions`;
|
|
41
|
+
const urlWithParams = `${url}?teamId=${encodeURIComponent(config.teamId.trim())}&transactionId=${encodeURIComponent(transactionId)}`;
|
|
42
|
+
(0, index_js_1.getLogger)().debug("Fetching completion metrics", { url: urlWithParams });
|
|
43
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
44
|
+
// Create an AbortController with timeout to prevent hung requests from keeping Node process alive
|
|
45
|
+
const controller = new AbortController();
|
|
46
|
+
const timeoutId = setTimeout(() => controller.abort(), FETCH_TIMEOUT);
|
|
47
|
+
// Unref the timer so it doesn't keep the process alive
|
|
48
|
+
if (typeof timeoutId.unref === "function") {
|
|
49
|
+
timeoutId.unref();
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
const response = await fetch(urlWithParams, {
|
|
53
|
+
method: "GET",
|
|
54
|
+
headers: {
|
|
55
|
+
Accept: "application/json",
|
|
56
|
+
"x-api-key": config.reveniumApiKey,
|
|
57
|
+
},
|
|
58
|
+
signal: controller.signal,
|
|
59
|
+
});
|
|
60
|
+
if (!response.ok) {
|
|
61
|
+
try {
|
|
62
|
+
await response.text();
|
|
63
|
+
}
|
|
64
|
+
catch { }
|
|
65
|
+
(0, index_js_1.getLogger)().debug(`Completions metrics API returned ${response.status}`, {
|
|
66
|
+
attempt: attempt + 1,
|
|
67
|
+
});
|
|
68
|
+
if (attempt < maxRetries - 1) {
|
|
69
|
+
await delayWithUnref(retryDelay);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
const data = (await response.json());
|
|
75
|
+
const completions = data._embedded?.aICompletionMetricResourceList;
|
|
76
|
+
if (completions && completions.length > 0) {
|
|
77
|
+
return completions[0];
|
|
78
|
+
}
|
|
79
|
+
if (attempt < maxRetries - 1) {
|
|
80
|
+
(0, index_js_1.getLogger)().debug(`Waiting for metrics to aggregate (attempt ${attempt + 1}/${maxRetries})...`);
|
|
81
|
+
await delayWithUnref(retryDelay);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
(0, index_js_1.getLogger)().debug("Failed to fetch completion metrics", {
|
|
86
|
+
error: error instanceof Error ? error.message : String(error),
|
|
87
|
+
attempt: attempt + 1,
|
|
88
|
+
});
|
|
89
|
+
if (attempt < maxRetries - 1) {
|
|
90
|
+
await delayWithUnref(retryDelay);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
clearTimeout(timeoutId);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
function isSummaryFormat(value) {
|
|
100
|
+
return value === "human" || value === "json";
|
|
101
|
+
}
|
|
102
|
+
function formatAndPrintJsonSummary(payload, metrics) {
|
|
103
|
+
const config = getConfig();
|
|
104
|
+
const summary = {
|
|
105
|
+
model: payload.model,
|
|
106
|
+
provider: payload.provider,
|
|
107
|
+
durationSeconds: payload.requestDuration / 1000,
|
|
108
|
+
inputTokenCount: payload.inputTokenCount,
|
|
109
|
+
outputTokenCount: payload.outputTokenCount,
|
|
110
|
+
totalTokenCount: payload.totalTokenCount,
|
|
111
|
+
cost: typeof metrics?.totalCost === "number" ? metrics.totalCost : null,
|
|
112
|
+
};
|
|
113
|
+
if (summary.cost === null) {
|
|
114
|
+
summary.costStatus = config?.teamId ? "pending" : "unavailable";
|
|
115
|
+
}
|
|
116
|
+
if (payload.traceId) {
|
|
117
|
+
summary.traceId = payload.traceId;
|
|
118
|
+
}
|
|
119
|
+
console.log(JSON.stringify(summary));
|
|
120
|
+
}
|
|
121
|
+
function formatAndPrintHumanSummary(payload, metrics) {
|
|
122
|
+
console.log("\n" + "=".repeat(60));
|
|
123
|
+
console.log("š REVENIUM USAGE SUMMARY");
|
|
124
|
+
console.log("=".repeat(60));
|
|
125
|
+
console.log(`š¤ Model: ${payload.model}`);
|
|
126
|
+
console.log(`š¢ Provider: ${payload.provider}`);
|
|
127
|
+
console.log(`ā±ļø Duration: ${(payload.requestDuration / 1000).toFixed(2)}s`);
|
|
128
|
+
console.log("\nš¬ Token Usage:");
|
|
129
|
+
console.log(` š„ Input Tokens: ${(payload.inputTokenCount ?? 0).toLocaleString()}`);
|
|
130
|
+
console.log(` š¤ Output Tokens: ${(payload.outputTokenCount ?? 0).toLocaleString()}`);
|
|
131
|
+
console.log(` š Total Tokens: ${(payload.totalTokenCount ?? 0).toLocaleString()}`);
|
|
132
|
+
if (typeof metrics?.totalCost === "number") {
|
|
133
|
+
console.log(`\nš° Cost: $${metrics.totalCost.toFixed(6)}`);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
const config = getConfig();
|
|
137
|
+
if (!config?.teamId) {
|
|
138
|
+
console.log(`\nš° Cost: Set REVENIUM_TEAM_ID in .env to see pricing`);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
console.log(`\nš° Cost: (pending aggregation)`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (payload.traceId) {
|
|
145
|
+
console.log(`\nš Trace ID: ${payload.traceId}`);
|
|
146
|
+
}
|
|
147
|
+
console.log("=".repeat(60) + "\n");
|
|
148
|
+
}
|
|
149
|
+
function formatAndPrintSummary(payload, metrics, format) {
|
|
150
|
+
if (format === "json") {
|
|
151
|
+
formatAndPrintJsonSummary(payload, metrics);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
formatAndPrintHumanSummary(payload, metrics);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
function safeFormatAndPrintSummary(payload, metrics, format) {
|
|
158
|
+
try {
|
|
159
|
+
formatAndPrintSummary(payload, metrics, format);
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
(0, index_js_1.getLogger)().debug("Failed to format and print summary", {
|
|
163
|
+
error: error instanceof Error ? error.message : String(error),
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function getSummaryFormat(value) {
|
|
168
|
+
if (!value)
|
|
169
|
+
return null;
|
|
170
|
+
if (value === true)
|
|
171
|
+
return "human";
|
|
172
|
+
if (isSummaryFormat(value)) {
|
|
173
|
+
return value;
|
|
174
|
+
}
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Initialize config from environment variables if not already set
|
|
179
|
+
* This ensures the summary printer works even if setConfig() is never called
|
|
180
|
+
*/
|
|
181
|
+
function initializeConfigFromEnv() {
|
|
182
|
+
if (globalConfig) {
|
|
183
|
+
return; // Already initialized
|
|
184
|
+
}
|
|
185
|
+
const printSummaryEnv = process.env.REVENIUM_PRINT_SUMMARY;
|
|
186
|
+
const teamId = process.env.REVENIUM_TEAM_ID;
|
|
187
|
+
const reveniumApiKey = process.env.REVENIUM_METERING_API_KEY;
|
|
188
|
+
const reveniumBaseUrl = process.env.REVENIUM_METERING_BASE_URL;
|
|
189
|
+
// Parse REVENIUM_PRINT_SUMMARY: env vars are always strings, so "true" !== true
|
|
190
|
+
let parsedPrintSummary;
|
|
191
|
+
if (printSummaryEnv === "true") {
|
|
192
|
+
parsedPrintSummary = true;
|
|
193
|
+
}
|
|
194
|
+
else if (printSummaryEnv === "false") {
|
|
195
|
+
parsedPrintSummary = false;
|
|
196
|
+
}
|
|
197
|
+
else if (printSummaryEnv === "human" || printSummaryEnv === "json") {
|
|
198
|
+
parsedPrintSummary = printSummaryEnv;
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
parsedPrintSummary = undefined;
|
|
202
|
+
}
|
|
203
|
+
if (parsedPrintSummary || teamId) {
|
|
204
|
+
globalConfig = {
|
|
205
|
+
printSummary: parsedPrintSummary,
|
|
206
|
+
teamId,
|
|
207
|
+
reveniumApiKey,
|
|
208
|
+
reveniumBaseUrl,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
function printUsageSummary(payload) {
|
|
213
|
+
// Initialize from env vars if needed
|
|
214
|
+
initializeConfigFromEnv();
|
|
215
|
+
const config = getConfig();
|
|
216
|
+
const format = getSummaryFormat(config?.printSummary);
|
|
217
|
+
if (!format) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
if (config?.teamId && payload.transactionId) {
|
|
221
|
+
fetchCompletionMetrics(payload.transactionId)
|
|
222
|
+
.then((metrics) => {
|
|
223
|
+
safeFormatAndPrintSummary(payload, metrics, format);
|
|
224
|
+
})
|
|
225
|
+
.catch((error) => {
|
|
226
|
+
(0, index_js_1.getLogger)().debug("Failed to print usage summary with metrics", {
|
|
227
|
+
error: error instanceof Error ? error.message : String(error),
|
|
228
|
+
});
|
|
229
|
+
safeFormatAndPrintSummary(payload, null, format);
|
|
230
|
+
})
|
|
231
|
+
.catch(() => { });
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
safeFormatAndPrintSummary(payload, null, format);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
//# 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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"}
|