@revenium/openai 1.0.16 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/.env.example +28 -8
  2. package/CHANGELOG.md +13 -21
  3. package/README.md +159 -18
  4. package/dist/cjs/core/config/loader.js +27 -1
  5. package/dist/cjs/core/config/loader.js.map +1 -1
  6. package/dist/cjs/core/middleware/interfaces.js +70 -32
  7. package/dist/cjs/core/middleware/interfaces.js.map +1 -1
  8. package/dist/cjs/core/tracking/index.js +3 -1
  9. package/dist/cjs/core/tracking/index.js.map +1 -1
  10. package/dist/cjs/core/tracking/payload-builder.js +34 -5
  11. package/dist/cjs/core/tracking/payload-builder.js.map +1 -1
  12. package/dist/cjs/core/tracking/summary-printer.js +196 -0
  13. package/dist/cjs/core/tracking/summary-printer.js.map +1 -0
  14. package/dist/cjs/core/tracking/usage-tracker.js +37 -5
  15. package/dist/cjs/core/tracking/usage-tracker.js.map +1 -1
  16. package/dist/cjs/types/index.js.map +1 -1
  17. package/dist/cjs/utils/prompt-extraction.js +231 -0
  18. package/dist/cjs/utils/prompt-extraction.js.map +1 -0
  19. package/dist/esm/core/config/loader.js +27 -1
  20. package/dist/esm/core/config/loader.js.map +1 -1
  21. package/dist/esm/core/middleware/interfaces.js +70 -32
  22. package/dist/esm/core/middleware/interfaces.js.map +1 -1
  23. package/dist/esm/core/tracking/index.js +1 -0
  24. package/dist/esm/core/tracking/index.js.map +1 -1
  25. package/dist/esm/core/tracking/payload-builder.js +34 -5
  26. package/dist/esm/core/tracking/payload-builder.js.map +1 -1
  27. package/dist/esm/core/tracking/summary-printer.js +193 -0
  28. package/dist/esm/core/tracking/summary-printer.js.map +1 -0
  29. package/dist/esm/core/tracking/usage-tracker.js +37 -5
  30. package/dist/esm/core/tracking/usage-tracker.js.map +1 -1
  31. package/dist/esm/types/index.js.map +1 -1
  32. package/dist/esm/utils/prompt-extraction.js +225 -0
  33. package/dist/esm/utils/prompt-extraction.js.map +1 -0
  34. package/dist/types/core/config/loader.d.ts.map +1 -1
  35. package/dist/types/core/middleware/interfaces.d.ts +4 -1
  36. package/dist/types/core/middleware/interfaces.d.ts.map +1 -1
  37. package/dist/types/core/tracking/index.d.ts +1 -0
  38. package/dist/types/core/tracking/index.d.ts.map +1 -1
  39. package/dist/types/core/tracking/payload-builder.d.ts.map +1 -1
  40. package/dist/types/core/tracking/summary-printer.d.ts +9 -0
  41. package/dist/types/core/tracking/summary-printer.d.ts.map +1 -0
  42. package/dist/types/core/tracking/usage-tracker.d.ts +2 -0
  43. package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -1
  44. package/dist/types/types/index.d.ts +25 -0
  45. package/dist/types/types/index.d.ts.map +1 -1
  46. package/dist/types/utils/prompt-extraction.d.ts +29 -0
  47. package/dist/types/utils/prompt-extraction.d.ts.map +1 -0
  48. package/examples/openai/prompt-capture.ts +95 -0
  49. package/package.json +12 -1
