promptfoo 0.121.1 → 0.121.3

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 (316) hide show
  1. package/README.md +2 -0
  2. package/dist/src/{accounts-xrUGFA6n.js → accounts-B2XmGjty.js} +5 -5
  3. package/dist/src/{accounts-Bx-x3bmW.cjs → accounts-BPyfpSeU.cjs} +5 -5
  4. package/dist/src/{accounts-CMqkzrVf.js → accounts-CFLK3mnD.js} +6 -6
  5. package/dist/src/{accounts-BgNJDBE6.js → accounts-Xatc0RYb.js} +5 -5
  6. package/dist/src/{agentic-utils-BKIN5PKu.js → agentic-utils-36epdqwB.js} +3 -3
  7. package/dist/src/{cometapi-DkXrKi5z.js → agentic-utils-D8yXo5Lm.js} +4 -61
  8. package/dist/src/{cometapi-vY6aDZgo.cjs → agentic-utils-DAVsChuB.cjs} +24 -62
  9. package/dist/src/agentic-utils-DIYAAYE7.js +153 -0
  10. package/dist/src/{agents-C-dDThPK.js → agents-BBVJCIYr.js} +226 -13
  11. package/dist/src/{agents-CErsqg5U.cjs → agents-BBWxKSM0.cjs} +7 -7
  12. package/dist/src/{agents-Dy2YpZpa.js → agents-Bqgfdokm.js} +227 -14
  13. package/dist/src/{agents-B0f4HICh.cjs → agents-CAYbM7qD.cjs} +226 -13
  14. package/dist/src/{agents-CVIn-Utx.js → agents-CLQ-P15P.js} +7 -7
  15. package/dist/src/{agents-DeH4Gu94.js → agents-CgBniSlI.js} +8 -8
  16. package/dist/src/{agents-CXknwsFX.js → agents-DSSTV4bv.js} +226 -13
  17. package/dist/src/{agents-aF4-T121.js → agents-wg3ohknq.js} +7 -7
  18. package/dist/src/{aimlapi-tg0Gkcvr.cjs → aimlapi-Bv8Fmc-b.cjs} +14 -14
  19. package/dist/src/{aimlapi-BNfTBexL.js → aimlapi-BwGC1TtS.js} +13 -13
  20. package/dist/src/{aimlapi-BAGZDo5G.js → aimlapi-DaC3qZ-o.js} +14 -14
  21. package/dist/src/{aimlapi-DHRKlBEA.js → aimlapi-MgSLdvy7.js} +13 -13
  22. package/dist/src/app/assets/index-B6l9CVVb.js +439 -0
  23. package/dist/src/app/assets/index-DyZ0Ep37.css +1 -0
  24. package/dist/src/app/assets/sync-CStkzc6u.js +4 -0
  25. package/dist/src/app/assets/vendor-charts-BnDWwBlI.js +36 -0
  26. package/dist/src/app/assets/vendor-markdown-Bz7N-ca6.js +29 -0
  27. package/dist/src/app/index.html +4 -4
  28. package/dist/src/{audio-tf_NBjlC.js → audio-Bn44pQxv.js} +4 -4
  29. package/dist/src/{audio-CHQ4r-RV.js → audio-DDA5WHdx.js} +4 -4
  30. package/dist/src/{audio-BWeaWovU.cjs → audio-DVFjQ67_.cjs} +4 -4
  31. package/dist/src/{audio-BRODU0UK.js → audio-DjU9GswO.js} +5 -5
  32. package/dist/src/{base-DBtwl2FR.cjs → base-BboXIF_0.cjs} +3 -3
  33. package/dist/src/{base-B4QJRyFS.js → base-CKjwebIH.js} +3 -3
  34. package/dist/src/{base-B0tcrnq_.js → base-CqzQ4K8j.js} +3 -3
  35. package/dist/src/{base-fEDN28WM.js → base-Cz2ZC_iA.js} +3 -3
  36. package/dist/src/{blobs-BAU-dXan.js → blobs-B1JriOyi.js} +3 -3
  37. package/dist/src/{blobs-qTYm-1PY.js → blobs-BUWmKWzo.js} +3 -3
  38. package/dist/src/{blobs-DvS-O6be.cjs → blobs-C6j0bvFz.cjs} +3 -3
  39. package/dist/src/{blobs-Bpg5rH6i.js → blobs-DXTl6J3H.js} +3 -3
  40. package/dist/src/{cache-COish3-W.cjs → cache-C5yFZ4gC.cjs} +75 -58
  41. package/dist/src/{cache-8XhNqPKW.js → cache-CaT5tPgo.js} +75 -58
  42. package/dist/src/cache-CyCanoMu.js +6 -0
  43. package/dist/src/{cache-CG0SlR1d.js → cache-DSqR6ezl.js} +75 -58
  44. package/dist/src/cache-Df_QFDNu.cjs +5 -0
  45. package/dist/src/{cache-D3eqDYGU.js → cache-HP0NP4k3.js} +75 -58
  46. package/dist/src/{chat-DHMH-N64.js → chat-B-52XYI1.js} +12 -12
  47. package/dist/src/{chat-BKm79wib.js → chat-B0iaWhoh.js} +16 -14
  48. package/dist/src/{chat-DxysjBvt.js → chat-BE0qTA8e.js} +13 -13
  49. package/dist/src/{chat-CRWNNq73.js → chat-BEwdgGEg.js} +16 -14
  50. package/dist/src/{chat-2K608PeQ.cjs → chat-BtIKkLKx.cjs} +13 -13
  51. package/dist/src/{chat-DaqekjFr.cjs → chat-CM8qWR3_.cjs} +17 -15
  52. package/dist/src/{chat-CM_kyI8B.js → chat-DK1U-eZ-.js} +12 -12
  53. package/dist/src/{chat-CznLWr_D.js → chat-pxmiVpWe.js} +16 -14
  54. package/dist/src/{chatkit-65VXf5SR.js → chatkit-BYGQlHlV.js} +4 -4
  55. package/dist/src/{chatkit-DKyPi1Gs.cjs → chatkit-Cx174XI3.cjs} +4 -4
  56. package/dist/src/{chatkit-BxFvW8KY.js → chatkit-_8eJqKcD.js} +4 -4
  57. package/dist/src/{chatkit-Be-Q-a9F.js → chatkit-a2D6mY6s.js} +4 -4
  58. package/dist/src/{claude-agent-sdk-CJH22shf.cjs → claude-agent-sdk-8ddRp1L2.cjs} +35 -17
  59. package/dist/src/{claude-agent-sdk-Dy5lT-Tx.js → claude-agent-sdk-Bq5EArsX.js} +33 -15
  60. package/dist/src/{claude-agent-sdk-BLTu0WBO.js → claude-agent-sdk-CMjh4LFH.js} +33 -15
  61. package/dist/src/{claude-agent-sdk-D6_k9FKA.js → claude-agent-sdk-HgbFioFw.js} +33 -15
  62. package/dist/src/cloud-DE3t1-ZI.js +4 -0
  63. package/dist/src/{cloud-Bc9526yV.js → cloud-z8KZpUoa.js} +3 -3
  64. package/dist/src/{cloudflare-ai-CWWJCRim.js → cloudflare-ai-BGyXlpXJ.js} +13 -13
  65. package/dist/src/{cloudflare-ai-C9r2sRhw.js → cloudflare-ai-Bbp26N0L.js} +13 -13
  66. package/dist/src/{cloudflare-ai-ClWSdor4.cjs → cloudflare-ai-C62x6MQG.cjs} +14 -14
  67. package/dist/src/{cloudflare-ai-ICsOuD-z.js → cloudflare-ai-DdKP9TKT.js} +14 -14
  68. package/dist/src/{cloudflare-gateway-D6xFc5pa.js → cloudflare-gateway-BwAaUgeW.js} +14 -14
  69. package/dist/src/{cloudflare-gateway-D6O7AlYb.js → cloudflare-gateway-D-e9i1Sn.js} +15 -15
  70. package/dist/src/{cloudflare-gateway-pXGHxJ47.js → cloudflare-gateway-DXhtXDRb.js} +15 -163
  71. package/dist/src/{cloudflare-gateway-C2_-KG5o.cjs → cloudflare-gateway-Dx36ftqF.cjs} +15 -15
  72. package/dist/src/{codex-sdk-DUwKWezN.js → codex-sdk-BQEw16R_.js} +180 -11
  73. package/dist/src/{codex-sdk-C6UMlxwV.js → codex-sdk-C_07GuVS.js} +180 -11
  74. package/dist/src/{codex-sdk-GGAw0qbD.js → codex-sdk-DE5G18dx.js} +180 -11
  75. package/dist/src/{codex-sdk-fAO0c3yA.cjs → codex-sdk-ZLKfDjqP.cjs} +181 -12
  76. package/dist/src/cometapi-BDyV-NNm.js +62 -0
  77. package/dist/src/cometapi-C3hOlM7-.cjs +62 -0
  78. package/dist/src/{cometapi-Bbjp5V4x.js → cometapi-hhL4TAh3.js} +14 -14
  79. package/dist/src/{cometapi-BasUi7-_.js → cometapi-sp7sJpBD.js} +15 -15
  80. package/dist/src/{completion-C_P3ypkJ.js → completion-BCimtq-h.js} +6 -6
  81. package/dist/src/{completion-6Mx_iXxK.js → completion-DCjv7RZ3.js} +6 -6
  82. package/dist/src/{completion-CDOouNzq.cjs → completion-DlXUhj5c.cjs} +6 -6
  83. package/dist/src/{completion-C5rtR_9P.js → completion-DoYy49ti.js} +6 -6
  84. package/dist/src/{createHash-CfZSc0b4.cjs → createHash-BYwImsYv.cjs} +2 -2
  85. package/dist/src/{docker-BwsKwxFs.cjs → docker-Cqj2-QVi.cjs} +14 -14
  86. package/dist/src/{docker-CZnqU1XV.js → docker-CxCkwMzc.js} +13 -13
  87. package/dist/src/{docker-DzxyDPIj.js → docker-DpguQj-w.js} +14 -14
  88. package/dist/src/{docker-5KcG-_86.js → docker-FeBni2dw.js} +13 -13
  89. package/dist/src/{esm-C03C-mv3.js → esm-7UIl0pPM.js} +2 -2
  90. package/dist/src/{esm-Cd1AjG1D.js → esm-CKWP3u_P.js} +3 -3
  91. package/dist/src/{esm-CnNt7sI4.cjs → esm-CipptfDu.cjs} +2 -2
  92. package/dist/src/{esm-CaIwzWR5.js → esm-SUNIX1x3.js} +3 -3
  93. package/dist/src/eval-7aEqoMs3.js +15 -0
  94. package/dist/src/{eval-DmFyWU7i.js → eval-BTqTn7lb.js} +10 -10
  95. package/dist/src/{evalResult-CDQiuUuf.js → evalResult-BkIhRdTe.js} +7 -7
  96. package/dist/src/evalResult-CYNHkk5A.js +12 -0
  97. package/dist/src/evalResult-CuvJeNiM.js +10 -0
  98. package/dist/src/{evalResult-CTG2AHOS.js → evalResult-DUDShQrm.js} +7 -7
  99. package/dist/src/{evalResult-Dap2CekP.cjs → evalResult-DpARzUCb.cjs} +7 -7
  100. package/dist/src/evalResult-tGdilrWt.cjs +10 -0
  101. package/dist/src/evaluator-BBUqRhz1.js +36 -0
  102. package/dist/src/{evaluator-DPFRbFIL.js → evaluator-BcvOGaam.js} +833 -79
  103. package/dist/src/{extractor-YMU_Gvt8.js → extractor-C8XwivI9.js} +6 -6
  104. package/dist/src/{extractor-CFG6bcWJ.js → extractor-CAZ2G3Kh.js} +6 -6
  105. package/dist/src/{extractor-DX36oYEv.cjs → extractor-DG3sSfXE.cjs} +6 -6
  106. package/dist/src/{extractor-M67RUtg6.js → extractor-D_wd8jxt.js} +6 -6
  107. package/dist/src/{fetch-4M3YRaqL.js → fetch-BiYv2BZc.js} +3 -3
  108. package/dist/src/{fetch-BxUk8odA.cjs → fetch-BnR9wSnm.cjs} +3 -3
  109. package/dist/src/{fetch-60Gzydls.js → fetch-CVAtKnI3.js} +3 -3
  110. package/dist/src/{fetch-BMv0O527.js → fetch-DoVRJZhJ.js} +4 -4
  111. package/dist/src/fetch-UWU706qb.js +5 -0
  112. package/dist/src/{genaiTracer-DN4dQywX.cjs → genaiTracer-BfxrvSUb.cjs} +2 -2
  113. package/dist/src/{graders-DOXycdlG.cjs → graders-BElhu9ZY.cjs} +126 -55
  114. package/dist/src/{graders-R9rYUM0d.js → graders-BXAJ0sbS.js} +120 -55
  115. package/dist/src/graders-BxfEguVY.js +32 -0
  116. package/dist/src/graders-CzVMbEnv.js +34 -0
  117. package/dist/src/{graders-CpdqD9PI.js → graders-DG7mhg-b.js} +120 -55
  118. package/dist/src/graders-DjCXfj0l.cjs +32 -0
  119. package/dist/src/{graders-CHO8EPM4.js → graders-RjHF8VfG.js} +120 -55
  120. package/dist/src/graders-kHzIWOKu.js +32 -0
  121. package/dist/src/{image-DTedmQPg.cjs → image--F58eEIn.cjs} +6 -6
  122. package/dist/src/{image-DJEvKveK.js → image-6WQXK8m8.js} +4 -4
  123. package/dist/src/{image-pAX56tPG.js → image-B8b6f36E.js} +6 -6
  124. package/dist/src/{image-BmEZqVmk.js → image-CoxZp9PZ.js} +6 -6
  125. package/dist/src/{image-gvmivTEe.js → image-DO0RYnjH.js} +5 -5
  126. package/dist/src/{image-CBBVXWuT.js → image-PoF6DN3x.js} +6 -6
  127. package/dist/src/{image-CDLQOcqT.cjs → image-fza3zuKs.cjs} +4 -4
  128. package/dist/src/{image-tL5hIOFh.js → image-xNbw5ph2.js} +4 -4
  129. package/dist/src/index.cjs +863 -110
  130. package/dist/src/index.d.cts +833 -60
  131. package/dist/src/index.d.ts +833 -60
  132. package/dist/src/index.js +860 -108
  133. package/dist/src/{interactiveCheck-BgLZUIt3.js → interactiveCheck-BnMYOjMu.js} +2 -2
  134. package/dist/src/{knowledgeBase-CoU-UQBg.js → knowledgeBase-Bi7CmDbx.js} +7 -7
  135. package/dist/src/{knowledgeBase-CLJybhnF.js → knowledgeBase-Ce3ofVan.js} +8 -8
  136. package/dist/src/{knowledgeBase-DjWPVqSb.js → knowledgeBase-DFRXPZl_.js} +7 -7
  137. package/dist/src/{knowledgeBase-wkxuRFhA.cjs → knowledgeBase-DqrLX8fy.cjs} +7 -7
  138. package/dist/src/{litellm-B9Hysuri.js → litellm-Bo2gQXpo.js} +16 -15
  139. package/dist/src/{litellm-ePxtr9F1.js → litellm-CKiAxnoM.js} +15 -14
  140. package/dist/src/{litellm-NYpQ8RQu.cjs → litellm-CnHI69aj.cjs} +16 -15
  141. package/dist/src/{litellm-CTfa0hqi.js → litellm-Tc294Jhj.js} +15 -14
  142. package/dist/src/{logger-KkObSCzq.js → logger-BcJBzSSA.js} +10 -14
  143. package/dist/src/{logger-DLcq4dWf.js → logger-BnkjG2jt.js} +10 -14
  144. package/dist/src/{logger-Cp1GPUjj.cjs → logger-D5iKBpu_.cjs} +27 -13
  145. package/dist/src/{logger-CT3IKMKA.js → logger-DO8_zM18.js} +10 -14
  146. package/dist/src/{luma-ray-BW9IRGIc.js → luma-ray-0ehMPt5N.js} +10 -10
  147. package/dist/src/{luma-ray-BE2mOt6N.js → luma-ray-C9q8rdQe.js} +9 -9
  148. package/dist/src/{luma-ray-Cm1KZBhs.js → luma-ray-DP0QA9qn.js} +9 -9
  149. package/dist/src/{luma-ray-B0GGNRc1.cjs → luma-ray-m9Ku2meV.cjs} +9 -9
  150. package/dist/src/main.js +69 -71
  151. package/dist/src/{messages-1x9atZmP.js → messages-DJNo37Ko.js} +14 -9
  152. package/dist/src/{messages-BLbWdsyt.js → messages-Dy9QecMs.js} +14 -9
  153. package/dist/src/{messages-1JrJs91T.cjs → messages-HJsyEh4o.cjs} +15 -10
  154. package/dist/src/{messages-D8EA0oDc.js → messages-biC_ex-p.js} +14 -9
  155. package/dist/src/{modelslab-C1OLRmVX.js → modelslab-B5J-ZM5c.js} +9 -9
  156. package/dist/src/{modelslab-CqXBy3U8.js → modelslab-BI458moT.js} +10 -10
  157. package/dist/src/{modelslab-X5-4LroM.js → modelslab-BTOT8FUO.js} +9 -9
  158. package/dist/src/{modelslab-DcOSFwKh.cjs → modelslab-IQbNg-r7.cjs} +9 -9
  159. package/dist/src/{nova-reel-DihqLeol.js → nova-reel-BZ9y-Y5s.js} +9 -9
  160. package/dist/src/{nova-reel-D9xfaMBs.cjs → nova-reel-CE5etkv9.cjs} +9 -9
  161. package/dist/src/{nova-reel-D2ZkOSyr.js → nova-reel-DEeQlnOJ.js} +10 -10
  162. package/dist/src/{nova-reel-BgS1ZWuK.js → nova-reel-Xw1SXLpg.js} +9 -9
  163. package/dist/src/{nova-sonic-Q3BOJeig.js → nova-sonic-DWswpN1E.js} +7 -7
  164. package/dist/src/{nova-sonic-DezhVUYT.js → nova-sonic-DXTLpi-r.js} +6 -6
  165. package/dist/src/{nova-sonic-DVu3mMIy.cjs → nova-sonic-N0yCm0vb.cjs} +6 -6
  166. package/dist/src/{nova-sonic-P-CdUMlV.js → nova-sonic-Ogqf-csn.js} +6 -6
  167. package/dist/src/{openai-DhbB7eWK.js → openai-BMcwgD5C.js} +2 -2
  168. package/dist/src/{openai-j-sE2O7r.js → openai-BcB5KlTk.js} +2 -2
  169. package/dist/src/{openai-Cuif0GEt.cjs → openai-CoxGAQwn.cjs} +2 -2
  170. package/dist/src/{openai-DElQ-fPX.js → openai-D6wITiVn.js} +2 -2
  171. package/dist/src/{openclaw-Bv1DINsX.js → openclaw-0Sv7AK3O.js} +172 -109
  172. package/dist/src/{openclaw-DAfWQn-o.cjs → openclaw-CXxbKgDH.cjs} +174 -110
  173. package/dist/src/{openclaw-BiSZPL7J.js → openclaw-D1FSCps-.js} +172 -109
  174. package/dist/src/{openclaw-D1D_ej1z.js → openclaw-D2ENvu7a.js} +173 -110
  175. package/dist/src/{opencode-sdk-D95s6SnR.js → opencode-sdk-C71Z0ehR.js} +13 -13
  176. package/dist/src/{opencode-sdk-DxUPkLT7.js → opencode-sdk-CHCs7dEb.js} +12 -12
  177. package/dist/src/{opencode-sdk-C7m-wRfI.js → opencode-sdk-DDxj4QqH.js} +12 -12
  178. package/dist/src/{opencode-sdk-CfaLN8PY.cjs → opencode-sdk-WWJhnbKr.cjs} +16 -16
  179. package/dist/src/{otlpReceiver-g3ByGaXs.js → otlpReceiver-C9KlUtxh.js} +6 -6
  180. package/dist/src/{otlpReceiver--AIRW_S4.js → otlpReceiver-CZL48YfC.js} +6 -6
  181. package/dist/src/{otlpReceiver-Bn5wGB1v.js → otlpReceiver-CavGAA6k.js} +6 -6
  182. package/dist/src/{otlpReceiver-Diec4cln.cjs → otlpReceiver-DHKqJlsz.cjs} +6 -6
  183. package/dist/src/{providerRegistry-B0RUOLI_.js → providerRegistry-B9lh-_tx.js} +2 -2
  184. package/dist/src/{providerRegistry-Civky8Ar.cjs → providerRegistry-BTDgfV5h.cjs} +2 -2
  185. package/dist/src/{providerRegistry-CD8MEar9.js → providerRegistry-BkzVH5Ba.js} +2 -2
  186. package/dist/src/{providerRegistry-DM8rZYol.js → providerRegistry-CUWki5mQ.js} +2 -2
  187. package/dist/src/providers-BSLEaIQG.js +32 -0
  188. package/dist/src/{providers-CFu-TZl-.cjs → providers-CScd1wN6.cjs} +733 -464
  189. package/dist/src/{providers-CFLy1_ji.js → providers-Ch6Mr0gn.js} +795 -526
  190. package/dist/src/{providers-BKRJTjBz.js → providers-Cn73d5sr.js} +795 -526
  191. package/dist/src/providers-D-FnDg8k.cjs +31 -0
  192. package/dist/src/providers-DEYiFVAo.js +30 -0
  193. package/dist/src/{providers-B3HvufyI.js → providers-DvddrgxL.js} +795 -526
  194. package/dist/src/providers-sS2WI8YD.js +30 -0
  195. package/dist/src/{pythonUtils-D6fwaDSg.js → pythonUtils-Bzwbgpbg.js} +3 -3
  196. package/dist/src/{pythonUtils-D5nxkQ0P.js → pythonUtils-Cpo0Ez1p.js} +3 -3
  197. package/dist/src/{pythonUtils-CTU3Y3lw.cjs → pythonUtils-dAVigVK-.cjs} +3 -3
  198. package/dist/src/{pythonUtils-C3py6GC1.js → pythonUtils-wIqk7zAf.js} +3 -3
  199. package/dist/src/{quiverai-CI6gYJVI.js → quiverai-BeofbLVc.js} +4 -4
  200. package/dist/src/{quiverai-MHSxbmmZ.js → quiverai-CCQn73lq.js} +5 -5
  201. package/dist/src/{quiverai-CLkWkyZc.cjs → quiverai-CcUhPIBg.cjs} +4 -4
  202. package/dist/src/{quiverai-C2jVwbH1.js → quiverai-DVSEqJiq.js} +4 -4
  203. package/dist/src/{render-Drod8m7K.js → render-BHl6QVq9.js} +3 -3
  204. package/dist/src/{responses-CGw0DCzh.js → responses-BKP_WYis.js} +16 -12
  205. package/dist/src/{responses-BKqJmhhc.js → responses-CQb1Tj69.js} +16 -12
  206. package/dist/src/{responses-jxdehPkC.js → responses-CgNyTPsY.js} +16 -12
  207. package/dist/src/{responses-tD4Bd4dc.cjs → responses-mo0KQDbu.cjs} +16 -12
  208. package/dist/src/rubyUtils-B1HXG4ej.cjs +4 -0
  209. package/dist/src/{rubyUtils-DhCAlxZr.cjs → rubyUtils-CGeUtCfW.cjs} +3 -3
  210. package/dist/src/{rubyUtils-Boc4HZzX.js → rubyUtils-CiVfln3g.js} +3 -3
  211. package/dist/src/{rubyUtils-BcuGX77l.js → rubyUtils-DECSbsfY.js} +3 -3
  212. package/dist/src/{rubyUtils-BUVePouc.js → rubyUtils-PgU-gHmx.js} +3 -3
  213. package/dist/src/rubyUtils-Rt6pKA96.js +5 -0
  214. package/dist/src/{sagemaker-BK4Zb993.js → sagemaker-CVv8W7so.js} +17 -17
  215. package/dist/src/{sagemaker-D2Q1c-sD.js → sagemaker-CqeASYE5.js} +17 -17
  216. package/dist/src/{sagemaker-BfiWTmvn.js → sagemaker-MUbD5V3v.js} +18 -18
  217. package/dist/src/{sagemaker-CcQHM1jV.cjs → sagemaker-jiw1wQa-.cjs} +17 -17
  218. package/dist/src/{scanner-J8CA3LsV.js → scanner-DVDeUz1r.js} +10 -10
  219. package/dist/src/server/index.js +864 -112
  220. package/dist/src/server-B0Xh1Gx-.js +7 -0
  221. package/dist/src/{server-B0PPuDw-.cjs → server-BtoCXeXI.cjs} +4 -4
  222. package/dist/src/{server-BC7XJFgr.js → server-CP9qKM40.js} +4 -4
  223. package/dist/src/{server-OAs3nBRT.js → server-Cns05F1j.js} +5 -5
  224. package/dist/src/server-DJTKu9IR.cjs +5 -0
  225. package/dist/src/{server-DbFphssR.js → server-DZ9MtCn0.js} +6 -6
  226. package/dist/src/{signal-BOTbd53Z.js → signal-C3ZTsUgi.js} +3 -3
  227. package/dist/src/{slack-DXMKtA-f.js → slack-2sdpGzbt.js} +2 -2
  228. package/dist/src/{slack-BmVAVGaK.cjs → slack-94iG3T0s.cjs} +2 -2
  229. package/dist/src/{slack-DCUPTzS2.js → slack-BR0HtO3K.js} +2 -2
  230. package/dist/src/{slack-DOdy_kyv.js → slack-DCEV-vWP.js} +2 -2
  231. package/dist/src/store-C5u6MgC8.js +6 -0
  232. package/dist/src/{store-BSc-TF2w.cjs → store-CLyU7AtI.cjs} +17 -5
  233. package/dist/src/store-CNHk-De4.cjs +5 -0
  234. package/dist/src/{store-DQLEjuEO.js → store-Cj258DgL.js} +17 -5
  235. package/dist/src/{store-D1tv90v3.js → store-P8OKm19S.js} +17 -5
  236. package/dist/src/{store-Ub2vaGJ1.js → store-VB0GP46K.js} +17 -5
  237. package/dist/src/{tables-xKANLRBD.js → tables-BEIFz2tM.js} +3 -3
  238. package/dist/src/{tables-C7K-XKWp.cjs → tables-BdZQEpRz.cjs} +3 -3
  239. package/dist/src/{tables-D36WTqKX.js → tables-DmzvLbeZ.js} +3 -3
  240. package/dist/src/{tables-5EvT_Bwn.js → tables-kC7R5kiK.js} +3 -3
  241. package/dist/src/{telemetry-C2YDkUQH.js → telemetry-BnH5VJAU.js} +4 -4
  242. package/dist/src/{telemetry-C15ziL8u.js → telemetry-BugWqKiu.js} +4 -4
  243. package/dist/src/{telemetry-DMb2Mpfm.js → telemetry-DPXLd7UE.js} +4 -4
  244. package/dist/src/telemetry-Yig0Tino.js +7 -0
  245. package/dist/src/telemetry-p8Pwqm1i.cjs +5 -0
  246. package/dist/src/{telemetry-CbrnxHp_.cjs → telemetry-re627Lre.cjs} +4 -4
  247. package/dist/src/{transcription-CL78qbOU.cjs → transcription-BvtsrzRG.cjs} +13 -13
  248. package/dist/src/{transcription-DAtxHhAM.js → transcription-CaMivnjG.js} +13 -13
  249. package/dist/src/{transcription-QHh3AH6Z.js → transcription-DOMMTu01.js} +14 -14
  250. package/dist/src/{transcription-LNZTNUUL.js → transcription-Hb3VnC4M.js} +13 -13
  251. package/dist/src/{transform-DOcQeLld.cjs → transform-0BwoBsvO.cjs} +19 -5
  252. package/dist/src/{transform-DGxXocjk.js → transform-B2-jIv68.js} +8 -6
  253. package/dist/src/{transform-DECvGmzp.js → transform-BqPkNPYm.js} +4 -4
  254. package/dist/src/{transform-aa6tmVpZ.js → transform-BzK09Q_9.js} +4 -4
  255. package/dist/src/transform-ChNIpHz7.js +6 -0
  256. package/dist/src/{transform-Cgi24fJ7.js → transform-DrleutM3.js} +8 -6
  257. package/dist/src/{transform-DGLazrMm.js → transform-DyDAwEpE.js} +8 -6
  258. package/dist/src/transform-PtQ6rAE3.cjs +5 -0
  259. package/dist/src/{transform-CzK1Q0zl.cjs → transform-ZrG2dvlo.cjs} +4 -4
  260. package/dist/src/{transform-DilY9wbS.js → transform-ljLYHEPh.js} +4 -4
  261. package/dist/src/{transformersAvailability-CEVM2GNQ.js → transformersAvailability-BGkzavwb.js} +1 -1
  262. package/dist/src/{transformersAvailability-CwayUSlh.cjs → transformersAvailability-DKoRtQLy.cjs} +1 -1
  263. package/dist/src/{types-CH3Ge2sE.js → types-CIhFeUC4.js} +45 -11
  264. package/dist/src/{types-CN_TZ2GJ.js → types-Cd3ygw8W.js} +45 -11
  265. package/dist/src/{types-LJ0r3wbR.cjs → types-D8cGDZbL.cjs} +46 -12
  266. package/dist/src/{types-CLKiCBW3.js → types-q8GXGF65.js} +45 -11
  267. package/dist/src/{util-CchiqXh_.cjs → util--9u9UVCt.cjs} +3 -3
  268. package/dist/src/{util-5cB-L7U3.js → util-BLvy9qfE.js} +7 -11
  269. package/dist/src/{util-YT5HPZaS.js → util-Bm3E9jpK.js} +7 -11
  270. package/dist/src/{util-6-GqIvzS.js → util-BtoGs5Cb.js} +18 -4
  271. package/dist/src/{util-Db0a0AFH.cjs → util-CFj4YKIn.cjs} +18 -4
  272. package/dist/src/{util-Dlz_Wvgm.js → util-CMMkIxfU.js} +7 -11
  273. package/dist/src/{util-Betm42rL.js → util-CgDCK4KI.js} +18 -4
  274. package/dist/src/{util-Yz-1aEhW.cjs → util-CuLo2pMR.cjs} +7 -11
  275. package/dist/src/{util-C-PPYSMq.js → util-DM2rTn_6.js} +18 -4
  276. package/dist/src/{util-B7T3SiBS.js → util-DMFeUvLz.js} +3 -3
  277. package/dist/src/{util-ZZH-3QZz.js → util-DbVG-yZU.js} +3 -3
  278. package/dist/src/{util-DaWTWKBK.js → util-vNmDL5DT.js} +3 -3
  279. package/dist/src/{utils-XiOAgly5.js → utils-CFxO9KGo.js} +2 -2
  280. package/dist/src/{utils-f2-Moju7.js → utils-DEuL4VNB.js} +2 -2
  281. package/dist/src/{utils-Cz9qXqII.cjs → utils-DKw8mrgr.cjs} +3 -3
  282. package/dist/src/{utils-dLokC-eR.js → utils-DOjD4dTC.js} +2 -2
  283. package/dist/tsconfig.tsbuildinfo +1 -1
  284. package/package.json +38 -38
  285. package/dist/src/app/assets/index-BFCZg7hQ.js +0 -439
  286. package/dist/src/app/assets/index-NCn4eVBv.css +0 -1
  287. package/dist/src/app/assets/sync-9qqYcY-B.js +0 -4
  288. package/dist/src/app/assets/vendor-charts-CCl15Imd.js +0 -36
  289. package/dist/src/app/assets/vendor-markdown-0tekx3KX.js +0 -29
  290. package/dist/src/cache-Bbn1Nyrd.cjs +0 -5
  291. package/dist/src/cache-BwsMSda7.js +0 -6
  292. package/dist/src/cloud-DmE0EwsY.js +0 -4
  293. package/dist/src/eval-17JizQIv.js +0 -15
  294. package/dist/src/evalResult-Cqj8pldJ.js +0 -12
  295. package/dist/src/evalResult-DvcJAWJU.cjs +0 -10
  296. package/dist/src/evalResult-Hftn-S_i.js +0 -10
  297. package/dist/src/evaluator-B2CFNt-P.js +0 -36
  298. package/dist/src/fetch-KV5kNASw.js +0 -5
  299. package/dist/src/graders-Bu0H9nXi.js +0 -32
  300. package/dist/src/graders-Cfhkvx-e.js +0 -34
  301. package/dist/src/graders-DClJVpGP.cjs +0 -32
  302. package/dist/src/graders-DcnJsrMO.js +0 -32
  303. package/dist/src/providers-C1rOSHiR.js +0 -32
  304. package/dist/src/providers-CxmDwEFf.cjs +0 -31
  305. package/dist/src/providers-Dodakqr0.js +0 -30
  306. package/dist/src/providers-GIQ2TcsA.js +0 -30
  307. package/dist/src/rubyUtils-BUHu6PhO.js +0 -5
  308. package/dist/src/rubyUtils-CP42kMvq.cjs +0 -4
  309. package/dist/src/server-B1vi21hA.js +0 -7
  310. package/dist/src/server-Cm9Kai_h.cjs +0 -5
  311. package/dist/src/store-BNmZ1KAz.cjs +0 -5
  312. package/dist/src/store-BltJg2cd.js +0 -6
  313. package/dist/src/telemetry-5BCRNBbe.cjs +0 -5
  314. package/dist/src/telemetry-D4W5hboe.js +0 -7
  315. package/dist/src/transform-DTGDnAzW.js +0 -6
  316. package/dist/src/transform-m3qNw4KP.cjs +0 -5
