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,121 +1,162 @@
|
|
|
1
|
-
import "./
|
|
2
|
-
import
|
|
3
|
-
import "./
|
|
4
|
-
import "./
|
|
5
|
-
import "./
|
|
6
|
-
import "./
|
|
7
|
-
import
|
|
8
|
-
import "./
|
|
9
|
-
import "./
|
|
10
|
-
import
|
|
11
|
-
import "./
|
|
12
|
-
import
|
|
13
|
-
import "./
|
|
14
|
-
import "./util-D9eLdGfa.js";
|
|
1
|
+
import { b as getEnvString, i as logger } from "./logger-CT3IKMKA.js";
|
|
2
|
+
import "./esm-Cd1AjG1D.js";
|
|
3
|
+
import "./pythonUtils-D5nxkQ0P.js";
|
|
4
|
+
import "./types-DmyIJ-sR.js";
|
|
5
|
+
import "./util-BRYkYPTd.js";
|
|
6
|
+
import { N as VERSION, p as REQUEST_TIMEOUT_MS, t as fetchWithProxy } from "./fetch-Cwxnd8zz.js";
|
|
7
|
+
import "./cache-C4Nxf52C.js";
|
|
8
|
+
import "./genaiTracer-D3fD9dNV.js";
|
|
9
|
+
import { t as OpenAiChatCompletionProvider } from "./chat-DqxYYtWA.js";
|
|
10
|
+
import "./transform-vNucnNr0.js";
|
|
11
|
+
import { t as OpenAiResponsesProvider } from "./responses-DIR9Ud3j.js";
|
|
12
|
+
import "./openai-DElQ-fPX.js";
|
|
13
|
+
import "./util-Dnmk2mBQ.js";
|
|
15
14
|
import fs from "fs";
|
|
16
15
|
import path from "path";
|
|
17
16
|
import os from "os";
|
|
18
17
|
import crypto from "crypto";
|
|
19
18
|
import WebSocket from "ws";
|
|
20
|
-
|
|
19
|
+
import JSON5 from "json5";
|
|
21
20
|
//#region src/providers/openclaw/shared.ts
|
|
22
21
|
const DEFAULT_GATEWAY_PORT = 18789;
|
|
23
22
|
const DEFAULT_GATEWAY_HOST = "127.0.0.1";
|
|
24
23
|
/**
|
|
25
|
-
* Strip JSON5 syntax (comments and trailing commas) for JSON.parse compatibility.
|
|
26
|
-
* Uses a state machine to avoid corrupting strings containing // or slash characters.
|
|
27
|
-
*/
|
|
28
|
-
function stripJson5Syntax(raw) {
|
|
29
|
-
let result = "";
|
|
30
|
-
let i = 0;
|
|
31
|
-
let inString = false;
|
|
32
|
-
let stringQuote = "";
|
|
33
|
-
let escape = false;
|
|
34
|
-
while (i < raw.length) {
|
|
35
|
-
const ch = raw[i];
|
|
36
|
-
if (inString) {
|
|
37
|
-
result += ch;
|
|
38
|
-
if (escape) escape = false;
|
|
39
|
-
else if (ch === "\\") escape = true;
|
|
40
|
-
else if (ch === stringQuote) inString = false;
|
|
41
|
-
i++;
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
|
-
if (ch === "\"" || ch === "'") {
|
|
45
|
-
inString = true;
|
|
46
|
-
stringQuote = ch;
|
|
47
|
-
result += ch;
|
|
48
|
-
i++;
|
|
49
|
-
} else if (ch === "/" && raw[i + 1] === "/") while (i < raw.length && raw[i] !== "\n") i++;
|
|
50
|
-
else if (ch === "/" && raw[i + 1] === "*") {
|
|
51
|
-
i += 2;
|
|
52
|
-
while (i < raw.length - 1 && !(raw[i] === "*" && raw[i + 1] === "/")) i++;
|
|
53
|
-
if (i < raw.length - 1 && raw[i] === "*" && raw[i + 1] === "/") i += 2;
|
|
54
|
-
} else if (ch === ",") {
|
|
55
|
-
let j = i + 1;
|
|
56
|
-
while (j < raw.length && (raw[j] === " " || raw[j] === " " || raw[j] === "\n" || raw[j] === "\r")) j++;
|
|
57
|
-
if (j < raw.length && (raw[j] === "}" || raw[j] === "]")) i++;
|
|
58
|
-
else {
|
|
59
|
-
result += ch;
|
|
60
|
-
i++;
|
|
61
|
-
}
|
|
62
|
-
} else {
|
|
63
|
-
result += ch;
|
|
64
|
-
i++;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return result;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
24
|
* Cached config to avoid re-reading the file multiple times during provider init.
|
|
71
25
|
*/
|
|
72
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
|
+
}
|
|
73
91
|
/**
|
|
74
|
-
* Read and parse the OpenClaw configuration file.
|
|
92
|
+
* Read and parse the active OpenClaw configuration file.
|
|
75
93
|
* Results are cached based on file modification time.
|
|
76
94
|
* Returns undefined if the file doesn't exist or can't be parsed.
|
|
77
95
|
*/
|
|
78
|
-
function readOpenClawConfig() {
|
|
79
|
-
const configPath =
|
|
96
|
+
function readOpenClawConfig(env) {
|
|
97
|
+
const configPath = resolveConfigPath(env);
|
|
80
98
|
try {
|
|
81
99
|
if (!fs.existsSync(configPath)) return;
|
|
82
100
|
const mtime = fs.statSync(configPath).mtimeMs;
|
|
83
|
-
if (cachedConfig && cachedConfig.mtime === mtime) return cachedConfig.config;
|
|
84
|
-
const
|
|
85
|
-
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);
|
|
86
104
|
cachedConfig = {
|
|
87
105
|
config,
|
|
88
106
|
mtime
|
|
89
107
|
};
|
|
108
|
+
cachedConfigPath = configPath;
|
|
90
109
|
return config;
|
|
91
110
|
} catch (err) {
|
|
92
|
-
|
|
111
|
+
logger.debug(`Failed to read OpenClaw config at ${configPath}: ${err}`);
|
|
93
112
|
return;
|
|
94
113
|
}
|
|
95
114
|
}
|
|
96
115
|
/**
|
|
97
|
-
* 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.
|
|
98
117
|
*/
|
|
99
118
|
function resolveGatewayUrl(config, env) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
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));
|
|
110
153
|
}
|
|
111
154
|
/**
|
|
112
|
-
* 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.
|
|
113
157
|
*/
|
|
114
158
|
function resolveAuthToken(config, env) {
|
|
115
|
-
|
|
116
|
-
const envToken = env?.OPENCLAW_GATEWAY_TOKEN || getEnvString("OPENCLAW_GATEWAY_TOKEN");
|
|
117
|
-
if (envToken) return envToken;
|
|
118
|
-
return readOpenClawConfig()?.gateway?.auth?.token;
|
|
159
|
+
return resolveAuthSecret(config, env)?.value;
|
|
119
160
|
}
|
|
120
161
|
/**
|
|
121
162
|
* Build common OpenClaw headers for agent-id and session-key.
|
|
@@ -150,7 +191,6 @@ function buildOpenClawProviderOptions(agentId, providerOptions) {
|
|
|
150
191
|
}
|
|
151
192
|
};
|
|
152
193
|
}
|
|
153
|
-
|
|
154
194
|
//#endregion
|
|
155
195
|
//#region src/providers/openclaw/agent.ts
|
|
156
196
|
const OPENCLAW_PROTOCOL_VERSION = 3;
|
|
@@ -176,7 +216,8 @@ const OPENCLAW_PROTOCOL_VERSION = 3;
|
|
|
176
216
|
var OpenClawAgentProvider = class {
|
|
177
217
|
agentId;
|
|
178
218
|
gatewayUrl;
|
|
179
|
-
|
|
219
|
+
authKind;
|
|
220
|
+
authSecret;
|
|
180
221
|
openclawConfig;
|
|
181
222
|
timeoutMs;
|
|
182
223
|
activeConnections = /* @__PURE__ */ new Set();
|
|
@@ -184,8 +225,10 @@ var OpenClawAgentProvider = class {
|
|
|
184
225
|
this.agentId = agentId;
|
|
185
226
|
this.openclawConfig = providerOptions.config || {};
|
|
186
227
|
const env = providerOptions.env;
|
|
187
|
-
this.gatewayUrl =
|
|
188
|
-
|
|
228
|
+
this.gatewayUrl = resolveGatewayWsUrl(this.openclawConfig, env);
|
|
229
|
+
const authSecret = resolveAuthSecret(this.openclawConfig, env);
|
|
230
|
+
this.authKind = authSecret?.kind;
|
|
231
|
+
this.authSecret = authSecret?.value;
|
|
189
232
|
this.timeoutMs = this.openclawConfig.timeoutMs ?? REQUEST_TIMEOUT_MS;
|
|
190
233
|
}
|
|
191
234
|
id() {
|
|
@@ -202,9 +245,9 @@ var OpenClawAgentProvider = class {
|
|
|
202
245
|
this.activeConnections.clear();
|
|
203
246
|
}
|
|
204
247
|
async callApi(prompt) {
|
|
205
|
-
const
|
|
248
|
+
const sessionKey = this.openclawConfig.session_key || `promptfoo-${crypto.randomUUID()}`;
|
|
206
249
|
return new Promise((resolve) => {
|
|
207
|
-
const ws = new WebSocket(
|
|
250
|
+
const ws = new WebSocket(this.gatewayUrl);
|
|
208
251
|
this.activeConnections.add(ws);
|
|
209
252
|
const agentRequestId = crypto.randomUUID();
|
|
210
253
|
const waitRequestId = crypto.randomUUID();
|
|
@@ -213,37 +256,33 @@ var OpenClawAgentProvider = class {
|
|
|
213
256
|
let runId;
|
|
214
257
|
let connected = false;
|
|
215
258
|
let resolved = false;
|
|
216
|
-
const
|
|
217
|
-
if (!resolved) {
|
|
218
|
-
resolved = true;
|
|
219
|
-
ws.close();
|
|
220
|
-
resolve({ error: `OpenClaw agent request timed out after ${this.timeoutMs}ms` });
|
|
221
|
-
}
|
|
222
|
-
}, this.timeoutMs);
|
|
223
|
-
const finish = (result) => {
|
|
259
|
+
const finish = (result, closeSocket = true) => {
|
|
224
260
|
if (resolved) return;
|
|
225
261
|
resolved = true;
|
|
226
262
|
clearTimeout(timeout);
|
|
227
263
|
this.activeConnections.delete(ws);
|
|
228
|
-
ws.close();
|
|
264
|
+
if (closeSocket) ws.close();
|
|
229
265
|
resolve(result);
|
|
230
266
|
};
|
|
267
|
+
const timeout = setTimeout(() => {
|
|
268
|
+
finish({ error: `OpenClaw agent request timed out after ${this.timeoutMs}ms` });
|
|
269
|
+
}, this.timeoutMs);
|
|
231
270
|
ws.on("error", (err) => {
|
|
232
271
|
finish({ error: `OpenClaw WebSocket error: ${err.message}` });
|
|
233
272
|
});
|
|
234
273
|
ws.on("close", () => {
|
|
235
274
|
this.activeConnections.delete(ws);
|
|
236
|
-
if (!resolved) finish({ error: "OpenClaw WebSocket connection closed unexpectedly" });
|
|
275
|
+
if (!resolved) finish({ error: "OpenClaw WebSocket connection closed unexpectedly" }, false);
|
|
237
276
|
});
|
|
238
277
|
ws.on("message", (data) => {
|
|
239
278
|
let frame;
|
|
240
279
|
try {
|
|
241
280
|
frame = JSON.parse(data.toString());
|
|
242
281
|
} catch {
|
|
243
|
-
|
|
282
|
+
logger.debug("[OpenClaw Agent] Failed to parse WS frame");
|
|
244
283
|
return;
|
|
245
284
|
}
|
|
246
|
-
|
|
285
|
+
logger.debug("[OpenClaw Agent] Frame received", {
|
|
247
286
|
type: frame.type,
|
|
248
287
|
event: frame.event,
|
|
249
288
|
id: frame.id
|
|
@@ -268,7 +307,7 @@ var OpenClawAgentProvider = class {
|
|
|
268
307
|
caps: [],
|
|
269
308
|
commands: [],
|
|
270
309
|
permissions: {},
|
|
271
|
-
...this.
|
|
310
|
+
...this.authSecret && this.authKind && { auth: this.authKind === "password" ? { password: this.authSecret } : { token: this.authSecret } }
|
|
272
311
|
}
|
|
273
312
|
}));
|
|
274
313
|
return;
|
|
@@ -287,8 +326,9 @@ var OpenClawAgentProvider = class {
|
|
|
287
326
|
message: prompt,
|
|
288
327
|
agentId: this.agentId,
|
|
289
328
|
idempotencyKey,
|
|
290
|
-
|
|
291
|
-
...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 }
|
|
292
332
|
}
|
|
293
333
|
}));
|
|
294
334
|
return;
|
|
@@ -298,8 +338,17 @@ var OpenClawAgentProvider = class {
|
|
|
298
338
|
finish({ error: `OpenClaw agent error: ${frame.error?.message || "unknown error"}` });
|
|
299
339
|
return;
|
|
300
340
|
}
|
|
301
|
-
|
|
302
|
-
|
|
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({
|
|
303
352
|
type: "req",
|
|
304
353
|
id: waitRequestId,
|
|
305
354
|
method: "agent.wait",
|
|
@@ -325,17 +374,17 @@ var OpenClawAgentProvider = class {
|
|
|
325
374
|
});
|
|
326
375
|
}
|
|
327
376
|
};
|
|
328
|
-
|
|
329
377
|
//#endregion
|
|
330
378
|
//#region src/providers/openclaw/chat.ts
|
|
331
379
|
/**
|
|
332
380
|
* OpenClaw chat provider extends OpenAI chat completion provider.
|
|
333
381
|
*
|
|
334
382
|
* OpenClaw exposes an OpenAI-compatible HTTP API at /v1/chat/completions.
|
|
335
|
-
* This provider auto-detects gateway URL and auth
|
|
336
|
-
* 1. Explicit config (gateway_url, auth_token)
|
|
337
|
-
* 2. Environment variables (OPENCLAW_GATEWAY_URL, OPENCLAW_GATEWAY_TOKEN)
|
|
338
|
-
* 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
|
|
339
388
|
*
|
|
340
389
|
* Usage:
|
|
341
390
|
* openclaw - default agent (main)
|
|
@@ -364,7 +413,6 @@ var OpenClawChatProvider = class extends OpenAiChatCompletionProvider {
|
|
|
364
413
|
return this.config.apiBaseUrl || this.getApiUrlDefault();
|
|
365
414
|
}
|
|
366
415
|
};
|
|
367
|
-
|
|
368
416
|
//#endregion
|
|
369
417
|
//#region src/providers/openclaw/responses.ts
|
|
370
418
|
/**
|
|
@@ -407,21 +455,25 @@ var OpenClawResponsesProvider = class extends OpenAiResponsesProvider {
|
|
|
407
455
|
return result;
|
|
408
456
|
}
|
|
409
457
|
};
|
|
410
|
-
|
|
411
458
|
//#endregion
|
|
412
459
|
//#region src/providers/openclaw/tools.ts
|
|
413
460
|
/**
|
|
414
461
|
* OpenClaw Tool Invoke Provider
|
|
415
462
|
*
|
|
416
463
|
* Simple HTTP provider for direct tool invocation via POST /tools/invoke.
|
|
417
|
-
* 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"
|
|
418
466
|
*
|
|
419
467
|
* The prompt is parsed as JSON for tool arguments. If it's not valid JSON,
|
|
420
468
|
* it's passed as a single `input` argument.
|
|
421
469
|
*
|
|
422
470
|
* Usage:
|
|
423
|
-
* openclaw:tools:
|
|
424
|
-
* 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
|
|
425
477
|
*/
|
|
426
478
|
var OpenClawToolInvokeProvider = class {
|
|
427
479
|
toolName;
|
|
@@ -454,14 +506,19 @@ var OpenClawToolInvokeProvider = class {
|
|
|
454
506
|
args = { input: prompt };
|
|
455
507
|
}
|
|
456
508
|
const url = `${this.gatewayUrl}/tools/invoke`;
|
|
457
|
-
const headers = {
|
|
509
|
+
const headers = {
|
|
510
|
+
"Content-Type": "application/json",
|
|
511
|
+
...this.openclawConfig.headers || {}
|
|
512
|
+
};
|
|
458
513
|
if (this.authToken) headers["Authorization"] = `Bearer ${this.authToken}`;
|
|
459
514
|
const body = {
|
|
460
515
|
tool: this.toolName,
|
|
516
|
+
...this.openclawConfig.action && { action: this.openclawConfig.action },
|
|
461
517
|
args,
|
|
518
|
+
...typeof this.openclawConfig.dry_run === "boolean" && { dryRun: this.openclawConfig.dry_run },
|
|
462
519
|
...this.openclawConfig.session_key && { sessionKey: this.openclawConfig.session_key }
|
|
463
520
|
};
|
|
464
|
-
|
|
521
|
+
logger.debug(`[OpenClaw Tool] POST ${url}`, {
|
|
465
522
|
tool: this.toolName,
|
|
466
523
|
args
|
|
467
524
|
});
|
|
@@ -486,7 +543,6 @@ var OpenClawToolInvokeProvider = class {
|
|
|
486
543
|
}
|
|
487
544
|
}
|
|
488
545
|
};
|
|
489
|
-
|
|
490
546
|
//#endregion
|
|
491
547
|
//#region src/providers/openclaw/index.ts
|
|
492
548
|
/**
|
|
@@ -500,7 +556,7 @@ var OpenClawToolInvokeProvider = class {
|
|
|
500
556
|
* openclaw:responses:X → OpenClawResponsesProvider('X')
|
|
501
557
|
* openclaw:agent → OpenClawAgentProvider('main')
|
|
502
558
|
* openclaw:agent:X → OpenClawAgentProvider('X')
|
|
503
|
-
* openclaw:tools:
|
|
559
|
+
* openclaw:tools:sessions_list → OpenClawToolInvokeProvider('sessions_list')
|
|
504
560
|
*/
|
|
505
561
|
function createOpenClawProvider(providerPath, providerOptions = {}, env) {
|
|
506
562
|
const splits = providerPath.split(":");
|
|
@@ -518,7 +574,7 @@ function createOpenClawProvider(providerPath, providerOptions = {}, env) {
|
|
|
518
574
|
}
|
|
519
575
|
return new OpenClawChatProvider(splits.length > 1 ? splits.slice(1).join(":") : "main", opts);
|
|
520
576
|
}
|
|
521
|
-
|
|
522
577
|
//#endregion
|
|
523
578
|
export { createOpenClawProvider };
|
|
524
|
-
|
|
579
|
+
|
|
580
|
+
//# sourceMappingURL=openclaw-tiVYRtr-.js.map
|