@testmuai/kane-cli 0.8.14 → 0.8.15
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.
- package/dist/{ChatSurface-AVL3TJA2.js → ChatSurface-2GPR4S7I.js} +1 -1
- package/dist/{ChromeProfilePicker-WJZJOZ6Z.js → ChromeProfilePicker-XAZGCJKR.js} +1 -1
- package/dist/{CliFeedbackPrompt-65BQF5G5.js → CliFeedbackPrompt-4SILDU7S.js} +1 -1
- package/dist/{CliUploadProgress-HEBZYKGN.js → CliUploadProgress-OAQBY55Y.js} +1 -1
- package/dist/{ConfigView-JEVQ2SO4.js → ConfigView-FDBMJC26.js} +1 -1
- package/dist/EvidenceViewOffer-YSNRKKPC.js +2 -0
- package/dist/FolderPicker-XCTJ5447.js +2 -0
- package/dist/{InfoBox-KM5DLBCV.js → InfoBox-ZPUBB7J4.js} +1 -1
- package/dist/{LinksBox-FQA36GTV.js → LinksBox-MNNNOH23.js} +1 -1
- package/dist/{ProfilesView-76KGHTMK.js → ProfilesView-GY5QCIT3.js} +1 -1
- package/dist/{ProjectPicker-65YOU46H.js → ProjectPicker-UCHMCNFV.js} +1 -1
- package/dist/{SaveSessionPrompt-QD6BNTWO.js → SaveSessionPrompt-ATVHKAHN.js} +1 -1
- package/dist/SingleShotApp-IPNZBFXB.js +2 -0
- package/dist/{SummaryBox-N2B6DUDD.js → SummaryBox-2DTNE25L.js} +1 -1
- package/dist/TestMdRunView-2FQIEI5W.js +2 -0
- package/dist/{TestrunEvidenceTable-3WLQVTF4.js → TestrunEvidenceTable-6UE5EMON.js} +1 -1
- package/dist/{WhoamiView-T26HA4ZZ.js → WhoamiView-TFCHIOW5.js} +1 -1
- package/dist/{app-download-XKZWFMEK.js → app-download-N7MLJQ42.js} +1 -1
- package/dist/{auth-PPJANIMZ.js → auth-IQPCVCZK.js} +1 -1
- package/dist/{binary-DKWWODT2.js → binary-VML7EGV4.js} +1 -1
- package/dist/{bind-62AZYFAY.js → bind-YV6V5AI6.js} +2 -2
- package/dist/{bootstrap-6IJNZIPT.js → bootstrap-KCPWDBLX.js} +1 -1
- package/dist/bridge-5UKX7YIO.js +2 -0
- package/dist/{changelog-UTGJ7FSP.js → changelog-CJFWGRIL.js} +1 -1
- package/dist/chunk-27ERHOW3.js +2 -0
- package/dist/{chunk-WR42Q3HU.js → chunk-2WRBCTNM.js} +1 -1
- package/dist/{chunk-73ULUGBM.js → chunk-3D5MKSG3.js} +1 -1
- package/dist/{chunk-2BFXT7VQ.js → chunk-3GELV4IN.js} +3 -3
- package/dist/{chunk-O6U2HU5M.js → chunk-4TMQTSIO.js} +1 -1
- package/dist/{chunk-X74PP5NJ.js → chunk-5HTSKF5K.js} +1 -1
- package/dist/{chunk-MLRO7OH3.js → chunk-6DHEOPXX.js} +1 -1
- package/dist/{chunk-WBHSPN55.js → chunk-6GLFQHSW.js} +2 -2
- package/dist/chunk-6K4FDYMH.js +89 -0
- package/dist/{chunk-3BHRGHIZ.js → chunk-6L5RV62W.js} +1 -1
- package/dist/{chunk-N7ZRF5K3.js → chunk-74FHTDEE.js} +1 -1
- package/dist/{chunk-CGT4NFQN.js → chunk-7EGIX6Y4.js} +2 -2
- package/dist/{chunk-3YX3RQXO.js → chunk-7WDPU33M.js} +1 -1
- package/dist/{chunk-JKX57HA7.js → chunk-7X4R6464.js} +1 -1
- package/dist/{chunk-RQLU4NDG.js → chunk-A557OSRS.js} +1 -1
- package/dist/{chunk-3SPOJWRA.js → chunk-AYJ2YZP5.js} +1 -1
- package/dist/{chunk-YHVG7V3E.js → chunk-BMVE73M7.js} +1 -1
- package/dist/chunk-CAOZKSQ3.js +8 -0
- package/dist/{chunk-L6MOO4WT.js → chunk-CNPIJFZM.js} +1 -1
- package/dist/{chunk-EMSLJTYN.js → chunk-D6GBOFK5.js} +1 -1
- package/dist/{chunk-FFFB5BXL.js → chunk-DMCEGMGB.js} +1 -1
- package/dist/{chunk-J7NRD4Q7.js → chunk-DMT3W26F.js} +1 -1
- package/dist/{chunk-NOLYYHVG.js → chunk-EDQZIEPJ.js} +1 -1
- package/dist/{chunk-K7K23DIQ.js → chunk-EFTRH35G.js} +1 -1
- package/dist/{chunk-LL5DQO6V.js → chunk-EJXBKCNF.js} +1 -1
- package/dist/{chunk-OH2NSBO6.js → chunk-EPE2ELDH.js} +1 -1
- package/dist/{chunk-42FHKRPA.js → chunk-FXO7JKMZ.js} +3 -3
- package/dist/{chunk-VNFCX2SH.js → chunk-GSDXZS4U.js} +1 -1
- package/dist/{chunk-4K5XTIJ6.js → chunk-GZ65ZA4C.js} +1 -1
- package/dist/{chunk-Q7XBMBMR.js → chunk-HLCETZ73.js} +1 -1
- package/dist/{chunk-B2ZGG7WM.js → chunk-HYTBEPC2.js} +1 -1
- package/dist/{chunk-AC7BPO4X.js → chunk-IAHOLH5W.js} +1 -1
- package/dist/{chunk-GESG672R.js → chunk-JCMHB4KH.js} +1 -1
- package/dist/{chunk-XGHMZJGI.js → chunk-JFUFWICY.js} +2 -2
- package/dist/{chunk-JH6E632O.js → chunk-JGAMMOUC.js} +1 -1
- package/dist/{chunk-KOL6ZWOQ.js → chunk-JL3L6KOG.js} +1 -1
- package/dist/chunk-JQCOKL6U.js +15 -0
- package/dist/{chunk-M7DN6FO3.js → chunk-JSS22MFY.js} +9 -9
- package/dist/chunk-JVEZBJJ7.js +2 -0
- package/dist/{chunk-ZWHPIR2Z.js → chunk-KALEPJAV.js} +2 -2
- package/dist/{chunk-O2APH6TZ.js → chunk-KUS324VE.js} +1 -1
- package/dist/{chunk-NDCRJXYF.js → chunk-LJGAXIDU.js} +1 -1
- package/dist/{chunk-ZKEOPIQ3.js → chunk-M36MOFJW.js} +1 -1
- package/dist/{chunk-O5AS2ZIX.js → chunk-MLYNVJNH.js} +1 -1
- package/dist/{chunk-GKZ2KVE6.js → chunk-N3CVR4Z2.js} +1 -1
- package/dist/{chunk-6F6YI3ZG.js → chunk-NLEA6NPU.js} +1 -1
- package/dist/{chunk-SGHP44WS.js → chunk-NUJVYAI4.js} +1 -1
- package/dist/{chunk-IQ7NGOAT.js → chunk-NWNG5UWD.js} +1 -1
- package/dist/{chunk-IICQ5KRD.js → chunk-O66WXOOC.js} +3 -3
- package/dist/{chunk-ZA4M4O7E.js → chunk-OFWJBOGT.js} +2 -2
- package/dist/{chunk-MNE5VMHT.js → chunk-OGDAWNFY.js} +1 -1
- package/dist/{chunk-75I46VTM.js → chunk-ORQGQSWG.js} +2 -2
- package/dist/{chunk-YHR2YAN5.js → chunk-OWGFFJKK.js} +1 -1
- package/dist/{chunk-SQDQADWD.js → chunk-PGXJ275T.js} +1 -1
- package/dist/{chunk-P3JUE2RM.js → chunk-Q77QO3PC.js} +4 -4
- package/dist/{chunk-JJJSDDQ2.js → chunk-QVLYK5JL.js} +1 -1
- package/dist/{chunk-UXH3RMQ7.js → chunk-QXRT6HSV.js} +1 -1
- package/dist/{chunk-RH6KFHJB.js → chunk-R7QMZBBH.js} +1 -1
- package/dist/{chunk-BJYGWXVP.js → chunk-RI4ILZZC.js} +1 -1
- package/dist/{chunk-PGU64EWQ.js → chunk-RQILLYSP.js} +1 -1
- package/dist/chunk-S4JUCBCT.js +7 -0
- package/dist/{chunk-4BBDKWM3.js → chunk-SHSXOYKT.js} +1 -1
- package/dist/{chunk-7RAI77XD.js → chunk-SIYSKT6I.js} +1 -1
- package/dist/{chunk-22QIVSQR.js → chunk-SWTJMTBY.js} +1 -1
- package/dist/{chunk-X5276I5H.js → chunk-T4R26WER.js} +2 -2
- package/dist/{chunk-BAKJPQGU.js → chunk-TEHZUSUY.js} +1 -1
- package/dist/{chunk-RBHQXWR7.js → chunk-TVELOH5A.js} +1 -1
- package/dist/{chunk-6LGED4FC.js → chunk-UHSNUUX3.js} +2 -2
- package/dist/{chunk-QPUVOVD7.js → chunk-UZIMYV5U.js} +1 -1
- package/dist/{chunk-WILT62DP.js → chunk-VOTIGXQ4.js} +1 -1
- package/dist/{chunk-SFTFHFG3.js → chunk-VZDLRJ5N.js} +1 -1
- package/dist/{chunk-2RMHDOP4.js → chunk-W77SZLFC.js} +1 -1
- package/dist/{chunk-QJ5O27SJ.js → chunk-WFBJNVMQ.js} +1 -1
- package/dist/{chunk-SX56MVUO.js → chunk-WNB2IYHY.js} +1 -1
- package/dist/chunk-XSUJJB7Z.js +11 -0
- package/dist/{chunk-NBMLBCJ3.js → chunk-XUJXGE42.js} +1 -1
- package/dist/{chunk-ARG56PJG.js → chunk-XXE7W5AV.js} +1 -1
- package/dist/{chunk-DA57DXCF.js → chunk-YAAQER2L.js} +1 -1
- package/dist/{chunk-7L25ZNNP.js → chunk-YGMUNNKH.js} +1 -1
- package/dist/{chunk-OO5GMBVI.js → chunk-YKYKOV6U.js} +1 -1
- package/dist/{chunk-C74ABM24.js → chunk-YZVR7ESF.js} +1 -1
- package/dist/{chunk-GPIXV7AV.js → chunk-Z3YYMZHT.js} +1 -1
- package/dist/{chunk-WOA7VCGA.js → chunk-Z73ZYROU.js} +1 -1
- package/dist/{chunk-LR5DJ6EN.js → chunk-ZCSEBT2W.js} +1 -1
- package/dist/{chunk-KOPP4CJW.js → chunk-ZEVU2OT3.js} +1 -1
- package/dist/{chunk-IQ7GPETF.js → chunk-ZKCCG3GK.js} +1 -1
- package/dist/{config-3AKWRTFS.js → config-UGCWZGH5.js} +1 -1
- package/dist/{cover-cmd-ZLAWMEC2.js → cover-cmd-SWJ2NZUZ.js} +1 -1
- package/dist/{credentials-Q4WH5CBN.js → credentials-GWLYYRTL.js} +1 -1
- package/dist/{deps-bundle-RVZK6LZJ.js → deps-bundle-VNGC2UG6.js} +1 -1
- package/dist/{deps-resolve-6F2U4TJP.js → deps-resolve-YLCEU6I7.js} +1 -1
- package/dist/{dispatch-46BETGXY.js → dispatch-OMQCT7WO.js} +1 -1
- package/dist/{doctor-WRPG56HH.js → doctor-B4Z6RPKQ.js} +1 -1
- package/dist/{evidence-XWR32HWP.js → evidence-XJGXVLO5.js} +1 -1
- package/dist/{evolve-cmd-27ZQN6YB.js → evolve-cmd-QQQPPGL3.js} +1 -1
- package/dist/{explain-cmd-JCJTXVZY.js → explain-cmd-XVE6Z67Q.js} +1 -1
- package/dist/{extract-bind-D5BYYGYA.js → extract-bind-7IDQS4QP.js} +2 -2
- package/dist/{extract-cmd-CCYW7FIY.js → extract-cmd-KIEOBRIT.js} +1 -1
- package/dist/{gaps-cmd-3VJKQ25D.js → gaps-cmd-RGIPUSIR.js} +1 -1
- package/dist/{generate-headless-2M6UT3IK.js → generate-headless-XGRIDD6O.js} +2 -2
- package/dist/index.js +134 -136
- package/dist/{ingest-cmd-HVTUK264.js → ingest-cmd-R5H5SF5K.js} +1 -1
- package/dist/install-W3VPVPAQ.js +2 -0
- package/dist/{interactive-bind-OJCYNQPI.js → interactive-bind-X5DVLRRW.js} +3 -3
- package/dist/{lifecycle-cmd-GWFGUGTC.js → lifecycle-cmd-6R2PR2HM.js} +1 -1
- package/dist/{list-cmd-AXDW64OY.js → list-cmd-QCIYKWYQ.js} +1 -1
- package/dist/{list-commands-YNZ6EFIF.js → list-commands-VRRCVWKO.js} +1 -1
- package/dist/login-flow-5HL2QYEL.js +2 -0
- package/dist/{maintenance-cmd-QEMK6YNV.js → maintenance-cmd-GZ4EMT3V.js} +1 -1
- package/dist/{mobile-prompts-OXHA5GHJ.js → mobile-prompts-CMIVWDHQ.js} +1 -1
- package/dist/objective-variable-gate-EEYJ6B3X.js +2 -0
- package/dist/{open-provider-E5VUGFNE.js → open-provider-UFSCTIQQ.js} +1 -1
- package/dist/{persist-recorded-session-KWPH37HI.js → persist-recorded-session-JXL5E53A.js} +1 -1
- package/dist/pipeline-RSCRNNPW.js +2 -0
- package/dist/prepare-target-XZ3FTVBW.js +2 -0
- package/dist/{reconcile-cmd-V7TDYETT.js → reconcile-cmd-4VRTUM2D.js} +1 -1
- package/dist/{reconcile-deps-X6IGH4CA.js → reconcile-deps-ZCJ2QCK5.js} +2 -2
- package/dist/{reconcile-engine-OGXSIE7O.js → reconcile-engine-IVLZCYZB.js} +1 -1
- package/dist/{recording-banner-IZWN2XFY.js → recording-banner-SRLPSTFP.js} +1 -1
- package/dist/registry-CPQHW2L2.js +2 -0
- package/dist/{require-project-folder-PEEUITK6.js → require-project-folder-SKEZMSN7.js} +1 -1
- package/dist/{resolve-run-intent-JGXXE45Y.js → resolve-run-intent-THC3EPAX.js} +1 -1
- package/dist/{resolver-TY7XLJBN.js → resolver-2NUNLK7N.js} +1 -1
- package/dist/{review-cmd-74YTPT7E.js → review-cmd-BMJQZ6XJ.js} +1 -1
- package/dist/{run-GRYWYKIH.js → run-TURFDLC6.js} +1 -1
- package/dist/{run-DN4XARP2.js → run-UDP5VPYS.js} +1 -1
- package/dist/{run-test-md-DFCKCQ4T.js → run-test-md-MRYNFNPO.js} +2 -2
- package/dist/{skill-installer-GRU3HOYF.js → skill-installer-CVJ5VTEJ.js} +1 -1
- package/dist/{spawner-LNMD4NJF.js → spawner-7FUA3JXA.js} +1 -1
- package/dist/{store-guard-Q4MYZQHF.js → store-guard-XQ5MSUB2.js} +1 -1
- package/dist/{sync-cmd-H6Y5EB3L.js → sync-cmd-5INKTZN2.js} +1 -1
- package/dist/{sync-setup-THGRBKTA.js → sync-setup-4R54VRAO.js} +1 -1
- package/dist/tcg-generate-2BOPGRM6.js +2 -0
- package/dist/testmd-actions-2CPJZAC2.js +2 -0
- package/dist/testmd-sync-HYZI6NRM.js +2 -0
- package/dist/token-refresh-NTE4LQRN.js +2 -0
- package/dist/{validate-basic-RCBEELSB.js → validate-basic-OKLJLDML.js} +1 -1
- package/dist/{variable-receipt-JHRW73Z6.js → variable-receipt-CMCDUJI2.js} +1 -1
- package/dist/{verdicts-XFXDRND4.js → verdicts-EMCYGQWM.js} +1 -1
- package/dist/{version-check-Z774UWW3.js → version-check-4DQJBSXW.js} +1 -1
- package/dist/{view-cmd-I4LQGJ2X.js → view-cmd-P3XRFORJ.js} +1 -1
- package/dist/{walk-session-FP52IGLB.js → walk-session-MUGS6CZY.js} +1 -1
- package/dist/{with-telemetry-P6RUPWBH.js → with-telemetry-3T53GIQC.js} +1 -1
- package/package.json +11 -11
- package/dist/EvidenceViewOffer-5MB4ZXKM.js +0 -2
- package/dist/FolderPicker-SYFXH6D5.js +0 -2
- package/dist/SingleShotApp-U54ETXS3.js +0 -2
- package/dist/TestMdRunView-WA4TC5PT.js +0 -2
- package/dist/bridge-X5DEJL6F.js +0 -2
- package/dist/chunk-53MPG2J3.js +0 -11
- package/dist/chunk-KN65CUNT.js +0 -15
- package/dist/chunk-L4M7753M.js +0 -2
- package/dist/chunk-LBNADEQN.js +0 -8
- package/dist/chunk-LNV7C2YO.js +0 -6
- package/dist/chunk-ZZTZJPT2.js +0 -88
- package/dist/install-5WJLE7XT.js +0 -2
- package/dist/login-flow-PRXFPRYZ.js +0 -2
- package/dist/objective-variable-gate-76GYUHEP.js +0 -2
- package/dist/pipeline-A2OGF4XW.js +0 -2
- package/dist/prepare-target-P6BWJZBZ.js +0 -2
- package/dist/registry-GOLIFVK5.js +0 -2
- package/dist/tcg-generate-SZZ7MJXY.js +0 -2
- package/dist/testmd-actions-MRIUOOXO.js +0 -2
- package/dist/testmd-sync-UYVJ47BN.js +0 -2
- package/dist/token-refresh-KN5JK2U4.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as pi,b as Hs}from"./chunk-3MSXQU2C.js";import{a as xa,b as ya,c as Sa,d as Xa,e as za}from"./chunk-KOPP4CJW.js";import{a as Oc}from"./chunk-K7K23DIQ.js";import{a as xc,b as Ai,c as Zn,d as yc,e as eo,f as Sc,h as wc,i as Rc,j as Tc,k as kc,l as Cc,m as qt,n as Ec,o as Ic,p as Ac,q as to,r as _c,s as _i,t as Pc,u as Dc,v as Lc}from"./chunk-WR42Q3HU.js";import{b as Bc,c as $c}from"./chunk-NBMLBCJ3.js";import{A as Ii,B as fc,C as pc,D as mc,E as gc,H as Ut,K as bc,a as sn,b as wa,c as Ra,e as Ia,f as Aa,g as _a,h as Va,i as Fa,j as Ua,k as Yn,l as Ga,n as Ci,o as nc,p as Ei,r as oc,s as ic,t as sc,u as ac,v as cc,x as lc,y as uc,z as dc}from"./chunk-ZZTZJPT2.js";import{c as Ja,d as Qa,n as vc}from"./chunk-ZA4M4O7E.js";import{a as Nc,b as Pi}from"./chunk-QPUVOVD7.js";import{a as Jn,b as tc,c as ki}from"./chunk-Q7XBMBMR.js";import{c as rc}from"./chunk-O6U2HU5M.js";import{a as Qn}from"./chunk-PGU64EWQ.js";import{c as hc}from"./chunk-IICQ5KRD.js";import{a as ja}from"./chunk-IQ7GPETF.js";import{F as La,J as Ba,K as Ti,L as $a,M as Oa}from"./chunk-CGT4NFQN.js";import{c as Na,e as Ma}from"./chunk-VNFCX2SH.js";import{a as Gs,b as mi,c as ur,d as Gn,e as qa,f as Ha}from"./chunk-3SPOJWRA.js";import{a as Wa}from"./chunk-DA57DXCF.js";import{c as Kn}from"./chunk-M7DN6FO3.js";import{b as Ya,r as Za}from"./chunk-KN65CUNT.js";import{a as zs,b as bi,c as Ks,d as Da,e as Ka,g as ec}from"./chunk-GESG672R.js";import{e as Pa}from"./chunk-GPIXV7AV.js";import{a as gi}from"./chunk-5Y2G4NC7.js";import{a as Vr}from"./chunk-O5AS2ZIX.js";import{a as Ea}from"./chunk-4BBDKWM3.js";import{a as ra,b as Or,f as Ri,g as ma,j as ga,k as ha,l as ba,m as va}from"./chunk-6F6YI3ZG.js";import{c as aa,e as ca,g as la}from"./chunk-3BHRGHIZ.js";import{b as Mr}from"./chunk-WOA7VCGA.js";import{b as jr}from"./chunk-YHR2YAN5.js";import{h as ka}from"./chunk-SGHP44WS.js";import{a as an}from"./chunk-BPMSNGXQ.js";import{a as Ct,b as $t,c as Ta}from"./chunk-VE3SUJMA.js";import{a as Ca}from"./chunk-MNE5VMHT.js";import{a as wi,d as nn,e as Xn}from"./chunk-RQLU4NDG.js";import{j as Si}from"./chunk-WBHSPN55.js";import{d as oa}from"./chunk-MSGW4JDG.js";import{a as zn,b as Rr}from"./chunk-TZXXJWHA.js";import{j as ua,n as Ft,o as on,p as dr,r as Nr}from"./chunk-RSSOJ3L2.js";import{a as fa,b as Tr,c as pa}from"./chunk-AC7BPO4X.js";import{h as da}from"./chunk-TAOHYWEO.js";import{b as vi}from"./chunk-QJ5O27SJ.js";import{c as xi}from"./chunk-LL5DQO6V.js";import{a as Vt}from"./chunk-OO5GMBVI.js";import{a as Ys,e as Js,f as Wn,g as Qs,h as Zs,i as ea,j as ta}from"./chunk-Z7S3IWUX.js";import{a as sa}from"./chunk-N7ZRF5K3.js";import{a as ia}from"./chunk-BAKJPQGU.js";import{a as Ue}from"./chunk-OH2NSBO6.js";import{a as yi}from"./chunk-NLCCBXXV.js";import{a as na}from"./chunk-RZ4F3BHX.js";import{a as Us,d as Jt,e as rn}from"./chunk-EYOCNMUM.js";import{a as Hn}from"./chunk-IQ7NGOAT.js";import{a as hi}from"./chunk-7L25ZNNP.js";import{a as Qt,b as Ws}from"./chunk-ARG56PJG.js";import{a as xt,b as mt,j as di,n as qs,o as fi,y as l}from"./chunk-B2ZGG7WM.js";import{b as Xs}from"./chunk-DFS4RMVP.js";import{a as H}from"./chunk-HCBYKLMW.js";import{a as b,b as a,i as Be,j as Fs,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((Av,Vc)=>{"use strict";var fp="2.0.0",pp=Number.MAX_SAFE_INTEGER||9007199254740991,mp=16,gp=250,hp=["major","premajor","minor","preminor","patch","prepatch","prerelease"];Vc.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:mp,MAX_SAFE_BUILD_LENGTH:gp,MAX_SAFE_INTEGER:pp,RELEASE_TYPES:hp,SEMVER_SPEC_VERSION:fp,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var cn=oe((_v,Fc)=>{"use strict";var bp=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};Fc.exports=bp});var qr=oe((Ht,Uc)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:Di,MAX_SAFE_BUILD_LENGTH:vp,MAX_LENGTH:xp}=Ur(),yp=cn();Ht=Uc.exports={};var Sp=Ht.re=[],wp=Ht.safeRe=[],G=Ht.src=[],Rp=Ht.safeSrc=[],W=Ht.t={},Tp=0,Li="[a-zA-Z0-9-]",kp=[["\\s",1],["\\d",xp],[Li,vp]],Cp=e=>{for(let[t,r]of kp)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},se=(e,t,r)=>{let n=Cp(t),o=Tp++;yp(e,o,t),W[e]=o,G[o]=t,Rp[o]=n,Sp[o]=new RegExp(t,r?"g":void 0),wp[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",`(${G[W.NUMERICIDENTIFIER]})\\.(${G[W.NUMERICIDENTIFIER]})\\.(${G[W.NUMERICIDENTIFIER]})`);se("MAINVERSIONLOOSE",`(${G[W.NUMERICIDENTIFIERLOOSE]})\\.(${G[W.NUMERICIDENTIFIERLOOSE]})\\.(${G[W.NUMERICIDENTIFIERLOOSE]})`);se("PRERELEASEIDENTIFIER",`(?:${G[W.NONNUMERICIDENTIFIER]}|${G[W.NUMERICIDENTIFIER]})`);se("PRERELEASEIDENTIFIERLOOSE",`(?:${G[W.NONNUMERICIDENTIFIER]}|${G[W.NUMERICIDENTIFIERLOOSE]})`);se("PRERELEASE",`(?:-(${G[W.PRERELEASEIDENTIFIER]}(?:\\.${G[W.PRERELEASEIDENTIFIER]})*))`);se("PRERELEASELOOSE",`(?:-?(${G[W.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${G[W.PRERELEASEIDENTIFIERLOOSE]})*))`);se("BUILDIDENTIFIER",`${Li}+`);se("BUILD",`(?:\\+(${G[W.BUILDIDENTIFIER]}(?:\\.${G[W.BUILDIDENTIFIER]})*))`);se("FULLPLAIN",`v?${G[W.MAINVERSION]}${G[W.PRERELEASE]}?${G[W.BUILD]}?`);se("FULL",`^${G[W.FULLPLAIN]}$`);se("LOOSEPLAIN",`[v=\\s]*${G[W.MAINVERSIONLOOSE]}${G[W.PRERELEASELOOSE]}?${G[W.BUILD]}?`);se("LOOSE",`^${G[W.LOOSEPLAIN]}$`);se("GTLT","((?:<|>)?=?)");se("XRANGEIDENTIFIERLOOSE",`${G[W.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);se("XRANGEIDENTIFIER",`${G[W.NUMERICIDENTIFIER]}|x|X|\\*`);se("XRANGEPLAIN",`[v=\\s]*(${G[W.XRANGEIDENTIFIER]})(?:\\.(${G[W.XRANGEIDENTIFIER]})(?:\\.(${G[W.XRANGEIDENTIFIER]})(?:${G[W.PRERELEASE]})?${G[W.BUILD]}?)?)?`);se("XRANGEPLAINLOOSE",`[v=\\s]*(${G[W.XRANGEIDENTIFIERLOOSE]})(?:\\.(${G[W.XRANGEIDENTIFIERLOOSE]})(?:\\.(${G[W.XRANGEIDENTIFIERLOOSE]})(?:${G[W.PRERELEASELOOSE]})?${G[W.BUILD]}?)?)?`);se("XRANGE",`^${G[W.GTLT]}\\s*${G[W.XRANGEPLAIN]}$`);se("XRANGELOOSE",`^${G[W.GTLT]}\\s*${G[W.XRANGEPLAINLOOSE]}$`);se("COERCEPLAIN",`(^|[^\\d])(\\d{1,${Di}})(?:\\.(\\d{1,${Di}}))?(?:\\.(\\d{1,${Di}}))?`);se("COERCE",`${G[W.COERCEPLAIN]}(?:$|[^\\d])`);se("COERCEFULL",G[W.COERCEPLAIN]+`(?:${G[W.PRERELEASE]})?(?:${G[W.BUILD]})?(?:$|[^\\d])`);se("COERCERTL",G[W.COERCE],!0);se("COERCERTLFULL",G[W.COERCEFULL],!0);se("LONETILDE","(?:~>?)");se("TILDETRIM",`(\\s*)${G[W.LONETILDE]}\\s+`,!0);Ht.tildeTrimReplace="$1~";se("TILDE",`^${G[W.LONETILDE]}${G[W.XRANGEPLAIN]}$`);se("TILDELOOSE",`^${G[W.LONETILDE]}${G[W.XRANGEPLAINLOOSE]}$`);se("LONECARET","(?:\\^)");se("CARETTRIM",`(\\s*)${G[W.LONECARET]}\\s+`,!0);Ht.caretTrimReplace="$1^";se("CARET",`^${G[W.LONECARET]}${G[W.XRANGEPLAIN]}$`);se("CARETLOOSE",`^${G[W.LONECARET]}${G[W.XRANGEPLAINLOOSE]}$`);se("COMPARATORLOOSE",`^${G[W.GTLT]}\\s*(${G[W.LOOSEPLAIN]})$|^$`);se("COMPARATOR",`^${G[W.GTLT]}\\s*(${G[W.FULLPLAIN]})$|^$`);se("COMPARATORTRIM",`(\\s*)${G[W.GTLT]}\\s*(${G[W.LOOSEPLAIN]}|${G[W.XRANGEPLAIN]})`,!0);Ht.comparatorTrimReplace="$1$2$3";se("HYPHENRANGE",`^\\s*(${G[W.XRANGEPLAIN]})\\s+-\\s+(${G[W.XRANGEPLAIN]})\\s*$`);se("HYPHENRANGELOOSE",`^\\s*(${G[W.XRANGEPLAINLOOSE]})\\s+-\\s+(${G[W.XRANGEPLAINLOOSE]})\\s*$`);se("STAR","(<|>)?=?\\s*\\*");se("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");se("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var ro=oe((Pv,qc)=>{"use strict";var Ep=Object.freeze({loose:!0}),Ip=Object.freeze({}),Ap=e=>e?typeof e!="object"?Ep:e:Ip;qc.exports=Ap});var Bi=oe((Dv,Wc)=>{"use strict";var Hc=/^[0-9]+$/,Gc=(e,t)=>{if(typeof e=="number"&&typeof t=="number")return e===t?0:e<t?-1:1;let r=Hc.test(e),n=Hc.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1},_p=(e,t)=>Gc(t,e);Wc.exports={compareIdentifiers:Gc,rcompareIdentifiers:_p}});var et=oe((Lv,zc)=>{"use strict";var no=cn(),{MAX_LENGTH:Xc,MAX_SAFE_INTEGER:oo}=Ur(),{safeRe:io,t:so}=qr(),Pp=ro(),{compareIdentifiers:$i}=Bi(),Dp=(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=Pp(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>Xc)throw new TypeError(`version is longer than ${Xc} characters`);no("SemVer",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=t.trim().match(r.loose?io[so.LOOSE]:io[so.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>oo||this.major<0)throw new TypeError("Invalid major version");if(this.minor>oo||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>oo||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<oo)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(no("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(no("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(no("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?io[so.PRERELEASELOOSE]:io[so.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]),Dp(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}};zc.exports=Oi});var fr=oe((Bv,Yc)=>{"use strict";var Kc=et(),Lp=(e,t,r=!1)=>{if(e instanceof Kc)return e;try{return new Kc(e,t)}catch(n){if(!r)return null;throw n}};Yc.exports=Lp});var Qc=oe(($v,Jc)=>{"use strict";var Bp=fr(),$p=(e,t)=>{let r=Bp(e,t);return r?r.version:null};Jc.exports=$p});var el=oe((Ov,Zc)=>{"use strict";var Op=fr(),Np=(e,t)=>{let r=Op(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null};Zc.exports=Np});var nl=oe((Nv,rl)=>{"use strict";var tl=et(),Mp=(e,t,r,n,o)=>{typeof r=="string"&&(o=n,n=r,r=void 0);try{return new tl(e instanceof tl?e.version:e,r).inc(t,n,o).version}catch{return null}};rl.exports=Mp});var sl=oe((Mv,il)=>{"use strict";var ol=fr(),jp=(e,t)=>{let r=ol(e,null,!0),n=ol(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"};il.exports=jp});var cl=oe((jv,al)=>{"use strict";var Vp=et(),Fp=(e,t)=>new Vp(e,t).major;al.exports=Fp});var ul=oe((Vv,ll)=>{"use strict";var Up=et(),qp=(e,t)=>new Up(e,t).minor;ll.exports=qp});var fl=oe((Fv,dl)=>{"use strict";var Hp=et(),Gp=(e,t)=>new Hp(e,t).patch;dl.exports=Gp});var ml=oe((Uv,pl)=>{"use strict";var Wp=fr(),Xp=(e,t)=>{let r=Wp(e,t);return r&&r.prerelease.length?r.prerelease:null};pl.exports=Xp});var Et=oe((qv,hl)=>{"use strict";var gl=et(),zp=(e,t,r)=>new gl(e,r).compare(new gl(t,r));hl.exports=zp});var vl=oe((Hv,bl)=>{"use strict";var Kp=Et(),Yp=(e,t,r)=>Kp(t,e,r);bl.exports=Yp});var yl=oe((Gv,xl)=>{"use strict";var Jp=Et(),Qp=(e,t)=>Jp(e,t,!0);xl.exports=Qp});var ao=oe((Wv,wl)=>{"use strict";var Sl=et(),Zp=(e,t,r)=>{let n=new Sl(e,r),o=new Sl(t,r);return n.compare(o)||n.compareBuild(o)};wl.exports=Zp});var Tl=oe((Xv,Rl)=>{"use strict";var em=ao(),tm=(e,t)=>e.sort((r,n)=>em(r,n,t));Rl.exports=tm});var Cl=oe((zv,kl)=>{"use strict";var rm=ao(),nm=(e,t)=>e.sort((r,n)=>rm(n,r,t));kl.exports=nm});var ln=oe((Kv,El)=>{"use strict";var om=Et(),im=(e,t,r)=>om(e,t,r)>0;El.exports=im});var co=oe((Yv,Il)=>{"use strict";var sm=Et(),am=(e,t,r)=>sm(e,t,r)<0;Il.exports=am});var Ni=oe((Jv,Al)=>{"use strict";var cm=Et(),lm=(e,t,r)=>cm(e,t,r)===0;Al.exports=lm});var Mi=oe((Qv,_l)=>{"use strict";var um=Et(),dm=(e,t,r)=>um(e,t,r)!==0;_l.exports=dm});var lo=oe((Zv,Pl)=>{"use strict";var fm=Et(),pm=(e,t,r)=>fm(e,t,r)>=0;Pl.exports=pm});var uo=oe((ex,Dl)=>{"use strict";var mm=Et(),gm=(e,t,r)=>mm(e,t,r)<=0;Dl.exports=gm});var ji=oe((tx,Ll)=>{"use strict";var hm=Ni(),bm=Mi(),vm=ln(),xm=lo(),ym=co(),Sm=uo(),wm=(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 hm(e,r,n);case"!=":return bm(e,r,n);case">":return vm(e,r,n);case">=":return xm(e,r,n);case"<":return ym(e,r,n);case"<=":return Sm(e,r,n);default:throw new TypeError(`Invalid operator: ${t}`)}};Ll.exports=wm});var $l=oe((rx,Bl)=>{"use strict";var Rm=et(),Tm=fr(),{safeRe:fo,t:po}=qr(),km=(e,t)=>{if(e instanceof Rm)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?fo[po.COERCEFULL]:fo[po.COERCE]);else{let f=t.includePrerelease?fo[po.COERCERTLFULL]:fo[po.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 Tm(`${n}.${o}.${i}${s}${u}`,t)};Bl.exports=km});var Nl=oe((nx,Ol)=>{"use strict";var Cm=fr(),Em=Ur(),Im=et(),Am=(e,t,r)=>{if(!Em.RELEASE_TYPES.includes(t))return null;let n=_m(e,r);return n&&Pm(n,t)},_m=(e,t)=>{let r=e instanceof Im?e.version:e;return Cm(r,t)},Pm=(e,t)=>{if(Dm(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()},Dm=e=>e.startsWith("pre");Ol.exports=Am});var jl=oe((ox,Ml)=>{"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}};Ml.exports=Vi});var It=oe((ix,ql)=>{"use strict";var Lm=/\s+/g,Fi=class e{constructor(t,r){if(r=$m(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(Lm," "),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=>!Fl(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&&Hm(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(qm,"");let n=((this.options.includePrerelease&&Fm)|(this.options.loose&&Um))+":"+t,o=Vl.get(n);if(o)return o;let i=this.options.loose,s=i?gt[tt.HYPHENRANGELOOSE]:gt[tt.HYPHENRANGE];t=t.replace(s,tg(this.options.includePrerelease)),De("hyphen replace",t),t=t.replace(gt[tt.COMPARATORTRIM],Mm),De("comparator trim",t),t=t.replace(gt[tt.TILDETRIM],jm),De("tilde trim",t),t=t.replace(gt[tt.CARETTRIM],Vm),De("caret trim",t);let u=t.split(" ").map(p=>Gm(p,this.options)).join(" ").split(/\s+/).map(p=>eg(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(Fl(p))return[p];f.set(p.value,p)}f.size>1&&f.has("")&&f.delete("");let w=[...f.values()];return Vl.set(n,w),w}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(n=>Ul(n,r)&&t.set.some(o=>Ul(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 Om(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(rg(this.set[r],t,this.options))return!0;return!1}};ql.exports=Fi;var Bm=jl(),Vl=new Bm,$m=ro(),Ui=un(),De=cn(),Om=et(),{safeRe:gt,src:Nm,t:tt,comparatorTrimReplace:Mm,tildeTrimReplace:jm,caretTrimReplace:Vm}=qr(),{FLAG_INCLUDE_PRERELEASE:Fm,FLAG_LOOSE:Um}=Ur(),qm=new RegExp(Nm[tt.BUILD],"g"),Fl=e=>e.value==="<0.0.0-0",Hm=e=>e.value==="",Ul=(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},Gm=(e,t)=>(e=e.replace(gt[tt.BUILD],""),De("comp",e,t),e=Km(e,t),De("caret",e),e=Xm(e,t),De("tildes",e),e=Jm(e,t),De("xrange",e),e=Zm(e,t),De("stars",e),e),He=e=>!e||e.toLowerCase()==="x"||e==="*",Wm=(e,t,r)=>He(e)&&!He(t)||He(t)&&r&&!He(r),Xm=(e,t)=>e.trim().split(/\s+/).map(r=>zm(r,t)).join(" "),zm=(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 He(o)?f="":He(i)?f=`>=${o}.0.0 <${+o+1}.0.0-0`:He(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})},Km=(e,t)=>e.trim().split(/\s+/).map(r=>Ym(r,t)).join(" "),Ym=(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 He(i)?g="":He(s)?g=`>=${i}.0.0${n} <${+i+1}.0.0-0`:He(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})},Jm=(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),Wm(i,s,u))return e;let g=He(i),w=g||He(s),p=w||He(u),v=p;return o==="="&&v&&(o=""),f=t.includePrerelease?"-0":"",g?o===">"||o==="<"?n="<0.0.0-0":n="*":o&&v?(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})},Zm=(e,t)=>(De("replaceStars",e,t),e.trim().replace(gt[tt.STAR],"")),eg=(e,t)=>(De("replaceGTE0",e,t),e.trim().replace(gt[t.includePrerelease?tt.GTE0PRE:tt.GTE0],"")),tg=e=>(t,r,n,o,i,s,u,f,g,w,p,v)=>(He(n)?r="":He(o)?r=`>=${n}.0.0${e?"-0":""}`:He(i)?r=`>=${n}.${o}.0${e?"-0":""}`:s?r=`>=${r}`:r=`>=${r}${e?"-0":""}`,He(g)?f="":He(w)?f=`<${+g+1}.0.0-0`:He(p)?f=`<${g}.${+w+1}.0-0`:v?f=`<=${g}.${w}.${p}-${v}`:e?f=`<${g}.${w}.${+p+1}-0`:f=`<=${f}`,`${r} ${f}`.trim()),rg=(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 un=oe((sx,Kl)=>{"use strict";var dn=Symbol("SemVer ANY"),Gi=class e{static get ANY(){return dn}constructor(t,r){if(r=Hl(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===dn?this.value="":this.value=this.operator+this.semver.version,Hi("comp",this)}parse(t){let r=this.options.loose?Gl[Wl.COMPARATORLOOSE]:Gl[Wl.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 Xl(n[2],this.options.loose):this.semver=dn}toString(){return this.value}test(t){if(Hi("Comparator.test",t,this.options.loose),this.semver===dn||t===dn)return!0;if(typeof t=="string")try{t=new Xl(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 zl(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new zl(this.value,r).test(t.semver):(r=Hl(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(">")))}};Kl.exports=Gi;var Hl=ro(),{safeRe:Gl,t:Wl}=qr(),qi=ji(),Hi=cn(),Xl=et(),zl=It()});var fn=oe((ax,Yl)=>{"use strict";var ng=It(),og=(e,t,r)=>{try{t=new ng(t,r)}catch{return!1}return t.test(e)};Yl.exports=og});var Ql=oe((cx,Jl)=>{"use strict";var ig=It(),sg=(e,t)=>new ig(e,t).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));Jl.exports=sg});var eu=oe((lx,Zl)=>{"use strict";var ag=et(),cg=It(),lg=(e,t,r)=>{let n=null,o=null,i=null;try{i=new cg(t,r)}catch{return null}return e.forEach(s=>{i.test(s)&&(!n||o.compare(s)===-1)&&(n=s,o=new ag(n,r))}),n};Zl.exports=lg});var ru=oe((ux,tu)=>{"use strict";var ug=et(),dg=It(),fg=(e,t,r)=>{let n=null,o=null,i=null;try{i=new dg(t,r)}catch{return null}return e.forEach(s=>{i.test(s)&&(!n||o.compare(s)===1)&&(n=s,o=new ug(n,r))}),n};tu.exports=fg});var iu=oe((dx,ou)=>{"use strict";var Wi=et(),pg=It(),nu=ln(),mg=(e,t)=>{e=new pg(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||nu(u,i))&&(i=u);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${s.operator}`)}}),i&&(!r||nu(r,i))&&(r=i)}return r&&e.test(r)?r:null};ou.exports=mg});var au=oe((fx,su)=>{"use strict";var gg=It(),hg=(e,t)=>{try{return new gg(e,t).range||"*"}catch{return null}};su.exports=hg});var mo=oe((px,du)=>{"use strict";var bg=et(),uu=un(),{ANY:vg}=uu,xg=It(),yg=fn(),cu=ln(),lu=co(),Sg=uo(),wg=lo(),Rg=(e,t,r,n)=>{e=new bg(e,n),t=new xg(t,n);let o,i,s,u,f;switch(r){case">":o=cu,i=Sg,s=lu,u=">",f=">=";break;case"<":o=lu,i=wg,s=cu,u="<",f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(yg(e,t,n))return!1;for(let g=0;g<t.set.length;++g){let w=t.set[g],p=null,v=null;if(w.forEach(c=>{c.semver===vg&&(c=new uu(">=0.0.0")),p=p||c,v=v||c,o(c.semver,p.semver,n)?p=c:s(c.semver,v.semver,n)&&(v=c)}),p.operator===u||p.operator===f||(!v.operator||v.operator===u)&&i(e,v.semver))return!1;if(v.operator===f&&s(e,v.semver))return!1}return!0};du.exports=Rg});var pu=oe((mx,fu)=>{"use strict";var Tg=mo(),kg=(e,t,r)=>Tg(e,t,">",r);fu.exports=kg});var gu=oe((gx,mu)=>{"use strict";var Cg=mo(),Eg=(e,t,r)=>Cg(e,t,"<",r);mu.exports=Eg});var vu=oe((hx,bu)=>{"use strict";var hu=It(),Ig=(e,t,r)=>(e=new hu(e,r),t=new hu(t,r),e.intersects(t,r));bu.exports=Ig});var yu=oe((bx,xu)=>{"use strict";var Ag=fn(),_g=Et();xu.exports=(e,t,r)=>{let n=[],o=null,i=null,s=e.sort((w,p)=>_g(w,p,r));for(let w of s)Ag(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 Cu=oe((vx,ku)=>{"use strict";var Su=It(),Ki=un(),{ANY:Xi}=Ki,zi=fn(),Yi=Et(),Pg=(e,t,r={})=>{if(e===t)return!0;e=new Su(e,r),t=new Su(t,r);let n=!1;e:for(let o of e.set){for(let i of t.set){let s=Lg(o,i,r);if(n=n||s!==null,s)continue e}if(n)return!1}return!0},Dg=[new Ki(">=0.0.0-0")],wu=[new Ki(">=0.0.0")],Lg=(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=Dg:e=wu}if(t.length===1&&t[0].semver===Xi){if(r.includePrerelease)return!0;t=wu}let n=new Set,o,i;for(let c of e)c.operator===">"||c.operator===">="?o=Ru(o,c,r):c.operator==="<"||c.operator==="<="?i=Tu(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,v=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(v&&c.semver.prerelease&&c.semver.prerelease.length&&c.semver.major===v.major&&c.semver.minor===v.minor&&c.semver.patch===v.patch&&(v=!1),c.operator===">"||c.operator===">="){if(u=Ru(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=Tu(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||v||p)},Ru=(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},Tu=(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};ku.exports=Pg});var Qi=oe((xx,Au)=>{"use strict";var Ji=qr(),Eu=Ur(),Bg=et(),Iu=Bi(),$g=fr(),Og=Qc(),Ng=el(),Mg=nl(),jg=sl(),Vg=cl(),Fg=ul(),Ug=fl(),qg=ml(),Hg=Et(),Gg=vl(),Wg=yl(),Xg=ao(),zg=Tl(),Kg=Cl(),Yg=ln(),Jg=co(),Qg=Ni(),Zg=Mi(),eh=lo(),th=uo(),rh=ji(),nh=$l(),oh=Nl(),ih=un(),sh=It(),ah=fn(),ch=Ql(),lh=eu(),uh=ru(),dh=iu(),fh=au(),ph=mo(),mh=pu(),gh=gu(),hh=vu(),bh=yu(),vh=Cu();Au.exports={parse:$g,valid:Og,clean:Ng,inc:Mg,diff:jg,major:Vg,minor:Fg,patch:Ug,prerelease:qg,compare:Hg,rcompare:Gg,compareLoose:Wg,compareBuild:Xg,sort:zg,rsort:Kg,gt:Yg,lt:Jg,eq:Qg,neq:Zg,gte:eh,lte:th,cmp:rh,coerce:nh,truncate:oh,Comparator:ih,Range:sh,satisfies:ah,toComparators:ch,maxSatisfying:lh,minSatisfying:uh,minVersion:dh,validRange:fh,outside:ph,gtr:mh,ltr:gh,intersects:hh,simplifyRange:bh,subset:vh,SemVer:Bg,re:Ji.re,src:Ji.src,tokens:Ji.t,SEMVER_SPEC_VERSION:Eu.SEMVER_SPEC_VERSION,RELEASE_TYPES:Eu.RELEASE_TYPES,compareIdentifiers:Iu.compareIdentifiers,rcompareIdentifiers:Iu.rcompareIdentifiers}});var T=D(Ie(),1);var Mc=D(Ie(),1);var Fr=D(H(),1);function jc({path:e}){return e.length===0?null:(0,Fr.jsx)(b,{children:e.map((t,r)=>(0,Fr.jsxs)(Mc.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 _u=D(Qi(),1),xh=1,yh=new Set(["discover","workflow","nudge","recovery"]),Sh=new Set(["run","generate","both"]),wh=new Set(["banner","footer"]),go=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 Rh(e){if(!go(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 Pu(e,t){return e.text[t]??e.text.default??(e.target!=="both"?e.text[e.target]:void 0)}function Th(e,t){return t==="both"?!!e.default||!!e.run&&!!e.generate:t==="run"?!!e.run||!!e.default:!!e.generate||!!e.default}function kh(e,t){if(!go(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 Ch(e){if(!go(e))return null;let t=Hr(e.id);if(!t)return null;let r=Sh.has(e.target)?e.target:void 0;if(e.target!==void 0&&r===void 0)return null;let n=r??"both",o=Rh(e.text);if(!Th(o,n))return null;let i=yh.has(e.category)?e.category:"nudge",s=wh.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)&&_u.default.coerce(e.minVersion)?e.minVersion:void 0,v=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,_=kh(e.boost,f);return{id:t,category:i,surface:s,target:n,text:o,weight:f,cooldownSessions:w,minVersion:p,relevance:v,retireAfterShows:m,boost:_}}function ho(e){if(!go(e)||!Array.isArray(e.hints)||typeof e.enabled!="boolean")return{catalog:null,dropped:0};let t=Gr(e.schemaVersion)??0;if(Math.floor(t)>xh)return{catalog:null,dropped:0};let r=0,n=new Set,o=[];for(let i of e.hints){let s=Ch(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 Bu=D(H(),1),Du="tip: ";function Lu({hint:e,mode:t,termWidth:r}){if(e.target!=="both"&&e.target!==t)return null;let n=Pu(e,t);if(!n)return null;let o=Math.max(8,r-Du.length-2),i=n.length>o?n.slice(0,o-1)+"\u2026":n;return(0,Bu.jsx)(a,{color:l.dim,children:Du+i})}var ne=D(H(),1);function bo(e,t){return e.length<=t?e:`${e.slice(0,Math.max(1,t-1))}\u2026`}function Eh(e,t){if(e.kind==="desktop")return"Desktop";let r=rn(e.kind);return e.deviceName?e.appPackage&&t>=72?`${r} \xB7 ${bo(e.deviceName,30)} \xB7 ${bo(e.appPackage,36)}`:t>=48?`${r} \xB7 ${bo(e.deviceName,40)}`:`${r} \xB7 ${bo(e.deviceName,Math.max(8,t-12))}`:t<36?r:`${r} \xB7 setting up`}function $u({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:v=!1}){let{stdout:c}=$r(),m=c?.columns??80,_=u??"run",U=t==="stage",B=t==="prod",F=_==="generate"?l.generateAccent:l.orange,q=g==="completed"?l.green:g==="failed"?l.red:l.generateAccent,$=Eh(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)(jc,{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:_==="generate"?"Generate":"Run"}),(0,ne.jsx)(a,{color:l.muted,children:"|"}),_==="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:q,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"}),_==="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:Hs()})]}),(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:$}),v&&(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)(Lu,{hint:w,mode:_,termWidth:m})})]})}var Cr=D(Ie(),1);var pn=[[[" "],[" "],[" "],[" "],["\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 xe=D(H(),1),vo="#af87d7",Zi="#875faf",Ou="#5b3a7a",Ih="#ff9500",Ah="#ea580c";var es="#666666",_h="#555555",kr=[[vo,"\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"],[vo,"\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"],[vo,"\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"],[vo,"\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=kr.map(([,e])=>[...e]);function Nu({visibleRows:e=kr.length}){let t=Math.min(e,kr.length);return(0,xe.jsxs)(b,{flexDirection:"column",children:[kr.slice(0,t).map(([r,n],o)=>{let i=ts[o];return(0,xe.jsx)(a,{children:i.map((s,u)=>{if(s==="\u2588")return(0,xe.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,xe.jsx)(a,{color:Ou,children:"\u2592"},u):(0,xe.jsx)(a,{children:" "},u)})},o)}),t>=kr.length&&(0,xe.jsxs)(a,{children:[" ",ts[kr.length-1].map((r,n)=>r==="\u2588"?(0,xe.jsx)(a,{color:Ou,children:"\u2580"},n):(0,xe.jsx)(a,{children:" "},n))]})]})}function Ph({visibleRows:e=pn.length}){let t=Math.min(e,pn.length);return(0,xe.jsx)(b,{flexDirection:"column",children:pn.slice(0,t).map((r,n)=>(0,xe.jsx)(a,{children:r.map((o,i)=>{let s=o[0],u=o[1],f=o[2];return u?(0,xe.jsx)(a,{color:u,backgroundColor:f,children:s},i):(0,xe.jsx)(a,{children:s},i)})},n))})}function xo({size:e="compact",helmetVisibleRows:t=pn.length,textVisibleRows:r=kr.length,showMeta:n=!1,user:o=null,authenticated:i=!1,version:s=""}){return e==="compact"?(0,xe.jsx)(Nu,{}):(0,xe.jsxs)(b,{flexDirection:"column",paddingX:1,paddingY:1,children:[(0,xe.jsx)(a,{color:Ih,italic:!0,children:" Welcome to"}),(0,xe.jsx)(a,{children:" "}),(0,xe.jsxs)(b,{gap:2,children:[(0,xe.jsx)(Ph,{visibleRows:t}),(0,xe.jsxs)(b,{flexDirection:"column",children:[(0,xe.jsx)(Nu,{visibleRows:r}),(0,xe.jsx)(b,{justifyContent:"flex-end",width:73,children:(0,xe.jsx)(a,{color:Ah,italic:!0,children:"Command-line interface"})})]})]}),n&&(0,xe.jsxs)(xe.Fragment,{children:[(0,xe.jsx)(a,{children:" "}),(0,xe.jsxs)(a,{children:[(0,xe.jsx)(a,{color:es,children:" The validation layer for AI coding agents. "}),(0,xe.jsx)(a,{color:_h,children:`v${s}`})]}),(0,xe.jsx)(a,{children:" "}),(0,xe.jsx)(a,{children:(0,xe.jsx)(a,{color:es,children:" Kane-CLI: natural-language web & mobile-app automation, plus"})}),(0,xe.jsx)(a,{children:(0,xe.jsx)(a,{color:es,children:" requirements-to-coverage assurance \u2014 from your CLI or IDE."})}),(0,xe.jsx)(a,{children:" "})]})]})}var os=D(H(),1),rs=8,ns=7;function Mu({onComplete:e}){let[t,r]=(0,Cr.useState)(0),[n,o]=(0,Cr.useState)(0),[i,s]=(0,Cr.useState)(!1),[u]=(0,Cr.useState)(()=>{let f=new Hn,g=f.getActiveProfile(),w=f.getDefaultEnv(),p=g?f.loadCredentials(g,w):null,v=g?f.loadBasicAuth(g,w):null;return{authenticated:!!(p||v),user:v?.username??g??null}});return gi(()=>{r(f=>Math.min(rs,f+1))},t<rs?60:null),gi(()=>{o(f=>Math.min(ns,f+1))},n<ns?80:null),(0,Cr.useEffect)(()=>{t>=rs&&n>=ns&&!i&&(s(!0),e?.())},[t,n,i,e]),(0,os.jsx)(b,{flexDirection:"column",children:(0,os.jsx)(xo,{size:"full",helmetVisibleRows:t,textVisibleRows:n,showMeta:i,user:u.user,authenticated:u.authenticated,version:xt})})}var Zt=D(H(),1);function ju({entry:e}){return e.type==="input"?(0,Zt.jsxs)(b,{children:[(0,Zt.jsx)(a,{color:l.orange,children:"\u276F "}),(0,Zt.jsx)(a,{children:e.text})]}):e.type==="error"?(0,Zt.jsx)(b,{marginLeft:2,children:(0,Zt.jsx)(a,{color:l.red,children:e.text})}):(0,Zt.jsx)(b,{marginLeft:2,children:(0,Zt.jsx)(a,{color:e.type==="info"?l.dim:void 0,children:e.text})})}var is=D(H(),1);function Vu({objective:e}){let{stdout:t}=$r(),r=Math.max(24,(t?.columns??80)-4);return(0,is.jsx)(Qt,{title:"run",width:r,children:(0,is.jsx)(Ws,{label:"objective",value:e})})}var Gt=D(Ie(),1);var ht=D(H(),1);function Dh(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 Fu({data:e,width:t=60}){let r=Dh(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(H(),1);function yo(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,v]=(0,Gt.useState)(()=>{let F=r??[],q=yo(e,F),$=0;if(F.length>0){let z=q.findIndex(ae=>ae.item.id===F[0]);z>=0&&z+1<q.length&&($=z+1)}return{expandedPath:F,selectedIndex:$,inputValue:"",isEditing:!1,isSelecting:!1,feedback:null,activeView:null,infoData:null}}),c=yo(e,p.expandedPath),m=c[p.selectedIndex]?.item,_=(0,Gt.useRef)(null),U=(0,Gt.useCallback)(F=>{v(q=>({...q,feedback:F})),_.current&&clearTimeout(_.current),_.current=setTimeout(()=>{v(q=>({...q,feedback:null})),_.current=null},4e3)},[]);(0,Gt.useEffect)(()=>()=>{_.current&&clearTimeout(_.current)},[]),(0,Gt.useEffect)(()=>{w?.(p.activeView)},[p.activeView,w]);let B=(0,Gt.useCallback)(()=>{v(F=>({...F,activeView:null,infoData:null}))},[]);return Be((F,q)=>{if(p.activeView==="infoView"){q.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(q.escape){v($=>({...$,isEditing:!1,inputValue:""}));return}if(q.return){let $=p.inputValue.trim();if(m?.onValue&&$){let z=m.currentValue;m.onValue($),U(z?`${m.label}: ${z} \u2192 ${$}`:`${m.label}: ${$}`)}v(z=>({...z,isEditing:!1,inputValue:""}));return}if(q.backspace||q.delete){v($=>({...$,inputValue:$.inputValue.slice(0,-1)}));return}F&&!q.ctrl&&!q.meta&&v($=>({...$,inputValue:$.inputValue+F}));return}if(p.isSelecting&&m?.options){let $=m.options;if(q.escape){v(z=>({...z,isSelecting:!1}));return}if(q.upArrow){v(z=>({...z,inputValue:String(Math.max(0,Number(z.inputValue||"0")-1))}));return}if(q.downArrow){v(z=>({...z,inputValue:String(Math.min($.length-1,Number(z.inputValue||"0")+1))}));return}if(q.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}`)}v(te=>({...te,isSelecting:!1,inputValue:""}));return}return}if(q.upArrow){v($=>({...$,selectedIndex:Math.max(0,$.selectedIndex-1)}));return}if(q.downArrow){v($=>({...$,selectedIndex:Math.min(c.length-1,$.selectedIndex+1)}));return}if(q.escape){if(p.expandedPath.length===0){n?.();return}v($=>{let z=$.expandedPath.slice(0,-1),ae=yo(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(q.return&&m){if(m.id==="run-start"){t();return}if(m.type==="submenu"){let $=c[p.selectedIndex]?.depth??0;v(z=>{let ae=[...z.expandedPath.slice(0,$),m.id],te=yo(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();v(z=>({...z,activeView:"infoView",infoData:$}));return}if(m.onLoginWizard){m.onLoginWizard(),v($=>({...$,activeView:"loginWizard"}));return}if(m.onProfilesView){m.onProfilesView(),v($=>({...$,activeView:"profilesView"}));return}if(m.onChromeProfilePicker){m.onChromeProfilePicker(),v($=>({...$,activeView:"chromeProfilePicker"}));return}if(m.onProjectPicker){m.onProjectPicker(),v($=>({...$,activeView:"projectPicker"}));return}if(m.onFolderPicker){m.onFolderPicker(),v($=>({...$,activeView:"folderPicker"}));return}if(m.onWindowSizePicker){m.onWindowSizePicker(),v($=>({...$,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);v(z=>({...z,isSelecting:!0,inputValue:String(Math.max(0,$))}));return}if(m.type==="text-input"){v($=>({...$,isEditing:!0,inputValue:m.currentValue??""}));return}}}}),(0,rt.jsx)(b,{flexDirection:"column",paddingX:1,children:p.activeView==="infoView"&&p.infoData?(0,rt.jsx)(Fu,{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:q},$)=>{let z=$===p.selectedIndex,ae=" ".repeat(q),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&&q>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)(Vt,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"select"}],escBackLabel:"back"})]})})}var J=D(Ie(),1);import{access as Lh}from"fs/promises";async function Uu(e){try{return await Lh(e),!0}catch{return!1}}function Bh(e,t){if(Tr(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 $h(e){return e==="emulator"||e==="simulator"?e:null}var So={emulator:"android",simulator:"ios"};function Oh(e){return`${e.platform}\0${e.kind}\0${ra(e)}`}function Nh(e,t){let r=t.id!==void 0?{...t,id:wi(t.id)}:t,n=e.map(i=>i.virtualName!==void 0?{...i,virtualName:wi(i.virtualName)}:i),o=ta(n.filter(i=>Js(i,r)));return o?e.find(i=>i.id===o.id):void 0}function qu(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)([]),[v,c]=(0,J.useState)([]),[m,_]=(0,J.useState)(null),[U,B]=(0,J.useState)(null),[F,q]=(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"),Ge=(0,J.useRef)(null),st=(0,J.useRef)(null),zt=(0,J.useRef)(null),Rt=(0,J.useRef)(()=>{}),ge=(0,J.useRef)({pathExists:Uu,...e});ge.current={pathExists:Uu,...e},(0,J.useEffect)(()=>{t==="ready"&&(Ge.current=null)},[t]);let ut=(0,J.useCallback)((P,L,Y)=>{Y().catch(X=>{P===me.current&&(_(null),B(X instanceof Error?X.message:String(X)),r(L))})},[]),Ot=(0,J.useCallback)(async(P,L,Y)=>{r("picking"),_("Looking for devices\u2026");let X=Y?So[Y]:void 0,ee=(await Xn(X)).filter(we=>!Y||we.kind===Y);if(P===me.current){if(p(ee),_(null),ee.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)((P,L)=>{let Y={target:P,savedDeviceLabel:P.displayName,savedKind:P.kind,...L?{appPath:L,savedAppLabel:u.current??L}:{},deviceMissing:!1,appMissing:!L};st.current=Y,zt.current=Y,te(Y),_(null),r("confirm")},[]),Le=(0,J.useCallback)(async(P,L)=>{let Y=nn(So[L]);if(!Y||!Y.available())return!0;let X=await Y.checks({appiumUrl:ge.current.getDefaults()?.appium_url});return P!==me.current?!1:(g(X),X.some(we=>we.required&&we.status==="fail"&&!we.fixedByBundle)?(_(null),r("doctor"),!1):!0)},[]),Kt=(0,J.useCallback)(async(P,L)=>{let Y=ge.current.getDefaults(),X=Y?.default_target;if(i.current=L,o(L),_("Checking the saved setup\u2026"),!await Le(P,L))return;let ee=So[L],we=(await Xn(ee)).filter(nr=>nr.kind===L);if(P!==me.current)return;p(we),_(null);let Je=X?Nh(we,X):void 0,le=ba(Y?.default_app)?Y?.default_app:void 0,St=le?Tr(le)||await ge.current.pathExists(le):!1;if(P!==me.current)return;let bt=le&&Tr(le)?await ge.current.appLabelFor?.(le)??le:le;if(P!==me.current)return;let Ce={...Je?{target:Je}:{},savedDeviceLabel:X?.id??"(unknown device)",savedKind:L,...le&&St?{appPath:le}:{},...bt?{savedAppLabel:bt}:{},deviceMissing:!Je,appMissing:!le||!St};st.current=Ce,zt.current=Ce,u.current=le&&bt!==le?bt:null,te(Ce),r("confirm")},[Le]),Me=(0,J.useCallback)(async(P,L)=>{r("checking");let Y=zn();if(P!==me.current)return;if(!Y.supported){g([{id:"host.platform",label:"host",required:!0,status:"fail",detail:Y.reason}]),r("doctor");return}g([]);let X=ge.current.getDefaults(),ee=$h(X?.default_target?.kind);if(L==="confirm"&&ee&&X?.default_target){st.current=null,te(null),await Kt(P,ee);return}r("chooser")},[Kt]),Yt=(0,J.useCallback)(P=>{let L=++me.current;i.current=P,o(P);let Y=ge.current.getDefaults();ge.current.setDefaults({...Y,tui_target:P}),B(null),ut(L,"chooser",async()=>{r("picking"),_(P==="simulator"?"Checking the iOS toolchain\u2026":"Checking the Android toolchain\u2026"),await Le(L,P)&&(_("Checking the mobile dependencies\u2026"),await Si().ensure(P,{automatic:!0,onProgress:X=>{L===me.current&&_(X)}}),L===me.current&&await Ot(L,$e.current,P))})},[Le,Ot,ut]),gr=(0,J.useCallback)((P="confirm",L={})=>{let Y=++me.current;$e.current=P;let X=ge.current.getDefaults();Ge.current=X?.tui_target??"desktop";let ee=(L.kind?Jt(L.kind):void 0)??Jt(X?.default_target?.kind??"")??"emulator";ge.current.setDefaults({...X,tui_target:ee}),g([]),p([]),c([]),q(null),z(null),B(null),te(null),st.current=null,re.current=null,K.current=null,P==="reinit"&&(pe.current=null),ut(Y,"doctor",()=>Me(Y,P))},[ut,Me]),Er=(0,J.useCallback)(()=>{let P=++me.current;B(null),ut(P,"doctor",()=>Me(P,$e.current))},[ut,Me]),Kr=(0,J.useCallback)(P=>{let L=++me.current;B(null),_("Installing managed mobile dependencies\u2026");let Y=P??["emulator",...process.platform==="darwin"?["simulator"]:[]];ut(L,"doctor",async()=>{for(let X of Y)await Si().ensure(X,{automatic:!1,approved:!0,onProgress:ee=>{L===me.current&&_(ee)}});L===me.current&&_(null),await Me(L,$e.current)})},[ut,Me]),Ir=(0,J.useCallback)(async P=>{let L=nn(P.platform);if(!L){B(`No provider registered for platform "${P.platform}"`);return}let X=await(ge.current.deviceBusyOn??(()=>la(ca(),[],[],P.kind)))({udid:P.id,displayName:P.displayName});if(X!==null){let Je=typeof X=="number"?X:X.port,le=typeof X=="number"?void 0:X.device;B(aa({udid:P.id,displayName:P.displayName},Je,le));return}re.current=P,K.current=L,z(P),B(null),c([]),Ri(L,P);let ee=s.current;ee&&!Bh(ee,P.kind)&&(s.current=null);let we=ge.current.getDefaults();ge.current.setDefaults({...we,...Jt(P.kind)?{tui_target:Jt(P.kind)}:{},default_target:Wn(P)}),s.current&&q(Or(P,s.current,{noReset:we?.no_reset,appiumUrl:we?.appium_url,autoGrantPermissions:we?.auto_grant_permissions,autoAcceptAlerts:we?.auto_accept_alerts})),Oe(P,s.current)},[Oe]),hr=(0,J.useCallback)((P={})=>{let L=st.current;if(!L?.target){B("That device is no longer connected \u2014 pick another one.");return}let Y=L.target,X=nn(Y.platform);if(!X){B(`No provider registered for platform "${Y.platform}"`);return}if(re.current=Y,K.current=X,z(Y),B(null),c([]),Ri(X,Y),!(P.keepApp!==!1&&L.appPath)){r("appSource");return}let we=ge.current.getDefaults();s.current=L.appPath,q(Or(Y,L.appPath,{noReset:we?.no_reset,appiumUrl:we?.appium_url,autoGrantPermissions:we?.auto_grant_permissions,autoAcceptAlerts:we?.auto_accept_alerts})),r("ready")},[]),br=(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")},[]),vr=(0,J.useCallback)(()=>{if(!re.current||!K.current){B("Pick a device before choosing an app");return}B(null),r("appId")},[]),Ar=(0,J.useCallback)(async P=>{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 X=++me.current;B(null),_("Downloading the application \u2014 this can take a while, please wait\u2026");try{let ee=await Y(P,Je=>{X===me.current&&_(Je)});if(X!==me.current)return{ok:!1};let we=ge.current.getDefaults();return s.current=P,u.current=ee.name,pe.current=null,_(null),q(Or(L,P,{noReset:we?.no_reset,appiumUrl:we?.appium_url,autoGrantPermissions:we?.auto_grant_permissions,autoAcceptAlerts:we?.auto_accept_alerts})),ge.current.setDefaults({...we,...Jt(L.kind)?{tui_target:Jt(L.kind)}:{},default_target:Wn(L),default_app:P}),Oe(L,P),{ok:!0}}catch(ee){return X!==me.current?{ok:!1}:(_(null),{ok:!1,error:ee instanceof Error?ee.message:String(ee)})}},[Oe]),xr=(0,J.useCallback)(()=>{if(!re.current||!K.current){B("Pick a device before choosing an app");return}r("appSource")},[]),Z=(0,J.useCallback)(async(P,L={})=>{let Y=L.persist!==!1,X=re.current;if(!X)return B("Pick a device before choosing an app"),{ok:!1,error:"Pick a device before choosing an app"};if(P.kind!=="package"&&!await ge.current.pathExists(P.value))return{ok:!1,error:`${P.value} is not there.`};let ee=ge.current.getDefaults();return s.current=P.value,u.current=null,pe.current=null,B(null),_(null),q(Or(X,P.value,{noReset:ee?.no_reset,appiumUrl:ee?.appium_url,autoGrantPermissions:ee?.auto_grant_permissions,autoAcceptAlerts:ee?.auto_accept_alerts})),Oe(X,P.value),Y&&ge.current.setDefaults({...ee,...Jt(X.kind)?{tui_target:Jt(X.kind)}:{},default_target:Wn(X),default_app:P.value}),{ok:!0}},[Oe]),ue=(0,J.useCallback)(()=>{r("appSource")},[]),ce=(0,J.useCallback)(async P=>{let L=re.current,Y=K.current;if(!L||!Y)return{ok:!1,error:"No device is bound \u2014 run /mobile first"};try{let X=await ma(Y,L,bt=>_(bt)),ee=await Y.ensureApp(X,P,bt=>_(bt));_(null);let we=Oh(L);pe.current={targetIdentity:we,packageId:ee};let Je=Re.current.get(we)??[];if(!Je.includes(ee)){let bt=[...Je,ee].sort();Re.current.set(we,bt),c(bt)}let le=ge.current.getDefaults(),St=Or(X,ee,{noReset:le?.no_reset,appiumUrl:le?.appium_url,autoGrantPermissions:le?.auto_grant_permissions,autoAcceptAlerts:le?.auto_accept_alerts});return q(St),{ok:!0,device:St}}catch(X){return _(null),{ok:!1,error:X instanceof Error?X.message:String(X)}}},[]),ie=(0,J.useCallback)(async()=>{let P=re.current;if(!P)return{ok:!1,reason:"No device is selected.",step:"device"};let L=So[P.kind];if(!(await Xn(L)).some(ee=>ee.id===P.id||ee.virtualName&&ee.virtualName===P.virtualName))return{ok:!1,reason:`${P.displayName} is no longer connected.`,step:"device"};let X=s.current;return X?Tr(X)?{ok:!0}:await ge.current.pathExists(X)?{ok:!0}:{ok:!1,reason:`${X} is no longer there.`,step:"app"}:{ok:!1,reason:"No app is selected.",step:"app"}},[]),de=(0,J.useCallback)(()=>{++me.current,zt.current=null,r("idle"),g([]),p([]),c([]),_(null),B(null),q(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 P=zt.current,L=()=>{if(!P)return!1;let Y=P.target?nn(P.target.platform):null;return re.current=P.target??null,K.current=Y??null,s.current=P.appPath??null,st.current=P,i.current=P.savedKind,o(P.savedKind),z(P.target??null),te(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),_(null),r("appSource");return;case"chooser":if(L())return;Rt.current();return;default:Rt.current()}},[t,Oe]),dt=(0,J.useCallback)(()=>{let P=Ge.current;if(P){let L=ge.current.getDefaults();ge.current.setDefaults({...L,tui_target:P}),Ge.current=null}de()},[de]);return Rt.current=dt,{phase:t,kind:n,selectKind:Yt,checks:f,targets:w,apps:v,busyMessage:m,error:U,device:F,target:$,saved:ae,begin:gr,recheck:Er,install:Kr,cancel:dt,back:Te,selectTarget:Ir,confirmSaved:hr,requestApp:br,requestAppSource:xr,requestCloudApps:Tt,requestAppId:vr,selectApp:Z,selectAppId:Ar,skipApp:ue,bindAppForRun:ce,validateBinding:ie,reset:de}}var mn=D(Ie(),1);function Hu(e){let{phase:t,device:r,requestApp:n,pendingRef:o,dispatch:i,notify:s,onSettle:u}=e,f=(0,mn.useRef)(null),g=(0,mn.useRef)(!1);(0,mn.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 Mh}from"fs/promises";async function Gu(e){let t=e.statFile??Mh,r="";if(!Tr(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 Wu(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 zu,readdir as jh,stat as Vh}from"fs/promises";import{extname as Ku,join as Yu,relative as Fh}from"path";var Uh=new Set(["node_modules",".git"]),qh=new Set([".apk",".zip",".apks",".aab",".ipa",".app"]);function Ju(e){return e.state!=="incompatible"}var Xu=new Map;function Hh(e,t){return`${e}\0${t?.platform??""}\0${t?.androidApiLevel??""}\0${t?.androidAbis?.join(",")??""}`}function Gh(e){let t=typeof e=="number"?e:typeof e=="string"?Number(e):NaN;return Number.isInteger(t)&&t>0?t:void 0}function Wh(e){let t=new Set;return oa(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 jh(f,{withFileTypes:!0,encoding:"utf8"})}catch{return}for(let p of w){if(s.length>=n)return;if(p.name.startsWith(".")||Uh.has(p.name)||p.name.startsWith("output-"))continue;let v=Yu(f,p.name),c=Ku(p.name).toLowerCase();if(qh.has(c)&&(p.isFile()||c===".app"&&p.isDirectory())){let _=Fh(e,v);(!i||_.toLowerCase().includes(i))&&s.push(_);continue}p.isDirectory()&&await u(v,g+1)}}return await u(e,0),s}async function Zu(e,t){let r;try{r=(await Vh(e)).mtimeMs}catch{}let n=Hh(e,t),o=r===void 0?void 0:Xu.get(n);if(o&&o.mtimeMs===r)return o.result;let i=u=>(r!==void 0&&Xu.set(n,{mtimeMs:r,result:u}),u),s=Ku(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=Gh(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=Wh(new Uint8Array(await zu(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(v=>t.androidAbis.includes(v)))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 zh(Yu(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&&Xh(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 Xh(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 zh(e){let r=(await zu(e)).toString("utf8");if(!r.startsWith("bplist"))try{return JSON.parse(r)}catch{}let{runExec:n}=await import("./exec-P2IKJRRR.js"),o=await n("plutil",["-convert","json","-o","-",e],{timeoutMs:15e3});if(o.code!==0)throw new Error(o.stderr.trim()||`plutil exited ${o.code}`);return JSON.parse(o.stdout)}var wo=D(Ie(),1);function ed(e){let t=(0,wo.useRef)(e);return t.current=e,(0,wo.useCallback)(async r=>{let{auth:n,env:o,kind:i,baseUrlFor:s,makeClient:u}=t.current,f=i();if(!f)throw new Error("Pick a device before browsing your uploads.");let w=await n.resolveBasicAuth().catch(()=>null)??n.getResolvedBasicAuth();if(!w?.username||!w.access_key)throw new Error("Log in to browse your uploads, or choose a local build.");let p=s?s(o):sn(o);return(u?u(p,{username:w.username,accessKey:w.access_key}):new da(p,{username:w.username,accessKey:w.access_key})).list({type:f,...r})},[])}var gn=D(H(),1);function td({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,gn.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,children:[(0,gn.jsx)(a,{color:l.orange,children:f}),(0,gn.jsxs)(a,{color:l.dim,children:[` \u21B5 ${g}`,e==="mobile"?" p pick a device":"",` k keep ${t}`," esc cancel"]})]})}async function rd(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=Kh(await i.json());return s&&e.cache?.set(e.objective,s),s}catch{return null}finally{clearTimeout(o)}}function Kh(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 nd(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 od=D(Ie(),1);var qe=D(H(),1),Yh={pass:"\u2713",fail:"\u2717",info:"\u2139"},Jh={pass:l.green,fail:l.red,info:l.secondary};function id({checks:e,busyMessage:t,onRetry:r,onInstall:n,onCancel:o}){let[i,s]=(0,od.useState)(!1);Be((v,c)=>{if(c.escape){o();return}(v==="r"||v==="R")&&r(),(v==="i"||v==="I")&&(i?n():s(!0))});let u=e.filter(v=>v.required&&v.status==="fail").length,f=e.filter(v=>v.status!=="info"),g=new Map;for(let v of f)v.status==="fail"&&v.fixText&&!g.has(v.fixText)&&g.set(v.fixText,v.id);let p=["emulator",...process.platform==="darwin"?["simulator"]:[]].map(v=>`\u2022 kaneai-mobile-deps ${v}
|
|
2
|
+
import{a as pi,b as Hs}from"./chunk-3MSXQU2C.js";import{a as xa,b as ya,c as Sa,d as Xa,e as za}from"./chunk-ZEVU2OT3.js";import{a as Oc}from"./chunk-EFTRH35G.js";import{a as xc,b as Ai,c as Zn,d as yc,e as eo,f as Sc,h as wc,i as Rc,j as Tc,k as kc,l as Cc,m as qt,n as Ec,o as Ic,p as Ac,q as to,r as _c,s as _i,t as Pc,u as Dc,v as Lc}from"./chunk-2WRBCTNM.js";import{b as Bc,c as $c}from"./chunk-XUJXGE42.js";import{B as Ii,C as fc,D as pc,E as mc,F as gc,I as Ut,L as bc,a as sn,b as wa,c as Ra,e as Ia,f as Aa,g as _a,h as Va,i as Fa,j as Ua,k as Yn,l as Ga,n as Ci,o as nc,p as Ei,r as oc,s as ic,t as sc,u as ac,v as cc,x as lc,y as uc,z as dc}from"./chunk-6K4FDYMH.js";import{c as Ja,d as Qa,n as vc}from"./chunk-OFWJBOGT.js";import{a as Nc,b as Pi}from"./chunk-UZIMYV5U.js";import{a as Jn,b as tc,c as ki}from"./chunk-HLCETZ73.js";import{c as rc}from"./chunk-4TMQTSIO.js";import{a as Qn}from"./chunk-RQILLYSP.js";import{c as hc}from"./chunk-O66WXOOC.js";import{a as ja}from"./chunk-ZKCCG3GK.js";import{F as La,J as Ba,K as Ti,L as $a,M as Oa}from"./chunk-7EGIX6Y4.js";import{c as Na,e as Ma}from"./chunk-GSDXZS4U.js";import{a as Gs,b as mi,c as ur,d as Gn,e as qa,f as Ha}from"./chunk-AYJ2YZP5.js";import{a as Wa}from"./chunk-YAAQER2L.js";import{c as Kn}from"./chunk-JSS22MFY.js";import{b as Ya,r as Za}from"./chunk-JQCOKL6U.js";import{a as zs,b as bi,c as Ks,d as Da,e as Ka,g as ec}from"./chunk-JCMHB4KH.js";import{e as Pa}from"./chunk-Z3YYMZHT.js";import{a as gi}from"./chunk-5Y2G4NC7.js";import{a as Vr}from"./chunk-MLYNVJNH.js";import{a as Ea}from"./chunk-SHSXOYKT.js";import{a as ra,b as Or,f as Ri,g as ma,j as ga,k as ha,l as ba,m as va}from"./chunk-NLEA6NPU.js";import{c as aa,e as ca,g as la}from"./chunk-6L5RV62W.js";import{b as Mr}from"./chunk-Z73ZYROU.js";import{b as jr}from"./chunk-OWGFFJKK.js";import{h as ka}from"./chunk-NUJVYAI4.js";import{a as an}from"./chunk-BPMSNGXQ.js";import{a as Ct,b as $t,c as Ta}from"./chunk-VE3SUJMA.js";import{a as Ca}from"./chunk-OGDAWNFY.js";import{a as wi,d as nn,e as Xn}from"./chunk-A557OSRS.js";import{j as Si}from"./chunk-6GLFQHSW.js";import{d as oa}from"./chunk-MSGW4JDG.js";import{a as zn,b as Rr}from"./chunk-TZXXJWHA.js";import{j as ua,n as Ft,o as on,p as dr,r as Nr}from"./chunk-RSSOJ3L2.js";import{a as fa,b as Tr,c as pa}from"./chunk-IAHOLH5W.js";import{h as da}from"./chunk-TAOHYWEO.js";import{b as vi}from"./chunk-WFBJNVMQ.js";import{c as xi}from"./chunk-EJXBKCNF.js";import{a as Vt}from"./chunk-YKYKOV6U.js";import{a as Ys,e as Js,f as Wn,g as Qs,h as Zs,i as ea,j as ta}from"./chunk-Z7S3IWUX.js";import{a as sa}from"./chunk-74FHTDEE.js";import{a as ia}from"./chunk-TEHZUSUY.js";import{a as Ue}from"./chunk-EPE2ELDH.js";import{a as yi}from"./chunk-NLCCBXXV.js";import{a as na}from"./chunk-RZ4F3BHX.js";import{a as Us,d as Jt,e as rn}from"./chunk-EYOCNMUM.js";import{a as Hn}from"./chunk-NWNG5UWD.js";import{a as hi}from"./chunk-YGMUNNKH.js";import{a as Qt,b as Ws}from"./chunk-XXE7W5AV.js";import{a as xt,b as mt,j as di,n as qs,o as fi,y as l}from"./chunk-HYTBEPC2.js";import{b as Xs}from"./chunk-DFS4RMVP.js";import{a as H}from"./chunk-HCBYKLMW.js";import{a as b,b as a,i as Be,j as Fs,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((Av,Vc)=>{"use strict";var fp="2.0.0",pp=Number.MAX_SAFE_INTEGER||9007199254740991,mp=16,gp=250,hp=["major","premajor","minor","preminor","patch","prepatch","prerelease"];Vc.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:mp,MAX_SAFE_BUILD_LENGTH:gp,MAX_SAFE_INTEGER:pp,RELEASE_TYPES:hp,SEMVER_SPEC_VERSION:fp,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var cn=oe((_v,Fc)=>{"use strict";var bp=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};Fc.exports=bp});var qr=oe((Ht,Uc)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:Di,MAX_SAFE_BUILD_LENGTH:vp,MAX_LENGTH:xp}=Ur(),yp=cn();Ht=Uc.exports={};var Sp=Ht.re=[],wp=Ht.safeRe=[],G=Ht.src=[],Rp=Ht.safeSrc=[],W=Ht.t={},Tp=0,Li="[a-zA-Z0-9-]",kp=[["\\s",1],["\\d",xp],[Li,vp]],Cp=e=>{for(let[t,r]of kp)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},se=(e,t,r)=>{let n=Cp(t),o=Tp++;yp(e,o,t),W[e]=o,G[o]=t,Rp[o]=n,Sp[o]=new RegExp(t,r?"g":void 0),wp[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",`(${G[W.NUMERICIDENTIFIER]})\\.(${G[W.NUMERICIDENTIFIER]})\\.(${G[W.NUMERICIDENTIFIER]})`);se("MAINVERSIONLOOSE",`(${G[W.NUMERICIDENTIFIERLOOSE]})\\.(${G[W.NUMERICIDENTIFIERLOOSE]})\\.(${G[W.NUMERICIDENTIFIERLOOSE]})`);se("PRERELEASEIDENTIFIER",`(?:${G[W.NONNUMERICIDENTIFIER]}|${G[W.NUMERICIDENTIFIER]})`);se("PRERELEASEIDENTIFIERLOOSE",`(?:${G[W.NONNUMERICIDENTIFIER]}|${G[W.NUMERICIDENTIFIERLOOSE]})`);se("PRERELEASE",`(?:-(${G[W.PRERELEASEIDENTIFIER]}(?:\\.${G[W.PRERELEASEIDENTIFIER]})*))`);se("PRERELEASELOOSE",`(?:-?(${G[W.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${G[W.PRERELEASEIDENTIFIERLOOSE]})*))`);se("BUILDIDENTIFIER",`${Li}+`);se("BUILD",`(?:\\+(${G[W.BUILDIDENTIFIER]}(?:\\.${G[W.BUILDIDENTIFIER]})*))`);se("FULLPLAIN",`v?${G[W.MAINVERSION]}${G[W.PRERELEASE]}?${G[W.BUILD]}?`);se("FULL",`^${G[W.FULLPLAIN]}$`);se("LOOSEPLAIN",`[v=\\s]*${G[W.MAINVERSIONLOOSE]}${G[W.PRERELEASELOOSE]}?${G[W.BUILD]}?`);se("LOOSE",`^${G[W.LOOSEPLAIN]}$`);se("GTLT","((?:<|>)?=?)");se("XRANGEIDENTIFIERLOOSE",`${G[W.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);se("XRANGEIDENTIFIER",`${G[W.NUMERICIDENTIFIER]}|x|X|\\*`);se("XRANGEPLAIN",`[v=\\s]*(${G[W.XRANGEIDENTIFIER]})(?:\\.(${G[W.XRANGEIDENTIFIER]})(?:\\.(${G[W.XRANGEIDENTIFIER]})(?:${G[W.PRERELEASE]})?${G[W.BUILD]}?)?)?`);se("XRANGEPLAINLOOSE",`[v=\\s]*(${G[W.XRANGEIDENTIFIERLOOSE]})(?:\\.(${G[W.XRANGEIDENTIFIERLOOSE]})(?:\\.(${G[W.XRANGEIDENTIFIERLOOSE]})(?:${G[W.PRERELEASELOOSE]})?${G[W.BUILD]}?)?)?`);se("XRANGE",`^${G[W.GTLT]}\\s*${G[W.XRANGEPLAIN]}$`);se("XRANGELOOSE",`^${G[W.GTLT]}\\s*${G[W.XRANGEPLAINLOOSE]}$`);se("COERCEPLAIN",`(^|[^\\d])(\\d{1,${Di}})(?:\\.(\\d{1,${Di}}))?(?:\\.(\\d{1,${Di}}))?`);se("COERCE",`${G[W.COERCEPLAIN]}(?:$|[^\\d])`);se("COERCEFULL",G[W.COERCEPLAIN]+`(?:${G[W.PRERELEASE]})?(?:${G[W.BUILD]})?(?:$|[^\\d])`);se("COERCERTL",G[W.COERCE],!0);se("COERCERTLFULL",G[W.COERCEFULL],!0);se("LONETILDE","(?:~>?)");se("TILDETRIM",`(\\s*)${G[W.LONETILDE]}\\s+`,!0);Ht.tildeTrimReplace="$1~";se("TILDE",`^${G[W.LONETILDE]}${G[W.XRANGEPLAIN]}$`);se("TILDELOOSE",`^${G[W.LONETILDE]}${G[W.XRANGEPLAINLOOSE]}$`);se("LONECARET","(?:\\^)");se("CARETTRIM",`(\\s*)${G[W.LONECARET]}\\s+`,!0);Ht.caretTrimReplace="$1^";se("CARET",`^${G[W.LONECARET]}${G[W.XRANGEPLAIN]}$`);se("CARETLOOSE",`^${G[W.LONECARET]}${G[W.XRANGEPLAINLOOSE]}$`);se("COMPARATORLOOSE",`^${G[W.GTLT]}\\s*(${G[W.LOOSEPLAIN]})$|^$`);se("COMPARATOR",`^${G[W.GTLT]}\\s*(${G[W.FULLPLAIN]})$|^$`);se("COMPARATORTRIM",`(\\s*)${G[W.GTLT]}\\s*(${G[W.LOOSEPLAIN]}|${G[W.XRANGEPLAIN]})`,!0);Ht.comparatorTrimReplace="$1$2$3";se("HYPHENRANGE",`^\\s*(${G[W.XRANGEPLAIN]})\\s+-\\s+(${G[W.XRANGEPLAIN]})\\s*$`);se("HYPHENRANGELOOSE",`^\\s*(${G[W.XRANGEPLAINLOOSE]})\\s+-\\s+(${G[W.XRANGEPLAINLOOSE]})\\s*$`);se("STAR","(<|>)?=?\\s*\\*");se("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");se("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var ro=oe((Pv,qc)=>{"use strict";var Ep=Object.freeze({loose:!0}),Ip=Object.freeze({}),Ap=e=>e?typeof e!="object"?Ep:e:Ip;qc.exports=Ap});var Bi=oe((Dv,Wc)=>{"use strict";var Hc=/^[0-9]+$/,Gc=(e,t)=>{if(typeof e=="number"&&typeof t=="number")return e===t?0:e<t?-1:1;let r=Hc.test(e),n=Hc.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1},_p=(e,t)=>Gc(t,e);Wc.exports={compareIdentifiers:Gc,rcompareIdentifiers:_p}});var et=oe((Lv,zc)=>{"use strict";var no=cn(),{MAX_LENGTH:Xc,MAX_SAFE_INTEGER:oo}=Ur(),{safeRe:io,t:so}=qr(),Pp=ro(),{compareIdentifiers:$i}=Bi(),Dp=(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=Pp(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>Xc)throw new TypeError(`version is longer than ${Xc} characters`);no("SemVer",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=t.trim().match(r.loose?io[so.LOOSE]:io[so.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>oo||this.major<0)throw new TypeError("Invalid major version");if(this.minor>oo||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>oo||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<oo)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(no("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(no("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(no("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?io[so.PRERELEASELOOSE]:io[so.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]),Dp(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}};zc.exports=Oi});var fr=oe((Bv,Yc)=>{"use strict";var Kc=et(),Lp=(e,t,r=!1)=>{if(e instanceof Kc)return e;try{return new Kc(e,t)}catch(n){if(!r)return null;throw n}};Yc.exports=Lp});var Qc=oe(($v,Jc)=>{"use strict";var Bp=fr(),$p=(e,t)=>{let r=Bp(e,t);return r?r.version:null};Jc.exports=$p});var el=oe((Ov,Zc)=>{"use strict";var Op=fr(),Np=(e,t)=>{let r=Op(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null};Zc.exports=Np});var nl=oe((Nv,rl)=>{"use strict";var tl=et(),Mp=(e,t,r,n,o)=>{typeof r=="string"&&(o=n,n=r,r=void 0);try{return new tl(e instanceof tl?e.version:e,r).inc(t,n,o).version}catch{return null}};rl.exports=Mp});var sl=oe((Mv,il)=>{"use strict";var ol=fr(),jp=(e,t)=>{let r=ol(e,null,!0),n=ol(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"};il.exports=jp});var cl=oe((jv,al)=>{"use strict";var Vp=et(),Fp=(e,t)=>new Vp(e,t).major;al.exports=Fp});var ul=oe((Vv,ll)=>{"use strict";var Up=et(),qp=(e,t)=>new Up(e,t).minor;ll.exports=qp});var fl=oe((Fv,dl)=>{"use strict";var Hp=et(),Gp=(e,t)=>new Hp(e,t).patch;dl.exports=Gp});var ml=oe((Uv,pl)=>{"use strict";var Wp=fr(),Xp=(e,t)=>{let r=Wp(e,t);return r&&r.prerelease.length?r.prerelease:null};pl.exports=Xp});var Et=oe((qv,hl)=>{"use strict";var gl=et(),zp=(e,t,r)=>new gl(e,r).compare(new gl(t,r));hl.exports=zp});var vl=oe((Hv,bl)=>{"use strict";var Kp=Et(),Yp=(e,t,r)=>Kp(t,e,r);bl.exports=Yp});var yl=oe((Gv,xl)=>{"use strict";var Jp=Et(),Qp=(e,t)=>Jp(e,t,!0);xl.exports=Qp});var ao=oe((Wv,wl)=>{"use strict";var Sl=et(),Zp=(e,t,r)=>{let n=new Sl(e,r),o=new Sl(t,r);return n.compare(o)||n.compareBuild(o)};wl.exports=Zp});var Tl=oe((Xv,Rl)=>{"use strict";var em=ao(),tm=(e,t)=>e.sort((r,n)=>em(r,n,t));Rl.exports=tm});var Cl=oe((zv,kl)=>{"use strict";var rm=ao(),nm=(e,t)=>e.sort((r,n)=>rm(n,r,t));kl.exports=nm});var ln=oe((Kv,El)=>{"use strict";var om=Et(),im=(e,t,r)=>om(e,t,r)>0;El.exports=im});var co=oe((Yv,Il)=>{"use strict";var sm=Et(),am=(e,t,r)=>sm(e,t,r)<0;Il.exports=am});var Ni=oe((Jv,Al)=>{"use strict";var cm=Et(),lm=(e,t,r)=>cm(e,t,r)===0;Al.exports=lm});var Mi=oe((Qv,_l)=>{"use strict";var um=Et(),dm=(e,t,r)=>um(e,t,r)!==0;_l.exports=dm});var lo=oe((Zv,Pl)=>{"use strict";var fm=Et(),pm=(e,t,r)=>fm(e,t,r)>=0;Pl.exports=pm});var uo=oe((ex,Dl)=>{"use strict";var mm=Et(),gm=(e,t,r)=>mm(e,t,r)<=0;Dl.exports=gm});var ji=oe((tx,Ll)=>{"use strict";var hm=Ni(),bm=Mi(),vm=ln(),xm=lo(),ym=co(),Sm=uo(),wm=(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 hm(e,r,n);case"!=":return bm(e,r,n);case">":return vm(e,r,n);case">=":return xm(e,r,n);case"<":return ym(e,r,n);case"<=":return Sm(e,r,n);default:throw new TypeError(`Invalid operator: ${t}`)}};Ll.exports=wm});var $l=oe((rx,Bl)=>{"use strict";var Rm=et(),Tm=fr(),{safeRe:fo,t:po}=qr(),km=(e,t)=>{if(e instanceof Rm)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?fo[po.COERCEFULL]:fo[po.COERCE]);else{let f=t.includePrerelease?fo[po.COERCERTLFULL]:fo[po.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 Tm(`${n}.${o}.${i}${s}${u}`,t)};Bl.exports=km});var Nl=oe((nx,Ol)=>{"use strict";var Cm=fr(),Em=Ur(),Im=et(),Am=(e,t,r)=>{if(!Em.RELEASE_TYPES.includes(t))return null;let n=_m(e,r);return n&&Pm(n,t)},_m=(e,t)=>{let r=e instanceof Im?e.version:e;return Cm(r,t)},Pm=(e,t)=>{if(Dm(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()},Dm=e=>e.startsWith("pre");Ol.exports=Am});var jl=oe((ox,Ml)=>{"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}};Ml.exports=Vi});var It=oe((ix,ql)=>{"use strict";var Lm=/\s+/g,Fi=class e{constructor(t,r){if(r=$m(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(Lm," "),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=>!Fl(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&&Hm(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(qm,"");let n=((this.options.includePrerelease&&Fm)|(this.options.loose&&Um))+":"+t,o=Vl.get(n);if(o)return o;let i=this.options.loose,s=i?gt[tt.HYPHENRANGELOOSE]:gt[tt.HYPHENRANGE];t=t.replace(s,tg(this.options.includePrerelease)),De("hyphen replace",t),t=t.replace(gt[tt.COMPARATORTRIM],Mm),De("comparator trim",t),t=t.replace(gt[tt.TILDETRIM],jm),De("tilde trim",t),t=t.replace(gt[tt.CARETTRIM],Vm),De("caret trim",t);let u=t.split(" ").map(p=>Gm(p,this.options)).join(" ").split(/\s+/).map(p=>eg(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(Fl(p))return[p];f.set(p.value,p)}f.size>1&&f.has("")&&f.delete("");let w=[...f.values()];return Vl.set(n,w),w}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(n=>Ul(n,r)&&t.set.some(o=>Ul(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 Om(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(rg(this.set[r],t,this.options))return!0;return!1}};ql.exports=Fi;var Bm=jl(),Vl=new Bm,$m=ro(),Ui=un(),De=cn(),Om=et(),{safeRe:gt,src:Nm,t:tt,comparatorTrimReplace:Mm,tildeTrimReplace:jm,caretTrimReplace:Vm}=qr(),{FLAG_INCLUDE_PRERELEASE:Fm,FLAG_LOOSE:Um}=Ur(),qm=new RegExp(Nm[tt.BUILD],"g"),Fl=e=>e.value==="<0.0.0-0",Hm=e=>e.value==="",Ul=(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},Gm=(e,t)=>(e=e.replace(gt[tt.BUILD],""),De("comp",e,t),e=Km(e,t),De("caret",e),e=Xm(e,t),De("tildes",e),e=Jm(e,t),De("xrange",e),e=Zm(e,t),De("stars",e),e),He=e=>!e||e.toLowerCase()==="x"||e==="*",Wm=(e,t,r)=>He(e)&&!He(t)||He(t)&&r&&!He(r),Xm=(e,t)=>e.trim().split(/\s+/).map(r=>zm(r,t)).join(" "),zm=(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 He(o)?f="":He(i)?f=`>=${o}.0.0 <${+o+1}.0.0-0`:He(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})},Km=(e,t)=>e.trim().split(/\s+/).map(r=>Ym(r,t)).join(" "),Ym=(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 He(i)?g="":He(s)?g=`>=${i}.0.0${n} <${+i+1}.0.0-0`:He(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})},Jm=(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),Wm(i,s,u))return e;let g=He(i),w=g||He(s),p=w||He(u),v=p;return o==="="&&v&&(o=""),f=t.includePrerelease?"-0":"",g?o===">"||o==="<"?n="<0.0.0-0":n="*":o&&v?(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})},Zm=(e,t)=>(De("replaceStars",e,t),e.trim().replace(gt[tt.STAR],"")),eg=(e,t)=>(De("replaceGTE0",e,t),e.trim().replace(gt[t.includePrerelease?tt.GTE0PRE:tt.GTE0],"")),tg=e=>(t,r,n,o,i,s,u,f,g,w,p,v)=>(He(n)?r="":He(o)?r=`>=${n}.0.0${e?"-0":""}`:He(i)?r=`>=${n}.${o}.0${e?"-0":""}`:s?r=`>=${r}`:r=`>=${r}${e?"-0":""}`,He(g)?f="":He(w)?f=`<${+g+1}.0.0-0`:He(p)?f=`<${g}.${+w+1}.0-0`:v?f=`<=${g}.${w}.${p}-${v}`:e?f=`<${g}.${w}.${+p+1}-0`:f=`<=${f}`,`${r} ${f}`.trim()),rg=(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 un=oe((sx,Kl)=>{"use strict";var dn=Symbol("SemVer ANY"),Gi=class e{static get ANY(){return dn}constructor(t,r){if(r=Hl(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===dn?this.value="":this.value=this.operator+this.semver.version,Hi("comp",this)}parse(t){let r=this.options.loose?Gl[Wl.COMPARATORLOOSE]:Gl[Wl.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 Xl(n[2],this.options.loose):this.semver=dn}toString(){return this.value}test(t){if(Hi("Comparator.test",t,this.options.loose),this.semver===dn||t===dn)return!0;if(typeof t=="string")try{t=new Xl(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 zl(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new zl(this.value,r).test(t.semver):(r=Hl(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(">")))}};Kl.exports=Gi;var Hl=ro(),{safeRe:Gl,t:Wl}=qr(),qi=ji(),Hi=cn(),Xl=et(),zl=It()});var fn=oe((ax,Yl)=>{"use strict";var ng=It(),og=(e,t,r)=>{try{t=new ng(t,r)}catch{return!1}return t.test(e)};Yl.exports=og});var Ql=oe((cx,Jl)=>{"use strict";var ig=It(),sg=(e,t)=>new ig(e,t).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));Jl.exports=sg});var eu=oe((lx,Zl)=>{"use strict";var ag=et(),cg=It(),lg=(e,t,r)=>{let n=null,o=null,i=null;try{i=new cg(t,r)}catch{return null}return e.forEach(s=>{i.test(s)&&(!n||o.compare(s)===-1)&&(n=s,o=new ag(n,r))}),n};Zl.exports=lg});var ru=oe((ux,tu)=>{"use strict";var ug=et(),dg=It(),fg=(e,t,r)=>{let n=null,o=null,i=null;try{i=new dg(t,r)}catch{return null}return e.forEach(s=>{i.test(s)&&(!n||o.compare(s)===1)&&(n=s,o=new ug(n,r))}),n};tu.exports=fg});var iu=oe((dx,ou)=>{"use strict";var Wi=et(),pg=It(),nu=ln(),mg=(e,t)=>{e=new pg(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||nu(u,i))&&(i=u);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${s.operator}`)}}),i&&(!r||nu(r,i))&&(r=i)}return r&&e.test(r)?r:null};ou.exports=mg});var au=oe((fx,su)=>{"use strict";var gg=It(),hg=(e,t)=>{try{return new gg(e,t).range||"*"}catch{return null}};su.exports=hg});var mo=oe((px,du)=>{"use strict";var bg=et(),uu=un(),{ANY:vg}=uu,xg=It(),yg=fn(),cu=ln(),lu=co(),Sg=uo(),wg=lo(),Rg=(e,t,r,n)=>{e=new bg(e,n),t=new xg(t,n);let o,i,s,u,f;switch(r){case">":o=cu,i=Sg,s=lu,u=">",f=">=";break;case"<":o=lu,i=wg,s=cu,u="<",f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(yg(e,t,n))return!1;for(let g=0;g<t.set.length;++g){let w=t.set[g],p=null,v=null;if(w.forEach(c=>{c.semver===vg&&(c=new uu(">=0.0.0")),p=p||c,v=v||c,o(c.semver,p.semver,n)?p=c:s(c.semver,v.semver,n)&&(v=c)}),p.operator===u||p.operator===f||(!v.operator||v.operator===u)&&i(e,v.semver))return!1;if(v.operator===f&&s(e,v.semver))return!1}return!0};du.exports=Rg});var pu=oe((mx,fu)=>{"use strict";var Tg=mo(),kg=(e,t,r)=>Tg(e,t,">",r);fu.exports=kg});var gu=oe((gx,mu)=>{"use strict";var Cg=mo(),Eg=(e,t,r)=>Cg(e,t,"<",r);mu.exports=Eg});var vu=oe((hx,bu)=>{"use strict";var hu=It(),Ig=(e,t,r)=>(e=new hu(e,r),t=new hu(t,r),e.intersects(t,r));bu.exports=Ig});var yu=oe((bx,xu)=>{"use strict";var Ag=fn(),_g=Et();xu.exports=(e,t,r)=>{let n=[],o=null,i=null,s=e.sort((w,p)=>_g(w,p,r));for(let w of s)Ag(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 Cu=oe((vx,ku)=>{"use strict";var Su=It(),Ki=un(),{ANY:Xi}=Ki,zi=fn(),Yi=Et(),Pg=(e,t,r={})=>{if(e===t)return!0;e=new Su(e,r),t=new Su(t,r);let n=!1;e:for(let o of e.set){for(let i of t.set){let s=Lg(o,i,r);if(n=n||s!==null,s)continue e}if(n)return!1}return!0},Dg=[new Ki(">=0.0.0-0")],wu=[new Ki(">=0.0.0")],Lg=(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=Dg:e=wu}if(t.length===1&&t[0].semver===Xi){if(r.includePrerelease)return!0;t=wu}let n=new Set,o,i;for(let c of e)c.operator===">"||c.operator===">="?o=Ru(o,c,r):c.operator==="<"||c.operator==="<="?i=Tu(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,v=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(v&&c.semver.prerelease&&c.semver.prerelease.length&&c.semver.major===v.major&&c.semver.minor===v.minor&&c.semver.patch===v.patch&&(v=!1),c.operator===">"||c.operator===">="){if(u=Ru(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=Tu(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||v||p)},Ru=(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},Tu=(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};ku.exports=Pg});var Qi=oe((xx,Au)=>{"use strict";var Ji=qr(),Eu=Ur(),Bg=et(),Iu=Bi(),$g=fr(),Og=Qc(),Ng=el(),Mg=nl(),jg=sl(),Vg=cl(),Fg=ul(),Ug=fl(),qg=ml(),Hg=Et(),Gg=vl(),Wg=yl(),Xg=ao(),zg=Tl(),Kg=Cl(),Yg=ln(),Jg=co(),Qg=Ni(),Zg=Mi(),eh=lo(),th=uo(),rh=ji(),nh=$l(),oh=Nl(),ih=un(),sh=It(),ah=fn(),ch=Ql(),lh=eu(),uh=ru(),dh=iu(),fh=au(),ph=mo(),mh=pu(),gh=gu(),hh=vu(),bh=yu(),vh=Cu();Au.exports={parse:$g,valid:Og,clean:Ng,inc:Mg,diff:jg,major:Vg,minor:Fg,patch:Ug,prerelease:qg,compare:Hg,rcompare:Gg,compareLoose:Wg,compareBuild:Xg,sort:zg,rsort:Kg,gt:Yg,lt:Jg,eq:Qg,neq:Zg,gte:eh,lte:th,cmp:rh,coerce:nh,truncate:oh,Comparator:ih,Range:sh,satisfies:ah,toComparators:ch,maxSatisfying:lh,minSatisfying:uh,minVersion:dh,validRange:fh,outside:ph,gtr:mh,ltr:gh,intersects:hh,simplifyRange:bh,subset:vh,SemVer:Bg,re:Ji.re,src:Ji.src,tokens:Ji.t,SEMVER_SPEC_VERSION:Eu.SEMVER_SPEC_VERSION,RELEASE_TYPES:Eu.RELEASE_TYPES,compareIdentifiers:Iu.compareIdentifiers,rcompareIdentifiers:Iu.rcompareIdentifiers}});var T=D(Ie(),1);var Mc=D(Ie(),1);var Fr=D(H(),1);function jc({path:e}){return e.length===0?null:(0,Fr.jsx)(b,{children:e.map((t,r)=>(0,Fr.jsxs)(Mc.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 _u=D(Qi(),1),xh=1,yh=new Set(["discover","workflow","nudge","recovery"]),Sh=new Set(["run","generate","both"]),wh=new Set(["banner","footer"]),go=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 Rh(e){if(!go(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 Pu(e,t){return e.text[t]??e.text.default??(e.target!=="both"?e.text[e.target]:void 0)}function Th(e,t){return t==="both"?!!e.default||!!e.run&&!!e.generate:t==="run"?!!e.run||!!e.default:!!e.generate||!!e.default}function kh(e,t){if(!go(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 Ch(e){if(!go(e))return null;let t=Hr(e.id);if(!t)return null;let r=Sh.has(e.target)?e.target:void 0;if(e.target!==void 0&&r===void 0)return null;let n=r??"both",o=Rh(e.text);if(!Th(o,n))return null;let i=yh.has(e.category)?e.category:"nudge",s=wh.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)&&_u.default.coerce(e.minVersion)?e.minVersion:void 0,v=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,_=kh(e.boost,f);return{id:t,category:i,surface:s,target:n,text:o,weight:f,cooldownSessions:w,minVersion:p,relevance:v,retireAfterShows:m,boost:_}}function ho(e){if(!go(e)||!Array.isArray(e.hints)||typeof e.enabled!="boolean")return{catalog:null,dropped:0};let t=Gr(e.schemaVersion)??0;if(Math.floor(t)>xh)return{catalog:null,dropped:0};let r=0,n=new Set,o=[];for(let i of e.hints){let s=Ch(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 Bu=D(H(),1),Du="tip: ";function Lu({hint:e,mode:t,termWidth:r}){if(e.target!=="both"&&e.target!==t)return null;let n=Pu(e,t);if(!n)return null;let o=Math.max(8,r-Du.length-2),i=n.length>o?n.slice(0,o-1)+"\u2026":n;return(0,Bu.jsx)(a,{color:l.dim,children:Du+i})}var ne=D(H(),1);function bo(e,t){return e.length<=t?e:`${e.slice(0,Math.max(1,t-1))}\u2026`}function Eh(e,t){if(e.kind==="desktop")return"Desktop";let r=rn(e.kind);return e.deviceName?e.appPackage&&t>=72?`${r} \xB7 ${bo(e.deviceName,30)} \xB7 ${bo(e.appPackage,36)}`:t>=48?`${r} \xB7 ${bo(e.deviceName,40)}`:`${r} \xB7 ${bo(e.deviceName,Math.max(8,t-12))}`:t<36?r:`${r} \xB7 setting up`}function $u({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:v=!1}){let{stdout:c}=$r(),m=c?.columns??80,_=u??"run",U=t==="stage",B=t==="prod",F=_==="generate"?l.generateAccent:l.orange,q=g==="completed"?l.green:g==="failed"?l.red:l.generateAccent,$=Eh(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)(jc,{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:_==="generate"?"Generate":"Run"}),(0,ne.jsx)(a,{color:l.muted,children:"|"}),_==="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:q,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"}),_==="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:Hs()})]}),(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:$}),v&&(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)(Lu,{hint:w,mode:_,termWidth:m})})]})}var Cr=D(Ie(),1);var pn=[[[" "],[" "],[" "],[" "],["\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 xe=D(H(),1),vo="#af87d7",Zi="#875faf",Ou="#5b3a7a",Ih="#ff9500",Ah="#ea580c";var es="#666666",_h="#555555",kr=[[vo,"\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"],[vo,"\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"],[vo,"\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"],[vo,"\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=kr.map(([,e])=>[...e]);function Nu({visibleRows:e=kr.length}){let t=Math.min(e,kr.length);return(0,xe.jsxs)(b,{flexDirection:"column",children:[kr.slice(0,t).map(([r,n],o)=>{let i=ts[o];return(0,xe.jsx)(a,{children:i.map((s,u)=>{if(s==="\u2588")return(0,xe.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,xe.jsx)(a,{color:Ou,children:"\u2592"},u):(0,xe.jsx)(a,{children:" "},u)})},o)}),t>=kr.length&&(0,xe.jsxs)(a,{children:[" ",ts[kr.length-1].map((r,n)=>r==="\u2588"?(0,xe.jsx)(a,{color:Ou,children:"\u2580"},n):(0,xe.jsx)(a,{children:" "},n))]})]})}function Ph({visibleRows:e=pn.length}){let t=Math.min(e,pn.length);return(0,xe.jsx)(b,{flexDirection:"column",children:pn.slice(0,t).map((r,n)=>(0,xe.jsx)(a,{children:r.map((o,i)=>{let s=o[0],u=o[1],f=o[2];return u?(0,xe.jsx)(a,{color:u,backgroundColor:f,children:s},i):(0,xe.jsx)(a,{children:s},i)})},n))})}function xo({size:e="compact",helmetVisibleRows:t=pn.length,textVisibleRows:r=kr.length,showMeta:n=!1,user:o=null,authenticated:i=!1,version:s=""}){return e==="compact"?(0,xe.jsx)(Nu,{}):(0,xe.jsxs)(b,{flexDirection:"column",paddingX:1,paddingY:1,children:[(0,xe.jsx)(a,{color:Ih,italic:!0,children:" Welcome to"}),(0,xe.jsx)(a,{children:" "}),(0,xe.jsxs)(b,{gap:2,children:[(0,xe.jsx)(Ph,{visibleRows:t}),(0,xe.jsxs)(b,{flexDirection:"column",children:[(0,xe.jsx)(Nu,{visibleRows:r}),(0,xe.jsx)(b,{justifyContent:"flex-end",width:73,children:(0,xe.jsx)(a,{color:Ah,italic:!0,children:"Command-line interface"})})]})]}),n&&(0,xe.jsxs)(xe.Fragment,{children:[(0,xe.jsx)(a,{children:" "}),(0,xe.jsxs)(a,{children:[(0,xe.jsx)(a,{color:es,children:" The validation layer for AI coding agents. "}),(0,xe.jsx)(a,{color:_h,children:`v${s}`})]}),(0,xe.jsx)(a,{children:" "}),(0,xe.jsx)(a,{children:(0,xe.jsx)(a,{color:es,children:" Kane-CLI: natural-language web & mobile-app automation, plus"})}),(0,xe.jsx)(a,{children:(0,xe.jsx)(a,{color:es,children:" requirements-to-coverage assurance \u2014 from your CLI or IDE."})}),(0,xe.jsx)(a,{children:" "})]})]})}var os=D(H(),1),rs=8,ns=7;function Mu({onComplete:e}){let[t,r]=(0,Cr.useState)(0),[n,o]=(0,Cr.useState)(0),[i,s]=(0,Cr.useState)(!1),[u]=(0,Cr.useState)(()=>{let f=new Hn,g=f.getActiveProfile(),w=f.getDefaultEnv(),p=g?f.loadCredentials(g,w):null,v=g?f.loadBasicAuth(g,w):null;return{authenticated:!!(p||v),user:v?.username??g??null}});return gi(()=>{r(f=>Math.min(rs,f+1))},t<rs?60:null),gi(()=>{o(f=>Math.min(ns,f+1))},n<ns?80:null),(0,Cr.useEffect)(()=>{t>=rs&&n>=ns&&!i&&(s(!0),e?.())},[t,n,i,e]),(0,os.jsx)(b,{flexDirection:"column",children:(0,os.jsx)(xo,{size:"full",helmetVisibleRows:t,textVisibleRows:n,showMeta:i,user:u.user,authenticated:u.authenticated,version:xt})})}var Zt=D(H(),1);function ju({entry:e}){return e.type==="input"?(0,Zt.jsxs)(b,{children:[(0,Zt.jsx)(a,{color:l.orange,children:"\u276F "}),(0,Zt.jsx)(a,{children:e.text})]}):e.type==="error"?(0,Zt.jsx)(b,{marginLeft:2,children:(0,Zt.jsx)(a,{color:l.red,children:e.text})}):(0,Zt.jsx)(b,{marginLeft:2,children:(0,Zt.jsx)(a,{color:e.type==="info"?l.dim:void 0,children:e.text})})}var is=D(H(),1);function Vu({objective:e}){let{stdout:t}=$r(),r=Math.max(24,(t?.columns??80)-4);return(0,is.jsx)(Qt,{title:"run",width:r,children:(0,is.jsx)(Ws,{label:"objective",value:e})})}var Gt=D(Ie(),1);var ht=D(H(),1);function Dh(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 Fu({data:e,width:t=60}){let r=Dh(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(H(),1);function yo(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,v]=(0,Gt.useState)(()=>{let F=r??[],q=yo(e,F),$=0;if(F.length>0){let z=q.findIndex(ae=>ae.item.id===F[0]);z>=0&&z+1<q.length&&($=z+1)}return{expandedPath:F,selectedIndex:$,inputValue:"",isEditing:!1,isSelecting:!1,feedback:null,activeView:null,infoData:null}}),c=yo(e,p.expandedPath),m=c[p.selectedIndex]?.item,_=(0,Gt.useRef)(null),U=(0,Gt.useCallback)(F=>{v(q=>({...q,feedback:F})),_.current&&clearTimeout(_.current),_.current=setTimeout(()=>{v(q=>({...q,feedback:null})),_.current=null},4e3)},[]);(0,Gt.useEffect)(()=>()=>{_.current&&clearTimeout(_.current)},[]),(0,Gt.useEffect)(()=>{w?.(p.activeView)},[p.activeView,w]);let B=(0,Gt.useCallback)(()=>{v(F=>({...F,activeView:null,infoData:null}))},[]);return Be((F,q)=>{if(p.activeView==="infoView"){q.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(q.escape){v($=>({...$,isEditing:!1,inputValue:""}));return}if(q.return){let $=p.inputValue.trim();if(m?.onValue&&$){let z=m.currentValue;m.onValue($),U(z?`${m.label}: ${z} \u2192 ${$}`:`${m.label}: ${$}`)}v(z=>({...z,isEditing:!1,inputValue:""}));return}if(q.backspace||q.delete){v($=>({...$,inputValue:$.inputValue.slice(0,-1)}));return}F&&!q.ctrl&&!q.meta&&v($=>({...$,inputValue:$.inputValue+F}));return}if(p.isSelecting&&m?.options){let $=m.options;if(q.escape){v(z=>({...z,isSelecting:!1}));return}if(q.upArrow){v(z=>({...z,inputValue:String(Math.max(0,Number(z.inputValue||"0")-1))}));return}if(q.downArrow){v(z=>({...z,inputValue:String(Math.min($.length-1,Number(z.inputValue||"0")+1))}));return}if(q.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}`)}v(te=>({...te,isSelecting:!1,inputValue:""}));return}return}if(q.upArrow){v($=>({...$,selectedIndex:Math.max(0,$.selectedIndex-1)}));return}if(q.downArrow){v($=>({...$,selectedIndex:Math.min(c.length-1,$.selectedIndex+1)}));return}if(q.escape){if(p.expandedPath.length===0){n?.();return}v($=>{let z=$.expandedPath.slice(0,-1),ae=yo(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(q.return&&m){if(m.id==="run-start"){t();return}if(m.type==="submenu"){let $=c[p.selectedIndex]?.depth??0;v(z=>{let ae=[...z.expandedPath.slice(0,$),m.id],te=yo(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();v(z=>({...z,activeView:"infoView",infoData:$}));return}if(m.onLoginWizard){m.onLoginWizard(),v($=>({...$,activeView:"loginWizard"}));return}if(m.onProfilesView){m.onProfilesView(),v($=>({...$,activeView:"profilesView"}));return}if(m.onChromeProfilePicker){m.onChromeProfilePicker(),v($=>({...$,activeView:"chromeProfilePicker"}));return}if(m.onProjectPicker){m.onProjectPicker(),v($=>({...$,activeView:"projectPicker"}));return}if(m.onFolderPicker){m.onFolderPicker(),v($=>({...$,activeView:"folderPicker"}));return}if(m.onWindowSizePicker){m.onWindowSizePicker(),v($=>({...$,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);v(z=>({...z,isSelecting:!0,inputValue:String(Math.max(0,$))}));return}if(m.type==="text-input"){v($=>({...$,isEditing:!0,inputValue:m.currentValue??""}));return}}}}),(0,rt.jsx)(b,{flexDirection:"column",paddingX:1,children:p.activeView==="infoView"&&p.infoData?(0,rt.jsx)(Fu,{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:q},$)=>{let z=$===p.selectedIndex,ae=" ".repeat(q),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&&q>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)(Vt,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"select"}],escBackLabel:"back"})]})})}var J=D(Ie(),1);import{access as Lh}from"fs/promises";async function Uu(e){try{return await Lh(e),!0}catch{return!1}}function Bh(e,t){if(Tr(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 $h(e){return e==="emulator"||e==="simulator"?e:null}var So={emulator:"android",simulator:"ios"};function Oh(e){return`${e.platform}\0${e.kind}\0${ra(e)}`}function Nh(e,t){let r=t.id!==void 0?{...t,id:wi(t.id)}:t,n=e.map(i=>i.virtualName!==void 0?{...i,virtualName:wi(i.virtualName)}:i),o=ta(n.filter(i=>Js(i,r)));return o?e.find(i=>i.id===o.id):void 0}function qu(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)([]),[v,c]=(0,J.useState)([]),[m,_]=(0,J.useState)(null),[U,B]=(0,J.useState)(null),[F,q]=(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"),Ge=(0,J.useRef)(null),st=(0,J.useRef)(null),zt=(0,J.useRef)(null),Rt=(0,J.useRef)(()=>{}),ge=(0,J.useRef)({pathExists:Uu,...e});ge.current={pathExists:Uu,...e},(0,J.useEffect)(()=>{t==="ready"&&(Ge.current=null)},[t]);let ut=(0,J.useCallback)((P,L,Y)=>{Y().catch(X=>{P===me.current&&(_(null),B(X instanceof Error?X.message:String(X)),r(L))})},[]),Ot=(0,J.useCallback)(async(P,L,Y)=>{r("picking"),_("Looking for devices\u2026");let X=Y?So[Y]:void 0,ee=(await Xn(X)).filter(we=>!Y||we.kind===Y);if(P===me.current){if(p(ee),_(null),ee.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)((P,L)=>{let Y={target:P,savedDeviceLabel:P.displayName,savedKind:P.kind,...L?{appPath:L,savedAppLabel:u.current??L}:{},deviceMissing:!1,appMissing:!L};st.current=Y,zt.current=Y,te(Y),_(null),r("confirm")},[]),Le=(0,J.useCallback)(async(P,L)=>{let Y=nn(So[L]);if(!Y||!Y.available())return!0;let X=await Y.checks({appiumUrl:ge.current.getDefaults()?.appium_url});return P!==me.current?!1:(g(X),X.some(we=>we.required&&we.status==="fail"&&!we.fixedByBundle)?(_(null),r("doctor"),!1):!0)},[]),Kt=(0,J.useCallback)(async(P,L)=>{let Y=ge.current.getDefaults(),X=Y?.default_target;if(i.current=L,o(L),_("Checking the saved setup\u2026"),!await Le(P,L))return;let ee=So[L],we=(await Xn(ee)).filter(nr=>nr.kind===L);if(P!==me.current)return;p(we),_(null);let Je=X?Nh(we,X):void 0,le=ba(Y?.default_app)?Y?.default_app:void 0,St=le?Tr(le)||await ge.current.pathExists(le):!1;if(P!==me.current)return;let bt=le&&Tr(le)?await ge.current.appLabelFor?.(le)??le:le;if(P!==me.current)return;let Ce={...Je?{target:Je}:{},savedDeviceLabel:X?.id??"(unknown device)",savedKind:L,...le&&St?{appPath:le}:{},...bt?{savedAppLabel:bt}:{},deviceMissing:!Je,appMissing:!le||!St};st.current=Ce,zt.current=Ce,u.current=le&&bt!==le?bt:null,te(Ce),r("confirm")},[Le]),Me=(0,J.useCallback)(async(P,L)=>{r("checking");let Y=zn();if(P!==me.current)return;if(!Y.supported){g([{id:"host.platform",label:"host",required:!0,status:"fail",detail:Y.reason}]),r("doctor");return}g([]);let X=ge.current.getDefaults(),ee=$h(X?.default_target?.kind);if(L==="confirm"&&ee&&X?.default_target){st.current=null,te(null),await Kt(P,ee);return}r("chooser")},[Kt]),Yt=(0,J.useCallback)(P=>{let L=++me.current;i.current=P,o(P);let Y=ge.current.getDefaults();ge.current.setDefaults({...Y,tui_target:P}),B(null),ut(L,"chooser",async()=>{r("picking"),_(P==="simulator"?"Checking the iOS toolchain\u2026":"Checking the Android toolchain\u2026"),await Le(L,P)&&(_("Checking the mobile dependencies\u2026"),await Si().ensure(P,{automatic:!0,onProgress:X=>{L===me.current&&_(X)}}),L===me.current&&await Ot(L,$e.current,P))})},[Le,Ot,ut]),gr=(0,J.useCallback)((P="confirm",L={})=>{let Y=++me.current;$e.current=P;let X=ge.current.getDefaults();Ge.current=X?.tui_target??"desktop";let ee=(L.kind?Jt(L.kind):void 0)??Jt(X?.default_target?.kind??"")??"emulator";ge.current.setDefaults({...X,tui_target:ee}),g([]),p([]),c([]),q(null),z(null),B(null),te(null),st.current=null,re.current=null,K.current=null,P==="reinit"&&(pe.current=null),ut(Y,"doctor",()=>Me(Y,P))},[ut,Me]),Er=(0,J.useCallback)(()=>{let P=++me.current;B(null),ut(P,"doctor",()=>Me(P,$e.current))},[ut,Me]),Kr=(0,J.useCallback)(P=>{let L=++me.current;B(null),_("Installing managed mobile dependencies\u2026");let Y=P??["emulator",...process.platform==="darwin"?["simulator"]:[]];ut(L,"doctor",async()=>{for(let X of Y)await Si().ensure(X,{automatic:!1,approved:!0,onProgress:ee=>{L===me.current&&_(ee)}});L===me.current&&_(null),await Me(L,$e.current)})},[ut,Me]),Ir=(0,J.useCallback)(async P=>{let L=nn(P.platform);if(!L){B(`No provider registered for platform "${P.platform}"`);return}let X=await(ge.current.deviceBusyOn??(()=>la(ca(),[],[],P.kind)))({udid:P.id,displayName:P.displayName});if(X!==null){let Je=typeof X=="number"?X:X.port,le=typeof X=="number"?void 0:X.device;B(aa({udid:P.id,displayName:P.displayName},Je,le));return}re.current=P,K.current=L,z(P),B(null),c([]),Ri(L,P);let ee=s.current;ee&&!Bh(ee,P.kind)&&(s.current=null);let we=ge.current.getDefaults();ge.current.setDefaults({...we,...Jt(P.kind)?{tui_target:Jt(P.kind)}:{},default_target:Wn(P)}),s.current&&q(Or(P,s.current,{noReset:we?.no_reset,appiumUrl:we?.appium_url,autoGrantPermissions:we?.auto_grant_permissions,autoAcceptAlerts:we?.auto_accept_alerts})),Oe(P,s.current)},[Oe]),hr=(0,J.useCallback)((P={})=>{let L=st.current;if(!L?.target){B("That device is no longer connected \u2014 pick another one.");return}let Y=L.target,X=nn(Y.platform);if(!X){B(`No provider registered for platform "${Y.platform}"`);return}if(re.current=Y,K.current=X,z(Y),B(null),c([]),Ri(X,Y),!(P.keepApp!==!1&&L.appPath)){r("appSource");return}let we=ge.current.getDefaults();s.current=L.appPath,q(Or(Y,L.appPath,{noReset:we?.no_reset,appiumUrl:we?.appium_url,autoGrantPermissions:we?.auto_grant_permissions,autoAcceptAlerts:we?.auto_accept_alerts})),r("ready")},[]),br=(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")},[]),vr=(0,J.useCallback)(()=>{if(!re.current||!K.current){B("Pick a device before choosing an app");return}B(null),r("appId")},[]),Ar=(0,J.useCallback)(async P=>{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 X=++me.current;B(null),_("Downloading the application \u2014 this can take a while, please wait\u2026");try{let ee=await Y(P,Je=>{X===me.current&&_(Je)});if(X!==me.current)return{ok:!1};let we=ge.current.getDefaults();return s.current=P,u.current=ee.name,pe.current=null,_(null),q(Or(L,P,{noReset:we?.no_reset,appiumUrl:we?.appium_url,autoGrantPermissions:we?.auto_grant_permissions,autoAcceptAlerts:we?.auto_accept_alerts})),ge.current.setDefaults({...we,...Jt(L.kind)?{tui_target:Jt(L.kind)}:{},default_target:Wn(L),default_app:P}),Oe(L,P),{ok:!0}}catch(ee){return X!==me.current?{ok:!1}:(_(null),{ok:!1,error:ee instanceof Error?ee.message:String(ee)})}},[Oe]),xr=(0,J.useCallback)(()=>{if(!re.current||!K.current){B("Pick a device before choosing an app");return}r("appSource")},[]),Z=(0,J.useCallback)(async(P,L={})=>{let Y=L.persist!==!1,X=re.current;if(!X)return B("Pick a device before choosing an app"),{ok:!1,error:"Pick a device before choosing an app"};if(P.kind!=="package"&&!await ge.current.pathExists(P.value))return{ok:!1,error:`${P.value} is not there.`};let ee=ge.current.getDefaults();return s.current=P.value,u.current=null,pe.current=null,B(null),_(null),q(Or(X,P.value,{noReset:ee?.no_reset,appiumUrl:ee?.appium_url,autoGrantPermissions:ee?.auto_grant_permissions,autoAcceptAlerts:ee?.auto_accept_alerts})),Oe(X,P.value),Y&&ge.current.setDefaults({...ee,...Jt(X.kind)?{tui_target:Jt(X.kind)}:{},default_target:Wn(X),default_app:P.value}),{ok:!0}},[Oe]),ue=(0,J.useCallback)(()=>{r("appSource")},[]),ce=(0,J.useCallback)(async P=>{let L=re.current,Y=K.current;if(!L||!Y)return{ok:!1,error:"No device is bound \u2014 run /mobile first"};try{let X=await ma(Y,L,bt=>_(bt)),ee=await Y.ensureApp(X,P,bt=>_(bt));_(null);let we=Oh(L);pe.current={targetIdentity:we,packageId:ee};let Je=Re.current.get(we)??[];if(!Je.includes(ee)){let bt=[...Je,ee].sort();Re.current.set(we,bt),c(bt)}let le=ge.current.getDefaults(),St=Or(X,ee,{noReset:le?.no_reset,appiumUrl:le?.appium_url,autoGrantPermissions:le?.auto_grant_permissions,autoAcceptAlerts:le?.auto_accept_alerts});return q(St),{ok:!0,device:St}}catch(X){return _(null),{ok:!1,error:X instanceof Error?X.message:String(X)}}},[]),ie=(0,J.useCallback)(async()=>{let P=re.current;if(!P)return{ok:!1,reason:"No device is selected.",step:"device"};let L=So[P.kind];if(!(await Xn(L)).some(ee=>ee.id===P.id||ee.virtualName&&ee.virtualName===P.virtualName))return{ok:!1,reason:`${P.displayName} is no longer connected.`,step:"device"};let X=s.current;return X?Tr(X)?{ok:!0}:await ge.current.pathExists(X)?{ok:!0}:{ok:!1,reason:`${X} is no longer there.`,step:"app"}:{ok:!1,reason:"No app is selected.",step:"app"}},[]),de=(0,J.useCallback)(()=>{++me.current,zt.current=null,r("idle"),g([]),p([]),c([]),_(null),B(null),q(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 P=zt.current,L=()=>{if(!P)return!1;let Y=P.target?nn(P.target.platform):null;return re.current=P.target??null,K.current=Y??null,s.current=P.appPath??null,st.current=P,i.current=P.savedKind,o(P.savedKind),z(P.target??null),te(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),_(null),r("appSource");return;case"chooser":if(L())return;Rt.current();return;default:Rt.current()}},[t,Oe]),dt=(0,J.useCallback)(()=>{let P=Ge.current;if(P){let L=ge.current.getDefaults();ge.current.setDefaults({...L,tui_target:P}),Ge.current=null}de()},[de]);return Rt.current=dt,{phase:t,kind:n,selectKind:Yt,checks:f,targets:w,apps:v,busyMessage:m,error:U,device:F,target:$,saved:ae,begin:gr,recheck:Er,install:Kr,cancel:dt,back:Te,selectTarget:Ir,confirmSaved:hr,requestApp:br,requestAppSource:xr,requestCloudApps:Tt,requestAppId:vr,selectApp:Z,selectAppId:Ar,skipApp:ue,bindAppForRun:ce,validateBinding:ie,reset:de}}var mn=D(Ie(),1);function Hu(e){let{phase:t,device:r,requestApp:n,pendingRef:o,dispatch:i,notify:s,onSettle:u}=e,f=(0,mn.useRef)(null),g=(0,mn.useRef)(!1);(0,mn.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 Mh}from"fs/promises";async function Gu(e){let t=e.statFile??Mh,r="";if(!Tr(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 Wu(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 zu,readdir as jh,stat as Vh}from"fs/promises";import{extname as Ku,join as Yu,relative as Fh}from"path";var Uh=new Set(["node_modules",".git"]),qh=new Set([".apk",".zip",".apks",".aab",".ipa",".app"]);function Ju(e){return e.state!=="incompatible"}var Xu=new Map;function Hh(e,t){return`${e}\0${t?.platform??""}\0${t?.androidApiLevel??""}\0${t?.androidAbis?.join(",")??""}`}function Gh(e){let t=typeof e=="number"?e:typeof e=="string"?Number(e):NaN;return Number.isInteger(t)&&t>0?t:void 0}function Wh(e){let t=new Set;return oa(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 jh(f,{withFileTypes:!0,encoding:"utf8"})}catch{return}for(let p of w){if(s.length>=n)return;if(p.name.startsWith(".")||Uh.has(p.name)||p.name.startsWith("output-"))continue;let v=Yu(f,p.name),c=Ku(p.name).toLowerCase();if(qh.has(c)&&(p.isFile()||c===".app"&&p.isDirectory())){let _=Fh(e,v);(!i||_.toLowerCase().includes(i))&&s.push(_);continue}p.isDirectory()&&await u(v,g+1)}}return await u(e,0),s}async function Zu(e,t){let r;try{r=(await Vh(e)).mtimeMs}catch{}let n=Hh(e,t),o=r===void 0?void 0:Xu.get(n);if(o&&o.mtimeMs===r)return o.result;let i=u=>(r!==void 0&&Xu.set(n,{mtimeMs:r,result:u}),u),s=Ku(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=Gh(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=Wh(new Uint8Array(await zu(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(v=>t.androidAbis.includes(v)))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 zh(Yu(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&&Xh(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 Xh(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 zh(e){let r=(await zu(e)).toString("utf8");if(!r.startsWith("bplist"))try{return JSON.parse(r)}catch{}let{runExec:n}=await import("./exec-P2IKJRRR.js"),o=await n("plutil",["-convert","json","-o","-",e],{timeoutMs:15e3});if(o.code!==0)throw new Error(o.stderr.trim()||`plutil exited ${o.code}`);return JSON.parse(o.stdout)}var wo=D(Ie(),1);function ed(e){let t=(0,wo.useRef)(e);return t.current=e,(0,wo.useCallback)(async r=>{let{auth:n,env:o,kind:i,baseUrlFor:s,makeClient:u}=t.current,f=i();if(!f)throw new Error("Pick a device before browsing your uploads.");let w=await n.resolveBasicAuth().catch(()=>null)??n.getResolvedBasicAuth();if(!w?.username||!w.access_key)throw new Error("Log in to browse your uploads, or choose a local build.");let p=s?s(o):sn(o);return(u?u(p,{username:w.username,accessKey:w.access_key}):new da(p,{username:w.username,accessKey:w.access_key})).list({type:f,...r})},[])}var gn=D(H(),1);function td({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,gn.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,children:[(0,gn.jsx)(a,{color:l.orange,children:f}),(0,gn.jsxs)(a,{color:l.dim,children:[` \u21B5 ${g}`,e==="mobile"?" p pick a device":"",` k keep ${t}`," esc cancel"]})]})}async function rd(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=Kh(await i.json());return s&&e.cache?.set(e.objective,s),s}catch{return null}finally{clearTimeout(o)}}function Kh(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 nd(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 od=D(Ie(),1);var qe=D(H(),1),Yh={pass:"\u2713",fail:"\u2717",info:"\u2139"},Jh={pass:l.green,fail:l.red,info:l.secondary};function id({checks:e,busyMessage:t,onRetry:r,onInstall:n,onCancel:o}){let[i,s]=(0,od.useState)(!1);Be((v,c)=>{if(c.escape){o();return}(v==="r"||v==="R")&&r(),(v==="i"||v==="I")&&(i?n():s(!0))});let u=e.filter(v=>v.required&&v.status==="fail").length,f=e.filter(v=>v.status!=="info"),g=new Map;for(let v of f)v.status==="fail"&&v.fixText&&!g.has(v.fixText)&&g.set(v.fixText,v.id);let p=["emulator",...process.platform==="darwin"?["simulator"]:[]].map(v=>`\u2022 kaneai-mobile-deps ${v}
|
|
3
3
|
resolved for kane-cli ${xt} via your KaneAI account
|
|
4
4
|
\u2192 ~/.testmuai/kaneai/mobile/deps/${v}`).join(`
|
|
5
5
|
`);return(0,qe.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.red,paddingX:2,paddingY:1,children:[(0,qe.jsxs)(b,{children:[(0,qe.jsx)(a,{color:l.red,bold:!0,children:"Device setup"}),(0,qe.jsx)(a,{color:l.dim,children:u>0?` ${u} blocking issue${u===1?"":"s"}`:" all checks passed"})]}),(0,qe.jsxs)(b,{flexDirection:"column",marginTop:1,children:[t&&(0,qe.jsx)(a,{color:l.secondary,children:t}),f.length===0?(0,qe.jsx)(a,{color:l.dim,children:"No checks reported."}):f.map(v=>(0,qe.jsxs)(b,{flexDirection:"column",children:[(0,qe.jsxs)(b,{children:[(0,qe.jsxs)(a,{color:Jh[v.status],children:[Yh[v.status]," "]}),(0,qe.jsx)(a,{children:v.label}),v.detail?(0,qe.jsxs)(a,{color:l.dim,children:[" \u2014 ",v.detail]}):null]}),v.status==="fail"&&v.fixText&&g.get(v.fixText)===v.id?(0,qe.jsx)(b,{marginLeft:4,children:(0,qe.jsxs)(a,{color:l.dim,children:["fix: ",v.fixText]})}):null]},v.id))]}),i&&(0,qe.jsxs)(b,{flexDirection:"column",marginTop:1,children:[(0,qe.jsx)(a,{color:l.orange,children:"Press i again to download:"}),(0,qe.jsx)(a,{color:l.dim,children:p})]}),(0,qe.jsx)(Vt,{bindings:[{keys:"i",label:"install"},{keys:"r",label:"recheck"}],escBackLabel:"cancel"})]})}var hn=D(Ie(),1);var at=D(H(),1),as=800,cs=3840,ls=600,us=2160;function sd(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,hn.useState)("width"),[s,u]=(0,hn.useState)(String(e)),[f,g]=(0,hn.useState)(String(t)),[w,p]=(0,hn.useState)(null);Be((c,m)=>{if(m.escape){n();return}if(m.tab||m.rightArrow||m.leftArrow){i(_=>_==="width"?"height":"width"),p(null);return}if(m.return){let _=sd("width",s);if(_){i("width"),p(`Width: ${_}`);return}let U=sd("height",f);if(U){i("height"),p(`Height: ${U}`);return}r(Number(s),Number(f));return}if(m.backspace||m.delete){o==="width"?u(_=>_.slice(0,-1)):g(_=>_.slice(0,-1)),p(null);return}c&&/^\d$/.test(c)&&(o==="width"?u(_=>_+c):g(_=>_+c),p(null))});let v=(c,m,_)=>{let U=o===_,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:[" ",_==="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:[v("Width",s,"width"),(0,at.jsx)(b,{alignItems:"center",marginTop:1,children:(0,at.jsx)(a,{color:l.dim,children:"x"})}),v("Height",f,"height")]}),w&&(0,at.jsx)(b,{marginTop:1,children:(0,at.jsx)(a,{color:l.red,children:w})}),(0,at.jsx)(Vt,{bindings:[{keys:"tab/\u2190\u2192",label:"switch field"},{keys:"\u21B5",label:"save"}],escBackLabel:"cancel"})]})}var ct=D(Ie(),1);async function ad(e,t,r){let n=e.loadCredentials(t,r),o=e.loadClient(t,r);if(n&&o){let s=new ia(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 cd(){let[e]=(0,ct.useState)(()=>new Hn),[t,r]=(0,ct.useState)(()=>{let m=e.resolveAuth();if(!m)return!1;if(m.method==="basic")return!0;let{credentials:_}=e.getActiveCredentials();return _?_.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:_,env:U}=e.getActiveCredentials();if(!m||!_||!U)return null;let B=m.expires_at,F=Date.now()/1e3;if(B-F<300){if(o.current)return o.current;let q=(async()=>{try{let $=await sa({creds:e,profile:_,env:U,credentials:m});return $?(r(!0),$.accessToken):null}catch{return r(!1),null}finally{o.current=null}})();return o.current=q,q}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,_)=>{n.current?.revoke();let U=Ue(m),B=u(),F=new Ea(U.controllerBaseUrl,s,B,_);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 _=n.current?.cached;return _?{username:_.username,access_key:_.access_key}:null},[u]),p=(0,ct.useCallback)(async()=>{let m=n.current;return m?m.resolve():null},[]),v=(0,ct.useCallback)(async(m="default")=>{let _=e.getDefaultEnv();await new Ca(m,_,e).login(),e.setActiveProfile(m);try{let B=new Vr;Ct(e,B,m,_)}catch{}r(!0)},[e]),c=(0,ct.useCallback)(async()=>{let m=e.getActiveProfile();if(!m)return null;let _=e.getDefaultEnv(),U=await ad(e,m,_);return r(!1),{profile:U.profile,env:U.env}},[e]);return{creds:e,tokenValid:t,setTokenValid:r,getToken:s,getBasicAuth:u,getAuthInfo:i,login:v,logout:c,initResolver:f,getResolver:g,getResolvedBasicAuth:w,resolveBasicAuth:p}}var er=D(Ie(),1);import{mkdtempSync as Qh,rmSync as Zh}from"fs";import{join as eb}from"path";import{tmpdir as tb}from"os";function ld(){let[e]=(0,er.useState)(()=>new Vr),t=(0,er.useRef)(null),r=(0,er.useRef)(null),n=(0,er.useRef)(null),o=(0,er.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&&(dr("tempDir","Previous temp dir removed before retry"),r.current=null);let p=Qh(eb(tb(),"kane-clean-"));r.current=p,g=p,Ft("tempDir",()=>{try{Zh(p,{recursive:!0,force:!0})}catch{}})}let w=await Aa({userDataDir:g,width:f.window_size.width,height:f.window_size.height,startUrl:s??f.default_url??void 0});return t.current=w,Ft("chrome",()=>{w.kill()}),w})();n.current=u;try{return await u}finally{n.current=null}},[e]),i=(0,er.useCallback)(()=>{dr("chrome","Chrome killed"),dr("tempDir","Temp dir removed"),t.current=null,r.current=null},[]);return{ensureChrome:o,killChrome:i}}var Ro=[{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"}],rb={web:"desktop"};function nb(e){return rb[e]??e}function To(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:nb(o),args:i,raw:t}}var dS=[{name:"Testing",commands:Ro.filter(e=>["run","cancel"].includes(e.name))},{name:"Auth",commands:Ro.filter(e=>["login","logout","whoami","balance","profiles"].includes(e.name))},{name:"Settings",commands:Ro.filter(e=>["config"].includes(e.name))},{name:"Session",commands:Ro.filter(e=>["new","name","summary","help","clear","exit"].includes(e.name))}];var ud=[{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"}],ob={name:"cancel",description:"Abort current run"},ib={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]"},ob,...ud],bn=[{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>]"},ib,...ud],dd=Wr,sb=new Set(["mobile","doctor"]),ab=new Set(["mobile","desktop"]);function fd(e,t){return t?e.map(r=>ab.has(r.name)?{...r,disabled:!0,disabledReason:`locked \u2014 session ran on ${t.label}; /new to switch`}:r):e}function vn(e,t=Rr()){return t?e:e.filter(r=>!sb.has(r.name))}function ko(e,t="run"){let r=vn(t==="generate"?bn:Wr),n=e.startsWith("/")?e.slice(1):e;return n?r.filter(o=>o.name.startsWith(n)):r}var cb=new Set([...Wr,...bn].map(e=>e.name));function pd(e,t){let r=t==="generate"?bn:Wr;return cb.has(e)?r.some(n=>n.name===e):!0}var md=D(Ie(),1);var yt=D(H(),1);function lb(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 gd({saved:e,onContinue:t,onChangeDevice:r,onChangeApp:n,onCancel:o}){let i=lb(e),[s,u]=(0,md.useState)(0);Be((p,v)=>{if(v.escape){o();return}if(v.upArrow&&u(c=>Math.max(0,c-1)),v.downArrow&&u(c=>Math.min(i.length-1,c+1)),v.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,v)=>(0,yt.jsxs)(a,{color:v===s?l.orange:void 0,children:[v===s?"\u276F ":" ",p.label]},p.id))}),(0,yt.jsx)(Vt,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"select"}],escBackLabel:"back to chat"})]})}function hd(e,t){let r=t?.trim();return r?e==="generate"?{kind:"reject"}:{kind:"run",objective:r}:e==="generate"?{kind:"toggle"}:{kind:"already"}}var pr=D(H(),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,pr.jsx)(b,{flexDirection:"column",children:r.map(n=>(0,pr.jsxs)(b,{flexDirection:"column",marginTop:1,children:[(0,pr.jsxs)(b,{marginLeft:1,children:[(0,pr.jsx)(a,{color:l.purple,bold:!0,children:"Flow "+n.index+": "}),(0,pr.jsx)(a,{color:l.purple,children:n.objective})]}),(0,pr.jsx)(Ka,{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 mr=D(H(),1),ub={ok:"\u2713",error:"\u2717",cancelled:"\u2298"},db={ok:l.green,error:l.red,cancelled:l.dim};function bd({status:e,command:t,message:r,details:n,accentColor:o}){let i=t.startsWith("/")?t.slice(1):t,s=o??db[e];return(0,mr.jsxs)(b,{flexDirection:"column",marginLeft:2,marginTop:1,children:[(0,mr.jsx)(b,{marginLeft:1,children:(0,mr.jsxs)(a,{color:s,bold:!0,children:[ub[e]," ",i]})}),(0,mr.jsxs)(b,{borderStyle:"round",borderColor:s,paddingX:2,flexDirection:"column",width:70,children:[(0,mr.jsx)(a,{children:r}),n&&(0,mr.jsx)(a,{color:l.dim,children:n})]})]})}var wn=D(Ie(),1);import{join as yn}from"path";var xn=D(H(),1);function vd({tabs:e,activeIndex:t}){return(0,xn.jsx)(b,{children:e.map((r,n)=>(0,xn.jsx)(b,{marginRight:1,children:n===t?(0,xn.jsx)(a,{color:l.orange,bold:!0,children:`[ ${r} ]`}):(0,xn.jsx)(a,{color:l.dim,children:` ${r} `})},r))})}var A=D(H(),1),Sn=["Commands","Shortcuts","Tests","Setup","About"],Co=21,fb="https://www.testmuai.com/support/docs/kane-cli-introduction",pb="https://github.com/LambdaTest/kane-cli/issues";function xd({onClose:e,version:t,environment:r,sessionId:n,runUrl:o,mode:i="run"}){let[s,u]=(0,wn.useState)(0),[f,g]=(0,wn.useState)(0);(0,wn.useEffect)(()=>{g(0)},[s]);let w=Sn[s],p=w==="Commands"?mb(i):w==="Shortcuts"?gb():w==="Tests"?hb():w==="Setup"?bb():vb({version:t,environment:r,sessionId:n,runUrl:o}),v=p.length,c=f>0,m=f+Co<v,_=p.slice(f,f+Co);Be((B,F)=>{if(F.escape){e();return}if(F.rightArrow||F.tab){u(q=>(q+1)%Sn.length);return}if(F.leftArrow){u(q=>(q-1+Sn.length)%Sn.length);return}if(F.upArrow){g(q=>Math.max(0,q-1));return}if(F.downArrow){g(q=>Math.min(Math.max(0,v-Co),q+1));return}});let U=[{keys:"\u2190\u2192/tab",label:"switch tabs"}];return v>Co&&U.push({keys:"\u2191\u2193",label:"scroll"}),(0,A.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:[(0,A.jsx)(vd,{tabs:[...Sn],activeIndex:s,onChange:u}),c&&(0,A.jsx)(b,{marginTop:1,children:(0,A.jsx)(a,{color:l.dim,children:"\u25B2 more above"})}),(0,A.jsx)(b,{marginTop:c?0:1,flexDirection:"column",children:_}),m&&(0,A.jsx)(b,{children:(0,A.jsx)(a,{color:l.dim,children:"\u25BC more below"})}),(0,A.jsx)(Vt,{bindings:U,escBackLabel:"back to chat"})]})}function mb(e){let t=vn(e==="generate"?bn:Wr);return[(0,A.jsx)(a,{color:l.dim,children:"Type a natural-language objective and press \u21B5 to run, e.g."},"intro"),(0,A.jsx)(b,{marginLeft:2,children:(0,A.jsx)(a,{color:l.orange,children:'"search amazon for laptop"'})},"ex"),(0,A.jsx)(b,{marginBottom:1},"sp"),(0,A.jsx)(a,{color:l.dim,bold:!0,children:"Slash commands"},"cmd-h"),...t.map(r=>(0,A.jsxs)(b,{marginLeft:2,children:[(0,A.jsx)(b,{width:14,children:(0,A.jsxs)(a,{color:l.orange,children:["/",r.name]})}),r.args&&(0,A.jsx)(b,{width:14,children:(0,A.jsx)(a,{color:l.dim,children:r.args})}),(0,A.jsx)(a,{color:l.dim,children:r.description})]},r.name)),(0,A.jsx)(b,{marginBottom:1},"sp2"),(0,A.jsx)(b,{marginLeft:2,children:(0,A.jsx)(a,{color:l.dim,children:"/auth submenu: login \xB7 logout \xB7 whoami \xB7 profiles \xB7 balance"})},"auth-sub"),(0,A.jsx)(b,{marginLeft:2,children:(0,A.jsx)(a,{color:l.dim,children:"/config submenu: show \xB7 run (mode \xB7 assertion-mode) \xB7 generate \xB7 chrome-profile \xB7 project \xB7 folder \xB7 window \xB7 hints"})},"config-sub")]}function Eo(e,t){return[(0,A.jsx)(a,{color:l.dim,bold:!0,children:e},`h-${e}`),...t.map(([r,n],o)=>(0,A.jsxs)(b,{marginLeft:2,children:[(0,A.jsx)(b,{width:26,children:(0,A.jsx)(a,{color:l.orange,children:r})}),(0,A.jsx)(a,{color:l.dim,children:n})]},`r-${e}-${o}`)),(0,A.jsx)(b,{marginBottom:1},`s-${e}`)]}function gb(){return[...Eo("Cursor & word edit",[["\u2190 \u2192","Cursor by char"],["Ctrl+A Ctrl+E","Start / end of line"],["Home End","Start / end (Linux/Win; rare on Mac laptops)"],["Backspace","Delete char before cursor"],["Ctrl+W","Delete word back"],["Ctrl+U","Clear input"],["Ctrl+K","Kill from cursor to end"],["Ctrl+\u2190 Ctrl+\u2192","Word jump (Linux/Win, iTerm2)"],["Option+\u2190 Option+\u2192","Word jump (Mac native)"],["Option+B Option+F","Word jump (Mac, Emacs-style)"],["Alt+Backspace","Delete word back (Option+Delete on Mac)"],["Ctrl+Delete Option+Fn+Del","Delete word forward"]]),...Eo("History & completion",[["\u2191 \u2193","Previous / next history"],["Tab","Accept ghost / fill highlighted command"],["Ctrl+R","Reverse-search history"],["\u21B5","Submit"],["Esc","Close overlay / clear / back"]]),...Eo("Lists & menus",[["\u2191 \u2193","Navigate"],["type any char","Filter"],["\u21B5","Select"],["Tab","Create-new (in pickers)"],["Esc","Clear filter, then back"]]),...Eo("Global",[["Ctrl+C","Cancel run \xB7 twice exits"]]),(0,A.jsx)(a,{color:l.dim,bold:!0,children:"Platform caveats"},"cv-h"),(0,A.jsx)(a,{color:l.dim,children:'\u2022 Mac Terminal.app: enable "Use Option as Meta key" (Profile \u2192 Keyboard)'},"cv-1"),(0,A.jsx)(a,{color:l.dim,children:"\u2022 Mac iTerm2: works by default (Esc+ mode)"},"cv-2"),(0,A.jsx)(a,{color:l.dim,children:"\u2022 Mac Mission Control may intercept Ctrl+arrow \u2014 use Option+arrow instead"},"cv-3"),(0,A.jsx)(a,{color:l.dim,children:"\u2022 Bare Forward Delete acts as Backspace (Ink can't disambiguate)"},"cv-4"),(0,A.jsx)(a,{color:l.dim,children:"\u2022 Shift+arrow is parsed but unbound (selection model is future)"},"cv-5"),(0,A.jsx)(a,{color:l.dim,children:"\u2022 Thousands of terminals exist \u2014 if a shortcut fails, run `cat` to see bytes"},"cv-6")]}function hb(){return[(0,A.jsxs)(a,{color:l.dim,children:["Sessions you run here are saved as ",(0,A.jsx)(a,{color:l.orange,children:"*_test.md"})," files you can replay later."]},"t-intro"),(0,A.jsx)(b,{marginBottom:1},"t-sp1"),(0,A.jsx)(a,{color:l.dim,bold:!0,children:"Auto-save"},"t-save-h"),(0,A.jsxs)(a,{color:l.dim,children:[" In ",(0,A.jsx)(a,{color:l.orange,children:"testing"})," mode, /exit prompts to save the session under a name (default: timestamp)."]},"t-save-1"),(0,A.jsxs)(a,{color:l.dim,children:[" In ",(0,A.jsx)(a,{color:l.orange,children:"action"})," mode, sessions are ephemeral unless launched with --name or set via /name."]},"t-save-2"),(0,A.jsxs)(a,{color:l.dim,children:[" Output: ",(0,A.jsx)(a,{color:l.orange,children:"<cwd>/.testmuai/tests/<name>_test.md"})," + sibling ",(0,A.jsx)(a,{color:l.orange,children:"output-<name>/"})," (Result.md + .internal/meta.json)."]},"t-save-3"),(0,A.jsx)(b,{marginBottom:1},"t-sp2"),(0,A.jsx)(a,{color:l.dim,bold:!0,children:"Replay from a shell"},"t-run-h"),(0,A.jsxs)(a,{color:l.dim,children:[" ",(0,A.jsx)(a,{color:l.orange,children:"kane-cli testmd run path/to/foo_test.md"})," \xB7 ",(0,A.jsx)(a,{color:l.orange,children:"kane-cli testmd list"})," \xB7 bare ",(0,A.jsx)(a,{color:l.orange,children:"kane-cli testmd"})," opens a TTY picker."]},"t-run-1"),(0,A.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,A.jsx)(b,{marginBottom:1},"t-sp3"),(0,A.jsx)(a,{color:l.dim,bold:!0,children:"Naming a session mid-run"},"t-name-h"),(0,A.jsxs)(a,{color:l.dim,children:[" Type ",(0,A.jsxs)(a,{color:l.orange,children:["/name ","<new-name>"]})," any time before /exit. Name allowed chars: letters, digits, _, -."]},"t-name-1"),(0,A.jsxs)(a,{color:l.dim,children:[" Discarding at the save prompt: press ",(0,A.jsx)(a,{color:l.orange,children:"N"})," (only key that discards \u2014 every other key saves with default)."]},"t-name-2")]}function bb(){return[(0,A.jsx)(a,{color:l.dim,bold:!0,children:"1. Login"},"s1-h"),(0,A.jsx)(a,{color:l.dim,children:" /auth \u2192 login. OAuth opens browser; basic uses LambdaTest username + access key."},"s1-b"),(0,A.jsx)(a,{color:l.dim,bold:!0,children:"2. Project & folder"},"s2-h"),(0,A.jsx)(a,{color:l.dim,children:" /config project / /config folder. Esc auto-picks KaneAI Generated / Untitled."},"s2-b"),(0,A.jsx)(a,{color:l.dim,bold:!0,children:"3. Run settings (/config \u2192 Run)"},"s3-h"),(0,A.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,A.jsx)(a,{color:l.dim,children:" assertion-mode: visual (default) = read/assert via vision \xB7 dom = DOM-based extraction/assertions"},"s3-c"),(0,A.jsx)(b,{marginBottom:1},"spacer-1"),(0,A.jsx)(a,{color:l.dim,bold:!0,children:"Variables (later wins)"},"v-h"),(0,A.jsxs)(a,{color:l.dim,children:[" ",`${yn(mt,"variables")}/*.json`," (global)"]},"v-1"),(0,A.jsxs)(a,{color:l.dim,children:[" ","{cwd}/.testmuai/variables/*.json"," (local) \xB7 --variables-file \xB7 --variables ","'{...}'"]},"v-2"),(0,A.jsx)(a,{color:l.dim,children:' Format: { "key": { "value": "...", "secret": false } } \xB7 ref via {{key}}'},"v-3"),(0,A.jsx)(b,{marginBottom:1},"spacer-2"),(0,A.jsx)(a,{color:l.dim,bold:!0,children:"Context files"},"c-h"),(0,A.jsxs)(a,{color:l.dim,children:[" Global: ",yn(mt,"global-memory.md")]},"c-1"),(0,A.jsxs)(a,{color:l.dim,children:[" Local: ","{cwd}/.testmuai/context.md"," \xB7 CLI: --global-context, --local-context"]},"c-2"),(0,A.jsx)(b,{marginBottom:1},"spacer-3"),(0,A.jsx)(a,{color:l.dim,bold:!0,children:"Paths"},"p-h"),(0,A.jsxs)(a,{color:l.dim,children:[" Config: ",yn(mt,"tui-config.json")," \xB7 Auth: ",yn(mt,"config.json")]},"p-1"),(0,A.jsxs)(a,{color:l.dim,children:[" Sessions: ",yn(mt,"sessions"),"/"]},"p-2")]}function vb({version:e,environment:t,sessionId:r,runUrl:n}){return[(0,A.jsxs)(b,{children:[(0,A.jsx)(a,{color:l.orange,bold:!0,children:"kane-cli "}),(0,A.jsxs)(a,{color:l.muted,children:["v",e]})]},"title"),(0,A.jsx)(b,{marginBottom:1},"sp"),(0,A.jsxs)(b,{children:[(0,A.jsx)(b,{width:14,children:(0,A.jsx)(a,{color:l.dim,children:"Environment"})}),(0,A.jsx)(a,{children:t})]},"env"),(0,A.jsxs)(b,{children:[(0,A.jsx)(b,{width:14,children:(0,A.jsx)(a,{color:l.dim,children:"Session"})}),(0,A.jsx)(a,{children:r})]},"sess"),(0,A.jsxs)(b,{children:[(0,A.jsx)(b,{width:14,children:(0,A.jsx)(a,{color:l.dim,children:"Default URL"})}),(0,A.jsx)(a,{color:l.orange,children:n})]},"url"),(0,A.jsx)(b,{marginBottom:1},"sp2"),(0,A.jsxs)(b,{children:[(0,A.jsx)(b,{width:14,children:(0,A.jsx)(a,{color:l.dim,children:"Docs"})}),(0,A.jsx)(a,{color:l.orange,underline:!0,children:fb})]},"docs"),(0,A.jsxs)(b,{children:[(0,A.jsx)(b,{width:14,children:(0,A.jsx)(a,{color:l.dim,children:"Bugs"})}),(0,A.jsx)(a,{color:l.orange,underline:!0,children:pb})]},"bugs")]}var Io=D(Ie(),1);import{existsSync as yd,readFileSync as jS,rmSync as xb,unlinkSync as yb}from"fs";function Sd(e){let t=Ya(e);yd(t)&&xb(t,{recursive:!0,force:!0}),yd(e)&&yb(e)}var ps=D(H(),1);function wd({cwd:e,currentOrgId:t,onClose:r,onRun:n,onExport:o}){let[i,s]=(0,Io.useState)("list"),[u,f]=(0,Io.useState)(null),[g,w]=(0,Io.useState)(0);return i==="inspect"&&u?(0,ps.jsx)(Qa,{path:u.path,relPath:u.relPath,onBack:()=>s("list"),onAction:p=>{if(p==="run")n(u);else if(p==="export")o(u);else{try{Sd(u.path)}catch{}f(null),s("list"),w(v=>v+1)}}}):(0,ps.jsx)(Ja,{root:e,currentOrgId:t,onSelect:p=>{f(p),s("inspect")},onCancel:r},g)}var lt=D(Ie(),1);function Rd(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),v=(0,lt.useRef)([]),c=(0,lt.useRef)(!1),m=(0,lt.useRef)(null),_=(0,lt.useRef)(e);_.current=e;let U=(0,lt.useCallback)(async q=>{if(c.current)return null;c.current=!0;let $=++p.current,z=[];v.current=z;let ae=K=>`testmd-run-${$}-${K}`,te={register:(K,pe)=>{let Re=ae(K);z.push(Re),Ft(Re,pe)},deregister:K=>on(ae(K)),cleanup:(K,pe)=>dr(ae(K),pe),remoteLogger:_.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 _.current.buildInput(q),pe=await bc(K,re,te);return w(pe),pe}finally{c.current=!1,m.current=null,o(!1),r(null);for(let K of z)dr(K,"run-finished");z.length=0}},[]),B=(0,lt.useCallback)(()=>{for(let $ of v.current)dr($,"cancelled");v.current=[];let q=m.current;m.current=null,q?.()},[]),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 Td(e={}){let[t,r]=(0,nt.useState)(()=>Zn({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 q=0,$=0,z=0;for await(let ae of U){if(f.current)break;switch(r(te=>Sc(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":q=ae.data.scenarios.length,$=ae.data.scenarios.reduce((te,re)=>te+(re.test_cases?.length??0),0),F?.("tcg_snapshot",{scenarioCount:q,caseCount:$});break;case"clarification":F?.("tcg_clarification",{});break;case"done":F?.("tcg_request_done",{status:ae.status,scenarioCount:q,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??wc;u.current=F(U),g.current=new AbortController;let q=Zn({requestId:"",objective:B.prompt});r(eo(q));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(eo({...$.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]),v=(0,nt.useCallback)(async(U,B)=>{if(!u.current||!i)throw new Error("useTcgSession: chat() with no active request");r(F=>eo(yc(F)));try{await u.current.chat(i,U,B)}catch(F){throw r(q=>({...q,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]),_=(0,nt.useCallback)(()=>{f.current=!0,g.current&&g.current.abort(),g.current=null,r(Zn({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:xc(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:v,cancel:c,end:m,reset:_}}var be=D(Ie(),1);import{join as Xr,resolve as Lb}from"path";import{mkdirSync as gs,writeFileSync as jd,appendFileSync as Bb}from"fs";function kd(e){let t=Ue(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 Cd(e){return e.turnActive?!0:e.requestId!=null&&!e.isSessionClosed&&!e.saved}function Ed(e){return e.isRunning||e.hasLiveResults}function Id(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 Ad(e,t){return`S${e+1}.C${t+1}`}function _d(e,t){return e.reduce((r,n)=>r+(n.test_cases??[]).filter(o=>!t.has(o.id)).length,0)}function Pd(e,t){return e.map(r=>({...r,test_cases:(r.test_cases??[]).filter(n=>!t.has(n.id))})).filter(r=>(r.test_cases??[]).length>0)}var Rn=D(Ie(),1);import{createHash as Sb}from"crypto";function wb(e){return Sb("sha1").update(JSON.stringify({t:e.title,p:e.preconditions,m:e.manual_steps})).digest("hex")}var Ao=class{constructor(t){this.deps=t;this.max=t.maxConcurrent??3}cache=new Map;caseById=new Map;queue=[];active=0;max;onSnapshot(t){t.forEach((r,n)=>{(r.test_cases??[]).forEach((o,i)=>{if(!qt(o)||o.manual_steps==null)return;let s=wb(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:Ad(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);Ft(o,()=>i.abort());let u=Date.now();try{this.safeLog("tcg_bif_start",{caseId:t,ref:n.ref});let f=await s(Ec(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{on(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=Ic({objective:t,model:this.deps.model,sessionId:this.deps.sessionId,auth:n});return Ac(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(),on(`bifurcation-${t}`);this.cache.clear(),this.caseById.clear(),this.queue=[],this.active=0}};function Dd(e){let t=(0,Rn.useRef)(null);return(0,Rn.useEffect)(()=>{if(!e.enabled)return;let r=e.log,n=r?(o,i,s,u)=>r(i,u??{}):void 0;return t.current=new Ao({model:e.model,sessionId:e.sessionId,resolveAuth:e.resolveAuth,spawnOpts:{environment:e.environment,log:n},log:r,persist:e.persist}),()=>{t.current?.dispose(),t.current=null}},[e.enabled,e.sessionId,e.model,e.environment]),(0,Rn.useEffect)(()=>{t.current&&t.current.onSnapshot(e.scenarios)},[e.scenarios]),{getStatus:r=>t.current?.getStatus(r),getResult:r=>t.current?.getResult(r),manager:t}}import{resolve as $d,isAbsolute as Tb,extname as kb}from"path";import{homedir as Bd}from"os";var Rb=/(?<=^|\s)@(?:"([^"]*)"|([^\s@]+))/g;function Ld(e){let t=[];for(let r of e.matchAll(Rb)){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 Cb=/^s\d+(\.c\d+)?$/i;function Eb(e){return e==="~"?Bd():e.startsWith("~/")?$d(Bd(),e.slice(2)):e}function Ib(e){return/^https?:\/\//i.test(e)?!1:e.includes("/")?!0:to.has(kb(e).toLowerCase())}function Od(e,t){let r=Ld(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(Cb.test(u)||!Ib(u))continue;let g=Eb(u),w=Tb(g)?g:$d(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 Ab=["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"],_b=new Set(Ab);function ms(e){let t={};for(let r of Object.keys(e))_b.has(r)&&e[r]!==void 0&&(t[r]=e[r]);return t}import{mkdirSync as Pb,appendFileSync as Db}from"fs";import{join as Nd}from"path";function Md(e,t,r,n,o=mt){let i=Nd(o,"tcg",e&&e.length>0?e:"pending"),s=Nd(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):""}
|
|
@@ -22,5 +22,5 @@ import{a as pi,b as Hs}from"./chunk-3MSXQU2C.js";import{a as xa,b as ya,c as Sa,
|
|
|
22
22
|
`),screenshot_b64:u}}})},[e,t,r]);return{describe:r,onDescribe:o,creditsRef:n}}var qo=e=>({kind:"login",env:e}),xs=e=>({kind:"switch",env:e}),Af=(e,t)=>e?{kind:"switch",env:t}:{kind:"logout"};async function ys(e){let t=await e.getTmsCredentials();return{basicAuth:e.resolvedBasic??(t?{username:t.username,access_key:t.access_key}:null),token:e.token,resolver:e.resolver,resolvedCreds:t}}function _f(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 Pf(e){return Rr()?[{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 Df(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=Yn(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 Ss(e){if(!Rr())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 Lf(e){return{label:"Mobile",entries:[{key:"Device name",value:Qs(e?.default_target)??"(none)"},{key:"OS version",value:Zs(e?.default_target)??"(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 Bf(e){return e.isRunning?"refused-running":e.hasRuns?e.isTesting&&!e.hasName?"needs-name":"proceed":"no-runs"}async function $f(e){await new an(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(H(),1);function cE({localMode:e=!1,codeExport:t,codeLanguage:r,skipCodeValidation:n,updatePromise:o,migrationResult:i,sessionName:s,initialChatMode:u,initialObjective:f,initialGenerateLimits:g}={}){Fs();let w=(0,T.useRef)(new Kn),[p,v]=(0,T.useState)(0),c=w.current,[m]=(0,T.useState)(()=>new Vr),_=(0,T.useRef)(0),U=(0,T.useCallback)(()=>`msg-${++_.current}`,[]),[B,F]=(0,T.useState)(!1),[q,$]=(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,Ge]=(0,T.useState)(null),st=(0,T.useRef)(null),[zt,Rt]=(0,T.useState)(null),[ge,ut]=(0,T.useState)(null),[Ot,Oe]=(0,T.useState)(Jn()),[Le,Kt]=(0,T.useState)(null),[Me,Yt]=(0,T.useState)([]),[gr,Er]=(0,T.useState)(!1),[Kr,Ir]=(0,T.useState)(!1),[hr,br]=(0,T.useState)(null),[Tt,vr]=(0,T.useState)(null),[Ar,xr]=(0,T.useState)(null),[Z,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),P=(0,T.useRef)(null),L=(0,T.useRef)(Va()),Y=(0,T.useRef)(null),X=(0,T.useRef)(!1),ee=(0,T.useRef)(""),we=(0,T.useRef)(null),Je=(0,T.useRef)(null),le=(0,T.useRef)({}),St=(0,T.useRef)(null),{append:bt}=Xs(),Ce=(0,T.useCallback)(d=>bt((0,k.jsx)(b,{paddingX:1,children:d})),[bt]),[nr,Nt]=(0,T.useState)("booting"),[Of,Nf]=(0,T.useState)([]),[Mf,Ho]=(0,T.useState)(!1),[ws,jf]=(0,T.useState)(!1),[Tn,Vf]=(0,T.useState)("chat"),[Mt,yr]=(0,T.useState)(null),[kn,Rs]=(0,T.useState)(null),[Yr,Ts]=(0,T.useState)(!1),[Jr,Cn]=(0,T.useState)(!1),ks=(0,T.useRef)(()=>{}),Ff=(0,T.useCallback)((d,h)=>ks.current(d,h),[]),ye=Td({log:Ff});Gd(ye.state,ye.turnActive,Ce);let Go=(0,T.useRef)(!1),or=(0,T.useCallback)(()=>{Go.current||ye.state.scenarios.length!==0&&(Go.current=!0,Ce((0,k.jsx)($o,{scenarios:ye.state.scenarios,activeSid:null})))},[ye.state.scenarios,Ce]);(0,T.useEffect)(()=>{ye.isSessionClosed&&or()},[ye.isSessionClosed,or]);let[En,Qr]=(0,T.useState)(null),[Pe,Wo]=(0,T.useState)({headless:!1,maxSteps:50,timeout:0,cdpEndpoint:"",wsEndpoint:"",useCft:!1}),Uf=mi(),qf=mi(Gs),x=cd(),In=ld(),kt=(0,T.useMemo)(()=>({auth:{initResolver:d=>x.initResolver(d,(h,y,R,S)=>w.current.log(h,y,R,S)),getResolver:()=>x.getResolver(),getBasicAuth:()=>x.getBasicAuth(),getToken:()=>x.getToken()},getSession:()=>w.current,log:(d,h,y,R)=>w.current.log(d,h,y,R),state:{getTmsCredsCache:()=>Le,setTmsCredsCache:Kt,identityServicesRef:ie,screenshotQueueRef:ce},exit:{registerCleanup:Ft,setExitRemoteLogger:ua},options:{skipScreenshotQueue:e}}),[x.initResolver,x.getResolver,x.getBasicAuth,x.getToken,Le,e]),Hf=(0,T.useCallback)((d,h,y,R)=>{let S=ce.current;if(!S)return;if(Te.current&&R){L.current.track(Fa(Te.current.packTestDir,R,S,(N,O,Q,ve)=>c.log(N,O,Q,ve)));return}let C=de.current+h;Ua(c.sessionDir,C,d,S,(N,O,Q,ve)=>c.log(N,O,Q,ve),y)},[c]),Gf=(0,T.useCallback)((d,h,y)=>{c.logStep(d,h,y)},[c]),Wf=(0,T.useCallback)(d=>St.current?.setStepText(d),[]),Xf=(0,T.useCallback)(()=>St.current?.setStepComplete(),[]),{describe:Zr,onDescribe:zf,creditsRef:Xo}=If({hostIsTTY:()=>!!process.stdout.isTTY,resolve:()=>{let d=x.getResolvedBasicAuth();if(!d)return null;let h=Ue(x.creds.getDefaultEnv());return{authHeader:yi(d.username,d.access_key),sessionId:c.sessionId,controllerBaseUrl:h.controllerBaseUrl}}}),M=Pa(Hf,Gf,Wf,Xf,zf);(0,T.useEffect)(()=>{M.isRunning||Zr.stop()},[M.isRunning,Zr.stop]);let[E,Ee]=(0,T.useState)(()=>m.load()),I=qu({getDefaults:()=>m.getMobile(),setDefaults:d=>{m.setMobile(d),Ee(m.load())},resolveAppId:async(d,h)=>{let y=await x.resolveBasicAuth().catch(()=>null),R=y?{username:y.username,access_key:y.access_key}:x.getResolvedBasicAuth();if(!R?.username||!R.access_key)throw new Error("Log in to use an app id, or choose a local build.");let S=zo.current,C=await pa({appId:d,baseUrl:sn(Se),auth:{username:R.username,accessKey:R.access_key},onProgress:h,...S?{accepts:S==="emulator"?[".apk"]:[".zip"]}:{}});return{name:C.name,fromStore:C.fromStore}},appLabelFor:async d=>{try{return(await new fa().find(d))?.name}catch{return}}}),zo=(0,T.useRef)(null);zo.current=I.kind;let _r=Us(E.mobile?.tui_target,E.mobile?.default_target?.kind),ir=_r.kind==="emulator"||_r.kind==="simulator",Kf=(0,T.useCallback)(async d=>{let h=process.cwd(),y=await Qu(h,d),R=await Promise.all(y.map(async N=>{let O=await Zu(rr(h,N),I.target);return{kind:"artifact",value:N,label:N,selectable:Ju(O),...O.state==="compatible"?{}:{reason:O.reason}}})),S=d.toLowerCase(),C=I.target?I.apps.filter(N=>!S||N.toLowerCase().includes(S)).map(N=>({kind:"installed",value:N,label:N})):[];return[...R,...C]},[I.apps,I.target]),Cs=I.phase==="checking"||I.phase==="doctor"||I.phase==="chooser"||I.phase==="confirm"||I.phase==="appSource"||I.phase==="appList"||I.phase==="appId"||I.phase==="picking"||I.phase==="apps",sr=(0,T.useRef)(null),Ko=(0,T.useRef)(null),[ft,Es]=(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.`,[]),Yf=(0,T.useRef)(new Map),Is=(0,T.useRef)(new Set),As=(0,T.useRef)(null),[Dr,_s]=(0,T.useState)(null),[,Jf]=(0,T.useState)(0),vt=(0,T.useCallback)(()=>Jf(d=>d+1),[]),[V,je]=(0,T.useState)(null),Lr=x.creds.getActiveProfile(),Se=x.creds.getDefaultEnv(),Qf=ed({auth:x,env:Se,kind:()=>zo.current}),_t=(0,T.useCallback)((d,h)=>{let y=d?x.creds.loadProfileConfig(d,h):null;m.save({project_id:y?.project_id??null,project_name:y?.project_name??null,folder_id:y?.folder_id??null,folder_name:y?.folder_name??null}),Ee(m.load())},[x.creds,m]),Yo=(0,T.useCallback)(async(d,h)=>{let y=x.getResolver();if(!y)return null;let R=y.cached??await y.resolve();if(!R)return null;let S=Ue(h),C=new an(S.tmsBaseUrl,R.username,R.access_key);try{let O=(await C.listProjects()).find(ve=>ve.name==="KaneAI Generated");if(O)return{id:O.project_id,name:O.name};let Q=await C.createProject("KaneAI Generated");return{id:Q.id,name:Q.name}}catch{return null}},[x]),Jo=(0,T.useCallback)(async(d,h)=>{let y=x.getResolver();if(!y)return null;let R=y.cached??await y.resolve();if(!R)return null;let S=Ue(d),C=new an(S.tmsBaseUrl,R.username,R.access_key);try{let O=(await C.listFolders(h)).find(ve=>ve.name==="Untitled");if(O)return{id:O.id,name:O.name};let Q=await C.createFolder(h,"Untitled");return{id:Q.id,name:Q.name}}catch{return null}},[x]);(0,T.useEffect)(()=>{z||(c.start({model:E.model,environment:Se,profile:Lr}),s&&c.setSessionName(s),ae(!0))},[c,z,E.model,Se,Lr,s]);let Ps=(0,T.useRef)(!1);(0,T.useEffect)(()=>{if(!z||Ps.current)return;Ps.current=!0;let d=s?[{label:"session",value:s},{label:"test",value:pi(rr(process.cwd(),".testmuai","tests",`${s}_test.md`))},{label:"output",value:pi(rr(process.cwd(),".testmuai","tests",`output-${s}`))}]:[{label:"session",value:"ephemeral"},{label:"note",value:"use /name <name> to persist this session"}];Ce((0,k.jsx)(hi,{title:"Recording",titleColor:"#ff9500",rows:d}))},[z,s,Ce]);let Ds=(0,T.useRef)(!1);(0,T.useEffect)(()=>{if(!B||Ds.current||!z)return;Ds.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}Ut({kind:"boot",tmsCreds:d,env:Se},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,Se,c]);let Pt=(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 x.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}),Kt(d)):c.log("warn","TMS_CREDS_FAILED","No TMS credentials resolved"),d},[x,Le,c]),An=(0,T.useCallback)(d=>{Ce((0,k.jsx)(hi,{title:"\u24D8 Auto-configured",titleColor:l.orange,rows:[{label:"project",value:`${d.projectName} (${d.projectId})`},{label:"folder",value:`${d.folderName} (${d.folderId})`},{label:"change with",value:(0,k.jsxs)(b,{flexDirection:"column",children:[(0,k.jsx)(a,{color:l.dim,children:"kane-cli config project <id>"}),(0,k.jsx)(a,{color:l.dim,children:"kane-cli config folder <id>"})]})}]}))},[Ce]),_n=(0,T.useCallback)(async()=>{let d=await Pt();if(!d)return c.log("warn","PROJECT_FAILED","No TMS credentials for project/folder gate"),null;let h=x.creds.getActiveProfile()??"default",y=x.creds.getDefaultEnv(),R=await ka({creds:x.creds,config:m,profile:h,env:y,tmsCreds:{username:d.username,access_key:d.access_key},isLocal:e,log:(S,C,N,O)=>c.log(S,C,N,O),onAnnounce:An});return R.status==="ok"?{projectId:R.projectId,folderId:R.folderId}:null},[Pt,m,c,x.creds,e,An]),he=(0,T.useCallback)(d=>{let h=U(),y={...d,id:h};Ce((0,k.jsx)(ju,{entry:y}))},[U,Ce]),j=(0,T.useCallback)((d,h,y,R,S)=>{Ce((0,k.jsx)(bd,{status:d,command:h,message:y,details:R,accentColor:S})),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]),Ls=(0,T.useRef)(()=>{}),ar=Ud(ye.state.scenarios.map(d=>(d.test_cases??[]).length)),Zf=(0,T.useCallback)(async()=>{let d=await _n();return Ee(m.load()),d},[_n,m]),Dt=Fd({tcg:ye,initialChatMode:u,tuiConfig:E,auth:x,session:c,runner:M,appendStatic:Ce,handleInput:d=>Ls.current(d),freezeTcgArtifact:or,rearmArtifactFreeze:()=>{Go.current=!1},openSwitchConfirm:d=>Qr({reason:"switch",to:d}),emitFeedback:j,excluded:ar.excluded,openBrowse:ar.open,initialGenerateLimits:g,ensureProjectAndFolder:Zf,config:m});ks.current=Dt.tcgLog;let{chatMode:Ne,tcgError:wv,tcgValidationError:Rv,composeIdleHint:Tv,inputClearSeq:ep,handleGenerateSubmit:tp,flashComposeHint:Pn,setTcgError:kv}=Dt,rp=E.hints_enabled!==!1&&process.env.KANEAI_HINTS_DISABLED!=="1"&&!!process.stdout.isTTY&&!!process.stdin.isTTY&&process.env.KANE_SCREEN_READER!=="1",Bs=(0,T.useRef)(!1);Ne==="generate"&&(Bs.current=!0);let{footerHint:np}=rf({enabled:rp,ready:nr==="ready",env:Se,config:E,tokenValid:x.tokenValid,chatMode:Ne,sessionUsedGenerate:Bs.current,log:(d,h,y,R)=>w.current.log(d,h,y,R)}),Sr=(0,T.useCallback)(async(d,h,y)=>{let R=I.device,S=y??(ir?"mobile":"web"),C=S==="mobile"?"device":"web",N=C==="device";c.log("info","RUN_TARGET_STATE","Dispatch target resolved",{mobile_mode:N,tui_target:E.mobile?.tui_target??null,device_bound:!!R,app_bound:!!R?.app_package,mobile_phase:I.phase,parked:!!sr.current});let O=N?Wu(d):{objective:d,token:null};if(N&&O.token&&!O.objective){he({type:"error",text:`@${O.token}: add an objective after the app token.`});return}if(!ft&&!O.token&&!h&&!Is.current.has(d)){let fe=x.getResolvedBasicAuth(),_e=fe?null:await x.getToken(),Fe=fe?yi(fe.username,fe.access_key):_e?`Bearer ${_e}`:null;if(Fe){let Ze=await rd({objective:d,sessionTarget:S,controllerBaseUrl:Ue(Se).controllerBaseUrl,authHeader:Fe,cache:Yf.current});c.log("info","CLASSIFY_VERDICT","Objective classified",{session_target:S,target:Ze?.target??null,confidence:Ze?.confidence??null});let Bt=nd(Ze,S);if(Bt.kind==="mismatch"){_s({objective:d,url:h,suggested:Bt.suggested,verdict:Bt.verdict});return}}}if(N&&!R){sr.current=d,he({type:"info",text:"Setting up mobile device\u2026"}),I.begin();return}let Q=R;if(N&&O.token){let fe=ha(O.token);if(!fe){he({type:"error",text:`@${O.token}: ${ga}`});return}let _e=await I.bindAppForRun(fe);if(!_e.ok){he({type:"error",text:`@${O.token}: ${_e.error}`});return}Q=_e.device}else if(N){if(!R?.app_package){sr.current=d,he({type:"info",text:"Choose the app under test\u2026"}),I.requestAppSource();return}let fe=await I.validateBinding();if(!fe.ok){sr.current=d,he({type:"info",text:fe.reason}),fe.step==="device"?I.begin("reinit"):I.requestAppSource();return}}let ve=N?O.objective:d,ke=X.current?null:Ga({flag:h,configDefault:E.default_url}),Qe=uc({objective:ve,globalDir:rr(mt,"variables"),localDir:rr(process.cwd(),".testmuai","variables")}),wr=c.nextRunIndex();de.current=wr,ee.current=Qe.auteurObjective,Xo.current=0,c.logRunStart(wr,Qe.auteurObjective,ke??""),c.setFirstRun(Qe.auteurObjective,ke??"");let jn=x.getResolvedBasicAuth(),Lt=jn,jt=null;if(!Lt&&(jt=await x.getToken(),!jt)){he({type:"error",text:"Not authenticated. Run /login first."});return}let Br=await ys({resolvedBasic:jn,token:jt,resolver:x.getResolver(),getTmsCredentials:Pt});we.current=Br;let en=x.creds.getActiveProfile()??"default",tn=x.creds.getDefaultEnv();Ta(x.creds,m,en,tn,(fe,_e,Fe,Ze)=>c.log(fe,_e,Fe,Ze));let Vn=m.load();if(Ee(Vn),N){if(!Q){sr.current=d,he({type:"info",text:"Setting up mobile device\u2026"}),I.begin();return}if(!Q.app_package){sr.current=d,he({type:"info",text:"Choose the app under test\u2026"}),I.requestApp();return}}let Ve;try{Ve=await oc(C,{prepareDevice:async()=>{let fe=O.token??Q.app_package,_e=!O.token&&fe&&Q.udid?await Gu({udid:Q.udid,app:fe,runnerGen:M.sessionGen}):null,Fe=Ko.current;if(_e&&Fe&&Fe.key===_e)return he({type:"info",text:`Device ready: ${Fe.device.app_package} on ${Fe.displayName} (reusing session)`}),{device:Fe.device,...Fe.appRef?{appRef:Fe.appRef}:{},...Fe.appId?{appId:Fe.appId}:{}};let Ze=await Pt(),Bt=x.getResolvedBasicAuth(),pt=await va({...I.target?.osVersion?{device:{name:Ys(I.target),osVersion:I.target.osVersion}}:{},...Q.platform?{platform:Q.platform}:{},...O.token?{app:O.token}:Q.app_package?{app:Q.app_package}:{},defaults:E.mobile,interactive:!1,onProgress:ui=>Rt(ui),...Bt?.username&&Bt.access_key&&Ze?.org_id?{cloudUpload:{env:Se,orgId:String(Ze.org_id),userId:String(Ze.user_id??""),baseUrl:sn(Se),auth:{username:Bt.username,accessKey:Bt.access_key}}}:{}});return he({type:"info",text:`Device run: ${pt.device.app_package} on ${pt.device.udid}`}),_e&&(Ko.current={key:_e,device:pt.device,...pt.appRef?{appRef:pt.appRef}:{},...pt.appId?{appId:pt.appId}:{},displayName:pt.target.displayName}),{device:pt.device,...pt.appRef?{appRef:pt.appRef}:{},...pt.appId?{appId:pt.appId}:{}}},prepareWeb:async()=>{if(Pe.useCft)return he({type:"info",text:"CfT mode: Playwright will manage browser"}),{instance:null,tempDir:null};if(Pe.wsEndpoint)return he({type:"info",text:`WS endpoint: ${Pe.wsEndpoint.slice(0,60)}...`}),{wsEndpoint:Pe.wsEndpoint,instance:null,tempDir:null};if(Pe.cdpEndpoint)return he({type:"info",text:`CDP endpoint: ${Pe.cdpEndpoint}`}),{cdpEndpoint:Pe.cdpEndpoint,instance:null,tempDir:null};he({type:"info",text:"Starting Chrome..."});let fe=await In.ensureChrome(ke??void 0);c.logChromeLaunch(fe.port,fe.cdpEndpoint);let _e=_a({headless:Pe.headless,cdpEndpoint:fe.cdpEndpoint,chromePid:fe.process.pid});return _e&&(St.current=_e,Ft("marker-overlay",()=>_e.kill())),{cdpEndpoint:fe.cdpEndpoint,instance:fe,tempDir:null}}})}catch(fe){let _e=C==="device"?fe instanceof Error?fe.message:String(fe):Ia(fe);he({type:"error",text:_e});return}finally{Rt(null)}let Fn=Ve.kind==="web"?Ve.chrome:{instance:null,tempDir:null};if(wr===0&&!e){c.log("info","ATM_CREATE_START","Creating test via ATM endpoint",{run_index:0});let fe=await _n(),_e=m.load();Ee(_e);let Fe=Ue(Se),Ze=Lt?{username:Lt.username,access_key:Lt.access_key}:await Pt();if(Ze){let Bt=await gc({tmsBaseUrl:Fe.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:!!E.chrome_profile_path,...Ve.kind==="device"?{mobile:mc({platform:Ve.device.platform,appId:Ve.appId,deviceName:I.target?.displayName,osVersion:I.target?.osVersion,udid:Ve.device.udid})}:{},log:(pt,ui,up,dp)=>c.log(pt,ui,up,dp)});Bt&&(c.setTestId(Bt),fe?.projectId&&c.setProjectId(fe.projectId))}}c.setAuteurVariables(Qe.auteur),Je.current=Qe;let li=Lt&&!e?await dc({variables:Qe,auth:Lt,orgId:String((await Pt())?.org_id??""),env:Se,localMode:e,log:(fe,_e,Fe,Ze)=>c.log(fe,_e,Fe,Ze)}):{};le.current=li;let Un=Ii(rr(mt,"global-memory.md")),lr=Ii(rr(process.cwd(),".testmuai","context.md"));if(wr===0){let fe={mode:E.mode,max_steps:Pe.maxSteps,timeout:Pe.timeout>0?Pe.timeout:void 0,target:ic(Ve,{cdpEndpoint:Pe.cdpEndpoint||void 0,wsEndpoint:Pe.wsEndpoint||void 0}),app:ac(Ve),os_version:Ve.kind==="device"?I.target?.osVersion:void 0,device_name:sc(Ve,I.target??void 0),chrome_profile:E.chrome_profile_path||void 0,cdp_endpoint:Pe.cdpEndpoint||void 0,ws_endpoint:Pe.wsEndpoint||void 0,headless:Pe.headless,global_context:Un??void 0,local_context:lr??void 0,variables:Object.keys(Qe.auteur).length>0?Qe.auteur:void 0};c.setResolvedGlobal(fe)}dt.current||(dt.current=!0,Te.current=await Ba({objectiveOrName:c.sessionName??d,sessionId:c.sessionId,title:c.sessionName??d,producerVersion:xt,pid:process.pid,surfaces:ke?[ke]:void 0,packRootDir:rr(c.sessionDir,"evidence")})),P.current||(P.current=La(Fn.cdpEndpoint),P.current());let qn=lc(Qe.auteur,Qe.auteurObjective),lp=cc({objective:Qe.auteurObjective,url:Ve.kind==="device"?void 0:ke??void 0,requireStartUrl:Ve.kind==="web"&&!X.current&&ke===null,model:E.model,chrome:Fn,auth:Br,sessionId:c.sessionId,runIndex:wr,windowSize:E.window_size,maxSteps:Pe.maxSteps,headless:Pe.headless,networkWs:E.network_ws,networkSse:E.network_sse,bugDetection:E.bug_detection,variables:Object.keys(qn).length>0?qn:void 0,globalContext:Un??void 0,localContext:lr??void 0,sessionContext:c.getContext(),device:Ve.kind==="device"?Ve.device:void 0,evidence:$a(Te.current)});ke&&$(ke),me(null),Y.current=null,Es({kind:N?"mobile":"web",label:Ve.kind==="device"?rn(Ve.device.target_kind==="simulator"?"simulator":"emulator"):"Desktop"}),M.startRun(lp,{environment:Se,mode:E.mode,assertionMode:E.assertion_mode,log:(fe,_e,Fe,Ze)=>c.log(fe,_e,Fe,Ze)}),re(fe=>fe+1)},[x,In,m,E,c,Se,M,he,Pe,_n,Pt,ir,ft,I.device,I.target,I.begin,I.requestApp,I.requestAppSource,I.validateBinding,I.bindAppForRun]),Dn=(0,T.useCallback)(d=>{let h=Dr;if(h){if(_s(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(Is.current.add(h.objective),d==="keep"){Sr(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()),I.reset(),he({type:"info",text:"Session target: Desktop (Chrome)"}),Sr(h.objective,h.url,"web");return}As.current=h.verdict.appHint??null,sr.current=h.objective,I.begin(d==="pick"?"reinit":"confirm")}},[Dr,c,he,Sr,m,I]);Hu({phase:I.phase,device:I.device,requestApp:I.requestAppSource,pendingRef:sr,dispatch:d=>{Sr(d)},notify:he,onSettle:()=>{As.current=null}});let op=(0,T.useCallback)(async d=>{let h=yv(d),y=Za(h),R=new Kn;for(let ke of y.warnings)R.log("warn","RESOLVER_WARNING",ke);let S=x.getResolvedBasicAuth(),C=null;S||(C=await x.getToken());let N=await ys({resolvedBasic:S,token:C,resolver:x.getResolver(),getTmsCredentials:Pt}),O=Se,Q=Ue(O),ve=x.creds.getActiveProfile()??"default";return{path:h,cwd:process.cwd(),opts:{},isAgent:!1,disableAskUser:!0,resolved:y,resolvedAuth:N,cliOverrides:{},environment:O,envConfig:Q,profile:ve,model:"v16-alpha",creds:x.creds,configStore:m,session:R,skipGlobalRemoteLogger:!0,onAnnounce:An}},[x,m,Se,An,Pt]),Ae=Rd({buildInput:op,remoteLogger:null}),Qo=(0,T.useRef)(null);(0,T.useEffect)(()=>{if(M.bifurcationInfo&&M.bifurcationInfo!==Qo.current){Qo.current=M.bifurcationInfo;let{flows:d,isSingleFlow:h}=M.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})}},[M.bifurcationInfo,c,he]);let Zo=T.default.useRef(null),ei=T.default.useRef(0),ti=T.default.useRef(0);(0,T.useEffect)(()=>{if(M.lastRunEnd&&M.lastRunEnd!==Zo.current){Zo.current=M.lastRunEnd,X.current=!0;let{status:d,duration:h,summary:y,reason:R,context:S}=M.lastRunEnd,{passed:C,failed:N,total:O}=Da(M.steps);ei.current+=O,ti.current+=h??0;let Q=M.lastRunEnd?.credits_consumed,ve=Q!=null||Xo.current>0?(Q??0)+Xo.current:void 0;me({status:d,duration:h??0,summary:y??"",stepsPassed:C,stepsFailed:N,stepsTotal:O,reason:R,finalState:M.lastRunEnd?.final_state,creditsConsumed:ve}),c.logRunEnd(de.current,d,h,y,M.lastRunEnd?.result_code);let ke=M.bifurcationInfo,Qe=ke&&!ke.isSingleFlow?ke.flows:null,wr=wa(M.lastRunEnd,de.current,Qe),jn=Ra(M.lastRunEnd,ee.current,de.current,wr);c.addRunResult(jn,M.lastRunEnd?.total_runs),Ti(Te.current,M.getEvidenceState(),M.lastRunEnd);let Lt=M.lastRunEnd?.per_flow_metadata;if(ke&&!ke.isSingleFlow&&Lt&&Lt.length>1)for(let jt=0;jt<Lt.length;jt++){let Br=Lt[jt],en=M.steps[jt],tn=en?.children??[],Vn=tn.filter(lr=>lr.status==="passed").length,Ve=tn.filter(lr=>lr.status==="failed").length,Fn=tn.reduce((lr,qn)=>lr+(qn.duration??0),0),li=en?.status==="failed"?"failed":"passed",Un=ke.flows[jt]??en?.objective??ee.current;c.addFlow({runIndex:de.current,flowId:ke.flows[jt],objective:Un,status:li,summary:Br.summary??"",duration:Fn,steps:Vn+Ve,stepsPassed:Vn,stepsFailed:Ve,reason:Br.error_message??void 0,creditsConsumed:Br.credits_consumed??void 0})}else c.addFlow({runIndex:de.current,objective:ee.current,status:d,summary:y??"",duration:h??0,steps:O,stepsPassed:C,stepsFailed:N,reason:R,creditsConsumed:M.lastRunEnd?.credits_consumed})}},[M.lastRunEnd,c,he]);let ri=(0,T.useRef)(null);(0,T.useEffect)(()=>{M.askingUser&&(ri.current=M.askingUser)},[M.askingUser]);let ni=(0,T.useRef)(null);(0,T.useEffect)(()=>{if(Re&&!M.isRunning&&M.lastRunEnd){if(ni.current===M.lastRunEnd)return;ni.current=M.lastRunEnd,Ce((0,k.jsxs)(b,{flexDirection:"column",children:[(0,k.jsx)(Rf,{status:Re.status,steps:Re.stepsTotal,duration:Re.duration,creditsConsumed:Re.creditsConsumed,reason:Re.reason}),(0,k.jsx)(Tf,{})]})),me(null)}},[Re,M.isRunning,M.lastRunEnd,Ce]);let $s=(0,T.useRef)(null);(0,T.useEffect)(()=>{if(Ae.runSummary&&!Ae.running){if($s.current===Ae.runSummary)return;$s.current=Ae.runSummary,(Ae.summary||Ae.links)&&Ce((0,k.jsxs)(b,{flexDirection:"column",children:[Ae.summary&&(0,k.jsx)(rc,{data:Ae.summary}),Ae.links&&(0,k.jsx)(Qn,{...Ae.links,autoExit:!1})]}))}},[Ae.runSummary,Ae.running,Ae.summary,Ae.links,Ce]),(0,T.useEffect)(()=>{St.current?.setRunActive(M.isRunning)},[M.isRunning]),(0,T.useEffect)(()=>{if(M.runError&&!M.isRunning){let d=M.runError.trim();c.log("error","RUNNER_ERROR","Runner error occurred",{error:d}),c.escalateRun(c.nextRunIndex()-1),!M.lastRunEnd&&Y.current!==M.runError&&(Y.current=M.runError,Ti(Te.current,M.getEvidenceState(),null));let y=d.split(`
|
|
23
23
|
`).slice(-8).join(`
|
|
24
24
|
`);he({type:"error",text:`Runner error:
|
|
25
|
-
${y}`})}},[M.runError,M.isRunning,M.lastRunEnd,he,c]);let Ln=(0,T.useCallback)(async(d={})=>{let h=Te.current;return h?(c.flushRecorder(),await Oa(h,{saved:!!c.sessionName,local:e,deviceName:I.target?.displayName,deviceModel:I.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:E.project_id??void 0,folder_id:E.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:nc(Ue(Se).testManagerUiUrl,E.project_id,d.testcaseId??c.testcaseId,d.shareId)},cdpBrowserCapture:P.current??void 0,model:E.model,tuiLogPath:rr(c.sessionDir,"tui.log"),log:(y,R,S,C)=>c.log(y,R,S,C)})):null},[c,E]),Bn=(0,T.useCallback)(async d=>{let h=Te.current?.packDir??null,y=await Ln({testcaseId:d?.testcaseId,shareId:d?.shareId});return Te.current=null,dt.current=!1,P.current=null,y?.sealed?h:null},[Ln]),$n=(0,T.useCallback)(async()=>{c.log("info","EXIT_UPLOAD_START","Starting exit upload pipeline"),Oe(Jn()),ut({status:"uploading"});let d=x.getResolvedBasicAuth(),h=null;if(!d&&(h=await x.getToken(),!h))return c.log("warn","EXIT_UPLOAD_ABORTED","Exit upload aborted \u2014 no auth available"),null;let y=Le??await Pt();if(!y)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:E.project_id,session_dir:c.sessionDir,run_dirs:c.getRunDirs()});let R={basicAuth:d??null,token:h,resolver:x.getResolver(),resolvedCreds:y};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 S=fc({mobile:ir,session:c,env:Se,auth:R,variables:Je.current??{raw:{},auteur:{},auteurObjective:"",secretEntries:[],nonSecretEntries:[]},variableIds:le.current,projectId:E.project_id,folderId:E.folder_id,totalSteps:ei.current,totalDuration:ti.current,screenshotExtMap:ce.current?.getExtMap(),codeExport:pc({codeExport:t,codeLanguage:r,skipCodeValidation:n},E.code_export),onProgress:(O,Q,ve)=>{c.log("info","EXIT_PROGRESS","Upload progress",{step:O,status:Q,detail:ve}),Oe(ke=>tc(ke,O,Q,ve))},log:(O,Q,ve,ke)=>c.log(O,Q,ve,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:Ln}:void 0}),N=await new hc(S).execute();if(N.success){c.log("info","EXIT_UPLOAD_OK","Exit upload succeeded",{test_id:N.testId,testcase_id:N.testcaseId??null,share_id:N.shareId??null}),c.setUploadStatus("uploaded"),N.testId&&c.setTestId(N.testId),N.testcaseId&&c.setTestcaseId(N.testcaseId);let O=Ue(Se),Q=E.project_id,ve=N.testcaseId&&N.shareId&&Q?Ci(O.testManagerUiUrl,Q,N.testcaseId,N.shareId):void 0,ke=N.testcaseId&&Q?Ei(O.testManagerUiUrl,Q,N.testcaseId):void 0;ut({status:"success",testUrl:ve,testCaseLink:ke,codeExportDir:N.codeExportDir}),wf({shareableLink:ve,testCaseLink:ke,codeExportDir:N.codeExportDir})}else c.log("error","EXIT_UPLOAD_FAILED","Exit upload failed",{error:N.error}),c.setUploadStatus("failed",N.error),ut({status:"failed",error:N.error});return N},[x,Se,c,E,Le,Pt,Ln]),On=(0,T.useCallback)(async()=>{c.log("info","SESSION_RESET_START","Starting session reset via /new"),Er(!0);let d=c.getFlows();d.length>0&&Ce((0,k.jsx)(fs,{flows:d}));let h=null;if(!e)try{h=await $n()??null}catch(C){c.log("error","SESSION_RESET_UPLOAD_FAILED","Upload failed during /new",{error:String(C)}),he({type:"error",text:"Upload failed \u2014 session data saved locally."})}let y=null;try{let{persistRecordedSession:C}=await import("./persist-recorded-session-KWPH37HI.js");y=await C(c,{testcaseId:c.testcaseId??void 0,projectId:E.project_id??void 0,folderId:E.folder_id??void 0,codeExportDir:h?.codeExportDir,mobile:ir,packTestDir:Te.current?.packTestDir})}catch(C){c.log("error","SESSION_RESET_PERSIST_FAILED","Persist failed during /new",{error:String(C)})}{let{syncPersistedBundle:C}=await import("./testmd-sync-UYVJ47BN.js");await C({recordedTestPath:y?.recordedTestPath,uploadSucceeded:!!h?.success,local:e,sessionId:c.sessionId,basicAuth:x.getResolvedBasicAuth(),controllerBaseUrl:Ue(x.creds.getDefaultEnv()).controllerBaseUrl,log:(N,O,Q,ve)=>c.log(N,O,Q,ve)})}if(h?.success&&h.testcaseId||y){let C=Ue(Se),N=E.project_id,O=h?.testcaseId;Ce((0,k.jsx)(Qn,{recordedTestPath:y?.recordedTestPath,outputDir:y?.outputDir,shareableLink:O&&h?.shareId&&N?Ci(C.testManagerUiUrl,N,O,h.shareId):void 0,testCaseLink:O&&N?Ei(C.testManagerUiUrl,N,O):void 0,codeExportDir:h?.codeExportDir,autoExit:!1}))}let R=await Bn(h);R&&he({type:"info",text:Ma(R)}),c.testId&&Yt(C=>[...C,{testId:c.testId,runCount:te}]),await M.shutdownRunner(),In.killChrome(),await c.finish("complete");let S=new Kn;S.start({model:E.model,environment:Se,profile:Lr??null}),w.current=S,v(C=>C+1),c.log("info","SESSION_RESET_COMPLETE","Session reset complete",{new_session_id:S.sessionId});try{await Ut({kind:"resessionize",env:Se},kt)}catch(C){c.log("error","SESSION_RESET_IDENTITY_FAILED","Identity re-attach failed during /new",{error:String(C)})}re(0),ei.current=0,ti.current=0,de.current=0,ee.current="",Je.current=null,le.current={},Mn.current=0,ii.current=0,ri.current=null,ni.current=null,Zo.current=null,Y.current=null,X.current=!1,Qo.current=null,Es(null),Ko.current=null,me(null),$(null),ut(null),Oe(Jn()),Er(!1),j("ok","/new","Session reset")},[c,he,Ce,j,e,$n,Bn,In,M,te,E,Se,Lr,kt]),Os=(0,T.useCallback)(async()=>{switch(Bf({hasRuns:c.nextRunIndex()>0,isRunning:M.isRunning,isTesting:E.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":xr("new"),vr(Pi());return;case"proceed":await On();return}},[c,M,he,E.mode,On]),Ns=(0,T.useCallback)(async()=>{await M.shutdownRunner(),await c.finish("complete"),Nr(0,"Session complete")},[c,M]),ip=(0,T.useCallback)(async d=>{Ir(!1);let h=c.testId??(Me.length>0?Me[Me.length-1].testId:null);if(d&&h){c.log("info","EXIT_FEEDBACK_SUBMIT","Submitting session feedback",{choice:d});try{let y=Ue(Se),R=x.getResolvedBasicAuth();R&&await $f({tmsBaseUrl:y.tmsBaseUrl,username:R.username,accessKey:R.access_key,testId:h,feedbackType:d,log:(S,C,N,O)=>c.log(S,C,N,O)})}catch(y){c.log("error","EXIT_FEEDBACK_FAILED","Feedback submission failed",{error:String(y)})}}else c.log("info","EXIT_FEEDBACK_SKIPPED","Feedback skipped");Ns()},[Se,x,c,Ns,Me]),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 $n()??null}catch(C){c.log("error","EXIT_UPLOAD_FAILED","Exit upload failed",{error:String(C)})}c.testId&&Yt(C=>[...C,{testId:c.testId,runCount:te}])}let y=null;try{let{persistRecordedSession:C}=await import("./persist-recorded-session-KWPH37HI.js");y=await C(c,{testcaseId:c.testcaseId??void 0,projectId:E.project_id??void 0,folderId:E.folder_id??void 0,codeExportDir:h?.codeExportDir,mobile:ir,packTestDir:Te.current?.packTestDir}),y&&ue(y)}catch(C){c.log("error","EXIT_PERSIST_FAILED","Persist failed during /exit",{error:String(C)})}{let{syncPersistedBundle:C}=await import("./testmd-sync-UYVJ47BN.js");await C({recordedTestPath:y?.recordedTestPath,uploadSucceeded:!!h?.success,local:e,sessionId:c.sessionId,basicAuth:x.getResolvedBasicAuth(),controllerBaseUrl:Ue(x.creds.getDefaultEnv()).controllerBaseUrl,log:(N,O,Q,ve)=>c.log(N,O,Q,ve)})}let R=await Bn(h);if(R&&process.stdout.isTTY&&(pe(!0),await new Promise(C=>br({packPath:R,resolve:C})),br(null)),d&&!e&&await c.finish("complete"),!(c.testId??(Me.length>0?Me[Me.length-1].testId:null))||e){await c.finish("complete"),Nr(0,"No test ID \u2014 quick exit");return}pe(!0),Ir(!0)},[c,e,$n,Bn,te,Me,E]),cr=(0,T.useCallback)(async()=>{if(K)return;c.log("info","EXIT_START","TUI exit initiated");let d=E.mode==="testing",h=c.nextRunIndex()>0;if(d&&h&&!c.sessionName){xr("exit"),vr(Pi());return}await Nn()},[K,c,E.mode,Nn]),sp=(0,T.useCallback)(d=>{d&&c.setSessionName(d);let h=Ar;vr(null),xr(null),h==="new"?On():Nn()},[c,Ar,Nn,On]);(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"),Nr(0,"Upload timed out after 5m")},d);return()=>clearTimeout(h)},[K,c]);let Mn=T.default.useRef(0),oi=T.default.useRef(null),ii=T.default.useRef(0),si=T.default.useRef(0),ai=T.default.useRef(null);Be((d,h)=>{if(h.ctrl&&d==="c"){if(Ne==="generate"&&(ye.isStreaming||Dt.submitting)){Dt.cancelGenerate(),si.current++,ai.current&&clearTimeout(ai.current),ai.current=setTimeout(()=>{si.current=0},2e3),si.current>=2&&cr();return}if(!Ae.running){if(K){ii.current+=1,ii.current>=2&&(c.setUploadStatus("pending","Force exit by user"),c.finish("complete"),Nr(0,"Force exit by user"));return}if(M.isRunning){M.cancelRun(),he({type:"info",text:"Run cancelled."}),Mn.current++,oi.current&&clearTimeout(oi.current),oi.current=setTimeout(()=>{Mn.current=0},2e3),Mn.current>=2&&cr();return}cr()}}}),Be((d,h)=>{if(h.ctrl&&d==="t"&&Ne==="generate"&&!ye.isStreaming){Pn("no thinking yet");return}});let Ms=T.default.useMemo(()=>{let d=x.creds.getActiveProfile()??"none",h=x.creds.getDefaultEnv(),y={runOptions:{headless:Pe.headless,cdpEndpoint:Pe.cdpEndpoint,wsEndpoint:Pe.wsEndpoint},patchRunOptions:S=>Wo(C=>({...C,...S})),deviceLabel:I.target?.displayName??null,appLabel:I.device?.app_package??null,openDevicePicker:()=>{if(ft){j("error","/config device",Pr(ft));return}yr(null),I.begin("reinit")},openAppPicker:()=>{if(ft){j("error","/config app",Pr(ft));return}if(yr(null),I.target){I.requestApp();return}I.begin("reinit")}},R={tuiConfig:E,setMobile:S=>{m.setMobile(S),Ee(m.load())},setConfigKey:(S,C)=>{m.set(S,C),Ee(m.load())},emitFeedback:j,onChromeProfilePicker:()=>{},onWindowSizePicker:()=>{},windowSizeLabel:`${E.window_size.width}x${E.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:S=>{let C=parseInt(S,10);C>0&&Wo(N=>({...N,maxSteps:C}))}},{id:"run-timeout",label:"Timeout (sec)",type:"text-input",currentValue:Pe.timeout?String(Pe.timeout):"",placeholder:"0 = no timeout",onValue:S=>{let C=parseInt(S,10);Wo(N=>({...N,timeout:isNaN(C)?0:C}))}},{id:"run-config-desktop",label:"Desktop",type:"submenu",children:_f(y)},...Rr()?[{id:"run-config-mobile",label:"Mobile",type:"submenu",children:Pf(y)}]:[]]}]},{id:"auth",label:"Auth",type:"submenu",children:[{id:"login",label:"Login",type:"action",onLoginWizard:()=>{}},{id:"logout",label:"Logout",type:"action",onAction:()=>{x.logout().then(S=>{vt();let C=x.creds.getActiveProfile(),N=x.creds.getDefaultEnv();_t(C,N);let O=Af(C,N);Ut(O,kt).catch(()=>{}),S?j("ok","/logout",`Logged out: ${S.profile} [${S.env}]`):j("ok","/logout","No active profile")}).catch(()=>{j("error","/logout","Logout failed")})}},{id:"whoami",label:"Who Am I",type:"action",onInfo:()=>{let S=x.creds.getActiveProfile()??"none",C=x.creds.getDefaultEnv(),N=x.creds.loadBasicAuth(S,C),O=N?"basic":x.creds.loadCredentials(S,C)?"oauth":"not configured";return{title:"Who Am I",sections:[{label:"Identity",entries:[{key:"Profile",value:S},{key:"Environment",value:C}]},{label:"Authentication",entries:[{key:"Method",value:O},...N?[{key:"Username",value:N.username}]:[]]},{label:"Token",entries:[{key:"Status",value:x.tokenValid?"valid":"not logged in",color:x.tokenValid?l.green:l.red}]}]}}},{id:"balance",label:"Credit Balance",type:"action",suppressFeedback:!0,onAction:()=>{(async()=>{let S=x.creds.getActiveProfile()??"default",C=x.creds.getDefaultEnv(),N=Ue(C);try{let O=x.getBasicAuth(),Q=O?null:await x.getToken();if(!O&&!Q){Ge({text:"Not authenticated. Run /login first.",color:l.red});return}let{ControllerClient:ve}=await import("./controller-client-ZF5IXRUV.js"),Qe=await(O?new ve(N.controllerBaseUrl,{username:O.username,accessKey:O.access_key}):new ve(N.controllerBaseUrl,Q)).getCreditBalance();Ge({text:`Credits \u2014 available: ${Qe.available_credits}, total: ${Qe.total_credits} (${S} / ${C})`,color:l.green})}catch(O){Ge({text:`Balance check failed: ${O instanceof Error?O.message:String(O)}`,color:l.red})}st.current&&clearTimeout(st.current),st.current=setTimeout(()=>{Ge(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:E.mode},{key:"Assertion Mode",value:E.assertion_mode},{key:"WebSocket Capture",value:E.network_ws?"on":"off"},{key:"SSE Capture",value:E.network_sse?"on":"off"},{key:"Bug Detection",value:E.bug_detection},{key:"Final Validation",value:E.final_validation?"on":"off"},{key:"Hints",value:E.hints_enabled===!1?"off":"on"}]},{label:"Browser",entries:[{key:"Window",value:`${E.window_size.width}x${E.window_size.height}`},{key:"Chrome Profile",value:E.chrome_profile_path?E.chrome_profile_path.split("/").pop()??E.chrome_profile_path:"(temporary)"}]},{label:"Project",entries:[{key:"Project",value:E.project_name?`${E.project_name} (${E.project_id})`:E.project_id??"(none)"},{key:"Folder",value:E.folder_name?`${E.folder_name} (${E.folder_id})`:E.folder_id??"(none)"},{key:"Default URL",value:E.default_url??di}]},{label:"Code Export",entries:[{key:"Enabled",value:E.code_export.enabled?"yes":"no"},{key:"Language",value:E.code_export.language},{key:"Skip Validation",value:E.code_export.skip_validation?"yes":"no"}]},Lf(E.mobile)]})},{id:"config-project",label:"Project",type:"action",onProjectPicker:()=>{}},{id:"config-folder",label:"Folder",type:"action",...E.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:Df(R)},...Ss(R).length>0?[{id:"config-mobile",label:"Mobile",type:"submenu",children:Ss(R)}]:[],{id:"config-run",label:"Run",type:"submenu",children:[{id:"config-mode",label:"Mode",type:"select",currentValue:E.mode,options:[{label:"testing",value:"testing"},{label:"action",value:"action"}],onValue:S=>{(S==="action"||S==="testing")&&(m.set("mode",S),Ee(m.load()),j("ok","/config set-mode",S))}},{id:"config-assertion-mode",label:"Assertion Mode",type:"select",currentValue:E.assertion_mode,options:[{label:"visual \u2014 vision model (default)",value:"visual"},{label:"dom \u2014 DOM extraction & assertions preferred",value:"dom"}],onValue:S=>{(S==="visual"||S==="dom")&&(m.set("assertion_mode",S),Ee(m.load()),j("ok","/config set-assertion-mode",S))}},{id:"config-final-validation",label:"Final Validation",type:"select",currentValue:E.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:S=>{(S==="on"||S==="off")&&(m.set("final_validation",S==="on"),Ee(m.load()),j("ok","/config set-final-validation",S))}},{id:"config-bug-detection",label:"Bug Detection",type:"select",currentValue:E.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:S=>{(S==="off"||S==="stop"||S==="continue")&&(m.set("bug_detection",S),Ee(m.load()),j("ok","/config set-bug-detection",S))}}]},{id:"config-hints",label:"CLI Hints",type:"select",currentValue:E.hints_enabled===!1?"off":"on",options:[{label:"on",value:"on"},{label:"off",value:"off"}],onValue:S=>{let C=S==="on";m.set("hints_enabled",C),Ee(m.load()),j("ok","/config hints",`CLI hints ${C?"enabled":"disabled"}`)}},{id:"config-generate",label:"Generate",type:"submenu",currentValue:`${E.generate.scenario_limit}x${E.generate.per_scenario_limit}`,children:[{id:"config-generate-scenario-limit",label:"Scenario limit",type:"text-input",currentValue:String(E.generate.scenario_limit),placeholder:"5",onValue:S=>{let C=parseInt(S,10);if(!Number.isFinite(C)||C<1||C>20){j("error","/config",`Scenario limit must be 1-20 (got ${S})`);return}m.set("generate",{...E.generate,scenario_limit:C}),Ee(m.load()),j("ok","/config",`Scenario limit: ${C}`)}},{id:"config-generate-per-scenario-limit",label:"Per-scenario limit",type:"text-input",currentValue:String(E.generate.per_scenario_limit),placeholder:"4",onValue:S=>{let C=parseInt(S,10);if(!Number.isFinite(C)||C<1||C>20){j("error","/config",`Per-scenario limit must be 1-20 (got ${S})`);return}m.set("generate",{...E.generate,per_scenario_limit:C}),Ee(m.load()),j("ok","/config",`Per-scenario limit: ${C}`)}},{id:"config-generate-memory",label:"Memory",type:"select",currentValue:E.generate.memory_enabled?"on":"off",options:[{label:"on",value:"on"},{label:"off",value:"off"}],onValue:S=>{let C=S==="on";m.set("generate",{...E.generate,memory_enabled:C}),Ee(m.load()),j("ok","/config",`Memory: ${C?"on":"off"}`)}}]},{id:"config-code-export",label:"Code Export",type:"submenu",currentValue:E.code_export.enabled?"enabled":"disabled",children:[{id:"config-code-export-enabled",label:"Enabled",type:"select",currentValue:E.code_export.enabled?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:S=>{m.set("code_export",{...E.code_export,enabled:S==="on"}),Ee(m.load()),j("ok","/config code-export enabled",S)}},{id:"config-code-export-language",label:"Language",type:"select",currentValue:E.code_export.language,options:[{label:"python",value:"python"},{label:"javascript (web only)",value:"javascript"}],onValue:S=>{S!=="python"&&S!=="javascript"||(m.set("code_export",{...E.code_export,language:S}),Ee(m.load()),j("ok","/config code-export language",S))}},{id:"config-code-export-skip-validation",label:"Skip Validation",type:"select",currentValue:E.code_export.skip_validation?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:S=>{m.set("code_export",{...E.code_export,skip_validation:S==="on"}),Ee(m.load()),j("ok","/config code-export skip-validation",S)}}]}]},{id:"exit",label:"Exit",type:"action",onAction:()=>{cr()}}]},[x,m,E,he,cr,Pe,vt,j,ft,Pr,I.target,I.device,I.begin,I.requestApp]),ci=(0,T.useCallback)(d=>{if(M.askingUser){let y=M.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:y})})]}),(0,k.jsxs)(b,{marginTop:1,children:[(0,k.jsx)(b,{width:3,children:(0,k.jsx)(a,{color:l.dim,bold:!0,children:"\u2192"})}),(0,k.jsx)(b,{flexShrink:1,children:(0,k.jsx)(a,{wrap:"wrap",children:d})})]})]})]})),ri.current=null,M.sendAnswer(d);return}if(c.logCommand(d),M.isRunning){he({type:"error",text:"Run in progress. Ctrl+C to cancel."});return}let h=To(d);if(h){if(!pd(h.command,Ne)){j("error",`/${h.command}`,`/${h.command} isn't available in ${Ne==="run"?"Run":"Generate"} mode.`);return}switch(h.command){case"profiles":if(Ne==="generate"&&ye.requestId&&h.args.action==="switch"){Qr({reason:"profile",pendingArgs:h.args});return}yr("auth");return;case"login":case"logout":case"whoami":case"balance":case"auth":yr("auth");return;case"config":if(h.args.action==="set-url"){let y=Yn(h.args.value);if(!y){j("error","/config set-url","Usage: /config set-url <url>");return}m.set("default_url",y),Ee(m.load()),j("ok","/config set-url",y);return}yr("config");return;case"mobile":{let y=zn();if(!y.supported){j("error","/mobile",y.reason);return}if(ft){j("error","/mobile",Pr(ft));return}I.begin("confirm");return}case"desktop":{if(ft){ft.kind==="web"?j("ok","/web","Session is already on Desktop."):j("error","/web",Pr(ft));return}m.setMobile({tui_target:"desktop",default_target:void 0,default_app:void 0}),Ee(m.load()),I.reset(),j("ok","/web","Session target: web (Chrome)");return}case"doctor":{(async()=>{he({type:"info",text:"Running mobile toolchain checks\u2026"});let{runDoctor:y,renderDoctorText:R,doctorExitCode:S}=await import("./doctor-WRPG56HH.js"),C=await y();he({type:"info",text:R(C)}),S(C)!==0&&he({type:"info",text:"Install the managed tooling with /mobile (interactive) or `kane-cli doctor --target <emulator|simulator> --install`."})})();return}case"help":Ts(!0);return;case"testmd":if(M.isRunning||ye.isStreaming||Ae.running){j("error","/testmd","Finish or cancel the current run/generation first.");return}Ae.clearResult(),Cn(!0);return;case"generate":if(Ae.running){j("error","/generate","Finish or cancel the running test first.");return}Ne==="run"?Dt.requestSwitch("generate")&&j("ok","/generate","Switched to Generate mode.",void 0,l.generateAccent):j("ok","/generate","Already in Generate mode.",void 0,l.generateAccent);return;case"run":{let y=hd(Ne,h.args.objective);switch(y.kind){case"run":Sr(y.objective,h.args.url);return;case"reject":j("error","/run",'Switch to Run mode first (bare /run), then /run "objective".');return;case"already":j("ok","/run","Already in Run mode.",void 0,l.orange);return;case"toggle":Dt.requestSwitch("run")&&j("ok","/run","Switched to Run mode.",void 0,l.orange);return}return}case"update":{(async()=>{let{getUpdateCommand:y}=await import("./version-check-Z774UWW3.js");j("ok","/update",`To update kane-cli, run: ${y()}`)})();return}case"summary":{if(Ne==="generate"&&!ye.requestId){Pn("no generation yet"),j("ok","/summary","(no generation yet)");return}let y=c.getFlows();if(y.length===0){j("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)){j("error","/summary",`No flow at index ${R}`,`${y.length} flow${y.length===1?"":"s"} available. Use /summary to see all.`);return}Ce((0,k.jsx)(fs,{flows:y,filterIndex:R})),j("ok","/summary",R!==void 0?`Flow ${R}`:`${y.length} flow${y.length===1?"":"s"}`);return}case"new":Ne==="generate"&&ye.requestId&&(or(),ye.end().catch(y=>{j("error","/new",`Could not end generation cleanly: ${y.message}`)}),ye.reset()),Os();return;case"name":{let y=h.raw.replace(/^\/name\s*/,"").trim();if(!y){j("error","/name","Usage: /name <new-name>");return}(async()=>{let{validateNameOrThrow:R}=await import("./name-validator-5YGJXLZ7.js");try{R(y),c.setSessionName(y),j("ok","/name",`Session name set: ${y}`)}catch(S){j("error","/name",S.message)}})();return}case"cancel":if(Ne==="generate"&&ye.isStreaming){or(),ye.cancel(),j("ok","/cancel","Cancelled");return}if(Ne==="generate"&&!ye.requestId){Pn("no generation yet"),j("ok","/cancel","(no generation yet)");return}if(Ae.running){Ae.cancel(),j("ok","/cancel","Run cancelled");return}M.cancelRun(),j("ok","/cancel","Run cancelled");return;case"clear":j("ok","/clear","Chat cleared");return;case"exit":Ne==="generate"&&ye.requestId&&(or(),ye.end()),cr();return;default:j("error",`/${h.command}`,"Unknown command");return}}if(d.trim().toLowerCase()==="exit"){cr();return}Ce((0,k.jsx)(Vu,{objective:d})),Sr(d,void 0)},[M,he,j,Ce,c,Sr,cr,Os,Ne,ye.isStreaming,ye.requestId,ye,Pn,or,Ae,E,s,ft,Pr]);Ls.current=ci;let js=(0,T.useRef)(!1);(0,T.useEffect)(()=>{if(!js.current&&B&&u==="generate"&&f){js.current=!0;let d=setTimeout(()=>{tp(f)},50);return()=>clearTimeout(d)}},[B,u,f]);let Vs=x.getAuthInfo(),ap=Vs?Vs.method==="basic"?"basic auth":"oauth":"not logged in",cp=(()=>{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"?kn?["auth",d[kn]]:["auth"]:Mt==="config"?kn?["config",d[kn]]:["config"]:Mt==="help"?["help"]:M.askingUser?["agent question"]:[]})();return(0,k.jsxs)(b,{flexDirection:"column",children:[!B&&!ws&&(0,k.jsx)(Mu,{onComplete:()=>{let d=x.creds.getActiveProfile(),h=x.creds.getDefaultEnv(),y=d?x.creds.loadCredentials(d,h):null,R=d?x.creds.loadBasicAuth(d,h):null,S=!!(y||R),C=R?.username??d??null;Ce((0,k.jsx)(xo,{size:"full",helmetVisibleRows:8,textVisibleRows:7,showMeta:!0,version:xt,authenticated:S,user:C})),jf(!0);let N=(O,Q,ve,ke)=>{c.log(O,Q,ve,ke)};if(Ha(x.creds,N).then(O=>{if(O.status==="authenticated"){let{profile:Q,env:ve,tmsCreds:ke}=O.result;x.creds.setActiveProfile(Q),x.creds.setDefaultEnv(ve),vt(),Kt(ke),Nt("ready"),F(!0)}else O.status==="needs_pick"?(Nf(O.profiles),Nt("pick")):Nt("login")}).catch(O=>{c.log("error","STARTUP_GATE_ERROR","Auth gate failed",{error:String(O)}),Nt("login")}),o&&o.then(async O=>{if(O){let{getUpdateCommand:Q}=await import("./version-check-Z774UWW3.js");j("ok","update available",`${O.current} \u2192 ${O.latest}`,`Run: ${Q()}`)}}).catch(()=>{}),i&&i.changes.length>0){let O=`kane-cli updated to ${i.toVersion}. Default settings changed:`,Q=[...i.changes.map(ve=>`\u2022 ${ve.description} (${ve.field}: ${JSON.stringify(ve.from)} \u2192 ${JSON.stringify(ve.to)})`),"","Use /config to review or revert any of these."].join(`
|
|
26
|
-
`);j("ok","defaults updated",O,Q)}}}),!B&&nr==="booting"&&ws&&(0,k.jsx)(b,{paddingX:1,children:(0,k.jsx)(a,{color:"yellow",children:"Checking authentication..."})}),!B&&nr==="pick"&&(0,k.jsx)(Sv,{profiles:Of,onCancel:()=>Nt("login"),onSelect:async(d,h)=>{x.creds.setActiveProfile(d),x.creds.setDefaultEnv(h),vt(),Ho(!0);let y=(R,S,C,N)=>{c.log(R,S,C,N)};try{let R=await qa(x.creds,d,h,y);Ho(!1),R.status==="authenticated"?(_t(d,h),Kt(R.result.tmsCreds),Nt("ready"),F(!0)):Nt("login")}catch{Ho(!1),Nt("login")}},validating:Mf}),!B&&nr==="login"&&!V&&(0,k.jsx)(Gn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:x.creds.listProfiles(),onBasicLogin:async(d,h,y,R)=>{let{validateBasicAuth:S}=await import("./validate-basic-RCBEELSB.js");await S(h,y,R),x.creds.saveBasicAuth(d,h,{username:y,access_key:R}),x.creds.setActiveProfile(d),x.creds.setDefaultEnv(h),Ct(x.creds,m,d,h),x.setTokenValid(!0),vt()},onOAuthLogin:async(d,h)=>{x.creds.setDefaultEnv(h),await x.login(d),Ct(x.creds,m,d,h),vt()},onComplete:(d,h)=>{Ut(qo(h),kt).then(()=>{vt(),je({phase:"project",profile:d,env:h})}).catch(()=>{je({phase:"project",profile:d,env:h})})},onCancel:()=>{Nr(0,"Login cancelled at startup")}}),!B&&nr==="login"&&V?.phase==="project"&&(0,k.jsx)(Mr,{resolver:x.getResolver(),currentProjectId:null,env:V.env,onSelect:(d,h)=>{x.creds.saveProfileConfig(V.profile,V.env,{project_id:d,project_name:h}),j("ok","/config project",h,`id: ${d}`),je({...V,phase:"folder"})},onCancel:async()=>{let d=await Yo(V.profile,V.env);d&&($t(x.creds,m,V.profile,V.env,{projectId:d.id,projectName:d.name}),j("ok","/config project",d.name,`id: ${d.id}`),je({...V,phase:"folder"}))}}),!B&&nr==="login"&&V?.phase==="folder"&&(0,k.jsx)(jr,{resolver:x.getResolver(),projectId:x.creds.loadProfileConfig(V.profile,V.env)?.project_id??"",currentFolderId:null,env:V.env,onSelect:(d,h)=>{x.creds.saveProfileConfig(V.profile,V.env,{folder_id:d,folder_name:h}),j("ok","/config folder",h,`id: ${d}`),_t(V.profile,V.env),je(null),Nt("ready"),F(!0)},onCancel:async()=>{let d=x.creds.loadProfileConfig(V.profile,V.env);if(!d?.project_id)return;let h=await Jo(V.env,d.project_id);h&&($t(x.creds,m,V.profile,V.env,{folderId:h.id,folderName:h.name}),j("ok","/config folder",h.name,`id: ${h.id}`),_t(V.profile,V.env),je(null),Nt("ready"),F(!0))}}),B&&Tn==="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:E.model}),(0,k.jsx)(a,{color:l.dim,children:" \u2502 "}),(0,k.jsx)(a,{color:l.dim,children:ap}),(0,k.jsx)(a,{color:l.dim,children:" \u2502 "}),(0,k.jsxs)(a,{color:l.dim,children:[Lr??"no profile","/",Se]})]})}),B&&!K&&(0,k.jsxs)(b,{flexDirection:"column",flexGrow:1,children:[Tn==="menu"&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(ss,{items:Ms,onRunSelected:()=>Vf("chat"),onActiveViewChange:Rs,renderLoginWizard:d=>{let h=V?.phase??"wizard";if(h==="project")return(0,k.jsx)(Mr,{resolver:x.getResolver(),currentProjectId:null,env:V.env,onSelect:(y,R)=>{x.creds.saveProfileConfig(V.profile,V.env,{project_id:y,project_name:R}),j("ok","/config project",R,`id: ${y}`),je(S=>S?{...S,phase:"folder"}:null)},onCancel:async()=>{if(!V)return;let y=await Yo(V.profile,V.env);y&&($t(x.creds,m,V.profile,V.env,{projectId:y.id,projectName:y.name}),j("ok","/config project",y.name,`id: ${y.id}`),je(R=>R?{...R,phase:"folder"}:null))}});if(h==="folder"){let y=x.creds.loadProfileConfig(V.profile,V.env);return(0,k.jsx)(jr,{resolver:x.getResolver(),projectId:y?.project_id??"",currentFolderId:null,env:V.env,onSelect:(R,S)=>{x.creds.saveProfileConfig(V.profile,V.env,{folder_id:R,folder_name:S}),j("ok","/config folder",S,`id: ${R}`),_t(V.profile,V.env),je(null),d()},onCancel:async()=>{if(!V)return;let R=x.creds.loadProfileConfig(V.profile,V.env);if(!R?.project_id)return;let S=await Jo(V.env,R.project_id);S&&($t(x.creds,m,V.profile,V.env,{folderId:S.id,folderName:S.name}),j("ok","/config folder",S.name,`id: ${S.id}`),_t(V.profile,V.env),je(null),d())}})}return(0,k.jsx)(Gn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:x.creds.listProfiles(),onBasicLogin:async(y,R,S,C)=>{let{validateBasicAuth:N}=await import("./validate-basic-RCBEELSB.js");await N(R,S,C),x.creds.saveBasicAuth(y,R,{username:S,access_key:C}),x.creds.setActiveProfile(y),x.creds.setDefaultEnv(R),Ct(x.creds,m,y,R),x.setTokenValid(!0),vt()},onOAuthLogin:async(y,R)=>{x.creds.setDefaultEnv(R),await x.login(y),Ct(x.creds,m,y,R),vt()},onComplete:(y,R)=>{Ut(qo(R),kt).then(()=>{je({phase:"project",profile:y,env:R})}).catch(()=>{je({phase:"project",profile:y,env:R})})},onCancel:()=>{je(null),d()}})},renderProfilesView:d=>(0,k.jsx)(vi,{creds:x.creds,onSwitch:(h,y)=>{let R=x.creds.getActiveProfile()??"(none)";x.creds.setActiveProfile(h),x.creds.setDefaultEnv(y),Ct(x.creds,m,h,y),_t(h,y),vt(),Ut(xs(y),kt).catch(()=>{}),j("ok","/profiles switch",`${R} \u2192 ${h} [${y}]`)},onCancel:d}),renderChromeProfilePicker:d=>(0,k.jsx)(xi,{currentPath:E.chrome_profile_path,onSelect:h=>{m.set("chrome_profile_path",h),Ee(m.load()),j("ok","/config chrome-profile",h),d()},onCancel:d}),renderProjectPicker:d=>(0,k.jsx)(Mr,{resolver:x.getResolver(),currentProjectId:E.project_id,env:Se,onSelect:(h,y)=>{$t(x.creds,m,x.creds.getActiveProfile()??"default",x.creds.getDefaultEnv(),{projectId:h,projectName:y}),j("ok","/config project",y,`id: ${h}`),Ee(m.load()),d()},onCancel:d}),renderFolderPicker:d=>(0,k.jsx)(jr,{resolver:x.getResolver(),projectId:E.project_id??"",currentFolderId:E.folder_id,env:Se,onSelect:(h,y)=>{$t(x.creds,m,x.creds.getActiveProfile()??"default",x.creds.getDefaultEnv(),{folderId:h,folderName:y}),j("ok","/config folder",y,`id: ${h}`),Ee(m.load()),d()},onCancel:d}),renderWindowSizePicker:d=>(0,k.jsx)(ds,{currentWidth:E.window_size.width,currentHeight:E.window_size.height,onSelect:(h,y)=>{m.set("window_size",{width:h,height:y}),Ee(m.load()),j("ok","/config set-window",`${h} \xD7 ${y}`),d()},onCancel:d})}),$e&&(0,k.jsx)(b,{paddingX:1,marginTop:1,children:(0,k.jsx)(a,{color:$e.color,children:$e.text})})]}),Tn==="chat"&&(0,k.jsxs)(k.Fragment,{children:[zt&&!M.isRunning&&(0,k.jsx)(bi,{label:zt.replace(/[.…\s]+$/,"")}),(()=>{let d=Ks({isRunning:M.isRunning,bifurcationInfo:M.bifurcationInfo,steps:M.steps,cmInitCounts:M.cmInitCounts,replayInfo:M.replayInfo});return d?(0,k.jsx)(bi,{label:d.label,hasBifurcation:d.hasBifurcation}):null})(),M.isRunning&&M.steps.length>0&&(0,k.jsx)(zs,{steps:M.steps,bifurcated:!!M.bifurcationInfo&&!M.bifurcationInfo.isSingleFlow,flows:M.bifurcationInfo?.flows,cmInitCounts:M.cmInitCounts,onStepCommit:Ce,describe:Zr.text,describeVisible:Zr.visible,describeRevealing:Zr.revealing},`run-${de.current}`),Ae.runViewProps&&(0,k.jsx)(ec,{...Ae.runViewProps,onCancel:()=>{Ae.runViewProps?.onCancel?.(),Ae.cancel()}}),Yr&&(0,k.jsx)(xd,{onClose:()=>Ts(!1),version:xt,environment:x.creds.getDefaultEnv(),sessionId:c.sessionId,runUrl:E.default_url??di,mode:Ne}),Jr&&(0,k.jsx)(wd,{cwd:process.cwd(),currentOrgId:String(Le?.org_id??""),onClose:()=>Cn(!1),onRun:d=>{if(M.isRunning||ye.isStreaming||Ae.running){setTimeout(()=>j("error","/testmd","Finish or cancel the current run first."),0);return}Cn(!1),!(Ne==="generate"&&!Dt.requestSwitch("run"))&&(Ne==="generate"&&setTimeout(()=>j("ok","/testmd",`Switched to Run mode to run ${d.relPath}`,void 0,l.orange),0),Ae.start(d.path).catch(h=>setTimeout(()=>j("error","/testmd",`Run failed: ${h.message}`),0)))},onExport:d=>{Cn(!1),vc(d.path,{language:E.code_export.language??"python",env:Se}).then(h=>setTimeout(()=>j("ok","/testmd",`Exported code \u2192 ${h.codeDir}`),0)).catch(h=>setTimeout(()=>j("error","/testmd",`Export failed: ${h.message}`),0))}}),Mt&&!M.isRunning&&(()=>{let d=Ms.find(h=>h.id===Mt);return d?.children?(0,k.jsx)(ss,{items:d.children,onRunSelected:()=>yr(null),onDismiss:()=>yr(null),onActiveViewChange:Rs,renderLoginWizard:h=>{let y=V?.phase??"wizard";if(y==="project")return(0,k.jsx)(Mr,{resolver:x.getResolver(),currentProjectId:null,env:V.env,onSelect:(R,S)=>{x.creds.saveProfileConfig(V.profile,V.env,{project_id:R,project_name:S}),j("ok","/config project",S,`id: ${R}`),je(C=>C?{...C,phase:"folder"}:null)},onCancel:async()=>{if(!V)return;let R=await Yo(V.profile,V.env);R&&($t(x.creds,m,V.profile,V.env,{projectId:R.id,projectName:R.name}),j("ok","/config project",R.name,`id: ${R.id}`),je(S=>S?{...S,phase:"folder"}:null))}});if(y==="folder"){let R=x.creds.loadProfileConfig(V.profile,V.env);return(0,k.jsx)(jr,{resolver:x.getResolver(),projectId:R?.project_id??"",currentFolderId:null,env:V.env,onSelect:(S,C)=>{x.creds.saveProfileConfig(V.profile,V.env,{folder_id:S,folder_name:C}),j("ok","/config folder",C,`id: ${S}`),_t(V.profile,V.env),je(null),h()},onCancel:async()=>{if(!V)return;let S=x.creds.loadProfileConfig(V.profile,V.env);if(!S?.project_id)return;let C=await Jo(V.env,S.project_id);C&&($t(x.creds,m,V.profile,V.env,{folderId:C.id,folderName:C.name}),j("ok","/config folder",C.name,`id: ${C.id}`),_t(V.profile,V.env),je(null),h())}})}return(0,k.jsx)(Gn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:x.creds.listProfiles(),onBasicLogin:async(R,S,C,N)=>{let{validateBasicAuth:O}=await import("./validate-basic-RCBEELSB.js");await O(S,C,N),x.creds.saveBasicAuth(R,S,{username:C,access_key:N}),x.creds.setActiveProfile(R),x.creds.setDefaultEnv(S),Ct(x.creds,m,R,S),x.setTokenValid(!0),vt()},onOAuthLogin:async(R,S)=>{x.creds.setDefaultEnv(S),await x.login(R),Ct(x.creds,m,R,S),vt()},onComplete:(R,S)=>{Ut(qo(S),kt).then(()=>{je({phase:"project",profile:R,env:S})}).catch(()=>{je({phase:"project",profile:R,env:S})})},onCancel:()=>{je(null),h()}})},renderProfilesView:h=>(0,k.jsx)(vi,{creds:x.creds,onSwitch:(y,R)=>{let S=x.creds.getActiveProfile()??"(none)";x.creds.setActiveProfile(y),x.creds.setDefaultEnv(R),Ct(x.creds,m,y,R),_t(y,R),vt(),Ut(xs(R),kt).catch(()=>{}),j("ok","/profiles switch",`${S} \u2192 ${y} [${R}]`),h()},onCancel:h}),renderChromeProfilePicker:h=>(0,k.jsx)(xi,{currentPath:E.chrome_profile_path,onSelect:y=>{m.save({chrome_profile_path:y}),Ee(m.load()),j("ok","/config chrome-profile",y),h()},onCancel:h}),renderProjectPicker:h=>(0,k.jsx)(Mr,{resolver:x.getResolver(),currentProjectId:E.project_id,env:Se,onSelect:(y,R)=>{$t(x.creds,m,x.creds.getActiveProfile()??"default",x.creds.getDefaultEnv(),{projectId:y,projectName:R}),Ee(m.load()),j("ok","/config project",R,`id: ${y}`),h()},onCancel:h}),renderFolderPicker:h=>(0,k.jsx)(jr,{resolver:x.getResolver(),projectId:E.project_id??"",currentFolderId:E.folder_id,env:Se,onSelect:(y,R)=>{$t(x.creds,m,x.creds.getActiveProfile()??"default",x.creds.getDefaultEnv(),{folderId:y,folderName:R}),Ee(m.load()),j("ok","/config folder",R,`id: ${y}`),h()},onCancel:h}),renderWindowSizePicker:h=>(0,k.jsx)(ds,{currentWidth:E.window_size.width,currentHeight:E.window_size.height,onSelect:(y,R)=>{m.set("window_size",{width:y,height:R}),Ee(m.load()),j("ok","/config set-window",`${y} \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})}),Ne==="run"&&!Mt&&!Yr&&!Jr&&!Tt&&M.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:M.askingUser})})]})})]}),En&&(()=>{let d=En,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?",y=d.reason==="switch"?"Discard & switch":"Yes, end";return(0,k.jsx)(Sf,{message:h,confirmLabel:y,onConfirm:async()=>{if(d.reason==="switch"){let S=d.to;Qr(null),Dt.confirmSwitch(S);return}or();let R=d.pendingArgs;if(Qr(null),await ye.end(),ye.reset(),R.profile){let S=x.creds.getDefaultEnv(),C=x.creds.getActiveProfile()??"(none)";x.creds.setActiveProfile(R.profile),x.creds.setDefaultEnv(S),Ct(x.creds,m,R.profile,S),_t(R.profile,S),vt(),Ut({kind:"switch",env:S},kt).catch(()=>{}),j("ok","/profiles switch",`${C} \u2192 ${R.profile} [${S}]`)}else ci("/profiles switch")},onCancel:()=>Qr(null)})})(),Cs&&(0,k.jsxs)(b,{flexDirection:"column",paddingX:1,marginTop:1,children:[I.phase==="doctor"?(0,k.jsx)(id,{checks:I.checks,busyMessage:I.busyMessage,onRetry:I.recheck,onInstall:I.install,onCancel:I.cancel}):I.phase==="apps"&&I.kind?(0,k.jsx)(Sa,{kind:I.kind,onSelect:d=>I.selectApp(d),onBack:I.back,onCancel:I.back}):I.phase==="appList"&&I.kind?(0,k.jsx)(ya,{kind:I.kind,busyMessage:I.busyMessage,listApps:Qf,onSelect:d=>{I.selectAppId(d.appId)},onManualEntry:I.requestAppId,onCancel:I.back}):I.phase==="appId"?(0,k.jsx)(za,{busyMessage:I.busyMessage,onSubmit:d=>I.selectAppId(d),onBack:I.back}):I.phase==="chooser"?(0,k.jsx)(Wa,{mode:"mobile-only",onSelect:d=>{(d==="emulator"||d==="simulator")&&I.selectKind(d)},onCancel:I.back}):I.phase==="confirm"&&I.saved?(0,k.jsx)(gd,{saved:I.saved,onContinue:()=>I.confirmSaved(),onChangeDevice:()=>I.begin("reinit"),onChangeApp:()=>I.confirmSaved({keepApp:!1}),onCancel:I.cancel}):I.phase==="appSource"&&I.kind?(0,k.jsx)(Xa,{kind:I.kind,onSelect:d=>d==="uploaded"?I.requestCloudApps():I.requestApp(),onCancel:I.back}):(0,k.jsx)(xa,{targets:I.targets,preselectedTarget:E.mobile?.default_target,busyMessage:I.busyMessage??(I.phase==="checking"?"Checking mobile toolchain\u2026":null),onSelect:d=>{I.selectTarget(d)},onCancel:I.back,...I.kind?{kind:I.kind}:{}}),I.error&&(0,k.jsx)(a,{color:"red",children:I.error})]}),Dr&&(0,k.jsx)(td,{suggested:Dr.suggested,sessionTargetLabel:_r.kind==="unset"||_r.kind==="choose-mobile"?"Desktop":rn(_r.kind),appHint:Dr.verdict.appHint,savedDeviceName:ea(E.mobile?.default_target),onAccept:()=>Dn("accept"),onPickDevice:()=>Dn("pick"),onKeep:()=>Dn("keep"),onCancel:()=>Dn("cancel")}),Ne==="run"&&!Mt&&!Yr&&!Jr&&!Tt&&!En&&!Ae.running&&!Cs&&!Dr&&(0,k.jsx)(ur,{onSubmit:ci,onEscape:void 0,history:Uf,commands:fd(vn(dd),ft),clearSeq:ep,loadMentionItems:ir?Kf:void 0,mentionHint:ir&&!I.target?"No device selected \u2014 run /mobile to choose one.":void 0,placeholder:M.askingUser?"Type your answer...":M.isRunning?"Run in progress... Ctrl+C to cancel":"Type an objective... (/ = commands)",footerBindings:[{keys:"\u2191\u2193",label:"history"},{keys:"\u21B5",label:"submit"},{keys:"tab",label:"complete"},{keys:"ctrl+r",label:"search"},{keys:"/generate",label:"test cases"}]}),Ne==="generate"&&!Mt&&!Yr&&!Jr&&!Tt&&!En&&(0,k.jsx)(xf,{tcg:ye,gm:Dt,history:qf,tuiConfig:E,browse:ar.isOpen?{target:ar.target,onClose:ar.close,excluded:ar.excluded,onToggleCase:ar.toggleCase,onToggleScenario:ar.toggleScenario,getStatus:Dt.bifurcation.getStatus,getResult:Dt.bifurcation.getResult}:null})]})]}),B&&K&&ge&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(ki,{steps:Ot,status:ge.status,testUrl:ge.testUrl,error:ge.error}),ge.status==="success"&&(0,k.jsx)(Qn,{recordedTestPath:Z?.recordedTestPath,outputDir:Z?.outputDir,shareableLink:ge.testUrl,testCaseLink:ge.testCaseLink,codeExportDir:ge.codeExportDir,autoExit:!1})]}),Tt&&(0,k.jsx)(Nc,{defaultName:Tt,onSubmit:sp}),hr&&(0,k.jsx)(ja,{packPath:hr.packPath,viewerBase:Na(Se??"prod"),onDone:()=>hr.resolve()}),Kr&&(0,k.jsx)(Oc,{onSubmit:ip}),gr&&ge&&(0,k.jsx)(ki,{steps:Ot,status:ge.status,error:ge.error}),B&&!K&&(0,k.jsx)($u,{profile:Lr,environment:Se,tokenValid:x.tokenValid,runCount:te,sessionId:c.sessionId,viewMode:Tn,breadcrumb:cp,chatMode:Ne,footerHint:np,tcgRequestId:ye.requestId,tcgStreamStatus:ye.isStreaming?"streaming":ye.isReconnecting?"reconnecting":ye.isTerminal&&ye.state.status.toLowerCase()==="completed"?"completed":ye.isTerminal&&ye.state.status.toLowerCase()==="failed"?"failed":null,sessionTarget:ir?{kind:_r.kind==="simulator"?"simulator":"emulator",...I.target?{deviceName:I.target.displayName}:{},...I.device?.app_package?{appPackage:I.device.app_package}:{}}:{kind:"desktop"},targetLocked:ft!==null})]})}function Sv({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{rd as a,nd as b,ad as c,If as d,$f as e,cE as f};
|
|
25
|
+
${y}`})}},[M.runError,M.isRunning,M.lastRunEnd,he,c]);let Ln=(0,T.useCallback)(async(d={})=>{let h=Te.current;return h?(c.flushRecorder(),await Oa(h,{saved:!!c.sessionName,local:e,deviceName:I.target?.displayName,deviceModel:I.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:E.project_id??void 0,folder_id:E.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:nc(Ue(Se).testManagerUiUrl,E.project_id,d.testcaseId??c.testcaseId,d.shareId)},cdpBrowserCapture:P.current??void 0,model:E.model,tuiLogPath:rr(c.sessionDir,"tui.log"),log:(y,R,S,C)=>c.log(y,R,S,C)})):null},[c,E]),Bn=(0,T.useCallback)(async d=>{let h=Te.current?.packDir??null,y=await Ln({testcaseId:d?.testcaseId,shareId:d?.shareId});return Te.current=null,dt.current=!1,P.current=null,y?.sealed?h:null},[Ln]),$n=(0,T.useCallback)(async()=>{c.log("info","EXIT_UPLOAD_START","Starting exit upload pipeline"),Oe(Jn()),ut({status:"uploading"});let d=x.getResolvedBasicAuth(),h=null;if(!d&&(h=await x.getToken(),!h))return c.log("warn","EXIT_UPLOAD_ABORTED","Exit upload aborted \u2014 no auth available"),null;let y=Le??await Pt();if(!y)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:E.project_id,session_dir:c.sessionDir,run_dirs:c.getRunDirs()});let R={basicAuth:d??null,token:h,resolver:x.getResolver(),resolvedCreds:y};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 S=fc({mobile:ir,session:c,env:Se,auth:R,variables:Je.current??{raw:{},auteur:{},auteurObjective:"",secretEntries:[],nonSecretEntries:[],parameterEntries:[]},variableIds:le.current,projectId:E.project_id,folderId:E.folder_id,totalSteps:ei.current,totalDuration:ti.current,screenshotExtMap:ce.current?.getExtMap(),codeExport:pc({codeExport:t,codeLanguage:r,skipCodeValidation:n},E.code_export),onProgress:(O,Q,ve)=>{c.log("info","EXIT_PROGRESS","Upload progress",{step:O,status:Q,detail:ve}),Oe(ke=>tc(ke,O,Q,ve))},log:(O,Q,ve,ke)=>c.log(O,Q,ve,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:Ln}:void 0}),N=await new hc(S).execute();if(N.success){c.log("info","EXIT_UPLOAD_OK","Exit upload succeeded",{test_id:N.testId,testcase_id:N.testcaseId??null,share_id:N.shareId??null}),c.setUploadStatus("uploaded"),N.testId&&c.setTestId(N.testId),N.testcaseId&&c.setTestcaseId(N.testcaseId);let O=Ue(Se),Q=E.project_id,ve=N.testcaseId&&N.shareId&&Q?Ci(O.testManagerUiUrl,Q,N.testcaseId,N.shareId):void 0,ke=N.testcaseId&&Q?Ei(O.testManagerUiUrl,Q,N.testcaseId):void 0;ut({status:"success",testUrl:ve,testCaseLink:ke,codeExportDir:N.codeExportDir}),wf({shareableLink:ve,testCaseLink:ke,codeExportDir:N.codeExportDir})}else c.log("error","EXIT_UPLOAD_FAILED","Exit upload failed",{error:N.error}),c.setUploadStatus("failed",N.error),ut({status:"failed",error:N.error});return N},[x,Se,c,E,Le,Pt,Ln]),On=(0,T.useCallback)(async()=>{c.log("info","SESSION_RESET_START","Starting session reset via /new"),Er(!0);let d=c.getFlows();d.length>0&&Ce((0,k.jsx)(fs,{flows:d}));let h=null;if(!e)try{h=await $n()??null}catch(C){c.log("error","SESSION_RESET_UPLOAD_FAILED","Upload failed during /new",{error:String(C)}),he({type:"error",text:"Upload failed \u2014 session data saved locally."})}let y=null;try{let{persistRecordedSession:C}=await import("./persist-recorded-session-JXL5E53A.js");y=await C(c,{testcaseId:c.testcaseId??void 0,projectId:E.project_id??void 0,folderId:E.folder_id??void 0,codeExportDir:h?.codeExportDir,mobile:ir,packTestDir:Te.current?.packTestDir})}catch(C){c.log("error","SESSION_RESET_PERSIST_FAILED","Persist failed during /new",{error:String(C)})}{let{syncPersistedBundle:C}=await import("./testmd-sync-HYZI6NRM.js");await C({recordedTestPath:y?.recordedTestPath,uploadSucceeded:!!h?.success,local:e,sessionId:c.sessionId,basicAuth:x.getResolvedBasicAuth(),controllerBaseUrl:Ue(x.creds.getDefaultEnv()).controllerBaseUrl,log:(N,O,Q,ve)=>c.log(N,O,Q,ve)})}if(h?.success&&h.testcaseId||y){let C=Ue(Se),N=E.project_id,O=h?.testcaseId;Ce((0,k.jsx)(Qn,{recordedTestPath:y?.recordedTestPath,outputDir:y?.outputDir,shareableLink:O&&h?.shareId&&N?Ci(C.testManagerUiUrl,N,O,h.shareId):void 0,testCaseLink:O&&N?Ei(C.testManagerUiUrl,N,O):void 0,codeExportDir:h?.codeExportDir,autoExit:!1}))}let R=await Bn(h);R&&he({type:"info",text:Ma(R)}),c.testId&&Yt(C=>[...C,{testId:c.testId,runCount:te}]),await M.shutdownRunner(),In.killChrome(),await c.finish("complete");let S=new Kn;S.start({model:E.model,environment:Se,profile:Lr??null}),w.current=S,v(C=>C+1),c.log("info","SESSION_RESET_COMPLETE","Session reset complete",{new_session_id:S.sessionId});try{await Ut({kind:"resessionize",env:Se},kt)}catch(C){c.log("error","SESSION_RESET_IDENTITY_FAILED","Identity re-attach failed during /new",{error:String(C)})}re(0),ei.current=0,ti.current=0,de.current=0,ee.current="",Je.current=null,le.current={},Mn.current=0,ii.current=0,ri.current=null,ni.current=null,Zo.current=null,Y.current=null,X.current=!1,Qo.current=null,Es(null),Ko.current=null,me(null),$(null),ut(null),Oe(Jn()),Er(!1),j("ok","/new","Session reset")},[c,he,Ce,j,e,$n,Bn,In,M,te,E,Se,Lr,kt]),Os=(0,T.useCallback)(async()=>{switch(Bf({hasRuns:c.nextRunIndex()>0,isRunning:M.isRunning,isTesting:E.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":xr("new"),vr(Pi());return;case"proceed":await On();return}},[c,M,he,E.mode,On]),Ns=(0,T.useCallback)(async()=>{await M.shutdownRunner(),await c.finish("complete"),Nr(0,"Session complete")},[c,M]),ip=(0,T.useCallback)(async d=>{Ir(!1);let h=c.testId??(Me.length>0?Me[Me.length-1].testId:null);if(d&&h){c.log("info","EXIT_FEEDBACK_SUBMIT","Submitting session feedback",{choice:d});try{let y=Ue(Se),R=x.getResolvedBasicAuth();R&&await $f({tmsBaseUrl:y.tmsBaseUrl,username:R.username,accessKey:R.access_key,testId:h,feedbackType:d,log:(S,C,N,O)=>c.log(S,C,N,O)})}catch(y){c.log("error","EXIT_FEEDBACK_FAILED","Feedback submission failed",{error:String(y)})}}else c.log("info","EXIT_FEEDBACK_SKIPPED","Feedback skipped");Ns()},[Se,x,c,Ns,Me]),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 $n()??null}catch(C){c.log("error","EXIT_UPLOAD_FAILED","Exit upload failed",{error:String(C)})}c.testId&&Yt(C=>[...C,{testId:c.testId,runCount:te}])}let y=null;try{let{persistRecordedSession:C}=await import("./persist-recorded-session-JXL5E53A.js");y=await C(c,{testcaseId:c.testcaseId??void 0,projectId:E.project_id??void 0,folderId:E.folder_id??void 0,codeExportDir:h?.codeExportDir,mobile:ir,packTestDir:Te.current?.packTestDir}),y&&ue(y)}catch(C){c.log("error","EXIT_PERSIST_FAILED","Persist failed during /exit",{error:String(C)})}{let{syncPersistedBundle:C}=await import("./testmd-sync-HYZI6NRM.js");await C({recordedTestPath:y?.recordedTestPath,uploadSucceeded:!!h?.success,local:e,sessionId:c.sessionId,basicAuth:x.getResolvedBasicAuth(),controllerBaseUrl:Ue(x.creds.getDefaultEnv()).controllerBaseUrl,log:(N,O,Q,ve)=>c.log(N,O,Q,ve)})}let R=await Bn(h);if(R&&process.stdout.isTTY&&(pe(!0),await new Promise(C=>br({packPath:R,resolve:C})),br(null)),d&&!e&&await c.finish("complete"),!(c.testId??(Me.length>0?Me[Me.length-1].testId:null))||e){await c.finish("complete"),Nr(0,"No test ID \u2014 quick exit");return}pe(!0),Ir(!0)},[c,e,$n,Bn,te,Me,E]),cr=(0,T.useCallback)(async()=>{if(K)return;c.log("info","EXIT_START","TUI exit initiated");let d=E.mode==="testing",h=c.nextRunIndex()>0;if(d&&h&&!c.sessionName){xr("exit"),vr(Pi());return}await Nn()},[K,c,E.mode,Nn]),sp=(0,T.useCallback)(d=>{d&&c.setSessionName(d);let h=Ar;vr(null),xr(null),h==="new"?On():Nn()},[c,Ar,Nn,On]);(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"),Nr(0,"Upload timed out after 5m")},d);return()=>clearTimeout(h)},[K,c]);let Mn=T.default.useRef(0),oi=T.default.useRef(null),ii=T.default.useRef(0),si=T.default.useRef(0),ai=T.default.useRef(null);Be((d,h)=>{if(h.ctrl&&d==="c"){if(Ne==="generate"&&(ye.isStreaming||Dt.submitting)){Dt.cancelGenerate(),si.current++,ai.current&&clearTimeout(ai.current),ai.current=setTimeout(()=>{si.current=0},2e3),si.current>=2&&cr();return}if(!Ae.running){if(K){ii.current+=1,ii.current>=2&&(c.setUploadStatus("pending","Force exit by user"),c.finish("complete"),Nr(0,"Force exit by user"));return}if(M.isRunning){M.cancelRun(),he({type:"info",text:"Run cancelled."}),Mn.current++,oi.current&&clearTimeout(oi.current),oi.current=setTimeout(()=>{Mn.current=0},2e3),Mn.current>=2&&cr();return}cr()}}}),Be((d,h)=>{if(h.ctrl&&d==="t"&&Ne==="generate"&&!ye.isStreaming){Pn("no thinking yet");return}});let Ms=T.default.useMemo(()=>{let d=x.creds.getActiveProfile()??"none",h=x.creds.getDefaultEnv(),y={runOptions:{headless:Pe.headless,cdpEndpoint:Pe.cdpEndpoint,wsEndpoint:Pe.wsEndpoint},patchRunOptions:S=>Wo(C=>({...C,...S})),deviceLabel:I.target?.displayName??null,appLabel:I.device?.app_package??null,openDevicePicker:()=>{if(ft){j("error","/config device",Pr(ft));return}yr(null),I.begin("reinit")},openAppPicker:()=>{if(ft){j("error","/config app",Pr(ft));return}if(yr(null),I.target){I.requestApp();return}I.begin("reinit")}},R={tuiConfig:E,setMobile:S=>{m.setMobile(S),Ee(m.load())},setConfigKey:(S,C)=>{m.set(S,C),Ee(m.load())},emitFeedback:j,onChromeProfilePicker:()=>{},onWindowSizePicker:()=>{},windowSizeLabel:`${E.window_size.width}x${E.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:S=>{let C=parseInt(S,10);C>0&&Wo(N=>({...N,maxSteps:C}))}},{id:"run-timeout",label:"Timeout (sec)",type:"text-input",currentValue:Pe.timeout?String(Pe.timeout):"",placeholder:"0 = no timeout",onValue:S=>{let C=parseInt(S,10);Wo(N=>({...N,timeout:isNaN(C)?0:C}))}},{id:"run-config-desktop",label:"Desktop",type:"submenu",children:_f(y)},...Rr()?[{id:"run-config-mobile",label:"Mobile",type:"submenu",children:Pf(y)}]:[]]}]},{id:"auth",label:"Auth",type:"submenu",children:[{id:"login",label:"Login",type:"action",onLoginWizard:()=>{}},{id:"logout",label:"Logout",type:"action",onAction:()=>{x.logout().then(S=>{vt();let C=x.creds.getActiveProfile(),N=x.creds.getDefaultEnv();_t(C,N);let O=Af(C,N);Ut(O,kt).catch(()=>{}),S?j("ok","/logout",`Logged out: ${S.profile} [${S.env}]`):j("ok","/logout","No active profile")}).catch(()=>{j("error","/logout","Logout failed")})}},{id:"whoami",label:"Who Am I",type:"action",onInfo:()=>{let S=x.creds.getActiveProfile()??"none",C=x.creds.getDefaultEnv(),N=x.creds.loadBasicAuth(S,C),O=N?"basic":x.creds.loadCredentials(S,C)?"oauth":"not configured";return{title:"Who Am I",sections:[{label:"Identity",entries:[{key:"Profile",value:S},{key:"Environment",value:C}]},{label:"Authentication",entries:[{key:"Method",value:O},...N?[{key:"Username",value:N.username}]:[]]},{label:"Token",entries:[{key:"Status",value:x.tokenValid?"valid":"not logged in",color:x.tokenValid?l.green:l.red}]}]}}},{id:"balance",label:"Credit Balance",type:"action",suppressFeedback:!0,onAction:()=>{(async()=>{let S=x.creds.getActiveProfile()??"default",C=x.creds.getDefaultEnv(),N=Ue(C);try{let O=x.getBasicAuth(),Q=O?null:await x.getToken();if(!O&&!Q){Ge({text:"Not authenticated. Run /login first.",color:l.red});return}let{ControllerClient:ve}=await import("./controller-client-ZF5IXRUV.js"),Qe=await(O?new ve(N.controllerBaseUrl,{username:O.username,accessKey:O.access_key}):new ve(N.controllerBaseUrl,Q)).getCreditBalance();Ge({text:`Credits \u2014 available: ${Qe.available_credits}, total: ${Qe.total_credits} (${S} / ${C})`,color:l.green})}catch(O){Ge({text:`Balance check failed: ${O instanceof Error?O.message:String(O)}`,color:l.red})}st.current&&clearTimeout(st.current),st.current=setTimeout(()=>{Ge(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:E.mode},{key:"Assertion Mode",value:E.assertion_mode},{key:"WebSocket Capture",value:E.network_ws?"on":"off"},{key:"SSE Capture",value:E.network_sse?"on":"off"},{key:"Bug Detection",value:E.bug_detection},{key:"Final Validation",value:E.final_validation?"on":"off"},{key:"Hints",value:E.hints_enabled===!1?"off":"on"}]},{label:"Browser",entries:[{key:"Window",value:`${E.window_size.width}x${E.window_size.height}`},{key:"Chrome Profile",value:E.chrome_profile_path?E.chrome_profile_path.split("/").pop()??E.chrome_profile_path:"(temporary)"}]},{label:"Project",entries:[{key:"Project",value:E.project_name?`${E.project_name} (${E.project_id})`:E.project_id??"(none)"},{key:"Folder",value:E.folder_name?`${E.folder_name} (${E.folder_id})`:E.folder_id??"(none)"},{key:"Default URL",value:E.default_url??di}]},{label:"Code Export",entries:[{key:"Enabled",value:E.code_export.enabled?"yes":"no"},{key:"Language",value:E.code_export.language},{key:"Skip Validation",value:E.code_export.skip_validation?"yes":"no"}]},Lf(E.mobile)]})},{id:"config-project",label:"Project",type:"action",onProjectPicker:()=>{}},{id:"config-folder",label:"Folder",type:"action",...E.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:Df(R)},...Ss(R).length>0?[{id:"config-mobile",label:"Mobile",type:"submenu",children:Ss(R)}]:[],{id:"config-run",label:"Run",type:"submenu",children:[{id:"config-mode",label:"Mode",type:"select",currentValue:E.mode,options:[{label:"testing",value:"testing"},{label:"action",value:"action"}],onValue:S=>{(S==="action"||S==="testing")&&(m.set("mode",S),Ee(m.load()),j("ok","/config set-mode",S))}},{id:"config-assertion-mode",label:"Assertion Mode",type:"select",currentValue:E.assertion_mode,options:[{label:"visual \u2014 vision model (default)",value:"visual"},{label:"dom \u2014 DOM extraction & assertions preferred",value:"dom"}],onValue:S=>{(S==="visual"||S==="dom")&&(m.set("assertion_mode",S),Ee(m.load()),j("ok","/config set-assertion-mode",S))}},{id:"config-final-validation",label:"Final Validation",type:"select",currentValue:E.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:S=>{(S==="on"||S==="off")&&(m.set("final_validation",S==="on"),Ee(m.load()),j("ok","/config set-final-validation",S))}},{id:"config-bug-detection",label:"Bug Detection",type:"select",currentValue:E.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:S=>{(S==="off"||S==="stop"||S==="continue")&&(m.set("bug_detection",S),Ee(m.load()),j("ok","/config set-bug-detection",S))}}]},{id:"config-hints",label:"CLI Hints",type:"select",currentValue:E.hints_enabled===!1?"off":"on",options:[{label:"on",value:"on"},{label:"off",value:"off"}],onValue:S=>{let C=S==="on";m.set("hints_enabled",C),Ee(m.load()),j("ok","/config hints",`CLI hints ${C?"enabled":"disabled"}`)}},{id:"config-generate",label:"Generate",type:"submenu",currentValue:`${E.generate.scenario_limit}x${E.generate.per_scenario_limit}`,children:[{id:"config-generate-scenario-limit",label:"Scenario limit",type:"text-input",currentValue:String(E.generate.scenario_limit),placeholder:"5",onValue:S=>{let C=parseInt(S,10);if(!Number.isFinite(C)||C<1||C>20){j("error","/config",`Scenario limit must be 1-20 (got ${S})`);return}m.set("generate",{...E.generate,scenario_limit:C}),Ee(m.load()),j("ok","/config",`Scenario limit: ${C}`)}},{id:"config-generate-per-scenario-limit",label:"Per-scenario limit",type:"text-input",currentValue:String(E.generate.per_scenario_limit),placeholder:"4",onValue:S=>{let C=parseInt(S,10);if(!Number.isFinite(C)||C<1||C>20){j("error","/config",`Per-scenario limit must be 1-20 (got ${S})`);return}m.set("generate",{...E.generate,per_scenario_limit:C}),Ee(m.load()),j("ok","/config",`Per-scenario limit: ${C}`)}},{id:"config-generate-memory",label:"Memory",type:"select",currentValue:E.generate.memory_enabled?"on":"off",options:[{label:"on",value:"on"},{label:"off",value:"off"}],onValue:S=>{let C=S==="on";m.set("generate",{...E.generate,memory_enabled:C}),Ee(m.load()),j("ok","/config",`Memory: ${C?"on":"off"}`)}}]},{id:"config-code-export",label:"Code Export",type:"submenu",currentValue:E.code_export.enabled?"enabled":"disabled",children:[{id:"config-code-export-enabled",label:"Enabled",type:"select",currentValue:E.code_export.enabled?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:S=>{m.set("code_export",{...E.code_export,enabled:S==="on"}),Ee(m.load()),j("ok","/config code-export enabled",S)}},{id:"config-code-export-language",label:"Language",type:"select",currentValue:E.code_export.language,options:[{label:"python",value:"python"},{label:"javascript (web only)",value:"javascript"}],onValue:S=>{S!=="python"&&S!=="javascript"||(m.set("code_export",{...E.code_export,language:S}),Ee(m.load()),j("ok","/config code-export language",S))}},{id:"config-code-export-skip-validation",label:"Skip Validation",type:"select",currentValue:E.code_export.skip_validation?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:S=>{m.set("code_export",{...E.code_export,skip_validation:S==="on"}),Ee(m.load()),j("ok","/config code-export skip-validation",S)}}]}]},{id:"exit",label:"Exit",type:"action",onAction:()=>{cr()}}]},[x,m,E,he,cr,Pe,vt,j,ft,Pr,I.target,I.device,I.begin,I.requestApp]),ci=(0,T.useCallback)(d=>{if(M.askingUser){let y=M.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:y})})]}),(0,k.jsxs)(b,{marginTop:1,children:[(0,k.jsx)(b,{width:3,children:(0,k.jsx)(a,{color:l.dim,bold:!0,children:"\u2192"})}),(0,k.jsx)(b,{flexShrink:1,children:(0,k.jsx)(a,{wrap:"wrap",children:d})})]})]})]})),ri.current=null,M.sendAnswer(d);return}if(c.logCommand(d),M.isRunning){he({type:"error",text:"Run in progress. Ctrl+C to cancel."});return}let h=To(d);if(h){if(!pd(h.command,Ne)){j("error",`/${h.command}`,`/${h.command} isn't available in ${Ne==="run"?"Run":"Generate"} mode.`);return}switch(h.command){case"profiles":if(Ne==="generate"&&ye.requestId&&h.args.action==="switch"){Qr({reason:"profile",pendingArgs:h.args});return}yr("auth");return;case"login":case"logout":case"whoami":case"balance":case"auth":yr("auth");return;case"config":if(h.args.action==="set-url"){let y=Yn(h.args.value);if(!y){j("error","/config set-url","Usage: /config set-url <url>");return}m.set("default_url",y),Ee(m.load()),j("ok","/config set-url",y);return}yr("config");return;case"mobile":{let y=zn();if(!y.supported){j("error","/mobile",y.reason);return}if(ft){j("error","/mobile",Pr(ft));return}I.begin("confirm");return}case"desktop":{if(ft){ft.kind==="web"?j("ok","/web","Session is already on Desktop."):j("error","/web",Pr(ft));return}m.setMobile({tui_target:"desktop",default_target:void 0,default_app:void 0}),Ee(m.load()),I.reset(),j("ok","/web","Session target: web (Chrome)");return}case"doctor":{(async()=>{he({type:"info",text:"Running mobile toolchain checks\u2026"});let{runDoctor:y,renderDoctorText:R,doctorExitCode:S}=await import("./doctor-B4Z6RPKQ.js"),C=await y();he({type:"info",text:R(C)}),S(C)!==0&&he({type:"info",text:"Install the managed tooling with /mobile (interactive) or `kane-cli doctor --target <emulator|simulator> --install`."})})();return}case"help":Ts(!0);return;case"testmd":if(M.isRunning||ye.isStreaming||Ae.running){j("error","/testmd","Finish or cancel the current run/generation first.");return}Ae.clearResult(),Cn(!0);return;case"generate":if(Ae.running){j("error","/generate","Finish or cancel the running test first.");return}Ne==="run"?Dt.requestSwitch("generate")&&j("ok","/generate","Switched to Generate mode.",void 0,l.generateAccent):j("ok","/generate","Already in Generate mode.",void 0,l.generateAccent);return;case"run":{let y=hd(Ne,h.args.objective);switch(y.kind){case"run":Sr(y.objective,h.args.url);return;case"reject":j("error","/run",'Switch to Run mode first (bare /run), then /run "objective".');return;case"already":j("ok","/run","Already in Run mode.",void 0,l.orange);return;case"toggle":Dt.requestSwitch("run")&&j("ok","/run","Switched to Run mode.",void 0,l.orange);return}return}case"update":{(async()=>{let{getUpdateCommand:y}=await import("./version-check-4DQJBSXW.js");j("ok","/update",`To update kane-cli, run: ${y()}`)})();return}case"summary":{if(Ne==="generate"&&!ye.requestId){Pn("no generation yet"),j("ok","/summary","(no generation yet)");return}let y=c.getFlows();if(y.length===0){j("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)){j("error","/summary",`No flow at index ${R}`,`${y.length} flow${y.length===1?"":"s"} available. Use /summary to see all.`);return}Ce((0,k.jsx)(fs,{flows:y,filterIndex:R})),j("ok","/summary",R!==void 0?`Flow ${R}`:`${y.length} flow${y.length===1?"":"s"}`);return}case"new":Ne==="generate"&&ye.requestId&&(or(),ye.end().catch(y=>{j("error","/new",`Could not end generation cleanly: ${y.message}`)}),ye.reset()),Os();return;case"name":{let y=h.raw.replace(/^\/name\s*/,"").trim();if(!y){j("error","/name","Usage: /name <new-name>");return}(async()=>{let{validateNameOrThrow:R}=await import("./name-validator-5YGJXLZ7.js");try{R(y),c.setSessionName(y),j("ok","/name",`Session name set: ${y}`)}catch(S){j("error","/name",S.message)}})();return}case"cancel":if(Ne==="generate"&&ye.isStreaming){or(),ye.cancel(),j("ok","/cancel","Cancelled");return}if(Ne==="generate"&&!ye.requestId){Pn("no generation yet"),j("ok","/cancel","(no generation yet)");return}if(Ae.running){Ae.cancel(),j("ok","/cancel","Run cancelled");return}M.cancelRun(),j("ok","/cancel","Run cancelled");return;case"clear":j("ok","/clear","Chat cleared");return;case"exit":Ne==="generate"&&ye.requestId&&(or(),ye.end()),cr();return;default:j("error",`/${h.command}`,"Unknown command");return}}if(d.trim().toLowerCase()==="exit"){cr();return}Ce((0,k.jsx)(Vu,{objective:d})),Sr(d,void 0)},[M,he,j,Ce,c,Sr,cr,Os,Ne,ye.isStreaming,ye.requestId,ye,Pn,or,Ae,E,s,ft,Pr]);Ls.current=ci;let js=(0,T.useRef)(!1);(0,T.useEffect)(()=>{if(!js.current&&B&&u==="generate"&&f){js.current=!0;let d=setTimeout(()=>{tp(f)},50);return()=>clearTimeout(d)}},[B,u,f]);let Vs=x.getAuthInfo(),ap=Vs?Vs.method==="basic"?"basic auth":"oauth":"not logged in",cp=(()=>{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"?kn?["auth",d[kn]]:["auth"]:Mt==="config"?kn?["config",d[kn]]:["config"]:Mt==="help"?["help"]:M.askingUser?["agent question"]:[]})();return(0,k.jsxs)(b,{flexDirection:"column",children:[!B&&!ws&&(0,k.jsx)(Mu,{onComplete:()=>{let d=x.creds.getActiveProfile(),h=x.creds.getDefaultEnv(),y=d?x.creds.loadCredentials(d,h):null,R=d?x.creds.loadBasicAuth(d,h):null,S=!!(y||R),C=R?.username??d??null;Ce((0,k.jsx)(xo,{size:"full",helmetVisibleRows:8,textVisibleRows:7,showMeta:!0,version:xt,authenticated:S,user:C})),jf(!0);let N=(O,Q,ve,ke)=>{c.log(O,Q,ve,ke)};if(Ha(x.creds,N).then(O=>{if(O.status==="authenticated"){let{profile:Q,env:ve,tmsCreds:ke}=O.result;x.creds.setActiveProfile(Q),x.creds.setDefaultEnv(ve),vt(),Kt(ke),Nt("ready"),F(!0)}else O.status==="needs_pick"?(Nf(O.profiles),Nt("pick")):Nt("login")}).catch(O=>{c.log("error","STARTUP_GATE_ERROR","Auth gate failed",{error:String(O)}),Nt("login")}),o&&o.then(async O=>{if(O){let{getUpdateCommand:Q}=await import("./version-check-4DQJBSXW.js");j("ok","update available",`${O.current} \u2192 ${O.latest}`,`Run: ${Q()}`)}}).catch(()=>{}),i&&i.changes.length>0){let O=`kane-cli updated to ${i.toVersion}. Default settings changed:`,Q=[...i.changes.map(ve=>`\u2022 ${ve.description} (${ve.field}: ${JSON.stringify(ve.from)} \u2192 ${JSON.stringify(ve.to)})`),"","Use /config to review or revert any of these."].join(`
|
|
26
|
+
`);j("ok","defaults updated",O,Q)}}}),!B&&nr==="booting"&&ws&&(0,k.jsx)(b,{paddingX:1,children:(0,k.jsx)(a,{color:"yellow",children:"Checking authentication..."})}),!B&&nr==="pick"&&(0,k.jsx)(Sv,{profiles:Of,onCancel:()=>Nt("login"),onSelect:async(d,h)=>{x.creds.setActiveProfile(d),x.creds.setDefaultEnv(h),vt(),Ho(!0);let y=(R,S,C,N)=>{c.log(R,S,C,N)};try{let R=await qa(x.creds,d,h,y);Ho(!1),R.status==="authenticated"?(_t(d,h),Kt(R.result.tmsCreds),Nt("ready"),F(!0)):Nt("login")}catch{Ho(!1),Nt("login")}},validating:Mf}),!B&&nr==="login"&&!V&&(0,k.jsx)(Gn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:x.creds.listProfiles(),onBasicLogin:async(d,h,y,R)=>{let{validateBasicAuth:S}=await import("./validate-basic-OKLJLDML.js");await S(h,y,R),x.creds.saveBasicAuth(d,h,{username:y,access_key:R}),x.creds.setActiveProfile(d),x.creds.setDefaultEnv(h),Ct(x.creds,m,d,h),x.setTokenValid(!0),vt()},onOAuthLogin:async(d,h)=>{x.creds.setDefaultEnv(h),await x.login(d),Ct(x.creds,m,d,h),vt()},onComplete:(d,h)=>{Ut(qo(h),kt).then(()=>{vt(),je({phase:"project",profile:d,env:h})}).catch(()=>{je({phase:"project",profile:d,env:h})})},onCancel:()=>{Nr(0,"Login cancelled at startup")}}),!B&&nr==="login"&&V?.phase==="project"&&(0,k.jsx)(Mr,{resolver:x.getResolver(),currentProjectId:null,env:V.env,onSelect:(d,h)=>{x.creds.saveProfileConfig(V.profile,V.env,{project_id:d,project_name:h}),j("ok","/config project",h,`id: ${d}`),je({...V,phase:"folder"})},onCancel:async()=>{let d=await Yo(V.profile,V.env);d&&($t(x.creds,m,V.profile,V.env,{projectId:d.id,projectName:d.name}),j("ok","/config project",d.name,`id: ${d.id}`),je({...V,phase:"folder"}))}}),!B&&nr==="login"&&V?.phase==="folder"&&(0,k.jsx)(jr,{resolver:x.getResolver(),projectId:x.creds.loadProfileConfig(V.profile,V.env)?.project_id??"",currentFolderId:null,env:V.env,onSelect:(d,h)=>{x.creds.saveProfileConfig(V.profile,V.env,{folder_id:d,folder_name:h}),j("ok","/config folder",h,`id: ${d}`),_t(V.profile,V.env),je(null),Nt("ready"),F(!0)},onCancel:async()=>{let d=x.creds.loadProfileConfig(V.profile,V.env);if(!d?.project_id)return;let h=await Jo(V.env,d.project_id);h&&($t(x.creds,m,V.profile,V.env,{folderId:h.id,folderName:h.name}),j("ok","/config folder",h.name,`id: ${h.id}`),_t(V.profile,V.env),je(null),Nt("ready"),F(!0))}}),B&&Tn==="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:E.model}),(0,k.jsx)(a,{color:l.dim,children:" \u2502 "}),(0,k.jsx)(a,{color:l.dim,children:ap}),(0,k.jsx)(a,{color:l.dim,children:" \u2502 "}),(0,k.jsxs)(a,{color:l.dim,children:[Lr??"no profile","/",Se]})]})}),B&&!K&&(0,k.jsxs)(b,{flexDirection:"column",flexGrow:1,children:[Tn==="menu"&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(ss,{items:Ms,onRunSelected:()=>Vf("chat"),onActiveViewChange:Rs,renderLoginWizard:d=>{let h=V?.phase??"wizard";if(h==="project")return(0,k.jsx)(Mr,{resolver:x.getResolver(),currentProjectId:null,env:V.env,onSelect:(y,R)=>{x.creds.saveProfileConfig(V.profile,V.env,{project_id:y,project_name:R}),j("ok","/config project",R,`id: ${y}`),je(S=>S?{...S,phase:"folder"}:null)},onCancel:async()=>{if(!V)return;let y=await Yo(V.profile,V.env);y&&($t(x.creds,m,V.profile,V.env,{projectId:y.id,projectName:y.name}),j("ok","/config project",y.name,`id: ${y.id}`),je(R=>R?{...R,phase:"folder"}:null))}});if(h==="folder"){let y=x.creds.loadProfileConfig(V.profile,V.env);return(0,k.jsx)(jr,{resolver:x.getResolver(),projectId:y?.project_id??"",currentFolderId:null,env:V.env,onSelect:(R,S)=>{x.creds.saveProfileConfig(V.profile,V.env,{folder_id:R,folder_name:S}),j("ok","/config folder",S,`id: ${R}`),_t(V.profile,V.env),je(null),d()},onCancel:async()=>{if(!V)return;let R=x.creds.loadProfileConfig(V.profile,V.env);if(!R?.project_id)return;let S=await Jo(V.env,R.project_id);S&&($t(x.creds,m,V.profile,V.env,{folderId:S.id,folderName:S.name}),j("ok","/config folder",S.name,`id: ${S.id}`),_t(V.profile,V.env),je(null),d())}})}return(0,k.jsx)(Gn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:x.creds.listProfiles(),onBasicLogin:async(y,R,S,C)=>{let{validateBasicAuth:N}=await import("./validate-basic-OKLJLDML.js");await N(R,S,C),x.creds.saveBasicAuth(y,R,{username:S,access_key:C}),x.creds.setActiveProfile(y),x.creds.setDefaultEnv(R),Ct(x.creds,m,y,R),x.setTokenValid(!0),vt()},onOAuthLogin:async(y,R)=>{x.creds.setDefaultEnv(R),await x.login(y),Ct(x.creds,m,y,R),vt()},onComplete:(y,R)=>{Ut(qo(R),kt).then(()=>{je({phase:"project",profile:y,env:R})}).catch(()=>{je({phase:"project",profile:y,env:R})})},onCancel:()=>{je(null),d()}})},renderProfilesView:d=>(0,k.jsx)(vi,{creds:x.creds,onSwitch:(h,y)=>{let R=x.creds.getActiveProfile()??"(none)";x.creds.setActiveProfile(h),x.creds.setDefaultEnv(y),Ct(x.creds,m,h,y),_t(h,y),vt(),Ut(xs(y),kt).catch(()=>{}),j("ok","/profiles switch",`${R} \u2192 ${h} [${y}]`)},onCancel:d}),renderChromeProfilePicker:d=>(0,k.jsx)(xi,{currentPath:E.chrome_profile_path,onSelect:h=>{m.set("chrome_profile_path",h),Ee(m.load()),j("ok","/config chrome-profile",h),d()},onCancel:d}),renderProjectPicker:d=>(0,k.jsx)(Mr,{resolver:x.getResolver(),currentProjectId:E.project_id,env:Se,onSelect:(h,y)=>{$t(x.creds,m,x.creds.getActiveProfile()??"default",x.creds.getDefaultEnv(),{projectId:h,projectName:y}),j("ok","/config project",y,`id: ${h}`),Ee(m.load()),d()},onCancel:d}),renderFolderPicker:d=>(0,k.jsx)(jr,{resolver:x.getResolver(),projectId:E.project_id??"",currentFolderId:E.folder_id,env:Se,onSelect:(h,y)=>{$t(x.creds,m,x.creds.getActiveProfile()??"default",x.creds.getDefaultEnv(),{folderId:h,folderName:y}),j("ok","/config folder",y,`id: ${h}`),Ee(m.load()),d()},onCancel:d}),renderWindowSizePicker:d=>(0,k.jsx)(ds,{currentWidth:E.window_size.width,currentHeight:E.window_size.height,onSelect:(h,y)=>{m.set("window_size",{width:h,height:y}),Ee(m.load()),j("ok","/config set-window",`${h} \xD7 ${y}`),d()},onCancel:d})}),$e&&(0,k.jsx)(b,{paddingX:1,marginTop:1,children:(0,k.jsx)(a,{color:$e.color,children:$e.text})})]}),Tn==="chat"&&(0,k.jsxs)(k.Fragment,{children:[zt&&!M.isRunning&&(0,k.jsx)(bi,{label:zt.replace(/[.…\s]+$/,"")}),(()=>{let d=Ks({isRunning:M.isRunning,bifurcationInfo:M.bifurcationInfo,steps:M.steps,cmInitCounts:M.cmInitCounts,replayInfo:M.replayInfo});return d?(0,k.jsx)(bi,{label:d.label,hasBifurcation:d.hasBifurcation}):null})(),M.isRunning&&M.steps.length>0&&(0,k.jsx)(zs,{steps:M.steps,bifurcated:!!M.bifurcationInfo&&!M.bifurcationInfo.isSingleFlow,flows:M.bifurcationInfo?.flows,cmInitCounts:M.cmInitCounts,onStepCommit:Ce,describe:Zr.text,describeVisible:Zr.visible,describeRevealing:Zr.revealing},`run-${de.current}`),Ae.runViewProps&&(0,k.jsx)(ec,{...Ae.runViewProps,onCancel:()=>{Ae.runViewProps?.onCancel?.(),Ae.cancel()}}),Yr&&(0,k.jsx)(xd,{onClose:()=>Ts(!1),version:xt,environment:x.creds.getDefaultEnv(),sessionId:c.sessionId,runUrl:E.default_url??di,mode:Ne}),Jr&&(0,k.jsx)(wd,{cwd:process.cwd(),currentOrgId:String(Le?.org_id??""),onClose:()=>Cn(!1),onRun:d=>{if(M.isRunning||ye.isStreaming||Ae.running){setTimeout(()=>j("error","/testmd","Finish or cancel the current run first."),0);return}Cn(!1),!(Ne==="generate"&&!Dt.requestSwitch("run"))&&(Ne==="generate"&&setTimeout(()=>j("ok","/testmd",`Switched to Run mode to run ${d.relPath}`,void 0,l.orange),0),Ae.start(d.path).catch(h=>setTimeout(()=>j("error","/testmd",`Run failed: ${h.message}`),0)))},onExport:d=>{Cn(!1),vc(d.path,{language:E.code_export.language??"python",env:Se}).then(h=>setTimeout(()=>j("ok","/testmd",`Exported code \u2192 ${h.codeDir}`),0)).catch(h=>setTimeout(()=>j("error","/testmd",`Export failed: ${h.message}`),0))}}),Mt&&!M.isRunning&&(()=>{let d=Ms.find(h=>h.id===Mt);return d?.children?(0,k.jsx)(ss,{items:d.children,onRunSelected:()=>yr(null),onDismiss:()=>yr(null),onActiveViewChange:Rs,renderLoginWizard:h=>{let y=V?.phase??"wizard";if(y==="project")return(0,k.jsx)(Mr,{resolver:x.getResolver(),currentProjectId:null,env:V.env,onSelect:(R,S)=>{x.creds.saveProfileConfig(V.profile,V.env,{project_id:R,project_name:S}),j("ok","/config project",S,`id: ${R}`),je(C=>C?{...C,phase:"folder"}:null)},onCancel:async()=>{if(!V)return;let R=await Yo(V.profile,V.env);R&&($t(x.creds,m,V.profile,V.env,{projectId:R.id,projectName:R.name}),j("ok","/config project",R.name,`id: ${R.id}`),je(S=>S?{...S,phase:"folder"}:null))}});if(y==="folder"){let R=x.creds.loadProfileConfig(V.profile,V.env);return(0,k.jsx)(jr,{resolver:x.getResolver(),projectId:R?.project_id??"",currentFolderId:null,env:V.env,onSelect:(S,C)=>{x.creds.saveProfileConfig(V.profile,V.env,{folder_id:S,folder_name:C}),j("ok","/config folder",C,`id: ${S}`),_t(V.profile,V.env),je(null),h()},onCancel:async()=>{if(!V)return;let S=x.creds.loadProfileConfig(V.profile,V.env);if(!S?.project_id)return;let C=await Jo(V.env,S.project_id);C&&($t(x.creds,m,V.profile,V.env,{folderId:C.id,folderName:C.name}),j("ok","/config folder",C.name,`id: ${C.id}`),_t(V.profile,V.env),je(null),h())}})}return(0,k.jsx)(Gn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:x.creds.listProfiles(),onBasicLogin:async(R,S,C,N)=>{let{validateBasicAuth:O}=await import("./validate-basic-OKLJLDML.js");await O(S,C,N),x.creds.saveBasicAuth(R,S,{username:C,access_key:N}),x.creds.setActiveProfile(R),x.creds.setDefaultEnv(S),Ct(x.creds,m,R,S),x.setTokenValid(!0),vt()},onOAuthLogin:async(R,S)=>{x.creds.setDefaultEnv(S),await x.login(R),Ct(x.creds,m,R,S),vt()},onComplete:(R,S)=>{Ut(qo(S),kt).then(()=>{je({phase:"project",profile:R,env:S})}).catch(()=>{je({phase:"project",profile:R,env:S})})},onCancel:()=>{je(null),h()}})},renderProfilesView:h=>(0,k.jsx)(vi,{creds:x.creds,onSwitch:(y,R)=>{let S=x.creds.getActiveProfile()??"(none)";x.creds.setActiveProfile(y),x.creds.setDefaultEnv(R),Ct(x.creds,m,y,R),_t(y,R),vt(),Ut(xs(R),kt).catch(()=>{}),j("ok","/profiles switch",`${S} \u2192 ${y} [${R}]`),h()},onCancel:h}),renderChromeProfilePicker:h=>(0,k.jsx)(xi,{currentPath:E.chrome_profile_path,onSelect:y=>{m.save({chrome_profile_path:y}),Ee(m.load()),j("ok","/config chrome-profile",y),h()},onCancel:h}),renderProjectPicker:h=>(0,k.jsx)(Mr,{resolver:x.getResolver(),currentProjectId:E.project_id,env:Se,onSelect:(y,R)=>{$t(x.creds,m,x.creds.getActiveProfile()??"default",x.creds.getDefaultEnv(),{projectId:y,projectName:R}),Ee(m.load()),j("ok","/config project",R,`id: ${y}`),h()},onCancel:h}),renderFolderPicker:h=>(0,k.jsx)(jr,{resolver:x.getResolver(),projectId:E.project_id??"",currentFolderId:E.folder_id,env:Se,onSelect:(y,R)=>{$t(x.creds,m,x.creds.getActiveProfile()??"default",x.creds.getDefaultEnv(),{folderId:y,folderName:R}),Ee(m.load()),j("ok","/config folder",R,`id: ${y}`),h()},onCancel:h}),renderWindowSizePicker:h=>(0,k.jsx)(ds,{currentWidth:E.window_size.width,currentHeight:E.window_size.height,onSelect:(y,R)=>{m.set("window_size",{width:y,height:R}),Ee(m.load()),j("ok","/config set-window",`${y} \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})}),Ne==="run"&&!Mt&&!Yr&&!Jr&&!Tt&&M.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:M.askingUser})})]})})]}),En&&(()=>{let d=En,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?",y=d.reason==="switch"?"Discard & switch":"Yes, end";return(0,k.jsx)(Sf,{message:h,confirmLabel:y,onConfirm:async()=>{if(d.reason==="switch"){let S=d.to;Qr(null),Dt.confirmSwitch(S);return}or();let R=d.pendingArgs;if(Qr(null),await ye.end(),ye.reset(),R.profile){let S=x.creds.getDefaultEnv(),C=x.creds.getActiveProfile()??"(none)";x.creds.setActiveProfile(R.profile),x.creds.setDefaultEnv(S),Ct(x.creds,m,R.profile,S),_t(R.profile,S),vt(),Ut({kind:"switch",env:S},kt).catch(()=>{}),j("ok","/profiles switch",`${C} \u2192 ${R.profile} [${S}]`)}else ci("/profiles switch")},onCancel:()=>Qr(null)})})(),Cs&&(0,k.jsxs)(b,{flexDirection:"column",paddingX:1,marginTop:1,children:[I.phase==="doctor"?(0,k.jsx)(id,{checks:I.checks,busyMessage:I.busyMessage,onRetry:I.recheck,onInstall:I.install,onCancel:I.cancel}):I.phase==="apps"&&I.kind?(0,k.jsx)(Sa,{kind:I.kind,onSelect:d=>I.selectApp(d),onBack:I.back,onCancel:I.back}):I.phase==="appList"&&I.kind?(0,k.jsx)(ya,{kind:I.kind,busyMessage:I.busyMessage,listApps:Qf,onSelect:d=>{I.selectAppId(d.appId)},onManualEntry:I.requestAppId,onCancel:I.back}):I.phase==="appId"?(0,k.jsx)(za,{busyMessage:I.busyMessage,onSubmit:d=>I.selectAppId(d),onBack:I.back}):I.phase==="chooser"?(0,k.jsx)(Wa,{mode:"mobile-only",onSelect:d=>{(d==="emulator"||d==="simulator")&&I.selectKind(d)},onCancel:I.back}):I.phase==="confirm"&&I.saved?(0,k.jsx)(gd,{saved:I.saved,onContinue:()=>I.confirmSaved(),onChangeDevice:()=>I.begin("reinit"),onChangeApp:()=>I.confirmSaved({keepApp:!1}),onCancel:I.cancel}):I.phase==="appSource"&&I.kind?(0,k.jsx)(Xa,{kind:I.kind,onSelect:d=>d==="uploaded"?I.requestCloudApps():I.requestApp(),onCancel:I.back}):(0,k.jsx)(xa,{targets:I.targets,preselectedTarget:E.mobile?.default_target,busyMessage:I.busyMessage??(I.phase==="checking"?"Checking mobile toolchain\u2026":null),onSelect:d=>{I.selectTarget(d)},onCancel:I.back,...I.kind?{kind:I.kind}:{}}),I.error&&(0,k.jsx)(a,{color:"red",children:I.error})]}),Dr&&(0,k.jsx)(td,{suggested:Dr.suggested,sessionTargetLabel:_r.kind==="unset"||_r.kind==="choose-mobile"?"Desktop":rn(_r.kind),appHint:Dr.verdict.appHint,savedDeviceName:ea(E.mobile?.default_target),onAccept:()=>Dn("accept"),onPickDevice:()=>Dn("pick"),onKeep:()=>Dn("keep"),onCancel:()=>Dn("cancel")}),Ne==="run"&&!Mt&&!Yr&&!Jr&&!Tt&&!En&&!Ae.running&&!Cs&&!Dr&&(0,k.jsx)(ur,{onSubmit:ci,onEscape:void 0,history:Uf,commands:fd(vn(dd),ft),clearSeq:ep,loadMentionItems:ir?Kf:void 0,mentionHint:ir&&!I.target?"No device selected \u2014 run /mobile to choose one.":void 0,placeholder:M.askingUser?"Type your answer...":M.isRunning?"Run in progress... Ctrl+C to cancel":"Type an objective... (/ = commands)",footerBindings:[{keys:"\u2191\u2193",label:"history"},{keys:"\u21B5",label:"submit"},{keys:"tab",label:"complete"},{keys:"ctrl+r",label:"search"},{keys:"/generate",label:"test cases"}]}),Ne==="generate"&&!Mt&&!Yr&&!Jr&&!Tt&&!En&&(0,k.jsx)(xf,{tcg:ye,gm:Dt,history:qf,tuiConfig:E,browse:ar.isOpen?{target:ar.target,onClose:ar.close,excluded:ar.excluded,onToggleCase:ar.toggleCase,onToggleScenario:ar.toggleScenario,getStatus:Dt.bifurcation.getStatus,getResult:Dt.bifurcation.getResult}:null})]})]}),B&&K&&ge&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(ki,{steps:Ot,status:ge.status,testUrl:ge.testUrl,error:ge.error}),ge.status==="success"&&(0,k.jsx)(Qn,{recordedTestPath:Z?.recordedTestPath,outputDir:Z?.outputDir,shareableLink:ge.testUrl,testCaseLink:ge.testCaseLink,codeExportDir:ge.codeExportDir,autoExit:!1})]}),Tt&&(0,k.jsx)(Nc,{defaultName:Tt,onSubmit:sp}),hr&&(0,k.jsx)(ja,{packPath:hr.packPath,viewerBase:Na(Se??"prod"),onDone:()=>hr.resolve()}),Kr&&(0,k.jsx)(Oc,{onSubmit:ip}),gr&&ge&&(0,k.jsx)(ki,{steps:Ot,status:ge.status,error:ge.error}),B&&!K&&(0,k.jsx)($u,{profile:Lr,environment:Se,tokenValid:x.tokenValid,runCount:te,sessionId:c.sessionId,viewMode:Tn,breadcrumb:cp,chatMode:Ne,footerHint:np,tcgRequestId:ye.requestId,tcgStreamStatus:ye.isStreaming?"streaming":ye.isReconnecting?"reconnecting":ye.isTerminal&&ye.state.status.toLowerCase()==="completed"?"completed":ye.isTerminal&&ye.state.status.toLowerCase()==="failed"?"failed":null,sessionTarget:ir?{kind:_r.kind==="simulator"?"simulator":"emulator",...I.target?{deviceName:I.target.displayName}:{},...I.device?.app_package?{appPackage:I.device.app_package}:{}}:{kind:"desktop"},targetLocked:ft!==null})]})}function Sv({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{rd as a,nd as b,ad as c,If as d,$f as e,cE as f};
|