@testmuai/kane-cli 0.8.9 → 0.8.11
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-HXCRGPSE.js → ChatSurface-YFJDAXOG.js} +1 -1
- package/dist/{ChromeProfilePicker-PJS4NGEC.js → ChromeProfilePicker-PUCZN6WU.js} +1 -1
- package/dist/{CliFeedbackPrompt-Q56VKWKM.js → CliFeedbackPrompt-JAIB5MHS.js} +1 -1
- package/dist/{CliUploadProgress-TMVTKNOT.js → CliUploadProgress-53LQMQJD.js} +1 -1
- package/dist/{ConfigView-Y7ZVYT2C.js → ConfigView-7HFP4OXS.js} +1 -1
- package/dist/EvidenceViewOffer-2T2ZGHIF.js +2 -0
- package/dist/FolderPicker-LTQW4YNR.js +2 -0
- package/dist/{InfoBox-IDJYGPXF.js → InfoBox-62YG3YNQ.js} +1 -1
- package/dist/{LinksBox-5XNJ3UJJ.js → LinksBox-6NS3GHWO.js} +1 -1
- package/dist/{ProfilesView-U73QBC5W.js → ProfilesView-HIKK2HPC.js} +1 -1
- package/dist/{ProjectPicker-KCE2VZCO.js → ProjectPicker-2CJMO5TD.js} +1 -1
- package/dist/{SaveSessionPrompt-3FHLIRLS.js → SaveSessionPrompt-4DTPZSXD.js} +1 -1
- package/dist/SingleShotApp-KXZF5ZJM.js +2 -0
- package/dist/{SummaryBox-GKHU4C4H.js → SummaryBox-A6LKKQXJ.js} +1 -1
- package/dist/TestMdRunView-6X6W5YAP.js +2 -0
- package/dist/{TestrunEvidenceTable-INNZCGTM.js → TestrunEvidenceTable-7SCCTZPH.js} +1 -1
- package/dist/{WhoamiView-PSL7PUVT.js → WhoamiView-PDMQ6F5N.js} +1 -1
- package/dist/{app-download-MBUJGT3R.js → app-download-K2ELUXWR.js} +1 -1
- package/dist/{auth-TYG473Z4.js → auth-5WJSFLCP.js} +1 -1
- package/dist/{binary-QQXWA35Q.js → binary-QVQRWQFK.js} +1 -1
- package/dist/{bind-WJ5UEMMZ.js → bind-5WELCZ4S.js} +3 -3
- package/dist/{bootstrap-MYG4TJVF.js → bootstrap-3LNHRDQH.js} +1 -1
- package/dist/bridge-WFSSMJ57.js +2 -0
- package/dist/{changelog-N4L5ZUGF.js → changelog-TK6DWFVW.js} +1 -1
- package/dist/{chat-committer-K3NOTLOU.js → chat-committer-MAW25ICC.js} +1 -1
- package/dist/chat-controller-6GW2HSJP.js +2 -0
- package/dist/{chunk-ZAKX5BN6.js → chunk-2E55VQYA.js} +1 -1
- package/dist/{chunk-QHUNFH5P.js → chunk-2KQF6WLX.js} +4 -4
- package/dist/{chunk-PH4RABYU.js → chunk-2QSG5ZG6.js} +1 -1
- package/dist/{chunk-QS3DXKZN.js → chunk-2ZBY2GME.js} +1 -1
- package/dist/{chunk-54JZ6VEW.js → chunk-3D7VYEDP.js} +1 -1
- package/dist/{chunk-F5BI3ALG.js → chunk-3FJNTRAS.js} +1 -1
- package/dist/{chunk-DUEROGOF.js → chunk-3PMEHGH3.js} +1 -1
- package/dist/chunk-47WY2637.js +84 -0
- package/dist/{chunk-UEIQTXB6.js → chunk-4AZ7IG2A.js} +1 -1
- package/dist/{chunk-Z2DT2QMX.js → chunk-4FXSDPQW.js} +1 -1
- package/dist/{chunk-6ZNRPDLP.js → chunk-4SXJKDHO.js} +2 -2
- package/dist/{chunk-OR6M5HCV.js → chunk-4VYWTTT4.js} +2 -2
- package/dist/{chunk-R5PIIYN2.js → chunk-4VZRBBLF.js} +1 -1
- package/dist/{chunk-GWSGTZMK.js → chunk-5LEO463W.js} +1 -1
- package/dist/{chunk-7RAIRUXO.js → chunk-5NBT5IVT.js} +1 -1
- package/dist/{chunk-HKCZ67AT.js → chunk-6DOS5CJ5.js} +1 -1
- package/dist/{chunk-N7Z7BQYO.js → chunk-6GH4DRKR.js} +1 -1
- package/dist/{chunk-27P7PJAL.js → chunk-7B7OSHPX.js} +1 -1
- package/dist/{chunk-WH5RVDD6.js → chunk-7HUJVIMO.js} +1 -1
- package/dist/{chunk-NTEI2O3O.js → chunk-7KRCBN6X.js} +2 -2
- package/dist/{chunk-XPFFH2PC.js → chunk-7P3JGF2X.js} +1 -1
- package/dist/{chunk-AROBXG66.js → chunk-A4BDLZOD.js} +1 -1
- package/dist/{chunk-SJBIXLL3.js → chunk-A76UL3EN.js} +1 -1
- package/dist/{chunk-M7D7EHNN.js → chunk-ASK4AZFC.js} +1 -1
- package/dist/{chunk-CCEXSCTN.js → chunk-AXW3WDFO.js} +1 -1
- package/dist/{chunk-IVQX3AKL.js → chunk-B7K5WOOU.js} +1 -1
- package/dist/{chunk-VDKGMVXZ.js → chunk-B7TJIUKZ.js} +1 -1
- package/dist/{chunk-H6KL3FSB.js → chunk-BE4FBVKY.js} +1 -1
- package/dist/chunk-BHSHGWBL.js +2 -0
- package/dist/chunk-CABRAZOL.js +5 -0
- package/dist/{chunk-H5TNYYZW.js → chunk-CBLUNSF4.js} +1 -1
- package/dist/{chunk-O3RRCPIU.js → chunk-CL3AMEK6.js} +1 -1
- package/dist/{chunk-ZDAO5D6D.js → chunk-CQKKDIKA.js} +1 -1
- package/dist/{chunk-IBPF5IM5.js → chunk-CRPBARFG.js} +1 -1
- package/dist/chunk-DEUDRSU7.js +2 -0
- package/dist/{chunk-IJYV3KKD.js → chunk-DHWS7SLT.js} +2 -2
- package/dist/{chunk-ZBJAYCPS.js → chunk-DJJO4IHY.js} +1 -1
- package/dist/{chunk-KKBID6TD.js → chunk-DLJIML73.js} +1 -1
- package/dist/{chunk-EV64VI66.js → chunk-DP7GPS6S.js} +1 -1
- package/dist/chunk-F7R6A6P5.js +4 -0
- package/dist/{chunk-CJD3EEPT.js → chunk-FIODM24X.js} +1 -1
- package/dist/{chunk-2DKJZPIH.js → chunk-FQRWYXFG.js} +1 -1
- package/dist/{chunk-6FCPS2VT.js → chunk-FYLMTZ3J.js} +1 -1
- package/dist/{chunk-ZHB7V3NY.js → chunk-G5ZGEZCA.js} +1 -1
- package/dist/{chunk-367NASYK.js → chunk-GMXM4WHF.js} +1 -1
- package/dist/{chunk-VSEWQEM5.js → chunk-GSNGC7HI.js} +1 -1
- package/dist/{chunk-22HCCSL7.js → chunk-GV5BX2IQ.js} +1 -1
- package/dist/{chunk-LRHSWJDR.js → chunk-HFRMJP2P.js} +1 -1
- package/dist/chunk-HJBORIFP.js +26 -0
- package/dist/{chunk-WIAZN7G4.js → chunk-HULEZ3D3.js} +1 -1
- package/dist/{chunk-JPZHCB4Z.js → chunk-IX4FH5W6.js} +1 -1
- package/dist/{chunk-QDE2BBAK.js → chunk-JAO7TZBV.js} +1 -1
- package/dist/{chunk-MJHLQKQC.js → chunk-JJJREAFQ.js} +1 -1
- package/dist/{chunk-6UNXON3J.js → chunk-K6BWPGBO.js} +1 -1
- package/dist/chunk-KRL2BDI5.js +8 -0
- package/dist/{chunk-R7GMVPAF.js → chunk-M3Q7IQMS.js} +1 -1
- package/dist/{chunk-WHMMOMUY.js → chunk-M7CGNE2D.js} +4 -4
- package/dist/{chunk-2YQ6TW77.js → chunk-NBXYL2JT.js} +6 -6
- package/dist/chunk-NGASEXVA.js +27 -0
- package/dist/{chunk-VQFJM7VP.js → chunk-NLSR2IFN.js} +1 -1
- package/dist/{chunk-H4WIA4IP.js → chunk-NP3VGFZM.js} +1 -1
- package/dist/{chunk-6MJGCETZ.js → chunk-NVRXDLJN.js} +1 -1
- package/dist/{chunk-OEH4LU5L.js → chunk-NYUMJDCE.js} +1 -1
- package/dist/chunk-O7RB4X6I.js +21 -0
- package/dist/{chunk-COJGXGKZ.js → chunk-OC7TJTQG.js} +1 -1
- package/dist/{chunk-BOZODWIZ.js → chunk-OGJ6ZSLC.js} +1 -1
- package/dist/{chunk-EEFZXZTZ.js → chunk-OKBEMFAW.js} +1 -1
- package/dist/{chunk-NVNPXOOC.js → chunk-OKCULEBD.js} +1 -1
- package/dist/{chunk-XMTSHHYQ.js → chunk-OXHMUZJV.js} +1 -1
- package/dist/chunk-OZMYKG6E.js +6 -0
- package/dist/chunk-PDXZROJM.js +2 -0
- package/dist/{chunk-5G22NOZK.js → chunk-QHSF2CXK.js} +1 -1
- package/dist/{chunk-IANCFSSL.js → chunk-QIRZBOKA.js} +1 -1
- package/dist/{chunk-W3Z7AZNT.js → chunk-R4EGL7VM.js} +1 -1
- package/dist/{chunk-KAZGHWGK.js → chunk-S63XGGBE.js} +1 -1
- package/dist/{chunk-ME3DGP7G.js → chunk-SNKFWPEM.js} +2 -2
- package/dist/chunk-T4OJX2GZ.js +15 -0
- package/dist/chunk-TB2CCKL7.js +2 -0
- package/dist/{chunk-FC6DEFUP.js → chunk-TSW5A7W3.js} +1 -1
- package/dist/{chunk-UH2ZTX4E.js → chunk-TYRTD5DD.js} +1 -1
- package/dist/{chunk-SV5ZTCQA.js → chunk-URLZULC7.js} +1 -1
- package/dist/{chunk-TJR4R45C.js → chunk-VGLY4HWA.js} +1 -1
- package/dist/{chunk-IDQBMC3B.js → chunk-VUOAFV27.js} +1 -1
- package/dist/{chunk-DKUD2D5Y.js → chunk-W4IRHQGO.js} +9 -9
- package/dist/{chunk-P2VERPOP.js → chunk-W7NI6JCF.js} +1 -1
- package/dist/chunk-WD52ZNQY.js +2 -0
- package/dist/chunk-WRVDIZAI.js +6 -0
- package/dist/{chunk-DGNVKMGN.js → chunk-X6WB2QTT.js} +1 -1
- package/dist/{chunk-IPZFZUJX.js → chunk-XB7EMX6J.js} +1 -1
- package/dist/{chunk-KRKGZ2ZW.js → chunk-XS2LZFCH.js} +1 -1
- package/dist/{chunk-34VSIQNO.js → chunk-XYSFPVJX.js} +1 -1
- package/dist/chunk-Y4ODYIOP.js +6 -0
- package/dist/{chunk-O5U6EAL3.js → chunk-YELGHSVH.js} +1 -1
- package/dist/{chunk-OME5EJ5X.js → chunk-YQ4MRF57.js} +4 -4
- package/dist/{chunk-AOB2ZX45.js → chunk-YSNBXUM6.js} +1 -1
- package/dist/{chunk-KGKJU27A.js → chunk-Z4QLCWLB.js} +1 -1
- package/dist/{chunk-6S426ODE.js → chunk-Z6GMZOVL.js} +3 -3
- package/dist/{chunk-IWVA37B6.js → chunk-ZES42R57.js} +1 -1
- package/dist/{chunk-TN4SXGAP.js → chunk-ZMJD3CI7.js} +1 -1
- package/dist/{committer-C6UCDYMC.js → committer-42AFWMEX.js} +1 -1
- package/dist/{config-ZDGCZZT3.js → config-KU2UICMC.js} +1 -1
- package/dist/{cover-cmd-5LPHIOSI.js → cover-cmd-HAOBK2IC.js} +1 -1
- package/dist/{credentials-YEWA7HXA.js → credentials-BEC4I5SE.js} +1 -1
- package/dist/{deps-bundle-JQUW73W5.js → deps-bundle-EY5T7OH3.js} +1 -1
- package/dist/{deps-resolve-RXF3JWAP.js → deps-resolve-MPLFFCZZ.js} +1 -1
- package/dist/design-committer-2BQVZPO4.js +2 -0
- package/dist/dispatch-NE35HS5F.js +2 -0
- package/dist/{doctor-F7R4WUSI.js → doctor-JBXA6WNL.js} +1 -1
- package/dist/{docx-convert-JMUMT5C4.js → docx-convert-BIV5T7F5.js} +1 -1
- package/dist/{dossier-Y6TJWFZU.js → dossier-WSWXZAPL.js} +1 -1
- package/dist/effective-decisions-UNE2TFVA.js +2 -0
- package/dist/{evidence-F3CQJQIB.js → evidence-MJV3PY2J.js} +1 -1
- package/dist/evolve-cmd-I4Z6IPIM.js +2 -0
- package/dist/explain-O3A2HZWD.js +2 -0
- package/dist/{explain-cmd-RMJPXD4U.js → explain-cmd-BXFR5DB6.js} +1 -1
- package/dist/{explain-cmd-XCRO4AS6.js → explain-cmd-IRQ2YX5L.js} +1 -1
- package/dist/{extract-bind-PH3VB7PY.js → extract-bind-PPMY4FFA.js} +3 -3
- package/dist/{extract-cmd-HSESPCTL.js → extract-cmd-RHVLPNQB.js} +2 -2
- package/dist/{feeder-IOR3XRNF.js → feeder-52VBZY3R.js} +1 -1
- package/dist/{gaps-cmd-JIUM5YDY.js → gaps-cmd-MSDGU6OU.js} +1 -1
- package/dist/{generate-headless-Z5YF7UHX.js → generate-headless-NSK32S53.js} +2 -2
- package/dist/index.js +115 -115
- package/dist/ingest-WTPY2VLS.js +2 -0
- package/dist/ingest-cmd-GOPW3SNF.js +2 -0
- package/dist/install-BDHZVEY4.js +2 -0
- package/dist/{interactive-bind-HZG2KCTX.js → interactive-bind-4FNW3OYT.js} +4 -4
- package/dist/{lifecycle-cmd-KSMETBPP.js → lifecycle-cmd-HYNG5KH6.js} +1 -1
- package/dist/{list-cmd-V3HJ5K4O.js → list-cmd-Y4WEOT3E.js} +1 -1
- package/dist/{list-commands-BHQHPHOH.js → list-commands-CJCEW7MQ.js} +1 -1
- package/dist/{logical-ids-MLXAH45L.js → logical-ids-N3UZACB4.js} +1 -1
- package/dist/login-flow-DLG2WHSZ.js +2 -0
- package/dist/{maintenance-cmd-VFYGKY3X.js → maintenance-cmd-UJNH47SG.js} +1 -1
- package/dist/{mobile-prompts-ELBW35KK.js → mobile-prompts-SJZVJWSB.js} +1 -1
- package/dist/persist-recorded-session-FWBAOQEF.js +3 -0
- package/dist/{phase-seed-BMOSAA74.js → phase-seed-2WI7KUYO.js} +1 -1
- package/dist/pipeline-B2TYZBMB.js +2 -0
- package/dist/prepare-target-JGVB7OKC.js +2 -0
- package/dist/readmodel-YDLGQDMH.js +2 -0
- package/dist/reconcile-cmd-6ILIXD3U.js +2 -0
- package/dist/{reconcile-deps-RX66LB4B.js → reconcile-deps-GMQA6ULT.js} +2 -2
- package/dist/{reconcile-engine-OEDO57U7.js → reconcile-engine-XLLYS5ZB.js} +1 -1
- package/dist/{recording-banner-COX2HBLL.js → recording-banner-CQBXZMT3.js} +1 -1
- package/dist/{records-JLS63SDI.js → records-EW4PIJ5W.js} +1 -1
- package/dist/registry-AA5YIO5Y.js +2 -0
- package/dist/{replay-policy-CVQ6OJX5.js → replay-policy-A62KXE6Y.js} +1 -1
- package/dist/{require-project-folder-XFUJYJEA.js → require-project-folder-K3E3QIOZ.js} +1 -1
- package/dist/{resolve-run-intent-24D3BV2J.js → resolve-run-intent-3CENNCF3.js} +1 -1
- package/dist/{resolver-ITA6TGPJ.js → resolver-PSNP72H4.js} +1 -1
- package/dist/{revert-PRR3D4XM.js → revert-RXHWWUMQ.js} +1 -1
- package/dist/{review-cmd-SAGIKWEW.js → review-cmd-JUOWTME4.js} +1 -1
- package/dist/run-6CMGGU2W.js +2 -0
- package/dist/run-PZIYMD35.js +2 -0
- package/dist/{run-test-md-U5PSCPZU.js → run-test-md-XBM6RMCI.js} +2 -2
- package/dist/{sessions-cmd-VDQGRBEM.js → sessions-cmd-PGE6LP2W.js} +1 -1
- package/dist/{skill-installer-STKFBIY4.js → skill-installer-FBOPYFYS.js} +1 -1
- package/dist/{spawner-R76ROCR2.js → spawner-URQ5OAY7.js} +1 -1
- package/dist/{structured-answers-YAVW65G4.js → structured-answers-BZWJUX22.js} +1 -1
- package/dist/tcg-generate-BPLQ7WJ5.js +2 -0
- package/dist/testmd-actions-WJS2YM7B.js +2 -0
- package/dist/testmd-sync-TPUBEORI.js +2 -0
- package/dist/token-refresh-IT4LVE2H.js +2 -0
- package/dist/{validate-basic-BPJVV64Y.js → validate-basic-BXBHTTTO.js} +1 -1
- package/dist/verdicts-J5MJHUGG.js +2 -0
- package/dist/{version-check-PWHLDMPD.js → version-check-BGHE3LAK.js} +1 -1
- package/dist/{view-cmd-SXXNDZIC.js → view-cmd-XD5ENSML.js} +1 -1
- package/dist/{walk-session-OMUB7DPJ.js → walk-session-EYBUURRA.js} +1 -1
- package/dist/{with-telemetry-WI5FZFEK.js → with-telemetry-L3SO6J3L.js} +1 -1
- package/package.json +11 -11
- package/dist/EvidenceViewOffer-XV3WF2EC.js +0 -2
- package/dist/FolderPicker-UGHFCPUL.js +0 -2
- package/dist/SingleShotApp-ECA24PKW.js +0 -2
- package/dist/TestMdRunView-KLMMXQCN.js +0 -2
- package/dist/bridge-S3WZ4TH2.js +0 -2
- package/dist/chat-controller-YJCNU76T.js +0 -2
- package/dist/chunk-7UCICMK7.js +0 -5
- package/dist/chunk-AARF24Z3.js +0 -26
- package/dist/chunk-BVON52QL.js +0 -6
- package/dist/chunk-D5MK4WTK.js +0 -26
- package/dist/chunk-DWHXXPDX.js +0 -2
- package/dist/chunk-EKCGZXZE.js +0 -2
- package/dist/chunk-FT23VFSR.js +0 -71
- package/dist/chunk-HPBI3P6I.js +0 -6
- package/dist/chunk-IPEA7ZOF.js +0 -8
- package/dist/chunk-OLKHUNSQ.js +0 -21
- package/dist/chunk-TJLGHGUO.js +0 -7
- package/dist/chunk-W5BTYVZD.js +0 -2
- package/dist/chunk-WHEWZR2C.js +0 -15
- package/dist/design-committer-UPC6NZUF.js +0 -2
- package/dist/dispatch-TRYJZWJE.js +0 -2
- package/dist/effective-decisions-DRM3JSR4.js +0 -2
- package/dist/evolve-cmd-ICTXNYU4.js +0 -2
- package/dist/explain-3HAZY7Q6.js +0 -2
- package/dist/ingest-TTUQ7UDK.js +0 -2
- package/dist/ingest-cmd-SNPNVPIO.js +0 -2
- package/dist/install-VBUDO2YW.js +0 -2
- package/dist/login-flow-TWGSFMWW.js +0 -2
- package/dist/persist-recorded-session-DXUJXHC5.js +0 -3
- package/dist/pipeline-ULKJX3FG.js +0 -2
- package/dist/prepare-target-M656XQLU.js +0 -2
- package/dist/readmodel-TDRFVDVI.js +0 -2
- package/dist/reconcile-cmd-DBOUGUEB.js +0 -2
- package/dist/registry-PAVGNBIB.js +0 -2
- package/dist/run-IHELHWA2.js +0 -2
- package/dist/run-OTSAYPBQ.js +0 -2
- package/dist/tcg-generate-VJARWDD4.js +0 -2
- package/dist/testmd-actions-PXGLZV5L.js +0 -2
- package/dist/token-refresh-ZFT457VI.js +0 -2
- package/dist/verdicts-56ZZN3E4.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as m,g as k}from"./chunk-
|
|
2
|
+
import{b as m,g as k}from"./chunk-DP7GPS6S.js";import{e as g}from"./chunk-IDX3TOPY.js";import"./chunk-OXHMUZJV.js";import"./chunk-DBIBROYW.js";import"./chunk-IAHKTEET.js";import"./chunk-AKX4VRRR.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";import{join as w}from"path";import{existsSync as y}from"fs";function x(e){return(e.answer?.length??0)>0||(e.approve?.length??0)>0||(e.skip?.length??0)>0||(e.defer?.length??0)>0}function h(e){if(!x(e))return{ok:!0,value:null};let t=[],r=new Set;for(let o of e.answer??[]){let u=o.indexOf("="),c=u>0?o.slice(0,u).trim():"",n=u>0?o.slice(u+1):"";if(!c||!n)return{ok:!1,error:`--answer needs <id>=<option-number-or-text>, got '${o}'`};if(r.has(c))return{ok:!1,error:`--answer target '${c}' given twice \u2014 one answer per id`};if(r.add(c),/^\d+$/.test(n.trim())){let p=Number(n.trim());if(p<1)return{ok:!1,error:`--answer option numbers are 1-based (got '${c}=${n.trim()}')`};t.push({target:c,optionIndex:p-1})}else t.push({target:c,freeText:n})}let i=o=>[...new Set((o??[]).map(u=>u.trim()).filter(Boolean))],s=i(e.approve),a=i(e.skip),d=i(e.defer);for(let[o,u]of[s,a,d].entries())for(let c of u)if([s,a,d].some((p,f)=>f!==o&&p.includes(c)))return{ok:!1,error:`handle '${c}' appears in more than one of --approve/--skip/--defer`};return{ok:!0,value:{answers:t,approve:s,skip:a,defer:d}}}function E(e,t){if(!x(e))return null;let r=t==="extract"?"extract":"design",i=h(e);return i.ok?e.resume?e.mode!=="agent"?`${r}: --answer/--approve/--skip/--defer are the structured agent-mode resume surface \u2014 add --mode agent (interactively, just answer in the session)`:null:`${r}: --answer/--approve/--skip/--defer address a paused session's pending panels \u2014 pair them with --resume <sid>`:`${r}: ${i.error}`}function P(e,t){if(e.archetype==="pause-card")return null;if(e.archetype==="walk-card"){let s=e.body.card??{},a=new Set([e.id]);for(let d of["temp_ref","ref","cid"]){let o=s[d];typeof o=="string"&&o&&a.add(o)}for(let[d,o]of[["approve",t.approve],["skip",t.skip],["defer",t.defer]]){let u=o.find(c=>a.has(c));if(u)return{kind:"verdict",panelId:e.id,ref:u,v:d}}return null}if(e.archetype==="ask"){let s=e.body.questions??[];for(let a=0;a<s.length;a++){let d=t.answers.find(o=>o.target===s[a].id||o.target===e.id);if(d)return d.optionIndex!==void 0?d.optionIndex<0||d.optionIndex>=(s[a].options?.length??0)?null:{kind:"answer",panelId:e.id,qIndex:a,optionIndex:d.optionIndex}:{kind:"answer",panelId:e.id,qIndex:a,freeText:d.freeText??""}}return null}let r=t.answers.find(s=>s.target===e.id);if(!r)return null;let i=e.body.options;return r.optionIndex!==void 0?!Array.isArray(i)||r.optionIndex<0||r.optionIndex>=i.length?null:{kind:"answer",panelId:e.id,qIndex:0,optionIndex:r.optionIndex}:{kind:"answer",panelId:e.id,qIndex:0,freeText:r.freeText??""}}function v(e,t){let r=g(e,t);if(!r)return null;let i=r.pending.questions;try{if(y(w(e,"sessions",t,m))){let a=k(e,t).kane?.pending.questions??[];a.length>0&&(i=a)}}catch{}return{questions:i,panels:[],appliedEvents:r.applied_events??[]}}function I(e){let t=e.questions.map(o=>o.id),r=[],i=[],s=[];for(let o of e.panels){if(s.push(o.id),o.archetype==="ask")for(let u of o.body.questions??[])r.push(u.id);if(o.archetype==="walk-card"){let u=o.body.card??{};for(let c of["temp_ref","ref","cid"]){let n=u[c];typeof n=="string"&&n&&i.push(n)}}}let a=(o,u)=>u.length>0?`${o}: ${u.join(", ")}`:null,d=[a("questions",[...new Set([...t,...r])]),a("panels",s),a("verdict handles",i)].filter(o=>o!==null);return d.length>0?`addressable pending ids \u2014 ${d.join(" \xB7 ")}`:"this session has NO pending panels or questions"}function $(e,t,r,i){let s=[],a=new Map(t.questions.map(n=>[n.id,n])),d=new Map(t.panels.map(n=>[n.id,n])),o=new Map,u=new Set;for(let n of t.panels){if(n.archetype==="ask")for(let p of n.body.questions??[])o.set(p.id,p);if(n.archetype==="walk-card"){let p=n.body.card??{};u.add(n.id);for(let f of["temp_ref","ref","cid"]){let l=p[f];typeof l=="string"&&l&&u.add(l)}}}let c=()=>{let n=t.questions[0],p=n?` --answer ${n.id}=${n.recommendedOptionIndex+1}`:"";return`try: ${i}${p}`};for(let n of e.answers){let p=a.get(n.target)??o.get(n.target);if(p){let l=p.options?.length??0;if(n.optionIndex!==void 0&&(n.optionIndex<0||n.optionIndex>=l))return{ok:!1,error:`error: --answer ${n.target}=${n.optionIndex+1} is out of range \u2014 '${n.target}' has ${l} option(s) (numbers are 1-based)`};continue}let f=d.get(n.target);if(f){let l=f.body.options;if(n.optionIndex!==void 0&&Array.isArray(l)&&(n.optionIndex<0||n.optionIndex>=l.length))return{ok:!1,error:`error: --answer ${n.target}=${n.optionIndex+1} is out of range \u2014 the panel has ${l.length} option(s) (numbers are 1-based)`};continue}if(t.appliedEvents.includes(`resolveq:${r}:${n.target}`)||t.appliedEvents.includes(`assumed:${r}:${n.target}`)){s.push(`note: '${n.target}' was already answered \u2014 --answer ${n.target}=\u2026 is a no-op`);continue}return{ok:!1,error:`error: unknown --answer target '${n.target}' \u2014 ${I(t)}
|
|
3
3
|
${c()}`}}for(let[n,p]of[["--approve",e.approve],["--skip",e.skip],["--defer",e.defer]])for(let f of p){if(u.has(f))continue;let l=u.size>0?`addressable verdict handles: ${[...u].join(", ")}`:"this session has NO pending walk/review cards";return{ok:!1,error:`error: unknown ${n} handle '${f}' \u2014 ${l}
|
|
4
4
|
${c()}`}}return{ok:!0,notes:s}}function S(e,t){let r=[],i=[];for(let s of e){let a=t.answers.find(o=>o.target===s.id);if(!a)continue;i.push(s.id);let d=a.optionIndex!==void 0?s.options[a.optionIndex]?.label??`option ${a.optionIndex+1}`:a.freeText??"";r.push(`- ${s.question} [${s.id}] \u2192 ${d}`)}return r.length===0?{statement:null,matchedQids:[]}:{statement:["Structured resume answers (applied via --answer flags \u2014 these ARE the human's decisions; do not re-ask them):",...r].join(`
|
|
5
5
|
`),matchedQids:i}}var b=/^kane-cli (context extract|design tests) --resume [A-Za-z0-9][A-Za-z0-9._-]*( --mode (agent|interactive|ci|override))?( --answer \S+=\d+)*$/;function A(e){try{let t=typeof e.resume=="string"?e.resume:null;if(!t)return[];let r=[{cmd:t,why:"resume the paused session",title:"Resume the session"}],i=Array.isArray(e.pending_questions)?e.pending_questions.filter(s=>s&&typeof s.id=="string"&&!/\s/.test(s.id)):[];if(i.length>0){let s=i.map(d=>{let o=typeof d.recommended_index=="number"&&d.recommended_index>=0?d.recommended_index:0;return` --answer ${d.id}=${o+1}`}).join(""),a=`${t}${s}`;b.test(a)&&r.push({cmd:a,why:`answer the ${i.length} pending question(s) non-interactively \u2014 --answer <question-id>=<option number (1-based) or free text>, repeatable; shown with each question's recommended option`,title:"Answer via structured flags"})}return r}catch{return[]}}function O(e){let t=null;return{encoding:e.encoding,out:e.out,progress:e.progress,event:r=>{if(r.type==="session_paused"&&!("next"in r)&&typeof r.resume=="string"){let i=A(r);if(i.length>0){t=i,e.event({...r,next:i});return}}e.event(r)},done:(r,i,s)=>e.done(r,i,s??(r===3&&t?t:void 0))}}function R(e,t){return e==="design"?`kane-cli design tests --resume ${t} --mode agent`:`kane-cli context extract --resume ${t} --mode agent`}function Q(e){let t=h(e.opts);if(!t.ok)return{kind:"refuse",error:`error: ${t.error}`,code:"STRUCTURED_FLAGS_USAGE"};if(!t.value)return{kind:"none"};let r=e.opts.resume;if(!r)return{kind:"refuse",error:"error: structured resume flags need --resume <sid>",code:"STRUCTURED_FLAGS_USAGE"};let i=v(e.contextDir,r);if(!i)return{kind:"none"};let s=$(t.value,i,r,R(e.verb,r));if(!s.ok)return{kind:"refuse",error:s.error,code:"STRUCTURED_TARGET_UNKNOWN"};let{statement:a,matchedQids:d}=S(i.questions,t.value);return{kind:"apply",answers:t.value,statement:a,matchedQids:d,notes:s.notes}}export{b as STRUCTURED_RESUME_RE,S as composeAnswerStatement,E as gateStructuredFlags,x as hasStructuredFlags,P as matchPanelInput,h as parseStructuredAnswers,Q as prepareStructuredResume,v as readPendingSets,R as resumeExample,A as structuredNextItems,$ as validateStructuredTargets,O as withStructuredNext};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{f as a}from"./chunk-HJBORIFP.js";import"./chunk-3MSXQU2C.js";import"./chunk-QIRZBOKA.js";import"./chunk-7B7OSHPX.js";import"./chunk-IX4FH5W6.js";import"./chunk-FQRWYXFG.js";import"./chunk-47WY2637.js";import"./chunk-NGASEXVA.js";import"./chunk-WRVDIZAI.js";import"./chunk-B7TJIUKZ.js";import"./chunk-W7NI6JCF.js";import"./chunk-OZMYKG6E.js";import"./chunk-WD52ZNQY.js";import"./chunk-5LEO463W.js";import"./chunk-TB2CCKL7.js";import"./chunk-4AZ7IG2A.js";import"./chunk-BHSHGWBL.js";import"./chunk-S3DAAAE5.js";import"./chunk-OGJ6ZSLC.js";import"./chunk-CABRAZOL.js";import"./chunk-PDXZROJM.js";import"./chunk-5DT7PIGB.js";import"./chunk-ASK4AZFC.js";import"./chunk-O7RB4X6I.js";import"./chunk-QQ5MHSSY.js";import"./chunk-5GUD3CIH.js";import"./chunk-4FXSDPQW.js";import"./chunk-YMLC55J4.js";import"./chunk-NP3VGFZM.js";import"./chunk-EHN5HTUD.js";import"./chunk-NVGBE2DR.js";import"./chunk-CH273NAE.js";import"./chunk-OC7TJTQG.js";import"./chunk-CBLUNSF4.js";import"./chunk-W4IRHQGO.js";import"./chunk-F7R6A6P5.js";import"./chunk-T4OJX2GZ.js";import"./chunk-NBXYL2JT.js";import"./chunk-KRL2BDI5.js";import"./chunk-VZ7KXRXB.js";import"./chunk-GMXM4WHF.js";import"./chunk-Y4ODYIOP.js";import"./chunk-AXW3WDFO.js";import"./chunk-A4BDLZOD.js";import"./chunk-5Y2G4NC7.js";import"./chunk-P7YZ3PU3.js";import"./chunk-TDPWFYTJ.js";import"./chunk-7KRCBN6X.js";import"./chunk-4PMZ5FCD.js";import"./chunk-2YEHV2CX.js";import"./chunk-CRPBARFG.js";import"./chunk-R4EGL7VM.js";import"./chunk-JQW2QFSX.js";import"./chunk-FYLMTZ3J.js";import"./chunk-TYRTD5DD.js";import"./chunk-OXHMUZJV.js";import"./chunk-DBIBROYW.js";import"./chunk-IAHKTEET.js";import"./chunk-AKX4VRRR.js";import"./chunk-UD7KKHPW.js";import"./chunk-JJJREAFQ.js";import"./chunk-3PMEHGH3.js";import"./chunk-VGLY4HWA.js";import"./chunk-M3Q7IQMS.js";import"./chunk-YCCUBQY4.js";import"./chunk-FIODM24X.js";import"./chunk-2ZBY2GME.js";import"./chunk-BPMSNGXQ.js";import"./chunk-VE3SUJMA.js";import"./chunk-URLZULC7.js";import"./chunk-RFHMDQXZ.js";import"./chunk-OKCULEBD.js";import"./chunk-4VZRBBLF.js";import"./chunk-MMBBQ4OZ.js";import"./chunk-4VYWTTT4.js";import"./chunk-MSGW4JDG.js";import"./chunk-TZXXJWHA.js";import"./chunk-RSSOJ3L2.js";import"./chunk-5EOX4MEY.js";import"./chunk-3FJNTRAS.js";import"./chunk-TAOHYWEO.js";import"./chunk-YSNBXUM6.js";import"./chunk-GV5BX2IQ.js";import"./chunk-5NBT5IVT.js";import"./chunk-Z7S3IWUX.js";import"./chunk-4JOD47QI.js";import"./chunk-K6BWPGBO.js";import"./chunk-XB7EMX6J.js";import"./chunk-BE4FBVKY.js";import"./chunk-DPUV6OSP.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-E47GFYXA.js";import"./chunk-EYOCNMUM.js";import"./chunk-NVRXDLJN.js";import"./chunk-6DOS5CJ5.js";import"./chunk-A76UL3EN.js";import"./chunk-DEUDRSU7.js";import{a as o}from"./chunk-DFS4RMVP.js";import{a as t}from"./chunk-HCBYKLMW.js";import{c as n}from"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import{e as r}from"./chunk-UR6MHSHU.js";var e=r(t(),1);async function p(i){let c=i.scenarioLimit!==void 0||i.perScenarioLimit!==void 0?{scenarioLimit:i.scenarioLimit,perScenarioLimit:i.perScenarioLimit}:void 0,{waitUntilExit:m}=n((0,e.jsx)(o,{children:(0,e.jsx)(a,{initialChatMode:"generate",initialObjective:i.objective,initialGenerateLimits:c})}),{exitOnCtrlC:!1});await m()}export{p as runGenerate};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{e as a,f as b,g as c,h as d,i as e,j as f,k as g,l as h,m as i,n as j,o as k,p as l,q as m}from"./chunk-NGASEXVA.js";import"./chunk-WRVDIZAI.js";import"./chunk-B7TJIUKZ.js";import"./chunk-WD52ZNQY.js";import"./chunk-PDXZROJM.js";import"./chunk-F7R6A6P5.js";import"./chunk-T4OJX2GZ.js";import"./chunk-NBXYL2JT.js";import"./chunk-KRL2BDI5.js";import"./chunk-VZ7KXRXB.js";import"./chunk-7KRCBN6X.js";import"./chunk-CRPBARFG.js";import"./chunk-FIODM24X.js";import"./chunk-RSSOJ3L2.js";import"./chunk-5EOX4MEY.js";import"./chunk-5NBT5IVT.js";import"./chunk-K6BWPGBO.js";import"./chunk-XB7EMX6J.js";import"./chunk-BE4FBVKY.js";import"./chunk-DPUV6OSP.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-EYOCNMUM.js";import"./chunk-NVRXDLJN.js";import"./chunk-DEUDRSU7.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{i as ExportError,c as assertOrgMatchOrExit,j as exportTestmd,b as metaMatchesOrg,a as readMetaIfExists,d as resolveCurrentOrgId,l as resolveSyncAuth,h as runDeleteAction,k as runExportAction,e as runListAction,f as runListTui,g as runStatusAction,m as runSyncAction};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{b as a,c as b,d as c,e as d,f as e,g as f}from"./chunk-F7R6A6P5.js";import"./chunk-T4OJX2GZ.js";import"./chunk-NBXYL2JT.js";import"./chunk-KRL2BDI5.js";import"./chunk-VZ7KXRXB.js";import"./chunk-DPUV6OSP.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-EYOCNMUM.js";import"./chunk-DEUDRSU7.js";import"./chunk-UR6MHSHU.js";export{a as buildBundleZip,c as runBundleSync,d as shouldSyncBundle,e as shouldSyncPersistedBundle,f as syncPersistedBundle,b as syncTestmdBundle};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a}from"./chunk-K6BWPGBO.js";import"./chunk-XB7EMX6J.js";import"./chunk-BE4FBVKY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-DEUDRSU7.js";import"./chunk-UR6MHSHU.js";export{a as refreshOAuthToken};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as t}from"./chunk-
|
|
2
|
+
import{a as t}from"./chunk-BE4FBVKY.js";import"./chunk-DEUDRSU7.js";import"./chunk-UR6MHSHU.js";async function l(n,o,r){let{ControllerClient:e}=await import("./controller-client-OB4WD2C4.js");await new e(t(n).controllerBaseUrl,{username:o,accessKey:r}).getTmsCredentials()}export{l as validateBasicAuth};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a,b,c}from"./chunk-X6WB2QTT.js";import"./chunk-I7TIGB7K.js";import"./chunk-DLJIML73.js";import"./chunk-BB2W35TW.js";import"./chunk-YKTYVJBN.js";import"./chunk-DNNZ353O.js";import"./chunk-NVGBE2DR.js";import"./chunk-R4EGL7VM.js";import"./chunk-JQW2QFSX.js";import"./chunk-FYLMTZ3J.js";import"./chunk-TYRTD5DD.js";import"./chunk-OXHMUZJV.js";import"./chunk-DBIBROYW.js";import"./chunk-IAHKTEET.js";import"./chunk-AKX4VRRR.js";import"./chunk-UD7KKHPW.js";import"./chunk-DEUDRSU7.js";import"./chunk-UR6MHSHU.js";export{b as requiresBecause,a as reviewProtocolCtx,c as submitReview};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b,c,d}from"./chunk-
|
|
2
|
+
import{a,b,c,d}from"./chunk-CL3AMEK6.js";import"./chunk-RZ4F3BHX.js";import"./chunk-DEUDRSU7.js";import"./chunk-UR6MHSHU.js";export{d as checkForUpdate,b as compareVersions,c as getSeverity,a as getUpdateCommand};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as T}from"./chunk-OS4VSIHT.js";import"./chunk-5DT7PIGB.js";import"./chunk-CH273NAE.js";import{C as V}from"./chunk-
|
|
2
|
+
import{b as T}from"./chunk-OS4VSIHT.js";import"./chunk-5DT7PIGB.js";import"./chunk-CH273NAE.js";import{C as V}from"./chunk-R4EGL7VM.js";import"./chunk-JQW2QFSX.js";import"./chunk-FYLMTZ3J.js";import"./chunk-TYRTD5DD.js";import{e as I}from"./chunk-OXHMUZJV.js";import"./chunk-DBIBROYW.js";import"./chunk-IAHKTEET.js";import{d as f,e as x}from"./chunk-AKX4VRRR.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";import{writeFileSync as ce,mkdirSync as pe}from"fs";import{tmpdir as ue}from"os";import{dirname as fe,join as ge}from"path";var F={DERIVES:"derivation",automates:"linkage",exercises:"mesh",verifies:"mesh",depends_on:"crosslink",reuses:"crosslink",belongs_to:"containment",scoped_to:"containment",annotates:"annotation"},re=(t,r)=>t===f.SOURCE?String(r.source_id??""):t===f.AC?String(r.text??""):t===f.STYLENOTE?String(r.statement??r.text??""):t===f.GAP?String(r.text??r.question??""):String(r.title??"");function H(t){let r=[];for(let[o,p]of t.nodeLabel){let g=t.getNode(o)?.content??{};r.push({cid:o,label:p,slug:p===f.SOURCE?String(g.source_id??""):t.displayNameOf?.(o)??t.nameOf.get(o)??o.slice(0,19),trust:t.trust.get(o)??"derived",fresh:t.stale(o),title:re(p,g),content:g,superseded:t.superseded.has(o)})}let e=new Map;for(let[o]of t.nodeLabel)for(let p of t.edgesFrom(o)){let g=`${p.type}|${p.src}|${p.dst}`,v=typeof p.props?.anchor=="string"?p.props.anchor:void 0,w=e.get(g);w?(w.count++,v&&w.anchors.push(v)):e.set(g,{key:g,type:p.type,family:F[p.type]??"mesh",src:p.src,dst:p.dst,count:1,anchors:v?[v]:[],container:F[p.type]==="containment"})}let s=[...e.values()],i={},l={trusted:0,derived:0,archived:0},d={fresh:0,stale:0,orphaned:0,superseded:0},a=0;for(let o of r)o.superseded||(a++,i[o.label]=(i[o.label]??0)+1,o.label!==f.SOURCE&&l[o.trust]++,d[o.fresh]++);return{nodes:r,edges:s,summary:{nodes:a,edges:s.reduce((o,p)=>o+p.count,0),byLabel:i,trust:l,fresh:d,usecases:i[f.USECASE]??0,designed:0}}}var P=/^([a-z]+)-(\d+)$/,E=(t,r)=>{let e=P.exec(t),s=P.exec(r);return e&&s&&e[1]===s[1]?Number(e[2])-Number(s[2]):t<r?-1:t>r?1:0};function se(t,r,e){let s=new Set,i=d=>{let a=e.nodeLabel.get(d);if(a===f.USECASE)s.add(d);else if(a===f.SCENARIO)for(let o of e.edgesFrom(d))o.type===x.BELONGS_TO&&s.add(o.dst)},l=e.edgesFrom(t);if(r===f.SCENARIO)for(let d of l)d.type===x.BELONGS_TO&&s.add(d.dst);if(r===f.AC)for(let d of l)d.type===x.SCOPED_TO&&i(d.dst);if(r===f.TEST)for(let d of l)d.type===x.AUTOMATES&&i(d.dst);return s}function G(t,r){let e=new Map,s=t.nodes.filter(a=>a.label===f.USECASE).map(a=>a.cid),i=s.map(a=>({ucCid:a,slug:r.nameOf.get(a)??a.slice(0,19),designed:r.designOf.has(a),nodeCids:[a]})).sort((a,o)=>E(a.slug,o.slug)),l={ucCid:"__shared__",slug:"cross-cutting",designed:!1,nodeCids:[]},d=new Map(i.map(a=>[a.ucCid,a]));for(let a of s)e.set(a,a);for(let a of t.nodes){if(a.label===f.SOURCE||a.label===f.USECASE)continue;let o=se(a.cid,a.label,r);if(o.size===1){let p=[...o][0];e.set(a.cid,p),d.get(p).nodeCids.push(a.cid)}else e.set(a.cid,"__shared__"),l.nodeCids.push(a.cid)}return{laneOf:e,lanes:[...i,l]}}var N={source:0,usecase:1,scenario:2,ac:3,test:4,stylenote:5,gap:5},ie=6,z=260,R=64,B=28;function U(t,r,e){let{lanes:s}=r,i=new Map(t.nodes.map(n=>[n.cid,n])),l=new Map,d=[],a=[],o=n=>{let m=n.map(h=>l.get(h)).filter(h=>h!==void 0);return m.length?m.reduce((h,S)=>h+S,0)/m.length:Number.MAX_SAFE_INTEGER},p=s.filter(n=>n.ucCid!=="__shared__"||n.nodeCids.length>0),g=t.nodes.filter(n=>n.label===f.SOURCE).sort((n,m)=>E(n.slug,m.slug)),v=0;for(let n of p){let m=n.nodeCids.map(c=>i.get(c)).filter(Boolean),h=c=>m.filter(u=>u.label===c),S=h(f.USECASE).sort((c,u)=>E(c.slug,u.slug));S.forEach((c,u)=>l.set(c.cid,u));let D=h(f.SCENARIO).sort((c,u)=>E(c.slug,u.slug));D.forEach((c,u)=>l.set(c.cid,u));let M=h(f.AC).sort((c,u)=>{let _=o(e.edgesInto(c.cid).filter(b=>b.type===x.EXERCISES).map(b=>b.src)),O=o(e.edgesInto(u.cid).filter(b=>b.type===x.EXERCISES).map(b=>b.src));return _-O||E(c.slug,u.slug)});M.forEach((c,u)=>l.set(c.cid,u));let j=h(f.TEST).sort((c,u)=>{let _=o(e.edgesFrom(c.cid).filter(b=>b.type===x.VERIFIES).map(b=>b.dst)),O=o(e.edgesFrom(u.cid).filter(b=>b.type===x.VERIFIES).map(b=>b.dst));return _-O||E(c.slug,u.slug)});j.forEach((c,u)=>l.set(c.cid,u));let q=m.filter(c=>N[c.label]===void 0||N[c.label]>=5).sort((c,u)=>E(c.slug,u.slug));q.forEach((c,u)=>l.set(c.cid,u));let A=Math.max(1,S.length,D.length,M.length,j.length,q.length)*R+B;for(let c of m){let u=N[c.label]??4,_=l.get(c.cid)??0;d.push({...c,lane:n.ucCid,col:u,x:u*z,y:v+B/2+_*R})}a.push({...n,y0:v,y1:v+A}),v+=A}let w=Math.max(v,R);g.forEach((n,m)=>d.push({...n,lane:"__spine__",col:0,x:0,y:w/(g.length+1)*(m+1)}));let L=ie*z;return{nodes:d,lanes:a,width:L,height:w}}function ae(t){return t.design_of?"design":t.review.length>0?"review":t.nodes.some(r=>r.label==="source")?"ingest":t.nodes.length>0?"extract":"other"}function $(t){let r=new Map,e=new Map,s=[];for(let i of t){for(let n of i.nodes)r.has(n.cid)||r.set(n.cid,i.seq);let l=new Map(e);for(let n of i.nodes)n.content?.derived===!0&&!e.has(n.cid)&&e.set(n.cid,"derived");for(let n of i.review)n.resolution==="approved"||n.resolution==="edited"?e.set(n.id,"trusted"):n.resolution==="rejected"?e.set(n.id,"archived"):n.resolution==="reset"&&e.set(n.id,"derived");let d=n=>{let m=0;for(let[h,S]of e)S===n&&l.get(h)!==n&&m++;return m},a=0;for(let[n,m]of e){let h=l.get(n);m==="derived"&&(h==="trusted"||h==="archived")&&a++}let o={trusted:d("trusted"),archived:d("archived"),reset:a},p=ae(i),g=i.nodes.map(n=>n.cid),v=i.edges.map(n=>`${n.type}|${n.src}|${n.dst}`),w=i.review.map(n=>n.id),L=p==="review"?"review \xB7 +"+o.trusted+" trusted"+(o.archived?", +"+o.archived+" archived":""):p+" \xB7 +"+g.length+" nodes";s.push({seq:i.seq,ts:i.ts,kind:p,label:L,mintedNodeCids:g,mintedEdgeKeys:v,reviewedNodeCids:w,trustDelta:o})}return{commits:s,bornSeq:r}}function Y(t,r,e){let s=[];for(let i of t){i.nodes.some(l=>l.cid===r)&&s.push({seq:i.seq,ts:i.ts,kind:"minted",detail:"minted here"});for(let l of i.review)l.id===r&&s.push({seq:i.seq,ts:i.ts,kind:"review",detail:l.resolution+(l.reason?": "+l.reason:"")})}return e.length&&s.push({seq:0,ts:"",kind:"derived_from",detail:"source lines "+e.join(", ")}),s}var oe={"&":"&","<":"<",">":">",'"':""","'":"'"};function k(t){return String(t).replace(/[&<>"']/g,r=>oe[r])}var W=t=>"\\u"+t.charCodeAt(0).toString(16).padStart(4,"0"),de=new RegExp("[\u2028\u2029]","g");function X(t){return t.replace(/[<>&]/g,W).replace(de,W)}var K=t=>t.replace("sha256:","").slice(0,12);function J(t){if(!t||typeof t!="object")return"";let r=String(t.operator??""),e=t.operand!=null?String(t.operand):"",s=t.unit!=null?" "+String(t.unit):"",i=t.baseline!=null?String(t.baseline):"",l=t.within&&typeof t.within=="object"?t.within:null,d;switch(r){case"exists":d="exists: "+e;break;case"forall":d="for all "+e;break;case"contains":d="contains "+e;break;case"gte":d=">= "+e+s;break;case"lte":d="<= "+e+s;break;case"equals":d="= "+e+s+(i?" (was "+i+")":"");break;case"changed-by":d="changed by "+e+s;break;default:d=(r+" "+e+s).trim()}if(l){let a=l.threshold!=null?String(l.threshold):"",o=l.unit!=null?String(l.unit):"";(a||o)&&(d+=" within "+a+o)}return d.trim()}var C=t=>t==null||t===""?"":`<span class="chip">${k(t)}</span>`,y=(t,r)=>r==null||r===""?"":`<div class="kv"><span class="k">${k(t)}</span><span class="v">${k(r)}</span></div>`,le=t=>Array.isArray(t)&&t.length?`<ul class="crit">${t.map(r=>`<li>${k(r)}</li>`).join("")}</ul>`:"";function Q(t,r){let e=r??{};switch(t){case"usecase":return[y("description",e.description),y("value",e.value),[C(e.risk?"risk: "+e.risk:""),...Array.isArray(e.actors)?e.actors.map(s=>C(s)):[]].join(""),le(e.criteria)].join("");case"scenario":return[y("intent",e.intent),[C(e.case_type)].join(""),e.parameters&&typeof e.parameters=="object"?Object.entries(e.parameters).map(([s,i])=>y(s,i)).join(""):"",y("techniques",e.technique_notes)].join("");case"ac":return[y("",e.text),[C(e.kind),C(e.risk?"risk: "+e.risk:"")].join(""),(()=>{let s=J(e.expected_answer);return s?`<div class="pred">${k(s)}</div>`:""})()].join("");case"test":{let s=J(e.check),i=e.test_md_blob!=null?`<pre class="md">${k(String(e.test_md_blob))}</pre>`:"";return[s?`<div class="pred">${k(s)}</div>`:"",y("definitionId",e.definitionId),i].join("")}case"source":return[y("source_id",e.source_id),y("blob",e.blob)].join("");case"stylenote":return[e.statement?`<div class="pred">${k(e.statement)}</div>`:"",[C(e.learned_from_kind?"learned from: "+e.learned_from_kind:"")].join(""),y("",e.text),Array.isArray(e.tags)?e.tags.map(s=>C(s)).join(""):""].join("");case"gap":return[y("",e.text??e.question),[C(e.kind),C(e.risk?"risk: "+e.risk:"")].join(""),y("why",e.risk_rationale),y("ref",e.ref)].join("");default:return""}}function Z(t,r,e,s){let i=H(t),l=G(i,t),d=U(i,l,t),{commits:a}=$(r);i.summary.designed=l.lanes.filter(n=>n.designed&&n.ucCid!=="__shared__").length;let o={},p={};for(let n of i.nodes){o[n.cid]=Q(n.label,n.content);let m=t.edgesInto(n.cid).filter(h=>h.type===x.DERIVES&&typeof h.props?.anchor=="string").map(h=>h.props.anchor);p[n.cid]=Y(r,n.cid,m)}let g=d.nodes.map(n=>({cid:n.cid,slug:n.slug,label:n.label,trust:n.trust,fresh:n.fresh,title:n.title,superseded:n.superseded,lane:n.lane,col:n.col,x:n.x,y:n.y})),v=d.lanes.map(n=>({ucCid:n.ucCid,slug:n.slug,designed:n.designed,y0:n.y0,y1:n.y1})),L=i.nodes.some(n=>n.label===f.SOURCE)?{}:void 0;return{meta:{fromSeq:r[0]?.seq??0,tipHash:e[e.length-1]??null,storePath:s,schema:"assurance/context@1",asOf:r[r.length-1]?.ts??null},summary:i.summary,lanes:v,nodes:g,edges:i.edges,commits:a,lineage:p,contentHtml:o,width:d.width,height:d.height,source:L}}var ee="__PAYLOAD__",te=`<!doctype html>
|
|
3
3
|
<html lang="en">
|
|
4
4
|
<head>
|
|
5
5
|
<meta charset="utf-8">
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{c as ke}from"./chunk-WIAZN7G4.js";import{k as he}from"./chunk-6ZNRPDLP.js";import{a as ne,c as ie,d as ve}from"./chunk-LRHSWJDR.js";import"./chunk-OS4VSIHT.js";import"./chunk-KAZGHWGK.js";import{a as J}from"./chunk-A2SQD2AY.js";import"./chunk-KGKJU27A.js";import"./chunk-JUJ4SAGH.js";import{b as Z,c as re,d as de,e as ue,f as K,h as G,i as me,k as fe,m as pe,n as ge}from"./chunk-PH4RABYU.js";import{a as ee,b as te}from"./chunk-UJZZDPDY.js";import{a as N}from"./chunk-O5U6EAL3.js";import"./chunk-RKXHVP2Z.js";import"./chunk-BZAGVBCX.js";import"./chunk-EV64VI66.js";import"./chunk-DNNZ353O.js";import"./chunk-5DT7PIGB.js";import"./chunk-YMLC55J4.js";import"./chunk-NVGBE2DR.js";import"./chunk-CH273NAE.js";import"./chunk-5Y2G4NC7.js";import{C as V}from"./chunk-W3Z7AZNT.js";import"./chunk-JQW2QFSX.js";import{b as le}from"./chunk-6FCPS2VT.js";import"./chunk-UH2ZTX4E.js";import{j as ce}from"./chunk-XMTSHHYQ.js";import"./chunk-DBIBROYW.js";import"./chunk-AKX4VRRR.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import{a as se}from"./chunk-YCCUBQY4.js";import{x as h}from"./chunk-DWHXXPDX.js";import{a as Y}from"./chunk-HCBYKLMW.js";import{a as F,b as x,k as ae}from"./chunk-C44QQJR4.js";import{a as We}from"./chunk-6YGTRKDT.js";import{e as U}from"./chunk-UR6MHSHU.js";var S=U(We(),1);function be(t,g,k){let{ref:D,reason:I,by:T}=k;if(!I||I.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 C=g.resolve(D);if(!C)return{record:null,errors:[{code:"UNKNOWN_REF",detail:`no node '${D}' in the graph`}]};let l=g.tipOf(C.cid);if(g.superseded.has(l))return{record:null,errors:[{code:"ALREADY_ARCHIVED",detail:`${D} is already superseded at its tip (${l.slice(0,19)}\u2026)`}]};let b=ce(t,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[{kind:"node",old:l,new:null,reason:I,by:T}],source_head_moves:{}},{expectPrev:g.latestHash});return le(t),{record:b.record,errors:null}}function we(t){let g=t.by??{kind:"human",id:process.env.USER??"operator"},k=t.mode==="interactive"?"override":t.mode,D=k==="override"?{note:"override \xB7 auto-answers, won't ask"}:{},I=(r,i)=>ee(t.onChild,{verb:"design",subject:r,...D,fixCmd:`kane-cli design tests --use-case ${r}`},i,d=>({ok:d===0,exitCode:d})),T=(r,i,d)=>ee(t.onChild,{verb:"evolve",subject:r,...D,fixCmd:`kane-cli maintain evolve ${i}`},d,a=>({ok:a.outcome==="evolved",exitCode:a.code})),C={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},l={applied:0,committed:0,retired:0,skipped:0,deferred:0,failed:0},b=new Map;for(let r of t.planRows)if(r.held_ref&&t.held){let i=t.held.rows.find(a=>a.temp_ref===r.held_ref);if(!i)continue;let d={kind:i.kind,ref:i.temp_ref,title:i.title,why:i.why,origin:"content-change",...r.impact?{impact:r.impact}:{}};b.set(d.ref,{card:d,source:"held",heldRef:i.temp_ref})}else if(r.kind==="MODIFY"){let i={kind:"MODIFY",ref:r.ref,title:r.ref,why:`${r.reason}: ${r.provenance}`,origin:r.origin??"structural-stale",...r.impact?{impact:r.impact}:{}};b.set(i.ref,{card:i,source:"row",row:r})}else if(r.kind==="ADD"){let i={kind:"ADD",ref:r.ref,title:r.ref,why:r.reason,origin:r.origin??"content-change"};b.set(i.ref,{card:i,source:"row",row:r})}for(let r of t.archive){if(r.kind!=="ARCHIVE")continue;let i={kind:"ARCHIVE",ref:r.ref,title:r.ref,why:r.why,provenance:r.why,...r.impact?{impact:r.impact}:{}};b.set(i.ref,{card:i,source:"archive",row:r})}for(let r of t.reviewFeeder?.()??[]){if(b.has(r.ref))continue;let i={kind:r.kind==="MODIFY_HELD"?"MODIFY":r.kind,ref:r.ref,title:r.title,why:r.why,...r.impact?{impact:r.impact}:{},...r.pair?{pair:r.pair}:{},...r.held?{held:!0}:{},...r.kind==="MODIFY_HELD"?{heldPayload:!0}:{}};b.set(i.ref,{card:i,source:"review",reviewCard:r})}let y=r=>(l.failed++,{outcome:"failed",detail:r});return{cards:()=>[...b.values()].map(r=>r.card),async submit(r,i){let d=b.get(r);if(!d)return y(`no card ${r}`);if(d.source==="review"){if(d.reviewCard.kind==="PAIR"&&i.v==="approve")return y(`${r} is a PAIR card \u2014 approve is not in its grammar (merge / keep both / defer); words ride a defer note`);let{submitReview:s}=await import("./verdicts-56ZZN3E4.js"),w=i.v==="approve"?{v:"approve"}:i.v==="archive"?{v:"archive",because:i.because??""}:i.v==="skip"&&d.reviewCard.kind==="MODIFY_HELD"?{v:"keep_current"}:i.v==="defer"||i.v==="skip"?{v:"defer"}:i.v==="merge"?{v:"merge"}:{v:"keep_both"},v=await s({contextDir:t.contextDir,signals:o=>t.signals({ref:o.ref,verdict:o.verdict,...o.reason?{reason:o.reason}:{}})},d.reviewCard,w,g);return v.outcome==="failed"?(l.failed++,v):v.outcome==="deferred"?(l.deferred++,i.v==="defer"&&i.note?(t.signals({ref:r,verdict:"deferred-with-note",reason:i.note}),{...v,detail:`steering noted: "${i.note}" \u2014 decide ${d.reviewCard.kind==="PAIR"?"merge / keep both":"the verdict"} when it re-offers`}):v):v.outcome==="retired"?(l.retired++,v):v.outcome==="committed"?(l.committed++,v):(l.applied++,v)}if(i.v==="merge"||i.v==="keep_both")return y(`${r} is a ${d.card.kind} card \u2014 ${i.v} applies to review cards only`);if(i.v==="skip")return l.skipped++,t.signals({ref:r,verdict:"gap-dismissed"}),{outcome:"skipped"};if(i.v==="defer")return l.deferred++,i.note?(t.signals({ref:r,verdict:"deferred-with-note",reason:i.note}),{outcome:"deferred",detail:`steering noted: "${i.note}"`}):{outcome:"deferred"};if(i.v==="archive"){if(d.source!=="archive")return y(`${r} is not an ARCHIVE card`);let s=V(t.contextDir),w=s.resolve(d.row.ref);if(w&&s.superseded.has(s.tipOf(w.cid)))return l.skipped++,{outcome:"skipped",detail:"already retired \u2014 nothing to do"};let v=be(t.contextDir,V(t.contextDir),{ref:d.row.ref,reason:`reconcile retire: ${d.row.why}`,by:g});return v.errors?y(v.errors.map(o=>`${o.code}: ${o.detail}`).join("; ")):(l.retired++,t.signals({ref:r,verdict:"gap-resolved-archive",reason:d.row.why}),{outcome:"retired"})}if(d.source==="archive")return y(`${r} takes archive/skip/defer, not approve`);if(d.source==="held"){let s=he(t.contextDir,t.held,d.heldRef,g,i.edits);if(!s.ok)return y(s.message);if(s.kind==="ADD"){let w=await I(s.ref,()=>t.runDesign(s.ref,{yes:!0,mode:k,...i.steering?{because:i.steering}:{}}));return w!==0?(l.failed++,{outcome:"failed",landed:!0,detail:`committed ${s.ref}, but its design run exited ${w} \u2014 finish with kane-cli design tests --use-case ${s.ref}`}):(l.applied++,t.signals({ref:r,verdict:"gap-resolved-create",...i.steering?{reason:i.steering}:{}}),{outcome:"applied",detail:s.ref})}if(i.steering){let w=V(t.contextDir),v=ne(w,s.ref);if(!v.ok)return l.committed++,{outcome:"committed",detail:`committed ${s.ref}, but steering could not resolve it (${v.message}) \u2014 steer via kane-cli maintain evolve ${s.ref}`};let o=await T(v.target.display,s.ref,()=>ie(t.contextDir,v.target,{yes:!0,mode:k,because:i.steering},C,t.runDesign,"batch"));if(o.outcome==="no-design"){let c=await I(v.target.seamRef,()=>t.runDesign(v.target.seamRef,{yes:!0,mode:k,because:i.steering}));return c!==0?(l.failed++,{outcome:"failed",landed:!0,detail:`committed ${s.ref}, but its steered design run exited ${c} \u2014 finish with kane-cli design tests --use-case ${v.target.seamRef}`}):(l.applied++,t.signals({ref:r,verdict:"gap-resolved-create",reason:i.steering}),{outcome:"applied",detail:s.ref})}return o.outcome==="failed"||o.outcome==="paused"?(l.failed++,{outcome:"failed",landed:!0,detail:`committed ${s.ref}, but the steering evolve ${o.outcome} (exit ${o.code}) \u2014 finish with kane-cli maintain evolve ${s.ref}`}):o.outcome==="declined"?(l.committed++,{outcome:"committed",detail:`committed ${s.ref} \u2014 the steering evolve was declined; re-run kane-cli maintain evolve ${s.ref}`}):(l.applied++,t.signals({ref:r,verdict:"gap-resolved-evolve",reason:i.steering}),{outcome:"applied",detail:s.ref})}return l.committed++,t.signals({ref:r,verdict:"gap-resolved-evolve"}),{outcome:"committed",detail:s.ref}}let a=V(t.contextDir),u=ne(a,d.row.ref);if(!u.ok)return y(u.message);if(d.card.kind==="ADD"){let s=await I(u.target.seamRef,()=>t.runDesign(u.target.seamRef,{yes:!0,mode:k}));return s!==0?y(`design run exited ${s}`):(l.applied++,t.signals({ref:r,verdict:"gap-resolved-create"}),{outcome:"applied"})}let A=await T(u.target.display,d.row.ref,()=>ie(t.contextDir,u.target,{yes:!0,mode:k,...i.steering?{because:i.steering}:{}},C,t.runDesign,"batch"));return A.outcome==="evolved"?(l.applied++,t.signals({ref:r,verdict:"gap-resolved-evolve",...i.steering?{reason:i.steering}:{}}),{outcome:"applied"}):A.outcome==="failed"||A.outcome==="paused"?y(`evolve ${A.outcome} (exit ${A.code})`):(l.skipped++,{outcome:"skipped",detail:A.outcome})},summary:()=>({...l})}}var j=U(Y(),1);function q({mark:t,markColor:g,color:k,indent:D=2,reserve:I=0,children:T}){let{stdout:C}=ae(),l=(C?.columns??80)-I,b=D+t.length+1;return(0,j.jsxs)(F,{children:[(0,j.jsx)(F,{width:b,flexShrink:0,children:(0,j.jsx)(x,{color:g,children:`${" ".repeat(D)}${t}`})}),(0,j.jsx)(F,{width:Math.max(20,l-b),children:(0,j.jsx)(x,{color:k,children:T})})]})}var p=U(Y(),1);function ye(t){return t.landed?"committed":t.outcome}var Ee={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"}};function Pe(t){return t.v==="archive"?"Retiring\u2026":t.v==="approve"&&t.steering?"Approving with your changes \u2014 committing, then re-designing\u2026":"Applying \u2014 committing\u2026"}function Oe({controller:t,cards:g,note:k,markOutcome:D,routeChat:I,listEvolveTargets:T,barSubject:C,meta:l,resumeCmd:b,activeChild:y,onFinish:r,onCtrlC:i,pauseRef:d}){let[a,u]=(0,S.useState)(g.length>0?{at:"card",idx:0,sel:0,editor:null}:{at:"done-panel",sel:0}),A=(0,S.useRef)(0),s=(0,S.useRef)(a);s.current=a;let w=(0,S.useRef)([]),[,v]=(0,S.useState)(0),o=a.at==="busy"||a.at==="evolving";(0,S.useEffect)(()=>{if(!o)return;let e=setInterval(()=>v(n=>n+1),120);return()=>clearInterval(e)},[o]);let c=()=>{let e=t.summary();return`${e.applied+e.committed} applied \xB7 ${e.retired} retired \xB7 ${e.skipped} skipped \xB7 ${e.deferred} deferred`+(e.failed>0?` \xB7 ${e.failed} failed`:"")},O=()=>({state:"complete",facts:[c()]}),R=()=>({state:"walk-paused",reason:"ctrl+c",facts:[c(),"every verdict so far is committed \u2014 re-run the same reconcile command to continue"],...b?{resume:b}:{}}),$=()=>r(A.current,O()),W=(0,S.useRef)(!1),P=()=>{r(3,R())},E=()=>{if(W.current)return;W.current=!0;let e=s.current;if(e.at==="busy"||e.at==="evolving"){k((0,p.jsx)(x,{color:h.dim,children:"finishing the current item, then pausing\u2026"}));return}if(e.at==="done-panel"||e.at==="picker"||e.at==="why"||e.at==="view"){$();return}P()};d&&(d.current=E);let _=a.at==="card"||a.at==="busy"?g[a.idx]:null,M=()=>[{key:"finish",label:"finish"},...T?[{key:"evolve",label:"evolve another use-case\u2026"}]:[],...w.current.length>0?[{key:"view",label:"view what changed"}]:[]],H=()=>{let e=T?.()??[];if(e.length===0){k((0,p.jsx)(x,{color:h.dim,children:"nothing is stale \u2014 no evolve targets right now"})),u({at:"done-panel",sel:0});return}u({at:"picker",items:e,sel:0})},xe=e=>{let n=e+1;n<g.length?u({at:"card",idx:n,sel:0,editor:null}):u({at:"done-panel",sel:0})},Q=(0,S.useRef)(!1),L=(e,n)=>{if(Q.current)return;Q.current=!0;let m=g[e];u({at:"busy",idx:e,label:Pe(n),startedAt:Date.now()}),t.submit(m.ref,n).catch(f=>({outcome:"failed",detail:f instanceof Error?f.message:String(f)})).then(f=>{let B=Ee[f.outcome]??{mark:"\xB7",color:"dim"},Te=f.outcome!=="failed"&&f.outcome!=="skipped"&&f.outcome!=="deferred"&&m.impact&&"stale_refs"in m.impact&&m.impact.stale_refs.length>0?` \xB7 ${m.impact.stale_refs.length} item(s) now stale`:"",oe=`${f.outcome} [${m.kind}] ${N(m.title)}${f.detail?` \u2014 ${N(f.detail)}`:""}${Te}`;if(w.current.push({mark:B.mark,color:B.color,line:oe}),k((0,p.jsx)(q,{mark:B.mark,markColor:B.color==="green"?h.green:B.color==="red"?h.red:h.dim,color:B.color==="dim"?h.dim:void 0,children:oe})),f.outcome==="failed"&&(A.current=A.current===0?1:A.current),D(m.ref,ye(f)),Q.current=!1,W.current){P();return}xe(e)})},Ce=(e,n)=>{u({at:"evolving",title:e.title,startedAt:Date.now()}),I(`${e.key} ${n}`).catch(m=>`\u2717 evolve failed: ${m instanceof Error?m.message:String(m)}`).then(m=>{let f=m.startsWith("\u2713");if(w.current.push({mark:f?"\u2714":"\u2717",color:f?"green":"red",line:m.replace(/^[✓✗]\s*/,"")}),k((0,p.jsx)(q,{mark:f?"\u2714":"\u2717",markColor:f?h.green:h.red,children:m.replace(/^[✓✗]\s*/,"")})),W.current){$();return}u({at:"done-panel",sel:0})})},Re=(0,S.useMemo)(()=>({isFocused:()=>{let e=s.current;return e.at==="card"&&e.editor===null||e.at==="done-panel"||e.at==="picker"||e.at==="view"},onMove:e=>{u(n=>{if(n.at==="card"){let m=g[n.idx],f=G(m)??K(m).length-1;return{...n,sel:Math.max(0,Math.min(f,n.sel+e))}}return n.at==="done-panel"?{...n,sel:Math.max(0,Math.min(M().length-1,n.sel+e))}:n.at==="picker"?{...n,sel:Math.max(0,Math.min(n.items.length-1,n.sel+e))}:n})},onSelect:()=>{let e=s.current;if(e.at==="card"){let n=g[e.idx],m=G(n);if(m!==null&&e.sel===m){u({...e,editor:"",editorIntent:"steer"});return}let f=K(n)[e.sel];if(f?.v==="archive"&&n.kind==="REVIEW"){u({...e,editor:"",editorIntent:"because"});return}f&&L(e.idx,{v:f.v});return}if(e.at==="done-panel"){let n=M()[e.sel];n?.key==="finish"?$():n?.key==="evolve"?H():n?.key==="view"&&u({at:"view"});return}if(e.at==="picker"){let n=e.items[e.sel];n&&u({at:"why",item:n,text:""});return}},onDigit:e=>{let n=s.current;if(n.at==="card"){let m=g[n.idx],f=K(m)[e-1];if(f?.v==="archive"&&m.kind==="REVIEW"){u({...n,editor:"",editorIntent:"because"});return}f&&L(n.idx,{v:f.v});return}n.at==="done-panel"&&e-1<M().length&&u({...n,sel:e-1}),n.at==="picker"&&e-1<n.items.length&&u({...n,sel:e-1})},onType:e=>{u(n=>n.at!=="card"||G(g[n.idx])===null?n:{...n,editor:(n.editor??"")+e,editorIntent:n.editorIntent??"steer"})},isMulti:()=>!1,onSpace:()=>{},onBack:()=>{let e=s.current;(e.at==="picker"||e.at==="view")&&u({at:"done-panel",sel:0})}}),[g]);(0,S.useEffect)(()=>{a.at==="done"&&$()},[a.at]);let $e=e=>Math.floor((Date.now()-e)/1e3),X=y?.current??null,De=a.at==="card"?{kind:"card",n:a.idx+1,m:g.length}:a.at==="busy"?X?{kind:"child-working",step:re(a.label)}:{kind:"working",step:re(a.label),elapsedS:$e(a.startedAt)}:a.at==="evolving"?{kind:"child-working",step:`evolving ${a.title}`}:{kind:"idle"},Se=a.at==="card"||a.at==="busy"?g.length-a.idx:0,Me=a.at==="done-panel"||a.at==="picker"||a.at==="why"||a.at==="view",Ie=[...a.at==="card"?a.editor!==null?["\u23CE submit","esc back"]:ge(g[a.idx]).keys:a.at==="done-panel"?pe(M(),{escBack:!1}).keys:a.at==="picker"?["\u2191\u2193 select","\u23CE confirm","esc back"]:a.at==="why"?["\u23CE submit","esc back"]:a.at==="view"?["esc back"]:[],"ctrl+c exit"],z=l??{verb:"reconcile",sid:"",env:""},Ae=`view \xB7 this run's changes \xB7 ${w.current.length}`;return(0,p.jsxs)(F,{flexDirection:"column",children:[(0,p.jsx)(ue,{onToggleThinking:()=>{},onCtrlC:()=>{i(),E()},panel:Re}),a.at==="card"&&_?(0,p.jsx)(me,{card:_,position:{n:a.idx+1,of:g.length},sel:a.sel,focused:a.editor===null,editorIntent:a.editorIntent??"steer",freeText:a.editor!==null?{value:a.editor,onChange:e=>u(n=>n.at==="card"?{...n,editor:e}:n),onSubmit:e=>{let n=s.current;if(n.at!=="card")return;let m=e.trim();if(!m){u({...n,editor:null,editorIntent:void 0});return}let f=g[n.idx];n.editorIntent==="because"?L(n.idx,{v:"archive",because:m}):f.kind==="PAIR"?L(n.idx,{v:"defer",note:m}):L(n.idx,{v:"approve",steering:m})},onCancel:()=>u(e=>e.at==="card"?{...e,editor:null,editorIntent:void 0}:e)}:null}):null,a.at==="done-panel"?(0,p.jsx)(Z,{headline:(()=>{let e=t.summary();return`reconcile done \u2014 ${e.applied+e.committed} applied \xB7 ${e.retired} retired \xB7 ${e.skipped} skipped \xB7 ${e.deferred} deferred${e.failed>0?` \xB7 ${e.failed} failed`:""}`})(),rows:M(),sel:a.sel,focused:!0}):null,a.at==="picker"?(0,p.jsx)(Z,{ask:!0,headline:"evolve which use-case?",rows:a.items.map(e=>({key:e.key,label:e.title,detail:e.badge})),sel:a.sel,focused:!0}):null,a.at==="why"?(0,p.jsxs)(F,{flexDirection:"column",borderStyle:"round",borderColor:h.assuranceAccent,paddingX:1,children:[(0,p.jsxs)(F,{children:[(0,p.jsxs)(x,{children:[(0,p.jsx)(x,{color:h.assuranceAccent,children:"\u25B8"})," ",(0,p.jsx)(x,{color:h.dim,children:"\u270E "})]}),(0,p.jsx)(se,{value:a.text,onChange:e=>u(n=>n.at==="why"?{...n,text:e}:n),onSubmit:e=>{let n=s.current;n.at==="why"&&(e.trim()?Ce(n.item,e.trim()):u({at:"picker",items:[n.item],sel:0}))},onCancel:()=>{s.current.at==="why"&&H()},placeholder:`what should change about ${a.item.title}?`})]}),(0,p.jsx)(x,{color:h.muted,children:" \u23CE submit \xB7 esc back"})]}):null,a.at==="view"?(0,p.jsxs)(F,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,p.jsx)(x,{bold:!0,color:h.assuranceAccent,children:Ae}),(0,p.jsx)(x,{children:" "}),w.current.map((e,n)=>(0,p.jsx)(q,{mark:e.mark,markColor:e.color==="green"?h.green:e.color==="red"?h.red:h.dim,color:e.color==="dim"?h.dim:void 0,indent:0,reserve:0,children:e.line},`vc-${n}`))]}):null,(0,p.jsx)(de,{status:De,meta:{...z,...C??z.subject?{subject:C??z.subject}:{}},tallies:fe(t.summary(),Se),keys:Ie,child:a.at==="evolving"?{verb:"evolve"}:X?{verb:X.verb}:void 0})]})}async function ut(t){let g={current:null},k=o=>{g.current?.append(o)},D=null,I=async(o,c)=>{let[{runDesign:O},{resolveAgentAuthEnv:R},{runAgent:$},{preflightTurn:W}]=await Promise.all([import("./run-OTSAYPBQ.js"),import("./spawner-R76ROCR2.js"),import("./bridge-S3WZ4TH2.js"),import("./turn-preflight-JGYT7LXP.js")]);D??=await R();let P=D;return O({useCase:o,force:!0,mode:c.mode??"override",...c.because?{because:c.because}:{},...c.changeDelta!==void 0?{changeDelta:c.changeDelta}:{},...c.priorDesign!==void 0?{priorDesign:c.priorDesign}:{}},{contextDir:t.dir,agent:$,preflightTurn:()=>W(P),ask:async()=>[],out:()=>{},progress:()=>{},isTTY:!1,auth:P})},T=t.runDesign??I,C={current:null},l="",b=o=>{if(o.kind==="start")C.current={verb:o.verb},l=o.subject,k((0,p.jsxs)(x,{color:h.assuranceAccent,children:[`\u25CF ${te(o.verb).ing} ${N(o.subject)}`,o.note?(0,p.jsx)(x,{color:h.dim,children:` ${o.note}`}):null]}));else if(o.kind==="end"){let c=C.current?.verb??"design";C.current=null,k(o.ok?(0,p.jsx)(x,{color:h.green,children:`\u25CF ${te(c).ed} ${N(l)} \u2014 ${o.durS}s`}):(0,p.jsx)(x,{color:h.red,children:`\u25CF ${c} failed \u2014 ${o.exitCode!=null?`exited ${o.exitCode}`:"error"}${o.fixCmd?` \xB7 ${o.fixCmd}`:""}`}))}},y=we({contextDir:t.dir,held:t.held,archive:t.archive,planRows:t.rows,runDesign:T,mode:"interactive",signals:t.signals,onChild:b,reviewFeeder:()=>{try{return ke({contextDir:t.dir},V(t.dir))}catch{return[]}}}),r=new Set(t.rows.filter(o=>o.applied!==void 0).map(o=>o.held_ref??o.ref)),i=y.cards().filter(o=>!r.has(o.ref)&&!(o.kind==="ARCHIVE"&&t.archiveState?.[o.ref]!==void 0)),d=o=>t.rows.findIndex(c=>(c.held_ref??c.ref)===o),a=(o,c)=>{try{if(i.find($=>$.ref===o)?.kind==="ARCHIVE"){c==="retired"?t.markA?.(o,"retired"):c==="skipped"&&t.markA?.(o,"skipped");return}let R=d(o);if(R<0)return;c==="applied"||c==="committed"?t.mark?.(R,"approved"):c==="skipped"&&t.mark?.(R,"skipped")}catch{}},u=async o=>{let[{openGraph:c},{resolveParentUc:O,evolveOneUc:R}]=await Promise.all([import("./readmodel-TDRFVDVI.js"),import("./evolve-cmd-ICTXNYU4.js")]),[$,...W]=o.split(/\s+/),P=c(t.dir),E=O(P,$);if(!E.ok)return`couldn't resolve '${$}' \u2014 start with a use-case id (uc-\u2026): ${E.message}`;if(W.length===0)return`say what to change: \`${$} <your words>\` \u2014 the words become the redesign's change delta`;let _=W.join(" "),M={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},H=await R(t.dir,E.target,{yes:!0,mode:"override",because:_},M,T,"batch");return H.outcome==="evolved"?(t.signals({ref:E.target.display,verdict:"gap-resolved-evolve",reason:_}),`\u2713 redesigned ${E.target.display} \u2014 "${_}"`):`\u2717 evolve ${H.outcome} for ${E.target.display} (exit ${H.code})`},A=t.listEvolveTargets??(()=>{let o=V(t.dir);return ve(o).targets.map(c=>({key:c.display,title:c.display,badge:"stale"}))});if(t.script){let o=0;for(let c of i){let O=await t.script(c),R=await y.submit(c.ref,O);R.outcome==="failed"&&o===0&&(o=1),a(c.ref,ye(R))}return o}let[{render:s},{ScrollbackProvider:w},{ScrollbackTap:v}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./scrollback-JLPJR25X.js"),import("./ScrollbackTap-Q3IOKNMS.js")]);return new Promise(o=>{let c=!1,O=(_,M)=>{c||(c=!0,(async()=>{process.removeListener("SIGINT",P),await g.current?.flush();try{E.unmount()}catch{}M&&J(M),o(_)})())},R=0,$={current:null},W=()=>{if(R+=1,R>=2){if(c)return;c=!0,process.removeListener("SIGINT",P);try{E.unmount()}catch{}J({state:"interrupted",reason:"ctrl+c \xD72",facts:["forced quit \u2014 every committed verdict is safe in the store"]}),o(130)}},P=()=>{W(),$.current?.()};process.on("SIGINT",P);let E=s((0,p.jsxs)(w,{children:[(0,p.jsx)(v,{into:g}),(0,p.jsx)(Oe,{controller:y,cards:i,note:k,markOutcome:a,routeChat:u,listEvolveTargets:A,barSubject:t.barSubject,meta:t.meta,resumeCmd:t.resumeCmd,activeChild:C,onFinish:O,onCtrlC:W,pauseRef:$})]}),{exitOnCtrlC:!1})})}export{Oe as WalkSessionSurface,ye as outcomeToMark,ut as runWalkSession};
|
|
2
|
+
import{a as J}from"./chunk-A2SQD2AY.js";import{c as ke}from"./chunk-HULEZ3D3.js";import{k as he}from"./chunk-4SXJKDHO.js";import{a as ne,c as ie,d as ve}from"./chunk-HFRMJP2P.js";import"./chunk-OS4VSIHT.js";import"./chunk-S63XGGBE.js";import"./chunk-Z4QLCWLB.js";import"./chunk-BZAGVBCX.js";import"./chunk-JUJ4SAGH.js";import{b as Z,c as re,d as de,e as ue,f as K,h as G,i as me,k as fe,m as pe,n as ge}from"./chunk-2QSG5ZG6.js";import{a as ee,b as te}from"./chunk-UJZZDPDY.js";import{a as N}from"./chunk-YELGHSVH.js";import"./chunk-RKXHVP2Z.js";import"./chunk-DP7GPS6S.js";import"./chunk-DNNZ353O.js";import"./chunk-5DT7PIGB.js";import"./chunk-YMLC55J4.js";import"./chunk-NVGBE2DR.js";import"./chunk-CH273NAE.js";import"./chunk-5Y2G4NC7.js";import{C as V}from"./chunk-R4EGL7VM.js";import"./chunk-JQW2QFSX.js";import{b as le}from"./chunk-FYLMTZ3J.js";import"./chunk-TYRTD5DD.js";import{j as ce}from"./chunk-OXHMUZJV.js";import"./chunk-DBIBROYW.js";import"./chunk-IAHKTEET.js";import"./chunk-AKX4VRRR.js";import"./chunk-UD7KKHPW.js";import{a as se}from"./chunk-YCCUBQY4.js";import{x as h}from"./chunk-DEUDRSU7.js";import{a as Y}from"./chunk-HCBYKLMW.js";import{a as F,b as x,k as ae}from"./chunk-C44QQJR4.js";import{a as We}from"./chunk-6YGTRKDT.js";import{e as U}from"./chunk-UR6MHSHU.js";var S=U(We(),1);function be(t,g,k){let{ref:D,reason:I,by:T}=k;if(!I||I.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 C=g.resolve(D);if(!C)return{record:null,errors:[{code:"UNKNOWN_REF",detail:`no node '${D}' in the graph`}]};let l=g.tipOf(C.cid);if(g.superseded.has(l))return{record:null,errors:[{code:"ALREADY_ARCHIVED",detail:`${D} is already superseded at its tip (${l.slice(0,19)}\u2026)`}]};let b=ce(t,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[{kind:"node",old:l,new:null,reason:I,by:T}],source_head_moves:{}},{expectPrev:g.latestHash});return le(t),{record:b.record,errors:null}}function we(t){let g=t.by??{kind:"human",id:process.env.USER??"operator"},k=t.mode==="interactive"?"override":t.mode,D=k==="override"?{note:"override \xB7 auto-answers, won't ask"}:{},I=(r,i)=>ee(t.onChild,{verb:"design",subject:r,...D,fixCmd:`kane-cli design tests --use-case ${r}`},i,d=>({ok:d===0,exitCode:d})),T=(r,i,d)=>ee(t.onChild,{verb:"evolve",subject:r,...D,fixCmd:`kane-cli maintain evolve ${i}`},d,a=>({ok:a.outcome==="evolved",exitCode:a.code})),C={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},l={applied:0,committed:0,retired:0,skipped:0,deferred:0,failed:0},b=new Map;for(let r of t.planRows)if(r.held_ref&&t.held){let i=t.held.rows.find(a=>a.temp_ref===r.held_ref);if(!i)continue;let d={kind:i.kind,ref:i.temp_ref,title:i.title,why:i.why,origin:"content-change",...r.impact?{impact:r.impact}:{}};b.set(d.ref,{card:d,source:"held",heldRef:i.temp_ref})}else if(r.kind==="MODIFY"){let i={kind:"MODIFY",ref:r.ref,title:r.ref,why:`${r.reason}: ${r.provenance}`,origin:r.origin??"structural-stale",...r.impact?{impact:r.impact}:{}};b.set(i.ref,{card:i,source:"row",row:r})}else if(r.kind==="ADD"){let i={kind:"ADD",ref:r.ref,title:r.ref,why:r.reason,origin:r.origin??"content-change"};b.set(i.ref,{card:i,source:"row",row:r})}for(let r of t.archive){if(r.kind!=="ARCHIVE")continue;let i={kind:"ARCHIVE",ref:r.ref,title:r.ref,why:r.why,provenance:r.why,...r.impact?{impact:r.impact}:{}};b.set(i.ref,{card:i,source:"archive",row:r})}for(let r of t.reviewFeeder?.()??[]){if(b.has(r.ref))continue;let i={kind:r.kind==="MODIFY_HELD"?"MODIFY":r.kind,ref:r.ref,title:r.title,why:r.why,...r.impact?{impact:r.impact}:{},...r.pair?{pair:r.pair}:{},...r.held?{held:!0}:{},...r.kind==="MODIFY_HELD"?{heldPayload:!0}:{}};b.set(i.ref,{card:i,source:"review",reviewCard:r})}let y=r=>(l.failed++,{outcome:"failed",detail:r});return{cards:()=>[...b.values()].map(r=>r.card),async submit(r,i){let d=b.get(r);if(!d)return y(`no card ${r}`);if(d.source==="review"){if(d.reviewCard.kind==="PAIR"&&i.v==="approve")return y(`${r} is a PAIR card \u2014 approve is not in its grammar (merge / keep both / defer); words ride a defer note`);let{submitReview:s}=await import("./verdicts-J5MJHUGG.js"),w=i.v==="approve"?{v:"approve"}:i.v==="archive"?{v:"archive",because:i.because??""}:i.v==="skip"&&d.reviewCard.kind==="MODIFY_HELD"?{v:"keep_current"}:i.v==="defer"||i.v==="skip"?{v:"defer"}:i.v==="merge"?{v:"merge"}:{v:"keep_both"},v=await s({contextDir:t.contextDir,signals:o=>t.signals({ref:o.ref,verdict:o.verdict,...o.reason?{reason:o.reason}:{}})},d.reviewCard,w,g);return v.outcome==="failed"?(l.failed++,v):v.outcome==="deferred"?(l.deferred++,i.v==="defer"&&i.note?(t.signals({ref:r,verdict:"deferred-with-note",reason:i.note}),{...v,detail:`steering noted: "${i.note}" \u2014 decide ${d.reviewCard.kind==="PAIR"?"merge / keep both":"the verdict"} when it re-offers`}):v):v.outcome==="retired"?(l.retired++,v):v.outcome==="committed"?(l.committed++,v):(l.applied++,v)}if(i.v==="merge"||i.v==="keep_both")return y(`${r} is a ${d.card.kind} card \u2014 ${i.v} applies to review cards only`);if(i.v==="skip")return l.skipped++,t.signals({ref:r,verdict:"gap-dismissed"}),{outcome:"skipped"};if(i.v==="defer")return l.deferred++,i.note?(t.signals({ref:r,verdict:"deferred-with-note",reason:i.note}),{outcome:"deferred",detail:`steering noted: "${i.note}"`}):{outcome:"deferred"};if(i.v==="archive"){if(d.source!=="archive")return y(`${r} is not an ARCHIVE card`);let s=V(t.contextDir),w=s.resolve(d.row.ref);if(w&&s.superseded.has(s.tipOf(w.cid)))return l.skipped++,{outcome:"skipped",detail:"already retired \u2014 nothing to do"};let v=be(t.contextDir,V(t.contextDir),{ref:d.row.ref,reason:`reconcile retire: ${d.row.why}`,by:g});return v.errors?y(v.errors.map(o=>`${o.code}: ${o.detail}`).join("; ")):(l.retired++,t.signals({ref:r,verdict:"gap-resolved-archive",reason:d.row.why}),{outcome:"retired"})}if(d.source==="archive")return y(`${r} takes archive/skip/defer, not approve`);if(d.source==="held"){let s=he(t.contextDir,t.held,d.heldRef,g,i.edits);if(!s.ok)return y(s.message);if(s.kind==="ADD"){let w=await I(s.ref,()=>t.runDesign(s.ref,{yes:!0,mode:k,...i.steering?{because:i.steering}:{}}));return w!==0?(l.failed++,{outcome:"failed",landed:!0,detail:`committed ${s.ref}, but its design run exited ${w} \u2014 finish with kane-cli design tests --use-case ${s.ref}`}):(l.applied++,t.signals({ref:r,verdict:"gap-resolved-create",...i.steering?{reason:i.steering}:{}}),{outcome:"applied",detail:s.ref})}if(i.steering){let w=V(t.contextDir),v=ne(w,s.ref);if(!v.ok)return l.committed++,{outcome:"committed",detail:`committed ${s.ref}, but steering could not resolve it (${v.message}) \u2014 steer via kane-cli maintain evolve ${s.ref}`};let o=await T(v.target.display,s.ref,()=>ie(t.contextDir,v.target,{yes:!0,mode:k,because:i.steering},C,t.runDesign,"batch"));if(o.outcome==="no-design"){let c=await I(v.target.seamRef,()=>t.runDesign(v.target.seamRef,{yes:!0,mode:k,because:i.steering}));return c!==0?(l.failed++,{outcome:"failed",landed:!0,detail:`committed ${s.ref}, but its steered design run exited ${c} \u2014 finish with kane-cli design tests --use-case ${v.target.seamRef}`}):(l.applied++,t.signals({ref:r,verdict:"gap-resolved-create",reason:i.steering}),{outcome:"applied",detail:s.ref})}return o.outcome==="failed"||o.outcome==="paused"?(l.failed++,{outcome:"failed",landed:!0,detail:`committed ${s.ref}, but the steering evolve ${o.outcome} (exit ${o.code}) \u2014 finish with kane-cli maintain evolve ${s.ref}`}):o.outcome==="declined"?(l.committed++,{outcome:"committed",detail:`committed ${s.ref} \u2014 the steering evolve was declined; re-run kane-cli maintain evolve ${s.ref}`}):(l.applied++,t.signals({ref:r,verdict:"gap-resolved-evolve",reason:i.steering}),{outcome:"applied",detail:s.ref})}return l.committed++,t.signals({ref:r,verdict:"gap-resolved-evolve"}),{outcome:"committed",detail:s.ref}}let a=V(t.contextDir),u=ne(a,d.row.ref);if(!u.ok)return y(u.message);if(d.card.kind==="ADD"){let s=await I(u.target.seamRef,()=>t.runDesign(u.target.seamRef,{yes:!0,mode:k}));return s!==0?y(`design run exited ${s}`):(l.applied++,t.signals({ref:r,verdict:"gap-resolved-create"}),{outcome:"applied"})}let A=await T(u.target.display,d.row.ref,()=>ie(t.contextDir,u.target,{yes:!0,mode:k,...i.steering?{because:i.steering}:{}},C,t.runDesign,"batch"));return A.outcome==="evolved"?(l.applied++,t.signals({ref:r,verdict:"gap-resolved-evolve",...i.steering?{reason:i.steering}:{}}),{outcome:"applied"}):A.outcome==="failed"||A.outcome==="paused"?y(`evolve ${A.outcome} (exit ${A.code})`):(l.skipped++,{outcome:"skipped",detail:A.outcome})},summary:()=>({...l})}}var j=U(Y(),1);function q({mark:t,markColor:g,color:k,indent:D=2,reserve:I=0,children:T}){let{stdout:C}=ae(),l=(C?.columns??80)-I,b=D+t.length+1;return(0,j.jsxs)(F,{children:[(0,j.jsx)(F,{width:b,flexShrink:0,children:(0,j.jsx)(x,{color:g,children:`${" ".repeat(D)}${t}`})}),(0,j.jsx)(F,{width:Math.max(20,l-b),children:(0,j.jsx)(x,{color:k,children:T})})]})}var p=U(Y(),1);function ye(t){return t.landed?"committed":t.outcome}var Ee={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"}};function Pe(t){return t.v==="archive"?"Retiring\u2026":t.v==="approve"&&t.steering?"Approving with your changes \u2014 committing, then re-designing\u2026":"Applying \u2014 committing\u2026"}function Oe({controller:t,cards:g,note:k,markOutcome:D,routeChat:I,listEvolveTargets:T,barSubject:C,meta:l,resumeCmd:b,activeChild:y,onFinish:r,onCtrlC:i,pauseRef:d}){let[a,u]=(0,S.useState)(g.length>0?{at:"card",idx:0,sel:0,editor:null}:{at:"done-panel",sel:0}),A=(0,S.useRef)(0),s=(0,S.useRef)(a);s.current=a;let w=(0,S.useRef)([]),[,v]=(0,S.useState)(0),o=a.at==="busy"||a.at==="evolving";(0,S.useEffect)(()=>{if(!o)return;let e=setInterval(()=>v(n=>n+1),120);return()=>clearInterval(e)},[o]);let c=()=>{let e=t.summary();return`${e.applied+e.committed} applied \xB7 ${e.retired} retired \xB7 ${e.skipped} skipped \xB7 ${e.deferred} deferred`+(e.failed>0?` \xB7 ${e.failed} failed`:"")},O=()=>({state:"complete",facts:[c()]}),R=()=>({state:"walk-paused",reason:"ctrl+c",facts:[c(),"every verdict so far is committed \u2014 re-run the same reconcile command to continue"],...b?{resume:b}:{}}),$=()=>r(A.current,O()),W=(0,S.useRef)(!1),P=()=>{r(3,R())},E=()=>{if(W.current)return;W.current=!0;let e=s.current;if(e.at==="busy"||e.at==="evolving"){k((0,p.jsx)(x,{color:h.dim,children:"finishing the current item, then pausing\u2026"}));return}if(e.at==="done-panel"||e.at==="picker"||e.at==="why"||e.at==="view"){$();return}P()};d&&(d.current=E);let _=a.at==="card"||a.at==="busy"?g[a.idx]:null,M=()=>[{key:"finish",label:"finish"},...T?[{key:"evolve",label:"evolve another use-case\u2026"}]:[],...w.current.length>0?[{key:"view",label:"view what changed"}]:[]],H=()=>{let e=T?.()??[];if(e.length===0){k((0,p.jsx)(x,{color:h.dim,children:"nothing is stale \u2014 no evolve targets right now"})),u({at:"done-panel",sel:0});return}u({at:"picker",items:e,sel:0})},xe=e=>{let n=e+1;n<g.length?u({at:"card",idx:n,sel:0,editor:null}):u({at:"done-panel",sel:0})},Q=(0,S.useRef)(!1),L=(e,n)=>{if(Q.current)return;Q.current=!0;let m=g[e];u({at:"busy",idx:e,label:Pe(n),startedAt:Date.now()}),t.submit(m.ref,n).catch(f=>({outcome:"failed",detail:f instanceof Error?f.message:String(f)})).then(f=>{let B=Ee[f.outcome]??{mark:"\xB7",color:"dim"},Te=f.outcome!=="failed"&&f.outcome!=="skipped"&&f.outcome!=="deferred"&&m.impact&&"stale_refs"in m.impact&&m.impact.stale_refs.length>0?` \xB7 ${m.impact.stale_refs.length} item(s) now stale`:"",oe=`${f.outcome} [${m.kind}] ${N(m.title)}${f.detail?` \u2014 ${N(f.detail)}`:""}${Te}`;if(w.current.push({mark:B.mark,color:B.color,line:oe}),k((0,p.jsx)(q,{mark:B.mark,markColor:B.color==="green"?h.green:B.color==="red"?h.red:h.dim,color:B.color==="dim"?h.dim:void 0,children:oe})),f.outcome==="failed"&&(A.current=A.current===0?1:A.current),D(m.ref,ye(f)),Q.current=!1,W.current){P();return}xe(e)})},Ce=(e,n)=>{u({at:"evolving",title:e.title,startedAt:Date.now()}),I(`${e.key} ${n}`).catch(m=>`\u2717 evolve failed: ${m instanceof Error?m.message:String(m)}`).then(m=>{let f=m.startsWith("\u2713");if(w.current.push({mark:f?"\u2714":"\u2717",color:f?"green":"red",line:m.replace(/^[✓✗]\s*/,"")}),k((0,p.jsx)(q,{mark:f?"\u2714":"\u2717",markColor:f?h.green:h.red,children:m.replace(/^[✓✗]\s*/,"")})),W.current){$();return}u({at:"done-panel",sel:0})})},Re=(0,S.useMemo)(()=>({isFocused:()=>{let e=s.current;return e.at==="card"&&e.editor===null||e.at==="done-panel"||e.at==="picker"||e.at==="view"},onMove:e=>{u(n=>{if(n.at==="card"){let m=g[n.idx],f=G(m)??K(m).length-1;return{...n,sel:Math.max(0,Math.min(f,n.sel+e))}}return n.at==="done-panel"?{...n,sel:Math.max(0,Math.min(M().length-1,n.sel+e))}:n.at==="picker"?{...n,sel:Math.max(0,Math.min(n.items.length-1,n.sel+e))}:n})},onSelect:()=>{let e=s.current;if(e.at==="card"){let n=g[e.idx],m=G(n);if(m!==null&&e.sel===m){u({...e,editor:"",editorIntent:"steer"});return}let f=K(n)[e.sel];if(f?.v==="archive"&&n.kind==="REVIEW"){u({...e,editor:"",editorIntent:"because"});return}f&&L(e.idx,{v:f.v});return}if(e.at==="done-panel"){let n=M()[e.sel];n?.key==="finish"?$():n?.key==="evolve"?H():n?.key==="view"&&u({at:"view"});return}if(e.at==="picker"){let n=e.items[e.sel];n&&u({at:"why",item:n,text:""});return}},onDigit:e=>{let n=s.current;if(n.at==="card"){let m=g[n.idx],f=K(m)[e-1];if(f?.v==="archive"&&m.kind==="REVIEW"){u({...n,editor:"",editorIntent:"because"});return}f&&L(n.idx,{v:f.v});return}n.at==="done-panel"&&e-1<M().length&&u({...n,sel:e-1}),n.at==="picker"&&e-1<n.items.length&&u({...n,sel:e-1})},onType:e=>{u(n=>n.at!=="card"||G(g[n.idx])===null?n:{...n,editor:(n.editor??"")+e,editorIntent:n.editorIntent??"steer"})},isMulti:()=>!1,onSpace:()=>{},onBack:()=>{let e=s.current;(e.at==="picker"||e.at==="view")&&u({at:"done-panel",sel:0})}}),[g]);(0,S.useEffect)(()=>{a.at==="done"&&$()},[a.at]);let $e=e=>Math.floor((Date.now()-e)/1e3),X=y?.current??null,De=a.at==="card"?{kind:"card",n:a.idx+1,m:g.length}:a.at==="busy"?X?{kind:"child-working",step:re(a.label)}:{kind:"working",step:re(a.label),elapsedS:$e(a.startedAt)}:a.at==="evolving"?{kind:"child-working",step:`evolving ${a.title}`}:{kind:"idle"},Se=a.at==="card"||a.at==="busy"?g.length-a.idx:0,Me=a.at==="done-panel"||a.at==="picker"||a.at==="why"||a.at==="view",Ie=[...a.at==="card"?a.editor!==null?["\u23CE submit","esc back"]:ge(g[a.idx]).keys:a.at==="done-panel"?pe(M(),{escBack:!1}).keys:a.at==="picker"?["\u2191\u2193 select","\u23CE confirm","esc back"]:a.at==="why"?["\u23CE submit","esc back"]:a.at==="view"?["esc back"]:[],"ctrl+c exit"],z=l??{verb:"reconcile",sid:"",env:""},Ae=`view \xB7 this run's changes \xB7 ${w.current.length}`;return(0,p.jsxs)(F,{flexDirection:"column",children:[(0,p.jsx)(ue,{onToggleThinking:()=>{},onCtrlC:()=>{i(),E()},panel:Re}),a.at==="card"&&_?(0,p.jsx)(me,{card:_,position:{n:a.idx+1,of:g.length},sel:a.sel,focused:a.editor===null,editorIntent:a.editorIntent??"steer",freeText:a.editor!==null?{value:a.editor,onChange:e=>u(n=>n.at==="card"?{...n,editor:e}:n),onSubmit:e=>{let n=s.current;if(n.at!=="card")return;let m=e.trim();if(!m){u({...n,editor:null,editorIntent:void 0});return}let f=g[n.idx];n.editorIntent==="because"?L(n.idx,{v:"archive",because:m}):f.kind==="PAIR"?L(n.idx,{v:"defer",note:m}):L(n.idx,{v:"approve",steering:m})},onCancel:()=>u(e=>e.at==="card"?{...e,editor:null,editorIntent:void 0}:e)}:null}):null,a.at==="done-panel"?(0,p.jsx)(Z,{headline:(()=>{let e=t.summary();return`reconcile done \u2014 ${e.applied+e.committed} applied \xB7 ${e.retired} retired \xB7 ${e.skipped} skipped \xB7 ${e.deferred} deferred${e.failed>0?` \xB7 ${e.failed} failed`:""}`})(),rows:M(),sel:a.sel,focused:!0}):null,a.at==="picker"?(0,p.jsx)(Z,{ask:!0,headline:"evolve which use-case?",rows:a.items.map(e=>({key:e.key,label:e.title,detail:e.badge})),sel:a.sel,focused:!0}):null,a.at==="why"?(0,p.jsxs)(F,{flexDirection:"column",borderStyle:"round",borderColor:h.assuranceAccent,paddingX:1,children:[(0,p.jsxs)(F,{children:[(0,p.jsxs)(x,{children:[(0,p.jsx)(x,{color:h.assuranceAccent,children:"\u25B8"})," ",(0,p.jsx)(x,{color:h.dim,children:"\u270E "})]}),(0,p.jsx)(se,{value:a.text,onChange:e=>u(n=>n.at==="why"?{...n,text:e}:n),onSubmit:e=>{let n=s.current;n.at==="why"&&(e.trim()?Ce(n.item,e.trim()):u({at:"picker",items:[n.item],sel:0}))},onCancel:()=>{s.current.at==="why"&&H()},placeholder:`what should change about ${a.item.title}?`})]}),(0,p.jsx)(x,{color:h.muted,children:" \u23CE submit \xB7 esc back"})]}):null,a.at==="view"?(0,p.jsxs)(F,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,p.jsx)(x,{bold:!0,color:h.assuranceAccent,children:Ae}),(0,p.jsx)(x,{children:" "}),w.current.map((e,n)=>(0,p.jsx)(q,{mark:e.mark,markColor:e.color==="green"?h.green:e.color==="red"?h.red:h.dim,color:e.color==="dim"?h.dim:void 0,indent:0,reserve:0,children:e.line},`vc-${n}`))]}):null,(0,p.jsx)(de,{status:De,meta:{...z,...C??z.subject?{subject:C??z.subject}:{}},tallies:fe(t.summary(),Se),keys:Ie,child:a.at==="evolving"?{verb:"evolve"}:X?{verb:X.verb}:void 0})]})}async function ut(t){let g={current:null},k=o=>{g.current?.append(o)},D=null,I=async(o,c)=>{let[{runDesign:O},{resolveAgentAuthEnv:R},{runAgent:$},{preflightTurn:W}]=await Promise.all([import("./run-6CMGGU2W.js"),import("./spawner-URQ5OAY7.js"),import("./bridge-WFSSMJ57.js"),import("./turn-preflight-JGYT7LXP.js")]);D??=await R();let P=D;return O({useCase:o,force:!0,mode:c.mode??"override",...c.because?{because:c.because}:{},...c.changeDelta!==void 0?{changeDelta:c.changeDelta}:{},...c.priorDesign!==void 0?{priorDesign:c.priorDesign}:{}},{contextDir:t.dir,agent:$,preflightTurn:()=>W(P),ask:async()=>[],out:()=>{},progress:()=>{},isTTY:!1,auth:P})},T=t.runDesign??I,C={current:null},l="",b=o=>{if(o.kind==="start")C.current={verb:o.verb},l=o.subject,k((0,p.jsxs)(x,{color:h.assuranceAccent,children:[`\u25CF ${te(o.verb).ing} ${N(o.subject)}`,o.note?(0,p.jsx)(x,{color:h.dim,children:` ${o.note}`}):null]}));else if(o.kind==="end"){let c=C.current?.verb??"design";C.current=null,k(o.ok?(0,p.jsx)(x,{color:h.green,children:`\u25CF ${te(c).ed} ${N(l)} \u2014 ${o.durS}s`}):(0,p.jsx)(x,{color:h.red,children:`\u25CF ${c} failed \u2014 ${o.exitCode!=null?`exited ${o.exitCode}`:"error"}${o.fixCmd?` \xB7 ${o.fixCmd}`:""}`}))}},y=we({contextDir:t.dir,held:t.held,archive:t.archive,planRows:t.rows,runDesign:T,mode:"interactive",signals:t.signals,onChild:b,reviewFeeder:()=>{try{return ke({contextDir:t.dir},V(t.dir))}catch{return[]}}}),r=new Set(t.rows.filter(o=>o.applied!==void 0).map(o=>o.held_ref??o.ref)),i=y.cards().filter(o=>!r.has(o.ref)&&!(o.kind==="ARCHIVE"&&t.archiveState?.[o.ref]!==void 0)),d=o=>t.rows.findIndex(c=>(c.held_ref??c.ref)===o),a=(o,c)=>{try{if(i.find($=>$.ref===o)?.kind==="ARCHIVE"){c==="retired"?t.markA?.(o,"retired"):c==="skipped"&&t.markA?.(o,"skipped");return}let R=d(o);if(R<0)return;c==="applied"||c==="committed"?t.mark?.(R,"approved"):c==="skipped"&&t.mark?.(R,"skipped")}catch{}},u=async o=>{let[{openGraph:c},{resolveParentUc:O,evolveOneUc:R}]=await Promise.all([import("./readmodel-YDLGQDMH.js"),import("./evolve-cmd-I4Z6IPIM.js")]),[$,...W]=o.split(/\s+/),P=c(t.dir),E=O(P,$);if(!E.ok)return`couldn't resolve '${$}' \u2014 start with a use-case id (uc-\u2026): ${E.message}`;if(W.length===0)return`say what to change: \`${$} <your words>\` \u2014 the words become the redesign's change delta`;let _=W.join(" "),M={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},H=await R(t.dir,E.target,{yes:!0,mode:"override",because:_},M,T,"batch");return H.outcome==="evolved"?(t.signals({ref:E.target.display,verdict:"gap-resolved-evolve",reason:_}),`\u2713 redesigned ${E.target.display} \u2014 "${_}"`):`\u2717 evolve ${H.outcome} for ${E.target.display} (exit ${H.code})`},A=t.listEvolveTargets??(()=>{let o=V(t.dir);return ve(o).targets.map(c=>({key:c.display,title:c.display,badge:"stale"}))});if(t.script){let o=0;for(let c of i){let O=await t.script(c),R=await y.submit(c.ref,O);R.outcome==="failed"&&o===0&&(o=1),a(c.ref,ye(R))}return o}let[{render:s},{ScrollbackProvider:w},{ScrollbackTap:v}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./scrollback-JLPJR25X.js"),import("./ScrollbackTap-Q3IOKNMS.js")]);return new Promise(o=>{let c=!1,O=(_,M)=>{c||(c=!0,(async()=>{process.removeListener("SIGINT",P),await g.current?.flush();try{E.unmount()}catch{}M&&J(M),o(_)})())},R=0,$={current:null},W=()=>{if(R+=1,R>=2){if(c)return;c=!0,process.removeListener("SIGINT",P);try{E.unmount()}catch{}J({state:"interrupted",reason:"ctrl+c \xD72",facts:["forced quit \u2014 every committed verdict is safe in the store"]}),o(130)}},P=()=>{W(),$.current?.()};process.on("SIGINT",P);let E=s((0,p.jsxs)(w,{children:[(0,p.jsx)(v,{into:g}),(0,p.jsx)(Oe,{controller:y,cards:i,note:k,markOutcome:a,routeChat:u,listEvolveTargets:A,barSubject:t.barSubject,meta:t.meta,resumeCmd:t.resumeCmd,activeChild:C,onFinish:O,onCtrlC:W,pauseRef:$})]}),{exitOnCtrlC:!1})})}export{Oe as WalkSessionSurface,ye as outcomeToMark,ut as runWalkSession};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-
|
|
2
|
+
import{a}from"./chunk-7P3JGF2X.js";import"./chunk-GSNGC7HI.js";import"./chunk-4PMZ5FCD.js";import"./chunk-KBM3XHAM.js";import"./chunk-2YEHV2CX.js";import"./chunk-IDX3TOPY.js";import"./chunk-BKM2LWU2.js";import"./chunk-RSSOJ3L2.js";import"./chunk-5EOX4MEY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-DEUDRSU7.js";import"./chunk-UR6MHSHU.js";export{a as withTelemetry};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testmuai/kane-cli",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.11",
|
|
4
4
|
"description": "KaneAI Terminal UI — browser automation testing agent",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -32,16 +32,16 @@
|
|
|
32
32
|
"ws": "^8.20.0"
|
|
33
33
|
},
|
|
34
34
|
"optionalDependencies": {
|
|
35
|
-
"@testmuai/kane-cli-assurance-darwin-arm64": "0.8.
|
|
36
|
-
"@testmuai/kane-cli-assurance-darwin-x64": "0.8.
|
|
37
|
-
"@testmuai/kane-cli-assurance-linux-arm64": "0.8.
|
|
38
|
-
"@testmuai/kane-cli-assurance-linux-x64": "0.8.
|
|
39
|
-
"@testmuai/kane-cli-assurance-win-x64": "0.8.
|
|
40
|
-
"@testmuai/kane-cli-darwin-arm64": "0.8.
|
|
41
|
-
"@testmuai/kane-cli-darwin-x64": "0.8.
|
|
42
|
-
"@testmuai/kane-cli-linux-x64": "0.8.
|
|
43
|
-
"@testmuai/kane-cli-linux-arm64": "0.8.
|
|
44
|
-
"@testmuai/kane-cli-win-x64": "0.8.
|
|
35
|
+
"@testmuai/kane-cli-assurance-darwin-arm64": "0.8.11",
|
|
36
|
+
"@testmuai/kane-cli-assurance-darwin-x64": "0.8.11",
|
|
37
|
+
"@testmuai/kane-cli-assurance-linux-arm64": "0.8.11",
|
|
38
|
+
"@testmuai/kane-cli-assurance-linux-x64": "0.8.11",
|
|
39
|
+
"@testmuai/kane-cli-assurance-win-x64": "0.8.11",
|
|
40
|
+
"@testmuai/kane-cli-darwin-arm64": "0.8.11",
|
|
41
|
+
"@testmuai/kane-cli-darwin-x64": "0.8.11",
|
|
42
|
+
"@testmuai/kane-cli-linux-x64": "0.8.11",
|
|
43
|
+
"@testmuai/kane-cli-linux-arm64": "0.8.11",
|
|
44
|
+
"@testmuai/kane-cli-win-x64": "0.8.11",
|
|
45
45
|
"@testmuai/kane-cli-node-darwin-arm64": "24.18.0",
|
|
46
46
|
"@testmuai/kane-cli-node-darwin-x64": "24.18.0",
|
|
47
47
|
"@testmuai/kane-cli-node-linux-x64": "24.18.0",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-M7D7EHNN.js";import"./chunk-OLKHUNSQ.js";import"./chunk-QQ5MHSSY.js";import"./chunk-Z2DT2QMX.js";import"./chunk-5GUD3CIH.js";import"./chunk-YMLC55J4.js";import"./chunk-H4WIA4IP.js";import"./chunk-EHN5HTUD.js";import"./chunk-IPEA7ZOF.js";import"./chunk-NVGBE2DR.js";import"./chunk-CH273NAE.js";import"./chunk-VZ7KXRXB.js";import"./chunk-P7YZ3PU3.js";import"./chunk-W3Z7AZNT.js";import"./chunk-JQW2QFSX.js";import"./chunk-6FCPS2VT.js";import"./chunk-UH2ZTX4E.js";import"./chunk-XMTSHHYQ.js";import"./chunk-DBIBROYW.js";import"./chunk-AKX4VRRR.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-DUEROGOF.js";import"./chunk-RFHMDQXZ.js";import"./chunk-MMBBQ4OZ.js";import"./chunk-OR6M5HCV.js";import"./chunk-MSGW4JDG.js";import"./chunk-RSSOJ3L2.js";import"./chunk-5EOX4MEY.js";import"./chunk-4JOD47QI.js";import"./chunk-H6KL3FSB.js";import"./chunk-RZ4F3BHX.js";import"./chunk-EYOCNMUM.js";import"./chunk-DWHXXPDX.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as EvidenceViewOffer};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b}from"./chunk-R7GMVPAF.js";import"./chunk-YCCUBQY4.js";import"./chunk-CJD3EEPT.js";import"./chunk-BPMSNGXQ.js";import"./chunk-7RAIRUXO.js";import"./chunk-H6KL3FSB.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-DWHXXPDX.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as FolderPicker,a as formatFolderLine};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-OEH4LU5L.js";import"./chunk-COJGXGKZ.js";import"./chunk-H5TNYYZW.js";import"./chunk-DKUD2D5Y.js";import"./chunk-VZ7KXRXB.js";import"./chunk-TDPWFYTJ.js";import"./chunk-NTEI2O3O.js";import"./chunk-IBPF5IM5.js";import"./chunk-TJR4R45C.js";import"./chunk-R7GMVPAF.js";import"./chunk-YCCUBQY4.js";import"./chunk-CJD3EEPT.js";import"./chunk-BPMSNGXQ.js";import"./chunk-VE3SUJMA.js";import"./chunk-TZXXJWHA.js";import"./chunk-RSSOJ3L2.js";import"./chunk-5EOX4MEY.js";import"./chunk-F5BI3ALG.js";import"./chunk-TAOHYWEO.js";import"./chunk-7RAIRUXO.js";import"./chunk-Z7S3IWUX.js";import"./chunk-IPZFZUJX.js";import"./chunk-H6KL3FSB.js";import"./chunk-DPUV6OSP.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-EYOCNMUM.js";import"./chunk-6MJGCETZ.js";import"./chunk-DWHXXPDX.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-367NASYK.js";import"./chunk-BVON52QL.js";import"./chunk-CCEXSCTN.js";import"./chunk-P7YZ3PU3.js";import"./chunk-TDPWFYTJ.js";import"./chunk-NTEI2O3O.js";import"./chunk-AROBXG66.js";import"./chunk-5Y2G4NC7.js";import"./chunk-R5PIIYN2.js";import"./chunk-MMBBQ4OZ.js";import"./chunk-OR6M5HCV.js";import"./chunk-MSGW4JDG.js";import"./chunk-RSSOJ3L2.js";import"./chunk-5EOX4MEY.js";import"./chunk-Z7S3IWUX.js";import"./chunk-4JOD47QI.js";import"./chunk-H6KL3FSB.js";import"./chunk-RZ4F3BHX.js";import"./chunk-EYOCNMUM.js";import"./chunk-HKCZ67AT.js";import"./chunk-SJBIXLL3.js";import"./chunk-DWHXXPDX.js";import"./chunk-DFS4RMVP.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as TestMdRunView};
|
package/dist/bridge-S3WZ4TH2.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-IDQBMC3B.js";import"./chunk-ZHB7V3NY.js";import"./chunk-WH5RVDD6.js";import"./chunk-UD7KKHPW.js";import"./chunk-DWHXXPDX.js";import"./chunk-UR6MHSHU.js";export{a as runAgent};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b,c}from"./chunk-IWVA37B6.js";import"./chunk-AXTPNZPX.js";import"./chunk-L2TV4G56.js";import"./chunk-IVQX3AKL.js";import"./chunk-NVGBE2DR.js";import"./chunk-UH2ZTX4E.js";import"./chunk-XMTSHHYQ.js";import"./chunk-DBIBROYW.js";import"./chunk-AKX4VRRR.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";export{c as makeChatController,b as questionStub,a as recommendationPicks};
|
package/dist/chunk-7UCICMK7.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as V,b as q,c as le,d as A}from"./chunk-2YQ6TW77.js";import{b as z}from"./chunk-5GUD3CIH.js";import{a as B}from"./chunk-BPMSNGXQ.js";import{a as M}from"./chunk-DPUV6OSP.js";import{a as F}from"./chunk-NLCCBXXV.js";import{a as L}from"./chunk-RZ4F3BHX.js";import{e as ce}from"./chunk-UR6MHSHU.js";import{readFileSync as oe,existsSync as j,readdirSync as Se,mkdirSync as U,writeFileSync as k}from"fs";import{readFile as ae,unlink as Te}from"fs/promises";import{join as E}from"path";import{existsSync as ye,mkdirSync as Re,readdirSync as ee,writeFileSync as Ae}from"fs";import{join as x}from"path";import{randomUUID as P}from"crypto";var ue="/home/kaneai/Downloads";function w(t){return`${ue}/${t}`}function K(t){return"FILE__"+t.replace(/[^A-Za-z0-9]/g,"_")}function C(t){let e=t?.media;return!e||!e.name||!e.media_url?null:{media_id:e.media_id??"",name:e.name,media_url:e.media_url,type:e.type??"doc"}}function H(t){return t?t.includes(`
|
|
3
|
-
`)?t.split(`
|
|
4
|
-
`).map(e=>e.trim()).filter(Boolean):t.split(". ").map(e=>e.trim()).filter(Boolean).map(e=>e.endsWith(".")?e:e+"."):[]}function T(t,e){return!t||!e?t:t.replace(/\{\{(.+?)\}\}/g,(o,i)=>{let n=e[i];return n?n.value:o}).replace(/\$\{(.+?)\}/g,(o,i)=>{let n=e[i];return n?n.value:o})}var de={click:"CLICK",double_click:"CLICK",type:"TYPE",fill:"TYPE",clear:"CLEAR",select:"SELECT",hover:"HOVER",drag:"DRAG_DROP",upload_files:"UPLOAD_FILE",navigate:"OPEN",go_back:"NAVIGATE",go_forward:"NAVIGATE",refresh:"REFRESH",press_key:"SENDKEYS",scroll:"SCROLL_PIXELS",scroll_into_view:"SCROLL_UNTIL_ELEMENT",wait:"WAIT",wait_until:"WAIT_UNTIL",wait_for_load:"WAIT_FOR_LOAD",switch_tab:"SWITCH_TAB",new_tab:"NEW_TAB",close_tab:"CLOSE_TAB",api:"API",evaluate_js:"EVALUATE_JS",vision_query:"VISION_QUERY",textual_query:"TEXTUAL_QUERY",get_url:"GET_URL",get_title:"GET_TITLE",assert:"ASSERTION",math:"MATHEMATICAL_OPERATION",set_cookies:"SET_COOKIES",delete_cookies:"DELETE_COOKIES",clear_cookies:"CLEAR_COOKIES",set_local_storage:"SET_LOCAL_STORAGE",delete_local_storage:"DELETE_LOCAL_STORAGE",clear_local_storage:"CLEAR_LOCAL_STORAGE",set_clipboard:"SET_CLIPBOARD",paste_clipboard:"PASTE_CLIPBOARD",clear_clipboard:"CLEAR_CLIPBOARD",device_control:"DEVICE_CONTROL",device_control_query:"DEVICE_CONTROL_QUERY"},X={literal:"SET_VARIABLE",condition:"SET_VARIABLE",visual:"VISION_QUERY",dom:"TEXTUAL_QUERY",url:"GET_URL",title:"GET_TITLE",devtool_network:"DEVTOOLS_NETWORK_QUERY",devtool_console:"DEVTOOLS_CONSOLE_QUERY",devtool_cookies:"DEVTOOLS_COOKIES_QUERY",devtool_storage:"DEVTOOLS_STORAGE_QUERY",devtool_performance:"DEVTOOLS_PERFORMANCE",api_response:"API_CALLS_QUERY",textual_visual:"TEXTUAL_ANALYZER"},_e=new Set(["CLICK","TYPE","FILL","HOVER","SCROLL_UNTIL_ELEMENT","UPLOAD_FILE","VISION_QUERY","DRAG_DROP","SELECT"]);function Y(t,e){if(t==="analyze"){let i=e?.action_params?.analyzer_type??"";return X[i]}if(t==="scroll"&&e?.action_params?.into_view===!0)return"SCROLL_UNTIL_ELEMENT";let o=de[t];return o||console.warn(`[migrator] UNKNOWN action_type "${t}" \u2014 falling back to "${t.toUpperCase()}"; explicit mapping required`),o??t.toUpperCase()}function W(t,e){if(!t||!e)return"";try{let o=new Date(t);return isNaN(o.getTime())?"":new Date(o.getTime()+e).toISOString()}catch{return""}}function J(t){try{return JSON.parse(t.output_value??"{}")}catch{return{}}}function pe(t){let e=t.output_variable??"";if(!e)return"[]";let i={...J(t)};return delete i.body,JSON.stringify([{name:e,unique_key:(t.action_id??"").replace(/-/g,"").slice(0,8)||P().replace(/-/g,"").slice(0,8),value:i,variable_description:"API Response"}])}function ge(t,e,o){let i=t.action_params??{},n=_e.has(e)?"Vision Agent":"Operation Agent",r={operation_type:e};if(e==="OPEN"&&(r.url=i.url??""),e==="SET_VARIABLE"&&(r.variable_name=t.output_variable??i.key??"",r.variable_value=t.output_value??""),e==="UPLOAD_FILE"){let m=C(i);m&&(r.value=w(m.name))}let s={},c={},a=t.action_instruction??"",l=i.text??"",u=i.url??"",p=[["intent",a],["value",l],["url",u]];for(let[m,h]of Object.entries(o)){let I=String(h);if(m.startsWith("secrets."))for(let[b,v]of p)v.includes(I)&&(c[b]=m);for(let[b,v]of p)v.includes(I)&&!(b in s)&&(s[b]=v)}let d=t.action_type,_={operation:t.action_instruction??"",agent:n,operation_dict:r,reasoning:d==="analyze"?i.query??"":t.intent??t.action_instruction??"",variable:s,secrets:c,params:{}};d==="analyze"&&typeof i.code=="string"&&i.code&&(_.code=i.code),d==="analyze"&&typeof i.code_js=="string"&&i.code_js&&(_.code_js=i.code_js),d==="analyze"&&typeof i.condition_expression=="string"&&i.condition_expression&&(_.condition_expression=i.condition_expression),i.uses_websocket===!0&&(_.uses_websocket=!0),i.uses_sse===!0&&(_.uses_sse=!0),d==="analyze"&&i.analyzer_type==="textual_visual"&&(typeof i.wrapped_js=="string"&&(_.wrapped_js=i.wrapped_js),Array.isArray(i.locators)&&(_.locators=i.locators),typeof i.operator=="string"&&(_.operator=i.operator),Array.isArray(i.transforms)&&(_.transforms=i.transforms),typeof i.query=="string"&&(_.query=i.query),typeof i.expected_value=="string"&&(_.expected_value=i.expected_value),typeof i.needs_unit_conversion=="boolean"&&(_.needs_unit_conversion=i.needs_unit_conversion),typeof i.condition=="string"&&(_.condition=i.condition));let f={set_cookies:"cookies",set_clipboard:"text",delete_cookies:"names",set_local_storage:"items",delete_local_storage:"keys"}[d];return f&&i[f]!==void 0&&(_[f]=i[f]),d==="set_clipboard"&&typeof i.html=="string"&&i.html&&(_.html=i.html),_}function fe(t){let e=t.assertion_tree??{};if(typeof e.passed=="boolean")return e.passed;let o=e.sub_results??[];return o.length===0?e.status==="passed":(e.composite_operator??"and")==="or"?o.some(n=>n.passed===!0):o.every(n=>n.passed===!0)}function Z(t){return t.map(e=>({description:e.description??"",store_key:e.store_key??"",expected_value:e.expected??"",extracted_value:e.extracted_value??"",operator:e.operator??"equals",transforms:e.transforms??[]}))}function me(t){let e=t.assertion_tree??{},o=e.sub_results??[],i=Z(o);return{operator:[],assertion_operands:[],left_operand:null,right_operand:null,operands:[],sub_results:o,sub_checks:i,composite_operator:e.composite_operator??"and",verification:e.verification??"",claim:e.description??""}}function he(t){let o=(t.action_params??{}).assertion_tree??{},i=o.sub_results??[],n=Z(i);return[{operation:t.action_instruction??"",agent:"Operation Agent",operation_dict:{operation_type:"ASSERTION",assertion_tree:{sub_results:i,sub_checks:n,composite_operator:o.composite_operator??"and",verification:"",claim:o.description??t.action_instruction??"",operator:[],assertion_operands:[],left_operand:null,right_operand:null,operands:[]}},variable:{},secrets:{},params:{}}]}function Ee(t,e,o,i){let n=t.visual_data;if(!n||n.x==null||n.y==null)return null;let r=e?`${e}/test_screenshots`:"";return{x:n.x,y:n.y,confidence:0,bbox:n.bbox??null,bbox_source:n.bbox?"accessibility_tree":"fallback",viewport_width:n.viewport_width??1280,viewport_height:n.viewport_height??800,scale_factor:null,raw_image_url:r?`${r}/untagged_screenshot/${o}.${i?.get(o)??"png"}`:"",raw_image_sas_url:"",annotated_image_url:"",annotated_image_sas_url:""}}function be(t){if(!t)return"";let e=t;return typeof t=="object"&&!Array.isArray(t)&&Array.isArray(t.frameInfo)&&(e=t.frameInfo),!Array.isArray(e)||e.length===0?"":JSON.stringify(e)}function Ie(t){return/^(android|ios)_native$/i.test(t.platform??"")}function $(t,e={},o="",i){let n=t.action_type,r=Y(n,t),s=t.action_params??{},c=t.coordinates??null,a=t.selectors??null,l=!!(a&&a.length>0),u=Ie(t),p=t.timestamp??"",d=t.duration_ms??0,_=t.variables_used??{},g=t.action_id??P(),f=P(),m=W(p,d),h="",I="";if(n==="navigate")I=s.url??"",h=I;else if(n==="type"||n==="fill")h=s.text??"";else if(n==="press_key")h=s.key??"";else if(n==="wait")h=String(s.ms??s.timeout_ms??"");else if(n==="evaluate_js")h=s.script??"";else if(n==="upload_files"){let R=C(s);R&&(h=w(R.name))}else n==="analyze"&&r==="SET_VARIABLE"&&(h=t.output_value??"");let b="";n==="go_back"?b="back":n==="go_forward"&&(b="forward");let v=T(h,e),O=T(I,e),y=T(t.action_instruction??"",e),S=ge(t,r,_);return{operation_id:g,instruction_id:f,instruction:y,intent:y,operation_start:p,operation_end:m,status:t.status??"",command:r,name:"",target:"",value:v,message:"",operation_dict:"",frame:be(t.frame_info),error_message:t.error??"",code_snippet:"",sub_instruction_obj:JSON.stringify(S),test_id:"",test_version:"",action:"",string_to_float:!1,feedback_msg:"",time_taken:"",create_time_stamp:"",update_time_stamp:"",locator_variable:"",locator_variable_name:"",image_url:o?`${o}/test_screenshots/untagged_screenshot/${g}.${i?.get(g)??"png"}`:"",alternative_xpaths:[],attribute:"",value_description:"",url:O,navigation_direction:b,tagified_image_url:"",query_variable_name:t.output_variable??"",query_variable_value:t.output_value??"",query_variable_type:"",expected_value:"",queried_value:"",operator:"",assertion_status:r==="ASSERTION"?fe(s):"",query_info_dict:{},query_content_confidence:"none",debugging_logs:[],locator_index:0,query_html:"",user_variables:"[]",optional_flag:!1,max_retries:0,retries_delay:0,explicit_wait:0,implicit_wait:0,tab_index:String(s.tab_index??""),tab_identifier:String(s.tab_identifier??""),scroll_value:s.amount??1,scroll_direction:s.direction??"",mi_scroll_payload:{},sleep_duration:0,app_id:"",manual_interaction_tag:"",string_to_float_list:[],js_snippet:n==="evaluate_js"?s.script??"":"",code_error:"",hide:!1,dismiss_dialog:!1,use_v2_mobile_tagging:u,multiple_inputs:!1,dialog_action:"",dialog_type:"",is_coordinates_used_for_interaction:c!==null&&!l,element_coordinates_ratio:[],element_bounds_ratio:[],x_coord:l?null:c?.x??null,y_coord:l?null:c?.y??null,target_x_coord:s.target_x??null,target_y_coord:s.target_y??null,source_description:s.source_description??null,target_description:s.target_description??null,use_coordinates:c!==null&&!l,kaneaiMobileTaggingImageLimit:1,clicks_order_code:"se_js_ac",selector:l?a.map(R=>({...R,type:u?R.strategy??R.type??"native":R.isXPath?"xpath":"css"})):"",selector_target:"",math_result_variable_name:"",math_result_variable_value:"",expression_tree:r==="ASSERTION"?me(s):s.expression_tree??{},assertion_tree:s.assertion_tree??{},assertion_tree_simplified:{},network_throttle:{},is_mobile_offline:!1,autoheal:!1,reprobe:t.reprobe??!1,click_modifier:(s.click_count??1)>=2?{kind:"multi_click",frequency:s.click_count}:null,db_query:"",db_details:{},db_query_decoded:"",is_global_variable:!1,is_global_variable_persist:!1,global_variable_id:"",wait_for_element_timeout:0,failure_condition:r==="ASSERTION"?"Fail test immediately":"",screenshot_command:"",smartui_contents:{},smartui_results:{},result_type:"",result_hint:"",drag_offset:{},start_coordinates:s.source_coordinates?{x:s.source_coordinates[0],y:s.source_coordinates[1]}:{},end_coordinates:s.target_coordinates?{x:s.target_coordinates[0],y:s.target_coordinates[1]}:{},element_rect:null,is_canvas:!1,until_condition:"",until_max_retries:0,until_settle_ms:0,api_data:n==="api"?{request:t.action_params?.api_data?.request??{}}:{},output_variables:n==="api"?t.output_variable?{[t.output_variable]:null}:{}:t.output_variable?{[t.output_variable]:t.output_value??""}:{},visual_context:Ee(t,o,g,i),reasoning:n==="analyze"?s.query??"":t.intent??t.action_instruction??""}}function G(t,e,o={}){let i=t.action_type,n=Y(i,t),r=t.timestamp??"",s=t.duration_ms??0,c=W(r,s),a=n==="ASSERTION"||n==="MATHEMATICAL_OPERATION";return{instruction_id:e.instruction_id,instruction_class:a?"non_driver_action":"driver_action",module_id:"",instruction:T(t.action_instruction??"",o),command:n,error:null,parent_instruction_id:"",classification_layer_resp:n==="ASSERTION"?he(t):[],classification_error:{},operations:[e],status:t.status??"",start_timestamp:r,end_timestamp:c,type:"agent_generated",tags:[],html_paths:[],optional_flag:!1,max_retries:0,retries_delay:0,explicit_wait:0,implicit_wait:0,content_type:i==="api"?"api":i==="analyze"&&t.action_params?.analyzer_type==="api_response"?"api_calls_query":i==="analyze"&&t.action_params?.analyzer_type?.startsWith("devtool_")?t.action_params.analyzer_type.replace("devtool_","devtools_"):"instruction",js_snippet:i==="evaluate_js"?t.action_params?.script??"":"",user_variables:i==="api"?pe(t):"[]",api_data:i==="api"?{request:t.action_params?.api_data?.request??{},response:J(t)}:{},params_used:!1,hard_assertion:n==="ASSERTION"?t.action_params?.failure_condition==="hard":!1,expected_outcome:"",module_execution_index:0,module_version:null,network_throttle:{},isEdited:!1,use_query_assertion_v2:!1,db_query:"",db_details:{},network_assertion_content:{},screenshot_command:"",smartui_contents:{},generative_id:"",plan_id:"",generative_objective:"",error_message:"",error_code:"",reason:"",title:"",used_variables:[],reasoning:i==="analyze"?t.action_params?.query??"":t.intent??t.action_instruction??""}}function ve(t,e=[]){let o=t.action_params??{},i=o.branches??[],n=o.winning_index??-1,r=o.sub_results??[],s={};for(let a of r){let l=a.sub_results;if(l)for(let u of l){let p=u.store_key;p&&(s[p]=u)}}let c=i.map((a,l)=>{let u=l===n,p=(a.sub_checks??[]).map(d=>{let _=s[d.store_key];return{description:d.description,store_key:d.store_key,expected_value:d.expected_value,stored_value:_?.extracted_value??d.stored_value,operator:d.operator??_?.operator??"equals",transforms:d.transforms??_?.transforms??[]}});if(p.length===0&&a.condition&&r.length>0){let _=r.find(g=>g.branch_index===l)?.sub_results??[];_.length>0&&(p=_.map(g=>({description:g.description??a.condition,store_key:g.store_key??"",expected_value:g.expected??"true",stored_value:g.extracted_value??void 0,operator:g.operator??"equals",transforms:g.transforms??[]})))}return{branch_index:l,condition:a.condition??null,branch_type:a.branch_type??"sub_objective",passed:u,sub_objective:null,custom_event:a.custom_event??null,children:u?e:[],sub_checks:a.condition?p:[],composite_operator:a.composite_operator??"and"}});return{content_type:"conditional_block",instruction_id:`if_else_${P().slice(0,8)}`,instruction:t.action_instruction??"",instruction_class:"driver_action",command:"",status:t.status??"success",resolved_branch_index:n,branches:c,generative_id:"",generative_objective:"",variables_used:{},classification_layer_resp:[],classification_error:{},used_variables:[],user_variables:"[]",module_id:"",module_execution_index:0,module_version:"",plan_id:"",optional_flag:!1,max_retries:0,retries_delay:0,explicit_wait:0,implicit_wait:0,error:null,error_message:"",error_code:"",reason:"",start_timestamp:t.timestamp??"",end_timestamp:"",type:"agent_generated",hook:null,hook_type:null,evaluation_context:{},query_variables:{}}}function Q(t,e,o){for(let i of t)i.content_type==="instruction"&&"generative_id"in i&&(i.generative_id=e,i.generative_objective=o)}function D(t,e={},o="",i,n){let r=[],s=0;for(;s<t.length;){let c=t[s],a=c.action_type;if(!n?.keepFailedActions&&c.status==="error"&&a!=="assert"&&a!=="if_else"&&a!=="child_agent_start"&&a!=="child_agent_end"&&!(c.until_condition&&!c.error)){s+=1;continue}if(a==="analyze"&&(!X[c.action_params?.analyzer_type??""]||c.action_params?.analyzer_type==="textual_visual"&&c.action_params?.code)){s+=1;continue}if(a==="child_agent_start"){let l=c.action_params?.child_id??"",u=c.action_params?.objective??"",p=[];s+=1;let d=1,_="error",g;for(;s<t.length&&d>0;){let y=t[s],S=y.action_type;if(S==="child_agent_start")d+=1;else if(S==="child_agent_end"&&(d-=1,d===0)){_=y.status??"success",g=y,s+=1;break}d>0&&p.push(y),s+=1}let f=D(p,e,o,i);Q(f,l,u);let m=g?.action_params?.result_code??null,h=g?.action_params?.reason_code??null,I=g?.action_params?.error_message??null,b=g?.action_params?.summary??null,v=g?.action_params?.one_liner??null,O=_==="error";r.push({content_type:"generative_block",instruction_id:`generative_block_${l}`,generative_id:l,objective:u,status:_,children:f,error_message:O?I??null:null,error_code:O?h??null:null,result_code:m??null,bifurcation_context:[],approach_reason:H(b),one_liner:v??null});continue}else if(a==="child_agent_end"){s+=1;continue}else if(a==="if_else"){s+=1;let l=[];for(;s<t.length&&t[s].action_type==="child_agent_start";){let u=t[s],p=u.action_params?.child_id??"",d=u.action_params?.objective??"",_=[];s+=1;let g=1,f="error";for(;s<t.length&&g>0;){let h=t[s];if(h.action_type==="child_agent_start")g+=1;else if(h.action_type==="child_agent_end"&&(g-=1,g===0)){f=h.status??"success",s+=1;break}g>0&&_.push(h),s+=1}let m=D(_,e,o,i);l.push(...m)}r.push(ve(c,l));continue}else if(a==="query_tool"){s+=1;continue}else if(c.until_condition){let l=$(c,e,o,i),u=G(c,l,e),p=typeof c.until_condition_met=="boolean"?c.until_condition_met:c.status==="success";r.push({content_type:"until_block",instruction_id:`until_${P().slice(0,8)}`,condition:c.until_condition,max_retries:c.until_max_retries??10,settle_ms:c.until_settle_ms??500,current_count:0,condition_met:p,children:[u],generative_id:"",generative_objective:"",variables_used:{},status:c.status??"success"})}else{let l=$(c,e,o,i),u=G(c,l,e);r.push(u)}s+=1}return r}function N(t,e={},o="",i,n){let r=[];for(let s of t){let c=D(s.records,e,o,i,n);if(c.length===0)continue;let a=P().replace(/-/g,"");Q(c,a,s.objective);let l=c.some(_=>"status"in _&&typeof _.status=="string"?_.status==="error"||_.status==="failed":!1),u=s.resultCode?parseInt(s.resultCode,10):null,p=u!==null&&!isNaN(u)&&u>=200,d=l||p?"error":"success";r.push({content_type:"generative_block",instruction_id:`generative_block_${a}`,generative_id:a,objective:s.objective,status:d,children:c,error_message:d==="error"?s.errorMessage??null:null,error_code:d==="error"?s.reasonCode??null:null,result_code:s.resultCode??null,bifurcation_context:[],approach_reason:H(s.summary),one_liner:s.oneLiner??null})}return{instructions:r}}function te(t,e){let o;try{o=ee(t)}catch{return 0}let i=0,n=o.filter(r=>/^\d+$/.test(r)).sort((r,s)=>Number(r)-Number(s));for(let r of n){let s=x(t,r),c=x(s,"logs");if(!ye(c))continue;let a;try{a=ee(c)}catch{continue}let l=a.filter(d=>d.endsWith("-actions.ndjson")).sort((d,_)=>(parseInt(d,10)||0)-(parseInt(_,10)||0)),u=[];for(let d of l){let _=e.readActions(x(c,d));_.length&&u.push({objective:e.objective??"",records:_})}if(u.length===0)continue;let{instructions:p}=N(u,e.vars??{},e.screenshotBaseUrl??"",e.extMap,{keepFailedActions:!0});if(p.length!==0)try{let d=x(s,"auteur");Re(d,{recursive:!0}),Ae(x(d,"execution.json"),JSON.stringify(e.buildBlob(p),null,2)),i++,e.log?.("info","EVIDENCE_ARCHIVED_ATTEMPT_BLOB","Derived nested attempt blob",{attempt:r,instructions:p.length})}catch(d){e.log?.("debug","EVIDENCE_ARCHIVED_ATTEMPT_BLOB_FAILED","Nested attempt blob derivation failed",{attempt:r,error:d instanceof Error?d.message:String(d)})}}return i}var ie=ce(le(),1);import{createWriteStream as Pe}from"fs";import{readFile as Le}from"fs/promises";import{join as Ne,basename as xe}from"path";import{tmpdir as ke}from"os";var Oe=["**/screenshots/**","**/annotated/**","**/tcg/**","**/bifurcation/**"];async function ne(t){let e=Ne(ke(),`${xe(t)}_artifacts.zip`);return new Promise((o,i)=>{let n=Pe(e),r=(0,ie.default)("zip",{zlib:{level:6}});n.on("close",()=>o(e)),r.on("error",i),r.pipe(n),r.glob("**/*",{cwd:t,ignore:Oe}),r.finalize()})}async function se(t){return Le(t)}async function we(t,e){return ae(z(t,e))}function Ce(t){return{key:"artifacts",content_type:"application/zip",filename:`${t}.evidence`}}var re=class{config;controller;testId;constructor(e){this.config=e,this.controller=new M(e.controllerBaseUrl,e.auth),this.testId=e.testId}log(e,o,i,n){this.config.log?.(e,o,i,n)}async execute(){let{onProgress:e}=this.config;try{if(!this.testId)return this.log("error","PIPELINE_ABORT","No test_id available"),{success:!1,testId:null,error:"No test_id available"};let o=this.config.evidence,i=null;if(this.config.shouldUploadArtifacts!==!1){e("convert","running");let c=this.collectNdjsonPerRun(),a=c.reduce((f,m)=>f+m.records.length,0);this.log("info","PIPELINE_CONVERT","Collected NDJSON records",{total_records:a,run_groups:c.length});let l=this.config.variables??{};this.log("info","PIPELINE_CONVERT_VARS","Variables for template resolution",{keys:Object.keys(l)});let{instructions:u}=c.length>0?N(c,l,this.config.screenshotBaseUrl??"",this.config.screenshotExtMap):{instructions:[]};this.log("info","PIPELINE_CONVERT_INSTRUCTIONS","Auteur instructions produced",{count:u.length});let p=this.buildExecutionEnvelope(u),d=Buffer.from(JSON.stringify(p));this.log("info","PIPELINE_CONVERT_BLOB","Blob created",{size_kb:+(d.length/1024).toFixed(1)});let _=E(this.config.sessionDir,"execution.json");k(_,JSON.stringify(p,null,2)),this.log("info","PIPELINE_CONVERT_LOCAL_SAVE","Execution blob saved locally",{path:_});let g=o?.packTestDir??this.config.evidenceRead?.packTestDir;if(g){let f=E(g,"auteur");U(f,{recursive:!0}),k(E(f,"execution.json"),JSON.stringify(p,null,2)),this.log("info","PIPELINE_CONVERT_PACK_COPY","Execution blob copied into pack",{path:E(f,"execution.json")}),this.deriveArchivedAttemptBlobs(g,l)}if(e("convert","done"),o)i=d;else{e("zip","running"),this.log("info","PIPELINE_ZIP_START","Zipping session",{session_dir:this.config.sessionDir});let f=null,m;try{f=await ne(this.config.sessionDir),m=await se(f),this.log("info","PIPELINE_ZIP_DONE","Zip complete",{size_mb:+(m.length/1024/1024).toFixed(1),path:f}),e("zip","done",`${(m.length/1024/1024).toFixed(1)}MB`)}finally{f&&await Te(f).catch(()=>{})}e("presign","running"),this.log("info","PIPELINE_PRESIGN_START","Requesting presigned URLs",{url:`${this.config.controllerBaseUrl}/upload/presign`,test_id:this.testId,session_id:this.config.sessionId});let h=await this.controller.getPresignedUrls(this.testId,this.config.sessionId,[{key:"artifacts",content_type:"application/zip",filename:`${this.config.sessionId}_artifacts.zip`},{key:"blob",content_type:"application/json",filename:`${this.config.commitId}.json`}]);this.log("info","PIPELINE_PRESIGN_OK","Presigned URLs received",{artifacts_url:h.urls.artifacts?.blob_url,blob_url:h.urls.blob?.blob_url}),e("presign","done"),e("upload","running"),this.log("info","PIPELINE_UPLOAD_START","Uploading artifacts and blob",{artifact_size_mb:+(m.length/1024/1024).toFixed(1),blob_size_kb:+(d.length/1024).toFixed(1)}),await Promise.all([A(h.urls.artifacts.upload_url,m,"application/zip"),A(h.urls.blob.upload_url,d,"application/json")]),this.log("info","PIPELINE_UPLOAD_OK","Upload complete"),e("upload","done")}}else{let c=this.collectNdjsonPerRun(),a=this.config.variables??{},{instructions:l}=c.length>0?N(c,a,this.config.screenshotBaseUrl??"",this.config.screenshotExtMap,{keepFailedActions:!0}):{instructions:[]},u=this.buildExecutionEnvelope(l),p=E(this.config.sessionDir,"execution.json");k(p,JSON.stringify(u,null,2)),this.log("info","PIPELINE_LOCAL_SAVE","Execution blob saved locally (no upload)",{path:p});let d=this.config.evidence?.packTestDir??this.config.evidenceRead?.packTestDir;if(d){let _=E(d,"auteur");U(_,{recursive:!0});let g=this.readAuthoredExecution();k(E(_,"execution.json"),g??JSON.stringify(u,null,2)),this.log("info","PIPELINE_CONVERT_PACK_COPY","Execution blob copied into pack (gated)",{path:E(_,"execution.json"),source:g?"authored":"run_envelope"}),this.deriveArchivedAttemptBlobs(d,a)}e("convert","skipped"),e("zip","skipped"),e("presign","skipped"),e("upload","skipped"),this.log("info","PIPELINE_UPLOAD_SKIPPED","Upload steps skipped (gate disabled)")}if(this.config.shouldReplaceLocalOutput&&this.config.onAtomicReplace){e("atomic_replace","running");try{await this.config.onAtomicReplace(),this.log("info","PIPELINE_ATOMIC_REPLACE_OK","Local output replaced"),e("atomic_replace","done")}catch(c){let a=c instanceof Error?c.message:String(c);throw this.log("error","PIPELINE_ATOMIC_REPLACE_FAILED","Atomic-replace failed",{error:a}),e("atomic_replace","failed",a),c}}else e("atomic_replace","skipped");let n,r;if(this.config.shouldCommit&&!this.config.isFirstRun&&this.config.onCommitLock){e("commit_lock","running");let c=await this.config.onCommitLock();if(c.ok)n=c.testcaseId,this.log("info","PIPELINE_COMMIT_LOCK_OK","Commit lock acquired",{testcase_id:n??"none"}),e("commit_lock","done");else return this.log("error","PIPELINE_COMMIT_LOCK_FAILED","Commit lock failed",{reason:c.reason,message:c.message}),e("commit_lock","failed",`${c.reason??"unknown"}: ${c.message??""}`),{success:!1,testId:this.testId,error:`commit-lock failed: ${c.reason??"unknown"}`}}else e("commit_lock","skipped");if(this.config.isFirstRun&&!this.config.skipTmsFinalize){e("finalize","running"),this.log("info","PIPELINE_FINALIZE_START","Finalizing test (first-run)",{test_id:this.testId,commit_id:this.config.commitId});let c=new B(this.config.tmsBaseUrl,this.config.tmsUsername,this.config.tmsAccessKey),a=this.config.runObjectives&&this.config.runObjectives.length>0?this.config.runObjectives:[this.config.firstObjective];if(n=(await c.endTest(this.testId,{commit_id:this.config.commitId,time_taken:Math.round(this.config.totalDuration),steps_count:this.config.totalSteps,commit_message:this.config.firstObjective.slice(0,255),objectives:a})).testcase_id||void 0,this.log("info","PIPELINE_FINALIZE_OK","Test finalized",{testcase_id:n??"none"}),this.config.onFinalizeSuccess)try{await this.config.onFinalizeSuccess(n)}catch(u){this.log("warn","PIPELINE_FINALIZE_META_FAILED","Meta-rewrite after endTest failed",{error:String(u)})}e("finalize","done")}else e("finalize","skipped"),this.log("info","PIPELINE_FINALIZE_SKIPPED","Finalize skipped (evolve flow or first-run disabled)");if(n&&this.config.shareApiBaseUrl)try{r=await this.generateShareLink(n),this.log("info","PIPELINE_SHARE_OK","Share link generated",{share_id:r})}catch(c){this.log("warn","PIPELINE_SHARE_FAILED","Share link failed",{error:String(c)})}if(o&&i){let c=null;e("zip","running");try{await o.sealFn({testcaseId:n,shareId:r}),c=o.sealedPackPath?await ae(o.sealedPackPath):await we(o.executionId,o.cwd),this.log("info","PIPELINE_EVIDENCE_SEALED","Evidence pack sealed",{execution_id:o.executionId}),this.log("info","PIPELINE_PACK_READ","Sealed pack read",{size_mb:+(c.length/1024/1024).toFixed(1)})}catch(a){let l=a instanceof Error?a.message:String(a);this.log("warn","PIPELINE_EVIDENCE_UPLOAD_SKIPPED","Evidence seal/read failed \u2014 uploading blob only",{execution_id:o.executionId,error:l})}if(c){e("zip","done",`${(c.length/1024/1024).toFixed(1)}MB`),e("presign","running");let a=await this.controller.getPresignedUrls(this.testId,this.config.sessionId,[Ce(o.executionId),{key:"blob",content_type:"application/json",filename:`${this.config.commitId}.json`}]);this.log("info","PIPELINE_PRESIGN_OK","Presigned URLs received",{artifacts_url:a.urls.artifacts?.blob_url,blob_url:a.urls.blob?.blob_url}),e("presign","done"),e("upload","running"),this.log("info","PIPELINE_UPLOAD_START","Uploading pack and blob",{artifact_size_mb:+(c.length/1024/1024).toFixed(1),blob_size_kb:+(i.length/1024).toFixed(1)}),await Promise.all([A(a.urls.artifacts.upload_url,c,"application/zip"),A(a.urls.blob.upload_url,i,"application/json")]),this.log("info","PIPELINE_UPLOAD_OK","Upload complete"),e("upload","done")}else{e("zip","skipped"),e("presign","running");let a=await this.controller.getPresignedUrls(this.testId,this.config.sessionId,[{key:"blob",content_type:"application/json",filename:`${this.config.commitId}.json`}]);e("presign","done"),e("upload","running"),this.log("info","PIPELINE_UPLOAD_START","Uploading blob only (evidence skipped)",{blob_size_kb:+(i.length/1024).toFixed(1)}),await A(a.urls.blob.upload_url,i,"application/json"),this.log("info","PIPELINE_UPLOAD_OK","Blob upload complete (pack skipped)"),e("upload","done")}}let s;if(this.config.mobile&&this.config.codeExport?.enabled)this.log("info","PIPELINE_CODE_EXPORT_SKIPPED","Code export is not supported for device runs"),e("code_export","skipped","not supported on mobile yet");else if(this.config.codeExport?.enabled&&n){let c=!1;try{await this.triggerCodeExport(n),this.log("info","PIPELINE_CODE_EXPORT_START","Code export triggered"),c=!0}catch(a){let l=a instanceof Error?a.message:String(a);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export trigger failed; skipping poll",{error:l}),e("code_export","failed",`trigger failed: ${l}`)}if(c){e("code_export","running","Waiting for code generation\u2026");try{s=await this.pollAndDownloadCode(n,e),this.log("info","PIPELINE_CODE_EXPORT_OK","Code export complete",{dir:s}),e("code_export","done",s)}catch(a){let l=a instanceof Error?a.message:String(a);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export failed",{error:l}),e("code_export","failed",l)}}}else e("code_export","skipped");return this.log("info","PIPELINE_COMPLETE","Pipeline complete"),{success:!0,testId:this.testId,testcaseId:n,shareId:r,codeExportDir:s}}catch(o){return{success:!1,testId:this.testId,error:o instanceof Error?o.message:String(o)}}}async runCodeExport(e,o){let i=o??this.config.onProgress,n=!1;try{await this.triggerCodeExport(e),this.log("info","PIPELINE_CODE_EXPORT_TRIGGER","Code export triggered",{testcase_id:e}),n=!0}catch(r){let s=r instanceof Error?r.message:String(r);this.log("error","PIPELINE_CODE_EXPORT_TRIGGER_FAILED","Code export trigger failed; skipping poll",{error:s}),i("code_export","failed",`trigger failed: ${s}`)}if(n){i("code_export","running","Waiting for code generation\u2026");try{let r=await this.pollAndDownloadCode(e,i);return this.log("info","PIPELINE_CODE_EXPORT_OK","Code export complete",{dir:r}),i("code_export","done",r),r}catch(r){let s=r instanceof Error?r.message:String(r);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export failed",{error:s}),i("code_export","failed",s);return}}}deriveArchivedAttemptBlobs(e,o){try{let i=te(e,{readActions:n=>this.readNdjsonFromFile(n),buildBlob:n=>this.buildExecutionEnvelope(n),objective:this.config.firstObjective,vars:o,screenshotBaseUrl:this.config.screenshotBaseUrl??"",extMap:this.config.screenshotExtMap,log:(n,r,s,c)=>this.log(n,r,s,c)});i>0&&this.log("info","PIPELINE_ARCHIVED_ATTEMPTS","Nested retry-attempt blobs derived",{count:i})}catch(i){this.log("debug","PIPELINE_ARCHIVED_ATTEMPTS_FAILED","Nested attempt blob pass failed",{error:i instanceof Error?i.message:String(i)})}}collectNdjsonPerRun(){let e=[],o=this.config.runObjectives??[],i=this.config.runMetadata??[],n=this.config.evidence??this.config.evidenceRead;for(let r=0;r<this.config.runDirs.length;r++){let s=this.config.runDirs[r],c=o[r]||this.config.firstObjective,a=i[r],l=n?this.readNdjsonFromFile(E(n.packTestDir,"logs",`${n.runIndices?.[r]??r}-actions.ndjson`)):this.readNdjsonFromDir(s);l.length>0&&e.push({objective:c,records:l,resultCode:a?.resultCode,reasonCode:a?.reasonCode,errorMessage:a?.errorMessage,summary:a?.summary,oneLiner:a?.oneLiner})}if(e.length===0){let r=E(this.config.sessionDir,"runs");if(j(r))try{let c=Se(r,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name).sort();for(let a of c){let l=E(r,a),u=this.readNdjsonFromDir(l);u.length>0&&e.push({objective:this.config.firstObjective,records:u})}}catch{}}return e}readNdjsonFromDir(e){let o=[E(e,"run-test","actions.ndjson"),E(e,"actions.ndjson")];for(let i of o)if(j(i))return this.readNdjsonFromFile(i);return[]}readNdjsonFromFile(e){let o=[];if(!j(e))return o;this.log("debug","PIPELINE_COLLECT_READ","Reading NDJSON file",{path:e});let i=oe(e,"utf-8");for(let n of i.split(`
|
|
5
|
-
`)){let r=n.trim();if(r)try{o.push(JSON.parse(r))}catch{}}return o}async generateShareLink(e){let o=`${this.config.shareApiBaseUrl}/lshs/api/v1.0/share-item/generate-sharable-link`;this.log("info","PIPELINE_SHARE_START","Requesting share link",{url:o,testcase_id:e});let i={method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({entityIds:[e],entityType:"Test Case Details",expiresAt:7})},n=!!this.config.authResolver;this.log("debug","PIPELINE_SHARE_AUTH","Share link auth config",{resolver:n,fallback_auth_type:typeof this.config.auth=="string"?"bearer":"basic",tms_user:this.config.tmsUsername});let r=n?await this.config.authResolver.fetch(o,i):await L(o,{...i,headers:{...i.headers,Authorization:this.buildAuthHeader()}});if(!r.ok)throw new Error(`Share link API failed: ${r.status} ${await r.text()}`);let s=await r.json();if(!s.shareId)throw new Error("Share link API returned no shareId");return s.shareId}async triggerCodeExport(e){if(!this.config.codeExport)throw new Error("triggerCodeExport called without resolved codeExport config");let{url:o,body:i}=V({tmsBaseUrl:this.config.tmsBaseUrl,testcaseId:e,codeExport:this.config.codeExport});this.log("info","PIPELINE_CODE_EXPORT_POST","Triggering code export",{url:o});let n={method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(i)},r=this.config.authResolver?await this.config.authResolver.fetch(o,n):await L(o,{...n,headers:{...n.headers,Authorization:this.buildAuthHeader()}});if(!r.ok)throw new Error(`Code export failed: ${r.status} ${await r.text()}`)}async pollAndDownloadCode(e,o){let i=q({tmsBaseUrl:this.config.tmsBaseUrl,testcaseId:e}),n=this.config.exitTimeoutMs??3e5,r=5e3,s=Date.now()+n;this.log("info","PIPELINE_CODE_EXPORT_POLL","Polling for code export",{url:i,timeout_ms:n});let c=(a,l)=>this.config.authResolver?this.config.authResolver.fetch(a,l):L(a,{...l,headers:{...l?.headers,Authorization:this.buildAuthHeader()}});for(;Date.now()<s;){let a=await c(i,{method:"GET",headers:{Accept:"application/json"}});if(!a.ok){let _=await a.text().catch(()=>"");throw this.log("warn","PIPELINE_CODE_EXPORT_POLL_FAILED","Code export poll non-200; skipping",{status:a.status,body:_.slice(0,200)}),new Error(`code export poll skipped: HTTP ${a.status}`)}let u=(await a.json()).data?.find(_=>_.code_name==="kane-cli-trigger");if(!u){this.log("debug","PIPELINE_CODE_EXPORT_WAITING","No kane-cli-trigger entry yet"),o("code_export","running","Waiting for code generation\u2026"),await this.sleep(r);continue}let p=u.status.toLowerCase();if(p==="in progress"||p==="in_progress"||p==="pending"){this.log("debug","PIPELINE_CODE_EXPORT_IN_PROGRESS","Code export in progress",{status:u.status}),o("code_export","running","Generating code\u2026"),await this.sleep(r);continue}if(!u.url||u.url.length===0)throw new Error(`Code export status=${u.status} but no files returned`);let d=this.config.codeExportDir??E(this.config.sessionDir,"code-export");U(d,{recursive:!0}),this.log("info","PIPELINE_CODE_EXPORT_DOWNLOAD","Downloading code files",{file_count:u.url.length,dir:d}),o("code_export","running",`Downloading ${u.url.length} files\u2026`);for(let _ of u.url){let g=E(d,_.file_name),f=await L(_.file_url);if(!f.ok){this.log("warn","PIPELINE_CODE_EXPORT_FILE_FAILED","Failed to download file",{file_name:_.file_name,status:f.status});continue}let m=await f.text();k(g,m,"utf-8"),this.log("info","PIPELINE_CODE_EXPORT_FILE_SAVED","File saved",{file_name:_.file_name,size_bytes:m.length})}return d}throw new Error("Code export timed out")}sleep(e){return new Promise(o=>setTimeout(o,e))}buildAuthHeader(){return typeof this.config.auth=="string"?`Bearer ${this.config.auth}`:F(this.config.auth.username,this.config.auth.accessKey)}readAuthoredExecution(){let e=this.config.authoredExecutionPath;if(!e)return null;try{let o=oe(e,"utf8");return JSON.parse(o),o}catch{return this.log("warn","PIPELINE_AUTHORED_BLOB_UNREADABLE","Authored execution.json missing/unreadable \u2014 pack gets this run's envelope",{path:e}),null}}buildExecutionEnvelope(e){let o=this.config.runStatuses.every(a=>a==="passed")?"success":"error",i=this.config.variableIds??{},n=[];if(this.config.variables)for(let[a,l]of Object.entries(this.config.variables)){if(l.secret)continue;let u=a.startsWith("global.")?a.slice(7):a;n.push({id:i[u]??0,name:u,value:l.value,session_value:l.value,is_persist:!1,environment_id:0,environment_name:"No Env"})}let r=[],s=[],c=new Set;for(let a of this.collectNdjsonPerRun())for(let l of a.records)if(l.output_variable&&l.output_value!=null&&r.push({name:l.output_variable,value:String(l.output_value),value_type:"test_level",variable_description:"ANALYZE result"}),l.action_type==="upload_files"){let u=C(l.action_params);if(u){let p=u.media_id||u.media_url;if(!c.has(p)){c.add(p),s.push({media_url:u.media_url,media_id:u.media_id,name:u.name,type:u.type});let d=w(u.name);r.push({name:K(u.name),value:d,value_type:"string",variable_description:`variable for ${d}`})}}}return{test_id:this.testId,version:"v4",auto_heal_version:this.config.apMode==="v2"?"AH2":"",session_id:this.config.sessionId,org_id:String(this.config.orgId),user_id:String(this.config.userId),url:this.config.firstUrl??"",start_timestamp:this.config.startedAt,end_timestamp:this.config.endedAt,status:o,commit_id:this.config.commitId,instructions:e,modules:[],uploaded_files:s,test_params:[],test_level_variables:JSON.stringify(r),test_global_variables:n,max_network_wait:0,wait_buffer:0,network_throttle:{},secrets:this.config.secrets??[],totp:[],environment_id:0,environment:"",mobile_browser:!1,native_popups:[],smartui:{},module_index:0}}};export{we as a,Ce as b,re as c};
|