@revenium/litellm 0.0.1

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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +630 -0
  3. package/dist/client.d.ts +17 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +713 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/config.d.ts +42 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +332 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/constants.d.ts +15 -0
  12. package/dist/constants.d.ts.map +1 -0
  13. package/dist/constants.js +101 -0
  14. package/dist/constants.js.map +1 -0
  15. package/dist/index.d.ts +42 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +189 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/prompt-extraction.d.ts +11 -0
  20. package/dist/prompt-extraction.d.ts.map +1 -0
  21. package/dist/prompt-extraction.js +201 -0
  22. package/dist/prompt-extraction.js.map +1 -0
  23. package/dist/tracking.d.ts +47 -0
  24. package/dist/tracking.d.ts.map +1 -0
  25. package/dist/tracking.js +299 -0
  26. package/dist/tracking.js.map +1 -0
  27. package/dist/types.d.ts +348 -0
  28. package/dist/types.d.ts.map +1 -0
  29. package/dist/types.js +3 -0
  30. package/dist/types.js.map +1 -0
  31. package/dist/utils/circuit-breaker.d.ts +114 -0
  32. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  33. package/dist/utils/circuit-breaker.js +216 -0
  34. package/dist/utils/circuit-breaker.js.map +1 -0
  35. package/dist/utils/error-handling.d.ts +166 -0
  36. package/dist/utils/error-handling.d.ts.map +1 -0
  37. package/dist/utils/error-handling.js +306 -0
  38. package/dist/utils/error-handling.js.map +1 -0
  39. package/dist/utils/logger-types.d.ts +171 -0
  40. package/dist/utils/logger-types.d.ts.map +1 -0
  41. package/dist/utils/logger-types.js +210 -0
  42. package/dist/utils/logger-types.js.map +1 -0
  43. package/dist/utils/provider-detection.d.ts +43 -0
  44. package/dist/utils/provider-detection.d.ts.map +1 -0
  45. package/dist/utils/provider-detection.js +103 -0
  46. package/dist/utils/provider-detection.js.map +1 -0
  47. package/dist/utils/stop-reason.d.ts +58 -0
  48. package/dist/utils/stop-reason.d.ts.map +1 -0
  49. package/dist/utils/stop-reason.js +136 -0
  50. package/dist/utils/stop-reason.js.map +1 -0
  51. package/dist/utils/summary-printer.d.ts +23 -0
  52. package/dist/utils/summary-printer.d.ts.map +1 -0
  53. package/dist/utils/summary-printer.js +234 -0
  54. package/dist/utils/summary-printer.js.map +1 -0
  55. package/dist/utils/trace-fields.d.ts +10 -0
  56. package/dist/utils/trace-fields.d.ts.map +1 -0
  57. package/dist/utils/trace-fields.js +117 -0
  58. package/dist/utils/trace-fields.js.map +1 -0
  59. package/dist/utils/validation.d.ts +121 -0
  60. package/dist/utils/validation.d.ts.map +1 -0
  61. package/dist/utils/validation.js +451 -0
  62. package/dist/utils/validation.js.map +1 -0
  63. package/examples/README.md +321 -0
  64. package/examples/litellm-basic.ts +240 -0
  65. package/examples/litellm-streaming.ts +309 -0
  66. package/examples/prompt-capture.ts +128 -0
  67. package/package.json +85 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-types.js","sourceRoot":"","sources":["../../src/utils/logger-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Provider detection utilities for LiteLLM models
