promptfoo 0.120.27 → 0.121.1
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-8WOe2nT6.js → ListApp-Du7YVwj5.js} +2 -4
- package/dist/src/accounts-BgNJDBE6.js +206 -0
- package/dist/src/{accounts-Fl2J3_Fu.cjs → accounts-Bx-x3bmW.cjs} +77 -78
- package/dist/src/{accounts-DVINui-2.js → accounts-CMqkzrVf.js} +39 -34
- package/dist/src/{accounts-CPDRAMND.js → accounts-xrUGFA6n.js} +38 -33
- package/dist/src/{agentic-utils-D922n6mm.js → agentic-utils-BKIN5PKu.js} +9 -10
- package/dist/src/{agents-BO2n8Z0d.cjs → agents-B0f4HICh.cjs} +37 -40
- package/dist/src/{agents-BXLmVsxR.js → agents-C-dDThPK.js} +37 -37
- package/dist/src/{agents-DgJf2-ez.cjs → agents-CErsqg5U.cjs} +16 -17
- package/dist/src/{agents-BcsN_BgB.js → agents-CVIn-Utx.js} +16 -12
- package/dist/src/{agents-hqgSV-3o.js → agents-CXknwsFX.js} +37 -40
- package/dist/src/{agents-pMfppv9Z.js → agents-DeH4Gu94.js} +18 -18
- package/dist/src/{agents-BdUTAwi-.js → agents-Dy2YpZpa.js} +38 -41
- package/dist/src/{agents-DNvSH78i.js → agents-aF4-T121.js} +16 -20
- package/dist/src/{aimlapi-DOib86oE.js → aimlapi-BAGZDo5G.js} +16 -18
- package/dist/src/{aimlapi-DtgPI0nE.js → aimlapi-BNfTBexL.js} +15 -17
- package/dist/src/{aimlapi-DTPACCB1.js → aimlapi-DHRKlBEA.js} +15 -4
- package/dist/src/{aimlapi-BE_Tg9Fl.cjs → aimlapi-tg0Gkcvr.cjs} +15 -16
- package/dist/src/app/assets/index-BFCZg7hQ.js +439 -0
- package/dist/src/app/index.html +1 -1
- package/dist/src/{audio-BRYU0BFo.js → audio-BRODU0UK.js} +7 -9
- package/dist/src/{audio-Cwo68yZS.cjs → audio-BWeaWovU.cjs} +6 -7
- package/dist/src/{audio-BnRUGAm_.js → audio-CHQ4r-RV.js} +6 -5
- package/dist/src/{audio-MSRki4JU.js → audio-tf_NBjlC.js} +6 -8
- package/dist/src/{base-h961VXYk.js → base-B0tcrnq_.js} +11 -13
- package/dist/src/{base-XB2tDJrB.js → base-B4QJRyFS.js} +11 -13
- package/dist/src/{base-pGVmXNl4.cjs → base-DBtwl2FR.cjs} +36 -38
- package/dist/src/base-fEDN28WM.js +193 -0
- package/dist/src/{blobs-BM_e6hCa.js → blobs-BAU-dXan.js} +9 -12
- package/dist/src/{blobs-CR5C4Ihh.js → blobs-Bpg5rH6i.js} +9 -12
- package/dist/src/{blobs-B-KQAFhX.cjs → blobs-DvS-O6be.cjs} +34 -37
- package/dist/src/blobs-qTYm-1PY.js +236 -0
- package/dist/src/{cache-CIpsoBZR.js → cache-8XhNqPKW.js} +64 -67
- package/dist/src/cache-Bbn1Nyrd.cjs +5 -0
- package/dist/src/cache-BwsMSda7.js +6 -0
- package/dist/src/{cache-jsiwsAJv.js → cache-CG0SlR1d.js} +64 -66
- package/dist/src/{cache-BTVYfbka.cjs → cache-COish3-W.cjs} +114 -117
- package/dist/src/cache-D3eqDYGU.js +739 -0
- package/dist/src/{chat-D31K7C4u.cjs → chat-2K608PeQ.cjs} +20 -21
- package/dist/src/chat-BKm79wib.js +764 -0
- package/dist/src/{chat-B84t99NW.js → chat-CM_kyI8B.js} +20 -9
- package/dist/src/{chat-BcPjZXIp.js → chat-CRWNNq73.js} +41 -44
- package/dist/src/{chat-CcUCysjU.js → chat-CznLWr_D.js} +41 -44
- package/dist/src/{chat-DwWifjxi.js → chat-DHMH-N64.js} +20 -22
- package/dist/src/{chat-BE44YOc6.cjs → chat-DaqekjFr.cjs} +61 -64
- package/dist/src/{chat-DZM2GUHO.js → chat-DxysjBvt.js} +21 -23
- package/dist/src/{chatkit-D67HS_0b.js → chatkit-65VXf5SR.js} +58 -58
- package/dist/src/{chatkit-DAB_qfzI.js → chatkit-Be-Q-a9F.js} +58 -60
- package/dist/src/{chatkit-Biqb_wsD.js → chatkit-BxFvW8KY.js} +58 -60
- package/dist/src/{chatkit-PGG4ZYIn.cjs → chatkit-DKyPi1Gs.cjs} +58 -60
- package/dist/src/chunk-DEq-mXcV.js +15 -0
- package/dist/src/chunk-DRamLcfz.js +16 -0
- package/dist/src/{claude-agent-sdk-SVM6AdBu.js → claude-agent-sdk-BLTu0WBO.js} +31 -31
- package/dist/src/{claude-agent-sdk-C9SiaQub.cjs → claude-agent-sdk-CJH22shf.cjs} +31 -28
- package/dist/src/{claude-agent-sdk-C-IOTPfo.js → claude-agent-sdk-D6_k9FKA.js} +31 -29
- package/dist/src/{claude-agent-sdk-CiluSyW1.js → claude-agent-sdk-Dy5lT-Tx.js} +33 -20
- package/dist/src/{cloud-CZ-q9Ier.js → cloud-Bc9526yV.js} +7 -9
- package/dist/src/cloud-DmE0EwsY.js +4 -0
- package/dist/src/{cloudflare-ai-BahKHyhh.js → cloudflare-ai-C9r2sRhw.js} +16 -18
- package/dist/src/{cloudflare-ai-Dxyt50Nl.js → cloudflare-ai-CWWJCRim.js} +16 -4
- package/dist/src/{cloudflare-ai-Dfahv5SY.cjs → cloudflare-ai-ClWSdor4.cjs} +16 -17
- package/dist/src/{cloudflare-ai-v_qZD6_q.js → cloudflare-ai-ICsOuD-z.js} +17 -19
- package/dist/src/{cloudflare-gateway-BPWoZIzJ.cjs → cloudflare-gateway-C2_-KG5o.cjs} +21 -22
- package/dist/src/{cloudflare-gateway-Bi_FpOFy.js → cloudflare-gateway-D6O7AlYb.js} +23 -23
- package/dist/src/{cloudflare-gateway-btS7h1OZ.js → cloudflare-gateway-D6xFc5pa.js} +21 -25
- package/dist/src/{cloudflare-gateway-C0guUNwk.js → cloudflare-gateway-pXGHxJ47.js} +26 -14
- package/dist/src/{codex-sdk-DSxAnbfT.js → codex-sdk-C6UMlxwV.js} +28 -29
- package/dist/src/{codex-sdk-IYVi9fuM.js → codex-sdk-DUwKWezN.js} +28 -27
- package/dist/src/{codex-sdk-DulY0ZRq.js → codex-sdk-GGAw0qbD.js} +28 -29
- package/dist/src/{codex-sdk-DFKMtAyf.cjs → codex-sdk-fAO0c3yA.cjs} +28 -29
- package/dist/src/{cometapi-DkNBMk0G.js → cometapi-BasUi7-_.js} +17 -19
- package/dist/src/{cometapi-DzrR3SR_.js → cometapi-Bbjp5V4x.js} +16 -4
- package/dist/src/{cometapi-C9EEpJzT.js → cometapi-DkXrKi5z.js} +21 -24
- package/dist/src/{cometapi-DIO64tf4.cjs → cometapi-vY6aDZgo.cjs} +21 -22
- package/dist/src/{completion-CG29bfKX.js → completion-6Mx_iXxK.js} +11 -13
- package/dist/src/{completion-Bgf1VJoq.js → completion-C5rtR_9P.js} +11 -13
- package/dist/src/{completion-CCRT4kX1.cjs → completion-CDOouNzq.cjs} +21 -23
- package/dist/src/completion-C_P3ypkJ.js +120 -0
- package/dist/src/{createHash-Dw_iLu31.js → createHash-CTQmL3G2.js} +2 -3
- package/dist/src/{createHash-CYQy4YeL.cjs → createHash-CfZSc0b4.cjs} +13 -14
- package/dist/src/{createHash-CJcfskIZ.js → createHash-Da8fMwqB.js} +2 -3
- package/dist/src/createHash-DmPQkvBh.js +15 -0
- package/dist/src/{docker-D-ayp2FW.js → docker-5KcG-_86.js} +18 -20
- package/dist/src/{docker-DNcLR4Ig.cjs → docker-BwsKwxFs.cjs} +18 -19
- package/dist/src/{docker-egERKxCF.js → docker-CZnqU1XV.js} +18 -7
- package/dist/src/{docker-B81N0t4e.js → docker-DzxyDPIj.js} +19 -21
- package/dist/src/entrypoint.js +2 -3
- package/dist/src/{errors-DnGCbnx8.js → errors-P6ll7XSJ.js} +2 -2
- package/dist/src/{esm-B9dPm_BF.js → esm-C03C-mv3.js} +17 -20
- package/dist/src/{esm-D2pZ87fL.js → esm-CaIwzWR5.js} +18 -21
- package/dist/src/esm-Cd1AjG1D.js +379 -0
- package/dist/src/{esm-Ct-Joyue.cjs → esm-CnNt7sI4.cjs} +47 -49
- package/dist/src/eval-17JizQIv.js +15 -0
- package/dist/src/{eval-C-Nr6wX_.js → eval-DmFyWU7i.js} +47 -54
- package/dist/src/{evalResult-4BzI2tmj.js → evalResult-CDQiuUuf.js} +16 -12
- package/dist/src/{evalResult-DXMWJ3sx.js → evalResult-CTG2AHOS.js} +10 -11
- package/dist/src/evalResult-Cqj8pldJ.js +12 -0
- package/dist/src/{evalResult-CX8wQecI.cjs → evalResult-Dap2CekP.cjs} +20 -21
- package/dist/src/evalResult-DvcJAWJU.cjs +10 -0
- package/dist/src/evalResult-Hftn-S_i.js +10 -0
- package/dist/src/evaluator-B2CFNt-P.js +36 -0
- package/dist/src/{evaluator-8aGyV12L.js → evaluator-DPFRbFIL.js} +201 -229
- package/dist/src/{extractor-CD5yKL-G.js → extractor-CFG6bcWJ.js} +22 -24
- package/dist/src/{extractor-C031XmTA.cjs → extractor-DX36oYEv.cjs} +37 -39
- package/dist/src/{extractor-V5x_m1i0.js → extractor-M67RUtg6.js} +22 -24
- package/dist/src/extractor-YMU_Gvt8.js +374 -0
- package/dist/src/{fetch-D3OHf-lV.js → fetch-4M3YRaqL.js} +40 -45
- package/dist/src/fetch-60Gzydls.js +777 -0
- package/dist/src/{fetch-CXZI9RRr.js → fetch-BMv0O527.js} +23 -35
- package/dist/src/{fetch-BmbD-v1L.cjs → fetch-BxUk8odA.cjs} +244 -277
- package/dist/src/fetch-KV5kNASw.js +5 -0
- package/dist/src/{fileExtensions-ePDqouxn.js → fileExtensions-DnqA1y9x.js} +2 -2
- package/dist/src/{fileExtensions-BpuMmaFL.js → fileExtensions-Ds-foDzt.js} +2 -2
- package/dist/src/fileExtensions-LcDYkU4v.js +85 -0
- package/dist/src/{fileExtensions-DkJYkWUy.cjs → fileExtensions-bYh77CN8.cjs} +27 -28
- package/dist/src/{formatDuration-CdevI3An.js → formatDuration-DgBVMN65.js} +2 -2
- package/dist/src/{genaiTracer-Ce19n68P.js → genaiTracer-70Z8BIuV.js} +2 -3
- package/dist/src/{genaiTracer-CqNnnXrE.js → genaiTracer-C1rxGO8Q.js} +2 -3
- package/dist/src/genaiTracer-D3fD9dNV.js +256 -0
- package/dist/src/{genaiTracer-Dres3qrN.cjs → genaiTracer-DN4dQywX.cjs} +13 -14
- package/dist/src/graders-Bu0H9nXi.js +32 -0
- package/dist/src/{graders-DTeBrzWp.js → graders-CHO8EPM4.js} +349 -397
- package/dist/src/graders-Cfhkvx-e.js +34 -0
- package/dist/src/{graders--1y2u9HO.js → graders-CpdqD9PI.js} +349 -397
- package/dist/src/graders-DClJVpGP.cjs +32 -0
- package/dist/src/{graders-DohM2dir.cjs → graders-DOXycdlG.cjs} +684 -732
- package/dist/src/graders-DcnJsrMO.js +32 -0
- package/dist/src/graders-R9rYUM0d.js +13466 -0
- package/dist/src/{image-C3wHC9_h.js → image-BmEZqVmk.js} +9 -10
- package/dist/src/{image-O1u4bCFg.js → image-CBBVXWuT.js} +9 -10
- package/dist/src/{image-DpKl2F15.cjs → image-CDLQOcqT.cjs} +6 -7
- package/dist/src/{image-DmE-niFE.js → image-DJEvKveK.js} +6 -5
- package/dist/src/{image-CuKHuccK.cjs → image-DTedmQPg.cjs} +29 -30
- package/dist/src/{image-B0U4Hqll.js → image-gvmivTEe.js} +7 -9
- package/dist/src/image-pAX56tPG.js +257 -0
- package/dist/src/{image-DNEIf_aI.js → image-tL5hIOFh.js} +6 -8
- package/dist/src/index.cjs +605 -689
- package/dist/src/index.d.cts +11 -7
- package/dist/src/index.d.ts +11 -3
- package/dist/src/index.js +570 -658
- package/dist/src/{interactiveCheck-Bxj1Swex.js → interactiveCheck-BgLZUIt3.js} +7 -8
- package/dist/src/{invariant-DT20jrBd.js → invariant-BtWWVVhl.js} +2 -2
- package/dist/src/{invariant-1pAf2CD1.js → invariant-Ddh24eXh.js} +2 -2
- package/dist/src/{invariant-CKcJAQ6M.cjs → invariant-kfQ8Bu82.cjs} +7 -8
- package/dist/src/invariant-vgHWClmd.js +25 -0
- package/dist/src/{knowledgeBase-Be_zyW4L.js → knowledgeBase-CLJybhnF.js} +16 -16
- package/dist/src/{knowledgeBase-CEzQobWX.js → knowledgeBase-CoU-UQBg.js} +14 -9
- package/dist/src/{knowledgeBase-BZ41IFwq.js → knowledgeBase-DjWPVqSb.js} +14 -18
- package/dist/src/{knowledgeBase-D-5BMXlr.cjs → knowledgeBase-wkxuRFhA.cjs} +14 -15
- package/dist/src/{litellm-DnbRJ2if.js → litellm-B9Hysuri.js} +16 -18
- package/dist/src/{litellm-CRDqPhNI.js → litellm-CTfa0hqi.js} +15 -17
- package/dist/src/{litellm-hUSNM_M2.cjs → litellm-NYpQ8RQu.cjs} +15 -16
- package/dist/src/{litellm-9vR8zpfU.js → litellm-ePxtr9F1.js} +15 -4
- package/dist/src/{logger-CG1uZPbQ.js → logger-CT3IKMKA.js} +10 -29
- package/dist/src/{logger-B7sBeGa0.cjs → logger-Cp1GPUjj.cjs} +152 -180
- package/dist/src/logger-DLcq4dWf.js +713 -0
- package/dist/src/{logger-LSBxlt7a.js → logger-KkObSCzq.js} +13 -31
- package/dist/src/{luma-ray-Hm3d6VJE.cjs → luma-ray-B0GGNRc1.cjs} +20 -21
- package/dist/src/{luma-ray-drvgdpP9.js → luma-ray-BE2mOt6N.js} +20 -13
- package/dist/src/{luma-ray-4blv9iZ2.js → luma-ray-BW9IRGIc.js} +22 -21
- package/dist/src/{luma-ray-B2__8lYH.js → luma-ray-Cm1KZBhs.js} +20 -23
- package/dist/src/main.js +1170 -1321
- package/dist/src/{messages-XhiwCbi4.cjs → messages-1JrJs91T.cjs} +32 -34
- package/dist/src/{messages-CGPPidQr.js → messages-1x9atZmP.js} +22 -24
- package/dist/src/{messages-Uee41Mj5.js → messages-BLbWdsyt.js} +22 -24
- package/dist/src/messages-D8EA0oDc.js +240 -0
- package/dist/src/{meteor-BYykdXrV.js → meteor-44VjEACX.js} +3 -4
- package/dist/src/{meteor-CsopaHrH.js → meteor-D-SotUw9.js} +3 -4
- package/dist/src/{meteor-e-E-2vVl.cjs → meteor-DLZZ3osF.cjs} +3 -4
- package/dist/src/{meteor-C8lGP6P4.js → meteor-DUiCJRC-.js} +3 -4
- package/dist/src/{modelslab-yKz-ZNB4.js → modelslab-C1OLRmVX.js} +17 -10
- package/dist/src/{modelslab-E9gO-bYd.js → modelslab-CqXBy3U8.js} +18 -20
- package/dist/src/{modelslab-lUVW0cmB.cjs → modelslab-DcOSFwKh.cjs} +17 -18
- package/dist/src/{modelslab-ClBkr8_9.js → modelslab-X5-4LroM.js} +17 -19
- package/dist/src/{nova-reel-Dk8jNpId.js → nova-reel-BgS1ZWuK.js} +20 -13
- package/dist/src/{nova-reel-u2eF2Cxm.js → nova-reel-D2ZkOSyr.js} +22 -21
- package/dist/src/{nova-reel-D8CuO6QH.cjs → nova-reel-D9xfaMBs.cjs} +20 -21
- package/dist/src/{nova-reel-P9bwvtYX.js → nova-reel-DihqLeol.js} +20 -23
- package/dist/src/{nova-sonic-Ds1C-dpm.cjs → nova-sonic-DVu3mMIy.cjs} +30 -31
- package/dist/src/{nova-sonic-CK2rAiKi.js → nova-sonic-DezhVUYT.js} +30 -26
- package/dist/src/{nova-sonic-BaqWlkds.js → nova-sonic-P-CdUMlV.js} +30 -31
- package/dist/src/{nova-sonic-yZapPLv7.js → nova-sonic-Q3BOJeig.js} +31 -32
- package/dist/src/{openai-DUFopMrH.cjs → openai-Cuif0GEt.cjs} +8 -9
- package/dist/src/{openai-PblZ3jUE.js → openai-DElQ-fPX.js} +3 -4
- package/dist/src/{openai-CcN1B8Sb.js → openai-DhbB7eWK.js} +3 -4
- package/dist/src/openai-j-sE2O7r.js +44 -0
- package/dist/src/{openclaw-A-3_loM7.js → openclaw-BiSZPL7J.js} +20 -14
- package/dist/src/{openclaw-COn6QzDi.js → openclaw-Bv1DINsX.js} +20 -27
- package/dist/src/{openclaw-a3lylB-V.js → openclaw-D1D_ej1z.js} +21 -28
- package/dist/src/{openclaw-B6qqDr_u.cjs → openclaw-DAfWQn-o.cjs} +33 -39
- package/dist/src/opencode-sdk-C7m-wRfI.js +560 -0
- package/dist/src/opencode-sdk-CfaLN8PY.cjs +564 -0
- package/dist/src/opencode-sdk-D95s6SnR.js +562 -0
- package/dist/src/opencode-sdk-DxUPkLT7.js +560 -0
- package/dist/src/{otlpReceiver-oyf5wLGC.js → otlpReceiver--AIRW_S4.js} +53 -51
- package/dist/src/{otlpReceiver-BmmTiMjA.js → otlpReceiver-Bn5wGB1v.js} +53 -55
- package/dist/src/{otlpReceiver-lXsYVbpj.cjs → otlpReceiver-Diec4cln.cjs} +53 -55
- package/dist/src/{otlpReceiver-94URx7UW.js → otlpReceiver-g3ByGaXs.js} +53 -55
- package/dist/src/{providerRegistry-Cq_JK_CJ.js → providerRegistry-B0RUOLI_.js} +7 -8
- package/dist/src/{providerRegistry-DSSHjMKf.js → providerRegistry-CD8MEar9.js} +7 -8
- package/dist/src/{providerRegistry-CvHEVJad.cjs → providerRegistry-Civky8Ar.cjs} +12 -13
- package/dist/src/providerRegistry-DM8rZYol.js +45 -0
- package/dist/src/providers-B3HvufyI.js +33246 -0
- package/dist/src/{providers-BnFpbY_s.js → providers-BKRJTjBz.js} +1536 -1669
- package/dist/src/providers-C1rOSHiR.js +32 -0
- package/dist/src/{providers-Iil64vk9.js → providers-CFLy1_ji.js} +1543 -1676
- package/dist/src/{providers-DHbjzW2e.cjs → providers-CFu-TZl-.cjs} +1896 -2029
- package/dist/src/providers-CxmDwEFf.cjs +31 -0
- package/dist/src/providers-Dodakqr0.js +30 -0
- package/dist/src/providers-GIQ2TcsA.js +30 -0
- package/dist/src/{pythonUtils-CcT5LH1M.js → pythonUtils-C3py6GC1.js} +18 -19
- package/dist/src/{pythonUtils-DBbuI3QJ.cjs → pythonUtils-CTU3Y3lw.cjs} +42 -43
- package/dist/src/{pythonUtils-hZ8LeQLv.js → pythonUtils-D5nxkQ0P.js} +18 -19
- package/dist/src/pythonUtils-D6fwaDSg.js +249 -0
- package/dist/src/{quiverai-BuI0tE39.js → quiverai-C2jVwbH1.js} +8 -7
- package/dist/src/{quiverai-DCGSZt4U.js → quiverai-CI6gYJVI.js} +8 -10
- package/dist/src/{quiverai-DiMVJQDz.cjs → quiverai-CLkWkyZc.cjs} +8 -9
- package/dist/src/{quiverai-fQNkExW4.js → quiverai-MHSxbmmZ.js} +9 -11
- package/dist/src/{render-Dj1smHEb.js → render-Drod8m7K.js} +4 -5
- package/dist/src/{responses-DOAFFENS.js → responses-BKqJmhhc.js} +22 -25
- package/dist/src/{responses-CxzoQoBe.js → responses-CGw0DCzh.js} +22 -25
- package/dist/src/responses-jxdehPkC.js +660 -0
- package/dist/src/{responses-ghR3IOfy.cjs → responses-tD4Bd4dc.cjs} +37 -40
- package/dist/src/rubyUtils-BUHu6PhO.js +5 -0
- package/dist/src/{rubyUtils-CwbGmgYN.js → rubyUtils-BUVePouc.js} +27 -20
- package/dist/src/rubyUtils-BcuGX77l.js +222 -0
- package/dist/src/{rubyUtils-DudlFZed.js → rubyUtils-Boc4HZzX.js} +18 -19
- package/dist/src/rubyUtils-CP42kMvq.cjs +4 -0
- package/dist/src/{rubyUtils-C8MhKGHb.cjs → rubyUtils-DhCAlxZr.cjs} +48 -50
- package/dist/src/{sagemaker-gmskuyre.js → sagemaker-BK4Zb993.js} +75 -70
- package/dist/src/{sagemaker-DuM71dVU.js → sagemaker-BfiWTmvn.js} +77 -77
- package/dist/src/{sagemaker-77zbJ2Q2.cjs → sagemaker-CcQHM1jV.cjs} +75 -76
- package/dist/src/{sagemaker-CcxhlOAR.js → sagemaker-D2Q1c-sD.js} +75 -79
- package/dist/src/{scanner-DJYiSXQj.js → scanner-J8CA3LsV.js} +100 -121
- package/dist/src/server/index.js +5505 -67416
- package/dist/src/{server-B5v33lvE.cjs → server-B0PPuDw-.cjs} +57 -67
- package/dist/src/server-B1vi21hA.js +7 -0
- package/dist/src/{server-RV_i_YX5.js → server-BC7XJFgr.js} +19 -24
- package/dist/src/server-Cm9Kai_h.cjs +5 -0
- package/dist/src/{server-BJ4m4f1D.js → server-DbFphssR.js} +26 -29
- package/dist/src/server-OAs3nBRT.js +229 -0
- package/dist/src/{signal-BW33JuId.js → signal-BOTbd53Z.js} +9 -11
- package/dist/src/{slack-DEURelTy.cjs → slack-BmVAVGaK.cjs} +7 -8
- package/dist/src/{slack-BQYeW9L3.js → slack-DCUPTzS2.js} +8 -8
- package/dist/src/{slack-BB6yuZzp.js → slack-DOdy_kyv.js} +7 -8
- package/dist/src/{slack-2pRrhhgJ.js → slack-DXMKtA-f.js} +7 -9
- package/dist/src/store-BNmZ1KAz.cjs +5 -0
- package/dist/src/{store-D7CgQzAR.cjs → store-BSc-TF2w.cjs} +44 -45
- package/dist/src/store-BltJg2cd.js +6 -0
- package/dist/src/{store-s3SftUwF.js → store-D1tv90v3.js} +34 -35
- package/dist/src/{store-DJNsD1iC.js → store-DQLEjuEO.js} +40 -36
- package/dist/src/store-Ub2vaGJ1.js +228 -0
- package/dist/src/{tables-DfTsNN7X.js → tables-5EvT_Bwn.js} +19 -21
- package/dist/src/{tables-BKTmd6u7.cjs → tables-C7K-XKWp.cjs} +89 -91
- package/dist/src/{tables-DMegD0Xf.js → tables-D36WTqKX.js} +21 -23
- package/dist/src/tables-xKANLRBD.js +288 -0
- package/dist/src/telemetry-5BCRNBbe.cjs +5 -0
- package/dist/src/{telemetry-BedSm-bZ.js → telemetry-C15ziL8u.js} +17 -14
- package/dist/src/{telemetry--WAdAfVi.js → telemetry-C2YDkUQH.js} +11 -13
- package/dist/src/{telemetry-DQgVBCAb.cjs → telemetry-CbrnxHp_.cjs} +21 -24
- package/dist/src/telemetry-D4W5hboe.js +7 -0
- package/dist/src/telemetry-DMb2Mpfm.js +171 -0
- package/dist/src/{text-oiSbwSOI.js → text-B_UCRPp2.js} +2 -2
- package/dist/src/{text-oKzCBnK6.cjs → text-CW1cyrwj.cjs} +12 -13
- package/dist/src/{text-B_IrO4GZ.js → text-Db-Wt2u2.js} +2 -2
- package/dist/src/text-TIv0QYnd.js +22 -0
- package/dist/src/{tokenUsageUtils-FZd5O_4A.js → tokenUsageUtils-BDGe-iyI.js} +2 -2
- package/dist/src/{tokenUsageUtils-DmZSD2eU.js → tokenUsageUtils-DflFMjS0.js} +2 -2
- package/dist/src/tokenUsageUtils-NYT-WKS6.js +138 -0
- package/dist/src/{tokenUsageUtils-CXhxVj72.cjs → tokenUsageUtils-bVa1ga6f.cjs} +32 -33
- package/dist/src/{transcription-BO1AHegO.cjs → transcription-CL78qbOU.cjs} +14 -15
- package/dist/src/{transcription-mYS9vd5v.js → transcription-DAtxHhAM.js} +14 -7
- package/dist/src/{transcription-X2-B4vkX.js → transcription-LNZTNUUL.js} +14 -16
- package/dist/src/{transcription-lzBLiTFJ.js → transcription-QHh3AH6Z.js} +15 -17
- package/dist/src/{transform-DeGlxb0D.js → transform-Cgi24fJ7.js} +39 -47
- package/dist/src/{transform-B1Hi5lWS.cjs → transform-CzK1Q0zl.cjs} +24 -26
- package/dist/src/{transform-CYDILYDe.js → transform-DECvGmzp.js} +15 -13
- package/dist/src/{transform-Dfl89yi4.js → transform-DGLazrMm.js} +39 -47
- package/dist/src/transform-DGxXocjk.js +1506 -0
- package/dist/src/{transform-D5PjiWiZ.cjs → transform-DOcQeLld.cjs} +179 -187
- package/dist/src/transform-DTGDnAzW.js +6 -0
- package/dist/src/{transform-BEgStbHK.js → transform-DilY9wbS.js} +10 -12
- package/dist/src/transform-aa6tmVpZ.js +216 -0
- package/dist/src/transform-m3qNw4KP.cjs +5 -0
- package/dist/src/{transformersAvailability-SZnTS3pJ.js → transformersAvailability-CEVM2GNQ.js} +2 -2
- package/dist/src/{transformersAvailability-D-glmEy7.cjs → transformersAvailability-CwayUSlh.cjs} +2 -3
- package/dist/src/{transformersAvailability-CjeFXhuJ.js → transformersAvailability-D6c6ROpT.js} +2 -2
- package/dist/src/{types-CXQduE9o.js → types-CH3Ge2sE.js} +30 -90
- package/dist/src/{types-C5hEkb-x.js → types-CLKiCBW3.js} +25 -89
- package/dist/src/types-CN_TZ2GJ.js +3260 -0
- package/dist/src/{types-DWNf48sT.cjs → types-LJ0r3wbR.cjs} +500 -564
- package/dist/src/util-5cB-L7U3.js +1430 -0
- package/dist/src/util-6-GqIvzS.js +599 -0
- package/dist/src/{util-CoQjmE3u.js → util-B7T3SiBS.js} +4 -5
- package/dist/src/{util-D9eLdGfa.js → util-Betm42rL.js} +5 -6
- package/dist/src/{util-Bm_-UMD_.js → util-C-PPYSMq.js} +5 -6
- package/dist/src/{util-CyUdMzV0.cjs → util-CchiqXh_.cjs} +34 -35
- package/dist/src/{util-Du96oyYS.js → util-DaWTWKBK.js} +4 -5
- package/dist/src/{util-1wWM599Z.cjs → util-Db0a0AFH.cjs} +50 -51
- package/dist/src/{util-DQ984syk.js → util-Dlz_Wvgm.js} +37 -48
- package/dist/src/{util-_h4pVqrz.js → util-YT5HPZaS.js} +37 -48
- package/dist/src/{util-aLhtl3fe.cjs → util-Yz-1aEhW.cjs} +209 -220
- package/dist/src/util-ZZH-3QZz.js +293 -0
- package/dist/src/{utils-BjLy-Q72.cjs → utils-Cz9qXqII.cjs} +29 -32
- package/dist/src/{utils-CFMn2yHW.js → utils-XiOAgly5.js} +4 -7
- package/dist/src/utils-dLokC-eR.js +94 -0
- package/dist/src/{utils-DvWMzuMx.js → utils-f2-Moju7.js} +4 -7
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +30 -30
- package/dist/src/app/assets/index-B2D0bCSI.js +0 -439
- package/dist/src/app/tsconfig.app.tsbuildinfo +0 -1
- package/dist/src/cache-ChPcurj7.js +0 -6
- package/dist/src/cache-VVu_W-yg.js +0 -8
- package/dist/src/cache-YLNCFEM2.cjs +0 -6
- package/dist/src/chunk-DHDDz29n.js +0 -22
- package/dist/src/chunk-FhC4c-0y.js +0 -21
- package/dist/src/cloud-BndfXy4H.js +0 -5
- package/dist/src/eval-BhHvMY82.js +0 -17
- package/dist/src/evalResult-Dq2gFNQY.js +0 -12
- package/dist/src/evalResult-nmcP5VKH.cjs +0 -12
- package/dist/src/evalResult-trqZjVYh.js +0 -14
- package/dist/src/evaluator-CnfPstzT.js +0 -39
- package/dist/src/fetch-IDPDue6F.cjs +0 -4
- package/dist/src/fetch-hKJ-It8q.js +0 -6
- package/dist/src/fetch-ouKnrWK-.js +0 -4
- package/dist/src/graders-CQn7WUsd.cjs +0 -34
- package/dist/src/graders-DC6QAbpW.js +0 -35
- package/dist/src/graders-DUWz3Y7j.js +0 -37
- package/dist/src/opencode-sdk-4bL9n-Gk.js +0 -382
- package/dist/src/opencode-sdk-BfC2zWcR.js +0 -376
- package/dist/src/opencode-sdk-DMJyuwMg.js +0 -380
- package/dist/src/opencode-sdk-Da-9adza.cjs +0 -383
- package/dist/src/providers-CsXB2Ix-.js +0 -35
- package/dist/src/providers-DO8ltjLC.js +0 -33
- package/dist/src/providers-Dtq-xnXd.cjs +0 -33
- package/dist/src/rubyUtils-BUbcND2f.js +0 -6
- package/dist/src/rubyUtils-Cr55X_KE.js +0 -5
- package/dist/src/rubyUtils-DlIiqoYo.cjs +0 -5
- package/dist/src/server-C2eQH4Gu.js +0 -6
- package/dist/src/server-CXWycu7H.cjs +0 -6
- package/dist/src/server-Q6OGlxxT.js +0 -8
- package/dist/src/store-B3EDO9Q3.js +0 -7
- package/dist/src/store-Dl9F8aw5.js +0 -6
- package/dist/src/store-SnrGrlt9.cjs +0 -6
- package/dist/src/telemetry-BGhiPZtl.js +0 -8
- package/dist/src/telemetry-CFfiYan6.cjs +0 -6
- package/dist/src/telemetry-DHzEduxX.js +0 -6
- package/dist/src/transform-C1x1ZlMQ.cjs +0 -6
- package/dist/src/transform-DYHjFmQu.js +0 -8
- package/dist/src/transform-rmwJT5JQ.js +0 -7
- package/dist/src/transformersAvailability-eJooj0gX.js +0 -35
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { t as __exportAll } from "./chunk-
|
|
3
|
-
import { C as getEnvString, S as getEnvInt, b as getEnvBool, o as
|
|
4
|
-
import { f as REQUEST_TIMEOUT_MS, l as sleep, r as fetchWithRetries } from "./fetch-
|
|
5
|
-
import { r as isTransientConnectionError } from "./errors-
|
|
2
|
+
import { t as __exportAll } from "./chunk-DRamLcfz.js";
|
|
3
|
+
import { C as getEnvString, S as getEnvInt, b as getEnvBool, o as logger, v as getConfigDirectoryPath } from "./logger-KkObSCzq.js";
|
|
4
|
+
import { f as REQUEST_TIMEOUT_MS, l as sleep, r as fetchWithRetries } from "./fetch-BMv0O527.js";
|
|
5
|
+
import { r as isTransientConnectionError } from "./errors-P6ll7XSJ.js";
|
|
6
6
|
import fs from "fs";
|
|
7
7
|
import path from "path";
|
|
8
8
|
import { createCache } from "cache-manager";
|
|
9
9
|
import { Keyv } from "keyv";
|
|
10
10
|
import { KeyvFile } from "keyv-file";
|
|
11
11
|
import { randomBytes } from "crypto";
|
|
12
|
-
|
|
13
12
|
//#region src/cacheMigration.ts
|
|
14
13
|
/**
|
|
15
14
|
* Migration sunset date: After this date, skip migration entirely.
|
|
@@ -41,7 +40,7 @@ function getDirSize(dirPath) {
|
|
|
41
40
|
else totalSize += fs.statSync(itemPath).size;
|
|
42
41
|
}
|
|
43
42
|
} catch (err) {
|
|
44
|
-
if (err.code !== "ENOENT")
|
|
43
|
+
if (err.code !== "ENOENT") logger.warn(`[Cache Migration] Error calculating directory size: ${err.message}`);
|
|
45
44
|
}
|
|
46
45
|
return totalSize;
|
|
47
46
|
}
|
|
@@ -56,18 +55,18 @@ function checkDiskSpace(cachePath) {
|
|
|
56
55
|
const stats = fs.statfsSync(cachePath);
|
|
57
56
|
const availableBytes = stats.bavail * stats.bsize;
|
|
58
57
|
const requiredBytes = cacheSize * 2 + 10 * 1024 * 1024;
|
|
59
|
-
|
|
58
|
+
logger.debug(`[Cache Migration] Disk space check: need ${(requiredBytes / 1024 / 1024).toFixed(2)}MB, have ${(availableBytes / 1024 / 1024).toFixed(2)}MB available`);
|
|
60
59
|
if (availableBytes < requiredBytes) {
|
|
61
|
-
|
|
60
|
+
logger.error(`[Cache Migration] Insufficient disk space for migration. Need ${(requiredBytes / 1024 / 1024).toFixed(0)}MB, have ${(availableBytes / 1024 / 1024).toFixed(0)}MB available.`);
|
|
62
61
|
return false;
|
|
63
62
|
}
|
|
64
63
|
return true;
|
|
65
64
|
} else {
|
|
66
|
-
|
|
65
|
+
logger.debug("[Cache Migration] Disk space check not available on this platform, proceeding");
|
|
67
66
|
return true;
|
|
68
67
|
}
|
|
69
68
|
} catch (err) {
|
|
70
|
-
|
|
69
|
+
logger.warn(`[Cache Migration] Could not check disk space: ${err.message}`);
|
|
71
70
|
return true;
|
|
72
71
|
}
|
|
73
72
|
}
|
|
@@ -93,7 +92,7 @@ function isProcessRunning(pid) {
|
|
|
93
92
|
*/
|
|
94
93
|
function acquireMigrationLock(cachePath, attempt = 1) {
|
|
95
94
|
if (attempt > MAX_LOCK_ATTEMPTS) {
|
|
96
|
-
|
|
95
|
+
logger.warn(`[Cache Migration] Failed to acquire lock after ${MAX_LOCK_ATTEMPTS} attempts`);
|
|
97
96
|
return null;
|
|
98
97
|
}
|
|
99
98
|
const lockFile = path.join(cachePath, ".migration.lock");
|
|
@@ -102,7 +101,7 @@ function acquireMigrationLock(cachePath, attempt = 1) {
|
|
|
102
101
|
const fd = fs.openSync(lockFile, "wx");
|
|
103
102
|
fs.writeSync(fd, process.pid.toString());
|
|
104
103
|
fs.fsyncSync(fd);
|
|
105
|
-
|
|
104
|
+
logger.debug(`[Cache Migration] Lock acquired (PID: ${process.pid})`);
|
|
106
105
|
return fd;
|
|
107
106
|
} catch (err) {
|
|
108
107
|
if (err.code === "EEXIST") {
|
|
@@ -111,20 +110,20 @@ function acquireMigrationLock(cachePath, attempt = 1) {
|
|
|
111
110
|
const pid = parseInt(content, 10);
|
|
112
111
|
if (!isNaN(pid)) {
|
|
113
112
|
if (isProcessRunning(pid)) {
|
|
114
|
-
|
|
113
|
+
logger.info(`[Cache Migration] Another migration is in progress (PID: ${pid})`);
|
|
115
114
|
return null;
|
|
116
115
|
}
|
|
117
|
-
|
|
116
|
+
logger.warn(`[Cache Migration] Removing stale lock file (PID: ${pid} not found)`);
|
|
118
117
|
try {
|
|
119
118
|
fs.unlinkSync(lockFile);
|
|
120
119
|
return acquireMigrationLock(cachePath, attempt + 1);
|
|
121
120
|
} catch (unlinkErr) {
|
|
122
|
-
|
|
121
|
+
logger.error(`[Cache Migration] Failed to remove stale lock: ${unlinkErr.message}`);
|
|
123
122
|
return null;
|
|
124
123
|
}
|
|
125
124
|
}
|
|
126
125
|
} catch (readErr) {
|
|
127
|
-
|
|
126
|
+
logger.warn(`[Cache Migration] Could not read lock file: ${readErr.message}`);
|
|
128
127
|
}
|
|
129
128
|
return null;
|
|
130
129
|
}
|
|
@@ -140,13 +139,13 @@ function releaseMigrationLock(fd, cachePath) {
|
|
|
140
139
|
try {
|
|
141
140
|
fs.closeSync(fd);
|
|
142
141
|
} catch (err) {
|
|
143
|
-
|
|
142
|
+
logger.warn(`[Cache Migration] Failed to close lock file: ${err.message}`);
|
|
144
143
|
}
|
|
145
144
|
try {
|
|
146
145
|
fs.unlinkSync(lockFile);
|
|
147
|
-
|
|
146
|
+
logger.debug("[Cache Migration] Lock released");
|
|
148
147
|
} catch (err) {
|
|
149
|
-
|
|
148
|
+
logger.warn(`[Cache Migration] Failed to remove lock file: ${err.message}`);
|
|
150
149
|
}
|
|
151
150
|
}
|
|
152
151
|
/**
|
|
@@ -179,28 +178,28 @@ function readOldCacheEntries(cachePath) {
|
|
|
179
178
|
};
|
|
180
179
|
const entries = /* @__PURE__ */ new Map();
|
|
181
180
|
if (!fs.existsSync(cachePath)) {
|
|
182
|
-
|
|
181
|
+
logger.info(`[Cache Migration] No old cache directory found at ${cachePath}`);
|
|
183
182
|
return {
|
|
184
183
|
entries,
|
|
185
184
|
stats
|
|
186
185
|
};
|
|
187
186
|
}
|
|
188
187
|
const diskstoreDirs = fs.readdirSync(cachePath, { withFileTypes: true }).filter((dirEntry) => dirEntry.isDirectory() && dirEntry.name.startsWith("diskstore-")).map((dirEntry) => dirEntry.name);
|
|
189
|
-
|
|
188
|
+
logger.info(`[Cache Migration] Found ${diskstoreDirs.length} diskstore directories`);
|
|
190
189
|
const shouldLogProgress = diskstoreDirs.length > 100;
|
|
191
|
-
if (shouldLogProgress)
|
|
190
|
+
if (shouldLogProgress) logger.info(`[Cache Migration] Processing large cache, this may take a moment...`);
|
|
192
191
|
const now = Date.now();
|
|
193
192
|
let dirCount = 0;
|
|
194
193
|
for (const dir of diskstoreDirs) {
|
|
195
194
|
const dirPath = path.join(cachePath, dir);
|
|
196
195
|
dirCount++;
|
|
197
|
-
if (shouldLogProgress && dirCount % 100 === 0)
|
|
196
|
+
if (shouldLogProgress && dirCount % 100 === 0) logger.info(`[Cache Migration] Processed ${dirCount}/${diskstoreDirs.length} directories...`);
|
|
198
197
|
try {
|
|
199
198
|
const jsonFiles = fs.readdirSync(dirPath).filter((f) => f.endsWith(".json"));
|
|
200
199
|
for (const file of jsonFiles) {
|
|
201
200
|
const filePath = path.join(dirPath, file);
|
|
202
201
|
stats.totalFiles++;
|
|
203
|
-
if (stats.totalFiles % 1e3 === 0 && stats.totalFiles > 0)
|
|
202
|
+
if (stats.totalFiles % 1e3 === 0 && stats.totalFiles > 0) logger.info(`[Cache Migration] Processed ${stats.totalFiles} files...`);
|
|
204
203
|
try {
|
|
205
204
|
const content = fs.readFileSync(filePath, "utf-8");
|
|
206
205
|
const oldEntry = JSON.parse(content);
|
|
@@ -251,7 +250,7 @@ function validateCacheFile(cachePath, expectedEntryCount) {
|
|
|
251
250
|
if (!Array.isArray(parsed.cache)) throw new Error("Cache file has invalid structure: missing or invalid \"cache\" array");
|
|
252
251
|
if (typeof parsed.lastExpire !== "number") throw new Error("Cache file has invalid structure: missing or invalid \"lastExpire\" field");
|
|
253
252
|
if (parsed.cache.length !== expectedEntryCount) throw new Error(`Cache file entry count mismatch: expected ${expectedEntryCount}, got ${parsed.cache.length}`);
|
|
254
|
-
|
|
253
|
+
logger.debug(`[Cache Migration] Validated cache file: ${cachePath} (${expectedEntryCount} entries)`);
|
|
255
254
|
}
|
|
256
255
|
/**
|
|
257
256
|
* Write entries in keyv-file format using atomic write operation.
|
|
@@ -275,7 +274,7 @@ function writeNewCacheFile(entries, newCachePath) {
|
|
|
275
274
|
}
|
|
276
275
|
fs.writeFileSync(tempFile, serialized, "utf-8");
|
|
277
276
|
fs.renameSync(tempFile, newCachePath);
|
|
278
|
-
|
|
277
|
+
logger.debug(`[Cache Migration] Atomically wrote cache file: ${newCachePath}`);
|
|
279
278
|
validateCacheFile(newCachePath, entries.size);
|
|
280
279
|
} catch (err) {
|
|
281
280
|
try {
|
|
@@ -289,7 +288,7 @@ function writeNewCacheFile(entries, newCachePath) {
|
|
|
289
288
|
*/
|
|
290
289
|
function createBackup(cachePath) {
|
|
291
290
|
const backupPath = `${cachePath}.backup.${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}`;
|
|
292
|
-
|
|
291
|
+
logger.info(`[Cache Migration] Creating backup at ${backupPath}`);
|
|
293
292
|
if (fs.existsSync(cachePath)) fs.cpSync(cachePath, backupPath, { recursive: true });
|
|
294
293
|
return backupPath;
|
|
295
294
|
}
|
|
@@ -317,11 +316,11 @@ function isMigrationComplete(cacheBasePath, newCacheFile) {
|
|
|
317
316
|
if (newCacheFile && fs.existsSync(newCacheFile)) return true;
|
|
318
317
|
if (newCacheFile) {
|
|
319
318
|
if (hasOldCacheFormat(cacheBasePath)) {
|
|
320
|
-
|
|
319
|
+
logger.warn("[Cache Migration] Marker file exists but migration appears incomplete. Old cache format found but new cache missing. Retrying migration...");
|
|
321
320
|
try {
|
|
322
321
|
fs.unlinkSync(markerPath);
|
|
323
322
|
} catch (err) {
|
|
324
|
-
|
|
323
|
+
logger.warn(`[Cache Migration] Failed to remove stale marker: ${err.message}`);
|
|
325
324
|
}
|
|
326
325
|
return false;
|
|
327
326
|
}
|
|
@@ -353,7 +352,7 @@ function cleanupOldCache(cachePath) {
|
|
|
353
352
|
throw err;
|
|
354
353
|
}
|
|
355
354
|
const diskstoreDirs = dirEntries.filter((dirEntry) => dirEntry.isDirectory() && dirEntry.name.startsWith("diskstore-")).map((dirEntry) => dirEntry.name);
|
|
356
|
-
|
|
355
|
+
logger.info(`[Cache Migration] Cleaning up ${diskstoreDirs.length} old cache directories`);
|
|
357
356
|
for (const dir of diskstoreDirs) {
|
|
358
357
|
const dirPath = path.join(cachePath, dir);
|
|
359
358
|
try {
|
|
@@ -362,7 +361,7 @@ function cleanupOldCache(cachePath) {
|
|
|
362
361
|
force: true
|
|
363
362
|
});
|
|
364
363
|
} catch (err) {
|
|
365
|
-
|
|
364
|
+
logger.warn(`[Cache Migration] Failed to remove ${dirPath}: ${err.message}`);
|
|
366
365
|
}
|
|
367
366
|
}
|
|
368
367
|
}
|
|
@@ -372,23 +371,23 @@ function cleanupOldCache(cachePath) {
|
|
|
372
371
|
*/
|
|
373
372
|
function cleanupBackup(backupPath, stats) {
|
|
374
373
|
if (stats.successCount === 0 && stats.failureCount === 0) {
|
|
375
|
-
|
|
374
|
+
logger.info(`[Cache Migration] No valid entries found (${stats.skippedExpired} expired only). Removing backup to save space.`);
|
|
376
375
|
try {
|
|
377
376
|
fs.rmSync(backupPath, {
|
|
378
377
|
recursive: true,
|
|
379
378
|
force: true
|
|
380
379
|
});
|
|
381
|
-
|
|
380
|
+
logger.info(`[Cache Migration] Backup removed: ${backupPath}`);
|
|
382
381
|
return true;
|
|
383
382
|
} catch (err) {
|
|
384
|
-
|
|
383
|
+
logger.warn(`[Cache Migration] Failed to remove backup ${backupPath}: ${err.message}`);
|
|
385
384
|
return false;
|
|
386
385
|
}
|
|
387
386
|
} else if (stats.failureCount > 0) {
|
|
388
|
-
|
|
387
|
+
logger.info(`[Cache Migration] Backup kept at ${backupPath} due to ${stats.failureCount} migration errors. You may want to investigate these failures.`);
|
|
389
388
|
return false;
|
|
390
389
|
} else {
|
|
391
|
-
|
|
390
|
+
logger.info(`[Cache Migration] Backup kept at ${backupPath} (migrated ${stats.successCount} valid entries). You can manually delete this backup if you no longer need it.`);
|
|
392
391
|
return false;
|
|
393
392
|
}
|
|
394
393
|
}
|
|
@@ -397,10 +396,10 @@ function cleanupBackup(backupPath, stats) {
|
|
|
397
396
|
* Migrates cache from cache-manager v4 (cache-manager-fs-hash) to v7 (keyv-file)
|
|
398
397
|
*/
|
|
399
398
|
function runMigration(cachePath, newCacheFilePath) {
|
|
400
|
-
|
|
399
|
+
logger.info("[Cache Migration] Starting cache migration from v4 to v7");
|
|
401
400
|
const lock = acquireMigrationLock(cachePath);
|
|
402
401
|
if (lock === null) {
|
|
403
|
-
|
|
402
|
+
logger.info("[Cache Migration] Another migration is in progress, skipping");
|
|
404
403
|
return {
|
|
405
404
|
success: true,
|
|
406
405
|
stats: {
|
|
@@ -414,7 +413,7 @@ function runMigration(cachePath, newCacheFilePath) {
|
|
|
414
413
|
}
|
|
415
414
|
try {
|
|
416
415
|
if (isMigrationComplete(cachePath, newCacheFilePath)) {
|
|
417
|
-
|
|
416
|
+
logger.info("[Cache Migration] Migration already completed, skipping");
|
|
418
417
|
return {
|
|
419
418
|
success: true,
|
|
420
419
|
stats: {
|
|
@@ -427,7 +426,7 @@ function runMigration(cachePath, newCacheFilePath) {
|
|
|
427
426
|
};
|
|
428
427
|
}
|
|
429
428
|
if (!hasOldCacheFormat(cachePath)) {
|
|
430
|
-
|
|
429
|
+
logger.info("[Cache Migration] No old cache format detected, skipping migration");
|
|
431
430
|
markMigrationComplete(cachePath, {
|
|
432
431
|
totalFiles: 0,
|
|
433
432
|
successCount: 0,
|
|
@@ -447,7 +446,7 @@ function runMigration(cachePath, newCacheFilePath) {
|
|
|
447
446
|
};
|
|
448
447
|
}
|
|
449
448
|
if (!checkDiskSpace(cachePath)) {
|
|
450
|
-
|
|
449
|
+
logger.error("[Cache Migration] Insufficient disk space, aborting migration");
|
|
451
450
|
return {
|
|
452
451
|
success: false,
|
|
453
452
|
stats: {
|
|
@@ -460,30 +459,30 @@ function runMigration(cachePath, newCacheFilePath) {
|
|
|
460
459
|
};
|
|
461
460
|
}
|
|
462
461
|
const backupPath = createBackup(cachePath);
|
|
463
|
-
|
|
462
|
+
logger.info("[Cache Migration] Reading old cache entries");
|
|
464
463
|
const { entries, stats } = readOldCacheEntries(cachePath);
|
|
465
|
-
|
|
464
|
+
logger.info(`[Cache Migration] Read ${stats.successCount} entries (${stats.failureCount} failures, ${stats.skippedExpired} expired)`);
|
|
466
465
|
if (stats.errors.length > 0) {
|
|
467
|
-
|
|
468
|
-
stats.errors.slice(0, 10).forEach((err) =>
|
|
469
|
-
if (stats.errors.length > 10)
|
|
466
|
+
logger.warn(`[Cache Migration] Encountered ${stats.errors.length} errors:`);
|
|
467
|
+
stats.errors.slice(0, 10).forEach((err) => logger.warn(` - ${err}`));
|
|
468
|
+
if (stats.errors.length > 10) logger.warn(` ... and ${stats.errors.length - 10} more errors`);
|
|
470
469
|
}
|
|
471
470
|
if (entries.size > 0) {
|
|
472
|
-
|
|
471
|
+
logger.info(`[Cache Migration] Writing ${entries.size} entries to new cache file: ${newCacheFilePath}`);
|
|
473
472
|
writeNewCacheFile(entries, newCacheFilePath);
|
|
474
|
-
} else
|
|
473
|
+
} else logger.info("[Cache Migration] No entries to migrate");
|
|
475
474
|
cleanupOldCache(cachePath);
|
|
476
475
|
const backupDeleted = cleanupBackup(backupPath, stats);
|
|
477
476
|
markMigrationComplete(cachePath, stats);
|
|
478
|
-
|
|
477
|
+
logger.info("[Cache Migration] Migration completed successfully");
|
|
479
478
|
return {
|
|
480
479
|
success: true,
|
|
481
480
|
stats,
|
|
482
481
|
backupPath: backupDeleted ? void 0 : backupPath
|
|
483
482
|
};
|
|
484
483
|
} catch (err) {
|
|
485
|
-
|
|
486
|
-
|
|
484
|
+
logger.error(`[Cache Migration] Migration failed: ${err.message}`);
|
|
485
|
+
logger.error(`[Cache Migration] Stack trace: ${err.stack}`);
|
|
487
486
|
return {
|
|
488
487
|
success: false,
|
|
489
488
|
stats: {
|
|
@@ -510,7 +509,6 @@ function shouldRunMigration(cachePath, newCacheFile) {
|
|
|
510
509
|
if (isMigrationComplete(cachePath, newCacheFile)) return false;
|
|
511
510
|
return hasOldCacheFormat(cachePath);
|
|
512
511
|
}
|
|
513
|
-
|
|
514
512
|
//#endregion
|
|
515
513
|
//#region src/cache.ts
|
|
516
514
|
var cache_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -541,23 +539,23 @@ function getCache() {
|
|
|
541
539
|
if (cacheType === "disk" && enabled) {
|
|
542
540
|
cachePath = getEnvString("PROMPTFOO_CACHE_PATH") || path.join(getConfigDirectoryPath(), "cache");
|
|
543
541
|
if (!fs.existsSync(cachePath)) {
|
|
544
|
-
|
|
542
|
+
logger.info(`Creating cache folder at ${cachePath}.`);
|
|
545
543
|
fs.mkdirSync(cachePath, { recursive: true });
|
|
546
544
|
}
|
|
547
545
|
const newCacheFile = path.join(cachePath, "cache.json");
|
|
548
546
|
if (shouldRunMigration(cachePath, newCacheFile)) {
|
|
549
|
-
|
|
547
|
+
logger.info("[Cache] Migrating cache from v4 to v7...");
|
|
550
548
|
try {
|
|
551
549
|
const result = runMigration(cachePath, newCacheFile);
|
|
552
550
|
if (result.success) {
|
|
553
|
-
|
|
554
|
-
if (result.backupPath)
|
|
551
|
+
logger.info(`[Cache] Migration completed: ${result.stats.successCount} entries migrated, ${result.stats.skippedExpired} expired`);
|
|
552
|
+
if (result.backupPath) logger.info(`[Cache] Backup kept at: ${result.backupPath}`);
|
|
555
553
|
} else {
|
|
556
|
-
|
|
554
|
+
logger.error(`[Cache] Migration failed: ${result.stats.errors.join(", ")}. Falling back to memory cache.`);
|
|
557
555
|
migrationFailed = true;
|
|
558
556
|
}
|
|
559
557
|
} catch (err) {
|
|
560
|
-
|
|
558
|
+
logger.error(`[Cache] Migration error: ${err.message}. Falling back to memory cache.`);
|
|
561
559
|
migrationFailed = true;
|
|
562
560
|
}
|
|
563
561
|
}
|
|
@@ -568,7 +566,7 @@ function getCache() {
|
|
|
568
566
|
});
|
|
569
567
|
stores.push(keyv);
|
|
570
568
|
} catch (err) {
|
|
571
|
-
|
|
569
|
+
logger.warn(`[Cache] Failed to initialize disk cache: ${err.message}. Using memory cache instead.`);
|
|
572
570
|
}
|
|
573
571
|
}
|
|
574
572
|
cacheInstance = createCache({
|
|
@@ -594,7 +592,7 @@ async function fetchAndReadBody(url, options, timeout, maxRetries, isIdempotent)
|
|
|
594
592
|
} catch (err) {
|
|
595
593
|
if (isTransientConnectionError(err) && bodyAttempt < maxBodyRetries) {
|
|
596
594
|
const backoffMs = Math.pow(2, bodyAttempt) * 1e3;
|
|
597
|
-
|
|
595
|
+
logger.debug("[Cache] Body stream failed with transient error, retrying", {
|
|
598
596
|
attempt: bodyAttempt + 1,
|
|
599
597
|
maxRetries: maxBodyRetries,
|
|
600
598
|
backoffMs,
|
|
@@ -669,16 +667,16 @@ async function fetchWithCache(url, options = {}, timeout = REQUEST_TIMEOUT_MS, f
|
|
|
669
667
|
}
|
|
670
668
|
if (!data) return;
|
|
671
669
|
if (format === "json" && parsedData?.error) {
|
|
672
|
-
|
|
670
|
+
logger.debug(`Not caching ${url} because it contains an 'error' key: ${parsedData.error}`);
|
|
673
671
|
return data;
|
|
674
672
|
}
|
|
675
|
-
|
|
673
|
+
logger.debug(`Storing ${url} response in cache with latencyMs=${fetchLatencyMs}: ${data}`);
|
|
676
674
|
return data;
|
|
677
675
|
} catch (err) {
|
|
678
676
|
throw new Error(`Error parsing response from ${url}: ${err.message}. Received text: ${responseText}`);
|
|
679
677
|
}
|
|
680
678
|
});
|
|
681
|
-
if (cached && cachedResponse)
|
|
679
|
+
if (cached && cachedResponse) logger.debug(`Returning cached response for ${url}: ${cachedResponse}`);
|
|
682
680
|
const parsedResponse = JSON.parse(cachedResponse ?? errorResponse);
|
|
683
681
|
return {
|
|
684
682
|
cached,
|
|
@@ -689,7 +687,7 @@ async function fetchWithCache(url, options = {}, timeout = REQUEST_TIMEOUT_MS, f
|
|
|
689
687
|
latencyMs: parsedResponse.latencyMs,
|
|
690
688
|
deleteFromCache: async () => {
|
|
691
689
|
await cache.del(cacheKey);
|
|
692
|
-
|
|
690
|
+
logger.debug(`Evicted from cache: ${cacheKey}`);
|
|
693
691
|
}
|
|
694
692
|
};
|
|
695
693
|
}
|
|
@@ -705,7 +703,7 @@ async function clearCache() {
|
|
|
705
703
|
function isCacheEnabled() {
|
|
706
704
|
return enabled;
|
|
707
705
|
}
|
|
708
|
-
|
|
709
706
|
//#endregion
|
|
710
707
|
export { fetchWithCache as a, enableCache as i, clearCache as n, getCache as o, disableCache as r, isCacheEnabled as s, cache_exports as t };
|
|
711
|
-
|
|
708
|
+
|
|
709
|
+
//# sourceMappingURL=cache-CG0SlR1d.js.map
|