@@ -1,18 +1,18 @@
1
- import { b as getEnvString, i as logger } from "./logger-CT3IKMKA.js";
1
+ import { C as getEnvString, a as logger } from "./logger-DO8_zM18.js";
2
2
  import { t as invariant } from "./invariant-Ddh24eXh.js";
3
- import "./esm-Cd1AjG1D.js";
4
- import "./pythonUtils-D5nxkQ0P.js";
5
- import "./types-CLKiCBW3.js";
6
- import "./util-Dlz_Wvgm.js";
7
- import "./fetch-60Gzydls.js";
8
- import "./cache-8XhNqPKW.js";
3
+ import "./esm-SUNIX1x3.js";
4
+ import "./pythonUtils-Cpo0Ez1p.js";
5
+ import "./types-q8GXGF65.js";
6
+ import "./util-CMMkIxfU.js";
7
+ import "./fetch-CVAtKnI3.js";
8
+ import "./cache-CaT5tPgo.js";
9
9
  import "./genaiTracer-D3fD9dNV.js";
10
- import { t as OpenAiChatCompletionProvider } from "./chat-CznLWr_D.js";
11
- import "./transform-DGLazrMm.js";
12
- import { t as AnthropicMessagesProvider } from "./messages-BLbWdsyt.js";
13
- import "./util-DaWTWKBK.js";
14
- import "./openai-DElQ-fPX.js";
15
- import "./util-Betm42rL.js";
10
+ import { t as OpenAiChatCompletionProvider } from "./chat-pxmiVpWe.js";
11
+ import "./transform-DyDAwEpE.js";
12
+ import { t as AnthropicMessagesProvider } from "./messages-Dy9QecMs.js";
13
+ import "./util-vNmDL5DT.js";
14
+ import "./openai-BcB5KlTk.js";
15
+ import "./util-CgDCK4KI.js";
16
16
  //#region src/providers/cloudflare-gateway.ts
