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.
Files changed (355) hide show
  1. package/README.md +1 -1
  2. package/dist/src/{ListApp-8WOe2nT6.js → ListApp-Du7YVwj5.js} +2 -4
  3. package/dist/src/accounts-B0pgC1oV.js +206 -0
  4. package/dist/src/{accounts-DVINui-2.js → accounts-Bm2D8Db9.js} +39 -34
  5. package/dist/src/{accounts-CPDRAMND.js → accounts-CiBLOnA7.js} +38 -33
  6. package/dist/src/{accounts-Fl2J3_Fu.cjs → accounts-gtkH-5KX.cjs} +77 -78
  7. package/dist/src/{agentic-utils-D922n6mm.js → agentic-utils-DS1g3GLF.js} +9 -10
  8. package/dist/src/{agents-BcsN_BgB.js → agents-9qiOy0ho.js} +16 -12
  9. package/dist/src/{agents-BXLmVsxR.js → agents-CBr9A01V.js} +37 -37
  10. package/dist/src/{agents-pMfppv9Z.js → agents-CmvBq8LV.js} +16 -18
  11. package/dist/src/{agents-hqgSV-3o.js → agents-D__IdAlg.js} +39 -40
  12. package/dist/src/{agents-BO2n8Z0d.cjs → agents-DbRtpYxR.cjs} +37 -40
  13. package/dist/src/{agents-BdUTAwi-.js → agents-DgF2zDag.js} +37 -42
  14. package/dist/src/{agents-DgJf2-ez.cjs → agents-Di9DKPzn.cjs} +16 -17
  15. package/dist/src/{agents-DNvSH78i.js → agents-cLXA8a_8.js} +17 -19
  16. package/dist/src/{aimlapi-DtgPI0nE.js → aimlapi-B4rcnZgv.js} +15 -17
  17. package/dist/src/{aimlapi-BE_Tg9Fl.cjs → aimlapi-BvlNH0gr.cjs} +15 -16
  18. package/dist/src/{aimlapi-DOib86oE.js → aimlapi-CnkC2HqE.js} +16 -18
  19. package/dist/src/{aimlapi-DTPACCB1.js → aimlapi-DHJU_kcV.js} +15 -4
  20. package/dist/src/app/assets/index-4LKxG2CG.js +439 -0
  21. package/dist/src/app/assets/{index-NCn4eVBv.css → index-C3zcsZFQ.css} +1 -1
  22. package/dist/src/app/assets/vendor-charts-BnDWwBlI.js +36 -0
  23. package/dist/src/app/index.html +3 -3
  24. package/dist/src/app/tsconfig.app.tsbuildinfo +1 -1
  25. package/dist/src/{audio-BnRUGAm_.js → audio-Bkv46et0.js} +6 -5
  26. package/dist/src/{audio-Cwo68yZS.cjs → audio-CGMyULza.cjs} +6 -7
  27. package/dist/src/{audio-MSRki4JU.js → audio-ClI_AFre.js} +6 -8
  28. package/dist/src/{audio-BRYU0BFo.js → audio-Dz3z7s3J.js} +7 -9
  29. package/dist/src/{base-pGVmXNl4.cjs → base-CGrhspbK.cjs} +36 -38
  30. package/dist/src/{base-h961VXYk.js → base-CpjcHe4e.js} +11 -13
  31. package/dist/src/base-DLKtKMFh.js +193 -0
  32. package/dist/src/{base-XB2tDJrB.js → base-Dy1V8--Z.js} +11 -13
  33. package/dist/src/blobs-BDbfYdrJ.js +236 -0
  34. package/dist/src/{blobs-CR5C4Ihh.js → blobs-CBO20krR.js} +9 -12
  35. package/dist/src/{blobs-BM_e6hCa.js → blobs-CMHN0Qcz.js} +9 -12
  36. package/dist/src/{blobs-B-KQAFhX.cjs → blobs-D23XLin-.cjs} +34 -37
  37. package/dist/src/{cache-jsiwsAJv.js → cache-BVeDlD87.js} +132 -117
  38. package/dist/src/{cache-CIpsoBZR.js → cache-C4Nxf52C.js} +132 -118
  39. package/dist/src/cache-CeUpFm3M.cjs +5 -0
  40. package/dist/src/{cache-BTVYfbka.cjs → cache-Dh5WtQps.cjs} +182 -168
  41. package/dist/src/cache-i1P6crbO.js +756 -0
  42. package/dist/src/cache-n-RCJ-hL.js +6 -0
  43. package/dist/src/{chat-BcPjZXIp.js → chat-BiKyneZl.js} +45 -46
  44. package/dist/src/{chat-D31K7C4u.cjs → chat-C1Qst7jL.cjs} +20 -21
  45. package/dist/src/{chat-B84t99NW.js → chat-C2jrdPMx.js} +20 -9
  46. package/dist/src/{chat-BE44YOc6.cjs → chat-CgF-J-Jj.cjs} +65 -66
  47. package/dist/src/{chat-DwWifjxi.js → chat-CzkrVDfz.js} +20 -22
  48. package/dist/src/chat-DJIw17u0.js +766 -0
  49. package/dist/src/{chat-CcUCysjU.js → chat-DqxYYtWA.js} +45 -46
  50. package/dist/src/{chat-DZM2GUHO.js → chat-qmatte1u.js} +21 -23
  51. package/dist/src/{chatkit-D67HS_0b.js → chatkit-65VXf5SR.js} +58 -58
  52. package/dist/src/{chatkit-DAB_qfzI.js → chatkit-Be-Q-a9F.js} +58 -60
  53. package/dist/src/{chatkit-Biqb_wsD.js → chatkit-BxFvW8KY.js} +58 -60
  54. package/dist/src/{chatkit-PGG4ZYIn.cjs → chatkit-DKyPi1Gs.cjs} +58 -60
  55. package/dist/src/chunk-DEq-mXcV.js +15 -0
  56. package/dist/src/chunk-DRamLcfz.js +16 -0
  57. package/dist/src/{claude-agent-sdk-SVM6AdBu.js → claude-agent-sdk-Apiy0iaz.js} +31 -31
  58. package/dist/src/{claude-agent-sdk-C-IOTPfo.js → claude-agent-sdk-D2bJee9S.js} +31 -29
  59. package/dist/src/{claude-agent-sdk-C9SiaQub.cjs → claude-agent-sdk-D9Z5Pr9X.cjs} +31 -28
  60. package/dist/src/{claude-agent-sdk-CiluSyW1.js → claude-agent-sdk-DfCoW0E6.js} +33 -20
  61. package/dist/src/cloud-BBh91EUK.js +4 -0
  62. package/dist/src/{cloud-CZ-q9Ier.js → cloud-C0dlstV_.js} +7 -9
  63. package/dist/src/{cloudflare-ai-BahKHyhh.js → cloudflare-ai-8TDxHR0x.js} +16 -18
  64. package/dist/src/{cloudflare-ai-v_qZD6_q.js → cloudflare-ai-BxAGvfju.js} +17 -19
  65. package/dist/src/{cloudflare-ai-Dfahv5SY.cjs → cloudflare-ai-CknbZ5LJ.cjs} +16 -17
  66. package/dist/src/{cloudflare-ai-Dxyt50Nl.js → cloudflare-ai-g7PB6VHR.js} +16 -4
  67. package/dist/src/{cloudflare-gateway-Bi_FpOFy.js → cloudflare-gateway-B9HWA5wf.js} +23 -23
  68. package/dist/src/{cloudflare-gateway-BPWoZIzJ.cjs → cloudflare-gateway-BSnDmHYo.cjs} +21 -22
  69. package/dist/src/{cloudflare-gateway-C0guUNwk.js → cloudflare-gateway-CKDb4dJ8.js} +26 -14
  70. package/dist/src/{cloudflare-gateway-btS7h1OZ.js → cloudflare-gateway-CP9QEWYS.js} +21 -25
  71. package/dist/src/{codex-sdk-DSxAnbfT.js → codex-sdk-C6UMlxwV.js} +28 -29
  72. package/dist/src/{codex-sdk-IYVi9fuM.js → codex-sdk-DUwKWezN.js} +28 -27
  73. package/dist/src/{codex-sdk-DulY0ZRq.js → codex-sdk-GGAw0qbD.js} +28 -29
  74. package/dist/src/{codex-sdk-DFKMtAyf.cjs → codex-sdk-fAO0c3yA.cjs} +28 -29
  75. package/dist/src/{cometapi-DzrR3SR_.js → cometapi-BL9yvj_f.js} +16 -4
  76. package/dist/src/{cometapi-DIO64tf4.cjs → cometapi-C4xSqeID.cjs} +21 -22
  77. package/dist/src/{cometapi-C9EEpJzT.js → cometapi-CUQq3H_a.js} +21 -24
  78. package/dist/src/{cometapi-DkNBMk0G.js → cometapi-DFNiKmSz.js} +17 -19
  79. package/dist/src/{completion-CG29bfKX.js → completion-5MzrpJxT.js} +11 -13
  80. package/dist/src/{completion-CCRT4kX1.cjs → completion-CM6oK8PS.cjs} +21 -23
  81. package/dist/src/{completion-Bgf1VJoq.js → completion-DZ083F31.js} +11 -13
  82. package/dist/src/completion-qRoZAYRB.js +120 -0
  83. package/dist/src/{createHash-Dw_iLu31.js → createHash-CTQmL3G2.js} +2 -3
  84. package/dist/src/{createHash-CYQy4YeL.cjs → createHash-CfZSc0b4.cjs} +13 -14
  85. package/dist/src/{createHash-CJcfskIZ.js → createHash-Da8fMwqB.js} +2 -3
  86. package/dist/src/createHash-DmPQkvBh.js +15 -0
  87. package/dist/src/{docker-D-ayp2FW.js → docker-Bb5dcxr8.js} +18 -20
  88. package/dist/src/{docker-B81N0t4e.js → docker-BvfL2BrW.js} +19 -21
  89. package/dist/src/{docker-DNcLR4Ig.cjs → docker-DcF2pRrj.cjs} +18 -19
  90. package/dist/src/{docker-egERKxCF.js → docker-ExVyLp0S.js} +18 -7
  91. package/dist/src/entrypoint.js +2 -3
  92. package/dist/src/{errors-DnGCbnx8.js → errors-P6ll7XSJ.js} +2 -2
  93. package/dist/src/{esm-B9dPm_BF.js → esm-C03C-mv3.js} +17 -20
  94. package/dist/src/{esm-D2pZ87fL.js → esm-CaIwzWR5.js} +18 -21
  95. package/dist/src/esm-Cd1AjG1D.js +379 -0
  96. package/dist/src/{esm-Ct-Joyue.cjs → esm-CnNt7sI4.cjs} +47 -49
  97. package/dist/src/eval-B3r2CVXr.js +15 -0
  98. package/dist/src/{eval-C-Nr6wX_.js → eval-Dg2nG4v2.js} +47 -54
  99. package/dist/src/evalResult-5xwYnECe.js +12 -0
  100. package/dist/src/evalResult-71lY93Kj.cjs +10 -0
  101. package/dist/src/{evalResult-DXMWJ3sx.js → evalResult-BBRNtX4I.js} +10 -11
  102. package/dist/src/{evalResult-4BzI2tmj.js → evalResult-BDMqrapS.js} +16 -12
  103. package/dist/src/evalResult-Dx5P5cIv.js +10 -0
  104. package/dist/src/{evalResult-CX8wQecI.cjs → evalResult-fuaI8HkH.cjs} +20 -21
  105. package/dist/src/{evaluator-8aGyV12L.js → evaluator-BhoWwp5b.js} +211 -235
  106. package/dist/src/evaluator-Jx6bRZV6.js +36 -0
  107. package/dist/src/{extractor-V5x_m1i0.js → extractor-C0EVHewb.js} +22 -24
  108. package/dist/src/extractor-D25qpmGX.js +374 -0
  109. package/dist/src/{extractor-CD5yKL-G.js → extractor-DReVID0K.js} +22 -24
  110. package/dist/src/{extractor-C031XmTA.cjs → extractor-pYLLi3wS.cjs} +37 -39
  111. package/dist/src/{fetch-BmbD-v1L.cjs → fetch-BPkYtG8K.cjs} +244 -277
  112. package/dist/src/fetch-BxNb_Lp3.js +5 -0
  113. package/dist/src/{fetch-D3OHf-lV.js → fetch-Cwxnd8zz.js} +36 -44
  114. package/dist/src/{fetch-CXZI9RRr.js → fetch-Dxpd4_sr.js} +23 -35
  115. package/dist/src/fetch-HaqdX7U1.js +780 -0
  116. package/dist/src/{fileExtensions-ePDqouxn.js → fileExtensions-DnqA1y9x.js} +2 -2
  117. package/dist/src/{fileExtensions-BpuMmaFL.js → fileExtensions-Ds-foDzt.js} +2 -2
  118. package/dist/src/fileExtensions-LcDYkU4v.js +85 -0
  119. package/dist/src/{fileExtensions-DkJYkWUy.cjs → fileExtensions-bYh77CN8.cjs} +27 -28
  120. package/dist/src/{formatDuration-CdevI3An.js → formatDuration-DgBVMN65.js} +2 -2
  121. package/dist/src/{genaiTracer-Ce19n68P.js → genaiTracer-70Z8BIuV.js} +2 -3
  122. package/dist/src/{genaiTracer-CqNnnXrE.js → genaiTracer-C1rxGO8Q.js} +2 -3
  123. package/dist/src/genaiTracer-D3fD9dNV.js +256 -0
  124. package/dist/src/{genaiTracer-Dres3qrN.cjs → genaiTracer-DN4dQywX.cjs} +13 -14
  125. package/dist/src/{graders--1y2u9HO.js → graders-BTeBGqjJ.js} +349 -397
  126. package/dist/src/graders-B_pgMLS2.js +34 -0
  127. package/dist/src/{graders-DTeBrzWp.js → graders-Bj_Odv7c.js} +349 -397
  128. package/dist/src/graders-DErokPDO.cjs +32 -0
  129. package/dist/src/graders-DP7KFFo-.js +13466 -0
  130. package/dist/src/graders-DR_uNe54.js +32 -0
  131. package/dist/src/{graders-DohM2dir.cjs → graders-DU49_J8Y.cjs} +684 -732
  132. package/dist/src/graders-w3176Wz-.js +32 -0
  133. package/dist/src/{image-B0U4Hqll.js → image-B02ogr_b.js} +7 -9
  134. package/dist/src/{image-DmE-niFE.js → image-B0h9VEMc.js} +6 -5
  135. package/dist/src/{image-CuKHuccK.cjs → image-BLmROtN3.cjs} +29 -30
  136. package/dist/src/{image-DNEIf_aI.js → image-Bb4vWQLM.js} +6 -8
  137. package/dist/src/{image-DpKl2F15.cjs → image-C1madmKh.cjs} +6 -7
  138. package/dist/src/{image-C3wHC9_h.js → image-CHfWvljl.js} +9 -10
  139. package/dist/src/{image-O1u4bCFg.js → image-DS-o-0ph.js} +9 -10
  140. package/dist/src/image-Dpxa1Jt6.js +257 -0
  141. package/dist/src/index.cjs +615 -695
  142. package/dist/src/index.d.cts +271 -7
  143. package/dist/src/index.d.ts +271 -3
  144. package/dist/src/index.js +580 -664
  145. package/dist/src/{interactiveCheck-Bxj1Swex.js → interactiveCheck-BgLZUIt3.js} +7 -8
  146. package/dist/src/{invariant-DT20jrBd.js → invariant-BtWWVVhl.js} +2 -2
  147. package/dist/src/{invariant-1pAf2CD1.js → invariant-Ddh24eXh.js} +2 -2
  148. package/dist/src/{invariant-CKcJAQ6M.cjs → invariant-kfQ8Bu82.cjs} +7 -8
  149. package/dist/src/invariant-vgHWClmd.js +25 -0
  150. package/dist/src/{knowledgeBase-CEzQobWX.js → knowledgeBase-B3OoKIej.js} +14 -9
  151. package/dist/src/{knowledgeBase-Be_zyW4L.js → knowledgeBase-CYTLHOt1.js} +16 -16
  152. package/dist/src/{knowledgeBase-BZ41IFwq.js → knowledgeBase-D33Ty2l6.js} +14 -18
  153. package/dist/src/{knowledgeBase-D-5BMXlr.cjs → knowledgeBase-DOO_BM9b.cjs} +14 -15
  154. package/dist/src/{litellm-DnbRJ2if.js → litellm-AaeZcZQF.js} +18 -19
  155. package/dist/src/{litellm-hUSNM_M2.cjs → litellm-I_hbp_dc.cjs} +17 -17
  156. package/dist/src/{litellm-CRDqPhNI.js → litellm-NbjknEh6.js} +17 -18
  157. package/dist/src/{litellm-9vR8zpfU.js → litellm-TrljxD9G.js} +17 -5
  158. package/dist/src/{logger-CG1uZPbQ.js → logger-CT3IKMKA.js} +10 -29
  159. package/dist/src/{logger-B7sBeGa0.cjs → logger-Cp1GPUjj.cjs} +152 -180
  160. package/dist/src/logger-DLcq4dWf.js +713 -0
  161. package/dist/src/{logger-LSBxlt7a.js → logger-KkObSCzq.js} +13 -31
  162. package/dist/src/{luma-ray-4blv9iZ2.js → luma-ray-BS2_tY8L.js} +22 -21
  163. package/dist/src/{luma-ray-drvgdpP9.js → luma-ray-DDsjcgZZ.js} +20 -13
  164. package/dist/src/{luma-ray-Hm3d6VJE.cjs → luma-ray-Due0n7di.cjs} +20 -21
  165. package/dist/src/{luma-ray-B2__8lYH.js → luma-ray-f6I2fft-.js} +20 -23
  166. package/dist/src/main.js +1170 -1321
  167. package/dist/src/{messages-Uee41Mj5.js → messages-BS17jdMx.js} +22 -24
  168. package/dist/src/{messages-XhiwCbi4.cjs → messages-Bs1kC7P4.cjs} +32 -34
  169. package/dist/src/{messages-CGPPidQr.js → messages-D0lx5qK7.js} +22 -24
  170. package/dist/src/messages-ZJk778GH.js +240 -0
  171. package/dist/src/{meteor-BYykdXrV.js → meteor-44VjEACX.js} +3 -4
  172. package/dist/src/{meteor-CsopaHrH.js → meteor-D-SotUw9.js} +3 -4
  173. package/dist/src/{meteor-e-E-2vVl.cjs → meteor-DLZZ3osF.cjs} +3 -4
  174. package/dist/src/{meteor-C8lGP6P4.js → meteor-DUiCJRC-.js} +3 -4
  175. package/dist/src/{modelslab-yKz-ZNB4.js → modelslab-Bmni6skY.js} +17 -10
  176. package/dist/src/{modelslab-E9gO-bYd.js → modelslab-Bx9IrZfS.js} +18 -20
  177. package/dist/src/{modelslab-lUVW0cmB.cjs → modelslab-CoUX6Jc_.cjs} +17 -18
  178. package/dist/src/{modelslab-ClBkr8_9.js → modelslab-DRb74SP4.js} +17 -19
  179. package/dist/src/{nova-reel-Dk8jNpId.js → nova-reel-BfPq-0Yk.js} +20 -13
  180. package/dist/src/{nova-reel-D8CuO6QH.cjs → nova-reel-C_QM18Xn.cjs} +20 -21
  181. package/dist/src/{nova-reel-u2eF2Cxm.js → nova-reel-D_W1tjMH.js} +22 -21
  182. package/dist/src/{nova-reel-P9bwvtYX.js → nova-reel-bgjxilYW.js} +20 -23
  183. package/dist/src/{nova-sonic-CK2rAiKi.js → nova-sonic-CFb5GYhg.js} +30 -26
  184. package/dist/src/{nova-sonic-BaqWlkds.js → nova-sonic-DIGQNR07.js} +30 -31
  185. package/dist/src/{nova-sonic-yZapPLv7.js → nova-sonic-De1HW5fD.js} +31 -32
  186. package/dist/src/{nova-sonic-Ds1C-dpm.cjs → nova-sonic-zfcljeRp.cjs} +30 -31
  187. package/dist/src/{openai-DUFopMrH.cjs → openai-Cuif0GEt.cjs} +8 -9
  188. package/dist/src/{openai-PblZ3jUE.js → openai-DElQ-fPX.js} +3 -4
  189. package/dist/src/{openai-CcN1B8Sb.js → openai-DhbB7eWK.js} +3 -4
  190. package/dist/src/openai-j-sE2O7r.js +44 -0
  191. package/dist/src/{openclaw-B6qqDr_u.cjs → openclaw-CSugPYAr.cjs} +188 -130
  192. package/dist/src/{openclaw-A-3_loM7.js → openclaw-DiSz3I5L.js} +180 -109
  193. package/dist/src/{openclaw-a3lylB-V.js → openclaw-DuvJKEW5.js} +178 -124
  194. package/dist/src/{openclaw-COn6QzDi.js → openclaw-tiVYRtr-.js} +178 -122
  195. package/dist/src/opencode-sdk-0j6rTWNb.js +562 -0
  196. package/dist/src/opencode-sdk-B3CWY9h_.js +560 -0
  197. package/dist/src/opencode-sdk-BL764Jdi.cjs +564 -0
  198. package/dist/src/opencode-sdk-C2y6UkP2.js +560 -0
  199. package/dist/src/{otlpReceiver-oyf5wLGC.js → otlpReceiver-C99PPb48.js} +53 -51
  200. package/dist/src/{otlpReceiver-lXsYVbpj.cjs → otlpReceiver-CGq6LspY.cjs} +53 -55
  201. package/dist/src/{otlpReceiver-94URx7UW.js → otlpReceiver-CdNBdbsk.js} +53 -55
  202. package/dist/src/{otlpReceiver-BmmTiMjA.js → otlpReceiver-D89fR-rC.js} +53 -55
  203. package/dist/src/{providerRegistry-Cq_JK_CJ.js → providerRegistry-B0RUOLI_.js} +7 -8
  204. package/dist/src/{providerRegistry-DSSHjMKf.js → providerRegistry-CD8MEar9.js} +7 -8
  205. package/dist/src/{providerRegistry-CvHEVJad.cjs → providerRegistry-Civky8Ar.cjs} +12 -13
  206. package/dist/src/providerRegistry-DM8rZYol.js +45 -0
  207. package/dist/src/providers-B7V0njNs.js +32 -0
  208. package/dist/src/providers-BEwbhv0X.js +30 -0
  209. package/dist/src/{providers-Iil64vk9.js → providers-BlqUifFg.js} +1543 -1676
  210. package/dist/src/providers-CH3C7zf7.js +30 -0
  211. package/dist/src/{providers-DHbjzW2e.cjs → providers-CgKOSgTR.cjs} +1896 -2029
  212. package/dist/src/providers-D8lF1sqW.js +33246 -0
  213. package/dist/src/{providers-BnFpbY_s.js → providers-Dk_6ocUX.js} +1536 -1669
  214. package/dist/src/providers-zyB6k_38.cjs +31 -0
  215. package/dist/src/{pythonUtils-CcT5LH1M.js → pythonUtils-C3py6GC1.js} +18 -19
  216. package/dist/src/{pythonUtils-DBbuI3QJ.cjs → pythonUtils-CTU3Y3lw.cjs} +42 -43
  217. package/dist/src/{pythonUtils-hZ8LeQLv.js → pythonUtils-D5nxkQ0P.js} +18 -19
  218. package/dist/src/pythonUtils-D6fwaDSg.js +249 -0
  219. package/dist/src/{quiverai-BuI0tE39.js → quiverai-BbOUOn2L.js} +8 -7
  220. package/dist/src/{quiverai-DCGSZt4U.js → quiverai-CIaELU_m.js} +8 -10
  221. package/dist/src/{quiverai-DiMVJQDz.cjs → quiverai-PdShCPox.cjs} +8 -9
  222. package/dist/src/{quiverai-fQNkExW4.js → quiverai-uH-dcTIr.js} +9 -11
  223. package/dist/src/{render-Dj1smHEb.js → render-Drod8m7K.js} +4 -5
  224. package/dist/src/responses-CB2jwoAr.js +660 -0
  225. package/dist/src/{responses-ghR3IOfy.cjs → responses-D8SBTL64.cjs} +39 -42
  226. package/dist/src/{responses-DOAFFENS.js → responses-DIR9Ud3j.js} +24 -27
  227. package/dist/src/{responses-CxzoQoBe.js → responses-WNGNYe3K.js} +24 -27
  228. package/dist/src/rubyUtils-BUHu6PhO.js +5 -0
  229. package/dist/src/{rubyUtils-CwbGmgYN.js → rubyUtils-BUVePouc.js} +27 -20
  230. package/dist/src/rubyUtils-BcuGX77l.js +222 -0
  231. package/dist/src/{rubyUtils-DudlFZed.js → rubyUtils-Boc4HZzX.js} +18 -19
  232. package/dist/src/rubyUtils-CP42kMvq.cjs +4 -0
  233. package/dist/src/{rubyUtils-C8MhKGHb.cjs → rubyUtils-DhCAlxZr.cjs} +48 -50
  234. package/dist/src/{sagemaker-gmskuyre.js → sagemaker-CNBxx5CJ.js} +75 -70
  235. package/dist/src/{sagemaker-CcxhlOAR.js → sagemaker-CemTFp2h.js} +75 -79
  236. package/dist/src/{sagemaker-77zbJ2Q2.cjs → sagemaker-Cl28mZU2.cjs} +75 -76
  237. package/dist/src/{sagemaker-DuM71dVU.js → sagemaker-YSyBXQQh.js} +77 -77
  238. package/dist/src/{scanner-DJYiSXQj.js → scanner-BsBlNXNn.js} +100 -121
  239. package/dist/src/server/index.js +5520 -67427
  240. package/dist/src/{server-B5v33lvE.cjs → server-C_7Ax-hA.cjs} +57 -67
  241. package/dist/src/{server-BJ4m4f1D.js → server-CqzrVGpF.js} +26 -29
  242. package/dist/src/server-CuxBbeSY.js +229 -0
  243. package/dist/src/server-DA4Cyrrq.js +7 -0
  244. package/dist/src/server-Dulb-4-K.cjs +5 -0
  245. package/dist/src/{server-RV_i_YX5.js → server-VWgWb00X.js} +19 -24
  246. package/dist/src/{signal-BW33JuId.js → signal-4U3mfRvL.js} +9 -11
  247. package/dist/src/{slack-DEURelTy.cjs → slack-BmVAVGaK.cjs} +7 -8
  248. package/dist/src/{slack-BQYeW9L3.js → slack-DCUPTzS2.js} +8 -8
  249. package/dist/src/{slack-BB6yuZzp.js → slack-DOdy_kyv.js} +7 -8
  250. package/dist/src/{slack-2pRrhhgJ.js → slack-DXMKtA-f.js} +7 -9
  251. package/dist/src/store-CXGFv4aR.js +228 -0
  252. package/dist/src/store-CXS-Q_91.js +6 -0
  253. package/dist/src/{store-D7CgQzAR.cjs → store-DLlFCC4h.cjs} +44 -45
  254. package/dist/src/{store-DJNsD1iC.js → store-DXilxTl-.js} +40 -36
  255. package/dist/src/{store-s3SftUwF.js → store-Dim__MDd.js} +34 -35
  256. package/dist/src/store-eYkaKMwq.cjs +5 -0
  257. package/dist/src/{tables-DfTsNN7X.js → tables-6YKwjN9-.js} +19 -21
  258. package/dist/src/tables-DLJPUdUE.js +288 -0
  259. package/dist/src/{tables-BKTmd6u7.cjs → tables-DPi7wKeM.cjs} +89 -91
  260. package/dist/src/{tables-DMegD0Xf.js → tables-gftXzE9I.js} +21 -23
  261. package/dist/src/telemetry-BpMfhthR.cjs +5 -0
  262. package/dist/src/{telemetry--WAdAfVi.js → telemetry-CMrFgtPB.js} +11 -13
  263. package/dist/src/telemetry-Cps3mIU-.js +171 -0
  264. package/dist/src/{telemetry-DQgVBCAb.cjs → telemetry-DaX14Chu.cjs} +21 -24
  265. package/dist/src/{telemetry-BedSm-bZ.js → telemetry-Dthj_BbD.js} +17 -14
  266. package/dist/src/telemetry-Dw38hanS.js +7 -0
  267. package/dist/src/{text-oiSbwSOI.js → text-B_UCRPp2.js} +2 -2
  268. package/dist/src/{text-oKzCBnK6.cjs → text-CW1cyrwj.cjs} +12 -13
  269. package/dist/src/{text-B_IrO4GZ.js → text-Db-Wt2u2.js} +2 -2
  270. package/dist/src/text-TIv0QYnd.js +22 -0
  271. package/dist/src/{tokenUsageUtils-FZd5O_4A.js → tokenUsageUtils-BDGe-iyI.js} +2 -2
  272. package/dist/src/{tokenUsageUtils-DmZSD2eU.js → tokenUsageUtils-DflFMjS0.js} +2 -2
  273. package/dist/src/tokenUsageUtils-NYT-WKS6.js +138 -0
  274. package/dist/src/{tokenUsageUtils-CXhxVj72.cjs → tokenUsageUtils-bVa1ga6f.cjs} +32 -33
  275. package/dist/src/{transcription-mYS9vd5v.js → transcription-BNYURcXg.js} +14 -7
  276. package/dist/src/{transcription-X2-B4vkX.js → transcription-B_OdaHp7.js} +14 -16
  277. package/dist/src/{transcription-BO1AHegO.cjs → transcription-NLVG9MT1.cjs} +14 -15
  278. package/dist/src/{transcription-lzBLiTFJ.js → transcription-s6A-bNrZ.js} +15 -17
  279. package/dist/src/{transform-B1Hi5lWS.cjs → transform-CzK1Q0zl.cjs} +24 -26
  280. package/dist/src/{transform-DeGlxb0D.js → transform-D5HsjduX.js} +39 -47
  281. package/dist/src/{transform-CYDILYDe.js → transform-DECvGmzp.js} +15 -13
  282. package/dist/src/transform-DTGDnAzW.js +6 -0
  283. package/dist/src/{transform-BEgStbHK.js → transform-DilY9wbS.js} +10 -12
  284. package/dist/src/{transform-D5PjiWiZ.cjs → transform-DuHvhZpj.cjs} +179 -187
  285. package/dist/src/transform-aa6tmVpZ.js +216 -0
  286. package/dist/src/transform-m3qNw4KP.cjs +5 -0
  287. package/dist/src/transform-uAytVuyX.js +1506 -0
  288. package/dist/src/{transform-Dfl89yi4.js → transform-vNucnNr0.js} +39 -47
  289. package/dist/src/{transformersAvailability-SZnTS3pJ.js → transformersAvailability-CEVM2GNQ.js} +2 -2
  290. package/dist/src/{transformersAvailability-D-glmEy7.cjs → transformersAvailability-CwayUSlh.cjs} +2 -3
  291. package/dist/src/{transformersAvailability-CjeFXhuJ.js → transformersAvailability-D6c6ROpT.js} +2 -2
  292. package/dist/src/{types-DWNf48sT.cjs → types-C_7nyzr1.cjs} +538 -574
  293. package/dist/src/{types-CXQduE9o.js → types-Cbd8uOMq.js} +68 -100
  294. package/dist/src/types-CzW2QFyi.js +3288 -0
  295. package/dist/src/{types-C5hEkb-x.js → types-DmyIJ-sR.js} +63 -99
  296. package/dist/src/{util-CoQjmE3u.js → util-B3xGByQh.js} +4 -5
  297. package/dist/src/{util-aLhtl3fe.cjs → util-B9vlHIIh.cjs} +208 -223
  298. package/dist/src/{util-Du96oyYS.js → util-BHGHw5G1.js} +4 -5
  299. package/dist/src/{util-DQ984syk.js → util-BRYkYPTd.js} +36 -51
  300. package/dist/src/{util-D9eLdGfa.js → util-BV4XUC0n.js} +5 -6
  301. package/dist/src/util-Bv6uGDfH.js +293 -0
  302. package/dist/src/{util-1wWM599Z.cjs → util-BzMcevZc.cjs} +50 -51
  303. package/dist/src/{util-_h4pVqrz.js → util-C1CeHl-P.js} +36 -51
  304. package/dist/src/{util-Bm_-UMD_.js → util-CMy69ZgQ.js} +5 -6
  305. package/dist/src/{util-CyUdMzV0.cjs → util-DGNOS1db.cjs} +34 -35
  306. package/dist/src/util-Dnmk2mBQ.js +599 -0
  307. package/dist/src/util-ZzmqNPlg.js +1426 -0
  308. package/dist/src/{utils-BjLy-Q72.cjs → utils-Cz9qXqII.cjs} +29 -32
  309. package/dist/src/{utils-CFMn2yHW.js → utils-XiOAgly5.js} +4 -7
  310. package/dist/src/utils-dLokC-eR.js +94 -0
  311. package/dist/src/{utils-DvWMzuMx.js → utils-f2-Moju7.js} +4 -7
  312. package/dist/tsconfig.tsbuildinfo +1 -1
  313. package/package.json +38 -38
  314. package/dist/src/app/assets/index-B2D0bCSI.js +0 -439
  315. package/dist/src/app/assets/vendor-charts-CCl15Imd.js +0 -36
  316. package/dist/src/cache-ChPcurj7.js +0 -6
  317. package/dist/src/cache-VVu_W-yg.js +0 -8
  318. package/dist/src/cache-YLNCFEM2.cjs +0 -6
  319. package/dist/src/chunk-DHDDz29n.js +0 -22
  320. package/dist/src/chunk-FhC4c-0y.js +0 -21
  321. package/dist/src/cloud-BndfXy4H.js +0 -5
  322. package/dist/src/eval-BhHvMY82.js +0 -17
  323. package/dist/src/evalResult-Dq2gFNQY.js +0 -12
  324. package/dist/src/evalResult-nmcP5VKH.cjs +0 -12
  325. package/dist/src/evalResult-trqZjVYh.js +0 -14
  326. package/dist/src/evaluator-CnfPstzT.js +0 -39
  327. package/dist/src/fetch-IDPDue6F.cjs +0 -4
  328. package/dist/src/fetch-hKJ-It8q.js +0 -6
  329. package/dist/src/fetch-ouKnrWK-.js +0 -4
  330. package/dist/src/graders-CQn7WUsd.cjs +0 -34
  331. package/dist/src/graders-DC6QAbpW.js +0 -35
  332. package/dist/src/graders-DUWz3Y7j.js +0 -37
  333. package/dist/src/opencode-sdk-4bL9n-Gk.js +0 -382
  334. package/dist/src/opencode-sdk-BfC2zWcR.js +0 -376
  335. package/dist/src/opencode-sdk-DMJyuwMg.js +0 -380
  336. package/dist/src/opencode-sdk-Da-9adza.cjs +0 -383
  337. package/dist/src/providers-CsXB2Ix-.js +0 -35
  338. package/dist/src/providers-DO8ltjLC.js +0 -33
  339. package/dist/src/providers-Dtq-xnXd.cjs +0 -33
  340. package/dist/src/rubyUtils-BUbcND2f.js +0 -6
  341. package/dist/src/rubyUtils-Cr55X_KE.js +0 -5
  342. package/dist/src/rubyUtils-DlIiqoYo.cjs +0 -5
  343. package/dist/src/server-C2eQH4Gu.js +0 -6
  344. package/dist/src/server-CXWycu7H.cjs +0 -6
  345. package/dist/src/server-Q6OGlxxT.js +0 -8
  346. package/dist/src/store-B3EDO9Q3.js +0 -7
  347. package/dist/src/store-Dl9F8aw5.js +0 -6
  348. package/dist/src/store-SnrGrlt9.cjs +0 -6
  349. package/dist/src/telemetry-BGhiPZtl.js +0 -8
  350. package/dist/src/telemetry-CFfiYan6.cjs +0 -6
  351. package/dist/src/telemetry-DHzEduxX.js +0 -6
  352. package/dist/src/transform-C1x1ZlMQ.cjs +0 -6
  353. package/dist/src/transform-DYHjFmQu.js +0 -8
  354. package/dist/src/transform-rmwJT5JQ.js +0 -7
  355. package/dist/src/transformersAvailability-eJooj0gX.js +0 -35
