promptfoo 0.121.2 → 0.121.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/README.md +2 -0
  2. package/dist/src/{ListApp-Du7YVwj5.js → ListApp-DQkFNqE9.js} +1 -1
  3. package/dist/src/{accounts-B0pgC1oV.js → accounts-DdJ2pHMI.js} +5 -5
  4. package/dist/src/{accounts-CiBLOnA7.js → accounts-DhMYUUbu.js} +5 -5
  5. package/dist/src/{accounts-gtkH-5KX.cjs → accounts-Dy17bs4D.cjs} +5 -5
  6. package/dist/src/{accounts-Bm2D8Db9.js → accounts-F9d_5sMC.js} +6 -6
  7. package/dist/src/{cometapi-C4xSqeID.cjs → agentic-utils-BpX5b23w.cjs} +24 -62
  8. package/dist/src/{cometapi-CUQq3H_a.js → agentic-utils-P172hM8B.js} +4 -61
  9. package/dist/src/agentic-utils-qFlm6zes.js +153 -0
  10. package/dist/src/{agentic-utils-DS1g3GLF.js → agentic-utils-w68v6_Dz.js} +3 -3
  11. package/dist/src/{agents-CmvBq8LV.js → agents-8FDnTriG.js} +6 -7
  12. package/dist/src/{agents-DbRtpYxR.cjs → agents-BahDpe5G.cjs} +255 -20
  13. package/dist/src/{agents-DgF2zDag.js → agents-C-R_jfzI.js} +255 -20
  14. package/dist/src/{agents-9qiOy0ho.js → agents-CgaMXvLM.js} +5 -7
  15. package/dist/src/{agents-Di9DKPzn.cjs → agents-D7-HGxUj.cjs} +5 -7
  16. package/dist/src/{agents-CBr9A01V.js → agents-DJ35I3Nt.js} +255 -20
  17. package/dist/src/{agents-cLXA8a_8.js → agents-aYPQLf8W.js} +5 -9
  18. package/dist/src/{agents-D__IdAlg.js → agents-pQeBEXMm.js} +255 -21
  19. package/dist/src/{aimlapi-B4rcnZgv.js → aimlapi-BCq3MHeL.js} +8 -14
  20. package/dist/src/{aimlapi-DHJU_kcV.js → aimlapi-BD6J9oKt.js} +7 -14
  21. package/dist/src/{aimlapi-BvlNH0gr.cjs → aimlapi-qcK4OT55.cjs} +8 -15
  22. package/dist/src/{aimlapi-CnkC2HqE.js → aimlapi-sgYnkE54.js} +7 -16
  23. package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -0
  24. package/dist/src/app/assets/Report-CQYFezYu.js +1 -0
  25. package/dist/src/app/assets/index-BXGkeMwh.css +1 -0
  26. package/dist/src/app/assets/index-BzJt18Jz.js +385 -0
  27. package/dist/src/app/assets/rolldown-runtime-COnpUsM8.js +1 -0
  28. package/dist/src/app/assets/scroll-timeline-D9IT_e8Z.js +1 -0
  29. package/dist/src/app/assets/sync-IjzpWrOE.js +4 -0
  30. package/dist/src/app/assets/vendor-charts-BNdH8TCw.js +36 -0
  31. package/dist/src/app/assets/vendor-markdown-Ch00wnNI.js +29 -0
  32. package/dist/src/app/assets/vendor-react-CVvmk1UB.js +9 -0
  33. package/dist/src/app/assets/vendor-utils-BnEYbx2Q.js +37 -0
  34. package/dist/src/app/index.html +7 -7
  35. package/dist/src/{audio-Dz3z7s3J.js → audio-B7izf48x.js} +4 -5
  36. package/dist/src/{audio-CGMyULza.cjs → audio-BQtNuYBj.cjs} +4 -4
  37. package/dist/src/{audio-Bkv46et0.js → audio-COrn8rM6.js} +4 -4
  38. package/dist/src/{audio-ClI_AFre.js → audio-DcVKoInv.js} +4 -4
  39. package/dist/src/{base-CGrhspbK.cjs → base-D-670DX8.cjs} +3 -3
  40. package/dist/src/{base-CpjcHe4e.js → base-PYJvBE1i.js} +3 -3
  41. package/dist/src/{base-Dy1V8--Z.js → base-fZ9wgg50.js} +3 -3
  42. package/dist/src/{base-DLKtKMFh.js → base-yrI1Yal4.js} +3 -3
  43. package/dist/src/{blobs-BDbfYdrJ.js → blobs-BCZavS8s.js} +4 -4
  44. package/dist/src/{blobs-CMHN0Qcz.js → blobs-BQWqnnvL.js} +4 -4
  45. package/dist/src/{blobs-CBO20krR.js → blobs-C-F78Kfn.js} +3 -3
  46. package/dist/src/{blobs-D23XLin-.cjs → blobs-D2FAd1Q5.cjs} +3 -3
  47. package/dist/src/cache-BIyPcp5v.cjs +376 -0
  48. package/dist/src/cache-C4Xb-hNb.js +310 -0
  49. package/dist/src/cache-Cr9oLMUa.js +3 -0
  50. package/dist/src/cache-D5NZmMiT.js +310 -0
  51. package/dist/src/cache-DbLsVWB2.cjs +3 -0
  52. package/dist/src/cache-mb7c8hbp.js +280 -0
  53. package/dist/src/{chat-C2jrdPMx.js → chat-0bwXjVP0.js} +3 -13
  54. package/dist/src/{chat-C1Qst7jL.cjs → chat-BPXSW8Bv.cjs} +3 -13
  55. package/dist/src/{chat-DJIw17u0.js → chat-BfPaS15_.js} +68 -42
  56. package/dist/src/{chat-CgF-J-Jj.cjs → chat-CclRbxGf.cjs} +68 -42
  57. package/dist/src/{chat-BiKyneZl.js → chat-Dr3DUQ0D.js} +68 -42
  58. package/dist/src/{chat-DqxYYtWA.js → chat-I9izLm49.js} +67 -41
  59. package/dist/src/{chat-CzkrVDfz.js → chat-MKxMnZJZ.js} +3 -13
  60. package/dist/src/{chat-qmatte1u.js → chat-mW0ORo8G.js} +3 -14
  61. package/dist/src/{chatkit-DKyPi1Gs.cjs → chatkit-BoWoSgXl.cjs} +4 -4
  62. package/dist/src/{chatkit-65VXf5SR.js → chatkit-CJnHRRMM.js} +4 -4
  63. package/dist/src/{chatkit-Be-Q-a9F.js → chatkit-Cv6AhukM.js} +4 -4
  64. package/dist/src/{chatkit-BxFvW8KY.js → chatkit-zUIVoDos.js} +4 -4
  65. package/dist/src/{claude-agent-sdk-Apiy0iaz.js → claude-agent-sdk-BQNuLaAK.js} +41 -18
  66. package/dist/src/{claude-agent-sdk-D9Z5Pr9X.cjs → claude-agent-sdk-CPJo3dBQ.cjs} +45 -22
  67. package/dist/src/{claude-agent-sdk-D2bJee9S.js → claude-agent-sdk-Dtq_L-Sc.js} +40 -17
  68. package/dist/src/{claude-agent-sdk-DfCoW0E6.js → claude-agent-sdk-nfAIcxNf.js} +42 -20
  69. package/dist/src/{cloud-C0dlstV_.js → cloud-DQZ5sVjW.js} +25 -13
  70. package/dist/src/cloud-Hphvo8kr.js +3 -0
  71. package/dist/src/{cloudflare-ai-8TDxHR0x.js → cloudflare-ai-BIB567w6.js} +5 -14
  72. package/dist/src/{cloudflare-ai-g7PB6VHR.js → cloudflare-ai-DGLte7Py.js} +5 -14
  73. package/dist/src/{cloudflare-ai-CknbZ5LJ.cjs → cloudflare-ai-Dl3N9OVD.cjs} +6 -15
  74. package/dist/src/{cloudflare-ai-BxAGvfju.js → cloudflare-ai-DlKr0rY7.js} +5 -15
  75. package/dist/src/{cloudflare-gateway-B9HWA5wf.js → cloudflare-gateway-BDZrYydE.js} +4 -16
  76. package/dist/src/{cloudflare-gateway-BSnDmHYo.cjs → cloudflare-gateway-BYDp495F.cjs} +4 -15
  77. package/dist/src/{cloudflare-gateway-CKDb4dJ8.js → cloudflare-gateway-CiIZHU0Q.js} +5 -164
  78. package/dist/src/{cloudflare-gateway-CP9QEWYS.js → cloudflare-gateway-DI1HNP5F.js} +4 -15
  79. package/dist/src/codex-sdk-BAmYE7qy.js +3 -0
  80. package/dist/src/codex-sdk-C2_M2pl_.cjs +1172 -0
  81. package/dist/src/codex-sdk-CErXn7qh.js +1165 -0
  82. package/dist/src/codex-sdk-CWEnH70W.cjs +2 -0
  83. package/dist/src/codex-sdk-CpqiOqDO.js +1164 -0
  84. package/dist/src/codex-sdk-Rtky3M4I.js +1165 -0
  85. package/dist/src/{cometapi-BL9yvj_f.js → cometapi-BUlt_ELa.js} +8 -15
  86. package/dist/src/{cometapi-DFNiKmSz.js → cometapi-CtJ-mS8R.js} +8 -16
  87. package/dist/src/cometapi-DT-jlVCB.js +55 -0
  88. package/dist/src/cometapi-UVOryo4W.cjs +55 -0
  89. package/dist/src/{completion-CM6oK8PS.cjs → completion-BozdoXba.cjs} +7 -62
  90. package/dist/src/{completion-5MzrpJxT.js → completion-Dnxn7E-j.js} +8 -57
  91. package/dist/src/{completion-qRoZAYRB.js → completion-HUe8wDhZ.js} +8 -57
  92. package/dist/src/{completion-DZ083F31.js → completion-x0a_c2y1.js} +8 -57
  93. package/dist/src/{createHash-CTQmL3G2.js → createHash-4gFQpDDv.js} +3 -3
  94. package/dist/src/{createHash-CfZSc0b4.cjs → createHash-B7KvgoOD.cjs} +4 -4
  95. package/dist/src/{createHash-Da8fMwqB.js → createHash-ChI45QR1.js} +3 -3
  96. package/dist/src/{createHash-DmPQkvBh.js → createHash-CwDVU5xr.js} +3 -3
  97. package/dist/src/{docker-ExVyLp0S.js → docker-CQmlA2NU.js} +7 -14
  98. package/dist/src/{docker-Bb5dcxr8.js → docker-ClnmCf1Z.js} +6 -14
  99. package/dist/src/{docker-BvfL2BrW.js → docker-DCgsveLD.js} +6 -16
  100. package/dist/src/{docker-DcF2pRrj.cjs → docker-DS4_Osau.cjs} +7 -15
  101. package/dist/src/embedding-D3xTseo7.js +59 -0
  102. package/dist/src/embedding-DD9wa3ae.js +58 -0
  103. package/dist/src/embedding-I45KG3o7.cjs +63 -0
  104. package/dist/src/embedding-nFbumxcv.js +58 -0
  105. package/dist/src/entrypoint.js +69 -6
  106. package/dist/src/{errors-P6ll7XSJ.js → errors-Cw810C93.js} +1 -1
  107. package/dist/src/{esm-CaIwzWR5.js → esm-C7PnfdF8.js} +16 -7
  108. package/dist/src/{esm-CnNt7sI4.cjs → esm-CtEPLdAj.cjs} +15 -6
  109. package/dist/src/{esm-Cd1AjG1D.js → esm-Dh4dOLlt.js} +15 -6
  110. package/dist/src/{esm-C03C-mv3.js → esm-tVgYPY-f.js} +27 -18
  111. package/dist/src/eval-CzJFfFO9.js +3 -0
  112. package/dist/src/{eval-Dg2nG4v2.js → eval-u4UVafl6.js} +49 -20
  113. package/dist/src/{evalResult-BDMqrapS.js → evalResult-Bgm9ZH31.js} +7 -7
  114. package/dist/src/{evalResult-BBRNtX4I.js → evalResult-D3hVYFis.js} +7 -7
  115. package/dist/src/evalResult-D8MT9p0s.js +3 -0
  116. package/dist/src/evalResult-DElBuddX.js +2 -0
  117. package/dist/src/evalResult-Dvc-iucu.cjs +2 -0
  118. package/dist/src/{evalResult-fuaI8HkH.cjs → evalResult-KZqXl4XP.cjs} +7 -7
  119. package/dist/src/evaluator-CVessDWe.js +3 -0
  120. package/dist/src/{evaluator-BhoWwp5b.js → evaluator-IvuDYSvQ.js} +3080 -1254
  121. package/dist/src/{extractor-D25qpmGX.js → extractor-CAfTSraf.js} +6 -6
  122. package/dist/src/{extractor-DReVID0K.js → extractor-DNSeBVOJ.js} +6 -6
  123. package/dist/src/{extractor-C0EVHewb.js → extractor-Dk6bRWkv.js} +6 -6
  124. package/dist/src/{extractor-pYLLi3wS.cjs → extractor-WVPOrH43.cjs} +6 -6
  125. package/dist/src/{fetch-HaqdX7U1.js → fetch-B0Z3Oe4k.js} +218 -55
  126. package/dist/src/{fetch-Dxpd4_sr.js → fetch-BEWnXrrG.js} +195 -45
  127. package/dist/src/fetch-C7bGKDlQ.js +3 -0
  128. package/dist/src/{fetch-BPkYtG8K.cjs → fetch-CJU5ELPa.cjs} +223 -48
  129. package/dist/src/{fetch-Cwxnd8zz.js → fetch-Di00EQrc.js} +218 -55
  130. package/dist/src/{fileExtensions-Ds-foDzt.js → fileExtensions-AWa2ZML4.js} +1 -1
  131. package/dist/src/{fileExtensions-LcDYkU4v.js → fileExtensions-BArZuxsI.js} +1 -1
  132. package/dist/src/{formatDuration-DgBVMN65.js → formatDuration-DZzPsexs.js} +1 -1
  133. package/dist/src/{genaiTracer-D3fD9dNV.js → genaiTracer-COYDi-tC.js} +6 -2
  134. package/dist/src/{genaiTracer-C1rxGO8Q.js → genaiTracer-DWdZ28hY.js} +6 -2
  135. package/dist/src/{genaiTracer-70Z8BIuV.js → genaiTracer-XnrcgDCe.js} +6 -2
  136. package/dist/src/{genaiTracer-DN4dQywX.cjs → genaiTracer-yRuxj9-L.cjs} +7 -3
  137. package/dist/src/golang/wrapper.go +1 -1
  138. package/dist/src/{graders-DU49_J8Y.cjs → graders--zknU_uk.cjs} +5747 -3206
  139. package/dist/src/graders-BOAzQEUe.cjs +2 -0
  140. package/dist/src/graders-D4BTsZdG2.js +3 -0
  141. package/dist/src/graders-DOJK1XpV.js +2 -0
  142. package/dist/src/graders-NAv9LcBn.js +2 -0
  143. package/dist/src/{graders-BTeBGqjJ.js → graders-Zy3x0zqX.js} +5727 -3218
  144. package/dist/src/{graders-Bj_Odv7c.js → graders-eIHhRqoC.js} +5719 -3210
  145. package/dist/src/{graders-DP7KFFo-.js → graders-pvbReLLn.js} +5728 -3219
  146. package/dist/src/{image-B0h9VEMc.js → image-9302QVqR.js} +4 -4
  147. package/dist/src/{image-CHfWvljl.js → image-B5Mv-Z3h.js} +8 -8
  148. package/dist/src/{image-DS-o-0ph.js → image-DVz2RiMF.js} +8 -8
  149. package/dist/src/{image-C1madmKh.cjs → image-De2FBmYV.cjs} +4 -4
  150. package/dist/src/{image-B02ogr_b.js → image-dnoUgPrC.js} +4 -5
  151. package/dist/src/{image-Dpxa1Jt6.js → image-qUpPvmNZ.js} +8 -8
  152. package/dist/src/{image-Bb4vWQLM.js → image-u7-rKnYU.js} +4 -4
  153. package/dist/src/{image-BLmROtN3.cjs → image-x6KqLQl4.cjs} +8 -8
  154. package/dist/src/index.cjs +3728 -1482
  155. package/dist/src/index.d.cts +3232 -79
  156. package/dist/src/index.d.ts +3232 -79
  157. package/dist/src/index.js +3735 -1490
  158. package/dist/src/{interactiveCheck-BgLZUIt3.js → interactiveCheck-CLERUB0c.js} +2 -2
  159. package/dist/src/{knowledgeBase-DOO_BM9b.cjs → knowledgeBase-Bpoe_nLu.cjs} +6 -8
  160. package/dist/src/{knowledgeBase-D33Ty2l6.js → knowledgeBase-Dgc7CBWF.js} +6 -8
  161. package/dist/src/{knowledgeBase-B3OoKIej.js → knowledgeBase-RhFPGWDc.js} +6 -8
  162. package/dist/src/{knowledgeBase-CYTLHOt1.js → knowledgeBase-lm9RXSAm.js} +6 -9
  163. package/dist/src/{litellm-NbjknEh6.js → litellm-C2kqjxqp.js} +6 -14
  164. package/dist/src/{litellm-I_hbp_dc.cjs → litellm-CoyI4IAl.cjs} +6 -15
  165. package/dist/src/{litellm-TrljxD9G.js → litellm-DRjpcSa7.js} +5 -14
  166. package/dist/src/{litellm-AaeZcZQF.js → litellm-p37R1dzQ.js} +5 -16
  167. package/dist/src/{logger-DLcq4dWf.js → logger-B88EkIn6.js} +48 -23
  168. package/dist/src/{logger-Cp1GPUjj.cjs → logger-COuQb2xB.cjs} +77 -22
  169. package/dist/src/{logger-CT3IKMKA.js → logger-Ct2S6Yx-.js} +48 -23
  170. package/dist/src/{logger-KkObSCzq.js → logger-DksKw1Qc.js} +48 -23
  171. package/dist/src/{luma-ray-f6I2fft-.js → luma-ray-B863CmuZ.js} +6 -10
  172. package/dist/src/{luma-ray-DDsjcgZZ.js → luma-ray-BTTLtqQ8.js} +7 -10
  173. package/dist/src/{luma-ray-Due0n7di.cjs → luma-ray-BxVKaW2a.cjs} +6 -10
  174. package/dist/src/{luma-ray-BS2_tY8L.js → luma-ray-KgTCXrZC.js} +6 -12
  175. package/dist/src/main.d.ts +1 -26
  176. package/dist/src/main.js +1011 -548
  177. package/dist/src/{messages-Bs1kC7P4.cjs → messages-811uVVW5.cjs} +74 -19
  178. package/dist/src/{messages-BS17jdMx.js → messages-BTQz42fn.js} +74 -19
  179. package/dist/src/{messages-ZJk778GH.js → messages-MYTQ2TWp.js} +74 -19
  180. package/dist/src/{messages-D0lx5qK7.js → messages-zWbkLLHz.js} +74 -19
  181. package/dist/src/{meteor-D-SotUw9.js → meteor-CU5UAE-H.js} +1 -1
  182. package/dist/src/{meteor-DLZZ3osF.cjs → meteor-Co1VQ1u5.cjs} +1 -1
  183. package/dist/src/{meteor-44VjEACX.js → meteor-DHdzY1Ss.js} +1 -1
  184. package/dist/src/{meteor-DUiCJRC-.js → meteor-DuAFv6gF.js} +1 -1
  185. package/dist/src/{modelslab-Bmni6skY.js → modelslab-D0erNWKe.js} +7 -10
  186. package/dist/src/{modelslab-DRb74SP4.js → modelslab-DIq-6y7x.js} +7 -10
  187. package/dist/src/{modelslab-CoUX6Jc_.cjs → modelslab-Dk1JAtVo.cjs} +7 -10
  188. package/dist/src/{modelslab-Bx9IrZfS.js → modelslab-wu9yi5GE.js} +7 -11
  189. package/dist/src/{nova-reel-BfPq-0Yk.js → nova-reel-CCFRfeRb.js} +7 -10
  190. package/dist/src/{nova-reel-C_QM18Xn.cjs → nova-reel-CrLXVKQf.cjs} +6 -10
  191. package/dist/src/{nova-reel-bgjxilYW.js → nova-reel-DQrm74ng.js} +6 -10
  192. package/dist/src/{nova-reel-D_W1tjMH.js → nova-reel-gr11WG7f.js} +6 -12
  193. package/dist/src/{nova-sonic-DIGQNR07.js → nova-sonic-BYdp-QLs.js} +5 -7
  194. package/dist/src/{nova-sonic-CFb5GYhg.js → nova-sonic-B_ZXcUJB.js} +4 -7
  195. package/dist/src/{nova-sonic-De1HW5fD.js → nova-sonic-TDgrlTk7.js} +4 -9
  196. package/dist/src/{nova-sonic-zfcljeRp.cjs → nova-sonic-i5tUvXKn.cjs} +4 -7
  197. package/dist/src/{openai-DElQ-fPX.js → openai-DhVEmgeZ.js} +6 -3
  198. package/dist/src/{openai-DhbB7eWK.js → openai-Qsvz25mV.js} +6 -3
  199. package/dist/src/{openai-Cuif0GEt.cjs → openai-URNyItar.cjs} +6 -3
  200. package/dist/src/{openai-j-sE2O7r.js → openai-iYtrXzOX.js} +6 -3
  201. package/dist/src/openclaw-CLWrW03k.js +1200 -0
  202. package/dist/src/openclaw-CnQ363Wi.js +1199 -0
  203. package/dist/src/openclaw-CwzlQSQX.js +1199 -0
  204. package/dist/src/openclaw-wX9rtfke.cjs +1205 -0
  205. package/dist/src/{opencode-sdk-B3CWY9h_.js → opencode-sdk-BUu5Nevv.js} +12 -14
  206. package/dist/src/{opencode-sdk-BL764Jdi.cjs → opencode-sdk-BZ2idgYA.cjs} +16 -18
  207. package/dist/src/{opencode-sdk-0j6rTWNb.js → opencode-sdk-BxD8vXp_.js} +12 -15
  208. package/dist/src/{opencode-sdk-C2y6UkP2.js → opencode-sdk-GI2KaAXq.js} +12 -14
  209. package/dist/src/{otlpReceiver-C99PPb48.js → otlpReceiver-B2z58l4e.js} +154 -98
  210. package/dist/src/{otlpReceiver-CGq6LspY.cjs → otlpReceiver-BfcVq2Nq.cjs} +154 -98
  211. package/dist/src/{otlpReceiver-D89fR-rC.js → otlpReceiver-BntK801g.js} +154 -98
  212. package/dist/src/{otlpReceiver-CdNBdbsk.js → otlpReceiver-DmVulbhC.js} +154 -98
  213. package/dist/src/{providerRegistry-CD8MEar9.js → providerRegistry-Bvh8mv85.js} +2 -2
  214. package/dist/src/{providerRegistry-DM8rZYol.js → providerRegistry-CPQ_CmVO.js} +2 -2
  215. package/dist/src/{providerRegistry-Civky8Ar.cjs → providerRegistry-CQMdTmHP.cjs} +2 -2
  216. package/dist/src/{providerRegistry-B0RUOLI_.js → providerRegistry-CWoPjKFZ.js} +2 -2
  217. package/dist/src/{providers-CgKOSgTR.cjs → providers-1eKkXBKp.cjs} +1435 -930
  218. package/dist/src/{providers-BlqUifFg.js → providers-BV_KMZje.js} +1419 -944
  219. package/dist/src/providers-Bp4S-FvO.js +2 -0
  220. package/dist/src/providers-DV3ax9e_.cjs +3 -0
  221. package/dist/src/{providers-D8lF1sqW.js → providers-Domz_llv.js} +1427 -952
  222. package/dist/src/{providers-Dk_6ocUX.js → providers-DruaQfwu.js} +1424 -949
  223. package/dist/src/providers-iUt5fbAN.js +3 -0
  224. package/dist/src/providers-u9Enmfok.js +2 -0
  225. package/dist/src/python/persistent_wrapper.py +0 -5
  226. package/dist/src/{pythonUtils-D6fwaDSg.js → pythonUtils-C2UQ30Rz.js} +4 -4
  227. package/dist/src/{pythonUtils-D5nxkQ0P.js → pythonUtils-Cldx7huE.js} +4 -4
  228. package/dist/src/{pythonUtils-C3py6GC1.js → pythonUtils-CnndUbW-.js} +3 -3
  229. package/dist/src/{pythonUtils-CTU3Y3lw.cjs → pythonUtils-tAJvvpS-.cjs} +3 -3
  230. package/dist/src/{quiverai-CIaELU_m.js → quiverai-CtWi6x_g.js} +4 -4
  231. package/dist/src/{quiverai-PdShCPox.cjs → quiverai-DFotyafY.cjs} +4 -4
  232. package/dist/src/{quiverai-BbOUOn2L.js → quiverai-DR0SnIQV.js} +4 -4
  233. package/dist/src/{quiverai-uH-dcTIr.js → quiverai-aPPvXOgn.js} +4 -5
  234. package/dist/src/render-CH-62LbA.js +135 -0
  235. package/dist/src/render-CMEpfLaO.js +136 -0
  236. package/dist/src/{render-Drod8m7K.js → render-CgVDrJmM.js} +2 -3
  237. package/dist/src/render-DHIZ6_k8.js +135 -0
  238. package/dist/src/render-DfQSFxGE.cjs +165 -0
  239. package/dist/src/{responses-DIR9Ud3j.js → responses--OsX2aYW.js} +23 -14
  240. package/dist/src/{responses-D8SBTL64.cjs → responses-Bi9vBuW_.cjs} +24 -15
  241. package/dist/src/{responses-CB2jwoAr.js → responses-C-flexAY.js} +24 -15
  242. package/dist/src/{responses-WNGNYe3K.js → responses-DL9m8CyY.js} +24 -15
  243. package/dist/src/{rubyUtils-DhCAlxZr.cjs → rubyUtils-B6eljPuh.cjs} +3 -3
  244. package/dist/src/{rubyUtils-BcuGX77l.js → rubyUtils-CYSQEG4a.js} +3 -3
  245. package/dist/src/rubyUtils-D1L2d3jb.js +3 -0
  246. package/dist/src/rubyUtils-DUbq4tff.cjs +2 -0
  247. package/dist/src/{rubyUtils-BUVePouc.js → rubyUtils-DVLeA2jg.js} +3 -3
  248. package/dist/src/{rubyUtils-Boc4HZzX.js → rubyUtils-DsGrTx8R.js} +3 -3
  249. package/dist/src/{sagemaker-CNBxx5CJ.js → sagemaker-BVkaG2-l.js} +14 -18
  250. package/dist/src/{sagemaker-CemTFp2h.js → sagemaker-BveBvuxm.js} +14 -18
  251. package/dist/src/{sagemaker-YSyBXQQh.js → sagemaker-D67yzMzs.js} +14 -19
  252. package/dist/src/{sagemaker-Cl28mZU2.cjs → sagemaker-XnfhheQv.cjs} +14 -18
  253. package/dist/src/{scanner-BsBlNXNn.js → scanner-1DqWi1Ej.js} +130 -35
  254. package/dist/src/server/golang/wrapper.go +1 -1
  255. package/dist/src/server/index.js +3757 -1511
  256. package/dist/src/server/python/persistent_wrapper.py +0 -5
  257. package/dist/src/{server-CqzrVGpF.js → server-BNYztJkh.js} +128 -9
  258. package/dist/src/{server-CuxBbeSY.js → server-BSB45Nt9.js} +127 -8
  259. package/dist/src/{server-VWgWb00X.js → server-D6Il2Sob.js} +126 -7
  260. package/dist/src/server-DCtHUqlp.js +3 -0
  261. package/dist/src/server-DaA2eR26.cjs +2 -0
  262. package/dist/src/{server-C_7Ax-hA.cjs → server-Dx2TyCH2.cjs} +140 -6
  263. package/dist/src/{signal-4U3mfRvL.js → signal-CE5G3a7x.js} +3 -3
  264. package/dist/src/{slack-BmVAVGaK.cjs → slack-1Rhq0EoV.cjs} +2 -2
  265. package/dist/src/{slack-DCUPTzS2.js → slack-D5Wpy8LM.js} +2 -2
  266. package/dist/src/{slack-DXMKtA-f.js → slack-DDUe-5MC.js} +2 -2
  267. package/dist/src/{slack-DOdy_kyv.js → slack-acRb0IqQ.js} +2 -2
  268. package/dist/src/store-CWOSz6D_.cjs +2 -0
  269. package/dist/src/{store-Dim__MDd.js → store-CYEy5J2D.js} +17 -5
  270. package/dist/src/{store-DLlFCC4h.cjs → store-DAAyxcy6.cjs} +17 -5
  271. package/dist/src/store-DCDBhv7B.js +3 -0
  272. package/dist/src/{store-CXGFv4aR.js → store-Dn9HUkdW.js} +17 -5
  273. package/dist/src/{store-DXilxTl-.js → store-M0b1WfYb.js} +17 -5
  274. package/dist/src/{tables-gftXzE9I.js → tables-C4CH3zRr.js} +3 -3
  275. package/dist/src/{tables-DLJPUdUE.js → tables-CsWou1Bx.js} +3 -3
  276. package/dist/src/{tables-6YKwjN9-.js → tables-DQ4WU5tX.js} +3 -3
  277. package/dist/src/{tables-DPi7wKeM.cjs → tables-DUfh1F7Z.cjs} +3 -3
  278. package/dist/src/telemetry-C1IqxcdW.js +3 -0
  279. package/dist/src/telemetry-C4ZEa_es.cjs +2 -0
  280. package/dist/src/{telemetry-CMrFgtPB.js → telemetry-CQPez_Jp.js} +4 -4
  281. package/dist/src/{telemetry-DaX14Chu.cjs → telemetry-Dsw_faFj.cjs} +4 -4
  282. package/dist/src/{telemetry-Dthj_BbD.js → telemetry-Dvqxv3YC.js} +4 -4
  283. package/dist/src/{telemetry-Cps3mIU-.js → telemetry-dbaJ0E98.js} +4 -4
  284. package/dist/src/{text-CW1cyrwj.cjs → text-BVi-cLPJ.cjs} +1 -1
  285. package/dist/src/{text-B_UCRPp2.js → text-CZr46tp_.js} +1 -1
  286. package/dist/src/{text-TIv0QYnd.js → text-DHxdyQqT.js} +1 -1
  287. package/dist/src/{text-Db-Wt2u2.js → text-KvuD2Iko.js} +1 -1
  288. package/dist/src/{tokenUsageUtils-bVa1ga6f.cjs → tokenUsageUtils-Bb7DkZPz.cjs} +7 -3
  289. package/dist/src/{tokenUsageUtils-NYT-WKS6.js → tokenUsageUtils-C-bmyHoE.js} +7 -3
  290. package/dist/src/{tokenUsageUtils-DflFMjS0.js → tokenUsageUtils-CXrvO-wA.js} +7 -3
  291. package/dist/src/{transcription-NLVG9MT1.cjs → transcription-BvjmiYB1.cjs} +12 -16
  292. package/dist/src/{transcription-BNYURcXg.js → transcription-CJspiD2c.js} +11 -14
  293. package/dist/src/{transcription-B_OdaHp7.js → transcription-DuWDupG7.js} +10 -14
  294. package/dist/src/{transcription-s6A-bNrZ.js → transcription-V2HaAmy2.js} +10 -16
  295. package/dist/src/{transform-DECvGmzp.js → transform-Bbg6A8Jk.js} +4 -4
  296. package/dist/src/{transform-vNucnNr0.js → transform-CG0ehZNG.js} +11 -7
  297. package/dist/src/{transform-DuHvhZpj.cjs → transform-CTeuTR3S.cjs} +31 -9
  298. package/dist/src/{transform-CzK1Q0zl.cjs → transform-CUnzlsbn.cjs} +4 -4
  299. package/dist/src/{transform-aa6tmVpZ.js → transform-DYX1_Xnh.js} +5 -5
  300. package/dist/src/transform-DgKlRr73.cjs +2 -0
  301. package/dist/src/transform-M6ITAESf.js +3 -0
  302. package/dist/src/{transform-DilY9wbS.js → transform-UN5UGu8U.js} +5 -5
  303. package/dist/src/{transform-uAytVuyX.js → transform-lQrDE1BQ.js} +11 -7
  304. package/dist/src/{transform-D5HsjduX.js → transform-zDhMmzwX.js} +11 -7
  305. package/dist/src/{transformersAvailability-CEVM2GNQ.js → transformersAvailability-CcHusyhw.js} +1 -1
  306. package/dist/src/{transformersAvailability-CwayUSlh.cjs → transformersAvailability-Cju9mHgR.cjs} +1 -1
  307. package/dist/src/{transformersAvailability-D6c6ROpT.js → transformersAvailability-DLlROWhg.js} +1 -1
  308. package/dist/src/{types-DmyIJ-sR.js → types-BGQDAP8i.js} +357 -22
  309. package/dist/src/{types-CzW2QFyi.js → types-Bgh5SOn6.js} +358 -24
  310. package/dist/src/{types-C_7nyzr1.cjs → types-CeaeaZdP.cjs} +393 -22
  311. package/dist/src/{types-Cbd8uOMq.js → types-Dm9JM6Vb.js} +368 -23
  312. package/dist/src/{util-BHGHw5G1.js → util-BYvQUPp7.js} +138 -36
  313. package/dist/src/{util-B9vlHIIh.cjs → util-Bxn8emtE.cjs} +15 -168
  314. package/dist/src/{util-ZzmqNPlg.js → util-C8e5uydV.js} +19 -142
  315. package/dist/src/{util-CMy69ZgQ.js → util-C9J8ahRn.js} +18 -4
  316. package/dist/src/{util-BzMcevZc.cjs → util-CN3SrLT4.cjs} +18 -4
  317. package/dist/src/{util-BV4XUC0n.js → util-D3q0WQ-0.js} +18 -4
  318. package/dist/src/{util-Dnmk2mBQ.js → util-D9TisOyk.js} +18 -4
  319. package/dist/src/{util-B3xGByQh.js → util-DDs-7g6-.js} +138 -36
  320. package/dist/src/{util-Bv6uGDfH.js → util-DvU2Pw8c.js} +138 -36
  321. package/dist/src/{util-C1CeHl-P.js → util-DxWpWjhc.js} +13 -136
  322. package/dist/src/{util-BRYkYPTd.js → util-oGMLA7vc.js} +17 -140
  323. package/dist/src/{util-DGNOS1db.cjs → util-olYL5C6N.cjs} +143 -35
  324. package/dist/src/{utils-Cz9qXqII.cjs → utils-B05gLxER.cjs} +6 -4
  325. package/dist/src/{utils-f2-Moju7.js → utils-BLJKfv0y.js} +6 -4
  326. package/dist/src/{utils-dLokC-eR.js → utils-DJfvjyMj.js} +6 -4
  327. package/dist/src/{utils-XiOAgly5.js → utils-hXtCYanr.js} +6 -4
  328. package/dist/tsconfig.tsbuildinfo +1 -1
  329. package/package.json +66 -57
  330. package/dist/src/app/assets/index-4LKxG2CG.js +0 -439
  331. package/dist/src/app/assets/index-C3zcsZFQ.css +0 -1
  332. package/dist/src/app/assets/scroll-timeline-BdJZVXlz.js +0 -1
  333. package/dist/src/app/assets/sync-9qqYcY-B.js +0 -4
  334. package/dist/src/app/assets/vendor-charts-BnDWwBlI.js +0 -36
  335. package/dist/src/app/assets/vendor-markdown-0tekx3KX.js +0 -29
  336. package/dist/src/app/assets/vendor-react-AtKqiNEf.js +0 -4
  337. package/dist/src/app/assets/vendor-syntax-D06x6TQF.js +0 -2
  338. package/dist/src/app/assets/vendor-utils-BvMHZmO7.js +0 -37
  339. package/dist/src/app/tsconfig.app.tsbuildinfo +0 -1
  340. package/dist/src/cache-BVeDlD87.js +0 -726
  341. package/dist/src/cache-C4Nxf52C.js +0 -756
  342. package/dist/src/cache-CeUpFm3M.cjs +0 -5
  343. package/dist/src/cache-Dh5WtQps.cjs +0 -816
  344. package/dist/src/cache-i1P6crbO.js +0 -756
  345. package/dist/src/cache-n-RCJ-hL.js +0 -6
  346. package/dist/src/cloud-BBh91EUK.js +0 -4
  347. package/dist/src/codex-sdk-C6UMlxwV.js +0 -665
  348. package/dist/src/codex-sdk-DUwKWezN.js +0 -665
  349. package/dist/src/codex-sdk-GGAw0qbD.js +0 -666
  350. package/dist/src/codex-sdk-fAO0c3yA.cjs +0 -669
  351. package/dist/src/eval-B3r2CVXr.js +0 -15
  352. package/dist/src/evalResult-5xwYnECe.js +0 -12
  353. package/dist/src/evalResult-71lY93Kj.cjs +0 -10
  354. package/dist/src/evalResult-Dx5P5cIv.js +0 -10
  355. package/dist/src/evaluator-Jx6bRZV6.js +0 -36
  356. package/dist/src/fetch-BxNb_Lp3.js +0 -5
  357. package/dist/src/graders-B_pgMLS2.js +0 -34
  358. package/dist/src/graders-DErokPDO.cjs +0 -32
  359. package/dist/src/graders-DR_uNe54.js +0 -32
  360. package/dist/src/graders-w3176Wz-.js +0 -32
  361. package/dist/src/openclaw-CSugPYAr.cjs +0 -586
  362. package/dist/src/openclaw-DiSz3I5L.js +0 -582
  363. package/dist/src/openclaw-DuvJKEW5.js +0 -580
  364. package/dist/src/openclaw-tiVYRtr-.js +0 -580
  365. package/dist/src/providers-B7V0njNs.js +0 -32
  366. package/dist/src/providers-BEwbhv0X.js +0 -30
  367. package/dist/src/providers-CH3C7zf7.js +0 -30
  368. package/dist/src/providers-zyB6k_38.cjs +0 -31
  369. package/dist/src/rubyUtils-BUHu6PhO.js +0 -5
  370. package/dist/src/rubyUtils-CP42kMvq.cjs +0 -4
  371. package/dist/src/server-DA4Cyrrq.js +0 -7
  372. package/dist/src/server-Dulb-4-K.cjs +0 -5
  373. package/dist/src/store-CXS-Q_91.js +0 -6
  374. package/dist/src/store-eYkaKMwq.cjs +0 -5
  375. package/dist/src/telemetry-BpMfhthR.cjs +0 -5
  376. package/dist/src/telemetry-Dw38hanS.js +0 -7
  377. package/dist/src/tokenUsageUtils-BDGe-iyI.js +0 -138
  378. package/dist/src/transform-DTGDnAzW.js +0 -6
  379. package/dist/src/transform-m3qNw4KP.cjs +0 -5
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
- import { C as getEnvString, O as state, S as getEnvInt, a as logRequestResponse, b as getEnvBool, o as logger, u as sanitizeUrl } from "./logger-KkObSCzq.js";
2
+ import { D as getEnvInt, N as state, O as getEnvString, T as getEnvBool, h as sanitizeUrl, o as logRequestResponse, s as logger } from "./logger-DksKw1Qc.js";
3
3
  import { t as invariant } from "./invariant-BtWWVVhl.js";
