@revenium/perplexity 2.0.7 → 2.0.9
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 +23 -0
- package/CHANGELOG.md +99 -113
- package/LICENSE +21 -21
- package/README.md +528 -376
- package/SECURITY.md +34 -34
- package/dist/cjs/core/config/loader.js +16 -0
- 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/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 +20 -1
- package/dist/cjs/core/tracking/payload-builder.js.map +1 -1
- package/dist/cjs/core/tracking/usage-tracker.js +1 -1
- package/dist/cjs/core/tracking/usage-tracker.js.map +1 -1
- 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 +16 -0
- 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/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 +20 -1
- package/dist/esm/core/tracking/payload-builder.js.map +1 -1
- package/dist/esm/core/tracking/usage-tracker.js +1 -1
- package/dist/esm/core/tracking/usage-tracker.js.map +1 -1
- 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/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/types/index.d.ts +13 -0
- package/dist/types/types/index.d.ts.map +1 -1
- 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/README.md +274 -230
- package/examples/advanced.ts +123 -123
- package/examples/basic.ts +45 -45
- package/examples/getting_started.ts +41 -41
- package/examples/metadata.ts +68 -68
- package/examples/stream.ts +53 -53
- package/package.json +82 -72
package/SECURITY.md
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
# Security Policy
|
|
2
|
-
|
|
3
|
-
## Reporting a Vulnerability
|
|
4
|
-
|
|
5
|
-
If you discover a security vulnerability in this package, please report it to us.
|
|
6
|
-
|
|
7
|
-
**DO NOT** create a public GitHub issue for security vulnerabilities.
|
|
8
|
-
|
|
9
|
-
### How to Report
|
|
10
|
-
|
|
11
|
-
Email: support@revenium.io
|
|
12
|
-
|
|
13
|
-
Please include:
|
|
14
|
-
- Package name and version
|
|
15
|
-
- Description of the vulnerability
|
|
16
|
-
- Steps to reproduce (if applicable)
|
|
17
|
-
- Potential impact
|
|
18
|
-
- Suggested fix (if available)
|
|
19
|
-
|
|
20
|
-
We will review and respond to security reports in a timely manner.
|
|
21
|
-
|
|
22
|
-
## Security Best Practices
|
|
23
|
-
|
|
24
|
-
When using this middleware:
|
|
25
|
-
|
|
26
|
-
1. **API Keys**: Never commit API keys to version control
|
|
27
|
-
2. **Environment Variables**: Use environment variables for sensitive configuration
|
|
28
|
-
3. **PII Handling**: Ensure no PII is sent to Revenium unless explicitly configured for billing purposes
|
|
29
|
-
4. **Network Security**: Always use HTTPS connections
|
|
30
|
-
5. **Updates**: Keep the package updated to the latest version
|
|
31
|
-
|
|
32
|
-
## Additional Resources
|
|
33
|
-
|
|
34
|
-
- [Revenium Documentation](https://docs.revenium.io)
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Reporting a Vulnerability
|
|
4
|
+
|
|
5
|
+
If you discover a security vulnerability in this package, please report it to us.
|
|
6
|
+
|
|
7
|
+
**DO NOT** create a public GitHub issue for security vulnerabilities.
|
|
8
|
+
|
|
9
|
+
### How to Report
|
|
10
|
+
|
|
11
|
+
Email: support@revenium.io
|
|
12
|
+
|
|
13
|
+
Please include:
|
|
14
|
+
- Package name and version
|
|
15
|
+
- Description of the vulnerability
|
|
16
|
+
- Steps to reproduce (if applicable)
|
|
17
|
+
- Potential impact
|
|
18
|
+
- Suggested fix (if available)
|
|
19
|
+
|
|
20
|
+
We will review and respond to security reports in a timely manner.
|
|
21
|
+
|
|
22
|
+
## Security Best Practices
|
|
23
|
+
|
|
24
|
+
When using this middleware:
|
|
25
|
+
|
|
26
|
+
1. **API Keys**: Never commit API keys to version control
|
|
27
|
+
2. **Environment Variables**: Use environment variables for sensitive configuration
|
|
28
|
+
3. **PII Handling**: Ensure no PII is sent to Revenium unless explicitly configured for billing purposes
|
|
29
|
+
4. **Network Security**: Always use HTTPS connections
|
|
30
|
+
5. **Updates**: Keep the package updated to the latest version
|
|
31
|
+
|
|
32
|
+
## Additional Resources
|
|
33
|
+
|
|
34
|
+
- [Revenium Documentation](https://docs.revenium.io)
|
|
@@ -33,6 +33,20 @@ function loadConfigFromEnv() {
|
|
|
33
33
|
const perplexityApiKey = process.env.PERPLEXITY_API_KEY;
|
|
34
34
|
const perplexityBaseUrl = process.env.PERPLEXITY_API_BASE_URL || DEFAULT_PERPLEXITY_BASE_URL;
|
|
35
35
|
const debug = process.env.REVENIUM_DEBUG === "true";
|
|
36
|
+
let printSummary = undefined;
|
|
37
|
+
const printSummaryEnv = process.env.REVENIUM_PRINT_SUMMARY;
|
|
38
|
+
if (printSummaryEnv) {
|
|
39
|
+
if (printSummaryEnv === "true") {
|
|
40
|
+
printSummary = true;
|
|
41
|
+
}
|
|
42
|
+
else if (printSummaryEnv === "false") {
|
|
43
|
+
printSummary = false;
|
|
44
|
+
}
|
|
45
|
+
else if (printSummaryEnv === "human" || printSummaryEnv === "json") {
|
|
46
|
+
printSummary = printSummaryEnv;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const teamId = process.env.REVENIUM_TEAM_ID;
|
|
36
50
|
if (!reveniumApiKey)
|
|
37
51
|
return null;
|
|
38
52
|
if (!perplexityApiKey)
|
|
@@ -43,6 +57,8 @@ function loadConfigFromEnv() {
|
|
|
43
57
|
perplexityApiKey,
|
|
44
58
|
perplexityBaseUrl,
|
|
45
59
|
debug,
|
|
60
|
+
printSummary,
|
|
61
|
+
teamId,
|
|
46
62
|
};
|
|
47
63
|
}
|
|
48
64
|
//# sourceMappingURL=loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../src/core/config/loader.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAoBH,
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../../src/core/config/loader.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAoBH,8CA2CC;AA5DD,mCAA8C;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,SAAgB,iBAAiB;IAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,IAAA,eAAU,GAAE,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;IAE5C,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;QACL,YAAY;QACZ,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -12,6 +12,7 @@ exports.getLogger = getLogger;
|
|
|
12
12
|
exports.initializeConfig = initializeConfig;
|
|
13
13
|
const loader_js_1 = require("./loader.js");
|
|
14
14
|
const validator_js_1 = require("./validator.js");
|
|
15
|
+
const summary_printer_js_1 = require("../../utils/summary-printer.js");
|
|
15
16
|
/**
|
|
16
17
|
* Global configuration instance
|
|
17
18
|
*/
|
|
@@ -52,6 +53,14 @@ function setConfig(config) {
|
|
|
52
53
|
baseUrl: config.reveniumBaseUrl,
|
|
53
54
|
hasReveniumKey: !!config.reveniumApiKey,
|
|
54
55
|
hasPerplexityKey: !!config.perplexityApiKey,
|
|
56
|
+
printSummary: config.printSummary,
|
|
57
|
+
teamId: config.teamId,
|
|
58
|
+
});
|
|
59
|
+
(0, summary_printer_js_1.setConfig)({
|
|
60
|
+
reveniumApiKey: config.reveniumApiKey,
|
|
61
|
+
reveniumBaseUrl: config.reveniumBaseUrl,
|
|
62
|
+
teamId: config.teamId,
|
|
63
|
+
printSummary: config.printSummary,
|
|
55
64
|
});
|
|
56
65
|
}
|
|
57
66
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../src/core/config/manager.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../src/core/config/manager.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAqCH,8BAEC;AAKD,8BAiBC;AAKD,8BAEC;AAKD,4CAkBC;AAxFD,2CAAgD;AAChD,iDAAgD;AAChD,uEAAsF;AAEtF;;GAEG;AACH,IAAI,YAAY,GAA0B,IAAI,CAAC;AAE/C;;GAEG;AACU,QAAA,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,qBAAa,CAAC;AAEzC;;GAEG;AACH,SAAgB,SAAS;IACvB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,MAAsB;IAC9C,IAAA,6BAAc,EAAC,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,IAAA,8BAAuB,EAAC;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,SAAgB,SAAS;IACvB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB;IAC9B,MAAM,SAAS,GAAG,IAAA,6BAAiB,GAAE,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"}
|
|
@@ -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,7 @@ 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");
|
|
15
16
|
// Global logger
|
|
16
17
|
const logger = (0, index_js_1.getLogger)();
|
|
17
18
|
/**
|
|
@@ -29,7 +30,7 @@ const logger = (0, index_js_1.getLogger)();
|
|
|
29
30
|
* @param timeToFirstToken - Time to first token in milliseconds (for streaming)
|
|
30
31
|
* @returns Constructed payload for Revenium API
|
|
31
32
|
*/
|
|
32
|
-
function buildPayload(operationType, response, request, startTime, duration, providerInfo, timeToFirstToken) {
|
|
33
|
+
async function buildPayload(operationType, response, request, startTime, duration, providerInfo, timeToFirstToken) {
|
|
33
34
|
const now = new Date().toISOString();
|
|
34
35
|
const requestTime = new Date(startTime).toISOString();
|
|
35
36
|
const usage = response.usage;
|
|
@@ -43,6 +44,15 @@ function buildPayload(operationType, response, request, startTime, duration, pro
|
|
|
43
44
|
: { provider: "Perplexity", modelSource: "PERPLEXITY" };
|
|
44
45
|
// Build metadata fields using utility (eliminates repetitive spreading)
|
|
45
46
|
const metadataFields = (0, metadata_builder_js_1.buildMetadataFields)(request.usageMetadata);
|
|
47
|
+
const environment = (0, trace_fields_js_1.getEnvironment)();
|
|
48
|
+
const region = await (0, trace_fields_js_1.getRegion)();
|
|
49
|
+
const credentialAlias = (0, trace_fields_js_1.getCredentialAlias)();
|
|
50
|
+
const traceType = (0, trace_fields_js_1.getTraceType)();
|
|
51
|
+
const traceName = (0, trace_fields_js_1.getTraceName)();
|
|
52
|
+
const parentTransactionId = (0, trace_fields_js_1.getParentTransactionId)();
|
|
53
|
+
const transactionName = (0, trace_fields_js_1.getTransactionName)();
|
|
54
|
+
const retryNumber = (0, trace_fields_js_1.getRetryNumber)();
|
|
55
|
+
const operationSubtype = (0, trace_fields_js_1.detectOperationSubtype)(request);
|
|
46
56
|
// Map Perplexity cost object to Revenium cost fields
|
|
47
57
|
const costFields = usage.cost
|
|
48
58
|
? {
|
|
@@ -71,6 +81,15 @@ function buildPayload(operationType, response, request, startTime, duration, pro
|
|
|
71
81
|
totalTokenCount: usage.total_tokens,
|
|
72
82
|
// Metadata fields (processed by utility)
|
|
73
83
|
...metadataFields,
|
|
84
|
+
environment: environment || undefined,
|
|
85
|
+
region: region || undefined,
|
|
86
|
+
credentialAlias: credentialAlias || undefined,
|
|
87
|
+
traceType: traceType || undefined,
|
|
88
|
+
traceName: traceName || undefined,
|
|
89
|
+
parentTransactionId: parentTransactionId || undefined,
|
|
90
|
+
transactionName: transactionName || undefined,
|
|
91
|
+
retryNumber: retryNumber !== null ? retryNumber : undefined,
|
|
92
|
+
operationSubtype: operationSubtype || undefined,
|
|
74
93
|
// Fixed middleware source identifier (spec format: revenium-{provider}-{language})
|
|
75
94
|
middlewareSource: "revenium-perplexity-node",
|
|
76
95
|
// Cost fields from Perplexity
|
|
@@ -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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"}
|
|
@@ -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,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../../../src/core/tracking/usage-tracker.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAoBH,kDA6BC;AAMD,0CAuEC;AArHD,iDAA+C;AAC/C,mDAAiD;AACjD,6DAAoD;AACpD,mEAAkE;AAElE,gBAAgB;AAChB,MAAM,MAAM,GAAG,IAAA,oBAAS,GAAE,CAAC;AAE3B;;GAEG;AACI,KAAK,UAAU,mBAAmB,CACvC,QAA4B,EAC5B,OAA8B,EAC9B,SAAiB,EACjB,QAAgB,EAChB,YAA2B,EAC3B,gBAAyB;IAEzB,MAAM,IAAA,qCAAkB,EACtB,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,IAAA,iCAAY,
|
|
1
|
+
{"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../../../src/core/tracking/usage-tracker.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAoBH,kDA6BC;AAMD,0CAuEC;AArHD,iDAA+C;AAC/C,mDAAiD;AACjD,6DAAoD;AACpD,mEAAkE;AAElE,gBAAgB;AAChB,MAAM,MAAM,GAAG,IAAA,oBAAS,GAAE,CAAC;AAE3B;;GAEG;AACI,KAAK,UAAU,mBAAmB,CACvC,QAA4B,EAC5B,OAA8B,EAC9B,SAAiB,EACjB,QAAgB,EAChB,YAA2B,EAC3B,gBAAyB;IAEzB,MAAM,IAAA,qCAAkB,EACtB,KAAK,IAAI,EAAE;QACT,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAY,EAChC,MAAM,EACN,QAAQ,EACR,OAAO,EACP,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,gBAAgB,CACjB,CAAC;QACF,MAAM,IAAA,8BAAc,EAAC,OAAO,CAAC,CAAC;IAChC,CAAC,EACD,0BAA0B,EAC1B;QACE,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,KAAK,EAAE,qDAAqD;QACrE,aAAa,EAAE,mCAAmC;KACnD,EACD,MAAM,CACP,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,YAa/B;IACC,+CAA+C;IAC/C,MAAM,WAAW,GAAuB;QACtC,EAAE,EAAE,YAAY,CAAC,SAAS;QAC1B,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,MAAM,EAAE,iBAAiB;QACzB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACtC,KAAK,EAAE;YACL,aAAa,EAAE,YAAY,CAAC,YAAY;YACxC,iBAAiB,EAAE,YAAY,CAAC,gBAAgB;YAChD,YAAY,EAAE,YAAY,CAAC,WAAW;YACtC,IAAI,EAAE,YAAY,CAAC,IAAI;SACxB;QACD,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,CAAC;gBACR,aAAa,EAAE,YAAY,CAAC,YAAY;gBACxC,OAAO,EAAE;oBACP,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,EAAE;iBACZ;aACF;SACF;KACF,CAAC;IAEF,8CAA8C;IAC9C,MAAM,UAAU,GAA0B;QACxC,KAAK,EAAE,YAAY,CAAC,KAAK;QACzB,QAAQ,EAAE,EAAE;QACZ,aAAa,EAAE,YAAY,CAAC,aAAa;QACzC,MAAM,EAAE,YAAY,CAAC,UAAU;KAChC,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC;IAErD,mBAAmB,CACjB,WAAW,EACX,UAAU,EACV,SAAS,EACT,YAAY,CAAC,QAAQ,EACrB,YAAY,CAAC,YAAY,EACzB,YAAY,CAAC,gBAAgB,CAC9B;SACE,IAAI,CAAC,GAAG,EAAE;QACT,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE;YACpD,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,WAAW,EAAE,YAAY,CAAC,WAAW;YACrC,UAAU,EAAE,YAAY,CAAC,UAAU;SACpC,CAAC,CAAC;IACL,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACnC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7D,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,KAAK,EAAE,YAAY,CAAC,KAAK;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -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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"}
|
|
@@ -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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"}
|