promptfoo 0.121.1 → 0.121.3

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 (316) hide show
  1. package/README.md +2 -0
  2. package/dist/src/{accounts-xrUGFA6n.js → accounts-B2XmGjty.js} +5 -5
  3. package/dist/src/{accounts-Bx-x3bmW.cjs → accounts-BPyfpSeU.cjs} +5 -5
  4. package/dist/src/{accounts-CMqkzrVf.js → accounts-CFLK3mnD.js} +6 -6
  5. package/dist/src/{accounts-BgNJDBE6.js → accounts-Xatc0RYb.js} +5 -5
  6. package/dist/src/{agentic-utils-BKIN5PKu.js → agentic-utils-36epdqwB.js} +3 -3
  7. package/dist/src/{cometapi-DkXrKi5z.js → agentic-utils-D8yXo5Lm.js} +4 -61
  8. package/dist/src/{cometapi-vY6aDZgo.cjs → agentic-utils-DAVsChuB.cjs} +24 -62
  9. package/dist/src/agentic-utils-DIYAAYE7.js +153 -0
  10. package/dist/src/{agents-C-dDThPK.js → agents-BBVJCIYr.js} +226 -13
  11. package/dist/src/{agents-CErsqg5U.cjs → agents-BBWxKSM0.cjs} +7 -7
  12. package/dist/src/{agents-Dy2YpZpa.js → agents-Bqgfdokm.js} +227 -14
  13. package/dist/src/{agents-B0f4HICh.cjs → agents-CAYbM7qD.cjs} +226 -13
  14. package/dist/src/{agents-CVIn-Utx.js → agents-CLQ-P15P.js} +7 -7
  15. package/dist/src/{agents-DeH4Gu94.js → agents-CgBniSlI.js} +8 -8
  16. package/dist/src/{agents-CXknwsFX.js → agents-DSSTV4bv.js} +226 -13
  17. package/dist/src/{agents-aF4-T121.js → agents-wg3ohknq.js} +7 -7
  18. package/dist/src/{aimlapi-tg0Gkcvr.cjs → aimlapi-Bv8Fmc-b.cjs} +14 -14
  19. package/dist/src/{aimlapi-BNfTBexL.js → aimlapi-BwGC1TtS.js} +13 -13
  20. package/dist/src/{aimlapi-BAGZDo5G.js → aimlapi-DaC3qZ-o.js} +14 -14
  21. package/dist/src/{aimlapi-DHRKlBEA.js → aimlapi-MgSLdvy7.js} +13 -13
  22. package/dist/src/app/assets/index-B6l9CVVb.js +439 -0
  23. package/dist/src/app/assets/index-DyZ0Ep37.css +1 -0
  24. package/dist/src/app/assets/sync-CStkzc6u.js +4 -0
  25. package/dist/src/app/assets/vendor-charts-BnDWwBlI.js +36 -0
  26. package/dist/src/app/assets/vendor-markdown-Bz7N-ca6.js +29 -0
  27. package/dist/src/app/index.html +4 -4
  28. package/dist/src/{audio-tf_NBjlC.js → audio-Bn44pQxv.js} +4 -4
  29. package/dist/src/{audio-CHQ4r-RV.js → audio-DDA5WHdx.js} +4 -4
  30. package/dist/src/{audio-BWeaWovU.cjs → audio-DVFjQ67_.cjs} +4 -4
  31. package/dist/src/{audio-BRODU0UK.js → audio-DjU9GswO.js} +5 -5
  32. package/dist/src/{base-DBtwl2FR.cjs → base-BboXIF_0.cjs} +3 -3
  33. package/dist/src/{base-B4QJRyFS.js → base-CKjwebIH.js} +3 -3
  34. package/dist/src/{base-B0tcrnq_.js → base-CqzQ4K8j.js} +3 -3
  35. package/dist/src/{base-fEDN28WM.js → base-Cz2ZC_iA.js} +3 -3
  36. package/dist/src/{blobs-BAU-dXan.js → blobs-B1JriOyi.js} +3 -3
  37. package/dist/src/{blobs-qTYm-1PY.js → blobs-BUWmKWzo.js} +3 -3
  38. package/dist/src/{blobs-DvS-O6be.cjs → blobs-C6j0bvFz.cjs} +3 -3
  39. package/dist/src/{blobs-Bpg5rH6i.js → blobs-DXTl6J3H.js} +3 -3
  40. package/dist/src/{cache-COish3-W.cjs → cache-C5yFZ4gC.cjs} +75 -58
  41. package/dist/src/{cache-8XhNqPKW.js → cache-CaT5tPgo.js} +75 -58
  42. package/dist/src/cache-CyCanoMu.js +6 -0
  43. package/dist/src/{cache-CG0SlR1d.js → cache-DSqR6ezl.js} +75 -58
  44. package/dist/src/cache-Df_QFDNu.cjs +5 -0
  45. package/dist/src/{cache-D3eqDYGU.js → cache-HP0NP4k3.js} +75 -58
  46. package/dist/src/{chat-DHMH-N64.js → chat-B-52XYI1.js} +12 -12
  47. package/dist/src/{chat-BKm79wib.js → chat-B0iaWhoh.js} +16 -14
  48. package/dist/src/{chat-DxysjBvt.js → chat-BE0qTA8e.js} +13 -13
  49. package/dist/src/{chat-CRWNNq73.js → chat-BEwdgGEg.js} +16 -14
  50. package/dist/src/{chat-2K608PeQ.cjs → chat-BtIKkLKx.cjs} +13 -13
  51. package/dist/src/{chat-DaqekjFr.cjs → chat-CM8qWR3_.cjs} +17 -15
  52. package/dist/src/{chat-CM_kyI8B.js → chat-DK1U-eZ-.js} +12 -12
  53. package/dist/src/{chat-CznLWr_D.js → chat-pxmiVpWe.js} +16 -14
  54. package/dist/src/{chatkit-65VXf5SR.js → chatkit-BYGQlHlV.js} +4 -4
  55. package/dist/src/{chatkit-DKyPi1Gs.cjs → chatkit-Cx174XI3.cjs} +4 -4
  56. package/dist/src/{chatkit-BxFvW8KY.js → chatkit-_8eJqKcD.js} +4 -4
  57. package/dist/src/{chatkit-Be-Q-a9F.js → chatkit-a2D6mY6s.js} +4 -4
  58. package/dist/src/{claude-agent-sdk-CJH22shf.cjs → claude-agent-sdk-8ddRp1L2.cjs} +35 -17
  59. package/dist/src/{claude-agent-sdk-Dy5lT-Tx.js → claude-agent-sdk-Bq5EArsX.js} +33 -15
  60. package/dist/src/{claude-agent-sdk-BLTu0WBO.js → claude-agent-sdk-CMjh4LFH.js} +33 -15
  61. package/dist/src/{claude-agent-sdk-D6_k9FKA.js → claude-agent-sdk-HgbFioFw.js} +33 -15
  62. package/dist/src/cloud-DE3t1-ZI.js +4 -0
  63. package/dist/src/{cloud-Bc9526yV.js → cloud-z8KZpUoa.js} +3 -3
  64. package/dist/src/{cloudflare-ai-CWWJCRim.js → cloudflare-ai-BGyXlpXJ.js} +13 -13
  65. package/dist/src/{cloudflare-ai-C9r2sRhw.js → cloudflare-ai-Bbp26N0L.js} +13 -13
  66. package/dist/src/{cloudflare-ai-ClWSdor4.cjs → cloudflare-ai-C62x6MQG.cjs} +14 -14
  67. package/dist/src/{cloudflare-ai-ICsOuD-z.js → cloudflare-ai-DdKP9TKT.js} +14 -14
  68. package/dist/src/{cloudflare-gateway-D6xFc5pa.js → cloudflare-gateway-BwAaUgeW.js} +14 -14
  69. package/dist/src/{cloudflare-gateway-D6O7AlYb.js → cloudflare-gateway-D-e9i1Sn.js} +15 -15
  70. package/dist/src/{cloudflare-gateway-pXGHxJ47.js → cloudflare-gateway-DXhtXDRb.js} +15 -163
  71. package/dist/src/{cloudflare-gateway-C2_-KG5o.cjs → cloudflare-gateway-Dx36ftqF.cjs} +15 -15
  72. package/dist/src/{codex-sdk-DUwKWezN.js → codex-sdk-BQEw16R_.js} +180 -11
  73. package/dist/src/{codex-sdk-C6UMlxwV.js → codex-sdk-C_07GuVS.js} +180 -11
  74. package/dist/src/{codex-sdk-GGAw0qbD.js → codex-sdk-DE5G18dx.js} +180 -11
  75. package/dist/src/{codex-sdk-fAO0c3yA.cjs → codex-sdk-ZLKfDjqP.cjs} +181 -12
  76. package/dist/src/cometapi-BDyV-NNm.js +62 -0
  77. package/dist/src/cometapi-C3hOlM7-.cjs +62 -0
  78. package/dist/src/{cometapi-Bbjp5V4x.js → cometapi-hhL4TAh3.js} +14 -14
  79. package/dist/src/{cometapi-BasUi7-_.js → cometapi-sp7sJpBD.js} +15 -15
  80. package/dist/src/{completion-C_P3ypkJ.js → completion-BCimtq-h.js} +6 -6
  81. package/dist/src/{completion-6Mx_iXxK.js → completion-DCjv7RZ3.js} +6 -6
  82. package/dist/src/{completion-CDOouNzq.cjs → completion-DlXUhj5c.cjs} +6 -6
  83. package/dist/src/{completion-C5rtR_9P.js → completion-DoYy49ti.js} +6 -6
  84. package/dist/src/{createHash-CfZSc0b4.cjs → createHash-BYwImsYv.cjs} +2 -2
  85. package/dist/src/{docker-BwsKwxFs.cjs → docker-Cqj2-QVi.cjs} +14 -14
  86. package/dist/src/{docker-CZnqU1XV.js → docker-CxCkwMzc.js} +13 -13
  87. package/dist/src/{docker-DzxyDPIj.js → docker-DpguQj-w.js} +14 -14
  88. package/dist/src/{docker-5KcG-_86.js → docker-FeBni2dw.js} +13 -13
  89. package/dist/src/{esm-C03C-mv3.js → esm-7UIl0pPM.js} +2 -2
  90. package/dist/src/{esm-Cd1AjG1D.js → esm-CKWP3u_P.js} +3 -3
  91. package/dist/src/{esm-CnNt7sI4.cjs → esm-CipptfDu.cjs} +2 -2
  92. package/dist/src/{esm-CaIwzWR5.js → esm-SUNIX1x3.js} +3 -3
  93. package/dist/src/eval-7aEqoMs3.js +15 -0
  94. package/dist/src/{eval-DmFyWU7i.js → eval-BTqTn7lb.js} +10 -10
  95. package/dist/src/{evalResult-CDQiuUuf.js → evalResult-BkIhRdTe.js} +7 -7
  96. package/dist/src/evalResult-CYNHkk5A.js +12 -0
  97. package/dist/src/evalResult-CuvJeNiM.js +10 -0
  98. package/dist/src/{evalResult-CTG2AHOS.js → evalResult-DUDShQrm.js} +7 -7
  99. package/dist/src/{evalResult-Dap2CekP.cjs → evalResult-DpARzUCb.cjs} +7 -7
  100. package/dist/src/evalResult-tGdilrWt.cjs +10 -0
  101. package/dist/src/evaluator-BBUqRhz1.js +36 -0
  102. package/dist/src/{evaluator-DPFRbFIL.js → evaluator-BcvOGaam.js} +833 -79
  103. package/dist/src/{extractor-YMU_Gvt8.js → extractor-C8XwivI9.js} +6 -6
  104. package/dist/src/{extractor-CFG6bcWJ.js → extractor-CAZ2G3Kh.js} +6 -6
  105. package/dist/src/{extractor-DX36oYEv.cjs → extractor-DG3sSfXE.cjs} +6 -6
  106. package/dist/src/{extractor-M67RUtg6.js → extractor-D_wd8jxt.js} +6 -6
  107. package/dist/src/{fetch-4M3YRaqL.js → fetch-BiYv2BZc.js} +3 -3
  108. package/dist/src/{fetch-BxUk8odA.cjs → fetch-BnR9wSnm.cjs} +3 -3
  109. package/dist/src/{fetch-60Gzydls.js → fetch-CVAtKnI3.js} +3 -3
  110. package/dist/src/{fetch-BMv0O527.js → fetch-DoVRJZhJ.js} +4 -4
  111. package/dist/src/fetch-UWU706qb.js +5 -0
  112. package/dist/src/{genaiTracer-DN4dQywX.cjs → genaiTracer-BfxrvSUb.cjs} +2 -2
  113. package/dist/src/{graders-DOXycdlG.cjs → graders-BElhu9ZY.cjs} +126 -55
  114. package/dist/src/{graders-R9rYUM0d.js → graders-BXAJ0sbS.js} +120 -55
  115. package/dist/src/graders-BxfEguVY.js +32 -0
  116. package/dist/src/graders-CzVMbEnv.js +34 -0
  117. package/dist/src/{graders-CpdqD9PI.js → graders-DG7mhg-b.js} +120 -55
  118. package/dist/src/graders-DjCXfj0l.cjs +32 -0
  119. package/dist/src/{graders-CHO8EPM4.js → graders-RjHF8VfG.js} +120 -55
  120. package/dist/src/graders-kHzIWOKu.js +32 -0
  121. package/dist/src/{image-DTedmQPg.cjs → image--F58eEIn.cjs} +6 -6
  122. package/dist/src/{image-DJEvKveK.js → image-6WQXK8m8.js} +4 -4
  123. package/dist/src/{image-pAX56tPG.js → image-B8b6f36E.js} +6 -6
  124. package/dist/src/{image-BmEZqVmk.js → image-CoxZp9PZ.js} +6 -6
  125. package/dist/src/{image-gvmivTEe.js → image-DO0RYnjH.js} +5 -5
  126. package/dist/src/{image-CBBVXWuT.js → image-PoF6DN3x.js} +6 -6
  127. package/dist/src/{image-CDLQOcqT.cjs → image-fza3zuKs.cjs} +4 -4
  128. package/dist/src/{image-tL5hIOFh.js → image-xNbw5ph2.js} +4 -4
  129. package/dist/src/index.cjs +863 -110
  130. package/dist/src/index.d.cts +833 -60
  131. package/dist/src/index.d.ts +833 -60
  132. package/dist/src/index.js +860 -108
  133. package/dist/src/{interactiveCheck-BgLZUIt3.js → interactiveCheck-BnMYOjMu.js} +2 -2
  134. package/dist/src/{knowledgeBase-CoU-UQBg.js → knowledgeBase-Bi7CmDbx.js} +7 -7
  135. package/dist/src/{knowledgeBase-CLJybhnF.js → knowledgeBase-Ce3ofVan.js} +8 -8
  136. package/dist/src/{knowledgeBase-DjWPVqSb.js → knowledgeBase-DFRXPZl_.js} +7 -7
  137. package/dist/src/{knowledgeBase-wkxuRFhA.cjs → knowledgeBase-DqrLX8fy.cjs} +7 -7
  138. package/dist/src/{litellm-B9Hysuri.js → litellm-Bo2gQXpo.js} +16 -15
  139. package/dist/src/{litellm-ePxtr9F1.js → litellm-CKiAxnoM.js} +15 -14
  140. package/dist/src/{litellm-NYpQ8RQu.cjs → litellm-CnHI69aj.cjs} +16 -15
  141. package/dist/src/{litellm-CTfa0hqi.js → litellm-Tc294Jhj.js} +15 -14
  142. package/dist/src/{logger-KkObSCzq.js → logger-BcJBzSSA.js} +10 -14
  143. package/dist/src/{logger-DLcq4dWf.js → logger-BnkjG2jt.js} +10 -14
  144. package/dist/src/{logger-Cp1GPUjj.cjs → logger-D5iKBpu_.cjs} +27 -13
  145. package/dist/src/{logger-CT3IKMKA.js → logger-DO8_zM18.js} +10 -14
  146. package/dist/src/{luma-ray-BW9IRGIc.js → luma-ray-0ehMPt5N.js} +10 -10
  147. package/dist/src/{luma-ray-BE2mOt6N.js → luma-ray-C9q8rdQe.js} +9 -9
  148. package/dist/src/{luma-ray-Cm1KZBhs.js → luma-ray-DP0QA9qn.js} +9 -9
  149. package/dist/src/{luma-ray-B0GGNRc1.cjs → luma-ray-m9Ku2meV.cjs} +9 -9
  150. package/dist/src/main.js +69 -71
  151. package/dist/src/{messages-1x9atZmP.js → messages-DJNo37Ko.js} +14 -9
  152. package/dist/src/{messages-BLbWdsyt.js → messages-Dy9QecMs.js} +14 -9
  153. package/dist/src/{messages-1JrJs91T.cjs → messages-HJsyEh4o.cjs} +15 -10
  154. package/dist/src/{messages-D8EA0oDc.js → messages-biC_ex-p.js} +14 -9
  155. package/dist/src/{modelslab-C1OLRmVX.js → modelslab-B5J-ZM5c.js} +9 -9
  156. package/dist/src/{modelslab-CqXBy3U8.js → modelslab-BI458moT.js} +10 -10
  157. package/dist/src/{modelslab-X5-4LroM.js → modelslab-BTOT8FUO.js} +9 -9
  158. package/dist/src/{modelslab-DcOSFwKh.cjs → modelslab-IQbNg-r7.cjs} +9 -9
  159. package/dist/src/{nova-reel-DihqLeol.js → nova-reel-BZ9y-Y5s.js} +9 -9
  160. package/dist/src/{nova-reel-D9xfaMBs.cjs → nova-reel-CE5etkv9.cjs} +9 -9
  161. package/dist/src/{nova-reel-D2ZkOSyr.js → nova-reel-DEeQlnOJ.js} +10 -10
  162. package/dist/src/{nova-reel-BgS1ZWuK.js → nova-reel-Xw1SXLpg.js} +9 -9
  163. package/dist/src/{nova-sonic-Q3BOJeig.js → nova-sonic-DWswpN1E.js} +7 -7
  164. package/dist/src/{nova-sonic-DezhVUYT.js → nova-sonic-DXTLpi-r.js} +6 -6
  165. package/dist/src/{nova-sonic-DVu3mMIy.cjs → nova-sonic-N0yCm0vb.cjs} +6 -6
  166. package/dist/src/{nova-sonic-P-CdUMlV.js → nova-sonic-Ogqf-csn.js} +6 -6
  167. package/dist/src/{openai-DhbB7eWK.js → openai-BMcwgD5C.js} +2 -2
  168. package/dist/src/{openai-j-sE2O7r.js → openai-BcB5KlTk.js} +2 -2
  169. package/dist/src/{openai-Cuif0GEt.cjs → openai-CoxGAQwn.cjs} +2 -2
  170. package/dist/src/{openai-DElQ-fPX.js → openai-D6wITiVn.js} +2 -2
  171. package/dist/src/{openclaw-Bv1DINsX.js → openclaw-0Sv7AK3O.js} +172 -109
  172. package/dist/src/{openclaw-DAfWQn-o.cjs → openclaw-CXxbKgDH.cjs} +174 -110
  173. package/dist/src/{openclaw-BiSZPL7J.js → openclaw-D1FSCps-.js} +172 -109
  174. package/dist/src/{openclaw-D1D_ej1z.js → openclaw-D2ENvu7a.js} +173 -110
  175. package/dist/src/{opencode-sdk-D95s6SnR.js → opencode-sdk-C71Z0ehR.js} +13 -13
  176. package/dist/src/{opencode-sdk-DxUPkLT7.js → opencode-sdk-CHCs7dEb.js} +12 -12
  177. package/dist/src/{opencode-sdk-C7m-wRfI.js → opencode-sdk-DDxj4QqH.js} +12 -12
  178. package/dist/src/{opencode-sdk-CfaLN8PY.cjs → opencode-sdk-WWJhnbKr.cjs} +16 -16
  179. package/dist/src/{otlpReceiver-g3ByGaXs.js → otlpReceiver-C9KlUtxh.js} +6 -6
  180. package/dist/src/{otlpReceiver--AIRW_S4.js → otlpReceiver-CZL48YfC.js} +6 -6
  181. package/dist/src/{otlpReceiver-Bn5wGB1v.js → otlpReceiver-CavGAA6k.js} +6 -6
  182. package/dist/src/{otlpReceiver-Diec4cln.cjs → otlpReceiver-DHKqJlsz.cjs} +6 -6
  183. package/dist/src/{providerRegistry-B0RUOLI_.js → providerRegistry-B9lh-_tx.js} +2 -2
  184. package/dist/src/{providerRegistry-Civky8Ar.cjs → providerRegistry-BTDgfV5h.cjs} +2 -2
  185. package/dist/src/{providerRegistry-CD8MEar9.js → providerRegistry-BkzVH5Ba.js} +2 -2
  186. package/dist/src/{providerRegistry-DM8rZYol.js → providerRegistry-CUWki5mQ.js} +2 -2
  187. package/dist/src/providers-BSLEaIQG.js +32 -0
  188. package/dist/src/{providers-CFu-TZl-.cjs → providers-CScd1wN6.cjs} +733 -464
  189. package/dist/src/{providers-CFLy1_ji.js → providers-Ch6Mr0gn.js} +795 -526
  190. package/dist/src/{providers-BKRJTjBz.js → providers-Cn73d5sr.js} +795 -526
  191. package/dist/src/providers-D-FnDg8k.cjs +31 -0
  192. package/dist/src/providers-DEYiFVAo.js +30 -0
  193. package/dist/src/{providers-B3HvufyI.js → providers-DvddrgxL.js} +795 -526
  194. package/dist/src/providers-sS2WI8YD.js +30 -0
  195. package/dist/src/{pythonUtils-D6fwaDSg.js → pythonUtils-Bzwbgpbg.js} +3 -3
  196. package/dist/src/{pythonUtils-D5nxkQ0P.js → pythonUtils-Cpo0Ez1p.js} +3 -3
  197. package/dist/src/{pythonUtils-CTU3Y3lw.cjs → pythonUtils-dAVigVK-.cjs} +3 -3
  198. package/dist/src/{pythonUtils-C3py6GC1.js → pythonUtils-wIqk7zAf.js} +3 -3
  199. package/dist/src/{quiverai-CI6gYJVI.js → quiverai-BeofbLVc.js} +4 -4
  200. package/dist/src/{quiverai-MHSxbmmZ.js → quiverai-CCQn73lq.js} +5 -5
  201. package/dist/src/{quiverai-CLkWkyZc.cjs → quiverai-CcUhPIBg.cjs} +4 -4
  202. package/dist/src/{quiverai-C2jVwbH1.js → quiverai-DVSEqJiq.js} +4 -4
  203. package/dist/src/{render-Drod8m7K.js → render-BHl6QVq9.js} +3 -3
  204. package/dist/src/{responses-CGw0DCzh.js → responses-BKP_WYis.js} +16 -12
  205. package/dist/src/{responses-BKqJmhhc.js → responses-CQb1Tj69.js} +16 -12
  206. package/dist/src/{responses-jxdehPkC.js → responses-CgNyTPsY.js} +16 -12
  207. package/dist/src/{responses-tD4Bd4dc.cjs → responses-mo0KQDbu.cjs} +16 -12
  208. package/dist/src/rubyUtils-B1HXG4ej.cjs +4 -0
  209. package/dist/src/{rubyUtils-DhCAlxZr.cjs → rubyUtils-CGeUtCfW.cjs} +3 -3
  210. package/dist/src/{rubyUtils-Boc4HZzX.js → rubyUtils-CiVfln3g.js} +3 -3
  211. package/dist/src/{rubyUtils-BcuGX77l.js → rubyUtils-DECSbsfY.js} +3 -3
  212. package/dist/src/{rubyUtils-BUVePouc.js → rubyUtils-PgU-gHmx.js} +3 -3
  213. package/dist/src/rubyUtils-Rt6pKA96.js +5 -0
  214. package/dist/src/{sagemaker-BK4Zb993.js → sagemaker-CVv8W7so.js} +17 -17
  215. package/dist/src/{sagemaker-D2Q1c-sD.js → sagemaker-CqeASYE5.js} +17 -17
  216. package/dist/src/{sagemaker-BfiWTmvn.js → sagemaker-MUbD5V3v.js} +18 -18
  217. package/dist/src/{sagemaker-CcQHM1jV.cjs → sagemaker-jiw1wQa-.cjs} +17 -17
  218. package/dist/src/{scanner-J8CA3LsV.js → scanner-DVDeUz1r.js} +10 -10
  219. package/dist/src/server/index.js +864 -112
  220. package/dist/src/server-B0Xh1Gx-.js +7 -0
  221. package/dist/src/{server-B0PPuDw-.cjs → server-BtoCXeXI.cjs} +4 -4
  222. package/dist/src/{server-BC7XJFgr.js → server-CP9qKM40.js} +4 -4
  223. package/dist/src/{server-OAs3nBRT.js → server-Cns05F1j.js} +5 -5
  224. package/dist/src/server-DJTKu9IR.cjs +5 -0
  225. package/dist/src/{server-DbFphssR.js → server-DZ9MtCn0.js} +6 -6
  226. package/dist/src/{signal-BOTbd53Z.js → signal-C3ZTsUgi.js} +3 -3
  227. package/dist/src/{slack-DXMKtA-f.js → slack-2sdpGzbt.js} +2 -2
  228. package/dist/src/{slack-BmVAVGaK.cjs → slack-94iG3T0s.cjs} +2 -2
  229. package/dist/src/{slack-DCUPTzS2.js → slack-BR0HtO3K.js} +2 -2
  230. package/dist/src/{slack-DOdy_kyv.js → slack-DCEV-vWP.js} +2 -2
  231. package/dist/src/store-C5u6MgC8.js +6 -0
  232. package/dist/src/{store-BSc-TF2w.cjs → store-CLyU7AtI.cjs} +17 -5
  233. package/dist/src/store-CNHk-De4.cjs +5 -0
  234. package/dist/src/{store-DQLEjuEO.js → store-Cj258DgL.js} +17 -5
  235. package/dist/src/{store-D1tv90v3.js → store-P8OKm19S.js} +17 -5
  236. package/dist/src/{store-Ub2vaGJ1.js → store-VB0GP46K.js} +17 -5
  237. package/dist/src/{tables-xKANLRBD.js → tables-BEIFz2tM.js} +3 -3
  238. package/dist/src/{tables-C7K-XKWp.cjs → tables-BdZQEpRz.cjs} +3 -3
  239. package/dist/src/{tables-D36WTqKX.js → tables-DmzvLbeZ.js} +3 -3
  240. package/dist/src/{tables-5EvT_Bwn.js → tables-kC7R5kiK.js} +3 -3
  241. package/dist/src/{telemetry-C2YDkUQH.js → telemetry-BnH5VJAU.js} +4 -4
  242. package/dist/src/{telemetry-C15ziL8u.js → telemetry-BugWqKiu.js} +4 -4
  243. package/dist/src/{telemetry-DMb2Mpfm.js → telemetry-DPXLd7UE.js} +4 -4
  244. package/dist/src/telemetry-Yig0Tino.js +7 -0
  245. package/dist/src/telemetry-p8Pwqm1i.cjs +5 -0
  246. package/dist/src/{telemetry-CbrnxHp_.cjs → telemetry-re627Lre.cjs} +4 -4
  247. package/dist/src/{transcription-CL78qbOU.cjs → transcription-BvtsrzRG.cjs} +13 -13
  248. package/dist/src/{transcription-DAtxHhAM.js → transcription-CaMivnjG.js} +13 -13
  249. package/dist/src/{transcription-QHh3AH6Z.js → transcription-DOMMTu01.js} +14 -14
  250. package/dist/src/{transcription-LNZTNUUL.js → transcription-Hb3VnC4M.js} +13 -13
  251. package/dist/src/{transform-DOcQeLld.cjs → transform-0BwoBsvO.cjs} +19 -5
  252. package/dist/src/{transform-DGxXocjk.js → transform-B2-jIv68.js} +8 -6
  253. package/dist/src/{transform-DECvGmzp.js → transform-BqPkNPYm.js} +4 -4
  254. package/dist/src/{transform-aa6tmVpZ.js → transform-BzK09Q_9.js} +4 -4
  255. package/dist/src/transform-ChNIpHz7.js +6 -0
  256. package/dist/src/{transform-Cgi24fJ7.js → transform-DrleutM3.js} +8 -6
  257. package/dist/src/{transform-DGLazrMm.js → transform-DyDAwEpE.js} +8 -6
  258. package/dist/src/transform-PtQ6rAE3.cjs +5 -0
  259. package/dist/src/{transform-CzK1Q0zl.cjs → transform-ZrG2dvlo.cjs} +4 -4
  260. package/dist/src/{transform-DilY9wbS.js → transform-ljLYHEPh.js} +4 -4
  261. package/dist/src/{transformersAvailability-CEVM2GNQ.js → transformersAvailability-BGkzavwb.js} +1 -1
  262. package/dist/src/{transformersAvailability-CwayUSlh.cjs → transformersAvailability-DKoRtQLy.cjs} +1 -1
  263. package/dist/src/{types-CH3Ge2sE.js → types-CIhFeUC4.js} +45 -11
  264. package/dist/src/{types-CN_TZ2GJ.js → types-Cd3ygw8W.js} +45 -11
  265. package/dist/src/{types-LJ0r3wbR.cjs → types-D8cGDZbL.cjs} +46 -12
  266. package/dist/src/{types-CLKiCBW3.js → types-q8GXGF65.js} +45 -11
  267. package/dist/src/{util-CchiqXh_.cjs → util--9u9UVCt.cjs} +3 -3
  268. package/dist/src/{util-5cB-L7U3.js → util-BLvy9qfE.js} +7 -11
  269. package/dist/src/{util-YT5HPZaS.js → util-Bm3E9jpK.js} +7 -11
  270. package/dist/src/{util-6-GqIvzS.js → util-BtoGs5Cb.js} +18 -4
  271. package/dist/src/{util-Db0a0AFH.cjs → util-CFj4YKIn.cjs} +18 -4
  272. package/dist/src/{util-Dlz_Wvgm.js → util-CMMkIxfU.js} +7 -11
  273. package/dist/src/{util-Betm42rL.js → util-CgDCK4KI.js} +18 -4
  274. package/dist/src/{util-Yz-1aEhW.cjs → util-CuLo2pMR.cjs} +7 -11
  275. package/dist/src/{util-C-PPYSMq.js → util-DM2rTn_6.js} +18 -4
  276. package/dist/src/{util-B7T3SiBS.js → util-DMFeUvLz.js} +3 -3
  277. package/dist/src/{util-ZZH-3QZz.js → util-DbVG-yZU.js} +3 -3
  278. package/dist/src/{util-DaWTWKBK.js → util-vNmDL5DT.js} +3 -3
  279. package/dist/src/{utils-XiOAgly5.js → utils-CFxO9KGo.js} +2 -2
  280. package/dist/src/{utils-f2-Moju7.js → utils-DEuL4VNB.js} +2 -2
  281. package/dist/src/{utils-Cz9qXqII.cjs → utils-DKw8mrgr.cjs} +3 -3
  282. package/dist/src/{utils-dLokC-eR.js → utils-DOjD4dTC.js} +2 -2
  283. package/dist/tsconfig.tsbuildinfo +1 -1
  284. package/package.json +38 -38
  285. package/dist/src/app/assets/index-BFCZg7hQ.js +0 -439
  286. package/dist/src/app/assets/index-NCn4eVBv.css +0 -1
  287. package/dist/src/app/assets/sync-9qqYcY-B.js +0 -4
  288. package/dist/src/app/assets/vendor-charts-CCl15Imd.js +0 -36
  289. package/dist/src/app/assets/vendor-markdown-0tekx3KX.js +0 -29
  290. package/dist/src/cache-Bbn1Nyrd.cjs +0 -5
  291. package/dist/src/cache-BwsMSda7.js +0 -6
  292. package/dist/src/cloud-DmE0EwsY.js +0 -4
  293. package/dist/src/eval-17JizQIv.js +0 -15
  294. package/dist/src/evalResult-Cqj8pldJ.js +0 -12
  295. package/dist/src/evalResult-DvcJAWJU.cjs +0 -10
  296. package/dist/src/evalResult-Hftn-S_i.js +0 -10
  297. package/dist/src/evaluator-B2CFNt-P.js +0 -36
  298. package/dist/src/fetch-KV5kNASw.js +0 -5
  299. package/dist/src/graders-Bu0H9nXi.js +0 -32
  300. package/dist/src/graders-Cfhkvx-e.js +0 -34
  301. package/dist/src/graders-DClJVpGP.cjs +0 -32
  302. package/dist/src/graders-DcnJsrMO.js +0 -32
  303. package/dist/src/providers-C1rOSHiR.js +0 -32
  304. package/dist/src/providers-CxmDwEFf.cjs +0 -31
  305. package/dist/src/providers-Dodakqr0.js +0 -30
  306. package/dist/src/providers-GIQ2TcsA.js +0 -30
  307. package/dist/src/rubyUtils-BUHu6PhO.js +0 -5
  308. package/dist/src/rubyUtils-CP42kMvq.cjs +0 -4
  309. package/dist/src/server-B1vi21hA.js +0 -7
  310. package/dist/src/server-Cm9Kai_h.cjs +0 -5
  311. package/dist/src/store-BNmZ1KAz.cjs +0 -5
  312. package/dist/src/store-BltJg2cd.js +0 -6
  313. package/dist/src/telemetry-5BCRNBbe.cjs +0 -5
  314. package/dist/src/telemetry-D4W5hboe.js +0 -7
  315. package/dist/src/transform-DTGDnAzW.js +0 -6
  316. package/dist/src/transform-m3qNw4KP.cjs +0 -5
