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,36 +1,36 @@
|
|
|
1
|
-
const require_logger = require("./logger-
|
|
1
|
+
const require_logger = require("./logger-D5iKBpu_.cjs");
|
|
2
2
|
const require_invariant = require("./invariant-kfQ8Bu82.cjs");
|
|
3
|
-
const require_esm = require("./esm-
|
|
4
|
-
const require_pythonUtils = require("./pythonUtils-
|
|
3
|
+
const require_esm = require("./esm-CipptfDu.cjs");
|
|
4
|
+
const require_pythonUtils = require("./pythonUtils-dAVigVK-.cjs");
|
|
5
5
|
const require_fileExtensions = require("./fileExtensions-bYh77CN8.cjs");
|
|
6
|
-
const require_transform = require("./transform-
|
|
7
|
-
const require_types = require("./types-
|
|
8
|
-
const require_util = require("./util-
|
|
9
|
-
const require_fetch = require("./fetch-
|
|
10
|
-
const require_cache = require("./cache-
|
|
11
|
-
const require_createHash = require("./createHash-
|
|
12
|
-
const require_genaiTracer = require("./genaiTracer-
|
|
13
|
-
const require_chat = require("./chat-
|
|
6
|
+
const require_transform = require("./transform-ZrG2dvlo.cjs");
|
|
7
|
+
const require_types = require("./types-D8cGDZbL.cjs");
|
|
8
|
+
const require_util = require("./util-CuLo2pMR.cjs");
|
|
9
|
+
const require_fetch = require("./fetch-BnR9wSnm.cjs");
|
|
10
|
+
const require_cache = require("./cache-C5yFZ4gC.cjs");
|
|
11
|
+
const require_createHash = require("./createHash-BYwImsYv.cjs");
|
|
12
|
+
const require_genaiTracer = require("./genaiTracer-BfxrvSUb.cjs");
|
|
13
|
+
const require_chat = require("./chat-CM8qWR3_.cjs");
|
|
14
14
|
const require_tokenUsageUtils = require("./tokenUsageUtils-bVa1ga6f.cjs");
|
|
15
|
-
const require_transform$1 = require("./transform-
|
|
16
|
-
const require_messages = require("./messages-
|
|
17
|
-
const require_util$1 = require("./util
|
|
18
|
-
const require_responses = require("./responses-
|
|
19
|
-
const require_openai = require("./openai-
|
|
20
|
-
const require_util$2 = require("./util-
|
|
21
|
-
const require_completion = require("./completion-
|
|
22
|
-
const require_accounts = require("./accounts-
|
|
23
|
-
const require_server = require("./server-
|
|
24
|
-
const require_blobs = require("./blobs-
|
|
25
|
-
const require_tables = require("./tables-
|
|
26
|
-
const require_extractor = require("./extractor-
|
|
27
|
-
const require_telemetry = require("./telemetry-
|
|
15
|
+
const require_transform$1 = require("./transform-0BwoBsvO.cjs");
|
|
16
|
+
const require_messages = require("./messages-HJsyEh4o.cjs");
|
|
17
|
+
const require_util$1 = require("./util--9u9UVCt.cjs");
|
|
18
|
+
const require_responses = require("./responses-mo0KQDbu.cjs");
|
|
19
|
+
const require_openai = require("./openai-CoxGAQwn.cjs");
|
|
20
|
+
const require_util$2 = require("./util-CFj4YKIn.cjs");
|
|
21
|
+
const require_completion = require("./completion-DlXUhj5c.cjs");
|
|
22
|
+
const require_accounts = require("./accounts-BPyfpSeU.cjs");
|
|
23
|
+
const require_server = require("./server-BtoCXeXI.cjs");
|
|
24
|
+
const require_blobs = require("./blobs-C6j0bvFz.cjs");
|
|
25
|
+
const require_tables = require("./tables-BdZQEpRz.cjs");
|
|
26
|
+
const require_extractor = require("./extractor-DG3sSfXE.cjs");
|
|
27
|
+
const require_telemetry = require("./telemetry-re627Lre.cjs");
|
|
28
28
|
const require_text = require("./text-CW1cyrwj.cjs");
|
|
29
|
-
const require_store = require("./store-
|
|
30
|
-
const require_base = require("./base-
|
|
31
|
-
const require_image = require("./image
|
|
32
|
-
const require_providerRegistry = require("./providerRegistry-
|
|
33
|
-
const require_rubyUtils = require("./rubyUtils-
|
|
29
|
+
const require_store = require("./store-CLyU7AtI.cjs");
|
|
30
|
+
const require_base = require("./base-BboXIF_0.cjs");
|
|
31
|
+
const require_image = require("./image--F58eEIn.cjs");
|
|
32
|
+
const require_providerRegistry = require("./providerRegistry-BTDgfV5h.cjs");
|
|
33
|
+
const require_rubyUtils = require("./rubyUtils-CGeUtCfW.cjs");
|
|
34
34
|
let fs = require("fs");
|
|
35
35
|
fs = require_logger.__toESM(fs);
|
|
36
36
|
let path = require("path");
|
|
@@ -229,6 +229,62 @@ const AZURE_MODELS = [
|
|
|
229
229
|
output: 20 / 1e6
|
|
230
230
|
}
|
|
231
231
|
},
|
|
232
|
+
{
|
|
233
|
+
id: "gpt-5.4",
|
|
234
|
+
cost: {
|
|
235
|
+
input: 2.5 / 1e6,
|
|
236
|
+
output: 10 / 1e6
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
id: "gpt-5.4-2026-03-05",
|
|
241
|
+
cost: {
|
|
242
|
+
input: 2.5 / 1e6,
|
|
243
|
+
output: 10 / 1e6
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
id: "gpt-5.4-pro",
|
|
248
|
+
cost: {
|
|
249
|
+
input: 5 / 1e6,
|
|
250
|
+
output: 20 / 1e6
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
id: "gpt-5.4-pro-2026-03-05",
|
|
255
|
+
cost: {
|
|
256
|
+
input: 5 / 1e6,
|
|
257
|
+
output: 20 / 1e6
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
id: "gpt-5.4-mini",
|
|
262
|
+
cost: {
|
|
263
|
+
input: .4 / 1e6,
|
|
264
|
+
output: 1.6 / 1e6
|
|
265
|
+
}
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
id: "gpt-5.4-mini-2026-03-17",
|
|
269
|
+
cost: {
|
|
270
|
+
input: .4 / 1e6,
|
|
271
|
+
output: 1.6 / 1e6
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
id: "gpt-5.4-nano",
|
|
276
|
+
cost: {
|
|
277
|
+
input: .1 / 1e6,
|
|
278
|
+
output: .4 / 1e6
|
|
279
|
+
}
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
id: "gpt-5.4-nano-2026-03-17",
|
|
283
|
+
cost: {
|
|
284
|
+
input: .1 / 1e6,
|
|
285
|
+
output: .4 / 1e6
|
|
286
|
+
}
|
|
287
|
+
},
|
|
232
288
|
{
|
|
233
289
|
id: "gpt-5-mini",
|
|
234
290
|
cost: {
|
|
@@ -2332,7 +2388,7 @@ var AIStudioChatProvider = class extends GoogleGenericProvider {
|
|
|
2332
2388
|
rejectedPrediction: 0
|
|
2333
2389
|
} }
|
|
2334
2390
|
};
|
|
2335
|
-
const completionForCost = data.usageMetadata?.candidatesTokenCount
|
|
2391
|
+
const completionForCost = data.usageMetadata?.candidatesTokenCount == null ? void 0 : data.usageMetadata.candidatesTokenCount + (data.usageMetadata?.thoughtsTokenCount ?? 0);
|
|
2336
2392
|
return {
|
|
2337
2393
|
output,
|
|
2338
2394
|
tokenUsage,
|
|
@@ -2429,7 +2485,7 @@ var AIStudioChatProvider = class extends GoogleGenericProvider {
|
|
|
2429
2485
|
rejectedPrediction: 0
|
|
2430
2486
|
} }
|
|
2431
2487
|
};
|
|
2432
|
-
const completionForCost = data.usageMetadata?.candidatesTokenCount
|
|
2488
|
+
const completionForCost = data.usageMetadata?.candidatesTokenCount == null ? void 0 : data.usageMetadata.candidatesTokenCount + (data.usageMetadata?.thoughtsTokenCount ?? 0);
|
|
2433
2489
|
const cost = cached ? void 0 : require_transform$1.calculateGoogleCost(this.modelName, config, data.usageMetadata?.promptTokenCount, completionForCost);
|
|
2434
2490
|
return {
|
|
2435
2491
|
output,
|
|
@@ -2853,7 +2909,7 @@ var VertexChatProvider = class extends GoogleGenericProvider {
|
|
|
2853
2909
|
rejectedPrediction: 0
|
|
2854
2910
|
} }
|
|
2855
2911
|
};
|
|
2856
|
-
const completionForCost = completionTokenCount
|
|
2912
|
+
const completionForCost = completionTokenCount == null ? void 0 : completionTokenCount + (thoughtsTokenCount ?? 0);
|
|
2857
2913
|
const cost = require_transform$1.calculateGoogleCost(this.modelName, config, promptTokenCount, completionForCost, true);
|
|
2858
2914
|
response = {
|
|
2859
2915
|
cached: false,
|
|
@@ -3336,12 +3392,14 @@ var MistralChatCompletionProvider = class MistralChatCompletionProvider {
|
|
|
3336
3392
|
};
|
|
3337
3393
|
return require_genaiTracer.withGenAISpan(spanContext, () => this.callApiInternal(prompt, context, config), resultExtractor);
|
|
3338
3394
|
}
|
|
3339
|
-
async callApiInternal(prompt,
|
|
3395
|
+
async callApiInternal(prompt, context, config = {}) {
|
|
3340
3396
|
if (!this.getApiKey()) throw new Error("Mistral API key is not set. Set the MISTRAL_API_KEY environment variable or add `apiKey` or `apiKeyEnvar` to the provider config.");
|
|
3341
3397
|
const messages = require_fetch.parseChatPrompt(prompt, [{
|
|
3342
3398
|
role: "user",
|
|
3343
3399
|
content: prompt
|
|
3344
3400
|
}]);
|
|
3401
|
+
const loadedTools = config.tools ? await require_util.maybeLoadToolsFromExternalFile(config.tools, context?.vars) : void 0;
|
|
3402
|
+
const hasTools = Array.isArray(loadedTools) ? loadedTools.length > 0 : loadedTools !== void 0;
|
|
3345
3403
|
const params = {
|
|
3346
3404
|
model: this.modelName,
|
|
3347
3405
|
messages,
|
|
@@ -3350,6 +3408,9 @@ var MistralChatCompletionProvider = class MistralChatCompletionProvider {
|
|
|
3350
3408
|
max_tokens: config?.max_tokens || 1024,
|
|
3351
3409
|
safe_prompt: config?.safe_prompt || false,
|
|
3352
3410
|
random_seed: config?.random_seed || null,
|
|
3411
|
+
...hasTools ? { tools: loadedTools } : {},
|
|
3412
|
+
...config?.tool_choice ? { tool_choice: config.tool_choice } : {},
|
|
3413
|
+
..."parallel_tool_calls" in config ? { parallel_tool_calls: Boolean(config.parallel_tool_calls) } : {},
|
|
3353
3414
|
...config?.response_format ? { response_format: config.response_format } : {}
|
|
3354
3415
|
};
|
|
3355
3416
|
const cacheKey = `mistral:${JSON.stringify(params)}`;
|
|
@@ -3390,9 +3451,14 @@ var MistralChatCompletionProvider = class MistralChatCompletionProvider {
|
|
|
3390
3451
|
}
|
|
3391
3452
|
require_logger.logger.debug("Mistral API response", { data });
|
|
3392
3453
|
if (data.error) return { error: `API call error: ${data.error}` };
|
|
3393
|
-
if (!data.choices || !data.choices[0] || !data.choices[0].message
|
|
3454
|
+
if (!data.choices || !data.choices[0] || !data.choices[0].message) return { error: `Malformed response data: ${JSON.stringify(data)}` };
|
|
3455
|
+
const message = data.choices[0].message;
|
|
3456
|
+
let output;
|
|
3457
|
+
if (message.content && message.tool_calls?.length) output = message;
|
|
3458
|
+
else if (message.tool_calls?.length) output = message.tool_calls;
|
|
3459
|
+
else output = message.content;
|
|
3394
3460
|
const result = {
|
|
3395
|
-
output
|
|
3461
|
+
output,
|
|
3396
3462
|
tokenUsage: getTokenUsage$1(data, cached),
|
|
3397
3463
|
cached,
|
|
3398
3464
|
cost: calculateMistralCost(this.modelName, config, data.usage?.prompt_tokens, data.usage?.completion_tokens)
|
|
@@ -3723,9 +3789,9 @@ function normalizeEvalConfig(config) {
|
|
|
3723
3789
|
const tests = Array.isArray(config.tests) ? config.tests : Array.isArray(config.testCases) ? config.testCases : [];
|
|
3724
3790
|
const commandLineOptions = {
|
|
3725
3791
|
...isRecord(config.commandLineOptions) ? config.commandLineOptions : {},
|
|
3726
|
-
...config.maxConcurrency
|
|
3727
|
-
...config.delay
|
|
3728
|
-
...config.verbose
|
|
3792
|
+
...config.maxConcurrency == null ? {} : { maxConcurrency: config.maxConcurrency },
|
|
3793
|
+
...config.delay == null ? {} : { delay: config.delay },
|
|
3794
|
+
...config.verbose == null ? {} : { verbose: config.verbose }
|
|
3729
3795
|
};
|
|
3730
3796
|
const normalizedConfig = {
|
|
3731
3797
|
...config,
|
|
@@ -5355,7 +5421,7 @@ async function loadRedteamProvider({ provider, jsonOnly = false, preferSmallMode
|
|
|
5355
5421
|
ret = redteamProvider;
|
|
5356
5422
|
} else if (typeof redteamProvider === "string" || require_types.isProviderOptions(redteamProvider)) {
|
|
5357
5423
|
require_logger.logger.debug(`Loading ${purpose} provider`, { provider: redteamProvider });
|
|
5358
|
-
ret = (await (await Promise.resolve().then(() => require("./providers-
|
|
5424
|
+
ret = (await (await Promise.resolve().then(() => require("./providers-D-FnDg8k.cjs"))).loadApiProviders([redteamProvider]))[0];
|
|
5359
5425
|
} else {
|
|
5360
5426
|
const defaultModel = preferSmallModel ? ATTACKER_MODEL_SMALL : ATTACKER_MODEL;
|
|
5361
5427
|
require_logger.logger.debug(`Using default ${purpose} provider: ${defaultModel}`);
|
|
@@ -5642,7 +5708,7 @@ async function externalizeResponseForRedteamHistory(response, context) {
|
|
|
5642
5708
|
*/
|
|
5643
5709
|
async function tryUnblocking({ messages, lastResponse, goal, purpose }) {
|
|
5644
5710
|
try {
|
|
5645
|
-
const { checkServerFeatureSupport } = await Promise.resolve().then(() => require("./server-
|
|
5711
|
+
const { checkServerFeatureSupport } = await Promise.resolve().then(() => require("./server-DJTKu9IR.cjs"));
|
|
5646
5712
|
const supportsUnblocking = await checkServerFeatureSupport("blocking-question-analysis", "2025-06-16T14:49:11-07:00");
|
|
5647
5713
|
if (!require_logger.getEnvBool("PROMPTFOO_ENABLE_UNBLOCKING")) {
|
|
5648
5714
|
require_logger.logger.debug("[Unblocking] Disabled by default (set PROMPTFOO_ENABLE_UNBLOCKING=true to enable)");
|
|
@@ -9551,7 +9617,15 @@ async function generateCompositePrompts(testCases, injectVar, config) {
|
|
|
9551
9617
|
email: require_accounts.getUserEmail(),
|
|
9552
9618
|
...config.n && { n: config.n },
|
|
9553
9619
|
...config.modelFamily && { modelFamily: config.modelFamily },
|
|
9554
|
-
...inputs && { inputs }
|
|
9620
|
+
...inputs && { inputs },
|
|
9621
|
+
...config.techniques && { techniques: config.techniques },
|
|
9622
|
+
...config.evasions && { evasions: config.evasions },
|
|
9623
|
+
...config.alwaysIncludeTechniques && { alwaysIncludeTechniques: config.alwaysIncludeTechniques },
|
|
9624
|
+
...config.compositionOrder && { compositionOrder: config.compositionOrder },
|
|
9625
|
+
...config.combinationMode && { combinationMode: config.combinationMode },
|
|
9626
|
+
...config.includeEvasionGuidance != null && { includeEvasionGuidance: config.includeEvasionGuidance },
|
|
9627
|
+
...config.evasionGuidance && { evasionGuidance: config.evasionGuidance },
|
|
9628
|
+
...config.targetContext && { targetContext: config.targetContext }
|
|
9555
9629
|
};
|
|
9556
9630
|
const { data } = await require_cache.fetchWithCache(require_server.getRemoteGenerationUrl(), {
|
|
9557
9631
|
method: "POST",
|
|
@@ -10682,7 +10756,7 @@ var CrescendoProvider = class {
|
|
|
10682
10756
|
});
|
|
10683
10757
|
let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
|
|
10684
10758
|
if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
|
|
10685
|
-
const { getGraderById } = await Promise.resolve().then(() => require("./graders-
|
|
10759
|
+
const { getGraderById } = await Promise.resolve().then(() => require("./graders-DjCXfj0l.cjs"));
|
|
10686
10760
|
let graderPassed;
|
|
10687
10761
|
const additionalRubric = getGoalRubric(this.userGoal);
|
|
10688
10762
|
while (roundNum < this.maxTurns) try {
|
|
@@ -10788,18 +10862,7 @@ var CrescendoProvider = class {
|
|
|
10788
10862
|
if (grader) {
|
|
10789
10863
|
const gradingTraceSummary = tracingOptions.includeInGrading ? response.traceSummary ?? (response.traceContext ? formatTraceSummary(response.traceContext) : void 0) : void 0;
|
|
10790
10864
|
let gradingContext;
|
|
10791
|
-
if (lastResponse.metadata?.wasExfiltrated
|
|
10792
|
-
require_logger.logger.debug("[Crescendo] Using exfil data from provider response metadata");
|
|
10793
|
-
gradingContext = {
|
|
10794
|
-
...tracingOptions.includeInGrading ? {
|
|
10795
|
-
traceContext: response.traceContext,
|
|
10796
|
-
traceSummary: gradingTraceSummary
|
|
10797
|
-
} : {},
|
|
10798
|
-
wasExfiltrated: Boolean(lastResponse.metadata.wasExfiltrated),
|
|
10799
|
-
exfilCount: Number(lastResponse.metadata.exfilCount) || 0,
|
|
10800
|
-
exfilRecords: []
|
|
10801
|
-
};
|
|
10802
|
-
} else {
|
|
10865
|
+
if (lastResponse.metadata?.wasExfiltrated === void 0) {
|
|
10803
10866
|
const webPageUuid = test.metadata?.webPageUuid;
|
|
10804
10867
|
if (webPageUuid) {
|
|
10805
10868
|
const evalId = context?.evaluationId ?? test.metadata?.evaluationId;
|
|
@@ -10818,6 +10881,17 @@ var CrescendoProvider = class {
|
|
|
10818
10881
|
exfilRecords: exfilData.exfilRecords
|
|
10819
10882
|
};
|
|
10820
10883
|
}
|
|
10884
|
+
} else {
|
|
10885
|
+
require_logger.logger.debug("[Crescendo] Using exfil data from provider response metadata");
|
|
10886
|
+
gradingContext = {
|
|
10887
|
+
...tracingOptions.includeInGrading ? {
|
|
10888
|
+
traceContext: response.traceContext,
|
|
10889
|
+
traceSummary: gradingTraceSummary
|
|
10890
|
+
} : {},
|
|
10891
|
+
wasExfiltrated: Boolean(lastResponse.metadata.wasExfiltrated),
|
|
10892
|
+
exfilCount: Number(lastResponse.metadata.exfilCount) || 0,
|
|
10893
|
+
exfilRecords: []
|
|
10894
|
+
};
|
|
10821
10895
|
}
|
|
10822
10896
|
if (!gradingContext && tracingOptions.includeInGrading) gradingContext = {
|
|
10823
10897
|
traceContext: response.traceContext,
|
|
@@ -11373,7 +11447,7 @@ var CustomProvider = class {
|
|
|
11373
11447
|
let lastTransformResult;
|
|
11374
11448
|
let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
|
|
11375
11449
|
if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
|
|
11376
|
-
const { getGraderById } = await Promise.resolve().then(() => require("./graders-
|
|
11450
|
+
const { getGraderById } = await Promise.resolve().then(() => require("./graders-DjCXfj0l.cjs"));
|
|
11377
11451
|
let graderPassed;
|
|
11378
11452
|
let storedGraderResult;
|
|
11379
11453
|
const additionalRubric = getGoalRubric(this.userGoal);
|
|
@@ -11871,7 +11945,7 @@ var GoatProvider = class {
|
|
|
11871
11945
|
let assertToUse;
|
|
11872
11946
|
let graderPassed;
|
|
11873
11947
|
let storedGraderResult;
|
|
11874
|
-
const { getGraderById } = await Promise.resolve().then(() => require("./graders-
|
|
11948
|
+
const { getGraderById } = await Promise.resolve().then(() => require("./graders-DjCXfj0l.cjs"));
|
|
11875
11949
|
let test;
|
|
11876
11950
|
if (context?.test) {
|
|
11877
11951
|
test = context?.test;
|
|
@@ -12154,18 +12228,7 @@ var GoatProvider = class {
|
|
|
12154
12228
|
const grader = assertToUse ? getGraderById(assertToUse.type) : void 0;
|
|
12155
12229
|
if (test && grader && finalOutput) {
|
|
12156
12230
|
let gradingContext;
|
|
12157
|
-
if (finalResponse.metadata?.wasExfiltrated
|
|
12158
|
-
require_logger.logger.debug("[GOAT] Using exfil data from provider response metadata");
|
|
12159
|
-
gradingContext = {
|
|
12160
|
-
...tracingOptions.includeInGrading ? {
|
|
12161
|
-
traceContext: targetResponse.traceContext,
|
|
12162
|
-
traceSummary: gradingTraceSummary
|
|
12163
|
-
} : {},
|
|
12164
|
-
wasExfiltrated: Boolean(finalResponse.metadata.wasExfiltrated),
|
|
12165
|
-
exfilCount: Number(finalResponse.metadata.exfilCount) || 0,
|
|
12166
|
-
exfilRecords: []
|
|
12167
|
-
};
|
|
12168
|
-
} else {
|
|
12231
|
+
if (finalResponse.metadata?.wasExfiltrated === void 0) {
|
|
12169
12232
|
const webPageUuid = test.metadata?.webPageUuid;
|
|
12170
12233
|
if (webPageUuid) {
|
|
12171
12234
|
const evalId = context?.evaluationId ?? test.metadata?.evaluationId;
|
|
@@ -12184,6 +12247,17 @@ var GoatProvider = class {
|
|
|
12184
12247
|
exfilRecords: exfilData.exfilRecords
|
|
12185
12248
|
};
|
|
12186
12249
|
}
|
|
12250
|
+
} else {
|
|
12251
|
+
require_logger.logger.debug("[GOAT] Using exfil data from provider response metadata");
|
|
12252
|
+
gradingContext = {
|
|
12253
|
+
...tracingOptions.includeInGrading ? {
|
|
12254
|
+
traceContext: targetResponse.traceContext,
|
|
12255
|
+
traceSummary: gradingTraceSummary
|
|
12256
|
+
} : {},
|
|
12257
|
+
wasExfiltrated: Boolean(finalResponse.metadata.wasExfiltrated),
|
|
12258
|
+
exfilCount: Number(finalResponse.metadata.exfilCount) || 0,
|
|
12259
|
+
exfilRecords: []
|
|
12260
|
+
};
|
|
12187
12261
|
}
|
|
12188
12262
|
if (!gradingContext && tracingOptions.includeInGrading) gradingContext = {
|
|
12189
12263
|
traceContext: targetResponse.traceContext,
|
|
@@ -12344,7 +12418,7 @@ var HydraProvider = class {
|
|
|
12344
12418
|
let lastTransformResult;
|
|
12345
12419
|
let lastTransformDisplayVars;
|
|
12346
12420
|
let lastFinalAttackPrompt;
|
|
12347
|
-
const { getGraderById } = await Promise.resolve().then(() => require("./graders-
|
|
12421
|
+
const { getGraderById } = await Promise.resolve().then(() => require("./graders-DjCXfj0l.cjs"));
|
|
12348
12422
|
let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
|
|
12349
12423
|
if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
|
|
12350
12424
|
let previousTraceSummary;
|
|
@@ -13198,7 +13272,7 @@ async function runRedteamConversation$2({ context, filters, injectVar, numIterat
|
|
|
13198
13272
|
if (sessionId) sessionIds.push(sessionId);
|
|
13199
13273
|
let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
|
|
13200
13274
|
if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
|
|
13201
|
-
const { getGraderById } = await Promise.resolve().then(() => require("./graders-
|
|
13275
|
+
const { getGraderById } = await Promise.resolve().then(() => require("./graders-DjCXfj0l.cjs"));
|
|
13202
13276
|
if (test && assertToUse) {
|
|
13203
13277
|
const grader = getGraderById(assertToUse.type);
|
|
13204
13278
|
if (grader) {
|
|
@@ -14025,7 +14099,7 @@ async function runMetaAgentRedteam({ context, filters, injectVar, numIterations,
|
|
|
14025
14099
|
previousTraceSummary = attackTraceSummary;
|
|
14026
14100
|
let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
|
|
14027
14101
|
if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
|
|
14028
|
-
const { getGraderById } = await Promise.resolve().then(() => require("./graders-
|
|
14102
|
+
const { getGraderById } = await Promise.resolve().then(() => require("./graders-DjCXfj0l.cjs"));
|
|
14029
14103
|
if (test && assertToUse) {
|
|
14030
14104
|
const grader = getGraderById(assertToUse.type);
|
|
14031
14105
|
if (grader) {
|
|
@@ -14609,7 +14683,7 @@ async function runRedteamConversation({ context, filters, injectVar, options, pr
|
|
|
14609
14683
|
noImprovementCount++;
|
|
14610
14684
|
if (noImprovementCount % 5 === 0) require_logger.logger.debug(`[Depth ${depth}, Attempt ${attempts}] No improvement for ${noImprovementCount} consecutive iterations. Max score: ${maxScore}`);
|
|
14611
14685
|
}
|
|
14612
|
-
const { getGraderById } = await Promise.resolve().then(() => require("./graders-
|
|
14686
|
+
const { getGraderById } = await Promise.resolve().then(() => require("./graders-DjCXfj0l.cjs"));
|
|
14613
14687
|
let graderPassed;
|
|
14614
14688
|
let assertToUse = test?.assert?.find((a) => a.type && a.type.includes(test.metadata?.pluginId));
|
|
14615
14689
|
if (!assertToUse) assertToUse = test?.assert?.find((a) => a.type);
|
|
@@ -15283,7 +15357,7 @@ var AI21ChatCompletionProvider = class AI21ChatCompletionProvider {
|
|
|
15283
15357
|
messages,
|
|
15284
15358
|
temperature: config?.temperature ?? .1,
|
|
15285
15359
|
top_p: config?.top_p || 1,
|
|
15286
|
-
max_tokens: config?.max_tokens
|
|
15360
|
+
max_tokens: config?.max_tokens ?? 1024,
|
|
15287
15361
|
n: 1,
|
|
15288
15362
|
stop: [],
|
|
15289
15363
|
response_format: config.response_format || { type: "text" }
|
|
@@ -15464,7 +15538,7 @@ var AnthropicCompletionProvider = class extends require_messages.AnthropicGeneri
|
|
|
15464
15538
|
const params = {
|
|
15465
15539
|
model: this.modelName,
|
|
15466
15540
|
prompt: `${_anthropic_ai_sdk.default.HUMAN_PROMPT} ${prompt} ${_anthropic_ai_sdk.default.AI_PROMPT}`,
|
|
15467
|
-
max_tokens_to_sample: this.config?.max_tokens_to_sample
|
|
15541
|
+
max_tokens_to_sample: this.config?.max_tokens_to_sample ?? require_logger.getEnvInt("ANTHROPIC_MAX_TOKENS", 1024),
|
|
15468
15542
|
temperature: this.config.temperature ?? require_logger.getEnvFloat("ANTHROPIC_TEMPERATURE", 0),
|
|
15469
15543
|
stop_sequences: stop
|
|
15470
15544
|
};
|
|
@@ -16003,61 +16077,65 @@ var AzureCompletionProvider = class extends AzureGenericProvider {
|
|
|
16003
16077
|
var AzureFoundryAgentProvider = class extends AzureGenericProvider {
|
|
16004
16078
|
assistantConfig;
|
|
16005
16079
|
loadedFunctionCallbacks = {};
|
|
16080
|
+
processor;
|
|
16006
16081
|
projectClient = null;
|
|
16007
16082
|
projectUrl;
|
|
16083
|
+
resolvedAgent = null;
|
|
16084
|
+
warnedUnsupportedFields = /* @__PURE__ */ new Set();
|
|
16008
16085
|
constructor(deploymentName, options = {}) {
|
|
16009
16086
|
super(deploymentName, options);
|
|
16010
16087
|
this.assistantConfig = options.config || {};
|
|
16011
16088
|
this.projectUrl = options.config?.projectUrl || process.env.AZURE_AI_PROJECT_URL || "";
|
|
16012
16089
|
if (!this.projectUrl) throw new Error("Azure AI Project URL must be provided via projectUrl option or AZURE_AI_PROJECT_URL environment variable");
|
|
16090
|
+
this.processor = new require_responses.ResponsesProcessor({
|
|
16091
|
+
modelName: this.assistantConfig.modelName || deploymentName,
|
|
16092
|
+
providerType: "azure",
|
|
16093
|
+
functionCallbackHandler: new require_responses.FunctionCallbackHandler(),
|
|
16094
|
+
costCalculator: (_modelName, usage, requestConfig) => calculateAzureCost(requestConfig?.model || this.assistantConfig.modelName || this.deploymentName, usage) ?? 0
|
|
16095
|
+
});
|
|
16013
16096
|
if (this.assistantConfig.functionToolCallbacks) this.preloadFunctionCallbacks();
|
|
16014
16097
|
}
|
|
16015
|
-
/**
|
|
16016
|
-
* Initialize the Azure AI Project client
|
|
16017
|
-
*/
|
|
16018
16098
|
async initializeClient() {
|
|
16019
16099
|
if (this.projectClient) return this.projectClient;
|
|
16020
16100
|
try {
|
|
16021
16101
|
const { AIProjectClient } = await import("@azure/ai-projects");
|
|
16022
16102
|
const { DefaultAzureCredential } = await import("@azure/identity");
|
|
16023
|
-
|
|
16103
|
+
const projectClient = new AIProjectClient(this.projectUrl, new DefaultAzureCredential());
|
|
16104
|
+
this.projectClient = projectClient;
|
|
16024
16105
|
require_logger.logger.debug("Azure AI Project client initialized successfully");
|
|
16025
|
-
return
|
|
16106
|
+
return projectClient;
|
|
16026
16107
|
} catch (error) {
|
|
16027
|
-
|
|
16028
|
-
|
|
16108
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
16109
|
+
require_logger.logger.error(`Failed to initialize Azure AI Project client: ${errorMessage}`);
|
|
16110
|
+
throw new Error(`Failed to initialize Azure AI Project client: ${errorMessage}`);
|
|
16029
16111
|
}
|
|
16030
16112
|
}
|
|
16031
|
-
|
|
16032
|
-
|
|
16033
|
-
|
|
16113
|
+
async resolveAgent(client) {
|
|
16114
|
+
if (this.resolvedAgent) return this.resolvedAgent;
|
|
16115
|
+
try {
|
|
16116
|
+
const agent = await client.agents.get(this.deploymentName);
|
|
16117
|
+
this.resolvedAgent = agent;
|
|
16118
|
+
return agent;
|
|
16119
|
+
} catch (error) {
|
|
16120
|
+
require_logger.logger.debug(`[AzureFoundryAgentProvider] Direct agent lookup failed for '${this.deploymentName}', falling back to list lookup`, { error: error instanceof Error ? error.message : String(error) });
|
|
16121
|
+
}
|
|
16122
|
+
for await (const agent of client.agents.list()) if (agent.id === this.deploymentName || agent.name === this.deploymentName) {
|
|
16123
|
+
this.resolvedAgent = agent;
|
|
16124
|
+
return agent;
|
|
16125
|
+
}
|
|
16126
|
+
throw new Error(`Azure Foundry agent '${this.deploymentName}' was not found by name or legacy ID in project '${this.projectUrl}'. The Azure AI Projects v2 SDK resolves agents by name. Update the provider to use azure:foundry-agent:<agent-name>, or keep using the legacy ID format and ensure the agent still exists in this project.`);
|
|
16127
|
+
}
|
|
16034
16128
|
async preloadFunctionCallbacks() {
|
|
16035
16129
|
if (!this.assistantConfig.functionToolCallbacks) return;
|
|
16036
16130
|
const callbacks = this.assistantConfig.functionToolCallbacks;
|
|
16037
16131
|
for (const [name, callback] of Object.entries(callbacks)) try {
|
|
16038
|
-
if (typeof callback === "string")
|
|
16039
|
-
|
|
16040
|
-
|
|
16041
|
-
const fn = await this.loadExternalFunction(callbackStr);
|
|
16042
|
-
this.loadedFunctionCallbacks[name] = fn;
|
|
16043
|
-
require_logger.logger.debug(`Successfully preloaded function callback '${name}' from file`);
|
|
16044
|
-
} else {
|
|
16045
|
-
this.loadedFunctionCallbacks[name] = new Function("return " + callbackStr)();
|
|
16046
|
-
require_logger.logger.debug(`Successfully preloaded inline function callback '${name}'`);
|
|
16047
|
-
}
|
|
16048
|
-
} else if (typeof callback === "function") {
|
|
16049
|
-
this.loadedFunctionCallbacks[name] = callback;
|
|
16050
|
-
require_logger.logger.debug(`Successfully stored function callback '${name}'`);
|
|
16051
|
-
}
|
|
16132
|
+
if (typeof callback === "string") if (callback.startsWith("file://")) this.loadedFunctionCallbacks[name] = await this.loadExternalFunction(callback);
|
|
16133
|
+
else this.loadedFunctionCallbacks[name] = new Function("return " + callback)();
|
|
16134
|
+
else if (typeof callback === "function") this.loadedFunctionCallbacks[name] = callback;
|
|
16052
16135
|
} catch (error) {
|
|
16053
16136
|
require_logger.logger.error(`Failed to preload function callback '${name}': ${error}`);
|
|
16054
16137
|
}
|
|
16055
16138
|
}
|
|
16056
|
-
/**
|
|
16057
|
-
* Loads a function from an external file
|
|
16058
|
-
* @param fileRef The file reference in the format 'file://path/to/file:functionName'
|
|
16059
|
-
* @returns The loaded function
|
|
16060
|
-
*/
|
|
16061
16139
|
async loadExternalFunction(fileRef) {
|
|
16062
16140
|
let filePath = fileRef.slice(7);
|
|
16063
16141
|
let functionName;
|
|
@@ -16066,11 +16144,9 @@ var AzureFoundryAgentProvider = class extends AzureGenericProvider {
|
|
|
16066
16144
|
if (splits[0] && require_fileExtensions.isJavascriptFile(splits[0])) [filePath, functionName] = splits;
|
|
16067
16145
|
}
|
|
16068
16146
|
try {
|
|
16069
|
-
const
|
|
16070
|
-
require_logger.logger.debug(`Loading function from ${resolvedPath}${functionName ? `:${functionName}` : ""}`);
|
|
16071
|
-
const requiredModule = await require_esm.importModule(resolvedPath, functionName);
|
|
16147
|
+
const requiredModule = await require_esm.importModule(path.default.resolve(require_logger.state.basePath || "", filePath), functionName);
|
|
16072
16148
|
if (typeof requiredModule === "function") return requiredModule;
|
|
16073
|
-
|
|
16149
|
+
if (requiredModule && typeof requiredModule === "object" && functionName && functionName in requiredModule) {
|
|
16074
16150
|
const fn = requiredModule[functionName];
|
|
16075
16151
|
if (typeof fn === "function") return fn;
|
|
16076
16152
|
}
|
|
@@ -16079,139 +16155,197 @@ var AzureFoundryAgentProvider = class extends AzureGenericProvider {
|
|
|
16079
16155
|
throw new Error(`Error loading function from ${filePath}: ${error.message || String(error)}`);
|
|
16080
16156
|
}
|
|
16081
16157
|
}
|
|
16082
|
-
|
|
16083
|
-
* Executes a function callback with proper error handling
|
|
16084
|
-
*/
|
|
16085
|
-
async executeFunctionCallback(functionName, args, context) {
|
|
16158
|
+
async executeFunctionCallback(functionName, args, context, callbacks) {
|
|
16086
16159
|
try {
|
|
16087
16160
|
let callback = this.loadedFunctionCallbacks[functionName];
|
|
16161
|
+
const effectiveCallbacks = callbacks || this.assistantConfig.functionToolCallbacks;
|
|
16088
16162
|
if (!callback) {
|
|
16089
|
-
const callbackRef =
|
|
16090
|
-
if (callbackRef && typeof callbackRef === "string")
|
|
16091
|
-
|
|
16092
|
-
|
|
16093
|
-
|
|
16094
|
-
this.loadedFunctionCallbacks[functionName] = callback;
|
|
16095
|
-
} else if (typeof callbackRef === "function") {
|
|
16096
|
-
callback = callbackRef;
|
|
16097
|
-
this.loadedFunctionCallbacks[functionName] = callback;
|
|
16098
|
-
}
|
|
16163
|
+
const callbackRef = effectiveCallbacks?.[functionName];
|
|
16164
|
+
if (callbackRef && typeof callbackRef === "string") if (callbackRef.startsWith("file://")) callback = await this.loadExternalFunction(callbackRef);
|
|
16165
|
+
else callback = new Function("return " + callbackRef)();
|
|
16166
|
+
else if (typeof callbackRef === "function") callback = callbackRef;
|
|
16167
|
+
if (callback) this.loadedFunctionCallbacks[functionName] = callback;
|
|
16099
16168
|
}
|
|
16100
16169
|
if (!callback) throw new Error(`No callback found for function '${functionName}'`);
|
|
16101
|
-
require_logger.logger.debug(`Executing function '${functionName}' with args: ${args}${context ? ` and context: ${JSON.stringify(context)}` : ""}`);
|
|
16102
16170
|
const result = await callback(args, context);
|
|
16103
16171
|
if (result === void 0 || result === null) return "";
|
|
16104
|
-
|
|
16105
|
-
|
|
16106
|
-
} catch (error) {
|
|
16107
|
-
require_logger.logger.warn(`Error stringifying result from function '${functionName}': ${error}`);
|
|
16108
|
-
return String(result);
|
|
16109
|
-
}
|
|
16110
|
-
else return String(result);
|
|
16172
|
+
if (typeof result === "object") return JSON.stringify(result);
|
|
16173
|
+
return String(result);
|
|
16111
16174
|
} catch (error) {
|
|
16112
16175
|
require_logger.logger.error(`Error executing function '${functionName}': ${error.message || String(error)}`);
|
|
16113
16176
|
return JSON.stringify({ error: `Error in ${functionName}: ${error.message || String(error)}` });
|
|
16114
16177
|
}
|
|
16115
16178
|
}
|
|
16179
|
+
parsePromptInput(prompt) {
|
|
16180
|
+
try {
|
|
16181
|
+
const parsedJson = JSON.parse(prompt);
|
|
16182
|
+
if (Array.isArray(parsedJson)) return parsedJson;
|
|
16183
|
+
} catch {}
|
|
16184
|
+
return [{
|
|
16185
|
+
type: "message",
|
|
16186
|
+
role: "user",
|
|
16187
|
+
content: prompt
|
|
16188
|
+
}];
|
|
16189
|
+
}
|
|
16190
|
+
warnForUnsupportedConfig(config) {
|
|
16191
|
+
const unsupportedFields = [
|
|
16192
|
+
config.frequency_penalty === void 0 ? null : "frequency_penalty",
|
|
16193
|
+
config.presence_penalty === void 0 ? null : "presence_penalty",
|
|
16194
|
+
config.retryOptions ? "retryOptions" : null,
|
|
16195
|
+
config.seed === void 0 ? null : "seed",
|
|
16196
|
+
config.stop?.length ? "stop" : null,
|
|
16197
|
+
config.timeoutMs === void 0 ? null : "timeoutMs",
|
|
16198
|
+
config.tool_resources ? "tool_resources" : null
|
|
16199
|
+
].filter(Boolean);
|
|
16200
|
+
if (unsupportedFields.length === 0) return;
|
|
16201
|
+
const warningKey = unsupportedFields.sort().join(",");
|
|
16202
|
+
if (this.warnedUnsupportedFields.has(warningKey)) return;
|
|
16203
|
+
this.warnedUnsupportedFields.add(warningKey);
|
|
16204
|
+
require_logger.logger.warn(`[AzureFoundryAgentProvider] The Azure AI Projects v2 agent runtime ignores these per-request settings: ${unsupportedFields.join(", ")}. Configure them on the agent itself, or pass supported Responses API fields instead.`);
|
|
16205
|
+
}
|
|
16206
|
+
async buildResponsesBody(prompt, context) {
|
|
16207
|
+
const config = {
|
|
16208
|
+
...this.assistantConfig,
|
|
16209
|
+
...context?.prompt?.config
|
|
16210
|
+
};
|
|
16211
|
+
this.warnForUnsupportedConfig(config);
|
|
16212
|
+
const responseFormat = require_util.maybeLoadResponseFormatFromExternalFile(config.response_format, context?.vars);
|
|
16213
|
+
const loadedTools = config.tools ? await require_util.maybeLoadToolsFromExternalFile(config.tools, context?.vars) : void 0;
|
|
16214
|
+
const reasoningEffort = config.reasoning_effort ? require_util.renderVarsInObject(config.reasoning_effort, context?.vars) : void 0;
|
|
16215
|
+
const maxOutputTokens = config.max_output_tokens ?? config.max_completion_tokens ?? config.max_tokens;
|
|
16216
|
+
let text;
|
|
16217
|
+
if (responseFormat?.type === "json_object") text = { format: { type: "json_object" } };
|
|
16218
|
+
else if (responseFormat?.type === "json_schema") {
|
|
16219
|
+
const schema = responseFormat.schema || responseFormat.json_schema?.schema;
|
|
16220
|
+
text = { format: {
|
|
16221
|
+
type: "json_schema",
|
|
16222
|
+
name: responseFormat.json_schema?.name || responseFormat.name || "response_schema",
|
|
16223
|
+
schema,
|
|
16224
|
+
strict: responseFormat.json_schema?.strict ?? responseFormat.strict ?? true
|
|
16225
|
+
} };
|
|
16226
|
+
}
|
|
16227
|
+
if (config.verbosity) text = {
|
|
16228
|
+
...text || {},
|
|
16229
|
+
verbosity: config.verbosity
|
|
16230
|
+
};
|
|
16231
|
+
return {
|
|
16232
|
+
body: {
|
|
16233
|
+
input: this.parsePromptInput(prompt),
|
|
16234
|
+
...config.instructions ? { instructions: config.instructions } : {},
|
|
16235
|
+
...config.metadata ? { metadata: config.metadata } : {},
|
|
16236
|
+
...config.modelName ? { model: config.modelName } : {},
|
|
16237
|
+
...maxOutputTokens === void 0 ? {} : { max_output_tokens: maxOutputTokens },
|
|
16238
|
+
...reasoningEffort ? { reasoning: { effort: reasoningEffort } } : {},
|
|
16239
|
+
...config.temperature === void 0 ? {} : { temperature: config.temperature },
|
|
16240
|
+
...config.top_p === void 0 ? {} : { top_p: config.top_p },
|
|
16241
|
+
...config.tool_choice ? { tool_choice: config.tool_choice } : {},
|
|
16242
|
+
...loadedTools ? { tools: loadedTools } : {},
|
|
16243
|
+
...text ? { text } : {},
|
|
16244
|
+
...config.passthrough || {}
|
|
16245
|
+
},
|
|
16246
|
+
effectiveConfig: {
|
|
16247
|
+
...config,
|
|
16248
|
+
response_format: responseFormat,
|
|
16249
|
+
tools: loadedTools
|
|
16250
|
+
}
|
|
16251
|
+
};
|
|
16252
|
+
}
|
|
16253
|
+
getFunctionCalls(response) {
|
|
16254
|
+
return (response.output || []).filter((item) => {
|
|
16255
|
+
return item?.type === "function_call" && typeof item.id === "string" && typeof item.call_id === "string" && typeof item.name === "string" && typeof item.arguments === "string";
|
|
16256
|
+
});
|
|
16257
|
+
}
|
|
16258
|
+
getCallableFunctionCalls(response, callbacks) {
|
|
16259
|
+
const functionCalls = this.getFunctionCalls(response);
|
|
16260
|
+
if (functionCalls.length === 0 || !callbacks || Object.keys(callbacks).length === 0) return [];
|
|
16261
|
+
const missingCallbacks = functionCalls.filter((call) => !(call.name in callbacks));
|
|
16262
|
+
if (missingCallbacks.length > 0) {
|
|
16263
|
+
require_logger.logger.debug(`[AzureFoundryAgentProvider] Returning unresolved function calls because callbacks are missing for: ${missingCallbacks.map((call) => call.name).join(", ")}`);
|
|
16264
|
+
return [];
|
|
16265
|
+
}
|
|
16266
|
+
return functionCalls;
|
|
16267
|
+
}
|
|
16268
|
+
async buildFunctionCallOutputs(functionCalls, response, agent, callbacks) {
|
|
16269
|
+
const callbackContext = {
|
|
16270
|
+
threadId: response.conversation?.id || response.id,
|
|
16271
|
+
runId: response.id,
|
|
16272
|
+
assistantId: agent.id,
|
|
16273
|
+
provider: "azure-foundry"
|
|
16274
|
+
};
|
|
16275
|
+
return Promise.all(functionCalls.map(async (call) => ({
|
|
16276
|
+
type: "function_call_output",
|
|
16277
|
+
call_id: call.call_id,
|
|
16278
|
+
output: await this.executeFunctionCallback(call.name, call.arguments, callbackContext, callbacks)
|
|
16279
|
+
})));
|
|
16280
|
+
}
|
|
16281
|
+
getAgentReference(agent) {
|
|
16282
|
+
return { body: { agent: {
|
|
16283
|
+
name: agent.name,
|
|
16284
|
+
type: "agent_reference"
|
|
16285
|
+
} } };
|
|
16286
|
+
}
|
|
16287
|
+
async processResponse(response, effectiveConfig) {
|
|
16288
|
+
const result = await this.processor.processResponseOutput(response, effectiveConfig, false);
|
|
16289
|
+
if (!result.error) return result;
|
|
16290
|
+
if (response.output_text) {
|
|
16291
|
+
require_logger.logger.debug(`[AzureFoundryAgentProvider] ResponsesProcessor returned an error, falling back to output_text`, { processorError: result.error });
|
|
16292
|
+
return {
|
|
16293
|
+
...result,
|
|
16294
|
+
error: void 0,
|
|
16295
|
+
output: response.output_text,
|
|
16296
|
+
raw: response
|
|
16297
|
+
};
|
|
16298
|
+
}
|
|
16299
|
+
return result;
|
|
16300
|
+
}
|
|
16116
16301
|
async callApi(prompt, context, _callApiOptions) {
|
|
16117
|
-
const
|
|
16118
|
-
|
|
16119
|
-
instructions: this.assistantConfig.instructions,
|
|
16120
|
-
max_completion_tokens: this.assistantConfig.max_completion_tokens,
|
|
16121
|
-
max_tokens: this.assistantConfig.max_tokens,
|
|
16122
|
-
model: this.assistantConfig.modelName,
|
|
16123
|
-
presence_penalty: this.assistantConfig.presence_penalty,
|
|
16124
|
-
prompt,
|
|
16125
|
-
response_format: this.assistantConfig.response_format,
|
|
16126
|
-
seed: this.assistantConfig.seed,
|
|
16127
|
-
stop: this.assistantConfig.stop,
|
|
16128
|
-
temperature: this.assistantConfig.temperature,
|
|
16129
|
-
tool_choice: this.assistantConfig.tool_choice,
|
|
16130
|
-
tool_resources: this.assistantConfig.tool_resources,
|
|
16131
|
-
tools: JSON.stringify(await require_util.maybeLoadToolsFromExternalFile(this.assistantConfig.tools, context?.vars)),
|
|
16132
|
-
top_p: this.assistantConfig.top_p
|
|
16133
|
-
})}`;
|
|
16302
|
+
const { body, effectiveConfig } = await this.buildResponsesBody(prompt, context);
|
|
16303
|
+
const cacheKey = `azure_foundry_agent:${this.deploymentName}:${JSON.stringify(body)}`;
|
|
16134
16304
|
if (require_cache.isCacheEnabled()) try {
|
|
16135
16305
|
const cachedResult = await (await require_cache.getCache()).get(cacheKey);
|
|
16136
16306
|
if (cachedResult) {
|
|
16137
|
-
require_logger.logger.debug(`Cache hit for agent prompt: ${prompt.substring(0, 50)}...`);
|
|
16307
|
+
require_logger.logger.debug(`Cache hit for Foundry agent prompt: ${prompt.substring(0, 50)}...`);
|
|
16138
16308
|
return {
|
|
16139
16309
|
...cachedResult,
|
|
16140
16310
|
cached: true
|
|
16141
16311
|
};
|
|
16142
16312
|
}
|
|
16143
|
-
} catch (
|
|
16144
|
-
require_logger.logger.warn(`Error checking cache: ${
|
|
16313
|
+
} catch (error) {
|
|
16314
|
+
require_logger.logger.warn(`Error checking cache for Azure Foundry agent response: ${error}`);
|
|
16145
16315
|
}
|
|
16146
16316
|
try {
|
|
16147
16317
|
const client = await this.initializeClient();
|
|
16148
|
-
|
|
16149
|
-
const
|
|
16150
|
-
|
|
16151
|
-
const
|
|
16152
|
-
|
|
16153
|
-
|
|
16154
|
-
|
|
16155
|
-
|
|
16156
|
-
|
|
16157
|
-
|
|
16158
|
-
|
|
16159
|
-
|
|
16160
|
-
|
|
16161
|
-
|
|
16162
|
-
|
|
16163
|
-
|
|
16164
|
-
if (
|
|
16165
|
-
|
|
16166
|
-
if (this.assistantConfig.tool_choice) runOptions.tool_choice = this.assistantConfig.tool_choice;
|
|
16167
|
-
if (this.assistantConfig.tools) {
|
|
16168
|
-
const loadedTools = await require_util.maybeLoadToolsFromExternalFile(this.assistantConfig.tools, context?.vars);
|
|
16169
|
-
if (loadedTools !== void 0) runOptions.tools = loadedTools;
|
|
16170
|
-
}
|
|
16171
|
-
if (this.assistantConfig.modelName) runOptions.model = this.assistantConfig.modelName;
|
|
16172
|
-
if (this.assistantConfig.instructions) runOptions.instructions = this.assistantConfig.instructions;
|
|
16173
|
-
const run = await client.agents.runs.create(thread.id, agent.id, runOptions);
|
|
16174
|
-
require_logger.logger.debug(`Created run: ${run.id}`);
|
|
16175
|
-
let result;
|
|
16176
|
-
if (this.assistantConfig.functionToolCallbacks && Object.keys(this.assistantConfig.functionToolCallbacks).length > 0) result = await this.pollRunWithToolCallHandling(client, thread.id, run);
|
|
16177
|
-
else {
|
|
16178
|
-
const completedRun = await this.pollRun(client, thread.id, run.id);
|
|
16179
|
-
if (completedRun.status === "completed") result = await this.processCompletedRun(client, thread.id, completedRun);
|
|
16180
|
-
else if (completedRun.lastError) {
|
|
16181
|
-
const errorCode = completedRun.lastError.code || "";
|
|
16182
|
-
const errorMessage = completedRun.lastError.message || "";
|
|
16183
|
-
if (errorCode === "content_filter" || this.isContentFilterError(errorMessage)) {
|
|
16184
|
-
const lowerErrorMessage = errorMessage.toLowerCase();
|
|
16185
|
-
const isInputFiltered = lowerErrorMessage.includes("prompt") || lowerErrorMessage.includes("input");
|
|
16186
|
-
const isOutputFiltered = lowerErrorMessage.includes("output") || lowerErrorMessage.includes("response");
|
|
16187
|
-
result = {
|
|
16188
|
-
output: "The generated content was filtered due to triggering Azure OpenAI Service's content filtering system.",
|
|
16189
|
-
guardrails: {
|
|
16190
|
-
flagged: true,
|
|
16191
|
-
flaggedInput: isInputFiltered,
|
|
16192
|
-
flaggedOutput: !isInputFiltered && (isOutputFiltered || !isOutputFiltered)
|
|
16193
|
-
}
|
|
16194
|
-
};
|
|
16195
|
-
} else result = { error: `Thread run failed: ${errorCode} - ${errorMessage}` };
|
|
16196
|
-
} else result = { error: `Thread run failed with status: ${completedRun.status}` };
|
|
16197
|
-
}
|
|
16318
|
+
const agent = await this.resolveAgent(client);
|
|
16319
|
+
const openAIClient = client.getOpenAIClient();
|
|
16320
|
+
const responseOptions = this.getAgentReference(agent);
|
|
16321
|
+
const maxLoopTimeMs = this.assistantConfig.maxPollTimeMs || 3e5;
|
|
16322
|
+
const startTime = Date.now();
|
|
16323
|
+
let response = await openAIClient.responses.create(body, responseOptions);
|
|
16324
|
+
while (Date.now() - startTime <= maxLoopTimeMs) {
|
|
16325
|
+
const functionCalls = this.getCallableFunctionCalls(response, effectiveConfig.functionToolCallbacks);
|
|
16326
|
+
if (functionCalls.length === 0) break;
|
|
16327
|
+
const outputs = await this.buildFunctionCallOutputs(functionCalls, response, agent, effectiveConfig.functionToolCallbacks);
|
|
16328
|
+
require_logger.logger.debug(`[AzureFoundryAgentProvider] Submitting ${outputs.length} function_call_output item(s)`);
|
|
16329
|
+
response = await openAIClient.responses.create({
|
|
16330
|
+
input: outputs,
|
|
16331
|
+
previous_response_id: response.id
|
|
16332
|
+
}, responseOptions);
|
|
16333
|
+
}
|
|
16334
|
+
if (Date.now() - startTime > maxLoopTimeMs) return { error: `Azure Foundry agent tool-calling loop timed out after ${maxLoopTimeMs}ms.` };
|
|
16335
|
+
const result = await this.processResponse(response, effectiveConfig);
|
|
16198
16336
|
if (require_cache.isCacheEnabled() && !result.error) try {
|
|
16199
16337
|
await (await require_cache.getCache()).set(cacheKey, result);
|
|
16200
|
-
|
|
16201
|
-
|
|
16202
|
-
require_logger.logger.warn(`Error caching result: ${err}`);
|
|
16338
|
+
} catch (error) {
|
|
16339
|
+
require_logger.logger.warn(`Error caching Azure Foundry agent response: ${error}`);
|
|
16203
16340
|
}
|
|
16204
16341
|
return result;
|
|
16205
|
-
} catch (
|
|
16206
|
-
require_logger.logger.error(`Error in Azure Foundry Agent API call: ${
|
|
16207
|
-
return this.formatError(
|
|
16342
|
+
} catch (error) {
|
|
16343
|
+
require_logger.logger.error(`Error in Azure Foundry Agent API call: ${error}`);
|
|
16344
|
+
return this.formatError(error);
|
|
16208
16345
|
}
|
|
16209
16346
|
}
|
|
16210
|
-
|
|
16211
|
-
|
|
16212
|
-
*/
|
|
16213
|
-
formatError(err) {
|
|
16214
|
-
const errorMessage = err.message || String(err);
|
|
16347
|
+
formatError(error) {
|
|
16348
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
16215
16349
|
if (this.isContentFilterError(errorMessage)) {
|
|
16216
16350
|
const lowerErrorMessage = errorMessage.toLowerCase();
|
|
16217
16351
|
const isInputFiltered = lowerErrorMessage.includes("prompt") || lowerErrorMessage.includes("input");
|
|
@@ -16225,14 +16359,10 @@ var AzureFoundryAgentProvider = class extends AzureGenericProvider {
|
|
|
16225
16359
|
}
|
|
16226
16360
|
};
|
|
16227
16361
|
}
|
|
16228
|
-
if (errorMessage.includes("Can't add messages to thread") && errorMessage.includes("while a run")) return { error: `Error in Azure Foundry Agent API call: ${errorMessage}` };
|
|
16229
16362
|
if (this.isRateLimitError(errorMessage)) return { error: `Rate limit exceeded: ${errorMessage}` };
|
|
16230
16363
|
if (this.isServiceError(errorMessage)) return { error: `Service error: ${errorMessage}` };
|
|
16231
16364
|
return { error: `Error in Azure Foundry Agent API call: ${errorMessage}` };
|
|
16232
16365
|
}
|
|
16233
|
-
/**
|
|
16234
|
-
* Helper methods to check for specific error types
|
|
16235
|
-
*/
|
|
16236
16366
|
isContentFilterError(errorMessage) {
|
|
16237
16367
|
const lowerErrorMessage = errorMessage.toLowerCase();
|
|
16238
16368
|
return lowerErrorMessage.includes("content_filter") || lowerErrorMessage.includes("content filter") || lowerErrorMessage.includes("filtered due to") || lowerErrorMessage.includes("content filtering") || lowerErrorMessage.includes("inappropriate content") || lowerErrorMessage.includes("safety guidelines") || lowerErrorMessage.includes("guardrail");
|
|
@@ -16243,160 +16373,6 @@ var AzureFoundryAgentProvider = class extends AzureGenericProvider {
|
|
|
16243
16373
|
isServiceError(errorMessage) {
|
|
16244
16374
|
return errorMessage.includes("Service unavailable") || errorMessage.includes("Bad gateway") || errorMessage.includes("Gateway timeout") || errorMessage.includes("Server is busy") || errorMessage.includes("Sorry, something went wrong");
|
|
16245
16375
|
}
|
|
16246
|
-
isServerError(errorMessage) {
|
|
16247
|
-
return errorMessage.includes("500") || errorMessage.includes("502") || errorMessage.includes("503") || errorMessage.includes("504");
|
|
16248
|
-
}
|
|
16249
|
-
isRetryableError(code, message) {
|
|
16250
|
-
if (code === "rate_limit_exceeded") return true;
|
|
16251
|
-
if (!message) return false;
|
|
16252
|
-
return this.isRateLimitError(message) || this.isServiceError(message) || this.isServerError(message);
|
|
16253
|
-
}
|
|
16254
|
-
/**
|
|
16255
|
-
* Poll a run until it completes or fails
|
|
16256
|
-
*/
|
|
16257
|
-
async pollRun(client, threadId, runId, pollIntervalMs = 1e3) {
|
|
16258
|
-
const maxPollTime = this.assistantConfig.maxPollTimeMs || 3e5;
|
|
16259
|
-
const startTime = Date.now();
|
|
16260
|
-
let run = await client.agents.runs.get(threadId, runId);
|
|
16261
|
-
while (["queued", "in_progress"].includes(run.status)) {
|
|
16262
|
-
if (Date.now() - startTime > maxPollTime) throw new Error(`Run polling timed out after ${maxPollTime}ms. Last status: ${run.status}`);
|
|
16263
|
-
await require_fetch.sleep(pollIntervalMs);
|
|
16264
|
-
run = await client.agents.runs.get(threadId, runId);
|
|
16265
|
-
if (Date.now() - startTime > 3e4) pollIntervalMs = Math.min(pollIntervalMs * 1.5, 5e3);
|
|
16266
|
-
}
|
|
16267
|
-
return run;
|
|
16268
|
-
}
|
|
16269
|
-
/**
|
|
16270
|
-
* Handle tool calls during run polling
|
|
16271
|
-
*/
|
|
16272
|
-
async pollRunWithToolCallHandling(client, threadId, initialRun) {
|
|
16273
|
-
const maxPollTime = this.assistantConfig.maxPollTimeMs || 3e5;
|
|
16274
|
-
const startTime = Date.now();
|
|
16275
|
-
let pollIntervalMs = 1e3;
|
|
16276
|
-
let run = initialRun;
|
|
16277
|
-
while (true) {
|
|
16278
|
-
if (Date.now() - startTime > maxPollTime) return { error: `Run polling timed out after ${maxPollTime}ms. The operation may still be in progress.` };
|
|
16279
|
-
try {
|
|
16280
|
-
run = await client.agents.runs.get(threadId, run.id);
|
|
16281
|
-
require_logger.logger.debug(`Run status: ${run.status}`);
|
|
16282
|
-
if (run.status === "requires_action") if (run.requiredAction?.type === "submit_tool_outputs" && run.requiredAction.submitToolOutputs?.toolCalls) {
|
|
16283
|
-
const toolCalls = run.requiredAction.submitToolOutputs.toolCalls;
|
|
16284
|
-
const functionCallsWithCallbacks = toolCalls.filter((toolCall) => {
|
|
16285
|
-
return toolCall.type === "function" && toolCall.function && toolCall.function.name in (this.assistantConfig.functionToolCallbacks ?? {});
|
|
16286
|
-
});
|
|
16287
|
-
if (functionCallsWithCallbacks.length === 0) {
|
|
16288
|
-
require_logger.logger.debug(`No matching callbacks found for tool calls. Available functions: ${Object.keys(this.assistantConfig.functionToolCallbacks || {}).join(", ")}. Tool calls: ${JSON.stringify(toolCalls)}`);
|
|
16289
|
-
const emptyOutputs = toolCalls.map((toolCall) => ({
|
|
16290
|
-
toolCallId: toolCall.id,
|
|
16291
|
-
output: JSON.stringify({ message: `No callback registered for function ${toolCall.type === "function" ? toolCall.function?.name : toolCall.type}` })
|
|
16292
|
-
}));
|
|
16293
|
-
try {
|
|
16294
|
-
await client.agents.runs.submitToolOutputs(threadId, run.id, emptyOutputs);
|
|
16295
|
-
await require_fetch.sleep(pollIntervalMs);
|
|
16296
|
-
continue;
|
|
16297
|
-
} catch (error) {
|
|
16298
|
-
require_logger.logger.error(`Error submitting empty tool outputs: ${error.message}`);
|
|
16299
|
-
return { error: `Error submitting empty tool outputs: ${error.message}` };
|
|
16300
|
-
}
|
|
16301
|
-
}
|
|
16302
|
-
const callbackContext = {
|
|
16303
|
-
threadId,
|
|
16304
|
-
runId: run.id,
|
|
16305
|
-
assistantId: this.deploymentName,
|
|
16306
|
-
provider: "azure-foundry"
|
|
16307
|
-
};
|
|
16308
|
-
const toolOutputs = await Promise.all(functionCallsWithCallbacks.map(async (toolCall) => {
|
|
16309
|
-
const functionName = toolCall.function.name;
|
|
16310
|
-
const functionArgs = toolCall.function.arguments;
|
|
16311
|
-
try {
|
|
16312
|
-
require_logger.logger.debug(`Calling function ${functionName} with args: ${functionArgs}`);
|
|
16313
|
-
const outputResult = await this.executeFunctionCallback(functionName, functionArgs, callbackContext);
|
|
16314
|
-
require_logger.logger.debug(`Function ${functionName} result: ${outputResult}`);
|
|
16315
|
-
return {
|
|
16316
|
-
toolCallId: toolCall.id,
|
|
16317
|
-
output: outputResult
|
|
16318
|
-
};
|
|
16319
|
-
} catch (error) {
|
|
16320
|
-
require_logger.logger.error(`Error calling function ${functionName}: ${error}`);
|
|
16321
|
-
return {
|
|
16322
|
-
toolCallId: toolCall.id,
|
|
16323
|
-
output: JSON.stringify({ error: String(error) })
|
|
16324
|
-
};
|
|
16325
|
-
}
|
|
16326
|
-
}));
|
|
16327
|
-
if (toolOutputs.length === 0) {
|
|
16328
|
-
require_logger.logger.error("No valid tool outputs to submit");
|
|
16329
|
-
break;
|
|
16330
|
-
}
|
|
16331
|
-
require_logger.logger.debug(`Submitting tool outputs: ${JSON.stringify(toolOutputs)}`);
|
|
16332
|
-
try {
|
|
16333
|
-
await client.agents.runs.submitToolOutputs(threadId, run.id, toolOutputs);
|
|
16334
|
-
} catch (error) {
|
|
16335
|
-
require_logger.logger.error(`Error submitting tool outputs: ${error.message}`);
|
|
16336
|
-
return { error: `Error submitting tool outputs: ${error.message}` };
|
|
16337
|
-
}
|
|
16338
|
-
} else {
|
|
16339
|
-
require_logger.logger.error(`Unknown required action type: ${run.requiredAction?.type}`);
|
|
16340
|
-
break;
|
|
16341
|
-
}
|
|
16342
|
-
else if ([
|
|
16343
|
-
"completed",
|
|
16344
|
-
"failed",
|
|
16345
|
-
"cancelled",
|
|
16346
|
-
"expired"
|
|
16347
|
-
].includes(run.status)) {
|
|
16348
|
-
if (run.status !== "completed") {
|
|
16349
|
-
if (run.lastError) {
|
|
16350
|
-
const errorCode = run.lastError.code || "";
|
|
16351
|
-
const errorMessage = run.lastError.message || "";
|
|
16352
|
-
if (errorCode === "content_filter" || this.isContentFilterError(errorMessage)) {
|
|
16353
|
-
const lowerErrorMessage = errorMessage.toLowerCase();
|
|
16354
|
-
const isInputFiltered = lowerErrorMessage.includes("prompt") || lowerErrorMessage.includes("input");
|
|
16355
|
-
const isOutputFiltered = lowerErrorMessage.includes("output") || lowerErrorMessage.includes("response");
|
|
16356
|
-
return {
|
|
16357
|
-
output: "The generated content was filtered due to triggering Azure OpenAI Service's content filtering system.",
|
|
16358
|
-
guardrails: {
|
|
16359
|
-
flagged: true,
|
|
16360
|
-
flaggedInput: isInputFiltered,
|
|
16361
|
-
flaggedOutput: !isInputFiltered && (isOutputFiltered || !isOutputFiltered)
|
|
16362
|
-
}
|
|
16363
|
-
};
|
|
16364
|
-
}
|
|
16365
|
-
return { error: `Thread run failed: ${errorCode} - ${errorMessage}` };
|
|
16366
|
-
}
|
|
16367
|
-
return { error: `Thread run failed with status: ${run.status}` };
|
|
16368
|
-
}
|
|
16369
|
-
break;
|
|
16370
|
-
}
|
|
16371
|
-
await require_fetch.sleep(pollIntervalMs);
|
|
16372
|
-
if (Date.now() - startTime > 3e4) pollIntervalMs = Math.min(pollIntervalMs * 1.5, 5e3);
|
|
16373
|
-
} catch (error) {
|
|
16374
|
-
require_logger.logger.error(`Error polling run status: ${error}`);
|
|
16375
|
-
const errorMessage = error.message || String(error);
|
|
16376
|
-
if (this.isRetryableError("", errorMessage)) return { error: `Error polling run status: ${errorMessage}` };
|
|
16377
|
-
return { error: `Error polling run status: ${errorMessage}` };
|
|
16378
|
-
}
|
|
16379
|
-
}
|
|
16380
|
-
return await this.processCompletedRun(client, threadId, run);
|
|
16381
|
-
}
|
|
16382
|
-
/**
|
|
16383
|
-
* Process a completed run to extract messages
|
|
16384
|
-
*/
|
|
16385
|
-
async processCompletedRun(client, threadId, _run) {
|
|
16386
|
-
try {
|
|
16387
|
-
const messages = [];
|
|
16388
|
-
for await (const message of client.agents.messages.list(threadId, { order: "asc" })) messages.push(message);
|
|
16389
|
-
const outputBlocks = [];
|
|
16390
|
-
messages.forEach((message) => {
|
|
16391
|
-
const contentBlocks = message.content.map((content) => content.type === "text" && content.text ? content.text.value : `<${content.type} output>`).join("\n");
|
|
16392
|
-
outputBlocks.push(`[${require_fetch.toTitleCase(message.role)}] ${contentBlocks}`);
|
|
16393
|
-
});
|
|
16394
|
-
return { output: outputBlocks.join("\n\n").trim() };
|
|
16395
|
-
} catch (err) {
|
|
16396
|
-
require_logger.logger.error(`Error processing run results: ${err}`);
|
|
16397
|
-
return { error: `Error processing run results: ${err.message || String(err)}` };
|
|
16398
|
-
}
|
|
16399
|
-
}
|
|
16400
16376
|
};
|
|
16401
16377
|
//#endregion
|
|
16402
16378
|
//#region src/providers/azure/responses.ts
|
|
@@ -16466,9 +16442,9 @@ var AzureResponsesProvider = class extends AzureGenericProvider {
|
|
|
16466
16442
|
const body = {
|
|
16467
16443
|
model: this.deploymentName,
|
|
16468
16444
|
input,
|
|
16469
|
-
...maxOutputTokens
|
|
16445
|
+
...maxOutputTokens === void 0 ? {} : { max_output_tokens: maxOutputTokens },
|
|
16470
16446
|
...reasoningEffort ? { reasoning: { effort: reasoningEffort } } : {},
|
|
16471
|
-
...temperature
|
|
16447
|
+
...temperature === void 0 ? {} : { temperature },
|
|
16472
16448
|
...instructions ? { instructions } : {},
|
|
16473
16449
|
...config.top_p !== void 0 || require_logger.getEnvString("OPENAI_TOP_P") ? { top_p: config.top_p ?? require_logger.getEnvFloat("OPENAI_TOP_P", 1) } : {},
|
|
16474
16450
|
...config.tools ? { tools: await require_util.maybeLoadToolsFromExternalFile(config.tools, context?.vars) } : {},
|
|
@@ -17503,9 +17479,9 @@ var AwsBedrockConverseProvider = class extends require_base.AwsBedrockGenericPro
|
|
|
17503
17479
|
const temperature = reasoningEnabled ? void 0 : temperatureValue;
|
|
17504
17480
|
const topP = reasoningEnabled ? void 0 : topPValue;
|
|
17505
17481
|
if (maxTokens !== void 0 || temperature !== void 0 || topP !== void 0 || stopSequences) return {
|
|
17506
|
-
...maxTokens
|
|
17507
|
-
...temperature
|
|
17508
|
-
...topP
|
|
17482
|
+
...maxTokens === void 0 ? {} : { maxTokens },
|
|
17483
|
+
...temperature === void 0 ? {} : { temperature },
|
|
17484
|
+
...topP === void 0 ? {} : { topP },
|
|
17509
17485
|
...stopSequences ? { stopSequences } : {}
|
|
17510
17486
|
};
|
|
17511
17487
|
}
|
|
@@ -17725,7 +17701,7 @@ var AwsBedrockConverseProvider = class extends require_base.AwsBedrockGenericPro
|
|
|
17725
17701
|
if (hasSuccessfulCallback && results.length > 0) return {
|
|
17726
17702
|
output: results.join("\n"),
|
|
17727
17703
|
tokenUsage,
|
|
17728
|
-
...cost
|
|
17704
|
+
...cost === void 0 ? {} : { cost },
|
|
17729
17705
|
...Object.keys(metadata).length > 0 ? { metadata } : {},
|
|
17730
17706
|
...guardrails ? { guardrails } : {},
|
|
17731
17707
|
...malformedError ? { error: malformedError } : {}
|
|
@@ -17735,7 +17711,7 @@ var AwsBedrockConverseProvider = class extends require_base.AwsBedrockGenericPro
|
|
|
17735
17711
|
return {
|
|
17736
17712
|
output: extractTextFromContentBlocks(content, showThinking),
|
|
17737
17713
|
tokenUsage,
|
|
17738
|
-
...cost
|
|
17714
|
+
...cost === void 0 ? {} : { cost },
|
|
17739
17715
|
...Object.keys(metadata).length > 0 ? { metadata } : {},
|
|
17740
17716
|
...guardrails ? { guardrails } : {},
|
|
17741
17717
|
...malformedError ? { error: malformedError } : {}
|
|
@@ -17849,7 +17825,7 @@ var AwsBedrockConverseProvider = class extends require_base.AwsBedrockGenericPro
|
|
|
17849
17825
|
return {
|
|
17850
17826
|
output: finalOutput,
|
|
17851
17827
|
tokenUsage,
|
|
17852
|
-
...cost
|
|
17828
|
+
...cost === void 0 ? {} : { cost },
|
|
17853
17829
|
...Object.keys(metadata).length > 0 ? { metadata } : {},
|
|
17854
17830
|
...malformedError ? { error: malformedError } : {}
|
|
17855
17831
|
};
|
|
@@ -20484,7 +20460,7 @@ var ElevenLabsAgentsProvider = class {
|
|
|
20484
20460
|
promptLength: prompt.length
|
|
20485
20461
|
});
|
|
20486
20462
|
const simulationRequest = buildSimulationRequest(parseConversation(prompt, context), this.config.simulatedUser, this.config.evaluationCriteria, this.config.toolMockConfig);
|
|
20487
|
-
simulationRequest.new_turns_limit = this.config.maxTurns
|
|
20463
|
+
simulationRequest.new_turns_limit = this.config.maxTurns ?? 10;
|
|
20488
20464
|
require_logger.logger.debug("[ElevenLabs Agents] Request payload", {
|
|
20489
20465
|
endpoint: `/convai/agents/${agentId}/simulate-conversation`,
|
|
20490
20466
|
payload: simulationRequest
|
|
@@ -20611,7 +20587,7 @@ var ElevenLabsAgentsProvider = class {
|
|
|
20611
20587
|
simulatedUser: config?.simulatedUser,
|
|
20612
20588
|
evaluationCriteria: config?.evaluationCriteria,
|
|
20613
20589
|
toolMockConfig: config?.toolMockConfig,
|
|
20614
|
-
maxTurns: config?.maxTurns
|
|
20590
|
+
maxTurns: config?.maxTurns ?? 10,
|
|
20615
20591
|
label: options.label || options.id
|
|
20616
20592
|
};
|
|
20617
20593
|
}
|
|
@@ -23256,6 +23232,8 @@ const DEFAULT_RESOLUTION$1 = "720p";
|
|
|
23256
23232
|
const DEFAULT_DURATION$1 = 8;
|
|
23257
23233
|
const DEFAULT_POLL_INTERVAL_MS$1 = 1e4;
|
|
23258
23234
|
const DEFAULT_MAX_POLL_TIME_MS$1 = 6e5;
|
|
23235
|
+
const REQUEST_TIMEOUT_MS = 3e5;
|
|
23236
|
+
const AI_STUDIO_BASE_URL = "https://generativelanguage.googleapis.com/v1beta";
|
|
23259
23237
|
function validateAspectRatio$1(ratio) {
|
|
23260
23238
|
if (!["16:9", "9:16"].includes(ratio)) return {
|
|
23261
23239
|
valid: false,
|
|
@@ -23307,6 +23285,13 @@ var GoogleVideoProvider = class {
|
|
|
23307
23285
|
async getProjectId() {
|
|
23308
23286
|
return await require_transform$1.resolveProjectId(this.config, this.env);
|
|
23309
23287
|
}
|
|
23288
|
+
isVertexMode(config = this.config) {
|
|
23289
|
+
return require_transform$1.determineGoogleVertexMode(config, this.env);
|
|
23290
|
+
}
|
|
23291
|
+
getApiKey(config = this.config) {
|
|
23292
|
+
const { apiKey } = require_transform$1.getGoogleApiKey(config, this.env, this.isVertexMode(config));
|
|
23293
|
+
return apiKey;
|
|
23294
|
+
}
|
|
23310
23295
|
async getClientWithCredentials() {
|
|
23311
23296
|
const { client } = await require_transform$1.getGoogleClient({ credentials: require_transform$1.loadCredentials(this.config.credentials) });
|
|
23312
23297
|
return client;
|
|
@@ -23315,6 +23300,17 @@ var GoogleVideoProvider = class {
|
|
|
23315
23300
|
const location = this.getLocation();
|
|
23316
23301
|
return `https://${location}-aiplatform.googleapis.com/v1/projects/${await this.getProjectId()}/locations/${location}/publishers/google/models/${this.modelName}:${action}`;
|
|
23317
23302
|
}
|
|
23303
|
+
getAiStudioEndpoint(pathSuffix) {
|
|
23304
|
+
return `${AI_STUDIO_BASE_URL}/${pathSuffix}`;
|
|
23305
|
+
}
|
|
23306
|
+
async getAiStudioHeaders(config) {
|
|
23307
|
+
const apiKey = this.getApiKey(config);
|
|
23308
|
+
if (!apiKey) throw new Error("Google API key is not set. Set GOOGLE_API_KEY or GEMINI_API_KEY, or add `apiKey` to the provider config.");
|
|
23309
|
+
return {
|
|
23310
|
+
"Content-Type": "application/json",
|
|
23311
|
+
"x-goog-api-key": apiKey
|
|
23312
|
+
};
|
|
23313
|
+
}
|
|
23318
23314
|
/**
|
|
23319
23315
|
* Load image data from file:// path or return as-is if base64
|
|
23320
23316
|
*/
|
|
@@ -23327,10 +23323,24 @@ var GoogleVideoProvider = class {
|
|
|
23327
23323
|
return { data: imagePath };
|
|
23328
23324
|
}
|
|
23329
23325
|
/**
|
|
23326
|
+
* Load video data from file:// path or return as-is if base64
|
|
23327
|
+
*/
|
|
23328
|
+
loadVideoData(videoPath) {
|
|
23329
|
+
if (videoPath.startsWith("file://")) {
|
|
23330
|
+
const filePath = videoPath.slice(7);
|
|
23331
|
+
if (!fs.default.existsSync(filePath)) return { error: `Video file not found: ${filePath}` };
|
|
23332
|
+
return { data: fs.default.readFileSync(filePath).toString("base64") };
|
|
23333
|
+
}
|
|
23334
|
+
return { data: videoPath };
|
|
23335
|
+
}
|
|
23336
|
+
/**
|
|
23330
23337
|
* Create a new video generation job
|
|
23331
23338
|
*/
|
|
23332
23339
|
async createVideoJob(prompt, config) {
|
|
23333
|
-
|
|
23340
|
+
if (this.isVertexMode(config)) return this.createVertexVideoJob(prompt, config);
|
|
23341
|
+
return this.createAiStudioVideoJob(prompt, config);
|
|
23342
|
+
}
|
|
23343
|
+
buildVertexRequestBody(prompt, config) {
|
|
23334
23344
|
const instance = { prompt };
|
|
23335
23345
|
if (config.aspectRatio) instance.aspectRatio = config.aspectRatio;
|
|
23336
23346
|
if (config.resolution) instance.resolution = config.resolution;
|
|
@@ -23374,7 +23384,69 @@ var GoogleVideoProvider = class {
|
|
|
23374
23384
|
}
|
|
23375
23385
|
const extendVideoId = config.extendVideoId || config.sourceVideo;
|
|
23376
23386
|
if (extendVideoId) instance.video = { operationName: extendVideoId };
|
|
23387
|
+
return { body: { instances: [instance] } };
|
|
23388
|
+
}
|
|
23389
|
+
buildAiStudioRequestBody(prompt, config) {
|
|
23390
|
+
const instance = { prompt };
|
|
23391
|
+
const parameters = {};
|
|
23392
|
+
if (config.aspectRatio) parameters.aspectRatio = config.aspectRatio;
|
|
23393
|
+
if (config.resolution) parameters.resolution = config.resolution;
|
|
23394
|
+
if (config.durationSeconds) parameters.durationSeconds = config.durationSeconds;
|
|
23395
|
+
if (config.negativePrompt) parameters.negativePrompt = config.negativePrompt;
|
|
23396
|
+
if (config.personGeneration) parameters.personGeneration = config.personGeneration;
|
|
23397
|
+
if (config.seed !== void 0) parameters.seed = config.seed;
|
|
23398
|
+
if (config.image) {
|
|
23399
|
+
const { data: imageData, error } = this.loadImageData(config.image);
|
|
23400
|
+
if (error) return { error };
|
|
23401
|
+
instance.image = { inlineData: {
|
|
23402
|
+
mimeType: "image/png",
|
|
23403
|
+
data: imageData
|
|
23404
|
+
} };
|
|
23405
|
+
}
|
|
23406
|
+
const lastFrame = config.lastFrame || config.lastImage;
|
|
23407
|
+
if (lastFrame) {
|
|
23408
|
+
const { data: lastFrameData, error } = this.loadImageData(lastFrame);
|
|
23409
|
+
if (error) return { error };
|
|
23410
|
+
instance.lastFrame = { inlineData: {
|
|
23411
|
+
mimeType: "image/png",
|
|
23412
|
+
data: lastFrameData
|
|
23413
|
+
} };
|
|
23414
|
+
}
|
|
23415
|
+
if (config.referenceImages && config.referenceImages.length > 0) {
|
|
23416
|
+
const refs = [];
|
|
23417
|
+
for (const ref of config.referenceImages.slice(0, 3)) {
|
|
23418
|
+
const imagePath = typeof ref === "string" ? ref : ref.image;
|
|
23419
|
+
const referenceType = typeof ref === "string" ? "asset" : ref.referenceType || "asset";
|
|
23420
|
+
const { data: imageData, error } = this.loadImageData(imagePath);
|
|
23421
|
+
if (error) return { error };
|
|
23422
|
+
refs.push({
|
|
23423
|
+
image: { inlineData: {
|
|
23424
|
+
mimeType: "image/png",
|
|
23425
|
+
data: imageData
|
|
23426
|
+
} },
|
|
23427
|
+
referenceType
|
|
23428
|
+
});
|
|
23429
|
+
}
|
|
23430
|
+
instance.referenceImages = refs;
|
|
23431
|
+
}
|
|
23432
|
+
const sourceVideo = config.extendVideoId || config.sourceVideo;
|
|
23433
|
+
if (sourceVideo) {
|
|
23434
|
+
if (sourceVideo.includes("/operations/")) return { error: "Google AI Studio Veo does not accept operation IDs for video extension. Use `vertex:video:*` with `extendVideoId`, or provide base64/file:// video data via `sourceVideo`." };
|
|
23435
|
+
const { data: videoData, error } = this.loadVideoData(sourceVideo);
|
|
23436
|
+
if (error) return { error };
|
|
23437
|
+
instance.video = { inlineData: {
|
|
23438
|
+
mimeType: "video/mp4",
|
|
23439
|
+
data: videoData
|
|
23440
|
+
} };
|
|
23441
|
+
}
|
|
23377
23442
|
const body = { instances: [instance] };
|
|
23443
|
+
if (Object.keys(parameters).length > 0) body.parameters = parameters;
|
|
23444
|
+
return { body };
|
|
23445
|
+
}
|
|
23446
|
+
async createVertexVideoJob(prompt, config) {
|
|
23447
|
+
const url = await this.getVertexEndpoint("predictLongRunning");
|
|
23448
|
+
const { body, error: bodyError } = this.buildVertexRequestBody(prompt, config);
|
|
23449
|
+
if (bodyError || !body) return { error: bodyError || "Failed to build Vertex Veo request" };
|
|
23378
23450
|
try {
|
|
23379
23451
|
const client = await this.getClientWithCredentials();
|
|
23380
23452
|
require_logger.logger.debug("[Google Video] Creating video job", {
|
|
@@ -23392,10 +23464,37 @@ var GoogleVideoProvider = class {
|
|
|
23392
23464
|
return { error: `Failed to create video job: ${error.response?.data?.error?.message || error.message || String(err)}` };
|
|
23393
23465
|
}
|
|
23394
23466
|
}
|
|
23467
|
+
async createAiStudioVideoJob(prompt, config) {
|
|
23468
|
+
const { body, error: bodyError } = this.buildAiStudioRequestBody(prompt, config);
|
|
23469
|
+
if (bodyError || !body) return { error: bodyError || "Failed to build Google AI Studio Veo request" };
|
|
23470
|
+
try {
|
|
23471
|
+
const headers = await this.getAiStudioHeaders(config);
|
|
23472
|
+
const url = this.getAiStudioEndpoint(`models/${this.modelName}:predictLongRunning`);
|
|
23473
|
+
require_logger.logger.debug("[Google Video] Creating video job", {
|
|
23474
|
+
url,
|
|
23475
|
+
model: this.modelName,
|
|
23476
|
+
transport: "google-ai-studio"
|
|
23477
|
+
});
|
|
23478
|
+
const response = await require_fetch.fetchWithTimeout(url, {
|
|
23479
|
+
method: "POST",
|
|
23480
|
+
headers,
|
|
23481
|
+
body: JSON.stringify(body)
|
|
23482
|
+
}, REQUEST_TIMEOUT_MS);
|
|
23483
|
+
const data = await response.json();
|
|
23484
|
+
if (!response.ok) return { error: `Failed to create video job: ${data.error?.message || response.statusText}` };
|
|
23485
|
+
return { operation: data };
|
|
23486
|
+
} catch (err) {
|
|
23487
|
+
return { error: `Failed to create video job: ${err.message || String(err)}` };
|
|
23488
|
+
}
|
|
23489
|
+
}
|
|
23395
23490
|
/**
|
|
23396
23491
|
* Poll for video job completion using fetchPredictOperation endpoint
|
|
23397
23492
|
*/
|
|
23398
|
-
async pollOperationStatus(operationName, pollIntervalMs, maxPollTimeMs) {
|
|
23493
|
+
async pollOperationStatus(operationName, pollIntervalMs, maxPollTimeMs, config) {
|
|
23494
|
+
if (this.isVertexMode(config)) return this.pollVertexOperationStatus(operationName, pollIntervalMs, maxPollTimeMs);
|
|
23495
|
+
return this.pollAiStudioOperationStatus(operationName, pollIntervalMs, maxPollTimeMs, config);
|
|
23496
|
+
}
|
|
23497
|
+
async pollVertexOperationStatus(operationName, pollIntervalMs, maxPollTimeMs) {
|
|
23399
23498
|
const startTime = Date.now();
|
|
23400
23499
|
const location = this.getLocation();
|
|
23401
23500
|
const url = `https://${location}-aiplatform.googleapis.com/v1/projects/${await this.getProjectId()}/locations/${location}/publishers/google/models/${this.modelName}:fetchPredictOperation`;
|
|
@@ -23420,10 +23519,37 @@ var GoogleVideoProvider = class {
|
|
|
23420
23519
|
}
|
|
23421
23520
|
return { error: `Video generation timed out after ${maxPollTimeMs / 1e3} seconds` };
|
|
23422
23521
|
}
|
|
23522
|
+
async pollAiStudioOperationStatus(operationName, pollIntervalMs, maxPollTimeMs, config) {
|
|
23523
|
+
const startTime = Date.now();
|
|
23524
|
+
const url = this.getAiStudioEndpoint(operationName);
|
|
23525
|
+
const headers = await this.getAiStudioHeaders(config);
|
|
23526
|
+
require_logger.logger.debug(`[Google Video] Polling operation via Google AI Studio: ${url}`);
|
|
23527
|
+
while (Date.now() - startTime < maxPollTimeMs) try {
|
|
23528
|
+
const response = await require_fetch.fetchWithTimeout(url, {
|
|
23529
|
+
method: "GET",
|
|
23530
|
+
headers
|
|
23531
|
+
}, REQUEST_TIMEOUT_MS);
|
|
23532
|
+
const operation = await response.json();
|
|
23533
|
+
if (!response.ok) return { error: `Polling error: ${operation.error?.message || response.statusText}` };
|
|
23534
|
+
require_logger.logger.debug(`[Google Video] Operation status: done=${operation.done}, progress=${operation.metadata?.progress}%`);
|
|
23535
|
+
if (operation.done) {
|
|
23536
|
+
if (operation.error) return { error: `Video generation failed: ${operation.error.message}` };
|
|
23537
|
+
return { operation };
|
|
23538
|
+
}
|
|
23539
|
+
await require_fetch.sleep(pollIntervalMs);
|
|
23540
|
+
} catch (err) {
|
|
23541
|
+
return { error: `Polling error: ${err.message || String(err)}` };
|
|
23542
|
+
}
|
|
23543
|
+
return { error: `Video generation timed out after ${maxPollTimeMs / 1e3} seconds` };
|
|
23544
|
+
}
|
|
23423
23545
|
/**
|
|
23424
23546
|
* Download video from URI and store to blob storage
|
|
23425
23547
|
*/
|
|
23426
|
-
async downloadVideoToBlob(videoUri) {
|
|
23548
|
+
async downloadVideoToBlob(videoUri, config) {
|
|
23549
|
+
if (this.isVertexMode(config)) return this.downloadVertexVideoToBlob(videoUri);
|
|
23550
|
+
return this.downloadAiStudioVideoToBlob(videoUri, config);
|
|
23551
|
+
}
|
|
23552
|
+
async downloadVertexVideoToBlob(videoUri) {
|
|
23427
23553
|
try {
|
|
23428
23554
|
const response = await (await this.getClientWithCredentials()).request({
|
|
23429
23555
|
url: videoUri,
|
|
@@ -23440,6 +23566,23 @@ var GoogleVideoProvider = class {
|
|
|
23440
23566
|
return { error: `Download error: ${err.message || String(err)}` };
|
|
23441
23567
|
}
|
|
23442
23568
|
}
|
|
23569
|
+
async downloadAiStudioVideoToBlob(videoUri, config) {
|
|
23570
|
+
try {
|
|
23571
|
+
const response = await require_fetch.fetchWithTimeout(videoUri, {
|
|
23572
|
+
method: "GET",
|
|
23573
|
+
headers: await this.getAiStudioHeaders(config)
|
|
23574
|
+
}, REQUEST_TIMEOUT_MS);
|
|
23575
|
+
if (!response.ok) return { error: `Download error: ${response.statusText}` };
|
|
23576
|
+
const { ref } = await require_blobs.storeBlob(Buffer.from(await response.arrayBuffer()), "video/mp4", {
|
|
23577
|
+
kind: "video",
|
|
23578
|
+
location: "response.video"
|
|
23579
|
+
});
|
|
23580
|
+
require_logger.logger.debug(`[Google Video] Stored video to blob storage: ${ref.uri}`);
|
|
23581
|
+
return { blobRef: ref };
|
|
23582
|
+
} catch (err) {
|
|
23583
|
+
return { error: `Download error: ${err.message || String(err)}` };
|
|
23584
|
+
}
|
|
23585
|
+
}
|
|
23443
23586
|
/**
|
|
23444
23587
|
* Store base64 encoded video to blob storage
|
|
23445
23588
|
*/
|
|
@@ -23457,20 +23600,40 @@ var GoogleVideoProvider = class {
|
|
|
23457
23600
|
}
|
|
23458
23601
|
async callApi(prompt, context) {
|
|
23459
23602
|
if (!prompt || prompt.trim() === "") return { error: "Prompt is required for video generation" };
|
|
23460
|
-
let
|
|
23461
|
-
if (!projectId) try {
|
|
23462
|
-
projectId = await require_transform$1.resolveProjectId(this.config, this.env);
|
|
23463
|
-
} catch {
|
|
23464
|
-
return { error: "Google Veo video generation requires Vertex AI. Set GOOGLE_CLOUD_PROJECT environment variable or add `projectId` to the provider config, then run \"gcloud auth application-default login\"." };
|
|
23465
|
-
}
|
|
23466
|
-
const config = {
|
|
23603
|
+
let effectiveConfig = {
|
|
23467
23604
|
...this.config,
|
|
23468
23605
|
...context?.prompt?.config
|
|
23469
23606
|
};
|
|
23470
|
-
|
|
23471
|
-
|
|
23472
|
-
|
|
23473
|
-
|
|
23607
|
+
let isVertexMode = this.isVertexMode(effectiveConfig);
|
|
23608
|
+
if (isVertexMode) {
|
|
23609
|
+
let projectId = effectiveConfig.projectId || require_logger.getEnvString("GOOGLE_CLOUD_PROJECT") || require_logger.getEnvString("GOOGLE_PROJECT_ID") || this.env?.GOOGLE_CLOUD_PROJECT || this.env?.GOOGLE_PROJECT_ID;
|
|
23610
|
+
if (!projectId) try {
|
|
23611
|
+
projectId = await require_transform$1.resolveProjectId(effectiveConfig, this.env);
|
|
23612
|
+
} catch {
|
|
23613
|
+
return { error: "Google Veo video generation via Vertex AI requires a project ID. Set GOOGLE_CLOUD_PROJECT or add `projectId` to the provider config, then run \"gcloud auth application-default login\"." };
|
|
23614
|
+
}
|
|
23615
|
+
effectiveConfig = {
|
|
23616
|
+
...effectiveConfig,
|
|
23617
|
+
vertexai: true,
|
|
23618
|
+
...projectId ? { projectId } : {}
|
|
23619
|
+
};
|
|
23620
|
+
} else if (!this.getApiKey(effectiveConfig)) try {
|
|
23621
|
+
const adcProjectId = await require_transform$1.resolveProjectId(effectiveConfig, this.env);
|
|
23622
|
+
if (adcProjectId) {
|
|
23623
|
+
isVertexMode = true;
|
|
23624
|
+
effectiveConfig = {
|
|
23625
|
+
...effectiveConfig,
|
|
23626
|
+
vertexai: true,
|
|
23627
|
+
projectId: adcProjectId
|
|
23628
|
+
};
|
|
23629
|
+
} else return { error: "Google Veo video generation via Google AI Studio requires an API key. Set GOOGLE_API_KEY or GEMINI_API_KEY, or add `apiKey` to the provider config." };
|
|
23630
|
+
} catch {
|
|
23631
|
+
return { error: "Google Veo video generation via Google AI Studio requires an API key. Set GOOGLE_API_KEY or GEMINI_API_KEY, or add `apiKey` to the provider config." };
|
|
23632
|
+
}
|
|
23633
|
+
const model = effectiveConfig.model || this.modelName;
|
|
23634
|
+
const aspectRatio = effectiveConfig.aspectRatio || DEFAULT_ASPECT_RATIO$1;
|
|
23635
|
+
const resolution = effectiveConfig.resolution || DEFAULT_RESOLUTION$1;
|
|
23636
|
+
const durationSeconds = effectiveConfig.durationSeconds || effectiveConfig.duration || DEFAULT_DURATION$1;
|
|
23474
23637
|
const ratioValidation = validateAspectRatio$1(aspectRatio);
|
|
23475
23638
|
if (!ratioValidation.valid) return { error: ratioValidation.message };
|
|
23476
23639
|
const durationValidation = validateDuration$1(model, durationSeconds);
|
|
@@ -23480,7 +23643,7 @@ var GoogleVideoProvider = class {
|
|
|
23480
23643
|
const startTime = Date.now();
|
|
23481
23644
|
require_logger.logger.info(`[Google Video] Creating video job for model ${model}...`);
|
|
23482
23645
|
const { operation: createdOp, error: createError } = await this.createVideoJob(prompt, {
|
|
23483
|
-
...
|
|
23646
|
+
...effectiveConfig,
|
|
23484
23647
|
aspectRatio,
|
|
23485
23648
|
resolution,
|
|
23486
23649
|
durationSeconds
|
|
@@ -23488,9 +23651,9 @@ var GoogleVideoProvider = class {
|
|
|
23488
23651
|
if (createError || !createdOp) return { error: createError || "Failed to create video job" };
|
|
23489
23652
|
const operationName = createdOp.name;
|
|
23490
23653
|
require_logger.logger.info(`[Google Video] Video job created: ${operationName}`);
|
|
23491
|
-
const pollIntervalMs =
|
|
23492
|
-
const maxPollTimeMs =
|
|
23493
|
-
const { operation: completedOp, error: pollError } = await this.pollOperationStatus(operationName, pollIntervalMs, maxPollTimeMs);
|
|
23654
|
+
const pollIntervalMs = effectiveConfig.pollIntervalMs || DEFAULT_POLL_INTERVAL_MS$1;
|
|
23655
|
+
const maxPollTimeMs = effectiveConfig.maxPollTimeMs || DEFAULT_MAX_POLL_TIME_MS$1;
|
|
23656
|
+
const { operation: completedOp, error: pollError } = await this.pollOperationStatus(operationName, pollIntervalMs, maxPollTimeMs, effectiveConfig);
|
|
23494
23657
|
if (pollError || !completedOp) return { error: pollError || "Polling failed" };
|
|
23495
23658
|
let blobRef;
|
|
23496
23659
|
const base64Video = completedOp.response?.videos?.[0]?.bytesBase64Encoded;
|
|
@@ -23505,7 +23668,7 @@ var GoogleVideoProvider = class {
|
|
|
23505
23668
|
require_logger.logger.debug(`[Google Video] Response: ${JSON.stringify(completedOp.response)}`);
|
|
23506
23669
|
return { error: "No video data in response" };
|
|
23507
23670
|
}
|
|
23508
|
-
const { blobRef: ref, error: downloadError } = await this.downloadVideoToBlob(videoUri);
|
|
23671
|
+
const { blobRef: ref, error: downloadError } = await this.downloadVideoToBlob(videoUri, effectiveConfig);
|
|
23509
23672
|
if (downloadError) return { error: downloadError };
|
|
23510
23673
|
blobRef = ref;
|
|
23511
23674
|
}
|
|
@@ -24195,13 +24358,22 @@ const ApiKeyAuthSchema = zod.z.object({
|
|
|
24195
24358
|
placement: zod.z.enum(["header", "query"]),
|
|
24196
24359
|
keyName: zod.z.string()
|
|
24197
24360
|
});
|
|
24361
|
+
const FileAuthSchema = zod.z.object({
|
|
24362
|
+
type: zod.z.literal("file"),
|
|
24363
|
+
path: zod.z.string().min(1)
|
|
24364
|
+
});
|
|
24198
24365
|
const AuthSchema = zod.z.union([
|
|
24199
24366
|
OAuthClientCredentialsSchema,
|
|
24200
24367
|
OAuthPasswordSchema,
|
|
24201
24368
|
BasicAuthSchema,
|
|
24202
24369
|
BearerAuthSchema,
|
|
24203
|
-
ApiKeyAuthSchema
|
|
24370
|
+
ApiKeyAuthSchema,
|
|
24371
|
+
FileAuthSchema
|
|
24204
24372
|
]);
|
|
24373
|
+
const FileAuthResultSchema = zod.z.object({
|
|
24374
|
+
token: zod.z.string().min(1),
|
|
24375
|
+
expiration: zod.z.number().finite().nullable().optional()
|
|
24376
|
+
});
|
|
24205
24377
|
/**
|
|
24206
24378
|
* Configuration for a separate session endpoint that must be called before the main API.
|
|
24207
24379
|
* The session endpoint returns a session ID that is then used in the main request.
|
|
@@ -24290,6 +24462,12 @@ async function loadTransformModule(transform) {
|
|
|
24290
24462
|
}
|
|
24291
24463
|
return transform;
|
|
24292
24464
|
}
|
|
24465
|
+
function hasOwnProperty(obj, key) {
|
|
24466
|
+
return Object.prototype.hasOwnProperty.call(obj, key);
|
|
24467
|
+
}
|
|
24468
|
+
function parseFileAuthReference(filePath) {
|
|
24469
|
+
return filePath.startsWith("file://") ? require_util.parseFileUrl(filePath) : { filePath };
|
|
24470
|
+
}
|
|
24293
24471
|
async function createSessionParser(parser) {
|
|
24294
24472
|
if (!parser) return () => "";
|
|
24295
24473
|
if (typeof parser === "function") return (response) => parser(response);
|
|
@@ -24650,20 +24828,11 @@ var HttpProvider = class {
|
|
|
24650
24828
|
password: this.config.auth.password ? nunjucks.renderString(this.config.auth.password, vars) : void 0
|
|
24651
24829
|
} : baseConfig;
|
|
24652
24830
|
const now = Date.now();
|
|
24653
|
-
if (this.
|
|
24831
|
+
if (this.hasValidCachedToken(now)) {
|
|
24654
24832
|
require_logger.logger.debug("[HTTP Provider Auth]: Using cached OAuth token");
|
|
24655
24833
|
return;
|
|
24656
24834
|
}
|
|
24657
|
-
if (this.tokenRefreshPromise != null)
|
|
24658
|
-
require_logger.logger.debug("[HTTP Provider Auth]: Token refresh already in progress, waiting...");
|
|
24659
|
-
try {
|
|
24660
|
-
await this.tokenRefreshPromise;
|
|
24661
|
-
if (this.lastToken && this.lastTokenExpiresAt && Date.now() + 6e4 < this.lastTokenExpiresAt) return;
|
|
24662
|
-
require_logger.logger.debug("[HTTP Provider Auth]: Token expired while waiting, refreshing again...");
|
|
24663
|
-
} catch {
|
|
24664
|
-
require_logger.logger.debug("[HTTP Provider Auth]: Previous token refresh failed, retrying...");
|
|
24665
|
-
}
|
|
24666
|
-
}
|
|
24835
|
+
if (this.tokenRefreshPromise != null && await this.waitForInFlightTokenRefresh()) return;
|
|
24667
24836
|
require_logger.logger.debug("[HTTP Provider Auth]: Refreshing OAuth token");
|
|
24668
24837
|
const refreshPromise = this.performTokenRefresh(oauthConfig, now);
|
|
24669
24838
|
this.tokenRefreshPromise = refreshPromise;
|
|
@@ -24705,6 +24874,70 @@ var HttpProvider = class {
|
|
|
24705
24874
|
}
|
|
24706
24875
|
require_invariant.invariant(this.lastToken, "OAuth token should be defined at this point");
|
|
24707
24876
|
}
|
|
24877
|
+
hasValidCachedToken(now = Date.now()) {
|
|
24878
|
+
if (!this.lastToken) return false;
|
|
24879
|
+
if (this.lastTokenExpiresAt == null) return this.config.auth?.type === "file";
|
|
24880
|
+
return now + require_transform$1.TOKEN_REFRESH_BUFFER_MS < this.lastTokenExpiresAt;
|
|
24881
|
+
}
|
|
24882
|
+
async waitForInFlightTokenRefresh() {
|
|
24883
|
+
if (this.tokenRefreshPromise == null) return false;
|
|
24884
|
+
require_logger.logger.debug("[HTTP Provider Auth]: Token refresh already in progress, waiting...");
|
|
24885
|
+
try {
|
|
24886
|
+
await this.tokenRefreshPromise;
|
|
24887
|
+
if (this.hasValidCachedToken()) return true;
|
|
24888
|
+
require_logger.logger.debug("[HTTP Provider Auth]: Token expired while waiting, refreshing again...");
|
|
24889
|
+
} catch {
|
|
24890
|
+
require_logger.logger.debug("[HTTP Provider Auth]: Previous token refresh failed, retrying...");
|
|
24891
|
+
}
|
|
24892
|
+
return false;
|
|
24893
|
+
}
|
|
24894
|
+
async refreshFileTokenIfNeeded(prompt, vars, context) {
|
|
24895
|
+
if (!this.config.auth || this.config.auth.type !== "file") {
|
|
24896
|
+
require_logger.logger.debug("[HTTP Provider Auth]: No file auth configured");
|
|
24897
|
+
return;
|
|
24898
|
+
}
|
|
24899
|
+
if (this.hasValidCachedToken()) {
|
|
24900
|
+
require_logger.logger.debug("[HTTP Provider Auth]: Using cached file auth token");
|
|
24901
|
+
return;
|
|
24902
|
+
}
|
|
24903
|
+
if (this.tokenRefreshPromise != null && await this.waitForInFlightTokenRefresh()) return;
|
|
24904
|
+
require_logger.logger.debug("[HTTP Provider Auth]: Refreshing file auth token");
|
|
24905
|
+
const refreshPromise = this.performFileTokenRefresh(prompt, vars, context);
|
|
24906
|
+
this.tokenRefreshPromise = refreshPromise;
|
|
24907
|
+
try {
|
|
24908
|
+
await refreshPromise;
|
|
24909
|
+
} finally {
|
|
24910
|
+
if (this.tokenRefreshPromise === refreshPromise) this.tokenRefreshPromise = void 0;
|
|
24911
|
+
}
|
|
24912
|
+
}
|
|
24913
|
+
async performFileTokenRefresh(prompt, vars, context) {
|
|
24914
|
+
require_invariant.invariant(this.config.auth?.type === "file", "File auth should be configured");
|
|
24915
|
+
const { filePath, functionName } = parseFileAuthReference(this.config.auth.path);
|
|
24916
|
+
const defaultFunctionName = filePath.endsWith(".py") ? "get_auth" : "default";
|
|
24917
|
+
const authContext = {
|
|
24918
|
+
...context ?? {},
|
|
24919
|
+
prompt: context?.prompt ?? {
|
|
24920
|
+
raw: prompt,
|
|
24921
|
+
label: prompt
|
|
24922
|
+
},
|
|
24923
|
+
vars
|
|
24924
|
+
};
|
|
24925
|
+
try {
|
|
24926
|
+
const authFn = await require_util.loadFunction({
|
|
24927
|
+
filePath,
|
|
24928
|
+
functionName,
|
|
24929
|
+
defaultFunctionName
|
|
24930
|
+
});
|
|
24931
|
+
const result = FileAuthResultSchema.parse(await authFn(authContext));
|
|
24932
|
+
this.lastToken = result.token;
|
|
24933
|
+
this.lastTokenExpiresAt = result.expiration ?? void 0;
|
|
24934
|
+
require_logger.logger.debug("[HTTP Provider Auth]: Successfully refreshed file auth token");
|
|
24935
|
+
} catch (err) {
|
|
24936
|
+
require_logger.logger.error(`[HTTP Provider Auth]: Failed to refresh file auth token: ${String(err)}`);
|
|
24937
|
+
throw new Error(`Failed to refresh file auth token: ${String(err)}`);
|
|
24938
|
+
}
|
|
24939
|
+
require_invariant.invariant(this.lastToken, "File auth token should be defined at this point");
|
|
24940
|
+
}
|
|
24708
24941
|
async refreshSignatureIfNeeded(vars) {
|
|
24709
24942
|
if (!this.config.signatureAuth) {
|
|
24710
24943
|
require_logger.logger.debug("[HTTP Provider Auth]: No signature auth configured");
|
|
@@ -24886,12 +25119,21 @@ var HttpProvider = class {
|
|
|
24886
25119
|
...context?.vars || {},
|
|
24887
25120
|
prompt,
|
|
24888
25121
|
...context?.evaluationId ? { evaluationId: context.evaluationId } : {},
|
|
24889
|
-
...transformedTools
|
|
24890
|
-
...transformedToolChoice
|
|
25122
|
+
...transformedTools === void 0 ? {} : { tools: serializeForTemplate(transformedTools) },
|
|
25123
|
+
...transformedToolChoice === void 0 ? {} : { tool_choice: serializeForTemplate(transformedToolChoice) }
|
|
24891
25124
|
};
|
|
24892
25125
|
if (this.config.auth?.type === "oauth") {
|
|
24893
25126
|
await this.refreshOAuthTokenIfNeeded(vars);
|
|
24894
25127
|
require_invariant.invariant(this.lastToken, "OAuth token should be defined at this point");
|
|
25128
|
+
if (hasOwnProperty(vars, "token")) require_logger.logger.warn("[HTTP Provider Auth]: `token` is already defined in vars and will be overwritten");
|
|
25129
|
+
vars.token = this.lastToken;
|
|
25130
|
+
} else if (this.config.auth?.type === "file") {
|
|
25131
|
+
await this.refreshFileTokenIfNeeded(prompt, vars, context);
|
|
25132
|
+
require_invariant.invariant(this.lastToken, "File auth token should be defined at this point");
|
|
25133
|
+
if (hasOwnProperty(vars, "token")) require_logger.logger.warn("[HTTP Provider Auth]: `token` is already defined in vars and will be overwritten");
|
|
25134
|
+
if (hasOwnProperty(vars, "expiration")) require_logger.logger.warn("[HTTP Provider Auth]: `expiration` is already defined in vars and will be overwritten");
|
|
25135
|
+
vars.token = this.lastToken;
|
|
25136
|
+
vars.expiration = this.lastTokenExpiresAt;
|
|
24895
25137
|
}
|
|
24896
25138
|
if (this.config.signatureAuth) {
|
|
24897
25139
|
await this.refreshSignatureIfNeeded(vars);
|
|
@@ -25728,13 +25970,20 @@ function createLlamaApiProvider(providerPath, options = {}) {
|
|
|
25728
25970
|
}
|
|
25729
25971
|
//#endregion
|
|
25730
25972
|
//#region src/providers/localai.ts
|
|
25973
|
+
function parseEnvFloat(value) {
|
|
25974
|
+
if (value === void 0) return;
|
|
25975
|
+
const parsed = Number.parseFloat(value);
|
|
25976
|
+
return Number.isNaN(parsed) ? void 0 : parsed;
|
|
25977
|
+
}
|
|
25731
25978
|
var LocalAiGenericProvider = class {
|
|
25732
25979
|
modelName;
|
|
25733
25980
|
apiBaseUrl;
|
|
25734
25981
|
config;
|
|
25982
|
+
env;
|
|
25735
25983
|
constructor(modelName, options = {}) {
|
|
25736
25984
|
const { id, config, env } = options;
|
|
25737
25985
|
this.modelName = modelName;
|
|
25986
|
+
this.env = env;
|
|
25738
25987
|
this.apiBaseUrl = config?.apiBaseUrl || env?.LOCALAI_BASE_URL || require_logger.getEnvString("LOCALAI_BASE_URL") || "http://localhost:8080/v1";
|
|
25739
25988
|
this.config = config || {};
|
|
25740
25989
|
this.id = id ? () => id : this.id;
|
|
@@ -25758,7 +26007,7 @@ var LocalAiChatProvider = class extends LocalAiGenericProvider {
|
|
|
25758
26007
|
const body = {
|
|
25759
26008
|
model: this.modelName,
|
|
25760
26009
|
messages,
|
|
25761
|
-
temperature: this.config.temperature
|
|
26010
|
+
temperature: this.config.temperature ?? parseEnvFloat(this.env?.LOCALAI_TEMPERATURE) ?? require_logger.getEnvFloat("LOCALAI_TEMPERATURE") ?? .7
|
|
25762
26011
|
};
|
|
25763
26012
|
let data;
|
|
25764
26013
|
try {
|
|
@@ -25807,7 +26056,7 @@ var LocalAiCompletionProvider = class extends LocalAiGenericProvider {
|
|
|
25807
26056
|
const body = {
|
|
25808
26057
|
model: this.modelName,
|
|
25809
26058
|
prompt,
|
|
25810
|
-
temperature: this.config.temperature
|
|
26059
|
+
temperature: this.config.temperature ?? parseEnvFloat(this.env?.LOCALAI_TEMPERATURE) ?? require_logger.getEnvFloat("LOCALAI_TEMPERATURE") ?? .7
|
|
25811
26060
|
};
|
|
25812
26061
|
let data;
|
|
25813
26062
|
try {
|
|
@@ -26225,7 +26474,7 @@ var OllamaCompletionProvider = class {
|
|
|
26225
26474
|
if (OllamaCompletionOptionKeys.has(optionName) && optionName !== "think" && optionName !== "tools" && optionName !== "passthrough") options[optionName] = this.config[optionName];
|
|
26226
26475
|
return options;
|
|
26227
26476
|
}, {}),
|
|
26228
|
-
...this.config.think
|
|
26477
|
+
...this.config.think === void 0 ? {} : { think: this.config.think },
|
|
26229
26478
|
...this.config.passthrough || {}
|
|
26230
26479
|
};
|
|
26231
26480
|
if (this.config.think !== void 0) params.think = this.config.think;
|
|
@@ -26324,7 +26573,7 @@ var OllamaChatProvider = class {
|
|
|
26324
26573
|
if (OllamaCompletionOptionKeys.has(optionName) && optionName !== "tools") options[optionName] = this.config[optionName];
|
|
26325
26574
|
return options;
|
|
26326
26575
|
}, {}),
|
|
26327
|
-
...this.config.think
|
|
26576
|
+
...this.config.think === void 0 ? {} : { think: this.config.think },
|
|
26328
26577
|
...this.config.passthrough || {}
|
|
26329
26578
|
};
|
|
26330
26579
|
if (this.config.tools) {
|
|
@@ -27666,7 +27915,12 @@ const SORA_COSTS = {
|
|
|
27666
27915
|
/**
|
|
27667
27916
|
* Valid video sizes (aspect ratios) for OpenAI Sora
|
|
27668
27917
|
*/
|
|
27669
|
-
const VALID_VIDEO_SIZES = [
|
|
27918
|
+
const VALID_VIDEO_SIZES = [
|
|
27919
|
+
"1280x720",
|
|
27920
|
+
"720x1280",
|
|
27921
|
+
"1792x1024",
|
|
27922
|
+
"1024x1792"
|
|
27923
|
+
];
|
|
27670
27924
|
/**
|
|
27671
27925
|
* Valid video durations in seconds for OpenAI Sora
|
|
27672
27926
|
*/
|
|
@@ -27834,7 +28088,7 @@ var OpenAiVideoProvider = class extends require_openai.OpenAiGenericProvider {
|
|
|
27834
28088
|
* Download video content and store in media storage
|
|
27835
28089
|
*/
|
|
27836
28090
|
async downloadVideoContent(soraVideoId, variant, cacheKey, evalId) {
|
|
27837
|
-
const url = `${this.getApiUrl()}/videos/${soraVideoId}/content${variant
|
|
28091
|
+
const url = `${this.getApiUrl()}/videos/${soraVideoId}/content${variant === "video" ? "" : `?variant=${variant}`}`;
|
|
27838
28092
|
const headers = this.getAuthHeaders();
|
|
27839
28093
|
try {
|
|
27840
28094
|
const response = await require_fetch.fetchWithProxy(url, {
|
|
@@ -28872,7 +29126,7 @@ var ReplicateProvider = class {
|
|
|
28872
29126
|
providerId: this.id(),
|
|
28873
29127
|
temperature: this.config.temperature,
|
|
28874
29128
|
topP: this.config.top_p,
|
|
28875
|
-
maxTokens: this.config.max_tokens
|
|
29129
|
+
maxTokens: this.config.max_tokens ?? this.config.max_length ?? this.config.max_new_tokens,
|
|
28876
29130
|
testIndex: context?.test?.vars?.__testIdx,
|
|
28877
29131
|
promptLabel: context?.prompt?.label,
|
|
28878
29132
|
traceparent: context?.traceparent
|
|
@@ -28916,14 +29170,14 @@ var ReplicateProvider = class {
|
|
|
28916
29170
|
let response;
|
|
28917
29171
|
try {
|
|
28918
29172
|
const inputOptions = {
|
|
28919
|
-
max_length: this.config.max_length
|
|
28920
|
-
max_new_tokens: this.config.max_new_tokens
|
|
28921
|
-
temperature: this.config.temperature
|
|
28922
|
-
top_p: this.config.top_p
|
|
28923
|
-
top_k: this.config.top_k
|
|
28924
|
-
repetition_penalty: this.config.repetition_penalty
|
|
28925
|
-
stop_sequences: this.config.stop_sequences
|
|
28926
|
-
seed: this.config.seed
|
|
29173
|
+
max_length: this.config.max_length ?? require_logger.getEnvInt("REPLICATE_MAX_LENGTH"),
|
|
29174
|
+
max_new_tokens: this.config.max_new_tokens ?? require_logger.getEnvInt("REPLICATE_MAX_NEW_TOKENS"),
|
|
29175
|
+
temperature: this.config.temperature ?? require_logger.getEnvFloat("REPLICATE_TEMPERATURE"),
|
|
29176
|
+
top_p: this.config.top_p ?? require_logger.getEnvFloat("REPLICATE_TOP_P"),
|
|
29177
|
+
top_k: this.config.top_k ?? require_logger.getEnvInt("REPLICATE_TOP_K"),
|
|
29178
|
+
repetition_penalty: this.config.repetition_penalty ?? require_logger.getEnvFloat("REPLICATE_REPETITION_PENALTY"),
|
|
29179
|
+
stop_sequences: this.config.stop_sequences ?? require_logger.getEnvString("REPLICATE_STOP_SEQUENCES"),
|
|
29180
|
+
seed: this.config.seed ?? require_logger.getEnvInt("REPLICATE_SEED"),
|
|
28927
29181
|
system_prompt: systemPrompt,
|
|
28928
29182
|
prompt: userPrompt
|
|
28929
29183
|
};
|
|
@@ -30731,7 +30985,7 @@ var WebSocketProvider = class {
|
|
|
30731
30985
|
prompt
|
|
30732
30986
|
};
|
|
30733
30987
|
const message = nunjucks.renderString(this.config.messageTemplate, vars);
|
|
30734
|
-
const streamResponse = this.streamResponse
|
|
30988
|
+
const streamResponse = this.streamResponse == null ? void 0 : await this.streamResponse;
|
|
30735
30989
|
require_logger.logger.debug(`Sending WebSocket message to ${this.url}: ${message}`);
|
|
30736
30990
|
let accumulator = { error: "unknown error occurred" };
|
|
30737
30991
|
return new Promise((resolve, reject) => {
|
|
@@ -31293,10 +31547,10 @@ var XAIResponsesProvider = class {
|
|
|
31293
31547
|
const body = {
|
|
31294
31548
|
model: this.modelName,
|
|
31295
31549
|
input,
|
|
31296
|
-
...maxOutputTokens
|
|
31297
|
-
...temperature
|
|
31550
|
+
...maxOutputTokens === void 0 ? {} : { max_output_tokens: maxOutputTokens },
|
|
31551
|
+
...temperature === void 0 ? {} : { temperature },
|
|
31298
31552
|
...config.instructions ? { instructions: config.instructions } : {},
|
|
31299
|
-
...config.top_p
|
|
31553
|
+
...config.top_p === void 0 ? {} : { top_p: config.top_p },
|
|
31300
31554
|
...loadedTools && loadedTools.length > 0 ? { tools: loadedTools } : {},
|
|
31301
31555
|
...config.tool_choice ? { tool_choice: config.tool_choice } : {},
|
|
31302
31556
|
...config.previous_response_id ? { previous_response_id: config.previous_response_id } : {},
|
|
@@ -32119,7 +32373,7 @@ const providerMap = [
|
|
|
32119
32373
|
{
|
|
32120
32374
|
test: (providerPath) => providerPath.startsWith("opencode:") || providerPath === "opencode",
|
|
32121
32375
|
create: async (providerPath, providerOptions, context) => {
|
|
32122
|
-
const { OpenCodeSDKProvider } = await Promise.resolve().then(() => require("./opencode-sdk-
|
|
32376
|
+
const { OpenCodeSDKProvider } = await Promise.resolve().then(() => require("./opencode-sdk-WWJhnbKr.cjs"));
|
|
32123
32377
|
return new OpenCodeSDKProvider({
|
|
32124
32378
|
...providerOptions,
|
|
32125
32379
|
id: providerPath,
|
|
@@ -32131,18 +32385,15 @@ const providerMap = [
|
|
|
32131
32385
|
{
|
|
32132
32386
|
test: (providerPath) => providerPath.startsWith("openclaw:") || providerPath === "openclaw",
|
|
32133
32387
|
create: async (providerPath, providerOptions, context) => {
|
|
32134
|
-
const { createOpenClawProvider } = await Promise.resolve().then(() => require("./openclaw-
|
|
32388
|
+
const { createOpenClawProvider } = await Promise.resolve().then(() => require("./openclaw-CXxbKgDH.cjs"));
|
|
32135
32389
|
return createOpenClawProvider(providerPath, providerOptions, context.env);
|
|
32136
32390
|
}
|
|
32137
32391
|
},
|
|
32138
32392
|
{
|
|
32139
32393
|
test: (providerPath) => providerPath.startsWith("anthropic:claude-agent-sdk") || providerPath.startsWith("anthropic:claude-code"),
|
|
32140
|
-
create: async (_providerPath, providerOptions,
|
|
32141
|
-
const { ClaudeCodeSDKProvider } = await Promise.resolve().then(() => require("./claude-agent-sdk-
|
|
32142
|
-
return new ClaudeCodeSDKProvider({
|
|
32143
|
-
...providerOptions,
|
|
32144
|
-
env: context.env
|
|
32145
|
-
});
|
|
32394
|
+
create: async (_providerPath, providerOptions, _context) => {
|
|
32395
|
+
const { ClaudeCodeSDKProvider } = await Promise.resolve().then(() => require("./claude-agent-sdk-8ddRp1L2.cjs"));
|
|
32396
|
+
return new ClaudeCodeSDKProvider({ ...providerOptions });
|
|
32146
32397
|
}
|
|
32147
32398
|
},
|
|
32148
32399
|
{
|
|
@@ -32195,25 +32446,25 @@ const providerMap = [
|
|
|
32195
32446
|
const modelName = splits.slice(2).join(":");
|
|
32196
32447
|
if (modelType === "converse") return new AwsBedrockConverseProvider(modelName, providerOptions);
|
|
32197
32448
|
if (modelType === "nova-sonic" || modelType.includes("amazon.nova-sonic")) {
|
|
32198
|
-
const { NovaSonicProvider } = await Promise.resolve().then(() => require("./nova-sonic-
|
|
32449
|
+
const { NovaSonicProvider } = await Promise.resolve().then(() => require("./nova-sonic-N0yCm0vb.cjs"));
|
|
32199
32450
|
return new NovaSonicProvider("amazon.nova-sonic-v1:0", providerOptions);
|
|
32200
32451
|
}
|
|
32201
32452
|
if (modelType.includes("luma.ray") || modelName.includes("luma.ray")) {
|
|
32202
|
-
const { LumaRayVideoProvider } = await Promise.resolve().then(() => require("./luma-ray-
|
|
32453
|
+
const { LumaRayVideoProvider } = await Promise.resolve().then(() => require("./luma-ray-m9Ku2meV.cjs"));
|
|
32203
32454
|
return new LumaRayVideoProvider(modelName.includes("luma.ray") ? modelName : splits.slice(1).join(":") || "luma.ray-v2:0", providerOptions);
|
|
32204
32455
|
}
|
|
32205
32456
|
if (modelType.includes("amazon.nova-reel") || modelType === "video" && (modelName.includes("amazon.nova-reel") || modelName === "")) {
|
|
32206
|
-
const { NovaReelVideoProvider } = await Promise.resolve().then(() => require("./nova-reel-
|
|
32457
|
+
const { NovaReelVideoProvider } = await Promise.resolve().then(() => require("./nova-reel-CE5etkv9.cjs"));
|
|
32207
32458
|
return new NovaReelVideoProvider(modelName || "amazon.nova-reel-v1:1", providerOptions);
|
|
32208
32459
|
}
|
|
32209
32460
|
if (modelType === "agents") {
|
|
32210
|
-
const { AwsBedrockAgentsProvider } = await Promise.resolve().then(() => require("./agents-
|
|
32461
|
+
const { AwsBedrockAgentsProvider } = await Promise.resolve().then(() => require("./agents-BBWxKSM0.cjs"));
|
|
32211
32462
|
return new AwsBedrockAgentsProvider(modelName, providerOptions);
|
|
32212
32463
|
}
|
|
32213
32464
|
if (modelType === "completion") return new AwsBedrockCompletionProvider(modelName, providerOptions);
|
|
32214
32465
|
if (modelType === "embeddings" || modelType === "embedding") return new AwsBedrockEmbeddingProvider(modelName, providerOptions);
|
|
32215
32466
|
if (modelType === "kb" || modelType === "knowledge-base") {
|
|
32216
|
-
const { AwsBedrockKnowledgeBaseProvider } = await Promise.resolve().then(() => require("./knowledgeBase-
|
|
32467
|
+
const { AwsBedrockKnowledgeBaseProvider } = await Promise.resolve().then(() => require("./knowledgeBase-DqrLX8fy.cjs"));
|
|
32217
32468
|
return new AwsBedrockKnowledgeBaseProvider(modelName, providerOptions);
|
|
32218
32469
|
}
|
|
32219
32470
|
return new AwsBedrockCompletionProvider(splits.slice(1).join(":"), providerOptions);
|
|
@@ -32223,7 +32474,7 @@ const providerMap = [
|
|
|
32223
32474
|
test: (providerPath) => providerPath.startsWith("bedrock-agent:"),
|
|
32224
32475
|
create: async (providerPath, providerOptions, _context) => {
|
|
32225
32476
|
const agentId = providerPath.substring(14);
|
|
32226
|
-
const { AwsBedrockAgentsProvider } = await Promise.resolve().then(() => require("./agents-
|
|
32477
|
+
const { AwsBedrockAgentsProvider } = await Promise.resolve().then(() => require("./agents-BBWxKSM0.cjs"));
|
|
32227
32478
|
return new AwsBedrockAgentsProvider(agentId, providerOptions);
|
|
32228
32479
|
}
|
|
32229
32480
|
},
|
|
@@ -32233,7 +32484,7 @@ const providerMap = [
|
|
|
32233
32484
|
const splits = providerPath.split(":");
|
|
32234
32485
|
const modelType = splits[1];
|
|
32235
32486
|
const endpointName = splits.slice(2).join(":");
|
|
32236
|
-
const { SageMakerCompletionProvider, SageMakerEmbeddingProvider } = await Promise.resolve().then(() => require("./sagemaker-
|
|
32487
|
+
const { SageMakerCompletionProvider, SageMakerEmbeddingProvider } = await Promise.resolve().then(() => require("./sagemaker-jiw1wQa-.cjs"));
|
|
32237
32488
|
if (modelType === "embedding" || modelType === "embeddings") return new SageMakerEmbeddingProvider(endpointName || modelType, providerOptions);
|
|
32238
32489
|
if (splits.length === 2) return new SageMakerCompletionProvider(modelType, providerOptions);
|
|
32239
32490
|
if (endpointName.includes("jumpstart") || modelType === "jumpstart") return new SageMakerCompletionProvider(endpointName, {
|
|
@@ -32274,7 +32525,7 @@ const providerMap = [
|
|
|
32274
32525
|
{
|
|
32275
32526
|
test: (providerPath) => providerPath.startsWith("cloudflare-ai:"),
|
|
32276
32527
|
create: async (providerPath, providerOptions, context) => {
|
|
32277
|
-
const { createCloudflareAiProvider } = await Promise.resolve().then(() => require("./cloudflare-ai-
|
|
32528
|
+
const { createCloudflareAiProvider } = await Promise.resolve().then(() => require("./cloudflare-ai-C62x6MQG.cjs"));
|
|
32278
32529
|
return createCloudflareAiProvider(providerPath, {
|
|
32279
32530
|
...providerOptions,
|
|
32280
32531
|
env: context.env
|
|
@@ -32284,7 +32535,7 @@ const providerMap = [
|
|
|
32284
32535
|
{
|
|
32285
32536
|
test: (providerPath) => providerPath.startsWith("cloudflare-gateway:"),
|
|
32286
32537
|
create: async (providerPath, providerOptions, context) => {
|
|
32287
|
-
const { createCloudflareGatewayProvider } = await Promise.resolve().then(() => require("./cloudflare-gateway-
|
|
32538
|
+
const { createCloudflareGatewayProvider } = await Promise.resolve().then(() => require("./cloudflare-gateway-Dx36ftqF.cjs"));
|
|
32288
32539
|
return createCloudflareGatewayProvider(providerPath, {
|
|
32289
32540
|
...providerOptions,
|
|
32290
32541
|
env: context.env
|
|
@@ -32436,27 +32687,27 @@ const providerMap = [
|
|
|
32436
32687
|
create: async (providerPath, providerOptions, context) => {
|
|
32437
32688
|
const modelType = providerPath.split(":")[1];
|
|
32438
32689
|
if (modelType === "image") {
|
|
32439
|
-
const { createHyperbolicImageProvider } = await Promise.resolve().then(() => require("./image-
|
|
32690
|
+
const { createHyperbolicImageProvider } = await Promise.resolve().then(() => require("./image-fza3zuKs.cjs"));
|
|
32440
32691
|
return createHyperbolicImageProvider(providerPath, {
|
|
32441
32692
|
...providerOptions,
|
|
32442
32693
|
env: context.env
|
|
32443
32694
|
});
|
|
32444
32695
|
}
|
|
32445
32696
|
if (modelType === "audio") {
|
|
32446
|
-
const { createHyperbolicAudioProvider } = await Promise.resolve().then(() => require("./audio-
|
|
32697
|
+
const { createHyperbolicAudioProvider } = await Promise.resolve().then(() => require("./audio-DVFjQ67_.cjs"));
|
|
32447
32698
|
return createHyperbolicAudioProvider(providerPath, {
|
|
32448
32699
|
...providerOptions,
|
|
32449
32700
|
env: context.env
|
|
32450
32701
|
});
|
|
32451
32702
|
}
|
|
32452
|
-
const { createHyperbolicProvider } = await Promise.resolve().then(() => require("./chat-
|
|
32703
|
+
const { createHyperbolicProvider } = await Promise.resolve().then(() => require("./chat-BtIKkLKx.cjs"));
|
|
32453
32704
|
return createHyperbolicProvider(providerPath, providerOptions);
|
|
32454
32705
|
}
|
|
32455
32706
|
},
|
|
32456
32707
|
{
|
|
32457
32708
|
test: (providerPath) => providerPath.startsWith("litellm:"),
|
|
32458
32709
|
create: async (providerPath, providerOptions, context) => {
|
|
32459
|
-
const { createLiteLLMProvider } = await Promise.resolve().then(() => require("./litellm-
|
|
32710
|
+
const { createLiteLLMProvider } = await Promise.resolve().then(() => require("./litellm-CnHI69aj.cjs"));
|
|
32460
32711
|
return createLiteLLMProvider(providerPath, {
|
|
32461
32712
|
config: providerOptions,
|
|
32462
32713
|
env: context.env
|
|
@@ -32513,9 +32764,16 @@ const providerMap = [
|
|
|
32513
32764
|
const modelName = splits.slice(2).join(":");
|
|
32514
32765
|
const configuredModel = getConfiguredOpenAiModel(providerOptions);
|
|
32515
32766
|
if (modelType === "codex-sdk" || modelType === "codex") {
|
|
32516
|
-
const { OpenAICodexSDKProvider } = await Promise.resolve().then(() => require("./codex-sdk-
|
|
32767
|
+
const { OpenAICodexSDKProvider } = await Promise.resolve().then(() => require("./codex-sdk-ZLKfDjqP.cjs"));
|
|
32768
|
+
const codexModel = modelName || configuredModel;
|
|
32769
|
+
const codexProviderId = providerOptions.id ?? providerPath;
|
|
32517
32770
|
return new OpenAICodexSDKProvider({
|
|
32518
32771
|
...providerOptions,
|
|
32772
|
+
id: codexProviderId,
|
|
32773
|
+
config: codexModel ? {
|
|
32774
|
+
...providerOptions.config,
|
|
32775
|
+
model: codexModel
|
|
32776
|
+
} : providerOptions.config,
|
|
32519
32777
|
env: context.env
|
|
32520
32778
|
});
|
|
32521
32779
|
}
|
|
@@ -32526,7 +32784,7 @@ const providerMap = [
|
|
|
32526
32784
|
if (modelType === "realtime") return new OpenAiRealtimeProvider(modelName || configuredModel || "gpt-4o-realtime-preview-2024-12-17", providerOptions);
|
|
32527
32785
|
if (modelType === "responses") return new require_responses.OpenAiResponsesProvider(modelName || configuredModel || "gpt-4.1-2025-04-14", providerOptions);
|
|
32528
32786
|
if (modelType === "transcription") {
|
|
32529
|
-
const { OpenAiTranscriptionProvider } = await Promise.resolve().then(() => require("./transcription-
|
|
32787
|
+
const { OpenAiTranscriptionProvider } = await Promise.resolve().then(() => require("./transcription-BvtsrzRG.cjs"));
|
|
32530
32788
|
return new OpenAiTranscriptionProvider(modelName || configuredModel || "gpt-4o-transcribe-diarize", providerOptions);
|
|
32531
32789
|
}
|
|
32532
32790
|
if (require_chat.OpenAiChatCompletionProvider.OPENAI_CHAT_MODEL_NAMES.includes(modelType)) return new require_chat.OpenAiChatCompletionProvider(modelType, providerOptions);
|
|
@@ -32534,11 +32792,11 @@ const providerMap = [
|
|
|
32534
32792
|
if (OpenAiRealtimeProvider.OPENAI_REALTIME_MODEL_NAMES.includes(modelType)) return new OpenAiRealtimeProvider(modelType, providerOptions);
|
|
32535
32793
|
if (require_responses.OpenAiResponsesProvider.OPENAI_RESPONSES_MODEL_NAMES.includes(modelType)) return new require_responses.OpenAiResponsesProvider(modelType, providerOptions);
|
|
32536
32794
|
if (modelType === "agents") {
|
|
32537
|
-
const { OpenAiAgentsProvider } = await Promise.resolve().then(() => require("./agents-
|
|
32795
|
+
const { OpenAiAgentsProvider } = await Promise.resolve().then(() => require("./agents-CAYbM7qD.cjs"));
|
|
32538
32796
|
return new OpenAiAgentsProvider(modelName || "default-agent", providerOptions);
|
|
32539
32797
|
}
|
|
32540
32798
|
if (modelType === "chatkit") {
|
|
32541
|
-
const { OpenAiChatKitProvider } = await Promise.resolve().then(() => require("./chatkit-
|
|
32799
|
+
const { OpenAiChatKitProvider } = await Promise.resolve().then(() => require("./chatkit-Cx174XI3.cjs"));
|
|
32542
32800
|
return new OpenAiChatKitProvider(modelName || "", providerOptions);
|
|
32543
32801
|
}
|
|
32544
32802
|
if (modelType === "assistant") return new OpenAiAssistantProvider(modelName, providerOptions);
|
|
@@ -32581,7 +32839,7 @@ const providerMap = [
|
|
|
32581
32839
|
{
|
|
32582
32840
|
test: (providerPath) => providerPath.startsWith("quiverai:"),
|
|
32583
32841
|
create: async (providerPath, providerOptions, context) => {
|
|
32584
|
-
const { createQuiverAiProvider } = await Promise.resolve().then(() => require("./quiverai-
|
|
32842
|
+
const { createQuiverAiProvider } = await Promise.resolve().then(() => require("./quiverai-CcUhPIBg.cjs"));
|
|
32585
32843
|
return createQuiverAiProvider(providerPath, providerOptions, context.env);
|
|
32586
32844
|
}
|
|
32587
32845
|
},
|
|
@@ -32599,7 +32857,7 @@ const providerMap = [
|
|
|
32599
32857
|
{
|
|
32600
32858
|
test: (providerPath) => providerPath.startsWith("modelslab:"),
|
|
32601
32859
|
create: async (providerPath, providerOptions, context) => {
|
|
32602
|
-
const { ModelsLabImageProvider } = await Promise.resolve().then(() => require("./modelslab-
|
|
32860
|
+
const { ModelsLabImageProvider } = await Promise.resolve().then(() => require("./modelslab-IQbNg-r7.cjs"));
|
|
32603
32861
|
const splits = providerPath.split(":");
|
|
32604
32862
|
const modelType = splits[1];
|
|
32605
32863
|
const modelName = splits.slice(2).join(":");
|
|
@@ -32643,7 +32901,7 @@ const providerMap = [
|
|
|
32643
32901
|
{
|
|
32644
32902
|
test: (providerPath) => providerPath.startsWith("aimlapi:"),
|
|
32645
32903
|
create: async (providerPath, providerOptions, context) => {
|
|
32646
|
-
const { createAimlApiProvider } = await Promise.resolve().then(() => require("./aimlapi-
|
|
32904
|
+
const { createAimlApiProvider } = await Promise.resolve().then(() => require("./aimlapi-Bv8Fmc-b.cjs"));
|
|
32647
32905
|
return createAimlApiProvider(providerPath, {
|
|
32648
32906
|
...providerOptions,
|
|
32649
32907
|
env: context.env
|
|
@@ -32653,7 +32911,7 @@ const providerMap = [
|
|
|
32653
32911
|
{
|
|
32654
32912
|
test: (providerPath) => providerPath.startsWith("cometapi:"),
|
|
32655
32913
|
create: async (providerPath, providerOptions, context) => {
|
|
32656
|
-
const { createCometApiProvider } = await Promise.resolve().then(() => require("./cometapi-
|
|
32914
|
+
const { createCometApiProvider } = await Promise.resolve().then(() => require("./cometapi-C3hOlM7-.cjs"));
|
|
32657
32915
|
return createCometApiProvider(providerPath, {
|
|
32658
32916
|
...providerOptions,
|
|
32659
32917
|
env: context.env
|
|
@@ -32663,7 +32921,7 @@ const providerMap = [
|
|
|
32663
32921
|
{
|
|
32664
32922
|
test: (providerPath) => providerPath.startsWith("docker:"),
|
|
32665
32923
|
create: async (providerPath, providerOptions, context) => {
|
|
32666
|
-
const { createDockerProvider } = await Promise.resolve().then(() => require("./docker-
|
|
32924
|
+
const { createDockerProvider } = await Promise.resolve().then(() => require("./docker-Cqj2-QVi.cjs"));
|
|
32667
32925
|
return createDockerProvider(providerPath, {
|
|
32668
32926
|
...providerOptions,
|
|
32669
32927
|
env: context.env
|
|
@@ -32684,6 +32942,14 @@ const providerMap = [
|
|
|
32684
32942
|
create: async (providerPath, providerOptions, _context) => {
|
|
32685
32943
|
const splits = providerPath.split(":");
|
|
32686
32944
|
const firstPart = splits[1];
|
|
32945
|
+
if (firstPart === "video") return new GoogleVideoProvider(splits.slice(2).join(":"), {
|
|
32946
|
+
...providerOptions,
|
|
32947
|
+
id: providerPath,
|
|
32948
|
+
config: {
|
|
32949
|
+
...providerOptions.config,
|
|
32950
|
+
vertexai: true
|
|
32951
|
+
}
|
|
32952
|
+
});
|
|
32687
32953
|
if (firstPart === "chat") return new VertexChatProvider(splits.slice(2).join(":"), providerOptions);
|
|
32688
32954
|
if (firstPart === "embedding" || firstPart === "embeddings") return new VertexEmbeddingProvider(splits.slice(2).join(":"), providerOptions);
|
|
32689
32955
|
return new VertexChatProvider(splits.slice(1).join(":"), providerOptions);
|
|
@@ -32750,7 +33016,10 @@ const providerMap = [
|
|
|
32750
33016
|
const modelName = splits.slice(2).join(":");
|
|
32751
33017
|
if (serviceType === "live") return new GoogleLiveProvider(modelName, providerOptions);
|
|
32752
33018
|
else if (serviceType === "image") return new GoogleImageProvider(modelName, providerOptions);
|
|
32753
|
-
else if (serviceType === "video") return new GoogleVideoProvider(modelName,
|
|
33019
|
+
else if (serviceType === "video") return new GoogleVideoProvider(modelName, {
|
|
33020
|
+
...providerOptions,
|
|
33021
|
+
id: providerPath
|
|
33022
|
+
});
|
|
32754
33023
|
}
|
|
32755
33024
|
const modelName = splits[1];
|
|
32756
33025
|
if (modelName.includes("-image")) return new GeminiImageProvider(modelName, providerOptions);
|
|
@@ -32929,7 +33198,7 @@ const providerMap = [
|
|
|
32929
33198
|
{
|
|
32930
33199
|
test: (providerPath) => providerPath.startsWith("transformers:") || providerPath.startsWith("transformers.js:"),
|
|
32931
33200
|
create: async (providerPath, providerOptions, _context) => {
|
|
32932
|
-
const { validateTransformersDependency } = await Promise.resolve().then(() => require("./transformersAvailability-
|
|
33201
|
+
const { validateTransformersDependency } = await Promise.resolve().then(() => require("./transformersAvailability-DKoRtQLy.cjs"));
|
|
32933
33202
|
await validateTransformersDependency();
|
|
32934
33203
|
const splits = providerPath.split(":");
|
|
32935
33204
|
if (splits.length < 3) throw new Error(`Invalid Transformers.js provider path: ${providerPath}. Format: transformers:<task>:<model>
|
|
@@ -32949,7 +33218,7 @@ Example: transformers:feature-extraction:Xenova/all-MiniLM-L6-v2`);
|
|
|
32949
33218
|
test: (providerPath) => providerPath === "slack" || providerPath.startsWith("slack:"),
|
|
32950
33219
|
create: async (providerPath, providerOptions, _context) => {
|
|
32951
33220
|
try {
|
|
32952
|
-
const { SlackProvider } = await Promise.resolve().then(() => require("./slack-
|
|
33221
|
+
const { SlackProvider } = await Promise.resolve().then(() => require("./slack-94iG3T0s.cjs"));
|
|
32953
33222
|
if (providerPath === "slack") return new SlackProvider(providerOptions);
|
|
32954
33223
|
const splits = providerPath.split(":");
|
|
32955
33224
|
if (splits.length < 2) throw new Error("Invalid Slack provider path. Use slack:<channel_id> or slack:channel:<channel_id>");
|
|
@@ -33592,4 +33861,4 @@ Object.defineProperty(exports, "validateStrategies", {
|
|
|
33592
33861
|
}
|
|
33593
33862
|
});
|
|
33594
33863
|
|
|
33595
|
-
//# sourceMappingURL=providers-
|
|
33864
|
+
//# sourceMappingURL=providers-CScd1wN6.cjs.map
|