openlit 1.10.0 → 1.12.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 (195) hide show
  1. package/README.md +35 -1
  2. package/dist/config.d.ts +12 -4
  3. package/dist/config.js +7 -17
  4. package/dist/config.js.map +1 -1
  5. package/dist/evals/llm/anthropic.js +10 -6
  6. package/dist/evals/llm/anthropic.js.map +1 -1
  7. package/dist/evals/llm/openai.js +9 -5
  8. package/dist/evals/llm/openai.js.map +1 -1
  9. package/dist/features/__tests__/rule-engine.test.d.ts +1 -0
  10. package/dist/features/__tests__/rule-engine.test.js +146 -0
  11. package/dist/features/__tests__/rule-engine.test.js.map +1 -0
  12. package/dist/features/base.d.ts +2 -0
  13. package/dist/features/base.js +2 -0
  14. package/dist/features/base.js.map +1 -1
  15. package/dist/features/rule-engine.d.ts +6 -0
  16. package/dist/features/rule-engine.js +60 -0
  17. package/dist/features/rule-engine.js.map +1 -0
  18. package/dist/features/vault.js +1 -1
  19. package/dist/features/vault.js.map +1 -1
  20. package/dist/helpers.d.ts +93 -1
  21. package/dist/helpers.js +270 -8
  22. package/dist/helpers.js.map +1 -1
  23. package/dist/index.d.ts +6 -5
  24. package/dist/index.js +95 -50
  25. package/dist/index.js.map +1 -1
  26. package/dist/instrumentation/__tests__/anthropic-wrapper.test.js +215 -27
  27. package/dist/instrumentation/__tests__/anthropic-wrapper.test.js.map +1 -1
  28. package/dist/instrumentation/__tests__/base-wrapper.test.js +19 -23
  29. package/dist/instrumentation/__tests__/base-wrapper.test.js.map +1 -1
  30. package/dist/instrumentation/__tests__/bedrock-trace-comparison.test.d.ts +1 -0
  31. package/dist/instrumentation/__tests__/bedrock-trace-comparison.test.js +422 -0
  32. package/dist/instrumentation/__tests__/bedrock-trace-comparison.test.js.map +1 -0
  33. package/dist/instrumentation/__tests__/chroma-trace-comparison.test.js +1 -1
  34. package/dist/instrumentation/__tests__/chroma-trace-comparison.test.js.map +1 -1
  35. package/dist/instrumentation/__tests__/cohere-wrapper.test.js +150 -25
  36. package/dist/instrumentation/__tests__/cohere-wrapper.test.js.map +1 -1
  37. package/dist/instrumentation/__tests__/google-ai-trace-comparison.test.js +152 -33
  38. package/dist/instrumentation/__tests__/google-ai-trace-comparison.test.js.map +1 -1
  39. package/dist/instrumentation/__tests__/groq-trace-comparison.test.js +391 -45
  40. package/dist/instrumentation/__tests__/groq-trace-comparison.test.js.map +1 -1
  41. package/dist/instrumentation/__tests__/huggingface-trace-comparison.test.d.ts +2 -2
  42. package/dist/instrumentation/__tests__/huggingface-trace-comparison.test.js +323 -31
  43. package/dist/instrumentation/__tests__/huggingface-trace-comparison.test.js.map +1 -1
  44. package/dist/instrumentation/__tests__/langchain-wrapper.test.d.ts +1 -0
  45. package/dist/instrumentation/__tests__/langchain-wrapper.test.js +282 -0
  46. package/dist/instrumentation/__tests__/langchain-wrapper.test.js.map +1 -0
  47. package/dist/instrumentation/__tests__/milvus-trace-comparison.test.js +1 -1
  48. package/dist/instrumentation/__tests__/milvus-trace-comparison.test.js.map +1 -1
  49. package/dist/instrumentation/__tests__/mistral-trace-comparison.test.d.ts +0 -3
  50. package/dist/instrumentation/__tests__/mistral-trace-comparison.test.js +275 -68
  51. package/dist/instrumentation/__tests__/mistral-trace-comparison.test.js.map +1 -1
  52. package/dist/instrumentation/__tests__/openai-wrapper.test.js +7 -9
  53. package/dist/instrumentation/__tests__/openai-wrapper.test.js.map +1 -1
  54. package/dist/instrumentation/__tests__/qdrant-trace-comparison.test.js +1 -1
  55. package/dist/instrumentation/__tests__/qdrant-trace-comparison.test.js.map +1 -1
  56. package/dist/instrumentation/__tests__/replicate-trace-comparison.test.d.ts +2 -1
  57. package/dist/instrumentation/__tests__/replicate-trace-comparison.test.js +209 -21
  58. package/dist/instrumentation/__tests__/replicate-trace-comparison.test.js.map +1 -1
  59. package/dist/instrumentation/__tests__/together-trace-comparison.test.js +231 -51
  60. package/dist/instrumentation/__tests__/together-trace-comparison.test.js.map +1 -1
  61. package/dist/instrumentation/__tests__/vercel-ai-trace-comparison.test.d.ts +8 -0
  62. package/dist/instrumentation/__tests__/vercel-ai-trace-comparison.test.js +446 -0
  63. package/dist/instrumentation/__tests__/vercel-ai-trace-comparison.test.js.map +1 -0
  64. package/dist/instrumentation/anthropic/index.d.ts +2 -3
  65. package/dist/instrumentation/anthropic/index.js.map +1 -1
  66. package/dist/instrumentation/anthropic/wrapper.d.ts +1 -3
  67. package/dist/instrumentation/anthropic/wrapper.js +211 -91
  68. package/dist/instrumentation/anthropic/wrapper.js.map +1 -1
  69. package/dist/instrumentation/azure-ai-inference/index.d.ts +11 -0
  70. package/dist/instrumentation/azure-ai-inference/index.js +76 -0
  71. package/dist/instrumentation/azure-ai-inference/index.js.map +1 -0
  72. package/dist/instrumentation/azure-ai-inference/wrapper.d.ts +42 -0
  73. package/dist/instrumentation/azure-ai-inference/wrapper.js +515 -0
  74. package/dist/instrumentation/azure-ai-inference/wrapper.js.map +1 -0
  75. package/dist/instrumentation/base-wrapper.d.ts +2 -1
  76. package/dist/instrumentation/base-wrapper.js +35 -23
  77. package/dist/instrumentation/base-wrapper.js.map +1 -1
  78. package/dist/instrumentation/bedrock/wrapper.d.ts +21 -3
  79. package/dist/instrumentation/bedrock/wrapper.js +318 -265
  80. package/dist/instrumentation/bedrock/wrapper.js.map +1 -1
  81. package/dist/instrumentation/chroma/wrapper.js +1 -1
  82. package/dist/instrumentation/chroma/wrapper.js.map +1 -1
  83. package/dist/instrumentation/claude-agent-sdk/index.d.ts +23 -0
  84. package/dist/instrumentation/claude-agent-sdk/index.js +83 -0
  85. package/dist/instrumentation/claude-agent-sdk/index.js.map +1 -0
  86. package/dist/instrumentation/claude-agent-sdk/wrapper.d.ts +13 -0
  87. package/dist/instrumentation/claude-agent-sdk/wrapper.js +1031 -0
  88. package/dist/instrumentation/claude-agent-sdk/wrapper.js.map +1 -0
  89. package/dist/instrumentation/cohere/index.d.ts +2 -3
  90. package/dist/instrumentation/cohere/index.js.map +1 -1
  91. package/dist/instrumentation/cohere/wrapper.d.ts +1 -1
  92. package/dist/instrumentation/cohere/wrapper.js +215 -56
  93. package/dist/instrumentation/cohere/wrapper.js.map +1 -1
  94. package/dist/instrumentation/google-adk/index.d.ts +57 -0
  95. package/dist/instrumentation/google-adk/index.js +371 -0
  96. package/dist/instrumentation/google-adk/index.js.map +1 -0
  97. package/dist/instrumentation/google-adk/utils.d.ts +45 -0
  98. package/dist/instrumentation/google-adk/utils.js +663 -0
  99. package/dist/instrumentation/google-adk/utils.js.map +1 -0
  100. package/dist/instrumentation/google-adk/wrapper.d.ts +11 -0
  101. package/dist/instrumentation/google-adk/wrapper.js +391 -0
  102. package/dist/instrumentation/google-adk/wrapper.js.map +1 -0
  103. package/dist/instrumentation/google-ai/wrapper.d.ts +7 -4
  104. package/dist/instrumentation/google-ai/wrapper.js +197 -61
  105. package/dist/instrumentation/google-ai/wrapper.js.map +1 -1
  106. package/dist/instrumentation/groq/wrapper.js +137 -65
  107. package/dist/instrumentation/groq/wrapper.js.map +1 -1
  108. package/dist/instrumentation/huggingface/wrapper.js +241 -39
  109. package/dist/instrumentation/huggingface/wrapper.js.map +1 -1
  110. package/dist/instrumentation/index.d.ts +2 -2
  111. package/dist/instrumentation/index.js +64 -6
  112. package/dist/instrumentation/index.js.map +1 -1
  113. package/dist/instrumentation/langchain/index.d.ts +0 -7
  114. package/dist/instrumentation/langchain/index.js +2 -20
  115. package/dist/instrumentation/langchain/index.js.map +1 -1
  116. package/dist/instrumentation/langchain/wrapper.d.ts +35 -0
  117. package/dist/instrumentation/langchain/wrapper.js +1098 -184
  118. package/dist/instrumentation/langchain/wrapper.js.map +1 -1
  119. package/dist/instrumentation/langgraph/index.d.ts +12 -0
  120. package/dist/instrumentation/langgraph/index.js +99 -0
  121. package/dist/instrumentation/langgraph/index.js.map +1 -0
  122. package/dist/instrumentation/langgraph/wrapper.d.ts +20 -0
  123. package/dist/instrumentation/langgraph/wrapper.js +619 -0
  124. package/dist/instrumentation/langgraph/wrapper.js.map +1 -0
  125. package/dist/instrumentation/llamaindex/index.d.ts +31 -6
  126. package/dist/instrumentation/llamaindex/index.js +180 -61
  127. package/dist/instrumentation/llamaindex/index.js.map +1 -1
  128. package/dist/instrumentation/llamaindex/wrapper.d.ts +15 -3
  129. package/dist/instrumentation/llamaindex/wrapper.js +670 -179
  130. package/dist/instrumentation/llamaindex/wrapper.js.map +1 -1
  131. package/dist/instrumentation/milvus/wrapper.js +1 -1
  132. package/dist/instrumentation/milvus/wrapper.js.map +1 -1
  133. package/dist/instrumentation/mistral/wrapper.js +154 -79
  134. package/dist/instrumentation/mistral/wrapper.js.map +1 -1
  135. package/dist/instrumentation/ollama/index.js +33 -4
  136. package/dist/instrumentation/ollama/index.js.map +1 -1
  137. package/dist/instrumentation/ollama/wrapper.d.ts +28 -2
  138. package/dist/instrumentation/ollama/wrapper.js +432 -48
  139. package/dist/instrumentation/ollama/wrapper.js.map +1 -1
  140. package/dist/instrumentation/openai/index.d.ts +2 -3
  141. package/dist/instrumentation/openai/index.js.map +1 -1
  142. package/dist/instrumentation/openai/wrapper.js +293 -194
  143. package/dist/instrumentation/openai/wrapper.js.map +1 -1
  144. package/dist/instrumentation/openai-agents/index.d.ts +20 -0
  145. package/dist/instrumentation/openai-agents/index.js +174 -0
  146. package/dist/instrumentation/openai-agents/index.js.map +1 -0
  147. package/dist/instrumentation/openai-agents/processor.d.ts +35 -0
  148. package/dist/instrumentation/openai-agents/processor.js +249 -0
  149. package/dist/instrumentation/openai-agents/processor.js.map +1 -0
  150. package/dist/instrumentation/openai-agents/utils.d.ts +20 -0
  151. package/dist/instrumentation/openai-agents/utils.js +624 -0
  152. package/dist/instrumentation/openai-agents/utils.js.map +1 -0
  153. package/dist/instrumentation/pinecone/wrapper.js +2 -2
  154. package/dist/instrumentation/pinecone/wrapper.js.map +1 -1
  155. package/dist/instrumentation/qdrant/wrapper.js +1 -1
  156. package/dist/instrumentation/qdrant/wrapper.js.map +1 -1
  157. package/dist/instrumentation/replicate/wrapper.js +103 -21
  158. package/dist/instrumentation/replicate/wrapper.js.map +1 -1
  159. package/dist/instrumentation/strands/index.d.ts +21 -0
  160. package/dist/instrumentation/strands/index.js +83 -0
  161. package/dist/instrumentation/strands/index.js.map +1 -0
  162. package/dist/instrumentation/strands/processor.d.ts +45 -0
  163. package/dist/instrumentation/strands/processor.js +545 -0
  164. package/dist/instrumentation/strands/processor.js.map +1 -0
  165. package/dist/instrumentation/strands/utils.d.ts +24 -0
  166. package/dist/instrumentation/strands/utils.js +360 -0
  167. package/dist/instrumentation/strands/utils.js.map +1 -0
  168. package/dist/instrumentation/together/wrapper.js +125 -51
  169. package/dist/instrumentation/together/wrapper.js.map +1 -1
  170. package/dist/instrumentation/vercel-ai/wrapper.d.ts +28 -2
  171. package/dist/instrumentation/vercel-ai/wrapper.js +314 -164
  172. package/dist/instrumentation/vercel-ai/wrapper.js.map +1 -1
  173. package/dist/llm/anthropic.js +10 -6
  174. package/dist/llm/anthropic.js.map +1 -1
  175. package/dist/llm/openai.js +9 -5
  176. package/dist/llm/openai.js.map +1 -1
  177. package/dist/otel/__tests__/metrics.test.js +16 -27
  178. package/dist/otel/__tests__/metrics.test.js.map +1 -1
  179. package/dist/otel/events.d.ts +11 -0
  180. package/dist/otel/events.js +74 -0
  181. package/dist/otel/events.js.map +1 -0
  182. package/dist/otel/metrics.d.ts +5 -6
  183. package/dist/otel/metrics.js +66 -48
  184. package/dist/otel/metrics.js.map +1 -1
  185. package/dist/otel/tracing.d.ts +6 -2
  186. package/dist/otel/tracing.js +71 -24
  187. package/dist/otel/tracing.js.map +1 -1
  188. package/dist/otel/utils.d.ts +11 -0
  189. package/dist/otel/utils.js +34 -0
  190. package/dist/otel/utils.js.map +1 -0
  191. package/dist/semantic-convention.d.ts +44 -5
  192. package/dist/semantic-convention.js +51 -8
  193. package/dist/semantic-convention.js.map +1 -1
  194. package/dist/types.d.ts +74 -22
  195. package/package.json +41 -9