@@ -1,92 +1,113 @@
1
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-BMv0O527.js";
4
- import "./cloud-Bc9526yV.js";
5
- import "./types-CH3Ge2sE.js";
6
- import "./cache-CG0SlR1d.js";
7
- import "./util-YT5HPZaS.js";
8
- import "./esm-C03C-mv3.js";
9
- import "./pythonUtils-C3py6GC1.js";
2
+ import { E as getEnvString, s as logger } from "./logger-BcJBzSSA.js";
3
+ import { N as VERSION, f as REQUEST_TIMEOUT_MS, n as fetchWithProxy } from "./fetch-DoVRJZhJ.js";
4
+ import "./cloud-z8KZpUoa.js";
5
+ import "./types-CIhFeUC4.js";
6
+ import "./cache-DSqR6ezl.js";
7
+ import "./util-Bm3E9jpK.js";
8
+ import "./esm-7UIl0pPM.js";
9
+ import "./pythonUtils-wIqk7zAf.js";
10
10
  import "./genaiTracer-C1rxGO8Q.js";
11
- import { t as OpenAiChatCompletionProvider } from "./chat-CRWNNq73.js";
12
- import "./transform-Cgi24fJ7.js";
13
- import { t as OpenAiResponsesProvider } from "./responses-CGw0DCzh.js";
14
- import "./openai-DhbB7eWK.js";
15
- import "./util-C-PPYSMq.js";
11
+ import { t as OpenAiChatCompletionProvider } from "./chat-BEwdgGEg.js";
12
+ import "./transform-DrleutM3.js";
13
+ import { t as OpenAiResponsesProvider } from "./responses-BKP_WYis.js";
14
+ import "./openai-BMcwgD5C.js";
15
+ import "./util-DM2rTn_6.js";
16
16
  import fs from "fs";
