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,108 +1,164 @@
1
- import { A as fetchWithProxy, I as VERSION, M as REQUEST_TIMEOUT_MS, P as logger_default, d as OpenAiChatCompletionProvider, l as OpenAiResponsesProvider, z as getEnvString } from "./server/index.js";
1
+ #!/usr/bin/env node
2
+ import { C as getEnvString, o as logger } from "./logger-KkObSCzq.js";
3
+ import { N as VERSION, f as REQUEST_TIMEOUT_MS, n as fetchWithProxy } from "./fetch-Dxpd4_sr.js";
4
+ import "./cloud-C0dlstV_.js";
5
+ import "./types-Cbd8uOMq.js";
6
+ import "./cache-BVeDlD87.js";
7
+ import "./util-C1CeHl-P.js";
8
+ import "./esm-C03C-mv3.js";
9
+ import "./pythonUtils-C3py6GC1.js";
10
+ import "./genaiTracer-C1rxGO8Q.js";
11
+ import { t as OpenAiChatCompletionProvider } from "./chat-BiKyneZl.js";
12
+ import "./transform-D5HsjduX.js";
13
+ import { t as OpenAiResponsesProvider } from "./responses-WNGNYe3K.js";
14
+ import "./openai-DhbB7eWK.js";
15
+ import "./util-CMy69ZgQ.js";
2
16
  import fs from "fs";
3
17
  import path from "path";
4
18
  import os from "os";
5
19
  import crypto from "crypto";
6
20
  import WebSocket from "ws";
7
-
21
+ import JSON5 from "json5";
8
22
  //#region src/providers/openclaw/shared.ts
9
23
  const DEFAULT_GATEWAY_PORT = 18789;
10
24
  const DEFAULT_GATEWAY_HOST = "127.0.0.1";
11
25
  /**
12
- * Strip JSON5 syntax (comments and trailing commas) for JSON.parse compatibility.
13
- * Uses a state machine to avoid corrupting strings containing // or slash characters.
14
- */
15
- function stripJson5Syntax(raw) {
16
- let result = "";
17
- let i = 0;
18
- let inString = false;
19
- let stringQuote = "";
20
- let escape = false;
21
- while (i < raw.length) {
22
- const ch = raw[i];
23
- if (inString) {
24
- result += ch;
25
- if (escape) escape = false;
26
- else if (ch === "\\") escape = true;
27
- else if (ch === stringQuote) inString = false;
28
- i++;
29
- continue;
30
- }
31
- if (ch === "\"" || ch === "'") {
32
- inString = true;
33
- stringQuote = ch;
34
- result += ch;
35
- i++;
36
- } else if (ch === "/" && raw[i + 1] === "/") while (i < raw.length && raw[i] !== "\n") i++;
37
- else if (ch === "/" && raw[i + 1] === "*") {
38
- i += 2;
39
- while (i < raw.length - 1 && !(raw[i] === "*" && raw[i + 1] === "/")) i++;
40
- if (i < raw.length - 1 && raw[i] === "*" && raw[i + 1] === "/") i += 2;
41
- } else if (ch === ",") {
42
- let j = i + 1;
43
- while (j < raw.length && (raw[j] === " " || raw[j] === " " || raw[j] === "\n" || raw[j] === "\r")) j++;
44
- if (j < raw.length && (raw[j] === "}" || raw[j] === "]")) i++;
45
- else {
46
- result += ch;
47
- i++;
48
- }
49
- } else {
50
- result += ch;
51
- i++;
52
- }
53
- }
54
- return result;
55
- }
56
- /**
57
26
  * Cached config to avoid re-reading the file multiple times during provider init.
58
27
  */
59
28
  let cachedConfig;
