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,8 +1,6 @@
1
- import { C as getEnvString, D as state, a as logger, t as getLogLevel } from "./logger-BnkjG2jt.js";
2
- import "./fetch-BiYv2BZc.js";
3
- import { r as importModule } from "./esm-CKWP3u_P.js";
4
- import "./cache-HP0NP4k3.js";
5
- import { i as initializeAgenticCache, n as generateCacheKey, r as getCachedResponse, t as cacheResponse } from "./agentic-utils-DIYAAYE7.js";
1
+ import { T as getEnvString, a as logger, k as state, t as getLogLevel } from "./logger-KD8JjCRJ.js";
2
+ import { r as importModule } from "./esm-B6whoAcf.js";
3
+ import { i as initializeAgenticCache, n as generateCacheKey, r as getCachedResponse, t as cacheResponse } from "./agentic-utils-BclbiXiq.js";
6
4
  import { createRequire } from "node:module";
7
5
  import fs from "fs";
8
6
  import path from "path";
@@ -49,8 +47,8 @@ function resolveEsmPackage(packageName, exportPath, basePath) {
49
47
  return path.join(packageDir, esmEntry);
50
48
  }
51
49
  function unwrapOpenCodeResult(result) {
52
- if (!result) return;
53
- if (typeof result === "object" && result !== null && "data" in result) return result.data;
50
+ if (result === void 0 || result === null) return;
51
+ if (typeof result === "object" && "data" in result) return result.data;
54
52
  return result;
55
53
  }