17
17
  import path from "path";
18
18
  import os from "os";
19
19
  import crypto from "crypto";
20
20
  import WebSocket from "ws";
21
+ import JSON5 from "json5";
21
22
  //#region src/providers/openclaw/shared.ts
22
23
  const DEFAULT_GATEWAY_PORT = 18789;
23
24
  const DEFAULT_GATEWAY_HOST = "127.0.0.1";
24
25
  /**
25
- * Strip JSON5 syntax (comments and trailing commas) for JSON.parse compatibility.
26
- * Uses a state machine to avoid corrupting strings containing // or slash characters.
27
- */
28
- function stripJson5Syntax(raw) {
29
- let result = "";
30
- let i = 0;
31
- let inString = false;
32
- let stringQuote = "";
33
- let escape = false;
34
- while (i < raw.length) {
35
- const ch = raw[i];
36
- if (inString) {
37
- result += ch;
38
- if (escape) escape = false;
39
- else if (ch === "\\") escape = true;
40
- else if (ch === stringQuote) inString = false;
41
- i++;
42
- continue;
43
- }
44
- if (ch === "\"" || ch === "'") {
45
- inString = true;
46
- stringQuote = ch;
47
- result += ch;
48
- i++;
49
- } else if (ch === "/" && raw[i + 1] === "/") while (i < raw.length && raw[i] !== "\n") i++;
50
- else if (ch === "/" && raw[i + 1] === "*") {
51
- i += 2;
52
- while (i < raw.length - 1 && !(raw[i] === "*" && raw[i + 1] === "/")) i++;
53
- if (i < raw.length - 1 && raw[i] === "*" && raw[i + 1] === "/") i += 2;
54
- } else if (ch === ",") {
55
- let j = i + 1;
56
- while (j < raw.length && (raw[j] === " " || raw[j] === " " || raw[j] === "\n" || raw[j] === "\r")) j++;
57
- if (j < raw.length && (raw[j] === "}" || raw[j] === "]")) i++;
58
- else {
59
- result += ch;
60
- i++;
61
- }
62
- } else {
63
- result += ch;
64
- i++;
65
- }
66
- }
67
- return result;
68
- }
69
- /**
70
26
  * Cached config to avoid re-reading the file multiple times during provider init.
71
27
  */