4
- import { a as cloudConfig } from "./cloud-C0dlstV_.js";
5
- import { Agent, ProxyAgent } from "undici";
4
+ import { a as cloudConfig } from "./cloud-DQZ5sVjW.js";
6
5
  import path from "path";
7
6
  import yaml from "js-yaml";
8
7
  import * as fsPromises from "fs/promises";
9
8
  import { getProxyForUrl } from "proxy-from-env";
9
+ import { Agent, ProxyAgent } from "undici";
10
10
  import { promisify } from "util";
11
11
  import { gzip } from "zlib";
12
12
  //#region src/providers/constants.ts
@@ -22,7 +22,7 @@ const HUMAN_ASSERTION_TYPE = "human";
22
22
  * Application version from package.json.
23
23
  * Injected at build time, or read from npm environment in development.
24
24
  */
25
- const VERSION = "0.121.2";
25
+ const VERSION = "0.121.4";
26
26
  /**
27
27
  * PostHog analytics key.
28
28
  * Only populated during production builds via PROMPTFOO_POSTHOG_KEY env var.
@@ -149,7 +149,7 @@ function isOpenAIToolChoice(obj) {
149
149
  function openaiToolChoiceToAnthropic(choice) {
150
150
  if (typeof choice === "string") switch (choice) {
151
151
  case "auto": return { type: "auto" };
152
- case "none": return { type: "auto" };
152
+ case "none": return { type: "none" };
153
153
  case "required": return { type: "any" };
154
154
  }
155
155
  return {
@@ -285,6 +285,155 @@ function transformTools(tools, format) {
285
285
  }
286
286
  }
287
287
  //#endregion
288
+ //#region src/scheduler/headerParser.ts
289
+ const OPENAI_HEADERS = {
290
+ remainingRequests: "x-ratelimit-remaining-requests",
291
+ remainingTokens: "x-ratelimit-remaining-tokens",
292
+ limitRequests: "x-ratelimit-limit-requests",
293
+ limitTokens: "x-ratelimit-limit-tokens",
294
+ resetRequests: "x-ratelimit-reset-requests",
295
+ resetTokens: "x-ratelimit-reset-tokens"
296
+ };
297
+ const ANTHROPIC_HEADERS = {
298
+ remainingRequests: "anthropic-ratelimit-requests-remaining",
299
+ remainingTokens: "anthropic-ratelimit-tokens-remaining",
300
+ limitRequests: "anthropic-ratelimit-requests-limit",
301
+ limitTokens: "anthropic-ratelimit-tokens-limit",
302
+ reset: "anthropic-ratelimit-requests-reset"
303
+ };
304
+ const STANDARD_HEADERS = {
305
+ remaining: "ratelimit-remaining",
306
+ limit: "ratelimit-limit",
307
+ reset: "ratelimit-reset",
308
+ remainingAlt: "x-ratelimit-remaining",
309
+ limitAlt: "x-ratelimit-limit",
310
+ resetAlt: "x-ratelimit-reset"
311
+ };
312
+ /**
313
+ * Parse rate limit headers from response.
314
+ */
315
+ function parseRateLimitHeaders(headers) {
316
+ const result = {};
317
+ const h = lowercaseKeys(headers);
318
+ result.remainingRequests = parseFirstMatch(h, [
319
+ OPENAI_HEADERS.remainingRequests,
320
+ ANTHROPIC_HEADERS.remainingRequests,
321
+ STANDARD_HEADERS.remainingAlt,
322
+ STANDARD_HEADERS.remaining
323
+ ]);
324
+ result.remainingTokens = parseFirstMatch(h, [OPENAI_HEADERS.remainingTokens, ANTHROPIC_HEADERS.remainingTokens]);
325
+ result.limitRequests = parseFirstMatch(h, [
326
+ OPENAI_HEADERS.limitRequests,
327
+ ANTHROPIC_HEADERS.limitRequests,
328
+ STANDARD_HEADERS.limitAlt,
329
+ STANDARD_HEADERS.limit
330
+ ]);
331
+ result.limitTokens = parseFirstMatch(h, [OPENAI_HEADERS.limitTokens, ANTHROPIC_HEADERS.limitTokens]);
332
+ for (const name of [
333
+ OPENAI_HEADERS.resetRequests,
334
+ OPENAI_HEADERS.resetTokens,
335
+ ANTHROPIC_HEADERS.reset,
336
+ STANDARD_HEADERS.resetAlt,
337
+ STANDARD_HEADERS.reset
338
+ ]) if (h[name] !== void 0) {
339
+ const parsed = parseResetTime(h[name]);
340
+ if (parsed !== null) {
341
+ result.resetAt = parsed;
342
+ break;
343
+ }
344
+ }
345
+ if (h["retry-after-ms"] !== void 0) {
346
+ const ms = parseInt(h["retry-after-ms"], 10);
347
+ if (!isNaN(ms) && ms >= 0) {
348
+ result.retryAfterMs = ms;
349
+ if (result.resetAt === void 0) result.resetAt = Date.now() + ms;
350
+ }
351
+ } else if (h["retry-after"] !== void 0) {
352
+ const parsed = parseRetryAfter(h["retry-after"]);
353
+ if (parsed !== null) {
354
+ result.retryAfterMs = parsed;
355
+ if (result.resetAt === void 0) result.resetAt = Date.now() + parsed;
356
+ }
357
+ }
358
+ return result;
359
+ }
360
+ /**
361
+ * Parse Retry-After header value.
362
+ * Returns duration in milliseconds.
363
+ * Exported for integration use.
364
+ */
365
+ function parseRetryAfter(value) {
366
+ const seconds = parseInt(value, 10);
367
+ if (!isNaN(seconds) && seconds >= 0 && String(seconds) === value.trim()) return seconds * 1e3;
368
+ const httpDate = parseHttpDate(value);
369
+ if (httpDate !== null) return Math.max(0, httpDate - Date.now());
370
+ return null;
371
+ }
372
+ function parseFirstMatch(headers, names) {
373
+ for (const name of names) {
374
+ const value = headers[name];
375
+ if (value !== void 0) {
376
+ const num = parseInt(value, 10);
377
+ if (!isNaN(num) && num >= 0) return num;
378
+ }
379
+ }
380
+ }
381
+ /**
382
+ * Parse reset time from various formats.
383
+ * Returns absolute Unix timestamp in milliseconds.
384
+ */
385
+ function parseResetTime(value) {
386
+ const durationMs = parseDuration(value);
387
+ if (durationMs !== null) return Date.now() + durationMs;
388
+ const num = parseFloat(value);
389
+ if (!isNaN(num)) if (num < 1e9) return Date.now() + num * 1e3;
390
+ else if (num < 1e10) return num * 1e3;
391
+ else return num;
392
+ const httpDate = parseHttpDate(value);
393
+ if (httpDate !== null) return httpDate;
394
+ return null;
395
+ }
396
+ /**
397
+ * Parse HTTP-date format (RFC 7231).
398
+ */
399
+ function parseHttpDate(value) {
400
+ const timestamp = Date.parse(value);
401
+ if (!isNaN(timestamp)) {
402
+ const now = Date.now();
403
+ const oneYearMs = 365 * 24 * 60 * 60 * 1e3;
404
+ if (timestamp > now - oneYearMs && timestamp < now + oneYearMs) return timestamp;
405
+ }
406
+ return null;
407
+ }
408
+ /**
409
+ * Parse duration strings like "1s", "100ms", "1m30s", "1h30s", "2h15m30s".
410
+ *
411
+ * Supported formats:
412
+ * - Xms (milliseconds)
413
+ * - Xs or X.Xs (seconds)
414
+ * - Xm or XmYs (minutes with optional seconds)
415
+ * - Xh or XhYm or XhYs or XhYmZs (hours with optional minutes/seconds)
416
+ */
417
+ function parseDuration(value) {
418
+ const match = value.match(/^(?:(\d+)h)?(?:(\d+)m(?!s))?(?:(\d+(?:\.\d+)?)(ms|s))?$/);
419
+ if (!match) return null;
420
+ const [, hours, minutes, secondsValue, secondsUnit] = match;
421
+ if (!hours && !minutes && !secondsValue) return null;
422
+ let ms = 0;
423
+ if (hours) ms += parseInt(hours, 10) * 36e5;
424
+ if (minutes) ms += parseInt(minutes, 10) * 6e4;
425
+ if (secondsValue) {
426
+ const num = parseFloat(secondsValue);
427
+ ms += secondsUnit === "ms" ? num : num * 1e3;
428
+ }
429
+ return ms;
430
+ }
431
+ function lowercaseKeys(obj) {
432
+ const result = {};
433
+ for (const [key, value] of Object.entries(obj)) result[key.toLowerCase()] = value;
434
+ return result;
435
+ }
436
+ //#endregion
288
437
  //#region src/util/time.ts