17
17
  /**
18
18
  * Cloudflare AI Gateway Provider
@@ -280,4 +280,4 @@ function createCloudflareGatewayProvider(providerPath, options = {}) {
280
280
  //#endregion
281
281
  export { createCloudflareGatewayProvider };
282
282
 
283
- //# sourceMappingURL=cloudflare-gateway-D6xFc5pa.js.map
283
+ //# sourceMappingURL=cloudflare-gateway-BwAaUgeW.js.map
@@ -1,20 +1,20 @@
1
1
  #!/usr/bin/env node
2
- import { C as getEnvString, o as logger } from "./logger-KkObSCzq.js";
3
- import "./fetch-BMv0O527.js";
2
+ import { E as getEnvString, s as logger } from "./logger-BcJBzSSA.js";
3
+ import "./fetch-DoVRJZhJ.js";
4
4
  import { t as invariant } from "./invariant-BtWWVVhl.js";
5
- import "./cloud-Bc9526yV.js";
6
- import "./types-CH3Ge2sE.js";
7
- import "./cache-CG0SlR1d.js";
8
- import "./util-YT5HPZaS.js";
9
- import "./esm-C03C-mv3.js";
10
- import "./pythonUtils-C3py6GC1.js";
5
+ import "./cloud-z8KZpUoa.js";
6
+ import "./types-CIhFeUC4.js";
7
+ import "./cache-DSqR6ezl.js";
8
+ import "./util-Bm3E9jpK.js";
9
+ import "./esm-7UIl0pPM.js";
10
+ import "./pythonUtils-wIqk7zAf.js";
11
11
  import "./genaiTracer-C1rxGO8Q.js";
12
- import { t as OpenAiChatCompletionProvider } from "./chat-CRWNNq73.js";
13
- import "./transform-Cgi24fJ7.js";
14
- import { t as AnthropicMessagesProvider } from "./messages-1x9atZmP.js";
15
- import "./util-B7T3SiBS.js";
16
- import "./openai-DhbB7eWK.js";
17
- import "./util-C-PPYSMq.js";
12
+ import { t as OpenAiChatCompletionProvider } from "./chat-BEwdgGEg.js";
13
+ import "./transform-DrleutM3.js";
14
+ import { t as AnthropicMessagesProvider } from "./messages-DJNo37Ko.js";
15
+ import "./util-DMFeUvLz.js";
16
+ import "./openai-BMcwgD5C.js";
17
+ import "./util-DM2rTn_6.js";
18
18
  //#region src/providers/cloudflare-gateway.ts
19
19
  /**
20
20
  * Cloudflare AI Gateway Provider
@@ -282,4 +282,4 @@ function createCloudflareGatewayProvider(providerPath, options = {}) {
282
282
  //#endregion
283
283
  export { createCloudflareGatewayProvider };
284
284
 
285
- //# sourceMappingURL=cloudflare-gateway-D6O7AlYb.js.map
285
+ //# sourceMappingURL=cloudflare-gateway-D-e9i1Sn.js.map
@@ -1,166 +1,18 @@
1
- import { b as getEnvString, i as logger } from "./logger-DLcq4dWf.js";
2
- import "./fetch-4M3YRaqL.js";
1
+ import { C as getEnvString, a as logger } from "./logger-BnkjG2jt.js";
2
+ import "./fetch-BiYv2BZc.js";
3
3
  import { t as invariant } from "./invariant-vgHWClmd.js";
4
- import "./esm-CaIwzWR5.js";
5
- import "./types-CN_TZ2GJ.js";
6
- import { a as isCacheEnabled, i as getCache } from "./cache-D3eqDYGU.js";
4
+ import "./esm-CKWP3u_P.js";
5
+ import "./types-Cd3ygw8W.js";
6
+ import "./cache-HP0NP4k3.js";
7
7
  import "./genaiTracer-70Z8BIuV.js";
8
- import "./pythonUtils-D6fwaDSg.js";
9
- import "./util-5cB-L7U3.js";
10
- import { t as OpenAiChatCompletionProvider } from "./chat-BKm79wib.js";
11
- import "./transform-DGxXocjk.js";
12
- import { t as AnthropicMessagesProvider } from "./messages-D8EA0oDc.js";
13
- import "./util-ZZH-3QZz.js";
14
- import "./openai-j-sE2O7r.js";
15
- import "./util-6-GqIvzS.js";
16
- import fs from "fs";
17
- import path from "path";
18
- import dedent from "dedent";
19
- import crypto from "crypto";
20
- //#region src/providers/agentic-utils.ts
21
- /**
22
- * Shared utilities for agentic providers (Claude Agent SDK, OpenCode SDK, etc.)
23
- *
24
- * These utilities handle common functionality needed by coding agent providers:
25
- * - Working directory fingerprinting for cache key generation
26
- * - Response caching with fingerprint support
27
- */
28
- /**
29
- * Timeout for working directory fingerprint generation (ms)
30
- * Prevents hanging on extremely large directories
31
- */
32
- const FINGERPRINT_TIMEOUT_MS = 2e3;
33
- /**
34
- * Get a fingerprint for a working directory to use as a cache key.
35
- * Checks directory mtime and descendant file mtimes recursively.
36
- *
37
- * This allows for caching prompts that use the same working directory
38
- * when the files haven't changed.
39
- *
40
- * @param workingDir - Absolute path to the working directory
41
- * @returns SHA-256 hash fingerprint of the directory state
42
- * @throws Error if fingerprinting times out or directory is inaccessible
43
- */
44
- async function getWorkingDirFingerprint(workingDir) {
45
- const dirMtime = fs.statSync(workingDir).mtimeMs;
46
- const startTime = Date.now();
47
- const getAllFiles = (dir, files = []) => {
48
- if (Date.now() - startTime > FINGERPRINT_TIMEOUT_MS) throw new Error("Working directory fingerprint timed out");
49
- const entries = fs.readdirSync(dir, { withFileTypes: true });
50
- for (const entry of entries) {
51
- const fullPath = path.join(dir, entry.name);
52
- if (entry.isDirectory()) getAllFiles(fullPath, files);
53
- else if (entry.isFile()) files.push(fullPath);
54
- }
55
- return files;
56
- };
57
- const fingerprintData = `dir:${dirMtime};files:${getAllFiles(workingDir).map((file) => {
58
- const stat = fs.statSync(file);
59
- return `${path.relative(workingDir, file)}:${stat.mtimeMs}`;
60
- }).sort().join(",")}`;
61
- return crypto.createHash("sha256").update(fingerprintData).digest("hex");
62
- }
63
- /**
64
- * Generate a cache key from arbitrary data using SHA-256 hash
65
- *
66
- * @param prefix - Cache key prefix (provider identifier)
67
- * @param data - Data to hash for the cache key
68
- * @returns Prefixed SHA-256 hash cache key
69
- */
70
- function generateCacheKey(prefix, data) {
71
- const stringified = JSON.stringify(data);
72
- return `${prefix}:${crypto.createHash("sha256").update(stringified).digest("hex")}`;
73
- }
74
- /**
75
- * Initialize cache and check for cached response
76
- *
77
- * This handles the common caching pattern used by agentic providers:
78
- * 1. Check if caching is enabled
79
- * 2. Generate working directory fingerprint if needed
80
- * 3. Generate cache key
81
- * 4. Return cache configuration for use by the provider
82
- *
83
- * @param options - Cache options including prefix and working directory
84
- * @param cacheKeyData - Data to include in the cache key
85
- * @returns Cache configuration and optional cached response
86
- */
87
- async function initializeAgenticCache(options, cacheKeyData) {
88
- if (!isCacheEnabled()) return {
89
- shouldCache: false,
90
- shouldReadCache: false,
91
- shouldWriteCache: false
92
- };
93
- if (options.mcp && !options.cacheMcp) return {
94
- shouldCache: false,
95
- shouldReadCache: false,
96
- shouldWriteCache: false
97
- };
98
- let workingDirFingerprint = null;
99
- if (options.workingDir) try {
100
- workingDirFingerprint = await getWorkingDirFingerprint(options.workingDir);
101
- } catch (error) {
102
- logger.error(dedent`Error getting working directory fingerprint for cache key - ${options.workingDir}: ${String(error)}
103
-
104
- Caching is disabled.`);
105
- return {
106
- shouldCache: false,
107
- shouldReadCache: false,
108
- shouldWriteCache: false
109
- };
110
- }
111
- const cache = await getCache();
112
- const cacheKey = generateCacheKey(options.cacheKeyPrefix, {
113
- ...cacheKeyData,
114
- workingDirFingerprint,
115
- ...options.mcp ? { mcp: options.mcp } : {}
116
- });
117
- return {
118
- shouldCache: true,
119
- shouldReadCache: !options.bustCache,
120
- shouldWriteCache: true,
121
- cache,
122
- cacheKey,
123
- workingDirFingerprint
124
- };
125
- }
126
- /**
127
- * Try to get a cached response
128
- *
129
- * @param cacheResult - Result from initializeAgenticCache
130
- * @param debugContext - Context for debug logging (e.g., prompt preview)
131
- * @returns Cached ProviderResponse if found, undefined otherwise
132
- */
133
- async function getCachedResponse(cacheResult, debugContext) {
134
- if (!cacheResult.shouldReadCache || !cacheResult.cache || !cacheResult.cacheKey) return;
135
- try {
136
- const cachedResponse = await cacheResult.cache.get(cacheResult.cacheKey);
137
- if (cachedResponse) {
138
- logger.debug(`Returning cached response${debugContext ? ` for ${debugContext}` : ""} (cache key: ${cacheResult.cacheKey})`);
139
- return {
140
- ...JSON.parse(cachedResponse),
141
- cached: true
142
- };
143
- }
144
- } catch (error) {
145
- logger.error(`Error getting cached response: ${String(error)}`);
146
- }
147
- }
148
- /**
149
- * Cache a provider response
150
- *
151
- * @param cacheResult - Result from initializeAgenticCache
152
- * @param response - The ProviderResponse to cache
153
- * @param debugContext - Context for debug logging
154
- */
155
- async function cacheResponse(cacheResult, response, debugContext) {
156
- if (!cacheResult.shouldWriteCache || !cacheResult.cache || !cacheResult.cacheKey) return;
157
- try {
158
- await cacheResult.cache.set(cacheResult.cacheKey, JSON.stringify(response));
159
- } catch (error) {
160
- logger.error(`Error caching response${debugContext ? ` for ${debugContext}` : ""}: ${String(error)}`);
161
- }
162
- }
163
- //#endregion
8
+ import "./pythonUtils-Bzwbgpbg.js";
9
+ import "./util-BLvy9qfE.js";
10
+ import { t as OpenAiChatCompletionProvider } from "./chat-B0iaWhoh.js";
11
+ import "./transform-B2-jIv68.js";
12
+ import { t as AnthropicMessagesProvider } from "./messages-biC_ex-p.js";
13
+ import "./util-DbVG-yZU.js";
14
+ import "./openai-D6wITiVn.js";
15
+ import "./util-BtoGs5Cb.js";
164
16
  //#region src/providers/cloudflare-gateway.ts
