promptfoo 0.125.0 → 0.125.1

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 (869) hide show
  1. package/README.md +3 -3
  2. package/dist/src/accounts-BOxNYxVN.js +229 -0
  3. package/dist/src/accounts-BezXLdAW.cjs +276 -0
  4. package/dist/src/accounts-CPISMNlh.js +227 -0
  5. package/dist/src/accounts-vJBPs89d.js +222 -0
  6. package/dist/src/agentWorkspace-Bom7SpF2.js +592 -0
  7. package/dist/src/agentWorkspace-CEomAcws.cjs +619 -0
  8. package/dist/src/agentWorkspace-DPtMLrlI.js +593 -0
  9. package/dist/src/agentWorkspace-DkAeEYLz.js +592 -0
  10. package/dist/src/agentic-utils-121v7mJo.js +197 -0
  11. package/dist/src/agentic-utils-CBWD_rcd.cjs +237 -0
  12. package/dist/src/agentic-utils-D8wyQwPG.js +198 -0
  13. package/dist/src/agentic-utils-EP1QkQCs.js +197 -0
  14. package/dist/src/agents-Br3ah8iA.js +778 -0
  15. package/dist/src/agents-C5wj_UTv.js +777 -0
  16. package/dist/src/agents-C9Efp4mC.js +266 -0
  17. package/dist/src/agents-CQYwaVCO.js +267 -0
  18. package/dist/src/agents-CjCd4Vo8.js +777 -0
  19. package/dist/src/agents-DRWiCHYz.js +266 -0
  20. package/dist/src/agents-F2rhx0iL.cjs +266 -0
  21. package/dist/src/agents-RTYyy69h.cjs +777 -0
  22. package/dist/src/agents-api-CY72O86e.js +711 -0
  23. package/dist/src/agents-api-CsSsC21b.js +710 -0
  24. package/dist/src/agents-api-DN-ibDc8.js +710 -0
  25. package/dist/src/agents-api-cNDsCCv1.cjs +710 -0
  26. package/dist/src/ai.studio-Bj6Dyi6o.js +2 -0
  27. package/dist/src/ai.studio-C-e0LzyW.js +369 -0
  28. package/dist/src/ai.studio-CR8M6Aqf.cjs +391 -0
  29. package/dist/src/ai.studio-YKk7F0tv.js +374 -0
  30. package/dist/src/aimlapi-BGunsuTu.js +30 -0
  31. package/dist/src/aimlapi-BkzcfBsL.js +29 -0
  32. package/dist/src/aimlapi-DXFcEdP8.js +28 -0
  33. package/dist/src/aimlapi-r-8iCcAw.cjs +29 -0
  34. package/dist/src/anthropicMessages-7-YNRgQR.js +114 -0
  35. package/dist/src/anthropicMessages-C8m9Whrd.cjs +114 -0
  36. package/dist/src/anthropicMessages-DS1vXD0f.js +115 -0
  37. package/dist/src/anthropicMessages-DmvGkz-0.js +114 -0
  38. package/dist/src/app/assets/index-CrdXWTXm.js +392 -0
  39. package/dist/src/app/browser-inventory.json +4 -4
  40. package/dist/src/app/index.html +1 -1
  41. package/dist/src/audio-BLgFgyw-.cjs +104 -0
  42. package/dist/src/audio-C2sibT7Q.js +104 -0
  43. package/dist/src/audio-DXEXb03H.js +104 -0
  44. package/dist/src/audio-TkvojpwO.js +105 -0
  45. package/dist/src/authoritativeMarkupInjection-BAT9B-Wj.js +79 -0
  46. package/dist/src/authoritativeMarkupInjection-B_yHETKT.js +78 -0
  47. package/dist/src/authoritativeMarkupInjection-BfjecQ3Q.cjs +78 -0
  48. package/dist/src/authoritativeMarkupInjection-D-hDKrhD.js +78 -0
  49. package/dist/src/aws-B_9unI_-.js +1149 -0
  50. package/dist/src/aws-D0FY3qkc.js +2433 -0
  51. package/dist/src/aws-Dh1-a90n.js +2433 -0
  52. package/dist/src/aws-qskKGczY.cjs +2454 -0
  53. package/dist/src/base-CaWlBkVz.js +462 -0
  54. package/dist/src/base-CcViNwVs.js +255 -0
  55. package/dist/src/base-CsVbPJkU.cjs +467 -0
  56. package/dist/src/base-DNK9py25.js +255 -0
  57. package/dist/src/base-DlH5tjEZ.js +463 -0
  58. package/dist/src/base-DyLOZ_iX.js +256 -0
  59. package/dist/src/base-RRYXfG7l.cjs +305 -0
  60. package/dist/src/base-oXVgvtVn.js +462 -0
  61. package/dist/src/bedrock-BP17ZXbR.cjs +2 -0
  62. package/dist/src/bedrock-CsjM1dOt.js +1300 -0
  63. package/dist/src/bedrock-CzPwj8GO.js +1 -0
  64. package/dist/src/bedrock-eGXZw8oh.js +1 -0
  65. package/dist/src/bedrock-tSWjmXdj.js +2 -0
  66. package/dist/src/bestOfN-BQ93nUKV.js +160 -0
  67. package/dist/src/bestOfN-ByGGwlcb.cjs +161 -0
  68. package/dist/src/bestOfN-CbP7csHr.js +159 -0
  69. package/dist/src/bestOfN-xn6i2Xs2.js +159 -0
  70. package/dist/src/cache-CHq9hPz9.js +2 -0
  71. package/dist/src/cache-D-9eZN3I.js +754 -0
  72. package/dist/src/cache-DSm6t1MZ.js +741 -0
  73. package/dist/src/cache-DeF5zIEN.js +782 -0
  74. package/dist/src/cache-iG87oYan.cjs +856 -0
  75. package/dist/src/cerebras-CTtM4yMH.js +98 -0
  76. package/dist/src/cerebras-CogcJ3ce.cjs +97 -0
  77. package/dist/src/cerebras-DmkRypTh.js +97 -0
  78. package/dist/src/cerebras-GUp0B8JY.js +97 -0
  79. package/dist/src/chat-B4ihd3fw.js +226 -0
  80. package/dist/src/chat-B9cAQ_rS.js +227 -0
  81. package/dist/src/chat-BU7EB4R-.cjs +76 -0
  82. package/dist/src/chat-C8yxJ2-s.cjs +226 -0
  83. package/dist/src/chat-ClTFM3qq.js +934 -0
  84. package/dist/src/chat-Cnq0Is68.js +123 -0
  85. package/dist/src/chat-CwrurR57.cjs +987 -0
  86. package/dist/src/chat-D0lsojPv.js +124 -0
  87. package/dist/src/chat-D7_8yFIx.js +76 -0
  88. package/dist/src/chat-DCoETlLG.js +226 -0
  89. package/dist/src/chat-DHE7xaTR.js +76 -0
  90. package/dist/src/chat-DmhT6rz2.cjs +123 -0
  91. package/dist/src/chat-DvfMe8KI.js +123 -0
  92. package/dist/src/chat-DwP5kVnl.js +935 -0
  93. package/dist/src/chat-MB7U-QE2.js +77 -0
  94. package/dist/src/chat-zCWuBKAj.js +934 -0
  95. package/dist/src/claude-agent-sdk-23bIVI75.js +999 -0
  96. package/dist/src/claude-agent-sdk-BACpnIJi.cjs +1005 -0
  97. package/dist/src/claude-agent-sdk-BlYlmcEr.js +999 -0
  98. package/dist/src/claude-agent-sdk-Cr-jqJZl.js +1000 -0
  99. package/dist/src/client-BktbiPx9.cjs +357 -0
  100. package/dist/src/client-CjztEBmW.js +351 -0
  101. package/dist/src/client-mRs2UvH9.js +351 -0
  102. package/dist/src/client-uCz0ydjC.js +352 -0
  103. package/dist/src/cloud-BtYF555L.js +2 -0
  104. package/dist/src/cloud-CVSUEmAy.js +287 -0
  105. package/dist/src/cloud-D7Ifb-Fl.js +599 -0
  106. package/dist/src/cloud-DB5oK5NX.cjs +666 -0
  107. package/dist/src/cloud-ecu989Em.js +657 -0
  108. package/dist/src/cloud-ramjGURF.js +599 -0
  109. package/dist/src/cloudflare-ai-BfDkIjO8.js +133 -0
  110. package/dist/src/cloudflare-ai-D9HaXz1M.js +134 -0
  111. package/dist/src/cloudflare-ai-HrD5WUK8.js +132 -0
  112. package/dist/src/cloudflare-ai-Qdj8aKP2.cjs +133 -0
  113. package/dist/src/cloudflare-gateway-C81uKETQ.js +276 -0
  114. package/dist/src/cloudflare-gateway-CX5Z9X0k.js +276 -0
  115. package/dist/src/cloudflare-gateway-DW-og8gb.js +277 -0
  116. package/dist/src/cloudflare-gateway-iRyXo9n2.cjs +276 -0
  117. package/dist/src/codex-app-server-BFIrSgdy.js +2155 -0
  118. package/dist/src/codex-app-server-By1eDVD4.js +2 -0
  119. package/dist/src/codex-app-server-DKsF4qmY.js +2156 -0
  120. package/dist/src/codex-app-server-n7n4uZzC.cjs +2162 -0
  121. package/dist/src/codex-app-server-xAoELVxu.js +2155 -0
  122. package/dist/src/codex-sdk-C2ZLxa6r.js +1552 -0
  123. package/dist/src/codex-sdk-CzG02tQt.cjs +1588 -0
  124. package/dist/src/codex-sdk-DNxAOhiV.js +2 -0
  125. package/dist/src/codex-sdk-DT3aQezK.js +1557 -0
  126. package/dist/src/codex-sdk-pw9DpcJP.js +1557 -0
  127. package/dist/src/codex-security-B0bLmXJF.js +406 -0
  128. package/dist/src/codex-security-BhYs-3iY.js +406 -0
  129. package/dist/src/codex-security-DQcOfxYW.js +407 -0
  130. package/dist/src/codex-security-DsCWr6GZ.cjs +411 -0
  131. package/dist/src/cometapi-B16asPLX.cjs +55 -0
  132. package/dist/src/cometapi-MgTbZA_H.js +53 -0
  133. package/dist/src/cometapi-i33vKzPV.js +55 -0
  134. package/dist/src/cometapi-wK2UWK0X.js +56 -0
  135. package/dist/src/compatible-COj8ZCy9.js +24 -0
  136. package/dist/src/compatible-CRSsIUGb.cjs +24 -0
  137. package/dist/src/compatible-Dy1vCcNF.js +25 -0
  138. package/dist/src/compatible-aUItQrpk.js +24 -0
  139. package/dist/src/completion-Bn7COFMk.js +119 -0
  140. package/dist/src/completion-Bub2N48b.js +118 -0
  141. package/dist/src/completion-Cf2G9OlM.cjs +123 -0
  142. package/dist/src/conversationScoring-BiTYJ9MD.js +374 -0
  143. package/dist/src/conversationScoring-CKL47uIu.js +373 -0
  144. package/dist/src/conversationScoring-DCvQKp6k.cjs +398 -0
  145. package/dist/src/conversationScoring-DLNJtDZI.js +373 -0
  146. package/dist/src/crescendo-5iLk9WiJ.cjs +734 -0
  147. package/dist/src/crescendo-B5ylG7kW.js +733 -0
  148. package/dist/src/crescendo-BD7k6TIx.js +730 -0
  149. package/dist/src/crescendo-DqO2Ch0P.js +732 -0
  150. package/dist/src/custom-8rv_aG2K.js +617 -0
  151. package/dist/src/custom-BOtrIHFN.js +619 -0
  152. package/dist/src/custom-BvN8seCs.cjs +620 -0
  153. package/dist/src/custom-Cld9v_Y4.js +618 -0
  154. package/dist/src/dataUrl-BdHUey2l.cjs +3187 -0
  155. package/dist/src/dataUrl-DBMifX6C.js +3133 -0
  156. package/dist/src/dataUrl-DUSr-ZvI.js +2868 -0
  157. package/dist/src/decisions-CLazADTw.js +516 -0
  158. package/dist/src/decisions-D5X93awq.js +515 -0
  159. package/dist/src/decisions-DmaeArEn.js +515 -0
  160. package/dist/src/decisions-DyQJyHJz.cjs +514 -0
  161. package/dist/src/docker-C9NYQFeu.js +94 -0
  162. package/dist/src/docker-CGq3mMol.cjs +94 -0
  163. package/dist/src/docker-DOm7nmpl.js +95 -0
  164. package/dist/src/docker-skFN-Kfo.js +93 -0
  165. package/dist/src/embedding-0UbzkTk9.js +82 -0
  166. package/dist/src/embedding-DTrSDt7k.cjs +86 -0
  167. package/dist/src/embedding-j2ORNl5H.js +81 -0
  168. package/dist/src/envoy-BvS8XTQO.js +60 -0
  169. package/dist/src/envoy-Cn6Hzw0e.js +60 -0
  170. package/dist/src/envoy-DC3KWcUY.cjs +60 -0
  171. package/dist/src/envoy-DetHjo5B.js +61 -0
  172. package/dist/src/eval-Cer9dPe9.js +1920 -0
  173. package/dist/src/eval-CytYmI2Z.js +2 -0
  174. package/dist/src/evalResult-DzOq5wt9.js +1300 -0
  175. package/dist/src/evaluator-BxCmvGtv.js +10578 -0
  176. package/dist/src/evaluator-Ct7YDELm.js +2 -0
  177. package/dist/src/evaluatorHelpers-B_AwIrsl.js +600 -0
  178. package/dist/src/evaluatorHelpers-D1Tpc7gd.js +601 -0
  179. package/dist/src/evaluatorHelpers-DRR3rLq0.cjs +622 -0
  180. package/dist/src/fetch-B5KxZuKu.js +1559 -0
  181. package/dist/src/fetch-BG_Jl7ty.js +1556 -0
  182. package/dist/src/fetch-BKlgUg08.cjs +1853 -0
  183. package/dist/src/fetch-C9Fsja0R.js +2 -0
  184. package/dist/src/fetch-CM7P8KWA.cjs +14 -0
  185. package/dist/src/fetch-D0FkIB3G.js +9 -0
  186. package/dist/src/fetch-RXHsZF-J.js +1280 -0
  187. package/dist/src/fetch-rSECy8jR.js +10 -0
  188. package/dist/src/functionCallbackUtils-BB9tmf6a.cjs +262 -0
  189. package/dist/src/functionCallbackUtils-BXk2iY01.js +246 -0
  190. package/dist/src/functionCallbackUtils-B_cYp7P5.js +245 -0
  191. package/dist/src/functionCallbackUtils-BfXnPo0o.js +245 -0
  192. package/dist/src/gemini-image-BXLMADDz.js +471 -0
  193. package/dist/src/gemini-image-BYUZyEUx.js +472 -0
  194. package/dist/src/gemini-image-DSt1QubZ.cjs +471 -0
  195. package/dist/src/gemini-image-DdNDMiZ_.js +471 -0
  196. package/dist/src/goat-9b-uU_k6.js +514 -0
  197. package/dist/src/goat-BCJuiDd0.js +515 -0
  198. package/dist/src/goat-CmAHbemm.js +512 -0
  199. package/dist/src/goat-DdOTdyoS.cjs +515 -0
  200. package/dist/src/goblin-Bp5C5lyb.js +22 -0
  201. package/dist/src/goblin-Dmr7GItI.js +23 -0
  202. package/dist/src/goblin-DpM8wxlf.cjs +22 -0
  203. package/dist/src/goblin-cJyH6Pq-.js +22 -0
  204. package/dist/src/google-B6eaPAbE.js +142 -0
  205. package/dist/src/google-D-FStdN6.cjs +142 -0
  206. package/dist/src/google-DAC7BsCW.js +142 -0
  207. package/dist/src/google-Id18H0Va.js +143 -0
  208. package/dist/src/graders-BjNQWkaB.js +2 -0
  209. package/dist/src/graders-CqdIp_vl.js +15470 -0
  210. package/dist/src/hydra-6Ouh74DE.js +610 -0
  211. package/dist/src/hydra-BHjhZnLB.cjs +612 -0
  212. package/dist/src/hydra-BL6k2REV.js +2 -0
  213. package/dist/src/hydra-BWUc0o67.js +613 -0
  214. package/dist/src/hydra-CUkEOLKw.js +612 -0
  215. package/dist/src/image-B6hG_xhb.js +481 -0
  216. package/dist/src/image-BFaq7Krd.cjs +209 -0
  217. package/dist/src/image-Bql5C0N9.cjs +504 -0
  218. package/dist/src/image-BtZfI2pT.js +163 -0
  219. package/dist/src/image-CIM4oN7Z.cjs +163 -0
  220. package/dist/src/image-CbAl7Jpu.js +209 -0
  221. package/dist/src/image-CiYm_yFw.js +209 -0
  222. package/dist/src/image-DCMNvBiV.js +163 -0
  223. package/dist/src/image-DL7pIuUZ.js +210 -0
  224. package/dist/src/image-ey0kxF8o.js +164 -0
  225. package/dist/src/image-smgIk3rE.js +482 -0
  226. package/dist/src/index.cjs +27 -27
  227. package/dist/src/index.d.cts +8 -8
  228. package/dist/src/index.js +27 -27
  229. package/dist/src/indirectWebPwn-B_-UpWY5.js +285 -0
  230. package/dist/src/indirectWebPwn-Cz3SLiEq.js +434 -0
  231. package/dist/src/indirectWebPwn-D2s8zGiM.cjs +463 -0
  232. package/dist/src/indirectWebPwn-DXbj2wGu.cjs +285 -0
  233. package/dist/src/indirectWebPwn-D_4H44E6.js +285 -0
  234. package/dist/src/indirectWebPwn-L044SrpV.js +434 -0
  235. package/dist/src/indirectWebPwn-cnmvdavH.js +435 -0
  236. package/dist/src/indirectWebPwn-zUBzsqTt.js +286 -0
  237. package/dist/src/interactions-Bu3oVQ-j.js +850 -0
  238. package/dist/src/interactions-CND010Lh.cjs +850 -0
  239. package/dist/src/interactions-DAx7tqUz.js +851 -0
  240. package/dist/src/interactions-DPkIumeh.js +850 -0
  241. package/dist/src/iterative-BO4JRnpG.js +545 -0
  242. package/dist/src/iterative-CAK-k9rz.js +548 -0
  243. package/dist/src/iterative-CDgHc0xO.cjs +549 -0
  244. package/dist/src/iterative-CXJlHLl9.js +547 -0
  245. package/dist/src/iterativeImage-BEdGKSmh.cjs +419 -0
  246. package/dist/src/iterativeImage-BfL0QZw5.js +417 -0
  247. package/dist/src/iterativeImage-C9KhnibC.js +417 -0
  248. package/dist/src/iterativeImage-btjkOfWG.js +418 -0
  249. package/dist/src/iterativeMeta-B5Bdw6QA.js +437 -0
  250. package/dist/src/iterativeMeta-C3mI4gpT.js +440 -0
  251. package/dist/src/iterativeMeta-Co2BKyqS.cjs +439 -0
  252. package/dist/src/iterativeMeta-DD8ihRWD.js +439 -0
  253. package/dist/src/iterativeTree-AMi4GV2O.js +878 -0
  254. package/dist/src/iterativeTree-C8FJOEje.cjs +879 -0
  255. package/dist/src/iterativeTree-CvrY1f2Z.js +877 -0
  256. package/dist/src/iterativeTree-bPtESmaD.js +876 -0
  257. package/dist/src/knowledgeBase-Cf5871e3.js +163 -0
  258. package/dist/src/knowledgeBase-D2PQhqLH.js +164 -0
  259. package/dist/src/knowledgeBase-DpoMw1IH.cjs +163 -0
  260. package/dist/src/knowledgeBase-npGFl763.js +163 -0
  261. package/dist/src/litellm-BBB5DQdt.cjs +146 -0
  262. package/dist/src/litellm-Bo43ow7r.js +145 -0
  263. package/dist/src/litellm-CaU8CMLS.js +146 -0
  264. package/dist/src/litellm-wY7Unh8o.js +147 -0
  265. package/dist/src/live-5g2w-M-E.js +891 -0
  266. package/dist/src/live-BfaXsDyD.cjs +891 -0
  267. package/dist/src/live-C1xewnGD.js +2 -0
  268. package/dist/src/live-DaF7nYy5.js +892 -0
  269. package/dist/src/live-lp3urLUw.js +891 -0
  270. package/dist/src/luma-ray-B7zvKGVG.js +309 -0
  271. package/dist/src/luma-ray-DCf5fnrz.cjs +309 -0
  272. package/dist/src/luma-ray-DepBcn6z.js +309 -0
  273. package/dist/src/luma-ray-XQC4M1pt.js +310 -0
  274. package/dist/src/main.js +26 -26
  275. package/dist/src/mantleChat-7xm95vSV.js +154 -0
  276. package/dist/src/mantleChat-CXhAs5RD.js +155 -0
  277. package/dist/src/mantleChat-CcE-zjfj.cjs +154 -0
  278. package/dist/src/mantleChat-Cpefl7Zm.js +154 -0
  279. package/dist/src/mcp-B0V0ikdM.js +84 -0
  280. package/dist/src/mcp-CV2k2gwj.js +85 -0
  281. package/dist/src/memoryPoisoning-BC5FQQWZ.js +111 -0
  282. package/dist/src/memoryPoisoning-BDwrtZKX.js +111 -0
  283. package/dist/src/memoryPoisoning-BFemS_FF.js +112 -0
  284. package/dist/src/memoryPoisoning-DRs2rbVV.cjs +111 -0
  285. package/dist/src/messages-Bc5oZoAJ.js +1128 -0
  286. package/dist/src/messages-BkaH8fRW.js +1127 -0
  287. package/dist/src/messages-CoHlziS5.js +1127 -0
  288. package/dist/src/messages-Cv_m6kYs.cjs +1161 -0
  289. package/dist/src/mischievousUser-BcyFxrqJ.js +51 -0
  290. package/dist/src/mischievousUser-BlhOQSd2.js +52 -0
  291. package/dist/src/mischievousUser-BuQiKE8D.js +51 -0
  292. package/dist/src/mischievousUser-ChIOk6cT.cjs +51 -0
  293. package/dist/src/modelslab-BXIWBTgX.js +171 -0
  294. package/dist/src/modelslab-ChVsUiaJ.js +170 -0
  295. package/dist/src/modelslab-DZ6BFlDv.js +170 -0
  296. package/dist/src/modelslab-DhRr-vyo.cjs +170 -0
  297. package/dist/src/nova-reel-BL8DrN4_.js +272 -0
  298. package/dist/src/nova-reel-BiOMUm5q.cjs +272 -0
  299. package/dist/src/nova-reel-CTsya1hV.js +273 -0
  300. package/dist/src/nova-reel-kgBY4Svd.js +272 -0
  301. package/dist/src/nova-sonic-CaSSA3Jq.cjs +374 -0
  302. package/dist/src/nova-sonic-DLpmoGsR.js +375 -0
  303. package/dist/src/nova-sonic-DwWc4SoN.js +374 -0
  304. package/dist/src/nova-sonic-qnReTaXm.js +374 -0
  305. package/dist/src/novita-B5mAt3Ui.js +114 -0
  306. package/dist/src/novita-D57vCjDD.js +116 -0
  307. package/dist/src/novita-ITRtG8IJ.js +115 -0
  308. package/dist/src/novita-Rh3T13YO.cjs +115 -0
  309. package/dist/src/nscale-8V7iZ_pI.js +210 -0
  310. package/dist/src/nscale-BQnMv4pH.cjs +209 -0
  311. package/dist/src/nscale-BWZXHZVF.js +209 -0
  312. package/dist/src/nscale-BqrHiUqU.js +207 -0
  313. package/dist/src/openaiResponses-BMtGTu8R.js +317 -0
  314. package/dist/src/openaiResponses-CvcI_viE.js +318 -0
  315. package/dist/src/openaiResponses-DYPZEMX1.cjs +318 -0
  316. package/dist/src/openaiResponses-DZTg1-kb.js +319 -0
  317. package/dist/src/openclaw-BeKuig4g.js +1338 -0
  318. package/dist/src/openclaw-COkdQ83y.js +1337 -0
  319. package/dist/src/openclaw-CSoX_HQ5.cjs +1344 -0
  320. package/dist/src/openclaw-DJlhPGCb.js +1336 -0
  321. package/dist/src/opencode-sdk-BEJftEs6.cjs +1018 -0
  322. package/dist/src/opencode-sdk-DMvBB3V7.js +1013 -0
  323. package/dist/src/opencode-sdk-Df7hMjLO.js +1012 -0
  324. package/dist/src/opencode-sdk-bQp5Xf3W.js +1012 -0
  325. package/dist/src/openinterpreter-B3GgVZjK.js +431 -0
  326. package/dist/src/openinterpreter-BiGcU-HN.cjs +435 -0
  327. package/dist/src/openinterpreter-Buj2l3Eh.js +432 -0
  328. package/dist/src/openinterpreter-C3_Cg5b_.js +431 -0
  329. package/dist/src/pricing-0Pampf0q.cjs +999 -0
  330. package/dist/src/pricing-B8VdhEhY.js +976 -0
  331. package/dist/src/pricing-CtLA-rKA.js +976 -0
  332. package/dist/src/promptfoo-4OkHtH9P.cjs +341 -0
  333. package/dist/src/promptfoo-Bhpm7sH6.js +286 -0
  334. package/dist/src/promptfoo-BqV8ogVA.js +285 -0
  335. package/dist/src/promptfoo-S1Q9OHk_.js +286 -0
  336. package/dist/src/providers-B5zs1ZRv.js +24437 -0
  337. package/dist/src/providers-Cd6CJh6m.js +2 -0
  338. package/dist/src/providers-CpJlgHET.js +24039 -0
  339. package/dist/src/providers-CzvLvK6G.cjs +24180 -0
  340. package/dist/src/quiverai-1E_IvLHn.js +325 -0
  341. package/dist/src/quiverai-BXH004Vv.js +325 -0
  342. package/dist/src/quiverai-Ccya2z8Y.cjs +325 -0
  343. package/dist/src/quiverai-Cez57oe-.js +326 -0
  344. package/dist/src/registry-3zX_M9Ik.js +131 -0
  345. package/dist/src/registry-AuCrKTvS.js +132 -0
  346. package/dist/src/registry-CxXWKtQG.js +131 -0
  347. package/dist/src/registry-DG3o66JQ.cjs +131 -0
  348. package/dist/src/remoteGeneration-CAtvamG6.js +370 -0
  349. package/dist/src/remoteGeneration-CF225pDl.cjs +482 -0
  350. package/dist/src/remoteGeneration-DtnqocnL.js +370 -0
  351. package/dist/src/remoteGeneration-g3KvW-sP.js +371 -0
  352. package/dist/src/responses-BMbaUXQI.js +1098 -0
  353. package/dist/src/responses-B_TOSof-.js +1099 -0
  354. package/dist/src/responses-v-yANwTA.cjs +1109 -0
  355. package/dist/src/runtimeTransform-BBZv-oUZ.js +156 -0
  356. package/dist/src/runtimeTransform-DT2v5ovW.js +156 -0
  357. package/dist/src/runtimeTransform-GXXEIXdS.cjs +161 -0
  358. package/dist/src/runtimeTransform-JTwBQc-P.js +157 -0
  359. package/dist/src/sagemaker-B8D0L4rj.cjs +716 -0
  360. package/dist/src/sagemaker-CR2_AGdB.js +713 -0
  361. package/dist/src/sagemaker-Cd9qSQUV.js +714 -0
  362. package/dist/src/sagemaker-mKlltN4p.js +713 -0
  363. package/dist/src/scanner-PG_8lh8r.js +1971 -0
  364. package/dist/src/server/index.js +55 -55
  365. package/dist/src/server-Bmh7sd9F.js +155 -0
  366. package/dist/src/server-C7b8z6aC.js +63 -0
  367. package/dist/src/server-CAcovgtL.js +2 -0
  368. package/dist/src/server-CuuMfKlh.cjs +74 -0
  369. package/dist/src/server-DMPCj9jy.js +189 -0
  370. package/dist/src/session-BksXvRH_.cjs +69 -0
  371. package/dist/src/session-DOxUjqGQ.js +63 -0
  372. package/dist/src/session-Dujsc-b9.js +62 -0
  373. package/dist/src/session-VjtIxREd.js +62 -0
  374. package/dist/src/shared-Bkyz_7e5.cjs +2185 -0
  375. package/dist/src/shared-DDJg8ycC.js +1929 -0
  376. package/dist/src/shared-Dh3yfRBd.js +1927 -0
  377. package/dist/src/shared-tfPT8Tna.js +1928 -0
  378. package/dist/src/simulatedUser-6JdkyL3k.cjs +252 -0
  379. package/dist/src/simulatedUser-CFr2mr3M.js +248 -0
  380. package/dist/src/simulatedUser-DjwwUqx-.js +247 -0
  381. package/dist/src/slack-C_gIYiUs.js +144 -0
  382. package/dist/src/slack-DhNbz9CM.cjs +144 -0
  383. package/dist/src/slack-Dm2iI1zu.js +145 -0
  384. package/dist/src/strategies-BIY-bNul.js +2248 -0
  385. package/dist/src/strategies-C1KQQj9G.cjs +2420 -0
  386. package/dist/src/strategies-DM_3mReG.js +2385 -0
  387. package/dist/src/telemetry-BhMTibZO.js +2 -0
  388. package/dist/src/telemetry-C04d25BM.cjs +216 -0
  389. package/dist/src/telemetry-CIqy4fSC.js +201 -0
  390. package/dist/src/telemetry-CXozp_6C.js +205 -0
  391. package/dist/src/telemetry-g7PkBxmY.js +205 -0
  392. package/dist/src/togetherai-BvCim68-.js +50 -0
  393. package/dist/src/togetherai-CWyDCA9m.cjs +49 -0
  394. package/dist/src/togetherai-CeSE31vK.js +49 -0
  395. package/dist/src/togetherai-_2W0URf8.js +48 -0
  396. package/dist/src/traceContext-Brw3Oe41.js +1016 -0
  397. package/dist/src/traceContext-DpAYv27G.js +1015 -0
  398. package/dist/src/traceContext-KSqhzZI2.cjs +1032 -0
  399. package/dist/src/transcription-BySopazW.js +175 -0
  400. package/dist/src/transcription-DO4UPkRI.cjs +178 -0
  401. package/dist/src/transcription-RJGBa-pC.js +176 -0
  402. package/dist/src/transcription-fZenF3G5.js +175 -0
  403. package/dist/src/transform-BzhRc5z2.js +125 -0
  404. package/dist/src/transform-CPQu05u6.cjs +154 -0
  405. package/dist/src/transform-DAED8imp.js +126 -0
  406. package/dist/src/transform-DIOIQDmM.js +125 -0
  407. package/dist/src/typesafe-ByE0Kxfg.js +253 -0
  408. package/dist/src/typesafe-CFqGFY34.js +253 -0
  409. package/dist/src/typesafe-DCWIw-CP.cjs +253 -0
  410. package/dist/src/typesafe-DyHFV5Qk.js +254 -0
  411. package/dist/src/util-BHkj9joz.js +2049 -0
  412. package/dist/src/util-CICwIpmu.cjs +934 -0
  413. package/dist/src/util-CePiY2xZ.js +286 -0
  414. package/dist/src/util-CgT3uf4p.js +743 -0
  415. package/dist/src/util-Cj9drvOY.js +1770 -0
  416. package/dist/src/util-ClJRjlQA.cjs +357 -0
  417. package/dist/src/util-Cxf8VF2M.js +395 -0
  418. package/dist/src/util-D7RdV7rS.js +395 -0
  419. package/dist/src/util-DMNFhk47.js +351 -0
  420. package/dist/src/util-DNzh3M0z.js +396 -0
  421. package/dist/src/util-Df7rfMGb.cjs +2305 -0
  422. package/dist/src/util-Kf0KnG_6.js +2051 -0
  423. package/dist/src/util-LEbeiYw_.js +743 -0
  424. package/dist/src/util-WH8CgVs4.js +352 -0
  425. package/dist/src/util-cx6Xw8Lw.cjs +478 -0
  426. package/dist/src/util-qzBqirBH.js +2050 -0
  427. package/dist/src/vertex-CBAMfRz3.js +854 -0
  428. package/dist/src/vertex-CMP2IpN9.js +2 -0
  429. package/dist/src/vertex-CZ5YOotT.js +848 -0
  430. package/dist/src/vertex-DNsh1F1M.cjs +871 -0
  431. package/dist/src/vertexLive-BTXYj3-F.js +55 -0
  432. package/dist/src/vertexLive-Ba_LAqEF.cjs +55 -0
  433. package/dist/src/vertexLive-DM4sFaaj.js +56 -0
  434. package/dist/src/vertexLive-JqZOw7HC.js +55 -0
  435. package/dist/src/video-BY7Q2Gii.cjs +706 -0
  436. package/dist/src/video-CYElP-CK.js +703 -0
  437. package/dist/src/video-C_AdEDH0.js +702 -0
  438. package/dist/src/video-DGvjQ_4j.js +702 -0
  439. package/package.json +1 -1
  440. package/dist/src/accounts-Dpb43yde.cjs +0 -276
  441. package/dist/src/accounts-GKrO1olH.js +0 -229
  442. package/dist/src/accounts-e4FGOsji.js +0 -227
  443. package/dist/src/accounts-sUiEJfkB.js +0 -222
  444. package/dist/src/agentWorkspace-B8A_wuMR.cjs +0 -619
  445. package/dist/src/agentWorkspace-DSPIscXR.js +0 -593
  446. package/dist/src/agentWorkspace-DxUqd-XK.js +0 -592
  447. package/dist/src/agentWorkspace-n0uOJXhD.js +0 -592
  448. package/dist/src/agentic-utils-9bCj4twQ.js +0 -197
  449. package/dist/src/agentic-utils-CyCLuLoj.js +0 -197
  450. package/dist/src/agentic-utils-D23qtOlx.cjs +0 -237
  451. package/dist/src/agentic-utils-DuBMMNCw.js +0 -198
  452. package/dist/src/agents-6hDRNoYD.js +0 -777
  453. package/dist/src/agents-B8w2o7Sc.cjs +0 -777
  454. package/dist/src/agents-Ck0NXl7v.js +0 -777
  455. package/dist/src/agents-CwT3B1qB.js +0 -778
  456. package/dist/src/agents-DOLjfOEq.js +0 -266
  457. package/dist/src/agents-OcF9hq--.js +0 -267
  458. package/dist/src/agents-api-CnZZt8bn.cjs +0 -710
  459. package/dist/src/agents-api-D04u3bmL.js +0 -711
  460. package/dist/src/agents-api-DWw0_Vio.js +0 -710
  461. package/dist/src/agents-api-IWHEwp8i.js +0 -710
  462. package/dist/src/agents-mHt2Mh9O.cjs +0 -266
  463. package/dist/src/agents-sICccZCA.js +0 -266
  464. package/dist/src/ai.studio-Ci4rypDT.js +0 -2
  465. package/dist/src/ai.studio-KkQ6KaHa.js +0 -369
  466. package/dist/src/ai.studio-gSXK2cGI.js +0 -374
  467. package/dist/src/ai.studio-nQF_B4DH.cjs +0 -391
  468. package/dist/src/aimlapi-BeSk5BDV.js +0 -30
  469. package/dist/src/aimlapi-CzNUhdKu.cjs +0 -29
  470. package/dist/src/aimlapi-DCkazDPI.js +0 -29
  471. package/dist/src/aimlapi-WeH5B6K1.js +0 -28
  472. package/dist/src/anthropicMessages-AcNWTpYO.js +0 -115
  473. package/dist/src/anthropicMessages-BUtvzbpL.js +0 -114
  474. package/dist/src/anthropicMessages-DTWhZDCd.js +0 -114
  475. package/dist/src/anthropicMessages-lGVnSgyx.cjs +0 -114
  476. package/dist/src/app/assets/index-CyEI5aDN.js +0 -392
  477. package/dist/src/audio-BE_Duiu1.js +0 -104
  478. package/dist/src/audio-CiUd00k2.cjs +0 -104
  479. package/dist/src/audio-Dop6omna.js +0 -105
  480. package/dist/src/audio-EZNTInr_.js +0 -104
  481. package/dist/src/authoritativeMarkupInjection-BUqH6hNk.js +0 -78
  482. package/dist/src/authoritativeMarkupInjection-BmbJdJO0.cjs +0 -78
  483. package/dist/src/authoritativeMarkupInjection-Cpz12Y3w.js +0 -78
  484. package/dist/src/authoritativeMarkupInjection-W4XfcH91.js +0 -79
  485. package/dist/src/aws-B2Jqbnet.js +0 -2433
  486. package/dist/src/aws-DHtuUIzQ.js +0 -1149
  487. package/dist/src/aws-DLqXP6wY.js +0 -2433
  488. package/dist/src/aws-DfduhmwL.cjs +0 -2454
  489. package/dist/src/base-B9L2Xvpc.js +0 -255
  490. package/dist/src/base-BTZnIsuH.cjs +0 -305
  491. package/dist/src/base-BhaWNQPJ.js +0 -462
  492. package/dist/src/base-Br-G_Xou.js +0 -256
  493. package/dist/src/base-Bzo8hiUS.cjs +0 -467
  494. package/dist/src/base-C82fd2jq.js +0 -463
  495. package/dist/src/base-CRdQwC1W.js +0 -462
  496. package/dist/src/base-CjGwZNOQ.js +0 -255
  497. package/dist/src/bedrock-BdMru_ro.js +0 -1300
  498. package/dist/src/bedrock-CBUmfLX1.cjs +0 -2
  499. package/dist/src/bedrock-DBDxBaF9.js +0 -2
  500. package/dist/src/bedrock-DDrECM21.js +0 -1
  501. package/dist/src/bedrock-DVwkgvRS.js +0 -1
  502. package/dist/src/bestOfN-AKF5beq4.js +0 -159
  503. package/dist/src/bestOfN-C1UIVGJV.js +0 -160
  504. package/dist/src/bestOfN-DlkETbXy.cjs +0 -161
  505. package/dist/src/bestOfN-XIfEgU-g.js +0 -159
  506. package/dist/src/cache-BZaVoKaA.js +0 -2
  507. package/dist/src/cache-CEYhFUsH.js +0 -741
  508. package/dist/src/cache-Cbw1zH6q.js +0 -782
  509. package/dist/src/cache-CdaZNb75.js +0 -754
  510. package/dist/src/cache-DpuIzPxh.cjs +0 -856
  511. package/dist/src/cerebras-Bpn6FPkJ.js +0 -97
  512. package/dist/src/cerebras-CqJ0BRCJ.cjs +0 -97
  513. package/dist/src/cerebras-D4ILa_TY.js +0 -97
  514. package/dist/src/cerebras-DR8uc7ee.js +0 -98
  515. package/dist/src/chat-B7PZfaYp.cjs +0 -987
  516. package/dist/src/chat-BVuSjdEb.js +0 -227
  517. package/dist/src/chat-BsaZRjXN.js +0 -76
  518. package/dist/src/chat-C5liqe3Y.js +0 -226
  519. package/dist/src/chat-C9hyHf5B.js +0 -124
  520. package/dist/src/chat-CFLalAck.js +0 -226
  521. package/dist/src/chat-CN8JGrHu.js +0 -76
  522. package/dist/src/chat-CaHBBpCb.js +0 -123
  523. package/dist/src/chat-CcbLSghx.js +0 -123
  524. package/dist/src/chat-CoSN6sr2.js +0 -934
  525. package/dist/src/chat-CsJRFX8a.cjs +0 -226
  526. package/dist/src/chat-DFoZLvO_.js +0 -934
  527. package/dist/src/chat-DiLQvL7r.js +0 -77
  528. package/dist/src/chat-F6qVSDk3.cjs +0 -123
  529. package/dist/src/chat-Oq4FaJgI.cjs +0 -76
  530. package/dist/src/chat-knMfQUKz.js +0 -935
  531. package/dist/src/claude-agent-sdk-CJkOLpnI.js +0 -999
  532. package/dist/src/claude-agent-sdk-Ckn76PRD.js +0 -999
  533. package/dist/src/claude-agent-sdk-DX0gTr11.cjs +0 -1005
  534. package/dist/src/claude-agent-sdk-LMeikxoR.js +0 -1000
  535. package/dist/src/client-BFf1r6Z8.js +0 -352
  536. package/dist/src/client-CdXyDdDi.js +0 -351
  537. package/dist/src/client-DV8XMu7i.js +0 -351
  538. package/dist/src/client-iEXtOBKW.cjs +0 -357
  539. package/dist/src/cloud-B02qcpjf.js +0 -2
  540. package/dist/src/cloud-BlHP-g1v.cjs +0 -666
  541. package/dist/src/cloud-C9BI4isF.js +0 -287
  542. package/dist/src/cloud-CTTLNdvj.js +0 -657
  543. package/dist/src/cloud-D5X5yQ_d.js +0 -599
  544. package/dist/src/cloud-QxPkpsHA.js +0 -599
  545. package/dist/src/cloudflare-ai-DRTRT1fc.js +0 -132
  546. package/dist/src/cloudflare-ai-DgaXapAV.cjs +0 -133
  547. package/dist/src/cloudflare-ai-DkuJXijS.js +0 -134
  548. package/dist/src/cloudflare-ai-wy9QCHku.js +0 -133
  549. package/dist/src/cloudflare-gateway-9cAN8g29.cjs +0 -276
  550. package/dist/src/cloudflare-gateway-BVFMD292.js +0 -277
  551. package/dist/src/cloudflare-gateway-BuUI4p6I.js +0 -276
  552. package/dist/src/cloudflare-gateway-TlYHizbW.js +0 -276
  553. package/dist/src/codex-app-server-BPz_feug.cjs +0 -2162
  554. package/dist/src/codex-app-server-C9noXM9C.js +0 -2155
  555. package/dist/src/codex-app-server-CEmD-Y5U.js +0 -2
  556. package/dist/src/codex-app-server-DZolc18r.js +0 -2156
  557. package/dist/src/codex-app-server-Dd0A37nO.js +0 -2155
  558. package/dist/src/codex-sdk-BbxjBvBk.cjs +0 -1588
  559. package/dist/src/codex-sdk-BpXeIs-_.js +0 -1557
  560. package/dist/src/codex-sdk-BtQp5X0f.js +0 -1552
  561. package/dist/src/codex-sdk-CH0v9Bk1.js +0 -2
  562. package/dist/src/codex-sdk-CgrN7JB8.js +0 -1557
  563. package/dist/src/codex-security-B5fENNUr.js +0 -406
  564. package/dist/src/codex-security-C6uuJx-y.cjs +0 -411
  565. package/dist/src/codex-security-CifWtZR_.js +0 -407
  566. package/dist/src/codex-security-Kg2bOEKy.js +0 -406
  567. package/dist/src/cometapi-BFpIDLIx.js +0 -55
  568. package/dist/src/cometapi-C6O2PIrN.js +0 -56
  569. package/dist/src/cometapi-D5Yupc6F.js +0 -53
  570. package/dist/src/cometapi-DzgIwJzJ.cjs +0 -55
  571. package/dist/src/compatible-0jhmVfOp.js +0 -25
  572. package/dist/src/compatible-DdtwWdJi.cjs +0 -24
  573. package/dist/src/compatible-Di4nR3sU.js +0 -24
  574. package/dist/src/compatible-iJKLWdnf.js +0 -24
  575. package/dist/src/completion-B0_hVUDG.js +0 -119
  576. package/dist/src/completion-BdI6v0-Q.cjs +0 -123
  577. package/dist/src/completion-CWcJscwv.js +0 -118
  578. package/dist/src/conversationScoring-99EOPJRa.js +0 -373
  579. package/dist/src/conversationScoring-BIq4J0Cq.js +0 -374
  580. package/dist/src/conversationScoring-DARyeATr.cjs +0 -398
  581. package/dist/src/conversationScoring-DS48t4Hb.js +0 -373
  582. package/dist/src/crescendo-CebvXIu4.js +0 -730
  583. package/dist/src/crescendo-CxrLS0oo.js +0 -732
  584. package/dist/src/crescendo-DZQXBSkj.js +0 -733
  585. package/dist/src/crescendo-wjEx68uD.cjs +0 -734
  586. package/dist/src/custom-BiQ-aUNw.cjs +0 -620
  587. package/dist/src/custom-ByyB5Z93.js +0 -619
  588. package/dist/src/custom-C5jOevNb.js +0 -617
  589. package/dist/src/custom-CCrsCz8o.js +0 -618
  590. package/dist/src/dataUrl-C9J7wz9H.js +0 -3133
  591. package/dist/src/dataUrl-CGsBT7UZ.cjs +0 -3187
  592. package/dist/src/dataUrl-CzKvvWNO.js +0 -2868
  593. package/dist/src/decisions-BTusXCUx.cjs +0 -514
  594. package/dist/src/decisions-BYtL9edD.js +0 -515
  595. package/dist/src/decisions-jYix_gCF.js +0 -515
  596. package/dist/src/decisions-nxxfHRAN.js +0 -516
  597. package/dist/src/docker-DDIv4zkg.js +0 -93
  598. package/dist/src/docker-DVLp_5OG.js +0 -94
  599. package/dist/src/docker-INm9w0SY.cjs +0 -94
  600. package/dist/src/docker-sGuoCul_.js +0 -95
  601. package/dist/src/embedding-CAhqLLrR.js +0 -82
  602. package/dist/src/embedding-D94GAsti.cjs +0 -86
  603. package/dist/src/embedding-zb4MAzQy.js +0 -81
  604. package/dist/src/envoy-BMPszwEa.cjs +0 -60
  605. package/dist/src/envoy-Bp-s39_8.js +0 -60
  606. package/dist/src/envoy-BswDt-Ou.js +0 -61
  607. package/dist/src/envoy-rVbYcV80.js +0 -60
  608. package/dist/src/eval-B1-XfrC7.js +0 -2
  609. package/dist/src/eval-pC4qCvLw.js +0 -1920
  610. package/dist/src/evalResult-CzjCb5bd.js +0 -1300
  611. package/dist/src/evaluator-CNq2K7J_.js +0 -10578
  612. package/dist/src/evaluator-LtfxdxEu.js +0 -2
  613. package/dist/src/evaluatorHelpers-C5J0NYpQ.js +0 -601
  614. package/dist/src/evaluatorHelpers-DcdCglCs.cjs +0 -622
  615. package/dist/src/evaluatorHelpers-Rvb88W6B.js +0 -600
  616. package/dist/src/fetch-5HtnNhHg.js +0 -1556
  617. package/dist/src/fetch-BCwjoIFd.js +0 -1559
  618. package/dist/src/fetch-BhfUnKen.js +0 -1280
  619. package/dist/src/fetch-C08w4vVl.js +0 -9
  620. package/dist/src/fetch-DBxy8Tlb.cjs +0 -14
  621. package/dist/src/fetch-DYte6oQX.cjs +0 -1853
  622. package/dist/src/fetch-ElpfcAVG.js +0 -10
  623. package/dist/src/fetch-lM1OIaSt.js +0 -2
  624. package/dist/src/functionCallbackUtils-BCAdWfHO.js +0 -246
  625. package/dist/src/functionCallbackUtils-BYq9qOhG.js +0 -245
  626. package/dist/src/functionCallbackUtils-ByWkmVud.cjs +0 -262
  627. package/dist/src/functionCallbackUtils-D_C_JaFd.js +0 -245
  628. package/dist/src/gemini-image-CAlwaJhZ.js +0 -471
  629. package/dist/src/gemini-image-DJoVoOnZ.cjs +0 -471
  630. package/dist/src/gemini-image-Waio-9Xx.js +0 -472
  631. package/dist/src/gemini-image-vbY6Ftbf.js +0 -471
  632. package/dist/src/goat-BWbtyY9c.js +0 -512
  633. package/dist/src/goat-CXzzeCOQ.cjs +0 -515
  634. package/dist/src/goat-CfgvzSgZ.js +0 -514
  635. package/dist/src/goat-DLeoIHBp.js +0 -515
  636. package/dist/src/goblin-CmfCfwqk.cjs +0 -22
  637. package/dist/src/goblin-CtcaORRH.js +0 -22
  638. package/dist/src/goblin-DF6DDhM-.js +0 -22
  639. package/dist/src/goblin-Nai0xxBV.js +0 -23
  640. package/dist/src/google-ClpkLtKL.cjs +0 -142
  641. package/dist/src/google-CrFgKu9k.js +0 -143
  642. package/dist/src/google-Dj_EIBqS.js +0 -142
  643. package/dist/src/google-e4-vARv6.js +0 -142
  644. package/dist/src/graders-BN1IIa71.js +0 -15470
  645. package/dist/src/graders-C5sCfSP5.js +0 -2
  646. package/dist/src/hydra-B7RfXVBK.js +0 -2
  647. package/dist/src/hydra-C1cFN-Jg.js +0 -613
  648. package/dist/src/hydra-CK6Uc1ia.js +0 -612
  649. package/dist/src/hydra-Dg65rAP_.js +0 -610
  650. package/dist/src/hydra-Fqx8l_Xu.cjs +0 -612
  651. package/dist/src/image-BdlUDAtp.js +0 -163
  652. package/dist/src/image-C-KwEhwt.cjs +0 -163
  653. package/dist/src/image-C76fp6NK.cjs +0 -209
  654. package/dist/src/image-D75ehv3D.js +0 -482
  655. package/dist/src/image-DKtc5v5W.js +0 -209
  656. package/dist/src/image-DT_xOkJY.js +0 -163
  657. package/dist/src/image-DVpdllEE.js +0 -209
  658. package/dist/src/image-DXZ8AzMf.js +0 -481
  659. package/dist/src/image-DZl_1mvy.js +0 -164
  660. package/dist/src/image-DcTD7Ak0.cjs +0 -504
  661. package/dist/src/image-ndxEvBKB.js +0 -210
  662. package/dist/src/indirectWebPwn-70WA5x_q.js +0 -435
  663. package/dist/src/indirectWebPwn-BRVyd3qV.cjs +0 -463
  664. package/dist/src/indirectWebPwn-BsJVsu0q.js +0 -285
  665. package/dist/src/indirectWebPwn-Cw6yJu0i.js +0 -285
  666. package/dist/src/indirectWebPwn-D-PhJzo4.js +0 -286
  667. package/dist/src/indirectWebPwn-DRPHt2I8.js +0 -434
  668. package/dist/src/indirectWebPwn-DXtfFhd9.cjs +0 -285
  669. package/dist/src/indirectWebPwn-DvpNouzc.js +0 -434
  670. package/dist/src/interactions-5ixfW7Cl.js +0 -850
  671. package/dist/src/interactions-BOUzfmg1.cjs +0 -850
  672. package/dist/src/interactions-CSSXcGNc.js +0 -851
  673. package/dist/src/interactions-WB_sgkN0.js +0 -850
  674. package/dist/src/iterative-BShRNqjC.cjs +0 -549
  675. package/dist/src/iterative-BcW_ELtB.js +0 -548
  676. package/dist/src/iterative-BpHbHz8B.js +0 -547
  677. package/dist/src/iterative-YcchP12d.js +0 -545
  678. package/dist/src/iterativeImage-BMFE5Hl7.cjs +0 -419
  679. package/dist/src/iterativeImage-CkSaYLMY.js +0 -417
  680. package/dist/src/iterativeImage-DAEUlQX_.js +0 -418
  681. package/dist/src/iterativeImage-DeUSkEnj.js +0 -417
  682. package/dist/src/iterativeMeta-DbdaKdEO.cjs +0 -439
  683. package/dist/src/iterativeMeta-DcF9JWEK.js +0 -437
  684. package/dist/src/iterativeMeta-DkfPqWIC.js +0 -439
  685. package/dist/src/iterativeMeta-DkrpnVSs.js +0 -440
  686. package/dist/src/iterativeTree-CEMY1FhE.cjs +0 -879
  687. package/dist/src/iterativeTree-Cv5W4tX9.js +0 -877
  688. package/dist/src/iterativeTree-DGvomd3M.js +0 -876
  689. package/dist/src/iterativeTree-KbtC2Mkz.js +0 -878
  690. package/dist/src/knowledgeBase-AYRXn4wO.js +0 -163
  691. package/dist/src/knowledgeBase-BNqQfx01.js +0 -163
  692. package/dist/src/knowledgeBase-C0IaCCVs.js +0 -164
  693. package/dist/src/knowledgeBase-C2uj6wK4.cjs +0 -163
  694. package/dist/src/litellm-CN1ScAwZ.js +0 -147
  695. package/dist/src/litellm-CTjwiKSa.js +0 -146
  696. package/dist/src/litellm-Cd4Nj5ue.js +0 -145
  697. package/dist/src/litellm-DMqLpEBg.cjs +0 -146
  698. package/dist/src/live-Bt50-InO.cjs +0 -891
  699. package/dist/src/live-Bu2ujadG.js +0 -2
  700. package/dist/src/live-C3M52i3p.js +0 -891
  701. package/dist/src/live-CRfHMO3B.js +0 -892
  702. package/dist/src/live-iCIpO14m.js +0 -891
  703. package/dist/src/luma-ray-B8eHC4c8.cjs +0 -309
  704. package/dist/src/luma-ray-BIvkPw0s.js +0 -309
  705. package/dist/src/luma-ray-ChsiBxMA.js +0 -309
  706. package/dist/src/luma-ray-DAvKrInz.js +0 -310
  707. package/dist/src/mantleChat-5YeEXAZI.js +0 -154
  708. package/dist/src/mantleChat-D--mW3hl.js +0 -154
  709. package/dist/src/mantleChat-DHP3siNg.cjs +0 -154
  710. package/dist/src/mantleChat-wBfAX46o.js +0 -155
  711. package/dist/src/mcp-49jlEcTQ.js +0 -85
  712. package/dist/src/mcp-__PIz81I.js +0 -84
  713. package/dist/src/memoryPoisoning-Chxge74M.js +0 -111
  714. package/dist/src/memoryPoisoning-QH6NCUVE.js +0 -112
  715. package/dist/src/memoryPoisoning-tCxZt8Nz.js +0 -111
  716. package/dist/src/memoryPoisoning-ymrRItRR.cjs +0 -111
  717. package/dist/src/messages-BE_eZ7NA.js +0 -1127
  718. package/dist/src/messages-Bo638ShI.js +0 -1127
  719. package/dist/src/messages-BzR0-NQ1.js +0 -1128
  720. package/dist/src/messages-Cbg5Pfd0.cjs +0 -1161
  721. package/dist/src/mischievousUser-BtED2Z5Z.cjs +0 -51
  722. package/dist/src/mischievousUser-KqSOjrDJ.js +0 -51
  723. package/dist/src/mischievousUser-YMD41YNZ.js +0 -51
  724. package/dist/src/mischievousUser-zBxlNdCu.js +0 -52
  725. package/dist/src/modelslab-B8gZxtfE.js +0 -171
  726. package/dist/src/modelslab-C7bmVpTB.js +0 -170
  727. package/dist/src/modelslab-CCeQCTZg.js +0 -170
  728. package/dist/src/modelslab-CvBJGv7y.cjs +0 -170
  729. package/dist/src/nova-reel-BOEWsEKA.cjs +0 -272
  730. package/dist/src/nova-reel-BtyBXq5M.js +0 -273
  731. package/dist/src/nova-reel-C1eF3-EE.js +0 -272
  732. package/dist/src/nova-reel-YhgrxEKT.js +0 -272
  733. package/dist/src/nova-sonic-BaERP20w.js +0 -374
  734. package/dist/src/nova-sonic-CxgM3O-P.cjs +0 -374
  735. package/dist/src/nova-sonic-DJS22fC3.js +0 -375
  736. package/dist/src/nova-sonic-DwvwHyRX.js +0 -374
  737. package/dist/src/novita-D1l2tG0O.js +0 -116
  738. package/dist/src/novita-D84VM3v0.cjs +0 -115
  739. package/dist/src/novita-DGInvwfR.js +0 -115
  740. package/dist/src/novita-vXHkXhTg.js +0 -114
  741. package/dist/src/nscale-CU0Ldr00.js +0 -209
  742. package/dist/src/nscale-ClfKlQeM.cjs +0 -209
  743. package/dist/src/nscale-DxaVnF0x.js +0 -210
  744. package/dist/src/nscale-_poVxIrO.js +0 -207
  745. package/dist/src/openaiResponses-CJGsneNj.js +0 -317
  746. package/dist/src/openaiResponses-CKSl5Sdg.js +0 -319
  747. package/dist/src/openaiResponses-DC8rzFUc.js +0 -318
  748. package/dist/src/openaiResponses-rMHIA3dV.cjs +0 -318
  749. package/dist/src/openclaw-CCbvsNFW.cjs +0 -1344
  750. package/dist/src/openclaw-CZw1lCDZ.js +0 -1336
  751. package/dist/src/openclaw-ChFLgC-a.js +0 -1338
  752. package/dist/src/openclaw-DrPMoRrH.js +0 -1337
  753. package/dist/src/opencode-sdk-2EfIDhFp.cjs +0 -1018
  754. package/dist/src/opencode-sdk-CHw3F845.js +0 -1013
  755. package/dist/src/opencode-sdk-D0EGGxvy.js +0 -1012
  756. package/dist/src/opencode-sdk-jSS7NI2Q.js +0 -1012
  757. package/dist/src/openinterpreter-CY622xHC.js +0 -431
  758. package/dist/src/openinterpreter-DATyhuhP.js +0 -432
  759. package/dist/src/openinterpreter-DDUMyIf1.js +0 -431
  760. package/dist/src/openinterpreter-s5Tz6Lid.cjs +0 -435
  761. package/dist/src/pricing-C498twd2.js +0 -976
  762. package/dist/src/pricing-DBd_bMIh.cjs +0 -999
  763. package/dist/src/pricing-ISrMCskv.js +0 -976
  764. package/dist/src/promptfoo-6p0WG2ih.js +0 -286
  765. package/dist/src/promptfoo-BQRfgNs_.js +0 -285
  766. package/dist/src/promptfoo-Bqo88z20.cjs +0 -341
  767. package/dist/src/promptfoo-Cq5AVI3I.js +0 -286
  768. package/dist/src/providers-ATbeMX5E.cjs +0 -24180
  769. package/dist/src/providers-B7F1FiNI.js +0 -2
  770. package/dist/src/providers-DazIw8mI.js +0 -24039
  771. package/dist/src/providers-QvGlNAD0.js +0 -24437
  772. package/dist/src/quiverai-BPlNcLkV.cjs +0 -325
  773. package/dist/src/quiverai-By99-YmJ.js +0 -325
  774. package/dist/src/quiverai-CmmByDqo.js +0 -325
  775. package/dist/src/quiverai-HZkoJJqw.js +0 -326
  776. package/dist/src/registry-BLTnTfjT.cjs +0 -131
  777. package/dist/src/registry-BMC-COHT.js +0 -132
  778. package/dist/src/registry-C8UZtmBp.js +0 -131
  779. package/dist/src/registry-CfwEUYXG.js +0 -131
  780. package/dist/src/remoteGeneration-Bgg6kC5V.js +0 -370
  781. package/dist/src/remoteGeneration-CKJFE960.cjs +0 -482
  782. package/dist/src/remoteGeneration-DaxwJDKv.js +0 -370
  783. package/dist/src/remoteGeneration-vHMGVKr1.js +0 -371
  784. package/dist/src/responses-BvnyIHrq.js +0 -1099
  785. package/dist/src/responses-CERAgvf-.js +0 -1098
  786. package/dist/src/responses-CwgjeuOg.cjs +0 -1109
  787. package/dist/src/runtimeTransform-3RF9Avyg.cjs +0 -161
  788. package/dist/src/runtimeTransform-C51Z5j4H.js +0 -156
  789. package/dist/src/runtimeTransform-CKE_Iyv8.js +0 -157
  790. package/dist/src/runtimeTransform-Cs11xJpj.js +0 -156
  791. package/dist/src/sagemaker-BJ4dOCxE.js +0 -713
  792. package/dist/src/sagemaker-Bt3JUAWq.js +0 -714
  793. package/dist/src/sagemaker-QVKyLgLF.cjs +0 -716
  794. package/dist/src/sagemaker-l3IB8iTs.js +0 -713
  795. package/dist/src/scanner-DGjIiTZ1.js +0 -1971
  796. package/dist/src/server-BNaLZH6u.js +0 -63
  797. package/dist/src/server-CBMuQul3.js +0 -189
  798. package/dist/src/server-CMKKIzKv.cjs +0 -74
  799. package/dist/src/server-CN2IS9Cs.js +0 -155
  800. package/dist/src/server-ua4cqbjC.js +0 -2
  801. package/dist/src/session-CQIjq_HZ.cjs +0 -69
  802. package/dist/src/session-FTlg8sEu.js +0 -62
  803. package/dist/src/session-GBQXtPWp.js +0 -63
  804. package/dist/src/session-_0-rTdwY.js +0 -62
  805. package/dist/src/shared-BtuO-OAM.js +0 -1927
  806. package/dist/src/shared-Ci78wTZX.js +0 -1928
  807. package/dist/src/shared-Dd3rimdM.js +0 -1929
  808. package/dist/src/shared-KAjFxRre.cjs +0 -2185
  809. package/dist/src/simulatedUser--OjW6xCx.js +0 -247
  810. package/dist/src/simulatedUser-D0-slRye.cjs +0 -252
  811. package/dist/src/simulatedUser-D1Kh_cwA.js +0 -248
  812. package/dist/src/slack-BX0FUevO.js +0 -144
  813. package/dist/src/slack-CcwXFiJE.cjs +0 -144
  814. package/dist/src/slack-CnfqKfXp.js +0 -145
  815. package/dist/src/strategies-2ntcK4tN.js +0 -2248
  816. package/dist/src/strategies-DZIW7Zcs.js +0 -2385
  817. package/dist/src/strategies-YRDF2j-N.cjs +0 -2420
  818. package/dist/src/telemetry-CL8CVA4p.js +0 -205
  819. package/dist/src/telemetry-Cix90qqz.js +0 -201
  820. package/dist/src/telemetry-CkmlqTjV.js +0 -205
  821. package/dist/src/telemetry-DQH7l5bb.js +0 -2
  822. package/dist/src/telemetry-DUCXc1-r.cjs +0 -216
  823. package/dist/src/togetherai-3yUt5Ck7.js +0 -49
  824. package/dist/src/togetherai-BJUByLwt.cjs +0 -49
  825. package/dist/src/togetherai-Bh6KZkmd.js +0 -50
  826. package/dist/src/togetherai-DDl9yk3b.js +0 -48
  827. package/dist/src/traceContext-BiJVppjT.cjs +0 -1032
  828. package/dist/src/traceContext-CKKluULP.js +0 -1016
  829. package/dist/src/traceContext-D3Sk8fO-.js +0 -1015
  830. package/dist/src/transcription-BoVQKIVz.js +0 -175
  831. package/dist/src/transcription-Bs5u8780.js +0 -175
  832. package/dist/src/transcription-Dl654d1p.cjs +0 -178
  833. package/dist/src/transcription-VEvhM1Fu.js +0 -176
  834. package/dist/src/transform-BAbkGpvl.js +0 -125
  835. package/dist/src/transform-C_j4hUH8.js +0 -126
  836. package/dist/src/transform-Da86hs4M.cjs +0 -154
  837. package/dist/src/transform-_i1raQNo.js +0 -125
  838. package/dist/src/typesafe-CKXBeh82.cjs +0 -253
  839. package/dist/src/typesafe-D3VaGeNm.js +0 -253
  840. package/dist/src/typesafe-DYM-SFNH.js +0 -253
  841. package/dist/src/typesafe-LXmSbw8F.js +0 -254
  842. package/dist/src/util-41rb0XHX.js +0 -743
  843. package/dist/src/util-B0WlHYFM.js +0 -2049
  844. package/dist/src/util-BD1R_PsR.js +0 -1770
  845. package/dist/src/util-BLbM_ItC.js +0 -395
  846. package/dist/src/util-C72P0iIa.js +0 -352
  847. package/dist/src/util-C7MpGlJ6.cjs +0 -2305
  848. package/dist/src/util-CCtqagKc.js +0 -286
  849. package/dist/src/util-CM2Ec_uY.js +0 -2051
  850. package/dist/src/util-CSSAWO8v.js +0 -351
  851. package/dist/src/util-CkQc-fx3.cjs +0 -934
  852. package/dist/src/util-DcOlFTFa.cjs +0 -478
  853. package/dist/src/util-DluGTGVB.js +0 -395
  854. package/dist/src/util-PfQ60chz.js +0 -743
  855. package/dist/src/util-f14-CPij.js +0 -396
  856. package/dist/src/util-l9pXX3Eu.cjs +0 -357
  857. package/dist/src/util-o_BnlYqS.js +0 -2050
  858. package/dist/src/vertex-B_-gQgzc.js +0 -2
  859. package/dist/src/vertex-CU4gqoYa.js +0 -854
  860. package/dist/src/vertex-DZ42UHb3.js +0 -848
  861. package/dist/src/vertex-DsYQJA0T.cjs +0 -871
  862. package/dist/src/vertexLive-BvIaHKGB.js +0 -55
  863. package/dist/src/vertexLive-CTULqNx7.js +0 -56
  864. package/dist/src/vertexLive-DjJ_YQBe.cjs +0 -55
  865. package/dist/src/vertexLive-STUGcteB.js +0 -55
  866. package/dist/src/video-CAQGmtEV.js +0 -703
  867. package/dist/src/video-_FSTWlwX.js +0 -702
  868. package/dist/src/video-aBPJPWdt.js +0 -702
  869. package/dist/src/video-gDjkWv5m.cjs +0 -706
