promptfoo 0.120.27 → 0.121.2
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-B0pgC1oV.js +206 -0
- package/dist/src/{accounts-DVINui-2.js → accounts-Bm2D8Db9.js} +39 -34
- package/dist/src/{accounts-CPDRAMND.js → accounts-CiBLOnA7.js} +38 -33
- package/dist/src/{accounts-Fl2J3_Fu.cjs → accounts-gtkH-5KX.cjs} +77 -78
- package/dist/src/{agentic-utils-D922n6mm.js → agentic-utils-DS1g3GLF.js} +9 -10
- package/dist/src/{agents-BcsN_BgB.js → agents-9qiOy0ho.js} +16 -12
- package/dist/src/{agents-BXLmVsxR.js → agents-CBr9A01V.js} +37 -37
- package/dist/src/{agents-pMfppv9Z.js → agents-CmvBq8LV.js} +16 -18
- package/dist/src/{agents-hqgSV-3o.js → agents-D__IdAlg.js} +39 -40
- package/dist/src/{agents-BO2n8Z0d.cjs → agents-DbRtpYxR.cjs} +37 -40
- package/dist/src/{agents-BdUTAwi-.js → agents-DgF2zDag.js} +37 -42
- package/dist/src/{agents-DgJf2-ez.cjs → agents-Di9DKPzn.cjs} +16 -17
- package/dist/src/{agents-DNvSH78i.js → agents-cLXA8a_8.js} +17 -19
- package/dist/src/{aimlapi-DtgPI0nE.js → aimlapi-B4rcnZgv.js} +15 -17
- package/dist/src/{aimlapi-BE_Tg9Fl.cjs → aimlapi-BvlNH0gr.cjs} +15 -16
- package/dist/src/{aimlapi-DOib86oE.js → aimlapi-CnkC2HqE.js} +16 -18
- package/dist/src/{aimlapi-DTPACCB1.js → aimlapi-DHJU_kcV.js} +15 -4
- package/dist/src/app/assets/index-4LKxG2CG.js +439 -0
- package/dist/src/app/assets/{index-NCn4eVBv.css → index-C3zcsZFQ.css} +1 -1
- package/dist/src/app/assets/vendor-charts-BnDWwBlI.js +36 -0
- package/dist/src/app/index.html +3 -3
- package/dist/src/app/tsconfig.app.tsbuildinfo +1 -1
- package/dist/src/{audio-BnRUGAm_.js → audio-Bkv46et0.js} +6 -5
- package/dist/src/{audio-Cwo68yZS.cjs → audio-CGMyULza.cjs} +6 -7
- package/dist/src/{audio-MSRki4JU.js → audio-ClI_AFre.js} +6 -8
- package/dist/src/{audio-BRYU0BFo.js → audio-Dz3z7s3J.js} +7 -9
- package/dist/src/{base-pGVmXNl4.cjs → base-CGrhspbK.cjs} +36 -38
- package/dist/src/{base-h961VXYk.js → base-CpjcHe4e.js} +11 -13
- package/dist/src/base-DLKtKMFh.js +193 -0
- package/dist/src/{base-XB2tDJrB.js → base-Dy1V8--Z.js} +11 -13
- package/dist/src/blobs-BDbfYdrJ.js +236 -0
- package/dist/src/{blobs-CR5C4Ihh.js → blobs-CBO20krR.js} +9 -12
- package/dist/src/{blobs-BM_e6hCa.js → blobs-CMHN0Qcz.js} +9 -12
- package/dist/src/{blobs-B-KQAFhX.cjs → blobs-D23XLin-.cjs} +34 -37
- package/dist/src/{cache-jsiwsAJv.js → cache-BVeDlD87.js} +132 -117
- package/dist/src/{cache-CIpsoBZR.js → cache-C4Nxf52C.js} +132 -118
- package/dist/src/cache-CeUpFm3M.cjs +5 -0
- package/dist/src/{cache-BTVYfbka.cjs → cache-Dh5WtQps.cjs} +182 -168
- package/dist/src/cache-i1P6crbO.js +756 -0
- package/dist/src/cache-n-RCJ-hL.js +6 -0
- package/dist/src/{chat-BcPjZXIp.js → chat-BiKyneZl.js} +45 -46
- package/dist/src/{chat-D31K7C4u.cjs → chat-C1Qst7jL.cjs} +20 -21
- package/dist/src/{chat-B84t99NW.js → chat-C2jrdPMx.js} +20 -9
- package/dist/src/{chat-BE44YOc6.cjs → chat-CgF-J-Jj.cjs} +65 -66
- package/dist/src/{chat-DwWifjxi.js → chat-CzkrVDfz.js} +20 -22
- package/dist/src/chat-DJIw17u0.js +766 -0
- package/dist/src/{chat-CcUCysjU.js → chat-DqxYYtWA.js} +45 -46
- package/dist/src/{chat-DZM2GUHO.js → chat-qmatte1u.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-Apiy0iaz.js} +31 -31
- package/dist/src/{claude-agent-sdk-C-IOTPfo.js → claude-agent-sdk-D2bJee9S.js} +31 -29
- package/dist/src/{claude-agent-sdk-C9SiaQub.cjs → claude-agent-sdk-D9Z5Pr9X.cjs} +31 -28
- package/dist/src/{claude-agent-sdk-CiluSyW1.js → claude-agent-sdk-DfCoW0E6.js} +33 -20
- package/dist/src/cloud-BBh91EUK.js +4 -0
- package/dist/src/{cloud-CZ-q9Ier.js → cloud-C0dlstV_.js} +7 -9
- package/dist/src/{cloudflare-ai-BahKHyhh.js → cloudflare-ai-8TDxHR0x.js} +16 -18
- package/dist/src/{cloudflare-ai-v_qZD6_q.js → cloudflare-ai-BxAGvfju.js} +17 -19
- package/dist/src/{cloudflare-ai-Dfahv5SY.cjs → cloudflare-ai-CknbZ5LJ.cjs} +16 -17
- package/dist/src/{cloudflare-ai-Dxyt50Nl.js → cloudflare-ai-g7PB6VHR.js} +16 -4
- package/dist/src/{cloudflare-gateway-Bi_FpOFy.js → cloudflare-gateway-B9HWA5wf.js} +23 -23
- package/dist/src/{cloudflare-gateway-BPWoZIzJ.cjs → cloudflare-gateway-BSnDmHYo.cjs} +21 -22
- package/dist/src/{cloudflare-gateway-C0guUNwk.js → cloudflare-gateway-CKDb4dJ8.js} +26 -14
- package/dist/src/{cloudflare-gateway-btS7h1OZ.js → cloudflare-gateway-CP9QEWYS.js} +21 -25
- 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-DzrR3SR_.js → cometapi-BL9yvj_f.js} +16 -4
- package/dist/src/{cometapi-DIO64tf4.cjs → cometapi-C4xSqeID.cjs} +21 -22
- package/dist/src/{cometapi-C9EEpJzT.js → cometapi-CUQq3H_a.js} +21 -24
- package/dist/src/{cometapi-DkNBMk0G.js → cometapi-DFNiKmSz.js} +17 -19
- package/dist/src/{completion-CG29bfKX.js → completion-5MzrpJxT.js} +11 -13
- package/dist/src/{completion-CCRT4kX1.cjs → completion-CM6oK8PS.cjs} +21 -23
- package/dist/src/{completion-Bgf1VJoq.js → completion-DZ083F31.js} +11 -13
- package/dist/src/completion-qRoZAYRB.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-Bb5dcxr8.js} +18 -20
- package/dist/src/{docker-B81N0t4e.js → docker-BvfL2BrW.js} +19 -21
- package/dist/src/{docker-DNcLR4Ig.cjs → docker-DcF2pRrj.cjs} +18 -19
- package/dist/src/{docker-egERKxCF.js → docker-ExVyLp0S.js} +18 -7
- 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-B3r2CVXr.js +15 -0
- package/dist/src/{eval-C-Nr6wX_.js → eval-Dg2nG4v2.js} +47 -54
- package/dist/src/evalResult-5xwYnECe.js +12 -0
- package/dist/src/evalResult-71lY93Kj.cjs +10 -0
- package/dist/src/{evalResult-DXMWJ3sx.js → evalResult-BBRNtX4I.js} +10 -11
- package/dist/src/{evalResult-4BzI2tmj.js → evalResult-BDMqrapS.js} +16 -12
- package/dist/src/evalResult-Dx5P5cIv.js +10 -0
- package/dist/src/{evalResult-CX8wQecI.cjs → evalResult-fuaI8HkH.cjs} +20 -21
- package/dist/src/{evaluator-8aGyV12L.js → evaluator-BhoWwp5b.js} +211 -235
- package/dist/src/evaluator-Jx6bRZV6.js +36 -0
- package/dist/src/{extractor-V5x_m1i0.js → extractor-C0EVHewb.js} +22 -24
- package/dist/src/extractor-D25qpmGX.js +374 -0
- package/dist/src/{extractor-CD5yKL-G.js → extractor-DReVID0K.js} +22 -24
- package/dist/src/{extractor-C031XmTA.cjs → extractor-pYLLi3wS.cjs} +37 -39
- package/dist/src/{fetch-BmbD-v1L.cjs → fetch-BPkYtG8K.cjs} +244 -277
- package/dist/src/fetch-BxNb_Lp3.js +5 -0
- package/dist/src/{fetch-D3OHf-lV.js → fetch-Cwxnd8zz.js} +36 -44
- package/dist/src/{fetch-CXZI9RRr.js → fetch-Dxpd4_sr.js} +23 -35
- package/dist/src/fetch-HaqdX7U1.js +780 -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--1y2u9HO.js → graders-BTeBGqjJ.js} +349 -397
- package/dist/src/graders-B_pgMLS2.js +34 -0
- package/dist/src/{graders-DTeBrzWp.js → graders-Bj_Odv7c.js} +349 -397
- package/dist/src/graders-DErokPDO.cjs +32 -0
- package/dist/src/graders-DP7KFFo-.js +13466 -0
- package/dist/src/graders-DR_uNe54.js +32 -0
- package/dist/src/{graders-DohM2dir.cjs → graders-DU49_J8Y.cjs} +684 -732
- package/dist/src/graders-w3176Wz-.js +32 -0
- package/dist/src/{image-B0U4Hqll.js → image-B02ogr_b.js} +7 -9
- package/dist/src/{image-DmE-niFE.js → image-B0h9VEMc.js} +6 -5
- package/dist/src/{image-CuKHuccK.cjs → image-BLmROtN3.cjs} +29 -30
- package/dist/src/{image-DNEIf_aI.js → image-Bb4vWQLM.js} +6 -8
- package/dist/src/{image-DpKl2F15.cjs → image-C1madmKh.cjs} +6 -7
- package/dist/src/{image-C3wHC9_h.js → image-CHfWvljl.js} +9 -10
- package/dist/src/{image-O1u4bCFg.js → image-DS-o-0ph.js} +9 -10
- package/dist/src/image-Dpxa1Jt6.js +257 -0
- package/dist/src/index.cjs +615 -695
- package/dist/src/index.d.cts +271 -7
- package/dist/src/index.d.ts +271 -3
- package/dist/src/index.js +580 -664
- 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-CEzQobWX.js → knowledgeBase-B3OoKIej.js} +14 -9
- package/dist/src/{knowledgeBase-Be_zyW4L.js → knowledgeBase-CYTLHOt1.js} +16 -16
- package/dist/src/{knowledgeBase-BZ41IFwq.js → knowledgeBase-D33Ty2l6.js} +14 -18
- package/dist/src/{knowledgeBase-D-5BMXlr.cjs → knowledgeBase-DOO_BM9b.cjs} +14 -15
- package/dist/src/{litellm-DnbRJ2if.js → litellm-AaeZcZQF.js} +18 -19
- package/dist/src/{litellm-hUSNM_M2.cjs → litellm-I_hbp_dc.cjs} +17 -17
- package/dist/src/{litellm-CRDqPhNI.js → litellm-NbjknEh6.js} +17 -18
- package/dist/src/{litellm-9vR8zpfU.js → litellm-TrljxD9G.js} +17 -5
- 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-4blv9iZ2.js → luma-ray-BS2_tY8L.js} +22 -21
- package/dist/src/{luma-ray-drvgdpP9.js → luma-ray-DDsjcgZZ.js} +20 -13
- package/dist/src/{luma-ray-Hm3d6VJE.cjs → luma-ray-Due0n7di.cjs} +20 -21
- package/dist/src/{luma-ray-B2__8lYH.js → luma-ray-f6I2fft-.js} +20 -23
- package/dist/src/main.js +1170 -1321
- package/dist/src/{messages-Uee41Mj5.js → messages-BS17jdMx.js} +22 -24
- package/dist/src/{messages-XhiwCbi4.cjs → messages-Bs1kC7P4.cjs} +32 -34
- package/dist/src/{messages-CGPPidQr.js → messages-D0lx5qK7.js} +22 -24
- package/dist/src/messages-ZJk778GH.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-Bmni6skY.js} +17 -10
- package/dist/src/{modelslab-E9gO-bYd.js → modelslab-Bx9IrZfS.js} +18 -20
- package/dist/src/{modelslab-lUVW0cmB.cjs → modelslab-CoUX6Jc_.cjs} +17 -18
- package/dist/src/{modelslab-ClBkr8_9.js → modelslab-DRb74SP4.js} +17 -19
- package/dist/src/{nova-reel-Dk8jNpId.js → nova-reel-BfPq-0Yk.js} +20 -13
- package/dist/src/{nova-reel-D8CuO6QH.cjs → nova-reel-C_QM18Xn.cjs} +20 -21
- package/dist/src/{nova-reel-u2eF2Cxm.js → nova-reel-D_W1tjMH.js} +22 -21
- package/dist/src/{nova-reel-P9bwvtYX.js → nova-reel-bgjxilYW.js} +20 -23
- package/dist/src/{nova-sonic-CK2rAiKi.js → nova-sonic-CFb5GYhg.js} +30 -26
- package/dist/src/{nova-sonic-BaqWlkds.js → nova-sonic-DIGQNR07.js} +30 -31
- package/dist/src/{nova-sonic-yZapPLv7.js → nova-sonic-De1HW5fD.js} +31 -32
- package/dist/src/{nova-sonic-Ds1C-dpm.cjs → nova-sonic-zfcljeRp.cjs} +30 -31
- 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-B6qqDr_u.cjs → openclaw-CSugPYAr.cjs} +188 -130
- package/dist/src/{openclaw-A-3_loM7.js → openclaw-DiSz3I5L.js} +180 -109
- package/dist/src/{openclaw-a3lylB-V.js → openclaw-DuvJKEW5.js} +178 -124
- package/dist/src/{openclaw-COn6QzDi.js → openclaw-tiVYRtr-.js} +178 -122
- package/dist/src/opencode-sdk-0j6rTWNb.js +562 -0
- package/dist/src/opencode-sdk-B3CWY9h_.js +560 -0
- package/dist/src/opencode-sdk-BL764Jdi.cjs +564 -0
- package/dist/src/opencode-sdk-C2y6UkP2.js +560 -0
- package/dist/src/{otlpReceiver-oyf5wLGC.js → otlpReceiver-C99PPb48.js} +53 -51
- package/dist/src/{otlpReceiver-lXsYVbpj.cjs → otlpReceiver-CGq6LspY.cjs} +53 -55
- package/dist/src/{otlpReceiver-94URx7UW.js → otlpReceiver-CdNBdbsk.js} +53 -55
- package/dist/src/{otlpReceiver-BmmTiMjA.js → otlpReceiver-D89fR-rC.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-B7V0njNs.js +32 -0
- package/dist/src/providers-BEwbhv0X.js +30 -0
- package/dist/src/{providers-Iil64vk9.js → providers-BlqUifFg.js} +1543 -1676
- package/dist/src/providers-CH3C7zf7.js +30 -0
- package/dist/src/{providers-DHbjzW2e.cjs → providers-CgKOSgTR.cjs} +1896 -2029
- package/dist/src/providers-D8lF1sqW.js +33246 -0
- package/dist/src/{providers-BnFpbY_s.js → providers-Dk_6ocUX.js} +1536 -1669
- package/dist/src/providers-zyB6k_38.cjs +31 -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-BbOUOn2L.js} +8 -7
- package/dist/src/{quiverai-DCGSZt4U.js → quiverai-CIaELU_m.js} +8 -10
- package/dist/src/{quiverai-DiMVJQDz.cjs → quiverai-PdShCPox.cjs} +8 -9
- package/dist/src/{quiverai-fQNkExW4.js → quiverai-uH-dcTIr.js} +9 -11
- package/dist/src/{render-Dj1smHEb.js → render-Drod8m7K.js} +4 -5
- package/dist/src/responses-CB2jwoAr.js +660 -0
- package/dist/src/{responses-ghR3IOfy.cjs → responses-D8SBTL64.cjs} +39 -42
- package/dist/src/{responses-DOAFFENS.js → responses-DIR9Ud3j.js} +24 -27
- package/dist/src/{responses-CxzoQoBe.js → responses-WNGNYe3K.js} +24 -27
- 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-CNBxx5CJ.js} +75 -70
- package/dist/src/{sagemaker-CcxhlOAR.js → sagemaker-CemTFp2h.js} +75 -79
- package/dist/src/{sagemaker-77zbJ2Q2.cjs → sagemaker-Cl28mZU2.cjs} +75 -76
- package/dist/src/{sagemaker-DuM71dVU.js → sagemaker-YSyBXQQh.js} +77 -77
- package/dist/src/{scanner-DJYiSXQj.js → scanner-BsBlNXNn.js} +100 -121
- package/dist/src/server/index.js +5520 -67427
- package/dist/src/{server-B5v33lvE.cjs → server-C_7Ax-hA.cjs} +57 -67
- package/dist/src/{server-BJ4m4f1D.js → server-CqzrVGpF.js} +26 -29
- package/dist/src/server-CuxBbeSY.js +229 -0
- package/dist/src/server-DA4Cyrrq.js +7 -0
- package/dist/src/server-Dulb-4-K.cjs +5 -0
- package/dist/src/{server-RV_i_YX5.js → server-VWgWb00X.js} +19 -24
- package/dist/src/{signal-BW33JuId.js → signal-4U3mfRvL.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-CXGFv4aR.js +228 -0
- package/dist/src/store-CXS-Q_91.js +6 -0
- package/dist/src/{store-D7CgQzAR.cjs → store-DLlFCC4h.cjs} +44 -45
- package/dist/src/{store-DJNsD1iC.js → store-DXilxTl-.js} +40 -36
- package/dist/src/{store-s3SftUwF.js → store-Dim__MDd.js} +34 -35
- package/dist/src/store-eYkaKMwq.cjs +5 -0
- package/dist/src/{tables-DfTsNN7X.js → tables-6YKwjN9-.js} +19 -21
- package/dist/src/tables-DLJPUdUE.js +288 -0
- package/dist/src/{tables-BKTmd6u7.cjs → tables-DPi7wKeM.cjs} +89 -91
- package/dist/src/{tables-DMegD0Xf.js → tables-gftXzE9I.js} +21 -23
- package/dist/src/telemetry-BpMfhthR.cjs +5 -0
- package/dist/src/{telemetry--WAdAfVi.js → telemetry-CMrFgtPB.js} +11 -13
- package/dist/src/telemetry-Cps3mIU-.js +171 -0
- package/dist/src/{telemetry-DQgVBCAb.cjs → telemetry-DaX14Chu.cjs} +21 -24
- package/dist/src/{telemetry-BedSm-bZ.js → telemetry-Dthj_BbD.js} +17 -14
- package/dist/src/telemetry-Dw38hanS.js +7 -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-mYS9vd5v.js → transcription-BNYURcXg.js} +14 -7
- package/dist/src/{transcription-X2-B4vkX.js → transcription-B_OdaHp7.js} +14 -16
- package/dist/src/{transcription-BO1AHegO.cjs → transcription-NLVG9MT1.cjs} +14 -15
- package/dist/src/{transcription-lzBLiTFJ.js → transcription-s6A-bNrZ.js} +15 -17
- package/dist/src/{transform-B1Hi5lWS.cjs → transform-CzK1Q0zl.cjs} +24 -26
- package/dist/src/{transform-DeGlxb0D.js → transform-D5HsjduX.js} +39 -47
- package/dist/src/{transform-CYDILYDe.js → transform-DECvGmzp.js} +15 -13
- package/dist/src/transform-DTGDnAzW.js +6 -0
- package/dist/src/{transform-BEgStbHK.js → transform-DilY9wbS.js} +10 -12
- package/dist/src/{transform-D5PjiWiZ.cjs → transform-DuHvhZpj.cjs} +179 -187
- package/dist/src/transform-aa6tmVpZ.js +216 -0
- package/dist/src/transform-m3qNw4KP.cjs +5 -0
- package/dist/src/transform-uAytVuyX.js +1506 -0
- package/dist/src/{transform-Dfl89yi4.js → transform-vNucnNr0.js} +39 -47
- 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-DWNf48sT.cjs → types-C_7nyzr1.cjs} +538 -574
- package/dist/src/{types-CXQduE9o.js → types-Cbd8uOMq.js} +68 -100
- package/dist/src/types-CzW2QFyi.js +3288 -0
- package/dist/src/{types-C5hEkb-x.js → types-DmyIJ-sR.js} +63 -99
- package/dist/src/{util-CoQjmE3u.js → util-B3xGByQh.js} +4 -5
- package/dist/src/{util-aLhtl3fe.cjs → util-B9vlHIIh.cjs} +208 -223
- package/dist/src/{util-Du96oyYS.js → util-BHGHw5G1.js} +4 -5
- package/dist/src/{util-DQ984syk.js → util-BRYkYPTd.js} +36 -51
- package/dist/src/{util-D9eLdGfa.js → util-BV4XUC0n.js} +5 -6
- package/dist/src/util-Bv6uGDfH.js +293 -0
- package/dist/src/{util-1wWM599Z.cjs → util-BzMcevZc.cjs} +50 -51
- package/dist/src/{util-_h4pVqrz.js → util-C1CeHl-P.js} +36 -51
- package/dist/src/{util-Bm_-UMD_.js → util-CMy69ZgQ.js} +5 -6
- package/dist/src/{util-CyUdMzV0.cjs → util-DGNOS1db.cjs} +34 -35
- package/dist/src/util-Dnmk2mBQ.js +599 -0
- package/dist/src/util-ZzmqNPlg.js +1426 -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 +38 -38
- package/dist/src/app/assets/index-B2D0bCSI.js +0 -439
- package/dist/src/app/assets/vendor-charts-CCl15Imd.js +0 -36
- 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,14 +1,13 @@
|
|
|
1
|
-
import { b as getEnvString, i as
|
|
2
|
-
import { d as maybeLoadToolsFromExternalFile, u as maybeLoadResponseFormatFromExternalFile } from "./util-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { n as withGenAISpan } from "./genaiTracer-
|
|
6
|
-
import { i as normalizeFinishReason, n as MCPClient } from "./chat-
|
|
7
|
-
import { a as createEmptyTokenUsage } from "./tokenUsageUtils-
|
|
8
|
-
import { n as transformMCPToolsToAnthropic } from "./transform-
|
|
9
|
-
import { a as parseMessages, i as outputFromMessage, n as calculateAnthropicCost, o as processAnthropicTools, r as getTokenUsage, t as ANTHROPIC_MODELS } from "./util-
|
|
1
|
+
import { b as getEnvString, i as logger, v as getEnvFloat, y as getEnvInt } from "./logger-CT3IKMKA.js";
|
|
2
|
+
import { d as maybeLoadToolsFromExternalFile, u as maybeLoadResponseFormatFromExternalFile } from "./util-BRYkYPTd.js";
|
|
3
|
+
import { C as transformTools, S as transformToolChoice } from "./fetch-Cwxnd8zz.js";
|
|
4
|
+
import { a as isCacheEnabled, i as getCache } from "./cache-C4Nxf52C.js";
|
|
5
|
+
import { n as withGenAISpan } from "./genaiTracer-D3fD9dNV.js";
|
|
6
|
+
import { i as normalizeFinishReason, n as MCPClient } from "./chat-DqxYYtWA.js";
|
|
7
|
+
import { a as createEmptyTokenUsage } from "./tokenUsageUtils-NYT-WKS6.js";
|
|
8
|
+
import { n as transformMCPToolsToAnthropic } from "./transform-vNucnNr0.js";
|
|
9
|
+
import { a as parseMessages, i as outputFromMessage, n as calculateAnthropicCost, o as processAnthropicTools, r as getTokenUsage, t as ANTHROPIC_MODELS } from "./util-BHGHw5G1.js";
|
|
10
10
|
import Anthropic, { APIError } from "@anthropic-ai/sdk";
|
|
11
|
-
|
|
12
11
|
//#region src/providers/anthropic/generic.ts
|
|
13
12
|
/**
|
|
14
13
|
* Generic provider class for Anthropic APIs
|
|
@@ -54,7 +53,6 @@ var AnthropicGenericProvider = class {
|
|
|
54
53
|
throw new Error("Not implemented: callApi must be implemented by subclasses");
|
|
55
54
|
}
|
|
56
55
|
};
|
|
57
|
-
|
|
58
56
|
//#endregion
|
|
59
57
|
//#region src/providers/anthropic/messages.ts
|
|
60
58
|
var AnthropicMessagesProvider = class AnthropicMessagesProvider extends AnthropicGenericProvider {
|
|
@@ -63,7 +61,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
63
61
|
static ANTHROPIC_MODELS = ANTHROPIC_MODELS;
|
|
64
62
|
static ANTHROPIC_MODELS_NAMES = ANTHROPIC_MODELS.map((model) => model.id);
|
|
65
63
|
constructor(modelName, options = {}) {
|
|
66
|
-
if (!AnthropicMessagesProvider.ANTHROPIC_MODELS_NAMES.includes(modelName))
|
|
64
|
+
if (!AnthropicMessagesProvider.ANTHROPIC_MODELS_NAMES.includes(modelName)) logger.warn(`Using unknown Anthropic model: ${modelName}`);
|
|
67
65
|
super(modelName, options);
|
|
68
66
|
const { id } = options;
|
|
69
67
|
this.id = id ? () => id : this.id;
|
|
@@ -146,7 +144,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
146
144
|
} } : {},
|
|
147
145
|
...typeof config?.extra_body === "object" && config.extra_body ? config.extra_body : {}
|
|
148
146
|
};
|
|
149
|
-
|
|
147
|
+
logger.debug("Calling Anthropic Messages API", { params });
|
|
150
148
|
const headers = { ...config.headers || {} };
|
|
151
149
|
let allBetaFeatures = [...config.beta || [], ...requiredBetaFeatures];
|
|
152
150
|
if (processedOutputFormat && !allBetaFeatures.includes("structured-outputs-2025-11-13")) allBetaFeatures.push("structured-outputs-2025-11-13");
|
|
@@ -157,7 +155,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
157
155
|
if (isCacheEnabled()) {
|
|
158
156
|
const cachedResponse = await cache.get(cacheKey);
|
|
159
157
|
if (cachedResponse) {
|
|
160
|
-
|
|
158
|
+
logger.debug(`Returning cached response for ${prompt}: ${cachedResponse}`);
|
|
161
159
|
try {
|
|
162
160
|
const parsedCachedResponse = JSON.parse(cachedResponse);
|
|
163
161
|
const finishReason = normalizeFinishReason(parsedCachedResponse.stop_reason);
|
|
@@ -165,7 +163,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
165
163
|
if (processedOutputFormat?.type === "json_schema" && typeof output === "string") try {
|
|
166
164
|
output = JSON.parse(output);
|
|
167
165
|
} catch (error) {
|
|
168
|
-
|
|
166
|
+
logger.error(`Failed to parse JSON output from structured outputs: ${error}`);
|
|
169
167
|
}
|
|
170
168
|
return {
|
|
171
169
|
output,
|
|
@@ -185,18 +183,18 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
185
183
|
try {
|
|
186
184
|
if (shouldStream) {
|
|
187
185
|
const finalMessage = await (await this.anthropic.messages.stream(params, { ...typeof headers === "object" && Object.keys(headers).length > 0 ? { headers } : {} })).finalMessage();
|
|
188
|
-
|
|
186
|
+
logger.debug(`Anthropic Messages API streaming complete`, { finalMessage });
|
|
189
187
|
if (isCacheEnabled()) try {
|
|
190
188
|
await cache.set(cacheKey, JSON.stringify(finalMessage));
|
|
191
189
|
} catch (err) {
|
|
192
|
-
|
|
190
|
+
logger.error(`Failed to cache response: ${String(err)}`);
|
|
193
191
|
}
|
|
194
192
|
const finishReason = normalizeFinishReason(finalMessage.stop_reason);
|
|
195
193
|
let output = outputFromMessage(finalMessage, config.showThinking ?? true);
|
|
196
194
|
if (processedOutputFormat?.type === "json_schema" && typeof output === "string") try {
|
|
197
195
|
output = JSON.parse(output);
|
|
198
196
|
} catch (error) {
|
|
199
|
-
|
|
197
|
+
logger.error(`Failed to parse JSON output from structured outputs: ${error}`);
|
|
200
198
|
}
|
|
201
199
|
return {
|
|
202
200
|
output,
|
|
@@ -206,18 +204,18 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
206
204
|
};
|
|
207
205
|
} else {
|
|
208
206
|
const response = await this.anthropic.messages.create(params, { ...typeof headers === "object" && Object.keys(headers).length > 0 ? { headers } : {} });
|
|
209
|
-
|
|
207
|
+
logger.debug(`Anthropic Messages API response`, { response });
|
|
210
208
|
if (isCacheEnabled()) try {
|
|
211
209
|
await cache.set(cacheKey, JSON.stringify(response));
|
|
212
210
|
} catch (err) {
|
|
213
|
-
|
|
211
|
+
logger.error(`Failed to cache response: ${String(err)}`);
|
|
214
212
|
}
|
|
215
213
|
const finishReason = normalizeFinishReason(response.stop_reason);
|
|
216
214
|
let output = outputFromMessage(response, config.showThinking ?? true);
|
|
217
215
|
if (processedOutputFormat?.type === "json_schema" && typeof output === "string") try {
|
|
218
216
|
output = JSON.parse(output);
|
|
219
217
|
} catch (error) {
|
|
220
|
-
|
|
218
|
+
logger.error(`Failed to parse JSON output from structured outputs: ${error}`);
|
|
221
219
|
}
|
|
222
220
|
return {
|
|
223
221
|
output,
|
|
@@ -227,7 +225,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
227
225
|
};
|
|
228
226
|
}
|
|
229
227
|
} catch (err) {
|
|
230
|
-
|
|
228
|
+
logger.error(`Anthropic Messages API call error: ${err instanceof Error ? err.message : String(err)}`);
|
|
231
229
|
if (err instanceof APIError && err.error) {
|
|
232
230
|
const errorDetails = err.error;
|
|
233
231
|
return { error: `API call error: ${errorDetails.error.message}, status ${err.status}, type ${errorDetails.error.type}` };
|
|
@@ -236,7 +234,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
236
234
|
}
|
|
237
235
|
}
|
|
238
236
|
};
|
|
239
|
-
|
|
240
237
|
//#endregion
|
|
241
238
|
export { AnthropicGenericProvider as n, AnthropicMessagesProvider as t };
|
|
242
|
-
|
|
239
|
+
|
|
240
|
+
//# sourceMappingURL=messages-BS17jdMx.js.map
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
const require_logger = require(
|
|
2
|
-
const require_util = require(
|
|
3
|
-
const require_fetch = require(
|
|
4
|
-
const require_cache = require(
|
|
5
|
-
const require_genaiTracer = require(
|
|
6
|
-
const require_chat = require(
|
|
7
|
-
const require_tokenUsageUtils = require(
|
|
8
|
-
const require_transform = require(
|
|
9
|
-
const require_util$1 = require(
|
|
1
|
+
const require_logger = require("./logger-Cp1GPUjj.cjs");
|
|
2
|
+
const require_util = require("./util-B9vlHIIh.cjs");
|
|
3
|
+
const require_fetch = require("./fetch-BPkYtG8K.cjs");
|
|
4
|
+
const require_cache = require("./cache-Dh5WtQps.cjs");
|
|
5
|
+
const require_genaiTracer = require("./genaiTracer-DN4dQywX.cjs");
|
|
6
|
+
const require_chat = require("./chat-CgF-J-Jj.cjs");
|
|
7
|
+
const require_tokenUsageUtils = require("./tokenUsageUtils-bVa1ga6f.cjs");
|
|
8
|
+
const require_transform = require("./transform-DuHvhZpj.cjs");
|
|
9
|
+
const require_util$1 = require("./util-DGNOS1db.cjs");
|
|
10
10
|
let _anthropic_ai_sdk = require("@anthropic-ai/sdk");
|
|
11
11
|
_anthropic_ai_sdk = require_logger.__toESM(_anthropic_ai_sdk);
|
|
12
|
-
|
|
13
12
|
//#region src/providers/anthropic/generic.ts
|
|
14
13
|
/**
|
|
15
14
|
* Generic provider class for Anthropic APIs
|
|
@@ -55,7 +54,6 @@ var AnthropicGenericProvider = class {
|
|
|
55
54
|
throw new Error("Not implemented: callApi must be implemented by subclasses");
|
|
56
55
|
}
|
|
57
56
|
};
|
|
58
|
-
|
|
59
57
|
//#endregion
|
|
60
58
|
//#region src/providers/anthropic/messages.ts
|
|
61
59
|
var AnthropicMessagesProvider = class AnthropicMessagesProvider extends AnthropicGenericProvider {
|
|
@@ -64,7 +62,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
64
62
|
static ANTHROPIC_MODELS = require_util$1.ANTHROPIC_MODELS;
|
|
65
63
|
static ANTHROPIC_MODELS_NAMES = require_util$1.ANTHROPIC_MODELS.map((model) => model.id);
|
|
66
64
|
constructor(modelName, options = {}) {
|
|
67
|
-
if (!AnthropicMessagesProvider.ANTHROPIC_MODELS_NAMES.includes(modelName)) require_logger.
|
|
65
|
+
if (!AnthropicMessagesProvider.ANTHROPIC_MODELS_NAMES.includes(modelName)) require_logger.logger.warn(`Using unknown Anthropic model: ${modelName}`);
|
|
68
66
|
super(modelName, options);
|
|
69
67
|
const { id } = options;
|
|
70
68
|
this.id = id ? () => id : this.id;
|
|
@@ -147,7 +145,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
147
145
|
} } : {},
|
|
148
146
|
...typeof config?.extra_body === "object" && config.extra_body ? config.extra_body : {}
|
|
149
147
|
};
|
|
150
|
-
require_logger.
|
|
148
|
+
require_logger.logger.debug("Calling Anthropic Messages API", { params });
|
|
151
149
|
const headers = { ...config.headers || {} };
|
|
152
150
|
let allBetaFeatures = [...config.beta || [], ...requiredBetaFeatures];
|
|
153
151
|
if (processedOutputFormat && !allBetaFeatures.includes("structured-outputs-2025-11-13")) allBetaFeatures.push("structured-outputs-2025-11-13");
|
|
@@ -158,7 +156,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
158
156
|
if (require_cache.isCacheEnabled()) {
|
|
159
157
|
const cachedResponse = await cache.get(cacheKey);
|
|
160
158
|
if (cachedResponse) {
|
|
161
|
-
require_logger.
|
|
159
|
+
require_logger.logger.debug(`Returning cached response for ${prompt}: ${cachedResponse}`);
|
|
162
160
|
try {
|
|
163
161
|
const parsedCachedResponse = JSON.parse(cachedResponse);
|
|
164
162
|
const finishReason = require_chat.normalizeFinishReason(parsedCachedResponse.stop_reason);
|
|
@@ -166,7 +164,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
166
164
|
if (processedOutputFormat?.type === "json_schema" && typeof output === "string") try {
|
|
167
165
|
output = JSON.parse(output);
|
|
168
166
|
} catch (error) {
|
|
169
|
-
require_logger.
|
|
167
|
+
require_logger.logger.error(`Failed to parse JSON output from structured outputs: ${error}`);
|
|
170
168
|
}
|
|
171
169
|
return {
|
|
172
170
|
output,
|
|
@@ -186,18 +184,18 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
186
184
|
try {
|
|
187
185
|
if (shouldStream) {
|
|
188
186
|
const finalMessage = await (await this.anthropic.messages.stream(params, { ...typeof headers === "object" && Object.keys(headers).length > 0 ? { headers } : {} })).finalMessage();
|
|
189
|
-
require_logger.
|
|
187
|
+
require_logger.logger.debug(`Anthropic Messages API streaming complete`, { finalMessage });
|
|
190
188
|
if (require_cache.isCacheEnabled()) try {
|
|
191
189
|
await cache.set(cacheKey, JSON.stringify(finalMessage));
|
|
192
190
|
} catch (err) {
|
|
193
|
-
require_logger.
|
|
191
|
+
require_logger.logger.error(`Failed to cache response: ${String(err)}`);
|
|
194
192
|
}
|
|
195
193
|
const finishReason = require_chat.normalizeFinishReason(finalMessage.stop_reason);
|
|
196
194
|
let output = require_util$1.outputFromMessage(finalMessage, config.showThinking ?? true);
|
|
197
195
|
if (processedOutputFormat?.type === "json_schema" && typeof output === "string") try {
|
|
198
196
|
output = JSON.parse(output);
|
|
199
197
|
} catch (error) {
|
|
200
|
-
require_logger.
|
|
198
|
+
require_logger.logger.error(`Failed to parse JSON output from structured outputs: ${error}`);
|
|
201
199
|
}
|
|
202
200
|
return {
|
|
203
201
|
output,
|
|
@@ -207,18 +205,18 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
207
205
|
};
|
|
208
206
|
} else {
|
|
209
207
|
const response = await this.anthropic.messages.create(params, { ...typeof headers === "object" && Object.keys(headers).length > 0 ? { headers } : {} });
|
|
210
|
-
require_logger.
|
|
208
|
+
require_logger.logger.debug(`Anthropic Messages API response`, { response });
|
|
211
209
|
if (require_cache.isCacheEnabled()) try {
|
|
212
210
|
await cache.set(cacheKey, JSON.stringify(response));
|
|
213
211
|
} catch (err) {
|
|
214
|
-
require_logger.
|
|
212
|
+
require_logger.logger.error(`Failed to cache response: ${String(err)}`);
|
|
215
213
|
}
|
|
216
214
|
const finishReason = require_chat.normalizeFinishReason(response.stop_reason);
|
|
217
215
|
let output = require_util$1.outputFromMessage(response, config.showThinking ?? true);
|
|
218
216
|
if (processedOutputFormat?.type === "json_schema" && typeof output === "string") try {
|
|
219
217
|
output = JSON.parse(output);
|
|
220
218
|
} catch (error) {
|
|
221
|
-
require_logger.
|
|
219
|
+
require_logger.logger.error(`Failed to parse JSON output from structured outputs: ${error}`);
|
|
222
220
|
}
|
|
223
221
|
return {
|
|
224
222
|
output,
|
|
@@ -228,7 +226,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
228
226
|
};
|
|
229
227
|
}
|
|
230
228
|
} catch (err) {
|
|
231
|
-
require_logger.
|
|
229
|
+
require_logger.logger.error(`Anthropic Messages API call error: ${err instanceof Error ? err.message : String(err)}`);
|
|
232
230
|
if (err instanceof _anthropic_ai_sdk.APIError && err.error) {
|
|
233
231
|
const errorDetails = err.error;
|
|
234
232
|
return { error: `API call error: ${errorDetails.error.message}, status ${err.status}, type ${errorDetails.error.type}` };
|
|
@@ -237,18 +235,18 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
237
235
|
}
|
|
238
236
|
}
|
|
239
237
|
};
|
|
240
|
-
|
|
241
238
|
//#endregion
|
|
242
|
-
Object.defineProperty(exports,
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
239
|
+
Object.defineProperty(exports, "AnthropicGenericProvider", {
|
|
240
|
+
enumerable: true,
|
|
241
|
+
get: function() {
|
|
242
|
+
return AnthropicGenericProvider;
|
|
243
|
+
}
|
|
247
244
|
});
|
|
248
|
-
Object.defineProperty(exports,
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
245
|
+
Object.defineProperty(exports, "AnthropicMessagesProvider", {
|
|
246
|
+
enumerable: true,
|
|
247
|
+
get: function() {
|
|
248
|
+
return AnthropicMessagesProvider;
|
|
249
|
+
}
|
|
253
250
|
});
|
|
254
|
-
|
|
251
|
+
|
|
252
|
+
//# sourceMappingURL=messages-Bs1kC7P4.cjs.map
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { C as getEnvString, S as getEnvInt, o as
|
|
3
|
-
import { S as transformTools, x as transformToolChoice } from "./fetch-
|
|
4
|
-
import { o as getCache, s as isCacheEnabled } from "./cache-
|
|
5
|
-
import { g as maybeLoadToolsFromExternalFile, h as maybeLoadResponseFormatFromExternalFile } from "./util-
|
|
6
|
-
import { n as withGenAISpan } from "./genaiTracer-
|
|
7
|
-
import { i as normalizeFinishReason, n as MCPClient } from "./chat-
|
|
8
|
-
import { a as createEmptyTokenUsage } from "./tokenUsageUtils-
|
|
9
|
-
import { n as transformMCPToolsToAnthropic } from "./transform-
|
|
10
|
-
import { a as parseMessages, i as outputFromMessage, n as calculateAnthropicCost, o as processAnthropicTools, r as getTokenUsage, t as ANTHROPIC_MODELS } from "./util-
|
|
2
|
+
import { C as getEnvString, S as getEnvInt, o as logger, x as getEnvFloat } from "./logger-KkObSCzq.js";
|
|
3
|
+
import { S as transformTools, x as transformToolChoice } from "./fetch-Dxpd4_sr.js";
|
|
4
|
+
import { o as getCache, s as isCacheEnabled } from "./cache-BVeDlD87.js";
|
|
5
|
+
import { g as maybeLoadToolsFromExternalFile, h as maybeLoadResponseFormatFromExternalFile } from "./util-C1CeHl-P.js";
|
|
6
|
+
import { n as withGenAISpan } from "./genaiTracer-C1rxGO8Q.js";
|
|
7
|
+
import { i as normalizeFinishReason, n as MCPClient } from "./chat-BiKyneZl.js";
|
|
8
|
+
import { a as createEmptyTokenUsage } from "./tokenUsageUtils-DflFMjS0.js";
|
|
9
|
+
import { n as transformMCPToolsToAnthropic } from "./transform-D5HsjduX.js";
|
|
10
|
+
import { a as parseMessages, i as outputFromMessage, n as calculateAnthropicCost, o as processAnthropicTools, r as getTokenUsage, t as ANTHROPIC_MODELS } from "./util-B3xGByQh.js";
|
|
11
11
|
import Anthropic, { APIError } from "@anthropic-ai/sdk";
|
|
12
|
-
|
|
13
12
|
//#region src/providers/anthropic/generic.ts
|
|
14
13
|
/**
|
|
15
14
|
* Generic provider class for Anthropic APIs
|
|
@@ -55,7 +54,6 @@ var AnthropicGenericProvider = class {
|
|
|
55
54
|
throw new Error("Not implemented: callApi must be implemented by subclasses");
|
|
56
55
|
}
|
|
57
56
|
};
|
|
58
|
-
|
|
59
57
|
//#endregion
|
|
60
58
|
//#region src/providers/anthropic/messages.ts
|
|
61
59
|
var AnthropicMessagesProvider = class AnthropicMessagesProvider extends AnthropicGenericProvider {
|
|
@@ -64,7 +62,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
64
62
|
static ANTHROPIC_MODELS = ANTHROPIC_MODELS;
|
|
65
63
|
static ANTHROPIC_MODELS_NAMES = ANTHROPIC_MODELS.map((model) => model.id);
|
|
66
64
|
constructor(modelName, options = {}) {
|
|
67
|
-
if (!AnthropicMessagesProvider.ANTHROPIC_MODELS_NAMES.includes(modelName))
|
|
65
|
+
if (!AnthropicMessagesProvider.ANTHROPIC_MODELS_NAMES.includes(modelName)) logger.warn(`Using unknown Anthropic model: ${modelName}`);
|
|
68
66
|
super(modelName, options);
|
|
69
67
|
const { id } = options;
|
|
70
68
|
this.id = id ? () => id : this.id;
|
|
@@ -147,7 +145,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
147
145
|
} } : {},
|
|
148
146
|
...typeof config?.extra_body === "object" && config.extra_body ? config.extra_body : {}
|
|
149
147
|
};
|
|
150
|
-
|
|
148
|
+
logger.debug("Calling Anthropic Messages API", { params });
|
|
151
149
|
const headers = { ...config.headers || {} };
|
|
152
150
|
let allBetaFeatures = [...config.beta || [], ...requiredBetaFeatures];
|
|
153
151
|
if (processedOutputFormat && !allBetaFeatures.includes("structured-outputs-2025-11-13")) allBetaFeatures.push("structured-outputs-2025-11-13");
|
|
@@ -158,7 +156,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
158
156
|
if (isCacheEnabled()) {
|
|
159
157
|
const cachedResponse = await cache.get(cacheKey);
|
|
160
158
|
if (cachedResponse) {
|
|
161
|
-
|
|
159
|
+
logger.debug(`Returning cached response for ${prompt}: ${cachedResponse}`);
|
|
162
160
|
try {
|
|
163
161
|
const parsedCachedResponse = JSON.parse(cachedResponse);
|
|
164
162
|
const finishReason = normalizeFinishReason(parsedCachedResponse.stop_reason);
|
|
@@ -166,7 +164,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
166
164
|
if (processedOutputFormat?.type === "json_schema" && typeof output === "string") try {
|
|
167
165
|
output = JSON.parse(output);
|
|
168
166
|
} catch (error) {
|
|
169
|
-
|
|
167
|
+
logger.error(`Failed to parse JSON output from structured outputs: ${error}`);
|
|
170
168
|
}
|
|
171
169
|
return {
|
|
172
170
|
output,
|
|
@@ -186,18 +184,18 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
186
184
|
try {
|
|
187
185
|
if (shouldStream) {
|
|
188
186
|
const finalMessage = await (await this.anthropic.messages.stream(params, { ...typeof headers === "object" && Object.keys(headers).length > 0 ? { headers } : {} })).finalMessage();
|
|
189
|
-
|
|
187
|
+
logger.debug(`Anthropic Messages API streaming complete`, { finalMessage });
|
|
190
188
|
if (isCacheEnabled()) try {
|
|
191
189
|
await cache.set(cacheKey, JSON.stringify(finalMessage));
|
|
192
190
|
} catch (err) {
|
|
193
|
-
|
|
191
|
+
logger.error(`Failed to cache response: ${String(err)}`);
|
|
194
192
|
}
|
|
195
193
|
const finishReason = normalizeFinishReason(finalMessage.stop_reason);
|
|
196
194
|
let output = outputFromMessage(finalMessage, config.showThinking ?? true);
|
|
197
195
|
if (processedOutputFormat?.type === "json_schema" && typeof output === "string") try {
|
|
198
196
|
output = JSON.parse(output);
|
|
199
197
|
} catch (error) {
|
|
200
|
-
|
|
198
|
+
logger.error(`Failed to parse JSON output from structured outputs: ${error}`);
|
|
201
199
|
}
|
|
202
200
|
return {
|
|
203
201
|
output,
|
|
@@ -207,18 +205,18 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
207
205
|
};
|
|
208
206
|
} else {
|
|
209
207
|
const response = await this.anthropic.messages.create(params, { ...typeof headers === "object" && Object.keys(headers).length > 0 ? { headers } : {} });
|
|
210
|
-
|
|
208
|
+
logger.debug(`Anthropic Messages API response`, { response });
|
|
211
209
|
if (isCacheEnabled()) try {
|
|
212
210
|
await cache.set(cacheKey, JSON.stringify(response));
|
|
213
211
|
} catch (err) {
|
|
214
|
-
|
|
212
|
+
logger.error(`Failed to cache response: ${String(err)}`);
|
|
215
213
|
}
|
|
216
214
|
const finishReason = normalizeFinishReason(response.stop_reason);
|
|
217
215
|
let output = outputFromMessage(response, config.showThinking ?? true);
|
|
218
216
|
if (processedOutputFormat?.type === "json_schema" && typeof output === "string") try {
|
|
219
217
|
output = JSON.parse(output);
|
|
220
218
|
} catch (error) {
|
|
221
|
-
|
|
219
|
+
logger.error(`Failed to parse JSON output from structured outputs: ${error}`);
|
|
222
220
|
}
|
|
223
221
|
return {
|
|
224
222
|
output,
|
|
@@ -228,7 +226,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
228
226
|
};
|
|
229
227
|
}
|
|
230
228
|
} catch (err) {
|
|
231
|
-
|
|
229
|
+
logger.error(`Anthropic Messages API call error: ${err instanceof Error ? err.message : String(err)}`);
|
|
232
230
|
if (err instanceof APIError && err.error) {
|
|
233
231
|
const errorDetails = err.error;
|
|
234
232
|
return { error: `API call error: ${errorDetails.error.message}, status ${err.status}, type ${errorDetails.error.type}` };
|
|
@@ -237,7 +235,7 @@ var AnthropicMessagesProvider = class AnthropicMessagesProvider extends Anthropi
|
|
|
237
235
|
}
|
|
238
236
|
}
|
|
239
237
|
};
|
|
240
|
-
|
|
241
238
|
//#endregion
|
|
242
239
|
export { AnthropicGenericProvider as n, AnthropicMessagesProvider as t };
|
|
243
|
-
|
|
240
|
+
|
|
241
|
+
//# sourceMappingURL=messages-D0lx5qK7.js.map
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { b as getEnvString, i as logger, v as getEnvFloat, y as getEnvInt } from "./logger-DLcq4dWf.js";
|
|
2
|
+
import { C as transformTools, S as transformToolChoice } from "./fetch-HaqdX7U1.js";
|
|
3
|
+
import { a as isCacheEnabled, i as getCache } from "./cache-i1P6crbO.js";
|
|
4
|
+
import { a as createEmptyTokenUsage } from "./tokenUsageUtils-BDGe-iyI.js";
|
|
5
|
+
import { n as withGenAISpan } from "./genaiTracer-70Z8BIuV.js";
|
|
6
|
+
import { D as maybeLoadResponseFormatFromExternalFile, O as maybeLoadToolsFromExternalFile } from "./util-ZzmqNPlg.js";
|
|
7
|
+
import { i as normalizeFinishReason, n as MCPClient } from "./chat-DJIw17u0.js";
|
|
8
|
+
import { n as transformMCPToolsToAnthropic } from "./transform-uAytVuyX.js";
|
|
9
|
+
import { a as parseMessages, i as outputFromMessage, n as calculateAnthropicCost, o as processAnthropicTools, r as getTokenUsage, t as ANTHROPIC_MODELS } from "./util-Bv6uGDfH.js";
|
|
10
|
+
import Anthropic, { APIError } from "@anthropic-ai/sdk";
|
|
11
|
+
//#region src/providers/anthropic/generic.ts
|
|
12
|
+
/**
|
|
13
|
+
* Generic provider class for Anthropic APIs
|
|
14
|
+
* Serves as a base class with shared functionality for all Anthropic providers
|
|
15
|
+
*/
|
|
16
|
+
var AnthropicGenericProvider = class {
|
|
17
|
+
modelName;
|
|
18
|
+
config;
|
|
19
|
+
env;
|
|
20
|
+
apiKey;
|
|
21
|
+
anthropic;
|
|
22
|
+
constructor(modelName, options = {}) {
|
|
23
|
+
const { config, id, env } = options;
|
|
24
|
+
this.env = env;
|
|
25
|
+
this.modelName = modelName;
|
|
26
|
+
this.config = config || {};
|
|
27
|
+
this.apiKey = this.getApiKey();
|
|
28
|
+
this.anthropic = new Anthropic({
|
|
29
|
+
apiKey: this.apiKey,
|
|
30
|
+
baseURL: this.getApiBaseUrl()
|
|
31
|
+
});
|
|
32
|
+
this.id = id ? () => id : this.id;
|
|
33
|
+
}
|
|
34
|
+
id() {
|
|
35
|
+
return `anthropic:${this.modelName}`;
|
|
36
|
+
}
|
|
37
|
+
toString() {
|
|
38
|
+
return `[Anthropic Provider ${this.modelName}]`;
|
|
39
|
+
}
|
|
40
|
+
requiresApiKey() {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
getApiKey() {
|
|
44
|
+
return this.config?.apiKey || this.env?.ANTHROPIC_API_KEY || getEnvString("ANTHROPIC_API_KEY");
|
|
45
|
+
}
|
|
46
|
+
getApiBaseUrl() {
|
|
47
|
+
return this.config?.apiBaseUrl || this.env?.ANTHROPIC_BASE_URL || getEnvString("ANTHROPIC_BASE_URL");
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Base implementation - should be overridden by specific provider implementations
|
|
51
|
+
*/
|
|
52
|
+
async callApi(_prompt, _context) {
|
|
53
|
+
throw new Error("Not implemented: callApi must be implemented by subclasses");
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
//#endregion
|
|
57
|
+
//#region src/providers/anthropic/messages.ts
|
|
58
|
+
var AnthropicMessagesProvider = class AnthropicMessagesProvider extends AnthropicGenericProvider {
|
|
59
|
+
mcpClient = null;
|
|
60
|
+
initializationPromise = null;
|
|
61
|
+
static ANTHROPIC_MODELS = ANTHROPIC_MODELS;
|
|
62
|
+
static ANTHROPIC_MODELS_NAMES = ANTHROPIC_MODELS.map((model) => model.id);
|
|
63
|
+
constructor(modelName, options = {}) {
|
|
64
|
+
if (!AnthropicMessagesProvider.ANTHROPIC_MODELS_NAMES.includes(modelName)) logger.warn(`Using unknown Anthropic model: ${modelName}`);
|
|
65
|
+
super(modelName, options);
|
|
66
|
+
const { id } = options;
|
|
67
|
+
this.id = id ? () => id : this.id;
|
|
68
|
+
if (this.config.mcp?.enabled) this.initializationPromise = this.initializeMCP();
|
|
69
|
+
}
|
|
70
|
+
async initializeMCP() {
|
|
71
|
+
this.mcpClient = new MCPClient(this.config.mcp);
|
|
72
|
+
await this.mcpClient.initialize();
|
|
73
|
+
}
|
|
74
|
+
async cleanup() {
|
|
75
|
+
if (this.mcpClient) {
|
|
76
|
+
await this.initializationPromise;
|
|
77
|
+
await this.mcpClient.cleanup();
|
|
78
|
+
this.mcpClient = null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
toString() {
|
|
82
|
+
if (!this.modelName) throw new Error("Anthropic model name is not set. Please provide a valid model name.");
|
|
83
|
+
return `[Anthropic Messages Provider ${this.modelName}]`;
|
|
84
|
+
}
|
|
85
|
+
async callApi(prompt, context) {
|
|
86
|
+
if (this.initializationPromise != null) await this.initializationPromise;
|
|
87
|
+
if (!this.apiKey) throw new Error("Anthropic API key is not set. Set the ANTHROPIC_API_KEY environment variable or add `apiKey` to the provider config.");
|
|
88
|
+
if (!this.modelName) throw new Error("Anthropic model name is not set. Please provide a valid model name.");
|
|
89
|
+
const spanContext = {
|
|
90
|
+
system: "anthropic",
|
|
91
|
+
operationName: "chat",
|
|
92
|
+
model: this.modelName,
|
|
93
|
+
providerId: this.id(),
|
|
94
|
+
maxTokens: this.config.max_tokens,
|
|
95
|
+
temperature: this.config.temperature,
|
|
96
|
+
testIndex: context?.test?.vars?.__testIdx,
|
|
97
|
+
promptLabel: context?.prompt?.label,
|
|
98
|
+
traceparent: context?.traceparent,
|
|
99
|
+
requestBody: prompt
|
|
100
|
+
};
|
|
101
|
+
const resultExtractor = (response) => {
|
|
102
|
+
const result = {};
|
|
103
|
+
if (response.tokenUsage) result.tokenUsage = {
|
|
104
|
+
prompt: response.tokenUsage.prompt,
|
|
105
|
+
completion: response.tokenUsage.completion,
|
|
106
|
+
total: response.tokenUsage.total,
|
|
107
|
+
cached: response.tokenUsage.cached
|
|
108
|
+
};
|
|
109
|
+
if (response.finishReason) result.finishReasons = [response.finishReason];
|
|
110
|
+
if (response.cached !== void 0) result.cacheHit = response.cached;
|
|
111
|
+
if (response.output !== void 0) result.responseBody = typeof response.output === "string" ? response.output : JSON.stringify(response.output);
|
|
112
|
+
return result;
|
|
113
|
+
};
|
|
114
|
+
return withGenAISpan(spanContext, () => this.callApiInternal(prompt, context), resultExtractor);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Internal implementation of callApi without tracing wrapper.
|
|
118
|
+
*/
|
|
119
|
+
async callApiInternal(prompt, context) {
|
|
120
|
+
const config = {
|
|
121
|
+
...this.config,
|
|
122
|
+
...context?.prompt?.config
|
|
123
|
+
};
|
|
124
|
+
const { system, extractedMessages, thinking } = parseMessages(prompt);
|
|
125
|
+
let mcpTools = [];
|
|
126
|
+
if (this.mcpClient) mcpTools = transformMCPToolsToAnthropic(this.mcpClient.getAllTools());
|
|
127
|
+
const { processedTools: processedConfigTools, requiredBetaFeatures } = processAnthropicTools(transformTools(await maybeLoadToolsFromExternalFile(config.tools, context?.vars) || [], "anthropic"));
|
|
128
|
+
const allTools = [...mcpTools, ...processedConfigTools];
|
|
129
|
+
const processedOutputFormat = maybeLoadResponseFormatFromExternalFile(config.output_format, context?.vars);
|
|
130
|
+
const shouldStream = config.stream ?? false;
|
|
131
|
+
const params = {
|
|
132
|
+
model: this.modelName,
|
|
133
|
+
...system ? { system } : {},
|
|
134
|
+
max_tokens: config?.max_tokens || getEnvInt("ANTHROPIC_MAX_TOKENS", config.thinking || thinking ? 2048 : 1024),
|
|
135
|
+
messages: extractedMessages,
|
|
136
|
+
stream: shouldStream,
|
|
137
|
+
temperature: config.thinking || thinking ? config.temperature : config.temperature || getEnvFloat("ANTHROPIC_TEMPERATURE", 0),
|
|
138
|
+
...allTools.length > 0 ? { tools: allTools } : {},
|
|
139
|
+
...config.tool_choice ? { tool_choice: transformToolChoice(config.tool_choice, "anthropic") } : {},
|
|
140
|
+
...config.thinking || thinking ? { thinking: config.thinking || thinking } : {},
|
|
141
|
+
...processedOutputFormat || config.effort ? { output_config: {
|
|
142
|
+
...processedOutputFormat ? { format: processedOutputFormat } : {},
|
|
143
|
+
...config.effort ? { effort: config.effort } : {}
|
|
144
|
+
} } : {},
|
|
145
|
+
...typeof config?.extra_body === "object" && config.extra_body ? config.extra_body : {}
|
|
146
|
+
};
|
|
147
|
+
logger.debug("Calling Anthropic Messages API", { params });
|
|
148
|
+
const headers = { ...config.headers || {} };
|
|
149
|
+
let allBetaFeatures = [...config.beta || [], ...requiredBetaFeatures];
|
|
150
|
+
if (processedOutputFormat && !allBetaFeatures.includes("structured-outputs-2025-11-13")) allBetaFeatures.push("structured-outputs-2025-11-13");
|
|
151
|
+
allBetaFeatures = [...new Set(allBetaFeatures)];
|
|
152
|
+
if (allBetaFeatures.length > 0) headers["anthropic-beta"] = allBetaFeatures.join(",");
|
|
153
|
+
const cache = await getCache();
|
|
154
|
+
const cacheKey = `anthropic:${JSON.stringify(params)}`;
|
|
155
|
+
if (isCacheEnabled()) {
|
|
156
|
+
const cachedResponse = await cache.get(cacheKey);
|
|
157
|
+
if (cachedResponse) {
|
|
158
|
+
logger.debug(`Returning cached response for ${prompt}: ${cachedResponse}`);
|
|
159
|
+
try {
|
|
160
|
+
const parsedCachedResponse = JSON.parse(cachedResponse);
|
|
161
|
+
const finishReason = normalizeFinishReason(parsedCachedResponse.stop_reason);
|
|
162
|
+
let output = outputFromMessage(parsedCachedResponse, config.showThinking ?? true);
|
|
163
|
+
if (processedOutputFormat?.type === "json_schema" && typeof output === "string") try {
|
|
164
|
+
output = JSON.parse(output);
|
|
165
|
+
} catch (error) {
|
|
166
|
+
logger.error(`Failed to parse JSON output from structured outputs: ${error}`);
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
output,
|
|
170
|
+
tokenUsage: getTokenUsage(parsedCachedResponse, true),
|
|
171
|
+
...finishReason && { finishReason },
|
|
172
|
+
cost: calculateAnthropicCost(this.modelName, config, parsedCachedResponse.usage?.input_tokens, parsedCachedResponse.usage?.output_tokens),
|
|
173
|
+
cached: true
|
|
174
|
+
};
|
|
175
|
+
} catch {
|
|
176
|
+
return {
|
|
177
|
+
output: cachedResponse,
|
|
178
|
+
tokenUsage: createEmptyTokenUsage()
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
try {
|
|
184
|
+
if (shouldStream) {
|
|
185
|
+
const finalMessage = await (await this.anthropic.messages.stream(params, { ...typeof headers === "object" && Object.keys(headers).length > 0 ? { headers } : {} })).finalMessage();
|
|
186
|
+
logger.debug(`Anthropic Messages API streaming complete`, { finalMessage });
|
|
187
|
+
if (isCacheEnabled()) try {
|
|
188
|
+
await cache.set(cacheKey, JSON.stringify(finalMessage));
|
|
189
|
+
} catch (err) {
|
|
190
|
+
logger.error(`Failed to cache response: ${String(err)}`);
|
|
191
|
+
}
|
|
192
|
+
const finishReason = normalizeFinishReason(finalMessage.stop_reason);
|
|
193
|
+
let output = outputFromMessage(finalMessage, config.showThinking ?? true);
|
|
194
|
+
if (processedOutputFormat?.type === "json_schema" && typeof output === "string") try {
|
|
195
|
+
output = JSON.parse(output);
|
|
196
|
+
} catch (error) {
|
|
197
|
+
logger.error(`Failed to parse JSON output from structured outputs: ${error}`);
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
output,
|
|
201
|
+
tokenUsage: getTokenUsage(finalMessage, false),
|
|
202
|
+
...finishReason && { finishReason },
|
|
203
|
+
cost: calculateAnthropicCost(this.modelName, config, finalMessage.usage?.input_tokens, finalMessage.usage?.output_tokens)
|
|
204
|
+
};
|
|
205
|
+
} else {
|
|
206
|
+
const response = await this.anthropic.messages.create(params, { ...typeof headers === "object" && Object.keys(headers).length > 0 ? { headers } : {} });
|
|
207
|
+
logger.debug(`Anthropic Messages API response`, { response });
|
|
208
|
+
if (isCacheEnabled()) try {
|
|
209
|
+
await cache.set(cacheKey, JSON.stringify(response));
|
|
210
|
+
} catch (err) {
|
|
211
|
+
logger.error(`Failed to cache response: ${String(err)}`);
|
|
212
|
+
}
|
|
213
|
+
const finishReason = normalizeFinishReason(response.stop_reason);
|
|
214
|
+
let output = outputFromMessage(response, config.showThinking ?? true);
|
|
215
|
+
if (processedOutputFormat?.type === "json_schema" && typeof output === "string") try {
|
|
216
|
+
output = JSON.parse(output);
|
|
217
|
+
} catch (error) {
|
|
218
|
+
logger.error(`Failed to parse JSON output from structured outputs: ${error}`);
|
|
219
|
+
}
|
|
220
|
+
return {
|
|
221
|
+
output,
|
|
222
|
+
tokenUsage: getTokenUsage(response, false),
|
|
223
|
+
...finishReason && { finishReason },
|
|
224
|
+
cost: calculateAnthropicCost(this.modelName, config, response.usage?.input_tokens, response.usage?.output_tokens)
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
} catch (err) {
|
|
228
|
+
logger.error(`Anthropic Messages API call error: ${err instanceof Error ? err.message : String(err)}`);
|
|
229
|
+
if (err instanceof APIError && err.error) {
|
|
230
|
+
const errorDetails = err.error;
|
|
231
|
+
return { error: `API call error: ${errorDetails.error.message}, status ${err.status}, type ${errorDetails.error.type}` };
|
|
232
|
+
}
|
|
233
|
+
return { error: `API call error: ${err instanceof Error ? err.message : String(err)}` };
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
//#endregion
|
|
238
|
+
export { AnthropicGenericProvider as n, AnthropicMessagesProvider as t };
|
|
239
|
+
|
|
240
|
+
//# sourceMappingURL=messages-ZJk778GH.js.map
|