openlit 1.12.0 → 1.14.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 (352) hide show
  1. package/README.md +34 -1
  2. package/dist/__tests__/manual-trace.test.js +118 -0
  3. package/dist/__tests__/manual-trace.test.js.map +1 -0
  4. package/dist/__tests__/register.test.js +90 -0
  5. package/dist/__tests__/register.test.js.map +1 -0
  6. package/dist/config.d.ts +7 -1
  7. package/dist/config.js +3 -1
  8. package/dist/config.js.map +1 -1
  9. package/dist/evals/__tests__/offline.test.js +418 -0
  10. package/dist/evals/__tests__/offline.test.js.map +1 -0
  11. package/dist/evals/index.d.ts +2 -5
  12. package/dist/evals/index.js +12 -26
  13. package/dist/evals/index.js.map +1 -1
  14. package/dist/evals/offline.d.ts +6 -0
  15. package/dist/evals/offline.js +347 -0
  16. package/dist/evals/offline.js.map +1 -0
  17. package/dist/evals/types.d.ts +69 -18
  18. package/dist/evals/types.js +20 -0
  19. package/dist/evals/types.js.map +1 -1
  20. package/dist/guard/__tests__/integration.test.js +178 -0
  21. package/dist/guard/__tests__/integration.test.js.map +1 -0
  22. package/dist/guard/__tests__/pii.test.js +109 -0
  23. package/dist/guard/__tests__/pii.test.js.map +1 -0
  24. package/dist/guard/__tests__/pipeline.test.js +162 -0
  25. package/dist/guard/__tests__/pipeline.test.js.map +1 -0
  26. package/dist/guard/__tests__/prompt-injection.test.js +92 -0
  27. package/dist/guard/__tests__/prompt-injection.test.js.map +1 -0
  28. package/dist/guard/base.d.ts +75 -14
  29. package/dist/guard/base.js +130 -53
  30. package/dist/guard/base.js.map +1 -1
  31. package/dist/guard/custom.d.ts +19 -0
  32. package/dist/guard/custom.js +46 -0
  33. package/dist/guard/custom.js.map +1 -0
  34. package/dist/guard/index.d.ts +24 -5
  35. package/dist/guard/index.js +39 -21
  36. package/dist/guard/index.js.map +1 -1
  37. package/dist/guard/integration.d.ts +32 -0
  38. package/dist/guard/integration.js +328 -0
  39. package/dist/guard/integration.js.map +1 -0
  40. package/dist/guard/moderation.d.ts +18 -0
  41. package/dist/guard/moderation.js +61 -0
  42. package/dist/guard/moderation.js.map +1 -0
  43. package/dist/guard/pii.d.ts +17 -0
  44. package/dist/guard/pii.js +94 -0
  45. package/dist/guard/pii.js.map +1 -0
  46. package/dist/guard/pipeline.d.ts +18 -0
  47. package/dist/guard/pipeline.js +96 -0
  48. package/dist/guard/pipeline.js.map +1 -0
  49. package/dist/guard/prompt-injection.d.ts +20 -6
  50. package/dist/guard/prompt-injection.js +59 -68
  51. package/dist/guard/prompt-injection.js.map +1 -1
  52. package/dist/guard/schema.d.ts +20 -0
  53. package/dist/guard/schema.js +99 -0
  54. package/dist/guard/schema.js.map +1 -0
  55. package/dist/guard/sensitive-topic.d.ts +22 -6
  56. package/dist/guard/sensitive-topic.js +78 -64
  57. package/dist/guard/sensitive-topic.js.map +1 -1
  58. package/dist/guard/topic-restriction.d.ts +21 -6
  59. package/dist/guard/topic-restriction.js +43 -64
  60. package/dist/guard/topic-restriction.js.map +1 -1
  61. package/dist/helpers.d.ts +133 -2
  62. package/dist/helpers.js +416 -5
  63. package/dist/helpers.js.map +1 -1
  64. package/dist/index.d.ts +54 -30
  65. package/dist/index.js +104 -22
  66. package/dist/index.js.map +1 -1
  67. package/dist/instrumentation/__tests__/ai21-rag-trace-comparison.test.d.ts +13 -0
  68. package/dist/instrumentation/__tests__/ai21-rag-trace-comparison.test.js +176 -0
  69. package/dist/instrumentation/__tests__/ai21-rag-trace-comparison.test.js.map +1 -0
  70. package/dist/instrumentation/__tests__/ai21-trace-comparison.test.d.ts +10 -0
  71. package/dist/instrumentation/__tests__/ai21-trace-comparison.test.js +203 -0
  72. package/dist/instrumentation/__tests__/ai21-trace-comparison.test.js.map +1 -0
  73. package/dist/instrumentation/__tests__/assemblyai-wrapper.test.js +262 -0
  74. package/dist/instrumentation/__tests__/assemblyai-wrapper.test.js.map +1 -0
  75. package/dist/instrumentation/__tests__/astra-trace-comparison.test.d.ts +7 -0
  76. package/dist/instrumentation/__tests__/astra-trace-comparison.test.js +160 -0
  77. package/dist/instrumentation/__tests__/astra-trace-comparison.test.js.map +1 -0
  78. package/dist/instrumentation/__tests__/browser-use-wrapper.test.js +284 -0
  79. package/dist/instrumentation/__tests__/browser-use-wrapper.test.js.map +1 -0
  80. package/dist/instrumentation/__tests__/cache-pricing.test.d.ts +12 -0
  81. package/dist/instrumentation/__tests__/cache-pricing.test.js +95 -0
  82. package/dist/instrumentation/__tests__/cache-pricing.test.js.map +1 -0
  83. package/dist/instrumentation/__tests__/elevenlabs-wrapper.test.d.ts +1 -0
  84. package/dist/instrumentation/__tests__/elevenlabs-wrapper.test.js +282 -0
  85. package/dist/instrumentation/__tests__/elevenlabs-wrapper.test.js.map +1 -0
  86. package/dist/instrumentation/__tests__/firecrawl-wrapper.test.d.ts +1 -0
  87. package/dist/instrumentation/__tests__/firecrawl-wrapper.test.js +238 -0
  88. package/dist/instrumentation/__tests__/firecrawl-wrapper.test.js.map +1 -0
  89. package/dist/instrumentation/__tests__/gpu-collector.test.d.ts +1 -0
  90. package/dist/instrumentation/__tests__/gpu-collector.test.js +247 -0
  91. package/dist/instrumentation/__tests__/gpu-collector.test.js.map +1 -0
  92. package/dist/instrumentation/__tests__/gradient-trace-comparison.test.d.ts +11 -0
  93. package/dist/instrumentation/__tests__/gradient-trace-comparison.test.js +391 -0
  94. package/dist/instrumentation/__tests__/gradient-trace-comparison.test.js.map +1 -0
  95. package/dist/instrumentation/__tests__/groq-trace-comparison.test.js +150 -0
  96. package/dist/instrumentation/__tests__/groq-trace-comparison.test.js.map +1 -1
  97. package/dist/instrumentation/__tests__/helpers-genai.test.d.ts +14 -0
  98. package/dist/instrumentation/__tests__/helpers-genai.test.js +347 -0
  99. package/dist/instrumentation/__tests__/helpers-genai.test.js.map +1 -0
  100. package/dist/instrumentation/__tests__/langchain-role-map.test.d.ts +1 -0
  101. package/dist/instrumentation/__tests__/langchain-role-map.test.js +19 -0
  102. package/dist/instrumentation/__tests__/langchain-role-map.test.js.map +1 -0
  103. package/dist/instrumentation/__tests__/mem0-trace-comparison.test.d.ts +13 -0
  104. package/dist/instrumentation/__tests__/mem0-trace-comparison.test.js +208 -0
  105. package/dist/instrumentation/__tests__/mem0-trace-comparison.test.js.map +1 -0
  106. package/dist/instrumentation/__tests__/pg-trace-comparison.test.d.ts +21 -0
  107. package/dist/instrumentation/__tests__/pg-trace-comparison.test.js +455 -0
  108. package/dist/instrumentation/__tests__/pg-trace-comparison.test.js.map +1 -0
  109. package/dist/instrumentation/__tests__/transformers-trace-comparison.test.d.ts +11 -0
  110. package/dist/instrumentation/__tests__/transformers-trace-comparison.test.js +214 -0
  111. package/dist/instrumentation/__tests__/transformers-trace-comparison.test.js.map +1 -0
  112. package/dist/instrumentation/__tests__/vertexai-trace-comparison.test.d.ts +6 -0
  113. package/dist/instrumentation/__tests__/vertexai-trace-comparison.test.js +409 -0
  114. package/dist/instrumentation/__tests__/vertexai-trace-comparison.test.js.map +1 -0
  115. package/dist/instrumentation/__tests__/vllm-trace-comparison.test.d.ts +1 -0
  116. package/dist/instrumentation/__tests__/vllm-trace-comparison.test.js +519 -0
  117. package/dist/instrumentation/__tests__/vllm-trace-comparison.test.js.map +1 -0
  118. package/dist/instrumentation/ai21/index.d.ts +11 -0
  119. package/dist/instrumentation/ai21/index.js +67 -0
  120. package/dist/instrumentation/ai21/index.js.map +1 -0
  121. package/dist/instrumentation/ai21/wrapper.d.ts +54 -0
  122. package/dist/instrumentation/ai21/wrapper.js +511 -0
  123. package/dist/instrumentation/ai21/wrapper.js.map +1 -0
  124. package/dist/instrumentation/anthropic/wrapper.js +56 -2
  125. package/dist/instrumentation/anthropic/wrapper.js.map +1 -1
  126. package/dist/instrumentation/assemblyai/index.d.ts +12 -0
  127. package/dist/instrumentation/assemblyai/index.js +91 -0
  128. package/dist/instrumentation/assemblyai/index.js.map +1 -0
  129. package/dist/instrumentation/assemblyai/wrapper.d.ts +35 -0
  130. package/dist/instrumentation/assemblyai/wrapper.js +233 -0
  131. package/dist/instrumentation/assemblyai/wrapper.js.map +1 -0
  132. package/dist/instrumentation/astra/index.d.ts +11 -0
  133. package/dist/instrumentation/astra/index.js +87 -0
  134. package/dist/instrumentation/astra/index.js.map +1 -0
  135. package/dist/instrumentation/astra/wrapper.d.ts +39 -0
  136. package/dist/instrumentation/astra/wrapper.js +349 -0
  137. package/dist/instrumentation/astra/wrapper.js.map +1 -0
  138. package/dist/instrumentation/azure-ai-inference/wrapper.d.ts +13 -0
  139. package/dist/instrumentation/azure-ai-inference/wrapper.js +60 -1
  140. package/dist/instrumentation/azure-ai-inference/wrapper.js.map +1 -1
  141. package/dist/instrumentation/bedrock/wrapper.d.ts +13 -0
  142. package/dist/instrumentation/bedrock/wrapper.js +78 -2
  143. package/dist/instrumentation/bedrock/wrapper.js.map +1 -1
  144. package/dist/instrumentation/browser-use/index.d.ts +11 -0
  145. package/dist/instrumentation/browser-use/index.js +98 -0
  146. package/dist/instrumentation/browser-use/index.js.map +1 -0
  147. package/dist/instrumentation/browser-use/wrapper.d.ts +12 -0
  148. package/dist/instrumentation/browser-use/wrapper.js +706 -0
  149. package/dist/instrumentation/browser-use/wrapper.js.map +1 -0
  150. package/dist/instrumentation/claude-agent-sdk/wrapper.js +90 -4
  151. package/dist/instrumentation/claude-agent-sdk/wrapper.js.map +1 -1
  152. package/dist/instrumentation/cohere/wrapper.d.ts +13 -0
  153. package/dist/instrumentation/cohere/wrapper.js +59 -0
  154. package/dist/instrumentation/cohere/wrapper.js.map +1 -1
  155. package/dist/instrumentation/cursor-sdk/index.d.ts +21 -0
  156. package/dist/instrumentation/cursor-sdk/index.js +58 -0
  157. package/dist/instrumentation/cursor-sdk/index.js.map +1 -0
  158. package/dist/instrumentation/cursor-sdk/wrapper.d.ts +17 -0
  159. package/dist/instrumentation/cursor-sdk/wrapper.js +785 -0
  160. package/dist/instrumentation/cursor-sdk/wrapper.js.map +1 -0
  161. package/dist/instrumentation/elevenlabs/index.d.ts +12 -0
  162. package/dist/instrumentation/elevenlabs/index.js +92 -0
  163. package/dist/instrumentation/elevenlabs/index.js.map +1 -0
  164. package/dist/instrumentation/elevenlabs/wrapper.d.ts +34 -0
  165. package/dist/instrumentation/elevenlabs/wrapper.js +280 -0
  166. package/dist/instrumentation/elevenlabs/wrapper.js.map +1 -0
  167. package/dist/instrumentation/firecrawl/index.d.ts +13 -0
  168. package/dist/instrumentation/firecrawl/index.js +115 -0
  169. package/dist/instrumentation/firecrawl/index.js.map +1 -0
  170. package/dist/instrumentation/firecrawl/wrapper.d.ts +22 -0
  171. package/dist/instrumentation/firecrawl/wrapper.js +378 -0
  172. package/dist/instrumentation/firecrawl/wrapper.js.map +1 -0
  173. package/dist/instrumentation/google-ai/wrapper.d.ts +13 -0
  174. package/dist/instrumentation/google-ai/wrapper.js +85 -1
  175. package/dist/instrumentation/google-ai/wrapper.js.map +1 -1
  176. package/dist/instrumentation/gpu/index.d.ts +38 -0
  177. package/dist/instrumentation/gpu/index.js +233 -0
  178. package/dist/instrumentation/gpu/index.js.map +1 -0
  179. package/dist/instrumentation/gradient/index.d.ts +12 -0
  180. package/dist/instrumentation/gradient/index.js +74 -0
  181. package/dist/instrumentation/gradient/index.js.map +1 -0
  182. package/dist/instrumentation/gradient/utils.d.ts +14 -0
  183. package/dist/instrumentation/gradient/utils.js +119 -0
  184. package/dist/instrumentation/gradient/utils.js.map +1 -0
  185. package/dist/instrumentation/gradient/wrapper.d.ts +76 -0
  186. package/dist/instrumentation/gradient/wrapper.js +584 -0
  187. package/dist/instrumentation/gradient/wrapper.js.map +1 -0
  188. package/dist/instrumentation/groq/wrapper.js +42 -0
  189. package/dist/instrumentation/groq/wrapper.js.map +1 -1
  190. package/dist/instrumentation/huggingface/wrapper.d.ts +13 -0
  191. package/dist/instrumentation/huggingface/wrapper.js +66 -0
  192. package/dist/instrumentation/huggingface/wrapper.js.map +1 -1
  193. package/dist/instrumentation/index.js +28 -0
  194. package/dist/instrumentation/index.js.map +1 -1
  195. package/dist/instrumentation/langchain/wrapper.js +5 -8
  196. package/dist/instrumentation/langchain/wrapper.js.map +1 -1
  197. package/dist/instrumentation/langgraph/wrapper.js +12 -11
  198. package/dist/instrumentation/langgraph/wrapper.js.map +1 -1
  199. package/dist/instrumentation/llamaindex/wrapper.d.ts +14 -1
  200. package/dist/instrumentation/llamaindex/wrapper.js +68 -0
  201. package/dist/instrumentation/llamaindex/wrapper.js.map +1 -1
  202. package/dist/instrumentation/mcp/index.d.ts +20 -0
  203. package/dist/instrumentation/mcp/index.js +282 -0
  204. package/dist/instrumentation/mcp/index.js.map +1 -0
  205. package/dist/instrumentation/mcp/wrapper.d.ts +72 -0
  206. package/dist/instrumentation/mcp/wrapper.js +571 -0
  207. package/dist/instrumentation/mcp/wrapper.js.map +1 -0
  208. package/dist/instrumentation/mem0/index.d.ts +17 -0
  209. package/dist/instrumentation/mem0/index.js +113 -0
  210. package/dist/instrumentation/mem0/index.js.map +1 -0
  211. package/dist/instrumentation/mem0/wrapper.d.ts +37 -0
  212. package/dist/instrumentation/mem0/wrapper.js +298 -0
  213. package/dist/instrumentation/mem0/wrapper.js.map +1 -0
  214. package/dist/instrumentation/mistral/wrapper.d.ts +13 -0
  215. package/dist/instrumentation/mistral/wrapper.js +60 -1
  216. package/dist/instrumentation/mistral/wrapper.js.map +1 -1
  217. package/dist/instrumentation/ollama/wrapper.d.ts +13 -0
  218. package/dist/instrumentation/ollama/wrapper.js +67 -1
  219. package/dist/instrumentation/ollama/wrapper.js.map +1 -1
  220. package/dist/instrumentation/openai/wrapper.d.ts +13 -0
  221. package/dist/instrumentation/openai/wrapper.js +89 -3
  222. package/dist/instrumentation/openai/wrapper.js.map +1 -1
  223. package/dist/instrumentation/pg/index.d.ts +20 -0
  224. package/dist/instrumentation/pg/index.js +74 -0
  225. package/dist/instrumentation/pg/index.js.map +1 -0
  226. package/dist/instrumentation/pg/wrapper.d.ts +66 -0
  227. package/dist/instrumentation/pg/wrapper.js +441 -0
  228. package/dist/instrumentation/pg/wrapper.js.map +1 -0
  229. package/dist/instrumentation/replicate/wrapper.d.ts +13 -0
  230. package/dist/instrumentation/replicate/wrapper.js +61 -0
  231. package/dist/instrumentation/replicate/wrapper.js.map +1 -1
  232. package/dist/instrumentation/strands/processor.d.ts +6 -0
  233. package/dist/instrumentation/strands/processor.js +73 -3
  234. package/dist/instrumentation/strands/processor.js.map +1 -1
  235. package/dist/instrumentation/strands/utils.d.ts +2 -2
  236. package/dist/instrumentation/strands/utils.js +15 -2
  237. package/dist/instrumentation/strands/utils.js.map +1 -1
  238. package/dist/instrumentation/together/wrapper.d.ts +13 -0
  239. package/dist/instrumentation/together/wrapper.js +59 -1
  240. package/dist/instrumentation/together/wrapper.js.map +1 -1
  241. package/dist/instrumentation/transformers/index.d.ts +35 -0
  242. package/dist/instrumentation/transformers/index.js +119 -0
  243. package/dist/instrumentation/transformers/index.js.map +1 -0
  244. package/dist/instrumentation/transformers/wrapper.d.ts +49 -0
  245. package/dist/instrumentation/transformers/wrapper.js +472 -0
  246. package/dist/instrumentation/transformers/wrapper.js.map +1 -0
  247. package/dist/instrumentation/vercel-ai/wrapper.d.ts +13 -0
  248. package/dist/instrumentation/vercel-ai/wrapper.js +106 -1
  249. package/dist/instrumentation/vercel-ai/wrapper.js.map +1 -1
  250. package/dist/instrumentation/vertexai/index.d.ts +11 -0
  251. package/dist/instrumentation/vertexai/index.js +70 -0
  252. package/dist/instrumentation/vertexai/index.js.map +1 -0
  253. package/dist/instrumentation/vertexai/wrapper.d.ts +67 -0
  254. package/dist/instrumentation/vertexai/wrapper.js +529 -0
  255. package/dist/instrumentation/vertexai/wrapper.js.map +1 -0
  256. package/dist/instrumentation/vllm/index.d.ts +13 -0
  257. package/dist/instrumentation/vllm/index.js +67 -0
  258. package/dist/instrumentation/vllm/index.js.map +1 -0
  259. package/dist/instrumentation/vllm/wrapper.d.ts +60 -0
  260. package/dist/instrumentation/vllm/wrapper.js +482 -0
  261. package/dist/instrumentation/vllm/wrapper.js.map +1 -0
  262. package/dist/llm/index.d.ts +9 -2
  263. package/dist/llm/index.js.map +1 -1
  264. package/dist/manual-trace.d.ts +40 -0
  265. package/dist/manual-trace.js +103 -0
  266. package/dist/manual-trace.js.map +1 -0
  267. package/dist/otel/metrics.d.ts +11 -0
  268. package/dist/otel/metrics.js +48 -0
  269. package/dist/otel/metrics.js.map +1 -1
  270. package/dist/register.d.ts +4 -0
  271. package/dist/register.js +52 -0
  272. package/dist/register.js.map +1 -0
  273. package/dist/score/__tests__/score.test.d.ts +1 -0
  274. package/dist/score/__tests__/score.test.js +143 -0
  275. package/dist/score/__tests__/score.test.js.map +1 -0
  276. package/dist/score/index.d.ts +2 -0
  277. package/dist/score/index.js +6 -0
  278. package/dist/score/index.js.map +1 -0
  279. package/dist/score/score.d.ts +15 -0
  280. package/dist/score/score.js +135 -0
  281. package/dist/score/score.js.map +1 -0
  282. package/dist/semantic-convention.d.ts +278 -0
  283. package/dist/semantic-convention.js +322 -0
  284. package/dist/semantic-convention.js.map +1 -1
  285. package/dist/types.d.ts +15 -1
  286. package/package.json +18 -1
  287. package/dist/evals/__tests__/anthropic.test.js +0 -9
  288. package/dist/evals/__tests__/anthropic.test.js.map +0 -1
  289. package/dist/evals/__tests__/base.test.js +0 -37
  290. package/dist/evals/__tests__/base.test.js.map +0 -1
  291. package/dist/evals/__tests__/core.test.js +0 -33
  292. package/dist/evals/__tests__/core.test.js.map +0 -1
  293. package/dist/evals/__tests__/metrics.test.js +0 -59
  294. package/dist/evals/__tests__/metrics.test.js.map +0 -1
  295. package/dist/evals/__tests__/openai.test.js +0 -9
  296. package/dist/evals/__tests__/openai.test.js.map +0 -1
  297. package/dist/evals/__tests__/providers.test.js +0 -14
  298. package/dist/evals/__tests__/providers.test.js.map +0 -1
  299. package/dist/evals/__tests__/utils.test.js +0 -46
  300. package/dist/evals/__tests__/utils.test.js.map +0 -1
  301. package/dist/evals/all.d.ts +0 -4
  302. package/dist/evals/all.js +0 -35
  303. package/dist/evals/all.js.map +0 -1
  304. package/dist/evals/base.d.ts +0 -15
  305. package/dist/evals/base.js +0 -51
  306. package/dist/evals/base.js.map +0 -1
  307. package/dist/evals/bias.d.ts +0 -4
  308. package/dist/evals/bias.js +0 -35
  309. package/dist/evals/bias.js.map +0 -1
  310. package/dist/evals/hallucination.d.ts +0 -4
  311. package/dist/evals/hallucination.js +0 -32
  312. package/dist/evals/hallucination.js.map +0 -1
  313. package/dist/evals/llm/anthropic.d.ts +0 -5
  314. package/dist/evals/llm/anthropic.js +0 -42
  315. package/dist/evals/llm/anthropic.js.map +0 -1
  316. package/dist/evals/llm/openai.d.ts +0 -6
  317. package/dist/evals/llm/openai.js +0 -28
  318. package/dist/evals/llm/openai.js.map +0 -1
  319. package/dist/evals/llm/providers.d.ts +0 -7
  320. package/dist/evals/llm/providers.js +0 -10
  321. package/dist/evals/llm/providers.js.map +0 -1
  322. package/dist/evals/metrics.d.ts +0 -9
  323. package/dist/evals/metrics.js +0 -38
  324. package/dist/evals/metrics.js.map +0 -1
  325. package/dist/evals/toxicity.d.ts +0 -4
  326. package/dist/evals/toxicity.js +0 -33
  327. package/dist/evals/toxicity.js.map +0 -1
  328. package/dist/evals/utils.d.ts +0 -4
  329. package/dist/evals/utils.js +0 -39
  330. package/dist/evals/utils.js.map +0 -1
  331. package/dist/guard/__tests__/gaurd.test.js +0 -136
  332. package/dist/guard/__tests__/gaurd.test.js.map +0 -1
  333. package/dist/guard/__tests__/utils.test.js +0 -64
  334. package/dist/guard/__tests__/utils.test.js.map +0 -1
  335. package/dist/guard/all.d.ts +0 -8
  336. package/dist/guard/all.js +0 -28
  337. package/dist/guard/all.js.map +0 -1
  338. package/dist/guard/types.d.ts +0 -26
  339. package/dist/guard/types.js +0 -4
  340. package/dist/guard/types.js.map +0 -1
  341. package/dist/guard/utils.d.ts +0 -13
  342. package/dist/guard/utils.js +0 -79
  343. package/dist/guard/utils.js.map +0 -1
  344. /package/dist/{evals/__tests__/anthropic.test.d.ts → __tests__/manual-trace.test.d.ts} +0 -0
  345. /package/dist/{evals/__tests__/metrics.test.d.ts → __tests__/register.test.d.ts} +0 -0
  346. /package/dist/evals/__tests__/{base.test.d.ts → offline.test.d.ts} +0 -0
  347. /package/dist/{evals/__tests__/core.test.d.ts → guard/__tests__/integration.test.d.ts} +0 -0
  348. /package/dist/{evals/__tests__/openai.test.d.ts → guard/__tests__/pii.test.d.ts} +0 -0
  349. /package/dist/{evals/__tests__/providers.test.d.ts → guard/__tests__/pipeline.test.d.ts} +0 -0
  350. /package/dist/{evals/__tests__/utils.test.d.ts → guard/__tests__/prompt-injection.test.d.ts} +0 -0
  351. /package/dist/{guard/__tests__/gaurd.test.d.ts → instrumentation/__tests__/assemblyai-wrapper.test.d.ts} +0 -0
  352. /package/dist/{guard/__tests__/utils.test.d.ts → instrumentation/__tests__/browser-use-wrapper.test.d.ts} +0 -0
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const instrumentation_1 = require("@opentelemetry/instrumentation");
7
+ const api_1 = require("@opentelemetry/api");
8
+ const constant_1 = require("../../constant");
9
+ const semantic_convention_1 = __importDefault(require("../../semantic-convention"));
10
+ const wrapper_1 = __importDefault(require("./wrapper"));
11
+ class OpenlitAstraInstrumentation extends instrumentation_1.InstrumentationBase {
12
+ constructor(config = {}) {
13
+ super(`${constant_1.INSTRUMENTATION_PREFIX}/instrumentation-astra`, '1.0.0', config);
14
+ }
15
+ init() {
16
+ const module = new instrumentation_1.InstrumentationNodeModuleDefinition('@datastax/astra-db-ts', ['>=1.0.0'], (moduleExports) => {
17
+ this._patch(moduleExports);
18
+ return moduleExports;
19
+ }, (moduleExports) => {
20
+ if (moduleExports !== undefined) {
21
+ this._unpatch(moduleExports);
22
+ }
23
+ });
24
+ return [module];
25
+ }
26
+ manualPatch(astra) {
27
+ this._patch(astra);
28
+ }
29
+ _patch(moduleExports) {
30
+ try {
31
+ const Collection = moduleExports.Collection;
32
+ if (!Collection?.prototype)
33
+ return;
34
+ // `find` returns a cursor synchronously — must not be wrapped as async
35
+ if (typeof Collection.prototype['find'] === 'function') {
36
+ if ((0, instrumentation_1.isWrapped)(Collection.prototype['find'])) {
37
+ this._unwrap(Collection.prototype, 'find');
38
+ }
39
+ this._wrap(Collection.prototype, 'find', wrapper_1.default._patchSyncFindMethod(this.tracer));
40
+ }
41
+ // All other methods return Promises and use the async wrapper
42
+ const asyncMethods = [
43
+ ['insertOne', semantic_convention_1.default.DB_OPERATION_INSERT],
44
+ ['insertMany', semantic_convention_1.default.DB_OPERATION_INSERT],
45
+ ['updateOne', semantic_convention_1.default.DB_OPERATION_UPDATE],
46
+ ['updateMany', semantic_convention_1.default.DB_OPERATION_UPDATE],
47
+ ['replaceOne', semantic_convention_1.default.DB_OPERATION_REPLACE],
48
+ ['findOne', semantic_convention_1.default.DB_OPERATION_SELECT],
49
+ ['findOneAndUpdate', semantic_convention_1.default.DB_OPERATION_REPLACE],
50
+ ['findOneAndReplace', semantic_convention_1.default.DB_OPERATION_REPLACE],
51
+ ['findOneAndDelete', semantic_convention_1.default.DB_OPERATION_FIND_AND_DELETE],
52
+ ['deleteOne', semantic_convention_1.default.DB_OPERATION_DELETE],
53
+ ['deleteMany', semantic_convention_1.default.DB_OPERATION_DELETE],
54
+ ];
55
+ for (const [method, dbOp] of asyncMethods) {
56
+ if (typeof Collection.prototype[method] === 'function') {
57
+ if ((0, instrumentation_1.isWrapped)(Collection.prototype[method])) {
58
+ this._unwrap(Collection.prototype, method);
59
+ }
60
+ this._wrap(Collection.prototype, method, wrapper_1.default._patchCollectionMethod(this.tracer, dbOp));
61
+ }
62
+ }
63
+ }
64
+ catch (e) {
65
+ api_1.diag.error('Astra instrumentation: error in _patch method', e);
66
+ }
67
+ }
68
+ _unpatch(moduleExports) {
69
+ try {
70
+ const Collection = moduleExports.Collection;
71
+ if (!Collection?.prototype)
72
+ return;
73
+ for (const method of [
74
+ 'insertOne', 'insertMany', 'updateOne', 'updateMany', 'replaceOne',
75
+ 'find', 'findOne', 'findOneAndUpdate', 'findOneAndReplace',
76
+ 'findOneAndDelete', 'deleteOne', 'deleteMany',
77
+ ]) {
78
+ if (typeof Collection.prototype[method] === 'function') {
79
+ this._unwrap(Collection.prototype, method);
80
+ }
81
+ }
82
+ }
83
+ catch { /* ignore */ }
84
+ }
85
+ }
86
+ exports.default = OpenlitAstraInstrumentation;
87
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/instrumentation/astra/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { Tracer } from '@opentelemetry/api';
2
+ import BaseWrapper from '../base-wrapper';
3
+ declare class AstraWrapper extends BaseWrapper {
4
+ static dbSystem: string;
5
+ static serverAddress: string;
6
+ static serverPort: number;
7
+ static _setCommonAttributes(span: any, dbOperation: string, collectionName: string, instance?: any): void;
8
+ /**
9
+ * Async wrapper for methods that return Promises (all Collection CRUD methods except `find`).
10
+ */
11
+ static _patchCollectionMethod(tracer: Tracer, dbOperation: string): any;
12
+ /**
13
+ * Synchronous wrapper for `find()` which returns a cursor synchronously.
14
+ * Wrapping it as async would break the cursor API (e.g. `collection.find({}).toArray()`).
15
+ */
16
+ static _patchSyncFindMethod(tracer: Tracer): any;
17
+ private static _setOperationAttributes;
18
+ private static _setInsertAttributes;
19
+ private static _setUpdateAttributes;
20
+ private static _setReplaceAttributes;
21
+ private static _setSelectAttributes;
22
+ private static _setDeleteAttributes;
23
+ private static _getActualDbOperation;
24
+ private static _hasUpsertOption;
25
+ private static _setFilterAttribute;
26
+ private static _getInsertReturnedRows;
27
+ private static _getUpdateReturnedRows;
28
+ private static _getSelectReturnedRows;
29
+ private static _getDeleteReturnedRows;
30
+ private static _objectCount;
31
+ private static _isCursorLike;
32
+ private static _summaryValue;
33
+ private static _safeStringify;
34
+ private static _truncate;
35
+ private static _getServerAddressAndPort;
36
+ private static _findEndpoint;
37
+ private static _parseEndpoint;
38
+ }
39
+ export default AstraWrapper;
@@ -0,0 +1,349 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const api_1 = require("@opentelemetry/api");
7
+ const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
8
+ const config_1 = __importDefault(require("../../config"));
9
+ const constant_1 = require("../../constant");
10
+ const helpers_1 = __importDefault(require("../../helpers"));
11
+ const semantic_convention_1 = __importDefault(require("../../semantic-convention"));
12
+ const base_wrapper_1 = __importDefault(require("../base-wrapper"));
13
+ const DEFAULT_SERVER = {
14
+ serverAddress: 'astra.datastax.com',
15
+ serverPort: 443,
16
+ };
17
+ let astraDbSdkVersion = 'unknown';
18
+ try {
19
+ // Optional runtime dependency: keep this guarded so OpenLIT can load without Astra installed.
20
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
21
+ astraDbSdkVersion = require('@datastax/astra-db-ts/package.json')?.version || 'unknown';
22
+ }
23
+ catch {
24
+ astraDbSdkVersion = 'unknown';
25
+ }
26
+ class AstraWrapper extends base_wrapper_1.default {
27
+ static _setCommonAttributes(span, dbOperation, collectionName, instance) {
28
+ const applicationName = config_1.default.applicationName || '';
29
+ const environment = config_1.default.environment || '';
30
+ const { serverAddress, serverPort } = AstraWrapper._getServerAddressAndPort(instance);
31
+ span.setAttribute(semantic_convention_1.default.DB_SYSTEM_NAME, AstraWrapper.dbSystem);
32
+ span.setAttribute(semantic_convention_1.default.DB_OPERATION_NAME, dbOperation);
33
+ span.setAttribute(semantic_convention_1.default.DB_COLLECTION_NAME, collectionName);
34
+ span.setAttribute(semantic_convention_1.default.SERVER_ADDRESS, serverAddress);
35
+ span.setAttribute(semantic_convention_1.default.SERVER_PORT, serverPort);
36
+ span.setAttribute(semantic_conventions_1.ATTR_TELEMETRY_SDK_NAME, constant_1.SDK_NAME);
37
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OPERATION, semantic_convention_1.default.GEN_AI_OPERATION_TYPE_VECTORDB);
38
+ span.setAttribute(semantic_convention_1.default.ATTR_DEPLOYMENT_ENVIRONMENT, environment);
39
+ span.setAttribute(semantic_conventions_1.ATTR_SERVICE_NAME, applicationName);
40
+ span.setAttribute(semantic_convention_1.default.DB_SDK_VERSION, astraDbSdkVersion);
41
+ span.setAttribute(semantic_convention_1.default.GEN_AI_ENVIRONMENT, environment);
42
+ }
43
+ /**
44
+ * Async wrapper for methods that return Promises (all Collection CRUD methods except `find`).
45
+ */
46
+ static _patchCollectionMethod(tracer, dbOperation) {
47
+ return (originalMethod) => {
48
+ return async function (...args) {
49
+ const collectionName = this?.name || 'unknown';
50
+ const spanName = `${dbOperation} ${collectionName}`;
51
+ const span = tracer.startSpan(spanName, { kind: api_1.SpanKind.CLIENT });
52
+ const startTime = Date.now();
53
+ return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), async () => {
54
+ try {
55
+ const response = await originalMethod.apply(this, args);
56
+ const duration = (Date.now() - startTime) / 1000;
57
+ const actualDbOperation = AstraWrapper._getActualDbOperation(dbOperation, args);
58
+ AstraWrapper._setCommonAttributes(span, actualDbOperation, collectionName, this);
59
+ span.setAttribute(semantic_convention_1.default.DB_CLIENT_OPERATION_DURATION, duration);
60
+ AstraWrapper._setOperationAttributes(span, {
61
+ dbOperation: actualDbOperation,
62
+ collectionName,
63
+ args,
64
+ response,
65
+ });
66
+ span.setStatus({ code: api_1.SpanStatusCode.OK });
67
+ return response;
68
+ }
69
+ catch (e) {
70
+ helpers_1.default.handleException(span, e);
71
+ throw e;
72
+ }
73
+ finally {
74
+ span.end();
75
+ }
76
+ });
77
+ };
78
+ };
79
+ }
80
+ /**
81
+ * Synchronous wrapper for `find()` which returns a cursor synchronously.
82
+ * Wrapping it as async would break the cursor API (e.g. `collection.find({}).toArray()`).
83
+ */
84
+ static _patchSyncFindMethod(tracer) {
85
+ return (originalMethod) => {
86
+ return function (...args) {
87
+ const collectionName = this?.name || 'unknown';
88
+ const spanName = `${semantic_convention_1.default.DB_OPERATION_SELECT} ${collectionName}`;
89
+ const span = tracer.startSpan(spanName, { kind: api_1.SpanKind.CLIENT });
90
+ const startTime = Date.now();
91
+ try {
92
+ const cursor = originalMethod.apply(this, args);
93
+ const duration = (Date.now() - startTime) / 1000;
94
+ AstraWrapper._setCommonAttributes(span, semantic_convention_1.default.DB_OPERATION_SELECT, collectionName, this);
95
+ span.setAttribute(semantic_convention_1.default.DB_CLIENT_OPERATION_DURATION, duration);
96
+ AstraWrapper._setOperationAttributes(span, {
97
+ dbOperation: semantic_convention_1.default.DB_OPERATION_SELECT,
98
+ collectionName,
99
+ args,
100
+ response: cursor,
101
+ });
102
+ span.setStatus({ code: api_1.SpanStatusCode.OK });
103
+ return cursor;
104
+ }
105
+ catch (e) {
106
+ helpers_1.default.handleException(span, e);
107
+ throw e;
108
+ }
109
+ finally {
110
+ span.end();
111
+ }
112
+ };
113
+ };
114
+ }
115
+ static _setOperationAttributes(span, context) {
116
+ switch (context.dbOperation) {
117
+ case semantic_convention_1.default.DB_OPERATION_INSERT:
118
+ AstraWrapper._setInsertAttributes(span, context);
119
+ break;
120
+ case semantic_convention_1.default.DB_OPERATION_UPDATE:
121
+ AstraWrapper._setUpdateAttributes(span, context);
122
+ break;
123
+ case semantic_convention_1.default.DB_OPERATION_REPLACE:
124
+ case semantic_convention_1.default.DB_OPERATION_UPSERT:
125
+ AstraWrapper._setReplaceAttributes(span, context);
126
+ break;
127
+ case semantic_convention_1.default.DB_OPERATION_SELECT:
128
+ AstraWrapper._setSelectAttributes(span, context);
129
+ break;
130
+ case semantic_convention_1.default.DB_OPERATION_DELETE:
131
+ case semantic_convention_1.default.DB_OPERATION_FIND_AND_DELETE:
132
+ AstraWrapper._setDeleteAttributes(span, context);
133
+ break;
134
+ default:
135
+ span.setAttribute(semantic_convention_1.default.DB_QUERY_SUMMARY, `${context.dbOperation} ${context.collectionName}`);
136
+ }
137
+ }
138
+ static _setInsertAttributes(span, { dbOperation, collectionName, args, response }) {
139
+ const documents = args[0];
140
+ const documentsCount = AstraWrapper._objectCount(documents);
141
+ span.setAttribute(semantic_convention_1.default.DB_DOCUMENTS_COUNT, documentsCount);
142
+ if (config_1.default.captureMessageContent) {
143
+ span.setAttribute(semantic_convention_1.default.DB_QUERY_TEXT, AstraWrapper._safeStringify(documents));
144
+ }
145
+ const returnedRows = AstraWrapper._getInsertReturnedRows(response);
146
+ if (returnedRows !== undefined) {
147
+ span.setAttribute(semantic_convention_1.default.DB_RESPONSE_RETURNED_ROWS, returnedRows);
148
+ }
149
+ span.setAttribute(semantic_convention_1.default.DB_QUERY_SUMMARY, `${dbOperation} ${collectionName} documents_count=${documentsCount}`);
150
+ }
151
+ static _setUpdateAttributes(span, { dbOperation, collectionName, args, response }) {
152
+ const filter = args[0] || {};
153
+ const update = args[1] || {};
154
+ AstraWrapper._setFilterAttribute(span, filter);
155
+ if (config_1.default.captureMessageContent) {
156
+ span.setAttribute(semantic_convention_1.default.DB_QUERY_TEXT, AstraWrapper._safeStringify(update));
157
+ }
158
+ const returnedRows = AstraWrapper._getUpdateReturnedRows(response);
159
+ if (returnedRows !== undefined) {
160
+ span.setAttribute(semantic_convention_1.default.DB_RESPONSE_RETURNED_ROWS, returnedRows);
161
+ }
162
+ span.setAttribute(semantic_convention_1.default.DB_QUERY_SUMMARY, `${dbOperation} ${collectionName} filter=${AstraWrapper._summaryValue(filter)} update=${AstraWrapper._summaryValue(update)}`);
163
+ }
164
+ static _setReplaceAttributes(span, { dbOperation, collectionName, args }) {
165
+ const filter = args[0] || {};
166
+ const upsert = AstraWrapper._hasUpsertOption(args);
167
+ AstraWrapper._setFilterAttribute(span, filter);
168
+ if (config_1.default.captureMessageContent) {
169
+ span.setAttribute(semantic_convention_1.default.DB_QUERY_TEXT, AstraWrapper._safeStringify(filter));
170
+ }
171
+ span.setAttribute(semantic_convention_1.default.DB_QUERY_SUMMARY, `${dbOperation} ${collectionName} filter=${AstraWrapper._summaryValue(filter)} upsert=${upsert}`);
172
+ }
173
+ static _setSelectAttributes(span, { dbOperation, collectionName, args, response }) {
174
+ const filter = args[0] || {};
175
+ AstraWrapper._setFilterAttribute(span, filter);
176
+ if (config_1.default.captureMessageContent) {
177
+ span.setAttribute(semantic_convention_1.default.DB_QUERY_TEXT, AstraWrapper._safeStringify(filter));
178
+ }
179
+ const returnedRows = AstraWrapper._getSelectReturnedRows(response);
180
+ if (returnedRows !== undefined) {
181
+ span.setAttribute(semantic_convention_1.default.DB_RESPONSE_RETURNED_ROWS, returnedRows);
182
+ }
183
+ span.setAttribute(semantic_convention_1.default.DB_QUERY_SUMMARY, `${dbOperation} ${collectionName} filter=${AstraWrapper._summaryValue(filter)}`);
184
+ }
185
+ static _setDeleteAttributes(span, { dbOperation, collectionName, args, response }) {
186
+ const filter = args[0] || {};
187
+ AstraWrapper._setFilterAttribute(span, filter);
188
+ if (config_1.default.captureMessageContent) {
189
+ span.setAttribute(semantic_convention_1.default.DB_QUERY_TEXT, AstraWrapper._safeStringify(filter));
190
+ }
191
+ const returnedRows = AstraWrapper._getDeleteReturnedRows(response, dbOperation);
192
+ if (returnedRows !== undefined) {
193
+ span.setAttribute(semantic_convention_1.default.DB_RESPONSE_RETURNED_ROWS, returnedRows);
194
+ }
195
+ span.setAttribute(semantic_convention_1.default.DB_QUERY_SUMMARY, `${dbOperation} ${collectionName} filter=${AstraWrapper._summaryValue(filter)}`);
196
+ }
197
+ static _getActualDbOperation(dbOperation, args) {
198
+ if (dbOperation === semantic_convention_1.default.DB_OPERATION_REPLACE && AstraWrapper._hasUpsertOption(args)) {
199
+ return semantic_convention_1.default.DB_OPERATION_UPSERT;
200
+ }
201
+ return dbOperation;
202
+ }
203
+ static _hasUpsertOption(args) {
204
+ return args.slice(2).some((arg) => arg && typeof arg === 'object' && arg.upsert === true);
205
+ }
206
+ static _setFilterAttribute(span, filter) {
207
+ if (filter && typeof filter === 'object' && Object.keys(filter).length > 0) {
208
+ span.setAttribute(semantic_convention_1.default.DB_FILTER, AstraWrapper._safeStringify(filter));
209
+ }
210
+ }
211
+ static _getInsertReturnedRows(response) {
212
+ if (!response)
213
+ return undefined;
214
+ if (typeof response.insertedCount === 'number')
215
+ return response.insertedCount;
216
+ if (typeof response.inserted_count === 'number')
217
+ return response.inserted_count;
218
+ if (Array.isArray(response.insertedIds))
219
+ return response.insertedIds.length;
220
+ if (Array.isArray(response.inserted_ids))
221
+ return response.inserted_ids.length;
222
+ if (response.insertedIds && typeof response.insertedIds === 'object')
223
+ return Object.keys(response.insertedIds).length;
224
+ if (response.inserted_ids && typeof response.inserted_ids === 'object')
225
+ return Object.keys(response.inserted_ids).length;
226
+ if (response.insertedId || response.inserted_id)
227
+ return 1;
228
+ return undefined;
229
+ }
230
+ static _getUpdateReturnedRows(response) {
231
+ if (!response)
232
+ return undefined;
233
+ if (typeof response.modifiedCount === 'number')
234
+ return response.modifiedCount;
235
+ if (typeof response.modified_count === 'number')
236
+ return response.modified_count;
237
+ if (typeof response.matchedCount === 'number')
238
+ return response.matchedCount;
239
+ if (typeof response.matched_count === 'number')
240
+ return response.matched_count;
241
+ if (typeof response.update_info?.nModified === 'number')
242
+ return response.update_info.nModified;
243
+ if (typeof response.updateInfo?.nModified === 'number')
244
+ return response.updateInfo.nModified;
245
+ return undefined;
246
+ }
247
+ static _getSelectReturnedRows(response) {
248
+ if (!response || AstraWrapper._isCursorLike(response))
249
+ return undefined;
250
+ if (Array.isArray(response))
251
+ return response.length;
252
+ if (typeof response.length === 'number')
253
+ return response.length;
254
+ return 1;
255
+ }
256
+ static _getDeleteReturnedRows(response, dbOperation) {
257
+ if (!response)
258
+ return dbOperation === semantic_convention_1.default.DB_OPERATION_FIND_AND_DELETE ? 0 : undefined;
259
+ if (typeof response.deletedCount === 'number')
260
+ return response.deletedCount;
261
+ if (typeof response.deleted_count === 'number')
262
+ return response.deleted_count;
263
+ if (dbOperation === semantic_convention_1.default.DB_OPERATION_FIND_AND_DELETE)
264
+ return 1;
265
+ return undefined;
266
+ }
267
+ static _objectCount(obj) {
268
+ if (Array.isArray(obj))
269
+ return obj.length;
270
+ if (obj !== undefined && obj !== null)
271
+ return 1;
272
+ return 0;
273
+ }
274
+ static _isCursorLike(response) {
275
+ return !!response && (typeof response[Symbol.asyncIterator] === 'function'
276
+ || typeof response[Symbol.iterator] === 'function'
277
+ || typeof response.toArray === 'function'
278
+ || typeof response.next === 'function');
279
+ }
280
+ static _summaryValue(value) {
281
+ return AstraWrapper._truncate(AstraWrapper._safeStringify(value));
282
+ }
283
+ static _safeStringify(value) {
284
+ if (typeof value === 'string')
285
+ return value;
286
+ try {
287
+ return JSON.stringify(value);
288
+ }
289
+ catch {
290
+ return String(value);
291
+ }
292
+ }
293
+ static _truncate(value, maxLength = 200) {
294
+ return value.length > maxLength ? `${value.slice(0, maxLength)}...` : value;
295
+ }
296
+ static _getServerAddressAndPort(instance) {
297
+ const endpoint = AstraWrapper._findEndpoint(instance);
298
+ if (!endpoint)
299
+ return DEFAULT_SERVER;
300
+ return AstraWrapper._parseEndpoint(endpoint);
301
+ }
302
+ static _findEndpoint(instance) {
303
+ const candidates = [
304
+ instance,
305
+ instance?.database,
306
+ instance?.db,
307
+ instance?.client,
308
+ instance?._client,
309
+ instance?.database?.client,
310
+ instance?.db?.client,
311
+ ];
312
+ const keys = ['apiEndpoint', 'api_endpoint', 'endpoint', 'baseUrl', 'base_url'];
313
+ for (const candidate of candidates) {
314
+ if (!candidate || typeof candidate !== 'object')
315
+ continue;
316
+ for (const key of keys) {
317
+ const value = candidate[key];
318
+ if (typeof value === 'string' && value.length > 0)
319
+ return value;
320
+ }
321
+ }
322
+ return undefined;
323
+ }
324
+ static _parseEndpoint(endpoint) {
325
+ const fallbackPort = endpoint.startsWith('http://') ? 80 : DEFAULT_SERVER.serverPort;
326
+ try {
327
+ if (endpoint.startsWith('http://') || endpoint.startsWith('https://')) {
328
+ const parsed = new URL(endpoint);
329
+ return {
330
+ serverAddress: parsed.hostname || DEFAULT_SERVER.serverAddress,
331
+ serverPort: parsed.port ? Number(parsed.port) : fallbackPort,
332
+ };
333
+ }
334
+ }
335
+ catch {
336
+ return DEFAULT_SERVER;
337
+ }
338
+ const [serverAddress, port] = endpoint.split(':');
339
+ return {
340
+ serverAddress: serverAddress || DEFAULT_SERVER.serverAddress,
341
+ serverPort: port ? Number(port) || DEFAULT_SERVER.serverPort : DEFAULT_SERVER.serverPort,
342
+ };
343
+ }
344
+ }
345
+ AstraWrapper.dbSystem = semantic_convention_1.default.DB_SYSTEM_ASTRA;
346
+ AstraWrapper.serverAddress = DEFAULT_SERVER.serverAddress;
347
+ AstraWrapper.serverPort = DEFAULT_SERVER.serverPort;
348
+ exports.default = AstraWrapper;
349
+ //# sourceMappingURL=wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../../../src/instrumentation/astra/wrapper.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,19 @@ declare class AzureAIInferenceWrapper extends BaseWrapper {
4
4
  static aiSystem: string;