289
438
  function getCurrentTimestamp() {
290
439
  return Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3);
@@ -371,9 +520,8 @@ async function monkeyPatchFetch(url, options) {
371
520
  }
372
521
  //#endregion
373
522
  //#region src/util/fetch/index.ts
374
- let cachedAgent = null;
375
- let cachedAgentConcurrency;
376
- let cachedProxyAgents = /* @__PURE__ */ new Map();
523
+ const cachedAgents = /* @__PURE__ */ new Map();
524
+ const cachedProxyAgents = /* @__PURE__ */ new Map();
377
525
  /**
378
526
  * Get the connection pool size for HTTP agents.
379
527
  * Priority: PROMPTFOO_FETCH_CONNECTIONS env var > CLI -j flag > DEFAULT_MAX_CONCURRENCY (4).
@@ -393,44 +541,44 @@ function getConnectionPoolSize() {
393
541
  * Exported for testing only.
394
542
  */
395
543
  function clearAgentCache() {
396
- if (cachedAgent && typeof cachedAgent.close === "function") cachedAgent.close();
397
- cachedAgent = null;
398
- cachedAgentConcurrency = void 0;
544
+ for (const agent of cachedAgents.values()) if (typeof agent.close === "function") agent.close();
545
+ cachedAgents.clear();
399
546
  for (const agent of cachedProxyAgents.values()) if (typeof agent.close === "function") agent.close();
400
- cachedProxyAgents = /* @__PURE__ */ new Map();
547
+ cachedProxyAgents.clear();
401
548
  }