package/dist/helpers.js CHANGED
@@ -1,7 +1,217 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isFrameworkLlmActive = isFrameworkLlmActive;
7
+ exports.runWithFrameworkLlm = runWithFrameworkLlm;
8
+ exports.setFrameworkLlmActive = setFrameworkLlmActive;
9
+ exports.resetFrameworkLlmActive = resetFrameworkLlmActive;
10
+ exports.isLangGraphActive = isLangGraphActive;
11
+ exports.runWithLangGraph = runWithLangGraph;
12
+ exports.isCreateAgentActive = isCreateAgentActive;
13
+ exports.runWithCreateAgent = runWithCreateAgent;
14
+ exports.getLangGraphConversationId = getLangGraphConversationId;
15
+ exports.runWithLangGraphConversationId = runWithLangGraphConversationId;
16
+ exports.getFrameworkParentContext = getFrameworkParentContext;
17
+ exports.setFrameworkParentContext = setFrameworkParentContext;
18
+ exports.clearFrameworkParentContext = clearFrameworkParentContext;
19
+ exports.getServerAddressForProvider = getServerAddressForProvider;
20
+ exports.applyCustomSpanAttributes = applyCustomSpanAttributes;
21
+ exports.getMergedCustomAttributes = getMergedCustomAttributes;
22
+ exports.injectAdditionalAttributes = injectAdditionalAttributes;
23
+ exports.usingAttributes = usingAttributes;
3
24
  const js_tiktoken_1 = require("js-tiktoken");
