promptfoo 0.121.3 → 0.121.5
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 +1 -1
- package/dist/src/{ListApp-Du7YVwj5.js → ListApp-BRUsT43Y.js} +1 -1
- package/dist/src/{accounts-BPyfpSeU.cjs → accounts-BIFntVWB.cjs} +5 -5
- package/dist/src/{accounts-CFLK3mnD.js → accounts-CLJHCDDb.js} +6 -6
- package/dist/src/{accounts-B2XmGjty.js → accounts-CaLNYnf7.js} +5 -5
- package/dist/src/{accounts-Xatc0RYb.js → accounts-bnyHT7Ju.js} +5 -5
- package/dist/src/{agentic-utils-36epdqwB.js → agentic-utils-B5krlibj.js} +3 -3
- package/dist/src/{agentic-utils-DIYAAYE7.js → agentic-utils-Ba67xmgs.js} +3 -3
- package/dist/src/{agentic-utils-D8yXo5Lm.js → agentic-utils-BclbiXiq.js} +4 -4
- package/dist/src/{agentic-utils-DAVsChuB.cjs → agentic-utils-D2x0wGhB.cjs} +3 -3
- package/dist/src/{agents-CLQ-P15P.js → agents-BGqaTDnr.js} +5 -7
- package/dist/src/{agents-wg3ohknq.js → agents-BV9yFpXX.js} +6 -7
- package/dist/src/{agents-CgBniSlI.js → agents-BYdMl1UE.js} +5 -9
- package/dist/src/{agents-Bqgfdokm.js → agents-DhxWMCtH.js} +35 -14
- package/dist/src/{agents-BBWxKSM0.cjs → agents-DiWmQYH9.cjs} +5 -7
- package/dist/src/{agents-CAYbM7qD.cjs → agents-WULPVjbH.cjs} +34 -12
- package/dist/src/{agents-DSSTV4bv.js → agents-emVcx3yh.js} +35 -13
- package/dist/src/{agents-BBVJCIYr.js → agents-n6vPqV3i.js} +35 -13
- package/dist/src/{aimlapi-BwGC1TtS.js → aimlapi-BxqK9HF_.js} +8 -14
- package/dist/src/{aimlapi-Bv8Fmc-b.cjs → aimlapi-BzLjZI_m.cjs} +8 -15
- package/dist/src/{aimlapi-MgSLdvy7.js → aimlapi-DR4pgeiC.js} +7 -14
- package/dist/src/{aimlapi-DaC3qZ-o.js → aimlapi-uPGp0Zdo.js} +7 -16
- package/dist/src/app/app/tsconfig.app.tsbuildinfo +1 -0
- package/dist/src/app/assets/Report-vjzrbgce.js +1 -0
- package/dist/src/app/assets/index-B3NQ8HTd.js +385 -0
- package/dist/src/app/assets/index-Cli2yAXv.css +1 -0
- package/dist/src/app/assets/rolldown-runtime-COnpUsM8.js +1 -0
- package/dist/src/app/assets/scroll-timeline-D9IT_e8Z.js +1 -0
- package/dist/src/app/assets/sync-IjzpWrOE.js +4 -0
- package/dist/src/app/assets/vendor-charts-BNdH8TCw.js +36 -0
- package/dist/src/app/assets/vendor-markdown-Ch00wnNI.js +29 -0
- package/dist/src/app/assets/vendor-react-CVvmk1UB.js +9 -0
- package/dist/src/app/assets/vendor-utils-BnEYbx2Q.js +37 -0
- package/dist/src/app/index.html +32 -7
- package/dist/src/{audio-Bn44pQxv.js → audio-BvpTOArF.js} +4 -4
- package/dist/src/{audio-DVFjQ67_.cjs → audio-C0vDeS0j.cjs} +4 -4
- package/dist/src/{audio-DjU9GswO.js → audio-CScmnmEB.js} +4 -5
- package/dist/src/{audio-DDA5WHdx.js → audio-Da8U9IS5.js} +4 -4
- package/dist/src/{base-CKjwebIH.js → base-BOMaNEes.js} +3 -3
- package/dist/src/{base-CqzQ4K8j.js → base-BTux96b1.js} +3 -3
- package/dist/src/{base-BboXIF_0.cjs → base-Tw6uhH8K.cjs} +3 -3
- package/dist/src/{base-Cz2ZC_iA.js → base-dYsl2hmL.js} +3 -3
- package/dist/src/{blobs-C6j0bvFz.cjs → blobs-B95F_7vE.cjs} +3 -3
- package/dist/src/{blobs-DXTl6J3H.js → blobs-BW4U31ue.js} +3 -3
- package/dist/src/{blobs-BUWmKWzo.js → blobs-D_gg8nbm.js} +4 -4
- package/dist/src/{blobs-B1JriOyi.js → blobs-DjLby-uP.js} +4 -4
- package/dist/src/cache-BI5BY7ey.js +280 -0
- package/dist/src/cache-BRkhlH3k.cjs +3 -0
- package/dist/src/cache-BlC6aeJ0.js +3 -0
- package/dist/src/cache-Bzttsk0X.js +310 -0
- package/dist/src/cache-Cr-qWIbP.js +310 -0
- package/dist/src/cache-DGg-yTZG.cjs +376 -0
- package/dist/src/{chat-BEwdgGEg.js → chat-BLOdH60v.js} +63 -37
- package/dist/src/{chat-B0iaWhoh.js → chat-Cx_LkwvZ.js} +63 -37
- package/dist/src/{chat-DK1U-eZ-.js → chat-D9nudO9b.js} +5 -14
- package/dist/src/{chat-pxmiVpWe.js → chat-DChSH_Es.js} +63 -37
- package/dist/src/{chat-B-52XYI1.js → chat-DG2LkwLq.js} +3 -13
- package/dist/src/{chat-BtIKkLKx.cjs → chat-DH97tVV9.cjs} +3 -13
- package/dist/src/{chat-BE0qTA8e.js → chat-aMQZw6R7.js} +4 -16
- package/dist/src/{chat-CM8qWR3_.cjs → chat-vYqqv1gP.cjs} +64 -38
- package/dist/src/{chatkit-_8eJqKcD.js → chatkit-B8X34dQc.js} +4 -4
- package/dist/src/{chatkit-BYGQlHlV.js → chatkit-BXu42Qwt.js} +4 -4
- package/dist/src/{chatkit-a2D6mY6s.js → chatkit-CbMRoeYw.js} +4 -4
- package/dist/src/{chatkit-Cx174XI3.cjs → chatkit-D44VyUyB.cjs} +4 -4
- package/dist/src/{claude-agent-sdk-8ddRp1L2.cjs → claude-agent-sdk-BRq0bbIK.cjs} +23 -18
- package/dist/src/{claude-agent-sdk-CMjh4LFH.js → claude-agent-sdk-BjriSVRZ.js} +20 -15
- package/dist/src/{claude-agent-sdk-HgbFioFw.js → claude-agent-sdk-BzNZeZ0N.js} +20 -15
- package/dist/src/{claude-agent-sdk-Bq5EArsX.js → claude-agent-sdk-DYv_AJ8u.js} +21 -17
- package/dist/src/cloud-CoD5OacT.js +3 -0
- package/dist/src/{cloud-z8KZpUoa.js → cloud-Da0bofJd.js} +25 -13
- package/dist/src/{cloudflare-ai-Bbp26N0L.js → cloudflare-ai-CXC4b1EU.js} +5 -14
- package/dist/src/{cloudflare-ai-BGyXlpXJ.js → cloudflare-ai-CyBoIs1Q.js} +7 -15
- package/dist/src/{cloudflare-ai-DdKP9TKT.js → cloudflare-ai-DGOwgexC.js} +6 -17
- package/dist/src/{cloudflare-ai-C62x6MQG.cjs → cloudflare-ai-DJv5qnyb.cjs} +6 -15
- package/dist/src/{cloudflare-gateway-DXhtXDRb.js → cloudflare-gateway-1sAoOyft.js} +6 -16
- package/dist/src/{cloudflare-gateway-D-e9i1Sn.js → cloudflare-gateway-D-dnkzCF.js} +5 -18
- package/dist/src/{cloudflare-gateway-Dx36ftqF.cjs → cloudflare-gateway-DKVjkDav.cjs} +4 -15
- package/dist/src/{cloudflare-gateway-BwAaUgeW.js → cloudflare-gateway-TJkVrZlB.js} +4 -15
- package/dist/src/codex-app-server-CCLjqCh9.js +1915 -0
- package/dist/src/codex-app-server-CCe0TiDc.js +1915 -0
- package/dist/src/codex-app-server-CPW1LFwh.js +1916 -0
- package/dist/src/codex-app-server-VMRnjZ68.cjs +1920 -0
- package/dist/src/codex-sdk-1jm_qPHf.js +3 -0
- package/dist/src/codex-sdk-Bd8UbO9q.cjs +1172 -0
- package/dist/src/codex-sdk-BgEFQ70r.js +1164 -0
- package/dist/src/codex-sdk-Bzb_TqX9.js +1165 -0
- package/dist/src/codex-sdk-Danroptg.cjs +2 -0
- package/dist/src/codex-sdk-DfvDTN33.js +1165 -0
- package/dist/src/{cometapi-BDyV-NNm.js → cometapi-B5ImDlSm.js} +9 -15
- package/dist/src/{cometapi-C3hOlM7-.cjs → cometapi-BgAkuYCw.cjs} +9 -16
- package/dist/src/{cometapi-hhL4TAh3.js → cometapi-CC7hWxmX.js} +8 -15
- package/dist/src/{cometapi-sp7sJpBD.js → cometapi-CCbpHkuF.js} +8 -17
- package/dist/src/{completion-DoYy49ti.js → completion-2iuYVxwi.js} +8 -57
- package/dist/src/{completion-BCimtq-h.js → completion-CrD6MQ93.js} +8 -57
- package/dist/src/{completion-DlXUhj5c.cjs → completion-DtQ72Bm3.cjs} +7 -62
- package/dist/src/{completion-DCjv7RZ3.js → completion-Vq_ad618.js} +8 -57
- package/dist/src/{createHash-CTQmL3G2.js → createHash-4gFQpDDv.js} +3 -3
- package/dist/src/{createHash-Da8fMwqB.js → createHash-DPpsZgFF.js} +3 -3
- package/dist/src/{createHash-DmPQkvBh.js → createHash-Un4Q_huE.js} +3 -3
- package/dist/src/{createHash-BYwImsYv.cjs → createHash-VvBIc-AW.cjs} +4 -4
- package/dist/src/{docker-CxCkwMzc.js → docker--3qzPa-6.js} +6 -14
- package/dist/src/{docker-Cqj2-QVi.cjs → docker-D3AY-5F5.cjs} +7 -15
- package/dist/src/{docker-FeBni2dw.js → docker-DCsCDvwM.js} +7 -14
- package/dist/src/{docker-DpguQj-w.js → docker-Dorv4_Dg.js} +6 -16
- package/dist/src/embedding-BXhN5lCH.cjs +63 -0
- package/dist/src/embedding-ChS1ivFS.js +58 -0
- package/dist/src/embedding-DNRvZwRN.js +59 -0
- package/dist/src/embedding-D_bI4NDq.js +58 -0
- package/dist/src/entrypoint.js +69 -6
- package/dist/src/{errors-P6ll7XSJ.js → errors-DFHe4L-n.js} +1 -1
- package/dist/src/{esm-SUNIX1x3.js → esm-B6whoAcf.js} +15 -6
- package/dist/src/{esm-CKWP3u_P.js → esm-BRkfNsYs.js} +16 -7
- package/dist/src/{esm-7UIl0pPM.js → esm-BX8fwlAO.js} +27 -18
- package/dist/src/{esm-CipptfDu.cjs → esm-B_rGuPTo.cjs} +15 -6
- package/dist/src/eval-BQPLBJbw.js +3 -0
- package/dist/src/{eval-BTqTn7lb.js → eval-DJ_4A-tr.js} +50 -21
- package/dist/src/evalResult-BBJAHAtw.cjs +2 -0
- package/dist/src/evalResult-BBK58h2B.js +3 -0
- package/dist/src/{evalResult-DpARzUCb.cjs → evalResult-Cx-8OWkb.cjs} +29 -11
- package/dist/src/{evalResult-DUDShQrm.js → evalResult-D6P5I5il.js} +29 -11
- package/dist/src/{evalResult-BkIhRdTe.js → evalResult-pSvGWFMo.js} +29 -11
- package/dist/src/evalResult-spPqh1G_.js +2 -0
- package/dist/src/{evaluator-BcvOGaam.js → evaluator-D-UIbbYq.js} +3975 -2152
- package/dist/src/evaluator-DgLKaZk8.js +3 -0
- package/dist/src/{extractor-D_wd8jxt.js → extractor-BM3jRERL.js} +6 -6
- package/dist/src/{extractor-DG3sSfXE.cjs → extractor-Dxr2J_wK.cjs} +6 -6
- package/dist/src/{extractor-CAZ2G3Kh.js → extractor-DxyiFhPk.js} +6 -6
- package/dist/src/{extractor-C8XwivI9.js → extractor-YlZbUMsL.js} +6 -6
- package/dist/src/fetch-8viavNv8.js +3 -0
- package/dist/src/{fetch-DoVRJZhJ.js → fetch-B6ch2nU2.js} +199 -60
- package/dist/src/{fetch-CVAtKnI3.js → fetch-D9xxyC1p.js} +404 -252
- package/dist/src/{fetch-BnR9wSnm.cjs → fetch-NuqXW1Xb.cjs} +415 -263
- package/dist/src/{fetch-BiYv2BZc.js → fetch-Y5qX_kST.js} +222 -70
- package/dist/src/{fileExtensions-LcDYkU4v.js → fileExtensions-8CjoL7vB.js} +1 -1
- package/dist/src/{fileExtensions-DnqA1y9x.js → fileExtensions-BGh-W-HT.js} +1 -1
- package/dist/src/{fileExtensions-bYh77CN8.cjs → fileExtensions-D9h-8Wxg.cjs} +1 -1
- package/dist/src/{fileExtensions-Ds-foDzt.js → fileExtensions-DysCsxNG.js} +1 -1
- package/dist/src/{formatDuration-DgBVMN65.js → formatDuration-Ch4A7G3o.js} +1 -1
- package/dist/src/{genaiTracer-BfxrvSUb.cjs → genaiTracer-BokHC-MW.cjs} +7 -3
- package/dist/src/{genaiTracer-C1rxGO8Q.js → genaiTracer-C3ZPQU60.js} +6 -2
- package/dist/src/{genaiTracer-70Z8BIuV.js → genaiTracer-CFny3gOy.js} +6 -2
- package/dist/src/{genaiTracer-D3fD9dNV.js → genaiTracer-DxODqT9e.js} +6 -2
- package/dist/src/golang/wrapper.go +1 -1
- package/dist/src/{graders-DG7mhg-b.js → graders-BoUqsCEm.js} +7402 -5699
- package/dist/src/{graders-BElhu9ZY.cjs → graders-Bw1wk_21.cjs} +5220 -3437
- package/dist/src/graders-C84JI-m5.js +2 -0
- package/dist/src/graders-CBbd0K0Q.cjs +2 -0
- package/dist/src/graders-CbQqpHSN.js +3 -0
- package/dist/src/{graders-RjHF8VfG.js → graders-CgPn32yp.js} +7400 -5697
- package/dist/src/{graders-BXAJ0sbS.js → graders-CwrbifOo.js} +6136 -4433
- package/dist/src/graders-DS42d3ZG.js +2 -0
- package/dist/src/{image-6WQXK8m8.js → image-BeWaInPF.js} +4 -4
- package/dist/src/{image-PoF6DN3x.js → image-BmilRNqO.js} +8 -8
- package/dist/src/{image--F58eEIn.cjs → image-CxJoa3aW.cjs} +8 -8
- package/dist/src/{image-fza3zuKs.cjs → image-D10dNAav.cjs} +4 -4
- package/dist/src/{image-DO0RYnjH.js → image-Dr_3I3nK.js} +4 -5
- package/dist/src/{image-B8b6f36E.js → image-DsGRlkh7.js} +8 -8
- package/dist/src/{image-CoxZp9PZ.js → image-a_SGUobh.js} +8 -8
- package/dist/src/{image-xNbw5ph2.js → image-qjO6FWPs.js} +4 -4
- package/dist/src/index.cjs +4835 -2582
- package/dist/src/index.d.cts +2782 -31
- package/dist/src/index.d.ts +2783 -32
- package/dist/src/index.js +4817 -2564
- package/dist/src/{interactiveCheck-BnMYOjMu.js → interactiveCheck-CCICw2cy.js} +2 -2
- package/dist/src/{invariant-BtWWVVhl.js → invariant-B2Rf6avk.js} +1 -1
- package/dist/src/{invariant-vgHWClmd.js → invariant-DIYf9sP1.js} +1 -1
- package/dist/src/{knowledgeBase-Bi7CmDbx.js → knowledgeBase-BBETc5-S.js} +6 -8
- package/dist/src/{knowledgeBase-DqrLX8fy.cjs → knowledgeBase-C8qOo26M.cjs} +6 -8
- package/dist/src/{knowledgeBase-DFRXPZl_.js → knowledgeBase-CzAi2rUI.js} +7 -8
- package/dist/src/{knowledgeBase-Ce3ofVan.js → knowledgeBase-Dr3Kib7F.js} +6 -10
- package/dist/src/{litellm-CKiAxnoM.js → litellm-BLSiANhk.js} +6 -14
- package/dist/src/{litellm-CnHI69aj.cjs → litellm-CaUmV7Mk.cjs} +6 -15
- package/dist/src/{litellm-Tc294Jhj.js → litellm-DQGo_juI.js} +5 -14
- package/dist/src/{litellm-Bo2gQXpo.js → litellm-DRc4qWfc.js} +5 -16
- package/dist/src/{logger-BcJBzSSA.js → logger-BbY6ypFL.js} +41 -12
- package/dist/src/{logger-D5iKBpu_.cjs → logger-COuQb2xB.cjs} +51 -10
- package/dist/src/{logger-DO8_zM18.js → logger-Ct2S6Yx-.js} +40 -11
- package/dist/src/{logger-BnkjG2jt.js → logger-KD8JjCRJ.js} +41 -12
- package/dist/src/{luma-ray-C9q8rdQe.js → luma-ray-B-tNZzqW.js} +6 -10
- package/dist/src/{luma-ray-DP0QA9qn.js → luma-ray-CtS3OlGq.js} +6 -10
- package/dist/src/{luma-ray-0ehMPt5N.js → luma-ray-PJJgUjOc.js} +6 -11
- package/dist/src/{luma-ray-m9Ku2meV.cjs → luma-ray-if-Ml4R9.cjs} +6 -10
- package/dist/src/main.d.ts +1 -26
- package/dist/src/main.js +1188 -679
- package/dist/src/messages-B9dSjrNf.js +544 -0
- package/dist/src/messages-BnsVHUnm.cjs +558 -0
- package/dist/src/messages-CI69Lasb.js +543 -0
- package/dist/src/messages-CewuNcNS.js +543 -0
- package/dist/src/{meteor-DLZZ3osF.cjs → meteor-BBGcGeCa.cjs} +1 -1
- package/dist/src/{meteor-DUiCJRC-.js → meteor-BKTM-7KS.js} +1 -1
- package/dist/src/{meteor-44VjEACX.js → meteor-CeGo0Lu2.js} +2 -2
- package/dist/src/{meteor-D-SotUw9.js → meteor-Wc_aUVvu.js} +2 -2
- package/dist/src/{modelslab-B5J-ZM5c.js → modelslab-BCLOtfek.js} +8 -10
- package/dist/src/{modelslab-IQbNg-r7.cjs → modelslab-BkapYJhh.cjs} +7 -10
- package/dist/src/{modelslab-BTOT8FUO.js → modelslab-D73OnKSx.js} +7 -10
- package/dist/src/{modelslab-BI458moT.js → modelslab-zpz9JcK0.js} +7 -12
- package/dist/src/{nova-reel-BZ9y-Y5s.js → nova-reel-B8F_TK5w.js} +7 -10
- package/dist/src/{nova-reel-Xw1SXLpg.js → nova-reel-Bx0NFV2f.js} +6 -10
- package/dist/src/{nova-reel-DEeQlnOJ.js → nova-reel-CNGJTLtG.js} +6 -12
- package/dist/src/{nova-reel-CE5etkv9.cjs → nova-reel-DkT7tnoB.cjs} +6 -10
- package/dist/src/{nova-sonic-Ogqf-csn.js → nova-sonic-BaXRN1cr.js} +5 -7
- package/dist/src/{nova-sonic-DXTLpi-r.js → nova-sonic-BeTRaFOh.js} +4 -7
- package/dist/src/{nova-sonic-DWswpN1E.js → nova-sonic-CL7Zqv0G.js} +4 -9
- package/dist/src/{nova-sonic-N0yCm0vb.cjs → nova-sonic-YT426juD.cjs} +4 -7
- package/dist/src/{openai-BcB5KlTk.js → openai-BMHD2Huo.js} +6 -3
- package/dist/src/{openai-BMcwgD5C.js → openai-BT-JvDse.js} +6 -3
- package/dist/src/{openai-CoxGAQwn.cjs → openai-Cy1XLs0c.cjs} +6 -3
- package/dist/src/{openai-D6wITiVn.js → openai-D4fxGvRx.js} +6 -3
- package/dist/src/openclaw-Bq7RVR3k.js +1200 -0
- package/dist/src/openclaw-DA8U4DsD.js +1201 -0
- package/dist/src/openclaw-DObVgpjC.js +1200 -0
- package/dist/src/openclaw-DUBZP3GL.cjs +1206 -0
- package/dist/src/{opencode-sdk-CHCs7dEb.js → opencode-sdk-BB40Wir1.js} +6 -8
- package/dist/src/{opencode-sdk-DDxj4QqH.js → opencode-sdk-BM1UAIv1.js} +6 -8
- package/dist/src/{opencode-sdk-WWJhnbKr.cjs → opencode-sdk-CeqiOcOU.cjs} +7 -9
- package/dist/src/{opencode-sdk-C71Z0ehR.js → opencode-sdk-ChdK7F7z.js} +6 -9
- package/dist/src/{otlpReceiver-CZL48YfC.js → otlpReceiver-C6thJRXi.js} +154 -98
- package/dist/src/{otlpReceiver-C9KlUtxh.js → otlpReceiver-CcdIikOu.js} +154 -98
- package/dist/src/{otlpReceiver-DHKqJlsz.cjs → otlpReceiver-DNSQj6bf.cjs} +154 -98
- package/dist/src/{otlpReceiver-CavGAA6k.js → otlpReceiver-UYMQx3sy.js} +154 -98
- package/dist/src/{providerRegistry-BkzVH5Ba.js → providerRegistry-1gB5vtzQ.js} +2 -2
- package/dist/src/{providerRegistry-BTDgfV5h.cjs → providerRegistry-BESeALrr.cjs} +2 -2
- package/dist/src/{providerRegistry-CUWki5mQ.js → providerRegistry-DoACwqhD.js} +2 -2
- package/dist/src/{providerRegistry-B9lh-_tx.js → providerRegistry-PMsleEzs.js} +2 -2
- package/dist/src/providers-BuyzKt7C.js +2 -0
- package/dist/src/providers-C7lNVBjX.cjs +3 -0
- package/dist/src/providers-CCE2COJi2.js +2 -0
- package/dist/src/{providers-Cn73d5sr.js → providers-CJh7iriU.js} +17180 -16823
- package/dist/src/providers-Ctcc592x.js +3 -0
- package/dist/src/{providers-DvddrgxL.js → providers-DRrerKra.js} +1052 -695
- package/dist/src/{providers-Ch6Mr0gn.js → providers-DT-GtF2t.js} +16716 -16359
- package/dist/src/{providers-CScd1wN6.cjs → providers-eDShy16E.cjs} +19893 -19506
- package/dist/src/python/persistent_wrapper.py +0 -5
- package/dist/src/{pythonUtils-Cpo0Ez1p.js → pythonUtils-C4tltmIn.js} +4 -4
- package/dist/src/{pythonUtils-dAVigVK-.cjs → pythonUtils-CoLaCwNY.cjs} +4 -4
- package/dist/src/{pythonUtils-Bzwbgpbg.js → pythonUtils-DMO68Jg7.js} +3 -3
- package/dist/src/{pythonUtils-wIqk7zAf.js → pythonUtils-DNqbnRdx.js} +3 -3
- package/dist/src/{quiverai-BeofbLVc.js → quiverai-BSS9a7wV.js} +4 -4
- package/dist/src/{quiverai-DVSEqJiq.js → quiverai-Bk1KrvL6.js} +4 -4
- package/dist/src/{quiverai-CcUhPIBg.cjs → quiverai-Bpx6MZ7T.cjs} +4 -4
- package/dist/src/{quiverai-CCQn73lq.js → quiverai-CPKhWgaT.js} +4 -5
- package/dist/src/render-7uNJ2V14.js +135 -0
- package/dist/src/render-DlscvAUJ.js +135 -0
- package/dist/src/render-eui5p5mL.js +136 -0
- package/dist/src/{render-BHl6QVq9.js → render-nj-UaPdn.js} +2 -3
- package/dist/src/render-tG6ir9_g.cjs +165 -0
- package/dist/src/{responses-CgNyTPsY.js → responses-1ztiVYsx.js} +56 -17
- package/dist/src/{responses-BKP_WYis.js → responses-B8haB-mD.js} +56 -17
- package/dist/src/{responses-CQb1Tj69.js → responses-BiaBguAu.js} +56 -17
- package/dist/src/{responses-mo0KQDbu.cjs → responses-CF-ayauu.cjs} +56 -17
- package/dist/src/rubyUtils-4hjGxvju.js +3 -0
- package/dist/src/{rubyUtils-DECSbsfY.js → rubyUtils-BI0p46eZ.js} +3 -3
- package/dist/src/{rubyUtils-CiVfln3g.js → rubyUtils-CIQFnVz4.js} +3 -3
- package/dist/src/rubyUtils-CO-tuszQ.cjs +2 -0
- package/dist/src/{rubyUtils-PgU-gHmx.js → rubyUtils-DGnoCYL2.js} +4 -4
- package/dist/src/{rubyUtils-CGeUtCfW.cjs → rubyUtils-DoifqkiA.cjs} +5 -4
- package/dist/src/{sagemaker-CqeASYE5.js → sagemaker-BDLeW29y.js} +14 -18
- package/dist/src/{sagemaker-MUbD5V3v.js → sagemaker-C5T60MKf.js} +14 -19
- package/dist/src/{sagemaker-CVv8W7so.js → sagemaker-ClS_NB07.js} +14 -18
- package/dist/src/{sagemaker-jiw1wQa-.cjs → sagemaker-ljtY12VM.cjs} +14 -18
- package/dist/src/{scanner-DVDeUz1r.js → scanner-nOCWNIXa.js} +130 -35
- package/dist/src/server/golang/wrapper.go +1 -1
- package/dist/src/server/index.js +4829 -2529
- package/dist/src/server/python/persistent_wrapper.py +0 -5
- package/dist/src/{server-BtoCXeXI.cjs → server-BEECpeGG.cjs} +140 -6
- package/dist/src/{server-DZ9MtCn0.js → server-ByiF3qlg.js} +129 -9
- package/dist/src/{server-Cns05F1j.js → server-ByxbqAcQ.js} +128 -8
- package/dist/src/server-C0XKRNB_.cjs +2 -0
- package/dist/src/server-C_15p79-.js +3 -0
- package/dist/src/{server-CP9qKM40.js → server-gyd6d4Hc.js} +126 -7
- package/dist/src/{signal-C3ZTsUgi.js → signal-DTtUuU3l.js} +3 -3
- package/dist/src/{slack-DCEV-vWP.js → slack-4zZX1OKP.js} +2 -2
- package/dist/src/{slack-94iG3T0s.cjs → slack-BLlsDpfG.cjs} +2 -2
- package/dist/src/{slack-BR0HtO3K.js → slack-BPYLQLgb.js} +2 -2
- package/dist/src/{slack-2sdpGzbt.js → slack-Bamy_7te.js} +2 -2
- package/dist/src/{store-CLyU7AtI.cjs → store-2K0kDi80.cjs} +3 -3
- package/dist/src/{store-VB0GP46K.js → store-2OXm_eBY.js} +3 -3
- package/dist/src/store-BELqNwvz.js +3 -0
- package/dist/src/{store-Cj258DgL.js → store-BPkzEyFM.js} +3 -3
- package/dist/src/{store-P8OKm19S.js → store-CPh25336.js} +3 -3
- package/dist/src/store-uQZ4AjPe.cjs +2 -0
- package/dist/src/{tables-BEIFz2tM.js → tables-BMSOS2Gg.js} +3 -3
- package/dist/src/{tables-BdZQEpRz.cjs → tables-CXbaZ9y1.cjs} +3 -3
- package/dist/src/{tables-DmzvLbeZ.js → tables-NlvH23ky.js} +3 -3
- package/dist/src/{tables-kC7R5kiK.js → tables-WgdUZ8Ck.js} +3 -3
- package/dist/src/{telemetry-DPXLd7UE.js → telemetry--iqaGyaS.js} +5 -4
- package/dist/src/{telemetry-re627Lre.cjs → telemetry-CEQxGnMZ.cjs} +8 -7
- package/dist/src/{telemetry-BugWqKiu.js → telemetry-CgdVGV8N.js} +5 -4
- package/dist/src/{telemetry-BnH5VJAU.js → telemetry-DWdGHvEf.js} +5 -4
- package/dist/src/telemetry-DjNoC_n3.cjs +2 -0
- package/dist/src/telemetry-ZdPZc0fm.js +3 -0
- package/dist/src/{text-CW1cyrwj.cjs → text-BiNME7QG.cjs} +1 -1
- package/dist/src/{text-Db-Wt2u2.js → text-D4lz-Jg_.js} +1 -1
- package/dist/src/{text-TIv0QYnd.js → text-DDQP0tuQ.js} +1 -1
- package/dist/src/{text-B_UCRPp2.js → text-NWvfMfkF.js} +1 -1
- package/dist/src/{tokenUsageUtils-DflFMjS0.js → tokenUsageUtils-2wIvAhB3.js} +7 -3
- package/dist/src/{tokenUsageUtils-BDGe-iyI.js → tokenUsageUtils-4c780gFd.js} +7 -3
- package/dist/src/{tokenUsageUtils-NYT-WKS6.js → tokenUsageUtils-BjVkdk18.js} +7 -3
- package/dist/src/{tokenUsageUtils-bVa1ga6f.cjs → tokenUsageUtils-C9odhsbW.cjs} +7 -3
- package/dist/src/{transcription-CaMivnjG.js → transcription-84t4ALo2.js} +7 -11
- package/dist/src/{transcription-Hb3VnC4M.js → transcription-Bm2emLmJ.js} +8 -11
- package/dist/src/{transcription-BvtsrzRG.cjs → transcription-CZ4LG5hQ.cjs} +9 -13
- package/dist/src/{transcription-DOMMTu01.js → transcription-D7Q0vJsh.js} +7 -13
- package/dist/src/{transform-DrleutM3.js → transform-B-b6Cq-q.js} +8 -6
- package/dist/src/transform-BQt0BeAW.js +3 -0
- package/dist/src/transform-Bq5oqC0s.cjs +2 -0
- package/dist/src/{transform-ZrG2dvlo.cjs → transform-C9izGX54.cjs} +5 -5
- package/dist/src/{transform-BzK09Q_9.js → transform-CwbAZ84V.js} +5 -5
- package/dist/src/{transform-0BwoBsvO.cjs → transform-Dg4LcO1Y.cjs} +18 -10
- package/dist/src/{transform-B2-jIv68.js → transform-DtooZqYY.js} +8 -6
- package/dist/src/{transform-ljLYHEPh.js → transform-DzCF-wqV.js} +5 -5
- package/dist/src/{transform-DyDAwEpE.js → transform-_DpNB4qp.js} +9 -7
- package/dist/src/{transform-BqPkNPYm.js → transform-eGiUAv86.js} +5 -5
- package/dist/src/{transformersAvailability-DKoRtQLy.cjs → transformersAvailability-B22swDxr.cjs} +1 -1
- package/dist/src/{transformersAvailability-BGkzavwb.js → transformersAvailability-lvCCvuPT.js} +1 -1
- package/dist/src/{transformersAvailability-D6c6ROpT.js → transformersAvailability-rJGPccjr.js} +1 -1
- package/dist/src/{types-Cd3ygw8W.js → types-BDjGOq4E.js} +354 -24
- package/dist/src/{types-CIhFeUC4.js → types-BVH9hjgW.js} +364 -23
- package/dist/src/{types-D8cGDZbL.cjs → types-CgG2rKiW.cjs} +534 -167
- package/dist/src/{types-q8GXGF65.js → types-DNRZVOue.js} +498 -167
- package/dist/src/{util-BLvy9qfE.js → util-3pBZZb_H.js} +151 -149
- package/dist/src/{util-CFj4YKIn.cjs → util-A5_ZsQUn.cjs} +66 -44
- package/dist/src/{util-BtoGs5Cb.js → util-B9CNhyac.js} +66 -44
- package/dist/src/{util-Bm3E9jpK.js → util-BQOCAHQC.js} +692 -690
- package/dist/src/{util-vNmDL5DT.js → util-BVXcTwXu.js} +138 -36
- package/dist/src/{util-CgDCK4KI.js → util-BlFVL0UF.js} +66 -44
- package/dist/src/{util-DM2rTn_6.js → util-C-kmRosx.js} +66 -44
- package/dist/src/{util-DbVG-yZU.js → util-DFPeFkiV.js} +138 -36
- package/dist/src/{util-DMFeUvLz.js → util-DN0-b81k.js} +138 -36
- package/dist/src/{util--9u9UVCt.cjs → util-Dpmm_dAI.cjs} +143 -35
- package/dist/src/{util-CMMkIxfU.js → util-Dub0f_ej.js} +693 -691
- package/dist/src/{util-CuLo2pMR.cjs → util-DvpHnLt0.cjs} +714 -719
- package/dist/src/{utils-DOjD4dTC.js → utils-BUMN8orw.js} +6 -4
- package/dist/src/{utils-DKw8mrgr.cjs → utils-DkVeShIB.cjs} +6 -4
- package/dist/src/{utils-DEuL4VNB.js → utils-kt7lv30R.js} +6 -4
- package/dist/src/{utils-CFxO9KGo.js → utils-o8S5huU2.js} +6 -4
- package/dist/src/version-0frU0UTr.js +16 -0
- package/dist/src/version-CbpiUINz.js +17 -0
- package/dist/src/version-CbuBKu2U.js +16 -0
- package/dist/src/version-D9zu9FWB.cjs +27 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +57 -46
- package/dist/src/app/assets/index-B6l9CVVb.js +0 -439
- package/dist/src/app/assets/index-DyZ0Ep37.css +0 -1
- package/dist/src/app/assets/scroll-timeline-BdJZVXlz.js +0 -1
- package/dist/src/app/assets/sync-CStkzc6u.js +0 -4
- package/dist/src/app/assets/vendor-charts-BnDWwBlI.js +0 -36
- package/dist/src/app/assets/vendor-markdown-Bz7N-ca6.js +0 -29
- package/dist/src/app/assets/vendor-react-AtKqiNEf.js +0 -4
- package/dist/src/app/assets/vendor-syntax-D06x6TQF.js +0 -2
- package/dist/src/app/assets/vendor-utils-BvMHZmO7.js +0 -37
- package/dist/src/cache-C5yFZ4gC.cjs +0 -816
- package/dist/src/cache-CaT5tPgo.js +0 -756
- package/dist/src/cache-CyCanoMu.js +0 -6
- package/dist/src/cache-DSqR6ezl.js +0 -726
- package/dist/src/cache-Df_QFDNu.cjs +0 -5
- package/dist/src/cache-HP0NP4k3.js +0 -756
- package/dist/src/cloud-DE3t1-ZI.js +0 -4
- package/dist/src/codex-sdk-BQEw16R_.js +0 -834
- package/dist/src/codex-sdk-C_07GuVS.js +0 -834
- package/dist/src/codex-sdk-DE5G18dx.js +0 -835
- package/dist/src/codex-sdk-ZLKfDjqP.cjs +0 -838
- package/dist/src/eval-7aEqoMs3.js +0 -15
- package/dist/src/evalResult-CYNHkk5A.js +0 -12
- package/dist/src/evalResult-CuvJeNiM.js +0 -10
- package/dist/src/evalResult-tGdilrWt.cjs +0 -10
- package/dist/src/evaluator-BBUqRhz1.js +0 -36
- package/dist/src/fetch-UWU706qb.js +0 -5
- package/dist/src/graders-BxfEguVY.js +0 -32
- package/dist/src/graders-CzVMbEnv.js +0 -34
- package/dist/src/graders-DjCXfj0l.cjs +0 -32
- package/dist/src/graders-kHzIWOKu.js +0 -32
- package/dist/src/messages-DJNo37Ko.js +0 -246
- package/dist/src/messages-Dy9QecMs.js +0 -245
- package/dist/src/messages-HJsyEh4o.cjs +0 -257
- package/dist/src/messages-biC_ex-p.js +0 -245
- package/dist/src/openclaw-0Sv7AK3O.js +0 -580
- package/dist/src/openclaw-CXxbKgDH.cjs +0 -586
- package/dist/src/openclaw-D1FSCps-.js +0 -580
- package/dist/src/openclaw-D2ENvu7a.js +0 -582
- package/dist/src/providers-BSLEaIQG.js +0 -32
- package/dist/src/providers-D-FnDg8k.cjs +0 -31
- package/dist/src/providers-DEYiFVAo.js +0 -30
- package/dist/src/providers-sS2WI8YD.js +0 -30
- package/dist/src/rubyUtils-B1HXG4ej.cjs +0 -4
- package/dist/src/rubyUtils-Rt6pKA96.js +0 -5
- package/dist/src/server-B0Xh1Gx-.js +0 -7
- package/dist/src/server-DJTKu9IR.cjs +0 -5
- package/dist/src/store-C5u6MgC8.js +0 -6
- package/dist/src/store-CNHk-De4.cjs +0 -5
- package/dist/src/telemetry-Yig0Tino.js +0 -7
- package/dist/src/telemetry-p8Pwqm1i.cjs +0 -5
- package/dist/src/transform-ChNIpHz7.js +0 -6
- package/dist/src/transform-PtQ6rAE3.cjs +0 -5
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { t as __exportAll } from "./chunk-DEq-mXcV.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
2
|
+
import { S as getEnvBool, T as getEnvString, a as logger, i as logRequestResponse, k as state, p as sanitizeUrl, w as getEnvInt, x as getConfigDirectoryPath } from "./logger-KD8JjCRJ.js";
|
|
3
|
+
import { n as VERSION } from "./version-0frU0UTr.js";
|
|
4
|
+
import { t as invariant } from "./invariant-DIYf9sP1.js";
|
|
5
|
+
import * as fs$2 from "fs";
|
|
5
6
|
import * as path$1 from "path";
|
|
6
7
|
import path from "path";
|
|
7
8
|
import yaml from "js-yaml";
|
|
@@ -17,19 +18,6 @@ const FILE_METADATA_KEY = "_promptfooFileMetadata";
|
|
|
17
18
|
* Used to distinguish human ratings from automated assertions.
|
|
18
19
|
*/
|
|
19
20
|
const HUMAN_ASSERTION_TYPE = "human";
|
|
20
|
-
//#endregion
|
|
21
|
-
//#region src/version.ts
|
|
22
|
-
/**
|
|
23
|
-
* Application version from package.json.
|
|
24
|
-
* Injected at build time, or read from npm environment in development.
|
|
25
|
-
*/
|
|
26
|
-
const VERSION = "0.121.3";
|
|
27
|
-
/**
|
|
28
|
-
* PostHog analytics key.
|
|
29
|
-
* Only populated during production builds via PROMPTFOO_POSTHOG_KEY env var.
|
|
30
|
-
* Empty string in development/test.
|
|
31
|
-
*/
|
|
32
|
-
const POSTHOG_KEY = "phc_E5n5uHnDo2eREJL1uqX1cIlbkoRby4yFWt3V94HqRRg";
|
|
33
21
|
function getShareApiBaseUrl() {
|
|
34
22
|
return getEnvString("PROMPTFOO_REMOTE_API_BASE_URL") || "https://api.promptfoo.app";
|
|
35
23
|
}
|
|
@@ -72,8 +60,9 @@ function calculateCost(modelName, config, promptTokens, completionTokens, models
|
|
|
72
60
|
if (!Number.isFinite(promptTokens) || !Number.isFinite(completionTokens) || typeof promptTokens === "undefined" || typeof completionTokens === "undefined") return;
|
|
73
61
|
const model = models.find((m) => m.id === modelName);
|
|
74
62
|
if (!model || !model.cost) return;
|
|
75
|
-
const
|
|
76
|
-
const
|
|
63
|
+
const longContextCost = model.cost.longContext && promptTokens > model.cost.longContext.threshold ? model.cost.longContext : void 0;
|
|
64
|
+
const inputCost = config.cost ?? longContextCost?.input ?? model.cost.input;
|
|
65
|
+
const outputCost = config.cost ?? longContextCost?.output ?? model.cost.output;
|
|
77
66
|
return inputCost * promptTokens + outputCost * completionTokens;
|
|
78
67
|
}
|
|
79
68
|
/**
|
|
@@ -150,7 +139,7 @@ function isOpenAIToolChoice(obj) {
|
|
|
150
139
|
function openaiToolChoiceToAnthropic(choice) {
|
|
151
140
|
if (typeof choice === "string") switch (choice) {
|
|
152
141
|
case "auto": return { type: "auto" };
|
|
153
|
-
case "none": return { type: "
|
|
142
|
+
case "none": return { type: "none" };
|
|
154
143
|
case "required": return { type: "any" };
|
|
155
144
|
}
|
|
156
145
|
return {
|
|
@@ -286,6 +275,155 @@ function transformTools(tools, format) {
|
|
|
286
275
|
}
|
|
287
276
|
}
|
|
288
277
|
//#endregion
|
|
278
|
+
//#region src/scheduler/headerParser.ts
|
|
279
|
+
const OPENAI_HEADERS = {
|
|
280
|
+
remainingRequests: "x-ratelimit-remaining-requests",
|
|
281
|
+
remainingTokens: "x-ratelimit-remaining-tokens",
|
|
282
|
+
limitRequests: "x-ratelimit-limit-requests",
|
|
283
|
+
limitTokens: "x-ratelimit-limit-tokens",
|
|
284
|
+
resetRequests: "x-ratelimit-reset-requests",
|
|
285
|
+
resetTokens: "x-ratelimit-reset-tokens"
|
|
286
|
+
};
|
|
287
|
+
const ANTHROPIC_HEADERS = {
|
|
288
|
+
remainingRequests: "anthropic-ratelimit-requests-remaining",
|
|
289
|
+
remainingTokens: "anthropic-ratelimit-tokens-remaining",
|
|
290
|
+
limitRequests: "anthropic-ratelimit-requests-limit",
|
|
291
|
+
limitTokens: "anthropic-ratelimit-tokens-limit",
|
|
292
|
+
reset: "anthropic-ratelimit-requests-reset"
|
|
293
|
+
};
|
|
294
|
+
const STANDARD_HEADERS = {
|
|
295
|
+
remaining: "ratelimit-remaining",
|
|
296
|
+
limit: "ratelimit-limit",
|
|
297
|
+
reset: "ratelimit-reset",
|
|
298
|
+
remainingAlt: "x-ratelimit-remaining",
|
|
299
|
+
limitAlt: "x-ratelimit-limit",
|
|
300
|
+
resetAlt: "x-ratelimit-reset"
|
|
301
|
+
};
|
|
302
|
+
/**
|
|
303
|
+
* Parse rate limit headers from response.
|
|
304
|
+
*/
|
|
305
|
+
function parseRateLimitHeaders(headers) {
|
|
306
|
+
const result = {};
|
|
307
|
+
const h = lowercaseKeys(headers);
|
|
308
|
+
result.remainingRequests = parseFirstMatch(h, [
|
|
309
|
+
OPENAI_HEADERS.remainingRequests,
|
|
310
|
+
ANTHROPIC_HEADERS.remainingRequests,
|
|
311
|
+
STANDARD_HEADERS.remainingAlt,
|
|
312
|
+
STANDARD_HEADERS.remaining
|
|
313
|
+
]);
|
|
314
|
+
result.remainingTokens = parseFirstMatch(h, [OPENAI_HEADERS.remainingTokens, ANTHROPIC_HEADERS.remainingTokens]);
|
|
315
|
+
result.limitRequests = parseFirstMatch(h, [
|
|
316
|
+
OPENAI_HEADERS.limitRequests,
|
|
317
|
+
ANTHROPIC_HEADERS.limitRequests,
|
|
318
|
+
STANDARD_HEADERS.limitAlt,
|
|
319
|
+
STANDARD_HEADERS.limit
|
|
320
|
+
]);
|
|
321
|
+
result.limitTokens = parseFirstMatch(h, [OPENAI_HEADERS.limitTokens, ANTHROPIC_HEADERS.limitTokens]);
|
|
322
|
+
for (const name of [
|
|
323
|
+
OPENAI_HEADERS.resetRequests,
|
|
324
|
+
OPENAI_HEADERS.resetTokens,
|
|
325
|
+
ANTHROPIC_HEADERS.reset,
|
|
326
|
+
STANDARD_HEADERS.resetAlt,
|
|
327
|
+
STANDARD_HEADERS.reset
|
|
328
|
+
]) if (h[name] !== void 0) {
|
|
329
|
+
const parsed = parseResetTime(h[name]);
|
|
330
|
+
if (parsed !== null) {
|
|
331
|
+
result.resetAt = parsed;
|
|
332
|
+
break;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
if (h["retry-after-ms"] !== void 0) {
|
|
336
|
+
const ms = parseInt(h["retry-after-ms"], 10);
|
|
337
|
+
if (!isNaN(ms) && ms >= 0) {
|
|
338
|
+
result.retryAfterMs = ms;
|
|
339
|
+
if (result.resetAt === void 0) result.resetAt = Date.now() + ms;
|
|
340
|
+
}
|
|
341
|
+
} else if (h["retry-after"] !== void 0) {
|
|
342
|
+
const parsed = parseRetryAfter(h["retry-after"]);
|
|
343
|
+
if (parsed !== null) {
|
|
344
|
+
result.retryAfterMs = parsed;
|
|
345
|
+
if (result.resetAt === void 0) result.resetAt = Date.now() + parsed;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
return result;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Parse Retry-After header value.
|
|
352
|
+
* Returns duration in milliseconds.
|
|
353
|
+
* Exported for integration use.
|
|
354
|
+
*/
|
|
355
|
+
function parseRetryAfter(value) {
|
|
356
|
+
const seconds = parseInt(value, 10);
|
|
357
|
+
if (!isNaN(seconds) && seconds >= 0 && String(seconds) === value.trim()) return seconds * 1e3;
|
|
358
|
+
const httpDate = parseHttpDate(value);
|
|
359
|
+
if (httpDate !== null) return Math.max(0, httpDate - Date.now());
|
|
360
|
+
return null;
|
|
361
|
+
}
|
|
362
|
+
function parseFirstMatch(headers, names) {
|
|
363
|
+
for (const name of names) {
|
|
364
|
+
const value = headers[name];
|
|
365
|
+
if (value !== void 0) {
|
|
366
|
+
const num = parseInt(value, 10);
|
|
367
|
+
if (!isNaN(num) && num >= 0) return num;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Parse reset time from various formats.
|
|
373
|
+
* Returns absolute Unix timestamp in milliseconds.
|
|
374
|
+
*/
|
|
375
|
+
function parseResetTime(value) {
|
|
376
|
+
const durationMs = parseDuration(value);
|
|
377
|
+
if (durationMs !== null) return Date.now() + durationMs;
|
|
378
|
+
const num = parseFloat(value);
|
|
379
|
+
if (!isNaN(num)) if (num < 1e9) return Date.now() + num * 1e3;
|
|
380
|
+
else if (num < 1e10) return num * 1e3;
|
|
381
|
+
else return num;
|
|
382
|
+
const httpDate = parseHttpDate(value);
|
|
383
|
+
if (httpDate !== null) return httpDate;
|
|
384
|
+
return null;
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Parse HTTP-date format (RFC 7231).
|
|
388
|
+
*/
|
|
389
|
+
function parseHttpDate(value) {
|
|
390
|
+
const timestamp = Date.parse(value);
|
|
391
|
+
if (!isNaN(timestamp)) {
|
|
392
|
+
const now = Date.now();
|
|
393
|
+
const oneYearMs = 365 * 24 * 60 * 60 * 1e3;
|
|
394
|
+
if (timestamp > now - oneYearMs && timestamp < now + oneYearMs) return timestamp;
|
|
395
|
+
}
|
|
396
|
+
return null;
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Parse duration strings like "1s", "100ms", "1m30s", "1h30s", "2h15m30s".
|
|
400
|
+
*
|
|
401
|
+
* Supported formats:
|
|
402
|
+
* - Xms (milliseconds)
|
|
403
|
+
* - Xs or X.Xs (seconds)
|
|
404
|
+
* - Xm or XmYs (minutes with optional seconds)
|
|
405
|
+
* - Xh or XhYm or XhYs or XhYmZs (hours with optional minutes/seconds)
|
|
406
|
+
*/
|
|
407
|
+
function parseDuration(value) {
|
|
408
|
+
const match = value.match(/^(?:(\d+)h)?(?:(\d+)m(?!s))?(?:(\d+(?:\.\d+)?)(ms|s))?$/);
|
|
409
|
+
if (!match) return null;
|
|
410
|
+
const [, hours, minutes, secondsValue, secondsUnit] = match;
|
|
411
|
+
if (!hours && !minutes && !secondsValue) return null;
|
|
412
|
+
let ms = 0;
|
|
413
|
+
if (hours) ms += parseInt(hours, 10) * 36e5;
|
|
414
|
+
if (minutes) ms += parseInt(minutes, 10) * 6e4;
|
|
415
|
+
if (secondsValue) {
|
|
416
|
+
const num = parseFloat(secondsValue);
|
|
417
|
+
ms += secondsUnit === "ms" ? num : num * 1e3;
|
|
418
|
+
}
|
|
419
|
+
return ms;
|
|
420
|
+
}
|
|
421
|
+
function lowercaseKeys(obj) {
|
|
422
|
+
const result = {};
|
|
423
|
+
for (const [key, value] of Object.entries(obj)) result[key.toLowerCase()] = value;
|
|
424
|
+
return result;
|
|
425
|
+
}
|
|
426
|
+
//#endregion
|
|
289
427
|
//#region src/util/time.ts
|
|
290
428
|
function getCurrentTimestamp() {
|
|
291
429
|
return Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3);
|
|
@@ -298,14 +436,14 @@ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
|
298
436
|
* ~/.promptfoo/promptfoo.yaml by default.
|
|
299
437
|
*/
|
|
300
438
|
function writeGlobalConfig(config) {
|
|
301
|
-
fs$
|
|
439
|
+
fs$2.writeFileSync(path$1.join(getConfigDirectoryPath(true), "promptfoo.yaml"), yaml.dump(config));
|
|
302
440
|
}
|
|
303
441
|
function readGlobalConfig() {
|
|
304
442
|
const configDir = getConfigDirectoryPath();
|
|
305
443
|
const configFilePath = path$1.join(configDir, "promptfoo.yaml");
|
|
306
444
|
let globalConfig = { id: crypto.randomUUID() };
|
|
307
|
-
if (fs$
|
|
308
|
-
globalConfig = yaml.load(fs$
|
|
445
|
+
if (fs$2.existsSync(configFilePath)) {
|
|
446
|
+
globalConfig = yaml.load(fs$2.readFileSync(configFilePath, "utf-8")) || {};
|
|
309
447
|
if (!globalConfig?.id) {
|
|
310
448
|
globalConfig = {
|
|
311
449
|
...globalConfig,
|
|
@@ -314,8 +452,8 @@ function readGlobalConfig() {
|
|
|
314
452
|
writeGlobalConfig(globalConfig);
|
|
315
453
|
}
|
|
316
454
|
} else {
|
|
317
|
-
if (!fs$
|
|
318
|
-
fs$
|
|
455
|
+
if (!fs$2.existsSync(configDir)) fs$2.mkdirSync(configDir, { recursive: true });
|
|
456
|
+
fs$2.writeFileSync(configFilePath, yaml.dump(globalConfig));
|
|
319
457
|
}
|
|
320
458
|
return globalConfig;
|
|
321
459
|
}
|
|
@@ -418,7 +556,17 @@ var CloudConfig = class {
|
|
|
418
556
|
teams: savedConfig.teams
|
|
419
557
|
};
|
|
420
558
|
}
|
|
421
|
-
|
|
559
|
+
saveValidatedApiToken(token, apiHost, user, app, hasActiveLicense) {
|
|
560
|
+
this.setApiKey(token);
|
|
561
|
+
this.setApiHost(apiHost);
|
|
562
|
+
this.setAppUrl(app.url);
|
|
563
|
+
if (typeof hasActiveLicense === "boolean") {
|
|
564
|
+
const createdAt = user?.createdAt ? new Date(user.createdAt) : null;
|
|
565
|
+
const isGrandfathered = createdAt != null && createdAt < SHARING_CUTOFF_DATE;
|
|
566
|
+
this.setSharing(hasActiveLicense || isGrandfathered);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
async validateApiToken(token, apiHost) {
|
|
422
570
|
try {
|
|
423
571
|
const { fetchWithProxy } = await Promise.resolve().then(() => fetch_exports);
|
|
424
572
|
const response = await fetchWithProxy(`${apiHost}/api/v1/users/me`, { headers: { Authorization: `Bearer ${token}` } });
|
|
@@ -428,19 +576,11 @@ var CloudConfig = class {
|
|
|
428
576
|
throw new Error("Failed to validate API token: " + response.statusText);
|
|
429
577
|
}
|
|
430
578
|
const { user, organization, app, hasActiveLicense } = await response.json();
|
|
431
|
-
this.setApiKey(token);
|
|
432
|
-
this.setApiHost(apiHost);
|
|
433
|
-
this.setAppUrl(app.url);
|
|
434
|
-
if (typeof hasActiveLicense === "boolean") {
|
|
435
|
-
const createdAt = user?.createdAt ? new Date(user.createdAt) : null;
|
|
436
|
-
const isGrandfathered = createdAt != null && createdAt < SHARING_CUTOFF_DATE;
|
|
437
|
-
this.setSharing(hasActiveLicense || isGrandfathered);
|
|
438
|
-
}
|
|
439
579
|
return {
|
|
440
580
|
user,
|
|
441
581
|
organization,
|
|
442
582
|
app,
|
|
443
|
-
|
|
583
|
+
...typeof hasActiveLicense === "boolean" ? { hasActiveLicense } : {}
|
|
444
584
|
};
|
|
445
585
|
} catch (err) {
|
|
446
586
|
const error = err;
|
|
@@ -450,6 +590,16 @@ var CloudConfig = class {
|
|
|
450
590
|
throw error;
|
|
451
591
|
}
|
|
452
592
|
}
|
|
593
|
+
async validateAndSetApiToken(token, apiHost) {
|
|
594
|
+
const { user, organization, app, hasActiveLicense } = await this.validateApiToken(token, apiHost);
|
|
595
|
+
this.saveValidatedApiToken(token, apiHost, user, app, hasActiveLicense);
|
|
596
|
+
return {
|
|
597
|
+
user,
|
|
598
|
+
organization,
|
|
599
|
+
app,
|
|
600
|
+
hasActiveLicense: typeof hasActiveLicense === "boolean" ? hasActiveLicense : false
|
|
601
|
+
};
|
|
602
|
+
}
|
|
453
603
|
getCurrentOrganizationId() {
|
|
454
604
|
return this.config.currentOrganizationId;
|
|
455
605
|
}
|
|
@@ -564,9 +714,8 @@ var fetch_exports = /* @__PURE__ */ __exportAll({
|
|
|
564
714
|
isRateLimited: () => isRateLimited,
|
|
565
715
|
isTransientError: () => isTransientError
|
|
566
716
|
});
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
let cachedProxyAgents = /* @__PURE__ */ new Map();
|
|
717
|
+
const cachedAgents = /* @__PURE__ */ new Map();
|
|
718
|
+
const cachedProxyAgents = /* @__PURE__ */ new Map();
|
|
570
719
|
/**
|
|
571
720
|
* Get the connection pool size for HTTP agents.
|
|
572
721
|
* Priority: PROMPTFOO_FETCH_CONNECTIONS env var > CLI -j flag > DEFAULT_MAX_CONCURRENCY (4).
|
|
@@ -583,36 +732,37 @@ function getConnectionPoolSize() {
|
|
|
583
732
|
}
|
|
584
733
|
function getOrCreateAgent(tlsOptions) {
|
|
585
734
|
const concurrency = getConnectionPoolSize();
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
}
|
|
600
|
-
return cachedAgent;
|
|
735
|
+
const existing = cachedAgents.get(concurrency);
|
|
736
|
+
if (existing) return existing;
|
|
737
|
+
const agent = new Agent({
|
|
738
|
+
headersTimeout: REQUEST_TIMEOUT_MS,
|
|
739
|
+
keepAliveTimeout: 3e4,
|
|
740
|
+
keepAliveMaxTimeout: 6e4,
|
|
741
|
+
connections: concurrency,
|
|
742
|
+
connect: tlsOptions
|
|
743
|
+
});
|
|
744
|
+
cachedAgents.set(concurrency, agent);
|
|
745
|
+
return agent;
|
|
746
|
+
}
|
|
747
|
+
function getProxyAgentCacheKey(proxyUrl, concurrency) {
|
|
748
|
+
return `${proxyUrl}::${concurrency}`;
|
|
601
749
|
}
|
|
602
750
|
function getOrCreateProxyAgent(proxyUrl, tlsOptions) {
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
751
|
+
const concurrency = getConnectionPoolSize();
|
|
752
|
+
const cacheKey = getProxyAgentCacheKey(proxyUrl, concurrency);
|
|
753
|
+
const existing = cachedProxyAgents.get(cacheKey);
|
|
754
|
+
if (existing) return existing;
|
|
755
|
+
const agent = new ProxyAgent({
|
|
756
|
+
uri: proxyUrl,
|
|
757
|
+
proxyTls: tlsOptions,
|
|
758
|
+
requestTls: tlsOptions,
|
|
759
|
+
headersTimeout: REQUEST_TIMEOUT_MS,
|
|
760
|
+
keepAliveTimeout: 3e4,
|
|
761
|
+
keepAliveMaxTimeout: 6e4,
|
|
762
|
+
connections: concurrency
|
|
763
|
+
});
|
|
764
|
+
cachedProxyAgents.set(cacheKey, agent);
|
|
765
|
+
return agent;
|
|
616
766
|
}
|
|
617
767
|
async function fetchWithProxy(url, options = {}, abortSignal) {
|
|
618
768
|
let finalUrl = url;
|
|
@@ -714,12 +864,14 @@ async function handleRateLimit(response) {
|
|
|
714
864
|
const retryAfter = response.headers.get("Retry-After");
|
|
715
865
|
const openaiReset = response.headers.get("x-ratelimit-reset-requests") || response.headers.get("x-ratelimit-reset-tokens");
|
|
716
866
|
let waitTime = 6e4;
|
|
717
|
-
if (openaiReset)
|
|
718
|
-
|
|
867
|
+
if (openaiReset) {
|
|
868
|
+
const parsedHeaders = parseRateLimitHeaders(Object.fromEntries(response.headers.entries()));
|
|
869
|
+
if (parsedHeaders.resetAt !== void 0) waitTime = Math.max(parsedHeaders.resetAt - Date.now(), 0);
|
|
870
|
+
} else if (rateLimitReset) {
|
|
719
871
|
const resetTime = /* @__PURE__ */ new Date(Number.parseInt(rateLimitReset) * 1e3);
|
|
720
872
|
const now = /* @__PURE__ */ new Date();
|
|
721
873
|
waitTime = Math.max(resetTime.getTime() - now.getTime() + 1e3, 0);
|
|
722
|
-
} else if (retryAfter) waitTime =
|
|
874
|
+
} else if (retryAfter) waitTime = parseRetryAfter(retryAfter) ?? waitTime;
|
|
723
875
|
logger.debug(`Rate limited, waiting ${waitTime}ms before retry`);
|
|
724
876
|
await sleep(waitTime);
|
|
725
877
|
}
|
|
@@ -775,6 +927,6 @@ async function fetchWithRetries(url, options = {}, timeout, maxRetries) {
|
|
|
775
927
|
throw new Error(`Request failed after ${maxRetries} retries: ${lastErrorMessage}`);
|
|
776
928
|
}
|
|
777
929
|
//#endregion
|
|
778
|
-
export {
|
|
930
|
+
export { TERMINAL_MAX_WIDTH as A, toTitleCase as C, CONSENT_ENDPOINT as D, CLOUD_PROVIDER_PREFIX as E, FILE_METADATA_KEY as F, HUMAN_ASSERTION_TYPE as I, getDefaultShareViewBaseUrl as M, getShareApiBaseUrl as N, EVENTS_ENDPOINT as O, getShareViewBaseUrl as P, parseChatPrompt as S, transformTools as T, isOpenAIToolArray as _, CloudConfig as a, openaiToolChoiceToBedrock as b, writeGlobalConfig as c, sleep as d, parseRateLimitHeaders as f, calculateCost as g, REQUEST_TIMEOUT_MS as h, fetch_exports as i, getDefaultPort as j, R_ENDPOINT as k, writeGlobalConfigPartial as l, LONG_RUNNING_MODEL_TIMEOUT_MS as m, fetchWithRetries as n, cloudConfig as o, parseRetryAfter as p, fetchWithTimeout as r, readGlobalConfig as s, fetchWithProxy as t, getCurrentTimestamp as u, isOpenAIToolChoice as v, transformToolChoice as w, openaiToolsToBedrock as x, isPromptfooSampleTarget as y };
|
|
779
931
|
|
|
780
|
-
//# sourceMappingURL=fetch-
|
|
932
|
+
//# sourceMappingURL=fetch-Y5qX_kST.js.map
|
|
@@ -82,4 +82,4 @@ function isAudioFile(filePath) {
|
|
|
82
82
|
//#endregion
|
|
83
83
|
export { isVideoFile as a, isJavascriptFile as i, isAudioFile as n, isImageFile as r, JAVASCRIPT_EXTENSIONS as t };
|
|
84
84
|
|
|
85
|
-
//# sourceMappingURL=fileExtensions-
|
|
85
|
+
//# sourceMappingURL=fileExtensions-8CjoL7vB.js.map
|
|
@@ -82,4 +82,4 @@ function isAudioFile(filePath) {
|
|
|
82
82
|
//#endregion
|
|
83
83
|
export { isVideoFile as a, isJavascriptFile as i, isAudioFile as n, isImageFile as r, JAVASCRIPT_EXTENSIONS as t };
|
|
84
84
|
|
|
85
|
-
//# sourceMappingURL=fileExtensions-
|
|
85
|
+
//# sourceMappingURL=fileExtensions-BGh-W-HT.js.map
|
|
@@ -83,4 +83,4 @@ function isAudioFile(filePath) {
|
|
|
83
83
|
//#endregion
|
|
84
84
|
export { isVideoFile as a, isJavascriptFile as i, isAudioFile as n, isImageFile as r, JAVASCRIPT_EXTENSIONS as t };
|
|
85
85
|
|
|
86
|
-
//# sourceMappingURL=fileExtensions-
|
|
86
|
+
//# sourceMappingURL=fileExtensions-DysCsxNG.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require("./logger-
|
|
1
|
+
require("./logger-COuQb2xB.cjs");
|
|
2
2
|
let _opentelemetry_api = require("@opentelemetry/api");
|
|
3
3
|
//#region src/tracing/genaiTracer.ts
|
|
4
4
|
const TRACER_NAME = "promptfoo.providers";
|
|
@@ -23,7 +23,9 @@ const GenAIAttributes = {
|
|
|
23
23
|
USAGE_CACHED_TOKENS: "gen_ai.usage.cached_tokens",
|
|
24
24
|
USAGE_REASONING_TOKENS: "gen_ai.usage.reasoning_tokens",
|
|
25
25
|
USAGE_ACCEPTED_PREDICTION_TOKENS: "gen_ai.usage.accepted_prediction_tokens",
|
|
26
|
-
USAGE_REJECTED_PREDICTION_TOKENS: "gen_ai.usage.rejected_prediction_tokens"
|
|
26
|
+
USAGE_REJECTED_PREDICTION_TOKENS: "gen_ai.usage.rejected_prediction_tokens",
|
|
27
|
+
USAGE_CACHE_READ_INPUT_TOKENS: "gen_ai.usage.cache_read_input_tokens",
|
|
28
|
+
USAGE_CACHE_CREATION_INPUT_TOKENS: "gen_ai.usage.cache_creation_input_tokens"
|
|
27
29
|
};
|
|
28
30
|
const PromptfooAttributes = {
|
|
29
31
|
PROVIDER_ID: "promptfoo.provider.id",
|
|
@@ -226,6 +228,8 @@ function setGenAIResponseAttributes(span, result, sanitize = true) {
|
|
|
226
228
|
if (usage.completionDetails.reasoning !== void 0) span.setAttribute(GenAIAttributes.USAGE_REASONING_TOKENS, usage.completionDetails.reasoning);
|
|
227
229
|
if (usage.completionDetails.acceptedPrediction !== void 0) span.setAttribute(GenAIAttributes.USAGE_ACCEPTED_PREDICTION_TOKENS, usage.completionDetails.acceptedPrediction);
|
|
228
230
|
if (usage.completionDetails.rejectedPrediction !== void 0) span.setAttribute(GenAIAttributes.USAGE_REJECTED_PREDICTION_TOKENS, usage.completionDetails.rejectedPrediction);
|
|
231
|
+
if (usage.completionDetails.cacheReadInputTokens !== void 0) span.setAttribute(GenAIAttributes.USAGE_CACHE_READ_INPUT_TOKENS, usage.completionDetails.cacheReadInputTokens);
|
|
232
|
+
if (usage.completionDetails.cacheCreationInputTokens !== void 0) span.setAttribute(GenAIAttributes.USAGE_CACHE_CREATION_INPUT_TOKENS, usage.completionDetails.cacheCreationInputTokens);
|
|
229
233
|
}
|
|
230
234
|
}
|
|
231
235
|
if (result.responseModel) span.setAttribute(GenAIAttributes.RESPONSE_MODEL, result.responseModel);
|
|
@@ -265,4 +269,4 @@ Object.defineProperty(exports, "withGenAISpan", {
|
|
|
265
269
|
}
|
|
266
270
|
});
|
|
267
271
|
|
|
268
|
-
//# sourceMappingURL=genaiTracer-
|
|
272
|
+
//# sourceMappingURL=genaiTracer-BokHC-MW.cjs.map
|
|
@@ -23,7 +23,9 @@ const GenAIAttributes = {
|
|
|
23
23
|
USAGE_CACHED_TOKENS: "gen_ai.usage.cached_tokens",
|
|
24
24
|
USAGE_REASONING_TOKENS: "gen_ai.usage.reasoning_tokens",
|
|
25
25
|
USAGE_ACCEPTED_PREDICTION_TOKENS: "gen_ai.usage.accepted_prediction_tokens",
|
|
26
|
-
USAGE_REJECTED_PREDICTION_TOKENS: "gen_ai.usage.rejected_prediction_tokens"
|
|
26
|
+
USAGE_REJECTED_PREDICTION_TOKENS: "gen_ai.usage.rejected_prediction_tokens",
|
|
27
|
+
USAGE_CACHE_READ_INPUT_TOKENS: "gen_ai.usage.cache_read_input_tokens",
|
|
28
|
+
USAGE_CACHE_CREATION_INPUT_TOKENS: "gen_ai.usage.cache_creation_input_tokens"
|
|
27
29
|
};
|
|
28
30
|
const PromptfooAttributes = {
|
|
29
31
|
PROVIDER_ID: "promptfoo.provider.id",
|
|
@@ -226,6 +228,8 @@ function setGenAIResponseAttributes(span, result, sanitize = true) {
|
|
|
226
228
|
if (usage.completionDetails.reasoning !== void 0) span.setAttribute(GenAIAttributes.USAGE_REASONING_TOKENS, usage.completionDetails.reasoning);
|
|
227
229
|
if (usage.completionDetails.acceptedPrediction !== void 0) span.setAttribute(GenAIAttributes.USAGE_ACCEPTED_PREDICTION_TOKENS, usage.completionDetails.acceptedPrediction);
|
|
228
230
|
if (usage.completionDetails.rejectedPrediction !== void 0) span.setAttribute(GenAIAttributes.USAGE_REJECTED_PREDICTION_TOKENS, usage.completionDetails.rejectedPrediction);
|
|
231
|
+
if (usage.completionDetails.cacheReadInputTokens !== void 0) span.setAttribute(GenAIAttributes.USAGE_CACHE_READ_INPUT_TOKENS, usage.completionDetails.cacheReadInputTokens);
|
|
232
|
+
if (usage.completionDetails.cacheCreationInputTokens !== void 0) span.setAttribute(GenAIAttributes.USAGE_CACHE_CREATION_INPUT_TOKENS, usage.completionDetails.cacheCreationInputTokens);
|
|
229
233
|
}
|
|
230
234
|
}
|
|
231
235
|
if (result.responseModel) span.setAttribute(GenAIAttributes.RESPONSE_MODEL, result.responseModel);
|
|
@@ -254,4 +258,4 @@ function getTraceparent() {
|
|
|
254
258
|
//#endregion
|
|
255
259
|
export { withGenAISpan as n, getTraceparent as t };
|
|
256
260
|
|
|
257
|
-
//# sourceMappingURL=genaiTracer-
|
|
261
|
+
//# sourceMappingURL=genaiTracer-C3ZPQU60.js.map
|
|
@@ -22,7 +22,9 @@ const GenAIAttributes = {
|
|
|
22
22
|
USAGE_CACHED_TOKENS: "gen_ai.usage.cached_tokens",
|
|
23
23
|
USAGE_REASONING_TOKENS: "gen_ai.usage.reasoning_tokens",
|
|
24
24
|
USAGE_ACCEPTED_PREDICTION_TOKENS: "gen_ai.usage.accepted_prediction_tokens",
|
|
25
|
-
USAGE_REJECTED_PREDICTION_TOKENS: "gen_ai.usage.rejected_prediction_tokens"
|
|
25
|
+
USAGE_REJECTED_PREDICTION_TOKENS: "gen_ai.usage.rejected_prediction_tokens",
|
|
26
|
+
USAGE_CACHE_READ_INPUT_TOKENS: "gen_ai.usage.cache_read_input_tokens",
|
|
27
|
+
USAGE_CACHE_CREATION_INPUT_TOKENS: "gen_ai.usage.cache_creation_input_tokens"
|
|
26
28
|
};
|
|
27
29
|
const PromptfooAttributes = {
|
|
28
30
|
PROVIDER_ID: "promptfoo.provider.id",
|
|
@@ -225,6 +227,8 @@ function setGenAIResponseAttributes(span, result, sanitize = true) {
|
|
|
225
227
|
if (usage.completionDetails.reasoning !== void 0) span.setAttribute(GenAIAttributes.USAGE_REASONING_TOKENS, usage.completionDetails.reasoning);
|
|
226
228
|
if (usage.completionDetails.acceptedPrediction !== void 0) span.setAttribute(GenAIAttributes.USAGE_ACCEPTED_PREDICTION_TOKENS, usage.completionDetails.acceptedPrediction);
|
|
227
229
|
if (usage.completionDetails.rejectedPrediction !== void 0) span.setAttribute(GenAIAttributes.USAGE_REJECTED_PREDICTION_TOKENS, usage.completionDetails.rejectedPrediction);
|
|
230
|
+
if (usage.completionDetails.cacheReadInputTokens !== void 0) span.setAttribute(GenAIAttributes.USAGE_CACHE_READ_INPUT_TOKENS, usage.completionDetails.cacheReadInputTokens);
|
|
231
|
+
if (usage.completionDetails.cacheCreationInputTokens !== void 0) span.setAttribute(GenAIAttributes.USAGE_CACHE_CREATION_INPUT_TOKENS, usage.completionDetails.cacheCreationInputTokens);
|
|
228
232
|
}
|
|
229
233
|
}
|
|
230
234
|
if (result.responseModel) span.setAttribute(GenAIAttributes.RESPONSE_MODEL, result.responseModel);
|
|
@@ -253,4 +257,4 @@ function getTraceparent() {
|
|
|
253
257
|
//#endregion
|
|
254
258
|
export { withGenAISpan as n, getTraceparent as t };
|
|
255
259
|
|
|
256
|
-
//# sourceMappingURL=genaiTracer-
|
|
260
|
+
//# sourceMappingURL=genaiTracer-CFny3gOy.js.map
|
|
@@ -22,7 +22,9 @@ const GenAIAttributes = {
|
|
|
22
22
|
USAGE_CACHED_TOKENS: "gen_ai.usage.cached_tokens",
|
|
23
23
|
USAGE_REASONING_TOKENS: "gen_ai.usage.reasoning_tokens",
|
|
24
24
|
USAGE_ACCEPTED_PREDICTION_TOKENS: "gen_ai.usage.accepted_prediction_tokens",
|
|
25
|
-
USAGE_REJECTED_PREDICTION_TOKENS: "gen_ai.usage.rejected_prediction_tokens"
|
|
25
|
+
USAGE_REJECTED_PREDICTION_TOKENS: "gen_ai.usage.rejected_prediction_tokens",
|
|
26
|
+
USAGE_CACHE_READ_INPUT_TOKENS: "gen_ai.usage.cache_read_input_tokens",
|
|
27
|
+
USAGE_CACHE_CREATION_INPUT_TOKENS: "gen_ai.usage.cache_creation_input_tokens"
|
|
26
28
|
};
|
|
27
29
|
const PromptfooAttributes = {
|
|
28
30
|
PROVIDER_ID: "promptfoo.provider.id",
|
|
@@ -225,6 +227,8 @@ function setGenAIResponseAttributes(span, result, sanitize = true) {
|
|
|
225
227
|
if (usage.completionDetails.reasoning !== void 0) span.setAttribute(GenAIAttributes.USAGE_REASONING_TOKENS, usage.completionDetails.reasoning);
|
|
226
228
|
if (usage.completionDetails.acceptedPrediction !== void 0) span.setAttribute(GenAIAttributes.USAGE_ACCEPTED_PREDICTION_TOKENS, usage.completionDetails.acceptedPrediction);
|
|
227
229
|
if (usage.completionDetails.rejectedPrediction !== void 0) span.setAttribute(GenAIAttributes.USAGE_REJECTED_PREDICTION_TOKENS, usage.completionDetails.rejectedPrediction);
|
|
230
|
+
if (usage.completionDetails.cacheReadInputTokens !== void 0) span.setAttribute(GenAIAttributes.USAGE_CACHE_READ_INPUT_TOKENS, usage.completionDetails.cacheReadInputTokens);
|
|
231
|
+
if (usage.completionDetails.cacheCreationInputTokens !== void 0) span.setAttribute(GenAIAttributes.USAGE_CACHE_CREATION_INPUT_TOKENS, usage.completionDetails.cacheCreationInputTokens);
|
|
228
232
|
}
|
|
229
233
|
}
|
|
230
234
|
if (result.responseModel) span.setAttribute(GenAIAttributes.RESPONSE_MODEL, result.responseModel);
|
|
@@ -253,4 +257,4 @@ function getTraceparent() {
|
|
|
253
257
|
//#endregion
|
|
254
258
|
export { withGenAISpan as n, getTraceparent as t };
|
|
255
259
|
|
|
256
|
-
//# sourceMappingURL=genaiTracer-
|
|
260
|
+
//# sourceMappingURL=genaiTracer-DxODqT9e.js.map
|