402
549
  function getOrCreateAgent(tlsOptions) {
403
550
  const concurrency = getConnectionPoolSize();
404
- if (cachedAgent && cachedAgentConcurrency !== concurrency) {
405
- if (typeof cachedAgent.close === "function") cachedAgent.close();
406
- cachedAgent = null;
407
- }
408
- if (!cachedAgent) {
409
- cachedAgent = new Agent({
410
- headersTimeout: REQUEST_TIMEOUT_MS,
411
- keepAliveTimeout: 3e4,
412
- keepAliveMaxTimeout: 6e4,
413
- connections: concurrency,
414
- connect: tlsOptions
415
- });
416
- cachedAgentConcurrency = concurrency;
417
- }
418
- return cachedAgent;
551
+ const existing = cachedAgents.get(concurrency);
552
+ if (existing) return existing;
553
+ const agent = new Agent({
554
+ headersTimeout: REQUEST_TIMEOUT_MS,
555
+ keepAliveTimeout: 3e4,
556
+ keepAliveMaxTimeout: 6e4,
557
+ connections: concurrency,
558
+ connect: tlsOptions
559
+ });
560
+ cachedAgents.set(concurrency, agent);
561
+ return agent;
562
+ }
563
+ function getProxyAgentCacheKey(proxyUrl, concurrency) {
564
+ return `${proxyUrl}::${concurrency}`;
419
565
  }
