@testmuai/kane-cli 0.8.3 → 0.8.5

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 (186) hide show
  1. package/dist/{ChatSurface-FJSO3IKR.js → ChatSurface-HAIVTS4J.js} +1 -1
  2. package/dist/{ChromeProfilePicker-NTZ2RN3L.js → ChromeProfilePicker-5ILSVC2K.js} +1 -1
  3. package/dist/{CliFeedbackPrompt-BCHUH24C.js → CliFeedbackPrompt-LFKEYMKP.js} +1 -1
  4. package/dist/{CliUploadProgress-QVAJJRUW.js → CliUploadProgress-Y7ITY2I7.js} +1 -1
  5. package/dist/{ConfigView-LAKAQN7O.js → ConfigView-OECNNCXC.js} +1 -1
  6. package/dist/EvidenceViewOffer-FODRAS6Z.js +2 -0
  7. package/dist/FolderPicker-5U3RHHBE.js +2 -0
  8. package/dist/{InfoBox-46C7AHDE.js → InfoBox-HWMHNWPM.js} +1 -1
  9. package/dist/{LinksBox-KFJXZDUJ.js → LinksBox-TAGYCFFO.js} +1 -1
  10. package/dist/{ProfilesView-FV3KFVBX.js → ProfilesView-QJBR3RCM.js} +1 -1
  11. package/dist/{ProjectPicker-MCH35VEF.js → ProjectPicker-PP75ILZU.js} +1 -1
  12. package/dist/{SaveSessionPrompt-RXHP3YW6.js → SaveSessionPrompt-UCRET3II.js} +1 -1
  13. package/dist/SingleShotApp-XWOPGLKZ.js +2 -0
  14. package/dist/{SummaryBox-33K2MMUW.js → SummaryBox-SLM3OFS2.js} +1 -1
  15. package/dist/TestMdRunView-6BY3IUH5.js +2 -0
  16. package/dist/TestrunEvidenceTable-PTIBYAXO.js +2 -0
  17. package/dist/{WhoamiView-HUPBB5AQ.js → WhoamiView-WPHMNYUV.js} +1 -1
  18. package/dist/{app-download-3O7NJNGG.js → app-download-GYQYLGT3.js} +1 -1
  19. package/dist/{auth-OMWFVDL2.js → auth-3DLNMZC2.js} +1 -1
  20. package/dist/binary-XJ3RF3VO.js +2 -0
  21. package/dist/{bind-NXXKFJMA.js → bind-2N4Q6YKH.js} +2 -2
  22. package/dist/{bootstrap-MMRPAHWE.js → bootstrap-5IHKW5SE.js} +1 -1
  23. package/dist/bridge-LOBTHY3P.js +2 -0
  24. package/dist/{changelog-VZ5HFHYM.js → changelog-WCCTI47M.js} +1 -1
  25. package/dist/{chunk-4G4RWARU.js → chunk-2K2BX23I.js} +1 -1
  26. package/dist/{chunk-SQDKYSWT.js → chunk-2WSOPZJU.js} +1 -1
  27. package/dist/{chunk-ITTZYA2G.js → chunk-35EUIBYJ.js} +1 -1
  28. package/dist/chunk-3AJ3QSF5.js +15 -0
  29. package/dist/{chunk-AVH3BEEU.js → chunk-4D3DNCQY.js} +1 -1
  30. package/dist/{chunk-5OVEBP4D.js → chunk-4UMQDH52.js} +1 -1
  31. package/dist/{chunk-CJJXT5DO.js → chunk-5GUD3CIH.js} +1 -1
  32. package/dist/{chunk-KZVEFBH5.js → chunk-5NSYHRDN.js} +1 -1
  33. package/dist/{chunk-DVYO4CR2.js → chunk-5S46D5AJ.js} +1 -1
  34. package/dist/{chunk-CDB3SYZG.js → chunk-66BSTNLD.js} +1 -1
  35. package/dist/{chunk-2N4SZOWN.js → chunk-6BTZ2Q4P.js} +1 -1
  36. package/dist/{chunk-CJP7RX3E.js → chunk-6DTWVLSJ.js} +1 -1
  37. package/dist/{chunk-XO45NGSN.js → chunk-7JUUNZQP.js} +1 -1
  38. package/dist/chunk-7PADFQ5S.js +71 -0
  39. package/dist/{chunk-WMMJXI5O.js → chunk-AJPLHW4T.js} +1 -1
  40. package/dist/{chunk-5BVOF4UW.js → chunk-AMULIFC5.js} +1 -1
  41. package/dist/{chunk-EBJD2V4Z.js → chunk-BAL7E4OH.js} +1 -1
  42. package/dist/chunk-BG66IAO6.js +19 -0
  43. package/dist/{chunk-3S5DDQLP.js → chunk-BJHII5SD.js} +1 -1
  44. package/dist/chunk-BVKDHHPK.js +5 -0
  45. package/dist/chunk-CCUGKBIH.js +2 -0
  46. package/dist/{chunk-2ERQYYSJ.js → chunk-CGYSFLM2.js} +1 -1
  47. package/dist/{chunk-LP3BSP74.js → chunk-CNNJ4U2L.js} +1 -1
  48. package/dist/{chunk-FPAJURPL.js → chunk-DCUT3GJA.js} +1 -1
  49. package/dist/{chunk-VK3NU742.js → chunk-DEZ7CXGM.js} +1 -1
  50. package/dist/chunk-DJ7T7BMV.js +2 -0
  51. package/dist/{chunk-TRVB7RSW.js → chunk-E3BXNQYE.js} +1 -1
  52. package/dist/{chunk-DN42IM2Z.js → chunk-EFRJNPBZ.js} +2 -2
  53. package/dist/chunk-EKCGZXZE.js +2 -0
  54. package/dist/{chunk-2ZDXNTZT.js → chunk-FDWEL5HR.js} +1 -1
  55. package/dist/chunk-FRSHEJUS.js +2 -0
  56. package/dist/{chunk-WCF2Z4SE.js → chunk-FTZPWXF7.js} +1 -1
  57. package/dist/{chunk-IEOHAHZO.js → chunk-G4AFOZKU.js} +1 -1
  58. package/dist/{chunk-AF572MQG.js → chunk-GYF4CH62.js} +3 -3
  59. package/dist/{chunk-GR35ZFM2.js → chunk-GZ4X53ZA.js} +2 -2
  60. package/dist/{chunk-JANVTG62.js → chunk-HFCDUFV3.js} +1 -1
  61. package/dist/{chunk-6G5YKTVN.js → chunk-HQWLSA5M.js} +1 -1
  62. package/dist/{chunk-DJR3M7XO.js → chunk-JJWQUQJ2.js} +1 -1
  63. package/dist/chunk-JN2DP4R2.js +37 -0
  64. package/dist/{chunk-37ZWKLEN.js → chunk-JRQKUQWL.js} +1 -1
  65. package/dist/chunk-K2QV7FGP.js +2 -0
  66. package/dist/{chunk-7YZMUTJA.js → chunk-K7UYWAZH.js} +1 -1
  67. package/dist/chunk-KBMQGNKO.js +26 -0
  68. package/dist/{chunk-NWJOPZ7P.js → chunk-KWKUMBHS.js} +2 -2
  69. package/dist/{chunk-YJNGBZ42.js → chunk-KX2GOJ4C.js} +2 -2
  70. package/dist/{chunk-KOMKHFC4.js → chunk-LA2EMSHE.js} +1 -1
  71. package/dist/{chunk-LSZVSYAP.js → chunk-M335FQYJ.js} +2 -2
  72. package/dist/{chunk-LNQCZ5DS.js → chunk-MJ56GUKS.js} +1 -1
  73. package/dist/{chunk-NVGM5ISX.js → chunk-MUGMUKSZ.js} +1 -1
  74. package/dist/{chunk-ZNNRCUHH.js → chunk-NHOHQBIF.js} +1 -1
  75. package/dist/{chunk-3MFTTLOF.js → chunk-NLECZCMZ.js} +1 -1
  76. package/dist/{chunk-QJTXNQV5.js → chunk-NYSMQ7UY.js} +1 -1
  77. package/dist/{chunk-NNCMMV6P.js → chunk-O3AY6JHJ.js} +29 -23
  78. package/dist/{chunk-IVYXXZEE.js → chunk-OWTEHU6B.js} +1 -1
  79. package/dist/{chunk-6IA6QMPH.js → chunk-P7YZ3PU3.js} +1 -1
  80. package/dist/{chunk-UBTNWAKK.js → chunk-PB3GADUD.js} +1 -1
  81. package/dist/{chunk-APETOVZK.js → chunk-PCOSE5SW.js} +2 -2
  82. package/dist/{chunk-HJ6AXOCR.js → chunk-PEI2566X.js} +1 -1
  83. package/dist/{chunk-LCU2P3CH.js → chunk-PQUMOFT5.js} +1 -1
  84. package/dist/chunk-PUFJEU46.js +2 -0
  85. package/dist/{chunk-IWWQTXGK.js → chunk-PWYEOBXV.js} +1 -1
  86. package/dist/chunk-Q6JHBDW2.js +2 -0
  87. package/dist/chunk-R7OGNE3W.js +2 -0
  88. package/dist/{chunk-5CKQTZMG.js → chunk-RY6TFVAX.js} +1 -1
  89. package/dist/{chunk-GIQURCTO.js → chunk-T3XDMR5B.js} +1 -1
  90. package/dist/{chunk-ZH64GOBG.js → chunk-T5LKD2OB.js} +1 -1
  91. package/dist/{chunk-KGSVOTLG.js → chunk-TCK3QMKY.js} +1 -1
  92. package/dist/chunk-TJZMYU2W.js +2 -0
  93. package/dist/{chunk-NXXJ56QA.js → chunk-TYI4MLFJ.js} +1 -1
  94. package/dist/chunk-ULGZPRKU.js +2 -0
  95. package/dist/{chunk-BRIEBB2U.js → chunk-UOMRMCMI.js} +1 -1
  96. package/dist/{chunk-TUTDSX7T.js → chunk-UX3KPYTI.js} +1 -1
  97. package/dist/chunk-V444REBC.js +11 -0
  98. package/dist/{chunk-DSXSU5MH.js → chunk-VT2XNEOD.js} +4 -4
  99. package/dist/{chunk-L5LI2JF4.js → chunk-VZ7KXRXB.js} +11 -11
  100. package/dist/{chunk-4FQI643D.js → chunk-W27F2NWA.js} +1 -1
  101. package/dist/{chunk-CVCVBQP6.js → chunk-WLOGO44E.js} +1 -1
  102. package/dist/chunk-WYST42WI.js +7 -0
  103. package/dist/{chunk-XMYCRE5K.js → chunk-YFLKS4UV.js} +3 -3
  104. package/dist/{chunk-SPQPOUUR.js → chunk-Z2T7E5HM.js} +2 -2
  105. package/dist/{chunk-IHAHCFFG.js → chunk-ZFZ7YXEU.js} +1 -1
  106. package/dist/{chunk-SA2LQSYP.js → chunk-ZIRMSWKS.js} +1 -1
  107. package/dist/{chunk-KHU7C6EE.js → chunk-ZKSN2SJ7.js} +1 -1
  108. package/dist/{chunk-ZPDM6FO7.js → chunk-ZSXDZI56.js} +2 -2
  109. package/dist/{config-OTUKOTHM.js → config-OKTAPFOT.js} +1 -1
  110. package/dist/cover-cmd-7JILZJUK.js +3 -0
  111. package/dist/{credentials-A3RU25MJ.js → credentials-SO3DSQEM.js} +1 -1
  112. package/dist/{deps-bundle-RIBEQC2R.js → deps-bundle-FRM65BQO.js} +1 -1
  113. package/dist/{deps-resolve-7SWSUDRX.js → deps-resolve-RPZORKUN.js} +1 -1
  114. package/dist/{dispatch-RHSWJJLC.js → dispatch-OZRMWY25.js} +1 -1
  115. package/dist/doctor-VWGEQYBB.js +2 -0
  116. package/dist/evidence-5AUZMKE3.js +2 -0
  117. package/dist/evidence-presentation-XF23B7F2.js +2 -0
  118. package/dist/{evolve-cmd-FFF3F3HO.js → evolve-cmd-TWYJL4EG.js} +1 -1
  119. package/dist/{explain-cmd-3GEKR7O5.js → explain-cmd-2TKO7GRW.js} +1 -1
  120. package/dist/{extract-bind-VIPNGK2H.js → extract-bind-EW7XUDLQ.js} +2 -2
  121. package/dist/{extract-cmd-5J47Q4XU.js → extract-cmd-HOVGMBGM.js} +1 -1
  122. package/dist/{gaps-cmd-WPCJPLGB.js → gaps-cmd-3ZX3PZF4.js} +1 -1
  123. package/dist/{generate-headless-AJI2OVRG.js → generate-headless-FYTJULPG.js} +2 -2
  124. package/dist/index.js +168 -88
  125. package/dist/{ingest-cmd-2LK7DWDW.js → ingest-cmd-RJLTFNMN.js} +1 -1
  126. package/dist/install-46S4VOZ4.js +2 -0
  127. package/dist/{interactive-bind-PI3HY623.js → interactive-bind-PSEYAL54.js} +3 -3
  128. package/dist/{list-commands-7Y5XV5FK.js → list-commands-2SVSEAP6.js} +1 -1
  129. package/dist/login-flow-U43QVFPH.js +2 -0
  130. package/dist/{mobile-prompts-O5ALU3QU.js → mobile-prompts-T6HZ2YLY.js} +1 -1
  131. package/dist/{persist-recorded-session-TKSU4HOA.js → persist-recorded-session-O2NCYTSD.js} +1 -1
  132. package/dist/pipeline-BHEA7ODT.js +2 -0
  133. package/dist/prepare-target-27UN4KNO.js +2 -0
  134. package/dist/{reconcile-cmd-VHEW2DY5.js → reconcile-cmd-FU3JIHTO.js} +1 -1
  135. package/dist/{reconcile-deps-UJ6KVUIS.js → reconcile-deps-SUKZA2FL.js} +2 -2
  136. package/dist/{reconcile-engine-NUQJSIFX.js → reconcile-engine-ILL4M3NW.js} +1 -1
  137. package/dist/{recording-banner-GO2PP53Y.js → recording-banner-5VXVKCV4.js} +1 -1
  138. package/dist/{registry-KYPVINS2.js → registry-BKV3EDTK.js} +1 -1
  139. package/dist/replay-policy-CVQ6OJX5.js +2 -0
  140. package/dist/{require-project-folder-NUQMH224.js → require-project-folder-2IO6IX5W.js} +1 -1
  141. package/dist/resolve-run-intent-ZML3HKG7.js +2 -0
  142. package/dist/{resolver-HHLYRR5W.js → resolver-CBTWTZZR.js} +1 -1
  143. package/dist/run-EXIYK6PU.js +2 -0
  144. package/dist/{run-OPLOL3PZ.js → run-R7GND73C.js} +1 -1
  145. package/dist/{run-test-md-3BA56ZYF.js → run-test-md-664ASWRQ.js} +2 -2
  146. package/dist/{skill-installer-O7JYVZXD.js → skill-installer-QLQK4JJE.js} +1 -1
  147. package/dist/{spawner-OZ4OE44T.js → spawner-ANLF7OX3.js} +1 -1
  148. package/dist/tcg-generate-VBC5ODDI.js +2 -0
  149. package/dist/{testmd-actions-YJ7O43Z6.js → testmd-actions-QZD3N4EH.js} +1 -1
  150. package/dist/token-refresh-PIUX5OFA.js +2 -0
  151. package/dist/{types-6E2HTDKJ.js → types-VYEOJ6U2.js} +1 -1
  152. package/dist/{validate-basic-HWYK3CU6.js → validate-basic-D7IJUFUQ.js} +1 -1
  153. package/dist/{verdicts-KFPMRADV.js → verdicts-EO5TZ5BW.js} +1 -1
  154. package/dist/{version-check-3ECNG5V2.js → version-check-JRLPWQ6T.js} +1 -1
  155. package/dist/{walk-session-MZCMXVZB.js → walk-session-IODOH7QU.js} +1 -1
  156. package/dist/{with-telemetry-Q6V6THIF.js → with-telemetry-ASNQQBGP.js} +1 -1
  157. package/package.json +11 -11
  158. package/dist/EvidenceViewOffer-POKUWAPS.js +0 -2
  159. package/dist/FolderPicker-GR6FZMUJ.js +0 -2
  160. package/dist/HelpView-JFFVHQAW.js +0 -2
  161. package/dist/SingleShotApp-BK5QNXGG.js +0 -2
  162. package/dist/TestMdRunView-AT26LOSG.js +0 -2
  163. package/dist/bridge-UH32UGR5.js +0 -2
  164. package/dist/chunk-5NQ3TI4S.js +0 -13
  165. package/dist/chunk-A5FFLJVL.js +0 -26
  166. package/dist/chunk-C5UNZ6ZY.js +0 -2
  167. package/dist/chunk-D5VYMHSO.js +0 -2
  168. package/dist/chunk-D6FYCAIA.js +0 -2
  169. package/dist/chunk-DOG7S7R6.js +0 -2
  170. package/dist/chunk-DXI5TXNL.js +0 -19
  171. package/dist/chunk-IFIXY3YG.js +0 -2
  172. package/dist/chunk-IOD3HQVW.js +0 -11
  173. package/dist/chunk-RUCSRS4C.js +0 -5
  174. package/dist/chunk-ZUYPPPC5.js +0 -66
  175. package/dist/cover-cmd-HDZZWJXG.js +0 -3
  176. package/dist/doctor-XP7YDE3J.js +0 -2
  177. package/dist/evidence-K7R7OG2K.js +0 -2
  178. package/dist/login-flow-Z45G34DM.js +0 -2
  179. package/dist/pipeline-HZUV7IMT.js +0 -2
  180. package/dist/prepare-target-DBYKQ7HW.js +0 -2
  181. package/dist/replay-policy-6USQBT3E.js +0 -2
  182. package/dist/resolve-run-intent-H3HX5KUC.js +0 -7
  183. package/dist/run-67ONKMGR.js +0 -2
  184. package/dist/tcg-generate-EG2MXRJ7.js +0 -2
  185. package/dist/token-refresh-K7CANKFQ.js +0 -2
  186. /package/dist/{lifecycle-cmd-HO5VL7AM.js → lifecycle-cmd-O2324GN6.js} +0 -0