165
17
  /**
166
18
  * Cloudflare AI Gateway Provider
@@ -426,6 +278,6 @@ function createCloudflareGatewayProvider(providerPath, options = {}) {
426
278
  return new CloudflareGatewayOpenAiProvider(underlyingProvider, modelName, options);
427
279
  }
428
280
  //#endregion
429
- export { createCloudflareGatewayProvider, initializeAgenticCache as i, generateCacheKey as n, getCachedResponse as r, cacheResponse as t };
281
+ export { createCloudflareGatewayProvider };
430
282
 
431
- //# sourceMappingURL=cloudflare-gateway-pXGHxJ47.js.map
283
+ //# sourceMappingURL=cloudflare-gateway-DXhtXDRb.js.map
@@ -1,18 +1,18 @@
1
- const require_logger = require("./logger-Cp1GPUjj.cjs");
1
+ const require_logger = require("./logger-D5iKBpu_.cjs");
2
2
  const require_invariant = require("./invariant-kfQ8Bu82.cjs");
3
- require("./esm-CnNt7sI4.cjs");
4
- require("./pythonUtils-CTU3Y3lw.cjs");
5
- require("./types-LJ0r3wbR.cjs");
6
- require("./util-Yz-1aEhW.cjs");
7
- require("./fetch-BxUk8odA.cjs");
8
- require("./cache-COish3-W.cjs");
9
- require("./genaiTracer-DN4dQywX.cjs");
10
- const require_chat = require("./chat-DaqekjFr.cjs");
11
- require("./transform-DOcQeLld.cjs");
12
- const require_messages = require("./messages-1JrJs91T.cjs");
13
- require("./util-CchiqXh_.cjs");
14
- require("./openai-Cuif0GEt.cjs");
15
- require("./util-Db0a0AFH.cjs");
3
+ require("./esm-CipptfDu.cjs");
4
+ require("./pythonUtils-dAVigVK-.cjs");
5
+ require("./types-D8cGDZbL.cjs");
6
+ require("./util-CuLo2pMR.cjs");
7
+ require("./fetch-BnR9wSnm.cjs");
8
+ require("./cache-C5yFZ4gC.cjs");
9
+ require("./genaiTracer-BfxrvSUb.cjs");
10
+ const require_chat = require("./chat-CM8qWR3_.cjs");
11
+ require("./transform-0BwoBsvO.cjs");
12
+ const require_messages = require("./messages-HJsyEh4o.cjs");
13
+ require("./util--9u9UVCt.cjs");
14
+ require("./openai-CoxGAQwn.cjs");
15
+ require("./util-CFj4YKIn.cjs");
16
16
  //#region src/providers/cloudflare-gateway.ts
17
17
  /**
18
18
  * Cloudflare AI Gateway Provider
@@ -280,4 +280,4 @@ function createCloudflareGatewayProvider(providerPath, options = {}) {
280
280
  //#endregion
281
281
  exports.createCloudflareGatewayProvider = createCloudflareGatewayProvider;
282
282
 
283
- //# sourceMappingURL=cloudflare-gateway-C2_-KG5o.cjs.map
283
+ //# sourceMappingURL=cloudflare-gateway-Dx36ftqF.cjs.map
@@ -1,5 +1,5 @@
1
- import { b as getEnvString, i as logger, w as state } from "./logger-DLcq4dWf.js";
2
- import { i as resolvePackageEntryPoint, r as importModule } from "./esm-CaIwzWR5.js";
1
+ import { C as getEnvString, D as state, a as logger, c as REDACTED, l as normalizeFieldName, u as sanitizeObject } from "./logger-BnkjG2jt.js";
2
+ import { i as resolvePackageEntryPoint, r as importModule } from "./esm-CKWP3u_P.js";
3
3
  import { n as withGenAISpan, t as getTraceparent } from "./genaiTracer-70Z8BIuV.js";
4
4
  import fs from "fs";
5
5
  import path from "path";
@@ -7,12 +7,43 @@ import dedent from "dedent";
7
7
  import crypto from "crypto";
8
8
  import { SpanKind, SpanStatusCode, trace } from "@opentelemetry/api";
9
9
  //#region src/providers/openai/codex-sdk.ts
10
+ const MINIMAL_CLI_ENV_KEYS = [
11
+ "PATH",
12
+ "Path",
13
+ "HOME",
14
+ "USER",
15
+ "USERNAME",
16
+ "USERPROFILE",
17
+ "TMPDIR",
18
+ "TMP",
19
+ "TEMP",
20
+ "SHELL",
21
+ "COMSPEC",
22
+ "SystemRoot",
23
+ "PATHEXT",
24
+ "LANG",
25
+ "LC_ALL",
26
+ "TERM"
27
+ ];
28
+ function getMinimalProcessEnv() {
29
+ const env = {};
30
+ for (const key of MINIMAL_CLI_ENV_KEYS) {
31
+ const value = process.env[key];
32
+ if (typeof value === "string" && value.length > 0) env[key] = value;
33
+ }
34
+ return env;
35
+ }
10
36
  /**
11
37
  * Helper to load the OpenAI Codex SDK ESM module
12
38
  * Uses resolvePackageEntryPoint to handle ESM-only packages with restrictive exports
13
39
  */
