@testmuai/kane-cli 0.4.9 → 0.5.0
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/{ChromeProfilePicker-BOTCHMXH.js → ChromeProfilePicker-PIWZY4WH.js} +1 -1
- package/dist/{CliFeedbackPrompt-BV4VVYOY.js → CliFeedbackPrompt-URXCHBZ5.js} +1 -1
- package/dist/{CliUploadProgress-Y4H43W5T.js → CliUploadProgress-DMH3C3UZ.js} +1 -1
- package/dist/{ConfigView-JPBD47MS.js → ConfigView-NWNDNTKW.js} +1 -1
- package/dist/EvidenceViewOffer-HEBQ7C4H.js +2 -0
- package/dist/FolderPicker-5S23OTSY.js +2 -0
- package/dist/HelpView-YYKTP4JH.js +2 -0
- package/dist/{InfoBox-3ZLQZGUE.js → InfoBox-FPAWQZGQ.js} +1 -1
- package/dist/{LinksBox-UYMOQGSW.js → LinksBox-O5ZFYSK2.js} +1 -1
- package/dist/{ProfilesView-YUMYSOZ4.js → ProfilesView-SPECXHZE.js} +1 -1
- package/dist/{ProjectPicker-CJVGBY42.js → ProjectPicker-ANJ6NGNY.js} +1 -1
- package/dist/{SaveSessionPrompt-DFVUWTOK.js → SaveSessionPrompt-W2GWELOP.js} +1 -1
- package/dist/SingleShotApp-5TYM356H.js +2 -0
- package/dist/{SummaryBox-3VIRYWQA.js → SummaryBox-DJUDYML7.js} +1 -1
- package/dist/TestMdRunView-BIVXQE54.js +2 -0
- package/dist/{WhoamiView-GMM4V7ZV.js → WhoamiView-DH25ZD4C.js} +1 -1
- package/dist/{changelog-FNJ4P2IF.js → changelog-RCKUVBFL.js} +1 -1
- package/dist/{chunk-LPUQ4HWQ.js → chunk-2WVKOZ6W.js} +1 -1
- package/dist/chunk-2YQ6TW77.js +82 -0
- package/dist/chunk-3FN66LTP.js +3 -0
- package/dist/{chunk-FN6ZRV4C.js → chunk-4IOOBSNB.js} +1 -1
- package/dist/chunk-54TKNWXF.js +5 -0
- package/dist/{chunk-JBOXYLDH.js → chunk-5MTRNUAK.js} +1 -1
- package/dist/{chunk-WEPNJVBA.js → chunk-6E5UYAEB.js} +1 -1
- package/dist/{chunk-JQXARCVE.js → chunk-7AEC572G.js} +1 -1
- package/dist/{chunk-UJDIXFEE.js → chunk-7IBNOVML.js} +1 -1
- package/dist/chunk-7KDNH6JP.js +10 -0
- package/dist/{chunk-DKGNV3VP.js → chunk-7YRNLGUT.js} +1 -1
- package/dist/chunk-AFCEFOIK.js +4 -0
- package/dist/{chunk-2J3VB6DW.js → chunk-AM5WZPPY.js} +1 -1
- package/dist/{chunk-6PBX7QI7.js → chunk-C4LYBQT3.js} +2 -2
- package/dist/chunk-DJL47DYJ.js +8 -0
- package/dist/chunk-DTM4ZMMJ.js +102 -0
- package/dist/chunk-ELBPBHTE.js +26 -0
- package/dist/{chunk-RJFHOZG6.js → chunk-GEAWRRR7.js} +1 -1
- package/dist/{chunk-CY4HAOSP.js → chunk-H6QJ4YU7.js} +1 -1
- package/dist/chunk-HFXQU7UZ.js +2 -0
- package/dist/{chunk-WKJY6TRR.js → chunk-HZ46P2GR.js} +1 -1
- package/dist/chunk-I4B2KY4X.js +3 -0
- package/dist/{chunk-LZUTY7XS.js → chunk-IECUFWIZ.js} +1 -1
- package/dist/{chunk-7NTOV5DV.js → chunk-IU53F4ZV.js} +1 -1
- package/dist/chunk-J75KVNX5.js +18 -0
- package/dist/{chunk-AH36DUIX.js → chunk-LOQV5GME.js} +1 -1
- package/dist/chunk-MUPHP5W6.js +27 -0
- package/dist/chunk-NAYAVVTP.js +6 -0
- package/dist/chunk-NFOBDHZK.js +147 -0
- package/dist/{chunk-CLRWPXDJ.js → chunk-NLIOFVMP.js} +1 -1
- package/dist/chunk-P5XBCJYQ.js +7 -0
- package/dist/chunk-PISZLYS5.js +4 -0
- package/dist/{chunk-IO3PBDKN.js → chunk-PTP3WS3N.js} +1 -1
- package/dist/chunk-Q2I65L2W.js +6 -0
- package/dist/chunk-QCEWUUE6.js +55 -0
- package/dist/chunk-QO6PAA7Q.js +17 -0
- package/dist/{chunk-42WWGBRK.js → chunk-R5RHRG65.js} +1 -1
- package/dist/chunk-T4PKTWZ6.js +17 -0
- package/dist/{chunk-HYOST7EA.js → chunk-THEZSXZM.js} +1 -1
- package/dist/{chunk-VSJAOEBB.js → chunk-TJWU7DOO.js} +1 -1
- package/dist/{chunk-FTMJTGT4.js → chunk-TPG2T5GH.js} +1 -1
- package/dist/{chunk-HPJP7NES.js → chunk-UOGJUJCF.js} +1 -1
- package/dist/{chunk-MUZCEGJD.js → chunk-V2GYBVSM.js} +1 -1
- package/dist/{chunk-KLVCLGHX.js → chunk-XDERMCAU.js} +1 -1
- package/dist/chunk-Y44AETOW.js +2 -0
- package/dist/{chunk-QMAHNXS6.js → chunk-YCNCW4O4.js} +1 -1
- package/dist/{chunk-GBTPZGJB.js → chunk-YSIYPC4R.js} +1 -1
- package/dist/{chunk-JHSSBES2.js → chunk-ZWAZ4QU4.js} +1 -1
- package/dist/credentials-52QRPGET.js +2 -0
- package/dist/evidence-O4AON5FU.js +2 -0
- package/dist/exit-manager-IUHAXFJ6.js +2 -0
- package/dist/{generate-headless-ZRRQT56R.js → generate-headless-WG6ZPINI.js} +2 -2
- package/dist/index.js +75 -39
- package/dist/list-commands-VJAL4J3O.js +2 -0
- package/dist/login-flow-VZ2MITFA.js +2 -0
- package/dist/persist-recorded-session-XKPZX7HW.js +3 -0
- package/dist/pipeline-CADTHPDV.js +2 -0
- package/dist/{recording-banner-P6EKDS2Y.js → recording-banner-2TNKQHP2.js} +1 -1
- package/dist/require-project-folder-SJG5FQY6.js +2 -0
- package/dist/run-test-md-INJKPE2I.js +13 -0
- package/dist/{skill-installer-SU52XOIT.js → skill-installer-M6AREQQW.js} +1 -1
- package/dist/tcg-generate-VKFXR5JT.js +2 -0
- package/dist/testmd-actions-4QLHD74A.js +2 -0
- package/dist/{tms-client-NNYXLXZK.js → tms-client-VD3B3SMU.js} +1 -1
- package/dist/token-refresh-2HKIYD4Y.js +2 -0
- package/dist/{validate-basic-EKSOPOMF.js → validate-basic-FO7C2URG.js} +1 -1
- package/dist/{version-check-4K4JHG7B.js → version-check-PHZX5WS7.js} +1 -1
- package/package.json +8 -6
- package/dist/FolderPicker-M4RFRBYV.js +0 -2
- package/dist/HelpView-ZZYE2TKZ.js +0 -2
- package/dist/SingleShotApp-IOEEYVGJ.js +0 -2
- package/dist/TestMdRunView-MRSDDMSF.js +0 -2
- package/dist/chunk-3UCNDPTN.js +0 -2
- package/dist/chunk-7N5H4KTV.js +0 -5
- package/dist/chunk-AH4AXJML.js +0 -2
- package/dist/chunk-BH6EP2LD.js +0 -85
- package/dist/chunk-DXJ5FL25.js +0 -17
- package/dist/chunk-JO3QZB6D.js +0 -6
- package/dist/chunk-LJDFBQFR.js +0 -17
- package/dist/chunk-LOIRZFV3.js +0 -10
- package/dist/chunk-MDBXYXSC.js +0 -2
- package/dist/chunk-PUU7A26K.js +0 -11
- package/dist/chunk-QW5G7TX3.js +0 -60
- package/dist/chunk-SEU6OXMD.js +0 -6
- package/dist/chunk-UVBE3JJV.js +0 -103
- package/dist/chunk-XA7UFTB7.js +0 -27
- package/dist/chunk-YK63DTUC.js +0 -20
- package/dist/exit-manager-V2NW7A7U.js +0 -2
- package/dist/list-commands-M3JL6XBB.js +0 -2
- package/dist/login-flow-DOAIDKIV.js +0 -2
- package/dist/persist-recorded-session-3I4KMEXA.js +0 -3
- package/dist/pipeline-34CX3UBO.js +0 -2
- package/dist/require-project-folder-SEMMD3EG.js +0 -2
- package/dist/run-test-md-PXG4RFDI.js +0 -14
- package/dist/tcg-generate-5T6S2E7L.js +0 -2
- package/dist/testmd-actions-N7VS4FS6.js +0 -2
- package/dist/token-refresh-LSHPT46T.js +0 -2
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as Po,b as Ji}from"./chunk-3MSXQU2C.js";import{a as ma}from"./chunk-PTP3WS3N.js";import{a as Qs,b as qo,c as bn,d as Zs,e as Sn,f as ea,h as ta,i as ra,j as na,k as oa,l as ia,m as Rt,n as sa,o as aa,p as ca,q as wn,r as la,s as Ho,t as ua,u as da,v as fa}from"./chunk-7AEC572G.js";import{c as Ds,d as Os,n as Js}from"./chunk-ELBPBHTE.js";import{a as pa,b as Go}from"./chunk-LOQV5GME.js";import{a as xn,b as Vs,c as Vo}from"./chunk-THEZSXZM.js";import{c as Ms}from"./chunk-H6QJ4YU7.js";import{a as vn}from"./chunk-NLIOFVMP.js";import{B as wt,E as Ks,a as ss,b as as,d as gs,e as hs,f as xs,g as Is,h as ks,i as As,j as jo,k as Bs,m as Mo,n as Fs,o as Fo,q as Us,r as qs,s as Hs,t as Gs,u as Uo,v as Ws,w as Xs,x as zs}from"./chunk-QCEWUUE6.js";import{b as $s,o as Ns}from"./chunk-Q2I65L2W.js";import{c as Ys}from"./chunk-54TKNWXF.js";import{a as ms}from"./chunk-DTM4ZMMJ.js";import{a as Cs}from"./chunk-Y44AETOW.js";import{L as Ss,O as ws,P as No,Q as Rs,R as ys,U as Ts,W as Es}from"./chunk-DJL47DYJ.js";import{a as Qi,b as Bo,c as Nt,d as gn,e as _s,f as Ps}from"./chunk-7YRNLGUT.js";import{c as hn}from"./chunk-T4PKTWZ6.js";import{a as ur}from"./chunk-YCNCW4O4.js";import{a as ps}from"./chunk-FPFOW6BS.js";import{a as ts,b as rs,c as ns,d as bs,e as Ls,g as js}from"./chunk-AFCEFOIK.js";import{a as Lo}from"./chunk-V2GYBVSM.js";import{c as vs}from"./chunk-PISZLYS5.js";import{c as Oo}from"./chunk-IU53F4ZV.js";import{b as cr}from"./chunk-6E5UYAEB.js";import{b as lr}from"./chunk-XDERMCAU.js";import{a as ls,e as St,f as $r,g as jt,h as dr}from"./chunk-7KDNH6JP.js";import{h as us}from"./chunk-QO6PAA7Q.js";import{a as Lr}from"./chunk-2WVKOZ6W.js";import{a as os}from"./chunk-NLCCBXXV.js";import{a as st,b as ht,c as cs}from"./chunk-VE3SUJMA.js";import{a as fs}from"./chunk-4IOOBSNB.js";import{a as ds}from"./chunk-GEAWRRR7.js";import{a as De}from"./chunk-UOGJUJCF.js";import{a as is}from"./chunk-RZ4F3BHX.js";import{a as pn}from"./chunk-IECUFWIZ.js";import{a as $o}from"./chunk-ZWAZ4QU4.js";import{a as gt,b as Zi}from"./chunk-7IBNOVML.js";import{b as es}from"./chunk-C6S4IEBC.js";import{b as Do}from"./chunk-HZ46P2GR.js";import{a as ar}from"./chunk-YSIYPC4R.js";import{a as it,c as Xe,j as Ao,n as Ki,o as _o,x as l}from"./chunk-HFXQU7UZ.js";import{a as V}from"./chunk-HCBYKLMW.js";import{a as b,b as s,i as Ie,j as Yi,k as sr}from"./chunk-C44QQJR4.js";import{a as xe}from"./chunk-6YGTRKDT.js";import{c as z,e as k}from"./chunk-UR6MHSHU.js";var mr=z((fh,xa)=>{"use strict";var hd="2.0.0",xd=Number.MAX_SAFE_INTEGER||9007199254740991,vd=16,bd=250,Sd=["major","premajor","minor","preminor","patch","prepatch","prerelease"];xa.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:vd,MAX_SAFE_BUILD_LENGTH:bd,MAX_SAFE_INTEGER:xd,RELEASE_TYPES:Sd,SEMVER_SPEC_VERSION:hd,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var Dr=z((mh,va)=>{"use strict";var wd=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};va.exports=wd});var pr=z((yt,ba)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:Wo,MAX_SAFE_BUILD_LENGTH:Rd,MAX_LENGTH:yd}=mr(),Td=Dr();yt=ba.exports={};var Ed=yt.re=[],Cd=yt.safeRe=[],N=yt.src=[],Id=yt.safeSrc=[],j=yt.t={},kd=0,Xo="[a-zA-Z0-9-]",Ad=[["\\s",1],["\\d",yd],[Xo,Rd]],_d=e=>{for(let[t,r]of Ad)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},K=(e,t,r)=>{let n=_d(t),o=kd++;Td(e,o,t),j[e]=o,N[o]=t,Id[o]=n,Ed[o]=new RegExp(t,r?"g":void 0),Cd[o]=new RegExp(n,r?"g":void 0)};K("NUMERICIDENTIFIER","0|[1-9]\\d*");K("NUMERICIDENTIFIERLOOSE","\\d+");K("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${Xo}*`);K("MAINVERSION",`(${N[j.NUMERICIDENTIFIER]})\\.(${N[j.NUMERICIDENTIFIER]})\\.(${N[j.NUMERICIDENTIFIER]})`);K("MAINVERSIONLOOSE",`(${N[j.NUMERICIDENTIFIERLOOSE]})\\.(${N[j.NUMERICIDENTIFIERLOOSE]})\\.(${N[j.NUMERICIDENTIFIERLOOSE]})`);K("PRERELEASEIDENTIFIER",`(?:${N[j.NONNUMERICIDENTIFIER]}|${N[j.NUMERICIDENTIFIER]})`);K("PRERELEASEIDENTIFIERLOOSE",`(?:${N[j.NONNUMERICIDENTIFIER]}|${N[j.NUMERICIDENTIFIERLOOSE]})`);K("PRERELEASE",`(?:-(${N[j.PRERELEASEIDENTIFIER]}(?:\\.${N[j.PRERELEASEIDENTIFIER]})*))`);K("PRERELEASELOOSE",`(?:-?(${N[j.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${N[j.PRERELEASEIDENTIFIERLOOSE]})*))`);K("BUILDIDENTIFIER",`${Xo}+`);K("BUILD",`(?:\\+(${N[j.BUILDIDENTIFIER]}(?:\\.${N[j.BUILDIDENTIFIER]})*))`);K("FULLPLAIN",`v?${N[j.MAINVERSION]}${N[j.PRERELEASE]}?${N[j.BUILD]}?`);K("FULL",`^${N[j.FULLPLAIN]}$`);K("LOOSEPLAIN",`[v=\\s]*${N[j.MAINVERSIONLOOSE]}${N[j.PRERELEASELOOSE]}?${N[j.BUILD]}?`);K("LOOSE",`^${N[j.LOOSEPLAIN]}$`);K("GTLT","((?:<|>)?=?)");K("XRANGEIDENTIFIERLOOSE",`${N[j.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);K("XRANGEIDENTIFIER",`${N[j.NUMERICIDENTIFIER]}|x|X|\\*`);K("XRANGEPLAIN",`[v=\\s]*(${N[j.XRANGEIDENTIFIER]})(?:\\.(${N[j.XRANGEIDENTIFIER]})(?:\\.(${N[j.XRANGEIDENTIFIER]})(?:${N[j.PRERELEASE]})?${N[j.BUILD]}?)?)?`);K("XRANGEPLAINLOOSE",`[v=\\s]*(${N[j.XRANGEIDENTIFIERLOOSE]})(?:\\.(${N[j.XRANGEIDENTIFIERLOOSE]})(?:\\.(${N[j.XRANGEIDENTIFIERLOOSE]})(?:${N[j.PRERELEASELOOSE]})?${N[j.BUILD]}?)?)?`);K("XRANGE",`^${N[j.GTLT]}\\s*${N[j.XRANGEPLAIN]}$`);K("XRANGELOOSE",`^${N[j.GTLT]}\\s*${N[j.XRANGEPLAINLOOSE]}$`);K("COERCEPLAIN",`(^|[^\\d])(\\d{1,${Wo}})(?:\\.(\\d{1,${Wo}}))?(?:\\.(\\d{1,${Wo}}))?`);K("COERCE",`${N[j.COERCEPLAIN]}(?:$|[^\\d])`);K("COERCEFULL",N[j.COERCEPLAIN]+`(?:${N[j.PRERELEASE]})?(?:${N[j.BUILD]})?(?:$|[^\\d])`);K("COERCERTL",N[j.COERCE],!0);K("COERCERTLFULL",N[j.COERCEFULL],!0);K("LONETILDE","(?:~>?)");K("TILDETRIM",`(\\s*)${N[j.LONETILDE]}\\s+`,!0);yt.tildeTrimReplace="$1~";K("TILDE",`^${N[j.LONETILDE]}${N[j.XRANGEPLAIN]}$`);K("TILDELOOSE",`^${N[j.LONETILDE]}${N[j.XRANGEPLAINLOOSE]}$`);K("LONECARET","(?:\\^)");K("CARETTRIM",`(\\s*)${N[j.LONECARET]}\\s+`,!0);yt.caretTrimReplace="$1^";K("CARET",`^${N[j.LONECARET]}${N[j.XRANGEPLAIN]}$`);K("CARETLOOSE",`^${N[j.LONECARET]}${N[j.XRANGEPLAINLOOSE]}$`);K("COMPARATORLOOSE",`^${N[j.GTLT]}\\s*(${N[j.LOOSEPLAIN]})$|^$`);K("COMPARATOR",`^${N[j.GTLT]}\\s*(${N[j.FULLPLAIN]})$|^$`);K("COMPARATORTRIM",`(\\s*)${N[j.GTLT]}\\s*(${N[j.LOOSEPLAIN]}|${N[j.XRANGEPLAIN]})`,!0);yt.comparatorTrimReplace="$1$2$3";K("HYPHENRANGE",`^\\s*(${N[j.XRANGEPLAIN]})\\s+-\\s+(${N[j.XRANGEPLAIN]})\\s*$`);K("HYPHENRANGELOOSE",`^\\s*(${N[j.XRANGEPLAINLOOSE]})\\s+-\\s+(${N[j.XRANGEPLAINLOOSE]})\\s*$`);K("STAR","(<|>)?=?\\s*\\*");K("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");K("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var Rn=z((ph,Sa)=>{"use strict";var Pd=Object.freeze({loose:!0}),Bd=Object.freeze({}),Ld=e=>e?typeof e!="object"?Pd:e:Bd;Sa.exports=Ld});var zo=z((gh,ya)=>{"use strict";var wa=/^[0-9]+$/,Ra=(e,t)=>{if(typeof e=="number"&&typeof t=="number")return e===t?0:e<t?-1:1;let r=wa.test(e),n=wa.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1},$d=(e,t)=>Ra(t,e);ya.exports={compareIdentifiers:Ra,rcompareIdentifiers:$d}});var Oe=z((hh,Ea)=>{"use strict";var yn=Dr(),{MAX_LENGTH:Ta,MAX_SAFE_INTEGER:Tn}=mr(),{safeRe:En,t:Cn}=pr(),Dd=Rn(),{compareIdentifiers:Yo}=zo(),Od=(e,t)=>{let r=t.split(".");if(r.length>e.length)return!1;for(let n=0;n<r.length;n++)if(Yo(e[n],r[n])!==0)return!1;return!0},Ko=class e{constructor(t,r){if(r=Dd(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>Ta)throw new TypeError(`version is longer than ${Ta} characters`);yn("SemVer",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=t.trim().match(r.loose?En[Cn.LOOSE]:En[Cn.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>Tn||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Tn||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Tn||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<Tn)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(yn("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(yn("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 Yo(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(yn("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 Yo(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?En[Cn.PRERELEASELOOSE]:En[Cn.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]),Od(this.prerelease,r)){let a=this.prerelease[r.split(".").length];isNaN(a)&&(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}};Ea.exports=Ko});var Vt=z((xh,Ia)=>{"use strict";var Ca=Oe(),Nd=(e,t,r=!1)=>{if(e instanceof Ca)return e;try{return new Ca(e,t)}catch(n){if(!r)return null;throw n}};Ia.exports=Nd});var Aa=z((vh,ka)=>{"use strict";var jd=Vt(),Vd=(e,t)=>{let r=jd(e,t);return r?r.version:null};ka.exports=Vd});var Pa=z((bh,_a)=>{"use strict";var Md=Vt(),Fd=(e,t)=>{let r=Md(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null};_a.exports=Fd});var $a=z((Sh,La)=>{"use strict";var Ba=Oe(),Ud=(e,t,r,n,o)=>{typeof r=="string"&&(o=n,n=r,r=void 0);try{return new Ba(e instanceof Ba?e.version:e,r).inc(t,n,o).version}catch{return null}};La.exports=Ud});var Na=z((wh,Oa)=>{"use strict";var Da=Vt(),qd=(e,t)=>{let r=Da(e,null,!0),n=Da(t,null,!0),o=r.compare(n);if(o===0)return null;let i=o>0,a=i?r:n,u=i?n:r,d=!!a.prerelease.length;if(!!u.prerelease.length&&!d){if(!u.patch&&!u.minor)return"major";if(u.compareMain(a)===0)return u.minor&&!u.patch?"minor":"patch"}let w=d?"pre":"";return r.major!==n.major?w+"major":r.minor!==n.minor?w+"minor":r.patch!==n.patch?w+"patch":"prerelease"};Oa.exports=qd});var Va=z((Rh,ja)=>{"use strict";var Hd=Oe(),Gd=(e,t)=>new Hd(e,t).major;ja.exports=Gd});var Fa=z((yh,Ma)=>{"use strict";var Wd=Oe(),Xd=(e,t)=>new Wd(e,t).minor;Ma.exports=Xd});var qa=z((Th,Ua)=>{"use strict";var zd=Oe(),Yd=(e,t)=>new zd(e,t).patch;Ua.exports=Yd});var Ga=z((Eh,Ha)=>{"use strict";var Kd=Vt(),Jd=(e,t)=>{let r=Kd(e,t);return r&&r.prerelease.length?r.prerelease:null};Ha.exports=Jd});var at=z((Ch,Xa)=>{"use strict";var Wa=Oe(),Qd=(e,t,r)=>new Wa(e,r).compare(new Wa(t,r));Xa.exports=Qd});var Ya=z((Ih,za)=>{"use strict";var Zd=at(),ef=(e,t,r)=>Zd(t,e,r);za.exports=ef});var Ja=z((kh,Ka)=>{"use strict";var tf=at(),rf=(e,t)=>tf(e,t,!0);Ka.exports=rf});var In=z((Ah,Za)=>{"use strict";var Qa=Oe(),nf=(e,t,r)=>{let n=new Qa(e,r),o=new Qa(t,r);return n.compare(o)||n.compareBuild(o)};Za.exports=nf});var tc=z((_h,ec)=>{"use strict";var of=In(),sf=(e,t)=>e.sort((r,n)=>of(r,n,t));ec.exports=sf});var nc=z((Ph,rc)=>{"use strict";var af=In(),cf=(e,t)=>e.sort((r,n)=>af(n,r,t));rc.exports=cf});var Or=z((Bh,oc)=>{"use strict";var lf=at(),uf=(e,t,r)=>lf(e,t,r)>0;oc.exports=uf});var kn=z((Lh,ic)=>{"use strict";var df=at(),ff=(e,t,r)=>df(e,t,r)<0;ic.exports=ff});var Jo=z(($h,sc)=>{"use strict";var mf=at(),pf=(e,t,r)=>mf(e,t,r)===0;sc.exports=pf});var Qo=z((Dh,ac)=>{"use strict";var gf=at(),hf=(e,t,r)=>gf(e,t,r)!==0;ac.exports=hf});var An=z((Oh,cc)=>{"use strict";var xf=at(),vf=(e,t,r)=>xf(e,t,r)>=0;cc.exports=vf});var _n=z((Nh,lc)=>{"use strict";var bf=at(),Sf=(e,t,r)=>bf(e,t,r)<=0;lc.exports=Sf});var Zo=z((jh,uc)=>{"use strict";var wf=Jo(),Rf=Qo(),yf=Or(),Tf=An(),Ef=kn(),Cf=_n(),If=(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 wf(e,r,n);case"!=":return Rf(e,r,n);case">":return yf(e,r,n);case">=":return Tf(e,r,n);case"<":return Ef(e,r,n);case"<=":return Cf(e,r,n);default:throw new TypeError(`Invalid operator: ${t}`)}};uc.exports=If});var fc=z((Vh,dc)=>{"use strict";var kf=Oe(),Af=Vt(),{safeRe:Pn,t:Bn}=pr(),_f=(e,t)=>{if(e instanceof kf)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?Pn[Bn.COERCEFULL]:Pn[Bn.COERCE]);else{let d=t.includePrerelease?Pn[Bn.COERCERTLFULL]:Pn[Bn.COERCERTL],v;for(;(v=d.exec(e))&&(!r||r.index+r[0].length!==e.length);)(!r||v.index+v[0].length!==r.index+r[0].length)&&(r=v),d.lastIndex=v.index+v[1].length+v[2].length;d.lastIndex=-1}if(r===null)return null;let n=r[2],o=r[3]||"0",i=r[4]||"0",a=t.includePrerelease&&r[5]?`-${r[5]}`:"",u=t.includePrerelease&&r[6]?`+${r[6]}`:"";return Af(`${n}.${o}.${i}${a}${u}`,t)};dc.exports=_f});var pc=z((Mh,mc)=>{"use strict";var Pf=Vt(),Bf=mr(),Lf=Oe(),$f=(e,t,r)=>{if(!Bf.RELEASE_TYPES.includes(t))return null;let n=Df(e,r);return n&&Of(n,t)},Df=(e,t)=>{let r=e instanceof Lf?e.version:e;return Pf(r,t)},Of=(e,t)=>{if(Nf(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()},Nf=e=>e.startsWith("pre");mc.exports=$f});var hc=z((Fh,gc)=>{"use strict";var ei=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}};gc.exports=ei});var ct=z((Uh,Sc)=>{"use strict";var jf=/\s+/g,ti=class e{constructor(t,r){if(r=Mf(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof ri)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(jf," "),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=>!vc(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&&Yf(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(zf,"");let n=((this.options.includePrerelease&&Wf)|(this.options.loose&&Xf))+":"+t,o=xc.get(n);if(o)return o;let i=this.options.loose,a=i?ze[Ne.HYPHENRANGELOOSE]:ze[Ne.HYPHENRANGE];t=t.replace(a,sm(this.options.includePrerelease)),he("hyphen replace",t),t=t.replace(ze[Ne.COMPARATORTRIM],qf),he("comparator trim",t),t=t.replace(ze[Ne.TILDETRIM],Hf),he("tilde trim",t),t=t.replace(ze[Ne.CARETTRIM],Gf),he("caret trim",t);let u=t.split(" ").map(g=>Kf(g,this.options)).join(" ").split(/\s+/).map(g=>im(g,this.options));i&&(u=u.filter(g=>(he("loose invalid filter",g,this.options),!!g.match(ze[Ne.COMPARATORLOOSE])))),he("range list",u);let d=new Map,v=u.map(g=>new ri(g,this.options));for(let g of v){if(vc(g))return[g];d.set(g.value,g)}d.size>1&&d.has("")&&d.delete("");let w=[...d.values()];return xc.set(n,w),w}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(n=>bc(n,r)&&t.set.some(o=>bc(o,r)&&n.every(i=>o.every(a=>i.intersects(a,r)))))}test(t){if(!t)return!1;if(typeof t=="string")try{t=new Ff(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(am(this.set[r],t,this.options))return!0;return!1}};Sc.exports=ti;var Vf=hc(),xc=new Vf,Mf=Rn(),ri=Nr(),he=Dr(),Ff=Oe(),{safeRe:ze,src:Uf,t:Ne,comparatorTrimReplace:qf,tildeTrimReplace:Hf,caretTrimReplace:Gf}=pr(),{FLAG_INCLUDE_PRERELEASE:Wf,FLAG_LOOSE:Xf}=mr(),zf=new RegExp(Uf[Ne.BUILD],"g"),vc=e=>e.value==="<0.0.0-0",Yf=e=>e.value==="",bc=(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},Kf=(e,t)=>(e=e.replace(ze[Ne.BUILD],""),he("comp",e,t),e=em(e,t),he("caret",e),e=Qf(e,t),he("tildes",e),e=rm(e,t),he("xrange",e),e=om(e,t),he("stars",e),e),Ee=e=>!e||e.toLowerCase()==="x"||e==="*",Jf=(e,t,r)=>Ee(e)&&!Ee(t)||Ee(t)&&r&&!Ee(r),Qf=(e,t)=>e.trim().split(/\s+/).map(r=>Zf(r,t)).join(" "),Zf=(e,t)=>{let r=t.loose?ze[Ne.TILDELOOSE]:ze[Ne.TILDE];return e.replace(r,(n,o,i,a,u)=>{he("tilde",e,n,o,i,a,u);let d;return Ee(o)?d="":Ee(i)?d=`>=${o}.0.0 <${+o+1}.0.0-0`:Ee(a)?d=`>=${o}.${i}.0 <${o}.${+i+1}.0-0`:u?(he("replaceTilde pr",u),d=`>=${o}.${i}.${a}-${u} <${o}.${+i+1}.0-0`):d=`>=${o}.${i}.${a} <${o}.${+i+1}.0-0`,he("tilde return",d),d})},em=(e,t)=>e.trim().split(/\s+/).map(r=>tm(r,t)).join(" "),tm=(e,t)=>{he("caret",e,t);let r=t.loose?ze[Ne.CARETLOOSE]:ze[Ne.CARET],n=t.includePrerelease?"-0":"";return e.replace(r,(o,i,a,u,d)=>{he("caret",e,o,i,a,u,d);let v;return Ee(i)?v="":Ee(a)?v=`>=${i}.0.0${n} <${+i+1}.0.0-0`:Ee(u)?i==="0"?v=`>=${i}.${a}.0${n} <${i}.${+a+1}.0-0`:v=`>=${i}.${a}.0${n} <${+i+1}.0.0-0`:d?(he("replaceCaret pr",d),i==="0"?a==="0"?v=`>=${i}.${a}.${u}-${d} <${i}.${a}.${+u+1}-0`:v=`>=${i}.${a}.${u}-${d} <${i}.${+a+1}.0-0`:v=`>=${i}.${a}.${u}-${d} <${+i+1}.0.0-0`):(he("no pr"),i==="0"?a==="0"?v=`>=${i}.${a}.${u} <${i}.${a}.${+u+1}-0`:v=`>=${i}.${a}.${u} <${i}.${+a+1}.0-0`:v=`>=${i}.${a}.${u} <${+i+1}.0.0-0`),he("caret return",v),v})},rm=(e,t)=>(he("replaceXRanges",e,t),e.split(/\s+/).map(r=>nm(r,t)).join(" ")),nm=(e,t)=>{e=e.trim();let r=t.loose?ze[Ne.XRANGELOOSE]:ze[Ne.XRANGE];return e.replace(r,(n,o,i,a,u,d)=>{if(he("xRange",e,n,o,i,a,u,d),Jf(i,a,u))return e;let v=Ee(i),w=v||Ee(a),g=w||Ee(u),T=g;return o==="="&&T&&(o=""),d=t.includePrerelease?"-0":"",v?o===">"||o==="<"?n="<0.0.0-0":n="*":o&&T?(w&&(a=0),u=0,o===">"?(o=">=",w?(i=+i+1,a=0,u=0):(a=+a+1,u=0)):o==="<="&&(o="<",w?i=+i+1:a=+a+1),o==="<"&&(d="-0"),n=`${o+i}.${a}.${u}${d}`):w?n=`>=${i}.0.0${d} <${+i+1}.0.0-0`:g&&(n=`>=${i}.${a}.0${d} <${i}.${+a+1}.0-0`),he("xRange return",n),n})},om=(e,t)=>(he("replaceStars",e,t),e.trim().replace(ze[Ne.STAR],"")),im=(e,t)=>(he("replaceGTE0",e,t),e.trim().replace(ze[t.includePrerelease?Ne.GTE0PRE:Ne.GTE0],"")),sm=e=>(t,r,n,o,i,a,u,d,v,w,g,T)=>(Ee(n)?r="":Ee(o)?r=`>=${n}.0.0${e?"-0":""}`:Ee(i)?r=`>=${n}.${o}.0${e?"-0":""}`:a?r=`>=${r}`:r=`>=${r}${e?"-0":""}`,Ee(v)?d="":Ee(w)?d=`<${+v+1}.0.0-0`:Ee(g)?d=`<${v}.${+w+1}.0-0`:T?d=`<=${v}.${w}.${g}-${T}`:e?d=`<${v}.${w}.${+g+1}-0`:d=`<=${d}`,`${r} ${d}`.trim()),am=(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(he(e[n].semver),e[n].semver!==ri.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 Nr=z((qh,Cc)=>{"use strict";var jr=Symbol("SemVer ANY"),ii=class e{static get ANY(){return jr}constructor(t,r){if(r=wc(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),oi("comparator",t,r),this.options=r,this.loose=!!r.loose,this.parse(t),this.semver===jr?this.value="":this.value=this.operator+this.semver.version,oi("comp",this)}parse(t){let r=this.options.loose?Rc[yc.COMPARATORLOOSE]:Rc[yc.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 Tc(n[2],this.options.loose):this.semver=jr}toString(){return this.value}test(t){if(oi("Comparator.test",t,this.options.loose),this.semver===jr||t===jr)return!0;if(typeof t=="string")try{t=new Tc(t,this.options)}catch{return!1}return ni(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 Ec(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new Ec(this.value,r).test(t.semver):(r=wc(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("=")||ni(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||ni(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};Cc.exports=ii;var wc=Rn(),{safeRe:Rc,t:yc}=pr(),ni=Zo(),oi=Dr(),Tc=Oe(),Ec=ct()});var Vr=z((Hh,Ic)=>{"use strict";var cm=ct(),lm=(e,t,r)=>{try{t=new cm(t,r)}catch{return!1}return t.test(e)};Ic.exports=lm});var Ac=z((Gh,kc)=>{"use strict";var um=ct(),dm=(e,t)=>new um(e,t).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));kc.exports=dm});var Pc=z((Wh,_c)=>{"use strict";var fm=Oe(),mm=ct(),pm=(e,t,r)=>{let n=null,o=null,i=null;try{i=new mm(t,r)}catch{return null}return e.forEach(a=>{i.test(a)&&(!n||o.compare(a)===-1)&&(n=a,o=new fm(n,r))}),n};_c.exports=pm});var Lc=z((Xh,Bc)=>{"use strict";var gm=Oe(),hm=ct(),xm=(e,t,r)=>{let n=null,o=null,i=null;try{i=new hm(t,r)}catch{return null}return e.forEach(a=>{i.test(a)&&(!n||o.compare(a)===1)&&(n=a,o=new gm(n,r))}),n};Bc.exports=xm});var Oc=z((zh,Dc)=>{"use strict";var si=Oe(),vm=ct(),$c=Or(),bm=(e,t)=>{e=new vm(e,t);let r=new si("0.0.0");if(e.test(r)||(r=new si("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(a=>{let u=new si(a.semver.version);switch(a.operator){case">":u.prerelease.length===0?u.patch++:u.prerelease.push(0),u.raw=u.format();case"":case">=":(!i||$c(u,i))&&(i=u);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${a.operator}`)}}),i&&(!r||$c(r,i))&&(r=i)}return r&&e.test(r)?r:null};Dc.exports=bm});var jc=z((Yh,Nc)=>{"use strict";var Sm=ct(),wm=(e,t)=>{try{return new Sm(e,t).range||"*"}catch{return null}};Nc.exports=wm});var Ln=z((Kh,Uc)=>{"use strict";var Rm=Oe(),Fc=Nr(),{ANY:ym}=Fc,Tm=ct(),Em=Vr(),Vc=Or(),Mc=kn(),Cm=_n(),Im=An(),km=(e,t,r,n)=>{e=new Rm(e,n),t=new Tm(t,n);let o,i,a,u,d;switch(r){case">":o=Vc,i=Cm,a=Mc,u=">",d=">=";break;case"<":o=Mc,i=Im,a=Vc,u="<",d="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Em(e,t,n))return!1;for(let v=0;v<t.set.length;++v){let w=t.set[v],g=null,T=null;if(w.forEach(c=>{c.semver===ym&&(c=new Fc(">=0.0.0")),g=g||c,T=T||c,o(c.semver,g.semver,n)?g=c:a(c.semver,T.semver,n)&&(T=c)}),g.operator===u||g.operator===d||(!T.operator||T.operator===u)&&i(e,T.semver))return!1;if(T.operator===d&&a(e,T.semver))return!1}return!0};Uc.exports=km});var Hc=z((Jh,qc)=>{"use strict";var Am=Ln(),_m=(e,t,r)=>Am(e,t,">",r);qc.exports=_m});var Wc=z((Qh,Gc)=>{"use strict";var Pm=Ln(),Bm=(e,t,r)=>Pm(e,t,"<",r);Gc.exports=Bm});var Yc=z((Zh,zc)=>{"use strict";var Xc=ct(),Lm=(e,t,r)=>(e=new Xc(e,r),t=new Xc(t,r),e.intersects(t,r));zc.exports=Lm});var Jc=z((ex,Kc)=>{"use strict";var $m=Vr(),Dm=at();Kc.exports=(e,t,r)=>{let n=[],o=null,i=null,a=e.sort((w,g)=>Dm(w,g,r));for(let w of a)$m(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,g]of n)w===g?u.push(w):!g&&w===a[0]?u.push("*"):g?w===a[0]?u.push(`<=${g}`):u.push(`${w} - ${g}`):u.push(`>=${w}`);let d=u.join(" || "),v=typeof t.raw=="string"?t.raw:String(t);return d.length<v.length?d:t}});var nl=z((tx,rl)=>{"use strict";var Qc=ct(),li=Nr(),{ANY:ai}=li,ci=Vr(),ui=at(),Om=(e,t,r={})=>{if(e===t)return!0;e=new Qc(e,r),t=new Qc(t,r);let n=!1;e:for(let o of e.set){for(let i of t.set){let a=jm(o,i,r);if(n=n||a!==null,a)continue e}if(n)return!1}return!0},Nm=[new li(">=0.0.0-0")],Zc=[new li(">=0.0.0")],jm=(e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===ai){if(t.length===1&&t[0].semver===ai)return!0;r.includePrerelease?e=Nm:e=Zc}if(t.length===1&&t[0].semver===ai){if(r.includePrerelease)return!0;t=Zc}let n=new Set,o,i;for(let c of e)c.operator===">"||c.operator===">="?o=el(o,c,r):c.operator==="<"||c.operator==="<="?i=tl(i,c,r):n.add(c.semver);if(n.size>1)return null;let a;if(o&&i){if(a=ui(o.semver,i.semver,r),a>0)return null;if(a===0&&(o.operator!==">="||i.operator!=="<="))return null}for(let c of n){if(o&&!ci(c,String(o),r)||i&&!ci(c,String(i),r))return null;for(let p of t)if(!ci(c,String(p),r))return!1;return!0}let u,d,v,w,g=i&&!r.includePrerelease&&i.semver.prerelease.length?i.semver:!1,T=o&&!r.includePrerelease&&o.semver.prerelease.length?o.semver:!1;g&&g.prerelease.length===1&&i.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let c of t){if(w=w||c.operator===">"||c.operator===">=",v=v||c.operator==="<"||c.operator==="<=",o){if(T&&c.semver.prerelease&&c.semver.prerelease.length&&c.semver.major===T.major&&c.semver.minor===T.minor&&c.semver.patch===T.patch&&(T=!1),c.operator===">"||c.operator===">="){if(u=el(o,c,r),u===c&&u!==o)return!1}else if(o.operator===">="&&!c.test(o.semver))return!1}if(i){if(g&&c.semver.prerelease&&c.semver.prerelease.length&&c.semver.major===g.major&&c.semver.minor===g.minor&&c.semver.patch===g.patch&&(g=!1),c.operator==="<"||c.operator==="<="){if(d=tl(i,c,r),d===c&&d!==i)return!1}else if(i.operator==="<="&&!c.test(i.semver))return!1}if(!c.operator&&(i||o)&&a!==0)return!1}return!(o&&v&&!i&&a!==0||i&&w&&!o&&a!==0||T||g)},el=(e,t,r)=>{if(!e)return t;let n=ui(e.semver,t.semver,r);return n>0?e:n<0||t.operator===">"&&e.operator===">="?t:e},tl=(e,t,r)=>{if(!e)return t;let n=ui(e.semver,t.semver,r);return n<0?e:n>0||t.operator==="<"&&e.operator==="<="?t:e};rl.exports=Om});var fi=z((rx,sl)=>{"use strict";var di=pr(),ol=mr(),Vm=Oe(),il=zo(),Mm=Vt(),Fm=Aa(),Um=Pa(),qm=$a(),Hm=Na(),Gm=Va(),Wm=Fa(),Xm=qa(),zm=Ga(),Ym=at(),Km=Ya(),Jm=Ja(),Qm=In(),Zm=tc(),ep=nc(),tp=Or(),rp=kn(),np=Jo(),op=Qo(),ip=An(),sp=_n(),ap=Zo(),cp=fc(),lp=pc(),up=Nr(),dp=ct(),fp=Vr(),mp=Ac(),pp=Pc(),gp=Lc(),hp=Oc(),xp=jc(),vp=Ln(),bp=Hc(),Sp=Wc(),wp=Yc(),Rp=Jc(),yp=nl();sl.exports={parse:Mm,valid:Fm,clean:Um,inc:qm,diff:Hm,major:Gm,minor:Wm,patch:Xm,prerelease:zm,compare:Ym,rcompare:Km,compareLoose:Jm,compareBuild:Qm,sort:Zm,rsort:ep,gt:tp,lt:rp,eq:np,neq:op,gte:ip,lte:sp,cmp:ap,coerce:cp,truncate:lp,Comparator:up,Range:dp,satisfies:fp,toComparators:mp,maxSatisfying:pp,minSatisfying:gp,minVersion:hp,validRange:xp,outside:vp,gtr:bp,ltr:Sp,intersects:wp,simplifyRange:Rp,subset:yp,SemVer:Vm,re:di.re,src:di.src,tokens:di.t,SEMVER_SPEC_VERSION:ol.SEMVER_SPEC_VERSION,RELEASE_TYPES:ol.RELEASE_TYPES,compareIdentifiers:il.compareIdentifiers,rcompareIdentifiers:il.rcompareIdentifiers}});var y=k(xe(),1);var ga=k(xe(),1);var fr=k(V(),1);function ha({path:e}){return e.length===0?null:(0,fr.jsx)(b,{children:e.map((t,r)=>(0,fr.jsxs)(ga.default.Fragment,{children:[r>0&&(0,fr.jsx)(s,{color:l.muted,children:" \u203A "}),(0,fr.jsx)(s,{color:l.dim,children:t})]},r))})}var al=k(fi(),1),Tp=1,Ep=new Set(["discover","workflow","nudge","recovery"]),Cp=new Set(["run","generate","both"]),Ip=new Set(["banner","footer"]),$n=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),gr=e=>typeof e=="string"&&e.length>0?e:void 0,hr=e=>typeof e=="number"&&Number.isFinite(e)?e:void 0;function kp(e){if(!$n(e))return{};let t={};return gr(e.run)&&(t.run=e.run),gr(e.generate)&&(t.generate=e.generate),gr(e.default)&&(t.default=e.default),t}function cl(e,t){return e.text[t]??e.text.default??(e.target!=="both"?e.text[e.target]:void 0)}function Ap(e,t){return t==="both"?!!e.default||!!e.run&&!!e.generate:t==="run"?!!e.run||!!e.default:!!e.generate||!!e.default}function _p(e,t){if(!$n(e))return;let r=hr(e.maxShows),n=gr(e.until),o=hr(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 Pp(e){if(!$n(e))return null;let t=gr(e.id);if(!t)return null;let r=Cp.has(e.target)?e.target:void 0;if(e.target!==void 0&&r===void 0)return null;let n=r??"both",o=kp(e.text);if(!Ap(o,n))return null;let i=Ep.has(e.category)?e.category:"nudge",a=Ip.has(e.surface)?e.surface:void 0,u=hr(e.weight),d=u===void 0?1:Math.max(0,u),v=hr(e.cooldownSessions),w=v===void 0?0:Math.max(0,Math.floor(v)),g=gr(e.minVersion)&&al.default.coerce(e.minVersion)?e.minVersion:void 0,T=Array.isArray(e.relevance)?e.relevance.filter(D=>typeof D=="string"):[],c=hr(e.retireAfterShows),p=c!==void 0&&c>=1?Math.floor(c):void 0,$=_p(e.boost,d);return{id:t,category:i,surface:a,target:n,text:o,weight:d,cooldownSessions:w,minVersion:g,relevance:T,retireAfterShows:p,boost:$}}function Dn(e){if(!$n(e)||!Array.isArray(e.hints)||typeof e.enabled!="boolean")return{catalog:null,dropped:0};let t=hr(e.schemaVersion)??0;if(Math.floor(t)>Tp)return{catalog:null,dropped:0};let r=0,n=new Set,o=[];for(let i of e.hints){let a=Pp(i);if(!a){r++;continue}if(n.has(a.id)){r++;continue}n.add(a.id),o.push(a)}return o.length===0?{catalog:null,dropped:r}:{catalog:{schemaVersion:t,enabled:e.enabled,hints:o},dropped:r}}var dl=k(V(),1),ll="tip: ";function ul({hint:e,mode:t,termWidth:r}){if(e.target!=="both"&&e.target!==t)return null;let n=cl(e,t);if(!n)return null;let o=Math.max(8,r-ll.length-2),i=n.length>o?n.slice(0,o-1)+"\u2026":n;return(0,dl.jsx)(s,{color:l.dim,children:ll+i})}var J=k(V(),1);function fl({profile:e,environment:t,tokenValid:r,runCount:n,sessionId:o,viewMode:i,breadcrumb:a,chatMode:u,tcgRequestId:d,tcgStreamStatus:v,footerHint:w}){let{stdout:g}=sr(),T=g?.columns??80,c=u??"run",p=t==="stage",$=t==="prod",D=c==="generate"?l.generateAccent:l.orange,M=v==="completed"?l.green:v==="failed"?l.red:l.generateAccent;return(0,J.jsxs)(b,{flexDirection:"column",children:[(0,J.jsx)(s,{color:l.muted,children:"\u2500".repeat(T)}),a&&a.length>0&&(0,J.jsx)(b,{paddingX:1,children:(0,J.jsx)(ha,{path:a})}),(0,J.jsxs)(b,{paddingX:1,gap:1,children:[(0,J.jsx)(s,{color:l.dim,children:"Mode:"}),(0,J.jsx)(s,{color:D,bold:!0,children:c==="generate"?"Generate":"Run"}),(0,J.jsx)(s,{color:l.muted,children:"|"}),c==="generate"?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(s,{color:l.dim,children:"req"}),(0,J.jsx)(s,{color:l.dim,children:d??"\u2014"}),v&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(s,{color:l.muted,children:"\xB7"}),(0,J.jsx)(s,{color:M,children:v})]})]}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(s,{color:l.dim,children:"Session:"}),(0,J.jsx)(s,{color:l.dim,children:o})]}),(0,J.jsx)(s,{color:l.muted,children:"|"}),(0,J.jsx)(s,{color:r?l.green:l.red,children:"\u25CF"}),(0,J.jsx)(s,{color:l.dim,children:r?"authenticated":"not logged in"}),!$&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(s,{color:l.muted,children:"|"}),p?(0,J.jsx)(s,{color:l.orange,bold:!0,children:"\u26A0 stage"}):(0,J.jsx)(s,{color:l.green,children:t})]})]}),(0,J.jsxs)(b,{paddingX:1,gap:1,children:[(0,J.jsx)(s,{color:l.dim,children:e??"no profile"}),c==="run"&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(s,{color:l.muted,children:"|"}),(0,J.jsxs)(s,{color:l.dim,children:["runs: ",n]})]}),(0,J.jsx)(s,{color:l.muted,children:"|"}),(0,J.jsx)(s,{dimColor:!0,children:Ji()})]}),(0,J.jsx)(b,{paddingX:1,children:(0,J.jsx)(s,{dimColor:!0,children:i==="chat"?"ctrl+c cancel/exit":"\u2191\u2193 navigate \u21B5 select esc back"})}),w&&(0,J.jsx)(b,{paddingX:1,children:(0,J.jsx)(ul,{hint:w,mode:c,termWidth:T})})]})}var Qt=k(xe(),1);var Mr=[[[" "],[" "],[" "],[" "],["\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 te=k(V(),1),On="#af87d7",mi="#875faf",ml="#5b3a7a",Bp="#ff9500",Lp="#ea580c";var pi="#666666",$p="#555555",Jt=[[On,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[On,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[On,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[On,"\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[mi,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[mi,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[mi,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588"]],gi=Jt.map(([,e])=>[...e]);function pl({visibleRows:e=Jt.length}){let t=Math.min(e,Jt.length);return(0,te.jsxs)(b,{flexDirection:"column",children:[Jt.slice(0,t).map(([r,n],o)=>{let i=gi[o];return(0,te.jsx)(s,{children:i.map((a,u)=>{if(a==="\u2588")return(0,te.jsx)(s,{color:r,children:"\u2588"},u);let d=u>0&&i[u-1]==="\u2588",v=o>0&&u>0&&gi[o-1][u-1]==="\u2588";return d||v?(0,te.jsx)(s,{color:ml,children:"\u2592"},u):(0,te.jsx)(s,{children:" "},u)})},o)}),t>=Jt.length&&(0,te.jsxs)(s,{children:[" ",gi[Jt.length-1].map((r,n)=>r==="\u2588"?(0,te.jsx)(s,{color:ml,children:"\u2580"},n):(0,te.jsx)(s,{children:" "},n))]})]})}function Dp({visibleRows:e=Mr.length}){let t=Math.min(e,Mr.length);return(0,te.jsx)(b,{flexDirection:"column",children:Mr.slice(0,t).map((r,n)=>(0,te.jsx)(s,{children:r.map((o,i)=>{let a=o[0],u=o[1],d=o[2];return u?(0,te.jsx)(s,{color:u,backgroundColor:d,children:a},i):(0,te.jsx)(s,{children:a},i)})},n))})}function Nn({size:e="compact",helmetVisibleRows:t=Mr.length,textVisibleRows:r=Jt.length,showMeta:n=!1,user:o=null,authenticated:i=!1,version:a=""}){return e==="compact"?(0,te.jsx)(pl,{}):(0,te.jsxs)(b,{flexDirection:"column",paddingX:1,paddingY:1,children:[(0,te.jsx)(s,{color:Bp,italic:!0,children:" Welcome to"}),(0,te.jsx)(s,{children:" "}),(0,te.jsxs)(b,{gap:2,children:[(0,te.jsx)(Dp,{visibleRows:t}),(0,te.jsxs)(b,{flexDirection:"column",children:[(0,te.jsx)(pl,{visibleRows:r}),(0,te.jsx)(b,{justifyContent:"flex-end",width:73,children:(0,te.jsx)(s,{color:Lp,italic:!0,children:"Command-line interface"})})]})]}),n&&(0,te.jsxs)(te.Fragment,{children:[(0,te.jsx)(s,{children:" "}),(0,te.jsxs)(s,{children:[(0,te.jsx)(s,{color:pi,children:" Browser automation powered by AI. "}),(0,te.jsx)(s,{color:$p,children:`v${a}`})]}),(0,te.jsx)(s,{children:" "}),(0,te.jsx)(s,{children:(0,te.jsx)(s,{color:pi,children:" KaneCLI can navigate websites, fill forms, test web UI, and extract"})}),(0,te.jsx)(s,{children:(0,te.jsx)(s,{color:pi,children:" data \u2014 right from your terminal."})}),(0,te.jsx)(s,{children:" "})]})]})}var vi=k(V(),1),hi=8,xi=7;function gl({onComplete:e}){let[t,r]=(0,Qt.useState)(0),[n,o]=(0,Qt.useState)(0),[i,a]=(0,Qt.useState)(!1),[u]=(0,Qt.useState)(()=>{let d=new pn,v=d.getActiveProfile(),w=d.getDefaultEnv(),g=v?d.loadCredentials(v,w):null,T=v?d.loadBasicAuth(v,w):null;return{authenticated:!!(g||T),user:T?.username??v??null}});return Lo(()=>{r(d=>Math.min(hi,d+1))},t<hi?60:null),Lo(()=>{o(d=>Math.min(xi,d+1))},n<xi?80:null),(0,Qt.useEffect)(()=>{t>=hi&&n>=xi&&!i&&(a(!0),e?.())},[t,n,i,e]),(0,vi.jsx)(b,{flexDirection:"column",children:(0,vi.jsx)(Nn,{size:"full",helmetVisibleRows:t,textVisibleRows:n,showMeta:i,user:u.user,authenticated:u.authenticated,version:it})})}var At=k(V(),1);function hl({entry:e}){return e.type==="input"?(0,At.jsxs)(b,{children:[(0,At.jsx)(s,{color:l.orange,children:"\u276F "}),(0,At.jsx)(s,{children:e.text})]}):e.type==="error"?(0,At.jsx)(b,{marginLeft:2,children:(0,At.jsx)(s,{color:l.red,children:e.text})}):(0,At.jsx)(b,{marginLeft:2,children:(0,At.jsx)(s,{color:e.type==="info"?l.dim:void 0,children:e.text})})}var bi=k(V(),1);function xl({objective:e}){let{stdout:t}=sr(),r=Math.max(24,(t?.columns??80)-4);return(0,bi.jsx)(gt,{title:"run",width:r,children:(0,bi.jsx)(Zi,{label:"objective",value:e})})}var Tt=k(xe(),1);var Ye=k(V(),1);function Op(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 a=e.sections[i];i>0&&r.push({type:"divider",text:"\u2500".repeat(o)}),a.label&&r.push({type:"header",text:a.label});let u=a.entries.length>0?Math.max(...a.entries.map(d=>d.key.length)):0;for(let d of a.entries){let v="\xB7".repeat(Math.max(2,u-d.key.length+3)),w=`${d.key} ${v} ${d.value}`;r.push({type:"entry",text:w,color:d.color})}}return r.push({type:"footer",text:"esc back"}),r}function vl({data:e,width:t=60}){let r=Op(e,t);return(0,Ye.jsx)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:r.map((n,o)=>{if(n.type==="title")return(0,Ye.jsx)(s,{color:l.orange,bold:!0,children:n.text},o);if(n.type==="header")return(0,Ye.jsx)(b,{marginTop:1,children:(0,Ye.jsx)(s,{color:l.dim,children:n.text})},o);if(n.type==="divider")return(0,Ye.jsx)(b,{marginTop:1,marginBottom:0,children:(0,Ye.jsx)(s,{color:l.muted,children:n.text})},o);if(n.type==="footer")return(0,Ye.jsx)(b,{marginTop:1,children:(0,Ye.jsx)(s,{color:l.dim,children:n.text})},o);let i=n.text.match(/^(.+?) (·+) (.+)$/);return i?(0,Ye.jsxs)(s,{children:[(0,Ye.jsxs)(s,{color:l.secondary,children:[i[1]," "]}),(0,Ye.jsxs)(s,{color:l.muted,children:[i[2]," "]}),(0,Ye.jsx)(s,{color:n.color,children:i[3]})]},o):(0,Ye.jsx)(s,{color:n.color,children:n.text},o)})})}var je=k(V(),1);function Si(e,t){let r=[];function n(o,i){for(let a of o)r.push({item:a,depth:i}),a.type==="submenu"&&a.children&&t.length>i&&t[i]===a.id&&n(a.children,i+1)}return n(e,0),r}function wi({items:e,onRunSelected:t,initialExpandedPath:r,onDismiss:n,renderLoginWizard:o,renderProfilesView:i,renderChromeProfilePicker:a,renderProjectPicker:u,renderFolderPicker:d,renderWindowSizePicker:v,onActiveViewChange:w}){let[g,T]=(0,Tt.useState)(()=>{let O=r??[],H=Si(e,O),A=0;if(O.length>0){let F=H.findIndex(ee=>ee.item.id===O[0]);F>=0&&F+1<H.length&&(A=F+1)}return{expandedPath:O,selectedIndex:A,inputValue:"",isEditing:!1,isSelecting:!1,feedback:null,activeView:null,infoData:null}}),c=Si(e,g.expandedPath),p=c[g.selectedIndex]?.item,$=(0,Tt.useRef)(null),D=(0,Tt.useCallback)(O=>{T(H=>({...H,feedback:O})),$.current&&clearTimeout($.current),$.current=setTimeout(()=>{T(H=>({...H,feedback:null})),$.current=null},4e3)},[]);(0,Tt.useEffect)(()=>()=>{$.current&&clearTimeout($.current)},[]),(0,Tt.useEffect)(()=>{w?.(g.activeView)},[g.activeView,w]);let M=(0,Tt.useCallback)(()=>{T(O=>({...O,activeView:null,infoData:null}))},[]);return Ie((O,H)=>{if(g.activeView==="infoView"){H.escape&&M();return}if(!(g.activeView==="loginWizard"||g.activeView==="profilesView"||g.activeView==="chromeProfilePicker"||g.activeView==="projectPicker"||g.activeView==="folderPicker"||g.activeView==="windowSizePicker")){if(g.isEditing){if(H.escape){T(A=>({...A,isEditing:!1,inputValue:""}));return}if(H.return){let A=g.inputValue.trim();if(p?.onValue&&A){let F=p.currentValue;p.onValue(A),D(F?`${p.label}: ${F} \u2192 ${A}`:`${p.label}: ${A}`)}T(F=>({...F,isEditing:!1,inputValue:""}));return}if(H.backspace||H.delete){T(A=>({...A,inputValue:A.inputValue.slice(0,-1)}));return}O&&!H.ctrl&&!H.meta&&T(A=>({...A,inputValue:A.inputValue+O}));return}if(g.isSelecting&&p?.options){let A=p.options;if(H.escape){T(F=>({...F,isSelecting:!1}));return}if(H.upArrow){T(F=>({...F,inputValue:String(Math.max(0,Number(F.inputValue||"0")-1))}));return}if(H.downArrow){T(F=>({...F,inputValue:String(Math.min(A.length-1,Number(F.inputValue||"0")+1))}));return}if(H.return){let F=Number(g.inputValue||"0"),ee=A[F];if(ee&&p.onValue){let re=p.currentValue;p.onValue(ee.value),D(re?`${p.label}: ${re} \u2192 ${ee.label}`:`${p.label}: ${ee.label}`)}T(re=>({...re,isSelecting:!1,inputValue:""}));return}return}if(H.upArrow){T(A=>({...A,selectedIndex:Math.max(0,A.selectedIndex-1)}));return}if(H.downArrow){T(A=>({...A,selectedIndex:Math.min(c.length-1,A.selectedIndex+1)}));return}if(H.escape){if(g.expandedPath.length===0){n?.();return}T(A=>{let F=A.expandedPath.slice(0,-1),ee=Si(e,F),re=A.expandedPath[A.expandedPath.length-1],fe=ee.findIndex(W=>W.item.id===re);return{...A,expandedPath:F,selectedIndex:fe>=0?fe:0}});return}if(H.return&&p){if(p.id==="run-start"){t();return}if(p.type==="submenu"){let A=c[g.selectedIndex]?.depth??0;T(F=>({...F,expandedPath:[...F.expandedPath.slice(0,A),p.id],selectedIndex:F.selectedIndex+1}));return}if(p.onInfo){let A=p.onInfo();T(F=>({...F,activeView:"infoView",infoData:A}));return}if(p.onLoginWizard){p.onLoginWizard(),T(A=>({...A,activeView:"loginWizard"}));return}if(p.onProfilesView){p.onProfilesView(),T(A=>({...A,activeView:"profilesView"}));return}if(p.onChromeProfilePicker){p.onChromeProfilePicker(),T(A=>({...A,activeView:"chromeProfilePicker"}));return}if(p.onProjectPicker){p.onProjectPicker(),T(A=>({...A,activeView:"projectPicker"}));return}if(p.onFolderPicker){p.onFolderPicker(),T(A=>({...A,activeView:"folderPicker"}));return}if(p.onWindowSizePicker){p.onWindowSizePicker(),T(A=>({...A,activeView:"windowSizePicker"}));return}if(p.type==="action"){p.onAction?.(),p.suppressFeedback||D(`${p.label} done`);return}if(p.type==="select"&&p.options){let A=p.options.findIndex(F=>F.value===p.currentValue);T(F=>({...F,isSelecting:!0,inputValue:String(Math.max(0,A))}));return}if(p.type==="text-input"){T(A=>({...A,isEditing:!0,inputValue:p.currentValue??""}));return}}}}),(0,je.jsx)(b,{flexDirection:"column",paddingX:1,children:g.activeView==="infoView"&&g.infoData?(0,je.jsx)(vl,{data:g.infoData}):g.activeView==="loginWizard"&&o?o(M):g.activeView==="profilesView"&&i?i(M):g.activeView==="chromeProfilePicker"&&a?a(M):g.activeView==="projectPicker"&&u?u(M):g.activeView==="folderPicker"&&d?d(M):g.activeView==="windowSizePicker"&&v?v(M):(0,je.jsxs)(je.Fragment,{children:[c.map(({item:O,depth:H},A)=>{let F=A===g.selectedIndex,ee=" ".repeat(H),re=F?"\u276F ":" ",fe=O.type==="submenu"?g.expandedPath.includes(O.id)?"\u25BC ":"\u25B6 ":" ",W=O.currentValue!=null?` [${O.currentValue}]`:"";if(F&&g.isSelecting&&O.options){let ie=Number(g.inputValue||"0");return(0,je.jsxs)(b,{flexDirection:"column",children:[(0,je.jsxs)(s,{color:l.orange,children:[ee,re,fe,O.label]}),O.options.map((ue,Ce)=>(0,je.jsxs)(s,{color:Ce===ie?l.orange:void 0,children:[ee," ",Ce===ie?"\u276F ":" ",ue.label]},ue.value))]},O.id)}return F&&g.isEditing?(0,je.jsxs)(s,{color:l.orange,children:[ee,re,fe,O.label,": ",g.inputValue,(0,je.jsx)(s,{color:l.dim,children:"\u2588"})]},O.id):(0,je.jsxs)(s,{color:F?l.orange:void 0,dimColor:!F&&H>0,children:[ee,re,fe,O.label,(0,je.jsx)(s,{dimColor:!0,children:W})]},O.id)}),g.feedback&&(0,je.jsx)(b,{marginTop:1,children:(0,je.jsxs)(s,{color:l.green,children:["\u2713 ",g.feedback]})}),(0,je.jsx)(ar,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"select"}],escBackLabel:"back"})]})})}var Fr=k(xe(),1);var Ue=k(V(),1),Ri=800,yi=3840,Ti=600,Ei=2160;function bl(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<Ri)return`Min ${Ri}`;if(r>yi)return`Max ${yi}`}else{if(r<Ti)return`Min ${Ti}`;if(r>Ei)return`Max ${Ei}`}return null}function Ci({currentWidth:e,currentHeight:t,onSelect:r,onCancel:n}){let[o,i]=(0,Fr.useState)("width"),[a,u]=(0,Fr.useState)(String(e)),[d,v]=(0,Fr.useState)(String(t)),[w,g]=(0,Fr.useState)(null);Ie((c,p)=>{if(p.escape){n();return}if(p.tab||p.rightArrow||p.leftArrow){i($=>$==="width"?"height":"width"),g(null);return}if(p.return){let $=bl("width",a);if($){i("width"),g(`Width: ${$}`);return}let D=bl("height",d);if(D){i("height"),g(`Height: ${D}`);return}r(Number(a),Number(d));return}if(p.backspace||p.delete){o==="width"?u($=>$.slice(0,-1)):v($=>$.slice(0,-1)),g(null);return}c&&/^\d$/.test(c)&&(o==="width"?u($=>$+c):v($=>$+c),g(null))});let T=(c,p,$)=>{let D=o===$,M=D?l.orange:l.secondary;return(0,Ue.jsxs)(b,{flexDirection:"column",children:[(0,Ue.jsxs)(s,{color:l.dim,children:[" ",c]}),(0,Ue.jsx)(b,{borderStyle:"round",borderColor:M,paddingX:1,width:10,children:(0,Ue.jsxs)(s,{color:D?void 0:l.dim,children:[p||" ",D?(0,Ue.jsx)(s,{color:l.dim,children:"\u2588"}):""]})}),(0,Ue.jsxs)(s,{color:l.dim,dimColor:!0,children:[" ",$==="width"?`${Ri}\u2013${yi}`:`${Ti}\u2013${Ei}`]})]})};return(0,Ue.jsxs)(b,{flexDirection:"column",paddingX:1,children:[(0,Ue.jsx)(s,{color:l.orange,bold:!0,children:"Window Size"}),(0,Ue.jsxs)(b,{marginTop:1,gap:1,children:[T("Width",a,"width"),(0,Ue.jsx)(b,{alignItems:"center",marginTop:1,children:(0,Ue.jsx)(s,{color:l.dim,children:"x"})}),T("Height",d,"height")]}),w&&(0,Ue.jsx)(b,{marginTop:1,children:(0,Ue.jsx)(s,{color:l.red,children:w})}),(0,Ue.jsx)(ar,{bindings:[{keys:"tab/\u2190\u2192",label:"switch field"},{keys:"\u21B5",label:"save"}],escBackLabel:"cancel"})]})}var qe=k(xe(),1);async function Sl(e,t,r){let n=e.loadCredentials(t,r),o=e.loadClient(t,r);if(n&&o){let a=new ds(r);await Promise.allSettled([a.revokeToken(n.access_token,o.client_id,"access_token"),a.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 wl(){let[e]=(0,qe.useState)(()=>new pn),[t,r]=(0,qe.useState)(()=>{let p=e.resolveAuth();if(!p)return!1;if(p.method==="basic")return!0;let{credentials:$}=e.getActiveCredentials();return $?$.expires_at>Date.now()/1e3:!1}),n=(0,qe.useRef)(null),o=(0,qe.useRef)(null),i=(0,qe.useCallback)(()=>{let p=e.resolveAuth();return p?{method:p.method,profile:p.profile,env:p.env}:null},[e]),a=(0,qe.useCallback)(async()=>{let{credentials:p,profile:$,env:D}=e.getActiveCredentials();if(!p||!$||!D)return null;let M=p.expires_at,O=Date.now()/1e3;if(M-O<300){if(o.current)return o.current;let H=(async()=>{try{let A=await fs({creds:e,profile:$,env:D,credentials:p});return A?(r(!0),A.accessToken):null}catch{return r(!1),null}finally{o.current=null}})();return o.current=H,H}return r(!0),p.access_token},[e]),u=(0,qe.useCallback)(()=>{let p=e.resolveAuth();return!p||p.method!=="basic"?null:{username:p.username,access_key:p.access_key}},[e]),d=(0,qe.useCallback)((p,$)=>{n.current?.revoke();let D=De(p),M=u(),O=new ps(D.controllerBaseUrl,a,M,$);return n.current=O,O},[u,a]),v=(0,qe.useCallback)(()=>n.current,[]),w=(0,qe.useCallback)(()=>{let p=u();if(p)return p;let $=n.current?.cached;return $?{username:$.username,access_key:$.access_key}:null},[u]),g=(0,qe.useCallback)(async()=>{let p=n.current;return p?p.resolve():null},[]),T=(0,qe.useCallback)(async(p="default")=>{let $=e.getDefaultEnv();await new ms(p,$,e).login(),e.setActiveProfile(p);try{let M=new ur;st(e,M,p,$)}catch{}r(!0)},[e]),c=(0,qe.useCallback)(async()=>{let p=e.getActiveProfile();if(!p)return null;let $=e.getDefaultEnv(),D=await Sl(e,p,$);return r(!1),{profile:D.profile,env:D.env}},[e]);return{creds:e,tokenValid:t,setTokenValid:r,getToken:a,getBasicAuth:u,getAuthInfo:i,login:T,logout:c,initResolver:d,getResolver:v,getResolvedBasicAuth:w,resolveBasicAuth:g}}var _t=k(xe(),1);import{mkdtempSync as Np,rmSync as jp}from"fs";import{join as Vp}from"path";import{tmpdir as Mp}from"os";function Rl(){let[e]=(0,_t.useState)(()=>new ur),t=(0,_t.useRef)(null),r=(0,_t.useRef)(null),n=(0,_t.useRef)(null),o=(0,_t.useCallback)(async a=>{if(t.current)return t.current;if(n.current)return n.current;let u=(async()=>{let d=e.load(),v;if(d.chrome_profile_path)v=d.chrome_profile_path.replace("~",process.env.HOME??"~");else{r.current&&(jt("tempDir","Previous temp dir removed before retry"),r.current=null);let g=Np(Vp(Mp(),"kane-clean-"));r.current=g,v=g,St("tempDir",()=>{try{jp(g,{recursive:!0,force:!0})}catch{}})}let w=await hs({userDataDir:v,width:d.window_size.width,height:d.window_size.height,startUrl:a??d.default_url??void 0});return t.current=w,St("chrome",()=>{w.kill()}),w})();n.current=u;try{return await u}finally{n.current=null}},[e]),i=(0,_t.useCallback)(()=>{jt("chrome","Chrome killed"),jt("tempDir","Temp dir removed"),t.current=null,r.current=null},[]);return{ensureChrome:o,killChrome:i}}var jn=[{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"}];function Vn(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={},a=1;for(;a<n.length;){let u=n[a];if(u.startsWith("--")){let d=u.slice(2),v=n[a+1];v&&!v.startsWith("--")?(i[d]=v.replace(/^"|"$/g,""),a+=2):(i[d]=void 0,a++)}else{let d=u.replace(/^"|"$/g,"");o==="run"?i.objective=d:o==="config"?i.action?i.value=d:i.action=d:o==="profiles"?i.action=d:o==="summary"&&(i.index=d),a++}}return{command:o,args:i,raw:t}}var lv=[{name:"Testing",commands:jn.filter(e=>["run","cancel"].includes(e.name))},{name:"Auth",commands:jn.filter(e=>["login","logout","whoami","balance","profiles"].includes(e.name))},{name:"Settings",commands:jn.filter(e=>["config"].includes(e.name))},{name:"Session",commands:jn.filter(e=>["new","name","summary","help","clear","exit"].includes(e.name))}];var yl=[{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"}],Fp={name:"cancel",description:"Abort current run"},Up={name:"cancel",description:"Cancel current generation"},xr=[{name:"generate",description:"Switch to Generate mode (test case generator)"},{name:"summary",description:"View run summaries",args:"[index]"},Fp,...yl],Ur=[{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>]"},Up,...yl],Tl=xr;function Mn(e,t="run"){let r=t==="generate"?Ur:xr,n=e.startsWith("/")?e.slice(1):e;return n?r.filter(o=>o.name.startsWith(n)):r}var qp=new Set([...xr,...Ur].map(e=>e.name));function El(e,t){let r=t==="generate"?Ur:xr;return qp.has(e)?r.some(n=>n.name===e):!0}function Cl(e,t){let r=t?.trim();return r?e==="generate"?{kind:"reject"}:{kind:"run",objective:r}:e==="generate"?{kind:"toggle"}:{kind:"already"}}var Mt=k(V(),1);function Ii({flows:e,filterIndex:t}){let r=t!==void 0?e.filter(n=>n.index===t):e;return r.length===0?null:(0,Mt.jsx)(b,{flexDirection:"column",children:r.map(n=>(0,Mt.jsxs)(b,{flexDirection:"column",marginTop:1,children:[(0,Mt.jsxs)(b,{marginLeft:1,children:[(0,Mt.jsx)(s,{color:l.purple,bold:!0,children:"Flow "+n.index+": "}),(0,Mt.jsx)(s,{color:l.purple,children:n.objective})]}),(0,Mt.jsx)(Ls,{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 Ft=k(V(),1),Hp={ok:"\u2713",error:"\u2717",cancelled:"\u2298"},Gp={ok:l.green,error:l.red,cancelled:l.dim};function Il({status:e,command:t,message:r,details:n,accentColor:o}){let i=t.startsWith("/")?t.slice(1):t,a=o??Gp[e];return(0,Ft.jsxs)(b,{flexDirection:"column",marginLeft:2,marginTop:1,children:[(0,Ft.jsx)(b,{marginLeft:1,children:(0,Ft.jsxs)(s,{color:a,bold:!0,children:[Hp[e]," ",i]})}),(0,Ft.jsxs)(b,{borderStyle:"round",borderColor:a,paddingX:2,flexDirection:"column",width:70,children:[(0,Ft.jsx)(s,{children:r}),n&&(0,Ft.jsx)(s,{color:l.dim,children:n})]})]})}var Wr=k(xe(),1);import{join as Hr}from"path";var qr=k(V(),1);function kl({tabs:e,activeIndex:t}){return(0,qr.jsx)(b,{children:e.map((r,n)=>(0,qr.jsx)(b,{marginRight:1,children:n===t?(0,qr.jsx)(s,{color:l.orange,bold:!0,children:`[ ${r} ]`}):(0,qr.jsx)(s,{color:l.dim,children:` ${r} `})},r))})}var C=k(V(),1),Gr=["Commands","Shortcuts","Tests","Setup","About"],Fn=18,Wp="https://www.testmuai.com/support/docs/kane-cli-introduction",Xp="https://github.com/LambdaTest/kane-cli/issues";function Al({onClose:e,version:t,environment:r,sessionId:n,runUrl:o,mode:i="run"}){let[a,u]=(0,Wr.useState)(0),[d,v]=(0,Wr.useState)(0);(0,Wr.useEffect)(()=>{v(0)},[a]);let w=Gr[a],g=w==="Commands"?zp(i):w==="Shortcuts"?Yp():w==="Tests"?Kp():w==="Setup"?Jp():Qp({version:t,environment:r,sessionId:n,runUrl:o}),T=g.length,c=d>0,p=d+Fn<T,$=g.slice(d,d+Fn);Ie((M,O)=>{if(O.escape){e();return}if(O.rightArrow||O.tab){u(H=>(H+1)%Gr.length);return}if(O.leftArrow){u(H=>(H-1+Gr.length)%Gr.length);return}if(O.upArrow){v(H=>Math.max(0,H-1));return}if(O.downArrow){v(H=>Math.min(Math.max(0,T-Fn),H+1));return}});let D=[{keys:"\u2190\u2192/tab",label:"switch tabs"}];return T>Fn&&D.push({keys:"\u2191\u2193",label:"scroll"}),(0,C.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:[(0,C.jsx)(kl,{tabs:[...Gr],activeIndex:a,onChange:u}),c&&(0,C.jsx)(b,{marginTop:1,children:(0,C.jsx)(s,{color:l.dim,children:"\u25B2 more above"})}),(0,C.jsx)(b,{marginTop:c?0:1,flexDirection:"column",children:$}),p&&(0,C.jsx)(b,{children:(0,C.jsx)(s,{color:l.dim,children:"\u25BC more below"})}),(0,C.jsx)(ar,{bindings:D,escBackLabel:"back to chat"})]})}function zp(e){let t=e==="generate"?Ur:xr;return[(0,C.jsx)(s,{color:l.dim,children:"Type a natural-language objective and press \u21B5 to run, e.g."},"intro"),(0,C.jsx)(b,{marginLeft:2,children:(0,C.jsx)(s,{color:l.orange,children:'"search amazon for laptop"'})},"ex"),(0,C.jsx)(b,{marginBottom:1},"sp"),(0,C.jsx)(s,{color:l.dim,bold:!0,children:"Slash commands"},"cmd-h"),...t.map(r=>(0,C.jsxs)(b,{marginLeft:2,children:[(0,C.jsx)(b,{width:14,children:(0,C.jsxs)(s,{color:l.orange,children:["/",r.name]})}),r.args&&(0,C.jsx)(b,{width:14,children:(0,C.jsx)(s,{color:l.dim,children:r.args})}),(0,C.jsx)(s,{color:l.dim,children:r.description})]},r.name)),(0,C.jsx)(b,{marginBottom:1},"sp2"),(0,C.jsx)(b,{marginLeft:2,children:(0,C.jsx)(s,{color:l.dim,children:"/auth submenu: login \xB7 logout \xB7 whoami \xB7 profiles \xB7 balance"})},"auth-sub"),(0,C.jsx)(b,{marginLeft:2,children:(0,C.jsx)(s,{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 Un(e,t){return[(0,C.jsx)(s,{color:l.dim,bold:!0,children:e},`h-${e}`),...t.map(([r,n],o)=>(0,C.jsxs)(b,{marginLeft:2,children:[(0,C.jsx)(b,{width:26,children:(0,C.jsx)(s,{color:l.orange,children:r})}),(0,C.jsx)(s,{color:l.dim,children:n})]},`r-${e}-${o}`)),(0,C.jsx)(b,{marginBottom:1},`s-${e}`)]}function Yp(){return[...Un("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"]]),...Un("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"]]),...Un("Lists & menus",[["\u2191 \u2193","Navigate"],["type any char","Filter"],["\u21B5","Select"],["Tab","Create-new (in pickers)"],["Esc","Clear filter, then back"]]),...Un("Global",[["Ctrl+C","Cancel run \xB7 twice exits"]]),(0,C.jsx)(s,{color:l.dim,bold:!0,children:"Platform caveats"},"cv-h"),(0,C.jsx)(s,{color:l.dim,children:'\u2022 Mac Terminal.app: enable "Use Option as Meta key" (Profile \u2192 Keyboard)'},"cv-1"),(0,C.jsx)(s,{color:l.dim,children:"\u2022 Mac iTerm2: works by default (Esc+ mode)"},"cv-2"),(0,C.jsx)(s,{color:l.dim,children:"\u2022 Mac Mission Control may intercept Ctrl+arrow \u2014 use Option+arrow instead"},"cv-3"),(0,C.jsx)(s,{color:l.dim,children:"\u2022 Bare Forward Delete acts as Backspace (Ink can't disambiguate)"},"cv-4"),(0,C.jsx)(s,{color:l.dim,children:"\u2022 Shift+arrow is parsed but unbound (selection model is future)"},"cv-5"),(0,C.jsx)(s,{color:l.dim,children:"\u2022 Thousands of terminals exist \u2014 if a shortcut fails, run `cat` to see bytes"},"cv-6")]}function Kp(){return[(0,C.jsxs)(s,{color:l.dim,children:["Sessions you run here are saved as ",(0,C.jsx)(s,{color:l.orange,children:"*_test.md"})," files you can replay later."]},"t-intro"),(0,C.jsx)(b,{marginBottom:1},"t-sp1"),(0,C.jsx)(s,{color:l.dim,bold:!0,children:"Auto-save"},"t-save-h"),(0,C.jsxs)(s,{color:l.dim,children:[" In ",(0,C.jsx)(s,{color:l.orange,children:"testing"})," mode, /exit prompts to save the session under a name (default: timestamp)."]},"t-save-1"),(0,C.jsxs)(s,{color:l.dim,children:[" In ",(0,C.jsx)(s,{color:l.orange,children:"action"})," mode, sessions are ephemeral unless launched with --name or set via /name."]},"t-save-2"),(0,C.jsxs)(s,{color:l.dim,children:[" Output: ",(0,C.jsx)(s,{color:l.orange,children:"<cwd>/.testmuai/tests/<name>_test.md"})," + sibling ",(0,C.jsx)(s,{color:l.orange,children:"output-<name>/"})," (Result.md + .internal/meta.json)."]},"t-save-3"),(0,C.jsx)(b,{marginBottom:1},"t-sp2"),(0,C.jsx)(s,{color:l.dim,bold:!0,children:"Replay from a shell"},"t-run-h"),(0,C.jsxs)(s,{color:l.dim,children:[" ",(0,C.jsx)(s,{color:l.orange,children:"kane-cli testmd run path/to/foo_test.md"})," \xB7 ",(0,C.jsx)(s,{color:l.orange,children:"kane-cli testmd list"})," \xB7 bare ",(0,C.jsx)(s,{color:l.orange,children:"kane-cli testmd"})," opens a TTY picker."]},"t-run-1"),(0,C.jsx)(s,{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,C.jsx)(b,{marginBottom:1},"t-sp3"),(0,C.jsx)(s,{color:l.dim,bold:!0,children:"Naming a session mid-run"},"t-name-h"),(0,C.jsxs)(s,{color:l.dim,children:[" Type ",(0,C.jsxs)(s,{color:l.orange,children:["/name ","<new-name>"]})," any time before /exit. Name allowed chars: letters, digits, _, -."]},"t-name-1"),(0,C.jsxs)(s,{color:l.dim,children:[" Discarding at the save prompt: press ",(0,C.jsx)(s,{color:l.orange,children:"N"})," (only key that discards \u2014 every other key saves with default)."]},"t-name-2")]}function Jp(){return[(0,C.jsx)(s,{color:l.dim,bold:!0,children:"1. Login"},"s1-h"),(0,C.jsx)(s,{color:l.dim,children:" /auth \u2192 login. OAuth opens browser; basic uses LambdaTest username + access key."},"s1-b"),(0,C.jsx)(s,{color:l.dim,bold:!0,children:"2. Project & folder"},"s2-h"),(0,C.jsx)(s,{color:l.dim,children:" /config project / /config folder. Esc auto-picks KaneAI Generated / Untitled."},"s2-b"),(0,C.jsx)(s,{color:l.dim,bold:!0,children:"3. Run settings (/config \u2192 Run)"},"s3-h"),(0,C.jsx)(s,{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,C.jsx)(s,{color:l.dim,children:" assertion-mode: visual (default) = read/assert via vision \xB7 dom = DOM-based extraction/assertions"},"s3-c"),(0,C.jsx)(b,{marginBottom:1},"spacer-1"),(0,C.jsx)(s,{color:l.dim,bold:!0,children:"Variables (later wins)"},"v-h"),(0,C.jsxs)(s,{color:l.dim,children:[" ",`${Hr(Xe,"variables")}/*.json`," (global)"]},"v-1"),(0,C.jsxs)(s,{color:l.dim,children:[" ","{cwd}/.testmuai/variables/*.json"," (local) \xB7 --variables-file \xB7 --variables ","'{...}'"]},"v-2"),(0,C.jsx)(s,{color:l.dim,children:' Format: { "key": { "value": "...", "secret": false } } \xB7 ref via {{key}}'},"v-3"),(0,C.jsx)(b,{marginBottom:1},"spacer-2"),(0,C.jsx)(s,{color:l.dim,bold:!0,children:"Context files"},"c-h"),(0,C.jsxs)(s,{color:l.dim,children:[" Global: ",Hr(Xe,"global-memory.md")]},"c-1"),(0,C.jsxs)(s,{color:l.dim,children:[" Local: ","{cwd}/.testmuai/context.md"," \xB7 CLI: --global-context, --local-context"]},"c-2"),(0,C.jsx)(b,{marginBottom:1},"spacer-3"),(0,C.jsx)(s,{color:l.dim,bold:!0,children:"Paths"},"p-h"),(0,C.jsxs)(s,{color:l.dim,children:[" Config: ",Hr(Xe,"tui-config.json")," \xB7 Auth: ",Hr(Xe,"config.json")]},"p-1"),(0,C.jsxs)(s,{color:l.dim,children:[" Sessions: ",Hr(Xe,"sessions"),"/"]},"p-2")]}function Qp({version:e,environment:t,sessionId:r,runUrl:n}){return[(0,C.jsxs)(b,{children:[(0,C.jsx)(s,{color:l.orange,bold:!0,children:"kane-cli "}),(0,C.jsxs)(s,{color:l.muted,children:["v",e]})]},"title"),(0,C.jsx)(b,{marginBottom:1},"sp"),(0,C.jsxs)(b,{children:[(0,C.jsx)(b,{width:14,children:(0,C.jsx)(s,{color:l.dim,children:"Environment"})}),(0,C.jsx)(s,{children:t})]},"env"),(0,C.jsxs)(b,{children:[(0,C.jsx)(b,{width:14,children:(0,C.jsx)(s,{color:l.dim,children:"Session"})}),(0,C.jsx)(s,{children:r})]},"sess"),(0,C.jsxs)(b,{children:[(0,C.jsx)(b,{width:14,children:(0,C.jsx)(s,{color:l.dim,children:"Default URL"})}),(0,C.jsx)(s,{color:l.orange,children:n})]},"url"),(0,C.jsx)(b,{marginBottom:1},"sp2"),(0,C.jsxs)(b,{children:[(0,C.jsx)(b,{width:14,children:(0,C.jsx)(s,{color:l.dim,children:"Docs"})}),(0,C.jsx)(s,{color:l.orange,underline:!0,children:Wp})]},"docs"),(0,C.jsxs)(b,{children:[(0,C.jsx)(b,{width:14,children:(0,C.jsx)(s,{color:l.dim,children:"Bugs"})}),(0,C.jsx)(s,{color:l.orange,underline:!0,children:Xp})]},"bugs")]}var qn=k(xe(),1);import{existsSync as _l,readFileSync as Bv,rmSync as Zp,unlinkSync as eg}from"fs";function Pl(e){let t=$s(e);_l(t)&&Zp(t,{recursive:!0,force:!0}),_l(e)&&eg(e)}var ki=k(V(),1);function Bl({cwd:e,currentOrgId:t,onClose:r,onRun:n,onExport:o}){let[i,a]=(0,qn.useState)("list"),[u,d]=(0,qn.useState)(null),[v,w]=(0,qn.useState)(0);return i==="inspect"&&u?(0,ki.jsx)(Os,{path:u.path,relPath:u.relPath,onBack:()=>a("list"),onAction:g=>{if(g==="run")n(u);else if(g==="export")o(u);else{try{Pl(u.path)}catch{}d(null),a("list"),w(T=>T+1)}}}):(0,ki.jsx)(Ds,{root:e,currentOrgId:t,onSelect:g=>{d(g),a("inspect")},onCancel:r},v)}var He=k(xe(),1);function Ll(e){let[t,r]=(0,He.useState)(null),[n,o]=(0,He.useState)(!1),[i,a]=(0,He.useState)(null),[u,d]=(0,He.useState)(null),[v,w]=(0,He.useState)(null),g=(0,He.useRef)(0),T=(0,He.useRef)([]),c=(0,He.useRef)(!1),p=(0,He.useRef)(null),$=(0,He.useRef)(e);$.current=e;let D=(0,He.useCallback)(async H=>{if(c.current)return null;c.current=!0;let A=++g.current,F=[];T.current=F;let ee=W=>`testmd-run-${A}-${W}`,re={register:(W,ie)=>{let ue=ee(W);F.push(ue),St(ue,ie)},deregister:W=>$r(ee(W)),cleanup:(W,ie)=>jt(ee(W),ie),remoteLogger:$.current.remoteLogger},fe={runSteps:W=>new Promise(ie=>{let ue=()=>{p.current=null,ie()};p.current=ue,r({...W,exitOnComplete:!1,onAllComplete:()=>{W.onAllComplete?.(),ue()}})}),onLockState:W=>{},onRetryAttempt:W=>{},onSummary:async W=>{a(W)},onLinks:async W=>{d(W)},runUpload:W=>W.execute(),onAgentEvent:W=>{}};o(!0),a(null),d(null),w(null);try{let W=await $.current.buildInput(H),ie=await Ks(W,fe,re);return w(ie),ie}finally{c.current=!1,p.current=null,o(!1),r(null);for(let W of F)jt(W,"run-finished");F.length=0}},[]),M=(0,He.useCallback)(()=>{for(let A of T.current)jt(A,"cancelled");T.current=[];let H=p.current;p.current=null,H?.()},[]),O=(0,He.useCallback)(()=>{a(null),d(null),w(null)},[]);return{start:D,cancel:M,clearResult:O,running:n,runViewProps:t,summary:i,links:u,runSummary:v}}var Ve=k(xe(),1);function $l(e={}){let[t,r]=(0,Ve.useState)(()=>bn({requestId:"",objective:""})),[n,o]=(0,Ve.useState)(!1),[i,a]=(0,Ve.useState)(null),u=(0,Ve.useRef)(null),d=(0,Ve.useRef)(!1),v=(0,Ve.useRef)(null),w=(0,Ve.useCallback)(async(D,M,O)=>{d.current=!1;let H=0,A=0,F=0;for await(let ee of D){if(d.current)break;switch(r(re=>ea(re,ee)),ee.type){case"thinking_done":O?.("tcg_thinking",{tookMs:ee.tookMs});break;case"progress":{let re=Math.min(100,Math.floor(ee.pct/25)*25);re>F&&(F=re,O?.("tcg_progress",{pct:re}));break}case"snapshot":H=ee.data.scenarios.length,A=ee.data.scenarios.reduce((re,fe)=>re+(fe.test_cases?.length??0),0),O?.("tcg_snapshot",{scenarioCount:H,caseCount:A});break;case"clarification":O?.("tcg_clarification",{});break;case"done":O?.("tcg_request_done",{status:ee.status,scenarioCount:H,caseCount:A,durationMs:Date.now()-M});break;case"error":O?.("tcg_request_error",{errorCode:"tcg_request_failed",durationMs:Date.now()-M});break}}},[]),g=(0,Ve.useCallback)(async(D,M)=>{if(u.current)throw new Error("useTcgSession: a session is already active; call reset() or end() first");let O=e.makeClient??ta;u.current=O(D),v.current=new AbortController;let H=bn({requestId:"",objective:M.prompt});r(Sn(H));let A;try{A=await u.current.start(M,v.current.signal)}catch(ee){throw u.current=null,v.current=null,r(re=>({...re,turnActive:!1})),ee}a(A.requestId),r(Sn({...A.state,requestId:A.requestId,objective:M.prompt}));let F=Date.now();e.log?.("tcg_request_start",{request_id:A.requestId,objectiveChars:M.prompt.length,scenarioLimit:M.scenarioLimit,perScenarioLimit:M.perScenarioLimit,memoryEnhancement:M.memoryEnhancement}),await w(A.events,F,e.log)},[w,e.makeClient,e.log]),T=(0,Ve.useCallback)(async(D,M)=>{if(!u.current||!i)throw new Error("useTcgSession: chat() with no active request");r(O=>Sn(Zs(O)));try{await u.current.chat(i,D,M)}catch(O){throw r(H=>({...H,turnActive:!1})),O}},[i]),c=(0,Ve.useCallback)(async()=>{if(!(!i||!u.current)){d.current=!0,v.current&&v.current.abort();try{await u.current.cancel(i)}catch{}u.current=null,a(null),r(D=>({...D,turnActive:!1}))}},[i]),p=(0,Ve.useCallback)(async()=>{if(!(!i||!u.current)){d.current=!0,v.current&&v.current.abort();try{await u.current.end(i)}catch{}u.current=null,a(null),r(D=>({...D,turnActive:!1}))}},[i]),$=(0,Ve.useCallback)(()=>{d.current=!0,v.current&&v.current.abort(),v.current=null,r(bn({requestId:"",objective:""})),a(null),o(!1),u.current=null},[]);return(0,Ve.useEffect)(()=>()=>{d.current=!0,v.current&&v.current.abort()},[]),{state:t,isStreaming:t.turnActive,isTerminal:Qs(t.status),isReconnecting:n,turnActive:t.turnActive,inReview:t.scenarios.length>0&&!t.turnActive&&!qo(t.status),isSessionClosed:qo(t.status),requestId:i,startWith:g,chat:T,cancel:c,end:p,reset:$}}var Z=k(xe(),1);import{join as vr,resolve as mg}from"path";import{mkdirSync as _i,writeFileSync as Yl,appendFileSync as pg}from"fs";function Dl(e){let t=De(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 Ol(e){return e.turnActive?!0:e.requestId!=null&&!e.isSessionClosed&&!e.saved}function Nl(e){return e.isRunning||e.hasLiveResults}function jl(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 Vl(e,t){return`S${e+1}.C${t+1}`}function Ml(e,t){return e.reduce((r,n)=>r+(n.test_cases??[]).filter(o=>!t.has(o.id)).length,0)}function Fl(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 Xr=k(xe(),1);import{createHash as tg}from"crypto";function rg(e){return tg("sha1").update(JSON.stringify({t:e.title,p:e.preconditions,m:e.manual_steps})).digest("hex")}var Hn=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(!Rt(o)||o.manual_steps==null)return;let a=rg(o),u=this.cache.get(o.id);u&&u.hash===a||(u?.controller?.abort(),this.caseById.set(o.id,o),this.cache.set(o.id,{hash:a,ref:Vl(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 a=this.deps.run??this.defaultRun.bind(this);St(o,()=>i.abort());let u=Date.now();try{this.safeLog("tcg_bif_start",{caseId:t,ref:n.ref});let d=await a(sa(r),i.signal);if(!i.signal.aborted&&this.cache.get(t)===n){n.status="done",n.result=d;try{this.deps.persist?.(t,d,n.ref)}catch{}this.safeLog("tcg_bif_done",{caseId:t,ref:n.ref,total_flows:d.total_flows,is_single_flow:d.is_single_flow,estimated_steps_total:(d.sub_objectives??[]).reduce((v,w)=>v+(w.estimated_steps??0),0),credits_consumed:d.credits_consumed,durationMs:Date.now()-u})}}catch(d){!i.signal.aborted&&this.cache.get(t)===n&&(n.status="error",n.error=d.message,this.safeLog("tcg_bif_error",{caseId:t,ref:n.ref,errorCode:"bifurcation_failed",durationMs:Date.now()-u}))}finally{$r(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=aa({objective:t,model:this.deps.model,sessionId:this.deps.sessionId,auth:n});return ca(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(),$r(`bifurcation-${t}`);this.cache.clear(),this.caseById.clear(),this.queue=[],this.active=0}};function Ul(e){let t=(0,Xr.useRef)(null);return(0,Xr.useEffect)(()=>{if(!e.enabled)return;let r=e.log,n=r?(o,i,a,u)=>r(i,u??{}):void 0;return t.current=new Hn({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,Xr.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 Gl,isAbsolute as og,extname as ig}from"path";import{homedir as Hl}from"os";var ng=/(?<=^|\s)@(?:"([^"]*)"|([^\s@]+))/g;function ql(e){let t=[];for(let r of e.matchAll(ng)){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 sg=/^s\d+(\.c\d+)?$/i;function ag(e){return e==="~"?Hl():e.startsWith("~/")?Gl(Hl(),e.slice(2)):e}function cg(e){return/^https?:\/\//i.test(e)?!1:e.includes("/")?!0:wn.has(ig(e).toLowerCase())}function Wl(e,t){let r=ql(e),n=[],o=[];for(let a of r){let u=a.value,d=a.end;if(!a.raw.includes('"')){let g=u.match(/[.,;:!?]+$/);g&&(u=u.slice(0,-g[0].length),d-=g[0].length)}if(sg.test(u)||!cg(u))continue;let v=ag(u),w=og(v)?v:Gl(t,v);n.push(w),o.push([a.start,d])}let i=e;for(let[a,u]of o.sort((d,v)=>v[0]-d[0]))i=i.slice(0,a)+i.slice(u);return i=i.replace(/[ \t]{2,}/g," ").replace(/ +([.,;:!?])/g,"$1").trim(),{paths:n,promptText:i}}var lg=["request_id","session_id","caseId","ref","total_flows","is_single_flow","estimated_steps_total","credits_consumed","durationMs","pct","tookMs","scenarioCount","caseCount","savedCount","fellBack","turnIndex","status","errorCode","objectiveChars","scenarioLimit","perScenarioLimit","memoryEnhancement"],ug=new Set(lg);function Ai(e){let t={};for(let r of Object.keys(e))ug.has(r)&&e[r]!==void 0&&(t[r]=e[r]);return t}import{mkdirSync as dg,appendFileSync as fg}from"fs";import{join as Xl}from"path";function zl(e,t,r,n,o=Xe){let i=Xl(o,"tcg",e&&e.length>0?e:"pending"),a=Xl(i,"errors.log");try{let u=r instanceof Error?r.stack??r.message:String(r),d=`[${new Date().toISOString()}] phase=${t} ${u}${n?" "+JSON.stringify(n):""}
|
|
3
|
+
`;dg(i,{recursive:!0}),fg(a,d)}catch{}return a}var ke=k(V(),1);async function gg(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 Kl(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function Jl(e){let{tcg:t,initialChatMode:r,tuiConfig:n,auth:o,session:i,appendStatic:a,handleInput:u,freezeTcgArtifact:d,rearmArtifactFreeze:v,initialGenerateLimits:w,ensureProjectAndFolder:g,config:T}=e,[c,p]=(0,Z.useState)(r??"run"),[$,D]=(0,Z.useState)(null),[M,O]=(0,Z.useState)(null),[H,A]=(0,Z.useState)(null),[F,ee]=(0,Z.useState)(0),[re,fe]=(0,Z.useState)(!1),W=(0,Z.useRef)(null),ie=(0,Z.useRef)(()=>{}),ue=(0,Z.useCallback)(()=>gg(o),[o]),Ce=(0,Z.useRef)(null);Ce.current=t.requestId;let Le=(0,Z.useCallback)((X,Q)=>{let Y=X.endsWith("_error")?"warn":"info",G=Ai({request_id:Ce.current??void 0,...Q});i.log(Y,X,JSON.stringify(G),G);try{let ce=typeof G.request_id=="string"&&G.request_id||Ce.current||"unknown",we=vr(Xe,"tcg",ce);_i(we,{recursive:!0}),pg(vr(we,"tcg_tui.log"),`[${new Date().toISOString()}] ${X} ${JSON.stringify(G)}
|
|
4
|
+
`)}catch{}},[i]),et=(0,Z.useCallback)((X,Q)=>{let Y=zl(Ce.current,Q.phase,X),G=typeof X?.status=="number"?X.status:void 0;Le(`${Q.phase}_error`,{errorCode:`${Q.phase}_failed`,status:G});let ce=Q.phase==="upload"?"\u2717 Couldn't upload attachments \u2014 generation not started. Try again.":"\u2717 Generation failed \u2014 send another request.";a((0,ke.jsxs)(b,{flexDirection:"column",marginTop:1,marginBottom:1,children:[(0,ke.jsx)(s,{color:l.red,children:ce}),(0,ke.jsx)(s,{color:l.dim,children:`details: ${Y}`})]})),D(null)},[Le,a]),qt=(0,Z.useRef)(0),tt=(0,Z.useCallback)((X,Q,Y)=>{try{let G=vr(Xe,"tcg",Ce.current??"unknown","bifurcation");_i(G,{recursive:!0}),Yl(vr(G,`${X}.json`),JSON.stringify({request_id:Ce.current,ref:Y,...Q},null,2))}catch{}},[]),xt=Ul({scenarios:t.state?.scenarios??[],model:n.model,sessionId:i.sessionId,resolveAuth:ue,environment:o?.creds?.getDefaultEnv?.(),enabled:!!t.requestId&&!t.isSessionClosed,log:Le,persist:tt}),Sr=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let X=t.requestId;if(!X||!t.isSessionClosed&&!t.isTerminal)return;let Q=t.state?.scenarios??[];if(Q.length!==0&&Sr.current!==X){Sr.current=X;try{let Y=vr(Xe,"tcg",X);_i(Y,{recursive:!0}),Yl(vr(Y,"request.json"),JSON.stringify({request_id:X,objective:t.state?.objective,headline:t.state?.headline,scenarios:Q,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 wr=(0,Z.useCallback)((X,Q=1500)=>{A(X),W.current&&clearTimeout(W.current),W.current=setTimeout(()=>{A(null),W.current=null},Q)},[]);(0,Z.useEffect)(()=>()=>{W.current&&clearTimeout(W.current)},[]);let Ge=(0,Z.useCallback)((X,Q)=>{let Y=o.getResolver();if(!Y)return{ok:!1,error:"Not logged in \u2014 use /login"};let G=Dl({env:o.creds.getDefaultEnv(),resolver:Y,projectId:X??n.project_id??void 0,folderId:Q??n.folder_id??void 0,log:(ce,we,ut,We)=>i.log(ce,we,"",Ai(We??{}))});return G.ok?{ok:!0,conn:G.conn}:{ok:!1,error:G.error}},[o,n,i]),Ke=(0,Z.useRef)(!1),$e=(0,Z.useRef)(null),[zr,Zt]=(0,Z.useState)(!1),Ht=(0,Z.useCallback)((X,Q,Y,G,ce)=>{let we=process.cwd(),{paths:ut,promptText:We}=Wl(X,we);return ua({promptText:We,filePaths:ut,cwd:we,scenarios:t.state?.scenarios??[],isRefine:Q,conn:Y,deps:{validate:la,upload:(ae,Je,tr)=>da(ae,Je,tr,{signal:ce}),buildMappings:fa},onValidated:G})},[t]),Rr=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>{if(c!=="generate"){Rr.current=!1;return}Rr.current||n.project_id&&n.folder_id||g&&o.getResolver()&&(Rr.current=!0,g())},[c,n.project_id,n.folder_id,g,o]);let Yr=(0,Z.useCallback)(async X=>{D(null),O(null),fe(!1);let Q=X.trim();if(!Q)return;if(Q.startsWith("/")){ie.current(Q),ee(ae=>ae+1);return}let Y=n.project_id??null,G=n.folder_id??null;if(g){let ae=await g();if(ae)Y=ae.projectId,G=ae.folderId;else if(T){let Je=T.load();Y=Je.project_id??Y,G=Je.folder_id??G}}else if(T){let ae=T.load();Y=ae.project_id??Y,G=ae.folder_id??G}if(!Y||!G){O("Set a project and folder first \u2014 use /config");return}let ce=Ge(Y,G);if(!ce.ok){D(ce.error);return}if(Ke.current)return;Ke.current=!0;let we=new AbortController;$e.current=we;let ut=ce.conn,We;try{We=await Ht(Q,!1,ut,()=>{a((0,ke.jsx)(b,{marginTop:1,children:(0,ke.jsx)(s,{color:l.generateAccent,bold:!0,children:`\u276F ${Q}`})})),Zt(!0)},we.signal)}catch(ae){if(ae instanceof Ho){O(ae.errors.join(`
|
|
5
|
+
`));return}if(Kl(ae))return;et(ae,{phase:"upload"});return}finally{Ke.current=!1,Zt(!1),$e.current===we&&($e.current=null)}if(!we.signal.aborted){for(let ae of We.warnings)e.emitFeedback("ok","/generate",ae,void 0,l.generateAccent);d(),t.reset(),v();try{let ae=w??{};await t.startWith(ut,{prompt:We.promptText,attachments:We.attachments,scenarioLimit:ae.scenarioLimit??n.generate.scenario_limit,perScenarioLimit:ae.perScenarioLimit??n.generate.per_scenario_limit,memoryEnhancement:n.generate.memory_enabled})}catch(ae){et(ae,{phase:"generation"})}}},[n,t,Ge,Ht,e,g,T,w,a,d,v,et]),yr=(0,Z.useCallback)(()=>D(null),[]),Kr=(0,Z.useCallback)(async X=>{let Q=Ge();if(!Q.ok){D(Q.error);return}if(Ke.current)return;Ke.current=!0;let Y=new AbortController;$e.current=Y;let G;try{G=await Ht(X,!0,Q.conn,()=>{a((0,ke.jsx)(s,{color:l.generateAccent,bold:!0,children:`\u276F ${X}`})),qt.current+=1,Le("tcg_refine",{turnIndex:qt.current}),Zt(!0)},Y.signal)}catch(ce){if(ce instanceof Ho){O(ce.errors.join(`
|
|
6
|
+
`));return}if(Kl(ce))return;et(ce,{phase:"upload"});return}finally{Ke.current=!1,Zt(!1),$e.current===Y&&($e.current=null)}if(!Y.signal.aborted){for(let ce of G.warnings)e.emitFeedback("ok","/generate",ce,void 0,l.generateAccent);try{await t.chat(G.promptText,{mappings:G.mappings,attachments:G.attachments})}catch(ce){et(ce,{phase:"chat"})}}},[a,t,Le,Ge,Ht,e,et]),Gt=(0,Z.useCallback)(async X=>{if(!Ke.current){Ke.current=!0,a((0,ke.jsx)(s,{color:l.generateAccent,bold:!0,children:`\u276F ${X}`}));try{await t.chat(X)}catch(Q){et(Q,{phase:"chat"})}finally{Ke.current=!1}}},[a,t,et]),er=(0,Z.useCallback)(X=>{let Q=Vn(X);if(Q?.command==="view"){let Y=X.trim().split(/\s+/).slice(1)[0];if(t.state.scenarios.length===0){e.emitFeedback("ok","/view","(no generation yet)");return}let G=jl(Y);if(G.level==="cases"&&G.scenarioIdx>=t.state.scenarios.length){e.emitFeedback("error","/view",`No scenario S${G.scenarioIdx+1}`);return}e.openBrowse(G);return}if(Q?.command==="save"){let Y=t.state.scenarios;if(Y.length===0){e.emitFeedback("error","/save","Nothing to save yet.");return}let G=Fl(Y,e.excluded),ce=G.reduce((ae,Je)=>ae+(Je.test_cases??[]).filter(Rt).length,0);if(ce===0){e.emitFeedback("error","/save",Ml(Y,e.excluded)===0?"All cases removed \u2014 nothing to save.":"No functional test cases to save.");return}let we={...t.state,scenarios:G},ut=X.trim().split(/\s+/).slice(1)[0],We=ut?mg(process.cwd(),ut):process.cwd();fe(!0),e.freezeTcgArtifact(),(async()=>{let ae=G.flatMap(Re=>(Re.test_cases??[]).filter(Rt)),Je=Date.now()+3e4;for(;Date.now()<Je&&ae.some(Re=>xt.getStatus(Re.id)==="pending");)await new Promise(Re=>setTimeout(Re,250));let tr=new Map;for(let Re of ae)tr.set(Re.id,xt.getStatus(Re.id)==="done"?xt.getResult(Re.id):void 0);t.end();let Lt=0,Er=Re=>{let le=tr.get(Re.id);return le?na(le,Re):(Lt++,oa(Re))};try{let Re=await ia(we,We,{},Er);Le("tcg_save",{savedCount:Re.paths.length,fellBack:Lt})}catch(Re){e.emitFeedback("error","/save",`Save failed: ${Re.message}`);return}let Xt=`test case${ce===1?"":"s"}`;e.emitFeedback("ok","/save",Lt>0?`Saved ${ce} ${Xt} \xB7 ${Lt} fell back to raw steps.`:`Saved ${ce} ${Xt}.`)})();return}Q?.command==="new"&&fe(!1),u(X)},[u,e,t,xt,Le]);ie.current=er;let Wt=(0,Z.useCallback)(X=>{p(X),ee(Q=>Q+1)},[]),Tr=(0,Z.useCallback)(X=>{let Q=c==="generate"&&X==="run",Y=c==="run"&&X==="generate",G=Ol({requestId:t.requestId,isSessionClosed:t.isSessionClosed,turnActive:t.turnActive,saved:re}),ce=Nl({isRunning:e.runner.isRunning,hasLiveResults:e.runner.lastRunEnd!=null});return Q&&G?(e.openSwitchConfirm("run"),!1):Y&&ce?(e.openSwitchConfirm("generate"),!1):(Wt(X),!0)},[c,t.requestId,t.isSessionClosed,t.turnActive,re,e,Wt]),Jr=(0,Z.useCallback)(async X=>{c==="generate"?(e.freezeTcgArtifact(),await t.end().catch(()=>{}),t.reset(),fe(!1),e.appendStatic((0,ke.jsxs)(b,{marginBottom:1,children:[(0,ke.jsx)(s,{color:l.red,children:"\u2717 "}),(0,ke.jsx)(s,{color:l.dim,children:"Discarded generation"})]}))):(e.runner.isRunning&&e.runner.cancelRun(),e.runner.clearLastRun(),e.appendStatic((0,ke.jsxs)(b,{marginBottom:1,children:[(0,ke.jsx)(s,{color:l.red,children:"\u2717 "}),(0,ke.jsx)(s,{color:l.dim,children:"Discarded run"})]}))),Wt(X),X==="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]),ao=(0,Z.useCallback)(()=>{if(t.isStreaming)e.freezeTcgArtifact(),t.cancel();else if($e.current)$e.current.abort();else return;e.appendStatic((0,ke.jsxs)(b,{marginBottom:1,children:[(0,ke.jsx)(s,{color:l.red,children:"\u2717 "}),(0,ke.jsx)(s,{color:l.dim,children:"Generation cancelled"})]}))},[e,t]);return{chatMode:c,tcgError:$,tcgValidationError:M,composeIdleHint:H,inputClearSeq:F,submitting:zr,handleGenerateSubmit:Yr,onRefine:Kr,onClarificationAnswer:Gt,onSlash:er,onClearError:yr,flashComposeHint:wr,setInputClearSeq:ee,setChatMode:p,setTcgError:D,setTcgValidationError:O,generateSaved:re,requestSwitch:Tr,confirmSwitch:Jr,cancelGenerate:ao,bifurcation:xt,tcgLog:Le}}var Et=k(xe(),1);function Gn(e){return e.level==="cases"?{level:"cases",scenarioIdx:e.scenarioIdx,caseIdx:0,cursor:0}:{level:"scenarios",scenarioIdx:0,caseIdx:0,cursor:0}}var hg=(e,t)=>Math.max(0,Math.min(t,e));function Pi(e,t,r){switch(t.type){case"open":return Gn(t.target);case"move":{let n=e.level==="scenarios"?r.length-1:e.level==="cases"?(r[e.scenarioIdx]??1)-1:0;return{...e,cursor:hg(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 Ql(e){let[t,r]=(0,Et.useState)(null),[n,o]=(0,Et.useReducer)((g,T)=>Pi(g,T,e),Gn({level:"scenarios"})),[i,a]=(0,Et.useState)(new Set),u=(0,Et.useCallback)(g=>{r(g),o({type:"open",target:g})},[]),d=(0,Et.useCallback)(()=>r(null),[]),v=(0,Et.useCallback)(g=>{a(T=>{let c=new Set(T);return c.has(g)?c.delete(g):c.add(g),c})},[]),w=(0,Et.useCallback)(g=>{a(T=>{let c=new Set(T),p=g.length>0&&g.every($=>c.has($));return g.forEach($=>p?c.delete($):c.add($)),c})},[]);return{target:t,open:u,close:d,isOpen:t!=null,state:n,excluded:i,toggleCase:v,toggleScenario:w}}var zn=k(xe(),1);function Zl(){return{committedChat:0,committedThinking:0,prevTurnActive:!1}}function eu(e,t,r){let n=[],o={...e};if(e.prevTurnActive&&!r&&t.thinkingLog.length>e.committedThinking){let a=t.thinkingLog.slice(e.committedThinking).reduce((d,v)=>d+(v.tookMs??0),0),u=Math.round(a/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}}function tu(e){let t=e;return t=t.replace(/@TS\{([^}]+)\}/g,"@S{$1}"),t=t.replace(/@TS-(\d+)/g,(r,n)=>`@S${parseInt(n,10)}.C1`),t=t.replace(/@TS(\d+)/g,(r,n)=>`@S${parseInt(n,10)}`),t=t.replace(/\\n/g,`
|
|
7
|
+
`),t}var rt=k(V(),1),ru=e=>e!==void 0&&/[A-Za-z0-9]/.test(e);function Wn(e){let t=[],r="",n=()=>{r&&(t.push({text:r}),r="")},o=(a,u,d)=>(a===0||!ru(e[a-1]))&&(u+d>=e.length||!ru(e[u+d])),i=0;for(;i<e.length;){let a=e.slice(i,i+2),u=e[i];if(a==="**"||a==="__"){let d=e.indexOf(a,i+2);if(d!==-1&&d>i+2&&(a==="**"||o(i,d,2))){n(),t.push({text:e.slice(i+2,d),bold:!0}),i=d+2;continue}}if(u==="`"){let d=e.indexOf("`",i+1);if(d!==-1&&d>i+1){n(),t.push({text:e.slice(i+1,d),code:!0}),i=d+1;continue}}if(u==="*"||u==="_"){let d=e.indexOf(u,i+1);if(d!==-1&&d>i+1&&(u==="*"||o(i,d,1))){n(),t.push({text:e.slice(i+1,d),italic:!0}),i=d+1;continue}}r+=u,i+=1}return n(),t.length===0&&t.push({text:""}),t}function Xn(e){return e.map((t,r)=>(0,rt.jsx)(s,{bold:t.bold,italic:t.italic,color:t.code?l.dim:void 0,children:t.text},r))}function xg(e){return e.split(`
|
|
8
|
+
`).map(t=>{if(t.trim()==="")return{kind:"blank"};let r=t.match(/^\s*[-*+]\s+(.*)$/);if(r)return{kind:"bullet",segs:Wn(r[1])};let n=t.match(/^\s*(\d+)\.\s+(.*)$/);if(n)return{kind:"numbered",n:n[1],segs:Wn(n[2])};let o=t.match(/^#{1,6}\s+(.*)$/);return o?{kind:"heading",segs:Wn(o[1])}:{kind:"para",segs:Wn(t)}})}function vg(e,t,r=""){switch(e.kind){case"blank":return(0,rt.jsx)(s,{children:r||" "},t);case"heading":return(0,rt.jsxs)(s,{bold:!0,children:[r,Xn(e.segs)]},t);case"bullet":return(0,rt.jsx)(b,{marginLeft:1,children:(0,rt.jsxs)(s,{children:[r,"\u2022 ",Xn(e.segs)]})},t);case"numbered":return(0,rt.jsx)(b,{marginLeft:1,children:(0,rt.jsxs)(s,{children:[r,`${e.n}. `,Xn(e.segs)]})},t);default:return(0,rt.jsxs)(s,{children:[r,Xn(e.segs)]},t)}}function nu({text:e}){let t=xg(tu(e));return(0,rt.jsxs)(b,{marginBottom:1,children:[(0,rt.jsx)(s,{color:l.generateAccent,children:"\u2503 "}),(0,rt.jsx)(b,{flexDirection:"column",children:t.map((r,n)=>vg(r,n))})]})}var Bi=k(V(),1);function bg(e){return e.kind==="thinking-summary"?(0,Bi.jsx)(s,{color:l.dim,children:e.text}):(0,Bi.jsx)(nu,{text:e.text})}function ou(e,t,r){let n=(0,zn.useRef)(Zl());(0,zn.useEffect)(()=>{let{items:o,next:i}=eu(n.current,e,t);n.current=i;for(let a of o)r(bg(a))})}var Ae=k(xe(),1);import{readFileSync as Sg,writeFileSync as wg,renameSync as Rg,mkdirSync as yg}from"fs";import{dirname as Tg}from"path";var Li=1,iu=()=>({schemaVersion:Li,numStartups:0,perHint:{}}),Yn=class{constructor(t=Ki){this.path=t;this.data=this.read()}data;read(){try{let t=JSON.parse(Sg(this.path,"utf-8"));return t.schemaVersion!==Li?iu():{schemaVersion:Li,numStartups:typeof t.numStartups=="number"?t.numStartups:0,perHint:t.perHint??{}}}catch{return iu()}}write(){try{yg(Tg(this.path),{recursive:!0});let t=`${this.path}.tmp`;wg(t,JSON.stringify(this.data,null,2)+`
|
|
9
|
+
`),Rg(t,this.path)}catch(t){process.stderr.write(`[hints] Failed to save state: ${t instanceof Error?t.message:String(t)}
|
|
10
|
+
`)}}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 Eg,writeFileSync as Cg,renameSync as Ig,mkdirSync as kg}from"fs";import{dirname as Ag}from"path";var su=1,_g=3600*1e3;function au(e,t=Date.now()){return e!==null&&t-e.fetchedAt<_g}function cu(e,t=_o(e)){try{let r=JSON.parse(Eg(t,"utf-8"));if(r.wrapperVersion!==su)return null;let{catalog:n}=Dn(r.catalog);return n?{catalog:n,fetchedAt:typeof r.fetchedAt=="number"?r.fetchedAt:0}:null}catch{return null}}function lu(e,t,r=_o(e)){try{kg(Ag(r),{recursive:!0});let n={wrapperVersion:su,writtenByVersion:it,fetchedAt:Date.now(),catalog:t},o=`${r}.tmp`;Cg(o,JSON.stringify(n,null,2)+`
|
|
11
|
+
`),Ig(o,r)}catch(n){process.stderr.write(`[hints] Failed to save catalog cache: ${n instanceof Error?n.message:String(n)}
|
|
12
|
+
`)}}var Pg=5e3;async function uu(e){let t=new AbortController,r=setTimeout(()=>t.abort(),Pg);try{let o=`${De(e.env).controllerBaseUrl}/public/hints/catalog?clientVersion=${encodeURIComponent(it)}&env=${e.env}`,i=await is(o,{headers:{Accept:"application/json"},signal:t.signal});if(!i.ok)return{status:"error"};let a=await i.json(),{catalog:u}=Dn(a);return u?{status:"ok",catalog:u}:{status:"error"}}catch{return{status:"error"}}finally{clearTimeout(r)}}var Kn=k(fi(),1);function du(e,t=it){let r=Kn.default.coerce(e??"");if(!r)return!0;let n=Kn.default.coerce(t);return n?Kn.default.gte(n,r):!0}var Bg={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 fu(e,t){let r=[],n=!0;for(let o of e){let i=Bg[o];if(!i){r.push(o),n=!1;continue}i(t)||(n=!1)}return{pass:n,unknown:r}}var Lg=3,$g=(e,t)=>e==="both"||e===t;function Dg(e,t,r){return e.boost?t.shownCount(e.id)<e.boost.maxShows&&r<Date.parse(e.boost.until):!1}var Og=e=>Number.isFinite(e)?1:Lg;function Ng(e,t){let r=e.filter(i=>i.weight>0);if(r.length===0)return null;let n=r.reduce((i,a)=>i+a.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 mu(e){let{catalog:t,store:r,mode:n,now:o,predicateCtx:i,rng:a}=e,u=[];if(!t.enabled)return{footer:null,skipped:u,boosted:!1};let d=[];for(let g of t.hints){if(!du(g.minVersion)){u.push({id:g.id,reason:"min_version"});continue}let T=fu(g.relevance,i);if(T.unknown.length>0){u.push({id:g.id,reason:"unknown_predicate"});continue}if(!T.pass||!$g(g.target,n))continue;if(g.retireAfterShows!==void 0&&r.shownCount(g.id)>=g.retireAfterShows){u.push({id:g.id,reason:"retired"});continue}if(r.sessionsSince(g.id)<g.cooldownSessions)continue;let c=Dg(g,r,o),p=(c?g.boost.weight:g.weight)*Og(r.sessionsSince(g.id));d.push({hint:g,weight:p,boosted:c})}let v=Ng(d.map(({hint:g,weight:T})=>({hint:g,weight:T})),a),w=v?d.find(g=>g.hint.id===v.id)?.boosted??!1:!1;return{footer:v,skipped:u,boosted:w}}function pu(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 gu(e){let[t,r]=(0,Ae.useState)(null),[n,o]=(0,Ae.useState)(0),i=(0,Ae.useRef)(null),a=(0,Ae.useRef)(!1),u=(0,Ae.useRef)(new Set),d=(0,Ae.useRef)(!1),v=(0,Ae.useRef)(null),w=(0,Ae.useRef)(null),g=(0,Ae.useRef)(null),T=(0,Ae.useRef)(!1),c=(0,Ae.useRef)(!1),p=(0,Ae.useRef)(null),$=(0,Ae.useRef)(!0);return(0,Ae.useEffect)(()=>()=>{$.current=!1},[]),(0,Ae.useEffect)(()=>{if(!e.enabled||!e.ready)return;let D=i.current??(i.current=e.store??new Yn),M=e.now??Date.now;if(p.current!==e.env&&(p.current=e.env,v.current=null,T.current=!1,c.current=!1,w.current=null,g.current=null),v.current===null){let ue=cu(e.env);v.current={catalog:ue?.catalog??null,fetchedAt:ue?.fetchedAt??0}}let O=v.current,H=au(O.catalog?{catalog:O.catalog,fetchedAt:O.fetchedAt}:null,M()),A=e.catalog??(H?O.catalog:null);if(a.current||(a.current=!0,D.bumpStartup()),!T.current&&(T.current=!0,!H)){let ue=e.env;(async()=>{let Ce=await uu({env:ue});Ce.status==="ok"&&(lu(ue,Ce.catalog),p.current===ue&&(v.current={catalog:Ce.catalog,fetchedAt:M()},$.current&&o(Le=>Le+1)))})()}if(!A){w.current=null,r(null);return}if(c.current||(c.current=!0,D.prune(A.hints.map(ue=>ue.id))),!(g.current!==e.chatMode)&&w.current!==null)return;g.current=e.chatMode;let ee=pu(e.log),re=e.rng??Math.random,fe=M(),W={config:e.config,tokenValid:e.tokenValid,numStartups:D.numStartups,platform:process.platform,sessionUsedGenerate:e.sessionUsedGenerate},ie=mu({catalog:A,store:D,mode:e.chatMode,now:fe,predicateCtx:W,rng:re});w.current=ie.footer,r(ie.footer),ie.footer&&!u.current.has(ie.footer.id)&&(u.current.add(ie.footer.id),D.recordShown(ie.footer.id),ee.shown({id:ie.footer.id,category:ie.footer.category,surface:"footer",boosted:ie.boosted})),d.current||(d.current=!0,ie.skipped.forEach(ue=>ee.skipped(ue)))},[e.enabled,e.ready,e.chatMode,e.env,n]),{footerHint:t}}var hu=k(xe(),1);import{readdir as jg}from"fs/promises";import{join as Vg,relative as Mg,extname as Fg}from"path";var Ug=new Set(["node_modules",".git"]),qg=e=>e.startsWith("output-");async function Jn(e,t,r={}){let n=r.limit??50,o=r.maxDepth??6,i=t.toLowerCase(),a=[];async function u(d,v){if(a.length>=n||v>o)return;let w;try{w=await jg(d,{withFileTypes:!0})}catch{return}for(let g of w){if(a.length>=n)return;if(g.name.startsWith(".")||Ug.has(g.name)||qg(g.name))continue;let T=Vg(d,g.name);if(g.isDirectory())await u(T,v+1);else if(g.isFile()){if(!wn.has(Fg(g.name).toLowerCase()))continue;let c=Mg(e,T);(!i||c.toLowerCase().includes(i))&&a.push(c)}}}return await u(e,0),a.slice(0,n)}var _e=k(V(),1);function xu({projectId:e,folderId:t,onSubmit:r,history:n,error:o,validationError:i,composeIdleHint:a,clearSeq:u,closedNotice:d,busy:v=!1}){let w=!!e&&!!t,g=(0,hu.useCallback)(T=>Jn(process.cwd(),T),[]);return(0,_e.jsxs)(b,{flexDirection:"column",children:[(0,_e.jsx)(b,{marginLeft:2,marginTop:1,children:!w&&(0,_e.jsxs)(s,{color:l.orange,children:["\u2691 ",(0,_e.jsx)(s,{color:l.muted,children:"project / folder not set \u2014 use "}),(0,_e.jsx)(s,{bold:!0,children:"/config"})]})}),i&&(0,_e.jsx)(b,{marginLeft:2,marginTop:1,children:(0,_e.jsx)(gt,{variant:"error",paddingY:0,children:(0,_e.jsx)(s,{color:l.red,children:i})})}),o&&(0,_e.jsx)(b,{marginLeft:2,marginTop:1,children:(0,_e.jsx)(gt,{variant:"error",paddingY:0,children:(0,_e.jsx)(s,{color:l.red,children:o})})}),d&&(0,_e.jsx)(b,{paddingX:1,children:(0,_e.jsx)(s,{color:l.dim,children:d})}),a&&(0,_e.jsx)(b,{marginLeft:2,marginTop:1,children:(0,_e.jsx)(s,{color:l.dim,children:a})}),(0,_e.jsx)(Nt,{inert:v,onSubmit:r,history:n,accent:l.generateAccent,commands:Mn("","generate"),clearSeq:u,clearOnSubmit:!1,mentionFiles:g,placeholder:v?"Processing files\u2026 (Ctrl+C to cancel)":"Describe what to generate... (/ = commands)",footerBindings:v?[{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 Tu=k(xe(),1);var Me=k(V(),1);function Hg(e){return e?`[${e[0].toUpperCase()}]`:""}var Gg=8;function Qn({scenarios:e,headline:t,activeSid:r}){let n=e.slice(0,Gg),o=e.length-n.length;return(0,Me.jsxs)(b,{flexDirection:"column",marginBottom:1,marginLeft:2,children:[t&&(0,Me.jsx)(b,{paddingX:1,children:(0,Me.jsx)(s,{color:l.generateAccent,bold:!0,children:t})}),(0,Me.jsxs)(gt,{title:`Scenarios (${e.length})`,titleColor:l.generateAccent,borderColor:l.generateAccent,paddingX:1,children:[n.map(i=>{let a=!!r&&i.sid===r,u=a?"\u2237":"\u2713",d=a?l.generateAccent:l.green,v=i.test_cases?.length??0;return(0,Me.jsxs)(b,{gap:1,children:[(0,Me.jsx)(s,{color:d,children:u}),(0,Me.jsx)(s,{color:l.dim,children:i.sid??`#${i.id}`}),(0,Me.jsx)(s,{children:i.title??"(untitled)"}),(0,Me.jsx)(s,{color:l.muted,children:Hg(i.priority)}),(0,Me.jsxs)(s,{color:l.dim,children:[v," case",v===1?"":"s"]})]},i.id)}),o>0&&(0,Me.jsx)(s,{color:l.muted,children:`\u22EE +${o} more`}),(0,Me.jsx)(b,{marginTop:1,children:(0,Me.jsxs)(s,{color:l.dim,children:[(0,Me.jsx)(s,{color:l.generateAccent,children:"/view"})," view/edit \xB7 ",(0,Me.jsx)(s,{color:l.generateAccent,children:"/save"})," save as runnable tests"]})})]})]})}var Pt=k(V(),1),Wg=5;function vu({thinking:e,expanded:t,thinkingDone:r,maxLines:n=Wg}){if(!t)return(0,Pt.jsxs)(b,{paddingX:1,children:[(0,Pt.jsx)(s,{color:l.dim,children:r?"\u2237 thinking complete ":"\u2237 thinking\u2026 "}),(0,Pt.jsx)(s,{color:l.muted,children:r?"(ctrl+t to view)":"(ctrl+t to show)"})]});let o=e.split(`
|
|
13
|
+
`),i=Math.max(0,o.length-n),a=i>0?o.slice(-n).join(`
|
|
14
|
+
`):e;return(0,Pt.jsxs)(gt,{variant:"default",paddingX:1,children:[i>0&&(0,Pt.jsxs)(s,{color:l.muted,children:["\u22EE (",i," earlier line",i===1?"":"s"," hidden)"]}),(0,Pt.jsx)(s,{color:l.dim,children:a}),r&&(0,Pt.jsx)(s,{color:l.muted,children:"\u2014 thinking complete"})]})}var br=k(V(),1),bu=24;function Xg(e){let t=Math.max(0,Math.min(100,e)),r=Math.round(t/100*bu);return{filled:"\u2588".repeat(r),empty:"\u2591".repeat(bu-r)}}function Su({pct:e}){let t=Xg(e);return(0,br.jsxs)(b,{paddingX:1,children:[(0,br.jsx)(s,{color:l.generateAccent,children:t.filled}),(0,br.jsx)(s,{color:l.muted,children:t.empty}),(0,br.jsx)(s,{color:l.dim,children:` ${e}%`})]})}var wu=k(xe(),1);var Bt=k(V(),1);function Ru(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 yu({state:e,history:t,turnActive:r,busy:n=!1,onClarificationAnswer:o,onClearError:i,onRefine:a,onSlash:u}){let d=(0,wu.useCallback)(w=>Jn(process.cwd(),w),[]),v=o?w=>{i?.(),o(w)}:void 0;return(0,Bt.jsxs)(Bt.Fragment,{children:[e.pendingClarification&&v&&(0,Bt.jsx)(b,{paddingX:1,marginTop:1,flexDirection:"column",children:(0,Bt.jsx)(Nt,{onSubmit:v,history:t,noHistory:!0,accent:l.generateAccent,placeholder:"Type your answer\u2026",submitVerb:"answer",footerBindings:[{keys:"\u21B5",label:"answer"}]})}),!(e.pendingClarification&&v)&&(r||n?(0,Bt.jsx)(Nt,{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,Bt.jsx)(Nt,{onSubmit:w=>{let g=Ru(w,r);g.kind==="slash"?u?.(g.text):g.kind==="refine"&&a?.(g.text)},history:t,noHistory:!0,accent:l.generateAccent,commands:Mn("","generate"),scenarios:e.scenarios,mentionFiles:d,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 lt=k(V(),1);function Eu({state:e,requestId:t,history:r,onClarificationAnswer:n,error:o,onClearError:i,turnActive:a,busy:u=!1,onRefine:d,onSlash:v}){let[w,g]=(0,Tu.useState)(!1),T=e.thinking.length===0&&e.thinkingLog.length>0,c=[...e.thinkingLog.map(p=>p.text),e.thinking].filter(p=>p.length>0).join(`
|
|
15
|
+
|
|
16
|
+
`);return Ie((p,$)=>{$.ctrl&&p==="t"&&g(D=>!D)}),(0,lt.jsxs)(b,{flexDirection:"column",children:[(0,lt.jsx)(b,{marginBottom:1,marginLeft:2,children:(0,lt.jsx)(vu,{thinking:c,expanded:w,thinkingDone:T})}),a&&(0,lt.jsx)(b,{marginLeft:2,children:(0,lt.jsx)(Su,{pct:e.progress})}),o&&(0,lt.jsx)(b,{marginLeft:2,marginTop:1,children:(0,lt.jsx)(gt,{variant:"error",paddingY:0,children:(0,lt.jsx)(s,{color:l.red,children:o})})}),e.scenarios.length>0&&(0,lt.jsx)(Qn,{scenarios:e.scenarios,headline:e.headline,activeSid:null}),(0,lt.jsx)(yu,{state:e,history:r,turnActive:a,busy:u,onClarificationAnswer:n,onClearError:i,onRefine:d,onSlash:v})]})}var _u=k(xe(),1);var Fe=k(V(),1);function zg(e,t){return(e.test_cases??[]).some(r=>!t.has(r.id))}function Cu({scenarios:e,cursor:t,excluded:r}){let n=e.reduce((o,i)=>o+(i.test_cases??[]).length,0);return(0,Fe.jsxs)(b,{flexDirection:"column",paddingX:1,children:[(0,Fe.jsxs)(s,{children:[(0,Fe.jsx)(s,{color:l.dim,children:"Generate \u203A "}),(0,Fe.jsx)(s,{color:l.generateAccent,children:"Scenarios"}),(0,Fe.jsx)(s,{color:l.dim,children:` ${e.length} scenarios \xB7 ${n} cases`})]}),(0,Fe.jsx)(s,{color:l.muted,children:"\u2500".repeat(60)}),(0,Fe.jsx)(b,{flexDirection:"column",marginY:1,children:e.map((o,i)=>{let a=i===t,u=zg(o,r);return(0,Fe.jsxs)(s,{children:[(0,Fe.jsx)(s,{color:l.generateAccent,children:a?"\u276F ":" "}),(0,Fe.jsx)(s,{color:l.generateAccent,children:`S${i+1}`}),(0,Fe.jsx)(s,{children:` ${o.title??"(untitled)"}`}),(0,Fe.jsx)(s,{color:l.dim,children:` [${o.priority??"-"}] ${(o.test_cases??[]).length} cases `}),(0,Fe.jsx)(s,{color:u?l.green:l.red,children:u?"\u2713":"\u2717"})]},o.id)})}),(0,Fe.jsx)(s,{color:l.muted,children:"\u2500".repeat(60)}),(0,Fe.jsx)(s,{color:l.dim,children:"\u2191\u2193 move \u21B5 open x remove esc back to chat"})]})}var Pe=k(V(),1);function Iu({scenario:e,scenarioIdx:t,cursor:r,excluded:n}){let o=e.test_cases??[],i=o.some(a=>!Rt(a));return(0,Pe.jsxs)(b,{flexDirection:"column",paddingX:1,children:[(0,Pe.jsxs)(s,{children:[(0,Pe.jsx)(s,{color:l.dim,children:"Generate \u203A Scenarios \u203A "}),(0,Pe.jsx)(s,{color:l.generateAccent,children:`S${t+1} ${e.title??"(untitled)"}`}),(0,Pe.jsx)(s,{color:l.dim,children:` ${o.length} cases`})]}),(0,Pe.jsx)(s,{color:l.muted,children:"\u2500".repeat(60)}),(0,Pe.jsx)(b,{flexDirection:"column",marginY:1,children:o.map((a,u)=>{let d=u===r,v=n.has(a.id);return(0,Pe.jsxs)(s,{children:[(0,Pe.jsx)(s,{color:l.generateAccent,children:d?"\u276F ":" "}),(0,Pe.jsx)(s,{color:l.generateAccent,children:`C${u+1}`}),(0,Pe.jsx)(s,{children:` ${a.title??"(untitled)"} `}),Rt(a)?(0,Pe.jsx)(s,{color:v?l.red:l.green,children:v?"\u2717 removed":"\u2713 included"}):(0,Pe.jsx)(s,{color:l.dim,children:"\u2713"})]},a.id)})}),(0,Pe.jsx)(s,{color:l.muted,children:"\u2500".repeat(60)}),i&&(0,Pe.jsx)(s,{color:l.dim,children:"gray \u2713 = non-functional \xB7 won't be saved by /save"}),(0,Pe.jsx)(s,{color:l.dim,children:"\u2191\u2193 move \u21B5 view detail x remove case \u2190 / esc back"})]})}var to=k(xe(),1);function Zn(e,t){let r=Math.max(1,t),n=[];for(let o of e.split(`
|
|
17
|
+
`)){let i=o.split(/\s+/).filter(d=>d.length>0);if(i.length===0){n.push("");continue}let a="",u=()=>{a&&(n.push(a),a="")};for(let d of i){for(;d.length>r;)u(),n.push(d.slice(0,r)),d=d.slice(r);a===""?a=d:a.length+1+d.length<=r?a+=" "+d:(u(),a=d)}u()}return n}function ku(e,t,r,n){let o=Math.max(20,n),i=[];if(r){for(let u of Zn(r,o))i.push({text:u,tone:"meta"});i.push({text:"",tone:"blank"})}let a=(u,d)=>{let v=d?.trim();if(v){i.push({text:u,tone:"label"});for(let w of Zn(v,o-2))i.push({text:" "+w,tone:"text"});i.push({text:"",tone:"blank"})}};return a("Description",e?.description),a("Preconditions",e?.preconditions),t.length>0&&(i.push({text:"Steps",tone:"label"}),t.forEach((u,d)=>{let v=`${d+1}. `;Zn(u.step||"",Math.max(1,o-v.length)).forEach((T,c)=>{c===0?i.push({text:T,tone:"step",accent:v}):i.push({text:" ".repeat(v.length)+T,tone:"step"})});let g=u.expected?.trim();if(g){let T=" \u2192 ",c=" ";Zn(g,Math.max(1,o-T.length)).forEach((p,$)=>i.push({text:($===0?T:c)+p,tone:"expected"}))}})),i}function eo(e,t,r){let n=Math.max(0,t-r);return Math.max(0,Math.min(e,n))}var Be=k(V(),1),Yg=7;function Kg(e){return e==="text"||e==="step"?void 0:l.dim}function Au({scenario:e,scenarioIdx:t,caseIdx:r,excluded:n,getStatus:o,getResult:i}){let a=(e.test_cases??[])[r],u=a?n.has(a.id):!1,d=a?Rt(a):!0,v=a&&o?o(a.id):void 0,w=v==="done"?(0,Be.jsx)(s,{color:l.generateAccent,children:"ready"}):v==="error"?(0,Be.jsx)(s,{color:l.red,children:"failed \u2192 raw steps"}):v==="pending"?(0,Be.jsx)(s,{color:l.dim,children:"bifurcating\u2026"}):null,g=v==="done"&&a&&i?i(a.id):void 0,T=g?g.sub_objectives.map(fe=>({step:fe.objective,expected:""})):ra(a?.manual_steps),c=[a?.priority&&`Priority ${a.priority}`,a?.polarity&&`Polarity ${a.polarity}`,a?.tags&&`Tags ${a.tags}`].filter(Boolean).join(" \xB7 "),{stdout:p}=sr(),$=Math.max(20,(p?.columns??80)-4),D=Math.max(3,(p?.rows??24)-Yg),M=ku(a,T,c,$),[O,H]=(0,to.useState)(0);(0,to.useEffect)(()=>{H(0)},[a?.id]);let A=eo(O,M.length,D);Ie((fe,W)=>{if(W.upArrow){H(ie=>eo(ie-1,M.length,D));return}if(W.downArrow){H(ie=>eo(ie+1,M.length,D));return}});let F=M.slice(A,A+D),re=M.length>D?` ${A+1}-${Math.min(A+D,M.length)}/${M.length}`:"";return(0,Be.jsxs)(b,{flexDirection:"column",paddingX:1,children:[(0,Be.jsxs)(s,{children:[(0,Be.jsx)(s,{color:l.dim,children:`Generate \u203A S${t+1} \u203A `}),(0,Be.jsx)(s,{color:l.generateAccent,children:`C${r+1} ${a?.title??"(untitled)"}`}),w?(0,Be.jsx)(s,{children:" "}):null,w]}),d?(0,Be.jsx)(s,{color:u?l.red:l.green,children:u?"\u2717 removed":"\u2713 included"}):(0,Be.jsx)(s,{color:l.dim,children:"\u2713 non-functional \xB7 not saved by /save"}),(0,Be.jsx)(s,{color:l.muted,children:"\u2500".repeat(60)}),(0,Be.jsx)(b,{flexDirection:"column",marginTop:1,children:F.map((fe,W)=>(0,Be.jsxs)(s,{color:Kg(fe.tone),children:[fe.accent?(0,Be.jsx)(s,{color:l.generateAccent,children:fe.accent}):null,fe.text]},A+W))}),(0,Be.jsx)(s,{color:l.muted,children:"\u2500".repeat(60)}),(0,Be.jsx)(s,{color:l.dim,children:`\u2191\u2193 scroll \u2190 / esc back x remove${re}`})]})}var ro=k(V(),1);function Pu({scenarios:e,target:t,onClose:r,excluded:n,onToggleCase:o,onToggleScenario:i,getStatus:a,getResult:u}){let d=e.map(c=>(c.test_cases??[]).length),[v,w]=(0,_u.useReducer)((c,p)=>Pi(c,p,d),Gn(t)),g=()=>{v.level==="scenarios"?r():w({type:"back"})};Ie((c,p)=>{if(p.escape||p.leftArrow){g();return}if(v.level!=="detail"){if(p.return){w({type:"enter"});return}if(p.upArrow){w({type:"move",delta:-1});return}if(p.downArrow){w({type:"move",delta:1});return}}if(c==="x"){if(v.level==="scenarios"){let $=(e[v.cursor]?.test_cases??[]).map(D=>D.id);$.length>0&&i($)}else{let $=v.level==="cases"?v.cursor:v.caseIdx,D=(e[v.scenarioIdx]?.test_cases??[])[$];D&&o(D.id)}return}});let T=e[v.scenarioIdx];if(v.level==="scenarios"||T===void 0){let c=v.level==="scenarios"?v.cursor:0;return(0,ro.jsx)(Cu,{scenarios:e,cursor:c,excluded:n})}return v.level==="cases"?(0,ro.jsx)(Iu,{scenario:T,scenarioIdx:v.scenarioIdx,cursor:v.cursor,excluded:n}):(0,ro.jsx)(Au,{scenario:T,scenarioIdx:v.scenarioIdx,caseIdx:v.caseIdx,excluded:n,getStatus:a,getResult:u})}var no=k(V(),1);function Bu({tcg:e,gm:t,history:r,tuiConfig:n,browse:o}){return o?(0,no.jsx)(Pu,{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,no.jsx)(xu,{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,no.jsx)(Eu,{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 Lu=k(xe(),1);var Ct=k(V(),1);function Jg({message:e,confirmLabel:t,choice:r}){return(0,Ct.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.dim,paddingX:1,children:[(0,Ct.jsx)(s,{bold:!0,children:e}),(0,Ct.jsxs)(b,{marginTop:1,children:[(0,Ct.jsx)(s,{color:r==="yes"?l.red:l.dim,children:`\u276F ${t}`}),(0,Ct.jsx)(s,{children:" "}),(0,Ct.jsx)(s,{color:r==="no"?l.green:l.dim,children:"\u276F No"})]}),(0,Ct.jsx)(s,{color:l.dim,children:"\u2190 \u2192 choose \xB7 \u21B5 confirm \xB7 esc cancel"})]})}function $u({message:e,onConfirm:t,onCancel:r,confirmLabel:n="Yes, end"}){let[o,i]=(0,Lu.useState)("no");return Ie((a,u)=>{(u.leftArrow||u.rightArrow)&&i(d=>d==="yes"?"no":"yes"),u.return&&(o==="yes"?t:r)(),u.escape&&r()}),(0,Ct.jsx)(Jg,{message:e,confirmLabel:n,choice:o})}var Qg=null;function Du(e){Qg=e}import{join as Ut,resolve as nh}from"path";var oo=k(V(),1);function Ou({status:e,steps:t,duration:r,creditsConsumed:n,reason:o}){let i=e==="passed",a=i?l.green:l.red,u=i?"\u2713":"\u2717",d=i?"Passed":"Failed",v=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`:"",g=!i&&o?` \xB7 ${o}`:"";return(0,oo.jsxs)(b,{children:[(0,oo.jsxs)(s,{bold:!0,color:a,children:[u," ",d]}),(0,oo.jsxs)(s,{color:l.dim,children:[" ","\xB7 ",t," steps \xB7 ",v,w,g]})]})}var ju=k(V(),1);function Nu(){return(0,ju.jsx)(s,{color:l.dim,children:"Continue below \xB7 /new fresh session \xB7 /summary view details \xB7 Ctrl+C exit"})}var io=k(xe(),1);import{readFileSync as rh}from"fs";var nt=k(xe(),1);function Zg(e){let t="message",r=[];for(let o of e.split(`
|
|
18
|
+
`))o.startsWith("event:")?t=o.slice(6).trim():o.startsWith("data:")&&r.push(o.slice(5).replace(/^ /,""));let n=r.join(`
|
|
19
|
+
`);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,`
|
|
20
|
+
`)}:null}async function*Vu(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:a}=await r.read();if(i)break;o+=n.decode(a,{stream:!0});let u;for(;(u=o.indexOf(`
|
|
21
|
+
|
|
22
|
+
`))!==-1;){let d=Zg(o.slice(0,u));if(o=o.slice(u+2),d&&(yield d,d.type==="done"))return}}}finally{await r.cancel().catch(()=>{})}}var eh=50,th=3;function Mu(){let[e,t]=(0,nt.useState)(""),r=(0,nt.useRef)(""),[n,o]=(0,nt.useState)(!1),[i,a]=(0,nt.useState)(!1),u=(0,nt.useRef)(null);(0,nt.useEffect)(()=>{if(!i)return;let g=setInterval(()=>{t(T=>{let c=r.current;return T.length>=c.length?T:c.slice(0,Math.min(c.length,T.length+th))})},eh);return()=>clearInterval(g)},[i]);let d=(0,nt.useCallback)(g=>{u.current?.abort();let T=new AbortController;u.current=T,a(!0),r.current="",t(""),o(!0),(async()=>{try{for await(let c of Vu({...g,signal:T.signal})){if(T.signal.aborted)return;if(c.type==="delta")r.current+=c.text;else if(c.type==="usage")g.onUsage?.(c.creditsConsumed);else if(c.type==="done"||c.type==="error"){o(!1);return}}o(!1)}catch{o(!1)}})()},[]),v=(0,nt.useCallback)(()=>{u.current?.abort(),o(!1),a(!1),r.current="",t("")},[]);(0,nt.useEffect)(()=>()=>u.current?.abort(),[]);let w=n||e.length<r.current.length;return{text:e,active:n,visible:i,revealing:w,start:d,stop:v}}function Fu({resolve:e,hostIsTTY:t}){let r=Mu(),n=(0,io.useRef)(0),o=(0,io.useCallback)(i=>{if(!t())return;let a=e();if(!a)return;let u;try{u=rh(i.screenshot_path).toString("base64")}catch{return}r.start({url:`${a.controllerBaseUrl}/v16-alpha/stream`,authHeader:a.authHeader,sessionId:a.sessionId,onUsage:d=>{n.current+=d},body:{node:"visualizer",sub_node:"describe",session_id:a.sessionId,context_json:{objective:i.objective,query:i.recent_actions.map(d=>`${d.step}: ${d.action_type} ${d.instruction}`).join(`
|
|
23
|
+
`),screenshot_b64:u}}})},[e,t,r]);return{describe:r,onDescribe:o,creditsRef:n}}var so=e=>({kind:"login",env:e}),$i=e=>({kind:"switch",env:e}),Uu=(e,t)=>e?{kind:"switch",env:t}:{kind:"logout"};async function qu(e){await new Lr(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=k(V(),1);function Ay({localMode:e=!1,codeExport:t,codeLanguage:r,skipCodeValidation:n,updatePromise:o,migrationResult:i,sessionName:a,initialChatMode:u,initialObjective:d,initialGenerateLimits:v}={}){Yi();let w=(0,y.useRef)(new hn),[g,T]=(0,y.useState)(0),c=w.current,[p]=(0,y.useState)(()=>new ur),$=(0,y.useRef)(0),D=(0,y.useCallback)(()=>`msg-${++$.current}`,[]),[M,O]=(0,y.useState)(!1),[H,A]=(0,y.useState)(null),[F,ee]=(0,y.useState)(!1),[re,fe]=(0,y.useState)(0),[W,ie]=(0,y.useState)(!1),[ue,Ce]=(0,y.useState)(null),[Le,et]=(0,y.useState)(null),qt=(0,y.useRef)(null),[tt,xt]=(0,y.useState)(null),[Sr,wr]=(0,y.useState)(xn()),[Ge,Ke]=(0,y.useState)(null),[$e,zr]=(0,y.useState)([]),[Zt,Ht]=(0,y.useState)(!1),[Rr,Yr]=(0,y.useState)(!1),[yr,Kr]=(0,y.useState)(null),[Gt,er]=(0,y.useState)(null),[Wt,Tr]=(0,y.useState)(null),[Jr,ao]=(0,y.useState)(null),X=(0,y.useRef)(null),Q=(0,y.useRef)(null),Y=(0,y.useRef)(0),G=(0,y.useRef)(null),ce=(0,y.useRef)(!1),we=(0,y.useRef)(null),ut=(0,y.useRef)(Is()),We=(0,y.useRef)(null),ae=(0,y.useRef)(!1),Je=(0,y.useRef)(""),tr=(0,y.useRef)(null),Lt=(0,y.useRef)(null),Er=(0,y.useRef)({}),Xt=(0,y.useRef)(null),{append:Re}=es(),le=(0,y.useCallback)(m=>Re((0,R.jsx)(b,{paddingX:1,children:m})),[Re]),[rr,vt]=(0,y.useState)("booting"),[Hu,Gu]=(0,y.useState)([]),[Wu,co]=(0,y.useState)(!1),[Di,Xu]=(0,y.useState)(!1),[Qr,zu]=(0,y.useState)("chat"),[bt,Cr]=(0,y.useState)(null),[Zr,Oi]=(0,y.useState)(null),[Ir,Ni]=(0,y.useState)(!1),[kr,en]=(0,y.useState)(!1),ji=(0,y.useRef)(()=>{}),Yu=(0,y.useCallback)((m,x)=>ji.current(m,x),[]),ne=$l({log:Yu});ou(ne.state,ne.turnActive,le);let lo=(0,y.useRef)(!1),$t=(0,y.useCallback)(()=>{lo.current||ne.state.scenarios.length!==0&&(lo.current=!0,le((0,R.jsx)(Qn,{scenarios:ne.state.scenarios,activeSid:null})))},[ne.state.scenarios,le]);(0,y.useEffect)(()=>{ne.isSessionClosed&&$t()},[ne.isSessionClosed,$t]);let[tn,Ar]=(0,y.useState)(null),[me,_r]=(0,y.useState)({headless:!1,maxSteps:50,timeout:0,cdpEndpoint:"",wsEndpoint:"",useCft:!1}),Ku=Bo(),Ju=Bo(Qi),S=wl(),rn=Rl(),ot=(0,y.useMemo)(()=>({auth:{initResolver:m=>S.initResolver(m,(x,f,h,E)=>w.current.log(x,f,h,E)),getResolver:()=>S.getResolver(),getBasicAuth:()=>S.getBasicAuth(),getToken:()=>S.getToken()},getSession:()=>w.current,log:(m,x,f,h)=>w.current.log(m,x,f,h),state:{getTmsCredsCache:()=>Ge,setTmsCredsCache:Ke,identityServicesRef:Q,screenshotQueueRef:X},exit:{registerCleanup:St,setExitRemoteLogger:ls},options:{skipScreenshotQueue:e}}),[S.initResolver,S.getResolver,S.getBasicAuth,S.getToken,Ge,e]),Qu=(0,y.useCallback)((m,x,f,h)=>{let E=X.current;if(!E)return;if(G.current&&h){ut.current.track(ks(G.current.packTestDir,h,E,(U,q,oe,se)=>c.log(U,q,oe,se)));return}let L=Y.current+x;As(c.sessionDir,L,m,E,(U,q,oe,se)=>c.log(U,q,oe,se),f)},[c]),Zu=(0,y.useCallback)((m,x,f)=>{c.logStep(m,x,f)},[c]),ed=(0,y.useCallback)(m=>Xt.current?.setStepText(m),[]),td=(0,y.useCallback)(()=>Xt.current?.setStepComplete(),[]),{describe:Pr,onDescribe:rd,creditsRef:uo}=Fu({hostIsTTY:()=>!!process.stdout.isTTY,resolve:()=>{let m=S.getResolvedBasicAuth();if(!m)return null;let x=De(S.creds.getDefaultEnv());return{authHeader:os(m.username,m.access_key),sessionId:c.sessionId,controllerBaseUrl:x.controllerBaseUrl}}}),_=vs(Qu,Zu,ed,td,rd);(0,y.useEffect)(()=>{_.isRunning||Pr.stop()},[_.isRunning,Pr.stop]);let[I,ge]=(0,y.useState)(()=>p.load()),[,nd]=(0,y.useState)(0),Qe=(0,y.useCallback)(()=>nd(m=>m+1),[]),[P,ye]=(0,y.useState)(null),nr=S.creds.getActiveProfile(),de=S.creds.getDefaultEnv(),dt=(0,y.useCallback)((m,x)=>{let f=m?S.creds.loadProfileConfig(m,x):null;p.save({project_id:f?.project_id??null,project_name:f?.project_name??null,folder_id:f?.folder_id??null,folder_name:f?.folder_name??null}),ge(p.load())},[S.creds,p]),fo=(0,y.useCallback)(async(m,x)=>{let f=S.getResolver();if(!f)return null;let h=f.cached??await f.resolve();if(!h)return null;let E=De(x),L=new Lr(E.tmsBaseUrl,h.username,h.access_key);try{let q=(await L.listProjects()).find(se=>se.name==="KaneAI Generated");if(q)return{id:q.project_id,name:q.name};let oe=await L.createProject("KaneAI Generated");return{id:oe.id,name:oe.name}}catch{return null}},[S]),mo=(0,y.useCallback)(async(m,x)=>{let f=S.getResolver();if(!f)return null;let h=f.cached??await f.resolve();if(!h)return null;let E=De(m),L=new Lr(E.tmsBaseUrl,h.username,h.access_key);try{let q=(await L.listFolders(x)).find(se=>se.name==="Untitled");if(q)return{id:q.id,name:q.name};let oe=await L.createFolder(x,"Untitled");return{id:oe.id,name:oe.name}}catch{return null}},[S]);(0,y.useEffect)(()=>{F||(c.start({model:I.model,environment:de,profile:nr}),a&&c.setSessionName(a),ee(!0))},[c,F,I.model,de,nr,a]);let Vi=(0,y.useRef)(!1);(0,y.useEffect)(()=>{if(!F||Vi.current)return;Vi.current=!0;let m=a?[{label:"session",value:a},{label:"test",value:Po(Ut(process.cwd(),".testmuai","tests",`${a}_test.md`))},{label:"output",value:Po(Ut(process.cwd(),".testmuai","tests",`output-${a}`))}]:[{label:"session",value:"ephemeral"},{label:"note",value:"use /name <name> to persist this session"}];le((0,R.jsx)($o,{title:"Recording",titleColor:"#ff9500",rows:m}))},[F,a,le]);let Mi=(0,y.useRef)(!1);(0,y.useEffect)(()=>{if(!M||Mi.current||!F)return;Mi.current=!0;let m=ot.state.getTmsCredsCache();if(!m){c.log("warn","BOOT_RESOLVE_FAILED","Boot done but tmsCredsCache empty \u2014 non-controller APIs may fail");return}wt({kind:"boot",tmsCreds:m,env:de},ot).then(x=>{x&&(m.org_id!==void 0&&c.setOrgId(String(m.org_id)),c.setPlan(m.plan??null),c.setUserIdentity(m.username??null,m.email??null),c.log("info","BOOT_RESOLVE_OK","Boot identity attached",{username:m.username,org_id:m.org_id,plan:m.plan??null}))}).catch(x=>{c.log("error","BOOT_RESOLVE_ERROR","Boot identity attach error",{error:x instanceof Error?x.message:String(x)})})},[M,F,ot,de,c]);let zt=(0,y.useCallback)(async()=>{if(Ge)return c.log("info","TMS_CREDS_CACHED","Using cached TMS credentials",{username:Ge.username,org_id:Ge.org_id}),Ge;let m=await S.resolveBasicAuth();return m?(c.log("info","TMS_CREDS_OK","TMS credentials resolved",{username:m.username,org_id:m.org_id,user_id:m.user_id}),Ke(m)):c.log("warn","TMS_CREDS_FAILED","No TMS credentials resolved"),m},[S,Ge,c]),nn=(0,y.useCallback)(m=>{le((0,R.jsx)($o,{title:"\u24D8 Auto-configured",titleColor:l.orange,rows:[{label:"project",value:`${m.projectName} (${m.projectId})`},{label:"folder",value:`${m.folderName} (${m.folderId})`},{label:"change with",value:(0,R.jsxs)(b,{flexDirection:"column",children:[(0,R.jsx)(s,{color:l.dim,children:"kane-cli config project <id>"}),(0,R.jsx)(s,{color:l.dim,children:"kane-cli config folder <id>"})]})}]}))},[le]),on=(0,y.useCallback)(async()=>{let m=await zt();if(!m)return c.log("warn","PROJECT_FAILED","No TMS credentials for project/folder gate"),null;let x=S.creds.getActiveProfile()??"default",f=S.creds.getDefaultEnv(),h=await us({creds:S.creds,config:p,profile:x,env:f,tmsCreds:{username:m.username,access_key:m.access_key},isLocal:e,log:(E,L,U,q)=>c.log(E,L,U,q),onAnnounce:nn});return h.status==="ok"?{projectId:h.projectId,folderId:h.folderId}:null},[zt,p,c,S.creds,e,nn]),be=(0,y.useCallback)(m=>{let x=D(),f={...m,id:x};le((0,R.jsx)(hl,{entry:f}))},[D,le]),B=(0,y.useCallback)((m,x,f,h,E)=>{le((0,R.jsx)(Il,{status:m,command:x,message:f,details:h,accentColor:E})),x==="/save"&&m==="ok"&&le((0,R.jsx)(b,{marginLeft:2,children:(0,R.jsxs)(s,{color:l.dim,children:["\u2192 Run ",(0,R.jsx)(s,{color:l.generateAccent,children:"/testmd"})," to list your saved tests."]})}))},[le]),Fi=(0,y.useRef)(()=>{}),Dt=Ql(ne.state.scenarios.map(m=>(m.test_cases??[]).length)),od=(0,y.useCallback)(async()=>{let m=await on();return ge(p.load()),m},[on,p]),ft=Jl({tcg:ne,initialChatMode:u,tuiConfig:I,auth:S,session:c,runner:_,appendStatic:le,handleInput:m=>Fi.current(m),freezeTcgArtifact:$t,rearmArtifactFreeze:()=>{lo.current=!1},openSwitchConfirm:m=>Ar({reason:"switch",to:m}),emitFeedback:B,excluded:Dt.excluded,openBrowse:Dt.open,initialGenerateLimits:v,ensureProjectAndFolder:od,config:p});ji.current=ft.tcgLog;let{chatMode:ve,tcgError:ih,tcgValidationError:sh,composeIdleHint:ah,inputClearSeq:id,handleGenerateSubmit:sd,flashComposeHint:sn,setTcgError:ch}=ft,ad=I.hints_enabled!==!1&&process.env.KANEAI_HINTS_DISABLED!=="1"&&!!process.stdout.isTTY&&!!process.stdin.isTTY&&process.env.KANE_SCREEN_READER!=="1",Ui=(0,y.useRef)(!1);ve==="generate"&&(Ui.current=!0);let{footerHint:cd}=gu({enabled:ad,ready:rr==="ready",env:de,config:I,tokenValid:S.tokenValid,chatMode:ve,sessionUsedGenerate:Ui.current,log:(m,x,f,h)=>w.current.log(m,x,f,h)}),po=(0,y.useCallback)(async(m,x)=>{let f=ae.current?null:Bs({flag:x,configDefault:I.default_url}),h=Hs({objective:m,globalDir:Ut(Xe,"variables"),localDir:Ut(process.cwd(),".testmuai","variables")}),E=c.nextRunIndex();Y.current=E,Je.current=h.auteurObjective,uo.current=0,c.logRunStart(E,h.auteurObjective,f??""),c.setFirstRun(h.auteurObjective,f??"");let L=S.getResolvedBasicAuth(),U=L,q=null;if(!U&&(q=await S.getToken(),!q)){be({type:"error",text:"Not authenticated. Run /login first."});return}let oe={basicAuth:L??null,token:q,resolver:S.getResolver(),resolvedCreds:null};tr.current=oe;let se=S.creds.getActiveProfile()??"default",Te=S.creds.getDefaultEnv();cs(S.creds,p,se,Te,(Se,Ze,kt,pt)=>c.log(Se,Ze,kt,pt));let Co=p.load();if(ge(Co),E===0&&!e){c.log("info","ATM_CREATE_START","Creating test via ATM endpoint",{run_index:0});let Se=await on(),Ze=p.load();ge(Ze);let kt=De(de),pt=U?{username:U.username,access_key:U.access_key}:await zt();if(pt){let mn=await zs({tmsBaseUrl:kt.tmsBaseUrl,auth:{username:pt.username,access_key:pt.access_key},objective:h.auteurObjective,url:f??"",projectId:Se?.projectId??Ze.project_id??"",folderId:Se?.folderId??Ze.folder_id??"",hasCustomProfile:!!I.chrome_profile_path,log:(Kt,ko,pd,gd)=>c.log(Kt,ko,pd,gd)});mn&&(c.setTestId(mn),Se?.projectId&&c.setProjectId(Se.projectId))}}let mt=null;if(me.useCft)be({type:"info",text:"CfT mode: Playwright will manage browser"});else if(me.wsEndpoint)be({type:"info",text:`WS endpoint: ${me.wsEndpoint.slice(0,60)}...`});else if(me.cdpEndpoint)be({type:"info",text:`CDP endpoint: ${me.cdpEndpoint}`});else{be({type:"info",text:"Starting Chrome..."});try{mt=await rn.ensureChrome(f??void 0)}catch(Ze){be({type:"error",text:gs(Ze)});return}c.logChromeLaunch(mt.port,mt.cdpEndpoint);let Se=xs({headless:me.headless,cdpEndpoint:mt.cdpEndpoint,chromePid:mt.process.pid});Se&&(Xt.current=Se,St("marker-overlay",()=>Se.kill()))}c.setAuteurVariables(h.auteur),Lt.current=h;let Io=U&&!e?await Gs({variables:h,auth:U,orgId:String((await zt())?.org_id??""),env:de,localMode:e,log:(Se,Ze,kt,pt)=>c.log(Se,Ze,kt,pt)}):{};Er.current=Io;let Yt=Uo(Ut(Xe,"global-memory.md")),It=Uo(Ut(process.cwd(),".testmuai","context.md")),or=mt?{cdpEndpoint:mt.cdpEndpoint,instance:mt,tempDir:null}:me.wsEndpoint?{wsEndpoint:me.wsEndpoint,instance:null,tempDir:null}:me.cdpEndpoint?{cdpEndpoint:me.cdpEndpoint,instance:null,tempDir:null}:{instance:null,tempDir:null};if(E===0){let Se={mode:I.mode,max_steps:me.maxSteps,timeout:me.timeout>0?me.timeout:void 0,target:mt?"chrome":me.cdpEndpoint?"cdp":me.wsEndpoint?"ws":void 0,chrome_profile:I.chrome_profile_path||void 0,cdp_endpoint:me.cdpEndpoint||void 0,ws_endpoint:me.wsEndpoint||void 0,headless:me.headless,global_context:Yt??void 0,local_context:It??void 0,variables:Object.keys(h.auteur).length>0?h.auteur:void 0};c.setResolvedGlobal(Se)}ce.current||(ce.current=!0,G.current=await ws({objectiveOrName:c.sessionName??m,sessionId:c.sessionId,title:c.sessionName??m,producerVersion:it,pid:process.pid,surfaces:f?[f]:void 0,packRootDir:Ut(c.sessionDir,"evidence")})),we.current||(we.current=Ss(or.cdpEndpoint),we.current());let ir=qs(h.auteur,h.auteurObjective),Br=Us({objective:h.auteurObjective,url:f??void 0,requireStartUrl:!ae.current&&f===null,model:I.model,chrome:or,auth:oe,sessionId:c.sessionId,runIndex:E,windowSize:I.window_size,maxSteps:me.maxSteps,headless:me.headless,networkWs:I.network_ws,networkSse:I.network_sse,bugDetection:I.bug_detection,variables:Object.keys(ir).length>0?ir:void 0,globalContext:Yt??void 0,localContext:It??void 0,sessionContext:c.getContext(),evidence:Rs(G.current)});f&&A(f),Ce(null),We.current=null,_.startRun(Br,{environment:de,mode:I.mode,assertionMode:I.assertion_mode,log:(Se,Ze,kt,pt)=>c.log(Se,Ze,kt,pt)}),fe(Se=>Se+1)},[S,rn,p,I,c,de,_,be,me,on,zt]),ld=(0,y.useCallback)(async m=>{let x=nh(m),f=Ns(x),h=new hn,E=S.getResolvedBasicAuth(),L=null;E||(L=await S.getToken());let U={basicAuth:E??null,token:L,resolver:S.getResolver(),resolvedCreds:null},q=de,oe=De(q),se=S.creds.getActiveProfile()??"default";return{path:x,cwd:process.cwd(),opts:{},isAgent:!1,disableAskUser:!1,resolved:f,resolvedAuth:U,cliOverrides:{},environment:q,envConfig:oe,profile:se,model:"v16-alpha",creds:S.creds,configStore:p,session:h,skipGlobalRemoteLogger:!0,onAnnounce:nn}},[S,p,de,nn]),pe=Ll({buildInput:ld,remoteLogger:null}),go=(0,y.useRef)(null);(0,y.useEffect)(()=>{if(_.bifurcationInfo&&_.bifurcationInfo!==go.current){go.current=_.bifurcationInfo;let{flows:m,isSingleFlow:x}=_.bifurcationInfo;x&&m.length===1&&m[0]?c.log("info","OBJECTIVE_REWRITTEN","Objective rewritten",{objective:m[0]}):!x&&m.length>1&&c.log("info","BIFURCATION","Objective bifurcated into flows",{flow_count:m.length})}},[_.bifurcationInfo,c,be]);let ho=y.default.useRef(null),xo=y.default.useRef(0),vo=y.default.useRef(0);(0,y.useEffect)(()=>{if(_.lastRunEnd&&_.lastRunEnd!==ho.current){ho.current=_.lastRunEnd,ae.current=!0;let{status:m,duration:x,summary:f,reason:h,context:E}=_.lastRunEnd,{passed:L,failed:U,total:q}=bs(_.steps);xo.current+=q,vo.current+=x??0;let oe=_.lastRunEnd?.credits_consumed,se=oe!=null||uo.current>0?(oe??0)+uo.current:void 0;Ce({status:m,duration:x??0,summary:f??"",stepsPassed:L,stepsFailed:U,stepsTotal:q,reason:h,finalState:_.lastRunEnd?.final_state,creditsConsumed:se}),c.logRunEnd(Y.current,m,x,f,_.lastRunEnd?.result_code);let Te=_.bifurcationInfo,Co=Te&&!Te.isSingleFlow?Te.flows:null,mt=ss(_.lastRunEnd,Y.current,Co),Io=as(_.lastRunEnd,Je.current,Y.current,mt);c.addRunResult(Io,_.lastRunEnd?.total_runs),No(G.current,_.getEvidenceState(),_.lastRunEnd);let Yt=_.lastRunEnd?.per_flow_metadata;if(Te&&!Te.isSingleFlow&&Yt&&Yt.length>1)for(let It=0;It<Yt.length;It++){let or=Yt[It],ir=_.steps[It],Br=ir?.children??[],Se=Br.filter(Kt=>Kt.status==="passed").length,Ze=Br.filter(Kt=>Kt.status==="failed").length,kt=Br.reduce((Kt,ko)=>Kt+(ko.duration??0),0),pt=ir?.status==="failed"?"failed":"passed",mn=Te.flows[It]??ir?.objective??Je.current;c.addFlow({runIndex:Y.current,flowId:Te.flows[It],objective:mn,status:pt,summary:or.summary??"",duration:kt,steps:Se+Ze,stepsPassed:Se,stepsFailed:Ze,reason:or.error_message??void 0,creditsConsumed:or.credits_consumed??void 0})}else c.addFlow({runIndex:Y.current,objective:Je.current,status:m,summary:f??"",duration:x??0,steps:q,stepsPassed:L,stepsFailed:U,reason:h,creditsConsumed:_.lastRunEnd?.credits_consumed})}},[_.lastRunEnd,c,be]);let bo=(0,y.useRef)(null);(0,y.useEffect)(()=>{_.askingUser&&(bo.current=_.askingUser)},[_.askingUser]);let So=(0,y.useRef)(null);(0,y.useEffect)(()=>{if(ue&&!_.isRunning&&_.lastRunEnd){if(So.current===_.lastRunEnd)return;So.current=_.lastRunEnd,le((0,R.jsxs)(b,{flexDirection:"column",children:[(0,R.jsx)(Ou,{status:ue.status,steps:ue.stepsTotal,duration:ue.duration,creditsConsumed:ue.creditsConsumed,reason:ue.reason}),(0,R.jsx)(Nu,{})]})),Ce(null)}},[ue,_.isRunning,_.lastRunEnd,le]);let qi=(0,y.useRef)(null);(0,y.useEffect)(()=>{if(pe.runSummary&&!pe.running){if(qi.current===pe.runSummary)return;qi.current=pe.runSummary,(pe.summary||pe.links)&&le((0,R.jsxs)(b,{flexDirection:"column",children:[pe.summary&&(0,R.jsx)(Ms,{data:pe.summary}),pe.links&&(0,R.jsx)(vn,{...pe.links,autoExit:!1})]}))}},[pe.runSummary,pe.running,pe.summary,pe.links,le]),(0,y.useEffect)(()=>{Xt.current?.setRunActive(_.isRunning)},[_.isRunning]),(0,y.useEffect)(()=>{if(_.runError&&!_.isRunning){let m=_.runError.trim();c.log("error","RUNNER_ERROR","Runner error occurred",{error:m}),c.escalateRun(c.nextRunIndex()-1),!_.lastRunEnd&&We.current!==_.runError&&(We.current=_.runError,No(G.current,_.getEvidenceState(),null));let f=m.split(`
|
|
24
|
+
`).slice(-8).join(`
|
|
25
|
+
`);be({type:"error",text:`Runner error:
|
|
26
|
+
${f}`})}},[_.runError,_.isRunning,_.lastRunEnd,be,c]);let an=(0,y.useCallback)(async(m={})=>{let x=G.current;return x?(c.flushRecorder(),await ys(x,{saved:!!c.sessionName,recordedTestPath:c.recorder?.lastWrittenPath??null,externalIdInput:{session_id:c.sessionId,commit_id:c.sessionId,test_id:c.testId??void 0,testcase_id:m.testcaseId??c.testcaseId??void 0,project_id:I.project_id??void 0,folder_id:I.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:Fs(De(de).testManagerUiUrl,I.project_id,m.testcaseId??c.testcaseId,m.shareId)},cdpBrowserCapture:we.current??void 0,model:I.model,tuiLogPath:Ut(c.sessionDir,"tui.log"),log:(f,h,E,L)=>c.log(f,h,E,L)})):null},[c,I]),cn=(0,y.useCallback)(async m=>{let x=G.current?.packDir??null,f=await an({testcaseId:m?.testcaseId,shareId:m?.shareId});return G.current=null,ce.current=!1,we.current=null,f?.sealed?x:null},[an]),ln=(0,y.useCallback)(async()=>{c.log("info","EXIT_UPLOAD_START","Starting exit upload pipeline"),wr(xn()),xt({status:"uploading"});let m=S.getResolvedBasicAuth(),x=null;if(!m&&(x=await S.getToken(),!x))return c.log("warn","EXIT_UPLOAD_ABORTED","Exit upload aborted \u2014 no auth available"),null;let f=Ge??await zt();if(!f)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:I.project_id,session_dir:c.sessionDir,run_dirs:c.getRunDirs()});let h={basicAuth:m??null,token:x,resolver:S.getResolver(),resolvedCreds:f};X.current&&(c.log("info","SCREENSHOT_UPLOAD_DRAIN","Draining screenshot queue before pipeline"),await ut.current.settle(),await X.current.drain(),c.log("info","SCREENSHOT_UPLOAD_DRAINED","Screenshot queue drained"));let E=Ws({session:c,env:de,auth:h,variables:Lt.current??{raw:{},auteur:{},auteurObjective:"",secretEntries:[],nonSecretEntries:[]},variableIds:Er.current,projectId:I.project_id,folderId:I.folder_id,totalSteps:xo.current,totalDuration:vo.current,screenshotExtMap:X.current?.getExtMap(),codeExport:Xs({codeExport:t,codeLanguage:r,skipCodeValidation:n},I.code_export),onProgress:(q,oe,se)=>{c.log("info","EXIT_PROGRESS","Upload progress",{step:q,status:oe,detail:se}),wr(Te=>Vs(Te,q,oe,se))},log:(q,oe,se,Te)=>c.log(q,oe,se,Te),shouldUploadArtifacts:!0,shouldReplaceLocalOutput:!1,shouldCommit:!1,isFirstRun:!0,evidence:G.current?{executionId:G.current.executionId,packTestDir:G.current.packTestDir,sealedPackPath:G.current.packDir,sealFn:an}:void 0}),U=await new Ys(E).execute();if(U.success){c.log("info","EXIT_UPLOAD_OK","Exit upload succeeded",{test_id:U.testId,testcase_id:U.testcaseId??null,share_id:U.shareId??null}),c.setUploadStatus("uploaded"),U.testId&&c.setTestId(U.testId),U.testcaseId&&c.setTestcaseId(U.testcaseId);let q=De(de),oe=I.project_id,se=U.testcaseId&&U.shareId&&oe?Mo(q.testManagerUiUrl,oe,U.testcaseId,U.shareId):void 0,Te=U.testcaseId&&oe?Fo(q.testManagerUiUrl,oe,U.testcaseId):void 0;xt({status:"success",testUrl:se,testCaseLink:Te,codeExportDir:U.codeExportDir}),Du({shareableLink:se,testCaseLink:Te,codeExportDir:U.codeExportDir})}else c.log("error","EXIT_UPLOAD_FAILED","Exit upload failed",{error:U.error}),c.setUploadStatus("failed",U.error),xt({status:"failed",error:U.error});return U},[S,de,c,I,Ge,zt,an]),un=(0,y.useCallback)(async()=>{c.log("info","SESSION_RESET_START","Starting session reset via /new"),Ht(!0);let m=c.getFlows();m.length>0&&le((0,R.jsx)(Ii,{flows:m}));let x=null;if(!e)try{x=await ln()??null}catch(L){c.log("error","SESSION_RESET_UPLOAD_FAILED","Upload failed during /new",{error:String(L)}),be({type:"error",text:"Upload failed \u2014 session data saved locally."})}let f=null;try{let{persistRecordedSession:L}=await import("./persist-recorded-session-XKPZX7HW.js");f=await L(c,{testcaseId:c.testcaseId??void 0,projectId:I.project_id??void 0,folderId:I.folder_id??void 0,codeExportDir:x?.codeExportDir,packTestDir:G.current?.packTestDir})}catch(L){c.log("error","SESSION_RESET_PERSIST_FAILED","Persist failed during /new",{error:String(L)})}if(x?.success&&x.testcaseId||f){let L=De(de),U=I.project_id,q=x?.testcaseId;le((0,R.jsx)(vn,{recordedTestPath:f?.recordedTestPath,outputDir:f?.outputDir,shareableLink:q&&x?.shareId&&U?Mo(L.testManagerUiUrl,U,q,x.shareId):void 0,testCaseLink:q&&U?Fo(L.testManagerUiUrl,U,q):void 0,codeExportDir:x?.codeExportDir,autoExit:!1}))}let h=await cn(x);h&&be({type:"info",text:Es(h)}),c.testId&&zr(L=>[...L,{testId:c.testId,runCount:re}]),rn.killChrome(),await c.finish("complete");let E=new hn;E.start({model:I.model,environment:de,profile:nr??null}),w.current=E,T(L=>L+1),c.log("info","SESSION_RESET_COMPLETE","Session reset complete",{new_session_id:E.sessionId}),await wt({kind:"resessionize",env:de},ot),fe(0),xo.current=0,vo.current=0,Y.current=0,Je.current="",Lt.current=null,Er.current={},fn.current=0,Ro.current=0,bo.current=null,So.current=null,ho.current=null,We.current=null,ae.current=!1,go.current=null,Ce(null),A(null),xt(null),wr(xn()),Ht(!1),le((0,R.jsxs)(b,{flexDirection:"column",marginY:1,children:[(0,R.jsx)(s,{color:l.dim,children:"\u2500".repeat(44)}),(0,R.jsx)(s,{color:l.green,bold:!0,children:"New session started"})]}))},[c,be,le,e,ln,cn,rn,re,I,de,nr,ot]),Hi=(0,y.useCallback)(async()=>{if(!(c.nextRunIndex()>0)){be({type:"info",text:"No runs in current session."});return}if(_.isRunning){be({type:"error",text:"Cannot reset while a run is in progress. Cancel the run first."});return}if(I.mode==="testing"&&!c.sessionName){Tr("new"),er(Go());return}await un()},[c,_,be,I.mode,un]),Gi=(0,y.useCallback)(async()=>{await c.finish("complete"),dr(0,"Session complete")},[c]),ud=(0,y.useCallback)(async m=>{Yr(!1);let x=c.testId??($e.length>0?$e[$e.length-1].testId:null);if(m&&x){c.log("info","EXIT_FEEDBACK_SUBMIT","Submitting session feedback",{choice:m});try{let f=De(de),h=S.getResolvedBasicAuth();h&&await qu({tmsBaseUrl:f.tmsBaseUrl,username:h.username,accessKey:h.access_key,testId:x,feedbackType:m,log:(E,L,U,q)=>c.log(E,L,U,q)})}catch(f){c.log("error","EXIT_FEEDBACK_FAILED","Feedback submission failed",{error:String(f)})}}else c.log("info","EXIT_FEEDBACK_SKIPPED","Feedback skipped");Gi()},[de,S,c,Gi,$e]),dn=(0,y.useCallback)(async()=>{let m=c.nextRunIndex()>0,x=null;if(m&&!e){c.log("info","EXIT_WITH_ACTIVE_SESSION","Exit with active session \u2014 uploading first"),ie(!0);try{x=await ln()??null}catch(E){c.log("error","EXIT_UPLOAD_FAILED","Exit upload failed",{error:String(E)})}c.testId&&zr(E=>[...E,{testId:c.testId,runCount:re}])}try{let{persistRecordedSession:E}=await import("./persist-recorded-session-XKPZX7HW.js"),L=await E(c,{testcaseId:c.testcaseId??void 0,projectId:I.project_id??void 0,folderId:I.folder_id??void 0,codeExportDir:x?.codeExportDir,packTestDir:G.current?.packTestDir});L&&ao(L)}catch(E){c.log("error","EXIT_PERSIST_FAILED","Persist failed during /exit",{error:String(E)})}let f=await cn(x);if(f&&process.stdout.isTTY&&(ie(!0),await new Promise(E=>Kr({packPath:f,resolve:E})),Kr(null)),m&&!e&&await c.finish("complete"),!(c.testId??($e.length>0?$e[$e.length-1].testId:null))||e){await c.finish("complete"),dr(0,"No test ID \u2014 quick exit");return}ie(!0),Yr(!0)},[c,e,ln,cn,re,$e,I]),Ot=(0,y.useCallback)(async()=>{if(W)return;c.log("info","EXIT_START","TUI exit initiated");let m=I.mode==="testing",x=c.nextRunIndex()>0;if(m&&x&&!c.sessionName){Tr("exit"),er(Go());return}await dn()},[W,c,I.mode,dn]),dd=(0,y.useCallback)(m=>{m&&c.setSessionName(m);let x=Wt;er(null),Tr(null),x==="new"?un():dn()},[c,Wt,dn,un]);(0,y.useEffect)(()=>{if(!W)return;let m=300*1e3,x=setTimeout(async()=>{c.setUploadStatus("failed","Upload timed out after 5m"),await c.finish("complete"),dr(0,"Upload timed out after 5m")},m);return()=>clearTimeout(x)},[W,c]);let fn=y.default.useRef(0),wo=y.default.useRef(null),Ro=y.default.useRef(0),yo=y.default.useRef(0),To=y.default.useRef(null);Ie((m,x)=>{if(x.ctrl&&m==="c"){if(ve==="generate"&&(ne.isStreaming||ft.submitting)){ft.cancelGenerate(),yo.current++,To.current&&clearTimeout(To.current),To.current=setTimeout(()=>{yo.current=0},2e3),yo.current>=2&&Ot();return}if(!pe.running){if(W){Ro.current+=1,Ro.current>=2&&(c.setUploadStatus("pending","Force exit by user"),c.finish("complete"),dr(0,"Force exit by user"));return}if(_.isRunning){_.cancelRun(),be({type:"info",text:"Run cancelled."}),fn.current++,wo.current&&clearTimeout(wo.current),wo.current=setTimeout(()=>{fn.current=0},2e3),fn.current>=2&&Ot();return}Ot()}}}),Ie((m,x)=>{if(x.ctrl&&m==="t"&&ve==="generate"&&!ne.isStreaming){sn("no thinking yet");return}});let Wi=y.default.useMemo(()=>{let m=S.creds.getActiveProfile()??"none",x=S.creds.getDefaultEnv();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-headless",label:"Headless",type:"select",currentValue:me.headless?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:f=>{_r(h=>({...h,headless:f==="on"}))}},{id:"run-max-steps",label:"Max Steps",type:"text-input",currentValue:String(me.maxSteps),onValue:f=>{let h=parseInt(f,10);h>0&&_r(E=>({...E,maxSteps:h}))}},{id:"run-timeout",label:"Timeout (sec)",type:"text-input",currentValue:me.timeout?String(me.timeout):"",placeholder:"0 = no timeout",onValue:f=>{let h=parseInt(f,10);_r(E=>({...E,timeout:isNaN(h)?0:h}))}},{id:"run-cdp",label:"CDP Endpoint",type:"text-input",currentValue:me.cdpEndpoint,placeholder:"http://127.0.0.1:9222",onValue:f=>{_r(h=>({...h,cdpEndpoint:f}))}},{id:"run-ws",label:"WS Endpoint",type:"text-input",currentValue:me.wsEndpoint,placeholder:"wss://...",onValue:f=>{_r(h=>({...h,wsEndpoint:f}))}}]}]},{id:"auth",label:"Auth",type:"submenu",children:[{id:"login",label:"Login",type:"action",onLoginWizard:()=>{}},{id:"logout",label:"Logout",type:"action",onAction:()=>{S.logout().then(f=>{Qe();let h=S.creds.getActiveProfile(),E=S.creds.getDefaultEnv();dt(h,E);let L=Uu(h,E);wt(L,ot).catch(()=>{}),f?B("ok","/logout",`Logged out: ${f.profile} [${f.env}]`):B("ok","/logout","No active profile")}).catch(()=>{B("error","/logout","Logout failed")})}},{id:"whoami",label:"Who Am I",type:"action",onInfo:()=>{let f=S.creds.getActiveProfile()??"none",h=S.creds.getDefaultEnv(),E=S.creds.loadBasicAuth(f,h),L=E?"basic":S.creds.loadCredentials(f,h)?"oauth":"not configured";return{title:"Who Am I",sections:[{label:"Identity",entries:[{key:"Profile",value:f},{key:"Environment",value:h}]},{label:"Authentication",entries:[{key:"Method",value:L},...E?[{key:"Username",value:E.username}]:[]]},{label:"Token",entries:[{key:"Status",value:S.tokenValid?"valid":"not logged in",color:S.tokenValid?l.green:l.red}]}]}}},{id:"balance",label:"Credit Balance",type:"action",suppressFeedback:!0,onAction:()=>{(async()=>{let f=S.creds.getActiveProfile()??"default",h=S.creds.getDefaultEnv(),E=De(h);try{let L=S.getBasicAuth(),U=L?null:await S.getToken();if(!L&&!U){et({text:"Not authenticated. Run /login first.",color:l.red});return}let{ControllerClient:q}=await import("./controller-client-RD2YEMAH.js"),se=await(L?new q(E.controllerBaseUrl,{username:L.username,accessKey:L.access_key}):new q(E.controllerBaseUrl,U)).getCreditBalance();et({text:`Credits \u2014 available: ${se.available_credits}, total: ${se.total_credits} (${f} / ${h})`,color:l.green})}catch(L){et({text:`Balance check failed: ${L instanceof Error?L.message:String(L)}`,color:l.red})}qt.current&&clearTimeout(qt.current),qt.current=setTimeout(()=>{et(null),qt.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:I.mode},{key:"Assertion Mode",value:I.assertion_mode},{key:"WebSocket Capture",value:I.network_ws?"on":"off"},{key:"SSE Capture",value:I.network_sse?"on":"off"},{key:"Bug Detection",value:I.bug_detection},{key:"Hints",value:I.hints_enabled===!1?"off":"on"}]},{label:"Browser",entries:[{key:"Window",value:`${I.window_size.width}x${I.window_size.height}`},{key:"Chrome Profile",value:I.chrome_profile_path?I.chrome_profile_path.split("/").pop()??I.chrome_profile_path:"(temporary)"}]},{label:"Project",entries:[{key:"Project",value:I.project_name?`${I.project_name} (${I.project_id})`:I.project_id??"(none)"},{key:"Folder",value:I.folder_name?`${I.folder_name} (${I.folder_id})`:I.folder_id??"(none)"},{key:"Default URL",value:I.default_url??Ao}]},{label:"Code Export",entries:[{key:"Enabled",value:I.code_export.enabled?"yes":"no"},{key:"Language",value:I.code_export.language},{key:"Skip Validation",value:I.code_export.skip_validation?"yes":"no"}]}]})},{id:"config-chrome",label:"Chrome Profile",type:"action",onChromeProfilePicker:()=>{}},{id:"config-project",label:"Project",type:"action",onProjectPicker:()=>{}},{id:"config-folder",label:"Folder",type:"action",...I.project_id?{onFolderPicker:()=>{}}:{onInfo:()=>({title:"Folder",sections:[{entries:[{key:"Status",value:"Select a project first",color:l.dim}]}]})}},{id:"config-window",label:"Window Size",type:"action",currentValue:`${I.window_size.width}x${I.window_size.height}`,onWindowSizePicker:()=>{}},{id:"config-default-url",label:"Default URL",type:"text-input",currentValue:I.default_url??"",placeholder:"https://example.com",onValue:f=>{let h=jo(f);if(!h){B("error","/config set-url","Enter a valid URL (e.g. example.com)");return}p.set("default_url",h),ge(p.load()),B("ok","/config set-url",h)}},{id:"config-run",label:"Run",type:"submenu",children:[{id:"config-mode",label:"Mode",type:"select",currentValue:I.mode,options:[{label:"testing",value:"testing"},{label:"action",value:"action"}],onValue:f=>{(f==="action"||f==="testing")&&(p.set("mode",f),ge(p.load()),B("ok","/config set-mode",f))}},{id:"config-assertion-mode",label:"Assertion Mode",type:"select",currentValue:I.assertion_mode,options:[{label:"visual \u2014 vision model (default)",value:"visual"},{label:"dom \u2014 DOM extraction & assertions preferred",value:"dom"}],onValue:f=>{(f==="visual"||f==="dom")&&(p.set("assertion_mode",f),ge(p.load()),B("ok","/config set-assertion-mode",f))}},{id:"config-network-ws",label:"WebSocket Capture",type:"select",currentValue:I.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:f=>{(f==="on"||f==="off")&&(p.set("network_ws",f==="on"),ge(p.load()),B("ok","/config set-network-ws",f))}},{id:"config-network-sse",label:"SSE Capture",type:"select",currentValue:I.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:f=>{(f==="on"||f==="off")&&(p.set("network_sse",f==="on"),ge(p.load()),B("ok","/config set-network-sse",f))}},{id:"config-bug-detection",label:"Bug Detection",type:"select",currentValue:I.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:f=>{(f==="off"||f==="stop"||f==="continue")&&(p.set("bug_detection",f),ge(p.load()),B("ok","/config set-bug-detection",f))}}]},{id:"config-hints",label:"CLI Hints",type:"select",currentValue:I.hints_enabled===!1?"off":"on",options:[{label:"on",value:"on"},{label:"off",value:"off"}],onValue:f=>{let h=f==="on";p.set("hints_enabled",h),ge(p.load()),B("ok","/config hints",`CLI hints ${h?"enabled":"disabled"}`)}},{id:"config-generate",label:"Generate",type:"submenu",currentValue:`${I.generate.scenario_limit}x${I.generate.per_scenario_limit}`,children:[{id:"config-generate-scenario-limit",label:"Scenario limit",type:"text-input",currentValue:String(I.generate.scenario_limit),placeholder:"5",onValue:f=>{let h=parseInt(f,10);if(!Number.isFinite(h)||h<1||h>20){B("error","/config",`Scenario limit must be 1-20 (got ${f})`);return}p.set("generate",{...I.generate,scenario_limit:h}),ge(p.load()),B("ok","/config",`Scenario limit: ${h}`)}},{id:"config-generate-per-scenario-limit",label:"Per-scenario limit",type:"text-input",currentValue:String(I.generate.per_scenario_limit),placeholder:"4",onValue:f=>{let h=parseInt(f,10);if(!Number.isFinite(h)||h<1||h>20){B("error","/config",`Per-scenario limit must be 1-20 (got ${f})`);return}p.set("generate",{...I.generate,per_scenario_limit:h}),ge(p.load()),B("ok","/config",`Per-scenario limit: ${h}`)}},{id:"config-generate-memory",label:"Memory",type:"select",currentValue:I.generate.memory_enabled?"on":"off",options:[{label:"on",value:"on"},{label:"off",value:"off"}],onValue:f=>{let h=f==="on";p.set("generate",{...I.generate,memory_enabled:h}),ge(p.load()),B("ok","/config",`Memory: ${h?"on":"off"}`)}}]},{id:"config-code-export",label:"Code Export",type:"submenu",currentValue:I.code_export.enabled?"enabled":"disabled",children:[{id:"config-code-export-enabled",label:"Enabled",type:"select",currentValue:I.code_export.enabled?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:f=>{p.set("code_export",{...I.code_export,enabled:f==="on"}),ge(p.load()),B("ok","/config code-export enabled",f)}},{id:"config-code-export-language",label:"Language",type:"select",currentValue:I.code_export.language,options:[{label:"python",value:"python"},{label:"javascript",value:"javascript"}],onValue:f=>{f!=="python"&&f!=="javascript"||(p.set("code_export",{...I.code_export,language:f}),ge(p.load()),B("ok","/config code-export language",f))}},{id:"config-code-export-skip-validation",label:"Skip Validation",type:"select",currentValue:I.code_export.skip_validation?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:f=>{p.set("code_export",{...I.code_export,skip_validation:f==="on"}),ge(p.load()),B("ok","/config code-export skip-validation",f)}}]}]},{id:"exit",label:"Exit",type:"action",onAction:()=>{Ot()}}]},[S,p,I,be,Ot,me,Qe,B]),Eo=(0,y.useCallback)(m=>{if(_.askingUser){let f=_.askingUser;le((0,R.jsxs)(b,{flexDirection:"column",marginLeft:2,paddingLeft:1,marginTop:1,children:[(0,R.jsx)(b,{marginLeft:1,children:(0,R.jsx)(s,{color:l.orange,bold:!0,children:"Agent Question"})}),(0,R.jsxs)(b,{borderStyle:"round",borderColor:l.orange,flexDirection:"column",paddingX:2,paddingY:1,width:70,children:[(0,R.jsxs)(b,{children:[(0,R.jsx)(b,{width:3,children:(0,R.jsx)(s,{color:l.orange,bold:!0,children:"?"})}),(0,R.jsx)(b,{flexShrink:1,children:(0,R.jsx)(s,{wrap:"wrap",children:f})})]}),(0,R.jsxs)(b,{marginTop:1,children:[(0,R.jsx)(b,{width:3,children:(0,R.jsx)(s,{color:l.dim,bold:!0,children:"\u2192"})}),(0,R.jsx)(b,{flexShrink:1,children:(0,R.jsx)(s,{wrap:"wrap",children:m})})]})]})]})),bo.current=null,_.sendAnswer(m);return}if(c.logCommand(m),_.isRunning){be({type:"error",text:"Run in progress. Ctrl+C to cancel."});return}let x=Vn(m);if(x){if(!El(x.command,ve)){B("error",`/${x.command}`,`/${x.command} isn't available in ${ve==="run"?"Run":"Generate"} mode.`);return}switch(x.command){case"profiles":if(ve==="generate"&&ne.requestId&&x.args.action==="switch"){Ar({reason:"profile",pendingArgs:x.args});return}Cr("auth");return;case"login":case"logout":case"whoami":case"balance":case"auth":Cr("auth");return;case"config":if(x.args.action==="set-url"){let f=jo(x.args.value);if(!f){B("error","/config set-url","Usage: /config set-url <url>");return}p.set("default_url",f),ge(p.load()),B("ok","/config set-url",f);return}Cr("config");return;case"help":Ni(!0);return;case"testmd":if(_.isRunning||ne.isStreaming||pe.running){B("error","/testmd","Finish or cancel the current run/generation first.");return}pe.clearResult(),en(!0);return;case"generate":if(pe.running){B("error","/generate","Finish or cancel the running test first.");return}ve==="run"?ft.requestSwitch("generate")&&B("ok","/generate","Switched to Generate mode.",void 0,l.generateAccent):B("ok","/generate","Already in Generate mode.",void 0,l.generateAccent);return;case"run":{let f=Cl(ve,x.args.objective);switch(f.kind){case"run":po(f.objective,x.args.url);return;case"reject":B("error","/run",'Switch to Run mode first (bare /run), then /run "objective".');return;case"already":B("ok","/run","Already in Run mode.",void 0,l.orange);return;case"toggle":ft.requestSwitch("run")&&B("ok","/run","Switched to Run mode.",void 0,l.orange);return}return}case"update":{(async()=>{let{getUpdateCommand:f}=await import("./version-check-PHZX5WS7.js");B("ok","/update",`To update kane-cli, run: ${f()}`)})();return}case"summary":{if(ve==="generate"&&!ne.requestId){sn("no generation yet"),B("ok","/summary","(no generation yet)");return}let f=c.getFlows();if(f.length===0){B("ok","/summary","No runs yet in this session.");return}let h=x.args.index?parseInt(x.args.index,10):void 0;if(h!==void 0&&!c.getFlow(h)){B("error","/summary",`No flow at index ${h}`,`${f.length} flow${f.length===1?"":"s"} available. Use /summary to see all.`);return}le((0,R.jsx)(Ii,{flows:f,filterIndex:h})),B("ok","/summary",h!==void 0?`Flow ${h}`:`${f.length} flow${f.length===1?"":"s"}`);return}case"new":ve==="generate"&&ne.requestId&&($t(),ne.end().catch(f=>{B("error","/new",`Could not end generation cleanly: ${f.message}`)}),ne.reset()),Hi(),B("ok","/new","Session reset");return;case"name":{let f=x.raw.replace(/^\/name\s*/,"").trim();if(!f){B("error","/name","Usage: /name <new-name>");return}(async()=>{let{validateNameOrThrow:h}=await import("./name-validator-5YGJXLZ7.js");try{h(f),c.setSessionName(f),B("ok","/name",`Session name set: ${f}`)}catch(E){B("error","/name",E.message)}})();return}case"cancel":if(ve==="generate"&&ne.isStreaming){$t(),ne.cancel(),B("ok","/cancel","Cancelled");return}if(ve==="generate"&&!ne.requestId){sn("no generation yet"),B("ok","/cancel","(no generation yet)");return}if(pe.running){pe.cancel(),B("ok","/cancel","Run cancelled");return}_.cancelRun(),B("ok","/cancel","Run cancelled");return;case"clear":B("ok","/clear","Chat cleared");return;case"exit":ve==="generate"&&ne.requestId&&($t(),ne.end()),Ot();return;default:B("error",`/${x.command}`,"Unknown command");return}}if(m.trim().toLowerCase()==="exit"){Ot();return}le((0,R.jsx)(xl,{objective:m})),po(m,void 0)},[_,be,B,le,c,po,Ot,Hi,ve,ne.isStreaming,ne.requestId,ne,sn,$t,pe,I,a]);Fi.current=Eo;let Xi=(0,y.useRef)(!1);(0,y.useEffect)(()=>{if(!Xi.current&&M&&u==="generate"&&d){Xi.current=!0;let m=setTimeout(()=>{sd(d)},50);return()=>clearTimeout(m)}},[M,u,d]);let zi=S.getAuthInfo(),fd=zi?zi.method==="basic"?"basic auth":"oauth":"not logged in",md=(()=>{if(Ir)return["help"];if(kr)return["testmd"];if(P)return P.phase==="wizard"?["auth","login"]:P.phase==="project"?["auth","login","project"]:P.phase==="folder"?["auth","login","folder"]:["auth","login"];let m={infoView:"info",loginWizard:"login",profilesView:"profiles",chromeProfilePicker:"chrome-profile",projectPicker:"project",folderPicker:"folder",windowSizePicker:"set-window"};return bt==="auth"?Zr?["auth",m[Zr]]:["auth"]:bt==="config"?Zr?["config",m[Zr]]:["config"]:bt==="help"?["help"]:_.askingUser?["agent question"]:[]})();return(0,R.jsxs)(b,{flexDirection:"column",children:[!M&&!Di&&(0,R.jsx)(gl,{onComplete:()=>{let m=S.creds.getActiveProfile(),x=S.creds.getDefaultEnv(),f=m?S.creds.loadCredentials(m,x):null,h=m?S.creds.loadBasicAuth(m,x):null,E=!!(f||h),L=h?.username??m??null;le((0,R.jsx)(Nn,{size:"full",helmetVisibleRows:8,textVisibleRows:7,showMeta:!0,version:it,authenticated:E,user:L})),Xu(!0);let U=(q,oe,se,Te)=>{c.log(q,oe,se,Te)};if(Ps(S.creds,U).then(q=>{if(q.status==="authenticated"){let{profile:oe,env:se,tmsCreds:Te}=q.result;S.creds.setActiveProfile(oe),S.creds.setDefaultEnv(se),Qe(),Ke(Te),vt("ready"),O(!0)}else q.status==="needs_pick"?(Gu(q.profiles),vt("pick")):vt("login")}).catch(q=>{c.log("error","STARTUP_GATE_ERROR","Auth gate failed",{error:String(q)}),vt("login")}),o&&o.then(async q=>{if(q){let{getUpdateCommand:oe}=await import("./version-check-PHZX5WS7.js");B("ok","update available",`${q.current} \u2192 ${q.latest}`,`Run: ${oe()}`)}}).catch(()=>{}),i&&i.changes.length>0){let q=`kane-cli updated to ${i.toVersion}. Default settings changed:`,oe=[...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(`
|
|
27
|
+
`);B("ok","defaults updated",q,oe)}}}),!M&&rr==="booting"&&Di&&(0,R.jsx)(b,{paddingX:1,children:(0,R.jsx)(s,{color:"yellow",children:"Checking authentication..."})}),!M&&rr==="pick"&&(0,R.jsx)(oh,{profiles:Hu,onCancel:()=>vt("login"),onSelect:async(m,x)=>{S.creds.setActiveProfile(m),S.creds.setDefaultEnv(x),Qe(),co(!0);let f=(h,E,L,U)=>{c.log(h,E,L,U)};try{let h=await _s(S.creds,m,x,f);co(!1),h.status==="authenticated"?(dt(m,x),Ke(h.result.tmsCreds),vt("ready"),O(!0)):vt("login")}catch{co(!1),vt("login")}},validating:Wu}),!M&&rr==="login"&&!P&&(0,R.jsx)(gn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:S.creds.listProfiles(),onBasicLogin:async(m,x,f,h)=>{let{validateBasicAuth:E}=await import("./validate-basic-FO7C2URG.js");await E(x,f,h),S.creds.saveBasicAuth(m,x,{username:f,access_key:h}),S.creds.setActiveProfile(m),S.creds.setDefaultEnv(x),st(S.creds,p,m,x),S.setTokenValid(!0),Qe()},onOAuthLogin:async(m,x)=>{S.creds.setDefaultEnv(x),await S.login(m),st(S.creds,p,m,x),Qe()},onComplete:(m,x)=>{wt(so(x),ot).then(()=>{Qe(),ye({phase:"project",profile:m,env:x})}).catch(()=>{ye({phase:"project",profile:m,env:x})})},onCancel:()=>{dr(0,"Login cancelled at startup")}}),!M&&rr==="login"&&P?.phase==="project"&&(0,R.jsx)(cr,{resolver:S.getResolver(),currentProjectId:null,env:P.env,onSelect:(m,x)=>{S.creds.saveProfileConfig(P.profile,P.env,{project_id:m,project_name:x}),B("ok","/config project",x,`id: ${m}`),ye({...P,phase:"folder"})},onCancel:async()=>{let m=await fo(P.profile,P.env);m&&(ht(S.creds,p,P.profile,P.env,{projectId:m.id,projectName:m.name}),B("ok","/config project",m.name,`id: ${m.id}`),ye({...P,phase:"folder"}))}}),!M&&rr==="login"&&P?.phase==="folder"&&(0,R.jsx)(lr,{resolver:S.getResolver(),projectId:S.creds.loadProfileConfig(P.profile,P.env)?.project_id??"",currentFolderId:null,env:P.env,onSelect:(m,x)=>{S.creds.saveProfileConfig(P.profile,P.env,{folder_id:m,folder_name:x}),B("ok","/config folder",x,`id: ${m}`),dt(P.profile,P.env),ye(null),vt("ready"),O(!0)},onCancel:async()=>{let m=S.creds.loadProfileConfig(P.profile,P.env);if(!m?.project_id)return;let x=await mo(P.env,m.project_id);x&&(ht(S.creds,p,P.profile,P.env,{folderId:x.id,folderName:x.name}),B("ok","/config folder",x.name,`id: ${x.id}`),dt(P.profile,P.env),ye(null),vt("ready"),O(!0))}}),M&&Qr==="menu"&&!W&&(0,R.jsx)(b,{marginBottom:1,children:(0,R.jsxs)(b,{borderStyle:"round",borderColor:"#dc4e08",paddingX:2,children:[(0,R.jsx)(s,{color:"#ff9500",bold:!0,children:"KaneAI CLI"}),(0,R.jsx)(s,{color:l.dim,children:" \u2502 "}),(0,R.jsx)(s,{color:"#ff9500",children:I.model}),(0,R.jsx)(s,{color:l.dim,children:" \u2502 "}),(0,R.jsx)(s,{color:l.dim,children:fd}),(0,R.jsx)(s,{color:l.dim,children:" \u2502 "}),(0,R.jsxs)(s,{color:l.dim,children:[nr??"no profile","/",de]})]})}),M&&!W&&(0,R.jsxs)(b,{flexDirection:"column",flexGrow:1,children:[Qr==="menu"&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(wi,{items:Wi,onRunSelected:()=>zu("chat"),onActiveViewChange:Oi,renderLoginWizard:m=>{let x=P?.phase??"wizard";if(x==="project")return(0,R.jsx)(cr,{resolver:S.getResolver(),currentProjectId:null,env:P.env,onSelect:(f,h)=>{S.creds.saveProfileConfig(P.profile,P.env,{project_id:f,project_name:h}),B("ok","/config project",h,`id: ${f}`),ye(E=>E?{...E,phase:"folder"}:null)},onCancel:async()=>{if(!P)return;let f=await fo(P.profile,P.env);f&&(ht(S.creds,p,P.profile,P.env,{projectId:f.id,projectName:f.name}),B("ok","/config project",f.name,`id: ${f.id}`),ye(h=>h?{...h,phase:"folder"}:null))}});if(x==="folder"){let f=S.creds.loadProfileConfig(P.profile,P.env);return(0,R.jsx)(lr,{resolver:S.getResolver(),projectId:f?.project_id??"",currentFolderId:null,env:P.env,onSelect:(h,E)=>{S.creds.saveProfileConfig(P.profile,P.env,{folder_id:h,folder_name:E}),B("ok","/config folder",E,`id: ${h}`),dt(P.profile,P.env),ye(null),m()},onCancel:async()=>{if(!P)return;let h=S.creds.loadProfileConfig(P.profile,P.env);if(!h?.project_id)return;let E=await mo(P.env,h.project_id);E&&(ht(S.creds,p,P.profile,P.env,{folderId:E.id,folderName:E.name}),B("ok","/config folder",E.name,`id: ${E.id}`),dt(P.profile,P.env),ye(null),m())}})}return(0,R.jsx)(gn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:S.creds.listProfiles(),onBasicLogin:async(f,h,E,L)=>{let{validateBasicAuth:U}=await import("./validate-basic-FO7C2URG.js");await U(h,E,L),S.creds.saveBasicAuth(f,h,{username:E,access_key:L}),S.creds.setActiveProfile(f),S.creds.setDefaultEnv(h),st(S.creds,p,f,h),S.setTokenValid(!0),Qe()},onOAuthLogin:async(f,h)=>{S.creds.setDefaultEnv(h),await S.login(f),st(S.creds,p,f,h),Qe()},onComplete:(f,h)=>{wt(so(h),ot).then(()=>{ye({phase:"project",profile:f,env:h})}).catch(()=>{ye({phase:"project",profile:f,env:h})})},onCancel:()=>{ye(null),m()}})},renderProfilesView:m=>(0,R.jsx)(Do,{creds:S.creds,onSwitch:(x,f)=>{let h=S.creds.getActiveProfile()??"(none)";S.creds.setActiveProfile(x),S.creds.setDefaultEnv(f),st(S.creds,p,x,f),dt(x,f),Qe(),wt($i(f),ot).catch(()=>{}),B("ok","/profiles switch",`${h} \u2192 ${x} [${f}]`)},onCancel:m}),renderChromeProfilePicker:m=>(0,R.jsx)(Oo,{currentPath:I.chrome_profile_path,onSelect:x=>{p.set("chrome_profile_path",x),ge(p.load()),B("ok","/config chrome-profile",x),m()},onCancel:m}),renderProjectPicker:m=>(0,R.jsx)(cr,{resolver:S.getResolver(),currentProjectId:I.project_id,env:de,onSelect:(x,f)=>{ht(S.creds,p,S.creds.getActiveProfile()??"default",S.creds.getDefaultEnv(),{projectId:x,projectName:f}),B("ok","/config project",f,`id: ${x}`),ge(p.load()),m()},onCancel:m}),renderFolderPicker:m=>(0,R.jsx)(lr,{resolver:S.getResolver(),projectId:I.project_id??"",currentFolderId:I.folder_id,env:de,onSelect:(x,f)=>{ht(S.creds,p,S.creds.getActiveProfile()??"default",S.creds.getDefaultEnv(),{folderId:x,folderName:f}),B("ok","/config folder",f,`id: ${x}`),ge(p.load()),m()},onCancel:m}),renderWindowSizePicker:m=>(0,R.jsx)(Ci,{currentWidth:I.window_size.width,currentHeight:I.window_size.height,onSelect:(x,f)=>{p.set("window_size",{width:x,height:f}),ge(p.load()),B("ok","/config set-window",`${x} \xD7 ${f}`),m()},onCancel:m})}),Le&&(0,R.jsx)(b,{paddingX:1,marginTop:1,children:(0,R.jsx)(s,{color:Le.color,children:Le.text})})]}),Qr==="chat"&&(0,R.jsxs)(R.Fragment,{children:[(()=>{let m=ns({isRunning:_.isRunning,bifurcationInfo:_.bifurcationInfo,steps:_.steps,cmInitCounts:_.cmInitCounts,replayInfo:_.replayInfo});return m?(0,R.jsx)(rs,{label:m.label,hasBifurcation:m.hasBifurcation}):null})(),_.isRunning&&_.steps.length>0&&(0,R.jsx)(ts,{steps:_.steps,bifurcated:!!_.bifurcationInfo&&!_.bifurcationInfo.isSingleFlow,flows:_.bifurcationInfo?.flows,cmInitCounts:_.cmInitCounts,onStepCommit:le,describe:Pr.text,describeVisible:Pr.visible,describeRevealing:Pr.revealing},`run-${Y.current}`),pe.runViewProps&&(0,R.jsx)(js,{...pe.runViewProps,onCancel:()=>{pe.runViewProps?.onCancel?.(),pe.cancel()}}),Ir&&(0,R.jsx)(Al,{onClose:()=>Ni(!1),version:it,environment:S.creds.getDefaultEnv(),sessionId:c.sessionId,runUrl:I.default_url??Ao,mode:ve}),kr&&(0,R.jsx)(Bl,{cwd:process.cwd(),currentOrgId:String(Ge?.org_id??""),onClose:()=>en(!1),onRun:m=>{if(_.isRunning||ne.isStreaming||pe.running){setTimeout(()=>B("error","/testmd","Finish or cancel the current run first."),0);return}en(!1),!(ve==="generate"&&!ft.requestSwitch("run"))&&(ve==="generate"&&setTimeout(()=>B("ok","/testmd",`Switched to Run mode to run ${m.relPath}`,void 0,l.orange),0),pe.start(m.path).catch(x=>setTimeout(()=>B("error","/testmd",`Run failed: ${x.message}`),0)))},onExport:m=>{en(!1),Js(m.path,{language:I.code_export.language??"python",env:de}).then(x=>setTimeout(()=>B("ok","/testmd",`Exported code \u2192 ${x.codeDir}`),0)).catch(x=>setTimeout(()=>B("error","/testmd",`Export failed: ${x.message}`),0))}}),bt&&!_.isRunning&&(()=>{let m=Wi.find(x=>x.id===bt);return m?.children?(0,R.jsx)(wi,{items:m.children,onRunSelected:()=>Cr(null),onDismiss:()=>Cr(null),onActiveViewChange:Oi,renderLoginWizard:x=>{let f=P?.phase??"wizard";if(f==="project")return(0,R.jsx)(cr,{resolver:S.getResolver(),currentProjectId:null,env:P.env,onSelect:(h,E)=>{S.creds.saveProfileConfig(P.profile,P.env,{project_id:h,project_name:E}),B("ok","/config project",E,`id: ${h}`),ye(L=>L?{...L,phase:"folder"}:null)},onCancel:async()=>{if(!P)return;let h=await fo(P.profile,P.env);h&&(ht(S.creds,p,P.profile,P.env,{projectId:h.id,projectName:h.name}),B("ok","/config project",h.name,`id: ${h.id}`),ye(E=>E?{...E,phase:"folder"}:null))}});if(f==="folder"){let h=S.creds.loadProfileConfig(P.profile,P.env);return(0,R.jsx)(lr,{resolver:S.getResolver(),projectId:h?.project_id??"",currentFolderId:null,env:P.env,onSelect:(E,L)=>{S.creds.saveProfileConfig(P.profile,P.env,{folder_id:E,folder_name:L}),B("ok","/config folder",L,`id: ${E}`),dt(P.profile,P.env),ye(null),x()},onCancel:async()=>{if(!P)return;let E=S.creds.loadProfileConfig(P.profile,P.env);if(!E?.project_id)return;let L=await mo(P.env,E.project_id);L&&(ht(S.creds,p,P.profile,P.env,{folderId:L.id,folderName:L.name}),B("ok","/config folder",L.name,`id: ${L.id}`),dt(P.profile,P.env),ye(null),x())}})}return(0,R.jsx)(gn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:S.creds.listProfiles(),onBasicLogin:async(h,E,L,U)=>{let{validateBasicAuth:q}=await import("./validate-basic-FO7C2URG.js");await q(E,L,U),S.creds.saveBasicAuth(h,E,{username:L,access_key:U}),S.creds.setActiveProfile(h),S.creds.setDefaultEnv(E),st(S.creds,p,h,E),S.setTokenValid(!0),Qe()},onOAuthLogin:async(h,E)=>{S.creds.setDefaultEnv(E),await S.login(h),st(S.creds,p,h,E),Qe()},onComplete:(h,E)=>{wt(so(E),ot).then(()=>{ye({phase:"project",profile:h,env:E})}).catch(()=>{ye({phase:"project",profile:h,env:E})})},onCancel:()=>{ye(null),x()}})},renderProfilesView:x=>(0,R.jsx)(Do,{creds:S.creds,onSwitch:(f,h)=>{let E=S.creds.getActiveProfile()??"(none)";S.creds.setActiveProfile(f),S.creds.setDefaultEnv(h),st(S.creds,p,f,h),dt(f,h),Qe(),wt($i(h),ot).catch(()=>{}),B("ok","/profiles switch",`${E} \u2192 ${f} [${h}]`),x()},onCancel:x}),renderChromeProfilePicker:x=>(0,R.jsx)(Oo,{currentPath:I.chrome_profile_path,onSelect:f=>{p.save({chrome_profile_path:f}),ge(p.load()),B("ok","/config chrome-profile",f),x()},onCancel:x}),renderProjectPicker:x=>(0,R.jsx)(cr,{resolver:S.getResolver(),currentProjectId:I.project_id,env:de,onSelect:(f,h)=>{ht(S.creds,p,S.creds.getActiveProfile()??"default",S.creds.getDefaultEnv(),{projectId:f,projectName:h}),ge(p.load()),B("ok","/config project",h,`id: ${f}`),x()},onCancel:x}),renderFolderPicker:x=>(0,R.jsx)(lr,{resolver:S.getResolver(),projectId:I.project_id??"",currentFolderId:I.folder_id,env:de,onSelect:(f,h)=>{ht(S.creds,p,S.creds.getActiveProfile()??"default",S.creds.getDefaultEnv(),{folderId:f,folderName:h}),ge(p.load()),B("ok","/config folder",h,`id: ${f}`),x()},onCancel:x}),renderWindowSizePicker:x=>(0,R.jsx)(Ci,{currentWidth:I.window_size.width,currentHeight:I.window_size.height,onSelect:(f,h)=>{p.set("window_size",{width:f,height:h}),ge(p.load()),B("ok","/config set-window",`${f} \xD7 ${h}`),x()},onCancel:x})},bt):null})(),bt&&Le&&(0,R.jsx)(b,{paddingX:1,marginTop:1,children:(0,R.jsx)(s,{color:Le.color,children:Le.text})}),ve==="run"&&!bt&&!Ir&&!kr&&!Gt&&_.askingUser&&(0,R.jsxs)(b,{flexDirection:"column",marginLeft:2,paddingLeft:1,marginTop:1,children:[(0,R.jsx)(b,{marginLeft:1,children:(0,R.jsx)(s,{color:l.orange,bold:!0,children:"Agent Question"})}),(0,R.jsx)(b,{borderStyle:"round",borderColor:l.orange,flexDirection:"column",paddingX:2,paddingY:1,width:70,children:(0,R.jsxs)(b,{children:[(0,R.jsx)(b,{width:3,children:(0,R.jsx)(s,{color:l.orange,bold:!0,children:"?"})}),(0,R.jsx)(b,{flexShrink:1,children:(0,R.jsx)(s,{wrap:"wrap",children:_.askingUser})})]})})]}),tn&&(()=>{let m=tn,x=m.reason==="switch"?m.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?",f=m.reason==="switch"?"Discard & switch":"Yes, end";return(0,R.jsx)($u,{message:x,confirmLabel:f,onConfirm:async()=>{if(m.reason==="switch"){let E=m.to;Ar(null),ft.confirmSwitch(E);return}$t();let h=m.pendingArgs;if(Ar(null),await ne.end(),ne.reset(),h.profile){let E=S.creds.getDefaultEnv(),L=S.creds.getActiveProfile()??"(none)";S.creds.setActiveProfile(h.profile),S.creds.setDefaultEnv(E),st(S.creds,p,h.profile,E),dt(h.profile,E),Qe(),wt({kind:"switch",env:E},ot).catch(()=>{}),B("ok","/profiles switch",`${L} \u2192 ${h.profile} [${E}]`)}else Eo("/profiles switch")},onCancel:()=>Ar(null)})})(),ve==="run"&&!bt&&!Ir&&!kr&&!Gt&&!tn&&!pe.running&&(0,R.jsx)(Nt,{onSubmit:Eo,onEscape:void 0,history:Ku,commands:Tl,clearSeq:id,placeholder:_.askingUser?"Type your answer...":_.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"}]}),ve==="generate"&&!bt&&!Ir&&!kr&&!Gt&&!tn&&(0,R.jsx)(Bu,{tcg:ne,gm:ft,history:Ju,tuiConfig:I,browse:Dt.isOpen?{target:Dt.target,onClose:Dt.close,excluded:Dt.excluded,onToggleCase:Dt.toggleCase,onToggleScenario:Dt.toggleScenario,getStatus:ft.bifurcation.getStatus,getResult:ft.bifurcation.getResult}:null})]})]}),M&&W&&tt&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(Vo,{steps:Sr,status:tt.status,testUrl:tt.testUrl,error:tt.error}),tt.status==="success"&&(0,R.jsx)(vn,{recordedTestPath:Jr?.recordedTestPath,outputDir:Jr?.outputDir,shareableLink:tt.testUrl,testCaseLink:tt.testCaseLink,codeExportDir:tt.codeExportDir,autoExit:!1})]}),Gt&&(0,R.jsx)(pa,{defaultName:Gt,onSubmit:dd}),yr&&(0,R.jsx)(Cs,{packPath:yr.packPath,viewerBase:Ts(de??"prod"),onDone:()=>yr.resolve()}),Rr&&(0,R.jsx)(ma,{onSubmit:ud}),Zt&&tt&&(0,R.jsx)(Vo,{steps:Sr,status:tt.status,error:tt.error}),M&&!W&&(0,R.jsx)(fl,{profile:nr,environment:de,tokenValid:S.tokenValid,runCount:re,sessionId:c.sessionId,viewMode:Qr,breadcrumb:md,chatMode:ve,footerHint:cd,tcgRequestId:ne.requestId,tcgStreamStatus:ne.isStreaming?"streaming":ne.isReconnecting?"reconnecting":ne.isTerminal&&ne.state.status.toLowerCase()==="completed"?"completed":ne.isTerminal&&ne.state.status.toLowerCase()==="failed"?"failed":null})]})}function oh({profiles:e,onSelect:t,onCancel:r,validating:n}){let[o,i]=(0,y.useState)(0);return Ie((a,u)=>{if(!n){if(u.escape){r();return}if(u.upArrow&&o>0&&i(d=>d-1),u.downArrow&&o<e.length-1&&i(d=>d+1),u.return){let d=e[o];t(d.profile,d.env)}}}),(0,R.jsxs)(b,{flexDirection:"column",paddingX:1,children:[(0,R.jsx)(s,{color:"#ff9500",bold:!0,children:"Select a profile:"}),(0,R.jsx)(b,{marginTop:1,flexDirection:"column",children:e.map((a,u)=>(0,R.jsxs)(s,{children:[u===o?"\u276F ":" ",(0,R.jsx)(s,{color:u===o?"#ff9500":"white",bold:u===o,children:a.profile}),(0,R.jsxs)(s,{color:"gray",children:[" [",a.env,"]"]})]},`${a.profile}-${a.env}`))}),n&&(0,R.jsx)(b,{marginTop:1,children:(0,R.jsx)(s,{color:"yellow",children:"Validating credentials..."})}),!n&&(0,R.jsx)(b,{marginTop:1,children:(0,R.jsx)(s,{color:"gray",children:"Esc = new login"})})]})}export{Sl as a,Fu as b,qu as c,Ay as d};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as g}from"./chunk-UOGJUJCF.js";import{spawn as N,execSync as O}from"child_process";import{existsSync as v}from"fs";import{resolve as r,dirname as b}from"path";import{fileURLToPath as T}from"url";import{createInterface as A}from"readline";async function*E(s){let e=A({input:s,crlfDelay:1/0});for await(let d of e){let t=d.trim();if(t)try{let c=JSON.parse(t);c&&typeof c.type=="string"&&(yield c)}catch{}}}function S(s){return s==="action"?{set:{V16_AGENT_ENABLE_ALL_BLOCKERS:"true",V16_AGENT_SKIP_CP_FINAL:"true",V16_BIFURCATION_PHASES:"1"},unset:["V16_NETWORK_WS","V16_NETWORK_SSE"]}:{set:{V16_BIFURCATION_PHASES:"1"},unset:["V16_AGENT_ENABLE_ALL_BLOCKERS","V16_AGENT_SKIP_CP_FINAL","V16_NETWORK_WS","V16_NETWORK_SSE"]}}function R(s){return s==="dom"?{set:{V16_AGENT_ENABLE_TEXTUAL_VISUAL:"true"},unset:[]}:{set:{},unset:["V16_AGENT_ENABLE_TEXTUAL_VISUAL"]}}var o=b(T(import.meta.url));function h(){for(let s of["python3","python"])try{return O(`${s} --version`,{stdio:"ignore"}),s}catch{}return null}function C(){let e=process.platform==="win32"?"v16-runner.exe":"v16-runner",d={"darwin-arm64":["@testmuai/kane-cli-darwin-arm64","@lambdatestincprivate/kane-cli-darwin-arm64"],"darwin-x64":["@testmuai/kane-cli-darwin-x64","@lambdatestincprivate/kane-cli-darwin-x64"],"linux-x64":["@testmuai/kane-cli-linux-x64","@lambdatestincprivate/kane-cli-linux-x64"],"linux-arm64":["@testmuai/kane-cli-linux-arm64","@lambdatestincprivate/kane-cli-linux-arm64"],"win32-x64":["@testmuai/kane-cli-win-x64","@lambdatestincprivate/kane-cli-win-x64"]},t=`${process.platform}-${process.arch}`,c=d[t];if(c)for(let n of c){let l=[r(o,"..","node_modules",n,"bin",e),r(o,"..","..","node_modules",n,"bin",e),r(o,"..","..","..","node_modules",n,"bin",e),r(o,"..","..","..","..","node_modules",n,"bin",e)];for(let a of l)if(v(a))return{cmd:a,args:[]}}let m=[r(o,"bin",e),r(o,"..","bin",e),r(o,"..","..","..","..","v16-runner","dist",e),r(o,"..","..","..","v16-runner","dist",e),r(o,"..","..","v16-runner","dist",e),r(process.cwd(),"v16-runner","dist",e),r(process.cwd(),"..","v16-runner","dist",e)];for(let n of m)if(v(n))return{cmd:n,args:[]};let p=[r(o,"..","..","v16-runner"),r(o,"..","..","..","..","v16-runner"),r(o,"..","..","..","v16-runner"),r(process.cwd(),"v16-runner"),r(process.cwd(),"..","v16-runner")];for(let n of p)if(v(r(n,"main.py"))){for(let a of[r(n,".venv","bin","python"),r(n,"..",".venv","bin","python"),r(n,"..","browser-agent",".venv","bin","python")])if(v(a))return{cmd:a,args:["main.py"],cwd:n};let l=h();if(l)return{cmd:l,args:["main.py"],cwd:n}}return null}function W(s,e){let d=C();if(!d)throw new Error("v16-runner not found. Build the binary with `cd v16-runner && python build.py` or ensure Python is available.");process.env.KANE_SPAWN_DEBUG&&process.stderr.write(`[spawn-debug] ${JSON.stringify(d)}
|
|
3
|
+
`);let t={...process.env};e?.environment&&(t.TESTMUAI_ENV=e.environment),t.TESTMUAI_SOURCE="kane-cli",process.platform==="win32"&&(t.PYTHONIOENCODING="utf-8");let c=g(e?.environment);t.V16_SERVER_API_HOST=c.v16ServerHost,t.ATMS_URL=c.tmsBaseUrl.replace(/\/api\/?$/,""),s.username&&s.access_key&&(t.LT_USERNAME=s.username,t.LT_ACCESS_KEY=s.access_key),s.session_id&&(t.TESTMUAI_SESSION_ID=s.session_id);let m=S(e?.mode??"testing");Object.assign(t,m.set);for(let i of m.unset)delete t[i];let p=R(e?.assertionMode??"visual");Object.assign(t,p.set);for(let i of p.unset)delete t[i];let n=N(d.cmd,d.args,{stdio:["pipe","pipe","pipe"],env:t,cwd:d.cwd});n.stdin.on("error",()=>{}),n.stdin.write(JSON.stringify(s)+`
|
|
4
|
+
`);let l=1e5,a="";n.stderr.on("data",i=>{a+=i.toString(),a.length>l&&(a=a.slice(-l))}),n.on("error",i=>{e?.log?.("error","RUNNER_SPAWN_ERROR","Runner spawn error",{error:i.message})});let _=null,f=null,w=new Promise(i=>{n.on("close",(u,y)=>{_=u,f=y?String(y):null,e?.log?.("info","RUNNER_EXIT","Runner exited",{code:u,signal:f??"none"}),i({code:u,signal:f})})}),x=E(n.stdout);return{child:n,events:x,sendUserResponse(i){let u=JSON.stringify({type:"user_response",answer:i});try{n.stdin.write(u+`
|
|
5
|
+
`)}catch{}},sendCancel(i){let u=JSON.stringify({type:"cancel",reason:i});try{n.stdin.write(u+`
|
|
6
|
+
`)}catch{}},cancel(){n.kill("SIGTERM")},get stderr(){return a},get exitCode(){return _},get exitSignal(){return f},exited:w}}export{C as a,W as b};
|