@testmuai/kane-cli 0.4.8 → 0.4.9

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