openlit 1.11.0 → 1.13.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 (192) hide show
  1. package/README.md +1 -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/vault.js +1 -1
  10. package/dist/features/vault.js.map +1 -1
  11. package/dist/helpers.d.ts +93 -1
  12. package/dist/helpers.js +271 -8
  13. package/dist/helpers.js.map +1 -1
  14. package/dist/index.d.ts +6 -5
  15. package/dist/index.js +95 -50
  16. package/dist/index.js.map +1 -1
  17. package/dist/instrumentation/__tests__/anthropic-wrapper.test.js +215 -27
  18. package/dist/instrumentation/__tests__/anthropic-wrapper.test.js.map +1 -1
  19. package/dist/instrumentation/__tests__/base-wrapper.test.js +19 -23
  20. package/dist/instrumentation/__tests__/base-wrapper.test.js.map +1 -1
  21. package/dist/instrumentation/__tests__/bedrock-trace-comparison.test.d.ts +1 -0
  22. package/dist/instrumentation/__tests__/bedrock-trace-comparison.test.js +422 -0
  23. package/dist/instrumentation/__tests__/bedrock-trace-comparison.test.js.map +1 -0
  24. package/dist/instrumentation/__tests__/chroma-trace-comparison.test.js +1 -1
  25. package/dist/instrumentation/__tests__/chroma-trace-comparison.test.js.map +1 -1
  26. package/dist/instrumentation/__tests__/cohere-wrapper.test.js +150 -25
  27. package/dist/instrumentation/__tests__/cohere-wrapper.test.js.map +1 -1
  28. package/dist/instrumentation/__tests__/google-ai-trace-comparison.test.js +152 -33
  29. package/dist/instrumentation/__tests__/google-ai-trace-comparison.test.js.map +1 -1
  30. package/dist/instrumentation/__tests__/groq-trace-comparison.test.js +391 -45
  31. package/dist/instrumentation/__tests__/groq-trace-comparison.test.js.map +1 -1
  32. package/dist/instrumentation/__tests__/huggingface-trace-comparison.test.d.ts +2 -2
  33. package/dist/instrumentation/__tests__/huggingface-trace-comparison.test.js +323 -31
  34. package/dist/instrumentation/__tests__/huggingface-trace-comparison.test.js.map +1 -1
  35. package/dist/instrumentation/__tests__/langchain-wrapper.test.d.ts +1 -0
  36. package/dist/instrumentation/__tests__/langchain-wrapper.test.js +282 -0
  37. package/dist/instrumentation/__tests__/langchain-wrapper.test.js.map +1 -0
  38. package/dist/instrumentation/__tests__/milvus-trace-comparison.test.js +1 -1
  39. package/dist/instrumentation/__tests__/milvus-trace-comparison.test.js.map +1 -1
  40. package/dist/instrumentation/__tests__/mistral-trace-comparison.test.d.ts +0 -3
  41. package/dist/instrumentation/__tests__/mistral-trace-comparison.test.js +275 -68
  42. package/dist/instrumentation/__tests__/mistral-trace-comparison.test.js.map +1 -1
  43. package/dist/instrumentation/__tests__/openai-wrapper.test.js +7 -9
  44. package/dist/instrumentation/__tests__/openai-wrapper.test.js.map +1 -1
  45. package/dist/instrumentation/__tests__/qdrant-trace-comparison.test.js +1 -1
  46. package/dist/instrumentation/__tests__/qdrant-trace-comparison.test.js.map +1 -1
  47. package/dist/instrumentation/__tests__/replicate-trace-comparison.test.d.ts +2 -1
  48. package/dist/instrumentation/__tests__/replicate-trace-comparison.test.js +209 -21
  49. package/dist/instrumentation/__tests__/replicate-trace-comparison.test.js.map +1 -1
  50. package/dist/instrumentation/__tests__/together-trace-comparison.test.js +231 -51
  51. package/dist/instrumentation/__tests__/together-trace-comparison.test.js.map +1 -1
  52. package/dist/instrumentation/__tests__/vercel-ai-trace-comparison.test.d.ts +8 -0
  53. package/dist/instrumentation/__tests__/vercel-ai-trace-comparison.test.js +446 -0
  54. package/dist/instrumentation/__tests__/vercel-ai-trace-comparison.test.js.map +1 -0
  55. package/dist/instrumentation/anthropic/index.d.ts +2 -3
  56. package/dist/instrumentation/anthropic/index.js.map +1 -1
  57. package/dist/instrumentation/anthropic/wrapper.d.ts +1 -3
  58. package/dist/instrumentation/anthropic/wrapper.js +211 -91
  59. package/dist/instrumentation/anthropic/wrapper.js.map +1 -1
  60. package/dist/instrumentation/azure-ai-inference/index.d.ts +11 -0
  61. package/dist/instrumentation/azure-ai-inference/index.js +76 -0
  62. package/dist/instrumentation/azure-ai-inference/index.js.map +1 -0
  63. package/dist/instrumentation/azure-ai-inference/wrapper.d.ts +42 -0
  64. package/dist/instrumentation/azure-ai-inference/wrapper.js +515 -0
  65. package/dist/instrumentation/azure-ai-inference/wrapper.js.map +1 -0
  66. package/dist/instrumentation/base-wrapper.d.ts +2 -1
  67. package/dist/instrumentation/base-wrapper.js +35 -23
  68. package/dist/instrumentation/base-wrapper.js.map +1 -1
  69. package/dist/instrumentation/bedrock/wrapper.d.ts +21 -3
  70. package/dist/instrumentation/bedrock/wrapper.js +318 -265
  71. package/dist/instrumentation/bedrock/wrapper.js.map +1 -1
  72. package/dist/instrumentation/chroma/wrapper.js +1 -1
  73. package/dist/instrumentation/chroma/wrapper.js.map +1 -1
  74. package/dist/instrumentation/claude-agent-sdk/index.d.ts +23 -0
  75. package/dist/instrumentation/claude-agent-sdk/index.js +83 -0
  76. package/dist/instrumentation/claude-agent-sdk/index.js.map +1 -0
  77. package/dist/instrumentation/claude-agent-sdk/wrapper.d.ts +13 -0
  78. package/dist/instrumentation/claude-agent-sdk/wrapper.js +1031 -0
  79. package/dist/instrumentation/claude-agent-sdk/wrapper.js.map +1 -0
  80. package/dist/instrumentation/cohere/index.d.ts +2 -3
  81. package/dist/instrumentation/cohere/index.js.map +1 -1
  82. package/dist/instrumentation/cohere/wrapper.d.ts +1 -1
  83. package/dist/instrumentation/cohere/wrapper.js +215 -56
  84. package/dist/instrumentation/cohere/wrapper.js.map +1 -1
  85. package/dist/instrumentation/cursor-sdk/index.d.ts +21 -0
  86. package/dist/instrumentation/cursor-sdk/index.js +58 -0
  87. package/dist/instrumentation/cursor-sdk/index.js.map +1 -0
  88. package/dist/instrumentation/cursor-sdk/wrapper.d.ts +17 -0
  89. package/dist/instrumentation/cursor-sdk/wrapper.js +689 -0
  90. package/dist/instrumentation/cursor-sdk/wrapper.js.map +1 -0
  91. package/dist/instrumentation/google-adk/index.d.ts +57 -0
  92. package/dist/instrumentation/google-adk/index.js +371 -0
  93. package/dist/instrumentation/google-adk/index.js.map +1 -0
  94. package/dist/instrumentation/google-adk/utils.d.ts +45 -0
  95. package/dist/instrumentation/google-adk/utils.js +663 -0
  96. package/dist/instrumentation/google-adk/utils.js.map +1 -0
  97. package/dist/instrumentation/google-adk/wrapper.d.ts +11 -0
  98. package/dist/instrumentation/google-adk/wrapper.js +391 -0
  99. package/dist/instrumentation/google-adk/wrapper.js.map +1 -0
  100. package/dist/instrumentation/google-ai/wrapper.d.ts +7 -4
  101. package/dist/instrumentation/google-ai/wrapper.js +197 -61
  102. package/dist/instrumentation/google-ai/wrapper.js.map +1 -1
  103. package/dist/instrumentation/groq/wrapper.js +137 -65
  104. package/dist/instrumentation/groq/wrapper.js.map +1 -1
  105. package/dist/instrumentation/huggingface/wrapper.js +241 -39
  106. package/dist/instrumentation/huggingface/wrapper.js.map +1 -1
  107. package/dist/instrumentation/index.d.ts +2 -2
  108. package/dist/instrumentation/index.js +66 -6
  109. package/dist/instrumentation/index.js.map +1 -1
  110. package/dist/instrumentation/langchain/index.d.ts +0 -7
  111. package/dist/instrumentation/langchain/index.js +2 -20
  112. package/dist/instrumentation/langchain/index.js.map +1 -1
  113. package/dist/instrumentation/langchain/wrapper.d.ts +35 -0
  114. package/dist/instrumentation/langchain/wrapper.js +1098 -184
  115. package/dist/instrumentation/langchain/wrapper.js.map +1 -1
  116. package/dist/instrumentation/langgraph/index.d.ts +12 -0
  117. package/dist/instrumentation/langgraph/index.js +99 -0
  118. package/dist/instrumentation/langgraph/index.js.map +1 -0
  119. package/dist/instrumentation/langgraph/wrapper.d.ts +20 -0
  120. package/dist/instrumentation/langgraph/wrapper.js +619 -0
  121. package/dist/instrumentation/langgraph/wrapper.js.map +1 -0
  122. package/dist/instrumentation/llamaindex/index.d.ts +31 -6
  123. package/dist/instrumentation/llamaindex/index.js +180 -61
  124. package/dist/instrumentation/llamaindex/index.js.map +1 -1
  125. package/dist/instrumentation/llamaindex/wrapper.d.ts +15 -3
  126. package/dist/instrumentation/llamaindex/wrapper.js +670 -179
  127. package/dist/instrumentation/llamaindex/wrapper.js.map +1 -1
  128. package/dist/instrumentation/milvus/wrapper.js +1 -1
  129. package/dist/instrumentation/milvus/wrapper.js.map +1 -1
  130. package/dist/instrumentation/mistral/wrapper.js +154 -79
  131. package/dist/instrumentation/mistral/wrapper.js.map +1 -1
  132. package/dist/instrumentation/ollama/index.js +33 -4
  133. package/dist/instrumentation/ollama/index.js.map +1 -1
  134. package/dist/instrumentation/ollama/wrapper.d.ts +28 -2
  135. package/dist/instrumentation/ollama/wrapper.js +432 -48
  136. package/dist/instrumentation/ollama/wrapper.js.map +1 -1
  137. package/dist/instrumentation/openai/index.d.ts +2 -3
  138. package/dist/instrumentation/openai/index.js.map +1 -1
  139. package/dist/instrumentation/openai/wrapper.js +293 -194
  140. package/dist/instrumentation/openai/wrapper.js.map +1 -1
  141. package/dist/instrumentation/openai-agents/index.d.ts +20 -0
  142. package/dist/instrumentation/openai-agents/index.js +174 -0
  143. package/dist/instrumentation/openai-agents/index.js.map +1 -0
  144. package/dist/instrumentation/openai-agents/processor.d.ts +35 -0
  145. package/dist/instrumentation/openai-agents/processor.js +249 -0
  146. package/dist/instrumentation/openai-agents/processor.js.map +1 -0
  147. package/dist/instrumentation/openai-agents/utils.d.ts +20 -0
  148. package/dist/instrumentation/openai-agents/utils.js +624 -0
  149. package/dist/instrumentation/openai-agents/utils.js.map +1 -0
  150. package/dist/instrumentation/pinecone/wrapper.js +2 -2
  151. package/dist/instrumentation/pinecone/wrapper.js.map +1 -1
  152. package/dist/instrumentation/qdrant/wrapper.js +1 -1
  153. package/dist/instrumentation/qdrant/wrapper.js.map +1 -1
  154. package/dist/instrumentation/replicate/wrapper.js +103 -21
  155. package/dist/instrumentation/replicate/wrapper.js.map +1 -1
  156. package/dist/instrumentation/strands/index.d.ts +21 -0
  157. package/dist/instrumentation/strands/index.js +83 -0
  158. package/dist/instrumentation/strands/index.js.map +1 -0
  159. package/dist/instrumentation/strands/processor.d.ts +45 -0
  160. package/dist/instrumentation/strands/processor.js +545 -0
  161. package/dist/instrumentation/strands/processor.js.map +1 -0
  162. package/dist/instrumentation/strands/utils.d.ts +24 -0
  163. package/dist/instrumentation/strands/utils.js +360 -0
  164. package/dist/instrumentation/strands/utils.js.map +1 -0
  165. package/dist/instrumentation/together/wrapper.js +125 -51
  166. package/dist/instrumentation/together/wrapper.js.map +1 -1
  167. package/dist/instrumentation/vercel-ai/wrapper.d.ts +28 -2
  168. package/dist/instrumentation/vercel-ai/wrapper.js +314 -164
  169. package/dist/instrumentation/vercel-ai/wrapper.js.map +1 -1
  170. package/dist/llm/anthropic.js +10 -6
  171. package/dist/llm/anthropic.js.map +1 -1
  172. package/dist/llm/openai.js +9 -5
  173. package/dist/llm/openai.js.map +1 -1
  174. package/dist/otel/__tests__/metrics.test.js +16 -27
  175. package/dist/otel/__tests__/metrics.test.js.map +1 -1
  176. package/dist/otel/events.d.ts +11 -0
  177. package/dist/otel/events.js +74 -0
  178. package/dist/otel/events.js.map +1 -0
  179. package/dist/otel/metrics.d.ts +5 -6
  180. package/dist/otel/metrics.js +66 -48
  181. package/dist/otel/metrics.js.map +1 -1
  182. package/dist/otel/tracing.d.ts +6 -2
  183. package/dist/otel/tracing.js +71 -24
  184. package/dist/otel/tracing.js.map +1 -1
  185. package/dist/otel/utils.d.ts +11 -0
  186. package/dist/otel/utils.js +34 -0
  187. package/dist/otel/utils.js.map +1 -0
  188. package/dist/semantic-convention.d.ts +49 -5
  189. package/dist/semantic-convention.js +56 -8
  190. package/dist/semantic-convention.js.map +1 -1
  191. package/dist/types.d.ts +58 -22
  192. package/package.json +41 -9