29
+ let cachedConfigPath;
30
+ function resolveConfigPath(env) {
31
+ return env?.OPENCLAW_CONFIG_PATH || getEnvString("OPENCLAW_CONFIG_PATH") || path.join(os.homedir(), ".openclaw", "openclaw.json");
32
+ }
33
+ function normalizeGatewayUrl(url, transport) {
34
+ const trimmed = url.trim();
35
+ if (!trimmed) return;
36
+ if (transport === "http") {
37
+ if (trimmed.startsWith("wss://")) return `https://${trimmed.slice(6)}`;
38
+ if (trimmed.startsWith("ws://")) return `http://${trimmed.slice(5)}`;
39
+ return trimmed;
40
+ }
41
+ if (trimmed.startsWith("https://")) return `wss://${trimmed.slice(8)}`;
42
+ if (trimmed.startsWith("http://")) return `ws://${trimmed.slice(7)}`;
43
+ return trimmed;
44
+ }
45
+ function resolveGatewayHost(gatewayConfig) {
46
+ const bind = gatewayConfig?.bind?.trim();
47
+ const customBindHost = gatewayConfig?.customBindHost?.trim();
48
+ 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;
49
+ if (bind === "custom") {
50
+ if (!customBindHost || customBindHost === "0.0.0.0" || customBindHost === "::" || customBindHost === "127.0.0.1" || customBindHost === "localhost" || customBindHost === "::1") return DEFAULT_GATEWAY_HOST;
51
+ return customBindHost;
52
+ }
53
+ return bind;
54
+ }
55
+ function buildLocalGatewayUrl(gatewayConfig, transport) {
56
+ const scheme = transport === "ws" ? gatewayConfig?.tls?.enabled ? "wss" : "ws" : gatewayConfig?.tls?.enabled ? "https" : "http";
57
+ const port = gatewayConfig?.port ?? 18789;
58
+ return `${scheme}://${resolveGatewayHost(gatewayConfig)}:${port}`;
59
+ }
60
+ function resolveGatewayUrlFromConfig(openclawConfig, transport) {
61
+ const gatewayConfig = openclawConfig?.gateway;
62
+ if (!gatewayConfig) return;
63
+ if (gatewayConfig.mode === "remote") {
64
+ const remoteUrl = normalizeGatewayUrl(gatewayConfig.remote?.url ?? "", transport);
65
+ if (remoteUrl) return remoteUrl;
66
+ }
67
+ return buildLocalGatewayUrl(gatewayConfig, transport);
68
+ }
69
+ function toAuthSecret(kind, value) {
70
+ const trimmed = value?.trim();
71
+ return trimmed ? {
72
+ kind,
73
+ value: trimmed
74
+ } : void 0;
75
+ }
76
+ function resolveAuthSecretFromConfig(openclawConfig) {
77
+ const gatewayConfig = openclawConfig?.gateway;
78
+ const authMode = gatewayConfig?.auth?.mode?.trim();
79
+ const preferRemoteCredentials = gatewayConfig?.mode === "remote";
80
+ const localToken = toAuthSecret("token", gatewayConfig?.auth?.token);
81
+ const localPassword = toAuthSecret("password", gatewayConfig?.auth?.password);
82
+ const remoteToken = toAuthSecret("token", gatewayConfig?.remote?.token);
83
+ const remotePassword = toAuthSecret("password", gatewayConfig?.remote?.password);
84
+ if (preferRemoteCredentials) {
85
+ if (authMode === "password") return remotePassword || localPassword || remoteToken || localToken;
86
+ if (authMode === "token") return remoteToken || localToken || remotePassword || localPassword;
87
+ return remoteToken || remotePassword || localToken || localPassword;
88
+ }
89
+ if (authMode === "password") return localPassword || remotePassword || localToken || remoteToken;
90
+ if (authMode === "token") return localToken || remoteToken || localPassword || remotePassword;
91
+ return localToken || localPassword || remoteToken || remotePassword;
92
+ }
60
93
  /**
61
- * Read and parse the OpenClaw configuration file.
94
+ * Read and parse the active OpenClaw configuration file.
62
95
  * Results are cached based on file modification time.
63
96
  * Returns undefined if the file doesn't exist or can't be parsed.
64
97
  */