72
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
+ }
73
93
  /**
74
- * Read and parse the OpenClaw configuration file.
94
+ * Read and parse the active OpenClaw configuration file.
75
95
  * Results are cached based on file modification time.
76
96
  * Returns undefined if the file doesn't exist or can't be parsed.
77
97
  */
78
- function readOpenClawConfig() {
79
- const configPath = path.join(os.homedir(), ".openclaw", "openclaw.json");
98
+ function readOpenClawConfig(env) {
99
+ const configPath = resolveConfigPath(env);
80
100
  try {
81
101
  if (!fs.existsSync(configPath)) return;
82
102
  const mtime = fs.statSync(configPath).mtimeMs;
83
- if (cachedConfig && cachedConfig.mtime === mtime) return cachedConfig.config;
84
- const cleaned = stripJson5Syntax(fs.readFileSync(configPath, "utf-8"));
85
- 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);
86
106
  cachedConfig = {
87
107
  config,
88
108
  mtime
89
109
  };
110
+ cachedConfigPath = configPath;
90
111
  return config;
91
112
  } catch (err) {
92
113
  logger.debug(`Failed to read OpenClaw config at ${configPath}: ${err}`);
@@ -94,28 +115,50 @@ function readOpenClawConfig() {
94
115
  }
95
116
  }
96
117
  /**
97
- * 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.
98
119
  */
99
120
  function resolveGatewayUrl(config, env) {
100
- if (config?.gateway_url) return config.gateway_url;
101
- const envUrl = env?.OPENCLAW_GATEWAY_URL || getEnvString("OPENCLAW_GATEWAY_URL");
102
- if (envUrl) return envUrl;
103
- const openclawConfig = readOpenClawConfig();
104
- if (openclawConfig?.gateway) {
105
- const port = openclawConfig.gateway.port ?? 18789;
106
- const bind = openclawConfig.gateway.bind;
107
- return `http://${!bind || bind === "loopback" || bind === "0.0.0.0" || bind === "::" ? DEFAULT_GATEWAY_HOST : bind}:${port}`;
108
- }
109
- 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));
110
155
  }
