@revenium/perplexity 2.1.0 → 2.1.2

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 (62) hide show
  1. package/.env.example +1 -1
  2. package/CHANGELOG.md +38 -15
  3. package/README.md +88 -37
  4. package/dist/cjs/core/middleware/interfaces.js.map +1 -1
  5. package/dist/cjs/core/tracking/payload-builder.js +20 -0
  6. package/dist/cjs/core/tracking/payload-builder.js.map +1 -1
  7. package/dist/cjs/core/tracking/tool-api-client.js +62 -0
  8. package/dist/cjs/core/tracking/tool-api-client.js.map +1 -0
  9. package/dist/cjs/core/tracking/tool-context.js +23 -0
  10. package/dist/cjs/core/tracking/tool-context.js.map +1 -0
  11. package/dist/cjs/core/tracking/tool-tracker.js +122 -0
  12. package/dist/cjs/core/tracking/tool-tracker.js.map +1 -0
  13. package/dist/cjs/index.js +12 -1
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/types/index.js +1 -0
  16. package/dist/cjs/types/index.js.map +1 -1
  17. package/dist/cjs/types/tool-metering.js +3 -0
  18. package/dist/cjs/types/tool-metering.js.map +1 -0
  19. package/dist/cjs/utils/metadata-builder.js +36 -19
  20. package/dist/cjs/utils/metadata-builder.js.map +1 -1
  21. package/dist/esm/core/middleware/interfaces.js.map +1 -1
  22. package/dist/esm/core/tracking/payload-builder.js +20 -0
  23. package/dist/esm/core/tracking/payload-builder.js.map +1 -1
  24. package/dist/esm/core/tracking/tool-api-client.js +59 -0
  25. package/dist/esm/core/tracking/tool-api-client.js.map +1 -0
  26. package/dist/esm/core/tracking/tool-context.js +17 -0
  27. package/dist/esm/core/tracking/tool-context.js.map +1 -0
  28. package/dist/esm/core/tracking/tool-tracker.js +118 -0
  29. package/dist/esm/core/tracking/tool-tracker.js.map +1 -0
  30. package/dist/esm/index.js +5 -0
  31. package/dist/esm/index.js.map +1 -1
  32. package/dist/esm/types/index.js +1 -0
  33. package/dist/esm/types/index.js.map +1 -1
  34. package/dist/esm/types/tool-metering.js +2 -0
  35. package/dist/esm/types/tool-metering.js.map +1 -0
  36. package/dist/esm/utils/metadata-builder.js +36 -19
  37. package/dist/esm/utils/metadata-builder.js.map +1 -1
  38. package/dist/types/core/middleware/interfaces.d.ts.map +1 -1
  39. package/dist/types/core/tracking/payload-builder.d.ts.map +1 -1
  40. package/dist/types/core/tracking/tool-api-client.d.ts +3 -0
  41. package/dist/types/core/tracking/tool-api-client.d.ts.map +1 -0
  42. package/dist/types/core/tracking/tool-context.d.ts +6 -0
  43. package/dist/types/core/tracking/tool-context.d.ts.map +1 -0
  44. package/dist/types/core/tracking/tool-tracker.d.ts +4 -0
  45. package/dist/types/core/tracking/tool-tracker.d.ts.map +1 -0
  46. package/dist/types/index.d.ts +9 -0
  47. package/dist/types/index.d.ts.map +1 -1
  48. package/dist/types/types/function-parameters.d.ts +1 -1
  49. package/dist/types/types/function-parameters.d.ts.map +1 -1
  50. package/dist/types/types/index.d.ts +15 -4
  51. package/dist/types/types/index.d.ts.map +1 -1
  52. package/dist/types/types/tool-metering.d.ts +47 -0
  53. package/dist/types/types/tool-metering.d.ts.map +1 -0
  54. package/dist/types/utils/metadata-builder.d.ts +3 -2
  55. package/dist/types/utils/metadata-builder.d.ts.map +1 -1
  56. package/examples/advanced.ts +5 -5
  57. package/examples/basic.ts +3 -3
  58. package/examples/getting_started.ts +3 -3
  59. package/examples/metadata.ts +3 -3
  60. package/examples/prompt-capture.ts +8 -8
  61. package/examples/stream.ts +3 -3
  62. package/package.json +11 -4