65
- function readOpenClawConfig() {
66
- const configPath = path.join(os.homedir(), ".openclaw", "openclaw.json");
98
+ function readOpenClawConfig(env) {
99
+ const configPath = resolveConfigPath(env);
67
100
  try {
68
101
  if (!fs.existsSync(configPath)) return;
69
102
  const mtime = fs.statSync(configPath).mtimeMs;
70
- if (cachedConfig && cachedConfig.mtime === mtime) return cachedConfig.config;
71
- const cleaned = stripJson5Syntax(fs.readFileSync(configPath, "utf-8"));
72
- const config = JSON.parse(cleaned);
103
+ if (cachedConfig && cachedConfigPath === configPath && cachedConfig.mtime === mtime) return cachedConfig.config;
104
+ const raw = fs.readFileSync(configPath, "utf-8");
105
+ const config = JSON5.parse(raw);
73
106
  cachedConfig = {
74
107
  config,
75
108
  mtime
76
109
  };
110
+ cachedConfigPath = configPath;
77
111
  return config;
78
112
  } catch (err) {
79
- logger_default.debug(`Failed to read OpenClaw config at ${configPath}: ${err}`);
113
+ logger.debug(`Failed to read OpenClaw config at ${configPath}: ${err}`);
80
114
  return;
81
115
  }
82
116
  }
83
117
  /**
84
- * Auto-detect the OpenClaw gateway URL from config, env overrides, or environment.
118
+ * Auto-detect the OpenClaw gateway URL from config, env overrides, or the active config file.
85
119
  */
86
120
  function resolveGatewayUrl(config, env) {
87
- if (config?.gateway_url) return config.gateway_url;
88
- const envUrl = env?.OPENCLAW_GATEWAY_URL || getEnvString("OPENCLAW_GATEWAY_URL");
89
- if (envUrl) return envUrl;
90
- const openclawConfig = readOpenClawConfig();
91
- if (openclawConfig?.gateway) {
92
- const port = openclawConfig.gateway.port ?? DEFAULT_GATEWAY_PORT;
93
- const bind = openclawConfig.gateway.bind;
94
- return `http://${!bind || bind === "loopback" || bind === "0.0.0.0" || bind === "::" ? DEFAULT_GATEWAY_HOST : bind}:${port}`;
95
- }
96
- return `http://${DEFAULT_GATEWAY_HOST}:${DEFAULT_GATEWAY_PORT}`;
121
+ return resolveGatewayTransportUrl(config, env, "http");
122
+ }
123
+ function resolveGatewayWsUrl(config, env) {
124
+ return resolveGatewayTransportUrl(config, env, "ws");
125
+ }
126
+ function resolveGatewayTransportUrl(config, env, transport) {
127
+ const configUrl = config?.gateway_url?.trim();
128
+ if (configUrl) return normalizeGatewayUrl(configUrl, transport) || configUrl;
129
+ const trimmedEnvUrl = (env?.OPENCLAW_GATEWAY_URL || getEnvString("OPENCLAW_GATEWAY_URL") || env?.CLAWDBOT_GATEWAY_URL || getEnvString("CLAWDBOT_GATEWAY_URL"))?.trim();
130
+ if (trimmedEnvUrl) return normalizeGatewayUrl(trimmedEnvUrl, transport) || trimmedEnvUrl;
131
+ const resolvedUrl = resolveGatewayUrlFromConfig(readOpenClawConfig(env), transport);
132
+ if (resolvedUrl) return resolvedUrl;
133
+ return `${transport === "ws" ? "ws" : "http"}://${DEFAULT_GATEWAY_HOST}:${DEFAULT_GATEWAY_PORT}`;
134
+ }
135
+ function resolveAuthSecret(config, env) {
136
+ if (config?.auth_token) return {
137
+ kind: "token",
138
+ value: config.auth_token
139
+ };
140
+ if (config?.auth_password) return {
141
+ kind: "password",
142
+ value: config.auth_password
143
+ };
144
+ const envToken = env?.OPENCLAW_GATEWAY_TOKEN || getEnvString("OPENCLAW_GATEWAY_TOKEN") || env?.CLAWDBOT_GATEWAY_TOKEN || getEnvString("CLAWDBOT_GATEWAY_TOKEN");
145
+ if (envToken) return {
146
+ kind: "token",
147
+ value: envToken
148
+ };
149
+ const envPassword = env?.OPENCLAW_GATEWAY_PASSWORD || getEnvString("OPENCLAW_GATEWAY_PASSWORD") || env?.CLAWDBOT_GATEWAY_PASSWORD || getEnvString("CLAWDBOT_GATEWAY_PASSWORD");
150
+ if (envPassword) return {
151
+ kind: "password",
152
+ value: envPassword
153
+ };
154
+ return resolveAuthSecretFromConfig(readOpenClawConfig(env));
97
155
  }
98
156
  /**
99
- * Auto-detect the OpenClaw gateway auth token from config, env overrides, or environment.
157
+ * Auto-detect the OpenClaw gateway bearer secret from config, env overrides, or the active
158
+ * config file. OpenClaw accepts either a token or password as the HTTP bearer secret.
100
159
  */
101
160
  function resolveAuthToken(config, env) {
102
- if (config?.auth_token) return config.auth_token;
103
- const envToken = env?.OPENCLAW_GATEWAY_TOKEN || getEnvString("OPENCLAW_GATEWAY_TOKEN");
104
- if (envToken) return envToken;
105
- return readOpenClawConfig()?.gateway?.auth?.token;
161
+ return resolveAuthSecret(config, env)?.value;
106
162
  }
107
163
  /**
108
164
  * Build common OpenClaw headers for agent-id and session-key.
@@ -137,7 +193,6 @@ function buildOpenClawProviderOptions(agentId, providerOptions) {
137
193
  }
138
194
  };
139
195
  }
140
-
141
196
  //#endregion
142
197
  //#region src/providers/openclaw/agent.ts
143
198
  const OPENCLAW_PROTOCOL_VERSION = 3;
@@ -163,7 +218,8 @@ const OPENCLAW_PROTOCOL_VERSION = 3;
163
218
  var OpenClawAgentProvider = class {
164
219
  agentId;
165
220
  gatewayUrl;
166
- authToken;
221
+ authKind;
222
+ authSecret;
167
223
  openclawConfig;
168
224
  timeoutMs;
169
225
  activeConnections = /* @__PURE__ */ new Set();
@@ -171,8 +227,10 @@ var OpenClawAgentProvider = class {
171
227
  this.agentId = agentId;
172
228
  this.openclawConfig = providerOptions.config || {};
173
229
  const env = providerOptions.env;
174
- this.gatewayUrl = resolveGatewayUrl(this.openclawConfig, env);
175
- this.authToken = resolveAuthToken(this.openclawConfig, env);
230
+ this.gatewayUrl = resolveGatewayWsUrl(this.openclawConfig, env);
231
+ const authSecret = resolveAuthSecret(this.openclawConfig, env);
232
+ this.authKind = authSecret?.kind;
233
+ this.authSecret = authSecret?.value;
176
234
  this.timeoutMs = this.openclawConfig.timeoutMs ?? REQUEST_TIMEOUT_MS;
177
235
  }
178
236
  id() {
@@ -189,9 +247,9 @@ var OpenClawAgentProvider = class {
189
247
  this.activeConnections.clear();
190
248
  }
191
249
  async callApi(prompt) {
192
- const wsUrl = this.gatewayUrl.replace(/^http(s?):\/\//, "ws$1://");
250
+ const sessionKey = this.openclawConfig.session_key || `promptfoo-${crypto.randomUUID()}`;
193
251
  return new Promise((resolve) => {
194
- const ws = new WebSocket(wsUrl);
252
+ const ws = new WebSocket(this.gatewayUrl);
195
253
  this.activeConnections.add(ws);
196
254
  const agentRequestId = crypto.randomUUID();
197
255
  const waitRequestId = crypto.randomUUID();
@@ -200,37 +258,33 @@ var OpenClawAgentProvider = class {
200
258
  let runId;
201
259
  let connected = false;
202
260
  let resolved = false;
203
- const timeout = setTimeout(() => {
204
- if (!resolved) {
205
- resolved = true;
206
- ws.close();
207
- resolve({ error: `OpenClaw agent request timed out after ${this.timeoutMs}ms` });
208
- }
209
- }, this.timeoutMs);
210
- const finish = (result) => {
261
+ const finish = (result, closeSocket = true) => {
211
262
  if (resolved) return;
212
263
  resolved = true;
213
264
  clearTimeout(timeout);
214
265
  this.activeConnections.delete(ws);
215
- ws.close();
266
+ if (closeSocket) ws.close();
216
267
  resolve(result);
217
268
  };
269
+ const timeout = setTimeout(() => {
270
+ finish({ error: `OpenClaw agent request timed out after ${this.timeoutMs}ms` });
271
+ }, this.timeoutMs);
218
272
  ws.on("error", (err) => {
219
273
  finish({ error: `OpenClaw WebSocket error: ${err.message}` });
220
274
  });
221
275
  ws.on("close", () => {
222
276
  this.activeConnections.delete(ws);
223
- if (!resolved) finish({ error: "OpenClaw WebSocket connection closed unexpectedly" });
277
+ if (!resolved) finish({ error: "OpenClaw WebSocket connection closed unexpectedly" }, false);
224
278
  });
225
279
  ws.on("message", (data) => {
226
280
  let frame;
227
281
  try {
228
282
  frame = JSON.parse(data.toString());
229
283
  } catch {
230
- logger_default.debug("[OpenClaw Agent] Failed to parse WS frame");
284
+ logger.debug("[OpenClaw Agent] Failed to parse WS frame");
231
285
  return;
232
286
  }
233
- logger_default.debug("[OpenClaw Agent] Frame received", {
287
+ logger.debug("[OpenClaw Agent] Frame received", {
234
288
  type: frame.type,
235
289
  event: frame.event,
236
290
  id: frame.id
@@ -255,7 +309,7 @@ var OpenClawAgentProvider = class {
255
309
  caps: [],
256
310
  commands: [],
257
311
  permissions: {},
258
- ...this.authToken && { auth: { token: this.authToken } }
312
+ ...this.authSecret && this.authKind && { auth: this.authKind === "password" ? { password: this.authSecret } : { token: this.authSecret } }
259
313
  }
260
314
  }));
261
315
  return;
@@ -274,8 +328,9 @@ var OpenClawAgentProvider = class {
274
328
  message: prompt,
275
329
  agentId: this.agentId,
276
330
  idempotencyKey,
277
- ...this.openclawConfig.session_key && { sessionKey: this.openclawConfig.session_key },
278
- ...this.openclawConfig.thinking_level && { thinking: this.openclawConfig.thinking_level }
331
+ sessionKey,
332
+ ...this.openclawConfig.thinking_level && { thinking: this.openclawConfig.thinking_level },
333
+ ...this.openclawConfig.extra_system_prompt && { extraSystemPrompt: this.openclawConfig.extra_system_prompt }
279
334
  }
280
335
  }));
281
336
  return;
@@ -285,8 +340,17 @@ var OpenClawAgentProvider = class {
285
340
  finish({ error: `OpenClaw agent error: ${frame.error?.message || "unknown error"}` });
286
341
  return;
287
342
  }
288
- runId = frame.payload?.runId;
289
- if (runId) ws.send(JSON.stringify({
343
+ const payload = frame.payload;
344
+ runId = typeof payload?.runId === "string" && payload.runId.trim() ? payload.runId : void 0;
345
+ if (!runId) {
346
+ logger.warn("[OpenClaw Agent] Missing runId in accepted response", {
347
+ agentId: this.agentId,
348
+ payload
349
+ });
350
+ finish({ error: "OpenClaw agent error: gateway accepted request without a runId" });
351
+ return;
352
+ }
353
+ ws.send(JSON.stringify({
290
354
  type: "req",
291
355
  id: waitRequestId,
292
356
  method: "agent.wait",
@@ -312,17 +376,17 @@ var OpenClawAgentProvider = class {
312
376
  });
313
377
  }
314
378
  };
315
-
316
379
  //#endregion
317
380
  //#region src/providers/openclaw/chat.ts
318
381
  /**
319
382
  * OpenClaw chat provider extends OpenAI chat completion provider.
320
383
  *
321
384
  * OpenClaw exposes an OpenAI-compatible HTTP API at /v1/chat/completions.
322
- * This provider auto-detects gateway URL and auth token from:
323
- * 1. Explicit config (gateway_url, auth_token)
324
- * 2. Environment variables (OPENCLAW_GATEWAY_URL, OPENCLAW_GATEWAY_TOKEN)
325
- * 3. ~/.openclaw/openclaw.json
385
+ * This provider auto-detects gateway URL and bearer auth from:
386
+ * 1. Explicit config (gateway_url, auth_token, auth_password)
387
+ * 2. Environment variables (OPENCLAW_GATEWAY_URL, OPENCLAW_GATEWAY_TOKEN, OPENCLAW_GATEWAY_PASSWORD)
388
+ * 3. The active OpenClaw config file (OPENCLAW_CONFIG_PATH or ~/.openclaw/openclaw.json),
389
+ * including gateway.remote.url and gateway.tls.enabled
326
390
  *
327
391
  * Usage:
328
392
  * openclaw - default agent (main)
@@ -351,7 +415,6 @@ var OpenClawChatProvider = class extends OpenAiChatCompletionProvider {
351
415
  return this.config.apiBaseUrl || this.getApiUrlDefault();
352
416
  }
353
417
  };
354
-
355
418
  //#endregion
356
419
  //#region src/providers/openclaw/responses.ts
357
420
  /**
@@ -394,21 +457,25 @@ var OpenClawResponsesProvider = class extends OpenAiResponsesProvider {
394
457
  return result;
395
458
  }
396
459
  };
397
-
398
460
  //#endregion
399
461
  //#region src/providers/openclaw/tools.ts
400
462
  /**
401
463
  * OpenClaw Tool Invoke Provider
402
464
  *
403
465
  * Simple HTTP provider for direct tool invocation via POST /tools/invoke.
404
- * The tool name is extracted from the provider path: openclaw:tools:bash → tool="bash"
466
+ * The tool name is extracted from the provider path:
467
+ * openclaw:tools:sessions_list → tool="sessions_list"
405
468
  *
406
469
  * The prompt is parsed as JSON for tool arguments. If it's not valid JSON,
407
470
  * it's passed as a single `input` argument.
408
471
  *
409
472
  * Usage:
410
- * openclaw:tools:bash - invoke the bash tool
411
- * openclaw:tools:agents_list - invoke the agents_list tool
473
+ * openclaw:tools:sessions_list - invoke the sessions_list tool
474
+ * openclaw:tools:session_status - invoke the session_status tool
475
+ *
476
+ * Optional config:
477
+ * action - tool sub-action, forwarded as body.action
478
+ * dry_run - dry-run hint, forwarded as body.dryRun
412
479
  */
413
480
  var OpenClawToolInvokeProvider = class {
414
481
  toolName;
@@ -441,14 +508,19 @@ var OpenClawToolInvokeProvider = class {
441
508
  args = { input: prompt };
442
509
  }
443
510
  const url = `${this.gatewayUrl}/tools/invoke`;
444
- const headers = { "Content-Type": "application/json" };
511
+ const headers = {
512
+ "Content-Type": "application/json",
513
+ ...this.openclawConfig.headers || {}
514
+ };
445
515
  if (this.authToken) headers["Authorization"] = `Bearer ${this.authToken}`;
446
516
  const body = {
447
517
  tool: this.toolName,
518
+ ...this.openclawConfig.action && { action: this.openclawConfig.action },
448
519
  args,
520
+ ...typeof this.openclawConfig.dry_run === "boolean" && { dryRun: this.openclawConfig.dry_run },
449
521
  ...this.openclawConfig.session_key && { sessionKey: this.openclawConfig.session_key }
450
522
  };
451
- logger_default.debug(`[OpenClaw Tool] POST ${url}`, {
523
+ logger.debug(`[OpenClaw Tool] POST ${url}`, {
452
524
  tool: this.toolName,
453
525
  args
454
526
  });
@@ -473,7 +545,6 @@ var OpenClawToolInvokeProvider = class {
473
545
  }
474
546
  }
475
547
  };
476
-
477
548
  //#endregion
478
549
  //#region src/providers/openclaw/index.ts
479
550
  /**
@@ -487,7 +558,7 @@ var OpenClawToolInvokeProvider = class {
487
558
  * openclaw:responses:X → OpenClawResponsesProvider('X')
488
559
  * openclaw:agent → OpenClawAgentProvider('main')
489
560
  * openclaw:agent:X → OpenClawAgentProvider('X')
490
- * openclaw:tools:bash → OpenClawToolInvokeProvider('bash')
561
+ * openclaw:tools:sessions_list → OpenClawToolInvokeProvider('sessions_list')
491
562
  */
492
563
  function createOpenClawProvider(providerPath, providerOptions = {}, env) {
493
564
  const splits = providerPath.split(":");
@@ -505,7 +576,7 @@ function createOpenClawProvider(providerPath, providerOptions = {}, env) {
505
576
  }
506
577
  return new OpenClawChatProvider(splits.length > 1 ? splits.slice(1).join(":") : "main", opts);
507
578
  }
508
-
509
579
  //#endregion
510
580
  export { createOpenClawProvider };
511
- //# sourceMappingURL=openclaw-A-3_loM7.js.map
581
+
582
+ //# sourceMappingURL=openclaw-DiSz3I5L.js.map