@@ -0,0 +1,225 @@
1
+ import { getConfig } from "../core/config/index.js";
2
+ const DEFAULT_MAX_PROMPT_SIZE = 50000;
3
+ const CAPTURE_PROMPTS_DEFAULT = false;
4
+ export function getMaxPromptSize() {
5
+ const config = getConfig();
6
+ if (config?.maxPromptSize && config.maxPromptSize > 0) {
7
+ return config.maxPromptSize;
8
+ }
9
+ const envValue = process.env.REVENIUM_MAX_PROMPT_SIZE;
10
+ if (envValue) {
11
+ const parsed = parseInt(envValue, 10);
12
+ if (!isNaN(parsed) && parsed > 0) {
13
+ return parsed;
14
+ }
15
+ }
16
+ return DEFAULT_MAX_PROMPT_SIZE;
17
+ }
18
+ function contentBlocksToString(blocks) {
19
+ return blocks
20
+ .map((block) => {
21
+ if (block.type === "text" && block.text) {
22
+ return block.text;
23
+ }
24
+ if (block.type === "image_url") {
25
+ return "[IMAGE]";
26
+ }
27
+ return "";
28
+ })
29
+ .filter(Boolean)
30
+ .join("\n");
31
+ }
32
+ /**
33
+ * Sanitizes common credential patterns from text.
34
+ *
35
+ * Redacts the following credential types:
36
+ * - OpenAI keys: sk-*, sk-proj-*, sk-ant-* (20+ chars)
37
+ * - Perplexity keys: pplx-* (20+ chars)
38
+ * - AWS access keys: AKIA* (20 chars)
39
+ * - GitHub tokens: ghp_*, ghs_* (36+ chars)
40
+ * - JWT tokens: eyJ*.eyJ*.*
41
+ * - Bearer tokens
42
+ * - Generic API keys, tokens, passwords, secrets (8-20+ chars)
43
+ *
44
+ * LIMITATIONS:
45
+ * - Shorter credentials may pass through unsanitized
46
+ * - Length constraints balance security with false positive prevention
47
+ */
48
+ export function sanitizeCredentials(text) {
49
+ const patterns = [
50
+ {
51
+ regex: /pplx-[a-zA-Z0-9_-]{20,}/g,
52
+ replacement: "pplx-***REDACTED***",
53
+ },
54
+ {
55
+ regex: /sk-proj-[a-zA-Z0-9_-]{48,}/g,
56
+ replacement: "sk-proj-***REDACTED***",
57
+ },
58
+ {
59
+ regex: /sk-ant-[a-zA-Z0-9_-]{20,}/g,
60
+ replacement: "sk-ant-***REDACTED***",
61
+ },
62
+ { regex: /sk-[a-zA-Z0-9_-]{20,}/g, replacement: "sk-***REDACTED***" },
63
+ {
64
+ regex: /AKIA[A-Z0-9]{16}/g,
65
+ replacement: "AKIA***REDACTED***",
66
+ },
67
+ {
68
+ regex: /ghp_[a-zA-Z0-9]{36,}/g,
69
+ replacement: "ghp_***REDACTED***",
70
+ },
71
+ {
72
+ regex: /ghs_[a-zA-Z0-9]{36,}/g,
73
+ replacement: "ghs_***REDACTED***",
74
+ },
75
+ {
76
+ regex: /eyJ[a-zA-Z0-9_-]+\.eyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+/g,
77
+ replacement: "***REDACTED_JWT***",
78
+ },
79
+ {
80
+ regex: /Bearer\s+[a-zA-Z0-9_\-.+\/=]+/gi,
81
+ replacement: "Bearer ***REDACTED***",
82
+ },
83
+ {
84
+ regex: /api[_-]?key["'\s:=]+[a-zA-Z0-9_\-.+\/=]{20,}/gi,
85
+ replacement: "api_key: ***REDACTED***",
86
+ },
87
+ {
88
+ regex: /token["'\s:=]+[a-zA-Z0-9_\-.+\/=]{20,}/gi,
89
+ replacement: "token: ***REDACTED***",
90
+ },
91
+ {
92
+ regex: /password["'\s:=]+["']?([^"'\s]{8,})["']?/gi,
93
+ replacement: "password: ***REDACTED***",
94
+ },
95
+ {
96
+ regex: /secret["'\s:=]+["']?([^"'\s]{8,})["']?/gi,
97
+ replacement: "secret: ***REDACTED***",
98
+ },
99
+ ];
100
+ let sanitized = text;
101
+ for (const pattern of patterns) {
102
+ sanitized = sanitized.replace(pattern.regex, pattern.replacement);
103
+ }
104
+ return sanitized;
105
+ }
106
+ function truncateString(str, maxLength) {
107
+ if (!str || str.length === 0) {
108
+ return { value: "", truncated: false };
109
+ }
110
+ const sanitized = sanitizeCredentials(str);
111
+ if (sanitized.length <= maxLength) {
112
+ return { value: sanitized, truncated: false };
113
+ }
114
+ return { value: sanitized.substring(0, maxLength), truncated: true };
115
+ }
116
+ function hasValidMessages(params) {
117
+ return !!(params.messages && Array.isArray(params.messages));
118
+ }
119
+ function extractSystemPrompt(params) {
120
+ if (!hasValidMessages(params)) {
121
+ return "";
122
+ }
123
+ const systemMessages = params.messages
124
+ .filter((msg) => msg.role === "system")
125
+ .map((msg) => {
126
+ const content = msg.content;
127
+ if (typeof content === "string") {
128
+ return content;
129
+ }
130
+ if (Array.isArray(content)) {
131
+ return contentBlocksToString(content);
132
+ }
133
+ return "";
134
+ })
135
+ .filter(Boolean);
136
+ return systemMessages.join("\n\n");
137
+ }
138
+ function extractInputMessages(params) {
139
+ if (!hasValidMessages(params)) {
140
+ return "";
141
+ }
142
+ return params.messages
143
+ .filter((msg) => msg.role !== "system")
144
+ .map((message) => {
145
+ const role = message.role;
146
+ let content = "";
147
+ const msgContent = message.content;
148
+ if (typeof msgContent === "string") {
149
+ content = msgContent;
150
+ }
151
+ else if (Array.isArray(msgContent)) {
152
+ content = contentBlocksToString(msgContent);
153
+ }
154
+ return `[${role}]\n${content}`;
155
+ })
156
+ .join("\n\n");
157
+ }
158
+ function extractOutputResponse(response) {
159
+ if (!response.choices || response.choices.length === 0) {
160
+ return "";
161
+ }
162
+ const choice = response.choices[0];
163
+ const parts = [];
164
+ if (choice.message?.content) {
165
+ parts.push(choice.message.content);
166
+ }
167
+ if (choice.delta?.content) {
168
+ parts.push(choice.delta.content);
169
+ }
170
+ const message = choice.message;
171
+ if (message?.tool_calls && Array.isArray(message.tool_calls)) {
172
+ message.tool_calls.forEach((toolCall) => {
173
+ if (toolCall.function?.name) {
174
+ parts.push(`[TOOL_USE: ${toolCall.function.name}]`);
175
+ }
176
+ });
177
+ }
178
+ if (message?.function_call?.name) {
179
+ parts.push(`[FUNCTION_CALL: ${message.function_call.name}]`);
180
+ }
181
+ return parts.join("\n");
182
+ }
183
+ export function shouldCapturePrompts(metadata) {
184
+ if (metadata?.capturePrompts !== undefined) {
185
+ return metadata.capturePrompts;
186
+ }
187
+ const config = getConfig();
188
+ if (config?.capturePrompts !== undefined) {
189
+ return config.capturePrompts;
190
+ }
191
+ const envValue = process.env.REVENIUM_CAPTURE_PROMPTS;
192
+ if (envValue !== undefined) {
193
+ return envValue.toLowerCase() === "true";
194
+ }
195
+ return CAPTURE_PROMPTS_DEFAULT;
196
+ }
197
+ export function extractPrompts(params, response, metadata) {
198
+ if (!shouldCapturePrompts(metadata)) {
199
+ return null;
200
+ }
201
+ const maxSize = getMaxPromptSize();
202
+ let anyTruncated = false;
203
+ const systemPromptRaw = extractSystemPrompt(params);
204
+ const systemPromptResult = truncateString(systemPromptRaw, maxSize);
205
+ anyTruncated = anyTruncated || systemPromptResult.truncated;
206
+ const inputMessagesRaw = extractInputMessages(params);
207
+ const inputMessagesResult = truncateString(inputMessagesRaw, maxSize);
208
+ anyTruncated = anyTruncated || inputMessagesResult.truncated;
209
+ const outputResponseRaw = extractOutputResponse(response);
210
+ const outputResponseResult = truncateString(outputResponseRaw, maxSize);
211
+ anyTruncated = anyTruncated || outputResponseResult.truncated;
212
+ const hasAnyContent = systemPromptResult.value ||
213
+ inputMessagesResult.value ||
214
+ outputResponseResult.value;
215
+ if (!hasAnyContent) {
216
+ return null;
217
+ }
218
+ return {
219
+ systemPrompt: systemPromptResult.value || undefined,
220
+ inputMessages: inputMessagesResult.value || undefined,
221
+ outputResponse: outputResponseResult.value || undefined,
222
+ promptsTruncated: anyTruncated,
223
+ };
224
+ }
225
+ //# sourceMappingURL=prompt-extraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-extraction.js","sourceRoot":"","sources":["../../../src/utils/prompt-extraction.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/core/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAkC1D;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAiBzD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,WAAW,GAAG,IAAI,CAc3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAI7C"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/core/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,WAAW,EAAiB,MAAM,aAAa,CAAC;AAwDzE;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CA+BzD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,WAAW,GAAG,IAAI,CAc3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAI7C"}
@@ -20,7 +20,10 @@ export declare class StreamingWrapper implements AsyncIterable<OpenAI.ChatComple
20
20
  private firstTokenTime?;
21
21
  private requestId;
22
22
  private usage;
23
- constructor(stream: AsyncIterable<OpenAI.ChatCompletionChunk>, config: Config, providerInfo: ProviderInfo, model: string, metadata?: UsageMetadata);
23
+ private messages;
24
+ private accumulatedContent;
25
+ constructor(stream: AsyncIterable<OpenAI.ChatCompletionChunk>, config: Config, providerInfo: ProviderInfo, model: string, messages: any[], metadata?: UsageMetadata);
26
+ private buildTrackingPayload;
24
27
  [Symbol.asyncIterator](): AsyncIterator<OpenAI.ChatCompletionChunk>;
25
28
  }
26
29
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/core/middleware/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/core/middleware/interfaces.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQlE,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AAStC;;GAEG;AACH,qBAAa,gBACX,YAAW,aAAa,CAAC,MAAM,CAAC,mBAAmB,CAAC;IAEpD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAC,CAAgB;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,kBAAkB,CAAc;gBAGtC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,mBAAmB,CAAC,EACjD,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,GAAG,EAAE,EACf,QAAQ,CAAC,EAAE,aAAa;IAY1B,OAAO,CAAC,oBAAoB;IAyBrB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,mBAAmB,CAAC;CAkF3E;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;gBAFZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY;IAGpC;;OAEG;IACG,MAAM,CACV,MAAM,EAAE,MAAM,CAAC,sCAAsC,EACrD,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;IAqEjC;;OAEG;IACG,eAAe,CACnB,MAAM,EAAE,MAAM,CAAC,mCAAmC,EAClD,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,gBAAgB,CAAC;CAmB7B;AAED;;GAEG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;gBAFZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY;IAGpC,WAAW,IAAI,oBAAoB;CAOpC;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;gBAFZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY;IAG9B,MAAM,CACV,MAAM,EAAE,MAAM,CAAC,qBAAqB,EACpC,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC;CAyC3C;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;gBAFZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY;IAG9B,MAAM,CACV,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,iBAAiB,CAAC;IAgEvB,eAAe,CACnB,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;CAwF/B;AA+BD,qBAAa,eAAe;IAC1B,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAe;gBAGjC,cAAc,EAAE,MAAM,CAAC,MAAM,EAC7B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY;IAOtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;IAuB1D,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC;IAuBlD,eAAe,CACnB,MAAM,EAAE,MAAM,CAAC,0BAA0B,GACxC,OAAO,CAAC,GAAG,CAAC;CAsBhB;AAED,qBAAa,4BAA4B;IACvC,OAAO,CAAC,sBAAsB,CAA8B;IAC5D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAe;gBAGjC,sBAAsB,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,EACnD,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY;IAOtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,yBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC;CAsB3E;AAED,qBAAa,0BAA0B;IACrC,OAAO,CAAC,oBAAoB,CAA4B;IACxD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAe;gBAGjC,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,EAC/C,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY;IAOtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;CAsBzE;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAe;gBAGjC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EACnC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY;IAOtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;CAsBpE"}
@@ -7,5 +7,6 @@
7
7
  export { sendToRevenium } from "./api-client.js";
8
8
  export { buildPayload, buildImagePayload, buildAudioPayload, } from "./payload-builder.js";
9
9
  export { sendReveniumMetrics, sendReveniumEmbeddingsMetrics, trackUsageAsync, trackEmbeddingsUsageAsync, trackImageUsageAsync, trackAudioUsageAsync, } from "./usage-tracker.js";
10
+ export { printUsageSummary } from "./summary-printer.js";
10
11
  export { mapStopReason } from "../../utils/stop-reason-mapper.js";
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,eAAe,EACf,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,eAAe,EACf,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"payload-builder.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/payload-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,oCAAoC,CAAC;AAoB5C;;;;;;;;;;;;;GAaG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,GAAG,OAAO,EAC/B,QAAQ,EAAE,kBAAkB,GAAG,uBAAuB,EACtD,OAAO,EAAE,iBAAiB,GAAG,sBAAsB,EACnD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,eAAe,CAAC,CAuG1B;AAED,wBAAgB,iBAAiB,CAC/B,gBAAgB,EAAE,YAAY,GAAG,MAAM,GAAG,WAAW,EACrD,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,GAAG,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,EAC3B,aAAa,CAAC,EAAE,GAAG,GAClB,eAAe,CAgEjB;AAED,wBAAgB,iBAAiB,CAC/B,gBAAgB,EAAE,eAAe,GAAG,aAAa,GAAG,kBAAkB,EACtE,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,GAAG,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,EAC3B,aAAa,CAAC,EAAE,GAAG,GAClB,eAAe,CAsEjB"}
1
+ {"version":3,"file":"payload-builder.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/payload-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,oCAAoC,CAAC;AAqB5C;;;;;;;;;;;;;GAaG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,GAAG,OAAO,EAC/B,QAAQ,EAAE,kBAAkB,GAAG,uBAAuB,EACtD,OAAO,EAAE,iBAAiB,GAAG,sBAAsB,EACnD,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,eAAe,CAAC,CA2I1B;AAED,wBAAgB,iBAAiB,CAC/B,gBAAgB,EAAE,YAAY,GAAG,MAAM,GAAG,WAAW,EACrD,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,GAAG,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,EAC3B,aAAa,CAAC,EAAE,GAAG,GAClB,eAAe,CAgEjB;AAED,wBAAgB,iBAAiB,CAC/B,gBAAgB,EAAE,eAAe,GAAG,aAAa,GAAG,kBAAkB,EACtE,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,GAAG,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,EAC3B,aAAa,CAAC,EAAE,GAAG,GAClB,eAAe,CAsEjB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Summary Printer Module
3
+ *
4
+ * Provides terminal output for cost/metrics summary after API requests.
5
+ * Fetches cost data from Revenium's traces API and formats for console display.
6
+ */
7
+ import { ReveniumPayload } from "../../types";
8
+ export declare function printUsageSummary(payload: ReveniumPayload): void;
9
+ //# sourceMappingURL=summary-printer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary-printer.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/summary-printer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAiB,MAAM,aAAa,CAAC;AA4P7D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAyBhE"}
@@ -31,6 +31,8 @@ export declare function trackUsageAsync(trackingData: {
31
31
  isStreamed?: boolean;
32
32
  timeToFirstToken?: number;
33
33
  providerInfo?: ProviderInfo;
34
+ messages?: any[];
35
+ responseContent?: string;
34
36
  }): void;
35
37
  /**
36
38
  * Fire-and-forget wrapper for embeddings with Azure support
@@ -1 +1 @@
1
- {"version":3,"file":"usage-tracker.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/usage-tracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,oCAAoC,CAAC;AAS5C;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;GAEG;AACH,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,uBAAuB,EACjC,OAAO,EAAE,sBAAsB,EAC/B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,GAAG,IAAI,CAqDP;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,GAAG,IAAI,CAmCP;AAED,wBAAsB,oBAAoB,CACxC,gBAAgB,EAAE,YAAY,GAAG,MAAM,GAAG,WAAW,EACrD,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,GAAG,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,GAAG,EACX,YAAY,EAAE,YAAY,EAC1B,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED,wBAAsB,oBAAoB,CACxC,gBAAgB,EAAE,eAAe,GAAG,aAAa,GAAG,kBAAkB,EACtE,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,GAAG,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,GAAG,EACX,YAAY,EAAE,YAAY,EAC1B,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,IAAI,CAAC,CAoCf"}
1
+ {"version":3,"file":"usage-tracker.d.ts","sourceRoot":"","sources":["../../../../src/core/tracking/usage-tracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,oCAAoC,CAAC;AAU5C;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;GAEG;AACH,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,uBAAuB,EACjC,OAAO,EAAE,sBAAsB,EAC/B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,IAAI,CAwDP;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,GAAG,IAAI,CAmCP;AAED,wBAAsB,oBAAoB,CACxC,gBAAgB,EAAE,YAAY,GAAG,MAAM,GAAG,WAAW,EACrD,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,GAAG,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,GAAG,EACX,YAAY,EAAE,YAAY,EAC1B,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAED,wBAAsB,oBAAoB,CACxC,gBAAgB,EAAE,eAAe,GAAG,aAAa,GAAG,kBAAkB,EACtE,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,GAAG,EACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,GAAG,EACX,YAAY,EAAE,YAAY,EAC1B,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
@@ -56,6 +56,8 @@ export interface UsageMetadata {
56
56
  responseQualityScore?: number;
57
57
  /** Agent or model variant identifier for A/B testing and performance tracking */
58
58
  agent?: string;
59
+ /** Per-call override for prompt capture (overrides environment variable and config) */
60
+ capturePrompts?: boolean;
59
61
  }