14
40
  async function loadCodexSDK() {
15
- const codexPath = resolvePackageEntryPoint("@openai/codex-sdk", state.basePath && path.isAbsolute(state.basePath) ? state.basePath : process.cwd());
41
+ const basePaths = [state.basePath && path.isAbsolute(state.basePath) ? state.basePath : void 0, process.cwd()].filter((candidate) => Boolean(candidate));
42
+ let codexPath = null;
43
+ for (const basePath of new Set(basePaths)) {
44
+ codexPath = resolvePackageEntryPoint("@openai/codex-sdk", basePath);
45
+ if (codexPath) break;
46
+ }
16
47
  if (!codexPath) throw new Error(dedent`The @openai/codex-sdk package is required but not installed.
17
48
 
18
49
  To use the OpenAI Codex SDK provider, install it with:
@@ -163,7 +194,10 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
163
194
  }
164
195
  }
165
196
  prepareEnvironment(config, traceparent) {
166
- const env = config.cli_env ? { ...config.cli_env } : { ...process.env };
197
+ const env = {
198
+ ...config.cli_env === void 0 || config.inherit_process_env === true ? process.env : getMinimalProcessEnv(),
199
+ ...config.cli_env ?? {}
200
+ };
167
201
  const sortedEnv = {};
168
202
  for (const key of Object.keys(env).sort()) if (env[key] !== void 0) sortedEnv[key] = env[key];
169
203
  if (this.apiKey) {
@@ -192,6 +226,83 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
192
226
  } else delete sortedEnv.TRACEPARENT;
193
227
  return sortedEnv;
194
228
  }
229
+ getSkillRootPrefixes(env) {
230
+ const prefixes = /* @__PURE__ */ new Set();
231
+ const addPrefix = (candidate) => {
232
+ if (!candidate) return;
233
+ const normalized = candidate.replace(/\\/g, "/").replace(/\/+$/g, "");
234
+ if (normalized) prefixes.add(normalized);
235
+ };
236
+ addPrefix(env.CODEX_HOME);
237
+ addPrefix("/etc/codex");
238
+ const homeDir = env.HOME || process.env.HOME;
239
+ if (homeDir) addPrefix(path.posix.join(homeDir.replace(/\\/g, "/"), ".codex"));
240
+ return Array.from(prefixes);
241
+ }
242
+ isValidCodexSkillName(name) {
243
+ return /^[A-Za-z0-9._:-]+$/.test(name);
244
+ }
245
+ extractSkillPathCandidates(text, skillRootPrefixes = []) {
246
+ const matches = /* @__PURE__ */ new Map();
247
+ for (const rawToken of text.split(/\s+/)) {
248
+ const token = rawToken.replace(/^[`"'([{<]+|[`"',;:)\]}>]+$/g, "").trim();
249
+ if (!token) continue;
250
+ const normalizedPath = token.replace(/\\/g, "/");
251
+ const repoMatch = normalizedPath.match(/^\.agents\/skills\/([^/\s]+)\/SKILL\.md$/);
252
+ if (repoMatch) {
253
+ if (this.isValidCodexSkillName(repoMatch[1])) matches.set(normalizedPath, {
254
+ name: repoMatch[1],
255
+ path: normalizedPath
256
+ });
257
+ continue;
258
+ }
259
+ const matchingRoot = skillRootPrefixes.find((prefix) => normalizedPath.startsWith(`${prefix}/skills/`));
260
+ if (!matchingRoot) continue;
261
+ const customRootMatch = normalizedPath.slice(matchingRoot.length + 1).match(/^skills\/([^/\s]+)\/SKILL\.md$/);
262
+ if (customRootMatch && this.isValidCodexSkillName(customRootMatch[1])) matches.set(normalizedPath, {
263
+ name: customRootMatch[1],
264
+ path: normalizedPath
265
+ });
266
+ }
267
+ return Array.from(matches.values());
268
+ }
269
+ extractSkillCallsFromItems(items, skillRootPrefixes = [], options = {}) {
270
+ const skillCalls = /* @__PURE__ */ new Map();
271
+ for (const item of items) {
272
+ if (item?.type !== "command_execution") continue;
273
+ if (options.requireSuccessfulCommand && !this.isSuccessfulCommandExecution(item)) continue;
274
+ const command = typeof item.command === "string" && item.command.trim() ? item.command : void 0;
275
+ if (!command) continue;
276
+ for (const skillPath of this.extractSkillPathCandidates(command, skillRootPrefixes)) {
277
+ const existing = skillCalls.get(skillPath.path) ?? {
278
+ name: skillPath.name,
279
+ path: skillPath.path
280
+ };
281
+ skillCalls.set(skillPath.path, existing);
282
+ }
283
+ }
284
+ return Array.from(skillCalls.values()).map((skillCall) => ({
285
+ name: skillCall.name,
286
+ path: skillCall.path,
287
+ source: "heuristic"
288
+ }));
289
+ }
290
+ buildSkillMetadata(items, skillRootPrefixes = []) {
291
+ if (!Array.isArray(items) || items.length === 0) return;
292
+ const attemptedSkillCalls = this.extractSkillCallsFromItems(items, skillRootPrefixes);
293
+ const skillCalls = this.extractSkillCallsFromItems(items, skillRootPrefixes, { requireSuccessfulCommand: true });
294
+ if (skillCalls.length === 0 && attemptedSkillCalls.length <= skillCalls.length) return;
295
+ return {
296
+ attemptedSkillCalls,
297
+ skillCalls
298
+ };
299
+ }
300
+ isSuccessfulCommandExecution(item) {
301
+ if (item?.type !== "command_execution") return false;
302
+ if (typeof item.status === "string" && item.status !== "completed") return false;
303
+ if (typeof item.exit_code === "number" && item.exit_code !== 0) return false;
304
+ return true;
305
+ }
195
306
  validateWorkingDirectory(workingDir, skipGitCheck = false) {
196
307
  let stats;
197
308
  try {
@@ -230,7 +341,7 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
230
341
  ...config.additional_directories?.length ? { additionalDirectories: config.additional_directories } : {},
231
342
  ...config.sandbox_mode ? { sandboxMode: config.sandbox_mode } : {},
232
343
  ...config.model_reasoning_effort ? { modelReasoningEffort: config.model_reasoning_effort } : {},
233
- ...config.network_access_enabled !== void 0 ? { networkAccessEnabled: config.network_access_enabled } : {},
344
+ ...config.network_access_enabled === void 0 ? {} : { networkAccessEnabled: config.network_access_enabled },
234
345
  ...config.web_search_mode ? { webSearchMode: config.web_search_mode } : {},
235
346
  ...config.web_search_enabled !== void 0 && !config.web_search_mode ? { webSearchEnabled: config.web_search_enabled } : {},
236
347
  ...config.approval_policy ? { approvalPolicy: config.approval_policy } : {}
@@ -259,7 +370,7 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
259
370
  if (config.persist_threads && cacheKey) this.threads.set(cacheKey, thread);
260
371
  return thread;
261
372
  }
262
- async runStreaming(thread, prompt, runOptions, callOptions) {
373
+ async runStreaming(thread, prompt, runOptions, callOptions, skillRootPrefixes = []) {
263
374
  const { events } = await thread.runStreamed(prompt, runOptions);
264
375
  const items = [];
265
376
  let usage = void 0;
@@ -338,7 +449,7 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
338
449
  }
339
450
  });
