promptfoo 0.120.26 → 0.121.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 (366) hide show
  1. package/README.md +1 -1
  2. package/dist/drizzle/0023_wooden_mandrill.sql +2 -0
  3. package/dist/drizzle/meta/0023_snapshot.json +1496 -0
  4. package/dist/drizzle/meta/_journal.json +7 -0
  5. package/dist/src/{ListApp-D3DG0F8h.js → ListApp-Du7YVwj5.js} +2 -4
  6. package/dist/src/accounts-BgNJDBE6.js +206 -0
  7. package/dist/src/{accounts-BzEY8H3v.cjs → accounts-Bx-x3bmW.cjs} +99 -80
  8. package/dist/src/{accounts-DHHiXsy6.js → accounts-CMqkzrVf.js} +61 -36
  9. package/dist/src/{accounts-R3gfCR_g.js → accounts-xrUGFA6n.js} +60 -35
  10. package/dist/src/{agentic-utils-D6_gzOUF.js → agentic-utils-BKIN5PKu.js} +9 -10
  11. package/dist/src/{agents-CwM7re15.cjs → agents-B0f4HICh.cjs} +37 -40
  12. package/dist/src/{agents-Cnph5GLD.js → agents-C-dDThPK.js} +37 -37
  13. package/dist/src/{agents-C7BiinFI.cjs → agents-CErsqg5U.cjs} +19 -27
  14. package/dist/src/{agents-v4cW_ZgC.js → agents-CVIn-Utx.js} +19 -22
  15. package/dist/src/{agents-GiUianme.js → agents-CXknwsFX.js} +37 -40
  16. package/dist/src/{agents-DETIQHqF.js → agents-DeH4Gu94.js} +21 -28
  17. package/dist/src/{agents-DYIT-hQy.js → agents-Dy2YpZpa.js} +38 -41
  18. package/dist/src/{agents-Cao4i7AX.js → agents-aF4-T121.js} +19 -30
  19. package/dist/src/{aimlapi-DMF6v_vb.js → aimlapi-BAGZDo5G.js} +16 -18
  20. package/dist/src/{aimlapi-CMJpKK-B.js → aimlapi-BNfTBexL.js} +15 -17
  21. package/dist/src/{aimlapi-DtSf1ykJ.js → aimlapi-DHRKlBEA.js} +15 -4
  22. package/dist/src/{aimlapi-DoGLcQW_.cjs → aimlapi-tg0Gkcvr.cjs} +15 -16
  23. package/dist/src/app/assets/index-BFCZg7hQ.js +439 -0
  24. package/dist/src/app/assets/index-NCn4eVBv.css +1 -0
  25. package/dist/src/app/assets/{vendor-charts-CYyo8R8v.js → vendor-charts-CCl15Imd.js} +1 -1
  26. package/dist/src/app/assets/{vendor-markdown-DSmzq4Jh.js → vendor-markdown-0tekx3KX.js} +1 -1
  27. package/dist/src/app/index.html +4 -34
  28. package/dist/src/{audio-DUH4q0Xq.js → audio-BRODU0UK.js} +7 -9
  29. package/dist/src/{audio-BWjyvHn9.cjs → audio-BWeaWovU.cjs} +6 -7
  30. package/dist/src/{audio-U580w8jM.js → audio-CHQ4r-RV.js} +6 -5
  31. package/dist/src/{audio-BrJBFN2b.js → audio-tf_NBjlC.js} +6 -8
  32. package/dist/src/base-B0tcrnq_.js +193 -0
  33. package/dist/src/base-B4QJRyFS.js +194 -0
  34. package/dist/src/base-DBtwl2FR.cjs +222 -0
  35. package/dist/src/base-fEDN28WM.js +193 -0
  36. package/dist/src/{blobs-kt8v3UyH.js → blobs-BAU-dXan.js} +9 -12
  37. package/dist/src/{blobs-C9J2mVgo.js → blobs-Bpg5rH6i.js} +9 -12
  38. package/dist/src/{blobs-673H0jCl.cjs → blobs-DvS-O6be.cjs} +34 -37
  39. package/dist/src/blobs-qTYm-1PY.js +236 -0
  40. package/dist/src/{cache-BLLayYEN.js → cache-8XhNqPKW.js} +64 -67
  41. package/dist/src/cache-Bbn1Nyrd.cjs +5 -0
  42. package/dist/src/cache-BwsMSda7.js +6 -0
  43. package/dist/src/{cache-mIszOnuz.js → cache-CG0SlR1d.js} +64 -66
  44. package/dist/src/{cache-7xULbvt3.cjs → cache-COish3-W.cjs} +114 -117
  45. package/dist/src/cache-D3eqDYGU.js +739 -0
  46. package/dist/src/{chat-Fl6TZJRS.cjs → chat-2K608PeQ.cjs} +20 -21
  47. package/dist/src/chat-BKm79wib.js +764 -0
  48. package/dist/src/{chat-XPN9YHhr.js → chat-CM_kyI8B.js} +20 -9
  49. package/dist/src/{chat-DIywASPG.js → chat-CRWNNq73.js} +49 -49
  50. package/dist/src/{chat-C8Ei4f87.js → chat-CznLWr_D.js} +49 -49
  51. package/dist/src/{chat-CgyGj2hC.js → chat-DHMH-N64.js} +20 -22
  52. package/dist/src/{chat-C4zqjObh.cjs → chat-DaqekjFr.cjs} +69 -69
  53. package/dist/src/{chat-Cpz3O-Xl.js → chat-DxysjBvt.js} +21 -23
  54. package/dist/src/{chatkit-Dpxrq4eD.js → chatkit-65VXf5SR.js} +58 -58
  55. package/dist/src/{chatkit-DIrJX8xk.js → chatkit-Be-Q-a9F.js} +58 -60
  56. package/dist/src/{chatkit-DEls11hE.js → chatkit-BxFvW8KY.js} +58 -60
  57. package/dist/src/{chatkit-e25Ziu17.cjs → chatkit-DKyPi1Gs.cjs} +58 -60
  58. package/dist/src/chunk-DEq-mXcV.js +15 -0
  59. package/dist/src/chunk-DRamLcfz.js +16 -0
  60. package/dist/src/{claude-agent-sdk-6-xTaLwM.js → claude-agent-sdk-BLTu0WBO.js} +45 -31
  61. package/dist/src/{claude-agent-sdk-BzxF6NIJ.cjs → claude-agent-sdk-CJH22shf.cjs} +44 -29
  62. package/dist/src/{claude-agent-sdk-CmkTnKGH.js → claude-agent-sdk-D6_k9FKA.js} +45 -33
  63. package/dist/src/{claude-agent-sdk-rXCBLK_o.js → claude-agent-sdk-Dy5lT-Tx.js} +46 -21
  64. package/dist/src/{cloud-BMbRVJFw.js → cloud-Bc9526yV.js} +32 -12
  65. package/dist/src/cloud-DmE0EwsY.js +4 -0
  66. package/dist/src/{cloudflare-ai-CUg4BTcj.js → cloudflare-ai-C9r2sRhw.js} +16 -18
  67. package/dist/src/{cloudflare-ai-Z9X219gp.js → cloudflare-ai-CWWJCRim.js} +16 -4
  68. package/dist/src/{cloudflare-ai-BAQ0u_dg.cjs → cloudflare-ai-ClWSdor4.cjs} +16 -17
  69. package/dist/src/{cloudflare-ai-CobxMTR4.js → cloudflare-ai-ICsOuD-z.js} +17 -19
  70. package/dist/src/{cloudflare-gateway-C0sgfr_z.cjs → cloudflare-gateway-C2_-KG5o.cjs} +21 -22
  71. package/dist/src/{cloudflare-gateway-_itGuXry.js → cloudflare-gateway-D6O7AlYb.js} +23 -23
  72. package/dist/src/{cloudflare-gateway-D2_yi-Fh.js → cloudflare-gateway-D6xFc5pa.js} +21 -25
  73. package/dist/src/{cloudflare-gateway-Djf3F3_H.js → cloudflare-gateway-pXGHxJ47.js} +26 -14
  74. package/dist/src/{codex-sdk-ibXwdglL.js → codex-sdk-C6UMlxwV.js} +49 -32
  75. package/dist/src/{codex-sdk-BASDNkIl.js → codex-sdk-DUwKWezN.js} +49 -30
  76. package/dist/src/{codex-sdk-dSnGdgIp.js → codex-sdk-GGAw0qbD.js} +49 -32
  77. package/dist/src/{codex-sdk-wTEpMM_X.cjs → codex-sdk-fAO0c3yA.cjs} +49 -32
  78. package/dist/src/{cometapi-B01btbfb.js → cometapi-BasUi7-_.js} +17 -19
  79. package/dist/src/{cometapi-DHUAH6nK.js → cometapi-Bbjp5V4x.js} +16 -4
  80. package/dist/src/{cometapi-ChAaRjg5.js → cometapi-DkXrKi5z.js} +21 -24
  81. package/dist/src/{cometapi-JbvOJSCO.cjs → cometapi-vY6aDZgo.cjs} +21 -22
  82. package/dist/src/{completion-D9_MDlnd.js → completion-6Mx_iXxK.js} +11 -13
  83. package/dist/src/{completion-BBJ6zmG3.js → completion-C5rtR_9P.js} +11 -13
  84. package/dist/src/{completion-DDyL3Cb2.cjs → completion-CDOouNzq.cjs} +21 -23
  85. package/dist/src/completion-C_P3ypkJ.js +120 -0
  86. package/dist/src/createHash-CTQmL3G2.js +15 -0
  87. package/dist/src/createHash-CfZSc0b4.cjs +27 -0
  88. package/dist/src/createHash-Da8fMwqB.js +16 -0
  89. package/dist/src/createHash-DmPQkvBh.js +15 -0
  90. package/dist/src/{docker-JAAubMw3.js → docker-5KcG-_86.js} +18 -20
  91. package/dist/src/{docker-Ckw-j7Rr.cjs → docker-BwsKwxFs.cjs} +18 -19
  92. package/dist/src/{docker-vnOg96gi.js → docker-CZnqU1XV.js} +18 -7
  93. package/dist/src/{docker-BuButc4D.js → docker-DzxyDPIj.js} +19 -21
  94. package/dist/src/entrypoint.js +2 -3
  95. package/dist/src/{errors-DnGCbnx8.js → errors-P6ll7XSJ.js} +2 -2
  96. package/dist/src/{esm-CYhseqj4.js → esm-C03C-mv3.js} +17 -20
  97. package/dist/src/{esm-rDtG_2rg.js → esm-CaIwzWR5.js} +18 -21
  98. package/dist/src/esm-Cd1AjG1D.js +379 -0
  99. package/dist/src/{esm-BQkx5roy.cjs → esm-CnNt7sI4.cjs} +47 -49
  100. package/dist/src/eval-17JizQIv.js +15 -0
  101. package/dist/src/{eval-CYrbG57o.js → eval-DmFyWU7i.js} +49 -55
  102. package/dist/src/{evalResult-COsVttMA.js → evalResult-CDQiuUuf.js} +16 -12
  103. package/dist/src/{evalResult-6JaUIStC.js → evalResult-CTG2AHOS.js} +10 -11
  104. package/dist/src/evalResult-Cqj8pldJ.js +12 -0
  105. package/dist/src/{evalResult-DlRfu_Rq.cjs → evalResult-Dap2CekP.cjs} +20 -21
  106. package/dist/src/evalResult-DvcJAWJU.cjs +10 -0
  107. package/dist/src/evalResult-Hftn-S_i.js +10 -0
  108. package/dist/src/evaluator-B2CFNt-P.js +36 -0
  109. package/dist/src/{evaluator-3EJCMTs0.js → evaluator-DPFRbFIL.js} +210 -232
  110. package/dist/src/{extractor-LSYjrhK0.js → extractor-CFG6bcWJ.js} +23 -38
  111. package/dist/src/{extractor-DbhlYEeo.cjs → extractor-DX36oYEv.cjs} +37 -64
  112. package/dist/src/{extractor-Hs7la_19.js → extractor-M67RUtg6.js} +23 -38
  113. package/dist/src/extractor-YMU_Gvt8.js +374 -0
  114. package/dist/src/fetch-4M3YRaqL.js +780 -0
  115. package/dist/src/{fetch-18MuNu9i.js → fetch-60Gzydls.js} +60 -46
  116. package/dist/src/{fetch-SRsE6Ctl.js → fetch-BMv0O527.js} +41 -35
  117. package/dist/src/{fetch-ZMn_oemb.cjs → fetch-BxUk8odA.cjs} +268 -279
  118. package/dist/src/fetch-KV5kNASw.js +5 -0
  119. package/dist/src/{fileExtensions-ePDqouxn.js → fileExtensions-DnqA1y9x.js} +2 -2
  120. package/dist/src/{fileExtensions-BpuMmaFL.js → fileExtensions-Ds-foDzt.js} +2 -2
  121. package/dist/src/fileExtensions-LcDYkU4v.js +85 -0
  122. package/dist/src/{fileExtensions-DkJYkWUy.cjs → fileExtensions-bYh77CN8.cjs} +27 -28
  123. package/dist/src/{formatDuration-Doo0xq-z.js → formatDuration-DgBVMN65.js} +2 -2
  124. package/dist/src/{genaiTracer-Ce19n68P.js → genaiTracer-70Z8BIuV.js} +2 -3
  125. package/dist/src/{genaiTracer-CqNnnXrE.js → genaiTracer-C1rxGO8Q.js} +2 -3
  126. package/dist/src/genaiTracer-D3fD9dNV.js +256 -0
  127. package/dist/src/{genaiTracer-CQlpZkrp.cjs → genaiTracer-DN4dQywX.cjs} +13 -14
  128. package/dist/src/graders-Bu0H9nXi.js +32 -0
  129. package/dist/src/{graders-BaMCwIKp.js → graders-CHO8EPM4.js} +385 -417
  130. package/dist/src/graders-Cfhkvx-e.js +34 -0
  131. package/dist/src/{graders-QsALpIdy.js → graders-CpdqD9PI.js} +385 -417
  132. package/dist/src/graders-DClJVpGP.cjs +32 -0
  133. package/dist/src/{graders-DzUUnUjC.cjs → graders-DOXycdlG.cjs} +721 -753
  134. package/dist/src/graders-DcnJsrMO.js +32 -0
  135. package/dist/src/graders-R9rYUM0d.js +13466 -0
  136. package/dist/src/{image-BiEVdpdP.js → image-BmEZqVmk.js} +57 -18
  137. package/dist/src/{image-mhAGP07h.js → image-CBBVXWuT.js} +57 -18
  138. package/dist/src/{image-D10zEe1f.cjs → image-CDLQOcqT.cjs} +6 -7
  139. package/dist/src/{image-COCWy5dX.js → image-DJEvKveK.js} +6 -5
  140. package/dist/src/{image-C3BjJUAU.cjs → image-DTedmQPg.cjs} +77 -32
  141. package/dist/src/{image-DB4sHxdJ.js → image-gvmivTEe.js} +7 -9
  142. package/dist/src/image-pAX56tPG.js +257 -0
  143. package/dist/src/{image-BXt_7u0v.js → image-tL5hIOFh.js} +6 -8
  144. package/dist/src/index.cjs +696 -693
  145. package/dist/src/index.d.cts +113 -10
  146. package/dist/src/index.d.ts +113 -6
  147. package/dist/src/index.js +657 -658
  148. package/dist/src/{interactiveCheck-DU-MAhp5.js → interactiveCheck-BgLZUIt3.js} +7 -8
  149. package/dist/src/{invariant-DT20jrBd.js → invariant-BtWWVVhl.js} +2 -2
  150. package/dist/src/{invariant-1pAf2CD1.js → invariant-Ddh24eXh.js} +2 -2
  151. package/dist/src/{invariant-CKcJAQ6M.cjs → invariant-kfQ8Bu82.cjs} +7 -8
  152. package/dist/src/invariant-vgHWClmd.js +25 -0
  153. package/dist/src/{knowledgeBase-DotRBzUE.js → knowledgeBase-CLJybhnF.js} +19 -34
  154. package/dist/src/{knowledgeBase-XJQ0Qyez.js → knowledgeBase-CoU-UQBg.js} +17 -41
  155. package/dist/src/{knowledgeBase-CMvMlLZR.js → knowledgeBase-DjWPVqSb.js} +17 -43
  156. package/dist/src/{knowledgeBase-Bnb00xKs.cjs → knowledgeBase-wkxuRFhA.cjs} +17 -40
  157. package/dist/src/{litellm-CHrRmPAe.js → litellm-B9Hysuri.js} +16 -18
  158. package/dist/src/{litellm-CrLJrPIm.js → litellm-CTfa0hqi.js} +15 -17
  159. package/dist/src/{litellm-BrnZhMcL.cjs → litellm-NYpQ8RQu.cjs} +15 -16
  160. package/dist/src/{litellm-BECdjOTx.js → litellm-ePxtr9F1.js} +15 -4
  161. package/dist/src/{logger-w8Ozp0Td.js → logger-CT3IKMKA.js} +24 -41
  162. package/dist/src/{logger-BdZ-IqBc.cjs → logger-Cp1GPUjj.cjs} +166 -192
  163. package/dist/src/logger-DLcq4dWf.js +713 -0
  164. package/dist/src/{logger-BotXmWKW.js → logger-KkObSCzq.js} +27 -43
  165. package/dist/src/{luma-ray-C0RkI3lt.cjs → luma-ray-B0GGNRc1.cjs} +20 -21
  166. package/dist/src/{luma-ray-C-w6EsJm.js → luma-ray-BE2mOt6N.js} +20 -13
  167. package/dist/src/{luma-ray-BOeX-h0M.js → luma-ray-BW9IRGIc.js} +22 -21
  168. package/dist/src/{luma-ray-DgKLS0BF.js → luma-ray-Cm1KZBhs.js} +20 -23
  169. package/dist/src/main.js +1985 -2055
  170. package/dist/src/{messages-DXV3Qh8_.cjs → messages-1JrJs91T.cjs} +35 -34
  171. package/dist/src/{messages-D61tPFQo.js → messages-1x9atZmP.js} +25 -24
  172. package/dist/src/{messages-CDZYGNlS.js → messages-BLbWdsyt.js} +25 -24
  173. package/dist/src/messages-D8EA0oDc.js +240 -0
  174. package/dist/src/{meteor-P2rUE-Uz.js → meteor-44VjEACX.js} +3 -4
  175. package/dist/src/{meteor-SLNTgmXm.js → meteor-D-SotUw9.js} +3 -4
  176. package/dist/src/{meteor-odmwVbyG.cjs → meteor-DLZZ3osF.cjs} +3 -4
  177. package/dist/src/{meteor-Dj8cTkU_.js → meteor-DUiCJRC-.js} +3 -4
  178. package/dist/src/modelslab-C1OLRmVX.js +166 -0
  179. package/dist/src/modelslab-CqXBy3U8.js +168 -0
  180. package/dist/src/modelslab-DcOSFwKh.cjs +166 -0
  181. package/dist/src/modelslab-X5-4LroM.js +166 -0
  182. package/dist/src/{nova-reel-C2LFfVTf.js → nova-reel-BgS1ZWuK.js} +20 -13
  183. package/dist/src/{nova-reel-DtCjbD5O.js → nova-reel-D2ZkOSyr.js} +22 -21
  184. package/dist/src/{nova-reel-D9FXq3Mt.cjs → nova-reel-D9xfaMBs.cjs} +20 -21
  185. package/dist/src/{nova-reel-Bk5npr2q.js → nova-reel-DihqLeol.js} +20 -23
  186. package/dist/src/{nova-sonic-BoRSY_U6.cjs → nova-sonic-DVu3mMIy.cjs} +30 -31
  187. package/dist/src/{nova-sonic-D_qERM-K.js → nova-sonic-DezhVUYT.js} +30 -26
  188. package/dist/src/{nova-sonic-CgaWLDM1.js → nova-sonic-P-CdUMlV.js} +30 -31
  189. package/dist/src/{nova-sonic-BXRfQyF-.js → nova-sonic-Q3BOJeig.js} +31 -32
  190. package/dist/src/{openai-Bigwjgo1.cjs → openai-Cuif0GEt.cjs} +8 -9
  191. package/dist/src/{openai-Dz3surb_.js → openai-DElQ-fPX.js} +3 -4
  192. package/dist/src/{openai-CT5fwbve.js → openai-DhbB7eWK.js} +3 -4
  193. package/dist/src/openai-j-sE2O7r.js +44 -0
  194. package/dist/src/{openclaw-dHLcXUWZ.js → openclaw-BiSZPL7J.js} +20 -14
  195. package/dist/src/{openclaw-CpPrXwf6.js → openclaw-Bv1DINsX.js} +20 -27
  196. package/dist/src/{openclaw-B6XY2kUf.js → openclaw-D1D_ej1z.js} +21 -28
  197. package/dist/src/{openclaw-DDSfq5fp.cjs → openclaw-DAfWQn-o.cjs} +33 -39
  198. package/dist/src/opencode-sdk-C7m-wRfI.js +560 -0
  199. package/dist/src/opencode-sdk-CfaLN8PY.cjs +564 -0
  200. package/dist/src/opencode-sdk-D95s6SnR.js +562 -0
  201. package/dist/src/opencode-sdk-DxUPkLT7.js +560 -0
  202. package/dist/src/{otlpReceiver-DmRb0NBj.js → otlpReceiver--AIRW_S4.js} +53 -51
  203. package/dist/src/{otlpReceiver-Dg817agV.js → otlpReceiver-Bn5wGB1v.js} +53 -55
  204. package/dist/src/{otlpReceiver-B6Xo4KZM.cjs → otlpReceiver-Diec4cln.cjs} +53 -55
  205. package/dist/src/{otlpReceiver-BO0rbDzh.js → otlpReceiver-g3ByGaXs.js} +53 -55
  206. package/dist/src/{providerRegistry-Xf0qdqGQ.js → providerRegistry-B0RUOLI_.js} +7 -8
  207. package/dist/src/{providerRegistry-wCWd7sKQ.js → providerRegistry-CD8MEar9.js} +7 -8
  208. package/dist/src/{providerRegistry-lc7a7utN.cjs → providerRegistry-Civky8Ar.cjs} +12 -13
  209. package/dist/src/providerRegistry-DM8rZYol.js +45 -0
  210. package/dist/src/providers-B3HvufyI.js +33246 -0
  211. package/dist/src/{providers-BiNq_Iyc.js → providers-BKRJTjBz.js} +1743 -1795
  212. package/dist/src/providers-C1rOSHiR.js +32 -0
  213. package/dist/src/{providers-BlEhY5mi.js → providers-CFLy1_ji.js} +1750 -1802
  214. package/dist/src/{providers-BNKVY53V.cjs → providers-CFu-TZl-.cjs} +2111 -2163
  215. package/dist/src/providers-CxmDwEFf.cjs +31 -0
  216. package/dist/src/providers-Dodakqr0.js +30 -0
  217. package/dist/src/providers-GIQ2TcsA.js +30 -0
  218. package/dist/src/{pythonUtils-r1uBuA0n.js → pythonUtils-C3py6GC1.js} +18 -19
  219. package/dist/src/{pythonUtils-DZ6EbdY4.cjs → pythonUtils-CTU3Y3lw.cjs} +42 -43
  220. package/dist/src/{pythonUtils-vMlk9Qp5.js → pythonUtils-D5nxkQ0P.js} +18 -19
  221. package/dist/src/pythonUtils-D6fwaDSg.js +249 -0
  222. package/dist/src/quiverai-C2jVwbH1.js +213 -0
  223. package/dist/src/quiverai-CI6gYJVI.js +213 -0
  224. package/dist/src/quiverai-CLkWkyZc.cjs +213 -0
  225. package/dist/src/quiverai-MHSxbmmZ.js +215 -0
  226. package/dist/src/{render-CAZvKKkB.js → render-Drod8m7K.js} +4 -5
  227. package/dist/src/{responses-DLLjADw5.js → responses-BKqJmhhc.js} +34 -27
  228. package/dist/src/{responses-TsdODUpm.js → responses-CGw0DCzh.js} +34 -27
  229. package/dist/src/responses-jxdehPkC.js +660 -0
  230. package/dist/src/{responses-zOtKtnY_.cjs → responses-tD4Bd4dc.cjs} +49 -42
  231. package/dist/src/rubyUtils-BUHu6PhO.js +5 -0
  232. package/dist/src/{rubyUtils-Cs35SDYa.js → rubyUtils-BUVePouc.js} +27 -20
  233. package/dist/src/rubyUtils-BcuGX77l.js +222 -0
  234. package/dist/src/{rubyUtils-BtjlqyXt.js → rubyUtils-Boc4HZzX.js} +18 -19
  235. package/dist/src/rubyUtils-CP42kMvq.cjs +4 -0
  236. package/dist/src/{rubyUtils-DCVaJ3mc.cjs → rubyUtils-DhCAlxZr.cjs} +48 -50
  237. package/dist/src/{sagemaker-Du4LIR97.js → sagemaker-BK4Zb993.js} +75 -70
  238. package/dist/src/{sagemaker-CLdUAv5z.js → sagemaker-BfiWTmvn.js} +77 -77
  239. package/dist/src/{sagemaker-DwNnEVYt.cjs → sagemaker-CcQHM1jV.cjs} +75 -76
  240. package/dist/src/{sagemaker-BcgLu0U4.js → sagemaker-D2Q1c-sD.js} +75 -79
  241. package/dist/src/{scanner-Dyw21Wg_.js → scanner-J8CA3LsV.js} +149 -122
  242. package/dist/src/server/index.js +5620 -67302
  243. package/dist/src/{server-CgUQ25qW.cjs → server-B0PPuDw-.cjs} +57 -67
  244. package/dist/src/server-B1vi21hA.js +7 -0
  245. package/dist/src/{server-CbMTRQkg.js → server-BC7XJFgr.js} +19 -24
  246. package/dist/src/server-Cm9Kai_h.cjs +5 -0
  247. package/dist/src/{server-DWmZLfCy.js → server-DbFphssR.js} +26 -29
  248. package/dist/src/server-OAs3nBRT.js +229 -0
  249. package/dist/src/{signal-Bl32q42d.js → signal-BOTbd53Z.js} +9 -11
  250. package/dist/src/{slack-BtMkB6xP.cjs → slack-BmVAVGaK.cjs} +7 -8
  251. package/dist/src/{slack-OZYxoVON.js → slack-DCUPTzS2.js} +8 -8
  252. package/dist/src/{slack-DPqj42Ts.js → slack-DOdy_kyv.js} +7 -8
  253. package/dist/src/{slack-BfdBx2tO.js → slack-DXMKtA-f.js} +7 -9
  254. package/dist/src/store-BNmZ1KAz.cjs +5 -0
  255. package/dist/src/{store-BqwfFEyF.cjs → store-BSc-TF2w.cjs} +44 -45
  256. package/dist/src/store-BltJg2cd.js +6 -0
  257. package/dist/src/{store-D4gdn9ih.js → store-D1tv90v3.js} +34 -35
  258. package/dist/src/{store-2ocbYY9D.js → store-DQLEjuEO.js} +40 -36
  259. package/dist/src/store-Ub2vaGJ1.js +228 -0
  260. package/dist/src/{tables-D-NSwNIb.js → tables-5EvT_Bwn.js} +23 -23
  261. package/dist/src/{tables-B9E1kRp-.cjs → tables-C7K-XKWp.cjs} +93 -93
  262. package/dist/src/{tables-C7TT2XVn.js → tables-D36WTqKX.js} +25 -25
  263. package/dist/src/tables-xKANLRBD.js +288 -0
  264. package/dist/src/telemetry-5BCRNBbe.cjs +5 -0
  265. package/dist/src/{telemetry-DZ_7PaVq.js → telemetry-C15ziL8u.js} +17 -14
  266. package/dist/src/{telemetry-BXyVqyAg.js → telemetry-C2YDkUQH.js} +11 -13
  267. package/dist/src/{telemetry-D0_yFdtU.cjs → telemetry-CbrnxHp_.cjs} +21 -24
  268. package/dist/src/telemetry-D4W5hboe.js +7 -0
  269. package/dist/src/telemetry-DMb2Mpfm.js +171 -0
  270. package/dist/src/{text-Dm78AVGG.js → text-B_UCRPp2.js} +2 -2
  271. package/dist/src/{text-DF2hMKdg.cjs → text-CW1cyrwj.cjs} +12 -13
  272. package/dist/src/{text-DgMr_tiM.js → text-Db-Wt2u2.js} +2 -2
  273. package/dist/src/text-TIv0QYnd.js +22 -0
  274. package/dist/src/{tokenUsageUtils-FZd5O_4A.js → tokenUsageUtils-BDGe-iyI.js} +2 -2
  275. package/dist/src/{tokenUsageUtils-DmZSD2eU.js → tokenUsageUtils-DflFMjS0.js} +2 -2
  276. package/dist/src/tokenUsageUtils-NYT-WKS6.js +138 -0
  277. package/dist/src/{tokenUsageUtils-CXhxVj72.cjs → tokenUsageUtils-bVa1ga6f.cjs} +32 -33
  278. package/dist/src/{transcription-FNIz3YOe.cjs → transcription-CL78qbOU.cjs} +14 -15
  279. package/dist/src/{transcription-C-M81iDA.js → transcription-DAtxHhAM.js} +14 -7
  280. package/dist/src/{transcription-CYuY5sFO.js → transcription-LNZTNUUL.js} +14 -16
  281. package/dist/src/{transcription-Ch7S-LWw.js → transcription-QHh3AH6Z.js} +15 -17
  282. package/dist/src/{transform-CoP2bJ7P.js → transform-Cgi24fJ7.js} +94 -66
  283. package/dist/src/{transform-Kd6u-oNm.cjs → transform-CzK1Q0zl.cjs} +24 -26
  284. package/dist/src/{transform-D8dILpfZ.js → transform-DECvGmzp.js} +15 -13
  285. package/dist/src/{transform-DMaxQwDx.js → transform-DGLazrMm.js} +94 -66
  286. package/dist/src/transform-DGxXocjk.js +1506 -0
  287. package/dist/src/{transform-ivxEY4f7.cjs → transform-DOcQeLld.cjs} +234 -206
  288. package/dist/src/transform-DTGDnAzW.js +6 -0
  289. package/dist/src/{transform-CqTFr7KR.js → transform-DilY9wbS.js} +10 -12
  290. package/dist/src/transform-aa6tmVpZ.js +216 -0
  291. package/dist/src/transform-m3qNw4KP.cjs +5 -0
  292. package/dist/src/{transformersAvailability-DEU2naS1.js → transformersAvailability-CEVM2GNQ.js} +2 -2
  293. package/dist/src/{transformersAvailability-Bkep3ka7.cjs → transformersAvailability-CwayUSlh.cjs} +2 -3
  294. package/dist/src/{transformersAvailability-DwmezkVe.js → transformersAvailability-D6c6ROpT.js} +2 -2
  295. package/dist/src/{types-t52w-XsS.js → types-CH3Ge2sE.js} +103 -92
  296. package/dist/src/{types-DMVjYLpx.js → types-CLKiCBW3.js} +98 -91
  297. package/dist/src/types-CN_TZ2GJ.js +3260 -0
  298. package/dist/src/{types-BIfttHrT.cjs → types-LJ0r3wbR.cjs} +573 -566
  299. package/dist/src/util-5cB-L7U3.js +1430 -0
  300. package/dist/src/util-6-GqIvzS.js +599 -0
  301. package/dist/src/{util-vjscpUzy.js → util-B7T3SiBS.js} +5 -6
  302. package/dist/src/{util-Cl0zfT3V.js → util-Betm42rL.js} +44 -17
  303. package/dist/src/{util-CUEt0Vum.js → util-C-PPYSMq.js} +44 -17
  304. package/dist/src/{util-DkFTvieG.cjs → util-CchiqXh_.cjs} +35 -36
  305. package/dist/src/{util-mJ58qbbw.js → util-DaWTWKBK.js} +5 -6
  306. package/dist/src/{util-C08Kns6-.cjs → util-Db0a0AFH.cjs} +89 -62
  307. package/dist/src/{util-DiCePfDu.js → util-Dlz_Wvgm.js} +102 -53
  308. package/dist/src/{util-BSh4a_Q8.js → util-YT5HPZaS.js} +102 -53
  309. package/dist/src/{util-DUYOvxAy.cjs → util-Yz-1aEhW.cjs} +274 -219
  310. package/dist/src/util-ZZH-3QZz.js +293 -0
  311. package/dist/src/{utils-DFaZa6Rf.cjs → utils-Cz9qXqII.cjs} +32 -35
  312. package/dist/src/{utils-CVzb4YiI.js → utils-XiOAgly5.js} +4 -7
  313. package/dist/src/utils-dLokC-eR.js +94 -0
  314. package/dist/src/{utils-JaY9veb5.js → utils-f2-Moju7.js} +4 -7
  315. package/dist/tsconfig.tsbuildinfo +1 -1
  316. package/package.json +59 -53
  317. package/dist/src/app/assets/index-BOgkICuY.css +0 -1
  318. package/dist/src/app/assets/index-CSgqn_Vd.js +0 -428
  319. package/dist/src/app/tsconfig.app.tsbuildinfo +0 -1
  320. package/dist/src/base-BaXmtXYp.js +0 -107
  321. package/dist/src/base-Dtp8b4_N.js +0 -106
  322. package/dist/src/base-f71xxWai.cjs +0 -111
  323. package/dist/src/cache-BUPcq0Ad.js +0 -6
  324. package/dist/src/cache-CVfRb-HD.cjs +0 -6
  325. package/dist/src/cache-O4EuX2JV.js +0 -8
  326. package/dist/src/chunk-DHDDz29n.js +0 -22
  327. package/dist/src/chunk-FhC4c-0y.js +0 -21
  328. package/dist/src/cloud-CZ4hytdm.js +0 -5
  329. package/dist/src/eval-CKHWqG9f.js +0 -16
  330. package/dist/src/evalResult-CxTP-LMm.cjs +0 -11
  331. package/dist/src/evalResult-CzLURDcP.js +0 -13
  332. package/dist/src/evalResult-DyttNQ_G.js +0 -11
  333. package/dist/src/evaluator-0PvfeBYh.js +0 -38
  334. package/dist/src/fetch-Bi0o-fdp.js +0 -4
  335. package/dist/src/fetch-CMptBDVg.cjs +0 -4
  336. package/dist/src/fetch-DAZkv3gV.js +0 -6
  337. package/dist/src/graders-BCytzXrb.js +0 -34
  338. package/dist/src/graders-CGZQShfJ.cjs +0 -33
  339. package/dist/src/graders-spkuVC-E.js +0 -36
  340. package/dist/src/opencode-sdk-CImWVqy9.js +0 -382
  341. package/dist/src/opencode-sdk-CuCztr4P.js +0 -380
  342. package/dist/src/opencode-sdk-DhcfRbBH.js +0 -376
  343. package/dist/src/opencode-sdk-mqF-Oj3f.cjs +0 -383
  344. package/dist/src/providers-BMZZmPBJ.cjs +0 -32
  345. package/dist/src/providers-CQQrNaJk.js +0 -32
  346. package/dist/src/providers-Ck8HyrC-.js +0 -34
  347. package/dist/src/quiverai-BNfIwKCO.cjs +0 -54
  348. package/dist/src/quiverai-BQigKdIH.js +0 -57
  349. package/dist/src/quiverai-Bfy2WnE2.js +0 -55
  350. package/dist/src/quiverai-CedIP0PJ.js +0 -43
  351. package/dist/src/rubyUtils-D7--T12C.js +0 -6
  352. package/dist/src/rubyUtils-DRRiMFV2.js +0 -5
  353. package/dist/src/rubyUtils-vb8OYFC-.cjs +0 -5
  354. package/dist/src/server-BUbS0Qfh.js +0 -6
  355. package/dist/src/server-XpGXFHkS.cjs +0 -6
  356. package/dist/src/server-gfOx5Zrk.js +0 -8
  357. package/dist/src/store-5u2yriTV.js +0 -7
  358. package/dist/src/store-D_lq_8oQ.js +0 -6
  359. package/dist/src/store-m5KT6Ly7.cjs +0 -6
  360. package/dist/src/telemetry-5RHFoCJh.js +0 -6
  361. package/dist/src/telemetry-Do8wMnA-.js +0 -8
  362. package/dist/src/telemetry-LojxPoFq.cjs +0 -6
  363. package/dist/src/transform-8eGmaH-7.js +0 -7
  364. package/dist/src/transform-BRVvWaG4.cjs +0 -6
  365. package/dist/src/transform-GybT0X0u.js +0 -8
  366. package/dist/src/transformersAvailability-DkAWaK5B.js +0 -35