5
5
  static defaultServerAddress: string;
6
6
  static defaultServerPort: number;
7
+ /**
8
+ * Stamp `openlit.agent.version_hash` (auto) and `gen_ai.agent.version`
9
+ * (user override, if set) on the span and return the same attributes so
10
+ * the caller can merge them into the inference event extras.
11
+ */
12
+ static _stampAgentVersion(span: Span, args: {
13
+ systemInstructionsJson?: string;
14
+ toolDefinitionsJson?: string;
15
+ primaryModel?: string;
16
+ temperature?: number | null;
17
+ top_p?: number | null;
18
+ max_tokens?: number | null;
19
+ }): Record<string, string>;
7
20
  /**
8
21
  * Extracts server address and port from an endpoint URL string.
9
22
  */
@@ -51,6 +51,41 @@ function spanCreationAttrs(operationName, requestModel, serverAddress, serverPor
51
51
  };
52
52
  }
53
53
  class AzureAIInferenceWrapper extends base_wrapper_1.default {
54
+ /**
55
+ * Stamp `openlit.agent.version_hash` (auto) and `gen_ai.agent.version`
56
+ * (user override, if set) on the span and return the same attributes so
57
+ * the caller can merge them into the inference event extras.
58
+ */
59
+ static _stampAgentVersion(span, args) {
60
+ const out = {};
61
+ try {
62
+ const versionHash = helpers_1.default.computeAgentVersionHash({
63
+ systemInstructions: args.systemInstructionsJson ?? null,
64
+ toolDefinitions: args.toolDefinitionsJson ?? null,
65
+ primaryModel: args.primaryModel ?? null,
66
+ runtimeConfig: {
67
+ temperature: args.temperature ?? null,
68
+ top_p: args.top_p ?? null,
69
+ max_tokens: args.max_tokens ?? null,
70
+ provider: semantic_convention_1.default.GEN_AI_SYSTEM_AZURE_AI_INFERENCE,
71
+ },
72
+ providers: [semantic_convention_1.default.GEN_AI_SYSTEM_AZURE_AI_INFERENCE],
73
+ });
74
+ if (versionHash) {
75
+ out[semantic_convention_1.default.OPENLIT_AGENT_VERSION_HASH] = versionHash;
76
+ span.setAttribute(semantic_convention_1.default.OPENLIT_AGENT_VERSION_HASH, versionHash);
77
+ }
78
+ }
79
+ catch {
80
+ // Hash computation must never fail the wrapped call.
81
+ }
82
+ const versionLabel = (0, helpers_1.getCurrentAgentVersion)();
83
+ if (versionLabel) {
84
+ out[semantic_convention_1.default.GEN_AI_AGENT_VERSION] = versionLabel;
85
+ span.setAttribute(semantic_convention_1.default.GEN_AI_AGENT_VERSION, versionLabel);
86
+ }
87
+ return out;
88
+ }
54
89
  /**
55
90
  * Extracts server address and port from an endpoint URL string.
56
91
  */
@@ -320,7 +355,7 @@ class AzureAIInferenceWrapper extends base_wrapper_1.default {
320
355
  static _chatCompletionCommonSetter({ body, genAIEndpoint, result, span, serverAddress, serverPort, ttft = 0, tbt = 0, }) {
321
356
  const captureContent = config_1.default.captureMessageContent;
322
357
  const requestModel = body.model || 'gpt-4o';
323
- const { messages, frequency_penalty = 0, max_tokens = null, n = 1, presence_penalty = 0, seed = null, stop = null, temperature = 1, top_p, user, stream = false, } = body;
358
+ const { messages, frequency_penalty = 0, max_tokens = null, n = 1, presence_penalty = 0, seed = null, stop = null, temperature = 1, top_p, user, stream = false, tools: _tools, } = body;
324
359
  span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_TOP_P, top_p || 1);
325
360
  if (max_tokens != null) {
326
361
  span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_MAX_TOKENS, max_tokens);
@@ -402,11 +437,30 @@ class AzureAIInferenceWrapper extends base_wrapper_1.default {
402
437
  }
403
438
  let inputMessagesJson;
404
439
  let outputMessagesJson;
440
+ const toolDefinitionsJson = helpers_1.default.buildToolDefinitions(_tools);
441
+ // Compute system_instructions and version hash regardless of
442
+ // captureContent so versions still group correctly when content
443
+ // capture is disabled.
444
+ const systemInstructionsJson = helpers_1.default.buildSystemInstructionsFromMessages(messages || []);
445
+ const versionExtras = AzureAIInferenceWrapper._stampAgentVersion(span, {
446
+ systemInstructionsJson,
447
+ toolDefinitionsJson,
448
+ primaryModel: responseModel || requestModel,
449
+ temperature,
450
+ top_p,
451
+ max_tokens,
452
+ });
405
453
  if (captureContent) {
406
454
  const toolCalls = choices[0]?.message?.tool_calls;
407
455
  outputMessagesJson = helpers_1.default.buildOutputMessages(choices[0]?.message?.content || '', choices[0]?.finish_reason || 'stop', toolCalls);
408
456
  span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_MESSAGES, outputMessagesJson);
409
457
  inputMessagesJson = helpers_1.default.buildInputMessages(messages || []);
458
+ if (systemInstructionsJson) {
459
+ span.setAttribute(semantic_convention_1.default.GEN_AI_SYSTEM_INSTRUCTIONS, systemInstructionsJson);
460
+ }
461
+ }
462
+ if (toolDefinitionsJson) {
463
+ span.setAttribute(semantic_convention_1.default.GEN_AI_TOOL_DEFINITIONS, toolDefinitionsJson);
410
464
  }
411
465
  if (!config_1.default.disableEvents) {
412
466
  const eventAttrs = {
@@ -420,13 +474,18 @@ class AzureAIInferenceWrapper extends base_wrapper_1.default {
420
474
  [semantic_convention_1.default.GEN_AI_OUTPUT_TYPE]: outputType,
421
475
  [semantic_convention_1.default.GEN_AI_USAGE_INPUT_TOKENS]: inputTokens,
422
476
  [semantic_convention_1.default.GEN_AI_USAGE_OUTPUT_TOKENS]: outputTokens,
477
+ ...versionExtras,
423
478
  };
424
479
  if (captureContent) {
425
480
  if (inputMessagesJson)
426
481
  eventAttrs[semantic_convention_1.default.GEN_AI_INPUT_MESSAGES] = inputMessagesJson;
427
482
  if (outputMessagesJson)
428
483
  eventAttrs[semantic_convention_1.default.GEN_AI_OUTPUT_MESSAGES] = outputMessagesJson;
484
+ if (systemInstructionsJson)
485
+ eventAttrs[semantic_convention_1.default.GEN_AI_SYSTEM_INSTRUCTIONS] = systemInstructionsJson;
429
486
  }
487
+ if (toolDefinitionsJson)
488
+ eventAttrs[semantic_convention_1.default.GEN_AI_TOOL_DEFINITIONS] = toolDefinitionsJson;
430
489
  helpers_1.default.emitInferenceEvent(span, eventAttrs);
431
490
  }
432
491
  return {