111
156
  /**
112
- * 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.
113
159
  */
114
160
  function resolveAuthToken(config, env) {
115
- if (config?.auth_token) return config.auth_token;
116
- const envToken = env?.OPENCLAW_GATEWAY_TOKEN || getEnvString("OPENCLAW_GATEWAY_TOKEN");
117
- if (envToken) return envToken;
118
- return readOpenClawConfig()?.gateway?.auth?.token;
161
+ return resolveAuthSecret(config, env)?.value;
119
162
  }
120
163
  /**
121
164
  * Build common OpenClaw headers for agent-id and session-key.
@@ -175,7 +218,8 @@ const OPENCLAW_PROTOCOL_VERSION = 3;
175
218
  var OpenClawAgentProvider = class {
176
219
  agentId;
177
220
  gatewayUrl;
178
- authToken;
221
+ authKind;
222
+ authSecret;
179
223
  openclawConfig;
180
224
  timeoutMs;
181
225
  activeConnections = /* @__PURE__ */ new Set();
@@ -183,8 +227,10 @@ var OpenClawAgentProvider = class {
183
227
  this.agentId = agentId;
184
228
  this.openclawConfig = providerOptions.config || {};
185
229
  const env = providerOptions.env;
186
- this.gatewayUrl = resolveGatewayUrl(this.openclawConfig, env);
187
- 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;
188
234
  this.timeoutMs = this.openclawConfig.timeoutMs ?? REQUEST_TIMEOUT_MS;
189
235
  }