60
62
  /**
61
63
  * Provider information for tracking API source
@@ -104,6 +106,12 @@ export interface AzureConfig {
104
106
  /** Azure OpenAI API version */
105
107
  apiVersion?: string;
106
108
  }
109
+ /**
110
+ * Summary output format options
111
+ * - 'human': Human-readable formatted output with emojis (default when enabled)
112
+ * - 'json': JSON formatted output for automation/parsing
113
+ */
114
+ export type SummaryFormat = "human" | "json";
107
115
  /**
108
116
  * Revenium configuration interface
109
117
  *
@@ -123,6 +131,19 @@ export interface ReveniumConfig {
123
131
  azure?: AzureConfig;
124
132
  /** OpenAI API key (optional, can be set via environment variable) */
125
133
  openaiApiKey?: string;
134
+ /**
135
+ * Enable cost/metrics summary output to terminal after each API request.
136
+ * - true or 'human': Human-readable format with emojis
137
+ * - 'json': JSON format for automation
138
+ * - false: Disabled (default)
139
+ */
140
+ printSummary?: boolean | SummaryFormat;
141
+ /** Revenium team ID for fetching cost metrics from the API. If not provided, the summary will still be printed but without cost information. */
142
+ teamId?: string;
143
+ /** Whether to capture and send prompts to Revenium API (default: false) */
144
+ capturePrompts?: boolean;
145
+ /** Maximum size in characters for captured prompts before truncation (default: 50000). Note: uses JavaScript string length (UTF-16 code units), not byte count. */
146
+ maxPromptSize?: number;
126
147
  }