package/README.md CHANGED
@@ -202,7 +202,7 @@ Below is a detailed overview of the configuration options available, allowing yo
202
202
  | `traceContent` | Enables tracing of content for deeper insights. | `true` | No |
203
203
  | `disabledInstrumentations` | List of instrumentations to disable. | `undefined` | No |
204
204
  | `instrumentations` | Object of instrumentation modules for manual patching | `undefined` | No |
205
- | `pricing_json` | URL or file path of the pricing JSON file. | `https://github.com/openlit/openlit/blob/main/assets/pricing.json` | No |
205
+ | `pricingJson` | URL or file path of the pricing JSON file. | `https://github.com/openlit/openlit/blob/main/assets/pricing.json` | No |
206
206
 
207
207
  ### OpenLIT Prompt Hub - `Openlit.getPrompt()`
208
208
 
package/dist/config.d.ts CHANGED
@@ -7,8 +7,16 @@ export default class OpenlitConfig {
7
7
  static otlpEndpoint?: OpenlitConfigInterface['otlpEndpoint'];
8
8
  static otlpHeaders?: OpenlitConfigInterface['otlpHeaders'];
9
9
  static disableBatch?: OpenlitConfigInterface['disableBatch'];
10
- static traceContent?: OpenlitConfigInterface['traceContent'];
11
- static pricing_json?: OpenlitConfigInterface['pricing_json'];
12
- static updatePricingJson(pricing_json: any): Promise<PricingObject>;
13
- static updateConfig({ environment, applicationName, tracer, otlpEndpoint, otlpHeaders, disableBatch, traceContent, pricing_json, }: OpenlitConfigInterface): void;
10
+ static captureMessageContent?: OpenlitConfigInterface['captureMessageContent'];
11
+ static pricingJson?: OpenlitConfigInterface['pricingJson'];
12
+ static disableMetrics?: boolean;
13
+ static disableEvents?: boolean;
14
+ static maxContentLength?: number | null;
15
+ static customSpanAttributes?: Record<string, string> | null;
16
+ static updateConfig({ environment, applicationName, tracer, otlpEndpoint, otlpHeaders, disableBatch, captureMessageContent, pricingJson, disableMetrics, disableEvents, maxContentLength, customSpanAttributes, }: Partial<OpenlitConfigInterface> & {
17
+ disableMetrics?: boolean;
18
+ disableEvents?: boolean;
19
+ maxContentLength?: number | null;
20
+ customSpanAttributes?: Record<string, string> | null;
21
+ }): void;
14
22
  }
