@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.
Files changed (65) hide show
  1. package/.env.example +18 -1
  2. package/CHANGELOG.md +42 -0
  3. package/README.md +223 -37
  4. package/dist/cjs/core/config/loader.js +22 -1
  5. package/dist/cjs/core/config/loader.js.map +1 -1
  6. package/dist/cjs/core/config/manager.js +9 -0
  7. package/dist/cjs/core/config/manager.js.map +1 -1
  8. package/dist/cjs/core/middleware/interfaces.js +38 -1
  9. package/dist/cjs/core/middleware/interfaces.js.map +1 -1
  10. package/dist/cjs/core/middleware/streaming-wrapper.js +67 -2
  11. package/dist/cjs/core/middleware/streaming-wrapper.js.map +1 -1
  12. package/dist/cjs/core/tracking/api-client.js +2 -0
  13. package/dist/cjs/core/tracking/api-client.js.map +1 -1
  14. package/dist/cjs/core/tracking/payload-builder.js +28 -1
  15. package/dist/cjs/core/tracking/payload-builder.js.map +1 -1
  16. package/dist/cjs/core/tracking/usage-tracker.js +9 -6
  17. package/dist/cjs/core/tracking/usage-tracker.js.map +1 -1
  18. package/dist/cjs/utils/prompt-extraction.js +194 -0
  19. package/dist/cjs/utils/prompt-extraction.js.map +1 -0
  20. package/dist/cjs/utils/summary-printer.js +237 -0
  21. package/dist/cjs/utils/summary-printer.js.map +1 -0
  22. package/dist/cjs/utils/trace-fields.js +136 -0
  23. package/dist/cjs/utils/trace-fields.js.map +1 -0
  24. package/dist/esm/core/config/loader.js +22 -1
  25. package/dist/esm/core/config/loader.js.map +1 -1
  26. package/dist/esm/core/config/manager.js +9 -0
  27. package/dist/esm/core/config/manager.js.map +1 -1
  28. package/dist/esm/core/middleware/interfaces.js +38 -1
  29. package/dist/esm/core/middleware/interfaces.js.map +1 -1
  30. package/dist/esm/core/middleware/streaming-wrapper.js +67 -2
  31. package/dist/esm/core/middleware/streaming-wrapper.js.map +1 -1
  32. package/dist/esm/core/tracking/api-client.js +2 -0
  33. package/dist/esm/core/tracking/api-client.js.map +1 -1
  34. package/dist/esm/core/tracking/payload-builder.js +28 -1
  35. package/dist/esm/core/tracking/payload-builder.js.map +1 -1
  36. package/dist/esm/core/tracking/usage-tracker.js +9 -6
  37. package/dist/esm/core/tracking/usage-tracker.js.map +1 -1
  38. package/dist/esm/utils/prompt-extraction.js +188 -0
  39. package/dist/esm/utils/prompt-extraction.js.map +1 -0
  40. package/dist/esm/utils/summary-printer.js +233 -0
  41. package/dist/esm/utils/summary-printer.js.map +1 -0
  42. package/dist/esm/utils/trace-fields.js +121 -0
  43. package/dist/esm/utils/trace-fields.js.map +1 -0
  44. package/dist/types/core/config/loader.d.ts.map +1 -1
  45. package/dist/types/core/config/manager.d.ts.map +1 -1
  46. package/dist/types/core/middleware/interfaces.d.ts.map +1 -1
  47. package/dist/types/core/middleware/streaming-wrapper.d.ts +9 -1
  48. package/dist/types/core/middleware/streaming-wrapper.d.ts.map +1 -1
  49. package/dist/types/core/tracking/api-client.d.ts.map +1 -1
  50. package/dist/types/core/tracking/payload-builder.d.ts +1 -1
  51. package/dist/types/core/tracking/payload-builder.d.ts.map +1 -1
  52. package/dist/types/core/tracking/usage-tracker.d.ts +8 -0
  53. package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -1
  54. package/dist/types/types/function-parameters.d.ts +7 -0
  55. package/dist/types/types/function-parameters.d.ts.map +1 -1
  56. package/dist/types/types/index.d.ts +24 -0
  57. package/dist/types/types/index.d.ts.map +1 -1
  58. package/dist/types/utils/prompt-extraction.d.ts +29 -0
  59. package/dist/types/utils/prompt-extraction.d.ts.map +1 -0
  60. package/dist/types/utils/summary-printer.d.ts +23 -0
  61. package/dist/types/utils/summary-printer.d.ts.map +1 -0
  62. package/dist/types/utils/trace-fields.d.ts +11 -0
  63. package/dist/types/utils/trace-fields.d.ts.map +1 -0
  64. package/examples/prompt-capture.ts +108 -0
  65. package/package.json +5 -2
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resetRegionCache = resetRegionCache;
7
+ exports.getEnvironment = getEnvironment;
8
+ exports.getRegion = getRegion;
9
+ exports.getCredentialAlias = getCredentialAlias;
10
+ exports.getTraceType = getTraceType;
11
+ exports.getTraceName = getTraceName;
12
+ exports.detectOperationSubtype = detectOperationSubtype;
13
+ exports.getParentTransactionId = getParentTransactionId;
14
+ exports.getTransactionName = getTransactionName;
15
+ exports.getRetryNumber = getRetryNumber;
16
+ const index_js_1 = require("../core/config/index.js");
17
+ const axios_1 = __importDefault(require("axios"));
18
+ const logger = (0, index_js_1.getLogger)();
19
+ let cachedRegion = null;
20
+ let regionCached = false;
21
+ let regionPromise = null;
22
+ function resetRegionCache() {
23
+ cachedRegion = null;
24
+ regionCached = false;
25
+ regionPromise = null;
26
+ }
27
+ function getEnvironment() {
28
+ const env = process.env.REVENIUM_ENVIRONMENT ||
29
+ process.env.NODE_ENV ||
30
+ process.env.DEPLOYMENT_ENV ||
31
+ null;
32
+ if (!env) {
33
+ return null;
34
+ }
35
+ const trimmed = env.trim();
36
+ if (trimmed.length > 255) {
37
+ logger.warn(`environment exceeds max length of 255 characters. Truncating.`);
38
+ return trimmed.substring(0, 255);
39
+ }
40
+ return trimmed;
41
+ }
42
+ async function getRegion() {
43
+ if (regionCached) {
44
+ return cachedRegion;
45
+ }
46
+ if (regionPromise) {
47
+ return regionPromise;
48
+ }
49
+ const envRegion = process.env.AWS_REGION ||
50
+ process.env.AZURE_REGION ||
51
+ process.env.GCP_REGION ||
52
+ process.env.REVENIUM_REGION;
53
+ if (envRegion) {
54
+ cachedRegion = envRegion.trim();
55
+ regionCached = true;
56
+ return cachedRegion;
57
+ }
58
+ regionPromise = (async () => {
59
+ try {
60
+ const response = await axios_1.default.get("http://169.254.169.254/latest/meta-data/placement/region", { timeout: 500 });
61
+ cachedRegion = response.data.trim();
62
+ regionCached = true;
63
+ regionPromise = null;
64
+ return cachedRegion;
65
+ }
66
+ catch (error) {
67
+ regionCached = false;
68
+ regionPromise = null;
69
+ return null;
70
+ }
71
+ })();
72
+ return regionPromise;
73
+ }
74
+ function getCredentialAlias() {
75
+ const alias = process.env.REVENIUM_CREDENTIAL_ALIAS;
76
+ if (!alias) {
77
+ return null;
78
+ }
79
+ const trimmed = alias.trim();
80
+ if (trimmed.length > 255) {
81
+ logger.warn(`credentialAlias exceeds max length of 255 characters. Truncating.`);
82
+ return trimmed.substring(0, 255);
83
+ }
84
+ return trimmed;
85
+ }
86
+ function getTraceType() {
87
+ const traceType = process.env.REVENIUM_TRACE_TYPE;
88
+ if (!traceType) {
89
+ return null;
90
+ }
91
+ let value = traceType;
92
+ if (value.length > 128) {
93
+ logger.warn(`trace_type exceeds max length of 128 characters: ${value}. Truncating.`);
94
+ value = value.substring(0, 128);
95
+ }
96
+ if (!/^[a-zA-Z0-9_-]+$/.test(value)) {
97
+ logger.warn(`Invalid trace_type format: ${value}. Must be alphanumeric with hyphens/underscores only.`);
98
+ return null;
99
+ }
100
+ return value;
101
+ }
102
+ function getTraceName() {
103
+ const traceName = process.env.REVENIUM_TRACE_NAME;
104
+ if (!traceName) {
105
+ return null;
106
+ }
107
+ if (traceName.length > 256) {
108
+ logger.warn(`trace_name exceeds max length of 256 characters. Truncating.`);
109
+ return traceName.substring(0, 256);
110
+ }
111
+ return traceName;
112
+ }
113
+ function detectOperationSubtype(requestBody) {
114
+ if (requestBody && (requestBody.tools || requestBody.functions)) {
115
+ return "function_call";
116
+ }
117
+ return null;
118
+ }
119
+ function getParentTransactionId() {
120
+ return process.env.REVENIUM_PARENT_TRANSACTION_ID || null;
121
+ }
122
+ function getTransactionName() {
123
+ return process.env.REVENIUM_TRANSACTION_NAME || null;
124
+ }
125
+ function getRetryNumber() {
126
+ const retryNum = process.env.REVENIUM_RETRY_NUMBER;
127
+ if (!retryNum) {
128
+ return null;
129
+ }
130
+ const parsed = parseInt(retryNum, 10);
131
+ if (isNaN(parsed) || parsed < 0) {
132
+ return null;
133
+ }
134
+ return parsed;
135
+ }
136
+ //# 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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"}
@@ -30,16 +30,37 @@ export function loadConfigFromEnv() {
30
30
  const perplexityApiKey = process.env.PERPLEXITY_API_KEY;
31
31
  const perplexityBaseUrl = process.env.PERPLEXITY_API_BASE_URL || DEFAULT_PERPLEXITY_BASE_URL;
32
32
  const debug = process.env.REVENIUM_DEBUG === "true";
33
+ let printSummary = undefined;
34
+ const printSummaryEnv = process.env.REVENIUM_PRINT_SUMMARY;
35
+ if (printSummaryEnv) {
36
+ if (printSummaryEnv === "true") {
37
+ printSummary = true;
38
+ }
39
+ else if (printSummaryEnv === "false") {
40
+ printSummary = false;
41
+ }
42
+ else if (printSummaryEnv === "human" || printSummaryEnv === "json") {
43
+ printSummary = printSummaryEnv;
44
+ }
45
+ }
46
+ const teamId = process.env.REVENIUM_TEAM_ID;
47
+ const capturePromptsEnv = process.env.REVENIUM_CAPTURE_PROMPTS;
33
48
  if (!reveniumApiKey)
34
49
  return null;
35
50
  if (!perplexityApiKey)
36
51
  return null;
37
- return {
52
+ const config = {
38
53
  reveniumApiKey,
39
54
  reveniumBaseUrl,
40
55
  perplexityApiKey,
41
56
  perplexityBaseUrl,
42
57
  debug,
58
+ printSummary,
59
+ teamId,
43
60
  };
61
+ if (capturePromptsEnv !== undefined) {
62
+ config.capturePrompts = capturePromptsEnv.toLowerCase() === "true";
63
+ }
64
+ return config;
44
65
  }
45
66
  //# sourceMappingURL=loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../src/core/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE9C;;GAEG;AACH,MAAM,yBAAyB,GAAG,yBAAyB,CAAC;AAC5D,MAAM,2BAA2B,GAAG,2BAA2B,CAAC;AAEhE;;GAEG;AACH,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,UAAU,EAAE,CAAC;QACb,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,MAAM,cAAc,GAClB,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACxE,MAAM,eAAe,GACnB,OAAO,CAAC,GAAG,CAAC,0BAA0B;QACtC,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,yBAAyB,CAAC;IAC5B,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACxD,MAAM,iBAAiB,GACrB,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,2BAA2B,CAAC;IACrE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC;IAEpD,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAEnC,OAAO;QACL,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,iBAAiB;QACjB,KAAK;KACN,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../src/core/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AAE9C;;GAEG;AACH,MAAM,yBAAyB,GAAG,yBAAyB,CAAC;AAC5D,MAAM,2BAA2B,GAAG,2BAA2B,CAAC;AAEhE;;GAEG;AACH,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,UAAU,EAAE,CAAC;QACb,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,MAAM,cAAc,GAClB,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACxE,MAAM,eAAe,GACnB,OAAO,CAAC,GAAG,CAAC,0BAA0B;QACtC,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,yBAAyB,CAAC;IAC5B,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACxD,MAAM,iBAAiB,GACrB,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,2BAA2B,CAAC;IACrE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,CAAC;IAEpD,IAAI,YAAY,GAA2C,SAAS,CAAC;IACrE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC3D,IAAI,eAAe,EAAE,CAAC;QACpB,IAAI,eAAe,KAAK,MAAM,EAAE,CAAC;YAC/B,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,IAAI,eAAe,KAAK,OAAO,EAAE,CAAC;YACvC,YAAY,GAAG,KAAK,CAAC;QACvB,CAAC;aAAM,IAAI,eAAe,KAAK,OAAO,IAAI,eAAe,KAAK,MAAM,EAAE,CAAC;YACrE,YAAY,GAAG,eAAe,CAAC;QACjC,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAE/D,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,MAAM,GAAQ;QAClB,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,iBAAiB;QACjB,KAAK;QACL,YAAY;QACZ,MAAM;KACP,CAAC;IAEF,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,cAAc,GAAG,iBAAiB,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IACrE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import { loadConfigFromEnv } from "./loader.js";
7
7
  import { validateConfig } from "./validator.js";
8
+ import { setConfig as setSummaryPrinterConfig } from "../../utils/summary-printer.js";
8
9
  /**
9
10
  * Global configuration instance
10
11
  */
@@ -45,6 +46,14 @@ export function setConfig(config) {
45
46
  baseUrl: config.reveniumBaseUrl,
46
47
  hasReveniumKey: !!config.reveniumApiKey,
47
48
  hasPerplexityKey: !!config.perplexityApiKey,
49
+ printSummary: config.printSummary,
50
+ teamId: config.teamId,
51
+ });
52
+ setSummaryPrinterConfig({
53
+ reveniumApiKey: config.reveniumApiKey,
54
+ reveniumBaseUrl: config.reveniumBaseUrl,
55
+ teamId: config.teamId,
56
+ printSummary: config.printSummary,
48
57
  });