@@ -1,29 +1,28 @@
1
1
  #!/usr/bin/env node
2
- import { O as cliState_default, n as getLogLevel, o as logger_default } from "./logger-BotXmWKW.js";
3
- import { O as TERMINAL_MAX_WIDTH } from "./fetch-SRsE6Ctl.js";
4
- import "./cloud-BMbRVJFw.js";
5
- import "./types-t52w-XsS.js";
6
- import { t as printBorder } from "./util-BSh4a_Q8.js";
7
- import "./esm-CYhseqj4.js";
8
- import "./pythonUtils-r1uBuA0n.js";
9
- import { t as formatDuration } from "./formatDuration-Doo0xq-z.js";
2
+ import { O as state, n as getLogLevel, o as logger } from "./logger-KkObSCzq.js";
3
+ import { D as TERMINAL_MAX_WIDTH, u as sleepWithAbort } from "./fetch-BMv0O527.js";
4
+ import "./cloud-Bc9526yV.js";
5
+ import "./types-CH3Ge2sE.js";
6
+ import { t as printBorder } from "./util-YT5HPZaS.js";
7
+ import "./esm-C03C-mv3.js";
8
+ import "./pythonUtils-C3py6GC1.js";
9
+ import { t as formatDuration } from "./formatDuration-DgBVMN65.js";
10
10
  import { z } from "zod";