56
54
  function getSessionPath(sessionId) {
@@ -557,4 +555,4 @@ var OpenCodeSDKProvider = class {
557
555
  //#endregion
558
556
  export { OpenCodeSDKProvider };
559
557
 
560
- //# sourceMappingURL=opencode-sdk-CHCs7dEb.js.map
558
+ //# sourceMappingURL=opencode-sdk-BB40Wir1.js.map
@@ -1,8 +1,6 @@
1
- import { C as getEnvString, D as state, a as logger, t as getLogLevel } from "./logger-DO8_zM18.js";
2
- import { r as importModule } from "./esm-SUNIX1x3.js";
3
- import "./fetch-CVAtKnI3.js";
4
- import "./cache-CaT5tPgo.js";
5
- import { i as initializeAgenticCache, n as generateCacheKey, r as getCachedResponse, t as cacheResponse } from "./agentic-utils-D8yXo5Lm.js";
1
+ import { T as getEnvString, a as logger, k as state, t as getLogLevel } from "./logger-Ct2S6Yx-.js";
2
+ import { r as importModule } from "./esm-BRkfNsYs.js";
3
+ import { i as initializeAgenticCache, n as generateCacheKey, r as getCachedResponse, t as cacheResponse } from "./agentic-utils-Ba67xmgs.js";
6
4
  import { createRequire } from "node:module";
7
5
  import fs from "fs";
8
6
  import path from "path";
@@ -49,8 +47,8 @@ function resolveEsmPackage(packageName, exportPath, basePath) {
49
47
  return path.join(packageDir, esmEntry);
50
48
  }
51
49
  function unwrapOpenCodeResult(result) {
52
- if (!result) return;
53
- if (typeof result === "object" && result !== null && "data" in result) return result.data;
50
+ if (result === void 0 || result === null) return;
51
+ if (typeof result === "object" && "data" in result) return result.data;
54
52
  return result;
55
53
  }
56
54
  function getSessionPath(sessionId) {
@@ -557,4 +555,4 @@ var OpenCodeSDKProvider = class {
557
555
  //#endregion
558
556
  export { OpenCodeSDKProvider };
559
557
 
560
- //# sourceMappingURL=opencode-sdk-DDxj4QqH.js.map
558
+ //# sourceMappingURL=opencode-sdk-BM1UAIv1.js.map
@@ -1,17 +1,15 @@
1
- const require_logger = require("./logger-D5iKBpu_.cjs");
2
- const require_esm = require("./esm-CipptfDu.cjs");
3
- require("./fetch-BnR9wSnm.cjs");
4
- require("./cache-C5yFZ4gC.cjs");
5
- const require_agentic_utils = require("./agentic-utils-DAVsChuB.cjs");
1
+ const require_logger = require("./logger-COuQb2xB.cjs");
2
+ const require_esm = require("./esm-B_rGuPTo.cjs");
3
+ const require_agentic_utils = require("./agentic-utils-D2x0wGhB.cjs");
6
4
  let fs = require("fs");
7
5
  fs = require_logger.__toESM(fs);
8
6
  let path = require("path");
9
7
  path = require_logger.__toESM(path);
10
- let node_module = require("node:module");
11
8
  let os = require("os");
12
9
  os = require_logger.__toESM(os);
13
10
  let dedent = require("dedent");
14
11
  dedent = require_logger.__toESM(dedent);
12
+ let node_module = require("node:module");
15
13
  //#region src/providers/opencode-sdk.ts
16
14
  /**
17
15
  * Check if promptfoo is in debug mode
@@ -53,8 +51,8 @@ function resolveEsmPackage(packageName, exportPath, basePath) {
53
51
  return path.default.join(packageDir, esmEntry);
54
52
  }
55
53
  function unwrapOpenCodeResult(result) {
56
- if (!result) return;
57
- if (typeof result === "object" && result !== null && "data" in result) return result.data;
54
+ if (result === void 0 || result === null) return;
55
+ if (typeof result === "object" && "data" in result) return result.data;
58
56
  return result;
59
57
  }
60
58
  function getSessionPath(sessionId) {
@@ -561,4 +559,4 @@ var OpenCodeSDKProvider = class {
561
559
  //#endregion
562
560
  exports.OpenCodeSDKProvider = OpenCodeSDKProvider;
563
561
 
564
- //# sourceMappingURL=opencode-sdk-WWJhnbKr.cjs.map
562
+ //# sourceMappingURL=opencode-sdk-CeqiOcOU.cjs.map
@@ -1,10 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { E as getEnvString, j as state, n as getLogLevel, s as logger } from "./logger-BcJBzSSA.js";
3
- import "./fetch-DoVRJZhJ.js";
4
- import "./cloud-z8KZpUoa.js";
5
- import "./cache-DSqR6ezl.js";
6
- import { r as importModule } from "./esm-7UIl0pPM.js";
7
- import { i as initializeAgenticCache, n as generateCacheKey, r as getCachedResponse, t as cacheResponse } from "./agentic-utils-36epdqwB.js";
2
+ import { N as state, O as getEnvString, n as getLogLevel, s as logger } from "./logger-BbY6ypFL.js";
3
+ import { r as importModule } from "./esm-BX8fwlAO.js";
4
+ import { i as initializeAgenticCache, n as generateCacheKey, r as getCachedResponse, t as cacheResponse } from "./agentic-utils-B5krlibj.js";
8
5
  import { createRequire } from "node:module";
9
6
  import fs from "fs";
10
7
  import path from "path";
@@ -51,8 +48,8 @@ function resolveEsmPackage(packageName, exportPath, basePath) {
51
48
  return path.join(packageDir, esmEntry);
52
49
  }
53
50
  function unwrapOpenCodeResult(result) {
54
- if (!result) return;
55
- if (typeof result === "object" && result !== null && "data" in result) return result.data;
51
+ if (result === void 0 || result === null) return;
52
+ if (typeof result === "object" && "data" in result) return result.data;
56
53
  return result;
57
54
  }
58
55
  function getSessionPath(sessionId) {
@@ -559,4 +556,4 @@ var OpenCodeSDKProvider = class {
559
556
  //#endregion
560
557
  export { OpenCodeSDKProvider };
561
558
 
562
- //# sourceMappingURL=opencode-sdk-C71Z0ehR.js.map
559
+ //# sourceMappingURL=opencode-sdk-ChdK7F7z.js.map
@@ -1,8 +1,6 @@
1
- import { a as logger } from "./logger-DO8_zM18.js";
2
- import { t as getDirectory } from "./esm-SUNIX1x3.js";
3
- import "./types-q8GXGF65.js";
4
- import "./tables-kC7R5kiK.js";
5
- import { t as getTraceStore } from "./store-Cj258DgL.js";
1
+ import { a as logger } from "./logger-KD8JjCRJ.js";
2
+ import { t as getDirectory } from "./esm-B6whoAcf.js";
3
+ import { t as getTraceStore } from "./store-2OXm_eBY.js";
6
4
  import path from "path";
7
5
  import express from "express";
8
6
  import protobuf from "protobufjs";
@@ -92,28 +90,57 @@ const SPAN_KIND_MAP = {
92
90
  4: "producer",
93
91
  5: "consumer"
94
92
  };
93
+ const DEFAULT_ACCEPT_FORMATS = ["json", "protobuf"];
94
+ const OTLP_CONTENT_TYPES = {
95
+ json: "application/json",
96
+ protobuf: "application/x-protobuf"
97
+ };
98
+ function normalizeAcceptFormats(acceptFormats) {
99
+ const normalized = [...new Set(acceptFormats ?? DEFAULT_ACCEPT_FORMATS)];
100
+ return normalized.length > 0 ? normalized : [...DEFAULT_ACCEPT_FORMATS];
101
+ }
102
+ function getRequestFormat(contentType) {
103
+ const mimeType = (Array.isArray(contentType) ? contentType[0] : contentType)?.split(";", 1)[0]?.trim().toLowerCase();
104
+ if (mimeType === OTLP_CONTENT_TYPES.json) return "json";
105
+ if (mimeType === OTLP_CONTENT_TYPES.protobuf) return "protobuf";
106
+ return null;
107
+ }
95
108
  var OTLPReceiver = class {
96
109
  app;
110
+ acceptFormats;
97
111
  traceStore;
98
112
  port;
99
113
  server;
100
- constructor() {
114
+ constructor(options = {}) {
101
115
  this.app = express();
116
+ this.acceptFormats = normalizeAcceptFormats(options.acceptFormats);
102
117
  this.traceStore = getTraceStore();
103
118
  logger.debug("[OtlpReceiver] Initializing OTLP receiver");
104
119
  this.setupMiddleware();
105
120
  this.setupRoutes();
106
121
  }
107
122
  setupMiddleware() {
108
- this.app.use(express.json({
123
+ this.app.use("/v1/traces", (req, res, next) => {
124
+ if (req.method !== "POST") {
125
+ next();
126
+ return;
127
+ }
128
+ const format = getRequestFormat(req.headers["content-type"]);
129
+ if (!format || !this.acceptFormats.includes(format)) {
130
+ res.status(415).json({ error: "Unsupported content type" });
131
+ return;
132
+ }
133
+ next();
134
+ });
135
+ this.app.use("/v1/traces", express.json({
109
136
  limit: "10mb",
110
- type: "application/json"
137
+ type: (req) => this.acceptFormats.includes("json") && getRequestFormat(req.headers["content-type"]) === "json"
111
138
  }));
112
- this.app.use(express.raw({
113
- type: "application/x-protobuf",
114
- limit: "10mb"
139
+ this.app.use("/v1/traces", express.raw({
140
+ limit: "10mb",
141
+ type: (req) => this.acceptFormats.includes("protobuf") && getRequestFormat(req.headers["content-type"]) === "protobuf"
115
142
  }));
116
- logger.debug("[OtlpReceiver] Middleware configured for JSON and protobuf");
143
+ logger.debug("[OtlpReceiver] Middleware configured for accepted OTLP formats");
117
144
  }
118
145
  setupRoutes() {
119
146
  this.app.post("/v1/traces", async (req, res) => {
@@ -121,64 +148,19 @@ var OTLPReceiver = class {
121
148
  const bodySize = req.body ? JSON.stringify(req.body).length : 0;
122
149
  logger.debug(`[OtlpReceiver] Received trace request: ${req.headers["content-type"]} with ${bodySize} bytes`);
123
150
  logger.debug("[OtlpReceiver] Starting to process traces");
124
- const isJson = contentType === "application/json";
125
- const isProtobuf = contentType === "application/x-protobuf";
126
- if (!isJson && !isProtobuf) {
151
+ const format = getRequestFormat(contentType);
152
+ if (!format || !this.acceptFormats.includes(format)) {
127
153
  res.status(415).json({ error: "Unsupported content type" });
128
154
  return;
129
155
  }
130
156
  try {
131
- let traces = [];
132
- if (isJson) {
133
- logger.debug("[OtlpReceiver] Parsing OTLP JSON request");
134
- logger.debug(`[OtlpReceiver] Request body: ${JSON.stringify(req.body).substring(0, 500)}...`);
135
- traces = this.parseOTLPJSONRequest(req.body);
136
- } else if (isProtobuf) {
137
- logger.debug("[OtlpReceiver] Parsing OTLP protobuf request");
138
- logger.debug(`[OtlpReceiver] Request body size: ${req.body?.length || 0} bytes`);
139
- traces = await this.parseOTLPProtobufRequest(req.body);
140
- }
157
+ const traces = await this.parseIncomingRequest(format, req.body);
141
158
  logger.debug(`[OtlpReceiver] Parsed ${traces.length} traces from request`);
142
- const spansByTrace = /* @__PURE__ */ new Map();
143
- const traceInfoById = /* @__PURE__ */ new Map();
144
- for (const trace of traces) {
145
- if (!spansByTrace.has(trace.traceId)) {
146
- spansByTrace.set(trace.traceId, []);
147
- const evaluationId = trace.span.attributes?.["evaluation.id"];
148
- const testCaseId = trace.span.attributes?.["test.case.id"];
149
- const info = traceInfoById.get(trace.traceId) ?? {};
150
- if (evaluationId) info.evaluationId = evaluationId;
151
- if (testCaseId) info.testCaseId = testCaseId;
152
- traceInfoById.set(trace.traceId, info);
153
- }
154
- spansByTrace.get(trace.traceId).push(trace.span);
155
- }
156
- logger.debug(`[OtlpReceiver] Grouped spans into ${spansByTrace.size} traces`);
157
- for (const [traceId, info] of traceInfoById) try {
158
- logger.debug(`[OtlpReceiver] Creating trace record for ${traceId}`);
159
- await this.traceStore.createTrace({
160
- traceId,
161
- evaluationId: info.evaluationId || "",
162
- testCaseId: info.testCaseId || ""
163
- });
164
- } catch (error) {
165
- logger.debug(`[OtlpReceiver] Trace ${traceId} may already exist: ${error}`);
166
- }
167
- for (const [traceId, spans] of spansByTrace) {
168
- logger.debug(`[OtlpReceiver] Storing ${spans.length} spans for trace ${traceId}`);
169
- await this.traceStore.addSpans(traceId, spans, { skipTraceCheck: true });
170
- }
159
+ await this.persistTraces(this.groupTraces(traces));
171
160
  res.status(200).json({ partialSuccess: {} });
172
161
  logger.debug("[OtlpReceiver] Successfully processed traces");
173
162
  } catch (error) {
174
- logger.error(`[OtlpReceiver] Failed to process OTLP traces: ${error}`);
175
- logger.error(`[OtlpReceiver] Error stack: ${error instanceof Error ? error.stack : "No stack"}`);
176
- const errorMessage = error instanceof Error ? error.message : String(error);
177
- if (errorMessage.toLowerCase().includes("invalid protobuf")) {
178
- res.status(400).json({ error: errorMessage });
179
- return;
180
- }
181
- res.status(500).json({ error: "Internal server error" });
163
+ this.handleProcessingError(error, res);
182
164
  }
183
165
  });
184
166
  this.app.get("/health", (_req, res) => {
@@ -189,7 +171,7 @@ var OTLPReceiver = class {
189
171
  res.status(200).json({
190
172
  service: "promptfoo-otlp-receiver",
191
173
  version: "1.0.0",
192
- supported_formats: ["json", "protobuf"]
174
+ supported_formats: this.acceptFormats
193
175
  });
194
176
  });
195
177
  this.app.get("/debug/status", async (_req, res) => {
@@ -210,6 +192,71 @@ var OTLPReceiver = class {
210
192
  res.status(500).json({ error: "Internal server error" });
211
193
  });
212
194
  }
195
+ async parseIncomingRequest(format, body) {
196
+ if (format === "json") {
197
+ logger.debug("[OtlpReceiver] Parsing OTLP JSON request");
198
+ logger.debug(`[OtlpReceiver] Request body: ${JSON.stringify(body).substring(0, 500)}...`);
199
+ return this.parseOTLPJSONRequest(body);
200
+ }
201
+ logger.debug("[OtlpReceiver] Parsing OTLP protobuf request");
202
+ logger.debug(`[OtlpReceiver] Request body size: ${body?.length || 0} bytes`);
203
+ return this.parseOTLPProtobufRequest(body);
204
+ }
205
+ groupTraces(traces) {
206
+ const spansByTrace = /* @__PURE__ */ new Map();
207
+ const traceInfoById = /* @__PURE__ */ new Map();
208
+ for (const trace of traces) {
209
+ const spans = spansByTrace.get(trace.traceId) ?? [];
210
+ spans.push(trace.span);
211
+ spansByTrace.set(trace.traceId, spans);
212
+ this.recordTraceInfo(traceInfoById, trace);
213
+ }
214
+ logger.debug(`[OtlpReceiver] Grouped spans into ${spansByTrace.size} traces`);
215
+ return {
216
+ spansByTrace,
217
+ traceInfoById
218
+ };
219
+ }
220
+ recordTraceInfo(traceInfoById, trace) {
221
+ const evaluationId = trace.span.attributes?.["evaluation.id"];
222
+ const testCaseId = trace.span.attributes?.["test.case.id"];
223
+ const info = traceInfoById.get(trace.traceId) ?? {};
224
+ if (evaluationId) info.evaluationId = evaluationId;
225
+ if (testCaseId) info.testCaseId = testCaseId;
226
+ traceInfoById.set(trace.traceId, info);
227
+ }
228
+ async persistTraces({ spansByTrace, traceInfoById }) {
229
+ await this.createTraceRecords(traceInfoById);
230
+ await this.storeSpans(spansByTrace);
231
+ }
232
+ async createTraceRecords(traceInfoById) {
233
+ for (const [traceId, info] of traceInfoById) try {
234
+ logger.debug(`[OtlpReceiver] Creating trace record for ${traceId}`);
235
+ await this.traceStore.createTrace({
236
+ traceId,
237
+ evaluationId: info.evaluationId || "",
238
+ testCaseId: info.testCaseId || ""
239
+ });
240
+ } catch (error) {
241
+ logger.debug(`[OtlpReceiver] Trace ${traceId} may already exist: ${error}`);
242
+ }
243
+ }
244
+ async storeSpans(spansByTrace) {
245
+ for (const [traceId, spans] of spansByTrace) {
246
+ logger.debug(`[OtlpReceiver] Storing ${spans.length} spans for trace ${traceId}`);
247
+ await this.traceStore.addSpans(traceId, spans, { skipTraceCheck: true });
248
+ }
249
+ }
250
+ handleProcessingError(error, res) {
251
+ logger.error(`[OtlpReceiver] Failed to process OTLP traces: ${error}`);
252
+ logger.error(`[OtlpReceiver] Error stack: ${error instanceof Error ? error.stack : "No stack"}`);
253
+ const errorMessage = error instanceof Error ? error.message : String(error);
254
+ if (errorMessage.toLowerCase().includes("invalid protobuf")) {
255
+ res.status(400).json({ error: errorMessage });
256
+ return;
257
+ }
258
+ res.status(500).json({ error: "Internal server error" });
259
+ }
213
260
  parseOTLPJSONRequest(body) {
214
261
  const traces = [];
215
262
  logger.debug(`[OtlpReceiver] Parsing request with ${body.resourceSpans?.length || 0} resource spans`);
@@ -248,44 +295,42 @@ var OTLPReceiver = class {
248
295
  return traces;
249
296
  }
250
297
  async parseOTLPProtobufRequest(body) {
251
- const traces = [];
252
298
  const decoded = await decodeExportTraceServiceRequest(body);
253
299
  logger.debug(`[OtlpReceiver] Parsing protobuf request with ${decoded.resourceSpans?.length || 0} resource spans`);
254
- for (const resourceSpan of decoded.resourceSpans || []) {
255
- const resourceAttributes = this.parseDecodedAttributes(resourceSpan.resource?.attributes);
256
- logger.debug(`[OtlpReceiver] Parsed ${Object.keys(resourceAttributes).length} resource attributes from protobuf`);
257
- for (const scopeSpan of resourceSpan.scopeSpans || []) for (const span of scopeSpan.spans || []) {
258
- const traceId = bytesToHex(span.traceId, 32);
259
- const spanId = bytesToHex(span.spanId, 16);
260
- const parentSpanId = span.parentSpanId?.length ? bytesToHex(span.parentSpanId, 16) : void 0;
261
- logger.debug(`[OtlpReceiver] Processing protobuf span: ${span.name} (${spanId}) in trace ${traceId}`);
262
- const spanKindName = SPAN_KIND_MAP[span.kind ?? 0] ?? "unspecified";
263
- const attributes = {
300
+ return (decoded.resourceSpans || []).flatMap((resourceSpan) => this.parseDecodedResourceSpan(resourceSpan));
301
+ }
302
+ parseDecodedResourceSpan(resourceSpan) {
303
+ const resourceAttributes = this.parseDecodedAttributes(resourceSpan.resource?.attributes);
304
+ logger.debug(`[OtlpReceiver] Parsed ${Object.keys(resourceAttributes).length} resource attributes from protobuf`);
305
+ return (resourceSpan.scopeSpans || []).flatMap((scopeSpan) => (scopeSpan.spans || []).map((span) => this.createDecodedParsedTrace(resourceAttributes, scopeSpan, span)));
306
+ }
307
+ createDecodedParsedTrace(resourceAttributes, scopeSpan, span) {
308
+ const traceId = bytesToHex(span.traceId, 32);
309
+ const spanId = bytesToHex(span.spanId, 16);
310
+ const parentSpanId = span.parentSpanId?.length ? bytesToHex(span.parentSpanId, 16) : void 0;
311
+ logger.debug(`[OtlpReceiver] Processing protobuf span: ${span.name} (${spanId}) in trace ${traceId}`);
312
+ const spanKindCode = span.kind ?? 0;
313
+ const spanKindName = SPAN_KIND_MAP[spanKindCode] ?? "unspecified";
314
+ return {
315
+ traceId,
316
+ span: {
317
+ spanId,
318
+ parentSpanId,
319
+ name: span.name,
320
+ startTime: this.toMilliseconds(span.startTimeUnixNano) ?? 0,
321
+ endTime: this.toMilliseconds(span.endTimeUnixNano),
322
+ attributes: {
264
323
  ...resourceAttributes,
265
324
  ...this.parseDecodedAttributes(span.attributes),
266
325
  "otel.scope.name": scopeSpan.scope?.name,
267
326
  "otel.scope.version": scopeSpan.scope?.version,
268
327
  "otel.span.kind": spanKindName,
269
- "otel.span.kind_code": span.kind ?? 0
270
- };
271
- const startTimeNano = typeof span.startTimeUnixNano === "number" ? span.startTimeUnixNano : Number(span.startTimeUnixNano);
272
- const endTimeNano = span.endTimeUnixNano ? typeof span.endTimeUnixNano === "number" ? span.endTimeUnixNano : Number(span.endTimeUnixNano) : void 0;
273
- traces.push({
274
- traceId,
275
- span: {
276
- spanId,
277
- parentSpanId,
278
- name: span.name,
279
- startTime: startTimeNano / 1e6,
280
- endTime: endTimeNano ? endTimeNano / 1e6 : void 0,
281
- attributes,
282
- statusCode: span.status?.code,
283
- statusMessage: span.status?.message
284
- }
285
- });
328
+ "otel.span.kind_code": spanKindCode
329
+ },
330
+ statusCode: span.status?.code,
331
+ statusMessage: span.status?.message
286
332
  }
287
- }
288
- return traces;
333
+ };
289
334
  }
290
335
  parseDecodedAttributes(attributes) {
291
336
  if (!attributes) return {};
@@ -386,15 +431,26 @@ var OTLPReceiver = class {
386
431
  getApp() {
387
432
  return this.app;
388
433
  }
434
+ setAcceptFormats(acceptFormats) {
435
+ this.acceptFormats = normalizeAcceptFormats(acceptFormats);
436
+ }
437
+ toMilliseconds(value) {
438
+ if (value === void 0) return;
439
+ return Number(value) / 1e6;
440
+ }
389
441
  };
390
442
  let otlpReceiver = null;
391
- function getOTLPReceiver() {
392
- if (!otlpReceiver) otlpReceiver = new OTLPReceiver();
443
+ function getOTLPReceiver(options) {
444
+ if (otlpReceiver) {
445
+ otlpReceiver.setAcceptFormats(options?.acceptFormats);
446
+ return otlpReceiver;
447
+ }
448
+ otlpReceiver = new OTLPReceiver(options);
393
449
  return otlpReceiver;
394
450
  }
395
- async function startOTLPReceiver(port, host) {
451
+ async function startOTLPReceiver(port, host, acceptFormats) {
396
452
  logger.debug("[OtlpReceiver] Starting receiver through startOTLPReceiver function");
397
- await getOTLPReceiver().listen(port, host);
453
+ await getOTLPReceiver({ acceptFormats }).listen(port, host);
398
454
  }
399
455
  async function stopOTLPReceiver() {
400
456
  logger.debug("[OtlpReceiver] Stopping receiver through stopOTLPReceiver function");
@@ -406,4 +462,4 @@ async function stopOTLPReceiver() {
406
462
  //#endregion
407
463
  export { startOTLPReceiver, stopOTLPReceiver };
408
464
 
409
- //# sourceMappingURL=otlpReceiver-CZL48YfC.js.map
465
+ //# sourceMappingURL=otlpReceiver-C6thJRXi.js.map