promptfoo 0.121.2 → 0.121.4

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 (379) hide show
  1. package/README.md +2 -0
  2. package/dist/src/{ListApp-Du7YVwj5.js → ListApp-DQkFNqE9.js} +1 -1
  3. package/dist/src/{accounts-B0pgC1oV.js → accounts-DdJ2pHMI.js} +5 -5
  4. package/dist/src/{accounts-CiBLOnA7.js → accounts-DhMYUUbu.js} +5 -5
  5. package/dist/src/{accounts-gtkH-5KX.cjs → accounts-Dy17bs4D.cjs} +5 -5
  6. package/dist/src/{accounts-Bm2D8Db9.js → accounts-F9d_5sMC.js} +6 -6
  7. package/dist/src/{cometapi-C4xSqeID.cjs → agentic-utils-BpX5b23w.cjs} +24 -62
  8. package/dist/src/{cometapi-CUQq3H_a.js → agentic-utils-P172hM8B.js} +4 -61
  9. package/dist/src/agentic-utils-qFlm6zes.js +153 -0
  10. package/dist/src/{agentic-utils-DS1g3GLF.js → agentic-utils-w68v6_Dz.js} +3 -3
  11. package/dist/src/{agents-CmvBq8LV.js → agents-8FDnTriG.js} +6 -7
  12. package/dist/src/{agents-DbRtpYxR.cjs → agents-BahDpe5G.cjs} +255 -20
  13. package/dist/src/{agents-DgF2zDag.js → agents-C-R_jfzI.js} +255 -20
  14. package/dist/src/{agents-9qiOy0ho.js → agents-CgaMXvLM.js} +5 -7
  15. package/dist/src/{agents-Di9DKPzn.cjs → agents-D7-HGxUj.cjs} +5 -7
  16. package/dist/src/{agents-CBr9A01V.js → agents-DJ35I3Nt.js} +255 -20
  17. package/dist/src/{agents-cLXA8a_8.js → agents-aYPQLf8W.js} +5 -9
  18. package/dist/src/{agents-D__IdAlg.js → agents-pQeBEXMm.js} +255 -21
  19. package/dist/src/{aimlapi-B4rcnZgv.js → aimlapi-BCq3MHeL.js} +8 -14
  20. package/dist/src/{aimlapi-DHJU_kcV.js → aimlapi-BD6J9oKt.js} +7 -14
  21. package/dist/src/{aimlapi-BvlNH0gr.cjs → aimlapi-qcK4OT55.cjs} +8 -15
  22. package/dist/src/{aimlapi-CnkC2HqE.js → aimlapi-sgYnkE54.js} +7 -16
  23. package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -0
  24. package/dist/src/app/assets/Report-CQYFezYu.js +1 -0
  25. package/dist/src/app/assets/index-BXGkeMwh.css +1 -0
  26. package/dist/src/app/assets/index-BzJt18Jz.js +385 -0
  27. package/dist/src/app/assets/rolldown-runtime-COnpUsM8.js +1 -0
  28. package/dist/src/app/assets/scroll-timeline-D9IT_e8Z.js +1 -0
  29. package/dist/src/app/assets/sync-IjzpWrOE.js +4 -0
  30. package/dist/src/app/assets/vendor-charts-BNdH8TCw.js +36 -0
  31. package/dist/src/app/assets/vendor-markdown-Ch00wnNI.js +29 -0
  32. package/dist/src/app/assets/vendor-react-CVvmk1UB.js +9 -0
  33. package/dist/src/app/assets/vendor-utils-BnEYbx2Q.js +37 -0
  34. package/dist/src/app/index.html +7 -7
  35. package/dist/src/{audio-Dz3z7s3J.js → audio-B7izf48x.js} +4 -5
  36. package/dist/src/{audio-CGMyULza.cjs → audio-BQtNuYBj.cjs} +4 -4
  37. package/dist/src/{audio-Bkv46et0.js → audio-COrn8rM6.js} +4 -4
  38. package/dist/src/{audio-ClI_AFre.js → audio-DcVKoInv.js} +4 -4
  39. package/dist/src/{base-CGrhspbK.cjs → base-D-670DX8.cjs} +3 -3
  40. package/dist/src/{base-CpjcHe4e.js → base-PYJvBE1i.js} +3 -3
  41. package/dist/src/{base-Dy1V8--Z.js → base-fZ9wgg50.js} +3 -3
  42. package/dist/src/{base-DLKtKMFh.js → base-yrI1Yal4.js} +3 -3
  43. package/dist/src/{blobs-BDbfYdrJ.js → blobs-BCZavS8s.js} +4 -4
  44. package/dist/src/{blobs-CMHN0Qcz.js → blobs-BQWqnnvL.js} +4 -4
  45. package/dist/src/{blobs-CBO20krR.js → blobs-C-F78Kfn.js} +3 -3
  46. package/dist/src/{blobs-D23XLin-.cjs → blobs-D2FAd1Q5.cjs} +3 -3
  47. package/dist/src/cache-BIyPcp5v.cjs +376 -0
  48. package/dist/src/cache-C4Xb-hNb.js +310 -0
  49. package/dist/src/cache-Cr9oLMUa.js +3 -0
  50. package/dist/src/cache-D5NZmMiT.js +310 -0
  51. package/dist/src/cache-DbLsVWB2.cjs +3 -0
  52. package/dist/src/cache-mb7c8hbp.js +280 -0
  53. package/dist/src/{chat-C2jrdPMx.js → chat-0bwXjVP0.js} +3 -13
  54. package/dist/src/{chat-C1Qst7jL.cjs → chat-BPXSW8Bv.cjs} +3 -13
  55. package/dist/src/{chat-DJIw17u0.js → chat-BfPaS15_.js} +68 -42
  56. package/dist/src/{chat-CgF-J-Jj.cjs → chat-CclRbxGf.cjs} +68 -42
  57. package/dist/src/{chat-BiKyneZl.js → chat-Dr3DUQ0D.js} +68 -42
  58. package/dist/src/{chat-DqxYYtWA.js → chat-I9izLm49.js} +67 -41
  59. package/dist/src/{chat-CzkrVDfz.js → chat-MKxMnZJZ.js} +3 -13
  60. package/dist/src/{chat-qmatte1u.js → chat-mW0ORo8G.js} +3 -14
  61. package/dist/src/{chatkit-DKyPi1Gs.cjs → chatkit-BoWoSgXl.cjs} +4 -4
  62. package/dist/src/{chatkit-65VXf5SR.js → chatkit-CJnHRRMM.js} +4 -4
  63. package/dist/src/{chatkit-Be-Q-a9F.js → chatkit-Cv6AhukM.js} +4 -4
  64. package/dist/src/{chatkit-BxFvW8KY.js → chatkit-zUIVoDos.js} +4 -4
  65. package/dist/src/{claude-agent-sdk-Apiy0iaz.js → claude-agent-sdk-BQNuLaAK.js} +41 -18
  66. package/dist/src/{claude-agent-sdk-D9Z5Pr9X.cjs → claude-agent-sdk-CPJo3dBQ.cjs} +45 -22
  67. package/dist/src/{claude-agent-sdk-D2bJee9S.js → claude-agent-sdk-Dtq_L-Sc.js} +40 -17
  68. package/dist/src/{claude-agent-sdk-DfCoW0E6.js → claude-agent-sdk-nfAIcxNf.js} +42 -20
  69. package/dist/src/{cloud-C0dlstV_.js → cloud-DQZ5sVjW.js} +25 -13
  70. package/dist/src/cloud-Hphvo8kr.js +3 -0
  71. package/dist/src/{cloudflare-ai-8TDxHR0x.js → cloudflare-ai-BIB567w6.js} +5 -14
  72. package/dist/src/{cloudflare-ai-g7PB6VHR.js → cloudflare-ai-DGLte7Py.js} +5 -14
  73. package/dist/src/{cloudflare-ai-CknbZ5LJ.cjs → cloudflare-ai-Dl3N9OVD.cjs} +6 -15
  74. package/dist/src/{cloudflare-ai-BxAGvfju.js → cloudflare-ai-DlKr0rY7.js} +5 -15
  75. package/dist/src/{cloudflare-gateway-B9HWA5wf.js → cloudflare-gateway-BDZrYydE.js} +4 -16
  76. package/dist/src/{cloudflare-gateway-BSnDmHYo.cjs → cloudflare-gateway-BYDp495F.cjs} +4 -15
  77. package/dist/src/{cloudflare-gateway-CKDb4dJ8.js → cloudflare-gateway-CiIZHU0Q.js} +5 -164
  78. package/dist/src/{cloudflare-gateway-CP9QEWYS.js → cloudflare-gateway-DI1HNP5F.js} +4 -15
  79. package/dist/src/codex-sdk-BAmYE7qy.js +3 -0
  80. package/dist/src/codex-sdk-C2_M2pl_.cjs +1172 -0
  81. package/dist/src/codex-sdk-CErXn7qh.js +1165 -0
  82. package/dist/src/codex-sdk-CWEnH70W.cjs +2 -0
  83. package/dist/src/codex-sdk-CpqiOqDO.js +1164 -0
  84. package/dist/src/codex-sdk-Rtky3M4I.js +1165 -0
  85. package/dist/src/{cometapi-BL9yvj_f.js → cometapi-BUlt_ELa.js} +8 -15
  86. package/dist/src/{cometapi-DFNiKmSz.js → cometapi-CtJ-mS8R.js} +8 -16
  87. package/dist/src/cometapi-DT-jlVCB.js +55 -0
  88. package/dist/src/cometapi-UVOryo4W.cjs +55 -0
  89. package/dist/src/{completion-CM6oK8PS.cjs → completion-BozdoXba.cjs} +7 -62
  90. package/dist/src/{completion-5MzrpJxT.js → completion-Dnxn7E-j.js} +8 -57
  91. package/dist/src/{completion-qRoZAYRB.js → completion-HUe8wDhZ.js} +8 -57
  92. package/dist/src/{completion-DZ083F31.js → completion-x0a_c2y1.js} +8 -57
  93. package/dist/src/{createHash-CTQmL3G2.js → createHash-4gFQpDDv.js} +3 -3
  94. package/dist/src/{createHash-CfZSc0b4.cjs → createHash-B7KvgoOD.cjs} +4 -4
  95. package/dist/src/{createHash-Da8fMwqB.js → createHash-ChI45QR1.js} +3 -3
  96. package/dist/src/{createHash-DmPQkvBh.js → createHash-CwDVU5xr.js} +3 -3
  97. package/dist/src/{docker-ExVyLp0S.js → docker-CQmlA2NU.js} +7 -14
  98. package/dist/src/{docker-Bb5dcxr8.js → docker-ClnmCf1Z.js} +6 -14
  99. package/dist/src/{docker-BvfL2BrW.js → docker-DCgsveLD.js} +6 -16
  100. package/dist/src/{docker-DcF2pRrj.cjs → docker-DS4_Osau.cjs} +7 -15
  101. package/dist/src/embedding-D3xTseo7.js +59 -0
  102. package/dist/src/embedding-DD9wa3ae.js +58 -0
  103. package/dist/src/embedding-I45KG3o7.cjs +63 -0
  104. package/dist/src/embedding-nFbumxcv.js +58 -0
  105. package/dist/src/entrypoint.js +69 -6
  106. package/dist/src/{errors-P6ll7XSJ.js → errors-Cw810C93.js} +1 -1
  107. package/dist/src/{esm-CaIwzWR5.js → esm-C7PnfdF8.js} +16 -7
  108. package/dist/src/{esm-CnNt7sI4.cjs → esm-CtEPLdAj.cjs} +15 -6
  109. package/dist/src/{esm-Cd1AjG1D.js → esm-Dh4dOLlt.js} +15 -6
  110. package/dist/src/{esm-C03C-mv3.js → esm-tVgYPY-f.js} +27 -18
  111. package/dist/src/eval-CzJFfFO9.js +3 -0
  112. package/dist/src/{eval-Dg2nG4v2.js → eval-u4UVafl6.js} +49 -20
  113. package/dist/src/{evalResult-BDMqrapS.js → evalResult-Bgm9ZH31.js} +7 -7
  114. package/dist/src/{evalResult-BBRNtX4I.js → evalResult-D3hVYFis.js} +7 -7
  115. package/dist/src/evalResult-D8MT9p0s.js +3 -0
  116. package/dist/src/evalResult-DElBuddX.js +2 -0
  117. package/dist/src/evalResult-Dvc-iucu.cjs +2 -0
  118. package/dist/src/{evalResult-fuaI8HkH.cjs → evalResult-KZqXl4XP.cjs} +7 -7
  119. package/dist/src/evaluator-CVessDWe.js +3 -0
  120. package/dist/src/{evaluator-BhoWwp5b.js → evaluator-IvuDYSvQ.js} +3080 -1254
  121. package/dist/src/{extractor-D25qpmGX.js → extractor-CAfTSraf.js} +6 -6
  122. package/dist/src/{extractor-DReVID0K.js → extractor-DNSeBVOJ.js} +6 -6
  123. package/dist/src/{extractor-C0EVHewb.js → extractor-Dk6bRWkv.js} +6 -6
  124. package/dist/src/{extractor-pYLLi3wS.cjs → extractor-WVPOrH43.cjs} +6 -6
  125. package/dist/src/{fetch-HaqdX7U1.js → fetch-B0Z3Oe4k.js} +218 -55
  126. package/dist/src/{fetch-Dxpd4_sr.js → fetch-BEWnXrrG.js} +195 -45
  127. package/dist/src/fetch-C7bGKDlQ.js +3 -0
  128. package/dist/src/{fetch-BPkYtG8K.cjs → fetch-CJU5ELPa.cjs} +223 -48
  129. package/dist/src/{fetch-Cwxnd8zz.js → fetch-Di00EQrc.js} +218 -55
  130. package/dist/src/{fileExtensions-Ds-foDzt.js → fileExtensions-AWa2ZML4.js} +1 -1
  131. package/dist/src/{fileExtensions-LcDYkU4v.js → fileExtensions-BArZuxsI.js} +1 -1
  132. package/dist/src/{formatDuration-DgBVMN65.js → formatDuration-DZzPsexs.js} +1 -1
  133. package/dist/src/{genaiTracer-D3fD9dNV.js → genaiTracer-COYDi-tC.js} +6 -2
  134. package/dist/src/{genaiTracer-C1rxGO8Q.js → genaiTracer-DWdZ28hY.js} +6 -2
  135. package/dist/src/{genaiTracer-70Z8BIuV.js → genaiTracer-XnrcgDCe.js} +6 -2
  136. package/dist/src/{genaiTracer-DN4dQywX.cjs → genaiTracer-yRuxj9-L.cjs} +7 -3
  137. package/dist/src/golang/wrapper.go +1 -1
  138. package/dist/src/{graders-DU49_J8Y.cjs → graders--zknU_uk.cjs} +5747 -3206
  139. package/dist/src/graders-BOAzQEUe.cjs +2 -0
  140. package/dist/src/graders-D4BTsZdG2.js +3 -0
  141. package/dist/src/graders-DOJK1XpV.js +2 -0
  142. package/dist/src/graders-NAv9LcBn.js +2 -0
  143. package/dist/src/{graders-BTeBGqjJ.js → graders-Zy3x0zqX.js} +5727 -3218
  144. package/dist/src/{graders-Bj_Odv7c.js → graders-eIHhRqoC.js} +5719 -3210
  145. package/dist/src/{graders-DP7KFFo-.js → graders-pvbReLLn.js} +5728 -3219
  146. package/dist/src/{image-B0h9VEMc.js → image-9302QVqR.js} +4 -4
  147. package/dist/src/{image-CHfWvljl.js → image-B5Mv-Z3h.js} +8 -8
  148. package/dist/src/{image-DS-o-0ph.js → image-DVz2RiMF.js} +8 -8
  149. package/dist/src/{image-C1madmKh.cjs → image-De2FBmYV.cjs} +4 -4
  150. package/dist/src/{image-B02ogr_b.js → image-dnoUgPrC.js} +4 -5
  151. package/dist/src/{image-Dpxa1Jt6.js → image-qUpPvmNZ.js} +8 -8
  152. package/dist/src/{image-Bb4vWQLM.js → image-u7-rKnYU.js} +4 -4
  153. package/dist/src/{image-BLmROtN3.cjs → image-x6KqLQl4.cjs} +8 -8
  154. package/dist/src/index.cjs +3728 -1482
  155. package/dist/src/index.d.cts +3232 -79
  156. package/dist/src/index.d.ts +3232 -79
  157. package/dist/src/index.js +3735 -1490
  158. package/dist/src/{interactiveCheck-BgLZUIt3.js → interactiveCheck-CLERUB0c.js} +2 -2
  159. package/dist/src/{knowledgeBase-DOO_BM9b.cjs → knowledgeBase-Bpoe_nLu.cjs} +6 -8
  160. package/dist/src/{knowledgeBase-D33Ty2l6.js → knowledgeBase-Dgc7CBWF.js} +6 -8
  161. package/dist/src/{knowledgeBase-B3OoKIej.js → knowledgeBase-RhFPGWDc.js} +6 -8
  162. package/dist/src/{knowledgeBase-CYTLHOt1.js → knowledgeBase-lm9RXSAm.js} +6 -9
  163. package/dist/src/{litellm-NbjknEh6.js → litellm-C2kqjxqp.js} +6 -14
  164. package/dist/src/{litellm-I_hbp_dc.cjs → litellm-CoyI4IAl.cjs} +6 -15
  165. package/dist/src/{litellm-TrljxD9G.js → litellm-DRjpcSa7.js} +5 -14
  166. package/dist/src/{litellm-AaeZcZQF.js → litellm-p37R1dzQ.js} +5 -16
  167. package/dist/src/{logger-DLcq4dWf.js → logger-B88EkIn6.js} +48 -23
  168. package/dist/src/{logger-Cp1GPUjj.cjs → logger-COuQb2xB.cjs} +77 -22
  169. package/dist/src/{logger-CT3IKMKA.js → logger-Ct2S6Yx-.js} +48 -23
  170. package/dist/src/{logger-KkObSCzq.js → logger-DksKw1Qc.js} +48 -23
  171. package/dist/src/{luma-ray-f6I2fft-.js → luma-ray-B863CmuZ.js} +6 -10
  172. package/dist/src/{luma-ray-DDsjcgZZ.js → luma-ray-BTTLtqQ8.js} +7 -10
  173. package/dist/src/{luma-ray-Due0n7di.cjs → luma-ray-BxVKaW2a.cjs} +6 -10
  174. package/dist/src/{luma-ray-BS2_tY8L.js → luma-ray-KgTCXrZC.js} +6 -12
  175. package/dist/src/main.d.ts +1 -26
  176. package/dist/src/main.js +1011 -548
  177. package/dist/src/{messages-Bs1kC7P4.cjs → messages-811uVVW5.cjs} +74 -19
  178. package/dist/src/{messages-BS17jdMx.js → messages-BTQz42fn.js} +74 -19
  179. package/dist/src/{messages-ZJk778GH.js → messages-MYTQ2TWp.js} +74 -19
  180. package/dist/src/{messages-D0lx5qK7.js → messages-zWbkLLHz.js} +74 -19
  181. package/dist/src/{meteor-D-SotUw9.js → meteor-CU5UAE-H.js} +1 -1
  182. package/dist/src/{meteor-DLZZ3osF.cjs → meteor-Co1VQ1u5.cjs} +1 -1
  183. package/dist/src/{meteor-44VjEACX.js → meteor-DHdzY1Ss.js} +1 -1
  184. package/dist/src/{meteor-DUiCJRC-.js → meteor-DuAFv6gF.js} +1 -1
  185. package/dist/src/{modelslab-Bmni6skY.js → modelslab-D0erNWKe.js} +7 -10
  186. package/dist/src/{modelslab-DRb74SP4.js → modelslab-DIq-6y7x.js} +7 -10
  187. package/dist/src/{modelslab-CoUX6Jc_.cjs → modelslab-Dk1JAtVo.cjs} +7 -10
  188. package/dist/src/{modelslab-Bx9IrZfS.js → modelslab-wu9yi5GE.js} +7 -11
  189. package/dist/src/{nova-reel-BfPq-0Yk.js → nova-reel-CCFRfeRb.js} +7 -10
  190. package/dist/src/{nova-reel-C_QM18Xn.cjs → nova-reel-CrLXVKQf.cjs} +6 -10
  191. package/dist/src/{nova-reel-bgjxilYW.js → nova-reel-DQrm74ng.js} +6 -10
  192. package/dist/src/{nova-reel-D_W1tjMH.js → nova-reel-gr11WG7f.js} +6 -12
  193. package/dist/src/{nova-sonic-DIGQNR07.js → nova-sonic-BYdp-QLs.js} +5 -7
  194. package/dist/src/{nova-sonic-CFb5GYhg.js → nova-sonic-B_ZXcUJB.js} +4 -7
  195. package/dist/src/{nova-sonic-De1HW5fD.js → nova-sonic-TDgrlTk7.js} +4 -9
  196. package/dist/src/{nova-sonic-zfcljeRp.cjs → nova-sonic-i5tUvXKn.cjs} +4 -7
  197. package/dist/src/{openai-DElQ-fPX.js → openai-DhVEmgeZ.js} +6 -3
  198. package/dist/src/{openai-DhbB7eWK.js → openai-Qsvz25mV.js} +6 -3
  199. package/dist/src/{openai-Cuif0GEt.cjs → openai-URNyItar.cjs} +6 -3
  200. package/dist/src/{openai-j-sE2O7r.js → openai-iYtrXzOX.js} +6 -3
  201. package/dist/src/openclaw-CLWrW03k.js +1200 -0
  202. package/dist/src/openclaw-CnQ363Wi.js +1199 -0
  203. package/dist/src/openclaw-CwzlQSQX.js +1199 -0
  204. package/dist/src/openclaw-wX9rtfke.cjs +1205 -0
  205. package/dist/src/{opencode-sdk-B3CWY9h_.js → opencode-sdk-BUu5Nevv.js} +12 -14
  206. package/dist/src/{opencode-sdk-BL764Jdi.cjs → opencode-sdk-BZ2idgYA.cjs} +16 -18
  207. package/dist/src/{opencode-sdk-0j6rTWNb.js → opencode-sdk-BxD8vXp_.js} +12 -15
  208. package/dist/src/{opencode-sdk-C2y6UkP2.js → opencode-sdk-GI2KaAXq.js} +12 -14
  209. package/dist/src/{otlpReceiver-C99PPb48.js → otlpReceiver-B2z58l4e.js} +154 -98
  210. package/dist/src/{otlpReceiver-CGq6LspY.cjs → otlpReceiver-BfcVq2Nq.cjs} +154 -98
  211. package/dist/src/{otlpReceiver-D89fR-rC.js → otlpReceiver-BntK801g.js} +154 -98
  212. package/dist/src/{otlpReceiver-CdNBdbsk.js → otlpReceiver-DmVulbhC.js} +154 -98
  213. package/dist/src/{providerRegistry-CD8MEar9.js → providerRegistry-Bvh8mv85.js} +2 -2
  214. package/dist/src/{providerRegistry-DM8rZYol.js → providerRegistry-CPQ_CmVO.js} +2 -2
  215. package/dist/src/{providerRegistry-Civky8Ar.cjs → providerRegistry-CQMdTmHP.cjs} +2 -2
  216. package/dist/src/{providerRegistry-B0RUOLI_.js → providerRegistry-CWoPjKFZ.js} +2 -2
  217. package/dist/src/{providers-CgKOSgTR.cjs → providers-1eKkXBKp.cjs} +1435 -930
  218. package/dist/src/{providers-BlqUifFg.js → providers-BV_KMZje.js} +1419 -944
  219. package/dist/src/providers-Bp4S-FvO.js +2 -0
  220. package/dist/src/providers-DV3ax9e_.cjs +3 -0
  221. package/dist/src/{providers-D8lF1sqW.js → providers-Domz_llv.js} +1427 -952
  222. package/dist/src/{providers-Dk_6ocUX.js → providers-DruaQfwu.js} +1424 -949
  223. package/dist/src/providers-iUt5fbAN.js +3 -0
  224. package/dist/src/providers-u9Enmfok.js +2 -0
  225. package/dist/src/python/persistent_wrapper.py +0 -5
  226. package/dist/src/{pythonUtils-D6fwaDSg.js → pythonUtils-C2UQ30Rz.js} +4 -4
  227. package/dist/src/{pythonUtils-D5nxkQ0P.js → pythonUtils-Cldx7huE.js} +4 -4
  228. package/dist/src/{pythonUtils-C3py6GC1.js → pythonUtils-CnndUbW-.js} +3 -3
  229. package/dist/src/{pythonUtils-CTU3Y3lw.cjs → pythonUtils-tAJvvpS-.cjs} +3 -3
  230. package/dist/src/{quiverai-CIaELU_m.js → quiverai-CtWi6x_g.js} +4 -4
  231. package/dist/src/{quiverai-PdShCPox.cjs → quiverai-DFotyafY.cjs} +4 -4
  232. package/dist/src/{quiverai-BbOUOn2L.js → quiverai-DR0SnIQV.js} +4 -4
  233. package/dist/src/{quiverai-uH-dcTIr.js → quiverai-aPPvXOgn.js} +4 -5
  234. package/dist/src/render-CH-62LbA.js +135 -0
  235. package/dist/src/render-CMEpfLaO.js +136 -0
  236. package/dist/src/{render-Drod8m7K.js → render-CgVDrJmM.js} +2 -3
  237. package/dist/src/render-DHIZ6_k8.js +135 -0
  238. package/dist/src/render-DfQSFxGE.cjs +165 -0
  239. package/dist/src/{responses-DIR9Ud3j.js → responses--OsX2aYW.js} +23 -14
  240. package/dist/src/{responses-D8SBTL64.cjs → responses-Bi9vBuW_.cjs} +24 -15
  241. package/dist/src/{responses-CB2jwoAr.js → responses-C-flexAY.js} +24 -15
  242. package/dist/src/{responses-WNGNYe3K.js → responses-DL9m8CyY.js} +24 -15
  243. package/dist/src/{rubyUtils-DhCAlxZr.cjs → rubyUtils-B6eljPuh.cjs} +3 -3
  244. package/dist/src/{rubyUtils-BcuGX77l.js → rubyUtils-CYSQEG4a.js} +3 -3
  245. package/dist/src/rubyUtils-D1L2d3jb.js +3 -0
  246. package/dist/src/rubyUtils-DUbq4tff.cjs +2 -0
  247. package/dist/src/{rubyUtils-BUVePouc.js → rubyUtils-DVLeA2jg.js} +3 -3
  248. package/dist/src/{rubyUtils-Boc4HZzX.js → rubyUtils-DsGrTx8R.js} +3 -3
  249. package/dist/src/{sagemaker-CNBxx5CJ.js → sagemaker-BVkaG2-l.js} +14 -18
  250. package/dist/src/{sagemaker-CemTFp2h.js → sagemaker-BveBvuxm.js} +14 -18
  251. package/dist/src/{sagemaker-YSyBXQQh.js → sagemaker-D67yzMzs.js} +14 -19
  252. package/dist/src/{sagemaker-Cl28mZU2.cjs → sagemaker-XnfhheQv.cjs} +14 -18
  253. package/dist/src/{scanner-BsBlNXNn.js → scanner-1DqWi1Ej.js} +130 -35
  254. package/dist/src/server/golang/wrapper.go +1 -1
  255. package/dist/src/server/index.js +3757 -1511
  256. package/dist/src/server/python/persistent_wrapper.py +0 -5
  257. package/dist/src/{server-CqzrVGpF.js → server-BNYztJkh.js} +128 -9
  258. package/dist/src/{server-CuxBbeSY.js → server-BSB45Nt9.js} +127 -8
  259. package/dist/src/{server-VWgWb00X.js → server-D6Il2Sob.js} +126 -7
  260. package/dist/src/server-DCtHUqlp.js +3 -0
  261. package/dist/src/server-DaA2eR26.cjs +2 -0
  262. package/dist/src/{server-C_7Ax-hA.cjs → server-Dx2TyCH2.cjs} +140 -6
  263. package/dist/src/{signal-4U3mfRvL.js → signal-CE5G3a7x.js} +3 -3
  264. package/dist/src/{slack-BmVAVGaK.cjs → slack-1Rhq0EoV.cjs} +2 -2
  265. package/dist/src/{slack-DCUPTzS2.js → slack-D5Wpy8LM.js} +2 -2
  266. package/dist/src/{slack-DXMKtA-f.js → slack-DDUe-5MC.js} +2 -2
  267. package/dist/src/{slack-DOdy_kyv.js → slack-acRb0IqQ.js} +2 -2
  268. package/dist/src/store-CWOSz6D_.cjs +2 -0
  269. package/dist/src/{store-Dim__MDd.js → store-CYEy5J2D.js} +17 -5
  270. package/dist/src/{store-DLlFCC4h.cjs → store-DAAyxcy6.cjs} +17 -5
  271. package/dist/src/store-DCDBhv7B.js +3 -0
  272. package/dist/src/{store-CXGFv4aR.js → store-Dn9HUkdW.js} +17 -5
  273. package/dist/src/{store-DXilxTl-.js → store-M0b1WfYb.js} +17 -5
  274. package/dist/src/{tables-gftXzE9I.js → tables-C4CH3zRr.js} +3 -3
  275. package/dist/src/{tables-DLJPUdUE.js → tables-CsWou1Bx.js} +3 -3
  276. package/dist/src/{tables-6YKwjN9-.js → tables-DQ4WU5tX.js} +3 -3
  277. package/dist/src/{tables-DPi7wKeM.cjs → tables-DUfh1F7Z.cjs} +3 -3
  278. package/dist/src/telemetry-C1IqxcdW.js +3 -0
  279. package/dist/src/telemetry-C4ZEa_es.cjs +2 -0
  280. package/dist/src/{telemetry-CMrFgtPB.js → telemetry-CQPez_Jp.js} +4 -4
  281. package/dist/src/{telemetry-DaX14Chu.cjs → telemetry-Dsw_faFj.cjs} +4 -4
  282. package/dist/src/{telemetry-Dthj_BbD.js → telemetry-Dvqxv3YC.js} +4 -4
  283. package/dist/src/{telemetry-Cps3mIU-.js → telemetry-dbaJ0E98.js} +4 -4
  284. package/dist/src/{text-CW1cyrwj.cjs → text-BVi-cLPJ.cjs} +1 -1
  285. package/dist/src/{text-B_UCRPp2.js → text-CZr46tp_.js} +1 -1
  286. package/dist/src/{text-TIv0QYnd.js → text-DHxdyQqT.js} +1 -1
  287. package/dist/src/{text-Db-Wt2u2.js → text-KvuD2Iko.js} +1 -1
  288. package/dist/src/{tokenUsageUtils-bVa1ga6f.cjs → tokenUsageUtils-Bb7DkZPz.cjs} +7 -3
  289. package/dist/src/{tokenUsageUtils-NYT-WKS6.js → tokenUsageUtils-C-bmyHoE.js} +7 -3
  290. package/dist/src/{tokenUsageUtils-DflFMjS0.js → tokenUsageUtils-CXrvO-wA.js} +7 -3
  291. package/dist/src/{transcription-NLVG9MT1.cjs → transcription-BvjmiYB1.cjs} +12 -16
  292. package/dist/src/{transcription-BNYURcXg.js → transcription-CJspiD2c.js} +11 -14
  293. package/dist/src/{transcription-B_OdaHp7.js → transcription-DuWDupG7.js} +10 -14
  294. package/dist/src/{transcription-s6A-bNrZ.js → transcription-V2HaAmy2.js} +10 -16
  295. package/dist/src/{transform-DECvGmzp.js → transform-Bbg6A8Jk.js} +4 -4
  296. package/dist/src/{transform-vNucnNr0.js → transform-CG0ehZNG.js} +11 -7
  297. package/dist/src/{transform-DuHvhZpj.cjs → transform-CTeuTR3S.cjs} +31 -9
  298. package/dist/src/{transform-CzK1Q0zl.cjs → transform-CUnzlsbn.cjs} +4 -4
  299. package/dist/src/{transform-aa6tmVpZ.js → transform-DYX1_Xnh.js} +5 -5
  300. package/dist/src/transform-DgKlRr73.cjs +2 -0
  301. package/dist/src/transform-M6ITAESf.js +3 -0
  302. package/dist/src/{transform-DilY9wbS.js → transform-UN5UGu8U.js} +5 -5
  303. package/dist/src/{transform-uAytVuyX.js → transform-lQrDE1BQ.js} +11 -7
  304. package/dist/src/{transform-D5HsjduX.js → transform-zDhMmzwX.js} +11 -7
  305. package/dist/src/{transformersAvailability-CEVM2GNQ.js → transformersAvailability-CcHusyhw.js} +1 -1
  306. package/dist/src/{transformersAvailability-CwayUSlh.cjs → transformersAvailability-Cju9mHgR.cjs} +1 -1
  307. package/dist/src/{transformersAvailability-D6c6ROpT.js → transformersAvailability-DLlROWhg.js} +1 -1
  308. package/dist/src/{types-DmyIJ-sR.js → types-BGQDAP8i.js} +357 -22
  309. package/dist/src/{types-CzW2QFyi.js → types-Bgh5SOn6.js} +358 -24
  310. package/dist/src/{types-C_7nyzr1.cjs → types-CeaeaZdP.cjs} +393 -22
  311. package/dist/src/{types-Cbd8uOMq.js → types-Dm9JM6Vb.js} +368 -23
  312. package/dist/src/{util-BHGHw5G1.js → util-BYvQUPp7.js} +138 -36
  313. package/dist/src/{util-B9vlHIIh.cjs → util-Bxn8emtE.cjs} +15 -168
  314. package/dist/src/{util-ZzmqNPlg.js → util-C8e5uydV.js} +19 -142
  315. package/dist/src/{util-CMy69ZgQ.js → util-C9J8ahRn.js} +18 -4
  316. package/dist/src/{util-BzMcevZc.cjs → util-CN3SrLT4.cjs} +18 -4
  317. package/dist/src/{util-BV4XUC0n.js → util-D3q0WQ-0.js} +18 -4
  318. package/dist/src/{util-Dnmk2mBQ.js → util-D9TisOyk.js} +18 -4
  319. package/dist/src/{util-B3xGByQh.js → util-DDs-7g6-.js} +138 -36
  320. package/dist/src/{util-Bv6uGDfH.js → util-DvU2Pw8c.js} +138 -36
  321. package/dist/src/{util-C1CeHl-P.js → util-DxWpWjhc.js} +13 -136
  322. package/dist/src/{util-BRYkYPTd.js → util-oGMLA7vc.js} +17 -140
  323. package/dist/src/{util-DGNOS1db.cjs → util-olYL5C6N.cjs} +143 -35
  324. package/dist/src/{utils-Cz9qXqII.cjs → utils-B05gLxER.cjs} +6 -4
  325. package/dist/src/{utils-f2-Moju7.js → utils-BLJKfv0y.js} +6 -4
  326. package/dist/src/{utils-dLokC-eR.js → utils-DJfvjyMj.js} +6 -4
  327. package/dist/src/{utils-XiOAgly5.js → utils-hXtCYanr.js} +6 -4
  328. package/dist/tsconfig.tsbuildinfo +1 -1
  329. package/package.json +66 -57
  330. package/dist/src/app/assets/index-4LKxG2CG.js +0 -439
  331. package/dist/src/app/assets/index-C3zcsZFQ.css +0 -1
  332. package/dist/src/app/assets/scroll-timeline-BdJZVXlz.js +0 -1
  333. package/dist/src/app/assets/sync-9qqYcY-B.js +0 -4
  334. package/dist/src/app/assets/vendor-charts-BnDWwBlI.js +0 -36
  335. package/dist/src/app/assets/vendor-markdown-0tekx3KX.js +0 -29
  336. package/dist/src/app/assets/vendor-react-AtKqiNEf.js +0 -4
  337. package/dist/src/app/assets/vendor-syntax-D06x6TQF.js +0 -2
  338. package/dist/src/app/assets/vendor-utils-BvMHZmO7.js +0 -37
  339. package/dist/src/app/tsconfig.app.tsbuildinfo +0 -1
  340. package/dist/src/cache-BVeDlD87.js +0 -726
  341. package/dist/src/cache-C4Nxf52C.js +0 -756
  342. package/dist/src/cache-CeUpFm3M.cjs +0 -5
  343. package/dist/src/cache-Dh5WtQps.cjs +0 -816
  344. package/dist/src/cache-i1P6crbO.js +0 -756
  345. package/dist/src/cache-n-RCJ-hL.js +0 -6
  346. package/dist/src/cloud-BBh91EUK.js +0 -4
  347. package/dist/src/codex-sdk-C6UMlxwV.js +0 -665
  348. package/dist/src/codex-sdk-DUwKWezN.js +0 -665
  349. package/dist/src/codex-sdk-GGAw0qbD.js +0 -666
  350. package/dist/src/codex-sdk-fAO0c3yA.cjs +0 -669
  351. package/dist/src/eval-B3r2CVXr.js +0 -15
  352. package/dist/src/evalResult-5xwYnECe.js +0 -12
  353. package/dist/src/evalResult-71lY93Kj.cjs +0 -10
  354. package/dist/src/evalResult-Dx5P5cIv.js +0 -10
  355. package/dist/src/evaluator-Jx6bRZV6.js +0 -36
  356. package/dist/src/fetch-BxNb_Lp3.js +0 -5
  357. package/dist/src/graders-B_pgMLS2.js +0 -34
  358. package/dist/src/graders-DErokPDO.cjs +0 -32
  359. package/dist/src/graders-DR_uNe54.js +0 -32
  360. package/dist/src/graders-w3176Wz-.js +0 -32
  361. package/dist/src/openclaw-CSugPYAr.cjs +0 -586
  362. package/dist/src/openclaw-DiSz3I5L.js +0 -582
  363. package/dist/src/openclaw-DuvJKEW5.js +0 -580
  364. package/dist/src/openclaw-tiVYRtr-.js +0 -580
  365. package/dist/src/providers-B7V0njNs.js +0 -32
  366. package/dist/src/providers-BEwbhv0X.js +0 -30
  367. package/dist/src/providers-CH3C7zf7.js +0 -30
  368. package/dist/src/providers-zyB6k_38.cjs +0 -31
  369. package/dist/src/rubyUtils-BUHu6PhO.js +0 -5
  370. package/dist/src/rubyUtils-CP42kMvq.cjs +0 -4
  371. package/dist/src/server-DA4Cyrrq.js +0 -7
  372. package/dist/src/server-Dulb-4-K.cjs +0 -5
  373. package/dist/src/store-CXS-Q_91.js +0 -6
  374. package/dist/src/store-eYkaKMwq.cjs +0 -5
  375. package/dist/src/telemetry-BpMfhthR.cjs +0 -5
  376. package/dist/src/telemetry-Dw38hanS.js +0 -7
  377. package/dist/src/tokenUsageUtils-BDGe-iyI.js +0 -138
  378. package/dist/src/transform-DTGDnAzW.js +0 -6
  379. package/dist/src/transform-m3qNw4KP.cjs +0 -5