420
566
  function getOrCreateProxyAgent(proxyUrl, tlsOptions) {
421
- if (!cachedProxyAgents.has(proxyUrl)) {
422
- const agent = new ProxyAgent({
423
- uri: proxyUrl,
424
- proxyTls: tlsOptions,
425
- requestTls: tlsOptions,
426
- headersTimeout: REQUEST_TIMEOUT_MS,
427
- keepAliveTimeout: 3e4,
428
- keepAliveMaxTimeout: 6e4,
429
- connections: getConnectionPoolSize()
430
- });
431
- cachedProxyAgents.set(proxyUrl, agent);
432
- }
433
- return cachedProxyAgents.get(proxyUrl);
567
+ const concurrency = getConnectionPoolSize();
568
+ const cacheKey = getProxyAgentCacheKey(proxyUrl, concurrency);
569
+ const existing = cachedProxyAgents.get(cacheKey);
570
+ if (existing) return existing;
571
+ const agent = new ProxyAgent({
572
+ uri: proxyUrl,
573
+ proxyTls: tlsOptions,
574
+ requestTls: tlsOptions,
575
+ headersTimeout: REQUEST_TIMEOUT_MS,
576
+ keepAliveTimeout: 3e4,
577
+ keepAliveMaxTimeout: 6e4,
578
+ connections: concurrency
579
+ });
580
+ cachedProxyAgents.set(cacheKey, agent);
581
+ return agent;
434
582
  }
