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,6 +1,6 @@
1
- const require_logger = require("./logger-Cp1GPUjj.cjs");
2
- const require_esm = require("./esm-CnNt7sI4.cjs");
3
- const require_genaiTracer = require("./genaiTracer-DN4dQywX.cjs");
1
+ const require_logger = require("./logger-D5iKBpu_.cjs");
2
+ const require_esm = require("./esm-CipptfDu.cjs");
3
+ const require_genaiTracer = require("./genaiTracer-BfxrvSUb.cjs");
4
4
  let fs = require("fs");
5
5
  fs = require_logger.__toESM(fs);
6
6
  let path = require("path");
@@ -11,12 +11,43 @@ let crypto = require("crypto");
11
11
  crypto = require_logger.__toESM(crypto);
12
12
  let _opentelemetry_api = require("@opentelemetry/api");
13
13
  //#region src/providers/openai/codex-sdk.ts
14
+ const MINIMAL_CLI_ENV_KEYS = [
15
+ "PATH",
16
+ "Path",
17
+ "HOME",
18
+ "USER",
19
+ "USERNAME",
20
+ "USERPROFILE",
21
+ "TMPDIR",
22
+ "TMP",
23
+ "TEMP",
24
+ "SHELL",
25
+ "COMSPEC",
26
+ "SystemRoot",
27
+ "PATHEXT",
28
+ "LANG",
29
+ "LC_ALL",
30
+ "TERM"
31
+ ];
32
+ function getMinimalProcessEnv() {
33
+ const env = {};
34
+ for (const key of MINIMAL_CLI_ENV_KEYS) {
35
+ const value = process.env[key];
36
+ if (typeof value === "string" && value.length > 0) env[key] = value;
37
+ }
38
+ return env;
39
+ }
14
40
  /**
15
41
  * Helper to load the OpenAI Codex SDK ESM module
16
42
  * Uses resolvePackageEntryPoint to handle ESM-only packages with restrictive exports
17
43
  */