@@ -1,123 +1,162 @@
1
- #!/usr/bin/env node
2
- import "./chunk-DHDDz29n.js";
3
- import { C as getEnvString, o as logger_default } from "./logger-LSBxlt7a.js";
4
- import { F as VERSION, f as REQUEST_TIMEOUT_MS, n as fetchWithProxy } from "./fetch-CXZI9RRr.js";
5
- import "./cloud-CZ-q9Ier.js";
6
- import "./types-CXQduE9o.js";
7
- import "./cache-jsiwsAJv.js";
8
- import "./util-_h4pVqrz.js";
9
- import "./esm-B9dPm_BF.js";
10
- import "./pythonUtils-CcT5LH1M.js";
11
- import "./genaiTracer-CqNnnXrE.js";
12
- import { t as OpenAiChatCompletionProvider } from "./chat-BcPjZXIp.js";
13
- import "./transform-DeGlxb0D.js";
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 = path.join(os.homedir(), ".openclaw", "openclaw.json");
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 cleaned = stripJson5Syntax(fs.readFileSync(configPath, "utf-8"));
87
- const config = JSON.parse(cleaned);
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
- logger_default.debug(`Failed to read OpenClaw config at ${configPath}: ${err}`);
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 environment.
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
- if (config?.gateway_url) return config.gateway_url;
103
- const envUrl = env?.OPENCLAW_GATEWAY_URL || getEnvString("OPENCLAW_GATEWAY_URL");
104
- if (envUrl) return envUrl;
105
- const openclawConfig = readOpenClawConfig();
106
- if (openclawConfig?.gateway) {
107
- const port = openclawConfig.gateway.port ?? DEFAULT_GATEWAY_PORT;
108
- const bind = openclawConfig.gateway.bind;
109
- return `http://${!bind || bind === "loopback" || bind === "0.0.0.0" || bind === "::" ? DEFAULT_GATEWAY_HOST : bind}:${port}`;
110
- }
111
- return `http://${DEFAULT_GATEWAY_HOST}:${DEFAULT_GATEWAY_PORT}`;
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 auth token from config, env overrides, or environment.
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
- if (config?.auth_token) return config.auth_token;
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
- authToken;
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 = resolveGatewayUrl(this.openclawConfig, env);
190
- this.authToken = resolveAuthToken(this.openclawConfig, env);
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 wsUrl = this.gatewayUrl.replace(/^http(s?):\/\//, "ws$1://");
248
+ const sessionKey = this.openclawConfig.session_key || `promptfoo-${crypto.randomUUID()}`;
208
249
  return new Promise((resolve) => {
209
- const ws = new WebSocket(wsUrl);
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 timeout = setTimeout(() => {
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
- logger_default.debug("[OpenClaw Agent] Failed to parse WS frame");
282
+ logger.debug("[OpenClaw Agent] Failed to parse WS frame");
246
283
  return;
247
284
  }
248
- logger_default.debug("[OpenClaw Agent] Frame received", {
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.authToken && { auth: { token: this.authToken } }
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
- ...this.openclawConfig.session_key && { sessionKey: this.openclawConfig.session_key },
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
- runId = frame.payload?.runId;
304
- if (runId) ws.send(JSON.stringify({
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 token from:
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: openclaw:tools:bash → tool="bash"
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:bash - invoke the bash tool
426
- * openclaw:tools:agents_list - invoke the agents_list tool
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 = { "Content-Type": "application/json" };
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
- logger_default.debug(`[OpenClaw Tool] POST ${url}`, {
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:bash → OpenClawToolInvokeProvider('bash')
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
- //# sourceMappingURL=openclaw-a3lylB-V.js.map
579
+
580
+ //# sourceMappingURL=openclaw-DuvJKEW5.js.map