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.
- package/README.md +2 -0
- package/dist/src/{accounts-xrUGFA6n.js → accounts-B2XmGjty.js} +5 -5
- package/dist/src/{accounts-Bx-x3bmW.cjs → accounts-BPyfpSeU.cjs} +5 -5
- package/dist/src/{accounts-CMqkzrVf.js → accounts-CFLK3mnD.js} +6 -6
- package/dist/src/{accounts-BgNJDBE6.js → accounts-Xatc0RYb.js} +5 -5
- package/dist/src/{agentic-utils-BKIN5PKu.js → agentic-utils-36epdqwB.js} +3 -3
- package/dist/src/{cometapi-DkXrKi5z.js → agentic-utils-D8yXo5Lm.js} +4 -61
- package/dist/src/{cometapi-vY6aDZgo.cjs → agentic-utils-DAVsChuB.cjs} +24 -62
- package/dist/src/agentic-utils-DIYAAYE7.js +153 -0
- package/dist/src/{agents-C-dDThPK.js → agents-BBVJCIYr.js} +226 -13
- package/dist/src/{agents-CErsqg5U.cjs → agents-BBWxKSM0.cjs} +7 -7
- package/dist/src/{agents-Dy2YpZpa.js → agents-Bqgfdokm.js} +227 -14
- package/dist/src/{agents-B0f4HICh.cjs → agents-CAYbM7qD.cjs} +226 -13
- package/dist/src/{agents-CVIn-Utx.js → agents-CLQ-P15P.js} +7 -7
- package/dist/src/{agents-DeH4Gu94.js → agents-CgBniSlI.js} +8 -8
- package/dist/src/{agents-CXknwsFX.js → agents-DSSTV4bv.js} +226 -13
- package/dist/src/{agents-aF4-T121.js → agents-wg3ohknq.js} +7 -7
- package/dist/src/{aimlapi-tg0Gkcvr.cjs → aimlapi-Bv8Fmc-b.cjs} +14 -14
- package/dist/src/{aimlapi-BNfTBexL.js → aimlapi-BwGC1TtS.js} +13 -13
- package/dist/src/{aimlapi-BAGZDo5G.js → aimlapi-DaC3qZ-o.js} +14 -14
- package/dist/src/{aimlapi-DHRKlBEA.js → aimlapi-MgSLdvy7.js} +13 -13
- package/dist/src/app/assets/index-B6l9CVVb.js +439 -0
- package/dist/src/app/assets/index-DyZ0Ep37.css +1 -0
- package/dist/src/app/assets/sync-CStkzc6u.js +4 -0
- package/dist/src/app/assets/vendor-charts-BnDWwBlI.js +36 -0
- package/dist/src/app/assets/vendor-markdown-Bz7N-ca6.js +29 -0
- package/dist/src/app/index.html +4 -4
- package/dist/src/{audio-tf_NBjlC.js → audio-Bn44pQxv.js} +4 -4
- package/dist/src/{audio-CHQ4r-RV.js → audio-DDA5WHdx.js} +4 -4
- package/dist/src/{audio-BWeaWovU.cjs → audio-DVFjQ67_.cjs} +4 -4
- package/dist/src/{audio-BRODU0UK.js → audio-DjU9GswO.js} +5 -5
- package/dist/src/{base-DBtwl2FR.cjs → base-BboXIF_0.cjs} +3 -3
- package/dist/src/{base-B4QJRyFS.js → base-CKjwebIH.js} +3 -3
- package/dist/src/{base-B0tcrnq_.js → base-CqzQ4K8j.js} +3 -3
- package/dist/src/{base-fEDN28WM.js → base-Cz2ZC_iA.js} +3 -3
- package/dist/src/{blobs-BAU-dXan.js → blobs-B1JriOyi.js} +3 -3
- package/dist/src/{blobs-qTYm-1PY.js → blobs-BUWmKWzo.js} +3 -3
- package/dist/src/{blobs-DvS-O6be.cjs → blobs-C6j0bvFz.cjs} +3 -3
- package/dist/src/{blobs-Bpg5rH6i.js → blobs-DXTl6J3H.js} +3 -3
- package/dist/src/{cache-COish3-W.cjs → cache-C5yFZ4gC.cjs} +75 -58
- package/dist/src/{cache-8XhNqPKW.js → cache-CaT5tPgo.js} +75 -58
- package/dist/src/cache-CyCanoMu.js +6 -0
- package/dist/src/{cache-CG0SlR1d.js → cache-DSqR6ezl.js} +75 -58
- package/dist/src/cache-Df_QFDNu.cjs +5 -0
- package/dist/src/{cache-D3eqDYGU.js → cache-HP0NP4k3.js} +75 -58
- package/dist/src/{chat-DHMH-N64.js → chat-B-52XYI1.js} +12 -12
- package/dist/src/{chat-BKm79wib.js → chat-B0iaWhoh.js} +16 -14
- package/dist/src/{chat-DxysjBvt.js → chat-BE0qTA8e.js} +13 -13
- package/dist/src/{chat-CRWNNq73.js → chat-BEwdgGEg.js} +16 -14
- package/dist/src/{chat-2K608PeQ.cjs → chat-BtIKkLKx.cjs} +13 -13
- package/dist/src/{chat-DaqekjFr.cjs → chat-CM8qWR3_.cjs} +17 -15
- package/dist/src/{chat-CM_kyI8B.js → chat-DK1U-eZ-.js} +12 -12
- package/dist/src/{chat-CznLWr_D.js → chat-pxmiVpWe.js} +16 -14
- package/dist/src/{chatkit-65VXf5SR.js → chatkit-BYGQlHlV.js} +4 -4
- package/dist/src/{chatkit-DKyPi1Gs.cjs → chatkit-Cx174XI3.cjs} +4 -4
- package/dist/src/{chatkit-BxFvW8KY.js → chatkit-_8eJqKcD.js} +4 -4
- package/dist/src/{chatkit-Be-Q-a9F.js → chatkit-a2D6mY6s.js} +4 -4
- package/dist/src/{claude-agent-sdk-CJH22shf.cjs → claude-agent-sdk-8ddRp1L2.cjs} +35 -17
- package/dist/src/{claude-agent-sdk-Dy5lT-Tx.js → claude-agent-sdk-Bq5EArsX.js} +33 -15
- package/dist/src/{claude-agent-sdk-BLTu0WBO.js → claude-agent-sdk-CMjh4LFH.js} +33 -15
- package/dist/src/{claude-agent-sdk-D6_k9FKA.js → claude-agent-sdk-HgbFioFw.js} +33 -15
- package/dist/src/cloud-DE3t1-ZI.js +4 -0
- package/dist/src/{cloud-Bc9526yV.js → cloud-z8KZpUoa.js} +3 -3
- package/dist/src/{cloudflare-ai-CWWJCRim.js → cloudflare-ai-BGyXlpXJ.js} +13 -13
- package/dist/src/{cloudflare-ai-C9r2sRhw.js → cloudflare-ai-Bbp26N0L.js} +13 -13
- package/dist/src/{cloudflare-ai-ClWSdor4.cjs → cloudflare-ai-C62x6MQG.cjs} +14 -14
- package/dist/src/{cloudflare-ai-ICsOuD-z.js → cloudflare-ai-DdKP9TKT.js} +14 -14
- package/dist/src/{cloudflare-gateway-D6xFc5pa.js → cloudflare-gateway-BwAaUgeW.js} +14 -14
- package/dist/src/{cloudflare-gateway-D6O7AlYb.js → cloudflare-gateway-D-e9i1Sn.js} +15 -15
- package/dist/src/{cloudflare-gateway-pXGHxJ47.js → cloudflare-gateway-DXhtXDRb.js} +15 -163
- package/dist/src/{cloudflare-gateway-C2_-KG5o.cjs → cloudflare-gateway-Dx36ftqF.cjs} +15 -15
- package/dist/src/{codex-sdk-DUwKWezN.js → codex-sdk-BQEw16R_.js} +180 -11
- package/dist/src/{codex-sdk-C6UMlxwV.js → codex-sdk-C_07GuVS.js} +180 -11
- package/dist/src/{codex-sdk-GGAw0qbD.js → codex-sdk-DE5G18dx.js} +180 -11
- package/dist/src/{codex-sdk-fAO0c3yA.cjs → codex-sdk-ZLKfDjqP.cjs} +181 -12
- package/dist/src/cometapi-BDyV-NNm.js +62 -0
- package/dist/src/cometapi-C3hOlM7-.cjs +62 -0
- package/dist/src/{cometapi-Bbjp5V4x.js → cometapi-hhL4TAh3.js} +14 -14
- package/dist/src/{cometapi-BasUi7-_.js → cometapi-sp7sJpBD.js} +15 -15
- package/dist/src/{completion-C_P3ypkJ.js → completion-BCimtq-h.js} +6 -6
- package/dist/src/{completion-6Mx_iXxK.js → completion-DCjv7RZ3.js} +6 -6
- package/dist/src/{completion-CDOouNzq.cjs → completion-DlXUhj5c.cjs} +6 -6
- package/dist/src/{completion-C5rtR_9P.js → completion-DoYy49ti.js} +6 -6
- package/dist/src/{createHash-CfZSc0b4.cjs → createHash-BYwImsYv.cjs} +2 -2
- package/dist/src/{docker-BwsKwxFs.cjs → docker-Cqj2-QVi.cjs} +14 -14
- package/dist/src/{docker-CZnqU1XV.js → docker-CxCkwMzc.js} +13 -13
- package/dist/src/{docker-DzxyDPIj.js → docker-DpguQj-w.js} +14 -14
- package/dist/src/{docker-5KcG-_86.js → docker-FeBni2dw.js} +13 -13
- package/dist/src/{esm-C03C-mv3.js → esm-7UIl0pPM.js} +2 -2
- package/dist/src/{esm-Cd1AjG1D.js → esm-CKWP3u_P.js} +3 -3
- package/dist/src/{esm-CnNt7sI4.cjs → esm-CipptfDu.cjs} +2 -2
- package/dist/src/{esm-CaIwzWR5.js → esm-SUNIX1x3.js} +3 -3
- package/dist/src/eval-7aEqoMs3.js +15 -0
- package/dist/src/{eval-DmFyWU7i.js → eval-BTqTn7lb.js} +10 -10
- package/dist/src/{evalResult-CDQiuUuf.js → evalResult-BkIhRdTe.js} +7 -7
- package/dist/src/evalResult-CYNHkk5A.js +12 -0
- package/dist/src/evalResult-CuvJeNiM.js +10 -0
- package/dist/src/{evalResult-CTG2AHOS.js → evalResult-DUDShQrm.js} +7 -7
- package/dist/src/{evalResult-Dap2CekP.cjs → evalResult-DpARzUCb.cjs} +7 -7
- package/dist/src/evalResult-tGdilrWt.cjs +10 -0
- package/dist/src/evaluator-BBUqRhz1.js +36 -0
- package/dist/src/{evaluator-DPFRbFIL.js → evaluator-BcvOGaam.js} +833 -79
- package/dist/src/{extractor-YMU_Gvt8.js → extractor-C8XwivI9.js} +6 -6
- package/dist/src/{extractor-CFG6bcWJ.js → extractor-CAZ2G3Kh.js} +6 -6
- package/dist/src/{extractor-DX36oYEv.cjs → extractor-DG3sSfXE.cjs} +6 -6
- package/dist/src/{extractor-M67RUtg6.js → extractor-D_wd8jxt.js} +6 -6
- package/dist/src/{fetch-4M3YRaqL.js → fetch-BiYv2BZc.js} +3 -3
- package/dist/src/{fetch-BxUk8odA.cjs → fetch-BnR9wSnm.cjs} +3 -3
- package/dist/src/{fetch-60Gzydls.js → fetch-CVAtKnI3.js} +3 -3
- package/dist/src/{fetch-BMv0O527.js → fetch-DoVRJZhJ.js} +4 -4
- package/dist/src/fetch-UWU706qb.js +5 -0
- package/dist/src/{genaiTracer-DN4dQywX.cjs → genaiTracer-BfxrvSUb.cjs} +2 -2
- package/dist/src/{graders-DOXycdlG.cjs → graders-BElhu9ZY.cjs} +126 -55
- package/dist/src/{graders-R9rYUM0d.js → graders-BXAJ0sbS.js} +120 -55
- package/dist/src/graders-BxfEguVY.js +32 -0
- package/dist/src/graders-CzVMbEnv.js +34 -0
- package/dist/src/{graders-CpdqD9PI.js → graders-DG7mhg-b.js} +120 -55
- package/dist/src/graders-DjCXfj0l.cjs +32 -0
- package/dist/src/{graders-CHO8EPM4.js → graders-RjHF8VfG.js} +120 -55
- package/dist/src/graders-kHzIWOKu.js +32 -0
- package/dist/src/{image-DTedmQPg.cjs → image--F58eEIn.cjs} +6 -6
- package/dist/src/{image-DJEvKveK.js → image-6WQXK8m8.js} +4 -4
- package/dist/src/{image-pAX56tPG.js → image-B8b6f36E.js} +6 -6
- package/dist/src/{image-BmEZqVmk.js → image-CoxZp9PZ.js} +6 -6
- package/dist/src/{image-gvmivTEe.js → image-DO0RYnjH.js} +5 -5
- package/dist/src/{image-CBBVXWuT.js → image-PoF6DN3x.js} +6 -6
- package/dist/src/{image-CDLQOcqT.cjs → image-fza3zuKs.cjs} +4 -4
- package/dist/src/{image-tL5hIOFh.js → image-xNbw5ph2.js} +4 -4
- package/dist/src/index.cjs +863 -110
- package/dist/src/index.d.cts +833 -60
- package/dist/src/index.d.ts +833 -60
- package/dist/src/index.js +860 -108
- package/dist/src/{interactiveCheck-BgLZUIt3.js → interactiveCheck-BnMYOjMu.js} +2 -2
- package/dist/src/{knowledgeBase-CoU-UQBg.js → knowledgeBase-Bi7CmDbx.js} +7 -7
- package/dist/src/{knowledgeBase-CLJybhnF.js → knowledgeBase-Ce3ofVan.js} +8 -8
- package/dist/src/{knowledgeBase-DjWPVqSb.js → knowledgeBase-DFRXPZl_.js} +7 -7
- package/dist/src/{knowledgeBase-wkxuRFhA.cjs → knowledgeBase-DqrLX8fy.cjs} +7 -7
- package/dist/src/{litellm-B9Hysuri.js → litellm-Bo2gQXpo.js} +16 -15
- package/dist/src/{litellm-ePxtr9F1.js → litellm-CKiAxnoM.js} +15 -14
- package/dist/src/{litellm-NYpQ8RQu.cjs → litellm-CnHI69aj.cjs} +16 -15
- package/dist/src/{litellm-CTfa0hqi.js → litellm-Tc294Jhj.js} +15 -14
- package/dist/src/{logger-KkObSCzq.js → logger-BcJBzSSA.js} +10 -14
- package/dist/src/{logger-DLcq4dWf.js → logger-BnkjG2jt.js} +10 -14
- package/dist/src/{logger-Cp1GPUjj.cjs → logger-D5iKBpu_.cjs} +27 -13
- package/dist/src/{logger-CT3IKMKA.js → logger-DO8_zM18.js} +10 -14
- package/dist/src/{luma-ray-BW9IRGIc.js → luma-ray-0ehMPt5N.js} +10 -10
- package/dist/src/{luma-ray-BE2mOt6N.js → luma-ray-C9q8rdQe.js} +9 -9
- package/dist/src/{luma-ray-Cm1KZBhs.js → luma-ray-DP0QA9qn.js} +9 -9
- package/dist/src/{luma-ray-B0GGNRc1.cjs → luma-ray-m9Ku2meV.cjs} +9 -9
- package/dist/src/main.js +69 -71
- package/dist/src/{messages-1x9atZmP.js → messages-DJNo37Ko.js} +14 -9
- package/dist/src/{messages-BLbWdsyt.js → messages-Dy9QecMs.js} +14 -9
- package/dist/src/{messages-1JrJs91T.cjs → messages-HJsyEh4o.cjs} +15 -10
- package/dist/src/{messages-D8EA0oDc.js → messages-biC_ex-p.js} +14 -9
- package/dist/src/{modelslab-C1OLRmVX.js → modelslab-B5J-ZM5c.js} +9 -9
- package/dist/src/{modelslab-CqXBy3U8.js → modelslab-BI458moT.js} +10 -10
- package/dist/src/{modelslab-X5-4LroM.js → modelslab-BTOT8FUO.js} +9 -9
- package/dist/src/{modelslab-DcOSFwKh.cjs → modelslab-IQbNg-r7.cjs} +9 -9
- package/dist/src/{nova-reel-DihqLeol.js → nova-reel-BZ9y-Y5s.js} +9 -9
- package/dist/src/{nova-reel-D9xfaMBs.cjs → nova-reel-CE5etkv9.cjs} +9 -9
- package/dist/src/{nova-reel-D2ZkOSyr.js → nova-reel-DEeQlnOJ.js} +10 -10
- package/dist/src/{nova-reel-BgS1ZWuK.js → nova-reel-Xw1SXLpg.js} +9 -9
- package/dist/src/{nova-sonic-Q3BOJeig.js → nova-sonic-DWswpN1E.js} +7 -7
- package/dist/src/{nova-sonic-DezhVUYT.js → nova-sonic-DXTLpi-r.js} +6 -6
- package/dist/src/{nova-sonic-DVu3mMIy.cjs → nova-sonic-N0yCm0vb.cjs} +6 -6
- package/dist/src/{nova-sonic-P-CdUMlV.js → nova-sonic-Ogqf-csn.js} +6 -6
- package/dist/src/{openai-DhbB7eWK.js → openai-BMcwgD5C.js} +2 -2
- package/dist/src/{openai-j-sE2O7r.js → openai-BcB5KlTk.js} +2 -2
- package/dist/src/{openai-Cuif0GEt.cjs → openai-CoxGAQwn.cjs} +2 -2
- package/dist/src/{openai-DElQ-fPX.js → openai-D6wITiVn.js} +2 -2
- package/dist/src/{openclaw-Bv1DINsX.js → openclaw-0Sv7AK3O.js} +172 -109
- package/dist/src/{openclaw-DAfWQn-o.cjs → openclaw-CXxbKgDH.cjs} +174 -110
- package/dist/src/{openclaw-BiSZPL7J.js → openclaw-D1FSCps-.js} +172 -109
- package/dist/src/{openclaw-D1D_ej1z.js → openclaw-D2ENvu7a.js} +173 -110
- package/dist/src/{opencode-sdk-D95s6SnR.js → opencode-sdk-C71Z0ehR.js} +13 -13
- package/dist/src/{opencode-sdk-DxUPkLT7.js → opencode-sdk-CHCs7dEb.js} +12 -12
- package/dist/src/{opencode-sdk-C7m-wRfI.js → opencode-sdk-DDxj4QqH.js} +12 -12
- package/dist/src/{opencode-sdk-CfaLN8PY.cjs → opencode-sdk-WWJhnbKr.cjs} +16 -16
- package/dist/src/{otlpReceiver-g3ByGaXs.js → otlpReceiver-C9KlUtxh.js} +6 -6
- package/dist/src/{otlpReceiver--AIRW_S4.js → otlpReceiver-CZL48YfC.js} +6 -6
- package/dist/src/{otlpReceiver-Bn5wGB1v.js → otlpReceiver-CavGAA6k.js} +6 -6
- package/dist/src/{otlpReceiver-Diec4cln.cjs → otlpReceiver-DHKqJlsz.cjs} +6 -6
- package/dist/src/{providerRegistry-B0RUOLI_.js → providerRegistry-B9lh-_tx.js} +2 -2
- package/dist/src/{providerRegistry-Civky8Ar.cjs → providerRegistry-BTDgfV5h.cjs} +2 -2
- package/dist/src/{providerRegistry-CD8MEar9.js → providerRegistry-BkzVH5Ba.js} +2 -2
- package/dist/src/{providerRegistry-DM8rZYol.js → providerRegistry-CUWki5mQ.js} +2 -2
- package/dist/src/providers-BSLEaIQG.js +32 -0
- package/dist/src/{providers-CFu-TZl-.cjs → providers-CScd1wN6.cjs} +733 -464
- package/dist/src/{providers-CFLy1_ji.js → providers-Ch6Mr0gn.js} +795 -526
- package/dist/src/{providers-BKRJTjBz.js → providers-Cn73d5sr.js} +795 -526
- package/dist/src/providers-D-FnDg8k.cjs +31 -0
- package/dist/src/providers-DEYiFVAo.js +30 -0
- package/dist/src/{providers-B3HvufyI.js → providers-DvddrgxL.js} +795 -526
- package/dist/src/providers-sS2WI8YD.js +30 -0
- package/dist/src/{pythonUtils-D6fwaDSg.js → pythonUtils-Bzwbgpbg.js} +3 -3
- package/dist/src/{pythonUtils-D5nxkQ0P.js → pythonUtils-Cpo0Ez1p.js} +3 -3
- package/dist/src/{pythonUtils-CTU3Y3lw.cjs → pythonUtils-dAVigVK-.cjs} +3 -3
- package/dist/src/{pythonUtils-C3py6GC1.js → pythonUtils-wIqk7zAf.js} +3 -3
- package/dist/src/{quiverai-CI6gYJVI.js → quiverai-BeofbLVc.js} +4 -4
- package/dist/src/{quiverai-MHSxbmmZ.js → quiverai-CCQn73lq.js} +5 -5
- package/dist/src/{quiverai-CLkWkyZc.cjs → quiverai-CcUhPIBg.cjs} +4 -4
- package/dist/src/{quiverai-C2jVwbH1.js → quiverai-DVSEqJiq.js} +4 -4
- package/dist/src/{render-Drod8m7K.js → render-BHl6QVq9.js} +3 -3
- package/dist/src/{responses-CGw0DCzh.js → responses-BKP_WYis.js} +16 -12
- package/dist/src/{responses-BKqJmhhc.js → responses-CQb1Tj69.js} +16 -12
- package/dist/src/{responses-jxdehPkC.js → responses-CgNyTPsY.js} +16 -12
- package/dist/src/{responses-tD4Bd4dc.cjs → responses-mo0KQDbu.cjs} +16 -12
- package/dist/src/rubyUtils-B1HXG4ej.cjs +4 -0
- package/dist/src/{rubyUtils-DhCAlxZr.cjs → rubyUtils-CGeUtCfW.cjs} +3 -3
- package/dist/src/{rubyUtils-Boc4HZzX.js → rubyUtils-CiVfln3g.js} +3 -3
- package/dist/src/{rubyUtils-BcuGX77l.js → rubyUtils-DECSbsfY.js} +3 -3
- package/dist/src/{rubyUtils-BUVePouc.js → rubyUtils-PgU-gHmx.js} +3 -3
- package/dist/src/rubyUtils-Rt6pKA96.js +5 -0
- package/dist/src/{sagemaker-BK4Zb993.js → sagemaker-CVv8W7so.js} +17 -17
- package/dist/src/{sagemaker-D2Q1c-sD.js → sagemaker-CqeASYE5.js} +17 -17
- package/dist/src/{sagemaker-BfiWTmvn.js → sagemaker-MUbD5V3v.js} +18 -18
- package/dist/src/{sagemaker-CcQHM1jV.cjs → sagemaker-jiw1wQa-.cjs} +17 -17
- package/dist/src/{scanner-J8CA3LsV.js → scanner-DVDeUz1r.js} +10 -10
- package/dist/src/server/index.js +864 -112
- package/dist/src/server-B0Xh1Gx-.js +7 -0
- package/dist/src/{server-B0PPuDw-.cjs → server-BtoCXeXI.cjs} +4 -4
- package/dist/src/{server-BC7XJFgr.js → server-CP9qKM40.js} +4 -4
- package/dist/src/{server-OAs3nBRT.js → server-Cns05F1j.js} +5 -5
- package/dist/src/server-DJTKu9IR.cjs +5 -0
- package/dist/src/{server-DbFphssR.js → server-DZ9MtCn0.js} +6 -6
- package/dist/src/{signal-BOTbd53Z.js → signal-C3ZTsUgi.js} +3 -3
- package/dist/src/{slack-DXMKtA-f.js → slack-2sdpGzbt.js} +2 -2
- package/dist/src/{slack-BmVAVGaK.cjs → slack-94iG3T0s.cjs} +2 -2
- package/dist/src/{slack-DCUPTzS2.js → slack-BR0HtO3K.js} +2 -2
- package/dist/src/{slack-DOdy_kyv.js → slack-DCEV-vWP.js} +2 -2
- package/dist/src/store-C5u6MgC8.js +6 -0
- package/dist/src/{store-BSc-TF2w.cjs → store-CLyU7AtI.cjs} +17 -5
- package/dist/src/store-CNHk-De4.cjs +5 -0
- package/dist/src/{store-DQLEjuEO.js → store-Cj258DgL.js} +17 -5
- package/dist/src/{store-D1tv90v3.js → store-P8OKm19S.js} +17 -5
- package/dist/src/{store-Ub2vaGJ1.js → store-VB0GP46K.js} +17 -5
- package/dist/src/{tables-xKANLRBD.js → tables-BEIFz2tM.js} +3 -3
- package/dist/src/{tables-C7K-XKWp.cjs → tables-BdZQEpRz.cjs} +3 -3
- package/dist/src/{tables-D36WTqKX.js → tables-DmzvLbeZ.js} +3 -3
- package/dist/src/{tables-5EvT_Bwn.js → tables-kC7R5kiK.js} +3 -3
- package/dist/src/{telemetry-C2YDkUQH.js → telemetry-BnH5VJAU.js} +4 -4
- package/dist/src/{telemetry-C15ziL8u.js → telemetry-BugWqKiu.js} +4 -4
- package/dist/src/{telemetry-DMb2Mpfm.js → telemetry-DPXLd7UE.js} +4 -4
- package/dist/src/telemetry-Yig0Tino.js +7 -0
- package/dist/src/telemetry-p8Pwqm1i.cjs +5 -0
- package/dist/src/{telemetry-CbrnxHp_.cjs → telemetry-re627Lre.cjs} +4 -4
- package/dist/src/{transcription-CL78qbOU.cjs → transcription-BvtsrzRG.cjs} +13 -13
- package/dist/src/{transcription-DAtxHhAM.js → transcription-CaMivnjG.js} +13 -13
- package/dist/src/{transcription-QHh3AH6Z.js → transcription-DOMMTu01.js} +14 -14
- package/dist/src/{transcription-LNZTNUUL.js → transcription-Hb3VnC4M.js} +13 -13
- package/dist/src/{transform-DOcQeLld.cjs → transform-0BwoBsvO.cjs} +19 -5
- package/dist/src/{transform-DGxXocjk.js → transform-B2-jIv68.js} +8 -6
- package/dist/src/{transform-DECvGmzp.js → transform-BqPkNPYm.js} +4 -4
- package/dist/src/{transform-aa6tmVpZ.js → transform-BzK09Q_9.js} +4 -4
- package/dist/src/transform-ChNIpHz7.js +6 -0
- package/dist/src/{transform-Cgi24fJ7.js → transform-DrleutM3.js} +8 -6
- package/dist/src/{transform-DGLazrMm.js → transform-DyDAwEpE.js} +8 -6
- package/dist/src/transform-PtQ6rAE3.cjs +5 -0
- package/dist/src/{transform-CzK1Q0zl.cjs → transform-ZrG2dvlo.cjs} +4 -4
- package/dist/src/{transform-DilY9wbS.js → transform-ljLYHEPh.js} +4 -4
- package/dist/src/{transformersAvailability-CEVM2GNQ.js → transformersAvailability-BGkzavwb.js} +1 -1
- package/dist/src/{transformersAvailability-CwayUSlh.cjs → transformersAvailability-DKoRtQLy.cjs} +1 -1
- package/dist/src/{types-CH3Ge2sE.js → types-CIhFeUC4.js} +45 -11
- package/dist/src/{types-CN_TZ2GJ.js → types-Cd3ygw8W.js} +45 -11
- package/dist/src/{types-LJ0r3wbR.cjs → types-D8cGDZbL.cjs} +46 -12
- package/dist/src/{types-CLKiCBW3.js → types-q8GXGF65.js} +45 -11
- package/dist/src/{util-CchiqXh_.cjs → util--9u9UVCt.cjs} +3 -3
- package/dist/src/{util-5cB-L7U3.js → util-BLvy9qfE.js} +7 -11
- package/dist/src/{util-YT5HPZaS.js → util-Bm3E9jpK.js} +7 -11
- package/dist/src/{util-6-GqIvzS.js → util-BtoGs5Cb.js} +18 -4
- package/dist/src/{util-Db0a0AFH.cjs → util-CFj4YKIn.cjs} +18 -4
- package/dist/src/{util-Dlz_Wvgm.js → util-CMMkIxfU.js} +7 -11
- package/dist/src/{util-Betm42rL.js → util-CgDCK4KI.js} +18 -4
- package/dist/src/{util-Yz-1aEhW.cjs → util-CuLo2pMR.cjs} +7 -11
- package/dist/src/{util-C-PPYSMq.js → util-DM2rTn_6.js} +18 -4
- package/dist/src/{util-B7T3SiBS.js → util-DMFeUvLz.js} +3 -3
- package/dist/src/{util-ZZH-3QZz.js → util-DbVG-yZU.js} +3 -3
- package/dist/src/{util-DaWTWKBK.js → util-vNmDL5DT.js} +3 -3
- package/dist/src/{utils-XiOAgly5.js → utils-CFxO9KGo.js} +2 -2
- package/dist/src/{utils-f2-Moju7.js → utils-DEuL4VNB.js} +2 -2
- package/dist/src/{utils-Cz9qXqII.cjs → utils-DKw8mrgr.cjs} +3 -3
- package/dist/src/{utils-dLokC-eR.js → utils-DOjD4dTC.js} +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +38 -38
- package/dist/src/app/assets/index-BFCZg7hQ.js +0 -439
- package/dist/src/app/assets/index-NCn4eVBv.css +0 -1
- package/dist/src/app/assets/sync-9qqYcY-B.js +0 -4
- package/dist/src/app/assets/vendor-charts-CCl15Imd.js +0 -36
- package/dist/src/app/assets/vendor-markdown-0tekx3KX.js +0 -29
- package/dist/src/cache-Bbn1Nyrd.cjs +0 -5
- package/dist/src/cache-BwsMSda7.js +0 -6
- package/dist/src/cloud-DmE0EwsY.js +0 -4
- package/dist/src/eval-17JizQIv.js +0 -15
- package/dist/src/evalResult-Cqj8pldJ.js +0 -12
- package/dist/src/evalResult-DvcJAWJU.cjs +0 -10
- package/dist/src/evalResult-Hftn-S_i.js +0 -10
- package/dist/src/evaluator-B2CFNt-P.js +0 -36
- package/dist/src/fetch-KV5kNASw.js +0 -5
- package/dist/src/graders-Bu0H9nXi.js +0 -32
- package/dist/src/graders-Cfhkvx-e.js +0 -34
- package/dist/src/graders-DClJVpGP.cjs +0 -32
- package/dist/src/graders-DcnJsrMO.js +0 -32
- package/dist/src/providers-C1rOSHiR.js +0 -32
- package/dist/src/providers-CxmDwEFf.cjs +0 -31
- package/dist/src/providers-Dodakqr0.js +0 -30
- package/dist/src/providers-GIQ2TcsA.js +0 -30
- package/dist/src/rubyUtils-BUHu6PhO.js +0 -5
- package/dist/src/rubyUtils-CP42kMvq.cjs +0 -4
- package/dist/src/server-B1vi21hA.js +0 -7
- package/dist/src/server-Cm9Kai_h.cjs +0 -5
- package/dist/src/store-BNmZ1KAz.cjs +0 -5
- package/dist/src/store-BltJg2cd.js +0 -6
- package/dist/src/telemetry-5BCRNBbe.cjs +0 -5
- package/dist/src/telemetry-D4W5hboe.js +0 -7
- package/dist/src/transform-DTGDnAzW.js +0 -6
- package/dist/src/transform-m3qNw4KP.cjs +0 -5
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import {
|
|
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-
|
|
4
|
-
import "./pythonUtils-
|
|
5
|
-
import "./types-
|
|
6
|
-
import "./util-
|
|
7
|
-
import "./fetch-
|
|
8
|
-
import "./cache-
|
|
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-
|
|
11
|
-
import "./transform-
|
|
12
|
-
import { t as AnthropicMessagesProvider } from "./messages-
|
|
13
|
-
import "./util-
|
|
14
|
-
import "./openai-
|
|
15
|
-
import "./util-
|
|
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-
|
|
283
|
+
//# sourceMappingURL=cloudflare-gateway-BwAaUgeW.js.map
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import "./fetch-
|
|
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-
|
|
6
|
-
import "./types-
|
|
7
|
-
import "./cache-
|
|
8
|
-
import "./util-
|
|
9
|
-
import "./esm-
|
|
10
|
-
import "./pythonUtils-
|
|
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-
|
|
13
|
-
import "./transform-
|
|
14
|
-
import { t as AnthropicMessagesProvider } from "./messages-
|
|
15
|
-
import "./util-
|
|
16
|
-
import "./openai-
|
|
17
|
-
import "./util-
|
|
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-
|
|
285
|
+
//# sourceMappingURL=cloudflare-gateway-D-e9i1Sn.js.map
|
|
@@ -1,166 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "./fetch-
|
|
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-
|
|
5
|
-
import "./types-
|
|
6
|
-
import
|
|
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-
|
|
9
|
-
import "./util-
|
|
10
|
-
import { t as OpenAiChatCompletionProvider } from "./chat-
|
|
11
|
-
import "./transform-
|
|
12
|
-
import { t as AnthropicMessagesProvider } from "./messages-
|
|
13
|
-
import "./util-
|
|
14
|
-
import "./openai-
|
|
15
|
-
import "./util-
|
|
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
|
|
281
|
+
export { createCloudflareGatewayProvider };
|
|
430
282
|
|
|
431
|
-
//# sourceMappingURL=cloudflare-gateway-
|
|
283
|
+
//# sourceMappingURL=cloudflare-gateway-DXhtXDRb.js.map
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
const require_logger = require("./logger-
|
|
1
|
+
const require_logger = require("./logger-D5iKBpu_.cjs");
|
|
2
2
|
const require_invariant = require("./invariant-kfQ8Bu82.cjs");
|
|
3
|
-
require("./esm-
|
|
4
|
-
require("./pythonUtils-
|
|
5
|
-
require("./types-
|
|
6
|
-
require("./util-
|
|
7
|
-
require("./fetch-
|
|
8
|
-
require("./cache-
|
|
9
|
-
require("./genaiTracer-
|
|
10
|
-
const require_chat = require("./chat-
|
|
11
|
-
require("./transform-
|
|
12
|
-
const require_messages = require("./messages-
|
|
13
|
-
require("./util
|
|
14
|
-
require("./openai-
|
|
15
|
-
require("./util-
|
|
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-
|
|
283
|
+
//# sourceMappingURL=cloudflare-gateway-Dx36ftqF.cjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { i as resolvePackageEntryPoint, r as importModule } from "./esm-
|
|
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
|
|
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 =
|
|
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
|
|
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-
|
|
834
|
+
//# sourceMappingURL=codex-sdk-BQEw16R_.js.map
|