127
148
  /**
128
149
  * Alias for ReveniumConfig for internal use
@@ -197,6 +218,10 @@ export interface ReveniumPayload {
197
218
  credentialAlias?: string;
198
219
  traceType?: string;
199
220
  traceName?: string;
221
+ systemPrompt?: string;
222
+ inputMessages?: string;
223
+ outputResponse?: string;
224
+ promptsTruncated?: boolean;
200
225
  }
201
226
  export interface ImageAttributes {
202
227
  billing_unit: "per_image";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,0BAA0B,CAAC;AAGzC,cAAc,oBAAoB,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,+EAA+E;IAC/E,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,yEAAyE;IACzE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;;;GAKG;AACH,oBAAY,QAAQ;IAClB,0BAA0B;IAC1B,MAAM,WAAW;IACjB,2BAA2B;IAC3B,YAAY,iBAAiB;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oEAAoE;IACpE,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,cAAc,CAAC;AAEpC;;;;;;GAMG;AACH,MAAM,WAAW,MAAM;IACrB,sDAAsD;IACtD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;IACtE,qDAAqD;IACrD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;IACrE,wDAAwD;IACxD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;IACrE,sDAAsD;IACtD,KAAK,CACH,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,OAAO,GAChD,IAAI,CAAC;CACT;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EACT,MAAM,GACN,UAAU,GACV,OAAO,GACP,UAAU,GACV,WAAW,GACX,WAAW,GACX,OAAO,GACP,OAAO,GACP,OAAO,CAAC;IACZ,QAAQ,EAAE,IAAI,CAAC;IAGf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IAGzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAE5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,uBAAuB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IAGxC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAGtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAErC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,WAAW,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5B,gBAAgB,EAAE,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC;IACtD,eAAe,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IACrC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,YAAY,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,gBAAgB,EAAE,eAAe,GAAG,aAAa,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,eAAe,CAAC;IAC9B,yBAAyB,EAAE,MAAM,CAAC;IAClC,gBAAgB,EAAE,kBAAkB,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,eAAe,GACvB,4BAA4B,GAC5B,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { UsageMetadata } from "../types/index.js";
2
+ import { OpenAIChatRequest, OpenAIChatResponse } from "../types/function-parameters.js";
3
+ export declare function getMaxPromptSize(): number;
4
+ export interface PromptData {
5
+ systemPrompt?: string;
6
+ inputMessages?: string;
7
+ outputResponse?: string;
8
+ promptsTruncated: boolean;
9
+ }
10
+ /**
11
+ * Sanitizes common credential patterns from text.
12
+ *
13
+ * Redacts the following credential types:
14
+ * - OpenAI keys: sk-*, sk-proj-*, sk-ant-* (20+ chars)
15
+ * - Perplexity keys: pplx-* (20+ chars)
16
+ * - AWS access keys: AKIA* (20 chars)
17
+ * - GitHub tokens: ghp_*, ghs_* (36+ chars)
18
+ * - JWT tokens: eyJ*.eyJ*.*
19
+ * - Bearer tokens
20
+ * - Generic API keys, tokens, passwords, secrets (8-20+ chars)
21
+ *
22
+ * LIMITATIONS:
23
+ * - Shorter credentials may pass through unsanitized
24
+ * - Length constraints balance security with false positive prevention
25
+ */
26
+ export declare function sanitizeCredentials(text: string): string;
27
+ export declare function shouldCapturePrompts(metadata?: UsageMetadata): boolean;
28
+ export declare function extractPrompts(params: OpenAIChatRequest, response: OpenAIChatResponse, metadata?: UsageMetadata): PromptData | null;
29
+ //# sourceMappingURL=prompt-extraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-extraction.d.ts","sourceRoot":"","sources":["../../../src/utils/prompt-extraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AAMzC,wBAAgB,gBAAgB,IAAI,MAAM,CAezC;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAwCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0DxD;AAmGD,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,OAAO,CAgBtE;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,CAAC,EAAE,aAAa,GACvB,UAAU,GAAG,IAAI,CAmCnB"}
@@ -0,0 +1,95 @@
1
+ import OpenAI from "openai";
2
+ import { configure } from "../../src/index.js";
3
+
4
+ async function main() {
5
+ console.log("=== OpenAI Prompt Capture Example ===\n");
6
+
7
+ configure({
8
+ reveniumApiKey: process.env.REVENIUM_METERING_API_KEY || "test-key",
9
+ reveniumBaseUrl: process.env.REVENIUM_METERING_BASE_URL,
10
+ capturePrompts: true,
11
+ });
12
+
13
+ const openai = new OpenAI({
14
+ apiKey: process.env.OPENAI_API_KEY,
15
+ });
16
+
17
+ console.log("Example 1: Prompt capture enabled via config");
18
+ console.log("Making request with prompt capture enabled...\n");
19
+
20
+ try {
21
+ const response = await openai.chat.completions.create({
22
+ model: "gpt-4o-mini",
23
+ max_tokens: 100,
24
+ messages: [
25
+ {
26
+ role: "system",
27
+ content: "You are a helpful assistant that provides concise answers.",
28
+ },
29
+ {
30
+ role: "user",
31
+ content: "What is the capital of France?",
32
+ },
33
+ ],
34
+ usageMetadata: {
35
+ organizationId: "org-prompt-capture-demo",
36
+ productId: "prod-openai-prompt-capture",
37
+ },
38
+ });
39
+
40
+ console.log("Response:", response.choices[0]?.message?.content);
41
+ console.log("\nPrompts captured and sent to Revenium API!");
42
+ } catch (error) {
43
+ console.error(
44
+ "Error:",
45
+ error instanceof Error ? error.message : String(error)
46
+ );
47
+ }
48
+
49
+ console.log("\n" + "=".repeat(50) + "\n");
50
+ console.log("Example 2: Prompt capture disabled via metadata override");
51
+ console.log("Making request with prompt capture disabled...\n");
52
+
53
+ try {
54
+ const response2 = await openai.chat.completions.create({
55
+ model: "gpt-4o-mini",
56
+ max_tokens: 100,
57
+ messages: [
58
+ {
59
+ role: "system",
60
+ content: "You are a helpful assistant.",
61
+ },
62
+ {
63
+ role: "user",
64
+ content: "What is 2+2?",
65
+ },
66
+ ],
67
+ usageMetadata: {
68
+ organizationId: "org-prompt-capture-demo",
69
+ productId: "prod-openai-prompt-capture",
70
+ capturePrompts: false,
71
+ },
72
+ });
73
+
74
+ console.log("Response:", response2.choices[0]?.message?.content);
75
+ console.log("\nPrompts NOT captured (overridden via metadata)!");
76
+ } catch (error) {
77
+ console.error(
78
+ "Error:",
79
+ error instanceof Error ? error.message : String(error)
80
+ );
81
+ }
82
+
83
+ console.log("\n" + "=".repeat(50) + "\n");
84
+ console.log("Example 3: Prompt capture with environment variable");
85
+ console.log("Set REVENIUM_CAPTURE_PROMPTS=true in your .env file\n");
86
+
87
+ console.log("Prompt capture examples completed!");
88
+ console.log("\nConfiguration hierarchy:");
89
+ console.log("1. Per-call metadata (highest priority)");
90
+ console.log("2. Global config");
91
+ console.log("3. Environment variable REVENIUM_CAPTURE_PROMPTS");
92
+ console.log("4. Default: false (lowest priority)");
93
+ }
94
+
95
+ main().catch(console.error);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revenium/openai",
3
- "version": "1.0.16",
3
+ "version": "1.1.0",
4
4
  "description": "Transparent TypeScript middleware for automatic Revenium usage tracking with OpenAI",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -25,6 +25,13 @@