18
44
  async function loadCodexSDK() {
19
- const codexPath = require_esm.resolvePackageEntryPoint("@openai/codex-sdk", require_logger.state.basePath && path.default.isAbsolute(require_logger.state.basePath) ? require_logger.state.basePath : process.cwd());
45
+ const basePaths = [require_logger.state.basePath && path.default.isAbsolute(require_logger.state.basePath) ? require_logger.state.basePath : void 0, process.cwd()].filter((candidate) => Boolean(candidate));
46
+ let codexPath = null;
47
+ for (const basePath of new Set(basePaths)) {
48
+ codexPath = require_esm.resolvePackageEntryPoint("@openai/codex-sdk", basePath);
49
+ if (codexPath) break;
50
+ }
20
51
  if (!codexPath) throw new Error(dedent.default`The @openai/codex-sdk package is required but not installed.
21
52
 
22
53
  To use the OpenAI Codex SDK provider, install it with:
@@ -167,7 +198,10 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
167
198
  }
168
199
  }
169
200
  prepareEnvironment(config, traceparent) {
170
- const env = config.cli_env ? { ...config.cli_env } : { ...process.env };
201
+ const env = {
202
+ ...config.cli_env === void 0 || config.inherit_process_env === true ? process.env : getMinimalProcessEnv(),
203
+ ...config.cli_env ?? {}
204
+ };
171
205
  const sortedEnv = {};
172
206
  for (const key of Object.keys(env).sort()) if (env[key] !== void 0) sortedEnv[key] = env[key];
173
207
  if (this.apiKey) {
@@ -196,6 +230,83 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
196
230
  } else delete sortedEnv.TRACEPARENT;
197
231
  return sortedEnv;
198
232
  }
233
+ getSkillRootPrefixes(env) {
234
+ const prefixes = /* @__PURE__ */ new Set();
235
+ const addPrefix = (candidate) => {
236
+ if (!candidate) return;
237
+ const normalized = candidate.replace(/\\/g, "/").replace(/\/+$/g, "");
238
+ if (normalized) prefixes.add(normalized);
239
+ };
240
+ addPrefix(env.CODEX_HOME);
241
+ addPrefix("/etc/codex");
242
+ const homeDir = env.HOME || process.env.HOME;
243
+ if (homeDir) addPrefix(path.default.posix.join(homeDir.replace(/\\/g, "/"), ".codex"));
244
+ return Array.from(prefixes);
245
+ }
246
+ isValidCodexSkillName(name) {
247
+ return /^[A-Za-z0-9._:-]+$/.test(name);
248
+ }
249
+ extractSkillPathCandidates(text, skillRootPrefixes = []) {
250
+ const matches = /* @__PURE__ */ new Map();
251
+ for (const rawToken of text.split(/\s+/)) {
252
+ const token = rawToken.replace(/^[`"'([{<]+|[`"',;:)\]}>]+$/g, "").trim();
253
+ if (!token) continue;
254
+ const normalizedPath = token.replace(/\\/g, "/");
255
+ const repoMatch = normalizedPath.match(/^\.agents\/skills\/([^/\s]+)\/SKILL\.md$/);
256
+ if (repoMatch) {
257
+ if (this.isValidCodexSkillName(repoMatch[1])) matches.set(normalizedPath, {
258
+ name: repoMatch[1],
259
+ path: normalizedPath
260
+ });
261
+ continue;
262
+ }
263
+ const matchingRoot = skillRootPrefixes.find((prefix) => normalizedPath.startsWith(`${prefix}/skills/`));
264
+ if (!matchingRoot) continue;
265
+ const customRootMatch = normalizedPath.slice(matchingRoot.length + 1).match(/^skills\/([^/\s]+)\/SKILL\.md$/);
266
+ if (customRootMatch && this.isValidCodexSkillName(customRootMatch[1])) matches.set(normalizedPath, {
267
+ name: customRootMatch[1],
268
+ path: normalizedPath
269
+ });
270
+ }
271
+ return Array.from(matches.values());
272
+ }
273
+ extractSkillCallsFromItems(items, skillRootPrefixes = [], options = {}) {
274
+ const skillCalls = /* @__PURE__ */ new Map();
275
+ for (const item of items) {
276
+ if (item?.type !== "command_execution") continue;
277
+ if (options.requireSuccessfulCommand && !this.isSuccessfulCommandExecution(item)) continue;
278
+ const command = typeof item.command === "string" && item.command.trim() ? item.command : void 0;
279
+ if (!command) continue;
280
+ for (const skillPath of this.extractSkillPathCandidates(command, skillRootPrefixes)) {
281
+ const existing = skillCalls.get(skillPath.path) ?? {
282
+ name: skillPath.name,
283
+ path: skillPath.path
284
+ };
285
+ skillCalls.set(skillPath.path, existing);
286
+ }
287
+ }
288
+ return Array.from(skillCalls.values()).map((skillCall) => ({
289
+ name: skillCall.name,
290
+ path: skillCall.path,
291
+ source: "heuristic"
292
+ }));
293
+ }
294
+ buildSkillMetadata(items, skillRootPrefixes = []) {
295
+ if (!Array.isArray(items) || items.length === 0) return;
296
+ const attemptedSkillCalls = this.extractSkillCallsFromItems(items, skillRootPrefixes);
297
+ const skillCalls = this.extractSkillCallsFromItems(items, skillRootPrefixes, { requireSuccessfulCommand: true });
298
+ if (skillCalls.length === 0 && attemptedSkillCalls.length <= skillCalls.length) return;
299
+ return {
300
+ attemptedSkillCalls,
301
+ skillCalls
302
+ };
303
+ }
304
+ isSuccessfulCommandExecution(item) {
305
+ if (item?.type !== "command_execution") return false;
306
+ if (typeof item.status === "string" && item.status !== "completed") return false;
307
+ if (typeof item.exit_code === "number" && item.exit_code !== 0) return false;
308
+ return true;
309
+ }
199
310
  validateWorkingDirectory(workingDir, skipGitCheck = false) {
200
311
  let stats;
201
312
  try {
@@ -234,7 +345,7 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
234
345
  ...config.additional_directories?.length ? { additionalDirectories: config.additional_directories } : {},
235
346
  ...config.sandbox_mode ? { sandboxMode: config.sandbox_mode } : {},
236
347
  ...config.model_reasoning_effort ? { modelReasoningEffort: config.model_reasoning_effort } : {},
237
- ...config.network_access_enabled !== void 0 ? { networkAccessEnabled: config.network_access_enabled } : {},
348
+ ...config.network_access_enabled === void 0 ? {} : { networkAccessEnabled: config.network_access_enabled },
238
349
  ...config.web_search_mode ? { webSearchMode: config.web_search_mode } : {},
239
350
  ...config.web_search_enabled !== void 0 && !config.web_search_mode ? { webSearchEnabled: config.web_search_enabled } : {},
240
351
  ...config.approval_policy ? { approvalPolicy: config.approval_policy } : {}
@@ -263,7 +374,7 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
263
374
  if (config.persist_threads && cacheKey) this.threads.set(cacheKey, thread);
264
375
  return thread;
265
376
  }
266
- async runStreaming(thread, prompt, runOptions, callOptions) {
377
+ async runStreaming(thread, prompt, runOptions, callOptions, skillRootPrefixes = []) {
267
378
  const { events } = await thread.runStreamed(prompt, runOptions);
268
379
  const items = [];
269
380
  let usage = void 0;
@@ -342,7 +453,7 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
342
453
  }
343
454
  });
344
455
  }
345
- const completionAttrs = this.getCompletionAttributesForItem(item);
456
+ const completionAttrs = this.getCompletionAttributesForItem(item, skillRootPrefixes);
346
457
  for (const [key, value] of Object.entries(completionAttrs)) span.setAttribute(key, value);
