@testmuai/kane-cli 0.6.10 → 0.7.0
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-PMEOJBZG.js +8 -0
- package/dist/{ChromeProfilePicker-IDKFTIHW.js → ChromeProfilePicker-DK2A3NYY.js} +1 -1
- package/dist/{CliFeedbackPrompt-SZOU5FGZ.js → CliFeedbackPrompt-D5QDOBE2.js} +1 -1
- package/dist/{CliUploadProgress-W2FC33Q4.js → CliUploadProgress-AIZL7N6Z.js} +1 -1
- package/dist/{ConfigView-JB2NSZ2N.js → ConfigView-SDBCTYUU.js} +1 -1
- package/dist/{EvidenceViewOffer-5YST67KY.js → EvidenceViewOffer-EOKJE2B6.js} +1 -1
- package/dist/{FolderPicker-SPNZESAR.js → FolderPicker-IVBHPPMW.js} +1 -1
- package/dist/{HelpView-XBDXXHFB.js → HelpView-YYYX4RKI.js} +1 -1
- package/dist/{InfoBox-2T7GYSFT.js → InfoBox-MQV3XBT4.js} +1 -1
- package/dist/{LinksBox-2NNZZDQT.js → LinksBox-NCFNBUMW.js} +1 -1
- package/dist/{ProfilesView-KJZVGU5B.js → ProfilesView-6GXF6CP2.js} +1 -1
- package/dist/{ProjectPicker-AUTZNEPE.js → ProjectPicker-W6XDGNDJ.js} +1 -1
- package/dist/{SaveSessionPrompt-LHLSJQSQ.js → SaveSessionPrompt-QF3P7ERS.js} +1 -1
- package/dist/SingleShotApp-T673X7BS.js +2 -0
- package/dist/{SummaryBox-5G7WULUN.js → SummaryBox-4SZI4XSO.js} +1 -1
- package/dist/TestMdRunView-SNYEO6CS.js +2 -0
- package/dist/{WhoamiView-XNWBDMQR.js → WhoamiView-N3HAJ3TN.js} +1 -1
- package/dist/auth-RXNBQZI2.js +2 -0
- package/dist/{bind-FEOGBJ2O.js → bind-NSGW5BBZ.js} +2 -2
- package/dist/{bootstrap-T6DSUI34.js → bootstrap-RPT3JOGD.js} +1 -1
- package/dist/{bridge-WMGH3O3B.js → bridge-BTSWCJ3B.js} +1 -1
- package/dist/{changelog-AGFDNTTW.js → changelog-MI3IPBJS.js} +1 -1
- package/dist/{chat-committer-4ENYH3RC.js → chat-committer-OS7ULZMH.js} +1 -1
- package/dist/chat-controller-QLORQWJZ.js +2 -0
- package/dist/{chunk-JHPZXF77.js → chunk-3CJIMPQK.js} +2 -2
- package/dist/{chunk-SKRZN25J.js → chunk-3RZ63RBO.js} +1 -1
- package/dist/{chunk-YOFKDRY4.js → chunk-44IWSV6L.js} +1 -1
- package/dist/{chunk-7LWXIRI3.js → chunk-4BAMZSFU.js} +1 -1
- package/dist/{chunk-TW3K2DKB.js → chunk-4GLYNAK7.js} +1 -1
- package/dist/{chunk-7APDXIKI.js → chunk-4SJC64KQ.js} +9 -9
- package/dist/{chunk-5Z7GAIPP.js → chunk-4XSW6WZD.js} +2 -2
- package/dist/{chunk-6NWPK2MS.js → chunk-5WE4DHXL.js} +1 -1
- package/dist/chunk-5YHVK2EO.js +6 -0
- package/dist/{chunk-TLL7KFLY.js → chunk-67SSEGDO.js} +1 -1
- package/dist/{chunk-L4JIMNKW.js → chunk-6HYW5RFX.js} +1 -1
- package/dist/{chunk-A46NBRAP.js → chunk-6W6AIDLJ.js} +1 -1
- package/dist/{chunk-VYQMCLKG.js → chunk-77WMTCUQ.js} +1 -1
- package/dist/{chunk-SDRFTIRU.js → chunk-7E24OCGX.js} +1 -1
- package/dist/chunk-7YPK6EDR.js +4 -0
- package/dist/{chunk-RH4GCEFX.js → chunk-A2IQRVPR.js} +1 -1
- package/dist/{chunk-YVXC46DY.js → chunk-AIMINJVP.js} +1 -1
- package/dist/{chunk-C3OGWCII.js → chunk-AV6E6WLY.js} +2 -2
- package/dist/{chunk-5LTUYXMP.js → chunk-AYY7RYMK.js} +1 -1
- package/dist/chunk-B4LLKQTK.js +2 -0
- package/dist/{chunk-FYDBD7Q4.js → chunk-BCH3JCND.js} +1 -1
- package/dist/{chunk-SACSQY3Q.js → chunk-CH3VWCRZ.js} +1 -1
- package/dist/{chunk-WSZ7IENQ.js → chunk-CSGQIY7X.js} +3 -3
- package/dist/{chunk-QGBLC4ZJ.js → chunk-DFDDUMG5.js} +1 -1
- package/dist/{chunk-JTCW76YG.js → chunk-DGIPQINV.js} +1 -1
- package/dist/chunk-E5PWL3BG.js +7 -0
- package/dist/{chunk-6MTVGARW.js → chunk-EN7NW7DU.js} +1 -1
- package/dist/{chunk-QPT4ERGK.js → chunk-F7WKDMX7.js} +1 -1
- package/dist/{chunk-7Z64BL5D.js → chunk-FCHTL74E.js} +1 -1
- package/dist/{chunk-OSALXGD4.js → chunk-FMR2KPSK.js} +1 -1
- package/dist/{chunk-RGDQMKNJ.js → chunk-FRBYGSGJ.js} +1 -1
- package/dist/{chunk-KA7Q5IIC.js → chunk-GQ3NCBYR.js} +1 -1
- package/dist/{chunk-XZW3TBOV.js → chunk-HOOXUO3X.js} +1 -1
- package/dist/{chunk-7C6G4V43.js → chunk-IQODWB32.js} +1 -1
- package/dist/{chunk-MBXWXBDM.js → chunk-J2KSZUOO.js} +1 -1
- package/dist/{chunk-W54W762O.js → chunk-J3EMJ7US.js} +1 -1
- package/dist/{chunk-ZFFRHV5U.js → chunk-JSF5JYZC.js} +1 -1
- package/dist/{chunk-MSK7AC4E.js → chunk-K4VIM4RM.js} +2 -2
- package/dist/{chunk-2H3XNXL3.js → chunk-KCBS57IF.js} +1 -1
- package/dist/chunk-KHQHVSZ6.js +5 -0
- package/dist/{chunk-DHF3VO2R.js → chunk-LGVHW4ZA.js} +1 -1
- package/dist/{chunk-KK7DYHK6.js → chunk-MAO5BAQI.js} +1 -1
- package/dist/{chunk-6CGNLFSN.js → chunk-MTHCUBDF.js} +1 -1
- package/dist/{chunk-3KN2UW37.js → chunk-MV4UYTZT.js} +1 -1
- package/dist/{chunk-Z25FKS3Y.js → chunk-N4LMQR7C.js} +1 -1
- package/dist/{chunk-5F7PU5AJ.js → chunk-NR23HZU4.js} +1 -1
- package/dist/chunk-QBCS57EO.js +62 -0
- package/dist/{chunk-J4WS2SXT.js → chunk-QQUZF2DZ.js} +1 -1
- package/dist/{chunk-WV42KKEU.js → chunk-RCTM7NGT.js} +1 -1
- package/dist/{chunk-76I6NJBX.js → chunk-RODHDQU3.js} +1 -1
- package/dist/{chunk-AYDUHTPA.js → chunk-RQYS3KGU.js} +1 -1
- package/dist/{chunk-MJF3USZF.js → chunk-SBZWFULF.js} +2 -2
- package/dist/{chunk-6JTEWZ75.js → chunk-T7ZPMTGS.js} +1 -1
- package/dist/chunk-TDPWFYTJ.js +2 -0
- package/dist/{chunk-OESHJ4J2.js → chunk-UXPQRALY.js} +2 -2
- package/dist/chunk-V3UE6RJP.js +2 -0
- package/dist/chunk-VJFFMOUA.js +2 -0
- package/dist/{chunk-GWJ76BLF.js → chunk-VYMCE7UR.js} +2 -2
- package/dist/{chunk-YJIESLN6.js → chunk-WREVEATJ.js} +1 -1
- package/dist/{chunk-XY5KWIRF.js → chunk-WTXHOWUP.js} +1 -1
- package/dist/{chunk-LPBAQQ7E.js → chunk-X5P2T7MA.js} +1 -1
- package/dist/{chunk-6ZJ7ZFEX.js → chunk-XIXR63FI.js} +1 -1
- package/dist/{chunk-ECFOND7B.js → chunk-XLKRV2JH.js} +1 -1
- package/dist/{chunk-FEF75YKV.js → chunk-YHQFYZJ5.js} +1 -1
- package/dist/chunk-Z2JSEL3I.js +4 -0
- package/dist/{config-7WI6TBDV.js → config-5GOFF5F4.js} +1 -1
- package/dist/{cover-cmd-J2ZJUL6P.js → cover-cmd-SV3I23UM.js} +1 -1
- package/dist/{credentials-MX5ABDPF.js → credentials-GXDXVMXW.js} +1 -1
- package/dist/docx-convert-ZBVQO2LG.js +2 -0
- package/dist/{dossier-UVTGCL7T.js → dossier-KJSJPWOW.js} +1 -1
- package/dist/{evidence-TZYIOSPG.js → evidence-VDNZ3K23.js} +1 -1
- package/dist/{evolve-cmd-IDS5ZIUY.js → evolve-cmd-BLSVVW4I.js} +1 -1
- package/dist/{explain-VTRHEVUQ.js → explain-EBVIUS2X.js} +1 -1
- package/dist/{explain-cmd-NPKN63XL.js → explain-cmd-DBUTPZHA.js} +1 -1
- package/dist/{explain-cmd-R3WCNR2A.js → explain-cmd-NWIYH5MI.js} +1 -1
- package/dist/{extract-bind-CISTQFI3.js → extract-bind-3SWPBZX6.js} +3 -3
- package/dist/{extract-cmd-HG3DHHSL.js → extract-cmd-HEX7F4IS.js} +1 -1
- package/dist/{gaps-cmd-XLVUFSTY.js → gaps-cmd-CKCHH3HQ.js} +1 -1
- package/dist/{generate-headless-4VJMAHCU.js → generate-headless-LZ4HRSQ4.js} +2 -2
- package/dist/index.js +52 -52
- package/dist/ingest-FIIO67ZN.js +2 -0
- package/dist/ingest-cmd-KRPZVB7W.js +7 -0
- package/dist/{interactive-bind-IXFRXBBL.js → interactive-bind-PTAZVCE7.js} +3 -3
- package/dist/{lifecycle-cmd-VTFZ3TF2.js → lifecycle-cmd-32LG364Q.js} +1 -1
- package/dist/{list-cmd-KXL4WQII.js → list-cmd-UTZ2PQUK.js} +1 -1
- package/dist/{list-commands-BJYJ34HT.js → list-commands-WIVODSEL.js} +1 -1
- package/dist/{logical-ids-LMBNMENR.js → logical-ids-I7B3VJEH.js} +1 -1
- package/dist/login-flow-GX7CTVWN.js +2 -0
- package/dist/{maintenance-cmd-UJG4LPWD.js → maintenance-cmd-BZAGSYGI.js} +1 -1
- package/dist/{persist-recorded-session-QR7RVAXR.js → persist-recorded-session-J6Z2SCTT.js} +1 -1
- package/dist/pipeline-HT7FCEXA.js +2 -0
- package/dist/readmodel-S5RAQH3F.js +2 -0
- package/dist/{reconcile-cmd-E2MMQM7Z.js → reconcile-cmd-2VHBKFA5.js} +1 -1
- package/dist/{recording-banner-QAIKLV6E.js → recording-banner-IRFMIZSJ.js} +1 -1
- package/dist/{require-project-folder-OANMHOVE.js → require-project-folder-XSBJGIVF.js} +1 -1
- package/dist/{revert-FRXNIP5R.js → revert-RQJE56HF.js} +1 -1
- package/dist/{review-cmd-2FCGP55U.js → review-cmd-7LXGYHHQ.js} +1 -1
- package/dist/run-4LTYFTF2.js +2 -0
- package/dist/run-YGJZ2SXX.js +2 -0
- package/dist/{run-test-md-5E53A5DT.js → run-test-md-QCERS7FQ.js} +2 -2
- package/dist/{skill-installer-LGEIIQ4Q.js → skill-installer-WAVEVCSG.js} +1 -1
- package/dist/{spawner-6FHAXNOA.js → spawner-YNYB4Z7K.js} +1 -1
- package/dist/tcg-generate-D35EMRMQ.js +2 -0
- package/dist/{testmd-actions-2OFH5GRJ.js → testmd-actions-NB5Z6QJ3.js} +1 -1
- package/dist/token-refresh-OY3WLAKD.js +2 -0
- package/dist/{validate-basic-Z46MAH2G.js → validate-basic-IJKKRQRU.js} +1 -1
- package/dist/{version-check-64M5JQQ7.js → version-check-O5GYZYTP.js} +1 -1
- package/dist/{view-cmd-PG66UQK7.js → view-cmd-GQBFCPDL.js} +1 -1
- package/dist/{walk-session-7PM2RXEF.js → walk-session-OPAEV4WR.js} +1 -1
- package/package.json +6 -6
- package/dist/ChatSurface-PLXUGRBV.js +0 -8
- package/dist/SingleShotApp-Z2HGSZXG.js +0 -2
- package/dist/TestMdRunView-B4IZHRDT.js +0 -2
- package/dist/chat-controller-M4QYRH7Y.js +0 -2
- package/dist/chunk-26H3PDVN.js +0 -4
- package/dist/chunk-2KS2YRIS.js +0 -2
- package/dist/chunk-2OQLMW3F.js +0 -7
- package/dist/chunk-4OSW2WEN.js +0 -61
- package/dist/chunk-GLS46X7N.js +0 -5
- package/dist/chunk-JHHMXU76.js +0 -2
- package/dist/chunk-KFUZYEHX.js +0 -2
- package/dist/chunk-RLZA4VJT.js +0 -4
- package/dist/chunk-ZPENY2Q3.js +0 -4
- package/dist/docx-convert-IAX54REO.js +0 -2
- package/dist/ingest-UAIKHOB4.js +0 -2
- package/dist/ingest-cmd-7HJLRLMG.js +0 -4
- package/dist/login-flow-KW5T7WRJ.js +0 -2
- package/dist/pipeline-L6V24KGN.js +0 -2
- package/dist/readmodel-AGAPK2AI.js +0 -2
- package/dist/run-FYJZCWYS.js +0 -2
- package/dist/run-IOBBB7GN.js +0 -2
- package/dist/tcg-generate-CEDA6DZJ.js +0 -2
- package/dist/token-refresh-R75DGT4X.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as se}from"./chunk-JHPZXF77.js";import{a as X,c as z,d as ae}from"./chunk-5Z7GAIPP.js";import"./chunk-GRB66C5S.js";import"./chunk-JFAFKHDX.js";import"./chunk-3C5GMAM4.js";import{b as Q,c as ne,d as ie}from"./chunk-KFUZYEHX.js";import{a as U}from"./chunk-7C6G4V43.js";import"./chunk-RN4OSVTG.js";import"./chunk-DNNZ353O.js";import"./chunk-QM4S2APK.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import{a as V}from"./chunk-SDRFTIRU.js";import{b as oe}from"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import{e as re}from"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import{a as G}from"./chunk-YCCUBQY4.js";import{y as c}from"./chunk-2KS2YRIS.js";import{a as F}from"./chunk-HCBYKLMW.js";import{a as b,b as s,k as j}from"./chunk-C44QQJR4.js";import{a as we}from"./chunk-6YGTRKDT.js";import{e as B}from"./chunk-UR6MHSHU.js";var E=B(we(),1);function le(e,h,w){let{ref:A,reason:p,by:R}=w;if(!p||p.trim().length===0)return{record:null,errors:[{code:"REASON_REQUIRED",detail:"archiving a node needs a reason \u2014 it becomes the tombstone's provenance"}]};let v=h.resolve(A);if(!v)return{record:null,errors:[{code:"UNKNOWN_REF",detail:`no node '${A}' in the graph`}]};let o=h.tipOf(v.cid);if(h.superseded.has(o))return{record:null,errors:[{code:"ALREADY_ARCHIVED",detail:`${A} is already superseded at its tip (${o.slice(0,19)}\u2026)`}]};let i=re(e,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[{kind:"node",old:o,new:null,reason:p,by:R}],source_head_moves:{}},{expectPrev:h.latestHash});return oe(e),{record:i.record,errors:null}}function ce(e){let h=e.by??{kind:"human",id:process.env.USER??"operator"},w=e.mode==="interactive"?"override":e.mode,A={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},p={applied:0,committed:0,retired:0,skipped:0,deferred:0,failed:0},R=new Map;for(let o of e.planRows)if(o.held_ref&&e.held){let i=e.held.rows.find(n=>n.temp_ref===o.held_ref);if(!i)continue;let x={kind:i.kind,ref:i.temp_ref,title:i.title,why:i.why,origin:"content-change",...o.impact?{impact:o.impact}:{}};R.set(x.ref,{card:x,source:"held",heldRef:i.temp_ref})}else if(o.kind==="MODIFY"){let i={kind:"MODIFY",ref:o.ref,title:o.ref,why:`${o.reason}: ${o.provenance}`,origin:o.origin??"structural-stale",...o.impact?{impact:o.impact}:{}};R.set(i.ref,{card:i,source:"row",row:o})}else if(o.kind==="ADD"){let i={kind:"ADD",ref:o.ref,title:o.ref,why:o.reason,origin:o.origin??"content-change"};R.set(i.ref,{card:i,source:"row",row:o})}for(let o of e.archive){if(o.kind!=="ARCHIVE")continue;let i={kind:"ARCHIVE",ref:o.ref,title:o.ref,why:o.why,provenance:o.why,...o.impact?{impact:o.impact}:{}};R.set(i.ref,{card:i,source:"archive",row:o})}let v=o=>(p.failed++,{outcome:"failed",detail:o});return{cards:()=>[...R.values()].map(o=>o.card),async submit(o,i){let x=R.get(o);if(!x)return v(`no card ${o}`);if(i.v==="skip")return p.skipped++,e.signals({ref:o,verdict:"gap-dismissed"}),{outcome:"skipped"};if(i.v==="defer")return p.deferred++,{outcome:"deferred"};if(i.v==="archive"){if(x.source!=="archive")return v(`${o} is not an ARCHIVE card`);let l=V(e.contextDir),$=l.resolve(x.row.ref);if($&&l.superseded.has(l.tipOf($.cid)))return p.skipped++,{outcome:"skipped",detail:"already retired \u2014 nothing to do"};let D=le(e.contextDir,V(e.contextDir),{ref:x.row.ref,reason:`reconcile retire: ${x.row.why}`,by:h});return D.errors?v(D.errors.map(a=>`${a.code}: ${a.detail}`).join("; ")):(p.retired++,e.signals({ref:o,verdict:"gap-resolved-archive",reason:x.row.why}),{outcome:"retired"})}if(x.source==="archive")return v(`${o} takes archive/skip/defer, not approve`);if(x.source==="held"){let l=se(e.contextDir,e.held,x.heldRef,h,i.edits);if(!l.ok)return v(l.message);if(l.kind==="ADD"){let $=await e.runDesign(l.ref,{yes:!0,mode:w,...i.steering?{because:i.steering}:{}});return $!==0?(p.failed++,{outcome:"failed",landed:!0,detail:`committed ${l.ref}, but its design run exited ${$} \u2014 finish with kane-cli design tests --use-case ${l.ref}`}):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-create",...i.steering?{reason:i.steering}:{}}),{outcome:"applied",detail:l.ref})}if(i.steering){let $=V(e.contextDir),D=X($,l.ref);if(!D.ok)return p.committed++,{outcome:"committed",detail:`committed ${l.ref}, but steering could not resolve it (${D.message}) \u2014 steer via kane-cli maintain evolve ${l.ref}`};let a=await z(e.contextDir,D.target,{yes:!0,mode:w,because:i.steering},A,e.runDesign,"batch");if(a.outcome==="no-design"){let d=await e.runDesign(D.target.seamRef,{yes:!0,mode:w,because:i.steering});return d!==0?(p.failed++,{outcome:"failed",landed:!0,detail:`committed ${l.ref}, but its steered design run exited ${d} \u2014 finish with kane-cli design tests --use-case ${D.target.seamRef}`}):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-create",reason:i.steering}),{outcome:"applied",detail:l.ref})}return a.outcome==="failed"||a.outcome==="paused"?(p.failed++,{outcome:"failed",landed:!0,detail:`committed ${l.ref}, but the steering evolve ${a.outcome} (exit ${a.code}) \u2014 finish with kane-cli maintain evolve ${l.ref}`}):a.outcome==="declined"?(p.committed++,{outcome:"committed",detail:`committed ${l.ref} \u2014 the steering evolve was declined; re-run kane-cli maintain evolve ${l.ref}`}):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-evolve",reason:i.steering}),{outcome:"applied",detail:l.ref})}return p.committed++,e.signals({ref:o,verdict:"gap-resolved-evolve"}),{outcome:"committed",detail:l.ref}}let n=V(e.contextDir),g=X(n,x.row.ref);if(!g.ok)return v(g.message);if(x.card.kind==="ADD"){let l=await e.runDesign(g.target.seamRef,{yes:!0,mode:w});return l!==0?v(`design run exited ${l}`):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-create"}),{outcome:"applied"})}let y=await z(e.contextDir,g.target,{yes:!0,mode:w,...i.steering?{because:i.steering}:{}},A,e.runDesign,"batch");return y.outcome==="evolved"?(p.applied++,e.signals({ref:o,verdict:"gap-resolved-evolve",...i.steering?{reason:i.steering}:{}}),{outcome:"applied"}):y.outcome==="failed"||y.outcome==="paused"?v(`evolve ${y.outcome} (exit ${y.code})`):(p.skipped++,{outcome:"skipped",detail:y.outcome})},summary:()=>({...p})}}var m=B(F(),1);function L(e){return e.kind==="ARCHIVE"?[{v:"archive",label:"retire",detail:"tombstone it \u2014 the graph forgets forward"},{v:"skip",label:"skip",detail:"keep it \u2014 decided, never re-offered"},{v:"defer",label:"defer",detail:"not now \u2014 the plan re-offers it"}]:[{v:"approve",label:"approve",detail:e.kind==="ADD"?"commit + design it":"commit the updated version (old\u2192new redirect)"},{v:"skip",label:e.origin==="content-change"?"reject":"skip",detail:e.origin==="content-change"?"drop the staged proposal \u2014 nothing committed":"leave it as is"},{v:"defer",label:"defer",detail:"not now \u2014 the plan keeps it staged"}]}function Y(e){return e.kind==="ARCHIVE"?null:L(e).length}var ye={ADD:{color:c.green??"green"},MODIFY:{color:"yellow"},ARCHIVE:{color:c.red}},be=60,Re=100;function de({card:e,position:h,sel:w=0,focused:A=!1,freeText:p=null}){let{stdout:R}=j(),v=R?.columns??80,o=v<be,i=Math.min(v-1,Re),x=L(e),n=Y(e),g=ye[e.kind],y=T=>A&&w===T?(0,m.jsx)(s,{color:c.assuranceAccent,children:"\u276F"}):" ",l=e.impact,$=l&&l.stale_refs.length>0?`${e.kind==="ARCHIVE"?"retiring drops":"approving marks"} ${l.stale_refs.length} item(s) stale`+((l.direct_refs?.length??0)>0?` \u2014 ${l.direct_refs.length} directly touched: ${l.direct_refs.join(", ")}`:""):null,D=`? reconcile \u2014 item ${h.n} of ${h.of}`,a=n!==null?"\u2191\u2193 \xB7 \u23CE select \xB7 1-9 \xB7 type = adjust \xB7 esc \xB7 nothing to undo":"\u2191\u2193 \xB7 \u23CE select \xB7 1-9 \xB7 esc \xB7 nothing to undo",d=(0,m.jsxs)(b,{flexDirection:"column",children:[(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsxs)(s,{bold:!0,children:[(0,m.jsx)(s,{color:g.color,children:`[${e.kind}]`}),` ${U(e.title)}`]})}),(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsx)(s,{color:c.muted,children:e.why})}),$?(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsx)(s,{color:c.muted,children:`impact: ${$}`})}):null,e.kind==="ARCHIVE"&&e.provenance&&e.provenance!==e.why?(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsx)(s,{color:c.muted,children:e.provenance})}):null,(0,m.jsx)(s,{children:" "}),x.map((T,S)=>(0,m.jsxs)(s,{children:[y(S),` ${S+1}. ${T.label}`,(0,m.jsx)(s,{color:c.dim,children:` \u2014 ${T.detail}`})]},`o-${S}`)),n!==null?p?(0,m.jsxs)(b,{flexDirection:"column",children:[(0,m.jsxs)(b,{children:[(0,m.jsxs)(s,{children:[(0,m.jsx)(s,{color:c.assuranceAccent,children:"\u276F"})," ",(0,m.jsx)(s,{color:c.dim,children:"\u270E "})]}),(0,m.jsx)(G,{value:p.value,onChange:p.onChange,onSubmit:p.onSubmit,onCancel:p.onCancel,placeholder:"say what to adjust"})]}),(0,m.jsx)(s,{color:c.muted,children:" submits as: approve \xB7 your words steer the re-design"})]}):(0,m.jsxs)(s,{children:[y(n)," ",(0,m.jsx)(s,{color:c.dim,children:"\u270E approve with changes \u2014 say what to adjust"})]}):null]});if(o)return(0,m.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,m.jsx)(s,{bold:!0,color:c.assuranceAccent,children:D}),d,(0,m.jsx)(s,{color:c.muted,children:a})]});let W=Math.max(2,i-(3+D.length+1)),C=Math.max(2,i-(3+a.length+1));return(0,m.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,m.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,m.jsx)(s,{bold:!0,children:D}),` ${"\u2500".repeat(W)}`]}),(0,m.jsx)(s,{children:" "}),d,(0,m.jsx)(s,{children:" "}),(0,m.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,m.jsx)(s,{color:c.muted,children:a}),` ${"\u2500".repeat(C)}`]})]})}var _=B(F(),1);function K({mark:e,markColor:h,color:w,indent:A=2,reserve:p=0,children:R}){let{stdout:v}=j(),o=(v?.columns??80)-p,i=A+e.length+1;return(0,_.jsxs)(b,{children:[(0,_.jsx)(b,{width:i,flexShrink:0,children:(0,_.jsx)(s,{color:h,children:`${" ".repeat(A)}${e}`})}),(0,_.jsx)(b,{width:Math.max(20,o-i),children:(0,_.jsx)(s,{color:w,children:R})})]})}var u=B(F(),1);function ue(e){return e.landed?"committed":e.outcome}var $e={applied:{mark:"\u2714",color:"green"},committed:{mark:"\u2714",color:"green"},retired:{mark:"\u2714",color:"green"},skipped:{mark:"\xB7",color:"dim"},deferred:{mark:"\u2013",color:"dim"},failed:{mark:"\u2717",color:"red"}},q=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function Ce(e){return e.v==="archive"?"Retiring\u2026":e.v==="approve"&&e.steering?"Approving with your changes \u2014 committing, then re-designing\u2026":"Applying \u2014 committing\u2026"}function Te({controller:e,cards:h,note:w,markOutcome:A,routeChat:p,listEvolveTargets:R,barSubject:v,onFinish:o,onCtrlC:i,pauseRef:x}){let[n,g]=(0,E.useState)(h.length>0?{at:"card",idx:0,sel:0,editor:null}:{at:"done-panel",sel:0}),y=(0,E.useRef)(0),l=(0,E.useRef)(n);l.current=n;let $=(0,E.useRef)([]),[D,a]=(0,E.useState)(0),d=n.at==="busy"||n.at==="evolving";(0,E.useEffect)(()=>{if(!d)return;let t=setInterval(()=>a(r=>r+1),120);return()=>clearInterval(t)},[d]);let W=(0,E.useRef)(!1),C=()=>{w((0,u.jsx)(s,{color:c.dim,children:"walk paused \u2014 every verdict so far is committed; re-run the same command to continue"})),o(3)},T=()=>{if(W.current)return;W.current=!0;let t=l.current;if(t.at==="busy"||t.at==="evolving"){w((0,u.jsx)(s,{color:c.dim,children:"finishing the current item, then pausing\u2026"}));return}if(t.at==="done-panel"||t.at==="picker"||t.at==="why"||t.at==="view"){o(y.current);return}C()};x&&(x.current=T);let S=n.at==="card"||n.at==="busy"?h[n.idx]:null,O=()=>[{key:"finish",label:"finish"},...R?[{key:"evolve",label:"evolve another use-case\u2026"}]:[],...$.current.length>0?[{key:"view",label:"view what changed"}]:[]],I=()=>{let t=R?.()??[];if(t.length===0){w((0,u.jsx)(s,{color:c.dim,children:"nothing is stale \u2014 no evolve targets right now"})),g({at:"done-panel",sel:0});return}g({at:"picker",items:t,sel:0})},P=t=>{let r=t+1;if(r<h.length)g({at:"card",idx:r,sel:0,editor:null});else{let f=e.summary();w((0,u.jsx)(s,{color:c.dim,children:`reconcile walk: ${f.applied} applied, ${f.committed} committed, ${f.retired} retired, ${f.skipped} skipped, ${f.deferred} deferred`+(f.failed>0?`, ${f.failed} failed`:"")})),g({at:"done-panel",sel:0})}},N=(0,E.useRef)(!1),M=(t,r)=>{if(N.current)return;N.current=!0;let f=h[t];g({at:"busy",idx:t,label:Ce(r),startedAt:Date.now()}),e.submit(f.ref,r).catch(k=>({outcome:"failed",detail:k instanceof Error?k.message:String(k)})).then(k=>{let H=$e[k.outcome]??{mark:"\xB7",color:"dim"},xe=k.outcome!=="failed"&&k.outcome!=="skipped"&&k.outcome!=="deferred"&&f.impact&&f.impact.stale_refs.length>0?` \xB7 ${f.impact.stale_refs.length} item(s) now stale`:"",te=`${k.outcome} [${f.kind}] ${U(f.title)}${k.detail?` \u2014 ${U(k.detail)}`:""}${xe}`;if($.current.push({mark:H.mark,color:H.color,line:te}),w((0,u.jsx)(K,{mark:H.mark,markColor:H.color==="green"?c.green:H.color==="red"?c.red:c.dim,color:H.color==="dim"?c.dim:void 0,children:te})),k.outcome==="failed"&&(y.current=y.current===0?1:y.current),A(f.ref,ue(k)),N.current=!1,W.current){C();return}P(t)})},me=(t,r)=>{g({at:"evolving",title:t.title,startedAt:Date.now()}),p(`${t.key} ${r}`).catch(f=>`\u2717 evolve failed: ${f instanceof Error?f.message:String(f)}`).then(f=>{let k=f.startsWith("\u2713");if($.current.push({mark:k?"\u2714":"\u2717",color:k?"green":"red",line:f.replace(/^[✓✗]\s*/,"")}),w((0,u.jsx)(K,{mark:k?"\u2714":"\u2717",markColor:k?c.green:c.red,children:f.replace(/^[✓✗]\s*/,"")})),W.current){o(y.current);return}g({at:"done-panel",sel:0})})},pe=(0,E.useMemo)(()=>({isFocused:()=>{let t=l.current;return t.at==="card"&&t.editor===null||t.at==="done-panel"||t.at==="picker"||t.at==="view"},onMove:t=>{g(r=>{if(r.at==="card"){let f=h[r.idx],k=Y(f)??L(f).length-1;return{...r,sel:Math.max(0,Math.min(k,r.sel+t))}}return r.at==="done-panel"?{...r,sel:Math.max(0,Math.min(O().length-1,r.sel+t))}:r.at==="picker"?{...r,sel:Math.max(0,Math.min(r.items.length-1,r.sel+t))}:r})},onSelect:()=>{let t=l.current;if(t.at==="card"){let r=h[t.idx],f=Y(r);if(f!==null&&t.sel===f){g({...t,editor:""});return}let k=L(r)[t.sel];k&&M(t.idx,{v:k.v});return}if(t.at==="done-panel"){let r=O()[t.sel];r?.key==="finish"?o(y.current):r?.key==="evolve"?I():r?.key==="view"&&g({at:"view"});return}if(t.at==="picker"){let r=t.items[t.sel];r&&g({at:"why",item:r,text:""});return}},onDigit:t=>{let r=l.current;if(r.at==="card"){let f=L(h[r.idx])[t-1];f&&M(r.idx,{v:f.v});return}r.at==="done-panel"&&t-1<O().length&&g({...r,sel:t-1}),r.at==="picker"&&t-1<r.items.length&&g({...r,sel:t-1})},onType:t=>{g(r=>r.at!=="card"||Y(h[r.idx])===null?r:{...r,editor:(r.editor??"")+t})},isMulti:()=>!1,onSpace:()=>{},onBack:()=>{let t=l.current;(t.at==="picker"||t.at==="view")&&g({at:"done-panel",sel:0})}}),[h]);(0,E.useEffect)(()=>{n.at==="done"&&o(y.current)},[n.at]);let fe=n.at==="card"||n.at==="done-panel"||n.at==="picker"||n.at==="why"||n.at==="view",ge=n.at==="card"||n.at==="busy"?`${v?`${v} \xB7 `:""}item ${n.idx+1} of ${h.length}`:v,J=t=>Math.floor((Date.now()-t)/1e3),{stdout:he}=j(),Z=Math.min((he?.columns??80)-1,100),ee=`view \xB7 this run's changes \xB7 ${$.current.length}`,ve=Math.max(2,Z-(3+ee.length+1)),ke=Math.max(2,Z-12);return(0,u.jsxs)(b,{flexDirection:"column",children:[(0,u.jsx)(ie,{onToggleThinking:()=>{},onCtrlC:()=>{i(),T()},panel:pe}),n.at==="card"&&S?(0,u.jsx)(de,{card:S,position:{n:n.idx+1,of:h.length},sel:n.sel,focused:n.editor===null,freeText:n.editor!==null?{value:n.editor,onChange:t=>g(r=>r.at==="card"?{...r,editor:t}:r),onSubmit:t=>{let r=l.current;r.at==="card"&&(t.trim()?M(r.idx,{v:"approve",steering:t.trim()}):g({...r,editor:null}))},onCancel:()=>g(t=>t.at==="card"?{...t,editor:null}:t)}:null}):null,n.at==="busy"?(0,u.jsxs)(s,{color:c.assuranceAccent,children:[`${q[D%q.length]} ${n.label} `,(0,u.jsx)(s,{color:c.dim,children:`(${J(n.startedAt)}s)`})]}):null,n.at==="evolving"?(0,u.jsxs)(s,{color:c.assuranceAccent,children:[`${q[D%q.length]} Evolving ${n.title}\u2026 `,(0,u.jsx)(s,{color:c.dim,children:`(${J(n.startedAt)}s)`})]}):null,n.at==="done-panel"?(0,u.jsx)(Q,{headline:(()=>{let t=e.summary();return`reconcile done \u2014 ${t.applied+t.committed} applied \xB7 ${t.retired} retired \xB7 ${t.skipped} skipped \xB7 ${t.deferred} deferred${t.failed>0?` \xB7 ${t.failed} failed`:""}`})(),rows:O(),sel:n.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select"}):null,n.at==="picker"?(0,u.jsx)(Q,{ask:!0,headline:"evolve which use-case?",rows:n.items.map(t=>({key:t.key,label:t.title,detail:t.badge})),sel:n.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}):null,n.at==="why"?(0,u.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:c.assuranceAccent,paddingX:1,children:[(0,u.jsxs)(b,{children:[(0,u.jsxs)(s,{children:[(0,u.jsx)(s,{color:c.assuranceAccent,children:"\u25B8"})," ",(0,u.jsx)(s,{color:c.dim,children:"\u270E "})]}),(0,u.jsx)(G,{value:n.text,onChange:t=>g(r=>r.at==="why"?{...r,text:t}:r),onSubmit:t=>{let r=l.current;r.at==="why"&&(t.trim()?me(r.item,t.trim()):g({at:"picker",items:[r.item],sel:0}))},onCancel:()=>{l.current.at==="why"&&I()},placeholder:`what should change about ${n.item.title}?`})]}),(0,u.jsx)(s,{color:c.muted,children:" \u23CE submit \xB7 esc back"})]}):null,n.at==="view"?(0,u.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,u.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,u.jsx)(s,{bold:!0,children:ee}),` ${"\u2500".repeat(ve)}`]}),(0,u.jsx)(s,{children:" "}),$.current.map((t,r)=>(0,u.jsx)(K,{mark:t.mark,markColor:t.color==="green"?c.green:t.color==="red"?c.red:c.dim,color:t.color==="dim"?c.dim:void 0,indent:0,reserve:0,children:t.line},`vc-${r}`)),(0,u.jsx)(s,{children:" "}),(0,u.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,u.jsx)(s,{color:c.muted,children:"esc back"}),` ${"\u2500".repeat(ke)}`]})]}):null,(0,u.jsx)(ne,{verb:"maintain",subject:ge,state:fe?"idle":void 0,hints:"ctrl+c exit"})]})}async function tt(e){let h={current:null},w=a=>{h.current?.append(a)},A=null,p=async(a,d)=>{let[{runDesign:W},{resolveAgentAuthEnv:C},{runAgent:T},{preflightTurn:S}]=await Promise.all([import("./run-IOBBB7GN.js"),import("./spawner-6FHAXNOA.js"),import("./bridge-WMGH3O3B.js"),import("./turn-preflight-JGYT7LXP.js")]);A??=await C();let O=A;return W({useCase:a,force:!0,mode:d.mode??"override",...d.because?{because:d.because}:{},...d.changeDelta!==void 0?{changeDelta:d.changeDelta}:{},...d.priorDesign!==void 0?{priorDesign:d.priorDesign}:{}},{contextDir:e.dir,agent:T,preflightTurn:()=>S(O),ask:async()=>[],out:()=>{},progress:()=>{},isTTY:!1,auth:O})},R=e.runDesign??p,v=ce({contextDir:e.dir,held:e.held,archive:e.archive,planRows:e.rows,runDesign:R,mode:"interactive",signals:e.signals}),o=new Set(e.rows.filter(a=>a.applied!==void 0).map(a=>a.held_ref??a.ref)),i=v.cards().filter(a=>!o.has(a.ref)&&!(a.kind==="ARCHIVE"&&e.archiveState?.[a.ref]!==void 0)),x=a=>e.rows.findIndex(d=>(d.held_ref??d.ref)===a),n=(a,d)=>{try{if(i.find(T=>T.ref===a)?.kind==="ARCHIVE"){d==="retired"?e.markA?.(a,"retired"):d==="skipped"&&e.markA?.(a,"skipped");return}let C=x(a);if(C<0)return;d==="applied"||d==="committed"?e.mark?.(C,"approved"):d==="skipped"&&e.mark?.(C,"skipped")}catch{}},g=async a=>{let[{openGraph:d},{resolveParentUc:W,evolveOneUc:C}]=await Promise.all([import("./readmodel-AGAPK2AI.js"),import("./evolve-cmd-IDS5ZIUY.js")]),[T,...S]=a.split(/\s+/),O=d(e.dir),I=W(O,T);if(!I.ok)return`couldn't resolve '${T}' \u2014 start with a use-case id (uc-\u2026): ${I.message}`;if(S.length===0)return`say what to change: \`${T} <your words>\` \u2014 the words become the redesign's change delta`;let P=S.join(" "),N={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},M=await C(e.dir,I.target,{yes:!0,mode:"override",because:P},N,R,"batch");return M.outcome==="evolved"?(e.signals({ref:I.target.display,verdict:"gap-resolved-evolve",reason:P}),`\u2713 redesigned ${I.target.display} \u2014 "${P}"`):`\u2717 evolve ${M.outcome} for ${I.target.display} (exit ${M.code})`},y=e.listEvolveTargets??(()=>{let a=V(e.dir);return ae(a).targets.map(d=>({key:d.display,title:d.display,badge:"stale"}))});if(e.script){let a=0;for(let d of i){let W=await e.script(d),C=await v.submit(d.ref,W);C.outcome==="failed"&&a===0&&(a=1),n(d.ref,ue(C))}return a}let[{render:l},{ScrollbackProvider:$},{ScrollbackTap:D}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./scrollback-JLPJR25X.js"),import("./ScrollbackTap-Q3IOKNMS.js")]);return new Promise(a=>{let d=!1,W=P=>{d||(d=!0,(async()=>{process.removeListener("SIGINT",O),await h.current?.flush();try{I.unmount()}catch{}a(P)})())},C=0,T={current:null},S=()=>{if(C+=1,C>=2){process.removeListener("SIGINT",O);try{I.unmount()}catch{}a(130)}},O=()=>{S(),T.current?.()};process.on("SIGINT",O);let I=l((0,u.jsxs)($,{children:[(0,u.jsx)(D,{into:h}),(0,u.jsx)(Te,{controller:v,cards:i,note:w,markOutcome:n,routeChat:g,listEvolveTargets:y,barSubject:e.barSubject,onFinish:W,onCtrlC:S,pauseRef:T})]}),{exitOnCtrlC:!1})})}export{Te as WalkSessionSurface,ue as outcomeToMark,tt as runWalkSession};
|
|
2
|
+
import{a as se}from"./chunk-3CJIMPQK.js";import{a as X,c as z,d as ae}from"./chunk-4XSW6WZD.js";import"./chunk-GRB66C5S.js";import"./chunk-JFAFKHDX.js";import"./chunk-3C5GMAM4.js";import{b as Q,c as ne,d as ie}from"./chunk-VJFFMOUA.js";import{a as U}from"./chunk-IQODWB32.js";import"./chunk-RN4OSVTG.js";import"./chunk-DNNZ353O.js";import"./chunk-QM4S2APK.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import{a as V}from"./chunk-7E24OCGX.js";import{b as oe}from"./chunk-FRBYGSGJ.js";import"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import{e as re}from"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.js";import{a as G}from"./chunk-YCCUBQY4.js";import{y as c}from"./chunk-B4LLKQTK.js";import{a as F}from"./chunk-HCBYKLMW.js";import{a as b,b as s,k as j}from"./chunk-C44QQJR4.js";import{a as we}from"./chunk-6YGTRKDT.js";import{e as B}from"./chunk-UR6MHSHU.js";var E=B(we(),1);function le(e,h,w){let{ref:A,reason:p,by:R}=w;if(!p||p.trim().length===0)return{record:null,errors:[{code:"REASON_REQUIRED",detail:"archiving a node needs a reason \u2014 it becomes the tombstone's provenance"}]};let v=h.resolve(A);if(!v)return{record:null,errors:[{code:"UNKNOWN_REF",detail:`no node '${A}' in the graph`}]};let o=h.tipOf(v.cid);if(h.superseded.has(o))return{record:null,errors:[{code:"ALREADY_ARCHIVED",detail:`${A} is already superseded at its tip (${o.slice(0,19)}\u2026)`}]};let i=re(e,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[{kind:"node",old:o,new:null,reason:p,by:R}],source_head_moves:{}},{expectPrev:h.latestHash});return oe(e),{record:i.record,errors:null}}function ce(e){let h=e.by??{kind:"human",id:process.env.USER??"operator"},w=e.mode==="interactive"?"override":e.mode,A={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},p={applied:0,committed:0,retired:0,skipped:0,deferred:0,failed:0},R=new Map;for(let o of e.planRows)if(o.held_ref&&e.held){let i=e.held.rows.find(n=>n.temp_ref===o.held_ref);if(!i)continue;let x={kind:i.kind,ref:i.temp_ref,title:i.title,why:i.why,origin:"content-change",...o.impact?{impact:o.impact}:{}};R.set(x.ref,{card:x,source:"held",heldRef:i.temp_ref})}else if(o.kind==="MODIFY"){let i={kind:"MODIFY",ref:o.ref,title:o.ref,why:`${o.reason}: ${o.provenance}`,origin:o.origin??"structural-stale",...o.impact?{impact:o.impact}:{}};R.set(i.ref,{card:i,source:"row",row:o})}else if(o.kind==="ADD"){let i={kind:"ADD",ref:o.ref,title:o.ref,why:o.reason,origin:o.origin??"content-change"};R.set(i.ref,{card:i,source:"row",row:o})}for(let o of e.archive){if(o.kind!=="ARCHIVE")continue;let i={kind:"ARCHIVE",ref:o.ref,title:o.ref,why:o.why,provenance:o.why,...o.impact?{impact:o.impact}:{}};R.set(i.ref,{card:i,source:"archive",row:o})}let v=o=>(p.failed++,{outcome:"failed",detail:o});return{cards:()=>[...R.values()].map(o=>o.card),async submit(o,i){let x=R.get(o);if(!x)return v(`no card ${o}`);if(i.v==="skip")return p.skipped++,e.signals({ref:o,verdict:"gap-dismissed"}),{outcome:"skipped"};if(i.v==="defer")return p.deferred++,{outcome:"deferred"};if(i.v==="archive"){if(x.source!=="archive")return v(`${o} is not an ARCHIVE card`);let l=V(e.contextDir),$=l.resolve(x.row.ref);if($&&l.superseded.has(l.tipOf($.cid)))return p.skipped++,{outcome:"skipped",detail:"already retired \u2014 nothing to do"};let D=le(e.contextDir,V(e.contextDir),{ref:x.row.ref,reason:`reconcile retire: ${x.row.why}`,by:h});return D.errors?v(D.errors.map(a=>`${a.code}: ${a.detail}`).join("; ")):(p.retired++,e.signals({ref:o,verdict:"gap-resolved-archive",reason:x.row.why}),{outcome:"retired"})}if(x.source==="archive")return v(`${o} takes archive/skip/defer, not approve`);if(x.source==="held"){let l=se(e.contextDir,e.held,x.heldRef,h,i.edits);if(!l.ok)return v(l.message);if(l.kind==="ADD"){let $=await e.runDesign(l.ref,{yes:!0,mode:w,...i.steering?{because:i.steering}:{}});return $!==0?(p.failed++,{outcome:"failed",landed:!0,detail:`committed ${l.ref}, but its design run exited ${$} \u2014 finish with kane-cli design tests --use-case ${l.ref}`}):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-create",...i.steering?{reason:i.steering}:{}}),{outcome:"applied",detail:l.ref})}if(i.steering){let $=V(e.contextDir),D=X($,l.ref);if(!D.ok)return p.committed++,{outcome:"committed",detail:`committed ${l.ref}, but steering could not resolve it (${D.message}) \u2014 steer via kane-cli maintain evolve ${l.ref}`};let a=await z(e.contextDir,D.target,{yes:!0,mode:w,because:i.steering},A,e.runDesign,"batch");if(a.outcome==="no-design"){let d=await e.runDesign(D.target.seamRef,{yes:!0,mode:w,because:i.steering});return d!==0?(p.failed++,{outcome:"failed",landed:!0,detail:`committed ${l.ref}, but its steered design run exited ${d} \u2014 finish with kane-cli design tests --use-case ${D.target.seamRef}`}):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-create",reason:i.steering}),{outcome:"applied",detail:l.ref})}return a.outcome==="failed"||a.outcome==="paused"?(p.failed++,{outcome:"failed",landed:!0,detail:`committed ${l.ref}, but the steering evolve ${a.outcome} (exit ${a.code}) \u2014 finish with kane-cli maintain evolve ${l.ref}`}):a.outcome==="declined"?(p.committed++,{outcome:"committed",detail:`committed ${l.ref} \u2014 the steering evolve was declined; re-run kane-cli maintain evolve ${l.ref}`}):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-evolve",reason:i.steering}),{outcome:"applied",detail:l.ref})}return p.committed++,e.signals({ref:o,verdict:"gap-resolved-evolve"}),{outcome:"committed",detail:l.ref}}let n=V(e.contextDir),g=X(n,x.row.ref);if(!g.ok)return v(g.message);if(x.card.kind==="ADD"){let l=await e.runDesign(g.target.seamRef,{yes:!0,mode:w});return l!==0?v(`design run exited ${l}`):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-create"}),{outcome:"applied"})}let y=await z(e.contextDir,g.target,{yes:!0,mode:w,...i.steering?{because:i.steering}:{}},A,e.runDesign,"batch");return y.outcome==="evolved"?(p.applied++,e.signals({ref:o,verdict:"gap-resolved-evolve",...i.steering?{reason:i.steering}:{}}),{outcome:"applied"}):y.outcome==="failed"||y.outcome==="paused"?v(`evolve ${y.outcome} (exit ${y.code})`):(p.skipped++,{outcome:"skipped",detail:y.outcome})},summary:()=>({...p})}}var m=B(F(),1);function L(e){return e.kind==="ARCHIVE"?[{v:"archive",label:"retire",detail:"tombstone it \u2014 the graph forgets forward"},{v:"skip",label:"skip",detail:"keep it \u2014 decided, never re-offered"},{v:"defer",label:"defer",detail:"not now \u2014 the plan re-offers it"}]:[{v:"approve",label:"approve",detail:e.kind==="ADD"?"commit + design it":"commit the updated version (old\u2192new redirect)"},{v:"skip",label:e.origin==="content-change"?"reject":"skip",detail:e.origin==="content-change"?"drop the staged proposal \u2014 nothing committed":"leave it as is"},{v:"defer",label:"defer",detail:"not now \u2014 the plan keeps it staged"}]}function Y(e){return e.kind==="ARCHIVE"?null:L(e).length}var ye={ADD:{color:c.green??"green"},MODIFY:{color:"yellow"},ARCHIVE:{color:c.red}},be=60,Re=100;function de({card:e,position:h,sel:w=0,focused:A=!1,freeText:p=null}){let{stdout:R}=j(),v=R?.columns??80,o=v<be,i=Math.min(v-1,Re),x=L(e),n=Y(e),g=ye[e.kind],y=T=>A&&w===T?(0,m.jsx)(s,{color:c.assuranceAccent,children:"\u276F"}):" ",l=e.impact,$=l&&l.stale_refs.length>0?`${e.kind==="ARCHIVE"?"retiring drops":"approving marks"} ${l.stale_refs.length} item(s) stale`+((l.direct_refs?.length??0)>0?` \u2014 ${l.direct_refs.length} directly touched: ${l.direct_refs.join(", ")}`:""):null,D=`? reconcile \u2014 item ${h.n} of ${h.of}`,a=n!==null?"\u2191\u2193 \xB7 \u23CE select \xB7 1-9 \xB7 type = adjust \xB7 esc \xB7 nothing to undo":"\u2191\u2193 \xB7 \u23CE select \xB7 1-9 \xB7 esc \xB7 nothing to undo",d=(0,m.jsxs)(b,{flexDirection:"column",children:[(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsxs)(s,{bold:!0,children:[(0,m.jsx)(s,{color:g.color,children:`[${e.kind}]`}),` ${U(e.title)}`]})}),(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsx)(s,{color:c.muted,children:e.why})}),$?(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsx)(s,{color:c.muted,children:`impact: ${$}`})}):null,e.kind==="ARCHIVE"&&e.provenance&&e.provenance!==e.why?(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsx)(s,{color:c.muted,children:e.provenance})}):null,(0,m.jsx)(s,{children:" "}),x.map((T,S)=>(0,m.jsxs)(s,{children:[y(S),` ${S+1}. ${T.label}`,(0,m.jsx)(s,{color:c.dim,children:` \u2014 ${T.detail}`})]},`o-${S}`)),n!==null?p?(0,m.jsxs)(b,{flexDirection:"column",children:[(0,m.jsxs)(b,{children:[(0,m.jsxs)(s,{children:[(0,m.jsx)(s,{color:c.assuranceAccent,children:"\u276F"})," ",(0,m.jsx)(s,{color:c.dim,children:"\u270E "})]}),(0,m.jsx)(G,{value:p.value,onChange:p.onChange,onSubmit:p.onSubmit,onCancel:p.onCancel,placeholder:"say what to adjust"})]}),(0,m.jsx)(s,{color:c.muted,children:" submits as: approve \xB7 your words steer the re-design"})]}):(0,m.jsxs)(s,{children:[y(n)," ",(0,m.jsx)(s,{color:c.dim,children:"\u270E approve with changes \u2014 say what to adjust"})]}):null]});if(o)return(0,m.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,m.jsx)(s,{bold:!0,color:c.assuranceAccent,children:D}),d,(0,m.jsx)(s,{color:c.muted,children:a})]});let W=Math.max(2,i-(3+D.length+1)),C=Math.max(2,i-(3+a.length+1));return(0,m.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,m.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,m.jsx)(s,{bold:!0,children:D}),` ${"\u2500".repeat(W)}`]}),(0,m.jsx)(s,{children:" "}),d,(0,m.jsx)(s,{children:" "}),(0,m.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,m.jsx)(s,{color:c.muted,children:a}),` ${"\u2500".repeat(C)}`]})]})}var _=B(F(),1);function K({mark:e,markColor:h,color:w,indent:A=2,reserve:p=0,children:R}){let{stdout:v}=j(),o=(v?.columns??80)-p,i=A+e.length+1;return(0,_.jsxs)(b,{children:[(0,_.jsx)(b,{width:i,flexShrink:0,children:(0,_.jsx)(s,{color:h,children:`${" ".repeat(A)}${e}`})}),(0,_.jsx)(b,{width:Math.max(20,o-i),children:(0,_.jsx)(s,{color:w,children:R})})]})}var u=B(F(),1);function ue(e){return e.landed?"committed":e.outcome}var $e={applied:{mark:"\u2714",color:"green"},committed:{mark:"\u2714",color:"green"},retired:{mark:"\u2714",color:"green"},skipped:{mark:"\xB7",color:"dim"},deferred:{mark:"\u2013",color:"dim"},failed:{mark:"\u2717",color:"red"}},q=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function Ce(e){return e.v==="archive"?"Retiring\u2026":e.v==="approve"&&e.steering?"Approving with your changes \u2014 committing, then re-designing\u2026":"Applying \u2014 committing\u2026"}function Te({controller:e,cards:h,note:w,markOutcome:A,routeChat:p,listEvolveTargets:R,barSubject:v,onFinish:o,onCtrlC:i,pauseRef:x}){let[n,g]=(0,E.useState)(h.length>0?{at:"card",idx:0,sel:0,editor:null}:{at:"done-panel",sel:0}),y=(0,E.useRef)(0),l=(0,E.useRef)(n);l.current=n;let $=(0,E.useRef)([]),[D,a]=(0,E.useState)(0),d=n.at==="busy"||n.at==="evolving";(0,E.useEffect)(()=>{if(!d)return;let t=setInterval(()=>a(r=>r+1),120);return()=>clearInterval(t)},[d]);let W=(0,E.useRef)(!1),C=()=>{w((0,u.jsx)(s,{color:c.dim,children:"walk paused \u2014 every verdict so far is committed; re-run the same command to continue"})),o(3)},T=()=>{if(W.current)return;W.current=!0;let t=l.current;if(t.at==="busy"||t.at==="evolving"){w((0,u.jsx)(s,{color:c.dim,children:"finishing the current item, then pausing\u2026"}));return}if(t.at==="done-panel"||t.at==="picker"||t.at==="why"||t.at==="view"){o(y.current);return}C()};x&&(x.current=T);let S=n.at==="card"||n.at==="busy"?h[n.idx]:null,O=()=>[{key:"finish",label:"finish"},...R?[{key:"evolve",label:"evolve another use-case\u2026"}]:[],...$.current.length>0?[{key:"view",label:"view what changed"}]:[]],I=()=>{let t=R?.()??[];if(t.length===0){w((0,u.jsx)(s,{color:c.dim,children:"nothing is stale \u2014 no evolve targets right now"})),g({at:"done-panel",sel:0});return}g({at:"picker",items:t,sel:0})},P=t=>{let r=t+1;if(r<h.length)g({at:"card",idx:r,sel:0,editor:null});else{let f=e.summary();w((0,u.jsx)(s,{color:c.dim,children:`reconcile walk: ${f.applied} applied, ${f.committed} committed, ${f.retired} retired, ${f.skipped} skipped, ${f.deferred} deferred`+(f.failed>0?`, ${f.failed} failed`:"")})),g({at:"done-panel",sel:0})}},N=(0,E.useRef)(!1),M=(t,r)=>{if(N.current)return;N.current=!0;let f=h[t];g({at:"busy",idx:t,label:Ce(r),startedAt:Date.now()}),e.submit(f.ref,r).catch(k=>({outcome:"failed",detail:k instanceof Error?k.message:String(k)})).then(k=>{let H=$e[k.outcome]??{mark:"\xB7",color:"dim"},xe=k.outcome!=="failed"&&k.outcome!=="skipped"&&k.outcome!=="deferred"&&f.impact&&f.impact.stale_refs.length>0?` \xB7 ${f.impact.stale_refs.length} item(s) now stale`:"",te=`${k.outcome} [${f.kind}] ${U(f.title)}${k.detail?` \u2014 ${U(k.detail)}`:""}${xe}`;if($.current.push({mark:H.mark,color:H.color,line:te}),w((0,u.jsx)(K,{mark:H.mark,markColor:H.color==="green"?c.green:H.color==="red"?c.red:c.dim,color:H.color==="dim"?c.dim:void 0,children:te})),k.outcome==="failed"&&(y.current=y.current===0?1:y.current),A(f.ref,ue(k)),N.current=!1,W.current){C();return}P(t)})},me=(t,r)=>{g({at:"evolving",title:t.title,startedAt:Date.now()}),p(`${t.key} ${r}`).catch(f=>`\u2717 evolve failed: ${f instanceof Error?f.message:String(f)}`).then(f=>{let k=f.startsWith("\u2713");if($.current.push({mark:k?"\u2714":"\u2717",color:k?"green":"red",line:f.replace(/^[✓✗]\s*/,"")}),w((0,u.jsx)(K,{mark:k?"\u2714":"\u2717",markColor:k?c.green:c.red,children:f.replace(/^[✓✗]\s*/,"")})),W.current){o(y.current);return}g({at:"done-panel",sel:0})})},pe=(0,E.useMemo)(()=>({isFocused:()=>{let t=l.current;return t.at==="card"&&t.editor===null||t.at==="done-panel"||t.at==="picker"||t.at==="view"},onMove:t=>{g(r=>{if(r.at==="card"){let f=h[r.idx],k=Y(f)??L(f).length-1;return{...r,sel:Math.max(0,Math.min(k,r.sel+t))}}return r.at==="done-panel"?{...r,sel:Math.max(0,Math.min(O().length-1,r.sel+t))}:r.at==="picker"?{...r,sel:Math.max(0,Math.min(r.items.length-1,r.sel+t))}:r})},onSelect:()=>{let t=l.current;if(t.at==="card"){let r=h[t.idx],f=Y(r);if(f!==null&&t.sel===f){g({...t,editor:""});return}let k=L(r)[t.sel];k&&M(t.idx,{v:k.v});return}if(t.at==="done-panel"){let r=O()[t.sel];r?.key==="finish"?o(y.current):r?.key==="evolve"?I():r?.key==="view"&&g({at:"view"});return}if(t.at==="picker"){let r=t.items[t.sel];r&&g({at:"why",item:r,text:""});return}},onDigit:t=>{let r=l.current;if(r.at==="card"){let f=L(h[r.idx])[t-1];f&&M(r.idx,{v:f.v});return}r.at==="done-panel"&&t-1<O().length&&g({...r,sel:t-1}),r.at==="picker"&&t-1<r.items.length&&g({...r,sel:t-1})},onType:t=>{g(r=>r.at!=="card"||Y(h[r.idx])===null?r:{...r,editor:(r.editor??"")+t})},isMulti:()=>!1,onSpace:()=>{},onBack:()=>{let t=l.current;(t.at==="picker"||t.at==="view")&&g({at:"done-panel",sel:0})}}),[h]);(0,E.useEffect)(()=>{n.at==="done"&&o(y.current)},[n.at]);let fe=n.at==="card"||n.at==="done-panel"||n.at==="picker"||n.at==="why"||n.at==="view",ge=n.at==="card"||n.at==="busy"?`${v?`${v} \xB7 `:""}item ${n.idx+1} of ${h.length}`:v,J=t=>Math.floor((Date.now()-t)/1e3),{stdout:he}=j(),Z=Math.min((he?.columns??80)-1,100),ee=`view \xB7 this run's changes \xB7 ${$.current.length}`,ve=Math.max(2,Z-(3+ee.length+1)),ke=Math.max(2,Z-12);return(0,u.jsxs)(b,{flexDirection:"column",children:[(0,u.jsx)(ie,{onToggleThinking:()=>{},onCtrlC:()=>{i(),T()},panel:pe}),n.at==="card"&&S?(0,u.jsx)(de,{card:S,position:{n:n.idx+1,of:h.length},sel:n.sel,focused:n.editor===null,freeText:n.editor!==null?{value:n.editor,onChange:t=>g(r=>r.at==="card"?{...r,editor:t}:r),onSubmit:t=>{let r=l.current;r.at==="card"&&(t.trim()?M(r.idx,{v:"approve",steering:t.trim()}):g({...r,editor:null}))},onCancel:()=>g(t=>t.at==="card"?{...t,editor:null}:t)}:null}):null,n.at==="busy"?(0,u.jsxs)(s,{color:c.assuranceAccent,children:[`${q[D%q.length]} ${n.label} `,(0,u.jsx)(s,{color:c.dim,children:`(${J(n.startedAt)}s)`})]}):null,n.at==="evolving"?(0,u.jsxs)(s,{color:c.assuranceAccent,children:[`${q[D%q.length]} Evolving ${n.title}\u2026 `,(0,u.jsx)(s,{color:c.dim,children:`(${J(n.startedAt)}s)`})]}):null,n.at==="done-panel"?(0,u.jsx)(Q,{headline:(()=>{let t=e.summary();return`reconcile done \u2014 ${t.applied+t.committed} applied \xB7 ${t.retired} retired \xB7 ${t.skipped} skipped \xB7 ${t.deferred} deferred${t.failed>0?` \xB7 ${t.failed} failed`:""}`})(),rows:O(),sel:n.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select"}):null,n.at==="picker"?(0,u.jsx)(Q,{ask:!0,headline:"evolve which use-case?",rows:n.items.map(t=>({key:t.key,label:t.title,detail:t.badge})),sel:n.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}):null,n.at==="why"?(0,u.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:c.assuranceAccent,paddingX:1,children:[(0,u.jsxs)(b,{children:[(0,u.jsxs)(s,{children:[(0,u.jsx)(s,{color:c.assuranceAccent,children:"\u25B8"})," ",(0,u.jsx)(s,{color:c.dim,children:"\u270E "})]}),(0,u.jsx)(G,{value:n.text,onChange:t=>g(r=>r.at==="why"?{...r,text:t}:r),onSubmit:t=>{let r=l.current;r.at==="why"&&(t.trim()?me(r.item,t.trim()):g({at:"picker",items:[r.item],sel:0}))},onCancel:()=>{l.current.at==="why"&&I()},placeholder:`what should change about ${n.item.title}?`})]}),(0,u.jsx)(s,{color:c.muted,children:" \u23CE submit \xB7 esc back"})]}):null,n.at==="view"?(0,u.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,u.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,u.jsx)(s,{bold:!0,children:ee}),` ${"\u2500".repeat(ve)}`]}),(0,u.jsx)(s,{children:" "}),$.current.map((t,r)=>(0,u.jsx)(K,{mark:t.mark,markColor:t.color==="green"?c.green:t.color==="red"?c.red:c.dim,color:t.color==="dim"?c.dim:void 0,indent:0,reserve:0,children:t.line},`vc-${r}`)),(0,u.jsx)(s,{children:" "}),(0,u.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,u.jsx)(s,{color:c.muted,children:"esc back"}),` ${"\u2500".repeat(ke)}`]})]}):null,(0,u.jsx)(ne,{verb:"maintain",subject:ge,state:fe?"idle":void 0,hints:"ctrl+c exit"})]})}async function tt(e){let h={current:null},w=a=>{h.current?.append(a)},A=null,p=async(a,d)=>{let[{runDesign:W},{resolveAgentAuthEnv:C},{runAgent:T},{preflightTurn:S}]=await Promise.all([import("./run-4LTYFTF2.js"),import("./spawner-YNYB4Z7K.js"),import("./bridge-BTSWCJ3B.js"),import("./turn-preflight-JGYT7LXP.js")]);A??=await C();let O=A;return W({useCase:a,force:!0,mode:d.mode??"override",...d.because?{because:d.because}:{},...d.changeDelta!==void 0?{changeDelta:d.changeDelta}:{},...d.priorDesign!==void 0?{priorDesign:d.priorDesign}:{}},{contextDir:e.dir,agent:T,preflightTurn:()=>S(O),ask:async()=>[],out:()=>{},progress:()=>{},isTTY:!1,auth:O})},R=e.runDesign??p,v=ce({contextDir:e.dir,held:e.held,archive:e.archive,planRows:e.rows,runDesign:R,mode:"interactive",signals:e.signals}),o=new Set(e.rows.filter(a=>a.applied!==void 0).map(a=>a.held_ref??a.ref)),i=v.cards().filter(a=>!o.has(a.ref)&&!(a.kind==="ARCHIVE"&&e.archiveState?.[a.ref]!==void 0)),x=a=>e.rows.findIndex(d=>(d.held_ref??d.ref)===a),n=(a,d)=>{try{if(i.find(T=>T.ref===a)?.kind==="ARCHIVE"){d==="retired"?e.markA?.(a,"retired"):d==="skipped"&&e.markA?.(a,"skipped");return}let C=x(a);if(C<0)return;d==="applied"||d==="committed"?e.mark?.(C,"approved"):d==="skipped"&&e.mark?.(C,"skipped")}catch{}},g=async a=>{let[{openGraph:d},{resolveParentUc:W,evolveOneUc:C}]=await Promise.all([import("./readmodel-S5RAQH3F.js"),import("./evolve-cmd-BLSVVW4I.js")]),[T,...S]=a.split(/\s+/),O=d(e.dir),I=W(O,T);if(!I.ok)return`couldn't resolve '${T}' \u2014 start with a use-case id (uc-\u2026): ${I.message}`;if(S.length===0)return`say what to change: \`${T} <your words>\` \u2014 the words become the redesign's change delta`;let P=S.join(" "),N={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},M=await C(e.dir,I.target,{yes:!0,mode:"override",because:P},N,R,"batch");return M.outcome==="evolved"?(e.signals({ref:I.target.display,verdict:"gap-resolved-evolve",reason:P}),`\u2713 redesigned ${I.target.display} \u2014 "${P}"`):`\u2717 evolve ${M.outcome} for ${I.target.display} (exit ${M.code})`},y=e.listEvolveTargets??(()=>{let a=V(e.dir);return ae(a).targets.map(d=>({key:d.display,title:d.display,badge:"stale"}))});if(e.script){let a=0;for(let d of i){let W=await e.script(d),C=await v.submit(d.ref,W);C.outcome==="failed"&&a===0&&(a=1),n(d.ref,ue(C))}return a}let[{render:l},{ScrollbackProvider:$},{ScrollbackTap:D}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./scrollback-JLPJR25X.js"),import("./ScrollbackTap-Q3IOKNMS.js")]);return new Promise(a=>{let d=!1,W=P=>{d||(d=!0,(async()=>{process.removeListener("SIGINT",O),await h.current?.flush();try{I.unmount()}catch{}a(P)})())},C=0,T={current:null},S=()=>{if(C+=1,C>=2){process.removeListener("SIGINT",O);try{I.unmount()}catch{}a(130)}},O=()=>{S(),T.current?.()};process.on("SIGINT",O);let I=l((0,u.jsxs)($,{children:[(0,u.jsx)(D,{into:h}),(0,u.jsx)(Te,{controller:v,cards:i,note:w,markOutcome:n,routeChat:g,listEvolveTargets:y,barSubject:e.barSubject,onFinish:W,onCtrlC:S,pauseRef:T})]}),{exitOnCtrlC:!1})})}export{Te as WalkSessionSurface,ue as outcomeToMark,tt as runWalkSession};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testmuai/kane-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "KaneAI Terminal UI — browser automation testing agent",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
"ws": "^8.20.0"
|
|
35
35
|
},
|
|
36
36
|
"optionalDependencies": {
|
|
37
|
-
"@testmuai/kane-cli-darwin-arm64": "0.
|
|
38
|
-
"@testmuai/kane-cli-darwin-x64": "0.
|
|
39
|
-
"@testmuai/kane-cli-linux-x64": "0.
|
|
40
|
-
"@testmuai/kane-cli-linux-arm64": "0.
|
|
41
|
-
"@testmuai/kane-cli-win-x64": "0.
|
|
37
|
+
"@testmuai/kane-cli-darwin-arm64": "0.7.0",
|
|
38
|
+
"@testmuai/kane-cli-darwin-x64": "0.7.0",
|
|
39
|
+
"@testmuai/kane-cli-linux-x64": "0.7.0",
|
|
40
|
+
"@testmuai/kane-cli-linux-arm64": "0.7.0",
|
|
41
|
+
"@testmuai/kane-cli-win-x64": "0.7.0",
|
|
42
42
|
"@testmuai/kane-cli-node-darwin-arm64": "24.18.0",
|
|
43
43
|
"@testmuai/kane-cli-node-darwin-x64": "24.18.0",
|
|
44
44
|
"@testmuai/kane-cli-node-linux-x64": "24.18.0",
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as Rt,b as ce,c as Bt,d as Xe}from"./chunk-KFUZYEHX.js";import{a as Ct}from"./chunk-7C6G4V43.js";import{a as Ae}from"./chunk-26H3PDVN.js";import{b as It,c as St}from"./chunk-GG43HSU2.js";import"./chunk-OSALXGD4.js";import{a as wt,b as $t,c as vt}from"./chunk-TLL7KFLY.js";import{a as kt}from"./chunk-5Y2G4NC7.js";import"./chunk-NVGBE2DR.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import{a as Tt}from"./chunk-YCCUBQY4.js";import{a as bt}from"./chunk-6NWPK2MS.js";import{b as yt}from"./chunk-DFS4RMVP.js";import{y as r}from"./chunk-2KS2YRIS.js";import{a as j}from"./chunk-HCBYKLMW.js";import{a as I,b as n,k as Be}from"./chunk-C44QQJR4.js";import{a as kn}from"./chunk-6YGTRKDT.js";import{e as V}from"./chunk-UR6MHSHU.js";var b=V(kn(),1);var a=V(j(),1),bn=60,yn=100;function Ge(e,i){let s=e.options.length,c=s,d=e.multi_select?c++:null,g=e.allow_free_text?c++:null,u=i?c++:null;return{optionCount:s,doneIdx:d,freeIdx:g,batchIdx:u,maxSel:c-1}}var Tn="\xA0",wn={high:{text:`\u203C${Tn}high`,color:r.red},med:{text:"med",color:"yellow"},low:{text:"low",color:r.dim}};function $n(e){let i=(e.header??e.text.split(/\s+/).slice(0,3).join(" ")).trim();return i.length>16?`${i.slice(0,15)}\u2026`:i}function vn(e,i,s){let c=m=>e[m].length+6,d=c(i),g=i,u=i;for(;;){let m=u+1<e.length?c(u+1):1/0,h=g-1>=0?c(g-1):1/0;if(m===1/0&&h===1/0)break;if(m<=h){if(d+m>s)break;d+=m,u+=1}else{if(d+h>s)break;d+=h,g-=1}}return{lo:g,hi:u}}function At({batch:e,qView:i,sel:s=0,focused:c=!1,freeText:d=null,multiSelFor:g}){let{stdout:u}=Be(),m=u?.columns??80,h=m<bn,S=Math.min(m-1,yn),f=Math.max(0,Math.min(e.questions.length-1,i??(e.cursor<0?0:e.cursor))),p=e.questions[f],_=e.resolution[f],A=e.resolution.filter(F=>!F).length,w=e.questions.length-A,R=Ae(e),C=Ge(p,R!==""),v=g?g(f):[],E=wn[p.risk],x=F=>c&&s===F?(0,a.jsx)(n,{color:r.assuranceAccent,children:"\u276F"}):" ",W=`? the agent needs ${A===1?"one answer":`${A} answers`}`,L=e.questions.length>1?` \xB7 ${f+1} of ${e.questions.length} \xB7 ${w} answered`:"",P=(0,a.jsxs)(I,{flexDirection:"column",children:[(0,a.jsx)(I,{paddingLeft:2,children:(0,a.jsxs)(n,{bold:!0,children:[p.text,E?(0,a.jsx)(n,{color:E.color,bold:!1,children:` ${E.text}`}):null]})}),(0,a.jsx)(I,{paddingLeft:2,children:(0,a.jsx)(n,{color:r.dim,children:p.rationale})}),(0,a.jsx)(n,{children:" "}),p.options.map((F,O)=>{let H=c&&s===O;return(0,a.jsxs)(I,{flexDirection:"column",children:[(0,a.jsxs)(n,{children:[x(O)," ",p.multi_select?(0,a.jsx)(n,{color:v.includes(O)?r.green:r.dim,children:v.includes(O)?"[x] ":"[ ] "}):null,(0,a.jsx)(n,{color:H?r.assuranceAccent:void 0,children:`${O+1}. ${F.label}`}),O===p.recommended_index?(0,a.jsx)(n,{color:r.dim,children:" (recommended)"}):null,_?.selected_index===O?(0,a.jsx)(n,{color:r.dim,children:" (current)"}):null]}),F.detail?(0,a.jsx)(I,{paddingLeft:5,children:(0,a.jsx)(n,{color:r.dim,children:F.detail})}):null]},`o-${O}`)}),p.multi_select&&C.doneIdx!=null?(0,a.jsxs)(n,{children:[x(C.doneIdx)," ",(0,a.jsx)(n,{color:r.green,children:"\u2714"}),(0,a.jsx)(n,{color:c&&s===C.doneIdx?r.assuranceAccent:void 0,children:" done \u2014 confirm selection"})]}):null,p.allow_free_text?(0,a.jsx)(n,{children:" "}):null,p.allow_free_text?d?(0,a.jsxs)(I,{children:[(0,a.jsxs)(n,{children:[(0,a.jsx)(n,{color:r.assuranceAccent,children:"\u276F"})," ",(0,a.jsx)(n,{color:r.dim,children:"\u270E "})]}),(0,a.jsx)(Tt,{value:d.value,onChange:d.onChange,onSubmit:d.onSubmit,onCancel:d.onCancel,placeholder:"Tell me what to do"})]}):(0,a.jsxs)(n,{children:[C.freeIdx!=null?x(C.freeIdx):" "," ",(0,a.jsx)(n,{color:c&&C.freeIdx!=null&&s===C.freeIdx?r.assuranceAccent:r.dim,children:"\u270E Tell me what to do"})]}):null]}),de=R!==""?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n,{children:" "}),(0,a.jsxs)(n,{children:[c&&C.batchIdx!=null&&s===C.batchIdx?(0,a.jsx)(n,{color:r.assuranceAccent,children:"\u276F"}):" "," ",(0,a.jsx)(n,{color:r.assuranceAccent,children:"\xBB"}),(0,a.jsx)(n,{bold:!0,color:c&&C.batchIdx!=null&&s===C.batchIdx?r.assuranceAccent:void 0,children:" Go with recommendations"}),A>=5?(0,a.jsx)(n,{color:r.dim,children:` \u2014 resolves all ${A} open`}):null,(0,a.jsx)(n,{color:r.dim,children:" (tab)"})]})]}):null;if(h)return(0,a.jsxs)(I,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,a.jsx)(n,{color:r.assuranceAccent,bold:!0,children:W}),e.questions.length>1?(0,a.jsx)(n,{color:r.dim,children:L.replace(/^ · /,"")}):null,(0,a.jsx)(n,{children:" "}),P,de,(0,a.jsx)(I,{paddingLeft:2,children:(0,a.jsx)(n,{color:r.muted,children:"\u2191\u2193 \u23CE \xB7 \u2190 \u2192 questions \xB7 esc back"})})]});let Le=`\u2500\u2500 ${W}${L} `,Oe=Math.max(2,S-Le.length),me="\u2191\u2193 select \xB7 \u23CE confirm \xB7 \u2190 \u2192 questions \xB7 type = your words \xB7 esc back",ge=`\u2500\u2500 ${me} `,Z=Math.max(2,S-ge.length),K=e.questions.map(F=>$n(F)),D=e.questions.length>1?vn(K,f,S-8):null;return(0,a.jsxs)(I,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,a.jsxs)(n,{color:r.assuranceAccent,children:["\u2500\u2500 ",(0,a.jsx)(n,{bold:!0,children:W}),L?(0,a.jsx)(n,{color:r.dim,children:L}):null,` ${"\u2500".repeat(Oe)}`]}),D?(0,a.jsx)(I,{marginTop:1,children:(0,a.jsxs)(n,{children:[D.lo>0?(0,a.jsx)(n,{color:r.dim,children:"\u25C0 "}):" ",e.questions.slice(D.lo,D.hi+1).map((F,O)=>{let H=D.lo+O,Te=O>0?" ":"";return H===f?(0,a.jsxs)(n,{children:[Te,(0,a.jsx)(n,{backgroundColor:r.assuranceAccent,color:"#0d1117",bold:!0,children:` ${K[H]} `})]},F.id):(0,a.jsxs)(n,{children:[Te,e.resolution[H]?(0,a.jsxs)(n,{children:[(0,a.jsx)(n,{color:r.green,children:"\u2713 "}),(0,a.jsx)(n,{color:r.dim,children:K[H]})]}):(0,a.jsx)(n,{color:r.dim,children:`\u25CB ${K[H]}`})]},F.id)}),D.hi<e.questions.length-1?(0,a.jsx)(n,{color:r.dim,children:" \u25B6"}):null]})}):null,(0,a.jsx)(n,{children:" "}),P,de,(0,a.jsx)(n,{children:" "}),(0,a.jsxs)(n,{color:r.assuranceAccent,children:["\u2500\u2500 ",(0,a.jsx)(n,{color:r.muted,children:me}),` ${"\u2500".repeat(Z)}`]})]})}var M=V(j(),1),Dt={high:0,med:1,low:2},In={high:r.red,med:"yellow",low:r.dim};function Sn(e){return e.map((i,s)=>({r:i,i:s})).sort((i,s)=>(Dt[i.r.risk??"zz"]??3)-(Dt[s.r.risk??"zz"]??3)||i.i-s.i).map(({r:i})=>i)}var te=(e,i)=>e.length<=i?e:i<=1?"\u2026":`${e.slice(0,i-1)}\u2026`,De=(e,i)=>e+" ".repeat(Math.max(0,i-e.length));function Et({rows:e,width:i=120,badgeHeader:s="risk"}){if(e.length===0)return null;let c=Sn(e),d=v=>v.staged||!v.id?"(staged)":Ct(v.id),g=Math.max(2,...c.map(v=>d(v).length)),u=Math.max(s.length,...c.map(v=>(v.badge??"").length)),m=i>=96&&c.some(v=>v.summary),S=i-(m?13:10)-g-u,f=Math.max(...c.map(v=>Math.max(v.title.length,(v.marker??"").length)),5),p=Math.max(5,m?Math.min(f,Math.max(16,Math.floor(S*.5))):Math.min(f,S)),_=m?Math.max(7,S-p):0,A=(v,E,x,W)=>v+W.map(L=>`\u2500${"\u2500".repeat(L.length)}\u2500`).join(E)+x,w=(v,E,x,W)=>[De(te(v,g),g),De(te(E,p),p),De(te(x,u),u),...m?[De(te(W,_),_)]:[]],R=w("id","title",s,"summary"),C=[];C.push((0,M.jsx)(n,{color:r.dim,children:A("\u250C","\u252C","\u2510",R)},"t")),C.push((0,M.jsxs)(n,{children:[R.map((v,E)=>(0,M.jsxs)(n,{children:[(0,M.jsx)(n,{color:r.dim,children:E===0?"\u2502 ":" \u2502 "}),(0,M.jsx)(n,{bold:!0,children:v})]},E)),(0,M.jsx)(n,{color:r.dim,children:" \u2502"})]},"h")),C.push((0,M.jsx)(n,{color:r.dim,children:A("\u251C","\u253C","\u2524",R)},"m"));for(let[v,E]of c.entries()){let x=w(d(E),te(E.title,p),te(E.badge??"",u),te(E.summary??"",_)),W=E.badgeColor??In[E.badge??""]??r.dim;if(C.push((0,M.jsxs)(n,{children:[(0,M.jsx)(n,{color:r.dim,children:"\u2502 "}),(0,M.jsx)(n,{color:r.assuranceAccent,children:x[0]}),(0,M.jsx)(n,{color:r.dim,children:" \u2502 "}),x[1],(0,M.jsx)(n,{color:r.dim,children:" \u2502 "}),(0,M.jsx)(n,{color:W,children:x[2]}),m?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(n,{color:r.dim,children:" \u2502 "}),x[3]]}):null,(0,M.jsx)(n,{color:r.dim,children:" \u2502"})]},`r-${v}`)),E.marker){let L=w("",te(E.marker,p),"","");C.push((0,M.jsx)(n,{color:r.dim,children:`\u2502 ${L.join(" \u2502 ")} \u2502`},`mk-${v}`))}}return C.push((0,M.jsx)(n,{color:r.dim,children:A("\u2514","\u2534","\u2518",R)},"b")),(0,M.jsx)(M.Fragment,{children:C})}var Rn={"use-case":"use-cases",ac:"ACs",scenario:"scenarios",test:"tests",gap:"gaps"},Y=e=>Rn[e]??`${e}s`,Mt=e=>e==="ac"?"AC":e==="use-case"?"use-case":e,Je=e=>e.kind??"use-case",_t=e=>`${Je(e)}:${e.temp_ref}`;function Lt(e){let i=e,s=i.badge??e.risk??null,c=i.why??e.summary??e.description??null;return JSON.stringify([e.title,s,c,i.extra??null,e.depends_on_hint??null])}function Ot(e){return e.filter(i=>i.role==="agent"&&typeof i.turnIndex=="number"&&Array.isArray(i.items)&&i.items.length>0)}function re(e){let i=new Map,s=1;for(let g of Ot(e)){let u=new Set;for(let m of g.items){let h=_t(m);if(u.has(h))continue;u.add(h);let S=i.get(h);i.set(h,{num:S?.num??s++,ref:m.temp_ref,kind:Je(m),item:m,turnIndex:g.turnIndex,fingerprint:Lt(m)})}}let c=[...i.values()].sort((g,u)=>g.num-u.num),d=[];for(let g of c){let u=d.find(m=>m.kind===g.kind);u?u.count++:d.push({kind:g.kind,label:Y(g.kind),count:1})}return{entries:c,byRef:i,counts:d}}function qt(e,i){let c=Ot(e).find(w=>w.turnIndex===i);if(!c)return null;let d=e.filter(w=>w.role!=="agent"||typeof w.turnIndex!="number"||w.turnIndex<=i),g=re(d),u=re(e.filter(w=>w.role!=="agent"||typeof w.turnIndex!="number"||w.turnIndex<i)),m=[],h=new Map,S=new Map,f=new Map,p=new Set;for(let w of c.items){let R=_t(w);if(p.has(R))continue;p.add(R);let C=u.byRef.get(R),v=w.changed===!0,E=g.byRef.get(R).num,x=Je(w);if(C&&!v&&C.fingerprint===Lt(w)){h.set(x,(h.get(x)??0)+1);continue}let W=!!C||v,L=W?f:S;L.set(x,(L.get(x)??0)+1),m.push({item:w,num:E,updated:W})}let _=[...h.entries()].map(([w,R])=>({label:Y(w),count:R})),A=[...[...S.entries()].map(([w,R])=>`${R} new ${R===1?Mt(w):Y(w)}`),...[...f.entries()].map(([w,R])=>`${R} updated ${R===1?Mt(w):Y(w)}`)].join(" \xB7 ");return{fresh:m,unchanged:_,headerStats:A}}function Ye(e,i){let s=e.entries.filter(g=>g.turnIndex===i);if(s.length===0)return e;let c=new Map(s.map(g=>[g.ref,g])),d=[];for(let g of s){let u=d.find(m=>m.kind===g.kind);u?u.count+=1:d.push({kind:g.kind,label:Y(g.kind),count:1})}return{entries:s,byRef:c,counts:d}}var k=V(j(),1);function Cn(e){let i=e.form==="assumed"?" (flagged)":e.form==="deferred"?"":" (you)",s=e.note?` \u2014 ${e.note}`:"";return e.form==="deferred"?`\u21B3 deferred q${e.qNum} ${e.stub}${s}`:e.form==="changed"?`\u21B3 changed q${e.qNum} ${e.stub}: ${e.prev??"?"} \u2192 ${e.choice??"?"}${i}${s}`:`\u21B3 ${e.form} q${e.qNum} ${e.stub}: ${e.choice??"?"}${i}${s}`}var Bn=Math.min(process.stdout?.columns??100,120)-2;function Pt({block:e,annotations:i}){switch(e.kind){case"banner":return(0,k.jsx)(I,{marginTop:1,children:(0,k.jsx)(n,{color:r.dim,children:` \u2500\u2500 ${e.text} \u2500\u2500`})});case"user":return(0,k.jsxs)(I,{marginTop:1,children:[(0,k.jsx)(n,{color:r.orange,children:"\u276F "}),(0,k.jsx)(n,{children:e.text})]});case"note":return(0,k.jsx)(n,{color:r.dim,children:` ${e.text}`});case"agent":return(0,k.jsx)(I,{marginTop:1,children:(0,k.jsx)($t,{text:e.text,accent:r.assuranceAccent})});case"thinking":return(0,k.jsx)(I,{marginTop:1,children:(0,k.jsx)(n,{color:r.dim,children:` thought for ${(e.tookMs/1e3).toFixed(1)}s`})});case"tool":return(0,k.jsx)(n,{color:r.dim,children:` ${It({name:e.name,status:e.status==="ok"?"done":e.status,detail:e.detail})}`});case"usage":return(0,k.jsx)(n,{color:r.dim,children:` \xB7 ${e.credits.toFixed(1)} credits \u2014 total ${e.total.toFixed(1)}`});case"turn":{let s=i??null,c=s?s.fresh:e.items.map((f,p)=>({item:f,num:p+1,updated:!1})),d={usecase:"risk","use-case":"risk",ac:"check",scenario:"kind",test:"check",gap:"severity",stylenote:"kind"},g=f=>f.kind??"use-case",u=new Map;for(let f of c){let p=f.item,_=g(f.item),A=p.risk==="high"||p.risk==="med"||p.risk==="low"?p.risk:void 0,w={id:p.logical_id??"",staged:!p.logical_id,title:p.title,badge:p.badge??p.risk??"",summary:p.why??p.summary??p.description??"",...A?{risk:A}:{},...f.updated?{marker:"\u21B3 changed"}:{}},R=u.get(_)??[];R.push(w),u.set(_,R)}let m=c.some(f=>!!f.item.kind),h=(s?.unchanged??[]).reduce((f,p)=>f+p.count,0),S=s?.headerStats?` \u2014 ${s.headerStats}${h>0?` (${h} unchanged)`:""}`:"";return(0,k.jsxs)(I,{flexDirection:"column",marginLeft:2,children:[(0,k.jsxs)(n,{bold:!0,children:[m?"design":e.heading,S?(0,k.jsx)(n,{bold:!1,color:r.dim,children:S}):null]}),[...u.entries()].map(([f,p])=>(0,k.jsxs)(I,{flexDirection:"column",children:[u.size>1?(0,k.jsx)(n,{color:r.dim,children:`${Y(f)} \xB7 ${p.length}`}):null,(0,k.jsx)(Et,{rows:p,width:Bn,badgeHeader:d[f]??"info"})]},f)),s&&s.unchanged.length>0&&(0,k.jsx)(n,{color:r.dim,children:` \u22EE unchanged: ${s.unchanged.map(f=>`${f.count} ${f.label}`).join(" \xB7 ")}`})]})}case"answer":return(0,k.jsx)(n,{color:r.dim,children:Cn(e.receipt)});case"continued":return(0,k.jsx)(n,{color:r.dim,children:"\u21B3 continued"});case"commit":return(0,k.jsxs)(I,{flexDirection:"column",children:[(0,k.jsx)(n,{color:e.ok?r.green:r.red,children:` ${e.ok?"\u2714":"\u2717"} ${e.line}`}),(e.warnings??[]).map((s,c)=>(0,k.jsx)(n,{color:r.dim,children:` \u26A0 ${s}`},`w-${c}`))]});case"error":return(0,k.jsxs)(bt,{variant:"error",paddingX:1,children:[(0,k.jsx)(n,{color:r.red,children:e.title}),e.detail.map((s,c)=>(0,k.jsx)(n,{color:r.dim,children:s},`d-${c}`))]});case"interrupted":return(0,k.jsxs)(I,{flexDirection:"column",children:[(0,k.jsx)(n,{color:r.red,children:"interrupted \u2014 session not saved"}),e.detail?(0,k.jsx)(n,{color:r.dim,children:e.detail}):null]});case"pause":return(0,k.jsxs)(I,{flexDirection:"column",children:[(0,k.jsx)(n,{children:`paused: session ${e.sid} saved`}),e.expires_at?(0,k.jsx)(n,{color:r.dim,children:`expires: ${e.expires_at}`}):null,(0,k.jsx)(n,{children:`resume: ${e.resume}`}),e.messageForm?(0,k.jsx)(n,{children:`or say something on the way in: ${e.messageForm}`}):null]});case"summary":return(0,k.jsxs)(I,{flexDirection:"column",children:[(0,k.jsx)(n,{bold:!0,children:"session summary"}),e.lines.map((s,c)=>(0,k.jsx)(n,{children:` ${s}`},`s-${c}`))]})}}var ue=V(j(),1);function Ft({item:e}){return(0,ue.jsxs)(I,{flexDirection:"column",marginLeft:2,children:[(e.cite??[]).map((i,s)=>(0,ue.jsx)(n,{dimColor:!0,children:`cite ${i.anchor??"conv"} \u2014 "${i.quote??""}"`},`cite-${s}`)),(e.depends_on_hint??[]).length>0&&(0,ue.jsx)(n,{dimColor:!0,children:`depends on: ${(e.depends_on_hint??[]).join(", ")}`}),Object.entries(e.extra??{}).map(([i,s])=>(0,ue.jsx)(n,{dimColor:!0,children:`${i}: ${s}`},`extra-${i}`))]})}var $=V(j(),1),Ze=(e,i)=>Math.max(0,Math.min(i,e));function Me(e,i,s){switch(i.type){case"move":return e.level==="detail"?{...e,scroll:Math.max(0,(e.scroll??0)+i.delta)}:{...e,cursor:Ze(e.cursor+i.delta,Math.max(0,s-1))};case"enter":return e.level==="list"?{...e,level:"detail",scroll:0}:e;case"back":return e.level==="detail"?{...e,level:"list",scroll:0}:null}}var Nt={"use-case":"use-cases",ac:"acs",scenario:"scenarios",test:"tests",gap:"gaps"};function Ut(e,i){if(e.level==="detail")return{level:"detail",cursor:Ze(e.num-1,Math.max(0,i.entries.length-1))};if(e.section){let s=i.entries.findIndex(c=>Nt[c.kind]===e.section);if(s>=0)return{level:"list",cursor:s}}return{level:"list",cursor:0}}function An(e){let i=[];for(let s of e.entries){let c=i.find(d=>d.kind===s.kind);c?c.entries.push(s):i.push({kind:s.kind,entries:[s]})}return i}var Wt=3;function Dn({items:e,cursor:i,verb:s,more:c}){let d=`view \xB7 ${s} so far \xB7 ${e.counts.map(u=>`${u.count} ${u.count===1?u.label.replace(/s$/,""):u.label}`).join(" \xB7 ")}`,g=e.entries[i];return(0,$.jsxs)(I,{flexDirection:"column",borderStyle:"round",borderColor:r.dim,paddingX:1,children:[(0,$.jsx)(n,{bold:!0,children:d}),An(e).map(({kind:u,entries:m})=>{let h=g?.kind===u,S=h?m.findIndex(A=>A.ref===g.ref):-1,f=h?Ze(S-1,Math.max(0,m.length-Wt)):0,p=m.slice(f,f+(h?Wt:1)),_=m.length-p.length;return(0,$.jsxs)(I,{flexDirection:"column",children:[(0,$.jsx)(n,{color:r.dim,children:`${Nt[u]??Y(u)} \xB7 ${m.length}`}),p.map(A=>{let w=h&&A.ref===g.ref,R=A.item.badge;return(0,$.jsxs)(n,{children:[(0,$.jsx)(n,{color:r.assuranceAccent,children:w?"\u203A ":" "}),(0,$.jsx)(n,{children:`${A.num} \xB7 ${A.item.title}`}),R?(0,$.jsx)(n,{color:r.dim,children:` \xB7 ${R}`}):null]},`${A.kind}:${A.ref}`)}),_>0&&(0,$.jsx)(n,{color:r.dim,children:` \u22EE ${_} more`})]},u)}),c?(0,$.jsxs)(n,{children:[(0,$.jsx)(n,{color:r.assuranceAccent,children:i===e.entries.length?"\u203A ":" "}),(0,$.jsx)(n,{color:r.dim,children:`\u22EF show all \u2014 ${c.hidden} more from earlier turns`})]}):null,(0,$.jsx)(n,{color:r.dim,children:"\u2191\u2193 move \xB7 \u21B5 detail \xB7 esc back"})]})}var Ee=14;function En({items:e,cursor:i,explain:s,grandTotal:c,dossier:d,scroll:g=0}){let u=e.entries[i];if(!u)return(0,$.jsx)(n,{color:r.dim,children:"nothing to show"});if(d){let h=Math.max(0,Math.min(g,Math.max(0,d.lines.length-Ee))),S=d.lines.slice(h,h+Ee);return(0,$.jsxs)(I,{flexDirection:"column",borderStyle:"round",borderColor:r.dim,paddingX:1,children:[(0,$.jsxs)(n,{bold:!0,children:[`view \xB7 ${d.id}`,d.id.toLowerCase()!==d.rawId?(0,$.jsx)(n,{bold:!1,color:r.dim,children:` \xB7 ${d.rawId}`}):null]}),(0,$.jsx)(n,{bold:!0,children:d.title}),h>0?(0,$.jsx)(n,{color:r.muted,children:`\u22EE ${h} above`}):null,S.map((f,p)=>(0,$.jsx)(n,{color:f.dim?r.dim:void 0,children:f.text},`dl-${p}`)),d.lines.length>h+Ee?(0,$.jsx)(n,{color:r.muted,children:`\u22EE ${d.lines.length-h-Ee} more`}):null,(0,$.jsx)(n,{color:r.dim,children:"\u2191\u2193 scroll \xB7 esc back"})]})}let m=u.item;return(0,$.jsxs)(I,{flexDirection:"column",borderStyle:"round",borderColor:r.dim,paddingX:1,children:[(0,$.jsx)(n,{bold:!0,children:`view \xB7 ${u.kind} ${u.num} of ${c??e.entries.length}`}),(0,$.jsx)(n,{children:u.item.title}),m.badge?(0,$.jsx)(n,{color:r.dim,children:`kind: ${m.badge}`}):null,m.why?(0,$.jsx)(n,{color:r.dim,children:m.why}):null,(0,$.jsx)(Ft,{item:u.item}),s?.map((h,S)=>(0,$.jsx)(n,{color:r.dim,children:h},`ex-${S}`)),(0,$.jsx)(n,{color:r.dim,children:"view-only \u2014 approvals happen in chat"}),(0,$.jsx)(n,{color:r.dim,children:"\u2191\u2193 prev/next \xB7 esc back to list"})]})}function Vt({items:e,state:i,verb:s,more:c,explain:d,grandTotal:g,dossier:u=null}){return i.level==="list"?(0,$.jsx)(Dn,{items:e,cursor:i.cursor,verb:s,more:c}):(0,$.jsx)(En,{items:e,cursor:i.cursor,explain:d,grandTotal:g,dossier:u,scroll:i.scroll??0})}var Mn={"use-cases":"use-cases",usecases:"use-cases","use-case":"use-cases",acs:"acs",ac:"acs",scenarios:"scenarios",scenario:"scenarios",tests:"tests",test:"tests",gaps:"gaps",gap:"gaps"};function jt(e){let i=(e??"").trim().toLowerCase();if(!i)return{level:"list"};if(/^\d+$/.test(i)){let c=parseInt(i,10);return c>=1?{level:"detail",num:c}:{error:"items are numbered from 1 \u2014 /view 1"}}let s=Mn[i];return s?{level:"list",section:s}:{error:"try /view, /view <number>, or /view acs|scenarios|tests"}}var B=V(j(),1),_n=6,Kt=12;function Ln(e,i,s){let c=Math.max(20,i),d=[];for(let u of e.split(`
|
|
3
|
-
`)){if(u.length<=c){d.push(u);continue}let m="";for(let h of u.split(" "))m&&m.length+1+h.length>c?(d.push(m),m=h):m=m?`${m} ${h}`:h;d.push(m)}let g=Math.max(0,d.length-s);return{body:d.slice(-s).join(`
|
|
4
|
-
`),hidden:g}}var _e=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function Qt(e){let i={key:"redesign",label:"re-design from scratch",detail:"replaces the current design"},s={key:"keep",label:"keep the existing design",detail:"back to the list"};return e.designed==="stale"?[{...i,detail:"the use-case changed since it was designed"},s]:[s,i]}function Ir({controller:e,verb:i="extract",onCtrlC:s,chain:c=null,inspect:d=null}){let[,g]=(0,b.useState)(0),[u,m]=(0,b.useState)(!1),[h,S]=(0,b.useState)(null),[f,p]=(0,b.useState)(null),_=(0,b.useRef)(null),[A,w]=(0,b.useState)(null),R=(0,b.useRef)(null),C=t=>{R.current=t,w(t)},v=t=>{_.current=t,p(t),t===null&&C(null)},E=(0,b.useRef)([]),[x,W]=(0,b.useState)(null),L=(0,b.useRef)(null),P=t=>{L.current=t,W(t)},de=yt(),{stdout:Le}=Be(),Oe=Le?.columns??80,me=(0,b.useRef)(0),ge=(0,b.useRef)(0);(0,b.useEffect)(()=>{let t=()=>{let o=e.state.ledger;for(let y=me.current;y<o.length;y++){let T=o[y],q=T.kind==="turn"?qt(e.state.turns,T.turnIndex):void 0;de.append((0,B.jsx)(Pt,{block:T,annotations:q},`lg-${y}`))}me.current=o.length};t();let l=e.subscribe(()=>{t();let o=e.state;_.current&&(o.pending||o.status==="pausing")&&(v(null),o.pending&&S("questions arrived \u2014 back to chat")),g(y=>y+1)});return g(o=>o+1),l},[e,de]);let{thinking:Z,status:K,pending:D,confirm:F,ledger:O,activeTurn:H,stream:Te,notice:we}=e.state,et=(Te?.text??"").trimEnd(),tt=et.length>0,Ht=u&&(Z.liveThinking.length>0||Z.thinkingLog.length>0),zt=Ln(Z.liveThinking||Z.thinkingLog.map(t=>t.text).join(`
|
|
5
|
-
`),Oe-6,Kt),nt=tt?et.split(`
|
|
6
|
-
`).slice(-_n):[];H&&(ge.current=H.turnIndex);let Xt=D?D.resolution.filter(t=>!t).length:0,rt;for(let t=O.length-1;t>=0;t--){if(E.current.some(o=>o.end!=null&&t>=o.start&&t<o.end))continue;let l=O[t];if(l.kind==="banner"&&!l.text.startsWith("kane")){rt=l.text;break}}let fe=Z.activity[Z.activity.length-1],qe=fe?fe.status==="decision"?fe.label:St({name:fe.name,status:fe.status}):void 0,it=K==="streaming"||K==="working",[st,Gt]=(0,b.useState)(0);kt(()=>Gt(t=>t+1),it||x?.kind==="running"?120:null);let Jt=e.state.busySince?Math.floor((Date.now()-e.state.busySince)/1e3):0,Yt=tt?"Writing\u2026":qe?`${qe.charAt(0).toUpperCase()}${qe.slice(1)}\u2026`:e.state.workingLabel??(i==="design"?"Designing\u2026":"Thinking\u2026"),Zt=e.state.turns.some(t=>t.role==="agent"),[en,tn]=(0,b.useState)(0),[nn,rn]=(0,b.useState)(!1),[ot,sn]=(0,b.useState)(null),pe=(0,b.useRef)(0),lt=(0,b.useRef)(!1),at=(0,b.useRef)(null),he=t=>{pe.current=t,tn(t)},ct=t=>{lt.current=t,rn(t)},ie=t=>{at.current=t,sn(t)},[Pe,on]=(0,b.useState)(0),Q=(0,b.useRef)(0),xe=t=>{Q.current=t,on(t)},ut=D?D.questions[0]?.id??"b":null;(0,b.useEffect)(()=>{D&&xe(D.cursor<0?0:D.cursor)},[ut,D?.cursor]);let Fe=()=>{let t=X.current;if(!t)return;let l=t.questions.length;for(let o=1;o<=l;o++){let y=(Q.current+o)%l;if(!t.resolution[y]){xe(y);return}}},dt=D?D.questions[Math.max(0,Math.min(D.questions.length-1,Pe))]:void 0,z=(0,b.useRef)(dt);z.current=dt;let X=(0,b.useRef)(D);X.current=D;let ln=D?`${ut}:${Pe}`:null;(0,b.useEffect)(()=>{if(ie(null),z.current){ct(!0);let t=X.current?.resolution[Q.current]?.selected_index;he(t??z.current.recommended_index??0)}else ct(!1)},[ln]);let $e=t=>{let l=X.current;return Ge(t,l?Ae(l)!=="":!1)},an={isFocused:()=>lt.current&&z.current!=null&&at.current==null||L.current!=null&&L.current.kind!=="running"||G.current&&ht.current==null,onMove:t=>{let l=z.current;if(l){he(Math.max(0,Math.min($e(l).maxSel,pe.current+t)));return}let o=L.current;if(o?.kind==="picker"){P({...o,sel:Math.max(0,Math.min(o.items.length-1,o.sel+t))});return}if(o?.kind==="ask"||o?.kind==="confirm"||o?.kind==="failed"){let y=(o.kind==="ask"?Se.current.length:o.kind==="failed"?Re.current.length:2)-1;P({...o,sel:Math.max(0,Math.min(y,o.sel+t))});return}o&&!G.current||G.current&&le(Math.max(0,Math.min(ye.current.length-1,He.current+t)))},onSelect:()=>{let t=z.current,l=X.current;if(!t||!l){let T=L.current;if(T?.kind==="picker"){let N=T.items[T.sel];N&&(N.designed?P({kind:"confirm",item:N,sel:0}):Ke(N,!1));return}if(T?.kind==="confirm"){Qt(T.item)[T.sel]?.key==="redesign"?Ke(T.item,!0):je();return}if(T?.kind==="ask"){let N=Se.current[T.sel]?.key;N==="another"?je():N==="view"?ze(""):P(null);return}if(T?.kind==="failed"){let N=Re.current[T.sel]?.key;N==="retry"?Ke(T.item,T.force):N==="view"?ze(""):P(null);return}if(T&&!G.current||!G.current)return;switch(ye.current[He.current]?.key){case"finish":e.completeSession();return;case"continue":e.continueParked();return;case"design-chain":je();return;case"view":ze("",ge.current);return;case"free":ae("");return}return}let o=$e(t),y=pe.current;if(o.batchIdx!=null&&y===o.batchIdx){e.goWithRecommendations();return}if(o.freeIdx!=null&&y===o.freeIdx){ie("");return}if(o.doneIdx!=null&&y===o.doneIdx){e.confirmMulti(Q.current),Fe();return}if(t.multi_select){e.toggleOption(Q.current,y);return}e.submitAnswer(Q.current,y),Fe()},onLeft:()=>{X.current&&xe(Math.max(0,Q.current-1))},onRight:()=>{let t=X.current;t&&xe(Math.min(t.questions.length-1,Q.current+1))},onDigit:t=>{let l=z.current;if(l){t-1<l.options.length&&he(t-1);return}let o=L.current;if(o?.kind==="picker"){t-1<o.items.length&&P({...o,sel:t-1});return}if(o?.kind==="ask"){t-1<Se.current.length&&P({...o,sel:t-1});return}if(o?.kind==="failed"){t-1<Re.current.length&&P({...o,sel:t-1});return}if(o?.kind==="confirm"){t-1<2&&P({...o,sel:t-1});return}if(!(o&&!G.current)&&G.current){let y=ye.current,T=0;for(let q=0;q<y.length;q++)if(!y[q].free&&(T+=1,T===t)){le(q);return}}},isMulti:()=>{let t=z.current;return!!t?.multi_select&&pe.current<(t?.options.length??0)},onSpace:()=>{X.current&&e.toggleOption(Q.current,pe.current)},onTab:()=>{let t=z.current;if(!t)return;let l=$e(t);l.batchIdx!=null&&he(l.batchIdx)},onType:t=>{let l=z.current;if(l){if(!l.allow_free_text)return;let o=$e(l);he(o.freeIdx??0),ie(t);return}if(!(L.current&&!G.current)&&G.current){let o=Rt(ye.current);if(o==null)return;le(o),ae(t)}},onBack:()=>{let t=L.current;if(t&&t.kind!=="running"){P(null);return}let l=X.current;if(l){for(let o=Q.current-1;o>=0;o--)if(l.resolution[o]){xe(o);return}}}},cn=ot!=null?{value:ot,onChange:t=>ie(t),onSubmit:t=>{ie(null),t.trim()&&X.current&&(e.submitFreeText(Q.current,t),Fe())},onCancel:()=>ie(null)}:null,mt=s??(()=>e.requestPause()),se=e.state.checkpoint,ke=x?.kind==="running"&&K==="idle",ve=K==="idle"&&Zt&&!D&&!f&&(!x||ke),G=(0,b.useRef)(!1);G.current=ve;let J=re(e.state.turns).entries.length,be,ee;for(let t=O.length-1;t>=0;t--){if(E.current.some(o=>o.end!=null&&t>=o.start&&t<o.end))continue;let l=O[t];if(!be&&l.kind==="commit"&&l.ok&&(be=l.line),!ee&&l.kind==="banner"&&l.text.startsWith("designing: ")&&(ee=l.text.slice(11)),be&&ee)break}let We;for(let t=O.length-1;t>=0;t--){let l=O[t];if(l.kind==="user")break;if(l.kind==="commit"&&l.ok&&/\bapplied\b/.test(l.line)){We=l.line;break}}let ne=ee?{"acceptance criteria":"scenarios",scenarios:"acceptance criteria + exercises","acceptance criteria + exercises":"tests + gaps"}[ee]:void 0,un=(()=>{for(let t=O.length-1;t>=0;t--){let l=O[t];if(l.kind==="agent")return l.text}return null})(),oe=/\?\s*$/.test((un??"").trimEnd()),gt=i==="design"&&!se&&(oe||ne!==void 0),ft=ee==="tests + gaps",Ie=x?.kind==="running"?x.title:"the design",pt=!!e.state.error&&!e.senderAlive(),dn=F?"the agent needs a clarification before it can apply that":ke&&!se?oe?`${Ie} \u2014 the agent asked a question`:We?`${Ie} \u2014 ${We}`:ft?`${Ie} \u2014 design complete`:`${Ie} \u2014 the agent is waiting on you`:se?ee?`${ee} done${ne?` \u2014 next: ${ne}`:""}`:be??"phase done":pt?"the agent stopped \u2014 the session is view-only":gt?oe?"the agent asked a question \u2014 answer or continue":`design incomplete \u2014 ${ne} not started`:be??"waiting on you",Ne=F?[{key:"free",label:"clarify \u2014 type which one you meant",free:!0}]:ke&&!se?ft&&!oe?[{key:"finish",label:"finish this design"},...J>0?[{key:"view",label:"view what's saved"}]:[],{key:"free",label:"reply \u2014 tell the agent what to change",free:!0}]:[{key:"continue",label:oe?"continue \u2014 go with your suggestion":"continue designing"},...J>0?[{key:"view",label:"view what's saved"}]:[],{key:"finish",label:"finish this design"},{key:"free",label:"reply \u2014 tell the agent what to change",free:!0}]:se?[{key:"continue",label:ne?`continue to ${ne}`:"continue"},...J>0?[{key:"view",label:"view what's saved"}]:[],{key:"finish",label:"finish here"},{key:"free",label:"adjust \u2014 tell me what to change",free:!0}]:pt?[...J>0?[{key:"view",label:"view what's saved"}]:[],{key:"free",label:"tell me what to change",free:!0}]:gt?[{key:"continue",label:oe?"continue \u2014 go with your suggestion":`continue \u2014 ${ne} next`},...J>0?[{key:"view",label:"view the design"}]:[],{key:"finish",label:"finish anyway"},{key:"free",label:"reply \u2014 answer and continue",free:!0}]:[{key:"finish",label:i==="design"?"finish":"looks good \u2014 finish the session"},...c?[{key:"design-chain",label:"design tests for a use-case\u2026"}]:[],...J>0?[{key:"view",label:i==="design"?"view the design":`view the ${J} draft${J===1?"":"s"}`}]:[],{key:"free",label:i==="design"?"keep adjusting \u2014 tell me what to change":"tell me what to change",free:!0}],Ue=[{key:"another",label:"design another use-case\u2026"},...J>0?[{key:"view",label:"view what was designed"}]:[],{key:"back",label:"done \u2014 back"}],Se=(0,b.useRef)(Ue);Se.current=Ue;let Ve=[{key:"retry",label:"try again"},...J>0?[{key:"view",label:"view what's saved"}]:[],{key:"back",label:"back"}],Re=(0,b.useRef)(Ve);Re.current=Ve;let je=()=>{let t=c?.listUcs()??[];if(t.length===0){S("no use-cases to design yet");return}P({kind:"picker",items:t,sel:0})},Ke=(t,l)=>{let o={start:e.state.ledger.length,end:null};E.current.push(o);let y=()=>{o.end=e.state.ledger.length};P({kind:"running",title:t.title,item:t,force:l,startedAt:Date.now()}),c.runDesignChild(t.key,l).then(T=>{y(),T===0?(e.ledger({kind:"commit",ok:!0,line:`designed ${t.title}`}),P({kind:"ask",title:t.title,sel:0})):(e.ledger({kind:"commit",ok:!1,line:`design for ${t.title} failed \u2014 child exited ${T}`}),P({kind:"failed",item:t,force:l,detail:`child exited ${T}`,sel:0}))}).catch(T=>{y();let q=T instanceof Error?T.message:String(T);e.ledger({kind:"commit",ok:!1,line:`design for ${t.title} failed \u2014 ${q}`}),P({kind:"failed",item:t,force:l,detail:q,sel:0})})},ye=(0,b.useRef)(Ne);ye.current=Ne;let[mn,gn]=(0,b.useState)(0),[Qe,fn]=(0,b.useState)(null),He=(0,b.useRef)(0),ht=(0,b.useRef)(null),le=t=>{He.current=t,gn(t)},ae=t=>{ht.current=t,fn(t)},pn=`${ve}:${se}:${ge.current}`;(0,b.useEffect)(()=>{le(0),ae(null)},[pn]);let hn=Qe!=null?{value:Qe,onChange:t=>ae(t),onSubmit:t=>{ae(null),le(0);let l=t.trim();l&&(S(null),e.submit(l))},onCancel:()=>{ae(null),le(0)}}:null,ze=(t,l)=>{if(/^(uc|sc|ac|t|gap|sty)-\d+$/i.test(t.trim())){let q=t.trim().toLowerCase(),Ce=re(e.state.turns).entries.findIndex(U=>(U.item.logical_id??"").toLowerCase()===q);if(Ce<0){S(`${t.trim().toUpperCase()} isn't in this session's items \u2014 view lists what this session minted`);return}v({level:"detail",cursor:Ce,scroll:0}),C(null);return}let o=jt(t);if("error"in o){S(o.error);return}let y=re(e.state.turns);if(y.entries.length===0){S("nothing proposed yet \u2014 the first turn is still coming");return}if(o.level==="detail"&&o.num>y.entries.length){S(`no item ${o.num} \u2014 the set has ${y.entries.length} item${y.entries.length===1?"":"s"}`);return}let T=l!=null?Ye(y,l):y;v(Ut(o,T)),C(l!=null&&T.entries.length<y.entries.length?l:null)},xt=(0,B.jsx)(Bt,{verb:i,subject:rt,pendingCount:Xt,creditsTotal:e.state.credits?.total,state:ke?"waiting on you":D||ve||f||x&&x.kind!=="running"?"idle":void 0});if(f){let t=re(e.state.turns),l=A!=null?Ye(t,A):t,o=t.entries.length-l.entries.length,y=f.level==="list"&&o>0,T=l.entries.length+(y?1:0),q=l.entries[f.cursor],N=f.level==="detail"&&q?e.explainLines(q.item.slug??q.item.temp_ref):null,Ce=f.level==="detail"&&q&&d?d(q.item.logical_id??e.aliasOf(q.item.temp_ref)??q.item.temp_ref):null;return(0,B.jsxs)(I,{flexDirection:"column",children:[(0,B.jsx)(Xe,{onToggleThinking:()=>m(U=>!U),onCtrlC:mt,explorer:{isOpen:()=>_.current!==null,onMove:U=>v(_.current&&Me(_.current,{type:"move",delta:U},T)),onEnter:()=>{let U=_.current;if(U){if(U.level==="list"&&y&&U.cursor===l.entries.length){C(null);return}v(Me(U,{type:"enter"},T))}},onBack:()=>{v(_.current&&Me(_.current,{type:"back"},T)),setTimeout(()=>g(U=>U+1),0)}}}),(0,B.jsx)(Vt,{items:l,state:f,verb:i,more:y?{hidden:o}:null,explain:N,grandTotal:t.entries.length,dossier:Ce}),(we??h)&&(we??h).split(`
|
|
7
|
-
`).map((U,xn)=>(0,B.jsx)(n,{color:r.orange,children:U},`nt-${xn}`)),xt]})}return(0,B.jsxs)(I,{flexDirection:"column",children:[(0,B.jsx)(Xe,{onToggleThinking:()=>m(t=>!t),onCtrlC:mt,panel:an}),Ht&&(0,B.jsx)(vt,{thinking:zt.body,expanded:!0,thinkingDone:K!=="streaming",maxLines:Kt+1}),nt.length>0&&(0,B.jsx)(I,{flexDirection:"column",children:nt.map((t,l)=>(0,B.jsx)(n,{children:wt(t).map((o,y)=>(0,B.jsx)(n,{bold:o.bold,italic:o.italic,color:o.code?r.dim:void 0,children:o.text},y))},`st-${l}`))}),D&&(0,B.jsx)(At,{batch:D,qView:Pe,sel:en,focused:nn,freeText:cn,multiSelFor:t=>e.multiSelection(t)}),F&&(0,B.jsx)(n,{color:"yellow",children:F.prompt}),(we??h)&&(we??h).split(`
|
|
8
|
-
`).map((t,l)=>(0,B.jsx)(n,{color:r.orange,children:t},`nt-${l}`)),it&&!D&&(0,B.jsxs)(n,{color:r.assuranceAccent,children:[`${_e[st%_e.length]} ${Yt} `,(0,B.jsx)(n,{color:r.dim,children:`(${Jt}s)`})]}),ve&&(0,B.jsx)(ce,{headline:dn,rows:Ne,sel:mn,focused:Qe==null,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 type = your own words",freeText:hn}),x?.kind==="picker"&&(0,B.jsx)(ce,{ask:!0,headline:"design tests for which use-case?",rows:x.items.map(t=>({key:t.key,label:t.title,detail:t.badge})),sel:x.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),x?.kind==="confirm"&&(0,B.jsx)(ce,{ask:!0,headline:`${x.item.title} is already designed${x.item.designed==="stale"?" \u2014 and the use-case has changed since":""}`,rows:Qt(x.item).map(t=>({key:t.key,label:t.label,detail:t.detail})),sel:x.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),x?.kind==="running"&&!ke&&(0,B.jsxs)(n,{color:r.assuranceAccent,children:[`${_e[st%_e.length]} Designing ${x.title}\u2026 `,(0,B.jsx)(n,{color:r.dim,children:`(${Math.floor((Date.now()-x.startedAt)/1e3)}s)`})]}),x?.kind==="ask"&&(0,B.jsx)(ce,{headline:`designed ${x.title}`,rows:Ue,sel:x.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),x?.kind==="failed"&&(0,B.jsx)(ce,{headline:`design failed \u2014 ${x.item.title} (${x.detail})`,rows:Ve,sel:x.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}),K==="pausing"&&(0,B.jsx)(n,{color:r.dim,children:"pausing \u2014 saving session\u2026 (ctrl+c again = force quit)"}),xt]})}export{Ir as ChatSurface,Ln as tailVisualRows};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-2H3XNXL3.js";import"./chunk-VYQMCLKG.js";import"./chunk-7APDXIKI.js";import"./chunk-6JTEWZ75.js";import"./chunk-5F7PU5AJ.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-L5LI2JF4.js";import"./chunk-SACSQY3Q.js";import"./chunk-7LWXIRI3.js";import"./chunk-YCCUBQY4.js";import"./chunk-AYDUHTPA.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-VE3SUJMA.js";import"./chunk-YJIESLN6.js";import"./chunk-TW3K2DKB.js";import"./chunk-2KS2YRIS.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as SingleShotApp};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{g as a}from"./chunk-DHF3VO2R.js";import"./chunk-RLZA4VJT.js";import"./chunk-2OQLMW3F.js";import"./chunk-6JTEWZ75.js";import"./chunk-YVXC46DY.js";import"./chunk-5Y2G4NC7.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-RH4GCEFX.js";import"./chunk-W54W762O.js";import"./chunk-6NWPK2MS.js";import"./chunk-DFS4RMVP.js";import"./chunk-2KS2YRIS.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as TestMdRunView};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b,c}from"./chunk-26H3PDVN.js";import"./chunk-GG43HSU2.js";import"./chunk-OSALXGD4.js";import"./chunk-NVGBE2DR.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";export{c as makeChatController,b as questionStub,a as recommendationPicks};
|
package/dist/chunk-26H3PDVN.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as Z,d as ee,e as te,f as ne}from"./chunk-GG43HSU2.js";import{b as B,d as Y}from"./chunk-OSALXGD4.js";import{d as X}from"./chunk-NVGBE2DR.js";var oe=new Set(["approve","edit","reject"]);function ae(i,t){return`chatop:${t}:${i.target??"new"}:${i.op}:${i.seq}`}function ue(i,t,x,k){let c=ae(i,t),f=i.payload;switch(i.op){case"approve":return{kind:"approve",target:i.target,expectedCid:i.expected_cid,eventId:c};case"edit":{let{reason:o,...b}=f;return{kind:"edit",target:i.target,expectedCid:i.expected_cid,edit:b,reason:o,eventId:c}}case"enhance":return{kind:"enhance",target:i.target,expectedCid:i.expected_cid,edges:f.edges??[],eventId:c};case"reject":return{kind:"reject",target:i.target,expectedCid:i.expected_cid,reason:f.reason??"",redirectTo:f.redirect_to,eventId:c};case"add":{let o=f.proposal_item??{},b=String(o.label??"");if(!x.mint_gate.includes(b))throw new Error(`GATED_LABEL: cannot mint "${b}" (gate: ${x.mint_gate.join(", ")})`);let u=o.cite??{},p=o.conv_source_id??k;if(!p||typeof u.turn!="number"||!u.quote)throw new Error("INVALID_ADD: a chat add requires a conversation cite {turn, quote} and conv_source_id");return{kind:"add",label:b,content:o.content??{},cite:{turn:u.turn,quote:u.quote},convSourceId:p,rationale:o.rationale,eventId:c}}}}function re(i,t,x={}){let k=x.turn??0,c=[],f=[];for(let u of i)(u.op==="add"||u.op==="enhance")&&f.push(u);let o=new Map;for(let u of i){if(!oe.has(u.op)||!u.target)continue;let p=o.get(u.target)??[];p.push(u),o.set(u.target,p)}for(let[u,p]of o){let w=Math.max(...p.map(_=>_.seq)),C=p.filter(_=>_.seq===w);if(C.length>1){c.push({target:u,seq:w,kinds:C.map(_=>_.op)});continue}f.push(C[0])}return{chatOps:f.sort((u,p)=>u.seq-p.seq).map(u=>ue(u,k,t,x.convSourceId)),ambiguous:c}}function ce(i){let t=[];return i.questions.forEach((x,k)=>{if(i.resolution[k])return;let c=x.recommended_index!=null?x.options[x.recommended_index]?.label:void 0;c!=null&&t.push(x.risk==="high"?`${c} \u203C`:c)}),t.length>3?`${t.slice(0,3).join(" \xB7 ")} \xB7 +${t.length-3} more`:t.join(" \xB7 ")}function ie(i){let t=i.text.replace(/\?+\s*$/,"");return t.length<=36?t:`${t.slice(0,33)}\u2026`}function le(i){return i.use_cases??[]}var de={acs:"acceptance criteria",scenarios:"scenarios",tests:"tests",gaps:"gaps"};function ge(i){let t=[],x=[],k=(o,b)=>{b.length!==0&&(x.push(o),t.push(...b))},c=o=>typeof o=="string"&&/^[a-z]{1,4}\d{1,4}$/i.test(o)?o:null,f=o=>{let b=c(o.automates)??"1 scenario",u=o.verifies??[],p=u.map(c).filter(_=>_!==null).slice(0,2),w=u.length-p.length,C=p.length?`${p.join(" ")}${w>0?` +${w}`:""}`:`${u.length} ACs`;return`covers ${b} \xB7 verifies ${C}`};return k("acs",(i.acs??[]).map(o=>({temp_ref:o.temp_ref,title:o.text,kind:"ac",badge:String(o.kind),extra:{...o.expected_answer?{expects:`${String(o.expected_answer.operator??"")} \xB7 ${String(o.expected_answer.operand??"")}`}:{},"scoped to":o.scoped_to??"(use-case)"}}))),k("scenarios",(i.scenarios??[]).map(o=>({temp_ref:o.temp_ref,title:o.title,kind:"scenario",badge:o.case_type,why:o.intent,depends_on_hint:o.depends_on??[],extra:{technique:o.technique_notes}}))),k("tests",(i.tests??[]).map(o=>({temp_ref:o.temp_ref,title:o.title,kind:"test",why:f(o),depends_on_hint:o.reuses??[],extra:{automates:String(o.automates??"?"),verifies:(o.verifies??[]).join(", "),check:o.check?`${String(o.check.kind)} vs ${String(o.check.verified_against)}`:"?"}}))),k("gaps",(i.gaps??[]).map(o=>({temp_ref:o.temp_ref??o.ref??"?",title:String(o.question?.header??o.kind),kind:"gap",badge:o.kind,why:o.risk_rationale}))),{items:t,heading:x.join(" + ")||"design"}}function be(i={}){let t={turns:[],thinking:ee(),pending:null,confirm:null,status:"idle",ledger:[],activeTurn:null,stream:null,checkpoint:!1},x=e=>{let n=[],r=e.minted.map(a=>a.slug).filter(Boolean);r.length&&n.push(`added ${r.join(", ")}`);let s=e.applied.length-e.minted.length;return s>0&&n.push(`${s} change${s===1?"":"s"} applied`),e.staleDelta.length&&n.push(`stales ${e.staleDelta.length}`),n.join(" \xB7 ")||"no changes"},k=[];i.onRender&&k.push(i.onRender);let c=0,f=0,o=null,b=null,u=null,p=[],w=0,C=e=>{if(!(!u||!i.contextDir||!e.trim()))try{let n=i.refreshGraph?.()??i.graph;if(!n)return;Y({contextDir:i.contextDir,graph:n,sourceId:u,text:e,by:i.by??{kind:"human",id:"owner"}})}catch{}},_=e=>{if(!u||!i.contextDir)return;let n=i.refreshGraph?.()??i.graph,r=n?.heads.get(u),s=n?.convChains.get(u);if(!n||typeof r!="string"||!s)return;let a=n.getNode(r)?.content?.blob,g=typeof a=="string"?X(i.contextDir,a)?.toString("utf8")??"":"";if(g)for(let y of e){if(y.kind!=="add"||y.convSourceId!==u)continue;let E=B(g,y.cite.turn);if(!(E!==null&&E.includes(y.cite.quote)))for(let S=s.turns;S>=1;S--){let N=B(g,S);if(N!==null&&N.includes(y.cite.quote)){y.cite={...y.cite,turn:S};break}}}},P=null,F=new Map,Q=new Map,G=null,m=()=>{D&&(clearTimeout(D),D=null);for(let e of k)e()},D=null,U=()=>{D||(D=setTimeout(()=>{D=null;for(let e of k)e()},80))},d=e=>{t.ledger.push(e)},R=null,O=!1,q=(e=!1)=>{R?d({kind:"agent",text:R}):e&&O&&d({kind:"note",text:'chat to refine ("looks good" approves; /done finishes)'}),R=null,O=!1},se=()=>{R=null,O=!1},T=null,W=e=>{if(T){if(e)for(let n of T.items){let r=e.get(n.temp_ref);r&&(n.logical_id=r)}d({kind:"turn",...T}),T=null}},A=()=>{W(),t.activeTurn&&(t.activeTurn=null)},z=(e,n)=>n.choice||(n.selected_index!=null?e.options[n.selected_index]?.label??"?":"?"),L=()=>{let e=t.pending;if(!e)return;if(!e.resolution.every(Boolean)){e.cursor=e.resolution.findIndex(s=>s===null);return}let n=e.questions.map((s,a)=>{let g=e.resolution[a];return g.form==="deferred"?{id:s.id,selected_index:null,free_text:null}:g.free_text!=null?{id:s.id,selected_index:null,free_text:g.free_text}:{id:s.id,selected_index:g.selected_index,free_text:null}});t.pending=null,t.status=t.status==="pausing"?"pausing":"streaming";let r=P;P=null,r?.(n)},j=(e,n)=>{let r=t.pending,s=r.questions[e],a=r.resolution[e];r.resolution[e]=n;let g=ie(s);a?d({kind:"answer",receipt:{form:"changed",qNum:e+1,stub:g,choice:z(s,n),prev:a.choice}}):n.form==="deferred"?d({kind:"answer",receipt:{form:"deferred",qNum:e+1,stub:g}}):d({kind:"answer",receipt:{form:n.form,qNum:e+1,stub:g,choice:z(s,n)}})},H=()=>{let e=t.pending;e&&(e.questions.forEach((n,r)=>{e.resolution[r]||j(r,{form:"deferred",selected_index:null,free_text:null,choice:""})}),L())},I=new Map,K=e=>{I.clear();let n={high:0,med:1,low:2};return e=e.map((r,s)=>({q:r,i:s})).sort((r,s)=>(n[r.q.risk]??3)-(n[s.q.risk]??3)||r.i-s.i).map(({q:r})=>r),{questions:e,cursor:0,resolution:e.map(()=>null)}};return{state:t,explainLines(e){if(!i.explain||!i.graph||i.contextDir===void 0)return null;let n=i.explain(i.contextDir,i.graph,e);return n.target?[`${n.target.label} ${n.target.slug??n.target.cid.slice(0,19)}:`,...n.entries.map(r=>` [${r.kind}] ${r.rationale??r.detail}`)]:null},explainRef(e){if(!i.explain||!i.graph||i.contextDir===void 0){d({kind:"note",text:"explain isn't available here"}),m();return}let n=i.explain(i.contextDir,i.graph,e),r=n.target?[`${n.target.label} ${n.target.slug??n.target.cid.slice(0,19)}:`,...n.entries.map(s=>` [${s.kind}] ${s.rationale??s.detail}`)].join(`
|
|
3
|
-
`):`unknown ref: ${e}`;d({kind:"note",text:r}),m()},subscribe(e){return k.push(e),()=>{let n=k.indexOf(e);n>=0&&k.splice(n,1)}},submit(e){if(t.confirm&&(t.confirm=null),!t.pending){if(!o){t.turns.push({role:"user",text:e}),d({kind:"user",text:e}),t.notice="the agent isn't running \u2014 nothing sent",m();return}for(t.notice=void 0,t.checkpoint=!1,q(),t.turns.push({role:"user",text:e}),d({kind:"user",text:e}),C(e),t.status="streaming",t.busySince=Date.now(),t.error=void 0,f+=1;p.length>0;)f+=1,o({type:"user_message",message_id:`u${f}-receipt`,text:p.shift()});o({type:"user_message",message_id:`u${f}`,text:e}),m()}},attachSender(e){let n=o;return o=e,()=>{o=n}},attachOnCommitted(e){b=e},attachConversationSource(e){u=e},holdReceipt(e){p.push(e),t.checkpoint=!0,m()},drainHeldReceipts(){return p.splice(0,p.length)},submitAnswer(e,n){let r=t.pending,s=r?.questions[e],a=s?.options[n]?.label;!r||!s||a==null||(j(e,{form:"answered",selected_index:n,free_text:null,choice:a}),L(),m())},submitFreeText(e,n){let r=t.pending,s=r?.questions[e],a=n.trim();!r||!s||!a||(j(e,{form:"answered",selected_index:null,free_text:a,choice:a}),L(),m())},toggleOption(e,n){let r=t.pending?.questions[e];if(!r||r.options[n]==null)return;let s=I.get(e)??new Set;s.has(n)?s.delete(n):s.add(n),I.set(e,s),m()},multiSelection(e){return[...I.get(e)??[]].sort((n,r)=>n-r)},confirmMulti(e){let n=t.pending,r=n?.questions[e];if(!n||!r)return;let s=[...I.get(e)??[]].sort((g,y)=>g-y).map(g=>r.options[g]?.label).filter(g=>g!=null);if(s.length===0)return;I.delete(e);let a=s.join(", ");j(e,{form:"answered",selected_index:null,free_text:a,choice:a}),L(),m()},goWithRecommendations(){let e=t.pending;if(!e)return{picks:""};let n=ce(e),r=null;return e.questions.forEach((s,a)=>{if(e.resolution[a])return;let g=s.recommended_index,y=g!=null?s.options[g]?.label:void 0;if(y==null){r===null&&(r=a);return}j(a,{form:"assumed",selected_index:g,free_text:null,choice:y})}),r!==null?(e.cursor=r,m(),{blocked:r}):(L(),m(),{picks:n})},reopenQuestion(){let e=t.pending;if(!e)return;let n=e.cursor<0?e.questions.length:e.cursor;for(let r=n-1;r>=0;r--)if(e.resolution[r]){e.cursor=r,m();return}},continueParked(){if(o){for(t.checkpoint=!1,d({kind:"continued"});p.length>0;)f+=1,o({type:"user_message",message_id:`u${f}-receipt`,text:p.shift()});f+=1,o({type:"user_message",message_id:`u${f}`,text:"continue"}),t.status="streaming",t.busySince=Date.now(),m()}},note(e){d({kind:"note",text:e}),m()},aliasOf(e){return Q.get(e)},registerAliases(e){for(let n of e)Q.set(n.ref,n.cid);W(new Map(e.filter(n=>n.id).map(n=>[n.ref,n.id]))),m()},setWorking(e){if(e!=null){if(t.status!=="idle"&&t.status!=="working")return;t.status==="idle"&&(t.busySince=Date.now()),t.status="working",t.workingLabel=e}else{if(t.status!=="working")return;t.status="idle",t.workingLabel=void 0}m()},ledger(e){e.kind==="commit"&&W(),(e.kind==="pause"||e.kind==="error"||e.kind==="summary")&&(A(),q()),(e.kind==="summary"||e.kind==="pause")&&(t.stream=null),d(e),e.kind==="commit"&&(e.ok?q(!0):se()),m()},senderAlive(){return o!=null},completeSession(){H(),o?.({type:"session_complete"}),t.status="idle",m()},requestPause(){H(),t.status="pausing";let e=o;Promise.resolve().then(()=>e?.({type:"pause"})),m()},ask(e){return t.pending=K(e),F=new Map(e.map((n,r)=>[n.id,r+1])),t.status="awaiting-input",m(),new Promise(n=>{P=n})},noteCoercion(e,n){d({kind:"answer",receipt:{form:"assumed",qNum:F.get(e.id)??0,stub:ie(e),choice:n,note:"your typed answer couldn't be used here"}}),m()},onAgentEvent(e){switch(e.type){case"reasoning_delta":case"reasoning_done":case"tool_activity":case"decision_activity":{let n=t.thinking;if(t.thinking=ne(n,e),t.thinking!==n){if(e.type==="reasoning_done"&&e.present)d({kind:"thinking",tookMs:e.took_ms});else if(e.type==="tool_activity"&&e.status!=="started")d({kind:"tool",name:e.name,status:e.status==="done"?"ok":e.status,detail:e.detail});else if(e.type==="decision_activity"){let r=`\xB7 ${te(e)}`,s=t.ledger.length-1;for(;s>=0&&t.ledger[s].kind==="tool";)s--;let a=t.ledger[s];a&&a.kind==="note"&&a.text===r||d({kind:"note",text:r})}}if(e.type==="reasoning_delta"){U();return}break}case"usage":t.credits={turn:e.credits,total:e.total_credits};break;case"text_delta":{let n=G;if(n&&(e.turn_id<n.turn_id||e.turn_id===n.turn_id&&e.attempt<n.attempt))return;(!n||n.turn_id!==e.turn_id||n.attempt!==e.attempt)&&(G={turn_id:e.turn_id,attempt:e.attempt},t.stream={text:""}),t.stream={text:(t.stream?.text??"")+e.text},U();return}case"progress":break;case"proposal":{c+=1,A(),t.stream=null,t.busySince&&(d({kind:"note",text:`\u2713 done in ${Math.max(1,Math.round((Date.now()-t.busySince)/1e3))}s`}),t.busySince=void 0);let n=le(e.proposal),r=i.dedupFlags?.(e.proposal);if(r)for(let s of n){let a=r.get(s.temp_ref);a&&(s.matches_existing=a)}t.turns.push({role:"agent",turnIndex:c,items:n,text:e.narrative}),R=e.narrative??null,O=!0,t.activeTurn={turnIndex:c,heading:"use-cases",items:n},T={turnIndex:c,heading:"use-cases",items:n},(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"design":{c+=1,A(),t.stream=null,t.busySince&&(d({kind:"note",text:`\u2713 done in ${Math.max(1,Math.round((Date.now()-t.busySince)/1e3))}s`}),t.busySince=void 0);let{items:n,heading:r}=ge(e.design),s=r.split(" + ").map(a=>de[a]??a).join(" + ");d({kind:"banner",text:`designing: ${s}`}),t.turns.push({role:"agent",turnIndex:c,items:n,itemsHeading:r,text:e.narrative}),R=e.narrative??null,O=!0,t.activeTurn={turnIndex:c,heading:r,items:n},T={turnIndex:c,heading:r,items:n},(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"ask_user":t.pending=K(e.questions),t.status="awaiting-input";break;case"chat_ops":{c+=1,A(),t.stream=null,t.status==="streaming"&&(t.status="idle");let n=e.chat_ops??e,r=Array.isArray(n.ops)?n.ops:[],s=n.text??e.text??"",a=i.refreshGraph?.()??i.graph,g=l=>Q.get(l)??l,y=r.map(l=>{if(!l.target)return l;let h=g(l.target),v=l.expected_cid;if(v==null&&a){let J=a.resolve(h);J&&(v=a.tipOf(J.cid))}let $=l.payload?.redirect_to,M=$&&g($);return h===l.target&&v===l.expected_cid&&M===$?l:{...l,target:h,expected_cid:v,...M!==$?{payload:{...l.payload,redirect_to:M}}:{}}}),E;try{if(!Array.isArray(n.ops))throw new Error("the agent sent an unreadable change set (no ops array) \u2014 say it again in different words");E=re(y,i.descriptor??{mint_gate:[]},{turn:c,...u?{convSourceId:u}:{}})}catch(l){t.error=l instanceof Error?l.message:String(l),t.turns.push({role:"agent",turnIndex:c,text:s,narration:t.error}),s&&d({kind:"agent",text:s}),d({kind:"error",title:t.error,detail:[]});break}let{chatOps:S,ambiguous:N}=E;if(N.length>0){let l=N[0];t.confirm={kind:"ambiguity-confirm",prompt:`did you mean edit or ${l.kinds.filter(h=>h!=="edit").join("/")} on ${l.target}?`},t.turns.push({role:"agent",turnIndex:c,text:s}),s&&d({kind:"agent",text:s});break}if(_(S),i.commitChatTurn&&S.length>0){let l=i.commitChatTurn({contextDir:i.contextDir??"",graph:i.refreshGraph?.()??i.graph,ops:S,by:i.by??{kind:"human",id:"owner"},...i.descriptor?.mint_gate?{mintable:i.descriptor.mint_gate}:{}});if(l.errors)t.error=l.errors.map(h=>h.detail).join("; "),t.turns.push({role:"agent",turnIndex:c,text:s}),d({kind:"commit",ok:!1,line:"commit failed \u2014 nothing landed",warnings:l.errors.map(h=>`${h.code}: ${h.detail}`)}),p.push(["COMMIT FAILED (chat turn) \u2014 nothing landed; do not assume any of your last ops applied.",...l.errors.map(h=>`- ${h.code}: ${h.detail}`),...l.errors.some(h=>h.code==="UNKNOWN_FIELD")?["If you were changing citations or matched-existing content, that is proposal territory (approve/re-propose) \u2014 a chat edit can only replace a node's own schema fields."]:[]].join(`
|
|
4
|
-
`)),s&&d({kind:"agent",text:s});else{l.applied.length>0&&i.session?.markApplied(l.applied);let h=x(l);t.turns.push({role:"agent",turnIndex:c,text:s,narration:h}),d({kind:"commit",ok:!0,line:h});let v=i.refreshGraph?.();if(v&&b&&b(v),v)try{w+=1;let V=i.descriptor?.mint_gate?.includes("usecase")?"extract":"design",$=Z({verb:V,commitN:w,phase:"chat",committed:l.minted.map(M=>({cid:M.cid,...M.slug?{logical_id:M.slug}:{}}))},v);p.push($.text)}catch{}s&&d({kind:"agent",text:s})}}else t.turns.push({role:"agent",turnIndex:c,text:s}),s&&d({kind:"agent",text:s});C(s);break}case"done":case"session_complete":A(),q(),t.status="idle",o=null;break;case"error":A(),q(),t.stream=null,t.status="idle",t.error=e.message,o=null,d({kind:"error",title:e.message,detail:[]});break;case"session_paused":break;default:break}m()}}}export{ce as a,ie as b,be as c};
|
package/dist/chunk-2KS2YRIS.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{homedir as a}from"os";import{join as t}from"path";var m="0.6.10",d="kane-cli",e=t(a(),".testmuai","kaneai"),g=t(e,"profiles"),h=t(e,"tui-config.json"),_=t(e,"media"),A="https://registry.npmjs.org/@testmuai/kane-cli",L="https://api.github.com/repos/LambdaTest/kane-cli/releases",n="@testmuai/kane-cli-skill",b=`https://registry.npmjs.org/${n}`,r="kane-cli",x=[{dir:t(a(),".claude","skills",r),agent:"Claude Code"},{dir:t(a(),".agents","skills",r),agent:"Codex CLI"},{dir:t(a(),".gemini","skills",r),agent:"Gemini CLI"}],u="https://dd-proxy.lambdatest.com/intake/kane-cli",U="https://kaneai-playground.lambdatest.io",R=9222,I=9230,E=t(e,"chrome-profiles"),o=t(e,"hints"),C=t(o,"state.json");function T(s){return t(o,`catalog-${s}.json`)}var c="127.0.0.1",S=18392,f=18400,i="/callback";function N(s){return`http://${c}:${s}${i}`}var P="KANE CLI",B="*",O={prod:{authBaseUrl:"https://auth.lambdatest.com",consentUrl:"https://accounts.lambdatest.com",controllerBaseUrl:"https://kaneai-api.lambdatest.com/v16-controller/v1",tmsBaseUrl:"https://test-manager-api.lambdatest.com/api",testGeneratorBaseUrl:"https://test-manager-api.lambdatest.com",secretsBaseUrl:"https://api-hyperexecute.lambdatest.com",testManagerUiUrl:"https://test-manager.lambdatest.com",shareApiBaseUrl:"https://api.lambdatest.com",v16ServerHost:"https://kaneai-api.lambdatest.com/v16-server",evidenceViewerUrl:"https://evidence.lambdatest.com",mediaArtefactsHost:"prod-mobile-artefacts.lambdatest.com"},stage:{authBaseUrl:"https://stage-auth.lambdatestinternal.com",consentUrl:"https://stage-accounts.lambdatestinternal.com",controllerBaseUrl:"https://auteur-stage-automind.lambdatestinternal.com/v16-controller/v1",tmsBaseUrl:"https://stage-test-manager-api.lambdatestinternal.com/api",testGeneratorBaseUrl:"https://stage-test-manager-api.lambdatestinternal.com",secretsBaseUrl:"https://api-stage-hyperexecute.lambdatestinternal.com",testManagerUiUrl:"https://stage-test-manager.lambdatestinternal.com",shareApiBaseUrl:"https://stage-api.lambdatestinternal.com",v16ServerHost:"https://auteur-stage-automind.lambdatestinternal.com/v16-server",evidenceViewerUrl:"https://stage-evidence.lambdatestinternal.com",mediaArtefactsHost:"stage-mobile-artefacts.lambdatestinternal.com"}},k={orange:"#ff9500",generateAccent:"#0d9488",assuranceAccent:"#b388ff",purple:"#b388ff",secondary:"#888888",dim:"#666666",muted:"#444444",green:"#4ade80",red:"#ef4444"};export{m as a,d as b,e as c,h as d,_ as e,A as f,L as g,n as h,x as i,u as j,U as k,R as l,I as m,E as n,C as o,T as p,c as q,S as r,f as s,i as t,N as u,P as v,B as w,O as x,k as y};
|
package/dist/chunk-2OQLMW3F.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as b}from"./chunk-6JTEWZ75.js";import{a as O}from"./chunk-RH4GCEFX.js";import{e as w,j as N}from"./chunk-2KS2YRIS.js";import{spawn as U,execSync as B}from"child_process";import{appendFileSync as L,existsSync as E,mkdirSync as K}from"fs";import{homedir as D}from"os";import{join as G,resolve as t,dirname as C}from"path";import{fileURLToPath as W}from"url";import{createInterface as V}from"readline";async function*T(e){let n=V({input:e,crlfDelay:1/0});for await(let l of n){let r=l.trim();if(r)try{let a=JSON.parse(r);a&&typeof a.type=="string"&&(yield a)}catch{}}}function M(e){return e==="action"?{set:{V16_AGENT_ENABLE_ALL_BLOCKERS:"true",V16_BIFURCATION_PHASES:"1"},unset:["V16_NETWORK_WS","V16_NETWORK_SSE"]}:{set:{V16_BIFURCATION_PHASES:"1"},unset:["V16_AGENT_ENABLE_ALL_BLOCKERS","V16_NETWORK_WS","V16_NETWORK_SSE"]}}function h(e){return e?{set:{},unset:["V16_AGENT_SKIP_CP_FINAL"]}:{set:{V16_AGENT_SKIP_CP_FINAL:"true"},unset:[]}}function I(e){return e==="dom"?{set:{V16_AGENT_ENABLE_TEXTUAL_VISUAL:"true"},unset:[]}:{set:{},unset:["V16_AGENT_ENABLE_TEXTUAL_VISUAL"]}}var o=C(W(import.meta.url));function j(){for(let e of["python3","python"])try{return B(`${e} --version`,{stdio:"ignore"}),e}catch{}return null}function $(){let n=process.platform==="win32"?"v16-runner.exe":"v16-runner",l={"darwin-arm64":["@testmuai/kane-cli-darwin-arm64","@lambdatestincprivate/kane-cli-darwin-arm64"],"darwin-x64":["@testmuai/kane-cli-darwin-x64","@lambdatestincprivate/kane-cli-darwin-x64"],"linux-x64":["@testmuai/kane-cli-linux-x64","@lambdatestincprivate/kane-cli-linux-x64"],"linux-arm64":["@testmuai/kane-cli-linux-arm64","@lambdatestincprivate/kane-cli-linux-arm64"],"win32-x64":["@testmuai/kane-cli-win-x64","@lambdatestincprivate/kane-cli-win-x64"]},r=`${process.platform}-${process.arch}`,a=l[r];if(a)for(let s of a){let m=[t(o,"..","node_modules",s,"bin",n),t(o,"..","..","node_modules",s,"bin",n),t(o,"..","..","..","node_modules",s,"bin",n),t(o,"..","..","..","..","node_modules",s,"bin",n)];for(let u of m)if(E(u))return{cmd:u,args:[]}}let f=[t(o,"bin",n),t(o,"..","bin",n),t(o,"..","..","..","..","v16-runner","dist",n),t(o,"..","..","..","v16-runner","dist",n),t(o,"..","..","v16-runner","dist",n),t(process.cwd(),"v16-runner","dist",n),t(process.cwd(),"..","v16-runner","dist",n)];for(let s of f)if(E(s))return{cmd:s,args:[]};let v=[t(o,"..","..","v16-runner"),t(o,"..","..","..","..","v16-runner"),t(o,"..","..","..","v16-runner"),t(process.cwd(),"v16-runner"),t(process.cwd(),"..","v16-runner")];for(let s of v)if(E(t(s,"main.py"))){for(let u of[t(s,".venv","bin","python"),t(s,"..",".venv","bin","python"),t(s,"..","browser-agent",".venv","bin","python")])if(E(u))return{cmd:u,args:["main.py"],cwd:s};let m=j();if(m)return{cmd:m,args:["main.py"],cwd:s}}return null}function ie(e,n){let l=$();if(!l)throw new Error("v16-runner not found. Build the binary with `cd v16-runner && python build.py` or ensure Python is available.");process.env.KANE_SPAWN_DEBUG&&process.stderr.write(`[spawn-debug] ${JSON.stringify(l)}
|
|
3
|
-
`);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
|
-
`);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
|
-
`)}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+`
|
|
6
|
-
`)}catch{}},sendCancel(i){let c=JSON.stringify({type:"cancel",reason:i});try{d.stdin.write(c+`
|
|
7
|
-
`)}catch{}},cancel(){d.kill("SIGTERM")},get stderr(){return _},get exitCode(){return A},get exitSignal(){return y},exited:k}}export{$ as a,ie as b};
|