340
451
  }
341
- const completionAttrs = this.getCompletionAttributesForItem(item);
452
+ const completionAttrs = this.getCompletionAttributesForItem(item, skillRootPrefixes);
342
453
  for (const [key, value] of Object.entries(completionAttrs)) span.setAttribute(key, value);
343
454
  const durationMs = eventTime - (itemStartTimes.get(itemId) || lastEventTime);
344
455
  span.setAttribute("codex.duration_ms", durationMs);
@@ -367,7 +478,7 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
367
478
  const itemId = String(item.id);
368
479
  const span = activeSpans.get(itemId);
369
480
  if (span) {
370
- const updatedAttrs = this.getCompletionAttributesForItem(item);
481
+ const updatedAttrs = this.getCompletionAttributesForItem(item, skillRootPrefixes);
371
482
  for (const [key, value] of Object.entries(updatedAttrs)) span.setAttribute(key, value);
372
483
  }
373
484
  }
@@ -434,6 +545,25 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
434
545
  /**
435
546
  * Get attributes for a Codex item at start
436
547
  */
548
+ getSkillTraceAttributes(item, skillRootPrefixes = [], options = {}) {
549
+ if (item?.type !== "command_execution") return {};
550
+ if (options.requireSuccessfulCommand && !this.isSuccessfulCommandExecution(item)) return {};
551
+ const command = typeof item.command === "string" && item.command.trim() ? item.command : void 0;
552
+ const skillCandidates = /* @__PURE__ */ new Map();
553
+ if (command) for (const skill of this.extractSkillPathCandidates(command, skillRootPrefixes)) skillCandidates.set(skill.path, skill);
554
+ if (skillCandidates.size === 0) return {};
555
+ const skills = Array.from(skillCandidates.values());
556
+ const attrs = {
557
+ "promptfoo.skill.count": skills.length,
558
+ "promptfoo.skill.names": skills.map((skill) => skill.name).join(","),
559
+ "promptfoo.skill.paths": skills.map((skill) => skill.path).join(",")
560
+ };
561
+ if (skills.length === 1) {
562
+ attrs["promptfoo.skill.name"] = skills[0].name;
563
+ attrs["promptfoo.skill.path"] = skills[0].path;
564
+ }
565
+ return attrs;
566
+ }
437
567
  getAttributesForItem(item) {
438
568
  const attrs = {};
439
569
  switch (item.type) {
@@ -443,6 +573,10 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
443
573
  case "mcp_tool_call":
444
574
  if (typeof item.server === "string") attrs["codex.mcp.server"] = item.server;
445
575
  if (typeof item.tool === "string") attrs["codex.mcp.tool"] = item.tool;
576
+ {
577
+ const serializedArgs = this.serializeItemValue(item.arguments ?? item.args ?? item.input);
578
+ if (serializedArgs) attrs["codex.mcp.input"] = serializedArgs;
579
+ }
446
580
  break;
447
581
  case "web_search":
448
582
  if (typeof item.query === "string") attrs["codex.search.query"] = item.query;
@@ -461,16 +595,40 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
461
595
  }
462
596
  return attrs;
463
597
  }