347
458
  const durationMs = eventTime - (itemStartTimes.get(itemId) || lastEventTime);
348
459
  span.setAttribute("codex.duration_ms", durationMs);
@@ -371,7 +482,7 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
371
482
  const itemId = String(item.id);
372
483
  const span = activeSpans.get(itemId);
373
484
  if (span) {
374
- const updatedAttrs = this.getCompletionAttributesForItem(item);
485
+ const updatedAttrs = this.getCompletionAttributesForItem(item, skillRootPrefixes);
375
486
  for (const [key, value] of Object.entries(updatedAttrs)) span.setAttribute(key, value);
376
487
  }
377
488
  }
@@ -438,6 +549,25 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
438
549
  /**
439
550
  * Get attributes for a Codex item at start
440
551
  */
552
+ getSkillTraceAttributes(item, skillRootPrefixes = [], options = {}) {
553
+ if (item?.type !== "command_execution") return {};
554
+ if (options.requireSuccessfulCommand && !this.isSuccessfulCommandExecution(item)) return {};
555
+ const command = typeof item.command === "string" && item.command.trim() ? item.command : void 0;
556
+ const skillCandidates = /* @__PURE__ */ new Map();
557
+ if (command) for (const skill of this.extractSkillPathCandidates(command, skillRootPrefixes)) skillCandidates.set(skill.path, skill);
558
+ if (skillCandidates.size === 0) return {};
559
+ const skills = Array.from(skillCandidates.values());
560
+ const attrs = {
561
+ "promptfoo.skill.count": skills.length,
562
+ "promptfoo.skill.names": skills.map((skill) => skill.name).join(","),
563
+ "promptfoo.skill.paths": skills.map((skill) => skill.path).join(",")
564
+ };
565
+ if (skills.length === 1) {
566
+ attrs["promptfoo.skill.name"] = skills[0].name;
567
+ attrs["promptfoo.skill.path"] = skills[0].path;
568
+ }
569
+ return attrs;
570
+ }
441
571
  getAttributesForItem(item) {
442
572
  const attrs = {};
443
573
  switch (item.type) {
@@ -447,6 +577,10 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
447
577
  case "mcp_tool_call":
448
578
  if (typeof item.server === "string") attrs["codex.mcp.server"] = item.server;
449
579
  if (typeof item.tool === "string") attrs["codex.mcp.tool"] = item.tool;
580
+ {
581
+ const serializedArgs = this.serializeItemValue(item.arguments ?? item.args ?? item.input);
582
+ if (serializedArgs) attrs["codex.mcp.input"] = serializedArgs;
583
+ }
450
584
  break;
451
585
  case "web_search":
452
586
  if (typeof item.query === "string") attrs["codex.search.query"] = item.query;
@@ -465,16 +599,40 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
465
599
  }
466
600
  return attrs;
467
601
  }
