@testmuai/kane-cli 0.4.3 → 0.4.4

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