@@ -1,8 +1,6 @@
1
- const require_logger = require("./logger-Cp1GPUjj.cjs");
2
- const require_esm = require("./esm-CnNt7sI4.cjs");
3
- require("./types-C_7nyzr1.cjs");
4
- require("./tables-DPi7wKeM.cjs");
5
- const require_store = require("./store-DLlFCC4h.cjs");
1
+ const require_logger = require("./logger-COuQb2xB.cjs");
2
+ const require_esm = require("./esm-CtEPLdAj.cjs");
3
+ const require_store = require("./store-DAAyxcy6.cjs");
6
4
  let path = require("path");
7
5
  path = require_logger.__toESM(path);
8
6
  let express = require("express");
@@ -95,28 +93,57 @@ const SPAN_KIND_MAP = {
95
93
  4: "producer",
96
94
  5: "consumer"
97
95
  };
96
+ const DEFAULT_ACCEPT_FORMATS = ["json", "protobuf"];
97
+ const OTLP_CONTENT_TYPES = {
98
+ json: "application/json",
99
+ protobuf: "application/x-protobuf"
100
+ };
101
+ function normalizeAcceptFormats(acceptFormats) {
102
+ const normalized = [...new Set(acceptFormats ?? DEFAULT_ACCEPT_FORMATS)];
103
+ return normalized.length > 0 ? normalized : [...DEFAULT_ACCEPT_FORMATS];
104
+ }
105
+ function getRequestFormat(contentType) {
106
+ const mimeType = (Array.isArray(contentType) ? contentType[0] : contentType)?.split(";", 1)[0]?.trim().toLowerCase();
107
+ if (mimeType === OTLP_CONTENT_TYPES.json) return "json";
108
+ if (mimeType === OTLP_CONTENT_TYPES.protobuf) return "protobuf";
109
+ return null;
110
+ }
98
111
  var OTLPReceiver = class {
99
112
  app;
113
+ acceptFormats;
100
114
  traceStore;
101
115
  port;
102
116
  server;
103
- constructor() {
117
+ constructor(options = {}) {
104
118
  this.app = (0, express.default)();
119
+ this.acceptFormats = normalizeAcceptFormats(options.acceptFormats);
105
120
  this.traceStore = require_store.getTraceStore();
106
121
  require_logger.logger.debug("[OtlpReceiver] Initializing OTLP receiver");
107
122
  this.setupMiddleware();
108
123
  this.setupRoutes();
109
124
  }
110
125
  setupMiddleware() {
111
- this.app.use(express.default.json({
126
+ this.app.use("/v1/traces", (req, res, next) => {
127
+ if (req.method !== "POST") {
128
+ next();
129
+ return;
130
+ }
131
+ const format = getRequestFormat(req.headers["content-type"]);
132
+ if (!format || !this.acceptFormats.includes(format)) {
133
+ res.status(415).json({ error: "Unsupported content type" });
134
+ return;
135
+ }
136
+ next();
137
+ });
138
+ this.app.use("/v1/traces", express.default.json({
112
139
  limit: "10mb",
113
- type: "application/json"
140
+ type: (req) => this.acceptFormats.includes("json") && getRequestFormat(req.headers["content-type"]) === "json"
114
141
  }));
115
- this.app.use(express.default.raw({
116
- type: "application/x-protobuf",
117
- limit: "10mb"
142
+ this.app.use("/v1/traces", express.default.raw({
143
+ limit: "10mb",
144
+ type: (req) => this.acceptFormats.includes("protobuf") && getRequestFormat(req.headers["content-type"]) === "protobuf"
118
145
  }));
119
- require_logger.logger.debug("[OtlpReceiver] Middleware configured for JSON and protobuf");
146
+ require_logger.logger.debug("[OtlpReceiver] Middleware configured for accepted OTLP formats");
120
147
  }
121
148
  setupRoutes() {
122
149
  this.app.post("/v1/traces", async (req, res) => {
@@ -124,64 +151,19 @@ var OTLPReceiver = class {
124
151
  const bodySize = req.body ? JSON.stringify(req.body).length : 0;
125
152
  require_logger.logger.debug(`[OtlpReceiver] Received trace request: ${req.headers["content-type"]} with ${bodySize} bytes`);
126
153
  require_logger.logger.debug("[OtlpReceiver] Starting to process traces");
127
- const isJson = contentType === "application/json";
128
- const isProtobuf = contentType === "application/x-protobuf";
129
- if (!isJson && !isProtobuf) {
154
+ const format = getRequestFormat(contentType);
155
+ if (!format || !this.acceptFormats.includes(format)) {
130
156
  res.status(415).json({ error: "Unsupported content type" });
131
157
  return;
132
158
  }
133
159
  try {
134
- let traces = [];
135
- if (isJson) {
136
- require_logger.logger.debug("[OtlpReceiver] Parsing OTLP JSON request");
137
- require_logger.logger.debug(`[OtlpReceiver] Request body: ${JSON.stringify(req.body).substring(0, 500)}...`);
138
- traces = this.parseOTLPJSONRequest(req.body);
139
- } else if (isProtobuf) {
140
- require_logger.logger.debug("[OtlpReceiver] Parsing OTLP protobuf request");
141
- require_logger.logger.debug(`[OtlpReceiver] Request body size: ${req.body?.length || 0} bytes`);
142
- traces = await this.parseOTLPProtobufRequest(req.body);
143
- }
160
+ const traces = await this.parseIncomingRequest(format, req.body);
144
161
  require_logger.logger.debug(`[OtlpReceiver] Parsed ${traces.length} traces from request`);
145
- const spansByTrace = /* @__PURE__ */ new Map();
146
- const traceInfoById = /* @__PURE__ */ new Map();
147
- for (const trace of traces) {
148
- if (!spansByTrace.has(trace.traceId)) {
149
- spansByTrace.set(trace.traceId, []);
150
- const evaluationId = trace.span.attributes?.["evaluation.id"];
151
- const testCaseId = trace.span.attributes?.["test.case.id"];
152
- const info = traceInfoById.get(trace.traceId) ?? {};
153
- if (evaluationId) info.evaluationId = evaluationId;
154
- if (testCaseId) info.testCaseId = testCaseId;
155
- traceInfoById.set(trace.traceId, info);
156
- }
157
- spansByTrace.get(trace.traceId).push(trace.span);
158
- }
159
- require_logger.logger.debug(`[OtlpReceiver] Grouped spans into ${spansByTrace.size} traces`);
160
- for (const [traceId, info] of traceInfoById) try {
161
- require_logger.logger.debug(`[OtlpReceiver] Creating trace record for ${traceId}`);
162
- await this.traceStore.createTrace({
163
- traceId,
164
- evaluationId: info.evaluationId || "",
165
- testCaseId: info.testCaseId || ""
166
- });
167
- } catch (error) {
168
- require_logger.logger.debug(`[OtlpReceiver] Trace ${traceId} may already exist: ${error}`);
169
- }
170
- for (const [traceId, spans] of spansByTrace) {
171
- require_logger.logger.debug(`[OtlpReceiver] Storing ${spans.length} spans for trace ${traceId}`);
172
- await this.traceStore.addSpans(traceId, spans, { skipTraceCheck: true });
173
- }
162
+ await this.persistTraces(this.groupTraces(traces));
174
163
  res.status(200).json({ partialSuccess: {} });
175
164
  require_logger.logger.debug("[OtlpReceiver] Successfully processed traces");
176
165
  } catch (error) {
177
- require_logger.logger.error(`[OtlpReceiver] Failed to process OTLP traces: ${error}`);
178
- require_logger.logger.error(`[OtlpReceiver] Error stack: ${error instanceof Error ? error.stack : "No stack"}`);
179
- const errorMessage = error instanceof Error ? error.message : String(error);
180
- if (errorMessage.toLowerCase().includes("invalid protobuf")) {
181
- res.status(400).json({ error: errorMessage });
182
- return;
183
- }
184
- res.status(500).json({ error: "Internal server error" });
166
+ this.handleProcessingError(error, res);
185
167
  }
186
168
  });
187
169
  this.app.get("/health", (_req, res) => {
@@ -192,7 +174,7 @@ var OTLPReceiver = class {
192
174
  res.status(200).json({
193
175
  service: "promptfoo-otlp-receiver",
194
176
  version: "1.0.0",
195
- supported_formats: ["json", "protobuf"]
177
+ supported_formats: this.acceptFormats
196
178
  });
197
179
  });
198
180
  this.app.get("/debug/status", async (_req, res) => {
@@ -213,6 +195,71 @@ var OTLPReceiver = class {
213
195
  res.status(500).json({ error: "Internal server error" });
214
196
  });
215
197
  }
198
+ async parseIncomingRequest(format, body) {
199
+ if (format === "json") {
200
+ require_logger.logger.debug("[OtlpReceiver] Parsing OTLP JSON request");
201
+ require_logger.logger.debug(`[OtlpReceiver] Request body: ${JSON.stringify(body).substring(0, 500)}...`);
202
+ return this.parseOTLPJSONRequest(body);
203
+ }
204
+ require_logger.logger.debug("[OtlpReceiver] Parsing OTLP protobuf request");
205
+ require_logger.logger.debug(`[OtlpReceiver] Request body size: ${body?.length || 0} bytes`);
206
+ return this.parseOTLPProtobufRequest(body);
207
+ }
208
+ groupTraces(traces) {
209
+ const spansByTrace = /* @__PURE__ */ new Map();
210
+ const traceInfoById = /* @__PURE__ */ new Map();
211
+ for (const trace of traces) {
212
+ const spans = spansByTrace.get(trace.traceId) ?? [];
213
+ spans.push(trace.span);
214
+ spansByTrace.set(trace.traceId, spans);
215
+ this.recordTraceInfo(traceInfoById, trace);
216
+ }
217
+ require_logger.logger.debug(`[OtlpReceiver] Grouped spans into ${spansByTrace.size} traces`);
218
+ return {
219
+ spansByTrace,
220
+ traceInfoById
221
+ };
222
+ }
223
+ recordTraceInfo(traceInfoById, trace) {
224
+ const evaluationId = trace.span.attributes?.["evaluation.id"];
225
+ const testCaseId = trace.span.attributes?.["test.case.id"];
226
+ const info = traceInfoById.get(trace.traceId) ?? {};
227
+ if (evaluationId) info.evaluationId = evaluationId;
228
+ if (testCaseId) info.testCaseId = testCaseId;
229
+ traceInfoById.set(trace.traceId, info);
230
+ }
231
+ async persistTraces({ spansByTrace, traceInfoById }) {
232
+ await this.createTraceRecords(traceInfoById);
233
+ await this.storeSpans(spansByTrace);
234
+ }
235
+ async createTraceRecords(traceInfoById) {
236
+ for (const [traceId, info] of traceInfoById) try {
237
+ require_logger.logger.debug(`[OtlpReceiver] Creating trace record for ${traceId}`);
238
+ await this.traceStore.createTrace({
239
+ traceId,
240
+ evaluationId: info.evaluationId || "",
241
+ testCaseId: info.testCaseId || ""
242
+ });
243
+ } catch (error) {
244
+ require_logger.logger.debug(`[OtlpReceiver] Trace ${traceId} may already exist: ${error}`);
245
+ }
246
+ }
247
+ async storeSpans(spansByTrace) {
248
+ for (const [traceId, spans] of spansByTrace) {
249
+ require_logger.logger.debug(`[OtlpReceiver] Storing ${spans.length} spans for trace ${traceId}`);
250
+ await this.traceStore.addSpans(traceId, spans, { skipTraceCheck: true });
251
+ }
252
+ }
253
+ handleProcessingError(error, res) {
254
+ require_logger.logger.error(`[OtlpReceiver] Failed to process OTLP traces: ${error}`);
255
+ require_logger.logger.error(`[OtlpReceiver] Error stack: ${error instanceof Error ? error.stack : "No stack"}`);
256
+ const errorMessage = error instanceof Error ? error.message : String(error);
257
+ if (errorMessage.toLowerCase().includes("invalid protobuf")) {
258
+ res.status(400).json({ error: errorMessage });
259
+ return;
260
+ }
261
+ res.status(500).json({ error: "Internal server error" });
262
+ }
216
263
  parseOTLPJSONRequest(body) {
217
264
  const traces = [];
218
265
  require_logger.logger.debug(`[OtlpReceiver] Parsing request with ${body.resourceSpans?.length || 0} resource spans`);
@@ -251,44 +298,42 @@ var OTLPReceiver = class {
251
298
  return traces;
252
299
  }
253
300
  async parseOTLPProtobufRequest(body) {
254
- const traces = [];
255
301
  const decoded = await decodeExportTraceServiceRequest(body);
256
302
  require_logger.logger.debug(`[OtlpReceiver] Parsing protobuf request with ${decoded.resourceSpans?.length || 0} resource spans`);
257
- for (const resourceSpan of decoded.resourceSpans || []) {
258
- const resourceAttributes = this.parseDecodedAttributes(resourceSpan.resource?.attributes);
259
- require_logger.logger.debug(`[OtlpReceiver] Parsed ${Object.keys(resourceAttributes).length} resource attributes from protobuf`);
260
- for (const scopeSpan of resourceSpan.scopeSpans || []) for (const span of scopeSpan.spans || []) {
261
- const traceId = bytesToHex(span.traceId, 32);
262
- const spanId = bytesToHex(span.spanId, 16);
263
- const parentSpanId = span.parentSpanId?.length ? bytesToHex(span.parentSpanId, 16) : void 0;
264
- require_logger.logger.debug(`[OtlpReceiver] Processing protobuf span: ${span.name} (${spanId}) in trace ${traceId}`);
265
- const spanKindName = SPAN_KIND_MAP[span.kind ?? 0] ?? "unspecified";
266
- const attributes = {
303
+ return (decoded.resourceSpans || []).flatMap((resourceSpan) => this.parseDecodedResourceSpan(resourceSpan));
304
+ }
305
+ parseDecodedResourceSpan(resourceSpan) {
306
+ const resourceAttributes = this.parseDecodedAttributes(resourceSpan.resource?.attributes);
307
+ require_logger.logger.debug(`[OtlpReceiver] Parsed ${Object.keys(resourceAttributes).length} resource attributes from protobuf`);
308
+ return (resourceSpan.scopeSpans || []).flatMap((scopeSpan) => (scopeSpan.spans || []).map((span) => this.createDecodedParsedTrace(resourceAttributes, scopeSpan, span)));
309
+ }
310
+ createDecodedParsedTrace(resourceAttributes, scopeSpan, span) {
311
+ const traceId = bytesToHex(span.traceId, 32);
312
+ const spanId = bytesToHex(span.spanId, 16);
313
+ const parentSpanId = span.parentSpanId?.length ? bytesToHex(span.parentSpanId, 16) : void 0;
314
+ require_logger.logger.debug(`[OtlpReceiver] Processing protobuf span: ${span.name} (${spanId}) in trace ${traceId}`);
315
+ const spanKindCode = span.kind ?? 0;
316
+ const spanKindName = SPAN_KIND_MAP[spanKindCode] ?? "unspecified";
317
+ return {
318
+ traceId,
319
+ span: {
320
+ spanId,
321
+ parentSpanId,
322
+ name: span.name,
323
+ startTime: this.toMilliseconds(span.startTimeUnixNano) ?? 0,
324
+ endTime: this.toMilliseconds(span.endTimeUnixNano),
325
+ attributes: {
267
326
  ...resourceAttributes,
268
327
  ...this.parseDecodedAttributes(span.attributes),
269
328
  "otel.scope.name": scopeSpan.scope?.name,
270
329
  "otel.scope.version": scopeSpan.scope?.version,
271
330
  "otel.span.kind": spanKindName,
272
- "otel.span.kind_code": span.kind ?? 0
273
- };
274
- const startTimeNano = typeof span.startTimeUnixNano === "number" ? span.startTimeUnixNano : Number(span.startTimeUnixNano);
275
- const endTimeNano = span.endTimeUnixNano ? typeof span.endTimeUnixNano === "number" ? span.endTimeUnixNano : Number(span.endTimeUnixNano) : void 0;
276
- traces.push({
277
- traceId,
278
- span: {
279
- spanId,
280
- parentSpanId,
281
- name: span.name,
282
- startTime: startTimeNano / 1e6,
283
- endTime: endTimeNano ? endTimeNano / 1e6 : void 0,
284
- attributes,
285
- statusCode: span.status?.code,
286
- statusMessage: span.status?.message
287
- }
288
- });
331
+ "otel.span.kind_code": spanKindCode
332
+ },
333
+ statusCode: span.status?.code,
334
+ statusMessage: span.status?.message
289
335
  }
290
- }
291
- return traces;
336
+ };
292
337
  }
293
338
  parseDecodedAttributes(attributes) {
294
339
  if (!attributes) return {};
@@ -389,15 +434,26 @@ var OTLPReceiver = class {
389
434
  getApp() {
390
435
  return this.app;
391
436
  }
437
+ setAcceptFormats(acceptFormats) {
438
+ this.acceptFormats = normalizeAcceptFormats(acceptFormats);
439
+ }
440
+ toMilliseconds(value) {
441
+ if (value === void 0) return;
442
+ return Number(value) / 1e6;
443
+ }
392
444
  };
393
445
  let otlpReceiver = null;
394
- function getOTLPReceiver() {
395
- if (!otlpReceiver) otlpReceiver = new OTLPReceiver();
446
+ function getOTLPReceiver(options) {
447
+ if (otlpReceiver) {
448
+ otlpReceiver.setAcceptFormats(options?.acceptFormats);
449
+ return otlpReceiver;
450
+ }
451
+ otlpReceiver = new OTLPReceiver(options);
396
452
  return otlpReceiver;
397
453
  }
398
- async function startOTLPReceiver(port, host) {
454
+ async function startOTLPReceiver(port, host, acceptFormats) {
399
455
  require_logger.logger.debug("[OtlpReceiver] Starting receiver through startOTLPReceiver function");
400
- await getOTLPReceiver().listen(port, host);
456
+ await getOTLPReceiver({ acceptFormats }).listen(port, host);
401
457
  }
402
458
  async function stopOTLPReceiver() {
403
459
  require_logger.logger.debug("[OtlpReceiver] Stopping receiver through stopOTLPReceiver function");
@@ -410,4 +466,4 @@ async function stopOTLPReceiver() {
410
466
  exports.startOTLPReceiver = startOTLPReceiver;
411
467
  exports.stopOTLPReceiver = stopOTLPReceiver;
412
468
 
413
- //# sourceMappingURL=otlpReceiver-CGq6LspY.cjs.map
469
+ //# sourceMappingURL=otlpReceiver-BfcVq2Nq.cjs.map
@@ -1,9 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { o as logger } from "./logger-KkObSCzq.js";
3
- import "./types-Cbd8uOMq.js";
4
- import { t as getDirectory } from "./esm-C03C-mv3.js";
5
- import "./tables-gftXzE9I.js";
6
- import { n as getTraceStore } from "./store-Dim__MDd.js";
2
+ import { s as logger } from "./logger-DksKw1Qc.js";
3
+ import { t as getDirectory } from "./esm-tVgYPY-f.js";
4
+ import { n as getTraceStore } from "./store-CYEy5J2D.js";
7
5
  import path from "path";
8
6
  import express from "express";
9
7
  import protobuf from "protobufjs";
@@ -93,28 +91,57 @@ const SPAN_KIND_MAP = {
93
91
  4: "producer",
94
92
  5: "consumer"
95
93
  };
94
+ const DEFAULT_ACCEPT_FORMATS = ["json", "protobuf"];
95
+ const OTLP_CONTENT_TYPES = {
96
+ json: "application/json",
97
+ protobuf: "application/x-protobuf"
98
+ };
99
+ function normalizeAcceptFormats(acceptFormats) {
100
+ const normalized = [...new Set(acceptFormats ?? DEFAULT_ACCEPT_FORMATS)];
101
+ return normalized.length > 0 ? normalized : [...DEFAULT_ACCEPT_FORMATS];
102
+ }
103
+ function getRequestFormat(contentType) {
104
+ const mimeType = (Array.isArray(contentType) ? contentType[0] : contentType)?.split(";", 1)[0]?.trim().toLowerCase();
105
+ if (mimeType === OTLP_CONTENT_TYPES.json) return "json";
106
+ if (mimeType === OTLP_CONTENT_TYPES.protobuf) return "protobuf";
107
+ return null;
108
+ }
96
109
  var OTLPReceiver = class {
97
110
  app;
111
+ acceptFormats;
98
112
  traceStore;
99
113
  port;
100
114
  server;
101
- constructor() {
115
+ constructor(options = {}) {
102
116
  this.app = express();
117
+ this.acceptFormats = normalizeAcceptFormats(options.acceptFormats);
103
118
  this.traceStore = getTraceStore();
104
119
  logger.debug("[OtlpReceiver] Initializing OTLP receiver");
105
120
  this.setupMiddleware();
106
121
  this.setupRoutes();
107
122
  }
108
123
  setupMiddleware() {
109
- this.app.use(express.json({
124
+ this.app.use("/v1/traces", (req, res, next) => {
125
+ if (req.method !== "POST") {
126
+ next();
127
+ return;
128
+ }
129
+ const format = getRequestFormat(req.headers["content-type"]);
130
+ if (!format || !this.acceptFormats.includes(format)) {
131
+ res.status(415).json({ error: "Unsupported content type" });
132
+ return;
133
+ }
134
+ next();
135
+ });
136
+ this.app.use("/v1/traces", express.json({
110
137
  limit: "10mb",
111
- type: "application/json"
138
+ type: (req) => this.acceptFormats.includes("json") && getRequestFormat(req.headers["content-type"]) === "json"
112
139
  }));
113
- this.app.use(express.raw({
114
- type: "application/x-protobuf",
115
- limit: "10mb"
140
+ this.app.use("/v1/traces", express.raw({
141
+ limit: "10mb",
142
+ type: (req) => this.acceptFormats.includes("protobuf") && getRequestFormat(req.headers["content-type"]) === "protobuf"
116
143
  }));
117
- logger.debug("[OtlpReceiver] Middleware configured for JSON and protobuf");
144
+ logger.debug("[OtlpReceiver] Middleware configured for accepted OTLP formats");
118
145
  }
119
146
  setupRoutes() {
120
147
  this.app.post("/v1/traces", async (req, res) => {
@@ -122,64 +149,19 @@ var OTLPReceiver = class {
122
149
  const bodySize = req.body ? JSON.stringify(req.body).length : 0;
123
150
  logger.debug(`[OtlpReceiver] Received trace request: ${req.headers["content-type"]} with ${bodySize} bytes`);
124
151
  logger.debug("[OtlpReceiver] Starting to process traces");
125
- const isJson = contentType === "application/json";
126
- const isProtobuf = contentType === "application/x-protobuf";
127
- if (!isJson && !isProtobuf) {
152
+ const format = getRequestFormat(contentType);
153
+ if (!format || !this.acceptFormats.includes(format)) {
128
154
  res.status(415).json({ error: "Unsupported content type" });
129
155
  return;
130
156
  }
131
157
  try {
132
- let traces = [];
133
- if (isJson) {
134
- logger.debug("[OtlpReceiver] Parsing OTLP JSON request");
135
- logger.debug(`[OtlpReceiver] Request body: ${JSON.stringify(req.body).substring(0, 500)}...`);
136
- traces = this.parseOTLPJSONRequest(req.body);
137
- } else if (isProtobuf) {
138
- logger.debug("[OtlpReceiver] Parsing OTLP protobuf request");
139
- logger.debug(`[OtlpReceiver] Request body size: ${req.body?.length || 0} bytes`);
140
- traces = await this.parseOTLPProtobufRequest(req.body);
141
- }
158
+ const traces = await this.parseIncomingRequest(format, req.body);
142
159
  logger.debug(`[OtlpReceiver] Parsed ${traces.length} traces from request`);
143
- const spansByTrace = /* @__PURE__ */ new Map();
144
- const traceInfoById = /* @__PURE__ */ new Map();
145
- for (const trace of traces) {
146
- if (!spansByTrace.has(trace.traceId)) {
147
- spansByTrace.set(trace.traceId, []);
148
- const evaluationId = trace.span.attributes?.["evaluation.id"];
149
- const testCaseId = trace.span.attributes?.["test.case.id"];
150
- const info = traceInfoById.get(trace.traceId) ?? {};
151
- if (evaluationId) info.evaluationId = evaluationId;
152
- if (testCaseId) info.testCaseId = testCaseId;
153
- traceInfoById.set(trace.traceId, info);
154
- }
155
- spansByTrace.get(trace.traceId).push(trace.span);
156
- }
157
- logger.debug(`[OtlpReceiver] Grouped spans into ${spansByTrace.size} traces`);
158
- for (const [traceId, info] of traceInfoById) try {
159
- logger.debug(`[OtlpReceiver] Creating trace record for ${traceId}`);
160
- await this.traceStore.createTrace({
161
- traceId,
162
- evaluationId: info.evaluationId || "",
163
- testCaseId: info.testCaseId || ""
164
- });
165
- } catch (error) {
166
- logger.debug(`[OtlpReceiver] Trace ${traceId} may already exist: ${error}`);
167
- }
168
- for (const [traceId, spans] of spansByTrace) {
169
- logger.debug(`[OtlpReceiver] Storing ${spans.length} spans for trace ${traceId}`);
170
- await this.traceStore.addSpans(traceId, spans, { skipTraceCheck: true });
171
- }
160
+ await this.persistTraces(this.groupTraces(traces));
172
161
  res.status(200).json({ partialSuccess: {} });
173
162
  logger.debug("[OtlpReceiver] Successfully processed traces");
174
163
  } catch (error) {
175
- logger.error(`[OtlpReceiver] Failed to process OTLP traces: ${error}`);
176
- logger.error(`[OtlpReceiver] Error stack: ${error instanceof Error ? error.stack : "No stack"}`);
177
- const errorMessage = error instanceof Error ? error.message : String(error);
178
- if (errorMessage.toLowerCase().includes("invalid protobuf")) {
179
- res.status(400).json({ error: errorMessage });
180
- return;
181
- }
182
- res.status(500).json({ error: "Internal server error" });
164
+ this.handleProcessingError(error, res);
183
165
  }
184
166
  });
185
167
  this.app.get("/health", (_req, res) => {
@@ -190,7 +172,7 @@ var OTLPReceiver = class {
190
172
  res.status(200).json({
191
173
  service: "promptfoo-otlp-receiver",
192
174
  version: "1.0.0",
193
- supported_formats: ["json", "protobuf"]
175
+ supported_formats: this.acceptFormats
194
176
  });
195
177
  });
196
178
  this.app.get("/debug/status", async (_req, res) => {
@@ -211,6 +193,71 @@ var OTLPReceiver = class {
211
193
  res.status(500).json({ error: "Internal server error" });
212
194
  });
213
195
  }
196
+ async parseIncomingRequest(format, body) {
197
+ if (format === "json") {
198
+ logger.debug("[OtlpReceiver] Parsing OTLP JSON request");
199
+ logger.debug(`[OtlpReceiver] Request body: ${JSON.stringify(body).substring(0, 500)}...`);
200
+ return this.parseOTLPJSONRequest(body);
201
+ }
202
+ logger.debug("[OtlpReceiver] Parsing OTLP protobuf request");
203
+ logger.debug(`[OtlpReceiver] Request body size: ${body?.length || 0} bytes`);
204
+ return this.parseOTLPProtobufRequest(body);
205
+ }
206
+ groupTraces(traces) {
207
+ const spansByTrace = /* @__PURE__ */ new Map();
208
+ const traceInfoById = /* @__PURE__ */ new Map();
209
+ for (const trace of traces) {
210
+ const spans = spansByTrace.get(trace.traceId) ?? [];
211
+ spans.push(trace.span);
212
+ spansByTrace.set(trace.traceId, spans);
213
+ this.recordTraceInfo(traceInfoById, trace);
214
+ }
215
+ logger.debug(`[OtlpReceiver] Grouped spans into ${spansByTrace.size} traces`);
216
+ return {
217
+ spansByTrace,
218
+ traceInfoById
219
+ };
220
+ }
221
+ recordTraceInfo(traceInfoById, trace) {
222
+ const evaluationId = trace.span.attributes?.["evaluation.id"];
223
+ const testCaseId = trace.span.attributes?.["test.case.id"];
224
+ const info = traceInfoById.get(trace.traceId) ?? {};
225
+ if (evaluationId) info.evaluationId = evaluationId;
226
+ if (testCaseId) info.testCaseId = testCaseId;
227
+ traceInfoById.set(trace.traceId, info);
228
+ }
229
+ async persistTraces({ spansByTrace, traceInfoById }) {
230
+ await this.createTraceRecords(traceInfoById);
231
+ await this.storeSpans(spansByTrace);
232
+ }
233
+ async createTraceRecords(traceInfoById) {
234
+ for (const [traceId, info] of traceInfoById) try {
235
+ logger.debug(`[OtlpReceiver] Creating trace record for ${traceId}`);
236
+ await this.traceStore.createTrace({
237
+ traceId,
238
+ evaluationId: info.evaluationId || "",
239
+ testCaseId: info.testCaseId || ""
240
+ });
241
+ } catch (error) {
242
+ logger.debug(`[OtlpReceiver] Trace ${traceId} may already exist: ${error}`);
243
+ }
244
+ }
245
+ async storeSpans(spansByTrace) {
246
+ for (const [traceId, spans] of spansByTrace) {
247
+ logger.debug(`[OtlpReceiver] Storing ${spans.length} spans for trace ${traceId}`);
248
+ await this.traceStore.addSpans(traceId, spans, { skipTraceCheck: true });
249
+ }
250
+ }
251
+ handleProcessingError(error, res) {
252
+ logger.error(`[OtlpReceiver] Failed to process OTLP traces: ${error}`);
253
+ logger.error(`[OtlpReceiver] Error stack: ${error instanceof Error ? error.stack : "No stack"}`);
254
+ const errorMessage = error instanceof Error ? error.message : String(error);
255
+ if (errorMessage.toLowerCase().includes("invalid protobuf")) {
256
+ res.status(400).json({ error: errorMessage });
257
+ return;
258
+ }
259
+ res.status(500).json({ error: "Internal server error" });
260
+ }
214
261
  parseOTLPJSONRequest(body) {
215
262
  const traces = [];
216
263
  logger.debug(`[OtlpReceiver] Parsing request with ${body.resourceSpans?.length || 0} resource spans`);
@@ -249,44 +296,42 @@ var OTLPReceiver = class {
249
296
  return traces;
250
297
  }
251
298
  async parseOTLPProtobufRequest(body) {
252
- const traces = [];
253
299
  const decoded = await decodeExportTraceServiceRequest(body);
254
300
  logger.debug(`[OtlpReceiver] Parsing protobuf request with ${decoded.resourceSpans?.length || 0} resource spans`);
255
- for (const resourceSpan of decoded.resourceSpans || []) {
256
- const resourceAttributes = this.parseDecodedAttributes(resourceSpan.resource?.attributes);
257
- logger.debug(`[OtlpReceiver] Parsed ${Object.keys(resourceAttributes).length} resource attributes from protobuf`);
258
- for (const scopeSpan of resourceSpan.scopeSpans || []) for (const span of scopeSpan.spans || []) {
259
- const traceId = bytesToHex(span.traceId, 32);
260
- const spanId = bytesToHex(span.spanId, 16);
261
- const parentSpanId = span.parentSpanId?.length ? bytesToHex(span.parentSpanId, 16) : void 0;
262
- logger.debug(`[OtlpReceiver] Processing protobuf span: ${span.name} (${spanId}) in trace ${traceId}`);
263
- const spanKindName = SPAN_KIND_MAP[span.kind ?? 0] ?? "unspecified";
264
- const attributes = {
301
+ return (decoded.resourceSpans || []).flatMap((resourceSpan) => this.parseDecodedResourceSpan(resourceSpan));
302
+ }
303
+ parseDecodedResourceSpan(resourceSpan) {
304
+ const resourceAttributes = this.parseDecodedAttributes(resourceSpan.resource?.attributes);
305
+ logger.debug(`[OtlpReceiver] Parsed ${Object.keys(resourceAttributes).length} resource attributes from protobuf`);
306
+ return (resourceSpan.scopeSpans || []).flatMap((scopeSpan) => (scopeSpan.spans || []).map((span) => this.createDecodedParsedTrace(resourceAttributes, scopeSpan, span)));
307
+ }
308
+ createDecodedParsedTrace(resourceAttributes, scopeSpan, span) {
309
+ const traceId = bytesToHex(span.traceId, 32);
310
+ const spanId = bytesToHex(span.spanId, 16);
311
+ const parentSpanId = span.parentSpanId?.length ? bytesToHex(span.parentSpanId, 16) : void 0;
312
+ logger.debug(`[OtlpReceiver] Processing protobuf span: ${span.name} (${spanId}) in trace ${traceId}`);
313
+ const spanKindCode = span.kind ?? 0;
314
+ const spanKindName = SPAN_KIND_MAP[spanKindCode] ?? "unspecified";
315
+ return {
316
+ traceId,
317
+ span: {
318
+ spanId,
319
+ parentSpanId,
320
+ name: span.name,
321
+ startTime: this.toMilliseconds(span.startTimeUnixNano) ?? 0,
322
+ endTime: this.toMilliseconds(span.endTimeUnixNano),
323
+ attributes: {
265
324
  ...resourceAttributes,
266
325
  ...this.parseDecodedAttributes(span.attributes),
267
326
  "otel.scope.name": scopeSpan.scope?.name,
268
327
  "otel.scope.version": scopeSpan.scope?.version,
269
328
  "otel.span.kind": spanKindName,
270
- "otel.span.kind_code": span.kind ?? 0
271
- };
272
- const startTimeNano = typeof span.startTimeUnixNano === "number" ? span.startTimeUnixNano : Number(span.startTimeUnixNano);
273
- const endTimeNano = span.endTimeUnixNano ? typeof span.endTimeUnixNano === "number" ? span.endTimeUnixNano : Number(span.endTimeUnixNano) : void 0;
274
- traces.push({
275
- traceId,
276
- span: {
277
- spanId,
278
- parentSpanId,
279
- name: span.name,
280
- startTime: startTimeNano / 1e6,
281
- endTime: endTimeNano ? endTimeNano / 1e6 : void 0,
282
- attributes,
283
- statusCode: span.status?.code,
284
- statusMessage: span.status?.message
285
- }
286
- });
329
+ "otel.span.kind_code": spanKindCode
330
+ },
331
+ statusCode: span.status?.code,
332
+ statusMessage: span.status?.message
287
333
  }
288
- }
289
- return traces;
334
+ };
290
335
  }
291
336
  parseDecodedAttributes(attributes) {
292
337
  if (!attributes) return {};
@@ -387,15 +432,26 @@ var OTLPReceiver = class {
387
432
  getApp() {
388
433
  return this.app;
389
434
  }
435
+ setAcceptFormats(acceptFormats) {
436
+ this.acceptFormats = normalizeAcceptFormats(acceptFormats);
437
+ }
438
+ toMilliseconds(value) {
439
+ if (value === void 0) return;
440
+ return Number(value) / 1e6;
441
+ }
390
442
  };
391
443
  let otlpReceiver = null;
392
- function getOTLPReceiver() {
393
- if (!otlpReceiver) otlpReceiver = new OTLPReceiver();
444
+ function getOTLPReceiver(options) {
445
+ if (otlpReceiver) {
446
+ otlpReceiver.setAcceptFormats(options?.acceptFormats);
447
+ return otlpReceiver;
448
+ }
449
+ otlpReceiver = new OTLPReceiver(options);
394
450
  return otlpReceiver;
395
451
  }
396
- async function startOTLPReceiver(port, host) {
452
+ async function startOTLPReceiver(port, host, acceptFormats) {
397
453
  logger.debug("[OtlpReceiver] Starting receiver through startOTLPReceiver function");
398
- await getOTLPReceiver().listen(port, host);
454
+ await getOTLPReceiver({ acceptFormats }).listen(port, host);
399
455
  }
400
456
  async function stopOTLPReceiver() {
401
457
  logger.debug("[OtlpReceiver] Stopping receiver through stopOTLPReceiver function");
@@ -407,4 +463,4 @@ async function stopOTLPReceiver() {
407
463
  //#endregion
408
464
  export { startOTLPReceiver, stopOTLPReceiver };
409
465
 
410
- //# sourceMappingURL=otlpReceiver-D89fR-rC.js.map
466
+ //# sourceMappingURL=otlpReceiver-BntK801g.js.map