11
11
  import chalk from "chalk";
12
12
  import fs from "fs";
13
- import path, { isAbsolute, resolve as resolve$1 } from "path";
13
+ import path, { isAbsolute, resolve } from "path";
14
14
  import yaml from "js-yaml";
15
15
  import crypto from "crypto";
16
16
  import { spawn } from "child_process";
17
17
  import async from "async";
18
- import { execa } from "execa";
19
18
  import ora from "ora";
20
19
  import { io } from "socket.io-client";
21
- import simpleGit$1 from "simple-git";
20
+ import simpleGit from "simple-git";
22
21
  import binaryExtensions from "binary-extensions";
22
+ import { execa } from "execa";
23
23
  import { isText } from "istextorbinary";
24
24
  import textExtensions from "text-extensions";
25
25
  import { minimatch } from "minimatch";
26
-
27
26
  //#region src/util/agent/agentAuth.ts
28
27
  /**
29
28
  * Shared auth credential resolution for agent clients.
@@ -33,9 +32,9 @@ import { minimatch } from "minimatch";
33
32
  */
34
33
  let cloudConfig$1;
35
34
  try {
36
- cloudConfig$1 = (await import("./cloud-CZ4hytdm.js")).cloudConfig;
35
+ cloudConfig$1 = (await import("./cloud-DmE0EwsY.js")).cloudConfig;
37
36
  } catch (error) {
38
- if (error instanceof Error && "code" in error && error.code === "MODULE_NOT_FOUND") {} else logger_default.debug(`Unexpected error loading cloud config: ${error}`);
37
+ if (error instanceof Error && "code" in error && error.code === "MODULE_NOT_FOUND") {} else logger.debug(`Unexpected error loading cloud config: ${error}`);
39
38
  }
