@testmuai/kane-cli 0.6.7 → 0.6.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChatSurface-B2QJYKV4.js +8 -0
- package/dist/{ChromeProfilePicker-IW3K43VC.js → ChromeProfilePicker-FSZB4SZR.js} +1 -1
- package/dist/{CliFeedbackPrompt-ZJ4LZGPK.js → CliFeedbackPrompt-WNMDCIHZ.js} +1 -1
- package/dist/{CliUploadProgress-SMPVN7Q6.js → CliUploadProgress-H4265KXU.js} +1 -1
- package/dist/{ConfigView-RTAGKZH4.js → ConfigView-XCUZ44SP.js} +1 -1
- package/dist/EvidenceViewOffer-5TJCRM2T.js +2 -0
- package/dist/{FolderPicker-QUY7LNVZ.js → FolderPicker-S2XVCPYN.js} +1 -1
- package/dist/{HelpView-47J2NZWJ.js → HelpView-OPKRGNNM.js} +1 -1
- package/dist/{InfoBox-G63WZAMH.js → InfoBox-TW2PGJK5.js} +1 -1
- package/dist/{LinksBox-2HIHDT5K.js → LinksBox-66M7XP5Y.js} +1 -1
- package/dist/{ProfilesView-TUXQXPXJ.js → ProfilesView-T2CFQPR5.js} +1 -1
- package/dist/{ProjectPicker-VUABWG2P.js → ProjectPicker-7ALN52CY.js} +1 -1
- package/dist/{SaveSessionPrompt-PNVGNLGO.js → SaveSessionPrompt-HM3F6QML.js} +1 -1
- package/dist/SingleShotApp-YQYS6HTB.js +2 -0
- package/dist/{SummaryBox-36MDDDYQ.js → SummaryBox-BQZEGOIV.js} +1 -1
- package/dist/TestMdRunView-7CL3PM3J.js +2 -0
- package/dist/{WhoamiView-LHU6RGIY.js → WhoamiView-722MBPSG.js} +1 -1
- package/dist/{bind-E67W2DXG.js → bind-HNI5LCNK.js} +2 -2
- package/dist/{bridge-WVFTWHKP.js → bridge-V4FF5QPK.js} +1 -1
- package/dist/{changelog-D4Y5QJIZ.js → changelog-KMYZW5MI.js} +1 -1
- package/dist/chat-committer-MWZ4JQMM.js +2 -0
- package/dist/chat-controller-YX5A7R52.js +2 -0
- package/dist/{chunk-GAD6IBZ6.js → chunk-2Z5MSC23.js} +8 -8
- package/dist/{chunk-UQVKNUYO.js → chunk-345PY4SZ.js} +1 -1
- package/dist/{chunk-KVAALPTA.js → chunk-3YI4QRXF.js} +1 -1
- package/dist/{chunk-NEHF4C6X.js → chunk-4BAL4OGF.js} +1 -1
- package/dist/chunk-4CKZAGBD.js +2 -0
- package/dist/{chunk-7ZMYAXES.js → chunk-4FH2KFRT.js} +1 -1
- package/dist/{chunk-UZWOHCFX.js → chunk-4GXOBABK.js} +1 -1
- package/dist/{chunk-GLVDOR5G.js → chunk-7BCZLDNX.js} +1 -1
- package/dist/{chunk-AASBJJCU.js → chunk-AU7WQ2O5.js} +2 -2
- package/dist/{chunk-3CY3DZDH.js → chunk-CLYG26XV.js} +2 -2
- package/dist/{chunk-TADJIOHV.js → chunk-DKERZJYF.js} +1 -1
- package/dist/{chunk-Z34XRBKQ.js → chunk-DPOES6G3.js} +1 -1
- package/dist/{chunk-EDM6YACR.js → chunk-EASTDHNW.js} +1 -1
- package/dist/{chunk-G5CYSC23.js → chunk-EWLLPUP4.js} +1 -1
- package/dist/{chunk-WFQUDSKY.js → chunk-F42YVALT.js} +1 -1
- package/dist/chunk-FCMLIK7P.js +2 -0
- package/dist/{chunk-RBLZUDMZ.js → chunk-FFHBQK5N.js} +2 -2
- package/dist/{chunk-FYSWQ4K7.js → chunk-FT4G3QGO.js} +1 -1
- package/dist/{chunk-QYTMD6NM.js → chunk-FVM7TWKT.js} +1 -1
- package/dist/{chunk-BBZBXSTP.js → chunk-G6F2BOFT.js} +1 -1
- package/dist/{chunk-LVWB6TB2.js → chunk-GBYH35H5.js} +1 -1
- package/dist/chunk-GG43HSU2.js +3 -0
- package/dist/{chunk-MTG2LRGV.js → chunk-GNNMHYWE.js} +1 -1
- package/dist/{chunk-A2AZQ4PQ.js → chunk-IWBPV3VS.js} +1 -1
- package/dist/{chunk-XUHVQ5VL.js → chunk-JHAGEBKE.js} +1 -1
- package/dist/chunk-L3HG5ONB.js +4 -0
- package/dist/chunk-LEA6IHXC.js +2 -0
- package/dist/{chunk-5J3HQZNU.js → chunk-LMMOR7CR.js} +1 -1
- package/dist/{chunk-QG6LJCZG.js → chunk-LRA3V5GY.js} +1 -1
- package/dist/chunk-MXLXKHW4.js +2 -0
- package/dist/{chunk-RWIHSR4H.js → chunk-NIKA2V6B.js} +1 -1
- package/dist/chunk-O4HWPV67.js +13 -0
- package/dist/{chunk-77PBBYRZ.js → chunk-OAEZKYYQ.js} +2 -2
- package/dist/{chunk-IX34JIXK.js → chunk-OV2W7KBC.js} +1 -1
- package/dist/{chunk-JR37W7IJ.js → chunk-P4SE6YON.js} +1 -1
- package/dist/{chunk-X47VFBIV.js → chunk-QB4IOM3X.js} +1 -1
- package/dist/chunk-QM3XF5TW.js +11 -0
- package/dist/chunk-QM4S2APK.js +2 -0
- package/dist/{chunk-RGQIBS32.js → chunk-QTHITA73.js} +1 -1
- package/dist/{chunk-3NR6OTHL.js → chunk-QZJID3OZ.js} +1 -1
- package/dist/{chunk-QVJ7C4GW.js → chunk-QZNUTCSD.js} +1 -1
- package/dist/{chunk-SK2GVMTJ.js → chunk-R65HNFRB.js} +1 -1
- package/dist/{chunk-YB54MHKU.js → chunk-RLICAFFQ.js} +1 -1
- package/dist/chunk-RQM3DUSB.js +9 -0
- package/dist/chunk-SHAA6FOD.js +11 -0
- package/dist/chunk-SORKKW7B.js +6 -0
- package/dist/{chunk-TTJ4XMWP.js → chunk-T2ULEJK7.js} +1 -1
- package/dist/{chunk-OPDJD7WS.js → chunk-T4WZWKIU.js} +2 -2
- package/dist/{chunk-TSWGQKUK.js → chunk-TACPTX64.js} +2 -2
- package/dist/chunk-TFVMSEIA.js +2 -0
- package/dist/{chunk-DL5CXC64.js → chunk-U5QTE3WX.js} +1 -1
- package/dist/{chunk-6EC54ZHT.js → chunk-U6TLLYRG.js} +1 -1
- package/dist/{chunk-NMKZHHB6.js → chunk-VCYVSKPM.js} +1 -1
- package/dist/chunk-VXLOEM2U.js +347 -0
- package/dist/{chunk-I37UOX73.js → chunk-XTO236AL.js} +3 -3
- package/dist/chunk-XWIN3S7O.js +4 -0
- package/dist/{chunk-3GOZ7R4G.js → chunk-YY6WPFMT.js} +3 -3
- package/dist/{chunk-WJG4ZPUH.js → chunk-ZA4GR5R7.js} +1 -1
- package/dist/{config-BZ7C5NU5.js → config-Z4OS3HEE.js} +1 -1
- package/dist/cover-cmd-L2HSVDLH.js +2 -0
- package/dist/{credentials-BPJL6YIZ.js → credentials-TNEVAUHI.js} +1 -1
- package/dist/dossier-ZHSHATVU.js +3 -0
- package/dist/evidence-MA3LDBWG.js +2 -0
- package/dist/evolve-cmd-DTW4EOXM.js +2 -0
- package/dist/{explain-cmd-AG6ZDXV6.js → explain-cmd-327F6ESA.js} +1 -1
- package/dist/{explain-cmd-NZPC6537.js → explain-cmd-E366QTAD.js} +1 -1
- package/dist/extract-bind-DZLG4GUE.js +5 -0
- package/dist/{extract-cmd-4PGUDJMU.js → extract-cmd-LFVMG6UE.js} +1 -1
- package/dist/gaps-cmd-IAEXXESW.js +2 -0
- package/dist/{generate-headless-NZUDYIKJ.js → generate-headless-TYQRYQKJ.js} +2 -2
- package/dist/index.js +12 -12
- package/dist/ingest-CBQAXVH6.js +2 -0
- package/dist/ingest-cmd-JN6PLDE3.js +3 -0
- package/dist/interactive-bind-QEBWUJCN.js +7 -0
- package/dist/lifecycle-cmd-KZOC4WDW.js +2 -0
- package/dist/list-cmd-6X5U46RD.js +3 -0
- package/dist/{list-commands-55RCFEOL.js → list-commands-BU2MSYRH.js} +1 -1
- package/dist/logical-ids-RFGWBVML.js +2 -0
- package/dist/login-flow-4L62GWLT.js +2 -0
- package/dist/{persist-recorded-session-HK7JUONC.js → persist-recorded-session-RAL7UCQT.js} +1 -1
- package/dist/pipeline-PLI5WQKX.js +2 -0
- package/dist/readmodel-V3DVL6NP.js +2 -0
- package/dist/reconcile-cmd-UXY36ROJ.js +2 -0
- package/dist/{recording-banner-5IYX2KBV.js → recording-banner-MBR3Q7VD.js} +1 -1
- package/dist/{require-project-folder-J4Q4FRQ4.js → require-project-folder-KE7XOOFN.js} +1 -1
- package/dist/review-cmd-XVWPSWU2.js +4 -0
- package/dist/run-5DQSL5KH.js +2 -0
- package/dist/run-B7BRNC3X.js +2 -0
- package/dist/{run-test-md-WN6BH3PC.js → run-test-md-ZCAWNP35.js} +2 -2
- package/dist/{skill-installer-4HYPUBNB.js → skill-installer-H5DPJJFW.js} +1 -1
- package/dist/{spawner-VD6YFZ43.js → spawner-C6B5J73J.js} +1 -1
- package/dist/tcg-generate-DIMZXAV3.js +2 -0
- package/dist/{testmd-actions-LT5FNIR6.js → testmd-actions-X6XCV53D.js} +1 -1
- package/dist/token-refresh-7PAPCMQK.js +2 -0
- package/dist/{validate-basic-XWGKC5VF.js → validate-basic-VBPGGHES.js} +1 -1
- package/dist/{version-check-6FDTS6MK.js → version-check-YPRCQJ7E.js} +1 -1
- package/dist/{view-cmd-PCDG3FIC.js → view-cmd-G4PGJRQH.js} +3 -3
- package/dist/walk-session-GWOP27TX.js +2 -0
- package/package.json +6 -6
- package/dist/ChatSurface-Y2M6HB2R.js +0 -8
- package/dist/EvidenceViewOffer-LHPIZUGQ.js +0 -2
- package/dist/SingleShotApp-BZV5CULT.js +0 -2
- package/dist/TestMdRunView-A655PMEY.js +0 -2
- package/dist/chat-committer-WOTCC7L3.js +0 -2
- package/dist/chat-controller-MONWZKS7.js +0 -4
- package/dist/chunk-64LC36AF.js +0 -2
- package/dist/chunk-6PS65QFF.js +0 -2
- package/dist/chunk-CIFVUX3B.js +0 -4
- package/dist/chunk-DCWCANNS.js +0 -6
- package/dist/chunk-GBBVP2JW.js +0 -2
- package/dist/chunk-IYTHPCQ2.js +0 -356
- package/dist/chunk-NMZATEKQ.js +0 -9
- package/dist/chunk-QHFUDBQH.js +0 -2
- package/dist/chunk-R7NNIQMH.js +0 -11
- package/dist/chunk-RE3BZVGE.js +0 -3
- package/dist/chunk-VLC24QVT.js +0 -2
- package/dist/chunk-Y6HPW2OQ.js +0 -2
- package/dist/chunk-YTZUYCFZ.js +0 -2
- package/dist/chunk-YZBLBPOE.js +0 -13
- package/dist/cover-cmd-DN5D6A3S.js +0 -2
- package/dist/evidence-E5B24ZO6.js +0 -2
- package/dist/evolve-cmd-V7H4PLCX.js +0 -2
- package/dist/extract-bind-3QBBCWYE.js +0 -5
- package/dist/gaps-cmd-42LPHWFP.js +0 -2
- package/dist/ingest-GOKIMEP4.js +0 -2
- package/dist/ingest-cmd-BTYHVJ33.js +0 -3
- package/dist/interactive-bind-TKRWAPJU.js +0 -7
- package/dist/lifecycle-cmd-E6AXODQD.js +0 -2
- package/dist/list-cmd-RJVLH2GR.js +0 -3
- package/dist/logical-ids-QZQRQ3TV.js +0 -2
- package/dist/login-flow-WNIHDQXF.js +0 -2
- package/dist/pipeline-FTLXJQRT.js +0 -2
- package/dist/readmodel-KTNI6QDC.js +0 -2
- package/dist/reconcile-cmd-5XC4AUSJ.js +0 -2
- package/dist/review-cmd-XB2DCTMZ.js +0 -4
- package/dist/run-2RFR2ASQ.js +0 -2
- package/dist/run-3ZYJQBBC.js +0 -2
- package/dist/tcg-generate-77QKMB63.js +0 -2
- package/dist/token-refresh-PCOAZBKK.js +0 -2
- package/dist/walk-session-YS62CWX5.js +0 -2
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as mt,b as de,c as ft,d as Ae}from"./chunk-4CKZAGBD.js";import{a as be}from"./chunk-XWIN3S7O.js";import{a as gt}from"./chunk-TFVMSEIA.js";import{b as ut,c as dt}from"./chunk-GG43HSU2.js";import"./chunk-OSALXGD4.js";import{a as ct,b as at}from"./chunk-SORKKW7B.js";import{a as ot}from"./chunk-5Y2G4NC7.js";import"./chunk-NVGBE2DR.js";import"./chunk-L3HG5ONB.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import{a as lt}from"./chunk-YCCUBQY4.js";import{a as st}from"./chunk-3YI4QRXF.js";import{b as it}from"./chunk-DFS4RMVP.js";import{y as o}from"./chunk-VCYVSKPM.js";import{a as F}from"./chunk-HCBYKLMW.js";import{a as T,b as n,k as ke}from"./chunk-C44QQJR4.js";import{a as sn}from"./chunk-6YGTRKDT.js";import{e as q}from"./chunk-UR6MHSHU.js";var S=q(sn(),1);var u=q(F(),1),pt=3,ln=60;function Le(e,r){let s=e.options.length,l=s,d=e.multi_select?l++:null,f=e.allow_free_text?l++:null,i=r?l++:null;return{optionCount:s,doneIdx:d,freeIdx:f,batchIdx:i,maxSel:l-1}}var cn="\xA0",an={high:{text:`\u203C${cn}high`,color:o.red},med:{text:"med",color:"yellow"},low:{text:"low",color:o.dim}};function un({batch:e,i:r}){let s=e.resolution[r],l=s.form==="deferred"?"\u2013 deferred (the agent keeps it)":`\u2713 ${s.form}: ${s.choice}${s.form==="assumed"?" (flagged)":" (you)"}`;return(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsx)(n,{color:o.dim,children:l})})}function dn({batch:e,i:r,sel:s,focused:l,freeText:d,multiSel:f,layout:i,contentW:m}){let g=e.questions[r],b=e.cursor===r,p=e.resolution[r],x=b?"\u203A":" ",C=an[g.risk],B=h=>b&&l&&s===h?(0,u.jsx)(n,{color:o.generateAccent,children:"\u25B8"}):" ";return(0,u.jsxs)(T,{flexDirection:"column",children:[(0,u.jsxs)(T,{children:[(0,u.jsx)(T,{width:5,flexShrink:0,children:(0,u.jsx)(n,{bold:b,children:` ${r+1} ${x}`})}),(0,u.jsx)(T,{width:m,children:(0,u.jsxs)(n,{bold:b,children:[g.text,C?(0,u.jsx)(n,{color:C.color,bold:!1,children:` ${C.text}`}):null]})})]}),(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsx)(n,{color:o.dim,children:g.rationale})}),p&&!b?(0,u.jsx)(un,{batch:e,i:r}):(0,u.jsxs)(T,{flexDirection:"column",children:[g.options.map((h,y)=>{let E=b&&l&&s===y;return(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsxs)(n,{children:[B(y),g.multi_select?(0,u.jsx)(n,{color:f.includes(y)?o.green:o.dim,children:f.includes(y)?" [x]":" [ ]"}):null,(0,u.jsx)(n,{color:E?o.generateAccent:void 0,children:` ${y+1} ${h.label}`}),y===g.recommended_index?(0,u.jsx)(n,{color:o.dim,children:" (recommended)"}):null,p?.selected_index===y?(0,u.jsx)(n,{color:o.dim,children:" (current)"}):null]})},`o-${y}`)}),g.multi_select&&b&&i.doneIdx!=null?(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsxs)(n,{children:[B(i.doneIdx)," ",(0,u.jsx)(n,{color:o.green,children:"\u2714"}),(0,u.jsx)(n,{color:l&&s===i.doneIdx?o.generateAccent:void 0,children:" done \u2014 confirm selection"})]})}):null,g.allow_free_text&&b?d?(0,u.jsxs)(T,{paddingLeft:5,children:[(0,u.jsxs)(n,{children:[(0,u.jsx)(n,{color:o.generateAccent,children:"\u25B8"})," ",(0,u.jsx)(n,{color:o.dim,children:"\u270E "})]}),(0,u.jsx)(lt,{value:d.value,onChange:d.onChange,onSubmit:d.onSubmit,onCancel:d.onCancel,placeholder:"Tell me what to do"})]}):(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsxs)(n,{children:[i.freeIdx!=null?B(i.freeIdx):" "," ",(0,u.jsx)(n,{color:l&&i.freeIdx!=null&&s===i.freeIdx?o.generateAccent:o.dim,children:"\u270E Tell me what to do"})]})}):null]})]})}var mn=[];function ht({batch:e,sel:r=0,focused:s=!1,freeText:l=null,multiSelFor:d}){let{stdout:f}=ke(),i=f?.columns??80,m=i<ln,g=Math.max(20,(m?i:i-4)-5),b=e.resolution.filter(k=>!k).length,p=be(e),x=e.cursor>=0?e.questions[e.cursor]:void 0,C=x?Le(x,p!==""):{optionCount:0,doneIdx:null,freeIdx:null,batchIdx:null,maxSel:0},B=s&&C.batchIdx!=null&&r===C.batchIdx?(0,u.jsx)(n,{color:o.generateAccent,children:"\u25B8"}):" ",h=Math.max(0,Math.min(e.cursor<0?0:e.cursor,e.questions.length-pt)),y=e.questions.slice(h,h+pt),E=h,v=e.questions.length-h-y.length,L=(0,u.jsxs)(T,{flexDirection:"column",children:[(0,u.jsx)(n,{bold:!0,color:o.generateAccent,children:`? the agent needs ${b===1?"one answer":`${b} answers`} before it can continue`}),E>0?(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsx)(n,{color:o.dim,children:`\u22EE ${E} above`})}):null,y.map((k,P)=>(0,u.jsx)(dn,{batch:e,i:h+P,sel:r,focused:s,freeText:l,multiSel:d?d(h+P):mn,layout:C,contentW:g},k.id)),v>0?(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsx)(n,{color:o.dim,children:`\u22EE ${v} more`})}):null,p!==""?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(n,{children:" "}),(0,u.jsx)(T,{paddingLeft:1,children:(0,u.jsxs)(n,{children:[B," ",(0,u.jsx)(n,{color:o.generateAccent,children:"\xBB"}),(0,u.jsx)(n,{bold:!0,color:s&&C.batchIdx!=null&&r===C.batchIdx?o.generateAccent:void 0,children:" Go with recommendations"}),(0,u.jsx)(n,{color:o.dim,children:" (tab)"})]})})]}):null,(0,u.jsx)(T,{paddingLeft:5,children:(0,u.jsx)(n,{color:o.muted,children:"\u2191\u2193 \xB7 \u23CE select \xB7 1-9 \xB7 type = your words \xB7 esc previous answer"})})]});return m?L:(0,u.jsx)(T,{flexDirection:"column",borderStyle:"round",borderColor:o.generateAccent,paddingX:1,children:L})}var A=q(F(),1),xt={high:0,med:1,low:2},gn={high:o.red,med:"yellow",low:o.dim};function fn(e){return e.map((r,s)=>({r,i:s})).sort((r,s)=>(xt[r.r.risk??"zz"]??3)-(xt[s.r.risk??"zz"]??3)||r.i-s.i).map(({r})=>r)}var V=(e,r)=>e.length<=r?e:r<=1?"\u2026":`${e.slice(0,r-1)}\u2026`,ye=(e,r)=>e+" ".repeat(Math.max(0,r-e.length));function kt({rows:e,width:r=120,badgeHeader:s="risk"}){if(e.length===0)return null;let l=fn(e),d=v=>v.staged||!v.id?"(staged)":gt(v.id),f=Math.max(2,...l.map(v=>d(v).length)),i=Math.max(s.length,...l.map(v=>(v.badge??"").length)),m=r>=96&&l.some(v=>v.summary),b=r-(m?13:10)-f-i,p=Math.max(...l.map(v=>Math.max(v.title.length,(v.marker??"").length)),5),x=Math.max(5,m?Math.min(p,Math.max(16,Math.floor(b*.5))):Math.min(p,b)),C=m?Math.max(7,b-x):0,B=(v,L,k,P)=>v+P.map(_=>`\u2500${"\u2500".repeat(_.length)}\u2500`).join(L)+k,h=(v,L,k,P)=>[ye(V(v,f),f),ye(V(L,x),x),ye(V(k,i),i),...m?[ye(V(P,C),C)]:[]],y=h("id","title",s,"summary"),E=[];E.push((0,A.jsx)(n,{color:o.dim,children:B("\u250C","\u252C","\u2510",y)},"t")),E.push((0,A.jsx)(n,{color:o.dim,children:`\u2502 ${y.join(" \u2502 ")} \u2502`},"h")),E.push((0,A.jsx)(n,{color:o.dim,children:B("\u251C","\u253C","\u2524",y)},"m"));for(let[v,L]of l.entries()){let k=h(d(L),V(L.title,x),V(L.badge??"",i),V(L.summary??"",C)),P=L.badgeColor??gn[L.badge??""]??o.dim;if(E.push((0,A.jsxs)(n,{children:[(0,A.jsx)(n,{color:o.dim,children:"\u2502 "}),(0,A.jsx)(n,{color:o.generateAccent,children:k[0]}),(0,A.jsx)(n,{color:o.dim,children:" \u2502 "}),k[1],(0,A.jsx)(n,{color:o.dim,children:" \u2502 "}),(0,A.jsx)(n,{color:P,children:k[2]}),m?(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(n,{color:o.dim,children:" \u2502 "}),(0,A.jsx)(n,{color:o.dim,children:k[3]})]}):null,(0,A.jsx)(n,{color:o.dim,children:" \u2502"})]},`r-${v}`)),L.marker){let _=h("",V(L.marker,x),"","");E.push((0,A.jsx)(n,{color:o.dim,children:`\u2502 ${_.join(" \u2502 ")} \u2502`},`mk-${v}`))}}return E.push((0,A.jsx)(n,{color:o.dim,children:B("\u2514","\u2534","\u2518",y)},"b")),(0,A.jsx)(A.Fragment,{children:E})}var pn={"use-case":"use-cases",ac:"ACs",scenario:"scenarios",test:"tests",gap:"gaps"},Q=e=>pn[e]??`${e}s`,bt=e=>e==="ac"?"AC":e==="use-case"?"use-case":e,Me=e=>e.kind??"use-case",yt=e=>`${Me(e)}:${e.temp_ref}`;function Tt(e){let r=e,s=r.badge??e.risk??null,l=r.why??e.summary??e.description??null;return JSON.stringify([e.title,s,l,r.extra??null,e.depends_on_hint??null])}function wt(e){return e.filter(r=>r.role==="agent"&&typeof r.turnIndex=="number"&&Array.isArray(r.items)&&r.items.length>0)}function G(e){let r=new Map,s=1;for(let f of wt(e)){let i=new Set;for(let m of f.items){let g=yt(m);if(i.has(g))continue;i.add(g);let b=r.get(g);r.set(g,{num:b?.num??s++,ref:m.temp_ref,kind:Me(m),item:m,turnIndex:f.turnIndex,fingerprint:Tt(m)})}}let l=[...r.values()].sort((f,i)=>f.num-i.num),d=[];for(let f of l){let i=d.find(m=>m.kind===f.kind);i?i.count++:d.push({kind:f.kind,label:Q(f.kind),count:1})}return{entries:l,byRef:r,counts:d}}function $t(e,r){let l=wt(e).find(h=>h.turnIndex===r);if(!l)return null;let d=e.filter(h=>h.role!=="agent"||typeof h.turnIndex!="number"||h.turnIndex<=r),f=G(d),i=G(e.filter(h=>h.role!=="agent"||typeof h.turnIndex!="number"||h.turnIndex<r)),m=[],g=new Map,b=new Map,p=new Map,x=new Set;for(let h of l.items){let y=yt(h);if(x.has(y))continue;x.add(y);let E=i.byRef.get(y),v=h.changed===!0,L=f.byRef.get(y).num,k=Me(h);if(E&&!v&&E.fingerprint===Tt(h)){g.set(k,(g.get(k)??0)+1);continue}let P=!!E||v,_=P?p:b;_.set(k,(_.get(k)??0)+1),m.push({item:h,num:L,updated:P})}let C=[...g.entries()].map(([h,y])=>({label:Q(h),count:y})),B=[...[...b.entries()].map(([h,y])=>`${y} new ${y===1?bt(h):Q(h)}`),...[...p.entries()].map(([h,y])=>`${y} updated ${y===1?bt(h):Q(h)}`)].join(" \xB7 ");return{fresh:m,unchanged:C,headerStats:B}}function _e(e,r){let s=e.entries.filter(f=>f.turnIndex===r);if(s.length===0)return e;let l=new Map(s.map(f=>[f.ref,f])),d=[];for(let f of s){let i=d.find(m=>m.kind===f.kind);i?i.count+=1:d.push({kind:f.kind,label:Q(f.kind),count:1})}return{entries:s,byRef:l,counts:d}}var w=q(F(),1);function hn(e){let r=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??"?"}${r}${s}`:`\u21B3 ${e.form} q${e.qNum} ${e.stub}: ${e.choice??"?"}${r}${s}`}var xn=Math.min(process.stdout?.columns??100,120)-2;function St({block:e,annotations:r}){switch(e.kind){case"banner":return(0,w.jsx)(n,{color:o.dim,children:` \u2500\u2500 ${e.text} \u2500\u2500`});case"user":return(0,w.jsxs)(T,{children:[(0,w.jsx)(n,{color:o.orange,children:"\u276F "}),(0,w.jsx)(n,{children:e.text})]});case"note":return(0,w.jsx)(n,{color:o.dim,children:` ${e.text}`});case"agent":return(0,w.jsx)(ct,{text:e.text});case"thinking":return(0,w.jsx)(n,{color:o.dim,children:` thought for ${(e.tookMs/1e3).toFixed(1)}s`});case"tool":return(0,w.jsx)(n,{color:o.dim,children:` ${ut({name:e.name,status:e.status==="ok"?"done":e.status,detail:e.detail})}`});case"usage":return(0,w.jsx)(n,{color:o.dim,children:` \xB7 ${e.credits.toFixed(1)} credits \u2014 total ${e.total.toFixed(1)}`});case"turn":{let s=r??null,l=s?s.fresh:e.items.map((p,x)=>({item:p,num:x+1,updated:!1})),d={usecase:"risk","use-case":"risk",ac:"check",scenario:"kind",test:"check",gap:"severity",stylenote:"kind"},f=p=>p.kind??"use-case",i=new Map;for(let p of l){let x=p.item,C=f(p.item),B=x.risk==="high"||x.risk==="med"||x.risk==="low"?x.risk:void 0,h={id:x.logical_id??"",staged:!x.logical_id,title:x.title,badge:x.badge??x.risk??"",summary:x.why??x.summary??x.description??"",...B?{risk:B}:{},...p.updated?{marker:"\u21B3 changed"}:{}},y=i.get(C)??[];y.push(h),i.set(C,y)}let m=l.some(p=>!!p.item.kind),g=(s?.unchanged??[]).reduce((p,x)=>p+x.count,0),b=s?.headerStats?` \u2014 ${s.headerStats}${g>0?` (${g} unchanged)`:""}`:"";return(0,w.jsxs)(T,{flexDirection:"column",marginLeft:2,children:[(0,w.jsxs)(n,{bold:!0,children:[m?"design":e.heading,b?(0,w.jsx)(n,{bold:!1,color:o.dim,children:b}):null]}),[...i.entries()].map(([p,x])=>(0,w.jsxs)(T,{flexDirection:"column",children:[i.size>1?(0,w.jsx)(n,{color:o.dim,children:`${Q(p)} \xB7 ${x.length}`}):null,(0,w.jsx)(kt,{rows:x,width:xn,badgeHeader:d[p]??"info"})]},p)),s&&s.unchanged.length>0&&(0,w.jsx)(n,{color:o.dim,children:` \u22EE unchanged: ${s.unchanged.map(p=>`${p.count} ${p.label}`).join(" \xB7 ")}`})]})}case"answer":return(0,w.jsx)(n,{color:o.dim,children:hn(e.receipt)});case"continued":return(0,w.jsx)(n,{color:o.dim,children:"\u21B3 continued"});case"commit":return(0,w.jsxs)(T,{flexDirection:"column",children:[(0,w.jsx)(n,{color:e.ok?o.green:o.red,children:` ${e.ok?"\u2714":"\u2717"} ${e.line}`}),(e.warnings??[]).map((s,l)=>(0,w.jsx)(n,{color:o.dim,children:` \u26A0 ${s}`},`w-${l}`))]});case"error":return(0,w.jsxs)(st,{variant:"error",paddingX:1,children:[(0,w.jsx)(n,{color:o.red,children:e.title}),e.detail.map((s,l)=>(0,w.jsx)(n,{color:o.dim,children:s},`d-${l}`))]});case"interrupted":return(0,w.jsxs)(T,{flexDirection:"column",children:[(0,w.jsx)(n,{color:o.red,children:"interrupted \u2014 session not saved"}),e.detail?(0,w.jsx)(n,{color:o.dim,children:e.detail}):null]});case"pause":return(0,w.jsxs)(T,{flexDirection:"column",children:[(0,w.jsx)(n,{children:`paused: session ${e.sid} saved`}),e.expires_at?(0,w.jsx)(n,{color:o.dim,children:`expires: ${e.expires_at}`}):null,(0,w.jsx)(n,{children:`resume: ${e.resume}`}),e.messageForm?(0,w.jsx)(n,{children:`or say something on the way in: ${e.messageForm}`}):null]});case"summary":return(0,w.jsxs)(T,{flexDirection:"column",children:[(0,w.jsx)(n,{bold:!0,children:"session summary"}),e.lines.map((s,l)=>(0,w.jsx)(n,{children:` ${s}`},`s-${l}`))]})}}var se=q(F(),1);function vt({item:e}){return(0,se.jsxs)(T,{flexDirection:"column",marginLeft:2,children:[(e.cite??[]).map((r,s)=>(0,se.jsx)(n,{dimColor:!0,children:`cite ${r.anchor??"conv"} \u2014 "${r.quote??""}"`},`cite-${s}`)),(e.depends_on_hint??[]).length>0&&(0,se.jsx)(n,{dimColor:!0,children:`depends on: ${(e.depends_on_hint??[]).join(", ")}`}),Object.entries(e.extra??{}).map(([r,s])=>(0,se.jsx)(n,{dimColor:!0,children:`${r}: ${s}`},`extra-${r}`))]})}var $=q(F(),1),Oe=(e,r)=>Math.max(0,Math.min(r,e));function we(e,r,s){switch(r.type){case"move":return e.level==="detail"?{...e,scroll:Math.max(0,(e.scroll??0)+r.delta)}:{...e,cursor:Oe(e.cursor+r.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 Rt={"use-case":"use-cases",ac:"acs",scenario:"scenarios",test:"tests",gap:"gaps"};function Ct(e,r){if(e.level==="detail")return{level:"detail",cursor:Oe(e.num-1,Math.max(0,r.entries.length-1))};if(e.section){let s=r.entries.findIndex(l=>Rt[l.kind]===e.section);if(s>=0)return{level:"list",cursor:s}}return{level:"list",cursor:0}}function kn(e){let r=[];for(let s of e.entries){let l=r.find(d=>d.kind===s.kind);l?l.entries.push(s):r.push({kind:s.kind,entries:[s]})}return r}var It=3;function bn({items:e,cursor:r,verb:s,more:l}){let d=`view \xB7 ${s} so far \xB7 ${e.counts.map(i=>`${i.count} ${i.count===1?i.label.replace(/s$/,""):i.label}`).join(" \xB7 ")}`,f=e.entries[r];return(0,$.jsxs)(T,{flexDirection:"column",borderStyle:"round",borderColor:o.dim,paddingX:1,children:[(0,$.jsx)(n,{bold:!0,children:d}),kn(e).map(({kind:i,entries:m})=>{let g=f?.kind===i,b=g?m.findIndex(B=>B.ref===f.ref):-1,p=g?Oe(b-1,Math.max(0,m.length-It)):0,x=m.slice(p,p+(g?It:1)),C=m.length-x.length;return(0,$.jsxs)(T,{flexDirection:"column",children:[(0,$.jsx)(n,{color:o.dim,children:`${Rt[i]??Q(i)} \xB7 ${m.length}`}),x.map(B=>{let h=g&&B.ref===f.ref,y=B.item.badge;return(0,$.jsxs)(n,{children:[(0,$.jsx)(n,{color:o.generateAccent,children:h?"\u203A ":" "}),(0,$.jsx)(n,{children:`${B.num} \xB7 ${B.item.title}`}),y?(0,$.jsx)(n,{color:o.dim,children:` \xB7 ${y}`}):null]},`${B.kind}:${B.ref}`)}),C>0&&(0,$.jsx)(n,{color:o.dim,children:` \u22EE ${C} more`})]},i)}),l?(0,$.jsxs)(n,{children:[(0,$.jsx)(n,{color:o.generateAccent,children:r===e.entries.length?"\u203A ":" "}),(0,$.jsx)(n,{color:o.dim,children:`\u22EF show all \u2014 ${l.hidden} more from earlier turns`})]}):null,(0,$.jsx)(n,{color:o.dim,children:"\u2191\u2193 move \xB7 \u21B5 detail \xB7 esc back"})]})}var Te=14;function yn({items:e,cursor:r,explain:s,grandTotal:l,dossier:d,scroll:f=0}){let i=e.entries[r];if(!i)return(0,$.jsx)(n,{color:o.dim,children:"nothing to show"});if(d){let g=Math.max(0,Math.min(f,Math.max(0,d.lines.length-Te))),b=d.lines.slice(g,g+Te);return(0,$.jsxs)(T,{flexDirection:"column",borderStyle:"round",borderColor:o.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:o.dim,children:` \xB7 ${d.rawId}`}):null]}),(0,$.jsx)(n,{bold:!0,children:d.title}),g>0?(0,$.jsx)(n,{color:o.muted,children:`\u22EE ${g} above`}):null,b.map((p,x)=>(0,$.jsx)(n,{color:p.dim?o.dim:void 0,children:p.text},`dl-${x}`)),d.lines.length>g+Te?(0,$.jsx)(n,{color:o.muted,children:`\u22EE ${d.lines.length-g-Te} more`}):null,(0,$.jsx)(n,{color:o.dim,children:"\u2191\u2193 scroll \xB7 esc back"})]})}let m=i.item;return(0,$.jsxs)(T,{flexDirection:"column",borderStyle:"round",borderColor:o.dim,paddingX:1,children:[(0,$.jsx)(n,{bold:!0,children:`view \xB7 ${i.kind} ${i.num} of ${l??e.entries.length}`}),(0,$.jsx)(n,{children:i.item.title}),m.badge?(0,$.jsx)(n,{color:o.dim,children:`kind: ${m.badge}`}):null,m.why?(0,$.jsx)(n,{color:o.dim,children:m.why}):null,(0,$.jsx)(vt,{item:i.item}),s?.map((g,b)=>(0,$.jsx)(n,{color:o.dim,children:g},`ex-${b}`)),(0,$.jsx)(n,{color:o.dim,children:"view-only \u2014 approvals happen in chat"}),(0,$.jsx)(n,{color:o.dim,children:"\u2191\u2193 prev/next \xB7 esc back to list"})]})}function Bt({items:e,state:r,verb:s,more:l,explain:d,grandTotal:f,dossier:i=null}){return r.level==="list"?(0,$.jsx)(bn,{items:e,cursor:r.cursor,verb:s,more:l}):(0,$.jsx)(yn,{items:e,cursor:r.cursor,explain:d,grandTotal:f,dossier:i,scroll:r.scroll??0})}var Tn={"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 Dt(e){let r=(e??"").trim().toLowerCase();if(!r)return{level:"list"};if(/^\d+$/.test(r)){let l=parseInt(r,10);return l>=1?{level:"detail",num:l}:{error:"items are numbered from 1 \u2014 /view 1"}}let s=Tn[r];return s?{level:"list",section:s}:{error:"try /view, /view <number>, or /view acs|scenarios|tests"}}var D=q(F(),1),wn=6,Et=12;function $n(e,r,s){let l=Math.max(20,r),d=[];for(let i of e.split(`
|
|
3
|
+
`)){if(i.length<=l){d.push(i);continue}let m="";for(let g of i.split(" "))m&&m.length+1+g.length>l?(d.push(m),m=g):m=m?`${m} ${g}`:g;d.push(m)}let f=Math.max(0,d.length-s);return{body:d.slice(-s).join(`
|
|
4
|
+
`),hidden:f}}var $e=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function At(e){let r={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"?[{...r,detail:"the use-case changed since it was designed"},s]:[s,r]}function mr({controller:e,verb:r="extract",onCtrlC:s,chain:l=null,inspect:d=null}){let[,f]=(0,S.useState)(0),[i,m]=(0,S.useState)(!1),[g,b]=(0,S.useState)(null),[p,x]=(0,S.useState)(null),C=(0,S.useRef)(null),[B,h]=(0,S.useState)(null),y=(0,S.useRef)(null),E=t=>{y.current=t,h(t)},v=t=>{C.current=t,x(t),t===null&&E(null)},L=(0,S.useRef)([]),[k,P]=(0,S.useState)(null),_=(0,S.useRef)(null),N=t=>{_.current=t,P(t)},Pe=it(),{stdout:Lt}=ke(),Mt=Lt?.columns??80,qe=(0,S.useRef)(0),Se=(0,S.useRef)(0);(0,S.useEffect)(()=>{let t=()=>{let a=e.state.ledger;for(let I=qe.current;I<a.length;I++){let R=a[I],W=R.kind==="turn"?$t(e.state.turns,R.turnIndex):void 0;Pe.append((0,D.jsx)(St,{block:R,annotations:W},`lg-${I}`))}qe.current=a.length};t();let c=e.subscribe(()=>{t();let a=e.state;C.current&&(a.pending||a.status==="pausing")&&(v(null),a.pending&&b("questions arrived \u2014 back to chat")),f(I=>I+1)});return f(a=>a+1),c},[e,Pe]);let{thinking:J,status:Y,pending:M,confirm:Ne,ledger:Z,activeTurn:We,stream:_t,notice:me}=e.state,Fe=(_t?.text??"").trimEnd(),Ue=Fe.length>0,Ot=i&&(J.liveThinking.length>0||J.thinkingLog.length>0),Pt=$n(J.liveThinking||J.thinkingLog.map(t=>t.text).join(`
|
|
5
|
+
`),Mt-6,Et),je=Ue?Fe.split(`
|
|
6
|
+
`).slice(-wn):[];We&&(Se.current=We.turnIndex);let qt=M?M.resolution.filter(t=>!t).length:0,Ke;for(let t=Z.length-1;t>=0;t--){if(L.current.some(a=>a.end!=null&&t>=a.start&&t<a.end))continue;let c=Z[t];if(c.kind==="banner"&&!c.text.startsWith("kane")){Ke=c.text;break}}let ie=J.activity[J.activity.length-1],ve=ie?ie.status==="decision"?ie.label:dt({name:ie.name,status:ie.status}):void 0,Qe=Y==="streaming"||Y==="working",[Ve,Nt]=(0,S.useState)(0);ot(()=>Nt(t=>t+1),Qe||k?.kind==="running"?120:null);let Wt=e.state.busySince?Math.floor((Date.now()-e.state.busySince)/1e3):0,Ft=Ue?"Writing\u2026":ve?`${ve.charAt(0).toUpperCase()}${ve.slice(1)}\u2026`:e.state.workingLabel??(r==="design"?"Designing\u2026":"Thinking\u2026"),Ut=e.state.turns.some(t=>t.role==="agent"),[jt,Kt]=(0,S.useState)(0),[Qt,Vt]=(0,S.useState)(!1),[He,Ht]=(0,S.useState)(null),le=(0,S.useRef)(0),Xe=(0,S.useRef)(!1),ze=(0,S.useRef)(null),ce=t=>{le.current=t,Kt(t)},Ge=t=>{Xe.current=t,Vt(t)},ee=t=>{ze.current=t,Ht(t)},Je=M&&M.cursor>=0?M.questions[M.cursor]:void 0,j=(0,S.useRef)(Je);j.current=Je;let H=(0,S.useRef)(M);H.current=M;let Xt=M?`${M.questions[0]?.id??"b"}:${M.cursor}`:null;(0,S.useEffect)(()=>{if(ee(null),j.current){Ge(!0);let t=H.current?.resolution[H.current.cursor]?.selected_index;ce(t??j.current.recommended_index??0)}else Ge(!1)},[Xt]);let ge=t=>{let c=H.current;return Le(t,c?be(c)!=="":!1)},zt={isFocused:()=>Xe.current&&j.current!=null&&ze.current==null||_.current!=null&&_.current.kind!=="running"||K.current&&tt.current==null,onMove:t=>{let c=j.current;if(c){ce(Math.max(0,Math.min(ge(c).maxSel,le.current+t)));return}let a=_.current;if(a?.kind==="picker"){N({...a,sel:Math.max(0,Math.min(a.items.length-1,a.sel+t))});return}if(a?.kind==="ask"||a?.kind==="confirm"){let I=(a.kind==="ask"?he.current.length:2)-1;N({...a,sel:Math.max(0,Math.min(I,a.sel+t))});return}a&&!K.current||K.current&&re(Math.max(0,Math.min(ue.current.length-1,Ee.current+t)))},onSelect:()=>{let t=j.current,c=H.current;if(!t||!c){let R=_.current;if(R?.kind==="picker"){let U=R.items[R.sel];U&&(U.designed?N({kind:"confirm",item:U,sel:0}):et(U,!1));return}if(R?.kind==="confirm"){At(R.item)[R.sel]?.key==="redesign"?et(R.item,!0):Be();return}if(R?.kind==="ask"){let U=he.current[R.sel]?.key;U==="another"?Be():U==="view"?nt(""):N(null);return}if(R&&!K.current||!K.current)return;switch(ue.current[Ee.current]?.key){case"finish":e.completeSession();return;case"continue":e.continueParked();return;case"design-chain":Be();return;case"view":nt("",Se.current);return;case"free":oe("");return}return}let a=ge(t),I=le.current;if(a.batchIdx!=null&&I===a.batchIdx){e.goWithRecommendations();return}if(a.freeIdx!=null&&I===a.freeIdx){ee("");return}if(a.doneIdx!=null&&I===a.doneIdx){e.confirmMulti(c.cursor);return}if(t.multi_select){e.toggleOption(c.cursor,I);return}e.submitAnswer(c.cursor,I)},onDigit:t=>{let c=j.current;if(c){t-1<c.options.length&&ce(t-1);return}let a=_.current;if(a?.kind==="picker"){t-1<a.items.length&&N({...a,sel:t-1});return}if(a?.kind==="ask"){t-1<he.current.length&&N({...a,sel:t-1});return}if(a?.kind==="confirm"){t-1<2&&N({...a,sel:t-1});return}if(!a&&K.current){let I=ue.current.filter(R=>!R.free);t-1<I.length&&re(t-1)}},isMulti:()=>{let t=j.current;return!!t?.multi_select&&le.current<(t?.options.length??0)},onSpace:()=>{let t=H.current;t&&e.toggleOption(t.cursor,le.current)},onTab:()=>{let t=j.current;if(!t)return;let c=ge(t);c.batchIdx!=null&&ce(c.batchIdx)},onType:t=>{let c=j.current;if(c){if(!c.allow_free_text)return;let a=ge(c);ce(a.freeIdx??0),ee(t);return}if(!(_.current&&!K.current)&&K.current){let a=mt(ue.current);if(a==null)return;re(a),oe(t)}},onBack:()=>{let t=_.current;if(t&&t.kind!=="running"){N(null);return}e.reopenQuestion()}},Gt=He!=null?{value:He,onChange:t=>ee(t),onSubmit:t=>{ee(null);let c=H.current;t.trim()&&c&&e.submitFreeText(c.cursor,t)},onCancel:()=>ee(null)}:null,Ye=s??(()=>e.requestPause()),te=e.state.checkpoint,fe=k?.kind==="running"&&Y==="idle",pe=Y==="idle"&&Ut&&!M&&!p&&(!k||fe),K=(0,S.useRef)(!1);K.current=pe;let X=G(e.state.turns).entries.length,ae,z;for(let t=Z.length-1;t>=0;t--){let c=Z[t];if(!ae&&c.kind==="commit"&&c.ok&&(ae=c.line),!z&&c.kind==="banner"&&c.text.startsWith("designing: ")&&(z=c.text.slice(11)),ae&&z)break}let ne=z?{"acceptance criteria":"scenarios",scenarios:"acceptance criteria + exercises","acceptance criteria + exercises":"tests + gaps"}[z]:void 0,Jt=(()=>{for(let t=Z.length-1;t>=0;t--){let c=Z[t];if(c.kind==="agent")return c.text}return null})(),Ie=/\?\s*$/.test((Jt??"").trimEnd()),Ze=r==="design"&&!te&&(Ie||ne!==void 0),Yt=fe&&!te?Ie?"the agent asked a question \u2014 reply to continue":`${k?.kind==="running"?k.title:"the design"} \u2014 the agent is waiting on you`:te?z?`${z} done${ne?` \u2014 next: ${ne}`:""}`:ae??"phase done":Ze?Ie?"the agent asked a question \u2014 reply to continue":`design incomplete \u2014 ${ne} not started`:ae??"waiting on you",Re=fe&&!te?[{key:"free",label:"reply \u2014 tell the agent what to change",free:!0},...X>0?[{key:"view",label:"view what's saved"}]:[],{key:"finish",label:"finish this design"}]:te?[{key:"continue",label:ne?`continue to ${ne}`:"continue"},...X>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}]:Ze?[{key:"free",label:"reply \u2014 answer and continue",free:!0},...X>0?[{key:"view",label:"view the design"}]:[],{key:"finish",label:"finish anyway"}]:[{key:"finish",label:r==="design"?"finish":"looks good \u2014 finish the session"},...l?[{key:"design-chain",label:"design tests for a use-case\u2026"}]:[],...X>0?[{key:"view",label:r==="design"?"view the design":`view the ${X} draft${X===1?"":"s"}`}]:[],{key:"free",label:r==="design"?"keep adjusting \u2014 tell me what to change":"tell me what to change",free:!0}],Ce=[{key:"another",label:"design another use-case\u2026"},...X>0?[{key:"view",label:"view what was designed"}]:[],{key:"back",label:"done \u2014 back"}],he=(0,S.useRef)(Ce);he.current=Ce;let Be=()=>{let t=l?.listUcs()??[];if(t.length===0){b("no use-cases to design yet");return}N({kind:"picker",items:t,sel:0})},et=(t,c)=>{let a={start:e.state.ledger.length,end:null};L.current.push(a);let I=()=>{a.end=e.state.ledger.length};N({kind:"running",title:t.title,startedAt:Date.now()}),l.runDesignChild(t.key,c).then(R=>{I(),e.ledger({kind:"commit",ok:R===0,line:R===0?`designed ${t.title}`:`design for ${t.title} failed \u2014 child exited ${R}`}),N({kind:"ask",title:t.title,sel:0})}).catch(R=>{I(),e.ledger({kind:"commit",ok:!1,line:`design for ${t.title} failed \u2014 ${R instanceof Error?R.message:String(R)}`}),N(null)})},ue=(0,S.useRef)(Re);ue.current=Re;let[Zt,en]=(0,S.useState)(0),[De,tn]=(0,S.useState)(null),Ee=(0,S.useRef)(0),tt=(0,S.useRef)(null),re=t=>{Ee.current=t,en(t)},oe=t=>{tt.current=t,tn(t)},nn=`${pe}:${te}:${Se.current}`;(0,S.useEffect)(()=>{re(0),oe(null)},[nn]);let rn=De!=null?{value:De,onChange:t=>oe(t),onSubmit:t=>{oe(null),re(0);let c=t.trim();c&&(b(null),e.submit(c))},onCancel:()=>{oe(null),re(0)}}:null,nt=(t,c)=>{if(/^(uc|sc|ac|t|gap|sty)-\d+$/i.test(t.trim())){let W=t.trim().toLowerCase(),xe=G(e.state.turns).entries.findIndex(O=>(O.item.logical_id??"").toLowerCase()===W);if(xe<0){b(`${t.trim().toUpperCase()} isn't in this session's items \u2014 view lists what this session minted`);return}v({level:"detail",cursor:xe,scroll:0}),E(null);return}let a=Dt(t);if("error"in a){b(a.error);return}let I=G(e.state.turns);if(I.entries.length===0){b("nothing proposed yet \u2014 the first turn is still coming");return}if(a.level==="detail"&&a.num>I.entries.length){b(`no item ${a.num} \u2014 the set has ${I.entries.length} item${I.entries.length===1?"":"s"}`);return}let R=c!=null?_e(I,c):I;v(Ct(a,R)),E(c!=null&&R.entries.length<I.entries.length?c:null)},rt=(0,D.jsx)(ft,{verb:r,subject:Ke,pendingCount:qt,creditsTotal:e.state.credits?.total,state:M||pe||p||k&&k.kind!=="running"?"idle":void 0});if(p){let t=G(e.state.turns),c=B!=null?_e(t,B):t,a=t.entries.length-c.entries.length,I=p.level==="list"&&a>0,R=c.entries.length+(I?1:0),W=c.entries[p.cursor],U=p.level==="detail"&&W?e.explainLines(W.item.slug??W.item.temp_ref):null,xe=p.level==="detail"&&W&&d?d(W.item.logical_id??e.aliasOf(W.item.temp_ref)??W.item.temp_ref):null;return(0,D.jsxs)(T,{flexDirection:"column",children:[(0,D.jsx)(Ae,{onToggleThinking:()=>m(O=>!O),onCtrlC:Ye,explorer:{isOpen:()=>C.current!==null,onMove:O=>v(C.current&&we(C.current,{type:"move",delta:O},R)),onEnter:()=>{let O=C.current;if(O){if(O.level==="list"&&I&&O.cursor===c.entries.length){E(null);return}v(we(O,{type:"enter"},R))}},onBack:()=>{v(C.current&&we(C.current,{type:"back"},R)),setTimeout(()=>f(O=>O+1),0)}}}),(0,D.jsx)(Bt,{items:c,state:p,verb:r,more:I?{hidden:a}:null,explain:U,grandTotal:t.entries.length,dossier:xe}),(me??g)&&(me??g).split(`
|
|
7
|
+
`).map((O,on)=>(0,D.jsx)(n,{color:o.orange,children:O},`nt-${on}`)),rt]})}return(0,D.jsxs)(T,{flexDirection:"column",children:[(0,D.jsx)(Ae,{onToggleThinking:()=>m(t=>!t),onCtrlC:Ye,panel:zt}),Ot&&(0,D.jsx)(at,{thinking:Pt.body,expanded:!0,thinkingDone:Y!=="streaming",maxLines:Et+1}),je.length>0&&(0,D.jsx)(T,{flexDirection:"column",children:je.map((t,c)=>(0,D.jsx)(n,{children:t},`st-${c}`))}),M&&(0,D.jsx)(ht,{batch:M,sel:jt,focused:Qt,freeText:Gt,multiSelFor:t=>e.multiSelection(t)}),Ne&&(0,D.jsx)(n,{color:"yellow",children:Ne.prompt}),(me??g)&&(me??g).split(`
|
|
8
|
+
`).map((t,c)=>(0,D.jsx)(n,{color:o.orange,children:t},`nt-${c}`)),Qe&&!M&&(0,D.jsxs)(n,{color:o.generateAccent,children:[`${$e[Ve%$e.length]} ${Ft} `,(0,D.jsx)(n,{color:o.dim,children:`(${Wt}s)`})]}),pe&&(0,D.jsx)(de,{headline:Yt,rows:Re,sel:Zt,focused:De==null,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 type = your own words",freeText:rn}),k?.kind==="picker"&&(0,D.jsx)(de,{ask:!0,headline:"design tests for which use-case?",rows:k.items.map(t=>({key:t.key,label:t.title,detail:t.badge})),sel:k.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),k?.kind==="confirm"&&(0,D.jsx)(de,{ask:!0,headline:`${k.item.title} is already designed${k.item.designed==="stale"?" \u2014 and the use-case has changed since":""}`,rows:At(k.item).map(t=>({key:t.key,label:t.label,detail:t.detail})),sel:k.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),k?.kind==="running"&&!fe&&(0,D.jsxs)(n,{color:o.generateAccent,children:[`${$e[Ve%$e.length]} Designing ${k.title}\u2026 `,(0,D.jsx)(n,{color:o.dim,children:`(${Math.floor((Date.now()-k.startedAt)/1e3)}s)`})]}),k?.kind==="ask"&&(0,D.jsx)(de,{headline:`designed ${k.title}`,rows:Ce,sel:k.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),Y==="pausing"&&(0,D.jsx)(n,{color:o.dim,children:"pausing \u2014 saving session\u2026 (ctrl+c again = force quit)"}),rt]})}export{mr as ChatSurface,$n 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-ZA4GR5R7.js";import"./chunk-QTHITA73.js";import"./chunk-VCYVSKPM.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-GBYH35H5.js";import"./chunk-QTHITA73.js";import"./chunk-VCYVSKPM.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-GNNMHYWE.js";import"./chunk-F42YVALT.js";import"./chunk-5Y2G4NC7.js";import"./chunk-VCYVSKPM.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-3YI4QRXF.js";import{y as o}from"./chunk-VCYVSKPM.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-EASTDHNW.js";import"./chunk-RFHMDQXZ.js";import"./chunk-O4HWPV67.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-LEA6IHXC.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L3HG5ONB.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-M5JQXOCE.js";import"./chunk-QZJID3OZ.js";import"./chunk-VCYVSKPM.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-QB4IOM3X.js";import"./chunk-YCCUBQY4.js";import"./chunk-JHAGEBKE.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-QZJID3OZ.js";import"./chunk-QTHITA73.js";import"./chunk-VCYVSKPM.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-VCYVSKPM.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-DKERZJYF.js";import"./chunk-3YI4QRXF.js";import"./chunk-VCYVSKPM.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-IWBPV3VS.js";import"./chunk-VCYVSKPM.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-OV2W7KBC.js";import"./chunk-QTHITA73.js";import"./chunk-VCYVSKPM.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-FT4G3QGO.js";import"./chunk-YCCUBQY4.js";import"./chunk-JHAGEBKE.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-QZJID3OZ.js";import"./chunk-QTHITA73.js";import"./chunk-VCYVSKPM.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-345PY4SZ.js";import"./chunk-S3DAAAE5.js";import"./chunk-DKERZJYF.js";import"./chunk-3YI4QRXF.js";import"./chunk-VCYVSKPM.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-MXLXKHW4.js";import"./chunk-QM3XF5TW.js";import"./chunk-R65HNFRB.js";import"./chunk-FVM7TWKT.js";import"./chunk-U5QTE3WX.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-L5LI2JF4.js";import"./chunk-FT4G3QGO.js";import"./chunk-QB4IOM3X.js";import"./chunk-YCCUBQY4.js";import"./chunk-JHAGEBKE.js";import"./chunk-M5JQXOCE.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-QZJID3OZ.js";import"./chunk-VE3SUJMA.js";import"./chunk-DPOES6G3.js";import"./chunk-QTHITA73.js";import"./chunk-VCYVSKPM.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-LRA3V5GY.js";import"./chunk-DKERZJYF.js";import"./chunk-3YI4QRXF.js";import"./chunk-VCYVSKPM.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-LMMOR7CR.js";import"./chunk-U6TLLYRG.js";import"./chunk-4BAL4OGF.js";import"./chunk-FVM7TWKT.js";import"./chunk-F42YVALT.js";import"./chunk-5Y2G4NC7.js";import"./chunk-M5JQXOCE.js";import"./chunk-QZJID3OZ.js";import"./chunk-DKERZJYF.js";import"./chunk-3YI4QRXF.js";import"./chunk-DFS4RMVP.js";import"./chunk-VCYVSKPM.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-3YI4QRXF.js";import{y as o}from"./chunk-VCYVSKPM.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};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as p}from"./chunk-
|
|
2
|
+
import{a as p}from"./chunk-VXLOEM2U.js";import"./chunk-SHAA6FOD.js";import"./chunk-KHU7C6EE.js";import"./chunk-3C5GMAM4.js";import"./chunk-RQM3DUSB.js";import"./chunk-FXPPQL4D.js";import"./chunk-GG43HSU2.js";import"./chunk-JFAFKHDX.js";import"./chunk-OSALXGD4.js";import"./chunk-DNNZ353O.js";import"./chunk-YKTYVJBN.js";import"./chunk-CVOGP253.js";import"./chunk-427OQS2N.js";import"./chunk-ZPDM6FO7.js";import{a as u}from"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import"./chunk-L5LI2JF4.js";import"./chunk-LEA6IHXC.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L3HG5ONB.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-VCYVSKPM.js";import"./chunk-UR6MHSHU.js";import{existsSync as D}from"fs";var b=new Set(["interactive","agent","ci","override"]);function E(e){return e.mode!=null&&!b.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 A(e){let c=async(r,s)=>{if(process.stderr.write(r+`
|
|
3
3
|
`),e.mode!=="agent")return 2;let{makeHeadlessIO:t,agentRefusal:i}=await import("./headless-io-PWW6YKH2.js");return i(t("ndjson","design"),r,s)},d=E(e);if("error"in d)return c(d.error);let a=d;{let{validateResumeMessage:r}=await import("./headless-io-PWW6YKH2.js"),s=r(a,"design");if(s)return c(s)}if(!D(u(process.cwd())))return c("error: no context store here (run `kane-cli context ingest` + `kane-cli context extract` first)","NO_STORE");let n=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
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:o}=await import("./interactive-bind-
|
|
5
|
+
`),2;let{bindDesignInteractive:o}=await import("./interactive-bind-QEBWUJCN.js");return await o(a)}let{resolveAgentAuthEnv:s}=await import("./spawner-C6B5J73J.js"),{runAgent:t}=await import("./bridge-V4FF5QPK.js"),{preflightTurn:i}=await import("./turn-preflight-JGYT7LXP.js"),{makeInterruptGuard:h}=await import("./interrupt-guard-UREUWNRL.js"),{baseUrlAdvisory:w}=await import("./turn-preflight-JGYT7LXP.js"),{makeHeadlessIO:T,resolveEncoding:v,guardedChannels:x}=await import("./headless-io-PWW6YKH2.js");n=T(v(r),"design");let m=await s(),l=w();l&&n.out(l);let g=h(t,o=>n.out(o)),f=x(n,()=>g.interrupted(),/^error: (design agent failed|the design agent ended)/);try{let o=await p({...a,mode:r},{contextDir:u(process.cwd()),agent:g.agent,preflightTurn:()=>i(m),ask:async()=>[],out:f.out,emit:f.emit,progress:n.progress,isTTY:!1,auth:m});return g.interrupted()&&o!==3?(n.out("interrupted \u2014 no session saved"),n.done(130)):n.done(o)}finally{g.dispose()}}catch(r){let s=r instanceof Error?r.message:String(r);n?.event({type:"error",message:`error: design failed: ${s}`});let t=n?i=>n.out(i):i=>process.stderr.write(i+`
|
|
6
6
|
`);return t(`error: design failed: ${s}`),(process.env.ASSURANCE_LOG_LEVEL??"").toLowerCase()==="debug"&&r instanceof Error&&r.stack&&t(r.stack),t("hint: per-run trace logs live under .context/logs/ (design-*.log)"),n?n.done(1):1}}export{A as designTestsCommand};
|
|
@@ -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-P4SE6YON.js";import"./chunk-7BCZLDNX.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-VCYVSKPM.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};
|
|
@@ -0,0 +1,2 @@
|
|
|
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-LEA6IHXC.js";import"./chunk-RGDQMKNJ.js";import{c as Y,d as z,n as Q}from"./chunk-L3HG5ONB.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};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a,b,c}from"./chunk-XWIN3S7O.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};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{f as je}from"./chunk-K5JGCJ2K.js";import{a as pe,e as Te,g as Ne,h as qe}from"./chunk-
|
|
3
|
-
`,"utf8")>x)break;
|
|
4
|
-
`}return{read_basis:o,sources:g,styleNoteDigest:
|
|
5
|
-
`)}catch{}};e.out(`trace: ${pe(g)}`),e.emit?.({type:"run_start",mode:c,trace:g});let l=Me();if(l&&e.out(l),e.preflightTurn){let t=await e.preflightTurn();if(u("preflight",t),!t.ok)return e.out(t.message??"error: turn-endpoint preflight failed"),e.emit?.({type:"error",message:t.message??"error: turn-endpoint preflight failed",code:"PREFLIGHT"}),2}let _=R(e.contextDir),
|
|
2
|
+
import{f as je}from"./chunk-K5JGCJ2K.js";import{a as pe,e as Te,g as Ne,h as qe}from"./chunk-RQM3DUSB.js";import{b as Fe,f as Ue,g as He,h as Ge}from"./chunk-FXPPQL4D.js";import{a as Pe}from"./chunk-GG43HSU2.js";import{a as Ae,b as Ie}from"./chunk-JFAFKHDX.js";import{c as Oe}from"./chunk-OSALXGD4.js";import{a as se,b as Ee}from"./chunk-DNNZ353O.js";import{b as Me}from"./chunk-YKTYVJBN.js";import{a as Be}from"./chunk-CVOGP253.js";import{a as V}from"./chunk-NVGBE2DR.js";import{a as R}from"./chunk-LEA6IHXC.js";import{e as z,f as re}from"./chunk-L3HG5ONB.js";import{b as Re}from"./chunk-IAHKTEET.js";import{d as H}from"./chunk-5YPBPZUR.js";import{appendFileSync as st,mkdirSync as he,writeFileSync as _e}from"fs";import{extname as ot,join as M}from"path";var E=class extends Error{code;constructor(e,c){super(`${e}: ${c}`),this.name="ProposalAdapterError",this.code=e}};function Le(s){return s.version===2}function We(s,e){if(s.read_basis.length!==1)throw new E("READ_BASIS_COUNT",`read_basis must have exactly 1 element, got ${s.read_basis.length}`);let c=s.read_basis[0],x=s.use_cases.map(o=>{if(o.cite.length!==1)throw new E("CITE_COUNT",`${o.temp_ref}: cite must have exactly 1 element, got ${o.cite.length}`);let g=o.cite[0];if(g.source_id!==c.source_id)throw new E("SOURCE_MISMATCH",`${o.temp_ref}: cite source ${g.source_id} != read_basis source ${c.source_id} (single-source)`);return{temp_ref:o.temp_ref,title:o.title,...o.description!==void 0?{description:o.description}:{},...o.summary!==void 0?{summary:o.summary}:{},...o.actors!==void 0?{actors:o.actors}:{},...o.value!==void 0?{value:o.value}:{},risk:o.risk,cite:{anchor:g.anchor,quote:g.quote},...o.criteria!=null&&o.criteria.length>0?{criteria:o.criteria.map((d,h)=>{if(d.cite.source_id!==c.source_id)throw new E("SOURCE_MISMATCH",`${o.temp_ref}.criteria[${h}]: cite source ${d.cite.source_id} != read_basis source ${c.source_id} (single-source)`);return{text:d.text,cite:{anchor:d.cite.anchor,quote:d.cite.quote}}})}:{},depends_on_hint:o.depends_on_hint,matches_existing:o.matches_existing,...o.conflicts_with!=null?{conflicts_with:o.conflicts_with}:{},...o.changed?{changed:!0}:{},...o.updated!=null?{updated:{...o.updated.title!=null?{title:o.updated.title}:{},...o.updated.description!=null?{description:o.updated.description}:{},...o.updated.summary!=null?{summary:o.updated.summary}:{},...o.updated.actors!=null?{actors:o.updated.actors}:{},...o.updated.value!=null?{value:o.updated.value}:{},...o.updated.risk!=null?{risk:o.updated.risk}:{},...o.updated.criteria!=null?{criteria:o.updated.criteria.map((d,h)=>{if(d.cite.source_id!==c.source_id)throw new E("SOURCE_MISMATCH",`${o.temp_ref}.updated.criteria[${h}]: cite source ${d.cite.source_id} != read_basis source ${c.source_id} (single-source)`);return{text:d.text,cite:{anchor:d.cite.anchor,quote:d.cite.quote}}})}:{}}}:{},...o.change_note!=null?{change_note:o.change_note}:{}}});return{version:1,read_basis:e,source:{source_id:c.source_id,source_cid:c.source_cid},use_cases:x}}function ze(s){let{contextDir:e,graph:c}=s,x=s.maxDigestBytes??4096,o={},g=[];for(let[u,l]of c.heads){if(o[u]=l,typeof l!="string")continue;let _=c.mediaOf(l),k=c.getNode(l)?.content?.blob;if(typeof k=="string")if(_.format==="image")g.push({source_id:u,cid:l,format:"image",blobRef:{path:V(e,k),cid:k}});else{let n=se(e,c,l)?.toString("utf8")??"";g.push({source_id:u,cid:l,format:_.format,text:n})}}g.sort((u,l)=>u.source_id<l.source_id?-1:1);let d=[];for(let u of c.byLabel(H.STYLENOTE).sort((l,_)=>l.cid<_.cid?-1:1))c.superseded.has(u.cid)||d.push(`\u2022 ${String(u.content.statement)} [${String(u.content.learned_from_kind)}]`);let h="";for(let u of d){if(Buffer.byteLength(h+u+`
|
|
3
|
+
`,"utf8")>x)break;h+=u+`
|
|
4
|
+
`}return{read_basis:o,sources:g,styleNoteDigest:h}}function Ve(s,e){let c=ze({contextDir:s,graph:e}).styleNoteDigest;return c.length>0?c:void 0}function it(s){return s.length>8&&s[0]===137&&s[1]===80&&s[2]===78&&s[3]===71?"image/png":s.length>3&&s[0]===255&&s[1]===216&&s[2]===255?"image/jpeg":s.length>12&&s.toString("ascii",0,4)==="RIFF"&&s.toString("ascii",8,12)==="WEBP"?"image/webp":null}function Je(s){return s.toISOString().replace(/[-:]/g,"").slice(0,15)}function nt(s){return s.startsWith("su-conv-")?`conv-${Re(Buffer.from(s,"utf8")).slice(0,8)}`:s}function Qe(s){return s.source_id.startsWith("su-conv-")?"the conversation":s.source_id}function at(s,e,c){return`reading ${Qe(s)}${c>1?` (source ${e} of ${c})`:""}`}function J(s){return s.toLowerCase().trim().replace(/\s+/g," ")}function Xe(s,e){let c=new Map,x=new Map,o=new Map;for(let{cid:d,content:h}of e.byLabel(H.USECASE)){if(e.superseded.has(d))continue;(e.trust.get(d)==="archived"?o:x).set(J(String(h.title??"")),d)}let g=d=>e.trust.get(d)==="archived"?{cid:d,archived:!0,reason:e.archivedReason.get(d)}:{cid:d};for(let d of s.use_cases){if(d.matches_existing){let l=d.matches_existing.cid;if(e.superseded.has(l)){let _=e.tipOf(l);l=e.superseded.has(_)?null:_}if(l!==null){c.set(d.temp_ref,g(l));continue}}let h=x.get(J(d.title));if(h){c.set(d.temp_ref,{cid:h});continue}let u=o.get(J(d.title));u&&c.set(d.temp_ref,g(u))}return c}var Ye=/^(\S+)\.criteria\[(\d+)\]/;function ct(s,e,c){if(e.length===0||!e.every(o=>Ye.test(o.detail)))return!1;let x=new Map;for(let o of e){let g=Ye.exec(o.detail),d=x.get(g[1])??new Set;d.add(Number(g[2])),x.set(g[1],d)}for(let o of s.use_cases){let g=x.get(o.temp_ref);g?.size&&(o.criteria=(o.criteria??[]).filter((d,h)=>!g.has(h)),c(`${o.temp_ref}: dropped ${g.size} criteria with unverifiable cites \u2014 committed without them (criteria are hints, not oracles)`))}return!0}async function Ke(s,e,c,x,o=()=>{},g){let d=(h,u)=>o(h,u,s.session_id);return Ne(s,e,c,x,o,{async onProposalEvent(h){let u=h,l=null,_=null;if(Le(u))try{l=We(u,s.read_basis),d("adapter",{ok:!0,use_cases:l.use_cases.length})}catch(k){_=k instanceof E?k.message:String(k),d("adapter",{ok:!1,error:_})}else l=u;return l&&l.use_cases.length===0&&e.out("warning: the agent proposed ZERO use-cases for this source"),l&&g&&await g(l),{proposal:l,error:_}}})}var dt=new Set(["agent","ci","override"]);async function Gt(s,e){let c=s.mode??"interactive";if(c==="interactive"){if(!e.isTTY)return e.out("extract: --mode interactive needs a TTY (use --mode agent|ci|override headless)"),2}else if(!dt.has(c))return e.out(`extract: unknown mode "${c}" \u2014 interactive | agent | ci | override`),2;let x=Je(e.now?.()??new Date),o=M(e.contextDir,"logs");he(o,{recursive:!0});let g=M(o,`extract-${x}.log`),d=`run-${x}-${Math.random().toString(36).slice(2,8)}`,h=t=>t==="error"||t==="failed_proposal"?"error":t==="repair_respawn"?"warn":"info",u=(t,a,m)=>{try{st(g,JSON.stringify({ts:new Date().toISOString(),level:h(t),run_id:d,...m?{session_id:m}:{},kind:t,data:a})+`
|
|
5
|
+
`)}catch{}};e.out(`trace: ${pe(g)}`),e.emit?.({type:"run_start",mode:c,trace:g});let l=Me();if(l&&e.out(l),e.preflightTurn){let t=await e.preflightTurn();if(u("preflight",t),!t.ok)return e.out(t.message??"error: turn-endpoint preflight failed"),e.emit?.({type:"error",message:t.message??"error: turn-endpoint preflight failed",code:"PREFLIGHT"}),2}let _=R(e.contextDir),k=Ve(e.contextDir,_);if(s.source){if(s.resume){let a="error: --source cannot be combined with --resume (the resumed session already has its scope)";return e.out(a),e.emit?.({type:"error",message:a,code:"SOURCE_WITH_RESUME"}),2}let t=_.heads.get(s.source);if(typeof t!="string"){let a=t===null?`error: --source ${s.source} was ingested but is retired \u2014 re-ingest it to extract again`:`error: --source ${s.source} is not an ingested source (kane-cli context list shows them)`;return e.out(a),e.emit?.({type:"error",message:a,code:"SOURCE_UNKNOWN"}),2}}let n=null;if(s.resume){try{n=Ge(e.contextDir,s.resume,_)}catch(m){return e.out(`error: ${m instanceof Error?m.message:String(m)}`),e.emit?.({type:"error",message:`error: ${m instanceof Error?m.message:String(m)}`}),1}let t=n.handle.state.change_basis;if(t&&(_.heads.get(t.source_id)??null)!==t.new_head){let m=`error: ${t.source_id} moved while this reconcile extraction was paused \u2014 its recorded change context no longer matches; re-run kane-cli maintain reconcile against the current file (session ${s.resume} is defunct and can be ignored)`;return e.out(m),e.emit?.({type:"error",message:m,code:"CHANGE_BASIS_MOVED"}),n.handle.release(),2}n.staleBasis.length>0&&e.out(`note: changed since the pause: ${n.staleBasis.join(", ")} \u2014 re-presented items may be stale`);let a=n.handle.state.held_receipts??[];if(a.length>0)if(e.chat?.holdReceipt)for(let m of a)e.chat.holdReceipt(m);else e={...e,initialMessage:[a.join(`
|
|
6
6
|
|
|
7
7
|
`),e.initialMessage].filter(Boolean).join(`
|
|
8
8
|
|
|
9
|
-
`)};n.handle.state.assumed.length>0&&e.out(`note: ${n.handle.state.assumed.length} default(s) were assumed while you were away \u2014 kane-cli context sessions show ${s.resume} lists them`)}let xe=_.extractedSourceCids,X=!!(s.force||n?.handle.state.force),y=[],P=[];for(let[t,a]of _.heads.entries())if(a!=null&&!(s.source&&t!==s.source)){if(!s.source&&!n&&t.startsWith("su-conv-")){e.out(`skipped: ${t} \u2014 conversation source (extract it explicitly with --source ${t})`),P.push({source_id:t,reason:"conversation"});continue}if(n){let m=t in n.handle.state.read_basis,I=n.handle.state.corpus_cursor.remaining.includes(t);if(!m&&!I)continue;if(I&&!X&&xe.has(a)){e.out(`cached: ${t} @ ${a.slice(0,19)} already extracted \u2014 skipping`),P.push({source_id:t,reason:"cached"});continue}}else if(!X&&xe.has(a)){e.out(`cached: ${t} @ ${a.slice(0,19)} already extracted \u2014 skipping`),P.push({source_id:t,reason:"cached"});continue}y.push({source_id:t,cid:a})}let Ze=t=>{let a=je(e.contextDir,t);a&&e.out(`note: a reconcile plan for ${t} is pending (${a.pending} item(s)) \u2014 resume with \`kane-cli maintain reconcile --apply ${a.path}\``)};for(let t of P)t.reason==="cached"&&Ze(t.source_id);if(e.emit?.({type:"corpus",sources:y,skipped:P}),y.length===0){if(n){let m=`error: resumed session's paused source (${Object.keys(n.handle.state.read_basis).join(", ")||"unknown"}) is no longer in the corpus \u2014 restore/re-ingest it and re-run --resume ${s.resume}, or discard with: kane-cli context sessions clean ${s.resume}`;return e.out(m),e.emit?.({type:"error",message:m,code:"SOURCE_MISSING"}),n.handle.release(),2}let t=P.length>0&&P.every(a=>a.reason==="conversation");return e.out(s.source?`extract: nothing to do \u2014 ${s.source} is already extracted at its current snapshot (--force to re-run)`:t?"extract: nothing to do \u2014 only conversation sources here (extract one explicitly with --source <id>)":"extract: nothing to do \u2014 every ingested source is already extracted"),0}let Y=new Map;if(n&&n.questions.length>0&&!s.message){e.out(`re-presenting ${n.questions.length} unanswered question(s) from the paused session`);let t=await e.ask(n.questions.map(Ue));for(let a of t)Y.set(a.id,a)}let G=e.by??{kind:"human",id:"owner"},A=c==="interactive"&&!s.plan&&!!e.chat,oe=0,ye=0;try{for(let t of y){let a=R(e.contextDir),m={current:a};e.chat?.attachOnCommitted?.(r=>{m.current=r});let I=a.getNode(t.cid),K=String(I?.content.blob??""),ie=
|
|
10
|
-
`);let rt=new Map(r.use_cases.map(
|
|
11
|
-
`),s.plan){e.out(`plan: ${w.use_cases.length} use-case(s) proposed from ${t.source_id} (nothing committed)`);for(let r of w.use_cases){let i=Z.get(r.temp_ref),v=i?i.archived?` \u2248 matches ARCHIVED ${i.cid.slice(0,19)}${i.reason?` \u2014 previously rejected: "${i.reason}"`:" \u2014 previously rejected"}`:` \u2248 matches ${i.cid.slice(0,19)}`:"";e.out(` [${r.risk}] ${r.title} \u2014 cite ${r.cite.anchor}${v}`)}e.emit?.({type:"plan",source_id:t.source_id,use_cases:w.use_cases.map(r=>{let i=Z.get(r.temp_ref);return{risk:r.risk,title:r.title,anchor:r.cite.anchor,...i?{match:i.cid,match_archived:!!i.archived}:{}}})}),f.assumedDefaults&&e.out(`assumed: ${f.assumedDefaults} default(s) auto-taken (flagged)`);continue}for(let r of w.use_cases){if(!r.conflicts_with?.length)continue;let i=r.conflicts_with.filter(
|
|
12
|
-
`);let ce=a,O=
|
|
9
|
+
`)};n.handle.state.assumed.length>0&&e.out(`note: ${n.handle.state.assumed.length} default(s) were assumed while you were away \u2014 kane-cli context sessions show ${s.resume} lists them`)}let xe=_.extractedSourceCids,X=!!(s.force||n?.handle.state.force),y=[],P=[];for(let[t,a]of _.heads.entries())if(a!=null&&!(s.source&&t!==s.source)){if(!s.source&&!n&&t.startsWith("su-conv-")){e.out(`skipped: ${t} \u2014 conversation source (extract it explicitly with --source ${t})`),P.push({source_id:t,reason:"conversation"});continue}if(n){let m=t in n.handle.state.read_basis,I=n.handle.state.corpus_cursor.remaining.includes(t);if(!m&&!I)continue;if(I&&!X&&xe.has(a)){e.out(`cached: ${t} @ ${a.slice(0,19)} already extracted \u2014 skipping`),P.push({source_id:t,reason:"cached"});continue}}else if(!X&&xe.has(a)){e.out(`cached: ${t} @ ${a.slice(0,19)} already extracted \u2014 skipping`),P.push({source_id:t,reason:"cached"});continue}y.push({source_id:t,cid:a})}let Ze=t=>{let a=je(e.contextDir,t);a&&e.out(`note: a reconcile plan for ${t} is pending (${a.pending} item(s)) \u2014 resume with \`kane-cli maintain reconcile --apply ${a.path}\``)};for(let t of P)t.reason==="cached"&&Ze(t.source_id);if(e.emit?.({type:"corpus",sources:y,skipped:P}),y.length===0){if(n){let m=`error: resumed session's paused source (${Object.keys(n.handle.state.read_basis).join(", ")||"unknown"}) is no longer in the corpus \u2014 restore/re-ingest it and re-run --resume ${s.resume}, or discard with: kane-cli context sessions clean ${s.resume}`;return e.out(m),e.emit?.({type:"error",message:m,code:"SOURCE_MISSING"}),n.handle.release(),2}let t=P.length>0&&P.every(a=>a.reason==="conversation");return e.out(s.source?`extract: nothing to do \u2014 ${s.source} is already extracted at its current snapshot (--force to re-run)`:t?"extract: nothing to do \u2014 only conversation sources here (extract one explicitly with --source <id>)":"extract: nothing to do \u2014 every ingested source is already extracted"),0}let Y=new Map;if(n&&n.questions.length>0&&!s.message){e.out(`re-presenting ${n.questions.length} unanswered question(s) from the paused session`);let t=await e.ask(n.questions.map(Ue));for(let a of t)Y.set(a.id,a)}let G=e.by??{kind:"human",id:"owner"},A=c==="interactive"&&!s.plan&&!!e.chat,oe=0,ye=0;try{for(let t of y){let a=R(e.contextDir),m={current:a};e.chat?.attachOnCommitted?.(r=>{m.current=r});let I=a.getNode(t.cid),K=String(I?.content.blob??""),ie=se(e.contextDir,a,t.cid);if(!ie)return e.out(`error: ${t.source_id}: blob ${K} missing from .context/blobs`),e.emit?.({type:"error",source_id:t.source_id,message:`error: ${t.source_id}: blob ${K} missing from .context/blobs`,code:"BLOB_MISSING"}),1;let T=a.mediaOf(t.cid),ne=T.media_type.startsWith("image/");if(!ne){let r=it(ie);if(r){e.out(`skipping ${t.source_id}: binary ${r} ingested before image support \u2014 re-ingest it (kane-cli context ingest) to extract from it`),e.emit?.({type:"source_skipped",source_id:t.source_id,reason:"binary_pre_media"});continue}}let q=ne?`0001| (image source ${t.source_id} \u2014 the content is attached as an image; cite it with anchor img#whole)`:Ee(ie),ve=Je(e.now?.()??new Date),N=`${ve}-${t.source_id}`,$e=!!(n&&t.source_id in n.handle.state.read_basis)?s.resume:`ext-${ve}-${nt(t.source_id)}`,F="";if(A){let r=Oe({contextDir:e.contextDir,graph:R(e.contextDir),sessionStamp:$e,by:G});r.errors===null||r.errors[0]?.code==="CONV_SOURCE_EXISTS"?(F=r.sourceId,e.chat.attachConversationSource?.(F),m.current=R(e.contextDir)):e.out(`warning: conversation source unavailable (${r.errors[0]?.detail}) \u2014 chat adds will not land this session`)}let b={type:"run_config",version:1,session_id:$e,mode:c,source:{source_id:t.source_id,source_cid:t.cid,kind:T.format==="pdf"?"pdf":ot(t.source_id)||"md",numbered_text:q,...T.format==="pdf"&&(T.images??[]).some(r=>r.delivery==="selected")?{images:(T.images??[]).filter(r=>r.delivery==="selected").map(r=>({ref:r.ref,page:r.page,media_type:r.media_type,blob_ref:{path:V(e.contextDir,r.blob),cid:r.blob}}))}:{}},existing_use_cases:a.byLabel(H.USECASE).filter(({cid:r})=>a.trust.get(r)!=="archived"&&!a.superseded.has(r)).map(({cid:r,content:i})=>({id:r,title:String(i.title??""),summary:String(i.summary??"")})),read_basis:m.current.latestHash,max_free_text_rounds:Te,graph_reads:!0,verb:"extract",...k!==void 0?{style_note_digest:k}:{},...s.changeContext&&s.changeContext.source_id===t.source_id?{change_context:s.changeContext}:{},topology:Be(),...A?{chat:!0}:{},...ne?{image_sources:[{source_id:t.source_id,source_cid:t.cid,media_type:T.media_type,blob_ref:{path:V(e.contextDir,K),cid:K}}]}:{},...n&&t.source_id in n.handle.state.read_basis?{resume:{agent_state:n.handle.state.agent_state}}:{}};A||e.out(n&&t.source_id in n.handle.state.read_basis?`resuming: ${t.source_id} (session ${s.resume})`:`extracting: ${t.source_id} @ ${t.cid.slice(0,19)}`),e.emit?.({type:"source_start",source_id:t.source_id,cid:t.cid,index:y.indexOf(t)+1,total:y.length,resumed:!!(n&&t.source_id in n.handle.state.read_basis)}),e.chat?.ledger?.({kind:"banner",text:at(t,y.indexOf(t)+1,y.length)}),e.chat?.setWorking?.(`Reading ${Qe(t)}\u2026`);let be=new Map;u("spawn",{source_id:t.source_id,source_cid:t.cid,resume:!!n,chat:A},b.session_id);let we=!1,et=async r=>{let i=z(r,q,R(e.contextDir));if(u("kane_validate",{errors:i.map(p=>p.code)},b.session_id),i.length>0){e.chat.submit("[auto-repair] the proposal failed validation: "+i.map(p=>`${p.code}: ${p.detail}`).join("; ")+" \u2014 please re-finalize with these fixed.");return}let v=R(e.contextDir),C=Xe(r,v),ee=M(e.contextDir,"proposals",N);he(ee,{recursive:!0}),_e(M(ee,"proposal.json"),JSON.stringify(r,null,2)+`
|
|
10
|
+
`);let rt=new Map(r.use_cases.map(p=>[p.temp_ref,{resolution:"skipped"}])),te=re({contextDir:e.contextDir,graph:v,proposal:r,proposalId:N,verdicts:rt,by:{kind:"ai",id:"extract-agent"},autoName:!0});if(te.errors){e.chat.ledger?.({kind:"commit",ok:!1,line:"commit failed \u2014 nothing landed",warnings:te.errors.map(p=>`${p.code}: ${p.detail}`)});return}we=!0;let j=te.record.nodes.length;oe+=j;let U=r.use_cases.length-j;{let p=R(e.contextDir),De=new Map;for(let{cid:$,content:D}of p.byLabel(H.USECASE))p.superseded.has($)||De.set(J(String(D.title??"")),$);let fe=[];for(let $ of r.use_cases){let D=null;if($.matches_existing?.cid&&p.hasNode($.matches_existing.cid)){let W=p.tipOf($.matches_existing.cid);D=p.superseded.has(W)?null:W}D=D??De.get(J($.title))??null,D&&fe.push({ref:$.temp_ref,cid:D,...p.displayNameOf(D)?{id:p.displayNameOf(D)}:{}})}fe.length>0&&e.chat.registerAliases?.(fe),m.current=p;let ke=$=>{for(let[D,W]of p.names)if(W===$&&!p.superseded.has(W))return D},Ce=Pe({verb:"extract",commitN:1,phase:"proposal",committed:te.record.nodes.map($=>({cid:$.cid,...ke($.cid)?{logical_id:ke($.cid)}:{}})),reused:U},p);e.emit?.(Ce.event),e.chat.holdReceipt?.(Ce.text)}u("commit",{derived:j,evidence_matched:U,chat:!0},b.session_id),e.chat.ledger?.({kind:"commit",ok:!0,line:j===0&&U>0?`all ${U} matched existing \u2014 nothing new to save`:`saved ${j} use-case${j===1?"":"s"} as drafts`+(U>0?` \xB7 ${U} matched existing`:"")})},Se=!!(n&&t.source_id in n.handle.state.read_basis),Q=Se&&Y.size>0?{...e,ask:async r=>r.every(i=>Y.has(i.id))?(n.handle.markApplied(r.map(i=>`resolveq:${s.resume}:${i.id}`)),e.out(`answered ${r.length} re-asked question(s) from the held resume answers`),r.map(i=>Y.get(i.id))):e.ask(r)}:e;Se&&s.message&&(Q={...Q,initialMessage:s.message});let f=await Ke(b,{...Q,graphSlot:m},be,a,u,A?et:void 0);if(e.chat?.setWorking?.(null),f.error)return e.out(`error: agent failed for ${t.source_id}: ${f.error}`),e.emit?.({type:"error",source_id:t.source_id,message:`error: agent failed for ${t.source_id}: ${f.error}`}),1;if(f.highRisk)return e.out(`error: ${f.highRisk.length} high-risk decision${f.highRisk.length===1?"":"s"} need a human \u2014 ci mode won't guess. Re-run with --mode agent to pause for review.`),e.emit?.({type:"error",source_id:t.source_id,message:`error: high-risk question(s) in ci mode (fail-closed): ${f.highRisk.map(r=>r.id).join(", ")}`,code:"HIGH_RISK_CI"}),1;if(f.paused){let r=y.slice(y.indexOf(t)+1).map(ee=>ee.source_id),i=n?.handle??Fe(e.contextDir,{sid:b.session_id,mode:"agent",created_at:(e.now?.()??new Date).toISOString(),expires_at:new Date((e.now?.()??new Date).getTime()+1440*60*1e3).toISOString(),agent_state:f.paused.agent_state,pending:{questions:[],proposals:[]},assumed:[],read_basis:{[t.source_id]:t.cid},corpus_cursor:{remaining:r},conv_source:F,verb:"extract",...X?{force:!0}:{},...s.changeContext?{change_basis:{source_id:s.changeContext.source_id,new_head:s.changeContext.new_head}}:{}});F&&i.state.conv_source!==F&&i.save({conv_source:F});let v=e.chat?.drainHeldReceipts?.()??[];(v.length>0||(i.state.held_receipts?.length??0)>0)&&i.save({held_receipts:v}),n?.handle&&i.save({read_basis:{[t.source_id]:t.cid},corpus_cursor:{remaining:r},...X&&!i.state.force?{force:!0}:{}}),He(i,f.paused),u("session_paused",{sid:i.state.sid},b.session_id);let C=`kane-cli context extract --resume ${i.state.sid} --mode ${c}`;return e.out(`paused: session ${i.state.sid} saved \u2014 resume with: ${C}`),e.emit?.({type:"session_paused",sid:i.state.sid,source_id:t.source_id,mode:c,resume:C,expires_at:i.state.expires_at,pending_questions:f.paused.pending.questions}),e.chat?.ledger?.({kind:"pause",sid:i.state.sid,expires_at:i.state.expires_at,resume:C,messageForm:`${C} --message "<your words>"`}),3}if(A){if(ye+=f.assumedDefaults??0,f.error)return 1;if(!we){let r=y.length-y.indexOf(t)-1;return e.out(`done \u2014 nothing committed for ${t.source_id} (no finalize before the session ended)`+(r>0?`; stopping here \u2014 ${r} remaining source(s) not extracted (re-run kane-cli context extract to continue)`:"")),n&&t.source_id in n.handle.state.read_basis&&(n.handle.complete(),n=null),0}n&&t.source_id in n.handle.state.read_basis&&(n.handle.complete(),n=null);continue}if(!f.proposal)return e.out(`error: agent ended without a proposal for ${t.source_id}`),e.emit?.({type:"error",source_id:t.source_id,message:`error: agent ended without a proposal for ${t.source_id}`}),1;let S=z(f.proposal,q,a);if(u("kane_validate",{errors:S.map(r=>r.code)},b.session_id),S.length>0&&ct(f.proposal,S,r=>e.out(r))&&(u("criteria_dropped",{source_id:t.source_id},b.session_id),S=z(f.proposal,q,a)),S.length>0){if(e.out("the agent's proposal didn't validate \u2014 retrying once"),e.emit?.({type:"validate_failed",source_id:t.source_id,codes:S.map(r=>r.code),repairing:!0}),u("repair_respawn",{source_id:t.source_id},b.session_id),f=await Ke(b,{...Q,graphSlot:m},be,a,u),f.error||!f.proposal)return e.out(`error: repair run failed for ${t.source_id}`),e.emit?.({type:"error",source_id:t.source_id,message:`error: repair run failed for ${t.source_id}`}),1;if(S=z(f.proposal,q,a),S.length>0){for(let r of S)e.out(` ${r.detail}`);return e.emit?.({type:"validate_failed",source_id:t.source_id,codes:S.map(r=>r.code),repairing:!1}),e.emit?.({type:"error",source_id:t.source_id,message:`error: proposal failed validation after repair (${S.map(r=>r.code).join(", ")})`}),1}}let w=f.proposal,Z=Xe(w,a),ae=M(e.contextDir,"proposals",N);if(he(ae,{recursive:!0}),_e(M(ae,"proposal.json"),JSON.stringify(w,null,2)+`
|
|
11
|
+
`),s.plan){e.out(`plan: ${w.use_cases.length} use-case(s) proposed from ${t.source_id} (nothing committed)`);for(let r of w.use_cases){let i=Z.get(r.temp_ref),v=i?i.archived?` \u2248 matches ARCHIVED ${i.cid.slice(0,19)}${i.reason?` \u2014 previously rejected: "${i.reason}"`:" \u2014 previously rejected"}`:` \u2248 matches ${i.cid.slice(0,19)}`:"";e.out(` [${r.risk}] ${r.title} \u2014 cite ${r.cite.anchor}${v}`)}e.emit?.({type:"plan",source_id:t.source_id,use_cases:w.use_cases.map(r=>{let i=Z.get(r.temp_ref);return{risk:r.risk,title:r.title,anchor:r.cite.anchor,...i?{match:i.cid,match_archived:!!i.archived}:{}}})}),f.assumedDefaults&&e.out(`assumed: ${f.assumedDefaults} default(s) auto-taken (flagged)`);continue}for(let r of w.use_cases){if(!r.conflicts_with?.length)continue;let i=r.conflicts_with.filter(C=>a.resolve(C)!==null),v=r.conflicts_with.filter(C=>a.resolve(C)===null);v.length>0&&(e.out(`note: ${r.temp_ref}: dropped unresolvable conflict hint(s): ${v.join(", ")}`),r.conflicts_with=i.length>0?i:void 0)}u("review_start",{use_cases:w.use_cases.length,flags:Z.size},b.session_id);let L=await e.review(w.use_cases,Z);u("review_verdicts",[...L.entries()].map(([r,i])=>({ref:r,resolution:i.resolution})),b.session_id),_e(M(ae,"review.json"),JSON.stringify(w.use_cases.map(r=>{let i=L.get(r.temp_ref)??{resolution:"skipped"};return{id:r.temp_ref,kind:"review-item",resolution:i.resolution,edit:i.edit??null,reason:i.reason??null,...i.supersedeTarget?{supersede_target:i.supersedeTarget}:{},by:G}}),null,2)+`
|
|
12
|
+
`);let ce=a,O=re({contextDir:e.contextDir,graph:ce,proposal:w,proposalId:N,verdicts:L,by:G,autoName:!0});if(O.errors&&O.errors[0]?.code==="STALE_BASIS"){if(!await e.confirmStale(`the context changed while you reviewed (${O.errors[0].detail}) \u2014 commit against the new head anyway?`))return e.out("aborted: proposal not committed"),e.emit?.({type:"error",source_id:t.source_id,message:"aborted: proposal not committed",code:"STALE_BASIS"}),e.emit?.({type:"done",status:"aborted",exit_code:1}),1;ce=R(e.contextDir),O=re({contextDir:e.contextDir,graph:ce,proposal:w,proposalId:N,verdicts:L,by:G,allowStaleBasis:!0,autoName:!0})}if(O.errors){for(let r of O.errors)e.out(` ${r.detail}`);return e.emit?.({type:"error",source_id:t.source_id,message:`error: commit failed: ${O.errors.map(r=>`${r.code}: ${r.detail}`).join("; ")}`}),1}let tt=new Date().toISOString();for(let r of w.use_cases){let i=L.get(r.temp_ref)??{resolution:"skipped"};for(let v of Ie({ts:tt,command:"context extract",id:r.temp_ref,by:G},i.resolution))Ae(e.contextDir,v)}let B=O.record,de=new Map(B.review.map(r=>[r.id,r.resolution])),ue=[...de.values()].filter(r=>r==="approved"||r==="edited").length,le=[...de.values()].filter(r=>r==="rejected").length,me=B.nodes.filter(r=>!de.has(r.cid)).length,ge=B.supersessions.filter(r=>r.kind==="node"&&r.new!==r.old).length;u("commit",{trusted:ue,derived:me,archived:le},b.session_id),e.out(`committed: ${ue} trusted, ${me} derived (queued), ${le} archived`+(ge>0?`, ${ge} superseded`:"")),f.assumedDefaults&&e.out(`assumed: ${f.assumedDefaults} default(s) auto-taken (flagged)`),e.emit?.({type:"commit",source_id:t.source_id,proposal_id:N,trusted:ue,derived:me,archived:le,superseded:ge,assumed:f.assumedDefaults??0,evidence_matched:Math.max(0,w.use_cases.length-B.nodes.length),minted:B.nodes.map(r=>{let i=B.names?.find(v=>v.cid===r.cid)?.slug;return{cid:r.cid,...i?{logical_id:i}:{}}})}),n&&t.source_id in n.handle.state.read_basis&&(n.handle.complete(),e.out(`session ${s.resume} complete`),e.emit?.({type:"session_complete",sid:s.resume,source_id:t.source_id}),n=null)}}finally{n?.handle.release()}if(A){let t=e.chat?.state.ledger.filter(I=>I.kind==="answer"&&I.receipt.form==="assumed").length??0,a=ye+t,m=e.chat?.state.credits?.total;e.chat?.ledger?.({kind:"summary",lines:[`saved ${oe} use-case${oe===1?"":"s"} across ${y.length} source${y.length===1?"":"s"}`,...a>0?[`${a} assumed default(s)`]:[],...m!==void 0?[`credits used: ${m.toFixed(1)}`]:[],`trace: ${pe(g)}`]})}return s.plan||qe(e.contextDir),0}export{nt as a,Qe as b,at as c,Xe as d,Gt as e};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as B}from"./chunk-S3DAAAE5.js";import{a as g}from"./chunk-
|
|
2
|
+
import{b as B}from"./chunk-S3DAAAE5.js";import{a as g}from"./chunk-DKERZJYF.js";import{y as s}from"./chunk-VCYVSKPM.js";import{a as w}from"./chunk-HCBYKLMW.js";import{a as x,b as t,c as h,i as P,j as S}from"./chunk-C44QQJR4.js";import{a as C}from"./chunk-6YGTRKDT.js";import{e as T}from"./chunk-UR6MHSHU.js";var o=T(C(),1);var e=T(w(),1);function D({defaultName:i,onSubmit:c}){let[d,p]=(0,o.useState)("confirm"),[f,a]=(0,o.useState)(""),[m,u]=(0,o.useState)(null),l=(0,o.useMemo)(()=>f.trim()||i,[f,i]);return P((n,r)=>{if(d==="confirm"){if(n==="y"||n==="Y"){a(i),p("name");return}if(n==="n"||n==="N"||r.escape||r.ctrl&&n==="c"){c(null);return}if(r.return){c(i);return}return}if(r.return){if(!B(l)){u(`name "${l}" is invalid; allowed: letters, digits, underscore, hyphen`);return}c(l);return}if(r.escape||r.ctrl&&n==="c"){c(null);return}if(r.backspace||r.delete){a(v=>v.slice(0,-1)),u(null);return}n&&!r.ctrl&&!r.meta&&(a(v=>v+n),u(null))}),d==="confirm"?(0,e.jsx)(g,{title:"Save session?",titleColor:"#ff9500",rows:[{label:"name",value:(0,e.jsx)(t,{color:s.orange,children:i})}],footer:(0,e.jsxs)(x,{flexDirection:"column",children:[(0,e.jsx)(t,{color:s.dim,children:"enter \u2014 save with this name"}),(0,e.jsx)(t,{color:s.dim,children:"Y \u2014 edit name"}),(0,e.jsx)(t,{color:s.dim,children:"N/esc \u2014 discard session"})]})}):(0,e.jsx)(g,{title:"Save session?",titleColor:"#ff9500",rows:[{label:"name",value:(0,e.jsxs)(x,{children:[(0,e.jsx)(t,{color:s.orange,children:f}),(0,e.jsx)(t,{inverse:!0,children:" "})]})}],footer:(0,e.jsxs)(x,{flexDirection:"column",children:[m&&(0,e.jsx)(t,{color:s.red,children:m}),(0,e.jsx)(t,{color:s.dim,children:"enter \u2014 save \xB7 esc \u2014 discard"})]})})}function V(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}async function Y(i){return new Promise(c=>{function d(){let{exit:a}=S(),[m,u]=(0,o.useState)(!1);return(0,o.useEffect)(()=>{if(m){let l=setTimeout(()=>a(),50);return()=>clearTimeout(l)}},[m,a]),(0,e.jsx)(D,{defaultName:i,onSubmit:l=>{c(l),u(!0)}})}let{waitUntilExit:p,unmount:f}=h((0,e.jsx)(d,{}),{stdout:process.stderr,exitOnCtrlC:!1});p().then(()=>{try{f()}catch{}})})}export{D as a,V as b,Y as c};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{y as o}from"./chunk-
|
|
2
|
+
import{y as o}from"./chunk-VCYVSKPM.js";import{a as m}from"./chunk-HCBYKLMW.js";import{a as e,b as i}from"./chunk-C44QQJR4.js";import{e as d}from"./chunk-UR6MHSHU.js";var r=d(m(),1),s={default:o.muted,error:o.red,success:o.green,info:o.orange,warning:o.orange};function h({title:t,titleColor:a,borderColor:l,variant:n="default",children:c,width:u,paddingX:x=2,paddingY:g=0,marginBottom:f=0}){let p=l??s[n],B=a??(n==="default"?o.orange:s[n]);return(0,r.jsxs)(e,{flexDirection:"column",marginBottom:f,children:[t&&(0,r.jsx)(e,{marginBottom:0,children:(0,r.jsxs)(i,{color:B,bold:!0,children:[" ",t]})}),(0,r.jsx)(e,{borderStyle:"round",borderColor:p,flexDirection:"column",paddingX:x,paddingY:g,width:u,children:c})]})}function k({label:t,value:a,labelColor:l=o.dim,valueColor:n,labelWidth:c=14}){return(0,r.jsxs)(e,{children:[(0,r.jsx)(e,{width:c,flexShrink:0,children:(0,r.jsx)(i,{color:l,children:t})}),(0,r.jsx)(e,{flexShrink:1,children:(0,r.jsx)(i,{color:n,wrap:"wrap",children:a})})]})}function I({label:t}){return(0,r.jsx)(e,{marginTop:1,marginBottom:0,children:(0,r.jsx)(i,{bold:!0,children:t})})}export{h as a,k as b,I as c};
|
|
@@ -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-FVM7TWKT.js";import{a as O}from"./chunk-QZJID3OZ.js";import{e as w,j as N}from"./chunk-VCYVSKPM.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 E}from"./chunk-YCCUBQY4.js";import{y as m}from"./chunk-VCYVSKPM.js";import{a as R}from"./chunk-HCBYKLMW.js";import{a as h,b as s,i as C,k as S}from"./chunk-C44QQJR4.js";import{a as B}from"./chunk-6YGTRKDT.js";import{e as w}from"./chunk-UR6MHSHU.js";var c=w(R(),1);function N(d){let n=d.findIndex(o=>o.free);return n>=0?n:null}var $=60;function W({headline:d,ask:n=!1,rows:o,sel:r,focused:x,legend:l,freeText:u=null,freeTextNote:f}){let{stdout:t}=S(),e=(t?.columns??80)<$,a=i=>x&&r===i?(0,c.jsx)(s,{color:m.generateAccent,children:"\u25B8"}):" ",p=0,g=(0,c.jsxs)(h,{flexDirection:"column",children:[n?(0,c.jsx)(s,{bold:!0,color:m.generateAccent,children:`? ${d}`}):(0,c.jsx)(s,{bold:!0,children:d}),o.map((i,T)=>i.free?u?(0,c.jsxs)(h,{flexDirection:"column",children:[(0,c.jsxs)(h,{children:[(0,c.jsxs)(s,{children:[" ",(0,c.jsx)(s,{color:m.generateAccent,children:"\u25B8"})," ",(0,c.jsx)(s,{color:m.dim,children:"\u270E "})]}),(0,c.jsx)(E,{value:u.value,onChange:u.onChange,onSubmit:u.onSubmit,onCancel:u.onCancel,placeholder:i.label})]}),f?(0,c.jsx)(s,{color:m.muted,children:` ${f}`}):null]},i.key):(0,c.jsxs)(s,{children:[" ",a(T)," ",(0,c.jsx)(s,{color:m.dim,children:`\u270E ${i.label}`})]},i.key):(p+=1,(0,c.jsxs)(s,{bold:x&&r===T,children:[" ",a(T),` ${p} ${i.label}`,i.detail?(0,c.jsx)(s,{color:m.dim,bold:!1,children:` \u2014 ${i.detail}`}):null]},i.key))),(0,c.jsx)(s,{color:m.muted,children:` ${l}`})]});return e?g:(0,c.jsx)(h,{flexDirection:"column",borderStyle:"round",borderColor:m.generateAccent,paddingX:1,children:g})}var A=w(R(),1),P="ctrl+t thinking \xB7 ctrl+c exit";function M(d,n){if(d.length<=n)return d;if(n<=1)return"\u2026";let o=Math.ceil((n-1)/2),r=Math.floor((n-1)/2);return`${d.slice(0,o)}\u2026${r>0?d.slice(-r):""}`}function L({verb:d,subject:n,pendingCount:o,creditsTotal:r,state:x,hints:l=P}){let{stdout:u}=S(),f=u?.columns??80,t=[];t.push(d),x&&t.push(x),r!==void 0&&t.push(`${r.toFixed(1)} credits`);let e=o?`[${o} pending]`:null,a=" \xB7 ",g=[...t,...e?[e]:[]].join(a).length,i,T=[...t,...n?[n]:[],...e?[e]:[],l].join(a);if(T.length<=f)i=T;else{let b=f-g-(n?a.length:0)-a.length-l.length;if(n&&b>=8)i=[...t,M(n,b),...e?[e]:[],l].join(a);else{let v=f-g-(n?a.length:0);i=[...t,...n&&v>=4?[M(n,v)]:[],...e?[e]:[]].join(a)}}if(x){let b=` \xB7 ${x}`,v=i.indexOf(b);if(v>=0)return(0,A.jsxs)(s,{color:m.dim,children:[i.slice(0,v+3),(0,A.jsx)(s,{color:m.generateAccent,children:x}),i.slice(v+b.length)]})}return(0,A.jsx)(s,{color:m.dim,children:i})}var O=w(B(),1);function q({onToggleThinking:d,onCtrlC:n,explorer:o,panel:r}){let l=(0,O.useRef)(null),u=(0,O.useRef)(""),f=()=>{l.current&&clearTimeout(l.current),l.current=null,u.current=""};return(0,O.useEffect)(()=>f,[]),C((t,e)=>{if(e.ctrl&&t==="t"){d();return}if(e.ctrl&&t==="c"){n();return}if(!e.ctrl&&t.includes("")){n();return}if(!e.ctrl&&t.includes("")){d();return}if(o&&o.isOpen()){let a=()=>{l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{f(),o.onBack()},150)};if(l.current){if(e.upArrow||e.downArrow||e.return){f(),e.return?o.onEnter():o.onMove(e.upArrow?-1:1);return}if(u.current+=t,u.current==="["){a();return}let p=u.current;f();let g=/^\[([AB])/.exec(p);if(g){o.onMove(g[1]==="A"?-1:1);return}o.onBack();return}if(e.upArrow){o.onMove(-1);return}if(e.downArrow){o.onMove(1);return}if(e.return){o.onEnter();return}if(e.escape){u.current="",a();return}return}if(r&&r.isFocused()){let a=()=>{l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{f(),r.onBack()},150)};if(l.current){if(e.upArrow||e.downArrow||e.return){f(),e.return?r.onSelect():r.onMove(e.upArrow?-1:1);return}if(u.current+=t,u.current==="["){a();return}let p=u.current;f();let g=/^\[([AB])/.exec(p);if(g){r.onMove(g[1]==="A"?-1:1);return}r.onBack();return}if(e.upArrow){r.onMove(-1);return}if(e.downArrow){r.onMove(1);return}if(e.return){r.onSelect();return}if(e.escape){u.current="",a();return}if(/^[1-9]$/.test(t)){r.onDigit(Number(t));return}if(e.tab){r.onTab?.();return}if(t===" "&&r.isMulti()){r.onSpace();return}if(t&&!e.ctrl&&!e.meta){r.onType(t);return}return}}),null}export{N as a,W as b,L as c,q as d};
|
|
@@ -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-U5QTE3WX.js";import{c as k}from"./chunk-RFHMDQXZ.js";import{a as C}from"./chunk-DPOES6G3.js";import{q as m,r as u,s as f,t as x,u as y}from"./chunk-VCYVSKPM.js";import{createServer as S}from"http";import{randomBytes as A}from"crypto";import{URL as L}from"url";var P=class{profile;environment;creds;oauth;constructor(r="default",o="prod",e){this.profile=r,this.environment=o,this.creds=e??new C,this.oauth=new b(o)}async login(){let{server:r,port:o}=await this.startCallbackServer(),e=y(o);try{let t=this.creds.loadClient(this.profile,this.environment),i=t?.redirect_uris;(!t||!i?.includes(e))&&(t=await this.oauth.registerClient(e),this.creds.saveClient(this.profile,this.environment,t));let c=t.client_id,[h,d]=b.generatePkce(),a=A(32).toString("hex"),n=this.oauth.buildAuthorizationUrl(c,d,a,e),l=await this.waitForCallback(r,o,n,a);if(!l)throw new Error("Login cancelled or timed out");let p=await this.oauth.exchangeCode(l,c,h,e),g={access_token:p.access_token,refresh_token:p.refresh_token,expires_at:Math.floor(Date.now()/1e3)+p.expires_in,scope:p.scope??"*"};return this.creds.saveCredentials(this.profile,this.environment,g),this.creds.setActiveProfile(this.profile),g}catch(t){throw r.close(),t}}startCallbackServer(){return new Promise((r,o)=>{let e=u,t=()=>{let i=S();i.on("error",c=>{c.code==="EADDRINUSE"&&e<f?(e++,t()):o(new Error(`Failed to start callback server: ${c.message}. Ports ${u}-${f} are all in use.`))}),i.listen(e,m,()=>{r({server:i,port:e})})};t()})}waitForCallback(r,o,e,t){return new Promise(i=>{let c=!1,h=setTimeout(()=>d(null),12e4),d=a=>{c||(c=!0,clearTimeout(h),r.close(),i(a))};r.on("request",(a,n)=>{let l=new L(a.url??"/",`http://${m}:${o}`);if(l.pathname!==x){n.writeHead(404),n.end();return}let p=l.searchParams.get("state"),g=l.searchParams.get("code");if(l.searchParams.get("error")){n.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),n.end(v({state:"error",title:"Login failed",message:"We couldn't complete the sign-in. You can close this tab and try again from your terminal."})),d(null);return}if(p!==t){n.writeHead(400,{"Content-Type":"text/html; charset=utf-8"}),n.end(v({state:"error",title:"Invalid state",message:"The sign-in response didn't match this session. Please return to your terminal and try again."})),d(null);return}n.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),n.end(v({state:"success",title:"You're signed in",message:"Head back to your terminal \u2014 KaneAI is ready when you are.",autoClose:!0})),d(g)}),k(e).catch(a=>{let n=a instanceof Error?a.message:String(a);process.stderr.write(`[auth] Could not open browser: ${n}
|
|
3
3
|
Please open this URL manually: ${e}
|
|
4
4
|
`)})})}};function v(s){let r=s.state==="success",o=r?"#22c55e":"#ef4444",e=r?"rgba(34, 197, 94, 0.12)":"rgba(239, 68, 68, 0.12)",t=r?'<svg viewBox="0 0 24 24" width="36" height="36" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12.5l4.5 4.5L19 7"/></svg>':'<svg viewBox="0 0 24 24" width="36" height="36" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"/></svg>',i=s.autoClose?"<script>setTimeout(function(){try{window.close();}catch(e){}}, 1500);</script>":"";return`<!doctype html>
|
|
5
5
|
<html lang="en">
|