@@ -1,1018 +0,0 @@
1
- const require_rolldown_runtime = require("./rolldown-runtime-C0BPl7ul.cjs");
2
- const require_logger = require("./logger-DXUHJBHJ.cjs");
3
- const require_esm = require("./esm-DITT-qdS.cjs");
4
- const require_agentic_utils = require("./agentic-utils-D23qtOlx.cjs");
5
- const require_agenticRunQueue = require("./agenticRunQueue-Cd8lOVSn.cjs");
6
- const require_agentWorkspace = require("./agentWorkspace-B8A_wuMR.cjs");
7
- let fs_promises = require("fs/promises");
8
- fs_promises = require_rolldown_runtime.__toESM(fs_promises, 1);
9
- let path = require("path");
10
- path = require_rolldown_runtime.__toESM(path, 1);
11
- let fs = require("fs");
12
- fs = require_rolldown_runtime.__toESM(fs, 1);
13
- let os = require("os");
14
- os = require_rolldown_runtime.__toESM(os, 1);
15
- let dedent = require("dedent");
16
- dedent = require_rolldown_runtime.__toESM(dedent, 1);
17
- let node_module = require("node:module");
18
- let _opentelemetry_core = require("@opentelemetry/core");
19
- //#region src/providers/opencode-sdk.ts
20
- /**
21
- * OpenCode SDK Provider
22
- *
23
- * This provider requires the @opencode-ai/sdk package, which is not installed by default.
24
- * Users must install it separately:
25
- * npm install @opencode-ai/sdk
26
- *
27
- * OpenCode is an open-source AI coding agent for the terminal with support for 75+ LLM providers.
28
- *
29
- * Key features:
30
- * - Client-server architecture with local server management
31
- * - Support for 75+ LLM providers (Anthropic, OpenAI, Google, Ollama, etc.)
32
- * - Built-in tools (bash, read, write, edit, grep, glob, etc.)
33
- * - Session-based conversations with persistence
34
- * - MCP server integration
35
- * - Custom agent definitions
36
- *
37
- * Default configurations:
38
- * - No working_dir: Runs in temp directory with no tools (chat-only mode)
39
- * - With working_dir: Runs in specified directory with read-only tools (read, grep, glob, list)
40
- *
41
- * For side effects (file writes, bash commands), configure tools and permissions explicitly.
42
- */
43
- const FS_READONLY_TOOLS = [
44
- "glob",
45
- "grep",
46
- "list",
47
- "read"
48
- ];
49
- const EDIT_TOOL_ALIASES = /* @__PURE__ */ new Set([
50
- "edit",
51
- "write",
52
- "patch",
53
- "apply_patch"
54
- ]);
55
- /**
56
- * Check if promptfoo is in debug mode
57
- */
58
- function isDebugMode() {
59
- return require_logger.getLogLevel() === "debug";
60
- }
61
- /**
62
- * Maximum number of sessions to keep in memory to prevent unbounded growth
63
- */
64
- const MAX_SESSIONS = 100;
65
- /**
66
- * Resolve ESM-only package entry point by reading package.json exports
67
- * Handles packages that only have "import" condition (no "require" condition)
68
- *
69
- * @param packageName - The package name (e.g., '@opencode-ai/sdk')
70
- * @param basePath - Base path for resolution
71
- * @returns Absolute path to the ESM entry point
72
- */
73
- function resolveEsmPackage(packageName, exportPath, basePath) {
74
- const require$1 = (0, node_module.createRequire)(path.default.join(basePath, "package.json"));
75
- let packageJsonPath;
76
- try {
77
- packageJsonPath = require$1.resolve(`${packageName}/package.json`);
78
- } catch {
79
- packageJsonPath = path.default.join(basePath, "node_modules", ...packageName.split("/"), "package.json");
80
- if (!fs.default.existsSync(packageJsonPath)) throw new Error(`Cannot find ${packageName}/package.json`);
81
- }
82
- const packageDir = path.default.dirname(packageJsonPath);
83
- const packageJson = JSON.parse(fs.default.readFileSync(packageJsonPath, "utf-8"));
84
- let esmEntry;
85
- if (packageJson.exports) {
86
- const mainExport = packageJson.exports[exportPath] || (exportPath === "." ? packageJson.exports["."] || packageJson.exports : void 0);
87
- if (typeof mainExport === "string") esmEntry = mainExport;
88
- else if (typeof mainExport === "object") esmEntry = mainExport.import || mainExport.default;
89
- }
90
- if (!esmEntry) esmEntry = packageJson.module || packageJson.main;
91
- if (!esmEntry) throw new Error(`Cannot find ESM entry point in ${packageName}/package.json`);
92
- return path.default.join(packageDir, esmEntry);
93
- }
94
- function hasRepositoryEnv(env) {
95
- const filtered = { ...env };
96
- require_agentWorkspace.clearRepositoryEnv(filtered);
97
- return Object.keys(env).some((key) => !(key in filtered));
98
- }
99
- function unwrapOpenCodeResult(result) {
100
- if (result === void 0 || result === null) return;
101
- if (typeof result === "object" && "data" in result) return result.data;
102
- return result;
103
- }
104
- function getOpenCodeCacheDetails(cache) {
105
- if (typeof cache === "number") return {
106
- read: cache,
107
- write: 0
108
- };
109
- if (!cache || typeof cache !== "object") return {
110
- read: 0,
111
- write: 0
112
- };
113
- return {
114
- read: cache.read ?? 0,
115
- write: cache.write ?? 0
116
- };
117
- }
118
- function buildOpenCodeTokenUsage(tokens) {
119
- if (!tokens) return;
120
- const prompt = tokens.input ?? 0;
121
- const completion = tokens.output ?? 0;
122
- const cache = getOpenCodeCacheDetails(tokens.cache);
123
- const completionDetails = {};
124
- if (typeof tokens.reasoning === "number") completionDetails.reasoning = tokens.reasoning;
125
- if (tokens.cache !== void 0) {
126
- completionDetails.cacheReadInputTokens = cache.read;
127
- completionDetails.cacheCreationInputTokens = cache.write;
128
- }
129
- return {
130
- prompt,
131
- completion,
132
- total: tokens.total ?? prompt + completion,
133
- ...tokens.cache === void 0 ? {} : { cached: cache.read },
134
- ...Object.keys(completionDetails).length > 0 ? { completionDetails } : {}
135
- };
136
- }
137
- function getSessionPath(sessionId) {
138
- return {
139
- id: sessionId,
140
- sessionID: sessionId
141
- };
142
- }
143
- /**
144
- * Convert the user-facing object-shaped permission config into the
145
- * rule-array shape required by the v2 `session.create.permission` API.
146
- *
147
- * - `{ bash: 'allow' }` → `[{ permission: 'bash', pattern: '*', action: 'allow' }]`
148
- * - `{ bash: { '*': 'ask', 'git *': 'allow' } }` → two rules with the
149
- * corresponding glob pattern preserved per entry.
150
- *
151
- * Returns `undefined` when the config has no usable entries so callers can
152
- * omit the field entirely.
153
- */
154
- function convertPermissionConfigToRuleset(config) {
155
- if (config === void 0) return;
156
- if (!config || typeof config !== "object" || Array.isArray(config) || ![Object.prototype, null].includes(Object.getPrototypeOf(config))) throw new Error("OpenCode permission must be an object mapping tools to permission rules");
157
- const rules = [];
158
- for (const [tool, value] of Object.entries(config)) {
159
- if (value === void 0) continue;
160
- if (isOpenCodePermissionAction(value)) {
161
- rules.push({
162
- permission: tool,
163
- pattern: "*",
164
- action: value
165
- });
166
- continue;
167
- }
168
- if (!value || typeof value !== "object" || Array.isArray(value) || ![Object.prototype, null].includes(Object.getPrototypeOf(value))) throw new Error(`OpenCode permission.${tool} must be ask, allow, deny, or a pattern mapping`);
169
- for (const [pattern, action] of Object.entries(value)) {
170
- if (!isOpenCodePermissionAction(action)) throw new Error(`OpenCode permission.${tool}.${pattern} must be ask, allow, or deny`);
171
- rules.push({
172
- permission: tool,
173
- pattern,
174
- action
175
- });
176
- }
177
- }
178
- return rules.length > 0 ? rules : void 0;
179
- }
180
- function isOpenCodePermissionAction(value) {
181
- return value === "ask" || value === "allow" || value === "deny";
182
- }
183
- function convertToolsConfigToRuleset(config) {
184
- return Object.entries(config).map(([permission, enabled]) => ({
185
- permission,
186
- pattern: "*",
187
- action: enabled ? "allow" : "deny"
188
- }));
189
- }
190
- function openCodeMcpContainsCacheSensitiveData(config) {
191
- return Object.values(config ?? {}).some((server) => {
192
- if (server.type === "local" && (Object.keys(server.environment ?? {}).length > 0 || server.command.length > 1) || server.type === "remote" && (Object.keys(server.headers ?? {}).length > 0 || server.oauth !== void 0)) return true;
193
- if (server.type !== "remote") return false;
194
- try {
195
- const url = new URL(server.url);
196
- return Boolean(url.username || url.password || url.search);
197
- } catch {
198
- return server.url.includes("?") || server.url.includes("@");
199
- }
200
- });
201
- }
202
- function openCodeBaseUrlContainsCacheSensitiveData(baseUrl) {
203
- if (!baseUrl) return false;
204
- try {
205
- const url = new URL(baseUrl);
206
- return Boolean(url.username || url.password || url.search);
207
- } catch {
208
- return baseUrl.includes("?") || baseUrl.includes("@");
209
- }
210
- }
211
- function getCacheSafeOpenCodeBaseUrl(baseUrl) {
212
- if (!baseUrl || !openCodeBaseUrlContainsCacheSensitiveData(baseUrl)) return baseUrl;
213
- try {
214
- const url = new URL(baseUrl);
215
- url.username = "";
216
- url.password = "";
217
- url.search = "";
218
- return url.toString();
219
- } catch {
220
- return;
221
- }
222
- }
223
- function tryParseJson(value) {
224
- try {
225
- return JSON.stringify(JSON.parse(value));
226
- } catch {
227
- return;
228
- }
229
- }
230
- function normalizeStructuredText(value) {
231
- const trimmedValue = value.trim();
232
- const directJson = tryParseJson(trimmedValue);
233
- if (directJson) return directJson;
234
- const fencedJsonMatch = trimmedValue.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/i);
235
- if (!fencedJsonMatch?.[1]) return;
236
- return tryParseJson(fencedJsonMatch[1]);
237
- }
238
- function isValidTraceparent(traceparent) {
239
- return Boolean(traceparent && (0, _opentelemetry_core.parseTraceParent)(traceparent));
240
- }
241
- const OPENCODE_TRACEPARENT_ENV = "OPENCODE_TRACEPARENT";
242
- function setProcessEnvValue(key, value) {
243
- if (value === void 0) Reflect.deleteProperty(process.env, key);
244
- else Object.assign(process.env, { [key]: value });
245
- }
246
- /**
247
- * The SDK reads process.env synchronously when it starts the server. Apply overrides
248
- * until the startup function returns its promise, then restore the parent environment.
249
- * The real-SDK contract test guards this timing assumption across SDK upgrades.
250
- */
251
- function spawnWithServerEnv(serverEnv, spawn) {
252
- const restore = [];
253
- try {
254
- for (const [key, value] of Object.entries(serverEnv)) if (process.env[key] !== value) {
255
- restore.push([key, process.env[key]]);
256
- setProcessEnvValue(key, value);
257
- }
258
- return spawn();
259
- } finally {
260
- for (const [key, value] of restore) setProcessEnvValue(key, value);
261
- }
262
- }
263
- /** Serialize server replacement with the calls using that server. */
264
- const SERVER_LIFECYCLE_QUEUE_KEY = "opencode:sdk:server-lifecycle";
265
- /**
266
- * Helper to load the OpenCode SDK ESM module
267
- *
268
- * Uses a two-phase approach:
269
- * 1. Try simple dynamic import - works when SDK is in same node_modules tree
270
- * 2. Fall back to smart ESM resolution for edge cases (pnpm, global installs, monorepos)
271
- */
272
- async function loadOpenCodeSDK() {
273
- const directImports = [{
274
- specifier: "@opencode-ai/sdk/v2",
275
- exportPath: "./v2",
276
- apiVersion: "v2"
277
- }, {
278
- specifier: "@opencode-ai/sdk",
279
- exportPath: ".",
280
- apiVersion: "v1"
281
- }];
282
- for (const candidate of directImports) try {
283
- require_logger.logger.debug(`Attempting dynamic import of ${candidate.specifier}`);
284
- return {
285
- ...await import(candidate.specifier),
286
- apiVersion: candidate.apiVersion
287
- };
288
- } catch (error) {
289
- require_logger.logger.debug(`Dynamic import failed for ${candidate.specifier}`, { error });
290
- }
291
- const basePath = require_logger.state.basePath && path.default.isAbsolute(require_logger.state.basePath) ? require_logger.state.basePath : process.cwd();
292
- for (const candidate of directImports) try {
293
- const modulePath = resolveEsmPackage("@opencode-ai/sdk", candidate.exportPath, basePath);
294
- require_logger.logger.debug(`Resolved OpenCode SDK path (${candidate.apiVersion}): ${modulePath}`);
295
- return {
296
- ...await require_esm.importModule(modulePath),
297
- apiVersion: candidate.apiVersion
298
- };
299
- } catch (error) {
300
- require_logger.logger.debug(`Smart resolution failed for ${candidate.specifier}`, { error });
301
- }
302
- const err = /* @__PURE__ */ new Error("Failed to resolve @opencode-ai/sdk");
303
- require_logger.logger.error(`Failed to load OpenCode SDK: ${err}`);
304
- throw new Error(dedent.default`The @opencode-ai/sdk package is required but not installed.
305
-
306
- To use the OpenCode SDK provider, install it with:
307
- npm install @opencode-ai/sdk
308
-
309
- For more information, see: https://www.promptfoo.dev/docs/providers/opencode-sdk/`);
310
- }
311
- var OpenCodeSDKProvider = class {
312
- config;
313
- env;
314
- providerId = "opencode:sdk";
315
- opencodeModule;
316
- opencodeModuleLoad;
317
- client;
318
- clientInitialization;
319
- server;
320
- sessions = /* @__PURE__ */ new Map();
321
- sessionOrder = [];
322
- sessionQueues = new require_agenticRunQueue.AgenticRunQueue("OpenCode SDK session wait aborted");
323
- credentialCacheScope = crypto.randomUUID();
324
- streamingWarningEmitted = false;
325
- missingTraceparentWarningEmitted = false;
326
- activeTraceparent;
327
- serverHasRepositoryEnv = false;
328
- constructor(options = {}) {
329
- const { config, env, id } = options;
330
- this.config = config ?? {};
331
- this.env = env;
332
- this.providerId = id ?? this.providerId;
333
- }
334
- id() {
335
- return this.providerId;
336
- }
337
- /**
338
- * Get API key based on provider_id or common environment variables
339
- */
340
- getApiKey(config = this.config) {
341
- if (config?.apiKey) return config.apiKey;
342
- let env = this.env;
343
- if (os.default.platform() === "win32" && env) {
344
- const configuredEnv = env;
345
- env = {};
346
- for (const key of Object.keys(configuredEnv).sort()) if (configuredEnv[key] !== void 0) env[key.toUpperCase()] = configuredEnv[key];
347
- }
348
- const providerId = config?.provider_id?.toLowerCase();
349
- if (providerId === "anthropic") return env?.ANTHROPIC_API_KEY || require_logger.getEnvString("ANTHROPIC_API_KEY");
350
- if (providerId === "openai") return env?.OPENAI_API_KEY || require_logger.getEnvString("OPENAI_API_KEY");
351
- if (providerId === "google") return env?.GOOGLE_API_KEY || require_logger.getEnvString("GOOGLE_API_KEY");
352
- return env?.ANTHROPIC_API_KEY || require_logger.getEnvString("ANTHROPIC_API_KEY") || env?.OPENAI_API_KEY || require_logger.getEnvString("OPENAI_API_KEY");
353
- }
354
- getCredentialCacheScope(config) {
355
- return config.baseUrl ? void 0 : this.credentialCacheScope;
356
- }
357
- toString() {
358
- return "[OpenCode SDK Provider]";
359
- }
360
- async cleanup() {
361
- await this.clientInitialization?.catch(() => void 0);
362
- this.clientInitialization = void 0;
363
- for (const session of this.sessions.values()) try {
364
- await this.deleteSession(session);
365
- } catch (err) {
366
- require_logger.logger.debug(`Failed to delete persistent session ${session.id}: ${err}`);
367
- }
368
- this.sessions.clear();
369
- this.sessionOrder = [];
370
- this.sessionQueues.clear();
371
- await this.closeServer();
372
- }
373
- /** Close the owned server; callers handle session cleanup. */
374
- async closeServer() {
375
- await this.clientInitialization?.catch(() => void 0);
376
- this.clientInitialization = void 0;
377
- if (this.server) {
378
- try {
379
- this.server.close();
380
- } catch (err) {
381
- require_logger.logger.debug(`Failed to close OpenCode server: ${err}`);
382
- }
383
- this.server = void 0;
384
- }
385
- this.client = void 0;
386
- this.activeTraceparent = void 0;
387
- this.serverHasRepositoryEnv = false;
388
- }
389
- /**
390
- * Build the tools configuration based on config and defaults
391
- */
392
- buildToolsConfig(config, includeDefaults = true) {
393
- const configuredTools = config.tools;
394
- if (configuredTools !== void 0 && (!configuredTools || typeof configuredTools !== "object" || Array.isArray(configuredTools) || ![Object.prototype, null].includes(Object.getPrototypeOf(configuredTools)))) throw new Error("OpenCode tools must be an object mapping tool names to booleans");
395
- const entries = /* @__PURE__ */ new Map();
396
- if (includeDefaults) {
397
- entries.set("*", false);
398
- if (config.working_dir) for (const tool of FS_READONLY_TOOLS) entries.set(tool, true);
399
- }
400
- let editPermission;
401
- for (const [tool, enabled] of Object.entries(configuredTools ?? {})) {
402
- if (enabled === void 0) continue;
403
- if (typeof enabled !== "boolean") throw new Error(`OpenCode tools.${tool} must be a boolean`);
404
- if (!tool.trim()) throw new Error("OpenCode tool names must not be empty");
405
- if (EDIT_TOOL_ALIASES.has(tool)) {
406
- if (editPermission !== void 0 && editPermission !== enabled) throw new Error("OpenCode tools edit, write, patch, and apply_patch share one permission and cannot conflict");
407
- editPermission = enabled;
408
- continue;
409
- }
410
- entries.set(tool, enabled);
411
- }
412
- if (editPermission !== void 0) entries.set("edit", editPermission);
413
- return Object.fromEntries(entries);
414
- }
415
- buildEffectiveToolsConfig(config) {
416
- const customAgent = config.agent ? void 0 : config.custom_agent;
417
- const tools = /* @__PURE__ */ new Map();
418
- for (const [tool, enabled] of Object.entries(this.buildToolsConfig(config))) if (enabled !== void 0) tools.set(tool, enabled);
419
- for (const [tool, enabled] of Object.entries(this.buildToolsConfig({
420
- ...config,
421
- tools: customAgent?.tools
422
- }, false))) if (enabled !== void 0) {
423
- tools.delete(tool);
424
- tools.set(tool, enabled);
425
- }
426
- return Object.fromEntries(tools);
427
- }
428
- buildConfiguredPermissionRules(config) {
429
- const customAgent = config.agent ? void 0 : config.custom_agent;
430
- return [...convertPermissionConfigToRuleset(config.permission) ?? [], ...convertPermissionConfigToRuleset(customAgent?.permission) ?? []];
431
- }
432
- buildQuery(config, workingDir) {
433
- const query = {};
434
- if (config.working_dir && workingDir) query.directory = workingDir;
435
- if (config.workspace) query.workspace = config.workspace;
436
- return Object.keys(query).length > 0 ? query : void 0;
437
- }
438
- historyAffectingInputs(config) {
439
- return {
440
- provider_id: config.provider_id,
441
- model: config.model,
442
- baseUrl: getCacheSafeOpenCodeBaseUrl(config.baseUrl),
443
- tools: this.buildToolsConfig(config),
444
- permission: config.permission,
445
- agent: config.agent,
446
- custom_agent: config.custom_agent,
447
- workspace: config.workspace,
448
- format: config.format,
449
- variant: config.variant,
450
- session_id: config.session_id,
451
- toolPolicyContractVersion: 2,
452
- parent_session_id: config.parent_session_id,
453
- credentialScope: this.getCredentialCacheScope(config),
454
- apiVersion: this.opencodeModule?.apiVersion
455
- };
456
- }
457
- buildSessionKey(config, workingDir) {
458
- return require_agentic_utils.generateCacheKey("opencode:sdk:session", {
459
- ...this.historyAffectingInputs(config),
460
- workingDir: config.working_dir ? workingDir : void 0,
461
- mcp: config.mcp
462
- });
463
- }
464
- /** An undefined value removes a variable while the server starts. */
465
- buildServerEnv(config, traceparent) {
466
- const serverEnv = {};
467
- const processEnv = require_logger.getProcessEnv();
468
- const isWindows = os.default.platform() === "win32";
469
- const canonicalKeys = /* @__PURE__ */ new Map();
470
- const envKey = (key) => {
471
- if (!isWindows) return key;
472
- const normalized = key.toUpperCase();
473
- const existing = canonicalKeys.get(normalized);
474
- if (existing) return existing;
475
- canonicalKeys.set(normalized, key);
476
- return key;
477
- };
478
- for (const [key, value] of Object.entries(processEnv)) if (value !== void 0) serverEnv[envKey(key)] = value;
479
- if (this.env) for (const key of Object.keys(this.env).sort()) {
480
- const value = this.env[key];
481
- if (value !== void 0) serverEnv[envKey(key)] = value;
482
- }
483
- if (config.log_level === "debug" || isDebugMode()) {
484
- const debugKey = envKey("DEBUG");
485
- serverEnv[debugKey] = serverEnv[debugKey] || "opencode:*";
486
- require_logger.logger.debug("[OpenCode SDK] Debug mode enabled, synced from promptfoo log level");
487
- }
488
- const pathKey = envKey("PATH");
489
- const homeDir = os.default.homedir();
490
- const opencodeBinPath = path.default.join(homeDir, ".opencode", "bin");
491
- if (!serverEnv[pathKey]?.split(path.default.delimiter).includes(opencodeBinPath)) {
492
- serverEnv[pathKey] = [opencodeBinPath, serverEnv[pathKey]].filter(Boolean).join(path.default.delimiter);
493
- require_logger.logger.debug(`Added ${opencodeBinPath} to PATH for OpenCode CLI`);
494
- }
495
- const traceparentKey = envKey(OPENCODE_TRACEPARENT_ENV);
496
- if (config.restart_server_per_call) serverEnv[traceparentKey] = isValidTraceparent(traceparent) ? traceparent : void 0;
497
- else if (isValidTraceparent(traceparent) && !serverEnv[traceparentKey]) serverEnv[traceparentKey] = traceparent;
498
- if (require_agentWorkspace.assertIsolatedWorkingDir(config)) require_agentWorkspace.clearRepositoryEnv(serverEnv);
499
- return serverEnv;
500
- }
501
- buildServerConfig(config) {
502
- const serverConfig = {};
503
- if (config.log_level) serverConfig.logLevel = config.log_level;
504
- if (config.mcp && Object.keys(config.mcp).length > 0) {
505
- serverConfig.mcp = config.mcp;
506
- require_logger.logger.debug(`[OpenCode SDK] Configuring MCP servers: ${Object.keys(config.mcp).join(", ")}`);
507
- }
508
- if (config.custom_agent) {
509
- serverConfig.agent = { custom: {
510
- description: config.custom_agent.description,
511
- model: config.custom_agent.model,
512
- temperature: config.custom_agent.temperature,
513
- top_p: config.custom_agent.top_p,
514
- tools: config.custom_agent.tools === void 0 ? void 0 : this.buildToolsConfig({
515
- ...config,
516
- tools: config.custom_agent.tools
517
- }, false),
518
- permission: config.custom_agent.permission,
519
- prompt: config.custom_agent.prompt,
520
- mode: config.custom_agent.mode ?? "primary",
521
- maxSteps: config.custom_agent.steps ?? config.custom_agent.maxSteps,
522
- color: config.custom_agent.color,
523
- disable: config.custom_agent.disable,
524
- hidden: config.custom_agent.hidden
525
- } };
526
- require_logger.logger.debug(`[OpenCode SDK] Configuring custom agent: ${config.custom_agent.description}`);
527
- }
528
- if (config.permission) {
529
- serverConfig.permission = config.permission;
530
- require_logger.logger.debug("[OpenCode SDK] Configuring global permissions");
531
- }
532
- const toolsConfig = this.buildToolsConfig(config);
533
- if (toolsConfig) serverConfig.tools = toolsConfig;
534
- if (config.provider_id && config.apiKey) {
535
- serverConfig.provider = { [config.provider_id]: { options: { apiKey: config.apiKey } } };
536
- require_logger.logger.debug(`[OpenCode SDK] Injecting provider apiKey for ${config.provider_id}`);
537
- }
538
- return serverConfig;
539
- }
540
- warnOnIgnoredBaseUrlConfig(config) {
541
- if (!config.baseUrl) return;
542
- const ignoredSettings = [
543
- config.hostname === void 0 ? void 0 : "hostname",
544
- config.port === void 0 ? void 0 : "port",
545
- config.timeout === void 0 ? void 0 : "timeout",
546
- config.log_level === void 0 ? void 0 : "log_level",
547
- config.mcp ? "mcp" : void 0,
548
- config.custom_agent ? "custom_agent" : void 0,
549
- config.apiKey ? "apiKey" : void 0
550
- ].filter(Boolean);
551
- if (ignoredSettings.length > 0) require_logger.logger.warn(`[OpenCode SDK] baseUrl uses an existing OpenCode server. These config keys are ignored unless that server is preconfigured: ${ignoredSettings.join(", ")}`);
552
- }
553
- buildDeleteSessionParameters(session) {
554
- if (!this.opencodeModule) throw new Error("OpenCode SDK module is not loaded");
555
- if (this.opencodeModule.apiVersion === "v2") return {
556
- sessionID: session.id,
557
- ...session.query
558
- };
559
- return {
560
- path: getSessionPath(session.id),
561
- query: session.query
562
- };
563
- }
564
- async deleteSession(session) {
565
- if (!session) return;
566
- await this.client?.session?.delete?.(this.buildDeleteSessionParameters(session));
567
- }
568
- buildAbortSessionParameters(sessionId, sessionQuery) {
569
- return {
570
- sessionID: sessionId,
571
- ...sessionQuery
572
- };
573
- }
574
- /**
575
- * Add a session to the cache with LRU eviction
576
- */
577
- addSession(cacheKey, session) {
578
- while (this.sessions.size >= MAX_SESSIONS && this.sessionOrder.length > 0) {
579
- const oldestKey = this.sessionOrder.shift();
580
- if (oldestKey) {
581
- const oldSession = this.sessions.get(oldestKey);
582
- this.sessions.delete(oldestKey);
583
- if (oldSession) this.deleteSession(oldSession).catch((err) => {
584
- require_logger.logger.debug(`Failed to delete evicted session ${oldSession.id}: ${err}`);
585
- });
586
- }
587
- }
588
- this.sessions.set(cacheKey, session);
589
- this.sessionOrder.push(cacheKey);
590
- }
591
- assertServerWorkspace(config, inIsolatedWorkspace) {
592
- if (inIsolatedWorkspace && !config.baseUrl && (this.serverHasRepositoryEnv || hasRepositoryEnv(process.env))) throw new Error("copy_working_dir cannot isolate OpenCode while its server inherits Git repository selectors such as GIT_DIR, GIT_WORK_TREE, or GIT_INDEX_FILE. The OpenCode SDK does not support replacing that environment. Unset repository-selecting Git variables before starting the provider.");
593
- }
594
- prepareCall(context) {
595
- const config = {
596
- ...this.config,
597
- ...context?.prompt?.config
598
- };
599
- const inIsolatedWorkspace = require_agentWorkspace.assertIsolatedWorkingDir(config);
600
- this.assertServerWorkspace(config, inIsolatedWorkspace);
601
- if (config.apiKey !== this.config.apiKey) throw new Error("OpenCode SDK apiKey is provider-level configuration and cannot be overridden per prompt");
602
- if (config.baseUrl !== this.config.baseUrl) throw new Error("OpenCode SDK baseUrl is provider-level configuration and cannot be overridden per prompt");
603
- if (Boolean(config.restart_server_per_call) !== Boolean(this.config.restart_server_per_call)) throw new Error("OpenCode SDK restart_server_per_call is provider-level configuration and cannot be overridden per prompt");
604
- if (config.workspace && !config.baseUrl && !config.working_dir) throw new Error("OpenCode SDK workspace support requires either baseUrl or working_dir");
605
- this.validateTraceRestartConfiguration(config);
606
- if (config.apiKey && !config.provider_id && !config.baseUrl) require_logger.logger.warn("[OpenCode SDK] apiKey is set without provider_id. Prefer setting provider_id so promptfoo can wire the credential into the spawned OpenCode server.");
607
- this.warnOnIgnoredBaseUrlConfig(config);
608
- if (config.working_dir) {
609
- const workingDir = require_agentic_utils.resolveAgenticWorkingDir(config.working_dir, require_logger.state.basePath) ?? process.cwd();
610
- let stats;
611
- try {
612
- stats = fs.default.statSync(workingDir);
613
- } catch (err) {
614
- throw new Error(`Working directory ${config.working_dir} (resolved to ${workingDir}) does not exist or isn't accessible: ${err.message}`);
615
- }
616
- if (!stats.isDirectory()) throw new Error(`Working directory ${config.working_dir} (resolved to ${workingDir}) is not a directory`);
617
- return {
618
- config,
619
- inIsolatedWorkspace,
620
- isTempDir: false,
621
- workingDir
622
- };
623
- }
624
- return {
625
- config,
626
- inIsolatedWorkspace,
627
- isTempDir: true,
628
- workingDir: fs.default.mkdtempSync(path.default.join(os.default.tmpdir(), "promptfoo-opencode-sdk-"))
629
- };
630
- }
631
- validateTraceRestartConfiguration(config) {
632
- if (!config.restart_server_per_call) return;
633
- if (config.baseUrl) throw new Error("OpenCode SDK restart_server_per_call cannot be combined with baseUrl; the provider must own the server.");
634
- if (config.port !== void 0 && config.port !== 0) throw new Error("OpenCode SDK restart_server_per_call requires an automatically assigned port; omit port or set it to 0.");
635
- const conflicting = [
636
- config.persist_sessions ? "persist_sessions" : void 0,
637
- config.session_id ? "session_id" : void 0,
638
- config.parent_session_id ? "parent_session_id" : void 0
639
- ].filter(Boolean);
640
- if (conflicting.length > 0) throw new Error(`OpenCode SDK restart_server_per_call cannot preserve session state with: ${conflicting.join(", ")}.`);
641
- }
642
- async ensureOpenCodeModule() {
643
- if (this.opencodeModule) return this.opencodeModule;
644
- if (!this.opencodeModuleLoad) this.opencodeModuleLoad = loadOpenCodeSDK().catch((err) => {
645
- this.opencodeModuleLoad = void 0;
646
- throw err;
647
- });
648
- this.opencodeModule = await this.opencodeModuleLoad;
649
- return this.opencodeModule;
650
- }
651
- async ensureClient(config, traceparent) {
652
- const opencodeModule = await this.ensureOpenCodeModule();
653
- this.validateSessionPolicyConfiguration(config);
654
- const desiredTraceparent = isValidTraceparent(traceparent) ? traceparent : void 0;
655
- const restartsPerCall = Boolean(config.restart_server_per_call);
656
- if (this.client) {
657
- if (!restartsPerCall || this.activeTraceparent === desiredTraceparent) return;
658
- require_logger.logger.debug(`[OpenCode SDK] Restarting server to re-parent spans (traceparent ${this.activeTraceparent ?? "none"} -> ${desiredTraceparent ?? "none"})`);
659
- await this.closeServer();
660
- this.sessions.clear();
661
- this.sessionOrder = [];
662
- }
663
- if (this.clientInitialization !== void 0) return this.clientInitialization;
664
- const { createOpencode, createOpencodeClient } = opencodeModule;
665
- let initialization;
666
- initialization = (async () => {
667
- if (config.baseUrl) {
668
- this.client = createOpencodeClient({ baseUrl: config.baseUrl });
669
- return;
670
- }
671
- const serverEnv = this.buildServerEnv(config, desiredTraceparent);
672
- const passThroughEnv = {};
673
- for (const [key, value] of Object.entries(serverEnv)) if (value !== void 0) passThroughEnv[key] = value;
674
- const serverOptions = {
675
- hostname: config.hostname ?? "127.0.0.1",
676
- port: config.port ?? 0,
677
- timeout: config.timeout ?? 3e4,
678
- env: passThroughEnv
679
- };
680
- const serverConfig = this.buildServerConfig(config);
681
- if (Object.keys(serverConfig).length > 0) serverOptions.config = serverConfig;
682
- this.serverHasRepositoryEnv = hasRepositoryEnv(serverEnv);
683
- const opencode = await spawnWithServerEnv(serverEnv, () => createOpencode(serverOptions));
684
- this.server = opencode.server;
685
- const authEnv = os.default.platform() === "win32" ? Object.fromEntries(Object.entries(serverEnv).map(([key, value]) => [key.toUpperCase(), value])) : serverEnv;
686
- const password = authEnv.OPENCODE_SERVER_PASSWORD;
687
- this.client = password ? createOpencodeClient({
688
- baseUrl: opencode.server.url,
689
- headers: { Authorization: `Basic ${Buffer.from(`${authEnv.OPENCODE_SERVER_USERNAME ?? "opencode"}:${password}`).toString("base64")}` }
690
- }) : opencode.client;
691
- this.activeTraceparent = desiredTraceparent;
692
- require_logger.logger.debug(`OpenCode server started at ${opencode.server.url}`);
693
- })();
694
- this.clientInitialization = initialization;
695
- try {
696
- await initialization;
697
- } catch (error) {
698
- await this.closeServer();
699
- throw error;
700
- } finally {
701
- if (this.clientInitialization === initialization) this.clientInitialization = void 0;
702
- if (!this.server) this.serverHasRepositoryEnv = false;
703
- }
704
- }
705
- validateSessionPolicyConfiguration(config) {
706
- if (!this.opencodeModule) return;
707
- const hasPermissionRules = this.buildConfiguredPermissionRules(config).length > 0;
708
- if (this.opencodeModule.apiVersion === "v2" && config.session_id && hasPermissionRules) throw new Error("OpenCode SDK v2 explicit session_id resumes cannot safely rebind permission rules; create a new session to change permission.");
709
- if (this.opencodeModule.apiVersion !== "v1" || !hasPermissionRules) return;
710
- const staticPolicyMatches = JSON.stringify(this.buildEffectivePermissionRules(config)) === JSON.stringify(this.buildEffectivePermissionRules(this.config));
711
- if (config.baseUrl || config.session_id || !staticPolicyMatches) throw new Error("OpenCode SDK v1 supports permission rules only for provider-level configuration on sessions started by Promptfoo; use tools for remote, resumed, or per-prompt policies.");
712
- }
713
- async getOrCreateSession(config, workingDir) {
714
- if (!this.client || !this.opencodeModule) throw new Error("OpenCode SDK client is not initialized");
715
- const sessionQuery = this.buildQuery(config, workingDir);
716
- if (config.session_id) return {
717
- sessionId: config.session_id,
718
- sessionQuery
719
- };
720
- const sessionCacheKey = this.buildSessionKey(config, workingDir);
721
- if (config.persist_sessions && this.sessions.has(sessionCacheKey)) return {
722
- sessionId: this.sessions.get(sessionCacheKey).id,
723
- sessionQuery
724
- };
725
- const createResult = await this.client.session.create(this.buildCreateSessionParameters(config, sessionQuery));
726
- const sessionId = unwrapOpenCodeResult(createResult)?.id ?? createResult?.id;
727
- if (!sessionId) throw new Error("Failed to get session ID from OpenCode SDK response");
728
- const session = {
729
- id: sessionId,
730
- query: sessionQuery
731
- };
732
- if (config.persist_sessions) {
733
- this.addSession(sessionCacheKey, session);
734
- return {
735
- sessionId,
736
- sessionQuery
737
- };
738
- }
739
- return {
740
- sessionId,
741
- sessionQuery,
742
- ephemeralSession: session
743
- };
744
- }
745
- buildPromptBody(config, prompt) {
746
- if (!this.opencodeModule) throw new Error("OpenCode SDK module is not loaded");
747
- const promptBody = { parts: [{
748
- type: "text",
749
- text: prompt
750
- }] };
751
- if (config.provider_id || config.model) promptBody.model = {
752
- providerID: config.provider_id ?? "",
753
- modelID: config.model ?? ""
754
- };
755
- if (config.agent) promptBody.agent = config.agent;
756
- else if (config.custom_agent) promptBody.agent = "custom";
757
- if (config.custom_agent?.prompt) promptBody.system = config.custom_agent.prompt;
758
- if (config.format) promptBody.format = config.format;
759
- if (config.variant) promptBody.variant = config.variant;
760
- if ((this.opencodeModule.apiVersion === "v1" || Boolean(config.session_id)) && this.buildConfiguredPermissionRules(config).length === 0) promptBody.tools = this.buildEffectiveToolsConfig(config);
761
- return promptBody;
762
- }
763
- buildEffectivePermissionRules(config) {
764
- const customAgent = config.agent ? void 0 : config.custom_agent;
765
- return [
766
- ...convertToolsConfigToRuleset(this.buildToolsConfig(config)),
767
- ...convertPermissionConfigToRuleset(config.permission) ?? [],
768
- ...convertToolsConfigToRuleset(this.buildToolsConfig({
769
- ...config,
770
- tools: customAgent?.tools
771
- }, false)),
772
- ...convertPermissionConfigToRuleset(customAgent?.permission) ?? []
773
- ];
774
- }
775
- buildCreateSessionParameters(config, sessionQuery) {
776
- if (!this.opencodeModule) throw new Error("OpenCode SDK module is not loaded");
777
- const createBody = { title: `promptfoo-${Date.now()}` };
778
- if (this.opencodeModule.apiVersion === "v2") createBody.permission = this.buildEffectivePermissionRules(config);
779
- if (config.parent_session_id && this.opencodeModule.apiVersion === "v2") createBody.parentID = config.parent_session_id;
780
- if (this.opencodeModule.apiVersion === "v2") return {
781
- ...sessionQuery,
782
- ...createBody
783
- };
784
- return {
785
- body: createBody,
786
- query: sessionQuery
787
- };
788
- }
789
- buildPromptParameters(config, prompt, sessionId, sessionQuery) {
790
- if (!this.opencodeModule) throw new Error("OpenCode SDK module is not loaded");
791
- const promptBody = this.buildPromptBody(config, prompt);
792
- if (this.opencodeModule.apiVersion === "v2") return {
793
- sessionID: sessionId,
794
- ...sessionQuery,
795
- ...promptBody
796
- };
797
- return {
798
- path: getSessionPath(sessionId),
799
- body: promptBody,
800
- query: sessionQuery
801
- };
802
- }
803
- /**
804
- * Whether the skill tool can run for this config, so the session-history
805
- * round trip used for skill tracking can be skipped when it cannot.
806
- *
807
- * OpenCode permission rules are last-match-wins for each matching pattern.
808
- * Since the prospective skill name is unknown here, any non-deny rule means
809
- * a skill may run and its intermediate history must be inspected.
810
- */
811
- isSkillToolEnabled(config) {
812
- return this.buildEffectivePermissionRules(config).some((rule) => (rule.permission === "skill" || rule.permission === "*") && rule.action !== "deny");
813
- }
814
- /**
815
- * Fetches the session message history and returns only the parts that belong
816
- * to the current prompt, bounded by parentID (start) and assistantMessage.id
817
- * (end) to prevent skill calls from other prompts bleeding in.
818
- *
819
- * Returns an empty array — which makes the caller fall back to the
820
- * final-message parts — whenever the current prompt cannot be located in the
821
- * history (a start/end anchor is absent from the response or fetched page).
822
- * Over-attributing skill calls from earlier or concurrent prompts in a
823
- * shared session would be worse than missing intermediate-turn calls.
824
- */
825
- async fetchCurrentPromptParts(client, session, response, abortSignal) {
826
- const assistantMessage = unwrapOpenCodeResult(response)?.info;
827
- const parentId = assistantMessage?.parentID;
828
- const assistantId = assistantMessage?.id;
829
- if (!parentId || !assistantId) {
830
- require_logger.logger.debug("[OpenCode SDK] Assistant message is missing a history anchor; skipping session history fetch for skill tracking");
831
- return [];
832
- }
833
- const messages = unwrapOpenCodeResult(this.opencodeModule?.apiVersion === "v2" ? await client.session.messages({
834
- sessionID: session.sessionId,
835
- ...session.sessionQuery
836
- }, abortSignal ? { signal: abortSignal } : void 0) : await client.session.messages({
837
- path: getSessionPath(session.sessionId),
838
- query: session.sessionQuery,
839
- ...abortSignal ? { signal: abortSignal } : {}
840
- })) ?? [];
841
- const startIndex = messages.findIndex((m) => m.info?.id === parentId);
842
- if (startIndex === -1) {
843
- require_logger.logger.debug(`[OpenCode SDK] Parent message ${parentId} not found in ${messages.length} fetched messages; falling back to final-message parts for skill tracking`);
844
- return [];
845
- }
846
- const endIndex = messages.findIndex((m) => m.info?.id === assistantId);
847
- if (endIndex < startIndex) {
848
- require_logger.logger.debug(`[OpenCode SDK] Assistant message ${assistantId} not found after its parent in ${messages.length} fetched messages; falling back to final-message parts for skill tracking`);
849
- return [];
850
- }
851
- const relevantMessages = messages.slice(startIndex, endIndex + 1);
852
- require_logger.logger.debug(`[OpenCode SDK] Fetched ${messages.length} messages, using ${relevantMessages.length} (start=${startIndex} end=${endIndex}) for skill tracking`);
853
- return relevantMessages.flatMap((m) => m.parts ?? []);
854
- }
855
- getSessionQueueKey(config, workingDir) {
856
- if (config.session_id) return require_agentic_utils.generateCacheKey("opencode:sdk:explicit-session", { sessionId: config.session_id });
857
- return config.persist_sessions ? this.buildSessionKey(config, workingDir) : void 0;
858
- }
859
- buildProviderResponse(config, response, sessionId, allSessionParts) {
860
- const responseData = unwrapOpenCodeResult(response);
861
- const assistantMessage = responseData?.info;
862
- const parts = responseData?.parts ?? [];
863
- let output = "";
864
- for (const part of parts) if (part.type === "text" && part.text) output += (output ? "\n" : "") + part.text;
865
- if (config.format?.type === "json_schema") {
866
- if (assistantMessage?.structured === void 0) output = normalizeStructuredText(output) ?? output;
867
- else output = JSON.stringify(assistantMessage.structured);
868
- }
869
- const tokens = assistantMessage?.tokens;
870
- const skillCalls = this.deriveSkillCalls(allSessionParts.length > 0 ? allSessionParts : parts);
871
- return {
872
- output,
873
- tokenUsage: buildOpenCodeTokenUsage(tokens),
874
- ...assistantMessage?.cost === void 0 ? {} : { cost: assistantMessage.cost },
875
- raw: JSON.stringify(response),
876
- sessionId,
877
- ...skillCalls.length === 0 ? {} : { metadata: { skillCalls } }
878
- };
879
- }
880
- deriveSkillCalls(parts) {
881
- return parts.flatMap((part) => {
882
- if (part.type !== "tool" || part.tool !== "skill") return [];
883
- const skillName = typeof part.state?.input?.name === "string" ? part.state.input.name.trim() : "";
884
- if (!skillName) return [];
885
- const skillDir = typeof part.state?.metadata?.dir === "string" ? part.state.metadata.dir.trim() : "";
886
- return [{
887
- name: skillName,
888
- input: part.state?.input,
889
- ...skillDir ? { path: path.default.join(skillDir, "SKILL.md") } : {},
890
- source: "tool",
891
- ...part.state?.status === "error" ? { is_error: true } : {}
892
- }];
893
- });
894
- }
895
- handleCallError(error, callOptions) {
896
- if (error instanceof Error && error.name === "AbortError" || callOptions?.abortSignal?.aborted) {
897
- require_logger.logger.warn("OpenCode SDK call aborted");
898
- return { error: "OpenCode SDK call aborted" };
899
- }
900
- if (error && typeof error === "object" && "code" in error && error.code === "ENOENT" && "message" in error && typeof error.message === "string" && error.message.includes("opencode")) {
901
- const cliError = dedent.default`The OpenCode CLI is required but not installed.
902
-
903
- The OpenCode SDK requires the 'opencode' CLI to be installed and available in your PATH.
904
-
905
- Install it with:
906
- curl -fsSL https://opencode.ai/install | bash
907
-
908
- Or see: https://opencode.ai for other installation methods.`;
909
- require_logger.logger.error(cliError);
910
- return { error: cliError };
911
- }
912
- const errorMessage = error instanceof Error ? error.message : String(error);
913
- require_logger.logger.error("Error calling OpenCode SDK", { error });
914
- return { error: `Error calling OpenCode SDK: ${errorMessage}` };
915
- }
916
- async callApi(prompt, context, callOptions) {
917
- const { config, inIsolatedWorkspace, isTempDir, workingDir } = this.prepareCall(context);
918
- const perCallTracing = Boolean(config.restart_server_per_call);
919
- try {
920
- this.buildEffectivePermissionRules(config);
921
- await this.ensureOpenCodeModule();
922
- this.validateSessionPolicyConfiguration(config);
923
- if (config.enable_streaming && !this.streamingWarningEmitted) {
924
- this.streamingWarningEmitted = true;
925
- require_logger.logger.warn("[OpenCode SDK] enable_streaming is currently a no-op for this provider; the prompt will run to completion before returning.");
926
- }
927
- if (perCallTracing && !isValidTraceparent(context?.traceparent) && !this.missingTraceparentWarningEmitted) {
928
- this.missingTraceparentWarningEmitted = true;
929
- require_logger.logger.warn("[OpenCode SDK] restart_server_per_call has no valid trace context. Enable tracing.enabled to correlate spans; calls remain serialized and uncached.");
930
- }
931
- const mcpConfig = config.mcp && Object.keys(config.mcp).length > 0 ? config.mcp : void 0;
932
- const statefulSession = Boolean(config.session_id || config.persist_sessions);
933
- const hasPermissionRules = this.buildConfiguredPermissionRules(config).length > 0;
934
- const sensitiveMcpConfig = openCodeMcpContainsCacheSensitiveData(mcpConfig);
935
- const sensitiveBaseUrl = openCodeBaseUrlContainsCacheSensitiveData(config.baseUrl);
936
- const cacheResult = inIsolatedWorkspace || statefulSession || hasPermissionRules || sensitiveMcpConfig || sensitiveBaseUrl || perCallTracing ? {
937
- shouldReadCache: false,
938
- shouldWriteCache: false
939
- } : await require_agentic_utils.initializeAgenticCache({
940
- cacheKeyPrefix: "opencode:sdk",
941
- workingDir: config.working_dir ? workingDir : void 0,
942
- bustCache: context?.bustCache,
943
- mcp: mcpConfig,
944
- cacheMcp: config.cache_mcp
945
- }, {
946
- prompt,
947
- ...this.historyAffectingInputs(config)
948
- });
949
- const cachedResponse = await require_agentic_utils.getCachedResponse(cacheResult, "OpenCode SDK");
950
- if (cachedResponse) return cachedResponse;
951
- if (callOptions?.abortSignal?.aborted) return { error: "OpenCode SDK call aborted before it started" };
952
- const sessionQueueKey = perCallTracing ? SERVER_LIFECYCLE_QUEUE_KEY : this.getSessionQueueKey(config, workingDir);
953
- return await this.sessionQueues.run(sessionQueueKey, callOptions?.abortSignal, async () => {
954
- let ephemeralSession;
955
- let abortListener;
956
- try {
957
- await this.ensureClient(config, context?.traceparent);
958
- this.assertServerWorkspace(config, inIsolatedWorkspace);
959
- const session = await this.getOrCreateSession(config, workingDir);
960
- ephemeralSession = session.ephemeralSession;
961
- if (callOptions?.abortSignal?.aborted) return { error: "OpenCode SDK call aborted before it started" };
962
- const promptOptions = this.buildPromptParameters(config, prompt, session.sessionId, session.sessionQuery);
963
- require_logger.logger.debug(`OpenCode SDK prompt options:`, promptOptions);
964
- const client = this.client;
965
- if (!client) throw new Error("OpenCode SDK client is not initialized");
966
- const abortSignal = callOptions?.abortSignal;
967
- if (abortSignal && client.session.abort && this.opencodeModule?.apiVersion === "v2") {
968
- const abortParams = this.buildAbortSessionParameters(session.sessionId, session.sessionQuery);
969
- abortListener = () => {
970
- client.session.abort?.(abortParams).catch((err) => {
971
- require_logger.logger.debug(`[OpenCode SDK] Failed to abort session ${session.sessionId}: ${err}`);
972
- });
973
- };
974
- abortSignal.addEventListener("abort", abortListener, { once: true });
975
- }
976
- const response = await client.session.prompt(promptOptions);
977
- require_logger.logger.debug(`OpenCode SDK response received`);
978
- if (abortListener && abortSignal) {
979
- abortSignal.removeEventListener("abort", abortListener);
980
- abortListener = void 0;
981
- }
982
- if (abortSignal?.aborted) return { error: "OpenCode SDK call aborted" };
983
- let allSessionParts = [];
984
- if (this.isSkillToolEnabled(config)) {
985
- try {
986
- allSessionParts = await this.fetchCurrentPromptParts(client, session, response, abortSignal);
987
- } catch (e) {
988
- require_logger.logger.debug(`[OpenCode SDK] Could not fetch session history for skill tracking: ${e}`);
989
- }
990
- if (abortSignal?.aborted) return { error: "OpenCode SDK call aborted" };
991
- }
992
- const providerResponse = this.buildProviderResponse(config, response, session.sessionId, allSessionParts);
993
- await require_agentic_utils.cacheResponse(cacheResult, providerResponse, "OpenCode SDK");
994
- require_logger.logger.debug(`OpenCode SDK response: ${providerResponse.output.slice(0, 100)}...`);
995
- return providerResponse;
996
- } finally {
997
- if (abortListener && callOptions?.abortSignal) callOptions.abortSignal.removeEventListener("abort", abortListener);
998
- if (ephemeralSession) try {
999
- await this.deleteSession(ephemeralSession);
1000
- } catch (err) {
1001
- require_logger.logger.debug(`Failed to delete non-persistent session ${ephemeralSession.id}: ${err}`);
1002
- }
1003
- }
1004
- });
1005
- } catch (error) {
1006
- return this.handleCallError(error, callOptions);
1007
- } finally {
1008
- if (isTempDir && workingDir) await fs_promises.default.rm(workingDir, {
1009
- recursive: true,
1010
- force: true
1011
- });
1012
- }
1013
- }
1014
- };
1015
- //#endregion
1016
- exports.OpenCodeSDKProvider = OpenCodeSDKProvider;
1017
-
1018
- //# sourceMappingURL=opencode-sdk-2EfIDhFp.cjs.map