3
+ *
4
+ * This module replaces nested if/else statements with Map-based lookups
5
+ * for better maintainability and performance.
6
+ */
7
+ /**
8
+ * Extract standardized model source from LiteLLM model string
9
+ * Maps to standardized provider constants matching Python implementation
10
+ *
11
+ * @param model - LiteLLM model string
12
+ * @returns Standardized provider source constant
13
+ */
14
+ export declare function extractModelSource(model: string): string;
15
+ /**
16
+ * Extract provider display name from LiteLLM model string
17
+ * @param model - LiteLLM model string
18
+ * @returns Human-readable provider name
19
+ */
20
+ export declare function extractProvider(model: string): string;
21
+ /**
22
+ * Extract clean model name from LiteLLM model string
23
+ * Examples: "openai/gpt-4" -> "gpt-4", "anthropic/claude-3-opus" -> "claude-3-opus"
24
+ *
25
+ * @param model - LiteLLM model string
26
+ * @returns Clean model name without provider prefix
27
+ */
28
+ export declare function extractModelName(model: string): string;
29
+ /**
30
+ * Validate if a model string appears to be a valid LiteLLM format
31
+ * @param model - Model string to validate
32
+ * @returns True if model appears valid
33
+ */
34
+ export declare function isValidModelFormat(model: string): boolean;
35
+ /**
36
+ * Get all supported providers
37
+ * @returns Array of provider information
38
+ */
39
+ export declare function getSupportedProviders(): Array<{
40
+ source: string;
41
+ displayName: string;
42
+ }>;
43
+ //# sourceMappingURL=provider-detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-detection.d.ts","sourceRoot":"","sources":["../../src/utils/provider-detection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBxD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBrD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKzD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAC,CAAC,CAKpF"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ /**
3
+ * Provider detection utilities for LiteLLM models
4
+ *
5
+ * This module replaces nested if/else statements with Map-based lookups
6
+ * for better maintainability and performance.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.extractModelSource = extractModelSource;
10
+ exports.extractProvider = extractProvider;
11
+ exports.extractModelName = extractModelName;
12
+ exports.isValidModelFormat = isValidModelFormat;
13
+ exports.getSupportedProviders = getSupportedProviders;
14
+ const constants_1 = require("../constants");
15
+ /**
16
+ * Extract provider prefix from LiteLLM model string
17
+ * @param model - Model string (e.g., "openai/gpt-4", "anthropic/claude-3")
18
+ * @returns Provider prefix or null if not found
19
+ */
20
+ function extractProviderPrefix(model) {
21
+ const parts = model.split('/');
22
+ return parts.length > 1 ? parts[0].toLowerCase() : null;
23
+ }
24
+ /**
25
+ * Extract standardized model source from LiteLLM model string
26
+ * Maps to standardized provider constants matching Python implementation
27
+ *
28
+ * @param model - LiteLLM model string
29
+ * @returns Standardized provider source constant
30
+ */
31
+ function extractModelSource(model) {
32
+ const modelLower = model.toLowerCase();
33
+ const prefix = extractProviderPrefix(model);
34
+ // First, try to match by provider prefix (most reliable)
35
+ if (prefix) {
36
+ for (const provider of constants_1.PROVIDER_REGISTRY) {
37
+ if (provider.prefixes.includes(prefix))
38
+ return provider.source;
39
+ }
40
+ }
41
+ // Fallback to pattern matching for models without explicit prefixes
42
+ for (const provider of constants_1.PROVIDER_REGISTRY) {
43
+ if (provider.patterns.some(pattern => modelLower.includes(pattern)))
44
+ return provider.source;
45
+ }
46
+ // Default fallback
47
+ return 'LITELLM';
48
+ }
49
+ /**
50
+ * Extract provider display name from LiteLLM model string
51
+ * @param model - LiteLLM model string
52
+ * @returns Human-readable provider name
53
+ */
54
+ function extractProvider(model) {
55
+ const modelLower = model.toLowerCase();
56
+ const prefix = extractProviderPrefix(model);
57
+ // First, try to match by provider prefix
58
+ if (prefix) {
59
+ for (const provider of constants_1.PROVIDER_REGISTRY) {
60
+ if (provider.prefixes.includes(prefix))
61
+ return provider.displayName;
62
+ }
63
+ }
64
+ // Fallback to pattern matching
65
+ for (const provider of constants_1.PROVIDER_REGISTRY) {
66
+ if (provider.patterns.some(pattern => modelLower.includes(pattern)))
67
+ return provider.displayName;
68
+ }
69
+ // Return the prefix if found but not in registry, otherwise 'Unknown'
70
+ return prefix || 'Unknown';
71
+ }
72
+ /**
73
+ * Extract clean model name from LiteLLM model string
74
+ * Examples: "openai/gpt-4" -> "gpt-4", "anthropic/claude-3-opus" -> "claude-3-opus"
75
+ *
76
+ * @param model - LiteLLM model string
77
+ * @returns Clean model name without provider prefix
78
+ */
79
+ function extractModelName(model) {
80
+ return model.includes('/') ? model.split('/').slice(1).join('/') : model;
81
+ }
82
+ /**
83
+ * Validate if a model string appears to be a valid LiteLLM format
84
+ * @param model - Model string to validate
85
+ * @returns True if model appears valid
86
+ */
87
+ function isValidModelFormat(model) {
88
+ if (!model || typeof model !== 'string')
89
+ return false;
90
+ // Basic validation - model should not be empty and should contain valid characters
91
+ return model.trim().length > 0 && /^[a-zA-Z0-9/_.-]+$/.test(model.trim());
92
+ }
93
+ /**
94
+ * Get all supported providers
95
+ * @returns Array of provider information
96
+ */
97
+ function getSupportedProviders() {
98
+ return constants_1.PROVIDER_REGISTRY.map(p => ({
99
+ source: p.source,
100
+ displayName: p.displayName
101
+ }));
102
+ }
103
+ //# sourceMappingURL=provider-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-detection.js","sourceRoot":"","sources":["../../src/utils/provider-detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Stop reason mapping utilities
3
+ *
4
+ * This module provides consistent mapping of completion finish reasons
5
+ * to Revenium stop reason constants across different LLM providers.
6
+ */
7
+ /**
8
+ * Revenium stop reason constants
9
+ */
10
+ export declare const STOP_REASONS: {
11
+ readonly END: "END";
12
+ readonly TOKEN_LIMIT: "TOKEN_LIMIT";
13
+ readonly ERROR: "ERROR";
14
+ readonly END_SEQUENCE: "END_SEQUENCE";
15
+ readonly TIMEOUT: "TIMEOUT";
16
+ };
17
+ export type StopReason = typeof STOP_REASONS[keyof typeof STOP_REASONS];
18
+ /**
19
+ * Map completion finish reason to Revenium stop reason
20
+ * Works with multiple LLM providers through LiteLLM
21
+ *
22
+ * @param finishReason - The finish reason from the LLM provider
23
+ * @returns Standardized Revenium stop reason
24
+ */
25
+ export declare function getStopReason(finishReason: string | null | undefined): StopReason;
26
+ /**
27
+ * Check if a finish reason indicates a successful completion
28
+ * @param finishReason - The finish reason to check
29
+ * @returns True if the completion was successful
30
+ */
31
+ export declare function isSuccessfulCompletion(finishReason: string | null | undefined): boolean;
32
+ /**
33
+ * Check if a finish reason indicates a token limit was reached
34
+ * @param finishReason - The finish reason to check
35
+ * @returns True if token limit was reached
36
+ */
37
+ export declare function isTokenLimitReached(finishReason: string | null | undefined): boolean;
38
+ /**
39
+ * Check if a finish reason indicates an error occurred
40
+ * @param finishReason - The finish reason to check
41
+ * @returns True if an error occurred
42
+ */
43
+ export declare function isErrorCompletion(finishReason: string | null | undefined): boolean;
44
+ /**
45
+ * Get all supported finish reasons and their mappings
46
+ * @returns Array of finish reason mappings
47
+ */
48
+ export declare function getSupportedFinishReasons(): Array<{
49
+ finishReason: string;
50
+ stopReason: StopReason;
51
+ }>;
52
+ /**
53
+ * Add custom finish reason mapping
54
+ * @param finishReason - The finish reason to map
55
+ * @param stopReason - The Revenium stop reason to map to
56
+ */
57
+ export declare function addFinishReasonMapping(finishReason: string, stopReason: StopReason): void;
58
+ //# sourceMappingURL=stop-reason.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop-reason.d.ts","sourceRoot":"","sources":["../../src/utils/stop-reason.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;CAMf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,YAAY,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AA6CxE;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,CAmBjF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAGvF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAGpF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAGlF;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,KAAK,CAAC;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC,CAKD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CAEzF"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ /**
3
+ * Stop reason mapping utilities
4
+ *
5
+ * This module provides consistent mapping of completion finish reasons
6
+ * to Revenium stop reason constants across different LLM providers.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.STOP_REASONS = void 0;
10
+ exports.getStopReason = getStopReason;
11
+ exports.isSuccessfulCompletion = isSuccessfulCompletion;
12
+ exports.isTokenLimitReached = isTokenLimitReached;
13
+ exports.isErrorCompletion = isErrorCompletion;
14
+ exports.getSupportedFinishReasons = getSupportedFinishReasons;
15
+ exports.addFinishReasonMapping = addFinishReasonMapping;
16
+ /**
17
+ * Revenium stop reason constants
18
+ */
19
+ exports.STOP_REASONS = {
20
+ END: 'END',
21
+ TOKEN_LIMIT: 'TOKEN_LIMIT',
22
+ ERROR: 'ERROR',
23
+ END_SEQUENCE: 'END_SEQUENCE',
24
+ TIMEOUT: 'TIMEOUT'
25
+ };
26
+ /**
27
+ * Mapping of provider finish reasons to Revenium stop reasons
28
+ * Organized by provider for better maintainability
29
+ */
30
+ const FINISH_REASON_MAPPINGS = new Map([
31
+ // Standard OpenAI reasons
32
+ ['stop', exports.STOP_REASONS.END],
33
+ ['length', exports.STOP_REASONS.TOKEN_LIMIT],
34
+ ['max_tokens', exports.STOP_REASONS.TOKEN_LIMIT],
35
+ ['content_filter', exports.STOP_REASONS.ERROR],
36
+ ['function_call', exports.STOP_REASONS.END_SEQUENCE],
37
+ ['tool_calls', exports.STOP_REASONS.END_SEQUENCE],
38
+ // Anthropic reasons
39
+ ['end_turn', exports.STOP_REASONS.END],
40
+ ['max_tokens', exports.STOP_REASONS.TOKEN_LIMIT],
41
+ ['stop_sequence', exports.STOP_REASONS.END_SEQUENCE],
42
+ // Google/Vertex AI reasons
43
+ ['STOP', exports.STOP_REASONS.END],
44
+ ['MAX_TOKENS', exports.STOP_REASONS.TOKEN_LIMIT],
45
+ ['SAFETY', exports.STOP_REASONS.ERROR],
46
+ ['RECITATION', exports.STOP_REASONS.ERROR],
47
+ ['OTHER', exports.STOP_REASONS.ERROR],
48
+ // Cohere reasons
49
+ ['COMPLETE', exports.STOP_REASONS.END],
50
+ ['MAX_TOKENS', exports.STOP_REASONS.TOKEN_LIMIT],
51
+ ['ERROR', exports.STOP_REASONS.ERROR],
52
+ ['ERROR_TOXIC', exports.STOP_REASONS.ERROR],
53
+ // Common timeout/error reasons
54
+ ['timeout', exports.STOP_REASONS.TIMEOUT],
55
+ ['error', exports.STOP_REASONS.ERROR],
56
+ ['cancelled', exports.STOP_REASONS.ERROR],
57
+ ['failed', exports.STOP_REASONS.ERROR],
58
+ // End-of-sequence markers
59
+ ['eos', exports.STOP_REASONS.END],
60
+ ['end_sequence', exports.STOP_REASONS.END_SEQUENCE],
61
+ ['end_of_sequence', exports.STOP_REASONS.END_SEQUENCE]
62
+ ]);
63
+ /**
64
+ * Map completion finish reason to Revenium stop reason
65
+ * Works with multiple LLM providers through LiteLLM
66
+ *
67
+ * @param finishReason - The finish reason from the LLM provider
68
+ * @returns Standardized Revenium stop reason
69
+ */
70
+ function getStopReason(finishReason) {
71
+ if (!finishReason)
72
+ return exports.STOP_REASONS.END;
73
+ // Normalize the finish reason (lowercase, trim whitespace)
74
+ const normalizedReason = finishReason.toLowerCase().trim();
75
+ // Look up in the mapping
76
+ const mappedReason = FINISH_REASON_MAPPINGS.get(normalizedReason);
77
+ if (mappedReason)
78
+ return mappedReason;
79
+ // Fallback pattern matching for unknown reasons
80
+ if (normalizedReason.includes('token') || normalizedReason.includes('length'))
81
+ return exports.STOP_REASONS.TOKEN_LIMIT;
82
+ if (normalizedReason.includes('error') || normalizedReason.includes('fail'))
83
+ return exports.STOP_REASONS.ERROR;
84
+ if (normalizedReason.includes('timeout'))
85
+ return exports.STOP_REASONS.TIMEOUT;
86
+ if (normalizedReason.includes('function') || normalizedReason.includes('tool'))
87
+ return exports.STOP_REASONS.END_SEQUENCE;
88
+ // Default fallback
89
+ return exports.STOP_REASONS.END;
90
+ }
91
+ /**
92
+ * Check if a finish reason indicates a successful completion
93
+ * @param finishReason - The finish reason to check
94
+ * @returns True if the completion was successful
95
+ */
96
+ function isSuccessfulCompletion(finishReason) {
97
+ const stopReason = getStopReason(finishReason);
98
+ return stopReason === exports.STOP_REASONS.END || stopReason === exports.STOP_REASONS.END_SEQUENCE;
99
+ }
100
+ /**
101
+ * Check if a finish reason indicates a token limit was reached
102
+ * @param finishReason - The finish reason to check
103
+ * @returns True if token limit was reached
104
+ */
105
+ function isTokenLimitReached(finishReason) {
106
+ const stopReason = getStopReason(finishReason);
107
+ return stopReason === exports.STOP_REASONS.TOKEN_LIMIT;
108
+ }
109
+ /**
110
+ * Check if a finish reason indicates an error occurred
111
+ * @param finishReason - The finish reason to check
112
+ * @returns True if an error occurred
113
+ */
114
+ function isErrorCompletion(finishReason) {
115
+ const stopReason = getStopReason(finishReason);
116
+ return stopReason === exports.STOP_REASONS.ERROR || stopReason === exports.STOP_REASONS.TIMEOUT;
117
+ }
118
+ /**
119
+ * Get all supported finish reasons and their mappings
120
+ * @returns Array of finish reason mappings
121
+ */
122
+ function getSupportedFinishReasons() {
123
+ return Array.from(FINISH_REASON_MAPPINGS.entries()).map(([finishReason, stopReason]) => ({
124
+ finishReason,
125
+ stopReason
126
+ }));
127
+ }
128
+ /**
129
+ * Add custom finish reason mapping
130
+ * @param finishReason - The finish reason to map
131
+ * @param stopReason - The Revenium stop reason to map to
132
+ */
133
+ function addFinishReasonMapping(finishReason, stopReason) {
134
+ FINISH_REASON_MAPPINGS.set(finishReason.toLowerCase().trim(), stopReason);
135
+ }
136
+ //# sourceMappingURL=stop-reason.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop-reason.js","sourceRoot":"","sources":["../../src/utils/stop-reason.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAiEH,sCAmBC;AAOD,wDAGC;AAOD,kDAGC;AAOD,8CAGC;AAMD,8DAQC;AAOD,wDAEC;AAvID;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,GAAG,EAAE,KAAK;IACV,WAAW,EAAE,aAAa;IAC1B,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,cAAc;IAC5B,OAAO,EAAE,SAAS;CACV,CAAC;AAIX;;;GAGG;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAqB;IACzD,0BAA0B;IAC1B,CAAC,MAAM,EAAE,oBAAY,CAAC,GAAG,CAAC;IAC1B,CAAC,QAAQ,EAAE,oBAAY,CAAC,WAAW,CAAC;IACpC,CAAC,YAAY,EAAE,oBAAY,CAAC,WAAW,CAAC;IACxC,CAAC,gBAAgB,EAAE,oBAAY,CAAC,KAAK,CAAC;IACtC,CAAC,eAAe,EAAE,oBAAY,CAAC,YAAY,CAAC;IAC5C,CAAC,YAAY,EAAE,oBAAY,CAAC,YAAY,CAAC;IAEzC,oBAAoB;IACpB,CAAC,UAAU,EAAE,oBAAY,CAAC,GAAG,CAAC;IAC9B,CAAC,YAAY,EAAE,oBAAY,CAAC,WAAW,CAAC;IACxC,CAAC,eAAe,EAAE,oBAAY,CAAC,YAAY,CAAC;IAE5C,2BAA2B;IAC3B,CAAC,MAAM,EAAE,oBAAY,CAAC,GAAG,CAAC;IAC1B,CAAC,YAAY,EAAE,oBAAY,CAAC,WAAW,CAAC;IACxC,CAAC,QAAQ,EAAE,oBAAY,CAAC,KAAK,CAAC;IAC9B,CAAC,YAAY,EAAE,oBAAY,CAAC,KAAK,CAAC;IAClC,CAAC,OAAO,EAAE,oBAAY,CAAC,KAAK,CAAC;IAE7B,iBAAiB;IACjB,CAAC,UAAU,EAAE,oBAAY,CAAC,GAAG,CAAC;IAC9B,CAAC,YAAY,EAAE,oBAAY,CAAC,WAAW,CAAC;IACxC,CAAC,OAAO,EAAE,oBAAY,CAAC,KAAK,CAAC;IAC7B,CAAC,aAAa,EAAE,oBAAY,CAAC,KAAK,CAAC;IAEnC,+BAA+B;IAC/B,CAAC,SAAS,EAAE,oBAAY,CAAC,OAAO,CAAC;IACjC,CAAC,OAAO,EAAE,oBAAY,CAAC,KAAK,CAAC;IAC7B,CAAC,WAAW,EAAE,oBAAY,CAAC,KAAK,CAAC;IACjC,CAAC,QAAQ,EAAE,oBAAY,CAAC,KAAK,CAAC;IAE9B,0BAA0B;IAC1B,CAAC,KAAK,EAAE,oBAAY,CAAC,GAAG,CAAC;IACzB,CAAC,cAAc,EAAE,oBAAY,CAAC,YAAY,CAAC;IAC3C,CAAC,iBAAiB,EAAE,oBAAY,CAAC,YAAY,CAAC;CAC/C,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,YAAuC;IACnE,IAAI,CAAC,YAAY;QAAE,OAAO,oBAAY,CAAC,GAAG,CAAC;IAE3C,2DAA2D;IAC3D,MAAM,gBAAgB,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAE3D,yBAAyB;IACzB,MAAM,YAAY,GAAG,sBAAsB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAElE,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAEtC,gDAAgD;IAChD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,oBAAY,CAAC,WAAW,CAAC;IAC/G,IAAI,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,oBAAY,CAAC,KAAK,CAAC;IACvG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,oBAAY,CAAC,OAAO,CAAC;IACtE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,oBAAY,CAAC,YAAY,CAAC;IAEjH,mBAAmB;IACnB,OAAO,oBAAY,CAAC,GAAG,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,YAAuC;IAC5E,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAC/C,OAAO,UAAU,KAAK,oBAAY,CAAC,GAAG,IAAI,UAAU,KAAK,oBAAY,CAAC,YAAY,CAAC;AACrF,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,YAAuC;IACzE,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAC/C,OAAO,UAAU,KAAK,oBAAY,CAAC,WAAW,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,YAAuC;IACvE,MAAM,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAC/C,OAAO,UAAU,KAAK,oBAAY,CAAC,KAAK,IAAI,UAAU,KAAK,oBAAY,CAAC,OAAO,CAAC;AAClF,CAAC;AAED;;;GAGG;AACH,SAAgB,yBAAyB;IAIvC,OAAO,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;QACvF,YAAY;QACZ,UAAU;KACX,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,YAAoB,EAAE,UAAsB;IACjF,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Summary Printer Module
3
+ *
4
+ * Provides terminal output for cost/metrics summary after API requests.
5
+ * Fetches cost data from Revenium's completions API and formats for console display.
6
+ *
7
+ * NOTE: This module intentionally uses console.log() for user-facing output,
8
+ * which is an exception to the standard logging practices.
9
+ * The Logger class is used for debug/error messages, while console.log
10
+ * is used for the formatted summary that users want to see in their terminal.
11
+ */
12
+ import { ReveniumPayload } from "../types";
13
+ type SummaryFormat = "human" | "json";
14
+ interface Config {
15
+ reveniumApiKey?: string;
16
+ reveniumBaseUrl?: string;
17
+ teamId?: string;
18
+ printSummary?: boolean | SummaryFormat;
19
+ }
20
+ export declare function setConfig(config: Config): void;
21
+ export declare function printUsageSummary(payload: ReveniumPayload): void;
22
+ export {};
23
+ //# sourceMappingURL=summary-printer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary-printer.d.ts","sourceRoot":"","sources":["../../src/utils/summary-printer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,KAAK,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAEtC,UAAU,MAAM;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;CACxC;AAID,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE9C;AAsSD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CA0BhE"}
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setConfig = setConfig;
4
+ exports.printUsageSummary = printUsageSummary;
5
+ const config_1 = require("../config");
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, config_1.getLogger)().debug("No config available for summary printing");
29
+ return null;
30
+ }
31
+ if (!config.teamId) {
32
+ (0, config_1.getLogger)().debug("Team ID not configured, skipping cost retrieval for summary");
33
+ return null;
34
+ }
35
+ const baseUrl = (config.reveniumBaseUrl || DEFAULT_REVENIUM_BASE_URL).replace(/\/+$/, "");
36
+ const url = `${baseUrl}/profitstream/v2/api/sources/metrics/ai/completions`;
37
+ const teamId = config.teamId.trim();
38
+ const urlWithParams = `${url}?teamId=${encodeURIComponent(teamId)}&transactionId=${encodeURIComponent(transactionId)}`;
39
+ (0, config_1.getLogger)().debug("Fetching completion metrics", { url: urlWithParams });
40
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
41
+ // Create an AbortController with timeout to prevent hung requests from keeping Node process alive
42
+ const controller = new AbortController();
43
+ const timeoutId = setTimeout(() => controller.abort(), FETCH_TIMEOUT);
44
+ // Unref the timer so it doesn't keep the process alive
45
+ if (typeof timeoutId.unref === "function") {
46
+ timeoutId.unref();
47
+ }
48
+ try {
49
+ const response = await fetch(urlWithParams, {
50
+ method: "GET",
51
+ headers: {
52
+ Accept: "application/json",
53
+ "x-api-key": config.reveniumApiKey || "",
54
+ },
55
+ signal: controller.signal,
56
+ });
57
+ if (!response.ok) {
58
+ try {
59
+ await response.text();
60
+ }
61
+ catch { }
62
+ (0, config_1.getLogger)().debug(`Completions metrics API returned ${response.status}`, {
63
+ attempt: attempt + 1,
64
+ });
65
+ if (attempt < maxRetries - 1) {
66
+ await delayWithUnref(retryDelay);
67
+ continue;
68
+ }
69
+ return null;
70
+ }
71
+ const data = (await response.json());
72
+ const completions = data._embedded?.aICompletionMetricResourceList;
73
+ if (completions && completions.length > 0) {
74
+ return completions[0];
75
+ }
76
+ if (attempt < maxRetries - 1) {
77
+ (0, config_1.getLogger)().debug(`Waiting for metrics to aggregate (attempt ${attempt + 1}/${maxRetries})...`);
78
+ await delayWithUnref(retryDelay);
79
+ }
80
+ }
81
+ catch (error) {
82
+ (0, config_1.getLogger)().debug("Failed to fetch completion metrics", {
83
+ error: error instanceof Error ? error.message : String(error),
84
+ attempt: attempt + 1,
85
+ });
86
+ if (attempt < maxRetries - 1) {
87
+ await delayWithUnref(retryDelay);
88
+ }
89
+ }
90
+ finally {
91
+ clearTimeout(timeoutId);
92
+ }
93
+ }
94
+ return null;
95
+ }
96
+ function isSummaryFormat(value) {
97
+ return value === "human" || value === "json";
98
+ }
99
+ function formatAndPrintJsonSummary(payload, metrics) {
100
+ const config = getConfig();
101
+ const summary = {
102
+ model: payload.model,
103
+ provider: payload.provider,
104
+ durationSeconds: payload.requestDuration / 1000,
105
+ inputTokenCount: payload.inputTokenCount,
106
+ outputTokenCount: payload.outputTokenCount,
107
+ totalTokenCount: payload.totalTokenCount,
108
+ cost: typeof metrics?.totalCost === "number" ? metrics.totalCost : null,
109
+ };
110
+ if (summary.cost === null) {
111
+ summary.costStatus = config?.teamId ? "pending" : "unavailable";
112
+ }
113
+ if (payload.traceId) {
114
+ summary.traceId = payload.traceId;
115
+ }
116
+ console.log(JSON.stringify(summary));
117
+ }
118
+ function formatAndPrintHumanSummary(payload, metrics) {
119
+ console.log("\n" + "=".repeat(60));
120
+ console.log("šŸ“Š REVENIUM USAGE SUMMARY");
121
+ console.log("=".repeat(60));
122
+ console.log(`šŸ¤– Model: ${payload.model}`);
123
+ console.log(`šŸ¢ Provider: ${payload.provider}`);
124
+ console.log(`ā±ļø Duration: ${(payload.requestDuration / 1000).toFixed(2)}s`);
125
+ console.log("\nšŸ’¬ Token Usage:");
126
+ console.log(` šŸ“„ Input Tokens: ${(payload.inputTokenCount ?? 0).toLocaleString()}`);
127
+ console.log(` šŸ“¤ Output Tokens: ${(payload.outputTokenCount ?? 0).toLocaleString()}`);
128
+ console.log(` šŸ“Š Total Tokens: ${(payload.totalTokenCount ?? 0).toLocaleString()}`);
129
+ if (typeof metrics?.totalCost === "number") {
130
+ console.log(`\nšŸ’° Cost: $${metrics.totalCost.toFixed(6)}`);
131
+ }
132
+ else {
133
+ const config = getConfig();
134
+ if (!config?.teamId) {
135
+ console.log(`\nšŸ’° Cost: Set REVENIUM_TEAM_ID in .env to see pricing`);
136
+ }
137
+ else {
138
+ console.log(`\nšŸ’° Cost: (pending aggregation)`);
139
+ }
140
+ }
141
+ if (payload.traceId) {
142
+ console.log(`\nšŸ”– Trace ID: ${payload.traceId}`);
143
+ }
144
+ console.log("=".repeat(60) + "\n");
145
+ }
146
+ function formatAndPrintSummary(payload, metrics, format) {
147
+ if (format === "json") {
148
+ formatAndPrintJsonSummary(payload, metrics);
149
+ }
150
+ else {
151
+ formatAndPrintHumanSummary(payload, metrics);
152
+ }
153
+ }
154
+ function safeFormatAndPrintSummary(payload, metrics, format) {
155
+ try {
156
+ formatAndPrintSummary(payload, metrics, format);
157
+ }
158
+ catch (error) {
159
+ (0, config_1.getLogger)().debug("Failed to format and print summary", {
160
+ error: error instanceof Error ? error.message : String(error),
161
+ });
162
+ }
163
+ }
164
+ function getSummaryFormat(value) {
165
+ if (!value)
166
+ return null;
167
+ if (value === true)
168
+ return "human";
169
+ if (isSummaryFormat(value)) {
170
+ return value;
171
+ }
172
+ return null;
173
+ }
174
+ /**
175
+ * Initialize config from environment variables if not already set
176
+ * This ensures the summary printer works even if setConfig() is never called
177
+ */
178
+ function initializeConfigFromEnv() {
179
+ if (globalConfig) {
180
+ return; // Already initialized
181
+ }
182
+ const printSummaryEnv = process.env.REVENIUM_PRINT_SUMMARY;
183
+ const teamId = process.env.REVENIUM_TEAM_ID;
184
+ const reveniumApiKey = process.env.REVENIUM_METERING_API_KEY;
185
+ const reveniumBaseUrl = process.env.REVENIUM_METERING_BASE_URL;
186
+ // Parse REVENIUM_PRINT_SUMMARY: env vars are always strings, so "true" !== true
187
+ let parsedPrintSummary;
188
+ if (printSummaryEnv === "true") {
189
+ parsedPrintSummary = true;
190
+ }
191
+ else if (printSummaryEnv === "false") {
192
+ parsedPrintSummary = false;
193
+ }
194
+ else if (printSummaryEnv === "human" || printSummaryEnv === "json") {
195
+ parsedPrintSummary = printSummaryEnv;
196
+ }
197
+ else {
198
+ parsedPrintSummary = undefined;
199
+ }
200
+ if (parsedPrintSummary || teamId) {
201
+ globalConfig = {
202
+ printSummary: parsedPrintSummary,
203
+ teamId,
204
+ reveniumApiKey,
205
+ reveniumBaseUrl,
206
+ };
207
+ }
208
+ }
209
+ function printUsageSummary(payload) {
210
+ // Initialize from env vars if needed
211
+ initializeConfigFromEnv();
212
+ const config = getConfig();
213
+ const format = getSummaryFormat(config?.printSummary);
214
+ if (!format) {
215
+ return;
216
+ }
217
+ if (config?.teamId && payload.transactionId) {
218
+ fetchCompletionMetrics(payload.transactionId)
219
+ .then((metrics) => {
220
+ safeFormatAndPrintSummary(payload, metrics, format);
221
+ })
222
+ .catch((error) => {
223
+ (0, config_1.getLogger)().debug("Failed to print usage summary with metrics", {
224
+ error: error instanceof Error ? error.message : String(error),
225
+ });
226
+ safeFormatAndPrintSummary(payload, null, format);
227
+ })
228
+ .catch(() => { });
229
+ }
230
+ else {
231
+ safeFormatAndPrintSummary(payload, null, format);
232
+ }
233
+ }
234
+ //# 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,10 @@
1
+ export declare function getEnvironment(): string | null;
2
+ export declare function getRegion(): Promise<string | null>;
3
+ export declare function getCredentialAlias(): string | null;
4
+ export declare function getTraceType(): string | null;
5
+ export declare function getTraceName(): string | null;
6
+ export declare function detectOperationSubtype(requestBody?: any): string | null;
7
+ export declare function getParentTransactionId(): string | null;
8
+ export declare function getTransactionName(): string | null;
9
+ export declare function getRetryNumber(): number;
10
+ //# sourceMappingURL=trace-fields.d.ts.map