602
+ serializeItemValue(value) {
603
+ if (typeof value === "string") {
604
+ const trimmed = value.trim();
605
+ if (!trimmed) return;
606
+ try {
607
+ return JSON.stringify(this.redactTracePii(require_logger.sanitizeObject(JSON.parse(trimmed))));
608
+ } catch {
609
+ return this.redactTracePii(require_logger.sanitizeObject(trimmed, { context: "Codex MCP trace input" }));
610
+ }
611
+ }
612
+ if (value === void 0 || value === null) return;
613
+ try {
614
+ return JSON.stringify(this.redactTracePii(require_logger.sanitizeObject(value, { context: "Codex MCP trace input" })));
615
+ } catch {
616
+ return;
617
+ }
618
+ }
619
+ redactTracePii(value) {
620
+ if (typeof value === "string" && /[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/i.test(value)) return require_logger.REDACTED;
621
+ if (Array.isArray(value)) return value.map((item) => this.redactTracePii(item));
622
+ if (value && typeof value === "object") return Object.fromEntries(Object.entries(value).map(([key, entryValue]) => [key, require_logger.normalizeFieldName(key).includes("email") ? require_logger.REDACTED : this.redactTracePii(entryValue)]));
623
+ return value;
624
+ }
468
625
  /**
469
626
  * Get attributes for a Codex item at completion
470
627
  */
471
- getCompletionAttributesForItem(item) {
628
+ getCompletionAttributesForItem(item, skillRootPrefixes = []) {
472
629
  const attrs = {};
473
630
  switch (item.type) {
474
631
  case "command_execution":
475
632
  if (typeof item.exit_code === "number") attrs["codex.exit_code"] = item.exit_code;
476
633
  if (typeof item.status === "string") attrs["codex.status"] = item.status;
477
634
  if (typeof item.aggregated_output === "string") attrs["codex.output"] = item.aggregated_output;
635
+ Object.assign(attrs, this.getSkillTraceAttributes(item, skillRootPrefixes, { requireSuccessfulCommand: true }));
478
636
  break;
479
637
  case "file_change":
480
638
  if (typeof item.status === "string") attrs["codex.status"] = item.status;
@@ -486,6 +644,10 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
486
644
  case "mcp_tool_call":
487
645
  if (typeof item.status === "string") attrs["codex.status"] = item.status;
488
646
  if (typeof item.error?.message === "string") attrs["codex.error"] = item.error.message;
647
+ {
648
+ const serializedArgs = this.serializeItemValue(item.arguments ?? item.args ?? item.input);
649
+ if (serializedArgs) attrs["codex.mcp.input"] = serializedArgs;
650
+ }
489
651
  break;
490
652
  case "agent_message":
491
653
  if (typeof item.text === "string") attrs["codex.message"] = item.text;
@@ -575,6 +737,7 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
575
737
  async callApiInternal(prompt, _context, callOptions, config) {
576
738
  const currentTraceparent = require_genaiTracer.getTraceparent();
577
739
  const env = this.prepareEnvironment(config, currentTraceparent);
740
+ const skillRootPrefixes = this.getSkillRootPrefixes(env);
578
741
  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.");
579
742
  if (config.working_dir) this.validateWorkingDirectory(config.working_dir, config.skip_git_repo_check);
580
743
  if (callOptions?.abortSignal?.aborted) return { error: "OpenAI Codex SDK call aborted before it started" };
@@ -614,9 +777,14 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
614
777
  if (config.output_schema) runOptions.outputSchema = config.output_schema;
615
778
  if (callOptions?.abortSignal) runOptions.signal = callOptions.abortSignal;
616
779
  try {
617
- const turn = config.enable_streaming ? await this.runStreaming(thread, prompt, runOptions, callOptions) : await thread.run(prompt, runOptions);
780
+ const turn = config.enable_streaming ? await this.runStreaming(thread, prompt, runOptions, callOptions, skillRootPrefixes) : await thread.run(prompt, runOptions);
618
781
  const output = turn.finalResponse || "";
619
782
  const raw = JSON.stringify(turn);
783
+ const skillMetadata = this.buildSkillMetadata(turn.items, skillRootPrefixes);
784
+ const metadata = skillMetadata ? {
785
+ ...skillMetadata.skillCalls.length > 0 ? { skillCalls: skillMetadata.skillCalls } : {},
786
+ ...skillMetadata.attemptedSkillCalls.length > skillMetadata.skillCalls.length ? { attemptedSkillCalls: skillMetadata.attemptedSkillCalls } : {}
787
+ } : void 0;
620
788
  const tokenUsage = turn.usage ? {
621
789
  prompt: turn.usage.input_tokens,
622
790
  completion: turn.usage.output_tokens,
@@ -642,6 +810,7 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
642
810
  output,
643
811
  tokenUsage,
644
812
  cost,
813
+ metadata,
645
814
  raw,
646
815
  sessionId: thread.id || "unknown"
647
816
  };
@@ -666,4 +835,4 @@ var OpenAICodexSDKProvider = class OpenAICodexSDKProvider {
666
835
  //#endregion
667
836
  exports.OpenAICodexSDKProvider = OpenAICodexSDKProvider;
668
837
 
669
- //# sourceMappingURL=codex-sdk-fAO0c3yA.cjs.map
838
+ //# sourceMappingURL=codex-sdk-ZLKfDjqP.cjs.map
@@ -0,0 +1,62 @@
1
+ import { C as getEnvString } from "./logger-DO8_zM18.js";
2
+ import "./esm-SUNIX1x3.js";
3
+ import "./pythonUtils-Cpo0Ez1p.js";
4
+ import "./types-q8GXGF65.js";
5
+ import "./util-CMMkIxfU.js";
6
+ import "./fetch-CVAtKnI3.js";
7
+ import "./cache-CaT5tPgo.js";
8
+ import "./genaiTracer-D3fD9dNV.js";
9
+ import { t as OpenAiChatCompletionProvider } from "./chat-pxmiVpWe.js";
10
+ import "./transform-DyDAwEpE.js";
11
+ import "./openai-BcB5KlTk.js";
12
+ import "./util-CgDCK4KI.js";
13
+ import { n as OpenAiEmbeddingProvider, t as OpenAiCompletionProvider } from "./completion-DCjv7RZ3.js";
14
+ import { t as OpenAiImageProvider } from "./image-CoxZp9PZ.js";
15
+ //#region src/providers/cometapi.ts
16
+ /**
17
+ * CometAPI Image Provider - extends OpenAI Image Provider for CometAPI's image generation models
18
+ */
19
+ var CometApiImageProvider = class extends OpenAiImageProvider {
20
+ constructor(modelName, options = {}) {
21
+ super(modelName, {
22
+ ...options,
23
+ config: {
24
+ ...options.config,
25
+ apiKeyEnvar: "COMETAPI_KEY",
26
+ apiBaseUrl: "https://api.cometapi.com/v1"
27
+ }
28
+ });
29
+ }
30
+ getApiKey() {
31
+ if (this.config?.apiKey) return this.config.apiKey;
32
+ return getEnvString("COMETAPI_KEY");
33
+ }
34
+ getApiUrlDefault() {
35
+ return "https://api.cometapi.com/v1";
36
+ }
37
+ };
38
+ /**
39
+ * Factory for creating CometAPI providers using OpenAI-compatible endpoints.
40
+ */
41
+ function createCometApiProvider(providerPath, options = {}) {
42
+ const splits = providerPath.split(":");
43
+ const type = splits[1];
44
+ const modelName = splits.slice(2).join(":");
45
+ const openaiOptions = {
46
+ ...options,
47
+ config: {
48
+ ...options.config || {},
49
+ apiBaseUrl: "https://api.cometapi.com/v1",
50
+ apiKeyEnvar: "COMETAPI_KEY"
51
+ }
52
+ };
53
+ if (type === "chat") return new OpenAiChatCompletionProvider(modelName, openaiOptions);
54
+ else if (type === "completion") return new OpenAiCompletionProvider(modelName, openaiOptions);
55
+ else if (type === "embedding" || type === "embeddings") return new OpenAiEmbeddingProvider(modelName, openaiOptions);
56
+ else if (type === "image") return new CometApiImageProvider(modelName, openaiOptions);
57
+ return new OpenAiChatCompletionProvider(splits.slice(1).join(":"), openaiOptions);
58
+ }
59
+ //#endregion
60
+ export { createCometApiProvider };
61
+
62
+ //# sourceMappingURL=cometapi-BDyV-NNm.js.map
@@ -0,0 +1,62 @@
1
+ const require_logger = require("./logger-D5iKBpu_.cjs");
2
+ require("./esm-CipptfDu.cjs");
3
+ require("./pythonUtils-dAVigVK-.cjs");
4
+ require("./types-D8cGDZbL.cjs");
5
+ require("./util-CuLo2pMR.cjs");
6
+ require("./fetch-BnR9wSnm.cjs");
7
+ require("./cache-C5yFZ4gC.cjs");
8
+ require("./genaiTracer-BfxrvSUb.cjs");
9
+ const require_chat = require("./chat-CM8qWR3_.cjs");
10
+ require("./transform-0BwoBsvO.cjs");
11
+ require("./openai-CoxGAQwn.cjs");
12
+ require("./util-CFj4YKIn.cjs");
13
+ const require_completion = require("./completion-DlXUhj5c.cjs");
14
+ const require_image = require("./image--F58eEIn.cjs");
15
+ //#region src/providers/cometapi.ts
16
+ /**
17
+ * CometAPI Image Provider - extends OpenAI Image Provider for CometAPI's image generation models
18
+ */
19
+ var CometApiImageProvider = class extends require_image.OpenAiImageProvider {
20
+ constructor(modelName, options = {}) {
21
+ super(modelName, {
22
+ ...options,
23
+ config: {
24
+ ...options.config,
25
+ apiKeyEnvar: "COMETAPI_KEY",
26
+ apiBaseUrl: "https://api.cometapi.com/v1"
27
+ }
28
+ });
29
+ }
30
+ getApiKey() {
31
+ if (this.config?.apiKey) return this.config.apiKey;
32
+ return require_logger.getEnvString("COMETAPI_KEY");
33
+ }
34
+ getApiUrlDefault() {
35
+ return "https://api.cometapi.com/v1";
36
+ }
37
+ };
38
+ /**
39
+ * Factory for creating CometAPI providers using OpenAI-compatible endpoints.
40
+ */
41
+ function createCometApiProvider(providerPath, options = {}) {
42
+ const splits = providerPath.split(":");
43
+ const type = splits[1];
44
+ const modelName = splits.slice(2).join(":");
45
+ const openaiOptions = {
46
+ ...options,
47
+ config: {
48
+ ...options.config || {},
49
+ apiBaseUrl: "https://api.cometapi.com/v1",
50
+ apiKeyEnvar: "COMETAPI_KEY"
51
+ }
52
+ };
53
+ if (type === "chat") return new require_chat.OpenAiChatCompletionProvider(modelName, openaiOptions);
54
+ else if (type === "completion") return new require_completion.OpenAiCompletionProvider(modelName, openaiOptions);
55
+ else if (type === "embedding" || type === "embeddings") return new require_completion.OpenAiEmbeddingProvider(modelName, openaiOptions);
56
+ else if (type === "image") return new CometApiImageProvider(modelName, openaiOptions);
57
+ return new require_chat.OpenAiChatCompletionProvider(splits.slice(1).join(":"), openaiOptions);
58
+ }
59
+ //#endregion
60
+ exports.createCometApiProvider = createCometApiProvider;
61
+
62
+ //# sourceMappingURL=cometapi-C3hOlM7-.cjs.map
@@ -1,17 +1,17 @@
1
- import { b as getEnvString } from "./logger-DLcq4dWf.js";
2
- import "./fetch-4M3YRaqL.js";
3
- import "./esm-CaIwzWR5.js";
4
- import "./types-CN_TZ2GJ.js";
5
- import "./cache-D3eqDYGU.js";
1
+ import { C as getEnvString } from "./logger-BnkjG2jt.js";
2
+ import "./fetch-BiYv2BZc.js";
3
+ import "./esm-CKWP3u_P.js";
4
+ import "./types-Cd3ygw8W.js";
5
+ import "./cache-HP0NP4k3.js";
6
6
  import "./genaiTracer-70Z8BIuV.js";
7
- import "./pythonUtils-D6fwaDSg.js";
8
- import "./util-5cB-L7U3.js";
9
- import { t as OpenAiChatCompletionProvider } from "./chat-BKm79wib.js";
10
- import "./transform-DGxXocjk.js";
11
- import "./openai-j-sE2O7r.js";
12
- import "./util-6-GqIvzS.js";
13
- import { n as OpenAiEmbeddingProvider, t as OpenAiCompletionProvider } from "./completion-6Mx_iXxK.js";
14
- import { t as OpenAiImageProvider } from "./image-pAX56tPG.js";
7
+ import "./pythonUtils-Bzwbgpbg.js";
8
+ import "./util-BLvy9qfE.js";
9
+ import { t as OpenAiChatCompletionProvider } from "./chat-B0iaWhoh.js";
10
+ import "./transform-B2-jIv68.js";
11
+ import "./openai-D6wITiVn.js";
12
+ import "./util-BtoGs5Cb.js";
13
+ import { n as OpenAiEmbeddingProvider, t as OpenAiCompletionProvider } from "./completion-BCimtq-h.js";
14
+ import { t as OpenAiImageProvider } from "./image-B8b6f36E.js";
15
15
  //#region src/providers/cometapi.ts
16
16
  /**
17
17
  * CometAPI Image Provider - extends OpenAI Image Provider for CometAPI's image generation models
@@ -59,4 +59,4 @@ function createCometApiProvider(providerPath, options = {}) {
59
59
  //#endregion
60
60
  export { createCometApiProvider };
61
61
 
62
- //# sourceMappingURL=cometapi-Bbjp5V4x.js.map
62
+ //# sourceMappingURL=cometapi-hhL4TAh3.js.map
@@ -1,19 +1,19 @@
1
1
  #!/usr/bin/env node
2
- import { C as getEnvString } from "./logger-KkObSCzq.js";
3
- import "./fetch-BMv0O527.js";
4
- import "./cloud-Bc9526yV.js";
5
- import "./types-CH3Ge2sE.js";
6
- import "./cache-CG0SlR1d.js";
7
- import "./util-YT5HPZaS.js";
8
- import "./esm-C03C-mv3.js";
9
- import "./pythonUtils-C3py6GC1.js";
2
+ import { E as getEnvString } from "./logger-BcJBzSSA.js";
3
+ import "./fetch-DoVRJZhJ.js";
4
+ import "./cloud-z8KZpUoa.js";
5
+ import "./types-CIhFeUC4.js";
6
+ import "./cache-DSqR6ezl.js";
7
+ import "./util-Bm3E9jpK.js";
8
+ import "./esm-7UIl0pPM.js";
9
+ import "./pythonUtils-wIqk7zAf.js";
10
10
  import "./genaiTracer-C1rxGO8Q.js";
11
- import { t as OpenAiChatCompletionProvider } from "./chat-CRWNNq73.js";
12
- import "./transform-Cgi24fJ7.js";
13
- import "./openai-DhbB7eWK.js";
14
- import "./util-C-PPYSMq.js";
15
- import { n as OpenAiEmbeddingProvider, t as OpenAiCompletionProvider } from "./completion-C5rtR_9P.js";
16
- import { t as OpenAiImageProvider } from "./image-CBBVXWuT.js";
11
+ import { t as OpenAiChatCompletionProvider } from "./chat-BEwdgGEg.js";
12
+ import "./transform-DrleutM3.js";
13
+ import "./openai-BMcwgD5C.js";
14
+ import "./util-DM2rTn_6.js";
15
+ import { n as OpenAiEmbeddingProvider, t as OpenAiCompletionProvider } from "./completion-DoYy49ti.js";
16
+ import { t as OpenAiImageProvider } from "./image-PoF6DN3x.js";
17
17
  //#region src/providers/cometapi.ts
18
18
  /**
19
19
  * CometAPI Image Provider - extends OpenAI Image Provider for CometAPI's image generation models
@@ -61,4 +61,4 @@ function createCometApiProvider(providerPath, options = {}) {
61
61
  //#endregion
62
62
  export { createCometApiProvider };
63
63
 
64
- //# sourceMappingURL=cometapi-BasUi7-_.js.map
64
+ //# sourceMappingURL=cometapi-sp7sJpBD.js.map
@@ -1,8 +1,8 @@
1
- import { b as getEnvString, i as logger, v as getEnvFloat, y as getEnvInt } from "./logger-CT3IKMKA.js";
2
- import { p as REQUEST_TIMEOUT_MS } from "./fetch-60Gzydls.js";
3
- import { r as fetchWithCache } from "./cache-8XhNqPKW.js";
4
- import { t as OpenAiGenericProvider } from "./openai-DElQ-fPX.js";
5
- import { a as calculateOpenAICost, c as getTokenUsage, n as OPENAI_COMPLETION_MODELS, s as formatOpenAiError } from "./util-Betm42rL.js";
1
+ import { C as getEnvString, S as getEnvInt, a as logger, x as getEnvFloat } from "./logger-BnkjG2jt.js";
2
+ import { p as REQUEST_TIMEOUT_MS } from "./fetch-BiYv2BZc.js";
3
+ import { r as fetchWithCache } from "./cache-HP0NP4k3.js";
4
+ import { t as OpenAiGenericProvider } from "./openai-D6wITiVn.js";
5
+ import { a as calculateOpenAICost, c as getTokenUsage, n as OPENAI_COMPLETION_MODELS, s as formatOpenAiError } from "./util-BtoGs5Cb.js";
6
6
  //#region src/providers/openai/embedding.ts
7
7
  var OpenAiEmbeddingProvider = class extends OpenAiGenericProvider {
8
8
  async callEmbeddingApi(text) {
@@ -117,4 +117,4 @@ var OpenAiCompletionProvider = class OpenAiCompletionProvider extends OpenAiGene
117
117
  //#endregion
118
118
  export { OpenAiEmbeddingProvider as n, OpenAiCompletionProvider as t };
119
119
 
120
- //# sourceMappingURL=completion-C_P3ypkJ.js.map
120
+ //# sourceMappingURL=completion-BCimtq-h.js.map
@@ -1,8 +1,8 @@
1
- import { b as getEnvString, i as logger, v as getEnvFloat, y as getEnvInt } from "./logger-DLcq4dWf.js";
2
- import { p as REQUEST_TIMEOUT_MS } from "./fetch-4M3YRaqL.js";
3
- import { r as fetchWithCache } from "./cache-D3eqDYGU.js";
4
- import { t as OpenAiGenericProvider } from "./openai-j-sE2O7r.js";
5
- import { a as calculateOpenAICost, c as getTokenUsage, n as OPENAI_COMPLETION_MODELS, s as formatOpenAiError } from "./util-6-GqIvzS.js";
1
+ import { C as getEnvString, S as getEnvInt, a as logger, x as getEnvFloat } from "./logger-DO8_zM18.js";
2
+ import { p as REQUEST_TIMEOUT_MS } from "./fetch-CVAtKnI3.js";
3
+ import { r as fetchWithCache } from "./cache-CaT5tPgo.js";
4
+ import { t as OpenAiGenericProvider } from "./openai-BcB5KlTk.js";
5
+ import { a as calculateOpenAICost, c as getTokenUsage, n as OPENAI_COMPLETION_MODELS, s as formatOpenAiError } from "./util-CgDCK4KI.js";
6
6
  //#region src/providers/openai/embedding.ts
7
7
  var OpenAiEmbeddingProvider = class extends OpenAiGenericProvider {
8
8
  async callEmbeddingApi(text) {
@@ -117,4 +117,4 @@ var OpenAiCompletionProvider = class OpenAiCompletionProvider extends OpenAiGene
117
117
  //#endregion
118
118
  export { OpenAiEmbeddingProvider as n, OpenAiCompletionProvider as t };
119
119
 
120
- //# sourceMappingURL=completion-6Mx_iXxK.js.map
120
+ //# sourceMappingURL=completion-DCjv7RZ3.js.map
@@ -1,8 +1,8 @@
1
- const require_logger = require("./logger-Cp1GPUjj.cjs");
2
- const require_fetch = require("./fetch-BxUk8odA.cjs");
3
- const require_cache = require("./cache-COish3-W.cjs");
4
- const require_openai = require("./openai-Cuif0GEt.cjs");
5
- const require_util = require("./util-Db0a0AFH.cjs");
1
+ const require_logger = require("./logger-D5iKBpu_.cjs");
2
+ const require_fetch = require("./fetch-BnR9wSnm.cjs");
3
+ const require_cache = require("./cache-C5yFZ4gC.cjs");
4
+ const require_openai = require("./openai-CoxGAQwn.cjs");
5
+ const require_util = require("./util-CFj4YKIn.cjs");
6
6
  //#region src/providers/openai/embedding.ts
7
7
  var OpenAiEmbeddingProvider = class extends require_openai.OpenAiGenericProvider {
8
8
  async callEmbeddingApi(text) {
@@ -128,4 +128,4 @@ Object.defineProperty(exports, "OpenAiEmbeddingProvider", {
128
128
  }
129
129
  });
130
130
 
131
- //# sourceMappingURL=completion-CDOouNzq.cjs.map
131
+ //# sourceMappingURL=completion-DlXUhj5c.cjs.map
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
- import { C as getEnvString, S as getEnvInt, o as logger, x as getEnvFloat } from "./logger-KkObSCzq.js";
3
- import { f as REQUEST_TIMEOUT_MS } from "./fetch-BMv0O527.js";
4
- import { a as fetchWithCache } from "./cache-CG0SlR1d.js";
5
- import { t as OpenAiGenericProvider } from "./openai-DhbB7eWK.js";
6
- import { a as calculateOpenAICost, c as getTokenUsage, n as OPENAI_COMPLETION_MODELS, s as formatOpenAiError } from "./util-C-PPYSMq.js";
2
+ import { E as getEnvString, T as getEnvInt, s as logger, w as getEnvFloat } from "./logger-BcJBzSSA.js";
3
+ import { f as REQUEST_TIMEOUT_MS } from "./fetch-DoVRJZhJ.js";
4
+ import { a as fetchWithCache } from "./cache-DSqR6ezl.js";
5
+ import { t as OpenAiGenericProvider } from "./openai-BMcwgD5C.js";
6
+ import { a as calculateOpenAICost, c as getTokenUsage, n as OPENAI_COMPLETION_MODELS, s as formatOpenAiError } from "./util-DM2rTn_6.js";
7
7
  //#region src/providers/openai/embedding.ts
8
8
  var OpenAiEmbeddingProvider = class extends OpenAiGenericProvider {
9
9
  async callEmbeddingApi(text) {
@@ -118,4 +118,4 @@ var OpenAiCompletionProvider = class OpenAiCompletionProvider extends OpenAiGene
118
118
  //#endregion
119
119
  export { OpenAiEmbeddingProvider as n, OpenAiCompletionProvider as t };
120
120
 
121
- //# sourceMappingURL=completion-C5rtR_9P.js.map
121
+ //# sourceMappingURL=completion-DoYy49ti.js.map
@@ -1,4 +1,4 @@
1
- require("./logger-Cp1GPUjj.cjs");
1
+ require("./logger-D5iKBpu_.cjs");
2
2
  let crypto = require("crypto");
3
3
  //#region src/util/createHash.ts
4
4
  function sha256(str) {
@@ -24,4 +24,4 @@ Object.defineProperty(exports, "sha256", {
24
24
  }
25
25
  });
26
26
 
27
- //# sourceMappingURL=createHash-CfZSc0b4.cjs.map
27
+ //# sourceMappingURL=createHash-BYwImsYv.cjs.map
@@ -1,16 +1,16 @@
1
- const require_logger = require("./logger-Cp1GPUjj.cjs");
2
- require("./esm-CnNt7sI4.cjs");
3
- require("./pythonUtils-CTU3Y3lw.cjs");
4
- require("./types-LJ0r3wbR.cjs");
5
- require("./util-Yz-1aEhW.cjs");
6
- require("./fetch-BxUk8odA.cjs");
7
- const require_cache = require("./cache-COish3-W.cjs");
8
- require("./genaiTracer-DN4dQywX.cjs");
9
- const require_chat = require("./chat-DaqekjFr.cjs");
10
- require("./transform-DOcQeLld.cjs");
11
- require("./openai-Cuif0GEt.cjs");
12
- require("./util-Db0a0AFH.cjs");
13
- const require_completion = require("./completion-CDOouNzq.cjs");
1
+ const require_logger = require("./logger-D5iKBpu_.cjs");
2
+ require("./esm-CipptfDu.cjs");
3
+ require("./pythonUtils-dAVigVK-.cjs");
4
+ require("./types-D8cGDZbL.cjs");
5
+ require("./util-CuLo2pMR.cjs");
6
+ require("./fetch-BnR9wSnm.cjs");
7
+ const require_cache = require("./cache-C5yFZ4gC.cjs");
8
+ require("./genaiTracer-BfxrvSUb.cjs");
9
+ const require_chat = require("./chat-CM8qWR3_.cjs");
10
+ require("./transform-0BwoBsvO.cjs");
11
+ require("./openai-CoxGAQwn.cjs");
12
+ require("./util-CFj4YKIn.cjs");
13
+ const require_completion = require("./completion-DlXUhj5c.cjs");
14
14
  //#region src/providers/docker.ts
15
15
  async function fetchLocalModels(apiBaseUrl) {
16
16
  try {
@@ -86,4 +86,4 @@ var DMREmbeddingProvider = class extends require_completion.OpenAiEmbeddingProvi
86
86
  //#endregion
87
87
  exports.createDockerProvider = createDockerProvider;
88
88
 
89
- //# sourceMappingURL=docker-BwsKwxFs.cjs.map
89
+ //# sourceMappingURL=docker-Cqj2-QVi.cjs.map