promptfoo 0.121.3 → 0.121.5

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 (394) hide show
  1. package/README.md +1 -1
  2. package/dist/src/{ListApp-Du7YVwj5.js → ListApp-BRUsT43Y.js} +1 -1
  3. package/dist/src/{accounts-BPyfpSeU.cjs → accounts-BIFntVWB.cjs} +5 -5
  4. package/dist/src/{accounts-CFLK3mnD.js → accounts-CLJHCDDb.js} +6 -6
  5. package/dist/src/{accounts-B2XmGjty.js → accounts-CaLNYnf7.js} +5 -5
  6. package/dist/src/{accounts-Xatc0RYb.js → accounts-bnyHT7Ju.js} +5 -5
  7. package/dist/src/{agentic-utils-36epdqwB.js → agentic-utils-B5krlibj.js} +3 -3
  8. package/dist/src/{agentic-utils-DIYAAYE7.js → agentic-utils-Ba67xmgs.js} +3 -3
  9. package/dist/src/{agentic-utils-D8yXo5Lm.js → agentic-utils-BclbiXiq.js} +4 -4
  10. package/dist/src/{agentic-utils-DAVsChuB.cjs → agentic-utils-D2x0wGhB.cjs} +3 -3
  11. package/dist/src/{agents-CLQ-P15P.js → agents-BGqaTDnr.js} +5 -7
  12. package/dist/src/{agents-wg3ohknq.js → agents-BV9yFpXX.js} +6 -7
  13. package/dist/src/{agents-CgBniSlI.js → agents-BYdMl1UE.js} +5 -9
  14. package/dist/src/{agents-Bqgfdokm.js → agents-DhxWMCtH.js} +35 -14
  15. package/dist/src/{agents-BBWxKSM0.cjs → agents-DiWmQYH9.cjs} +5 -7
  16. package/dist/src/{agents-CAYbM7qD.cjs → agents-WULPVjbH.cjs} +34 -12
  17. package/dist/src/{agents-DSSTV4bv.js → agents-emVcx3yh.js} +35 -13
  18. package/dist/src/{agents-BBVJCIYr.js → agents-n6vPqV3i.js} +35 -13
  19. package/dist/src/{aimlapi-BwGC1TtS.js → aimlapi-BxqK9HF_.js} +8 -14
  20. package/dist/src/{aimlapi-Bv8Fmc-b.cjs → aimlapi-BzLjZI_m.cjs} +8 -15
  21. package/dist/src/{aimlapi-MgSLdvy7.js → aimlapi-DR4pgeiC.js} +7 -14
  22. package/dist/src/{aimlapi-DaC3qZ-o.js → aimlapi-uPGp0Zdo.js} +7 -16
  23. package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -0
  24. package/dist/src/app/assets/Report-vjzrbgce.js +1 -0
  25. package/dist/src/app/assets/index-B3NQ8HTd.js +385 -0
  26. package/dist/src/app/assets/index-Cli2yAXv.css +1 -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 +32 -7
  35. package/dist/src/{audio-Bn44pQxv.js → audio-BvpTOArF.js} +4 -4
  36. package/dist/src/{audio-DVFjQ67_.cjs → audio-C0vDeS0j.cjs} +4 -4
  37. package/dist/src/{audio-DjU9GswO.js → audio-CScmnmEB.js} +4 -5
  38. package/dist/src/{audio-DDA5WHdx.js → audio-Da8U9IS5.js} +4 -4
  39. package/dist/src/{base-CKjwebIH.js → base-BOMaNEes.js} +3 -3
  40. package/dist/src/{base-CqzQ4K8j.js → base-BTux96b1.js} +3 -3
  41. package/dist/src/{base-BboXIF_0.cjs → base-Tw6uhH8K.cjs} +3 -3
  42. package/dist/src/{base-Cz2ZC_iA.js → base-dYsl2hmL.js} +3 -3
  43. package/dist/src/{blobs-C6j0bvFz.cjs → blobs-B95F_7vE.cjs} +3 -3
  44. package/dist/src/{blobs-DXTl6J3H.js → blobs-BW4U31ue.js} +3 -3
  45. package/dist/src/{blobs-BUWmKWzo.js → blobs-D_gg8nbm.js} +4 -4
  46. package/dist/src/{blobs-B1JriOyi.js → blobs-DjLby-uP.js} +4 -4
  47. package/dist/src/cache-BI5BY7ey.js +280 -0
  48. package/dist/src/cache-BRkhlH3k.cjs +3 -0
  49. package/dist/src/cache-BlC6aeJ0.js +3 -0
  50. package/dist/src/cache-Bzttsk0X.js +310 -0
  51. package/dist/src/cache-Cr-qWIbP.js +310 -0
  52. package/dist/src/cache-DGg-yTZG.cjs +376 -0
  53. package/dist/src/{chat-BEwdgGEg.js → chat-BLOdH60v.js} +63 -37
  54. package/dist/src/{chat-B0iaWhoh.js → chat-Cx_LkwvZ.js} +63 -37
  55. package/dist/src/{chat-DK1U-eZ-.js → chat-D9nudO9b.js} +5 -14
  56. package/dist/src/{chat-pxmiVpWe.js → chat-DChSH_Es.js} +63 -37
  57. package/dist/src/{chat-B-52XYI1.js → chat-DG2LkwLq.js} +3 -13
  58. package/dist/src/{chat-BtIKkLKx.cjs → chat-DH97tVV9.cjs} +3 -13
  59. package/dist/src/{chat-BE0qTA8e.js → chat-aMQZw6R7.js} +4 -16
  60. package/dist/src/{chat-CM8qWR3_.cjs → chat-vYqqv1gP.cjs} +64 -38
  61. package/dist/src/{chatkit-_8eJqKcD.js → chatkit-B8X34dQc.js} +4 -4
  62. package/dist/src/{chatkit-BYGQlHlV.js → chatkit-BXu42Qwt.js} +4 -4
  63. package/dist/src/{chatkit-a2D6mY6s.js → chatkit-CbMRoeYw.js} +4 -4
  64. package/dist/src/{chatkit-Cx174XI3.cjs → chatkit-D44VyUyB.cjs} +4 -4
  65. package/dist/src/{claude-agent-sdk-8ddRp1L2.cjs → claude-agent-sdk-BRq0bbIK.cjs} +23 -18
  66. package/dist/src/{claude-agent-sdk-CMjh4LFH.js → claude-agent-sdk-BjriSVRZ.js} +20 -15
  67. package/dist/src/{claude-agent-sdk-HgbFioFw.js → claude-agent-sdk-BzNZeZ0N.js} +20 -15
  68. package/dist/src/{claude-agent-sdk-Bq5EArsX.js → claude-agent-sdk-DYv_AJ8u.js} +21 -17
  69. package/dist/src/cloud-CoD5OacT.js +3 -0
  70. package/dist/src/{cloud-z8KZpUoa.js → cloud-Da0bofJd.js} +25 -13
  71. package/dist/src/{cloudflare-ai-Bbp26N0L.js → cloudflare-ai-CXC4b1EU.js} +5 -14
  72. package/dist/src/{cloudflare-ai-BGyXlpXJ.js → cloudflare-ai-CyBoIs1Q.js} +7 -15
  73. package/dist/src/{cloudflare-ai-DdKP9TKT.js → cloudflare-ai-DGOwgexC.js} +6 -17
  74. package/dist/src/{cloudflare-ai-C62x6MQG.cjs → cloudflare-ai-DJv5qnyb.cjs} +6 -15
  75. package/dist/src/{cloudflare-gateway-DXhtXDRb.js → cloudflare-gateway-1sAoOyft.js} +6 -16
  76. package/dist/src/{cloudflare-gateway-D-e9i1Sn.js → cloudflare-gateway-D-dnkzCF.js} +5 -18
  77. package/dist/src/{cloudflare-gateway-Dx36ftqF.cjs → cloudflare-gateway-DKVjkDav.cjs} +4 -15
  78. package/dist/src/{cloudflare-gateway-BwAaUgeW.js → cloudflare-gateway-TJkVrZlB.js} +4 -15
  79. package/dist/src/codex-app-server-CCLjqCh9.js +1915 -0
  80. package/dist/src/codex-app-server-CCe0TiDc.js +1915 -0
  81. package/dist/src/codex-app-server-CPW1LFwh.js +1916 -0
  82. package/dist/src/codex-app-server-VMRnjZ68.cjs +1920 -0
  83. package/dist/src/codex-sdk-1jm_qPHf.js +3 -0
  84. package/dist/src/codex-sdk-Bd8UbO9q.cjs +1172 -0
  85. package/dist/src/codex-sdk-BgEFQ70r.js +1164 -0
  86. package/dist/src/codex-sdk-Bzb_TqX9.js +1165 -0
  87. package/dist/src/codex-sdk-Danroptg.cjs +2 -0
  88. package/dist/src/codex-sdk-DfvDTN33.js +1165 -0
  89. package/dist/src/{cometapi-BDyV-NNm.js → cometapi-B5ImDlSm.js} +9 -15
  90. package/dist/src/{cometapi-C3hOlM7-.cjs → cometapi-BgAkuYCw.cjs} +9 -16
  91. package/dist/src/{cometapi-hhL4TAh3.js → cometapi-CC7hWxmX.js} +8 -15
  92. package/dist/src/{cometapi-sp7sJpBD.js → cometapi-CCbpHkuF.js} +8 -17
  93. package/dist/src/{completion-DoYy49ti.js → completion-2iuYVxwi.js} +8 -57
  94. package/dist/src/{completion-BCimtq-h.js → completion-CrD6MQ93.js} +8 -57
  95. package/dist/src/{completion-DlXUhj5c.cjs → completion-DtQ72Bm3.cjs} +7 -62
  96. package/dist/src/{completion-DCjv7RZ3.js → completion-Vq_ad618.js} +8 -57
  97. package/dist/src/{createHash-CTQmL3G2.js → createHash-4gFQpDDv.js} +3 -3
  98. package/dist/src/{createHash-Da8fMwqB.js → createHash-DPpsZgFF.js} +3 -3
  99. package/dist/src/{createHash-DmPQkvBh.js → createHash-Un4Q_huE.js} +3 -3
  100. package/dist/src/{createHash-BYwImsYv.cjs → createHash-VvBIc-AW.cjs} +4 -4
  101. package/dist/src/{docker-CxCkwMzc.js → docker--3qzPa-6.js} +6 -14
  102. package/dist/src/{docker-Cqj2-QVi.cjs → docker-D3AY-5F5.cjs} +7 -15
  103. package/dist/src/{docker-FeBni2dw.js → docker-DCsCDvwM.js} +7 -14
  104. package/dist/src/{docker-DpguQj-w.js → docker-Dorv4_Dg.js} +6 -16
  105. package/dist/src/embedding-BXhN5lCH.cjs +63 -0
  106. package/dist/src/embedding-ChS1ivFS.js +58 -0
  107. package/dist/src/embedding-DNRvZwRN.js +59 -0
  108. package/dist/src/embedding-D_bI4NDq.js +58 -0
  109. package/dist/src/entrypoint.js +69 -6
  110. package/dist/src/{errors-P6ll7XSJ.js → errors-DFHe4L-n.js} +1 -1
  111. package/dist/src/{esm-SUNIX1x3.js → esm-B6whoAcf.js} +15 -6
  112. package/dist/src/{esm-CKWP3u_P.js → esm-BRkfNsYs.js} +16 -7
  113. package/dist/src/{esm-7UIl0pPM.js → esm-BX8fwlAO.js} +27 -18
  114. package/dist/src/{esm-CipptfDu.cjs → esm-B_rGuPTo.cjs} +15 -6
  115. package/dist/src/eval-BQPLBJbw.js +3 -0
  116. package/dist/src/{eval-BTqTn7lb.js → eval-DJ_4A-tr.js} +50 -21
  117. package/dist/src/evalResult-BBJAHAtw.cjs +2 -0
  118. package/dist/src/evalResult-BBK58h2B.js +3 -0
  119. package/dist/src/{evalResult-DpARzUCb.cjs → evalResult-Cx-8OWkb.cjs} +29 -11
  120. package/dist/src/{evalResult-DUDShQrm.js → evalResult-D6P5I5il.js} +29 -11
  121. package/dist/src/{evalResult-BkIhRdTe.js → evalResult-pSvGWFMo.js} +29 -11
  122. package/dist/src/evalResult-spPqh1G_.js +2 -0
  123. package/dist/src/{evaluator-BcvOGaam.js → evaluator-D-UIbbYq.js} +3975 -2152
  124. package/dist/src/evaluator-DgLKaZk8.js +3 -0
  125. package/dist/src/{extractor-D_wd8jxt.js → extractor-BM3jRERL.js} +6 -6
  126. package/dist/src/{extractor-DG3sSfXE.cjs → extractor-Dxr2J_wK.cjs} +6 -6
  127. package/dist/src/{extractor-CAZ2G3Kh.js → extractor-DxyiFhPk.js} +6 -6
  128. package/dist/src/{extractor-C8XwivI9.js → extractor-YlZbUMsL.js} +6 -6
  129. package/dist/src/fetch-8viavNv8.js +3 -0
  130. package/dist/src/{fetch-DoVRJZhJ.js → fetch-B6ch2nU2.js} +199 -60
  131. package/dist/src/{fetch-CVAtKnI3.js → fetch-D9xxyC1p.js} +404 -252
  132. package/dist/src/{fetch-BnR9wSnm.cjs → fetch-NuqXW1Xb.cjs} +415 -263
  133. package/dist/src/{fetch-BiYv2BZc.js → fetch-Y5qX_kST.js} +222 -70
  134. package/dist/src/{fileExtensions-LcDYkU4v.js → fileExtensions-8CjoL7vB.js} +1 -1
  135. package/dist/src/{fileExtensions-DnqA1y9x.js → fileExtensions-BGh-W-HT.js} +1 -1
  136. package/dist/src/{fileExtensions-bYh77CN8.cjs → fileExtensions-D9h-8Wxg.cjs} +1 -1
  137. package/dist/src/{fileExtensions-Ds-foDzt.js → fileExtensions-DysCsxNG.js} +1 -1
  138. package/dist/src/{formatDuration-DgBVMN65.js → formatDuration-Ch4A7G3o.js} +1 -1
  139. package/dist/src/{genaiTracer-BfxrvSUb.cjs → genaiTracer-BokHC-MW.cjs} +7 -3
  140. package/dist/src/{genaiTracer-C1rxGO8Q.js → genaiTracer-C3ZPQU60.js} +6 -2
  141. package/dist/src/{genaiTracer-70Z8BIuV.js → genaiTracer-CFny3gOy.js} +6 -2
  142. package/dist/src/{genaiTracer-D3fD9dNV.js → genaiTracer-DxODqT9e.js} +6 -2
  143. package/dist/src/golang/wrapper.go +1 -1
  144. package/dist/src/{graders-DG7mhg-b.js → graders-BoUqsCEm.js} +7402 -5699
  145. package/dist/src/{graders-BElhu9ZY.cjs → graders-Bw1wk_21.cjs} +5220 -3437
  146. package/dist/src/graders-C84JI-m5.js +2 -0
  147. package/dist/src/graders-CBbd0K0Q.cjs +2 -0
  148. package/dist/src/graders-CbQqpHSN.js +3 -0
  149. package/dist/src/{graders-RjHF8VfG.js → graders-CgPn32yp.js} +7400 -5697
  150. package/dist/src/{graders-BXAJ0sbS.js → graders-CwrbifOo.js} +6136 -4433
  151. package/dist/src/graders-DS42d3ZG.js +2 -0
  152. package/dist/src/{image-6WQXK8m8.js → image-BeWaInPF.js} +4 -4
  153. package/dist/src/{image-PoF6DN3x.js → image-BmilRNqO.js} +8 -8
  154. package/dist/src/{image--F58eEIn.cjs → image-CxJoa3aW.cjs} +8 -8
  155. package/dist/src/{image-fza3zuKs.cjs → image-D10dNAav.cjs} +4 -4
  156. package/dist/src/{image-DO0RYnjH.js → image-Dr_3I3nK.js} +4 -5
  157. package/dist/src/{image-B8b6f36E.js → image-DsGRlkh7.js} +8 -8
  158. package/dist/src/{image-CoxZp9PZ.js → image-a_SGUobh.js} +8 -8
  159. package/dist/src/{image-xNbw5ph2.js → image-qjO6FWPs.js} +4 -4
  160. package/dist/src/index.cjs +4835 -2582
  161. package/dist/src/index.d.cts +2782 -31
  162. package/dist/src/index.d.ts +2783 -32
  163. package/dist/src/index.js +4817 -2564
  164. package/dist/src/{interactiveCheck-BnMYOjMu.js → interactiveCheck-CCICw2cy.js} +2 -2
  165. package/dist/src/{invariant-BtWWVVhl.js → invariant-B2Rf6avk.js} +1 -1
  166. package/dist/src/{invariant-vgHWClmd.js → invariant-DIYf9sP1.js} +1 -1
  167. package/dist/src/{knowledgeBase-Bi7CmDbx.js → knowledgeBase-BBETc5-S.js} +6 -8
  168. package/dist/src/{knowledgeBase-DqrLX8fy.cjs → knowledgeBase-C8qOo26M.cjs} +6 -8
  169. package/dist/src/{knowledgeBase-DFRXPZl_.js → knowledgeBase-CzAi2rUI.js} +7 -8
  170. package/dist/src/{knowledgeBase-Ce3ofVan.js → knowledgeBase-Dr3Kib7F.js} +6 -10
  171. package/dist/src/{litellm-CKiAxnoM.js → litellm-BLSiANhk.js} +6 -14
  172. package/dist/src/{litellm-CnHI69aj.cjs → litellm-CaUmV7Mk.cjs} +6 -15
  173. package/dist/src/{litellm-Tc294Jhj.js → litellm-DQGo_juI.js} +5 -14
  174. package/dist/src/{litellm-Bo2gQXpo.js → litellm-DRc4qWfc.js} +5 -16
  175. package/dist/src/{logger-BcJBzSSA.js → logger-BbY6ypFL.js} +41 -12
  176. package/dist/src/{logger-D5iKBpu_.cjs → logger-COuQb2xB.cjs} +51 -10
  177. package/dist/src/{logger-DO8_zM18.js → logger-Ct2S6Yx-.js} +40 -11
  178. package/dist/src/{logger-BnkjG2jt.js → logger-KD8JjCRJ.js} +41 -12
  179. package/dist/src/{luma-ray-C9q8rdQe.js → luma-ray-B-tNZzqW.js} +6 -10
  180. package/dist/src/{luma-ray-DP0QA9qn.js → luma-ray-CtS3OlGq.js} +6 -10
  181. package/dist/src/{luma-ray-0ehMPt5N.js → luma-ray-PJJgUjOc.js} +6 -11
  182. package/dist/src/{luma-ray-m9Ku2meV.cjs → luma-ray-if-Ml4R9.cjs} +6 -10
  183. package/dist/src/main.d.ts +1 -26
  184. package/dist/src/main.js +1188 -679
  185. package/dist/src/messages-B9dSjrNf.js +544 -0
  186. package/dist/src/messages-BnsVHUnm.cjs +558 -0
  187. package/dist/src/messages-CI69Lasb.js +543 -0
  188. package/dist/src/messages-CewuNcNS.js +543 -0
  189. package/dist/src/{meteor-DLZZ3osF.cjs → meteor-BBGcGeCa.cjs} +1 -1
  190. package/dist/src/{meteor-DUiCJRC-.js → meteor-BKTM-7KS.js} +1 -1
  191. package/dist/src/{meteor-44VjEACX.js → meteor-CeGo0Lu2.js} +2 -2
  192. package/dist/src/{meteor-D-SotUw9.js → meteor-Wc_aUVvu.js} +2 -2
  193. package/dist/src/{modelslab-B5J-ZM5c.js → modelslab-BCLOtfek.js} +8 -10
  194. package/dist/src/{modelslab-IQbNg-r7.cjs → modelslab-BkapYJhh.cjs} +7 -10
  195. package/dist/src/{modelslab-BTOT8FUO.js → modelslab-D73OnKSx.js} +7 -10
  196. package/dist/src/{modelslab-BI458moT.js → modelslab-zpz9JcK0.js} +7 -12
  197. package/dist/src/{nova-reel-BZ9y-Y5s.js → nova-reel-B8F_TK5w.js} +7 -10
  198. package/dist/src/{nova-reel-Xw1SXLpg.js → nova-reel-Bx0NFV2f.js} +6 -10
  199. package/dist/src/{nova-reel-DEeQlnOJ.js → nova-reel-CNGJTLtG.js} +6 -12
  200. package/dist/src/{nova-reel-CE5etkv9.cjs → nova-reel-DkT7tnoB.cjs} +6 -10
  201. package/dist/src/{nova-sonic-Ogqf-csn.js → nova-sonic-BaXRN1cr.js} +5 -7
  202. package/dist/src/{nova-sonic-DXTLpi-r.js → nova-sonic-BeTRaFOh.js} +4 -7
  203. package/dist/src/{nova-sonic-DWswpN1E.js → nova-sonic-CL7Zqv0G.js} +4 -9
  204. package/dist/src/{nova-sonic-N0yCm0vb.cjs → nova-sonic-YT426juD.cjs} +4 -7
  205. package/dist/src/{openai-BcB5KlTk.js → openai-BMHD2Huo.js} +6 -3
  206. package/dist/src/{openai-BMcwgD5C.js → openai-BT-JvDse.js} +6 -3
  207. package/dist/src/{openai-CoxGAQwn.cjs → openai-Cy1XLs0c.cjs} +6 -3
  208. package/dist/src/{openai-D6wITiVn.js → openai-D4fxGvRx.js} +6 -3
  209. package/dist/src/openclaw-Bq7RVR3k.js +1200 -0
  210. package/dist/src/openclaw-DA8U4DsD.js +1201 -0
  211. package/dist/src/openclaw-DObVgpjC.js +1200 -0
  212. package/dist/src/openclaw-DUBZP3GL.cjs +1206 -0
  213. package/dist/src/{opencode-sdk-CHCs7dEb.js → opencode-sdk-BB40Wir1.js} +6 -8
  214. package/dist/src/{opencode-sdk-DDxj4QqH.js → opencode-sdk-BM1UAIv1.js} +6 -8
  215. package/dist/src/{opencode-sdk-WWJhnbKr.cjs → opencode-sdk-CeqiOcOU.cjs} +7 -9
  216. package/dist/src/{opencode-sdk-C71Z0ehR.js → opencode-sdk-ChdK7F7z.js} +6 -9
  217. package/dist/src/{otlpReceiver-CZL48YfC.js → otlpReceiver-C6thJRXi.js} +154 -98
  218. package/dist/src/{otlpReceiver-C9KlUtxh.js → otlpReceiver-CcdIikOu.js} +154 -98
  219. package/dist/src/{otlpReceiver-DHKqJlsz.cjs → otlpReceiver-DNSQj6bf.cjs} +154 -98
  220. package/dist/src/{otlpReceiver-CavGAA6k.js → otlpReceiver-UYMQx3sy.js} +154 -98
  221. package/dist/src/{providerRegistry-BkzVH5Ba.js → providerRegistry-1gB5vtzQ.js} +2 -2
  222. package/dist/src/{providerRegistry-BTDgfV5h.cjs → providerRegistry-BESeALrr.cjs} +2 -2
  223. package/dist/src/{providerRegistry-CUWki5mQ.js → providerRegistry-DoACwqhD.js} +2 -2
  224. package/dist/src/{providerRegistry-B9lh-_tx.js → providerRegistry-PMsleEzs.js} +2 -2
  225. package/dist/src/providers-BuyzKt7C.js +2 -0
  226. package/dist/src/providers-C7lNVBjX.cjs +3 -0
  227. package/dist/src/providers-CCE2COJi2.js +2 -0
  228. package/dist/src/{providers-Cn73d5sr.js → providers-CJh7iriU.js} +17180 -16823
  229. package/dist/src/providers-Ctcc592x.js +3 -0
  230. package/dist/src/{providers-DvddrgxL.js → providers-DRrerKra.js} +1052 -695
  231. package/dist/src/{providers-Ch6Mr0gn.js → providers-DT-GtF2t.js} +16716 -16359
  232. package/dist/src/{providers-CScd1wN6.cjs → providers-eDShy16E.cjs} +19893 -19506
  233. package/dist/src/python/persistent_wrapper.py +0 -5
  234. package/dist/src/{pythonUtils-Cpo0Ez1p.js → pythonUtils-C4tltmIn.js} +4 -4
  235. package/dist/src/{pythonUtils-dAVigVK-.cjs → pythonUtils-CoLaCwNY.cjs} +4 -4
  236. package/dist/src/{pythonUtils-Bzwbgpbg.js → pythonUtils-DMO68Jg7.js} +3 -3
  237. package/dist/src/{pythonUtils-wIqk7zAf.js → pythonUtils-DNqbnRdx.js} +3 -3
  238. package/dist/src/{quiverai-BeofbLVc.js → quiverai-BSS9a7wV.js} +4 -4
  239. package/dist/src/{quiverai-DVSEqJiq.js → quiverai-Bk1KrvL6.js} +4 -4
  240. package/dist/src/{quiverai-CcUhPIBg.cjs → quiverai-Bpx6MZ7T.cjs} +4 -4
  241. package/dist/src/{quiverai-CCQn73lq.js → quiverai-CPKhWgaT.js} +4 -5
  242. package/dist/src/render-7uNJ2V14.js +135 -0
  243. package/dist/src/render-DlscvAUJ.js +135 -0
  244. package/dist/src/render-eui5p5mL.js +136 -0
  245. package/dist/src/{render-BHl6QVq9.js → render-nj-UaPdn.js} +2 -3
  246. package/dist/src/render-tG6ir9_g.cjs +165 -0
  247. package/dist/src/{responses-CgNyTPsY.js → responses-1ztiVYsx.js} +56 -17
  248. package/dist/src/{responses-BKP_WYis.js → responses-B8haB-mD.js} +56 -17
  249. package/dist/src/{responses-CQb1Tj69.js → responses-BiaBguAu.js} +56 -17
  250. package/dist/src/{responses-mo0KQDbu.cjs → responses-CF-ayauu.cjs} +56 -17
  251. package/dist/src/rubyUtils-4hjGxvju.js +3 -0
  252. package/dist/src/{rubyUtils-DECSbsfY.js → rubyUtils-BI0p46eZ.js} +3 -3
  253. package/dist/src/{rubyUtils-CiVfln3g.js → rubyUtils-CIQFnVz4.js} +3 -3
  254. package/dist/src/rubyUtils-CO-tuszQ.cjs +2 -0
  255. package/dist/src/{rubyUtils-PgU-gHmx.js → rubyUtils-DGnoCYL2.js} +4 -4
  256. package/dist/src/{rubyUtils-CGeUtCfW.cjs → rubyUtils-DoifqkiA.cjs} +5 -4
  257. package/dist/src/{sagemaker-CqeASYE5.js → sagemaker-BDLeW29y.js} +14 -18
  258. package/dist/src/{sagemaker-MUbD5V3v.js → sagemaker-C5T60MKf.js} +14 -19
  259. package/dist/src/{sagemaker-CVv8W7so.js → sagemaker-ClS_NB07.js} +14 -18
  260. package/dist/src/{sagemaker-jiw1wQa-.cjs → sagemaker-ljtY12VM.cjs} +14 -18
  261. package/dist/src/{scanner-DVDeUz1r.js → scanner-nOCWNIXa.js} +130 -35
  262. package/dist/src/server/golang/wrapper.go +1 -1
  263. package/dist/src/server/index.js +4829 -2529
  264. package/dist/src/server/python/persistent_wrapper.py +0 -5
  265. package/dist/src/{server-BtoCXeXI.cjs → server-BEECpeGG.cjs} +140 -6
  266. package/dist/src/{server-DZ9MtCn0.js → server-ByiF3qlg.js} +129 -9
  267. package/dist/src/{server-Cns05F1j.js → server-ByxbqAcQ.js} +128 -8
  268. package/dist/src/server-C0XKRNB_.cjs +2 -0
  269. package/dist/src/server-C_15p79-.js +3 -0
  270. package/dist/src/{server-CP9qKM40.js → server-gyd6d4Hc.js} +126 -7
  271. package/dist/src/{signal-C3ZTsUgi.js → signal-DTtUuU3l.js} +3 -3
  272. package/dist/src/{slack-DCEV-vWP.js → slack-4zZX1OKP.js} +2 -2
  273. package/dist/src/{slack-94iG3T0s.cjs → slack-BLlsDpfG.cjs} +2 -2
  274. package/dist/src/{slack-BR0HtO3K.js → slack-BPYLQLgb.js} +2 -2
  275. package/dist/src/{slack-2sdpGzbt.js → slack-Bamy_7te.js} +2 -2
  276. package/dist/src/{store-CLyU7AtI.cjs → store-2K0kDi80.cjs} +3 -3
  277. package/dist/src/{store-VB0GP46K.js → store-2OXm_eBY.js} +3 -3
  278. package/dist/src/store-BELqNwvz.js +3 -0
  279. package/dist/src/{store-Cj258DgL.js → store-BPkzEyFM.js} +3 -3
  280. package/dist/src/{store-P8OKm19S.js → store-CPh25336.js} +3 -3
  281. package/dist/src/store-uQZ4AjPe.cjs +2 -0
  282. package/dist/src/{tables-BEIFz2tM.js → tables-BMSOS2Gg.js} +3 -3
  283. package/dist/src/{tables-BdZQEpRz.cjs → tables-CXbaZ9y1.cjs} +3 -3
  284. package/dist/src/{tables-DmzvLbeZ.js → tables-NlvH23ky.js} +3 -3
  285. package/dist/src/{tables-kC7R5kiK.js → tables-WgdUZ8Ck.js} +3 -3
  286. package/dist/src/{telemetry-DPXLd7UE.js → telemetry--iqaGyaS.js} +5 -4
  287. package/dist/src/{telemetry-re627Lre.cjs → telemetry-CEQxGnMZ.cjs} +8 -7
  288. package/dist/src/{telemetry-BugWqKiu.js → telemetry-CgdVGV8N.js} +5 -4
  289. package/dist/src/{telemetry-BnH5VJAU.js → telemetry-DWdGHvEf.js} +5 -4
  290. package/dist/src/telemetry-DjNoC_n3.cjs +2 -0
  291. package/dist/src/telemetry-ZdPZc0fm.js +3 -0
  292. package/dist/src/{text-CW1cyrwj.cjs → text-BiNME7QG.cjs} +1 -1
  293. package/dist/src/{text-Db-Wt2u2.js → text-D4lz-Jg_.js} +1 -1
  294. package/dist/src/{text-TIv0QYnd.js → text-DDQP0tuQ.js} +1 -1
  295. package/dist/src/{text-B_UCRPp2.js → text-NWvfMfkF.js} +1 -1
  296. package/dist/src/{tokenUsageUtils-DflFMjS0.js → tokenUsageUtils-2wIvAhB3.js} +7 -3
  297. package/dist/src/{tokenUsageUtils-BDGe-iyI.js → tokenUsageUtils-4c780gFd.js} +7 -3
  298. package/dist/src/{tokenUsageUtils-NYT-WKS6.js → tokenUsageUtils-BjVkdk18.js} +7 -3
  299. package/dist/src/{tokenUsageUtils-bVa1ga6f.cjs → tokenUsageUtils-C9odhsbW.cjs} +7 -3
  300. package/dist/src/{transcription-CaMivnjG.js → transcription-84t4ALo2.js} +7 -11
  301. package/dist/src/{transcription-Hb3VnC4M.js → transcription-Bm2emLmJ.js} +8 -11
  302. package/dist/src/{transcription-BvtsrzRG.cjs → transcription-CZ4LG5hQ.cjs} +9 -13
  303. package/dist/src/{transcription-DOMMTu01.js → transcription-D7Q0vJsh.js} +7 -13
  304. package/dist/src/{transform-DrleutM3.js → transform-B-b6Cq-q.js} +8 -6
  305. package/dist/src/transform-BQt0BeAW.js +3 -0
  306. package/dist/src/transform-Bq5oqC0s.cjs +2 -0
  307. package/dist/src/{transform-ZrG2dvlo.cjs → transform-C9izGX54.cjs} +5 -5
  308. package/dist/src/{transform-BzK09Q_9.js → transform-CwbAZ84V.js} +5 -5
  309. package/dist/src/{transform-0BwoBsvO.cjs → transform-Dg4LcO1Y.cjs} +18 -10
  310. package/dist/src/{transform-B2-jIv68.js → transform-DtooZqYY.js} +8 -6
  311. package/dist/src/{transform-ljLYHEPh.js → transform-DzCF-wqV.js} +5 -5
  312. package/dist/src/{transform-DyDAwEpE.js → transform-_DpNB4qp.js} +9 -7
  313. package/dist/src/{transform-BqPkNPYm.js → transform-eGiUAv86.js} +5 -5
  314. package/dist/src/{transformersAvailability-DKoRtQLy.cjs → transformersAvailability-B22swDxr.cjs} +1 -1
  315. package/dist/src/{transformersAvailability-BGkzavwb.js → transformersAvailability-lvCCvuPT.js} +1 -1
  316. package/dist/src/{transformersAvailability-D6c6ROpT.js → transformersAvailability-rJGPccjr.js} +1 -1
  317. package/dist/src/{types-Cd3ygw8W.js → types-BDjGOq4E.js} +354 -24
  318. package/dist/src/{types-CIhFeUC4.js → types-BVH9hjgW.js} +364 -23
  319. package/dist/src/{types-D8cGDZbL.cjs → types-CgG2rKiW.cjs} +534 -167
  320. package/dist/src/{types-q8GXGF65.js → types-DNRZVOue.js} +498 -167
  321. package/dist/src/{util-BLvy9qfE.js → util-3pBZZb_H.js} +151 -149
  322. package/dist/src/{util-CFj4YKIn.cjs → util-A5_ZsQUn.cjs} +66 -44
  323. package/dist/src/{util-BtoGs5Cb.js → util-B9CNhyac.js} +66 -44
  324. package/dist/src/{util-Bm3E9jpK.js → util-BQOCAHQC.js} +692 -690
  325. package/dist/src/{util-vNmDL5DT.js → util-BVXcTwXu.js} +138 -36
  326. package/dist/src/{util-CgDCK4KI.js → util-BlFVL0UF.js} +66 -44
  327. package/dist/src/{util-DM2rTn_6.js → util-C-kmRosx.js} +66 -44
  328. package/dist/src/{util-DbVG-yZU.js → util-DFPeFkiV.js} +138 -36
  329. package/dist/src/{util-DMFeUvLz.js → util-DN0-b81k.js} +138 -36
  330. package/dist/src/{util--9u9UVCt.cjs → util-Dpmm_dAI.cjs} +143 -35
  331. package/dist/src/{util-CMMkIxfU.js → util-Dub0f_ej.js} +693 -691
  332. package/dist/src/{util-CuLo2pMR.cjs → util-DvpHnLt0.cjs} +714 -719
  333. package/dist/src/{utils-DOjD4dTC.js → utils-BUMN8orw.js} +6 -4
  334. package/dist/src/{utils-DKw8mrgr.cjs → utils-DkVeShIB.cjs} +6 -4
  335. package/dist/src/{utils-DEuL4VNB.js → utils-kt7lv30R.js} +6 -4
  336. package/dist/src/{utils-CFxO9KGo.js → utils-o8S5huU2.js} +6 -4
  337. package/dist/src/version-0frU0UTr.js +16 -0
  338. package/dist/src/version-CbpiUINz.js +17 -0
  339. package/dist/src/version-CbuBKu2U.js +16 -0
  340. package/dist/src/version-D9zu9FWB.cjs +27 -0
  341. package/dist/tsconfig.tsbuildinfo +1 -1
  342. package/package.json +57 -46
  343. package/dist/src/app/assets/index-B6l9CVVb.js +0 -439
  344. package/dist/src/app/assets/index-DyZ0Ep37.css +0 -1
  345. package/dist/src/app/assets/scroll-timeline-BdJZVXlz.js +0 -1
  346. package/dist/src/app/assets/sync-CStkzc6u.js +0 -4
  347. package/dist/src/app/assets/vendor-charts-BnDWwBlI.js +0 -36
  348. package/dist/src/app/assets/vendor-markdown-Bz7N-ca6.js +0 -29
  349. package/dist/src/app/assets/vendor-react-AtKqiNEf.js +0 -4
  350. package/dist/src/app/assets/vendor-syntax-D06x6TQF.js +0 -2
  351. package/dist/src/app/assets/vendor-utils-BvMHZmO7.js +0 -37
  352. package/dist/src/cache-C5yFZ4gC.cjs +0 -816
  353. package/dist/src/cache-CaT5tPgo.js +0 -756
  354. package/dist/src/cache-CyCanoMu.js +0 -6
  355. package/dist/src/cache-DSqR6ezl.js +0 -726
  356. package/dist/src/cache-Df_QFDNu.cjs +0 -5
  357. package/dist/src/cache-HP0NP4k3.js +0 -756
  358. package/dist/src/cloud-DE3t1-ZI.js +0 -4
  359. package/dist/src/codex-sdk-BQEw16R_.js +0 -834
  360. package/dist/src/codex-sdk-C_07GuVS.js +0 -834
  361. package/dist/src/codex-sdk-DE5G18dx.js +0 -835
  362. package/dist/src/codex-sdk-ZLKfDjqP.cjs +0 -838
  363. package/dist/src/eval-7aEqoMs3.js +0 -15
  364. package/dist/src/evalResult-CYNHkk5A.js +0 -12
  365. package/dist/src/evalResult-CuvJeNiM.js +0 -10
  366. package/dist/src/evalResult-tGdilrWt.cjs +0 -10
  367. package/dist/src/evaluator-BBUqRhz1.js +0 -36
  368. package/dist/src/fetch-UWU706qb.js +0 -5
  369. package/dist/src/graders-BxfEguVY.js +0 -32
  370. package/dist/src/graders-CzVMbEnv.js +0 -34
  371. package/dist/src/graders-DjCXfj0l.cjs +0 -32
  372. package/dist/src/graders-kHzIWOKu.js +0 -32
  373. package/dist/src/messages-DJNo37Ko.js +0 -246
  374. package/dist/src/messages-Dy9QecMs.js +0 -245
  375. package/dist/src/messages-HJsyEh4o.cjs +0 -257
  376. package/dist/src/messages-biC_ex-p.js +0 -245
  377. package/dist/src/openclaw-0Sv7AK3O.js +0 -580
  378. package/dist/src/openclaw-CXxbKgDH.cjs +0 -586
  379. package/dist/src/openclaw-D1FSCps-.js +0 -580
  380. package/dist/src/openclaw-D2ENvu7a.js +0 -582
  381. package/dist/src/providers-BSLEaIQG.js +0 -32
  382. package/dist/src/providers-D-FnDg8k.cjs +0 -31
  383. package/dist/src/providers-DEYiFVAo.js +0 -30
  384. package/dist/src/providers-sS2WI8YD.js +0 -30
  385. package/dist/src/rubyUtils-B1HXG4ej.cjs +0 -4
  386. package/dist/src/rubyUtils-Rt6pKA96.js +0 -5
  387. package/dist/src/server-B0Xh1Gx-.js +0 -7
  388. package/dist/src/server-DJTKu9IR.cjs +0 -5
  389. package/dist/src/store-C5u6MgC8.js +0 -6
  390. package/dist/src/store-CNHk-De4.cjs +0 -5
  391. package/dist/src/telemetry-Yig0Tino.js +0 -7
  392. package/dist/src/telemetry-p8Pwqm1i.cjs +0 -5
  393. package/dist/src/transform-ChNIpHz7.js +0 -6
  394. package/dist/src/transform-PtQ6rAE3.cjs +0 -5