49
58
  }
50
59
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../src/core/config/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;GAEG;AACH,IAAI,YAAY,GAA0B,IAAI,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAW;IACnC,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC7C,IAAI,YAAY,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IACD,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC5C,OAAO,CAAC,IAAI,CAAC,cAAc,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC5C,OAAO,CAAC,IAAI,CAAC,sBAAsB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC7C,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;CACF,CAAC;AAEF,IAAI,YAAY,GAAW,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAsB;IAC9C,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,YAAY,GAAG,MAAM,CAAC;IACtB,YAAY,CAAC,KAAK,CAAC,gCAAgC,EAAE;QACnD,OAAO,EAAE,MAAM,CAAC,eAAe;QAC/B,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc;QACvC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB;KAC5C,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IAEtC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,YAAY,CAAC,KAAK,CAChB,iHAAiH,CAClH,CAAC;QACF,MAAM,IAAI,KAAK,CACb,iHAAiH,CAClH,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,SAAS,CAAC,CAAC;IACrB,YAAY,CAAC,KAAK,CAChB,4DAA4D,CAC7D,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../src/core/config/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,IAAI,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEtF;;GAEG;AACH,IAAI,YAAY,GAA0B,IAAI,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAW;IACnC,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC7C,IAAI,YAAY,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IACD,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC5C,OAAO,CAAC,IAAI,CAAC,cAAc,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC5C,OAAO,CAAC,IAAI,CAAC,sBAAsB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAe,EAAE,EAAE;QAC7C,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACxD,CAAC;CACF,CAAC;AAEF,IAAI,YAAY,GAAW,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAsB;IAC9C,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,YAAY,GAAG,MAAM,CAAC;IACtB,YAAY,CAAC,KAAK,CAAC,gCAAgC,EAAE;QACnD,OAAO,EAAE,MAAM,CAAC,eAAe;QAC/B,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc;QACvC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB;QAC3C,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC,CAAC;IAEH,uBAAuB,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IAEtC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,YAAY,CAAC,KAAK,CAChB,iHAAiH,CAClH,CAAC;QACF,MAAM,IAAI,KAAK,CACb,iHAAiH,CAClH,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,SAAS,CAAC,CAAC;IACrB,YAAY,CAAC,KAAK,CAChB,4DAA4D,CAC7D,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -5,6 +5,7 @@ import { getLogger } from "../config";
5
5
  import { generateTransactionId } from "../../utils/transaction-id.js";