40
39
  /**
41
40
  * Resolve base authentication credentials using waterfall approach:
@@ -48,24 +47,23 @@ try {
48
47
  */
49
48
  function resolveBaseAuthCredentials(opts) {
50
49
  if (opts?.apiKey) {
51
- logger_default.debug("Using API key from CLI/config");
50
+ logger.debug("Using API key from CLI/config");
52
51
  return { apiKey: opts.apiKey };
53
52
  }
54
53
  const envApiKey = process.env.PROMPTFOO_API_KEY;
55
54
  if (envApiKey) {
56
- logger_default.debug("Using API key from PROMPTFOO_API_KEY env var");
55
+ logger.debug("Using API key from PROMPTFOO_API_KEY env var");
57
56
  return { apiKey: envApiKey };
58
57
  }
59
58
  if (cloudConfig$1) {
60
59
  const storedApiKey = cloudConfig$1.getApiKey();
61
60
  if (storedApiKey) {
62
- logger_default.debug("Using API key from promptfoo auth");
61
+ logger.debug("Using API key from promptfoo auth");
63
62
  return { apiKey: storedApiKey };
64
63
  }
65
64
  }
66
65
  return {};
67
66
  }
68
-
69
67
  //#endregion
70
68
  //#region src/util/agent/agentClient.ts