@@ -0,0 +1,26 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as pi,b as Us}from"./chunk-3MSXQU2C.js";import{a as ua,b as da,c as fa,d as Ma,e as ja}from"./chunk-G4AFOZKU.js";import{a as Cc}from"./chunk-6BTZ2Q4P.js";import{a as lc,b as Ii,c as eo,d as uc,e as to,f as dc,h as fc,i as pc,j as mc,k as gc,l as hc,m as Ut,n as bc,o as vc,p as xc,q as ro,r as yc,s as Ai,t as Sc,u as wc,v as Tc}from"./chunk-T5LKD2OB.js";import{b as Rc,c as kc}from"./chunk-T3XDMR5B.js";import{A as rc,B as nc,C as oc,D as ic,G as Ft,J as ac,a as an,b as pa,c as ma,e as xa,f as ya,g as Sa,h as Pa,i as Da,j as La,k as Jn,l as Oa,n as ki,o as za,p as Ci,r as Ka,s as Ya,t as Ja,u as Qa,w as Za,x as ec,y as tc,z as Ei}from"./chunk-7PADFQ5S.js";import{c as Ua,d as qa,n as cc}from"./chunk-KWKUMBHS.js";import{a as Ec,b as _i}from"./chunk-RY6TFVAX.js";import{b as Fa,t as Ha}from"./chunk-DEZ7CXGM.js";import{c as Xa}from"./chunk-PUFJEU46.js";import{a as Zn}from"./chunk-BAL7E4OH.js";import{c as sc}from"./chunk-BVKDHHPK.js";import{a as _a}from"./chunk-K2QV7FGP.js";import{E as Ra,K as ka,L as Ti,M as Ca,N as Ea}from"./chunk-3AJ3QSF5.js";import{c as Ia,e as Aa}from"./chunk-TJZMYU2W.js";import{a as qs,b as mi,c as lr,d as Wn,e as Ba,f as $a}from"./chunk-PWYEOBXV.js";import{a as Na}from"./chunk-TCK3QMKY.js";import{c as Yn}from"./chunk-CGYSFLM2.js";import{a as Ws,b as bi,c as Xs,d as Ta,e as Va,g as Ga}from"./chunk-JJWQUQJ2.js";import{e as wa}from"./chunk-OWTEHU6B.js";import{a as Vr}from"./chunk-6DTWVLSJ.js";import{a as Qn,b as Wa,c as Ri}from"./chunk-NLECZCMZ.js";import{a as gi}from"./chunk-5Y2G4NC7.js";import{a as va}from"./chunk-JRQKUQWL.js";import{a as wi,b as ia,e as sa,f as aa,g as ca,h as la}from"./chunk-2K2BX23I.js";import{c as Qs,e as Zs,g as ea}from"./chunk-KX2GOJ4C.js";import{b as Mr}from"./chunk-K7UYWAZH.js";import{b as jr}from"./chunk-E3BXNQYE.js";import{h as ha}from"./chunk-FTZPWXF7.js";import{a as cn}from"./chunk-BPMSNGXQ.js";import{a as Ct,b as Bt,c as ga}from"./chunk-VE3SUJMA.js";import{a as ba}from"./chunk-FDWEL5HR.js";import{a as Xn,d as on,e as zn}from"./chunk-BG66IAO6.js";import{j as Si}from"./chunk-Z2T7E5HM.js";import{d as Ks}from"./chunk-MSGW4JDG.js";import{a as Kn,b as Or}from"./chunk-TZXXJWHA.js";import{i as ta,m as Vt,n as sn,o as ur,p as Nr}from"./chunk-56PAQAX5.js";import{a as na,b as wr,c as oa}from"./chunk-4D3DNCQY.js";import{h as ra}from"./chunk-TAOHYWEO.js";import{b as vi}from"./chunk-NYSMQ7UY.js";import{c as xi}from"./chunk-MJ56GUKS.js";import{a as jt}from"./chunk-ZIRMSWKS.js";import{a as nn,b as $r}from"./chunk-UOMRMCMI.js";import{a as Js}from"./chunk-ZFZ7YXEU.js";import{a as Ys}from"./chunk-PB3GADUD.js";import{a as Ge}from"./chunk-WLOGO44E.js";import{a as yi}from"./chunk-NLCCBXXV.js";import{a as zs}from"./chunk-RZ4F3BHX.js";import{a as Vs,d as Yt,e as rn}from"./chunk-EYOCNMUM.js";import{a as Gn}from"./chunk-4UMQDH52.js";import{a as hi}from"./chunk-NHOHQBIF.js";import{a as Jt,b as Hs}from"./chunk-PQUMOFT5.js";import{a as xt,b as mt,j as di,n as Fs,o as fi,x as l}from"./chunk-CCUGKBIH.js";import{b as Gs}from"./chunk-DFS4RMVP.js";import{a as G}from"./chunk-HCBYKLMW.js";import{a as b,b as a,i as Be,j as js,k as Br}from"./chunk-C44QQJR4.js";import{a as Ee}from"./chunk-6YGTRKDT.js";import{c as re,e as D}from"./chunk-UR6MHSHU.js";var Ur=re((xv,_c)=>{"use strict";var rp="2.0.0",np=Number.MAX_SAFE_INTEGER||9007199254740991,op=16,ip=250,sp=["major","premajor","minor","preminor","patch","prepatch","prerelease"];_c.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:op,MAX_SAFE_BUILD_LENGTH:ip,MAX_SAFE_INTEGER:np,RELEASE_TYPES:sp,SEMVER_SPEC_VERSION:rp,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var ln=re((yv,Pc)=>{"use strict";var ap=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};Pc.exports=ap});var qr=re((qt,Dc)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:Pi,MAX_SAFE_BUILD_LENGTH:cp,MAX_LENGTH:lp}=Ur(),up=ln();qt=Dc.exports={};var dp=qt.re=[],fp=qt.safeRe=[],W=qt.src=[],pp=qt.safeSrc=[],X=qt.t={},mp=0,Di="[a-zA-Z0-9-]",gp=[["\\s",1],["\\d",lp],[Di,cp]],hp=e=>{for(let[t,r]of gp)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},se=(e,t,r)=>{let n=hp(t),o=mp++;up(e,o,t),X[e]=o,W[o]=t,pp[o]=n,dp[o]=new RegExp(t,r?"g":void 0),fp[o]=new RegExp(n,r?"g":void 0)};se("NUMERICIDENTIFIER","0|[1-9]\\d*");se("NUMERICIDENTIFIERLOOSE","\\d+");se("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${Di}*`);se("MAINVERSION",`(${W[X.NUMERICIDENTIFIER]})\\.(${W[X.NUMERICIDENTIFIER]})\\.(${W[X.NUMERICIDENTIFIER]})`);se("MAINVERSIONLOOSE",`(${W[X.NUMERICIDENTIFIERLOOSE]})\\.(${W[X.NUMERICIDENTIFIERLOOSE]})\\.(${W[X.NUMERICIDENTIFIERLOOSE]})`);se("PRERELEASEIDENTIFIER",`(?:${W[X.NONNUMERICIDENTIFIER]}|${W[X.NUMERICIDENTIFIER]})`);se("PRERELEASEIDENTIFIERLOOSE",`(?:${W[X.NONNUMERICIDENTIFIER]}|${W[X.NUMERICIDENTIFIERLOOSE]})`);se("PRERELEASE",`(?:-(${W[X.PRERELEASEIDENTIFIER]}(?:\\.${W[X.PRERELEASEIDENTIFIER]})*))`);se("PRERELEASELOOSE",`(?:-?(${W[X.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${W[X.PRERELEASEIDENTIFIERLOOSE]})*))`);se("BUILDIDENTIFIER",`${Di}+`);se("BUILD",`(?:\\+(${W[X.BUILDIDENTIFIER]}(?:\\.${W[X.BUILDIDENTIFIER]})*))`);se("FULLPLAIN",`v?${W[X.MAINVERSION]}${W[X.PRERELEASE]}?${W[X.BUILD]}?`);se("FULL",`^${W[X.FULLPLAIN]}$`);se("LOOSEPLAIN",`[v=\\s]*${W[X.MAINVERSIONLOOSE]}${W[X.PRERELEASELOOSE]}?${W[X.BUILD]}?`);se("LOOSE",`^${W[X.LOOSEPLAIN]}$`);se("GTLT","((?:<|>)?=?)");se("XRANGEIDENTIFIERLOOSE",`${W[X.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);se("XRANGEIDENTIFIER",`${W[X.NUMERICIDENTIFIER]}|x|X|\\*`);se("XRANGEPLAIN",`[v=\\s]*(${W[X.XRANGEIDENTIFIER]})(?:\\.(${W[X.XRANGEIDENTIFIER]})(?:\\.(${W[X.XRANGEIDENTIFIER]})(?:${W[X.PRERELEASE]})?${W[X.BUILD]}?)?)?`);se("XRANGEPLAINLOOSE",`[v=\\s]*(${W[X.XRANGEIDENTIFIERLOOSE]})(?:\\.(${W[X.XRANGEIDENTIFIERLOOSE]})(?:\\.(${W[X.XRANGEIDENTIFIERLOOSE]})(?:${W[X.PRERELEASELOOSE]})?${W[X.BUILD]}?)?)?`);se("XRANGE",`^${W[X.GTLT]}\\s*${W[X.XRANGEPLAIN]}$`);se("XRANGELOOSE",`^${W[X.GTLT]}\\s*${W[X.XRANGEPLAINLOOSE]}$`);se("COERCEPLAIN",`(^|[^\\d])(\\d{1,${Pi}})(?:\\.(\\d{1,${Pi}}))?(?:\\.(\\d{1,${Pi}}))?`);se("COERCE",`${W[X.COERCEPLAIN]}(?:$|[^\\d])`);se("COERCEFULL",W[X.COERCEPLAIN]+`(?:${W[X.PRERELEASE]})?(?:${W[X.BUILD]})?(?:$|[^\\d])`);se("COERCERTL",W[X.COERCE],!0);se("COERCERTLFULL",W[X.COERCEFULL],!0);se("LONETILDE","(?:~>?)");se("TILDETRIM",`(\\s*)${W[X.LONETILDE]}\\s+`,!0);qt.tildeTrimReplace="$1~";se("TILDE",`^${W[X.LONETILDE]}${W[X.XRANGEPLAIN]}$`);se("TILDELOOSE",`^${W[X.LONETILDE]}${W[X.XRANGEPLAINLOOSE]}$`);se("LONECARET","(?:\\^)");se("CARETTRIM",`(\\s*)${W[X.LONECARET]}\\s+`,!0);qt.caretTrimReplace="$1^";se("CARET",`^${W[X.LONECARET]}${W[X.XRANGEPLAIN]}$`);se("CARETLOOSE",`^${W[X.LONECARET]}${W[X.XRANGEPLAINLOOSE]}$`);se("COMPARATORLOOSE",`^${W[X.GTLT]}\\s*(${W[X.LOOSEPLAIN]})$|^$`);se("COMPARATOR",`^${W[X.GTLT]}\\s*(${W[X.FULLPLAIN]})$|^$`);se("COMPARATORTRIM",`(\\s*)${W[X.GTLT]}\\s*(${W[X.LOOSEPLAIN]}|${W[X.XRANGEPLAIN]})`,!0);qt.comparatorTrimReplace="$1$2$3";se("HYPHENRANGE",`^\\s*(${W[X.XRANGEPLAIN]})\\s+-\\s+(${W[X.XRANGEPLAIN]})\\s*$`);se("HYPHENRANGELOOSE",`^\\s*(${W[X.XRANGEPLAINLOOSE]})\\s+-\\s+(${W[X.XRANGEPLAINLOOSE]})\\s*$`);se("STAR","(<|>)?=?\\s*\\*");se("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");se("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var no=re((Sv,Lc)=>{"use strict";var bp=Object.freeze({loose:!0}),vp=Object.freeze({}),xp=e=>e?typeof e!="object"?bp:e:vp;Lc.exports=xp});var Li=re((wv,Oc)=>{"use strict";var Bc=/^[0-9]+$/,$c=(e,t)=>{if(typeof e=="number"&&typeof t=="number")return e===t?0:e<t?-1:1;let r=Bc.test(e),n=Bc.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1},yp=(e,t)=>$c(t,e);Oc.exports={compareIdentifiers:$c,rcompareIdentifiers:yp}});var et=re((Tv,Mc)=>{"use strict";var oo=ln(),{MAX_LENGTH:Nc,MAX_SAFE_INTEGER:io}=Ur(),{safeRe:so,t:ao}=qr(),Sp=no(),{compareIdentifiers:Bi}=Li(),wp=(e,t)=>{let r=t.split(".");if(r.length>e.length)return!1;for(let n=0;n<r.length;n++)if(Bi(e[n],r[n])!==0)return!1;return!0},$i=class e{constructor(t,r){if(r=Sp(r),t instanceof e){if(t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease)return t;t=t.version}else if(typeof t!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>Nc)throw new TypeError(`version is longer than ${Nc} characters`);oo("SemVer",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=t.trim().match(r.loose?so[ao.LOOSE]:so[ao.FULL]);if(!n)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>io||this.major<0)throw new TypeError("Invalid major version");if(this.minor>io||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>io||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(o=>{if(/^[0-9]+$/.test(o)){let i=+o;if(i>=0&&i<io)return i}return o}):this.prerelease=[],this.build=n[5]?n[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(oo("SemVer.compare",this.version,this.options,t),!(t instanceof e)){if(typeof t=="string"&&t===this.version)return 0;t=new e(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(t){return t instanceof e||(t=new e(t,this.options)),this.major<t.major?-1:this.major>t.major?1:this.minor<t.minor?-1:this.minor>t.minor?1:this.patch<t.patch?-1:this.patch>t.patch?1:0}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{let n=this.prerelease[r],o=t.prerelease[r];if(oo("prerelease compare",r,n,o),n===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(n===void 0)return-1;if(n===o)continue;return Bi(n,o)}while(++r)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let r=0;do{let n=this.build[r],o=t.build[r];if(oo("build compare",r,n,o),n===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(n===void 0)return-1;if(n===o)continue;return Bi(n,o)}while(++r)}inc(t,r,n){if(t.startsWith("pre")){if(!r&&n===!1)throw new Error("invalid increment argument: identifier is empty");if(r){let o=`-${r}`.match(this.options.loose?so[ao.PRERELEASELOOSE]:so[ao.PRERELEASE]);if(!o||o[1]!==r)throw new Error(`invalid identifier: ${r}`)}}switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,n),this.inc("pre",r,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r,n),this.inc("pre",r,n);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let o=Number(n)?1:0;if(this.prerelease.length===0)this.prerelease=[o];else{let i=this.prerelease.length;for(;--i>=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);if(i===-1){if(r===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(o)}}if(r){let i=[r,o];if(n===!1&&(i=[r]),wp(this.prerelease,r)){let s=this.prerelease[r.split(".").length];isNaN(s)&&(this.prerelease=i)}else this.prerelease=i}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};Mc.exports=$i});var dr=re((Rv,Vc)=>{"use strict";var jc=et(),Tp=(e,t,r=!1)=>{if(e instanceof jc)return e;try{return new jc(e,t)}catch(n){if(!r)return null;throw n}};Vc.exports=Tp});var Uc=re((kv,Fc)=>{"use strict";var Rp=dr(),kp=(e,t)=>{let r=Rp(e,t);return r?r.version:null};Fc.exports=kp});var Hc=re((Cv,qc)=>{"use strict";var Cp=dr(),Ep=(e,t)=>{let r=Cp(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null};qc.exports=Ep});var Xc=re((Ev,Wc)=>{"use strict";var Gc=et(),Ip=(e,t,r,n,o)=>{typeof r=="string"&&(o=n,n=r,r=void 0);try{return new Gc(e instanceof Gc?e.version:e,r).inc(t,n,o).version}catch{return null}};Wc.exports=Ip});var Yc=re((Iv,Kc)=>{"use strict";var zc=dr(),Ap=(e,t)=>{let r=zc(e,null,!0),n=zc(t,null,!0),o=r.compare(n);if(o===0)return null;let i=o>0,s=i?r:n,u=i?n:r,f=!!s.prerelease.length;if(!!u.prerelease.length&&!f){if(!u.patch&&!u.minor)return"major";if(u.compareMain(s)===0)return u.minor&&!u.patch?"minor":"patch"}let w=f?"pre":"";return r.major!==n.major?w+"major":r.minor!==n.minor?w+"minor":r.patch!==n.patch?w+"patch":"prerelease"};Kc.exports=Ap});var Qc=re((Av,Jc)=>{"use strict";var _p=et(),Pp=(e,t)=>new _p(e,t).major;Jc.exports=Pp});var el=re((_v,Zc)=>{"use strict";var Dp=et(),Lp=(e,t)=>new Dp(e,t).minor;Zc.exports=Lp});var rl=re((Pv,tl)=>{"use strict";var Bp=et(),$p=(e,t)=>new Bp(e,t).patch;tl.exports=$p});var ol=re((Dv,nl)=>{"use strict";var Op=dr(),Np=(e,t)=>{let r=Op(e,t);return r&&r.prerelease.length?r.prerelease:null};nl.exports=Np});var Et=re((Lv,sl)=>{"use strict";var il=et(),Mp=(e,t,r)=>new il(e,r).compare(new il(t,r));sl.exports=Mp});var cl=re((Bv,al)=>{"use strict";var jp=Et(),Vp=(e,t,r)=>jp(t,e,r);al.exports=Vp});var ul=re(($v,ll)=>{"use strict";var Fp=Et(),Up=(e,t)=>Fp(e,t,!0);ll.exports=Up});var co=re((Ov,fl)=>{"use strict";var dl=et(),qp=(e,t,r)=>{let n=new dl(e,r),o=new dl(t,r);return n.compare(o)||n.compareBuild(o)};fl.exports=qp});var ml=re((Nv,pl)=>{"use strict";var Hp=co(),Gp=(e,t)=>e.sort((r,n)=>Hp(r,n,t));pl.exports=Gp});var hl=re((Mv,gl)=>{"use strict";var Wp=co(),Xp=(e,t)=>e.sort((r,n)=>Wp(n,r,t));gl.exports=Xp});var un=re((jv,bl)=>{"use strict";var zp=Et(),Kp=(e,t,r)=>zp(e,t,r)>0;bl.exports=Kp});var lo=re((Vv,vl)=>{"use strict";var Yp=Et(),Jp=(e,t,r)=>Yp(e,t,r)<0;vl.exports=Jp});var Oi=re((Fv,xl)=>{"use strict";var Qp=Et(),Zp=(e,t,r)=>Qp(e,t,r)===0;xl.exports=Zp});var Ni=re((Uv,yl)=>{"use strict";var em=Et(),tm=(e,t,r)=>em(e,t,r)!==0;yl.exports=tm});var uo=re((qv,Sl)=>{"use strict";var rm=Et(),nm=(e,t,r)=>rm(e,t,r)>=0;Sl.exports=nm});var fo=re((Hv,wl)=>{"use strict";var om=Et(),im=(e,t,r)=>om(e,t,r)<=0;wl.exports=im});var Mi=re((Gv,Tl)=>{"use strict";var sm=Oi(),am=Ni(),cm=un(),lm=uo(),um=lo(),dm=fo(),fm=(e,t,r,n)=>{switch(t){case"===":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e===r;case"!==":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e!==r;case"":case"=":case"==":return sm(e,r,n);case"!=":return am(e,r,n);case">":return cm(e,r,n);case">=":return lm(e,r,n);case"<":return um(e,r,n);case"<=":return dm(e,r,n);default:throw new TypeError(`Invalid operator: ${t}`)}};Tl.exports=fm});var kl=re((Wv,Rl)=>{"use strict";var pm=et(),mm=dr(),{safeRe:po,t:mo}=qr(),gm=(e,t)=>{if(e instanceof pm)return e;if(typeof e=="number"&&(e=String(e)),typeof e!="string")return null;t=t||{};let r=null;if(!t.rtl)r=e.match(t.includePrerelease?po[mo.COERCEFULL]:po[mo.COERCE]);else{let f=t.includePrerelease?po[mo.COERCERTLFULL]:po[mo.COERCERTL],g;for(;(g=f.exec(e))&&(!r||r.index+r[0].length!==e.length);)(!r||g.index+g[0].length!==r.index+r[0].length)&&(r=g),f.lastIndex=g.index+g[1].length+g[2].length;f.lastIndex=-1}if(r===null)return null;let n=r[2],o=r[3]||"0",i=r[4]||"0",s=t.includePrerelease&&r[5]?`-${r[5]}`:"",u=t.includePrerelease&&r[6]?`+${r[6]}`:"";return mm(`${n}.${o}.${i}${s}${u}`,t)};Rl.exports=gm});var El=re((Xv,Cl)=>{"use strict";var hm=dr(),bm=Ur(),vm=et(),xm=(e,t,r)=>{if(!bm.RELEASE_TYPES.includes(t))return null;let n=ym(e,r);return n&&Sm(n,t)},ym=(e,t)=>{let r=e instanceof vm?e.version:e;return hm(r,t)},Sm=(e,t)=>{if(wm(t))return e.version;switch(e.prerelease=[],t){case"major":e.minor=0,e.patch=0;break;case"minor":e.patch=0;break}return e.format()},wm=e=>e.startsWith("pre");Cl.exports=xm});var Al=re((zv,Il)=>{"use strict";var ji=class{constructor(){this.max=1e3,this.map=new Map}get(t){let r=this.map.get(t);if(r!==void 0)return this.map.delete(t),this.map.set(t,r),r}delete(t){return this.map.delete(t)}set(t,r){if(!this.delete(t)&&r!==void 0){if(this.map.size>=this.max){let o=this.map.keys().next().value;this.delete(o)}this.map.set(t,r)}return this}};Il.exports=ji});var It=re((Kv,Ll)=>{"use strict";var Tm=/\s+/g,Vi=class e{constructor(t,r){if(r=km(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof Fi)return this.raw=t.value,this.set=[[t]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().replace(Tm," "),this.set=this.raw.split("||").map(n=>this.parseRange(n.trim())).filter(n=>n.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let n=this.set[0];if(this.set=this.set.filter(o=>!Pl(o[0])),this.set.length===0)this.set=[n];else if(this.set.length>1){for(let o of this.set)if(o.length===1&&Bm(o[0])){this.set=[o];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let t=0;t<this.set.length;t++){t>0&&(this.formatted+="||");let r=this.set[t];for(let n=0;n<r.length;n++)n>0&&(this.formatted+=" "),this.formatted+=r[n].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(t){t=t.replace(Lm,"");let n=((this.options.includePrerelease&&Pm)|(this.options.loose&&Dm))+":"+t,o=_l.get(n);if(o)return o;let i=this.options.loose,s=i?gt[tt.HYPHENRANGELOOSE]:gt[tt.HYPHENRANGE];t=t.replace(s,Gm(this.options.includePrerelease)),De("hyphen replace",t),t=t.replace(gt[tt.COMPARATORTRIM],Im),De("comparator trim",t),t=t.replace(gt[tt.TILDETRIM],Am),De("tilde trim",t),t=t.replace(gt[tt.CARETTRIM],_m),De("caret trim",t);let u=t.split(" ").map(p=>$m(p,this.options)).join(" ").split(/\s+/).map(p=>Hm(p,this.options));i&&(u=u.filter(p=>(De("loose invalid filter",p,this.options),!!p.match(gt[tt.COMPARATORLOOSE])))),De("range list",u);let f=new Map,g=u.map(p=>new Fi(p,this.options));for(let p of g){if(Pl(p))return[p];f.set(p.value,p)}f.size>1&&f.has("")&&f.delete("");let w=[...f.values()];return _l.set(n,w),w}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(n=>Dl(n,r)&&t.set.some(o=>Dl(o,r)&&n.every(i=>o.every(s=>i.intersects(s,r)))))}test(t){if(!t)return!1;if(typeof t=="string")try{t=new Cm(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(Wm(this.set[r],t,this.options))return!0;return!1}};Ll.exports=Vi;var Rm=Al(),_l=new Rm,km=no(),Fi=dn(),De=ln(),Cm=et(),{safeRe:gt,src:Em,t:tt,comparatorTrimReplace:Im,tildeTrimReplace:Am,caretTrimReplace:_m}=qr(),{FLAG_INCLUDE_PRERELEASE:Pm,FLAG_LOOSE:Dm}=Ur(),Lm=new RegExp(Em[tt.BUILD],"g"),Pl=e=>e.value==="<0.0.0-0",Bm=e=>e.value==="",Dl=(e,t)=>{let r=!0,n=e.slice(),o=n.pop();for(;r&&n.length;)r=n.every(i=>o.intersects(i,t)),o=n.pop();return r},$m=(e,t)=>(e=e.replace(gt[tt.BUILD],""),De("comp",e,t),e=jm(e,t),De("caret",e),e=Nm(e,t),De("tildes",e),e=Fm(e,t),De("xrange",e),e=qm(e,t),De("stars",e),e),qe=e=>!e||e.toLowerCase()==="x"||e==="*",Om=(e,t,r)=>qe(e)&&!qe(t)||qe(t)&&r&&!qe(r),Nm=(e,t)=>e.trim().split(/\s+/).map(r=>Mm(r,t)).join(" "),Mm=(e,t)=>{let r=t.loose?gt[tt.TILDELOOSE]:gt[tt.TILDE];return e.replace(r,(n,o,i,s,u)=>{De("tilde",e,n,o,i,s,u);let f;return qe(o)?f="":qe(i)?f=`>=${o}.0.0 <${+o+1}.0.0-0`:qe(s)?f=`>=${o}.${i}.0 <${o}.${+i+1}.0-0`:u?(De("replaceTilde pr",u),f=`>=${o}.${i}.${s}-${u} <${o}.${+i+1}.0-0`):f=`>=${o}.${i}.${s} <${o}.${+i+1}.0-0`,De("tilde return",f),f})},jm=(e,t)=>e.trim().split(/\s+/).map(r=>Vm(r,t)).join(" "),Vm=(e,t)=>{De("caret",e,t);let r=t.loose?gt[tt.CARETLOOSE]:gt[tt.CARET],n=t.includePrerelease?"-0":"";return e.replace(r,(o,i,s,u,f)=>{De("caret",e,o,i,s,u,f);let g;return qe(i)?g="":qe(s)?g=`>=${i}.0.0${n} <${+i+1}.0.0-0`:qe(u)?i==="0"?g=`>=${i}.${s}.0${n} <${i}.${+s+1}.0-0`:g=`>=${i}.${s}.0${n} <${+i+1}.0.0-0`:f?(De("replaceCaret pr",f),i==="0"?s==="0"?g=`>=${i}.${s}.${u}-${f} <${i}.${s}.${+u+1}-0`:g=`>=${i}.${s}.${u}-${f} <${i}.${+s+1}.0-0`:g=`>=${i}.${s}.${u}-${f} <${+i+1}.0.0-0`):(De("no pr"),i==="0"?s==="0"?g=`>=${i}.${s}.${u} <${i}.${s}.${+u+1}-0`:g=`>=${i}.${s}.${u} <${i}.${+s+1}.0-0`:g=`>=${i}.${s}.${u} <${+i+1}.0.0-0`),De("caret return",g),g})},Fm=(e,t)=>(De("replaceXRanges",e,t),e.split(/\s+/).map(r=>Um(r,t)).join(" ")),Um=(e,t)=>{e=e.trim();let r=t.loose?gt[tt.XRANGELOOSE]:gt[tt.XRANGE];return e.replace(r,(n,o,i,s,u,f)=>{if(De("xRange",e,n,o,i,s,u,f),Om(i,s,u))return e;let g=qe(i),w=g||qe(s),p=w||qe(u),x=p;return o==="="&&x&&(o=""),f=t.includePrerelease?"-0":"",g?o===">"||o==="<"?n="<0.0.0-0":n="*":o&&x?(w&&(s=0),u=0,o===">"?(o=">=",w?(i=+i+1,s=0,u=0):(s=+s+1,u=0)):o==="<="&&(o="<",w?i=+i+1:s=+s+1),o==="<"&&(f="-0"),n=`${o+i}.${s}.${u}${f}`):w?n=`>=${i}.0.0${f} <${+i+1}.0.0-0`:p&&(n=`>=${i}.${s}.0${f} <${i}.${+s+1}.0-0`),De("xRange return",n),n})},qm=(e,t)=>(De("replaceStars",e,t),e.trim().replace(gt[tt.STAR],"")),Hm=(e,t)=>(De("replaceGTE0",e,t),e.trim().replace(gt[t.includePrerelease?tt.GTE0PRE:tt.GTE0],"")),Gm=e=>(t,r,n,o,i,s,u,f,g,w,p,x)=>(qe(n)?r="":qe(o)?r=`>=${n}.0.0${e?"-0":""}`:qe(i)?r=`>=${n}.${o}.0${e?"-0":""}`:s?r=`>=${r}`:r=`>=${r}${e?"-0":""}`,qe(g)?f="":qe(w)?f=`<${+g+1}.0.0-0`:qe(p)?f=`<${g}.${+w+1}.0-0`:x?f=`<=${g}.${w}.${p}-${x}`:e?f=`<${g}.${w}.${+p+1}-0`:f=`<=${f}`,`${r} ${f}`.trim()),Wm=(e,t,r)=>{for(let n=0;n<e.length;n++)if(!e[n].test(t))return!1;if(t.prerelease.length&&!r.includePrerelease){for(let n=0;n<e.length;n++)if(De(e[n].semver),e[n].semver!==Fi.ANY&&e[n].semver.prerelease.length>0){let o=e[n].semver;if(o.major===t.major&&o.minor===t.minor&&o.patch===t.patch)return!0}return!1}return!0}});var dn=re((Yv,jl)=>{"use strict";var fn=Symbol("SemVer ANY"),Hi=class e{static get ANY(){return fn}constructor(t,r){if(r=Bl(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),qi("comparator",t,r),this.options=r,this.loose=!!r.loose,this.parse(t),this.semver===fn?this.value="":this.value=this.operator+this.semver.version,qi("comp",this)}parse(t){let r=this.options.loose?$l[Ol.COMPARATORLOOSE]:$l[Ol.COMPARATOR],n=t.match(r);if(!n)throw new TypeError(`Invalid comparator: ${t}`);this.operator=n[1]!==void 0?n[1]:"",this.operator==="="&&(this.operator=""),n[2]?this.semver=new Nl(n[2],this.options.loose):this.semver=fn}toString(){return this.value}test(t){if(qi("Comparator.test",t,this.options.loose),this.semver===fn||t===fn)return!0;if(typeof t=="string")try{t=new Nl(t,this.options)}catch{return!1}return Ui(t,this.operator,this.semver,this.options)}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new Ml(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new Ml(this.value,r).test(t.semver):(r=Bl(r),r.includePrerelease&&(this.value==="<0.0.0-0"||t.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||t.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&t.operator.startsWith(">")||this.operator.startsWith("<")&&t.operator.startsWith("<")||this.semver.version===t.semver.version&&this.operator.includes("=")&&t.operator.includes("=")||Ui(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||Ui(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};jl.exports=Hi;var Bl=no(),{safeRe:$l,t:Ol}=qr(),Ui=Mi(),qi=ln(),Nl=et(),Ml=It()});var pn=re((Jv,Vl)=>{"use strict";var Xm=It(),zm=(e,t,r)=>{try{t=new Xm(t,r)}catch{return!1}return t.test(e)};Vl.exports=zm});var Ul=re((Qv,Fl)=>{"use strict";var Km=It(),Ym=(e,t)=>new Km(e,t).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));Fl.exports=Ym});var Hl=re((Zv,ql)=>{"use strict";var Jm=et(),Qm=It(),Zm=(e,t,r)=>{let n=null,o=null,i=null;try{i=new Qm(t,r)}catch{return null}return e.forEach(s=>{i.test(s)&&(!n||o.compare(s)===-1)&&(n=s,o=new Jm(n,r))}),n};ql.exports=Zm});var Wl=re((ex,Gl)=>{"use strict";var eg=et(),tg=It(),rg=(e,t,r)=>{let n=null,o=null,i=null;try{i=new tg(t,r)}catch{return null}return e.forEach(s=>{i.test(s)&&(!n||o.compare(s)===1)&&(n=s,o=new eg(n,r))}),n};Gl.exports=rg});var Kl=re((tx,zl)=>{"use strict";var Gi=et(),ng=It(),Xl=un(),og=(e,t)=>{e=new ng(e,t);let r=new Gi("0.0.0");if(e.test(r)||(r=new Gi("0.0.0-0"),e.test(r)))return r;r=null;for(let n=0;n<e.set.length;++n){let o=e.set[n],i=null;o.forEach(s=>{let u=new Gi(s.semver.version);switch(s.operator){case">":u.prerelease.length===0?u.patch++:u.prerelease.push(0),u.raw=u.format();case"":case">=":(!i||Xl(u,i))&&(i=u);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${s.operator}`)}}),i&&(!r||Xl(r,i))&&(r=i)}return r&&e.test(r)?r:null};zl.exports=og});var Jl=re((rx,Yl)=>{"use strict";var ig=It(),sg=(e,t)=>{try{return new ig(e,t).range||"*"}catch{return null}};Yl.exports=sg});var go=re((nx,tu)=>{"use strict";var ag=et(),eu=dn(),{ANY:cg}=eu,lg=It(),ug=pn(),Ql=un(),Zl=lo(),dg=fo(),fg=uo(),pg=(e,t,r,n)=>{e=new ag(e,n),t=new lg(t,n);let o,i,s,u,f;switch(r){case">":o=Ql,i=dg,s=Zl,u=">",f=">=";break;case"<":o=Zl,i=fg,s=Ql,u="<",f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ug(e,t,n))return!1;for(let g=0;g<t.set.length;++g){let w=t.set[g],p=null,x=null;if(w.forEach(c=>{c.semver===cg&&(c=new eu(">=0.0.0")),p=p||c,x=x||c,o(c.semver,p.semver,n)?p=c:s(c.semver,x.semver,n)&&(x=c)}),p.operator===u||p.operator===f||(!x.operator||x.operator===u)&&i(e,x.semver))return!1;if(x.operator===f&&s(e,x.semver))return!1}return!0};tu.exports=pg});var nu=re((ox,ru)=>{"use strict";var mg=go(),gg=(e,t,r)=>mg(e,t,">",r);ru.exports=gg});var iu=re((ix,ou)=>{"use strict";var hg=go(),bg=(e,t,r)=>hg(e,t,"<",r);ou.exports=bg});var cu=re((sx,au)=>{"use strict";var su=It(),vg=(e,t,r)=>(e=new su(e,r),t=new su(t,r),e.intersects(t,r));au.exports=vg});var uu=re((ax,lu)=>{"use strict";var xg=pn(),yg=Et();lu.exports=(e,t,r)=>{let n=[],o=null,i=null,s=e.sort((w,p)=>yg(w,p,r));for(let w of s)xg(w,t,r)?(i=w,o||(o=w)):(i&&n.push([o,i]),i=null,o=null);o&&n.push([o,null]);let u=[];for(let[w,p]of n)w===p?u.push(w):!p&&w===s[0]?u.push("*"):p?w===s[0]?u.push(`<=${p}`):u.push(`${w} - ${p}`):u.push(`>=${w}`);let f=u.join(" || "),g=typeof t.raw=="string"?t.raw:String(t);return f.length<g.length?f:t}});var hu=re((cx,gu)=>{"use strict";var du=It(),zi=dn(),{ANY:Wi}=zi,Xi=pn(),Ki=Et(),Sg=(e,t,r={})=>{if(e===t)return!0;e=new du(e,r),t=new du(t,r);let n=!1;e:for(let o of e.set){for(let i of t.set){let s=Tg(o,i,r);if(n=n||s!==null,s)continue e}if(n)return!1}return!0},wg=[new zi(">=0.0.0-0")],fu=[new zi(">=0.0.0")],Tg=(e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===Wi){if(t.length===1&&t[0].semver===Wi)return!0;r.includePrerelease?e=wg:e=fu}if(t.length===1&&t[0].semver===Wi){if(r.includePrerelease)return!0;t=fu}let n=new Set,o,i;for(let c of e)c.operator===">"||c.operator===">="?o=pu(o,c,r):c.operator==="<"||c.operator==="<="?i=mu(i,c,r):n.add(c.semver);if(n.size>1)return null;let s;if(o&&i){if(s=Ki(o.semver,i.semver,r),s>0)return null;if(s===0&&(o.operator!==">="||i.operator!=="<="))return null}for(let c of n){if(o&&!Xi(c,String(o),r)||i&&!Xi(c,String(i),r))return null;for(let m of t)if(!Xi(c,String(m),r))return!1;return!0}let u,f,g,w,p=i&&!r.includePrerelease&&i.semver.prerelease.length?i.semver:!1,x=o&&!r.includePrerelease&&o.semver.prerelease.length?o.semver:!1;p&&p.prerelease.length===1&&i.operator==="<"&&p.prerelease[0]===0&&(p=!1);for(let c of t){if(w=w||c.operator===">"||c.operator===">=",g=g||c.operator==="<"||c.operator==="<=",o){if(x&&c.semver.prerelease&&c.semver.prerelease.length&&c.semver.major===x.major&&c.semver.minor===x.minor&&c.semver.patch===x.patch&&(x=!1),c.operator===">"||c.operator===">="){if(u=pu(o,c,r),u===c&&u!==o)return!1}else if(o.operator===">="&&!c.test(o.semver))return!1}if(i){if(p&&c.semver.prerelease&&c.semver.prerelease.length&&c.semver.major===p.major&&c.semver.minor===p.minor&&c.semver.patch===p.patch&&(p=!1),c.operator==="<"||c.operator==="<="){if(f=mu(i,c,r),f===c&&f!==i)return!1}else if(i.operator==="<="&&!c.test(i.semver))return!1}if(!c.operator&&(i||o)&&s!==0)return!1}return!(o&&g&&!i&&s!==0||i&&w&&!o&&s!==0||x||p)},pu=(e,t,r)=>{if(!e)return t;let n=Ki(e.semver,t.semver,r);return n>0?e:n<0||t.operator===">"&&e.operator===">="?t:e},mu=(e,t,r)=>{if(!e)return t;let n=Ki(e.semver,t.semver,r);return n<0?e:n>0||t.operator==="<"&&e.operator==="<="?t:e};gu.exports=Sg});var Ji=re((lx,xu)=>{"use strict";var Yi=qr(),bu=Ur(),Rg=et(),vu=Li(),kg=dr(),Cg=Uc(),Eg=Hc(),Ig=Xc(),Ag=Yc(),_g=Qc(),Pg=el(),Dg=rl(),Lg=ol(),Bg=Et(),$g=cl(),Og=ul(),Ng=co(),Mg=ml(),jg=hl(),Vg=un(),Fg=lo(),Ug=Oi(),qg=Ni(),Hg=uo(),Gg=fo(),Wg=Mi(),Xg=kl(),zg=El(),Kg=dn(),Yg=It(),Jg=pn(),Qg=Ul(),Zg=Hl(),eh=Wl(),th=Kl(),rh=Jl(),nh=go(),oh=nu(),ih=iu(),sh=cu(),ah=uu(),ch=hu();xu.exports={parse:kg,valid:Cg,clean:Eg,inc:Ig,diff:Ag,major:_g,minor:Pg,patch:Dg,prerelease:Lg,compare:Bg,rcompare:$g,compareLoose:Og,compareBuild:Ng,sort:Mg,rsort:jg,gt:Vg,lt:Fg,eq:Ug,neq:qg,gte:Hg,lte:Gg,cmp:Wg,coerce:Xg,truncate:zg,Comparator:Kg,Range:Yg,satisfies:Jg,toComparators:Qg,maxSatisfying:Zg,minSatisfying:eh,minVersion:th,validRange:rh,outside:nh,gtr:oh,ltr:ih,intersects:sh,simplifyRange:ah,subset:ch,SemVer:Rg,re:Yi.re,src:Yi.src,tokens:Yi.t,SEMVER_SPEC_VERSION:bu.SEMVER_SPEC_VERSION,RELEASE_TYPES:bu.RELEASE_TYPES,compareIdentifiers:vu.compareIdentifiers,rcompareIdentifiers:vu.rcompareIdentifiers}});var R=D(Ee(),1);var Ic=D(Ee(),1);var Fr=D(G(),1);function Ac({path:e}){return e.length===0?null:(0,Fr.jsx)(b,{children:e.map((t,r)=>(0,Fr.jsxs)(Ic.default.Fragment,{children:[r>0&&(0,Fr.jsx)(a,{color:l.muted,children:" \u203A "}),(0,Fr.jsx)(a,{color:l.dim,children:t})]},r))})}var yu=D(Ji(),1),lh=1,uh=new Set(["discover","workflow","nudge","recovery"]),dh=new Set(["run","generate","both"]),fh=new Set(["banner","footer"]),ho=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),Hr=e=>typeof e=="string"&&e.length>0?e:void 0,Gr=e=>typeof e=="number"&&Number.isFinite(e)?e:void 0;function ph(e){if(!ho(e))return{};let t={};return Hr(e.run)&&(t.run=e.run),Hr(e.generate)&&(t.generate=e.generate),Hr(e.default)&&(t.default=e.default),t}function Su(e,t){return e.text[t]??e.text.default??(e.target!=="both"?e.text[e.target]:void 0)}function mh(e,t){return t==="both"?!!e.default||!!e.run&&!!e.generate:t==="run"?!!e.run||!!e.default:!!e.generate||!!e.default}function gh(e,t){if(!ho(e))return;let r=Gr(e.maxShows),n=Hr(e.until),o=Gr(e.weight);if(!(r===void 0||r<1||n===void 0||!Number.isFinite(Date.parse(n))))return{weight:Math.max(o??t,t),maxShows:Math.floor(r),until:n}}function hh(e){if(!ho(e))return null;let t=Hr(e.id);if(!t)return null;let r=dh.has(e.target)?e.target:void 0;if(e.target!==void 0&&r===void 0)return null;let n=r??"both",o=ph(e.text);if(!mh(o,n))return null;let i=uh.has(e.category)?e.category:"nudge",s=fh.has(e.surface)?e.surface:void 0,u=Gr(e.weight),f=u===void 0?1:Math.max(0,u),g=Gr(e.cooldownSessions),w=g===void 0?0:Math.max(0,Math.floor(g)),p=Hr(e.minVersion)&&yu.default.coerce(e.minVersion)?e.minVersion:void 0,x=Array.isArray(e.relevance)?e.relevance.filter(U=>typeof U=="string"):[],c=Gr(e.retireAfterShows),m=c!==void 0&&c>=1?Math.floor(c):void 0,P=gh(e.boost,f);return{id:t,category:i,surface:s,target:n,text:o,weight:f,cooldownSessions:w,minVersion:p,relevance:x,retireAfterShows:m,boost:P}}function bo(e){if(!ho(e)||!Array.isArray(e.hints)||typeof e.enabled!="boolean")return{catalog:null,dropped:0};let t=Gr(e.schemaVersion)??0;if(Math.floor(t)>lh)return{catalog:null,dropped:0};let r=0,n=new Set,o=[];for(let i of e.hints){let s=hh(i);if(!s){r++;continue}if(n.has(s.id)){r++;continue}n.add(s.id),o.push(s)}return o.length===0?{catalog:null,dropped:r}:{catalog:{schemaVersion:t,enabled:e.enabled,hints:o},dropped:r}}var Ru=D(G(),1),wu="tip: ";function Tu({hint:e,mode:t,termWidth:r}){if(e.target!=="both"&&e.target!==t)return null;let n=Su(e,t);if(!n)return null;let o=Math.max(8,r-wu.length-2),i=n.length>o?n.slice(0,o-1)+"\u2026":n;return(0,Ru.jsx)(a,{color:l.dim,children:wu+i})}var ee=D(G(),1);function vo(e,t){return e.length<=t?e:`${e.slice(0,Math.max(1,t-1))}\u2026`}function bh(e,t){if(e.kind==="desktop")return"Desktop";let r=rn(e.kind);return e.deviceName?e.appPackage&&t>=72?`${r} \xB7 ${vo(e.deviceName,30)} \xB7 ${vo(e.appPackage,36)}`:t>=48?`${r} \xB7 ${vo(e.deviceName,40)}`:`${r} \xB7 ${vo(e.deviceName,Math.max(8,t-12))}`:t<36?r:`${r} \xB7 setting up`}function ku({profile:e,environment:t,tokenValid:r,runCount:n,sessionId:o,viewMode:i,breadcrumb:s,chatMode:u,tcgRequestId:f,tcgStreamStatus:g,footerHint:w,sessionTarget:p={kind:"desktop"},targetLocked:x=!1}){let{stdout:c}=Br(),m=c?.columns??80,P=u??"run",U=t==="stage",B=t==="prod",F=P==="generate"?l.generateAccent:l.orange,H=g==="completed"?l.green:g==="failed"?l.red:l.generateAccent,$=bh(p,m);return(0,ee.jsxs)(b,{flexDirection:"column",children:[(0,ee.jsx)(a,{color:l.muted,children:"\u2500".repeat(m)}),s&&s.length>0&&(0,ee.jsx)(b,{paddingX:1,children:(0,ee.jsx)(Ac,{path:s})}),(0,ee.jsxs)(b,{paddingX:1,gap:1,children:[(0,ee.jsx)(a,{color:l.dim,children:"Mode:"}),(0,ee.jsx)(a,{color:F,bold:!0,children:P==="generate"?"Generate":"Run"}),(0,ee.jsx)(a,{color:l.muted,children:"|"}),P==="generate"?(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsx)(a,{color:l.dim,children:"req"}),(0,ee.jsx)(a,{color:l.dim,children:f??"\u2014"}),g&&(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsx)(a,{color:l.muted,children:"\xB7"}),(0,ee.jsx)(a,{color:H,children:g})]})]}):(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsx)(a,{color:l.dim,children:"Session:"}),(0,ee.jsx)(a,{color:l.dim,children:o})]}),(0,ee.jsx)(a,{color:l.muted,children:"|"}),(0,ee.jsx)(a,{color:r?l.green:l.red,children:"\u25CF"}),(0,ee.jsx)(a,{color:l.dim,children:r?"authenticated":"not logged in"}),!B&&(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsx)(a,{color:l.muted,children:"|"}),U?(0,ee.jsx)(a,{color:l.orange,bold:!0,children:"\u26A0 stage"}):(0,ee.jsx)(a,{color:l.green,children:t})]})]}),(0,ee.jsxs)(b,{paddingX:1,gap:1,children:[(0,ee.jsx)(a,{color:l.dim,children:e??"no profile"}),P==="run"&&(0,ee.jsxs)(ee.Fragment,{children:[(0,ee.jsx)(a,{color:l.muted,children:"|"}),(0,ee.jsxs)(a,{color:l.dim,children:["runs: ",n]})]}),(0,ee.jsx)(a,{color:l.muted,children:"|"}),(0,ee.jsx)(a,{dimColor:!0,children:Us()})]}),(0,ee.jsxs)(b,{paddingX:1,gap:1,children:[(0,ee.jsx)(a,{color:l.dim,children:"Config:"}),(0,ee.jsx)(a,{color:p.kind==="desktop"?l.dim:l.orange,children:$}),x&&(0,ee.jsx)(a,{color:l.dim,children:"\xB7 locked (/new to change)"})]}),(0,ee.jsx)(b,{paddingX:1,children:(0,ee.jsx)(a,{dimColor:!0,children:i==="chat"?"ctrl+c cancel/exit":"\u2191\u2193 navigate \u21B5 select esc back"})}),w&&(0,ee.jsx)(b,{paddingX:1,children:(0,ee.jsx)(Tu,{hint:w,mode:P,termWidth:m})})]})}var Rr=D(Ee(),1);var mn=[[[" "],[" "],[" "],[" "],["\u2584","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],[" "],[" "],[" "],[" "],[" "],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2584","#af87d7"],[" "],[" "],[" "],[" "]],[[" "],[" "],["\u2584","#875faf"],["\u2584","#af87d7","#875faf"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2584","#af87d7","#875faf"],["\u2584","#875faf"],[" "],[" "]],[[" "],[" "],["\u2588","#875faf"],["\u2588","#af87d7"],["\u2584","#000000","#af87d7"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#af87d7"],["\u2588","#af87d7"],["\u2588","#875faf"],[" "],[" "]],[[" "],["\u2588","#875faf"],["\u2588","#875faf"],["\u2588","#af87d7"],["\u2588","#000000"],["\u2584","#585858","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#af87d7"],["\u2588","#875faf"],["\u2588","#875faf"],[" "]],[[" "],["\u2588","#875faf"],["\u2588","#875faf"],["\u2588","#af87d7"],["\u2588","#000000"],["\u2588","#585858"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#af87d7"],["\u2588","#875faf"],["\u2588","#875faf"],[" "]],[[" "],[" "],["\u2588","#875faf"],["\u2588","#af87d7"],["\u2588","#000000"],["\u2584","#000000","#585858"],["\u2588","#000000"],["\u2588","#000000"],["\u2584","#af87d7","#000000"],["\u2584","#af87d7","#000000"],["\u2584","#af87d7","#000000"],["\u2584","#af87d7","#000000"],["\u2584","#af87d7","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#af87d7"],["\u2588","#875faf"],[" "],[" "]],[[" "],[" "],["\u2580","#875faf"],["\u2580","#af87d7"],["\u2580","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2580","#af87d7"],["\u2580","#af87d7"],["\u2580","#875faf"],[" "],[" "]],[[" "],[" "],[" "],[" "],[" "],["\u2580","#af87d7"],["\u2580","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2580","#af87d7"],["\u2580","#af87d7"],[" "],[" "],[" "],[" "],[" "]]];var ve=D(G(),1),xo="#af87d7",Qi="#875faf",Cu="#5b3a7a",vh="#ff9500",xh="#ea580c";var Zi="#666666",yh="#555555",Tr=[[xo,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[xo,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[xo,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[xo,"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[Qi,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[Qi,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[Qi,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588"]],es=Tr.map(([,e])=>[...e]);function Eu({visibleRows:e=Tr.length}){let t=Math.min(e,Tr.length);return(0,ve.jsxs)(b,{flexDirection:"column",children:[Tr.slice(0,t).map(([r,n],o)=>{let i=es[o];return(0,ve.jsx)(a,{children:i.map((s,u)=>{if(s==="\u2588")return(0,ve.jsx)(a,{color:r,children:"\u2588"},u);let f=u>0&&i[u-1]==="\u2588",g=o>0&&u>0&&es[o-1][u-1]==="\u2588";return f||g?(0,ve.jsx)(a,{color:Cu,children:"\u2592"},u):(0,ve.jsx)(a,{children:" "},u)})},o)}),t>=Tr.length&&(0,ve.jsxs)(a,{children:[" ",es[Tr.length-1].map((r,n)=>r==="\u2588"?(0,ve.jsx)(a,{color:Cu,children:"\u2580"},n):(0,ve.jsx)(a,{children:" "},n))]})]})}function Sh({visibleRows:e=mn.length}){let t=Math.min(e,mn.length);return(0,ve.jsx)(b,{flexDirection:"column",children:mn.slice(0,t).map((r,n)=>(0,ve.jsx)(a,{children:r.map((o,i)=>{let s=o[0],u=o[1],f=o[2];return u?(0,ve.jsx)(a,{color:u,backgroundColor:f,children:s},i):(0,ve.jsx)(a,{children:s},i)})},n))})}function yo({size:e="compact",helmetVisibleRows:t=mn.length,textVisibleRows:r=Tr.length,showMeta:n=!1,user:o=null,authenticated:i=!1,version:s=""}){return e==="compact"?(0,ve.jsx)(Eu,{}):(0,ve.jsxs)(b,{flexDirection:"column",paddingX:1,paddingY:1,children:[(0,ve.jsx)(a,{color:vh,italic:!0,children:" Welcome to"}),(0,ve.jsx)(a,{children:" "}),(0,ve.jsxs)(b,{gap:2,children:[(0,ve.jsx)(Sh,{visibleRows:t}),(0,ve.jsxs)(b,{flexDirection:"column",children:[(0,ve.jsx)(Eu,{visibleRows:r}),(0,ve.jsx)(b,{justifyContent:"flex-end",width:73,children:(0,ve.jsx)(a,{color:xh,italic:!0,children:"Command-line interface"})})]})]}),n&&(0,ve.jsxs)(ve.Fragment,{children:[(0,ve.jsx)(a,{children:" "}),(0,ve.jsxs)(a,{children:[(0,ve.jsx)(a,{color:Zi,children:" The validation layer for AI coding agents. "}),(0,ve.jsx)(a,{color:yh,children:`v${s}`})]}),(0,ve.jsx)(a,{children:" "}),(0,ve.jsx)(a,{children:(0,ve.jsx)(a,{color:Zi,children:" Kane-CLI: natural-language web & mobile-app automation, plus"})}),(0,ve.jsx)(a,{children:(0,ve.jsx)(a,{color:Zi,children:" requirements-to-coverage assurance \u2014 from your CLI or IDE."})}),(0,ve.jsx)(a,{children:" "})]})]})}var ns=D(G(),1),ts=8,rs=7;function Iu({onComplete:e}){let[t,r]=(0,Rr.useState)(0),[n,o]=(0,Rr.useState)(0),[i,s]=(0,Rr.useState)(!1),[u]=(0,Rr.useState)(()=>{let f=new Gn,g=f.getActiveProfile(),w=f.getDefaultEnv(),p=g?f.loadCredentials(g,w):null,x=g?f.loadBasicAuth(g,w):null;return{authenticated:!!(p||x),user:x?.username??g??null}});return gi(()=>{r(f=>Math.min(ts,f+1))},t<ts?60:null),gi(()=>{o(f=>Math.min(rs,f+1))},n<rs?80:null),(0,Rr.useEffect)(()=>{t>=ts&&n>=rs&&!i&&(s(!0),e?.())},[t,n,i,e]),(0,ns.jsx)(b,{flexDirection:"column",children:(0,ns.jsx)(yo,{size:"full",helmetVisibleRows:t,textVisibleRows:n,showMeta:i,user:u.user,authenticated:u.authenticated,version:xt})})}var Qt=D(G(),1);function Au({entry:e}){return e.type==="input"?(0,Qt.jsxs)(b,{children:[(0,Qt.jsx)(a,{color:l.orange,children:"\u276F "}),(0,Qt.jsx)(a,{children:e.text})]}):e.type==="error"?(0,Qt.jsx)(b,{marginLeft:2,children:(0,Qt.jsx)(a,{color:l.red,children:e.text})}):(0,Qt.jsx)(b,{marginLeft:2,children:(0,Qt.jsx)(a,{color:e.type==="info"?l.dim:void 0,children:e.text})})}var os=D(G(),1);function _u({objective:e}){let{stdout:t}=Br(),r=Math.max(24,(t?.columns??80)-4);return(0,os.jsx)(Jt,{title:"run",width:r,children:(0,os.jsx)(Hs,{label:"objective",value:e})})}var Ht=D(Ee(),1);var ht=D(G(),1);function wh(e,t){let r=[],o=Math.max(t-4,30);r.push({type:"title",text:e.title});for(let i=0;i<e.sections.length;i++){let s=e.sections[i];i>0&&r.push({type:"divider",text:"\u2500".repeat(o)}),s.label&&r.push({type:"header",text:s.label});let u=s.entries.length>0?Math.max(...s.entries.map(f=>f.key.length)):0;for(let f of s.entries){let g="\xB7".repeat(Math.max(2,u-f.key.length+3)),w=`${f.key} ${g} ${f.value}`;r.push({type:"entry",text:w,color:f.color})}}return r.push({type:"footer",text:"esc back"}),r}function Pu({data:e,width:t=60}){let r=wh(e,t);return(0,ht.jsx)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:r.map((n,o)=>{if(n.type==="title")return(0,ht.jsx)(a,{color:l.orange,bold:!0,children:n.text},o);if(n.type==="header")return(0,ht.jsx)(b,{marginTop:1,children:(0,ht.jsx)(a,{color:l.dim,children:n.text})},o);if(n.type==="divider")return(0,ht.jsx)(b,{marginTop:1,marginBottom:0,children:(0,ht.jsx)(a,{color:l.muted,children:n.text})},o);if(n.type==="footer")return(0,ht.jsx)(b,{marginTop:1,children:(0,ht.jsx)(a,{color:l.dim,children:n.text})},o);let i=n.text.match(/^(.+?) (·+) (.+)$/);return i?(0,ht.jsxs)(a,{children:[(0,ht.jsxs)(a,{color:l.secondary,children:[i[1]," "]}),(0,ht.jsxs)(a,{color:l.muted,children:[i[2]," "]}),(0,ht.jsx)(a,{color:n.color,children:i[3]})]},o):(0,ht.jsx)(a,{color:n.color,children:n.text},o)})})}var rt=D(G(),1);function is(e,t){let r=[];function n(o,i){for(let s of o)r.push({item:s,depth:i}),s.type==="submenu"&&s.children&&t.length>i&&t[i]===s.id&&n(s.children,i+1)}return n(e,0),r}function ss({items:e,onRunSelected:t,initialExpandedPath:r,onDismiss:n,renderLoginWizard:o,renderProfilesView:i,renderChromeProfilePicker:s,renderProjectPicker:u,renderFolderPicker:f,renderWindowSizePicker:g,onActiveViewChange:w}){let[p,x]=(0,Ht.useState)(()=>{let F=r??[],H=is(e,F),$=0;if(F.length>0){let z=H.findIndex(fe=>fe.item.id===F[0]);z>=0&&z+1<H.length&&($=z+1)}return{expandedPath:F,selectedIndex:$,inputValue:"",isEditing:!1,isSelecting:!1,feedback:null,activeView:null,infoData:null}}),c=is(e,p.expandedPath),m=c[p.selectedIndex]?.item,P=(0,Ht.useRef)(null),U=(0,Ht.useCallback)(F=>{x(H=>({...H,feedback:F})),P.current&&clearTimeout(P.current),P.current=setTimeout(()=>{x(H=>({...H,feedback:null})),P.current=null},4e3)},[]);(0,Ht.useEffect)(()=>()=>{P.current&&clearTimeout(P.current)},[]),(0,Ht.useEffect)(()=>{w?.(p.activeView)},[p.activeView,w]);let B=(0,Ht.useCallback)(()=>{x(F=>({...F,activeView:null,infoData:null}))},[]);return Be((F,H)=>{if(p.activeView==="infoView"){H.escape&&B();return}if(!(p.activeView==="loginWizard"||p.activeView==="profilesView"||p.activeView==="chromeProfilePicker"||p.activeView==="projectPicker"||p.activeView==="folderPicker"||p.activeView==="windowSizePicker")){if(p.isEditing){if(H.escape){x($=>({...$,isEditing:!1,inputValue:""}));return}if(H.return){let $=p.inputValue.trim();if(m?.onValue&&$){let z=m.currentValue;m.onValue($),U(z?`${m.label}: ${z} \u2192 ${$}`:`${m.label}: ${$}`)}x(z=>({...z,isEditing:!1,inputValue:""}));return}if(H.backspace||H.delete){x($=>({...$,inputValue:$.inputValue.slice(0,-1)}));return}F&&!H.ctrl&&!H.meta&&x($=>({...$,inputValue:$.inputValue+F}));return}if(p.isSelecting&&m?.options){let $=m.options;if(H.escape){x(z=>({...z,isSelecting:!1}));return}if(H.upArrow){x(z=>({...z,inputValue:String(Math.max(0,Number(z.inputValue||"0")-1))}));return}if(H.downArrow){x(z=>({...z,inputValue:String(Math.min($.length-1,Number(z.inputValue||"0")+1))}));return}if(H.return){let z=Number(p.inputValue||"0"),fe=$[z];if(fe&&m.onValue){let oe=m.currentValue;m.onValue(fe.value),U(oe?`${m.label}: ${oe} \u2192 ${fe.label}`:`${m.label}: ${fe.label}`)}x(oe=>({...oe,isSelecting:!1,inputValue:""}));return}return}if(H.upArrow){x($=>({...$,selectedIndex:Math.max(0,$.selectedIndex-1)}));return}if(H.downArrow){x($=>({...$,selectedIndex:Math.min(c.length-1,$.selectedIndex+1)}));return}if(H.escape){if(p.expandedPath.length===0){n?.();return}x($=>{let z=$.expandedPath.slice(0,-1),fe=is(e,z),oe=$.expandedPath[$.expandedPath.length-1],ie=fe.findIndex(Y=>Y.item.id===oe);return{...$,expandedPath:z,selectedIndex:ie>=0?ie:0}});return}if(H.return&&m){if(m.id==="run-start"){t();return}if(m.type==="submenu"){let $=c[p.selectedIndex]?.depth??0;x(z=>({...z,expandedPath:[...z.expandedPath.slice(0,$),m.id],selectedIndex:z.selectedIndex+1}));return}if(m.onInfo){let $=m.onInfo();x(z=>({...z,activeView:"infoView",infoData:$}));return}if(m.onLoginWizard){m.onLoginWizard(),x($=>({...$,activeView:"loginWizard"}));return}if(m.onProfilesView){m.onProfilesView(),x($=>({...$,activeView:"profilesView"}));return}if(m.onChromeProfilePicker){m.onChromeProfilePicker(),x($=>({...$,activeView:"chromeProfilePicker"}));return}if(m.onProjectPicker){m.onProjectPicker(),x($=>({...$,activeView:"projectPicker"}));return}if(m.onFolderPicker){m.onFolderPicker(),x($=>({...$,activeView:"folderPicker"}));return}if(m.onWindowSizePicker){m.onWindowSizePicker(),x($=>({...$,activeView:"windowSizePicker"}));return}if(m.type==="action"){m.onAction?.(),m.suppressFeedback||U(`${m.label} done`);return}if(m.type==="select"&&m.options){let $=m.options.findIndex(z=>z.value===m.currentValue);x(z=>({...z,isSelecting:!0,inputValue:String(Math.max(0,$))}));return}if(m.type==="text-input"){x($=>({...$,isEditing:!0,inputValue:m.currentValue??""}));return}}}}),(0,rt.jsx)(b,{flexDirection:"column",paddingX:1,children:p.activeView==="infoView"&&p.infoData?(0,rt.jsx)(Pu,{data:p.infoData}):p.activeView==="loginWizard"&&o?o(B):p.activeView==="profilesView"&&i?i(B):p.activeView==="chromeProfilePicker"&&s?s(B):p.activeView==="projectPicker"&&u?u(B):p.activeView==="folderPicker"&&f?f(B):p.activeView==="windowSizePicker"&&g?g(B):(0,rt.jsxs)(rt.Fragment,{children:[c.map(({item:F,depth:H},$)=>{let z=$===p.selectedIndex,fe=" ".repeat(H),oe=z?"\u276F ":" ",ie=F.type==="submenu"?p.expandedPath.includes(F.id)?"\u25BC ":"\u25B6 ":F.type==="select"&&F.options?z&&p.isSelecting?"\u25BC ":"\u25B6 ":" ",Y=F.currentValue!=null?` [${F.currentValue}]`:"";if(z&&p.isSelecting&&F.options){let pe=Number(p.inputValue||"0");return(0,rt.jsxs)(b,{flexDirection:"column",children:[(0,rt.jsxs)(a,{color:l.orange,children:[fe,oe,ie,F.label]}),F.options.map((we,me)=>(0,rt.jsxs)(a,{color:me===pe?l.orange:void 0,children:[fe," ",me===pe?"\u276F ":" ",we.label]},we.value))]},F.id)}return z&&p.isEditing?(0,rt.jsxs)(a,{color:l.orange,children:[fe,oe,ie,F.label,": ",p.inputValue,(0,rt.jsx)(a,{color:l.dim,children:"\u2588"})]},F.id):(0,rt.jsxs)(a,{color:z?l.orange:void 0,dimColor:!z&&H>0,children:[fe,oe,ie,F.label,(0,rt.jsx)(a,{dimColor:!0,children:Y})]},F.id)}),p.feedback&&(0,rt.jsx)(b,{marginTop:1,children:(0,rt.jsxs)(a,{color:l.green,children:["\u2713 ",p.feedback]})}),(0,rt.jsx)(jt,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"select"}],escBackLabel:"back"})]})})}var J=D(Ee(),1);import{access as Th}from"fs/promises";async function Du(e){try{return await Th(e),!0}catch{return!1}}function Rh(e,t){if(wr(e))return!0;let r=/\.([a-z0-9]+)$/i.exec(e)?.[1]?.toLowerCase()??"";return t==="emulator"?["apk","aab","apks"].includes(r):["app","zip"].includes(r)}function kh(e){return e==="emulator"||e==="simulator"?e:null}var So={emulator:"android",simulator:"ios"};function Ch(e){return`${e.platform}\0${e.kind}\0${nn(e)}`}function Eh(e,t){let r=Xn(t.id);return e.find(n=>n.platform===t.platform&&n.kind===t.kind&&(Xn(n.id)===r||n.virtualName!==void 0&&Xn(n.virtualName)===r))}function Lu(e){let[t,r]=(0,J.useState)("idle"),[n,o]=(0,J.useState)(null),i=(0,J.useRef)(null),s=(0,J.useRef)(null),u=(0,J.useRef)(null),[f,g]=(0,J.useState)([]),[w,p]=(0,J.useState)([]),[x,c]=(0,J.useState)([]),[m,P]=(0,J.useState)(null),[U,B]=(0,J.useState)(null),[F,H]=(0,J.useState)(null),[$,z]=(0,J.useState)(null),[fe,oe]=(0,J.useState)(null),ie=(0,J.useRef)(null),Y=(0,J.useRef)(null),pe=(0,J.useRef)(null),we=(0,J.useRef)(new Map),me=(0,J.useRef)(0),$e=(0,J.useRef)("confirm"),He=(0,J.useRef)(null),st=(0,J.useRef)(null),Xt=(0,J.useRef)(null),Tt=(0,J.useRef)(()=>{}),ge=(0,J.useRef)({pathExists:Du,...e});ge.current={pathExists:Du,...e},(0,J.useEffect)(()=>{t==="ready"&&(He.current=null)},[t]);let ut=(0,J.useCallback)((I,L,K)=>{K().catch(q=>{I===me.current&&(P(null),B(q instanceof Error?q.message:String(q)),r(L))})},[]),$t=(0,J.useCallback)(async(I,L,K)=>{r("picking"),P("Looking for devices\u2026");let q=K?So[K]:void 0,te=(await zn(q)).filter(Ae=>!K||Ae.kind===K);if(I===me.current){if(p(te),P(null),te.length===0){B(K==="emulator"?"No Android emulator found on this machine.":K==="simulator"?"No iOS simulator found on this machine.":"No emulator or simulator found on this machine.");return}st.current=null,oe(null)}},[]),Oe=(0,J.useCallback)((I,L)=>{let K={target:I,savedDeviceLabel:I.displayName,savedKind:I.kind,...L?{appPath:L,savedAppLabel:u.current??L}:{},deviceMissing:!1,appMissing:!L};st.current=K,Xt.current=K,oe(K),P(null),r("confirm")},[]),Le=(0,J.useCallback)(async(I,L)=>{let K=on(So[L]);if(!K||!K.available())return!0;let q=await K.checks({appiumUrl:ge.current.getDefaults()?.appium_url});return I!==me.current?!1:(g(q),q.some(Ae=>Ae.required&&Ae.status==="fail"&&!Ae.fixedByBundle)?(P(null),r("doctor"),!1):!0)},[]),zt=(0,J.useCallback)(async(I,L)=>{let K=ge.current.getDefaults(),q=K?.default_target;if(i.current=L,o(L),P("Checking the saved setup\u2026"),!await Le(I,L))return;let te=So[L],Ae=(await zn(te)).filter(rr=>rr.kind===L);if(I!==me.current)return;p(Ae),P(null);let Je=q?Eh(Ae,q):void 0,de=ca(K?.default_app)?K?.default_app:void 0,St=de?wr(de)||await ge.current.pathExists(de):!1;if(I!==me.current)return;let bt=de&&wr(de)?await ge.current.appLabelFor?.(de)??de:de;if(I!==me.current)return;let ke={...Je?{target:Je}:{},savedDeviceLabel:q?.id??"(unknown device)",savedKind:L,...de&&St?{appPath:de}:{},...bt?{savedAppLabel:bt}:{},deviceMissing:!Je,appMissing:!de||!St};st.current=ke,Xt.current=ke,u.current=de&&bt!==de?bt:null,oe(ke),r("confirm")},[Le]),Me=(0,J.useCallback)(async(I,L)=>{r("checking");let K=Kn();if(I!==me.current)return;if(!K.supported){g([{id:"host.platform",label:"host",required:!0,status:"fail",detail:K.reason}]),r("doctor");return}g([]);let q=ge.current.getDefaults(),te=kh(q?.default_target?.kind);if(L==="confirm"&&te&&q?.default_target){st.current=null,oe(null),await zt(I,te);return}r("chooser")},[zt]),Kt=(0,J.useCallback)(I=>{let L=++me.current;i.current=I,o(I);let K=ge.current.getDefaults();ge.current.setDefaults({...K,tui_target:I}),B(null),ut(L,"chooser",async()=>{r("picking"),P(I==="simulator"?"Checking the iOS toolchain\u2026":"Checking the Android toolchain\u2026"),await Le(L,I)&&(P("Checking the mobile dependencies\u2026"),await Si().ensure(I,{automatic:!0,onProgress:q=>{L===me.current&&P(q)}}),L===me.current&&await $t(L,$e.current,I))})},[Le,$t,ut]),mr=(0,J.useCallback)((I="confirm",L={})=>{let K=++me.current;$e.current=I;let q=ge.current.getDefaults();He.current=q?.tui_target??"desktop";let te=(L.kind?Yt(L.kind):void 0)??Yt(q?.default_target?.kind??"")??"emulator";ge.current.setDefaults({...q,tui_target:te}),g([]),p([]),c([]),H(null),z(null),B(null),oe(null),st.current=null,ie.current=null,Y.current=null,I==="reinit"&&(pe.current=null),ut(K,"doctor",()=>Me(K,I))},[ut,Me]),kr=(0,J.useCallback)(()=>{let I=++me.current;B(null),ut(I,"doctor",()=>Me(I,$e.current))},[ut,Me]),Kr=(0,J.useCallback)(I=>{let L=++me.current;B(null),P("Installing managed mobile dependencies\u2026");let K=I??["emulator",...process.platform==="darwin"?["simulator"]:[]];ut(L,"doctor",async()=>{for(let q of K)await Si().ensure(q,{automatic:!1,approved:!0,onProgress:te=>{L===me.current&&P(te)}});L===me.current&&P(null),await Me(L,$e.current)})},[ut,Me]),Cr=(0,J.useCallback)(async I=>{let L=on(I.platform);if(!L){B(`No provider registered for platform "${I.platform}"`);return}let q=await(ge.current.deviceBusyOn??(()=>ea(Zs(),[],[],I.kind)))({udid:I.id,displayName:I.displayName});if(q!==null){let Je=typeof q=="number"?q:q.port,de=typeof q=="number"?void 0:q.device;B(Qs({udid:I.id,displayName:I.displayName},Je,de));return}ie.current=I,Y.current=L,z(I),B(null),c([]),wi(L,I);let te=s.current;te&&!Rh(te,I.kind)&&(s.current=null);let Ae=ge.current.getDefaults();ge.current.setDefaults({...Ae,...Yt(I.kind)?{tui_target:Yt(I.kind)}:{},default_target:{platform:I.platform,kind:I.kind,id:nn(I)}}),s.current&&H($r(I,s.current,{noReset:Ae?.no_reset,appiumUrl:Ae?.appium_url})),Oe(I,s.current)},[Oe]),gr=(0,J.useCallback)((I={})=>{let L=st.current;if(!L?.target){B("That device is no longer connected \u2014 pick another one.");return}let K=L.target,q=on(K.platform);if(!q){B(`No provider registered for platform "${K.platform}"`);return}if(ie.current=K,Y.current=q,z(K),B(null),c([]),wi(q,K),!(I.keepApp!==!1&&L.appPath)){r("appSource");return}let Ae=ge.current.getDefaults();s.current=L.appPath,H($r(K,L.appPath,{noReset:Ae?.no_reset,appiumUrl:Ae?.appium_url})),r("ready")},[]),hr=(0,J.useCallback)(()=>{if(!ie.current||!Y.current){B("Pick a device before choosing an app");return}r("apps")},[]),Rt=(0,J.useCallback)(()=>{if(!ie.current||!Y.current){B("Pick a device before choosing an app");return}B(null),r("appList")},[]),br=(0,J.useCallback)(()=>{if(!ie.current||!Y.current){B("Pick a device before choosing an app");return}B(null),r("appId")},[]),Er=(0,J.useCallback)(async I=>{let L=ie.current,K=ge.current.resolveAppId;if(!L)return{ok:!1,error:"Pick a device before choosing an app"};if(!K)return{ok:!1,error:"Log in to use an app id, or choose a local build."};let q=++me.current;B(null),P("Downloading the application \u2014 this can take a while, please wait\u2026");try{let te=await K(I,Je=>{q===me.current&&P(Je)});if(q!==me.current)return{ok:!1};let Ae=ge.current.getDefaults();return s.current=I,u.current=te.name,pe.current=null,P(null),H($r(L,I,{noReset:Ae?.no_reset,appiumUrl:Ae?.appium_url})),ge.current.setDefaults({...Ae,...Yt(L.kind)?{tui_target:Yt(L.kind)}:{},default_target:{platform:L.platform,kind:L.kind,id:nn(L)},default_app:I}),Oe(L,I),{ok:!0}}catch(te){return q!==me.current?{ok:!1}:(P(null),{ok:!1,error:te instanceof Error?te.message:String(te)})}},[Oe]),vr=(0,J.useCallback)(()=>{if(!ie.current||!Y.current){B("Pick a device before choosing an app");return}r("appSource")},[]),Q=(0,J.useCallback)(async(I,L={})=>{let K=L.persist!==!1,q=ie.current;if(!q)return B("Pick a device before choosing an app"),{ok:!1,error:"Pick a device before choosing an app"};if(I.kind!=="package"&&!await ge.current.pathExists(I.value))return{ok:!1,error:`${I.value} is not there.`};let te=ge.current.getDefaults();return s.current=I.value,u.current=null,pe.current=null,B(null),P(null),H($r(q,I.value,{noReset:te?.no_reset,appiumUrl:te?.appium_url})),Oe(q,I.value),K&&ge.current.setDefaults({...te,...Yt(q.kind)?{tui_target:Yt(q.kind)}:{},default_target:{platform:q.platform,kind:q.kind,id:nn(q)},default_app:I.value}),{ok:!0}},[Oe]),ce=(0,J.useCallback)(()=>{r("appSource")},[]),ae=(0,J.useCallback)(async I=>{let L=ie.current,K=Y.current;if(!L||!K)return{ok:!1,error:"No device is bound \u2014 run /mobile first"};try{let q=await ia(K,L,bt=>P(bt)),te=await K.ensureApp(q,I,bt=>P(bt));P(null);let Ae=Ch(L);pe.current={targetIdentity:Ae,packageId:te};let Je=we.current.get(Ae)??[];if(!Je.includes(te)){let bt=[...Je,te].sort();we.current.set(Ae,bt),c(bt)}let de=ge.current.getDefaults(),St=$r(q,te,{noReset:de?.no_reset,appiumUrl:de?.appium_url});return H(St),{ok:!0,device:St}}catch(q){return P(null),{ok:!1,error:q instanceof Error?q.message:String(q)}}},[]),ne=(0,J.useCallback)(async()=>{let I=ie.current;if(!I)return{ok:!1,reason:"No device is selected.",step:"device"};let L=So[I.kind];if(!(await zn(L)).some(te=>te.id===I.id||te.virtualName&&te.virtualName===I.virtualName))return{ok:!1,reason:`${I.displayName} is no longer connected.`,step:"device"};let q=s.current;return q?wr(q)?{ok:!0}:await ge.current.pathExists(q)?{ok:!0}:{ok:!1,reason:`${q} is no longer there.`,step:"app"}:{ok:!1,reason:"No app is selected.",step:"app"}},[]),le=(0,J.useCallback)(()=>{++me.current,Xt.current=null,r("idle"),g([]),p([]),c([]),P(null),B(null),H(null),z(null),oe(null),st.current=null,ie.current=null,Y.current=null,pe.current=null,s.current=null,u.current=null},[]),Te=(0,J.useCallback)(()=>{let I=Xt.current,L=()=>{if(!I)return!1;let K=I.target?on(I.target.platform):null;return ie.current=I.target??null,Y.current=K??null,s.current=I.appPath??null,st.current=I,i.current=I.savedKind,o(I.savedKind),z(I.target??null),oe(I),P(null),B(null),r("confirm"),!0};switch(t){case"picking":B(null),r("chooser");return;case"appSource":if(B(null),L())return;if(ie.current){Oe(ie.current,s.current);return}r("chooser");return;case"apps":case"appList":case"appId":B(null),P(null),r("appSource");return;case"chooser":if(L())return;Tt.current();return;default:Tt.current()}},[t,Oe]),dt=(0,J.useCallback)(()=>{let I=He.current;if(I){let L=ge.current.getDefaults();ge.current.setDefaults({...L,tui_target:I}),He.current=null}le()},[le]);return Tt.current=dt,{phase:t,kind:n,selectKind:Kt,checks:f,targets:w,apps:x,busyMessage:m,error:U,device:F,target:$,saved:fe,begin:mr,recheck:kr,install:Kr,cancel:dt,back:Te,selectTarget:Cr,confirmSaved:gr,requestApp:hr,requestAppSource:vr,requestCloudApps:Rt,requestAppId:br,selectApp:Q,selectAppId:Er,skipApp:ce,bindAppForRun:ae,validateBinding:ne,reset:le}}var gn=D(Ee(),1);function Bu(e){let{phase:t,device:r,requestApp:n,pendingRef:o,dispatch:i,notify:s,onSettle:u}=e,f=(0,gn.useRef)(null),g=(0,gn.useRef)(!1);(0,gn.useEffect)(()=>{let w=o.current;if(!w){f.current=null,g.current=!1;return}if(t!=="idle"&&(g.current=!0),t==="ready"&&r){if(r.app_package){o.current=null,f.current=null,g.current=!1,u?.(),i(w);return}f.current!=="apps"&&(f.current="apps",n());return}if(f.current!==t){if(t==="doctor"){f.current="doctor",s({type:"error",text:`Mobile setup is blocked, so "${w}" has not run. Install the managed tooling from the panel (i, then i again to confirm), or press Esc to cancel.`});return}if(t==="idle"){if(!g.current)return;o.current=null,f.current=null,g.current=!1,u?.(),s({type:"info",text:`Mobile setup cancelled \u2014 "${w}" was not run.`})}}},[t,r,n,o,i,s,u])}import{stat as Ih}from"fs/promises";async function $u(e){let t=e.statFile??Ih,r="";if(!wr(e.app))try{let n=await t(e.app);r=`${n.mtimeMs}:${n.size}`}catch{return null}return[e.udid,e.app,r,String(e.runnerGen)].join("\0")}function Ou(e){let t=/(^|\s)@(?:"([^"]+)"|(\S+))/g,r=null;return{objective:e.replace(t,(o,i,s,u)=>(r=s??u??null,i)).replace(/\s+/g," ").trim(),token:r}}import{readFile as Mu,readdir as Ah,stat as _h}from"fs/promises";import{extname as ju,join as Vu,relative as Ph}from"path";var Dh=new Set(["node_modules",".git"]),Lh=new Set([".apk",".zip",".apks",".aab",".ipa",".app"]);function Fu(e){return e.state!=="incompatible"}var Nu=new Map;function Bh(e,t){return`${e}\0${t?.platform??""}\0${t?.androidApiLevel??""}\0${t?.androidAbis?.join(",")??""}`}function $h(e){let t=typeof e=="number"?e:typeof e=="string"?Number(e):NaN;return Number.isInteger(t)&&t>0?t:void 0}function Oh(e){let t=new Set;return Ks(e,{filter:r=>{let n=/^lib\/([^/]+)\//.exec(r.name);return n?.[1]&&t.add(n[1]),!1}}),[...t].sort()}async function Uu(e,t,r={}){let n=r.limit??50,o=r.maxDepth??6,i=t.toLowerCase(),s=[];async function u(f,g){if(s.length>=n||g>o)return;let w;try{w=await Ah(f,{withFileTypes:!0,encoding:"utf8"})}catch{return}for(let p of w){if(s.length>=n)return;if(p.name.startsWith(".")||Dh.has(p.name)||p.name.startsWith("output-"))continue;let x=Vu(f,p.name),c=ju(p.name).toLowerCase();if(Lh.has(c)&&(p.isFile()||c===".app"&&p.isDirectory())){let P=Ph(e,x);(!i||P.toLowerCase().includes(i))&&s.push(P);continue}p.isDirectory()&&await u(x,g+1)}}return await u(e,0),s}async function qu(e,t){let r;try{r=(await _h(e)).mtimeMs}catch{}let n=Bh(e,t),o=r===void 0?void 0:Nu.get(n);if(o&&o.mtimeMs===r)return o.result;let i=u=>(r!==void 0&&Nu.set(n,{mtimeMs:r,result:u}),u),s=ju(e).toLowerCase();if(!t)return i({state:"unverified",reason:"Choose a device to verify compatibility"});if(t.platform==="android"){if(s===".aab")return i({state:"incompatible",reason:"app bundle \u2014 build an .apk instead"});if(s===".apks")return i({state:"incompatible",reason:"split bundles are not supported \u2014 build an .apk"});if(s===".app"||s===".ipa"||s===".zip")return i({state:"incompatible",reason:"iOS artifact"});if(s!==".apk")return i({state:"unverified",reason:"Unknown artifact type"});try{let{default:u}=await import("./adbkit-apkreader-ORZBGCJQ.js"),g=await(await u.open(e)).readManifest();if(!g?.package)return i({state:"unverified",reason:"APK manifest has no package id"});let w=$h(g.usesSdk?.minSdkVersion);if(w!==void 0&&t.androidApiLevel!==void 0&&w>t.androidApiLevel)return i({state:"incompatible",reason:`requires Android API ${w}; ${t.displayName} is API ${t.androidApiLevel}`});let p=Oh(new Uint8Array(await Mu(e)));if(p.length>0){if(!t.androidAbis||t.androidAbis.length===0)return i({state:"unverified",reason:`APK native ABI (${p.join(", ")}) could not be compared with this device`});if(!p.some(x=>t.androidAbis.includes(x)))return i({state:"incompatible",reason:`APK supports ${p.join(", ")}; device supports ${t.androidAbis.join(", ")}`})}return i({state:"compatible"})}catch(u){return i({state:"unverified",reason:`Could not read APK manifest: ${u instanceof Error?u.message:String(u)}`})}}if(s===".apk"||s===".aab"||s===".apks")return i({state:"incompatible",reason:"Android artifact"});if(s===".ipa")return i({state:"incompatible",reason:"an .ipa cannot be installed on a simulator \u2014 use a .zip"});if(s===".app")try{let u=await Mh(Vu(e,"Info.plist")),f=Array.isArray(u.CFBundleSupportedPlatforms)?u.CFBundleSupportedPlatforms.filter(w=>typeof w=="string"):void 0;if(f&&t.kind==="simulator"&&!f.includes("iPhoneSimulator"))return i({state:"incompatible",reason:`device build (${f.join(", ")}) \u2014 build for the simulator`});let g=typeof u.MinimumOSVersion=="string"?u.MinimumOSVersion:void 0;return g&&t.osVersion&&Nh(g,t.osVersion)>0?i({state:"incompatible",reason:`requires iOS ${g}; ${t.displayName} runs iOS ${t.osVersion}`}):i({state:"incompatible",reason:"zip this bundle and use the .zip"})}catch(u){return i({state:"unverified",reason:`Could not read the app bundle: ${u instanceof Error?u.message:String(u)}`})}return i({state:"unverified",reason:"Unknown artifact type"})}function Nh(e,t){let r=e.split(".").map(o=>Number(o)||0),n=t.split(".").map(o=>Number(o)||0);for(let o=0;o<Math.max(r.length,n.length);o++){let i=(r[o]??0)-(n[o]??0);if(i!==0)return i}return 0}async function Mh(e){let r=(await Mu(e)).toString("utf8");if(!r.startsWith("bplist"))try{return JSON.parse(r)}catch{}let{runExec:n}=await import("./exec-P2IKJRRR.js"),o=await n("plutil",["-convert","json","-o","-",e],{timeoutMs:15e3});if(o.code!==0)throw new Error(o.stderr.trim()||`plutil exited ${o.code}`);return JSON.parse(o.stdout)}var wo=D(Ee(),1);function Hu(e){let t=(0,wo.useRef)(e);return t.current=e,(0,wo.useCallback)(async r=>{let{auth:n,env:o,kind:i,baseUrlFor:s,makeClient:u}=t.current,f=i();if(!f)throw new Error("Pick a device before browsing your uploads.");let w=await n.resolveBasicAuth().catch(()=>null)??n.getResolvedBasicAuth();if(!w?.username||!w.access_key)throw new Error("Log in to browse your uploads, or choose a local build.");let p=s?s(o):an(o);return(u?u(p,{username:w.username,accessKey:w.access_key}):new ra(p,{username:w.username,accessKey:w.access_key})).list({type:f,...r})},[])}var hn=D(G(),1);function Gu({suggested:e,sessionTargetLabel:t,appHint:r,savedDeviceName:n,onAccept:o,onPickDevice:i,onKeep:s,onCancel:u}){Be((w,p)=>{if(p.escape){u();return}if(p.return){o();return}if(e==="mobile"&&w==="p"){i?.();return}w==="k"&&s()});let f=e==="mobile"?`This looks like a mobile test${r?` (${r})`:""}.`:"This looks like a web test.",g=e==="mobile"?n?`run on ${n} (saved)`:"set up a device":"run on Desktop";return(0,hn.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,children:[(0,hn.jsx)(a,{color:l.orange,children:f}),(0,hn.jsxs)(a,{color:l.dim,children:[` \u21B5 ${g}`,e==="mobile"?" p pick a device":"",` k keep ${t}`," esc cancel"]})]})}async function Wu(e){let t=e.cache?.get(e.objective);if(t)return t;let r=e.fetchImpl??fetch,n=new AbortController,o=setTimeout(()=>n.abort(),e.timeoutMs??3e3);try{let i=await r(`${e.controllerBaseUrl}/classify-intent`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:e.authHeader},body:JSON.stringify({objective:e.objective,session_target:e.sessionTarget}),signal:n.signal});if(!i.ok)return null;let s=jh(await i.json());return s&&e.cache?.set(e.objective,s),s}catch{return null}finally{clearTimeout(o)}}function jh(e){if(typeof e!="object"||e===null)return null;let t=e,r=t.target;if(r!=="web"&&r!=="mobile"&&r!=="ambiguous"||typeof t.confidence!="number"||!Number.isFinite(t.confidence))return null;let n={target:r,confidence:Math.min(1,Math.max(0,t.confidence))};return(t.platform==="android"||t.platform==="ios")&&(n.platform=t.platform),typeof t.app_hint=="string"&&t.app_hint.trim()!==""&&(n.appHint=t.app_hint.trim()),n}function Xu(e,t){return e?e.target==="ambiguous"||e.target===t?{kind:"proceed"}:e.confidence<.8?{kind:"proceed"}:{kind:"mismatch",suggested:e.target,verdict:e}:{kind:"proceed"}}var zu=D(Ee(),1);var Fe=D(G(),1),Vh={pass:"\u2713",fail:"\u2717",info:"\u2139"},Fh={pass:l.green,fail:l.red,info:l.secondary};function Ku({checks:e,busyMessage:t,onRetry:r,onInstall:n,onCancel:o}){let[i,s]=(0,zu.useState)(!1);Be((x,c)=>{if(c.escape){o();return}(x==="r"||x==="R")&&r(),(x==="i"||x==="I")&&(i?n():s(!0))});let u=e.filter(x=>x.required&&x.status==="fail").length,f=e.filter(x=>x.status!=="info"),g=new Map;for(let x of f)x.status==="fail"&&x.fixText&&!g.has(x.fixText)&&g.set(x.fixText,x.id);let p=["emulator",...process.platform==="darwin"?["simulator"]:[]].map(x=>`\u2022 kaneai-mobile-deps ${x}
3
+ resolved for kane-cli ${xt} via your KaneAI account
4
+ \u2192 ~/.testmuai/kaneai/mobile/deps/${x}`).join(`
5
+ `);return(0,Fe.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.red,paddingX:2,paddingY:1,children:[(0,Fe.jsxs)(b,{children:[(0,Fe.jsx)(a,{color:l.red,bold:!0,children:"Device setup"}),(0,Fe.jsx)(a,{color:l.dim,children:u>0?` ${u} blocking issue${u===1?"":"s"}`:" all checks passed"})]}),(0,Fe.jsxs)(b,{flexDirection:"column",marginTop:1,children:[t&&(0,Fe.jsx)(a,{color:l.secondary,children:t}),f.length===0?(0,Fe.jsx)(a,{color:l.dim,children:"No checks reported."}):f.map(x=>(0,Fe.jsxs)(b,{flexDirection:"column",children:[(0,Fe.jsxs)(b,{children:[(0,Fe.jsxs)(a,{color:Fh[x.status],children:[Vh[x.status]," "]}),(0,Fe.jsx)(a,{children:x.label}),x.detail?(0,Fe.jsxs)(a,{color:l.dim,children:[" \u2014 ",x.detail]}):null]}),x.status==="fail"&&x.fixText&&g.get(x.fixText)===x.id?(0,Fe.jsx)(b,{marginLeft:4,children:(0,Fe.jsxs)(a,{color:l.dim,children:["fix: ",x.fixText]})}):null]},x.id))]}),i&&(0,Fe.jsxs)(b,{flexDirection:"column",marginTop:1,children:[(0,Fe.jsx)(a,{color:l.orange,children:"Press i again to download:"}),(0,Fe.jsx)(a,{color:l.dim,children:p})]}),(0,Fe.jsx)(jt,{bindings:[{keys:"i",label:"install"},{keys:"r",label:"recheck"}],escBackLabel:"cancel"})]})}var bn=D(Ee(),1);var at=D(G(),1),as=800,cs=3840,ls=600,us=2160;function Yu(e,t){if(!t)return"Enter a value";let r=Number(t);if(!Number.isInteger(r))return"Must be a whole number";if(e==="width"){if(r<as)return`Min ${as}`;if(r>cs)return`Max ${cs}`}else{if(r<ls)return`Min ${ls}`;if(r>us)return`Max ${us}`}return null}function ds({currentWidth:e,currentHeight:t,onSelect:r,onCancel:n}){let[o,i]=(0,bn.useState)("width"),[s,u]=(0,bn.useState)(String(e)),[f,g]=(0,bn.useState)(String(t)),[w,p]=(0,bn.useState)(null);Be((c,m)=>{if(m.escape){n();return}if(m.tab||m.rightArrow||m.leftArrow){i(P=>P==="width"?"height":"width"),p(null);return}if(m.return){let P=Yu("width",s);if(P){i("width"),p(`Width: ${P}`);return}let U=Yu("height",f);if(U){i("height"),p(`Height: ${U}`);return}r(Number(s),Number(f));return}if(m.backspace||m.delete){o==="width"?u(P=>P.slice(0,-1)):g(P=>P.slice(0,-1)),p(null);return}c&&/^\d$/.test(c)&&(o==="width"?u(P=>P+c):g(P=>P+c),p(null))});let x=(c,m,P)=>{let U=o===P,B=U?l.orange:l.secondary;return(0,at.jsxs)(b,{flexDirection:"column",children:[(0,at.jsxs)(a,{color:l.dim,children:[" ",c]}),(0,at.jsx)(b,{borderStyle:"round",borderColor:B,paddingX:1,width:10,children:(0,at.jsxs)(a,{color:U?void 0:l.dim,children:[m||" ",U?(0,at.jsx)(a,{color:l.dim,children:"\u2588"}):""]})}),(0,at.jsxs)(a,{color:l.dim,dimColor:!0,children:[" ",P==="width"?`${as}\u2013${cs}`:`${ls}\u2013${us}`]})]})};return(0,at.jsxs)(b,{flexDirection:"column",paddingX:1,children:[(0,at.jsx)(a,{color:l.orange,bold:!0,children:"Window Size"}),(0,at.jsxs)(b,{marginTop:1,gap:1,children:[x("Width",s,"width"),(0,at.jsx)(b,{alignItems:"center",marginTop:1,children:(0,at.jsx)(a,{color:l.dim,children:"x"})}),x("Height",f,"height")]}),w&&(0,at.jsx)(b,{marginTop:1,children:(0,at.jsx)(a,{color:l.red,children:w})}),(0,at.jsx)(jt,{bindings:[{keys:"tab/\u2190\u2192",label:"switch field"},{keys:"\u21B5",label:"save"}],escBackLabel:"cancel"})]})}var ct=D(Ee(),1);async function Ju(e,t,r){let n=e.loadCredentials(t,r),o=e.loadClient(t,r);if(n&&o){let s=new Ys(r);await Promise.allSettled([s.revokeToken(n.access_token,o.client_id,"access_token"),s.revokeToken(n.refresh_token,o.client_id,"refresh_token")])}e.deleteProfileFull(t,r);let i=e.listProfiles();return i.length>0&&(e.setActiveProfile(i[0].profile),e.setDefaultEnv(i[0].env)),{profile:t,env:r,switchedTo:i.length>0?i[0]:void 0}}function Qu(){let[e]=(0,ct.useState)(()=>new Gn),[t,r]=(0,ct.useState)(()=>{let m=e.resolveAuth();if(!m)return!1;if(m.method==="basic")return!0;let{credentials:P}=e.getActiveCredentials();return P?P.expires_at>Date.now()/1e3:!1}),n=(0,ct.useRef)(null),o=(0,ct.useRef)(null),i=(0,ct.useCallback)(()=>{let m=e.resolveAuth();return m?{method:m.method,profile:m.profile,env:m.env}:null},[e]),s=(0,ct.useCallback)(async()=>{let{credentials:m,profile:P,env:U}=e.getActiveCredentials();if(!m||!P||!U)return null;let B=m.expires_at,F=Date.now()/1e3;if(B-F<300){if(o.current)return o.current;let H=(async()=>{try{let $=await Js({creds:e,profile:P,env:U,credentials:m});return $?(r(!0),$.accessToken):null}catch{return r(!1),null}finally{o.current=null}})();return o.current=H,H}return r(!0),m.access_token},[e]),u=(0,ct.useCallback)(()=>{let m=e.resolveAuth();return!m||m.method!=="basic"?null:{username:m.username,access_key:m.access_key}},[e]),f=(0,ct.useCallback)((m,P)=>{n.current?.revoke();let U=Ge(m),B=u(),F=new va(U.controllerBaseUrl,s,B,P);return n.current=F,F},[u,s]),g=(0,ct.useCallback)(()=>n.current,[]),w=(0,ct.useCallback)(()=>{let m=u();if(m)return m;let P=n.current?.cached;return P?{username:P.username,access_key:P.access_key}:null},[u]),p=(0,ct.useCallback)(async()=>{let m=n.current;return m?m.resolve():null},[]),x=(0,ct.useCallback)(async(m="default")=>{let P=e.getDefaultEnv();await new ba(m,P,e).login(),e.setActiveProfile(m);try{let B=new Vr;Ct(e,B,m,P)}catch{}r(!0)},[e]),c=(0,ct.useCallback)(async()=>{let m=e.getActiveProfile();if(!m)return null;let P=e.getDefaultEnv(),U=await Ju(e,m,P);return r(!1),{profile:U.profile,env:U.env}},[e]);return{creds:e,tokenValid:t,setTokenValid:r,getToken:s,getBasicAuth:u,getAuthInfo:i,login:x,logout:c,initResolver:f,getResolver:g,getResolvedBasicAuth:w,resolveBasicAuth:p}}var Zt=D(Ee(),1);import{mkdtempSync as Uh,rmSync as qh}from"fs";import{join as Hh}from"path";import{tmpdir as Gh}from"os";function Zu(){let[e]=(0,Zt.useState)(()=>new Vr),t=(0,Zt.useRef)(null),r=(0,Zt.useRef)(null),n=(0,Zt.useRef)(null),o=(0,Zt.useCallback)(async s=>{if(t.current)return t.current;if(n.current)return n.current;let u=(async()=>{let f=e.load(),g;if(f.chrome_profile_path)g=f.chrome_profile_path.replace("~",process.env.HOME??"~");else{r.current&&(ur("tempDir","Previous temp dir removed before retry"),r.current=null);let p=Uh(Hh(Gh(),"kane-clean-"));r.current=p,g=p,Vt("tempDir",()=>{try{qh(p,{recursive:!0,force:!0})}catch{}})}let w=await ya({userDataDir:g,width:f.window_size.width,height:f.window_size.height,startUrl:s??f.default_url??void 0});return t.current=w,Vt("chrome",()=>{w.kill()}),w})();n.current=u;try{return await u}finally{n.current=null}},[e]),i=(0,Zt.useCallback)(()=>{ur("chrome","Chrome killed"),ur("tempDir","Temp dir removed"),t.current=null,r.current=null},[]);return{ensureChrome:o,killChrome:i}}var To=[{name:"run",description:"Execute a test run",args:'[--url <url>] "objective"'},{name:"login",description:"OAuth login",args:"[--profile name]"},{name:"logout",description:"Logout & revoke tokens",args:"[--profile name]"},{name:"whoami",description:"Show profile info",args:"[--profile name]"},{name:"balance",description:"Show credit balance"},{name:"profiles",description:"Manage profiles",args:"list|switch|delete"},{name:"config",description:"Manage configuration",args:"show|set-window|set-mode|set-assertion-mode|set-network-ws|set-network-sse|set-bug-detection|chrome-profile|project|folder|hints"},{name:"new",description:"Start a fresh session (uploads current first)"},{name:"name",description:"Set the current session's name (used at /exit save)",args:"<new-name>"},{name:"summary",description:"View detailed run summaries",args:"[index]"},{name:"cancel",description:"Abort current run"},{name:"help",description:"Show command reference"},{name:"clear",description:"Clear chat history"},{name:"exit",description:"Quit kane-cli"}],Wh={web:"desktop"};function Xh(e){return Wh[e]??e}function Ro(e){let t=e.trim();if(!t.startsWith("/"))return null;let n=t.slice(1).match(/(?:[^\s"]+|"[^"]*")+/g)??[];if(n.length===0)return null;let o=n[0],i={},s=1;for(;s<n.length;){let u=n[s];if(u.startsWith("--")){let f=u.slice(2),g=n[s+1];g&&!g.startsWith("--")?(i[f]=g.replace(/^"|"$/g,""),s+=2):(i[f]=void 0,s++)}else{let f=u.replace(/^"|"$/g,"");o==="run"?i.objective=f:o==="config"?i.action?i.value=f:i.action=f:o==="profiles"?i.action=f:o==="summary"&&(i.index=f),s++}}return{command:Xh(o),args:i,raw:t}}var eS=[{name:"Testing",commands:To.filter(e=>["run","cancel"].includes(e.name))},{name:"Auth",commands:To.filter(e=>["login","logout","whoami","balance","profiles"].includes(e.name))},{name:"Settings",commands:To.filter(e=>["config"].includes(e.name))},{name:"Session",commands:To.filter(e=>["new","name","summary","help","clear","exit"].includes(e.name))}];var ed=[{name:"mobile",description:"Switch the session to an emulator or simulator"},{name:"desktop",description:"Switch the session back to Desktop (Chrome)"},{name:"doctor",description:"Check mobile tooling & devices"},{name:"testmd",description:"Browse & run saved tests under cwd"},{name:"auth",description:"Login, logout, profiles"},{name:"config",description:"Chrome, run & generate settings",args:""},{name:"help",description:"Command reference"},{name:"new",description:"Start a fresh session"},{name:"name",description:"Set the session name",args:"<new-name>"},{name:"exit",description:"Quit kane-cli"}],zh={name:"cancel",description:"Abort current run"},Kh={name:"cancel",description:"Cancel current generation"},Wr=[{name:"generate",description:"Switch to Generate mode (test case generator)"},{name:"summary",description:"View run summaries",args:"[index]"},zh,...ed],vn=[{name:"run",description:"Switch back to Run mode"},{name:"save",description:"Save the current test cases"},{name:"view",description:"Open the scenario browser",args:"[S<n>]"},Kh,...ed],td=Wr,Yh=new Set(["mobile","doctor"]),Jh=new Set(["mobile","desktop"]);function rd(e,t){return t?e.map(r=>Jh.has(r.name)?{...r,disabled:!0,disabledReason:`locked \u2014 session ran on ${t.label}; /new to switch`}:r):e}function xn(e,t=Or()){return t?e:e.filter(r=>!Yh.has(r.name))}function ko(e,t="run"){let r=xn(t==="generate"?vn:Wr),n=e.startsWith("/")?e.slice(1):e;return n?r.filter(o=>o.name.startsWith(n)):r}var Qh=new Set([...Wr,...vn].map(e=>e.name));function nd(e,t){let r=t==="generate"?vn:Wr;return Qh.has(e)?r.some(n=>n.name===e):!0}var od=D(Ee(),1);var yt=D(G(),1);function Zh(e){let t=[{id:"device",label:e.deviceMissing?"Choose a device":"Change device"},{id:"app",label:e.appMissing?"Choose an app":"Change app"}];return e.deviceMissing||e.appMissing?e.deviceMissing?t:[t[1],t[0]]:[{id:"continue",label:"Continue"},...t]}function id({saved:e,onContinue:t,onChangeDevice:r,onChangeApp:n,onCancel:o}){let i=Zh(e),[s,u]=(0,od.useState)(0);Be((p,x)=>{if(x.escape){o();return}if(x.upArrow&&u(c=>Math.max(0,c-1)),x.downArrow&&u(c=>Math.min(i.length-1,c+1)),x.return){let c=i[s];c.id==="continue"?t():c.id==="device"?r():n()}});let f=e.deviceMissing?`${e.savedDeviceLabel} \u2014 not connected`:`${e.target.displayName} ${e.target.id}`,g=e.savedAppLabel&&e.savedAppLabel!==e.appPath?` ${e.savedAppLabel}`:"",w=e.appMissing?e.savedAppLabel?`${e.savedAppLabel} \u2014 not found`:"none chosen yet":`${e.appPath}${g}`;return(0,yt.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:[(0,yt.jsx)(a,{color:l.orange,bold:!0,children:"Running on"}),(0,yt.jsxs)(b,{marginTop:1,flexDirection:"column",children:[(0,yt.jsxs)(b,{children:[(0,yt.jsx)(a,{color:l.dim,children:" Device "}),(0,yt.jsx)(a,{color:e.deviceMissing?l.red:void 0,children:f})]}),(0,yt.jsxs)(b,{children:[(0,yt.jsx)(a,{color:l.dim,children:" App "}),(0,yt.jsx)(a,{color:e.appMissing?l.red:void 0,children:w})]})]}),(0,yt.jsx)(b,{marginTop:1,flexDirection:"column",children:i.map((p,x)=>(0,yt.jsxs)(a,{color:x===s?l.orange:void 0,children:[x===s?"\u276F ":" ",p.label]},p.id))}),(0,yt.jsx)(jt,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"select"}],escBackLabel:"back to chat"})]})}function sd(e,t){let r=t?.trim();return r?e==="generate"?{kind:"reject"}:{kind:"run",objective:r}:e==="generate"?{kind:"toggle"}:{kind:"already"}}var fr=D(G(),1);function fs({flows:e,filterIndex:t}){let r=t!==void 0?e.filter(n=>n.index===t):e;return r.length===0?null:(0,fr.jsx)(b,{flexDirection:"column",children:r.map(n=>(0,fr.jsxs)(b,{flexDirection:"column",marginTop:1,children:[(0,fr.jsxs)(b,{marginLeft:1,children:[(0,fr.jsx)(a,{color:l.purple,bold:!0,children:"Flow "+n.index+": "}),(0,fr.jsx)(a,{color:l.purple,children:n.objective})]}),(0,fr.jsx)(Va,{status:n.status==="error"?"failed":n.status,summary:n.summary,duration:n.duration,steps:n.steps,stepsPassed:n.stepsPassed,stepsFailed:n.stepsFailed,reason:n.reason,creditsConsumed:n.creditsConsumed})]},n.index))})}var pr=D(G(),1),eb={ok:"\u2713",error:"\u2717",cancelled:"\u2298"},tb={ok:l.green,error:l.red,cancelled:l.dim};function ad({status:e,command:t,message:r,details:n,accentColor:o}){let i=t.startsWith("/")?t.slice(1):t,s=o??tb[e];return(0,pr.jsxs)(b,{flexDirection:"column",marginLeft:2,marginTop:1,children:[(0,pr.jsx)(b,{marginLeft:1,children:(0,pr.jsxs)(a,{color:s,bold:!0,children:[eb[e]," ",i]})}),(0,pr.jsxs)(b,{borderStyle:"round",borderColor:s,paddingX:2,flexDirection:"column",width:70,children:[(0,pr.jsx)(a,{children:r}),n&&(0,pr.jsx)(a,{color:l.dim,children:n})]})]})}var Tn=D(Ee(),1);import{join as Sn}from"path";var yn=D(G(),1);function cd({tabs:e,activeIndex:t}){return(0,yn.jsx)(b,{children:e.map((r,n)=>(0,yn.jsx)(b,{marginRight:1,children:n===t?(0,yn.jsx)(a,{color:l.orange,bold:!0,children:`[ ${r} ]`}):(0,yn.jsx)(a,{color:l.dim,children:` ${r} `})},r))})}var _=D(G(),1),wn=["Commands","Shortcuts","Tests","Setup","About"],Co=21,rb="https://www.testmuai.com/support/docs/kane-cli-introduction",nb="https://github.com/LambdaTest/kane-cli/issues";function ld({onClose:e,version:t,environment:r,sessionId:n,runUrl:o,mode:i="run"}){let[s,u]=(0,Tn.useState)(0),[f,g]=(0,Tn.useState)(0);(0,Tn.useEffect)(()=>{g(0)},[s]);let w=wn[s],p=w==="Commands"?ob(i):w==="Shortcuts"?ib():w==="Tests"?sb():w==="Setup"?ab():cb({version:t,environment:r,sessionId:n,runUrl:o}),x=p.length,c=f>0,m=f+Co<x,P=p.slice(f,f+Co);Be((B,F)=>{if(F.escape){e();return}if(F.rightArrow||F.tab){u(H=>(H+1)%wn.length);return}if(F.leftArrow){u(H=>(H-1+wn.length)%wn.length);return}if(F.upArrow){g(H=>Math.max(0,H-1));return}if(F.downArrow){g(H=>Math.min(Math.max(0,x-Co),H+1));return}});let U=[{keys:"\u2190\u2192/tab",label:"switch tabs"}];return x>Co&&U.push({keys:"\u2191\u2193",label:"scroll"}),(0,_.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:[(0,_.jsx)(cd,{tabs:[...wn],activeIndex:s,onChange:u}),c&&(0,_.jsx)(b,{marginTop:1,children:(0,_.jsx)(a,{color:l.dim,children:"\u25B2 more above"})}),(0,_.jsx)(b,{marginTop:c?0:1,flexDirection:"column",children:P}),m&&(0,_.jsx)(b,{children:(0,_.jsx)(a,{color:l.dim,children:"\u25BC more below"})}),(0,_.jsx)(jt,{bindings:U,escBackLabel:"back to chat"})]})}function ob(e){let t=xn(e==="generate"?vn:Wr);return[(0,_.jsx)(a,{color:l.dim,children:"Type a natural-language objective and press \u21B5 to run, e.g."},"intro"),(0,_.jsx)(b,{marginLeft:2,children:(0,_.jsx)(a,{color:l.orange,children:'"search amazon for laptop"'})},"ex"),(0,_.jsx)(b,{marginBottom:1},"sp"),(0,_.jsx)(a,{color:l.dim,bold:!0,children:"Slash commands"},"cmd-h"),...t.map(r=>(0,_.jsxs)(b,{marginLeft:2,children:[(0,_.jsx)(b,{width:14,children:(0,_.jsxs)(a,{color:l.orange,children:["/",r.name]})}),r.args&&(0,_.jsx)(b,{width:14,children:(0,_.jsx)(a,{color:l.dim,children:r.args})}),(0,_.jsx)(a,{color:l.dim,children:r.description})]},r.name)),(0,_.jsx)(b,{marginBottom:1},"sp2"),(0,_.jsx)(b,{marginLeft:2,children:(0,_.jsx)(a,{color:l.dim,children:"/auth submenu: login \xB7 logout \xB7 whoami \xB7 profiles \xB7 balance"})},"auth-sub"),(0,_.jsx)(b,{marginLeft:2,children:(0,_.jsx)(a,{color:l.dim,children:"/config submenu: show \xB7 run (mode \xB7 assertion-mode) \xB7 generate \xB7 chrome-profile \xB7 project \xB7 folder \xB7 window \xB7 hints"})},"config-sub")]}function Eo(e,t){return[(0,_.jsx)(a,{color:l.dim,bold:!0,children:e},`h-${e}`),...t.map(([r,n],o)=>(0,_.jsxs)(b,{marginLeft:2,children:[(0,_.jsx)(b,{width:26,children:(0,_.jsx)(a,{color:l.orange,children:r})}),(0,_.jsx)(a,{color:l.dim,children:n})]},`r-${e}-${o}`)),(0,_.jsx)(b,{marginBottom:1},`s-${e}`)]}function ib(){return[...Eo("Cursor & word edit",[["\u2190 \u2192","Cursor by char"],["Ctrl+A Ctrl+E","Start / end of line"],["Home End","Start / end (Linux/Win; rare on Mac laptops)"],["Backspace","Delete char before cursor"],["Ctrl+W","Delete word back"],["Ctrl+U","Clear input"],["Ctrl+K","Kill from cursor to end"],["Ctrl+\u2190 Ctrl+\u2192","Word jump (Linux/Win, iTerm2)"],["Option+\u2190 Option+\u2192","Word jump (Mac native)"],["Option+B Option+F","Word jump (Mac, Emacs-style)"],["Alt+Backspace","Delete word back (Option+Delete on Mac)"],["Ctrl+Delete Option+Fn+Del","Delete word forward"]]),...Eo("History & completion",[["\u2191 \u2193","Previous / next history"],["Tab","Accept ghost / fill highlighted command"],["Ctrl+R","Reverse-search history"],["\u21B5","Submit"],["Esc","Close overlay / clear / back"]]),...Eo("Lists & menus",[["\u2191 \u2193","Navigate"],["type any char","Filter"],["\u21B5","Select"],["Tab","Create-new (in pickers)"],["Esc","Clear filter, then back"]]),...Eo("Global",[["Ctrl+C","Cancel run \xB7 twice exits"]]),(0,_.jsx)(a,{color:l.dim,bold:!0,children:"Platform caveats"},"cv-h"),(0,_.jsx)(a,{color:l.dim,children:'\u2022 Mac Terminal.app: enable "Use Option as Meta key" (Profile \u2192 Keyboard)'},"cv-1"),(0,_.jsx)(a,{color:l.dim,children:"\u2022 Mac iTerm2: works by default (Esc+ mode)"},"cv-2"),(0,_.jsx)(a,{color:l.dim,children:"\u2022 Mac Mission Control may intercept Ctrl+arrow \u2014 use Option+arrow instead"},"cv-3"),(0,_.jsx)(a,{color:l.dim,children:"\u2022 Bare Forward Delete acts as Backspace (Ink can't disambiguate)"},"cv-4"),(0,_.jsx)(a,{color:l.dim,children:"\u2022 Shift+arrow is parsed but unbound (selection model is future)"},"cv-5"),(0,_.jsx)(a,{color:l.dim,children:"\u2022 Thousands of terminals exist \u2014 if a shortcut fails, run `cat` to see bytes"},"cv-6")]}function sb(){return[(0,_.jsxs)(a,{color:l.dim,children:["Sessions you run here are saved as ",(0,_.jsx)(a,{color:l.orange,children:"*_test.md"})," files you can replay later."]},"t-intro"),(0,_.jsx)(b,{marginBottom:1},"t-sp1"),(0,_.jsx)(a,{color:l.dim,bold:!0,children:"Auto-save"},"t-save-h"),(0,_.jsxs)(a,{color:l.dim,children:[" In ",(0,_.jsx)(a,{color:l.orange,children:"testing"})," mode, /exit prompts to save the session under a name (default: timestamp)."]},"t-save-1"),(0,_.jsxs)(a,{color:l.dim,children:[" In ",(0,_.jsx)(a,{color:l.orange,children:"action"})," mode, sessions are ephemeral unless launched with --name or set via /name."]},"t-save-2"),(0,_.jsxs)(a,{color:l.dim,children:[" Output: ",(0,_.jsx)(a,{color:l.orange,children:"<cwd>/.testmuai/tests/<name>_test.md"})," + sibling ",(0,_.jsx)(a,{color:l.orange,children:"output-<name>/"})," (Result.md + .internal/meta.json)."]},"t-save-3"),(0,_.jsx)(b,{marginBottom:1},"t-sp2"),(0,_.jsx)(a,{color:l.dim,bold:!0,children:"Replay from a shell"},"t-run-h"),(0,_.jsxs)(a,{color:l.dim,children:[" ",(0,_.jsx)(a,{color:l.orange,children:"kane-cli testmd run path/to/foo_test.md"})," \xB7 ",(0,_.jsx)(a,{color:l.orange,children:"kane-cli testmd list"})," \xB7 bare ",(0,_.jsx)(a,{color:l.orange,children:"kane-cli testmd"})," opens a TTY picker."]},"t-run-1"),(0,_.jsx)(a,{color:l.dim,children:" The .md file carries its own config (mode, max_steps, variables, \u2026) so the replay is reproducible."},"t-run-2"),(0,_.jsx)(b,{marginBottom:1},"t-sp3"),(0,_.jsx)(a,{color:l.dim,bold:!0,children:"Naming a session mid-run"},"t-name-h"),(0,_.jsxs)(a,{color:l.dim,children:[" Type ",(0,_.jsxs)(a,{color:l.orange,children:["/name ","<new-name>"]})," any time before /exit. Name allowed chars: letters, digits, _, -."]},"t-name-1"),(0,_.jsxs)(a,{color:l.dim,children:[" Discarding at the save prompt: press ",(0,_.jsx)(a,{color:l.orange,children:"N"})," (only key that discards \u2014 every other key saves with default)."]},"t-name-2")]}function ab(){return[(0,_.jsx)(a,{color:l.dim,bold:!0,children:"1. Login"},"s1-h"),(0,_.jsx)(a,{color:l.dim,children:" /auth \u2192 login. OAuth opens browser; basic uses LambdaTest username + access key."},"s1-b"),(0,_.jsx)(a,{color:l.dim,bold:!0,children:"2. Project & folder"},"s2-h"),(0,_.jsx)(a,{color:l.dim,children:" /config project / /config folder. Esc auto-picks KaneAI Generated / Untitled."},"s2-b"),(0,_.jsx)(a,{color:l.dim,bold:!0,children:"3. Run settings (/config \u2192 Run)"},"s3-h"),(0,_.jsx)(a,{color:l.dim,children:" mode: testing = lenient, saves to TMS \xB7 action = hard-stop on errors (e.g. login w/o creds) so you can step in"},"s3-b"),(0,_.jsx)(a,{color:l.dim,children:" assertion-mode: visual (default) = read/assert via vision \xB7 dom = DOM-based extraction/assertions"},"s3-c"),(0,_.jsx)(b,{marginBottom:1},"spacer-1"),(0,_.jsx)(a,{color:l.dim,bold:!0,children:"Variables (later wins)"},"v-h"),(0,_.jsxs)(a,{color:l.dim,children:[" ",`${Sn(mt,"variables")}/*.json`," (global)"]},"v-1"),(0,_.jsxs)(a,{color:l.dim,children:[" ","{cwd}/.testmuai/variables/*.json"," (local) \xB7 --variables-file \xB7 --variables ","'{...}'"]},"v-2"),(0,_.jsx)(a,{color:l.dim,children:' Format: { "key": { "value": "...", "secret": false } } \xB7 ref via {{key}}'},"v-3"),(0,_.jsx)(b,{marginBottom:1},"spacer-2"),(0,_.jsx)(a,{color:l.dim,bold:!0,children:"Context files"},"c-h"),(0,_.jsxs)(a,{color:l.dim,children:[" Global: ",Sn(mt,"global-memory.md")]},"c-1"),(0,_.jsxs)(a,{color:l.dim,children:[" Local: ","{cwd}/.testmuai/context.md"," \xB7 CLI: --global-context, --local-context"]},"c-2"),(0,_.jsx)(b,{marginBottom:1},"spacer-3"),(0,_.jsx)(a,{color:l.dim,bold:!0,children:"Paths"},"p-h"),(0,_.jsxs)(a,{color:l.dim,children:[" Config: ",Sn(mt,"tui-config.json")," \xB7 Auth: ",Sn(mt,"config.json")]},"p-1"),(0,_.jsxs)(a,{color:l.dim,children:[" Sessions: ",Sn(mt,"sessions"),"/"]},"p-2")]}function cb({version:e,environment:t,sessionId:r,runUrl:n}){return[(0,_.jsxs)(b,{children:[(0,_.jsx)(a,{color:l.orange,bold:!0,children:"kane-cli "}),(0,_.jsxs)(a,{color:l.muted,children:["v",e]})]},"title"),(0,_.jsx)(b,{marginBottom:1},"sp"),(0,_.jsxs)(b,{children:[(0,_.jsx)(b,{width:14,children:(0,_.jsx)(a,{color:l.dim,children:"Environment"})}),(0,_.jsx)(a,{children:t})]},"env"),(0,_.jsxs)(b,{children:[(0,_.jsx)(b,{width:14,children:(0,_.jsx)(a,{color:l.dim,children:"Session"})}),(0,_.jsx)(a,{children:r})]},"sess"),(0,_.jsxs)(b,{children:[(0,_.jsx)(b,{width:14,children:(0,_.jsx)(a,{color:l.dim,children:"Default URL"})}),(0,_.jsx)(a,{color:l.orange,children:n})]},"url"),(0,_.jsx)(b,{marginBottom:1},"sp2"),(0,_.jsxs)(b,{children:[(0,_.jsx)(b,{width:14,children:(0,_.jsx)(a,{color:l.dim,children:"Docs"})}),(0,_.jsx)(a,{color:l.orange,underline:!0,children:rb})]},"docs"),(0,_.jsxs)(b,{children:[(0,_.jsx)(b,{width:14,children:(0,_.jsx)(a,{color:l.dim,children:"Bugs"})}),(0,_.jsx)(a,{color:l.orange,underline:!0,children:nb})]},"bugs")]}var Io=D(Ee(),1);import{existsSync as ud,readFileSync as IS,rmSync as lb,unlinkSync as ub}from"fs";function dd(e){let t=Fa(e);ud(t)&&lb(t,{recursive:!0,force:!0}),ud(e)&&ub(e)}var ps=D(G(),1);function fd({cwd:e,currentOrgId:t,onClose:r,onRun:n,onExport:o}){let[i,s]=(0,Io.useState)("list"),[u,f]=(0,Io.useState)(null),[g,w]=(0,Io.useState)(0);return i==="inspect"&&u?(0,ps.jsx)(qa,{path:u.path,relPath:u.relPath,onBack:()=>s("list"),onAction:p=>{if(p==="run")n(u);else if(p==="export")o(u);else{try{dd(u.path)}catch{}f(null),s("list"),w(x=>x+1)}}}):(0,ps.jsx)(Ua,{root:e,currentOrgId:t,onSelect:p=>{f(p),s("inspect")},onCancel:r},g)}var lt=D(Ee(),1);function pd(e){let[t,r]=(0,lt.useState)(null),[n,o]=(0,lt.useState)(!1),[i,s]=(0,lt.useState)(null),[u,f]=(0,lt.useState)(null),[g,w]=(0,lt.useState)(null),p=(0,lt.useRef)(0),x=(0,lt.useRef)([]),c=(0,lt.useRef)(!1),m=(0,lt.useRef)(null),P=(0,lt.useRef)(e);P.current=e;let U=(0,lt.useCallback)(async H=>{if(c.current)return null;c.current=!0;let $=++p.current,z=[];x.current=z;let fe=Y=>`testmd-run-${$}-${Y}`,oe={register:(Y,pe)=>{let we=fe(Y);z.push(we),Vt(we,pe)},deregister:Y=>sn(fe(Y)),cleanup:(Y,pe)=>ur(fe(Y),pe),remoteLogger:P.current.remoteLogger},ie={runSteps:Y=>new Promise(pe=>{let we=()=>{m.current=null,pe()};m.current=we,r({...Y,exitOnComplete:!1,onAllComplete:()=>{Y.onAllComplete?.(),we()}})}),onLockState:Y=>{},onAdaptiveHeal:Y=>{},onSummary:async Y=>{s(Y)},onLinks:async Y=>{f(Y)},runUpload:Y=>Y.execute(),onAgentEvent:Y=>{}};o(!0),s(null),f(null),w(null);try{let Y=await P.current.buildInput(H),pe=await ac(Y,ie,oe);return w(pe),pe}finally{c.current=!1,m.current=null,o(!1),r(null);for(let Y of z)ur(Y,"run-finished");z.length=0}},[]),B=(0,lt.useCallback)(()=>{for(let $ of x.current)ur($,"cancelled");x.current=[];let H=m.current;m.current=null,H?.()},[]),F=(0,lt.useCallback)(()=>{s(null),f(null),w(null)},[]);return{start:U,cancel:B,clearResult:F,running:n,runViewProps:t,summary:i,links:u,runSummary:g}}var nt=D(Ee(),1);function md(e={}){let[t,r]=(0,nt.useState)(()=>eo({requestId:"",objective:""})),[n,o]=(0,nt.useState)(!1),[i,s]=(0,nt.useState)(null),u=(0,nt.useRef)(null),f=(0,nt.useRef)(!1),g=(0,nt.useRef)(null),w=(0,nt.useCallback)(async(U,B,F)=>{f.current=!1;let H=0,$=0,z=0;for await(let fe of U){if(f.current)break;switch(r(oe=>dc(oe,fe)),fe.type){case"thinking_done":F?.("tcg_thinking",{tookMs:fe.tookMs});break;case"progress":{let oe=Math.min(100,Math.floor(fe.pct/25)*25);oe>z&&(z=oe,F?.("tcg_progress",{pct:oe}));break}case"snapshot":H=fe.data.scenarios.length,$=fe.data.scenarios.reduce((oe,ie)=>oe+(ie.test_cases?.length??0),0),F?.("tcg_snapshot",{scenarioCount:H,caseCount:$});break;case"clarification":F?.("tcg_clarification",{});break;case"done":F?.("tcg_request_done",{status:fe.status,scenarioCount:H,caseCount:$,durationMs:Date.now()-B});break;case"error":F?.("tcg_request_error",{errorCode:"tcg_request_failed",durationMs:Date.now()-B});break}}},[]),p=(0,nt.useCallback)(async(U,B)=>{if(u.current)throw new Error("useTcgSession: a session is already active; call reset() or end() first");let F=e.makeClient??fc;u.current=F(U),g.current=new AbortController;let H=eo({requestId:"",objective:B.prompt});r(to(H));let $;try{$=await u.current.start(B,g.current.signal)}catch(fe){throw u.current=null,g.current=null,r(oe=>({...oe,turnActive:!1})),fe}s($.requestId),r(to({...$.state,requestId:$.requestId,objective:B.prompt}));let z=Date.now();e.log?.("tcg_request_start",{request_id:$.requestId,objectiveChars:B.prompt.length,scenarioLimit:B.scenarioLimit,perScenarioLimit:B.perScenarioLimit,memoryEnhancement:B.memoryEnhancement}),await w($.events,z,e.log)},[w,e.makeClient,e.log]),x=(0,nt.useCallback)(async(U,B)=>{if(!u.current||!i)throw new Error("useTcgSession: chat() with no active request");r(F=>to(uc(F)));try{await u.current.chat(i,U,B)}catch(F){throw r(H=>({...H,turnActive:!1})),F}},[i]),c=(0,nt.useCallback)(async()=>{if(!(!i||!u.current)){f.current=!0,g.current&&g.current.abort();try{await u.current.cancel(i)}catch{}u.current=null,s(null),r(U=>({...U,turnActive:!1}))}},[i]),m=(0,nt.useCallback)(async()=>{if(!(!i||!u.current)){f.current=!0,g.current&&g.current.abort();try{await u.current.end(i)}catch{}u.current=null,s(null),r(U=>({...U,turnActive:!1}))}},[i]),P=(0,nt.useCallback)(()=>{f.current=!0,g.current&&g.current.abort(),g.current=null,r(eo({requestId:"",objective:""})),s(null),o(!1),u.current=null},[]);return(0,nt.useEffect)(()=>()=>{f.current=!0,g.current&&g.current.abort()},[]),{state:t,isStreaming:t.turnActive,isTerminal:lc(t.status),isReconnecting:n,turnActive:t.turnActive,inReview:t.scenarios.length>0&&!t.turnActive&&!Ii(t.status),isSessionClosed:Ii(t.status),requestId:i,startWith:p,chat:x,cancel:c,end:m,reset:P}}var be=D(Ee(),1);import{join as Xr,resolve as Tb}from"path";import{mkdirSync as gs,writeFileSync as Ad,appendFileSync as Rb}from"fs";function gd(e){let t=Ge(e.env);return!t||!t.testGeneratorBaseUrl?{ok:!1,error:`Unknown environment "${e.env}" \u2014 fix default_env via /config`}:{ok:!0,conn:{baseUrl:`${t.testGeneratorBaseUrl}/test-generator/api/v2`,tmsBaseUrl:t.tmsBaseUrl,authResolver:e.resolver,projectId:e.projectId,folderId:e.folderId,log:e.log}}}function hd(e){return e.turnActive?!0:e.requestId!=null&&!e.isSessionClosed&&!e.saved}function bd(e){return e.isRunning||e.hasLiveResults}function vd(e){let t=(e??"").trim().match(/^[sS](\d+)$/);if(!t)return{level:"scenarios"};let r=parseInt(t[1],10);return r<1?{level:"scenarios"}:{level:"cases",scenarioIdx:r-1}}function xd(e,t){return`S${e+1}.C${t+1}`}function yd(e,t){return e.reduce((r,n)=>r+(n.test_cases??[]).filter(o=>!t.has(o.id)).length,0)}function Sd(e,t){return e.map(r=>({...r,test_cases:(r.test_cases??[]).filter(n=>!t.has(n.id))})).filter(r=>(r.test_cases??[]).length>0)}var Rn=D(Ee(),1);import{createHash as db}from"crypto";function fb(e){return db("sha1").update(JSON.stringify({t:e.title,p:e.preconditions,m:e.manual_steps})).digest("hex")}var Ao=class{constructor(t){this.deps=t;this.max=t.maxConcurrent??3}cache=new Map;caseById=new Map;queue=[];active=0;max;onSnapshot(t){t.forEach((r,n)=>{(r.test_cases??[]).forEach((o,i)=>{if(!Ut(o)||o.manual_steps==null)return;let s=fb(o),u=this.cache.get(o.id);u&&u.hash===s||(u?.controller?.abort(),this.caseById.set(o.id,o),this.cache.set(o.id,{hash:s,ref:xd(n,i),status:"pending"}),this.queue.includes(o.id)||this.queue.push(o.id))})}),this.pump()}pump(){for(;this.active<this.max&&this.queue.length>0;){let t=this.queue.shift(),r=this.cache.get(t),n=this.caseById.get(t);!r||!n||r.status!=="pending"||(this.active++,this.runOne(t,n,r))}}async runOne(t,r,n){let o=`bifurcation-${t}`,i=new AbortController;n.controller=i;let s=this.deps.run??this.defaultRun.bind(this);Vt(o,()=>i.abort());let u=Date.now();try{this.safeLog("tcg_bif_start",{caseId:t,ref:n.ref});let f=await s(bc(r),i.signal);if(!i.signal.aborted&&this.cache.get(t)===n){n.status="done",n.result=f;try{this.deps.persist?.(t,f,n.ref)}catch{}this.safeLog("tcg_bif_done",{caseId:t,ref:n.ref,total_flows:f.total_flows,is_single_flow:f.is_single_flow,credits_consumed:f.credits_consumed,durationMs:Date.now()-u})}}catch(f){!i.signal.aborted&&this.cache.get(t)===n&&(n.status="error",n.error=f.message,this.safeLog("tcg_bif_error",{caseId:t,ref:n.ref,errorCode:"bifurcation_failed",durationMs:Date.now()-u}))}finally{sn(o),this.active--,this.pump()}}safeLog(t,r){try{this.deps.log?.(t,r)}catch{}}async defaultRun(t,r){let n=await this.deps.resolveAuth(),o=vc({objective:t,model:this.deps.model,sessionId:this.deps.sessionId,auth:n});return xc(o,this.deps.spawnOpts,r)}getStatus(t){return this.cache.get(t)?.status}getResult(t){return this.cache.get(t)?.result}dispose(){for(let[t,r]of this.cache)r.controller?.abort(),sn(`bifurcation-${t}`);this.cache.clear(),this.caseById.clear(),this.queue=[],this.active=0}};function wd(e){let t=(0,Rn.useRef)(null);return(0,Rn.useEffect)(()=>{if(!e.enabled)return;let r=e.log,n=r?(o,i,s,u)=>r(i,u??{}):void 0;return t.current=new Ao({model:e.model,sessionId:e.sessionId,resolveAuth:e.resolveAuth,spawnOpts:{environment:e.environment,log:n},log:r,persist:e.persist}),()=>{t.current?.dispose(),t.current=null}},[e.enabled,e.sessionId,e.model,e.environment]),(0,Rn.useEffect)(()=>{t.current&&t.current.onSnapshot(e.scenarios)},[e.scenarios]),{getStatus:r=>t.current?.getStatus(r),getResult:r=>t.current?.getResult(r),manager:t}}import{resolve as kd,isAbsolute as mb,extname as gb}from"path";import{homedir as Rd}from"os";var pb=/(?<=^|\s)@(?:"([^"]*)"|([^\s@]+))/g;function Td(e){let t=[];for(let r of e.matchAll(pb)){let n=r[1]!==void 0?r[1]:r[2];t.push({raw:r[0],value:n,start:r.index,end:r.index+r[0].length})}return t}var hb=/^s\d+(\.c\d+)?$/i;function bb(e){return e==="~"?Rd():e.startsWith("~/")?kd(Rd(),e.slice(2)):e}function vb(e){return/^https?:\/\//i.test(e)?!1:e.includes("/")?!0:ro.has(gb(e).toLowerCase())}function Cd(e,t){let r=Td(e),n=[],o=[];for(let s of r){let u=s.value,f=s.end;if(!s.raw.includes('"')){let p=u.match(/[.,;:!?]+$/);p&&(u=u.slice(0,-p[0].length),f-=p[0].length)}if(hb.test(u)||!vb(u))continue;let g=bb(u),w=mb(g)?g:kd(t,g);n.push(w),o.push([s.start,f])}let i=e;for(let[s,u]of o.sort((f,g)=>g[0]-f[0]))i=i.slice(0,s)+i.slice(u);return i=i.replace(/[ \t]{2,}/g," ").replace(/ +([.,;:!?])/g,"$1").trim(),{paths:n,promptText:i}}var xb=["request_id","session_id","caseId","ref","total_flows","is_single_flow","credits_consumed","durationMs","pct","tookMs","scenarioCount","caseCount","savedCount","fellBack","turnIndex","status","errorCode","objectiveChars","scenarioLimit","perScenarioLimit","memoryEnhancement"],yb=new Set(xb);function ms(e){let t={};for(let r of Object.keys(e))yb.has(r)&&e[r]!==void 0&&(t[r]=e[r]);return t}import{mkdirSync as Sb,appendFileSync as wb}from"fs";import{join as Ed}from"path";function Id(e,t,r,n,o=mt){let i=Ed(o,"tcg",e&&e.length>0?e:"pending"),s=Ed(i,"errors.log");try{let u=r instanceof Error?r.stack??r.message:String(r),f=`[${new Date().toISOString()}] phase=${t} ${u}${n?" "+JSON.stringify(n):""}
6
+ `;Sb(i,{recursive:!0}),wb(s,f)}catch{}return s}var We=D(G(),1);async function kb(e){let t=e?.getResolvedBasicAuth?.();if(t)return{username:t.username,access_key:t.access_key};let r=await e?.getToken?.();return typeof r=="string"&&r.length>0?{auth:{type:"bearer",token:r}}:{}}function _d(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function Pd(e){let{tcg:t,initialChatMode:r,tuiConfig:n,auth:o,session:i,appendStatic:s,handleInput:u,freezeTcgArtifact:f,rearmArtifactFreeze:g,initialGenerateLimits:w,ensureProjectAndFolder:p,config:x}=e,[c,m]=(0,be.useState)(r??"run"),[P,U]=(0,be.useState)(null),[B,F]=(0,be.useState)(null),[H,$]=(0,be.useState)(null),[z,fe]=(0,be.useState)(0),[oe,ie]=(0,be.useState)(!1),Y=(0,be.useRef)(null),pe=(0,be.useRef)(()=>{}),we=(0,be.useCallback)(()=>kb(o),[o]),me=(0,be.useRef)(null);me.current=t.requestId;let $e=(0,be.useCallback)((Q,ce)=>{let ae=Q.endsWith("_error")?"warn":"info",ne=ms({request_id:me.current??void 0,...ce});i.log(ae,Q,JSON.stringify(ne),ne);try{let le=typeof ne.request_id=="string"&&ne.request_id||me.current||"unknown",Te=Xr(mt,"tcg",le);gs(Te,{recursive:!0}),Rb(Xr(Te,"tcg_tui.log"),`[${new Date().toISOString()}] ${Q} ${JSON.stringify(ne)}
7
+ `)}catch{}},[i]),He=(0,be.useCallback)((Q,ce)=>{let ae=Id(me.current,ce.phase,Q),ne=typeof Q?.status=="number"?Q.status:void 0;$e(`${ce.phase}_error`,{errorCode:`${ce.phase}_failed`,status:ne});let le=ce.phase==="upload"?"\u2717 Couldn't upload attachments \u2014 generation not started. Try again.":"\u2717 Generation failed \u2014 send another request.";s((0,We.jsxs)(b,{flexDirection:"column",marginTop:1,marginBottom:1,children:[(0,We.jsx)(a,{color:l.red,children:le}),(0,We.jsx)(a,{color:l.dim,children:`details: ${ae}`})]})),U(null)},[$e,s]),st=(0,be.useRef)(0),Xt=(0,be.useCallback)((Q,ce,ae)=>{try{let ne=Xr(mt,"tcg",me.current??"unknown","bifurcation");gs(ne,{recursive:!0}),Ad(Xr(ne,`${Q}.json`),JSON.stringify({request_id:me.current,ref:ae,...ce},null,2))}catch{}},[]),Tt=wd({scenarios:t.state?.scenarios??[],model:n.model,sessionId:i.sessionId,resolveAuth:we,environment:o?.creds?.getDefaultEnv?.(),enabled:!!t.requestId&&!t.isSessionClosed,log:$e,persist:Xt}),ge=(0,be.useRef)(null);(0,be.useEffect)(()=>{let Q=t.requestId;if(!Q||!t.isSessionClosed&&!t.isTerminal)return;let ce=t.state?.scenarios??[];if(ce.length!==0&&ge.current!==Q){ge.current=Q;try{let ae=Xr(mt,"tcg",Q);gs(ae,{recursive:!0}),Ad(Xr(ae,"request.json"),JSON.stringify({request_id:Q,objective:t.state?.objective,headline:t.state?.headline,scenarios:ce,status:t.state?.status},null,2))}catch{}}},[t.requestId,t.isTerminal,t.isSessionClosed,t.state?.scenarios,t.state?.status,t.state?.objective,t.state?.headline]);let ut=(0,be.useCallback)((Q,ce=1500)=>{$(Q),Y.current&&clearTimeout(Y.current),Y.current=setTimeout(()=>{$(null),Y.current=null},ce)},[]);(0,be.useEffect)(()=>()=>{Y.current&&clearTimeout(Y.current)},[]);let $t=(0,be.useCallback)((Q,ce)=>{let ae=o.getResolver();if(!ae)return{ok:!1,error:"Not logged in \u2014 use /login"};let ne=gd({env:o.creds.getDefaultEnv(),resolver:ae,projectId:Q??n.project_id??void 0,folderId:ce??n.folder_id??void 0,log:(le,Te,dt,I)=>i.log(le,Te,"",ms(I??{}))});return ne.ok?{ok:!0,conn:ne.conn}:{ok:!1,error:ne.error}},[o,n,i]),Oe=(0,be.useRef)(!1),Le=(0,be.useRef)(null),[zt,Me]=(0,be.useState)(!1),Kt=(0,be.useCallback)((Q,ce,ae,ne,le)=>{let Te=process.cwd(),{paths:dt,promptText:I}=Cd(Q,Te);return Sc({promptText:I,filePaths:dt,cwd:Te,scenarios:t.state?.scenarios??[],isRefine:ce,conn:ae,deps:{validate:yc,upload:(L,K,q)=>wc(L,K,q,{signal:le}),buildMappings:Tc},onValidated:ne})},[t]),mr=(0,be.useRef)(!1);(0,be.useEffect)(()=>{if(c!=="generate"){mr.current=!1;return}mr.current||n.project_id&&n.folder_id||p&&o.getResolver()&&(mr.current=!0,p())},[c,n.project_id,n.folder_id,p,o]);let kr=(0,be.useCallback)(async Q=>{U(null),F(null),ie(!1);let ce=Q.trim();if(!ce)return;if(ce.startsWith("/")){pe.current(ce),fe(L=>L+1);return}let ae=n.project_id??null,ne=n.folder_id??null;if(p){let L=await p();if(L)ae=L.projectId,ne=L.folderId;else if(x){let K=x.load();ae=K.project_id??ae,ne=K.folder_id??ne}}else if(x){let L=x.load();ae=L.project_id??ae,ne=L.folder_id??ne}if(!ae||!ne){F("Set a project and folder first \u2014 use /config");return}let le=$t(ae,ne);if(!le.ok){U(le.error);return}if(Oe.current)return;Oe.current=!0;let Te=new AbortController;Le.current=Te;let dt=le.conn,I;try{I=await Kt(ce,!1,dt,()=>{s((0,We.jsx)(b,{marginTop:1,children:(0,We.jsx)(a,{color:l.generateAccent,bold:!0,children:`\u276F ${ce}`})})),Me(!0)},Te.signal)}catch(L){if(L instanceof Ai){F(L.errors.join(`
8
+ `));return}if(_d(L))return;He(L,{phase:"upload"});return}finally{Oe.current=!1,Me(!1),Le.current===Te&&(Le.current=null)}if(!Te.signal.aborted){for(let L of I.warnings)e.emitFeedback("ok","/generate",L,void 0,l.generateAccent);f(),t.reset(),g();try{let L=w??{};await t.startWith(dt,{prompt:I.promptText,attachments:I.attachments,scenarioLimit:L.scenarioLimit??n.generate.scenario_limit,perScenarioLimit:L.perScenarioLimit??n.generate.per_scenario_limit,memoryEnhancement:n.generate.memory_enabled})}catch(L){He(L,{phase:"generation"})}}},[n,t,$t,Kt,e,p,x,w,s,f,g,He]),Kr=(0,be.useCallback)(()=>U(null),[]),Cr=(0,be.useCallback)(async Q=>{let ce=$t();if(!ce.ok){U(ce.error);return}if(Oe.current)return;Oe.current=!0;let ae=new AbortController;Le.current=ae;let ne;try{ne=await Kt(Q,!0,ce.conn,()=>{s((0,We.jsx)(a,{color:l.generateAccent,bold:!0,children:`\u276F ${Q}`})),st.current+=1,$e("tcg_refine",{turnIndex:st.current}),Me(!0)},ae.signal)}catch(le){if(le instanceof Ai){F(le.errors.join(`
9
+ `));return}if(_d(le))return;He(le,{phase:"upload"});return}finally{Oe.current=!1,Me(!1),Le.current===ae&&(Le.current=null)}if(!ae.signal.aborted){for(let le of ne.warnings)e.emitFeedback("ok","/generate",le,void 0,l.generateAccent);try{await t.chat(ne.promptText,{mappings:ne.mappings,attachments:ne.attachments})}catch(le){He(le,{phase:"chat"})}}},[s,t,$e,$t,Kt,e,He]),gr=(0,be.useCallback)(async Q=>{if(!Oe.current){Oe.current=!0,s((0,We.jsx)(a,{color:l.generateAccent,bold:!0,children:`\u276F ${Q}`}));try{await t.chat(Q)}catch(ce){He(ce,{phase:"chat"})}finally{Oe.current=!1}}},[s,t,He]),hr=(0,be.useCallback)(Q=>{let ce=Ro(Q);if(ce?.command==="view"){let ae=Q.trim().split(/\s+/).slice(1)[0];if(t.state.scenarios.length===0){e.emitFeedback("ok","/view","(no generation yet)");return}let ne=vd(ae);if(ne.level==="cases"&&ne.scenarioIdx>=t.state.scenarios.length){e.emitFeedback("error","/view",`No scenario S${ne.scenarioIdx+1}`);return}e.openBrowse(ne);return}if(ce?.command==="save"){let ae=t.state.scenarios;if(ae.length===0){e.emitFeedback("error","/save","Nothing to save yet.");return}let ne=Sd(ae,e.excluded),le=ne.reduce((L,K)=>L+(K.test_cases??[]).filter(Ut).length,0);if(le===0){e.emitFeedback("error","/save",yd(ae,e.excluded)===0?"All cases removed \u2014 nothing to save.":"No functional test cases to save.");return}let Te={...t.state,scenarios:ne},dt=Q.trim().split(/\s+/).slice(1)[0],I=dt?Tb(process.cwd(),dt):process.cwd();ie(!0),e.freezeTcgArtifact(),(async()=>{let L=ne.flatMap(de=>(de.test_cases??[]).filter(Ut)),K=Date.now()+3e4;for(;Date.now()<K&&L.some(de=>Tt.getStatus(de.id)==="pending");)await new Promise(de=>setTimeout(de,250));let q=new Map;for(let de of L)q.set(de.id,Tt.getStatus(de.id)==="done"?Tt.getResult(de.id):void 0);t.end();let te=0,Ae=de=>{let St=q.get(de.id);return St?mc(St,de):(te++,gc(de))};try{let de=await hc(Te,I,{},Ae);$e("tcg_save",{savedCount:de.paths.length,fellBack:te})}catch(de){e.emitFeedback("error","/save",`Save failed: ${de.message}`);return}let Je=`test case${le===1?"":"s"}`;e.emitFeedback("ok","/save",te>0?`Saved ${le} ${Je} \xB7 ${te} fell back to raw steps.`:`Saved ${le} ${Je}.`)})();return}ce?.command==="new"&&ie(!1),u(Q)},[u,e,t,Tt,$e]);pe.current=hr;let Rt=(0,be.useCallback)(Q=>{m(Q),fe(ce=>ce+1)},[]),br=(0,be.useCallback)(Q=>{let ce=c==="generate"&&Q==="run",ae=c==="run"&&Q==="generate",ne=hd({requestId:t.requestId,isSessionClosed:t.isSessionClosed,turnActive:t.turnActive,saved:oe}),le=bd({isRunning:e.runner.isRunning,hasLiveResults:e.runner.lastRunEnd!=null});return ce&&ne?(e.openSwitchConfirm("run"),!1):ae&&le?(e.openSwitchConfirm("generate"),!1):(Rt(Q),!0)},[c,t.requestId,t.isSessionClosed,t.turnActive,oe,e,Rt]),Er=(0,be.useCallback)(async Q=>{c==="generate"?(e.freezeTcgArtifact(),await t.end().catch(()=>{}),t.reset(),ie(!1),e.appendStatic((0,We.jsxs)(b,{marginBottom:1,children:[(0,We.jsx)(a,{color:l.red,children:"\u2717 "}),(0,We.jsx)(a,{color:l.dim,children:"Discarded generation"})]}))):(e.runner.isRunning&&e.runner.cancelRun(),e.runner.clearLastRun(),e.appendStatic((0,We.jsxs)(b,{marginBottom:1,children:[(0,We.jsx)(a,{color:l.red,children:"\u2717 "}),(0,We.jsx)(a,{color:l.dim,children:"Discarded run"})]}))),Rt(Q),Q==="generate"?e.emitFeedback("ok","/generate","Switched to Generate mode.",void 0,l.generateAccent):e.emitFeedback("ok","/run","Switched to Run mode.",void 0,l.orange)},[c,t,e,Rt]),vr=(0,be.useCallback)(()=>{if(t.isStreaming)e.freezeTcgArtifact(),t.cancel();else if(Le.current)Le.current.abort();else return;e.appendStatic((0,We.jsxs)(b,{marginBottom:1,children:[(0,We.jsx)(a,{color:l.red,children:"\u2717 "}),(0,We.jsx)(a,{color:l.dim,children:"Generation cancelled"})]}))},[e,t]);return{chatMode:c,tcgError:P,tcgValidationError:B,composeIdleHint:H,inputClearSeq:z,submitting:zt,handleGenerateSubmit:kr,onRefine:Cr,onClarificationAnswer:gr,onSlash:hr,onClearError:Kr,flashComposeHint:ut,setInputClearSeq:fe,setChatMode:m,setTcgError:U,setTcgValidationError:F,generateSaved:oe,requestSwitch:br,confirmSwitch:Er,cancelGenerate:vr,bifurcation:Tt,tcgLog:$e}}var Gt=D(Ee(),1);function _o(e){return e.level==="cases"?{level:"cases",scenarioIdx:e.scenarioIdx,caseIdx:0,cursor:0}:{level:"scenarios",scenarioIdx:0,caseIdx:0,cursor:0}}var Cb=(e,t)=>Math.max(0,Math.min(t,e));function hs(e,t,r){switch(t.type){case"open":return _o(t.target);case"move":{let n=e.level==="scenarios"?r.length-1:e.level==="cases"?(r[e.scenarioIdx]??1)-1:0;return{...e,cursor:Cb(e.cursor+t.delta,Math.max(0,n))}}case"enter":return e.level==="scenarios"?{...e,level:"cases",scenarioIdx:e.cursor,caseIdx:0,cursor:0}:e.level==="cases"?{...e,level:"detail",caseIdx:e.cursor}:e;case"back":return e.level==="detail"?{...e,level:"cases",cursor:e.caseIdx}:e.level==="cases"?{...e,level:"scenarios",cursor:e.scenarioIdx}:e;default:return e}}function Dd(e){let[t,r]=(0,Gt.useState)(null),[n,o]=(0,Gt.useReducer)((p,x)=>hs(p,x,e),_o({level:"scenarios"})),[i,s]=(0,Gt.useState)(new Set),u=(0,Gt.useCallback)(p=>{r(p),o({type:"open",target:p})},[]),f=(0,Gt.useCallback)(()=>r(null),[]),g=(0,Gt.useCallback)(p=>{s(x=>{let c=new Set(x);return c.has(p)?c.delete(p):c.add(p),c})},[]),w=(0,Gt.useCallback)(p=>{s(x=>{let c=new Set(x),m=p.length>0&&p.every(P=>c.has(P));return p.forEach(P=>m?c.delete(P):c.add(P)),c})},[]);return{target:t,open:u,close:f,isOpen:t!=null,state:n,excluded:i,toggleCase:g,toggleScenario:w}}var Po=D(Ee(),1);function Ld(){return{committedChat:0,committedThinking:0,prevTurnActive:!1}}function Bd(e,t,r){let n=[],o={...e};if(e.prevTurnActive&&!r&&t.thinkingLog.length>e.committedThinking){let s=t.thinkingLog.slice(e.committedThinking).reduce((f,g)=>f+(g.tookMs??0),0),u=Math.round(s/1e3);n.push({kind:"thinking-summary",text:` thought for ${u}s`}),o.committedThinking=t.thinkingLog.length}o.prevTurnActive=r;for(let i=e.committedChat;i<t.chatLog.length;i++)n.push({kind:"chat",text:t.chatLog[i].text});return o.committedChat=t.chatLog.length,{items:n,next:o}}var bs=D(G(),1);function Eb(e){return e.kind==="thinking-summary"?(0,bs.jsx)(a,{color:l.dim,children:e.text}):(0,bs.jsx)(Rc,{text:e.text})}function $d(e,t,r){let n=(0,Po.useRef)(Ld());(0,Po.useEffect)(()=>{let{items:o,next:i}=Bd(n.current,e,t);n.current=i;for(let s of o)r(Eb(s))})}var Xe=D(Ee(),1);import{readFileSync as Ib,writeFileSync as Ab,renameSync as _b,mkdirSync as Pb}from"fs";import{dirname as Db}from"path";var vs=1,Od=()=>({schemaVersion:vs,numStartups:0,perHint:{}}),Do=class{constructor(t=Fs){this.path=t;this.data=this.read()}data;read(){try{let t=JSON.parse(Ib(this.path,"utf-8"));return t.schemaVersion!==vs?Od():{schemaVersion:vs,numStartups:typeof t.numStartups=="number"?t.numStartups:0,perHint:t.perHint??{}}}catch{return Od()}}write(){try{Pb(Db(this.path),{recursive:!0});let t=`${this.path}.tmp`;Ab(t,JSON.stringify(this.data,null,2)+`
10
+ `),_b(t,this.path)}catch(t){process.stderr.write(`[hints] Failed to save state: ${t instanceof Error?t.message:String(t)}
11
+ `)}}get numStartups(){return this.data.numStartups}shownCount(t){return this.data.perHint[t]?.shownCount??0}sessionsSince(t){let r=this.data.perHint[t];return r?this.data.numStartups-r.lastShownStartup:1/0}bumpStartup(){return this.data.numStartups+=1,this.write(),this.data.numStartups}recordShown(t){let r=this.data.perHint[t];this.data.perHint[t]={shownCount:(r?.shownCount??0)+1,lastShownStartup:this.data.numStartups},this.write()}prune(t){let r=new Set(t),n=!1;for(let o of Object.keys(this.data.perHint))r.has(o)||(delete this.data.perHint[o],n=!0);n&&this.write()}};import{readFileSync as Lb,writeFileSync as Bb,renameSync as $b,mkdirSync as Ob}from"fs";import{dirname as Nb}from"path";var Nd=1,Mb=3600*1e3;function Md(e,t=Date.now()){return e!==null&&t-e.fetchedAt<Mb}function jd(e,t=fi(e)){try{let r=JSON.parse(Lb(t,"utf-8"));if(r.wrapperVersion!==Nd)return null;let{catalog:n}=bo(r.catalog);return n?{catalog:n,fetchedAt:typeof r.fetchedAt=="number"?r.fetchedAt:0}:null}catch{return null}}function Vd(e,t,r=fi(e)){try{Ob(Nb(r),{recursive:!0});let n={wrapperVersion:Nd,writtenByVersion:xt,fetchedAt:Date.now(),catalog:t},o=`${r}.tmp`;Bb(o,JSON.stringify(n,null,2)+`
12
+ `),$b(o,r)}catch(n){process.stderr.write(`[hints] Failed to save catalog cache: ${n instanceof Error?n.message:String(n)}
13
+ `)}}var jb=5e3;async function Fd(e){let t=new AbortController,r=setTimeout(()=>t.abort(),jb);try{let o=`${Ge(e.env).controllerBaseUrl}/public/hints/catalog?clientVersion=${encodeURIComponent(xt)}&env=${e.env}`,i=await zs(o,{headers:{Accept:"application/json"},signal:t.signal});if(!i.ok)return{status:"error"};let s=await i.json(),{catalog:u}=bo(s);return u?{status:"ok",catalog:u}:{status:"error"}}catch{return{status:"error"}}finally{clearTimeout(r)}}var Lo=D(Ji(),1);function Ud(e,t=xt){let r=Lo.default.coerce(e??"");if(!r)return!0;let n=Lo.default.coerce(t);return n?Lo.default.gte(n,r):!0}var Vb={no_chrome_profile:e=>e.config.chrome_profile_path==="",code_export_off:e=>e.config.code_export.enabled===!1,generate_memory_off:e=>e.config.generate.memory_enabled===!1,auth_invalid:e=>e.tokenValid===!1,testing_no_project:e=>e.config.mode==="testing"&&e.config.project_id===null,first_runs:e=>e.numStartups<5,platform_macos:e=>e.platform==="darwin",platform_windows:e=>e.platform==="win32",not_used_generate_this_session:e=>e.sessionUsedGenerate===!1};function qd(e,t){let r=[],n=!0;for(let o of e){let i=Vb[o];if(!i){r.push(o),n=!1;continue}i(t)||(n=!1)}return{pass:n,unknown:r}}var Fb=3,Ub=(e,t)=>e==="both"||e===t;function qb(e,t,r){return e.boost?t.shownCount(e.id)<e.boost.maxShows&&r<Date.parse(e.boost.until):!1}var Hb=e=>Number.isFinite(e)?1:Fb;function Gb(e,t){let r=e.filter(i=>i.weight>0);if(r.length===0)return null;let n=r.reduce((i,s)=>i+s.weight,0),o=t()*n;for(let i of r)if(o-=i.weight,o<=0)return i.hint;return r[r.length-1].hint}function Hd(e){let{catalog:t,store:r,mode:n,now:o,predicateCtx:i,rng:s}=e,u=[];if(!t.enabled)return{footer:null,skipped:u,boosted:!1};let f=[];for(let p of t.hints){if(!Ud(p.minVersion)){u.push({id:p.id,reason:"min_version"});continue}let x=qd(p.relevance,i);if(x.unknown.length>0){u.push({id:p.id,reason:"unknown_predicate"});continue}if(!x.pass||!Ub(p.target,n))continue;if(p.retireAfterShows!==void 0&&r.shownCount(p.id)>=p.retireAfterShows){u.push({id:p.id,reason:"retired"});continue}if(r.sessionsSince(p.id)<p.cooldownSessions)continue;let c=qb(p,r,o),m=(c?p.boost.weight:p.weight)*Hb(r.sessionsSince(p.id));f.push({hint:p,weight:m,boosted:c})}let g=Gb(f.map(({hint:p,weight:x})=>({hint:p,weight:x})),s),w=g?f.find(p=>p.hint.id===g.id)?.boosted??!1:!1;return{footer:g,skipped:u,boosted:w}}function Gd(e){return{shown(t){e("info","hint_shown",`hint shown: ${t.id}`,{...t})},skipped(t){let r=t.reason==="unknown_predicate"?"warn":"info";e(r,"hint_skipped",`hint skipped: ${t.id} (${t.reason})`,{...t})}}}function Wd(e){let[t,r]=(0,Xe.useState)(null),[n,o]=(0,Xe.useState)(0),i=(0,Xe.useRef)(null),s=(0,Xe.useRef)(!1),u=(0,Xe.useRef)(new Set),f=(0,Xe.useRef)(!1),g=(0,Xe.useRef)(null),w=(0,Xe.useRef)(null),p=(0,Xe.useRef)(null),x=(0,Xe.useRef)(!1),c=(0,Xe.useRef)(!1),m=(0,Xe.useRef)(null),P=(0,Xe.useRef)(!0);return(0,Xe.useEffect)(()=>()=>{P.current=!1},[]),(0,Xe.useEffect)(()=>{if(!e.enabled||!e.ready)return;let U=i.current??(i.current=e.store??new Do),B=e.now??Date.now;if(m.current!==e.env&&(m.current=e.env,g.current=null,x.current=!1,c.current=!1,w.current=null,p.current=null),g.current===null){let we=jd(e.env);g.current={catalog:we?.catalog??null,fetchedAt:we?.fetchedAt??0}}let F=g.current,H=Md(F.catalog?{catalog:F.catalog,fetchedAt:F.fetchedAt}:null,B()),$=e.catalog??(H?F.catalog:null);if(s.current||(s.current=!0,U.bumpStartup()),!x.current&&(x.current=!0,!H)){let we=e.env;(async()=>{let me=await Fd({env:we});me.status==="ok"&&(Vd(we,me.catalog),m.current===we&&(g.current={catalog:me.catalog,fetchedAt:B()},P.current&&o($e=>$e+1)))})()}if(!$){w.current=null,r(null);return}if(c.current||(c.current=!0,U.prune($.hints.map(we=>we.id))),!(p.current!==e.chatMode)&&w.current!==null)return;p.current=e.chatMode;let fe=Gd(e.log),oe=e.rng??Math.random,ie=B(),Y={config:e.config,tokenValid:e.tokenValid,numStartups:U.numStartups,platform:process.platform,sessionUsedGenerate:e.sessionUsedGenerate},pe=Hd({catalog:$,store:U,mode:e.chatMode,now:ie,predicateCtx:Y,rng:oe});w.current=pe.footer,r(pe.footer),pe.footer&&!u.current.has(pe.footer.id)&&(u.current.add(pe.footer.id),U.recordShown(pe.footer.id),fe.shown({id:pe.footer.id,category:pe.footer.category,surface:"footer",boosted:pe.boosted})),f.current||(f.current=!0,pe.skipped.forEach(we=>fe.skipped(we)))},[e.enabled,e.ready,e.chatMode,e.env,n]),{footerHint:t}}var Xd=D(Ee(),1);import{readdir as Wb}from"fs/promises";import{join as Xb,relative as zb,extname as Kb}from"path";var Yb=new Set(["node_modules",".git"]),Jb=e=>e.startsWith("output-");async function Bo(e,t,r={}){let n=r.limit??50,o=r.maxDepth??6,i=t.toLowerCase(),s=[];async function u(f,g){if(s.length>=n||g>o)return;let w;try{w=await Wb(f,{withFileTypes:!0})}catch{return}for(let p of w){if(s.length>=n)return;if(p.name.startsWith(".")||Yb.has(p.name)||Jb(p.name))continue;let x=Xb(f,p.name);if(p.isDirectory())await u(x,g+1);else if(p.isFile()){if(!ro.has(Kb(p.name).toLowerCase()))continue;let c=zb(e,x);(!i||c.toLowerCase().includes(i))&&s.push(c)}}}return await u(e,0),s.slice(0,n)}var ze=D(G(),1);function zd({projectId:e,folderId:t,onSubmit:r,history:n,error:o,validationError:i,composeIdleHint:s,clearSeq:u,closedNotice:f,busy:g=!1}){let w=!!e&&!!t,p=(0,Xd.useCallback)(x=>Bo(process.cwd(),x),[]);return(0,ze.jsxs)(b,{flexDirection:"column",children:[(0,ze.jsx)(b,{marginLeft:2,marginTop:1,children:!w&&(0,ze.jsxs)(a,{color:l.orange,children:["\u2691 ",(0,ze.jsx)(a,{color:l.muted,children:"project / folder not set \u2014 use "}),(0,ze.jsx)(a,{bold:!0,children:"/config"})]})}),i&&(0,ze.jsx)(b,{marginLeft:2,marginTop:1,children:(0,ze.jsx)(Jt,{variant:"error",paddingY:0,children:(0,ze.jsx)(a,{color:l.red,children:i})})}),o&&(0,ze.jsx)(b,{marginLeft:2,marginTop:1,children:(0,ze.jsx)(Jt,{variant:"error",paddingY:0,children:(0,ze.jsx)(a,{color:l.red,children:o})})}),f&&(0,ze.jsx)(b,{paddingX:1,children:(0,ze.jsx)(a,{color:l.dim,children:f})}),s&&(0,ze.jsx)(b,{marginLeft:2,marginTop:1,children:(0,ze.jsx)(a,{color:l.dim,children:s})}),(0,ze.jsx)(lr,{inert:g,onSubmit:r,history:n,accent:l.generateAccent,commands:ko("","generate"),clearSeq:u,clearOnSubmit:!1,mentionFiles:p,placeholder:g?"Processing files\u2026 (Ctrl+C to cancel)":"Describe what to generate... (/ = commands)",footerBindings:g?[{keys:"ctrl+c",label:"cancel"}]:[{keys:"\u2191\u2193",label:"history"},{keys:"\u21B5",label:"generate"},{keys:"tab",label:"complete"},{keys:"/run",label:"Run mode"},{keys:"ctrl+t",label:"thinking"}]})]})}var ef=D(Ee(),1);var ot=D(G(),1);function Qb(e){return e?`[${e[0].toUpperCase()}]`:""}var Zb=8;function $o({scenarios:e,headline:t,activeSid:r}){let n=e.slice(0,Zb),o=e.length-n.length;return(0,ot.jsxs)(b,{flexDirection:"column",marginBottom:1,marginLeft:2,children:[t&&(0,ot.jsx)(b,{paddingX:1,children:(0,ot.jsx)(a,{color:l.generateAccent,bold:!0,children:t})}),(0,ot.jsxs)(Jt,{title:`Scenarios (${e.length})`,titleColor:l.generateAccent,borderColor:l.generateAccent,paddingX:1,children:[n.map(i=>{let s=!!r&&i.sid===r,u=s?"\u2237":"\u2713",f=s?l.generateAccent:l.green,g=i.test_cases?.length??0;return(0,ot.jsxs)(b,{gap:1,children:[(0,ot.jsx)(a,{color:f,children:u}),(0,ot.jsx)(a,{color:l.dim,children:i.sid??`#${i.id}`}),(0,ot.jsx)(a,{children:i.title??"(untitled)"}),(0,ot.jsx)(a,{color:l.muted,children:Qb(i.priority)}),(0,ot.jsxs)(a,{color:l.dim,children:[g," case",g===1?"":"s"]})]},i.id)}),o>0&&(0,ot.jsx)(a,{color:l.muted,children:`\u22EE +${o} more`}),(0,ot.jsx)(b,{marginTop:1,children:(0,ot.jsxs)(a,{color:l.dim,children:[(0,ot.jsx)(a,{color:l.generateAccent,children:"/view"})," view/edit \xB7 ",(0,ot.jsx)(a,{color:l.generateAccent,children:"/save"})," save as runnable tests"]})})]})]})}var zr=D(G(),1),Kd=24;function ev(e){let t=Math.max(0,Math.min(100,e)),r=Math.round(t/100*Kd);return{filled:"\u2588".repeat(r),empty:"\u2591".repeat(Kd-r)}}function Yd({pct:e}){let t=ev(e);return(0,zr.jsxs)(b,{paddingX:1,children:[(0,zr.jsx)(a,{color:l.generateAccent,children:t.filled}),(0,zr.jsx)(a,{color:l.muted,children:t.empty}),(0,zr.jsx)(a,{color:l.dim,children:` ${e}%`})]})}var Jd=D(Ee(),1);var er=D(G(),1);function Qd(e,t){let r=e.trim();return r.startsWith("/")?{kind:"slash",text:r}:r?t?{kind:"ignore",text:r}:{kind:"refine",text:r}:{kind:"ignore",text:""}}function Zd({state:e,history:t,turnActive:r,busy:n=!1,onClarificationAnswer:o,onClearError:i,onRefine:s,onSlash:u}){let f=(0,Jd.useCallback)(w=>Bo(process.cwd(),w),[]),g=o?w=>{i?.(),o(w)}:void 0;return(0,er.jsxs)(er.Fragment,{children:[e.pendingClarification&&g&&(0,er.jsx)(b,{paddingX:1,marginTop:1,flexDirection:"column",children:(0,er.jsx)(lr,{onSubmit:g,history:t,noHistory:!0,accent:l.generateAccent,placeholder:"Type your answer\u2026",submitVerb:"answer",footerBindings:[{keys:"\u21B5",label:"answer"}]})}),!(e.pendingClarification&&g)&&(r||n?(0,er.jsx)(lr,{inert:!0,onSubmit:()=>{},history:t,placeholder:r?"(generating\u2026 input inert \u2014 Ctrl+C to cancel)":"(processing files\u2026 Ctrl+C to cancel)",footerBindings:r?void 0:[{keys:"ctrl+c",label:"cancel"}]}):(0,er.jsx)(lr,{onSubmit:w=>{let p=Qd(w,r);p.kind==="slash"?u?.(p.text):p.kind==="refine"&&s?.(p.text)},history:t,noHistory:!0,accent:l.generateAccent,commands:ko("","generate"),scenarios:e.scenarios,mentionFiles:f,placeholder:"Refine, or /save \xB7 /view \xB7 /run",submitVerb:"refine",footerBindings:[{keys:"\u21B5",label:"refine"},{keys:"tab",label:"complete"},{keys:"/run",label:"Run mode"},{keys:"ctrl+t",label:"thinking"}]}))]})}var At=D(G(),1);function tf({state:e,requestId:t,history:r,onClarificationAnswer:n,error:o,onClearError:i,turnActive:s,busy:u=!1,onRefine:f,onSlash:g}){let[w,p]=(0,ef.useState)(!1),x=e.thinking.length===0&&e.thinkingLog.length>0,c=[...e.thinkingLog.map(m=>m.text),e.thinking].filter(m=>m.length>0).join(`
14
+
15
+ `);return Be((m,P)=>{P.ctrl&&m==="t"&&p(U=>!U)}),(0,At.jsxs)(b,{flexDirection:"column",children:[(0,At.jsx)(b,{marginBottom:1,marginLeft:2,children:(0,At.jsx)(kc,{thinking:c,expanded:w,thinkingDone:x})}),s&&(0,At.jsx)(b,{marginLeft:2,children:(0,At.jsx)(Yd,{pct:e.progress})}),o&&(0,At.jsx)(b,{marginLeft:2,marginTop:1,children:(0,At.jsx)(Jt,{variant:"error",paddingY:0,children:(0,At.jsx)(a,{color:l.red,children:o})})}),e.scenarios.length>0&&(0,At.jsx)($o,{scenarios:e.scenarios,headline:e.headline,activeSid:null}),(0,At.jsx)(Zd,{state:e,history:r,turnActive:s,busy:u,onClarificationAnswer:n,onClearError:i,onRefine:f,onSlash:g})]})}var af=D(Ee(),1);var it=D(G(),1);function tv(e,t){return(e.test_cases??[]).some(r=>!t.has(r.id))}function rf({scenarios:e,cursor:t,excluded:r}){let n=e.reduce((o,i)=>o+(i.test_cases??[]).length,0);return(0,it.jsxs)(b,{flexDirection:"column",paddingX:1,children:[(0,it.jsxs)(a,{children:[(0,it.jsx)(a,{color:l.dim,children:"Generate \u203A "}),(0,it.jsx)(a,{color:l.generateAccent,children:"Scenarios"}),(0,it.jsx)(a,{color:l.dim,children:` ${e.length} scenarios \xB7 ${n} cases`})]}),(0,it.jsx)(a,{color:l.muted,children:"\u2500".repeat(60)}),(0,it.jsx)(b,{flexDirection:"column",marginY:1,children:e.map((o,i)=>{let s=i===t,u=tv(o,r);return(0,it.jsxs)(a,{children:[(0,it.jsx)(a,{color:l.generateAccent,children:s?"\u276F ":" "}),(0,it.jsx)(a,{color:l.generateAccent,children:`S${i+1}`}),(0,it.jsx)(a,{children:` ${o.title??"(untitled)"}`}),(0,it.jsx)(a,{color:l.dim,children:` [${o.priority??"-"}] ${(o.test_cases??[]).length} cases `}),(0,it.jsx)(a,{color:u?l.green:l.red,children:u?"\u2713":"\u2717"})]},o.id)})}),(0,it.jsx)(a,{color:l.muted,children:"\u2500".repeat(60)}),(0,it.jsx)(a,{color:l.dim,children:"\u2191\u2193 move \u21B5 open x remove esc back to chat"})]})}var Ke=D(G(),1);function nf({scenario:e,scenarioIdx:t,cursor:r,excluded:n}){let o=e.test_cases??[],i=o.some(s=>!Ut(s));return(0,Ke.jsxs)(b,{flexDirection:"column",paddingX:1,children:[(0,Ke.jsxs)(a,{children:[(0,Ke.jsx)(a,{color:l.dim,children:"Generate \u203A Scenarios \u203A "}),(0,Ke.jsx)(a,{color:l.generateAccent,children:`S${t+1} ${e.title??"(untitled)"}`}),(0,Ke.jsx)(a,{color:l.dim,children:` ${o.length} cases`})]}),(0,Ke.jsx)(a,{color:l.muted,children:"\u2500".repeat(60)}),(0,Ke.jsx)(b,{flexDirection:"column",marginY:1,children:o.map((s,u)=>{let f=u===r,g=n.has(s.id);return(0,Ke.jsxs)(a,{children:[(0,Ke.jsx)(a,{color:l.generateAccent,children:f?"\u276F ":" "}),(0,Ke.jsx)(a,{color:l.generateAccent,children:`C${u+1}`}),(0,Ke.jsx)(a,{children:` ${s.title??"(untitled)"} `}),Ut(s)?(0,Ke.jsx)(a,{color:g?l.red:l.green,children:g?"\u2717 removed":"\u2713 included"}):(0,Ke.jsx)(a,{color:l.dim,children:"\u2713"})]},s.id)})}),(0,Ke.jsx)(a,{color:l.muted,children:"\u2500".repeat(60)}),i&&(0,Ke.jsx)(a,{color:l.dim,children:"gray \u2713 = non-functional \xB7 won't be saved by /save"}),(0,Ke.jsx)(a,{color:l.dim,children:"\u2191\u2193 move \u21B5 view detail x remove case \u2190 / esc back"})]})}var Mo=D(Ee(),1);function Oo(e,t){let r=Math.max(1,t),n=[];for(let o of e.split(`
16
+ `)){let i=o.split(/\s+/).filter(f=>f.length>0);if(i.length===0){n.push("");continue}let s="",u=()=>{s&&(n.push(s),s="")};for(let f of i){for(;f.length>r;)u(),n.push(f.slice(0,r)),f=f.slice(r);s===""?s=f:s.length+1+f.length<=r?s+=" "+f:(u(),s=f)}u()}return n}function of(e,t,r,n){let o=Math.max(20,n),i=[];if(r){for(let u of Oo(r,o))i.push({text:u,tone:"meta"});i.push({text:"",tone:"blank"})}let s=(u,f)=>{let g=f?.trim();if(g){i.push({text:u,tone:"label"});for(let w of Oo(g,o-2))i.push({text:" "+w,tone:"text"});i.push({text:"",tone:"blank"})}};return s("Description",e?.description),s("Preconditions",e?.preconditions),t.length>0&&(i.push({text:"Steps",tone:"label"}),t.forEach((u,f)=>{let g=`${f+1}. `;Oo(u.step||"",Math.max(1,o-g.length)).forEach((x,c)=>{c===0?i.push({text:x,tone:"step",accent:g}):i.push({text:" ".repeat(g.length)+x,tone:"step"})});let p=u.expected?.trim();if(p){let x=" \u2192 ",c=" ";Oo(p,Math.max(1,o-x.length)).forEach((m,P)=>i.push({text:(P===0?x:c)+m,tone:"expected"}))}})),i}function No(e,t,r){let n=Math.max(0,t-r);return Math.max(0,Math.min(e,n))}var Ye=D(G(),1),rv=7;function nv(e){return e==="text"||e==="step"?void 0:l.dim}function sf({scenario:e,scenarioIdx:t,caseIdx:r,excluded:n,getStatus:o,getResult:i}){let s=(e.test_cases??[])[r],u=s?n.has(s.id):!1,f=s?Ut(s):!0,g=s&&o?o(s.id):void 0,w=g==="done"?(0,Ye.jsx)(a,{color:l.generateAccent,children:"ready"}):g==="error"?(0,Ye.jsx)(a,{color:l.red,children:"failed \u2192 raw steps"}):g==="pending"?(0,Ye.jsx)(a,{color:l.dim,children:"bifurcating\u2026"}):null,p=g==="done"&&s&&i?i(s.id):void 0,x=p?p.sub_objectives.map(ie=>({step:ie.objective,expected:""})):pc(s?.manual_steps),c=[s?.priority&&`Priority ${s.priority}`,s?.polarity&&`Polarity ${s.polarity}`,s?.tags&&`Tags ${s.tags}`].filter(Boolean).join(" \xB7 "),{stdout:m}=Br(),P=Math.max(20,(m?.columns??80)-4),U=Math.max(3,(m?.rows??24)-rv),B=of(s,x,c,P),[F,H]=(0,Mo.useState)(0);(0,Mo.useEffect)(()=>{H(0)},[s?.id]);let $=No(F,B.length,U);Be((ie,Y)=>{if(Y.upArrow){H(pe=>No(pe-1,B.length,U));return}if(Y.downArrow){H(pe=>No(pe+1,B.length,U));return}});let z=B.slice($,$+U),oe=B.length>U?` ${$+1}-${Math.min($+U,B.length)}/${B.length}`:"";return(0,Ye.jsxs)(b,{flexDirection:"column",paddingX:1,children:[(0,Ye.jsxs)(a,{children:[(0,Ye.jsx)(a,{color:l.dim,children:`Generate \u203A S${t+1} \u203A `}),(0,Ye.jsx)(a,{color:l.generateAccent,children:`C${r+1} ${s?.title??"(untitled)"}`}),w?(0,Ye.jsx)(a,{children:" "}):null,w]}),f?(0,Ye.jsx)(a,{color:u?l.red:l.green,children:u?"\u2717 removed":"\u2713 included"}):(0,Ye.jsx)(a,{color:l.dim,children:"\u2713 non-functional \xB7 not saved by /save"}),(0,Ye.jsx)(a,{color:l.muted,children:"\u2500".repeat(60)}),(0,Ye.jsx)(b,{flexDirection:"column",marginTop:1,children:z.map((ie,Y)=>(0,Ye.jsxs)(a,{color:nv(ie.tone),children:[ie.accent?(0,Ye.jsx)(a,{color:l.generateAccent,children:ie.accent}):null,ie.text]},$+Y))}),(0,Ye.jsx)(a,{color:l.muted,children:"\u2500".repeat(60)}),(0,Ye.jsx)(a,{color:l.dim,children:`\u2191\u2193 scroll \u2190 / esc back x remove${oe}`})]})}var jo=D(G(),1);function cf({scenarios:e,target:t,onClose:r,excluded:n,onToggleCase:o,onToggleScenario:i,getStatus:s,getResult:u}){let f=e.map(c=>(c.test_cases??[]).length),[g,w]=(0,af.useReducer)((c,m)=>hs(c,m,f),_o(t)),p=()=>{g.level==="scenarios"?r():w({type:"back"})};Be((c,m)=>{if(m.escape||m.leftArrow){p();return}if(g.level!=="detail"){if(m.return){w({type:"enter"});return}if(m.upArrow){w({type:"move",delta:-1});return}if(m.downArrow){w({type:"move",delta:1});return}}if(c==="x"){if(g.level==="scenarios"){let P=(e[g.cursor]?.test_cases??[]).map(U=>U.id);P.length>0&&i(P)}else{let P=g.level==="cases"?g.cursor:g.caseIdx,U=(e[g.scenarioIdx]?.test_cases??[])[P];U&&o(U.id)}return}});let x=e[g.scenarioIdx];if(g.level==="scenarios"||x===void 0){let c=g.level==="scenarios"?g.cursor:0;return(0,jo.jsx)(rf,{scenarios:e,cursor:c,excluded:n})}return g.level==="cases"?(0,jo.jsx)(nf,{scenario:x,scenarioIdx:g.scenarioIdx,cursor:g.cursor,excluded:n}):(0,jo.jsx)(sf,{scenario:x,scenarioIdx:g.scenarioIdx,caseIdx:g.caseIdx,excluded:n,getStatus:s,getResult:u})}var Vo=D(G(),1);function lf({tcg:e,gm:t,history:r,tuiConfig:n,browse:o}){return o?(0,Vo.jsx)(cf,{scenarios:e.state.scenarios,target:o.target,onClose:o.onClose,excluded:o.excluded,onToggleCase:o.onToggleCase,onToggleScenario:o.onToggleScenario,getStatus:o.getStatus,getResult:o.getResult}):!e.requestId||e.isSessionClosed?(0,Vo.jsx)(zd,{projectId:n.project_id,folderId:n.folder_id,onSubmit:t.handleGenerateSubmit,history:r,error:t.tcgError,validationError:t.tcgValidationError,composeIdleHint:t.composeIdleHint,clearSeq:t.inputClearSeq,busy:t.submitting,closedNotice:e.isSessionClosed?`Generation ${e.state.status}. Type a new objective or /run.`:void 0}):(0,Vo.jsx)(tf,{state:e.state,requestId:e.requestId,history:r,turnActive:e.turnActive,busy:t.submitting,error:t.tcgError??e.state.error,onClearError:()=>t.onClearError?.(),onClarificationAnswer:i=>t.onClarificationAnswer?.(i),onRefine:t.onRefine,onSlash:t.onSlash})}var uf=D(Ee(),1);var Wt=D(G(),1);function ov({message:e,confirmLabel:t,choice:r}){return(0,Wt.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.dim,paddingX:1,children:[(0,Wt.jsx)(a,{bold:!0,children:e}),(0,Wt.jsxs)(b,{marginTop:1,children:[(0,Wt.jsx)(a,{color:r==="yes"?l.red:l.dim,children:`\u276F ${t}`}),(0,Wt.jsx)(a,{children:" "}),(0,Wt.jsx)(a,{color:r==="no"?l.green:l.dim,children:"\u276F No"})]}),(0,Wt.jsx)(a,{color:l.dim,children:"\u2190 \u2192 choose \xB7 \u21B5 confirm \xB7 esc cancel"})]})}function df({message:e,onConfirm:t,onCancel:r,confirmLabel:n="Yes, end"}){let[o,i]=(0,uf.useState)("no");return Be((s,u)=>{(u.leftArrow||u.rightArrow)&&i(f=>f==="yes"?"no":"yes"),u.return&&(o==="yes"?t:r)(),u.escape&&r()}),(0,Wt.jsx)(ov,{message:e,confirmLabel:n,choice:o})}var iv=null;function ff(e){iv=e}import{join as tr,resolve as uv}from"path";var Fo=D(G(),1);function pf({status:e,steps:t,duration:r,creditsConsumed:n,reason:o}){let i=e==="passed",s=i?l.green:l.red,u=i?"\u2713":"\u2717",f=i?"Passed":"Failed",g=r<60?`${r.toFixed(1)}s`:`${Math.floor(r/60)}m ${Math.round(r%60)}s`,w=typeof n=="number"&&n>0?` \xB7 ${n.toFixed(4)} credits`:"",p=!i&&o?` \xB7 ${o}`:"";return(0,Fo.jsxs)(b,{children:[(0,Fo.jsxs)(a,{bold:!0,color:s,children:[u," ",f]}),(0,Fo.jsxs)(a,{color:l.dim,children:[" ","\xB7 ",t," steps \xB7 ",g,w,p]})]})}var gf=D(G(),1);function mf(){return(0,gf.jsx)(a,{color:l.dim,children:"Continue below \xB7 /new fresh session \xB7 /summary view details \xB7 Ctrl+C exit"})}var Uo=D(Ee(),1);import{readFileSync as lv}from"fs";var wt=D(Ee(),1);function sv(e){let t="message",r=[];for(let o of e.split(`
17
+ `))o.startsWith("event:")?t=o.slice(6).trim():o.startsWith("data:")&&r.push(o.slice(5).replace(/^ /,""));let n=r.join(`
18
+ `);if(t==="error")return{type:"error",message:n};if(t==="usage")try{return{type:"usage",creditsConsumed:JSON.parse(n).credits_consumed??0}}catch{return null}return n==="[DONE]"?{type:"done"}:n?{type:"delta",text:n.replace(/\\n/g,`
19
+ `)}:null}async function*hf(e){let t;try{t=await fetch(e.url,{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream",Authorization:e.authHeader,"x-session-id":e.sessionId},body:JSON.stringify(e.body),signal:e.signal})}catch(i){e.signal.aborted||(yield{type:"error",message:String(i)});return}if(!t.ok||!t.body){yield{type:"error",message:`describe HTTP ${t.status}`};return}let r=t.body.getReader(),n=new TextDecoder,o="";try{for(;;){if(e.signal.aborted)return;let{done:i,value:s}=await r.read();if(i)break;o+=n.decode(s,{stream:!0});let u;for(;(u=o.indexOf(`
20
+
21
+ `))!==-1;){let f=sv(o.slice(0,u));if(o=o.slice(u+2),f&&(yield f,f.type==="done"))return}}}finally{await r.cancel().catch(()=>{})}}var av=50,cv=3;function bf(){let[e,t]=(0,wt.useState)(""),r=(0,wt.useRef)(""),[n,o]=(0,wt.useState)(!1),[i,s]=(0,wt.useState)(!1),u=(0,wt.useRef)(null);(0,wt.useEffect)(()=>{if(!i)return;let p=setInterval(()=>{t(x=>{let c=r.current;return x.length>=c.length?x:c.slice(0,Math.min(c.length,x.length+cv))})},av);return()=>clearInterval(p)},[i]);let f=(0,wt.useCallback)(p=>{u.current?.abort();let x=new AbortController;u.current=x,s(!0),r.current="",t(""),o(!0),(async()=>{try{for await(let c of hf({...p,signal:x.signal})){if(x.signal.aborted)return;if(c.type==="delta")r.current+=c.text;else if(c.type==="usage")p.onUsage?.(c.creditsConsumed);else if(c.type==="done"||c.type==="error"){o(!1);return}}o(!1)}catch{o(!1)}})()},[]),g=(0,wt.useCallback)(()=>{u.current?.abort(),o(!1),s(!1),r.current="",t("")},[]);(0,wt.useEffect)(()=>()=>u.current?.abort(),[]);let w=n||e.length<r.current.length;return{text:e,active:n,visible:i,revealing:w,start:f,stop:g}}function vf({resolve:e,hostIsTTY:t}){let r=bf(),n=(0,Uo.useRef)(0),o=(0,Uo.useCallback)(i=>{if(!t())return;let s=e();if(!s)return;let u;try{u=lv(i.screenshot_path).toString("base64")}catch{return}r.start({url:`${s.controllerBaseUrl}/v16-alpha/stream`,authHeader:s.authHeader,sessionId:s.sessionId,onUsage:f=>{n.current+=f},body:{node:"visualizer",sub_node:"describe",session_id:s.sessionId,context_json:{objective:i.objective,query:i.recent_actions.map(f=>`${f.step}: ${f.action_type} ${f.instruction}`).join(`
22
+ `),screenshot_b64:u}}})},[e,t,r]);return{describe:r,onDescribe:o,creditsRef:n}}var qo=e=>({kind:"login",env:e}),xs=e=>({kind:"switch",env:e}),xf=(e,t)=>e?{kind:"switch",env:t}:{kind:"logout"};function yf(e){return[{id:"run-headless",label:"Headless",type:"select",currentValue:e.runOptions.headless?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:t=>{e.patchRunOptions({headless:t==="on"})}},{id:"run-cdp",label:"CDP Endpoint",type:"text-input",currentValue:e.runOptions.cdpEndpoint,placeholder:"http://127.0.0.1:9222",onValue:t=>{e.patchRunOptions({cdpEndpoint:t})}},{id:"run-ws",label:"WS Endpoint",type:"text-input",currentValue:e.runOptions.wsEndpoint,placeholder:"wss://...",onValue:t=>{e.patchRunOptions({wsEndpoint:t})}}]}function Sf(e){return Or()?[{id:"run-device",label:"Device",type:"action",currentValue:e.deviceLabel??"(none)",suppressFeedback:!0,onAction:()=>e.openDevicePicker()},{id:"run-app",label:"App",type:"action",currentValue:e.appLabel??"(none)",suppressFeedback:!0,onAction:()=>e.openAppPicker()}]:[]}function wf(e){return[{id:"config-chrome",label:"Chrome Profile",type:"action",onChromeProfilePicker:e.onChromeProfilePicker??(()=>{})},{id:"config-window",label:"Window Size",type:"action",currentValue:e.windowSizeLabel,onWindowSizePicker:e.onWindowSizePicker??(()=>{})},{id:"config-default-url",label:"Default URL",type:"text-input",currentValue:e.tuiConfig.default_url??"",placeholder:"https://example.com",onValue:t=>{let r=Jn(t);if(!r){e.emitFeedback("error","/config set-url","Enter a valid URL (e.g. example.com)");return}e.setConfigKey("default_url",r),e.emitFeedback("ok","/config set-url",r)}},{id:"config-network-ws",label:"WebSocket Capture",type:"select",currentValue:e.tuiConfig.network_ws?"on":"off",options:[{label:"off \u2014 no WebSocket frame capture (default)",value:"off"},{label:"on \u2014 capture WebSocket frames for assertions/extraction",value:"on"}],onValue:t=>{(t==="on"||t==="off")&&(e.setConfigKey("network_ws",t==="on"),e.emitFeedback("ok","/config set-network-ws",t))}},{id:"config-network-sse",label:"SSE Capture",type:"select",currentValue:e.tuiConfig.network_sse?"on":"off",options:[{label:"off \u2014 no SSE message capture (default)",value:"off"},{label:"on \u2014 capture SSE messages (Chromium-only) for assertions/extraction",value:"on"}],onValue:t=>{(t==="on"||t==="off")&&(e.setConfigKey("network_sse",t==="on"),e.emitFeedback("ok","/config set-network-sse",t))}}]}function Tf(e){return{label:"Mobile",entries:[{key:"Default device",value:e?.default_target?`${e.default_target.id} (${e.default_target.platform} \xB7 ${e.default_target.kind})`:"(none)"},{key:"Default app",value:e?.default_app??"(none)"}]}}function Rf(e){return e.isRunning?"refused-running":e.hasRuns?e.isTesting&&!e.hasName?"needs-name":"proceed":"no-runs"}async function kf(e){await new cn(e.tmsBaseUrl,e.username,e.accessKey).submitFeedback({instruction_id:"",test_id:e.testId,feedback_type:e.feedbackType,mode:e.mode??"human",...e.details?{details:e.details}:{}}),e.log("info","FEEDBACK_SUBMITTED","Feedback submitted",{type:e.feedbackType})}var k=D(G(),1);function XC({localMode:e=!1,codeExport:t,codeLanguage:r,skipCodeValidation:n,updatePromise:o,migrationResult:i,sessionName:s,initialChatMode:u,initialObjective:f,initialGenerateLimits:g}={}){js();let w=(0,R.useRef)(new Yn),[p,x]=(0,R.useState)(0),c=w.current,[m]=(0,R.useState)(()=>new Vr),P=(0,R.useRef)(0),U=(0,R.useCallback)(()=>`msg-${++P.current}`,[]),[B,F]=(0,R.useState)(!1),[H,$]=(0,R.useState)(null),[z,fe]=(0,R.useState)(!1),[oe,ie]=(0,R.useState)(0),[Y,pe]=(0,R.useState)(!1),[we,me]=(0,R.useState)(null),[$e,He]=(0,R.useState)(null),st=(0,R.useRef)(null),[Xt,Tt]=(0,R.useState)(null),[ge,ut]=(0,R.useState)(null),[$t,Oe]=(0,R.useState)(Qn()),[Le,zt]=(0,R.useState)(null),[Me,Kt]=(0,R.useState)([]),[mr,kr]=(0,R.useState)(!1),[Kr,Cr]=(0,R.useState)(!1),[gr,hr]=(0,R.useState)(null),[Rt,br]=(0,R.useState)(null),[Er,vr]=(0,R.useState)(null),[Q,ce]=(0,R.useState)(null),ae=(0,R.useRef)(null),ne=(0,R.useRef)(null),le=(0,R.useRef)(0),Te=(0,R.useRef)(null),dt=(0,R.useRef)(!1),I=(0,R.useRef)(null),L=(0,R.useRef)(Pa()),K=(0,R.useRef)(null),q=(0,R.useRef)(!1),te=(0,R.useRef)(""),Ae=(0,R.useRef)(null),Je=(0,R.useRef)(null),de=(0,R.useRef)({}),St=(0,R.useRef)(null),{append:bt}=Gs(),ke=(0,R.useCallback)(d=>bt((0,k.jsx)(b,{paddingX:1,children:d})),[bt]),[rr,Ot]=(0,R.useState)("booting"),[Cf,Ef]=(0,R.useState)([]),[If,Ho]=(0,R.useState)(!1),[ys,Af]=(0,R.useState)(!1),[kn,_f]=(0,R.useState)("chat"),[Nt,xr]=(0,R.useState)(null),[Cn,Ss]=(0,R.useState)(null),[Yr,ws]=(0,R.useState)(!1),[Jr,En]=(0,R.useState)(!1),Ts=(0,R.useRef)(()=>{}),Pf=(0,R.useCallback)((d,h)=>Ts.current(d,h),[]),xe=md({log:Pf});$d(xe.state,xe.turnActive,ke);let Go=(0,R.useRef)(!1),nr=(0,R.useCallback)(()=>{Go.current||xe.state.scenarios.length!==0&&(Go.current=!0,ke((0,k.jsx)($o,{scenarios:xe.state.scenarios,activeSid:null})))},[xe.state.scenarios,ke]);(0,R.useEffect)(()=>{xe.isSessionClosed&&nr()},[xe.isSessionClosed,nr]);let[In,Qr]=(0,R.useState)(null),[Pe,Wo]=(0,R.useState)({headless:!1,maxSteps:50,timeout:0,cdpEndpoint:"",wsEndpoint:"",useCft:!1}),Df=mi(),Lf=mi(qs),y=Qu(),An=Zu(),kt=(0,R.useMemo)(()=>({auth:{initResolver:d=>y.initResolver(d,(h,S,T,v)=>w.current.log(h,S,T,v)),getResolver:()=>y.getResolver(),getBasicAuth:()=>y.getBasicAuth(),getToken:()=>y.getToken()},getSession:()=>w.current,log:(d,h,S,T)=>w.current.log(d,h,S,T),state:{getTmsCredsCache:()=>Le,setTmsCredsCache:zt,identityServicesRef:ne,screenshotQueueRef:ae},exit:{registerCleanup:Vt,setExitRemoteLogger:ta},options:{skipScreenshotQueue:e}}),[y.initResolver,y.getResolver,y.getBasicAuth,y.getToken,Le,e]),Bf=(0,R.useCallback)((d,h,S,T)=>{let v=ae.current;if(!v)return;if(Te.current&&T){L.current.track(Da(Te.current.packTestDir,T,v,(j,M,Z,Se)=>c.log(j,M,Z,Se)));return}let E=le.current+h;La(c.sessionDir,E,d,v,(j,M,Z,Se)=>c.log(j,M,Z,Se),S)},[c]),$f=(0,R.useCallback)((d,h,S)=>{c.logStep(d,h,S)},[c]),Of=(0,R.useCallback)(d=>St.current?.setStepText(d),[]),Nf=(0,R.useCallback)(()=>St.current?.setStepComplete(),[]),{describe:Zr,onDescribe:Mf,creditsRef:Xo}=vf({hostIsTTY:()=>!!process.stdout.isTTY,resolve:()=>{let d=y.getResolvedBasicAuth();if(!d)return null;let h=Ge(y.creds.getDefaultEnv());return{authHeader:yi(d.username,d.access_key),sessionId:c.sessionId,controllerBaseUrl:h.controllerBaseUrl}}}),O=wa(Bf,$f,Of,Nf,Mf);(0,R.useEffect)(()=>{O.isRunning||Zr.stop()},[O.isRunning,Zr.stop]);let[C,Ce]=(0,R.useState)(()=>m.load()),A=Lu({getDefaults:()=>m.getMobile(),setDefaults:d=>{m.setMobile(d),Ce(m.load())},resolveAppId:async(d,h)=>{let S=await y.resolveBasicAuth().catch(()=>null),T=S?{username:S.username,access_key:S.access_key}:y.getResolvedBasicAuth();if(!T?.username||!T.access_key)throw new Error("Log in to use an app id, or choose a local build.");let v=zo.current,E=await oa({appId:d,baseUrl:an(ye),auth:{username:T.username,accessKey:T.access_key},onProgress:h,...v?{accepts:v==="emulator"?[".apk"]:[".zip"]}:{}});return{name:E.name,fromStore:E.fromStore}},appLabelFor:async d=>{try{return(await new na().find(d))?.name}catch{return}}}),zo=(0,R.useRef)(null);zo.current=A.kind;let Ir=Vs(C.mobile?.tui_target,C.mobile?.default_target?.kind),Ar=Ir.kind==="emulator"||Ir.kind==="simulator",jf=(0,R.useCallback)(async d=>{let h=process.cwd(),S=await Uu(h,d),T=await Promise.all(S.map(async j=>{let M=await qu(tr(h,j),A.target);return{kind:"artifact",value:j,label:j,selectable:Fu(M),...M.state==="compatible"?{}:{reason:M.reason}}})),v=d.toLowerCase(),E=A.target?A.apps.filter(j=>!v||j.toLowerCase().includes(v)).map(j=>({kind:"installed",value:j,label:j})):[];return[...T,...E]},[A.apps,A.target]),Rs=A.phase==="checking"||A.phase==="doctor"||A.phase==="chooser"||A.phase==="confirm"||A.phase==="appSource"||A.phase==="appList"||A.phase==="appId"||A.phase==="picking"||A.phase==="apps",or=(0,R.useRef)(null),Ko=(0,R.useRef)(null),[ft,ks]=(0,R.useState)(null),_r=(0,R.useCallback)(d=>`Target is locked for this session \u2014 it already ran on ${d.label}. Use /new to start a fresh session and switch.`,[]),Vf=(0,R.useRef)(new Map),Cs=(0,R.useRef)(new Set),Es=(0,R.useRef)(null),[Pr,Is]=(0,R.useState)(null),[,Ff]=(0,R.useState)(0),vt=(0,R.useCallback)(()=>Ff(d=>d+1),[]),[V,je]=(0,R.useState)(null),Dr=y.creds.getActiveProfile(),ye=y.creds.getDefaultEnv(),Uf=Hu({auth:y,env:ye,kind:()=>zo.current}),_t=(0,R.useCallback)((d,h)=>{let S=d?y.creds.loadProfileConfig(d,h):null;m.save({project_id:S?.project_id??null,project_name:S?.project_name??null,folder_id:S?.folder_id??null,folder_name:S?.folder_name??null}),Ce(m.load())},[y.creds,m]),Yo=(0,R.useCallback)(async(d,h)=>{let S=y.getResolver();if(!S)return null;let T=S.cached??await S.resolve();if(!T)return null;let v=Ge(h),E=new cn(v.tmsBaseUrl,T.username,T.access_key);try{let M=(await E.listProjects()).find(Se=>Se.name==="KaneAI Generated");if(M)return{id:M.project_id,name:M.name};let Z=await E.createProject("KaneAI Generated");return{id:Z.id,name:Z.name}}catch{return null}},[y]),Jo=(0,R.useCallback)(async(d,h)=>{let S=y.getResolver();if(!S)return null;let T=S.cached??await S.resolve();if(!T)return null;let v=Ge(d),E=new cn(v.tmsBaseUrl,T.username,T.access_key);try{let M=(await E.listFolders(h)).find(Se=>Se.name==="Untitled");if(M)return{id:M.id,name:M.name};let Z=await E.createFolder(h,"Untitled");return{id:Z.id,name:Z.name}}catch{return null}},[y]);(0,R.useEffect)(()=>{z||(c.start({model:C.model,environment:ye,profile:Dr}),s&&c.setSessionName(s),fe(!0))},[c,z,C.model,ye,Dr,s]);let As=(0,R.useRef)(!1);(0,R.useEffect)(()=>{if(!z||As.current)return;As.current=!0;let d=s?[{label:"session",value:s},{label:"test",value:pi(tr(process.cwd(),".testmuai","tests",`${s}_test.md`))},{label:"output",value:pi(tr(process.cwd(),".testmuai","tests",`output-${s}`))}]:[{label:"session",value:"ephemeral"},{label:"note",value:"use /name <name> to persist this session"}];ke((0,k.jsx)(hi,{title:"Recording",titleColor:"#ff9500",rows:d}))},[z,s,ke]);let _s=(0,R.useRef)(!1);(0,R.useEffect)(()=>{if(!B||_s.current||!z)return;_s.current=!0;let d=kt.state.getTmsCredsCache();if(!d){c.log("warn","BOOT_RESOLVE_FAILED","Boot done but tmsCredsCache empty \u2014 non-controller APIs may fail");return}Ft({kind:"boot",tmsCreds:d,env:ye},kt).then(h=>{h&&(d.org_id!==void 0&&c.setOrgId(String(d.org_id)),c.setPlan(d.plan??null),c.setUserIdentity(d.username??null,d.email??null),c.log("info","BOOT_RESOLVE_OK","Boot identity attached",{username:d.username,org_id:d.org_id,plan:d.plan??null}))}).catch(h=>{c.log("error","BOOT_RESOLVE_ERROR","Boot identity attach error",{error:h instanceof Error?h.message:String(h)})})},[B,z,kt,ye,c]);let ir=(0,R.useCallback)(async()=>{if(Le)return c.log("info","TMS_CREDS_CACHED","Using cached TMS credentials",{username:Le.username,org_id:Le.org_id}),Le;let d=await y.resolveBasicAuth();return d?(c.log("info","TMS_CREDS_OK","TMS credentials resolved",{username:d.username,org_id:d.org_id,user_id:d.user_id}),zt(d)):c.log("warn","TMS_CREDS_FAILED","No TMS credentials resolved"),d},[y,Le,c]),_n=(0,R.useCallback)(d=>{ke((0,k.jsx)(hi,{title:"\u24D8 Auto-configured",titleColor:l.orange,rows:[{label:"project",value:`${d.projectName} (${d.projectId})`},{label:"folder",value:`${d.folderName} (${d.folderId})`},{label:"change with",value:(0,k.jsxs)(b,{flexDirection:"column",children:[(0,k.jsx)(a,{color:l.dim,children:"kane-cli config project <id>"}),(0,k.jsx)(a,{color:l.dim,children:"kane-cli config folder <id>"})]})}]}))},[ke]),Pn=(0,R.useCallback)(async()=>{let d=await ir();if(!d)return c.log("warn","PROJECT_FAILED","No TMS credentials for project/folder gate"),null;let h=y.creds.getActiveProfile()??"default",S=y.creds.getDefaultEnv(),T=await ha({creds:y.creds,config:m,profile:h,env:S,tmsCreds:{username:d.username,access_key:d.access_key},isLocal:e,log:(v,E,j,M)=>c.log(v,E,j,M),onAnnounce:_n});return T.status==="ok"?{projectId:T.projectId,folderId:T.folderId}:null},[ir,m,c,y.creds,e,_n]),he=(0,R.useCallback)(d=>{let h=U(),S={...d,id:h};ke((0,k.jsx)(Au,{entry:S}))},[U,ke]),N=(0,R.useCallback)((d,h,S,T,v)=>{ke((0,k.jsx)(ad,{status:d,command:h,message:S,details:T,accentColor:v})),h==="/save"&&d==="ok"&&ke((0,k.jsx)(b,{marginLeft:2,children:(0,k.jsxs)(a,{color:l.dim,children:["\u2192 Run ",(0,k.jsx)(a,{color:l.generateAccent,children:"/testmd"})," to list your saved tests."]})}))},[ke]),Ps=(0,R.useRef)(()=>{}),sr=Dd(xe.state.scenarios.map(d=>(d.test_cases??[]).length)),qf=(0,R.useCallback)(async()=>{let d=await Pn();return Ce(m.load()),d},[Pn,m]),Pt=Pd({tcg:xe,initialChatMode:u,tuiConfig:C,auth:y,session:c,runner:O,appendStatic:ke,handleInput:d=>Ps.current(d),freezeTcgArtifact:nr,rearmArtifactFreeze:()=>{Go.current=!1},openSwitchConfirm:d=>Qr({reason:"switch",to:d}),emitFeedback:N,excluded:sr.excluded,openBrowse:sr.open,initialGenerateLimits:g,ensureProjectAndFolder:qf,config:m});Ts.current=Pt.tcgLog;let{chatMode:Ne,tcgError:fv,tcgValidationError:pv,composeIdleHint:mv,inputClearSeq:Hf,handleGenerateSubmit:Gf,flashComposeHint:Dn,setTcgError:gv}=Pt,Wf=C.hints_enabled!==!1&&process.env.KANEAI_HINTS_DISABLED!=="1"&&!!process.stdout.isTTY&&!!process.stdin.isTTY&&process.env.KANE_SCREEN_READER!=="1",Ds=(0,R.useRef)(!1);Ne==="generate"&&(Ds.current=!0);let{footerHint:Xf}=Wd({enabled:Wf,ready:rr==="ready",env:ye,config:C,tokenValid:y.tokenValid,chatMode:Ne,sessionUsedGenerate:Ds.current,log:(d,h,S,T)=>w.current.log(d,h,S,T)}),yr=(0,R.useCallback)(async(d,h,S)=>{let T=A.device,v=S??(Ar?"mobile":"web"),E=v==="mobile"?"device":"web",j=E==="device";c.log("info","RUN_TARGET_STATE","Dispatch target resolved",{mobile_mode:j,tui_target:C.mobile?.tui_target??null,device_bound:!!T,app_bound:!!T?.app_package,mobile_phase:A.phase,parked:!!or.current});let M=j?Ou(d):{objective:d,token:null};if(j&&M.token&&!M.objective){he({type:"error",text:`@${M.token}: add an objective after the app token.`});return}if(!ft&&!M.token&&!h&&!Cs.current.has(d)){let ue=y.getResolvedBasicAuth(),_e=ue?null:await y.getToken(),Ve=ue?yi(ue.username,ue.access_key):_e?`Bearer ${_e}`:null;if(Ve){let Ze=await Wu({objective:d,sessionTarget:v,controllerBaseUrl:Ge(ye).controllerBaseUrl,authHeader:Ve,cache:Vf.current});c.log("info","CLASSIFY_VERDICT","Objective classified",{session_target:v,target:Ze?.target??null,confidence:Ze?.confidence??null});let Lt=Xu(Ze,v);if(Lt.kind==="mismatch"){Is({objective:d,url:h,suggested:Lt.suggested,verdict:Lt.verdict});return}}}if(j&&!T){or.current=d,he({type:"info",text:"Setting up mobile device\u2026"}),A.begin();return}let Z=T;if(j&&M.token){let ue=aa(M.token);if(!ue){he({type:"error",text:`@${M.token}: ${sa}`});return}let _e=await A.bindAppForRun(ue);if(!_e.ok){he({type:"error",text:`@${M.token}: ${_e.error}`});return}Z=_e.device}else if(j){if(!T?.app_package){or.current=d,he({type:"info",text:"Choose the app under test\u2026"}),A.requestAppSource();return}let ue=await A.validateBinding();if(!ue.ok){or.current=d,he({type:"info",text:ue.reason}),ue.step==="device"?A.begin("reinit"):A.requestAppSource();return}}let Se=j?M.objective:d,Re=q.current?null:Oa({flag:h,configDefault:C.default_url}),Qe=ec({objective:Se,globalDir:tr(mt,"variables"),localDir:tr(process.cwd(),".testmuai","variables")}),Sr=c.nextRunIndex();le.current=Sr,te.current=Qe.auteurObjective,Xo.current=0,c.logRunStart(Sr,Qe.auteurObjective,Re??""),c.setFirstRun(Qe.auteurObjective,Re??"");let Vn=y.getResolvedBasicAuth(),Dt=Vn,Mt=null;if(!Dt&&(Mt=await y.getToken(),!Mt)){he({type:"error",text:"Not authenticated. Run /login first."});return}let Lr={basicAuth:Vn??null,token:Mt,resolver:y.getResolver(),resolvedCreds:null};Ae.current=Lr;let en=y.creds.getActiveProfile()??"default",tn=y.creds.getDefaultEnv();ga(y.creds,m,en,tn,(ue,_e,Ve,Ze)=>c.log(ue,_e,Ve,Ze));let Fn=m.load();if(Ce(Fn),j){if(!Z){or.current=d,he({type:"info",text:"Setting up mobile device\u2026"}),A.begin();return}if(!Z.app_package){or.current=d,he({type:"info",text:"Choose the app under test\u2026"}),A.requestApp();return}}let Ue;try{Ue=await Ka(E,{prepareDevice:async()=>{let ue=M.token??Z.app_package,_e=!M.token&&ue&&Z.udid?await $u({udid:Z.udid,app:ue,runnerGen:O.sessionGen}):null,Ve=Ko.current;if(_e&&Ve&&Ve.key===_e)return he({type:"info",text:`Device ready: ${Ve.device.app_package} on ${Ve.displayName} (reusing session)`}),{device:Ve.device,...Ve.appRef?{appRef:Ve.appRef}:{},...Ve.appId?{appId:Ve.appId}:{}};let Ze=await ir(),Lt=y.getResolvedBasicAuth(),pt=await la({...Z.udid?{device:Z.udid}:{},...Z.platform?{platform:Z.platform}:{},...M.token?{app:M.token}:Z.app_package?{app:Z.app_package}:{},defaults:C.mobile,interactive:!1,onProgress:ui=>Tt(ui),...Lt?.username&&Lt.access_key&&Ze?.org_id?{cloudUpload:{env:ye,orgId:String(Ze.org_id),userId:String(Ze.user_id??""),baseUrl:an(ye),auth:{username:Lt.username,accessKey:Lt.access_key}}}:{}});return he({type:"info",text:`Device run: ${pt.device.app_package} on ${pt.device.udid}`}),_e&&(Ko.current={key:_e,device:pt.device,...pt.appRef?{appRef:pt.appRef}:{},...pt.appId?{appId:pt.appId}:{},displayName:pt.target.displayName}),{device:pt.device,...pt.appRef?{appRef:pt.appRef}:{},...pt.appId?{appId:pt.appId}:{}}},prepareWeb:async()=>{if(Pe.useCft)return he({type:"info",text:"CfT mode: Playwright will manage browser"}),{instance:null,tempDir:null};if(Pe.wsEndpoint)return he({type:"info",text:`WS endpoint: ${Pe.wsEndpoint.slice(0,60)}...`}),{wsEndpoint:Pe.wsEndpoint,instance:null,tempDir:null};if(Pe.cdpEndpoint)return he({type:"info",text:`CDP endpoint: ${Pe.cdpEndpoint}`}),{cdpEndpoint:Pe.cdpEndpoint,instance:null,tempDir:null};he({type:"info",text:"Starting Chrome..."});let ue=await An.ensureChrome(Re??void 0);c.logChromeLaunch(ue.port,ue.cdpEndpoint);let _e=Sa({headless:Pe.headless,cdpEndpoint:ue.cdpEndpoint,chromePid:ue.process.pid});return _e&&(St.current=_e,Vt("marker-overlay",()=>_e.kill())),{cdpEndpoint:ue.cdpEndpoint,instance:ue,tempDir:null}}})}catch(ue){let _e=E==="device"?ue instanceof Error?ue.message:String(ue):xa(ue);he({type:"error",text:_e});return}finally{Tt(null)}let Un=Ue.kind==="web"?Ue.chrome:{instance:null,tempDir:null};if(Sr===0&&!e){c.log("info","ATM_CREATE_START","Creating test via ATM endpoint",{run_index:0});let ue=await Pn(),_e=m.load();Ce(_e);let Ve=Ge(ye),Ze=Dt?{username:Dt.username,access_key:Dt.access_key}:await ir();if(Ze){let Lt=await ic({tmsBaseUrl:Ve.tmsBaseUrl,auth:{username:Ze.username,access_key:Ze.access_key},objective:Qe.auteurObjective,url:Re??"",projectId:ue?.projectId??_e.project_id??"",folderId:ue?.folderId??_e.folder_id??"",hasCustomProfile:!!C.chrome_profile_path,...Ue.kind==="device"?{mobile:oc({platform:Ue.device.platform,appId:Ue.appId,deviceName:A.target?.displayName,osVersion:A.target?.osVersion,udid:Ue.device.udid})}:{},log:(pt,ui,ep,tp)=>c.log(pt,ui,ep,tp)});Lt&&(c.setTestId(Lt),ue?.projectId&&c.setProjectId(ue.projectId))}}c.setAuteurVariables(Qe.auteur),Je.current=Qe;let li=Dt&&!e?await tc({variables:Qe,auth:Dt,orgId:String((await ir())?.org_id??""),env:ye,localMode:e,log:(ue,_e,Ve,Ze)=>c.log(ue,_e,Ve,Ze)}):{};de.current=li;let qn=Ei(tr(mt,"global-memory.md")),cr=Ei(tr(process.cwd(),".testmuai","context.md"));if(Sr===0){let ue={mode:C.mode,max_steps:Pe.maxSteps,timeout:Pe.timeout>0?Pe.timeout:void 0,target:Ya(Ue,{cdpEndpoint:Pe.cdpEndpoint||void 0,wsEndpoint:Pe.wsEndpoint||void 0}),app:Ja(Ue),os_version:Ue.kind==="device"?A.target?.osVersion:void 0,chrome_profile:C.chrome_profile_path||void 0,cdp_endpoint:Pe.cdpEndpoint||void 0,ws_endpoint:Pe.wsEndpoint||void 0,headless:Pe.headless,global_context:qn??void 0,local_context:cr??void 0,variables:Object.keys(Qe.auteur).length>0?Qe.auteur:void 0};c.setResolvedGlobal(ue)}dt.current||(dt.current=!0,Te.current=await ka({objectiveOrName:c.sessionName??d,sessionId:c.sessionId,title:c.sessionName??d,producerVersion:xt,pid:process.pid,surfaces:Re?[Re]:void 0,packRootDir:tr(c.sessionDir,"evidence")})),I.current||(I.current=Ra(Un.cdpEndpoint),I.current());let Hn=Za(Qe.auteur,Qe.auteurObjective),Zf=Qa({objective:Qe.auteurObjective,url:Ue.kind==="device"?void 0:Re??void 0,requireStartUrl:Ue.kind==="web"&&!q.current&&Re===null,model:C.model,chrome:Un,auth:Lr,sessionId:c.sessionId,runIndex:Sr,windowSize:C.window_size,maxSteps:Pe.maxSteps,headless:Pe.headless,networkWs:C.network_ws,networkSse:C.network_sse,bugDetection:C.bug_detection,variables:Object.keys(Hn).length>0?Hn:void 0,globalContext:qn??void 0,localContext:cr??void 0,sessionContext:c.getContext(),device:Ue.kind==="device"?Ue.device:void 0,evidence:Ca(Te.current)});Re&&$(Re),me(null),K.current=null,ks({kind:j?"mobile":"web",label:Ue.kind==="device"?rn(Ue.device.target_kind==="simulator"?"simulator":"emulator"):"Desktop"}),O.startRun(Zf,{environment:ye,mode:C.mode,assertionMode:C.assertion_mode,log:(ue,_e,Ve,Ze)=>c.log(ue,_e,Ve,Ze)}),ie(ue=>ue+1)},[y,An,m,C,c,ye,O,he,Pe,Pn,ir,Ar,ft,A.device,A.target,A.begin,A.requestApp,A.requestAppSource,A.validateBinding,A.bindAppForRun]),Ln=(0,R.useCallback)(d=>{let h=Pr;if(h){if(Is(null),c.log("info","CLASSIFY_ACTION","Classification prompt answered",{action:d,suggested:h.suggested,target:h.verdict.target,confidence:h.verdict.confidence}),d==="cancel"){he({type:"info",text:`Run cancelled \u2014 "${h.objective}" was not run.`});return}if(Cs.current.add(h.objective),d==="keep"){yr(h.objective,h.url);return}if(h.suggested==="web"){m.setMobile({tui_target:"desktop",default_target:void 0,default_app:void 0}),Ce(m.load()),A.reset(),he({type:"info",text:"Session target: Desktop (Chrome)"}),yr(h.objective,h.url,"web");return}Es.current=h.verdict.appHint??null,or.current=h.objective,A.begin(d==="pick"?"reinit":"confirm")}},[Pr,c,he,yr,m,A]);Bu({phase:A.phase,device:A.device,requestApp:A.requestAppSource,pendingRef:or,dispatch:d=>{yr(d)},notify:he,onSettle:()=>{Es.current=null}});let zf=(0,R.useCallback)(async d=>{let h=uv(d),S=Ha(h),T=new Yn;for(let Re of S.warnings)T.log("warn","RESOLVER_WARNING",Re);let v=y.getResolvedBasicAuth(),E=null;v||(E=await y.getToken());let j={basicAuth:v??null,token:E,resolver:y.getResolver(),resolvedCreds:null},M=ye,Z=Ge(M),Se=y.creds.getActiveProfile()??"default";return{path:h,cwd:process.cwd(),opts:{},isAgent:!1,disableAskUser:!0,resolved:S,resolvedAuth:j,cliOverrides:{},environment:M,envConfig:Z,profile:Se,model:"v16-alpha",creds:y.creds,configStore:m,session:T,skipGlobalRemoteLogger:!0,onAnnounce:_n}},[y,m,ye,_n]),Ie=pd({buildInput:zf,remoteLogger:null}),Qo=(0,R.useRef)(null);(0,R.useEffect)(()=>{if(O.bifurcationInfo&&O.bifurcationInfo!==Qo.current){Qo.current=O.bifurcationInfo;let{flows:d,isSingleFlow:h}=O.bifurcationInfo;h&&d.length===1&&d[0]?c.log("info","OBJECTIVE_REWRITTEN","Objective rewritten",{objective:d[0]}):!h&&d.length>1&&c.log("info","BIFURCATION","Objective bifurcated into flows",{flow_count:d.length})}},[O.bifurcationInfo,c,he]);let Zo=R.default.useRef(null),ei=R.default.useRef(0),ti=R.default.useRef(0);(0,R.useEffect)(()=>{if(O.lastRunEnd&&O.lastRunEnd!==Zo.current){Zo.current=O.lastRunEnd,q.current=!0;let{status:d,duration:h,summary:S,reason:T,context:v}=O.lastRunEnd,{passed:E,failed:j,total:M}=Ta(O.steps);ei.current+=M,ti.current+=h??0;let Z=O.lastRunEnd?.credits_consumed,Se=Z!=null||Xo.current>0?(Z??0)+Xo.current:void 0;me({status:d,duration:h??0,summary:S??"",stepsPassed:E,stepsFailed:j,stepsTotal:M,reason:T,finalState:O.lastRunEnd?.final_state,creditsConsumed:Se}),c.logRunEnd(le.current,d,h,S,O.lastRunEnd?.result_code);let Re=O.bifurcationInfo,Qe=Re&&!Re.isSingleFlow?Re.flows:null,Sr=pa(O.lastRunEnd,le.current,Qe),Vn=ma(O.lastRunEnd,te.current,le.current,Sr);c.addRunResult(Vn,O.lastRunEnd?.total_runs),Ti(Te.current,O.getEvidenceState(),O.lastRunEnd);let Dt=O.lastRunEnd?.per_flow_metadata;if(Re&&!Re.isSingleFlow&&Dt&&Dt.length>1)for(let Mt=0;Mt<Dt.length;Mt++){let Lr=Dt[Mt],en=O.steps[Mt],tn=en?.children??[],Fn=tn.filter(cr=>cr.status==="passed").length,Ue=tn.filter(cr=>cr.status==="failed").length,Un=tn.reduce((cr,Hn)=>cr+(Hn.duration??0),0),li=en?.status==="failed"?"failed":"passed",qn=Re.flows[Mt]??en?.objective??te.current;c.addFlow({runIndex:le.current,flowId:Re.flows[Mt],objective:qn,status:li,summary:Lr.summary??"",duration:Un,steps:Fn+Ue,stepsPassed:Fn,stepsFailed:Ue,reason:Lr.error_message??void 0,creditsConsumed:Lr.credits_consumed??void 0})}else c.addFlow({runIndex:le.current,objective:te.current,status:d,summary:S??"",duration:h??0,steps:M,stepsPassed:E,stepsFailed:j,reason:T,creditsConsumed:O.lastRunEnd?.credits_consumed})}},[O.lastRunEnd,c,he]);let ri=(0,R.useRef)(null);(0,R.useEffect)(()=>{O.askingUser&&(ri.current=O.askingUser)},[O.askingUser]);let ni=(0,R.useRef)(null);(0,R.useEffect)(()=>{if(we&&!O.isRunning&&O.lastRunEnd){if(ni.current===O.lastRunEnd)return;ni.current=O.lastRunEnd,ke((0,k.jsxs)(b,{flexDirection:"column",children:[(0,k.jsx)(pf,{status:we.status,steps:we.stepsTotal,duration:we.duration,creditsConsumed:we.creditsConsumed,reason:we.reason}),(0,k.jsx)(mf,{})]})),me(null)}},[we,O.isRunning,O.lastRunEnd,ke]);let Ls=(0,R.useRef)(null);(0,R.useEffect)(()=>{if(Ie.runSummary&&!Ie.running){if(Ls.current===Ie.runSummary)return;Ls.current=Ie.runSummary,(Ie.summary||Ie.links)&&ke((0,k.jsxs)(b,{flexDirection:"column",children:[Ie.summary&&(0,k.jsx)(Xa,{data:Ie.summary}),Ie.links&&(0,k.jsx)(Zn,{...Ie.links,autoExit:!1})]}))}},[Ie.runSummary,Ie.running,Ie.summary,Ie.links,ke]),(0,R.useEffect)(()=>{St.current?.setRunActive(O.isRunning)},[O.isRunning]),(0,R.useEffect)(()=>{if(O.runError&&!O.isRunning){let d=O.runError.trim();c.log("error","RUNNER_ERROR","Runner error occurred",{error:d}),c.escalateRun(c.nextRunIndex()-1),!O.lastRunEnd&&K.current!==O.runError&&(K.current=O.runError,Ti(Te.current,O.getEvidenceState(),null));let S=d.split(`
23
+ `).slice(-8).join(`
24
+ `);he({type:"error",text:`Runner error:
25
+ ${S}`})}},[O.runError,O.isRunning,O.lastRunEnd,he,c]);let Bn=(0,R.useCallback)(async(d={})=>{let h=Te.current;return h?(c.flushRecorder(),await Ea(h,{saved:!!c.sessionName,local:e,deviceName:A.target?.displayName,deviceModel:A.target?.modelIdentifier,recordedTestPath:c.recorder?.lastWrittenPath??null,externalIdInput:{session_id:c.sessionId,commit_id:c.sessionId,test_id:c.testId??void 0,testcase_id:d.testcaseId??c.testcaseId??void 0,project_id:C.project_id??void 0,folder_id:C.folder_id??void 0,org_id:c.orgId??void 0,session_name:c.sessionName??void 0,user_name:c.userName??void 0,user_email:c.userEmail??void 0,sharable_link:za(Ge(ye).testManagerUiUrl,C.project_id,d.testcaseId??c.testcaseId,d.shareId)},cdpBrowserCapture:I.current??void 0,model:C.model,tuiLogPath:tr(c.sessionDir,"tui.log"),log:(S,T,v,E)=>c.log(S,T,v,E)})):null},[c,C]),$n=(0,R.useCallback)(async d=>{let h=Te.current?.packDir??null,S=await Bn({testcaseId:d?.testcaseId,shareId:d?.shareId});return Te.current=null,dt.current=!1,I.current=null,S?.sealed?h:null},[Bn]),On=(0,R.useCallback)(async()=>{c.log("info","EXIT_UPLOAD_START","Starting exit upload pipeline"),Oe(Qn()),ut({status:"uploading"});let d=y.getResolvedBasicAuth(),h=null;if(!d&&(h=await y.getToken(),!h))return c.log("warn","EXIT_UPLOAD_ABORTED","Exit upload aborted \u2014 no auth available"),null;let S=Le??await ir();if(!S)return c.log("warn","EXIT_UPLOAD_ABORTED","Exit upload aborted \u2014 no TMS credentials"),c.setUploadStatus("failed","Could not get TMS credentials"),null;c.log("info","EXIT_UPLOAD_CONFIG","Exit upload configuration",{test_id:c.testId,commit_id:c.sessionId,project_id:C.project_id,session_dir:c.sessionDir,run_dirs:c.getRunDirs()});let T={basicAuth:d??null,token:h,resolver:y.getResolver(),resolvedCreds:S};ae.current&&(c.log("info","SCREENSHOT_UPLOAD_DRAIN","Draining screenshot queue before pipeline"),await L.current.settle(),await ae.current.drain(),c.log("info","SCREENSHOT_UPLOAD_DRAINED","Screenshot queue drained"));let v=rc({mobile:Ar,session:c,env:ye,auth:T,variables:Je.current??{raw:{},auteur:{},auteurObjective:"",secretEntries:[],nonSecretEntries:[]},variableIds:de.current,projectId:C.project_id,folderId:C.folder_id,totalSteps:ei.current,totalDuration:ti.current,screenshotExtMap:ae.current?.getExtMap(),codeExport:nc({codeExport:t,codeLanguage:r,skipCodeValidation:n},C.code_export),onProgress:(M,Z,Se)=>{c.log("info","EXIT_PROGRESS","Upload progress",{step:M,status:Z,detail:Se}),Oe(Re=>Wa(Re,M,Z,Se))},log:(M,Z,Se,Re)=>c.log(M,Z,Se,Re),shouldUploadArtifacts:!0,shouldReplaceLocalOutput:!1,shouldCommit:!1,isFirstRun:!0,evidence:Te.current?{executionId:Te.current.executionId,packTestDir:Te.current.packTestDir,sealedPackPath:Te.current.packDir,sealFn:Bn}:void 0}),j=await new sc(v).execute();if(j.success){c.log("info","EXIT_UPLOAD_OK","Exit upload succeeded",{test_id:j.testId,testcase_id:j.testcaseId??null,share_id:j.shareId??null}),c.setUploadStatus("uploaded"),j.testId&&c.setTestId(j.testId),j.testcaseId&&c.setTestcaseId(j.testcaseId);let M=Ge(ye),Z=C.project_id,Se=j.testcaseId&&j.shareId&&Z?ki(M.testManagerUiUrl,Z,j.testcaseId,j.shareId):void 0,Re=j.testcaseId&&Z?Ci(M.testManagerUiUrl,Z,j.testcaseId):void 0;ut({status:"success",testUrl:Se,testCaseLink:Re,codeExportDir:j.codeExportDir}),ff({shareableLink:Se,testCaseLink:Re,codeExportDir:j.codeExportDir})}else c.log("error","EXIT_UPLOAD_FAILED","Exit upload failed",{error:j.error}),c.setUploadStatus("failed",j.error),ut({status:"failed",error:j.error});return j},[y,ye,c,C,Le,ir,Bn]),Nn=(0,R.useCallback)(async()=>{c.log("info","SESSION_RESET_START","Starting session reset via /new"),kr(!0);let d=c.getFlows();d.length>0&&ke((0,k.jsx)(fs,{flows:d}));let h=null;if(!e)try{h=await On()??null}catch(E){c.log("error","SESSION_RESET_UPLOAD_FAILED","Upload failed during /new",{error:String(E)}),he({type:"error",text:"Upload failed \u2014 session data saved locally."})}let S=null;try{let{persistRecordedSession:E}=await import("./persist-recorded-session-O2NCYTSD.js");S=await E(c,{testcaseId:c.testcaseId??void 0,projectId:C.project_id??void 0,folderId:C.folder_id??void 0,codeExportDir:h?.codeExportDir,packTestDir:Te.current?.packTestDir})}catch(E){c.log("error","SESSION_RESET_PERSIST_FAILED","Persist failed during /new",{error:String(E)})}if(h?.success&&h.testcaseId||S){let E=Ge(ye),j=C.project_id,M=h?.testcaseId;ke((0,k.jsx)(Zn,{recordedTestPath:S?.recordedTestPath,outputDir:S?.outputDir,shareableLink:M&&h?.shareId&&j?ki(E.testManagerUiUrl,j,M,h.shareId):void 0,testCaseLink:M&&j?Ci(E.testManagerUiUrl,j,M):void 0,codeExportDir:h?.codeExportDir,autoExit:!1}))}let T=await $n(h);T&&he({type:"info",text:Aa(T)}),c.testId&&Kt(E=>[...E,{testId:c.testId,runCount:oe}]),await O.shutdownRunner(),An.killChrome(),await c.finish("complete");let v=new Yn;v.start({model:C.model,environment:ye,profile:Dr??null}),w.current=v,x(E=>E+1),c.log("info","SESSION_RESET_COMPLETE","Session reset complete",{new_session_id:v.sessionId});try{await Ft({kind:"resessionize",env:ye},kt)}catch(E){c.log("error","SESSION_RESET_IDENTITY_FAILED","Identity re-attach failed during /new",{error:String(E)})}ie(0),ei.current=0,ti.current=0,le.current=0,te.current="",Je.current=null,de.current={},jn.current=0,ii.current=0,ri.current=null,ni.current=null,Zo.current=null,K.current=null,q.current=!1,Qo.current=null,ks(null),Ko.current=null,me(null),$(null),ut(null),Oe(Qn()),kr(!1),N("ok","/new","Session reset")},[c,he,ke,N,e,On,$n,An,O,oe,C,ye,Dr,kt]),Bs=(0,R.useCallback)(async()=>{switch(Rf({hasRuns:c.nextRunIndex()>0,isRunning:O.isRunning,isTesting:C.mode==="testing",hasName:!!c.sessionName})){case"refused-running":he({type:"error",text:"Cannot reset while a run is in progress. Cancel the run first."});return;case"no-runs":he({type:"info",text:"No runs in current session."});return;case"needs-name":vr("new"),br(_i());return;case"proceed":await Nn();return}},[c,O,he,C.mode,Nn]),$s=(0,R.useCallback)(async()=>{await O.shutdownRunner(),await c.finish("complete"),Nr(0,"Session complete")},[c,O]),Kf=(0,R.useCallback)(async d=>{Cr(!1);let h=c.testId??(Me.length>0?Me[Me.length-1].testId:null);if(d&&h){c.log("info","EXIT_FEEDBACK_SUBMIT","Submitting session feedback",{choice:d});try{let S=Ge(ye),T=y.getResolvedBasicAuth();T&&await kf({tmsBaseUrl:S.tmsBaseUrl,username:T.username,accessKey:T.access_key,testId:h,feedbackType:d,log:(v,E,j,M)=>c.log(v,E,j,M)})}catch(S){c.log("error","EXIT_FEEDBACK_FAILED","Feedback submission failed",{error:String(S)})}}else c.log("info","EXIT_FEEDBACK_SKIPPED","Feedback skipped");$s()},[ye,y,c,$s,Me]),Mn=(0,R.useCallback)(async()=>{let d=c.nextRunIndex()>0,h=null;if(d&&!e){c.log("info","EXIT_WITH_ACTIVE_SESSION","Exit with active session \u2014 uploading first"),pe(!0);try{h=await On()??null}catch(v){c.log("error","EXIT_UPLOAD_FAILED","Exit upload failed",{error:String(v)})}c.testId&&Kt(v=>[...v,{testId:c.testId,runCount:oe}])}try{let{persistRecordedSession:v}=await import("./persist-recorded-session-O2NCYTSD.js"),E=await v(c,{testcaseId:c.testcaseId??void 0,projectId:C.project_id??void 0,folderId:C.folder_id??void 0,codeExportDir:h?.codeExportDir,packTestDir:Te.current?.packTestDir});E&&ce(E)}catch(v){c.log("error","EXIT_PERSIST_FAILED","Persist failed during /exit",{error:String(v)})}let S=await $n(h);if(S&&process.stdout.isTTY&&(pe(!0),await new Promise(v=>hr({packPath:S,resolve:v})),hr(null)),d&&!e&&await c.finish("complete"),!(c.testId??(Me.length>0?Me[Me.length-1].testId:null))||e){await c.finish("complete"),Nr(0,"No test ID \u2014 quick exit");return}pe(!0),Cr(!0)},[c,e,On,$n,oe,Me,C]),ar=(0,R.useCallback)(async()=>{if(Y)return;c.log("info","EXIT_START","TUI exit initiated");let d=C.mode==="testing",h=c.nextRunIndex()>0;if(d&&h&&!c.sessionName){vr("exit"),br(_i());return}await Mn()},[Y,c,C.mode,Mn]),Yf=(0,R.useCallback)(d=>{d&&c.setSessionName(d);let h=Er;br(null),vr(null),h==="new"?Nn():Mn()},[c,Er,Mn,Nn]);(0,R.useEffect)(()=>{if(!Y)return;let d=300*1e3,h=setTimeout(async()=>{c.setUploadStatus("failed","Upload timed out after 5m"),await c.finish("complete"),Nr(0,"Upload timed out after 5m")},d);return()=>clearTimeout(h)},[Y,c]);let jn=R.default.useRef(0),oi=R.default.useRef(null),ii=R.default.useRef(0),si=R.default.useRef(0),ai=R.default.useRef(null);Be((d,h)=>{if(h.ctrl&&d==="c"){if(Ne==="generate"&&(xe.isStreaming||Pt.submitting)){Pt.cancelGenerate(),si.current++,ai.current&&clearTimeout(ai.current),ai.current=setTimeout(()=>{si.current=0},2e3),si.current>=2&&ar();return}if(!Ie.running){if(Y){ii.current+=1,ii.current>=2&&(c.setUploadStatus("pending","Force exit by user"),c.finish("complete"),Nr(0,"Force exit by user"));return}if(O.isRunning){O.cancelRun(),he({type:"info",text:"Run cancelled."}),jn.current++,oi.current&&clearTimeout(oi.current),oi.current=setTimeout(()=>{jn.current=0},2e3),jn.current>=2&&ar();return}ar()}}}),Be((d,h)=>{if(h.ctrl&&d==="t"&&Ne==="generate"&&!xe.isStreaming){Dn("no thinking yet");return}});let Os=R.default.useMemo(()=>{let d=y.creds.getActiveProfile()??"none",h=y.creds.getDefaultEnv(),S={runOptions:{headless:Pe.headless,cdpEndpoint:Pe.cdpEndpoint,wsEndpoint:Pe.wsEndpoint},patchRunOptions:v=>Wo(E=>({...E,...v})),deviceLabel:A.target?.displayName??null,appLabel:A.device?.app_package??null,openDevicePicker:()=>{if(ft){N("error","/config device",_r(ft));return}xr(null),A.begin("reinit")},openAppPicker:()=>{if(ft){N("error","/config app",_r(ft));return}if(xr(null),A.target){A.requestApp();return}A.begin("reinit")}},T={tuiConfig:C,setMobile:v=>{m.setMobile(v),Ce(m.load())},setConfigKey:(v,E)=>{m.set(v,E),Ce(m.load())},emitFeedback:N,onChromeProfilePicker:()=>{},onWindowSizePicker:()=>{},windowSizeLabel:`${C.window_size.width}x${C.window_size.height}`};return[{id:"run",label:"Run",type:"submenu",children:[{id:"run-start",label:"Start Run",type:"action"},{id:"run-config",label:"Run Config",type:"submenu",children:[{id:"run-max-steps",label:"Max Steps",type:"text-input",currentValue:String(Pe.maxSteps),onValue:v=>{let E=parseInt(v,10);E>0&&Wo(j=>({...j,maxSteps:E}))}},{id:"run-timeout",label:"Timeout (sec)",type:"text-input",currentValue:Pe.timeout?String(Pe.timeout):"",placeholder:"0 = no timeout",onValue:v=>{let E=parseInt(v,10);Wo(j=>({...j,timeout:isNaN(E)?0:E}))}},{id:"run-config-desktop",label:"Desktop",type:"submenu",children:yf(S)},...Or()?[{id:"run-config-mobile",label:"Mobile",type:"submenu",children:Sf(S)}]:[]]}]},{id:"auth",label:"Auth",type:"submenu",children:[{id:"login",label:"Login",type:"action",onLoginWizard:()=>{}},{id:"logout",label:"Logout",type:"action",onAction:()=>{y.logout().then(v=>{vt();let E=y.creds.getActiveProfile(),j=y.creds.getDefaultEnv();_t(E,j);let M=xf(E,j);Ft(M,kt).catch(()=>{}),v?N("ok","/logout",`Logged out: ${v.profile} [${v.env}]`):N("ok","/logout","No active profile")}).catch(()=>{N("error","/logout","Logout failed")})}},{id:"whoami",label:"Who Am I",type:"action",onInfo:()=>{let v=y.creds.getActiveProfile()??"none",E=y.creds.getDefaultEnv(),j=y.creds.loadBasicAuth(v,E),M=j?"basic":y.creds.loadCredentials(v,E)?"oauth":"not configured";return{title:"Who Am I",sections:[{label:"Identity",entries:[{key:"Profile",value:v},{key:"Environment",value:E}]},{label:"Authentication",entries:[{key:"Method",value:M},...j?[{key:"Username",value:j.username}]:[]]},{label:"Token",entries:[{key:"Status",value:y.tokenValid?"valid":"not logged in",color:y.tokenValid?l.green:l.red}]}]}}},{id:"balance",label:"Credit Balance",type:"action",suppressFeedback:!0,onAction:()=>{(async()=>{let v=y.creds.getActiveProfile()??"default",E=y.creds.getDefaultEnv(),j=Ge(E);try{let M=y.getBasicAuth(),Z=M?null:await y.getToken();if(!M&&!Z){He({text:"Not authenticated. Run /login first.",color:l.red});return}let{ControllerClient:Se}=await import("./controller-client-OB4WD2C4.js"),Qe=await(M?new Se(j.controllerBaseUrl,{username:M.username,accessKey:M.access_key}):new Se(j.controllerBaseUrl,Z)).getCreditBalance();He({text:`Credits \u2014 available: ${Qe.available_credits}, total: ${Qe.total_credits} (${v} / ${E})`,color:l.green})}catch(M){He({text:`Balance check failed: ${M instanceof Error?M.message:String(M)}`,color:l.red})}st.current&&clearTimeout(st.current),st.current=setTimeout(()=>{He(null),st.current=null},5e3)})()}},{id:"profiles",label:"Profiles",type:"action",onProfilesView:()=>{}}]},{id:"config",label:"Config",type:"submenu",children:[{id:"config-show",label:"Show",type:"action",onInfo:()=>({title:"Show Config",sections:[{label:"General",entries:[{key:"Model",value:"v16-alpha"},{key:"Mode",value:C.mode},{key:"Assertion Mode",value:C.assertion_mode},{key:"WebSocket Capture",value:C.network_ws?"on":"off"},{key:"SSE Capture",value:C.network_sse?"on":"off"},{key:"Bug Detection",value:C.bug_detection},{key:"Final Validation",value:C.final_validation?"on":"off"},{key:"Hints",value:C.hints_enabled===!1?"off":"on"}]},{label:"Browser",entries:[{key:"Window",value:`${C.window_size.width}x${C.window_size.height}`},{key:"Chrome Profile",value:C.chrome_profile_path?C.chrome_profile_path.split("/").pop()??C.chrome_profile_path:"(temporary)"}]},{label:"Project",entries:[{key:"Project",value:C.project_name?`${C.project_name} (${C.project_id})`:C.project_id??"(none)"},{key:"Folder",value:C.folder_name?`${C.folder_name} (${C.folder_id})`:C.folder_id??"(none)"},{key:"Default URL",value:C.default_url??di}]},{label:"Code Export",entries:[{key:"Enabled",value:C.code_export.enabled?"yes":"no"},{key:"Language",value:C.code_export.language},{key:"Skip Validation",value:C.code_export.skip_validation?"yes":"no"}]},Tf(C.mobile)]})},{id:"config-project",label:"Project",type:"action",onProjectPicker:()=>{}},{id:"config-folder",label:"Folder",type:"action",...C.project_id?{onFolderPicker:()=>{}}:{onInfo:()=>({title:"Folder",sections:[{entries:[{key:"Status",value:"Select a project first",color:l.dim}]}]})}},{id:"config-desktop",label:"Desktop",type:"submenu",children:wf(T)},{id:"config-run",label:"Run",type:"submenu",children:[{id:"config-mode",label:"Mode",type:"select",currentValue:C.mode,options:[{label:"testing",value:"testing"},{label:"action",value:"action"}],onValue:v=>{(v==="action"||v==="testing")&&(m.set("mode",v),Ce(m.load()),N("ok","/config set-mode",v))}},{id:"config-assertion-mode",label:"Assertion Mode",type:"select",currentValue:C.assertion_mode,options:[{label:"visual \u2014 vision model (default)",value:"visual"},{label:"dom \u2014 DOM extraction & assertions preferred",value:"dom"}],onValue:v=>{(v==="visual"||v==="dom")&&(m.set("assertion_mode",v),Ce(m.load()),N("ok","/config set-assertion-mode",v))}},{id:"config-final-validation",label:"Final Validation",type:"select",currentValue:C.final_validation?"on":"off",options:[{label:"off \u2014 no cp_final checkpoint (default)",value:"off"},{label:"on \u2014 append cp_final, verifying the objective as a whole",value:"on"}],onValue:v=>{(v==="on"||v==="off")&&(m.set("final_validation",v==="on"),Ce(m.load()),N("ok","/config set-final-validation",v))}},{id:"config-bug-detection",label:"Bug Detection",type:"select",currentValue:C.bug_detection,options:[{label:"off \u2014 no bug detection while authoring (default)",value:"off"},{label:"stop \u2014 halt the run when a confirmed product bug is found",value:"stop"},{label:"continue \u2014 record confirmed bugs and keep authoring",value:"continue"}],onValue:v=>{(v==="off"||v==="stop"||v==="continue")&&(m.set("bug_detection",v),Ce(m.load()),N("ok","/config set-bug-detection",v))}}]},{id:"config-hints",label:"CLI Hints",type:"select",currentValue:C.hints_enabled===!1?"off":"on",options:[{label:"on",value:"on"},{label:"off",value:"off"}],onValue:v=>{let E=v==="on";m.set("hints_enabled",E),Ce(m.load()),N("ok","/config hints",`CLI hints ${E?"enabled":"disabled"}`)}},{id:"config-generate",label:"Generate",type:"submenu",currentValue:`${C.generate.scenario_limit}x${C.generate.per_scenario_limit}`,children:[{id:"config-generate-scenario-limit",label:"Scenario limit",type:"text-input",currentValue:String(C.generate.scenario_limit),placeholder:"5",onValue:v=>{let E=parseInt(v,10);if(!Number.isFinite(E)||E<1||E>20){N("error","/config",`Scenario limit must be 1-20 (got ${v})`);return}m.set("generate",{...C.generate,scenario_limit:E}),Ce(m.load()),N("ok","/config",`Scenario limit: ${E}`)}},{id:"config-generate-per-scenario-limit",label:"Per-scenario limit",type:"text-input",currentValue:String(C.generate.per_scenario_limit),placeholder:"4",onValue:v=>{let E=parseInt(v,10);if(!Number.isFinite(E)||E<1||E>20){N("error","/config",`Per-scenario limit must be 1-20 (got ${v})`);return}m.set("generate",{...C.generate,per_scenario_limit:E}),Ce(m.load()),N("ok","/config",`Per-scenario limit: ${E}`)}},{id:"config-generate-memory",label:"Memory",type:"select",currentValue:C.generate.memory_enabled?"on":"off",options:[{label:"on",value:"on"},{label:"off",value:"off"}],onValue:v=>{let E=v==="on";m.set("generate",{...C.generate,memory_enabled:E}),Ce(m.load()),N("ok","/config",`Memory: ${E?"on":"off"}`)}}]},{id:"config-code-export",label:"Code Export",type:"submenu",currentValue:C.code_export.enabled?"enabled":"disabled",children:[{id:"config-code-export-enabled",label:"Enabled",type:"select",currentValue:C.code_export.enabled?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:v=>{m.set("code_export",{...C.code_export,enabled:v==="on"}),Ce(m.load()),N("ok","/config code-export enabled",v)}},{id:"config-code-export-language",label:"Language",type:"select",currentValue:C.code_export.language,options:[{label:"python",value:"python"},{label:"javascript",value:"javascript"}],onValue:v=>{v!=="python"&&v!=="javascript"||(m.set("code_export",{...C.code_export,language:v}),Ce(m.load()),N("ok","/config code-export language",v))}},{id:"config-code-export-skip-validation",label:"Skip Validation",type:"select",currentValue:C.code_export.skip_validation?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:v=>{m.set("code_export",{...C.code_export,skip_validation:v==="on"}),Ce(m.load()),N("ok","/config code-export skip-validation",v)}}]}]},{id:"exit",label:"Exit",type:"action",onAction:()=>{ar()}}]},[y,m,C,he,ar,Pe,vt,N,ft,_r,A.target,A.device,A.begin,A.requestApp]),ci=(0,R.useCallback)(d=>{if(O.askingUser){let S=O.askingUser;ke((0,k.jsxs)(b,{flexDirection:"column",marginLeft:2,paddingLeft:1,marginTop:1,children:[(0,k.jsx)(b,{marginLeft:1,children:(0,k.jsx)(a,{color:l.orange,bold:!0,children:"Agent Question"})}),(0,k.jsxs)(b,{borderStyle:"round",borderColor:l.orange,flexDirection:"column",paddingX:2,paddingY:1,width:70,children:[(0,k.jsxs)(b,{children:[(0,k.jsx)(b,{width:3,children:(0,k.jsx)(a,{color:l.orange,bold:!0,children:"?"})}),(0,k.jsx)(b,{flexShrink:1,children:(0,k.jsx)(a,{wrap:"wrap",children:S})})]}),(0,k.jsxs)(b,{marginTop:1,children:[(0,k.jsx)(b,{width:3,children:(0,k.jsx)(a,{color:l.dim,bold:!0,children:"\u2192"})}),(0,k.jsx)(b,{flexShrink:1,children:(0,k.jsx)(a,{wrap:"wrap",children:d})})]})]})]})),ri.current=null,O.sendAnswer(d);return}if(c.logCommand(d),O.isRunning){he({type:"error",text:"Run in progress. Ctrl+C to cancel."});return}let h=Ro(d);if(h){if(!nd(h.command,Ne)){N("error",`/${h.command}`,`/${h.command} isn't available in ${Ne==="run"?"Run":"Generate"} mode.`);return}switch(h.command){case"profiles":if(Ne==="generate"&&xe.requestId&&h.args.action==="switch"){Qr({reason:"profile",pendingArgs:h.args});return}xr("auth");return;case"login":case"logout":case"whoami":case"balance":case"auth":xr("auth");return;case"config":if(h.args.action==="set-url"){let S=Jn(h.args.value);if(!S){N("error","/config set-url","Usage: /config set-url <url>");return}m.set("default_url",S),Ce(m.load()),N("ok","/config set-url",S);return}xr("config");return;case"mobile":{let S=Kn();if(!S.supported){N("error","/mobile",S.reason);return}if(ft){N("error","/mobile",_r(ft));return}A.begin("confirm");return}case"desktop":{if(ft){ft.kind==="web"?N("ok","/web","Session is already on Desktop."):N("error","/web",_r(ft));return}m.setMobile({tui_target:"desktop",default_target:void 0,default_app:void 0}),Ce(m.load()),A.reset(),N("ok","/web","Session target: web (Chrome)");return}case"doctor":{(async()=>{he({type:"info",text:"Running mobile toolchain checks\u2026"});let{runDoctor:S,renderDoctorText:T,doctorExitCode:v}=await import("./doctor-VWGEQYBB.js"),E=await S();he({type:"info",text:T(E)}),v(E)!==0&&he({type:"info",text:"Install the managed tooling with /mobile (interactive) or `kane-cli doctor --target <emulator|simulator> --install`."})})();return}case"help":ws(!0);return;case"testmd":if(O.isRunning||xe.isStreaming||Ie.running){N("error","/testmd","Finish or cancel the current run/generation first.");return}Ie.clearResult(),En(!0);return;case"generate":if(Ie.running){N("error","/generate","Finish or cancel the running test first.");return}Ne==="run"?Pt.requestSwitch("generate")&&N("ok","/generate","Switched to Generate mode.",void 0,l.generateAccent):N("ok","/generate","Already in Generate mode.",void 0,l.generateAccent);return;case"run":{let S=sd(Ne,h.args.objective);switch(S.kind){case"run":yr(S.objective,h.args.url);return;case"reject":N("error","/run",'Switch to Run mode first (bare /run), then /run "objective".');return;case"already":N("ok","/run","Already in Run mode.",void 0,l.orange);return;case"toggle":Pt.requestSwitch("run")&&N("ok","/run","Switched to Run mode.",void 0,l.orange);return}return}case"update":{(async()=>{let{getUpdateCommand:S}=await import("./version-check-JRLPWQ6T.js");N("ok","/update",`To update kane-cli, run: ${S()}`)})();return}case"summary":{if(Ne==="generate"&&!xe.requestId){Dn("no generation yet"),N("ok","/summary","(no generation yet)");return}let S=c.getFlows();if(S.length===0){N("ok","/summary","No runs yet in this session.");return}let T=h.args.index?parseInt(h.args.index,10):void 0;if(T!==void 0&&!c.getFlow(T)){N("error","/summary",`No flow at index ${T}`,`${S.length} flow${S.length===1?"":"s"} available. Use /summary to see all.`);return}ke((0,k.jsx)(fs,{flows:S,filterIndex:T})),N("ok","/summary",T!==void 0?`Flow ${T}`:`${S.length} flow${S.length===1?"":"s"}`);return}case"new":Ne==="generate"&&xe.requestId&&(nr(),xe.end().catch(S=>{N("error","/new",`Could not end generation cleanly: ${S.message}`)}),xe.reset()),Bs();return;case"name":{let S=h.raw.replace(/^\/name\s*/,"").trim();if(!S){N("error","/name","Usage: /name <new-name>");return}(async()=>{let{validateNameOrThrow:T}=await import("./name-validator-5YGJXLZ7.js");try{T(S),c.setSessionName(S),N("ok","/name",`Session name set: ${S}`)}catch(v){N("error","/name",v.message)}})();return}case"cancel":if(Ne==="generate"&&xe.isStreaming){nr(),xe.cancel(),N("ok","/cancel","Cancelled");return}if(Ne==="generate"&&!xe.requestId){Dn("no generation yet"),N("ok","/cancel","(no generation yet)");return}if(Ie.running){Ie.cancel(),N("ok","/cancel","Run cancelled");return}O.cancelRun(),N("ok","/cancel","Run cancelled");return;case"clear":N("ok","/clear","Chat cleared");return;case"exit":Ne==="generate"&&xe.requestId&&(nr(),xe.end()),ar();return;default:N("error",`/${h.command}`,"Unknown command");return}}if(d.trim().toLowerCase()==="exit"){ar();return}ke((0,k.jsx)(_u,{objective:d})),yr(d,void 0)},[O,he,N,ke,c,yr,ar,Bs,Ne,xe.isStreaming,xe.requestId,xe,Dn,nr,Ie,C,s,ft,_r]);Ps.current=ci;let Ns=(0,R.useRef)(!1);(0,R.useEffect)(()=>{if(!Ns.current&&B&&u==="generate"&&f){Ns.current=!0;let d=setTimeout(()=>{Gf(f)},50);return()=>clearTimeout(d)}},[B,u,f]);let Ms=y.getAuthInfo(),Jf=Ms?Ms.method==="basic"?"basic auth":"oauth":"not logged in",Qf=(()=>{if(Yr)return["help"];if(Jr)return["testmd"];if(V)return V.phase==="wizard"?["auth","login"]:V.phase==="project"?["auth","login","project"]:V.phase==="folder"?["auth","login","folder"]:["auth","login"];let d={infoView:"info",loginWizard:"login",profilesView:"profiles",chromeProfilePicker:"chrome-profile",projectPicker:"project",folderPicker:"folder",windowSizePicker:"set-window"};return Nt==="auth"?Cn?["auth",d[Cn]]:["auth"]:Nt==="config"?Cn?["config",d[Cn]]:["config"]:Nt==="help"?["help"]:O.askingUser?["agent question"]:[]})();return(0,k.jsxs)(b,{flexDirection:"column",children:[!B&&!ys&&(0,k.jsx)(Iu,{onComplete:()=>{let d=y.creds.getActiveProfile(),h=y.creds.getDefaultEnv(),S=d?y.creds.loadCredentials(d,h):null,T=d?y.creds.loadBasicAuth(d,h):null,v=!!(S||T),E=T?.username??d??null;ke((0,k.jsx)(yo,{size:"full",helmetVisibleRows:8,textVisibleRows:7,showMeta:!0,version:xt,authenticated:v,user:E})),Af(!0);let j=(M,Z,Se,Re)=>{c.log(M,Z,Se,Re)};if($a(y.creds,j).then(M=>{if(M.status==="authenticated"){let{profile:Z,env:Se,tmsCreds:Re}=M.result;y.creds.setActiveProfile(Z),y.creds.setDefaultEnv(Se),vt(),zt(Re),Ot("ready"),F(!0)}else M.status==="needs_pick"?(Ef(M.profiles),Ot("pick")):Ot("login")}).catch(M=>{c.log("error","STARTUP_GATE_ERROR","Auth gate failed",{error:String(M)}),Ot("login")}),o&&o.then(async M=>{if(M){let{getUpdateCommand:Z}=await import("./version-check-JRLPWQ6T.js");N("ok","update available",`${M.current} \u2192 ${M.latest}`,`Run: ${Z()}`)}}).catch(()=>{}),i&&i.changes.length>0){let M=`kane-cli updated to ${i.toVersion}. Default settings changed:`,Z=[...i.changes.map(Se=>`\u2022 ${Se.description} (${Se.field}: ${JSON.stringify(Se.from)} \u2192 ${JSON.stringify(Se.to)})`),"","Use /config to review or revert any of these."].join(`
26
+ `);N("ok","defaults updated",M,Z)}}}),!B&&rr==="booting"&&ys&&(0,k.jsx)(b,{paddingX:1,children:(0,k.jsx)(a,{color:"yellow",children:"Checking authentication..."})}),!B&&rr==="pick"&&(0,k.jsx)(dv,{profiles:Cf,onCancel:()=>Ot("login"),onSelect:async(d,h)=>{y.creds.setActiveProfile(d),y.creds.setDefaultEnv(h),vt(),Ho(!0);let S=(T,v,E,j)=>{c.log(T,v,E,j)};try{let T=await Ba(y.creds,d,h,S);Ho(!1),T.status==="authenticated"?(_t(d,h),zt(T.result.tmsCreds),Ot("ready"),F(!0)):Ot("login")}catch{Ho(!1),Ot("login")}},validating:If}),!B&&rr==="login"&&!V&&(0,k.jsx)(Wn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:y.creds.listProfiles(),onBasicLogin:async(d,h,S,T)=>{let{validateBasicAuth:v}=await import("./validate-basic-D7IJUFUQ.js");await v(h,S,T),y.creds.saveBasicAuth(d,h,{username:S,access_key:T}),y.creds.setActiveProfile(d),y.creds.setDefaultEnv(h),Ct(y.creds,m,d,h),y.setTokenValid(!0),vt()},onOAuthLogin:async(d,h)=>{y.creds.setDefaultEnv(h),await y.login(d),Ct(y.creds,m,d,h),vt()},onComplete:(d,h)=>{Ft(qo(h),kt).then(()=>{vt(),je({phase:"project",profile:d,env:h})}).catch(()=>{je({phase:"project",profile:d,env:h})})},onCancel:()=>{Nr(0,"Login cancelled at startup")}}),!B&&rr==="login"&&V?.phase==="project"&&(0,k.jsx)(Mr,{resolver:y.getResolver(),currentProjectId:null,env:V.env,onSelect:(d,h)=>{y.creds.saveProfileConfig(V.profile,V.env,{project_id:d,project_name:h}),N("ok","/config project",h,`id: ${d}`),je({...V,phase:"folder"})},onCancel:async()=>{let d=await Yo(V.profile,V.env);d&&(Bt(y.creds,m,V.profile,V.env,{projectId:d.id,projectName:d.name}),N("ok","/config project",d.name,`id: ${d.id}`),je({...V,phase:"folder"}))}}),!B&&rr==="login"&&V?.phase==="folder"&&(0,k.jsx)(jr,{resolver:y.getResolver(),projectId:y.creds.loadProfileConfig(V.profile,V.env)?.project_id??"",currentFolderId:null,env:V.env,onSelect:(d,h)=>{y.creds.saveProfileConfig(V.profile,V.env,{folder_id:d,folder_name:h}),N("ok","/config folder",h,`id: ${d}`),_t(V.profile,V.env),je(null),Ot("ready"),F(!0)},onCancel:async()=>{let d=y.creds.loadProfileConfig(V.profile,V.env);if(!d?.project_id)return;let h=await Jo(V.env,d.project_id);h&&(Bt(y.creds,m,V.profile,V.env,{folderId:h.id,folderName:h.name}),N("ok","/config folder",h.name,`id: ${h.id}`),_t(V.profile,V.env),je(null),Ot("ready"),F(!0))}}),B&&kn==="menu"&&!Y&&(0,k.jsx)(b,{marginBottom:1,children:(0,k.jsxs)(b,{borderStyle:"round",borderColor:"#dc4e08",paddingX:2,children:[(0,k.jsx)(a,{color:"#ff9500",bold:!0,children:"KaneAI CLI"}),(0,k.jsx)(a,{color:l.dim,children:" \u2502 "}),(0,k.jsx)(a,{color:"#ff9500",children:C.model}),(0,k.jsx)(a,{color:l.dim,children:" \u2502 "}),(0,k.jsx)(a,{color:l.dim,children:Jf}),(0,k.jsx)(a,{color:l.dim,children:" \u2502 "}),(0,k.jsxs)(a,{color:l.dim,children:[Dr??"no profile","/",ye]})]})}),B&&!Y&&(0,k.jsxs)(b,{flexDirection:"column",flexGrow:1,children:[kn==="menu"&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(ss,{items:Os,onRunSelected:()=>_f("chat"),onActiveViewChange:Ss,renderLoginWizard:d=>{let h=V?.phase??"wizard";if(h==="project")return(0,k.jsx)(Mr,{resolver:y.getResolver(),currentProjectId:null,env:V.env,onSelect:(S,T)=>{y.creds.saveProfileConfig(V.profile,V.env,{project_id:S,project_name:T}),N("ok","/config project",T,`id: ${S}`),je(v=>v?{...v,phase:"folder"}:null)},onCancel:async()=>{if(!V)return;let S=await Yo(V.profile,V.env);S&&(Bt(y.creds,m,V.profile,V.env,{projectId:S.id,projectName:S.name}),N("ok","/config project",S.name,`id: ${S.id}`),je(T=>T?{...T,phase:"folder"}:null))}});if(h==="folder"){let S=y.creds.loadProfileConfig(V.profile,V.env);return(0,k.jsx)(jr,{resolver:y.getResolver(),projectId:S?.project_id??"",currentFolderId:null,env:V.env,onSelect:(T,v)=>{y.creds.saveProfileConfig(V.profile,V.env,{folder_id:T,folder_name:v}),N("ok","/config folder",v,`id: ${T}`),_t(V.profile,V.env),je(null),d()},onCancel:async()=>{if(!V)return;let T=y.creds.loadProfileConfig(V.profile,V.env);if(!T?.project_id)return;let v=await Jo(V.env,T.project_id);v&&(Bt(y.creds,m,V.profile,V.env,{folderId:v.id,folderName:v.name}),N("ok","/config folder",v.name,`id: ${v.id}`),_t(V.profile,V.env),je(null),d())}})}return(0,k.jsx)(Wn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:y.creds.listProfiles(),onBasicLogin:async(S,T,v,E)=>{let{validateBasicAuth:j}=await import("./validate-basic-D7IJUFUQ.js");await j(T,v,E),y.creds.saveBasicAuth(S,T,{username:v,access_key:E}),y.creds.setActiveProfile(S),y.creds.setDefaultEnv(T),Ct(y.creds,m,S,T),y.setTokenValid(!0),vt()},onOAuthLogin:async(S,T)=>{y.creds.setDefaultEnv(T),await y.login(S),Ct(y.creds,m,S,T),vt()},onComplete:(S,T)=>{Ft(qo(T),kt).then(()=>{je({phase:"project",profile:S,env:T})}).catch(()=>{je({phase:"project",profile:S,env:T})})},onCancel:()=>{je(null),d()}})},renderProfilesView:d=>(0,k.jsx)(vi,{creds:y.creds,onSwitch:(h,S)=>{let T=y.creds.getActiveProfile()??"(none)";y.creds.setActiveProfile(h),y.creds.setDefaultEnv(S),Ct(y.creds,m,h,S),_t(h,S),vt(),Ft(xs(S),kt).catch(()=>{}),N("ok","/profiles switch",`${T} \u2192 ${h} [${S}]`)},onCancel:d}),renderChromeProfilePicker:d=>(0,k.jsx)(xi,{currentPath:C.chrome_profile_path,onSelect:h=>{m.set("chrome_profile_path",h),Ce(m.load()),N("ok","/config chrome-profile",h),d()},onCancel:d}),renderProjectPicker:d=>(0,k.jsx)(Mr,{resolver:y.getResolver(),currentProjectId:C.project_id,env:ye,onSelect:(h,S)=>{Bt(y.creds,m,y.creds.getActiveProfile()??"default",y.creds.getDefaultEnv(),{projectId:h,projectName:S}),N("ok","/config project",S,`id: ${h}`),Ce(m.load()),d()},onCancel:d}),renderFolderPicker:d=>(0,k.jsx)(jr,{resolver:y.getResolver(),projectId:C.project_id??"",currentFolderId:C.folder_id,env:ye,onSelect:(h,S)=>{Bt(y.creds,m,y.creds.getActiveProfile()??"default",y.creds.getDefaultEnv(),{folderId:h,folderName:S}),N("ok","/config folder",S,`id: ${h}`),Ce(m.load()),d()},onCancel:d}),renderWindowSizePicker:d=>(0,k.jsx)(ds,{currentWidth:C.window_size.width,currentHeight:C.window_size.height,onSelect:(h,S)=>{m.set("window_size",{width:h,height:S}),Ce(m.load()),N("ok","/config set-window",`${h} \xD7 ${S}`),d()},onCancel:d})}),$e&&(0,k.jsx)(b,{paddingX:1,marginTop:1,children:(0,k.jsx)(a,{color:$e.color,children:$e.text})})]}),kn==="chat"&&(0,k.jsxs)(k.Fragment,{children:[Xt&&!O.isRunning&&(0,k.jsx)(bi,{label:Xt.replace(/[.…\s]+$/,"")}),(()=>{let d=Xs({isRunning:O.isRunning,bifurcationInfo:O.bifurcationInfo,steps:O.steps,cmInitCounts:O.cmInitCounts,replayInfo:O.replayInfo});return d?(0,k.jsx)(bi,{label:d.label,hasBifurcation:d.hasBifurcation}):null})(),O.isRunning&&O.steps.length>0&&(0,k.jsx)(Ws,{steps:O.steps,bifurcated:!!O.bifurcationInfo&&!O.bifurcationInfo.isSingleFlow,flows:O.bifurcationInfo?.flows,cmInitCounts:O.cmInitCounts,onStepCommit:ke,describe:Zr.text,describeVisible:Zr.visible,describeRevealing:Zr.revealing},`run-${le.current}`),Ie.runViewProps&&(0,k.jsx)(Ga,{...Ie.runViewProps,onCancel:()=>{Ie.runViewProps?.onCancel?.(),Ie.cancel()}}),Yr&&(0,k.jsx)(ld,{onClose:()=>ws(!1),version:xt,environment:y.creds.getDefaultEnv(),sessionId:c.sessionId,runUrl:C.default_url??di,mode:Ne}),Jr&&(0,k.jsx)(fd,{cwd:process.cwd(),currentOrgId:String(Le?.org_id??""),onClose:()=>En(!1),onRun:d=>{if(O.isRunning||xe.isStreaming||Ie.running){setTimeout(()=>N("error","/testmd","Finish or cancel the current run first."),0);return}En(!1),!(Ne==="generate"&&!Pt.requestSwitch("run"))&&(Ne==="generate"&&setTimeout(()=>N("ok","/testmd",`Switched to Run mode to run ${d.relPath}`,void 0,l.orange),0),Ie.start(d.path).catch(h=>setTimeout(()=>N("error","/testmd",`Run failed: ${h.message}`),0)))},onExport:d=>{En(!1),cc(d.path,{language:C.code_export.language??"python",env:ye}).then(h=>setTimeout(()=>N("ok","/testmd",`Exported code \u2192 ${h.codeDir}`),0)).catch(h=>setTimeout(()=>N("error","/testmd",`Export failed: ${h.message}`),0))}}),Nt&&!O.isRunning&&(()=>{let d=Os.find(h=>h.id===Nt);return d?.children?(0,k.jsx)(ss,{items:d.children,onRunSelected:()=>xr(null),onDismiss:()=>xr(null),onActiveViewChange:Ss,renderLoginWizard:h=>{let S=V?.phase??"wizard";if(S==="project")return(0,k.jsx)(Mr,{resolver:y.getResolver(),currentProjectId:null,env:V.env,onSelect:(T,v)=>{y.creds.saveProfileConfig(V.profile,V.env,{project_id:T,project_name:v}),N("ok","/config project",v,`id: ${T}`),je(E=>E?{...E,phase:"folder"}:null)},onCancel:async()=>{if(!V)return;let T=await Yo(V.profile,V.env);T&&(Bt(y.creds,m,V.profile,V.env,{projectId:T.id,projectName:T.name}),N("ok","/config project",T.name,`id: ${T.id}`),je(v=>v?{...v,phase:"folder"}:null))}});if(S==="folder"){let T=y.creds.loadProfileConfig(V.profile,V.env);return(0,k.jsx)(jr,{resolver:y.getResolver(),projectId:T?.project_id??"",currentFolderId:null,env:V.env,onSelect:(v,E)=>{y.creds.saveProfileConfig(V.profile,V.env,{folder_id:v,folder_name:E}),N("ok","/config folder",E,`id: ${v}`),_t(V.profile,V.env),je(null),h()},onCancel:async()=>{if(!V)return;let v=y.creds.loadProfileConfig(V.profile,V.env);if(!v?.project_id)return;let E=await Jo(V.env,v.project_id);E&&(Bt(y.creds,m,V.profile,V.env,{folderId:E.id,folderName:E.name}),N("ok","/config folder",E.name,`id: ${E.id}`),_t(V.profile,V.env),je(null),h())}})}return(0,k.jsx)(Wn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:y.creds.listProfiles(),onBasicLogin:async(T,v,E,j)=>{let{validateBasicAuth:M}=await import("./validate-basic-D7IJUFUQ.js");await M(v,E,j),y.creds.saveBasicAuth(T,v,{username:E,access_key:j}),y.creds.setActiveProfile(T),y.creds.setDefaultEnv(v),Ct(y.creds,m,T,v),y.setTokenValid(!0),vt()},onOAuthLogin:async(T,v)=>{y.creds.setDefaultEnv(v),await y.login(T),Ct(y.creds,m,T,v),vt()},onComplete:(T,v)=>{Ft(qo(v),kt).then(()=>{je({phase:"project",profile:T,env:v})}).catch(()=>{je({phase:"project",profile:T,env:v})})},onCancel:()=>{je(null),h()}})},renderProfilesView:h=>(0,k.jsx)(vi,{creds:y.creds,onSwitch:(S,T)=>{let v=y.creds.getActiveProfile()??"(none)";y.creds.setActiveProfile(S),y.creds.setDefaultEnv(T),Ct(y.creds,m,S,T),_t(S,T),vt(),Ft(xs(T),kt).catch(()=>{}),N("ok","/profiles switch",`${v} \u2192 ${S} [${T}]`),h()},onCancel:h}),renderChromeProfilePicker:h=>(0,k.jsx)(xi,{currentPath:C.chrome_profile_path,onSelect:S=>{m.save({chrome_profile_path:S}),Ce(m.load()),N("ok","/config chrome-profile",S),h()},onCancel:h}),renderProjectPicker:h=>(0,k.jsx)(Mr,{resolver:y.getResolver(),currentProjectId:C.project_id,env:ye,onSelect:(S,T)=>{Bt(y.creds,m,y.creds.getActiveProfile()??"default",y.creds.getDefaultEnv(),{projectId:S,projectName:T}),Ce(m.load()),N("ok","/config project",T,`id: ${S}`),h()},onCancel:h}),renderFolderPicker:h=>(0,k.jsx)(jr,{resolver:y.getResolver(),projectId:C.project_id??"",currentFolderId:C.folder_id,env:ye,onSelect:(S,T)=>{Bt(y.creds,m,y.creds.getActiveProfile()??"default",y.creds.getDefaultEnv(),{folderId:S,folderName:T}),Ce(m.load()),N("ok","/config folder",T,`id: ${S}`),h()},onCancel:h}),renderWindowSizePicker:h=>(0,k.jsx)(ds,{currentWidth:C.window_size.width,currentHeight:C.window_size.height,onSelect:(S,T)=>{m.set("window_size",{width:S,height:T}),Ce(m.load()),N("ok","/config set-window",`${S} \xD7 ${T}`),h()},onCancel:h})},Nt):null})(),Nt&&$e&&(0,k.jsx)(b,{paddingX:1,marginTop:1,children:(0,k.jsx)(a,{color:$e.color,children:$e.text})}),Ne==="run"&&!Nt&&!Yr&&!Jr&&!Rt&&O.askingUser&&(0,k.jsxs)(b,{flexDirection:"column",marginLeft:2,paddingLeft:1,marginTop:1,children:[(0,k.jsx)(b,{marginLeft:1,children:(0,k.jsx)(a,{color:l.orange,bold:!0,children:"Agent Question"})}),(0,k.jsx)(b,{borderStyle:"round",borderColor:l.orange,flexDirection:"column",paddingX:2,paddingY:1,width:70,children:(0,k.jsxs)(b,{children:[(0,k.jsx)(b,{width:3,children:(0,k.jsx)(a,{color:l.orange,bold:!0,children:"?"})}),(0,k.jsx)(b,{flexShrink:1,children:(0,k.jsx)(a,{wrap:"wrap",children:O.askingUser})})]})})]}),In&&(()=>{let d=In,h=d.reason==="switch"?d.to==="run"?"Discard the current generation and switch to Run?":"Stop the current run / discard its results and switch to Generate?":"Switching profile will end this generation. Continue?",S=d.reason==="switch"?"Discard & switch":"Yes, end";return(0,k.jsx)(df,{message:h,confirmLabel:S,onConfirm:async()=>{if(d.reason==="switch"){let v=d.to;Qr(null),Pt.confirmSwitch(v);return}nr();let T=d.pendingArgs;if(Qr(null),await xe.end(),xe.reset(),T.profile){let v=y.creds.getDefaultEnv(),E=y.creds.getActiveProfile()??"(none)";y.creds.setActiveProfile(T.profile),y.creds.setDefaultEnv(v),Ct(y.creds,m,T.profile,v),_t(T.profile,v),vt(),Ft({kind:"switch",env:v},kt).catch(()=>{}),N("ok","/profiles switch",`${E} \u2192 ${T.profile} [${v}]`)}else ci("/profiles switch")},onCancel:()=>Qr(null)})})(),Rs&&(0,k.jsxs)(b,{flexDirection:"column",paddingX:1,marginTop:1,children:[A.phase==="doctor"?(0,k.jsx)(Ku,{checks:A.checks,busyMessage:A.busyMessage,onRetry:A.recheck,onInstall:A.install,onCancel:A.cancel}):A.phase==="apps"&&A.kind?(0,k.jsx)(fa,{kind:A.kind,onSelect:d=>A.selectApp(d),onBack:A.back,onCancel:A.back}):A.phase==="appList"&&A.kind?(0,k.jsx)(da,{kind:A.kind,busyMessage:A.busyMessage,listApps:Uf,onSelect:d=>{A.selectAppId(d.appId)},onManualEntry:A.requestAppId,onCancel:A.back}):A.phase==="appId"?(0,k.jsx)(ja,{busyMessage:A.busyMessage,onSubmit:d=>A.selectAppId(d),onBack:A.back}):A.phase==="chooser"?(0,k.jsx)(Na,{mode:"mobile-only",onSelect:d=>{(d==="emulator"||d==="simulator")&&A.selectKind(d)},onCancel:A.back}):A.phase==="confirm"&&A.saved?(0,k.jsx)(id,{saved:A.saved,onContinue:()=>A.confirmSaved(),onChangeDevice:()=>A.begin("reinit"),onChangeApp:()=>A.confirmSaved({keepApp:!1}),onCancel:A.cancel}):A.phase==="appSource"&&A.kind?(0,k.jsx)(Ma,{kind:A.kind,onSelect:d=>d==="uploaded"?A.requestCloudApps():A.requestApp(),onCancel:A.back}):(0,k.jsx)(ua,{targets:A.targets,preselectedTarget:C.mobile?.default_target,busyMessage:A.busyMessage??(A.phase==="checking"?"Checking mobile toolchain\u2026":null),onSelect:d=>{A.selectTarget(d)},onCancel:A.back,...A.kind?{kind:A.kind}:{}}),A.error&&(0,k.jsx)(a,{color:"red",children:A.error})]}),Pr&&(0,k.jsx)(Gu,{suggested:Pr.suggested,sessionTargetLabel:Ir.kind==="unset"||Ir.kind==="choose-mobile"?"Desktop":rn(Ir.kind),appHint:Pr.verdict.appHint,savedDeviceName:C.mobile?.default_target?.id??null,onAccept:()=>Ln("accept"),onPickDevice:()=>Ln("pick"),onKeep:()=>Ln("keep"),onCancel:()=>Ln("cancel")}),Ne==="run"&&!Nt&&!Yr&&!Jr&&!Rt&&!In&&!Ie.running&&!Rs&&!Pr&&(0,k.jsx)(lr,{onSubmit:ci,onEscape:void 0,history:Df,commands:rd(xn(td),ft),clearSeq:Hf,loadMentionItems:Ar?jf:void 0,mentionHint:Ar&&!A.target?"No device selected \u2014 run /mobile to choose one.":void 0,placeholder:O.askingUser?"Type your answer...":O.isRunning?"Run in progress... Ctrl+C to cancel":"Type an objective... (/ = commands)",footerBindings:[{keys:"\u2191\u2193",label:"history"},{keys:"\u21B5",label:"submit"},{keys:"tab",label:"complete"},{keys:"ctrl+r",label:"search"},{keys:"/generate",label:"test cases"}]}),Ne==="generate"&&!Nt&&!Yr&&!Jr&&!Rt&&!In&&(0,k.jsx)(lf,{tcg:xe,gm:Pt,history:Lf,tuiConfig:C,browse:sr.isOpen?{target:sr.target,onClose:sr.close,excluded:sr.excluded,onToggleCase:sr.toggleCase,onToggleScenario:sr.toggleScenario,getStatus:Pt.bifurcation.getStatus,getResult:Pt.bifurcation.getResult}:null})]})]}),B&&Y&&ge&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(Ri,{steps:$t,status:ge.status,testUrl:ge.testUrl,error:ge.error}),ge.status==="success"&&(0,k.jsx)(Zn,{recordedTestPath:Q?.recordedTestPath,outputDir:Q?.outputDir,shareableLink:ge.testUrl,testCaseLink:ge.testCaseLink,codeExportDir:ge.codeExportDir,autoExit:!1})]}),Rt&&(0,k.jsx)(Ec,{defaultName:Rt,onSubmit:Yf}),gr&&(0,k.jsx)(_a,{packPath:gr.packPath,viewerBase:Ia(ye??"prod"),onDone:()=>gr.resolve()}),Kr&&(0,k.jsx)(Cc,{onSubmit:Kf}),mr&&ge&&(0,k.jsx)(Ri,{steps:$t,status:ge.status,error:ge.error}),B&&!Y&&(0,k.jsx)(ku,{profile:Dr,environment:ye,tokenValid:y.tokenValid,runCount:oe,sessionId:c.sessionId,viewMode:kn,breadcrumb:Qf,chatMode:Ne,footerHint:Xf,tcgRequestId:xe.requestId,tcgStreamStatus:xe.isStreaming?"streaming":xe.isReconnecting?"reconnecting":xe.isTerminal&&xe.state.status.toLowerCase()==="completed"?"completed":xe.isTerminal&&xe.state.status.toLowerCase()==="failed"?"failed":null,sessionTarget:Ar?{kind:Ir.kind==="simulator"?"simulator":"emulator",...A.target?{deviceName:A.target.displayName}:{},...A.device?.app_package?{appPackage:A.device.app_package}:{}}:{kind:"desktop"},targetLocked:ft!==null})]})}function dv({profiles:e,onSelect:t,onCancel:r,validating:n}){let[o,i]=(0,R.useState)(0);return Be((s,u)=>{if(!n){if(u.escape){r();return}if(u.upArrow&&o>0&&i(f=>f-1),u.downArrow&&o<e.length-1&&i(f=>f+1),u.return){let f=e[o];t(f.profile,f.env)}}}),(0,k.jsxs)(b,{flexDirection:"column",paddingX:1,children:[(0,k.jsx)(a,{color:"#ff9500",bold:!0,children:"Select a profile:"}),(0,k.jsx)(b,{marginTop:1,flexDirection:"column",children:e.map((s,u)=>(0,k.jsxs)(a,{children:[u===o?"\u276F ":" ",(0,k.jsx)(a,{color:u===o?"#ff9500":"white",bold:u===o,children:s.profile}),(0,k.jsxs)(a,{color:"gray",children:[" [",s.env,"]"]})]},`${s.profile}-${s.env}`))}),n&&(0,k.jsx)(b,{marginTop:1,children:(0,k.jsx)(a,{color:"yellow",children:"Validating credentials..."})}),!n&&(0,k.jsx)(b,{marginTop:1,children:(0,k.jsx)(a,{color:"gray",children:"Esc = new login"})})]})}export{Wu as a,Xu as b,Ju as c,vf as d,kf as e,XC as f};