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,123 +1,162 @@
|
|
|
1
|
-
|
|
2
|
-
import "./
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import "./
|
|
6
|
-
import "./
|
|
7
|
-
import "./
|
|
8
|
-
import "./util-
|
|
9
|
-
import "./
|
|
10
|
-
import "./
|
|
11
|
-
import "./
|
|
12
|
-
import
|
|
13
|
-
import "./
|
|
14
|
-
import { t as OpenAiResponsesProvider } from "./responses-CxzoQoBe.js";
|
|
15
|
-
import "./openai-CcN1B8Sb.js";
|
|
16
|
-
import "./util-Bm_-UMD_.js";
|
|
1
|
+
import { b as getEnvString, i as logger } from "./logger-DLcq4dWf.js";
|
|
2
|
+
import { P as VERSION, p as REQUEST_TIMEOUT_MS, t as fetchWithProxy } from "./fetch-HaqdX7U1.js";
|
|
3
|
+
import "./esm-CaIwzWR5.js";
|
|
4
|
+
import "./types-CzW2QFyi.js";
|
|
5
|
+
import "./cache-i1P6crbO.js";
|
|
6
|
+
import "./genaiTracer-70Z8BIuV.js";
|
|
7
|
+
import "./pythonUtils-D6fwaDSg.js";
|
|
8
|
+
import "./util-ZzmqNPlg.js";
|
|
9
|
+
import { t as OpenAiChatCompletionProvider } from "./chat-DJIw17u0.js";
|
|
10
|
+
import "./transform-uAytVuyX.js";
|
|
11
|
+
import { t as OpenAiResponsesProvider } from "./responses-CB2jwoAr.js";
|
|
12
|
+
import "./openai-j-sE2O7r.js";
|
|
13
|
+
import "./util-BV4XUC0n.js";
|
|
17
14
|
import fs from "fs";
|
|
18
15
|
import path from "path";
|
|
19
16
|
import os from "os";
|
|
20
17
|
import crypto from "crypto";
|
|
21
18
|
import WebSocket from "ws";
|
|
22
|
-
|
|
19
|
+
import JSON5 from "json5";
|
|
23
20
|
//#region src/providers/openclaw/shared.ts
|
|
24
21
|
const DEFAULT_GATEWAY_PORT = 18789;
|
|
25
22
|
const DEFAULT_GATEWAY_HOST = "127.0.0.1";
|
|
26
23
|
/**
|
|
27
|
-
* Strip JSON5 syntax (comments and trailing commas) for JSON.parse compatibility.
|
|
28
|
-
* Uses a state machine to avoid corrupting strings containing // or slash characters.
|
|
29
|
-
*/
|
|
30
|
-
function stripJson5Syntax(raw) {
|
|
31
|
-
let result = "";
|
|
32
|
-
let i = 0;
|
|
33
|
-
let inString = false;
|
|
34
|
-
let stringQuote = "";
|
|
35
|
-
let escape = false;
|
|
36
|
-
while (i < raw.length) {
|
|
37
|
-
const ch = raw[i];
|
|
38
|
-
if (inString) {
|
|
39
|
-
result += ch;
|
|
40
|
-
if (escape) escape = false;
|
|
41
|
-
else if (ch === "\\") escape = true;
|
|
42
|
-
else if (ch === stringQuote) inString = false;
|
|
43
|
-
i++;
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
if (ch === "\"" || ch === "'") {
|
|
47
|
-
inString = true;
|
|
48
|
-
stringQuote = ch;
|
|
49
|
-
result += ch;
|
|
50
|
-
i++;
|
|
51
|
-
} else if (ch === "/" && raw[i + 1] === "/") while (i < raw.length && raw[i] !== "\n") i++;
|
|
52
|
-
else if (ch === "/" && raw[i + 1] === "*") {
|
|
53
|
-
i += 2;
|
|
54
|
-
while (i < raw.length - 1 && !(raw[i] === "*" && raw[i + 1] === "/")) i++;
|
|
55
|
-
if (i < raw.length - 1 && raw[i] === "*" && raw[i + 1] === "/") i += 2;
|
|
56
|
-
} else if (ch === ",") {
|
|
57
|
-
let j = i + 1;
|
|
58
|
-
while (j < raw.length && (raw[j] === " " || raw[j] === " " || raw[j] === "\n" || raw[j] === "\r")) j++;
|
|
59
|
-
if (j < raw.length && (raw[j] === "}" || raw[j] === "]")) i++;
|
|
60
|
-
else {
|
|
61
|
-
result += ch;
|
|
62
|
-
i++;
|
|
63
|
-
}
|
|
64
|
-
} else {
|
|
65
|
-
result += ch;
|
|
66
|
-
i++;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return result;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
24
|
* Cached config to avoid re-reading the file multiple times during provider init.
|
|
73
25
|
*/
|
|
74
26
|
let cachedConfig;
|
|
27
|
+
let cachedConfigPath;
|
|
28
|
+
function resolveConfigPath(env) {
|
|
29
|
+
return env?.OPENCLAW_CONFIG_PATH || getEnvString("OPENCLAW_CONFIG_PATH") || path.join(os.homedir(), ".openclaw", "openclaw.json");
|
|
30
|
+
}
|
|
31
|
+
function normalizeGatewayUrl(url, transport) {
|
|
32
|
+
const trimmed = url.trim();
|
|
33
|
+
if (!trimmed) return;
|
|
34
|
+
if (transport === "http") {
|
|
35
|
+
if (trimmed.startsWith("wss://")) return `https://${trimmed.slice(6)}`;
|
|
36
|
+
if (trimmed.startsWith("ws://")) return `http://${trimmed.slice(5)}`;
|
|
37
|
+
return trimmed;
|
|
38
|
+
}
|
|
39
|
+
if (trimmed.startsWith("https://")) return `wss://${trimmed.slice(8)}`;
|
|
40
|
+
if (trimmed.startsWith("http://")) return `ws://${trimmed.slice(7)}`;
|
|
41
|
+
return trimmed;
|
|
42
|
+
}
|
|
43
|
+
function resolveGatewayHost(gatewayConfig) {
|
|
44
|
+
const bind = gatewayConfig?.bind?.trim();
|
|
45
|
+
const customBindHost = gatewayConfig?.customBindHost?.trim();
|
|
46
|
+
if (!bind || bind === "auto" || bind === "loopback" || bind === "lan" || bind === "tailnet" || bind === "0.0.0.0" || bind === "::" || bind === "127.0.0.1" || bind === "localhost" || bind === "::1") return DEFAULT_GATEWAY_HOST;
|
|
47
|
+
if (bind === "custom") {
|
|
48
|
+
if (!customBindHost || customBindHost === "0.0.0.0" || customBindHost === "::" || customBindHost === "127.0.0.1" || customBindHost === "localhost" || customBindHost === "::1") return DEFAULT_GATEWAY_HOST;
|
|
49
|
+
return customBindHost;
|
|
50
|
+
}
|
|
51
|
+
return bind;
|
|
52
|
+
}
|
|
53
|
+
function buildLocalGatewayUrl(gatewayConfig, transport) {
|
|
54
|
+
const scheme = transport === "ws" ? gatewayConfig?.tls?.enabled ? "wss" : "ws" : gatewayConfig?.tls?.enabled ? "https" : "http";
|
|
55
|
+
const port = gatewayConfig?.port ?? 18789;
|
|
56
|
+
return `${scheme}://${resolveGatewayHost(gatewayConfig)}:${port}`;
|
|
57
|
+
}
|
|
58
|
+
function resolveGatewayUrlFromConfig(openclawConfig, transport) {
|
|
59
|
+
const gatewayConfig = openclawConfig?.gateway;
|
|
60
|
+
if (!gatewayConfig) return;
|
|
61
|
+
if (gatewayConfig.mode === "remote") {
|
|
62
|
+
const remoteUrl = normalizeGatewayUrl(gatewayConfig.remote?.url ?? "", transport);
|
|
63
|
+
if (remoteUrl) return remoteUrl;
|
|
64
|
+
}
|
|
65
|
+
return buildLocalGatewayUrl(gatewayConfig, transport);
|
|
66
|
+
}
|
|
67
|
+
function toAuthSecret(kind, value) {
|
|
68
|
+
const trimmed = value?.trim();
|
|
69
|
+
return trimmed ? {
|
|
70
|
+
kind,
|
|
71
|
+
value: trimmed
|
|
72
|
+
} : void 0;
|
|
73
|
+
}
|
|
74
|
+
function resolveAuthSecretFromConfig(openclawConfig) {
|
|
75
|
+
const gatewayConfig = openclawConfig?.gateway;
|
|
76
|
+
const authMode = gatewayConfig?.auth?.mode?.trim();
|
|
77
|
+
const preferRemoteCredentials = gatewayConfig?.mode === "remote";
|
|
78
|
+
const localToken = toAuthSecret("token", gatewayConfig?.auth?.token);
|
|
79
|
+
const localPassword = toAuthSecret("password", gatewayConfig?.auth?.password);
|
|
80
|
+
const remoteToken = toAuthSecret("token", gatewayConfig?.remote?.token);
|
|
81
|
+
const remotePassword = toAuthSecret("password", gatewayConfig?.remote?.password);
|
|
82
|
+
if (preferRemoteCredentials) {
|
|
83
|
+
if (authMode === "password") return remotePassword || localPassword || remoteToken || localToken;
|
|
84
|
+
if (authMode === "token") return remoteToken || localToken || remotePassword || localPassword;
|
|
85
|
+
return remoteToken || remotePassword || localToken || localPassword;
|
|
86
|
+
}
|
|
87
|
+
if (authMode === "password") return localPassword || remotePassword || localToken || remoteToken;
|
|
88
|
+
if (authMode === "token") return localToken || remoteToken || localPassword || remotePassword;
|
|
89
|
+
return localToken || localPassword || remoteToken || remotePassword;
|
|
90
|
+
}
|
|
75
91
|
/**
|
|
76
|
-
* Read and parse the OpenClaw configuration file.
|
|
92
|
+
* Read and parse the active OpenClaw configuration file.
|
|
77
93
|
* Results are cached based on file modification time.
|
|
78
94
|
* Returns undefined if the file doesn't exist or can't be parsed.
|
|
79
95
|
*/
|
|
80
|
-
function readOpenClawConfig() {
|
|
81
|
-
const configPath =
|
|
96
|
+
function readOpenClawConfig(env) {
|
|
97
|
+
const configPath = resolveConfigPath(env);
|
|
82
98
|
try {
|
|
83
99
|
if (!fs.existsSync(configPath)) return;
|
|
84
100
|
const mtime = fs.statSync(configPath).mtimeMs;
|
|
85
|
-
if (cachedConfig && cachedConfig.mtime === mtime) return cachedConfig.config;
|
|
86
|
-
const
|
|
87
|
-
const config =
|
|
101
|
+
if (cachedConfig && cachedConfigPath === configPath && cachedConfig.mtime === mtime) return cachedConfig.config;
|
|
102
|
+
const raw = fs.readFileSync(configPath, "utf-8");
|
|
103
|
+
const config = JSON5.parse(raw);
|
|
88
104
|
cachedConfig = {
|
|
89
105
|
config,
|
|
90
106
|
mtime
|
|
91
107
|
};
|
|
108
|
+
cachedConfigPath = configPath;
|
|
92
109
|
return config;
|
|
93
110
|
} catch (err) {
|
|
94
|
-
|
|
111
|
+
logger.debug(`Failed to read OpenClaw config at ${configPath}: ${err}`);
|
|
95
112
|
return;
|
|
96
113
|
}
|
|
97
114
|
}
|
|
98
115
|
/**
|
|
99
|
-
* Auto-detect the OpenClaw gateway URL from config, env overrides, or
|
|
116
|
+
* Auto-detect the OpenClaw gateway URL from config, env overrides, or the active config file.
|
|
100
117
|
*/
|
|
101
118
|
function resolveGatewayUrl(config, env) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
return
|
|
119
|
+
return resolveGatewayTransportUrl(config, env, "http");
|
|
120
|
+
}
|
|
121
|
+
function resolveGatewayWsUrl(config, env) {
|
|
122
|
+
return resolveGatewayTransportUrl(config, env, "ws");
|
|
123
|
+
}
|
|
124
|
+
function resolveGatewayTransportUrl(config, env, transport) {
|
|
125
|
+
const configUrl = config?.gateway_url?.trim();
|
|
126
|
+
if (configUrl) return normalizeGatewayUrl(configUrl, transport) || configUrl;
|
|
127
|
+
const trimmedEnvUrl = (env?.OPENCLAW_GATEWAY_URL || getEnvString("OPENCLAW_GATEWAY_URL") || env?.CLAWDBOT_GATEWAY_URL || getEnvString("CLAWDBOT_GATEWAY_URL"))?.trim();
|
|
128
|
+
if (trimmedEnvUrl) return normalizeGatewayUrl(trimmedEnvUrl, transport) || trimmedEnvUrl;
|
|
129
|
+
const resolvedUrl = resolveGatewayUrlFromConfig(readOpenClawConfig(env), transport);
|
|
130
|
+
if (resolvedUrl) return resolvedUrl;
|
|
131
|
+
return `${transport === "ws" ? "ws" : "http"}://${DEFAULT_GATEWAY_HOST}:${DEFAULT_GATEWAY_PORT}`;
|
|
132
|
+
}
|
|
133
|
+
function resolveAuthSecret(config, env) {
|
|
134
|
+
if (config?.auth_token) return {
|
|
135
|
+
kind: "token",
|
|
136
|
+
value: config.auth_token
|
|
137
|
+
};
|
|
138
|
+
if (config?.auth_password) return {
|
|
139
|
+
kind: "password",
|
|
140
|
+
value: config.auth_password
|
|
141
|
+
};
|
|
142
|
+
const envToken = env?.OPENCLAW_GATEWAY_TOKEN || getEnvString("OPENCLAW_GATEWAY_TOKEN") || env?.CLAWDBOT_GATEWAY_TOKEN || getEnvString("CLAWDBOT_GATEWAY_TOKEN");
|
|
143
|
+
if (envToken) return {
|
|
144
|
+
kind: "token",
|
|
145
|
+
value: envToken
|
|
146
|
+
};
|
|
147
|
+
const envPassword = env?.OPENCLAW_GATEWAY_PASSWORD || getEnvString("OPENCLAW_GATEWAY_PASSWORD") || env?.CLAWDBOT_GATEWAY_PASSWORD || getEnvString("CLAWDBOT_GATEWAY_PASSWORD");
|
|
148
|
+
if (envPassword) return {
|
|
149
|
+
kind: "password",
|
|
150
|
+
value: envPassword
|
|
151
|
+
};
|
|
152
|
+
return resolveAuthSecretFromConfig(readOpenClawConfig(env));
|
|
112
153
|
}
|
|
113
154
|
/**
|
|
114
|
-
* Auto-detect the OpenClaw gateway
|
|
155
|
+
* Auto-detect the OpenClaw gateway bearer secret from config, env overrides, or the active
|
|
156
|
+
* config file. OpenClaw accepts either a token or password as the HTTP bearer secret.
|
|
115
157
|
*/
|
|
116
158
|
function resolveAuthToken(config, env) {
|
|
117
|
-
|
|
118
|
-
const envToken = env?.OPENCLAW_GATEWAY_TOKEN || getEnvString("OPENCLAW_GATEWAY_TOKEN");
|
|
119
|
-
if (envToken) return envToken;
|
|
120
|
-
return readOpenClawConfig()?.gateway?.auth?.token;
|
|
159
|
+
return resolveAuthSecret(config, env)?.value;
|
|
121
160
|
}
|
|
122
161
|
/**
|
|
123
162
|
* Build common OpenClaw headers for agent-id and session-key.
|
|
@@ -152,7 +191,6 @@ function buildOpenClawProviderOptions(agentId, providerOptions) {
|
|
|
152
191
|
}
|
|
153
192
|
};
|
|
154
193
|
}
|
|
155
|
-
|
|
156
194
|
//#endregion
|
|
157
195
|
//#region src/providers/openclaw/agent.ts
|
|
158
196
|
const OPENCLAW_PROTOCOL_VERSION = 3;
|
|
@@ -178,7 +216,8 @@ const OPENCLAW_PROTOCOL_VERSION = 3;
|
|
|
178
216
|
var OpenClawAgentProvider = class {
|
|
179
217
|
agentId;
|
|
180
218
|
gatewayUrl;
|
|
181
|
-
|
|
219
|
+
authKind;
|
|
220
|
+
authSecret;
|
|
182
221
|
openclawConfig;
|
|
183
222
|
timeoutMs;
|
|
184
223
|
activeConnections = /* @__PURE__ */ new Set();
|
|
@@ -186,8 +225,10 @@ var OpenClawAgentProvider = class {
|
|
|
186
225
|
this.agentId = agentId;
|
|
187
226
|
this.openclawConfig = providerOptions.config || {};
|
|
188
227
|
const env = providerOptions.env;
|
|
189
|
-
this.gatewayUrl =
|
|
190
|
-
|
|
228
|
+
this.gatewayUrl = resolveGatewayWsUrl(this.openclawConfig, env);
|
|
229
|
+
const authSecret = resolveAuthSecret(this.openclawConfig, env);
|
|
230
|
+
this.authKind = authSecret?.kind;
|
|
231
|
+
this.authSecret = authSecret?.value;
|
|
191
232
|
this.timeoutMs = this.openclawConfig.timeoutMs ?? REQUEST_TIMEOUT_MS;
|
|
192
233
|
}
|
|
193
234
|
id() {
|
|
@@ -204,9 +245,9 @@ var OpenClawAgentProvider = class {
|
|
|
204
245
|
this.activeConnections.clear();
|
|
205
246
|
}
|
|
206
247
|
async callApi(prompt) {
|
|
207
|
-
const
|
|
248
|
+
const sessionKey = this.openclawConfig.session_key || `promptfoo-${crypto.randomUUID()}`;
|
|
208
249
|
return new Promise((resolve) => {
|
|
209
|
-
const ws = new WebSocket(
|
|
250
|
+
const ws = new WebSocket(this.gatewayUrl);
|
|
210
251
|
this.activeConnections.add(ws);
|
|
211
252
|
const agentRequestId = crypto.randomUUID();
|
|
212
253
|
const waitRequestId = crypto.randomUUID();
|
|
@@ -215,37 +256,33 @@ var OpenClawAgentProvider = class {
|
|
|
215
256
|
let runId;
|
|
216
257
|
let connected = false;
|
|
217
258
|
let resolved = false;
|
|
218
|
-
const
|
|
219
|
-
if (!resolved) {
|
|
220
|
-
resolved = true;
|
|
221
|
-
ws.close();
|
|
222
|
-
resolve({ error: `OpenClaw agent request timed out after ${this.timeoutMs}ms` });
|
|
223
|
-
}
|
|
224
|
-
}, this.timeoutMs);
|
|
225
|
-
const finish = (result) => {
|
|
259
|
+
const finish = (result, closeSocket = true) => {
|
|
226
260
|
if (resolved) return;
|
|
227
261
|
resolved = true;
|
|
228
262
|
clearTimeout(timeout);
|
|
229
263
|
this.activeConnections.delete(ws);
|
|
230
|
-
ws.close();
|
|
264
|
+
if (closeSocket) ws.close();
|
|
231
265
|
resolve(result);
|
|
232
266
|
};
|
|
267
|
+
const timeout = setTimeout(() => {
|
|
268
|
+
finish({ error: `OpenClaw agent request timed out after ${this.timeoutMs}ms` });
|
|
269
|
+
}, this.timeoutMs);
|
|
233
270
|
ws.on("error", (err) => {
|
|
234
271
|
finish({ error: `OpenClaw WebSocket error: ${err.message}` });
|
|
235
272
|
});
|
|
236
273
|
ws.on("close", () => {
|
|
237
274
|
this.activeConnections.delete(ws);
|
|
238
|
-
if (!resolved) finish({ error: "OpenClaw WebSocket connection closed unexpectedly" });
|
|
275
|
+
if (!resolved) finish({ error: "OpenClaw WebSocket connection closed unexpectedly" }, false);
|
|
239
276
|
});
|
|
240
277
|
ws.on("message", (data) => {
|
|
241
278
|
let frame;
|
|
242
279
|
try {
|
|
243
280
|
frame = JSON.parse(data.toString());
|
|
244
281
|
} catch {
|
|
245
|
-
|
|
282
|
+
logger.debug("[OpenClaw Agent] Failed to parse WS frame");
|
|
246
283
|
return;
|
|
247
284
|
}
|
|
248
|
-
|
|
285
|
+
logger.debug("[OpenClaw Agent] Frame received", {
|
|
249
286
|
type: frame.type,
|
|
250
287
|
event: frame.event,
|
|
251
288
|
id: frame.id
|
|
@@ -270,7 +307,7 @@ var OpenClawAgentProvider = class {
|
|
|
270
307
|
caps: [],
|
|
271
308
|
commands: [],
|
|
272
309
|
permissions: {},
|
|
273
|
-
...this.
|
|
310
|
+
...this.authSecret && this.authKind && { auth: this.authKind === "password" ? { password: this.authSecret } : { token: this.authSecret } }
|
|
274
311
|
}
|
|
275
312
|
}));
|
|
276
313
|
return;
|
|
@@ -289,8 +326,9 @@ var OpenClawAgentProvider = class {
|
|
|
289
326
|
message: prompt,
|
|
290
327
|
agentId: this.agentId,
|
|
291
328
|
idempotencyKey,
|
|
292
|
-
|
|
293
|
-
...this.openclawConfig.thinking_level && { thinking: this.openclawConfig.thinking_level }
|
|
329
|
+
sessionKey,
|
|
330
|
+
...this.openclawConfig.thinking_level && { thinking: this.openclawConfig.thinking_level },
|
|
331
|
+
...this.openclawConfig.extra_system_prompt && { extraSystemPrompt: this.openclawConfig.extra_system_prompt }
|
|
294
332
|
}
|
|
295
333
|
}));
|
|
296
334
|
return;
|
|
@@ -300,8 +338,17 @@ var OpenClawAgentProvider = class {
|
|
|
300
338
|
finish({ error: `OpenClaw agent error: ${frame.error?.message || "unknown error"}` });
|
|
301
339
|
return;
|
|
302
340
|
}
|
|
303
|
-
|
|
304
|
-
|
|
341
|
+
const payload = frame.payload;
|
|
342
|
+
runId = typeof payload?.runId === "string" && payload.runId.trim() ? payload.runId : void 0;
|
|
343
|
+
if (!runId) {
|
|
344
|
+
logger.warn("[OpenClaw Agent] Missing runId in accepted response", {
|
|
345
|
+
agentId: this.agentId,
|
|
346
|
+
payload
|
|
347
|
+
});
|
|
348
|
+
finish({ error: "OpenClaw agent error: gateway accepted request without a runId" });
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
ws.send(JSON.stringify({
|
|
305
352
|
type: "req",
|
|
306
353
|
id: waitRequestId,
|
|
307
354
|
method: "agent.wait",
|
|
@@ -327,17 +374,17 @@ var OpenClawAgentProvider = class {
|
|
|
327
374
|
});
|
|
328
375
|
}
|
|
329
376
|
};
|
|
330
|
-
|
|
331
377
|
//#endregion
|
|
332
378
|
//#region src/providers/openclaw/chat.ts
|
|
333
379
|
/**
|
|
334
380
|
* OpenClaw chat provider extends OpenAI chat completion provider.
|
|
335
381
|
*
|
|
336
382
|
* OpenClaw exposes an OpenAI-compatible HTTP API at /v1/chat/completions.
|
|
337
|
-
* This provider auto-detects gateway URL and auth
|
|
338
|
-
* 1. Explicit config (gateway_url, auth_token)
|
|
339
|
-
* 2. Environment variables (OPENCLAW_GATEWAY_URL, OPENCLAW_GATEWAY_TOKEN)
|
|
340
|
-
* 3. ~/.openclaw/openclaw.json
|
|
383
|
+
* This provider auto-detects gateway URL and bearer auth from:
|
|
384
|
+
* 1. Explicit config (gateway_url, auth_token, auth_password)
|
|
385
|
+
* 2. Environment variables (OPENCLAW_GATEWAY_URL, OPENCLAW_GATEWAY_TOKEN, OPENCLAW_GATEWAY_PASSWORD)
|
|
386
|
+
* 3. The active OpenClaw config file (OPENCLAW_CONFIG_PATH or ~/.openclaw/openclaw.json),
|
|
387
|
+
* including gateway.remote.url and gateway.tls.enabled
|
|
341
388
|
*
|
|
342
389
|
* Usage:
|
|
343
390
|
* openclaw - default agent (main)
|
|
@@ -366,7 +413,6 @@ var OpenClawChatProvider = class extends OpenAiChatCompletionProvider {
|
|
|
366
413
|
return this.config.apiBaseUrl || this.getApiUrlDefault();
|
|
367
414
|
}
|
|
368
415
|
};
|
|
369
|
-
|
|
370
416
|
//#endregion
|
|
371
417
|
//#region src/providers/openclaw/responses.ts
|
|
372
418
|
/**
|
|
@@ -409,21 +455,25 @@ var OpenClawResponsesProvider = class extends OpenAiResponsesProvider {
|
|
|
409
455
|
return result;
|
|
410
456
|
}
|
|
411
457
|
};
|
|
412
|
-
|
|
413
458
|
//#endregion
|
|
414
459
|
//#region src/providers/openclaw/tools.ts
|
|
415
460
|
/**
|
|
416
461
|
* OpenClaw Tool Invoke Provider
|
|
417
462
|
*
|
|
418
463
|
* Simple HTTP provider for direct tool invocation via POST /tools/invoke.
|
|
419
|
-
* The tool name is extracted from the provider path:
|
|
464
|
+
* The tool name is extracted from the provider path:
|
|
465
|
+
* openclaw:tools:sessions_list → tool="sessions_list"
|
|
420
466
|
*
|
|
421
467
|
* The prompt is parsed as JSON for tool arguments. If it's not valid JSON,
|
|
422
468
|
* it's passed as a single `input` argument.
|
|
423
469
|
*
|
|
424
470
|
* Usage:
|
|
425
|
-
* openclaw:tools:
|
|
426
|
-
* openclaw:tools:
|
|
471
|
+
* openclaw:tools:sessions_list - invoke the sessions_list tool
|
|
472
|
+
* openclaw:tools:session_status - invoke the session_status tool
|
|
473
|
+
*
|
|
474
|
+
* Optional config:
|
|
475
|
+
* action - tool sub-action, forwarded as body.action
|
|
476
|
+
* dry_run - dry-run hint, forwarded as body.dryRun
|
|
427
477
|
*/
|
|
428
478
|
var OpenClawToolInvokeProvider = class {
|
|
429
479
|
toolName;
|
|
@@ -456,14 +506,19 @@ var OpenClawToolInvokeProvider = class {
|
|
|
456
506
|
args = { input: prompt };
|
|
457
507
|
}
|
|
458
508
|
const url = `${this.gatewayUrl}/tools/invoke`;
|
|
459
|
-
const headers = {
|
|
509
|
+
const headers = {
|
|
510
|
+
"Content-Type": "application/json",
|
|
511
|
+
...this.openclawConfig.headers || {}
|
|
512
|
+
};
|
|
460
513
|
if (this.authToken) headers["Authorization"] = `Bearer ${this.authToken}`;
|
|
461
514
|
const body = {
|
|
462
515
|
tool: this.toolName,
|
|
516
|
+
...this.openclawConfig.action && { action: this.openclawConfig.action },
|
|
463
517
|
args,
|
|
518
|
+
...typeof this.openclawConfig.dry_run === "boolean" && { dryRun: this.openclawConfig.dry_run },
|
|
464
519
|
...this.openclawConfig.session_key && { sessionKey: this.openclawConfig.session_key }
|
|
465
520
|
};
|
|
466
|
-
|
|
521
|
+
logger.debug(`[OpenClaw Tool] POST ${url}`, {
|
|
467
522
|
tool: this.toolName,
|
|
468
523
|
args
|
|
469
524
|
});
|
|
@@ -488,7 +543,6 @@ var OpenClawToolInvokeProvider = class {
|
|
|
488
543
|
}
|
|
489
544
|
}
|
|
490
545
|
};
|
|
491
|
-
|
|
492
546
|
//#endregion
|
|
493
547
|
//#region src/providers/openclaw/index.ts
|
|
494
548
|
/**
|
|
@@ -502,7 +556,7 @@ var OpenClawToolInvokeProvider = class {
|
|
|
502
556
|
* openclaw:responses:X → OpenClawResponsesProvider('X')
|
|
503
557
|
* openclaw:agent → OpenClawAgentProvider('main')
|
|
504
558
|
* openclaw:agent:X → OpenClawAgentProvider('X')
|
|
505
|
-
* openclaw:tools:
|
|
559
|
+
* openclaw:tools:sessions_list → OpenClawToolInvokeProvider('sessions_list')
|
|
506
560
|
*/
|
|
507
561
|
function createOpenClawProvider(providerPath, providerOptions = {}, env) {
|
|
508
562
|
const splits = providerPath.split(":");
|
|
@@ -520,7 +574,7 @@ function createOpenClawProvider(providerPath, providerOptions = {}, env) {
|
|
|
520
574
|
}
|
|
521
575
|
return new OpenClawChatProvider(splits.length > 1 ? splits.slice(1).join(":") : "main", opts);
|
|
522
576
|
}
|
|
523
|
-
|
|
524
577
|
//#endregion
|
|
525
578
|
export { createOpenClawProvider };
|
|
526
|
-
|
|
579
|
+
|
|
580
|
+
//# sourceMappingURL=openclaw-DuvJKEW5.js.map
|