71
69
  /**
@@ -79,9 +77,9 @@ function resolveBaseAuthCredentials(opts) {
79
77
  */
80
78
  let cloudConfig;
81
79
  try {
82
- cloudConfig = (await import("./cloud-CZ4hytdm.js")).cloudConfig;
80
+ cloudConfig = (await import("./cloud-DmE0EwsY.js")).cloudConfig;
83
81
  } catch (error) {
84
- if (error instanceof Error && "code" in error && error.code === "MODULE_NOT_FOUND") {} else logger_default.debug(`Unexpected error loading cloud config: ${error}`);
82
+ if (error instanceof Error && "code" in error && error.code === "MODULE_NOT_FOUND") {} else logger.debug(`Unexpected error loading cloud config: ${error}`);
85
83
  }
86
84
  /**
87
85
  * Create an agent client that connects to the shared Socket.IO server.
@@ -118,7 +116,7 @@ async function createAgentClient(opts) {
118
116
  }
119
117
  });
120
118
  socket.on("connect", () => {
121
- logger_default.debug(`Agent client connected (agent: ${agent}, id: ${socket.id})`);
119
+ logger.debug(`Agent client connected (agent: ${agent}, id: ${socket.id})`);
122
120
  socket.emit("agent:join", { sessionId });
123
121
  if (settled) return;
124
122
  settled = true;
@@ -155,18 +153,18 @@ async function createAgentClient(opts) {
155
153
  socket.on("connect_error", (error) => {
156
154
  if (settled) return;
157
155
  settled = true;
158
- logger_default.debug(`Agent client connection error: ${error.message}`);
156
+ logger.debug(`Agent client connection error: ${error.message}`);
159
157
  cleanup();
160
158
  reject(/* @__PURE__ */ new Error(`Failed to connect to server: ${error.message}`));
161
159
  });
162
160
  socket.on("disconnect", (reason) => {
163
- logger_default.debug(`Agent client disconnected: ${reason}`);
161
+ logger.debug(`Agent client disconnected: ${reason}`);
164
162
  });
165
163
  socket.on("error", (error) => {
166
- logger_default.debug(`Agent client error: ${String(error)}`);
164
+ logger.debug(`Agent client error: ${String(error)}`);
167
165
  });
168
166
  socket.io.on("reconnect_failed", () => {
169
- logger_default.error(`Agent client reconnection failed after all attempts (agent: ${agent})`);
167
+ logger.error(`Agent client reconnection failed after all attempts (agent: ${agent})`);
170
168
  });
171
169
  const timeoutId = setTimeout(() => {
172
170
  if (!socket.connected && !settled) {
@@ -177,7 +175,6 @@ async function createAgentClient(opts) {
177
175
  }, timeoutMs);
178
176
  });
179
177
  }
180
-
181
178
  //#endregion
182
179
  //#region src/types/codeScan.ts