package/dist/config.js CHANGED
@@ -1,29 +1,19 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const helpers_1 = __importDefault(require("./helpers"));
7
3
  class OpenlitConfig {
8
- static async updatePricingJson(pricing_json) {
9
- try {
10
- const response = await helpers_1.default.fetchPricingInfo(pricing_json);
11
- this.pricingInfo = response;
12
- }
13
- catch (e) {
14
- this.pricingInfo = {};
15
- }
16
- return this.pricingInfo;
17
- }
18
- static updateConfig({ environment = 'default', applicationName = 'default', tracer, otlpEndpoint, otlpHeaders, disableBatch = true, traceContent = true, pricing_json, }) {
4
+ static updateConfig({ environment = 'default', applicationName = 'default', tracer, otlpEndpoint, otlpHeaders, disableBatch = false, captureMessageContent = true, pricingJson, disableMetrics = false, disableEvents = false, maxContentLength = null, customSpanAttributes = null, }) {
19
5
  this.environment = environment;
20
6
  this.applicationName = applicationName;
21
7
  this.tracer = tracer;
22
8
  this.otlpEndpoint = otlpEndpoint;
23
9
  this.otlpHeaders = otlpHeaders;
24
10
  this.disableBatch = disableBatch;
25
- this.traceContent = traceContent;
26
- this.pricing_json = pricing_json;
11
+ this.captureMessageContent = captureMessageContent;
12
+ this.pricingJson = pricingJson;
13
+ this.disableMetrics = disableMetrics;
14
+ this.disableEvents = disableEvents;
15
+ this.maxContentLength = maxContentLength;
16
+ this.customSpanAttributes = customSpanAttributes;
27
17
  }
28
18
  }
29
19
  exports.default = OpenlitConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;AAAA,wDAAsC;AAGtC,MAAqB,aAAa;IAWhC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,YAAiB;QAC9C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,iBAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,EAClB,WAAW,GAAG,SAAS,EACvB,eAAe,GAAG,SAAS,EAC3B,MAAM,EACN,YAAY,EACZ,WAAW,EACX,YAAY,GAAG,IAAI,EACnB,YAAY,GAAG,IAAI,EACnB,YAAY,GACW;QACvB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAxCD,gCAwCC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;AAEA,MAAqB,aAAa;IAehC,MAAM,CAAC,YAAY,CAAC,EAClB,WAAW,GAAG,SAAS,EACvB,eAAe,GAAG,SAAS,EAC3B,MAAM,EACN,YAAY,EACZ,WAAW,EACX,YAAY,GAAG,KAAK,EACpB,qBAAqB,GAAG,IAAI,EAC5B,WAAW,EACX,cAAc,GAAG,KAAK,EACtB,aAAa,GAAG,KAAK,EACrB,gBAAgB,GAAG,IAAI,EACvB,oBAAoB,GAAG,IAAI,GAM5B;QACC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAA0C,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACnD,CAAC;CACF;AA/CD,gCA+CC"}
@@ -1,12 +1,16 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.llmResponseAnthropic = llmResponseAnthropic;
7
- const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
8
4
  async function llmResponseAnthropic({ prompt, model, apiKey }) {
9
- const client = new sdk_1.default({ apiKey });
5
+ let Anthropic;
6
+ try {
7
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
8
+ Anthropic = require('@anthropic-ai/sdk').default;
9
+ }
10
+ catch {
11
+ throw new Error("openlit eval features require the '@anthropic-ai/sdk' package. Install it with: npm install @anthropic-ai/sdk");
12
+ }
13
+ const client = new Anthropic({ apiKey });
10
14
  const usedModel = model || 'claude-3-opus-20240229';
11
15
  const response = await client.messages.create({
12
16
  model: usedModel,
@@ -30,7 +34,7 @@ async function llmResponseAnthropic({ prompt, model, apiKey }) {
30
34
  // Fallback: join all text blocks that have text
31
35
  return response.content
32
36
  .filter((p) => p.type === 'text' && typeof p.text === 'string')
33
- .map(p => p.text)
37
+ .map((p) => p.text)
34
38
  .join(' ');
35
39
  }
36
40
  return '';
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/evals/llm/anthropic.ts"],"names":[],"mappings":";;;;;AAEA,oDAoCC;AAtCD,4DAA0C;AAEnC,KAAK,UAAU,oBAAoB,CAAC,EACzC,MAAM,EACN,KAAK,EACL,MAAM,EAKP;IACC,MAAM,MAAM,GAAG,IAAI,aAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,KAAK,IAAI,wBAAwB,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5C,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE;YACR,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;SAClC;QACD,WAAW,EAAE,GAAG;QAChB,wEAAwE;KACzE,CAAC,CAAC;IACH,gDAAgD;IAChD,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC;IAClE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,gDAAgD;QAChD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9F,OAAO,IAAI,CAAC,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;QACD,gDAAgD;QAChD,OAAO,QAAQ,CAAC,OAAO;aACpB,MAAM,CAAC,CAAC,CAAmC,EAAwC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;aACtI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAChB,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/evals/llm/anthropic.ts"],"names":[],"mappings":";;AAAA,oDA6CC;AA7CM,KAAK,UAAU,oBAAoB,CAAC,EACzC,MAAM,EACN,KAAK,EACL,MAAM,EAKP;IACC,IAAI,SAAc,CAAC;IACnB,IAAI,CAAC;QACH,8DAA8D;QAC9D,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,+GAA+G,CAChH,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,KAAK,IAAI,wBAAwB,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5C,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE;YACR,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;SAClC;QACD,WAAW,EAAE,GAAG;QAChB,wEAAwE;KACzE,CAAC,CAAC;IACH,gDAAgD;IAChD,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC;IAClE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,gDAAgD;QAChD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9F,OAAO,IAAI,CAAC,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;QACD,gDAAgD;QAChD,OAAO,QAAQ,CAAC,OAAO;aACpB,MAAM,CAAC,CAAC,CAAmC,EAAwC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;aACtI,GAAG,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aACpC,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -1,12 +1,16 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.llmResponseOpenAI = llmResponseOpenAI;
7
- const openai_1 = __importDefault(require("openai"));
8
4
  async function llmResponseOpenAI({ prompt, model, apiKey, baseUrl }) {
9
- const client = new openai_1.default({
5
+ let OpenAI;
6
+ try {
7
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
8
+ OpenAI = require('openai').default;
9
+ }
10
+ catch {
11
+ throw new Error("openlit eval features require the 'openai' package. Install it with: npm install openai");
12
+ }
13
+ const client = new OpenAI({
10
14
  apiKey,
11
15
  baseURL: baseUrl || 'https://api.openai.com/v1',
12
16
  });
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/evals/llm/openai.ts"],"names":[],"mappings":";;;;;AAEA,8CAyBC;AA3BD,oDAA4B;AAErB,KAAK,UAAU,iBAAiB,CAAC,EACtC,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EAMR;IACC,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC;QACxB,MAAM;QACN,OAAO,EAAE,OAAO,IAAI,2BAA2B;KAChD,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,KAAK,IAAI,QAAQ,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACpD,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE;YACR,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;SAClC;QACD,WAAW,EAAE,GAAG;QAChB,eAAe,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;KACzC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/evals/llm/openai.ts"],"names":[],"mappings":";;AAAA,8CAkCC;AAlCM,KAAK,UAAU,iBAAiB,CAAC,EACtC,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EAMR;IACC,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,8DAA8D;QAC9D,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,MAAM;QACN,OAAO,EAAE,OAAO,IAAI,2BAA2B;KAChD,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,KAAK,IAAI,QAAQ,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QACpD,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE;YACR,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;SAClC;QACD,WAAW,EAAE,GAAG;QAChB,eAAe,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;KACzC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;AACnD,CAAC"}
@@ -38,7 +38,7 @@ class Vault {
38
38
  return resp;
39
39
  });
40
40
  const { res = {} } = vaultResponse;
41
- if (!!options.shouldSetEnv) {
41
+ if (options.shouldSetEnv) {
42
42
  Object.entries(res).forEach(([key, value]) => {
43
43
  process.env[key] = value;
44
44
  });
@@ -1 +1 @@
1
- {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/features/vault.ts"],"names":[],"mappings":";;;;;AAAA,uDAAsC;AACtC,0CAA0C;AAG1C,MAAqB,KAAK;IACxB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAqB;QAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,IAAI,sBAAW,CAAC;QAClE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QAEnE,MAAM,cAAc,GAAG;YACrB,eAAe,EAAE,gBAAa,CAAC,eAAe;YAC9C,WAAW,EAAE,gBAAa,CAAC,WAAW;SACvC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,wBAAwB,EAAE;gBAChE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,cAAc;oBACd,MAAM,EAAE,QAAQ;iBACjB,CAAC;gBACF,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,MAAM,EAAE;iBAClC;aACF,CAAC;iBACC,IAAI,CAAC,KAAK,EAAE,QAAa,EAAE,EAAE;gBAC5B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,OAAO;wBACL,GAAG,EAAE,uCAAuC,QAAQ,CAAC,MAAM,EAAE;qBAC9D,CAAC;gBACJ,CAAC;gBACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzB,CAAC,CAAC;iBACD,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE;gBAClB,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YAEL,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,aAAa,CAAC;YACnC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC3B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAoB,EAAE,EAAE;oBAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAe,CAAC;gBACrC,CAAC,CAAC,CAAC;YACL,CAAC;YAED,OAAO,aAAa,CAAC;QACvB,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC1C,OAAO;oBACL,GAAG,EAAE,mBAAmB,CAAC,CAAC,QAAQ,EAAE,EAAE;oBACtC,IAAI,EAAE,IAAI;iBACX,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,GAAG,EAAE,mBAAmB,CAAC,EAAE;aAC5B,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAzDD,wBAyDC"}
1
+ {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/features/vault.ts"],"names":[],"mappings":";;;;;AAAA,uDAAsC;AACtC,0CAA0C;AAG1C,MAAqB,KAAK;IACxB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAqB;QAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,IAAI,sBAAW,CAAC;QAClE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QAEnE,MAAM,cAAc,GAAG;YACrB,eAAe,EAAE,gBAAa,CAAC,eAAe;YAC9C,WAAW,EAAE,gBAAa,CAAC,WAAW;SACvC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,wBAAwB,EAAE;gBAChE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,cAAc;oBACd,MAAM,EAAE,QAAQ;iBACjB,CAAC;gBACF,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,MAAM,EAAE;iBAClC;aACF,CAAC;iBACC,IAAI,CAAC,KAAK,EAAE,QAAa,EAAE,EAAE;gBAC5B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,OAAO;wBACL,GAAG,EAAE,uCAAuC,QAAQ,CAAC,MAAM,EAAE;qBAC9D,CAAC;gBACJ,CAAC;gBACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzB,CAAC,CAAC;iBACD,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE;gBAClB,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YAEL,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,aAAa,CAAC;YACnC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACzB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAoB,EAAE,EAAE;oBAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAe,CAAC;gBACrC,CAAC,CAAC,CAAC;YACL,CAAC;YAED,OAAO,aAAa,CAAC;QACvB,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC1C,OAAO;oBACL,GAAG,EAAE,mBAAmB,CAAC,CAAC,QAAQ,EAAE,EAAE;oBACtC,IAAI,EAAE,IAAI;iBACX,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,GAAG,EAAE,mBAAmB,CAAC,EAAE;aAC5B,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAzDD,wBAyDC"}
package/dist/helpers.d.ts CHANGED
@@ -1,4 +1,90 @@
1
- import { Span } from '@opentelemetry/api';
1
+ import { Attributes, Context, Span } from '@opentelemetry/api';
2
+ /**
3
+ * Returns true when a framework instrumentor (LangChain, LiteLLM, etc.)
4
+ * owns the current LLM span. Provider-level wrappers (OpenAI, Anthropic, …)
5
+ * must skip their own span creation when this returns true.
6
+ */
7
+ export declare function isFrameworkLlmActive(): boolean;
8
+ /**
9
+ * Run `fn` with the framework-LLM-active flag set. All provider wrappers
10
+ * invoked inside `fn` will see `isFrameworkLlmActive() === true`.
11
+ */
12
+ export declare function runWithFrameworkLlm<T>(fn: () => T): T;
13
+ /**
14
+ * Set framework-LLM-active flag in the current execution context.
15
+ * Used by SpanProcessor-based instrumentations (Strands) where
16
+ * the processor observes spans rather than controlling execution.
17
+ * Mirrors Python's ContextVar.set(True) in Strands processor.
18
+ */
19
+ export declare function setFrameworkLlmActive(): void;
20
+ /**
21
+ * Reset framework-LLM-active flag in the current execution context.
22
+ * Mirrors Python's ContextVar.reset(token) in Strands processor.
23
+ */
24
+ export declare function resetFrameworkLlmActive(): void;
25
+ /**
26
+ * Returns true when a LangGraph wrapper is controlling execution.
27
+ * LangChain's callback handler skips its own invoke_workflow span when true.
28
+ */
29
+ export declare function isLangGraphActive(): boolean;
30
+ export declare function runWithLangGraph<T>(fn: () => T): T;
31
+ /**
32
+ * Returns true when a create_agent span is already being handled
33
+ * (prevents duplicate spans between LangChain and LangGraph).
34
+ */
35
+ export declare function isCreateAgentActive(): boolean;
36
+ export declare function runWithCreateAgent<T>(fn: () => T): T;
37
+ /**
38
+ * Propagate conversation ID from invoke_workflow to child node spans.
39
+ * Mirrors Python's set_langgraph_conversation_id / get_langgraph_conversation_id.
40
+ */
41
+ export declare function getLangGraphConversationId(): string | undefined;
42
+ export declare function runWithLangGraphConversationId<T>(conversationId: string, fn: () => T): T;
43
+ /**
44
+ * Returns the OTel context set by a framework processor (OpenAI Agents, etc.)
45
+ * so that provider wrappers can create spans as children of framework spans.
46
+ * Mirrors Python's context_api.attach(set_span_in_context(span)).
47
+ */
48
+ export declare function getFrameworkParentContext(): Context | undefined;
49
+ /**
50
+ * Set the OTel parent context for provider span creation.
51
+ * Called by processor-based frameworks that cannot use context.with().
52
+ */
53
+ export declare function setFrameworkParentContext(ctx: Context): void;
54
+ /**
55
+ * Clear the framework parent context.
56
+ */
57
+ export declare function clearFrameworkParentContext(): void;
58
+ export declare function getServerAddressForProvider(provider: string): [string, number];
59
+ /**
60
+ * Apply global (from init) and context-scoped (from usingAttributes /
61
+ * injectAdditionalAttributes) custom attributes to a span.
62
+ * Global attributes are applied first; context attributes override on conflict.
63
+ * Matches Python's _apply_custom_span_attributes().
64
+ */
65
+ export declare function applyCustomSpanAttributes(span: Span): void;
66
+ /**
67
+ * Get merged custom attributes (global + context) for use in events.
68
+ * Returns a flat object; context attributes override global on conflict.
69
+ */
70
+ export declare function getMergedCustomAttributes(): Record<string, any>;
71
+ /**
72
+ * Run a function with custom span attributes attached to all
73
+ * auto-instrumented spans created during its execution.
74
+ * Matches Python's openlit.inject_additional_attributes().
75
+ */
76
+ export declare function injectAdditionalAttributes<T>(fn: () => T, attributes: Record<string, any>): T;
77
+ /**
78
+ * Context wrapper that adds custom attributes to all auto-instrumented
79
+ * spans created within its callback scope.
80
+ * Matches Python's openlit.using_attributes() context manager.
81
+ *
82
+ * Usage:
83
+ * await usingAttributes({"user.id": "u1", "team": "ml"}, async () => {
84
+ * await client.chat.completions.create(...);
85
+ * });
86
+ */
87
+ export declare function usingAttributes<T>(attributes: Record<string, any>, fn: () => T): T;
2
88
  export default class OpenLitHelper {
3
89
  static readonly PROMPT_TOKEN_FACTOR = 1000;
4
90
  static openaiTokens(text: string, model: string): number;
@@ -18,6 +104,12 @@ export default class OpenLitHelper {
18
104
  * Format: [{"role": "assistant", "parts": [{"type": "text", "content": "..."}], "finish_reason": "stop"}]
19
105
  */
20
106
  static buildOutputMessages(text: string, finishReason: string, toolCalls?: any[]): string;
107
+ /**
108
+ * Emit an inference event via the LoggerProvider, matching Python SDK's
109
+ * gen_ai.client.inference.operation.details event.
110
+ * Falls back to span.addEvent if LoggerProvider is not available.
111
+ */
112
+ static emitInferenceEvent(span: Span, attrs: Attributes): void;
21
113
  static handleException(span: Span, error: Error): void;
22
114
  static createStreamProxy(stream: any, generatorFuncResponse: any): Promise<any>;
23
115
  }
package/dist/helpers.js CHANGED
@@ -1,7 +1,218 @@
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
+ cursor: ['api2.cursor.sh', 443],
155
+ };
156
+ function getServerAddressForProvider(provider) {
157
+ return PROVIDER_DEFAULT_ENDPOINTS[provider] || ['', 0];
158
+ }
159
+ /**
160
+ * Apply global (from init) and context-scoped (from usingAttributes /
161
+ * injectAdditionalAttributes) custom attributes to a span.
162
+ * Global attributes are applied first; context attributes override on conflict.
163
+ * Matches Python's _apply_custom_span_attributes().
164
+ */
165
+ function applyCustomSpanAttributes(span) {
166
+ const globalAttrs = config_1.default.customSpanAttributes;
167
+ if (globalAttrs) {
168
+ for (const [key, value] of Object.entries(globalAttrs)) {
169
+ span.setAttribute(key, value);
170
+ }
171
+ }
172
+ const contextAttrs = _customSpanAttributes.getStore();
173
+ if (contextAttrs) {
174
+ for (const [key, value] of Object.entries(contextAttrs)) {
175
+ span.setAttribute(key, value);
176
+ }
177
+ }
178
+ }
179
+ /**
180
+ * Get merged custom attributes (global + context) for use in events.
181
+ * Returns a flat object; context attributes override global on conflict.
182
+ */
183
+ function getMergedCustomAttributes() {
184
+ const merged = {};
185
+ const globalAttrs = config_1.default.customSpanAttributes;
186
+ if (globalAttrs) {
187
+ Object.assign(merged, globalAttrs);
188
+ }
189
+ const contextAttrs = _customSpanAttributes.getStore();
190
+ if (contextAttrs) {
191
+ Object.assign(merged, contextAttrs);
192
+ }
193
+ return merged;
194
+ }
195
+ /**
196
+ * Run a function with custom span attributes attached to all
197
+ * auto-instrumented spans created during its execution.
198
+ * Matches Python's openlit.inject_additional_attributes().
199
+ */
200
+ function injectAdditionalAttributes(fn, attributes) {
201
+ return _customSpanAttributes.run(attributes, fn);
202
+ }
203
+ /**
204
+ * Context wrapper that adds custom attributes to all auto-instrumented
205
+ * spans created within its callback scope.
206
+ * Matches Python's openlit.using_attributes() context manager.
207
+ *
208
+ * Usage:
209
+ * await usingAttributes({"user.id": "u1", "team": "ml"}, async () => {
210
+ * await client.chat.completions.create(...);
211
+ * });
212
+ */
213
+ function usingAttributes(attributes, fn) {
214
+ return _customSpanAttributes.run(attributes, fn);
215
+ }
5
216
  class OpenLitHelper {
6
217
  static openaiTokens(text, model) {
7
218
  try {
@@ -18,23 +229,38 @@ class OpenLitHelper {
18
229
  }
19
230
  static getChatModelCost(model, pricingInfo, promptTokens, completionTokens) {
20
231
  try {
21
- const cost = ((promptTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) * pricingInfo.chat[model].promptPrice +
22
- (completionTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) *
23
- pricingInfo.chat[model].completionPrice);
232
+ const chatPricing = pricingInfo?.chat;
233
+ if (!chatPricing)
234
+ return 0;
235
+ let modelPricing = chatPricing[model];
236
+ if (modelPricing == null && model.includes('/')) {
237
+ modelPricing = chatPricing[model.split('/', 2)[1]];
238
+ }
239
+ if (modelPricing == null)
240
+ return 0;
241
+ const cost = (promptTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) * modelPricing.promptPrice +
242
+ (completionTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) * modelPricing.completionPrice;
24
243
  return isNaN(cost) ? 0 : cost;
25
244
  }
26
- catch (error) {
27
- console.error(`Error in getChatModelCost: ${error}`);
245
+ catch {
28
246
  return 0;
29
247
  }
30
248
  }
31
249
  static getEmbedModelCost(model, pricingInfo, promptTokens) {
32
250
  try {
33
- const cost = (promptTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) * pricingInfo.embeddings[model];
251
+ const embedPricing = pricingInfo?.embeddings;
252
+ if (!embedPricing)
253
+ return 0;
254
+ let unitCost = embedPricing[model];
255
+ if (unitCost == null && model.includes('/')) {
256
+ unitCost = embedPricing[model.split('/', 2)[1]];
257
+ }
258
+ if (unitCost == null)
259
+ return 0;
260
+ const cost = (promptTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) * unitCost;
34
261
  return isNaN(cost) ? 0 : cost;
35
262
  }
36
- catch (error) {
37
- console.error(`Error in getEmbedModelCost: ${error}`);
263
+ catch {
38
264
  return 0;
39
265
  }
40
266
  }
@@ -205,9 +431,46 @@ class OpenLitHelper {
205
431
  return '[]';
206
432
  }
207
433
  }
434
+ /**
435
+ * Emit an inference event via the LoggerProvider, matching Python SDK's
436
+ * gen_ai.client.inference.operation.details event.
437
+ * Falls back to span.addEvent if LoggerProvider is not available.
438
+ */
439
+ static emitInferenceEvent(span, attrs) {
440
+ const eventAttributes = {};
441
+ const customAttrs = getMergedCustomAttributes();
442
+ for (const [key, value] of Object.entries(customAttrs)) {
443
+ if (value !== undefined && value !== null) {
444
+ eventAttributes[key] = value;
445
+ }
446
+ }
447
+ for (const [key, value] of Object.entries(attrs)) {
448
+ if (value !== undefined && value !== null) {
449
+ eventAttributes[key] = value;
450
+ }
451
+ }
452
+ if (events_1.default.logger) {
453
+ events_1.default.logger.emit({
454
+ eventName: semantic_convention_1.default.GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS,
455
+ context: api_1.trace.setSpan(api_1.context.active(), span),
456
+ severityNumber: api_logs_1.SeverityNumber.INFO,
457
+ severityText: 'INFO',
458
+ body: semantic_convention_1.default.GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS,
459
+ attributes: {
460
+ ...eventAttributes,
461
+ 'event.name': semantic_convention_1.default.GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS,
462
+ },
463
+ });
464
+ }
465
+ else {
466
+ span.addEvent(semantic_convention_1.default.GEN_AI_CLIENT_INFERENCE_OPERATION_DETAILS, eventAttributes);
467
+ }
468
+ }
208
469
  static handleException(span, error) {
209
470
  span.recordException(error);
210
471
  span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: error.message });
472
+ const errorType = error.constructor?.name || '_OTHER';
473
+ span.setAttribute(semantic_convention_1.default.ERROR_TYPE, errorType);
211
474
  }
212
475
  static async createStreamProxy(stream, generatorFuncResponse) {
213
476
  return new Proxy(stream, {
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}