package/.env.example CHANGED
@@ -24,4 +24,4 @@ REVENIUM_DEBUG=false
24
24
  # REVENIUM_MAX_PROMPT_SIZE=50000
25
25
 
26
26
  # AWS Region Detection (Optional - auto-detected if not set)
27
- AWS_REGION=us-east-1
27
+ AWS_REGION=us-east-1
package/CHANGELOG.md CHANGED
@@ -5,30 +5,49 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [2.1.0] - 2026-01-21
8
+ ## [Unreleased]
9
+
10
+ ## [2.1.2] - 2026-02-19
11
+
12
+ ### Added
13
+
14
+ - Tool metering support (meterTool, reportToolCall, setToolContext)
15
+ - outputFields feature for automatic result extraction
16
+ - Fetch timeout to sendToolEvent
17
+
18
+ ### Fixed
19
+
20
+ - Remove dead response.text() in sendToolEvent
21
+
22
+ ## [2.1.1] - 2026-02-06
9
23
 
10
24
  ### Added
11
25
 
12
- - Prompt capture functionality with automatic credential sanitization
13
- - New prompt capture fields in ReveniumPayload: systemPrompt, inputMessages, outputResponse, promptsTruncated
14
- - Configuration options: capturePrompts (boolean), maxPromptSize (number, default: 50000)
15
- - Environment variables: REVENIUM_CAPTURE_PROMPTS, REVENIUM_MAX_PROMPT_SIZE
16
- - Per-call override via usageMetadata.capturePrompts
17
- - Comprehensive credential sanitization with 13 patterns:
18
- - Perplexity API keys (pplx-\*)
19
- - OpenAI keys (sk-_, sk-proj-_, sk-ant-\*)
26
+ - Summary printer with human and JSON output formats
27
+ - Region detection from AWS, Azure, GCP environment variables
28
+ - Credential alias configuration support
29
+ - Trace name and trace type validation
30
+ - Retry number tracking
31
+
32
+ ## [2.1.0] - 2026-01-21
33
+
34
+ ### Changed
35
+
36
+ - Updated credential sanitization patterns from 8 to 13 patterns
37
+ - Enhanced security with additional credential types:
38
+ - Anthropic API keys (sk-ant-\*)
20
39
  - AWS access keys (AKIA\*)
21
40
  - GitHub tokens (ghp*\*, ghs*\*)
22
41
  - JWT tokens (eyJ*.eyJ*.\*)
23
- - Bearer tokens
24
- - Generic API keys, tokens, passwords, secrets
25
- - Automatic truncation of prompts exceeding maxPromptSize with truncation flag
42
+ - Generic secrets pattern
43
+ - Improved regex patterns for better credential detection
44
+ - Fixed password regex to properly handle quoted values
45
+ - Consistent character class patterns across all credential types
26
46
 
27
47
  ### Security
28
48
 
29
- - All captured prompts are automatically sanitized to remove sensitive credentials
30
- - Credential patterns are redacted before transmission to Revenium API
31
- - Prompt capture is opt-in (disabled by default) for privacy
49
+ - Enhanced credential sanitization to cover more API key formats
50
+ - Improved detection of sensitive data in prompts and responses
32
51
 
33
52
  ## [2.0.9] - 2026-01-06
34
53
 
@@ -115,6 +134,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
115
134
  - Background processing for non-blocking tracking
116
135
  - Debug logging support
117
136
 
137
+ [2.1.2]: https://github.com/revenium/revenium-middleware-perplexity-node/releases/tag/v2.1.2
138
+ [2.1.1]: https://github.com/revenium/revenium-middleware-perplexity-node/releases/tag/v2.1.1
139
+ [2.1.0]: https://github.com/revenium/revenium-middleware-perplexity-node/releases/tag/v2.1.0
140
+ [2.0.9]: https://github.com/revenium/revenium-middleware-perplexity-node/releases/tag/v2.0.9
118
141
  [2.0.8]: https://github.com/revenium/revenium-middleware-perplexity-node/releases/tag/v2.0.8
119
142
  [2.0.4]: https://github.com/revenium/revenium-middleware-perplexity-node/releases/tag/v2.0.4
120
143
  [2.0.3]: https://github.com/revenium/revenium-middleware-perplexity-node/releases/tag/v2.0.3