435
583
  async function fetchWithProxy(url, options = {}, abortSignal) {
436
584
  let finalUrl = url;
@@ -532,12 +680,14 @@ async function handleRateLimit(response) {
532
680
  const retryAfter = response.headers.get("Retry-After");
533
681
  const openaiReset = response.headers.get("x-ratelimit-reset-requests") || response.headers.get("x-ratelimit-reset-tokens");
534
682
  let waitTime = 6e4;
535
- if (openaiReset) waitTime = Math.max(Number.parseInt(openaiReset) * 1e3, 0);
536
- else if (rateLimitReset) {
683
+ if (openaiReset) {
684
+ const parsedHeaders = parseRateLimitHeaders(Object.fromEntries(response.headers.entries()));
685
+ if (parsedHeaders.resetAt !== void 0) waitTime = Math.max(parsedHeaders.resetAt - Date.now(), 0);
686
+ } else if (rateLimitReset) {
537
687
  const resetTime = /* @__PURE__ */ new Date(Number.parseInt(rateLimitReset) * 1e3);
538
688
  const now = /* @__PURE__ */ new Date();
539
689
  waitTime = Math.max(resetTime.getTime() - now.getTime() + 1e3, 0);
540
- } else if (retryAfter) waitTime = Number.parseInt(retryAfter) * 1e3;
690
+ } else if (retryAfter) waitTime = parseRetryAfter(retryAfter) ?? waitTime;
541
691
  logger.debug(`Rate limited, waiting ${waitTime}ms before retry`);
542
692
  await sleep(waitTime);
543
693
  }
@@ -593,6 +743,6 @@ async function fetchWithRetries(url, options = {}, timeout, maxRetries) {
593
743
  throw new Error(`Request failed after ${maxRetries} retries: ${lastErrorMessage}`);
594
744
  }
595
745
  //#endregion
596
- export { getShareApiBaseUrl as A, CLOUD_PROVIDER_PREFIX as C, TERMINAL_MAX_WIDTH as D, R_ENDPOINT as E, HUMAN_ASSERTION_TYPE as F, POSTHOG_KEY as M, VERSION as N, getDefaultPort as O, FILE_METADATA_KEY as P, transformTools as S, EVENTS_ENDPOINT as T, openaiToolChoiceToBedrock as _, handleRateLimit as a, toTitleCase as b, getCurrentTimestamp as c, LONG_RUNNING_MODEL_TIMEOUT_MS as d, REQUEST_TIMEOUT_MS as f, isPromptfooSampleTarget as g, isOpenAIToolChoice as h, fetchWithTimeout as i, getShareViewBaseUrl as j, getDefaultShareViewBaseUrl as k, sleep as l, isOpenAIToolArray as m, fetchWithProxy as n, isRateLimited as o, calculateCost as p, fetchWithRetries as r, isTransientError as s, clearAgentCache as t, sleepWithAbort as u, openaiToolsToBedrock as v, CONSENT_ENDPOINT as w, transformToolChoice as x, parseChatPrompt as y };
746
+ export { getDefaultPort as A, transformToolChoice as C, EVENTS_ENDPOINT as D, CONSENT_ENDPOINT as E, VERSION as F, FILE_METADATA_KEY as I, HUMAN_ASSERTION_TYPE as L, getShareApiBaseUrl as M, getShareViewBaseUrl as N, R_ENDPOINT as O, POSTHOG_KEY as P, toTitleCase as S, CLOUD_PROVIDER_PREFIX as T, isOpenAIToolChoice as _, handleRateLimit as a, openaiToolsToBedrock as b, getCurrentTimestamp as c, parseRateLimitHeaders as d, parseRetryAfter as f, isOpenAIToolArray as g, calculateCost as h, fetchWithTimeout as i, getDefaultShareViewBaseUrl as j, TERMINAL_MAX_WIDTH as k, sleep as l, REQUEST_TIMEOUT_MS as m, fetchWithProxy as n, isRateLimited as o, LONG_RUNNING_MODEL_TIMEOUT_MS as p, fetchWithRetries as r, isTransientError as s, clearAgentCache as t, sleepWithAbort as u, isPromptfooSampleTarget as v, transformTools as w, parseChatPrompt as x, openaiToolChoiceToBedrock as y };
597
747
 
598
- //# sourceMappingURL=fetch-Dxpd4_sr.js.map
748
+ //# sourceMappingURL=fetch-BEWnXrrG.js.map
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import { n as fetchWithProxy } from "./fetch-BEWnXrrG.js";
3
+ export { fetchWithProxy };
@@ -1,4 +1,4 @@
1
- const require_logger = require("./logger-Cp1GPUjj.cjs");
1
+ const require_logger = require("./logger-COuQb2xB.cjs");
2
2
  const require_invariant = require("./invariant-kfQ8Bu82.cjs");
3
3
  let fs = require("fs");
4
4
  fs = require_logger.__toESM(fs);
@@ -25,7 +25,7 @@ const HUMAN_ASSERTION_TYPE = "human";
25
25
  * Application version from package.json.
26
26
  * Injected at build time, or read from npm environment in development.
27
27
  */
28
- const VERSION = "0.121.2";
28
+ const VERSION = "0.121.4";
29
29
  /**
30
30
  * PostHog analytics key.
31
31
  * Only populated during production builds via PROMPTFOO_POSTHOG_KEY env var.
@@ -149,7 +149,7 @@ function isOpenAIToolChoice(obj) {
149
149
  function openaiToolChoiceToAnthropic(choice) {
150
150
  if (typeof choice === "string") switch (choice) {
151
151
  case "auto": return { type: "auto" };
152
- case "none": return { type: "auto" };
152
+ case "none": return { type: "none" };
153
153
  case "required": return { type: "any" };
154
154
  }
155
155
  return {
@@ -285,6 +285,155 @@ function transformTools(tools, format) {
285
285
  }
286
286
  }
287
287
  //#endregion
288
+ //#region src/scheduler/headerParser.ts
289
+ const OPENAI_HEADERS = {
290
+ remainingRequests: "x-ratelimit-remaining-requests",
291
+ remainingTokens: "x-ratelimit-remaining-tokens",
292
+ limitRequests: "x-ratelimit-limit-requests",
293
+ limitTokens: "x-ratelimit-limit-tokens",
294
+ resetRequests: "x-ratelimit-reset-requests",
295
+ resetTokens: "x-ratelimit-reset-tokens"
296
+ };
297
+ const ANTHROPIC_HEADERS = {
298
+ remainingRequests: "anthropic-ratelimit-requests-remaining",
299
+ remainingTokens: "anthropic-ratelimit-tokens-remaining",
300
+ limitRequests: "anthropic-ratelimit-requests-limit",
301
+ limitTokens: "anthropic-ratelimit-tokens-limit",
302
+ reset: "anthropic-ratelimit-requests-reset"
303
+ };
304
+ const STANDARD_HEADERS = {
305
+ remaining: "ratelimit-remaining",
306
+ limit: "ratelimit-limit",
307
+ reset: "ratelimit-reset",
308
+ remainingAlt: "x-ratelimit-remaining",
309
+ limitAlt: "x-ratelimit-limit",
310
+ resetAlt: "x-ratelimit-reset"
311
+ };
312
+ /**
313
+ * Parse rate limit headers from response.
314
+ */
315
+ function parseRateLimitHeaders(headers) {
316
+ const result = {};
317
+ const h = lowercaseKeys(headers);
318
+ result.remainingRequests = parseFirstMatch(h, [
319
+ OPENAI_HEADERS.remainingRequests,
320
+ ANTHROPIC_HEADERS.remainingRequests,
321
+ STANDARD_HEADERS.remainingAlt,
322
+ STANDARD_HEADERS.remaining
323
+ ]);
324
+ result.remainingTokens = parseFirstMatch(h, [OPENAI_HEADERS.remainingTokens, ANTHROPIC_HEADERS.remainingTokens]);
325
+ result.limitRequests = parseFirstMatch(h, [
326
+ OPENAI_HEADERS.limitRequests,
327
+ ANTHROPIC_HEADERS.limitRequests,
328
+ STANDARD_HEADERS.limitAlt,
329
+ STANDARD_HEADERS.limit
330
+ ]);
331
+ result.limitTokens = parseFirstMatch(h, [OPENAI_HEADERS.limitTokens, ANTHROPIC_HEADERS.limitTokens]);
332
+ for (const name of [
333
+ OPENAI_HEADERS.resetRequests,
334
+ OPENAI_HEADERS.resetTokens,
335
+ ANTHROPIC_HEADERS.reset,
336
+ STANDARD_HEADERS.resetAlt,
337
+ STANDARD_HEADERS.reset
338
+ ]) if (h[name] !== void 0) {
339
+ const parsed = parseResetTime(h[name]);
340
+ if (parsed !== null) {
341
+ result.resetAt = parsed;
342
+ break;
343
+ }
344
+ }
345
+ if (h["retry-after-ms"] !== void 0) {
346
+ const ms = parseInt(h["retry-after-ms"], 10);
347
+ if (!isNaN(ms) && ms >= 0) {
348
+ result.retryAfterMs = ms;
349
+ if (result.resetAt === void 0) result.resetAt = Date.now() + ms;
350
+ }
351
+ } else if (h["retry-after"] !== void 0) {
352
+ const parsed = parseRetryAfter(h["retry-after"]);
353
+ if (parsed !== null) {
354
+ result.retryAfterMs = parsed;
355
+ if (result.resetAt === void 0) result.resetAt = Date.now() + parsed;
356
+ }
357
+ }
358
+ return result;
359
+ }
360
+ /**
361
+ * Parse Retry-After header value.
362
+ * Returns duration in milliseconds.
363
+ * Exported for integration use.
364
+ */
365
+ function parseRetryAfter(value) {
366
+ const seconds = parseInt(value, 10);
367
+ if (!isNaN(seconds) && seconds >= 0 && String(seconds) === value.trim()) return seconds * 1e3;
368
+ const httpDate = parseHttpDate(value);
369
+ if (httpDate !== null) return Math.max(0, httpDate - Date.now());
370
+ return null;
371
+ }
372
+ function parseFirstMatch(headers, names) {
373
+ for (const name of names) {
374
+ const value = headers[name];
375
+ if (value !== void 0) {
376
+ const num = parseInt(value, 10);
377
+ if (!isNaN(num) && num >= 0) return num;
378
+ }
379
+ }
380
+ }
381
+ /**
382
+ * Parse reset time from various formats.
383
+ * Returns absolute Unix timestamp in milliseconds.
384
+ */
385
+ function parseResetTime(value) {
386
+ const durationMs = parseDuration(value);
387
+ if (durationMs !== null) return Date.now() + durationMs;
388
+ const num = parseFloat(value);
389
+ if (!isNaN(num)) if (num < 1e9) return Date.now() + num * 1e3;
390
+ else if (num < 1e10) return num * 1e3;
391
+ else return num;
392
+ const httpDate = parseHttpDate(value);
393
+ if (httpDate !== null) return httpDate;
394
+ return null;
395
+ }
396
+ /**
397
+ * Parse HTTP-date format (RFC 7231).
398
+ */
399
+ function parseHttpDate(value) {
400
+ const timestamp = Date.parse(value);
401
+ if (!isNaN(timestamp)) {
402
+ const now = Date.now();
403
+ const oneYearMs = 365 * 24 * 60 * 60 * 1e3;
404
+ if (timestamp > now - oneYearMs && timestamp < now + oneYearMs) return timestamp;
405
+ }
406
+ return null;
407
+ }
408
+ /**
409
+ * Parse duration strings like "1s", "100ms", "1m30s", "1h30s", "2h15m30s".
410
+ *
411
+ * Supported formats:
412
+ * - Xms (milliseconds)
413
+ * - Xs or X.Xs (seconds)
414
+ * - Xm or XmYs (minutes with optional seconds)
415
+ * - Xh or XhYm or XhYs or XhYmZs (hours with optional minutes/seconds)
416
+ */
417
+ function parseDuration(value) {
418
+ const match = value.match(/^(?:(\d+)h)?(?:(\d+)m(?!s))?(?:(\d+(?:\.\d+)?)(ms|s))?$/);
419
+ if (!match) return null;
420
+ const [, hours, minutes, secondsValue, secondsUnit] = match;
421
+ if (!hours && !minutes && !secondsValue) return null;
422
+ let ms = 0;
423
+ if (hours) ms += parseInt(hours, 10) * 36e5;
424
+ if (minutes) ms += parseInt(minutes, 10) * 6e4;
425
+ if (secondsValue) {
426
+ const num = parseFloat(secondsValue);
427
+ ms += secondsUnit === "ms" ? num : num * 1e3;
428
+ }
429
+ return ms;
430
+ }
431
+ function lowercaseKeys(obj) {
432
+ const result = {};
433
+ for (const [key, value] of Object.entries(obj)) result[key.toLowerCase()] = value;
434
+ return result;
435
+ }
436
+ //#endregion
288
437
  //#region src/util/time.ts
289
438
  function getCurrentTimestamp() {
290
439
  return Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3);
@@ -417,7 +566,17 @@ var CloudConfig = class {
417
566
  teams: savedConfig.teams
418
567
  };
419
568
  }