@@ -1,9 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { s as logger } from "./logger-BcJBzSSA.js";
3
- import "./types-CIhFeUC4.js";
4
- import { t as getDirectory } from "./esm-7UIl0pPM.js";
5
- import "./tables-DmzvLbeZ.js";
6
- import { n as getTraceStore } from "./store-P8OKm19S.js";
2
+ import { s as logger } from "./logger-BbY6ypFL.js";
3
+ import { t as getDirectory } from "./esm-BX8fwlAO.js";
4
+ import { n as getTraceStore } from "./store-CPh25336.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-CavGAA6k.js.map
466
+ //# sourceMappingURL=otlpReceiver-UYMQx3sy.js.map
@@ -1,4 +1,4 @@
1
- import { a as logger } from "./logger-BnkjG2jt.js";
1
+ import { a as logger } from "./logger-KD8JjCRJ.js";
2
2
  //#region src/providers/providerRegistry.ts
3
3
  /**
4
4
  * Global registry of Python providers for cleanup on process exit.
@@ -42,4 +42,4 @@ const providerRegistry = new ProviderRegistry();
42
42
  //#endregion
43
43
  export { providerRegistry as t };
44
44
 
45
- //# sourceMappingURL=providerRegistry-BkzVH5Ba.js.map
45
+ //# sourceMappingURL=providerRegistry-1gB5vtzQ.js.map
@@ -1,4 +1,4 @@
1
- const require_logger = require("./logger-D5iKBpu_.cjs");
1
+ const require_logger = require("./logger-COuQb2xB.cjs");
2
2
  //#region src/providers/providerRegistry.ts
3
3
  /**
4
4
  * Global registry of Python providers for cleanup on process exit.
@@ -47,4 +47,4 @@ Object.defineProperty(exports, "providerRegistry", {
47
47
  }
48
48
  });
49
49
 
50
- //# sourceMappingURL=providerRegistry-BTDgfV5h.cjs.map
50
+ //# sourceMappingURL=providerRegistry-BESeALrr.cjs.map
@@ -1,4 +1,4 @@
1
- import { a as logger } from "./logger-DO8_zM18.js";
1
+ import { a as logger } from "./logger-Ct2S6Yx-.js";
2
2
  //#region src/providers/providerRegistry.ts
3
3
  /**
4
4
  * Global registry of Python providers for cleanup on process exit.
@@ -42,4 +42,4 @@ const providerRegistry = new ProviderRegistry();
42
42
  //#endregion
43
43
  export { providerRegistry as t };
44
44
 
45
- //# sourceMappingURL=providerRegistry-CUWki5mQ.js.map
45
+ //# sourceMappingURL=providerRegistry-DoACwqhD.js.map
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { s as logger } from "./logger-BcJBzSSA.js";
2
+ import { s as logger } from "./logger-BbY6ypFL.js";
3
3
  //#region src/providers/providerRegistry.ts
4
4
  /**
5
5
  * Global registry of Python providers for cleanup on process exit.
@@ -43,4 +43,4 @@ const providerRegistry = new ProviderRegistry();
43
43
  //#endregion
44
44
  export { providerRegistry as t };
45
45
 
46
- //# sourceMappingURL=providerRegistry-B9lh-_tx.js.map
46
+ //# sourceMappingURL=providerRegistry-PMsleEzs.js.map
@@ -0,0 +1,2 @@
1
+ import { n as loadApiProvider, r as loadApiProviders } from "./providers-DRrerKra.js";
2
+ export { loadApiProvider, loadApiProviders };
@@ -0,0 +1,3 @@
1
+ const require_providers = require("./providers-eDShy16E.cjs");
2
+ exports.loadApiProvider = require_providers.loadApiProvider;
3
+ exports.loadApiProviders = require_providers.loadApiProviders;
@@ -0,0 +1,2 @@
1
+ import { n as loadApiProvider, r as loadApiProviders } from "./providers-CJh7iriU.js";
2
+ export { loadApiProvider, loadApiProviders };