package/README.md CHANGED
@@ -204,43 +204,43 @@ The middleware automatically captures comprehensive usage data:
204
204
 
205
205
  The following table shows all fields this middleware sends to the Revenium API:
206
206
 
207
- | Field | Type | Required | Description |
208
- | ----------------------- | ------- | --------- | -------------------------------------------------- |
209
- | **Core Fields** | | | |
210
- | `model` | string | Yes | Perplexity model name (e.g., "sonar-pro") |
211
- | `provider` | string | Yes | Always "Perplexity" |
212
- | `inputTokenCount` | integer | Yes | Number of input tokens consumed |
213
- | `outputTokenCount` | integer | Yes | Number of output tokens generated |
214
- | `totalTokenCount` | integer | Yes | Total tokens (input + output) |
215
- | `requestDuration` | integer | Yes | Request duration in milliseconds |
216
- | **Timing** | | | |
217
- | `requestTime` | string | Auto | ISO 8601 timestamp when request started |
218
- | `responseTime` | string | Auto | ISO 8601 timestamp when response completed |
219
- | `completionStartTime` | string | Auto | ISO 8601 timestamp when completion started |
220
- | `timeToFirstToken` | integer | Streaming | Time to first token in ms (streaming only) |
221
- | **Request Details** | | | |
222
- | `transactionId` | string | Auto | Unique transaction identifier |
223
- | `operationType` | string | Auto | Always "CHAT" for chat completions |
224
- | `stopReason` | string | Auto | Completion finish reason ("END", "STOP", etc.) |
225
- | `isStreamed` | boolean | Auto | Whether response was streamed |
226
- | `costType` | string | Auto | Always "AI" |
227
- | `modelSource` | string | Auto | Always "PERPLEXITY" |
228
- | `middlewareSource` | string | Auto | Always "revenium-perplexity-node" |
229
- | **Cost Information** | | | |
230
- | `inputTokenCost` | number | Optional | Cost for input tokens (if provided by Perplexity) |
231
- | `outputTokenCost` | number | Optional | Cost for output tokens (if provided by Perplexity) |
232
- | `totalCost` | number | Optional | Total cost (if provided by Perplexity) |
233
- | **Business Context** | | | |
234
- | `organizationId` | string | Optional | Your organization identifier |
235
- | `productId` | string | Optional | Your product identifier |
236
- | `subscriptionId` | string | Optional | Your subscription identifier |
237
- | `taskType` | string | Optional | Type of AI task (e.g., "chat", "research") |
238
- | `traceId` | string | Optional | Session or conversation tracking ID |
239
- | `agent` | string | Optional | AI agent or bot identifier |
240
- | `responseQualityScore` | number | Optional | Custom quality rating (0.0-1.0) |
241
- | `subscriber.id` | string | Optional | User identifier |
242
- | `subscriber.email` | string | Optional | User email address |
243
- | `subscriber.credential` | object | Optional | Authentication credential (name, value) |
207
+ | Field | Type | Required | Description |
208
+ | ----------------------- | ------- | --------- | -------------------------------------------------------- |
209
+ | **Core Fields** | | | |
210
+ | `model` | string | Yes | Perplexity model name (e.g., "sonar-pro") |
211
+ | `provider` | string | Yes | Always "Perplexity" |
212
+ | `inputTokenCount` | integer | Yes | Number of input tokens consumed |
213
+ | `outputTokenCount` | integer | Yes | Number of output tokens generated |
214
+ | `totalTokenCount` | integer | Yes | Total tokens (input + output) |
215
+ | `requestDuration` | integer | Yes | Request duration in milliseconds |
216
+ | **Timing** | | | |
217
+ | `requestTime` | string | Auto | ISO 8601 timestamp when request started |
218
+ | `responseTime` | string | Auto | ISO 8601 timestamp when response completed |
219
+ | `completionStartTime` | string | Auto | ISO 8601 timestamp when completion started |
220
+ | `timeToFirstToken` | integer | Streaming | Time to first token in ms (streaming only) |
221
+ | **Request Details** | | | |
222
+ | `transactionId` | string | Auto | Unique transaction identifier |
223
+ | `operationType` | string | Auto | Always "CHAT" for chat completions |
224
+ | `stopReason` | string | Auto | Completion finish reason ("END", "STOP", etc.) |
225
+ | `isStreamed` | boolean | Auto | Whether response was streamed |
226
+ | `costType` | string | Auto | Always "AI" |
227
+ | `modelSource` | string | Auto | Always "PERPLEXITY" |
228
+ | `middlewareSource` | string | Auto | Always "revenium-perplexity-node" |
229
+ | **Cost Information** | | | |
230
+ | `inputTokenCost` | number | Optional | Cost for input tokens (if provided by Perplexity) |
231
+ | `outputTokenCost` | number | Optional | Cost for output tokens (if provided by Perplexity) |
232
+ | `totalCost` | number | Optional | Total cost (if provided by Perplexity) |
233
+ | **Business Context** | | | |
234
+ | `organizationName` | string | Optional | Customer organization name for multi-tenant applications |
235
+ | `productName` | string | Optional | Product or feature name that is using AI services |
236
+ | `subscriptionId` | string | Optional | Your subscription identifier |
237
+ | `taskType` | string | Optional | Type of AI task (e.g., "chat", "research") |
238
+ | `traceId` | string | Optional | Session or conversation tracking ID |
239
+ | `agent` | string | Optional | AI agent or bot identifier |
240
+ | `responseQualityScore` | number | Optional | Custom quality rating (0.0-1.0) |
241
+ | `subscriber.id` | string | Optional | User identifier |
242
+ | `subscriber.email` | string | Optional | User email address |
243
+ | `subscriber.credential` | object | Optional | Authentication credential (name, value) |
244
244
 