4
25
  const api_1 = require("@opentelemetry/api");
26
+ const api_logs_1 = require("@opentelemetry/api-logs");
27
+ const async_hooks_1 = require("async_hooks");
28
+ const semantic_convention_1 = __importDefault(require("./semantic-convention"));
29
+ const events_1 = __importDefault(require("./otel/events"));
30
+ const config_1 = __importDefault(require("./config"));
31
+ /**
32
+ * AsyncLocalStorage for context-scoped custom span attributes.
33
+ * Mirrors Python's ContextVar _custom_span_attributes, used by
34
+ * usingAttributes() and injectAdditionalAttributes().
35
+ */
36
+ const _customSpanAttributes = new async_hooks_1.AsyncLocalStorage();
37
+ // ---------------------------------------------------------------------------
38
+ // Framework LLM span suppression flags (mirrors Python SDK ContextVars)
39
+ // ---------------------------------------------------------------------------
40
+ const _frameworkLlmActive = new async_hooks_1.AsyncLocalStorage();
41
+ /**
42
+ * Returns true when a framework instrumentor (LangChain, LiteLLM, etc.)
43
+ * owns the current LLM span. Provider-level wrappers (OpenAI, Anthropic, …)
44
+ * must skip their own span creation when this returns true.
45
+ */
46
+ function isFrameworkLlmActive() {
47
+ return _frameworkLlmActive.getStore() === true;
48
+ }
49
+ /**
50
+ * Run `fn` with the framework-LLM-active flag set. All provider wrappers
51
+ * invoked inside `fn` will see `isFrameworkLlmActive() === true`.
52
+ */
53
+ function runWithFrameworkLlm(fn) {
54
+ return _frameworkLlmActive.run(true, fn);
55
+ }
56
+ /**
57
+ * Set framework-LLM-active flag in the current execution context.
58
+ * Used by SpanProcessor-based instrumentations (Strands) where
59
+ * the processor observes spans rather than controlling execution.
60
+ * Mirrors Python's ContextVar.set(True) in Strands processor.
61
+ */
62
+ function setFrameworkLlmActive() {
63
+ _frameworkLlmActive.enterWith(true);
64
+ }
65
+ /**
66
+ * Reset framework-LLM-active flag in the current execution context.
67
+ * Mirrors Python's ContextVar.reset(token) in Strands processor.
68
+ */
69
+ function resetFrameworkLlmActive() {
70
+ _frameworkLlmActive.enterWith(false);
71
+ }
72
+ const _langGraphActive = new async_hooks_1.AsyncLocalStorage();
73
+ /**
74
+ * Returns true when a LangGraph wrapper is controlling execution.
75
+ * LangChain's callback handler skips its own invoke_workflow span when true.
76
+ */
77
+ function isLangGraphActive() {
78
+ return _langGraphActive.getStore() === true;
79
+ }
80
+ function runWithLangGraph(fn) {
81
+ return _langGraphActive.run(true, fn);
82
+ }
83
+ const _createAgentActive = new async_hooks_1.AsyncLocalStorage();
84
+ /**
85
+ * Returns true when a create_agent span is already being handled
86
+ * (prevents duplicate spans between LangChain and LangGraph).
87
+ */
88
+ function isCreateAgentActive() {
89
+ return _createAgentActive.getStore() === true;
90
+ }
91
+ function runWithCreateAgent(fn) {
92
+ return _createAgentActive.run(true, fn);
93
+ }
94
+ const _langGraphConversationId = new async_hooks_1.AsyncLocalStorage();
95
+ /**
96
+ * Propagate conversation ID from invoke_workflow to child node spans.
97
+ * Mirrors Python's set_langgraph_conversation_id / get_langgraph_conversation_id.
98
+ */
99
+ function getLangGraphConversationId() {
100
+ return _langGraphConversationId.getStore();
101
+ }
102
+ function runWithLangGraphConversationId(conversationId, fn) {
103
+ return _langGraphConversationId.run(conversationId, fn);
104
+ }
105
+ // ---------------------------------------------------------------------------
106
+ // Framework parent context propagation (mirrors Python context_api.attach)
107
+ // ---------------------------------------------------------------------------
108
+ const _frameworkParentContext = new async_hooks_1.AsyncLocalStorage();
109
+ /**
110
+ * Returns the OTel context set by a framework processor (OpenAI Agents, etc.)
111
+ * so that provider wrappers can create spans as children of framework spans.
112
+ * Mirrors Python's context_api.attach(set_span_in_context(span)).
113
+ */
114
+ function getFrameworkParentContext() {
115
+ return _frameworkParentContext.getStore() || undefined;
116
+ }
117
+ /**
118
+ * Set the OTel parent context for provider span creation.
119
+ * Called by processor-based frameworks that cannot use context.with().
120
+ */
121
+ function setFrameworkParentContext(ctx) {
122
+ _frameworkParentContext.enterWith(ctx);
123
+ }
124
+ /**
125
+ * Clear the framework parent context.
126
+ */
127
+ function clearFrameworkParentContext() {
128
+ _frameworkParentContext.enterWith(undefined);
129
+ }
130
+ // ---------------------------------------------------------------------------
131
+ // Provider default endpoints (mirrors Python PROVIDER_DEFAULT_ENDPOINTS)
132
+ // ---------------------------------------------------------------------------
133
+ const PROVIDER_DEFAULT_ENDPOINTS = {
134
+ openai: ['api.openai.com', 443],
135
+ anthropic: ['api.anthropic.com', 443],
136
+ google: ['generativelanguage.googleapis.com', 443],
137
+ 'gcp.gemini': ['generativelanguage.googleapis.com', 443],
138
+ 'gcp.vertex_ai': ['aiplatform.googleapis.com', 443],
139
+ mistral_ai: ['api.mistral.ai', 443],
140
+ groq: ['api.groq.com', 443],
141
+ together: ['api.together.xyz', 443],
142
+ fireworks: ['api.fireworks.ai', 443],
143
+ perplexity: ['api.perplexity.ai', 443],
144
+ deepinfra: ['api.deepinfra.com', 443],
145
+ 'aws.bedrock': ['bedrock-runtime.amazonaws.com', 443],
146
+ azure: ['openai.azure.com', 443],
147
+ 'azure.ai.openai': ['openai.azure.com', 443],
148
+ 'azure.ai.inference': ['inference.ai.azure.com', 443],
149
+ cohere: ['api.cohere.ai', 443],
150
+ ollama: ['localhost', 11434],
151
+ deepseek: ['api.deepseek.com', 443],
152
+ x_ai: ['api.x.ai', 443],
153
+ huggingface: ['api-inference.huggingface.co', 443],
154
+ };
155
+ function getServerAddressForProvider(provider) {
156
+ return PROVIDER_DEFAULT_ENDPOINTS[provider] || ['', 0];
157
+ }
158
+ /**
159
+ * Apply global (from init) and context-scoped (from usingAttributes /
160
+ * injectAdditionalAttributes) custom attributes to a span.
161
+ * Global attributes are applied first; context attributes override on conflict.
162
+ * Matches Python's _apply_custom_span_attributes().
163
+ */
164
+ function applyCustomSpanAttributes(span) {
165
+ const globalAttrs = config_1.default.customSpanAttributes;
166
+ if (globalAttrs) {
167
+ for (const [key, value] of Object.entries(globalAttrs)) {
168
+ span.setAttribute(key, value);
169
+ }
170
+ }
171
+ const contextAttrs = _customSpanAttributes.getStore();
172
+ if (contextAttrs) {
173
+ for (const [key, value] of Object.entries(contextAttrs)) {
174
+ span.setAttribute(key, value);
175
+ }
176
+ }
177
+ }
178
+ /**
179
+ * Get merged custom attributes (global + context) for use in events.
180
+ * Returns a flat object; context attributes override global on conflict.
181
+ */
182
+ function getMergedCustomAttributes() {
183
+ const merged = {};
184
+ const globalAttrs = config_1.default.customSpanAttributes;
185
+ if (globalAttrs) {
186
+ Object.assign(merged, globalAttrs);
187
+ }
188
+ const contextAttrs = _customSpanAttributes.getStore();
189
+ if (contextAttrs) {
190
+ Object.assign(merged, contextAttrs);
191
+ }
192
+ return merged;
193
+ }
194
+ /**
195
+ * Run a function with custom span attributes attached to all
196
+ * auto-instrumented spans created during its execution.
197
+ * Matches Python's openlit.inject_additional_attributes().
198
+ */
199
+ function injectAdditionalAttributes(fn, attributes) {
200
+ return _customSpanAttributes.run(attributes, fn);
201
+ }
202
+ /**
203
+ * Context wrapper that adds custom attributes to all auto-instrumented
204
+ * spans created within its callback scope.
205
+ * Matches Python's openlit.using_attributes() context manager.
206
+ *
207
+ * Usage:
208
+ * await usingAttributes({"user.id": "u1", "team": "ml"}, async () => {
209
+ * await client.chat.completions.create(...);
210
+ * });
211
+ */
212
+ function usingAttributes(attributes, fn) {
213
+ return _customSpanAttributes.run(attributes, fn);
214
+ }
5
215
  class OpenLitHelper {
6
216
  static openaiTokens(text, model) {
7
217
  try {
@@ -18,23 +228,38 @@ class OpenLitHelper {
18
228
  }
19
229
  static getChatModelCost(model, pricingInfo, promptTokens, completionTokens) {
20
230
  try {
21
- const cost = ((promptTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) * pricingInfo.chat[model].promptPrice +
22
- (completionTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) *
23
- pricingInfo.chat[model].completionPrice);
231
+ const chatPricing = pricingInfo?.chat;
232
+ if (!chatPricing)
233
+ return 0;
234
+ let modelPricing = chatPricing[model];
235
+ if (modelPricing == null && model.includes('/')) {
236
+ modelPricing = chatPricing[model.split('/', 2)[1]];
237
+ }
238
+ if (modelPricing == null)
239
+ return 0;
240
+ const cost = (promptTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) * modelPricing.promptPrice +
241
+ (completionTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) * modelPricing.completionPrice;
24
242
  return isNaN(cost) ? 0 : cost;
25
243
  }
26
- catch (error) {
27
- console.error(`Error in getChatModelCost: ${error}`);
244
+ catch {
28
245
  return 0;
29
246
  }
30
247
  }
31
248
  static getEmbedModelCost(model, pricingInfo, promptTokens) {
32
249
  try {
33
- const cost = (promptTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) * pricingInfo.embeddings[model];
250
+ const embedPricing = pricingInfo?.embeddings;
251
+ if (!embedPricing)
252
+ return 0;
253
+ let unitCost = embedPricing[model];
254
+ if (unitCost == null && model.includes('/')) {
255
+ unitCost = embedPricing[model.split('/', 2)[1]];
256
+ }
257
+ if (unitCost == null)
258
+ return 0;
259
+ const cost = (promptTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) * unitCost;
34
260
  return isNaN(cost) ? 0 : cost;
35
261
  }
36
- catch (error) {
37
- console.error(`Error in getEmbedModelCost: ${error}`);
262
+ catch {
38
263
  return 0;
39
264
  }
40
265
  }
@@ -205,9 +430,46 @@ class OpenLitHelper {
205
430
  return '[]';
206
431
  }
207
432
  }
433
+ /**
434
+ * Emit an inference event via the LoggerProvider, matching Python SDK's
435
+ * gen_ai.client.inference.operation.details event.
436
+ * Falls back to span.addEvent if LoggerProvider is not available.
437
+ */
438
+ static emitInferenceEvent(span, attrs) {
439
+ const eventAttributes = {};
440
+ const customAttrs = getMergedCustomAttributes();
441
+ for (const [key, value] of Object.entries(customAttrs)) {
442
+ if (value !== undefined && value !== null) {
443
+ eventAttributes[key] = value;
444
+ }
445
+ }
446
+ for (const [key, value] of Object.entries(attrs)) {
447
+ if (value !== undefined && value !== null) {
448
+ eventAttributes[key] = value;
449
+ }
450
+ }
451
+ if (events_1.default.logger) {
452
+ events_1.default.logger.emit({
453
+ eventName: semantic_convention_1.default.GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS,
454
+ context: api_1.trace.setSpan(api_1.context.active(), span),
455
+ severityNumber: api_logs_1.SeverityNumber.INFO,
456
+ severityText: 'INFO',
457
+ body: semantic_convention_1.default.GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS,
458
+ attributes: {
459
+ ...eventAttributes,
460
+ 'event.name': semantic_convention_1.default.GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS,
461
+ },
462
+ });
463
+ }
464
+ else {
465
+ span.addEvent(semantic_convention_1.default.GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS, eventAttributes);
466
+ }
467
+ }
208
468
  static handleException(span, error) {
209
469
  span.recordException(error);
210
470
  span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: error.message });
471
+ const errorType = error.constructor?.name || '_OTHER';
472
+ span.setAttribute(semantic_convention_1.default.ERROR_TYPE, errorType);
211
473
  }
212
474
  static async createStreamProxy(stream, generatorFuncResponse) {
213
475
  return new Proxy(stream, {
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;AAAA,6CAA8D;AAC9D,4CAA0D;AAE1D,MAAqB,aAAa;IAGhC,MAAM,CAAC,YAAY,CAAC,IAAY,EAAE,KAAa;QAC7C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,8BAAgB,EAAC,KAAsB,CAAC,CAAC;YAC1D,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAY;QAC/B,MAAM,QAAQ,GAAG,IAAA,8BAAgB,EAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,gBAAgB,CACrB,KAAa,EACb,WAAgB,EAChB,YAAoB,EACpB,gBAAwB;QAExB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CACX,CAAC,YAAY,GAAG,aAAa,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW;gBACxF,CAAC,gBAAgB,GAAG,aAAa,CAAC,mBAAmB,CAAC;oBACpD,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAC1C,CAAC;YACF,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;YACrD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,KAAa,EAAE,WAAgB,EAAE,YAAoB;QAC5E,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,YAAY,GAAG,aAAa,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAChG,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,KAAa,EAAE,WAAgB,EAAE,IAAY,EAAE,OAAe;QACrF,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;YACtD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,KAAa,EAAE,WAAgB,EAAE,MAAc;QACtE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC,mBAAmB,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5F,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,WAAgB;QAC5C,IAAI,UAAU,GAAG,4EAA4E,CAAC;QAC9F,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC;gBACH,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;YACjC,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC;YAED,IAAI,KAAK,EAAE,CAAC;gBACV,UAAU,GAAG,WAAW,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC;oBACH,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;wBACpC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;wBACrC,OAAO,IAAI,CAAC;oBACd,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;wBACrD,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAChB,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,oDAAoD,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,0DAA0D,KAAK,EAAE,CAAC,CAAC;YACjF,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CAAC,QAAe,EAAE,MAAe;QACxD,IAAI,CAAC;YACH,MAAM,YAAY,GAAU,EAAE,CAAC;YAE/B,IAAI,MAAM,EAAE,CAAC;gBACX,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACpF,CAAC;YAED,KAAK,MAAM,GAAG,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC;gBAChC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;gBAC5B,MAAM,KAAK,GAAU,EAAE,CAAC;gBAExB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,EAAE,CAAC;oBAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBACxC,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAClC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;wBAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;wBACpB,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;4BACjB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;wBACzD,CAAC;6BAAM,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;4BAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC;4BACtC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gCACpC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;4BAC3D,CAAC;wBACH,CAAC;6BAAM,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;4BACzB,yBAAyB;4BACzB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;4BACnC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gCACpC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;4BAC3D,CAAC;wBACH,CAAC;6BAAM,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC;4BAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;wBAC3G,CAAC;6BAAM,IAAI,CAAC,KAAK,aAAa,EAAE,CAAC;4BAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;wBACzK,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,yDAAyD;gBACzD,IAAI,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;oBACpD,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;wBAChC,IAAI,IAAI,GAAG,EAAE,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC;wBACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;4BAC7B,IAAI,CAAC;gCAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAAC,CAAC;4BAAC,MAAM,CAAC;gCAAC,IAAI,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;4BAAC,CAAC;wBAClE,CAAC;wBACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACrG,CAAC;gBACH,CAAC;gBAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,IAAY,EAAE,YAAoB,EAAE,SAAiB;QAC9E,IAAI,CAAC;YACH,MAAM,KAAK,GAAU,EAAE,CAAC;YAExB,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;oBAC3B,IAAI,IAAI,GAAG,EAAE,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC;oBACxD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC7B,IAAI,CAAC;4BAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAAC,CAAC;wBAAC,MAAM,CAAC;4BAAC,IAAI,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;wBAAC,CAAC;oBAClE,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,WAAW;wBACjB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;wBACf,IAAI,EAAE,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE;wBACxC,SAAS,EAAE,IAAI;qBAChB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/F,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,IAAU,EAAE,KAAY;QAC7C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAE,MAAW,EAAE,qBAA0B;QACrE,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;YACvB,GAAG,CAAE,MAAM,EAAE,IAAI,EAAE,QAAQ;gBACzB,IAAI,IAAI,KAAK,MAAM,CAAC,aAAa,EAAE,CAAC;oBAClC,OAAO,GAAG,EAAE,CAAC,qBAAqB,CAAA;gBACpC,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;YAC5C,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;;AAzNe,iCAAmB,GAAG,IAAI,CAAC;kBADxB,aAAa"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { resourceFromAttributes } from '@opentelemetry/resources';
2
- import { NodeSDK } from '@opentelemetry/sdk-node';
3
- import { OpenlitOptions } from './types';
2
+ import { OpenlitOptions, ResolvedOptions } from './types';
4
3
  import BaseOpenlit from './features/base';
4
+ import { usingAttributes, injectAdditionalAttributes } from './helpers';
5
5
  import { Hallucination, Bias, Toxicity, All } from './evals';
6
6
  import { PromptInjection } from './guard/prompt-injection';
7
7
  import { SensitiveTopic } from './guard/sensitive-topic';
@@ -21,8 +21,7 @@ declare const guard: {
21
21
  };
22
22
  declare class Openlit extends BaseOpenlit {
23
23
  static resource: ReturnType<typeof resourceFromAttributes>;
24
- static options: OpenlitOptions;
25
- static _sdk: NodeSDK;
24
+ static options: ResolvedOptions;
26
25
  static evals: {
27
26
  Hallucination: (options: ConstructorParameters<typeof Hallucination>[0]) => Hallucination;
28
27
  Bias: (options: ConstructorParameters<typeof Bias>[0]) => Bias;
@@ -40,7 +39,9 @@ declare class Openlit extends BaseOpenlit {
40
39
  declare const openlit: typeof Openlit & {
41
40
  evals: typeof evals;
42
41
  guard: typeof guard;
42
+ usingAttributes: typeof usingAttributes;
43
+ injectAdditionalAttributes: typeof injectAdditionalAttributes;
43
44
  };
44
45
  export default openlit;
45
- export { Openlit };
46
+ export { Openlit, usingAttributes, injectAdditionalAttributes };
46
47
  export type { OpenlitOptions } from './types';
package/dist/index.js CHANGED
@@ -3,13 +3,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Openlit = void 0;
6
+ exports.injectAdditionalAttributes = exports.usingAttributes = exports.Openlit = void 0;
7
7
  const resources_1 = require("@opentelemetry/resources");
8
8
  const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
9
- const sdk_node_1 = require("@opentelemetry/sdk-node");
9
+ const api_1 = require("@opentelemetry/api");
10
10
  const tracing_1 = __importDefault(require("./otel/tracing"));
11
+ const events_1 = __importDefault(require("./otel/events"));
11
12
  const constant_1 = require("./constant");
12
13
  const base_1 = __importDefault(require("./features/base"));
14
+ const config_1 = __importDefault(require("./config"));
15
+ const helpers_1 = __importDefault(require("./helpers"));
16
+ const helpers_2 = require("./helpers");
17
+ Object.defineProperty(exports, "usingAttributes", { enumerable: true, get: function () { return helpers_2.usingAttributes; } });
18
+ Object.defineProperty(exports, "injectAdditionalAttributes", { enumerable: true, get: function () { return helpers_2.injectAdditionalAttributes; } });
13
19
  const evals_1 = require("./evals");
14
20
  const metrics_1 = __importDefault(require("./otel/metrics"));
15
21
  const semantic_convention_1 = __importDefault(require("./semantic-convention"));
@@ -17,73 +23,110 @@ const prompt_injection_1 = require("./guard/prompt-injection");
17
23
  const sensitive_topic_1 = require("./guard/sensitive-topic");
18
24
  const topic_restriction_1 = require("./guard/topic-restriction");
19
25
  const all_1 = require("./guard/all");
20
- // Factory functions for evals
26
+ const utils_1 = require("./otel/utils");
21
27
  const evals = {
22
28
  Hallucination: (options) => new evals_1.Hallucination(options),
23
29
  Bias: (options) => new evals_1.Bias(options),
24
30
  Toxicity: (options) => new evals_1.Toxicity(options),
25
31
  All: (options) => new evals_1.All(options),
26
32
  };
27
- // Factory functions for guards
28
33
  const guard = {
29
34
  PromptInjection: (options) => new prompt_injection_1.PromptInjection(options),
30
35
  SensitiveTopic: (options) => new sensitive_topic_1.SensitiveTopic(options),
31
36
  TopicRestriction: (options) => new topic_restriction_1.TopicRestriction(options),
32
37
  All: (options) => new all_1.All(options),
33
38
  };
39
+ /**
40
+ * Resolve OpenlitOptions into a single ResolvedOptions object.
41
+ * Precedence: arg > env var > default.
42
+ */
43
+ function resolveOptions(options) {
44
+ const o = options || {};
45
+ const environment = o.environment ?? constant_1.DEFAULT_ENVIRONMENT;
46
+ const applicationName = o.applicationName ?? constant_1.DEFAULT_APPLICATION_NAME;
47
+ const rawEndpoint = o.otlpEndpoint ??
48
+ process.env.OTEL_EXPORTER_OTLP_ENDPOINT ??
49
+ undefined;
50
+ const otlpEndpoint = rawEndpoint
51
+ ? rawEndpoint.replace(/\/v1\/traces$/, '')
52
+ : undefined;
53
+ let otlpHeaders = o.otlpHeaders ?? undefined;
54
+ if (!otlpHeaders && process.env.OTEL_EXPORTER_OTLP_HEADERS) {
55
+ otlpHeaders = process.env.OTEL_EXPORTER_OTLP_HEADERS.split(',').reduce((acc, item) => {
56
+ const keyVal = item.split('=');
57
+ acc[keyVal[0]] = keyVal[1];
58
+ return acc;
59
+ }, {});
60
+ }
61
+ if (!otlpHeaders)
62
+ otlpHeaders = {};
63
+ let disableBatch = o.disableBatch ?? undefined;
64
+ const envDisableBatch = (0, utils_1.parseBoolEnv)('OPENLIT_DISABLE_BATCH');
65
+ if (disableBatch === undefined) {
66
+ disableBatch = envDisableBatch ?? false;
67
+ }
68
+ let captureMessageContent = o.captureMessageContent ?? undefined;
69
+ const envCapture = (0, utils_1.parseBoolEnv)('OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT');
70
+ if (captureMessageContent === undefined) {
71
+ captureMessageContent = envCapture ?? true;
72
+ }
73
+ let disableMetrics = o.disableMetrics ?? undefined;
74
+ const envDisableMetrics = (0, utils_1.parseBoolEnv)('OPENLIT_DISABLE_METRICS');
75
+ if (disableMetrics === undefined) {
76
+ disableMetrics = envDisableMetrics ?? false;
77
+ }
78
+ let disableEvents = o.disableEvents ?? undefined;
79
+ const envDisableEvents = (0, utils_1.parseBoolEnv)('OPENLIT_DISABLE_EVENTS');
80
+ if (disableEvents === undefined) {
81
+ disableEvents = envDisableEvents ?? false;
82
+ }
83
+ return {
84
+ environment,
85
+ applicationName,
86
+ tracer: o.tracer,
87
+ otlpEndpoint,
88
+ otlpHeaders,
89
+ disableBatch,
90
+ captureMessageContent,
91
+ disabledInstrumentors: o.disabledInstrumentors,
92
+ instrumentations: o.instrumentations,
93
+ disableMetrics,
94
+ disableEvents,
95
+ pricingJson: o.pricingJson,
96
+ maxContentLength: o.maxContentLength ?? null,
97
+ customSpanAttributes: o.customSpanAttributes ?? null,
98
+ };
99
+ }
34
100
  class Openlit extends base_1.default {
35
101
  static init(options) {
36
102
  try {
37
- const { environment = constant_1.DEFAULT_ENVIRONMENT, applicationName = constant_1.DEFAULT_APPLICATION_NAME } = options || {};
38
- const otlpEndpoint = (options?.otlpEndpoint || process.env.OTEL_EXPORTER_OTLP_ENDPOINT || "http://localhost:4318").replace(/\/v1\/traces$/, '');
39
- let otlpHeaders = options?.otlpHeaders;
40
- if (!otlpHeaders) {
41
- if (process.env.OTEL_EXPORTER_OTLP_HEADERS) {
42
- otlpHeaders = process.env.OTEL_EXPORTER_OTLP_HEADERS.split(',').reduce((acc, items) => {
43
- const keyVal = items.split('=');
44
- acc[keyVal[0]] = keyVal[1];
45
- return acc;
46
- }, {});
47
- }
48
- else {
49
- otlpHeaders = {};
50
- }
51
- }
52
- this.options = options || {};
53
- this.options.otlpEndpoint = otlpEndpoint;
54
- this.options.otlpHeaders = otlpHeaders;
55
- this.options.disableBatch =
56
- options?.disableBatch === undefined ? true : !!options.disableBatch;
103
+ // Enable OTel diagnostic logging so exporter errors (connection refused,
104
+ // 404, timeouts) are surfaced to the user — matches Python SDK behavior.
105
+ api_1.diag.setLogger(new api_1.DiagConsoleLogger(), api_1.DiagLogLevel.WARN);
106
+ const resolved = resolveOptions(options);
107
+ this.options = resolved;
57
108
  this.resource = (0, resources_1.resourceFromAttributes)({
58
- [semantic_conventions_1.ATTR_SERVICE_NAME]: applicationName,
59
- [semantic_convention_1.default.ATTR_DEPLOYMENT_ENVIRONMENT]: environment,
109
+ [semantic_conventions_1.ATTR_SERVICE_NAME]: resolved.applicationName,
110
+ [semantic_convention_1.default.ATTR_DEPLOYMENT_ENVIRONMENT]: resolved.environment,
60
111
  [semantic_conventions_1.ATTR_TELEMETRY_SDK_NAME]: constant_1.SDK_NAME,
61
112
  });
62
- tracing_1.default.setup({
63
- ...this.options,
64
- environment,
65
- applicationName,
66
- otlpEndpoint,
67
- otlpHeaders,
113
+ const setupBase = {
114
+ ...resolved,
68
115
  resource: this.resource,
69
- });
70
- const exportIntervalMillis = Number(process.env.OTEL_EXPORTER_OTLP_METRICS_EXPORT_INTERVAL ?? 60000) || 60000;
71
- metrics_1.default.setup({
72
- ...options,
73
- environment,
74
- applicationName,
75
- otlpEndpoint,
76
- otlpHeaders,
77
- resource: this.resource,
78
- exportIntervalMillis: exportIntervalMillis,
79
- });
80
- this._sdk = new sdk_node_1.NodeSDK({
81
- resource: this.resource,
82
- traceExporter: tracing_1.default.traceExporter,
83
- metricReader: metrics_1.default.metricReaders[0],
84
- });
85
- // This was causing the traceProvider initilization with multiple instances.
86
- // this._sdk.start();
116
+ };
117
+ tracing_1.default.setup(setupBase);
118
+ if (!resolved.disableEvents) {
119
+ events_1.default.setup(setupBase);
120
+ }
121
+ if (!resolved.disableMetrics) {
122
+ const exportIntervalMillis = Number(process.env.OTEL_EXPORTER_OTLP_METRICS_EXPORT_INTERVAL ?? 60000) || 60000;
123
+ metrics_1.default.setup({
124
+ ...setupBase,
125
+ exportIntervalMillis,
126
+ });
127
+ }
128
+ // Fetch pricing info once and cache — matches Python SDK behavior.
129
+ helpers_1.default.fetchPricingInfo(resolved.pricingJson).then((info) => { config_1.default.pricingInfo = info; }, () => { config_1.default.pricingInfo = {}; });
87
130
  }
88
131
  catch (e) {
89
132
  console.log('Connection time out', e);
@@ -94,5 +137,7 @@ exports.Openlit = Openlit;
94
137
  Openlit.evals = evals;
95
138
  Openlit.guard = guard;
96
139
  const openlit = Openlit;
140
+ openlit.usingAttributes = helpers_2.usingAttributes;
141
+ openlit.injectAdditionalAttributes = helpers_2.injectAdditionalAttributes;
97
142
  exports.default = openlit;
98
143
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}