@testmuai/kane-cli 0.8.1 → 0.8.2
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-B3ULYDYC.js +8 -0
- package/dist/{ChromeProfilePicker-AUU7JF6F.js → ChromeProfilePicker-T77E7ZSC.js} +1 -1
- package/dist/{CliFeedbackPrompt-4W74Y3UF.js → CliFeedbackPrompt-FQ2XV5DZ.js} +1 -1
- package/dist/{CliUploadProgress-6HL7WTEX.js → CliUploadProgress-TZ55LONO.js} +1 -1
- package/dist/{ConfigView-6BSCZP5Y.js → ConfigView-WWQMH36G.js} +1 -1
- package/dist/EvidenceViewOffer-L5FVBQNK.js +2 -0
- package/dist/FolderPicker-6Z3CYSHF.js +2 -0
- package/dist/{HelpView-TU7ED43J.js → HelpView-XXPCPJNF.js} +1 -1
- package/dist/{InfoBox-JLTMKVDE.js → InfoBox-SHBRHQX5.js} +1 -1
- package/dist/{LinksBox-LREUUJDV.js → LinksBox-ENNF7TDJ.js} +1 -1
- package/dist/{ProfilesView-W3GX2N2E.js → ProfilesView-CNF2FXF3.js} +1 -1
- package/dist/{ProjectPicker-SYQUJK2J.js → ProjectPicker-PVPLS642.js} +1 -1
- package/dist/{SaveSessionPrompt-MR5NJMRP.js → SaveSessionPrompt-4QP4GNGO.js} +1 -1
- package/dist/SingleShotApp-M3HNSUMZ.js +2 -0
- package/dist/{SummaryBox-UAYSVFB7.js → SummaryBox-HYNINDNN.js} +1 -1
- package/dist/TestMdRunView-ISOVQ7YP.js +2 -0
- package/dist/{WhoamiView-2YU76ASQ.js → WhoamiView-NN2HOK6H.js} +1 -1
- package/dist/app-client-ZCCNE3RV.js +2 -0
- package/dist/{app-download-AEEFQ63M.js → app-download-5UJMXPF3.js} +1 -1
- package/dist/{auth-HET3TBRI.js → auth-QKBTOWQX.js} +1 -1
- package/dist/{bind-STKXOUYI.js → bind-LVGP5KHO.js} +2 -2
- package/dist/bootstrap-RUJBMB2P.js +2 -0
- package/dist/bridge-QDPBIIOW.js +2 -0
- package/dist/{changelog-7OWRHFHZ.js → changelog-HBPBPR2O.js} +1 -1
- package/dist/{chat-controller-T2FAI55V.js → chat-controller-R4THYYPU.js} +1 -1
- package/dist/chunk-2E3ZWGIK.js +12 -0
- package/dist/{chunk-ZVHCQMJ6.js → chunk-2KH2JUGL.js} +2 -2
- package/dist/{chunk-ZIUAOEUC.js → chunk-2TYCUPCN.js} +1 -1
- package/dist/{chunk-FEJXWJ3L.js → chunk-2ZZDNPFN.js} +1 -1
- package/dist/{chunk-KFSUPQAG.js → chunk-3654GK6O.js} +43 -43
- package/dist/{chunk-RFR4ZKIC.js → chunk-3NHO5R4P.js} +2 -2
- package/dist/{chunk-3LJWYRAA.js → chunk-4II6VDXG.js} +1 -1
- package/dist/chunk-4J6DQFPC.js +4 -0
- package/dist/{chunk-SDPRO2LE.js → chunk-4U4OSOA4.js} +1 -1
- package/dist/chunk-5NIYYD7O.js +2 -0
- package/dist/{chunk-L7MXYCD7.js → chunk-5SNT2MK5.js} +1 -1
- package/dist/chunk-6J5T5FEY.js +2 -0
- package/dist/chunk-6N726QLP.js +349 -0
- package/dist/chunk-7F2ZV46B.js +2 -0
- package/dist/{chunk-BRHNRCEZ.js → chunk-7S3JZ6FQ.js} +1 -1
- package/dist/chunk-A2SQD2AY.js +4 -0
- package/dist/{chunk-AW2XUHH4.js → chunk-AJQT4IWZ.js} +1 -1
- package/dist/{chunk-6XX4LEVJ.js → chunk-AN2ZPHCE.js} +1 -1
- package/dist/{chunk-3POR47RC.js → chunk-ATGRRKEV.js} +2 -2
- package/dist/chunk-AXTPNZPX.js +2 -0
- package/dist/{chunk-RC52N7PC.js → chunk-BKVDAZEJ.js} +1 -1
- package/dist/{chunk-2WVKOZ6W.js → chunk-BPMSNGXQ.js} +1 -1
- package/dist/{chunk-UV462FZR.js → chunk-BSYX225I.js} +1 -1
- package/dist/{chunk-DZGCXKKI.js → chunk-CAMO26QU.js} +1 -1
- package/dist/chunk-ECZMYPLJ.js +19 -0
- package/dist/{chunk-65ZTD5SJ.js → chunk-FNS2EAA5.js} +2 -2
- package/dist/{chunk-7BZSCUPP.js → chunk-GNIFMQNK.js} +3 -3
- package/dist/chunk-GUVM6SZF.js +2 -0
- package/dist/{chunk-2BGUUWNF.js → chunk-HFFPPCZO.js} +2 -2
- package/dist/{chunk-T5Y6MOLM.js → chunk-HRZOFTV7.js} +1 -1
- package/dist/chunk-HWH3UYD6.js +4 -0
- package/dist/{chunk-EDSZJZFG.js → chunk-I7RQS65W.js} +1 -1
- package/dist/chunk-IUEEFGEW.js +11 -0
- package/dist/{chunk-DO5HAO3H.js → chunk-IV76ZXCY.js} +1 -1
- package/dist/{chunk-UXDL4XDL.js → chunk-IZ2FJYHG.js} +1 -1
- package/dist/{chunk-766WGMBU.js → chunk-J7KT44IC.js} +1 -1
- package/dist/{chunk-QW6EZC53.js → chunk-JEDLXUO5.js} +1 -1
- package/dist/chunk-JGOZUAMC.js +2 -0
- package/dist/{chunk-XO5ZH3ZR.js → chunk-JHKM7W5X.js} +1 -1
- package/dist/{chunk-IOFZSQAA.js → chunk-JJN76EXE.js} +1 -1
- package/dist/{chunk-YFYCCTSL.js → chunk-JUVQQP42.js} +1 -1
- package/dist/chunk-KKRNTSLL.js +6 -0
- package/dist/{chunk-IP2O264K.js → chunk-LDCLZR2U.js} +1 -1
- package/dist/chunk-LQQXPY5B.js +4 -0
- package/dist/{chunk-FMRSMN34.js → chunk-LVCY5IYI.js} +1 -1
- package/dist/{chunk-G7VQCS4J.js → chunk-LVN6VHFN.js} +1 -1
- package/dist/chunk-MMBBQ4OZ.js +2 -0
- package/dist/{chunk-QSDH5P7C.js → chunk-MTIC65NK.js} +1 -1
- package/dist/chunk-NHBYZCSX.js +4 -0
- package/dist/{chunk-GZPK6FRP.js → chunk-NRUD56FY.js} +1 -1
- package/dist/{chunk-GKYPNSQP.js → chunk-NXFAEDHV.js} +2 -2
- package/dist/{chunk-ELM6MXGJ.js → chunk-NXXJ56QA.js} +1 -1
- package/dist/{chunk-JJHG3BWO.js → chunk-O3AHFP3K.js} +1 -1
- package/dist/{chunk-FQLIW3LM.js → chunk-OAVPM6YJ.js} +1 -1
- package/dist/{chunk-QRZRSAZH.js → chunk-OJTCIZDK.js} +1 -1
- package/dist/{chunk-YJELGSKJ.js → chunk-OOEPLMKA.js} +1 -1
- package/dist/{chunk-6O3DDOP2.js → chunk-PXCMEI73.js} +1 -1
- package/dist/{chunk-C7HSWZP6.js → chunk-R4UCBA5R.js} +1 -1
- package/dist/chunk-RKXHVP2Z.js +2 -0
- package/dist/{chunk-KU6IXFGZ.js → chunk-RN4PKQFR.js} +1 -1
- package/dist/chunk-RUCSRS4C.js +5 -0
- package/dist/chunk-TAOHYWEO.js +2 -0
- package/dist/{chunk-TFPPEOAK.js → chunk-U5GHOGLM.js} +1 -1
- package/dist/chunk-UJZZDPDY.js +2 -0
- package/dist/{chunk-EWCAFKLX.js → chunk-UODLRQQ4.js} +1 -1
- package/dist/chunk-VK3NU742.js +21 -0
- package/dist/{chunk-DCY6R5DP.js → chunk-VPRNGWIY.js} +1 -1
- package/dist/{chunk-NX7TM662.js → chunk-WOEQDUJ6.js} +1 -1
- package/dist/{chunk-OMQCD3KR.js → chunk-WQPQNL4S.js} +1 -1
- package/dist/{chunk-HMYMSRA4.js → chunk-WV27D55O.js} +1 -1
- package/dist/{chunk-GCBKDX2J.js → chunk-WVCH66YH.js} +1 -1
- package/dist/{chunk-7JWKHKFU.js → chunk-YCLG3T5E.js} +1 -1
- package/dist/chunk-YGMC3FGJ.js +26 -0
- package/dist/{chunk-TKGUT425.js → chunk-YHYTCENI.js} +1 -1
- package/dist/{chunk-UDIQOJEL.js → chunk-YSSYT5F5.js} +1 -1
- package/dist/{chunk-OTTGS2TE.js → chunk-YTDSQAYN.js} +1 -1
- package/dist/{chunk-HCKH44I2.js → chunk-ZEDAPY7M.js} +1 -1
- package/dist/chunk-ZI6UIJUN.js +11 -0
- package/dist/{config-RS47F5SC.js → config-RLDXM5ZH.js} +1 -1
- package/dist/{credentials-OH6AVI6N.js → credentials-CALNKQMN.js} +1 -1
- package/dist/deps-bundle-GVHIMZ5E.js +2 -0
- package/dist/{deps-resolve-XC5S53DG.js → deps-resolve-T6P4EACP.js} +1 -1
- package/dist/{dispatch-SE5GY3Z2.js → dispatch-ECUEAMXS.js} +1 -1
- package/dist/doctor-SIBHJVGC.js +2 -0
- package/dist/evidence-ZVQHPELX.js +2 -0
- package/dist/evolve-cmd-JGCFTXWA.js +2 -0
- package/dist/extract-bind-EXW32RUY.js +10 -0
- package/dist/{extract-cmd-UZMEZMGP.js → extract-cmd-7IOLJJCL.js} +1 -1
- package/dist/gaps-cmd-WPCJPLGB.js +3 -0
- package/dist/{generate-headless-D3SVQ2AI.js → generate-headless-U4GTG234.js} +2 -2
- package/dist/index.js +61 -60
- package/dist/{ingest-cmd-EAE7N5RC.js → ingest-cmd-YYNAKI2U.js} +1 -1
- package/dist/interactive-bind-Y65XV4Y5.js +25 -0
- package/dist/{list-commands-MRXL5HGS.js → list-commands-3EROWJWV.js} +1 -1
- package/dist/login-flow-TRINUSBB.js +2 -0
- package/dist/mobile-prompts-TP3ODM5M.js +2 -0
- package/dist/{persist-recorded-session-TLDQ5HKP.js → persist-recorded-session-EHYT3PVN.js} +1 -1
- package/dist/{phase-seed-VFHIH6FL.js → phase-seed-DIRETNU6.js} +1 -1
- package/dist/{pipeline-UOM4LNAI.js → pipeline-5GOS2KV2.js} +1 -1
- package/dist/prepare-target-BUEOZVJV.js +2 -0
- package/dist/reconcile-cmd-TY3MWZL3.js +2 -0
- package/dist/reconcile-deps-6KTJHBMJ.js +4 -0
- package/dist/reconcile-engine-O7QEZVX6.js +2 -0
- package/dist/{recording-banner-4M7XHVGI.js → recording-banner-BWWFOJCR.js} +1 -1
- package/dist/registry-KXEDLM6X.js +2 -0
- package/dist/{require-project-folder-4UPQNEBJ.js → require-project-folder-CXDRRWEQ.js} +1 -1
- package/dist/resolve-run-intent-PZXEQTHC.js +7 -0
- package/dist/{resolver-UBOZLFFE.js → resolver-FTU5KO7H.js} +1 -1
- package/dist/{run-URPGHOQM.js → run-CMFBSYWF.js} +1 -1
- package/dist/run-WKHPVWUN.js +2 -0
- package/dist/{run-test-md-76ZPKXO6.js → run-test-md-7HGOZJSU.js} +2 -2
- package/dist/session-items-2ATN7VXG.js +2 -0
- package/dist/{skill-installer-CIS6GAYF.js → skill-installer-QNUDLGPD.js} +1 -1
- package/dist/{spawner-J67QR4QP.js → spawner-DQZRJIE6.js} +1 -1
- package/dist/tcg-generate-XKSTMCOG.js +2 -0
- package/dist/{testmd-actions-77ELR5UU.js → testmd-actions-IFRW7NGG.js} +1 -1
- package/dist/{tms-client-VD3B3SMU.js → tms-client-V3TR4QW3.js} +1 -1
- package/dist/token-refresh-FP6JFLXB.js +2 -0
- package/dist/{validate-basic-2GVSQ2R5.js → validate-basic-3CNUDDH7.js} +1 -1
- package/dist/{verdicts-TRSTJLCL.js → verdicts-NYCSBWUC.js} +1 -1
- package/dist/{version-check-O6PYTI4T.js → version-check-7TSAVA6V.js} +1 -1
- package/dist/walk-session-AINBHZKB.js +2 -0
- package/dist/with-telemetry-3DL7ZEZL.js +2 -0
- package/package.json +11 -11
- package/dist/ChatSurface-U37VZDCW.js +0 -8
- package/dist/EvidenceViewOffer-62XHEEGW.js +0 -2
- package/dist/FolderPicker-S7U2EN2M.js +0 -2
- package/dist/SingleShotApp-XOKVOM7C.js +0 -2
- package/dist/TestMdRunView-7UVSDAF4.js +0 -2
- package/dist/app-client-OEXESV4U.js +0 -2
- package/dist/bootstrap-44YKVWWE.js +0 -2
- package/dist/bridge-5Z3BIB77.js +0 -2
- package/dist/chunk-27U4PLPX.js +0 -2
- package/dist/chunk-2KDGIZED.js +0 -4
- package/dist/chunk-3PECJD6S.js +0 -11
- package/dist/chunk-7Q6M6P4X.js +0 -26
- package/dist/chunk-CTW2VQKS.js +0 -6
- package/dist/chunk-FNH55WSR.js +0 -19
- package/dist/chunk-GPG3FIN3.js +0 -21
- package/dist/chunk-HEAIJCGZ.js +0 -2
- package/dist/chunk-KCCSWEGA.js +0 -4
- package/dist/chunk-MA34UWKX.js +0 -4
- package/dist/chunk-MBF3FP5P.js +0 -5
- package/dist/chunk-MXHHMIO2.js +0 -349
- package/dist/chunk-QGKPLOUI.js +0 -2
- package/dist/chunk-RLRNLIRS.js +0 -2
- package/dist/chunk-TYLYFERW.js +0 -10
- package/dist/chunk-V2R3LCA3.js +0 -12
- package/dist/chunk-VGFTNLQQ.js +0 -2
- package/dist/chunk-W2JFDDIB.js +0 -2
- package/dist/chunk-YRFMPIU2.js +0 -4
- package/dist/doctor-FSECFZUU.js +0 -2
- package/dist/evidence-OYPHZUKI.js +0 -2
- package/dist/evolve-cmd-BCPNXAMV.js +0 -2
- package/dist/extract-bind-LLEASZAK.js +0 -10
- package/dist/gaps-cmd-IVXFPFAQ.js +0 -3
- package/dist/interactive-bind-ORMN2REX.js +0 -25
- package/dist/login-flow-QJQM3RHT.js +0 -2
- package/dist/mobile-prompts-TOX35ER6.js +0 -2
- package/dist/prepare-target-QYWIJIVQ.js +0 -2
- package/dist/reconcile-cmd-3H34KVVD.js +0 -2
- package/dist/reconcile-deps-XIH75ZLY.js +0 -4
- package/dist/reconcile-engine-UKWPG2LV.js +0 -2
- package/dist/registry-PYOTKZYZ.js +0 -2
- package/dist/resolve-run-intent-X72V3KJA.js +0 -7
- package/dist/run-2COODVX2.js +0 -2
- package/dist/tcg-generate-BDTRKY2A.js +0 -2
- package/dist/token-refresh-4BPAPXKK.js +0 -2
- package/dist/walk-session-CHJXHZMO.js +0 -2
- package/dist/with-telemetry-CQCWLVOC.js +0 -2
- /package/dist/{lifecycle-cmd-O2324GN6.js → lifecycle-cmd-HO5VL7AM.js} +0 -0
package/dist/chunk-7Q6M6P4X.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as ci,b as Os}from"./chunk-3MSXQU2C.js";import{a as oa,b as ia,c as sa,d as La,e as Da}from"./chunk-6XX4LEVJ.js";import{a as xc}from"./chunk-DCY6R5DP.js";import{a as rc,b as Ti,c as Jn,d as nc,e as Qn,f as oc,h as ic,i as sc,j as ac,k as cc,l as lc,m as jt,n as uc,o as dc,p as fc,q as Zn,r as pc,s as Ri,t as mc,u as gc,v as hc}from"./chunk-7JWKHKFU.js";import{b as bc,c as vc}from"./chunk-3LJWYRAA.js";import{a as yc,b as ki}from"./chunk-C7HSWZP6.js";import{a as Yn}from"./chunk-JJHG3BWO.js";import{A as Ja,B as Qa,E as Nt,H as ec,a as rn,b as aa,c as ca,e as pa,f as ma,g as ga,h as ka,i as Ca,j as Ea,k as zn,l as _a,n as yi,o as Ua,p as Si,r as qa,s as Ha,t as Ga,u as Wa,v as Xa,w as za,x as Ka,y as wi,z as Ya}from"./chunk-KFSUPQAG.js";import{c as Za}from"./chunk-MBF3FP5P.js";import{c as Oa,d as Ma,n as tc}from"./chunk-GKYPNSQP.js";import{b as $a,t as Na}from"./chunk-GPG3FIN3.js";import{a as Ra}from"./chunk-YFYCCTSL.js";import{D as va,J as xa,K as vi,L as ya,M as Sa,P as wa,R as Ta}from"./chunk-ZVHCQMJ6.js";import{a as Ms,b as li,c as ar,d as Un,e as Ia,f as Aa}from"./chunk-3PECJD6S.js";import{a as Pa}from"./chunk-IOFZSQAA.js";import{c as Xn}from"./chunk-HMYMSRA4.js";import{a as Vs,b as fi,c as Fs,d as ba,e as Ba,g as ja}from"./chunk-ZIUAOEUC.js";import{e as ha}from"./chunk-CTW2VQKS.js";import{a as Or}from"./chunk-T5Y6MOLM.js";import{a as Kn,b as Va,c as xi}from"./chunk-UV462FZR.js";import{a as ui}from"./chunk-5Y2G4NC7.js";import{c as Fa}from"./chunk-TKGUT425.js";import{a as fa}from"./chunk-OTTGS2TE.js";import{b as Br}from"./chunk-QRZRSAZH.js";import{b as $r}from"./chunk-UXDL4XDL.js";import{h as ua}from"./chunk-DZGCXKKI.js";import{a as nn}from"./chunk-2WVKOZ6W.js";import{a as Rt,b as Pt,c as la}from"./chunk-VE3SUJMA.js";import{a as da}from"./chunk-FMRSMN34.js";import{a as bi,b as Zs,e as ea,f as ta,g as ra,h as na}from"./chunk-QGKPLOUI.js";import{c as Ws,e as Xs,g as zs}from"./chunk-2KDGIZED.js";import{a as Hn,d as Zr,e as Gn}from"./chunk-FNH55WSR.js";import{c as hi}from"./chunk-TYLYFERW.js";import{d as qs}from"./chunk-MSGW4JDG.js";import{a as Wn,b as cr}from"./chunk-TZXXJWHA.js";import{i as Ks,m as Mt,n as en,o as lr,p as Dr}from"./chunk-56PAQAX5.js";import{a as Js,b as tn,c as Qs}from"./chunk-AW2XUHH4.js";import{g as Ys}from"./chunk-HEAIJCGZ.js";import{b as pi}from"./chunk-NX7TM662.js";import{c as mi}from"./chunk-RC52N7PC.js";import{a as Ot}from"./chunk-TFPPEOAK.js";import{a as qn,b as Lr}from"./chunk-BRIEBB2U.js";import{a as Gs}from"./chunk-XO5ZH3ZR.js";import{a as Hs}from"./chunk-766WGMBU.js";import{a as Ne}from"./chunk-G7VQCS4J.js";import{a as gi}from"./chunk-NLCCBXXV.js";import{a as Us}from"./chunk-RZ4F3BHX.js";import{a as Bs,d as yr,e as Qr}from"./chunk-EYOCNMUM.js";import{a as Fn}from"./chunk-6O3DDOP2.js";import{a as di}from"./chunk-UDIQOJEL.js";import{a as zt,b as Ns}from"./chunk-FEJXWJ3L.js";import{a as at,c as pt,k as si,o as $s,p as ai,y as l}from"./chunk-27U4PLPX.js";import{b as js}from"./chunk-DFS4RMVP.js";import{a as G}from"./chunk-HCBYKLMW.js";import{a as v,b as a,i as Be,j as Ds,k as Pr}from"./chunk-C44QQJR4.js";import{a as Ee}from"./chunk-6YGTRKDT.js";import{c as ee,e as L}from"./chunk-UR6MHSHU.js";var Nr=ee((uv,Tc)=>{"use strict";var Kf="2.0.0",Yf=Number.MAX_SAFE_INTEGER||9007199254740991,Jf=16,Qf=250,Zf=["major","premajor","minor","preminor","patch","prepatch","prerelease"];Tc.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:Jf,MAX_SAFE_BUILD_LENGTH:Qf,MAX_SAFE_INTEGER:Yf,RELEASE_TYPES:Zf,SEMVER_SPEC_VERSION:Kf,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var on=ee((dv,Rc)=>{"use strict";var ep=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};Rc.exports=ep});var jr=ee((Vt,kc)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:Ci,MAX_SAFE_BUILD_LENGTH:tp,MAX_LENGTH:rp}=Nr(),np=on();Vt=kc.exports={};var op=Vt.re=[],ip=Vt.safeRe=[],W=Vt.src=[],sp=Vt.safeSrc=[],X=Vt.t={},ap=0,Ei="[a-zA-Z0-9-]",cp=[["\\s",1],["\\d",rp],[Ei,tp]],lp=e=>{for(let[t,r]of cp)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},se=(e,t,r)=>{let n=lp(t),o=ap++;np(e,o,t),X[e]=o,W[o]=t,sp[o]=n,op[o]=new RegExp(t,r?"g":void 0),ip[o]=new RegExp(n,r?"g":void 0)};se("NUMERICIDENTIFIER","0|[1-9]\\d*");se("NUMERICIDENTIFIERLOOSE","\\d+");se("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${Ei}*`);se("MAINVERSION",`(${W[X.NUMERICIDENTIFIER]})\\.(${W[X.NUMERICIDENTIFIER]})\\.(${W[X.NUMERICIDENTIFIER]})`);se("MAINVERSIONLOOSE",`(${W[X.NUMERICIDENTIFIERLOOSE]})\\.(${W[X.NUMERICIDENTIFIERLOOSE]})\\.(${W[X.NUMERICIDENTIFIERLOOSE]})`);se("PRERELEASEIDENTIFIER",`(?:${W[X.NONNUMERICIDENTIFIER]}|${W[X.NUMERICIDENTIFIER]})`);se("PRERELEASEIDENTIFIERLOOSE",`(?:${W[X.NONNUMERICIDENTIFIER]}|${W[X.NUMERICIDENTIFIERLOOSE]})`);se("PRERELEASE",`(?:-(${W[X.PRERELEASEIDENTIFIER]}(?:\\.${W[X.PRERELEASEIDENTIFIER]})*))`);se("PRERELEASELOOSE",`(?:-?(${W[X.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${W[X.PRERELEASEIDENTIFIERLOOSE]})*))`);se("BUILDIDENTIFIER",`${Ei}+`);se("BUILD",`(?:\\+(${W[X.BUILDIDENTIFIER]}(?:\\.${W[X.BUILDIDENTIFIER]})*))`);se("FULLPLAIN",`v?${W[X.MAINVERSION]}${W[X.PRERELEASE]}?${W[X.BUILD]}?`);se("FULL",`^${W[X.FULLPLAIN]}$`);se("LOOSEPLAIN",`[v=\\s]*${W[X.MAINVERSIONLOOSE]}${W[X.PRERELEASELOOSE]}?${W[X.BUILD]}?`);se("LOOSE",`^${W[X.LOOSEPLAIN]}$`);se("GTLT","((?:<|>)?=?)");se("XRANGEIDENTIFIERLOOSE",`${W[X.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);se("XRANGEIDENTIFIER",`${W[X.NUMERICIDENTIFIER]}|x|X|\\*`);se("XRANGEPLAIN",`[v=\\s]*(${W[X.XRANGEIDENTIFIER]})(?:\\.(${W[X.XRANGEIDENTIFIER]})(?:\\.(${W[X.XRANGEIDENTIFIER]})(?:${W[X.PRERELEASE]})?${W[X.BUILD]}?)?)?`);se("XRANGEPLAINLOOSE",`[v=\\s]*(${W[X.XRANGEIDENTIFIERLOOSE]})(?:\\.(${W[X.XRANGEIDENTIFIERLOOSE]})(?:\\.(${W[X.XRANGEIDENTIFIERLOOSE]})(?:${W[X.PRERELEASELOOSE]})?${W[X.BUILD]}?)?)?`);se("XRANGE",`^${W[X.GTLT]}\\s*${W[X.XRANGEPLAIN]}$`);se("XRANGELOOSE",`^${W[X.GTLT]}\\s*${W[X.XRANGEPLAINLOOSE]}$`);se("COERCEPLAIN",`(^|[^\\d])(\\d{1,${Ci}})(?:\\.(\\d{1,${Ci}}))?(?:\\.(\\d{1,${Ci}}))?`);se("COERCE",`${W[X.COERCEPLAIN]}(?:$|[^\\d])`);se("COERCEFULL",W[X.COERCEPLAIN]+`(?:${W[X.PRERELEASE]})?(?:${W[X.BUILD]})?(?:$|[^\\d])`);se("COERCERTL",W[X.COERCE],!0);se("COERCERTLFULL",W[X.COERCEFULL],!0);se("LONETILDE","(?:~>?)");se("TILDETRIM",`(\\s*)${W[X.LONETILDE]}\\s+`,!0);Vt.tildeTrimReplace="$1~";se("TILDE",`^${W[X.LONETILDE]}${W[X.XRANGEPLAIN]}$`);se("TILDELOOSE",`^${W[X.LONETILDE]}${W[X.XRANGEPLAINLOOSE]}$`);se("LONECARET","(?:\\^)");se("CARETTRIM",`(\\s*)${W[X.LONECARET]}\\s+`,!0);Vt.caretTrimReplace="$1^";se("CARET",`^${W[X.LONECARET]}${W[X.XRANGEPLAIN]}$`);se("CARETLOOSE",`^${W[X.LONECARET]}${W[X.XRANGEPLAINLOOSE]}$`);se("COMPARATORLOOSE",`^${W[X.GTLT]}\\s*(${W[X.LOOSEPLAIN]})$|^$`);se("COMPARATOR",`^${W[X.GTLT]}\\s*(${W[X.FULLPLAIN]})$|^$`);se("COMPARATORTRIM",`(\\s*)${W[X.GTLT]}\\s*(${W[X.LOOSEPLAIN]}|${W[X.XRANGEPLAIN]})`,!0);Vt.comparatorTrimReplace="$1$2$3";se("HYPHENRANGE",`^\\s*(${W[X.XRANGEPLAIN]})\\s+-\\s+(${W[X.XRANGEPLAIN]})\\s*$`);se("HYPHENRANGELOOSE",`^\\s*(${W[X.XRANGEPLAINLOOSE]})\\s+-\\s+(${W[X.XRANGEPLAINLOOSE]})\\s*$`);se("STAR","(<|>)?=?\\s*\\*");se("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");se("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var eo=ee((fv,Cc)=>{"use strict";var up=Object.freeze({loose:!0}),dp=Object.freeze({}),fp=e=>e?typeof e!="object"?up:e:dp;Cc.exports=fp});var Ii=ee((pv,Ac)=>{"use strict";var Ec=/^[0-9]+$/,Ic=(e,t)=>{if(typeof e=="number"&&typeof t=="number")return e===t?0:e<t?-1:1;let r=Ec.test(e),n=Ec.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1},pp=(e,t)=>Ic(t,e);Ac.exports={compareIdentifiers:Ic,rcompareIdentifiers:pp}});var Ze=ee((mv,Pc)=>{"use strict";var to=on(),{MAX_LENGTH:_c,MAX_SAFE_INTEGER:ro}=Nr(),{safeRe:no,t:oo}=jr(),mp=eo(),{compareIdentifiers:Ai}=Ii(),gp=(e,t)=>{let r=t.split(".");if(r.length>e.length)return!1;for(let n=0;n<r.length;n++)if(Ai(e[n],r[n])!==0)return!1;return!0},_i=class e{constructor(t,r){if(r=mp(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>_c)throw new TypeError(`version is longer than ${_c} characters`);to("SemVer",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=t.trim().match(r.loose?no[oo.LOOSE]:no[oo.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>ro||this.major<0)throw new TypeError("Invalid major version");if(this.minor>ro||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>ro||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<ro)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(to("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(to("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 Ai(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(to("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 Ai(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?no[oo.PRERELEASELOOSE]:no[oo.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]),gp(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}};Pc.exports=_i});var ur=ee((gv,Dc)=>{"use strict";var Lc=Ze(),hp=(e,t,r=!1)=>{if(e instanceof Lc)return e;try{return new Lc(e,t)}catch(n){if(!r)return null;throw n}};Dc.exports=hp});var $c=ee((hv,Bc)=>{"use strict";var bp=ur(),vp=(e,t)=>{let r=bp(e,t);return r?r.version:null};Bc.exports=vp});var Mc=ee((bv,Oc)=>{"use strict";var xp=ur(),yp=(e,t)=>{let r=xp(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null};Oc.exports=yp});var Vc=ee((vv,jc)=>{"use strict";var Nc=Ze(),Sp=(e,t,r,n,o)=>{typeof r=="string"&&(o=n,n=r,r=void 0);try{return new Nc(e instanceof Nc?e.version:e,r).inc(t,n,o).version}catch{return null}};jc.exports=Sp});var qc=ee((xv,Uc)=>{"use strict";var Fc=ur(),wp=(e,t)=>{let r=Fc(e,null,!0),n=Fc(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"};Uc.exports=wp});var Gc=ee((yv,Hc)=>{"use strict";var Tp=Ze(),Rp=(e,t)=>new Tp(e,t).major;Hc.exports=Rp});var Xc=ee((Sv,Wc)=>{"use strict";var kp=Ze(),Cp=(e,t)=>new kp(e,t).minor;Wc.exports=Cp});var Kc=ee((wv,zc)=>{"use strict";var Ep=Ze(),Ip=(e,t)=>new Ep(e,t).patch;zc.exports=Ip});var Jc=ee((Tv,Yc)=>{"use strict";var Ap=ur(),_p=(e,t)=>{let r=Ap(e,t);return r&&r.prerelease.length?r.prerelease:null};Yc.exports=_p});var kt=ee((Rv,Zc)=>{"use strict";var Qc=Ze(),Pp=(e,t,r)=>new Qc(e,r).compare(new Qc(t,r));Zc.exports=Pp});var tl=ee((kv,el)=>{"use strict";var Lp=kt(),Dp=(e,t,r)=>Lp(t,e,r);el.exports=Dp});var nl=ee((Cv,rl)=>{"use strict";var Bp=kt(),$p=(e,t)=>Bp(e,t,!0);rl.exports=$p});var io=ee((Ev,il)=>{"use strict";var ol=Ze(),Op=(e,t,r)=>{let n=new ol(e,r),o=new ol(t,r);return n.compare(o)||n.compareBuild(o)};il.exports=Op});var al=ee((Iv,sl)=>{"use strict";var Mp=io(),Np=(e,t)=>e.sort((r,n)=>Mp(r,n,t));sl.exports=Np});var ll=ee((Av,cl)=>{"use strict";var jp=io(),Vp=(e,t)=>e.sort((r,n)=>jp(n,r,t));cl.exports=Vp});var sn=ee((_v,ul)=>{"use strict";var Fp=kt(),Up=(e,t,r)=>Fp(e,t,r)>0;ul.exports=Up});var so=ee((Pv,dl)=>{"use strict";var qp=kt(),Hp=(e,t,r)=>qp(e,t,r)<0;dl.exports=Hp});var Pi=ee((Lv,fl)=>{"use strict";var Gp=kt(),Wp=(e,t,r)=>Gp(e,t,r)===0;fl.exports=Wp});var Li=ee((Dv,pl)=>{"use strict";var Xp=kt(),zp=(e,t,r)=>Xp(e,t,r)!==0;pl.exports=zp});var ao=ee((Bv,ml)=>{"use strict";var Kp=kt(),Yp=(e,t,r)=>Kp(e,t,r)>=0;ml.exports=Yp});var co=ee(($v,gl)=>{"use strict";var Jp=kt(),Qp=(e,t,r)=>Jp(e,t,r)<=0;gl.exports=Qp});var Di=ee((Ov,hl)=>{"use strict";var Zp=Pi(),em=Li(),tm=sn(),rm=ao(),nm=so(),om=co(),im=(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 Zp(e,r,n);case"!=":return em(e,r,n);case">":return tm(e,r,n);case">=":return rm(e,r,n);case"<":return nm(e,r,n);case"<=":return om(e,r,n);default:throw new TypeError(`Invalid operator: ${t}`)}};hl.exports=im});var vl=ee((Mv,bl)=>{"use strict";var sm=Ze(),am=ur(),{safeRe:lo,t:uo}=jr(),cm=(e,t)=>{if(e instanceof sm)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?lo[uo.COERCEFULL]:lo[uo.COERCE]);else{let f=t.includePrerelease?lo[uo.COERCERTLFULL]:lo[uo.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 am(`${n}.${o}.${i}${s}${u}`,t)};bl.exports=cm});var yl=ee((Nv,xl)=>{"use strict";var lm=ur(),um=Nr(),dm=Ze(),fm=(e,t,r)=>{if(!um.RELEASE_TYPES.includes(t))return null;let n=pm(e,r);return n&&mm(n,t)},pm=(e,t)=>{let r=e instanceof dm?e.version:e;return lm(r,t)},mm=(e,t)=>{if(gm(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()},gm=e=>e.startsWith("pre");xl.exports=fm});var wl=ee((jv,Sl)=>{"use strict";var Bi=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}};Sl.exports=Bi});var Ct=ee((Vv,Cl)=>{"use strict";var hm=/\s+/g,$i=class e{constructor(t,r){if(r=vm(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof Oi)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(hm," "),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=>!Rl(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&&Em(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(Cm,"");let n=((this.options.includePrerelease&&Rm)|(this.options.loose&&km))+":"+t,o=Tl.get(n);if(o)return o;let i=this.options.loose,s=i?mt[et.HYPHENRANGELOOSE]:mt[et.HYPHENRANGE];t=t.replace(s,Nm(this.options.includePrerelease)),Le("hyphen replace",t),t=t.replace(mt[et.COMPARATORTRIM],Sm),Le("comparator trim",t),t=t.replace(mt[et.TILDETRIM],wm),Le("tilde trim",t),t=t.replace(mt[et.CARETTRIM],Tm),Le("caret trim",t);let u=t.split(" ").map(p=>Im(p,this.options)).join(" ").split(/\s+/).map(p=>Mm(p,this.options));i&&(u=u.filter(p=>(Le("loose invalid filter",p,this.options),!!p.match(mt[et.COMPARATORLOOSE])))),Le("range list",u);let f=new Map,g=u.map(p=>new Oi(p,this.options));for(let p of g){if(Rl(p))return[p];f.set(p.value,p)}f.size>1&&f.has("")&&f.delete("");let w=[...f.values()];return Tl.set(n,w),w}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(n=>kl(n,r)&&t.set.some(o=>kl(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 xm(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(jm(this.set[r],t,this.options))return!0;return!1}};Cl.exports=$i;var bm=wl(),Tl=new bm,vm=eo(),Oi=an(),Le=on(),xm=Ze(),{safeRe:mt,src:ym,t:et,comparatorTrimReplace:Sm,tildeTrimReplace:wm,caretTrimReplace:Tm}=jr(),{FLAG_INCLUDE_PRERELEASE:Rm,FLAG_LOOSE:km}=Nr(),Cm=new RegExp(ym[et.BUILD],"g"),Rl=e=>e.value==="<0.0.0-0",Em=e=>e.value==="",kl=(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},Im=(e,t)=>(e=e.replace(mt[et.BUILD],""),Le("comp",e,t),e=Lm(e,t),Le("caret",e),e=_m(e,t),Le("tildes",e),e=Bm(e,t),Le("xrange",e),e=Om(e,t),Le("stars",e),e),Ue=e=>!e||e.toLowerCase()==="x"||e==="*",Am=(e,t,r)=>Ue(e)&&!Ue(t)||Ue(t)&&r&&!Ue(r),_m=(e,t)=>e.trim().split(/\s+/).map(r=>Pm(r,t)).join(" "),Pm=(e,t)=>{let r=t.loose?mt[et.TILDELOOSE]:mt[et.TILDE];return e.replace(r,(n,o,i,s,u)=>{Le("tilde",e,n,o,i,s,u);let f;return Ue(o)?f="":Ue(i)?f=`>=${o}.0.0 <${+o+1}.0.0-0`:Ue(s)?f=`>=${o}.${i}.0 <${o}.${+i+1}.0-0`:u?(Le("replaceTilde pr",u),f=`>=${o}.${i}.${s}-${u} <${o}.${+i+1}.0-0`):f=`>=${o}.${i}.${s} <${o}.${+i+1}.0-0`,Le("tilde return",f),f})},Lm=(e,t)=>e.trim().split(/\s+/).map(r=>Dm(r,t)).join(" "),Dm=(e,t)=>{Le("caret",e,t);let r=t.loose?mt[et.CARETLOOSE]:mt[et.CARET],n=t.includePrerelease?"-0":"";return e.replace(r,(o,i,s,u,f)=>{Le("caret",e,o,i,s,u,f);let g;return Ue(i)?g="":Ue(s)?g=`>=${i}.0.0${n} <${+i+1}.0.0-0`:Ue(u)?i==="0"?g=`>=${i}.${s}.0${n} <${i}.${+s+1}.0-0`:g=`>=${i}.${s}.0${n} <${+i+1}.0.0-0`:f?(Le("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`):(Le("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`),Le("caret return",g),g})},Bm=(e,t)=>(Le("replaceXRanges",e,t),e.split(/\s+/).map(r=>$m(r,t)).join(" ")),$m=(e,t)=>{e=e.trim();let r=t.loose?mt[et.XRANGELOOSE]:mt[et.XRANGE];return e.replace(r,(n,o,i,s,u,f)=>{if(Le("xRange",e,n,o,i,s,u,f),Am(i,s,u))return e;let g=Ue(i),w=g||Ue(s),p=w||Ue(u),x=p;return o==="="&&x&&(o=""),f=t.includePrerelease?"-0":"",g?o===">"||o==="<"?n="<0.0.0-0":n="*":o&&x?(w&&(s=0),u=0,o===">"?(o=">=",w?(i=+i+1,s=0,u=0):(s=+s+1,u=0)):o==="<="&&(o="<",w?i=+i+1:s=+s+1),o==="<"&&(f="-0"),n=`${o+i}.${s}.${u}${f}`):w?n=`>=${i}.0.0${f} <${+i+1}.0.0-0`:p&&(n=`>=${i}.${s}.0${f} <${i}.${+s+1}.0-0`),Le("xRange return",n),n})},Om=(e,t)=>(Le("replaceStars",e,t),e.trim().replace(mt[et.STAR],"")),Mm=(e,t)=>(Le("replaceGTE0",e,t),e.trim().replace(mt[t.includePrerelease?et.GTE0PRE:et.GTE0],"")),Nm=e=>(t,r,n,o,i,s,u,f,g,w,p,x)=>(Ue(n)?r="":Ue(o)?r=`>=${n}.0.0${e?"-0":""}`:Ue(i)?r=`>=${n}.${o}.0${e?"-0":""}`:s?r=`>=${r}`:r=`>=${r}${e?"-0":""}`,Ue(g)?f="":Ue(w)?f=`<${+g+1}.0.0-0`:Ue(p)?f=`<${g}.${+w+1}.0-0`:x?f=`<=${g}.${w}.${p}-${x}`:e?f=`<${g}.${w}.${+p+1}-0`:f=`<=${f}`,`${r} ${f}`.trim()),jm=(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(Le(e[n].semver),e[n].semver!==Oi.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 an=ee((Fv,Ll)=>{"use strict";var cn=Symbol("SemVer ANY"),ji=class e{static get ANY(){return cn}constructor(t,r){if(r=El(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),Ni("comparator",t,r),this.options=r,this.loose=!!r.loose,this.parse(t),this.semver===cn?this.value="":this.value=this.operator+this.semver.version,Ni("comp",this)}parse(t){let r=this.options.loose?Il[Al.COMPARATORLOOSE]:Il[Al.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 _l(n[2],this.options.loose):this.semver=cn}toString(){return this.value}test(t){if(Ni("Comparator.test",t,this.options.loose),this.semver===cn||t===cn)return!0;if(typeof t=="string")try{t=new _l(t,this.options)}catch{return!1}return Mi(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 Pl(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new Pl(this.value,r).test(t.semver):(r=El(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("=")||Mi(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||Mi(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};Ll.exports=ji;var El=eo(),{safeRe:Il,t:Al}=jr(),Mi=Di(),Ni=on(),_l=Ze(),Pl=Ct()});var ln=ee((Uv,Dl)=>{"use strict";var Vm=Ct(),Fm=(e,t,r)=>{try{t=new Vm(t,r)}catch{return!1}return t.test(e)};Dl.exports=Fm});var $l=ee((qv,Bl)=>{"use strict";var Um=Ct(),qm=(e,t)=>new Um(e,t).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));Bl.exports=qm});var Ml=ee((Hv,Ol)=>{"use strict";var Hm=Ze(),Gm=Ct(),Wm=(e,t,r)=>{let n=null,o=null,i=null;try{i=new Gm(t,r)}catch{return null}return e.forEach(s=>{i.test(s)&&(!n||o.compare(s)===-1)&&(n=s,o=new Hm(n,r))}),n};Ol.exports=Wm});var jl=ee((Gv,Nl)=>{"use strict";var Xm=Ze(),zm=Ct(),Km=(e,t,r)=>{let n=null,o=null,i=null;try{i=new zm(t,r)}catch{return null}return e.forEach(s=>{i.test(s)&&(!n||o.compare(s)===1)&&(n=s,o=new Xm(n,r))}),n};Nl.exports=Km});var Ul=ee((Wv,Fl)=>{"use strict";var Vi=Ze(),Ym=Ct(),Vl=sn(),Jm=(e,t)=>{e=new Ym(e,t);let r=new Vi("0.0.0");if(e.test(r)||(r=new Vi("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 Vi(s.semver.version);switch(s.operator){case">":u.prerelease.length===0?u.patch++:u.prerelease.push(0),u.raw=u.format();case"":case">=":(!i||Vl(u,i))&&(i=u);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${s.operator}`)}}),i&&(!r||Vl(r,i))&&(r=i)}return r&&e.test(r)?r:null};Fl.exports=Jm});var Hl=ee((Xv,ql)=>{"use strict";var Qm=Ct(),Zm=(e,t)=>{try{return new Qm(e,t).range||"*"}catch{return null}};ql.exports=Zm});var fo=ee((zv,zl)=>{"use strict";var eg=Ze(),Xl=an(),{ANY:tg}=Xl,rg=Ct(),ng=ln(),Gl=sn(),Wl=so(),og=co(),ig=ao(),sg=(e,t,r,n)=>{e=new eg(e,n),t=new rg(t,n);let o,i,s,u,f;switch(r){case">":o=Gl,i=og,s=Wl,u=">",f=">=";break;case"<":o=Wl,i=ig,s=Gl,u="<",f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ng(e,t,n))return!1;for(let g=0;g<t.set.length;++g){let w=t.set[g],p=null,x=null;if(w.forEach(c=>{c.semver===tg&&(c=new Xl(">=0.0.0")),p=p||c,x=x||c,o(c.semver,p.semver,n)?p=c:s(c.semver,x.semver,n)&&(x=c)}),p.operator===u||p.operator===f||(!x.operator||x.operator===u)&&i(e,x.semver))return!1;if(x.operator===f&&s(e,x.semver))return!1}return!0};zl.exports=sg});var Yl=ee((Kv,Kl)=>{"use strict";var ag=fo(),cg=(e,t,r)=>ag(e,t,">",r);Kl.exports=cg});var Ql=ee((Yv,Jl)=>{"use strict";var lg=fo(),ug=(e,t,r)=>lg(e,t,"<",r);Jl.exports=ug});var tu=ee((Jv,eu)=>{"use strict";var Zl=Ct(),dg=(e,t,r)=>(e=new Zl(e,r),t=new Zl(t,r),e.intersects(t,r));eu.exports=dg});var nu=ee((Qv,ru)=>{"use strict";var fg=ln(),pg=kt();ru.exports=(e,t,r)=>{let n=[],o=null,i=null,s=e.sort((w,p)=>pg(w,p,r));for(let w of s)fg(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 lu=ee((Zv,cu)=>{"use strict";var ou=Ct(),qi=an(),{ANY:Fi}=qi,Ui=ln(),Hi=kt(),mg=(e,t,r={})=>{if(e===t)return!0;e=new ou(e,r),t=new ou(t,r);let n=!1;e:for(let o of e.set){for(let i of t.set){let s=hg(o,i,r);if(n=n||s!==null,s)continue e}if(n)return!1}return!0},gg=[new qi(">=0.0.0-0")],iu=[new qi(">=0.0.0")],hg=(e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===Fi){if(t.length===1&&t[0].semver===Fi)return!0;r.includePrerelease?e=gg:e=iu}if(t.length===1&&t[0].semver===Fi){if(r.includePrerelease)return!0;t=iu}let n=new Set,o,i;for(let c of e)c.operator===">"||c.operator===">="?o=su(o,c,r):c.operator==="<"||c.operator==="<="?i=au(i,c,r):n.add(c.semver);if(n.size>1)return null;let s;if(o&&i){if(s=Hi(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&&!Ui(c,String(o),r)||i&&!Ui(c,String(i),r))return null;for(let m of t)if(!Ui(c,String(m),r))return!1;return!0}let u,f,g,w,p=i&&!r.includePrerelease&&i.semver.prerelease.length?i.semver:!1,x=o&&!r.includePrerelease&&o.semver.prerelease.length?o.semver:!1;p&&p.prerelease.length===1&&i.operator==="<"&&p.prerelease[0]===0&&(p=!1);for(let c of t){if(w=w||c.operator===">"||c.operator===">=",g=g||c.operator==="<"||c.operator==="<=",o){if(x&&c.semver.prerelease&&c.semver.prerelease.length&&c.semver.major===x.major&&c.semver.minor===x.minor&&c.semver.patch===x.patch&&(x=!1),c.operator===">"||c.operator===">="){if(u=su(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=au(i,c,r),f===c&&f!==i)return!1}else if(i.operator==="<="&&!c.test(i.semver))return!1}if(!c.operator&&(i||o)&&s!==0)return!1}return!(o&&g&&!i&&s!==0||i&&w&&!o&&s!==0||x||p)},su=(e,t,r)=>{if(!e)return t;let n=Hi(e.semver,t.semver,r);return n>0?e:n<0||t.operator===">"&&e.operator===">="?t:e},au=(e,t,r)=>{if(!e)return t;let n=Hi(e.semver,t.semver,r);return n<0?e:n>0||t.operator==="<"&&e.operator==="<="?t:e};cu.exports=mg});var Wi=ee((ex,fu)=>{"use strict";var Gi=jr(),uu=Nr(),bg=Ze(),du=Ii(),vg=ur(),xg=$c(),yg=Mc(),Sg=Vc(),wg=qc(),Tg=Gc(),Rg=Xc(),kg=Kc(),Cg=Jc(),Eg=kt(),Ig=tl(),Ag=nl(),_g=io(),Pg=al(),Lg=ll(),Dg=sn(),Bg=so(),$g=Pi(),Og=Li(),Mg=ao(),Ng=co(),jg=Di(),Vg=vl(),Fg=yl(),Ug=an(),qg=Ct(),Hg=ln(),Gg=$l(),Wg=Ml(),Xg=jl(),zg=Ul(),Kg=Hl(),Yg=fo(),Jg=Yl(),Qg=Ql(),Zg=tu(),eh=nu(),th=lu();fu.exports={parse:vg,valid:xg,clean:yg,inc:Sg,diff:wg,major:Tg,minor:Rg,patch:kg,prerelease:Cg,compare:Eg,rcompare:Ig,compareLoose:Ag,compareBuild:_g,sort:Pg,rsort:Lg,gt:Dg,lt:Bg,eq:$g,neq:Og,gte:Mg,lte:Ng,cmp:jg,coerce:Vg,truncate:Fg,Comparator:Ug,Range:qg,satisfies:Hg,toComparators:Gg,maxSatisfying:Wg,minSatisfying:Xg,minVersion:zg,validRange:Kg,outside:Yg,gtr:Jg,ltr:Qg,intersects:Zg,simplifyRange:eh,subset:th,SemVer:bg,re:Gi.re,src:Gi.src,tokens:Gi.t,SEMVER_SPEC_VERSION:uu.SEMVER_SPEC_VERSION,RELEASE_TYPES:uu.RELEASE_TYPES,compareIdentifiers:du.compareIdentifiers,rcompareIdentifiers:du.rcompareIdentifiers}});var k=L(Ee(),1);var Sc=L(Ee(),1);var Mr=L(G(),1);function wc({path:e}){return e.length===0?null:(0,Mr.jsx)(v,{children:e.map((t,r)=>(0,Mr.jsxs)(Sc.default.Fragment,{children:[r>0&&(0,Mr.jsx)(a,{color:l.muted,children:" \u203A "}),(0,Mr.jsx)(a,{color:l.dim,children:t})]},r))})}var pu=L(Wi(),1),rh=1,nh=new Set(["discover","workflow","nudge","recovery"]),oh=new Set(["run","generate","both"]),ih=new Set(["banner","footer"]),po=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),Vr=e=>typeof e=="string"&&e.length>0?e:void 0,Fr=e=>typeof e=="number"&&Number.isFinite(e)?e:void 0;function sh(e){if(!po(e))return{};let t={};return Vr(e.run)&&(t.run=e.run),Vr(e.generate)&&(t.generate=e.generate),Vr(e.default)&&(t.default=e.default),t}function mu(e,t){return e.text[t]??e.text.default??(e.target!=="both"?e.text[e.target]:void 0)}function ah(e,t){return t==="both"?!!e.default||!!e.run&&!!e.generate:t==="run"?!!e.run||!!e.default:!!e.generate||!!e.default}function ch(e,t){if(!po(e))return;let r=Fr(e.maxShows),n=Vr(e.until),o=Fr(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 lh(e){if(!po(e))return null;let t=Vr(e.id);if(!t)return null;let r=oh.has(e.target)?e.target:void 0;if(e.target!==void 0&&r===void 0)return null;let n=r??"both",o=sh(e.text);if(!ah(o,n))return null;let i=nh.has(e.category)?e.category:"nudge",s=ih.has(e.surface)?e.surface:void 0,u=Fr(e.weight),f=u===void 0?1:Math.max(0,u),g=Fr(e.cooldownSessions),w=g===void 0?0:Math.max(0,Math.floor(g)),p=Vr(e.minVersion)&&pu.default.coerce(e.minVersion)?e.minVersion:void 0,x=Array.isArray(e.relevance)?e.relevance.filter(U=>typeof U=="string"):[],c=Fr(e.retireAfterShows),m=c!==void 0&&c>=1?Math.floor(c):void 0,_=ch(e.boost,f);return{id:t,category:i,surface:s,target:n,text:o,weight:f,cooldownSessions:w,minVersion:p,relevance:x,retireAfterShows:m,boost:_}}function mo(e){if(!po(e)||!Array.isArray(e.hints)||typeof e.enabled!="boolean")return{catalog:null,dropped:0};let t=Fr(e.schemaVersion)??0;if(Math.floor(t)>rh)return{catalog:null,dropped:0};let r=0,n=new Set,o=[];for(let i of e.hints){let s=lh(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=L(G(),1),gu="tip: ";function hu({hint:e,mode:t,termWidth:r}){if(e.target!=="both"&&e.target!==t)return null;let n=mu(e,t);if(!n)return null;let o=Math.max(8,r-gu.length-2),i=n.length>o?n.slice(0,o-1)+"\u2026":n;return(0,bu.jsx)(a,{color:l.dim,children:gu+i})}var te=L(G(),1);function go(e,t){return e.length<=t?e:`${e.slice(0,Math.max(1,t-1))}\u2026`}function uh(e,t){if(e.kind==="desktop")return"Desktop";let r=Qr(e.kind);return e.deviceName?e.appPackage&&t>=72?`${r} \xB7 ${go(e.deviceName,30)} \xB7 ${go(e.appPackage,36)}`:t>=48?`${r} \xB7 ${go(e.deviceName,40)}`:`${r} \xB7 ${go(e.deviceName,Math.max(8,t-12))}`:t<36?r:`${r} \xB7 setting up`}function vu({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"}}){let{stdout:x}=Pr(),c=x?.columns??80,m=u??"run",_=t==="stage",U=t==="prod",B=m==="generate"?l.generateAccent:l.orange,F=g==="completed"?l.green:g==="failed"?l.red:l.generateAccent,H=uh(p,c);return(0,te.jsxs)(v,{flexDirection:"column",children:[(0,te.jsx)(a,{color:l.muted,children:"\u2500".repeat(c)}),s&&s.length>0&&(0,te.jsx)(v,{paddingX:1,children:(0,te.jsx)(wc,{path:s})}),(0,te.jsxs)(v,{paddingX:1,gap:1,children:[(0,te.jsx)(a,{color:l.dim,children:"Mode:"}),(0,te.jsx)(a,{color:B,bold:!0,children:m==="generate"?"Generate":"Run"}),(0,te.jsx)(a,{color:l.muted,children:"|"}),m==="generate"?(0,te.jsxs)(te.Fragment,{children:[(0,te.jsx)(a,{color:l.dim,children:"req"}),(0,te.jsx)(a,{color:l.dim,children:f??"\u2014"}),g&&(0,te.jsxs)(te.Fragment,{children:[(0,te.jsx)(a,{color:l.muted,children:"\xB7"}),(0,te.jsx)(a,{color:F,children:g})]})]}):(0,te.jsxs)(te.Fragment,{children:[(0,te.jsx)(a,{color:l.dim,children:"Session:"}),(0,te.jsx)(a,{color:l.dim,children:o})]}),(0,te.jsx)(a,{color:l.muted,children:"|"}),(0,te.jsx)(a,{color:r?l.green:l.red,children:"\u25CF"}),(0,te.jsx)(a,{color:l.dim,children:r?"authenticated":"not logged in"}),!U&&(0,te.jsxs)(te.Fragment,{children:[(0,te.jsx)(a,{color:l.muted,children:"|"}),_?(0,te.jsx)(a,{color:l.orange,bold:!0,children:"\u26A0 stage"}):(0,te.jsx)(a,{color:l.green,children:t})]})]}),(0,te.jsxs)(v,{paddingX:1,gap:1,children:[(0,te.jsx)(a,{color:l.dim,children:e??"no profile"}),m==="run"&&(0,te.jsxs)(te.Fragment,{children:[(0,te.jsx)(a,{color:l.muted,children:"|"}),(0,te.jsxs)(a,{color:l.dim,children:["runs: ",n]})]}),(0,te.jsx)(a,{color:l.muted,children:"|"}),(0,te.jsx)(a,{dimColor:!0,children:Os()})]}),(0,te.jsxs)(v,{paddingX:1,gap:1,children:[(0,te.jsx)(a,{color:l.dim,children:"Target:"}),(0,te.jsx)(a,{color:p.kind==="desktop"?l.dim:l.orange,children:H})]}),(0,te.jsx)(v,{paddingX:1,children:(0,te.jsx)(a,{dimColor:!0,children:i==="chat"?"ctrl+c cancel/exit":"\u2191\u2193 navigate \u21B5 select esc back"})}),w&&(0,te.jsx)(v,{paddingX:1,children:(0,te.jsx)(hu,{hint:w,mode:m,termWidth:c})})]})}var wr=L(Ee(),1);var un=[[[" "],[" "],[" "],[" "],["\u2584","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],[" "],[" "],[" "],[" "],[" "],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2584","#af87d7"],[" "],[" "],[" "],[" "]],[[" "],[" "],["\u2584","#875faf"],["\u2584","#af87d7","#875faf"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2584","#af87d7","#875faf"],["\u2584","#875faf"],[" "],[" "]],[[" "],[" "],["\u2588","#875faf"],["\u2588","#af87d7"],["\u2584","#000000","#af87d7"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#af87d7"],["\u2588","#af87d7"],["\u2588","#875faf"],[" "],[" "]],[[" "],["\u2588","#875faf"],["\u2588","#875faf"],["\u2588","#af87d7"],["\u2588","#000000"],["\u2584","#585858","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#af87d7"],["\u2588","#875faf"],["\u2588","#875faf"],[" "]],[[" "],["\u2588","#875faf"],["\u2588","#875faf"],["\u2588","#af87d7"],["\u2588","#000000"],["\u2588","#585858"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#af87d7"],["\u2588","#875faf"],["\u2588","#875faf"],[" "]],[[" "],[" "],["\u2588","#875faf"],["\u2588","#af87d7"],["\u2588","#000000"],["\u2584","#000000","#585858"],["\u2588","#000000"],["\u2588","#000000"],["\u2584","#af87d7","#000000"],["\u2584","#af87d7","#000000"],["\u2584","#af87d7","#000000"],["\u2584","#af87d7","#000000"],["\u2584","#af87d7","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#af87d7"],["\u2588","#875faf"],[" "],[" "]],[[" "],[" "],["\u2580","#875faf"],["\u2580","#af87d7"],["\u2580","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2580","#af87d7"],["\u2580","#af87d7"],["\u2580","#875faf"],[" "],[" "]],[[" "],[" "],[" "],[" "],[" "],["\u2580","#af87d7"],["\u2580","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2580","#af87d7"],["\u2580","#af87d7"],[" "],[" "],[" "],[" "],[" "]]];var ve=L(G(),1),ho="#af87d7",Xi="#875faf",xu="#5b3a7a",dh="#ff9500",fh="#ea580c";var zi="#666666",ph="#555555",Sr=[[ho,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[ho,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[ho,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[ho,"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[Xi,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[Xi,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[Xi,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588"]],Ki=Sr.map(([,e])=>[...e]);function yu({visibleRows:e=Sr.length}){let t=Math.min(e,Sr.length);return(0,ve.jsxs)(v,{flexDirection:"column",children:[Sr.slice(0,t).map(([r,n],o)=>{let i=Ki[o];return(0,ve.jsx)(a,{children:i.map((s,u)=>{if(s==="\u2588")return(0,ve.jsx)(a,{color:r,children:"\u2588"},u);let f=u>0&&i[u-1]==="\u2588",g=o>0&&u>0&&Ki[o-1][u-1]==="\u2588";return f||g?(0,ve.jsx)(a,{color:xu,children:"\u2592"},u):(0,ve.jsx)(a,{children:" "},u)})},o)}),t>=Sr.length&&(0,ve.jsxs)(a,{children:[" ",Ki[Sr.length-1].map((r,n)=>r==="\u2588"?(0,ve.jsx)(a,{color:xu,children:"\u2580"},n):(0,ve.jsx)(a,{children:" "},n))]})]})}function mh({visibleRows:e=un.length}){let t=Math.min(e,un.length);return(0,ve.jsx)(v,{flexDirection:"column",children:un.slice(0,t).map((r,n)=>(0,ve.jsx)(a,{children:r.map((o,i)=>{let s=o[0],u=o[1],f=o[2];return u?(0,ve.jsx)(a,{color:u,backgroundColor:f,children:s},i):(0,ve.jsx)(a,{children:s},i)})},n))})}function bo({size:e="compact",helmetVisibleRows:t=un.length,textVisibleRows:r=Sr.length,showMeta:n=!1,user:o=null,authenticated:i=!1,version:s=""}){return e==="compact"?(0,ve.jsx)(yu,{}):(0,ve.jsxs)(v,{flexDirection:"column",paddingX:1,paddingY:1,children:[(0,ve.jsx)(a,{color:dh,italic:!0,children:" Welcome to"}),(0,ve.jsx)(a,{children:" "}),(0,ve.jsxs)(v,{gap:2,children:[(0,ve.jsx)(mh,{visibleRows:t}),(0,ve.jsxs)(v,{flexDirection:"column",children:[(0,ve.jsx)(yu,{visibleRows:r}),(0,ve.jsx)(v,{justifyContent:"flex-end",width:73,children:(0,ve.jsx)(a,{color:fh,italic:!0,children:"Command-line interface"})})]})]}),n&&(0,ve.jsxs)(ve.Fragment,{children:[(0,ve.jsx)(a,{children:" "}),(0,ve.jsxs)(a,{children:[(0,ve.jsx)(a,{color:zi,children:" Browser automation powered by AI. "}),(0,ve.jsx)(a,{color:ph,children:`v${s}`})]}),(0,ve.jsx)(a,{children:" "}),(0,ve.jsx)(a,{children:(0,ve.jsx)(a,{color:zi,children:" KaneCLI can navigate websites, fill forms, test web UI, and extract"})}),(0,ve.jsx)(a,{children:(0,ve.jsx)(a,{color:zi,children:" data \u2014 right from your terminal."})}),(0,ve.jsx)(a,{children:" "})]})]})}var Qi=L(G(),1),Yi=8,Ji=7;function Su({onComplete:e}){let[t,r]=(0,wr.useState)(0),[n,o]=(0,wr.useState)(0),[i,s]=(0,wr.useState)(!1),[u]=(0,wr.useState)(()=>{let f=new Fn,g=f.getActiveProfile(),w=f.getDefaultEnv(),p=g?f.loadCredentials(g,w):null,x=g?f.loadBasicAuth(g,w):null;return{authenticated:!!(p||x),user:x?.username??g??null}});return ui(()=>{r(f=>Math.min(Yi,f+1))},t<Yi?60:null),ui(()=>{o(f=>Math.min(Ji,f+1))},n<Ji?80:null),(0,wr.useEffect)(()=>{t>=Yi&&n>=Ji&&!i&&(s(!0),e?.())},[t,n,i,e]),(0,Qi.jsx)(v,{flexDirection:"column",children:(0,Qi.jsx)(bo,{size:"full",helmetVisibleRows:t,textVisibleRows:n,showMeta:i,user:u.user,authenticated:u.authenticated,version:at})})}var Kt=L(G(),1);function wu({entry:e}){return e.type==="input"?(0,Kt.jsxs)(v,{children:[(0,Kt.jsx)(a,{color:l.orange,children:"\u276F "}),(0,Kt.jsx)(a,{children:e.text})]}):e.type==="error"?(0,Kt.jsx)(v,{marginLeft:2,children:(0,Kt.jsx)(a,{color:l.red,children:e.text})}):(0,Kt.jsx)(v,{marginLeft:2,children:(0,Kt.jsx)(a,{color:e.type==="info"?l.dim:void 0,children:e.text})})}var Zi=L(G(),1);function Tu({objective:e}){let{stdout:t}=Pr(),r=Math.max(24,(t?.columns??80)-4);return(0,Zi.jsx)(zt,{title:"run",width:r,children:(0,Zi.jsx)(Ns,{label:"objective",value:e})})}var Ft=L(Ee(),1);var gt=L(G(),1);function gh(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 Ru({data:e,width:t=60}){let r=gh(e,t);return(0,gt.jsx)(v,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:r.map((n,o)=>{if(n.type==="title")return(0,gt.jsx)(a,{color:l.orange,bold:!0,children:n.text},o);if(n.type==="header")return(0,gt.jsx)(v,{marginTop:1,children:(0,gt.jsx)(a,{color:l.dim,children:n.text})},o);if(n.type==="divider")return(0,gt.jsx)(v,{marginTop:1,marginBottom:0,children:(0,gt.jsx)(a,{color:l.muted,children:n.text})},o);if(n.type==="footer")return(0,gt.jsx)(v,{marginTop:1,children:(0,gt.jsx)(a,{color:l.dim,children:n.text})},o);let i=n.text.match(/^(.+?) (·+) (.+)$/);return i?(0,gt.jsxs)(a,{children:[(0,gt.jsxs)(a,{color:l.secondary,children:[i[1]," "]}),(0,gt.jsxs)(a,{color:l.muted,children:[i[2]," "]}),(0,gt.jsx)(a,{color:n.color,children:i[3]})]},o):(0,gt.jsx)(a,{color:n.color,children:n.text},o)})})}var tt=L(G(),1);function es(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 ts({items:e,onRunSelected:t,initialExpandedPath:r,onDismiss:n,renderLoginWizard:o,renderProfilesView:i,renderChromeProfilePicker:s,renderProjectPicker:u,renderFolderPicker:f,renderWindowSizePicker:g,onActiveViewChange:w}){let[p,x]=(0,Ft.useState)(()=>{let F=r??[],H=es(e,F),$=0;if(F.length>0){let z=H.findIndex(fe=>fe.item.id===F[0]);z>=0&&z+1<H.length&&($=z+1)}return{expandedPath:F,selectedIndex:$,inputValue:"",isEditing:!1,isSelecting:!1,feedback:null,activeView:null,infoData:null}}),c=es(e,p.expandedPath),m=c[p.selectedIndex]?.item,_=(0,Ft.useRef)(null),U=(0,Ft.useCallback)(F=>{x(H=>({...H,feedback:F})),_.current&&clearTimeout(_.current),_.current=setTimeout(()=>{x(H=>({...H,feedback:null})),_.current=null},4e3)},[]);(0,Ft.useEffect)(()=>()=>{_.current&&clearTimeout(_.current)},[]),(0,Ft.useEffect)(()=>{w?.(p.activeView)},[p.activeView,w]);let B=(0,Ft.useCallback)(()=>{x(F=>({...F,activeView:null,infoData:null}))},[]);return Be((F,H)=>{if(p.activeView==="infoView"){H.escape&&B();return}if(!(p.activeView==="loginWizard"||p.activeView==="profilesView"||p.activeView==="chromeProfilePicker"||p.activeView==="projectPicker"||p.activeView==="folderPicker"||p.activeView==="windowSizePicker")){if(p.isEditing){if(H.escape){x($=>({...$,isEditing:!1,inputValue:""}));return}if(H.return){let $=p.inputValue.trim();if(m?.onValue&&$){let z=m.currentValue;m.onValue($),U(z?`${m.label}: ${z} \u2192 ${$}`:`${m.label}: ${$}`)}x(z=>({...z,isEditing:!1,inputValue:""}));return}if(H.backspace||H.delete){x($=>({...$,inputValue:$.inputValue.slice(0,-1)}));return}F&&!H.ctrl&&!H.meta&&x($=>({...$,inputValue:$.inputValue+F}));return}if(p.isSelecting&&m?.options){let $=m.options;if(H.escape){x(z=>({...z,isSelecting:!1}));return}if(H.upArrow){x(z=>({...z,inputValue:String(Math.max(0,Number(z.inputValue||"0")-1))}));return}if(H.downArrow){x(z=>({...z,inputValue:String(Math.min($.length-1,Number(z.inputValue||"0")+1))}));return}if(H.return){let z=Number(p.inputValue||"0"),fe=$[z];if(fe&&m.onValue){let oe=m.currentValue;m.onValue(fe.value),U(oe?`${m.label}: ${oe} \u2192 ${fe.label}`:`${m.label}: ${fe.label}`)}x(oe=>({...oe,isSelecting:!1,inputValue:""}));return}return}if(H.upArrow){x($=>({...$,selectedIndex:Math.max(0,$.selectedIndex-1)}));return}if(H.downArrow){x($=>({...$,selectedIndex:Math.min(c.length-1,$.selectedIndex+1)}));return}if(H.escape){if(p.expandedPath.length===0){n?.();return}x($=>{let z=$.expandedPath.slice(0,-1),fe=es(e,z),oe=$.expandedPath[$.expandedPath.length-1],ie=fe.findIndex(Y=>Y.item.id===oe);return{...$,expandedPath:z,selectedIndex:ie>=0?ie:0}});return}if(H.return&&m){if(m.id==="run-start"){t();return}if(m.type==="submenu"){let $=c[p.selectedIndex]?.depth??0;x(z=>({...z,expandedPath:[...z.expandedPath.slice(0,$),m.id],selectedIndex:z.selectedIndex+1}));return}if(m.onInfo){let $=m.onInfo();x(z=>({...z,activeView:"infoView",infoData:$}));return}if(m.onLoginWizard){m.onLoginWizard(),x($=>({...$,activeView:"loginWizard"}));return}if(m.onProfilesView){m.onProfilesView(),x($=>({...$,activeView:"profilesView"}));return}if(m.onChromeProfilePicker){m.onChromeProfilePicker(),x($=>({...$,activeView:"chromeProfilePicker"}));return}if(m.onProjectPicker){m.onProjectPicker(),x($=>({...$,activeView:"projectPicker"}));return}if(m.onFolderPicker){m.onFolderPicker(),x($=>({...$,activeView:"folderPicker"}));return}if(m.onWindowSizePicker){m.onWindowSizePicker(),x($=>({...$,activeView:"windowSizePicker"}));return}if(m.type==="action"){m.onAction?.(),m.suppressFeedback||U(`${m.label} done`);return}if(m.type==="select"&&m.options){let $=m.options.findIndex(z=>z.value===m.currentValue);x(z=>({...z,isSelecting:!0,inputValue:String(Math.max(0,$))}));return}if(m.type==="text-input"){x($=>({...$,isEditing:!0,inputValue:m.currentValue??""}));return}}}}),(0,tt.jsx)(v,{flexDirection:"column",paddingX:1,children:p.activeView==="infoView"&&p.infoData?(0,tt.jsx)(Ru,{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,tt.jsxs)(tt.Fragment,{children:[c.map(({item:F,depth:H},$)=>{let z=$===p.selectedIndex,fe=" ".repeat(H),oe=z?"\u276F ":" ",ie=F.type==="submenu"?p.expandedPath.includes(F.id)?"\u25BC ":"\u25B6 ":F.type==="select"&&F.options?z&&p.isSelecting?"\u25BC ":"\u25B6 ":" ",Y=F.currentValue!=null?` [${F.currentValue}]`:"";if(z&&p.isSelecting&&F.options){let pe=Number(p.inputValue||"0");return(0,tt.jsxs)(v,{flexDirection:"column",children:[(0,tt.jsxs)(a,{color:l.orange,children:[fe,oe,ie,F.label]}),F.options.map((we,me)=>(0,tt.jsxs)(a,{color:me===pe?l.orange:void 0,children:[fe," ",me===pe?"\u276F ":" ",we.label]},we.value))]},F.id)}return z&&p.isEditing?(0,tt.jsxs)(a,{color:l.orange,children:[fe,oe,ie,F.label,": ",p.inputValue,(0,tt.jsx)(a,{color:l.dim,children:"\u2588"})]},F.id):(0,tt.jsxs)(a,{color:z?l.orange:void 0,dimColor:!z&&H>0,children:[fe,oe,ie,F.label,(0,tt.jsx)(a,{dimColor:!0,children:Y})]},F.id)}),p.feedback&&(0,tt.jsx)(v,{marginTop:1,children:(0,tt.jsxs)(a,{color:l.green,children:["\u2713 ",p.feedback]})}),(0,tt.jsx)(Ot,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"select"}],escBackLabel:"back"})]})})}var J=L(Ee(),1);import{access as hh}from"fs/promises";async function ku(e){try{return await hh(e),!0}catch{return!1}}function bh(e,t){if(tn(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 vh(e){return e==="emulator"||e==="simulator"?e:null}var vo={emulator:"android",simulator:"ios"};function xh(e){return`${e.platform}\0${e.kind}\0${qn(e)}`}function yh(e,t){let r=Hn(t.id);return e.find(n=>n.platform===t.platform&&n.kind===t.kind&&(Hn(n.id)===r||n.virtualName!==void 0&&Hn(n.virtualName)===r))}function Cu(e){let[t,r]=(0,J.useState)("idle"),[n,o]=(0,J.useState)(null),i=(0,J.useRef)(null),s=(0,J.useRef)(null),u=(0,J.useRef)(null),[f,g]=(0,J.useState)([]),[w,p]=(0,J.useState)([]),[x,c]=(0,J.useState)([]),[m,_]=(0,J.useState)(null),[U,B]=(0,J.useState)(null),[F,H]=(0,J.useState)(null),[$,z]=(0,J.useState)(null),[fe,oe]=(0,J.useState)(null),ie=(0,J.useRef)(null),Y=(0,J.useRef)(null),pe=(0,J.useRef)(null),we=(0,J.useRef)(new Map),me=(0,J.useRef)(0),$e=(0,J.useRef)("confirm"),qe=(0,J.useRef)(null),it=(0,J.useRef)(null),Ht=(0,J.useRef)(null),St=(0,J.useRef)(()=>{}),ge=(0,J.useRef)({pathExists:ku,...e});ge.current={pathExists:ku,...e},(0,J.useEffect)(()=>{t==="ready"&&(qe.current=null)},[t]);let dt=(0,J.useCallback)((P,D,K)=>{K().catch(q=>{P===me.current&&(_(null),B(q instanceof Error?q.message:String(q)),r(D))})},[]),Lt=(0,J.useCallback)(async(P,D,K)=>{r("picking"),_("Looking for devices\u2026");let q=K?vo[K]:void 0,Z=(await Gn(q)).filter(_e=>!K||_e.kind===K);if(P===me.current){if(p(Z),_(null),Z.length===0){B(K==="emulator"?"No Android emulator found on this machine.":K==="simulator"?"No iOS simulator found on this machine.":"No emulator or simulator found on this machine.");return}it.current=null,oe(null)}},[]),Oe=(0,J.useCallback)((P,D)=>{let K={target:P,savedDeviceLabel:P.displayName,savedKind:P.kind,...D?{appPath:D,savedAppLabel:u.current??D}:{},deviceMissing:!1,appMissing:!D};it.current=K,Ht.current=K,oe(K),_(null),r("confirm")},[]),De=(0,J.useCallback)(async(P,D)=>{let K=Zr(vo[D]);if(!K||!K.available())return!0;let q=await K.checks({appiumUrl:ge.current.getDefaults()?.appium_url});return P!==me.current?!1:(g(q),q.some(_e=>_e.required&&_e.status==="fail"&&!_e.fixedByBundle)?(_(null),r("doctor"),!1):!0)},[]),Gt=(0,J.useCallback)(async(P,D)=>{let K=ge.current.getDefaults(),q=K?.default_target;if(i.current=D,o(D),_("Checking the saved setup\u2026"),!await De(P,D))return;let Z=vo[D],_e=(await Gn(Z)).filter(Zt=>Zt.kind===D);if(P!==me.current)return;p(_e),_(null);let Ye=q?yh(_e,q):void 0,de=ra(K?.default_app)?K?.default_app:void 0,xt=de?tn(de)||await ge.current.pathExists(de):!1;if(P!==me.current)return;let ht=de&&tn(de)?await ge.current.appLabelFor?.(de)??de:de;if(P!==me.current)return;let ke={...Ye?{target:Ye}:{},savedDeviceLabel:q?.id??"(unknown device)",savedKind:D,...de&&xt?{appPath:de}:{},...ht?{savedAppLabel:ht}:{},deviceMissing:!Ye,appMissing:!de||!xt};it.current=ke,Ht.current=ke,u.current=de&&ht!==de?ht:null,oe(ke),r("confirm")},[De]),je=(0,J.useCallback)(async(P,D)=>{r("checking");let K=Wn();if(P!==me.current)return;if(!K.supported){g([{id:"host.platform",label:"host",required:!0,status:"fail",detail:K.reason}]),r("doctor");return}g([]);let q=ge.current.getDefaults(),Z=vh(q?.default_target?.kind);if(D==="confirm"&&Z&&q?.default_target){it.current=null,oe(null),await Gt(P,Z);return}r("chooser")},[Gt]),Wt=(0,J.useCallback)(P=>{let D=++me.current;i.current=P,o(P);let K=ge.current.getDefaults();ge.current.setDefaults({...K,tui_target:P}),B(null),dt(D,"chooser",async()=>{r("picking"),_(P==="simulator"?"Checking the iOS toolchain\u2026":"Checking the Android toolchain\u2026"),await De(D,P)&&(_("Checking the mobile dependencies\u2026"),await hi().ensure(P,{automatic:!0,onProgress:q=>{D===me.current&&_(q)}}),D===me.current&&await Lt(D,$e.current,P))})},[De,Lt,dt]),pr=(0,J.useCallback)((P="confirm",D={})=>{let K=++me.current;$e.current=P;let q=ge.current.getDefaults();qe.current=q?.tui_target??"desktop";let Z=(D.kind?yr(D.kind):void 0)??yr(q?.default_target?.kind??"")??"emulator";ge.current.setDefaults({...q,tui_target:Z}),g([]),p([]),c([]),H(null),z(null),B(null),oe(null),it.current=null,ie.current=null,Y.current=null,P==="reinit"&&(pe.current=null),dt(K,"doctor",()=>je(K,P))},[dt,je]),Tr=(0,J.useCallback)(()=>{let P=++me.current;B(null),dt(P,"doctor",()=>je(P,$e.current))},[dt,je]),Gr=(0,J.useCallback)(P=>{let D=++me.current;B(null),_("Installing managed mobile dependencies\u2026");let K=P??["emulator",...process.platform==="darwin"?["simulator"]:[]];dt(D,"doctor",async()=>{for(let q of K)await hi().ensure(q,{automatic:!1,approved:!0,onProgress:Z=>{D===me.current&&_(Z)}});D===me.current&&_(null),await je(D,$e.current)})},[dt,je]),Rr=(0,J.useCallback)(async P=>{let D=Zr(P.platform);if(!D){B(`No provider registered for platform "${P.platform}"`);return}let q=await(ge.current.deviceBusyOn??(()=>zs(Xs(),[],[],P.kind)))({udid:P.id,displayName:P.displayName});if(q!==null){let Ye=typeof q=="number"?q:q.port,de=typeof q=="number"?void 0:q.device;B(Ws({udid:P.id,displayName:P.displayName},Ye,de));return}ie.current=P,Y.current=D,z(P),B(null),c([]),bi(D,P);let Z=s.current;Z&&!bh(Z,P.kind)&&(s.current=null);let _e=ge.current.getDefaults();s.current&&H(Lr(P,s.current,{noReset:_e?.no_reset,appiumUrl:_e?.appium_url})),Oe(P,s.current)},[Oe]),mr=(0,J.useCallback)((P={})=>{let D=it.current;if(!D?.target){B("That device is no longer connected \u2014 pick another one.");return}let K=D.target,q=Zr(K.platform);if(!q){B(`No provider registered for platform "${K.platform}"`);return}if(ie.current=K,Y.current=q,z(K),B(null),c([]),bi(q,K),!(P.keepApp!==!1&&D.appPath)){r("appSource");return}let _e=ge.current.getDefaults();s.current=D.appPath,H(Lr(K,D.appPath,{noReset:_e?.no_reset,appiumUrl:_e?.appium_url})),r("ready")},[]),gr=(0,J.useCallback)(()=>{if(!ie.current||!Y.current){B("Pick a device before choosing an app");return}r("apps")},[]),wt=(0,J.useCallback)(()=>{if(!ie.current||!Y.current){B("Pick a device before choosing an app");return}B(null),r("appList")},[]),hr=(0,J.useCallback)(()=>{if(!ie.current||!Y.current){B("Pick a device before choosing an app");return}B(null),r("appId")},[]),kr=(0,J.useCallback)(async P=>{let D=ie.current,K=ge.current.resolveAppId;if(!D)return{ok:!1,error:"Pick a device before choosing an app"};if(!K)return{ok:!1,error:"Log in to use an app id, or choose a local build."};let q=++me.current;B(null),_("Downloading the application \u2014 this can take a while, please wait\u2026");try{let Z=await K(P,Ye=>{q===me.current&&_(Ye)});if(q!==me.current)return{ok:!1};let _e=ge.current.getDefaults();return s.current=P,u.current=Z.name,pe.current=null,_(null),H(Lr(D,P,{noReset:_e?.no_reset,appiumUrl:_e?.appium_url})),ge.current.setDefaults({..._e,...yr(D.kind)?{tui_target:yr(D.kind)}:{},default_target:{platform:D.platform,kind:D.kind,id:qn(D)},default_app:P}),Oe(D,P),{ok:!0}}catch(Z){return q!==me.current?{ok:!1}:(_(null),{ok:!1,error:Z instanceof Error?Z.message:String(Z)})}},[Oe]),br=(0,J.useCallback)(()=>{if(!ie.current||!Y.current){B("Pick a device before choosing an app");return}r("appSource")},[]),Q=(0,J.useCallback)(async(P,D={})=>{let K=D.persist!==!1,q=ie.current;if(!q)return B("Pick a device before choosing an app"),{ok:!1,error:"Pick a device before choosing an app"};if(P.kind!=="package"&&!await ge.current.pathExists(P.value))return{ok:!1,error:`${P.value} is not there.`};let Z=ge.current.getDefaults();return s.current=P.value,u.current=null,pe.current=null,B(null),_(null),H(Lr(q,P.value,{noReset:Z?.no_reset,appiumUrl:Z?.appium_url})),Oe(q,P.value),K&&ge.current.setDefaults({...Z,...yr(q.kind)?{tui_target:yr(q.kind)}:{},default_target:{platform:q.platform,kind:q.kind,id:qn(q)},default_app:P.value}),{ok:!0}},[Oe]),le=(0,J.useCallback)(()=>{r("appSource")},[]),ae=(0,J.useCallback)(async P=>{let D=ie.current,K=Y.current;if(!D||!K)return{ok:!1,error:"No device is bound \u2014 run /mobile first"};try{let q=await Zs(K,D,ht=>_(ht)),Z=await K.ensureApp(q,P,ht=>_(ht));_(null);let _e=xh(D);pe.current={targetIdentity:_e,packageId:Z};let Ye=we.current.get(_e)??[];if(!Ye.includes(Z)){let ht=[...Ye,Z].sort();we.current.set(_e,ht),c(ht)}let de=ge.current.getDefaults(),xt=Lr(q,Z,{noReset:de?.no_reset,appiumUrl:de?.appium_url});return H(xt),{ok:!0,device:xt}}catch(q){return _(null),{ok:!1,error:q instanceof Error?q.message:String(q)}}},[]),re=(0,J.useCallback)(async()=>{let P=ie.current;if(!P)return{ok:!1,reason:"No device is selected.",step:"device"};let D=vo[P.kind];if(!(await Gn(D)).some(Z=>Z.id===P.id||Z.virtualName&&Z.virtualName===P.virtualName))return{ok:!1,reason:`${P.displayName} is no longer connected.`,step:"device"};let q=s.current;return q?tn(q)?{ok:!0}:await ge.current.pathExists(q)?{ok:!0}:{ok:!1,reason:`${q} is no longer there.`,step:"app"}:{ok:!1,reason:"No app is selected.",step:"app"}},[]),ue=(0,J.useCallback)(()=>{++me.current,Ht.current=null,r("idle"),g([]),p([]),c([]),_(null),B(null),H(null),z(null),oe(null),it.current=null,ie.current=null,Y.current=null,pe.current=null,s.current=null,u.current=null},[]),Te=(0,J.useCallback)(()=>{let P=Ht.current,D=()=>{if(!P)return!1;let K=P.target?Zr(P.target.platform):null;return ie.current=P.target??null,Y.current=K??null,s.current=P.appPath??null,it.current=P,i.current=P.savedKind,o(P.savedKind),z(P.target??null),oe(P),_(null),B(null),r("confirm"),!0};switch(t){case"picking":B(null),r("chooser");return;case"appSource":if(B(null),D())return;if(ie.current){Oe(ie.current,s.current);return}r("chooser");return;case"apps":case"appList":case"appId":B(null),_(null),r("appSource");return;case"chooser":if(D())return;St.current();return;default:St.current()}},[t,Oe]),ft=(0,J.useCallback)(()=>{let P=qe.current;if(P){let D=ge.current.getDefaults();ge.current.setDefaults({...D,tui_target:P}),qe.current=null}ue()},[ue]);return St.current=ft,{phase:t,kind:n,selectKind:Wt,checks:f,targets:w,apps:x,busyMessage:m,error:U,device:F,target:$,saved:fe,begin:pr,recheck:Tr,install:Gr,cancel:ft,back:Te,selectTarget:Rr,confirmSaved:mr,requestApp:gr,requestAppSource:br,requestCloudApps:wt,requestAppId:hr,selectApp:Q,selectAppId:kr,skipApp:le,bindAppForRun:ae,validateBinding:re,reset:ue}}var dn=L(Ee(),1);function Eu(e){let{phase:t,device:r,requestApp:n,pendingRef:o,dispatch:i,notify:s,onSettle:u}=e,f=(0,dn.useRef)(null),g=(0,dn.useRef)(!1);(0,dn.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])}function Iu(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 _u,readdir as Sh,stat as wh}from"fs/promises";import{extname as Pu,join as Lu,relative as Th}from"path";var Rh=new Set(["node_modules",".git"]),kh=new Set([".apk",".zip",".apks",".aab",".ipa",".app"]);function Du(e){return e.state!=="incompatible"}var Au=new Map;function Ch(e,t){return`${e}\0${t?.platform??""}\0${t?.androidApiLevel??""}\0${t?.androidAbis?.join(",")??""}`}function Eh(e){let t=typeof e=="number"?e:typeof e=="string"?Number(e):NaN;return Number.isInteger(t)&&t>0?t:void 0}function Ih(e){let t=new Set;return qs(e,{filter:r=>{let n=/^lib\/([^/]+)\//.exec(r.name);return n?.[1]&&t.add(n[1]),!1}}),[...t].sort()}async function Bu(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 Sh(f,{withFileTypes:!0,encoding:"utf8"})}catch{return}for(let p of w){if(s.length>=n)return;if(p.name.startsWith(".")||Rh.has(p.name)||p.name.startsWith("output-"))continue;let x=Lu(f,p.name),c=Pu(p.name).toLowerCase();if(kh.has(c)&&(p.isFile()||c===".app"&&p.isDirectory())){let _=Th(e,x);(!i||_.toLowerCase().includes(i))&&s.push(_);continue}p.isDirectory()&&await u(x,g+1)}}return await u(e,0),s}async function $u(e,t){let r;try{r=(await wh(e)).mtimeMs}catch{}let n=Ch(e,t),o=r===void 0?void 0:Au.get(n);if(o&&o.mtimeMs===r)return o.result;let i=u=>(r!==void 0&&Au.set(n,{mtimeMs:r,result:u}),u),s=Pu(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=Eh(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=Ih(new Uint8Array(await _u(e)));if(p.length>0){if(!t.androidAbis||t.androidAbis.length===0)return i({state:"unverified",reason:`APK native ABI (${p.join(", ")}) could not be compared with this device`});if(!p.some(x=>t.androidAbis.includes(x)))return i({state:"incompatible",reason:`APK supports ${p.join(", ")}; device supports ${t.androidAbis.join(", ")}`})}return i({state:"compatible"})}catch(u){return i({state:"unverified",reason:`Could not read APK manifest: ${u instanceof Error?u.message:String(u)}`})}}if(s===".apk"||s===".aab"||s===".apks")return i({state:"incompatible",reason:"Android artifact"});if(s===".ipa")return i({state:"incompatible",reason:"an .ipa cannot be installed on a simulator \u2014 use a .zip"});if(s===".app")try{let u=await _h(Lu(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.iosVersion&&Ah(g,t.iosVersion)>0?i({state:"incompatible",reason:`requires iOS ${g}; ${t.displayName} runs iOS ${t.iosVersion}`}):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 Ah(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 _h(e){let r=(await _u(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 xo=L(Ee(),1);function Ou(e){let t=(0,xo.useRef)(e);return t.current=e,(0,xo.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=rn(o,s??(c=>c));return(u?u(p,{username:w.username,accessKey:w.access_key}):new Ys(p,{username:w.username,accessKey:w.access_key})).list({type:f,...r})},[])}var fn=L(G(),1);function Mu({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,fn.jsxs)(v,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,children:[(0,fn.jsx)(a,{color:l.orange,children:f}),(0,fn.jsxs)(a,{color:l.dim,children:[` \u21B5 ${g}`,e==="mobile"?" p pick a device":"",` k keep ${t}`," esc cancel"]})]})}async function Nu(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=Ph(await i.json());return s&&e.cache?.set(e.objective,s),s}catch{return null}finally{clearTimeout(o)}}function Ph(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 ju(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 Vu=L(Ee(),1);var Fe=L(G(),1),Lh={pass:"\u2713",fail:"\u2717",info:"\u2139"},Dh={pass:l.green,fail:l.red,info:l.secondary};function Fu({checks:e,busyMessage:t,onRetry:r,onInstall:n,onCancel:o}){let[i,s]=(0,Vu.useState)(!1);Be((x,c)=>{if(c.escape){o();return}(x==="r"||x==="R")&&r(),(x==="i"||x==="I")&&(i?n():s(!0))});let u=e.filter(x=>x.required&&x.status==="fail").length,f=e.filter(x=>x.status!=="info"),g=new Map;for(let x of f)x.status==="fail"&&x.fixText&&!g.has(x.fixText)&&g.set(x.fixText,x.id);let p=["emulator",...process.platform==="darwin"?["simulator"]:[]].map(x=>`\u2022 kaneai-mobile-deps ${x}
|
|
3
|
-
resolved for kane-cli ${at} via your KaneAI account
|
|
4
|
-
\u2192 ~/.testmuai/kaneai/mobile/deps/${x}`).join(`
|
|
5
|
-
`);return(0,Fe.jsxs)(v,{flexDirection:"column",borderStyle:"round",borderColor:l.red,paddingX:2,paddingY:1,children:[(0,Fe.jsxs)(v,{children:[(0,Fe.jsx)(a,{color:l.red,bold:!0,children:"Device setup"}),(0,Fe.jsx)(a,{color:l.dim,children:u>0?` ${u} blocking issue${u===1?"":"s"}`:" all checks passed"})]}),(0,Fe.jsxs)(v,{flexDirection:"column",marginTop:1,children:[t&&(0,Fe.jsx)(a,{color:l.secondary,children:t}),f.length===0?(0,Fe.jsx)(a,{color:l.dim,children:"No checks reported."}):f.map(x=>(0,Fe.jsxs)(v,{flexDirection:"column",children:[(0,Fe.jsxs)(v,{children:[(0,Fe.jsxs)(a,{color:Dh[x.status],children:[Lh[x.status]," "]}),(0,Fe.jsx)(a,{children:x.label}),x.detail?(0,Fe.jsxs)(a,{color:l.dim,children:[" \u2014 ",x.detail]}):null]}),x.status==="fail"&&x.fixText&&g.get(x.fixText)===x.id?(0,Fe.jsx)(v,{marginLeft:4,children:(0,Fe.jsxs)(a,{color:l.dim,children:["fix: ",x.fixText]})}):null]},x.id))]}),i&&(0,Fe.jsxs)(v,{flexDirection:"column",marginTop:1,children:[(0,Fe.jsx)(a,{color:l.orange,children:"Press i again to download:"}),(0,Fe.jsx)(a,{color:l.dim,children:p})]}),(0,Fe.jsx)(Ot,{bindings:[{keys:"i",label:"install"},{keys:"r",label:"recheck"}],escBackLabel:"cancel"})]})}var pn=L(Ee(),1);var ct=L(G(),1),rs=800,ns=3840,os=600,is=2160;function Uu(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<rs)return`Min ${rs}`;if(r>ns)return`Max ${ns}`}else{if(r<os)return`Min ${os}`;if(r>is)return`Max ${is}`}return null}function ss({currentWidth:e,currentHeight:t,onSelect:r,onCancel:n}){let[o,i]=(0,pn.useState)("width"),[s,u]=(0,pn.useState)(String(e)),[f,g]=(0,pn.useState)(String(t)),[w,p]=(0,pn.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 _=Uu("width",s);if(_){i("width"),p(`Width: ${_}`);return}let U=Uu("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 x=(c,m,_)=>{let U=o===_,B=U?l.orange:l.secondary;return(0,ct.jsxs)(v,{flexDirection:"column",children:[(0,ct.jsxs)(a,{color:l.dim,children:[" ",c]}),(0,ct.jsx)(v,{borderStyle:"round",borderColor:B,paddingX:1,width:10,children:(0,ct.jsxs)(a,{color:U?void 0:l.dim,children:[m||" ",U?(0,ct.jsx)(a,{color:l.dim,children:"\u2588"}):""]})}),(0,ct.jsxs)(a,{color:l.dim,dimColor:!0,children:[" ",_==="width"?`${rs}\u2013${ns}`:`${os}\u2013${is}`]})]})};return(0,ct.jsxs)(v,{flexDirection:"column",paddingX:1,children:[(0,ct.jsx)(a,{color:l.orange,bold:!0,children:"Window Size"}),(0,ct.jsxs)(v,{marginTop:1,gap:1,children:[x("Width",s,"width"),(0,ct.jsx)(v,{alignItems:"center",marginTop:1,children:(0,ct.jsx)(a,{color:l.dim,children:"x"})}),x("Height",f,"height")]}),w&&(0,ct.jsx)(v,{marginTop:1,children:(0,ct.jsx)(a,{color:l.red,children:w})}),(0,ct.jsx)(Ot,{bindings:[{keys:"tab/\u2190\u2192",label:"switch field"},{keys:"\u21B5",label:"save"}],escBackLabel:"cancel"})]})}var lt=L(Ee(),1);async function qu(e,t,r){let n=e.loadCredentials(t,r),o=e.loadClient(t,r);if(n&&o){let s=new Hs(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 Hu(){let[e]=(0,lt.useState)(()=>new Fn),[t,r]=(0,lt.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,lt.useRef)(null),o=(0,lt.useRef)(null),i=(0,lt.useCallback)(()=>{let m=e.resolveAuth();return m?{method:m.method,profile:m.profile,env:m.env}:null},[e]),s=(0,lt.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 H=(async()=>{try{let $=await Gs({creds:e,profile:_,env:U,credentials:m});return $?(r(!0),$.accessToken):null}catch{return r(!1),null}finally{o.current=null}})();return o.current=H,H}return r(!0),m.access_token},[e]),u=(0,lt.useCallback)(()=>{let m=e.resolveAuth();return!m||m.method!=="basic"?null:{username:m.username,access_key:m.access_key}},[e]),f=(0,lt.useCallback)((m,_)=>{n.current?.revoke();let U=Ne(m),B=u(),F=new fa(U.controllerBaseUrl,s,B,_);return n.current=F,F},[u,s]),g=(0,lt.useCallback)(()=>n.current,[]),w=(0,lt.useCallback)(()=>{let m=u();if(m)return m;let _=n.current?.cached;return _?{username:_.username,access_key:_.access_key}:null},[u]),p=(0,lt.useCallback)(async()=>{let m=n.current;return m?m.resolve():null},[]),x=(0,lt.useCallback)(async(m="default")=>{let _=e.getDefaultEnv();await new da(m,_,e).login(),e.setActiveProfile(m);try{let B=new Or;Rt(e,B,m,_)}catch{}r(!0)},[e]),c=(0,lt.useCallback)(async()=>{let m=e.getActiveProfile();if(!m)return null;let _=e.getDefaultEnv(),U=await qu(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:x,logout:c,initResolver:f,getResolver:g,getResolvedBasicAuth:w,resolveBasicAuth:p}}var Yt=L(Ee(),1);import{mkdtempSync as Bh,rmSync as $h}from"fs";import{join as Oh}from"path";import{tmpdir as Mh}from"os";function Gu(){let[e]=(0,Yt.useState)(()=>new Or),t=(0,Yt.useRef)(null),r=(0,Yt.useRef)(null),n=(0,Yt.useRef)(null),o=(0,Yt.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&&(lr("tempDir","Previous temp dir removed before retry"),r.current=null);let p=Bh(Oh(Mh(),"kane-clean-"));r.current=p,g=p,Mt("tempDir",()=>{try{$h(p,{recursive:!0,force:!0})}catch{}})}let w=await ma({userDataDir:g,width:f.window_size.width,height:f.window_size.height,startUrl:s??f.default_url??void 0});return t.current=w,Mt("chrome",()=>{w.kill()}),w})();n.current=u;try{return await u}finally{n.current=null}},[e]),i=(0,Yt.useCallback)(()=>{lr("chrome","Chrome killed"),lr("tempDir","Temp dir removed"),t.current=null,r.current=null},[]);return{ensureChrome:o,killChrome:i}}var yo=[{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"}],Nh={web:"desktop"};function jh(e){return Nh[e]??e}function So(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:jh(o),args:i,raw:t}}var Uy=[{name:"Testing",commands:yo.filter(e=>["run","cancel"].includes(e.name))},{name:"Auth",commands:yo.filter(e=>["login","logout","whoami","balance","profiles"].includes(e.name))},{name:"Settings",commands:yo.filter(e=>["config"].includes(e.name))},{name:"Session",commands:yo.filter(e=>["new","name","summary","help","clear","exit"].includes(e.name))}];var Wu=[{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"}],Vh={name:"cancel",description:"Abort current run"},Fh={name:"cancel",description:"Cancel current generation"},Ur=[{name:"generate",description:"Switch to Generate mode (test case generator)"},{name:"summary",description:"View run summaries",args:"[index]"},Vh,...Wu],mn=[{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>]"},Fh,...Wu],Xu=Ur,Uh=new Set(["mobile","doctor"]);function gn(e,t=cr()){return t?e:e.filter(r=>!Uh.has(r.name))}function wo(e,t="run"){let r=gn(t==="generate"?mn:Ur),n=e.startsWith("/")?e.slice(1):e;return n?r.filter(o=>o.name.startsWith(n)):r}var qh=new Set([...Ur,...mn].map(e=>e.name));function zu(e,t){let r=t==="generate"?mn:Ur;return qh.has(e)?r.some(n=>n.name===e):!0}var Ku=L(Ee(),1);var vt=L(G(),1);function Hh(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 Yu({saved:e,onContinue:t,onChangeDevice:r,onChangeApp:n,onCancel:o}){let i=Hh(e),[s,u]=(0,Ku.useState)(0);Be((p,x)=>{if(x.escape){o();return}if(x.upArrow&&u(c=>Math.max(0,c-1)),x.downArrow&&u(c=>Math.min(i.length-1,c+1)),x.return){let c=i[s];c.id==="continue"?t():c.id==="device"?r():n()}});let f=e.deviceMissing?`${e.savedDeviceLabel} \u2014 not connected`:`${e.target.displayName} ${e.target.id}`,g=e.savedAppLabel&&e.savedAppLabel!==e.appPath?` ${e.savedAppLabel}`:"",w=e.appMissing?e.savedAppLabel?`${e.savedAppLabel} \u2014 not found`:"none chosen yet":`${e.appPath}${g}`;return(0,vt.jsxs)(v,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:[(0,vt.jsx)(a,{color:l.orange,bold:!0,children:"Running on"}),(0,vt.jsxs)(v,{marginTop:1,flexDirection:"column",children:[(0,vt.jsxs)(v,{children:[(0,vt.jsx)(a,{color:l.dim,children:" Device "}),(0,vt.jsx)(a,{color:e.deviceMissing?l.red:void 0,children:f})]}),(0,vt.jsxs)(v,{children:[(0,vt.jsx)(a,{color:l.dim,children:" App "}),(0,vt.jsx)(a,{color:e.appMissing?l.red:void 0,children:w})]})]}),(0,vt.jsx)(v,{marginTop:1,flexDirection:"column",children:i.map((p,x)=>(0,vt.jsxs)(a,{color:x===s?l.orange:void 0,children:[x===s?"\u276F ":" ",p.label]},p.id))}),(0,vt.jsx)(Ot,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"select"}],escBackLabel:"back to chat"})]})}function Ju(e,t){let r=t?.trim();return r?e==="generate"?{kind:"reject"}:{kind:"run",objective:r}:e==="generate"?{kind:"toggle"}:{kind:"already"}}var dr=L(G(),1);function as({flows:e,filterIndex:t}){let r=t!==void 0?e.filter(n=>n.index===t):e;return r.length===0?null:(0,dr.jsx)(v,{flexDirection:"column",children:r.map(n=>(0,dr.jsxs)(v,{flexDirection:"column",marginTop:1,children:[(0,dr.jsxs)(v,{marginLeft:1,children:[(0,dr.jsx)(a,{color:l.purple,bold:!0,children:"Flow "+n.index+": "}),(0,dr.jsx)(a,{color:l.purple,children:n.objective})]}),(0,dr.jsx)(Ba,{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 fr=L(G(),1),Gh={ok:"\u2713",error:"\u2717",cancelled:"\u2298"},Wh={ok:l.green,error:l.red,cancelled:l.dim};function Qu({status:e,command:t,message:r,details:n,accentColor:o}){let i=t.startsWith("/")?t.slice(1):t,s=o??Wh[e];return(0,fr.jsxs)(v,{flexDirection:"column",marginLeft:2,marginTop:1,children:[(0,fr.jsx)(v,{marginLeft:1,children:(0,fr.jsxs)(a,{color:s,bold:!0,children:[Gh[e]," ",i]})}),(0,fr.jsxs)(v,{borderStyle:"round",borderColor:s,paddingX:2,flexDirection:"column",width:70,children:[(0,fr.jsx)(a,{children:r}),n&&(0,fr.jsx)(a,{color:l.dim,children:n})]})]})}var xn=L(Ee(),1);import{join as bn}from"path";var hn=L(G(),1);function Zu({tabs:e,activeIndex:t}){return(0,hn.jsx)(v,{children:e.map((r,n)=>(0,hn.jsx)(v,{marginRight:1,children:n===t?(0,hn.jsx)(a,{color:l.orange,bold:!0,children:`[ ${r} ]`}):(0,hn.jsx)(a,{color:l.dim,children:` ${r} `})},r))})}var I=L(G(),1),vn=["Commands","Shortcuts","Tests","Setup","About"],To=21,Xh="https://www.testmuai.com/support/docs/kane-cli-introduction",zh="https://github.com/LambdaTest/kane-cli/issues";function ed({onClose:e,version:t,environment:r,sessionId:n,runUrl:o,mode:i="run"}){let[s,u]=(0,xn.useState)(0),[f,g]=(0,xn.useState)(0);(0,xn.useEffect)(()=>{g(0)},[s]);let w=vn[s],p=w==="Commands"?Kh(i):w==="Shortcuts"?Yh():w==="Tests"?Jh():w==="Setup"?Qh():Zh({version:t,environment:r,sessionId:n,runUrl:o}),x=p.length,c=f>0,m=f+To<x,_=p.slice(f,f+To);Be((B,F)=>{if(F.escape){e();return}if(F.rightArrow||F.tab){u(H=>(H+1)%vn.length);return}if(F.leftArrow){u(H=>(H-1+vn.length)%vn.length);return}if(F.upArrow){g(H=>Math.max(0,H-1));return}if(F.downArrow){g(H=>Math.min(Math.max(0,x-To),H+1));return}});let U=[{keys:"\u2190\u2192/tab",label:"switch tabs"}];return x>To&&U.push({keys:"\u2191\u2193",label:"scroll"}),(0,I.jsxs)(v,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:[(0,I.jsx)(Zu,{tabs:[...vn],activeIndex:s,onChange:u}),c&&(0,I.jsx)(v,{marginTop:1,children:(0,I.jsx)(a,{color:l.dim,children:"\u25B2 more above"})}),(0,I.jsx)(v,{marginTop:c?0:1,flexDirection:"column",children:_}),m&&(0,I.jsx)(v,{children:(0,I.jsx)(a,{color:l.dim,children:"\u25BC more below"})}),(0,I.jsx)(Ot,{bindings:U,escBackLabel:"back to chat"})]})}function Kh(e){let t=gn(e==="generate"?mn:Ur);return[(0,I.jsx)(a,{color:l.dim,children:"Type a natural-language objective and press \u21B5 to run, e.g."},"intro"),(0,I.jsx)(v,{marginLeft:2,children:(0,I.jsx)(a,{color:l.orange,children:'"search amazon for laptop"'})},"ex"),(0,I.jsx)(v,{marginBottom:1},"sp"),(0,I.jsx)(a,{color:l.dim,bold:!0,children:"Slash commands"},"cmd-h"),...t.map(r=>(0,I.jsxs)(v,{marginLeft:2,children:[(0,I.jsx)(v,{width:14,children:(0,I.jsxs)(a,{color:l.orange,children:["/",r.name]})}),r.args&&(0,I.jsx)(v,{width:14,children:(0,I.jsx)(a,{color:l.dim,children:r.args})}),(0,I.jsx)(a,{color:l.dim,children:r.description})]},r.name)),(0,I.jsx)(v,{marginBottom:1},"sp2"),(0,I.jsx)(v,{marginLeft:2,children:(0,I.jsx)(a,{color:l.dim,children:"/auth submenu: login \xB7 logout \xB7 whoami \xB7 profiles \xB7 balance"})},"auth-sub"),(0,I.jsx)(v,{marginLeft:2,children:(0,I.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 Ro(e,t){return[(0,I.jsx)(a,{color:l.dim,bold:!0,children:e},`h-${e}`),...t.map(([r,n],o)=>(0,I.jsxs)(v,{marginLeft:2,children:[(0,I.jsx)(v,{width:26,children:(0,I.jsx)(a,{color:l.orange,children:r})}),(0,I.jsx)(a,{color:l.dim,children:n})]},`r-${e}-${o}`)),(0,I.jsx)(v,{marginBottom:1},`s-${e}`)]}function Yh(){return[...Ro("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"]]),...Ro("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"]]),...Ro("Lists & menus",[["\u2191 \u2193","Navigate"],["type any char","Filter"],["\u21B5","Select"],["Tab","Create-new (in pickers)"],["Esc","Clear filter, then back"]]),...Ro("Global",[["Ctrl+C","Cancel run \xB7 twice exits"]]),(0,I.jsx)(a,{color:l.dim,bold:!0,children:"Platform caveats"},"cv-h"),(0,I.jsx)(a,{color:l.dim,children:'\u2022 Mac Terminal.app: enable "Use Option as Meta key" (Profile \u2192 Keyboard)'},"cv-1"),(0,I.jsx)(a,{color:l.dim,children:"\u2022 Mac iTerm2: works by default (Esc+ mode)"},"cv-2"),(0,I.jsx)(a,{color:l.dim,children:"\u2022 Mac Mission Control may intercept Ctrl+arrow \u2014 use Option+arrow instead"},"cv-3"),(0,I.jsx)(a,{color:l.dim,children:"\u2022 Bare Forward Delete acts as Backspace (Ink can't disambiguate)"},"cv-4"),(0,I.jsx)(a,{color:l.dim,children:"\u2022 Shift+arrow is parsed but unbound (selection model is future)"},"cv-5"),(0,I.jsx)(a,{color:l.dim,children:"\u2022 Thousands of terminals exist \u2014 if a shortcut fails, run `cat` to see bytes"},"cv-6")]}function Jh(){return[(0,I.jsxs)(a,{color:l.dim,children:["Sessions you run here are saved as ",(0,I.jsx)(a,{color:l.orange,children:"*_test.md"})," files you can replay later."]},"t-intro"),(0,I.jsx)(v,{marginBottom:1},"t-sp1"),(0,I.jsx)(a,{color:l.dim,bold:!0,children:"Auto-save"},"t-save-h"),(0,I.jsxs)(a,{color:l.dim,children:[" In ",(0,I.jsx)(a,{color:l.orange,children:"testing"})," mode, /exit prompts to save the session under a name (default: timestamp)."]},"t-save-1"),(0,I.jsxs)(a,{color:l.dim,children:[" In ",(0,I.jsx)(a,{color:l.orange,children:"action"})," mode, sessions are ephemeral unless launched with --name or set via /name."]},"t-save-2"),(0,I.jsxs)(a,{color:l.dim,children:[" Output: ",(0,I.jsx)(a,{color:l.orange,children:"<cwd>/.testmuai/tests/<name>_test.md"})," + sibling ",(0,I.jsx)(a,{color:l.orange,children:"output-<name>/"})," (Result.md + .internal/meta.json)."]},"t-save-3"),(0,I.jsx)(v,{marginBottom:1},"t-sp2"),(0,I.jsx)(a,{color:l.dim,bold:!0,children:"Replay from a shell"},"t-run-h"),(0,I.jsxs)(a,{color:l.dim,children:[" ",(0,I.jsx)(a,{color:l.orange,children:"kane-cli testmd run path/to/foo_test.md"})," \xB7 ",(0,I.jsx)(a,{color:l.orange,children:"kane-cli testmd list"})," \xB7 bare ",(0,I.jsx)(a,{color:l.orange,children:"kane-cli testmd"})," opens a TTY picker."]},"t-run-1"),(0,I.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,I.jsx)(v,{marginBottom:1},"t-sp3"),(0,I.jsx)(a,{color:l.dim,bold:!0,children:"Naming a session mid-run"},"t-name-h"),(0,I.jsxs)(a,{color:l.dim,children:[" Type ",(0,I.jsxs)(a,{color:l.orange,children:["/name ","<new-name>"]})," any time before /exit. Name allowed chars: letters, digits, _, -."]},"t-name-1"),(0,I.jsxs)(a,{color:l.dim,children:[" Discarding at the save prompt: press ",(0,I.jsx)(a,{color:l.orange,children:"N"})," (only key that discards \u2014 every other key saves with default)."]},"t-name-2")]}function Qh(){return[(0,I.jsx)(a,{color:l.dim,bold:!0,children:"1. Login"},"s1-h"),(0,I.jsx)(a,{color:l.dim,children:" /auth \u2192 login. OAuth opens browser; basic uses LambdaTest username + access key."},"s1-b"),(0,I.jsx)(a,{color:l.dim,bold:!0,children:"2. Project & folder"},"s2-h"),(0,I.jsx)(a,{color:l.dim,children:" /config project / /config folder. Esc auto-picks KaneAI Generated / Untitled."},"s2-b"),(0,I.jsx)(a,{color:l.dim,bold:!0,children:"3. Run settings (/config \u2192 Run)"},"s3-h"),(0,I.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,I.jsx)(a,{color:l.dim,children:" assertion-mode: visual (default) = read/assert via vision \xB7 dom = DOM-based extraction/assertions"},"s3-c"),(0,I.jsx)(v,{marginBottom:1},"spacer-1"),(0,I.jsx)(a,{color:l.dim,bold:!0,children:"Variables (later wins)"},"v-h"),(0,I.jsxs)(a,{color:l.dim,children:[" ",`${bn(pt,"variables")}/*.json`," (global)"]},"v-1"),(0,I.jsxs)(a,{color:l.dim,children:[" ","{cwd}/.testmuai/variables/*.json"," (local) \xB7 --variables-file \xB7 --variables ","'{...}'"]},"v-2"),(0,I.jsx)(a,{color:l.dim,children:' Format: { "key": { "value": "...", "secret": false } } \xB7 ref via {{key}}'},"v-3"),(0,I.jsx)(v,{marginBottom:1},"spacer-2"),(0,I.jsx)(a,{color:l.dim,bold:!0,children:"Context files"},"c-h"),(0,I.jsxs)(a,{color:l.dim,children:[" Global: ",bn(pt,"global-memory.md")]},"c-1"),(0,I.jsxs)(a,{color:l.dim,children:[" Local: ","{cwd}/.testmuai/context.md"," \xB7 CLI: --global-context, --local-context"]},"c-2"),(0,I.jsx)(v,{marginBottom:1},"spacer-3"),(0,I.jsx)(a,{color:l.dim,bold:!0,children:"Paths"},"p-h"),(0,I.jsxs)(a,{color:l.dim,children:[" Config: ",bn(pt,"tui-config.json")," \xB7 Auth: ",bn(pt,"config.json")]},"p-1"),(0,I.jsxs)(a,{color:l.dim,children:[" Sessions: ",bn(pt,"sessions"),"/"]},"p-2")]}function Zh({version:e,environment:t,sessionId:r,runUrl:n}){return[(0,I.jsxs)(v,{children:[(0,I.jsx)(a,{color:l.orange,bold:!0,children:"kane-cli "}),(0,I.jsxs)(a,{color:l.muted,children:["v",e]})]},"title"),(0,I.jsx)(v,{marginBottom:1},"sp"),(0,I.jsxs)(v,{children:[(0,I.jsx)(v,{width:14,children:(0,I.jsx)(a,{color:l.dim,children:"Environment"})}),(0,I.jsx)(a,{children:t})]},"env"),(0,I.jsxs)(v,{children:[(0,I.jsx)(v,{width:14,children:(0,I.jsx)(a,{color:l.dim,children:"Session"})}),(0,I.jsx)(a,{children:r})]},"sess"),(0,I.jsxs)(v,{children:[(0,I.jsx)(v,{width:14,children:(0,I.jsx)(a,{color:l.dim,children:"Default URL"})}),(0,I.jsx)(a,{color:l.orange,children:n})]},"url"),(0,I.jsx)(v,{marginBottom:1},"sp2"),(0,I.jsxs)(v,{children:[(0,I.jsx)(v,{width:14,children:(0,I.jsx)(a,{color:l.dim,children:"Docs"})}),(0,I.jsx)(a,{color:l.orange,underline:!0,children:Xh})]},"docs"),(0,I.jsxs)(v,{children:[(0,I.jsx)(v,{width:14,children:(0,I.jsx)(a,{color:l.dim,children:"Bugs"})}),(0,I.jsx)(a,{color:l.orange,underline:!0,children:zh})]},"bugs")]}var ko=L(Ee(),1);import{existsSync as td,readFileSync as hS,rmSync as eb,unlinkSync as tb}from"fs";function rd(e){let t=$a(e);td(t)&&eb(t,{recursive:!0,force:!0}),td(e)&&tb(e)}var cs=L(G(),1);function nd({cwd:e,currentOrgId:t,onClose:r,onRun:n,onExport:o}){let[i,s]=(0,ko.useState)("list"),[u,f]=(0,ko.useState)(null),[g,w]=(0,ko.useState)(0);return i==="inspect"&&u?(0,cs.jsx)(Ma,{path:u.path,relPath:u.relPath,onBack:()=>s("list"),onAction:p=>{if(p==="run")n(u);else if(p==="export")o(u);else{try{rd(u.path)}catch{}f(null),s("list"),w(x=>x+1)}}}):(0,cs.jsx)(Oa,{root:e,currentOrgId:t,onSelect:p=>{f(p),s("inspect")},onCancel:r},g)}var ut=L(Ee(),1);function od(e){let[t,r]=(0,ut.useState)(null),[n,o]=(0,ut.useState)(!1),[i,s]=(0,ut.useState)(null),[u,f]=(0,ut.useState)(null),[g,w]=(0,ut.useState)(null),p=(0,ut.useRef)(0),x=(0,ut.useRef)([]),c=(0,ut.useRef)(!1),m=(0,ut.useRef)(null),_=(0,ut.useRef)(e);_.current=e;let U=(0,ut.useCallback)(async H=>{if(c.current)return null;c.current=!0;let $=++p.current,z=[];x.current=z;let fe=Y=>`testmd-run-${$}-${Y}`,oe={register:(Y,pe)=>{let we=fe(Y);z.push(we),Mt(we,pe)},deregister:Y=>en(fe(Y)),cleanup:(Y,pe)=>lr(fe(Y),pe),remoteLogger:_.current.remoteLogger},ie={runSteps:Y=>new Promise(pe=>{let we=()=>{m.current=null,pe()};m.current=we,r({...Y,exitOnComplete:!1,onAllComplete:()=>{Y.onAllComplete?.(),we()}})}),onLockState:Y=>{},onRetryAttempt:Y=>{},onSummary:async Y=>{s(Y)},onLinks:async Y=>{f(Y)},runUpload:Y=>Y.execute(),onAgentEvent:Y=>{}};o(!0),s(null),f(null),w(null);try{let Y=await _.current.buildInput(H),pe=await ec(Y,ie,oe);return w(pe),pe}finally{c.current=!1,m.current=null,o(!1),r(null);for(let Y of z)lr(Y,"run-finished");z.length=0}},[]),B=(0,ut.useCallback)(()=>{for(let $ of x.current)lr($,"cancelled");x.current=[];let H=m.current;m.current=null,H?.()},[]),F=(0,ut.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 rt=L(Ee(),1);function id(e={}){let[t,r]=(0,rt.useState)(()=>Jn({requestId:"",objective:""})),[n,o]=(0,rt.useState)(!1),[i,s]=(0,rt.useState)(null),u=(0,rt.useRef)(null),f=(0,rt.useRef)(!1),g=(0,rt.useRef)(null),w=(0,rt.useCallback)(async(U,B,F)=>{f.current=!1;let H=0,$=0,z=0;for await(let fe of U){if(f.current)break;switch(r(oe=>oc(oe,fe)),fe.type){case"thinking_done":F?.("tcg_thinking",{tookMs:fe.tookMs});break;case"progress":{let oe=Math.min(100,Math.floor(fe.pct/25)*25);oe>z&&(z=oe,F?.("tcg_progress",{pct:oe}));break}case"snapshot":H=fe.data.scenarios.length,$=fe.data.scenarios.reduce((oe,ie)=>oe+(ie.test_cases?.length??0),0),F?.("tcg_snapshot",{scenarioCount:H,caseCount:$});break;case"clarification":F?.("tcg_clarification",{});break;case"done":F?.("tcg_request_done",{status:fe.status,scenarioCount:H,caseCount:$,durationMs:Date.now()-B});break;case"error":F?.("tcg_request_error",{errorCode:"tcg_request_failed",durationMs:Date.now()-B});break}}},[]),p=(0,rt.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??ic;u.current=F(U),g.current=new AbortController;let H=Jn({requestId:"",objective:B.prompt});r(Qn(H));let $;try{$=await u.current.start(B,g.current.signal)}catch(fe){throw u.current=null,g.current=null,r(oe=>({...oe,turnActive:!1})),fe}s($.requestId),r(Qn({...$.state,requestId:$.requestId,objective:B.prompt}));let z=Date.now();e.log?.("tcg_request_start",{request_id:$.requestId,objectiveChars:B.prompt.length,scenarioLimit:B.scenarioLimit,perScenarioLimit:B.perScenarioLimit,memoryEnhancement:B.memoryEnhancement}),await w($.events,z,e.log)},[w,e.makeClient,e.log]),x=(0,rt.useCallback)(async(U,B)=>{if(!u.current||!i)throw new Error("useTcgSession: chat() with no active request");r(F=>Qn(nc(F)));try{await u.current.chat(i,U,B)}catch(F){throw r(H=>({...H,turnActive:!1})),F}},[i]),c=(0,rt.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,rt.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,rt.useCallback)(()=>{f.current=!0,g.current&&g.current.abort(),g.current=null,r(Jn({requestId:"",objective:""})),s(null),o(!1),u.current=null},[]);return(0,rt.useEffect)(()=>()=>{f.current=!0,g.current&&g.current.abort()},[]),{state:t,isStreaming:t.turnActive,isTerminal:rc(t.status),isReconnecting:n,turnActive:t.turnActive,inReview:t.scenarios.length>0&&!t.turnActive&&!Ti(t.status),isSessionClosed:Ti(t.status),requestId:i,startWith:p,chat:x,cancel:c,end:m,reset:_}}var he=L(Ee(),1);import{join as qr,resolve as mb}from"path";import{mkdirSync as us,writeFileSync as yd,appendFileSync as gb}from"fs";function sd(e){let t=Ne(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 ad(e){return e.turnActive?!0:e.requestId!=null&&!e.isSessionClosed&&!e.saved}function cd(e){return e.isRunning||e.hasLiveResults}function ld(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 ud(e,t){return`S${e+1}.C${t+1}`}function dd(e,t){return e.reduce((r,n)=>r+(n.test_cases??[]).filter(o=>!t.has(o.id)).length,0)}function fd(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 yn=L(Ee(),1);import{createHash as rb}from"crypto";function nb(e){return rb("sha1").update(JSON.stringify({t:e.title,p:e.preconditions,m:e.manual_steps})).digest("hex")}var Co=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(!jt(o)||o.manual_steps==null)return;let s=nb(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:ud(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);Mt(o,()=>i.abort());let u=Date.now();try{this.safeLog("tcg_bif_start",{caseId:t,ref:n.ref});let f=await s(uc(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{en(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=dc({objective:t,model:this.deps.model,sessionId:this.deps.sessionId,auth:n});return fc(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(),en(`bifurcation-${t}`);this.cache.clear(),this.caseById.clear(),this.queue=[],this.active=0}};function pd(e){let t=(0,yn.useRef)(null);return(0,yn.useEffect)(()=>{if(!e.enabled)return;let r=e.log,n=r?(o,i,s,u)=>r(i,u??{}):void 0;return t.current=new Co({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,yn.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 hd,isAbsolute as ib,extname as sb}from"path";import{homedir as gd}from"os";var ob=/(?<=^|\s)@(?:"([^"]*)"|([^\s@]+))/g;function md(e){let t=[];for(let r of e.matchAll(ob)){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 ab=/^s\d+(\.c\d+)?$/i;function cb(e){return e==="~"?gd():e.startsWith("~/")?hd(gd(),e.slice(2)):e}function lb(e){return/^https?:\/\//i.test(e)?!1:e.includes("/")?!0:Zn.has(sb(e).toLowerCase())}function bd(e,t){let r=md(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(ab.test(u)||!lb(u))continue;let g=cb(u),w=ib(g)?g:hd(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 ub=["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"],db=new Set(ub);function ls(e){let t={};for(let r of Object.keys(e))db.has(r)&&e[r]!==void 0&&(t[r]=e[r]);return t}import{mkdirSync as fb,appendFileSync as pb}from"fs";import{join as vd}from"path";function xd(e,t,r,n,o=pt){let i=vd(o,"tcg",e&&e.length>0?e:"pending"),s=vd(i,"errors.log");try{let u=r instanceof Error?r.stack??r.message:String(r),f=`[${new Date().toISOString()}] phase=${t} ${u}${n?" "+JSON.stringify(n):""}
|
|
6
|
-
`;fb(i,{recursive:!0}),pb(s,f)}catch{}return s}var Ge=L(G(),1);async function hb(e){let t=e?.getResolvedBasicAuth?.();if(t)return{username:t.username,access_key:t.access_key};let r=await e?.getToken?.();return typeof r=="string"&&r.length>0?{auth:{type:"bearer",token:r}}:{}}function Sd(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function wd(e){let{tcg:t,initialChatMode:r,tuiConfig:n,auth:o,session:i,appendStatic:s,handleInput:u,freezeTcgArtifact:f,rearmArtifactFreeze:g,initialGenerateLimits:w,ensureProjectAndFolder:p,config:x}=e,[c,m]=(0,he.useState)(r??"run"),[_,U]=(0,he.useState)(null),[B,F]=(0,he.useState)(null),[H,$]=(0,he.useState)(null),[z,fe]=(0,he.useState)(0),[oe,ie]=(0,he.useState)(!1),Y=(0,he.useRef)(null),pe=(0,he.useRef)(()=>{}),we=(0,he.useCallback)(()=>hb(o),[o]),me=(0,he.useRef)(null);me.current=t.requestId;let $e=(0,he.useCallback)((Q,le)=>{let ae=Q.endsWith("_error")?"warn":"info",re=ls({request_id:me.current??void 0,...le});i.log(ae,Q,JSON.stringify(re),re);try{let ue=typeof re.request_id=="string"&&re.request_id||me.current||"unknown",Te=qr(pt,"tcg",ue);us(Te,{recursive:!0}),gb(qr(Te,"tcg_tui.log"),`[${new Date().toISOString()}] ${Q} ${JSON.stringify(re)}
|
|
7
|
-
`)}catch{}},[i]),qe=(0,he.useCallback)((Q,le)=>{let ae=xd(me.current,le.phase,Q),re=typeof Q?.status=="number"?Q.status:void 0;$e(`${le.phase}_error`,{errorCode:`${le.phase}_failed`,status:re});let ue=le.phase==="upload"?"\u2717 Couldn't upload attachments \u2014 generation not started. Try again.":"\u2717 Generation failed \u2014 send another request.";s((0,Ge.jsxs)(v,{flexDirection:"column",marginTop:1,marginBottom:1,children:[(0,Ge.jsx)(a,{color:l.red,children:ue}),(0,Ge.jsx)(a,{color:l.dim,children:`details: ${ae}`})]})),U(null)},[$e,s]),it=(0,he.useRef)(0),Ht=(0,he.useCallback)((Q,le,ae)=>{try{let re=qr(pt,"tcg",me.current??"unknown","bifurcation");us(re,{recursive:!0}),yd(qr(re,`${Q}.json`),JSON.stringify({request_id:me.current,ref:ae,...le},null,2))}catch{}},[]),St=pd({scenarios:t.state?.scenarios??[],model:n.model,sessionId:i.sessionId,resolveAuth:we,environment:o?.creds?.getDefaultEnv?.(),enabled:!!t.requestId&&!t.isSessionClosed,log:$e,persist:Ht}),ge=(0,he.useRef)(null);(0,he.useEffect)(()=>{let Q=t.requestId;if(!Q||!t.isSessionClosed&&!t.isTerminal)return;let le=t.state?.scenarios??[];if(le.length!==0&&ge.current!==Q){ge.current=Q;try{let ae=qr(pt,"tcg",Q);us(ae,{recursive:!0}),yd(qr(ae,"request.json"),JSON.stringify({request_id:Q,objective:t.state?.objective,headline:t.state?.headline,scenarios:le,status:t.state?.status},null,2))}catch{}}},[t.requestId,t.isTerminal,t.isSessionClosed,t.state?.scenarios,t.state?.status,t.state?.objective,t.state?.headline]);let dt=(0,he.useCallback)((Q,le=1500)=>{$(Q),Y.current&&clearTimeout(Y.current),Y.current=setTimeout(()=>{$(null),Y.current=null},le)},[]);(0,he.useEffect)(()=>()=>{Y.current&&clearTimeout(Y.current)},[]);let Lt=(0,he.useCallback)((Q,le)=>{let ae=o.getResolver();if(!ae)return{ok:!1,error:"Not logged in \u2014 use /login"};let re=sd({env:o.creds.getDefaultEnv(),resolver:ae,projectId:Q??n.project_id??void 0,folderId:le??n.folder_id??void 0,log:(ue,Te,ft,P)=>i.log(ue,Te,"",ls(P??{}))});return re.ok?{ok:!0,conn:re.conn}:{ok:!1,error:re.error}},[o,n,i]),Oe=(0,he.useRef)(!1),De=(0,he.useRef)(null),[Gt,je]=(0,he.useState)(!1),Wt=(0,he.useCallback)((Q,le,ae,re,ue)=>{let Te=process.cwd(),{paths:ft,promptText:P}=bd(Q,Te);return mc({promptText:P,filePaths:ft,cwd:Te,scenarios:t.state?.scenarios??[],isRefine:le,conn:ae,deps:{validate:pc,upload:(D,K,q)=>gc(D,K,q,{signal:ue}),buildMappings:hc},onValidated:re})},[t]),pr=(0,he.useRef)(!1);(0,he.useEffect)(()=>{if(c!=="generate"){pr.current=!1;return}pr.current||n.project_id&&n.folder_id||p&&o.getResolver()&&(pr.current=!0,p())},[c,n.project_id,n.folder_id,p,o]);let Tr=(0,he.useCallback)(async Q=>{U(null),F(null),ie(!1);let le=Q.trim();if(!le)return;if(le.startsWith("/")){pe.current(le),fe(D=>D+1);return}let ae=n.project_id??null,re=n.folder_id??null;if(p){let D=await p();if(D)ae=D.projectId,re=D.folderId;else if(x){let K=x.load();ae=K.project_id??ae,re=K.folder_id??re}}else if(x){let D=x.load();ae=D.project_id??ae,re=D.folder_id??re}if(!ae||!re){F("Set a project and folder first \u2014 use /config");return}let ue=Lt(ae,re);if(!ue.ok){U(ue.error);return}if(Oe.current)return;Oe.current=!0;let Te=new AbortController;De.current=Te;let ft=ue.conn,P;try{P=await Wt(le,!1,ft,()=>{s((0,Ge.jsx)(v,{marginTop:1,children:(0,Ge.jsx)(a,{color:l.generateAccent,bold:!0,children:`\u276F ${le}`})})),je(!0)},Te.signal)}catch(D){if(D instanceof Ri){F(D.errors.join(`
|
|
8
|
-
`));return}if(Sd(D))return;qe(D,{phase:"upload"});return}finally{Oe.current=!1,je(!1),De.current===Te&&(De.current=null)}if(!Te.signal.aborted){for(let D of P.warnings)e.emitFeedback("ok","/generate",D,void 0,l.generateAccent);f(),t.reset(),g();try{let D=w??{};await t.startWith(ft,{prompt:P.promptText,attachments:P.attachments,scenarioLimit:D.scenarioLimit??n.generate.scenario_limit,perScenarioLimit:D.perScenarioLimit??n.generate.per_scenario_limit,memoryEnhancement:n.generate.memory_enabled})}catch(D){qe(D,{phase:"generation"})}}},[n,t,Lt,Wt,e,p,x,w,s,f,g,qe]),Gr=(0,he.useCallback)(()=>U(null),[]),Rr=(0,he.useCallback)(async Q=>{let le=Lt();if(!le.ok){U(le.error);return}if(Oe.current)return;Oe.current=!0;let ae=new AbortController;De.current=ae;let re;try{re=await Wt(Q,!0,le.conn,()=>{s((0,Ge.jsx)(a,{color:l.generateAccent,bold:!0,children:`\u276F ${Q}`})),it.current+=1,$e("tcg_refine",{turnIndex:it.current}),je(!0)},ae.signal)}catch(ue){if(ue instanceof Ri){F(ue.errors.join(`
|
|
9
|
-
`));return}if(Sd(ue))return;qe(ue,{phase:"upload"});return}finally{Oe.current=!1,je(!1),De.current===ae&&(De.current=null)}if(!ae.signal.aborted){for(let ue of re.warnings)e.emitFeedback("ok","/generate",ue,void 0,l.generateAccent);try{await t.chat(re.promptText,{mappings:re.mappings,attachments:re.attachments})}catch(ue){qe(ue,{phase:"chat"})}}},[s,t,$e,Lt,Wt,e,qe]),mr=(0,he.useCallback)(async Q=>{if(!Oe.current){Oe.current=!0,s((0,Ge.jsx)(a,{color:l.generateAccent,bold:!0,children:`\u276F ${Q}`}));try{await t.chat(Q)}catch(le){qe(le,{phase:"chat"})}finally{Oe.current=!1}}},[s,t,qe]),gr=(0,he.useCallback)(Q=>{let le=So(Q);if(le?.command==="view"){let ae=Q.trim().split(/\s+/).slice(1)[0];if(t.state.scenarios.length===0){e.emitFeedback("ok","/view","(no generation yet)");return}let re=ld(ae);if(re.level==="cases"&&re.scenarioIdx>=t.state.scenarios.length){e.emitFeedback("error","/view",`No scenario S${re.scenarioIdx+1}`);return}e.openBrowse(re);return}if(le?.command==="save"){let ae=t.state.scenarios;if(ae.length===0){e.emitFeedback("error","/save","Nothing to save yet.");return}let re=fd(ae,e.excluded),ue=re.reduce((D,K)=>D+(K.test_cases??[]).filter(jt).length,0);if(ue===0){e.emitFeedback("error","/save",dd(ae,e.excluded)===0?"All cases removed \u2014 nothing to save.":"No functional test cases to save.");return}let Te={...t.state,scenarios:re},ft=Q.trim().split(/\s+/).slice(1)[0],P=ft?mb(process.cwd(),ft):process.cwd();ie(!0),e.freezeTcgArtifact(),(async()=>{let D=re.flatMap(de=>(de.test_cases??[]).filter(jt)),K=Date.now()+3e4;for(;Date.now()<K&&D.some(de=>St.getStatus(de.id)==="pending");)await new Promise(de=>setTimeout(de,250));let q=new Map;for(let de of D)q.set(de.id,St.getStatus(de.id)==="done"?St.getResult(de.id):void 0);t.end();let Z=0,_e=de=>{let xt=q.get(de.id);return xt?ac(xt,de):(Z++,cc(de))};try{let de=await lc(Te,P,{},_e);$e("tcg_save",{savedCount:de.paths.length,fellBack:Z})}catch(de){e.emitFeedback("error","/save",`Save failed: ${de.message}`);return}let Ye=`test case${ue===1?"":"s"}`;e.emitFeedback("ok","/save",Z>0?`Saved ${ue} ${Ye} \xB7 ${Z} fell back to raw steps.`:`Saved ${ue} ${Ye}.`)})();return}le?.command==="new"&&ie(!1),u(Q)},[u,e,t,St,$e]);pe.current=gr;let wt=(0,he.useCallback)(Q=>{m(Q),fe(le=>le+1)},[]),hr=(0,he.useCallback)(Q=>{let le=c==="generate"&&Q==="run",ae=c==="run"&&Q==="generate",re=ad({requestId:t.requestId,isSessionClosed:t.isSessionClosed,turnActive:t.turnActive,saved:oe}),ue=cd({isRunning:e.runner.isRunning,hasLiveResults:e.runner.lastRunEnd!=null});return le&&re?(e.openSwitchConfirm("run"),!1):ae&&ue?(e.openSwitchConfirm("generate"),!1):(wt(Q),!0)},[c,t.requestId,t.isSessionClosed,t.turnActive,oe,e,wt]),kr=(0,he.useCallback)(async Q=>{c==="generate"?(e.freezeTcgArtifact(),await t.end().catch(()=>{}),t.reset(),ie(!1),e.appendStatic((0,Ge.jsxs)(v,{marginBottom:1,children:[(0,Ge.jsx)(a,{color:l.red,children:"\u2717 "}),(0,Ge.jsx)(a,{color:l.dim,children:"Discarded generation"})]}))):(e.runner.isRunning&&e.runner.cancelRun(),e.runner.clearLastRun(),e.appendStatic((0,Ge.jsxs)(v,{marginBottom:1,children:[(0,Ge.jsx)(a,{color:l.red,children:"\u2717 "}),(0,Ge.jsx)(a,{color:l.dim,children:"Discarded run"})]}))),wt(Q),Q==="generate"?e.emitFeedback("ok","/generate","Switched to Generate mode.",void 0,l.generateAccent):e.emitFeedback("ok","/run","Switched to Run mode.",void 0,l.orange)},[c,t,e,wt]),br=(0,he.useCallback)(()=>{if(t.isStreaming)e.freezeTcgArtifact(),t.cancel();else if(De.current)De.current.abort();else return;e.appendStatic((0,Ge.jsxs)(v,{marginBottom:1,children:[(0,Ge.jsx)(a,{color:l.red,children:"\u2717 "}),(0,Ge.jsx)(a,{color:l.dim,children:"Generation cancelled"})]}))},[e,t]);return{chatMode:c,tcgError:_,tcgValidationError:B,composeIdleHint:H,inputClearSeq:z,submitting:Gt,handleGenerateSubmit:Tr,onRefine:Rr,onClarificationAnswer:mr,onSlash:gr,onClearError:Gr,flashComposeHint:dt,setInputClearSeq:fe,setChatMode:m,setTcgError:U,setTcgValidationError:F,generateSaved:oe,requestSwitch:hr,confirmSwitch:kr,cancelGenerate:br,bifurcation:St,tcgLog:$e}}var Ut=L(Ee(),1);function Eo(e){return e.level==="cases"?{level:"cases",scenarioIdx:e.scenarioIdx,caseIdx:0,cursor:0}:{level:"scenarios",scenarioIdx:0,caseIdx:0,cursor:0}}var bb=(e,t)=>Math.max(0,Math.min(t,e));function ds(e,t,r){switch(t.type){case"open":return Eo(t.target);case"move":{let n=e.level==="scenarios"?r.length-1:e.level==="cases"?(r[e.scenarioIdx]??1)-1:0;return{...e,cursor:bb(e.cursor+t.delta,Math.max(0,n))}}case"enter":return e.level==="scenarios"?{...e,level:"cases",scenarioIdx:e.cursor,caseIdx:0,cursor:0}:e.level==="cases"?{...e,level:"detail",caseIdx:e.cursor}:e;case"back":return e.level==="detail"?{...e,level:"cases",cursor:e.caseIdx}:e.level==="cases"?{...e,level:"scenarios",cursor:e.scenarioIdx}:e;default:return e}}function Td(e){let[t,r]=(0,Ut.useState)(null),[n,o]=(0,Ut.useReducer)((p,x)=>ds(p,x,e),Eo({level:"scenarios"})),[i,s]=(0,Ut.useState)(new Set),u=(0,Ut.useCallback)(p=>{r(p),o({type:"open",target:p})},[]),f=(0,Ut.useCallback)(()=>r(null),[]),g=(0,Ut.useCallback)(p=>{s(x=>{let c=new Set(x);return c.has(p)?c.delete(p):c.add(p),c})},[]),w=(0,Ut.useCallback)(p=>{s(x=>{let c=new Set(x),m=p.length>0&&p.every(_=>c.has(_));return p.forEach(_=>m?c.delete(_):c.add(_)),c})},[]);return{target:t,open:u,close:f,isOpen:t!=null,state:n,excluded:i,toggleCase:g,toggleScenario:w}}var Io=L(Ee(),1);function Rd(){return{committedChat:0,committedThinking:0,prevTurnActive:!1}}function kd(e,t,r){let n=[],o={...e};if(e.prevTurnActive&&!r&&t.thinkingLog.length>e.committedThinking){let s=t.thinkingLog.slice(e.committedThinking).reduce((f,g)=>f+(g.tookMs??0),0),u=Math.round(s/1e3);n.push({kind:"thinking-summary",text:` thought for ${u}s`}),o.committedThinking=t.thinkingLog.length}o.prevTurnActive=r;for(let i=e.committedChat;i<t.chatLog.length;i++)n.push({kind:"chat",text:t.chatLog[i].text});return o.committedChat=t.chatLog.length,{items:n,next:o}}var fs=L(G(),1);function vb(e){return e.kind==="thinking-summary"?(0,fs.jsx)(a,{color:l.dim,children:e.text}):(0,fs.jsx)(bc,{text:e.text})}function Cd(e,t,r){let n=(0,Io.useRef)(Rd());(0,Io.useEffect)(()=>{let{items:o,next:i}=kd(n.current,e,t);n.current=i;for(let s of o)r(vb(s))})}var We=L(Ee(),1);import{readFileSync as xb,writeFileSync as yb,renameSync as Sb,mkdirSync as wb}from"fs";import{dirname as Tb}from"path";var ps=1,Ed=()=>({schemaVersion:ps,numStartups:0,perHint:{}}),Ao=class{constructor(t=$s){this.path=t;this.data=this.read()}data;read(){try{let t=JSON.parse(xb(this.path,"utf-8"));return t.schemaVersion!==ps?Ed():{schemaVersion:ps,numStartups:typeof t.numStartups=="number"?t.numStartups:0,perHint:t.perHint??{}}}catch{return Ed()}}write(){try{wb(Tb(this.path),{recursive:!0});let t=`${this.path}.tmp`;yb(t,JSON.stringify(this.data,null,2)+`
|
|
10
|
-
`),Sb(t,this.path)}catch(t){process.stderr.write(`[hints] Failed to save state: ${t instanceof Error?t.message:String(t)}
|
|
11
|
-
`)}}get numStartups(){return this.data.numStartups}shownCount(t){return this.data.perHint[t]?.shownCount??0}sessionsSince(t){let r=this.data.perHint[t];return r?this.data.numStartups-r.lastShownStartup:1/0}bumpStartup(){return this.data.numStartups+=1,this.write(),this.data.numStartups}recordShown(t){let r=this.data.perHint[t];this.data.perHint[t]={shownCount:(r?.shownCount??0)+1,lastShownStartup:this.data.numStartups},this.write()}prune(t){let r=new Set(t),n=!1;for(let o of Object.keys(this.data.perHint))r.has(o)||(delete this.data.perHint[o],n=!0);n&&this.write()}};import{readFileSync as Rb,writeFileSync as kb,renameSync as Cb,mkdirSync as Eb}from"fs";import{dirname as Ib}from"path";var Id=1,Ab=3600*1e3;function Ad(e,t=Date.now()){return e!==null&&t-e.fetchedAt<Ab}function _d(e,t=ai(e)){try{let r=JSON.parse(Rb(t,"utf-8"));if(r.wrapperVersion!==Id)return null;let{catalog:n}=mo(r.catalog);return n?{catalog:n,fetchedAt:typeof r.fetchedAt=="number"?r.fetchedAt:0}:null}catch{return null}}function Pd(e,t,r=ai(e)){try{Eb(Ib(r),{recursive:!0});let n={wrapperVersion:Id,writtenByVersion:at,fetchedAt:Date.now(),catalog:t},o=`${r}.tmp`;kb(o,JSON.stringify(n,null,2)+`
|
|
12
|
-
`),Cb(o,r)}catch(n){process.stderr.write(`[hints] Failed to save catalog cache: ${n instanceof Error?n.message:String(n)}
|
|
13
|
-
`)}}var _b=5e3;async function Ld(e){let t=new AbortController,r=setTimeout(()=>t.abort(),_b);try{let o=`${Ne(e.env).controllerBaseUrl}/public/hints/catalog?clientVersion=${encodeURIComponent(at)}&env=${e.env}`,i=await Us(o,{headers:{Accept:"application/json"},signal:t.signal});if(!i.ok)return{status:"error"};let s=await i.json(),{catalog:u}=mo(s);return u?{status:"ok",catalog:u}:{status:"error"}}catch{return{status:"error"}}finally{clearTimeout(r)}}var _o=L(Wi(),1);function Dd(e,t=at){let r=_o.default.coerce(e??"");if(!r)return!0;let n=_o.default.coerce(t);return n?_o.default.gte(n,r):!0}var Pb={no_chrome_profile:e=>e.config.chrome_profile_path==="",code_export_off:e=>e.config.code_export.enabled===!1,generate_memory_off:e=>e.config.generate.memory_enabled===!1,auth_invalid:e=>e.tokenValid===!1,testing_no_project:e=>e.config.mode==="testing"&&e.config.project_id===null,first_runs:e=>e.numStartups<5,platform_macos:e=>e.platform==="darwin",platform_windows:e=>e.platform==="win32",not_used_generate_this_session:e=>e.sessionUsedGenerate===!1};function Bd(e,t){let r=[],n=!0;for(let o of e){let i=Pb[o];if(!i){r.push(o),n=!1;continue}i(t)||(n=!1)}return{pass:n,unknown:r}}var Lb=3,Db=(e,t)=>e==="both"||e===t;function Bb(e,t,r){return e.boost?t.shownCount(e.id)<e.boost.maxShows&&r<Date.parse(e.boost.until):!1}var $b=e=>Number.isFinite(e)?1:Lb;function Ob(e,t){let r=e.filter(i=>i.weight>0);if(r.length===0)return null;let n=r.reduce((i,s)=>i+s.weight,0),o=t()*n;for(let i of r)if(o-=i.weight,o<=0)return i.hint;return r[r.length-1].hint}function $d(e){let{catalog:t,store:r,mode:n,now:o,predicateCtx:i,rng:s}=e,u=[];if(!t.enabled)return{footer:null,skipped:u,boosted:!1};let f=[];for(let p of t.hints){if(!Dd(p.minVersion)){u.push({id:p.id,reason:"min_version"});continue}let x=Bd(p.relevance,i);if(x.unknown.length>0){u.push({id:p.id,reason:"unknown_predicate"});continue}if(!x.pass||!Db(p.target,n))continue;if(p.retireAfterShows!==void 0&&r.shownCount(p.id)>=p.retireAfterShows){u.push({id:p.id,reason:"retired"});continue}if(r.sessionsSince(p.id)<p.cooldownSessions)continue;let c=Bb(p,r,o),m=(c?p.boost.weight:p.weight)*$b(r.sessionsSince(p.id));f.push({hint:p,weight:m,boosted:c})}let g=Ob(f.map(({hint:p,weight:x})=>({hint:p,weight:x})),s),w=g?f.find(p=>p.hint.id===g.id)?.boosted??!1:!1;return{footer:g,skipped:u,boosted:w}}function Od(e){return{shown(t){e("info","hint_shown",`hint shown: ${t.id}`,{...t})},skipped(t){let r=t.reason==="unknown_predicate"?"warn":"info";e(r,"hint_skipped",`hint skipped: ${t.id} (${t.reason})`,{...t})}}}function Md(e){let[t,r]=(0,We.useState)(null),[n,o]=(0,We.useState)(0),i=(0,We.useRef)(null),s=(0,We.useRef)(!1),u=(0,We.useRef)(new Set),f=(0,We.useRef)(!1),g=(0,We.useRef)(null),w=(0,We.useRef)(null),p=(0,We.useRef)(null),x=(0,We.useRef)(!1),c=(0,We.useRef)(!1),m=(0,We.useRef)(null),_=(0,We.useRef)(!0);return(0,We.useEffect)(()=>()=>{_.current=!1},[]),(0,We.useEffect)(()=>{if(!e.enabled||!e.ready)return;let U=i.current??(i.current=e.store??new Ao),B=e.now??Date.now;if(m.current!==e.env&&(m.current=e.env,g.current=null,x.current=!1,c.current=!1,w.current=null,p.current=null),g.current===null){let we=_d(e.env);g.current={catalog:we?.catalog??null,fetchedAt:we?.fetchedAt??0}}let F=g.current,H=Ad(F.catalog?{catalog:F.catalog,fetchedAt:F.fetchedAt}:null,B()),$=e.catalog??(H?F.catalog:null);if(s.current||(s.current=!0,U.bumpStartup()),!x.current&&(x.current=!0,!H)){let we=e.env;(async()=>{let me=await Ld({env:we});me.status==="ok"&&(Pd(we,me.catalog),m.current===we&&(g.current={catalog:me.catalog,fetchedAt:B()},_.current&&o($e=>$e+1)))})()}if(!$){w.current=null,r(null);return}if(c.current||(c.current=!0,U.prune($.hints.map(we=>we.id))),!(p.current!==e.chatMode)&&w.current!==null)return;p.current=e.chatMode;let fe=Od(e.log),oe=e.rng??Math.random,ie=B(),Y={config:e.config,tokenValid:e.tokenValid,numStartups:U.numStartups,platform:process.platform,sessionUsedGenerate:e.sessionUsedGenerate},pe=$d({catalog:$,store:U,mode:e.chatMode,now:ie,predicateCtx:Y,rng:oe});w.current=pe.footer,r(pe.footer),pe.footer&&!u.current.has(pe.footer.id)&&(u.current.add(pe.footer.id),U.recordShown(pe.footer.id),fe.shown({id:pe.footer.id,category:pe.footer.category,surface:"footer",boosted:pe.boosted})),f.current||(f.current=!0,pe.skipped.forEach(we=>fe.skipped(we)))},[e.enabled,e.ready,e.chatMode,e.env,n]),{footerHint:t}}var Nd=L(Ee(),1);import{readdir as Mb}from"fs/promises";import{join as Nb,relative as jb,extname as Vb}from"path";var Fb=new Set(["node_modules",".git"]),Ub=e=>e.startsWith("output-");async function Po(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 Mb(f,{withFileTypes:!0})}catch{return}for(let p of w){if(s.length>=n)return;if(p.name.startsWith(".")||Fb.has(p.name)||Ub(p.name))continue;let x=Nb(f,p.name);if(p.isDirectory())await u(x,g+1);else if(p.isFile()){if(!Zn.has(Vb(p.name).toLowerCase()))continue;let c=jb(e,x);(!i||c.toLowerCase().includes(i))&&s.push(c)}}}return await u(e,0),s.slice(0,n)}var Xe=L(G(),1);function jd({projectId:e,folderId:t,onSubmit:r,history:n,error:o,validationError:i,composeIdleHint:s,clearSeq:u,closedNotice:f,busy:g=!1}){let w=!!e&&!!t,p=(0,Nd.useCallback)(x=>Po(process.cwd(),x),[]);return(0,Xe.jsxs)(v,{flexDirection:"column",children:[(0,Xe.jsx)(v,{marginLeft:2,marginTop:1,children:!w&&(0,Xe.jsxs)(a,{color:l.orange,children:["\u2691 ",(0,Xe.jsx)(a,{color:l.muted,children:"project / folder not set \u2014 use "}),(0,Xe.jsx)(a,{bold:!0,children:"/config"})]})}),i&&(0,Xe.jsx)(v,{marginLeft:2,marginTop:1,children:(0,Xe.jsx)(zt,{variant:"error",paddingY:0,children:(0,Xe.jsx)(a,{color:l.red,children:i})})}),o&&(0,Xe.jsx)(v,{marginLeft:2,marginTop:1,children:(0,Xe.jsx)(zt,{variant:"error",paddingY:0,children:(0,Xe.jsx)(a,{color:l.red,children:o})})}),f&&(0,Xe.jsx)(v,{paddingX:1,children:(0,Xe.jsx)(a,{color:l.dim,children:f})}),s&&(0,Xe.jsx)(v,{marginLeft:2,marginTop:1,children:(0,Xe.jsx)(a,{color:l.dim,children:s})}),(0,Xe.jsx)(ar,{inert:g,onSubmit:r,history:n,accent:l.generateAccent,commands:wo("","generate"),clearSeq:u,clearOnSubmit:!1,mentionFiles:p,placeholder:g?"Processing files\u2026 (Ctrl+C to cancel)":"Describe what to generate... (/ = commands)",footerBindings:g?[{keys:"ctrl+c",label:"cancel"}]:[{keys:"\u2191\u2193",label:"history"},{keys:"\u21B5",label:"generate"},{keys:"tab",label:"complete"},{keys:"/run",label:"Run mode"},{keys:"ctrl+t",label:"thinking"}]})]})}var Gd=L(Ee(),1);var nt=L(G(),1);function qb(e){return e?`[${e[0].toUpperCase()}]`:""}var Hb=8;function Lo({scenarios:e,headline:t,activeSid:r}){let n=e.slice(0,Hb),o=e.length-n.length;return(0,nt.jsxs)(v,{flexDirection:"column",marginBottom:1,marginLeft:2,children:[t&&(0,nt.jsx)(v,{paddingX:1,children:(0,nt.jsx)(a,{color:l.generateAccent,bold:!0,children:t})}),(0,nt.jsxs)(zt,{title:`Scenarios (${e.length})`,titleColor:l.generateAccent,borderColor:l.generateAccent,paddingX:1,children:[n.map(i=>{let s=!!r&&i.sid===r,u=s?"\u2237":"\u2713",f=s?l.generateAccent:l.green,g=i.test_cases?.length??0;return(0,nt.jsxs)(v,{gap:1,children:[(0,nt.jsx)(a,{color:f,children:u}),(0,nt.jsx)(a,{color:l.dim,children:i.sid??`#${i.id}`}),(0,nt.jsx)(a,{children:i.title??"(untitled)"}),(0,nt.jsx)(a,{color:l.muted,children:qb(i.priority)}),(0,nt.jsxs)(a,{color:l.dim,children:[g," case",g===1?"":"s"]})]},i.id)}),o>0&&(0,nt.jsx)(a,{color:l.muted,children:`\u22EE +${o} more`}),(0,nt.jsx)(v,{marginTop:1,children:(0,nt.jsxs)(a,{color:l.dim,children:[(0,nt.jsx)(a,{color:l.generateAccent,children:"/view"})," view/edit \xB7 ",(0,nt.jsx)(a,{color:l.generateAccent,children:"/save"})," save as runnable tests"]})})]})]})}var Hr=L(G(),1),Vd=24;function Gb(e){let t=Math.max(0,Math.min(100,e)),r=Math.round(t/100*Vd);return{filled:"\u2588".repeat(r),empty:"\u2591".repeat(Vd-r)}}function Fd({pct:e}){let t=Gb(e);return(0,Hr.jsxs)(v,{paddingX:1,children:[(0,Hr.jsx)(a,{color:l.generateAccent,children:t.filled}),(0,Hr.jsx)(a,{color:l.muted,children:t.empty}),(0,Hr.jsx)(a,{color:l.dim,children:` ${e}%`})]})}var Ud=L(Ee(),1);var Jt=L(G(),1);function qd(e,t){let r=e.trim();return r.startsWith("/")?{kind:"slash",text:r}:r?t?{kind:"ignore",text:r}:{kind:"refine",text:r}:{kind:"ignore",text:""}}function Hd({state:e,history:t,turnActive:r,busy:n=!1,onClarificationAnswer:o,onClearError:i,onRefine:s,onSlash:u}){let f=(0,Ud.useCallback)(w=>Po(process.cwd(),w),[]),g=o?w=>{i?.(),o(w)}:void 0;return(0,Jt.jsxs)(Jt.Fragment,{children:[e.pendingClarification&&g&&(0,Jt.jsx)(v,{paddingX:1,marginTop:1,flexDirection:"column",children:(0,Jt.jsx)(ar,{onSubmit:g,history:t,noHistory:!0,accent:l.generateAccent,placeholder:"Type your answer\u2026",submitVerb:"answer",footerBindings:[{keys:"\u21B5",label:"answer"}]})}),!(e.pendingClarification&&g)&&(r||n?(0,Jt.jsx)(ar,{inert:!0,onSubmit:()=>{},history:t,placeholder:r?"(generating\u2026 input inert \u2014 Ctrl+C to cancel)":"(processing files\u2026 Ctrl+C to cancel)",footerBindings:r?void 0:[{keys:"ctrl+c",label:"cancel"}]}):(0,Jt.jsx)(ar,{onSubmit:w=>{let p=qd(w,r);p.kind==="slash"?u?.(p.text):p.kind==="refine"&&s?.(p.text)},history:t,noHistory:!0,accent:l.generateAccent,commands:wo("","generate"),scenarios:e.scenarios,mentionFiles:f,placeholder:"Refine, or /save \xB7 /view \xB7 /run",submitVerb:"refine",footerBindings:[{keys:"\u21B5",label:"refine"},{keys:"tab",label:"complete"},{keys:"/run",label:"Run mode"},{keys:"ctrl+t",label:"thinking"}]}))]})}var Et=L(G(),1);function Wd({state:e,requestId:t,history:r,onClarificationAnswer:n,error:o,onClearError:i,turnActive:s,busy:u=!1,onRefine:f,onSlash:g}){let[w,p]=(0,Gd.useState)(!1),x=e.thinking.length===0&&e.thinkingLog.length>0,c=[...e.thinkingLog.map(m=>m.text),e.thinking].filter(m=>m.length>0).join(`
|
|
14
|
-
|
|
15
|
-
`);return Be((m,_)=>{_.ctrl&&m==="t"&&p(U=>!U)}),(0,Et.jsxs)(v,{flexDirection:"column",children:[(0,Et.jsx)(v,{marginBottom:1,marginLeft:2,children:(0,Et.jsx)(vc,{thinking:c,expanded:w,thinkingDone:x})}),s&&(0,Et.jsx)(v,{marginLeft:2,children:(0,Et.jsx)(Fd,{pct:e.progress})}),o&&(0,Et.jsx)(v,{marginLeft:2,marginTop:1,children:(0,Et.jsx)(zt,{variant:"error",paddingY:0,children:(0,Et.jsx)(a,{color:l.red,children:o})})}),e.scenarios.length>0&&(0,Et.jsx)(Lo,{scenarios:e.scenarios,headline:e.headline,activeSid:null}),(0,Et.jsx)(Hd,{state:e,history:r,turnActive:s,busy:u,onClarificationAnswer:n,onClearError:i,onRefine:f,onSlash:g})]})}var Jd=L(Ee(),1);var ot=L(G(),1);function Wb(e,t){return(e.test_cases??[]).some(r=>!t.has(r.id))}function Xd({scenarios:e,cursor:t,excluded:r}){let n=e.reduce((o,i)=>o+(i.test_cases??[]).length,0);return(0,ot.jsxs)(v,{flexDirection:"column",paddingX:1,children:[(0,ot.jsxs)(a,{children:[(0,ot.jsx)(a,{color:l.dim,children:"Generate \u203A "}),(0,ot.jsx)(a,{color:l.generateAccent,children:"Scenarios"}),(0,ot.jsx)(a,{color:l.dim,children:` ${e.length} scenarios \xB7 ${n} cases`})]}),(0,ot.jsx)(a,{color:l.muted,children:"\u2500".repeat(60)}),(0,ot.jsx)(v,{flexDirection:"column",marginY:1,children:e.map((o,i)=>{let s=i===t,u=Wb(o,r);return(0,ot.jsxs)(a,{children:[(0,ot.jsx)(a,{color:l.generateAccent,children:s?"\u276F ":" "}),(0,ot.jsx)(a,{color:l.generateAccent,children:`S${i+1}`}),(0,ot.jsx)(a,{children:` ${o.title??"(untitled)"}`}),(0,ot.jsx)(a,{color:l.dim,children:` [${o.priority??"-"}] ${(o.test_cases??[]).length} cases `}),(0,ot.jsx)(a,{color:u?l.green:l.red,children:u?"\u2713":"\u2717"})]},o.id)})}),(0,ot.jsx)(a,{color:l.muted,children:"\u2500".repeat(60)}),(0,ot.jsx)(a,{color:l.dim,children:"\u2191\u2193 move \u21B5 open x remove esc back to chat"})]})}var ze=L(G(),1);function zd({scenario:e,scenarioIdx:t,cursor:r,excluded:n}){let o=e.test_cases??[],i=o.some(s=>!jt(s));return(0,ze.jsxs)(v,{flexDirection:"column",paddingX:1,children:[(0,ze.jsxs)(a,{children:[(0,ze.jsx)(a,{color:l.dim,children:"Generate \u203A Scenarios \u203A "}),(0,ze.jsx)(a,{color:l.generateAccent,children:`S${t+1} ${e.title??"(untitled)"}`}),(0,ze.jsx)(a,{color:l.dim,children:` ${o.length} cases`})]}),(0,ze.jsx)(a,{color:l.muted,children:"\u2500".repeat(60)}),(0,ze.jsx)(v,{flexDirection:"column",marginY:1,children:o.map((s,u)=>{let f=u===r,g=n.has(s.id);return(0,ze.jsxs)(a,{children:[(0,ze.jsx)(a,{color:l.generateAccent,children:f?"\u276F ":" "}),(0,ze.jsx)(a,{color:l.generateAccent,children:`C${u+1}`}),(0,ze.jsx)(a,{children:` ${s.title??"(untitled)"} `}),jt(s)?(0,ze.jsx)(a,{color:g?l.red:l.green,children:g?"\u2717 removed":"\u2713 included"}):(0,ze.jsx)(a,{color:l.dim,children:"\u2713"})]},s.id)})}),(0,ze.jsx)(a,{color:l.muted,children:"\u2500".repeat(60)}),i&&(0,ze.jsx)(a,{color:l.dim,children:"gray \u2713 = non-functional \xB7 won't be saved by /save"}),(0,ze.jsx)(a,{color:l.dim,children:"\u2191\u2193 move \u21B5 view detail x remove case \u2190 / esc back"})]})}var $o=L(Ee(),1);function Do(e,t){let r=Math.max(1,t),n=[];for(let o of e.split(`
|
|
16
|
-
`)){let i=o.split(/\s+/).filter(f=>f.length>0);if(i.length===0){n.push("");continue}let s="",u=()=>{s&&(n.push(s),s="")};for(let f of i){for(;f.length>r;)u(),n.push(f.slice(0,r)),f=f.slice(r);s===""?s=f:s.length+1+f.length<=r?s+=" "+f:(u(),s=f)}u()}return n}function Kd(e,t,r,n){let o=Math.max(20,n),i=[];if(r){for(let u of Do(r,o))i.push({text:u,tone:"meta"});i.push({text:"",tone:"blank"})}let s=(u,f)=>{let g=f?.trim();if(g){i.push({text:u,tone:"label"});for(let w of Do(g,o-2))i.push({text:" "+w,tone:"text"});i.push({text:"",tone:"blank"})}};return s("Description",e?.description),s("Preconditions",e?.preconditions),t.length>0&&(i.push({text:"Steps",tone:"label"}),t.forEach((u,f)=>{let g=`${f+1}. `;Do(u.step||"",Math.max(1,o-g.length)).forEach((x,c)=>{c===0?i.push({text:x,tone:"step",accent:g}):i.push({text:" ".repeat(g.length)+x,tone:"step"})});let p=u.expected?.trim();if(p){let x=" \u2192 ",c=" ";Do(p,Math.max(1,o-x.length)).forEach((m,_)=>i.push({text:(_===0?x:c)+m,tone:"expected"}))}})),i}function Bo(e,t,r){let n=Math.max(0,t-r);return Math.max(0,Math.min(e,n))}var Ke=L(G(),1),Xb=7;function zb(e){return e==="text"||e==="step"?void 0:l.dim}function Yd({scenario:e,scenarioIdx:t,caseIdx:r,excluded:n,getStatus:o,getResult:i}){let s=(e.test_cases??[])[r],u=s?n.has(s.id):!1,f=s?jt(s):!0,g=s&&o?o(s.id):void 0,w=g==="done"?(0,Ke.jsx)(a,{color:l.generateAccent,children:"ready"}):g==="error"?(0,Ke.jsx)(a,{color:l.red,children:"failed \u2192 raw steps"}):g==="pending"?(0,Ke.jsx)(a,{color:l.dim,children:"bifurcating\u2026"}):null,p=g==="done"&&s&&i?i(s.id):void 0,x=p?p.sub_objectives.map(ie=>({step:ie.objective,expected:""})):sc(s?.manual_steps),c=[s?.priority&&`Priority ${s.priority}`,s?.polarity&&`Polarity ${s.polarity}`,s?.tags&&`Tags ${s.tags}`].filter(Boolean).join(" \xB7 "),{stdout:m}=Pr(),_=Math.max(20,(m?.columns??80)-4),U=Math.max(3,(m?.rows??24)-Xb),B=Kd(s,x,c,_),[F,H]=(0,$o.useState)(0);(0,$o.useEffect)(()=>{H(0)},[s?.id]);let $=Bo(F,B.length,U);Be((ie,Y)=>{if(Y.upArrow){H(pe=>Bo(pe-1,B.length,U));return}if(Y.downArrow){H(pe=>Bo(pe+1,B.length,U));return}});let z=B.slice($,$+U),oe=B.length>U?` ${$+1}-${Math.min($+U,B.length)}/${B.length}`:"";return(0,Ke.jsxs)(v,{flexDirection:"column",paddingX:1,children:[(0,Ke.jsxs)(a,{children:[(0,Ke.jsx)(a,{color:l.dim,children:`Generate \u203A S${t+1} \u203A `}),(0,Ke.jsx)(a,{color:l.generateAccent,children:`C${r+1} ${s?.title??"(untitled)"}`}),w?(0,Ke.jsx)(a,{children:" "}):null,w]}),f?(0,Ke.jsx)(a,{color:u?l.red:l.green,children:u?"\u2717 removed":"\u2713 included"}):(0,Ke.jsx)(a,{color:l.dim,children:"\u2713 non-functional \xB7 not saved by /save"}),(0,Ke.jsx)(a,{color:l.muted,children:"\u2500".repeat(60)}),(0,Ke.jsx)(v,{flexDirection:"column",marginTop:1,children:z.map((ie,Y)=>(0,Ke.jsxs)(a,{color:zb(ie.tone),children:[ie.accent?(0,Ke.jsx)(a,{color:l.generateAccent,children:ie.accent}):null,ie.text]},$+Y))}),(0,Ke.jsx)(a,{color:l.muted,children:"\u2500".repeat(60)}),(0,Ke.jsx)(a,{color:l.dim,children:`\u2191\u2193 scroll \u2190 / esc back x remove${oe}`})]})}var Oo=L(G(),1);function Qd({scenarios:e,target:t,onClose:r,excluded:n,onToggleCase:o,onToggleScenario:i,getStatus:s,getResult:u}){let f=e.map(c=>(c.test_cases??[]).length),[g,w]=(0,Jd.useReducer)((c,m)=>ds(c,m,f),Eo(t)),p=()=>{g.level==="scenarios"?r():w({type:"back"})};Be((c,m)=>{if(m.escape||m.leftArrow){p();return}if(g.level!=="detail"){if(m.return){w({type:"enter"});return}if(m.upArrow){w({type:"move",delta:-1});return}if(m.downArrow){w({type:"move",delta:1});return}}if(c==="x"){if(g.level==="scenarios"){let _=(e[g.cursor]?.test_cases??[]).map(U=>U.id);_.length>0&&i(_)}else{let _=g.level==="cases"?g.cursor:g.caseIdx,U=(e[g.scenarioIdx]?.test_cases??[])[_];U&&o(U.id)}return}});let x=e[g.scenarioIdx];if(g.level==="scenarios"||x===void 0){let c=g.level==="scenarios"?g.cursor:0;return(0,Oo.jsx)(Xd,{scenarios:e,cursor:c,excluded:n})}return g.level==="cases"?(0,Oo.jsx)(zd,{scenario:x,scenarioIdx:g.scenarioIdx,cursor:g.cursor,excluded:n}):(0,Oo.jsx)(Yd,{scenario:x,scenarioIdx:g.scenarioIdx,caseIdx:g.caseIdx,excluded:n,getStatus:s,getResult:u})}var Mo=L(G(),1);function Zd({tcg:e,gm:t,history:r,tuiConfig:n,browse:o}){return o?(0,Mo.jsx)(Qd,{scenarios:e.state.scenarios,target:o.target,onClose:o.onClose,excluded:o.excluded,onToggleCase:o.onToggleCase,onToggleScenario:o.onToggleScenario,getStatus:o.getStatus,getResult:o.getResult}):!e.requestId||e.isSessionClosed?(0,Mo.jsx)(jd,{projectId:n.project_id,folderId:n.folder_id,onSubmit:t.handleGenerateSubmit,history:r,error:t.tcgError,validationError:t.tcgValidationError,composeIdleHint:t.composeIdleHint,clearSeq:t.inputClearSeq,busy:t.submitting,closedNotice:e.isSessionClosed?`Generation ${e.state.status}. Type a new objective or /run.`:void 0}):(0,Mo.jsx)(Wd,{state:e.state,requestId:e.requestId,history:r,turnActive:e.turnActive,busy:t.submitting,error:t.tcgError??e.state.error,onClearError:()=>t.onClearError?.(),onClarificationAnswer:i=>t.onClarificationAnswer?.(i),onRefine:t.onRefine,onSlash:t.onSlash})}var ef=L(Ee(),1);var qt=L(G(),1);function Kb({message:e,confirmLabel:t,choice:r}){return(0,qt.jsxs)(v,{flexDirection:"column",borderStyle:"round",borderColor:l.dim,paddingX:1,children:[(0,qt.jsx)(a,{bold:!0,children:e}),(0,qt.jsxs)(v,{marginTop:1,children:[(0,qt.jsx)(a,{color:r==="yes"?l.red:l.dim,children:`\u276F ${t}`}),(0,qt.jsx)(a,{children:" "}),(0,qt.jsx)(a,{color:r==="no"?l.green:l.dim,children:"\u276F No"})]}),(0,qt.jsx)(a,{color:l.dim,children:"\u2190 \u2192 choose \xB7 \u21B5 confirm \xB7 esc cancel"})]})}function tf({message:e,onConfirm:t,onCancel:r,confirmLabel:n="Yes, end"}){let[o,i]=(0,ef.useState)("no");return Be((s,u)=>{(u.leftArrow||u.rightArrow)&&i(f=>f==="yes"?"no":"yes"),u.return&&(o==="yes"?t:r)(),u.escape&&r()}),(0,qt.jsx)(Kb,{message:e,confirmLabel:n,choice:o})}var Yb=null;function rf(e){Yb=e}import{join as Qt,resolve as tv}from"path";var No=L(G(),1);function nf({status:e,steps:t,duration:r,creditsConsumed:n,reason:o}){let i=e==="passed",s=i?l.green:l.red,u=i?"\u2713":"\u2717",f=i?"Passed":"Failed",g=r<60?`${r.toFixed(1)}s`:`${Math.floor(r/60)}m ${Math.round(r%60)}s`,w=typeof n=="number"&&n>0?` \xB7 ${n.toFixed(4)} credits`:"",p=!i&&o?` \xB7 ${o}`:"";return(0,No.jsxs)(v,{children:[(0,No.jsxs)(a,{bold:!0,color:s,children:[u," ",f]}),(0,No.jsxs)(a,{color:l.dim,children:[" ","\xB7 ",t," steps \xB7 ",g,w,p]})]})}var sf=L(G(),1);function of(){return(0,sf.jsx)(a,{color:l.dim,children:"Continue below \xB7 /new fresh session \xB7 /summary view details \xB7 Ctrl+C exit"})}var jo=L(Ee(),1);import{readFileSync as ev}from"fs";var yt=L(Ee(),1);function Jb(e){let t="message",r=[];for(let o of e.split(`
|
|
17
|
-
`))o.startsWith("event:")?t=o.slice(6).trim():o.startsWith("data:")&&r.push(o.slice(5).replace(/^ /,""));let n=r.join(`
|
|
18
|
-
`);if(t==="error")return{type:"error",message:n};if(t==="usage")try{return{type:"usage",creditsConsumed:JSON.parse(n).credits_consumed??0}}catch{return null}return n==="[DONE]"?{type:"done"}:n?{type:"delta",text:n.replace(/\\n/g,`
|
|
19
|
-
`)}:null}async function*af(e){let t;try{t=await fetch(e.url,{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream",Authorization:e.authHeader,"x-session-id":e.sessionId},body:JSON.stringify(e.body),signal:e.signal})}catch(i){e.signal.aborted||(yield{type:"error",message:String(i)});return}if(!t.ok||!t.body){yield{type:"error",message:`describe HTTP ${t.status}`};return}let r=t.body.getReader(),n=new TextDecoder,o="";try{for(;;){if(e.signal.aborted)return;let{done:i,value:s}=await r.read();if(i)break;o+=n.decode(s,{stream:!0});let u;for(;(u=o.indexOf(`
|
|
20
|
-
|
|
21
|
-
`))!==-1;){let f=Jb(o.slice(0,u));if(o=o.slice(u+2),f&&(yield f,f.type==="done"))return}}}finally{await r.cancel().catch(()=>{})}}var Qb=50,Zb=3;function cf(){let[e,t]=(0,yt.useState)(""),r=(0,yt.useRef)(""),[n,o]=(0,yt.useState)(!1),[i,s]=(0,yt.useState)(!1),u=(0,yt.useRef)(null);(0,yt.useEffect)(()=>{if(!i)return;let p=setInterval(()=>{t(x=>{let c=r.current;return x.length>=c.length?x:c.slice(0,Math.min(c.length,x.length+Zb))})},Qb);return()=>clearInterval(p)},[i]);let f=(0,yt.useCallback)(p=>{u.current?.abort();let x=new AbortController;u.current=x,s(!0),r.current="",t(""),o(!0),(async()=>{try{for await(let c of af({...p,signal:x.signal})){if(x.signal.aborted)return;if(c.type==="delta")r.current+=c.text;else if(c.type==="usage")p.onUsage?.(c.creditsConsumed);else if(c.type==="done"||c.type==="error"){o(!1);return}}o(!1)}catch{o(!1)}})()},[]),g=(0,yt.useCallback)(()=>{u.current?.abort(),o(!1),s(!1),r.current="",t("")},[]);(0,yt.useEffect)(()=>()=>u.current?.abort(),[]);let w=n||e.length<r.current.length;return{text:e,active:n,visible:i,revealing:w,start:f,stop:g}}function lf({resolve:e,hostIsTTY:t}){let r=cf(),n=(0,jo.useRef)(0),o=(0,jo.useCallback)(i=>{if(!t())return;let s=e();if(!s)return;let u;try{u=ev(i.screenshot_path).toString("base64")}catch{return}r.start({url:`${s.controllerBaseUrl}/v16-alpha/stream`,authHeader:s.authHeader,sessionId:s.sessionId,onUsage:f=>{n.current+=f},body:{node:"visualizer",sub_node:"describe",session_id:s.sessionId,context_json:{objective:i.objective,query:i.recent_actions.map(f=>`${f.step}: ${f.action_type} ${f.instruction}`).join(`
|
|
22
|
-
`),screenshot_b64:u}}})},[e,t,r]);return{describe:r,onDescribe:o,creditsRef:n}}var Vo=e=>({kind:"login",env:e}),ms=e=>({kind:"switch",env:e}),uf=(e,t)=>e?{kind:"switch",env:t}:{kind:"logout"};function df(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 ff(e){return cr()?[{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 pf(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=zn(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 mf(e){if(!cr())return[];let t=e.tuiConfig.mobile?.no_reset;return[{id:"config-no-reset",label:"No-reset",type:"select",currentValue:t===void 0?"unset":t?"on":"off",options:[{label:"unset \u2014 runner session policy decides (default)",value:"unset"},{label:"on \u2014 keep app state between runs",value:"on"},{label:"off \u2014 reset app state each run",value:"off"}],onValue:r=>{r!=="unset"&&r!=="on"&&r!=="off"||(e.setMobile({no_reset:r==="unset"?void 0:r==="on"}),e.emitFeedback("ok","/config no-reset",r))}},{id:"config-appium-url",label:"Appium URL",type:"text-input",currentValue:e.tuiConfig.mobile?.appium_url??"",placeholder:"http://127.0.0.1:4723 (empty = runner-managed)",onValue:r=>{let n=r.trim();e.setMobile({appium_url:n===""?void 0:n}),e.emitFeedback("ok","/config appium-url",n===""?"(runner-managed)":n)}},{id:"config-toolchain",label:"Managed mobile deps",type:"action",onInfo:()=>({title:"Managed mobile dependencies",sections:[{label:"How it works",entries:[{key:"Source",value:`one prebuilt bundle per device class (emulator / simulator), resolved for kane-cli ${at} by KaneAI`},{key:"Location",value:"~/.testmuai/kaneai/mobile/deps/<class>/<version>"},{key:"Integrity",value:"sha256-verified against the resolve response; corrupt downloads re-fetch once"}]},{entries:[{key:"Live state",value:"run /doctor (or `kane-cli doctor`)"},{key:"Install / repair",value:"`kane-cli doctor --install [--device-class <class>]`"}]}]})}]}function gf(e){return{label:"Mobile",entries:[{key:"Default device",value:e?.default_target?`${e.default_target.id} (${e.default_target.platform} \xB7 ${e.default_target.kind})`:"(none)"},{key:"Default app",value:e?.default_app??"(none)"}]}}async function hf(e){await new nn(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 R=L(G(),1);function DC({localMode:e=!1,codeExport:t,codeLanguage:r,skipCodeValidation:n,updatePromise:o,migrationResult:i,sessionName:s,initialChatMode:u,initialObjective:f,initialGenerateLimits:g}={}){Ds();let w=(0,k.useRef)(new Xn),[p,x]=(0,k.useState)(0),c=w.current,[m]=(0,k.useState)(()=>new Or),_=(0,k.useRef)(0),U=(0,k.useCallback)(()=>`msg-${++_.current}`,[]),[B,F]=(0,k.useState)(!1),[H,$]=(0,k.useState)(null),[z,fe]=(0,k.useState)(!1),[oe,ie]=(0,k.useState)(0),[Y,pe]=(0,k.useState)(!1),[we,me]=(0,k.useState)(null),[$e,qe]=(0,k.useState)(null),it=(0,k.useRef)(null),[Ht,St]=(0,k.useState)(null),[ge,dt]=(0,k.useState)(null),[Lt,Oe]=(0,k.useState)(Kn()),[De,Gt]=(0,k.useState)(null),[je,Wt]=(0,k.useState)([]),[pr,Tr]=(0,k.useState)(!1),[Gr,Rr]=(0,k.useState)(!1),[mr,gr]=(0,k.useState)(null),[wt,hr]=(0,k.useState)(null),[kr,br]=(0,k.useState)(null),[Q,le]=(0,k.useState)(null),ae=(0,k.useRef)(null),re=(0,k.useRef)(null),ue=(0,k.useRef)(0),Te=(0,k.useRef)(null),ft=(0,k.useRef)(!1),P=(0,k.useRef)(null),D=(0,k.useRef)(ka()),K=(0,k.useRef)(null),q=(0,k.useRef)(!1),Z=(0,k.useRef)(""),_e=(0,k.useRef)(null),Ye=(0,k.useRef)(null),de=(0,k.useRef)({}),xt=(0,k.useRef)(null),{append:ht}=js(),ke=(0,k.useCallback)(d=>ht((0,R.jsx)(v,{paddingX:1,children:d})),[ht]),[Zt,Dt]=(0,k.useState)("booting"),[bf,vf]=(0,k.useState)([]),[xf,Fo]=(0,k.useState)(!1),[gs,yf]=(0,k.useState)(!1),[Sn,Sf]=(0,k.useState)("chat"),[Bt,er]=(0,k.useState)(null),[wn,hs]=(0,k.useState)(null),[Wr,bs]=(0,k.useState)(!1),[Xr,Tn]=(0,k.useState)(!1),vs=(0,k.useRef)(()=>{}),wf=(0,k.useCallback)((d,h)=>vs.current(d,h),[]),xe=id({log:wf});Cd(xe.state,xe.turnActive,ke);let Uo=(0,k.useRef)(!1),tr=(0,k.useCallback)(()=>{Uo.current||xe.state.scenarios.length!==0&&(Uo.current=!0,ke((0,R.jsx)(Lo,{scenarios:xe.state.scenarios,activeSid:null})))},[xe.state.scenarios,ke]);(0,k.useEffect)(()=>{xe.isSessionClosed&&tr()},[xe.isSessionClosed,tr]);let[Rn,zr]=(0,k.useState)(null),[Pe,qo]=(0,k.useState)({headless:!1,maxSteps:50,timeout:0,cdpEndpoint:"",wsEndpoint:"",useCft:!1}),Tf=li(),Rf=li(Ms),y=Hu(),kn=Gu(),Tt=(0,k.useMemo)(()=>({auth:{initResolver:d=>y.initResolver(d,(h,S,T,b)=>w.current.log(h,S,T,b)),getResolver:()=>y.getResolver(),getBasicAuth:()=>y.getBasicAuth(),getToken:()=>y.getToken()},getSession:()=>w.current,log:(d,h,S,T)=>w.current.log(d,h,S,T),state:{getTmsCredsCache:()=>De,setTmsCredsCache:Gt,identityServicesRef:re,screenshotQueueRef:ae},exit:{registerCleanup:Mt,setExitRemoteLogger:Ks},options:{skipScreenshotQueue:e}}),[y.initResolver,y.getResolver,y.getBasicAuth,y.getToken,De,e]),kf=(0,k.useCallback)((d,h,S,T)=>{let b=ae.current;if(!b)return;if(Te.current&&T){D.current.track(Ca(Te.current.packTestDir,T,b,(M,N,ne,Se)=>c.log(M,N,ne,Se)));return}let E=ue.current+h;Ea(c.sessionDir,E,d,b,(M,N,ne,Se)=>c.log(M,N,ne,Se),S)},[c]),Cf=(0,k.useCallback)((d,h,S)=>{c.logStep(d,h,S)},[c]),Ef=(0,k.useCallback)(d=>xt.current?.setStepText(d),[]),If=(0,k.useCallback)(()=>xt.current?.setStepComplete(),[]),{describe:Kr,onDescribe:Af,creditsRef:Ho}=lf({hostIsTTY:()=>!!process.stdout.isTTY,resolve:()=>{let d=y.getResolvedBasicAuth();if(!d)return null;let h=Ne(y.creds.getDefaultEnv());return{authHeader:gi(d.username,d.access_key),sessionId:c.sessionId,controllerBaseUrl:h.controllerBaseUrl}}}),O=ha(kf,Cf,Ef,If,Af);(0,k.useEffect)(()=>{O.isRunning||Kr.stop()},[O.isRunning,Kr.stop]);let[C,Ce]=(0,k.useState)(()=>m.load()),A=Cu({getDefaults:()=>m.getMobile(),setDefaults:d=>{m.setMobile(d),Ce(m.load())},resolveAppId:async(d,h)=>{let S=await y.resolveBasicAuth().catch(()=>null),T=S?{username:S.username,access_key:S.access_key}:y.getResolvedBasicAuth();if(!T?.username||!T.access_key)throw new Error("Log in to use an app id, or choose a local build.");let b=Go.current,E=await Qs({appId:d,baseUrl:rn(ye,M=>Ne(M).controllerBaseUrl),auth:{username:T.username,accessKey:T.access_key},onProgress:h,...b?{accepts:b==="emulator"?[".apk"]:[".zip"]}:{}});return{name:E.name,fromStore:E.fromStore}},appLabelFor:async d=>{try{return(await new Js().find(d))?.name}catch{return}}}),Go=(0,k.useRef)(null);Go.current=A.kind;let Xt=Bs(C.mobile?.tui_target,C.mobile?.default_target?.kind),Cr=Xt.kind==="emulator"||Xt.kind==="simulator",_f=(0,k.useCallback)(async d=>{let h=process.cwd(),S=await Bu(h,d),T=await Promise.all(S.map(async M=>{let N=await $u(Qt(h,M),A.target);return{kind:"artifact",value:M,label:M,selectable:Du(N),...N.state==="compatible"?{}:{reason:N.reason}}})),b=d.toLowerCase(),E=A.target?A.apps.filter(M=>!b||M.toLowerCase().includes(b)).map(M=>({kind:"installed",value:M,label:M})):[];return[...T,...E]},[A.apps,A.target]),xs=A.phase==="checking"||A.phase==="doctor"||A.phase==="chooser"||A.phase==="confirm"||A.phase==="appSource"||A.phase==="appList"||A.phase==="appId"||A.phase==="picking"||A.phase==="apps",rr=(0,k.useRef)(null),Pf=(0,k.useRef)(new Map),ys=(0,k.useRef)(new Set),Ss=(0,k.useRef)(null),[Er,ws]=(0,k.useState)(null),[,Lf]=(0,k.useState)(0),bt=(0,k.useCallback)(()=>Lf(d=>d+1),[]),[V,Ve]=(0,k.useState)(null),Ir=y.creds.getActiveProfile(),ye=y.creds.getDefaultEnv(),Df=Ou({auth:y,env:ye,kind:()=>Go.current,baseUrlFor:d=>Ne(d).controllerBaseUrl}),It=(0,k.useCallback)((d,h)=>{let S=d?y.creds.loadProfileConfig(d,h):null;m.save({project_id:S?.project_id??null,project_name:S?.project_name??null,folder_id:S?.folder_id??null,folder_name:S?.folder_name??null}),Ce(m.load())},[y.creds,m]),Wo=(0,k.useCallback)(async(d,h)=>{let S=y.getResolver();if(!S)return null;let T=S.cached??await S.resolve();if(!T)return null;let b=Ne(h),E=new nn(b.tmsBaseUrl,T.username,T.access_key);try{let N=(await E.listProjects()).find(Se=>Se.name==="KaneAI Generated");if(N)return{id:N.project_id,name:N.name};let ne=await E.createProject("KaneAI Generated");return{id:ne.id,name:ne.name}}catch{return null}},[y]),Xo=(0,k.useCallback)(async(d,h)=>{let S=y.getResolver();if(!S)return null;let T=S.cached??await S.resolve();if(!T)return null;let b=Ne(d),E=new nn(b.tmsBaseUrl,T.username,T.access_key);try{let N=(await E.listFolders(h)).find(Se=>Se.name==="Untitled");if(N)return{id:N.id,name:N.name};let ne=await E.createFolder(h,"Untitled");return{id:ne.id,name:ne.name}}catch{return null}},[y]);(0,k.useEffect)(()=>{z||(c.start({model:C.model,environment:ye,profile:Ir}),s&&c.setSessionName(s),fe(!0))},[c,z,C.model,ye,Ir,s]);let Ts=(0,k.useRef)(!1);(0,k.useEffect)(()=>{if(!z||Ts.current)return;Ts.current=!0;let d=s?[{label:"session",value:s},{label:"test",value:ci(Qt(process.cwd(),".testmuai","tests",`${s}_test.md`))},{label:"output",value:ci(Qt(process.cwd(),".testmuai","tests",`output-${s}`))}]:[{label:"session",value:"ephemeral"},{label:"note",value:"use /name <name> to persist this session"}];ke((0,R.jsx)(di,{title:"Recording",titleColor:"#ff9500",rows:d}))},[z,s,ke]);let Rs=(0,k.useRef)(!1);(0,k.useEffect)(()=>{if(!B||Rs.current||!z)return;Rs.current=!0;let d=Tt.state.getTmsCredsCache();if(!d){c.log("warn","BOOT_RESOLVE_FAILED","Boot done but tmsCredsCache empty \u2014 non-controller APIs may fail");return}Nt({kind:"boot",tmsCreds:d,env:ye},Tt).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,Tt,ye,c]);let nr=(0,k.useCallback)(async()=>{if(De)return c.log("info","TMS_CREDS_CACHED","Using cached TMS credentials",{username:De.username,org_id:De.org_id}),De;let d=await y.resolveBasicAuth();return d?(c.log("info","TMS_CREDS_OK","TMS credentials resolved",{username:d.username,org_id:d.org_id,user_id:d.user_id}),Gt(d)):c.log("warn","TMS_CREDS_FAILED","No TMS credentials resolved"),d},[y,De,c]),Cn=(0,k.useCallback)(d=>{ke((0,R.jsx)(di,{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,R.jsxs)(v,{flexDirection:"column",children:[(0,R.jsx)(a,{color:l.dim,children:"kane-cli config project <id>"}),(0,R.jsx)(a,{color:l.dim,children:"kane-cli config folder <id>"})]})}]}))},[ke]),En=(0,k.useCallback)(async()=>{let d=await nr();if(!d)return c.log("warn","PROJECT_FAILED","No TMS credentials for project/folder gate"),null;let h=y.creds.getActiveProfile()??"default",S=y.creds.getDefaultEnv(),T=await ua({creds:y.creds,config:m,profile:h,env:S,tmsCreds:{username:d.username,access_key:d.access_key},isLocal:e,log:(b,E,M,N)=>c.log(b,E,M,N),onAnnounce:Cn});return T.status==="ok"?{projectId:T.projectId,folderId:T.folderId}:null},[nr,m,c,y.creds,e,Cn]),be=(0,k.useCallback)(d=>{let h=U(),S={...d,id:h};ke((0,R.jsx)(wu,{entry:S}))},[U,ke]),j=(0,k.useCallback)((d,h,S,T,b)=>{ke((0,R.jsx)(Qu,{status:d,command:h,message:S,details:T,accentColor:b})),h==="/save"&&d==="ok"&&ke((0,R.jsx)(v,{marginLeft:2,children:(0,R.jsxs)(a,{color:l.dim,children:["\u2192 Run ",(0,R.jsx)(a,{color:l.generateAccent,children:"/testmd"})," to list your saved tests."]})}))},[ke]),ks=(0,k.useRef)(()=>{}),or=Td(xe.state.scenarios.map(d=>(d.test_cases??[]).length)),Bf=(0,k.useCallback)(async()=>{let d=await En();return Ce(m.load()),d},[En,m]),At=wd({tcg:xe,initialChatMode:u,tuiConfig:C,auth:y,session:c,runner:O,appendStatic:ke,handleInput:d=>ks.current(d),freezeTcgArtifact:tr,rearmArtifactFreeze:()=>{Uo.current=!1},openSwitchConfirm:d=>zr({reason:"switch",to:d}),emitFeedback:j,excluded:or.excluded,openBrowse:or.open,initialGenerateLimits:g,ensureProjectAndFolder:Bf,config:m});vs.current=At.tcgLog;let{chatMode:Me,tcgError:nv,tcgValidationError:ov,composeIdleHint:iv,inputClearSeq:$f,handleGenerateSubmit:Of,flashComposeHint:In,setTcgError:sv}=At,Mf=C.hints_enabled!==!1&&process.env.KANEAI_HINTS_DISABLED!=="1"&&!!process.stdout.isTTY&&!!process.stdin.isTTY&&process.env.KANE_SCREEN_READER!=="1",Cs=(0,k.useRef)(!1);Me==="generate"&&(Cs.current=!0);let{footerHint:Nf}=Md({enabled:Mf,ready:Zt==="ready",env:ye,config:C,tokenValid:y.tokenValid,chatMode:Me,sessionUsedGenerate:Cs.current,log:(d,h,S,T)=>w.current.log(d,h,S,T)}),vr=(0,k.useCallback)(async(d,h,S)=>{let T=A.device,b=S??(Cr?"mobile":"web"),E=b==="mobile"?"device":"web",M=E==="device";c.log("info","RUN_TARGET_STATE","Dispatch target resolved",{mobile_mode:M,tui_target:C.mobile?.tui_target??null,device_bound:!!T,app_bound:!!T?.app_package,mobile_phase:A.phase,parked:!!rr.current});let N=M?Iu(d):{objective:d,token:null};if(M&&N.token&&!N.objective){be({type:"error",text:`@${N.token}: add an objective after the app token.`});return}if(!N.token&&!h&&!ys.current.has(d)){let ce=y.getResolvedBasicAuth(),Ae=ce?null:await y.getToken(),He=ce?gi(ce.username,ce.access_key):Ae?`Bearer ${Ae}`:null;if(He){let Qe=await Nu({objective:d,sessionTarget:b,controllerBaseUrl:Ne(ye).controllerBaseUrl,authHeader:He,cache:Pf.current});c.log("info","CLASSIFY_VERDICT","Objective classified",{session_target:b,target:Qe?.target??null,confidence:Qe?.confidence??null});let _r=ju(Qe,b);if(_r.kind==="mismatch"){ws({objective:d,url:h,suggested:_r.suggested,verdict:_r.verdict});return}}}if(M&&!T){rr.current=d,be({type:"info",text:"Setting up mobile device\u2026"}),A.begin();return}let ne=T;if(M&&N.token){let ce=ta(N.token);if(!ce){be({type:"error",text:`@${N.token}: ${ea}`});return}let Ae=await A.bindAppForRun(ce);if(!Ae.ok){be({type:"error",text:`@${N.token}: ${Ae.error}`});return}ne=Ae.device}else if(M){if(!T?.app_package){rr.current=d,be({type:"info",text:"Choose the app under test\u2026"}),A.requestAppSource();return}let ce=await A.validateBinding();if(!ce.ok){rr.current=d,be({type:"info",text:ce.reason}),ce.step==="device"?A.begin("reinit"):A.requestAppSource();return}}let Se=M?N.objective:d,Re=q.current?null:_a({flag:h,configDefault:C.default_url}),Je=za({objective:Se,globalDir:Qt(pt,"variables"),localDir:Qt(process.cwd(),".testmuai","variables")}),xr=c.nextRunIndex();ue.current=xr,Z.current=Je.auteurObjective,Ho.current=0,c.logRunStart(xr,Je.auteurObjective,Re??""),c.setFirstRun(Je.auteurObjective,Re??"");let On=y.getResolvedBasicAuth(),_t=On,$t=null;if(!_t&&($t=await y.getToken(),!$t)){be({type:"error",text:"Not authenticated. Run /login first."});return}let Ar={basicAuth:On??null,token:$t,resolver:y.getResolver(),resolvedCreds:null};_e.current=Ar;let Yr=y.creds.getActiveProfile()??"default",Jr=y.creds.getDefaultEnv();la(y.creds,m,Yr,Jr,(ce,Ae,He,Qe)=>c.log(ce,Ae,He,Qe));let Mn=m.load();if(Ce(Mn),M){if(!ne){rr.current=d,be({type:"info",text:"Setting up mobile device\u2026"}),A.begin();return}if(!ne.app_package){rr.current=d,be({type:"info",text:"Choose the app under test\u2026"}),A.requestApp();return}}let st;try{st=await qa(E,{prepareDevice:async()=>{let ce=await nr(),Ae=y.getResolvedBasicAuth(),He=await na({...ne.udid?{device:ne.udid}:{},...ne.platform?{platform:ne.platform}:{},...N.token?{app:N.token}:ne.app_package?{app:ne.app_package}:{},defaults:C.mobile,interactive:!1,onProgress:Qe=>St(Qe),...Ae?.username&&Ae.access_key&&ce?.org_id?{cloudUpload:{env:ye,orgId:String(ce.org_id),userId:String(ce.user_id??""),baseUrl:rn(ye,Qe=>Ne(Qe).controllerBaseUrl),auth:{username:Ae.username,accessKey:Ae.access_key}}}:{}});return be({type:"info",text:`Device run: ${He.device.app_package} on ${He.device.udid}`}),{device:He.device,...He.appRef?{appRef:He.appRef}:{},...He.appId?{appId:He.appId}:{}}},prepareWeb:async()=>{if(Pe.useCft)return be({type:"info",text:"CfT mode: Playwright will manage browser"}),{instance:null,tempDir:null};if(Pe.wsEndpoint)return be({type:"info",text:`WS endpoint: ${Pe.wsEndpoint.slice(0,60)}...`}),{wsEndpoint:Pe.wsEndpoint,instance:null,tempDir:null};if(Pe.cdpEndpoint)return be({type:"info",text:`CDP endpoint: ${Pe.cdpEndpoint}`}),{cdpEndpoint:Pe.cdpEndpoint,instance:null,tempDir:null};be({type:"info",text:"Starting Chrome..."});let ce=await kn.ensureChrome(Re??void 0);c.logChromeLaunch(ce.port,ce.cdpEndpoint);let Ae=ga({headless:Pe.headless,cdpEndpoint:ce.cdpEndpoint,chromePid:ce.process.pid});return Ae&&(xt.current=Ae,Mt("marker-overlay",()=>Ae.kill())),{cdpEndpoint:ce.cdpEndpoint,instance:ce,tempDir:null}}})}catch(ce){let Ae=E==="device"?ce instanceof Error?ce.message:String(ce):pa(ce);be({type:"error",text:Ae});return}finally{St(null)}let Nn=st.kind==="web"?st.chrome:{instance:null,tempDir:null};if(xr===0&&!e){c.log("info","ATM_CREATE_START","Creating test via ATM endpoint",{run_index:0});let ce=await En(),Ae=m.load();Ce(Ae);let He=Ne(ye),Qe=_t?{username:_t.username,access_key:_t.access_key}:await nr();if(Qe){let _r=await Qa({tmsBaseUrl:He.tmsBaseUrl,auth:{username:Qe.username,access_key:Qe.access_key},objective:Je.auteurObjective,url:Re??"",projectId:ce?.projectId??Ae.project_id??"",folderId:ce?.folderId??Ae.folder_id??"",hasCustomProfile:!!C.chrome_profile_path,...st.kind==="device"?{mobile:{platform:st.device.platform??"",...st.appId?{appId:st.appId}:{}}}:{},log:(Gf,Wf,Xf,zf)=>c.log(Gf,Wf,Xf,zf)});_r&&(c.setTestId(_r),ce?.projectId&&c.setProjectId(ce.projectId))}}c.setAuteurVariables(Je.auteur),Ye.current=Je;let ii=_t&&!e?await Ka({variables:Je,auth:_t,orgId:String((await nr())?.org_id??""),env:ye,localMode:e,log:(ce,Ae,He,Qe)=>c.log(ce,Ae,He,Qe)}):{};de.current=ii;let jn=wi(Qt(pt,"global-memory.md")),sr=wi(Qt(process.cwd(),".testmuai","context.md"));if(xr===0){let ce={mode:C.mode,max_steps:Pe.maxSteps,timeout:Pe.timeout>0?Pe.timeout:void 0,target:Ha(st,{cdpEndpoint:Pe.cdpEndpoint||void 0,wsEndpoint:Pe.wsEndpoint||void 0}),app:Ga(st),chrome_profile:C.chrome_profile_path||void 0,cdp_endpoint:Pe.cdpEndpoint||void 0,ws_endpoint:Pe.wsEndpoint||void 0,headless:Pe.headless,global_context:jn??void 0,local_context:sr??void 0,variables:Object.keys(Je.auteur).length>0?Je.auteur:void 0};c.setResolvedGlobal(ce)}ft.current||(ft.current=!0,Te.current=await xa({objectiveOrName:c.sessionName??d,sessionId:c.sessionId,title:c.sessionName??d,producerVersion:at,pid:process.pid,surfaces:Re?[Re]:void 0,packRootDir:Qt(c.sessionDir,"evidence")})),P.current||(P.current=va(Nn.cdpEndpoint),P.current());let Vn=Xa(Je.auteur,Je.auteurObjective),Hf=Wa({objective:Je.auteurObjective,url:st.kind==="device"?void 0:Re??void 0,requireStartUrl:st.kind==="web"&&!q.current&&Re===null,model:C.model,chrome:Nn,auth:Ar,sessionId:c.sessionId,runIndex:xr,windowSize:C.window_size,maxSteps:Pe.maxSteps,headless:Pe.headless,networkWs:C.network_ws,networkSse:C.network_sse,bugDetection:C.bug_detection,variables:Object.keys(Vn).length>0?Vn:void 0,globalContext:jn??void 0,localContext:sr??void 0,sessionContext:c.getContext(),device:st.kind==="device"?st.device:void 0,evidence:ya(Te.current)});Re&&$(Re),me(null),K.current=null,O.startRun(Hf,{environment:ye,mode:C.mode,assertionMode:C.assertion_mode,log:(ce,Ae,He,Qe)=>c.log(ce,Ae,He,Qe)}),ie(ce=>ce+1)},[y,kn,m,C,c,ye,O,be,Pe,En,nr,Cr,A.device,A.begin,A.requestApp,A.requestAppSource,A.validateBinding,A.bindAppForRun]),An=(0,k.useCallback)(d=>{let h=Er;if(h){if(ws(null),c.log("info","CLASSIFY_ACTION","Classification prompt answered",{action:d,suggested:h.suggested,target:h.verdict.target,confidence:h.verdict.confidence}),d==="cancel"){be({type:"info",text:`Run cancelled \u2014 "${h.objective}" was not run.`});return}if(ys.current.add(h.objective),d==="keep"){vr(h.objective,h.url);return}if(h.suggested==="web"){m.setMobile({tui_target:"desktop"}),Ce(m.load()),A.reset(),be({type:"info",text:"Session target: Desktop (Chrome)"}),vr(h.objective,h.url,"web");return}Ss.current=h.verdict.appHint??null,rr.current=h.objective,A.begin(d==="pick"?"reinit":"confirm")}},[Er,c,be,vr,m,A]);Eu({phase:A.phase,device:A.device,requestApp:A.requestAppSource,pendingRef:rr,dispatch:d=>{vr(d)},notify:be,onSettle:()=>{Ss.current=null}});let jf=(0,k.useCallback)(async d=>{let h=tv(d),S=Na(h),T=new Xn;for(let Re of S.warnings)T.log("warn","RESOLVER_WARNING",Re);let b=y.getResolvedBasicAuth(),E=null;b||(E=await y.getToken());let M={basicAuth:b??null,token:E,resolver:y.getResolver(),resolvedCreds:null},N=ye,ne=Ne(N),Se=y.creds.getActiveProfile()??"default";return{path:h,cwd:process.cwd(),opts:{},isAgent:!1,disableAskUser:!0,resolved:S,resolvedAuth:M,cliOverrides:{},environment:N,envConfig:ne,profile:Se,model:"v16-alpha",creds:y.creds,configStore:m,session:T,skipGlobalRemoteLogger:!0,onAnnounce:Cn}},[y,m,ye,Cn]),Ie=od({buildInput:jf,remoteLogger:null}),zo=(0,k.useRef)(null);(0,k.useEffect)(()=>{if(O.bifurcationInfo&&O.bifurcationInfo!==zo.current){zo.current=O.bifurcationInfo;let{flows:d,isSingleFlow:h}=O.bifurcationInfo;h&&d.length===1&&d[0]?c.log("info","OBJECTIVE_REWRITTEN","Objective rewritten",{objective:d[0]}):!h&&d.length>1&&c.log("info","BIFURCATION","Objective bifurcated into flows",{flow_count:d.length})}},[O.bifurcationInfo,c,be]);let Ko=k.default.useRef(null),Yo=k.default.useRef(0),Jo=k.default.useRef(0);(0,k.useEffect)(()=>{if(O.lastRunEnd&&O.lastRunEnd!==Ko.current){Ko.current=O.lastRunEnd,q.current=!0;let{status:d,duration:h,summary:S,reason:T,context:b}=O.lastRunEnd,{passed:E,failed:M,total:N}=ba(O.steps);Yo.current+=N,Jo.current+=h??0;let ne=O.lastRunEnd?.credits_consumed,Se=ne!=null||Ho.current>0?(ne??0)+Ho.current:void 0;me({status:d,duration:h??0,summary:S??"",stepsPassed:E,stepsFailed:M,stepsTotal:N,reason:T,finalState:O.lastRunEnd?.final_state,creditsConsumed:Se}),c.logRunEnd(ue.current,d,h,S,O.lastRunEnd?.result_code);let Re=O.bifurcationInfo,Je=Re&&!Re.isSingleFlow?Re.flows:null,xr=aa(O.lastRunEnd,ue.current,Je),On=ca(O.lastRunEnd,Z.current,ue.current,xr);c.addRunResult(On,O.lastRunEnd?.total_runs),vi(Te.current,O.getEvidenceState(),O.lastRunEnd);let _t=O.lastRunEnd?.per_flow_metadata;if(Re&&!Re.isSingleFlow&&_t&&_t.length>1)for(let $t=0;$t<_t.length;$t++){let Ar=_t[$t],Yr=O.steps[$t],Jr=Yr?.children??[],Mn=Jr.filter(sr=>sr.status==="passed").length,st=Jr.filter(sr=>sr.status==="failed").length,Nn=Jr.reduce((sr,Vn)=>sr+(Vn.duration??0),0),ii=Yr?.status==="failed"?"failed":"passed",jn=Re.flows[$t]??Yr?.objective??Z.current;c.addFlow({runIndex:ue.current,flowId:Re.flows[$t],objective:jn,status:ii,summary:Ar.summary??"",duration:Nn,steps:Mn+st,stepsPassed:Mn,stepsFailed:st,reason:Ar.error_message??void 0,creditsConsumed:Ar.credits_consumed??void 0})}else c.addFlow({runIndex:ue.current,objective:Z.current,status:d,summary:S??"",duration:h??0,steps:N,stepsPassed:E,stepsFailed:M,reason:T,creditsConsumed:O.lastRunEnd?.credits_consumed})}},[O.lastRunEnd,c,be]);let Qo=(0,k.useRef)(null);(0,k.useEffect)(()=>{O.askingUser&&(Qo.current=O.askingUser)},[O.askingUser]);let Zo=(0,k.useRef)(null);(0,k.useEffect)(()=>{if(we&&!O.isRunning&&O.lastRunEnd){if(Zo.current===O.lastRunEnd)return;Zo.current=O.lastRunEnd,ke((0,R.jsxs)(v,{flexDirection:"column",children:[(0,R.jsx)(nf,{status:we.status,steps:we.stepsTotal,duration:we.duration,creditsConsumed:we.creditsConsumed,reason:we.reason}),(0,R.jsx)(of,{})]})),me(null)}},[we,O.isRunning,O.lastRunEnd,ke]);let Es=(0,k.useRef)(null);(0,k.useEffect)(()=>{if(Ie.runSummary&&!Ie.running){if(Es.current===Ie.runSummary)return;Es.current=Ie.runSummary,(Ie.summary||Ie.links)&&ke((0,R.jsxs)(v,{flexDirection:"column",children:[Ie.summary&&(0,R.jsx)(Fa,{data:Ie.summary}),Ie.links&&(0,R.jsx)(Yn,{...Ie.links,autoExit:!1})]}))}},[Ie.runSummary,Ie.running,Ie.summary,Ie.links,ke]),(0,k.useEffect)(()=>{xt.current?.setRunActive(O.isRunning)},[O.isRunning]),(0,k.useEffect)(()=>{if(O.runError&&!O.isRunning){let d=O.runError.trim();c.log("error","RUNNER_ERROR","Runner error occurred",{error:d}),c.escalateRun(c.nextRunIndex()-1),!O.lastRunEnd&&K.current!==O.runError&&(K.current=O.runError,vi(Te.current,O.getEvidenceState(),null));let S=d.split(`
|
|
23
|
-
`).slice(-8).join(`
|
|
24
|
-
`);be({type:"error",text:`Runner error:
|
|
25
|
-
${S}`})}},[O.runError,O.isRunning,O.lastRunEnd,be,c]);let _n=(0,k.useCallback)(async(d={})=>{let h=Te.current;return h?(c.flushRecorder(),await Sa(h,{saved:!!c.sessionName,local:e,recordedTestPath:c.recorder?.lastWrittenPath??null,externalIdInput:{session_id:c.sessionId,commit_id:c.sessionId,test_id:c.testId??void 0,testcase_id:d.testcaseId??c.testcaseId??void 0,project_id:C.project_id??void 0,folder_id:C.folder_id??void 0,org_id:c.orgId??void 0,session_name:c.sessionName??void 0,user_name:c.userName??void 0,user_email:c.userEmail??void 0,sharable_link:Ua(Ne(ye).testManagerUiUrl,C.project_id,d.testcaseId??c.testcaseId,d.shareId)},cdpBrowserCapture:P.current??void 0,model:C.model,tuiLogPath:Qt(c.sessionDir,"tui.log"),log:(S,T,b,E)=>c.log(S,T,b,E)})):null},[c,C]),Pn=(0,k.useCallback)(async d=>{let h=Te.current?.packDir??null,S=await _n({testcaseId:d?.testcaseId,shareId:d?.shareId});return Te.current=null,ft.current=!1,P.current=null,S?.sealed?h:null},[_n]),Ln=(0,k.useCallback)(async()=>{c.log("info","EXIT_UPLOAD_START","Starting exit upload pipeline"),Oe(Kn()),dt({status:"uploading"});let d=y.getResolvedBasicAuth(),h=null;if(!d&&(h=await y.getToken(),!h))return c.log("warn","EXIT_UPLOAD_ABORTED","Exit upload aborted \u2014 no auth available"),null;let S=De??await nr();if(!S)return c.log("warn","EXIT_UPLOAD_ABORTED","Exit upload aborted \u2014 no TMS credentials"),c.setUploadStatus("failed","Could not get TMS credentials"),null;c.log("info","EXIT_UPLOAD_CONFIG","Exit upload configuration",{test_id:c.testId,commit_id:c.sessionId,project_id:C.project_id,session_dir:c.sessionDir,run_dirs:c.getRunDirs()});let T={basicAuth:d??null,token:h,resolver:y.getResolver(),resolvedCreds:S};ae.current&&(c.log("info","SCREENSHOT_UPLOAD_DRAIN","Draining screenshot queue before pipeline"),await D.current.settle(),await ae.current.drain(),c.log("info","SCREENSHOT_UPLOAD_DRAINED","Screenshot queue drained"));let b=Ya({mobile:Cr,session:c,env:ye,auth:T,variables:Ye.current??{raw:{},auteur:{},auteurObjective:"",secretEntries:[],nonSecretEntries:[]},variableIds:de.current,projectId:C.project_id,folderId:C.folder_id,totalSteps:Yo.current,totalDuration:Jo.current,screenshotExtMap:ae.current?.getExtMap(),codeExport:Ja({codeExport:t,codeLanguage:r,skipCodeValidation:n},C.code_export),onProgress:(N,ne,Se)=>{c.log("info","EXIT_PROGRESS","Upload progress",{step:N,status:ne,detail:Se}),Oe(Re=>Va(Re,N,ne,Se))},log:(N,ne,Se,Re)=>c.log(N,ne,Se,Re),shouldUploadArtifacts:!0,shouldReplaceLocalOutput:!1,shouldCommit:!1,isFirstRun:!0,evidence:Te.current?{executionId:Te.current.executionId,packTestDir:Te.current.packTestDir,sealedPackPath:Te.current.packDir,sealFn:_n}:void 0}),M=await new Za(b).execute();if(M.success){c.log("info","EXIT_UPLOAD_OK","Exit upload succeeded",{test_id:M.testId,testcase_id:M.testcaseId??null,share_id:M.shareId??null}),c.setUploadStatus("uploaded"),M.testId&&c.setTestId(M.testId),M.testcaseId&&c.setTestcaseId(M.testcaseId);let N=Ne(ye),ne=C.project_id,Se=M.testcaseId&&M.shareId&&ne?yi(N.testManagerUiUrl,ne,M.testcaseId,M.shareId):void 0,Re=M.testcaseId&&ne?Si(N.testManagerUiUrl,ne,M.testcaseId):void 0;dt({status:"success",testUrl:Se,testCaseLink:Re,codeExportDir:M.codeExportDir}),rf({shareableLink:Se,testCaseLink:Re,codeExportDir:M.codeExportDir})}else c.log("error","EXIT_UPLOAD_FAILED","Exit upload failed",{error:M.error}),c.setUploadStatus("failed",M.error),dt({status:"failed",error:M.error});return M},[y,ye,c,C,De,nr,_n]),Dn=(0,k.useCallback)(async()=>{c.log("info","SESSION_RESET_START","Starting session reset via /new"),Tr(!0);let d=c.getFlows();d.length>0&&ke((0,R.jsx)(as,{flows:d}));let h=null;if(!e)try{h=await Ln()??null}catch(E){c.log("error","SESSION_RESET_UPLOAD_FAILED","Upload failed during /new",{error:String(E)}),be({type:"error",text:"Upload failed \u2014 session data saved locally."})}let S=null;try{let{persistRecordedSession:E}=await import("./persist-recorded-session-TLDQ5HKP.js");S=await E(c,{testcaseId:c.testcaseId??void 0,projectId:C.project_id??void 0,folderId:C.folder_id??void 0,codeExportDir:h?.codeExportDir,packTestDir:Te.current?.packTestDir})}catch(E){c.log("error","SESSION_RESET_PERSIST_FAILED","Persist failed during /new",{error:String(E)})}if(h?.success&&h.testcaseId||S){let E=Ne(ye),M=C.project_id,N=h?.testcaseId;ke((0,R.jsx)(Yn,{recordedTestPath:S?.recordedTestPath,outputDir:S?.outputDir,shareableLink:N&&h?.shareId&&M?yi(E.testManagerUiUrl,M,N,h.shareId):void 0,testCaseLink:N&&M?Si(E.testManagerUiUrl,M,N):void 0,codeExportDir:h?.codeExportDir,autoExit:!1}))}let T=await Pn(h);T&&be({type:"info",text:Ta(T)}),c.testId&&Wt(E=>[...E,{testId:c.testId,runCount:oe}]),await O.shutdownRunner(),kn.killChrome(),await c.finish("complete");let b=new Xn;b.start({model:C.model,environment:ye,profile:Ir??null}),w.current=b,x(E=>E+1),c.log("info","SESSION_RESET_COMPLETE","Session reset complete",{new_session_id:b.sessionId}),await Nt({kind:"resessionize",env:ye},Tt),ie(0),Yo.current=0,Jo.current=0,ue.current=0,Z.current="",Ye.current=null,de.current={},$n.current=0,ti.current=0,Qo.current=null,Zo.current=null,Ko.current=null,K.current=null,q.current=!1,zo.current=null,me(null),$(null),dt(null),Oe(Kn()),Tr(!1),ke((0,R.jsxs)(v,{flexDirection:"column",marginY:1,children:[(0,R.jsx)(a,{color:l.dim,children:"\u2500".repeat(44)}),(0,R.jsx)(a,{color:l.green,bold:!0,children:"New session started"})]}))},[c,be,ke,e,Ln,Pn,kn,O,oe,C,ye,Ir,Tt]),Is=(0,k.useCallback)(async()=>{if(!(c.nextRunIndex()>0)){be({type:"info",text:"No runs in current session."});return}if(O.isRunning){be({type:"error",text:"Cannot reset while a run is in progress. Cancel the run first."});return}if(C.mode==="testing"&&!c.sessionName){br("new"),hr(ki());return}await Dn()},[c,O,be,C.mode,Dn]),As=(0,k.useCallback)(async()=>{await O.shutdownRunner(),await c.finish("complete"),Dr(0,"Session complete")},[c,O]),Vf=(0,k.useCallback)(async d=>{Rr(!1);let h=c.testId??(je.length>0?je[je.length-1].testId:null);if(d&&h){c.log("info","EXIT_FEEDBACK_SUBMIT","Submitting session feedback",{choice:d});try{let S=Ne(ye),T=y.getResolvedBasicAuth();T&&await hf({tmsBaseUrl:S.tmsBaseUrl,username:T.username,accessKey:T.access_key,testId:h,feedbackType:d,log:(b,E,M,N)=>c.log(b,E,M,N)})}catch(S){c.log("error","EXIT_FEEDBACK_FAILED","Feedback submission failed",{error:String(S)})}}else c.log("info","EXIT_FEEDBACK_SKIPPED","Feedback skipped");As()},[ye,y,c,As,je]),Bn=(0,k.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 Ln()??null}catch(b){c.log("error","EXIT_UPLOAD_FAILED","Exit upload failed",{error:String(b)})}c.testId&&Wt(b=>[...b,{testId:c.testId,runCount:oe}])}try{let{persistRecordedSession:b}=await import("./persist-recorded-session-TLDQ5HKP.js"),E=await b(c,{testcaseId:c.testcaseId??void 0,projectId:C.project_id??void 0,folderId:C.folder_id??void 0,codeExportDir:h?.codeExportDir,packTestDir:Te.current?.packTestDir});E&&le(E)}catch(b){c.log("error","EXIT_PERSIST_FAILED","Persist failed during /exit",{error:String(b)})}let S=await Pn(h);if(S&&process.stdout.isTTY&&(pe(!0),await new Promise(b=>gr({packPath:S,resolve:b})),gr(null)),d&&!e&&await c.finish("complete"),!(c.testId??(je.length>0?je[je.length-1].testId:null))||e){await c.finish("complete"),Dr(0,"No test ID \u2014 quick exit");return}pe(!0),Rr(!0)},[c,e,Ln,Pn,oe,je,C]),ir=(0,k.useCallback)(async()=>{if(Y)return;c.log("info","EXIT_START","TUI exit initiated");let d=C.mode==="testing",h=c.nextRunIndex()>0;if(d&&h&&!c.sessionName){br("exit"),hr(ki());return}await Bn()},[Y,c,C.mode,Bn]),Ff=(0,k.useCallback)(d=>{d&&c.setSessionName(d);let h=kr;hr(null),br(null),h==="new"?Dn():Bn()},[c,kr,Bn,Dn]);(0,k.useEffect)(()=>{if(!Y)return;let d=300*1e3,h=setTimeout(async()=>{c.setUploadStatus("failed","Upload timed out after 5m"),await c.finish("complete"),Dr(0,"Upload timed out after 5m")},d);return()=>clearTimeout(h)},[Y,c]);let $n=k.default.useRef(0),ei=k.default.useRef(null),ti=k.default.useRef(0),ri=k.default.useRef(0),ni=k.default.useRef(null);Be((d,h)=>{if(h.ctrl&&d==="c"){if(Me==="generate"&&(xe.isStreaming||At.submitting)){At.cancelGenerate(),ri.current++,ni.current&&clearTimeout(ni.current),ni.current=setTimeout(()=>{ri.current=0},2e3),ri.current>=2&&ir();return}if(!Ie.running){if(Y){ti.current+=1,ti.current>=2&&(c.setUploadStatus("pending","Force exit by user"),c.finish("complete"),Dr(0,"Force exit by user"));return}if(O.isRunning){O.cancelRun(),be({type:"info",text:"Run cancelled."}),$n.current++,ei.current&&clearTimeout(ei.current),ei.current=setTimeout(()=>{$n.current=0},2e3),$n.current>=2&&ir();return}ir()}}}),Be((d,h)=>{if(h.ctrl&&d==="t"&&Me==="generate"&&!xe.isStreaming){In("no thinking yet");return}});let _s=k.default.useMemo(()=>{let d=y.creds.getActiveProfile()??"none",h=y.creds.getDefaultEnv(),S={runOptions:{headless:Pe.headless,cdpEndpoint:Pe.cdpEndpoint,wsEndpoint:Pe.wsEndpoint},patchRunOptions:b=>qo(E=>({...E,...b})),deviceLabel:A.target?.displayName??null,appLabel:A.device?.app_package??null,openDevicePicker:()=>{er(null),A.begin("reinit")},openAppPicker:()=>{if(er(null),A.target){A.requestApp();return}A.begin("reinit")}},T={tuiConfig:C,setMobile:b=>{m.setMobile(b),Ce(m.load())},setConfigKey:(b,E)=>{m.set(b,E),Ce(m.load())},emitFeedback:j,onChromeProfilePicker:()=>{},onWindowSizePicker:()=>{},windowSizeLabel:`${C.window_size.width}x${C.window_size.height}`};return[{id:"run",label:"Run",type:"submenu",children:[{id:"run-start",label:"Start Run",type:"action"},{id:"run-config",label:"Run Config",type:"submenu",children:[{id:"run-max-steps",label:"Max Steps",type:"text-input",currentValue:String(Pe.maxSteps),onValue:b=>{let E=parseInt(b,10);E>0&&qo(M=>({...M,maxSteps:E}))}},{id:"run-timeout",label:"Timeout (sec)",type:"text-input",currentValue:Pe.timeout?String(Pe.timeout):"",placeholder:"0 = no timeout",onValue:b=>{let E=parseInt(b,10);qo(M=>({...M,timeout:isNaN(E)?0:E}))}},{id:"run-config-desktop",label:"Desktop",type:"submenu",children:df(S)},...cr()?[{id:"run-config-mobile",label:"Mobile",type:"submenu",children:ff(S)}]:[]]}]},{id:"auth",label:"Auth",type:"submenu",children:[{id:"login",label:"Login",type:"action",onLoginWizard:()=>{}},{id:"logout",label:"Logout",type:"action",onAction:()=>{y.logout().then(b=>{bt();let E=y.creds.getActiveProfile(),M=y.creds.getDefaultEnv();It(E,M);let N=uf(E,M);Nt(N,Tt).catch(()=>{}),b?j("ok","/logout",`Logged out: ${b.profile} [${b.env}]`):j("ok","/logout","No active profile")}).catch(()=>{j("error","/logout","Logout failed")})}},{id:"whoami",label:"Who Am I",type:"action",onInfo:()=>{let b=y.creds.getActiveProfile()??"none",E=y.creds.getDefaultEnv(),M=y.creds.loadBasicAuth(b,E),N=M?"basic":y.creds.loadCredentials(b,E)?"oauth":"not configured";return{title:"Who Am I",sections:[{label:"Identity",entries:[{key:"Profile",value:b},{key:"Environment",value:E}]},{label:"Authentication",entries:[{key:"Method",value:N},...M?[{key:"Username",value:M.username}]:[]]},{label:"Token",entries:[{key:"Status",value:y.tokenValid?"valid":"not logged in",color:y.tokenValid?l.green:l.red}]}]}}},{id:"balance",label:"Credit Balance",type:"action",suppressFeedback:!0,onAction:()=>{(async()=>{let b=y.creds.getActiveProfile()??"default",E=y.creds.getDefaultEnv(),M=Ne(E);try{let N=y.getBasicAuth(),ne=N?null:await y.getToken();if(!N&&!ne){qe({text:"Not authenticated. Run /login first.",color:l.red});return}let{ControllerClient:Se}=await import("./controller-client-OB4WD2C4.js"),Je=await(N?new Se(M.controllerBaseUrl,{username:N.username,accessKey:N.access_key}):new Se(M.controllerBaseUrl,ne)).getCreditBalance();qe({text:`Credits \u2014 available: ${Je.available_credits}, total: ${Je.total_credits} (${b} / ${E})`,color:l.green})}catch(N){qe({text:`Balance check failed: ${N instanceof Error?N.message:String(N)}`,color:l.red})}it.current&&clearTimeout(it.current),it.current=setTimeout(()=>{qe(null),it.current=null},5e3)})()}},{id:"profiles",label:"Profiles",type:"action",onProfilesView:()=>{}}]},{id:"config",label:"Config",type:"submenu",children:[{id:"config-show",label:"Show",type:"action",onInfo:()=>({title:"Show Config",sections:[{label:"General",entries:[{key:"Model",value:"v16-alpha"},{key:"Mode",value:C.mode},{key:"Assertion Mode",value:C.assertion_mode},{key:"WebSocket Capture",value:C.network_ws?"on":"off"},{key:"SSE Capture",value:C.network_sse?"on":"off"},{key:"Bug Detection",value:C.bug_detection},{key:"Final Validation",value:C.final_validation?"on":"off"},{key:"Hints",value:C.hints_enabled===!1?"off":"on"}]},{label:"Browser",entries:[{key:"Window",value:`${C.window_size.width}x${C.window_size.height}`},{key:"Chrome Profile",value:C.chrome_profile_path?C.chrome_profile_path.split("/").pop()??C.chrome_profile_path:"(temporary)"}]},{label:"Project",entries:[{key:"Project",value:C.project_name?`${C.project_name} (${C.project_id})`:C.project_id??"(none)"},{key:"Folder",value:C.folder_name?`${C.folder_name} (${C.folder_id})`:C.folder_id??"(none)"},{key:"Default URL",value:C.default_url??si}]},{label:"Code Export",entries:[{key:"Enabled",value:C.code_export.enabled?"yes":"no"},{key:"Language",value:C.code_export.language},{key:"Skip Validation",value:C.code_export.skip_validation?"yes":"no"}]},gf(C.mobile)]})},{id:"config-target",label:"Target",type:"select",currentValue:Xt.kind==="unset"||Xt.kind==="choose-mobile"?"desktop":Xt.kind,options:[{label:"Desktop (Chrome)",value:"desktop"},{label:"Emulator (Android)",value:"emulator"},{label:"Simulator (iOS)",value:"simulator"}],onValue:b=>{b!=="desktop"&&b!=="emulator"&&b!=="simulator"||(j("ok","/config target",Qr(b)),b==="emulator"||b==="simulator"?(er(null),A.begin("reinit",{kind:b})):(m.setMobile({tui_target:b}),Ce(m.load()),A.reset()))}},{id:"config-project",label:"Project",type:"action",onProjectPicker:()=>{}},{id:"config-folder",label:"Folder",type:"action",...C.project_id?{onFolderPicker:()=>{}}:{onInfo:()=>({title:"Folder",sections:[{entries:[{key:"Status",value:"Select a project first",color:l.dim}]}]})}},{id:"config-desktop",label:"Desktop",type:"submenu",children:pf(T)},...cr()?[{id:"config-mobile",label:"Mobile (both)",type:"submenu",children:mf(T)}]:[],{id:"config-run",label:"Run",type:"submenu",children:[{id:"config-mode",label:"Mode",type:"select",currentValue:C.mode,options:[{label:"testing",value:"testing"},{label:"action",value:"action"}],onValue:b=>{(b==="action"||b==="testing")&&(m.set("mode",b),Ce(m.load()),j("ok","/config set-mode",b))}},{id:"config-assertion-mode",label:"Assertion Mode",type:"select",currentValue:C.assertion_mode,options:[{label:"visual \u2014 vision model (default)",value:"visual"},{label:"dom \u2014 DOM extraction & assertions preferred",value:"dom"}],onValue:b=>{(b==="visual"||b==="dom")&&(m.set("assertion_mode",b),Ce(m.load()),j("ok","/config set-assertion-mode",b))}},{id:"config-final-validation",label:"Final Validation",type:"select",currentValue:C.final_validation?"on":"off",options:[{label:"off \u2014 no cp_final checkpoint (default)",value:"off"},{label:"on \u2014 append cp_final, verifying the objective as a whole",value:"on"}],onValue:b=>{(b==="on"||b==="off")&&(m.set("final_validation",b==="on"),Ce(m.load()),j("ok","/config set-final-validation",b))}},{id:"config-bug-detection",label:"Bug Detection",type:"select",currentValue:C.bug_detection,options:[{label:"off \u2014 no bug detection while authoring (default)",value:"off"},{label:"stop \u2014 halt the run when a confirmed product bug is found",value:"stop"},{label:"continue \u2014 record confirmed bugs and keep authoring",value:"continue"}],onValue:b=>{(b==="off"||b==="stop"||b==="continue")&&(m.set("bug_detection",b),Ce(m.load()),j("ok","/config set-bug-detection",b))}}]},{id:"config-hints",label:"CLI Hints",type:"select",currentValue:C.hints_enabled===!1?"off":"on",options:[{label:"on",value:"on"},{label:"off",value:"off"}],onValue:b=>{let E=b==="on";m.set("hints_enabled",E),Ce(m.load()),j("ok","/config hints",`CLI hints ${E?"enabled":"disabled"}`)}},{id:"config-generate",label:"Generate",type:"submenu",currentValue:`${C.generate.scenario_limit}x${C.generate.per_scenario_limit}`,children:[{id:"config-generate-scenario-limit",label:"Scenario limit",type:"text-input",currentValue:String(C.generate.scenario_limit),placeholder:"5",onValue:b=>{let E=parseInt(b,10);if(!Number.isFinite(E)||E<1||E>20){j("error","/config",`Scenario limit must be 1-20 (got ${b})`);return}m.set("generate",{...C.generate,scenario_limit:E}),Ce(m.load()),j("ok","/config",`Scenario limit: ${E}`)}},{id:"config-generate-per-scenario-limit",label:"Per-scenario limit",type:"text-input",currentValue:String(C.generate.per_scenario_limit),placeholder:"4",onValue:b=>{let E=parseInt(b,10);if(!Number.isFinite(E)||E<1||E>20){j("error","/config",`Per-scenario limit must be 1-20 (got ${b})`);return}m.set("generate",{...C.generate,per_scenario_limit:E}),Ce(m.load()),j("ok","/config",`Per-scenario limit: ${E}`)}},{id:"config-generate-memory",label:"Memory",type:"select",currentValue:C.generate.memory_enabled?"on":"off",options:[{label:"on",value:"on"},{label:"off",value:"off"}],onValue:b=>{let E=b==="on";m.set("generate",{...C.generate,memory_enabled:E}),Ce(m.load()),j("ok","/config",`Memory: ${E?"on":"off"}`)}}]},{id:"config-code-export",label:"Code Export",type:"submenu",currentValue:C.code_export.enabled?"enabled":"disabled",children:[{id:"config-code-export-enabled",label:"Enabled",type:"select",currentValue:C.code_export.enabled?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:b=>{m.set("code_export",{...C.code_export,enabled:b==="on"}),Ce(m.load()),j("ok","/config code-export enabled",b)}},{id:"config-code-export-language",label:"Language",type:"select",currentValue:C.code_export.language,options:[{label:"python",value:"python"},{label:"javascript",value:"javascript"}],onValue:b=>{b!=="python"&&b!=="javascript"||(m.set("code_export",{...C.code_export,language:b}),Ce(m.load()),j("ok","/config code-export language",b))}},{id:"config-code-export-skip-validation",label:"Skip Validation",type:"select",currentValue:C.code_export.skip_validation?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:b=>{m.set("code_export",{...C.code_export,skip_validation:b==="on"}),Ce(m.load()),j("ok","/config code-export skip-validation",b)}}]}]},{id:"exit",label:"Exit",type:"action",onAction:()=>{ir()}}]},[y,m,C,be,ir,Pe,bt,j,A.target,A.device,A.begin,A.requestApp]),oi=(0,k.useCallback)(d=>{if(O.askingUser){let S=O.askingUser;ke((0,R.jsxs)(v,{flexDirection:"column",marginLeft:2,paddingLeft:1,marginTop:1,children:[(0,R.jsx)(v,{marginLeft:1,children:(0,R.jsx)(a,{color:l.orange,bold:!0,children:"Agent Question"})}),(0,R.jsxs)(v,{borderStyle:"round",borderColor:l.orange,flexDirection:"column",paddingX:2,paddingY:1,width:70,children:[(0,R.jsxs)(v,{children:[(0,R.jsx)(v,{width:3,children:(0,R.jsx)(a,{color:l.orange,bold:!0,children:"?"})}),(0,R.jsx)(v,{flexShrink:1,children:(0,R.jsx)(a,{wrap:"wrap",children:S})})]}),(0,R.jsxs)(v,{marginTop:1,children:[(0,R.jsx)(v,{width:3,children:(0,R.jsx)(a,{color:l.dim,bold:!0,children:"\u2192"})}),(0,R.jsx)(v,{flexShrink:1,children:(0,R.jsx)(a,{wrap:"wrap",children:d})})]})]})]})),Qo.current=null,O.sendAnswer(d);return}if(c.logCommand(d),O.isRunning){be({type:"error",text:"Run in progress. Ctrl+C to cancel."});return}let h=So(d);if(h){if(!zu(h.command,Me)){j("error",`/${h.command}`,`/${h.command} isn't available in ${Me==="run"?"Run":"Generate"} mode.`);return}switch(h.command){case"profiles":if(Me==="generate"&&xe.requestId&&h.args.action==="switch"){zr({reason:"profile",pendingArgs:h.args});return}er("auth");return;case"login":case"logout":case"whoami":case"balance":case"auth":er("auth");return;case"config":if(h.args.action==="set-url"){let S=zn(h.args.value);if(!S){j("error","/config set-url","Usage: /config set-url <url>");return}m.set("default_url",S),Ce(m.load()),j("ok","/config set-url",S);return}er("config");return;case"mobile":{let S=Wn();if(!S.supported){j("error","/mobile",S.reason);return}A.begin("confirm");return}case"desktop":{m.setMobile({tui_target:"desktop"}),Ce(m.load()),A.reset(),j("ok","/web","Session target: web (Chrome)");return}case"doctor":{(async()=>{be({type:"info",text:"Running mobile toolchain checks\u2026"});let{runDoctor:S,renderDoctorText:T,doctorExitCode:b}=await import("./doctor-FSECFZUU.js"),E=await S();be({type:"info",text:T(E)}),b(E)!==0&&be({type:"info",text:"Install the managed tooling with /mobile (interactive) or `kane-cli doctor --install`."})})();return}case"help":bs(!0);return;case"testmd":if(O.isRunning||xe.isStreaming||Ie.running){j("error","/testmd","Finish or cancel the current run/generation first.");return}Ie.clearResult(),Tn(!0);return;case"generate":if(Ie.running){j("error","/generate","Finish or cancel the running test first.");return}Me==="run"?At.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 S=Ju(Me,h.args.objective);switch(S.kind){case"run":vr(S.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":At.requestSwitch("run")&&j("ok","/run","Switched to Run mode.",void 0,l.orange);return}return}case"update":{(async()=>{let{getUpdateCommand:S}=await import("./version-check-O6PYTI4T.js");j("ok","/update",`To update kane-cli, run: ${S()}`)})();return}case"summary":{if(Me==="generate"&&!xe.requestId){In("no generation yet"),j("ok","/summary","(no generation yet)");return}let S=c.getFlows();if(S.length===0){j("ok","/summary","No runs yet in this session.");return}let T=h.args.index?parseInt(h.args.index,10):void 0;if(T!==void 0&&!c.getFlow(T)){j("error","/summary",`No flow at index ${T}`,`${S.length} flow${S.length===1?"":"s"} available. Use /summary to see all.`);return}ke((0,R.jsx)(as,{flows:S,filterIndex:T})),j("ok","/summary",T!==void 0?`Flow ${T}`:`${S.length} flow${S.length===1?"":"s"}`);return}case"new":Me==="generate"&&xe.requestId&&(tr(),xe.end().catch(S=>{j("error","/new",`Could not end generation cleanly: ${S.message}`)}),xe.reset()),Is(),j("ok","/new","Session reset");return;case"name":{let S=h.raw.replace(/^\/name\s*/,"").trim();if(!S){j("error","/name","Usage: /name <new-name>");return}(async()=>{let{validateNameOrThrow:T}=await import("./name-validator-5YGJXLZ7.js");try{T(S),c.setSessionName(S),j("ok","/name",`Session name set: ${S}`)}catch(b){j("error","/name",b.message)}})();return}case"cancel":if(Me==="generate"&&xe.isStreaming){tr(),xe.cancel(),j("ok","/cancel","Cancelled");return}if(Me==="generate"&&!xe.requestId){In("no generation yet"),j("ok","/cancel","(no generation yet)");return}if(Ie.running){Ie.cancel(),j("ok","/cancel","Run cancelled");return}O.cancelRun(),j("ok","/cancel","Run cancelled");return;case"clear":j("ok","/clear","Chat cleared");return;case"exit":Me==="generate"&&xe.requestId&&(tr(),xe.end()),ir();return;default:j("error",`/${h.command}`,"Unknown command");return}}if(d.trim().toLowerCase()==="exit"){ir();return}ke((0,R.jsx)(Tu,{objective:d})),vr(d,void 0)},[O,be,j,ke,c,vr,ir,Is,Me,xe.isStreaming,xe.requestId,xe,In,tr,Ie,C,s]);ks.current=oi;let Ps=(0,k.useRef)(!1);(0,k.useEffect)(()=>{if(!Ps.current&&B&&u==="generate"&&f){Ps.current=!0;let d=setTimeout(()=>{Of(f)},50);return()=>clearTimeout(d)}},[B,u,f]);let Ls=y.getAuthInfo(),Uf=Ls?Ls.method==="basic"?"basic auth":"oauth":"not logged in",qf=(()=>{if(Wr)return["help"];if(Xr)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 Bt==="auth"?wn?["auth",d[wn]]:["auth"]:Bt==="config"?wn?["config",d[wn]]:["config"]:Bt==="help"?["help"]:O.askingUser?["agent question"]:[]})();return(0,R.jsxs)(v,{flexDirection:"column",children:[!B&&!gs&&(0,R.jsx)(Su,{onComplete:()=>{let d=y.creds.getActiveProfile(),h=y.creds.getDefaultEnv(),S=d?y.creds.loadCredentials(d,h):null,T=d?y.creds.loadBasicAuth(d,h):null,b=!!(S||T),E=T?.username??d??null;ke((0,R.jsx)(bo,{size:"full",helmetVisibleRows:8,textVisibleRows:7,showMeta:!0,version:at,authenticated:b,user:E})),yf(!0);let M=(N,ne,Se,Re)=>{c.log(N,ne,Se,Re)};if(Aa(y.creds,M).then(N=>{if(N.status==="authenticated"){let{profile:ne,env:Se,tmsCreds:Re}=N.result;y.creds.setActiveProfile(ne),y.creds.setDefaultEnv(Se),bt(),Gt(Re),Dt("ready"),F(!0)}else N.status==="needs_pick"?(vf(N.profiles),Dt("pick")):Dt("login")}).catch(N=>{c.log("error","STARTUP_GATE_ERROR","Auth gate failed",{error:String(N)}),Dt("login")}),o&&o.then(async N=>{if(N){let{getUpdateCommand:ne}=await import("./version-check-O6PYTI4T.js");j("ok","update available",`${N.current} \u2192 ${N.latest}`,`Run: ${ne()}`)}}).catch(()=>{}),i&&i.changes.length>0){let N=`kane-cli updated to ${i.toVersion}. Default settings changed:`,ne=[...i.changes.map(Se=>`\u2022 ${Se.description} (${Se.field}: ${JSON.stringify(Se.from)} \u2192 ${JSON.stringify(Se.to)})`),"","Use /config to review or revert any of these."].join(`
|
|
26
|
-
`);j("ok","defaults updated",N,ne)}}}),!B&&Zt==="booting"&&gs&&(0,R.jsx)(v,{paddingX:1,children:(0,R.jsx)(a,{color:"yellow",children:"Checking authentication..."})}),!B&&Zt==="pick"&&(0,R.jsx)(rv,{profiles:bf,onCancel:()=>Dt("login"),onSelect:async(d,h)=>{y.creds.setActiveProfile(d),y.creds.setDefaultEnv(h),bt(),Fo(!0);let S=(T,b,E,M)=>{c.log(T,b,E,M)};try{let T=await Ia(y.creds,d,h,S);Fo(!1),T.status==="authenticated"?(It(d,h),Gt(T.result.tmsCreds),Dt("ready"),F(!0)):Dt("login")}catch{Fo(!1),Dt("login")}},validating:xf}),!B&&Zt==="login"&&!V&&(0,R.jsx)(Un,{devMode:process.env.KANE_DEV_MODE==="1",profiles:y.creds.listProfiles(),onBasicLogin:async(d,h,S,T)=>{let{validateBasicAuth:b}=await import("./validate-basic-2GVSQ2R5.js");await b(h,S,T),y.creds.saveBasicAuth(d,h,{username:S,access_key:T}),y.creds.setActiveProfile(d),y.creds.setDefaultEnv(h),Rt(y.creds,m,d,h),y.setTokenValid(!0),bt()},onOAuthLogin:async(d,h)=>{y.creds.setDefaultEnv(h),await y.login(d),Rt(y.creds,m,d,h),bt()},onComplete:(d,h)=>{Nt(Vo(h),Tt).then(()=>{bt(),Ve({phase:"project",profile:d,env:h})}).catch(()=>{Ve({phase:"project",profile:d,env:h})})},onCancel:()=>{Dr(0,"Login cancelled at startup")}}),!B&&Zt==="login"&&V?.phase==="project"&&(0,R.jsx)(Br,{resolver:y.getResolver(),currentProjectId:null,env:V.env,onSelect:(d,h)=>{y.creds.saveProfileConfig(V.profile,V.env,{project_id:d,project_name:h}),j("ok","/config project",h,`id: ${d}`),Ve({...V,phase:"folder"})},onCancel:async()=>{let d=await Wo(V.profile,V.env);d&&(Pt(y.creds,m,V.profile,V.env,{projectId:d.id,projectName:d.name}),j("ok","/config project",d.name,`id: ${d.id}`),Ve({...V,phase:"folder"}))}}),!B&&Zt==="login"&&V?.phase==="folder"&&(0,R.jsx)($r,{resolver:y.getResolver(),projectId:y.creds.loadProfileConfig(V.profile,V.env)?.project_id??"",currentFolderId:null,env:V.env,onSelect:(d,h)=>{y.creds.saveProfileConfig(V.profile,V.env,{folder_id:d,folder_name:h}),j("ok","/config folder",h,`id: ${d}`),It(V.profile,V.env),Ve(null),Dt("ready"),F(!0)},onCancel:async()=>{let d=y.creds.loadProfileConfig(V.profile,V.env);if(!d?.project_id)return;let h=await Xo(V.env,d.project_id);h&&(Pt(y.creds,m,V.profile,V.env,{folderId:h.id,folderName:h.name}),j("ok","/config folder",h.name,`id: ${h.id}`),It(V.profile,V.env),Ve(null),Dt("ready"),F(!0))}}),B&&Sn==="menu"&&!Y&&(0,R.jsx)(v,{marginBottom:1,children:(0,R.jsxs)(v,{borderStyle:"round",borderColor:"#dc4e08",paddingX:2,children:[(0,R.jsx)(a,{color:"#ff9500",bold:!0,children:"KaneAI CLI"}),(0,R.jsx)(a,{color:l.dim,children:" \u2502 "}),(0,R.jsx)(a,{color:"#ff9500",children:C.model}),(0,R.jsx)(a,{color:l.dim,children:" \u2502 "}),(0,R.jsx)(a,{color:l.dim,children:Uf}),(0,R.jsx)(a,{color:l.dim,children:" \u2502 "}),(0,R.jsxs)(a,{color:l.dim,children:[Ir??"no profile","/",ye]})]})}),B&&!Y&&(0,R.jsxs)(v,{flexDirection:"column",flexGrow:1,children:[Sn==="menu"&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(ts,{items:_s,onRunSelected:()=>Sf("chat"),onActiveViewChange:hs,renderLoginWizard:d=>{let h=V?.phase??"wizard";if(h==="project")return(0,R.jsx)(Br,{resolver:y.getResolver(),currentProjectId:null,env:V.env,onSelect:(S,T)=>{y.creds.saveProfileConfig(V.profile,V.env,{project_id:S,project_name:T}),j("ok","/config project",T,`id: ${S}`),Ve(b=>b?{...b,phase:"folder"}:null)},onCancel:async()=>{if(!V)return;let S=await Wo(V.profile,V.env);S&&(Pt(y.creds,m,V.profile,V.env,{projectId:S.id,projectName:S.name}),j("ok","/config project",S.name,`id: ${S.id}`),Ve(T=>T?{...T,phase:"folder"}:null))}});if(h==="folder"){let S=y.creds.loadProfileConfig(V.profile,V.env);return(0,R.jsx)($r,{resolver:y.getResolver(),projectId:S?.project_id??"",currentFolderId:null,env:V.env,onSelect:(T,b)=>{y.creds.saveProfileConfig(V.profile,V.env,{folder_id:T,folder_name:b}),j("ok","/config folder",b,`id: ${T}`),It(V.profile,V.env),Ve(null),d()},onCancel:async()=>{if(!V)return;let T=y.creds.loadProfileConfig(V.profile,V.env);if(!T?.project_id)return;let b=await Xo(V.env,T.project_id);b&&(Pt(y.creds,m,V.profile,V.env,{folderId:b.id,folderName:b.name}),j("ok","/config folder",b.name,`id: ${b.id}`),It(V.profile,V.env),Ve(null),d())}})}return(0,R.jsx)(Un,{devMode:process.env.KANE_DEV_MODE==="1",profiles:y.creds.listProfiles(),onBasicLogin:async(S,T,b,E)=>{let{validateBasicAuth:M}=await import("./validate-basic-2GVSQ2R5.js");await M(T,b,E),y.creds.saveBasicAuth(S,T,{username:b,access_key:E}),y.creds.setActiveProfile(S),y.creds.setDefaultEnv(T),Rt(y.creds,m,S,T),y.setTokenValid(!0),bt()},onOAuthLogin:async(S,T)=>{y.creds.setDefaultEnv(T),await y.login(S),Rt(y.creds,m,S,T),bt()},onComplete:(S,T)=>{Nt(Vo(T),Tt).then(()=>{Ve({phase:"project",profile:S,env:T})}).catch(()=>{Ve({phase:"project",profile:S,env:T})})},onCancel:()=>{Ve(null),d()}})},renderProfilesView:d=>(0,R.jsx)(pi,{creds:y.creds,onSwitch:(h,S)=>{let T=y.creds.getActiveProfile()??"(none)";y.creds.setActiveProfile(h),y.creds.setDefaultEnv(S),Rt(y.creds,m,h,S),It(h,S),bt(),Nt(ms(S),Tt).catch(()=>{}),j("ok","/profiles switch",`${T} \u2192 ${h} [${S}]`)},onCancel:d}),renderChromeProfilePicker:d=>(0,R.jsx)(mi,{currentPath:C.chrome_profile_path,onSelect:h=>{m.set("chrome_profile_path",h),Ce(m.load()),j("ok","/config chrome-profile",h),d()},onCancel:d}),renderProjectPicker:d=>(0,R.jsx)(Br,{resolver:y.getResolver(),currentProjectId:C.project_id,env:ye,onSelect:(h,S)=>{Pt(y.creds,m,y.creds.getActiveProfile()??"default",y.creds.getDefaultEnv(),{projectId:h,projectName:S}),j("ok","/config project",S,`id: ${h}`),Ce(m.load()),d()},onCancel:d}),renderFolderPicker:d=>(0,R.jsx)($r,{resolver:y.getResolver(),projectId:C.project_id??"",currentFolderId:C.folder_id,env:ye,onSelect:(h,S)=>{Pt(y.creds,m,y.creds.getActiveProfile()??"default",y.creds.getDefaultEnv(),{folderId:h,folderName:S}),j("ok","/config folder",S,`id: ${h}`),Ce(m.load()),d()},onCancel:d}),renderWindowSizePicker:d=>(0,R.jsx)(ss,{currentWidth:C.window_size.width,currentHeight:C.window_size.height,onSelect:(h,S)=>{m.set("window_size",{width:h,height:S}),Ce(m.load()),j("ok","/config set-window",`${h} \xD7 ${S}`),d()},onCancel:d})}),$e&&(0,R.jsx)(v,{paddingX:1,marginTop:1,children:(0,R.jsx)(a,{color:$e.color,children:$e.text})})]}),Sn==="chat"&&(0,R.jsxs)(R.Fragment,{children:[Ht&&!O.isRunning&&(0,R.jsx)(fi,{label:Ht.replace(/[.…\s]+$/,"")}),(()=>{let d=Fs({isRunning:O.isRunning,bifurcationInfo:O.bifurcationInfo,steps:O.steps,cmInitCounts:O.cmInitCounts,replayInfo:O.replayInfo});return d?(0,R.jsx)(fi,{label:d.label,hasBifurcation:d.hasBifurcation}):null})(),O.isRunning&&O.steps.length>0&&(0,R.jsx)(Vs,{steps:O.steps,bifurcated:!!O.bifurcationInfo&&!O.bifurcationInfo.isSingleFlow,flows:O.bifurcationInfo?.flows,cmInitCounts:O.cmInitCounts,onStepCommit:ke,describe:Kr.text,describeVisible:Kr.visible,describeRevealing:Kr.revealing},`run-${ue.current}`),Ie.runViewProps&&(0,R.jsx)(ja,{...Ie.runViewProps,onCancel:()=>{Ie.runViewProps?.onCancel?.(),Ie.cancel()}}),Wr&&(0,R.jsx)(ed,{onClose:()=>bs(!1),version:at,environment:y.creds.getDefaultEnv(),sessionId:c.sessionId,runUrl:C.default_url??si,mode:Me}),Xr&&(0,R.jsx)(nd,{cwd:process.cwd(),currentOrgId:String(De?.org_id??""),onClose:()=>Tn(!1),onRun:d=>{if(O.isRunning||xe.isStreaming||Ie.running){setTimeout(()=>j("error","/testmd","Finish or cancel the current run first."),0);return}Tn(!1),!(Me==="generate"&&!At.requestSwitch("run"))&&(Me==="generate"&&setTimeout(()=>j("ok","/testmd",`Switched to Run mode to run ${d.relPath}`,void 0,l.orange),0),Ie.start(d.path).catch(h=>setTimeout(()=>j("error","/testmd",`Run failed: ${h.message}`),0)))},onExport:d=>{Tn(!1),tc(d.path,{language:C.code_export.language??"python",env:ye}).then(h=>setTimeout(()=>j("ok","/testmd",`Exported code \u2192 ${h.codeDir}`),0)).catch(h=>setTimeout(()=>j("error","/testmd",`Export failed: ${h.message}`),0))}}),Bt&&!O.isRunning&&(()=>{let d=_s.find(h=>h.id===Bt);return d?.children?(0,R.jsx)(ts,{items:d.children,onRunSelected:()=>er(null),onDismiss:()=>er(null),onActiveViewChange:hs,renderLoginWizard:h=>{let S=V?.phase??"wizard";if(S==="project")return(0,R.jsx)(Br,{resolver:y.getResolver(),currentProjectId:null,env:V.env,onSelect:(T,b)=>{y.creds.saveProfileConfig(V.profile,V.env,{project_id:T,project_name:b}),j("ok","/config project",b,`id: ${T}`),Ve(E=>E?{...E,phase:"folder"}:null)},onCancel:async()=>{if(!V)return;let T=await Wo(V.profile,V.env);T&&(Pt(y.creds,m,V.profile,V.env,{projectId:T.id,projectName:T.name}),j("ok","/config project",T.name,`id: ${T.id}`),Ve(b=>b?{...b,phase:"folder"}:null))}});if(S==="folder"){let T=y.creds.loadProfileConfig(V.profile,V.env);return(0,R.jsx)($r,{resolver:y.getResolver(),projectId:T?.project_id??"",currentFolderId:null,env:V.env,onSelect:(b,E)=>{y.creds.saveProfileConfig(V.profile,V.env,{folder_id:b,folder_name:E}),j("ok","/config folder",E,`id: ${b}`),It(V.profile,V.env),Ve(null),h()},onCancel:async()=>{if(!V)return;let b=y.creds.loadProfileConfig(V.profile,V.env);if(!b?.project_id)return;let E=await Xo(V.env,b.project_id);E&&(Pt(y.creds,m,V.profile,V.env,{folderId:E.id,folderName:E.name}),j("ok","/config folder",E.name,`id: ${E.id}`),It(V.profile,V.env),Ve(null),h())}})}return(0,R.jsx)(Un,{devMode:process.env.KANE_DEV_MODE==="1",profiles:y.creds.listProfiles(),onBasicLogin:async(T,b,E,M)=>{let{validateBasicAuth:N}=await import("./validate-basic-2GVSQ2R5.js");await N(b,E,M),y.creds.saveBasicAuth(T,b,{username:E,access_key:M}),y.creds.setActiveProfile(T),y.creds.setDefaultEnv(b),Rt(y.creds,m,T,b),y.setTokenValid(!0),bt()},onOAuthLogin:async(T,b)=>{y.creds.setDefaultEnv(b),await y.login(T),Rt(y.creds,m,T,b),bt()},onComplete:(T,b)=>{Nt(Vo(b),Tt).then(()=>{Ve({phase:"project",profile:T,env:b})}).catch(()=>{Ve({phase:"project",profile:T,env:b})})},onCancel:()=>{Ve(null),h()}})},renderProfilesView:h=>(0,R.jsx)(pi,{creds:y.creds,onSwitch:(S,T)=>{let b=y.creds.getActiveProfile()??"(none)";y.creds.setActiveProfile(S),y.creds.setDefaultEnv(T),Rt(y.creds,m,S,T),It(S,T),bt(),Nt(ms(T),Tt).catch(()=>{}),j("ok","/profiles switch",`${b} \u2192 ${S} [${T}]`),h()},onCancel:h}),renderChromeProfilePicker:h=>(0,R.jsx)(mi,{currentPath:C.chrome_profile_path,onSelect:S=>{m.save({chrome_profile_path:S}),Ce(m.load()),j("ok","/config chrome-profile",S),h()},onCancel:h}),renderProjectPicker:h=>(0,R.jsx)(Br,{resolver:y.getResolver(),currentProjectId:C.project_id,env:ye,onSelect:(S,T)=>{Pt(y.creds,m,y.creds.getActiveProfile()??"default",y.creds.getDefaultEnv(),{projectId:S,projectName:T}),Ce(m.load()),j("ok","/config project",T,`id: ${S}`),h()},onCancel:h}),renderFolderPicker:h=>(0,R.jsx)($r,{resolver:y.getResolver(),projectId:C.project_id??"",currentFolderId:C.folder_id,env:ye,onSelect:(S,T)=>{Pt(y.creds,m,y.creds.getActiveProfile()??"default",y.creds.getDefaultEnv(),{folderId:S,folderName:T}),Ce(m.load()),j("ok","/config folder",T,`id: ${S}`),h()},onCancel:h}),renderWindowSizePicker:h=>(0,R.jsx)(ss,{currentWidth:C.window_size.width,currentHeight:C.window_size.height,onSelect:(S,T)=>{m.set("window_size",{width:S,height:T}),Ce(m.load()),j("ok","/config set-window",`${S} \xD7 ${T}`),h()},onCancel:h})},Bt):null})(),Bt&&$e&&(0,R.jsx)(v,{paddingX:1,marginTop:1,children:(0,R.jsx)(a,{color:$e.color,children:$e.text})}),Me==="run"&&!Bt&&!Wr&&!Xr&&!wt&&O.askingUser&&(0,R.jsxs)(v,{flexDirection:"column",marginLeft:2,paddingLeft:1,marginTop:1,children:[(0,R.jsx)(v,{marginLeft:1,children:(0,R.jsx)(a,{color:l.orange,bold:!0,children:"Agent Question"})}),(0,R.jsx)(v,{borderStyle:"round",borderColor:l.orange,flexDirection:"column",paddingX:2,paddingY:1,width:70,children:(0,R.jsxs)(v,{children:[(0,R.jsx)(v,{width:3,children:(0,R.jsx)(a,{color:l.orange,bold:!0,children:"?"})}),(0,R.jsx)(v,{flexShrink:1,children:(0,R.jsx)(a,{wrap:"wrap",children:O.askingUser})})]})})]}),Rn&&(()=>{let d=Rn,h=d.reason==="switch"?d.to==="run"?"Discard the current generation and switch to Run?":"Stop the current run / discard its results and switch to Generate?":"Switching profile will end this generation. Continue?",S=d.reason==="switch"?"Discard & switch":"Yes, end";return(0,R.jsx)(tf,{message:h,confirmLabel:S,onConfirm:async()=>{if(d.reason==="switch"){let b=d.to;zr(null),At.confirmSwitch(b);return}tr();let T=d.pendingArgs;if(zr(null),await xe.end(),xe.reset(),T.profile){let b=y.creds.getDefaultEnv(),E=y.creds.getActiveProfile()??"(none)";y.creds.setActiveProfile(T.profile),y.creds.setDefaultEnv(b),Rt(y.creds,m,T.profile,b),It(T.profile,b),bt(),Nt({kind:"switch",env:b},Tt).catch(()=>{}),j("ok","/profiles switch",`${E} \u2192 ${T.profile} [${b}]`)}else oi("/profiles switch")},onCancel:()=>zr(null)})})(),xs&&(0,R.jsxs)(v,{flexDirection:"column",paddingX:1,marginTop:1,children:[A.phase==="doctor"?(0,R.jsx)(Fu,{checks:A.checks,busyMessage:A.busyMessage,onRetry:A.recheck,onInstall:A.install,onCancel:A.cancel}):A.phase==="apps"&&A.kind?(0,R.jsx)(sa,{kind:A.kind,onSelect:d=>A.selectApp(d),onBack:A.back,onCancel:A.back}):A.phase==="appList"&&A.kind?(0,R.jsx)(ia,{kind:A.kind,busyMessage:A.busyMessage,listApps:Df,onSelect:d=>{A.selectAppId(d.appId)},onManualEntry:A.requestAppId,onCancel:A.back}):A.phase==="appId"?(0,R.jsx)(Da,{busyMessage:A.busyMessage,onSubmit:d=>A.selectAppId(d),onBack:A.back}):A.phase==="chooser"?(0,R.jsx)(Pa,{mode:"mobile-only",onSelect:d=>{(d==="emulator"||d==="simulator")&&A.selectKind(d)},onCancel:A.back}):A.phase==="confirm"&&A.saved?(0,R.jsx)(Yu,{saved:A.saved,onContinue:()=>A.confirmSaved(),onChangeDevice:()=>A.begin("reinit"),onChangeApp:()=>A.confirmSaved({keepApp:!1}),onCancel:A.cancel}):A.phase==="appSource"&&A.kind?(0,R.jsx)(La,{kind:A.kind,onSelect:d=>d==="uploaded"?A.requestCloudApps():A.requestApp(),onCancel:A.back}):(0,R.jsx)(oa,{targets:A.targets,preselectedTarget:C.mobile?.default_target,busyMessage:A.busyMessage??(A.phase==="checking"?"Checking mobile toolchain\u2026":null),onSelect:d=>{A.selectTarget(d)},onCancel:A.back,...A.kind?{kind:A.kind}:{}}),A.error&&(0,R.jsx)(a,{color:"red",children:A.error})]}),Er&&(0,R.jsx)(Mu,{suggested:Er.suggested,sessionTargetLabel:Xt.kind==="unset"||Xt.kind==="choose-mobile"?"Desktop":Qr(Xt.kind),appHint:Er.verdict.appHint,savedDeviceName:C.mobile?.default_target?.id??null,onAccept:()=>An("accept"),onPickDevice:()=>An("pick"),onKeep:()=>An("keep"),onCancel:()=>An("cancel")}),Me==="run"&&!Bt&&!Wr&&!Xr&&!wt&&!Rn&&!Ie.running&&!xs&&!Er&&(0,R.jsx)(ar,{onSubmit:oi,onEscape:void 0,history:Tf,commands:gn(Xu),clearSeq:$f,loadMentionItems:Cr?_f:void 0,mentionHint:Cr&&!A.target?"No device selected \u2014 run /mobile to choose one.":void 0,placeholder:O.askingUser?"Type your answer...":O.isRunning?"Run in progress... Ctrl+C to cancel":"Type an objective... (/ = commands)",footerBindings:[{keys:"\u2191\u2193",label:"history"},{keys:"\u21B5",label:"submit"},{keys:"tab",label:"complete"},{keys:"ctrl+r",label:"search"},{keys:"/generate",label:"test cases"}]}),Me==="generate"&&!Bt&&!Wr&&!Xr&&!wt&&!Rn&&(0,R.jsx)(Zd,{tcg:xe,gm:At,history:Rf,tuiConfig:C,browse:or.isOpen?{target:or.target,onClose:or.close,excluded:or.excluded,onToggleCase:or.toggleCase,onToggleScenario:or.toggleScenario,getStatus:At.bifurcation.getStatus,getResult:At.bifurcation.getResult}:null})]})]}),B&&Y&&ge&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(xi,{steps:Lt,status:ge.status,testUrl:ge.testUrl,error:ge.error}),ge.status==="success"&&(0,R.jsx)(Yn,{recordedTestPath:Q?.recordedTestPath,outputDir:Q?.outputDir,shareableLink:ge.testUrl,testCaseLink:ge.testCaseLink,codeExportDir:ge.codeExportDir,autoExit:!1})]}),wt&&(0,R.jsx)(yc,{defaultName:wt,onSubmit:Ff}),mr&&(0,R.jsx)(Ra,{packPath:mr.packPath,viewerBase:wa(ye??"prod"),onDone:()=>mr.resolve()}),Gr&&(0,R.jsx)(xc,{onSubmit:Vf}),pr&&ge&&(0,R.jsx)(xi,{steps:Lt,status:ge.status,error:ge.error}),B&&!Y&&(0,R.jsx)(vu,{profile:Ir,environment:ye,tokenValid:y.tokenValid,runCount:oe,sessionId:c.sessionId,viewMode:Sn,breadcrumb:qf,chatMode:Me,footerHint:Nf,tcgRequestId:xe.requestId,tcgStreamStatus:xe.isStreaming?"streaming":xe.isReconnecting?"reconnecting":xe.isTerminal&&xe.state.status.toLowerCase()==="completed"?"completed":xe.isTerminal&&xe.state.status.toLowerCase()==="failed"?"failed":null,sessionTarget:Cr?{kind:Xt.kind==="simulator"?"simulator":"emulator",...A.target?{deviceName:A.target.displayName}:{},...A.device?.app_package?{appPackage:A.device.app_package}:{}}:{kind:"desktop"}})]})}function rv({profiles:e,onSelect:t,onCancel:r,validating:n}){let[o,i]=(0,k.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,R.jsxs)(v,{flexDirection:"column",paddingX:1,children:[(0,R.jsx)(a,{color:"#ff9500",bold:!0,children:"Select a profile:"}),(0,R.jsx)(v,{marginTop:1,flexDirection:"column",children:e.map((s,u)=>(0,R.jsxs)(a,{children:[u===o?"\u276F ":" ",(0,R.jsx)(a,{color:u===o?"#ff9500":"white",bold:u===o,children:s.profile}),(0,R.jsxs)(a,{color:"gray",children:[" [",s.env,"]"]})]},`${s.profile}-${s.env}`))}),n&&(0,R.jsx)(v,{marginTop:1,children:(0,R.jsx)(a,{color:"yellow",children:"Validating credentials..."})}),!n&&(0,R.jsx)(v,{marginTop:1,children:(0,R.jsx)(a,{color:"gray",children:"Esc = new login"})})]})}export{Nu as a,ju as b,qu as c,lf as d,hf as e,DC as f};
|