598
+ serializeItemValue(value) {
599
+ if (typeof value === "string") {
600
+ const trimmed = value.trim();
601
+ if (!trimmed) return;
602
+ try {
603
+ return JSON.stringify(this.redactTracePii(sanitizeObject(JSON.parse(trimmed))));
604
+ } catch {
605
+ return this.redactTracePii(sanitizeObject(trimmed, { context: "Codex MCP trace input" }));
606
+ }
607
+ }
608
+ if (value === void 0 || value === null) return;
609
+ try {
610
+ return JSON.stringify(this.redactTracePii(sanitizeObject(value, { context: "Codex MCP trace input" })));
611
+ } catch {
612
+ return;
613
+ }
614
+ }
615
+ redactTracePii(value) {
616
+ if (typeof value === "string" && /[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/i.test(value)) return REDACTED;
617
+ if (Array.isArray(value)) return value.map((item) => this.redactTracePii(item));
618
+ if (value && typeof value === "object") return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => [key, normalizeFieldName(key).includes("email") ? REDACTED : this.redactTracePii(entryValue)]));
619
+ return value;
620
+ }
464
621
  /**
465
622
  * Get attributes for a Codex item at completion
466
623
  */
467
- getCompletionAttributesForItem(item) {
624
+ getCompletionAttributesForItem(item, skillRootPrefixes = []) {
468
625
  const attrs = {};
469
626
  switch (item.type) {
470
627
  case "command_execution":
471
628
  if (typeof item.exit_code === "number") attrs["codex.exit_code"] = item.exit_code;
472
629
  if (typeof item.status === "string") attrs["codex.status"] = item.status;
473
630
  if (typeof item.aggregated_output === "string") attrs["codex.output"] = item.aggregated_output;
631
+ Object.assign(attrs, this.getSkillTraceAttributes(item, skillRootPrefixes, { requireSuccessfulCommand: true }));
474
632
  break;
475
633
  case "file_change":
476
634
  if (typeof item.status === "string") attrs["codex.status"] = item.status;
@@ -482,6 +640,10 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
482
640
  case "mcp_tool_call":
483
641
  if (typeof item.status === "string") attrs["codex.status"] = item.status;
484
642
  if (typeof item.error?.message === "string") attrs["codex.error"] = item.error.message;
643
+ {
644
+ const serializedArgs = this.serializeItemValue(item.arguments ?? item.args ?? item.input);
645
+ if (serializedArgs) attrs["codex.mcp.input"] = serializedArgs;
646
+ }
485
647
  break;
486
648
  case "agent_message":
487
649
  if (typeof item.text === "string") attrs["codex.message"] = item.text;
@@ -571,6 +733,7 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
571
733
  async callApiInternal(prompt, _context, callOptions, config) {
572
734
  const currentTraceparent = getTraceparent();
573
735
  const env = this.prepareEnvironment(config, currentTraceparent);
736
+ const skillRootPrefixes = this.getSkillRootPrefixes(env);
574
737
  if (!this.apiKey && !env.OPENAI_API_KEY && !env.CODEX_API_KEY) throw new Error("OpenAI API key is not set. Set OPENAI_API_KEY or CODEX_API_KEY environment variable or add \"apiKey\" to provider config.");
575
738
  if (config.working_dir) this.validateWorkingDirectory(config.working_dir, config.skip_git_repo_check);
576
739
  if (callOptions?.abortSignal?.aborted) return { error: "OpenAI Codex SDK call aborted before it started" };
@@ -610,9 +773,14 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
610
773
  if (config.output_schema) runOptions.outputSchema = config.output_schema;
611
774
  if (callOptions?.abortSignal) runOptions.signal = callOptions.abortSignal;
612
775
  try {
613
- const turn = config.enable_streaming ? await this.runStreaming(thread, prompt, runOptions, callOptions) : await thread.run(prompt, runOptions);
776
+ const turn = config.enable_streaming ? await this.runStreaming(thread, prompt, runOptions, callOptions, skillRootPrefixes) : await thread.run(prompt, runOptions);
614
777
  const output = turn.finalResponse || "";
615
778
  const raw = JSON.stringify(turn);
779
+ const skillMetadata = this.buildSkillMetadata(turn.items, skillRootPrefixes);
780
+ const metadata = skillMetadata ? {
781
+ ...skillMetadata.skillCalls.length > 0 ? { skillCalls: skillMetadata.skillCalls } : {},
782
+ ...skillMetadata.attemptedSkillCalls.length > skillMetadata.skillCalls.length ? { attemptedSkillCalls: skillMetadata.attemptedSkillCalls } : {}
783
+ } : void 0;
616
784
  const tokenUsage = turn.usage ? {
617
785
  prompt: turn.usage.input_tokens,
618
786
  completion: turn.usage.output_tokens,
@@ -638,6 +806,7 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
638
806
  output,
639
807
  tokenUsage,
640
808
  cost,
809
+ metadata,
641
810
  raw,
642
811
  sessionId: thread.id || "unknown"
643
812
  };
@@ -662,4 +831,4 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
662
831
  //#endregion
663
832
  export { OpenAICodexSDKProvider };
664
833
 
665
- //# sourceMappingURL=codex-sdk-DUwKWezN.js.map
834
+ //# sourceMappingURL=codex-sdk-BQEw16R_.js.map