@testmuai/kane-cli 0.8.5 → 0.8.6

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 (163) hide show
  1. package/dist/{ChatSurface-HAIVTS4J.js → ChatSurface-S2P7WMBI.js} +1 -1
  2. package/dist/{ChromeProfilePicker-5ILSVC2K.js → ChromeProfilePicker-7DTJK2QW.js} +1 -1
  3. package/dist/{CliFeedbackPrompt-LFKEYMKP.js → CliFeedbackPrompt-Y3OYZX54.js} +1 -1
  4. package/dist/{CliUploadProgress-Y7ITY2I7.js → CliUploadProgress-I3N5WDNJ.js} +1 -1
  5. package/dist/{ConfigView-OECNNCXC.js → ConfigView-EOYCKYJS.js} +1 -1
  6. package/dist/{EvidenceViewOffer-FODRAS6Z.js → EvidenceViewOffer-AQ3KB3EN.js} +1 -1
  7. package/dist/FolderPicker-RCHRYYC4.js +2 -0
  8. package/dist/{InfoBox-HWMHNWPM.js → InfoBox-QBXPPMM2.js} +1 -1
  9. package/dist/{LinksBox-TAGYCFFO.js → LinksBox-L24KON4U.js} +1 -1
  10. package/dist/{ProfilesView-QJBR3RCM.js → ProfilesView-H6XCTIXI.js} +1 -1
  11. package/dist/{ProjectPicker-PP75ILZU.js → ProjectPicker-F6JGF2B3.js} +1 -1
  12. package/dist/{SaveSessionPrompt-UCRET3II.js → SaveSessionPrompt-QGO65DZN.js} +1 -1
  13. package/dist/SingleShotApp-AY3XFEYT.js +2 -0
  14. package/dist/{SummaryBox-SLM3OFS2.js → SummaryBox-OZIZQY4B.js} +1 -1
  15. package/dist/TestMdRunView-RPW4MIJA.js +2 -0
  16. package/dist/{TestrunEvidenceTable-PTIBYAXO.js → TestrunEvidenceTable-A7WTTKTV.js} +1 -1
  17. package/dist/{WhoamiView-WPHMNYUV.js → WhoamiView-EB5AV27X.js} +1 -1
  18. package/dist/{app-download-GYQYLGT3.js → app-download-SQ4RDY3E.js} +1 -1
  19. package/dist/{auth-3DLNMZC2.js → auth-TW24FZQF.js} +1 -1
  20. package/dist/{binary-XJ3RF3VO.js → binary-5LMQJ3CZ.js} +1 -1
  21. package/dist/{bind-2N4Q6YKH.js → bind-SJ6DOVQ4.js} +2 -2
  22. package/dist/{bootstrap-5IHKW5SE.js → bootstrap-BTEXO6HX.js} +1 -1
  23. package/dist/bridge-GQJ35GTL.js +2 -0
  24. package/dist/{changelog-WCCTI47M.js → changelog-JLSLSA3Y.js} +1 -1
  25. package/dist/chunk-2DCNCH32.js +4 -0
  26. package/dist/{chunk-PEI2566X.js → chunk-2R7KL7YG.js} +1 -1
  27. package/dist/{chunk-T3XDMR5B.js → chunk-3LEVCW6R.js} +1 -1
  28. package/dist/{chunk-NLECZCMZ.js → chunk-3UUPP5W3.js} +1 -1
  29. package/dist/{chunk-PCOSE5SW.js → chunk-4NSP2NPT.js} +1 -1
  30. package/dist/{chunk-FTZPWXF7.js → chunk-4ONGF4NT.js} +1 -1
  31. package/dist/{chunk-ZFZ7YXEU.js → chunk-5COGCNED.js} +1 -1
  32. package/dist/{chunk-DCUT3GJA.js → chunk-7VZCXW74.js} +1 -1
  33. package/dist/{chunk-CGYSFLM2.js → chunk-A44G533S.js} +1 -1
  34. package/dist/{chunk-ZIRMSWKS.js → chunk-AO3PBE2V.js} +1 -1
  35. package/dist/{chunk-AJPLHW4T.js → chunk-ATWDQCDA.js} +1 -1
  36. package/dist/{chunk-UX3KPYTI.js → chunk-AWD56KGX.js} +1 -1
  37. package/dist/{chunk-YFLKS4UV.js → chunk-B4Q6FMIP.js} +3 -3
  38. package/dist/chunk-B5QGIUJA.js +26 -0
  39. package/dist/chunk-BN6AHQL7.js +17 -0
  40. package/dist/chunk-BRTARADN.js +4 -0
  41. package/dist/{chunk-BAL7E4OH.js → chunk-C4WTZSX4.js} +1 -1
  42. package/dist/{chunk-TCK3QMKY.js → chunk-CLLQQPBZ.js} +1 -1
  43. package/dist/{chunk-LA2EMSHE.js → chunk-CZUOGGUK.js} +1 -1
  44. package/dist/{chunk-FRSHEJUS.js → chunk-D4SRHIJ5.js} +1 -1
  45. package/dist/{chunk-Z2T7E5HM.js → chunk-DN3E6RT6.js} +2 -2
  46. package/dist/{chunk-PUFJEU46.js → chunk-DZCG7FFP.js} +1 -1
  47. package/dist/{chunk-CNNJ4U2L.js → chunk-E5S4BASB.js} +1 -1
  48. package/dist/{chunk-HQWLSA5M.js → chunk-ESC7AOCX.js} +1 -1
  49. package/dist/{chunk-W27F2NWA.js → chunk-EXERQHXV.js} +1 -1
  50. package/dist/{chunk-PWYEOBXV.js → chunk-FJYDEWOA.js} +1 -1
  51. package/dist/{chunk-35EUIBYJ.js → chunk-FMUCZWS3.js} +1 -1
  52. package/dist/{chunk-PB3GADUD.js → chunk-FUNKVREV.js} +1 -1
  53. package/dist/{chunk-GZ4X53ZA.js → chunk-FYS5VIOG.js} +2 -2
  54. package/dist/{chunk-HFCDUFV3.js → chunk-GC5U55MW.js} +1 -1
  55. package/dist/{chunk-RY6TFVAX.js → chunk-GELPKSLC.js} +1 -1
  56. package/dist/{chunk-5S46D5AJ.js → chunk-IGJIDN4U.js} +1 -1
  57. package/dist/{chunk-K2QV7FGP.js → chunk-INK66XQS.js} +1 -1
  58. package/dist/{chunk-EFRJNPBZ.js → chunk-IWM5EZC3.js} +2 -2
  59. package/dist/chunk-JCD6FP7A.js +5 -0
  60. package/dist/{chunk-M335FQYJ.js → chunk-JN44V63O.js} +2 -2
  61. package/dist/{chunk-GYF4CH62.js → chunk-KDXQNLVV.js} +2 -2
  62. package/dist/{chunk-O3AY6JHJ.js → chunk-KLTKEGDH.js} +1 -1
  63. package/dist/{chunk-MJ56GUKS.js → chunk-KQ2MYMOS.js} +1 -1
  64. package/dist/chunk-LN7233E2.js +20 -0
  65. package/dist/{chunk-KWKUMBHS.js → chunk-MKSTP2XN.js} +2 -2
  66. package/dist/{chunk-NHOHQBIF.js → chunk-NT3UETTV.js} +1 -1
  67. package/dist/{chunk-CCUGKBIH.js → chunk-OFW3ZVTP.js} +1 -1
  68. package/dist/{chunk-WLOGO44E.js → chunk-OYJBABRV.js} +1 -1
  69. package/dist/{chunk-JJWQUQJ2.js → chunk-P3RKXL3V.js} +1 -1
  70. package/dist/{chunk-MUGMUKSZ.js → chunk-PT7V5WDQ.js} +1 -1
  71. package/dist/chunk-Q4V2GK5U.js +2 -0
  72. package/dist/{chunk-3AJ3QSF5.js → chunk-QBG7XEGQ.js} +2 -2
  73. package/dist/{chunk-E3BXNQYE.js → chunk-QISE272H.js} +1 -1
  74. package/dist/{chunk-G4AFOZKU.js → chunk-QQAAPFIR.js} +1 -1
  75. package/dist/{chunk-PQUMOFT5.js → chunk-RDNKYRKY.js} +1 -1
  76. package/dist/{chunk-5NSYHRDN.js → chunk-RX5TZZNQ.js} +1 -1
  77. package/dist/{chunk-TJZMYU2W.js → chunk-RZLD7TPG.js} +1 -1
  78. package/dist/{chunk-66BSTNLD.js → chunk-S66MCU2Y.js} +1 -1
  79. package/dist/{chunk-WYST42WI.js → chunk-SORVX3KI.js} +1 -1
  80. package/dist/{chunk-KX2GOJ4C.js → chunk-SQC4P2Q7.js} +1 -1
  81. package/dist/{chunk-JRQKUQWL.js → chunk-SQGBFCFO.js} +1 -1
  82. package/dist/{chunk-T5LKD2OB.js → chunk-SS5TOK2J.js} +1 -1
  83. package/dist/{chunk-DJ7T7BMV.js → chunk-TDS6LG6T.js} +1 -1
  84. package/dist/{chunk-7JUUNZQP.js → chunk-TKYJTXWL.js} +1 -1
  85. package/dist/{chunk-JN2DP4R2.js → chunk-TQKIE7AX.js} +1 -1
  86. package/dist/{chunk-K7UYWAZH.js → chunk-TZFT7R7B.js} +1 -1
  87. package/dist/{chunk-AMULIFC5.js → chunk-USI2WMAK.js} +1 -1
  88. package/dist/{chunk-NYSMQ7UY.js → chunk-VMCSRLRC.js} +1 -1
  89. package/dist/{chunk-7PADFQ5S.js → chunk-VOBXYDJW.js} +2 -2
  90. package/dist/{chunk-R7OGNE3W.js → chunk-WMQJBEQP.js} +1 -1
  91. package/dist/{chunk-OWTEHU6B.js → chunk-XJILZ2WN.js} +1 -1
  92. package/dist/{chunk-2K2BX23I.js → chunk-XQFITNA3.js} +1 -1
  93. package/dist/{chunk-4D3DNCQY.js → chunk-XY325HDJ.js} +1 -1
  94. package/dist/{chunk-Q6JHBDW2.js → chunk-YEQVJWEF.js} +1 -1
  95. package/dist/{chunk-6BTZ2Q4P.js → chunk-YHTYPTDD.js} +1 -1
  96. package/dist/{chunk-2WSOPZJU.js → chunk-YZ45OEH3.js} +1 -1
  97. package/dist/{chunk-BJHII5SD.js → chunk-Z35BUPZT.js} +1 -1
  98. package/dist/{chunk-4UMQDH52.js → chunk-ZLSWHCWO.js} +1 -1
  99. package/dist/{chunk-FDWEL5HR.js → chunk-ZRKPZLLG.js} +1 -1
  100. package/dist/{config-OKTAPFOT.js → config-6TQIMTNB.js} +1 -1
  101. package/dist/{credentials-SO3DSQEM.js → credentials-ZSNM4BTD.js} +1 -1
  102. package/dist/{deps-bundle-FRM65BQO.js → deps-bundle-D2ZC2SPT.js} +1 -1
  103. package/dist/{deps-resolve-RPZORKUN.js → deps-resolve-VRBMFUTX.js} +1 -1
  104. package/dist/{dispatch-OZRMWY25.js → dispatch-2PBSJ7YW.js} +1 -1
  105. package/dist/doctor-OWRRDA4Z.js +2 -0
  106. package/dist/{evidence-5AUZMKE3.js → evidence-NDAKCCHQ.js} +1 -1
  107. package/dist/{evolve-cmd-TWYJL4EG.js → evolve-cmd-DIA5EWUT.js} +1 -1
  108. package/dist/{extract-bind-EW7XUDLQ.js → extract-bind-TJ2STXV5.js} +2 -2
  109. package/dist/{extract-cmd-HOVGMBGM.js → extract-cmd-FLOYO6HL.js} +1 -1
  110. package/dist/{generate-headless-FYTJULPG.js → generate-headless-DBT4MKQT.js} +2 -2
  111. package/dist/index.js +69 -69
  112. package/dist/{ingest-4447MYLF.js → ingest-JO5NJENZ.js} +1 -1
  113. package/dist/{ingest-cmd-RJLTFNMN.js → ingest-cmd-T6HM3AHK.js} +1 -1
  114. package/dist/install-NIVU4XVS.js +2 -0
  115. package/dist/{interactive-bind-PSEYAL54.js → interactive-bind-7UDJY4CF.js} +3 -3
  116. package/dist/{list-commands-2SVSEAP6.js → list-commands-DA4ZXOPJ.js} +1 -1
  117. package/dist/login-flow-NHBJVDW6.js +2 -0
  118. package/dist/{mobile-prompts-T6HZ2YLY.js → mobile-prompts-JS7GPVKS.js} +1 -1
  119. package/dist/{persist-recorded-session-O2NCYTSD.js → persist-recorded-session-LE3LGFOS.js} +1 -1
  120. package/dist/pipeline-MTAZDCZR.js +2 -0
  121. package/dist/prepare-target-YK2DLDWB.js +2 -0
  122. package/dist/{reconcile-cmd-FU3JIHTO.js → reconcile-cmd-CYRYVS5B.js} +1 -1
  123. package/dist/{reconcile-deps-SUKZA2FL.js → reconcile-deps-FYXRAMF2.js} +2 -2
  124. package/dist/{reconcile-engine-ILL4M3NW.js → reconcile-engine-6AT6EVGS.js} +1 -1
  125. package/dist/{recording-banner-5VXVKCV4.js → recording-banner-YMKWR3M3.js} +1 -1
  126. package/dist/{registry-BKV3EDTK.js → registry-V45ZQ6Q5.js} +1 -1
  127. package/dist/{require-project-folder-2IO6IX5W.js → require-project-folder-3KS7KTME.js} +1 -1
  128. package/dist/resolve-run-intent-W32G6WM6.js +2 -0
  129. package/dist/{resolver-CBTWTZZR.js → resolver-V5VP5FLT.js} +1 -1
  130. package/dist/{run-EXIYK6PU.js → run-26IR3CKX.js} +1 -1
  131. package/dist/{run-R7GND73C.js → run-5IYI2TJI.js} +1 -1
  132. package/dist/{run-test-md-664ASWRQ.js → run-test-md-FO2RNNOD.js} +2 -2
  133. package/dist/{skill-installer-QLQK4JJE.js → skill-installer-W4TT5MST.js} +1 -1
  134. package/dist/{spawner-ANLF7OX3.js → spawner-ZSYJQGQW.js} +1 -1
  135. package/dist/tcg-generate-ONLV5GXG.js +2 -0
  136. package/dist/{testmd-actions-QZD3N4EH.js → testmd-actions-NPILETCQ.js} +1 -1
  137. package/dist/token-refresh-G2CSTY4B.js +2 -0
  138. package/dist/{types-VYEOJ6U2.js → types-O23GN2YM.js} +1 -1
  139. package/dist/{validate-basic-D7IJUFUQ.js → validate-basic-727KRHX6.js} +1 -1
  140. package/dist/{verdicts-EO5TZ5BW.js → verdicts-TDJLJJ3F.js} +1 -1
  141. package/dist/{version-check-JRLPWQ6T.js → version-check-A2JQYRI2.js} +1 -1
  142. package/dist/{walk-session-IODOH7QU.js → walk-session-HB3OOWVR.js} +1 -1
  143. package/dist/{with-telemetry-ASNQQBGP.js → with-telemetry-HSD6CXDS.js} +1 -1
  144. package/package.json +11 -11
  145. package/dist/FolderPicker-5U3RHHBE.js +0 -2
  146. package/dist/SingleShotApp-XWOPGLKZ.js +0 -2
  147. package/dist/TestMdRunView-6BY3IUH5.js +0 -2
  148. package/dist/bridge-LOBTHY3P.js +0 -2
  149. package/dist/chunk-6DTWVLSJ.js +0 -4
  150. package/dist/chunk-BG66IAO6.js +0 -19
  151. package/dist/chunk-BVKDHHPK.js +0 -5
  152. package/dist/chunk-KBMQGNKO.js +0 -26
  153. package/dist/chunk-UOMRMCMI.js +0 -2
  154. package/dist/chunk-VT2XNEOD.js +0 -10
  155. package/dist/chunk-X2FM67OM.js +0 -4
  156. package/dist/doctor-VWGEQYBB.js +0 -2
  157. package/dist/install-46S4VOZ4.js +0 -2
  158. package/dist/login-flow-U43QVFPH.js +0 -2
  159. package/dist/pipeline-BHEA7ODT.js +0 -2
  160. package/dist/prepare-target-27UN4KNO.js +0 -2
  161. package/dist/resolve-run-intent-ZML3HKG7.js +0 -2
  162. package/dist/tcg-generate-VBC5ODDI.js +0 -2
  163. package/dist/token-refresh-PIUX5OFA.js +0 -2