190
236
  id() {
@@ -201,9 +247,9 @@ var OpenClawAgentProvider = class {
201
247
  this.activeConnections.clear();
202
248
  }
203
249
  async callApi(prompt) {
204
- const wsUrl = this.gatewayUrl.replace(/^http(s?):\/\//, "ws$1://");
250
+ const sessionKey = this.openclawConfig.session_key || `promptfoo-${crypto.randomUUID()}`;
205
251
  return new Promise((resolve) => {
206
- const ws = new WebSocket(wsUrl);
252
+ const ws = new WebSocket(this.gatewayUrl);
207
253
  this.activeConnections.add(ws);
208
254
  const agentRequestId = crypto.randomUUID();
209
255
  const waitRequestId = crypto.randomUUID();
@@ -212,27 +258,23 @@ var OpenClawAgentProvider = class {
212
258
  let runId;
213
259
  let connected = false;
214
260
  let resolved = false;
215
- const timeout = setTimeout(() => {
216
- if (!resolved) {
217
- resolved = true;
218
- ws.close();
219
- resolve({ error: `OpenClaw agent request timed out after ${this.timeoutMs}ms` });
220
- }
221
- }, this.timeoutMs);
222
- const finish = (result) => {
261
+ const finish = (result, closeSocket = true) => {
223
262
  if (resolved) return;
224
263
  resolved = true;
225
264
  clearTimeout(timeout);
226
265
  this.activeConnections.delete(ws);
227
- ws.close();
266
+ if (closeSocket) ws.close();
228
267
  resolve(result);
229
268
  };
269
+ const timeout = setTimeout(() => {
270
+ finish({ error: `OpenClaw agent request timed out after ${this.timeoutMs}ms` });
271
+ }, this.timeoutMs);
230
272
  ws.on("error", (err) => {
231
273
  finish({ error: `OpenClaw WebSocket error: ${err.message}` });
232
274
  });
233
275
  ws.on("close", () => {
234
276
  this.activeConnections.delete(ws);
235
- if (!resolved) finish({ error: "OpenClaw WebSocket connection closed unexpectedly" });
277
+ if (!resolved) finish({ error: "OpenClaw WebSocket connection closed unexpectedly" }, false);
236
278
  });
237
279
  ws.on("message", (data) => {
238
280
  let frame;
@@ -267,7 +309,7 @@ var OpenClawAgentProvider = class {
267
309
  caps: [],
268
310
  commands: [],
269
311
  permissions: {},
270
- ...this.authToken && { auth: { token: this.authToken } }
312
+ ...this.authSecret && this.authKind && { auth: this.authKind === "password" ? { password: this.authSecret } : { token: this.authSecret } }
271
313
  }
272
314
  }));
273
315
  return;
@@ -286,8 +328,9 @@ var OpenClawAgentProvider = class {
286
328
  message: prompt,
287
329
  agentId: this.agentId,
288
330
  idempotencyKey,
289
- ...this.openclawConfig.session_key && { sessionKey: this.openclawConfig.session_key },
290
- ...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 }
291
334
  }
292
335
  }));
293
336
  return;
@@ -297,8 +340,17 @@ var OpenClawAgentProvider = class {
297
340
  finish({ error: `OpenClaw agent error: ${frame.error?.message || "unknown error"}` });
298
341
  return;
299
342
  }
300
- runId = frame.payload?.runId;
301
- 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({
302
354
  type: "req",
303
355
  id: waitRequestId,
304
356
  method: "agent.wait",
@@ -330,10 +382,11 @@ var OpenClawAgentProvider = class {
330
382
  * OpenClaw chat provider extends OpenAI chat completion provider.
331
383
  *
332
384
  * OpenClaw exposes an OpenAI-compatible HTTP API at /v1/chat/completions.
333
- * This provider auto-detects gateway URL and auth token from:
334
- * 1. Explicit config (gateway_url, auth_token)
335
- * 2. Environment variables (OPENCLAW_GATEWAY_URL, OPENCLAW_GATEWAY_TOKEN)
336
- * 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
337
390
  *
338
391
  * Usage:
339
392
  * openclaw - default agent (main)
@@ -410,14 +463,19 @@ var OpenClawResponsesProvider = class extends OpenAiResponsesProvider {
410
463
  * OpenClaw Tool Invoke Provider
411
464
  *
412
465
  * Simple HTTP provider for direct tool invocation via POST /tools/invoke.
413
- * 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"
414
468
  *
415
469
  * The prompt is parsed as JSON for tool arguments. If it's not valid JSON,
416
470
  * it's passed as a single `input` argument.
417
471
  *
418
472
  * Usage:
419
- * openclaw:tools:bash - invoke the bash tool
420
- * 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
421
479
  */
422
480
  var OpenClawToolInvokeProvider = class {
423
481
  toolName;
@@ -450,11 +508,16 @@ var OpenClawToolInvokeProvider = class {
450
508
  args = { input: prompt };
451
509
  }
452
510
  const url = `${this.gatewayUrl}/tools/invoke`;
453
- const headers = { "Content-Type": "application/json" };
511
+ const headers = {
512
+ "Content-Type": "application/json",
513
+ ...this.openclawConfig.headers || {}
514
+ };
454
515
  if (this.authToken) headers["Authorization"] = `Bearer ${this.authToken}`;
455
516
  const body = {
456
517
  tool: this.toolName,
518
+ ...this.openclawConfig.action && { action: this.openclawConfig.action },
457
519
  args,
520
+ ...typeof this.openclawConfig.dry_run === "boolean" && { dryRun: this.openclawConfig.dry_run },
458
521
  ...this.openclawConfig.session_key && { sessionKey: this.openclawConfig.session_key }
459
522
  };
460
523
  logger.debug(`[OpenClaw Tool] POST ${url}`, {
@@ -495,7 +558,7 @@ var OpenClawToolInvokeProvider = class {
495
558
  * openclaw:responses:X → OpenClawResponsesProvider('X')
496
559
  * openclaw:agent → OpenClawAgentProvider('main')
497
560
  * openclaw:agent:X → OpenClawAgentProvider('X')
498
- * openclaw:tools:bash → OpenClawToolInvokeProvider('bash')
561
+ * openclaw:tools:sessions_list → OpenClawToolInvokeProvider('sessions_list')
499
562
  */
500
563
  function createOpenClawProvider(providerPath, providerOptions = {}, env) {
501
564
  const splits = providerPath.split(":");
@@ -516,4 +579,4 @@ function createOpenClawProvider(providerPath, providerOptions = {}, env) {
516
579
  //#endregion
517
580
  export { createOpenClawProvider };
518
581
 
519
- //# sourceMappingURL=openclaw-D1D_ej1z.js.map
582
+ //# sourceMappingURL=openclaw-D2ENvu7a.js.map
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import { C as getEnvString, O as state, n as getLogLevel, o as logger } from "./logger-KkObSCzq.js";
3
- import "./fetch-BMv0O527.js";
4
- import "./cloud-Bc9526yV.js";
5
- import "./cache-CG0SlR1d.js";
6
- import { r as importModule } from "./esm-C03C-mv3.js";
7
- import { i as initializeAgenticCache, n as generateCacheKey, r as getCachedResponse, t as cacheResponse } from "./agentic-utils-BKIN5PKu.js";
2
+ import { E as getEnvString, j as state, n as getLogLevel, s as logger } from "./logger-BcJBzSSA.js";
3
+ import "./fetch-DoVRJZhJ.js";
4
+ import "./cloud-z8KZpUoa.js";
5
+ import "./cache-DSqR6ezl.js";
6
+ import { r as importModule } from "./esm-7UIl0pPM.js";
7
+ import { i as initializeAgenticCache, n as generateCacheKey, r as getCachedResponse, t as cacheResponse } from "./agentic-utils-36epdqwB.js";
8
8
  import { createRequire } from "node:module";
9
9
  import fs from "fs";
10
10
  import path from "path";
@@ -289,10 +289,10 @@ var OpenCodeSDKProvider = class {
289
289
  warnOnIgnoredBaseUrlConfig(config) {
290
290
  if (!config.baseUrl) return;
291
291
  const ignoredSettings = [
292
- config.hostname !== void 0 ? "hostname" : void 0,
293
- config.port !== void 0 ? "port" : void 0,
294
- config.timeout !== void 0 ? "timeout" : void 0,
295
- config.log_level !== void 0 ? "log_level" : void 0,
292
+ config.hostname === void 0 ? void 0 : "hostname",
293
+ config.port === void 0 ? void 0 : "port",
294
+ config.timeout === void 0 ? void 0 : "timeout",
295
+ config.log_level === void 0 ? void 0 : "log_level",
296
296
  config.mcp ? "mcp" : void 0,
297
297
  config.custom_agent ? "custom_agent" : void 0,
298
298
  config.apiKey ? "apiKey" : void 0
@@ -466,8 +466,8 @@ var OpenCodeSDKProvider = class {
466
466
  const parts = responseData?.parts ?? [];
467
467
  let output = "";
468
468
  for (const part of parts) if (part.type === "text" && part.text) output += (output ? "\n" : "") + part.text;
469
- if (config.format?.type === "json_schema") if (assistantMessage?.structured !== void 0) output = JSON.stringify(assistantMessage.structured);
470
- else output = normalizeStructuredText(output) ?? output;
469
+ if (config.format?.type === "json_schema") if (assistantMessage?.structured === void 0) output = normalizeStructuredText(output) ?? output;
470
+ else output = JSON.stringify(assistantMessage.structured);
471
471
  const tokens = assistantMessage?.tokens;
472
472
  return {
473
473
  output,
@@ -559,4 +559,4 @@ var OpenCodeSDKProvider = class {
559
559
  //#endregion
560
560
  export { OpenCodeSDKProvider };
561
561
 
562
- //# sourceMappingURL=opencode-sdk-D95s6SnR.js.map
562
+ //# sourceMappingURL=opencode-sdk-C71Z0ehR.js.map
@@ -1,8 +1,8 @@
1
- import { b as getEnvString, i as logger, t as getLogLevel, w as state } from "./logger-CT3IKMKA.js";
2
- import { r as importModule } from "./esm-Cd1AjG1D.js";
3
- import "./fetch-60Gzydls.js";
4
- import "./cache-8XhNqPKW.js";
5
- import { i as initializeAgenticCache, n as generateCacheKey, r as getCachedResponse, t as cacheResponse } from "./cometapi-DkXrKi5z.js";
1
+ import { C as getEnvString, D as state, a as logger, t as getLogLevel } from "./logger-BnkjG2jt.js";
2
+ import "./fetch-BiYv2BZc.js";
3
+ import { r as importModule } from "./esm-CKWP3u_P.js";
4
+ import "./cache-HP0NP4k3.js";
5
+ import { i as initializeAgenticCache, n as generateCacheKey, r as getCachedResponse, t as cacheResponse } from "./agentic-utils-DIYAAYE7.js";
6
6
  import { createRequire } from "node:module";
7
7
  import fs from "fs";
8
8
  import path from "path";
@@ -287,10 +287,10 @@ var OpenCodeSDKProvider = class {
287
287
  warnOnIgnoredBaseUrlConfig(config) {
288
288
  if (!config.baseUrl) return;
289
289
  const ignoredSettings = [
290
- config.hostname !== void 0 ? "hostname" : void 0,
291
- config.port !== void 0 ? "port" : void 0,
292
- config.timeout !== void 0 ? "timeout" : void 0,
293
- config.log_level !== void 0 ? "log_level" : void 0,
290
+ config.hostname === void 0 ? void 0 : "hostname",
291
+ config.port === void 0 ? void 0 : "port",
292
+ config.timeout === void 0 ? void 0 : "timeout",
293
+ config.log_level === void 0 ? void 0 : "log_level",
294
294
  config.mcp ? "mcp" : void 0,
295
295
  config.custom_agent ? "custom_agent" : void 0,
296
296
  config.apiKey ? "apiKey" : void 0
@@ -464,8 +464,8 @@ var OpenCodeSDKProvider = class {
464
464
  const parts = responseData?.parts ?? [];
465
465
  let output = "";
466
466
  for (const part of parts) if (part.type === "text" && part.text) output += (output ? "\n" : "") + part.text;
467
- if (config.format?.type === "json_schema") if (assistantMessage?.structured !== void 0) output = JSON.stringify(assistantMessage.structured);
468
- else output = normalizeStructuredText(output) ?? output;
467
+ if (config.format?.type === "json_schema") if (assistantMessage?.structured === void 0) output = normalizeStructuredText(output) ?? output;
468
+ else output = JSON.stringify(assistantMessage.structured);
469
469
  const tokens = assistantMessage?.tokens;
470
470
  return {
471
471
  output,
@@ -557,4 +557,4 @@ var OpenCodeSDKProvider = class {
557
557
  //#endregion
558
558
  export { OpenCodeSDKProvider };
559
559
 
560
- //# sourceMappingURL=opencode-sdk-DxUPkLT7.js.map
560
+ //# sourceMappingURL=opencode-sdk-CHCs7dEb.js.map
@@ -1,8 +1,8 @@
1
- import { b as getEnvString, i as logger, t as getLogLevel, w as state } from "./logger-DLcq4dWf.js";
2
- import "./fetch-4M3YRaqL.js";
3
- import { r as importModule } from "./esm-CaIwzWR5.js";
4
- import "./cache-D3eqDYGU.js";
5
- import { i as initializeAgenticCache, n as generateCacheKey, r as getCachedResponse, t as cacheResponse } from "./cloudflare-gateway-pXGHxJ47.js";
1
+ import { C as getEnvString, D as state, a as logger, t as getLogLevel } from "./logger-DO8_zM18.js";
2
+ import { r as importModule } from "./esm-SUNIX1x3.js";
3
+ import "./fetch-CVAtKnI3.js";
4
+ import "./cache-CaT5tPgo.js";
5
+ import { i as initializeAgenticCache, n as generateCacheKey, r as getCachedResponse, t as cacheResponse } from "./agentic-utils-D8yXo5Lm.js";
6
6
  import { createRequire } from "node:module";
7
7
  import fs from "fs";
8
8
  import path from "path";
@@ -287,10 +287,10 @@ var OpenCodeSDKProvider = class {
287
287
  warnOnIgnoredBaseUrlConfig(config) {
288
288
  if (!config.baseUrl) return;
289
289
  const ignoredSettings = [
290
- config.hostname !== void 0 ? "hostname" : void 0,
291
- config.port !== void 0 ? "port" : void 0,
292
- config.timeout !== void 0 ? "timeout" : void 0,
293
- config.log_level !== void 0 ? "log_level" : void 0,
290
+ config.hostname === void 0 ? void 0 : "hostname",
291
+ config.port === void 0 ? void 0 : "port",
292
+ config.timeout === void 0 ? void 0 : "timeout",
293
+ config.log_level === void 0 ? void 0 : "log_level",
294
294
  config.mcp ? "mcp" : void 0,
295
295
  config.custom_agent ? "custom_agent" : void 0,
296
296
  config.apiKey ? "apiKey" : void 0
@@ -464,8 +464,8 @@ var OpenCodeSDKProvider = class {
464
464
  const parts = responseData?.parts ?? [];
465
465
  let output = "";
466
466
  for (const part of parts) if (part.type === "text" && part.text) output += (output ? "\n" : "") + part.text;
467
- if (config.format?.type === "json_schema") if (assistantMessage?.structured !== void 0) output = JSON.stringify(assistantMessage.structured);
468
- else output = normalizeStructuredText(output) ?? output;
467
+ if (config.format?.type === "json_schema") if (assistantMessage?.structured === void 0) output = normalizeStructuredText(output) ?? output;
468
+ else output = JSON.stringify(assistantMessage.structured);
469
469
  const tokens = assistantMessage?.tokens;
470
470
  return {
471
471
  output,
@@ -557,4 +557,4 @@ var OpenCodeSDKProvider = class {
557
557
  //#endregion
558
558
  export { OpenCodeSDKProvider };
559
559
 
560
- //# sourceMappingURL=opencode-sdk-C7m-wRfI.js.map
560
+ //# sourceMappingURL=opencode-sdk-DDxj4QqH.js.map
@@ -1,8 +1,8 @@
1
- const require_logger = require("./logger-Cp1GPUjj.cjs");
2
- const require_esm = require("./esm-CnNt7sI4.cjs");
3
- require("./fetch-BxUk8odA.cjs");
4
- require("./cache-COish3-W.cjs");
5
- const require_cometapi = require("./cometapi-vY6aDZgo.cjs");
1
+ const require_logger = require("./logger-D5iKBpu_.cjs");
2
+ const require_esm = require("./esm-CipptfDu.cjs");
3
+ require("./fetch-BnR9wSnm.cjs");
4
+ require("./cache-C5yFZ4gC.cjs");
5
+ const require_agentic_utils = require("./agentic-utils-DAVsChuB.cjs");
6
6
  let fs = require("fs");
7
7
  fs = require_logger.__toESM(fs);
8
8
  let path = require("path");
@@ -218,7 +218,7 @@ var OpenCodeSDKProvider = class {
218
218
  return Object.keys(query).length > 0 ? query : void 0;
219
219
  }
220
220
  buildSessionKey(config, workingDir) {
221
- return require_cometapi.generateCacheKey("opencode:sdk:session", {
221
+ return require_agentic_utils.generateCacheKey("opencode:sdk:session", {
222
222
  baseUrl: config.baseUrl,
223
223
  workingDir: config.working_dir ? workingDir : void 0,
224
224
  workspace: config.workspace,
@@ -291,10 +291,10 @@ var OpenCodeSDKProvider = class {
291
291
  warnOnIgnoredBaseUrlConfig(config) {
292
292
  if (!config.baseUrl) return;
293
293
  const ignoredSettings = [
294
- config.hostname !== void 0 ? "hostname" : void 0,
295
- config.port !== void 0 ? "port" : void 0,
296
- config.timeout !== void 0 ? "timeout" : void 0,
297
- config.log_level !== void 0 ? "log_level" : void 0,
294
+ config.hostname === void 0 ? void 0 : "hostname",
295
+ config.port === void 0 ? void 0 : "port",
296
+ config.timeout === void 0 ? void 0 : "timeout",
297
+ config.log_level === void 0 ? void 0 : "log_level",
298
298
  config.mcp ? "mcp" : void 0,
299
299
  config.custom_agent ? "custom_agent" : void 0,
300
300
  config.apiKey ? "apiKey" : void 0
@@ -468,8 +468,8 @@ var OpenCodeSDKProvider = class {
468
468
  const parts = responseData?.parts ?? [];
469
469
  let output = "";
470
470
  for (const part of parts) if (part.type === "text" && part.text) output += (output ? "\n" : "") + part.text;
471
- if (config.format?.type === "json_schema") if (assistantMessage?.structured !== void 0) output = JSON.stringify(assistantMessage.structured);
472
- else output = normalizeStructuredText(output) ?? output;
471
+ if (config.format?.type === "json_schema") if (assistantMessage?.structured === void 0) output = normalizeStructuredText(output) ?? output;
472
+ else output = JSON.stringify(assistantMessage.structured);
473
473
  const tokens = assistantMessage?.tokens;
474
474
  return {
475
475
  output,
@@ -507,7 +507,7 @@ var OpenCodeSDKProvider = class {
507
507
  async callApi(prompt, context, callOptions) {
508
508
  const { config, isTempDir, workingDir } = this.prepareCall(context);
509
509
  const mcpConfig = config.mcp && Object.keys(config.mcp).length > 0 ? config.mcp : void 0;
510
- const cacheResult = await require_cometapi.initializeAgenticCache({
510
+ const cacheResult = await require_agentic_utils.initializeAgenticCache({
511
511
  cacheKeyPrefix: "opencode:sdk",
512
512
  workingDir: config.working_dir ? workingDir : void 0,
513
513
  bustCache: context?.bustCache,
@@ -525,7 +525,7 @@ var OpenCodeSDKProvider = class {
525
525
  format: config.format,
526
526
  variant: config.variant
527
527
  });
528
- const cachedResponse = await require_cometapi.getCachedResponse(cacheResult, "OpenCode SDK");
528
+ const cachedResponse = await require_agentic_utils.getCachedResponse(cacheResult, "OpenCode SDK");
529
529
  if (cachedResponse) return cachedResponse;
530
530
  if (callOptions?.abortSignal?.aborted) return { error: "OpenCode SDK call aborted before it started" };
531
531
  let ephemeralSession;
@@ -540,7 +540,7 @@ var OpenCodeSDKProvider = class {
540
540
  const response = await client.session.prompt(promptOptions);
541
541
  require_logger.logger.debug(`OpenCode SDK response received`);
542
542
  const providerResponse = this.buildProviderResponse(config, response, session.sessionId);
543
- await require_cometapi.cacheResponse(cacheResult, providerResponse, "OpenCode SDK");
543
+ await require_agentic_utils.cacheResponse(cacheResult, providerResponse, "OpenCode SDK");
544
544
  require_logger.logger.debug(`OpenCode SDK response: ${providerResponse.output.slice(0, 100)}...`);
545
545
  return providerResponse;
546
546
  } catch (error) {
@@ -561,4 +561,4 @@ var OpenCodeSDKProvider = class {
561
561
  //#endregion
562
562
  exports.OpenCodeSDKProvider = OpenCodeSDKProvider;
563
563
 
564
- //# sourceMappingURL=opencode-sdk-CfaLN8PY.cjs.map
564
+ //# sourceMappingURL=opencode-sdk-WWJhnbKr.cjs.map