420
- async validateAndSetApiToken(token, apiHost) {
569
+ saveValidatedApiToken(token, apiHost, user, app, hasActiveLicense) {
570
+ this.setApiKey(token);
571
+ this.setApiHost(apiHost);
572
+ this.setAppUrl(app.url);
573
+ if (typeof hasActiveLicense === "boolean") {
574
+ const createdAt = user?.createdAt ? new Date(user.createdAt) : null;
575
+ const isGrandfathered = createdAt != null && createdAt < SHARING_CUTOFF_DATE;
576
+ this.setSharing(hasActiveLicense || isGrandfathered);
577
+ }
578
+ }
579
+ async validateApiToken(token, apiHost) {
421
580
  try {
422
581
  const { fetchWithProxy } = await Promise.resolve().then(() => fetch_exports);
423
582
  const response = await fetchWithProxy(`${apiHost}/api/v1/users/me`, { headers: { Authorization: `Bearer ${token}` } });
@@ -427,19 +586,11 @@ var CloudConfig = class {
427
586
  throw new Error("Failed to validate API token: " + response.statusText);
428
587
  }
429
588
  const { user, organization, app, hasActiveLicense } = await response.json();
430
- this.setApiKey(token);
431
- this.setApiHost(apiHost);
432
- this.setAppUrl(app.url);
433
- if (typeof hasActiveLicense === "boolean") {
434
- const createdAt = user?.createdAt ? new Date(user.createdAt) : null;
435
- const isGrandfathered = createdAt != null && createdAt < SHARING_CUTOFF_DATE;
436
- this.setSharing(hasActiveLicense || isGrandfathered);
437
- }
438
589
  return {
439
590
  user,
440
591
  organization,
441
592
  app,
442
- hasActiveLicense: typeof hasActiveLicense === "boolean" ? hasActiveLicense : false
593
+ ...typeof hasActiveLicense === "boolean" ? { hasActiveLicense } : {}
443
594
  };
444
595
  } catch (err) {
445
596
  const error = err;
@@ -449,6 +600,16 @@ var CloudConfig = class {
449
600
  throw error;
450
601
  }
451
602
  }
603
+ async validateAndSetApiToken(token, apiHost) {
604
+ const { user, organization, app, hasActiveLicense } = await this.validateApiToken(token, apiHost);
605
+ this.saveValidatedApiToken(token, apiHost, user, app, hasActiveLicense);
606
+ return {
607
+ user,
608
+ organization,
609
+ app,
610
+ hasActiveLicense: typeof hasActiveLicense === "boolean" ? hasActiveLicense : false
611
+ };
612
+ }
452
613
  getCurrentOrganizationId() {
453
614
  return this.config.currentOrganizationId;
454
615
  }
@@ -563,9 +724,8 @@ var fetch_exports = /* @__PURE__ */ require_logger.__exportAll({
563
724
  isRateLimited: () => isRateLimited,
564
725
  isTransientError: () => isTransientError
565
726
  });
566
- let cachedAgent = null;
567
- let cachedAgentConcurrency;
568
- let cachedProxyAgents = /* @__PURE__ */ new Map();
727
+ const cachedAgents = /* @__PURE__ */ new Map();
728
+ const cachedProxyAgents = /* @__PURE__ */ new Map();
569
729
  /**
570
730
  * Get the connection pool size for HTTP agents.
571
731
  * Priority: PROMPTFOO_FETCH_CONNECTIONS env var > CLI -j flag > DEFAULT_MAX_CONCURRENCY (4).
@@ -582,36 +742,37 @@ function getConnectionPoolSize() {
582
742
  }
583
743
  function getOrCreateAgent(tlsOptions) {
584
744
  const concurrency = getConnectionPoolSize();
585
- if (cachedAgent && cachedAgentConcurrency !== concurrency) {
586
- if (typeof cachedAgent.close === "function") cachedAgent.close();
587
- cachedAgent = null;
588
- }
589
- if (!cachedAgent) {
590
- cachedAgent = new undici.Agent({
591
- headersTimeout: REQUEST_TIMEOUT_MS,
592
- keepAliveTimeout: 3e4,
593
- keepAliveMaxTimeout: 6e4,
594
- connections: concurrency,
595
- connect: tlsOptions
596
- });
597
- cachedAgentConcurrency = concurrency;
598
- }
599
- return cachedAgent;
745
+ const existing = cachedAgents.get(concurrency);
746
+ if (existing) return existing;
747
+ const agent = new undici.Agent({
748
+ headersTimeout: REQUEST_TIMEOUT_MS,
749
+ keepAliveTimeout: 3e4,
750
+ keepAliveMaxTimeout: 6e4,
751
+ connections: concurrency,
752
+ connect: tlsOptions
753
+ });
754
+ cachedAgents.set(concurrency, agent);
755
+ return agent;
756
+ }
757
+ function getProxyAgentCacheKey(proxyUrl, concurrency) {
758
+ return `${proxyUrl}::${concurrency}`;
600
759
  }
601
760
  function getOrCreateProxyAgent(proxyUrl, tlsOptions) {
602
- if (!cachedProxyAgents.has(proxyUrl)) {
603
- const agent = new undici.ProxyAgent({
604
- uri: proxyUrl,
605
- proxyTls: tlsOptions,
606
- requestTls: tlsOptions,
607
- headersTimeout: REQUEST_TIMEOUT_MS,
608
- keepAliveTimeout: 3e4,
609
- keepAliveMaxTimeout: 6e4,
610
- connections: getConnectionPoolSize()
611
- });
612
- cachedProxyAgents.set(proxyUrl, agent);
613
- }
614
- return cachedProxyAgents.get(proxyUrl);
761
+ const concurrency = getConnectionPoolSize();
762
+ const cacheKey = getProxyAgentCacheKey(proxyUrl, concurrency);
763
+ const existing = cachedProxyAgents.get(cacheKey);
764
+ if (existing) return existing;
765
+ const agent = new undici.ProxyAgent({
766
+ uri: proxyUrl,
767
+ proxyTls: tlsOptions,
768
+ requestTls: tlsOptions,
769
+ headersTimeout: REQUEST_TIMEOUT_MS,
770
+ keepAliveTimeout: 3e4,
771
+ keepAliveMaxTimeout: 6e4,
772
+ connections: concurrency
773
+ });
774
+ cachedProxyAgents.set(cacheKey, agent);
775
+ return agent;
615
776
  }
616
777
  async function fetchWithProxy(url, options = {}, abortSignal) {
617
778
  let finalUrl = url;
@@ -713,12 +874,14 @@ async function handleRateLimit(response) {
713
874
  const retryAfter = response.headers.get("Retry-After");
714
875
  const openaiReset = response.headers.get("x-ratelimit-reset-requests") || response.headers.get("x-ratelimit-reset-tokens");
715
876
  let waitTime = 6e4;
716
- if (openaiReset) waitTime = Math.max(Number.parseInt(openaiReset) * 1e3, 0);
717
- else if (rateLimitReset) {
877
+ if (openaiReset) {
878
+ const parsedHeaders = parseRateLimitHeaders(Object.fromEntries(response.headers.entries()));
879
+ if (parsedHeaders.resetAt !== void 0) waitTime = Math.max(parsedHeaders.resetAt - Date.now(), 0);
880
+ } else if (rateLimitReset) {
718
881
  const resetTime = /* @__PURE__ */ new Date(Number.parseInt(rateLimitReset) * 1e3);
719
882
  const now = /* @__PURE__ */ new Date();
720
883
  waitTime = Math.max(resetTime.getTime() - now.getTime() + 1e3, 0);
721
- } else if (retryAfter) waitTime = Number.parseInt(retryAfter) * 1e3;
884
+ } else if (retryAfter) waitTime = parseRetryAfter(retryAfter) ?? waitTime;
722
885
  require_logger.logger.debug(`Rate limited, waiting ${waitTime}ms before retry`);
723
886
  await sleep(waitTime);
724
887
  }
@@ -942,6 +1105,18 @@ Object.defineProperty(exports, "parseChatPrompt", {
942
1105
  return parseChatPrompt;
943
1106
  }
944
1107
  });
1108
+ Object.defineProperty(exports, "parseRateLimitHeaders", {
1109
+ enumerable: true,
1110
+ get: function() {
1111
+ return parseRateLimitHeaders;
1112
+ }
1113
+ });
1114
+ Object.defineProperty(exports, "parseRetryAfter", {
1115
+ enumerable: true,
1116
+ get: function() {
1117
+ return parseRetryAfter;
1118
+ }
1119
+ });
945
1120
  Object.defineProperty(exports, "readGlobalConfig", {
946
1121
  enumerable: true,
947
1122
  get: function() {
@@ -985,4 +1160,4 @@ Object.defineProperty(exports, "writeGlobalConfigPartial", {
985
1160
  }
986
1161
  });
987
1162
 
988
- //# sourceMappingURL=fetch-BPkYtG8K.cjs.map
1163
+ //# sourceMappingURL=fetch-CJU5ELPa.cjs.map