@@ -0,0 +1,26 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as mi,b as qs}from"./chunk-3MSXQU2C.js";import{a as da,b as fa,c as pa,d as ja,e as Va}from"./chunk-QQAAPFIR.js";import{a as Ec}from"./chunk-YHTYPTDD.js";import{a as uc,b as Ai,c as eo,d as dc,e as to,f as fc,h as pc,i as mc,j as gc,k as hc,l as bc,m as Ut,n as vc,o as xc,p as yc,q as ro,r as Sc,s as _i,t as wc,u as Rc,v as Tc}from"./chunk-SS5TOK2J.js";import{b as kc,c as Cc}from"./chunk-3LEVCW6R.js";import{A as nc,B as oc,C as ic,D as sc,G as Ft,J as cc,a as an,b as ma,c as ga,e as ya,f as Sa,g as wa,h as Da,i as La,j as Ba,k as Jn,l as Ma,n as Ci,o as Ka,p as Ei,r as Ya,s as Ja,t as Qa,u as Za,w as ec,x as tc,y as rc,z as Ii}from"./chunk-VOBXYDJW.js";import{c as qa,d as Ha,n as lc}from"./chunk-MKSTP2XN.js";import{a as Ic,b as Pi}from"./chunk-GELPKSLC.js";import{b as Ua,t as Ga}from"./chunk-DEZ7CXGM.js";import{c as za}from"./chunk-DZCG7FFP.js";import{a as Zn}from"./chunk-C4WTZSX4.js";import{c as ac}from"./chunk-JCD6FP7A.js";import{a as Pa}from"./chunk-INK66XQS.js";import{E as ka,K as Ca,L as Ti,M as Ea,N as Ia}from"./chunk-QBG7XEGQ.js";import{c as Aa,e as _a}from"./chunk-RZLD7TPG.js";import{a as Hs,b as gi,c as lr,d as Wn,e as $a,f as Oa}from"./chunk-FJYDEWOA.js";import{a as Na}from"./chunk-CLLQQPBZ.js";import{c as Yn}from"./chunk-A44G533S.js";import{a as Xs,b as vi,c as zs,d as Ta,e as Fa,g as Wa}from"./chunk-P3RKXL3V.js";import{e as Ra}from"./chunk-XJILZ2WN.js";import{a as Vr}from"./chunk-BRTARADN.js";import{a as Qn,b as Xa,c as ki}from"./chunk-3UUPP5W3.js";import{a as hi}from"./chunk-5Y2G4NC7.js";import{a as xa}from"./chunk-SQGBFCFO.js";import{a as Ri,b as sa,e as aa,f as ca,g as la,h as ua}from"./chunk-XQFITNA3.js";import{c as Zs,e as ea,g as ta}from"./chunk-SQC4P2Q7.js";import{b as Nr}from"./chunk-TZFT7R7B.js";import{b as jr}from"./chunk-QISE272H.js";import{h as ba}from"./chunk-4ONGF4NT.js";import{a as cn}from"./chunk-BPMSNGXQ.js";import{a as Ct,b as Bt,c as ha}from"./chunk-VE3SUJMA.js";import{a as va}from"./chunk-ZRKPZLLG.js";import{a as Xn,d as on,e as zn}from"./chunk-LN7233E2.js";import{j as wi}from"./chunk-DN3E6RT6.js";import{d as Ys}from"./chunk-MSGW4JDG.js";import{a as Kn,b as wr}from"./chunk-TZXXJWHA.js";import{i as ra,m as Vt,n as sn,o as ur,p as Mr}from"./chunk-56PAQAX5.js";import{a as oa,b as Rr,c as ia}from"./chunk-XY325HDJ.js";import{h as na}from"./chunk-TAOHYWEO.js";import{b as xi}from"./chunk-VMCSRLRC.js";import{c as yi}from"./chunk-KQ2MYMOS.js";import{a as jt}from"./chunk-AO3PBE2V.js";import{a as nn,b as Or}from"./chunk-Q4V2GK5U.js";import{a as Qs}from"./chunk-5COGCNED.js";import{a as Js}from"./chunk-FUNKVREV.js";import{a as Ge}from"./chunk-OYJBABRV.js";import{a as Si}from"./chunk-NLCCBXXV.js";import{a as Ks}from"./chunk-RZ4F3BHX.js";import{a as Fs,d as Yt,e as rn}from"./chunk-EYOCNMUM.js";import{a as Gn}from"./chunk-ZLSWHCWO.js";import{a as bi}from"./chunk-NT3UETTV.js";import{a as Jt,b as Gs}from"./chunk-RDNKYRKY.js";import{a as xt,b as mt,j as fi,n as Us,o as pi,x as l}from"./chunk-OFW3ZVTP.js";import{b as Ws}from"./chunk-DFS4RMVP.js";import{a as G}from"./chunk-HCBYKLMW.js";import{a as b,b as a,i as Be,j as Vs,k as $r}from"./chunk-C44QQJR4.js";import{a as Ie}from"./chunk-6YGTRKDT.js";import{c as oe,e as D}from"./chunk-UR6MHSHU.js";var Ur=oe((yv,Pc)=>{"use strict";var np="2.0.0",op=Number.MAX_SAFE_INTEGER||9007199254740991,ip=16,sp=250,ap=["major","premajor","minor","preminor","patch","prepatch","prerelease"];Pc.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:ip,MAX_SAFE_BUILD_LENGTH:sp,MAX_SAFE_INTEGER:op,RELEASE_TYPES:ap,SEMVER_SPEC_VERSION:np,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var ln=oe((Sv,Dc)=>{"use strict";var cp=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};Dc.exports=cp});var qr=oe((qt,Lc)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:Di,MAX_SAFE_BUILD_LENGTH:lp,MAX_LENGTH:up}=Ur(),dp=ln();qt=Lc.exports={};var fp=qt.re=[],pp=qt.safeRe=[],W=qt.src=[],mp=qt.safeSrc=[],X=qt.t={},gp=0,Li="[a-zA-Z0-9-]",hp=[["\\s",1],["\\d",up],[Li,lp]],bp=e=>{for(let[t,r]of hp)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},se=(e,t,r)=>{let n=bp(t),o=gp++;dp(e,o,t),X[e]=o,W[o]=t,mp[o]=n,fp[o]=new RegExp(t,r?"g":void 0),pp[o]=new RegExp(n,r?"g":void 0)};se("NUMERICIDENTIFIER","0|[1-9]\\d*");se("NUMERICIDENTIFIERLOOSE","\\d+");se("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${Li}*`);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",`${Li}+`);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,${Di}})(?:\\.(\\d{1,${Di}}))?(?:\\.(\\d{1,${Di}}))?`);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=oe((wv,Bc)=>{"use strict";var vp=Object.freeze({loose:!0}),xp=Object.freeze({}),yp=e=>e?typeof e!="object"?vp:e:xp;Bc.exports=yp});var Bi=oe((Rv,Mc)=>{"use strict";var $c=/^[0-9]+$/,Oc=(e,t)=>{if(typeof e=="number"&&typeof t=="number")return e===t?0:e<t?-1:1;let r=$c.test(e),n=$c.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1},Sp=(e,t)=>Oc(t,e);Mc.exports={compareIdentifiers:Oc,rcompareIdentifiers:Sp}});var et=oe((Tv,jc)=>{"use strict";var oo=ln(),{MAX_LENGTH:Nc,MAX_SAFE_INTEGER:io}=Ur(),{safeRe:so,t:ao}=qr(),wp=no(),{compareIdentifiers:$i}=Bi(),Rp=(e,t)=>{let r=t.split(".");if(r.length>e.length)return!1;for(let n=0;n<r.length;n++)if($i(e[n],r[n])!==0)return!1;return!0},Oi=class e{constructor(t,r){if(r=wp(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 $i(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 $i(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]),Rp(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}};jc.exports=Oi});var dr=oe((kv,Fc)=>{"use strict";var Vc=et(),Tp=(e,t,r=!1)=>{if(e instanceof Vc)return e;try{return new Vc(e,t)}catch(n){if(!r)return null;throw n}};Fc.exports=Tp});var qc=oe((Cv,Uc)=>{"use strict";var kp=dr(),Cp=(e,t)=>{let r=kp(e,t);return r?r.version:null};Uc.exports=Cp});var Gc=oe((Ev,Hc)=>{"use strict";var Ep=dr(),Ip=(e,t)=>{let r=Ep(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null};Hc.exports=Ip});var zc=oe((Iv,Xc)=>{"use strict";var Wc=et(),Ap=(e,t,r,n,o)=>{typeof r=="string"&&(o=n,n=r,r=void 0);try{return new Wc(e instanceof Wc?e.version:e,r).inc(t,n,o).version}catch{return null}};Xc.exports=Ap});var Jc=oe((Av,Yc)=>{"use strict";var Kc=dr(),_p=(e,t)=>{let r=Kc(e,null,!0),n=Kc(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"};Yc.exports=_p});var Zc=oe((_v,Qc)=>{"use strict";var Pp=et(),Dp=(e,t)=>new Pp(e,t).major;Qc.exports=Dp});var tl=oe((Pv,el)=>{"use strict";var Lp=et(),Bp=(e,t)=>new Lp(e,t).minor;el.exports=Bp});var nl=oe((Dv,rl)=>{"use strict";var $p=et(),Op=(e,t)=>new $p(e,t).patch;rl.exports=Op});var il=oe((Lv,ol)=>{"use strict";var Mp=dr(),Np=(e,t)=>{let r=Mp(e,t);return r&&r.prerelease.length?r.prerelease:null};ol.exports=Np});var Et=oe((Bv,al)=>{"use strict";var sl=et(),jp=(e,t,r)=>new sl(e,r).compare(new sl(t,r));al.exports=jp});var ll=oe(($v,cl)=>{"use strict";var Vp=Et(),Fp=(e,t,r)=>Vp(t,e,r);cl.exports=Fp});var dl=oe((Ov,ul)=>{"use strict";var Up=Et(),qp=(e,t)=>Up(e,t,!0);ul.exports=qp});var co=oe((Mv,pl)=>{"use strict";var fl=et(),Hp=(e,t,r)=>{let n=new fl(e,r),o=new fl(t,r);return n.compare(o)||n.compareBuild(o)};pl.exports=Hp});var gl=oe((Nv,ml)=>{"use strict";var Gp=co(),Wp=(e,t)=>e.sort((r,n)=>Gp(r,n,t));ml.exports=Wp});var bl=oe((jv,hl)=>{"use strict";var Xp=co(),zp=(e,t)=>e.sort((r,n)=>Xp(n,r,t));hl.exports=zp});var un=oe((Vv,vl)=>{"use strict";var Kp=Et(),Yp=(e,t,r)=>Kp(e,t,r)>0;vl.exports=Yp});var lo=oe((Fv,xl)=>{"use strict";var Jp=Et(),Qp=(e,t,r)=>Jp(e,t,r)<0;xl.exports=Qp});var Mi=oe((Uv,yl)=>{"use strict";var Zp=Et(),em=(e,t,r)=>Zp(e,t,r)===0;yl.exports=em});var Ni=oe((qv,Sl)=>{"use strict";var tm=Et(),rm=(e,t,r)=>tm(e,t,r)!==0;Sl.exports=rm});var uo=oe((Hv,wl)=>{"use strict";var nm=Et(),om=(e,t,r)=>nm(e,t,r)>=0;wl.exports=om});var fo=oe((Gv,Rl)=>{"use strict";var im=Et(),sm=(e,t,r)=>im(e,t,r)<=0;Rl.exports=sm});var ji=oe((Wv,Tl)=>{"use strict";var am=Mi(),cm=Ni(),lm=un(),um=uo(),dm=lo(),fm=fo(),pm=(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 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);case"<=":return fm(e,r,n);default:throw new TypeError(`Invalid operator: ${t}`)}};Tl.exports=pm});var Cl=oe((Xv,kl)=>{"use strict";var mm=et(),gm=dr(),{safeRe:po,t:mo}=qr(),hm=(e,t)=>{if(e instanceof mm)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 gm(`${n}.${o}.${i}${s}${u}`,t)};kl.exports=hm});var Il=oe((zv,El)=>{"use strict";var bm=dr(),vm=Ur(),xm=et(),ym=(e,t,r)=>{if(!vm.RELEASE_TYPES.includes(t))return null;let n=Sm(e,r);return n&&wm(n,t)},Sm=(e,t)=>{let r=e instanceof xm?e.version:e;return bm(r,t)},wm=(e,t)=>{if(Rm(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()},Rm=e=>e.startsWith("pre");El.exports=ym});var _l=oe((Kv,Al)=>{"use strict";var Vi=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}};Al.exports=Vi});var It=oe((Yv,Bl)=>{"use strict";var Tm=/\s+/g,Fi=class e{constructor(t,r){if(r=Cm(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof Ui)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=>!Dl(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&&$m(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(Bm,"");let n=((this.options.includePrerelease&&Dm)|(this.options.loose&&Lm))+":"+t,o=Pl.get(n);if(o)return o;let i=this.options.loose,s=i?gt[tt.HYPHENRANGELOOSE]:gt[tt.HYPHENRANGE];t=t.replace(s,Wm(this.options.includePrerelease)),De("hyphen replace",t),t=t.replace(gt[tt.COMPARATORTRIM],Am),De("comparator trim",t),t=t.replace(gt[tt.TILDETRIM],_m),De("tilde trim",t),t=t.replace(gt[tt.CARETTRIM],Pm),De("caret trim",t);let u=t.split(" ").map(p=>Om(p,this.options)).join(" ").split(/\s+/).map(p=>Gm(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 Ui(p,this.options));for(let p of g){if(Dl(p))return[p];f.set(p.value,p)}f.size>1&&f.has("")&&f.delete("");let w=[...f.values()];return Pl.set(n,w),w}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(n=>Ll(n,r)&&t.set.some(o=>Ll(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 Em(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(Xm(this.set[r],t,this.options))return!0;return!1}};Bl.exports=Fi;var km=_l(),Pl=new km,Cm=no(),Ui=dn(),De=ln(),Em=et(),{safeRe:gt,src:Im,t:tt,comparatorTrimReplace:Am,tildeTrimReplace:_m,caretTrimReplace:Pm}=qr(),{FLAG_INCLUDE_PRERELEASE:Dm,FLAG_LOOSE:Lm}=Ur(),Bm=new RegExp(Im[tt.BUILD],"g"),Dl=e=>e.value==="<0.0.0-0",$m=e=>e.value==="",Ll=(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},Om=(e,t)=>(e=e.replace(gt[tt.BUILD],""),De("comp",e,t),e=Vm(e,t),De("caret",e),e=Nm(e,t),De("tildes",e),e=Um(e,t),De("xrange",e),e=Hm(e,t),De("stars",e),e),qe=e=>!e||e.toLowerCase()==="x"||e==="*",Mm=(e,t,r)=>qe(e)&&!qe(t)||qe(t)&&r&&!qe(r),Nm=(e,t)=>e.trim().split(/\s+/).map(r=>jm(r,t)).join(" "),jm=(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})},Vm=(e,t)=>e.trim().split(/\s+/).map(r=>Fm(r,t)).join(" "),Fm=(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})},Um=(e,t)=>(De("replaceXRanges",e,t),e.split(/\s+/).map(r=>qm(r,t)).join(" ")),qm=(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),Mm(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})},Hm=(e,t)=>(De("replaceStars",e,t),e.trim().replace(gt[tt.STAR],"")),Gm=(e,t)=>(De("replaceGTE0",e,t),e.trim().replace(gt[t.includePrerelease?tt.GTE0PRE:tt.GTE0],"")),Wm=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()),Xm=(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!==Ui.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=oe((Jv,Vl)=>{"use strict";var fn=Symbol("SemVer ANY"),Gi=class e{static get ANY(){return fn}constructor(t,r){if(r=$l(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),Hi("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,Hi("comp",this)}parse(t){let r=this.options.loose?Ol[Ml.COMPARATORLOOSE]:Ol[Ml.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(Hi("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 qi(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 jl(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new jl(this.value,r).test(t.semver):(r=$l(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("=")||qi(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||qi(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};Vl.exports=Gi;var $l=no(),{safeRe:Ol,t:Ml}=qr(),qi=ji(),Hi=ln(),Nl=et(),jl=It()});var pn=oe((Qv,Fl)=>{"use strict";var zm=It(),Km=(e,t,r)=>{try{t=new zm(t,r)}catch{return!1}return t.test(e)};Fl.exports=Km});var ql=oe((Zv,Ul)=>{"use strict";var Ym=It(),Jm=(e,t)=>new Ym(e,t).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));Ul.exports=Jm});var Gl=oe((ex,Hl)=>{"use strict";var Qm=et(),Zm=It(),eg=(e,t,r)=>{let n=null,o=null,i=null;try{i=new Zm(t,r)}catch{return null}return e.forEach(s=>{i.test(s)&&(!n||o.compare(s)===-1)&&(n=s,o=new Qm(n,r))}),n};Hl.exports=eg});var Xl=oe((tx,Wl)=>{"use strict";var tg=et(),rg=It(),ng=(e,t,r)=>{let n=null,o=null,i=null;try{i=new rg(t,r)}catch{return null}return e.forEach(s=>{i.test(s)&&(!n||o.compare(s)===1)&&(n=s,o=new tg(n,r))}),n};Wl.exports=ng});var Yl=oe((rx,Kl)=>{"use strict";var Wi=et(),og=It(),zl=un(),ig=(e,t)=>{e=new og(e,t);let r=new Wi("0.0.0");if(e.test(r)||(r=new Wi("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 Wi(s.semver.version);switch(s.operator){case">":u.prerelease.length===0?u.patch++:u.prerelease.push(0),u.raw=u.format();case"":case">=":(!i||zl(u,i))&&(i=u);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${s.operator}`)}}),i&&(!r||zl(r,i))&&(r=i)}return r&&e.test(r)?r:null};Kl.exports=ig});var Ql=oe((nx,Jl)=>{"use strict";var sg=It(),ag=(e,t)=>{try{return new sg(e,t).range||"*"}catch{return null}};Jl.exports=ag});var go=oe((ox,ru)=>{"use strict";var cg=et(),tu=dn(),{ANY:lg}=tu,ug=It(),dg=pn(),Zl=un(),eu=lo(),fg=fo(),pg=uo(),mg=(e,t,r,n)=>{e=new cg(e,n),t=new ug(t,n);let o,i,s,u,f;switch(r){case">":o=Zl,i=fg,s=eu,u=">",f=">=";break;case"<":o=eu,i=pg,s=Zl,u="<",f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(dg(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===lg&&(c=new tu(">=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};ru.exports=mg});var ou=oe((ix,nu)=>{"use strict";var gg=go(),hg=(e,t,r)=>gg(e,t,">",r);nu.exports=hg});var su=oe((sx,iu)=>{"use strict";var bg=go(),vg=(e,t,r)=>bg(e,t,"<",r);iu.exports=vg});var lu=oe((ax,cu)=>{"use strict";var au=It(),xg=(e,t,r)=>(e=new au(e,r),t=new au(t,r),e.intersects(t,r));cu.exports=xg});var du=oe((cx,uu)=>{"use strict";var yg=pn(),Sg=Et();uu.exports=(e,t,r)=>{let n=[],o=null,i=null,s=e.sort((w,p)=>Sg(w,p,r));for(let w of s)yg(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 bu=oe((lx,hu)=>{"use strict";var fu=It(),Ki=dn(),{ANY:Xi}=Ki,zi=pn(),Yi=Et(),wg=(e,t,r={})=>{if(e===t)return!0;e=new fu(e,r),t=new fu(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},Rg=[new Ki(">=0.0.0-0")],pu=[new Ki(">=0.0.0")],Tg=(e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===Xi){if(t.length===1&&t[0].semver===Xi)return!0;r.includePrerelease?e=Rg:e=pu}if(t.length===1&&t[0].semver===Xi){if(r.includePrerelease)return!0;t=pu}let n=new Set,o,i;for(let c of e)c.operator===">"||c.operator===">="?o=mu(o,c,r):c.operator==="<"||c.operator==="<="?i=gu(i,c,r):n.add(c.semver);if(n.size>1)return null;let s;if(o&&i){if(s=Yi(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&&!zi(c,String(o),r)||i&&!zi(c,String(i),r))return null;for(let m of t)if(!zi(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=mu(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=gu(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)},mu=(e,t,r)=>{if(!e)return t;let n=Yi(e.semver,t.semver,r);return n>0?e:n<0||t.operator===">"&&e.operator===">="?t:e},gu=(e,t,r)=>{if(!e)return t;let n=Yi(e.semver,t.semver,r);return n<0?e:n>0||t.operator==="<"&&e.operator==="<="?t:e};hu.exports=wg});var Qi=oe((ux,yu)=>{"use strict";var Ji=qr(),vu=Ur(),kg=et(),xu=Bi(),Cg=dr(),Eg=qc(),Ig=Gc(),Ag=zc(),_g=Jc(),Pg=Zc(),Dg=tl(),Lg=nl(),Bg=il(),$g=Et(),Og=ll(),Mg=dl(),Ng=co(),jg=gl(),Vg=bl(),Fg=un(),Ug=lo(),qg=Mi(),Hg=Ni(),Gg=uo(),Wg=fo(),Xg=ji(),zg=Cl(),Kg=Il(),Yg=dn(),Jg=It(),Qg=pn(),Zg=ql(),eh=Gl(),th=Xl(),rh=Yl(),nh=Ql(),oh=go(),ih=ou(),sh=su(),ah=lu(),ch=du(),lh=bu();yu.exports={parse:Cg,valid:Eg,clean:Ig,inc:Ag,diff:_g,major:Pg,minor:Dg,patch:Lg,prerelease:Bg,compare:$g,rcompare:Og,compareLoose:Mg,compareBuild:Ng,sort:jg,rsort:Vg,gt:Fg,lt:Ug,eq:qg,neq:Hg,gte:Gg,lte:Wg,cmp:Xg,coerce:zg,truncate:Kg,Comparator:Yg,Range:Jg,satisfies:Qg,toComparators:Zg,maxSatisfying:eh,minSatisfying:th,minVersion:rh,validRange:nh,outside:oh,gtr:ih,ltr:sh,intersects:ah,simplifyRange:ch,subset:lh,SemVer:kg,re:Ji.re,src:Ji.src,tokens:Ji.t,SEMVER_SPEC_VERSION:vu.SEMVER_SPEC_VERSION,RELEASE_TYPES:vu.RELEASE_TYPES,compareIdentifiers:xu.compareIdentifiers,rcompareIdentifiers:xu.rcompareIdentifiers}});var T=D(Ie(),1);var Ac=D(Ie(),1);var Fr=D(G(),1);function _c({path:e}){return e.length===0?null:(0,Fr.jsx)(b,{children:e.map((t,r)=>(0,Fr.jsxs)(Ac.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 Su=D(Qi(),1),uh=1,dh=new Set(["discover","workflow","nudge","recovery"]),fh=new Set(["run","generate","both"]),ph=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 mh(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 wu(e,t){return e.text[t]??e.text.default??(e.target!=="both"?e.text[e.target]:void 0)}function gh(e,t){return t==="both"?!!e.default||!!e.run&&!!e.generate:t==="run"?!!e.run||!!e.default:!!e.generate||!!e.default}function hh(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 bh(e){if(!ho(e))return null;let t=Hr(e.id);if(!t)return null;let r=fh.has(e.target)?e.target:void 0;if(e.target!==void 0&&r===void 0)return null;let n=r??"both",o=mh(e.text);if(!gh(o,n))return null;let i=dh.has(e.category)?e.category:"nudge",s=ph.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)&&Su.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=hh(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)>uh)return{catalog:null,dropped:0};let r=0,n=new Set,o=[];for(let i of e.hints){let s=bh(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 ku=D(G(),1),Ru="tip: ";function Tu({hint:e,mode:t,termWidth:r}){if(e.target!=="both"&&e.target!==t)return null;let n=wu(e,t);if(!n)return null;let o=Math.max(8,r-Ru.length-2),i=n.length>o?n.slice(0,o-1)+"\u2026":n;return(0,ku.jsx)(a,{color:l.dim,children:Ru+i})}var ne=D(G(),1);function vo(e,t){return e.length<=t?e:`${e.slice(0,Math.max(1,t-1))}\u2026`}function vh(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 Cu({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}=$r(),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,$=vh(p,m);return(0,ne.jsxs)(b,{flexDirection:"column",children:[(0,ne.jsx)(a,{color:l.muted,children:"\u2500".repeat(m)}),s&&s.length>0&&(0,ne.jsx)(b,{paddingX:1,children:(0,ne.jsx)(_c,{path:s})}),(0,ne.jsxs)(b,{paddingX:1,gap:1,children:[(0,ne.jsx)(a,{color:l.dim,children:"Mode:"}),(0,ne.jsx)(a,{color:F,bold:!0,children:P==="generate"?"Generate":"Run"}),(0,ne.jsx)(a,{color:l.muted,children:"|"}),P==="generate"?(0,ne.jsxs)(ne.Fragment,{children:[(0,ne.jsx)(a,{color:l.dim,children:"req"}),(0,ne.jsx)(a,{color:l.dim,children:f??"\u2014"}),g&&(0,ne.jsxs)(ne.Fragment,{children:[(0,ne.jsx)(a,{color:l.muted,children:"\xB7"}),(0,ne.jsx)(a,{color:H,children:g})]})]}):(0,ne.jsxs)(ne.Fragment,{children:[(0,ne.jsx)(a,{color:l.dim,children:"Session:"}),(0,ne.jsx)(a,{color:l.dim,children:o})]}),(0,ne.jsx)(a,{color:l.muted,children:"|"}),(0,ne.jsx)(a,{color:r?l.green:l.red,children:"\u25CF"}),(0,ne.jsx)(a,{color:l.dim,children:r?"authenticated":"not logged in"}),!B&&(0,ne.jsxs)(ne.Fragment,{children:[(0,ne.jsx)(a,{color:l.muted,children:"|"}),U?(0,ne.jsx)(a,{color:l.orange,bold:!0,children:"\u26A0 stage"}):(0,ne.jsx)(a,{color:l.green,children:t})]})]}),(0,ne.jsxs)(b,{paddingX:1,gap:1,children:[(0,ne.jsx)(a,{color:l.dim,children:e??"no profile"}),P==="run"&&(0,ne.jsxs)(ne.Fragment,{children:[(0,ne.jsx)(a,{color:l.muted,children:"|"}),(0,ne.jsxs)(a,{color:l.dim,children:["runs: ",n]})]}),(0,ne.jsx)(a,{color:l.muted,children:"|"}),(0,ne.jsx)(a,{dimColor:!0,children:qs()})]}),(0,ne.jsxs)(b,{paddingX:1,gap:1,children:[(0,ne.jsx)(a,{color:l.dim,children:"Config:"}),(0,ne.jsx)(a,{color:p.kind==="desktop"?l.dim:l.orange,children:$}),x&&(0,ne.jsx)(a,{color:l.dim,children:"\xB7 locked (/new to change)"})]}),(0,ne.jsx)(b,{paddingX:1,children:(0,ne.jsx)(a,{dimColor:!0,children:i==="chat"?"ctrl+c cancel/exit":"\u2191\u2193 navigate \u21B5 select esc back"})}),w&&(0,ne.jsx)(b,{paddingX:1,children:(0,ne.jsx)(Tu,{hint:w,mode:P,termWidth:m})})]})}var kr=D(Ie(),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",Zi="#875faf",Eu="#5b3a7a",xh="#ff9500",yh="#ea580c";var es="#666666",Sh="#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"],[Zi,"\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"],[Zi,"\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"],[Zi,"\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"]],ts=Tr.map(([,e])=>[...e]);function Iu({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=ts[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&&ts[o-1][u-1]==="\u2588";return f||g?(0,ve.jsx)(a,{color:Eu,children:"\u2592"},u):(0,ve.jsx)(a,{children:" "},u)})},o)}),t>=Tr.length&&(0,ve.jsxs)(a,{children:[" ",ts[Tr.length-1].map((r,n)=>r==="\u2588"?(0,ve.jsx)(a,{color:Eu,children:"\u2580"},n):(0,ve.jsx)(a,{children:" "},n))]})]})}function wh({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)(Iu,{}):(0,ve.jsxs)(b,{flexDirection:"column",paddingX:1,paddingY:1,children:[(0,ve.jsx)(a,{color:xh,italic:!0,children:" Welcome to"}),(0,ve.jsx)(a,{children:" "}),(0,ve.jsxs)(b,{gap:2,children:[(0,ve.jsx)(wh,{visibleRows:t}),(0,ve.jsxs)(b,{flexDirection:"column",children:[(0,ve.jsx)(Iu,{visibleRows:r}),(0,ve.jsx)(b,{justifyContent:"flex-end",width:73,children:(0,ve.jsx)(a,{color:yh,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:es,children:" The validation layer for AI coding agents. "}),(0,ve.jsx)(a,{color:Sh,children:`v${s}`})]}),(0,ve.jsx)(a,{children:" "}),(0,ve.jsx)(a,{children:(0,ve.jsx)(a,{color:es,children:" Kane-CLI: natural-language web & mobile-app automation, plus"})}),(0,ve.jsx)(a,{children:(0,ve.jsx)(a,{color:es,children:" requirements-to-coverage assurance \u2014 from your CLI or IDE."})}),(0,ve.jsx)(a,{children:" "})]})]})}var os=D(G(),1),rs=8,ns=7;function Au({onComplete:e}){let[t,r]=(0,kr.useState)(0),[n,o]=(0,kr.useState)(0),[i,s]=(0,kr.useState)(!1),[u]=(0,kr.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 hi(()=>{r(f=>Math.min(rs,f+1))},t<rs?60:null),hi(()=>{o(f=>Math.min(ns,f+1))},n<ns?80:null),(0,kr.useEffect)(()=>{t>=rs&&n>=ns&&!i&&(s(!0),e?.())},[t,n,i,e]),(0,os.jsx)(b,{flexDirection:"column",children:(0,os.jsx)(yo,{size:"full",helmetVisibleRows:t,textVisibleRows:n,showMeta:i,user:u.user,authenticated:u.authenticated,version:xt})})}var Qt=D(G(),1);function _u({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 is=D(G(),1);function Pu({objective:e}){let{stdout:t}=$r(),r=Math.max(24,(t?.columns??80)-4);return(0,is.jsx)(Jt,{title:"run",width:r,children:(0,is.jsx)(Gs,{label:"objective",value:e})})}var Ht=D(Ie(),1);var ht=D(G(),1);function Rh(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 Du({data:e,width:t=60}){let r=Rh(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 So(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=So(e,F),$=0;if(F.length>0){let z=H.findIndex(ae=>ae.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=So(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"),ae=$[z];if(ae&&m.onValue){let te=m.currentValue;m.onValue(ae.value),U(te?`${m.label}: ${te} \u2192 ${ae.label}`:`${m.label}: ${ae.label}`)}x(te=>({...te,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),ae=So(e,z),te=$.expandedPath[$.expandedPath.length-1],re=ae.findIndex(K=>K.item.id===te);return{...$,expandedPath:z,selectedIndex:re>=0?re: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=>{let ae=[...z.expandedPath.slice(0,$),m.id],te=So(e,ae),re=te.findIndex(K=>K.item.id===m.id);return{...z,expandedPath:ae,selectedIndex:re>=0?Math.min(re+1,te.length-1):z.selectedIndex}});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)(Du,{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,ae=" ".repeat(H),te=z?"\u276F ":" ",re=F.type==="submenu"?p.expandedPath.includes(F.id)?"\u25BC ":"\u25B6 ":F.type==="select"&&F.options?z&&p.isSelecting?"\u25BC ":"\u25B6 ":" ",K=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:[ae,te,re,F.label]}),F.options.map((Re,me)=>(0,rt.jsxs)(a,{color:me===pe?l.orange:void 0,children:[ae," ",me===pe?"\u276F ":" ",Re.label]},Re.value))]},F.id)}return z&&p.isEditing?(0,rt.jsxs)(a,{color:l.orange,children:[ae,te,re,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:[ae,te,re,F.label,(0,rt.jsx)(a,{dimColor:!0,children:K})]},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(Ie(),1);import{access as Th}from"fs/promises";async function Lu(e){try{return await Th(e),!0}catch{return!1}}function kh(e,t){if(Rr(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 Ch(e){return e==="emulator"||e==="simulator"?e:null}var wo={emulator:"android",simulator:"ios"};function Eh(e){return`${e.platform}\0${e.kind}\0${nn(e)}`}function Ih(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 Bu(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),[ae,te]=(0,J.useState)(null),re=(0,J.useRef)(null),K=(0,J.useRef)(null),pe=(0,J.useRef)(null),Re=(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),Rt=(0,J.useRef)(()=>{}),ge=(0,J.useRef)({pathExists:Lu,...e});ge.current={pathExists:Lu,...e},(0,J.useEffect)(()=>{t==="ready"&&(He.current=null)},[t]);let ut=(0,J.useCallback)((I,L,Y)=>{Y().catch(q=>{I===me.current&&(P(null),B(q instanceof Error?q.message:String(q)),r(L))})},[]),$t=(0,J.useCallback)(async(I,L,Y)=>{r("picking"),P("Looking for devices\u2026");let q=Y?wo[Y]:void 0,Z=(await zn(q)).filter(Se=>!Y||Se.kind===Y);if(I===me.current){if(p(Z),P(null),Z.length===0){B(Y==="emulator"?"No Android emulator found on this machine.":Y==="simulator"?"No iOS simulator found on this machine.":"No emulator or simulator found on this machine.");return}st.current=null,te(null)}},[]),Oe=(0,J.useCallback)((I,L)=>{let Y={target:I,savedDeviceLabel:I.displayName,savedKind:I.kind,...L?{appPath:L,savedAppLabel:u.current??L}:{},deviceMissing:!1,appMissing:!L};st.current=Y,Xt.current=Y,te(Y),P(null),r("confirm")},[]),Le=(0,J.useCallback)(async(I,L)=>{let Y=on(wo[L]);if(!Y||!Y.available())return!0;let q=await Y.checks({appiumUrl:ge.current.getDefaults()?.appium_url});return I!==me.current?!1:(g(q),q.some(Se=>Se.required&&Se.status==="fail"&&!Se.fixedByBundle)?(P(null),r("doctor"),!1):!0)},[]),zt=(0,J.useCallback)(async(I,L)=>{let Y=ge.current.getDefaults(),q=Y?.default_target;if(i.current=L,o(L),P("Checking the saved setup\u2026"),!await Le(I,L))return;let Z=wo[L],Se=(await zn(Z)).filter(rr=>rr.kind===L);if(I!==me.current)return;p(Se),P(null);let Je=q?Ih(Se,q):void 0,le=la(Y?.default_app)?Y?.default_app:void 0,St=le?Rr(le)||await ge.current.pathExists(le):!1;if(I!==me.current)return;let bt=le&&Rr(le)?await ge.current.appLabelFor?.(le)??le:le;if(I!==me.current)return;let Ce={...Je?{target:Je}:{},savedDeviceLabel:q?.id??"(unknown device)",savedKind:L,...le&&St?{appPath:le}:{},...bt?{savedAppLabel:bt}:{},deviceMissing:!Je,appMissing:!le||!St};st.current=Ce,Xt.current=Ce,u.current=le&&bt!==le?bt:null,te(Ce),r("confirm")},[Le]),Ne=(0,J.useCallback)(async(I,L)=>{r("checking");let Y=Kn();if(I!==me.current)return;if(!Y.supported){g([{id:"host.platform",label:"host",required:!0,status:"fail",detail:Y.reason}]),r("doctor");return}g([]);let q=ge.current.getDefaults(),Z=Ch(q?.default_target?.kind);if(L==="confirm"&&Z&&q?.default_target){st.current=null,te(null),await zt(I,Z);return}r("chooser")},[zt]),Kt=(0,J.useCallback)(I=>{let L=++me.current;i.current=I,o(I);let Y=ge.current.getDefaults();ge.current.setDefaults({...Y,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 wi().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 Y=++me.current;$e.current=I;let q=ge.current.getDefaults();He.current=q?.tui_target??"desktop";let Z=(L.kind?Yt(L.kind):void 0)??Yt(q?.default_target?.kind??"")??"emulator";ge.current.setDefaults({...q,tui_target:Z}),g([]),p([]),c([]),H(null),z(null),B(null),te(null),st.current=null,re.current=null,K.current=null,I==="reinit"&&(pe.current=null),ut(Y,"doctor",()=>Ne(Y,I))},[ut,Ne]),Cr=(0,J.useCallback)(()=>{let I=++me.current;B(null),ut(I,"doctor",()=>Ne(I,$e.current))},[ut,Ne]),Kr=(0,J.useCallback)(I=>{let L=++me.current;B(null),P("Installing managed mobile dependencies\u2026");let Y=I??["emulator",...process.platform==="darwin"?["simulator"]:[]];ut(L,"doctor",async()=>{for(let q of Y)await wi().ensure(q,{automatic:!1,approved:!0,onProgress:Z=>{L===me.current&&P(Z)}});L===me.current&&P(null),await Ne(L,$e.current)})},[ut,Ne]),Er=(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??(()=>ta(ea(),[],[],I.kind)))({udid:I.id,displayName:I.displayName});if(q!==null){let Je=typeof q=="number"?q:q.port,le=typeof q=="number"?void 0:q.device;B(Zs({udid:I.id,displayName:I.displayName},Je,le));return}re.current=I,K.current=L,z(I),B(null),c([]),Ri(L,I);let Z=s.current;Z&&!kh(Z,I.kind)&&(s.current=null);let Se=ge.current.getDefaults();ge.current.setDefaults({...Se,...Yt(I.kind)?{tui_target:Yt(I.kind)}:{},default_target:{platform:I.platform,kind:I.kind,id:nn(I)}}),s.current&&H(Or(I,s.current,{noReset:Se?.no_reset,appiumUrl:Se?.appium_url,autoGrantPermissions:Se?.auto_grant_permissions,autoAcceptAlerts:Se?.auto_accept_alerts})),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 Y=L.target,q=on(Y.platform);if(!q){B(`No provider registered for platform "${Y.platform}"`);return}if(re.current=Y,K.current=q,z(Y),B(null),c([]),Ri(q,Y),!(I.keepApp!==!1&&L.appPath)){r("appSource");return}let Se=ge.current.getDefaults();s.current=L.appPath,H(Or(Y,L.appPath,{noReset:Se?.no_reset,appiumUrl:Se?.appium_url,autoGrantPermissions:Se?.auto_grant_permissions,autoAcceptAlerts:Se?.auto_accept_alerts})),r("ready")},[]),hr=(0,J.useCallback)(()=>{if(!re.current||!K.current){B("Pick a device before choosing an app");return}r("apps")},[]),Tt=(0,J.useCallback)(()=>{if(!re.current||!K.current){B("Pick a device before choosing an app");return}B(null),r("appList")},[]),br=(0,J.useCallback)(()=>{if(!re.current||!K.current){B("Pick a device before choosing an app");return}B(null),r("appId")},[]),Ir=(0,J.useCallback)(async I=>{let L=re.current,Y=ge.current.resolveAppId;if(!L)return{ok:!1,error:"Pick a device before choosing an app"};if(!Y)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 Z=await Y(I,Je=>{q===me.current&&P(Je)});if(q!==me.current)return{ok:!1};let Se=ge.current.getDefaults();return s.current=I,u.current=Z.name,pe.current=null,P(null),H(Or(L,I,{noReset:Se?.no_reset,appiumUrl:Se?.appium_url,autoGrantPermissions:Se?.auto_grant_permissions,autoAcceptAlerts:Se?.auto_accept_alerts})),ge.current.setDefaults({...Se,...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(Z){return q!==me.current?{ok:!1}:(P(null),{ok:!1,error:Z instanceof Error?Z.message:String(Z)})}},[Oe]),vr=(0,J.useCallback)(()=>{if(!re.current||!K.current){B("Pick a device before choosing an app");return}r("appSource")},[]),Q=(0,J.useCallback)(async(I,L={})=>{let Y=L.persist!==!1,q=re.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 Z=ge.current.getDefaults();return s.current=I.value,u.current=null,pe.current=null,B(null),P(null),H(Or(q,I.value,{noReset:Z?.no_reset,appiumUrl:Z?.appium_url,autoGrantPermissions:Z?.auto_grant_permissions,autoAcceptAlerts:Z?.auto_accept_alerts})),Oe(q,I.value),Y&&ge.current.setDefaults({...Z,...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]),ue=(0,J.useCallback)(()=>{r("appSource")},[]),ce=(0,J.useCallback)(async I=>{let L=re.current,Y=K.current;if(!L||!Y)return{ok:!1,error:"No device is bound \u2014 run /mobile first"};try{let q=await sa(Y,L,bt=>P(bt)),Z=await Y.ensureApp(q,I,bt=>P(bt));P(null);let Se=Eh(L);pe.current={targetIdentity:Se,packageId:Z};let Je=Re.current.get(Se)??[];if(!Je.includes(Z)){let bt=[...Je,Z].sort();Re.current.set(Se,bt),c(bt)}let le=ge.current.getDefaults(),St=Or(q,Z,{noReset:le?.no_reset,appiumUrl:le?.appium_url,autoGrantPermissions:le?.auto_grant_permissions,autoAcceptAlerts:le?.auto_accept_alerts});return H(St),{ok:!0,device:St}}catch(q){return P(null),{ok:!1,error:q instanceof Error?q.message:String(q)}}},[]),ie=(0,J.useCallback)(async()=>{let I=re.current;if(!I)return{ok:!1,reason:"No device is selected.",step:"device"};let L=wo[I.kind];if(!(await zn(L)).some(Z=>Z.id===I.id||Z.virtualName&&Z.virtualName===I.virtualName))return{ok:!1,reason:`${I.displayName} is no longer connected.`,step:"device"};let q=s.current;return q?Rr(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"}},[]),de=(0,J.useCallback)(()=>{++me.current,Xt.current=null,r("idle"),g([]),p([]),c([]),P(null),B(null),H(null),z(null),te(null),st.current=null,re.current=null,K.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 Y=I.target?on(I.target.platform):null;return re.current=I.target??null,K.current=Y??null,s.current=I.appPath??null,st.current=I,i.current=I.savedKind,o(I.savedKind),z(I.target??null),te(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(re.current){Oe(re.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;Rt.current();return;default:Rt.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}de()},[de]);return Rt.current=dt,{phase:t,kind:n,selectKind:Kt,checks:f,targets:w,apps:x,busyMessage:m,error:U,device:F,target:$,saved:ae,begin:mr,recheck:Cr,install:Kr,cancel:dt,back:Te,selectTarget:Er,confirmSaved:gr,requestApp:hr,requestAppSource:vr,requestCloudApps:Tt,requestAppId:br,selectApp:Q,selectAppId:Ir,skipApp:ue,bindAppForRun:ce,validateBinding:ie,reset:de}}var gn=D(Ie(),1);function $u(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 Ah}from"fs/promises";async function Ou(e){let t=e.statFile??Ah,r="";if(!Rr(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 Mu(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 ju,readdir as _h,stat as Ph}from"fs/promises";import{extname as Vu,join as Fu,relative as Dh}from"path";var Lh=new Set(["node_modules",".git"]),Bh=new Set([".apk",".zip",".apks",".aab",".ipa",".app"]);function Uu(e){return e.state!=="incompatible"}var Nu=new Map;function $h(e,t){return`${e}\0${t?.platform??""}\0${t?.androidApiLevel??""}\0${t?.androidAbis?.join(",")??""}`}function Oh(e){let t=typeof e=="number"?e:typeof e=="string"?Number(e):NaN;return Number.isInteger(t)&&t>0?t:void 0}function Mh(e){let t=new Set;return Ys(e,{filter:r=>{let n=/^lib\/([^/]+)\//.exec(r.name);return n?.[1]&&t.add(n[1]),!1}}),[...t].sort()}async function qu(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 _h(f,{withFileTypes:!0,encoding:"utf8"})}catch{return}for(let p of w){if(s.length>=n)return;if(p.name.startsWith(".")||Lh.has(p.name)||p.name.startsWith("output-"))continue;let x=Fu(f,p.name),c=Vu(p.name).toLowerCase();if(Bh.has(c)&&(p.isFile()||c===".app"&&p.isDirectory())){let P=Dh(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 Hu(e,t){let r;try{r=(await Ph(e)).mtimeMs}catch{}let n=$h(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=Vu(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=Oh(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=Mh(new Uint8Array(await ju(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 jh(Fu(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 jh(e){let r=(await ju(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 Ro=D(Ie(),1);function Gu(e){let t=(0,Ro.useRef)(e);return t.current=e,(0,Ro.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 na(p,{username:w.username,accessKey:w.access_key})).list({type:f,...r})},[])}var hn=D(G(),1);function Wu({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 Xu(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=Vh(await i.json());return s&&e.cache?.set(e.objective,s),s}catch{return null}finally{clearTimeout(o)}}function Vh(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 zu(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 Ku=D(Ie(),1);var Fe=D(G(),1),Fh={pass:"\u2713",fail:"\u2717",info:"\u2139"},Uh={pass:l.green,fail:l.red,info:l.secondary};function Yu({checks:e,busyMessage:t,onRetry:r,onInstall:n,onCancel:o}){let[i,s]=(0,Ku.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:Uh[x.status],children:[Fh[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(Ie(),1);var at=D(G(),1),as=800,cs=3840,ls=600,us=2160;function Ju(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=Ju("width",s);if(P){i("width"),p(`Width: ${P}`);return}let U=Ju("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(Ie(),1);async function Qu(e,t,r){let n=e.loadCredentials(t,r),o=e.loadClient(t,r);if(n&&o){let s=new Js(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 Zu(){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 Qs({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 xa(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 va(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 Qu(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(Ie(),1);import{mkdtempSync as qh,rmSync as Hh}from"fs";import{join as Gh}from"path";import{tmpdir as Wh}from"os";function ed(){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=qh(Gh(Wh(),"kane-clean-"));r.current=p,g=p,Vt("tempDir",()=>{try{Hh(p,{recursive:!0,force:!0})}catch{}})}let w=await Sa({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"}],Xh={web:"desktop"};function zh(e){return Xh[e]??e}function ko(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:zh(o),args:i,raw:t}}var tS=[{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 td=[{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"}],Kh={name:"cancel",description:"Abort current run"},Yh={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]"},Kh,...td],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>]"},Yh,...td],rd=Wr,Jh=new Set(["mobile","doctor"]),Qh=new Set(["mobile","desktop"]);function nd(e,t){return t?e.map(r=>Qh.has(r.name)?{...r,disabled:!0,disabledReason:`locked \u2014 session ran on ${t.label}; /new to switch`}:r):e}function xn(e,t=wr()){return t?e:e.filter(r=>!Jh.has(r.name))}function Co(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 Zh=new Set([...Wr,...vn].map(e=>e.name));function od(e,t){let r=t==="generate"?vn:Wr;return Zh.has(e)?r.some(n=>n.name===e):!0}var id=D(Ie(),1);var yt=D(G(),1);function eb(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 sd({saved:e,onContinue:t,onChangeDevice:r,onChangeApp:n,onCancel:o}){let i=eb(e),[s,u]=(0,id.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 ad(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)(Fa,{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),tb={ok:"\u2713",error:"\u2717",cancelled:"\u2298"},rb={ok:l.green,error:l.red,cancelled:l.dim};function cd({status:e,command:t,message:r,details:n,accentColor:o}){let i=t.startsWith("/")?t.slice(1):t,s=o??rb[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:[tb[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 Rn=D(Ie(),1);import{join as Sn}from"path";var yn=D(G(),1);function ld({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"],Eo=21,nb="https://www.testmuai.com/support/docs/kane-cli-introduction",ob="https://github.com/LambdaTest/kane-cli/issues";function ud({onClose:e,version:t,environment:r,sessionId:n,runUrl:o,mode:i="run"}){let[s,u]=(0,Rn.useState)(0),[f,g]=(0,Rn.useState)(0);(0,Rn.useEffect)(()=>{g(0)},[s]);let w=wn[s],p=w==="Commands"?ib(i):w==="Shortcuts"?sb():w==="Tests"?ab():w==="Setup"?cb():lb({version:t,environment:r,sessionId:n,runUrl:o}),x=p.length,c=f>0,m=f+Eo<x,P=p.slice(f,f+Eo);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-Eo),H+1));return}});let U=[{keys:"\u2190\u2192/tab",label:"switch tabs"}];return x>Eo&&U.push({keys:"\u2191\u2193",label:"scroll"}),(0,_.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:[(0,_.jsx)(ld,{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 ib(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 Io(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 sb(){return[...Io("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"]]),...Io("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"]]),...Io("Lists & menus",[["\u2191 \u2193","Navigate"],["type any char","Filter"],["\u21B5","Select"],["Tab","Create-new (in pickers)"],["Esc","Clear filter, then back"]]),...Io("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 ab(){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 cb(){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 lb({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:nb})]},"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:ob})]},"bugs")]}var Ao=D(Ie(),1);import{existsSync as dd,readFileSync as AS,rmSync as ub,unlinkSync as db}from"fs";function fd(e){let t=Ua(e);dd(t)&&ub(t,{recursive:!0,force:!0}),dd(e)&&db(e)}var ps=D(G(),1);function pd({cwd:e,currentOrgId:t,onClose:r,onRun:n,onExport:o}){let[i,s]=(0,Ao.useState)("list"),[u,f]=(0,Ao.useState)(null),[g,w]=(0,Ao.useState)(0);return i==="inspect"&&u?(0,ps.jsx)(Ha,{path:u.path,relPath:u.relPath,onBack:()=>s("list"),onAction:p=>{if(p==="run")n(u);else if(p==="export")o(u);else{try{fd(u.path)}catch{}f(null),s("list"),w(x=>x+1)}}}):(0,ps.jsx)(qa,{root:e,currentOrgId:t,onSelect:p=>{f(p),s("inspect")},onCancel:r},g)}var lt=D(Ie(),1);function md(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 ae=K=>`testmd-run-${$}-${K}`,te={register:(K,pe)=>{let Re=ae(K);z.push(Re),Vt(Re,pe)},deregister:K=>sn(ae(K)),cleanup:(K,pe)=>ur(ae(K),pe),remoteLogger:P.current.remoteLogger},re={runSteps:K=>new Promise(pe=>{let Re=()=>{m.current=null,pe()};m.current=Re,r({...K,exitOnComplete:!1,onAllComplete:()=>{K.onAllComplete?.(),Re()}})}),onLockState:K=>{},onAdaptiveHeal:K=>{},onSummary:async K=>{s(K)},onLinks:async K=>{f(K)},runUpload:K=>K.execute(),onAgentEvent:K=>{}};o(!0),s(null),f(null),w(null);try{let K=await P.current.buildInput(H),pe=await cc(K,re,te);return w(pe),pe}finally{c.current=!1,m.current=null,o(!1),r(null);for(let K of z)ur(K,"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(Ie(),1);function gd(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 ae of U){if(f.current)break;switch(r(te=>fc(te,ae)),ae.type){case"thinking_done":F?.("tcg_thinking",{tookMs:ae.tookMs});break;case"progress":{let te=Math.min(100,Math.floor(ae.pct/25)*25);te>z&&(z=te,F?.("tcg_progress",{pct:te}));break}case"snapshot":H=ae.data.scenarios.length,$=ae.data.scenarios.reduce((te,re)=>te+(re.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:ae.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??pc;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(ae){throw u.current=null,g.current=null,r(te=>({...te,turnActive:!1})),ae}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(dc(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:uc(t.status),isReconnecting:n,turnActive:t.turnActive,inReview:t.scenarios.length>0&&!t.turnActive&&!Ai(t.status),isSessionClosed:Ai(t.status),requestId:i,startWith:p,chat:x,cancel:c,end:m,reset:P}}var be=D(Ie(),1);import{join as Xr,resolve as Tb}from"path";import{mkdirSync as gs,writeFileSync as _d,appendFileSync as kb}from"fs";function hd(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 bd(e){return e.turnActive?!0:e.requestId!=null&&!e.isSessionClosed&&!e.saved}function vd(e){return e.isRunning||e.hasLiveResults}function xd(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 yd(e,t){return`S${e+1}.C${t+1}`}function Sd(e,t){return e.reduce((r,n)=>r+(n.test_cases??[]).filter(o=>!t.has(o.id)).length,0)}function wd(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 Tn=D(Ie(),1);import{createHash as fb}from"crypto";function pb(e){return fb("sha1").update(JSON.stringify({t:e.title,p:e.preconditions,m:e.manual_steps})).digest("hex")}var _o=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=pb(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:yd(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(vc(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=xc({objective:t,model:this.deps.model,sessionId:this.deps.sessionId,auth:n});return yc(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 Rd(e){let t=(0,Tn.useRef)(null);return(0,Tn.useEffect)(()=>{if(!e.enabled)return;let r=e.log,n=r?(o,i,s,u)=>r(i,u??{}):void 0;return t.current=new _o({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,Tn.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 Cd,isAbsolute as gb,extname as hb}from"path";import{homedir as kd}from"os";var mb=/(?<=^|\s)@(?:"([^"]*)"|([^\s@]+))/g;function Td(e){let t=[];for(let r of e.matchAll(mb)){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 bb=/^s\d+(\.c\d+)?$/i;function vb(e){return e==="~"?kd():e.startsWith("~/")?Cd(kd(),e.slice(2)):e}function xb(e){return/^https?:\/\//i.test(e)?!1:e.includes("/")?!0:ro.has(hb(e).toLowerCase())}function Ed(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(bb.test(u)||!xb(u))continue;let g=vb(u),w=gb(g)?g:Cd(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 yb=["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"],Sb=new Set(yb);function ms(e){let t={};for(let r of Object.keys(e))Sb.has(r)&&e[r]!==void 0&&(t[r]=e[r]);return t}import{mkdirSync as wb,appendFileSync as Rb}from"fs";import{join as Id}from"path";function Ad(e,t,r,n,o=mt){let i=Id(o,"tcg",e&&e.length>0?e:"pending"),s=Id(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
+ `;wb(i,{recursive:!0}),Rb(s,f)}catch{}return s}var We=D(G(),1);async function Cb(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 Pd(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function Dd(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,ae]=(0,be.useState)(0),[te,re]=(0,be.useState)(!1),K=(0,be.useRef)(null),pe=(0,be.useRef)(()=>{}),Re=(0,be.useCallback)(()=>Cb(o),[o]),me=(0,be.useRef)(null);me.current=t.requestId;let $e=(0,be.useCallback)((Q,ue)=>{let ce=Q.endsWith("_error")?"warn":"info",ie=ms({request_id:me.current??void 0,...ue});i.log(ce,Q,JSON.stringify(ie),ie);try{let de=typeof ie.request_id=="string"&&ie.request_id||me.current||"unknown",Te=Xr(mt,"tcg",de);gs(Te,{recursive:!0}),kb(Xr(Te,"tcg_tui.log"),`[${new Date().toISOString()}] ${Q} ${JSON.stringify(ie)}
7
+ `)}catch{}},[i]),He=(0,be.useCallback)((Q,ue)=>{let ce=Ad(me.current,ue.phase,Q),ie=typeof Q?.status=="number"?Q.status:void 0;$e(`${ue.phase}_error`,{errorCode:`${ue.phase}_failed`,status:ie});let de=ue.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:de}),(0,We.jsx)(a,{color:l.dim,children:`details: ${ce}`})]})),U(null)},[$e,s]),st=(0,be.useRef)(0),Xt=(0,be.useCallback)((Q,ue,ce)=>{try{let ie=Xr(mt,"tcg",me.current??"unknown","bifurcation");gs(ie,{recursive:!0}),_d(Xr(ie,`${Q}.json`),JSON.stringify({request_id:me.current,ref:ce,...ue},null,2))}catch{}},[]),Rt=Rd({scenarios:t.state?.scenarios??[],model:n.model,sessionId:i.sessionId,resolveAuth:Re,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 ue=t.state?.scenarios??[];if(ue.length!==0&&ge.current!==Q){ge.current=Q;try{let ce=Xr(mt,"tcg",Q);gs(ce,{recursive:!0}),_d(Xr(ce,"request.json"),JSON.stringify({request_id:Q,objective:t.state?.objective,headline:t.state?.headline,scenarios:ue,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,ue=1500)=>{$(Q),K.current&&clearTimeout(K.current),K.current=setTimeout(()=>{$(null),K.current=null},ue)},[]);(0,be.useEffect)(()=>()=>{K.current&&clearTimeout(K.current)},[]);let $t=(0,be.useCallback)((Q,ue)=>{let ce=o.getResolver();if(!ce)return{ok:!1,error:"Not logged in \u2014 use /login"};let ie=hd({env:o.creds.getDefaultEnv(),resolver:ce,projectId:Q??n.project_id??void 0,folderId:ue??n.folder_id??void 0,log:(de,Te,dt,I)=>i.log(de,Te,"",ms(I??{}))});return ie.ok?{ok:!0,conn:ie.conn}:{ok:!1,error:ie.error}},[o,n,i]),Oe=(0,be.useRef)(!1),Le=(0,be.useRef)(null),[zt,Ne]=(0,be.useState)(!1),Kt=(0,be.useCallback)((Q,ue,ce,ie,de)=>{let Te=process.cwd(),{paths:dt,promptText:I}=Ed(Q,Te);return wc({promptText:I,filePaths:dt,cwd:Te,scenarios:t.state?.scenarios??[],isRefine:ue,conn:ce,deps:{validate:Sc,upload:(L,Y,q)=>Rc(L,Y,q,{signal:de}),buildMappings:Tc},onValidated:ie})},[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 Cr=(0,be.useCallback)(async Q=>{U(null),F(null),re(!1);let ue=Q.trim();if(!ue)return;if(ue.startsWith("/")){pe.current(ue),ae(L=>L+1);return}let ce=n.project_id??null,ie=n.folder_id??null;if(p){let L=await p();if(L)ce=L.projectId,ie=L.folderId;else if(x){let Y=x.load();ce=Y.project_id??ce,ie=Y.folder_id??ie}}else if(x){let L=x.load();ce=L.project_id??ce,ie=L.folder_id??ie}if(!ce||!ie){F("Set a project and folder first \u2014 use /config");return}let de=$t(ce,ie);if(!de.ok){U(de.error);return}if(Oe.current)return;Oe.current=!0;let Te=new AbortController;Le.current=Te;let dt=de.conn,I;try{I=await Kt(ue,!1,dt,()=>{s((0,We.jsx)(b,{marginTop:1,children:(0,We.jsx)(a,{color:l.generateAccent,bold:!0,children:`\u276F ${ue}`})})),Ne(!0)},Te.signal)}catch(L){if(L instanceof _i){F(L.errors.join(`
8
+ `));return}if(Pd(L))return;He(L,{phase:"upload"});return}finally{Oe.current=!1,Ne(!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),[]),Er=(0,be.useCallback)(async Q=>{let ue=$t();if(!ue.ok){U(ue.error);return}if(Oe.current)return;Oe.current=!0;let ce=new AbortController;Le.current=ce;let ie;try{ie=await Kt(Q,!0,ue.conn,()=>{s((0,We.jsx)(a,{color:l.generateAccent,bold:!0,children:`\u276F ${Q}`})),st.current+=1,$e("tcg_refine",{turnIndex:st.current}),Ne(!0)},ce.signal)}catch(de){if(de instanceof _i){F(de.errors.join(`
9
+ `));return}if(Pd(de))return;He(de,{phase:"upload"});return}finally{Oe.current=!1,Ne(!1),Le.current===ce&&(Le.current=null)}if(!ce.signal.aborted){for(let de of ie.warnings)e.emitFeedback("ok","/generate",de,void 0,l.generateAccent);try{await t.chat(ie.promptText,{mappings:ie.mappings,attachments:ie.attachments})}catch(de){He(de,{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(ue){He(ue,{phase:"chat"})}finally{Oe.current=!1}}},[s,t,He]),hr=(0,be.useCallback)(Q=>{let ue=ko(Q);if(ue?.command==="view"){let ce=Q.trim().split(/\s+/).slice(1)[0];if(t.state.scenarios.length===0){e.emitFeedback("ok","/view","(no generation yet)");return}let ie=xd(ce);if(ie.level==="cases"&&ie.scenarioIdx>=t.state.scenarios.length){e.emitFeedback("error","/view",`No scenario S${ie.scenarioIdx+1}`);return}e.openBrowse(ie);return}if(ue?.command==="save"){let ce=t.state.scenarios;if(ce.length===0){e.emitFeedback("error","/save","Nothing to save yet.");return}let ie=wd(ce,e.excluded),de=ie.reduce((L,Y)=>L+(Y.test_cases??[]).filter(Ut).length,0);if(de===0){e.emitFeedback("error","/save",Sd(ce,e.excluded)===0?"All cases removed \u2014 nothing to save.":"No functional test cases to save.");return}let Te={...t.state,scenarios:ie},dt=Q.trim().split(/\s+/).slice(1)[0],I=dt?Tb(process.cwd(),dt):process.cwd();re(!0),e.freezeTcgArtifact(),(async()=>{let L=ie.flatMap(le=>(le.test_cases??[]).filter(Ut)),Y=Date.now()+3e4;for(;Date.now()<Y&&L.some(le=>Rt.getStatus(le.id)==="pending");)await new Promise(le=>setTimeout(le,250));let q=new Map;for(let le of L)q.set(le.id,Rt.getStatus(le.id)==="done"?Rt.getResult(le.id):void 0);t.end();let Z=0,Se=le=>{let St=q.get(le.id);return St?gc(St,le):(Z++,hc(le))};try{let le=await bc(Te,I,{},Se);$e("tcg_save",{savedCount:le.paths.length,fellBack:Z})}catch(le){e.emitFeedback("error","/save",`Save failed: ${le.message}`);return}let Je=`test case${de===1?"":"s"}`;e.emitFeedback("ok","/save",Z>0?`Saved ${de} ${Je} \xB7 ${Z} fell back to raw steps.`:`Saved ${de} ${Je}.`)})();return}ue?.command==="new"&&re(!1),u(Q)},[u,e,t,Rt,$e]);pe.current=hr;let Tt=(0,be.useCallback)(Q=>{m(Q),ae(ue=>ue+1)},[]),br=(0,be.useCallback)(Q=>{let ue=c==="generate"&&Q==="run",ce=c==="run"&&Q==="generate",ie=bd({requestId:t.requestId,isSessionClosed:t.isSessionClosed,turnActive:t.turnActive,saved:te}),de=vd({isRunning:e.runner.isRunning,hasLiveResults:e.runner.lastRunEnd!=null});return ue&&ie?(e.openSwitchConfirm("run"),!1):ce&&de?(e.openSwitchConfirm("generate"),!1):(Tt(Q),!0)},[c,t.requestId,t.isSessionClosed,t.turnActive,te,e,Tt]),Ir=(0,be.useCallback)(async Q=>{c==="generate"?(e.freezeTcgArtifact(),await t.end().catch(()=>{}),t.reset(),re(!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"})]}))),Tt(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,Tt]),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:Cr,onRefine:Er,onClarificationAnswer:gr,onSlash:hr,onClearError:Kr,flashComposeHint:ut,setInputClearSeq:ae,setChatMode:m,setTcgError:U,setTcgValidationError:F,generateSaved:te,requestSwitch:br,confirmSwitch:Ir,cancelGenerate:vr,bifurcation:Rt,tcgLog:$e}}var Gt=D(Ie(),1);function Po(e){return e.level==="cases"?{level:"cases",scenarioIdx:e.scenarioIdx,caseIdx:0,cursor:0}:{level:"scenarios",scenarioIdx:0,caseIdx:0,cursor:0}}var Eb=(e,t)=>Math.max(0,Math.min(t,e));function hs(e,t,r){switch(t.type){case"open":return Po(t.target);case"move":{let n=e.level==="scenarios"?r.length-1:e.level==="cases"?(r[e.scenarioIdx]??1)-1:0;return{...e,cursor:Eb(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 Ld(e){let[t,r]=(0,Gt.useState)(null),[n,o]=(0,Gt.useReducer)((p,x)=>hs(p,x,e),Po({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 Do=D(Ie(),1);function Bd(){return{committedChat:0,committedThinking:0,prevTurnActive:!1}}function $d(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 Ib(e){return e.kind==="thinking-summary"?(0,bs.jsx)(a,{color:l.dim,children:e.text}):(0,bs.jsx)(kc,{text:e.text})}function Od(e,t,r){let n=(0,Do.useRef)(Bd());(0,Do.useEffect)(()=>{let{items:o,next:i}=$d(n.current,e,t);n.current=i;for(let s of o)r(Ib(s))})}var Xe=D(Ie(),1);import{readFileSync as Ab,writeFileSync as _b,renameSync as Pb,mkdirSync as Db}from"fs";import{dirname as Lb}from"path";var vs=1,Md=()=>({schemaVersion:vs,numStartups:0,perHint:{}}),Lo=class{constructor(t=Us){this.path=t;this.data=this.read()}data;read(){try{let t=JSON.parse(Ab(this.path,"utf-8"));return t.schemaVersion!==vs?Md():{schemaVersion:vs,numStartups:typeof t.numStartups=="number"?t.numStartups:0,perHint:t.perHint??{}}}catch{return Md()}}write(){try{Db(Lb(this.path),{recursive:!0});let t=`${this.path}.tmp`;_b(t,JSON.stringify(this.data,null,2)+`
10
+ `),Pb(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 Bb,writeFileSync as $b,renameSync as Ob,mkdirSync as Mb}from"fs";import{dirname as Nb}from"path";var Nd=1,jb=3600*1e3;function jd(e,t=Date.now()){return e!==null&&t-e.fetchedAt<jb}function Vd(e,t=pi(e)){try{let r=JSON.parse(Bb(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 Fd(e,t,r=pi(e)){try{Mb(Nb(r),{recursive:!0});let n={wrapperVersion:Nd,writtenByVersion:xt,fetchedAt:Date.now(),catalog:t},o=`${r}.tmp`;$b(o,JSON.stringify(n,null,2)+`
12
+ `),Ob(o,r)}catch(n){process.stderr.write(`[hints] Failed to save catalog cache: ${n instanceof Error?n.message:String(n)}
13
+ `)}}var Vb=5e3;async function Ud(e){let t=new AbortController,r=setTimeout(()=>t.abort(),Vb);try{let o=`${Ge(e.env).controllerBaseUrl}/public/hints/catalog?clientVersion=${encodeURIComponent(xt)}&env=${e.env}`,i=await Ks(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 Bo=D(Qi(),1);function qd(e,t=xt){let r=Bo.default.coerce(e??"");if(!r)return!0;let n=Bo.default.coerce(t);return n?Bo.default.gte(n,r):!0}var Fb={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 Hd(e,t){let r=[],n=!0;for(let o of e){let i=Fb[o];if(!i){r.push(o),n=!1;continue}i(t)||(n=!1)}return{pass:n,unknown:r}}var Ub=3,qb=(e,t)=>e==="both"||e===t;function Hb(e,t,r){return e.boost?t.shownCount(e.id)<e.boost.maxShows&&r<Date.parse(e.boost.until):!1}var Gb=e=>Number.isFinite(e)?1:Ub;function Wb(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 Gd(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(!qd(p.minVersion)){u.push({id:p.id,reason:"min_version"});continue}let x=Hd(p.relevance,i);if(x.unknown.length>0){u.push({id:p.id,reason:"unknown_predicate"});continue}if(!x.pass||!qb(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=Hb(p,r,o),m=(c?p.boost.weight:p.weight)*Gb(r.sessionsSince(p.id));f.push({hint:p,weight:m,boosted:c})}let g=Wb(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 Wd(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 Xd(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 Lo),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 Re=Vd(e.env);g.current={catalog:Re?.catalog??null,fetchedAt:Re?.fetchedAt??0}}let F=g.current,H=jd(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 Re=e.env;(async()=>{let me=await Ud({env:Re});me.status==="ok"&&(Fd(Re,me.catalog),m.current===Re&&(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(Re=>Re.id))),!(p.current!==e.chatMode)&&w.current!==null)return;p.current=e.chatMode;let ae=Wd(e.log),te=e.rng??Math.random,re=B(),K={config:e.config,tokenValid:e.tokenValid,numStartups:U.numStartups,platform:process.platform,sessionUsedGenerate:e.sessionUsedGenerate},pe=Gd({catalog:$,store:U,mode:e.chatMode,now:re,predicateCtx:K,rng:te});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),ae.shown({id:pe.footer.id,category:pe.footer.category,surface:"footer",boosted:pe.boosted})),f.current||(f.current=!0,pe.skipped.forEach(Re=>ae.skipped(Re)))},[e.enabled,e.ready,e.chatMode,e.env,n]),{footerHint:t}}var zd=D(Ie(),1);import{readdir as Xb}from"fs/promises";import{join as zb,relative as Kb,extname as Yb}from"path";var Jb=new Set(["node_modules",".git"]),Qb=e=>e.startsWith("output-");async function $o(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 Xb(f,{withFileTypes:!0})}catch{return}for(let p of w){if(s.length>=n)return;if(p.name.startsWith(".")||Jb.has(p.name)||Qb(p.name))continue;let x=zb(f,p.name);if(p.isDirectory())await u(x,g+1);else if(p.isFile()){if(!ro.has(Yb(p.name).toLowerCase()))continue;let c=Kb(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 Kd({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,zd.useCallback)(x=>$o(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:Co("","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 tf=D(Ie(),1);var ot=D(G(),1);function Zb(e){return e?`[${e[0].toUpperCase()}]`:""}var ev=8;function Oo({scenarios:e,headline:t,activeSid:r}){let n=e.slice(0,ev),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:Zb(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),Yd=24;function tv(e){let t=Math.max(0,Math.min(100,e)),r=Math.round(t/100*Yd);return{filled:"\u2588".repeat(r),empty:"\u2591".repeat(Yd-r)}}function Jd({pct:e}){let t=tv(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 Qd=D(Ie(),1);var er=D(G(),1);function Zd(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 ef({state:e,history:t,turnActive:r,busy:n=!1,onClarificationAnswer:o,onClearError:i,onRefine:s,onSlash:u}){let f=(0,Qd.useCallback)(w=>$o(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=Zd(w,r);p.kind==="slash"?u?.(p.text):p.kind==="refine"&&s?.(p.text)},history:t,noHistory:!0,accent:l.generateAccent,commands:Co("","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 rf({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,tf.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)(Cc,{thinking:c,expanded:w,thinkingDone:x})}),s&&(0,At.jsx)(b,{marginLeft:2,children:(0,At.jsx)(Jd,{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)(Oo,{scenarios:e.scenarios,headline:e.headline,activeSid:null}),(0,At.jsx)(ef,{state:e,history:r,turnActive:s,busy:u,onClarificationAnswer:n,onClearError:i,onRefine:f,onSlash:g})]})}var cf=D(Ie(),1);var it=D(G(),1);function rv(e,t){return(e.test_cases??[]).some(r=>!t.has(r.id))}function nf({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=rv(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 of({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 jo=D(Ie(),1);function Mo(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 sf(e,t,r,n){let o=Math.max(20,n),i=[];if(r){for(let u of Mo(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 Mo(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}. `;Mo(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=" ";Mo(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),nv=7;function ov(e){return e==="text"||e==="step"?void 0:l.dim}function af({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(re=>({step:re.objective,expected:""})):mc(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}=$r(),P=Math.max(20,(m?.columns??80)-4),U=Math.max(3,(m?.rows??24)-nv),B=sf(s,x,c,P),[F,H]=(0,jo.useState)(0);(0,jo.useEffect)(()=>{H(0)},[s?.id]);let $=No(F,B.length,U);Be((re,K)=>{if(K.upArrow){H(pe=>No(pe-1,B.length,U));return}if(K.downArrow){H(pe=>No(pe+1,B.length,U));return}});let z=B.slice($,$+U),te=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((re,K)=>(0,Ye.jsxs)(a,{color:ov(re.tone),children:[re.accent?(0,Ye.jsx)(a,{color:l.generateAccent,children:re.accent}):null,re.text]},$+K))}),(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${te}`})]})}var Vo=D(G(),1);function lf({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,cf.useReducer)((c,m)=>hs(c,m,f),Po(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,Vo.jsx)(nf,{scenarios:e,cursor:c,excluded:n})}return g.level==="cases"?(0,Vo.jsx)(of,{scenario:x,scenarioIdx:g.scenarioIdx,cursor:g.cursor,excluded:n}):(0,Vo.jsx)(af,{scenario:x,scenarioIdx:g.scenarioIdx,caseIdx:g.caseIdx,excluded:n,getStatus:s,getResult:u})}var Fo=D(G(),1);function uf({tcg:e,gm:t,history:r,tuiConfig:n,browse:o}){return o?(0,Fo.jsx)(lf,{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,Fo.jsx)(Kd,{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,Fo.jsx)(rf,{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 df=D(Ie(),1);var Wt=D(G(),1);function iv({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 ff({message:e,onConfirm:t,onCancel:r,confirmLabel:n="Yes, end"}){let[o,i]=(0,df.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)(iv,{message:e,confirmLabel:n,choice:o})}var sv=null;function pf(e){sv=e}import{join as tr,resolve as dv}from"path";var Uo=D(G(),1);function mf({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,Uo.jsxs)(b,{children:[(0,Uo.jsxs)(a,{bold:!0,color:s,children:[u," ",f]}),(0,Uo.jsxs)(a,{color:l.dim,children:[" ","\xB7 ",t," steps \xB7 ",g,w,p]})]})}var hf=D(G(),1);function gf(){return(0,hf.jsx)(a,{color:l.dim,children:"Continue below \xB7 /new fresh session \xB7 /summary view details \xB7 Ctrl+C exit"})}var qo=D(Ie(),1);import{readFileSync as uv}from"fs";var wt=D(Ie(),1);function av(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*bf(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=av(o.slice(0,u));if(o=o.slice(u+2),f&&(yield f,f.type==="done"))return}}}finally{await r.cancel().catch(()=>{})}}var cv=50,lv=3;function vf(){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+lv))})},cv);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 bf({...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 xf({resolve:e,hostIsTTY:t}){let r=vf(),n=(0,qo.useRef)(0),o=(0,qo.useCallback)(i=>{if(!t())return;let s=e();if(!s)return;let u;try{u=uv(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 Ho=e=>({kind:"login",env:e}),xs=e=>({kind:"switch",env:e}),yf=(e,t)=>e?{kind:"switch",env:t}:{kind:"logout"};function Sf(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 wf(e){return wr()?[{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 Rf(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 ys(e){if(!wr())return[];let t=e.tuiConfig.mobile;return[{id:"config-mobile-emulator",label:"Emulator",type:"submenu",children:[{id:"config-auto-grant-permissions",label:"Auto Grant Permissions",type:"select",currentValue:t?.auto_grant_permissions===!1?"off":"on",options:[{label:"on \u2014 grant Android runtime permissions at session start (default)",value:"on"},{label:"off \u2014 leave permission dialogs on screen",value:"off"}],onValue:r=>{(r==="on"||r==="off")&&(e.setMobile({auto_grant_permissions:r==="on"}),e.emitFeedback("ok","/config set-auto-grant-permissions",r))}}]},{id:"config-mobile-simulator",label:"Simulator",type:"submenu",children:[{id:"config-auto-accept-alerts",label:"Auto Accept Alerts",type:"select",currentValue:t?.auto_accept_alerts===!1?"off":"on",options:[{label:"on \u2014 accept iOS alerts, incl. permission prompts (default)",value:"on"},{label:"off \u2014 leave alerts on screen",value:"off"}],onValue:r=>{(r==="on"||r==="off")&&(e.setMobile({auto_accept_alerts:r==="on"}),e.emitFeedback("ok","/config set-auto-accept-alerts",r))}}]}]}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)"},{key:"Auto grant permissions (emulator)",value:e?.auto_grant_permissions===!1?"off":"on"},{key:"Auto accept alerts (simulator)",value:e?.auto_accept_alerts===!1?"off":"on"}]}}function kf(e){return e.isRunning?"refused-running":e.hasRuns?e.isTesting&&!e.hasName?"needs-name":"proceed":"no-runs"}async function Cf(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 zC({localMode:e=!1,codeExport:t,codeLanguage:r,skipCodeValidation:n,updatePromise:o,migrationResult:i,sessionName:s,initialChatMode:u,initialObjective:f,initialGenerateLimits:g}={}){Vs();let w=(0,T.useRef)(new Yn),[p,x]=(0,T.useState)(0),c=w.current,[m]=(0,T.useState)(()=>new Vr),P=(0,T.useRef)(0),U=(0,T.useCallback)(()=>`msg-${++P.current}`,[]),[B,F]=(0,T.useState)(!1),[H,$]=(0,T.useState)(null),[z,ae]=(0,T.useState)(!1),[te,re]=(0,T.useState)(0),[K,pe]=(0,T.useState)(!1),[Re,me]=(0,T.useState)(null),[$e,He]=(0,T.useState)(null),st=(0,T.useRef)(null),[Xt,Rt]=(0,T.useState)(null),[ge,ut]=(0,T.useState)(null),[$t,Oe]=(0,T.useState)(Qn()),[Le,zt]=(0,T.useState)(null),[Ne,Kt]=(0,T.useState)([]),[mr,Cr]=(0,T.useState)(!1),[Kr,Er]=(0,T.useState)(!1),[gr,hr]=(0,T.useState)(null),[Tt,br]=(0,T.useState)(null),[Ir,vr]=(0,T.useState)(null),[Q,ue]=(0,T.useState)(null),ce=(0,T.useRef)(null),ie=(0,T.useRef)(null),de=(0,T.useRef)(0),Te=(0,T.useRef)(null),dt=(0,T.useRef)(!1),I=(0,T.useRef)(null),L=(0,T.useRef)(Da()),Y=(0,T.useRef)(null),q=(0,T.useRef)(!1),Z=(0,T.useRef)(""),Se=(0,T.useRef)(null),Je=(0,T.useRef)(null),le=(0,T.useRef)({}),St=(0,T.useRef)(null),{append:bt}=Ws(),Ce=(0,T.useCallback)(d=>bt((0,k.jsx)(b,{paddingX:1,children:d})),[bt]),[rr,Ot]=(0,T.useState)("booting"),[Ef,If]=(0,T.useState)([]),[Af,Go]=(0,T.useState)(!1),[Ss,_f]=(0,T.useState)(!1),[kn,Pf]=(0,T.useState)("chat"),[Mt,xr]=(0,T.useState)(null),[Cn,ws]=(0,T.useState)(null),[Yr,Rs]=(0,T.useState)(!1),[Jr,En]=(0,T.useState)(!1),Ts=(0,T.useRef)(()=>{}),Df=(0,T.useCallback)((d,h)=>Ts.current(d,h),[]),xe=gd({log:Df});Od(xe.state,xe.turnActive,Ce);let Wo=(0,T.useRef)(!1),nr=(0,T.useCallback)(()=>{Wo.current||xe.state.scenarios.length!==0&&(Wo.current=!0,Ce((0,k.jsx)(Oo,{scenarios:xe.state.scenarios,activeSid:null})))},[xe.state.scenarios,Ce]);(0,T.useEffect)(()=>{xe.isSessionClosed&&nr()},[xe.isSessionClosed,nr]);let[In,Qr]=(0,T.useState)(null),[Pe,Xo]=(0,T.useState)({headless:!1,maxSteps:50,timeout:0,cdpEndpoint:"",wsEndpoint:"",useCft:!1}),Lf=gi(),Bf=gi(Hs),y=Zu(),An=ed(),kt=(0,T.useMemo)(()=>({auth:{initResolver:d=>y.initResolver(d,(h,S,R,v)=>w.current.log(h,S,R,v)),getResolver:()=>y.getResolver(),getBasicAuth:()=>y.getBasicAuth(),getToken:()=>y.getToken()},getSession:()=>w.current,log:(d,h,S,R)=>w.current.log(d,h,S,R),state:{getTmsCredsCache:()=>Le,setTmsCredsCache:zt,identityServicesRef:ie,screenshotQueueRef:ce},exit:{registerCleanup:Vt,setExitRemoteLogger:ra},options:{skipScreenshotQueue:e}}),[y.initResolver,y.getResolver,y.getBasicAuth,y.getToken,Le,e]),$f=(0,T.useCallback)((d,h,S,R)=>{let v=ce.current;if(!v)return;if(Te.current&&R){L.current.track(La(Te.current.packTestDir,R,v,(j,N,ee,we)=>c.log(j,N,ee,we)));return}let E=de.current+h;Ba(c.sessionDir,E,d,v,(j,N,ee,we)=>c.log(j,N,ee,we),S)},[c]),Of=(0,T.useCallback)((d,h,S)=>{c.logStep(d,h,S)},[c]),Mf=(0,T.useCallback)(d=>St.current?.setStepText(d),[]),Nf=(0,T.useCallback)(()=>St.current?.setStepComplete(),[]),{describe:Zr,onDescribe:jf,creditsRef:zo}=xf({hostIsTTY:()=>!!process.stdout.isTTY,resolve:()=>{let d=y.getResolvedBasicAuth();if(!d)return null;let h=Ge(y.creds.getDefaultEnv());return{authHeader:Si(d.username,d.access_key),sessionId:c.sessionId,controllerBaseUrl:h.controllerBaseUrl}}}),O=Ra($f,Of,Mf,Nf,jf);(0,T.useEffect)(()=>{O.isRunning||Zr.stop()},[O.isRunning,Zr.stop]);let[C,Ee]=(0,T.useState)(()=>m.load()),A=Bu({getDefaults:()=>m.getMobile(),setDefaults:d=>{m.setMobile(d),Ee(m.load())},resolveAppId:async(d,h)=>{let S=await y.resolveBasicAuth().catch(()=>null),R=S?{username:S.username,access_key:S.access_key}:y.getResolvedBasicAuth();if(!R?.username||!R.access_key)throw new Error("Log in to use an app id, or choose a local build.");let v=Ko.current,E=await ia({appId:d,baseUrl:an(ye),auth:{username:R.username,accessKey:R.access_key},onProgress:h,...v?{accepts:v==="emulator"?[".apk"]:[".zip"]}:{}});return{name:E.name,fromStore:E.fromStore}},appLabelFor:async d=>{try{return(await new oa().find(d))?.name}catch{return}}}),Ko=(0,T.useRef)(null);Ko.current=A.kind;let Ar=Fs(C.mobile?.tui_target,C.mobile?.default_target?.kind),_r=Ar.kind==="emulator"||Ar.kind==="simulator",Vf=(0,T.useCallback)(async d=>{let h=process.cwd(),S=await qu(h,d),R=await Promise.all(S.map(async j=>{let N=await Hu(tr(h,j),A.target);return{kind:"artifact",value:j,label:j,selectable:Uu(N),...N.state==="compatible"?{}:{reason:N.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[...R,...E]},[A.apps,A.target]),ks=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,T.useRef)(null),Yo=(0,T.useRef)(null),[ft,Cs]=(0,T.useState)(null),Pr=(0,T.useCallback)(d=>`Target is locked for this session \u2014 it already ran on ${d.label}. Use /new to start a fresh session and switch.`,[]),Ff=(0,T.useRef)(new Map),Es=(0,T.useRef)(new Set),Is=(0,T.useRef)(null),[Dr,As]=(0,T.useState)(null),[,Uf]=(0,T.useState)(0),vt=(0,T.useCallback)(()=>Uf(d=>d+1),[]),[V,je]=(0,T.useState)(null),Lr=y.creds.getActiveProfile(),ye=y.creds.getDefaultEnv(),qf=Gu({auth:y,env:ye,kind:()=>Ko.current}),_t=(0,T.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}),Ee(m.load())},[y.creds,m]),Jo=(0,T.useCallback)(async(d,h)=>{let S=y.getResolver();if(!S)return null;let R=S.cached??await S.resolve();if(!R)return null;let v=Ge(h),E=new cn(v.tmsBaseUrl,R.username,R.access_key);try{let N=(await E.listProjects()).find(we=>we.name==="KaneAI Generated");if(N)return{id:N.project_id,name:N.name};let ee=await E.createProject("KaneAI Generated");return{id:ee.id,name:ee.name}}catch{return null}},[y]),Qo=(0,T.useCallback)(async(d,h)=>{let S=y.getResolver();if(!S)return null;let R=S.cached??await S.resolve();if(!R)return null;let v=Ge(d),E=new cn(v.tmsBaseUrl,R.username,R.access_key);try{let N=(await E.listFolders(h)).find(we=>we.name==="Untitled");if(N)return{id:N.id,name:N.name};let ee=await E.createFolder(h,"Untitled");return{id:ee.id,name:ee.name}}catch{return null}},[y]);(0,T.useEffect)(()=>{z||(c.start({model:C.model,environment:ye,profile:Lr}),s&&c.setSessionName(s),ae(!0))},[c,z,C.model,ye,Lr,s]);let _s=(0,T.useRef)(!1);(0,T.useEffect)(()=>{if(!z||_s.current)return;_s.current=!0;let d=s?[{label:"session",value:s},{label:"test",value:mi(tr(process.cwd(),".testmuai","tests",`${s}_test.md`))},{label:"output",value:mi(tr(process.cwd(),".testmuai","tests",`output-${s}`))}]:[{label:"session",value:"ephemeral"},{label:"note",value:"use /name <name> to persist this session"}];Ce((0,k.jsx)(bi,{title:"Recording",titleColor:"#ff9500",rows:d}))},[z,s,Ce]);let Ps=(0,T.useRef)(!1);(0,T.useEffect)(()=>{if(!B||Ps.current||!z)return;Ps.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,T.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,T.useCallback)(d=>{Ce((0,k.jsx)(bi,{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>"})]})}]}))},[Ce]),Pn=(0,T.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(),R=await ba({creds:y.creds,config:m,profile:h,env:S,tmsCreds:{username:d.username,access_key:d.access_key},isLocal:e,log:(v,E,j,N)=>c.log(v,E,j,N),onAnnounce:_n});return R.status==="ok"?{projectId:R.projectId,folderId:R.folderId}:null},[ir,m,c,y.creds,e,_n]),he=(0,T.useCallback)(d=>{let h=U(),S={...d,id:h};Ce((0,k.jsx)(_u,{entry:S}))},[U,Ce]),M=(0,T.useCallback)((d,h,S,R,v)=>{Ce((0,k.jsx)(cd,{status:d,command:h,message:S,details:R,accentColor:v})),h==="/save"&&d==="ok"&&Ce((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."]})}))},[Ce]),Ds=(0,T.useRef)(()=>{}),sr=Ld(xe.state.scenarios.map(d=>(d.test_cases??[]).length)),Hf=(0,T.useCallback)(async()=>{let d=await Pn();return Ee(m.load()),d},[Pn,m]),Pt=Dd({tcg:xe,initialChatMode:u,tuiConfig:C,auth:y,session:c,runner:O,appendStatic:Ce,handleInput:d=>Ds.current(d),freezeTcgArtifact:nr,rearmArtifactFreeze:()=>{Wo.current=!1},openSwitchConfirm:d=>Qr({reason:"switch",to:d}),emitFeedback:M,excluded:sr.excluded,openBrowse:sr.open,initialGenerateLimits:g,ensureProjectAndFolder:Hf,config:m});Ts.current=Pt.tcgLog;let{chatMode:Me,tcgError:pv,tcgValidationError:mv,composeIdleHint:gv,inputClearSeq:Gf,handleGenerateSubmit:Wf,flashComposeHint:Dn,setTcgError:hv}=Pt,Xf=C.hints_enabled!==!1&&process.env.KANEAI_HINTS_DISABLED!=="1"&&!!process.stdout.isTTY&&!!process.stdin.isTTY&&process.env.KANE_SCREEN_READER!=="1",Ls=(0,T.useRef)(!1);Me==="generate"&&(Ls.current=!0);let{footerHint:zf}=Xd({enabled:Xf,ready:rr==="ready",env:ye,config:C,tokenValid:y.tokenValid,chatMode:Me,sessionUsedGenerate:Ls.current,log:(d,h,S,R)=>w.current.log(d,h,S,R)}),yr=(0,T.useCallback)(async(d,h,S)=>{let R=A.device,v=S??(_r?"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:!!R,app_bound:!!R?.app_package,mobile_phase:A.phase,parked:!!or.current});let N=j?Mu(d):{objective:d,token:null};if(j&&N.token&&!N.objective){he({type:"error",text:`@${N.token}: add an objective after the app token.`});return}if(!ft&&!N.token&&!h&&!Es.current.has(d)){let fe=y.getResolvedBasicAuth(),_e=fe?null:await y.getToken(),Ve=fe?Si(fe.username,fe.access_key):_e?`Bearer ${_e}`:null;if(Ve){let Ze=await Xu({objective:d,sessionTarget:v,controllerBaseUrl:Ge(ye).controllerBaseUrl,authHeader:Ve,cache:Ff.current});c.log("info","CLASSIFY_VERDICT","Objective classified",{session_target:v,target:Ze?.target??null,confidence:Ze?.confidence??null});let Lt=zu(Ze,v);if(Lt.kind==="mismatch"){As({objective:d,url:h,suggested:Lt.suggested,verdict:Lt.verdict});return}}}if(j&&!R){or.current=d,he({type:"info",text:"Setting up mobile device\u2026"}),A.begin();return}let ee=R;if(j&&N.token){let fe=ca(N.token);if(!fe){he({type:"error",text:`@${N.token}: ${aa}`});return}let _e=await A.bindAppForRun(fe);if(!_e.ok){he({type:"error",text:`@${N.token}: ${_e.error}`});return}ee=_e.device}else if(j){if(!R?.app_package){or.current=d,he({type:"info",text:"Choose the app under test\u2026"}),A.requestAppSource();return}let fe=await A.validateBinding();if(!fe.ok){or.current=d,he({type:"info",text:fe.reason}),fe.step==="device"?A.begin("reinit"):A.requestAppSource();return}}let we=j?N.objective:d,ke=q.current?null:Ma({flag:h,configDefault:C.default_url}),Qe=tc({objective:we,globalDir:tr(mt,"variables"),localDir:tr(process.cwd(),".testmuai","variables")}),Sr=c.nextRunIndex();de.current=Sr,Z.current=Qe.auteurObjective,zo.current=0,c.logRunStart(Sr,Qe.auteurObjective,ke??""),c.setFirstRun(Qe.auteurObjective,ke??"");let Vn=y.getResolvedBasicAuth(),Dt=Vn,Nt=null;if(!Dt&&(Nt=await y.getToken(),!Nt)){he({type:"error",text:"Not authenticated. Run /login first."});return}let Br={basicAuth:Vn??null,token:Nt,resolver:y.getResolver(),resolvedCreds:null};Se.current=Br;let en=y.creds.getActiveProfile()??"default",tn=y.creds.getDefaultEnv();ha(y.creds,m,en,tn,(fe,_e,Ve,Ze)=>c.log(fe,_e,Ve,Ze));let Fn=m.load();if(Ee(Fn),j){if(!ee){or.current=d,he({type:"info",text:"Setting up mobile device\u2026"}),A.begin();return}if(!ee.app_package){or.current=d,he({type:"info",text:"Choose the app under test\u2026"}),A.requestApp();return}}let Ue;try{Ue=await Ya(E,{prepareDevice:async()=>{let fe=N.token??ee.app_package,_e=!N.token&&fe&&ee.udid?await Ou({udid:ee.udid,app:fe,runnerGen:O.sessionGen}):null,Ve=Yo.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 ua({...ee.udid?{device:ee.udid}:{},...ee.platform?{platform:ee.platform}:{},...N.token?{app:N.token}:ee.app_package?{app:ee.app_package}:{},defaults:C.mobile,interactive:!1,onProgress:di=>Rt(di),...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&&(Yo.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 fe=await An.ensureChrome(ke??void 0);c.logChromeLaunch(fe.port,fe.cdpEndpoint);let _e=wa({headless:Pe.headless,cdpEndpoint:fe.cdpEndpoint,chromePid:fe.process.pid});return _e&&(St.current=_e,Vt("marker-overlay",()=>_e.kill())),{cdpEndpoint:fe.cdpEndpoint,instance:fe,tempDir:null}}})}catch(fe){let _e=E==="device"?fe instanceof Error?fe.message:String(fe):ya(fe);he({type:"error",text:_e});return}finally{Rt(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 fe=await Pn(),_e=m.load();Ee(_e);let Ve=Ge(ye),Ze=Dt?{username:Dt.username,access_key:Dt.access_key}:await ir();if(Ze){let Lt=await sc({tmsBaseUrl:Ve.tmsBaseUrl,auth:{username:Ze.username,access_key:Ze.access_key},objective:Qe.auteurObjective,url:ke??"",projectId:fe?.projectId??_e.project_id??"",folderId:fe?.folderId??_e.folder_id??"",hasCustomProfile:!!C.chrome_profile_path,...Ue.kind==="device"?{mobile:ic({platform:Ue.device.platform,appId:Ue.appId,deviceName:A.target?.displayName,osVersion:A.target?.osVersion,udid:Ue.device.udid})}:{},log:(pt,di,tp,rp)=>c.log(pt,di,tp,rp)});Lt&&(c.setTestId(Lt),fe?.projectId&&c.setProjectId(fe.projectId))}}c.setAuteurVariables(Qe.auteur),Je.current=Qe;let ui=Dt&&!e?await rc({variables:Qe,auth:Dt,orgId:String((await ir())?.org_id??""),env:ye,localMode:e,log:(fe,_e,Ve,Ze)=>c.log(fe,_e,Ve,Ze)}):{};le.current=ui;let qn=Ii(tr(mt,"global-memory.md")),cr=Ii(tr(process.cwd(),".testmuai","context.md"));if(Sr===0){let fe={mode:C.mode,max_steps:Pe.maxSteps,timeout:Pe.timeout>0?Pe.timeout:void 0,target:Ja(Ue,{cdpEndpoint:Pe.cdpEndpoint||void 0,wsEndpoint:Pe.wsEndpoint||void 0}),app:Qa(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(fe)}dt.current||(dt.current=!0,Te.current=await Ca({objectiveOrName:c.sessionName??d,sessionId:c.sessionId,title:c.sessionName??d,producerVersion:xt,pid:process.pid,surfaces:ke?[ke]:void 0,packRootDir:tr(c.sessionDir,"evidence")})),I.current||(I.current=ka(Un.cdpEndpoint),I.current());let Hn=ec(Qe.auteur,Qe.auteurObjective),ep=Za({objective:Qe.auteurObjective,url:Ue.kind==="device"?void 0:ke??void 0,requireStartUrl:Ue.kind==="web"&&!q.current&&ke===null,model:C.model,chrome:Un,auth:Br,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:Ea(Te.current)});ke&&$(ke),me(null),Y.current=null,Cs({kind:j?"mobile":"web",label:Ue.kind==="device"?rn(Ue.device.target_kind==="simulator"?"simulator":"emulator"):"Desktop"}),O.startRun(ep,{environment:ye,mode:C.mode,assertionMode:C.assertion_mode,log:(fe,_e,Ve,Ze)=>c.log(fe,_e,Ve,Ze)}),re(fe=>fe+1)},[y,An,m,C,c,ye,O,he,Pe,Pn,ir,_r,ft,A.device,A.target,A.begin,A.requestApp,A.requestAppSource,A.validateBinding,A.bindAppForRun]),Ln=(0,T.useCallback)(d=>{let h=Dr;if(h){if(As(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(Es.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}),Ee(m.load()),A.reset(),he({type:"info",text:"Session target: Desktop (Chrome)"}),yr(h.objective,h.url,"web");return}Is.current=h.verdict.appHint??null,or.current=h.objective,A.begin(d==="pick"?"reinit":"confirm")}},[Dr,c,he,yr,m,A]);$u({phase:A.phase,device:A.device,requestApp:A.requestAppSource,pendingRef:or,dispatch:d=>{yr(d)},notify:he,onSettle:()=>{Is.current=null}});let Kf=(0,T.useCallback)(async d=>{let h=dv(d),S=Ga(h),R=new Yn;for(let ke of S.warnings)R.log("warn","RESOLVER_WARNING",ke);let v=y.getResolvedBasicAuth(),E=null;v||(E=await y.getToken());let j={basicAuth:v??null,token:E,resolver:y.getResolver(),resolvedCreds:null},N=ye,ee=Ge(N),we=y.creds.getActiveProfile()??"default";return{path:h,cwd:process.cwd(),opts:{},isAgent:!1,disableAskUser:!0,resolved:S,resolvedAuth:j,cliOverrides:{},environment:N,envConfig:ee,profile:we,model:"v16-alpha",creds:y.creds,configStore:m,session:R,skipGlobalRemoteLogger:!0,onAnnounce:_n}},[y,m,ye,_n]),Ae=md({buildInput:Kf,remoteLogger:null}),Zo=(0,T.useRef)(null);(0,T.useEffect)(()=>{if(O.bifurcationInfo&&O.bifurcationInfo!==Zo.current){Zo.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 ei=T.default.useRef(null),ti=T.default.useRef(0),ri=T.default.useRef(0);(0,T.useEffect)(()=>{if(O.lastRunEnd&&O.lastRunEnd!==ei.current){ei.current=O.lastRunEnd,q.current=!0;let{status:d,duration:h,summary:S,reason:R,context:v}=O.lastRunEnd,{passed:E,failed:j,total:N}=Ta(O.steps);ti.current+=N,ri.current+=h??0;let ee=O.lastRunEnd?.credits_consumed,we=ee!=null||zo.current>0?(ee??0)+zo.current:void 0;me({status:d,duration:h??0,summary:S??"",stepsPassed:E,stepsFailed:j,stepsTotal:N,reason:R,finalState:O.lastRunEnd?.final_state,creditsConsumed:we}),c.logRunEnd(de.current,d,h,S,O.lastRunEnd?.result_code);let ke=O.bifurcationInfo,Qe=ke&&!ke.isSingleFlow?ke.flows:null,Sr=ma(O.lastRunEnd,de.current,Qe),Vn=ga(O.lastRunEnd,Z.current,de.current,Sr);c.addRunResult(Vn,O.lastRunEnd?.total_runs),Ti(Te.current,O.getEvidenceState(),O.lastRunEnd);let Dt=O.lastRunEnd?.per_flow_metadata;if(ke&&!ke.isSingleFlow&&Dt&&Dt.length>1)for(let Nt=0;Nt<Dt.length;Nt++){let Br=Dt[Nt],en=O.steps[Nt],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),ui=en?.status==="failed"?"failed":"passed",qn=ke.flows[Nt]??en?.objective??Z.current;c.addFlow({runIndex:de.current,flowId:ke.flows[Nt],objective:qn,status:ui,summary:Br.summary??"",duration:Un,steps:Fn+Ue,stepsPassed:Fn,stepsFailed:Ue,reason:Br.error_message??void 0,creditsConsumed:Br.credits_consumed??void 0})}else c.addFlow({runIndex:de.current,objective:Z.current,status:d,summary:S??"",duration:h??0,steps:N,stepsPassed:E,stepsFailed:j,reason:R,creditsConsumed:O.lastRunEnd?.credits_consumed})}},[O.lastRunEnd,c,he]);let ni=(0,T.useRef)(null);(0,T.useEffect)(()=>{O.askingUser&&(ni.current=O.askingUser)},[O.askingUser]);let oi=(0,T.useRef)(null);(0,T.useEffect)(()=>{if(Re&&!O.isRunning&&O.lastRunEnd){if(oi.current===O.lastRunEnd)return;oi.current=O.lastRunEnd,Ce((0,k.jsxs)(b,{flexDirection:"column",children:[(0,k.jsx)(mf,{status:Re.status,steps:Re.stepsTotal,duration:Re.duration,creditsConsumed:Re.creditsConsumed,reason:Re.reason}),(0,k.jsx)(gf,{})]})),me(null)}},[Re,O.isRunning,O.lastRunEnd,Ce]);let Bs=(0,T.useRef)(null);(0,T.useEffect)(()=>{if(Ae.runSummary&&!Ae.running){if(Bs.current===Ae.runSummary)return;Bs.current=Ae.runSummary,(Ae.summary||Ae.links)&&Ce((0,k.jsxs)(b,{flexDirection:"column",children:[Ae.summary&&(0,k.jsx)(za,{data:Ae.summary}),Ae.links&&(0,k.jsx)(Zn,{...Ae.links,autoExit:!1})]}))}},[Ae.runSummary,Ae.running,Ae.summary,Ae.links,Ce]),(0,T.useEffect)(()=>{St.current?.setRunActive(O.isRunning)},[O.isRunning]),(0,T.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&&Y.current!==O.runError&&(Y.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,T.useCallback)(async(d={})=>{let h=Te.current;return h?(c.flushRecorder(),await Ia(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:Ka(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,R,v,E)=>c.log(S,R,v,E)})):null},[c,C]),$n=(0,T.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,T.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 R={basicAuth:d??null,token:h,resolver:y.getResolver(),resolvedCreds:S};ce.current&&(c.log("info","SCREENSHOT_UPLOAD_DRAIN","Draining screenshot queue before pipeline"),await L.current.settle(),await ce.current.drain(),c.log("info","SCREENSHOT_UPLOAD_DRAINED","Screenshot queue drained"));let v=nc({mobile:_r,session:c,env:ye,auth:R,variables:Je.current??{raw:{},auteur:{},auteurObjective:"",secretEntries:[],nonSecretEntries:[]},variableIds:le.current,projectId:C.project_id,folderId:C.folder_id,totalSteps:ti.current,totalDuration:ri.current,screenshotExtMap:ce.current?.getExtMap(),codeExport:oc({codeExport:t,codeLanguage:r,skipCodeValidation:n},C.code_export),onProgress:(N,ee,we)=>{c.log("info","EXIT_PROGRESS","Upload progress",{step:N,status:ee,detail:we}),Oe(ke=>Xa(ke,N,ee,we))},log:(N,ee,we,ke)=>c.log(N,ee,we,ke),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 ac(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 N=Ge(ye),ee=C.project_id,we=j.testcaseId&&j.shareId&&ee?Ci(N.testManagerUiUrl,ee,j.testcaseId,j.shareId):void 0,ke=j.testcaseId&&ee?Ei(N.testManagerUiUrl,ee,j.testcaseId):void 0;ut({status:"success",testUrl:we,testCaseLink:ke,codeExportDir:j.codeExportDir}),pf({shareableLink:we,testCaseLink:ke,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]),Mn=(0,T.useCallback)(async()=>{c.log("info","SESSION_RESET_START","Starting session reset via /new"),Cr(!0);let d=c.getFlows();d.length>0&&Ce((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-LE3LGFOS.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,N=h?.testcaseId;Ce((0,k.jsx)(Zn,{recordedTestPath:S?.recordedTestPath,outputDir:S?.outputDir,shareableLink:N&&h?.shareId&&j?Ci(E.testManagerUiUrl,j,N,h.shareId):void 0,testCaseLink:N&&j?Ei(E.testManagerUiUrl,j,N):void 0,codeExportDir:h?.codeExportDir,autoExit:!1}))}let R=await $n(h);R&&he({type:"info",text:_a(R)}),c.testId&&Kt(E=>[...E,{testId:c.testId,runCount:te}]),await O.shutdownRunner(),An.killChrome(),await c.finish("complete");let v=new Yn;v.start({model:C.model,environment:ye,profile:Lr??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)})}re(0),ti.current=0,ri.current=0,de.current=0,Z.current="",Je.current=null,le.current={},jn.current=0,si.current=0,ni.current=null,oi.current=null,ei.current=null,Y.current=null,q.current=!1,Zo.current=null,Cs(null),Yo.current=null,me(null),$(null),ut(null),Oe(Qn()),Cr(!1),M("ok","/new","Session reset")},[c,he,Ce,M,e,On,$n,An,O,te,C,ye,Lr,kt]),$s=(0,T.useCallback)(async()=>{switch(kf({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(Pi());return;case"proceed":await Mn();return}},[c,O,he,C.mode,Mn]),Os=(0,T.useCallback)(async()=>{await O.shutdownRunner(),await c.finish("complete"),Mr(0,"Session complete")},[c,O]),Yf=(0,T.useCallback)(async d=>{Er(!1);let h=c.testId??(Ne.length>0?Ne[Ne.length-1].testId:null);if(d&&h){c.log("info","EXIT_FEEDBACK_SUBMIT","Submitting session feedback",{choice:d});try{let S=Ge(ye),R=y.getResolvedBasicAuth();R&&await Cf({tmsBaseUrl:S.tmsBaseUrl,username:R.username,accessKey:R.access_key,testId:h,feedbackType:d,log:(v,E,j,N)=>c.log(v,E,j,N)})}catch(S){c.log("error","EXIT_FEEDBACK_FAILED","Feedback submission failed",{error:String(S)})}}else c.log("info","EXIT_FEEDBACK_SKIPPED","Feedback skipped");Os()},[ye,y,c,Os,Ne]),Nn=(0,T.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:te}])}try{let{persistRecordedSession:v}=await import("./persist-recorded-session-LE3LGFOS.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&&ue(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??(Ne.length>0?Ne[Ne.length-1].testId:null))||e){await c.finish("complete"),Mr(0,"No test ID \u2014 quick exit");return}pe(!0),Er(!0)},[c,e,On,$n,te,Ne,C]),ar=(0,T.useCallback)(async()=>{if(K)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(Pi());return}await Nn()},[K,c,C.mode,Nn]),Jf=(0,T.useCallback)(d=>{d&&c.setSessionName(d);let h=Ir;br(null),vr(null),h==="new"?Mn():Nn()},[c,Ir,Nn,Mn]);(0,T.useEffect)(()=>{if(!K)return;let d=300*1e3,h=setTimeout(async()=>{c.setUploadStatus("failed","Upload timed out after 5m"),await c.finish("complete"),Mr(0,"Upload timed out after 5m")},d);return()=>clearTimeout(h)},[K,c]);let jn=T.default.useRef(0),ii=T.default.useRef(null),si=T.default.useRef(0),ai=T.default.useRef(0),ci=T.default.useRef(null);Be((d,h)=>{if(h.ctrl&&d==="c"){if(Me==="generate"&&(xe.isStreaming||Pt.submitting)){Pt.cancelGenerate(),ai.current++,ci.current&&clearTimeout(ci.current),ci.current=setTimeout(()=>{ai.current=0},2e3),ai.current>=2&&ar();return}if(!Ae.running){if(K){si.current+=1,si.current>=2&&(c.setUploadStatus("pending","Force exit by user"),c.finish("complete"),Mr(0,"Force exit by user"));return}if(O.isRunning){O.cancelRun(),he({type:"info",text:"Run cancelled."}),jn.current++,ii.current&&clearTimeout(ii.current),ii.current=setTimeout(()=>{jn.current=0},2e3),jn.current>=2&&ar();return}ar()}}}),Be((d,h)=>{if(h.ctrl&&d==="t"&&Me==="generate"&&!xe.isStreaming){Dn("no thinking yet");return}});let Ms=T.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=>Xo(E=>({...E,...v})),deviceLabel:A.target?.displayName??null,appLabel:A.device?.app_package??null,openDevicePicker:()=>{if(ft){M("error","/config device",Pr(ft));return}xr(null),A.begin("reinit")},openAppPicker:()=>{if(ft){M("error","/config app",Pr(ft));return}if(xr(null),A.target){A.requestApp();return}A.begin("reinit")}},R={tuiConfig:C,setMobile:v=>{m.setMobile(v),Ee(m.load())},setConfigKey:(v,E)=>{m.set(v,E),Ee(m.load())},emitFeedback:M,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&&Xo(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);Xo(j=>({...j,timeout:isNaN(E)?0:E}))}},{id:"run-config-desktop",label:"Desktop",type:"submenu",children:Sf(S)},...wr()?[{id:"run-config-mobile",label:"Mobile",type:"submenu",children:wf(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 N=yf(E,j);Ft(N,kt).catch(()=>{}),v?M("ok","/logout",`Logged out: ${v.profile} [${v.env}]`):M("ok","/logout","No active profile")}).catch(()=>{M("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),N=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:N},...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 N=y.getBasicAuth(),ee=N?null:await y.getToken();if(!N&&!ee){He({text:"Not authenticated. Run /login first.",color:l.red});return}let{ControllerClient:we}=await import("./controller-client-OB4WD2C4.js"),Qe=await(N?new we(j.controllerBaseUrl,{username:N.username,accessKey:N.access_key}):new we(j.controllerBaseUrl,ee)).getCreditBalance();He({text:`Credits \u2014 available: ${Qe.available_credits}, total: ${Qe.total_credits} (${v} / ${E})`,color:l.green})}catch(N){He({text:`Balance check failed: ${N instanceof Error?N.message:String(N)}`,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??fi}]},{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:Rf(R)},...ys(R).length>0?[{id:"config-mobile",label:"Mobile",type:"submenu",children:ys(R)}]:[],{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),Ee(m.load()),M("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),Ee(m.load()),M("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"),Ee(m.load()),M("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),Ee(m.load()),M("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),Ee(m.load()),M("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){M("error","/config",`Scenario limit must be 1-20 (got ${v})`);return}m.set("generate",{...C.generate,scenario_limit:E}),Ee(m.load()),M("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){M("error","/config",`Per-scenario limit must be 1-20 (got ${v})`);return}m.set("generate",{...C.generate,per_scenario_limit:E}),Ee(m.load()),M("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}),Ee(m.load()),M("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"}),Ee(m.load()),M("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}),Ee(m.load()),M("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"}),Ee(m.load()),M("ok","/config code-export skip-validation",v)}}]}]},{id:"exit",label:"Exit",type:"action",onAction:()=>{ar()}}]},[y,m,C,he,ar,Pe,vt,M,ft,Pr,A.target,A.device,A.begin,A.requestApp]),li=(0,T.useCallback)(d=>{if(O.askingUser){let S=O.askingUser;Ce((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})})]})]})]})),ni.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=ko(d);if(h){if(!od(h.command,Me)){M("error",`/${h.command}`,`/${h.command} isn't available in ${Me==="run"?"Run":"Generate"} mode.`);return}switch(h.command){case"profiles":if(Me==="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){M("error","/config set-url","Usage: /config set-url <url>");return}m.set("default_url",S),Ee(m.load()),M("ok","/config set-url",S);return}xr("config");return;case"mobile":{let S=Kn();if(!S.supported){M("error","/mobile",S.reason);return}if(ft){M("error","/mobile",Pr(ft));return}A.begin("confirm");return}case"desktop":{if(ft){ft.kind==="web"?M("ok","/web","Session is already on Desktop."):M("error","/web",Pr(ft));return}m.setMobile({tui_target:"desktop",default_target:void 0,default_app:void 0}),Ee(m.load()),A.reset(),M("ok","/web","Session target: web (Chrome)");return}case"doctor":{(async()=>{he({type:"info",text:"Running mobile toolchain checks\u2026"});let{runDoctor:S,renderDoctorText:R,doctorExitCode:v}=await import("./doctor-OWRRDA4Z.js"),E=await S();he({type:"info",text:R(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":Rs(!0);return;case"testmd":if(O.isRunning||xe.isStreaming||Ae.running){M("error","/testmd","Finish or cancel the current run/generation first.");return}Ae.clearResult(),En(!0);return;case"generate":if(Ae.running){M("error","/generate","Finish or cancel the running test first.");return}Me==="run"?Pt.requestSwitch("generate")&&M("ok","/generate","Switched to Generate mode.",void 0,l.generateAccent):M("ok","/generate","Already in Generate mode.",void 0,l.generateAccent);return;case"run":{let S=ad(Me,h.args.objective);switch(S.kind){case"run":yr(S.objective,h.args.url);return;case"reject":M("error","/run",'Switch to Run mode first (bare /run), then /run "objective".');return;case"already":M("ok","/run","Already in Run mode.",void 0,l.orange);return;case"toggle":Pt.requestSwitch("run")&&M("ok","/run","Switched to Run mode.",void 0,l.orange);return}return}case"update":{(async()=>{let{getUpdateCommand:S}=await import("./version-check-A2JQYRI2.js");M("ok","/update",`To update kane-cli, run: ${S()}`)})();return}case"summary":{if(Me==="generate"&&!xe.requestId){Dn("no generation yet"),M("ok","/summary","(no generation yet)");return}let S=c.getFlows();if(S.length===0){M("ok","/summary","No runs yet in this session.");return}let R=h.args.index?parseInt(h.args.index,10):void 0;if(R!==void 0&&!c.getFlow(R)){M("error","/summary",`No flow at index ${R}`,`${S.length} flow${S.length===1?"":"s"} available. Use /summary to see all.`);return}Ce((0,k.jsx)(fs,{flows:S,filterIndex:R})),M("ok","/summary",R!==void 0?`Flow ${R}`:`${S.length} flow${S.length===1?"":"s"}`);return}case"new":Me==="generate"&&xe.requestId&&(nr(),xe.end().catch(S=>{M("error","/new",`Could not end generation cleanly: ${S.message}`)}),xe.reset()),$s();return;case"name":{let S=h.raw.replace(/^\/name\s*/,"").trim();if(!S){M("error","/name","Usage: /name <new-name>");return}(async()=>{let{validateNameOrThrow:R}=await import("./name-validator-5YGJXLZ7.js");try{R(S),c.setSessionName(S),M("ok","/name",`Session name set: ${S}`)}catch(v){M("error","/name",v.message)}})();return}case"cancel":if(Me==="generate"&&xe.isStreaming){nr(),xe.cancel(),M("ok","/cancel","Cancelled");return}if(Me==="generate"&&!xe.requestId){Dn("no generation yet"),M("ok","/cancel","(no generation yet)");return}if(Ae.running){Ae.cancel(),M("ok","/cancel","Run cancelled");return}O.cancelRun(),M("ok","/cancel","Run cancelled");return;case"clear":M("ok","/clear","Chat cleared");return;case"exit":Me==="generate"&&xe.requestId&&(nr(),xe.end()),ar();return;default:M("error",`/${h.command}`,"Unknown command");return}}if(d.trim().toLowerCase()==="exit"){ar();return}Ce((0,k.jsx)(Pu,{objective:d})),yr(d,void 0)},[O,he,M,Ce,c,yr,ar,$s,Me,xe.isStreaming,xe.requestId,xe,Dn,nr,Ae,C,s,ft,Pr]);Ds.current=li;let Ns=(0,T.useRef)(!1);(0,T.useEffect)(()=>{if(!Ns.current&&B&&u==="generate"&&f){Ns.current=!0;let d=setTimeout(()=>{Wf(f)},50);return()=>clearTimeout(d)}},[B,u,f]);let js=y.getAuthInfo(),Qf=js?js.method==="basic"?"basic auth":"oauth":"not logged in",Zf=(()=>{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 Mt==="auth"?Cn?["auth",d[Cn]]:["auth"]:Mt==="config"?Cn?["config",d[Cn]]:["config"]:Mt==="help"?["help"]:O.askingUser?["agent question"]:[]})();return(0,k.jsxs)(b,{flexDirection:"column",children:[!B&&!Ss&&(0,k.jsx)(Au,{onComplete:()=>{let d=y.creds.getActiveProfile(),h=y.creds.getDefaultEnv(),S=d?y.creds.loadCredentials(d,h):null,R=d?y.creds.loadBasicAuth(d,h):null,v=!!(S||R),E=R?.username??d??null;Ce((0,k.jsx)(yo,{size:"full",helmetVisibleRows:8,textVisibleRows:7,showMeta:!0,version:xt,authenticated:v,user:E})),_f(!0);let j=(N,ee,we,ke)=>{c.log(N,ee,we,ke)};if(Oa(y.creds,j).then(N=>{if(N.status==="authenticated"){let{profile:ee,env:we,tmsCreds:ke}=N.result;y.creds.setActiveProfile(ee),y.creds.setDefaultEnv(we),vt(),zt(ke),Ot("ready"),F(!0)}else N.status==="needs_pick"?(If(N.profiles),Ot("pick")):Ot("login")}).catch(N=>{c.log("error","STARTUP_GATE_ERROR","Auth gate failed",{error:String(N)}),Ot("login")}),o&&o.then(async N=>{if(N){let{getUpdateCommand:ee}=await import("./version-check-A2JQYRI2.js");M("ok","update available",`${N.current} \u2192 ${N.latest}`,`Run: ${ee()}`)}}).catch(()=>{}),i&&i.changes.length>0){let N=`kane-cli updated to ${i.toVersion}. Default settings changed:`,ee=[...i.changes.map(we=>`\u2022 ${we.description} (${we.field}: ${JSON.stringify(we.from)} \u2192 ${JSON.stringify(we.to)})`),"","Use /config to review or revert any of these."].join(`
26
+ `);M("ok","defaults updated",N,ee)}}}),!B&&rr==="booting"&&Ss&&(0,k.jsx)(b,{paddingX:1,children:(0,k.jsx)(a,{color:"yellow",children:"Checking authentication..."})}),!B&&rr==="pick"&&(0,k.jsx)(fv,{profiles:Ef,onCancel:()=>Ot("login"),onSelect:async(d,h)=>{y.creds.setActiveProfile(d),y.creds.setDefaultEnv(h),vt(),Go(!0);let S=(R,v,E,j)=>{c.log(R,v,E,j)};try{let R=await $a(y.creds,d,h,S);Go(!1),R.status==="authenticated"?(_t(d,h),zt(R.result.tmsCreds),Ot("ready"),F(!0)):Ot("login")}catch{Go(!1),Ot("login")}},validating:Af}),!B&&rr==="login"&&!V&&(0,k.jsx)(Wn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:y.creds.listProfiles(),onBasicLogin:async(d,h,S,R)=>{let{validateBasicAuth:v}=await import("./validate-basic-727KRHX6.js");await v(h,S,R),y.creds.saveBasicAuth(d,h,{username:S,access_key:R}),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(Ho(h),kt).then(()=>{vt(),je({phase:"project",profile:d,env:h})}).catch(()=>{je({phase:"project",profile:d,env:h})})},onCancel:()=>{Mr(0,"Login cancelled at startup")}}),!B&&rr==="login"&&V?.phase==="project"&&(0,k.jsx)(Nr,{resolver:y.getResolver(),currentProjectId:null,env:V.env,onSelect:(d,h)=>{y.creds.saveProfileConfig(V.profile,V.env,{project_id:d,project_name:h}),M("ok","/config project",h,`id: ${d}`),je({...V,phase:"folder"})},onCancel:async()=>{let d=await Jo(V.profile,V.env);d&&(Bt(y.creds,m,V.profile,V.env,{projectId:d.id,projectName:d.name}),M("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}),M("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 Qo(V.env,d.project_id);h&&(Bt(y.creds,m,V.profile,V.env,{folderId:h.id,folderName:h.name}),M("ok","/config folder",h.name,`id: ${h.id}`),_t(V.profile,V.env),je(null),Ot("ready"),F(!0))}}),B&&kn==="menu"&&!K&&(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:Qf}),(0,k.jsx)(a,{color:l.dim,children:" \u2502 "}),(0,k.jsxs)(a,{color:l.dim,children:[Lr??"no profile","/",ye]})]})}),B&&!K&&(0,k.jsxs)(b,{flexDirection:"column",flexGrow:1,children:[kn==="menu"&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(ss,{items:Ms,onRunSelected:()=>Pf("chat"),onActiveViewChange:ws,renderLoginWizard:d=>{let h=V?.phase??"wizard";if(h==="project")return(0,k.jsx)(Nr,{resolver:y.getResolver(),currentProjectId:null,env:V.env,onSelect:(S,R)=>{y.creds.saveProfileConfig(V.profile,V.env,{project_id:S,project_name:R}),M("ok","/config project",R,`id: ${S}`),je(v=>v?{...v,phase:"folder"}:null)},onCancel:async()=>{if(!V)return;let S=await Jo(V.profile,V.env);S&&(Bt(y.creds,m,V.profile,V.env,{projectId:S.id,projectName:S.name}),M("ok","/config project",S.name,`id: ${S.id}`),je(R=>R?{...R,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:(R,v)=>{y.creds.saveProfileConfig(V.profile,V.env,{folder_id:R,folder_name:v}),M("ok","/config folder",v,`id: ${R}`),_t(V.profile,V.env),je(null),d()},onCancel:async()=>{if(!V)return;let R=y.creds.loadProfileConfig(V.profile,V.env);if(!R?.project_id)return;let v=await Qo(V.env,R.project_id);v&&(Bt(y.creds,m,V.profile,V.env,{folderId:v.id,folderName:v.name}),M("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,R,v,E)=>{let{validateBasicAuth:j}=await import("./validate-basic-727KRHX6.js");await j(R,v,E),y.creds.saveBasicAuth(S,R,{username:v,access_key:E}),y.creds.setActiveProfile(S),y.creds.setDefaultEnv(R),Ct(y.creds,m,S,R),y.setTokenValid(!0),vt()},onOAuthLogin:async(S,R)=>{y.creds.setDefaultEnv(R),await y.login(S),Ct(y.creds,m,S,R),vt()},onComplete:(S,R)=>{Ft(Ho(R),kt).then(()=>{je({phase:"project",profile:S,env:R})}).catch(()=>{je({phase:"project",profile:S,env:R})})},onCancel:()=>{je(null),d()}})},renderProfilesView:d=>(0,k.jsx)(xi,{creds:y.creds,onSwitch:(h,S)=>{let R=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(()=>{}),M("ok","/profiles switch",`${R} \u2192 ${h} [${S}]`)},onCancel:d}),renderChromeProfilePicker:d=>(0,k.jsx)(yi,{currentPath:C.chrome_profile_path,onSelect:h=>{m.set("chrome_profile_path",h),Ee(m.load()),M("ok","/config chrome-profile",h),d()},onCancel:d}),renderProjectPicker:d=>(0,k.jsx)(Nr,{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}),M("ok","/config project",S,`id: ${h}`),Ee(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}),M("ok","/config folder",S,`id: ${h}`),Ee(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}),Ee(m.load()),M("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)(vi,{label:Xt.replace(/[.…\s]+$/,"")}),(()=>{let d=zs({isRunning:O.isRunning,bifurcationInfo:O.bifurcationInfo,steps:O.steps,cmInitCounts:O.cmInitCounts,replayInfo:O.replayInfo});return d?(0,k.jsx)(vi,{label:d.label,hasBifurcation:d.hasBifurcation}):null})(),O.isRunning&&O.steps.length>0&&(0,k.jsx)(Xs,{steps:O.steps,bifurcated:!!O.bifurcationInfo&&!O.bifurcationInfo.isSingleFlow,flows:O.bifurcationInfo?.flows,cmInitCounts:O.cmInitCounts,onStepCommit:Ce,describe:Zr.text,describeVisible:Zr.visible,describeRevealing:Zr.revealing},`run-${de.current}`),Ae.runViewProps&&(0,k.jsx)(Wa,{...Ae.runViewProps,onCancel:()=>{Ae.runViewProps?.onCancel?.(),Ae.cancel()}}),Yr&&(0,k.jsx)(ud,{onClose:()=>Rs(!1),version:xt,environment:y.creds.getDefaultEnv(),sessionId:c.sessionId,runUrl:C.default_url??fi,mode:Me}),Jr&&(0,k.jsx)(pd,{cwd:process.cwd(),currentOrgId:String(Le?.org_id??""),onClose:()=>En(!1),onRun:d=>{if(O.isRunning||xe.isStreaming||Ae.running){setTimeout(()=>M("error","/testmd","Finish or cancel the current run first."),0);return}En(!1),!(Me==="generate"&&!Pt.requestSwitch("run"))&&(Me==="generate"&&setTimeout(()=>M("ok","/testmd",`Switched to Run mode to run ${d.relPath}`,void 0,l.orange),0),Ae.start(d.path).catch(h=>setTimeout(()=>M("error","/testmd",`Run failed: ${h.message}`),0)))},onExport:d=>{En(!1),lc(d.path,{language:C.code_export.language??"python",env:ye}).then(h=>setTimeout(()=>M("ok","/testmd",`Exported code \u2192 ${h.codeDir}`),0)).catch(h=>setTimeout(()=>M("error","/testmd",`Export failed: ${h.message}`),0))}}),Mt&&!O.isRunning&&(()=>{let d=Ms.find(h=>h.id===Mt);return d?.children?(0,k.jsx)(ss,{items:d.children,onRunSelected:()=>xr(null),onDismiss:()=>xr(null),onActiveViewChange:ws,renderLoginWizard:h=>{let S=V?.phase??"wizard";if(S==="project")return(0,k.jsx)(Nr,{resolver:y.getResolver(),currentProjectId:null,env:V.env,onSelect:(R,v)=>{y.creds.saveProfileConfig(V.profile,V.env,{project_id:R,project_name:v}),M("ok","/config project",v,`id: ${R}`),je(E=>E?{...E,phase:"folder"}:null)},onCancel:async()=>{if(!V)return;let R=await Jo(V.profile,V.env);R&&(Bt(y.creds,m,V.profile,V.env,{projectId:R.id,projectName:R.name}),M("ok","/config project",R.name,`id: ${R.id}`),je(v=>v?{...v,phase:"folder"}:null))}});if(S==="folder"){let R=y.creds.loadProfileConfig(V.profile,V.env);return(0,k.jsx)(jr,{resolver:y.getResolver(),projectId:R?.project_id??"",currentFolderId:null,env:V.env,onSelect:(v,E)=>{y.creds.saveProfileConfig(V.profile,V.env,{folder_id:v,folder_name:E}),M("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 Qo(V.env,v.project_id);E&&(Bt(y.creds,m,V.profile,V.env,{folderId:E.id,folderName:E.name}),M("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(R,v,E,j)=>{let{validateBasicAuth:N}=await import("./validate-basic-727KRHX6.js");await N(v,E,j),y.creds.saveBasicAuth(R,v,{username:E,access_key:j}),y.creds.setActiveProfile(R),y.creds.setDefaultEnv(v),Ct(y.creds,m,R,v),y.setTokenValid(!0),vt()},onOAuthLogin:async(R,v)=>{y.creds.setDefaultEnv(v),await y.login(R),Ct(y.creds,m,R,v),vt()},onComplete:(R,v)=>{Ft(Ho(v),kt).then(()=>{je({phase:"project",profile:R,env:v})}).catch(()=>{je({phase:"project",profile:R,env:v})})},onCancel:()=>{je(null),h()}})},renderProfilesView:h=>(0,k.jsx)(xi,{creds:y.creds,onSwitch:(S,R)=>{let v=y.creds.getActiveProfile()??"(none)";y.creds.setActiveProfile(S),y.creds.setDefaultEnv(R),Ct(y.creds,m,S,R),_t(S,R),vt(),Ft(xs(R),kt).catch(()=>{}),M("ok","/profiles switch",`${v} \u2192 ${S} [${R}]`),h()},onCancel:h}),renderChromeProfilePicker:h=>(0,k.jsx)(yi,{currentPath:C.chrome_profile_path,onSelect:S=>{m.save({chrome_profile_path:S}),Ee(m.load()),M("ok","/config chrome-profile",S),h()},onCancel:h}),renderProjectPicker:h=>(0,k.jsx)(Nr,{resolver:y.getResolver(),currentProjectId:C.project_id,env:ye,onSelect:(S,R)=>{Bt(y.creds,m,y.creds.getActiveProfile()??"default",y.creds.getDefaultEnv(),{projectId:S,projectName:R}),Ee(m.load()),M("ok","/config project",R,`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,R)=>{Bt(y.creds,m,y.creds.getActiveProfile()??"default",y.creds.getDefaultEnv(),{folderId:S,folderName:R}),Ee(m.load()),M("ok","/config folder",R,`id: ${S}`),h()},onCancel:h}),renderWindowSizePicker:h=>(0,k.jsx)(ds,{currentWidth:C.window_size.width,currentHeight:C.window_size.height,onSelect:(S,R)=>{m.set("window_size",{width:S,height:R}),Ee(m.load()),M("ok","/config set-window",`${S} \xD7 ${R}`),h()},onCancel:h})},Mt):null})(),Mt&&$e&&(0,k.jsx)(b,{paddingX:1,marginTop:1,children:(0,k.jsx)(a,{color:$e.color,children:$e.text})}),Me==="run"&&!Mt&&!Yr&&!Jr&&!Tt&&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)(ff,{message:h,confirmLabel:S,onConfirm:async()=>{if(d.reason==="switch"){let v=d.to;Qr(null),Pt.confirmSwitch(v);return}nr();let R=d.pendingArgs;if(Qr(null),await xe.end(),xe.reset(),R.profile){let v=y.creds.getDefaultEnv(),E=y.creds.getActiveProfile()??"(none)";y.creds.setActiveProfile(R.profile),y.creds.setDefaultEnv(v),Ct(y.creds,m,R.profile,v),_t(R.profile,v),vt(),Ft({kind:"switch",env:v},kt).catch(()=>{}),M("ok","/profiles switch",`${E} \u2192 ${R.profile} [${v}]`)}else li("/profiles switch")},onCancel:()=>Qr(null)})})(),ks&&(0,k.jsxs)(b,{flexDirection:"column",paddingX:1,marginTop:1,children:[A.phase==="doctor"?(0,k.jsx)(Yu,{checks:A.checks,busyMessage:A.busyMessage,onRetry:A.recheck,onInstall:A.install,onCancel:A.cancel}):A.phase==="apps"&&A.kind?(0,k.jsx)(pa,{kind:A.kind,onSelect:d=>A.selectApp(d),onBack:A.back,onCancel:A.back}):A.phase==="appList"&&A.kind?(0,k.jsx)(fa,{kind:A.kind,busyMessage:A.busyMessage,listApps:qf,onSelect:d=>{A.selectAppId(d.appId)},onManualEntry:A.requestAppId,onCancel:A.back}):A.phase==="appId"?(0,k.jsx)(Va,{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)(sd,{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)(ja,{kind:A.kind,onSelect:d=>d==="uploaded"?A.requestCloudApps():A.requestApp(),onCancel:A.back}):(0,k.jsx)(da,{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})]}),Dr&&(0,k.jsx)(Wu,{suggested:Dr.suggested,sessionTargetLabel:Ar.kind==="unset"||Ar.kind==="choose-mobile"?"Desktop":rn(Ar.kind),appHint:Dr.verdict.appHint,savedDeviceName:C.mobile?.default_target?.id??null,onAccept:()=>Ln("accept"),onPickDevice:()=>Ln("pick"),onKeep:()=>Ln("keep"),onCancel:()=>Ln("cancel")}),Me==="run"&&!Mt&&!Yr&&!Jr&&!Tt&&!In&&!Ae.running&&!ks&&!Dr&&(0,k.jsx)(lr,{onSubmit:li,onEscape:void 0,history:Lf,commands:nd(xn(rd),ft),clearSeq:Gf,loadMentionItems:_r?Vf:void 0,mentionHint:_r&&!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"}]}),Me==="generate"&&!Mt&&!Yr&&!Jr&&!Tt&&!In&&(0,k.jsx)(uf,{tcg:xe,gm:Pt,history:Bf,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&&K&&ge&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(ki,{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})]}),Tt&&(0,k.jsx)(Ic,{defaultName:Tt,onSubmit:Jf}),gr&&(0,k.jsx)(Pa,{packPath:gr.packPath,viewerBase:Aa(ye??"prod"),onDone:()=>gr.resolve()}),Kr&&(0,k.jsx)(Ec,{onSubmit:Yf}),mr&&ge&&(0,k.jsx)(ki,{steps:$t,status:ge.status,error:ge.error}),B&&!K&&(0,k.jsx)(Cu,{profile:Lr,environment:ye,tokenValid:y.tokenValid,runCount:te,sessionId:c.sessionId,viewMode:kn,breadcrumb:Zf,chatMode:Me,footerHint:zf,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:_r?{kind:Ar.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 fv({profiles:e,onSelect:t,onCancel:r,validating:n}){let[o,i]=(0,T.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{Xu as a,zu as b,Qu as c,xf as d,Cf as e,zC as f};