6
6
  import { trackUsageAsync } from "../tracking/index.js";
7
7
  import { StreamingWrapper } from "./streaming-wrapper.js";
8
+ import { sanitizeCredentials } from "../../utils/prompt-extraction.js";
8
9
  const logger = getLogger();
9
10
  /**
10
11
  * Chat interface - provides access to chat completions
@@ -44,6 +45,9 @@ export class CompletionsInterface {
44
45
  if ("usage" in response && response.usage) {
45
46
  // Extract cost if available (Perplexity-specific)
46
47
  const usage = response.usage;
48
+ const responseContent = "choices" in response
49
+ ? response.choices[0]?.message?.content || undefined
50
+ : undefined;
47
51
  trackUsageAsync({
48
52
  requestId: ("id" in response ? response.id : null) || transactionId,
49
53
  model: params.model,
@@ -57,12 +61,31 @@ export class CompletionsInterface {
57
61
  usageMetadata: metadata,
58
62
  isStreamed: false,
59
63
  cost: usage.cost,
64
+ responseFormat: params.response_format,
65
+ messages: params.messages,
66
+ responseContent: responseContent
67
+ ? sanitizeCredentials(responseContent)
68
+ : undefined,
60
69
  });
61
70
  }
62
71
  return response;
63
72
  }
64
73
  catch (error) {
65
74
  logger.error(`[Revenium] Error in chat completion: ${error.message}`);
75
+ const endTime = Date.now();
76
+ const duration = endTime - startTime.getTime();
77
+ trackUsageAsync({
78
+ requestId: transactionId,
79
+ model: params.model,
80
+ promptTokens: 0,
81
+ completionTokens: 0,
82
+ totalTokens: 0,
83
+ duration,
84
+ finishReason: "error",
85
+ usageMetadata: metadata,
86
+ isStreamed: false,
87
+ messages: params.messages,
88
+ });
66
89
  throw error;
67
90
  }
68
91
  }
@@ -78,10 +101,24 @@ export class CompletionsInterface {
78
101
  ...params,
79
102
  stream: true,
80
103
  });
81
- return new StreamingWrapper(stream, params.model, startTime, transactionId, metadata, this.config);
104
+ return new StreamingWrapper(stream, params.model, startTime, transactionId, metadata, this.config, params.response_format, params.messages);
82
105
  }
83
106
  catch (error) {
84
107
  logger.error(`[Revenium] Error in streaming chat completion: ${error.message}`);
108
+ const endTime = Date.now();
109
+ const duration = endTime - startTime.getTime();
110
+ trackUsageAsync({
111
+ requestId: transactionId,
112
+ model: params.model,
113
+ promptTokens: 0,
114
+ completionTokens: 0,
115
+ totalTokens: 0,
116
+ duration,
117
+ finishReason: "error",
118
+ usageMetadata: metadata,
119
+ isStreamed: true,
120
+ messages: params.messages,
121
+ });
85
122
  throw error;
86
123
  }
87
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/core/middleware/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/core/middleware/interfaces.ts"],"names":[],"mappings":"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"}
@@ -3,18 +3,22 @@
3
3
  */