183
180
  const CodeScanSeverity = {
@@ -321,7 +318,7 @@ const PullRequestContextSchema = z.object({
321
318
  number: z.number(),
322
319
  sha: z.string()
323
320
  });
324
- const ScanRequestSchema = z.object({
321
+ z.object({
325
322
  files: z.array(FileRecordSchema).min(1, "Files array cannot be empty"),
326
323
  metadata: GitMetadataSchema,
327
324
  config: ScanConfigSchema,
@@ -337,7 +334,7 @@ const CommentSchema = z.object({
337
334
  severity: CodeScanSeveritySchema.optional(),
338
335
  aiAgentPrompt: z.string().nullable().optional()
339
336
  });
340
- const PhaseResultsSchema = z.object({
337
+ z.object({
341
338
  inventory: z.string(),
342
339
  tracing: z.string(),
343
340
  analysis: z.string(),
@@ -345,7 +342,7 @@ const PhaseResultsSchema = z.object({
345
342
  fixes: z.string(),
346
343
  comments: z.string()
347
344
  });
348
- const ScanResponseSchema = z.object({
345
+ z.object({
349
346
  success: z.boolean(),
350
347
  review: z.string().optional(),
351
348
  comments: z.array(CommentSchema),
@@ -407,7 +404,6 @@ var ConfigLoadError = class extends Error {
407
404
  this.name = "ConfigLoadError";
408
405
  }
409
406
  };
410
-
411
407
  //#endregion
412
408
  //#region src/codeScan/config/schema.ts
413
409
  /**
@@ -434,7 +430,6 @@ const DEFAULT_CONFIG = {
434
430
  minimumSeverity: CodeScanSeverity.MEDIUM,
435
431
  diffsOnly: false
436
432
  };
437
-
438
433
  //#endregion
439
434
  //#region src/codeScan/config/loader.ts
440
435
  /**
@@ -533,7 +528,6 @@ function resolveGuidance(options, config) {
533
528
  function resolveApiHost(options, config) {
534
529
  return options.apiHost || config.apiHost || "https://api.promptfoo.app";
535
530
  }
536
-
537
531
  //#endregion
538
532
  //#region src/codeScan/git/diff.ts
539
533
  /**
@@ -552,7 +546,6 @@ async function validateOnBranch(git) {
552
546
  throw new GitError(`Failed to validate branch: ${error instanceof Error ? error.message : String(error)}`);
553
547
  }
554
548
  }
555
-
556
549
  //#endregion
557
550
  //#region src/codeScan/constants/filtering.ts
558
551
  /**
@@ -594,12 +587,10 @@ const DENYLIST_PATTERNS = [
594
587
  "**/*.mp4",
595
588
  "**/*.mov"
596
589
  ];
597
- const MAX_BLOB_SIZE_BYTES = 500 * 1024;
598
590
  const MAX_PATCH_SIZE_BYTES = 200 * 1024;
599
591
  function isInDenylist(filePath) {
600
592
  return DENYLIST_PATTERNS.some((pattern) => minimatch(filePath, pattern));
601
593
  }
602
-
603
594
  //#endregion
604
595
  //#region src/codeScan/util/diffHunkParser.ts
605
596
  /**
@@ -639,7 +630,6 @@ function parseHunkHeader(line) {
639
630
  newCount: match[4] ? parseInt(match[4], 10) : 1
640
631
  };
641
632
  }
642
-
643
633
  //#endregion
644
634
  //#region src/codeScan/git/diffAnnotator.ts
645
635
  /**
@@ -707,7 +697,6 @@ function annotateDiffWithLineRanges(patch) {
707
697
  lineRanges
708
698
  };
709
699
  }
710
-
711
700
  //#endregion
712
701
  //#region src/codeScan/git/diffProcessor.ts
713
702
  /**
@@ -858,7 +847,7 @@ function attachBlobSizesAndFilter(files, sizeMap) {
858
847
  if (file.skipReason) return file;
859
848
  const beforeSize = file.shaA ? sizeMap.get(file.shaA) : void 0;
860
849
  const afterSize = file.shaB ? sizeMap.get(file.shaB) : void 0;
861
- if (beforeSize !== void 0 && beforeSize > MAX_BLOB_SIZE_BYTES || afterSize !== void 0 && afterSize > MAX_BLOB_SIZE_BYTES) return {
850
+ if (beforeSize !== void 0 && beforeSize > 512e3 || afterSize !== void 0 && afterSize > 512e3) return {
862
851
  ...file,
863
852
  beforeSizeBytes: beforeSize,
864
853
  afterSizeBytes: afterSize,
@@ -947,7 +936,7 @@ async function generatePatchForFile(repoPath, base, compare, filePath) {
947
936
  cwd: repoPath,
948
937
  maxBuffer: MAX_PATCH_SIZE_BYTES
949
938
  })).stdout;
950
- if (Buffer.byteLength(patch, "utf8") > MAX_PATCH_SIZE_BYTES) return {
939
+ if (Buffer.byteLength(patch, "utf8") > 204800) return {
951
940
  success: false,
952
941
  skipReason: "patch too large"
953
942
  };
@@ -960,13 +949,13 @@ async function generatePatchForFile(repoPath, base, compare, filePath) {
960
949
  } catch (err) {
961
950
  const errorMessage = err instanceof Error ? err.message : String(err);
962
951
  if (errorMessage.includes("maxBuffer") || errorMessage.includes("stdout maxBuffer")) {
963
- logger_default.debug(`git diff --patch ${filePath} exceeded maxBuffer (${MAX_PATCH_SIZE_BYTES} bytes) - patch too large`);
952
+ logger.debug(`git diff --patch ${filePath} exceeded maxBuffer (${MAX_PATCH_SIZE_BYTES} bytes) - patch too large`);
964
953
  return {
965
954
  success: false,
966
955
  skipReason: "patch too large"
967
956
  };
968
957
  }
969
- logger_default.debug(`git diff --patch ${filePath} failed: ${errorMessage} - skipping file`);
958
+ logger.debug(`git diff --patch ${filePath} failed: ${errorMessage} - skipping file`);
970
959
  return {
971
960
  success: false,
972
961
  skipReason: "diff error"
@@ -1007,7 +996,6 @@ async function processDiff(repoPath, base, compare = "HEAD") {
1007
996
  throw new DiffProcessorError(`Failed to process diff: ${error instanceof Error ? error.message : String(error)}`);
1008
997
  }
1009
998
  }
1010
-
1011
999
  //#endregion
1012
1000
  //#region src/codeScan/git/metadata.ts
1013
1001
  /**
@@ -1023,7 +1011,7 @@ async function processDiff(repoPath, base, compare = "HEAD") {
1023
1011
  * @returns Git metadata object
1024
1012
  */
1025
1013
  async function extractMetadata(repoPath, baseBranch, compareRef) {
1026
- const git = simpleGit$1(repoPath);
1014
+ const git = simpleGit(repoPath);
1027
1015
  try {
1028
1016
  const baseRef = baseBranch;
1029
1017
  const compareRefValue = compareRef;
@@ -1050,7 +1038,6 @@ async function extractMetadata(repoPath, baseBranch, compareRef) {
1050
1038
  throw new GitMetadataError(`Failed to extract git metadata: ${error instanceof Error ? error.message : String(error)}`);
1051
1039
  }
1052
1040
  }
1053
-
1054
1041
  //#endregion
1055
1042
  //#region src/codeScan/mcp/filesystem.ts
1056
1043
  /**
@@ -1065,9 +1052,9 @@ async function extractMetadata(repoPath, baseBranch, compareRef) {
1065
1052
  */
1066
1053
  function startFilesystemMcpServer(rootDir) {
1067
1054
  if (!isAbsolute(rootDir)) throw new FilesystemMcpError(`Root directory must be an absolute path, got: ${rootDir}`);
1068
- const absoluteRootDir = resolve$1(rootDir);
1069
- logger_default.debug("Starting filesystem MCP server...");
1070
- logger_default.debug(`Root directory: ${absoluteRootDir}`);
1055
+ const absoluteRootDir = resolve(rootDir);
1056
+ logger.debug("Starting filesystem MCP server...");
1057
+ logger.debug(`Root directory: ${absoluteRootDir}`);
1071
1058
  try {
1072
1059
  const mcpProcess = spawn("npx", [
1073
1060
  "-y",
@@ -1084,16 +1071,16 @@ function startFilesystemMcpServer(rootDir) {
1084
1071
  mcpProcess.stderr?.on("data", (chunk) => {
1085
1072
  const message = chunk.toString("utf8");
1086
1073
  if (message.includes("Failed to request initial roots from client")) return;
1087
- logger_default.debug(`MCP server stderr: ${message.trim()}`);
1074
+ logger.debug(`MCP server stderr: ${message.trim()}`);
1088
1075
  });
1089
1076
  mcpProcess.on("error", (error) => {
1090
- logger_default.error(`MCP server process error: ${error.message}`);
1077
+ logger.error(`MCP server process error: ${error.message}`);
1091
1078
  });
1092
1079
  mcpProcess.on("exit", (code, signal) => {
1093
- if (code !== null && code !== 0) logger_default.debug(`MCP server exited with code ${code}`);
1094
- else if (signal) logger_default.debug(`MCP server terminated by signal ${signal}`);
1080
+ if (code !== null && code !== 0) logger.debug(`MCP server exited with code ${code}`);
1081
+ else if (signal) logger.debug(`MCP server terminated by signal ${signal}`);
1095
1082
  });
1096
- logger_default.debug(`MCP server started (pid: ${mcpProcess.pid})`);
1083
+ logger.debug(`MCP server started (pid: ${mcpProcess.pid})`);
1097
1084
  return mcpProcess;
1098
1085
  } catch (error) {
1099
1086
  throw new FilesystemMcpError(`Failed to start filesystem MCP server: ${error instanceof Error ? error.message : String(error)}`);
@@ -1105,25 +1092,24 @@ function startFilesystemMcpServer(rootDir) {
1105
1092
  */
1106
1093
  async function stopFilesystemMcpServer(process) {
1107
1094
  if (!process.pid) {
1108
- logger_default.debug("MCP server already stopped");
1095
+ logger.debug("MCP server already stopped");
1109
1096
  return;
1110
1097
  }
1111
- logger_default.debug(`Stopping MCP server (pid: ${process.pid})...`);
1098
+ logger.debug(`Stopping MCP server (pid: ${process.pid})...`);
1112
1099
  return new Promise((resolve) => {
1113
1100
  const timeout = setTimeout(() => {
1114
- logger_default.debug("MCP server did not exit gracefully, force killing...");
1101
+ logger.debug("MCP server did not exit gracefully, force killing...");
1115
1102
  process.kill("SIGKILL");
1116
1103
  resolve();
1117
1104
  }, 5e3);
1118
1105
  process.on("exit", () => {
1119
1106
  clearTimeout(timeout);
1120
- logger_default.debug("MCP server stopped");
1107
+ logger.debug("MCP server stopped");
1121
1108
  resolve();
1122
1109
  });
1123
1110
  process.kill("SIGTERM");
1124
1111
  });
1125
1112
  }
1126
-
1127
1113
  //#endregion
1128
1114
  //#region src/codeScan/mcp/transport.ts
1129
1115
  /**
@@ -1143,7 +1129,7 @@ var SocketIoMcpBridge = class {
1143
1129
  */
1144
1130
  async connect() {
1145
1131
  if (!this.socket.connected) throw new SocketIoMcpBridgeError("Socket must be connected before starting bridge");
1146
- logger_default.debug(`Using existing socket connection (id: ${this.socket.id})`);
1132
+ logger.debug(`Using existing socket connection (id: ${this.socket.id})`);
1147
1133
  this.startBridging();
1148
1134
  }
1149
1135
  /**
@@ -1193,7 +1179,7 @@ var SocketIoMcpBridge = class {
1193
1179
  message
1194
1180
  });
1195
1181
  } catch (_error) {
1196
- logger_default.debug(`Failed to parse MCP output: ${line}`);
1182
+ logger.debug(`Failed to parse MCP output: ${line}`);
1197
1183
  }
1198
1184
  }
1199
1185
  });
@@ -1217,19 +1203,19 @@ var SocketIoMcpBridge = class {
1217
1203
  const jsonLine = JSON.stringify(messageToSend) + "\n";
1218
1204
  this.mcpProcess.stdin?.write(jsonLine);
1219
1205
  } catch (error) {
1220
- logger_default.error(`Failed to write to MCP stdin: ${error instanceof Error ? error.message : String(error)}`);
1206
+ logger.error(`Failed to write to MCP stdin: ${error instanceof Error ? error.message : String(error)}`);
1221
1207
  }
1222
1208
  });
1223
- logger_default.debug("MCP ↔ Socket.io bridge active");
1209
+ logger.debug("MCP ↔ Socket.io bridge active");
1224
1210
  }
1225
1211
  /**
1226
1212
  * Stop bridging (socket lifecycle managed externally)
1227
1213
  */
1228
1214
  async disconnect() {
1229
- logger_default.debug("Stopping MCP bridge...");
1215
+ logger.debug("Stopping MCP bridge...");
1230
1216
  this.wireIdMap.clear();
1231
1217
  this.wireIdSeq = 0;
1232
- logger_default.debug("MCP bridge stopped");
1218
+ logger.debug("MCP bridge stopped");
1233
1219
  }
1234
1220
  /**
1235
1221
  * Get socket ID (if connected)
@@ -1244,7 +1230,6 @@ var SocketIoMcpBridge = class {
1244
1230
  return this.socket?.connected === true;
1245
1231
  }
1246
1232
  };
1247
-
1248
1233
  //#endregion
1249
1234
  //#region src/codeScan/mcp/index.ts
1250
1235
  /**
@@ -1259,8 +1244,8 @@ var SocketIoMcpBridge = class {
1259
1244
  * @returns MCP bridge setup result
1260
1245
  */
1261
1246
  async function setupMcpBridge(socket, absoluteRepoPath, sessionId) {
1262
- logger_default.debug("Setting up repo MCP access...");
1263
- logger_default.debug(`Using session ID: ${sessionId}`);
1247
+ logger.debug("Setting up repo MCP access...");
1248
+ logger.debug(`Using session ID: ${sessionId}`);
1264
1249
  const mcpProcess = startFilesystemMcpServer(absoluteRepoPath);
1265
1250
  const mcpBridge = new SocketIoMcpBridge(mcpProcess, socket, sessionId);
1266
1251
  await mcpBridge.connect();
@@ -1274,7 +1259,6 @@ async function setupMcpBridge(socket, absoluteRepoPath, sessionId) {
1274
1259
  sessionId
1275
1260
  };
1276
1261
  }
1277
-
1278
1262
  //#endregion
1279
1263
  //#region src/codeScan/util/auth.ts
1280
1264
  /**
@@ -1300,16 +1284,15 @@ function resolveAuthCredentials(apiKey, forkPR) {
1300
1284
  if (baseAuth.apiKey) return baseAuth;
1301
1285
  const oidcToken = process.env.GITHUB_OIDC_TOKEN;
1302
1286
  if (oidcToken) {
1303
- logger_default.debug("Using GitHub OIDC token");
1287
+ logger.debug("Using GitHub OIDC token");
1304
1288
  return { oidcToken };
1305
1289
  }
1306
1290
  if (forkPR) {
1307
- logger_default.debug("Using fork PR context for authentication");
1291
+ logger.debug("Using fork PR context for authentication");
1308
1292
  return { forkPR };
1309
1293
  }
1310
1294
  return {};
1311
1295
  }
1312
-
1313
1296
  //#endregion
1314
1297
  //#region src/codeScan/util/github.ts
1315
1298
  /**
@@ -1328,7 +1311,6 @@ function parseGitHubPr(prString) {
1328
1311
  number: parseInt(prNumber, 10)
1329
1312
  };
1330
1313
  }
1331
-
1332
1314
  //#endregion
1333
1315
  //#region src/codeScan/scanner/cleanup.ts
1334
1316
  /**
@@ -1341,14 +1323,13 @@ function parseGitHubPr(prString) {
1341
1323
  */
1342
1324
  function registerCleanupHandlers(refs) {
1343
1325
  const cleanup = (signal) => {
1344
- logger_default.debug(`Received ${signal}, cleaning up...`);
1326
+ logger.debug(`Received ${signal}, cleaning up...`);
1345
1327
  if (refs.abortController) refs.abortController.abort();
1346
1328
  };
1347
1329
  process.once("SIGINT", () => cleanup("SIGINT"));
1348
1330
  process.once("SIGTERM", () => cleanup("SIGTERM"));
1349
1331
  process.once("SIGQUIT", () => cleanup("SIGQUIT"));
1350
1332
  }
1351
-
1352
1333
  //#endregion
1353
1334
  //#region src/codeScan/scanner/output.ts
1354
1335
  /**
@@ -1381,8 +1362,8 @@ function displayScanResults(response, duration, options) {
1381
1362
  const { comments, review } = response;
1382
1363
  const severityCounts = countBySeverity(comments || []);
1383
1364
  printBorder();
1384
- logger_default.info(`${chalk.green("✓")} Scan complete (${formatDuration(duration / 1e3)})`);
1385
- if (severityCounts.total > 0) logger_default.info(chalk.yellow(`⚠ Found ${severityCounts.total} issue${severityCounts.total === 1 ? "" : "s"}`));
1365
+ logger.info(`${chalk.green("✓")} Scan complete (${formatDuration(duration / 1e3)})`);
1366
+ if (severityCounts.total > 0) logger.info(chalk.yellow(`⚠ Found ${severityCounts.total} issue${severityCounts.total === 1 ? "" : "s"}`));
1386
1367
  printBorder();
1387
1368
  let reviewText = review;
1388
1369
  if (!reviewText && comments && comments.length > 0) {
@@ -1390,9 +1371,9 @@ function displayScanResults(response, duration, options) {
1390
1371
  if (noneComment) reviewText = noneComment.finding;
1391
1372
  }
1392
1373
  if (reviewText) {
1393
- logger_default.info("");
1394
- logger_default.info(reviewText);
1395
- logger_default.info("");
1374
+ logger.info("");
1375
+ logger.info(reviewText);
1376
+ logger.info("");
1396
1377
  printBorder();
1397
1378
  }
1398
1379
  if (severityCounts.total > 0) {
@@ -1406,42 +1387,49 @@ function displayScanResults(response, duration, options) {
1406
1387
  const rankA = a.severity ? getSeverityRank(a.severity) : 0;
1407
1388
  return (b.severity ? getSeverityRank(b.severity) : 0) - rankA;
1408
1389
  });
1409
- logger_default.info("");
1390
+ logger.info("");
1410
1391
  for (let i = 0; i < sortedComments.length; i++) {
1411
1392
  const comment = sortedComments[i];
1412
1393
  const severity = formatSeverity(comment.severity);
1413
1394
  const location = comment.line ? `${comment.file}:${comment.line}` : comment.file || "";
1414
- logger_default.info(`${severity} ${chalk.gray(location)}`);
1415
- logger_default.info("");
1416
- logger_default.info(comment.finding);
1395
+ logger.info(`${severity} ${chalk.gray(location)}`);
1396
+ logger.info("");
1397
+ logger.info(comment.finding);
1417
1398
  if (comment.fix) {
1418
- logger_default.info("");
1419
- logger_default.info(chalk.bold("Suggested Fix:"));
1420
- logger_default.info(comment.fix);
1399
+ logger.info("");
1400
+ logger.info(chalk.bold("Suggested Fix:"));
1401
+ logger.info(comment.fix);
1421
1402
  }
1422
1403
  if (comment.aiAgentPrompt) {
1423
- logger_default.info("");
1424
- logger_default.info(chalk.bold("AI Agent Prompt:"));
1425
- logger_default.info(comment.aiAgentPrompt);
1404
+ logger.info("");
1405
+ logger.info(chalk.bold("AI Agent Prompt:"));
1406
+ logger.info(comment.aiAgentPrompt);
1426
1407
  }
1427
1408
  if (i < sortedComments.length - 1) {
1428
- logger_default.info("");
1429
- logger_default.info(chalk.gray("─".repeat(TERMINAL_MAX_WIDTH)));
1430
- logger_default.info("");
1409
+ logger.info("");
1410
+ logger.info(chalk.gray("─".repeat(TERMINAL_MAX_WIDTH)));
1411
+ logger.info("");
1431
1412
  }
1432
1413
  }
1433
1414
  printBorder();
1434
1415
  if (options.githubPr) {
1435
- logger_default.info(`» Comments posted to PR: ${chalk.cyan(options.githubPr)}`);
1416
+ logger.info(`» Comments posted to PR: ${chalk.cyan(options.githubPr)}`);
1436
1417
  printBorder();
1437
1418
  }
1438
1419
  }
1439
1420
  }
1440
1421
  }
1441
-
1442
1422
  //#endregion
1443
1423
  //#region src/codeScan/scanner/request.ts
1444
1424
  /**
1425
+ * Scan Request Building and Execution
1426
+ *
1427
+ * Handles building scan requests and executing them via the agent client.
1428
+ */
1429
+ const CAPACITY_ERROR_MESSAGE = "Server at capacity";
1430
+ const MAX_RETRIES = 7;
1431
+ const BASE_DELAY_MS = 1e3;
1432
+ /**
1445
1433
  * Build scan request from inputs
1446
1434
  *
1447
1435
  * @param files - Files to scan
@@ -1537,7 +1525,46 @@ async function executeScanRequest(client, request, options) {
1537
1525
  client.start(request);
1538
1526
  });
1539
1527
  }
1540
-
1528
+ /**
1529
+ * Check if error is a server capacity error
1530
+ */
1531
+ function isCapacityError(error) {
1532
+ if (error instanceof Error) return error.message.includes(CAPACITY_ERROR_MESSAGE);
1533
+ return false;
1534
+ }
1535
+ /**
1536
+ * Execute scan request with retry for capacity errors
1537
+ *
1538
+ * When the server is at capacity, it returns "Server at capacity. Please retry."
1539
+ * This wrapper retries with exponential backoff + jitter to spread load.
1540
+ *
1541
+ * Backoff schedule: ~1s, ~2s, ~4s, ~8s, ~16s, ~32s (total ~63s max)
1542
+ *
1543
+ * @param client - Connected agent client
1544
+ * @param request - Scan request to send
1545
+ * @param options - Execution options
1546
+ * @returns Promise resolving to scan response
1547
+ * @throws Error if scan fails after all retries
1548
+ */
1549
+ async function executeScanRequestWithRetry(client, request, options) {
1550
+ const { showSpinner, spinner } = options;
1551
+ for (let attempt = 0; attempt < MAX_RETRIES; attempt++) try {
1552
+ return await executeScanRequest(client, request, options);
1553
+ } catch (error) {
1554
+ if (!isCapacityError(error)) throw error;
1555
+ if (attempt === MAX_RETRIES - 1) throw error;
1556
+ const jitter = .7 + .6 * Math.random();
1557
+ const delay = BASE_DELAY_MS * Math.pow(2, attempt) * jitter;
1558
+ logger.debug(`Server busy, retrying in ${Math.round(delay / 1e3)}s (attempt ${attempt + 1}/${MAX_RETRIES})`);
1559
+ if (showSpinner && spinner) {
1560
+ const originalText = spinner.text;
1561
+ spinner.text = `Server busy, retrying in ${Math.round(delay / 1e3)}s...`;
1562
+ await sleepWithAbort(delay, options.abortController.signal);
1563
+ spinner.text = originalText;
1564
+ } else await sleepWithAbort(delay, options.abortController.signal);
1565
+ }
1566
+ throw new Error("Scan failed: exceeded maximum retries");
1567
+ }
1541
1568
  //#endregion
1542
1569
  //#region src/codeScan/scanner/index.ts
1543
1570
  /**
@@ -1570,13 +1597,13 @@ async function executeScan(repoPath, options) {
1570
1597
  const guidance = resolveGuidance(options, config);
1571
1598
  const absoluteRepoPath = path.resolve(repoPath);
1572
1599
  if (!options.json) {
1573
- logger_default.info("Beginning scan for LLM-related vulnerabilities in your code.");
1574
- logger_default.info(` Minimum severity: ${config.minimumSeverity}`);
1575
- if (config.diffsOnly) logger_default.info(` Mode: diffs only`);
1576
- else logger_default.info(` Mode: diffs + tracing into repo`);
1577
- logger_default.info("");
1600
+ logger.info("Beginning scan for LLM-related vulnerabilities in your code.");
1601
+ logger.info(` Minimum severity: ${config.minimumSeverity}`);
1602
+ if (config.diffsOnly) logger.info(` Mode: diffs only`);
1603
+ else logger.info(` Mode: diffs + tracing into repo`);
1604
+ logger.info("");
1578
1605
  }
1579
- logger_default.debug(`Repository: ${absoluteRepoPath}`);
1606
+ logger.debug(`Repository: ${absoluteRepoPath}`);
1580
1607
  const cleanupRefs = {
1581
1608
  repoPath: absoluteRepoPath,
1582
1609
  socket: null,
@@ -1586,7 +1613,7 @@ async function executeScan(repoPath, options) {
1586
1613
  abortController: null
1587
1614
  };
1588
1615
  registerCleanupHandlers(cleanupRefs);
1589
- const isWebUI = Boolean(cliState_default.webUI);
1616
+ const isWebUI = Boolean(state.webUI);
1590
1617
  const spinner = createSpinner({
1591
1618
  json: options.json || false,
1592
1619
  isWebUI,
@@ -1603,7 +1630,7 @@ async function executeScan(repoPath, options) {
1603
1630
  if (!parsed) throw new Error(`Invalid --github-pr format: "${options.githubPr}". Expected format: owner/repo#number (e.g., promptfoo/promptfoo#123)`);
1604
1631
  parsedPR = parsed;
1605
1632
  }
1606
- if (!showSpinner) logger_default.debug("Connecting to server...");
1633
+ if (!showSpinner) logger.debug("Connecting to server...");
1607
1634
  client = await createAgentClient({
1608
1635
  agent: "code-scan",
1609
1636
  host: resolveApiHost(options, config),
@@ -1618,7 +1645,7 @@ async function executeScan(repoPath, options) {
1618
1645
  cleanupRefs.mcpProcess = mcpProcess;
1619
1646
  cleanupRefs.mcpBridge = mcpBridge;
1620
1647
  }
1621
- logger_default.debug("Processing git diff...");
1648
+ logger.debug("Processing git diff...");
1622
1649
  const simpleGit = (await import("simple-git")).default;
1623
1650
  const git = simpleGit(absoluteRepoPath);
1624
1651
  if (!options.compare) await validateOnBranch(git);
@@ -1629,11 +1656,11 @@ async function executeScan(repoPath, options) {
1629
1656
  baseBranch = branches.all.includes("main") || branches.all.includes("origin/main") ? "main" : branches.all.includes("master") || branches.all.includes("origin/master") ? "master" : "main";
1630
1657
  }
1631
1658
  const compareRef = options.compare || "HEAD";
1632
- logger_default.debug(`Comparing: ${baseBranch}...${compareRef}`);
1659
+ logger.debug(`Comparing: ${baseBranch}...${compareRef}`);
1633
1660
  const files = await processDiff(absoluteRepoPath, baseBranch, compareRef);
1634
1661
  const includedFiles = files.filter((f) => !f.skipReason && f.patch);
1635
1662
  const skippedFiles = files.filter((f) => f.skipReason);
1636
- logger_default.debug(`Files changed: ${files.length} (${includedFiles.length} included, ${skippedFiles.length} skipped)`);
1663
+ logger.debug(`Files changed: ${files.length} (${includedFiles.length} included, ${skippedFiles.length} skipped)`);
1637
1664
  if (includedFiles.length === 0) {
1638
1665
  const msg = "No files to scan";
1639
1666
  if (options.json) {
@@ -1642,18 +1669,18 @@ async function executeScan(repoPath, options) {
1642
1669
  comments: [],
1643
1670
  review: msg
1644
1671
  };
1645
- logger_default.info(JSON.stringify(response, null, 2));
1672
+ logger.info(JSON.stringify(response, null, 2));
1646
1673
  } else if (showSpinner && spinner) spinner.succeed(msg);
1647
- else logger_default.info(msg);
1648
- cliState_default.postActionCallback = async () => {
1674
+ else logger.info(msg);
1675
+ state.postActionCallback = async () => {
1649
1676
  await new Promise((resolve) => setTimeout(resolve, 100));
1650
1677
  process.exitCode = 0;
1651
1678
  };
1652
1679
  return;
1653
1680
  }
1654
1681
  const metadata = await extractMetadata(absoluteRepoPath, baseBranch, compareRef);
1655
- logger_default.debug(`Compare ref: ${metadata.branch}`);
1656
- logger_default.debug(`Commits: ${metadata.commitMessages.length}`);
1682
+ logger.debug(`Compare ref: ${metadata.branch}`);
1683
+ logger.debug(`Commits: ${metadata.commitMessages.length}`);
1657
1684
  let pullRequest = void 0;
1658
1685
  if (parsedPR) {
1659
1686
  const currentCommit = await git.revparse(["HEAD"]);
@@ -1663,11 +1690,11 @@ async function executeScan(repoPath, options) {
1663
1690
  number: parsedPR.number,
1664
1691
  sha: currentCommit.trim()
1665
1692
  };
1666
- logger_default.debug(`GitHub PR context: ${parsedPR.owner}/${parsedPR.repo}#${parsedPR.number} (${pullRequest.sha.substring(0, 7)})`);
1693
+ logger.debug(`GitHub PR context: ${parsedPR.owner}/${parsedPR.repo}#${parsedPR.number} (${pullRequest.sha.substring(0, 7)})`);
1667
1694
  }
1668
- if (!showSpinner) logger_default.debug("Scanning code...");
1695
+ if (!showSpinner) logger.debug("Scanning code...");
1669
1696
  const scanRequest = buildScanRequest(files, metadata, config, sessionId, pullRequest, guidance);
1670
- const scanResponse = await executeScanRequest(client, scanRequest, {
1697
+ const scanResponse = await executeScanRequestWithRetry(client, scanRequest, {
1671
1698
  showSpinner,
1672
1699
  spinner,
1673
1700
  abortController
@@ -1682,8 +1709,8 @@ async function executeScan(repoPath, options) {
1682
1709
  if (errorMessage.includes("Fork PR scanning not authorized")) {
1683
1710
  const msg = "Fork PR scanning requires maintainer approval. See PR comment for options.";
1684
1711
  if (showSpinner && spinner) spinner.succeed(msg);
1685
- else logger_default.info(msg);
1686
- cliState_default.postActionCallback = async () => {
1712
+ else logger.info(msg);
1713
+ state.postActionCallback = async () => {
1687
1714
  await new Promise((resolve) => setTimeout(resolve, 100));
1688
1715
  process.exitCode = 0;
1689
1716
  };
@@ -1691,26 +1718,26 @@ async function executeScan(repoPath, options) {
1691
1718
  }
1692
1719
  const msg = `Scan failed: ${errorMessage}`;
1693
1720
  if (showSpinner && spinner) spinner.fail(msg);
1694
- else logger_default.error(msg);
1695
- cliState_default.postActionCallback = async () => {
1721
+ else logger.error(msg);
1722
+ state.postActionCallback = async () => {
1696
1723
  await new Promise((resolve) => setTimeout(resolve, 100));
1697
1724
  if (error instanceof Error && error.message === "cancelled by user") process.exitCode = 130;
1698
1725
  else process.exitCode = 1;
1699
1726
  };
1700
1727
  } finally {
1701
1728
  if (mcpBridge) await mcpBridge.disconnect().catch(() => {
1702
- logger_default.debug("MCP bridge cleanup completed");
1729
+ logger.debug("MCP bridge cleanup completed");
1703
1730
  });
1704
1731
  if (mcpProcess) await stopFilesystemMcpServer(mcpProcess).catch(() => {
1705
- logger_default.debug("MCP server cleanup completed");
1732
+ logger.debug("MCP server cleanup completed");
1706
1733
  });
1707
1734
  if (client) {
1708
1735
  client.disconnect();
1709
- logger_default.debug("Agent client disconnected");
1736
+ logger.debug("Agent client disconnected");
1710
1737
  }
1711
1738
  }
1712
1739
  }
1713
-
1714
1740
  //#endregion
1715
1741
  export { executeScan };
1716
- //# sourceMappingURL=scanner-Dyw21Wg_.js.map
1742
+
1743
+ //# sourceMappingURL=scanner-J8CA3LsV.js.map