245
245
  **Notes:**
246
246
 
@@ -443,6 +443,57 @@ Initialize({
443
443
 
444
444
  **For complete API documentation and usage examples, see [`examples/README.md`](https://github.com/revenium/revenium-middleware-perplexity-node/blob/HEAD/examples/README.md).**
445
445
 
446
+ ## Tool Metering
447
+
448
+ Track execution of custom tools and external API calls with automatic timing, error handling, and metadata collection.
449
+
450
+ ### Quick Example
451
+
452
+ ```typescript
453
+ import { meterTool, setToolContext } from "@revenium/perplexity";
454
+
455
+ // Set context once (propagates to all tool calls)
456
+ setToolContext({
457
+ agent: "my-agent",
458
+ traceId: "session-123"
459
+ });
460
+
461
+ // Wrap tool execution
462
+ const result = await meterTool("weather-api", async () => {
463
+ return await fetch("https://api.example.com/weather");
464
+ }, {
465
+ operation: "get_forecast",
466
+ outputFields: ["temperature", "humidity"]
467
+ });
468
+ // Automatically extracts temperature & humidity from result
469
+ ```
470
+
471
+ ### Functions
472
+
473
+ **meterTool(toolId, fn, metadata?)**
474
+ - Wraps a function with automatic metering
475
+ - Captures duration, success/failure, and errors
476
+ - Returns function result unchanged
477
+
478
+ **reportToolCall(toolId, report)**
479
+ - Manually report a tool call that was already executed
480
+ - Useful when wrapping isn't possible
481
+
482
+ **Context Management**
483
+ - `setToolContext(ctx)` - Set context for all subsequent tool calls
484
+ - `getToolContext()` - Get current context
485
+ - `clearToolContext()` - Clear context
486
+ - `runWithToolContext(ctx, fn)` - Run function with scoped context
487
+
488
+ ### Metadata Options
489
+
490
+ | Field | Description |
491
+ |-------|-------------|
492
+ | `operation` | Tool operation name (e.g., "search", "scrape") |
493
+ | `outputFields` | Array of field names to auto-extract from result |
494
+ | `usageMetadata` | Custom metrics (e.g., tokens, results count) |
495
+ | `agent`, `traceId`, etc. | Context fields (inherited from setToolContext) |
496
+
446
497
  ## Configuration Options
447
498
 
448
499
  ### Environment Variables
@@ -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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"}
@@ -97,6 +97,25 @@ async function buildPayload(operationType, response, request, startTime, duratio
97
97
  ...costFields,
98
98
  };
99
99
  // Chat-specific fields
100
+ const attributes = {};
101
+ if (request.response_format) {
102
+ if (typeof request.response_format === "object" &&
103
+ request.response_format !== null) {
104
+ const formatType = request.response_format.type;
105
+ if (formatType) {
106
+ attributes.response_format_type = formatType;
107
+ if (formatType === "json_schema") {
108
+ const schemaName = request.response_format.json_schema?.name;
109
+ if (schemaName) {
110
+ attributes.response_format_schema_name = schemaName;
111
+ }
112
+ }
113
+ }
114
+ }
115
+ else {
116
+ attributes.response_format = request.response_format;
117
+ }
118
+ }
100
119
  const promptData = (0, prompt_extraction_js_1.extractPrompts)(request, response, request.usageMetadata);
101
120
  return {
102
121
  ...commonPayload,
@@ -111,6 +130,7 @@ async function buildPayload(operationType, response, request, startTime, duratio
111
130
  isStreamed: Boolean(request.stream),
112
131
  // Time to first token (for streaming requests)
113
132
  timeToFirstToken: timeToFirstToken,
133
+ ...(Object.keys(attributes).length > 0 && { attributes }),
114
134
  ...(promptData && {
115
135
  systemPrompt: promptData.systemPrompt,
116
136
  inputMessages: promptData.inputMessages,
@@ -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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"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendToolEvent = sendToolEvent;
4
+ const index_js_1 = require("../config/index.js");
5
+ const url_builder_js_1 = require("../../utils/url-builder.js");
6
+ const DEFAULT_REVENIUM_BASE_URL = "https://api.revenium.ai";
7
+ const TOOL_EVENTS_ENDPOINT = "/tool/events";
8
+ async function sendToolEvent(payload) {
9
+ const config = (0, index_js_1.getConfig)();
10
+ const logger = (0, index_js_1.getLogger)();
11
+ if (!config) {
12
+ logger.warn("Revenium configuration not found, skipping tool event tracking");
13
+ return;
14
+ }
15
+ if (!config.reveniumApiKey) {
16
+ logger.warn("Revenium API key not configured, skipping tool event tracking");
17
+ return;
18
+ }
19
+ const url = (0, url_builder_js_1.buildReveniumUrl)(config.reveniumBaseUrl || DEFAULT_REVENIUM_BASE_URL, TOOL_EVENTS_ENDPOINT);
20
+ logger.debug("Sending tool event to Revenium", {
21
+ url,
22
+ toolId: payload.toolId,
23
+ transactionId: payload.transactionId,
24
+ operation: payload.operation,
25
+ durationMs: payload.durationMs,
26
+ success: payload.success,
27
+ });
28
+ const controller = new AbortController();
29
+ const timeoutId = setTimeout(() => controller.abort(), 10000);
30
+ const response = await fetch(url, {
31
+ method: "POST",
32
+ headers: {
33
+ "Content-Type": "application/json",
34
+ Accept: "application/json",
35
+ "x-api-key": config.reveniumApiKey,
36
+ },
37
+ body: JSON.stringify(payload),
38
+ signal: controller.signal,
39
+ }).finally(() => clearTimeout(timeoutId));
40
+ logger.debug("Tool event response", {
41
+ status: response.status,
42
+ statusText: response.statusText,
43
+ transactionId: payload.transactionId,
44
+ toolId: payload.toolId,
45
+ });
46
+ if (!response.ok) {
47
+ const responseText = await response.text();
48
+ logger.error("Tool event API error", {
49
+ status: response.status,
50
+ statusText: response.statusText,
51
+ body: responseText,
52
+ transactionId: payload.transactionId,
53
+ toolId: payload.toolId,
54
+ });
55
+ throw new Error(`Revenium tool event API error: ${response.status} ${response.statusText}`);
56
+ }
57
+ logger.debug("Tool event sent successfully", {
58
+ transactionId: payload.transactionId,
59
+ toolId: payload.toolId,
60
+ });
61
+ }
62
+ //# sourceMappingURL=tool-api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-api-client.js","sourceRoot":"","sources":["../../../../src/core/tracking/tool-api-client.ts"],"names":[],"mappings":";;AAOA,sCAiEC;AAvED,iDAA0D;AAC1D,+DAA8D;AAE9D,MAAM,yBAAyB,GAAG,yBAAyB,CAAC;AAC5D,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAErC,KAAK,UAAU,aAAa,CAAC,OAAyB;IAC3D,MAAM,MAAM,GAAG,IAAA,oBAAS,GAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAA,oBAAS,GAAE,CAAC;IAE3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAC9E,OAAO;IACT,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAC7E,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,IAAA,iCAAgB,EAC1B,MAAM,CAAC,eAAe,IAAI,yBAAyB,EACnD,oBAAoB,CACrB,CAAC;IAEF,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;QAC7C,GAAG;QACH,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAM,CAAC,CAAC;IAE/D,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;QAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IAE1C,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;QAClC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,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,sBAAsB,EAAE;YACnC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,IAAI,EAAE,YAAY;YAClB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;QAC3C,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setToolContext = setToolContext;
4
+ exports.getToolContext = getToolContext;
5
+ exports.clearToolContext = clearToolContext;
6
+ exports.runWithToolContext = runWithToolContext;
7
+ const async_hooks_1 = require("async_hooks");
8
+ const contextStorage = new async_hooks_1.AsyncLocalStorage();
9
+ function setToolContext(ctx) {
10
+ const current = contextStorage.getStore() ?? {};
11
+ contextStorage.enterWith({ ...current, ...ctx });
12
+ }
13
+ function getToolContext() {
14
+ return contextStorage.getStore() ?? {};
15
+ }
16
+ function clearToolContext() {
17
+ contextStorage.enterWith({});
18
+ }
19
+ function runWithToolContext(ctx, fn) {
20
+ const merged = { ...getToolContext(), ...ctx };
21
+ return contextStorage.run(merged, fn);
22
+ }
23
+ //# sourceMappingURL=tool-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-context.js","sourceRoot":"","sources":["../../../../src/core/tracking/tool-context.ts"],"names":[],"mappings":";;AAKA,wCAGC;AAED,wCAEC;AAED,4CAEC;AAED,gDAMC;AAxBD,6CAAgD;AAGhD,MAAM,cAAc,GAAG,IAAI,+BAAiB,EAAe,CAAC;AAE5D,SAAgB,cAAc,CAAC,GAAgB;IAC7C,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IAChD,cAAc,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAgB,cAAc;IAC5B,OAAO,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,SAAgB,gBAAgB;IAC9B,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,SAAgB,kBAAkB,CAChC,GAAgB,EAChB,EAAwB;IAExB,MAAM,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,EAAE,GAAG,GAAG,EAAE,CAAC;IAC/C,OAAO,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.meterTool = meterTool;
4
+ exports.reportToolCall = reportToolCall;
5
+ const crypto_1 = require("crypto");
6
+ const tool_context_js_1 = require("./tool-context.js");
7
+ const tool_api_client_js_1 = require("./tool-api-client.js");
8
+ const index_js_1 = require("../config/index.js");
9
+ const MIDDLEWARE_SOURCE = "revenium-perplexity-node";
10
+ function isPromise(value) {
11
+ return value !== null && typeof value === "object" && typeof value.then === "function";
12
+ }
13
+ function extractOutputFields(result, fields) {
14
+ if (typeof result !== "object" || result === null) {
15
+ return {};
16
+ }
17
+ const extracted = {};
18
+ for (const field of fields) {
19
+ if (field in result) {
20
+ extracted[field] = result[field];
21
+ }
22
+ }
23
+ return extracted;
24
+ }
25
+ function buildToolEventPayload(toolId, durationMs, success, metadata, errorMessage) {
26
+ const context = (0, tool_context_js_1.getToolContext)();
27
+ const transactionId = metadata?.transactionId ?? context.transactionId ?? (0, crypto_1.randomUUID)();
28
+ return {
29
+ transactionId,
30
+ toolId,
31
+ operation: metadata?.operation,
32
+ durationMs,
33
+ success,
34
+ timestamp: new Date().toISOString(),
35
+ errorMessage,
36
+ usageMetadata: metadata?.usageMetadata,
37
+ agent: metadata?.agent ?? context.agent,
38
+ organizationName: metadata?.organizationName ?? context.organizationName,
39
+ productName: metadata?.productName ?? context.productName,
40
+ subscriberCredential: metadata?.subscriberCredential ?? context.subscriberCredential,
41
+ workflowId: metadata?.workflowId ?? context.workflowId,
42
+ traceId: metadata?.traceId ?? context.traceId,
43
+ middlewareSource: MIDDLEWARE_SOURCE,
44
+ };
45
+ }
46
+ function dispatchToolEvent(payload) {
47
+ const logger = (0, index_js_1.getLogger)();
48
+ (0, tool_api_client_js_1.sendToolEvent)(payload)
49
+ .then(() => {
50
+ logger.debug("Tool event sent successfully", {
51
+ transactionId: payload.transactionId,
52
+ toolId: payload.toolId,
53
+ });
54
+ })
55
+ .catch((error) => {
56
+ logger.warn("Failed to send tool event", {
57
+ transactionId: payload.transactionId,
58
+ toolId: payload.toolId,
59
+ error: error instanceof Error ? error.message : String(error),
60
+ });
61
+ });
62
+ }
63
+ function meterTool(toolId, fn, metadata) {
64
+ const startTime = performance.now();
65
+ const handleSuccess = (result) => {
66
+ const durationMs = Math.round(performance.now() - startTime);
67
+ let finalMetadata = metadata;
68
+ if (metadata?.outputFields && metadata.outputFields.length > 0) {
69
+ const extracted = extractOutputFields(result, metadata.outputFields);
70
+ finalMetadata = {
71
+ ...metadata,
72
+ usageMetadata: {
73
+ ...metadata.usageMetadata,
74
+ ...extracted,
75
+ },
76
+ };
77
+ }
78
+ const payload = buildToolEventPayload(toolId, durationMs, true, finalMetadata);
79
+ dispatchToolEvent(payload);
80
+ return result;
81
+ };
82
+ const handleError = (error) => {
83
+ const durationMs = Math.round(performance.now() - startTime);
84
+ const errorMessage = error instanceof Error ? error.message : String(error);
85
+ const payload = buildToolEventPayload(toolId, durationMs, false, metadata, errorMessage);
86
+ dispatchToolEvent(payload);
87
+ throw error;
88
+ };
89
+ try {
90
+ const result = fn();
91
+ if (isPromise(result)) {
92
+ return result.then(handleSuccess, handleError);
93
+ }
94
+ return Promise.resolve(handleSuccess(result));
95
+ }
96
+ catch (error) {
97
+ return Promise.reject(handleError(error));
98
+ }
99
+ }
100
+ function reportToolCall(toolId, report) {
101
+ const context = (0, tool_context_js_1.getToolContext)();
102
+ const transactionId = report.transactionId ?? context.transactionId ?? (0, crypto_1.randomUUID)();
103
+ const payload = {
104
+ transactionId,
105
+ toolId,
106
+ operation: report.operation,
107
+ durationMs: report.durationMs,
108
+ success: report.success,
109
+ timestamp: report.timestamp ?? new Date().toISOString(),
110
+ errorMessage: report.errorMessage,
111
+ usageMetadata: report.usageMetadata,
112
+ agent: report.agent ?? context.agent,
113
+ organizationName: report.organizationName ?? context.organizationName,
114
+ productName: report.productName ?? context.productName,
115
+ subscriberCredential: report.subscriberCredential ?? context.subscriberCredential,
116
+ workflowId: report.workflowId ?? context.workflowId,
117
+ traceId: report.traceId ?? context.traceId,
118
+ middlewareSource: MIDDLEWARE_SOURCE,
119
+ };
120
+ dispatchToolEvent(payload);
121
+ }
122
+ //# sourceMappingURL=tool-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-tracker.js","sourceRoot":"","sources":["../../../../src/core/tracking/tool-tracker.ts"],"names":[],"mappings":"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"}
package/dist/cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getProviderMetadata = exports.detectProvider = exports.trackUsageAsync = exports.StreamingWrapper = exports.CompletionsInterface = exports.ChatInterface = exports.ReveniumPerplexity = exports.Configure = exports.Reset = exports.IsInitialized = exports.GetClient = exports.Initialize = void 0;
3
+ exports.runWithToolContext = exports.clearToolContext = exports.getToolContext = exports.setToolContext = exports.reportToolCall = exports.meterTool = exports.getProviderMetadata = exports.detectProvider = exports.trackUsageAsync = exports.StreamingWrapper = exports.CompletionsInterface = exports.ChatInterface = exports.ReveniumPerplexity = exports.Configure = exports.Reset = exports.IsInitialized = exports.GetClient = exports.Initialize = void 0;
4
4
  /**
5
5
  * Main API
6
6
  */
@@ -29,4 +29,15 @@ Object.defineProperty(exports, "trackUsageAsync", { enumerable: true, get: funct
29
29
  var index_js_4 = require("./core/providers/index.js");
30
30
  Object.defineProperty(exports, "detectProvider", { enumerable: true, get: function () { return index_js_4.detectProvider; } });
31
31
  Object.defineProperty(exports, "getProviderMetadata", { enumerable: true, get: function () { return index_js_4.getProviderMetadata; } });
32
+ /**
33
+ * Tool metering functions
34
+ */
35
+ var tool_tracker_js_1 = require("./core/tracking/tool-tracker.js");
36
+ Object.defineProperty(exports, "meterTool", { enumerable: true, get: function () { return tool_tracker_js_1.meterTool; } });
37
+ Object.defineProperty(exports, "reportToolCall", { enumerable: true, get: function () { return tool_tracker_js_1.reportToolCall; } });
38
+ var tool_context_js_1 = require("./core/tracking/tool-context.js");
39
+ Object.defineProperty(exports, "setToolContext", { enumerable: true, get: function () { return tool_context_js_1.setToolContext; } });
40
+ Object.defineProperty(exports, "getToolContext", { enumerable: true, get: function () { return tool_context_js_1.getToolContext; } });
41
+ Object.defineProperty(exports, "clearToolContext", { enumerable: true, get: function () { return tool_context_js_1.clearToolContext; } });
42
+ Object.defineProperty(exports, "runWithToolContext", { enumerable: true, get: function () { return tool_context_js_1.runWithToolContext; } });
32
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AA+BA;;GAEG;AACH,mDAMgC;AAL9B,sGAAA,UAAU,OAAA;AACV,qGAAA,SAAS,OAAA;AACT,yGAAA,aAAa,OAAA;AACb,iGAAA,KAAK,OAAA;AACL,qGAAA,SAAS,OAAA;AAGX;;GAEG;AACH,uDAKoC;AAJlC,8GAAA,kBAAkB,OAAA;AAClB,yGAAA,aAAa,OAAA;AACb,gHAAA,oBAAoB,OAAA;AACpB,4GAAA,gBAAgB,OAAA;AAGlB;;GAEG;AACH,qDAA2D;AAAlD,2GAAA,eAAe,OAAA;AAExB;;GAEG;AACH,sDAAgF;AAAvE,0GAAA,cAAc,OAAA;AAAE,+GAAA,mBAAmB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AA+BA;;GAEG;AACH,mDAMgC;AAL9B,sGAAA,UAAU,OAAA;AACV,qGAAA,SAAS,OAAA;AACT,yGAAA,aAAa,OAAA;AACb,iGAAA,KAAK,OAAA;AACL,qGAAA,SAAS,OAAA;AAGX;;GAEG;AACH,uDAKoC;AAJlC,8GAAA,kBAAkB,OAAA;AAClB,yGAAA,aAAa,OAAA;AACb,gHAAA,oBAAoB,OAAA;AACpB,4GAAA,gBAAgB,OAAA;AAGlB;;GAEG;AACH,qDAA2D;AAAlD,2GAAA,eAAe,OAAA;AAExB;;GAEG;AACH,sDAAgF;AAAvE,0GAAA,cAAc,OAAA;AAAE,+GAAA,mBAAmB,OAAA;AAY5C;;GAEG;AACH,mEAGyC;AAFvC,4GAAA,SAAS,OAAA;AACT,iHAAA,cAAc,OAAA;AAGhB,mEAKyC;AAJvC,iHAAA,cAAc,OAAA;AACd,iHAAA,cAAc,OAAA;AACd,mHAAA,gBAAgB,OAAA;AAChB,qHAAA,kBAAkB,OAAA"}
@@ -22,4 +22,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
23
  // Re-export function parameter types
24
24
  __exportStar(require("./function-parameters.js"), exports);
25
+ __exportStar(require("./tool-metering.js"), exports);
25
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;AAEH,qCAAqC;AACrC,2DAAyC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;AAEH,qCAAqC;AACrC,2DAAyC;AAyLzC,qDAAmC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=tool-metering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-metering.js","sourceRoot":"","sources":["../../../src/types/tool-metering.ts"],"names":[],"mappings":""}