4
4
  import { getLogger } from "../config";
5
5
  import { trackUsageAsync } from "../tracking";
6
+ import { shouldCapturePrompts, getMaxPromptSize, sanitizeCredentials, } from "../../utils/prompt-extraction.js";
6
7
  const logger = getLogger();
7
8
  /**
8
9
  * Wrapper for streaming responses that tracks usage
9
10
  */
10
11
  export class StreamingWrapper {
11
- constructor(stream, model, startTime, transactionId, metadata, config) {
12
+ constructor(stream, model, startTime, transactionId, metadata, config, responseFormat, messages) {
13
+ this.accumulatedContent = "";
12
14
  this.stream = stream;
13
15
  this.model = model;
14
16
  this.startTime = startTime;
15
17
  this.transactionId = transactionId;
16
18
  this.metadata = metadata;
17
19
  this.config = config || {};
20
+ this.responseFormat = responseFormat;
21
+ this.messages = messages || [];
18
22
  }
19
23
  /**
20
24
  * Iterate over stream chunks
@@ -27,6 +31,7 @@ export class StreamingWrapper {
27
31
  let costData = undefined;
28
32
  let firstChunkTime = null;
29
33
  let timeToFirstToken = 0;
34
+ let completed = false;
30
35
  try {
31
36
  for await (const chunk of this.stream) {
32
37
  // Capture time of first chunk
@@ -36,6 +41,14 @@ export class StreamingWrapper {
36
41
  firstChunkTime.getTime() - this.startTime.getTime();
37
42
  }
38
43
  lastChunk = chunk;
44
+ if (chunk.choices?.[0]?.delta?.content &&
45
+ shouldCapturePrompts(this.metadata)) {
46
+ const maxSize = getMaxPromptSize();
47
+ const remaining = maxSize - this.accumulatedContent.length;
48
+ if (remaining > 0) {
49
+ this.accumulatedContent += chunk.choices[0].delta.content.slice(0, remaining);
50
+ }
51
+ }
39
52
  // Track usage if available in chunk
40
53
  if (chunk.usage) {
41
54
  inputTokens = chunk.usage.prompt_tokens || 0;
@@ -48,6 +61,7 @@ export class StreamingWrapper {
48
61
  }
49
62
  yield chunk;
50
63
  }
64
+ completed = true;
51
65
  // Send metering data when stream completes (fire-and-forget)
52
66
  const endTime = Date.now();
53
67
  const duration = endTime - this.startTime.getTime();
@@ -64,13 +78,64 @@ export class StreamingWrapper {
64
78
  isStreamed: true,
65
79
  timeToFirstToken,
66
80
  cost: costData,
81
+ responseFormat: this.responseFormat,
82
+ messages: this.messages,
83
+ responseContent: this.accumulatedContent
84
+ ? sanitizeCredentials(this.accumulatedContent)
85
+ : undefined,
67
86
  });
68
87
  }
69
88
  catch (error) {
70
- // Log error
89
+ completed = true;
71
90
  logger.error("[Revenium] Error in stream processing:", error.message);
91
+ const endTime = Date.now();
92
+ const duration = endTime - this.startTime.getTime();
93
+ trackUsageAsync({
94
+ requestId: this.transactionId,
95
+ model: this.model,
96
+ promptTokens: inputTokens,
97
+ completionTokens: outputTokens,
98
+ totalTokens,
99
+ duration,
100
+ finishReason: "error",
101
+ usageMetadata: this.metadata,
102
+ isStreamed: true,
103
+ messages: this.messages,
104
+ responseContent: this.accumulatedContent
105
+ ? sanitizeCredentials(this.accumulatedContent)
106
+ : undefined,
107
+ });
72
108
  throw error;
73
109
  }
110
+ finally {
111
+ if (!completed) {
112
+ const endTime = Date.now();
113
+ const duration = endTime - this.startTime.getTime();
114
+ trackUsageAsync({
115
+ requestId: this.transactionId,
116
+ model: this.model,
117
+ promptTokens: inputTokens,
118
+ completionTokens: outputTokens,
119
+ totalTokens,
120
+ duration,
121
+ finishReason: "cancelled",
122
+ usageMetadata: this.metadata,
123
+ isStreamed: true,
124
+ timeToFirstToken,
125
+ cost: costData,
126
+ responseFormat: this.responseFormat,
127
+ messages: this.messages,
128
+ responseContent: this.accumulatedContent
129
+ ? sanitizeCredentials(this.accumulatedContent)
130
+ : undefined,
131
+ });
132
+ logger.debug("[Revenium] Streaming cancelled", {
133
+ requestId: this.transactionId,
134
+ model: this.model,
135
+ duration,
136
+ });
137
+ }
138
+ }
74
139
  }
75
140
  }
76
141
  //# sourceMappingURL=streaming-wrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"streaming-wrapper.js","sourceRoot":"","sources":["../../../../src/core/middleware/streaming-wrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"streaming-wrapper.js","sourceRoot":"","sources":["../../../../src/core/middleware/streaming-wrapper.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { getConfig, getLogger } from "../config";
8
8
  import { buildReveniumUrl } from "../../utils/url-builder.js";
9
+ import { printUsageSummary } from "../../utils/summary-printer.js";
9
10
  // Global logger
10
11
  const logger = getLogger();
11
12
  /**
@@ -60,5 +61,6 @@ export async function sendToRevenium(payload) {
60
61
  operationType: payload.operationType,
61
62
  response: responseBody,
62
63
  });
64
+ printUsageSummary(payload);
63
65
  }
64
66
  //# 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;AAGH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,gBAAgB;AAChB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAE3B;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAwB;IAC3D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,CAAC,MAAM;QACT,OAAO,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAE5E,MAAM,GAAG,GAAG,gBAAgB,CAC1B,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;AACL,CAAC"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../../src/core/tracking/api-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,gBAAgB;AAChB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAE3B;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAwB;IAC3D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,CAAC,MAAM;QACT,OAAO,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAE5E,MAAM,GAAG,GAAG,gBAAgB,CAC1B,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,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}
@@ -9,6 +9,8 @@ import { getLogger } from "../config/index.js";
9
9
  import { mapStopReason } from "../../utils/stop-reason-mapper.js";
10
10
  import { buildMetadataFields } from "../../utils/metadata-builder.js";
11
11
  import { getProviderMetadata } from "../providers/index.js";
12
+ import { getEnvironment, getRegion, getCredentialAlias, getTraceType, getTraceName, getParentTransactionId, getTransactionName, getRetryNumber, detectOperationSubtype, } from "../../utils/trace-fields.js";
13
+ import { extractPrompts } from "../../utils/prompt-extraction.js";
12
14
  // Global logger
13
15
  const logger = getLogger();
14
16
  /**
@@ -26,7 +28,7 @@ const logger = getLogger();
26
28
  * @param timeToFirstToken - Time to first token in milliseconds (for streaming)
27
29
  * @returns Constructed payload for Revenium API
28
30
  */
29
- export function buildPayload(operationType, response, request, startTime, duration, providerInfo, timeToFirstToken) {
31
+ export async function buildPayload(operationType, response, request, startTime, duration, providerInfo, timeToFirstToken) {
30
32
  const now = new Date().toISOString();
31
33
  const requestTime = new Date(startTime).toISOString();
32
34
  const usage = response.usage;
@@ -40,6 +42,15 @@ export function buildPayload(operationType, response, request, startTime, durati
40
42
  : { provider: "Perplexity", modelSource: "PERPLEXITY" };
41
43
  // Build metadata fields using utility (eliminates repetitive spreading)
42
44
  const metadataFields = buildMetadataFields(request.usageMetadata);
45
+ const environment = getEnvironment();
46
+ const region = await getRegion();
47
+ const credentialAlias = getCredentialAlias();
48
+ const traceType = getTraceType();
49
+ const traceName = getTraceName();
50
+ const parentTransactionId = getParentTransactionId();
51
+ const transactionName = getTransactionName();
52
+ const retryNumber = getRetryNumber();
53
+ const operationSubtype = detectOperationSubtype(request);
43
54
  // Map Perplexity cost object to Revenium cost fields
44
55
  const costFields = usage.cost
45
56
  ? {
@@ -68,12 +79,22 @@ export function buildPayload(operationType, response, request, startTime, durati
68
79
  totalTokenCount: usage.total_tokens,
69
80
  // Metadata fields (processed by utility)
70
81
  ...metadataFields,
82
+ environment: environment || undefined,
83
+ region: region || undefined,
84
+ credentialAlias: credentialAlias || undefined,
85
+ traceType: traceType || undefined,
86
+ traceName: traceName || undefined,
87
+ parentTransactionId: parentTransactionId || undefined,
88
+ transactionName: transactionName || undefined,
89
+ retryNumber: retryNumber !== null ? retryNumber : undefined,
90
+ operationSubtype: operationSubtype || undefined,
71
91
  // Fixed middleware source identifier (spec format: revenium-{provider}-{language})
72
92
  middlewareSource: "revenium-perplexity-node",
73
93
  // Cost fields from Perplexity
74
94
  ...costFields,
75
95
  };
76
96
  // Chat-specific fields
97
+ const promptData = extractPrompts(request, response, request.usageMetadata);
77
98
  return {
78
99
  ...commonPayload,
79
100
  operationType: "CHAT",
@@ -87,6 +108,12 @@ export function buildPayload(operationType, response, request, startTime, durati
87
108
  isStreamed: Boolean(request.stream),
88
109
  // Time to first token (for streaming requests)
89
110
  timeToFirstToken: timeToFirstToken,
111
+ ...(promptData && {
112
+ systemPrompt: promptData.systemPrompt,
113
+ inputMessages: promptData.inputMessages,
114
+ outputResponse: promptData.outputResponse,
115
+ promptsTruncated: promptData.promptsTruncated,
116
+ }),
90
117
  };
91
118
  }
92
119
  //# sourceMappingURL=payload-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payload-builder.js","sourceRoot":"","sources":["../../../../src/core/tracking/payload-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payload-builder.js","sourceRoot":"","sources":["../../../../src/core/tracking/payload-builder.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ const logger = getLogger();
15
15
  */
16
16
  export async function sendReveniumMetrics(response, request, startTime, duration, providerInfo, timeToFirstToken) {
17
17
  await safeAsyncOperation(async () => {
18
- const payload = buildPayload("CHAT", response, request, startTime, duration, providerInfo, timeToFirstToken);
18
+ const payload = await buildPayload("CHAT", response, request, startTime, duration, providerInfo, timeToFirstToken);
19
19
  await sendToRevenium(payload);
20
20
  }, "Chat completion tracking", {
21
21
  logError: true,
@@ -44,19 +44,22 @@ export function trackUsageAsync(trackingData) {
44
44
  {
45
45
  index: 0,
46
46
  finish_reason: trackingData.finishReason,
47
- message: {
48
- role: "assistant",
49
- content: "",
50
- },
47
+ ...(trackingData.responseContent && {
48
+ message: {
49
+ role: "assistant",
50
+ content: trackingData.responseContent,
51
+ },
52
+ }),
51
53
  },
52
54
  ],
53
55
  };
54
56
  // Build DTO request object from tracking data
55
57
  const dtoRequest = {
56
58
  model: trackingData.model,
57
- messages: [],
59
+ messages: trackingData.messages || [],
58
60
  usageMetadata: trackingData.usageMetadata,
59
61
  stream: trackingData.isStreamed,
62
+ response_format: trackingData.responseFormat,
60
63
  };
61
64
  const startTime = Date.now() - trackingData.duration;
62
65
  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":"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"}
1
+ {"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../../../src/core/tracking/usage-tracker.ts"],"names":[],"mappings":"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"}