25
25
  "dev": "tsc --watch",
26
26
  "clean": "node -e \"const fs = require('fs'); if (fs.existsSync('dist')) fs.rmSync('dist', {recursive: true, force: true})\"",
27
27
  "prepublishOnly": "npm run clean && npm run build",
28
+ "test": "jest",
29
+ "test:unit": "jest --testPathPatterns=tests/unit",
30
+ "test:integration": "jest --testPathPatterns=tests/integration --passWithNoTests",
31
+ "test:performance": "jest --testPathPatterns=tests/performance --passWithNoTests",
32
+ "test:watch": "jest --watch",
33
+ "test:coverage": "jest --coverage",
34
+ "test:e2e": "jest --testPathPatterns=tests/integration/trace-fields.test.ts",
28
35
  "example:getting-started": "npm run build && npx tsx examples/getting_started.ts",
29
36
  "example:openai-basic": "npm run build && npx tsx examples/openai/basic.ts",
30
37
  "example:openai-metadata": "npm run build && npx tsx examples/openai/metadata.ts",
@@ -59,9 +66,13 @@
59
66
  "url": "https://github.com/revenium/revenium-middleware-openai-node/issues"
60
67
  },
61
68
  "devDependencies": {
69
+ "@jest/globals": "^30.2.0",
70
+ "@types/jest": "^30.0.0",
62
71
  "@types/node": "^20.0.0",
63
72
  "dotenv": "^16.5.0",
73
+ "jest": "^30.2.0",
64
74
  "rimraf": "^6.0.1",
75
+ "ts-jest": "^29.4.6",
65
76
  "ts-node": "^10.9.2",
66
77
  "tsx": "^4.20.6",
67
78
  "typescript": "^5.0.0"