@testmuai/kane-cli 0.6.9 → 0.6.10
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-PLXUGRBV.js +8 -0
- package/dist/{ChromeProfilePicker-FSZB4SZR.js → ChromeProfilePicker-IDKFTIHW.js} +1 -1
- package/dist/{CliFeedbackPrompt-WNMDCIHZ.js → CliFeedbackPrompt-SZOU5FGZ.js} +1 -1
- package/dist/{CliUploadProgress-H4265KXU.js → CliUploadProgress-W2FC33Q4.js} +1 -1
- package/dist/{ConfigView-XCUZ44SP.js → ConfigView-JB2NSZ2N.js} +1 -1
- package/dist/EvidenceViewOffer-5YST67KY.js +2 -0
- package/dist/{FolderPicker-S2XVCPYN.js → FolderPicker-SPNZESAR.js} +1 -1
- package/dist/{HelpView-OPKRGNNM.js → HelpView-XBDXXHFB.js} +1 -1
- package/dist/{InfoBox-TW2PGJK5.js → InfoBox-2T7GYSFT.js} +1 -1
- package/dist/{LinksBox-66M7XP5Y.js → LinksBox-2NNZZDQT.js} +1 -1
- package/dist/{ProfilesView-T2CFQPR5.js → ProfilesView-KJZVGU5B.js} +1 -1
- package/dist/{ProjectPicker-7ALN52CY.js → ProjectPicker-AUTZNEPE.js} +1 -1
- package/dist/{SaveSessionPrompt-HM3F6QML.js → SaveSessionPrompt-LHLSJQSQ.js} +1 -1
- package/dist/SingleShotApp-Z2HGSZXG.js +2 -0
- package/dist/{SummaryBox-BQZEGOIV.js → SummaryBox-5G7WULUN.js} +1 -1
- package/dist/TestMdRunView-B4IZHRDT.js +2 -0
- package/dist/{WhoamiView-722MBPSG.js → WhoamiView-XNWBDMQR.js} +1 -1
- package/dist/bind-FEOGBJ2O.js +6 -0
- package/dist/bootstrap-T6DSUI34.js +2 -0
- package/dist/{bridge-V4FF5QPK.js → bridge-WMGH3O3B.js} +1 -1
- package/dist/{changelog-KMYZW5MI.js → changelog-AGFDNTTW.js} +1 -1
- package/dist/{chat-committer-MWZ4JQMM.js → chat-committer-4ENYH3RC.js} +1 -1
- package/dist/{chat-controller-YX5A7R52.js → chat-controller-M4QYRH7Y.js} +1 -1
- package/dist/chunk-26H3PDVN.js +4 -0
- package/dist/{chunk-MXLXKHW4.js → chunk-2H3XNXL3.js} +1 -1
- package/dist/chunk-2KS2YRIS.js +2 -0
- package/dist/{chunk-4BAL4OGF.js → chunk-2OQLMW3F.js} +1 -1
- package/dist/chunk-2XMJ6YAE.js +2 -0
- package/dist/{chunk-NIKA2V6B.js → chunk-3KN2UW37.js} +1 -1
- package/dist/{chunk-CLYG26XV.js → chunk-4OSW2WEN.js} +35 -35
- package/dist/chunk-5EOX4MEY.js +2 -0
- package/dist/{chunk-U5QTE3WX.js → chunk-5F7PU5AJ.js} +1 -1
- package/dist/{chunk-T2ULEJK7.js → chunk-5LTUYXMP.js} +2 -2
- package/dist/{chunk-T4WZWKIU.js → chunk-5Z7GAIPP.js} +2 -2
- package/dist/{chunk-ZA4GR5R7.js → chunk-6CGNLFSN.js} +1 -1
- package/dist/{chunk-FVM7TWKT.js → chunk-6JTEWZ75.js} +1 -1
- package/dist/{chunk-QZNUTCSD.js → chunk-6MTVGARW.js} +1 -1
- package/dist/{chunk-3YI4QRXF.js → chunk-6NWPK2MS.js} +1 -1
- package/dist/{chunk-4FH2KFRT.js → chunk-6ZJ7ZFEX.js} +1 -1
- package/dist/{chunk-345PY4SZ.js → chunk-76I6NJBX.js} +1 -1
- package/dist/{chunk-R65HNFRB.js → chunk-7APDXIKI.js} +1 -1
- package/dist/{chunk-TFVMSEIA.js → chunk-7C6G4V43.js} +1 -1
- package/dist/{chunk-QB4IOM3X.js → chunk-7LWXIRI3.js} +1 -1
- package/dist/{chunk-L3HG5ONB.js → chunk-A46NBRAP.js} +1 -1
- package/dist/{chunk-JHAGEBKE.js → chunk-AYDUHTPA.js} +1 -1
- package/dist/chunk-BKM2LWU2.js +3 -0
- package/dist/{chunk-OAEZKYYQ.js → chunk-C3OGWCII.js} +2 -2
- package/dist/{chunk-LMMOR7CR.js → chunk-DHF3VO2R.js} +1 -1
- package/dist/{chunk-IWBPV3VS.js → chunk-ECFOND7B.js} +1 -1
- package/dist/chunk-EV3EHXEI.js +4 -0
- package/dist/{chunk-OV2W7KBC.js → chunk-FEF75YKV.js} +1 -1
- package/dist/chunk-FHKDTM5L.js +6 -0
- package/dist/{chunk-LRA3V5GY.js → chunk-FYDBD7Q4.js} +1 -1
- package/dist/{chunk-TACPTX64.js → chunk-GWJ76BLF.js} +2 -2
- package/dist/chunk-J44RN3FB.js +2 -0
- package/dist/{chunk-GNNMHYWE.js → chunk-J4WS2SXT.js} +1 -1
- package/dist/chunk-JHHMXU76.js +2 -0
- package/dist/chunk-JHPZXF77.js +14 -0
- package/dist/chunk-JTCW76YG.js +12 -0
- package/dist/{chunk-K5JGCJ2K.js → chunk-K7USHLVZ.js} +4 -4
- package/dist/{chunk-EASTDHNW.js → chunk-KA7Q5IIC.js} +1 -1
- package/dist/chunk-KFUZYEHX.js +2 -0
- package/dist/chunk-KK7DYHK6.js +347 -0
- package/dist/{chunk-GBYH35H5.js → chunk-LPBAQQ7E.js} +1 -1
- package/dist/{chunk-AU7WQ2O5.js → chunk-MJF3USZF.js} +1 -1
- package/dist/{chunk-FFHBQK5N.js → chunk-MSK7AC4E.js} +2 -2
- package/dist/{chunk-O4HWPV67.js → chunk-OESHJ4J2.js} +2 -2
- package/dist/chunk-OIYGGEUL.js +6 -0
- package/dist/chunk-Q2F5QB2W.js +2 -0
- package/dist/{chunk-EWLLPUP4.js → chunk-QGBLC4ZJ.js} +1 -1
- package/dist/chunk-QPT4ERGK.js +47 -0
- package/dist/{chunk-QZJID3OZ.js → chunk-RH4GCEFX.js} +1 -1
- package/dist/{chunk-U6TLLYRG.js → chunk-RLZA4VJT.js} +1 -1
- package/dist/{chunk-FT4G3QGO.js → chunk-SACSQY3Q.js} +1 -1
- package/dist/{chunk-LEA6IHXC.js → chunk-SDRFTIRU.js} +1 -1
- package/dist/{chunk-SHAA6FOD.js → chunk-SKRZN25J.js} +1 -1
- package/dist/chunk-TLL7KFLY.js +6 -0
- package/dist/{chunk-QTHITA73.js → chunk-TW3K2DKB.js} +1 -1
- package/dist/chunk-VOHQA2SP.js +2 -0
- package/dist/{chunk-QM3XF5TW.js → chunk-VYQMCLKG.js} +1 -1
- package/dist/{chunk-DKERZJYF.js → chunk-W54W762O.js} +1 -1
- package/dist/{chunk-YY6WPFMT.js → chunk-WSZ7IENQ.js} +3 -3
- package/dist/{chunk-7BCZLDNX.js → chunk-WV42KKEU.js} +1 -1
- package/dist/chunk-XY5KWIRF.js +3 -0
- package/dist/{chunk-RLICAFFQ.js → chunk-XZW3TBOV.js} +1 -1
- package/dist/chunk-Y5RNCJAN.js +19 -0
- package/dist/{chunk-DPOES6G3.js → chunk-YJIESLN6.js} +1 -1
- package/dist/{chunk-G6F2BOFT.js → chunk-YOFKDRY4.js} +1 -1
- package/dist/{chunk-F42YVALT.js → chunk-YVXC46DY.js} +1 -1
- package/dist/{chunk-P4SE6YON.js → chunk-Z25FKS3Y.js} +1 -1
- package/dist/{chunk-RQM3DUSB.js → chunk-ZFFRHV5U.js} +1 -1
- package/dist/chunk-ZPENY2Q3.js +4 -0
- package/dist/{config-Z4OS3HEE.js → config-7WI6TBDV.js} +1 -1
- package/dist/{cover-cmd-L2HSVDLH.js → cover-cmd-J2ZJUL6P.js} +1 -1
- package/dist/{credentials-TNEVAUHI.js → credentials-MX5ABDPF.js} +1 -1
- package/dist/docx-convert-IAX54REO.js +2 -0
- package/dist/{dossier-ZHSHATVU.js → dossier-UVTGCL7T.js} +1 -1
- package/dist/{evidence-MA3LDBWG.js → evidence-TZYIOSPG.js} +1 -1
- package/dist/{evolve-cmd-DTW4EOXM.js → evolve-cmd-IDS5ZIUY.js} +1 -1
- package/dist/exit-manager-MXUD7GQ7.js +2 -0
- package/dist/{explain-cmd-E366QTAD.js → explain-cmd-NPKN63XL.js} +1 -1
- package/dist/{explain-cmd-327F6ESA.js → explain-cmd-R3WCNR2A.js} +1 -1
- package/dist/extract-bind-CISTQFI3.js +8 -0
- package/dist/{extract-cmd-LFVMG6UE.js → extract-cmd-HG3DHHSL.js} +1 -1
- package/dist/{gaps-cmd-IAEXXESW.js → gaps-cmd-XLVUFSTY.js} +1 -1
- package/dist/{generate-headless-TYQRYQKJ.js → generate-headless-4VJMAHCU.js} +2 -2
- package/dist/index.js +67 -65
- package/dist/ingest-UAIKHOB4.js +2 -0
- package/dist/ingest-cmd-7HJLRLMG.js +4 -0
- package/dist/interactive-bind-IXFRXBBL.js +10 -0
- package/dist/{lifecycle-cmd-KZOC4WDW.js → lifecycle-cmd-VTFZ3TF2.js} +1 -1
- package/dist/{list-cmd-6X5U46RD.js → list-cmd-KXL4WQII.js} +1 -1
- package/dist/list-commands-BJYJ34HT.js +2 -0
- package/dist/{logical-ids-RFGWBVML.js → logical-ids-LMBNMENR.js} +1 -1
- package/dist/login-flow-KW5T7WRJ.js +2 -0
- package/dist/pdf-convert-S7VYE6AV.js +2 -0
- package/dist/{persist-recorded-session-RAL7UCQT.js → persist-recorded-session-QR7RVAXR.js} +1 -1
- package/dist/{pipeline-PLI5WQKX.js → pipeline-L6V24KGN.js} +1 -1
- package/dist/{readmodel-V3DVL6NP.js → readmodel-AGAPK2AI.js} +1 -1
- package/dist/reconcile-cmd-E2MMQM7Z.js +2 -0
- package/dist/{recording-banner-MBR3Q7VD.js → recording-banner-QAIKLV6E.js} +1 -1
- package/dist/{require-project-folder-KE7XOOFN.js → require-project-folder-OANMHOVE.js} +1 -1
- package/dist/{review-cmd-XVWPSWU2.js → review-cmd-2FCGP55U.js} +1 -1
- package/dist/run-FYJZCWYS.js +2 -0
- package/dist/run-IOBBB7GN.js +2 -0
- package/dist/{run-test-md-ZCAWNP35.js → run-test-md-5E53A5DT.js} +2 -2
- package/dist/{sessions-cmd-STHKGDX4.js → sessions-cmd-DTQYDZNT.js} +1 -1
- package/dist/{skill-installer-H5DPJJFW.js → skill-installer-LGEIIQ4Q.js} +1 -1
- package/dist/{spawner-C6B5J73J.js → spawner-6FHAXNOA.js} +1 -1
- package/dist/store-id-EOSGEKVK.js +2 -0
- package/dist/tcg-generate-CEDA6DZJ.js +2 -0
- package/dist/testmd-actions-2OFH5GRJ.js +2 -0
- package/dist/token-refresh-R75DGT4X.js +2 -0
- package/dist/{validate-basic-VBPGGHES.js → validate-basic-Z46MAH2G.js} +1 -1
- package/dist/{version-check-YPRCQJ7E.js → version-check-64M5JQQ7.js} +1 -1
- package/dist/{view-cmd-G4PGJRQH.js → view-cmd-PG66UQK7.js} +1 -1
- package/dist/walk-session-7PM2RXEF.js +2 -0
- package/package.json +10 -6
- package/dist/ChatSurface-B2QJYKV4.js +0 -8
- package/dist/EvidenceViewOffer-5TJCRM2T.js +0 -2
- package/dist/SingleShotApp-YQYS6HTB.js +0 -2
- package/dist/TestMdRunView-7CL3PM3J.js +0 -2
- package/dist/bind-HNI5LCNK.js +0 -6
- package/dist/chunk-2Z5MSC23.js +0 -12
- package/dist/chunk-4CKZAGBD.js +0 -2
- package/dist/chunk-4GXOBABK.js +0 -4
- package/dist/chunk-E4EHWO3J.js +0 -4
- package/dist/chunk-FXPPQL4D.js +0 -6
- package/dist/chunk-M5JQXOCE.js +0 -12
- package/dist/chunk-RHNKYNNZ.js +0 -6
- package/dist/chunk-SORKKW7B.js +0 -6
- package/dist/chunk-VCYVSKPM.js +0 -2
- package/dist/chunk-VXLOEM2U.js +0 -347
- package/dist/chunk-XTO236AL.js +0 -14
- package/dist/chunk-XWIN3S7O.js +0 -4
- package/dist/exit-manager-VCSIUYBR.js +0 -2
- package/dist/extract-bind-DZLG4GUE.js +0 -5
- package/dist/ingest-CBQAXVH6.js +0 -2
- package/dist/ingest-cmd-JN6PLDE3.js +0 -3
- package/dist/interactive-bind-QEBWUJCN.js +0 -7
- package/dist/list-commands-BU2MSYRH.js +0 -2
- package/dist/login-flow-4L62GWLT.js +0 -2
- package/dist/pdf-convert-KYXI4FU4.js +0 -2
- package/dist/reconcile-cmd-UXY36ROJ.js +0 -2
- package/dist/run-5DQSL5KH.js +0 -2
- package/dist/run-B7BRNC3X.js +0 -2
- package/dist/tcg-generate-DIMZXAV3.js +0 -2
- package/dist/testmd-actions-X6XCV53D.js +0 -2
- package/dist/token-refresh-7PAPCMQK.js +0 -2
- package/dist/walk-session-GWOP27TX.js +0 -2
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as Rt,b as ce,c as Bt,d as Xe}from"./chunk-KFUZYEHX.js";import{a as Ct}from"./chunk-7C6G4V43.js";import{a as Ae}from"./chunk-26H3PDVN.js";import{b as It,c as St}from"./chunk-GG43HSU2.js";import"./chunk-OSALXGD4.js";import{a as wt,b as $t,c as vt}from"./chunk-TLL7KFLY.js";import{a as kt}from"./chunk-5Y2G4NC7.js";import"./chunk-NVGBE2DR.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import{a as Tt}from"./chunk-YCCUBQY4.js";import{a as bt}from"./chunk-6NWPK2MS.js";import{b as yt}from"./chunk-DFS4RMVP.js";import{y as r}from"./chunk-2KS2YRIS.js";import{a as j}from"./chunk-HCBYKLMW.js";import{a as I,b as n,k as Be}from"./chunk-C44QQJR4.js";import{a as kn}from"./chunk-6YGTRKDT.js";import{e as V}from"./chunk-UR6MHSHU.js";var b=V(kn(),1);var a=V(j(),1),bn=60,yn=100;function Ge(e,i){let s=e.options.length,c=s,d=e.multi_select?c++:null,g=e.allow_free_text?c++:null,u=i?c++:null;return{optionCount:s,doneIdx:d,freeIdx:g,batchIdx:u,maxSel:c-1}}var Tn="\xA0",wn={high:{text:`\u203C${Tn}high`,color:r.red},med:{text:"med",color:"yellow"},low:{text:"low",color:r.dim}};function $n(e){let i=(e.header??e.text.split(/\s+/).slice(0,3).join(" ")).trim();return i.length>16?`${i.slice(0,15)}\u2026`:i}function vn(e,i,s){let c=m=>e[m].length+6,d=c(i),g=i,u=i;for(;;){let m=u+1<e.length?c(u+1):1/0,h=g-1>=0?c(g-1):1/0;if(m===1/0&&h===1/0)break;if(m<=h){if(d+m>s)break;d+=m,u+=1}else{if(d+h>s)break;d+=h,g-=1}}return{lo:g,hi:u}}function At({batch:e,qView:i,sel:s=0,focused:c=!1,freeText:d=null,multiSelFor:g}){let{stdout:u}=Be(),m=u?.columns??80,h=m<bn,S=Math.min(m-1,yn),f=Math.max(0,Math.min(e.questions.length-1,i??(e.cursor<0?0:e.cursor))),p=e.questions[f],_=e.resolution[f],A=e.resolution.filter(F=>!F).length,w=e.questions.length-A,R=Ae(e),C=Ge(p,R!==""),v=g?g(f):[],E=wn[p.risk],x=F=>c&&s===F?(0,a.jsx)(n,{color:r.assuranceAccent,children:"\u276F"}):" ",W=`? the agent needs ${A===1?"one answer":`${A} answers`}`,L=e.questions.length>1?` \xB7 ${f+1} of ${e.questions.length} \xB7 ${w} answered`:"",P=(0,a.jsxs)(I,{flexDirection:"column",children:[(0,a.jsx)(I,{paddingLeft:2,children:(0,a.jsxs)(n,{bold:!0,children:[p.text,E?(0,a.jsx)(n,{color:E.color,bold:!1,children:` ${E.text}`}):null]})}),(0,a.jsx)(I,{paddingLeft:2,children:(0,a.jsx)(n,{color:r.dim,children:p.rationale})}),(0,a.jsx)(n,{children:" "}),p.options.map((F,O)=>{let H=c&&s===O;return(0,a.jsxs)(I,{flexDirection:"column",children:[(0,a.jsxs)(n,{children:[x(O)," ",p.multi_select?(0,a.jsx)(n,{color:v.includes(O)?r.green:r.dim,children:v.includes(O)?"[x] ":"[ ] "}):null,(0,a.jsx)(n,{color:H?r.assuranceAccent:void 0,children:`${O+1}. ${F.label}`}),O===p.recommended_index?(0,a.jsx)(n,{color:r.dim,children:" (recommended)"}):null,_?.selected_index===O?(0,a.jsx)(n,{color:r.dim,children:" (current)"}):null]}),F.detail?(0,a.jsx)(I,{paddingLeft:5,children:(0,a.jsx)(n,{color:r.dim,children:F.detail})}):null]},`o-${O}`)}),p.multi_select&&C.doneIdx!=null?(0,a.jsxs)(n,{children:[x(C.doneIdx)," ",(0,a.jsx)(n,{color:r.green,children:"\u2714"}),(0,a.jsx)(n,{color:c&&s===C.doneIdx?r.assuranceAccent:void 0,children:" done \u2014 confirm selection"})]}):null,p.allow_free_text?(0,a.jsx)(n,{children:" "}):null,p.allow_free_text?d?(0,a.jsxs)(I,{children:[(0,a.jsxs)(n,{children:[(0,a.jsx)(n,{color:r.assuranceAccent,children:"\u276F"})," ",(0,a.jsx)(n,{color:r.dim,children:"\u270E "})]}),(0,a.jsx)(Tt,{value:d.value,onChange:d.onChange,onSubmit:d.onSubmit,onCancel:d.onCancel,placeholder:"Tell me what to do"})]}):(0,a.jsxs)(n,{children:[C.freeIdx!=null?x(C.freeIdx):" "," ",(0,a.jsx)(n,{color:c&&C.freeIdx!=null&&s===C.freeIdx?r.assuranceAccent:r.dim,children:"\u270E Tell me what to do"})]}):null]}),de=R!==""?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n,{children:" "}),(0,a.jsxs)(n,{children:[c&&C.batchIdx!=null&&s===C.batchIdx?(0,a.jsx)(n,{color:r.assuranceAccent,children:"\u276F"}):" "," ",(0,a.jsx)(n,{color:r.assuranceAccent,children:"\xBB"}),(0,a.jsx)(n,{bold:!0,color:c&&C.batchIdx!=null&&s===C.batchIdx?r.assuranceAccent:void 0,children:" Go with recommendations"}),A>=5?(0,a.jsx)(n,{color:r.dim,children:` \u2014 resolves all ${A} open`}):null,(0,a.jsx)(n,{color:r.dim,children:" (tab)"})]})]}):null;if(h)return(0,a.jsxs)(I,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,a.jsx)(n,{color:r.assuranceAccent,bold:!0,children:W}),e.questions.length>1?(0,a.jsx)(n,{color:r.dim,children:L.replace(/^ · /,"")}):null,(0,a.jsx)(n,{children:" "}),P,de,(0,a.jsx)(I,{paddingLeft:2,children:(0,a.jsx)(n,{color:r.muted,children:"\u2191\u2193 \u23CE \xB7 \u2190 \u2192 questions \xB7 esc back"})})]});let Le=`\u2500\u2500 ${W}${L} `,Oe=Math.max(2,S-Le.length),me="\u2191\u2193 select \xB7 \u23CE confirm \xB7 \u2190 \u2192 questions \xB7 type = your words \xB7 esc back",ge=`\u2500\u2500 ${me} `,Z=Math.max(2,S-ge.length),K=e.questions.map(F=>$n(F)),D=e.questions.length>1?vn(K,f,S-8):null;return(0,a.jsxs)(I,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,a.jsxs)(n,{color:r.assuranceAccent,children:["\u2500\u2500 ",(0,a.jsx)(n,{bold:!0,children:W}),L?(0,a.jsx)(n,{color:r.dim,children:L}):null,` ${"\u2500".repeat(Oe)}`]}),D?(0,a.jsx)(I,{marginTop:1,children:(0,a.jsxs)(n,{children:[D.lo>0?(0,a.jsx)(n,{color:r.dim,children:"\u25C0 "}):" ",e.questions.slice(D.lo,D.hi+1).map((F,O)=>{let H=D.lo+O,Te=O>0?" ":"";return H===f?(0,a.jsxs)(n,{children:[Te,(0,a.jsx)(n,{backgroundColor:r.assuranceAccent,color:"#0d1117",bold:!0,children:` ${K[H]} `})]},F.id):(0,a.jsxs)(n,{children:[Te,e.resolution[H]?(0,a.jsxs)(n,{children:[(0,a.jsx)(n,{color:r.green,children:"\u2713 "}),(0,a.jsx)(n,{color:r.dim,children:K[H]})]}):(0,a.jsx)(n,{color:r.dim,children:`\u25CB ${K[H]}`})]},F.id)}),D.hi<e.questions.length-1?(0,a.jsx)(n,{color:r.dim,children:" \u25B6"}):null]})}):null,(0,a.jsx)(n,{children:" "}),P,de,(0,a.jsx)(n,{children:" "}),(0,a.jsxs)(n,{color:r.assuranceAccent,children:["\u2500\u2500 ",(0,a.jsx)(n,{color:r.muted,children:me}),` ${"\u2500".repeat(Z)}`]})]})}var M=V(j(),1),Dt={high:0,med:1,low:2},In={high:r.red,med:"yellow",low:r.dim};function Sn(e){return e.map((i,s)=>({r:i,i:s})).sort((i,s)=>(Dt[i.r.risk??"zz"]??3)-(Dt[s.r.risk??"zz"]??3)||i.i-s.i).map(({r:i})=>i)}var te=(e,i)=>e.length<=i?e:i<=1?"\u2026":`${e.slice(0,i-1)}\u2026`,De=(e,i)=>e+" ".repeat(Math.max(0,i-e.length));function Et({rows:e,width:i=120,badgeHeader:s="risk"}){if(e.length===0)return null;let c=Sn(e),d=v=>v.staged||!v.id?"(staged)":Ct(v.id),g=Math.max(2,...c.map(v=>d(v).length)),u=Math.max(s.length,...c.map(v=>(v.badge??"").length)),m=i>=96&&c.some(v=>v.summary),S=i-(m?13:10)-g-u,f=Math.max(...c.map(v=>Math.max(v.title.length,(v.marker??"").length)),5),p=Math.max(5,m?Math.min(f,Math.max(16,Math.floor(S*.5))):Math.min(f,S)),_=m?Math.max(7,S-p):0,A=(v,E,x,W)=>v+W.map(L=>`\u2500${"\u2500".repeat(L.length)}\u2500`).join(E)+x,w=(v,E,x,W)=>[De(te(v,g),g),De(te(E,p),p),De(te(x,u),u),...m?[De(te(W,_),_)]:[]],R=w("id","title",s,"summary"),C=[];C.push((0,M.jsx)(n,{color:r.dim,children:A("\u250C","\u252C","\u2510",R)},"t")),C.push((0,M.jsxs)(n,{children:[R.map((v,E)=>(0,M.jsxs)(n,{children:[(0,M.jsx)(n,{color:r.dim,children:E===0?"\u2502 ":" \u2502 "}),(0,M.jsx)(n,{bold:!0,children:v})]},E)),(0,M.jsx)(n,{color:r.dim,children:" \u2502"})]},"h")),C.push((0,M.jsx)(n,{color:r.dim,children:A("\u251C","\u253C","\u2524",R)},"m"));for(let[v,E]of c.entries()){let x=w(d(E),te(E.title,p),te(E.badge??"",u),te(E.summary??"",_)),W=E.badgeColor??In[E.badge??""]??r.dim;if(C.push((0,M.jsxs)(n,{children:[(0,M.jsx)(n,{color:r.dim,children:"\u2502 "}),(0,M.jsx)(n,{color:r.assuranceAccent,children:x[0]}),(0,M.jsx)(n,{color:r.dim,children:" \u2502 "}),x[1],(0,M.jsx)(n,{color:r.dim,children:" \u2502 "}),(0,M.jsx)(n,{color:W,children:x[2]}),m?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(n,{color:r.dim,children:" \u2502 "}),x[3]]}):null,(0,M.jsx)(n,{color:r.dim,children:" \u2502"})]},`r-${v}`)),E.marker){let L=w("",te(E.marker,p),"","");C.push((0,M.jsx)(n,{color:r.dim,children:`\u2502 ${L.join(" \u2502 ")} \u2502`},`mk-${v}`))}}return C.push((0,M.jsx)(n,{color:r.dim,children:A("\u2514","\u2534","\u2518",R)},"b")),(0,M.jsx)(M.Fragment,{children:C})}var Rn={"use-case":"use-cases",ac:"ACs",scenario:"scenarios",test:"tests",gap:"gaps"},Y=e=>Rn[e]??`${e}s`,Mt=e=>e==="ac"?"AC":e==="use-case"?"use-case":e,Je=e=>e.kind??"use-case",_t=e=>`${Je(e)}:${e.temp_ref}`;function Lt(e){let i=e,s=i.badge??e.risk??null,c=i.why??e.summary??e.description??null;return JSON.stringify([e.title,s,c,i.extra??null,e.depends_on_hint??null])}function Ot(e){return e.filter(i=>i.role==="agent"&&typeof i.turnIndex=="number"&&Array.isArray(i.items)&&i.items.length>0)}function re(e){let i=new Map,s=1;for(let g of Ot(e)){let u=new Set;for(let m of g.items){let h=_t(m);if(u.has(h))continue;u.add(h);let S=i.get(h);i.set(h,{num:S?.num??s++,ref:m.temp_ref,kind:Je(m),item:m,turnIndex:g.turnIndex,fingerprint:Lt(m)})}}let c=[...i.values()].sort((g,u)=>g.num-u.num),d=[];for(let g of c){let u=d.find(m=>m.kind===g.kind);u?u.count++:d.push({kind:g.kind,label:Y(g.kind),count:1})}return{entries:c,byRef:i,counts:d}}function qt(e,i){let c=Ot(e).find(w=>w.turnIndex===i);if(!c)return null;let d=e.filter(w=>w.role!=="agent"||typeof w.turnIndex!="number"||w.turnIndex<=i),g=re(d),u=re(e.filter(w=>w.role!=="agent"||typeof w.turnIndex!="number"||w.turnIndex<i)),m=[],h=new Map,S=new Map,f=new Map,p=new Set;for(let w of c.items){let R=_t(w);if(p.has(R))continue;p.add(R);let C=u.byRef.get(R),v=w.changed===!0,E=g.byRef.get(R).num,x=Je(w);if(C&&!v&&C.fingerprint===Lt(w)){h.set(x,(h.get(x)??0)+1);continue}let W=!!C||v,L=W?f:S;L.set(x,(L.get(x)??0)+1),m.push({item:w,num:E,updated:W})}let _=[...h.entries()].map(([w,R])=>({label:Y(w),count:R})),A=[...[...S.entries()].map(([w,R])=>`${R} new ${R===1?Mt(w):Y(w)}`),...[...f.entries()].map(([w,R])=>`${R} updated ${R===1?Mt(w):Y(w)}`)].join(" \xB7 ");return{fresh:m,unchanged:_,headerStats:A}}function Ye(e,i){let s=e.entries.filter(g=>g.turnIndex===i);if(s.length===0)return e;let c=new Map(s.map(g=>[g.ref,g])),d=[];for(let g of s){let u=d.find(m=>m.kind===g.kind);u?u.count+=1:d.push({kind:g.kind,label:Y(g.kind),count:1})}return{entries:s,byRef:c,counts:d}}var k=V(j(),1);function Cn(e){let i=e.form==="assumed"?" (flagged)":e.form==="deferred"?"":" (you)",s=e.note?` \u2014 ${e.note}`:"";return e.form==="deferred"?`\u21B3 deferred q${e.qNum} ${e.stub}${s}`:e.form==="changed"?`\u21B3 changed q${e.qNum} ${e.stub}: ${e.prev??"?"} \u2192 ${e.choice??"?"}${i}${s}`:`\u21B3 ${e.form} q${e.qNum} ${e.stub}: ${e.choice??"?"}${i}${s}`}var Bn=Math.min(process.stdout?.columns??100,120)-2;function Pt({block:e,annotations:i}){switch(e.kind){case"banner":return(0,k.jsx)(I,{marginTop:1,children:(0,k.jsx)(n,{color:r.dim,children:` \u2500\u2500 ${e.text} \u2500\u2500`})});case"user":return(0,k.jsxs)(I,{marginTop:1,children:[(0,k.jsx)(n,{color:r.orange,children:"\u276F "}),(0,k.jsx)(n,{children:e.text})]});case"note":return(0,k.jsx)(n,{color:r.dim,children:` ${e.text}`});case"agent":return(0,k.jsx)(I,{marginTop:1,children:(0,k.jsx)($t,{text:e.text,accent:r.assuranceAccent})});case"thinking":return(0,k.jsx)(I,{marginTop:1,children:(0,k.jsx)(n,{color:r.dim,children:` thought for ${(e.tookMs/1e3).toFixed(1)}s`})});case"tool":return(0,k.jsx)(n,{color:r.dim,children:` ${It({name:e.name,status:e.status==="ok"?"done":e.status,detail:e.detail})}`});case"usage":return(0,k.jsx)(n,{color:r.dim,children:` \xB7 ${e.credits.toFixed(1)} credits \u2014 total ${e.total.toFixed(1)}`});case"turn":{let s=i??null,c=s?s.fresh:e.items.map((f,p)=>({item:f,num:p+1,updated:!1})),d={usecase:"risk","use-case":"risk",ac:"check",scenario:"kind",test:"check",gap:"severity",stylenote:"kind"},g=f=>f.kind??"use-case",u=new Map;for(let f of c){let p=f.item,_=g(f.item),A=p.risk==="high"||p.risk==="med"||p.risk==="low"?p.risk:void 0,w={id:p.logical_id??"",staged:!p.logical_id,title:p.title,badge:p.badge??p.risk??"",summary:p.why??p.summary??p.description??"",...A?{risk:A}:{},...f.updated?{marker:"\u21B3 changed"}:{}},R=u.get(_)??[];R.push(w),u.set(_,R)}let m=c.some(f=>!!f.item.kind),h=(s?.unchanged??[]).reduce((f,p)=>f+p.count,0),S=s?.headerStats?` \u2014 ${s.headerStats}${h>0?` (${h} unchanged)`:""}`:"";return(0,k.jsxs)(I,{flexDirection:"column",marginLeft:2,children:[(0,k.jsxs)(n,{bold:!0,children:[m?"design":e.heading,S?(0,k.jsx)(n,{bold:!1,color:r.dim,children:S}):null]}),[...u.entries()].map(([f,p])=>(0,k.jsxs)(I,{flexDirection:"column",children:[u.size>1?(0,k.jsx)(n,{color:r.dim,children:`${Y(f)} \xB7 ${p.length}`}):null,(0,k.jsx)(Et,{rows:p,width:Bn,badgeHeader:d[f]??"info"})]},f)),s&&s.unchanged.length>0&&(0,k.jsx)(n,{color:r.dim,children:` \u22EE unchanged: ${s.unchanged.map(f=>`${f.count} ${f.label}`).join(" \xB7 ")}`})]})}case"answer":return(0,k.jsx)(n,{color:r.dim,children:Cn(e.receipt)});case"continued":return(0,k.jsx)(n,{color:r.dim,children:"\u21B3 continued"});case"commit":return(0,k.jsxs)(I,{flexDirection:"column",children:[(0,k.jsx)(n,{color:e.ok?r.green:r.red,children:` ${e.ok?"\u2714":"\u2717"} ${e.line}`}),(e.warnings??[]).map((s,c)=>(0,k.jsx)(n,{color:r.dim,children:` \u26A0 ${s}`},`w-${c}`))]});case"error":return(0,k.jsxs)(bt,{variant:"error",paddingX:1,children:[(0,k.jsx)(n,{color:r.red,children:e.title}),e.detail.map((s,c)=>(0,k.jsx)(n,{color:r.dim,children:s},`d-${c}`))]});case"interrupted":return(0,k.jsxs)(I,{flexDirection:"column",children:[(0,k.jsx)(n,{color:r.red,children:"interrupted \u2014 session not saved"}),e.detail?(0,k.jsx)(n,{color:r.dim,children:e.detail}):null]});case"pause":return(0,k.jsxs)(I,{flexDirection:"column",children:[(0,k.jsx)(n,{children:`paused: session ${e.sid} saved`}),e.expires_at?(0,k.jsx)(n,{color:r.dim,children:`expires: ${e.expires_at}`}):null,(0,k.jsx)(n,{children:`resume: ${e.resume}`}),e.messageForm?(0,k.jsx)(n,{children:`or say something on the way in: ${e.messageForm}`}):null]});case"summary":return(0,k.jsxs)(I,{flexDirection:"column",children:[(0,k.jsx)(n,{bold:!0,children:"session summary"}),e.lines.map((s,c)=>(0,k.jsx)(n,{children:` ${s}`},`s-${c}`))]})}}var ue=V(j(),1);function Ft({item:e}){return(0,ue.jsxs)(I,{flexDirection:"column",marginLeft:2,children:[(e.cite??[]).map((i,s)=>(0,ue.jsx)(n,{dimColor:!0,children:`cite ${i.anchor??"conv"} \u2014 "${i.quote??""}"`},`cite-${s}`)),(e.depends_on_hint??[]).length>0&&(0,ue.jsx)(n,{dimColor:!0,children:`depends on: ${(e.depends_on_hint??[]).join(", ")}`}),Object.entries(e.extra??{}).map(([i,s])=>(0,ue.jsx)(n,{dimColor:!0,children:`${i}: ${s}`},`extra-${i}`))]})}var $=V(j(),1),Ze=(e,i)=>Math.max(0,Math.min(i,e));function Me(e,i,s){switch(i.type){case"move":return e.level==="detail"?{...e,scroll:Math.max(0,(e.scroll??0)+i.delta)}:{...e,cursor:Ze(e.cursor+i.delta,Math.max(0,s-1))};case"enter":return e.level==="list"?{...e,level:"detail",scroll:0}:e;case"back":return e.level==="detail"?{...e,level:"list",scroll:0}:null}}var Nt={"use-case":"use-cases",ac:"acs",scenario:"scenarios",test:"tests",gap:"gaps"};function Ut(e,i){if(e.level==="detail")return{level:"detail",cursor:Ze(e.num-1,Math.max(0,i.entries.length-1))};if(e.section){let s=i.entries.findIndex(c=>Nt[c.kind]===e.section);if(s>=0)return{level:"list",cursor:s}}return{level:"list",cursor:0}}function An(e){let i=[];for(let s of e.entries){let c=i.find(d=>d.kind===s.kind);c?c.entries.push(s):i.push({kind:s.kind,entries:[s]})}return i}var Wt=3;function Dn({items:e,cursor:i,verb:s,more:c}){let d=`view \xB7 ${s} so far \xB7 ${e.counts.map(u=>`${u.count} ${u.count===1?u.label.replace(/s$/,""):u.label}`).join(" \xB7 ")}`,g=e.entries[i];return(0,$.jsxs)(I,{flexDirection:"column",borderStyle:"round",borderColor:r.dim,paddingX:1,children:[(0,$.jsx)(n,{bold:!0,children:d}),An(e).map(({kind:u,entries:m})=>{let h=g?.kind===u,S=h?m.findIndex(A=>A.ref===g.ref):-1,f=h?Ze(S-1,Math.max(0,m.length-Wt)):0,p=m.slice(f,f+(h?Wt:1)),_=m.length-p.length;return(0,$.jsxs)(I,{flexDirection:"column",children:[(0,$.jsx)(n,{color:r.dim,children:`${Nt[u]??Y(u)} \xB7 ${m.length}`}),p.map(A=>{let w=h&&A.ref===g.ref,R=A.item.badge;return(0,$.jsxs)(n,{children:[(0,$.jsx)(n,{color:r.assuranceAccent,children:w?"\u203A ":" "}),(0,$.jsx)(n,{children:`${A.num} \xB7 ${A.item.title}`}),R?(0,$.jsx)(n,{color:r.dim,children:` \xB7 ${R}`}):null]},`${A.kind}:${A.ref}`)}),_>0&&(0,$.jsx)(n,{color:r.dim,children:` \u22EE ${_} more`})]},u)}),c?(0,$.jsxs)(n,{children:[(0,$.jsx)(n,{color:r.assuranceAccent,children:i===e.entries.length?"\u203A ":" "}),(0,$.jsx)(n,{color:r.dim,children:`\u22EF show all \u2014 ${c.hidden} more from earlier turns`})]}):null,(0,$.jsx)(n,{color:r.dim,children:"\u2191\u2193 move \xB7 \u21B5 detail \xB7 esc back"})]})}var Ee=14;function En({items:e,cursor:i,explain:s,grandTotal:c,dossier:d,scroll:g=0}){let u=e.entries[i];if(!u)return(0,$.jsx)(n,{color:r.dim,children:"nothing to show"});if(d){let h=Math.max(0,Math.min(g,Math.max(0,d.lines.length-Ee))),S=d.lines.slice(h,h+Ee);return(0,$.jsxs)(I,{flexDirection:"column",borderStyle:"round",borderColor:r.dim,paddingX:1,children:[(0,$.jsxs)(n,{bold:!0,children:[`view \xB7 ${d.id}`,d.id.toLowerCase()!==d.rawId?(0,$.jsx)(n,{bold:!1,color:r.dim,children:` \xB7 ${d.rawId}`}):null]}),(0,$.jsx)(n,{bold:!0,children:d.title}),h>0?(0,$.jsx)(n,{color:r.muted,children:`\u22EE ${h} above`}):null,S.map((f,p)=>(0,$.jsx)(n,{color:f.dim?r.dim:void 0,children:f.text},`dl-${p}`)),d.lines.length>h+Ee?(0,$.jsx)(n,{color:r.muted,children:`\u22EE ${d.lines.length-h-Ee} more`}):null,(0,$.jsx)(n,{color:r.dim,children:"\u2191\u2193 scroll \xB7 esc back"})]})}let m=u.item;return(0,$.jsxs)(I,{flexDirection:"column",borderStyle:"round",borderColor:r.dim,paddingX:1,children:[(0,$.jsx)(n,{bold:!0,children:`view \xB7 ${u.kind} ${u.num} of ${c??e.entries.length}`}),(0,$.jsx)(n,{children:u.item.title}),m.badge?(0,$.jsx)(n,{color:r.dim,children:`kind: ${m.badge}`}):null,m.why?(0,$.jsx)(n,{color:r.dim,children:m.why}):null,(0,$.jsx)(Ft,{item:u.item}),s?.map((h,S)=>(0,$.jsx)(n,{color:r.dim,children:h},`ex-${S}`)),(0,$.jsx)(n,{color:r.dim,children:"view-only \u2014 approvals happen in chat"}),(0,$.jsx)(n,{color:r.dim,children:"\u2191\u2193 prev/next \xB7 esc back to list"})]})}function Vt({items:e,state:i,verb:s,more:c,explain:d,grandTotal:g,dossier:u=null}){return i.level==="list"?(0,$.jsx)(Dn,{items:e,cursor:i.cursor,verb:s,more:c}):(0,$.jsx)(En,{items:e,cursor:i.cursor,explain:d,grandTotal:g,dossier:u,scroll:i.scroll??0})}var Mn={"use-cases":"use-cases",usecases:"use-cases","use-case":"use-cases",acs:"acs",ac:"acs",scenarios:"scenarios",scenario:"scenarios",tests:"tests",test:"tests",gaps:"gaps",gap:"gaps"};function jt(e){let i=(e??"").trim().toLowerCase();if(!i)return{level:"list"};if(/^\d+$/.test(i)){let c=parseInt(i,10);return c>=1?{level:"detail",num:c}:{error:"items are numbered from 1 \u2014 /view 1"}}let s=Mn[i];return s?{level:"list",section:s}:{error:"try /view, /view <number>, or /view acs|scenarios|tests"}}var B=V(j(),1),_n=6,Kt=12;function Ln(e,i,s){let c=Math.max(20,i),d=[];for(let u of e.split(`
|
|
3
|
+
`)){if(u.length<=c){d.push(u);continue}let m="";for(let h of u.split(" "))m&&m.length+1+h.length>c?(d.push(m),m=h):m=m?`${m} ${h}`:h;d.push(m)}let g=Math.max(0,d.length-s);return{body:d.slice(-s).join(`
|
|
4
|
+
`),hidden:g}}var _e=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function Qt(e){let i={key:"redesign",label:"re-design from scratch",detail:"replaces the current design"},s={key:"keep",label:"keep the existing design",detail:"back to the list"};return e.designed==="stale"?[{...i,detail:"the use-case changed since it was designed"},s]:[s,i]}function Ir({controller:e,verb:i="extract",onCtrlC:s,chain:c=null,inspect:d=null}){let[,g]=(0,b.useState)(0),[u,m]=(0,b.useState)(!1),[h,S]=(0,b.useState)(null),[f,p]=(0,b.useState)(null),_=(0,b.useRef)(null),[A,w]=(0,b.useState)(null),R=(0,b.useRef)(null),C=t=>{R.current=t,w(t)},v=t=>{_.current=t,p(t),t===null&&C(null)},E=(0,b.useRef)([]),[x,W]=(0,b.useState)(null),L=(0,b.useRef)(null),P=t=>{L.current=t,W(t)},de=yt(),{stdout:Le}=Be(),Oe=Le?.columns??80,me=(0,b.useRef)(0),ge=(0,b.useRef)(0);(0,b.useEffect)(()=>{let t=()=>{let o=e.state.ledger;for(let y=me.current;y<o.length;y++){let T=o[y],q=T.kind==="turn"?qt(e.state.turns,T.turnIndex):void 0;de.append((0,B.jsx)(Pt,{block:T,annotations:q},`lg-${y}`))}me.current=o.length};t();let l=e.subscribe(()=>{t();let o=e.state;_.current&&(o.pending||o.status==="pausing")&&(v(null),o.pending&&S("questions arrived \u2014 back to chat")),g(y=>y+1)});return g(o=>o+1),l},[e,de]);let{thinking:Z,status:K,pending:D,confirm:F,ledger:O,activeTurn:H,stream:Te,notice:we}=e.state,et=(Te?.text??"").trimEnd(),tt=et.length>0,Ht=u&&(Z.liveThinking.length>0||Z.thinkingLog.length>0),zt=Ln(Z.liveThinking||Z.thinkingLog.map(t=>t.text).join(`
|
|
5
|
+
`),Oe-6,Kt),nt=tt?et.split(`
|
|
6
|
+
`).slice(-_n):[];H&&(ge.current=H.turnIndex);let Xt=D?D.resolution.filter(t=>!t).length:0,rt;for(let t=O.length-1;t>=0;t--){if(E.current.some(o=>o.end!=null&&t>=o.start&&t<o.end))continue;let l=O[t];if(l.kind==="banner"&&!l.text.startsWith("kane")){rt=l.text;break}}let fe=Z.activity[Z.activity.length-1],qe=fe?fe.status==="decision"?fe.label:St({name:fe.name,status:fe.status}):void 0,it=K==="streaming"||K==="working",[st,Gt]=(0,b.useState)(0);kt(()=>Gt(t=>t+1),it||x?.kind==="running"?120:null);let Jt=e.state.busySince?Math.floor((Date.now()-e.state.busySince)/1e3):0,Yt=tt?"Writing\u2026":qe?`${qe.charAt(0).toUpperCase()}${qe.slice(1)}\u2026`:e.state.workingLabel??(i==="design"?"Designing\u2026":"Thinking\u2026"),Zt=e.state.turns.some(t=>t.role==="agent"),[en,tn]=(0,b.useState)(0),[nn,rn]=(0,b.useState)(!1),[ot,sn]=(0,b.useState)(null),pe=(0,b.useRef)(0),lt=(0,b.useRef)(!1),at=(0,b.useRef)(null),he=t=>{pe.current=t,tn(t)},ct=t=>{lt.current=t,rn(t)},ie=t=>{at.current=t,sn(t)},[Pe,on]=(0,b.useState)(0),Q=(0,b.useRef)(0),xe=t=>{Q.current=t,on(t)},ut=D?D.questions[0]?.id??"b":null;(0,b.useEffect)(()=>{D&&xe(D.cursor<0?0:D.cursor)},[ut,D?.cursor]);let Fe=()=>{let t=X.current;if(!t)return;let l=t.questions.length;for(let o=1;o<=l;o++){let y=(Q.current+o)%l;if(!t.resolution[y]){xe(y);return}}},dt=D?D.questions[Math.max(0,Math.min(D.questions.length-1,Pe))]:void 0,z=(0,b.useRef)(dt);z.current=dt;let X=(0,b.useRef)(D);X.current=D;let ln=D?`${ut}:${Pe}`:null;(0,b.useEffect)(()=>{if(ie(null),z.current){ct(!0);let t=X.current?.resolution[Q.current]?.selected_index;he(t??z.current.recommended_index??0)}else ct(!1)},[ln]);let $e=t=>{let l=X.current;return Ge(t,l?Ae(l)!=="":!1)},an={isFocused:()=>lt.current&&z.current!=null&&at.current==null||L.current!=null&&L.current.kind!=="running"||G.current&&ht.current==null,onMove:t=>{let l=z.current;if(l){he(Math.max(0,Math.min($e(l).maxSel,pe.current+t)));return}let o=L.current;if(o?.kind==="picker"){P({...o,sel:Math.max(0,Math.min(o.items.length-1,o.sel+t))});return}if(o?.kind==="ask"||o?.kind==="confirm"||o?.kind==="failed"){let y=(o.kind==="ask"?Se.current.length:o.kind==="failed"?Re.current.length:2)-1;P({...o,sel:Math.max(0,Math.min(y,o.sel+t))});return}o&&!G.current||G.current&&le(Math.max(0,Math.min(ye.current.length-1,He.current+t)))},onSelect:()=>{let t=z.current,l=X.current;if(!t||!l){let T=L.current;if(T?.kind==="picker"){let N=T.items[T.sel];N&&(N.designed?P({kind:"confirm",item:N,sel:0}):Ke(N,!1));return}if(T?.kind==="confirm"){Qt(T.item)[T.sel]?.key==="redesign"?Ke(T.item,!0):je();return}if(T?.kind==="ask"){let N=Se.current[T.sel]?.key;N==="another"?je():N==="view"?ze(""):P(null);return}if(T?.kind==="failed"){let N=Re.current[T.sel]?.key;N==="retry"?Ke(T.item,T.force):N==="view"?ze(""):P(null);return}if(T&&!G.current||!G.current)return;switch(ye.current[He.current]?.key){case"finish":e.completeSession();return;case"continue":e.continueParked();return;case"design-chain":je();return;case"view":ze("",ge.current);return;case"free":ae("");return}return}let o=$e(t),y=pe.current;if(o.batchIdx!=null&&y===o.batchIdx){e.goWithRecommendations();return}if(o.freeIdx!=null&&y===o.freeIdx){ie("");return}if(o.doneIdx!=null&&y===o.doneIdx){e.confirmMulti(Q.current),Fe();return}if(t.multi_select){e.toggleOption(Q.current,y);return}e.submitAnswer(Q.current,y),Fe()},onLeft:()=>{X.current&&xe(Math.max(0,Q.current-1))},onRight:()=>{let t=X.current;t&&xe(Math.min(t.questions.length-1,Q.current+1))},onDigit:t=>{let l=z.current;if(l){t-1<l.options.length&&he(t-1);return}let o=L.current;if(o?.kind==="picker"){t-1<o.items.length&&P({...o,sel:t-1});return}if(o?.kind==="ask"){t-1<Se.current.length&&P({...o,sel:t-1});return}if(o?.kind==="failed"){t-1<Re.current.length&&P({...o,sel:t-1});return}if(o?.kind==="confirm"){t-1<2&&P({...o,sel:t-1});return}if(!(o&&!G.current)&&G.current){let y=ye.current,T=0;for(let q=0;q<y.length;q++)if(!y[q].free&&(T+=1,T===t)){le(q);return}}},isMulti:()=>{let t=z.current;return!!t?.multi_select&&pe.current<(t?.options.length??0)},onSpace:()=>{X.current&&e.toggleOption(Q.current,pe.current)},onTab:()=>{let t=z.current;if(!t)return;let l=$e(t);l.batchIdx!=null&&he(l.batchIdx)},onType:t=>{let l=z.current;if(l){if(!l.allow_free_text)return;let o=$e(l);he(o.freeIdx??0),ie(t);return}if(!(L.current&&!G.current)&&G.current){let o=Rt(ye.current);if(o==null)return;le(o),ae(t)}},onBack:()=>{let t=L.current;if(t&&t.kind!=="running"){P(null);return}let l=X.current;if(l){for(let o=Q.current-1;o>=0;o--)if(l.resolution[o]){xe(o);return}}}},cn=ot!=null?{value:ot,onChange:t=>ie(t),onSubmit:t=>{ie(null),t.trim()&&X.current&&(e.submitFreeText(Q.current,t),Fe())},onCancel:()=>ie(null)}:null,mt=s??(()=>e.requestPause()),se=e.state.checkpoint,ke=x?.kind==="running"&&K==="idle",ve=K==="idle"&&Zt&&!D&&!f&&(!x||ke),G=(0,b.useRef)(!1);G.current=ve;let J=re(e.state.turns).entries.length,be,ee;for(let t=O.length-1;t>=0;t--){if(E.current.some(o=>o.end!=null&&t>=o.start&&t<o.end))continue;let l=O[t];if(!be&&l.kind==="commit"&&l.ok&&(be=l.line),!ee&&l.kind==="banner"&&l.text.startsWith("designing: ")&&(ee=l.text.slice(11)),be&&ee)break}let We;for(let t=O.length-1;t>=0;t--){let l=O[t];if(l.kind==="user")break;if(l.kind==="commit"&&l.ok&&/\bapplied\b/.test(l.line)){We=l.line;break}}let ne=ee?{"acceptance criteria":"scenarios",scenarios:"acceptance criteria + exercises","acceptance criteria + exercises":"tests + gaps"}[ee]:void 0,un=(()=>{for(let t=O.length-1;t>=0;t--){let l=O[t];if(l.kind==="agent")return l.text}return null})(),oe=/\?\s*$/.test((un??"").trimEnd()),gt=i==="design"&&!se&&(oe||ne!==void 0),ft=ee==="tests + gaps",Ie=x?.kind==="running"?x.title:"the design",pt=!!e.state.error&&!e.senderAlive(),dn=F?"the agent needs a clarification before it can apply that":ke&&!se?oe?`${Ie} \u2014 the agent asked a question`:We?`${Ie} \u2014 ${We}`:ft?`${Ie} \u2014 design complete`:`${Ie} \u2014 the agent is waiting on you`:se?ee?`${ee} done${ne?` \u2014 next: ${ne}`:""}`:be??"phase done":pt?"the agent stopped \u2014 the session is view-only":gt?oe?"the agent asked a question \u2014 answer or continue":`design incomplete \u2014 ${ne} not started`:be??"waiting on you",Ne=F?[{key:"free",label:"clarify \u2014 type which one you meant",free:!0}]:ke&&!se?ft&&!oe?[{key:"finish",label:"finish this design"},...J>0?[{key:"view",label:"view what's saved"}]:[],{key:"free",label:"reply \u2014 tell the agent what to change",free:!0}]:[{key:"continue",label:oe?"continue \u2014 go with your suggestion":"continue designing"},...J>0?[{key:"view",label:"view what's saved"}]:[],{key:"finish",label:"finish this design"},{key:"free",label:"reply \u2014 tell the agent what to change",free:!0}]:se?[{key:"continue",label:ne?`continue to ${ne}`:"continue"},...J>0?[{key:"view",label:"view what's saved"}]:[],{key:"finish",label:"finish here"},{key:"free",label:"adjust \u2014 tell me what to change",free:!0}]:pt?[...J>0?[{key:"view",label:"view what's saved"}]:[],{key:"free",label:"tell me what to change",free:!0}]:gt?[{key:"continue",label:oe?"continue \u2014 go with your suggestion":`continue \u2014 ${ne} next`},...J>0?[{key:"view",label:"view the design"}]:[],{key:"finish",label:"finish anyway"},{key:"free",label:"reply \u2014 answer and continue",free:!0}]:[{key:"finish",label:i==="design"?"finish":"looks good \u2014 finish the session"},...c?[{key:"design-chain",label:"design tests for a use-case\u2026"}]:[],...J>0?[{key:"view",label:i==="design"?"view the design":`view the ${J} draft${J===1?"":"s"}`}]:[],{key:"free",label:i==="design"?"keep adjusting \u2014 tell me what to change":"tell me what to change",free:!0}],Ue=[{key:"another",label:"design another use-case\u2026"},...J>0?[{key:"view",label:"view what was designed"}]:[],{key:"back",label:"done \u2014 back"}],Se=(0,b.useRef)(Ue);Se.current=Ue;let Ve=[{key:"retry",label:"try again"},...J>0?[{key:"view",label:"view what's saved"}]:[],{key:"back",label:"back"}],Re=(0,b.useRef)(Ve);Re.current=Ve;let je=()=>{let t=c?.listUcs()??[];if(t.length===0){S("no use-cases to design yet");return}P({kind:"picker",items:t,sel:0})},Ke=(t,l)=>{let o={start:e.state.ledger.length,end:null};E.current.push(o);let y=()=>{o.end=e.state.ledger.length};P({kind:"running",title:t.title,item:t,force:l,startedAt:Date.now()}),c.runDesignChild(t.key,l).then(T=>{y(),T===0?(e.ledger({kind:"commit",ok:!0,line:`designed ${t.title}`}),P({kind:"ask",title:t.title,sel:0})):(e.ledger({kind:"commit",ok:!1,line:`design for ${t.title} failed \u2014 child exited ${T}`}),P({kind:"failed",item:t,force:l,detail:`child exited ${T}`,sel:0}))}).catch(T=>{y();let q=T instanceof Error?T.message:String(T);e.ledger({kind:"commit",ok:!1,line:`design for ${t.title} failed \u2014 ${q}`}),P({kind:"failed",item:t,force:l,detail:q,sel:0})})},ye=(0,b.useRef)(Ne);ye.current=Ne;let[mn,gn]=(0,b.useState)(0),[Qe,fn]=(0,b.useState)(null),He=(0,b.useRef)(0),ht=(0,b.useRef)(null),le=t=>{He.current=t,gn(t)},ae=t=>{ht.current=t,fn(t)},pn=`${ve}:${se}:${ge.current}`;(0,b.useEffect)(()=>{le(0),ae(null)},[pn]);let hn=Qe!=null?{value:Qe,onChange:t=>ae(t),onSubmit:t=>{ae(null),le(0);let l=t.trim();l&&(S(null),e.submit(l))},onCancel:()=>{ae(null),le(0)}}:null,ze=(t,l)=>{if(/^(uc|sc|ac|t|gap|sty)-\d+$/i.test(t.trim())){let q=t.trim().toLowerCase(),Ce=re(e.state.turns).entries.findIndex(U=>(U.item.logical_id??"").toLowerCase()===q);if(Ce<0){S(`${t.trim().toUpperCase()} isn't in this session's items \u2014 view lists what this session minted`);return}v({level:"detail",cursor:Ce,scroll:0}),C(null);return}let o=jt(t);if("error"in o){S(o.error);return}let y=re(e.state.turns);if(y.entries.length===0){S("nothing proposed yet \u2014 the first turn is still coming");return}if(o.level==="detail"&&o.num>y.entries.length){S(`no item ${o.num} \u2014 the set has ${y.entries.length} item${y.entries.length===1?"":"s"}`);return}let T=l!=null?Ye(y,l):y;v(Ut(o,T)),C(l!=null&&T.entries.length<y.entries.length?l:null)},xt=(0,B.jsx)(Bt,{verb:i,subject:rt,pendingCount:Xt,creditsTotal:e.state.credits?.total,state:ke?"waiting on you":D||ve||f||x&&x.kind!=="running"?"idle":void 0});if(f){let t=re(e.state.turns),l=A!=null?Ye(t,A):t,o=t.entries.length-l.entries.length,y=f.level==="list"&&o>0,T=l.entries.length+(y?1:0),q=l.entries[f.cursor],N=f.level==="detail"&&q?e.explainLines(q.item.slug??q.item.temp_ref):null,Ce=f.level==="detail"&&q&&d?d(q.item.logical_id??e.aliasOf(q.item.temp_ref)??q.item.temp_ref):null;return(0,B.jsxs)(I,{flexDirection:"column",children:[(0,B.jsx)(Xe,{onToggleThinking:()=>m(U=>!U),onCtrlC:mt,explorer:{isOpen:()=>_.current!==null,onMove:U=>v(_.current&&Me(_.current,{type:"move",delta:U},T)),onEnter:()=>{let U=_.current;if(U){if(U.level==="list"&&y&&U.cursor===l.entries.length){C(null);return}v(Me(U,{type:"enter"},T))}},onBack:()=>{v(_.current&&Me(_.current,{type:"back"},T)),setTimeout(()=>g(U=>U+1),0)}}}),(0,B.jsx)(Vt,{items:l,state:f,verb:i,more:y?{hidden:o}:null,explain:N,grandTotal:t.entries.length,dossier:Ce}),(we??h)&&(we??h).split(`
|
|
7
|
+
`).map((U,xn)=>(0,B.jsx)(n,{color:r.orange,children:U},`nt-${xn}`)),xt]})}return(0,B.jsxs)(I,{flexDirection:"column",children:[(0,B.jsx)(Xe,{onToggleThinking:()=>m(t=>!t),onCtrlC:mt,panel:an}),Ht&&(0,B.jsx)(vt,{thinking:zt.body,expanded:!0,thinkingDone:K!=="streaming",maxLines:Kt+1}),nt.length>0&&(0,B.jsx)(I,{flexDirection:"column",children:nt.map((t,l)=>(0,B.jsx)(n,{children:wt(t).map((o,y)=>(0,B.jsx)(n,{bold:o.bold,italic:o.italic,color:o.code?r.dim:void 0,children:o.text},y))},`st-${l}`))}),D&&(0,B.jsx)(At,{batch:D,qView:Pe,sel:en,focused:nn,freeText:cn,multiSelFor:t=>e.multiSelection(t)}),F&&(0,B.jsx)(n,{color:"yellow",children:F.prompt}),(we??h)&&(we??h).split(`
|
|
8
|
+
`).map((t,l)=>(0,B.jsx)(n,{color:r.orange,children:t},`nt-${l}`)),it&&!D&&(0,B.jsxs)(n,{color:r.assuranceAccent,children:[`${_e[st%_e.length]} ${Yt} `,(0,B.jsx)(n,{color:r.dim,children:`(${Jt}s)`})]}),ve&&(0,B.jsx)(ce,{headline:dn,rows:Ne,sel:mn,focused:Qe==null,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 type = your own words",freeText:hn}),x?.kind==="picker"&&(0,B.jsx)(ce,{ask:!0,headline:"design tests for which use-case?",rows:x.items.map(t=>({key:t.key,label:t.title,detail:t.badge})),sel:x.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),x?.kind==="confirm"&&(0,B.jsx)(ce,{ask:!0,headline:`${x.item.title} is already designed${x.item.designed==="stale"?" \u2014 and the use-case has changed since":""}`,rows:Qt(x.item).map(t=>({key:t.key,label:t.label,detail:t.detail})),sel:x.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),x?.kind==="running"&&!ke&&(0,B.jsxs)(n,{color:r.assuranceAccent,children:[`${_e[st%_e.length]} Designing ${x.title}\u2026 `,(0,B.jsx)(n,{color:r.dim,children:`(${Math.floor((Date.now()-x.startedAt)/1e3)}s)`})]}),x?.kind==="ask"&&(0,B.jsx)(ce,{headline:`designed ${x.title}`,rows:Ue,sel:x.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),x?.kind==="failed"&&(0,B.jsx)(ce,{headline:`design failed \u2014 ${x.item.title} (${x.detail})`,rows:Ve,sel:x.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),K==="pausing"&&(0,B.jsx)(n,{color:r.dim,children:"pausing \u2014 saving session\u2026 (ctrl+c again = force quit)"}),xt]})}export{Ir as ChatSurface,Ln as tailVisualRows};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b,c}from"./chunk-
|
|
2
|
+
import{a,b,c}from"./chunk-6CGNLFSN.js";import"./chunk-TW3K2DKB.js";import"./chunk-2KS2YRIS.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{c as ChromeProfilePicker,b as formatChromeProfileLine,a as listChromeProfiles};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as r}from"./chunk-
|
|
2
|
+
import{a as r}from"./chunk-LPBAQQ7E.js";import"./chunk-TW3K2DKB.js";import"./chunk-2KS2YRIS.js";import"./chunk-HCBYKLMW.js";import{c as e}from"./chunk-C44QQJR4.js";import{a as i}from"./chunk-6YGTRKDT.js";import{e as m}from"./chunk-UR6MHSHU.js";var t=m(i(),1);async function d(){return new Promise(o=>{let c=e(t.default.createElement(r,{onSubmit:n=>{c.unmount(),o(n)}}),{stdout:process.stderr,exitOnCtrlC:!1})})}export{d as renderFeedbackPrompt};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as P,b as g,c as f}from"./chunk-
|
|
2
|
+
import{a as P,b as g,c as f}from"./chunk-J4WS2SXT.js";import"./chunk-YVXC46DY.js";import"./chunk-5Y2G4NC7.js";import"./chunk-2KS2YRIS.js";import{a as c}from"./chunk-HCBYKLMW.js";import{c as d}from"./chunk-C44QQJR4.js";import{a as h}from"./chunk-6YGTRKDT.js";import{e as p}from"./chunk-UR6MHSHU.js";var e=p(h(),1);var m=p(c(),1);function w({pipeline:t,buildShareUrl:r,onDone:o}){let[n,i]=(0,e.useState)(P()),[S,l]=(0,e.useState)("uploading"),[U,R]=(0,e.useState)(),[C,E]=(0,e.useState)();return(0,e.useEffect)(()=>{let x=t.config.onProgress;t.config.onProgress=(s,u,a)=>{x(s,u,a),i(y=>g(y,s,u,a))},t.execute().then(s=>{s.success?(R(r?.(s)),l("success")):(E(s.error),l("failed")),setTimeout(()=>o(s),1500)})},[]),(0,m.jsx)(f,{steps:n,status:S,testUrl:U,error:C})}async function O(t,r){return new Promise(o=>{let n=d(e.default.createElement(w,{pipeline:t,buildShareUrl:r,onDone:i=>{n.unmount(),o(i)}}),{stdout:process.stderr,exitOnCtrlC:!1})})}export{O as renderUploadProgress};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as p,b as l,c as n}from"./chunk-
|
|
2
|
+
import{a as p,b as l,c as n}from"./chunk-6NWPK2MS.js";import{y as o}from"./chunk-2KS2YRIS.js";import{a as g}from"./chunk-HCBYKLMW.js";import{a,j as c}from"./chunk-C44QQJR4.js";import{a as R}from"./chunk-6YGTRKDT.js";import{e as t}from"./chunk-UR6MHSHU.js";var b=t(R(),1);var e=t(g(),1);function A({model:d,authLabel:v,profile:x,env:w,defaultUrl:u,projectId:r,projectName:s,folderId:i,folderName:f,windowSize:B,chromeProfile:C}){let h=r?s?`${s} (${r})`:r:"(none)",D=i?f?`${f} (${i})`:i:"(none)",{exit:m}=c();return(0,b.useEffect)(()=>{let P=setTimeout(()=>m(),50);return()=>clearTimeout(P)},[m]),(0,e.jsx)(a,{flexDirection:"column",children:(0,e.jsx)(p,{title:"Configuration",children:(0,e.jsxs)(a,{flexDirection:"column",paddingY:1,children:[(0,e.jsx)(n,{label:"Auth"}),(0,e.jsx)(l,{label:" method",value:v}),(0,e.jsx)(l,{label:" profile",value:x}),(0,e.jsx)(l,{label:" env",value:w}),(0,e.jsx)(n,{label:"Defaults"}),(0,e.jsx)(l,{label:" url",value:u??"(none)",valueColor:u?o.orange:o.dim}),(0,e.jsx)(l,{label:" model",value:d}),(0,e.jsx)(l,{label:" window",value:B}),(0,e.jsx)(l,{label:" project",value:h}),(0,e.jsx)(l,{label:" folder",value:D}),(0,e.jsx)(n,{label:"Paths"}),(0,e.jsx)(l,{label:" chrome",value:C,valueColor:o.dim})]})})})}export{A as ConfigView};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a}from"./chunk-KA7Q5IIC.js";import"./chunk-RFHMDQXZ.js";import"./chunk-OESHJ4J2.js";import"./chunk-FCMLIK7P.js";import"./chunk-CJJXT5DO.js";import"./chunk-QM4S2APK.js";import"./chunk-ZPDM6FO7.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-RH4GCEFX.js";import"./chunk-2KS2YRIS.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as EvidenceViewOffer};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b}from"./chunk-
|
|
2
|
+
import{a,b}from"./chunk-7LWXIRI3.js";import"./chunk-YCCUBQY4.js";import"./chunk-AYDUHTPA.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-TW3K2DKB.js";import"./chunk-2KS2YRIS.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as FolderPicker,a as formatFolderLine};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as f,b as r,y as t}from"./chunk-
|
|
2
|
+
import{a as f,b as r,y as t}from"./chunk-2KS2YRIS.js";import{a as T}from"./chunk-HCBYKLMW.js";import{a as s,b as o,j as x,k as p}from"./chunk-C44QQJR4.js";import{a as v}from"./chunk-6YGTRKDT.js";import{e as h}from"./chunk-UR6MHSHU.js";var w=h(v(),1);var e=h(T(),1),b="https://www.testmuai.com/support/docs/kane-cli-introduction",S="https://github.com/LambdaTest/kane-cli/issues";function L(){let{exit:c}=x(),{stdout:a}=p(),l=a?.columns??80;return(0,w.useEffect)(()=>{let m=setTimeout(()=>c(),50);return()=>clearTimeout(m)},[c]),(0,e.jsxs)(s,{flexDirection:"column",children:[(0,e.jsxs)(s,{paddingX:1,paddingTop:1,flexDirection:"column",children:[(0,e.jsx)(o,{color:t.orange,bold:!0,children:r}),(0,e.jsxs)(s,{children:[(0,e.jsx)(o,{color:t.dim,children:"Browser automation powered by AI "}),(0,e.jsxs)(o,{color:t.muted,children:[" v",f]})]})]}),(0,e.jsx)(o,{children:" "}),(0,e.jsxs)(d,{title:"USAGE",children:[(0,e.jsx)(g,{cmd:`${r}`,desc:"Single-shot prompt (no args, TTY)"}),(0,e.jsx)(g,{cmd:`${r} --tui`,desc:"Full interactive TUI",highlight:!0}),(0,e.jsx)(g,{cmd:`${r} run "<objective>"`,desc:"Inline objective"}),(0,e.jsx)(g,{cmd:`${r} testmd run <path>.md`,desc:"Replay a saved *_test.md file"})]}),(0,e.jsxs)(d,{title:"HELP",children:[(0,e.jsx)(g,{cmd:`${r} --help`,desc:"Show this help (long form)"}),(0,e.jsx)(g,{cmd:`${r} -h`,desc:"Show this help (short form)"}),(0,e.jsx)(g,{cmd:`${r} help`,desc:"Show this help (subcommand form)"}),(0,e.jsxs)(s,{marginLeft:2,marginTop:0,flexDirection:"column",children:[(0,e.jsxs)(o,{color:t.dim,children:["These are the only supported help invocations. Anything else (e.g. ",(0,e.jsx)(o,{color:t.orange,children:"-help"}),") is an unknown flag."]}),(0,e.jsxs)(o,{color:t.dim,children:["Terminal tab-completion is a shell feature; ",r," does not ship shell-completion scripts, so any flag your shell suggests is a generic guess \u2014 not from ",r,"."]})]})]}),(0,e.jsxs)(d,{title:"COMMANDS",children:[(0,e.jsx)(i,{cmd:"run",args:"<objective>",desc:"Run an objective (inline string)",highlight:!0}),(0,e.jsx)(i,{cmd:"testmd",args:"run|list|status|delete|export",desc:"Manage *_test.md files"}),(0,e.jsx)(i,{cmd:"testrun",args:"run",desc:"Run M *_test.md files as one sealed execution"}),(0,e.jsx)(i,{cmd:"login",desc:"Auth setup (interactive, --oauth, or --username)"}),(0,e.jsx)(i,{cmd:"logout",desc:"Revoke tokens + delete profile"}),(0,e.jsx)(i,{cmd:"whoami",desc:"Show authenticated identity"}),(0,e.jsx)(i,{cmd:"config",args:"show|set-mode|set-assertion-mode|\u2026",desc:"Chrome, run & generate settings"}),(0,e.jsx)(i,{cmd:"profiles",args:"list|switch|delete",desc:"Manage auth profiles"}),(0,e.jsx)(i,{cmd:"evidence",args:"validate|serve|merge",desc:"Validate, serve (viewer) or merge evidence packs"}),(0,e.jsx)(i,{cmd:"changelog",args:"[--all]",desc:"Show recent release notes"}),(0,e.jsx)(i,{cmd:"context",args:"ingest|extract|list|review|sessions|\u2026",desc:"Build & manage the assurance context store"}),(0,e.jsx)(i,{cmd:"design",args:"tests --use-case <ref>",desc:"Design tests from the context store"})]}),(0,e.jsxs)(d,{title:"TESTMD ACTIONS",children:[(0,e.jsx)(i,{cmd:"testmd run",args:"<path>",desc:"Replay a saved *_test.md file",highlight:!0}),(0,e.jsx)(i,{cmd:"testmd list",desc:"List *_test.md files in cwd (recursive)"}),(0,e.jsx)(i,{cmd:"testmd status",args:"<path>",desc:"Print local meta.json for a test"}),(0,e.jsx)(i,{cmd:"testmd delete",args:"<path>",desc:"Remove output-<stem>/ and the source file"}),(0,e.jsx)(i,{cmd:"testmd export",args:"<path> --language <py|js>",desc:"Generate standalone Playwright code"})]}),(0,e.jsxs)(d,{title:"RUN FLAGS",children:[(0,e.jsx)(n,{long:"--max-steps",arg:"<n>",desc:"Max agent steps (default: 30)"}),(0,e.jsx)(n,{long:"--timeout",arg:"<sec>",desc:"Kill run after N seconds"}),(0,e.jsx)(n,{long:"--headless",desc:"No visible browser window"}),(0,e.jsx)(n,{long:"--mode",arg:"<action|testing>",desc:"Run mode (default: testing)"}),(0,e.jsx)(n,{long:"--name",arg:"<name>",desc:"Persist session under this name"}),(0,e.jsx)(n,{long:"--variables",arg:"<json>",desc:"Inline variables as JSON"}),(0,e.jsx)(n,{long:"--variables-file",arg:"<path>",desc:"Load variables from file"}),(0,e.jsx)(n,{long:"--session-context",arg:"<json>",desc:"Prior runs context JSON"}),(0,e.jsx)(n,{long:"--global-context",arg:"<file>",desc:"Override global context markdown"}),(0,e.jsx)(n,{long:"--local-context",arg:"<file>",desc:"Override local context markdown"}),(0,e.jsx)(n,{long:"--ws-endpoint",arg:"<url>",desc:"Remote browser (LambdaTest)"}),(0,e.jsx)(n,{long:"--cdp-endpoint",arg:"<url>",desc:"Connect to existing Chrome CDP"}),(0,e.jsx)(n,{long:"--task-skills",desc:"Domain-specific task skills (experimental)"}),(0,e.jsx)(n,{long:"--code-export",desc:"Generate code export after upload"}),(0,e.jsx)(n,{long:"--code-language",arg:"<lang>",desc:"Code export language: python | javascript"}),(0,e.jsx)(n,{long:"--skip-code-validation",desc:"Skip post-codegen validation"}),(0,e.jsx)(n,{long:"--username",arg:"<user>",desc:"Basic auth (skip OAuth)"}),(0,e.jsx)(n,{long:"--access-key",arg:"<key>",desc:"Basic auth access key"}),(0,e.jsx)(n,{long:"--env",arg:"<name>",desc:"Environment (prod or stage)"}),(0,e.jsx)(n,{long:"--agent",desc:"NDJSON output (no UI)",highlight:!0})]}),(0,e.jsxs)(d,{title:"EXAMPLES",children:[(0,e.jsx)(u,{label:"Inline objective",cmd:`${r} run "Search for laptop"`}),(0,e.jsx)(u,{label:"Replay a saved test",cmd:`${r} testmd run smoke_test.md`}),(0,e.jsx)(u,{label:"Variables",cmd:`${r} run "Login as {{user}}" --variables '{"user":{"value":"alice"}}'`}),(0,e.jsx)(u,{label:"Agent mode (NDJSON)",cmd:`${r} run "Add to cart" --agent | jq .status`})]}),(0,e.jsx)(d,{title:"TEST FILES",children:(0,e.jsxs)(s,{marginLeft:2,flexDirection:"column",children:[(0,e.jsxs)(o,{color:t.dim,children:[(0,e.jsx)(o,{color:t.orange,children:"*_test.md"})," \u2014 markdown test files with YAML frontmatter and ",(0,e.jsx)(o,{color:t.orange,children:"## "}),"step headings."]}),(0,e.jsxs)(o,{color:t.dim,children:["Run with ",(0,e.jsxs)(o,{color:t.orange,children:[r," testmd run path/to/foo_test.md"]}),". (`.md` paths are not accepted by `",r," run`.)"]}),(0,e.jsxs)(o,{color:t.dim,children:["Sessions you run in TUI auto-save to ",(0,e.jsx)(o,{color:t.orange,children:"<cwd>/.testmuai/tests/<name>_test.md"})," (testing mode prompts on exit)."]})]})}),(0,e.jsxs)(s,{flexDirection:"column",marginTop:0,paddingX:1,children:[(0,e.jsx)(o,{color:t.muted,children:"\u2500".repeat(Math.min(l-2,70))}),(0,e.jsxs)(s,{gap:3,children:[(0,e.jsxs)(s,{children:[(0,e.jsx)(o,{color:t.dim,children:"Docs "}),(0,e.jsx)(o,{color:t.orange,underline:!0,children:b})]}),(0,e.jsxs)(s,{children:[(0,e.jsx)(o,{color:t.dim,children:"Bugs "}),(0,e.jsx)(o,{color:t.orange,underline:!0,children:S})]})]})]}),(0,e.jsx)(o,{children:" "})]})}function d({title:c,children:a}){return(0,e.jsxs)(s,{flexDirection:"column",marginBottom:1,children:[(0,e.jsx)(s,{marginLeft:1,children:(0,e.jsx)(o,{bold:!0,color:t.dim,children:c})}),a]})}function g({cmd:c,desc:a,highlight:l}){return(0,e.jsxs)(s,{marginLeft:2,children:[(0,e.jsxs)(s,{width:40,children:[(0,e.jsx)(o,{color:t.dim,children:"$ "}),(0,e.jsx)(o,{color:l?t.orange:t.orange,children:c})]}),(0,e.jsx)(o,{color:t.dim,children:a})]})}function i({cmd:c,args:a,desc:l,highlight:m}){return(0,e.jsxs)(s,{marginLeft:2,children:[(0,e.jsx)(s,{width:16,children:(0,e.jsx)(o,{color:m?t.orange:t.green,bold:!0,children:c})}),(0,e.jsx)(s,{width:32,children:a?(0,e.jsx)(o,{color:t.dim,children:a}):null}),(0,e.jsx)(o,{color:t.dim,children:l})]})}function n({long:c,arg:a,desc:l,highlight:m}){return(0,e.jsxs)(s,{marginLeft:2,children:[(0,e.jsxs)(s,{width:30,children:[(0,e.jsx)(o,{color:m?t.orange:t.orange,children:c}),a&&(0,e.jsxs)(o,{color:t.dim,children:[" ",a]})]}),(0,e.jsx)(o,{color:t.dim,children:l})]})}function u({label:c,cmd:a}){return(0,e.jsxs)(s,{marginLeft:2,flexDirection:"column",children:[(0,e.jsxs)(o,{color:t.dim,children:["# ",c]}),(0,e.jsxs)(o,{color:t.orange,children:["$ ",a]})]})}export{L as HelpView};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-
|
|
2
|
+
import{a}from"./chunk-W54W762O.js";import"./chunk-6NWPK2MS.js";import"./chunk-2KS2YRIS.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as InfoBox};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-
|
|
2
|
+
import{a}from"./chunk-ECFOND7B.js";import"./chunk-2KS2YRIS.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as LinksBox};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b}from"./chunk-
|
|
2
|
+
import{a,b}from"./chunk-FEF75YKV.js";import"./chunk-TW3K2DKB.js";import"./chunk-2KS2YRIS.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as ProfilesView,a as formatProfileLine};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b}from"./chunk-
|
|
2
|
+
import{a,b}from"./chunk-SACSQY3Q.js";import"./chunk-YCCUBQY4.js";import"./chunk-AYDUHTPA.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-TW3K2DKB.js";import"./chunk-2KS2YRIS.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as ProjectPicker,a as formatProjectLine};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b,c}from"./chunk-
|
|
2
|
+
import{a,b,c}from"./chunk-76I6NJBX.js";import"./chunk-S3DAAAE5.js";import"./chunk-W54W762O.js";import"./chunk-6NWPK2MS.js";import"./chunk-2KS2YRIS.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as SaveSessionPrompt,b as defaultSessionTimestamp,c as renderSavePrompt};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a}from"./chunk-2H3XNXL3.js";import"./chunk-VYQMCLKG.js";import"./chunk-7APDXIKI.js";import"./chunk-6JTEWZ75.js";import"./chunk-5F7PU5AJ.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-L5LI2JF4.js";import"./chunk-SACSQY3Q.js";import"./chunk-7LWXIRI3.js";import"./chunk-YCCUBQY4.js";import"./chunk-AYDUHTPA.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-VE3SUJMA.js";import"./chunk-YJIESLN6.js";import"./chunk-TW3K2DKB.js";import"./chunk-2KS2YRIS.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as SingleShotApp};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b,c,d}from"./chunk-
|
|
2
|
+
import{a,b,c,d}from"./chunk-FYDBD7Q4.js";import"./chunk-W54W762O.js";import"./chunk-6NWPK2MS.js";import"./chunk-2KS2YRIS.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{d as AutoExitSummaryBox,c as SummaryBox,b as buildSummaryEvent,a as buildSummaryRendered};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{g as a}from"./chunk-DHF3VO2R.js";import"./chunk-RLZA4VJT.js";import"./chunk-2OQLMW3F.js";import"./chunk-6JTEWZ75.js";import"./chunk-YVXC46DY.js";import"./chunk-5Y2G4NC7.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-RH4GCEFX.js";import"./chunk-W54W762O.js";import"./chunk-6NWPK2MS.js";import"./chunk-DFS4RMVP.js";import"./chunk-2KS2YRIS.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as TestMdRunView};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as b,b as r}from"./chunk-
|
|
2
|
+
import{a as b,b as r}from"./chunk-6NWPK2MS.js";import{y as o}from"./chunk-2KS2YRIS.js";import{a as p}from"./chunk-HCBYKLMW.js";import{a as i,b as l,j as s}from"./chunk-C44QQJR4.js";import{a as T}from"./chunk-6YGTRKDT.js";import{e as a}from"./chunk-UR6MHSHU.js";var f=a(T(),1);var e=a(p(),1);function V({profile:g,env:v,authenticated:n,authMethod:h,username:c,tokenStatus:t,expiresAt:d,serverStatus:u,detail:m}){let{exit:x}=s();return(0,f.useEffect)(()=>{let B=setTimeout(()=>x(),50);return()=>clearTimeout(B)},[x]),(0,e.jsx)(i,{flexDirection:"column",children:(0,e.jsx)(b,{title:"Identity",variant:n?"success":"warning",children:(0,e.jsxs)(i,{flexDirection:"column",paddingY:1,children:[(0,e.jsx)(i,{children:u==="rejected"?(0,e.jsx)(l,{color:o.red,bold:!0,children:"\u2717 Not authenticated"}):u==="unreachable"?(0,e.jsx)(l,{color:o.orange,bold:!0,children:"\u26A0 Couldn't verify"}):n?(0,e.jsx)(l,{color:o.green,bold:!0,children:"\u2713 Authenticated"}):(0,e.jsx)(l,{color:o.orange,bold:!0,children:"\u26A0 Not logged in"})}),(0,e.jsxs)(i,{flexDirection:"column",marginTop:1,children:[(0,e.jsx)(r,{label:"Profile",value:g}),(0,e.jsx)(r,{label:"Environment",value:v}),(0,e.jsx)(r,{label:"Method",value:h}),c&&(0,e.jsx)(r,{label:"User",value:c}),t&&(0,e.jsx)(r,{label:"Token",value:t,valueColor:t==="valid"?o.green:t==="expired"?o.red:o.dim}),d&&(0,e.jsx)(r,{label:"Expires",value:d}),m&&(0,e.jsx)(r,{label:"Detail",value:m})]})]})})})}export{V as WhoamiView};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as w}from"./chunk-KK7DYHK6.js";import"./chunk-KHU7C6EE.js";import"./chunk-SKRZN25J.js";import"./chunk-ZFFRHV5U.js";import"./chunk-JFAFKHDX.js";import"./chunk-J44RN3FB.js";import"./chunk-3C5GMAM4.js";import"./chunk-GG43HSU2.js";import"./chunk-OSALXGD4.js";import"./chunk-DNNZ353O.js";import"./chunk-YKTYVJBN.js";import"./chunk-CVOGP253.js";import"./chunk-427OQS2N.js";import"./chunk-FHKDTM5L.js";import"./chunk-ZPDM6FO7.js";import{a as u}from"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import"./chunk-L5LI2JF4.js";import"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-5EOX4MEY.js";import"./chunk-2KS2YRIS.js";import"./chunk-UR6MHSHU.js";import{existsSync as y}from"fs";var O=new Set(["interactive","agent","ci","override"]);function C(e){return e.mode!=null&&!O.has(e.mode)?{error:`design: --mode must be interactive | agent | ci | override, got '${e.mode}'`}:e.strength!=null&&e.strength!=="pairwise"&&e.strength!=="3-wise"?{error:`design: --strength must be pairwise | 3-wise, got '${e.strength}'`}:e.max!=null&&(!Number.isInteger(e.max)||e.max<1)?{error:"design: --max must be a positive integer"}:!e.useCase&&!e.resume?{error:"design: --use-case is required (or --resume <sid> \u2014 the session remembers its use-case)"}:{useCase:e.useCase,max:e.max,strength:e.strength,mode:e.mode,force:e.force,resume:e.resume,plan:e.plan,message:e.message,because:e.because,changeDelta:e.changeDelta,priorDesign:e.priorDesign}}async function _(e){let g=async(r,n)=>{if(process.stderr.write(r+`
|
|
3
|
+
`),e.mode!=="agent")return 2;let{makeHeadlessIO:i,agentRefusal:o}=await import("./headless-io-PWW6YKH2.js");return o(i("ndjson","design"),r,n)},m=C(e);if("error"in m)return g(m.error);let a=m;{let{validateResumeMessage:r}=await import("./headless-io-PWW6YKH2.js"),n=r(a,"design");if(n)return g(n)}if(!y(u(process.cwd())))return g("error: no context store here (run `kane-cli context ingest` + `kane-cli context extract` first)","NO_STORE");let t=null;try{if(!a.mode&&!process.stdin.isTTY)return process.stderr.write(`design: no TTY \u2014 pass an explicit --mode agent|ci|override to run headless
|
|
4
|
+
`),2;let r=a.mode??"interactive";if(r==="interactive"){if(!process.stdin.isTTY||!process.stdout.isTTY)return process.stderr.write(`design: --mode interactive needs a TTY on stdin and stdout (use --mode agent|ci|override headless)
|
|
5
|
+
`),2;let{bindDesignInteractive:s}=await import("./interactive-bind-IXFRXBBL.js");return await s(a)}let{resolveAgentAuthEnv:n}=await import("./spawner-6FHAXNOA.js"),{runAgent:i}=await import("./bridge-WMGH3O3B.js"),{preflightTurn:o}=await import("./turn-preflight-JGYT7LXP.js"),{makeInterruptGuard:h}=await import("./interrupt-guard-UREUWNRL.js"),{baseUrlAdvisory:v}=await import("./turn-preflight-JGYT7LXP.js"),{makeHeadlessIO:T,resolveEncoding:x,guardedChannels:D}=await import("./headless-io-PWW6YKH2.js");t=T(x(r),"design");let{telemetryBootstrap:b,telemetryEnvName:E}=await import("./bootstrap-T6DSUI34.js"),c=b({verb:"design",mode:r,contextRoot:u(process.cwd()),env:E(),resumeSid:a.resume,write:!0,longSession:!0}),l={...await n(),...c.spawnEnv()},p=v();p&&t.out(p);let d=h(i,s=>t.out(s)),f=D(t,()=>d.interrupted(),/^error: (design agent failed|the design agent ended)/);try{let s=await w({...a,mode:r},{contextDir:u(process.cwd()),agent:d.agent,preflightTurn:()=>o(l),ask:async()=>[],out:f.out,emit:f.emit,progress:t.progress,isTTY:!1,auth:l,telemetry:c});return d.interrupted()&&s!==3?(t.out("interrupted \u2014 no session saved"),await c.end({exit_code:130}),t.done(130)):(s===1&&t.out(c.supportFooter()),await c.end({exit_code:s}),t.done(s))}finally{d.dispose()}}catch(r){let n=r instanceof Error?r.message:String(r);t?.event({type:"error",message:`error: design failed: ${n}`});let i=t?o=>t.out(o):o=>process.stderr.write(o+`
|
|
6
|
+
`);return i(`error: design failed: ${n}`),(process.env.ASSURANCE_LOG_LEVEL??"").toLowerCase()==="debug"&&r instanceof Error&&r.stack&&i(r.stack),i("hint: per-run trace logs live under .context/logs/ (design-*.log)"),t?t.done(1):1}}export{_ as designTestsCommand};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a,b}from"./chunk-XY5KWIRF.js";import"./chunk-FHKDTM5L.js";import"./chunk-2XMJ6YAE.js";import"./chunk-BKM2LWU2.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-2KS2YRIS.js";import"./chunk-UR6MHSHU.js";export{b as telemetryBootstrap,a as telemetryEnvName};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-
|
|
2
|
+
import{a}from"./chunk-Z25FKS3Y.js";import"./chunk-WV42KKEU.js";import"./chunk-UR6MHSHU.js";export{a as runAgent};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as l}from"./chunk-RZ4F3BHX.js";import{c as i,g as c}from"./chunk-
|
|
2
|
+
import{a as l}from"./chunk-RZ4F3BHX.js";import{c as i,g as c}from"./chunk-2KS2YRIS.js";import"./chunk-UR6MHSHU.js";import{readFileSync as u,writeFileSync as g,mkdirSync as d}from"fs";import{join as f}from"path";var h=f(i,"changelog-cache.json"),p=3600*1e3;function y(){try{let e=JSON.parse(u(h,"utf-8"));if(Date.now()-e.cachedAt<p)return e}catch{}return null}function m(e){try{d(i,{recursive:!0}),g(h,JSON.stringify({entries:e,cachedAt:Date.now()}))}catch{}}async function A(e){try{let t=y();if(t){let r=t.entries;return e?.all?r:r.slice(0,5)}let n=new AbortController,o=setTimeout(()=>n.abort(),5e3),a=await l(`${c}?per_page=30`,{headers:{Accept:"application/vnd.github+json"},signal:n.signal});if(clearTimeout(o),!a.ok)return[];let s=(await a.json()).map(r=>({version:r.tag_name.replace(/^v/,""),date:r.published_at?r.published_at.slice(0,10):"",body:r.body??""}));return m(s),e?.all?s:s.slice(0,5)}catch{return[]}}function v(e){if(e.length===0)return"Could not fetch changelog. Visit https://github.com/LambdaTest/kane-cli/releases";let t=["kane-cli Changelog","\u2500".repeat(40),""];for(let n of e){if(t.push(`v${n.version} (${n.date})`),n.body){let o=n.body.split(`
|
|
3
3
|
`).filter(a=>a.trim());for(let a of o)t.push(` ${a}`)}t.push("")}return t.join(`
|
|
4
4
|
`)}export{A as fetchChangelog,v as formatChangelog};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as V,c as te}from"./chunk-JFAFKHDX.js";import{a as w,b as ee}from"./chunk-OSALXGD4.js";import{a as ne}from"./chunk-427OQS2N.js";import{d as Z}from"./chunk-NVGBE2DR.js";import{a as X}from"./chunk-
|
|
2
|
+
import{a as V,c as te}from"./chunk-JFAFKHDX.js";import{a as w,b as ee}from"./chunk-OSALXGD4.js";import{a as ne}from"./chunk-427OQS2N.js";import{d as Z}from"./chunk-NVGBE2DR.js";import{a as X}from"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import{c as Y,d as z,n as Q}from"./chunk-A46NBRAP.js";import{a as j,b as F}from"./chunk-L4JIMNKW.js";import{c as J,e as W}from"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import{e as L,f as A,g as P,h as x}from"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";var de=new Set(["approve","edit","reject"]);function ye(k){let{contextDir:f,graph:s,ops:oe,by:l}=k,N=k.mintable??ne(),T=J(f);if(s.latestHash!==T)return{record:null,errors:[{code:"STALE_BASIS",detail:`graph opened at ${String(s.latestHash)} but chain head is ${String(T)} \u2014 re-open and retry`}]};let C=[],h=[],M=new Set;for(let e of oe){if(s.appliedEvents.has(e.eventId)||M.has(e.eventId)){C.push(e.eventId);continue}M.add(e.eventId),h.push(e)}if(h.length===0)return{record:null,errors:null,applied:[],skipped:C,minted:[],staleDelta:[]};let o=[],$=[],y=[],m=[],I=[],O=[],_=[...k.judgements??[]],D=[],q=new Map,B=new Set,G=[],b=new Set,se=new Set(N),H=new Set;for(let e of h){if(!de.has(e.kind))continue;let n=e.target,t=s.resolve(n)?.cid??n;H.has(t)&&o.push({code:"MULTIPLE_TERMINAL_OPS",detail:`${n} has more than one terminal op in this turn \u2014 normalize latest-wins first`}),H.add(t)}let E=(e,n,t)=>{let i=s.resolve(n);if(!i)return o.push({code:"UNKNOWN_NODE",detail:`${e}: ${n} names nothing in the graph`}),null;let p=s.tipOf(i.cid);return p!==t||s.superseded.has(t)?(o.push({code:"EXPECTED_CID_MOVED",detail:`${e}: ${n} moved or was archived since it was displayed`,data:{tip:p}}),null):t};for(let e of h)if(e.kind==="approve"){let n=E("approve",e.target,e.expectedCid);n&&m.push({id:n,kind:"review-item",resolution:"approved",edit:null,reason:null,by:l})}else if(e.kind==="reject"){let n=E("reject",e.target,e.expectedCid);if(!n)continue;if(m.push({id:n,kind:"review-item",resolution:"rejected",edit:null,reason:e.reason,by:l}),e.redirectTo!==void 0){let t=s.resolve(e.redirectTo);if(!t||t.superseded){o.push({code:"UNKNOWN_NODE",detail:`reject.redirectTo: ${e.redirectTo} is not a live node`});continue}I.push({kind:"node",old:n,new:t.cid,reason:e.reason,by:l})}}else if(e.kind==="edit"){let n=E("edit",e.target,e.expectedCid);if(!n)continue;let t=s.getNode(n);if(!t){o.push({code:"UNKNOWN_NODE",detail:`edit: ${e.target} node file unreadable`});continue}let i={...t.content};for(let[c,u]of Object.entries(e.edit))u!==void 0&&(i[c]=u);if(typeof i.title=="string"&&!i.title.trim()){o.push({code:"EMPTY_TITLE",detail:`edit: ${e.target} edited title is empty`});continue}let p=A(t.label,i);if(p.length>0){for(let c of p)o.push({code:c.code,detail:`edit ${e.target}: ${c.detail}`});continue}let d=j(t.label,i);if(d===n){m.push({id:n,kind:"review-item",resolution:"approved",edit:null,reason:null,by:l});continue}$.push({cid:d,label:t.label,content:i}),I.push({kind:"node",old:n,new:d,reason:e.reason??"edited in chat",by:l}),m.push({id:d,kind:"review-item",resolution:"edited",edit:{...e.edit},reason:null,by:l})}else if(e.kind==="enhance"){if(!E("enhance",e.target,e.expectedCid))continue;for(let t of e.edges){let i=s.nodeLabel.get(t.src)??"(unknown)",p=s.nodeLabel.get(t.dst)??"(unknown)";for(let r of x(t.type,i,p,t.props))o.push({code:r.code,detail:`enhance ${e.target}: ${r.detail}`});let d=F(t.type,t.src,t.dst,t.props);if(s.edgesFrom(t.src).some(r=>r.ecid===d)||y.some(r=>r.ecid===d))continue;let c=Y(s,t.type,t.src,t.dst,G);c&&o.push(c);let u=z(s,t.type,t.src,t.dst);u&&o.push(u);let a=P(t.type)?.cardinality;if(a==="one-live-per-src"||a==="one-live-per-src-and-dst"){let r=`${t.type}|${t.src}`;b.has(r)&&o.push({code:"CARDINALITY_VIOLATION",detail:`${t.type} from ${t.src}: two one-live edges in one turn`}),b.add(r)}if(a==="one-live-per-src-and-dst"){let r=`${t.type}|dst|${t.dst}`;b.has(r)&&o.push({code:"CARDINALITY_VIOLATION",detail:`${t.type} onto ${t.dst}: two one-live edges in one turn (strict 1:1)`}),b.add(r)}y.push({ecid:d,type:t.type,src:t.src,dst:t.dst,props:t.props}),G.push({src:t.src,dst:t.dst,type:t.type})}}else if(e.kind==="add"){if(!se.has(e.label)){o.push({code:"GATED_LABEL",detail:`add: ${e.label} is not mintable in v1 (gate: ${N.join("|")})`,data:{gate:[...N]}});continue}let n=s.heads.get(e.convSourceId),t=s.convChains.get(e.convSourceId);if(typeof n!="string"||!t){o.push({code:"CONV_SOURCE_MISSING",detail:`add: ${e.convSourceId} is not a live conversation source`});continue}let i=s.getNode(n)?.content?.blob,p=typeof i=="string"?Z(f,i)?.toString("utf8")??"":"",d=ee(p,e.cite.turn);if(d===null){o.push({code:"BAD_ANCHOR",detail:`add: ${w(e.cite.turn)} does not resolve in ${e.convSourceId}`});continue}if(!d.includes(e.cite.quote)){o.push({code:"QUOTE_MISMATCH",detail:`add: quote is not verbatim within ${w(e.cite.turn)}`});continue}let c={...e.content,derived:!0},u=A(e.label,c);if(u.length>0){for(let g of u)o.push({code:g.code,detail:`add: ${g.detail}`});continue}let a=j(e.label,c),r={source_id:e.convSourceId,source_cid:n,anchor:w(e.cite.turn),quote:e.cite.quote};for(let g of x(L.DERIVES,"source",e.label,r))o.push({code:g.code,detail:`add: ${g.detail}`});$.push({cid:a,label:e.label,content:c}),y.push({ecid:F("DERIVES",n,a,r),type:L.DERIVES,src:n,dst:a,props:r}),e.rationale&&_.push({about:a,rationale:e.rationale,by:l});let v=Q(e.label,g=>B.has(g),s.names.keys());v!==null&&(B.add(v),O.push({cid:a,slug:v,by:l})),D.push({cid:a,...v!==null?{slug:v}:{}}),q.set(e.eventId,a)}if(o.length)return{record:null,errors:o};let U=new Date().toISOString();for(let e of h){if(e.kind==="add"){let n=q.get(e.eventId);n&&V(f,{ts:U,command:"extract-chat",id:n,verdict:"add",polarity:"preference",tag:e.label,by:l,event_id:e.eventId,target:n});continue}for(let n of te(e,{ts:U,command:"extract-chat",by:l}))V(f,n)}let K=h.map(e=>e.eventId).sort(),re=W(f,{ts:new Date().toISOString(),proposal_id:null,nodes:$,edges:y,review:m,supersessions:I,...O.length>0?{names:O}:{},..._.length>0?{judgements:_}:{},event_ids:K,source_head_moves:{}},{expectPrev:T}),R=X(f),S=new Set;for(let e of I)if(e.kind==="node"){S.add(e.old);for(let n of R.edgesInto(e.old))S.add(n.src)}for(let e of D)S.add(e.cid);let ie=[...S].map(e=>({cid:e,state:R.stale(R.tipOf(e))})).filter(e=>e.state!=="fresh");return{record:re.record,errors:null,applied:K,skipped:C,minted:D,staleDelta:ie}}export{ye as commitChatTurn};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b,c}from"./chunk-
|
|
2
|
+
import{a,b,c}from"./chunk-26H3PDVN.js";import"./chunk-GG43HSU2.js";import"./chunk-OSALXGD4.js";import"./chunk-NVGBE2DR.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";export{c as makeChatController,b as questionStub,a as recommendationPicks};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as Z,d as ee,e as te,f as ne}from"./chunk-GG43HSU2.js";import{b as B,d as Y}from"./chunk-OSALXGD4.js";import{d as X}from"./chunk-NVGBE2DR.js";var oe=new Set(["approve","edit","reject"]);function ae(i,t){return`chatop:${t}:${i.target??"new"}:${i.op}:${i.seq}`}function ue(i,t,x,k){let c=ae(i,t),f=i.payload;switch(i.op){case"approve":return{kind:"approve",target:i.target,expectedCid:i.expected_cid,eventId:c};case"edit":{let{reason:o,...b}=f;return{kind:"edit",target:i.target,expectedCid:i.expected_cid,edit:b,reason:o,eventId:c}}case"enhance":return{kind:"enhance",target:i.target,expectedCid:i.expected_cid,edges:f.edges??[],eventId:c};case"reject":return{kind:"reject",target:i.target,expectedCid:i.expected_cid,reason:f.reason??"",redirectTo:f.redirect_to,eventId:c};case"add":{let o=f.proposal_item??{},b=String(o.label??"");if(!x.mint_gate.includes(b))throw new Error(`GATED_LABEL: cannot mint "${b}" (gate: ${x.mint_gate.join(", ")})`);let u=o.cite??{},p=o.conv_source_id??k;if(!p||typeof u.turn!="number"||!u.quote)throw new Error("INVALID_ADD: a chat add requires a conversation cite {turn, quote} and conv_source_id");return{kind:"add",label:b,content:o.content??{},cite:{turn:u.turn,quote:u.quote},convSourceId:p,rationale:o.rationale,eventId:c}}}}function re(i,t,x={}){let k=x.turn??0,c=[],f=[];for(let u of i)(u.op==="add"||u.op==="enhance")&&f.push(u);let o=new Map;for(let u of i){if(!oe.has(u.op)||!u.target)continue;let p=o.get(u.target)??[];p.push(u),o.set(u.target,p)}for(let[u,p]of o){let w=Math.max(...p.map(_=>_.seq)),C=p.filter(_=>_.seq===w);if(C.length>1){c.push({target:u,seq:w,kinds:C.map(_=>_.op)});continue}f.push(C[0])}return{chatOps:f.sort((u,p)=>u.seq-p.seq).map(u=>ue(u,k,t,x.convSourceId)),ambiguous:c}}function ce(i){let t=[];return i.questions.forEach((x,k)=>{if(i.resolution[k])return;let c=x.recommended_index!=null?x.options[x.recommended_index]?.label:void 0;c!=null&&t.push(x.risk==="high"?`${c} \u203C`:c)}),t.length>3?`${t.slice(0,3).join(" \xB7 ")} \xB7 +${t.length-3} more`:t.join(" \xB7 ")}function ie(i){let t=i.text.replace(/\?+\s*$/,"");return t.length<=36?t:`${t.slice(0,33)}\u2026`}function le(i){return i.use_cases??[]}var de={acs:"acceptance criteria",scenarios:"scenarios",tests:"tests",gaps:"gaps"};function ge(i){let t=[],x=[],k=(o,b)=>{b.length!==0&&(x.push(o),t.push(...b))},c=o=>typeof o=="string"&&/^[a-z]{1,4}\d{1,4}$/i.test(o)?o:null,f=o=>{let b=c(o.automates)??"1 scenario",u=o.verifies??[],p=u.map(c).filter(_=>_!==null).slice(0,2),w=u.length-p.length,C=p.length?`${p.join(" ")}${w>0?` +${w}`:""}`:`${u.length} ACs`;return`covers ${b} \xB7 verifies ${C}`};return k("acs",(i.acs??[]).map(o=>({temp_ref:o.temp_ref,title:o.text,kind:"ac",badge:String(o.kind),extra:{...o.expected_answer?{expects:`${String(o.expected_answer.operator??"")} \xB7 ${String(o.expected_answer.operand??"")}`}:{},"scoped to":o.scoped_to??"(use-case)"}}))),k("scenarios",(i.scenarios??[]).map(o=>({temp_ref:o.temp_ref,title:o.title,kind:"scenario",badge:o.case_type,why:o.intent,depends_on_hint:o.depends_on??[],extra:{technique:o.technique_notes}}))),k("tests",(i.tests??[]).map(o=>({temp_ref:o.temp_ref,title:o.title,kind:"test",why:f(o),depends_on_hint:o.reuses??[],extra:{automates:String(o.automates??"?"),verifies:(o.verifies??[]).join(", "),check:o.check?`${String(o.check.kind)} vs ${String(o.check.verified_against)}`:"?"}}))),k("gaps",(i.gaps??[]).map(o=>({temp_ref:o.temp_ref??o.ref??"?",title:String(o.question?.header??o.kind),kind:"gap",badge:o.kind,why:o.risk_rationale}))),{items:t,heading:x.join(" + ")||"design"}}function be(i={}){let t={turns:[],thinking:ee(),pending:null,confirm:null,status:"idle",ledger:[],activeTurn:null,stream:null,checkpoint:!1},x=e=>{let n=[],r=e.minted.map(a=>a.slug).filter(Boolean);r.length&&n.push(`added ${r.join(", ")}`);let s=e.applied.length-e.minted.length;return s>0&&n.push(`${s} change${s===1?"":"s"} applied`),e.staleDelta.length&&n.push(`stales ${e.staleDelta.length}`),n.join(" \xB7 ")||"no changes"},k=[];i.onRender&&k.push(i.onRender);let c=0,f=0,o=null,b=null,u=null,p=[],w=0,C=e=>{if(!(!u||!i.contextDir||!e.trim()))try{let n=i.refreshGraph?.()??i.graph;if(!n)return;Y({contextDir:i.contextDir,graph:n,sourceId:u,text:e,by:i.by??{kind:"human",id:"owner"}})}catch{}},_=e=>{if(!u||!i.contextDir)return;let n=i.refreshGraph?.()??i.graph,r=n?.heads.get(u),s=n?.convChains.get(u);if(!n||typeof r!="string"||!s)return;let a=n.getNode(r)?.content?.blob,g=typeof a=="string"?X(i.contextDir,a)?.toString("utf8")??"":"";if(g)for(let y of e){if(y.kind!=="add"||y.convSourceId!==u)continue;let E=B(g,y.cite.turn);if(!(E!==null&&E.includes(y.cite.quote)))for(let S=s.turns;S>=1;S--){let N=B(g,S);if(N!==null&&N.includes(y.cite.quote)){y.cite={...y.cite,turn:S};break}}}},P=null,F=new Map,Q=new Map,G=null,m=()=>{D&&(clearTimeout(D),D=null);for(let e of k)e()},D=null,U=()=>{D||(D=setTimeout(()=>{D=null;for(let e of k)e()},80))},d=e=>{t.ledger.push(e)},R=null,O=!1,q=(e=!1)=>{R?d({kind:"agent",text:R}):e&&O&&d({kind:"note",text:'chat to refine ("looks good" approves; /done finishes)'}),R=null,O=!1},se=()=>{R=null,O=!1},T=null,W=e=>{if(T){if(e)for(let n of T.items){let r=e.get(n.temp_ref);r&&(n.logical_id=r)}d({kind:"turn",...T}),T=null}},A=()=>{W(),t.activeTurn&&(t.activeTurn=null)},z=(e,n)=>n.choice||(n.selected_index!=null?e.options[n.selected_index]?.label??"?":"?"),L=()=>{let e=t.pending;if(!e)return;if(!e.resolution.every(Boolean)){e.cursor=e.resolution.findIndex(s=>s===null);return}let n=e.questions.map((s,a)=>{let g=e.resolution[a];return g.form==="deferred"?{id:s.id,selected_index:null,free_text:null}:g.free_text!=null?{id:s.id,selected_index:null,free_text:g.free_text}:{id:s.id,selected_index:g.selected_index,free_text:null}});t.pending=null,t.status=t.status==="pausing"?"pausing":"streaming";let r=P;P=null,r?.(n)},j=(e,n)=>{let r=t.pending,s=r.questions[e],a=r.resolution[e];r.resolution[e]=n;let g=ie(s);a?d({kind:"answer",receipt:{form:"changed",qNum:e+1,stub:g,choice:z(s,n),prev:a.choice}}):n.form==="deferred"?d({kind:"answer",receipt:{form:"deferred",qNum:e+1,stub:g}}):d({kind:"answer",receipt:{form:n.form,qNum:e+1,stub:g,choice:z(s,n)}})},H=()=>{let e=t.pending;e&&(e.questions.forEach((n,r)=>{e.resolution[r]||j(r,{form:"deferred",selected_index:null,free_text:null,choice:""})}),L())},I=new Map,K=e=>{I.clear();let n={high:0,med:1,low:2};return e=e.map((r,s)=>({q:r,i:s})).sort((r,s)=>(n[r.q.risk]??3)-(n[s.q.risk]??3)||r.i-s.i).map(({q:r})=>r),{questions:e,cursor:0,resolution:e.map(()=>null)}};return{state:t,explainLines(e){if(!i.explain||!i.graph||i.contextDir===void 0)return null;let n=i.explain(i.contextDir,i.graph,e);return n.target?[`${n.target.label} ${n.target.slug??n.target.cid.slice(0,19)}:`,...n.entries.map(r=>` [${r.kind}] ${r.rationale??r.detail}`)]:null},explainRef(e){if(!i.explain||!i.graph||i.contextDir===void 0){d({kind:"note",text:"explain isn't available here"}),m();return}let n=i.explain(i.contextDir,i.graph,e),r=n.target?[`${n.target.label} ${n.target.slug??n.target.cid.slice(0,19)}:`,...n.entries.map(s=>` [${s.kind}] ${s.rationale??s.detail}`)].join(`
|
|
3
|
+
`):`unknown ref: ${e}`;d({kind:"note",text:r}),m()},subscribe(e){return k.push(e),()=>{let n=k.indexOf(e);n>=0&&k.splice(n,1)}},submit(e){if(t.confirm&&(t.confirm=null),!t.pending){if(!o){t.turns.push({role:"user",text:e}),d({kind:"user",text:e}),t.notice="the agent isn't running \u2014 nothing sent",m();return}for(t.notice=void 0,t.checkpoint=!1,q(),t.turns.push({role:"user",text:e}),d({kind:"user",text:e}),C(e),t.status="streaming",t.busySince=Date.now(),t.error=void 0,f+=1;p.length>0;)f+=1,o({type:"user_message",message_id:`u${f}-receipt`,text:p.shift()});o({type:"user_message",message_id:`u${f}`,text:e}),m()}},attachSender(e){let n=o;return o=e,()=>{o=n}},attachOnCommitted(e){b=e},attachConversationSource(e){u=e},holdReceipt(e){p.push(e),t.checkpoint=!0,m()},drainHeldReceipts(){return p.splice(0,p.length)},submitAnswer(e,n){let r=t.pending,s=r?.questions[e],a=s?.options[n]?.label;!r||!s||a==null||(j(e,{form:"answered",selected_index:n,free_text:null,choice:a}),L(),m())},submitFreeText(e,n){let r=t.pending,s=r?.questions[e],a=n.trim();!r||!s||!a||(j(e,{form:"answered",selected_index:null,free_text:a,choice:a}),L(),m())},toggleOption(e,n){let r=t.pending?.questions[e];if(!r||r.options[n]==null)return;let s=I.get(e)??new Set;s.has(n)?s.delete(n):s.add(n),I.set(e,s),m()},multiSelection(e){return[...I.get(e)??[]].sort((n,r)=>n-r)},confirmMulti(e){let n=t.pending,r=n?.questions[e];if(!n||!r)return;let s=[...I.get(e)??[]].sort((g,y)=>g-y).map(g=>r.options[g]?.label).filter(g=>g!=null);if(s.length===0)return;I.delete(e);let a=s.join(", ");j(e,{form:"answered",selected_index:null,free_text:a,choice:a}),L(),m()},goWithRecommendations(){let e=t.pending;if(!e)return{picks:""};let n=ce(e),r=null;return e.questions.forEach((s,a)=>{if(e.resolution[a])return;let g=s.recommended_index,y=g!=null?s.options[g]?.label:void 0;if(y==null){r===null&&(r=a);return}j(a,{form:"assumed",selected_index:g,free_text:null,choice:y})}),r!==null?(e.cursor=r,m(),{blocked:r}):(L(),m(),{picks:n})},reopenQuestion(){let e=t.pending;if(!e)return;let n=e.cursor<0?e.questions.length:e.cursor;for(let r=n-1;r>=0;r--)if(e.resolution[r]){e.cursor=r,m();return}},continueParked(){if(o){for(t.checkpoint=!1,d({kind:"continued"});p.length>0;)f+=1,o({type:"user_message",message_id:`u${f}-receipt`,text:p.shift()});f+=1,o({type:"user_message",message_id:`u${f}`,text:"continue"}),t.status="streaming",t.busySince=Date.now(),m()}},note(e){d({kind:"note",text:e}),m()},aliasOf(e){return Q.get(e)},registerAliases(e){for(let n of e)Q.set(n.ref,n.cid);W(new Map(e.filter(n=>n.id).map(n=>[n.ref,n.id]))),m()},setWorking(e){if(e!=null){if(t.status!=="idle"&&t.status!=="working")return;t.status==="idle"&&(t.busySince=Date.now()),t.status="working",t.workingLabel=e}else{if(t.status!=="working")return;t.status="idle",t.workingLabel=void 0}m()},ledger(e){e.kind==="commit"&&W(),(e.kind==="pause"||e.kind==="error"||e.kind==="summary")&&(A(),q()),(e.kind==="summary"||e.kind==="pause")&&(t.stream=null),d(e),e.kind==="commit"&&(e.ok?q(!0):se()),m()},senderAlive(){return o!=null},completeSession(){H(),o?.({type:"session_complete"}),t.status="idle",m()},requestPause(){H(),t.status="pausing";let e=o;Promise.resolve().then(()=>e?.({type:"pause"})),m()},ask(e){return t.pending=K(e),F=new Map(e.map((n,r)=>[n.id,r+1])),t.status="awaiting-input",m(),new Promise(n=>{P=n})},noteCoercion(e,n){d({kind:"answer",receipt:{form:"assumed",qNum:F.get(e.id)??0,stub:ie(e),choice:n,note:"your typed answer couldn't be used here"}}),m()},onAgentEvent(e){switch(e.type){case"reasoning_delta":case"reasoning_done":case"tool_activity":case"decision_activity":{let n=t.thinking;if(t.thinking=ne(n,e),t.thinking!==n){if(e.type==="reasoning_done"&&e.present)d({kind:"thinking",tookMs:e.took_ms});else if(e.type==="tool_activity"&&e.status!=="started")d({kind:"tool",name:e.name,status:e.status==="done"?"ok":e.status,detail:e.detail});else if(e.type==="decision_activity"){let r=`\xB7 ${te(e)}`,s=t.ledger.length-1;for(;s>=0&&t.ledger[s].kind==="tool";)s--;let a=t.ledger[s];a&&a.kind==="note"&&a.text===r||d({kind:"note",text:r})}}if(e.type==="reasoning_delta"){U();return}break}case"usage":t.credits={turn:e.credits,total:e.total_credits};break;case"text_delta":{let n=G;if(n&&(e.turn_id<n.turn_id||e.turn_id===n.turn_id&&e.attempt<n.attempt))return;(!n||n.turn_id!==e.turn_id||n.attempt!==e.attempt)&&(G={turn_id:e.turn_id,attempt:e.attempt},t.stream={text:""}),t.stream={text:(t.stream?.text??"")+e.text},U();return}case"progress":break;case"proposal":{c+=1,A(),t.stream=null,t.busySince&&(d({kind:"note",text:`\u2713 done in ${Math.max(1,Math.round((Date.now()-t.busySince)/1e3))}s`}),t.busySince=void 0);let n=le(e.proposal),r=i.dedupFlags?.(e.proposal);if(r)for(let s of n){let a=r.get(s.temp_ref);a&&(s.matches_existing=a)}t.turns.push({role:"agent",turnIndex:c,items:n,text:e.narrative}),R=e.narrative??null,O=!0,t.activeTurn={turnIndex:c,heading:"use-cases",items:n},T={turnIndex:c,heading:"use-cases",items:n},(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"design":{c+=1,A(),t.stream=null,t.busySince&&(d({kind:"note",text:`\u2713 done in ${Math.max(1,Math.round((Date.now()-t.busySince)/1e3))}s`}),t.busySince=void 0);let{items:n,heading:r}=ge(e.design),s=r.split(" + ").map(a=>de[a]??a).join(" + ");d({kind:"banner",text:`designing: ${s}`}),t.turns.push({role:"agent",turnIndex:c,items:n,itemsHeading:r,text:e.narrative}),R=e.narrative??null,O=!0,t.activeTurn={turnIndex:c,heading:r,items:n},T={turnIndex:c,heading:r,items:n},(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"ask_user":t.pending=K(e.questions),t.status="awaiting-input";break;case"chat_ops":{c+=1,A(),t.stream=null,t.status==="streaming"&&(t.status="idle");let n=e.chat_ops??e,r=Array.isArray(n.ops)?n.ops:[],s=n.text??e.text??"",a=i.refreshGraph?.()??i.graph,g=l=>Q.get(l)??l,y=r.map(l=>{if(!l.target)return l;let h=g(l.target),v=l.expected_cid;if(v==null&&a){let J=a.resolve(h);J&&(v=a.tipOf(J.cid))}let $=l.payload?.redirect_to,M=$&&g($);return h===l.target&&v===l.expected_cid&&M===$?l:{...l,target:h,expected_cid:v,...M!==$?{payload:{...l.payload,redirect_to:M}}:{}}}),E;try{if(!Array.isArray(n.ops))throw new Error("the agent sent an unreadable change set (no ops array) \u2014 say it again in different words");E=re(y,i.descriptor??{mint_gate:[]},{turn:c,...u?{convSourceId:u}:{}})}catch(l){t.error=l instanceof Error?l.message:String(l),t.turns.push({role:"agent",turnIndex:c,text:s,narration:t.error}),s&&d({kind:"agent",text:s}),d({kind:"error",title:t.error,detail:[]});break}let{chatOps:S,ambiguous:N}=E;if(N.length>0){let l=N[0];t.confirm={kind:"ambiguity-confirm",prompt:`did you mean edit or ${l.kinds.filter(h=>h!=="edit").join("/")} on ${l.target}?`},t.turns.push({role:"agent",turnIndex:c,text:s}),s&&d({kind:"agent",text:s});break}if(_(S),i.commitChatTurn&&S.length>0){let l=i.commitChatTurn({contextDir:i.contextDir??"",graph:i.refreshGraph?.()??i.graph,ops:S,by:i.by??{kind:"human",id:"owner"},...i.descriptor?.mint_gate?{mintable:i.descriptor.mint_gate}:{}});if(l.errors)t.error=l.errors.map(h=>h.detail).join("; "),t.turns.push({role:"agent",turnIndex:c,text:s}),d({kind:"commit",ok:!1,line:"commit failed \u2014 nothing landed",warnings:l.errors.map(h=>`${h.code}: ${h.detail}`)}),p.push(["COMMIT FAILED (chat turn) \u2014 nothing landed; do not assume any of your last ops applied.",...l.errors.map(h=>`- ${h.code}: ${h.detail}`),...l.errors.some(h=>h.code==="UNKNOWN_FIELD")?["If you were changing citations or matched-existing content, that is proposal territory (approve/re-propose) \u2014 a chat edit can only replace a node's own schema fields."]:[]].join(`
|
|
4
|
+
`)),s&&d({kind:"agent",text:s});else{l.applied.length>0&&i.session?.markApplied(l.applied);let h=x(l);t.turns.push({role:"agent",turnIndex:c,text:s,narration:h}),d({kind:"commit",ok:!0,line:h});let v=i.refreshGraph?.();if(v&&b&&b(v),v)try{w+=1;let V=i.descriptor?.mint_gate?.includes("usecase")?"extract":"design",$=Z({verb:V,commitN:w,phase:"chat",committed:l.minted.map(M=>({cid:M.cid,...M.slug?{logical_id:M.slug}:{}}))},v);p.push($.text)}catch{}s&&d({kind:"agent",text:s})}}else t.turns.push({role:"agent",turnIndex:c,text:s}),s&&d({kind:"agent",text:s});C(s);break}case"done":case"session_complete":A(),q(),t.status="idle",o=null;break;case"error":A(),q(),t.stream=null,t.status="idle",t.error=e.message,o=null,d({kind:"error",title:e.message,detail:[]});break;case"session_paused":break;default:break}m()}}}export{ce as a,ie as b,be as c};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as K,c as V,d as z,e as ee,f as te}from"./chunk-
|
|
2
|
+
import{b as K,c as V,d as z,e as ee,f as te}from"./chunk-VYQMCLKG.js";import{c as J}from"./chunk-7APDXIKI.js";import{a as Q}from"./chunk-6JTEWZ75.js";import{a as Z}from"./chunk-FPFOW6BS.js";import{b as H}from"./chunk-SACSQY3Q.js";import{b as W}from"./chunk-7LWXIRI3.js";import{p as E}from"./chunk-Y5RNCJAN.js";import{a as O}from"./chunk-2WVKOZ6W.js";import{a as _}from"./chunk-RH4GCEFX.js";import{a as k,b as A,d as Y}from"./chunk-VE3SUJMA.js";import{a as q}from"./chunk-YJIESLN6.js";import{a as G}from"./chunk-HCBYKLMW.js";import{a as c,b as u,i as I,j as X}from"./chunk-C44QQJR4.js";import{a as ue}from"./chunk-6YGTRKDT.js";import{e as F}from"./chunk-UR6MHSHU.js";var i=F(ue(),1);var r=F(G(),1);function _e({resultRef:h,mode:d="singleshot",loginCompleteRef:f}){let{exit:m}=X(),C=(0,i.useRef)(new q),S=(0,i.useRef)(new Q),v=(0,i.useRef)(new J),t=C.current,l=S.current,$=v.current,ne=K(),[P,g]=(0,i.useState)(d==="login"?"login":"gate"),[L,re]=(0,i.useState)(null),[de,R]=(0,i.useState)(null),[ge,T]=(0,i.useState)(null),[N,oe]=(0,i.useState)(null),[U,B]=(0,i.useState)([]),x=(0,i.useCallback)((e,n,s,o)=>$.log(e,n,s,o),[$]),pe=(0,i.useCallback)((e,n)=>{e?k(t,l,e,n):l.save({project_id:null,project_name:null,folder_id:null,folder_name:null})},[t,l]),y=(0,i.useCallback)(()=>{d==="login"?(f&&(f.current=!0),m()):g("input")},[d,m,f]),D=(0,i.useCallback)((e,n)=>{let s=k(t,l,e,n);if(d==="login"){g("ensure-project");return}Y(s)?y():s.projectId?g("ensure-folder"):g("ensure-project")},[t,l,y,d]);I((e,n)=>{n.ctrl&&e==="c"&&E(0,"Ctrl+C exit")});let M=(0,i.useRef)(!1);i.default.useEffect(()=>{M.current||(M.current=!0,d!=="login"&&te(t,x).then(e=>{re(e),e.status==="authenticated"?D(e.result.profile,e.result.env):e.status==="needs_pick"?g("pick"):(R(e.profile??null),T(e.env??null),g("login"))}).catch(e=>{oe(`Auth check failed: ${e instanceof Error?e.message:String(e)}`)}))},[t,x]);let ie=(0,i.useCallback)(e=>{h.current={objective:e},m()},[h,m]),se=(0,i.useCallback)(async(e,n)=>{t.setActiveProfile(e),t.setDefaultEnv(n),(await ee(t,e,n,x)).status==="authenticated"?D(e,n):(R(e),T(n),g("login"))},[t,x,D]),w=(0,i.useCallback)(()=>{let e=t.getActiveProfile(),n=t.getDefaultEnv();if(!e)return null;let s=_(n),o=t.loadBasicAuth(e,n);return new Z(s.controllerBaseUrl,async()=>t.loadCredentials(e,n)?.access_token??null,o,x)},[t,x]),le=(0,i.useCallback)(async()=>{let e=w();if(!e)return null;let n=e.cached??await e.resolve();if(!n)return null;let s=_(t.getDefaultEnv()),o=new O(s.tmsBaseUrl,n.username,n.access_key);try{let p=(await o.listProjects()).find(b=>b.name==="KaneAI Generated");if(p)return{id:p.project_id,name:p.name};let j=await o.createProject("KaneAI Generated");return{id:j.id,name:j.name}}catch{return null}},[w,t]),ae=(0,i.useCallback)(async e=>{let n=w();if(!n)return null;let s=n.cached??await n.resolve();if(!s)return null;let o=_(t.getDefaultEnv()),a=new O(o.tmsBaseUrl,s.username,s.access_key);try{let j=(await a.listFolders(e)).find(ce=>ce.name==="Untitled");if(j)return{id:j.id,name:j.name};let b=await a.createFolder(e,"Untitled");return{id:b.id,name:b.name}}catch{return null}},[w,t]);if(P==="gate")return(0,r.jsx)(c,{paddingX:1,children:(0,r.jsx)(u,{color:"yellow",children:"Checking authentication..."})});if(N)return(0,r.jsxs)(c,{flexDirection:"column",paddingX:1,children:[(0,r.jsx)(u,{color:"red",children:N}),(0,r.jsx)(u,{color:"gray",children:"Press Ctrl+C to exit."})]});if(P==="pick"&&L?.status==="needs_pick")return(0,r.jsx)(fe,{profiles:L.profiles,onSelect:se});if(P==="login")return(0,r.jsx)(z,{devMode:process.env.KANE_DEV_MODE==="1",profiles:t.listProfiles(),onBasicLogin:async(e,n,s,o)=>{let{validateBasicAuth:a}=await import("./validate-basic-Z46MAH2G.js");await a(n,s,o),t.saveBasicAuth(e,n,{username:s,access_key:o}),t.setActiveProfile(e),t.setDefaultEnv(n)},onOAuthLogin:async(e,n)=>{let{LoginFlow:s}=await import("./login-flow-KW5T7WRJ.js");t.setDefaultEnv(n),t.setActiveProfile(e),await new s(e,n,t).login()},onComplete:(e,n)=>{R(e),T(n),t.setActiveProfile(e),t.setDefaultEnv(n),D(e,n)},onCancel:()=>{E(0,"Login cancelled")}});if(P==="ensure-project"){let e=t.getActiveProfile()??"default",n=t.getDefaultEnv(),s=()=>{if(d==="login"){g("ensure-folder");return}k(t,l,e,n).folderId?y():g("ensure-folder")};return(0,r.jsxs)(c,{flexDirection:"column",children:[(0,r.jsx)(c,{paddingX:1,marginBottom:1,children:(0,r.jsx)(u,{color:"yellow",children:"Project & folder are required to save tests \xB7 Esc to use defaults \xB7 Ctrl+C to exit"})}),(0,r.jsx)(H,{resolver:w(),currentProjectId:l.load().project_id,env:n,onSelect:(o,a)=>{A(t,l,e,n,{projectId:o,projectName:a}),B(p=>[...p,`\u2713 Project: ${a} (${o})`]),s()},onCancel:async()=>{let o=await le();o&&(A(t,l,e,n,{projectId:o.id,projectName:o.name}),B(a=>[...a,`\u2713 Default project: ${o.name} (${o.id})`]),s())}})]})}if(P==="ensure-folder"){let e=t.getActiveProfile()??"default",n=t.getDefaultEnv(),s=t.loadProfileConfig(e,n);return(0,r.jsxs)(c,{flexDirection:"column",children:[(0,r.jsx)(c,{paddingX:1,marginBottom:1,children:(0,r.jsx)(u,{color:"yellow",children:"Project & folder are required to save tests \xB7 Esc to use defaults \xB7 Ctrl+C to exit"})}),(0,r.jsx)(W,{resolver:w(),projectId:s?.project_id??"",currentFolderId:l.load().folder_id,env:n,onSelect:(o,a)=>{A(t,l,e,n,{folderId:o,folderName:a}),B(p=>[...p,`\u2713 Folder: ${a} (${o})`]),y()},onCancel:async()=>{if(!s?.project_id)return;let o=await ae(s.project_id);o&&(A(t,l,e,n,{folderId:o.id,folderName:o.name}),B(a=>[...a,`\u2713 Default folder: ${o.name} (${o.id})`]),y())}})]})}return P==="input"?(0,r.jsxs)(c,{flexDirection:"column",children:[U.length>0&&(0,r.jsx)(c,{flexDirection:"column",paddingX:1,marginBottom:1,children:U.map((e,n)=>(0,r.jsx)(u,{color:"green",children:e},n))}),(0,r.jsx)(V,{onSubmit:ie,onEscape:()=>E(0,"User pressed Escape"),history:ne,placeholder:"Type an objective..."})]}):(0,r.jsx)(r.Fragment,{})}function fe({profiles:h,onSelect:d}){let[f,m]=(0,i.useState)(0),[C,S]=(0,i.useState)(!1);return I((v,t)=>{if(!C){if(t.escape){E(0,"Profile picker cancelled");return}if(t.upArrow&&f>0&&m(l=>l-1),t.downArrow&&f<h.length-1&&m(l=>l+1),t.return){S(!0);let l=h[f];d(l.profile,l.env).catch(()=>S(!1))}}}),(0,r.jsxs)(c,{flexDirection:"column",paddingX:1,children:[(0,r.jsx)(u,{color:"#ff9500",bold:!0,children:"Select a profile:"}),(0,r.jsx)(c,{marginTop:1,flexDirection:"column",children:h.map((v,t)=>(0,r.jsxs)(u,{children:[t===f?"\u276F ":" ",(0,r.jsx)(u,{color:t===f?"#ff9500":"white",bold:t===f,children:v.profile}),(0,r.jsxs)(u,{color:"gray",children:[" [",v.env,"]"]})]},`${v.profile}-${v.env}`))}),C&&(0,r.jsx)(c,{marginTop:1,children:(0,r.jsx)(u,{color:"yellow",children:"Validating credentials..."})})]})}export{_e as a};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{homedir as a}from"os";import{join as t}from"path";var m="0.6.10",d="kane-cli",e=t(a(),".testmuai","kaneai"),g=t(e,"profiles"),h=t(e,"tui-config.json"),_=t(e,"media"),A="https://registry.npmjs.org/@testmuai/kane-cli",L="https://api.github.com/repos/LambdaTest/kane-cli/releases",n="@testmuai/kane-cli-skill",b=`https://registry.npmjs.org/${n}`,r="kane-cli",x=[{dir:t(a(),".claude","skills",r),agent:"Claude Code"},{dir:t(a(),".agents","skills",r),agent:"Codex CLI"},{dir:t(a(),".gemini","skills",r),agent:"Gemini CLI"}],u="https://dd-proxy.lambdatest.com/intake/kane-cli",U="https://kaneai-playground.lambdatest.io",R=9222,I=9230,E=t(e,"chrome-profiles"),o=t(e,"hints"),C=t(o,"state.json");function T(s){return t(o,`catalog-${s}.json`)}var c="127.0.0.1",S=18392,f=18400,i="/callback";function N(s){return`http://${c}:${s}${i}`}var P="KANE CLI",B="*",O={prod:{authBaseUrl:"https://auth.lambdatest.com",consentUrl:"https://accounts.lambdatest.com",controllerBaseUrl:"https://kaneai-api.lambdatest.com/v16-controller/v1",tmsBaseUrl:"https://test-manager-api.lambdatest.com/api",testGeneratorBaseUrl:"https://test-manager-api.lambdatest.com",secretsBaseUrl:"https://api-hyperexecute.lambdatest.com",testManagerUiUrl:"https://test-manager.lambdatest.com",shareApiBaseUrl:"https://api.lambdatest.com",v16ServerHost:"https://kaneai-api.lambdatest.com/v16-server",evidenceViewerUrl:"https://evidence.lambdatest.com",mediaArtefactsHost:"prod-mobile-artefacts.lambdatest.com"},stage:{authBaseUrl:"https://stage-auth.lambdatestinternal.com",consentUrl:"https://stage-accounts.lambdatestinternal.com",controllerBaseUrl:"https://auteur-stage-automind.lambdatestinternal.com/v16-controller/v1",tmsBaseUrl:"https://stage-test-manager-api.lambdatestinternal.com/api",testGeneratorBaseUrl:"https://stage-test-manager-api.lambdatestinternal.com",secretsBaseUrl:"https://api-stage-hyperexecute.lambdatestinternal.com",testManagerUiUrl:"https://stage-test-manager.lambdatestinternal.com",shareApiBaseUrl:"https://stage-api.lambdatestinternal.com",v16ServerHost:"https://auteur-stage-automind.lambdatestinternal.com/v16-server",evidenceViewerUrl:"https://stage-evidence.lambdatestinternal.com",mediaArtefactsHost:"stage-mobile-artefacts.lambdatestinternal.com"}},k={orange:"#ff9500",generateAccent:"#0d9488",assuranceAccent:"#b388ff",purple:"#b388ff",secondary:"#888888",dim:"#666666",muted:"#444444",green:"#4ade80",red:"#ef4444"};export{m as a,d as b,e as c,h as d,_ as e,A as f,L as g,n as h,x as i,u as j,U as k,R as l,I as m,E as n,C as o,T as p,c as q,S as r,f as s,i as t,N as u,P as v,B as w,O as x,k as y};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as b}from"./chunk-
|
|
2
|
+
import{a as b}from"./chunk-6JTEWZ75.js";import{a as O}from"./chunk-RH4GCEFX.js";import{e as w,j as N}from"./chunk-2KS2YRIS.js";import{spawn as U,execSync as B}from"child_process";import{appendFileSync as L,existsSync as E,mkdirSync as K}from"fs";import{homedir as D}from"os";import{join as G,resolve as t,dirname as C}from"path";import{fileURLToPath as W}from"url";import{createInterface as V}from"readline";async function*T(e){let n=V({input:e,crlfDelay:1/0});for await(let l of n){let r=l.trim();if(r)try{let a=JSON.parse(r);a&&typeof a.type=="string"&&(yield a)}catch{}}}function M(e){return e==="action"?{set:{V16_AGENT_ENABLE_ALL_BLOCKERS:"true",V16_BIFURCATION_PHASES:"1"},unset:["V16_NETWORK_WS","V16_NETWORK_SSE"]}:{set:{V16_BIFURCATION_PHASES:"1"},unset:["V16_AGENT_ENABLE_ALL_BLOCKERS","V16_NETWORK_WS","V16_NETWORK_SSE"]}}function h(e){return e?{set:{},unset:["V16_AGENT_SKIP_CP_FINAL"]}:{set:{V16_AGENT_SKIP_CP_FINAL:"true"},unset:[]}}function I(e){return e==="dom"?{set:{V16_AGENT_ENABLE_TEXTUAL_VISUAL:"true"},unset:[]}:{set:{},unset:["V16_AGENT_ENABLE_TEXTUAL_VISUAL"]}}var o=C(W(import.meta.url));function j(){for(let e of["python3","python"])try{return B(`${e} --version`,{stdio:"ignore"}),e}catch{}return null}function $(){let n=process.platform==="win32"?"v16-runner.exe":"v16-runner",l={"darwin-arm64":["@testmuai/kane-cli-darwin-arm64","@lambdatestincprivate/kane-cli-darwin-arm64"],"darwin-x64":["@testmuai/kane-cli-darwin-x64","@lambdatestincprivate/kane-cli-darwin-x64"],"linux-x64":["@testmuai/kane-cli-linux-x64","@lambdatestincprivate/kane-cli-linux-x64"],"linux-arm64":["@testmuai/kane-cli-linux-arm64","@lambdatestincprivate/kane-cli-linux-arm64"],"win32-x64":["@testmuai/kane-cli-win-x64","@lambdatestincprivate/kane-cli-win-x64"]},r=`${process.platform}-${process.arch}`,a=l[r];if(a)for(let s of a){let m=[t(o,"..","node_modules",s,"bin",n),t(o,"..","..","node_modules",s,"bin",n),t(o,"..","..","..","node_modules",s,"bin",n),t(o,"..","..","..","..","node_modules",s,"bin",n)];for(let u of m)if(E(u))return{cmd:u,args:[]}}let f=[t(o,"bin",n),t(o,"..","bin",n),t(o,"..","..","..","..","v16-runner","dist",n),t(o,"..","..","..","v16-runner","dist",n),t(o,"..","..","v16-runner","dist",n),t(process.cwd(),"v16-runner","dist",n),t(process.cwd(),"..","v16-runner","dist",n)];for(let s of f)if(E(s))return{cmd:s,args:[]};let v=[t(o,"..","..","v16-runner"),t(o,"..","..","..","..","v16-runner"),t(o,"..","..","..","v16-runner"),t(process.cwd(),"v16-runner"),t(process.cwd(),"..","v16-runner")];for(let s of v)if(E(t(s,"main.py"))){for(let u of[t(s,".venv","bin","python"),t(s,"..",".venv","bin","python"),t(s,"..","browser-agent",".venv","bin","python")])if(E(u))return{cmd:u,args:["main.py"],cwd:s};let m=j();if(m)return{cmd:m,args:["main.py"],cwd:s}}return null}function ie(e,n){let l=$();if(!l)throw new Error("v16-runner not found. Build the binary with `cd v16-runner && python build.py` or ensure Python is available.");process.env.KANE_SPAWN_DEBUG&&process.stderr.write(`[spawn-debug] ${JSON.stringify(l)}
|
|
3
3
|
`);let r={...process.env};n?.environment&&(r.TESTMUAI_ENV=n.environment),r.TESTMUAI_SOURCE="kane-cli",process.platform==="win32"&&(r.PYTHONIOENCODING="utf-8");let a=O(n?.environment);r.V16_SERVER_API_HOST=a.v16ServerHost,r.ATMS_URL=a.tmsBaseUrl.replace(/\/api\/?$/,""),e.username&&e.access_key&&(r.LT_USERNAME=e.username,r.LT_ACCESS_KEY=e.access_key),e.session_id&&(r.TESTMUAI_SESSION_ID=e.session_id);let f=M(n?.mode??"testing");Object.assign(r,f.set);for(let i of f.unset)delete r[i];let v=new b().load(),s=I(n?.assertionMode??(v.assertion_mode==="visual"?"visual":"dom"));Object.assign(r,s.set);for(let i of s.unset)delete r[i];let m=n?.finalValidation??v.final_validation,u=h(m);Object.assign(r,u.set);for(let i of u.unset)delete r[i];let g=process.env.KANE_AP_MODE,S=g?{v1:"v1",v2:"v2"}[g]:void 0;S!==void 0&&e.ap_mode===void 0&&(e.ap_mode=S),e.telemetry_proxy_url===void 0&&process.env.KANE_TELEMETRY!=="0"&&(e.telemetry_proxy_url=N),e.media_upload===void 0&&e.org_id&&e.username&&e.access_key&&(e.media_upload={url:a.shareApiBaseUrl.replace(/\/$/,"")+"/mfs/v1.0/media/upload",artefacts_host:a.mediaArtefactsHost,org_id:e.org_id,media_dir:w});let d=U(l.cmd,l.args,{stdio:["pipe","pipe","pipe"],env:r,cwd:l.cwd});d.stdin.on("error",()=>{}),d.stdin.write(JSON.stringify(e)+`
|
|
4
4
|
`);let p=e.session_id?G(D(),".testmuai","kaneai","sessions",e.session_id,"runner-stderr.log"):null;if(p)try{K(C(p),{recursive:!0}),L(p,`--- runner spawn ${new Date().toISOString()} run_index=${e.run_index} ---
|
|
5
5
|
`)}catch{}let R=1e5,_="";d.stderr.on("data",i=>{if(_+=i.toString(),_.length>R&&(_=_.slice(-R)),p)try{L(p,i)}catch{}}),d.on("error",i=>{n?.log?.("error","RUNNER_SPAWN_ERROR","Runner spawn error",{error:i.message})});let A=null,y=null,k=new Promise(i=>{d.on("close",(c,x)=>{A=c,y=x?String(x):null,n?.log?.("info","RUNNER_EXIT","Runner exited",{code:c,signal:y??"none"}),i({code:c,signal:y})})}),P=T(d.stdout);return{child:d,events:P,sendUserResponse(i){let c=JSON.stringify({type:"user_response",answer:i});try{d.stdin.write(c+`
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as h}from"./chunk-RZ4F3BHX.js";var a=class{config;buffer=[];stepBuffer=new Map;flushTimer=null;currentRunIndex=null;stopped=!1;_droppedBatches=0;_droppedEntries=0;constructor(t){this.config=t}start(){if(this.flushTimer)return;let t=this.config.flushIntervalMs??5e3;this.flushTimer=setInterval(()=>{this.flush().catch(()=>{})},t),this.flushTimer.unref&&this.flushTimer.unref()}setRunIndex(t){this.currentRunIndex=t}log(t,e,i,n={}){if(this.stopped)return;let s=this.buildEntry(t,e,i,n);this.buffer.push(s)}logStep(t,e,i,n={}){if(this.stopped)return;let s=this.buildEntry("debug",e,i,n);s.run_index=t,this.stepBuffer.has(t)||this.stepBuffer.set(t,[]),this.stepBuffer.get(t).push(s)}escalate(t){let e=this.stepBuffer.get(t);e&&e.length>0&&this.buffer.push(...e),this.stepBuffer.delete(t)}discardSteps(t){this.stepBuffer.delete(t)}async flush(){if(this.buffer.length===0)return;let t=this.buffer.splice(0),e=null;try{e=await this.config.getToken()}catch{this.buffer.unshift(...t);return}let i={"Content-Type":"application/json"};e&&(i.Authorization=`Bearer ${e}`);let n=JSON.stringify(t);for(let s=0;s<3;s++){try{let u=new AbortController,f=setTimeout(()=>u.abort(),1e4),o=await h(this.config.proxyUrl,{method:"POST",headers:i,body:n,signal:u.signal});if(clearTimeout(f),o.ok)return}catch{}s<2&&await new Promise(u=>setTimeout(u,1e3*Math.pow(2,s)))}this._droppedBatches++,this._droppedEntries+=t.length}async flushOnce(t){if(this.buffer.length===0)return"empty";let e=this.buffer.splice(0),i=Date.now()+t,n=null;try{n=await Promise.race([this.config.getToken(),new Promise(f=>{let o=setTimeout(()=>f(null),t);o.unref&&o.unref()})])}catch{n=null}let s=i-Date.now();if(s<=0)return this.buffer.unshift(...e),"timeout";let u={"Content-Type":"application/json"};n&&(u.Authorization=`Bearer ${n}`);try{let f=new AbortController,o=setTimeout(()=>f.abort(),s);o.unref&&o.unref();let l=await h(this.config.proxyUrl,{method:"POST",headers:u,body:JSON.stringify(e),signal:f.signal});return clearTimeout(o),l.ok?"sent":(this.buffer.unshift(...e),"failed")}catch{return this.buffer.unshift(...e),Date.now()>=i?"timeout":"failed"}}drainBuffer(){return this.buffer.splice(0)}get droppedBatches(){return this._droppedBatches}get droppedEntries(){return this._droppedEntries}async shutdown(){this._droppedBatches>0&&this.log("warn","LOG_DROPS",`Dropped ${this._droppedEntries} entries in ${this._droppedBatches} batches`,{dropped_batches:this._droppedBatches,dropped_entries:this._droppedEntries}),this.stopped=!0,this.flushTimer&&(clearInterval(this.flushTimer),this.flushTimer=null),await this.flush()}shutdownSync(){this.stopped=!0,this.flushTimer&&(clearInterval(this.flushTimer),this.flushTimer=null)}get bufferSize(){return this.buffer.length}stepBufferSize(t){return this.stepBuffer.get(t)?.length??0}buildEntry(t,e,i,n){return{hostname:"kane-cli",service:"kane-cli",ddsource:"kane-cli",ddtags:`version:${this.config.device.cli_version}`,level:t,event:e,message:i,session_id:this.config.sessionId,run_index:e.startsWith("tcg_")?null:this.currentRunIndex,identity:this.config.identity,device:this.config.device,context:n,timestamp:new Date().toISOString()}}};function w(r=process.env){try{let t=r.KANE_CLI_USER_AGENT;return t&&t.trim()?p(t):r.CLAUDECODE==="1"||r.CLAUDE_CODE_ENTRYPOINT?"claude-code":r.CURSOR_TRACE_ID||r.TERM_PROGRAM==="cursor"?"cursor":r.TERM_PROGRAM==="vscode"||r.VSCODE_PID?"vscode":r.CI==="true"||r.GITHUB_ACTIONS==="true"||r.GITLAB_CI==="true"||r.CIRCLECI==="true"||r.BUILDKITE==="true"?"ci":"unknown"}catch{return"unknown"}}function p(r){return r.toLowerCase().replace(/[^a-z0-9_-]/g,"-").slice(0,40)}import{execSync as d}from"child_process";import{readFileSync as g}from"fs";import{createHash as m}from"crypto";import{hostname as y,platform as b,arch as T}from"os";var c=null;function S(){return c||(c=_(),c)}function _(){let r=b();if(r==="darwin")try{let i=d("ioreg -rd1 -c IOPlatformExpertDevice",{encoding:"utf-8",timeout:5e3}).match(/"IOPlatformUUID"\s*=\s*"([^"]+)"/);if(i?.[1])return i[1]}catch{}if(r==="linux")try{let e=g("/etc/machine-id","utf-8").trim();if(e)return e}catch{}let t=`${y()}:${r}:${T()}`;return m("sha256").update(t).digest("hex").slice(0,32)}export{a,w as b,S as c};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as l}from"./chunk-
|
|
2
|
+
import{b as l}from"./chunk-QGBLC4ZJ.js";import{a as p}from"./chunk-RZ4F3BHX.js";import{a as m}from"./chunk-RH4GCEFX.js";import{a as f}from"./chunk-YJIESLN6.js";import{a as c,c as s,i as a,x as u}from"./chunk-2KS2YRIS.js";var v="/public/skills/kane-cli";function C(){try{let n=new f().getDefaultEnv();if(n in u)return n}catch{}return"prod"}function k(){return`${m(C()).controllerBaseUrl}${v}`}import{readFileSync as S,writeFileSync as E,mkdirSync as g}from"fs";import{join as d}from"path";var h=d(s,"skill-check.json"),y=3600*1e3;function V(){try{let n=JSON.parse(S(h,"utf-8"));if(Date.now()-n.checkedAt<y)return n}catch{}return null}function A(n){try{g(s,{recursive:!0}),E(h,JSON.stringify({map:n,checkedAt:Date.now()}))}catch{}}function I(){for(let{dir:n}of a)try{let t=S(d(n,"VERSION"),"utf-8").trim();if(t)return t}catch{}return null}function M(n,t){let i=Object.keys(n.versions??{});if(i.length===0)return null;let o=i.slice().sort((r,e)=>l(r,e));for(let r of o){let e=n.versions[r]?.kaneCliMinVersion;if(!e||l(t,e)<=0)return r}return null}async function U(){try{let n=V()?.map;if(!n){let o=new AbortController,r=setTimeout(()=>o.abort(),5e3),e=await p(k(),{headers:{Accept:"application/json"},signal:o.signal});if(clearTimeout(r),!e.ok)return null;n=await e.json(),A(n)}let t=M(n,c);if(!t)return null;let i=I();return i===null?{current:null,latestCompatible:t}:l(i,t)>0?{current:i,latestCompatible:t}:null}catch{return null}}export{k as a,M as b,U as c};
|