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
package/README.md
CHANGED
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
<a href="https://discord.gg/promptfoo">Discord</a>
|
|
21
21
|
</p>
|
|
22
22
|
|
|
23
|
+
> Update (March 16, 2026): Promptfoo has joined OpenAI. Promptfoo remains open source and MIT licensed. Read the [company update](https://www.promptfoo.dev/blog/promptfoo-joining-openai/).
|
|
24
|
+
|
|
23
25
|
## Quick Start
|
|
24
26
|
|
|
25
27
|
```sh
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as
|
|
2
|
-
import { O as TERMINAL_MAX_WIDTH, a as CloudConfig, c as writeGlobalConfig, l as writeGlobalConfigPartial, r as fetchWithTimeout, s as readGlobalConfig } from "./fetch-
|
|
1
|
+
import { C as getEnvString, E as isCI, a as logger } from "./logger-DO8_zM18.js";
|
|
2
|
+
import { O as TERMINAL_MAX_WIDTH, a as CloudConfig, c as writeGlobalConfig, l as writeGlobalConfigPartial, r as fetchWithTimeout, s as readGlobalConfig } from "./fetch-CVAtKnI3.js";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import input from "@inquirer/input";
|
|
@@ -76,7 +76,7 @@ function getAuthMethod() {
|
|
|
76
76
|
* Used by both CLI and server routes
|
|
77
77
|
*/
|
|
78
78
|
async function checkEmailStatus(options) {
|
|
79
|
-
const { default: telemetry } = await import("./telemetry-
|
|
79
|
+
const { default: telemetry } = await import("./telemetry-BugWqKiu.js").then((n) => n.n);
|
|
80
80
|
const ciMode = isCI();
|
|
81
81
|
const userEmail = ciMode ? CI_PLACEHOLDER_EMAIL : getUserEmail();
|
|
82
82
|
if (!userEmail) return {
|
|
@@ -125,7 +125,7 @@ async function checkEmailStatus(options) {
|
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
async function promptForEmailUnverified() {
|
|
128
|
-
const { default: telemetry } = await import("./telemetry-
|
|
128
|
+
const { default: telemetry } = await import("./telemetry-BugWqKiu.js").then((n) => n.n);
|
|
129
129
|
const ciMode = isCI();
|
|
130
130
|
const existingEmail = getUserEmail();
|
|
131
131
|
let email = ciMode ? CI_PLACEHOLDER_EMAIL : existingEmail;
|
|
@@ -198,4 +198,4 @@ async function checkEmailStatusAndMaybeExit(options) {
|
|
|
198
198
|
//#endregion
|
|
199
199
|
export { getUserId as a, setUserEmail as c, getUserEmail as i, getAuthMethod as n, isLoggedIntoCloud as o, getAuthor as r, promptForEmailUnverified as s, checkEmailStatusAndMaybeExit as t };
|
|
200
200
|
|
|
201
|
-
//# sourceMappingURL=accounts-
|
|
201
|
+
//# sourceMappingURL=accounts-B2XmGjty.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const require_logger = require("./logger-
|
|
2
|
-
const require_fetch = require("./fetch-
|
|
1
|
+
const require_logger = require("./logger-D5iKBpu_.cjs");
|
|
2
|
+
const require_fetch = require("./fetch-BnR9wSnm.cjs");
|
|
3
3
|
let chalk = require("chalk");
|
|
4
4
|
chalk = require_logger.__toESM(chalk);
|
|
5
5
|
let zod = require("zod");
|
|
@@ -78,7 +78,7 @@ function getAuthMethod() {
|
|
|
78
78
|
* Used by both CLI and server routes
|
|
79
79
|
*/
|
|
80
80
|
async function checkEmailStatus(options) {
|
|
81
|
-
const { default: telemetry } = await Promise.resolve().then(() => require("./telemetry-
|
|
81
|
+
const { default: telemetry } = await Promise.resolve().then(() => require("./telemetry-p8Pwqm1i.cjs"));
|
|
82
82
|
const ciMode = require_logger.isCI();
|
|
83
83
|
const userEmail = ciMode ? CI_PLACEHOLDER_EMAIL : getUserEmail();
|
|
84
84
|
if (!userEmail) return {
|
|
@@ -127,7 +127,7 @@ async function checkEmailStatus(options) {
|
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
async function promptForEmailUnverified() {
|
|
130
|
-
const { default: telemetry } = await Promise.resolve().then(() => require("./telemetry-
|
|
130
|
+
const { default: telemetry } = await Promise.resolve().then(() => require("./telemetry-p8Pwqm1i.cjs"));
|
|
131
131
|
const ciMode = require_logger.isCI();
|
|
132
132
|
const existingEmail = getUserEmail();
|
|
133
133
|
let email = ciMode ? CI_PLACEHOLDER_EMAIL : existingEmail;
|
|
@@ -247,4 +247,4 @@ Object.defineProperty(exports, "setUserEmail", {
|
|
|
247
247
|
}
|
|
248
248
|
});
|
|
249
249
|
|
|
250
|
-
//# sourceMappingURL=accounts-
|
|
250
|
+
//# sourceMappingURL=accounts-BPyfpSeU.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import { D as TERMINAL_MAX_WIDTH, i as fetchWithTimeout } from "./fetch-
|
|
4
|
-
import { c as writeGlobalConfigPartial, o as readGlobalConfig, r as CloudConfig, s as writeGlobalConfig } from "./cloud-
|
|
2
|
+
import { E as getEnvString, k as isCI, s as logger } from "./logger-BcJBzSSA.js";
|
|
3
|
+
import { D as TERMINAL_MAX_WIDTH, i as fetchWithTimeout } from "./fetch-DoVRJZhJ.js";
|
|
4
|
+
import { c as writeGlobalConfigPartial, o as readGlobalConfig, r as CloudConfig, s as writeGlobalConfig } from "./cloud-z8KZpUoa.js";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import input from "@inquirer/input";
|
|
7
7
|
import chalk from "chalk";
|
|
@@ -83,7 +83,7 @@ function getAuthMethod() {
|
|
|
83
83
|
* Used by both CLI and server routes
|
|
84
84
|
*/
|
|
85
85
|
async function checkEmailStatus(options) {
|
|
86
|
-
const { default: telemetry } = await import("./telemetry-
|
|
86
|
+
const { default: telemetry } = await import("./telemetry-Yig0Tino.js");
|
|
87
87
|
const ciMode = isCI();
|
|
88
88
|
const userEmail = ciMode ? CI_PLACEHOLDER_EMAIL : getUserEmail();
|
|
89
89
|
if (!userEmail) return {
|
|
@@ -132,7 +132,7 @@ async function checkEmailStatus(options) {
|
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
async function promptForEmailUnverified() {
|
|
135
|
-
const { default: telemetry } = await import("./telemetry-
|
|
135
|
+
const { default: telemetry } = await import("./telemetry-Yig0Tino.js");
|
|
136
136
|
const ciMode = isCI();
|
|
137
137
|
const existingEmail = getUserEmail();
|
|
138
138
|
let email = ciMode ? CI_PLACEHOLDER_EMAIL : existingEmail;
|
|
@@ -205,4 +205,4 @@ async function checkEmailStatusAndMaybeExit(options) {
|
|
|
205
205
|
//#endregion
|
|
206
206
|
export { getAuthor as a, isLoggedIntoCloud as c, getAuthMethod as i, promptForEmailUnverified as l, checkEmailStatusAndMaybeExit as n, getUserEmail as o, clearUserEmail as r, getUserId as s, checkEmailStatus as t, setUserEmail as u };
|
|
207
207
|
|
|
208
|
-
//# sourceMappingURL=accounts-
|
|
208
|
+
//# sourceMappingURL=accounts-CFLK3mnD.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as
|
|
2
|
-
import { O as TERMINAL_MAX_WIDTH, a as CloudConfig, c as writeGlobalConfig, l as writeGlobalConfigPartial, r as fetchWithTimeout, s as readGlobalConfig } from "./fetch-
|
|
1
|
+
import { C as getEnvString, E as isCI, a as logger } from "./logger-BnkjG2jt.js";
|
|
2
|
+
import { O as TERMINAL_MAX_WIDTH, a as CloudConfig, c as writeGlobalConfig, l as writeGlobalConfigPartial, r as fetchWithTimeout, s as readGlobalConfig } from "./fetch-BiYv2BZc.js";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import input from "@inquirer/input";
|
|
5
5
|
import { z } from "zod";
|
|
@@ -81,7 +81,7 @@ function getAuthMethod() {
|
|
|
81
81
|
* Used by both CLI and server routes
|
|
82
82
|
*/
|
|
83
83
|
async function checkEmailStatus(options) {
|
|
84
|
-
const { default: telemetry } = await import("./telemetry-
|
|
84
|
+
const { default: telemetry } = await import("./telemetry-DPXLd7UE.js").then((n) => n.r);
|
|
85
85
|
const ciMode = isCI();
|
|
86
86
|
const userEmail = ciMode ? CI_PLACEHOLDER_EMAIL : getUserEmail();
|
|
87
87
|
if (!userEmail) return {
|
|
@@ -130,7 +130,7 @@ async function checkEmailStatus(options) {
|
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
async function promptForEmailUnverified() {
|
|
133
|
-
const { default: telemetry } = await import("./telemetry-
|
|
133
|
+
const { default: telemetry } = await import("./telemetry-DPXLd7UE.js").then((n) => n.r);
|
|
134
134
|
const ciMode = isCI();
|
|
135
135
|
const existingEmail = getUserEmail();
|
|
136
136
|
let email = ciMode ? CI_PLACEHOLDER_EMAIL : existingEmail;
|
|
@@ -203,4 +203,4 @@ async function checkEmailStatusAndMaybeExit(options) {
|
|
|
203
203
|
//#endregion
|
|
204
204
|
export { getAuthor as a, isLoggedIntoCloud as c, getAuthMethod as i, promptForEmailUnverified as l, checkEmailStatusAndMaybeExit as n, getUserEmail as o, clearUserEmail as r, getUserId as s, checkEmailStatus as t, setUserEmail as u };
|
|
205
205
|
|
|
206
|
-
//# sourceMappingURL=accounts-
|
|
206
|
+
//# sourceMappingURL=accounts-Xatc0RYb.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import { o as getCache, s as isCacheEnabled } from "./cache-
|
|
2
|
+
import { s as logger } from "./logger-BcJBzSSA.js";
|
|
3
|
+
import { o as getCache, s as isCacheEnabled } from "./cache-DSqR6ezl.js";
|
|
4
4
|
import fs from "fs";
|
|
5
5
|
import path from "path";
|
|
6
6
|
import dedent from "dedent";
|
|
@@ -151,4 +151,4 @@ async function cacheResponse(cacheResult, response, debugContext) {
|
|
|
151
151
|
//#endregion
|
|
152
152
|
export { initializeAgenticCache as i, generateCacheKey as n, getCachedResponse as r, cacheResponse as t };
|
|
153
153
|
|
|
154
|
-
//# sourceMappingURL=agentic-utils-
|
|
154
|
+
//# sourceMappingURL=agentic-utils-36epdqwB.js.map
|
|
@@ -1,17 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "./
|
|
3
|
-
import "./pythonUtils-D5nxkQ0P.js";
|
|
4
|
-
import "./types-CLKiCBW3.js";
|
|
5
|
-
import "./util-Dlz_Wvgm.js";
|
|
6
|
-
import "./fetch-60Gzydls.js";
|
|
7
|
-
import { a as isCacheEnabled, i as getCache } from "./cache-8XhNqPKW.js";
|
|
8
|
-
import "./genaiTracer-D3fD9dNV.js";
|
|
9
|
-
import { t as OpenAiChatCompletionProvider } from "./chat-CznLWr_D.js";
|
|
10
|
-
import "./transform-DGLazrMm.js";
|
|
11
|
-
import "./openai-DElQ-fPX.js";
|
|
12
|
-
import "./util-Betm42rL.js";
|
|
13
|
-
import { n as OpenAiEmbeddingProvider, t as OpenAiCompletionProvider } from "./completion-C_P3ypkJ.js";
|
|
14
|
-
import { t as OpenAiImageProvider } from "./image-BmEZqVmk.js";
|
|
1
|
+
import { a as logger } from "./logger-DO8_zM18.js";
|
|
2
|
+
import { a as isCacheEnabled, i as getCache } from "./cache-CaT5tPgo.js";
|
|
15
3
|
import fs from "fs";
|
|
16
4
|
import path from "path";
|
|
17
5
|
import dedent from "dedent";
|
|
@@ -160,51 +148,6 @@ async function cacheResponse(cacheResult, response, debugContext) {
|
|
|
160
148
|
}
|
|
161
149
|
}
|
|
162
150
|
//#endregion
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* CometAPI Image Provider - extends OpenAI Image Provider for CometAPI's image generation models
|
|
166
|
-
*/
|
|
167
|
-
var CometApiImageProvider = class extends OpenAiImageProvider {
|
|
168
|
-
constructor(modelName, options = {}) {
|
|
169
|
-
super(modelName, {
|
|
170
|
-
...options,
|
|
171
|
-
config: {
|
|
172
|
-
...options.config,
|
|
173
|
-
apiKeyEnvar: "COMETAPI_KEY",
|
|
174
|
-
apiBaseUrl: "https://api.cometapi.com/v1"
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
getApiKey() {
|
|
179
|
-
if (this.config?.apiKey) return this.config.apiKey;
|
|
180
|
-
return getEnvString("COMETAPI_KEY");
|
|
181
|
-
}
|
|
182
|
-
getApiUrlDefault() {
|
|
183
|
-
return "https://api.cometapi.com/v1";
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
/**
|
|
187
|
-
* Factory for creating CometAPI providers using OpenAI-compatible endpoints.
|
|
188
|
-
*/
|
|
189
|
-
function createCometApiProvider(providerPath, options = {}) {
|
|
190
|
-
const splits = providerPath.split(":");
|
|
191
|
-
const type = splits[1];
|
|
192
|
-
const modelName = splits.slice(2).join(":");
|
|
193
|
-
const openaiOptions = {
|
|
194
|
-
...options,
|
|
195
|
-
config: {
|
|
196
|
-
...options.config || {},
|
|
197
|
-
apiBaseUrl: "https://api.cometapi.com/v1",
|
|
198
|
-
apiKeyEnvar: "COMETAPI_KEY"
|
|
199
|
-
}
|
|
200
|
-
};
|
|
201
|
-
if (type === "chat") return new OpenAiChatCompletionProvider(modelName, openaiOptions);
|
|
202
|
-
else if (type === "completion") return new OpenAiCompletionProvider(modelName, openaiOptions);
|
|
203
|
-
else if (type === "embedding" || type === "embeddings") return new OpenAiEmbeddingProvider(modelName, openaiOptions);
|
|
204
|
-
else if (type === "image") return new CometApiImageProvider(modelName, openaiOptions);
|
|
205
|
-
return new OpenAiChatCompletionProvider(splits.slice(1).join(":"), openaiOptions);
|
|
206
|
-
}
|
|
207
|
-
//#endregion
|
|
208
|
-
export { createCometApiProvider, initializeAgenticCache as i, generateCacheKey as n, getCachedResponse as r, cacheResponse as t };
|
|
151
|
+
export { initializeAgenticCache as i, generateCacheKey as n, getCachedResponse as r, cacheResponse as t };
|
|
209
152
|
|
|
210
|
-
//# sourceMappingURL=
|
|
153
|
+
//# sourceMappingURL=agentic-utils-D8yXo5Lm.js.map
|
|
@@ -1,17 +1,5 @@
|
|
|
1
|
-
const require_logger = require("./logger-
|
|
2
|
-
require("./
|
|
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");
|
|
14
|
-
const require_image = require("./image-DTedmQPg.cjs");
|
|
1
|
+
const require_logger = require("./logger-D5iKBpu_.cjs");
|
|
2
|
+
const require_cache = require("./cache-C5yFZ4gC.cjs");
|
|
15
3
|
let fs = require("fs");
|
|
16
4
|
fs = require_logger.__toESM(fs);
|
|
17
5
|
let path = require("path");
|
|
@@ -164,55 +152,29 @@ async function cacheResponse(cacheResult, response, debugContext) {
|
|
|
164
152
|
}
|
|
165
153
|
}
|
|
166
154
|
//#endregion
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
var CometApiImageProvider = class extends require_image.OpenAiImageProvider {
|
|
172
|
-
constructor(modelName, options = {}) {
|
|
173
|
-
super(modelName, {
|
|
174
|
-
...options,
|
|
175
|
-
config: {
|
|
176
|
-
...options.config,
|
|
177
|
-
apiKeyEnvar: "COMETAPI_KEY",
|
|
178
|
-
apiBaseUrl: "https://api.cometapi.com/v1"
|
|
179
|
-
}
|
|
180
|
-
});
|
|
155
|
+
Object.defineProperty(exports, "cacheResponse", {
|
|
156
|
+
enumerable: true,
|
|
157
|
+
get: function() {
|
|
158
|
+
return cacheResponse;
|
|
181
159
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
160
|
+
});
|
|
161
|
+
Object.defineProperty(exports, "generateCacheKey", {
|
|
162
|
+
enumerable: true,
|
|
163
|
+
get: function() {
|
|
164
|
+
return generateCacheKey;
|
|
185
165
|
}
|
|
186
|
-
|
|
187
|
-
|
|
166
|
+
});
|
|
167
|
+
Object.defineProperty(exports, "getCachedResponse", {
|
|
168
|
+
enumerable: true,
|
|
169
|
+
get: function() {
|
|
170
|
+
return getCachedResponse;
|
|
188
171
|
}
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
const modelName = splits.slice(2).join(":");
|
|
197
|
-
const openaiOptions = {
|
|
198
|
-
...options,
|
|
199
|
-
config: {
|
|
200
|
-
...options.config || {},
|
|
201
|
-
apiBaseUrl: "https://api.cometapi.com/v1",
|
|
202
|
-
apiKeyEnvar: "COMETAPI_KEY"
|
|
203
|
-
}
|
|
204
|
-
};
|
|
205
|
-
if (type === "chat") return new require_chat.OpenAiChatCompletionProvider(modelName, openaiOptions);
|
|
206
|
-
else if (type === "completion") return new require_completion.OpenAiCompletionProvider(modelName, openaiOptions);
|
|
207
|
-
else if (type === "embedding" || type === "embeddings") return new require_completion.OpenAiEmbeddingProvider(modelName, openaiOptions);
|
|
208
|
-
else if (type === "image") return new CometApiImageProvider(modelName, openaiOptions);
|
|
209
|
-
return new require_chat.OpenAiChatCompletionProvider(splits.slice(1).join(":"), openaiOptions);
|
|
210
|
-
}
|
|
211
|
-
//#endregion
|
|
212
|
-
exports.cacheResponse = cacheResponse;
|
|
213
|
-
exports.createCometApiProvider = createCometApiProvider;
|
|
214
|
-
exports.generateCacheKey = generateCacheKey;
|
|
215
|
-
exports.getCachedResponse = getCachedResponse;
|
|
216
|
-
exports.initializeAgenticCache = initializeAgenticCache;
|
|
172
|
+
});
|
|
173
|
+
Object.defineProperty(exports, "initializeAgenticCache", {
|
|
174
|
+
enumerable: true,
|
|
175
|
+
get: function() {
|
|
176
|
+
return initializeAgenticCache;
|
|
177
|
+
}
|
|
178
|
+
});
|
|
217
179
|
|
|
218
|
-
//# sourceMappingURL=
|
|
180
|
+
//# sourceMappingURL=agentic-utils-DAVsChuB.cjs.map
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { a as logger } from "./logger-BnkjG2jt.js";
|
|
2
|
+
import { a as isCacheEnabled, i as getCache } from "./cache-HP0NP4k3.js";
|
|
3
|
+
import fs from "fs";
|
|
4
|
+
import path from "path";
|
|
5
|
+
import dedent from "dedent";
|
|
6
|
+
import crypto from "crypto";
|
|
7
|
+
//#region src/providers/agentic-utils.ts
|
|
8
|
+
/**
|
|
9
|
+
* Shared utilities for agentic providers (Claude Agent SDK, OpenCode SDK, etc.)
|
|
10
|
+
*
|
|
11
|
+
* These utilities handle common functionality needed by coding agent providers:
|
|
12
|
+
* - Working directory fingerprinting for cache key generation
|
|
13
|
+
* - Response caching with fingerprint support
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Timeout for working directory fingerprint generation (ms)
|
|
17
|
+
* Prevents hanging on extremely large directories
|
|
18
|
+
*/
|
|
19
|
+
const FINGERPRINT_TIMEOUT_MS = 2e3;
|
|
20
|
+
/**
|
|
21
|
+
* Get a fingerprint for a working directory to use as a cache key.
|
|
22
|
+
* Checks directory mtime and descendant file mtimes recursively.
|
|
23
|
+
*
|
|
24
|
+
* This allows for caching prompts that use the same working directory
|
|
25
|
+
* when the files haven't changed.
|
|
26
|
+
*
|
|
27
|
+
* @param workingDir - Absolute path to the working directory
|
|
28
|
+
* @returns SHA-256 hash fingerprint of the directory state
|
|
29
|
+
* @throws Error if fingerprinting times out or directory is inaccessible
|
|
30
|
+
*/
|
|
31
|
+
async function getWorkingDirFingerprint(workingDir) {
|
|
32
|
+
const dirMtime = fs.statSync(workingDir).mtimeMs;
|
|
33
|
+
const startTime = Date.now();
|
|
34
|
+
const getAllFiles = (dir, files = []) => {
|
|
35
|
+
if (Date.now() - startTime > FINGERPRINT_TIMEOUT_MS) throw new Error("Working directory fingerprint timed out");
|
|
36
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
37
|
+
for (const entry of entries) {
|
|
38
|
+
const fullPath = path.join(dir, entry.name);
|
|
39
|
+
if (entry.isDirectory()) getAllFiles(fullPath, files);
|
|
40
|
+
else if (entry.isFile()) files.push(fullPath);
|
|
41
|
+
}
|
|
42
|
+
return files;
|
|
43
|
+
};
|
|
44
|
+
const fingerprintData = `dir:${dirMtime};files:${getAllFiles(workingDir).map((file) => {
|
|
45
|
+
const stat = fs.statSync(file);
|
|
46
|
+
return `${path.relative(workingDir, file)}:${stat.mtimeMs}`;
|
|
47
|
+
}).sort().join(",")}`;
|
|
48
|
+
return crypto.createHash("sha256").update(fingerprintData).digest("hex");
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Generate a cache key from arbitrary data using SHA-256 hash
|
|
52
|
+
*
|
|
53
|
+
* @param prefix - Cache key prefix (provider identifier)
|
|
54
|
+
* @param data - Data to hash for the cache key
|
|
55
|
+
* @returns Prefixed SHA-256 hash cache key
|
|
56
|
+
*/
|
|
57
|
+
function generateCacheKey(prefix, data) {
|
|
58
|
+
const stringified = JSON.stringify(data);
|
|
59
|
+
return `${prefix}:${crypto.createHash("sha256").update(stringified).digest("hex")}`;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Initialize cache and check for cached response
|
|
63
|
+
*
|
|
64
|
+
* This handles the common caching pattern used by agentic providers:
|
|
65
|
+
* 1. Check if caching is enabled
|
|
66
|
+
* 2. Generate working directory fingerprint if needed
|
|
67
|
+
* 3. Generate cache key
|
|
68
|
+
* 4. Return cache configuration for use by the provider
|
|
69
|
+
*
|
|
70
|
+
* @param options - Cache options including prefix and working directory
|
|
71
|
+
* @param cacheKeyData - Data to include in the cache key
|
|
72
|
+
* @returns Cache configuration and optional cached response
|
|
73
|
+
*/
|
|
74
|
+
async function initializeAgenticCache(options, cacheKeyData) {
|
|
75
|
+
if (!isCacheEnabled()) return {
|
|
76
|
+
shouldCache: false,
|
|
77
|
+
shouldReadCache: false,
|
|
78
|
+
shouldWriteCache: false
|
|
79
|
+
};
|
|
80
|
+
if (options.mcp && !options.cacheMcp) return {
|
|
81
|
+
shouldCache: false,
|
|
82
|
+
shouldReadCache: false,
|
|
83
|
+
shouldWriteCache: false
|
|
84
|
+
};
|
|
85
|
+
let workingDirFingerprint = null;
|
|
86
|
+
if (options.workingDir) try {
|
|
87
|
+
workingDirFingerprint = await getWorkingDirFingerprint(options.workingDir);
|
|
88
|
+
} catch (error) {
|
|
89
|
+
logger.error(dedent`Error getting working directory fingerprint for cache key - ${options.workingDir}: ${String(error)}
|
|
90
|
+
|
|
91
|
+
Caching is disabled.`);
|
|
92
|
+
return {
|
|
93
|
+
shouldCache: false,
|
|
94
|
+
shouldReadCache: false,
|
|
95
|
+
shouldWriteCache: false
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
const cache = await getCache();
|
|
99
|
+
const cacheKey = generateCacheKey(options.cacheKeyPrefix, {
|
|
100
|
+
...cacheKeyData,
|
|
101
|
+
workingDirFingerprint,
|
|
102
|
+
...options.mcp ? { mcp: options.mcp } : {}
|
|
103
|
+
});
|
|
104
|
+
return {
|
|
105
|
+
shouldCache: true,
|
|
106
|
+
shouldReadCache: !options.bustCache,
|
|
107
|
+
shouldWriteCache: true,
|
|
108
|
+
cache,
|
|
109
|
+
cacheKey,
|
|
110
|
+
workingDirFingerprint
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Try to get a cached response
|
|
115
|
+
*
|
|
116
|
+
* @param cacheResult - Result from initializeAgenticCache
|
|
117
|
+
* @param debugContext - Context for debug logging (e.g., prompt preview)
|
|
118
|
+
* @returns Cached ProviderResponse if found, undefined otherwise
|
|
119
|
+
*/
|
|
120
|
+
async function getCachedResponse(cacheResult, debugContext) {
|
|
121
|
+
if (!cacheResult.shouldReadCache || !cacheResult.cache || !cacheResult.cacheKey) return;
|
|
122
|
+
try {
|
|
123
|
+
const cachedResponse = await cacheResult.cache.get(cacheResult.cacheKey);
|
|
124
|
+
if (cachedResponse) {
|
|
125
|
+
logger.debug(`Returning cached response${debugContext ? ` for ${debugContext}` : ""} (cache key: ${cacheResult.cacheKey})`);
|
|
126
|
+
return {
|
|
127
|
+
...JSON.parse(cachedResponse),
|
|
128
|
+
cached: true
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
} catch (error) {
|
|
132
|
+
logger.error(`Error getting cached response: ${String(error)}`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Cache a provider response
|
|
137
|
+
*
|
|
138
|
+
* @param cacheResult - Result from initializeAgenticCache
|
|
139
|
+
* @param response - The ProviderResponse to cache
|
|
140
|
+
* @param debugContext - Context for debug logging
|
|
141
|
+
*/
|
|
142
|
+
async function cacheResponse(cacheResult, response, debugContext) {
|
|
143
|
+
if (!cacheResult.shouldWriteCache || !cacheResult.cache || !cacheResult.cacheKey) return;
|
|
144
|
+
try {
|
|
145
|
+
await cacheResult.cache.set(cacheResult.cacheKey, JSON.stringify(response));
|
|
146
|
+
} catch (error) {
|
|
147
|
+
logger.error(`Error caching response${debugContext ? ` for ${debugContext}` : ""}: ${String(error)}`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//#endregion
|
|
151
|
+
export { initializeAgenticCache as i, generateCacheKey as n, getCachedResponse as r, cacheResponse as t };
|
|
152
|
+
|
|
153
|
+
//# sourceMappingURL=agentic-utils-DIYAAYE7.js.map
|