@testmuai/kane-cli 0.5.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChatSurface-R55VO3VW.js +9 -0
- package/dist/{ChromeProfilePicker-PIWZY4WH.js → ChromeProfilePicker-BZKLIO2T.js} +1 -1
- package/dist/{CliFeedbackPrompt-URXCHBZ5.js → CliFeedbackPrompt-3HYRBMXS.js} +1 -1
- package/dist/CliUploadProgress-OAPMO5I3.js +2 -0
- package/dist/{ConfigView-NWNDNTKW.js → ConfigView-YIAAISLE.js} +1 -1
- package/dist/EvidenceViewOffer-DBMZQ34Z.js +2 -0
- package/dist/FolderPicker-ILK4AIKL.js +2 -0
- package/dist/HelpView-HBQX64VR.js +2 -0
- package/dist/{InfoBox-FPAWQZGQ.js → InfoBox-DKJO73HM.js} +1 -1
- package/dist/{LinksBox-O5ZFYSK2.js → LinksBox-44WCVBT4.js} +1 -1
- package/dist/{ProfilesView-SPECXHZE.js → ProfilesView-NVEDYU3H.js} +1 -1
- package/dist/{ProjectPicker-ANJ6NGNY.js → ProjectPicker-COBY7TCY.js} +1 -1
- package/dist/{SaveSessionPrompt-W2GWELOP.js → SaveSessionPrompt-O4ENMYHP.js} +1 -1
- package/dist/ScrollbackTap-Q3IOKNMS.js +2 -0
- package/dist/SingleShotApp-NA6A2S6I.js +2 -0
- package/dist/{SummaryBox-DJUDYML7.js → SummaryBox-ROV7TNK4.js} +1 -1
- package/dist/TestMdRunView-U5YTNLY6.js +2 -0
- package/dist/{WhoamiView-DH25ZD4C.js → WhoamiView-4QV3DPN2.js} +1 -1
- package/dist/archive-committer-3NI773TP.js +2 -0
- package/dist/bind-RDTZZ6ZI.js +6 -0
- package/dist/bridge-VY2Q3HQU.js +2 -0
- package/dist/{changelog-RCKUVBFL.js → changelog-JMFGVNEU.js} +1 -1
- package/dist/chat-committer-RTJCKQMM.js +2 -0
- package/dist/chat-controller-OTBYHB4Y.js +3 -0
- package/dist/chunk-22A2ECA2.js +2 -0
- package/dist/{chunk-T4PKTWZ6.js → chunk-2PDWMY2B.js} +1 -1
- package/dist/{chunk-I4B2KY4X.js → chunk-2T4JPBB5.js} +1 -1
- package/dist/{chunk-AM5WZPPY.js → chunk-37CI4EJX.js} +1 -1
- package/dist/chunk-427OQS2N.js +2 -0
- package/dist/chunk-47RNFG2V.js +23 -0
- package/dist/{chunk-IECUFWIZ.js → chunk-4CRKK5WV.js} +1 -1
- package/dist/chunk-5446YVGQ.js +4 -0
- package/dist/{chunk-TJWU7DOO.js → chunk-5FD6ZXB5.js} +1 -1
- package/dist/chunk-5ILXUQIX.js +2 -0
- package/dist/chunk-5UXL6RNG.js +2 -0
- package/dist/chunk-5Y2G4NC7.js +2 -0
- package/dist/chunk-6PS65QFF.js +2 -0
- package/dist/chunk-7DBQEOFL.js +9 -0
- package/dist/{chunk-R5RHRG65.js → chunk-7SUKUJO2.js} +1 -1
- package/dist/{chunk-LOQV5GME.js → chunk-AAWRKFE4.js} +1 -1
- package/dist/chunk-AD46OCZ4.js +4 -0
- package/dist/chunk-AE6SS34N.js +4 -0
- package/dist/chunk-B2PZAB7J.js +4 -0
- package/dist/chunk-BC7UVJJB.js +2 -0
- package/dist/{chunk-DTM4ZMMJ.js → chunk-BMSWIYYK.js} +1 -1
- package/dist/{chunk-YSIYPC4R.js → chunk-CB3TEWZJ.js} +1 -1
- package/dist/chunk-CE664P73.js +2 -0
- package/dist/chunk-CP4XCWAJ.js +5 -0
- package/dist/chunk-D5T4ARTB.js +2 -0
- package/dist/chunk-DFS4RMVP.js +2 -0
- package/dist/chunk-DM2GL24Z.js +3 -0
- package/dist/{chunk-HZ46P2GR.js → chunk-FAIH2K2U.js} +1 -1
- package/dist/chunk-FS4YJM22.js +2 -0
- package/dist/chunk-FXPPQL4D.js +6 -0
- package/dist/chunk-FYOCF7DY.js +2 -0
- package/dist/chunk-GIGD4M7V.js +5 -0
- package/dist/chunk-GIRXJOJI.js +2 -0
- package/dist/chunk-HGL3RM7P.js +8 -0
- package/dist/{chunk-HFXQU7UZ.js → chunk-HMGNPFXP.js} +1 -1
- package/dist/chunk-I2S6KNZW.js +2 -0
- package/dist/chunk-IACKIGPX.js +2 -0
- package/dist/{chunk-C4LYBQT3.js → chunk-IRDMEYJB.js} +2 -2
- package/dist/{chunk-4IOOBSNB.js → chunk-ISAE457F.js} +1 -1
- package/dist/{chunk-AFCEFOIK.js → chunk-J5BUMF3G.js} +1 -1
- package/dist/chunk-JFAFKHDX.js +4 -0
- package/dist/{chunk-6E5UYAEB.js → chunk-KFAYCOTB.js} +1 -1
- package/dist/{chunk-UOGJUJCF.js → chunk-KGP7NSXH.js} +1 -1
- package/dist/chunk-KHDUQ33H.js +2 -0
- package/dist/chunk-KHU7C6EE.js +2 -0
- package/dist/chunk-LMJTY32X.js +6 -0
- package/dist/chunk-M5JQXOCE.js +12 -0
- package/dist/chunk-MJFYMMX2.js +2 -0
- package/dist/chunk-MMI3VSCA.js +6 -0
- package/dist/{chunk-NLIOFVMP.js → chunk-MZ2PXBKK.js} +1 -1
- package/dist/chunk-N2ZW5635.js +6 -0
- package/dist/chunk-NNZV5RCE.js +2 -0
- package/dist/{chunk-7IBNOVML.js → chunk-NSSKSXCT.js} +1 -1
- package/dist/{chunk-PISZLYS5.js → chunk-O4O4KL6Z.js} +1 -1
- package/dist/{chunk-QO6PAA7Q.js → chunk-OBBXDBEE.js} +2 -2
- package/dist/chunk-Q4P2L7DY.js +2 -0
- package/dist/chunk-Q4PUOA46.js +61 -0
- package/dist/chunk-QPZRHAYK.js +4 -0
- package/dist/chunk-QZWQCHXK.js +11 -0
- package/dist/{chunk-7AEC572G.js → chunk-R2K2SGGE.js} +1 -1
- package/dist/{chunk-3FN66LTP.js → chunk-RFHMDQXZ.js} +1 -1
- package/dist/chunk-RGEAEAZB.js +20 -0
- package/dist/{chunk-GEAWRRR7.js → chunk-RH2OAIJI.js} +1 -1
- package/dist/chunk-RKWJG3WW.js +19 -0
- package/dist/{chunk-IU53F4ZV.js → chunk-ROPXE7TF.js} +1 -1
- package/dist/chunk-RY4OOGSC.js +14 -0
- package/dist/chunk-S74MQRDN.js +2 -0
- package/dist/{chunk-ZWAZ4QU4.js → chunk-SB6MBQKR.js} +1 -1
- package/dist/{chunk-XDERMCAU.js → chunk-SQJWMOJQ.js} +1 -1
- package/dist/{chunk-ELBPBHTE.js → chunk-SUDAFBVD.js} +2 -2
- package/dist/chunk-VJUIW2ES.js +4 -0
- package/dist/chunk-VXD5667K.js +7 -0
- package/dist/chunk-WAGJLR5X.js +356 -0
- package/dist/chunk-WGG5XURS.js +13 -0
- package/dist/chunk-WRHZCHZY.js +2 -0
- package/dist/chunk-XDW2RGIL.js +7 -0
- package/dist/chunk-YANCBRER.js +3 -0
- package/dist/{chunk-THEZSXZM.js → chunk-YJ6AQ2KP.js} +1 -1
- package/dist/chunk-Z56AWGVY.js +2 -0
- package/dist/{chunk-PTP3WS3N.js → chunk-ZA67EBYF.js} +1 -1
- package/dist/chunk-ZKYYZ5NO.js +6 -0
- package/dist/{chunk-TPG2T5GH.js → chunk-ZNANAARA.js} +1 -1
- package/dist/cover-cmd-Y5L4O4Q3.js +2 -0
- package/dist/{credentials-52QRPGET.js → credentials-L63BBW2S.js} +1 -1
- package/dist/descriptor-SL5A7RQE.js +2 -0
- package/dist/distill-cmd-EYCCCFL3.js +2 -0
- package/dist/evidence-UAFPTHQX.js +2 -0
- package/dist/evolve-cmd-2SPNVTT4.js +2 -0
- package/dist/{exit-manager-IUHAXFJ6.js → exit-manager-VCSIUYBR.js} +1 -1
- package/dist/explain-JIXUWEFJ.js +2 -0
- package/dist/explain-cmd-55WRDIMW.js +9 -0
- package/dist/explain-cmd-RIDEMDMY.js +3 -0
- package/dist/extract-bind-DS4UP23P.js +5 -0
- package/dist/extract-cmd-PMZHMMU7.js +6 -0
- package/dist/gaps-cmd-P2DRK6FW.js +2 -0
- package/dist/gate-FACZRGOC.js +2 -0
- package/dist/{generate-headless-WG6ZPINI.js → generate-headless-C3UZKDS5.js} +2 -2
- package/dist/headless-io-GXHKDPHB.js +2 -0
- package/dist/index.js +55 -54
- package/dist/ingest-4CGBXC2L.js +2 -0
- package/dist/ingest-cmd-FJ3SLTT4.js +3 -0
- package/dist/interactive-bind-SJLDJULN.js +7 -0
- package/dist/interrupt-guard-UREUWNRL.js +2 -0
- package/dist/lifecycle-cmd-56OZT4LY.js +2 -0
- package/dist/list-cmd-JB2ABACD.js +3 -0
- package/dist/list-commands-PGAX5HRB.js +2 -0
- package/dist/logical-ids-QRRUXV5E.js +2 -0
- package/dist/login-flow-4OJ34VDP.js +2 -0
- package/dist/maintenance-cmd-E3HEEVQW.js +2 -0
- package/dist/open-MQLQKFAW.js +2 -0
- package/dist/{persist-recorded-session-XKPZX7HW.js → persist-recorded-session-WFU4M4SQ.js} +1 -1
- package/dist/pipeline-EYQUM27P.js +2 -0
- package/dist/readmodel-MPTENJ2R.js +2 -0
- package/dist/reconcile-cmd-TFFYCTCY.js +8 -0
- package/dist/{recording-banner-2TNKQHP2.js → recording-banner-PH2NND2X.js} +1 -1
- package/dist/{require-project-folder-SJG5FQY6.js → require-project-folder-RD2UAB7E.js} +1 -1
- package/dist/revert-3TKLOYQA.js +2 -0
- package/dist/review-cmd-SL52N4TM.js +4 -0
- package/dist/run-NODOSQUL.js +2 -0
- package/dist/run-test-md-I6O4H7B2.js +17 -0
- package/dist/{scrollback-6GINSTL2.js → scrollback-JLPJR25X.js} +1 -1
- package/dist/sessions-cmd-STHKGDX4.js +23 -0
- package/dist/signals-cmd-LXHZQLXZ.js +2 -0
- package/dist/{skill-installer-M6AREQQW.js → skill-installer-BJLHH3DW.js} +1 -1
- package/dist/spawner-UDCF35OA.js +2 -0
- package/dist/tcg-generate-E7H4LF7Y.js +2 -0
- package/dist/testmd-actions-FMVUXZGX.js +2 -0
- package/dist/token-refresh-OGBTJGZ2.js +2 -0
- package/dist/turn-preflight-I5SM4UIZ.js +2 -0
- package/dist/ui-JEJGTURD.js +4 -0
- package/dist/{validate-basic-FO7C2URG.js → validate-basic-WILRWRRP.js} +1 -1
- package/dist/{version-check-PHZX5WS7.js → version-check-TXTCVX2N.js} +1 -1
- package/dist/view-cmd-QE2FS3GB.js +436 -0
- package/package.json +6 -6
- package/dist/CliUploadProgress-DMH3C3UZ.js +0 -2
- package/dist/EvidenceViewOffer-HEBQ7C4H.js +0 -2
- package/dist/FolderPicker-5S23OTSY.js +0 -2
- package/dist/HelpView-YYKTP4JH.js +0 -2
- package/dist/SingleShotApp-5TYM356H.js +0 -2
- package/dist/TestMdRunView-BIVXQE54.js +0 -2
- package/dist/chunk-54TKNWXF.js +0 -5
- package/dist/chunk-5MTRNUAK.js +0 -2
- package/dist/chunk-7KDNH6JP.js +0 -10
- package/dist/chunk-7YRNLGUT.js +0 -11
- package/dist/chunk-C6S4IEBC.js +0 -2
- package/dist/chunk-DJL47DYJ.js +0 -8
- package/dist/chunk-H6QJ4YU7.js +0 -2
- package/dist/chunk-J75KVNX5.js +0 -18
- package/dist/chunk-MUPHP5W6.js +0 -27
- package/dist/chunk-NAYAVVTP.js +0 -6
- package/dist/chunk-P5XBCJYQ.js +0 -7
- package/dist/chunk-Q2I65L2W.js +0 -6
- package/dist/chunk-QCEWUUE6.js +0 -55
- package/dist/chunk-V2GYBVSM.js +0 -2
- package/dist/chunk-Y44AETOW.js +0 -2
- package/dist/chunk-YCNCW4O4.js +0 -8
- package/dist/evidence-O4AON5FU.js +0 -2
- package/dist/list-commands-VJAL4J3O.js +0 -2
- package/dist/login-flow-VZ2MITFA.js +0 -2
- package/dist/pipeline-CADTHPDV.js +0 -2
- package/dist/run-test-md-INJKPE2I.js +0 -13
- package/dist/tcg-generate-VKFXR5JT.js +0 -2
- package/dist/testmd-actions-4QLHD74A.js +0 -2
- package/dist/token-refresh-2HKIYD4Y.js +0 -2
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as da}from"./chunk-ZA67EBYF.js";import{a as zs,b as Vo,c as xn,d as Ys,e as vn,f as Ks,h as Js,i as Qs,j as Zs,k as ea,l as ta,m as St,n as ra,o as na,p as oa,q as bn,r as ia,s as Mo,t as sa,u as aa,v as ca}from"./chunk-R2K2SGGE.js";import{a as Io,b as Xi}from"./chunk-3MSXQU2C.js";import{a as la,b as ua}from"./chunk-MMI3VSCA.js";import{B as bt,E as Ws,a as rs,b as ns,d as ds,e as fs,f as ms,g as Rs,h as Ts,i as Es,j as $o,k as ks,m as Oo,n as Ns,o as No,q as js,r as Vs,s as Ms,t as Fs,u as jo,v as Us,w as qs,x as Hs}from"./chunk-Q4PUOA46.js";import{c as Ps,d as Ls,n as Xs}from"./chunk-SUDAFBVD.js";import{a as fa,b as Fo}from"./chunk-AAWRKFE4.js";import{b as _s,s as Bs}from"./chunk-RKWJG3WW.js";import{a as mn,b as Cs,c as Is}from"./chunk-S74MQRDN.js";import{a as zi,c as ko,d as Dt}from"./chunk-QZWQCHXK.js";import{c as pn}from"./chunk-2PDWMY2B.js";import{a as Ji,b as Qi,c as Zi,d as gs,e as As,g as $s}from"./chunk-J5BUMF3G.js";import{c as ps}from"./chunk-O4O4KL6Z.js";import{a as cr}from"./chunk-HGL3RM7P.js";import{a as gn,b as Ds,c as Do}from"./chunk-YJ6AQ2KP.js";import{a as Ao}from"./chunk-5Y2G4NC7.js";import{c as Os}from"./chunk-5UXL6RNG.js";import{a as hn}from"./chunk-MZ2PXBKK.js";import{c as Gs}from"./chunk-GIGD4M7V.js";import{a as ls}from"./chunk-BMSWIYYK.js";import{a as us}from"./chunk-FPFOW6BS.js";import{a as ys}from"./chunk-WRHZCHZY.js";import{F as hs,L as xs,M as Bo,N as vs,O as bs,R as Ss,T as ws}from"./chunk-WGG5XURS.js";import{c as Lo}from"./chunk-ROPXE7TF.js";import{b as sr}from"./chunk-KFAYCOTB.js";import{b as ar}from"./chunk-SQJWMOJQ.js";import{a as is,e as vt,f as Lr,g as Ot,h as lr}from"./chunk-M5JQXOCE.js";import{h as ss}from"./chunk-OBBXDBEE.js";import{a as Pr}from"./chunk-2WVKOZ6W.js";import{a as es}from"./chunk-NLCCBXXV.js";import{a as it,b as pt,c as os}from"./chunk-VE3SUJMA.js";import{a as cs}from"./chunk-ISAE457F.js";import{a as as}from"./chunk-RH2OAIJI.js";import{a as De}from"./chunk-KGP7NSXH.js";import{a as ts}from"./chunk-RZ4F3BHX.js";import{a as fn}from"./chunk-4CRKK5WV.js";import{a as _o}from"./chunk-SB6MBQKR.js";import{a as It,b as Yi}from"./chunk-NSSKSXCT.js";import{b as Ki}from"./chunk-DFS4RMVP.js";import{b as Po}from"./chunk-FAIH2K2U.js";import{a as ir}from"./chunk-CB3TEWZJ.js";import{a as ot,c as Xe,j as Eo,n as Wi,o as Co,x as l}from"./chunk-HMGNPFXP.js";import{a as M}from"./chunk-HCBYKLMW.js";import{a as b,b as s,i as Ie,j as Gi,k as or}from"./chunk-C44QQJR4.js";import{a as xe}from"./chunk-6YGTRKDT.js";import{c as z,e as k}from"./chunk-UR6MHSHU.js";var dr=z((nh,ga)=>{"use strict";var ud="2.0.0",dd=Number.MAX_SAFE_INTEGER||9007199254740991,fd=16,md=250,pd=["major","premajor","minor","preminor","patch","prepatch","prerelease"];ga.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:fd,MAX_SAFE_BUILD_LENGTH:md,MAX_SAFE_INTEGER:dd,RELEASE_TYPES:pd,SEMVER_SPEC_VERSION:ud,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var Br=z((oh,ha)=>{"use strict";var gd=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};ha.exports=gd});var fr=z((wt,xa)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:Uo,MAX_SAFE_BUILD_LENGTH:hd,MAX_LENGTH:xd}=dr(),vd=Br();wt=xa.exports={};var bd=wt.re=[],Sd=wt.safeRe=[],N=wt.src=[],wd=wt.safeSrc=[],j=wt.t={},yd=0,qo="[a-zA-Z0-9-]",Rd=[["\\s",1],["\\d",xd],[qo,hd]],Td=e=>{for(let[t,r]of Rd)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},K=(e,t,r)=>{let n=Td(t),o=yd++;vd(e,o,t),j[e]=o,N[o]=t,wd[o]=n,bd[o]=new RegExp(t,r?"g":void 0),Sd[o]=new RegExp(n,r?"g":void 0)};K("NUMERICIDENTIFIER","0|[1-9]\\d*");K("NUMERICIDENTIFIERLOOSE","\\d+");K("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${qo}*`);K("MAINVERSION",`(${N[j.NUMERICIDENTIFIER]})\\.(${N[j.NUMERICIDENTIFIER]})\\.(${N[j.NUMERICIDENTIFIER]})`);K("MAINVERSIONLOOSE",`(${N[j.NUMERICIDENTIFIERLOOSE]})\\.(${N[j.NUMERICIDENTIFIERLOOSE]})\\.(${N[j.NUMERICIDENTIFIERLOOSE]})`);K("PRERELEASEIDENTIFIER",`(?:${N[j.NONNUMERICIDENTIFIER]}|${N[j.NUMERICIDENTIFIER]})`);K("PRERELEASEIDENTIFIERLOOSE",`(?:${N[j.NONNUMERICIDENTIFIER]}|${N[j.NUMERICIDENTIFIERLOOSE]})`);K("PRERELEASE",`(?:-(${N[j.PRERELEASEIDENTIFIER]}(?:\\.${N[j.PRERELEASEIDENTIFIER]})*))`);K("PRERELEASELOOSE",`(?:-?(${N[j.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${N[j.PRERELEASEIDENTIFIERLOOSE]})*))`);K("BUILDIDENTIFIER",`${qo}+`);K("BUILD",`(?:\\+(${N[j.BUILDIDENTIFIER]}(?:\\.${N[j.BUILDIDENTIFIER]})*))`);K("FULLPLAIN",`v?${N[j.MAINVERSION]}${N[j.PRERELEASE]}?${N[j.BUILD]}?`);K("FULL",`^${N[j.FULLPLAIN]}$`);K("LOOSEPLAIN",`[v=\\s]*${N[j.MAINVERSIONLOOSE]}${N[j.PRERELEASELOOSE]}?${N[j.BUILD]}?`);K("LOOSE",`^${N[j.LOOSEPLAIN]}$`);K("GTLT","((?:<|>)?=?)");K("XRANGEIDENTIFIERLOOSE",`${N[j.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);K("XRANGEIDENTIFIER",`${N[j.NUMERICIDENTIFIER]}|x|X|\\*`);K("XRANGEPLAIN",`[v=\\s]*(${N[j.XRANGEIDENTIFIER]})(?:\\.(${N[j.XRANGEIDENTIFIER]})(?:\\.(${N[j.XRANGEIDENTIFIER]})(?:${N[j.PRERELEASE]})?${N[j.BUILD]}?)?)?`);K("XRANGEPLAINLOOSE",`[v=\\s]*(${N[j.XRANGEIDENTIFIERLOOSE]})(?:\\.(${N[j.XRANGEIDENTIFIERLOOSE]})(?:\\.(${N[j.XRANGEIDENTIFIERLOOSE]})(?:${N[j.PRERELEASELOOSE]})?${N[j.BUILD]}?)?)?`);K("XRANGE",`^${N[j.GTLT]}\\s*${N[j.XRANGEPLAIN]}$`);K("XRANGELOOSE",`^${N[j.GTLT]}\\s*${N[j.XRANGEPLAINLOOSE]}$`);K("COERCEPLAIN",`(^|[^\\d])(\\d{1,${Uo}})(?:\\.(\\d{1,${Uo}}))?(?:\\.(\\d{1,${Uo}}))?`);K("COERCE",`${N[j.COERCEPLAIN]}(?:$|[^\\d])`);K("COERCEFULL",N[j.COERCEPLAIN]+`(?:${N[j.PRERELEASE]})?(?:${N[j.BUILD]})?(?:$|[^\\d])`);K("COERCERTL",N[j.COERCE],!0);K("COERCERTLFULL",N[j.COERCEFULL],!0);K("LONETILDE","(?:~>?)");K("TILDETRIM",`(\\s*)${N[j.LONETILDE]}\\s+`,!0);wt.tildeTrimReplace="$1~";K("TILDE",`^${N[j.LONETILDE]}${N[j.XRANGEPLAIN]}$`);K("TILDELOOSE",`^${N[j.LONETILDE]}${N[j.XRANGEPLAINLOOSE]}$`);K("LONECARET","(?:\\^)");K("CARETTRIM",`(\\s*)${N[j.LONECARET]}\\s+`,!0);wt.caretTrimReplace="$1^";K("CARET",`^${N[j.LONECARET]}${N[j.XRANGEPLAIN]}$`);K("CARETLOOSE",`^${N[j.LONECARET]}${N[j.XRANGEPLAINLOOSE]}$`);K("COMPARATORLOOSE",`^${N[j.GTLT]}\\s*(${N[j.LOOSEPLAIN]})$|^$`);K("COMPARATOR",`^${N[j.GTLT]}\\s*(${N[j.FULLPLAIN]})$|^$`);K("COMPARATORTRIM",`(\\s*)${N[j.GTLT]}\\s*(${N[j.LOOSEPLAIN]}|${N[j.XRANGEPLAIN]})`,!0);wt.comparatorTrimReplace="$1$2$3";K("HYPHENRANGE",`^\\s*(${N[j.XRANGEPLAIN]})\\s+-\\s+(${N[j.XRANGEPLAIN]})\\s*$`);K("HYPHENRANGELOOSE",`^\\s*(${N[j.XRANGEPLAINLOOSE]})\\s+-\\s+(${N[j.XRANGEPLAINLOOSE]})\\s*$`);K("STAR","(<|>)?=?\\s*\\*");K("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");K("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var Sn=z((ih,va)=>{"use strict";var Ed=Object.freeze({loose:!0}),Cd=Object.freeze({}),Id=e=>e?typeof e!="object"?Ed:e:Cd;va.exports=Id});var Ho=z((sh,wa)=>{"use strict";var ba=/^[0-9]+$/,Sa=(e,t)=>{if(typeof e=="number"&&typeof t=="number")return e===t?0:e<t?-1:1;let r=ba.test(e),n=ba.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1},kd=(e,t)=>Sa(t,e);wa.exports={compareIdentifiers:Sa,rcompareIdentifiers:kd}});var Oe=z((ah,Ra)=>{"use strict";var wn=Br(),{MAX_LENGTH:ya,MAX_SAFE_INTEGER:yn}=dr(),{safeRe:Rn,t:Tn}=fr(),Ad=Sn(),{compareIdentifiers:Go}=Ho(),_d=(e,t)=>{let r=t.split(".");if(r.length>e.length)return!1;for(let n=0;n<r.length;n++)if(Go(e[n],r[n])!==0)return!1;return!0},Wo=class e{constructor(t,r){if(r=Ad(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>ya)throw new TypeError(`version is longer than ${ya} characters`);wn("SemVer",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=t.trim().match(r.loose?Rn[Tn.LOOSE]:Rn[Tn.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>yn||this.major<0)throw new TypeError("Invalid major version");if(this.minor>yn||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>yn||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(o=>{if(/^[0-9]+$/.test(o)){let i=+o;if(i>=0&&i<yn)return i}return o}):this.prerelease=[],this.build=n[5]?n[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(wn("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(wn("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 Go(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(wn("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 Go(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?Rn[Tn.PRERELEASELOOSE]:Rn[Tn.PRERELEASE]);if(!o||o[1]!==r)throw new Error(`invalid identifier: ${r}`)}}switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,n),this.inc("pre",r,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r,n),this.inc("pre",r,n);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let o=Number(n)?1:0;if(this.prerelease.length===0)this.prerelease=[o];else{let i=this.prerelease.length;for(;--i>=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);if(i===-1){if(r===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(o)}}if(r){let i=[r,o];if(n===!1&&(i=[r]),_d(this.prerelease,r)){let a=this.prerelease[r.split(".").length];isNaN(a)&&(this.prerelease=i)}else this.prerelease=i}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};Ra.exports=Wo});var Nt=z((ch,Ea)=>{"use strict";var Ta=Oe(),Pd=(e,t,r=!1)=>{if(e instanceof Ta)return e;try{return new Ta(e,t)}catch(n){if(!r)return null;throw n}};Ea.exports=Pd});var Ia=z((lh,Ca)=>{"use strict";var Ld=Nt(),Bd=(e,t)=>{let r=Ld(e,t);return r?r.version:null};Ca.exports=Bd});var Aa=z((uh,ka)=>{"use strict";var $d=Nt(),Dd=(e,t)=>{let r=$d(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null};ka.exports=Dd});var La=z((dh,Pa)=>{"use strict";var _a=Oe(),Od=(e,t,r,n,o)=>{typeof r=="string"&&(o=n,n=r,r=void 0);try{return new _a(e instanceof _a?e.version:e,r).inc(t,n,o).version}catch{return null}};Pa.exports=Od});var Da=z((fh,$a)=>{"use strict";var Ba=Nt(),Nd=(e,t)=>{let r=Ba(e,null,!0),n=Ba(t,null,!0),o=r.compare(n);if(o===0)return null;let i=o>0,a=i?r:n,u=i?n:r,f=!!a.prerelease.length;if(!!u.prerelease.length&&!f){if(!u.patch&&!u.minor)return"major";if(u.compareMain(a)===0)return u.minor&&!u.patch?"minor":"patch"}let w=f?"pre":"";return r.major!==n.major?w+"major":r.minor!==n.minor?w+"minor":r.patch!==n.patch?w+"patch":"prerelease"};$a.exports=Nd});var Na=z((mh,Oa)=>{"use strict";var jd=Oe(),Vd=(e,t)=>new jd(e,t).major;Oa.exports=Vd});var Va=z((ph,ja)=>{"use strict";var Md=Oe(),Fd=(e,t)=>new Md(e,t).minor;ja.exports=Fd});var Fa=z((gh,Ma)=>{"use strict";var Ud=Oe(),qd=(e,t)=>new Ud(e,t).patch;Ma.exports=qd});var qa=z((hh,Ua)=>{"use strict";var Hd=Nt(),Gd=(e,t)=>{let r=Hd(e,t);return r&&r.prerelease.length?r.prerelease:null};Ua.exports=Gd});var st=z((xh,Ga)=>{"use strict";var Ha=Oe(),Wd=(e,t,r)=>new Ha(e,r).compare(new Ha(t,r));Ga.exports=Wd});var Xa=z((vh,Wa)=>{"use strict";var Xd=st(),zd=(e,t,r)=>Xd(t,e,r);Wa.exports=zd});var Ya=z((bh,za)=>{"use strict";var Yd=st(),Kd=(e,t)=>Yd(e,t,!0);za.exports=Kd});var En=z((Sh,Ja)=>{"use strict";var Ka=Oe(),Jd=(e,t,r)=>{let n=new Ka(e,r),o=new Ka(t,r);return n.compare(o)||n.compareBuild(o)};Ja.exports=Jd});var Za=z((wh,Qa)=>{"use strict";var Qd=En(),Zd=(e,t)=>e.sort((r,n)=>Qd(r,n,t));Qa.exports=Zd});var tc=z((yh,ec)=>{"use strict";var ef=En(),tf=(e,t)=>e.sort((r,n)=>ef(n,r,t));ec.exports=tf});var $r=z((Rh,rc)=>{"use strict";var rf=st(),nf=(e,t,r)=>rf(e,t,r)>0;rc.exports=nf});var Cn=z((Th,nc)=>{"use strict";var of=st(),sf=(e,t,r)=>of(e,t,r)<0;nc.exports=sf});var Xo=z((Eh,oc)=>{"use strict";var af=st(),cf=(e,t,r)=>af(e,t,r)===0;oc.exports=cf});var zo=z((Ch,ic)=>{"use strict";var lf=st(),uf=(e,t,r)=>lf(e,t,r)!==0;ic.exports=uf});var In=z((Ih,sc)=>{"use strict";var df=st(),ff=(e,t,r)=>df(e,t,r)>=0;sc.exports=ff});var kn=z((kh,ac)=>{"use strict";var mf=st(),pf=(e,t,r)=>mf(e,t,r)<=0;ac.exports=pf});var Yo=z((Ah,cc)=>{"use strict";var gf=Xo(),hf=zo(),xf=$r(),vf=In(),bf=Cn(),Sf=kn(),wf=(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 gf(e,r,n);case"!=":return hf(e,r,n);case">":return xf(e,r,n);case">=":return vf(e,r,n);case"<":return bf(e,r,n);case"<=":return Sf(e,r,n);default:throw new TypeError(`Invalid operator: ${t}`)}};cc.exports=wf});var uc=z((_h,lc)=>{"use strict";var yf=Oe(),Rf=Nt(),{safeRe:An,t:_n}=fr(),Tf=(e,t)=>{if(e instanceof yf)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?An[_n.COERCEFULL]:An[_n.COERCE]);else{let f=t.includePrerelease?An[_n.COERCERTLFULL]:An[_n.COERCERTL],v;for(;(v=f.exec(e))&&(!r||r.index+r[0].length!==e.length);)(!r||v.index+v[0].length!==r.index+r[0].length)&&(r=v),f.lastIndex=v.index+v[1].length+v[2].length;f.lastIndex=-1}if(r===null)return null;let n=r[2],o=r[3]||"0",i=r[4]||"0",a=t.includePrerelease&&r[5]?`-${r[5]}`:"",u=t.includePrerelease&&r[6]?`+${r[6]}`:"";return Rf(`${n}.${o}.${i}${a}${u}`,t)};lc.exports=Tf});var fc=z((Ph,dc)=>{"use strict";var Ef=Nt(),Cf=dr(),If=Oe(),kf=(e,t,r)=>{if(!Cf.RELEASE_TYPES.includes(t))return null;let n=Af(e,r);return n&&_f(n,t)},Af=(e,t)=>{let r=e instanceof If?e.version:e;return Ef(r,t)},_f=(e,t)=>{if(Pf(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()},Pf=e=>e.startsWith("pre");dc.exports=kf});var pc=z((Lh,mc)=>{"use strict";var Ko=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}};mc.exports=Ko});var at=z((Bh,vc)=>{"use strict";var Lf=/\s+/g,Jo=class e{constructor(t,r){if(r=$f(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof Qo)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(Lf," "),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=>!hc(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&&qf(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(Uf,"");let n=((this.options.includePrerelease&&Mf)|(this.options.loose&&Ff))+":"+t,o=gc.get(n);if(o)return o;let i=this.options.loose,a=i?ze[Ne.HYPHENRANGELOOSE]:ze[Ne.HYPHENRANGE];t=t.replace(a,em(this.options.includePrerelease)),he("hyphen replace",t),t=t.replace(ze[Ne.COMPARATORTRIM],Nf),he("comparator trim",t),t=t.replace(ze[Ne.TILDETRIM],jf),he("tilde trim",t),t=t.replace(ze[Ne.CARETTRIM],Vf),he("caret trim",t);let u=t.split(" ").map(g=>Hf(g,this.options)).join(" ").split(/\s+/).map(g=>Zf(g,this.options));i&&(u=u.filter(g=>(he("loose invalid filter",g,this.options),!!g.match(ze[Ne.COMPARATORLOOSE])))),he("range list",u);let f=new Map,v=u.map(g=>new Qo(g,this.options));for(let g of v){if(hc(g))return[g];f.set(g.value,g)}f.size>1&&f.has("")&&f.delete("");let w=[...f.values()];return gc.set(n,w),w}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(n=>xc(n,r)&&t.set.some(o=>xc(o,r)&&n.every(i=>o.every(a=>i.intersects(a,r)))))}test(t){if(!t)return!1;if(typeof t=="string")try{t=new Df(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(tm(this.set[r],t,this.options))return!0;return!1}};vc.exports=Jo;var Bf=pc(),gc=new Bf,$f=Sn(),Qo=Dr(),he=Br(),Df=Oe(),{safeRe:ze,src:Of,t:Ne,comparatorTrimReplace:Nf,tildeTrimReplace:jf,caretTrimReplace:Vf}=fr(),{FLAG_INCLUDE_PRERELEASE:Mf,FLAG_LOOSE:Ff}=dr(),Uf=new RegExp(Of[Ne.BUILD],"g"),hc=e=>e.value==="<0.0.0-0",qf=e=>e.value==="",xc=(e,t)=>{let r=!0,n=e.slice(),o=n.pop();for(;r&&n.length;)r=n.every(i=>o.intersects(i,t)),o=n.pop();return r},Hf=(e,t)=>(e=e.replace(ze[Ne.BUILD],""),he("comp",e,t),e=zf(e,t),he("caret",e),e=Wf(e,t),he("tildes",e),e=Kf(e,t),he("xrange",e),e=Qf(e,t),he("stars",e),e),Ee=e=>!e||e.toLowerCase()==="x"||e==="*",Gf=(e,t,r)=>Ee(e)&&!Ee(t)||Ee(t)&&r&&!Ee(r),Wf=(e,t)=>e.trim().split(/\s+/).map(r=>Xf(r,t)).join(" "),Xf=(e,t)=>{let r=t.loose?ze[Ne.TILDELOOSE]:ze[Ne.TILDE];return e.replace(r,(n,o,i,a,u)=>{he("tilde",e,n,o,i,a,u);let f;return Ee(o)?f="":Ee(i)?f=`>=${o}.0.0 <${+o+1}.0.0-0`:Ee(a)?f=`>=${o}.${i}.0 <${o}.${+i+1}.0-0`:u?(he("replaceTilde pr",u),f=`>=${o}.${i}.${a}-${u} <${o}.${+i+1}.0-0`):f=`>=${o}.${i}.${a} <${o}.${+i+1}.0-0`,he("tilde return",f),f})},zf=(e,t)=>e.trim().split(/\s+/).map(r=>Yf(r,t)).join(" "),Yf=(e,t)=>{he("caret",e,t);let r=t.loose?ze[Ne.CARETLOOSE]:ze[Ne.CARET],n=t.includePrerelease?"-0":"";return e.replace(r,(o,i,a,u,f)=>{he("caret",e,o,i,a,u,f);let v;return Ee(i)?v="":Ee(a)?v=`>=${i}.0.0${n} <${+i+1}.0.0-0`:Ee(u)?i==="0"?v=`>=${i}.${a}.0${n} <${i}.${+a+1}.0-0`:v=`>=${i}.${a}.0${n} <${+i+1}.0.0-0`:f?(he("replaceCaret pr",f),i==="0"?a==="0"?v=`>=${i}.${a}.${u}-${f} <${i}.${a}.${+u+1}-0`:v=`>=${i}.${a}.${u}-${f} <${i}.${+a+1}.0-0`:v=`>=${i}.${a}.${u}-${f} <${+i+1}.0.0-0`):(he("no pr"),i==="0"?a==="0"?v=`>=${i}.${a}.${u} <${i}.${a}.${+u+1}-0`:v=`>=${i}.${a}.${u} <${i}.${+a+1}.0-0`:v=`>=${i}.${a}.${u} <${+i+1}.0.0-0`),he("caret return",v),v})},Kf=(e,t)=>(he("replaceXRanges",e,t),e.split(/\s+/).map(r=>Jf(r,t)).join(" ")),Jf=(e,t)=>{e=e.trim();let r=t.loose?ze[Ne.XRANGELOOSE]:ze[Ne.XRANGE];return e.replace(r,(n,o,i,a,u,f)=>{if(he("xRange",e,n,o,i,a,u,f),Gf(i,a,u))return e;let v=Ee(i),w=v||Ee(a),g=w||Ee(u),T=g;return o==="="&&T&&(o=""),f=t.includePrerelease?"-0":"",v?o===">"||o==="<"?n="<0.0.0-0":n="*":o&&T?(w&&(a=0),u=0,o===">"?(o=">=",w?(i=+i+1,a=0,u=0):(a=+a+1,u=0)):o==="<="&&(o="<",w?i=+i+1:a=+a+1),o==="<"&&(f="-0"),n=`${o+i}.${a}.${u}${f}`):w?n=`>=${i}.0.0${f} <${+i+1}.0.0-0`:g&&(n=`>=${i}.${a}.0${f} <${i}.${+a+1}.0-0`),he("xRange return",n),n})},Qf=(e,t)=>(he("replaceStars",e,t),e.trim().replace(ze[Ne.STAR],"")),Zf=(e,t)=>(he("replaceGTE0",e,t),e.trim().replace(ze[t.includePrerelease?Ne.GTE0PRE:Ne.GTE0],"")),em=e=>(t,r,n,o,i,a,u,f,v,w,g,T)=>(Ee(n)?r="":Ee(o)?r=`>=${n}.0.0${e?"-0":""}`:Ee(i)?r=`>=${n}.${o}.0${e?"-0":""}`:a?r=`>=${r}`:r=`>=${r}${e?"-0":""}`,Ee(v)?f="":Ee(w)?f=`<${+v+1}.0.0-0`:Ee(g)?f=`<${v}.${+w+1}.0-0`:T?f=`<=${v}.${w}.${g}-${T}`:e?f=`<${v}.${w}.${+g+1}-0`:f=`<=${f}`,`${r} ${f}`.trim()),tm=(e,t,r)=>{for(let n=0;n<e.length;n++)if(!e[n].test(t))return!1;if(t.prerelease.length&&!r.includePrerelease){for(let n=0;n<e.length;n++)if(he(e[n].semver),e[n].semver!==Qo.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 Dr=z(($h,Tc)=>{"use strict";var Or=Symbol("SemVer ANY"),ti=class e{static get ANY(){return Or}constructor(t,r){if(r=bc(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),ei("comparator",t,r),this.options=r,this.loose=!!r.loose,this.parse(t),this.semver===Or?this.value="":this.value=this.operator+this.semver.version,ei("comp",this)}parse(t){let r=this.options.loose?Sc[wc.COMPARATORLOOSE]:Sc[wc.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 yc(n[2],this.options.loose):this.semver=Or}toString(){return this.value}test(t){if(ei("Comparator.test",t,this.options.loose),this.semver===Or||t===Or)return!0;if(typeof t=="string")try{t=new yc(t,this.options)}catch{return!1}return Zo(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 Rc(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new Rc(this.value,r).test(t.semver):(r=bc(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("=")||Zo(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||Zo(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};Tc.exports=ti;var bc=Sn(),{safeRe:Sc,t:wc}=fr(),Zo=Yo(),ei=Br(),yc=Oe(),Rc=at()});var Nr=z((Dh,Ec)=>{"use strict";var rm=at(),nm=(e,t,r)=>{try{t=new rm(t,r)}catch{return!1}return t.test(e)};Ec.exports=nm});var Ic=z((Oh,Cc)=>{"use strict";var om=at(),im=(e,t)=>new om(e,t).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));Cc.exports=im});var Ac=z((Nh,kc)=>{"use strict";var sm=Oe(),am=at(),cm=(e,t,r)=>{let n=null,o=null,i=null;try{i=new am(t,r)}catch{return null}return e.forEach(a=>{i.test(a)&&(!n||o.compare(a)===-1)&&(n=a,o=new sm(n,r))}),n};kc.exports=cm});var Pc=z((jh,_c)=>{"use strict";var lm=Oe(),um=at(),dm=(e,t,r)=>{let n=null,o=null,i=null;try{i=new um(t,r)}catch{return null}return e.forEach(a=>{i.test(a)&&(!n||o.compare(a)===1)&&(n=a,o=new lm(n,r))}),n};_c.exports=dm});var $c=z((Vh,Bc)=>{"use strict";var ri=Oe(),fm=at(),Lc=$r(),mm=(e,t)=>{e=new fm(e,t);let r=new ri("0.0.0");if(e.test(r)||(r=new ri("0.0.0-0"),e.test(r)))return r;r=null;for(let n=0;n<e.set.length;++n){let o=e.set[n],i=null;o.forEach(a=>{let u=new ri(a.semver.version);switch(a.operator){case">":u.prerelease.length===0?u.patch++:u.prerelease.push(0),u.raw=u.format();case"":case">=":(!i||Lc(u,i))&&(i=u);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${a.operator}`)}}),i&&(!r||Lc(r,i))&&(r=i)}return r&&e.test(r)?r:null};Bc.exports=mm});var Oc=z((Mh,Dc)=>{"use strict";var pm=at(),gm=(e,t)=>{try{return new pm(e,t).range||"*"}catch{return null}};Dc.exports=gm});var Pn=z((Fh,Mc)=>{"use strict";var hm=Oe(),Vc=Dr(),{ANY:xm}=Vc,vm=at(),bm=Nr(),Nc=$r(),jc=Cn(),Sm=kn(),wm=In(),ym=(e,t,r,n)=>{e=new hm(e,n),t=new vm(t,n);let o,i,a,u,f;switch(r){case">":o=Nc,i=Sm,a=jc,u=">",f=">=";break;case"<":o=jc,i=wm,a=Nc,u="<",f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(bm(e,t,n))return!1;for(let v=0;v<t.set.length;++v){let w=t.set[v],g=null,T=null;if(w.forEach(c=>{c.semver===xm&&(c=new Vc(">=0.0.0")),g=g||c,T=T||c,o(c.semver,g.semver,n)?g=c:a(c.semver,T.semver,n)&&(T=c)}),g.operator===u||g.operator===f||(!T.operator||T.operator===u)&&i(e,T.semver))return!1;if(T.operator===f&&a(e,T.semver))return!1}return!0};Mc.exports=ym});var Uc=z((Uh,Fc)=>{"use strict";var Rm=Pn(),Tm=(e,t,r)=>Rm(e,t,">",r);Fc.exports=Tm});var Hc=z((qh,qc)=>{"use strict";var Em=Pn(),Cm=(e,t,r)=>Em(e,t,"<",r);qc.exports=Cm});var Xc=z((Hh,Wc)=>{"use strict";var Gc=at(),Im=(e,t,r)=>(e=new Gc(e,r),t=new Gc(t,r),e.intersects(t,r));Wc.exports=Im});var Yc=z((Gh,zc)=>{"use strict";var km=Nr(),Am=st();zc.exports=(e,t,r)=>{let n=[],o=null,i=null,a=e.sort((w,g)=>Am(w,g,r));for(let w of a)km(w,t,r)?(i=w,o||(o=w)):(i&&n.push([o,i]),i=null,o=null);o&&n.push([o,null]);let u=[];for(let[w,g]of n)w===g?u.push(w):!g&&w===a[0]?u.push("*"):g?w===a[0]?u.push(`<=${g}`):u.push(`${w} - ${g}`):u.push(`>=${w}`);let f=u.join(" || "),v=typeof t.raw=="string"?t.raw:String(t);return f.length<v.length?f:t}});var tl=z((Wh,el)=>{"use strict";var Kc=at(),ii=Dr(),{ANY:ni}=ii,oi=Nr(),si=st(),_m=(e,t,r={})=>{if(e===t)return!0;e=new Kc(e,r),t=new Kc(t,r);let n=!1;e:for(let o of e.set){for(let i of t.set){let a=Lm(o,i,r);if(n=n||a!==null,a)continue e}if(n)return!1}return!0},Pm=[new ii(">=0.0.0-0")],Jc=[new ii(">=0.0.0")],Lm=(e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===ni){if(t.length===1&&t[0].semver===ni)return!0;r.includePrerelease?e=Pm:e=Jc}if(t.length===1&&t[0].semver===ni){if(r.includePrerelease)return!0;t=Jc}let n=new Set,o,i;for(let c of e)c.operator===">"||c.operator===">="?o=Qc(o,c,r):c.operator==="<"||c.operator==="<="?i=Zc(i,c,r):n.add(c.semver);if(n.size>1)return null;let a;if(o&&i){if(a=si(o.semver,i.semver,r),a>0)return null;if(a===0&&(o.operator!==">="||i.operator!=="<="))return null}for(let c of n){if(o&&!oi(c,String(o),r)||i&&!oi(c,String(i),r))return null;for(let m of t)if(!oi(c,String(m),r))return!1;return!0}let u,f,v,w,g=i&&!r.includePrerelease&&i.semver.prerelease.length?i.semver:!1,T=o&&!r.includePrerelease&&o.semver.prerelease.length?o.semver:!1;g&&g.prerelease.length===1&&i.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let c of t){if(w=w||c.operator===">"||c.operator===">=",v=v||c.operator==="<"||c.operator==="<=",o){if(T&&c.semver.prerelease&&c.semver.prerelease.length&&c.semver.major===T.major&&c.semver.minor===T.minor&&c.semver.patch===T.patch&&(T=!1),c.operator===">"||c.operator===">="){if(u=Qc(o,c,r),u===c&&u!==o)return!1}else if(o.operator===">="&&!c.test(o.semver))return!1}if(i){if(g&&c.semver.prerelease&&c.semver.prerelease.length&&c.semver.major===g.major&&c.semver.minor===g.minor&&c.semver.patch===g.patch&&(g=!1),c.operator==="<"||c.operator==="<="){if(f=Zc(i,c,r),f===c&&f!==i)return!1}else if(i.operator==="<="&&!c.test(i.semver))return!1}if(!c.operator&&(i||o)&&a!==0)return!1}return!(o&&v&&!i&&a!==0||i&&w&&!o&&a!==0||T||g)},Qc=(e,t,r)=>{if(!e)return t;let n=si(e.semver,t.semver,r);return n>0?e:n<0||t.operator===">"&&e.operator===">="?t:e},Zc=(e,t,r)=>{if(!e)return t;let n=si(e.semver,t.semver,r);return n<0?e:n>0||t.operator==="<"&&e.operator==="<="?t:e};el.exports=_m});var ci=z((Xh,ol)=>{"use strict";var ai=fr(),rl=dr(),Bm=Oe(),nl=Ho(),$m=Nt(),Dm=Ia(),Om=Aa(),Nm=La(),jm=Da(),Vm=Na(),Mm=Va(),Fm=Fa(),Um=qa(),qm=st(),Hm=Xa(),Gm=Ya(),Wm=En(),Xm=Za(),zm=tc(),Ym=$r(),Km=Cn(),Jm=Xo(),Qm=zo(),Zm=In(),ep=kn(),tp=Yo(),rp=uc(),np=fc(),op=Dr(),ip=at(),sp=Nr(),ap=Ic(),cp=Ac(),lp=Pc(),up=$c(),dp=Oc(),fp=Pn(),mp=Uc(),pp=Hc(),gp=Xc(),hp=Yc(),xp=tl();ol.exports={parse:$m,valid:Dm,clean:Om,inc:Nm,diff:jm,major:Vm,minor:Mm,patch:Fm,prerelease:Um,compare:qm,rcompare:Hm,compareLoose:Gm,compareBuild:Wm,sort:Xm,rsort:zm,gt:Ym,lt:Km,eq:Jm,neq:Qm,gte:Zm,lte:ep,cmp:tp,coerce:rp,truncate:np,Comparator:op,Range:ip,satisfies:sp,toComparators:ap,maxSatisfying:cp,minSatisfying:lp,minVersion:up,validRange:dp,outside:fp,gtr:mp,ltr:pp,intersects:gp,simplifyRange:hp,subset:xp,SemVer:Bm,re:ai.re,src:ai.src,tokens:ai.t,SEMVER_SPEC_VERSION:rl.SEMVER_SPEC_VERSION,RELEASE_TYPES:rl.RELEASE_TYPES,compareIdentifiers:nl.compareIdentifiers,rcompareIdentifiers:nl.rcompareIdentifiers}});var R=k(xe(),1);var ma=k(xe(),1);var ur=k(M(),1);function pa({path:e}){return e.length===0?null:(0,ur.jsx)(b,{children:e.map((t,r)=>(0,ur.jsxs)(ma.default.Fragment,{children:[r>0&&(0,ur.jsx)(s,{color:l.muted,children:" \u203A "}),(0,ur.jsx)(s,{color:l.dim,children:t})]},r))})}var il=k(ci(),1),vp=1,bp=new Set(["discover","workflow","nudge","recovery"]),Sp=new Set(["run","generate","both"]),wp=new Set(["banner","footer"]),Ln=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),mr=e=>typeof e=="string"&&e.length>0?e:void 0,pr=e=>typeof e=="number"&&Number.isFinite(e)?e:void 0;function yp(e){if(!Ln(e))return{};let t={};return mr(e.run)&&(t.run=e.run),mr(e.generate)&&(t.generate=e.generate),mr(e.default)&&(t.default=e.default),t}function sl(e,t){return e.text[t]??e.text.default??(e.target!=="both"?e.text[e.target]:void 0)}function Rp(e,t){return t==="both"?!!e.default||!!e.run&&!!e.generate:t==="run"?!!e.run||!!e.default:!!e.generate||!!e.default}function Tp(e,t){if(!Ln(e))return;let r=pr(e.maxShows),n=mr(e.until),o=pr(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 Ep(e){if(!Ln(e))return null;let t=mr(e.id);if(!t)return null;let r=Sp.has(e.target)?e.target:void 0;if(e.target!==void 0&&r===void 0)return null;let n=r??"both",o=yp(e.text);if(!Rp(o,n))return null;let i=bp.has(e.category)?e.category:"nudge",a=wp.has(e.surface)?e.surface:void 0,u=pr(e.weight),f=u===void 0?1:Math.max(0,u),v=pr(e.cooldownSessions),w=v===void 0?0:Math.max(0,Math.floor(v)),g=mr(e.minVersion)&&il.default.coerce(e.minVersion)?e.minVersion:void 0,T=Array.isArray(e.relevance)?e.relevance.filter(D=>typeof D=="string"):[],c=pr(e.retireAfterShows),m=c!==void 0&&c>=1?Math.floor(c):void 0,$=Tp(e.boost,f);return{id:t,category:i,surface:a,target:n,text:o,weight:f,cooldownSessions:w,minVersion:g,relevance:T,retireAfterShows:m,boost:$}}function Bn(e){if(!Ln(e)||!Array.isArray(e.hints)||typeof e.enabled!="boolean")return{catalog:null,dropped:0};let t=pr(e.schemaVersion)??0;if(Math.floor(t)>vp)return{catalog:null,dropped:0};let r=0,n=new Set,o=[];for(let i of e.hints){let a=Ep(i);if(!a){r++;continue}if(n.has(a.id)){r++;continue}n.add(a.id),o.push(a)}return o.length===0?{catalog:null,dropped:r}:{catalog:{schemaVersion:t,enabled:e.enabled,hints:o},dropped:r}}var ll=k(M(),1),al="tip: ";function cl({hint:e,mode:t,termWidth:r}){if(e.target!=="both"&&e.target!==t)return null;let n=sl(e,t);if(!n)return null;let o=Math.max(8,r-al.length-2),i=n.length>o?n.slice(0,o-1)+"\u2026":n;return(0,ll.jsx)(s,{color:l.dim,children:al+i})}var J=k(M(),1);function ul({profile:e,environment:t,tokenValid:r,runCount:n,sessionId:o,viewMode:i,breadcrumb:a,chatMode:u,tcgRequestId:f,tcgStreamStatus:v,footerHint:w}){let{stdout:g}=or(),T=g?.columns??80,c=u??"run",m=t==="stage",$=t==="prod",D=c==="generate"?l.generateAccent:l.orange,V=v==="completed"?l.green:v==="failed"?l.red:l.generateAccent;return(0,J.jsxs)(b,{flexDirection:"column",children:[(0,J.jsx)(s,{color:l.muted,children:"\u2500".repeat(T)}),a&&a.length>0&&(0,J.jsx)(b,{paddingX:1,children:(0,J.jsx)(pa,{path:a})}),(0,J.jsxs)(b,{paddingX:1,gap:1,children:[(0,J.jsx)(s,{color:l.dim,children:"Mode:"}),(0,J.jsx)(s,{color:D,bold:!0,children:c==="generate"?"Generate":"Run"}),(0,J.jsx)(s,{color:l.muted,children:"|"}),c==="generate"?(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(s,{color:l.dim,children:"req"}),(0,J.jsx)(s,{color:l.dim,children:f??"\u2014"}),v&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(s,{color:l.muted,children:"\xB7"}),(0,J.jsx)(s,{color:V,children:v})]})]}):(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(s,{color:l.dim,children:"Session:"}),(0,J.jsx)(s,{color:l.dim,children:o})]}),(0,J.jsx)(s,{color:l.muted,children:"|"}),(0,J.jsx)(s,{color:r?l.green:l.red,children:"\u25CF"}),(0,J.jsx)(s,{color:l.dim,children:r?"authenticated":"not logged in"}),!$&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(s,{color:l.muted,children:"|"}),m?(0,J.jsx)(s,{color:l.orange,bold:!0,children:"\u26A0 stage"}):(0,J.jsx)(s,{color:l.green,children:t})]})]}),(0,J.jsxs)(b,{paddingX:1,gap:1,children:[(0,J.jsx)(s,{color:l.dim,children:e??"no profile"}),c==="run"&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(s,{color:l.muted,children:"|"}),(0,J.jsxs)(s,{color:l.dim,children:["runs: ",n]})]}),(0,J.jsx)(s,{color:l.muted,children:"|"}),(0,J.jsx)(s,{dimColor:!0,children:Xi()})]}),(0,J.jsx)(b,{paddingX:1,children:(0,J.jsx)(s,{dimColor:!0,children:i==="chat"?"ctrl+c cancel/exit":"\u2191\u2193 navigate \u21B5 select esc back"})}),w&&(0,J.jsx)(b,{paddingX:1,children:(0,J.jsx)(cl,{hint:w,mode:c,termWidth:T})})]})}var Kt=k(xe(),1);var jr=[[[" "],[" "],[" "],[" "],["\u2584","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],[" "],[" "],[" "],[" "],[" "],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2584","#af87d7"],[" "],[" "],[" "],[" "]],[[" "],[" "],["\u2584","#875faf"],["\u2584","#af87d7","#875faf"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2584","#af87d7","#875faf"],["\u2584","#875faf"],[" "],[" "]],[[" "],[" "],["\u2588","#875faf"],["\u2588","#af87d7"],["\u2584","#000000","#af87d7"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#303030"],["\u2584","#000000","#af87d7"],["\u2588","#af87d7"],["\u2588","#875faf"],[" "],[" "]],[[" "],["\u2588","#875faf"],["\u2588","#875faf"],["\u2588","#af87d7"],["\u2588","#000000"],["\u2584","#585858","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#af87d7"],["\u2588","#875faf"],["\u2588","#875faf"],[" "]],[[" "],["\u2588","#875faf"],["\u2588","#875faf"],["\u2588","#af87d7"],["\u2588","#000000"],["\u2588","#585858"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#af87d7"],["\u2588","#875faf"],["\u2588","#875faf"],[" "]],[[" "],[" "],["\u2588","#875faf"],["\u2588","#af87d7"],["\u2588","#000000"],["\u2584","#000000","#585858"],["\u2588","#000000"],["\u2588","#000000"],["\u2584","#af87d7","#000000"],["\u2584","#af87d7","#000000"],["\u2584","#af87d7","#000000"],["\u2584","#af87d7","#000000"],["\u2584","#af87d7","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#000000"],["\u2588","#af87d7"],["\u2588","#875faf"],[" "],[" "]],[[" "],[" "],["\u2580","#875faf"],["\u2580","#af87d7"],["\u2580","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2580","#af87d7"],["\u2580","#af87d7"],["\u2580","#875faf"],[" "],[" "]],[[" "],[" "],[" "],[" "],[" "],["\u2580","#af87d7"],["\u2580","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2588","#af87d7"],["\u2580","#af87d7"],["\u2580","#af87d7"],[" "],[" "],[" "],[" "],[" "]]];var te=k(M(),1),$n="#af87d7",li="#875faf",dl="#5b3a7a",Cp="#ff9500",Ip="#ea580c";var ui="#666666",kp="#555555",Yt=[[$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"],[li,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[li,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588"],[li,"\u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588"]],di=Yt.map(([,e])=>[...e]);function fl({visibleRows:e=Yt.length}){let t=Math.min(e,Yt.length);return(0,te.jsxs)(b,{flexDirection:"column",children:[Yt.slice(0,t).map(([r,n],o)=>{let i=di[o];return(0,te.jsx)(s,{children:i.map((a,u)=>{if(a==="\u2588")return(0,te.jsx)(s,{color:r,children:"\u2588"},u);let f=u>0&&i[u-1]==="\u2588",v=o>0&&u>0&&di[o-1][u-1]==="\u2588";return f||v?(0,te.jsx)(s,{color:dl,children:"\u2592"},u):(0,te.jsx)(s,{children:" "},u)})},o)}),t>=Yt.length&&(0,te.jsxs)(s,{children:[" ",di[Yt.length-1].map((r,n)=>r==="\u2588"?(0,te.jsx)(s,{color:dl,children:"\u2580"},n):(0,te.jsx)(s,{children:" "},n))]})]})}function Ap({visibleRows:e=jr.length}){let t=Math.min(e,jr.length);return(0,te.jsx)(b,{flexDirection:"column",children:jr.slice(0,t).map((r,n)=>(0,te.jsx)(s,{children:r.map((o,i)=>{let a=o[0],u=o[1],f=o[2];return u?(0,te.jsx)(s,{color:u,backgroundColor:f,children:a},i):(0,te.jsx)(s,{children:a},i)})},n))})}function Dn({size:e="compact",helmetVisibleRows:t=jr.length,textVisibleRows:r=Yt.length,showMeta:n=!1,user:o=null,authenticated:i=!1,version:a=""}){return e==="compact"?(0,te.jsx)(fl,{}):(0,te.jsxs)(b,{flexDirection:"column",paddingX:1,paddingY:1,children:[(0,te.jsx)(s,{color:Cp,italic:!0,children:" Welcome to"}),(0,te.jsx)(s,{children:" "}),(0,te.jsxs)(b,{gap:2,children:[(0,te.jsx)(Ap,{visibleRows:t}),(0,te.jsxs)(b,{flexDirection:"column",children:[(0,te.jsx)(fl,{visibleRows:r}),(0,te.jsx)(b,{justifyContent:"flex-end",width:73,children:(0,te.jsx)(s,{color:Ip,italic:!0,children:"Command-line interface"})})]})]}),n&&(0,te.jsxs)(te.Fragment,{children:[(0,te.jsx)(s,{children:" "}),(0,te.jsxs)(s,{children:[(0,te.jsx)(s,{color:ui,children:" Browser automation powered by AI. "}),(0,te.jsx)(s,{color:kp,children:`v${a}`})]}),(0,te.jsx)(s,{children:" "}),(0,te.jsx)(s,{children:(0,te.jsx)(s,{color:ui,children:" KaneCLI can navigate websites, fill forms, test web UI, and extract"})}),(0,te.jsx)(s,{children:(0,te.jsx)(s,{color:ui,children:" data \u2014 right from your terminal."})}),(0,te.jsx)(s,{children:" "})]})]})}var pi=k(M(),1),fi=8,mi=7;function ml({onComplete:e}){let[t,r]=(0,Kt.useState)(0),[n,o]=(0,Kt.useState)(0),[i,a]=(0,Kt.useState)(!1),[u]=(0,Kt.useState)(()=>{let f=new fn,v=f.getActiveProfile(),w=f.getDefaultEnv(),g=v?f.loadCredentials(v,w):null,T=v?f.loadBasicAuth(v,w):null;return{authenticated:!!(g||T),user:T?.username??v??null}});return Ao(()=>{r(f=>Math.min(fi,f+1))},t<fi?60:null),Ao(()=>{o(f=>Math.min(mi,f+1))},n<mi?80:null),(0,Kt.useEffect)(()=>{t>=fi&&n>=mi&&!i&&(a(!0),e?.())},[t,n,i,e]),(0,pi.jsx)(b,{flexDirection:"column",children:(0,pi.jsx)(Dn,{size:"full",helmetVisibleRows:t,textVisibleRows:n,showMeta:i,user:u.user,authenticated:u.authenticated,version:ot})})}var kt=k(M(),1);function pl({entry:e}){return e.type==="input"?(0,kt.jsxs)(b,{children:[(0,kt.jsx)(s,{color:l.orange,children:"\u276F "}),(0,kt.jsx)(s,{children:e.text})]}):e.type==="error"?(0,kt.jsx)(b,{marginLeft:2,children:(0,kt.jsx)(s,{color:l.red,children:e.text})}):(0,kt.jsx)(b,{marginLeft:2,children:(0,kt.jsx)(s,{color:e.type==="info"?l.dim:void 0,children:e.text})})}var gi=k(M(),1);function gl({objective:e}){let{stdout:t}=or(),r=Math.max(24,(t?.columns??80)-4);return(0,gi.jsx)(It,{title:"run",width:r,children:(0,gi.jsx)(Yi,{label:"objective",value:e})})}var yt=k(xe(),1);var Ye=k(M(),1);function _p(e,t){let r=[],o=Math.max(t-4,30);r.push({type:"title",text:e.title});for(let i=0;i<e.sections.length;i++){let a=e.sections[i];i>0&&r.push({type:"divider",text:"\u2500".repeat(o)}),a.label&&r.push({type:"header",text:a.label});let u=a.entries.length>0?Math.max(...a.entries.map(f=>f.key.length)):0;for(let f of a.entries){let v="\xB7".repeat(Math.max(2,u-f.key.length+3)),w=`${f.key} ${v} ${f.value}`;r.push({type:"entry",text:w,color:f.color})}}return r.push({type:"footer",text:"esc back"}),r}function hl({data:e,width:t=60}){let r=_p(e,t);return(0,Ye.jsx)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:r.map((n,o)=>{if(n.type==="title")return(0,Ye.jsx)(s,{color:l.orange,bold:!0,children:n.text},o);if(n.type==="header")return(0,Ye.jsx)(b,{marginTop:1,children:(0,Ye.jsx)(s,{color:l.dim,children:n.text})},o);if(n.type==="divider")return(0,Ye.jsx)(b,{marginTop:1,marginBottom:0,children:(0,Ye.jsx)(s,{color:l.muted,children:n.text})},o);if(n.type==="footer")return(0,Ye.jsx)(b,{marginTop:1,children:(0,Ye.jsx)(s,{color:l.dim,children:n.text})},o);let i=n.text.match(/^(.+?) (·+) (.+)$/);return i?(0,Ye.jsxs)(s,{children:[(0,Ye.jsxs)(s,{color:l.secondary,children:[i[1]," "]}),(0,Ye.jsxs)(s,{color:l.muted,children:[i[2]," "]}),(0,Ye.jsx)(s,{color:n.color,children:i[3]})]},o):(0,Ye.jsx)(s,{color:n.color,children:n.text},o)})})}var je=k(M(),1);function hi(e,t){let r=[];function n(o,i){for(let a of o)r.push({item:a,depth:i}),a.type==="submenu"&&a.children&&t.length>i&&t[i]===a.id&&n(a.children,i+1)}return n(e,0),r}function xi({items:e,onRunSelected:t,initialExpandedPath:r,onDismiss:n,renderLoginWizard:o,renderProfilesView:i,renderChromeProfilePicker:a,renderProjectPicker:u,renderFolderPicker:f,renderWindowSizePicker:v,onActiveViewChange:w}){let[g,T]=(0,yt.useState)(()=>{let O=r??[],H=hi(e,O),A=0;if(O.length>0){let F=H.findIndex(ee=>ee.item.id===O[0]);F>=0&&F+1<H.length&&(A=F+1)}return{expandedPath:O,selectedIndex:A,inputValue:"",isEditing:!1,isSelecting:!1,feedback:null,activeView:null,infoData:null}}),c=hi(e,g.expandedPath),m=c[g.selectedIndex]?.item,$=(0,yt.useRef)(null),D=(0,yt.useCallback)(O=>{T(H=>({...H,feedback:O})),$.current&&clearTimeout($.current),$.current=setTimeout(()=>{T(H=>({...H,feedback:null})),$.current=null},4e3)},[]);(0,yt.useEffect)(()=>()=>{$.current&&clearTimeout($.current)},[]),(0,yt.useEffect)(()=>{w?.(g.activeView)},[g.activeView,w]);let V=(0,yt.useCallback)(()=>{T(O=>({...O,activeView:null,infoData:null}))},[]);return Ie((O,H)=>{if(g.activeView==="infoView"){H.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(H.escape){T(A=>({...A,isEditing:!1,inputValue:""}));return}if(H.return){let A=g.inputValue.trim();if(m?.onValue&&A){let F=m.currentValue;m.onValue(A),D(F?`${m.label}: ${F} \u2192 ${A}`:`${m.label}: ${A}`)}T(F=>({...F,isEditing:!1,inputValue:""}));return}if(H.backspace||H.delete){T(A=>({...A,inputValue:A.inputValue.slice(0,-1)}));return}O&&!H.ctrl&&!H.meta&&T(A=>({...A,inputValue:A.inputValue+O}));return}if(g.isSelecting&&m?.options){let A=m.options;if(H.escape){T(F=>({...F,isSelecting:!1}));return}if(H.upArrow){T(F=>({...F,inputValue:String(Math.max(0,Number(F.inputValue||"0")-1))}));return}if(H.downArrow){T(F=>({...F,inputValue:String(Math.min(A.length-1,Number(F.inputValue||"0")+1))}));return}if(H.return){let F=Number(g.inputValue||"0"),ee=A[F];if(ee&&m.onValue){let re=m.currentValue;m.onValue(ee.value),D(re?`${m.label}: ${re} \u2192 ${ee.label}`:`${m.label}: ${ee.label}`)}T(re=>({...re,isSelecting:!1,inputValue:""}));return}return}if(H.upArrow){T(A=>({...A,selectedIndex:Math.max(0,A.selectedIndex-1)}));return}if(H.downArrow){T(A=>({...A,selectedIndex:Math.min(c.length-1,A.selectedIndex+1)}));return}if(H.escape){if(g.expandedPath.length===0){n?.();return}T(A=>{let F=A.expandedPath.slice(0,-1),ee=hi(e,F),re=A.expandedPath[A.expandedPath.length-1],fe=ee.findIndex(W=>W.item.id===re);return{...A,expandedPath:F,selectedIndex:fe>=0?fe:0}});return}if(H.return&&m){if(m.id==="run-start"){t();return}if(m.type==="submenu"){let A=c[g.selectedIndex]?.depth??0;T(F=>({...F,expandedPath:[...F.expandedPath.slice(0,A),m.id],selectedIndex:F.selectedIndex+1}));return}if(m.onInfo){let A=m.onInfo();T(F=>({...F,activeView:"infoView",infoData:A}));return}if(m.onLoginWizard){m.onLoginWizard(),T(A=>({...A,activeView:"loginWizard"}));return}if(m.onProfilesView){m.onProfilesView(),T(A=>({...A,activeView:"profilesView"}));return}if(m.onChromeProfilePicker){m.onChromeProfilePicker(),T(A=>({...A,activeView:"chromeProfilePicker"}));return}if(m.onProjectPicker){m.onProjectPicker(),T(A=>({...A,activeView:"projectPicker"}));return}if(m.onFolderPicker){m.onFolderPicker(),T(A=>({...A,activeView:"folderPicker"}));return}if(m.onWindowSizePicker){m.onWindowSizePicker(),T(A=>({...A,activeView:"windowSizePicker"}));return}if(m.type==="action"){m.onAction?.(),m.suppressFeedback||D(`${m.label} done`);return}if(m.type==="select"&&m.options){let A=m.options.findIndex(F=>F.value===m.currentValue);T(F=>({...F,isSelecting:!0,inputValue:String(Math.max(0,A))}));return}if(m.type==="text-input"){T(A=>({...A,isEditing:!0,inputValue:m.currentValue??""}));return}}}}),(0,je.jsx)(b,{flexDirection:"column",paddingX:1,children:g.activeView==="infoView"&&g.infoData?(0,je.jsx)(hl,{data:g.infoData}):g.activeView==="loginWizard"&&o?o(V):g.activeView==="profilesView"&&i?i(V):g.activeView==="chromeProfilePicker"&&a?a(V):g.activeView==="projectPicker"&&u?u(V):g.activeView==="folderPicker"&&f?f(V):g.activeView==="windowSizePicker"&&v?v(V):(0,je.jsxs)(je.Fragment,{children:[c.map(({item:O,depth:H},A)=>{let F=A===g.selectedIndex,ee=" ".repeat(H),re=F?"\u276F ":" ",fe=O.type==="submenu"?g.expandedPath.includes(O.id)?"\u25BC ":"\u25B6 ":" ",W=O.currentValue!=null?` [${O.currentValue}]`:"";if(F&&g.isSelecting&&O.options){let ie=Number(g.inputValue||"0");return(0,je.jsxs)(b,{flexDirection:"column",children:[(0,je.jsxs)(s,{color:l.orange,children:[ee,re,fe,O.label]}),O.options.map((ue,Ce)=>(0,je.jsxs)(s,{color:Ce===ie?l.orange:void 0,children:[ee," ",Ce===ie?"\u276F ":" ",ue.label]},ue.value))]},O.id)}return F&&g.isEditing?(0,je.jsxs)(s,{color:l.orange,children:[ee,re,fe,O.label,": ",g.inputValue,(0,je.jsx)(s,{color:l.dim,children:"\u2588"})]},O.id):(0,je.jsxs)(s,{color:F?l.orange:void 0,dimColor:!F&&H>0,children:[ee,re,fe,O.label,(0,je.jsx)(s,{dimColor:!0,children:W})]},O.id)}),g.feedback&&(0,je.jsx)(b,{marginTop:1,children:(0,je.jsxs)(s,{color:l.green,children:["\u2713 ",g.feedback]})}),(0,je.jsx)(ir,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"select"}],escBackLabel:"back"})]})})}var Vr=k(xe(),1);var Ue=k(M(),1),vi=800,bi=3840,Si=600,wi=2160;function xl(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<vi)return`Min ${vi}`;if(r>bi)return`Max ${bi}`}else{if(r<Si)return`Min ${Si}`;if(r>wi)return`Max ${wi}`}return null}function yi({currentWidth:e,currentHeight:t,onSelect:r,onCancel:n}){let[o,i]=(0,Vr.useState)("width"),[a,u]=(0,Vr.useState)(String(e)),[f,v]=(0,Vr.useState)(String(t)),[w,g]=(0,Vr.useState)(null);Ie((c,m)=>{if(m.escape){n();return}if(m.tab||m.rightArrow||m.leftArrow){i($=>$==="width"?"height":"width"),g(null);return}if(m.return){let $=xl("width",a);if($){i("width"),g(`Width: ${$}`);return}let D=xl("height",f);if(D){i("height"),g(`Height: ${D}`);return}r(Number(a),Number(f));return}if(m.backspace||m.delete){o==="width"?u($=>$.slice(0,-1)):v($=>$.slice(0,-1)),g(null);return}c&&/^\d$/.test(c)&&(o==="width"?u($=>$+c):v($=>$+c),g(null))});let T=(c,m,$)=>{let D=o===$,V=D?l.orange:l.secondary;return(0,Ue.jsxs)(b,{flexDirection:"column",children:[(0,Ue.jsxs)(s,{color:l.dim,children:[" ",c]}),(0,Ue.jsx)(b,{borderStyle:"round",borderColor:V,paddingX:1,width:10,children:(0,Ue.jsxs)(s,{color:D?void 0:l.dim,children:[m||" ",D?(0,Ue.jsx)(s,{color:l.dim,children:"\u2588"}):""]})}),(0,Ue.jsxs)(s,{color:l.dim,dimColor:!0,children:[" ",$==="width"?`${vi}\u2013${bi}`:`${Si}\u2013${wi}`]})]})};return(0,Ue.jsxs)(b,{flexDirection:"column",paddingX:1,children:[(0,Ue.jsx)(s,{color:l.orange,bold:!0,children:"Window Size"}),(0,Ue.jsxs)(b,{marginTop:1,gap:1,children:[T("Width",a,"width"),(0,Ue.jsx)(b,{alignItems:"center",marginTop:1,children:(0,Ue.jsx)(s,{color:l.dim,children:"x"})}),T("Height",f,"height")]}),w&&(0,Ue.jsx)(b,{marginTop:1,children:(0,Ue.jsx)(s,{color:l.red,children:w})}),(0,Ue.jsx)(ir,{bindings:[{keys:"tab/\u2190\u2192",label:"switch field"},{keys:"\u21B5",label:"save"}],escBackLabel:"cancel"})]})}var qe=k(xe(),1);async function vl(e,t,r){let n=e.loadCredentials(t,r),o=e.loadClient(t,r);if(n&&o){let a=new as(r);await Promise.allSettled([a.revokeToken(n.access_token,o.client_id,"access_token"),a.revokeToken(n.refresh_token,o.client_id,"refresh_token")])}e.deleteProfileFull(t,r);let i=e.listProfiles();return i.length>0&&(e.setActiveProfile(i[0].profile),e.setDefaultEnv(i[0].env)),{profile:t,env:r,switchedTo:i.length>0?i[0]:void 0}}function bl(){let[e]=(0,qe.useState)(()=>new fn),[t,r]=(0,qe.useState)(()=>{let m=e.resolveAuth();if(!m)return!1;if(m.method==="basic")return!0;let{credentials:$}=e.getActiveCredentials();return $?$.expires_at>Date.now()/1e3:!1}),n=(0,qe.useRef)(null),o=(0,qe.useRef)(null),i=(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:$,env:D}=e.getActiveCredentials();if(!m||!$||!D)return null;let V=m.expires_at,O=Date.now()/1e3;if(V-O<300){if(o.current)return o.current;let H=(async()=>{try{let A=await cs({creds:e,profile:$,env:D,credentials:m});return A?(r(!0),A.accessToken):null}catch{return r(!1),null}finally{o.current=null}})();return o.current=H,H}return r(!0),m.access_token},[e]),u=(0,qe.useCallback)(()=>{let m=e.resolveAuth();return!m||m.method!=="basic"?null:{username:m.username,access_key:m.access_key}},[e]),f=(0,qe.useCallback)((m,$)=>{n.current?.revoke();let D=De(m),V=u(),O=new us(D.controllerBaseUrl,a,V,$);return n.current=O,O},[u,a]),v=(0,qe.useCallback)(()=>n.current,[]),w=(0,qe.useCallback)(()=>{let m=u();if(m)return m;let $=n.current?.cached;return $?{username:$.username,access_key:$.access_key}:null},[u]),g=(0,qe.useCallback)(async()=>{let m=n.current;return m?m.resolve():null},[]),T=(0,qe.useCallback)(async(m="default")=>{let $=e.getDefaultEnv();await new ls(m,$,e).login(),e.setActiveProfile(m);try{let V=new cr;it(e,V,m,$)}catch{}r(!0)},[e]),c=(0,qe.useCallback)(async()=>{let m=e.getActiveProfile();if(!m)return null;let $=e.getDefaultEnv(),D=await vl(e,m,$);return r(!1),{profile:D.profile,env:D.env}},[e]);return{creds:e,tokenValid:t,setTokenValid:r,getToken:a,getBasicAuth:u,getAuthInfo:i,login:T,logout:c,initResolver:f,getResolver:v,getResolvedBasicAuth:w,resolveBasicAuth:g}}var At=k(xe(),1);import{mkdtempSync as Pp,rmSync as Lp}from"fs";import{join as Bp}from"path";import{tmpdir as $p}from"os";function Sl(){let[e]=(0,At.useState)(()=>new cr),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 f=e.load(),v;if(f.chrome_profile_path)v=f.chrome_profile_path.replace("~",process.env.HOME??"~");else{r.current&&(Ot("tempDir","Previous temp dir removed before retry"),r.current=null);let g=Pp(Bp($p(),"kane-clean-"));r.current=g,v=g,vt("tempDir",()=>{try{Lp(g,{recursive:!0,force:!0})}catch{}})}let w=await fs({userDataDir:v,width:f.window_size.width,height:f.window_size.height,startUrl:a??f.default_url??void 0});return t.current=w,vt("chrome",()=>{w.kill()}),w})();n.current=u;try{return await u}finally{n.current=null}},[e]),i=(0,At.useCallback)(()=>{Ot("chrome","Chrome killed"),Ot("tempDir","Temp dir removed"),t.current=null,r.current=null},[]);return{ensureChrome:o,killChrome:i}}var On=[{name:"run",description:"Execute a test run",args:'[--url <url>] "objective"'},{name:"login",description:"OAuth login",args:"[--profile name]"},{name:"logout",description:"Logout & revoke tokens",args:"[--profile name]"},{name:"whoami",description:"Show profile info",args:"[--profile name]"},{name:"balance",description:"Show credit balance"},{name:"profiles",description:"Manage profiles",args:"list|switch|delete"},{name:"config",description:"Manage configuration",args:"show|set-window|set-mode|set-assertion-mode|set-network-ws|set-network-sse|set-bug-detection|chrome-profile|project|folder|hints"},{name:"new",description:"Start a fresh session (uploads current first)"},{name:"name",description:"Set the current session's name (used at /exit save)",args:"<new-name>"},{name:"summary",description:"View detailed run summaries",args:"[index]"},{name:"cancel",description:"Abort current run"},{name:"help",description:"Show command reference"},{name:"clear",description:"Clear chat history"},{name:"exit",description:"Quit kane-cli"}];function Nn(e){let t=e.trim();if(!t.startsWith("/"))return null;let n=t.slice(1).match(/(?:[^\s"]+|"[^"]*")+/g)??[];if(n.length===0)return null;let o=n[0],i={},a=1;for(;a<n.length;){let u=n[a];if(u.startsWith("--")){let f=u.slice(2),v=n[a+1];v&&!v.startsWith("--")?(i[f]=v.replace(/^"|"$/g,""),a+=2):(i[f]=void 0,a++)}else{let f=u.replace(/^"|"$/g,"");o==="run"?i.objective=f:o==="config"?i.action?i.value=f:i.action=f:o==="profiles"?i.action=f:o==="summary"&&(i.index=f),a++}}return{command:o,args:i,raw:t}}var ev=[{name:"Testing",commands:On.filter(e=>["run","cancel"].includes(e.name))},{name:"Auth",commands:On.filter(e=>["login","logout","whoami","balance","profiles"].includes(e.name))},{name:"Settings",commands:On.filter(e=>["config"].includes(e.name))},{name:"Session",commands:On.filter(e=>["new","name","summary","help","clear","exit"].includes(e.name))}];var wl=[{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"}],Dp={name:"cancel",description:"Abort current run"},Op={name:"cancel",description:"Cancel current generation"},gr=[{name:"generate",description:"Switch to Generate mode (test case generator)"},{name:"summary",description:"View run summaries",args:"[index]"},Dp,...wl],Mr=[{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>]"},Op,...wl],yl=gr;function jn(e,t="run"){let r=t==="generate"?Mr:gr,n=e.startsWith("/")?e.slice(1):e;return n?r.filter(o=>o.name.startsWith(n)):r}var Np=new Set([...gr,...Mr].map(e=>e.name));function Rl(e,t){let r=t==="generate"?Mr:gr;return Np.has(e)?r.some(n=>n.name===e):!0}function Tl(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(M(),1);function Ri({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)(s,{color:l.purple,bold:!0,children:"Flow "+n.index+": "}),(0,jt.jsx)(s,{color:l.purple,children:n.objective})]}),(0,jt.jsx)(As,{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 Vt=k(M(),1),jp={ok:"\u2713",error:"\u2717",cancelled:"\u2298"},Vp={ok:l.green,error:l.red,cancelled:l.dim};function El({status:e,command:t,message:r,details:n,accentColor:o}){let i=t.startsWith("/")?t.slice(1):t,a=o??Vp[e];return(0,Vt.jsxs)(b,{flexDirection:"column",marginLeft:2,marginTop:1,children:[(0,Vt.jsx)(b,{marginLeft:1,children:(0,Vt.jsxs)(s,{color:a,bold:!0,children:[jp[e]," ",i]})}),(0,Vt.jsxs)(b,{borderStyle:"round",borderColor:a,paddingX:2,flexDirection:"column",width:70,children:[(0,Vt.jsx)(s,{children:r}),n&&(0,Vt.jsx)(s,{color:l.dim,children:n})]})]})}var Hr=k(xe(),1);import{join as Ur}from"path";var Fr=k(M(),1);function Cl({tabs:e,activeIndex:t}){return(0,Fr.jsx)(b,{children:e.map((r,n)=>(0,Fr.jsx)(b,{marginRight:1,children:n===t?(0,Fr.jsx)(s,{color:l.orange,bold:!0,children:`[ ${r} ]`}):(0,Fr.jsx)(s,{color:l.dim,children:` ${r} `})},r))})}var I=k(M(),1),qr=["Commands","Shortcuts","Tests","Setup","About"],Vn=18,Mp="https://www.testmuai.com/support/docs/kane-cli-introduction",Fp="https://github.com/LambdaTest/kane-cli/issues";function Il({onClose:e,version:t,environment:r,sessionId:n,runUrl:o,mode:i="run"}){let[a,u]=(0,Hr.useState)(0),[f,v]=(0,Hr.useState)(0);(0,Hr.useEffect)(()=>{v(0)},[a]);let w=qr[a],g=w==="Commands"?Up(i):w==="Shortcuts"?qp():w==="Tests"?Hp():w==="Setup"?Gp():Wp({version:t,environment:r,sessionId:n,runUrl:o}),T=g.length,c=f>0,m=f+Vn<T,$=g.slice(f,f+Vn);Ie((V,O)=>{if(O.escape){e();return}if(O.rightArrow||O.tab){u(H=>(H+1)%qr.length);return}if(O.leftArrow){u(H=>(H-1+qr.length)%qr.length);return}if(O.upArrow){v(H=>Math.max(0,H-1));return}if(O.downArrow){v(H=>Math.min(Math.max(0,T-Vn),H+1));return}});let D=[{keys:"\u2190\u2192/tab",label:"switch tabs"}];return T>Vn&&D.push({keys:"\u2191\u2193",label:"scroll"}),(0,I.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:[(0,I.jsx)(Cl,{tabs:[...qr],activeIndex:a,onChange:u}),c&&(0,I.jsx)(b,{marginTop:1,children:(0,I.jsx)(s,{color:l.dim,children:"\u25B2 more above"})}),(0,I.jsx)(b,{marginTop:c?0:1,flexDirection:"column",children:$}),m&&(0,I.jsx)(b,{children:(0,I.jsx)(s,{color:l.dim,children:"\u25BC more below"})}),(0,I.jsx)(ir,{bindings:D,escBackLabel:"back to chat"})]})}function Up(e){let t=e==="generate"?Mr:gr;return[(0,I.jsx)(s,{color:l.dim,children:"Type a natural-language objective and press \u21B5 to run, e.g."},"intro"),(0,I.jsx)(b,{marginLeft:2,children:(0,I.jsx)(s,{color:l.orange,children:'"search amazon for laptop"'})},"ex"),(0,I.jsx)(b,{marginBottom:1},"sp"),(0,I.jsx)(s,{color:l.dim,bold:!0,children:"Slash commands"},"cmd-h"),...t.map(r=>(0,I.jsxs)(b,{marginLeft:2,children:[(0,I.jsx)(b,{width:14,children:(0,I.jsxs)(s,{color:l.orange,children:["/",r.name]})}),r.args&&(0,I.jsx)(b,{width:14,children:(0,I.jsx)(s,{color:l.dim,children:r.args})}),(0,I.jsx)(s,{color:l.dim,children:r.description})]},r.name)),(0,I.jsx)(b,{marginBottom:1},"sp2"),(0,I.jsx)(b,{marginLeft:2,children:(0,I.jsx)(s,{color:l.dim,children:"/auth submenu: login \xB7 logout \xB7 whoami \xB7 profiles \xB7 balance"})},"auth-sub"),(0,I.jsx)(b,{marginLeft:2,children:(0,I.jsx)(s,{color:l.dim,children:"/config submenu: show \xB7 run (mode \xB7 assertion-mode) \xB7 generate \xB7 chrome-profile \xB7 project \xB7 folder \xB7 window \xB7 hints"})},"config-sub")]}function Mn(e,t){return[(0,I.jsx)(s,{color:l.dim,bold:!0,children:e},`h-${e}`),...t.map(([r,n],o)=>(0,I.jsxs)(b,{marginLeft:2,children:[(0,I.jsx)(b,{width:26,children:(0,I.jsx)(s,{color:l.orange,children:r})}),(0,I.jsx)(s,{color:l.dim,children:n})]},`r-${e}-${o}`)),(0,I.jsx)(b,{marginBottom:1},`s-${e}`)]}function qp(){return[...Mn("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"]]),...Mn("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"]]),...Mn("Lists & menus",[["\u2191 \u2193","Navigate"],["type any char","Filter"],["\u21B5","Select"],["Tab","Create-new (in pickers)"],["Esc","Clear filter, then back"]]),...Mn("Global",[["Ctrl+C","Cancel run \xB7 twice exits"]]),(0,I.jsx)(s,{color:l.dim,bold:!0,children:"Platform caveats"},"cv-h"),(0,I.jsx)(s,{color:l.dim,children:'\u2022 Mac Terminal.app: enable "Use Option as Meta key" (Profile \u2192 Keyboard)'},"cv-1"),(0,I.jsx)(s,{color:l.dim,children:"\u2022 Mac iTerm2: works by default (Esc+ mode)"},"cv-2"),(0,I.jsx)(s,{color:l.dim,children:"\u2022 Mac Mission Control may intercept Ctrl+arrow \u2014 use Option+arrow instead"},"cv-3"),(0,I.jsx)(s,{color:l.dim,children:"\u2022 Bare Forward Delete acts as Backspace (Ink can't disambiguate)"},"cv-4"),(0,I.jsx)(s,{color:l.dim,children:"\u2022 Shift+arrow is parsed but unbound (selection model is future)"},"cv-5"),(0,I.jsx)(s,{color:l.dim,children:"\u2022 Thousands of terminals exist \u2014 if a shortcut fails, run `cat` to see bytes"},"cv-6")]}function Hp(){return[(0,I.jsxs)(s,{color:l.dim,children:["Sessions you run here are saved as ",(0,I.jsx)(s,{color:l.orange,children:"*_test.md"})," files you can replay later."]},"t-intro"),(0,I.jsx)(b,{marginBottom:1},"t-sp1"),(0,I.jsx)(s,{color:l.dim,bold:!0,children:"Auto-save"},"t-save-h"),(0,I.jsxs)(s,{color:l.dim,children:[" In ",(0,I.jsx)(s,{color:l.orange,children:"testing"})," mode, /exit prompts to save the session under a name (default: timestamp)."]},"t-save-1"),(0,I.jsxs)(s,{color:l.dim,children:[" In ",(0,I.jsx)(s,{color:l.orange,children:"action"})," mode, sessions are ephemeral unless launched with --name or set via /name."]},"t-save-2"),(0,I.jsxs)(s,{color:l.dim,children:[" Output: ",(0,I.jsx)(s,{color:l.orange,children:"<cwd>/.testmuai/tests/<name>_test.md"})," + sibling ",(0,I.jsx)(s,{color:l.orange,children:"output-<name>/"})," (Result.md + .internal/meta.json)."]},"t-save-3"),(0,I.jsx)(b,{marginBottom:1},"t-sp2"),(0,I.jsx)(s,{color:l.dim,bold:!0,children:"Replay from a shell"},"t-run-h"),(0,I.jsxs)(s,{color:l.dim,children:[" ",(0,I.jsx)(s,{color:l.orange,children:"kane-cli testmd run path/to/foo_test.md"})," \xB7 ",(0,I.jsx)(s,{color:l.orange,children:"kane-cli testmd list"})," \xB7 bare ",(0,I.jsx)(s,{color:l.orange,children:"kane-cli testmd"})," opens a TTY picker."]},"t-run-1"),(0,I.jsx)(s,{color:l.dim,children:" The .md file carries its own config (mode, max_steps, variables, \u2026) so the replay is reproducible."},"t-run-2"),(0,I.jsx)(b,{marginBottom:1},"t-sp3"),(0,I.jsx)(s,{color:l.dim,bold:!0,children:"Naming a session mid-run"},"t-name-h"),(0,I.jsxs)(s,{color:l.dim,children:[" Type ",(0,I.jsxs)(s,{color:l.orange,children:["/name ","<new-name>"]})," any time before /exit. Name allowed chars: letters, digits, _, -."]},"t-name-1"),(0,I.jsxs)(s,{color:l.dim,children:[" Discarding at the save prompt: press ",(0,I.jsx)(s,{color:l.orange,children:"N"})," (only key that discards \u2014 every other key saves with default)."]},"t-name-2")]}function Gp(){return[(0,I.jsx)(s,{color:l.dim,bold:!0,children:"1. Login"},"s1-h"),(0,I.jsx)(s,{color:l.dim,children:" /auth \u2192 login. OAuth opens browser; basic uses LambdaTest username + access key."},"s1-b"),(0,I.jsx)(s,{color:l.dim,bold:!0,children:"2. Project & folder"},"s2-h"),(0,I.jsx)(s,{color:l.dim,children:" /config project / /config folder. Esc auto-picks KaneAI Generated / Untitled."},"s2-b"),(0,I.jsx)(s,{color:l.dim,bold:!0,children:"3. Run settings (/config \u2192 Run)"},"s3-h"),(0,I.jsx)(s,{color:l.dim,children:" mode: testing = lenient, saves to TMS \xB7 action = hard-stop on errors (e.g. login w/o creds) so you can step in"},"s3-b"),(0,I.jsx)(s,{color:l.dim,children:" assertion-mode: visual (default) = read/assert via vision \xB7 dom = DOM-based extraction/assertions"},"s3-c"),(0,I.jsx)(b,{marginBottom:1},"spacer-1"),(0,I.jsx)(s,{color:l.dim,bold:!0,children:"Variables (later wins)"},"v-h"),(0,I.jsxs)(s,{color:l.dim,children:[" ",`${Ur(Xe,"variables")}/*.json`," (global)"]},"v-1"),(0,I.jsxs)(s,{color:l.dim,children:[" ","{cwd}/.testmuai/variables/*.json"," (local) \xB7 --variables-file \xB7 --variables ","'{...}'"]},"v-2"),(0,I.jsx)(s,{color:l.dim,children:' Format: { "key": { "value": "...", "secret": false } } \xB7 ref via {{key}}'},"v-3"),(0,I.jsx)(b,{marginBottom:1},"spacer-2"),(0,I.jsx)(s,{color:l.dim,bold:!0,children:"Context files"},"c-h"),(0,I.jsxs)(s,{color:l.dim,children:[" Global: ",Ur(Xe,"global-memory.md")]},"c-1"),(0,I.jsxs)(s,{color:l.dim,children:[" Local: ","{cwd}/.testmuai/context.md"," \xB7 CLI: --global-context, --local-context"]},"c-2"),(0,I.jsx)(b,{marginBottom:1},"spacer-3"),(0,I.jsx)(s,{color:l.dim,bold:!0,children:"Paths"},"p-h"),(0,I.jsxs)(s,{color:l.dim,children:[" Config: ",Ur(Xe,"tui-config.json")," \xB7 Auth: ",Ur(Xe,"config.json")]},"p-1"),(0,I.jsxs)(s,{color:l.dim,children:[" Sessions: ",Ur(Xe,"sessions"),"/"]},"p-2")]}function Wp({version:e,environment:t,sessionId:r,runUrl:n}){return[(0,I.jsxs)(b,{children:[(0,I.jsx)(s,{color:l.orange,bold:!0,children:"kane-cli "}),(0,I.jsxs)(s,{color:l.muted,children:["v",e]})]},"title"),(0,I.jsx)(b,{marginBottom:1},"sp"),(0,I.jsxs)(b,{children:[(0,I.jsx)(b,{width:14,children:(0,I.jsx)(s,{color:l.dim,children:"Environment"})}),(0,I.jsx)(s,{children:t})]},"env"),(0,I.jsxs)(b,{children:[(0,I.jsx)(b,{width:14,children:(0,I.jsx)(s,{color:l.dim,children:"Session"})}),(0,I.jsx)(s,{children:r})]},"sess"),(0,I.jsxs)(b,{children:[(0,I.jsx)(b,{width:14,children:(0,I.jsx)(s,{color:l.dim,children:"Default URL"})}),(0,I.jsx)(s,{color:l.orange,children:n})]},"url"),(0,I.jsx)(b,{marginBottom:1},"sp2"),(0,I.jsxs)(b,{children:[(0,I.jsx)(b,{width:14,children:(0,I.jsx)(s,{color:l.dim,children:"Docs"})}),(0,I.jsx)(s,{color:l.orange,underline:!0,children:Mp})]},"docs"),(0,I.jsxs)(b,{children:[(0,I.jsx)(b,{width:14,children:(0,I.jsx)(s,{color:l.dim,children:"Bugs"})}),(0,I.jsx)(s,{color:l.orange,underline:!0,children:Fp})]},"bugs")]}var Fn=k(xe(),1);import{existsSync as kl,readFileSync as Rv,rmSync as Xp,unlinkSync as zp}from"fs";function Al(e){let t=_s(e);kl(t)&&Xp(t,{recursive:!0,force:!0}),kl(e)&&zp(e)}var Ti=k(M(),1);function _l({cwd:e,currentOrgId:t,onClose:r,onRun:n,onExport:o}){let[i,a]=(0,Fn.useState)("list"),[u,f]=(0,Fn.useState)(null),[v,w]=(0,Fn.useState)(0);return i==="inspect"&&u?(0,Ti.jsx)(Ls,{path:u.path,relPath:u.relPath,onBack:()=>a("list"),onAction:g=>{if(g==="run")n(u);else if(g==="export")o(u);else{try{Al(u.path)}catch{}f(null),a("list"),w(T=>T+1)}}}):(0,Ti.jsx)(Ps,{root:e,currentOrgId:t,onSelect:g=>{f(g),a("inspect")},onCancel:r},v)}var He=k(xe(),1);function Pl(e){let[t,r]=(0,He.useState)(null),[n,o]=(0,He.useState)(!1),[i,a]=(0,He.useState)(null),[u,f]=(0,He.useState)(null),[v,w]=(0,He.useState)(null),g=(0,He.useRef)(0),T=(0,He.useRef)([]),c=(0,He.useRef)(!1),m=(0,He.useRef)(null),$=(0,He.useRef)(e);$.current=e;let D=(0,He.useCallback)(async H=>{if(c.current)return null;c.current=!0;let A=++g.current,F=[];T.current=F;let ee=W=>`testmd-run-${A}-${W}`,re={register:(W,ie)=>{let ue=ee(W);F.push(ue),vt(ue,ie)},deregister:W=>Lr(ee(W)),cleanup:(W,ie)=>Ot(ee(W),ie),remoteLogger:$.current.remoteLogger},fe={runSteps:W=>new Promise(ie=>{let ue=()=>{m.current=null,ie()};m.current=ue,r({...W,exitOnComplete:!1,onAllComplete:()=>{W.onAllComplete?.(),ue()}})}),onLockState:W=>{},onRetryAttempt:W=>{},onSummary:async W=>{a(W)},onLinks:async W=>{f(W)},runUpload:W=>W.execute(),onAgentEvent:W=>{}};o(!0),a(null),f(null),w(null);try{let W=await $.current.buildInput(H),ie=await Ws(W,fe,re);return w(ie),ie}finally{c.current=!1,m.current=null,o(!1),r(null);for(let W of F)Ot(W,"run-finished");F.length=0}},[]),V=(0,He.useCallback)(()=>{for(let A of T.current)Ot(A,"cancelled");T.current=[];let H=m.current;m.current=null,H?.()},[]),O=(0,He.useCallback)(()=>{a(null),f(null),w(null)},[]);return{start:D,cancel:V,clearResult:O,running:n,runViewProps:t,summary:i,links:u,runSummary:v}}var Ve=k(xe(),1);function Ll(e={}){let[t,r]=(0,Ve.useState)(()=>xn({requestId:"",objective:""})),[n,o]=(0,Ve.useState)(!1),[i,a]=(0,Ve.useState)(null),u=(0,Ve.useRef)(null),f=(0,Ve.useRef)(!1),v=(0,Ve.useRef)(null),w=(0,Ve.useCallback)(async(D,V,O)=>{f.current=!1;let H=0,A=0,F=0;for await(let ee of D){if(f.current)break;switch(r(re=>Ks(re,ee)),ee.type){case"thinking_done":O?.("tcg_thinking",{tookMs:ee.tookMs});break;case"progress":{let re=Math.min(100,Math.floor(ee.pct/25)*25);re>F&&(F=re,O?.("tcg_progress",{pct:re}));break}case"snapshot":H=ee.data.scenarios.length,A=ee.data.scenarios.reduce((re,fe)=>re+(fe.test_cases?.length??0),0),O?.("tcg_snapshot",{scenarioCount:H,caseCount:A});break;case"clarification":O?.("tcg_clarification",{});break;case"done":O?.("tcg_request_done",{status:ee.status,scenarioCount:H,caseCount:A,durationMs:Date.now()-V});break;case"error":O?.("tcg_request_error",{errorCode:"tcg_request_failed",durationMs:Date.now()-V});break}}},[]),g=(0,Ve.useCallback)(async(D,V)=>{if(u.current)throw new Error("useTcgSession: a session is already active; call reset() or end() first");let O=e.makeClient??Js;u.current=O(D),v.current=new AbortController;let H=xn({requestId:"",objective:V.prompt});r(vn(H));let A;try{A=await u.current.start(V,v.current.signal)}catch(ee){throw u.current=null,v.current=null,r(re=>({...re,turnActive:!1})),ee}a(A.requestId),r(vn({...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]),T=(0,Ve.useCallback)(async(D,V)=>{if(!u.current||!i)throw new Error("useTcgSession: chat() with no active request");r(O=>vn(Ys(O)));try{await u.current.chat(i,D,V)}catch(O){throw r(H=>({...H,turnActive:!1})),O}},[i]),c=(0,Ve.useCallback)(async()=>{if(!(!i||!u.current)){f.current=!0,v.current&&v.current.abort();try{await u.current.cancel(i)}catch{}u.current=null,a(null),r(D=>({...D,turnActive:!1}))}},[i]),m=(0,Ve.useCallback)(async()=>{if(!(!i||!u.current)){f.current=!0,v.current&&v.current.abort();try{await u.current.end(i)}catch{}u.current=null,a(null),r(D=>({...D,turnActive:!1}))}},[i]),$=(0,Ve.useCallback)(()=>{f.current=!0,v.current&&v.current.abort(),v.current=null,r(xn({requestId:"",objective:""})),a(null),o(!1),u.current=null},[]);return(0,Ve.useEffect)(()=>()=>{f.current=!0,v.current&&v.current.abort()},[]),{state:t,isStreaming:t.turnActive,isTerminal:zs(t.status),isReconnecting:n,turnActive:t.turnActive,inReview:t.scenarios.length>0&&!t.turnActive&&!Vo(t.status),isSessionClosed:Vo(t.status),requestId:i,startWith:g,chat:T,cancel:c,end:m,reset:$}}var Z=k(xe(),1);import{join as hr,resolve as ag}from"path";import{mkdirSync as Ci,writeFileSync as Xl,appendFileSync as cg}from"fs";function Bl(e){let t=De(e.env);return!t||!t.testGeneratorBaseUrl?{ok:!1,error:`Unknown environment "${e.env}" \u2014 fix default_env via /config`}:{ok:!0,conn:{baseUrl:`${t.testGeneratorBaseUrl}/test-generator/api/v2`,tmsBaseUrl:t.tmsBaseUrl,authResolver:e.resolver,projectId:e.projectId,folderId:e.folderId,log:e.log}}}function $l(e){return e.turnActive?!0:e.requestId!=null&&!e.isSessionClosed&&!e.saved}function Dl(e){return e.isRunning||e.hasLiveResults}function Ol(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 Nl(e,t){return`S${e+1}.C${t+1}`}function jl(e,t){return e.reduce((r,n)=>r+(n.test_cases??[]).filter(o=>!t.has(o.id)).length,0)}function Vl(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 Gr=k(xe(),1);import{createHash as Yp}from"crypto";function Kp(e){return Yp("sha1").update(JSON.stringify({t:e.title,p:e.preconditions,m:e.manual_steps})).digest("hex")}var Un=class{constructor(t){this.deps=t;this.max=t.maxConcurrent??3}cache=new Map;caseById=new Map;queue=[];active=0;max;onSnapshot(t){t.forEach((r,n)=>{(r.test_cases??[]).forEach((o,i)=>{if(!St(o)||o.manual_steps==null)return;let a=Kp(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:Nl(n,i),status:"pending"}),this.queue.includes(o.id)||this.queue.push(o.id))})}),this.pump()}pump(){for(;this.active<this.max&&this.queue.length>0;){let t=this.queue.shift(),r=this.cache.get(t),n=this.caseById.get(t);!r||!n||r.status!=="pending"||(this.active++,this.runOne(t,n,r))}}async runOne(t,r,n){let o=`bifurcation-${t}`,i=new AbortController;n.controller=i;let a=this.deps.run??this.defaultRun.bind(this);vt(o,()=>i.abort());let u=Date.now();try{this.safeLog("tcg_bif_start",{caseId:t,ref:n.ref});let f=await a(ra(r),i.signal);if(!i.signal.aborted&&this.cache.get(t)===n){n.status="done",n.result=f;try{this.deps.persist?.(t,f,n.ref)}catch{}this.safeLog("tcg_bif_done",{caseId:t,ref:n.ref,total_flows:f.total_flows,is_single_flow:f.is_single_flow,estimated_steps_total:(f.sub_objectives??[]).reduce((v,w)=>v+(w.estimated_steps??0),0),credits_consumed:f.credits_consumed,durationMs:Date.now()-u})}}catch(f){!i.signal.aborted&&this.cache.get(t)===n&&(n.status="error",n.error=f.message,this.safeLog("tcg_bif_error",{caseId:t,ref:n.ref,errorCode:"bifurcation_failed",durationMs:Date.now()-u}))}finally{Lr(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=na({objective:t,model:this.deps.model,sessionId:this.deps.sessionId,auth:n});return oa(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(),Lr(`bifurcation-${t}`);this.cache.clear(),this.caseById.clear(),this.queue=[],this.active=0}};function Ml(e){let t=(0,Gr.useRef)(null);return(0,Gr.useEffect)(()=>{if(!e.enabled)return;let r=e.log,n=r?(o,i,a,u)=>r(i,u??{}):void 0;return t.current=new Un({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,Gr.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 ql,isAbsolute as Qp,extname as Zp}from"path";import{homedir as Ul}from"os";var Jp=/(?<=^|\s)@(?:"([^"]*)"|([^\s@]+))/g;function Fl(e){let t=[];for(let r of e.matchAll(Jp)){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 eg=/^s\d+(\.c\d+)?$/i;function tg(e){return e==="~"?Ul():e.startsWith("~/")?ql(Ul(),e.slice(2)):e}function rg(e){return/^https?:\/\//i.test(e)?!1:e.includes("/")?!0:bn.has(Zp(e).toLowerCase())}function Hl(e,t){let r=Fl(e),n=[],o=[];for(let a of r){let u=a.value,f=a.end;if(!a.raw.includes('"')){let g=u.match(/[.,;:!?]+$/);g&&(u=u.slice(0,-g[0].length),f-=g[0].length)}if(eg.test(u)||!rg(u))continue;let v=tg(u),w=Qp(v)?v:ql(t,v);n.push(w),o.push([a.start,f])}let i=e;for(let[a,u]of o.sort((f,v)=>v[0]-f[0]))i=i.slice(0,a)+i.slice(u);return i=i.replace(/[ \t]{2,}/g," ").replace(/ +([.,;:!?])/g,"$1").trim(),{paths:n,promptText:i}}var ng=["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"],og=new Set(ng);function Ei(e){let t={};for(let r of Object.keys(e))og.has(r)&&e[r]!==void 0&&(t[r]=e[r]);return t}import{mkdirSync as ig,appendFileSync as sg}from"fs";import{join as Gl}from"path";function Wl(e,t,r,n,o=Xe){let i=Gl(o,"tcg",e&&e.length>0?e:"pending"),a=Gl(i,"errors.log");try{let u=r instanceof Error?r.stack??r.message:String(r),f=`[${new Date().toISOString()}] phase=${t} ${u}${n?" "+JSON.stringify(n):""}
|
|
3
|
+
`;ig(i,{recursive:!0}),sg(a,f)}catch{}return a}var ke=k(M(),1);async function lg(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 zl(e){return typeof e=="object"&&e!==null&&e.name==="AbortError"}function Yl(e){let{tcg:t,initialChatMode:r,tuiConfig:n,auth:o,session:i,appendStatic:a,handleInput:u,freezeTcgArtifact:f,rearmArtifactFreeze:v,initialGenerateLimits:w,ensureProjectAndFolder:g,config:T}=e,[c,m]=(0,Z.useState)(r??"run"),[$,D]=(0,Z.useState)(null),[V,O]=(0,Z.useState)(null),[H,A]=(0,Z.useState)(null),[F,ee]=(0,Z.useState)(0),[re,fe]=(0,Z.useState)(!1),W=(0,Z.useRef)(null),ie=(0,Z.useRef)(()=>{}),ue=(0,Z.useCallback)(()=>lg(o),[o]),Ce=(0,Z.useRef)(null);Ce.current=t.requestId;let Be=(0,Z.useCallback)((X,Q)=>{let Y=X.endsWith("_error")?"warn":"info",G=Ei({request_id:Ce.current??void 0,...Q});i.log(Y,X,JSON.stringify(G),G);try{let ce=typeof G.request_id=="string"&&G.request_id||Ce.current||"unknown",ye=hr(Xe,"tcg",ce);Ci(ye,{recursive:!0}),cg(hr(ye,"tcg_tui.log"),`[${new Date().toISOString()}] ${X} ${JSON.stringify(G)}
|
|
4
|
+
`)}catch{}},[i]),et=(0,Z.useCallback)((X,Q)=>{let Y=Wl(Ce.current,Q.phase,X),G=typeof X?.status=="number"?X.status:void 0;Be(`${Q.phase}_error`,{errorCode:`${Q.phase}_failed`,status:G});let ce=Q.phase==="upload"?"\u2717 Couldn't upload attachments \u2014 generation not started. Try again.":"\u2717 Generation failed \u2014 send another request.";a((0,ke.jsxs)(b,{flexDirection:"column",marginTop:1,marginBottom:1,children:[(0,ke.jsx)(s,{color:l.red,children:ce}),(0,ke.jsx)(s,{color:l.dim,children:`details: ${Y}`})]})),D(null)},[Be,a]),Ft=(0,Z.useRef)(0),tt=(0,Z.useCallback)((X,Q,Y)=>{try{let G=hr(Xe,"tcg",Ce.current??"unknown","bifurcation");Ci(G,{recursive:!0}),Xl(hr(G,`${X}.json`),JSON.stringify({request_id:Ce.current,ref:Y,...Q},null,2))}catch{}},[]),gt=Ml({scenarios:t.state?.scenarios??[],model:n.model,sessionId:i.sessionId,resolveAuth:ue,environment:o?.creds?.getDefaultEnv?.(),enabled:!!t.requestId&&!t.isSessionClosed,log:Be,persist:tt}),vr=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{let X=t.requestId;if(!X||!t.isSessionClosed&&!t.isTerminal)return;let Q=t.state?.scenarios??[];if(Q.length!==0&&vr.current!==X){vr.current=X;try{let Y=hr(Xe,"tcg",X);Ci(Y,{recursive:!0}),Xl(hr(Y,"request.json"),JSON.stringify({request_id:X,objective:t.state?.objective,headline:t.state?.headline,scenarios:Q,status:t.state?.status},null,2))}catch{}}},[t.requestId,t.isTerminal,t.isSessionClosed,t.state?.scenarios,t.state?.status,t.state?.objective,t.state?.headline]);let br=(0,Z.useCallback)((X,Q=1500)=>{A(X),W.current&&clearTimeout(W.current),W.current=setTimeout(()=>{A(null),W.current=null},Q)},[]);(0,Z.useEffect)(()=>()=>{W.current&&clearTimeout(W.current)},[]);let Ge=(0,Z.useCallback)((X,Q)=>{let Y=o.getResolver();if(!Y)return{ok:!1,error:"Not logged in \u2014 use /login"};let G=Bl({env:o.creds.getDefaultEnv(),resolver:Y,projectId:X??n.project_id??void 0,folderId:Q??n.folder_id??void 0,log:(ce,ye,lt,We)=>i.log(ce,ye,"",Ei(We??{}))});return G.ok?{ok:!0,conn:G.conn}:{ok:!1,error:G.error}},[o,n,i]),Ke=(0,Z.useRef)(!1),$e=(0,Z.useRef)(null),[Wr,Jt]=(0,Z.useState)(!1),Ut=(0,Z.useCallback)((X,Q,Y,G,ce)=>{let ye=process.cwd(),{paths:lt,promptText:We}=Hl(X,ye);return sa({promptText:We,filePaths:lt,cwd:ye,scenarios:t.state?.scenarios??[],isRefine:Q,conn:Y,deps:{validate:ia,upload:(ae,Je,Zt)=>aa(ae,Je,Zt,{signal:ce}),buildMappings:ca},onValidated:G})},[t]),Sr=(0,Z.useRef)(!1);(0,Z.useEffect)(()=>{if(c!=="generate"){Sr.current=!1;return}Sr.current||n.project_id&&n.folder_id||g&&o.getResolver()&&(Sr.current=!0,g())},[c,n.project_id,n.folder_id,g,o]);let Xr=(0,Z.useCallback)(async X=>{D(null),O(null),fe(!1);let Q=X.trim();if(!Q)return;if(Q.startsWith("/")){ie.current(Q),ee(ae=>ae+1);return}let Y=n.project_id??null,G=n.folder_id??null;if(g){let ae=await g();if(ae)Y=ae.projectId,G=ae.folderId;else if(T){let Je=T.load();Y=Je.project_id??Y,G=Je.folder_id??G}}else if(T){let ae=T.load();Y=ae.project_id??Y,G=ae.folder_id??G}if(!Y||!G){O("Set a project and folder first \u2014 use /config");return}let ce=Ge(Y,G);if(!ce.ok){D(ce.error);return}if(Ke.current)return;Ke.current=!0;let ye=new AbortController;$e.current=ye;let lt=ce.conn,We;try{We=await Ut(Q,!1,lt,()=>{a((0,ke.jsx)(b,{marginTop:1,children:(0,ke.jsx)(s,{color:l.generateAccent,bold:!0,children:`\u276F ${Q}`})})),Jt(!0)},ye.signal)}catch(ae){if(ae instanceof Mo){O(ae.errors.join(`
|
|
5
|
+
`));return}if(zl(ae))return;et(ae,{phase:"upload"});return}finally{Ke.current=!1,Jt(!1),$e.current===ye&&($e.current=null)}if(!ye.signal.aborted){for(let ae of We.warnings)e.emitFeedback("ok","/generate",ae,void 0,l.generateAccent);f(),t.reset(),v();try{let ae=w??{};await t.startWith(lt,{prompt:We.promptText,attachments:We.attachments,scenarioLimit:ae.scenarioLimit??n.generate.scenario_limit,perScenarioLimit:ae.perScenarioLimit??n.generate.per_scenario_limit,memoryEnhancement:n.generate.memory_enabled})}catch(ae){et(ae,{phase:"generation"})}}},[n,t,Ge,Ut,e,g,T,w,a,f,v,et]),wr=(0,Z.useCallback)(()=>D(null),[]),zr=(0,Z.useCallback)(async X=>{let Q=Ge();if(!Q.ok){D(Q.error);return}if(Ke.current)return;Ke.current=!0;let Y=new AbortController;$e.current=Y;let G;try{G=await Ut(X,!0,Q.conn,()=>{a((0,ke.jsx)(s,{color:l.generateAccent,bold:!0,children:`\u276F ${X}`})),Ft.current+=1,Be("tcg_refine",{turnIndex:Ft.current}),Jt(!0)},Y.signal)}catch(ce){if(ce instanceof Mo){O(ce.errors.join(`
|
|
6
|
+
`));return}if(zl(ce))return;et(ce,{phase:"upload"});return}finally{Ke.current=!1,Jt(!1),$e.current===Y&&($e.current=null)}if(!Y.signal.aborted){for(let ce of G.warnings)e.emitFeedback("ok","/generate",ce,void 0,l.generateAccent);try{await t.chat(G.promptText,{mappings:G.mappings,attachments:G.attachments})}catch(ce){et(ce,{phase:"chat"})}}},[a,t,Be,Ge,Ut,e,et]),qt=(0,Z.useCallback)(async X=>{if(!Ke.current){Ke.current=!0,a((0,ke.jsx)(s,{color:l.generateAccent,bold:!0,children:`\u276F ${X}`}));try{await t.chat(X)}catch(Q){et(Q,{phase:"chat"})}finally{Ke.current=!1}}},[a,t,et]),Qt=(0,Z.useCallback)(X=>{let Q=Nn(X);if(Q?.command==="view"){let Y=X.trim().split(/\s+/).slice(1)[0];if(t.state.scenarios.length===0){e.emitFeedback("ok","/view","(no generation yet)");return}let G=Ol(Y);if(G.level==="cases"&&G.scenarioIdx>=t.state.scenarios.length){e.emitFeedback("error","/view",`No scenario S${G.scenarioIdx+1}`);return}e.openBrowse(G);return}if(Q?.command==="save"){let Y=t.state.scenarios;if(Y.length===0){e.emitFeedback("error","/save","Nothing to save yet.");return}let G=Vl(Y,e.excluded),ce=G.reduce((ae,Je)=>ae+(Je.test_cases??[]).filter(St).length,0);if(ce===0){e.emitFeedback("error","/save",jl(Y,e.excluded)===0?"All cases removed \u2014 nothing to save.":"No functional test cases to save.");return}let ye={...t.state,scenarios:G},lt=X.trim().split(/\s+/).slice(1)[0],We=lt?ag(process.cwd(),lt):process.cwd();fe(!0),e.freezeTcgArtifact(),(async()=>{let ae=G.flatMap(Re=>(Re.test_cases??[]).filter(St)),Je=Date.now()+3e4;for(;Date.now()<Je&&ae.some(Re=>gt.getStatus(Re.id)==="pending");)await new Promise(Re=>setTimeout(Re,250));let Zt=new Map;for(let Re of ae)Zt.set(Re.id,gt.getStatus(Re.id)==="done"?gt.getResult(Re.id):void 0);t.end();let Pt=0,Rr=Re=>{let le=Zt.get(Re.id);return le?Zs(le,Re):(Pt++,ea(Re))};try{let Re=await ta(ye,We,{},Rr);Be("tcg_save",{savedCount:Re.paths.length,fellBack:Pt})}catch(Re){e.emitFeedback("error","/save",`Save failed: ${Re.message}`);return}let Gt=`test case${ce===1?"":"s"}`;e.emitFeedback("ok","/save",Pt>0?`Saved ${ce} ${Gt} \xB7 ${Pt} fell back to raw steps.`:`Saved ${ce} ${Gt}.`)})();return}Q?.command==="new"&&fe(!1),u(X)},[u,e,t,gt,Be]);ie.current=Qt;let Ht=(0,Z.useCallback)(X=>{m(X),ee(Q=>Q+1)},[]),yr=(0,Z.useCallback)(X=>{let Q=c==="generate"&&X==="run",Y=c==="run"&&X==="generate",G=$l({requestId:t.requestId,isSessionClosed:t.isSessionClosed,turnActive:t.turnActive,saved:re}),ce=Dl({isRunning:e.runner.isRunning,hasLiveResults:e.runner.lastRunEnd!=null});return Q&&G?(e.openSwitchConfirm("run"),!1):Y&&ce?(e.openSwitchConfirm("generate"),!1):(Ht(X),!0)},[c,t.requestId,t.isSessionClosed,t.turnActive,re,e,Ht]),Yr=(0,Z.useCallback)(async X=>{c==="generate"?(e.freezeTcgArtifact(),await t.end().catch(()=>{}),t.reset(),fe(!1),e.appendStatic((0,ke.jsxs)(b,{marginBottom:1,children:[(0,ke.jsx)(s,{color:l.red,children:"\u2717 "}),(0,ke.jsx)(s,{color:l.dim,children:"Discarded generation"})]}))):(e.runner.isRunning&&e.runner.cancelRun(),e.runner.clearLastRun(),e.appendStatic((0,ke.jsxs)(b,{marginBottom:1,children:[(0,ke.jsx)(s,{color:l.red,children:"\u2717 "}),(0,ke.jsx)(s,{color:l.dim,children:"Discarded run"})]}))),Ht(X),X==="generate"?e.emitFeedback("ok","/generate","Switched to Generate mode.",void 0,l.generateAccent):e.emitFeedback("ok","/run","Switched to Run mode.",void 0,l.orange)},[c,t,e,Ht]),no=(0,Z.useCallback)(()=>{if(t.isStreaming)e.freezeTcgArtifact(),t.cancel();else if($e.current)$e.current.abort();else return;e.appendStatic((0,ke.jsxs)(b,{marginBottom:1,children:[(0,ke.jsx)(s,{color:l.red,children:"\u2717 "}),(0,ke.jsx)(s,{color:l.dim,children:"Generation cancelled"})]}))},[e,t]);return{chatMode:c,tcgError:$,tcgValidationError:V,composeIdleHint:H,inputClearSeq:F,submitting:Wr,handleGenerateSubmit:Xr,onRefine:zr,onClarificationAnswer:qt,onSlash:Qt,onClearError:wr,flashComposeHint:br,setInputClearSeq:ee,setChatMode:m,setTcgError:D,setTcgValidationError:O,generateSaved:re,requestSwitch:yr,confirmSwitch:Yr,cancelGenerate:no,bifurcation:gt,tcgLog:Be}}var Rt=k(xe(),1);function qn(e){return e.level==="cases"?{level:"cases",scenarioIdx:e.scenarioIdx,caseIdx:0,cursor:0}:{level:"scenarios",scenarioIdx:0,caseIdx:0,cursor:0}}var ug=(e,t)=>Math.max(0,Math.min(t,e));function Ii(e,t,r){switch(t.type){case"open":return qn(t.target);case"move":{let n=e.level==="scenarios"?r.length-1:e.level==="cases"?(r[e.scenarioIdx]??1)-1:0;return{...e,cursor:ug(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 Kl(e){let[t,r]=(0,Rt.useState)(null),[n,o]=(0,Rt.useReducer)((g,T)=>Ii(g,T,e),qn({level:"scenarios"})),[i,a]=(0,Rt.useState)(new Set),u=(0,Rt.useCallback)(g=>{r(g),o({type:"open",target:g})},[]),f=(0,Rt.useCallback)(()=>r(null),[]),v=(0,Rt.useCallback)(g=>{a(T=>{let c=new Set(T);return c.has(g)?c.delete(g):c.add(g),c})},[]),w=(0,Rt.useCallback)(g=>{a(T=>{let c=new Set(T),m=g.length>0&&g.every($=>c.has($));return g.forEach($=>m?c.delete($):c.add($)),c})},[]);return{target:t,open:u,close:f,isOpen:t!=null,state:n,excluded:i,toggleCase:v,toggleScenario:w}}var Hn=k(xe(),1);function Jl(){return{committedChat:0,committedThinking:0,prevTurnActive:!1}}function Ql(e,t,r){let n=[],o={...e};if(e.prevTurnActive&&!r&&t.thinkingLog.length>e.committedThinking){let a=t.thinkingLog.slice(e.committedThinking).reduce((f,v)=>f+(v.tookMs??0),0),u=Math.round(a/1e3);n.push({kind:"thinking-summary",text:` thought for ${u}s`}),o.committedThinking=t.thinkingLog.length}o.prevTurnActive=r;for(let i=e.committedChat;i<t.chatLog.length;i++)n.push({kind:"chat",text:t.chatLog[i].text});return o.committedChat=t.chatLog.length,{items:n,next:o}}var ki=k(M(),1);function dg(e){return e.kind==="thinking-summary"?(0,ki.jsx)(s,{color:l.dim,children:e.text}):(0,ki.jsx)(la,{text:e.text})}function Zl(e,t,r){let n=(0,Hn.useRef)(Jl());(0,Hn.useEffect)(()=>{let{items:o,next:i}=Ql(n.current,e,t);n.current=i;for(let a of o)r(dg(a))})}var Ae=k(xe(),1);import{readFileSync as fg,writeFileSync as mg,renameSync as pg,mkdirSync as gg}from"fs";import{dirname as hg}from"path";var Ai=1,eu=()=>({schemaVersion:Ai,numStartups:0,perHint:{}}),Gn=class{constructor(t=Wi){this.path=t;this.data=this.read()}data;read(){try{let t=JSON.parse(fg(this.path,"utf-8"));return t.schemaVersion!==Ai?eu():{schemaVersion:Ai,numStartups:typeof t.numStartups=="number"?t.numStartups:0,perHint:t.perHint??{}}}catch{return eu()}}write(){try{gg(hg(this.path),{recursive:!0});let t=`${this.path}.tmp`;mg(t,JSON.stringify(this.data,null,2)+`
|
|
7
|
+
`),pg(t,this.path)}catch(t){process.stderr.write(`[hints] Failed to save state: ${t instanceof Error?t.message:String(t)}
|
|
8
|
+
`)}}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 xg,writeFileSync as vg,renameSync as bg,mkdirSync as Sg}from"fs";import{dirname as wg}from"path";var tu=1,yg=3600*1e3;function ru(e,t=Date.now()){return e!==null&&t-e.fetchedAt<yg}function nu(e,t=Co(e)){try{let r=JSON.parse(xg(t,"utf-8"));if(r.wrapperVersion!==tu)return null;let{catalog:n}=Bn(r.catalog);return n?{catalog:n,fetchedAt:typeof r.fetchedAt=="number"?r.fetchedAt:0}:null}catch{return null}}function ou(e,t,r=Co(e)){try{Sg(wg(r),{recursive:!0});let n={wrapperVersion:tu,writtenByVersion:ot,fetchedAt:Date.now(),catalog:t},o=`${r}.tmp`;vg(o,JSON.stringify(n,null,2)+`
|
|
9
|
+
`),bg(o,r)}catch(n){process.stderr.write(`[hints] Failed to save catalog cache: ${n instanceof Error?n.message:String(n)}
|
|
10
|
+
`)}}var Rg=5e3;async function iu(e){let t=new AbortController,r=setTimeout(()=>t.abort(),Rg);try{let o=`${De(e.env).controllerBaseUrl}/public/hints/catalog?clientVersion=${encodeURIComponent(ot)}&env=${e.env}`,i=await ts(o,{headers:{Accept:"application/json"},signal:t.signal});if(!i.ok)return{status:"error"};let a=await i.json(),{catalog:u}=Bn(a);return u?{status:"ok",catalog:u}:{status:"error"}}catch{return{status:"error"}}finally{clearTimeout(r)}}var Wn=k(ci(),1);function su(e,t=ot){let r=Wn.default.coerce(e??"");if(!r)return!0;let n=Wn.default.coerce(t);return n?Wn.default.gte(n,r):!0}var Tg={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 au(e,t){let r=[],n=!0;for(let o of e){let i=Tg[o];if(!i){r.push(o),n=!1;continue}i(t)||(n=!1)}return{pass:n,unknown:r}}var Eg=3,Cg=(e,t)=>e==="both"||e===t;function Ig(e,t,r){return e.boost?t.shownCount(e.id)<e.boost.maxShows&&r<Date.parse(e.boost.until):!1}var kg=e=>Number.isFinite(e)?1:Eg;function Ag(e,t){let r=e.filter(i=>i.weight>0);if(r.length===0)return null;let n=r.reduce((i,a)=>i+a.weight,0),o=t()*n;for(let i of r)if(o-=i.weight,o<=0)return i.hint;return r[r.length-1].hint}function cu(e){let{catalog:t,store:r,mode:n,now:o,predicateCtx:i,rng:a}=e,u=[];if(!t.enabled)return{footer:null,skipped:u,boosted:!1};let f=[];for(let g of t.hints){if(!su(g.minVersion)){u.push({id:g.id,reason:"min_version"});continue}let T=au(g.relevance,i);if(T.unknown.length>0){u.push({id:g.id,reason:"unknown_predicate"});continue}if(!T.pass||!Cg(g.target,n))continue;if(g.retireAfterShows!==void 0&&r.shownCount(g.id)>=g.retireAfterShows){u.push({id:g.id,reason:"retired"});continue}if(r.sessionsSince(g.id)<g.cooldownSessions)continue;let c=Ig(g,r,o),m=(c?g.boost.weight:g.weight)*kg(r.sessionsSince(g.id));f.push({hint:g,weight:m,boosted:c})}let v=Ag(f.map(({hint:g,weight:T})=>({hint:g,weight:T})),a),w=v?f.find(g=>g.hint.id===v.id)?.boosted??!1:!1;return{footer:v,skipped:u,boosted:w}}function lu(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 uu(e){let[t,r]=(0,Ae.useState)(null),[n,o]=(0,Ae.useState)(0),i=(0,Ae.useRef)(null),a=(0,Ae.useRef)(!1),u=(0,Ae.useRef)(new Set),f=(0,Ae.useRef)(!1),v=(0,Ae.useRef)(null),w=(0,Ae.useRef)(null),g=(0,Ae.useRef)(null),T=(0,Ae.useRef)(!1),c=(0,Ae.useRef)(!1),m=(0,Ae.useRef)(null),$=(0,Ae.useRef)(!0);return(0,Ae.useEffect)(()=>()=>{$.current=!1},[]),(0,Ae.useEffect)(()=>{if(!e.enabled||!e.ready)return;let D=i.current??(i.current=e.store??new Gn),V=e.now??Date.now;if(m.current!==e.env&&(m.current=e.env,v.current=null,T.current=!1,c.current=!1,w.current=null,g.current=null),v.current===null){let ue=nu(e.env);v.current={catalog:ue?.catalog??null,fetchedAt:ue?.fetchedAt??0}}let O=v.current,H=ru(O.catalog?{catalog:O.catalog,fetchedAt:O.fetchedAt}:null,V()),A=e.catalog??(H?O.catalog:null);if(a.current||(a.current=!0,D.bumpStartup()),!T.current&&(T.current=!0,!H)){let ue=e.env;(async()=>{let Ce=await iu({env:ue});Ce.status==="ok"&&(ou(ue,Ce.catalog),m.current===ue&&(v.current={catalog:Ce.catalog,fetchedAt:V()},$.current&&o(Be=>Be+1)))})()}if(!A){w.current=null,r(null);return}if(c.current||(c.current=!0,D.prune(A.hints.map(ue=>ue.id))),!(g.current!==e.chatMode)&&w.current!==null)return;g.current=e.chatMode;let ee=lu(e.log),re=e.rng??Math.random,fe=V(),W={config:e.config,tokenValid:e.tokenValid,numStartups:D.numStartups,platform:process.platform,sessionUsedGenerate:e.sessionUsedGenerate},ie=cu({catalog:A,store:D,mode:e.chatMode,now:fe,predicateCtx:W,rng:re});w.current=ie.footer,r(ie.footer),ie.footer&&!u.current.has(ie.footer.id)&&(u.current.add(ie.footer.id),D.recordShown(ie.footer.id),ee.shown({id:ie.footer.id,category:ie.footer.category,surface:"footer",boosted:ie.boosted})),f.current||(f.current=!0,ie.skipped.forEach(ue=>ee.skipped(ue)))},[e.enabled,e.ready,e.chatMode,e.env,n]),{footerHint:t}}var du=k(xe(),1);import{readdir as _g}from"fs/promises";import{join as Pg,relative as Lg,extname as Bg}from"path";var $g=new Set(["node_modules",".git"]),Dg=e=>e.startsWith("output-");async function Xn(e,t,r={}){let n=r.limit??50,o=r.maxDepth??6,i=t.toLowerCase(),a=[];async function u(f,v){if(a.length>=n||v>o)return;let w;try{w=await _g(f,{withFileTypes:!0})}catch{return}for(let g of w){if(a.length>=n)return;if(g.name.startsWith(".")||$g.has(g.name)||Dg(g.name))continue;let T=Pg(f,g.name);if(g.isDirectory())await u(T,v+1);else if(g.isFile()){if(!bn.has(Bg(g.name).toLowerCase()))continue;let c=Lg(e,T);(!i||c.toLowerCase().includes(i))&&a.push(c)}}}return await u(e,0),a.slice(0,n)}var _e=k(M(),1);function fu({projectId:e,folderId:t,onSubmit:r,history:n,error:o,validationError:i,composeIdleHint:a,clearSeq:u,closedNotice:f,busy:v=!1}){let w=!!e&&!!t,g=(0,du.useCallback)(T=>Xn(process.cwd(),T),[]);return(0,_e.jsxs)(b,{flexDirection:"column",children:[(0,_e.jsx)(b,{marginLeft:2,marginTop:1,children:!w&&(0,_e.jsxs)(s,{color:l.orange,children:["\u2691 ",(0,_e.jsx)(s,{color:l.muted,children:"project / folder not set \u2014 use "}),(0,_e.jsx)(s,{bold:!0,children:"/config"})]})}),i&&(0,_e.jsx)(b,{marginLeft:2,marginTop:1,children:(0,_e.jsx)(It,{variant:"error",paddingY:0,children:(0,_e.jsx)(s,{color:l.red,children:i})})}),o&&(0,_e.jsx)(b,{marginLeft:2,marginTop:1,children:(0,_e.jsx)(It,{variant:"error",paddingY:0,children:(0,_e.jsx)(s,{color:l.red,children:o})})}),f&&(0,_e.jsx)(b,{paddingX:1,children:(0,_e.jsx)(s,{color:l.dim,children:f})}),a&&(0,_e.jsx)(b,{marginLeft:2,marginTop:1,children:(0,_e.jsx)(s,{color:l.dim,children:a})}),(0,_e.jsx)(Dt,{inert:v,onSubmit:r,history:n,accent:l.generateAccent,commands:jn("","generate"),clearSeq:u,clearOnSubmit:!1,mentionFiles:g,placeholder:v?"Processing files\u2026 (Ctrl+C to cancel)":"Describe what to generate... (/ = commands)",footerBindings:v?[{keys:"ctrl+c",label:"cancel"}]:[{keys:"\u2191\u2193",label:"history"},{keys:"\u21B5",label:"generate"},{keys:"tab",label:"complete"},{keys:"/run",label:"Run mode"},{keys:"ctrl+t",label:"thinking"}]})]})}var vu=k(xe(),1);var Me=k(M(),1);function Og(e){return e?`[${e[0].toUpperCase()}]`:""}var Ng=8;function zn({scenarios:e,headline:t,activeSid:r}){let n=e.slice(0,Ng),o=e.length-n.length;return(0,Me.jsxs)(b,{flexDirection:"column",marginBottom:1,marginLeft:2,children:[t&&(0,Me.jsx)(b,{paddingX:1,children:(0,Me.jsx)(s,{color:l.generateAccent,bold:!0,children:t})}),(0,Me.jsxs)(It,{title:`Scenarios (${e.length})`,titleColor:l.generateAccent,borderColor:l.generateAccent,paddingX:1,children:[n.map(i=>{let a=!!r&&i.sid===r,u=a?"\u2237":"\u2713",f=a?l.generateAccent:l.green,v=i.test_cases?.length??0;return(0,Me.jsxs)(b,{gap:1,children:[(0,Me.jsx)(s,{color:f,children:u}),(0,Me.jsx)(s,{color:l.dim,children:i.sid??`#${i.id}`}),(0,Me.jsx)(s,{children:i.title??"(untitled)"}),(0,Me.jsx)(s,{color:l.muted,children:Og(i.priority)}),(0,Me.jsxs)(s,{color:l.dim,children:[v," case",v===1?"":"s"]})]},i.id)}),o>0&&(0,Me.jsx)(s,{color:l.muted,children:`\u22EE +${o} more`}),(0,Me.jsx)(b,{marginTop:1,children:(0,Me.jsxs)(s,{color:l.dim,children:[(0,Me.jsx)(s,{color:l.generateAccent,children:"/view"})," view/edit \xB7 ",(0,Me.jsx)(s,{color:l.generateAccent,children:"/save"})," save as runnable tests"]})})]})]})}var xr=k(M(),1),mu=24;function jg(e){let t=Math.max(0,Math.min(100,e)),r=Math.round(t/100*mu);return{filled:"\u2588".repeat(r),empty:"\u2591".repeat(mu-r)}}function pu({pct:e}){let t=jg(e);return(0,xr.jsxs)(b,{paddingX:1,children:[(0,xr.jsx)(s,{color:l.generateAccent,children:t.filled}),(0,xr.jsx)(s,{color:l.muted,children:t.empty}),(0,xr.jsx)(s,{color:l.dim,children:` ${e}%`})]})}var gu=k(xe(),1);var _t=k(M(),1);function hu(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 xu({state:e,history:t,turnActive:r,busy:n=!1,onClarificationAnswer:o,onClearError:i,onRefine:a,onSlash:u}){let f=(0,gu.useCallback)(w=>Xn(process.cwd(),w),[]),v=o?w=>{i?.(),o(w)}:void 0;return(0,_t.jsxs)(_t.Fragment,{children:[e.pendingClarification&&v&&(0,_t.jsx)(b,{paddingX:1,marginTop:1,flexDirection:"column",children:(0,_t.jsx)(Dt,{onSubmit:v,history:t,noHistory:!0,accent:l.generateAccent,placeholder:"Type your answer\u2026",submitVerb:"answer",footerBindings:[{keys:"\u21B5",label:"answer"}]})}),!(e.pendingClarification&&v)&&(r||n?(0,_t.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,_t.jsx)(Dt,{onSubmit:w=>{let g=hu(w,r);g.kind==="slash"?u?.(g.text):g.kind==="refine"&&a?.(g.text)},history:t,noHistory:!0,accent:l.generateAccent,commands:jn("","generate"),scenarios:e.scenarios,mentionFiles:f,placeholder:"Refine, or /save \xB7 /view \xB7 /run",submitVerb:"refine",footerBindings:[{keys:"\u21B5",label:"refine"},{keys:"tab",label:"complete"},{keys:"/run",label:"Run mode"},{keys:"ctrl+t",label:"thinking"}]}))]})}var ct=k(M(),1);function bu({state:e,requestId:t,history:r,onClarificationAnswer:n,error:o,onClearError:i,turnActive:a,busy:u=!1,onRefine:f,onSlash:v}){let[w,g]=(0,vu.useState)(!1),T=e.thinking.length===0&&e.thinkingLog.length>0,c=[...e.thinkingLog.map(m=>m.text),e.thinking].filter(m=>m.length>0).join(`
|
|
11
|
+
|
|
12
|
+
`);return Ie((m,$)=>{$.ctrl&&m==="t"&&g(D=>!D)}),(0,ct.jsxs)(b,{flexDirection:"column",children:[(0,ct.jsx)(b,{marginBottom:1,marginLeft:2,children:(0,ct.jsx)(ua,{thinking:c,expanded:w,thinkingDone:T})}),a&&(0,ct.jsx)(b,{marginLeft:2,children:(0,ct.jsx)(pu,{pct:e.progress})}),o&&(0,ct.jsx)(b,{marginLeft:2,marginTop:1,children:(0,ct.jsx)(It,{variant:"error",paddingY:0,children:(0,ct.jsx)(s,{color:l.red,children:o})})}),e.scenarios.length>0&&(0,ct.jsx)(zn,{scenarios:e.scenarios,headline:e.headline,activeSid:null}),(0,ct.jsx)(xu,{state:e,history:r,turnActive:a,busy:u,onClarificationAnswer:n,onClearError:i,onRefine:f,onSlash:v})]})}var Tu=k(xe(),1);var Fe=k(M(),1);function Vg(e,t){return(e.test_cases??[]).some(r=>!t.has(r.id))}function Su({scenarios:e,cursor:t,excluded:r}){let n=e.reduce((o,i)=>o+(i.test_cases??[]).length,0);return(0,Fe.jsxs)(b,{flexDirection:"column",paddingX:1,children:[(0,Fe.jsxs)(s,{children:[(0,Fe.jsx)(s,{color:l.dim,children:"Generate \u203A "}),(0,Fe.jsx)(s,{color:l.generateAccent,children:"Scenarios"}),(0,Fe.jsx)(s,{color:l.dim,children:` ${e.length} scenarios \xB7 ${n} cases`})]}),(0,Fe.jsx)(s,{color:l.muted,children:"\u2500".repeat(60)}),(0,Fe.jsx)(b,{flexDirection:"column",marginY:1,children:e.map((o,i)=>{let a=i===t,u=Vg(o,r);return(0,Fe.jsxs)(s,{children:[(0,Fe.jsx)(s,{color:l.generateAccent,children:a?"\u276F ":" "}),(0,Fe.jsx)(s,{color:l.generateAccent,children:`S${i+1}`}),(0,Fe.jsx)(s,{children:` ${o.title??"(untitled)"}`}),(0,Fe.jsx)(s,{color:l.dim,children:` [${o.priority??"-"}] ${(o.test_cases??[]).length} cases `}),(0,Fe.jsx)(s,{color:u?l.green:l.red,children:u?"\u2713":"\u2717"})]},o.id)})}),(0,Fe.jsx)(s,{color:l.muted,children:"\u2500".repeat(60)}),(0,Fe.jsx)(s,{color:l.dim,children:"\u2191\u2193 move \u21B5 open x remove esc back to chat"})]})}var Pe=k(M(),1);function wu({scenario:e,scenarioIdx:t,cursor:r,excluded:n}){let o=e.test_cases??[],i=o.some(a=>!St(a));return(0,Pe.jsxs)(b,{flexDirection:"column",paddingX:1,children:[(0,Pe.jsxs)(s,{children:[(0,Pe.jsx)(s,{color:l.dim,children:"Generate \u203A Scenarios \u203A "}),(0,Pe.jsx)(s,{color:l.generateAccent,children:`S${t+1} ${e.title??"(untitled)"}`}),(0,Pe.jsx)(s,{color:l.dim,children:` ${o.length} cases`})]}),(0,Pe.jsx)(s,{color:l.muted,children:"\u2500".repeat(60)}),(0,Pe.jsx)(b,{flexDirection:"column",marginY:1,children:o.map((a,u)=>{let f=u===r,v=n.has(a.id);return(0,Pe.jsxs)(s,{children:[(0,Pe.jsx)(s,{color:l.generateAccent,children:f?"\u276F ":" "}),(0,Pe.jsx)(s,{color:l.generateAccent,children:`C${u+1}`}),(0,Pe.jsx)(s,{children:` ${a.title??"(untitled)"} `}),St(a)?(0,Pe.jsx)(s,{color:v?l.red:l.green,children:v?"\u2717 removed":"\u2713 included"}):(0,Pe.jsx)(s,{color:l.dim,children:"\u2713"})]},a.id)})}),(0,Pe.jsx)(s,{color:l.muted,children:"\u2500".repeat(60)}),i&&(0,Pe.jsx)(s,{color:l.dim,children:"gray \u2713 = non-functional \xB7 won't be saved by /save"}),(0,Pe.jsx)(s,{color:l.dim,children:"\u2191\u2193 move \u21B5 view detail x remove case \u2190 / esc back"})]})}var Jn=k(xe(),1);function Yn(e,t){let r=Math.max(1,t),n=[];for(let o of e.split(`
|
|
13
|
+
`)){let i=o.split(/\s+/).filter(f=>f.length>0);if(i.length===0){n.push("");continue}let a="",u=()=>{a&&(n.push(a),a="")};for(let f of i){for(;f.length>r;)u(),n.push(f.slice(0,r)),f=f.slice(r);a===""?a=f:a.length+1+f.length<=r?a+=" "+f:(u(),a=f)}u()}return n}function yu(e,t,r,n){let o=Math.max(20,n),i=[];if(r){for(let u of Yn(r,o))i.push({text:u,tone:"meta"});i.push({text:"",tone:"blank"})}let a=(u,f)=>{let v=f?.trim();if(v){i.push({text:u,tone:"label"});for(let w of Yn(v,o-2))i.push({text:" "+w,tone:"text"});i.push({text:"",tone:"blank"})}};return a("Description",e?.description),a("Preconditions",e?.preconditions),t.length>0&&(i.push({text:"Steps",tone:"label"}),t.forEach((u,f)=>{let v=`${f+1}. `;Yn(u.step||"",Math.max(1,o-v.length)).forEach((T,c)=>{c===0?i.push({text:T,tone:"step",accent:v}):i.push({text:" ".repeat(v.length)+T,tone:"step"})});let g=u.expected?.trim();if(g){let T=" \u2192 ",c=" ";Yn(g,Math.max(1,o-T.length)).forEach((m,$)=>i.push({text:($===0?T:c)+m,tone:"expected"}))}})),i}function Kn(e,t,r){let n=Math.max(0,t-r);return Math.max(0,Math.min(e,n))}var Le=k(M(),1),Mg=7;function Fg(e){return e==="text"||e==="step"?void 0:l.dim}function Ru({scenario:e,scenarioIdx:t,caseIdx:r,excluded:n,getStatus:o,getResult:i}){let a=(e.test_cases??[])[r],u=a?n.has(a.id):!1,f=a?St(a):!0,v=a&&o?o(a.id):void 0,w=v==="done"?(0,Le.jsx)(s,{color:l.generateAccent,children:"ready"}):v==="error"?(0,Le.jsx)(s,{color:l.red,children:"failed \u2192 raw steps"}):v==="pending"?(0,Le.jsx)(s,{color:l.dim,children:"bifurcating\u2026"}):null,g=v==="done"&&a&&i?i(a.id):void 0,T=g?g.sub_objectives.map(fe=>({step:fe.objective,expected:""})):Qs(a?.manual_steps),c=[a?.priority&&`Priority ${a.priority}`,a?.polarity&&`Polarity ${a.polarity}`,a?.tags&&`Tags ${a.tags}`].filter(Boolean).join(" \xB7 "),{stdout:m}=or(),$=Math.max(20,(m?.columns??80)-4),D=Math.max(3,(m?.rows??24)-Mg),V=yu(a,T,c,$),[O,H]=(0,Jn.useState)(0);(0,Jn.useEffect)(()=>{H(0)},[a?.id]);let A=Kn(O,V.length,D);Ie((fe,W)=>{if(W.upArrow){H(ie=>Kn(ie-1,V.length,D));return}if(W.downArrow){H(ie=>Kn(ie+1,V.length,D));return}});let F=V.slice(A,A+D),re=V.length>D?` ${A+1}-${Math.min(A+D,V.length)}/${V.length}`:"";return(0,Le.jsxs)(b,{flexDirection:"column",paddingX:1,children:[(0,Le.jsxs)(s,{children:[(0,Le.jsx)(s,{color:l.dim,children:`Generate \u203A S${t+1} \u203A `}),(0,Le.jsx)(s,{color:l.generateAccent,children:`C${r+1} ${a?.title??"(untitled)"}`}),w?(0,Le.jsx)(s,{children:" "}):null,w]}),f?(0,Le.jsx)(s,{color:u?l.red:l.green,children:u?"\u2717 removed":"\u2713 included"}):(0,Le.jsx)(s,{color:l.dim,children:"\u2713 non-functional \xB7 not saved by /save"}),(0,Le.jsx)(s,{color:l.muted,children:"\u2500".repeat(60)}),(0,Le.jsx)(b,{flexDirection:"column",marginTop:1,children:F.map((fe,W)=>(0,Le.jsxs)(s,{color:Fg(fe.tone),children:[fe.accent?(0,Le.jsx)(s,{color:l.generateAccent,children:fe.accent}):null,fe.text]},A+W))}),(0,Le.jsx)(s,{color:l.muted,children:"\u2500".repeat(60)}),(0,Le.jsx)(s,{color:l.dim,children:`\u2191\u2193 scroll \u2190 / esc back x remove${re}`})]})}var Qn=k(M(),1);function Eu({scenarios:e,target:t,onClose:r,excluded:n,onToggleCase:o,onToggleScenario:i,getStatus:a,getResult:u}){let f=e.map(c=>(c.test_cases??[]).length),[v,w]=(0,Tu.useReducer)((c,m)=>Ii(c,m,f),qn(t)),g=()=>{v.level==="scenarios"?r():w({type:"back"})};Ie((c,m)=>{if(m.escape||m.leftArrow){g();return}if(v.level!=="detail"){if(m.return){w({type:"enter"});return}if(m.upArrow){w({type:"move",delta:-1});return}if(m.downArrow){w({type:"move",delta:1});return}}if(c==="x"){if(v.level==="scenarios"){let $=(e[v.cursor]?.test_cases??[]).map(D=>D.id);$.length>0&&i($)}else{let $=v.level==="cases"?v.cursor:v.caseIdx,D=(e[v.scenarioIdx]?.test_cases??[])[$];D&&o(D.id)}return}});let T=e[v.scenarioIdx];if(v.level==="scenarios"||T===void 0){let c=v.level==="scenarios"?v.cursor:0;return(0,Qn.jsx)(Su,{scenarios:e,cursor:c,excluded:n})}return v.level==="cases"?(0,Qn.jsx)(wu,{scenario:T,scenarioIdx:v.scenarioIdx,cursor:v.cursor,excluded:n}):(0,Qn.jsx)(Ru,{scenario:T,scenarioIdx:v.scenarioIdx,caseIdx:v.caseIdx,excluded:n,getStatus:a,getResult:u})}var Zn=k(M(),1);function Cu({tcg:e,gm:t,history:r,tuiConfig:n,browse:o}){return o?(0,Zn.jsx)(Eu,{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,Zn.jsx)(fu,{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,Zn.jsx)(bu,{state:e.state,requestId:e.requestId,history:r,turnActive:e.turnActive,busy:t.submitting,error:t.tcgError??e.state.error,onClearError:()=>t.onClearError?.(),onClarificationAnswer:i=>t.onClarificationAnswer?.(i),onRefine:t.onRefine,onSlash:t.onSlash})}var Iu=k(xe(),1);var Tt=k(M(),1);function Ug({message:e,confirmLabel:t,choice:r}){return(0,Tt.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:l.dim,paddingX:1,children:[(0,Tt.jsx)(s,{bold:!0,children:e}),(0,Tt.jsxs)(b,{marginTop:1,children:[(0,Tt.jsx)(s,{color:r==="yes"?l.red:l.dim,children:`\u276F ${t}`}),(0,Tt.jsx)(s,{children:" "}),(0,Tt.jsx)(s,{color:r==="no"?l.green:l.dim,children:"\u276F No"})]}),(0,Tt.jsx)(s,{color:l.dim,children:"\u2190 \u2192 choose \xB7 \u21B5 confirm \xB7 esc cancel"})]})}function ku({message:e,onConfirm:t,onCancel:r,confirmLabel:n="Yes, end"}){let[o,i]=(0,Iu.useState)("no");return Ie((a,u)=>{(u.leftArrow||u.rightArrow)&&i(f=>f==="yes"?"no":"yes"),u.return&&(o==="yes"?t:r)(),u.escape&&r()}),(0,Tt.jsx)(Ug,{message:e,confirmLabel:n,choice:o})}var qg=null;function Au(e){qg=e}import{join as Mt,resolve as zg}from"path";var eo=k(M(),1);function _u({status:e,steps:t,duration:r,creditsConsumed:n,reason:o}){let i=e==="passed",a=i?l.green:l.red,u=i?"\u2713":"\u2717",f=i?"Passed":"Failed",v=r<60?`${r.toFixed(1)}s`:`${Math.floor(r/60)}m ${Math.round(r%60)}s`,w=typeof n=="number"&&n>0?` \xB7 ${n.toFixed(4)} credits`:"",g=!i&&o?` \xB7 ${o}`:"";return(0,eo.jsxs)(b,{children:[(0,eo.jsxs)(s,{bold:!0,color:a,children:[u," ",f]}),(0,eo.jsxs)(s,{color:l.dim,children:[" ","\xB7 ",t," steps \xB7 ",v,w,g]})]})}var Lu=k(M(),1);function Pu(){return(0,Lu.jsx)(s,{color:l.dim,children:"Continue below \xB7 /new fresh session \xB7 /summary view details \xB7 Ctrl+C exit"})}var to=k(xe(),1);import{readFileSync as Xg}from"fs";var rt=k(xe(),1);function Hg(e){let t="message",r=[];for(let o of e.split(`
|
|
14
|
+
`))o.startsWith("event:")?t=o.slice(6).trim():o.startsWith("data:")&&r.push(o.slice(5).replace(/^ /,""));let n=r.join(`
|
|
15
|
+
`);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,`
|
|
16
|
+
`)}:null}async function*Bu(e){let t;try{t=await fetch(e.url,{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream",Authorization:e.authHeader,"x-session-id":e.sessionId},body:JSON.stringify(e.body),signal:e.signal})}catch(i){e.signal.aborted||(yield{type:"error",message:String(i)});return}if(!t.ok||!t.body){yield{type:"error",message:`describe HTTP ${t.status}`};return}let r=t.body.getReader(),n=new TextDecoder,o="";try{for(;;){if(e.signal.aborted)return;let{done:i,value:a}=await r.read();if(i)break;o+=n.decode(a,{stream:!0});let u;for(;(u=o.indexOf(`
|
|
17
|
+
|
|
18
|
+
`))!==-1;){let f=Hg(o.slice(0,u));if(o=o.slice(u+2),f&&(yield f,f.type==="done"))return}}}finally{await r.cancel().catch(()=>{})}}var Gg=50,Wg=3;function $u(){let[e,t]=(0,rt.useState)(""),r=(0,rt.useRef)(""),[n,o]=(0,rt.useState)(!1),[i,a]=(0,rt.useState)(!1),u=(0,rt.useRef)(null);(0,rt.useEffect)(()=>{if(!i)return;let g=setInterval(()=>{t(T=>{let c=r.current;return T.length>=c.length?T:c.slice(0,Math.min(c.length,T.length+Wg))})},Gg);return()=>clearInterval(g)},[i]);let f=(0,rt.useCallback)(g=>{u.current?.abort();let T=new AbortController;u.current=T,a(!0),r.current="",t(""),o(!0),(async()=>{try{for await(let c of Bu({...g,signal:T.signal})){if(T.signal.aborted)return;if(c.type==="delta")r.current+=c.text;else if(c.type==="usage")g.onUsage?.(c.creditsConsumed);else if(c.type==="done"||c.type==="error"){o(!1);return}}o(!1)}catch{o(!1)}})()},[]),v=(0,rt.useCallback)(()=>{u.current?.abort(),o(!1),a(!1),r.current="",t("")},[]);(0,rt.useEffect)(()=>()=>u.current?.abort(),[]);let w=n||e.length<r.current.length;return{text:e,active:n,visible:i,revealing:w,start:f,stop:v}}function Du({resolve:e,hostIsTTY:t}){let r=$u(),n=(0,to.useRef)(0),o=(0,to.useCallback)(i=>{if(!t())return;let a=e();if(!a)return;let u;try{u=Xg(i.screenshot_path).toString("base64")}catch{return}r.start({url:`${a.controllerBaseUrl}/v16-alpha/stream`,authHeader:a.authHeader,sessionId:a.sessionId,onUsage:f=>{n.current+=f},body:{node:"visualizer",sub_node:"describe",session_id:a.sessionId,context_json:{objective:i.objective,query:i.recent_actions.map(f=>`${f.step}: ${f.action_type} ${f.instruction}`).join(`
|
|
19
|
+
`),screenshot_b64:u}}})},[e,t,r]);return{describe:r,onDescribe:o,creditsRef:n}}var ro=e=>({kind:"login",env:e}),_i=e=>({kind:"switch",env:e}),Ou=(e,t)=>e?{kind:"switch",env:t}:{kind:"logout"};async function Nu(e){await new Pr(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 y=k(M(),1);function dR({localMode:e=!1,codeExport:t,codeLanguage:r,skipCodeValidation:n,updatePromise:o,migrationResult:i,sessionName:a,initialChatMode:u,initialObjective:f,initialGenerateLimits:v}={}){Gi();let w=(0,R.useRef)(new pn),[g,T]=(0,R.useState)(0),c=w.current,[m]=(0,R.useState)(()=>new cr),$=(0,R.useRef)(0),D=(0,R.useCallback)(()=>`msg-${++$.current}`,[]),[V,O]=(0,R.useState)(!1),[H,A]=(0,R.useState)(null),[F,ee]=(0,R.useState)(!1),[re,fe]=(0,R.useState)(0),[W,ie]=(0,R.useState)(!1),[ue,Ce]=(0,R.useState)(null),[Be,et]=(0,R.useState)(null),Ft=(0,R.useRef)(null),[tt,gt]=(0,R.useState)(null),[vr,br]=(0,R.useState)(gn()),[Ge,Ke]=(0,R.useState)(null),[$e,Wr]=(0,R.useState)([]),[Jt,Ut]=(0,R.useState)(!1),[Sr,Xr]=(0,R.useState)(!1),[wr,zr]=(0,R.useState)(null),[qt,Qt]=(0,R.useState)(null),[Ht,yr]=(0,R.useState)(null),[Yr,no]=(0,R.useState)(null),X=(0,R.useRef)(null),Q=(0,R.useRef)(null),Y=(0,R.useRef)(0),G=(0,R.useRef)(null),ce=(0,R.useRef)(!1),ye=(0,R.useRef)(null),lt=(0,R.useRef)(Rs()),We=(0,R.useRef)(null),ae=(0,R.useRef)(!1),Je=(0,R.useRef)(""),Zt=(0,R.useRef)(null),Pt=(0,R.useRef)(null),Rr=(0,R.useRef)({}),Gt=(0,R.useRef)(null),{append:Re}=Ki(),le=(0,R.useCallback)(p=>Re((0,y.jsx)(b,{paddingX:1,children:p})),[Re]),[er,ht]=(0,R.useState)("booting"),[ju,Vu]=(0,R.useState)([]),[Mu,oo]=(0,R.useState)(!1),[Pi,Fu]=(0,R.useState)(!1),[Kr,Uu]=(0,R.useState)("chat"),[xt,Tr]=(0,R.useState)(null),[Jr,Li]=(0,R.useState)(null),[Er,Bi]=(0,R.useState)(!1),[Cr,Qr]=(0,R.useState)(!1),$i=(0,R.useRef)(()=>{}),qu=(0,R.useCallback)((p,x)=>$i.current(p,x),[]),ne=Ll({log:qu});Zl(ne.state,ne.turnActive,le);let io=(0,R.useRef)(!1),Lt=(0,R.useCallback)(()=>{io.current||ne.state.scenarios.length!==0&&(io.current=!0,le((0,y.jsx)(zn,{scenarios:ne.state.scenarios,activeSid:null})))},[ne.state.scenarios,le]);(0,R.useEffect)(()=>{ne.isSessionClosed&&Lt()},[ne.isSessionClosed,Lt]);let[Zr,Ir]=(0,R.useState)(null),[me,kr]=(0,R.useState)({headless:!1,maxSteps:50,timeout:0,cdpEndpoint:"",wsEndpoint:"",useCft:!1}),Hu=ko(),Gu=ko(zi),S=bl(),en=Sl(),nt=(0,R.useMemo)(()=>({auth:{initResolver:p=>S.initResolver(p,(x,d,h,E)=>w.current.log(x,d,h,E)),getResolver:()=>S.getResolver(),getBasicAuth:()=>S.getBasicAuth(),getToken:()=>S.getToken()},getSession:()=>w.current,log:(p,x,d,h)=>w.current.log(p,x,d,h),state:{getTmsCredsCache:()=>Ge,setTmsCredsCache:Ke,identityServicesRef:Q,screenshotQueueRef:X},exit:{registerCleanup:vt,setExitRemoteLogger:is},options:{skipScreenshotQueue:e}}),[S.initResolver,S.getResolver,S.getBasicAuth,S.getToken,Ge,e]),Wu=(0,R.useCallback)((p,x,d,h)=>{let E=X.current;if(!E)return;if(G.current&&h){lt.current.track(Ts(G.current.packTestDir,h,E,(U,q,oe,se)=>c.log(U,q,oe,se)));return}let B=Y.current+x;Es(c.sessionDir,B,p,E,(U,q,oe,se)=>c.log(U,q,oe,se),d)},[c]),Xu=(0,R.useCallback)((p,x,d)=>{c.logStep(p,x,d)},[c]),zu=(0,R.useCallback)(p=>Gt.current?.setStepText(p),[]),Yu=(0,R.useCallback)(()=>Gt.current?.setStepComplete(),[]),{describe:Ar,onDescribe:Ku,creditsRef:so}=Du({hostIsTTY:()=>!!process.stdout.isTTY,resolve:()=>{let p=S.getResolvedBasicAuth();if(!p)return null;let x=De(S.creds.getDefaultEnv());return{authHeader:es(p.username,p.access_key),sessionId:c.sessionId,controllerBaseUrl:x.controllerBaseUrl}}}),_=ps(Wu,Xu,zu,Yu,Ku);(0,R.useEffect)(()=>{_.isRunning||Ar.stop()},[_.isRunning,Ar.stop]);let[C,ge]=(0,R.useState)(()=>m.load()),[,Ju]=(0,R.useState)(0),Qe=(0,R.useCallback)(()=>Ju(p=>p+1),[]),[L,Te]=(0,R.useState)(null),tr=S.creds.getActiveProfile(),de=S.creds.getDefaultEnv(),ut=(0,R.useCallback)((p,x)=>{let d=p?S.creds.loadProfileConfig(p,x):null;m.save({project_id:d?.project_id??null,project_name:d?.project_name??null,folder_id:d?.folder_id??null,folder_name:d?.folder_name??null}),ge(m.load())},[S.creds,m]),ao=(0,R.useCallback)(async(p,x)=>{let d=S.getResolver();if(!d)return null;let h=d.cached??await d.resolve();if(!h)return null;let E=De(x),B=new Pr(E.tmsBaseUrl,h.username,h.access_key);try{let q=(await B.listProjects()).find(se=>se.name==="KaneAI Generated");if(q)return{id:q.project_id,name:q.name};let oe=await B.createProject("KaneAI Generated");return{id:oe.id,name:oe.name}}catch{return null}},[S]),co=(0,R.useCallback)(async(p,x)=>{let d=S.getResolver();if(!d)return null;let h=d.cached??await d.resolve();if(!h)return null;let E=De(p),B=new Pr(E.tmsBaseUrl,h.username,h.access_key);try{let q=(await B.listFolders(x)).find(se=>se.name==="Untitled");if(q)return{id:q.id,name:q.name};let oe=await B.createFolder(x,"Untitled");return{id:oe.id,name:oe.name}}catch{return null}},[S]);(0,R.useEffect)(()=>{F||(c.start({model:C.model,environment:de,profile:tr}),a&&c.setSessionName(a),ee(!0))},[c,F,C.model,de,tr,a]);let Di=(0,R.useRef)(!1);(0,R.useEffect)(()=>{if(!F||Di.current)return;Di.current=!0;let p=a?[{label:"session",value:a},{label:"test",value:Io(Mt(process.cwd(),".testmuai","tests",`${a}_test.md`))},{label:"output",value:Io(Mt(process.cwd(),".testmuai","tests",`output-${a}`))}]:[{label:"session",value:"ephemeral"},{label:"note",value:"use /name <name> to persist this session"}];le((0,y.jsx)(_o,{title:"Recording",titleColor:"#ff9500",rows:p}))},[F,a,le]);let Oi=(0,R.useRef)(!1);(0,R.useEffect)(()=>{if(!V||Oi.current||!F)return;Oi.current=!0;let p=nt.state.getTmsCredsCache();if(!p){c.log("warn","BOOT_RESOLVE_FAILED","Boot done but tmsCredsCache empty \u2014 non-controller APIs may fail");return}bt({kind:"boot",tmsCreds:p,env:de},nt).then(x=>{x&&(p.org_id!==void 0&&c.setOrgId(String(p.org_id)),c.setPlan(p.plan??null),c.setUserIdentity(p.username??null,p.email??null),c.log("info","BOOT_RESOLVE_OK","Boot identity attached",{username:p.username,org_id:p.org_id,plan:p.plan??null}))}).catch(x=>{c.log("error","BOOT_RESOLVE_ERROR","Boot identity attach error",{error:x instanceof Error?x.message:String(x)})})},[V,F,nt,de,c]);let Wt=(0,R.useCallback)(async()=>{if(Ge)return c.log("info","TMS_CREDS_CACHED","Using cached TMS credentials",{username:Ge.username,org_id:Ge.org_id}),Ge;let p=await S.resolveBasicAuth();return p?(c.log("info","TMS_CREDS_OK","TMS credentials resolved",{username:p.username,org_id:p.org_id,user_id:p.user_id}),Ke(p)):c.log("warn","TMS_CREDS_FAILED","No TMS credentials resolved"),p},[S,Ge,c]),tn=(0,R.useCallback)(p=>{le((0,y.jsx)(_o,{title:"\u24D8 Auto-configured",titleColor:l.orange,rows:[{label:"project",value:`${p.projectName} (${p.projectId})`},{label:"folder",value:`${p.folderName} (${p.folderId})`},{label:"change with",value:(0,y.jsxs)(b,{flexDirection:"column",children:[(0,y.jsx)(s,{color:l.dim,children:"kane-cli config project <id>"}),(0,y.jsx)(s,{color:l.dim,children:"kane-cli config folder <id>"})]})}]}))},[le]),rn=(0,R.useCallback)(async()=>{let p=await Wt();if(!p)return c.log("warn","PROJECT_FAILED","No TMS credentials for project/folder gate"),null;let x=S.creds.getActiveProfile()??"default",d=S.creds.getDefaultEnv(),h=await ss({creds:S.creds,config:m,profile:x,env:d,tmsCreds:{username:p.username,access_key:p.access_key},isLocal:e,log:(E,B,U,q)=>c.log(E,B,U,q),onAnnounce:tn});return h.status==="ok"?{projectId:h.projectId,folderId:h.folderId}:null},[Wt,m,c,S.creds,e,tn]),Se=(0,R.useCallback)(p=>{let x=D(),d={...p,id:x};le((0,y.jsx)(pl,{entry:d}))},[D,le]),P=(0,R.useCallback)((p,x,d,h,E)=>{le((0,y.jsx)(El,{status:p,command:x,message:d,details:h,accentColor:E})),x==="/save"&&p==="ok"&&le((0,y.jsx)(b,{marginLeft:2,children:(0,y.jsxs)(s,{color:l.dim,children:["\u2192 Run ",(0,y.jsx)(s,{color:l.generateAccent,children:"/testmd"})," to list your saved tests."]})}))},[le]),Ni=(0,R.useRef)(()=>{}),Bt=Kl(ne.state.scenarios.map(p=>(p.test_cases??[]).length)),Qu=(0,R.useCallback)(async()=>{let p=await rn();return ge(m.load()),p},[rn,m]),dt=Yl({tcg:ne,initialChatMode:u,tuiConfig:C,auth:S,session:c,runner:_,appendStatic:le,handleInput:p=>Ni.current(p),freezeTcgArtifact:Lt,rearmArtifactFreeze:()=>{io.current=!1},openSwitchConfirm:p=>Ir({reason:"switch",to:p}),emitFeedback:P,excluded:Bt.excluded,openBrowse:Bt.open,initialGenerateLimits:v,ensureProjectAndFolder:Qu,config:m});$i.current=dt.tcgLog;let{chatMode:ve,tcgError:Kg,tcgValidationError:Jg,composeIdleHint:Qg,inputClearSeq:Zu,handleGenerateSubmit:ed,flashComposeHint:nn,setTcgError:Zg}=dt,td=C.hints_enabled!==!1&&process.env.KANEAI_HINTS_DISABLED!=="1"&&!!process.stdout.isTTY&&!!process.stdin.isTTY&&process.env.KANE_SCREEN_READER!=="1",ji=(0,R.useRef)(!1);ve==="generate"&&(ji.current=!0);let{footerHint:rd}=uu({enabled:td,ready:er==="ready",env:de,config:C,tokenValid:S.tokenValid,chatMode:ve,sessionUsedGenerate:ji.current,log:(p,x,d,h)=>w.current.log(p,x,d,h)}),lo=(0,R.useCallback)(async(p,x)=>{let d=ae.current?null:ks({flag:x,configDefault:C.default_url}),h=Ms({objective:p,globalDir:Mt(Xe,"variables"),localDir:Mt(process.cwd(),".testmuai","variables")}),E=c.nextRunIndex();Y.current=E,Je.current=h.auteurObjective,so.current=0,c.logRunStart(E,h.auteurObjective,d??""),c.setFirstRun(h.auteurObjective,d??"");let B=S.getResolvedBasicAuth(),U=B,q=null;if(!U&&(q=await S.getToken(),!q)){Se({type:"error",text:"Not authenticated. Run /login first."});return}let oe={basicAuth:B??null,token:q,resolver:S.getResolver(),resolvedCreds:null};Zt.current=oe;let se=S.creds.getActiveProfile()??"default",be=S.creds.getDefaultEnv();os(S.creds,m,se,be,(we,Ze,Ct,mt)=>c.log(we,Ze,Ct,mt));let yo=m.load();if(ge(yo),E===0&&!e){c.log("info","ATM_CREATE_START","Creating test via ATM endpoint",{run_index:0});let we=await rn(),Ze=m.load();ge(Ze);let Ct=De(de),mt=U?{username:U.username,access_key:U.access_key}:await Wt();if(mt){let dn=await Hs({tmsBaseUrl:Ct.tmsBaseUrl,auth:{username:mt.username,access_key:mt.access_key},objective:h.auteurObjective,url:d??"",projectId:we?.projectId??Ze.project_id??"",folderId:we?.folderId??Ze.folder_id??"",hasCustomProfile:!!C.chrome_profile_path,log:(zt,To,cd,ld)=>c.log(zt,To,cd,ld)});dn&&(c.setTestId(dn),we?.projectId&&c.setProjectId(we.projectId))}}let ft=null;if(me.useCft)Se({type:"info",text:"CfT mode: Playwright will manage browser"});else if(me.wsEndpoint)Se({type:"info",text:`WS endpoint: ${me.wsEndpoint.slice(0,60)}...`});else if(me.cdpEndpoint)Se({type:"info",text:`CDP endpoint: ${me.cdpEndpoint}`});else{Se({type:"info",text:"Starting Chrome..."});try{ft=await en.ensureChrome(d??void 0)}catch(Ze){Se({type:"error",text:ds(Ze)});return}c.logChromeLaunch(ft.port,ft.cdpEndpoint);let we=ms({headless:me.headless,cdpEndpoint:ft.cdpEndpoint,chromePid:ft.process.pid});we&&(Gt.current=we,vt("marker-overlay",()=>we.kill()))}c.setAuteurVariables(h.auteur),Pt.current=h;let Ro=U&&!e?await Fs({variables:h,auth:U,orgId:String((await Wt())?.org_id??""),env:de,localMode:e,log:(we,Ze,Ct,mt)=>c.log(we,Ze,Ct,mt)}):{};Rr.current=Ro;let Xt=jo(Mt(Xe,"global-memory.md")),Et=jo(Mt(process.cwd(),".testmuai","context.md")),rr=ft?{cdpEndpoint:ft.cdpEndpoint,instance:ft,tempDir:null}:me.wsEndpoint?{wsEndpoint:me.wsEndpoint,instance:null,tempDir:null}:me.cdpEndpoint?{cdpEndpoint:me.cdpEndpoint,instance:null,tempDir:null}:{instance:null,tempDir:null};if(E===0){let we={mode:C.mode,max_steps:me.maxSteps,timeout:me.timeout>0?me.timeout:void 0,target:ft?"chrome":me.cdpEndpoint?"cdp":me.wsEndpoint?"ws":void 0,chrome_profile:C.chrome_profile_path||void 0,cdp_endpoint:me.cdpEndpoint||void 0,ws_endpoint:me.wsEndpoint||void 0,headless:me.headless,global_context:Xt??void 0,local_context:Et??void 0,variables:Object.keys(h.auteur).length>0?h.auteur:void 0};c.setResolvedGlobal(we)}ce.current||(ce.current=!0,G.current=await xs({objectiveOrName:c.sessionName??p,sessionId:c.sessionId,title:c.sessionName??p,producerVersion:ot,pid:process.pid,surfaces:d?[d]:void 0,packRootDir:Mt(c.sessionDir,"evidence")})),ye.current||(ye.current=hs(rr.cdpEndpoint),ye.current());let nr=Vs(h.auteur,h.auteurObjective),_r=js({objective:h.auteurObjective,url:d??void 0,requireStartUrl:!ae.current&&d===null,model:C.model,chrome:rr,auth:oe,sessionId:c.sessionId,runIndex:E,windowSize:C.window_size,maxSteps:me.maxSteps,headless:me.headless,networkWs:C.network_ws,networkSse:C.network_sse,bugDetection:C.bug_detection,variables:Object.keys(nr).length>0?nr:void 0,globalContext:Xt??void 0,localContext:Et??void 0,sessionContext:c.getContext(),evidence:vs(G.current)});d&&A(d),Ce(null),We.current=null,_.startRun(_r,{environment:de,mode:C.mode,assertionMode:C.assertion_mode,log:(we,Ze,Ct,mt)=>c.log(we,Ze,Ct,mt)}),fe(we=>we+1)},[S,en,m,C,c,de,_,Se,me,rn,Wt]),nd=(0,R.useCallback)(async p=>{let x=zg(p),d=Bs(x),h=new pn;for(let be of d.warnings)h.log("warn","RESOLVER_WARNING",be);let E=S.getResolvedBasicAuth(),B=null;E||(B=await S.getToken());let U={basicAuth:E??null,token:B,resolver:S.getResolver(),resolvedCreds:null},q=de,oe=De(q),se=S.creds.getActiveProfile()??"default";return{path:x,cwd:process.cwd(),opts:{},isAgent:!1,disableAskUser:!0,resolved:d,resolvedAuth:U,cliOverrides:{},environment:q,envConfig:oe,profile:se,model:"v16-alpha",creds:S.creds,configStore:m,session:h,skipGlobalRemoteLogger:!0,onAnnounce:tn}},[S,m,de,tn]),pe=Pl({buildInput:nd,remoteLogger:null}),uo=(0,R.useRef)(null);(0,R.useEffect)(()=>{if(_.bifurcationInfo&&_.bifurcationInfo!==uo.current){uo.current=_.bifurcationInfo;let{flows:p,isSingleFlow:x}=_.bifurcationInfo;x&&p.length===1&&p[0]?c.log("info","OBJECTIVE_REWRITTEN","Objective rewritten",{objective:p[0]}):!x&&p.length>1&&c.log("info","BIFURCATION","Objective bifurcated into flows",{flow_count:p.length})}},[_.bifurcationInfo,c,Se]);let fo=R.default.useRef(null),mo=R.default.useRef(0),po=R.default.useRef(0);(0,R.useEffect)(()=>{if(_.lastRunEnd&&_.lastRunEnd!==fo.current){fo.current=_.lastRunEnd,ae.current=!0;let{status:p,duration:x,summary:d,reason:h,context:E}=_.lastRunEnd,{passed:B,failed:U,total:q}=gs(_.steps);mo.current+=q,po.current+=x??0;let oe=_.lastRunEnd?.credits_consumed,se=oe!=null||so.current>0?(oe??0)+so.current:void 0;Ce({status:p,duration:x??0,summary:d??"",stepsPassed:B,stepsFailed:U,stepsTotal:q,reason:h,finalState:_.lastRunEnd?.final_state,creditsConsumed:se}),c.logRunEnd(Y.current,p,x,d,_.lastRunEnd?.result_code);let be=_.bifurcationInfo,yo=be&&!be.isSingleFlow?be.flows:null,ft=rs(_.lastRunEnd,Y.current,yo),Ro=ns(_.lastRunEnd,Je.current,Y.current,ft);c.addRunResult(Ro,_.lastRunEnd?.total_runs),Bo(G.current,_.getEvidenceState(),_.lastRunEnd);let Xt=_.lastRunEnd?.per_flow_metadata;if(be&&!be.isSingleFlow&&Xt&&Xt.length>1)for(let Et=0;Et<Xt.length;Et++){let rr=Xt[Et],nr=_.steps[Et],_r=nr?.children??[],we=_r.filter(zt=>zt.status==="passed").length,Ze=_r.filter(zt=>zt.status==="failed").length,Ct=_r.reduce((zt,To)=>zt+(To.duration??0),0),mt=nr?.status==="failed"?"failed":"passed",dn=be.flows[Et]??nr?.objective??Je.current;c.addFlow({runIndex:Y.current,flowId:be.flows[Et],objective:dn,status:mt,summary:rr.summary??"",duration:Ct,steps:we+Ze,stepsPassed:we,stepsFailed:Ze,reason:rr.error_message??void 0,creditsConsumed:rr.credits_consumed??void 0})}else c.addFlow({runIndex:Y.current,objective:Je.current,status:p,summary:d??"",duration:x??0,steps:q,stepsPassed:B,stepsFailed:U,reason:h,creditsConsumed:_.lastRunEnd?.credits_consumed})}},[_.lastRunEnd,c,Se]);let go=(0,R.useRef)(null);(0,R.useEffect)(()=>{_.askingUser&&(go.current=_.askingUser)},[_.askingUser]);let ho=(0,R.useRef)(null);(0,R.useEffect)(()=>{if(ue&&!_.isRunning&&_.lastRunEnd){if(ho.current===_.lastRunEnd)return;ho.current=_.lastRunEnd,le((0,y.jsxs)(b,{flexDirection:"column",children:[(0,y.jsx)(_u,{status:ue.status,steps:ue.stepsTotal,duration:ue.duration,creditsConsumed:ue.creditsConsumed,reason:ue.reason}),(0,y.jsx)(Pu,{})]})),Ce(null)}},[ue,_.isRunning,_.lastRunEnd,le]);let Vi=(0,R.useRef)(null);(0,R.useEffect)(()=>{if(pe.runSummary&&!pe.running){if(Vi.current===pe.runSummary)return;Vi.current=pe.runSummary,(pe.summary||pe.links)&&le((0,y.jsxs)(b,{flexDirection:"column",children:[pe.summary&&(0,y.jsx)(Os,{data:pe.summary}),pe.links&&(0,y.jsx)(hn,{...pe.links,autoExit:!1})]}))}},[pe.runSummary,pe.running,pe.summary,pe.links,le]),(0,R.useEffect)(()=>{Gt.current?.setRunActive(_.isRunning)},[_.isRunning]),(0,R.useEffect)(()=>{if(_.runError&&!_.isRunning){let p=_.runError.trim();c.log("error","RUNNER_ERROR","Runner error occurred",{error:p}),c.escalateRun(c.nextRunIndex()-1),!_.lastRunEnd&&We.current!==_.runError&&(We.current=_.runError,Bo(G.current,_.getEvidenceState(),null));let d=p.split(`
|
|
20
|
+
`).slice(-8).join(`
|
|
21
|
+
`);Se({type:"error",text:`Runner error:
|
|
22
|
+
${d}`})}},[_.runError,_.isRunning,_.lastRunEnd,Se,c]);let on=(0,R.useCallback)(async(p={})=>{let x=G.current;return x?(c.flushRecorder(),await bs(x,{saved:!!c.sessionName,local:e,recordedTestPath:c.recorder?.lastWrittenPath??null,externalIdInput:{session_id:c.sessionId,commit_id:c.sessionId,test_id:c.testId??void 0,testcase_id:p.testcaseId??c.testcaseId??void 0,project_id:C.project_id??void 0,folder_id:C.folder_id??void 0,org_id:c.orgId??void 0,session_name:c.sessionName??void 0,user_name:c.userName??void 0,user_email:c.userEmail??void 0,sharable_link:Ns(De(de).testManagerUiUrl,C.project_id,p.testcaseId??c.testcaseId,p.shareId)},cdpBrowserCapture:ye.current??void 0,model:C.model,tuiLogPath:Mt(c.sessionDir,"tui.log"),log:(d,h,E,B)=>c.log(d,h,E,B)})):null},[c,C]),sn=(0,R.useCallback)(async p=>{let x=G.current?.packDir??null,d=await on({testcaseId:p?.testcaseId,shareId:p?.shareId});return G.current=null,ce.current=!1,ye.current=null,d?.sealed?x:null},[on]),an=(0,R.useCallback)(async()=>{c.log("info","EXIT_UPLOAD_START","Starting exit upload pipeline"),br(gn()),gt({status:"uploading"});let p=S.getResolvedBasicAuth(),x=null;if(!p&&(x=await S.getToken(),!x))return c.log("warn","EXIT_UPLOAD_ABORTED","Exit upload aborted \u2014 no auth available"),null;let d=Ge??await Wt();if(!d)return c.log("warn","EXIT_UPLOAD_ABORTED","Exit upload aborted \u2014 no TMS credentials"),c.setUploadStatus("failed","Could not get TMS credentials"),null;c.log("info","EXIT_UPLOAD_CONFIG","Exit upload configuration",{test_id:c.testId,commit_id:c.sessionId,project_id:C.project_id,session_dir:c.sessionDir,run_dirs:c.getRunDirs()});let h={basicAuth:p??null,token:x,resolver:S.getResolver(),resolvedCreds:d};X.current&&(c.log("info","SCREENSHOT_UPLOAD_DRAIN","Draining screenshot queue before pipeline"),await lt.current.settle(),await X.current.drain(),c.log("info","SCREENSHOT_UPLOAD_DRAINED","Screenshot queue drained"));let E=Us({session:c,env:de,auth:h,variables:Pt.current??{raw:{},auteur:{},auteurObjective:"",secretEntries:[],nonSecretEntries:[]},variableIds:Rr.current,projectId:C.project_id,folderId:C.folder_id,totalSteps:mo.current,totalDuration:po.current,screenshotExtMap:X.current?.getExtMap(),codeExport:qs({codeExport:t,codeLanguage:r,skipCodeValidation:n},C.code_export),onProgress:(q,oe,se)=>{c.log("info","EXIT_PROGRESS","Upload progress",{step:q,status:oe,detail:se}),br(be=>Ds(be,q,oe,se))},log:(q,oe,se,be)=>c.log(q,oe,se,be),shouldUploadArtifacts:!0,shouldReplaceLocalOutput:!1,shouldCommit:!1,isFirstRun:!0,evidence:G.current?{executionId:G.current.executionId,packTestDir:G.current.packTestDir,sealedPackPath:G.current.packDir,sealFn:on}:void 0}),U=await new Gs(E).execute();if(U.success){c.log("info","EXIT_UPLOAD_OK","Exit upload succeeded",{test_id:U.testId,testcase_id:U.testcaseId??null,share_id:U.shareId??null}),c.setUploadStatus("uploaded"),U.testId&&c.setTestId(U.testId),U.testcaseId&&c.setTestcaseId(U.testcaseId);let q=De(de),oe=C.project_id,se=U.testcaseId&&U.shareId&&oe?Oo(q.testManagerUiUrl,oe,U.testcaseId,U.shareId):void 0,be=U.testcaseId&&oe?No(q.testManagerUiUrl,oe,U.testcaseId):void 0;gt({status:"success",testUrl:se,testCaseLink:be,codeExportDir:U.codeExportDir}),Au({shareableLink:se,testCaseLink:be,codeExportDir:U.codeExportDir})}else c.log("error","EXIT_UPLOAD_FAILED","Exit upload failed",{error:U.error}),c.setUploadStatus("failed",U.error),gt({status:"failed",error:U.error});return U},[S,de,c,C,Ge,Wt,on]),cn=(0,R.useCallback)(async()=>{c.log("info","SESSION_RESET_START","Starting session reset via /new"),Ut(!0);let p=c.getFlows();p.length>0&&le((0,y.jsx)(Ri,{flows:p}));let x=null;if(!e)try{x=await an()??null}catch(B){c.log("error","SESSION_RESET_UPLOAD_FAILED","Upload failed during /new",{error:String(B)}),Se({type:"error",text:"Upload failed \u2014 session data saved locally."})}let d=null;try{let{persistRecordedSession:B}=await import("./persist-recorded-session-WFU4M4SQ.js");d=await B(c,{testcaseId:c.testcaseId??void 0,projectId:C.project_id??void 0,folderId:C.folder_id??void 0,codeExportDir:x?.codeExportDir,packTestDir:G.current?.packTestDir})}catch(B){c.log("error","SESSION_RESET_PERSIST_FAILED","Persist failed during /new",{error:String(B)})}if(x?.success&&x.testcaseId||d){let B=De(de),U=C.project_id,q=x?.testcaseId;le((0,y.jsx)(hn,{recordedTestPath:d?.recordedTestPath,outputDir:d?.outputDir,shareableLink:q&&x?.shareId&&U?Oo(B.testManagerUiUrl,U,q,x.shareId):void 0,testCaseLink:q&&U?No(B.testManagerUiUrl,U,q):void 0,codeExportDir:x?.codeExportDir,autoExit:!1}))}let h=await sn(x);h&&Se({type:"info",text:ws(h)}),c.testId&&Wr(B=>[...B,{testId:c.testId,runCount:re}]),en.killChrome(),await c.finish("complete");let E=new pn;E.start({model:C.model,environment:de,profile:tr??null}),w.current=E,T(B=>B+1),c.log("info","SESSION_RESET_COMPLETE","Session reset complete",{new_session_id:E.sessionId}),await bt({kind:"resessionize",env:de},nt),fe(0),mo.current=0,po.current=0,Y.current=0,Je.current="",Pt.current=null,Rr.current={},un.current=0,vo.current=0,go.current=null,ho.current=null,fo.current=null,We.current=null,ae.current=!1,uo.current=null,Ce(null),A(null),gt(null),br(gn()),Ut(!1),le((0,y.jsxs)(b,{flexDirection:"column",marginY:1,children:[(0,y.jsx)(s,{color:l.dim,children:"\u2500".repeat(44)}),(0,y.jsx)(s,{color:l.green,bold:!0,children:"New session started"})]}))},[c,Se,le,e,an,sn,en,re,C,de,tr,nt]),Mi=(0,R.useCallback)(async()=>{if(!(c.nextRunIndex()>0)){Se({type:"info",text:"No runs in current session."});return}if(_.isRunning){Se({type:"error",text:"Cannot reset while a run is in progress. Cancel the run first."});return}if(C.mode==="testing"&&!c.sessionName){yr("new"),Qt(Fo());return}await cn()},[c,_,Se,C.mode,cn]),Fi=(0,R.useCallback)(async()=>{await c.finish("complete"),lr(0,"Session complete")},[c]),od=(0,R.useCallback)(async p=>{Xr(!1);let x=c.testId??($e.length>0?$e[$e.length-1].testId:null);if(p&&x){c.log("info","EXIT_FEEDBACK_SUBMIT","Submitting session feedback",{choice:p});try{let d=De(de),h=S.getResolvedBasicAuth();h&&await Nu({tmsBaseUrl:d.tmsBaseUrl,username:h.username,accessKey:h.access_key,testId:x,feedbackType:p,log:(E,B,U,q)=>c.log(E,B,U,q)})}catch(d){c.log("error","EXIT_FEEDBACK_FAILED","Feedback submission failed",{error:String(d)})}}else c.log("info","EXIT_FEEDBACK_SKIPPED","Feedback skipped");Fi()},[de,S,c,Fi,$e]),ln=(0,R.useCallback)(async()=>{let p=c.nextRunIndex()>0,x=null;if(p&&!e){c.log("info","EXIT_WITH_ACTIVE_SESSION","Exit with active session \u2014 uploading first"),ie(!0);try{x=await an()??null}catch(E){c.log("error","EXIT_UPLOAD_FAILED","Exit upload failed",{error:String(E)})}c.testId&&Wr(E=>[...E,{testId:c.testId,runCount:re}])}try{let{persistRecordedSession:E}=await import("./persist-recorded-session-WFU4M4SQ.js"),B=await E(c,{testcaseId:c.testcaseId??void 0,projectId:C.project_id??void 0,folderId:C.folder_id??void 0,codeExportDir:x?.codeExportDir,packTestDir:G.current?.packTestDir});B&&no(B)}catch(E){c.log("error","EXIT_PERSIST_FAILED","Persist failed during /exit",{error:String(E)})}let d=await sn(x);if(d&&process.stdout.isTTY&&(ie(!0),await new Promise(E=>zr({packPath:d,resolve:E})),zr(null)),p&&!e&&await c.finish("complete"),!(c.testId??($e.length>0?$e[$e.length-1].testId:null))||e){await c.finish("complete"),lr(0,"No test ID \u2014 quick exit");return}ie(!0),Xr(!0)},[c,e,an,sn,re,$e,C]),$t=(0,R.useCallback)(async()=>{if(W)return;c.log("info","EXIT_START","TUI exit initiated");let p=C.mode==="testing",x=c.nextRunIndex()>0;if(p&&x&&!c.sessionName){yr("exit"),Qt(Fo());return}await ln()},[W,c,C.mode,ln]),id=(0,R.useCallback)(p=>{p&&c.setSessionName(p);let x=Ht;Qt(null),yr(null),x==="new"?cn():ln()},[c,Ht,ln,cn]);(0,R.useEffect)(()=>{if(!W)return;let p=300*1e3,x=setTimeout(async()=>{c.setUploadStatus("failed","Upload timed out after 5m"),await c.finish("complete"),lr(0,"Upload timed out after 5m")},p);return()=>clearTimeout(x)},[W,c]);let un=R.default.useRef(0),xo=R.default.useRef(null),vo=R.default.useRef(0),bo=R.default.useRef(0),So=R.default.useRef(null);Ie((p,x)=>{if(x.ctrl&&p==="c"){if(ve==="generate"&&(ne.isStreaming||dt.submitting)){dt.cancelGenerate(),bo.current++,So.current&&clearTimeout(So.current),So.current=setTimeout(()=>{bo.current=0},2e3),bo.current>=2&&$t();return}if(!pe.running){if(W){vo.current+=1,vo.current>=2&&(c.setUploadStatus("pending","Force exit by user"),c.finish("complete"),lr(0,"Force exit by user"));return}if(_.isRunning){_.cancelRun(),Se({type:"info",text:"Run cancelled."}),un.current++,xo.current&&clearTimeout(xo.current),xo.current=setTimeout(()=>{un.current=0},2e3),un.current>=2&&$t();return}$t()}}}),Ie((p,x)=>{if(x.ctrl&&p==="t"&&ve==="generate"&&!ne.isStreaming){nn("no thinking yet");return}});let Ui=R.default.useMemo(()=>{let p=S.creds.getActiveProfile()??"none",x=S.creds.getDefaultEnv();return[{id:"run",label:"Run",type:"submenu",children:[{id:"run-start",label:"Start Run",type:"action"},{id:"run-config",label:"Run Config",type:"submenu",children:[{id:"run-headless",label:"Headless",type:"select",currentValue:me.headless?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:d=>{kr(h=>({...h,headless:d==="on"}))}},{id:"run-max-steps",label:"Max Steps",type:"text-input",currentValue:String(me.maxSteps),onValue:d=>{let h=parseInt(d,10);h>0&&kr(E=>({...E,maxSteps:h}))}},{id:"run-timeout",label:"Timeout (sec)",type:"text-input",currentValue:me.timeout?String(me.timeout):"",placeholder:"0 = no timeout",onValue:d=>{let h=parseInt(d,10);kr(E=>({...E,timeout:isNaN(h)?0:h}))}},{id:"run-cdp",label:"CDP Endpoint",type:"text-input",currentValue:me.cdpEndpoint,placeholder:"http://127.0.0.1:9222",onValue:d=>{kr(h=>({...h,cdpEndpoint:d}))}},{id:"run-ws",label:"WS Endpoint",type:"text-input",currentValue:me.wsEndpoint,placeholder:"wss://...",onValue:d=>{kr(h=>({...h,wsEndpoint:d}))}}]}]},{id:"auth",label:"Auth",type:"submenu",children:[{id:"login",label:"Login",type:"action",onLoginWizard:()=>{}},{id:"logout",label:"Logout",type:"action",onAction:()=>{S.logout().then(d=>{Qe();let h=S.creds.getActiveProfile(),E=S.creds.getDefaultEnv();ut(h,E);let B=Ou(h,E);bt(B,nt).catch(()=>{}),d?P("ok","/logout",`Logged out: ${d.profile} [${d.env}]`):P("ok","/logout","No active profile")}).catch(()=>{P("error","/logout","Logout failed")})}},{id:"whoami",label:"Who Am I",type:"action",onInfo:()=>{let d=S.creds.getActiveProfile()??"none",h=S.creds.getDefaultEnv(),E=S.creds.loadBasicAuth(d,h),B=E?"basic":S.creds.loadCredentials(d,h)?"oauth":"not configured";return{title:"Who Am I",sections:[{label:"Identity",entries:[{key:"Profile",value:d},{key:"Environment",value:h}]},{label:"Authentication",entries:[{key:"Method",value:B},...E?[{key:"Username",value:E.username}]:[]]},{label:"Token",entries:[{key:"Status",value:S.tokenValid?"valid":"not logged in",color:S.tokenValid?l.green:l.red}]}]}}},{id:"balance",label:"Credit Balance",type:"action",suppressFeedback:!0,onAction:()=>{(async()=>{let d=S.creds.getActiveProfile()??"default",h=S.creds.getDefaultEnv(),E=De(h);try{let B=S.getBasicAuth(),U=B?null:await S.getToken();if(!B&&!U){et({text:"Not authenticated. Run /login first.",color:l.red});return}let{ControllerClient:q}=await import("./controller-client-RD2YEMAH.js"),se=await(B?new q(E.controllerBaseUrl,{username:B.username,accessKey:B.access_key}):new q(E.controllerBaseUrl,U)).getCreditBalance();et({text:`Credits \u2014 available: ${se.available_credits}, total: ${se.total_credits} (${d} / ${h})`,color:l.green})}catch(B){et({text:`Balance check failed: ${B instanceof Error?B.message:String(B)}`,color:l.red})}Ft.current&&clearTimeout(Ft.current),Ft.current=setTimeout(()=>{et(null),Ft.current=null},5e3)})()}},{id:"profiles",label:"Profiles",type:"action",onProfilesView:()=>{}}]},{id:"config",label:"Config",type:"submenu",children:[{id:"config-show",label:"Show",type:"action",onInfo:()=>({title:"Show Config",sections:[{label:"General",entries:[{key:"Model",value:"v16-alpha"},{key:"Mode",value:C.mode},{key:"Assertion Mode",value:C.assertion_mode},{key:"WebSocket Capture",value:C.network_ws?"on":"off"},{key:"SSE Capture",value:C.network_sse?"on":"off"},{key:"Bug Detection",value:C.bug_detection},{key:"Final Validation",value:C.final_validation?"on":"off"},{key:"Hints",value:C.hints_enabled===!1?"off":"on"}]},{label:"Browser",entries:[{key:"Window",value:`${C.window_size.width}x${C.window_size.height}`},{key:"Chrome Profile",value:C.chrome_profile_path?C.chrome_profile_path.split("/").pop()??C.chrome_profile_path:"(temporary)"}]},{label:"Project",entries:[{key:"Project",value:C.project_name?`${C.project_name} (${C.project_id})`:C.project_id??"(none)"},{key:"Folder",value:C.folder_name?`${C.folder_name} (${C.folder_id})`:C.folder_id??"(none)"},{key:"Default URL",value:C.default_url??Eo}]},{label:"Code Export",entries:[{key:"Enabled",value:C.code_export.enabled?"yes":"no"},{key:"Language",value:C.code_export.language},{key:"Skip Validation",value:C.code_export.skip_validation?"yes":"no"}]}]})},{id:"config-chrome",label:"Chrome Profile",type:"action",onChromeProfilePicker:()=>{}},{id:"config-project",label:"Project",type:"action",onProjectPicker:()=>{}},{id:"config-folder",label:"Folder",type:"action",...C.project_id?{onFolderPicker:()=>{}}:{onInfo:()=>({title:"Folder",sections:[{entries:[{key:"Status",value:"Select a project first",color:l.dim}]}]})}},{id:"config-window",label:"Window Size",type:"action",currentValue:`${C.window_size.width}x${C.window_size.height}`,onWindowSizePicker:()=>{}},{id:"config-default-url",label:"Default URL",type:"text-input",currentValue:C.default_url??"",placeholder:"https://example.com",onValue:d=>{let h=$o(d);if(!h){P("error","/config set-url","Enter a valid URL (e.g. example.com)");return}m.set("default_url",h),ge(m.load()),P("ok","/config set-url",h)}},{id:"config-run",label:"Run",type:"submenu",children:[{id:"config-mode",label:"Mode",type:"select",currentValue:C.mode,options:[{label:"testing",value:"testing"},{label:"action",value:"action"}],onValue:d=>{(d==="action"||d==="testing")&&(m.set("mode",d),ge(m.load()),P("ok","/config set-mode",d))}},{id:"config-assertion-mode",label:"Assertion Mode",type:"select",currentValue:C.assertion_mode,options:[{label:"visual \u2014 vision model (default)",value:"visual"},{label:"dom \u2014 DOM extraction & assertions preferred",value:"dom"}],onValue:d=>{(d==="visual"||d==="dom")&&(m.set("assertion_mode",d),ge(m.load()),P("ok","/config set-assertion-mode",d))}},{id:"config-final-validation",label:"Final Validation",type:"select",currentValue:C.final_validation?"on":"off",options:[{label:"off \u2014 no cp_final checkpoint (default)",value:"off"},{label:"on \u2014 append cp_final, verifying the objective as a whole",value:"on"}],onValue:d=>{(d==="on"||d==="off")&&(m.set("final_validation",d==="on"),ge(m.load()),P("ok","/config set-final-validation",d))}},{id:"config-network-ws",label:"WebSocket Capture",type:"select",currentValue:C.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:d=>{(d==="on"||d==="off")&&(m.set("network_ws",d==="on"),ge(m.load()),P("ok","/config set-network-ws",d))}},{id:"config-network-sse",label:"SSE Capture",type:"select",currentValue:C.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:d=>{(d==="on"||d==="off")&&(m.set("network_sse",d==="on"),ge(m.load()),P("ok","/config set-network-sse",d))}},{id:"config-bug-detection",label:"Bug Detection",type:"select",currentValue:C.bug_detection,options:[{label:"off \u2014 no bug detection while authoring (default)",value:"off"},{label:"stop \u2014 halt the run when a confirmed product bug is found",value:"stop"},{label:"continue \u2014 record confirmed bugs and keep authoring",value:"continue"}],onValue:d=>{(d==="off"||d==="stop"||d==="continue")&&(m.set("bug_detection",d),ge(m.load()),P("ok","/config set-bug-detection",d))}}]},{id:"config-hints",label:"CLI Hints",type:"select",currentValue:C.hints_enabled===!1?"off":"on",options:[{label:"on",value:"on"},{label:"off",value:"off"}],onValue:d=>{let h=d==="on";m.set("hints_enabled",h),ge(m.load()),P("ok","/config hints",`CLI hints ${h?"enabled":"disabled"}`)}},{id:"config-generate",label:"Generate",type:"submenu",currentValue:`${C.generate.scenario_limit}x${C.generate.per_scenario_limit}`,children:[{id:"config-generate-scenario-limit",label:"Scenario limit",type:"text-input",currentValue:String(C.generate.scenario_limit),placeholder:"5",onValue:d=>{let h=parseInt(d,10);if(!Number.isFinite(h)||h<1||h>20){P("error","/config",`Scenario limit must be 1-20 (got ${d})`);return}m.set("generate",{...C.generate,scenario_limit:h}),ge(m.load()),P("ok","/config",`Scenario limit: ${h}`)}},{id:"config-generate-per-scenario-limit",label:"Per-scenario limit",type:"text-input",currentValue:String(C.generate.per_scenario_limit),placeholder:"4",onValue:d=>{let h=parseInt(d,10);if(!Number.isFinite(h)||h<1||h>20){P("error","/config",`Per-scenario limit must be 1-20 (got ${d})`);return}m.set("generate",{...C.generate,per_scenario_limit:h}),ge(m.load()),P("ok","/config",`Per-scenario limit: ${h}`)}},{id:"config-generate-memory",label:"Memory",type:"select",currentValue:C.generate.memory_enabled?"on":"off",options:[{label:"on",value:"on"},{label:"off",value:"off"}],onValue:d=>{let h=d==="on";m.set("generate",{...C.generate,memory_enabled:h}),ge(m.load()),P("ok","/config",`Memory: ${h?"on":"off"}`)}}]},{id:"config-code-export",label:"Code Export",type:"submenu",currentValue:C.code_export.enabled?"enabled":"disabled",children:[{id:"config-code-export-enabled",label:"Enabled",type:"select",currentValue:C.code_export.enabled?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:d=>{m.set("code_export",{...C.code_export,enabled:d==="on"}),ge(m.load()),P("ok","/config code-export enabled",d)}},{id:"config-code-export-language",label:"Language",type:"select",currentValue:C.code_export.language,options:[{label:"python",value:"python"},{label:"javascript",value:"javascript"}],onValue:d=>{d!=="python"&&d!=="javascript"||(m.set("code_export",{...C.code_export,language:d}),ge(m.load()),P("ok","/config code-export language",d))}},{id:"config-code-export-skip-validation",label:"Skip Validation",type:"select",currentValue:C.code_export.skip_validation?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:d=>{m.set("code_export",{...C.code_export,skip_validation:d==="on"}),ge(m.load()),P("ok","/config code-export skip-validation",d)}}]}]},{id:"exit",label:"Exit",type:"action",onAction:()=>{$t()}}]},[S,m,C,Se,$t,me,Qe,P]),wo=(0,R.useCallback)(p=>{if(_.askingUser){let d=_.askingUser;le((0,y.jsxs)(b,{flexDirection:"column",marginLeft:2,paddingLeft:1,marginTop:1,children:[(0,y.jsx)(b,{marginLeft:1,children:(0,y.jsx)(s,{color:l.orange,bold:!0,children:"Agent Question"})}),(0,y.jsxs)(b,{borderStyle:"round",borderColor:l.orange,flexDirection:"column",paddingX:2,paddingY:1,width:70,children:[(0,y.jsxs)(b,{children:[(0,y.jsx)(b,{width:3,children:(0,y.jsx)(s,{color:l.orange,bold:!0,children:"?"})}),(0,y.jsx)(b,{flexShrink:1,children:(0,y.jsx)(s,{wrap:"wrap",children:d})})]}),(0,y.jsxs)(b,{marginTop:1,children:[(0,y.jsx)(b,{width:3,children:(0,y.jsx)(s,{color:l.dim,bold:!0,children:"\u2192"})}),(0,y.jsx)(b,{flexShrink:1,children:(0,y.jsx)(s,{wrap:"wrap",children:p})})]})]})]})),go.current=null,_.sendAnswer(p);return}if(c.logCommand(p),_.isRunning){Se({type:"error",text:"Run in progress. Ctrl+C to cancel."});return}let x=Nn(p);if(x){if(!Rl(x.command,ve)){P("error",`/${x.command}`,`/${x.command} isn't available in ${ve==="run"?"Run":"Generate"} mode.`);return}switch(x.command){case"profiles":if(ve==="generate"&&ne.requestId&&x.args.action==="switch"){Ir({reason:"profile",pendingArgs:x.args});return}Tr("auth");return;case"login":case"logout":case"whoami":case"balance":case"auth":Tr("auth");return;case"config":if(x.args.action==="set-url"){let d=$o(x.args.value);if(!d){P("error","/config set-url","Usage: /config set-url <url>");return}m.set("default_url",d),ge(m.load()),P("ok","/config set-url",d);return}Tr("config");return;case"help":Bi(!0);return;case"testmd":if(_.isRunning||ne.isStreaming||pe.running){P("error","/testmd","Finish or cancel the current run/generation first.");return}pe.clearResult(),Qr(!0);return;case"generate":if(pe.running){P("error","/generate","Finish or cancel the running test first.");return}ve==="run"?dt.requestSwitch("generate")&&P("ok","/generate","Switched to Generate mode.",void 0,l.generateAccent):P("ok","/generate","Already in Generate mode.",void 0,l.generateAccent);return;case"run":{let d=Tl(ve,x.args.objective);switch(d.kind){case"run":lo(d.objective,x.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,l.orange);return;case"toggle":dt.requestSwitch("run")&&P("ok","/run","Switched to Run mode.",void 0,l.orange);return}return}case"update":{(async()=>{let{getUpdateCommand:d}=await import("./version-check-TXTCVX2N.js");P("ok","/update",`To update kane-cli, run: ${d()}`)})();return}case"summary":{if(ve==="generate"&&!ne.requestId){nn("no generation yet"),P("ok","/summary","(no generation yet)");return}let d=c.getFlows();if(d.length===0){P("ok","/summary","No runs yet in this session.");return}let h=x.args.index?parseInt(x.args.index,10):void 0;if(h!==void 0&&!c.getFlow(h)){P("error","/summary",`No flow at index ${h}`,`${d.length} flow${d.length===1?"":"s"} available. Use /summary to see all.`);return}le((0,y.jsx)(Ri,{flows:d,filterIndex:h})),P("ok","/summary",h!==void 0?`Flow ${h}`:`${d.length} flow${d.length===1?"":"s"}`);return}case"new":ve==="generate"&&ne.requestId&&(Lt(),ne.end().catch(d=>{P("error","/new",`Could not end generation cleanly: ${d.message}`)}),ne.reset()),Mi(),P("ok","/new","Session reset");return;case"name":{let d=x.raw.replace(/^\/name\s*/,"").trim();if(!d){P("error","/name","Usage: /name <new-name>");return}(async()=>{let{validateNameOrThrow:h}=await import("./name-validator-5YGJXLZ7.js");try{h(d),c.setSessionName(d),P("ok","/name",`Session name set: ${d}`)}catch(E){P("error","/name",E.message)}})();return}case"cancel":if(ve==="generate"&&ne.isStreaming){Lt(),ne.cancel(),P("ok","/cancel","Cancelled");return}if(ve==="generate"&&!ne.requestId){nn("no generation yet"),P("ok","/cancel","(no generation yet)");return}if(pe.running){pe.cancel(),P("ok","/cancel","Run cancelled");return}_.cancelRun(),P("ok","/cancel","Run cancelled");return;case"clear":P("ok","/clear","Chat cleared");return;case"exit":ve==="generate"&&ne.requestId&&(Lt(),ne.end()),$t();return;default:P("error",`/${x.command}`,"Unknown command");return}}if(p.trim().toLowerCase()==="exit"){$t();return}le((0,y.jsx)(gl,{objective:p})),lo(p,void 0)},[_,Se,P,le,c,lo,$t,Mi,ve,ne.isStreaming,ne.requestId,ne,nn,Lt,pe,C,a]);Ni.current=wo;let qi=(0,R.useRef)(!1);(0,R.useEffect)(()=>{if(!qi.current&&V&&u==="generate"&&f){qi.current=!0;let p=setTimeout(()=>{ed(f)},50);return()=>clearTimeout(p)}},[V,u,f]);let Hi=S.getAuthInfo(),sd=Hi?Hi.method==="basic"?"basic auth":"oauth":"not logged in",ad=(()=>{if(Er)return["help"];if(Cr)return["testmd"];if(L)return L.phase==="wizard"?["auth","login"]:L.phase==="project"?["auth","login","project"]:L.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 xt==="auth"?Jr?["auth",p[Jr]]:["auth"]:xt==="config"?Jr?["config",p[Jr]]:["config"]:xt==="help"?["help"]:_.askingUser?["agent question"]:[]})();return(0,y.jsxs)(b,{flexDirection:"column",children:[!V&&!Pi&&(0,y.jsx)(ml,{onComplete:()=>{let p=S.creds.getActiveProfile(),x=S.creds.getDefaultEnv(),d=p?S.creds.loadCredentials(p,x):null,h=p?S.creds.loadBasicAuth(p,x):null,E=!!(d||h),B=h?.username??p??null;le((0,y.jsx)(Dn,{size:"full",helmetVisibleRows:8,textVisibleRows:7,showMeta:!0,version:ot,authenticated:E,user:B})),Fu(!0);let U=(q,oe,se,be)=>{c.log(q,oe,se,be)};if(Is(S.creds,U).then(q=>{if(q.status==="authenticated"){let{profile:oe,env:se,tmsCreds:be}=q.result;S.creds.setActiveProfile(oe),S.creds.setDefaultEnv(se),Qe(),Ke(be),ht("ready"),O(!0)}else q.status==="needs_pick"?(Vu(q.profiles),ht("pick")):ht("login")}).catch(q=>{c.log("error","STARTUP_GATE_ERROR","Auth gate failed",{error:String(q)}),ht("login")}),o&&o.then(async q=>{if(q){let{getUpdateCommand:oe}=await import("./version-check-TXTCVX2N.js");P("ok","update available",`${q.current} \u2192 ${q.latest}`,`Run: ${oe()}`)}}).catch(()=>{}),i&&i.changes.length>0){let q=`kane-cli updated to ${i.toVersion}. Default settings changed:`,oe=[...i.changes.map(se=>`\u2022 ${se.description} (${se.field}: ${JSON.stringify(se.from)} \u2192 ${JSON.stringify(se.to)})`),"","Use /config to review or revert any of these."].join(`
|
|
23
|
+
`);P("ok","defaults updated",q,oe)}}}),!V&&er==="booting"&&Pi&&(0,y.jsx)(b,{paddingX:1,children:(0,y.jsx)(s,{color:"yellow",children:"Checking authentication..."})}),!V&&er==="pick"&&(0,y.jsx)(Yg,{profiles:ju,onCancel:()=>ht("login"),onSelect:async(p,x)=>{S.creds.setActiveProfile(p),S.creds.setDefaultEnv(x),Qe(),oo(!0);let d=(h,E,B,U)=>{c.log(h,E,B,U)};try{let h=await Cs(S.creds,p,x,d);oo(!1),h.status==="authenticated"?(ut(p,x),Ke(h.result.tmsCreds),ht("ready"),O(!0)):ht("login")}catch{oo(!1),ht("login")}},validating:Mu}),!V&&er==="login"&&!L&&(0,y.jsx)(mn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:S.creds.listProfiles(),onBasicLogin:async(p,x,d,h)=>{let{validateBasicAuth:E}=await import("./validate-basic-WILRWRRP.js");await E(x,d,h),S.creds.saveBasicAuth(p,x,{username:d,access_key:h}),S.creds.setActiveProfile(p),S.creds.setDefaultEnv(x),it(S.creds,m,p,x),S.setTokenValid(!0),Qe()},onOAuthLogin:async(p,x)=>{S.creds.setDefaultEnv(x),await S.login(p),it(S.creds,m,p,x),Qe()},onComplete:(p,x)=>{bt(ro(x),nt).then(()=>{Qe(),Te({phase:"project",profile:p,env:x})}).catch(()=>{Te({phase:"project",profile:p,env:x})})},onCancel:()=>{lr(0,"Login cancelled at startup")}}),!V&&er==="login"&&L?.phase==="project"&&(0,y.jsx)(sr,{resolver:S.getResolver(),currentProjectId:null,env:L.env,onSelect:(p,x)=>{S.creds.saveProfileConfig(L.profile,L.env,{project_id:p,project_name:x}),P("ok","/config project",x,`id: ${p}`),Te({...L,phase:"folder"})},onCancel:async()=>{let p=await ao(L.profile,L.env);p&&(pt(S.creds,m,L.profile,L.env,{projectId:p.id,projectName:p.name}),P("ok","/config project",p.name,`id: ${p.id}`),Te({...L,phase:"folder"}))}}),!V&&er==="login"&&L?.phase==="folder"&&(0,y.jsx)(ar,{resolver:S.getResolver(),projectId:S.creds.loadProfileConfig(L.profile,L.env)?.project_id??"",currentFolderId:null,env:L.env,onSelect:(p,x)=>{S.creds.saveProfileConfig(L.profile,L.env,{folder_id:p,folder_name:x}),P("ok","/config folder",x,`id: ${p}`),ut(L.profile,L.env),Te(null),ht("ready"),O(!0)},onCancel:async()=>{let p=S.creds.loadProfileConfig(L.profile,L.env);if(!p?.project_id)return;let x=await co(L.env,p.project_id);x&&(pt(S.creds,m,L.profile,L.env,{folderId:x.id,folderName:x.name}),P("ok","/config folder",x.name,`id: ${x.id}`),ut(L.profile,L.env),Te(null),ht("ready"),O(!0))}}),V&&Kr==="menu"&&!W&&(0,y.jsx)(b,{marginBottom:1,children:(0,y.jsxs)(b,{borderStyle:"round",borderColor:"#dc4e08",paddingX:2,children:[(0,y.jsx)(s,{color:"#ff9500",bold:!0,children:"KaneAI CLI"}),(0,y.jsx)(s,{color:l.dim,children:" \u2502 "}),(0,y.jsx)(s,{color:"#ff9500",children:C.model}),(0,y.jsx)(s,{color:l.dim,children:" \u2502 "}),(0,y.jsx)(s,{color:l.dim,children:sd}),(0,y.jsx)(s,{color:l.dim,children:" \u2502 "}),(0,y.jsxs)(s,{color:l.dim,children:[tr??"no profile","/",de]})]})}),V&&!W&&(0,y.jsxs)(b,{flexDirection:"column",flexGrow:1,children:[Kr==="menu"&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(xi,{items:Ui,onRunSelected:()=>Uu("chat"),onActiveViewChange:Li,renderLoginWizard:p=>{let x=L?.phase??"wizard";if(x==="project")return(0,y.jsx)(sr,{resolver:S.getResolver(),currentProjectId:null,env:L.env,onSelect:(d,h)=>{S.creds.saveProfileConfig(L.profile,L.env,{project_id:d,project_name:h}),P("ok","/config project",h,`id: ${d}`),Te(E=>E?{...E,phase:"folder"}:null)},onCancel:async()=>{if(!L)return;let d=await ao(L.profile,L.env);d&&(pt(S.creds,m,L.profile,L.env,{projectId:d.id,projectName:d.name}),P("ok","/config project",d.name,`id: ${d.id}`),Te(h=>h?{...h,phase:"folder"}:null))}});if(x==="folder"){let d=S.creds.loadProfileConfig(L.profile,L.env);return(0,y.jsx)(ar,{resolver:S.getResolver(),projectId:d?.project_id??"",currentFolderId:null,env:L.env,onSelect:(h,E)=>{S.creds.saveProfileConfig(L.profile,L.env,{folder_id:h,folder_name:E}),P("ok","/config folder",E,`id: ${h}`),ut(L.profile,L.env),Te(null),p()},onCancel:async()=>{if(!L)return;let h=S.creds.loadProfileConfig(L.profile,L.env);if(!h?.project_id)return;let E=await co(L.env,h.project_id);E&&(pt(S.creds,m,L.profile,L.env,{folderId:E.id,folderName:E.name}),P("ok","/config folder",E.name,`id: ${E.id}`),ut(L.profile,L.env),Te(null),p())}})}return(0,y.jsx)(mn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:S.creds.listProfiles(),onBasicLogin:async(d,h,E,B)=>{let{validateBasicAuth:U}=await import("./validate-basic-WILRWRRP.js");await U(h,E,B),S.creds.saveBasicAuth(d,h,{username:E,access_key:B}),S.creds.setActiveProfile(d),S.creds.setDefaultEnv(h),it(S.creds,m,d,h),S.setTokenValid(!0),Qe()},onOAuthLogin:async(d,h)=>{S.creds.setDefaultEnv(h),await S.login(d),it(S.creds,m,d,h),Qe()},onComplete:(d,h)=>{bt(ro(h),nt).then(()=>{Te({phase:"project",profile:d,env:h})}).catch(()=>{Te({phase:"project",profile:d,env:h})})},onCancel:()=>{Te(null),p()}})},renderProfilesView:p=>(0,y.jsx)(Po,{creds:S.creds,onSwitch:(x,d)=>{let h=S.creds.getActiveProfile()??"(none)";S.creds.setActiveProfile(x),S.creds.setDefaultEnv(d),it(S.creds,m,x,d),ut(x,d),Qe(),bt(_i(d),nt).catch(()=>{}),P("ok","/profiles switch",`${h} \u2192 ${x} [${d}]`)},onCancel:p}),renderChromeProfilePicker:p=>(0,y.jsx)(Lo,{currentPath:C.chrome_profile_path,onSelect:x=>{m.set("chrome_profile_path",x),ge(m.load()),P("ok","/config chrome-profile",x),p()},onCancel:p}),renderProjectPicker:p=>(0,y.jsx)(sr,{resolver:S.getResolver(),currentProjectId:C.project_id,env:de,onSelect:(x,d)=>{pt(S.creds,m,S.creds.getActiveProfile()??"default",S.creds.getDefaultEnv(),{projectId:x,projectName:d}),P("ok","/config project",d,`id: ${x}`),ge(m.load()),p()},onCancel:p}),renderFolderPicker:p=>(0,y.jsx)(ar,{resolver:S.getResolver(),projectId:C.project_id??"",currentFolderId:C.folder_id,env:de,onSelect:(x,d)=>{pt(S.creds,m,S.creds.getActiveProfile()??"default",S.creds.getDefaultEnv(),{folderId:x,folderName:d}),P("ok","/config folder",d,`id: ${x}`),ge(m.load()),p()},onCancel:p}),renderWindowSizePicker:p=>(0,y.jsx)(yi,{currentWidth:C.window_size.width,currentHeight:C.window_size.height,onSelect:(x,d)=>{m.set("window_size",{width:x,height:d}),ge(m.load()),P("ok","/config set-window",`${x} \xD7 ${d}`),p()},onCancel:p})}),Be&&(0,y.jsx)(b,{paddingX:1,marginTop:1,children:(0,y.jsx)(s,{color:Be.color,children:Be.text})})]}),Kr==="chat"&&(0,y.jsxs)(y.Fragment,{children:[(()=>{let p=Zi({isRunning:_.isRunning,bifurcationInfo:_.bifurcationInfo,steps:_.steps,cmInitCounts:_.cmInitCounts,replayInfo:_.replayInfo});return p?(0,y.jsx)(Qi,{label:p.label,hasBifurcation:p.hasBifurcation}):null})(),_.isRunning&&_.steps.length>0&&(0,y.jsx)(Ji,{steps:_.steps,bifurcated:!!_.bifurcationInfo&&!_.bifurcationInfo.isSingleFlow,flows:_.bifurcationInfo?.flows,cmInitCounts:_.cmInitCounts,onStepCommit:le,describe:Ar.text,describeVisible:Ar.visible,describeRevealing:Ar.revealing},`run-${Y.current}`),pe.runViewProps&&(0,y.jsx)($s,{...pe.runViewProps,onCancel:()=>{pe.runViewProps?.onCancel?.(),pe.cancel()}}),Er&&(0,y.jsx)(Il,{onClose:()=>Bi(!1),version:ot,environment:S.creds.getDefaultEnv(),sessionId:c.sessionId,runUrl:C.default_url??Eo,mode:ve}),Cr&&(0,y.jsx)(_l,{cwd:process.cwd(),currentOrgId:String(Ge?.org_id??""),onClose:()=>Qr(!1),onRun:p=>{if(_.isRunning||ne.isStreaming||pe.running){setTimeout(()=>P("error","/testmd","Finish or cancel the current run first."),0);return}Qr(!1),!(ve==="generate"&&!dt.requestSwitch("run"))&&(ve==="generate"&&setTimeout(()=>P("ok","/testmd",`Switched to Run mode to run ${p.relPath}`,void 0,l.orange),0),pe.start(p.path).catch(x=>setTimeout(()=>P("error","/testmd",`Run failed: ${x.message}`),0)))},onExport:p=>{Qr(!1),Xs(p.path,{language:C.code_export.language??"python",env:de}).then(x=>setTimeout(()=>P("ok","/testmd",`Exported code \u2192 ${x.codeDir}`),0)).catch(x=>setTimeout(()=>P("error","/testmd",`Export failed: ${x.message}`),0))}}),xt&&!_.isRunning&&(()=>{let p=Ui.find(x=>x.id===xt);return p?.children?(0,y.jsx)(xi,{items:p.children,onRunSelected:()=>Tr(null),onDismiss:()=>Tr(null),onActiveViewChange:Li,renderLoginWizard:x=>{let d=L?.phase??"wizard";if(d==="project")return(0,y.jsx)(sr,{resolver:S.getResolver(),currentProjectId:null,env:L.env,onSelect:(h,E)=>{S.creds.saveProfileConfig(L.profile,L.env,{project_id:h,project_name:E}),P("ok","/config project",E,`id: ${h}`),Te(B=>B?{...B,phase:"folder"}:null)},onCancel:async()=>{if(!L)return;let h=await ao(L.profile,L.env);h&&(pt(S.creds,m,L.profile,L.env,{projectId:h.id,projectName:h.name}),P("ok","/config project",h.name,`id: ${h.id}`),Te(E=>E?{...E,phase:"folder"}:null))}});if(d==="folder"){let h=S.creds.loadProfileConfig(L.profile,L.env);return(0,y.jsx)(ar,{resolver:S.getResolver(),projectId:h?.project_id??"",currentFolderId:null,env:L.env,onSelect:(E,B)=>{S.creds.saveProfileConfig(L.profile,L.env,{folder_id:E,folder_name:B}),P("ok","/config folder",B,`id: ${E}`),ut(L.profile,L.env),Te(null),x()},onCancel:async()=>{if(!L)return;let E=S.creds.loadProfileConfig(L.profile,L.env);if(!E?.project_id)return;let B=await co(L.env,E.project_id);B&&(pt(S.creds,m,L.profile,L.env,{folderId:B.id,folderName:B.name}),P("ok","/config folder",B.name,`id: ${B.id}`),ut(L.profile,L.env),Te(null),x())}})}return(0,y.jsx)(mn,{devMode:process.env.KANE_DEV_MODE==="1",profiles:S.creds.listProfiles(),onBasicLogin:async(h,E,B,U)=>{let{validateBasicAuth:q}=await import("./validate-basic-WILRWRRP.js");await q(E,B,U),S.creds.saveBasicAuth(h,E,{username:B,access_key:U}),S.creds.setActiveProfile(h),S.creds.setDefaultEnv(E),it(S.creds,m,h,E),S.setTokenValid(!0),Qe()},onOAuthLogin:async(h,E)=>{S.creds.setDefaultEnv(E),await S.login(h),it(S.creds,m,h,E),Qe()},onComplete:(h,E)=>{bt(ro(E),nt).then(()=>{Te({phase:"project",profile:h,env:E})}).catch(()=>{Te({phase:"project",profile:h,env:E})})},onCancel:()=>{Te(null),x()}})},renderProfilesView:x=>(0,y.jsx)(Po,{creds:S.creds,onSwitch:(d,h)=>{let E=S.creds.getActiveProfile()??"(none)";S.creds.setActiveProfile(d),S.creds.setDefaultEnv(h),it(S.creds,m,d,h),ut(d,h),Qe(),bt(_i(h),nt).catch(()=>{}),P("ok","/profiles switch",`${E} \u2192 ${d} [${h}]`),x()},onCancel:x}),renderChromeProfilePicker:x=>(0,y.jsx)(Lo,{currentPath:C.chrome_profile_path,onSelect:d=>{m.save({chrome_profile_path:d}),ge(m.load()),P("ok","/config chrome-profile",d),x()},onCancel:x}),renderProjectPicker:x=>(0,y.jsx)(sr,{resolver:S.getResolver(),currentProjectId:C.project_id,env:de,onSelect:(d,h)=>{pt(S.creds,m,S.creds.getActiveProfile()??"default",S.creds.getDefaultEnv(),{projectId:d,projectName:h}),ge(m.load()),P("ok","/config project",h,`id: ${d}`),x()},onCancel:x}),renderFolderPicker:x=>(0,y.jsx)(ar,{resolver:S.getResolver(),projectId:C.project_id??"",currentFolderId:C.folder_id,env:de,onSelect:(d,h)=>{pt(S.creds,m,S.creds.getActiveProfile()??"default",S.creds.getDefaultEnv(),{folderId:d,folderName:h}),ge(m.load()),P("ok","/config folder",h,`id: ${d}`),x()},onCancel:x}),renderWindowSizePicker:x=>(0,y.jsx)(yi,{currentWidth:C.window_size.width,currentHeight:C.window_size.height,onSelect:(d,h)=>{m.set("window_size",{width:d,height:h}),ge(m.load()),P("ok","/config set-window",`${d} \xD7 ${h}`),x()},onCancel:x})},xt):null})(),xt&&Be&&(0,y.jsx)(b,{paddingX:1,marginTop:1,children:(0,y.jsx)(s,{color:Be.color,children:Be.text})}),ve==="run"&&!xt&&!Er&&!Cr&&!qt&&_.askingUser&&(0,y.jsxs)(b,{flexDirection:"column",marginLeft:2,paddingLeft:1,marginTop:1,children:[(0,y.jsx)(b,{marginLeft:1,children:(0,y.jsx)(s,{color:l.orange,bold:!0,children:"Agent Question"})}),(0,y.jsx)(b,{borderStyle:"round",borderColor:l.orange,flexDirection:"column",paddingX:2,paddingY:1,width:70,children:(0,y.jsxs)(b,{children:[(0,y.jsx)(b,{width:3,children:(0,y.jsx)(s,{color:l.orange,bold:!0,children:"?"})}),(0,y.jsx)(b,{flexShrink:1,children:(0,y.jsx)(s,{wrap:"wrap",children:_.askingUser})})]})})]}),Zr&&(()=>{let p=Zr,x=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?",d=p.reason==="switch"?"Discard & switch":"Yes, end";return(0,y.jsx)(ku,{message:x,confirmLabel:d,onConfirm:async()=>{if(p.reason==="switch"){let E=p.to;Ir(null),dt.confirmSwitch(E);return}Lt();let h=p.pendingArgs;if(Ir(null),await ne.end(),ne.reset(),h.profile){let E=S.creds.getDefaultEnv(),B=S.creds.getActiveProfile()??"(none)";S.creds.setActiveProfile(h.profile),S.creds.setDefaultEnv(E),it(S.creds,m,h.profile,E),ut(h.profile,E),Qe(),bt({kind:"switch",env:E},nt).catch(()=>{}),P("ok","/profiles switch",`${B} \u2192 ${h.profile} [${E}]`)}else wo("/profiles switch")},onCancel:()=>Ir(null)})})(),ve==="run"&&!xt&&!Er&&!Cr&&!qt&&!Zr&&!pe.running&&(0,y.jsx)(Dt,{onSubmit:wo,onEscape:void 0,history:Hu,commands:yl,clearSeq:Zu,placeholder:_.askingUser?"Type your answer...":_.isRunning?"Run in progress... Ctrl+C to cancel":"Type an objective... (/ = commands)",footerBindings:[{keys:"\u2191\u2193",label:"history"},{keys:"\u21B5",label:"submit"},{keys:"tab",label:"complete"},{keys:"ctrl+r",label:"search"},{keys:"/generate",label:"test cases"}]}),ve==="generate"&&!xt&&!Er&&!Cr&&!qt&&!Zr&&(0,y.jsx)(Cu,{tcg:ne,gm:dt,history:Gu,tuiConfig:C,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&&W&&tt&&(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(Do,{steps:vr,status:tt.status,testUrl:tt.testUrl,error:tt.error}),tt.status==="success"&&(0,y.jsx)(hn,{recordedTestPath:Yr?.recordedTestPath,outputDir:Yr?.outputDir,shareableLink:tt.testUrl,testCaseLink:tt.testCaseLink,codeExportDir:tt.codeExportDir,autoExit:!1})]}),qt&&(0,y.jsx)(fa,{defaultName:qt,onSubmit:id}),wr&&(0,y.jsx)(ys,{packPath:wr.packPath,viewerBase:Ss(de??"prod"),onDone:()=>wr.resolve()}),Sr&&(0,y.jsx)(da,{onSubmit:od}),Jt&&tt&&(0,y.jsx)(Do,{steps:vr,status:tt.status,error:tt.error}),V&&!W&&(0,y.jsx)(ul,{profile:tr,environment:de,tokenValid:S.tokenValid,runCount:re,sessionId:c.sessionId,viewMode:Kr,breadcrumb:ad,chatMode:ve,footerHint:rd,tcgRequestId:ne.requestId,tcgStreamStatus:ne.isStreaming?"streaming":ne.isReconnecting?"reconnecting":ne.isTerminal&&ne.state.status.toLowerCase()==="completed"?"completed":ne.isTerminal&&ne.state.status.toLowerCase()==="failed"?"failed":null})]})}function Yg({profiles:e,onSelect:t,onCancel:r,validating:n}){let[o,i]=(0,R.useState)(0);return Ie((a,u)=>{if(!n){if(u.escape){r();return}if(u.upArrow&&o>0&&i(f=>f-1),u.downArrow&&o<e.length-1&&i(f=>f+1),u.return){let f=e[o];t(f.profile,f.env)}}}),(0,y.jsxs)(b,{flexDirection:"column",paddingX:1,children:[(0,y.jsx)(s,{color:"#ff9500",bold:!0,children:"Select a profile:"}),(0,y.jsx)(b,{marginTop:1,flexDirection:"column",children:e.map((a,u)=>(0,y.jsxs)(s,{children:[u===o?"\u276F ":" ",(0,y.jsx)(s,{color:u===o?"#ff9500":"white",bold:u===o,children:a.profile}),(0,y.jsxs)(s,{color:"gray",children:[" [",a.env,"]"]})]},`${a.profile}-${a.env}`))}),n&&(0,y.jsx)(b,{marginTop:1,children:(0,y.jsx)(s,{color:"yellow",children:"Validating credentials..."})}),!n&&(0,y.jsx)(b,{marginTop:1,children:(0,y.jsx)(s,{color:"gray",children:"Esc = new login"})})]})}export{vl as a,Du as b,Nu as c,dR as d};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{c as g}from"./chunk-
|
|
2
|
+
import{c as g}from"./chunk-HMGNPFXP.js";import{readFileSync as o,writeFileSync as h,mkdirSync as u,readdirSync as a,unlinkSync as s,existsSync as l,chmodSync as f}from"fs";import{join as n,dirname as P}from"path";var d=class{baseDir;profilesDir;configFile;constructor(t=g){this.baseDir=t,this.profilesDir=n(t,"profiles"),this.configFile=n(t,"config.json")}readConfig(){try{return JSON.parse(o(this.configFile,"utf-8"))}catch{return{}}}writeConfig(t){u(this.baseDir,{recursive:!0,mode:448}),h(this.configFile,JSON.stringify(t,null,2)+`
|
|
3
3
|
`),f(this.configFile,384)}getActiveProfile(){return this.readConfig().active_profile??null}setActiveProfile(t){let i=this.readConfig();i.active_profile=t,this.writeConfig(i)}getDefaultEnv(){return this.readConfig().default_env??"prod"}setDefaultEnv(t){let i=this.readConfig();i.default_env=t,this.writeConfig(i)}credentialsPath(t,i){return n(this.profilesDir,t,i,"credentials")}clientPath(t,i){return n(this.profilesDir,t,i,"client.json")}basicAuthPath(t,i){return n(this.profilesDir,t,i,"basic-auth")}profileConfigPath(t,i){return n(this.profilesDir,t,i,"profile-config.json")}saveProfileConfig(t,i,r){let e=this.loadProfileConfig(t,i)??{};this.writeSecure(this.profileConfigPath(t,i),{...e,...r})}loadProfileConfig(t,i){try{return JSON.parse(o(this.profileConfigPath(t,i),"utf-8"))}catch{return null}}writeSecure(t,i){try{u(P(t),{recursive:!0,mode:448}),h(t,JSON.stringify(i,null,2)+`
|
|
4
4
|
`),f(t,384)}catch(r){let e=r instanceof Error?r.message:String(r);process.stderr.write(`[auth] Failed to save credentials: ${e}
|
|
5
5
|
`)}}saveCredentials(t,i,r){this.writeSecure(this.credentialsPath(t,i),r)}loadCredentials(t,i){try{return JSON.parse(o(this.credentialsPath(t,i),"utf-8"))}catch{return null}}saveClient(t,i,r){this.writeSecure(this.clientPath(t,i),r)}loadClient(t,i){try{return JSON.parse(o(this.clientPath(t,i),"utf-8"))}catch{return null}}getActiveCredentials(){let t=this.getActiveProfile();if(!t)return{credentials:null,profile:null,env:null};let i=this.getDefaultEnv();return{credentials:this.loadCredentials(t,i),profile:t,env:i}}saveBasicAuth(t,i,r){this.writeSecure(this.basicAuthPath(t,i),r)}loadBasicAuth(t,i){try{return JSON.parse(o(this.basicAuthPath(t,i),"utf-8"))}catch{return null}}deleteBasicAuth(t,i){try{s(this.basicAuthPath(t,i))}catch{}}resolveAuth(){let t=this.getActiveProfile();if(!t)return null;let i=this.getDefaultEnv(),r=this.loadBasicAuth(t,i);return r?{method:"basic",...r,profile:t,env:i}:this.loadCredentials(t,i)?{method:"oauth",profile:t,env:i}:null}listProfiles(){let t=[];try{for(let i of a(this.profilesDir)){let r=n(this.profilesDir,i);try{for(let e of a(r)){let c=n(r,e),v=l(n(c,"credentials")),p=l(n(c,"client.json")),y=l(n(c,"basic-auth"));(v||p||y)&&t.push({profile:i,env:e})}}catch{}}}catch{}return t}deleteProfile(t,i){try{s(this.credentialsPath(t,i))}catch{}if(this.getActiveProfile()===t){let r=this.readConfig();delete r.active_profile,this.writeConfig(r)}}deleteProfileFull(t,i){if(i){try{s(this.credentialsPath(t,i))}catch{}try{s(this.clientPath(t,i))}catch{}try{s(this.basicAuthPath(t,i))}catch{}try{s(this.profileConfigPath(t,i))}catch{}}else try{let r=n(this.profilesDir,t);for(let e of a(r)){try{s(n(r,e,"credentials"))}catch{}try{s(n(r,e,"client.json"))}catch{}try{s(n(r,e,"basic-auth"))}catch{}try{s(n(r,e,"profile-config.json"))}catch{}}}catch{}}};export{d as a};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
var u={prod:"https://kaneai-api.lambdatest.com/v16-controller/v1",stage:"https://auteur-stage-automind.lambdatestinternal.com/v16-controller/v1"};function T(e=process.env){return e.TESTMUAI_BASE_URL||u[e.TESTMUAI_ENV==="stage"?"stage":"prod"]}function E(e=process.env){return e.TESTMUAI_BASE_URL&&e.TESTMUAI_ENV!=="stage"?"note: TESTMUAI_BASE_URL is honored by context/design, but run/testmd ignore it unless TESTMUAI_ENV=stage":null}async function g(e,t=process.env,c=fetch){let o=T(t),a=`${o}/assurance/turn`,n={"Content-Type":"application/json"},i=e.TESTMUAI_BASIC_AUTH??t.TESTMUAI_BASIC_AUTH,l=e.TESTMUAI_API_KEY??t.TESTMUAI_API_KEY;i?n.Authorization=`Basic ${i}`:l&&(n.Authorization=`Bearer ${l}`);let s;try{s=(await c(a,{method:"POST",headers:n,body:"{}",signal:AbortSignal.timeout(8e3)})).status}catch(r){return{ok:!1,message:`error: cannot reach the controller at ${o} (${r instanceof Error?r.message:String(r)})
|
|
3
|
+
hint: for a local run, start the controller and export TESTMUAI_BASE_URL=http://localhost:8000/v1`}}return s===404?{ok:!1,message:`error: ${a} does not exist (404) \u2014 this controller does not serve the turn endpoint yet
|
|
4
|
+
hint: the endpoint is currently local-only. Run a local controller and export TESTMUAI_BASE_URL=http://localhost:8000/v1`}:s===401?{ok:!1,message:`error: the controller at ${o} rejected your credentials (401) \u2014 check your login/profile for TESTMUAI_ENV=${t.TESTMUAI_ENV??"prod"}`}:{ok:!0}}export{T as a,E as b,g as c};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as l}from"./chunk-RZ4F3BHX.js";import{a,c,e as o}from"./chunk-
|
|
2
|
+
import{a as l}from"./chunk-RZ4F3BHX.js";import{a,c,e as o}from"./chunk-HMGNPFXP.js";import{readFileSync as f,writeFileSync as d,mkdirSync as h,realpathSync as g}from"fs";import{join as y}from"path";var C="npm install -g @testmuai/kane-cli@latest",b="brew upgrade lambdatest/kane/kane-cli";function w(){try{let t=process.argv[1];if(t&&g(t).includes("/Cellar/"))return b}catch{}return C}var m=y(c,"version-check.json"),S=1440*60*1e3;function k(){try{let t=JSON.parse(f(m,"utf-8"));if(Date.now()-t.checkedAt<S)return t}catch{}return null}function A(t){try{h(c,{recursive:!0}),d(m,JSON.stringify({latest:t,checkedAt:Date.now()}))}catch{}}function u(t,r){let i=t.split(".").map(Number),n=r.split(".").map(Number);for(let s=0;s<3;s++){let e=(n[s]??0)-(i[s]??0);if(e!==0)return e}return 0}function p(t,r){let i=t.split(".").map(Number),n=r.split(".").map(Number);return(n[0]??0)!==(i[0]??0)?"major":(n[1]??0)!==(i[1]??0)?"minor":"patch"}async function j(){try{let t=k();if(t)return u(a,t.latest)>0?{current:a,latest:t.latest,severity:p(a,t.latest)}:null;let r=new AbortController,i=setTimeout(()=>r.abort(),5e3),n=await l(o,{headers:{Accept:"application/json"},signal:r.signal});if(clearTimeout(i),!n.ok)return null;let e=(await n.json())["dist-tags"]?.latest;return e?(A(e),u(a,e)>0?{current:a,latest:e,severity:p(a,e)}:null):null}catch{return null}}export{w as a,u as b,p as c,j as d};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{b as K}from"./chunk-QPZRHAYK.js";import{a as L,b,d as B}from"./chunk-GIRXJOJI.js";import{e as W,g as A}from"./chunk-B2PZAB7J.js";import{d as O,e as R,f as P,g as j,h as q}from"./chunk-IACKIGPX.js";var V=/^[a-z0-9][a-z0-9-]{1,63}$/;function z(p,d,e,t){if(!d)return{error:{code:"SUPERSEDE_TARGET_MISSING",detail:"supersede verdict needs a target (slug or cid)"}};let n=p.resolve(d);return n?n.superseded||t.has(n.cid)?{error:{code:"ALREADY_SUPERSEDED",detail:`${d} is already superseded (tip: ${n.tip})`}}:n.cid===e?{error:{code:"SELF_SUPERSEDE",detail:"a node cannot supersede itself"}}:{targetCid:n.cid}:{error:{code:"UNKNOWN_SUPERSEDE_TARGET",detail:`${d} names nothing in the graph`}}}function X(p,d,e,t,n=[]){if(!j(d)?.acyclic)return null;if(e===t)return{code:"EDGE_CYCLE",detail:`${d} ${e} \u2192 itself`};let i=_=>[...p.edgesFrom(_).filter(h=>h.type===d).map(h=>h.dst),...n.filter(h=>h.type===d&&h.src===_).map(h=>h.dst)],a=new Set,g=[t];for(;g.length>0;){let _=g.pop();if(_===e)return{code:"EDGE_CYCLE",detail:`${d} ${e} \u2192 ${t} closes a cycle`};a.has(_)||(a.add(_),g.push(...i(_)))}return null}function de(p,d,e,t){let m=j(d)?.cardinality;if(m!=="one-live-per-src"&&m!=="one-live-per-src-and-dst")return null;let i=p.edgesFrom(e).filter(a=>a.type===d&&!p.superseded.has(a.dst));if(i.length>0)return{code:"CARDINALITY_VIOLATION",detail:`${d} from ${e} already has a live edge (${i[0].ecid}) \u2014 supersede it first`};if(m==="one-live-per-src-and-dst"&&t!==void 0){let a=p.edgesInto(t).filter(g=>g.type===d&&!p.superseded.has(g.src));if(a.length>0)return{code:"CARDINALITY_VIOLATION",detail:`${d} onto ${t} already has a live edge (${a[0].ecid}) \u2014 strict 1:1, supersede it first`}}return null}var Y=new Set(["high","med","low"]);function ce(p,d,e){let t=[],n=e.mediaOf(p.source.source_cid),m=new Set;for(let i of p.use_cases){if(m.has(i.temp_ref)&&t.push({code:"DUP_TEMP_REF",detail:`duplicate temp_ref ${i.temp_ref}`}),m.add(i.temp_ref),(!i.title||!i.title.trim())&&t.push({code:"EMPTY_TITLE",detail:`${i.temp_ref}: title is empty`}),Y.has(i.risk)||t.push({code:"BAD_RISK",detail:`${i.temp_ref}: risk ${JSON.stringify(i.risk)} not in high|med|low`}),!i.cite||!i.cite.anchor)t.push({code:"MISSING_CITE",detail:`${i.temp_ref}: every derived use-case must carry a cite`});else for(let a of K(n,i.cite,d))t.push({code:a.code,detail:`${i.temp_ref}: ${a.detail}`});i.matches_existing&&!e.hasNode(i.matches_existing.cid)&&t.push({code:"UNKNOWN_MATCH",detail:`${i.temp_ref}: matches_existing ${i.matches_existing.cid} is not in the graph`});for(let[a,g]of(i.criteria??[]).entries())if((!g.text||!g.text.trim())&&t.push({code:"EMPTY_CRITERION",detail:`${i.temp_ref}.criteria[${a}]: text is empty`}),!g.cite||!g.cite.anchor)t.push({code:"MISSING_CITE",detail:`${i.temp_ref}.criteria[${a}]: every criterion carries its own cite (D3)`});else for(let _ of K(n,g.cite,d))t.push({code:_.code,detail:`${i.temp_ref}.criteria[${a}]: ${_.detail}`})}return t}function ae(p){let{contextDir:d,graph:e,proposal:t,proposalId:n,verdicts:m,by:i,allowStaleBasis:a,extractorVersion:g,autoName:_}=p,h=W(d);if(!a&&t.read_basis!==h)return{record:null,errors:[{code:"STALE_BASIS",detail:`proposal read_basis ${String(t.read_basis)} != latest ${String(h)}`}]};if(!e.hasNode(t.source.source_cid))return{record:null,errors:[{code:"MISSING_SOURCE_NODE",detail:`source ${t.source.source_id} (${t.source.source_cid}) is not a committed node \u2014 ingest it first`}]};let l=[],f=e.mediaOf(t.source.source_cid),k=new Set,v=[],E=[],C=[],I=[],w=[],x=[],U=new Set,H=new Set,F=(r,s,T)=>{let c=z(e,s.supersedeTarget,T,U);if("error"in c){l.push({code:c.error.code,detail:`${r}: ${c.error.detail}`});return}U.add(c.targetCid),w.push({kind:"node",old:c.targetCid,new:T,reason:s.reason??`superseded via review by ${i.id}`,by:i})};for(let r of t.use_cases){let s=m.get(r.temp_ref)??{resolution:"skipped"};if(k.has(r.temp_ref)&&l.push({code:"DUP_TEMP_REF",detail:`duplicate temp_ref ${r.temp_ref}`}),k.add(r.temp_ref),(!r.title||!r.title.trim())&&l.push({code:"EMPTY_TITLE",detail:`${r.temp_ref}: title is empty`}),Y.has(r.risk)||l.push({code:"BAD_RISK",detail:`${r.temp_ref}: risk ${JSON.stringify(r.risk)} not in high|med|low`}),f.format==="image"){if(r.cite?.anchor!=="img#whole"){l.push({code:r.cite?.anchor?"CITE_ANCHOR_INVALID":"MISSING_CITE",detail:`${r.temp_ref}: image cites are anchor-only (img#whole)`});continue}}else if(!r.cite||!r.cite.anchor||!r.cite.quote){l.push({code:"MISSING_CITE",detail:`${r.temp_ref}: every derived use-case must cite anchor+quote`});continue}s.resolution==="edited"&&s.edit&&(s.edit.title!==void 0&&!s.edit.title.trim()&&l.push({code:"EMPTY_TITLE",detail:`${r.temp_ref}: edited title is empty`}),s.edit.risk!==void 0&&!Y.has(s.edit.risk)&&l.push({code:"BAD_RISK",detail:`${r.temp_ref}: edited risk ${JSON.stringify(s.edit.risk)} invalid`}));let T=B({title:s.edit?.title??r.title,description:r.description,summary:s.edit?.summary??r.summary,actors:r.actors,value:r.value,risk:s.edit?.risk??r.risk,...r.criteria&&r.criteria.length>0?{criteria:r.criteria.map(o=>o.text)}:{}}),c=L("usecase",T),$={source_id:t.source.source_id,source_cid:t.source.source_cid,anchor:r.cite.anchor,...r.cite.quote?{quote:r.cite.quote}:{}};if(r.matches_existing&&!e.hasNode(r.matches_existing.cid)){l.push({code:"UNKNOWN_MATCH",detail:`${r.temp_ref}: matches_existing ${r.matches_existing.cid} is not in the graph`});continue}let N=r.matches_existing?.cid??(e.hasNode(c)?c:null);if(N&&e.superseded.has(N)){let o=e.tipOf(N);N=e.superseded.has(o)?null:o}if(N){if(r.changed&&(s.resolution==="approved"||s.resolution==="edited")){let o=r.updated;if(!o||Object.keys(o).length===0){l.push({code:"CHANGED_NEEDS_PAYLOAD",detail:`${r.temp_ref}: changed:true needs an updated{...} payload naming the moved fields`});continue}let u=e.getNode(N)?.content??{},S=B({title:s.edit?.title??o.title??String(u.title??r.title),...o.description??u.description?{description:o.description??u.description}:{},...s.edit?.summary??o.summary??u.summary?{summary:s.edit?.summary??o.summary??u.summary}:{},...o.actors??u.actors?{actors:o.actors??u.actors}:{},...o.value??u.value?{value:o.value??u.value}:{},risk:s.edit?.risk??o.risk??String(u.risk??r.risk),...o.criteria??u.criteria?{criteria:o.criteria??u.criteria}:{}}),y=L("usecase",S);if(y!==N){for(let M of P("usecase",S))l.push({code:M.code,detail:`${r.temp_ref}: ${M.detail}`});v.push({cid:y,label:O.USECASE,content:S}),E.push({ecid:b("DERIVES",$.source_cid,y,$),type:R.DERIVES,src:$.source_cid,dst:y,props:$}),F(r.temp_ref,{resolution:"supersede",supersedeTarget:N,reason:s.reason??`matches-but-changed: ${t.source.source_id} moved (${Object.keys(o).join(", ")})`},y),I.push({id:y,kind:"review-item",resolution:s.resolution,edit:s.resolution==="edited"?{...s.edit}:null,reason:null,by:i});continue}}s.resolution!=="rejected"&&(E.push({ecid:b("DERIVES",$.source_cid,N,$),type:R.DERIVES,src:$.source_cid,dst:N,props:$}),(s.resolution==="approved"||s.resolution==="edited"||s.resolution==="supersede")&&I.push({id:N,kind:"review-item",resolution:"approved",edit:null,reason:null,by:i}),s.resolution==="supersede"&&F(r.temp_ref,s,N));continue}for(let o of P("usecase",T))l.push({code:o.code,detail:`${r.temp_ref}: ${o.detail}`});for(let o of q(R.DERIVES,"source","usecase",$))l.push({code:o.code,detail:`${r.temp_ref}: ${o.detail}`});v.push({cid:c,label:O.USECASE,content:T}),E.push({ecid:b("DERIVES",$.source_cid,c,$),type:R.DERIVES,src:$.source_cid,dst:c,props:$});for(let o of r.criteria??[]){let u={source_id:t.source.source_id,source_cid:t.source.source_cid,anchor:o.cite.anchor,...o.cite.quote?{quote:o.cite.quote}:{}};u.anchor!==$.anchor&&E.push({ecid:b("DERIVES",u.source_cid,c,u),type:R.DERIVES,src:u.source_cid,dst:c,props:u})}for(let o of r.depends_on_hint??[]){let u=D=>D.toLowerCase().trim().replace(/\s+/g," "),S=null,y=e.resolve(o);if(y&&!y.superseded&&e.nodeLabel.get(y.cid)===O.USECASE&&(S=y.cid),!S){for(let{cid:D,content:G}of e.byLabel(O.USECASE))if(!e.superseded.has(D)&&u(String(G.title??""))===u(o)){S=D;break}}if(!S){let D=v.find(G=>G.label===O.USECASE&&u(String(G.content.title??""))===u(o));D&&(S=D.cid)}!S||S===c||X(e,R.DEPENDS_ON,c,S,C)||C.some(D=>D.src===c&&D.dst===S)||(E.push({ecid:b(R.DEPENDS_ON,c,S,{reason:"extract hint"}),type:R.DEPENDS_ON,src:c,dst:S,props:{reason:"extract hint"}}),C.push({src:c,dst:S,type:R.DEPENDS_ON}))}if((s.resolution==="approved"||s.resolution==="edited"||s.resolution==="supersede")&&e.superseded.get(c)===null&&!U.has(c)&&w.push({kind:"node",old:c,new:c,reason:`re-minted after tombstone via review by ${i.id}`,by:i}),_){let o=J("usecase",s.edit?.title??r.title,u=>H.has(u)||e.names.has(u)&&!e.superseded.has(e.names.get(u)));o!==null&&!e.nameOf.has(c)&&(H.add(o),x.push({cid:c,slug:o,by:i}))}s.resolution==="approved"?I.push({id:c,kind:"review-item",resolution:"approved",edit:null,reason:null,by:i}):s.resolution==="edited"?I.push({id:c,kind:"review-item",resolution:"edited",edit:{...s.edit},reason:null,by:i}):s.resolution==="rejected"?I.push({id:c,kind:"review-item",resolution:"rejected",edit:null,reason:s.reason??null,by:i}):s.resolution==="supersede"&&(I.push({id:c,kind:"review-item",resolution:"approved",edit:null,reason:s.reason??null,by:i}),F(r.temp_ref,s,c))}return l.length?{record:null,errors:l}:{record:A(d,{ts:new Date().toISOString(),proposal_id:n,...n!=null?{extraction_of:t.source.source_cid}:{},...n!=null&&g?{extractor_version:g}:{},nodes:v,edges:E,review:I,supersessions:w,...x.length>0?{names:x}:{},...p.judgements&&p.judgements.length>0?{judgements:p.judgements}:{},source_head_moves:{}},{expectPrev:h}).record,errors:null}}function le(p){let{contextDir:d,graph:e,verdicts:t,by:n}=p,m=[],i=[],a=[],g=[],_=new Set;for(let[l,f]of t){if(f.resolution==="skipped")continue;let k=e.resolve(l);if(!k){m.push({code:"UNKNOWN_NODE",detail:`${l} names nothing in the graph`});continue}if(k.superseded){m.push({code:"SUPERSEDED_TARGET",detail:`${l} is superseded \u2014 review the tip (${k.tip})`});continue}let v=k.cid;if(f.resolution==="approved")a.push({id:v,kind:"review-item",resolution:"approved",edit:null,reason:null,by:n});else if(f.resolution==="rejected")a.push({id:v,kind:"review-item",resolution:"rejected",edit:null,reason:f.reason??null,by:n});else if(f.resolution==="edited"){let E=e.getNode(v);if(!E){m.push({code:"UNKNOWN_NODE",detail:`${l}: node file unreadable`});continue}let C={...E.content,...f.edit?.title!==void 0?{title:f.edit.title}:{},...f.edit?.summary!==void 0?{summary:f.edit.summary}:{},...f.edit?.risk!==void 0?{risk:f.edit.risk}:{}},I=P(E.label,C);if(I.length>0){for(let x of I)m.push({code:x.code,detail:`${l}: ${x.detail}`});continue}let w=L(E.label,C);if(w===v){a.push({id:v,kind:"review-item",resolution:"approved",edit:null,reason:null,by:n});continue}i.push({cid:w,label:E.label,content:C}),_.add(v),g.push({kind:"node",old:v,new:w,reason:f.reason??"edited in review",by:n}),a.push({id:w,kind:"review-item",resolution:"edited",edit:{...f.edit},reason:null,by:n})}else if(f.resolution==="supersede"){let E=z(e,f.supersedeTarget,v,_);if("error"in E){m.push({code:E.error.code,detail:`${l}: ${E.error.detail}`});continue}_.add(E.targetCid),g.push({kind:"node",old:E.targetCid,new:v,reason:f.reason??`superseded via review by ${n.id}`,by:n}),a.push({id:v,kind:"review-item",resolution:"approved",edit:null,reason:f.reason??null,by:n})}}return m.length?{record:null,errors:m}:a.length===0&&g.length===0?{record:null,errors:[{code:"NO_VERDICTS",detail:"every item was skipped \u2014 nothing to commit"}]}:{record:A(d,{ts:new Date().toISOString(),proposal_id:null,nodes:i,edges:[],review:a,supersessions:g,source_head_moves:{}},{expectPrev:e.latestHash}).record,errors:null}}function ue(p){let{contextDir:d,graph:e,assignments:t,by:n}=p,m=[],i=[],a=new Set;for(let{ref:_,slug:h}of t){if(!V.test(h)){m.push({code:"BAD_SLUG",detail:`${JSON.stringify(h)} \u2014 slugs are kebab-case ${String(V)}`});continue}let l=e.resolve(_);if(!l){m.push({code:"UNKNOWN_REF",detail:`${_} names nothing in the graph`});continue}if(l.superseded){m.push({code:"SUPERSEDED_TARGET",detail:`${_} is superseded \u2014 name the tip instead (${l.tip})`});continue}let f=e.names.get(h);if(f!==void 0&&!e.superseded.has(f)&&f!==l.cid||a.has(h)){m.push({code:"SLUG_TAKEN",detail:`${h} already names ${f??"another node in this record"}`});continue}a.add(h),i.push({cid:l.cid,slug:h,by:n})}return m.length?{record:null,errors:m}:i.length===0?{record:null,errors:[{code:"NO_ASSIGNMENTS",detail:"nothing to name"}]}:{record:A(d,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[],names:i,source_head_moves:{}},{expectPrev:e.latestHash}).record,errors:null}}function pe(p){let{contextDir:d,graph:e,sourceId:t,reason:n,by:m}=p,i=e.heads.get(t);return i===void 0?{record:null,errors:[{code:"UNKNOWN_SOURCE",detail:`no source ${t} in the graph`}]}:i===null?{record:null,errors:[{code:"ALREADY_RETIRED",detail:`source ${t} is already retired`}]}:{record:A(d,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[{kind:"node",old:i,new:null,reason:n??`retired source ${t}`,by:m}],source_head_moves:{[t]:null},names:[]},{expectPrev:e.latestHash}).record,errors:null}}function Q(p,d){let e=p.toLowerCase().trim().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");if(e.length>60){let n=e.lastIndexOf("-",60);e=(n>0?e.slice(0,n):e.slice(0,60)).replace(/-+$/g,"")}if(!V.test(e))return null;let t=e;for(let n=2;d(t);n++)t=`${e}-${n}`;return V.test(t)?t:null}var Z={source:"src",usecase:"uc",scenario:"sc",ac:"ac",test:"t",gap:"gap",stylenote:"sty"};function J(p,d,e){let t=Z[p];return Q(t?`${t} ${d}`:d,e)}export{Z as a,J as b,X as c,de as d,ce as e,ae as f,le as g,ue as h,pe as i};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as S}from"./chunk-SB6MBQKR.js";import{x as o}from"./chunk-HMGNPFXP.js";import{a as R}from"./chunk-HCBYKLMW.js";import{a as y,b as c,j as x}from"./chunk-C44QQJR4.js";import{a as w}from"./chunk-6YGTRKDT.js";import{e as b}from"./chunk-UR6MHSHU.js";var k=b(w(),1);var i=b(R(),1);function A(e){let t=e.decisions.filter(r=>r.kind==="replay").length,l=e.decisions.filter(r=>r.kind==="author").length,p=e.outcomes.filter(r=>r.status==="passed").length,d=e.outcomes.filter(r=>r.status==="failed").length,f=e.outcomes.filter(r=>r.status==="skipped").length,a=o.green,n;e.cancelled||e.overallStatus==="interrupted"?(a=o.orange,n="CANCELLED"):e.overallStatus==="failed"?(a=o.red,n="FAILED"):n="PASSED";let s=`${n} \xB7 ${e.durationS}s \xB7 ${e.outcomes.length} steps (${p} passed, ${d} failed, ${f} skipped)`,T=`${t} replay \xB7 ${l} author`,C=e.retryTriggered,_="yes \u2014 run recovered after a replay miss",u,h=o.dim;if(e.cancelled)u="\u2013 not committed (cancellation)";else if(e.overallStatus==="failed")u="\u2013 not committed (run failed)",h=o.red;else if(!e.shouldCommit)e.isFirstRun?u="\u2013 not committed (first run skipped commit)":e.lockHeld?u="\u2013 not committed":u="\u2013 not committed (readonly fallback / no lock)";else{let r=e.uploadResult?.testcaseId;u=r?`\u2713 pushed (testcase=${r})`:"\u2713 pushed",h=o.green}let v=e.shouldReplaceLocalOutput?"output dir replaced":e.anyAuthorStepRan?"untouched (cancellation or no replace)":"untouched (replay-only)",m,g=o.dim;return e.shouldUploadArtifacts?e.uploadResult?.success?(m="\u2713 TMS",g=o.green):e.uploadResult?(m=`\u2717 failed${e.uploadResult.error?`: ${e.uploadResult.error}`:""}`,g=o.red):m="\u2013 not run":m="\u2013 skipped (--local or no auth)",{resultLine:{color:a,text:s},breakdown:T,showRetries:C,retriesText:_,commitText:u,commitColor:h,artifactsText:v,uploadText:m,uploadColor:g}}function O(e){let t=e.decisions.filter(s=>s.kind==="replay").length,l=e.decisions.filter(s=>s.kind==="author").length,p=e.outcomes.filter(s=>s.status==="passed").length,d=e.outcomes.filter(s=>s.status==="failed").length,f=e.outcomes.filter(s=>s.status==="skipped").length,a,n=!1;return e.cancelled?a="cancellation":e.overallStatus==="failed"?a="run_failed":e.shouldCommit&&e.uploadResult?.testcaseId?(a="ok",n=!0):!e.shouldCommit&&!e.lockHeld&&!e.isFirstRun?a="readonly_fallback":a="not_committed",{type:"test_md_summary",overall_status:e.overallStatus,duration_s:e.durationS,steps:{total:e.outcomes.length,passed:p,failed:d,skipped:f,replay_decisions:t,author_decisions:l},retries:{triggered:e.retryTriggered},commit:{committed:n,reason:a,...e.uploadResult?.testcaseId?{testcase_id:e.uploadResult.testcaseId}:{}},artifacts:{replaced:e.shouldReplaceLocalOutput},upload:{performed:e.shouldUploadArtifacts,...e.uploadResult?{succeeded:!!e.uploadResult.success}:{}},...e.shareUrl?{share_url:e.shareUrl}:{},cancelled:e.cancelled,...e.imports&&e.imports.length>0?{imports:e.imports}:{}}}function D({data:e}){let t=A(e),l=[{label:"result",value:(0,i.jsx)(c,{color:t.resultLine.color,bold:!0,children:t.resultLine.text})},{label:"breakdown",value:(0,i.jsx)(c,{color:o.dim,children:t.breakdown})}];return t.showRetries&&l.push({label:"retries",value:(0,i.jsx)(c,{color:o.orange,children:t.retriesText})}),l.push({label:"commit",value:(0,i.jsx)(c,{color:t.commitColor,children:t.commitText})}),l.push({label:"artifacts",value:(0,i.jsx)(c,{color:o.dim,children:t.artifactsText})}),l.push({label:"upload",value:(0,i.jsx)(c,{color:t.uploadColor,children:t.uploadText})}),(0,i.jsx)(S,{title:"Run summary",titleColor:"#ff9500",rows:l})}function I({data:e}){let{exit:t}=x();return(0,k.useEffect)(()=>{let l=setTimeout(()=>t(),50);return()=>clearTimeout(l)},[t]),(0,i.jsx)(y,{flexDirection:"column",children:(0,i.jsx)(D,{data:e})})}export{A as a,O as b,D as c,I as d};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as s}from"./chunk-6YGTRKDT.js";import{e as o}from"./chunk-UR6MHSHU.js";var r=o(s(),1);function c(n,e){let t=(0,r.useRef)(n);t.current=n,(0,r.useEffect)(()=>{if(e===null)return;let u=setInterval(()=>t.current(),e);return()=>clearInterval(u)},[e])}export{c as a};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
var n={graph_search_similar:"search graph",graph_get_node:"read node",graph_get_edges:"read edges",graph_match_by_type:"match by type",graph_find_by_provenance:"trace provenance",graph_stale_nodes:"check stale",ask_user:"ask",finalize_proposal:"propose use-cases",chat_turn:"apply changes",read_image:"read image",source_read:"read source",source_grep:"search source",finalize_design:"propose design",expand_bva:"expand boundaries",covering_array:"combine classes",dedupe_candidates:"dedupe",budget_cut:"trim to budget"};function s(e){let r=n[e.name],t=e.status==="error"||e.status==="aborted"?" \u2717":"",a=e.detail?` \u2014 ${e.detail}`:"";return r?`\u2692 ${r}${a}${t}`:`\u2692 working\u2026${a}${t}`}function o(e){return s(e).replace(/^\S+ /,"")}export{s as a,o as b};
|