@testmuai/kane-cli 0.8.11 → 0.8.13
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-YFJDAXOG.js → ChatSurface-B6ZIO3JL.js} +1 -1
- package/dist/{ChromeProfilePicker-PUCZN6WU.js → ChromeProfilePicker-QSICCUMV.js} +1 -1
- package/dist/{CliFeedbackPrompt-JAIB5MHS.js → CliFeedbackPrompt-LLLNSKW2.js} +1 -1
- package/dist/{CliUploadProgress-53LQMQJD.js → CliUploadProgress-N5IY66T2.js} +1 -1
- package/dist/{ConfigView-7HFP4OXS.js → ConfigView-UQIRPENS.js} +1 -1
- package/dist/EvidenceViewOffer-AZRAILJQ.js +2 -0
- package/dist/FolderPicker-OJFR7AKZ.js +2 -0
- package/dist/{InfoBox-62YG3YNQ.js → InfoBox-ZGSLEOPE.js} +1 -1
- package/dist/{LinksBox-6NS3GHWO.js → LinksBox-JFT44YUK.js} +1 -1
- package/dist/{ProfilesView-HIKK2HPC.js → ProfilesView-WZSPK3HF.js} +1 -1
- package/dist/{ProjectPicker-2CJMO5TD.js → ProjectPicker-SBBGVF4L.js} +1 -1
- package/dist/{SaveSessionPrompt-4DTPZSXD.js → SaveSessionPrompt-F3563T3C.js} +1 -1
- package/dist/SingleShotApp-72D5VVLE.js +2 -0
- package/dist/{SummaryBox-A6LKKQXJ.js → SummaryBox-6N6NESLI.js} +1 -1
- package/dist/TestMdRunView-4OA52DA2.js +2 -0
- package/dist/{TestrunEvidenceTable-7SCCTZPH.js → TestrunEvidenceTable-JLJBJ76Q.js} +1 -1
- package/dist/{WhoamiView-PDMQ6F5N.js → WhoamiView-PNVUCWLB.js} +1 -1
- package/dist/{app-download-K2ELUXWR.js → app-download-NNB52ZRJ.js} +1 -1
- package/dist/{auth-5WJSFLCP.js → auth-JIDDELKY.js} +1 -1
- package/dist/{binary-QVQRWQFK.js → binary-LXYAW7WQ.js} +1 -1
- package/dist/{bind-5WELCZ4S.js → bind-F36JFHUK.js} +3 -3
- package/dist/{bootstrap-3LNHRDQH.js → bootstrap-THOC3SS7.js} +1 -1
- package/dist/bridge-KMDML2NB.js +2 -0
- package/dist/{changelog-TK6DWFVW.js → changelog-BSMZXLTG.js} +1 -1
- package/dist/{chat-committer-MAW25ICC.js → chat-committer-RAOIL2T6.js} +1 -1
- package/dist/chat-controller-YJCNU76T.js +2 -0
- package/dist/chunk-2X3TANEV.js +2 -0
- package/dist/chunk-33GXXC2L.js +2 -0
- package/dist/{chunk-X6WB2QTT.js → chunk-3FXNQTCE.js} +1 -1
- package/dist/{chunk-NVRXDLJN.js → chunk-3M2D7UUI.js} +1 -1
- package/dist/{chunk-WRVDIZAI.js → chunk-3SP4JVDN.js} +2 -2
- package/dist/{chunk-A4BDLZOD.js → chunk-477DYMXZ.js} +1 -1
- package/dist/{chunk-2ZBY2GME.js → chunk-4PARDPK2.js} +1 -1
- package/dist/{chunk-T4OJX2GZ.js → chunk-4WOVHRI2.js} +1 -1
- package/dist/{chunk-3D7VYEDP.js → chunk-54JZ6VEW.js} +1 -1
- package/dist/{chunk-QHSF2CXK.js → chunk-5G22NOZK.js} +1 -1
- package/dist/{chunk-HFRMJP2P.js → chunk-6AZNGOLH.js} +1 -1
- package/dist/{chunk-FYLMTZ3J.js → chunk-6FCPS2VT.js} +1 -1
- package/dist/{chunk-NLSR2IFN.js → chunk-6IAA644J.js} +1 -1
- package/dist/{chunk-CABRAZOL.js → chunk-6J635CRI.js} +1 -1
- package/dist/{chunk-3PMEHGH3.js → chunk-7GUFVQOQ.js} +1 -1
- package/dist/{chunk-M3Q7IQMS.js → chunk-7KIIM6H7.js} +1 -1
- package/dist/{chunk-7P3JGF2X.js → chunk-AGRUULPT.js} +1 -1
- package/dist/{chunk-GSNGC7HI.js → chunk-AIVOYTYQ.js} +1 -1
- package/dist/{chunk-A76UL3EN.js → chunk-AQWTK6IN.js} +1 -1
- package/dist/{chunk-5NBT5IVT.js → chunk-ARU6KAGY.js} +1 -1
- package/dist/{chunk-XYSFPVJX.js → chunk-BJAHVN2F.js} +1 -1
- package/dist/{chunk-B7TJIUKZ.js → chunk-BTBUIL4Q.js} +1 -1
- package/dist/{chunk-OZMYKG6E.js → chunk-BZTWTYQQ.js} +1 -1
- package/dist/{chunk-AXW3WDFO.js → chunk-CAO3XRA2.js} +1 -1
- package/dist/{chunk-2QSG5ZG6.js → chunk-CUSTYILP.js} +1 -1
- package/dist/{chunk-4AZ7IG2A.js → chunk-D4G3SEBU.js} +1 -1
- package/dist/chunk-DHJSM5DT.js +2 -0
- package/dist/chunk-DIM5X2FR.js +52 -0
- package/dist/{chunk-URLZULC7.js → chunk-DMLYUTS4.js} +1 -1
- package/dist/{chunk-TB2CCKL7.js → chunk-DXFMELKC.js} +1 -1
- package/dist/{chunk-OKBEMFAW.js → chunk-EEFZXZTZ.js} +1 -1
- package/dist/{chunk-DP7GPS6S.js → chunk-EV64VI66.js} +1 -1
- package/dist/{chunk-CBLUNSF4.js → chunk-EXLXV5OU.js} +1 -1
- package/dist/{chunk-4SXJKDHO.js → chunk-F5AI3UVS.js} +2 -2
- package/dist/{chunk-NYUMJDCE.js → chunk-FE6XRABM.js} +1 -1
- package/dist/{chunk-HJBORIFP.js → chunk-FNIL4G3V.js} +3 -3
- package/dist/{chunk-4VZRBBLF.js → chunk-FUP4AP6J.js} +12 -12
- package/dist/{chunk-5LEO463W.js → chunk-GILD6RGH.js} +1 -1
- package/dist/{chunk-SNKFWPEM.js → chunk-I27YRAGO.js} +2 -2
- package/dist/{chunk-OC7TJTQG.js → chunk-I75FRXKE.js} +1 -1
- package/dist/{chunk-B7K5WOOU.js → chunk-IVQX3AKL.js} +1 -1
- package/dist/{chunk-ZES42R57.js → chunk-IWVA37B6.js} +1 -1
- package/dist/{chunk-W4IRHQGO.js → chunk-IZU5ND2C.js} +1 -1
- package/dist/{chunk-G5ZGEZCA.js → chunk-J2UN2AHO.js} +1 -1
- package/dist/chunk-J3Q63NFG.js +2 -0
- package/dist/{chunk-2E55VQYA.js → chunk-JX2CAVX6.js} +1 -1
- package/dist/{chunk-4FXSDPQW.js → chunk-K2UEVCIJ.js} +1 -1
- package/dist/{chunk-ASK4AZFC.js → chunk-K4SULRBL.js} +1 -1
- package/dist/{chunk-Z6GMZOVL.js → chunk-K6RAOZHP.js} +3 -3
- package/dist/{chunk-S63XGGBE.js → chunk-KAZGHWGK.js} +1 -1
- package/dist/{chunk-Z4QLCWLB.js → chunk-KGKJU27A.js} +1 -1
- package/dist/{chunk-NP3VGFZM.js → chunk-KO3FL2XW.js} +1 -1
- package/dist/{chunk-VUOAFV27.js → chunk-KSLJOUH4.js} +1 -1
- package/dist/{chunk-DHWS7SLT.js → chunk-KV5BOFPK.js} +2 -2
- package/dist/{chunk-W7NI6JCF.js → chunk-KXUTO5WC.js} +1 -1
- package/dist/{chunk-CQKKDIKA.js → chunk-L32DKFRQ.js} +1 -1
- package/dist/{chunk-XB7EMX6J.js → chunk-LAQBCZ5A.js} +1 -1
- package/dist/{chunk-O7RB4X6I.js → chunk-LPDBTGO5.js} +2 -2
- package/dist/{chunk-F7R6A6P5.js → chunk-LWQNRZH3.js} +1 -1
- package/dist/{chunk-QIRZBOKA.js → chunk-MCKBJIBB.js} +1 -1
- package/dist/chunk-MXDWS7S4.js +368 -0
- package/dist/{chunk-OGJ6ZSLC.js → chunk-N2I23ANS.js} +1 -1
- package/dist/{chunk-6GH4DRKR.js → chunk-N7Z7BQYO.js} +1 -1
- package/dist/{chunk-FIODM24X.js → chunk-NM76SG3S.js} +1 -1
- package/dist/{chunk-4VYWTTT4.js → chunk-NU45ROHH.js} +2 -2
- package/dist/{chunk-BE4FBVKY.js → chunk-NUWOQS6L.js} +1 -1
- package/dist/{chunk-YELGHSVH.js → chunk-O5U6EAL3.js} +1 -1
- package/dist/{chunk-YSNBXUM6.js → chunk-OHK6V7JX.js} +1 -1
- package/dist/{chunk-KRL2BDI5.js → chunk-OTMAFCZK.js} +2 -2
- package/dist/{chunk-47WY2637.js → chunk-P5MJMM3X.js} +58 -57
- package/dist/{chunk-CL3AMEK6.js → chunk-PUM5J56E.js} +1 -1
- package/dist/{chunk-3FJNTRAS.js → chunk-PWRIG6UB.js} +1 -1
- package/dist/{chunk-Y4ODYIOP.js → chunk-PYQS5ST6.js} +1 -1
- package/dist/{chunk-GV5BX2IQ.js → chunk-Q4YAJJPP.js} +1 -1
- package/dist/{chunk-VGLY4HWA.js → chunk-QD2BUO5M.js} +1 -1
- package/dist/{chunk-IX4FH5W6.js → chunk-RN5ERSV2.js} +1 -1
- package/dist/{chunk-6DOS5CJ5.js → chunk-SEKJZOKW.js} +1 -1
- package/dist/{chunk-YQ4MRF57.js → chunk-T7DGNWI2.js} +4 -4
- package/dist/{chunk-K6BWPGBO.js → chunk-TDNM22BQ.js} +1 -1
- package/dist/{chunk-7HUJVIMO.js → chunk-TMRLBSIA.js} +2 -2
- package/dist/{chunk-FQRWYXFG.js → chunk-TXZ66K4Q.js} +1 -1
- package/dist/{chunk-GMXM4WHF.js → chunk-UF4JZXEE.js} +1 -1
- package/dist/{chunk-TYRTD5DD.js → chunk-UH2ZTX4E.js} +1 -1
- package/dist/{chunk-JAO7TZBV.js → chunk-UZCSVEWP.js} +1 -1
- package/dist/{chunk-7B7OSHPX.js → chunk-VJ3ES3RR.js} +1 -1
- package/dist/{chunk-CRPBARFG.js → chunk-VYMMGWVO.js} +1 -1
- package/dist/chunk-W2UYUV47.js +27 -0
- package/dist/{chunk-R4EGL7VM.js → chunk-W3Z7AZNT.js} +1 -1
- package/dist/{chunk-HULEZ3D3.js → chunk-WIAZN7G4.js} +1 -1
- package/dist/chunk-WUV3FJ7C.js +11 -0
- package/dist/{chunk-DJJO4IHY.js → chunk-XAM5E27U.js} +1 -1
- package/dist/{chunk-OKCULEBD.js → chunk-XH2KDLZO.js} +1 -1
- package/dist/{chunk-TSW5A7W3.js → chunk-XL6HDWM3.js} +1 -1
- package/dist/{chunk-OXHMUZJV.js → chunk-XMTSHHYQ.js} +1 -1
- package/dist/{chunk-ZMJD3CI7.js → chunk-XS3HIVNS.js} +1 -1
- package/dist/{chunk-DLJIML73.js → chunk-YEZYO5QH.js} +1 -1
- package/dist/{chunk-7KRCBN6X.js → chunk-ZOSY2PJM.js} +1 -1
- package/dist/{committer-42AFWMEX.js → committer-C6UCDYMC.js} +1 -1
- package/dist/{config-KU2UICMC.js → config-BCGD2FEX.js} +1 -1
- package/dist/{controller-client-OB4WD2C4.js → controller-client-ZF5IXRUV.js} +1 -1
- package/dist/{cover-cmd-HAOBK2IC.js → cover-cmd-5LPHIOSI.js} +1 -1
- package/dist/{credentials-BEC4I5SE.js → credentials-YNH5BU2Z.js} +1 -1
- package/dist/{deps-bundle-EY5T7OH3.js → deps-bundle-LOFI4DAJ.js} +1 -1
- package/dist/{deps-resolve-MPLFFCZZ.js → deps-resolve-GA6IPHVZ.js} +1 -1
- package/dist/design-committer-UPC6NZUF.js +2 -0
- package/dist/dispatch-FRCPK3AZ.js +2 -0
- package/dist/{doctor-JBXA6WNL.js → doctor-W5TQBYB5.js} +1 -1
- package/dist/docx-convert-BIV5T7F5.js +1 -1
- package/dist/{dossier-WSWXZAPL.js → dossier-Y6TJWFZU.js} +1 -1
- package/dist/{evidence-MJV3PY2J.js → evidence-FHO36EEV.js} +1 -1
- package/dist/evolve-cmd-6RXLKERE.js +2 -0
- package/dist/explain-3HAZY7Q6.js +2 -0
- package/dist/{explain-cmd-BXFR5DB6.js → explain-cmd-RMJPXD4U.js} +1 -1
- package/dist/{explain-cmd-IRQ2YX5L.js → explain-cmd-XCRO4AS6.js} +1 -1
- package/dist/{extract-bind-PPMY4FFA.js → extract-bind-BFJPRNPQ.js} +3 -3
- package/dist/{extract-cmd-RHVLPNQB.js → extract-cmd-7FKQJNS7.js} +2 -2
- package/dist/{feeder-52VBZY3R.js → feeder-IOR3XRNF.js} +1 -1
- package/dist/{gaps-cmd-MSDGU6OU.js → gaps-cmd-FDJ3PT4C.js} +1 -1
- package/dist/{generate-headless-NSK32S53.js → generate-headless-OBMB5CSB.js} +2 -2
- package/dist/index.js +183 -119
- package/dist/ingest-TTUQ7UDK.js +2 -0
- package/dist/ingest-cmd-AV66Q5LC.js +2 -0
- package/dist/install-SFJ2FFQ6.js +2 -0
- package/dist/{interactive-bind-4FNW3OYT.js → interactive-bind-N5AQB26T.js} +4 -4
- package/dist/{lifecycle-cmd-HYNG5KH6.js → lifecycle-cmd-KSMETBPP.js} +1 -1
- package/dist/{list-cmd-Y4WEOT3E.js → list-cmd-V3HJ5K4O.js} +1 -1
- package/dist/list-commands-SH4HPFI4.js +2 -0
- package/dist/{logical-ids-N3UZACB4.js → logical-ids-MLXAH45L.js} +1 -1
- package/dist/login-flow-ODVWEPRU.js +2 -0
- package/dist/{maintenance-cmd-UJNH47SG.js → maintenance-cmd-VFYGKY3X.js} +1 -1
- package/dist/{mobile-prompts-SJZVJWSB.js → mobile-prompts-UZTRJ3L7.js} +1 -1
- package/dist/objective-variable-gate-3VUXNDCZ.js +2 -0
- package/dist/{persist-recorded-session-FWBAOQEF.js → persist-recorded-session-QMRY4DOF.js} +1 -1
- package/dist/{phase-seed-2WI7KUYO.js → phase-seed-BMOSAA74.js} +1 -1
- package/dist/pipeline-5FHWZAXK.js +2 -0
- package/dist/prepare-target-UJEY2FSR.js +2 -0
- package/dist/readmodel-TDRFVDVI.js +2 -0
- package/dist/reconcile-cmd-2QHZML2L.js +2 -0
- package/dist/{reconcile-deps-GMQA6ULT.js → reconcile-deps-ZBWUY3SM.js} +2 -2
- package/dist/{reconcile-engine-XLLYS5ZB.js → reconcile-engine-YC4RQYF2.js} +1 -1
- package/dist/{recording-banner-CQBXZMT3.js → recording-banner-7E75ERQJ.js} +1 -1
- package/dist/{records-EW4PIJ5W.js → records-JLS63SDI.js} +1 -1
- package/dist/registry-JJTRUPH7.js +2 -0
- package/dist/{require-project-folder-K3E3QIOZ.js → require-project-folder-LBUYWQOF.js} +1 -1
- package/dist/{resolve-run-intent-3CENNCF3.js → resolve-run-intent-GHISMXLZ.js} +1 -1
- package/dist/{resolver-PSNP72H4.js → resolver-7JC5VZ4S.js} +1 -1
- package/dist/{revert-RXHWWUMQ.js → revert-PRR3D4XM.js} +1 -1
- package/dist/{review-cmd-JUOWTME4.js → review-cmd-SAGIKWEW.js} +1 -1
- package/dist/run-43ACVPJK.js +2 -0
- package/dist/run-EOTOXNQO.js +2 -0
- package/dist/{run-test-md-XBM6RMCI.js → run-test-md-5LPCKCW7.js} +2 -2
- package/dist/{sessions-cmd-PGE6LP2W.js → sessions-cmd-VDQGRBEM.js} +1 -1
- package/dist/{skill-installer-FBOPYFYS.js → skill-installer-YQPZZB7I.js} +1 -1
- package/dist/{spawner-URQ5OAY7.js → spawner-X2FOOONV.js} +1 -1
- package/dist/{structured-answers-BZWJUX22.js → structured-answers-YAVW65G4.js} +1 -1
- package/dist/tcg-generate-V4QRNEZV.js +2 -0
- package/dist/testmd-actions-2UMU3QMV.js +2 -0
- package/dist/testmd-sync-UBXDLWYD.js +2 -0
- package/dist/token-refresh-NL5AM446.js +2 -0
- package/dist/{validate-basic-BXBHTTTO.js → validate-basic-GTSVZFQI.js} +1 -1
- package/dist/variable-receipt-IHQAYWMZ.js +2 -0
- package/dist/verdicts-QU6W3TUF.js +2 -0
- package/dist/{version-check-BGHE3LAK.js → version-check-IPEPJZDX.js} +1 -1
- package/dist/{view-cmd-XD5ENSML.js → view-cmd-SXXNDZIC.js} +1 -1
- package/dist/{walk-session-EYBUURRA.js → walk-session-7JVB4Z5S.js} +1 -1
- package/dist/{with-telemetry-L3SO6J3L.js → with-telemetry-LRI7H6DH.js} +1 -1
- package/package.json +11 -11
- package/dist/EvidenceViewOffer-2T2ZGHIF.js +0 -2
- package/dist/FolderPicker-LTQW4YNR.js +0 -2
- package/dist/SingleShotApp-KXZF5ZJM.js +0 -2
- package/dist/TestMdRunView-6X6W5YAP.js +0 -2
- package/dist/bridge-WFSSMJ57.js +0 -2
- package/dist/chat-controller-6GW2HSJP.js +0 -2
- package/dist/chunk-2KQF6WLX.js +0 -363
- package/dist/chunk-DEUDRSU7.js +0 -2
- package/dist/chunk-DPUV6OSP.js +0 -2
- package/dist/chunk-JJJREAFQ.js +0 -2
- package/dist/chunk-M7CGNE2D.js +0 -37
- package/dist/chunk-NGASEXVA.js +0 -27
- package/dist/design-committer-2BQVZPO4.js +0 -2
- package/dist/dispatch-NE35HS5F.js +0 -2
- package/dist/evolve-cmd-I4Z6IPIM.js +0 -2
- package/dist/explain-O3A2HZWD.js +0 -2
- package/dist/ingest-WTPY2VLS.js +0 -2
- package/dist/ingest-cmd-GOPW3SNF.js +0 -2
- package/dist/install-BDHZVEY4.js +0 -2
- package/dist/list-commands-CJCEW7MQ.js +0 -2
- package/dist/login-flow-DLG2WHSZ.js +0 -2
- package/dist/pipeline-B2TYZBMB.js +0 -2
- package/dist/prepare-target-JGVB7OKC.js +0 -2
- package/dist/readmodel-YDLGQDMH.js +0 -2
- package/dist/reconcile-cmd-6ILIXD3U.js +0 -2
- package/dist/registry-AA5YIO5Y.js +0 -2
- package/dist/run-6CMGGU2W.js +0 -2
- package/dist/run-PZIYMD35.js +0 -2
- package/dist/tcg-generate-BPLQ7WJ5.js +0 -2
- package/dist/testmd-actions-WJS2YM7B.js +0 -2
- package/dist/testmd-sync-TPUBEORI.js +0 -2
- package/dist/token-refresh-IT4LVE2H.js +0 -2
- package/dist/verdicts-J5MJHUGG.js +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as U}from"./chunk-DNNZ353O.js";import{a as G}from"./chunk-Q2F5QB2W.js";import{b as B,c as b}from"./chunk-NVGBE2DR.js";import{C as T}from"./chunk-
|
|
2
|
+
import{b as U}from"./chunk-DNNZ353O.js";import{a as G}from"./chunk-Q2F5QB2W.js";import{b as B,c as b}from"./chunk-NVGBE2DR.js";import{C as T}from"./chunk-W3Z7AZNT.js";import{a as L,c as F}from"./chunk-UH2ZTX4E.js";import{b as P,j}from"./chunk-XMTSHHYQ.js";import{a as N,d as R,f as $}from"./chunk-AKX4VRRR.js";import{existsSync as re,mkdirSync as se,readFileSync as ae,writeFileSync as de}from"fs";import{basename as A,extname as H,join as le}from"path";var K=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function Z(e){return typeof e=="string"&&e!=="."&&e!==".."&&K.test(e)}function k(e){if(!Z(e))throw new Error(`unsafe logical_id: ${JSON.stringify(e)} \u2014 must match ${String(K)} (no path separators)`)}import{extname as q}from"path";var Q={kind:"jira",media_type:"application/x-kane-jira-envelope",extensions:[],cite:"verbatim",maxBytes:2e6},ee={kind:"confluence",media_type:"application/x-kane-confluence-envelope",extensions:[],cite:"verbatim",maxBytes:2e6},xe={kind:"web",media_type:"application/x-kane-web-envelope",extensions:[],cite:"verbatim",maxBytes:2e6},te={kind:"linear",media_type:"application/x-kane-linear-envelope",extensions:[],cite:"verbatim",maxBytes:2e6},ne={kind:"linear-doc",media_type:"application/x-kane-linear-doc-envelope",extensions:[],cite:"verbatim",maxBytes:2e6},z=[{kind:"text",media_type:"text/plain",extensions:[".txt"],cite:"verbatim",maxBytes:2e6},{kind:"markdown",media_type:"text/markdown",extensions:[".md",".markdown"],cite:"verbatim",maxBytes:2e6},{kind:"image",media_type:"image/png",extensions:[".png"],cite:"anchor-only",maxBytes:5e6},{kind:"image",media_type:"image/jpeg",extensions:[".jpg",".jpeg"],cite:"anchor-only",maxBytes:5e6},{kind:"image",media_type:"image/webp",extensions:[".webp"],cite:"anchor-only",maxBytes:5e6},{kind:"text",media_type:"application/json",extensions:[".json"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"application/yaml",extensions:[".yaml",".yml"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"application/toml",extensions:[".toml"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"application/xml",extensions:[".xml"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"text/plain",extensions:[".log"],cite:"verbatim",maxBytes:2e6},{kind:"pdf",media_type:"application/pdf",extensions:[".pdf"],cite:"verbatim",maxBytes:25e6,sniff:e=>e.subarray(0,5).toString("latin1")==="%PDF-"},{kind:"docx",media_type:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",extensions:[".docx"],cite:"verbatim",maxBytes:25e6,sniff:e=>e.length>=4&&e[0]===80&&e[1]===75&&e[2]===3&&e[3]===4,sniffFail:e=>e.length>=8&&e.subarray(0,8).equals(ie)?"DOCX_ENCRYPTED_OR_LEGACY: password-protected Office file (or a legacy .doc renamed .docx) \u2014 remove the password / save as .docx and re-ingest":void 0},Q,ee,te,ne],ie=Buffer.from([208,207,17,224,161,177,26,225]),M={pdf:"pdf",docx:"docx",jira:"jira",confluence:"confluence",web:"web",linear:"linear","linear-doc":"linearDoc"},ge=new Set(Object.keys(M));function J(e){let n=q(e).toLowerCase(),t=z.find(i=>i.extensions.includes(n));return t?{ok:!0,media:t}:{ok:!1,code:"UNSUPPORTED_MEDIA",allowlist:z.flatMap(i=>i.extensions)}}function v(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${Math.max(1,Math.round(e/1024))} KB`}function ce(e,n,t){return G({source_id:e,source_cid:"sha256:".padEnd(71,"0"),doc_kind:n,numbered_text:U(t)})}var Y=2e3;function me(e){let t=A(e,H(e)).toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^[^a-z0-9]+/,"");return k(t),t}function Ce(e){let n=/^(.*?)[-_.]?v?\d+$/.exec(e);if(!n)return null;let t=(n[1]??"").replace(/[-_.]+$/,"");return t.length>0&&t!==e?t:null}function W(e){let n=le(e,"meta.json");re(n)||(se(e,{recursive:!0}),de(n,JSON.stringify({schema:N,canonicalizer:"v1"},null,2)+`
|
|
3
3
|
`))}async function Se(e){let{contextDir:n,filePath:t,asId:i,confirmSameSource:_,converters:w}=e;W(n);let o=ae(t),s=J(t);if(!s.ok)throw new Error(`${A(t)} is a file type kane can't ingest (${H(t)||"no extension"}) \u2014 supported: ${s.allowlist.join(" ")} [UNSUPPORTED_MEDIA]`);if(o.byteLength>s.media.maxBytes)throw new Error(`${A(t)} is too large \u2014 ${v(o.byteLength)}, the limit for ${s.media.media_type} is ${v(s.media.maxBytes)} [FILE_TOO_LARGE]`);if(s.media.sniff&&!s.media.sniff(o)){let m=s.media.sniffFail?.(o);throw new Error(m??`MEDIA_SNIFF_MISMATCH: ${t} does not look like ${s.media.media_type}`)}let c;return i!==void 0?(k(i),c=i):c=me(t),pe({contextDir:n,bytes:o,media:s.media,sourceId:c,label:t,confirmSameSource:_,converters:w})}async function pe(e){let{contextDir:n,bytes:t,media:i,confirmSameSource:_,converters:w}=e,o=e.sourceId,s=e.label??o;if(W(n),t.byteLength>i.maxBytes)throw new Error(`the content is too large \u2014 ${v(t.byteLength)}, the limit for ${i.media_type} is ${v(i.maxBytes)} [FILE_TOO_LARGE]`);let c=[],m=M[i.kind];if(i.cite==="verbatim"&&!m){try{new TextDecoder("utf-8",{fatal:!0}).decode(t)}catch{throw new Error(`ENCODING_UNSUPPORTED: ${s} is not valid UTF-8 \u2014 re-save it as UTF-8 and re-ingest`)}t.toString("utf8").split(`
|
|
4
4
|
`).some(f=>f.length>Y)&&c.push(`long line detected (> ${Y} chars) \u2014 anchors lose granularity; consider pretty-printing before ingest`)}let p=B(t),y=new Map,l=null,C=!1;for(let f=0;;f++){let g=T(n),u=g.heads.get(o),X=u!=null?g.getNode(u)?.content:void 0;if(u!=null&&X?.blob===p)return{status:"unchanged",source_id:o,cid:u,blob:p};if(u==null){for(let[r,x]of g.heads.entries())if(!(r===o||x==null)&&g.getNode(x)?.content.blob===p){let a;if(y.has(r)?a=y.get(r):f===0&&_?(a=await _(r),y.set(r,a)):(a=!1,y.set(r,a),f>0&&c.push(`same bytes already ingested as '${r}' \u2014 minted under '${o}' anyway (the twin appeared mid-commit; not prompted)`)),a)return{status:"unchanged",source_id:r,cid:x,blob:p};break}}if(l===null){let r={},x,a=null,S=null;if(m){let O=w?.[m];if(!O)throw new Error(`${m.toUpperCase()}_CONVERTER_MISSING: ${m} ingestion requires the converter \u2014 the command layer wires it`);let d=await O(t);a=Buffer.from(d.projection,"utf8");let D=ce(o,i.kind,a);if(D>4e5)throw new Error(`PROJECTION_TOO_LARGE: serialized source payload ${D} bytes > ${4e5} \u2014 split the document and re-ingest`);r={text_blob:B(a),...d.inventory.length>0?{images:d.inventory}:{},converter:d.converter},S=d.blobs,x={kind:i.kind,...d.pages!==void 0?{pages:d.pages}:{},delivered:d.delivered.length,omitted:d.inventory.length-d.delivered.length}}l={derived:r,composite:x,projBytes:a,derivedBlobs:S}}if(!C){if(b(n,t),l.projBytes!==null&&b(n,l.projBytes),l.derivedBlobs!==null)for(let[,r]of l.derivedBlobs)b(n,r);C=!0}let h=F(o,p),E=$("source",h);if(E.length>0)throw new Error(`source node fails ${E[0].code}: ${E[0].detail}`);let I=L("source",h);try{j(n,{ts:new Date().toISOString(),proposal_id:null,nodes:[{cid:I,label:R.SOURCE,content:h}],edges:[],review:[],supersessions:[],media:{[o]:{format:i.kind,media_type:i.media_type,anchors_supported:m?["L-L","img#ref"]:i.cite==="verbatim"?["L-L"]:[],...l.derived}},...e.eventIds&&e.eventIds.length>0?{event_ids:e.eventIds}:{},source_head_moves:{[o]:I}},{expectPrev:g.latestHash})}catch(r){if(r instanceof P&&f<3)continue;throw r}return{status:u!=null?"versioned":"created",source_id:o,cid:I,blob:p,...c.length?{warnings:c}:{},...l.composite?{composite:l.composite}:{}}}}export{k as a,Q as b,ee as c,xe as d,te as e,ne as f,ge as g,J as h,ce as i,me as j,Ce as k,Se as l,pe as m};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as N}from"./chunk-L2TV4G56.js";import{b as y,c as E,d as $,f as O,g as A,h as V,i as I,j as T}from"./chunk-
|
|
2
|
+
import{b as N}from"./chunk-L2TV4G56.js";import{b as y,c as E,d as $,f as O,g as A,h as V,i as I,j as T}from"./chunk-EV64VI66.js";import{c as x}from"./chunk-IDX3TOPY.js";import{a as C,g as P}from"./chunk-XMTSHHYQ.js";var G={extract:e=>`kane-cli context extract --resume ${e}`,design:e=>`kane-cli design tests --resume ${e}`};function Q(e,n,s){if(e===void 0||e===n)return null;if(e==="extract"||e==="design"){let a=G[e](s);return{code:"WRONG_VERB",message:`error: session ${s} is a ${e} session \u2014 resume it with ${a}`,next:[{cmd:a,why:`this session belongs to a ${e} run`}]}}return{code:"WRONG_VERB",message:`error: session ${s} belongs to a ${e} run \u2014 this command cannot resume it`,next:[]}}import{existsSync as K}from"fs";import{join as M}from"path";function ne(e){return{id:e.id,text:e.question,risk:["high","med","low"].includes(e.risk)?e.risk:"med",rationale:e.rationale,options:e.options.map(n=>({label:n.label,detail:n.description??""})),recommended_index:e.recommendedOptionIndex,allow_free_text:e.allowFreeText,kind:e.kind,consequence:e.consequence,evidence_count:e.evidence_count,multi_select:e.multiSelect}}function B(e){return{id:e.id,header:e.kind??"question",question:e.text,kind:e.kind??"clarify",multiSelect:e.multi_select??!1,options:e.options.map((n,s)=>({id:`o${s}`,label:n.label,description:n.detail||void 0})),recommendedOptionIndex:e.recommended_index,risk:e.risk,rationale:e.rationale,consequence:e.consequence??"",evidence_count:e.evidence_count,allowFreeText:e.allow_free_text}}function se(e,n){e.save({agent_state:n.agent_state,pending:{questions:n.pending.questions.map(B),proposals:n.pending.proposals??[]},assumed:n.assumed.map(s=>({questionId:s.question_id,optionId:s.option_id,flagged:!0,eventId:`assumed:${n.sid}:${s.question_id}`}))}),e.release(),$(e.state.sid)}function te(e){return{persist(n){let s=e.seqBase(),a={seq:n.seq+s,turn_id:n.turn_id,at:n.at,agent_state_schema:n.agent_state_schema,delta_items:n.delta_items,binding:n.binding,usage_total:n.usage_total,...n.base_fingerprint!==void 0?{base_fingerprint:n.base_fingerprint}:{}},l={applied_events:[...new Set([...e.handle.state.applied_events,...V(e.contextDir,e.handle.state.sid)])].sort(),held_receipts:e.peekHeldReceipts?.()??[],pending:{questions:n.at!=="turn"?(n.pending_questions??[]).map(B):[],proposals:e.stagedProposals?.()??[]},parent_asks:[],read_basis:e.readBasis(),corpus_cursor:e.corpusCursor(),store_watermark:P(e.contextDir),...(()=>{let o=e.ingestRegistry?e.ingestRegistry():e.handle.state.ingest_registry??[],p=e.ingestSchedule?e.ingestSchedule():e.handle.state.ingest_schedule??[];return{...o.length?{ingest_registry:o}:{},...p.length?{ingest_schedule:p}:{}}})()};return O(e.contextDir,e.handle,a,l,{...e.onSoftCap?{onSoftCap:e.onSoftCap}:{},...e.onStat?{onStat:e.onStat}:{},...e.now?{now:e.now}:{}})}}}var m=class extends Error{constructor(s,a,l=[]){super(`${s}: ${a}`);this.code=s;this.next=l}};async function ie(e,n,s,a={}){let l=a.deps??{},o=x(e,n);try{let p=o.state.checkpoint??null,w=K(M(e,"sessions",n,y,E)),j=!p&&o.state.agent_state.items.length>0;if(!p&&!w||j)throw new m("SESSION_V1",`session ${n} predates durable checkpoints \u2014 this build cannot resume it; abandon it with kane-cli context sessions clean ${n} and start a fresh run (committed work is untouched)`,[{cmd:`kane-cli context sessions clean ${n}`,why:"abandon the pre-checkpoint session, then start a fresh run"}]);!p&&w&&l.onWarn?.(`session ${n}: checkpoint chain present with no pointer \u2014 recovering from the chain`);let c=A(e,n);c.orphans.length>0&&T(e,n,c.orphans),c.fallback&&l.onWarn?.(`session ${n}: chain truncated to checkpoint ${c.fallback.resumableAt} \u2014 ${c.fallback.turnsLost} turn(s) lost to a corrupt record`);let r=c.base;if(a.verb){let i=Q(r.verb,a.verb,n);if(i)throw new m("WRONG_VERB",i.message,i.next)}if(a.useCase!==void 0&&a.useCase!==r.use_case&&!await(l.confirmRetarget?.(r.use_case,a.useCase)??!1))throw new m("RESUME_RETARGET_DECLINED",r.use_case?`session ${n} was designing ${r.use_case}; resuming onto ${a.useCase} needs an explicit retarget`:`session ${n} has no recorded use-case; adopting ${a.useCase} needs an explicit retarget`,r.use_case?[{cmd:`kane-cli design tests --resume ${n}`,why:`continue on ${r.use_case} (the session's own subject)`}]:[]);let d=c.kane,f=[],H=d?.read_basis??Object.fromEntries(Object.entries(o.state.read_basis));for(let[i,t]of Object.entries(H)){let u=s.heads.get(i)??null;u!==t&&f.push({subject:i,pinned:t,live:u})}r.uc_tip!==void 0&&l.liveUcTip!==void 0&&l.liveUcTip!==r.uc_tip&&f.push({subject:r.use_case??"use-case",pinned:r.uc_tip,live:l.liveUcTip}),l.locks?.reacquire?.(n);let _={...r.run_config,checkpoints:!0};delete _.resume;let R;if(c.pointer===null||c.agent===null)R=_;else{if(!c.agent.base_fingerprint)throw new m("CHECKPOINT_PROTOCOL",`session ${n}: chain carries no base fingerprint \u2014 cannot attest the seed rebuild`);R={..._,resume:{schema:2,binding:c.agent.binding,base_fingerprint:c.agent.base_fingerprint,delta_items:c.agent.delta_items,last_seq:c.pointer.seq}}}let S=d?.pending.questions??[],b=i=>{let t=`resolveq:${n}:${i}`,u=`assumed:${n}:${i}`;return s.appliedEvents.has(t)||s.appliedEvents.has(u)||o.isApplied(t)||o.isApplied(u)},W=d&&S.length>0?S.filter(i=>!b(i.id)):o.state.pending.questions.filter(i=>!b(i.id)),v={redeliverReceipts:[],recommit:[]},h,k;if(d){let i={...d,applied_events:[...new Set([...d.applied_events,...o.state.applied_events])].sort()},t;try{t=I(e,n,i,s,{verb:r.verb==="design"?"design":"extract",...r.use_case?{ucRef:r.use_case}:{},composeReceipt:(g,q,D)=>N(g,q,D),onNote:l.onWarn})}catch(g){throw g instanceof C?new m("CHECKPOINT_PROTOCOL",`store reconciliation refused: ${g.message}`,[{cmd:`kane-cli context sessions clean ${n}`,why:"abandon the session if the store was rebuilt"}]):g}v={redeliverReceipts:t.redeliverReceipts,recommit:t.recommit},k=t.prunedPending;let u=d.pending.proposals??[];h=(u.length>0?u:o.state.pending.proposals).filter(g=>!(typeof g.event_id=="string"&&s.appliedEvents.has(g.event_id))),(t.newlyApplied.length>0||t.prunedPending.length>0)&&o.reconcileSave({appliedEvents:t.newlyApplied,heldReceipts:[...o.state.held_receipts??[],...t.redeliverReceipts],pending:{questions:o.state.pending.questions,proposals:h}})}else{let i=o.state.pending.proposals;k=i.filter(t=>typeof t.event_id=="string"&&s.appliedEvents.has(t.event_id)),h=i.filter(t=>!(typeof t.event_id=="string"&&s.appliedEvents.has(t.event_id)))}return{kind:"v2",handle:o,base:r,view:c,kane:d,spawnConfig:R,drift:f,reconcile:v,questions:W,represent:h,prunedPending:k}}catch(p){throw o.release(),p}}export{Q as a,ne as b,se as c,te as d,m as e,ie as f};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as v,b as A,d as G}from"./chunk-OS4VSIHT.js";import{b as x}from"./chunk-
|
|
2
|
+
import{a as v,b as A,d as G}from"./chunk-OS4VSIHT.js";import{b as x}from"./chunk-KAZGHWGK.js";import{a as w}from"./chunk-BZAGVBCX.js";import{a as S}from"./chunk-JUJ4SAGH.js";import{a as U,b as C}from"./chunk-UJZZDPDY.js";import{C as E,D as $}from"./chunk-W3Z7AZNT.js";import{d,e as m}from"./chunk-AKX4VRRR.js";var k=new Set([d.USECASE,d.SCENARIO,d.AC,d.TEST]);function b(e,t){return!e.superseded.has(t)&&e.trust.get(t)!=="archived"}function h(e,t,n){let s=e.edgesFrom(t).find(o=>o.type===n);return s?e.tipOf(s.dst):null}function O(e,t,n){if(n===d.USECASE)return t;if(n===d.SCENARIO)return h(e,t,m.BELONGS_TO);if(n===d.AC){let s=h(e,t,m.SCOPED_TO);return s?e.nodeLabel.get(s)===d.USECASE?s:h(e,s,m.BELONGS_TO):null}if(n===d.TEST){let s=h(e,t,m.AUTOMATES);return s?h(e,s,m.BELONGS_TO):null}return null}function L(e,t){let n=e.nameOf.get(t);if(n)return n;for(let[s,o]of e.names)if(e.tipOf(o)===t)return s;return t}function F(e,t){return{ucTip:t,display:L(e,t),seamRef:e.nameOf.get(t)??t}}function N(e,t){let n=e.resolve(t);if(!n)return{ok:!1,message:`unknown ref '${t}' \u2014 no test/scenario/ac/use-case by that id or cid`};let s=n.tip,o=e.nodeLabel.get(s);if(!o||!k.has(o))return{ok:!1,message:`'${t}' is a ${o??"missing node"} \u2014 evolve takes a test, scenario, acceptance criterion, or use-case`};let a=O(e,s,o);return!a||e.nodeLabel.get(a)!==d.USECASE?{ok:!1,message:`cannot resolve '${t}' to a parent use-case \u2014 its ${o} chain is broken`}:e.superseded.has(a)?{ok:!1,message:`use-case ${L(e,a)} was removed \u2014 nothing to evolve`}:{ok:!0,target:F(e,a)}}function Z(e,t){return D(e,t)}function D(e,t){let n=[];for(let{cid:o}of e.byLabel(d.SCENARIO)){if(!b(e,o)||!e.edgesFrom(o).some(r=>r.type===m.BELONGS_TO&&e.tipOf(r.dst)===t))continue;let a=e.edgesInto(o).filter(r=>r.type===m.AUTOMATES&&b(e,r.src));if(a.length===0)n.push({scenario:o,test:null});else for(let r of a)n.push({scenario:o,test:r.src})}let s=new Map;for(let{cid:o}of e.byLabel(d.AC)){if(!b(e,o)||O(e,o,d.AC)!==t)continue;let a=e.edgesInto(o).filter(r=>r.type===m.VERIFIES&&b(e,r.src)).map(r=>r.src).sort();s.set(o,a)}return{pairs:n,verifies:s}}function B(e,t){let n=r=>`${r.scenario}\0${r.test??""}`,s=new Set(e.pairs.map(n)),o=new Set(t.pairs.map(n)),a=[];for(let[r,i]of e.verifies){let u=t.verifies.get(r);u&&(i.length===u.length&&i.every((l,g)=>l===u[g])||a.push({ac:r,before:i,after:u}))}return{superseded:e.pairs.filter(r=>!o.has(n(r))),minted:t.pairs.filter(r=>!s.has(n(r))),retained:t.pairs.filter(r=>s.has(n(r))),moves:a}}function _(e,t,n,s,o){let a=i=>t.nameOf.get(i)??i,r=i=>` - ${a(i.scenario)} \xB7 ${i.test?a(i.test):"(no test)"}`;e.out(`evolved: use-case ${n} \u2014 design record ${s.before} \u2192 ${s.after}`),e.out(` superseded ${o.superseded.length} pair(s)`);for(let i of o.superseded)e.out(r(i));e.out(` minted ${o.minted.length} pair(s)`);for(let i of o.minted)e.out(r(i));e.out(` retained ${o.retained.length} pair(s)`);for(let i of o.retained)e.out(r(i));if(o.moves.length===0)e.out(" verifies none moved");else{e.out(" verifies moved:");for(let i of o.moves){let u=l=>l.length>0?l.map(a).join(" + "):"(none)";e.out(` - ${a(i.ac)}: ${u(i.before)} \u2192 ${u(i.after)}`)}}}async function R(e,t,n,s,o,a,r){let i=E(e),u=S(i,t.ucTip);if(!u)return a==="batch"?(s.out(`note: ${t.display} has no design output \u2014 nothing to evolve; run kane-cli design tests --use-case ${t.display} first`),{code:0,outcome:"no-design"}):(v(s,`nothing to evolve \u2014 run kane-cli design tests --use-case ${t.display} first (no design output)`),{code:2,outcome:"no-design"});let l=D(i,t.ucTip),g=[`evolve ${t.display}`,` re-designs use-case ${t.display}`,` affects ${l.pairs.length} pair(s)`,...n.because?[` because ${n.because}`]:[]];if(n.yes)for(let y of g)s.out(y);else{for(let I of g)s.out(I);if(!await s.confirm(`proceed with the re-design of ${t.display}?`))return s.out(a==="batch"?`skipped ${t.display}`:"declined \u2014 nothing evolved"),{code:0,outcome:"declined"}}let p=x(e,i,t.ucTip,n.because),c=await U(r,{verb:"evolve",subject:t.display},()=>o(t.seamRef,{yes:!!n.yes,...n.mode?{mode:n.mode}:{},...n.because?{because:n.because}:{},...p!==void 0?{changeDelta:p.change_delta,priorDesign:p.prior_design}:{}}),y=>({ok:y===0,exitCode:y}));if(c===3)return s.out(`design session for ${t.display} paused \u2014 resume with \`kane-cli design tests --resume\`, then re-run evolve for the diff`),{code:c,outcome:"paused"};if(c!==0)return v(s,`design run for ${t.display} ended with exit code ${c} \u2014 no diff to report`),{code:c,outcome:"failed"};let f=E(e),T=f.tipOf(t.ucTip),P=S(f,T)?.seq;return _(s,f,t.display,{before:u.seq,after:P??"?"},B(l,D(f,T))),{code:0,outcome:"evolved"}}function j(e){let t=new Map,n=0;for(let{cid:o,state:a}of e.staleList()){if(a==="superseded")continue;let r=e.nodeLabel.get(o);if(!r||!k.has(r)||!b(e,o)||!$(e,o))continue;let i=O(e,o,r);!i||e.nodeLabel.get(i)!==d.USECASE||e.superseded.has(i)||(n++,t.has(i)||t.set(i,F(e,i)))}return{targets:[...t.values()].sort((o,a)=>o.display<a.display?-1:o.display>a.display?1:0),staleCount:n}}function M(e,t){for(let{cid:n,state:s}of e.staleList()){if(s==="superseded")continue;let o=e.nodeLabel.get(n);if(!(!o||!k.has(o)||!b(e,n))&&$(e,n)&&O(e,n,o)===t)return!0}return!1}async function q(e,t,n,s={},o=process.cwd()){if(e&&t.fromStale)return v(n,"pass a <ref> OR --from-stale, not both"),2;if(!e&&!t.fromStale)return v(n,"evolve needs a <ref> or --from-stale"),2;let a=A(o,n);if(!a)return 2;let r=s.runDesignForUc??Y,i=s.onChild??(n.isTTY?V(n):void 0);n.out(`evolving ${e??"stale use-cases"}: reading the graph\u2026`);let u=E(a),l,g=null;if(e){let c=N(u,e);if(!c.ok)return v(n,c.message),2;if(!t.because&&S(u,c.target.ucTip)&&!M(u,c.target.ucTip))return v(n,`nothing changed underneath ${e} \u2014 its sources and requirements are current; use --because "<reason>" to re-design anyway`),2;l=[c.target]}else{let{targets:c,staleCount:f}=j(u);if(c.length===0)return n.out("nothing stale \u2014 nothing to evolve"),0;g=`from-stale: ${f} stale node(s) \u2192 ${c.length} use-case(s)`,l=c}if(!t.yes&&!n.isTTY)return v(n,"evolve needs a TTY \u2014 the blast-radius confirm is the point; headless evolution rides `kane-cli maintain reconcile`"),2;if(g&&n.out(g),e){let c=await R(a,l[0],t,n,r,"single",i);return c.outcome==="evolved"&&t.because&&w(a,{ts:new Date().toISOString(),command:"evolve",id:e,verdict:"gap-resolved-evolve",polarity:"preference",by:{kind:"human",id:process.env.USER??"operator"},target:e,reason:t.because}),c.code}let p=0;for(let c of l){let{code:f}=await R(a,c,t,n,r,"batch",i);f!==0&&p===0&&(p=f)}return p}function V(e){let t="",n="evolve";return s=>{s.kind==="start"?(t=s.subject,n=s.verb,e.out(`\u25CF ${C(s.verb).ing} ${s.subject}`)):s.kind==="end"&&e.out(s.ok?`\u25CF ${C(n).ed} ${t} \u2014 ${s.durS}s`:`\u25CF ${n} failed \u2014 ${s.exitCode!=null?`exited ${s.exitCode}`:"error"}${s.fixCmd?` \xB7 ${s.fixCmd}`:""}`)}}var Y=async(e,t)=>{let{designTestsCommand:n}=await import("./bind-F36JFHUK.js"),s=()=>n({useCase:e,force:!0,...t.mode?{mode:t.mode}:t.yes?{mode:"override"}:{},...t.because?{because:t.because}:{},...t.changeDelta!==void 0?{changeDelta:t.changeDelta}:{},...t.priorDesign!==void 0?{priorDesign:t.priorDesign}:{}});if(t.mode!=="agent")return s();let o=process.stdout.write;process.stdout.write=((...a)=>!0);try{return await s()}finally{process.stdout.write=o}};async function ee(e,t){return q(e,t,G(),{})}export{N as a,Z as b,R as c,j as d,q as e,Y as f,ee as g};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as j}from"./chunk-
|
|
2
|
+
import{a as j}from"./chunk-UH2ZTX4E.js";import{a as E,e as O,h as A}from"./chunk-XMTSHHYQ.js";import{a as S,e as N,f as F,g as L,h as C}from"./chunk-AKX4VRRR.js";import{existsSync as y,mkdirSync as G,readFileSync as q,renameSync as H,rmSync as J,writeFileSync as K}from"fs";import{dirname as W,join as w}from"path";var D=o=>w(o,"derived"),x=o=>w(D(o),"index.json");function U(o,s){let r=s.startsWith("sha256:")?s.slice(7):s;return w(D(o),"nodes",r.slice(0,2),r.slice(2)+".json")}function k(){return{applied:{seq:0,hash:null},heads:{},trust:{},nodeLabel:{},forward:{},extracted:[],design_of:{},design_generation:{},exec:{},superseded:{},names:{},archivedReason:{},appliedEvents:[],completeness:{},srcOwner:{},conv:{},media:{},design_phases:{},edgeRetractions:{}}}function P(o){let s=x(o);if(!y(s))return null;try{let r=JSON.parse(q(s,"utf8"));return r.superseded===void 0||r.names===void 0||r.archivedReason===void 0||r.appliedEvents===void 0||r.conv===void 0||r.media===void 0||r.exec===void 0||r.completeness===void 0||r.srcOwner===void 0||r.design_phases===void 0||r.edgeRetractions===void 0||r.reverse!==void 0?null:r}catch{return null}}function V(o,s){G(W(o),{recursive:!0});let r=`${o}.tmp-${process.pid}`;K(r,s),H(r,o)}function b(o,s,r,p,h={}){let a=h.writeNodeFiles!==!1,g=new Set(s.extracted),v=new Set(s.appliedEvents);r.forEach((n,R)=>{for(let e of n.nodes){let d=U(o,e.cid);a&&!y(d)&&V(d,JSON.stringify({label:e.label,content:e.content})+`
|
|
3
3
|
`),!(e.cid in s.trust)&&e.content.derived===!0&&(s.trust[e.cid]="derived"),s.nodeLabel[e.cid]=e.label}for(let[e,d]of Object.entries(n.source_head_moves))typeof d=="string"&&(s.srcOwner[d]=e);if(n.proposal_id!=null&&typeof n.extraction_of=="string"){g.add(n.extraction_of);let e=null;for(let d of n.edges)if(d.type===N.DERIVES&&d.props.source_cid===n.extraction_of&&typeof d.props.source_id=="string"){e=d.props.source_id;break}if(e??=s.srcOwner[n.extraction_of]??null,e!==null){let d=s.completeness[e];(!d||n.seq>=d.seq)&&(s.completeness[e]={source_cid:n.extraction_of,completeness:"complete",...n.extractor_version?{extractor_version:n.extractor_version}:{},at:n.ts,seq:n.seq})}else s.completenessSkipped=(s.completenessSkipped??0)+1}else if(n.proposal_id!=null&&Array.isArray(n.extraction_of))for(let e of n.extraction_of){g.add(e.source_cid);let d=s.completeness[e.source_id];(!d||n.seq>=d.seq)&&(s.completeness[e.source_id]={source_cid:e.source_cid,completeness:e.completeness,...e.extractor_version?{extractor_version:e.extractor_version}:{},at:e.at,seq:n.seq})}n.design_of&&((s.design_of??={})[n.design_of.uc_cid]={engine:n.design_of.engine,seq:n.seq}),n.design_generation&&((s.design_generation??={})[n.design_generation.uc_root]={gen:n.design_generation.generation,seq:n.seq});{let e=n.design_phase;e&&typeof e.uc_root=="string"&&typeof e.phase=="string"&&typeof e.generation=="number"&&((s.design_phases??={})[e.uc_root]??=[]).push({phase:e.phase,generation:e.generation,seq:n.seq,completeness:e.completeness==="partial"?"partial":"complete"})}for(let e of n.executions??[])((s.exec??={})[e.about]??=[]).push(e);for(let e of n.edges){let{quote:d,...m}=e.props,i=s.forward[e.src]??=[];i.some(t=>t.ecid===e.ecid)||i.push({...e,props:m}),n.proposal_id!=null&&e.type===N.DERIVES&&typeof e.props.source_cid=="string"&&g.add(e.props.source_cid)}for(let e of n.review)e.resolution==="approved"||e.resolution==="edited"?(s.trust[e.id]="trusted",delete s.archivedReason[e.id]):e.resolution==="rejected"?(s.trust[e.id]="archived",e.reason?s.archivedReason[e.id]=e.reason:delete s.archivedReason[e.id]):e.resolution==="reset"&&(s.trust[e.id]="derived",delete s.archivedReason[e.id]);for(let e of n.supersessions)e.kind==="node"?e.new===e.old?delete s.superseded[e.old]:s.superseded[e.old]=e.new:e.revoke?(delete s.superseded[e.ecid],delete s.edgeRetractions[e.ecid]):(s.superseded[e.ecid]=null,s.edgeRetractions[e.ecid]={at:n.ts,...e.by?{by:e.by}:{},...e.reason?{reason:e.reason}:{}});for(let e of n.names??[])s.names[e.slug]=e.cid;for(let[e,d]of Object.entries(n.source_head_moves))s.heads[e]=d;for(let e of n.event_ids??[])v.add(e);if(n.media)for(let[e,d]of Object.entries(n.media)){let m=n.source_head_moves[e];typeof m=="string"&&(s.media[m]=d)}if(n.conv){let e=n.source_head_moves[n.conv.source_id];if(typeof e=="string"){let d=s.conv[n.conv.source_id],m=d&&d.chain.length>0?d.chain[d.chain.length-1]:null;n.conv.append_of===m?s.conv[n.conv.source_id]={turns:n.conv.turn,chain:[...d?.chain??[],e]}:s.conv[n.conv.source_id]={turns:n.conv.turn,chain:[e]}}}for(let[e,d]of Object.entries(n.source_head_moves))n.conv?.source_id!==e&&s.conv[e]!==void 0&&(s.conv[e]=typeof d=="string"?{turns:s.conv[e].turns,chain:[d]}:{turns:s.conv[e].turns,chain:[]});s.applied={seq:n.seq,hash:p[R]}}),s.extracted=[...g].sort(),s.appliedEvents=[...v].sort()}function T(o,s){V(x(o),JSON.stringify(s)+`
|
|
4
4
|
`)}function B(o){let s=w(o,"meta.json");if(y(s))try{let r=JSON.parse(q(s,"utf8"));if(r.schema!==S||r.canonicalizer!=="v1")throw new E(`schema fence: store is ${r.schema}/${r.canonicalizer}, this build is ${S}/${"v1"} \u2014 migrate explicitly (kane-cli context rebuild after upgrading)`)}catch(r){throw r instanceof E?r:new E(`corrupt meta.json in ${o} \u2014 fix or remove it`)}}function Y(o){B(o);let s=P(o);if(s===null){s=k();let{records:h,hashes:a}=O(o);return b(o,s,h,a),T(o,s),s}let{records:r,hashes:p}=A(o,s.applied.seq,s.applied.hash);return r.length>0&&(b(o,s,r,p),T(o,s)),s}function ne(o){return J(D(o),{recursive:!0,force:!0}),Y(o)}var z=new Set(["CHAIN_ERROR","DERIVED_MISSING","DERIVED_DRIFT","NODE_FILE_MISSING","NODE_FILE_MISMATCH","NODE_FILE_CORRUPT"]);function te(o){return z.has(o.code)?o.detail:`${o.code}: ${o.detail}`}function re(o){let s=[],r=(i,t)=>{s.push({code:i,detail:t})},p=[],h=[];try{({records:p,hashes:h}=O(o))}catch(i){return{ok:!1,issues:[{code:"CHAIN_ERROR",detail:i instanceof E?i.message:String(i)}],records:0}}let a=k();b(o,a,p,h,{writeNodeFiles:!1});let g=P(o),v=0,n=a;if(g!==null&&g.applied.seq<p.length){let i=g.applied.seq;g.applied.hash===(i===0?null:h[i-1])&&(v=p.length-i,n=k(),b(o,n,p.slice(0,i),h.slice(0,i),{writeNodeFiles:!1}))}if(g===null)r("DERIVED_MISSING","derived/index.json missing or corrupt (run kane-cli context rebuild)");else{let i=t=>JSON.stringify($(t));for(let t of["applied","heads","trust","nodeLabel","forward","extracted","superseded","names","archivedReason","appliedEvents","conv","media","design_of","design_generation","design_phases","exec","completeness","srcOwner","edgeRetractions"])i(n[t])!==i(g[t])&&r("DERIVED_DRIFT",`derived drift in index.${t} (run kane-cli context rebuild)`)}let R=new Set;for(let i of Object.values(a.forward))for(let t of i)R.add(t.ecid);let e=new Set,d=new Set;for(let i of p)for(let t of i.supersessions)t.kind==="node"?(t.old in a.nodeLabel||r("SUPERSEDE_UNKNOWN_OLD",`${t.old} (record ${i.seq})`),t.new!==null&&t.new!==t.old&&!(t.new in a.nodeLabel)&&r("SUPERSEDE_UNKNOWN_NEW",`${String(t.new)} (record ${i.seq})`),t.new===t.old?e.delete(t.old):(e.has(t.old)&&r("DOUBLE_SUPERSEDE",`${t.old} re-superseded while live (record ${i.seq})`),e.add(t.old))):(R.has(t.ecid)||r("SUPERSEDE_UNKNOWN_ECID",`${t.ecid} (record ${i.seq})`),t.revoke?(d.has(t.ecid)||r("EDGE_ORPHAN_REVOKE",`${t.ecid} revoked without a standing retraction (record ${i.seq})`),d.delete(t.ecid)):(d.has(t.ecid)&&r("EDGE_DOUBLE_RETRACT",`${t.ecid} re-retracted while already retracted (record ${i.seq})`),d.add(t.ecid)));for(let i of Object.keys(a.superseded)){let t=new Set,l=i;for(;l!==null&&l in a.superseded;){if(t.has(l)){r("SUPERSEDE_CYCLE",`chain from ${i} revisits ${l}`);break}t.add(l),l=a.superseded[l]}}for(let[i,t]of Object.entries(a.names))t in a.nodeLabel||r("NAME_UNKNOWN_TARGET",`slug ${i} \u2192 ${t} not in the graph`);for(let i of p)for(let t of i.edges){let l=a.nodeLabel[t.src]??"(unknown)",f=a.nodeLabel[t.dst]??"(unknown)";for(let c of C(t.type,l,f,t.props))r(c.code,`${t.ecid} ${c.detail}`)}let m=new Map;for(let i of Object.values(a.forward))for(let t of i){if(t.ecid in a.superseded)continue;let l=m.get(t.type)??[];l.push(t),m.set(t.type,l)}for(let[i,t]of m){let l=L(i);if(l?.acyclic){let f=new Map;for(let u of t)f.set(u.src,[...f.get(u.src)??[],u.dst]);let c=new Map,_=u=>{c.set(u,1);for(let I of f.get(u)??[])if(c.get(I)===1||c.get(I)===void 0&&_(I))return!0;return c.set(u,2),!1};for(let u of f.keys())if(c.get(u)===void 0&&_(u)){r("EDGE_CYCLE",`live ${i} edges form a cycle reachable from ${u}`);break}}if(l?.cardinality==="one-live-per-src"||l?.cardinality==="one-live-per-src-and-dst"){let f=new Map;for(let c of t)c.dst in a.superseded||f.set(c.src,[...f.get(c.src)??[],c]);for(let[c,_]of f)_.length>1&&r("CARDINALITY_VIOLATION",`${_.length} live ${i} edges from ${c} (one-live-per-src): ecids ${_.map(u=>u.ecid).join(",")}`)}if(l?.cardinality==="one-live-per-src-and-dst"){let f=new Map;for(let c of t)c.src in a.superseded||c.dst in a.superseded||f.set(c.dst,[...f.get(c.dst)??[],c]);for(let[c,_]of f)_.length>1&&r("CARDINALITY_VIOLATION",`${_.length} live ${i} edges onto ${c} (one-live-per-dst): ecids ${_.map(u=>u.ecid).join(",")}`)}}for(let[i,t]of Object.entries(n.nodeLabel)){let l=U(o,i);if(!y(l)){r("NODE_FILE_MISSING",`missing node file for ${i} (run kane-cli context rebuild)`);continue}try{let f=JSON.parse(q(l,"utf8"));(f.label!==t||j(f.label,f.content)!==i)&&r("NODE_FILE_MISMATCH",`node file content mismatch for ${i} (run kane-cli context rebuild)`);for(let c of F(f.label,f.content))r(c.code,`${i} ${c.detail}`)}catch{r("NODE_FILE_CORRUPT",`corrupt node file for ${i} (run kane-cli context rebuild)`)}}return{ok:s.length===0,issues:s,records:p.length,...v>0?{pending:v}:{}}}function $(o){return Array.isArray(o)?o.map($):o&&typeof o=="object"?Object.fromEntries(Object.entries(o).sort(([s],[r])=>s<r?-1:1).map(([s,r])=>[s,$(r)])):o}export{U as a,Y as b,ne as c,te as d,re as e};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as ke}from"./chunk-
|
|
2
|
+
import{a as ke}from"./chunk-I27YRAGO.js";import{b as he,c as _e,d as J,e as Z}from"./chunk-YEZYO5QH.js";import{d as V}from"./chunk-BZAGVBCX.js";import{d as ye,e as we}from"./chunk-AXTPNZPX.js";import{a as pe}from"./chunk-TMRLBSIA.js";import{a as O}from"./chunk-DNNZ353O.js";import{B as me,C as N}from"./chunk-W3Z7AZNT.js";import{b as ge}from"./chunk-6FCPS2VT.js";import{a as ue}from"./chunk-UH2ZTX4E.js";import{e as de,j as fe}from"./chunk-XMTSHHYQ.js";import{d as ae,f as le}from"./chunk-AKX4VRRR.js";function bt(t){let e=process.env.HOME??"";return e&&t.startsWith(e)?`~${t.slice(e.length)}`:t}import{randomBytes as mt}from"crypto";function ee(t,e){let n=Math.min(t.length,e.length),o=0,r=0,c=0;for(let s=0;s<n;s++)o+=t[s]*e[s],r+=t[s]*t[s],c+=e[s]*e[s];return r===0||c===0?0:o/(Math.sqrt(r)*Math.sqrt(c))}function te(t,e,n){return n*t+(1-n)*e}var ne=.7;var ze=["get_node","get_edges","find_by_provenance","match_by_type","stale_nodes","search_similar","search_similar_batch","history"],Qe=["source_read","source_grep","source_list"],Ke=[...ze,...Qe],Se=50,Ee=200,re=10,Re=50,be=20,We=200,Xe=50;function H(t,e,n){let o=typeof t=="number"&&Number.isFinite(t)?Math.floor(t):e;return Math.max(1,Math.min(o,n))}function C(t,e){let n=t[e];if(typeof n!="string"||n.length===0)throw new b(`param "${e}" must be a non-empty string`);return n}function M(t,e){let n=t[e];if(n==null)return null;if(typeof n!="string")throw new b(`param "${e}" must be a string when present`);return n}var b=class extends Error{},xe=24,qe=10,Ye=10;function Je(t){let e=t.cursor;if(e==null)return 0;if(typeof e=="string"&&/^\d+$/.test(e))return Number.parseInt(e,10);throw new b(`BAD_CURSOR: cursor ${JSON.stringify(e)} is not a cursor this store minted`)}function Ae(t,e){let n=e.fields;if(!Array.isArray(n)||n.length===0)return t;let o=new Set(n.filter(r=>typeof r=="string"));return t.map(r=>Object.fromEntries(Object.entries(r).filter(([c])=>o.has(c))))}function se(t,e,n=Se,o=Ee){let r=Je(e),c=H(e.limit,n,o),s=t.slice(r,r+c),d=r+s.length<t.length;return{rows:Ae(s,e),truncated:d,next_cursor:d?String(r+s.length):null}}var Ze=t=>t.cursor!=null||t.fields!=null;function U(t,e,n=Se){let o=se(t,e,n);return Ze(e)||o.truncated?{rows:o.rows,truncated:o.truncated,next_cursor:o.next_cursor}:o.rows}function oe(t,e){let n=t.getNode(e);return n?{cid:e,label:n.label,content:n.content,trust:t.trust.get(e)??null,freshness:t.stale(e)}:null}function ve(t){return new Set(t.toLowerCase().replace(/[^\p{L}\p{N}]+/gu," ").split(" ").filter(Boolean))}function z(t,...e){let n=ve(t);if(n.size===0)return 0;let o=t.trim().toLowerCase(),r=0;for(let c of e){let s=ve(c);if(s.size===0)continue;let d=0;for(let u of n)s.has(u)&&d++;let m=n.size+s.size-d,f=m===0?0:d/m;o&&c.toLowerCase().includes(o)&&(f=Math.max(f,.9)),r=Math.max(r,f)}return r}function et(t,e){let n=C(e,"cid"),o=M(e,"type"),r=M(e,"direction")??"both";if(!["out","in","both"].includes(r))throw new b('param "direction" must be out|in|both');let c=[];(r==="out"||r==="both")&&c.push(...t.edgesFrom(n)),(r==="in"||r==="both")&&c.push(...t.edgesInto(n));let s=c.filter(d=>o==null||d.type===o);return U(s,e)}function tt(t,e){let n=C(e,"source_id"),o=t.heads.get(n)??null,r=[];for(let c of t.nodeLabel.keys()){let s=t.derivesInto(c).filter(m=>m.props.source_id===n).map(m=>({source_cid:m.props.source_cid,anchor:m.props.anchor??null}));if(s.length===0)continue;let d=oe(t,c);d&&r.push({...d,pins:s,pinned_to_head:o!=null&&s.some(m=>m.source_cid===o)})}return U(r,e,Ee)}function nt(t,e){let n=C(e,"label"),o=M(e,"trust"),r=M(e,"freshness"),c=[];for(let{cid:s}of t.byLabel(n)){let d=oe(t,s);d&&(o!=null&&d.trust!==o||r!=null&&d.freshness!==r||c.push(d))}return U(c,e)}function rt(t,e={}){let n=M(e,"label"),o=t.staleList().map(({cid:r,state:c})=>{let s=t.getNode(r);return{cid:r,state:c,label:s?.label??null,title:s?.content.title??null}}).filter(r=>n==null||r.label===n);return U(o,e)}function st(t,e,n){let o=e.extracted,r=M(e,"kind"),c=[];for(let f of[...t.heads.keys()].sort()){let u=t.heads.get(f);if(typeof u!="string")continue;let h=t.mediaOf(u).format;if(r!=null&&h!==r)continue;let _=t.extractedSourceCids.has(u);if(typeof o=="boolean"&&_!==o)continue;let E=0;if(h!=="image"){let y=O(n,t,u);y&&(E=y.toString("utf8").replace(/\n$/,"").split(`
|
|
3
3
|
`).length)}let l=t.extractionCompleteness.get(f);c.push({source_id:f,kind:h,lines:E,head_cid:u,extracted:_,last_extract_at:l?.at??null,extractor_version:l?.extractor_version??null})}let{rows:s,truncated:d,next_cursor:m}=se(c,e);return{sources:s,truncated:d,next_cursor:m}}function ot(t,e,n){let o=C(e,"ref"),r=t.resolve(o);if(!r)throw new b(`UNKNOWN_REF: ${o} names nothing in the graph`);let c=r.tip,s=new Map;for(let[p,k]of t.superseded)typeof k=="string"&&k!==p&&s.set(k,[...s.get(k)??[],p]);let d=[],m=[c],f=new Set;for(;m.length>0;){let p=m.pop();f.has(p)||(f.add(p),d.push(p),m.push(...s.get(p)??[]))}let{records:u}=de(n),g=new Map,h=new Map;for(let p of u){for(let k of p.nodes)g.has(k.cid)||g.set(k.cid,p.ts);for(let k of p.supersessions)k.kind==="node"&&h.set(k.old,{by_cid:k.new,reason:k.reason})}let _=d.map(p=>({cid:p,minted_at:g.get(p)??null,superseded_by:h.get(p)?.by_cid??null,reason:h.get(p)?.reason??null,change_note:null})),{rows:E,truncated:l,next_cursor:y}=se(_,e,Ye);return{root_logical_id:t.displayNameOf(c),live_tip:t.superseded.has(c)?null:c,truncated:l,next_cursor:y,chain:E}}function $e(t){let e=t.queries;if(!Array.isArray(e)||e.length<1||e.length>xe)throw new b(`param "queries" must be 1..${xe} entries`);return e.map((n,o)=>{if(typeof n!="object"||n===null)throw new b(`queries[${o}] must be an object`);let r=n;if(typeof r.qid!="string"||r.qid.length===0)throw new b(`queries[${o}].qid must be a non-empty string`);if(typeof r.text!="string"||r.text.length===0)throw new b(`queries[${o}].text must be a non-empty string`);return{qid:r.qid,text:r.text,topK:H(r.top_k,re,qe)}})}function De(t){let e=[];for(let{cid:n,content:o}of t.byLabel("usecase"))t.superseded.has(n)||e.push({cid:n,title:String(o.title??""),summary:String(o.summary??""),description:String(o.description??"")});return e}function Me(t,e,n){let o=De(t);return e.map(r=>{let c=[];for(let s of o){let d=n(r,s);d<=0||c.push({cid:s.cid,logical_id:t.displayNameOf(s.cid),title:s.title,score:Math.round(d*1e3)/1e3,trust:t.trust.get(s.cid)??null,superseded:!1})}return c.sort((s,d)=>d.score-s.score||s.cid.localeCompare(d.cid)),{qid:r.qid,truncated:c.length>r.topK,matches:c.slice(0,r.topK)}})}function Ce(t,e){let n=$e(e);return{results:Me(t,n,(o,r)=>z(o.text,r.title,r.summary,r.description)),scorer:"lexical_fallback"}}function it(t,e){let n=C(e,"text"),o=M(e,"label")??"usecase",r=H(e.k,re,Re),c=[];for(let{cid:s,content:d}of t.byLabel(o)){let m=String(d.title??""),f=String(d.summary??""),u=z(n,m,f);u<=0||c.push({cid:s,title:m,summary:f,score:Math.round(u*1e3)/1e3,trust:t.trust.get(s)??null,freshness:t.stale(s)})}return c.sort((s,d)=>d.score-s.score||s.cid.localeCompare(d.cid)),c.slice(0,r)}function Te(t,e,n){let o=t.heads.get(n);if(typeof o!="string"){let c=[...t.heads.keys()].sort().join(", ");throw new b(`unknown source_id "${n}" \u2014 known: ${c||"(none)"}`)}if(t.mediaOf(o).format==="image")throw new b(`source "${n}" is an image \u2014 no line window (cite img#whole)`);let r=O(e,t,o);if(r==null)throw new b(`source "${n}" blob is missing from the store`);return{head:o,lines:r.toString("utf8").replace(/\n$/,"").split(`
|
|
4
4
|
`)}}function ct(t,e,n){return t.slice(e-1,n).map((o,r)=>`${String(e+r).padStart(4,"0")}| ${o}`).join(`
|
|
5
5
|
`)}function at(t,e,n){let o=C(e,"source_id"),r=M(e,"anchor"),c=e.line_range;if(r!=null&&c!=null)throw new b("give anchor OR line_range, not both");let{head:s,lines:d}=Te(t,n,o),m=d.length,f,u;if(r!=null){let g=/^L(\d+)-L(\d+)$/.exec(r);if(!g)throw new b(`anchor "${r}" is not L<a>-L<b>`);let h=Number(g[1]),_=Number(g[2]);if(h<1||_<h||_>m)throw new b(`anchor "${r}" does not resolve (source has ${m} lines)`);f=Math.max(1,h-be),u=Math.min(m,_+be)}else if(c!=null){if(!Array.isArray(c)||c.length!==2||!c.every(_=>Number.isInteger(_)))throw new b('param "line_range" must be [from_line, to_line]');let[g,h]=c;if(g<1||h<g)throw new b('param "line_range" must be 1-based with from \u2264 to');if(g>m)throw new b(`line_range starts past the end (source has ${m} lines)`);f=g,u=Math.min(h,m)}else f=1,u=m;return u=Math.min(u,f+We-1),{window:ct(d,f,u),from_line:f,to_line:u,source_cid:s,total_lines:m}}function lt(t,e,n){let o=C(e,"pattern"),r=M(e,"source_id"),c;try{c=new RegExp(o,"u")}catch(f){throw new b(`invalid pattern: ${f instanceof Error?f.message:String(f)}`)}let s=r!=null?[r]:[...t.heads.keys()].sort(),d=[],m=!1;e:for(let f of s){if(r==null){let g=t.heads.get(f);if(typeof g!="string"||t.mediaOf(g).format==="image")continue}let{lines:u}=Te(t,n,f);for(let g=0;g<u.length;g++)if(c.test(u[g])){if(d.length>=Xe){m=!0;break e}d.push({source_id:f,line:g+1,text:u[g]})}}return{matches:d,truncated:m}}function ut(t,e,n,o){try{switch(e){case"get_node":{let r=oe(t,C(n,"cid"));return r==null?{ok:!0,result:null}:{ok:!0,result:Ae([r],n)[0]}}case"get_edges":return{ok:!0,result:et(t,n)};case"find_by_provenance":return{ok:!0,result:tt(t,n)};case"match_by_type":return{ok:!0,result:nt(t,n)};case"stale_nodes":return{ok:!0,result:rt(t,n)};case"search_similar":return{ok:!0,result:it(t,n)};case"search_similar_batch":return{ok:!0,result:Ce(t,n)};case"history":{if(o==null)throw new b("history unavailable (no context store)");return{ok:!0,result:ot(t,n,o)}}case"source_list":{if(o==null)throw new b("source roster unavailable (no context store)");return{ok:!0,result:st(t,n,o)}}case"source_read":case"source_grep":{if(o==null)throw new b("source text unavailable (no context store)");return{ok:!0,result:(e==="source_read"?at:lt)(t,n,o)}}default:return{ok:!1,error:`unknown method: ${e} \u2014 available: ${Ke.join(", ")}`}}}catch(r){return r instanceof b?{ok:!1,error:`${e}: ${r.message}`}:{ok:!1,error:`${e}: graph read failed: ${r instanceof Error?r.message:String(r)}`}}}var P="assurance.sim";function dt(t){return[t.title,t.summary,t.description].filter(Boolean).join(`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as q,c as $}from"./chunk-PDXZROJM.js";import{U as V}from"./chunk-
|
|
2
|
+
import{b as q,c as $}from"./chunk-PDXZROJM.js";import{U as V}from"./chunk-LPDBTGO5.js";import{b as z}from"./chunk-5GUD3CIH.js";import{a as ft,b as R}from"./chunk-NBXYL2JT.js";import{a as B}from"./chunk-BPMSNGXQ.js";import{a as M}from"./chunk-DHJSM5DT.js";import{a as F}from"./chunk-NLCCBXXV.js";import{a as P}from"./chunk-RZ4F3BHX.js";import{e as gt}from"./chunk-UR6MHSHU.js";import{readFileSync as C,existsSync as j,readdirSync as qt,mkdirSync as D,writeFileSync as O}from"fs";import{readFile as pt,unlink as $t}from"fs/promises";import{join as E}from"path";import{existsSync as Ct,mkdirSync as jt,readdirSync as at,writeFileSync as Dt}from"fs";import{join as x}from"path";import{randomUUID as v}from"crypto";var mt=["children","instructions","branches","module_content","true_branch","false_branch"];function H(n){let t=new Map,i=s=>{if(!s||typeof s!="object")return;let r=s;if(Array.isArray(r.operations))for(let e of r.operations){let o=e.operation_id;typeof o=="string"&&o&&!t.has(o)&&t.set(o,r)}for(let e of mt){let o=r[e];Array.isArray(o)?o.forEach(i):o&&typeof o=="object"&&i(o)}};return n.forEach(i),t}function J(n,t){let i=new Map;for(let s of n){let r=s.action_id?t.get(s.action_id):void 0;if(!r)continue;let e=i.get(r)??[];e.push(s),i.set(r,e)}return i.size===0?null:[...i].map(([s,r])=>Et(s,r))}function ht(n){if(!n.timestamp||n.duration_ms==null)return"";let t=new Date(n.timestamp);return isNaN(t.getTime())?"":new Date(t.getTime()+n.duration_ms).toISOString()}function G(n){if(n!=null)try{return JSON.parse(n)}catch{return n}}function K(n,t,i){let s=n.user_variables,r=typeof s=="string",e;try{e=r?JSON.parse(s):s??[]}catch{return}if(!Array.isArray(e)||e.length===0)return;let o=e.find(l=>t&&l.name===t)??(e.length===1?e[0]:void 0);o&&(o.value=i,n.user_variables=r?JSON.stringify(e):e)}function Et(n,t){let i=structuredClone(n),s=t[0],r=t[t.length-1];switch(i.status=t.find(e=>e.status!=="success")?.status??s.status,i.start_timestamp=s.timestamp??i.start_timestamp,i.end_timestamp=ht(r)||i.end_timestamp,i.content_type){case"api":{let e=r.action_params?.api_data?.response;e&&typeof e=="object"&&(i.api_data={...i.api_data??{},response:e},K(i,r.output_variable,e));break}case"script":{r.output_value!=null&&K(i,r.output_variable??i.output_variable_name,r.output_value);break}case"db_query":{r.output_value!=null&&(i.db_details={...i.db_details??{},carried_out_query:G(r.output_value)});break}case"screenshot_command":{let e=G(r.output_value);e&&typeof e=="object"&&(i.smartui_results=e);break}case"network_assertion":case"network_query":break;default:break}return i}var bt="/home/kaneai/Downloads";function N(n){return`${bt}/${n}`}function W(n){return"FILE__"+n.replace(/[^A-Za-z0-9]/g,"_")}function L(n){let t=n?.media;return!t||!t.name||!t.media_url?null:{media_id:t.media_id??"",name:t.name,media_url:t.media_url,type:t.type??"doc"}}function Z(n){return n?n.includes(`
|
|
3
3
|
`)?n.split(`
|
|
4
4
|
`).map(t=>t.trim()).filter(Boolean):n.split(". ").map(t=>t.trim()).filter(Boolean).map(t=>t.endsWith(".")?t:t+"."):[]}function w(n){return typeof n=="string"&&n.includes("{{secrets.")}var yt={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"},Q={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"},It=new Set(["CLICK","TYPE","FILL","HOVER","SCROLL_UNTIL_ELEMENT","UPLOAD_FILE","VISION_QUERY","DRAG_DROP","SELECT"]);function tt(n,t){if(n==="analyze"){let s=t?.action_params?.analyzer_type??"";return Q[s]}if(n==="scroll"&&t?.action_params?.into_view===!0)return"SCROLL_UNTIL_ELEMENT";let i=yt[n];return i||console.warn(`[migrator] UNKNOWN action_type "${n}" \u2014 falling back to "${n.toUpperCase()}"; explicit mapping required`),i??n.toUpperCase()}function et(n,t){if(!n||!t)return"";try{let i=new Date(n);return isNaN(i.getTime())?"":new Date(i.getTime()+t).toISOString()}catch{return""}}function nt(n){try{return JSON.parse(n.output_value??"{}")}catch{return{}}}function vt(n){let t=n.output_variable??"";if(!t)return"[]";let s={...nt(n)};return delete s.body,JSON.stringify([{name:t,unique_key:(n.action_id??"").replace(/-/g,"").slice(0,8)||v().replace(/-/g,"").slice(0,8),value:s,variable_description:"API Response"}])}function At(n,t,i){let s=n.action_params??{},r=It.has(t)?"Vision Agent":"Operation Agent",e={operation_type:t};if(t==="OPEN"&&(e.url=s.url??""),t==="SET_VARIABLE"&&(e.variable_name=n.output_variable??s.key??"",e.variable_value=n.output_value??""),t==="UPLOAD_FILE"){let g=L(s);g&&(e.value=N(g.name))}let o={},l={},a=n.action_instruction??"",c=s.text??"",u=s.url??"",p=[["intent",a],["value",c],["url",u]];for(let[g,h]of Object.entries(i)){let I=String(h);if(g.startsWith("secrets."))for(let[y,b]of p)b.includes(I)&&(l[y]=g);for(let[y,b]of p)b.includes(I)&&!(y in o)&&(o[y]=b)}let _=n.action_type,d={operation:n.action_instruction??"",agent:r,operation_dict:e,reasoning:_==="analyze"?s.query??"":n.intent??n.action_instruction??"",variable:o,secrets:l,params:{}};_==="analyze"&&typeof s.code=="string"&&s.code&&(d.code=s.code),_==="analyze"&&typeof s.code_js=="string"&&s.code_js&&(d.code_js=s.code_js),_==="analyze"&&typeof s.condition_expression=="string"&&s.condition_expression&&(d.condition_expression=s.condition_expression),s.uses_websocket===!0&&(d.uses_websocket=!0),s.uses_sse===!0&&(d.uses_sse=!0),_==="analyze"&&s.analyzer_type==="textual_visual"&&(typeof s.wrapped_js=="string"&&(d.wrapped_js=s.wrapped_js),Array.isArray(s.locators)&&(d.locators=s.locators),typeof s.operator=="string"&&(d.operator=s.operator),Array.isArray(s.transforms)&&(d.transforms=s.transforms),typeof s.query=="string"&&(d.query=s.query),typeof s.expected_value=="string"&&(d.expected_value=s.expected_value),typeof s.needs_unit_conversion=="boolean"&&(d.needs_unit_conversion=s.needs_unit_conversion),typeof s.condition=="string"&&(d.condition=s.condition));let m={set_cookies:"cookies",set_clipboard:"text",delete_cookies:"names",set_local_storage:"items",delete_local_storage:"keys"}[_];return m&&s[m]!==void 0&&(d[m]=s[m]),_==="set_clipboard"&&typeof s.html=="string"&&s.html&&(d.html=s.html),d}function Rt(n){let t=n.assertion_tree??{};if(typeof t.passed=="boolean")return t.passed;let i=t.sub_results??[];return i.length===0?t.status==="passed":(t.composite_operator??"and")==="or"?i.some(r=>r.passed===!0):i.every(r=>r.passed===!0)}function it(n){return n.map(t=>({description:t.description??"",store_key:t.store_key??"",expected_value:t.expected??"",extracted_value:t.extracted_value??"",operator:t.operator??"equals",transforms:t.transforms??[]}))}function Pt(n){let t=n.assertion_tree??{},i=t.sub_results??[],s=it(i);return{operator:[],assertion_operands:[],left_operand:null,right_operand:null,operands:[],sub_results:i,sub_checks:s,composite_operator:t.composite_operator??"and",verification:t.verification??"",claim:t.description??""}}function kt(n){let i=(n.action_params??{}).assertion_tree??{},s=i.sub_results??[],r=it(s);return[{operation:n.action_instruction??"",agent:"Operation Agent",operation_dict:{operation_type:"ASSERTION",assertion_tree:{sub_results:s,sub_checks:r,composite_operator:i.composite_operator??"and",verification:"",claim:i.description??n.action_instruction??"",operator:[],assertion_operands:[],left_operand:null,right_operand:null,operands:[]}},variable:{},secrets:{},params:{}}]}function xt(n,t,i,s){let r=n.visual_data;if(!r||r.x==null||r.y==null)return null;let e=t?`${t}/test_screenshots`:"";return{x:r.x,y:r.y,confidence:0,bbox:r.bbox??null,bbox_source:r.bbox?"accessibility_tree":"fallback",viewport_width:r.viewport_width??1280,viewport_height:r.viewport_height??800,scale_factor:null,raw_image_url:e?`${e}/untagged_screenshot/${i}.${s?.get(i)??"png"}`:"",raw_image_sas_url:"",annotated_image_url:"",annotated_image_sas_url:""}}function Ot(n){if(!n)return"";let t=n;return typeof n=="object"&&!Array.isArray(n)&&Array.isArray(n.frameInfo)&&(t=n.frameInfo),!Array.isArray(t)||t.length===0?"":JSON.stringify(t)}function St(n){return/^(android|ios)_native$/i.test(n.platform??"")}function st(n,t){return n.map(i=>({...i,type:t?i.strategy??i.type??"native":i.isXPath?"xpath":"css"}))}function Nt(n,t,i){let s={selector_target:"",drag_displacement:{},hold_duration_ms:null,move_duration_ms:null,hold_at_destination_ms:null};if(n!=="drag")return s;let r=t.target_selectors,e={};typeof t.direction=="string"&&t.direction&&(e.direction=t.direction,typeof t.fraction=="number"&&(e.fraction=t.fraction));let o=l=>typeof t[l]=="number"?Math.trunc(t[l]):null;return{selector_target:Array.isArray(r)&&r.length>0?st(r,i):"",drag_displacement:e,hold_duration_ms:o("hold_duration_ms"),move_duration_ms:o("move_duration_ms"),hold_at_destination_ms:o("hold_at_destination_ms")}}function X(n,t="",i){let s=n.action_type,r=tt(s,n),e=n.action_params??{},o=n.coordinates??null,l=n.selectors??null,a=!!(l&&l.length>0),c=St(n),u=Nt(s,e,c),p=n.timestamp??"",_=n.duration_ms??0,d=n.variables_used??{},f=n.action_id??v(),m=v(),g=et(p,_),h="",I="";if(s==="navigate")I=e.url??"",h=I;else if(s==="type"||s==="fill")h=e.text??"";else if(s==="press_key")h=e.key??"";else if(s==="wait")h=String(e.ms??e.timeout_ms??"");else if(s==="evaluate_js")h=e.script??"";else if(s==="upload_files"){let U=L(e);U&&(h=N(U.name))}else s==="analyze"&&r==="SET_VARIABLE"&&(h=n.output_value??"");let y="";s==="go_back"?y="back":s==="go_forward"&&(y="forward");let b=n.action_instruction??"",A=w(h)||w(I)||w(b),S=At(n,r,d);return{operation_id:f,instruction_id:m,instruction:b,intent:b,operation_start:p,operation_end:g,status:n.status??"",command:r,name:"",target:"",value:h,message:"",operation_dict:"",frame:Ot(n.frame_info),error_message:n.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:t?`${t}/test_screenshots/untagged_screenshot/${f}.${i?.get(f)??"png"}`:"",alternative_xpaths:[],attribute:"",value_description:"",url:I,navigation_direction:y,tagified_image_url:"",query_variable_name:n.output_variable??"",query_variable_value:n.output_value??"",query_variable_type:"",expected_value:"",queried_value:"",operator:"",assertion_status:r==="ASSERTION"?Rt(e):"",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(e.tab_index??""),tab_identifier:String(e.tab_identifier??""),scroll_value:e.amount??1,scroll_direction:e.direction??"",mi_scroll_payload:{},sleep_duration:0,app_id:"",manual_interaction_tag:"",string_to_float_list:[],js_snippet:s==="evaluate_js"?e.script??"":"",code_error:"",hide:A,dismiss_dialog:!1,use_v2_mobile_tagging:c,multiple_inputs:!1,dialog_action:"",dialog_type:"",is_coordinates_used_for_interaction:o!==null&&!a,element_coordinates_ratio:[],element_bounds_ratio:[],x_coord:a?null:o?.x??null,y_coord:a?null:o?.y??null,target_x_coord:e.target_x??null,target_y_coord:e.target_y??null,source_description:e.source_description??null,target_description:e.target_description??null,use_coordinates:o!==null&&!a,kaneaiMobileTaggingImageLimit:1,clicks_order_code:"se_js_ac",selector:a?st(l,c):"",selector_target:u.selector_target,math_result_variable_name:"",math_result_variable_value:"",expression_tree:r==="ASSERTION"?Pt(e):e.expression_tree??{},assertion_tree:e.assertion_tree??{},assertion_tree_simplified:{},network_throttle:{},is_mobile_offline:!1,autoheal:!1,reprobe:n.reprobe??!1,click_modifier:(e.click_count??1)>=2?{kind:"multi_click",frequency:e.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:{},drag_displacement:u.drag_displacement,hold_duration_ms:u.hold_duration_ms,move_duration_ms:u.move_duration_ms,hold_at_destination_ms:u.hold_at_destination_ms,start_coordinates:e.source_coordinates?{x:e.source_coordinates[0],y:e.source_coordinates[1]}:{},end_coordinates:e.target_coordinates?{x:e.target_coordinates[0],y:e.target_coordinates[1]}:{},element_rect:null,is_canvas:!1,until_condition:"",until_max_retries:0,until_settle_ms:0,api_data:s==="api"?{request:n.action_params?.api_data?.request??{}}:{},output_variables:s==="api"?n.output_variable?{[n.output_variable]:null}:{}:n.output_variable?{[n.output_variable]:n.output_value??""}:{},visual_context:xt(n,t,f,i),reasoning:s==="analyze"?e.query??"":n.intent??n.action_instruction??""}}function Y(n,t){let i=n.action_type,s=tt(i,n),r=n.timestamp??"",e=n.duration_ms??0,o=et(r,e),l=s==="ASSERTION"||s==="MATHEMATICAL_OPERATION";return{instruction_id:t.instruction_id,instruction_class:l?"non_driver_action":"driver_action",module_id:"",instruction:n.action_instruction??"",command:s,error:null,parent_instruction_id:"",classification_layer_resp:s==="ASSERTION"?kt(n):[],classification_error:{},operations:[t],status:n.status??"",start_timestamp:r,end_timestamp:o,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"&&n.action_params?.analyzer_type==="api_response"?"api_calls_query":i==="analyze"&&n.action_params?.analyzer_type?.startsWith("devtool_")?n.action_params.analyzer_type.replace("devtool_","devtools_"):"instruction",js_snippet:i==="evaluate_js"?n.action_params?.script??"":"",user_variables:i==="api"?vt(n):"[]",api_data:i==="api"?{request:n.action_params?.api_data?.request??{},response:nt(n)}:{},params_used:!1,hard_assertion:s==="ASSERTION"?n.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"?n.action_params?.query??"":n.intent??n.action_instruction??""}}function Lt(n,t=[]){let i=n.action_params??{},s=i.branches??[],r=i.winning_index??-1,e=i.sub_results??[],o={};for(let a of e){let c=a.sub_results;if(c)for(let u of c){let p=u.store_key;p&&(o[p]=u)}}let l=s.map((a,c)=>{let u=c===r,p=(a.sub_checks??[]).map(_=>{let d=o[_.store_key];return{description:_.description,store_key:_.store_key,expected_value:_.expected_value,stored_value:d?.extracted_value??_.stored_value,operator:_.operator??d?.operator??"equals",transforms:_.transforms??d?.transforms??[]}});if(p.length===0&&a.condition&&e.length>0){let d=e.find(f=>f.branch_index===c)?.sub_results??[];d.length>0&&(p=d.map(f=>({description:f.description??a.condition,store_key:f.store_key??"",expected_value:f.expected??"true",stored_value:f.extracted_value??void 0,operator:f.operator??"equals",transforms:f.transforms??[]})))}return{branch_index:c,condition:a.condition??null,branch_type:a.branch_type??"sub_objective",passed:u,sub_objective:null,custom_event:a.custom_event??null,children:u?t:[],sub_checks:a.condition?p:[],composite_operator:a.composite_operator??"and"}});return{content_type:"conditional_block",instruction_id:`if_else_${v().slice(0,8)}`,instruction:n.action_instruction??"",instruction_class:"driver_action",command:"",status:n.status??"success",resolved_branch_index:r,branches:l,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:n.timestamp??"",end_timestamp:"",type:"agent_generated",hook:null,hook_type:null,evaluation_context:{},query_variables:{}}}function rt(n,t,i){for(let s of n)s.content_type==="instruction"&&"generative_id"in s&&(s.generative_id=t,s.generative_objective=i)}function T(n,t="",i,s){let r=[],e=0;for(;e<n.length;){let o=n[e],l=o.action_type;if(!s?.keepFailedActions&&o.status==="error"&&l!=="assert"&&l!=="if_else"&&l!=="child_agent_start"&&l!=="child_agent_end"&&!(o.until_condition&&!o.error)){e+=1;continue}if(l==="analyze"&&(!Q[o.action_params?.analyzer_type??""]||o.action_params?.analyzer_type==="textual_visual"&&o.action_params?.code)){e+=1;continue}if(l==="child_agent_start"){let a=o.action_params?.child_id??"",c=o.action_params?.objective??"",u=[];e+=1;let p=1,_="error",d;for(;e<n.length&&p>0;){let A=n[e],S=A.action_type;if(S==="child_agent_start")p+=1;else if(S==="child_agent_end"&&(p-=1,p===0)){_=A.status??"success",d=A,e+=1;break}p>0&&u.push(A),e+=1}let f=T(u,t,i);rt(f,a,c);let m=d?.action_params?.result_code??null,g=d?.action_params?.reason_code??null,h=d?.action_params?.error_message??null,I=d?.action_params?.summary??null,y=d?.action_params?.one_liner??null,b=_==="error";r.push({content_type:"generative_block",instruction_id:`generative_block_${a}`,generative_id:a,objective:c,status:_,children:f,error_message:b?h??null:null,error_code:b?g??null:null,result_code:m??null,bifurcation_context:[],approach_reason:Z(I),one_liner:y??null});continue}else if(l==="child_agent_end"){e+=1;continue}else if(l==="if_else"){e+=1;let a=[];for(;e<n.length&&n[e].action_type==="child_agent_start";){let c=n[e],u=c.action_params?.child_id??"",p=c.action_params?.objective??"",_=[];e+=1;let d=1,f="error";for(;e<n.length&&d>0;){let g=n[e];if(g.action_type==="child_agent_start")d+=1;else if(g.action_type==="child_agent_end"&&(d-=1,d===0)){f=g.status??"success",e+=1;break}d>0&&_.push(g),e+=1}let m=T(_,t,i);a.push(...m)}r.push(Lt(o,a));continue}else if(l==="query_tool"){e+=1;continue}else if(o.until_condition){let a=X(o,t,i),c=Y(o,a),u=typeof o.until_condition_met=="boolean"?o.until_condition_met:o.status==="success";r.push({content_type:"until_block",instruction_id:`until_${v().slice(0,8)}`,condition:o.until_condition,max_retries:o.until_max_retries??10,settle_ms:o.until_settle_ms??500,current_count:0,condition_met:u,children:[c],generative_id:"",generative_objective:"",variables_used:{},status:o.status??"success"})}else{let a=X(o,t,i),c=Y(o,a);r.push(c)}e+=1}return r}function k(n,t="",i,s){let r=[],e=[],o=s?.passthrough,l=o?H(o.authoredInstructions):null;for(let c of n){if(o&&l&&c.flatIndex!==void 0&&o.replayOnlyFlatIndices.has(c.flatIndex)){let g=J(c.records,l);if(g){for(let h of g)r.push(h),e.push(c.flatIndex);continue}console.warn(`[migrator] replay-only passthrough: no authored operation matched step ${c.flatIndex} (action_id \u2260 any operation_id in the authored blob) \u2014 falling back to this run's records`)}let u=T(c.records,t,i,s);if(u.length===0)continue;let p=v().replace(/-/g,"");rt(u,p,c.objective);let _=u.some(g=>"status"in g&&typeof g.status=="string"?g.status==="error"||g.status==="failed":!1),d=c.resultCode?parseInt(c.resultCode,10):null,f=d!==null&&!isNaN(d)&&d>=200,m=_||f?"error":"success";r.push({content_type:"generative_block",instruction_id:`generative_block_${p}`,generative_id:p,objective:c.objective,status:m,children:u,error_message:m==="error"?c.errorMessage??null:null,error_code:m==="error"?c.reasonCode??null:null,result_code:c.resultCode??null,bifurcation_context:[],approach_reason:Z(c.summary),one_liner:c.oneLiner??null}),e.push(c.flatIndex)}let a=s?.moduleSpans??[];return a.length===0?{instructions:r}:{instructions:ot(r.map((c,u)=>({block:c,flat:e[u]})),a)}}function ot(n,t){let i=[],s=e=>e===void 0?void 0:t.find(o=>e>=o.flatFrom&&e<=o.flatTo),r=0;for(;r<n.length;){let e=s(n[r].flat);if(!e){i.push(n[r].block),r++;continue}let o=[];for(;r<n.length&&s(n[r].flat)===e;)o.push(n[r++]);i.push(Tt(e,ot(o,e.children)))}return i}function wt(n){for(let t of n){let i="status"in t&&typeof t.status=="string"?t.status:"";if(i==="error"||i==="failed"){let s="error_message"in t?t.error_message:void 0,r="error_code"in t?t.error_code:void 0;return{message:s??null,code:r??null}}}return null}function Tt(n,t){let i=n.meta,s=(c,u="")=>typeof i[c]=="string"?i[c]:u,r=(c,u=!1)=>typeof i[c]=="boolean"?i[c]:u,e=c=>Array.isArray(i[c])?i[c]:[],o=typeof i.module_version=="number"||typeof i.module_version=="string"?i.module_version:null,l=s("module_id"),a=wt(t);return{content_type:V,instruction_id:`module_block_${l}`,module_id:l,module_version:o,module_instance_id:v(),module_name:s("module_name"),module_description:s("module_description"),module_platform:s("module_platform"),creation_mode:s("creation_mode","Agent"),tms_status:s("tms_status","active"),is_validated:r("is_validated"),is_dirty:n.dirty,enrichment_id:s("enrichment_id"),tags:e("tags"),project_ids:e("project_ids"),link_to_all:r("link_to_all"),status:a?"error":"success",children:t,error_message:a?.message??null,error_code:a?.code??null,update_available:!1,update_info:{}}}function ct(n,t){let i;try{i=at(n)}catch{return 0}let s=0,r=i.filter(e=>/^\d+$/.test(e)).sort((e,o)=>Number(e)-Number(o));for(let e of r){let o=x(n,e),l=x(o,"logs");if(!Ct(l))continue;let a;try{a=at(l)}catch{continue}let c=a.filter(_=>_.endsWith("-actions.ndjson")).sort((_,d)=>(parseInt(_,10)||0)-(parseInt(d,10)||0)),u=[];for(let _ of c){let d=t.readActions(x(l,_));d.length&&u.push({objective:t.objective??"",records:d})}if(u.length===0)continue;let{instructions:p}=k(u,t.screenshotBaseUrl??"",t.extMap,{keepFailedActions:!0});if(p.length!==0)try{let _=x(o,"auteur");jt(_,{recursive:!0}),Dt(x(_,"execution.json"),JSON.stringify(t.buildBlob(p),null,2)),s++,t.log?.("info","EVIDENCE_ARCHIVED_ATTEMPT_BLOB","Derived nested attempt blob",{attempt:e,instructions:p.length})}catch(_){t.log?.("debug","EVIDENCE_ARCHIVED_ATTEMPT_BLOB_FAILED","Nested attempt blob derivation failed",{attempt:e,error:_ instanceof Error?_.message:String(_)})}}return s}var lt=gt(ft(),1);import{createWriteStream as Ut}from"fs";import{readFile as Ft}from"fs/promises";import{join as Mt,basename as Bt}from"path";import{tmpdir as zt}from"os";var Vt=["**/screenshots/**","**/annotated/**","**/tcg/**","**/bifurcation/**"];async function ut(n){let t=Mt(zt(),`${Bt(n)}_artifacts.zip`);return new Promise((i,s)=>{let r=Ut(t),e=(0,lt.default)("zip",{zlib:{level:6}});r.on("close",()=>i(t)),e.on("error",s),e.pipe(r),e.glob("**/*",{cwd:n,ignore:Vt}),e.finalize()})}async function dt(n){return Ft(n)}async function Gt(n,t){return pt(z(n,t))}function Kt(n){return{key:"artifacts",content_type:"application/zip",filename:`${n}.evidence`}}var _t=class{config;controller;testId;constructor(t){this.config=t,this.controller=new M(t.controllerBaseUrl,t.auth),this.testId=t.testId}log(t,i,s,r){this.config.log?.(t,i,s,r)}async execute(){let{onProgress:t}=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 i=this.config.evidence,s=null;if(this.config.shouldUploadArtifacts!==!1){t("convert","running");let l=this.collectNdjsonPerRun(),a=l.reduce((m,g)=>m+g.records.length,0);this.log("info","PIPELINE_CONVERT","Collected NDJSON records",{total_records:a,run_groups:l.length});let c=this.loadReplayOnlyPassthrough(),{instructions:u}=l.length>0?k(l,this.config.screenshotBaseUrl??"",this.config.screenshotExtMap,{moduleSpans:this.config.moduleSpans,...c?{passthrough:c}:{}}):{instructions:[]};this.log("info","PIPELINE_CONVERT_INSTRUCTIONS","Auteur instructions produced",{count:u.length});let p=this.buildExecutionEnvelope(u),_=Buffer.from(JSON.stringify(p));this.log("info","PIPELINE_CONVERT_BLOB","Blob created",{size_kb:+(_.length/1024).toFixed(1)});let d=E(this.config.sessionDir,"execution.json");O(d,JSON.stringify(p,null,2)),this.log("info","PIPELINE_CONVERT_LOCAL_SAVE","Execution blob saved locally",{path:d});let f=i?.packTestDir??this.config.evidenceRead?.packTestDir;if(f){let m=E(f,"auteur");D(m,{recursive:!0}),O(E(m,"execution.json"),JSON.stringify(p,null,2)),this.log("info","PIPELINE_CONVERT_PACK_COPY","Execution blob copied into pack",{path:E(m,"execution.json")}),this.deriveArchivedAttemptBlobs(f)}if(t("convert","done"),i)s=_;else{t("zip","running"),this.log("info","PIPELINE_ZIP_START","Zipping session",{session_dir:this.config.sessionDir});let m=null,g;try{m=await ut(this.config.sessionDir),g=await dt(m),this.log("info","PIPELINE_ZIP_DONE","Zip complete",{size_mb:+(g.length/1024/1024).toFixed(1),path:m}),t("zip","done",`${(g.length/1024/1024).toFixed(1)}MB`)}finally{m&&await $t(m).catch(()=>{})}t("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}),t("presign","done"),t("upload","running"),this.log("info","PIPELINE_UPLOAD_START","Uploading artifacts and blob",{artifact_size_mb:+(g.length/1024/1024).toFixed(1),blob_size_kb:+(_.length/1024).toFixed(1)}),await Promise.all([R(h.urls.artifacts.upload_url,g,"application/zip"),R(h.urls.blob.upload_url,_,"application/json")]),this.log("info","PIPELINE_UPLOAD_OK","Upload complete"),t("upload","done")}}else{let l=this.collectNdjsonPerRun(),a=this.loadReplayOnlyPassthrough(),{instructions:c}=l.length>0?k(l,this.config.screenshotBaseUrl??"",this.config.screenshotExtMap,{keepFailedActions:!0,moduleSpans:this.config.moduleSpans,...a?{passthrough:a}:{}}):{instructions:[]},u=this.buildExecutionEnvelope(c),p=E(this.config.sessionDir,"execution.json");O(p,JSON.stringify(u,null,2)),this.log("info","PIPELINE_LOCAL_SAVE","Execution blob saved locally (no upload)",{path:p});let _=this.config.evidence?.packTestDir??this.config.evidenceRead?.packTestDir;if(_){let d=E(_,"auteur");D(d,{recursive:!0});let f=this.readAuthoredExecution();O(E(d,"execution.json"),f??JSON.stringify(u,null,2)),this.log("info","PIPELINE_CONVERT_PACK_COPY","Execution blob copied into pack (gated)",{path:E(d,"execution.json"),source:f?"authored":"run_envelope"}),this.deriveArchivedAttemptBlobs(_)}t("convert","skipped"),t("zip","skipped"),t("presign","skipped"),t("upload","skipped"),this.log("info","PIPELINE_UPLOAD_SKIPPED","Upload steps skipped (gate disabled)")}if(this.config.shouldReplaceLocalOutput&&this.config.onAtomicReplace){t("atomic_replace","running");try{await this.config.onAtomicReplace(),this.log("info","PIPELINE_ATOMIC_REPLACE_OK","Local output replaced"),t("atomic_replace","done")}catch(l){let a=l instanceof Error?l.message:String(l);throw this.log("error","PIPELINE_ATOMIC_REPLACE_FAILED","Atomic-replace failed",{error:a}),t("atomic_replace","failed",a),l}}else t("atomic_replace","skipped");let r,e;if(this.config.shouldCommit&&!this.config.isFirstRun&&this.config.onCommitLock){t("commit_lock","running");let l=await this.config.onCommitLock();if(l.ok)r=l.testcaseId||void 0,this.log("info","PIPELINE_COMMIT_LOCK_OK","Commit lock acquired",{testcase_id:r??"none",trigger:l.trigger??null,test_instance_id:l.testInstanceId??null}),t("commit_lock","done");else return this.log("error","PIPELINE_COMMIT_LOCK_FAILED","Commit lock failed",{reason:l.reason,message:l.message}),t("commit_lock","failed",`${l.reason??"unknown"}: ${l.message??""}`),{success:!1,testId:this.testId,error:`commit-lock failed: ${l.reason??"unknown"}`}}else t("commit_lock","skipped");if(this.config.isFirstRun&&!this.config.skipTmsFinalize){t("finalize","running"),this.log("info","PIPELINE_FINALIZE_START","Finalizing test (first-run)",{test_id:this.testId,commit_id:this.config.commitId});let l=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(r=(await l.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:r??"none"}),this.config.onFinalizeSuccess)try{await this.config.onFinalizeSuccess(r)}catch(u){this.log("warn","PIPELINE_FINALIZE_META_FAILED","Meta-rewrite after endTest failed",{error:String(u)})}t("finalize","done")}else t("finalize","skipped"),this.log("info","PIPELINE_FINALIZE_SKIPPED","Finalize skipped (evolve flow or first-run disabled)");if(r&&this.config.shareApiBaseUrl)try{e=await this.generateShareLink(r),this.log("info","PIPELINE_SHARE_OK","Share link generated",{share_id:e})}catch(l){this.log("warn","PIPELINE_SHARE_FAILED","Share link failed",{error:String(l)})}if(i&&s){let l=null;t("zip","running");try{await i.sealFn({testcaseId:r,shareId:e}),l=i.sealedPackPath?await pt(i.sealedPackPath):await Gt(i.executionId,i.cwd),this.log("info","PIPELINE_EVIDENCE_SEALED","Evidence pack sealed",{execution_id:i.executionId}),this.log("info","PIPELINE_PACK_READ","Sealed pack read",{size_mb:+(l.length/1024/1024).toFixed(1)})}catch(a){let c=a instanceof Error?a.message:String(a);this.log("warn","PIPELINE_EVIDENCE_UPLOAD_SKIPPED","Evidence seal/read failed \u2014 uploading blob only",{execution_id:i.executionId,error:c})}if(l){t("zip","done",`${(l.length/1024/1024).toFixed(1)}MB`),t("presign","running");let a=await this.controller.getPresignedUrls(this.testId,this.config.sessionId,[Kt(i.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}),t("presign","done"),t("upload","running"),this.log("info","PIPELINE_UPLOAD_START","Uploading pack and blob",{artifact_size_mb:+(l.length/1024/1024).toFixed(1),blob_size_kb:+(s.length/1024).toFixed(1)}),await Promise.all([R(a.urls.artifacts.upload_url,l,"application/zip"),R(a.urls.blob.upload_url,s,"application/json")]),this.log("info","PIPELINE_UPLOAD_OK","Upload complete"),t("upload","done")}else{t("zip","skipped"),t("presign","running");let a=await this.controller.getPresignedUrls(this.testId,this.config.sessionId,[{key:"blob",content_type:"application/json",filename:`${this.config.commitId}.json`}]);t("presign","done"),t("upload","running"),this.log("info","PIPELINE_UPLOAD_START","Uploading blob only (evidence skipped)",{blob_size_kb:+(s.length/1024).toFixed(1)}),await R(a.urls.blob.upload_url,s,"application/json"),this.log("info","PIPELINE_UPLOAD_OK","Blob upload complete (pack skipped)"),t("upload","done")}}let o;if(this.config.codeExport?.enabled&&r){let l=!1;try{await this.triggerCodeExport(r),this.log("info","PIPELINE_CODE_EXPORT_START","Code export triggered"),l=!0}catch(a){let c=a instanceof Error?a.message:String(a);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export trigger failed; skipping poll",{error:c}),t("code_export","failed",`trigger failed: ${c}`)}if(l){t("code_export","running","Waiting for code generation\u2026");try{o=await this.pollAndDownloadCode(r,t),this.log("info","PIPELINE_CODE_EXPORT_OK","Code export complete",{dir:o}),t("code_export","done",o)}catch(a){let c=a instanceof Error?a.message:String(a);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export failed",{error:c}),t("code_export","failed",c)}}}else t("code_export","skipped");return this.log("info","PIPELINE_COMPLETE","Pipeline complete"),{success:!0,testId:this.testId,testcaseId:r,shareId:e,codeExportDir:o}}catch(i){return{success:!1,testId:this.testId,error:i instanceof Error?i.message:String(i)}}}async runCodeExport(t,i){let s=i??this.config.onProgress,r=!1;try{await this.triggerCodeExport(t),this.log("info","PIPELINE_CODE_EXPORT_TRIGGER","Code export triggered",{testcase_id:t}),r=!0}catch(e){let o=e instanceof Error?e.message:String(e);this.log("error","PIPELINE_CODE_EXPORT_TRIGGER_FAILED","Code export trigger failed; skipping poll",{error:o}),s("code_export","failed",`trigger failed: ${o}`)}if(r){s("code_export","running","Waiting for code generation\u2026");try{let e=await this.pollAndDownloadCode(t,s);return this.log("info","PIPELINE_CODE_EXPORT_OK","Code export complete",{dir:e}),s("code_export","done",e),e}catch(e){let o=e instanceof Error?e.message:String(e);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export failed",{error:o}),s("code_export","failed",o);return}}}deriveArchivedAttemptBlobs(t){try{let i=ct(t,{readActions:s=>this.readNdjsonFromFile(s),buildBlob:s=>this.buildExecutionEnvelope(s),objective:this.config.firstObjective,screenshotBaseUrl:this.config.screenshotBaseUrl??"",extMap:this.config.screenshotExtMap,log:(s,r,e,o)=>this.log(s,r,e,o)});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 t=[],i=this.config.runObjectives??[],s=this.config.runMetadata??[],r=this.config.evidence??this.config.evidenceRead;for(let e=0;e<this.config.runDirs.length;e++){let o=this.config.runDirs[e],l=i[e]||this.config.firstObjective,a=s[e],c=r?this.readNdjsonFromFile(E(r.packTestDir,"logs",`${r.runIndices?.[e]??e}-actions.ndjson`)):this.readNdjsonFromDir(o);if(c.length>0){let u=r?.runIndices?.[e]??e,p=this.config.runFlatIndex?.[u];t.push({objective:l,records:c,...p!==void 0?{flatIndex:p}:{},resultCode:a?.resultCode,reasonCode:a?.reasonCode,errorMessage:a?.errorMessage,summary:a?.summary,oneLiner:a?.oneLiner})}}if(t.length===0){let e=E(this.config.sessionDir,"runs");if(j(e))try{let l=qt(e,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name).sort();for(let a of l){let c=E(e,a),u=this.readNdjsonFromDir(c);u.length>0&&t.push({objective:this.config.firstObjective,records:u})}}catch{}}return t}readNdjsonFromDir(t){let i=[E(t,"run-test","actions.ndjson"),E(t,"actions.ndjson")];for(let s of i)if(j(s))return this.readNdjsonFromFile(s);return[]}readNdjsonFromFile(t){let i=[];if(!j(t))return i;this.log("debug","PIPELINE_COLLECT_READ","Reading NDJSON file",{path:t});let s=C(t,"utf-8");for(let r of s.split(`
|
|
5
5
|
`)){let e=r.trim();if(e)try{i.push(JSON.parse(e))}catch{}}return i}async generateShareLink(t){let i=`${this.config.shareApiBaseUrl}/lshs/api/v1.0/share-item/generate-sharable-link`;this.log("info","PIPELINE_SHARE_START","Requesting share link",{url:i,testcase_id:t});let s={method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({entityIds:[t],entityType:"Test Case Details",expiresAt:7})},r=!!this.config.authResolver;this.log("debug","PIPELINE_SHARE_AUTH","Share link auth config",{resolver:r,fallback_auth_type:typeof this.config.auth=="string"?"bearer":"basic",tms_user:this.config.tmsUsername});let e=r?await this.config.authResolver.fetch(i,s):await P(i,{...s,headers:{...s.headers,Authorization:this.buildAuthHeader()}});if(!e.ok)throw new Error(`Share link API failed: ${e.status} ${await e.text()}`);let o=await e.json();if(!o.shareId)throw new Error("Share link API returned no shareId");return o.shareId}async triggerCodeExport(t){if(!this.config.codeExport)throw new Error("triggerCodeExport called without resolved codeExport config");let{url:i,body:s}=q({tmsBaseUrl:this.config.tmsBaseUrl,testcaseId:t,codeExport:this.config.codeExport,mobile:this.config.mobile});this.log("info","PIPELINE_CODE_EXPORT_POST","Triggering code export",{url:i});let r={method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(s)},e=this.config.authResolver?await this.config.authResolver.fetch(i,r):await P(i,{...r,headers:{...r.headers,Authorization:this.buildAuthHeader()}});if(!e.ok)throw new Error(`Code export failed: ${e.status} ${await e.text()}`)}async pollAndDownloadCode(t,i){let s=$({tmsBaseUrl:this.config.tmsBaseUrl,testcaseId:t}),r=this.config.exitTimeoutMs??3e5,e=5e3,o=Date.now()+r;this.log("info","PIPELINE_CODE_EXPORT_POLL","Polling for code export",{url:s,timeout_ms:r});let l=(a,c)=>this.config.authResolver?this.config.authResolver.fetch(a,c):P(a,{...c,headers:{...c?.headers,Authorization:this.buildAuthHeader()}});for(;Date.now()<o;){let a=await l(s,{method:"GET",headers:{Accept:"application/json"}});if(!a.ok){let d=await a.text().catch(()=>"");throw this.log("warn","PIPELINE_CODE_EXPORT_POLL_FAILED","Code export poll non-200; skipping",{status:a.status,body:d.slice(0,200)}),new Error(`code export poll skipped: HTTP ${a.status}`)}let u=(await a.json()).data?.find(d=>d.code_name==="kane-cli-trigger");if(!u){this.log("debug","PIPELINE_CODE_EXPORT_WAITING","No kane-cli-trigger entry yet"),i("code_export","running","Waiting for code generation\u2026"),await this.sleep(e);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}),i("code_export","running","Generating code\u2026"),await this.sleep(e);continue}if(!u.url||u.url.length===0)throw new Error(`Code export status=${u.status} but no files returned`);let _=this.config.codeExportDir??E(this.config.sessionDir,"code-export");D(_,{recursive:!0}),this.log("info","PIPELINE_CODE_EXPORT_DOWNLOAD","Downloading code files",{file_count:u.url.length,dir:_}),i("code_export","running",`Downloading ${u.url.length} files\u2026`);for(let d of u.url){let f=E(_,d.file_name),m=await P(d.file_url);if(!m.ok){this.log("warn","PIPELINE_CODE_EXPORT_FILE_FAILED","Failed to download file",{file_name:d.file_name,status:m.status});continue}let g=await m.text();O(f,g,"utf-8"),this.log("info","PIPELINE_CODE_EXPORT_FILE_SAVED","File saved",{file_name:d.file_name,size_bytes:g.length})}return _}throw new Error("Code export timed out")}sleep(t){return new Promise(i=>setTimeout(i,t))}buildAuthHeader(){return typeof this.config.auth=="string"?`Bearer ${this.config.auth}`:F(this.config.auth.username,this.config.auth.accessKey)}readAuthoredExecution(){let t=this.config.authoredExecutionPath;if(!t)return null;try{let i=C(t,"utf8");return JSON.parse(i),i}catch{return this.log("warn","PIPELINE_AUTHORED_BLOB_UNREADABLE","Authored execution.json missing/unreadable \u2014 pack gets this run's envelope",{path:t}),null}}loadReplayOnlyPassthrough(){let t=this.config.replayOnlyPassthrough;if(!(!t||t.flatIndices.length===0))try{let i=JSON.parse(C(t.authoredExecutionPath,"utf8"));if(!Array.isArray(i.instructions))throw new Error("no instructions array");return{authoredInstructions:i.instructions,replayOnlyFlatIndices:new Set(t.flatIndices)}}catch(i){this.log("warn","PIPELINE_PASSTHROUGH_BLOB_UNREADABLE","Authored execution.json missing/unreadable \u2014 replay-only steps convert from this run's records",{path:t.authoredExecutionPath,flat_indices:t.flatIndices,error:i instanceof Error?i.message:String(i)});return}}buildExecutionEnvelope(t){let i=this.config.runStatuses.every(c=>c==="passed")?"success":"error",s=this.config.variableIds??{},r=[];if(this.config.variables)for(let[c,u]of Object.entries(this.config.variables)){if(u.secret)continue;let p=c.startsWith("global.")?c.slice(7):c;r.push({id:s[p]??0,name:p,value:u.value,session_value:u.value,is_persist:!1,environment_id:0,environment_name:"No Env"})}let e=[],o=c=>{let u=e.find(p=>p.name===c.name);u?u.value=c.value:e.push(c)},l=[],a=new Set;for(let c of this.collectNdjsonPerRun())for(let u of c.records)if(u.output_variable&&u.output_value!=null&&o({name:u.output_variable,value:String(u.output_value),value_type:"test_level",variable_description:"ANALYZE result"}),u.action_type==="upload_files"){let p=L(u.action_params);if(p){let _=p.media_id||p.media_url;if(!a.has(_)){a.add(_),l.push({media_url:p.media_url,media_id:p.media_id,name:p.name,type:p.type});let d=N(p.name);o({name:W(p.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:i,commit_id:this.config.commitId,instructions:t,modules:[],uploaded_files:l,test_params:[],test_level_variables:JSON.stringify(e),test_global_variables:r,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{Gt as a,Kt as b,_t as c};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as $}from"./chunk-MMBBQ4OZ.js";import{j as h}from"./chunk-
|
|
2
|
+
import{a as $}from"./chunk-MMBBQ4OZ.js";import{j as h}from"./chunk-NU45ROHH.js";import{a as w}from"./chunk-RZ4F3BHX.js";import{b as v}from"./chunk-33GXXC2L.js";import{spawn as V,spawnSync as _}from"child_process";import{createServer as K}from"net";import{mkdirSync as g,openSync as W,readFileSync as I,renameSync as j,rmSync as x,statSync as Y,writeFileSync as M}from"fs";import{readFile as q}from"fs/promises";import{dirname as l,join as y}from"path";var G=[4723,4724,4725,4726,4727,4728,4729,4730],X={emulator:4750,simulator:4790},z=40,E=2e3,D=3e4,T=500,Ce=["emulator","simulator"];function Q(e){return y(v,"mobile",`appium-server-${e}.log`)}function m(){return y(v,"mobile","appium-servers.json")}function Z(){return y(v,"mobile","appium-servers.lock")}var ee=1e4,re=50;function C(e){let r=Z();try{g(l(r),{recursive:!0})}catch{return e()}let n=!1;for(let o=0;o<re;o++)try{g(r),n=!0;break}catch{try{Date.now()-Y(r).mtimeMs>ee&&x(r,{recursive:!0,force:!0})}catch{}ne(10)}try{return e()}finally{if(n)try{x(r,{recursive:!0,force:!0})}catch{}}}function ne(e){try{Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,e)}catch{}}function te(){try{let e=JSON.parse(I(m(),"utf8"));return Array.isArray(e)?e:[]}catch{return[]}}function oe(e){let r=m();g(l(r),{recursive:!0});let n=`${r}.tmp`;M(n,JSON.stringify(e,null,2)),j(n,r)}function se(e,r,n){return`Another mobile session is already running${n?` on ${n}`:""}. Wait for it to finish, or close the terminal running it.`}var A=class extends Error{constructor(n,o){super(n);this.port=o;this.name="DeviceBusyError"}};function ie(e){return w(e,{signal:AbortSignal.timeout(E)}).then(r=>r.ok,()=>!1)}async function ae(e,r){try{return(await w(`http://127.0.0.1:${e}/session/${r}`,{method:"DELETE",signal:AbortSignal.timeout(E)})).ok}catch{return!1}}function R(e){let r=e?.value;return Array.isArray(r)?r.map(n=>{let o=n??{},t=o.capabilities??o;return{...typeof o.id=="string"?{id:o.id}:{},caps:t}}):[]}async function ue(e){try{let r=await w(`http://127.0.0.1:${e}/sessions`,{signal:AbortSignal.timeout(E)});return r.ok?R(await r.json()):[]}catch{return[]}}var ce=["udid","appium:udid","deviceUDID","appium:deviceUDID","deviceName","appium:deviceName"];function L(){let e=r=>{try{let n=_("curl",["-s","--noproxy","*","--max-time","2",...r],{encoding:"utf8",timeout:5e3});return{ok:n.status===0,stdout:n.stdout??""}}catch{return{ok:!1,stdout:""}}};return{readState:()=>{try{let r=JSON.parse(I(m(),"utf8"));return Array.isArray(r)?r:[]}catch{return[]}},alive:b,getJson:r=>{let n=e([r]);if(n.ok)try{return JSON.parse(n.stdout)}catch{return}},del:r=>{let n=e(["-o","/dev/null","-w","%{http_code}","-X","DELETE",r]);return n.ok&&/^2\d\d$/.test(n.stdout.trim())}}}function Le(e,r={}){let n={...L(),...r},o=0;try{for(let t of n.readState()){if(!n.alive(t.pid))continue;let i=R(n.getJson(`http://127.0.0.1:${t.port}/sessions`));for(let s of i)s.id&&de(s.caps,e.udid,e.displayName)&&n.del(`http://127.0.0.1:${t.port}/session/${s.id}`)&&(o+=1)}}catch{}return o}function de(e,r,n){let o=[r,n].filter(t=>!!t).map(t=>t.toLowerCase());for(let t of ce){let i=e[t];if(typeof i=="string"&&o.includes(i.toLowerCase()))return!0}return!1}function pe(e,r,n){let o=W(n.logPath,"a"),t=V(e,r,{stdio:["ignore",o,o],detached:!0,env:{...process.env,...n.env}});return t.unref(),t.pid}async function le(e,r){for(let n=e;n<e+r;n++)if(await new Promise(t=>{let i=K();i.once("error",()=>t(!1)),i.once("listening",()=>i.close(()=>t(!0))),i.listen(n)}))return n;throw new Error(`No free port for the managed Appium server in ${e}-${e+r-1}.`)}function b(e){try{return process.kill(e,0),!0}catch{return!1}}function P(e){try{let r=_("ps",["-o","comm=","-p",String(e)],{encoding:"utf8",timeout:2e3});if(r.status!==0)return!1;let n=r.stdout.trim().toLowerCase();return n===""?!0:n.includes("node")||n.includes("kane")}catch{return!0}}function k(e){try{process.kill(e)}catch{}}async function me(){try{let e=JSON.parse(await q(m(),"utf8"));return Array.isArray(e)?e:[]}catch{return[]}}async function fe(e){let r=process.pid,n=e.filter(o=>o.owner===r);C(()=>{let o=[];for(let t of te())t.owner!==r&&(Se(t)?o.push(t):b(t.pid)&&k(t.pid));oe([...o,...n])})}function Se(e){return e.owner===void 0?!1:b(e.owner)&&P(e.owner)}function ve(){return{probe:ie,sessions:ue,deleteSession:ae,spawn:pe,freePort:le,alive:b,kill:k,readState:me,writeState:fe,owner:process.pid,depsEnv:e=>h().environment(e),bundleVersion:async e=>(await h().status(e)).version,nodeBinary:process.execPath,env:process.env,os:process.platform,now:()=>Date.now(),sleep:e=>new Promise(r=>setTimeout(r,e))}}function we(e,r,n){if(!e.platformToolsDir)return{};let o=n==="win32"?";":":",t=$(r),i=t?.root??l(e.platformToolsDir),s=t?.platformToolsDir??e.platformToolsDir;return{ANDROID_HOME:i,ANDROID_SDK_ROOT:i,PATH:r.PATH?`${s}${o}${r.PATH}`:s}}async function ge(e){let r=await e.readState(),n=[],o=[];for(let t of r)t.owner!==void 0&&e.alive(t.owner)&&(e.ownerIsOurs??P)(t.owner)?n.push(t):o.push(t);for(let t of o){let i=e.ownerIsOurs??P;e.alive(t.pid)&&i(t.pid)&&e.kill(t.pid)}return o.length>0&&await e.writeState(n),n}async function Je(e,r={}){if(r.appiumUrl)return{result:"external",url:r.appiumUrl};let n={...ve(),...r.deps},o=await ge(n),t=o.filter(a=>a.owner===n.owner),i=new Set(t.map(a=>a.port)),s=new Set(o.map(a=>a.port));if(r.device){let a=await ye(n,s,i,e);if(a!==null)throw new A(se(r.device,a.port,a.device),a.port)}let c=await n.bundleVersion(e),u=t.find(a=>a.deviceClass===e&&(a.bundleVersion??c)===c);if(u&&await n.probe(`http://127.0.0.1:${u.port}/status`))return{result:"reused",url:`http://127.0.0.1:${u.port}`};for(let a of t.filter(S=>S.deviceClass===e&&S!==u))n.kill(a.pid);u&&n.kill(u.pid);let d=await n.depsEnv(e);if(!d.appiumHome)throw new Error(`The managed dependencies for the ${e} class are not installed.
|
|
3
3
|
Run \`kane-cli doctor --target ${e} --install\` to install them, or pass --appium-url for an external server.`);let p=await n.freePort(X[e],z),O=`http://127.0.0.1:${p}`,J=l(d.appiumHome),U=y(J,"appium","node_modules","appium","index.js"),N=Q(e);r.onProgress?.(`starting the managed Appium server (${e}, port ${p})\u2026`);let f=n.spawn(n.nodeBinary,[U,"--port",String(p),"--allow-insecure=uiautomator2:adb_shell"],{env:{APPIUM_HOME:d.appiumHome,...we(d,n.env,n.os)},logPath:N}),B=n.now()+D,F=Math.ceil(D/T)+1;for(let a=0;a<F&&n.now()<B;a++)if(await n.sleep(T),await n.probe(`${O}/status`)){if(f!==void 0){let S=t.filter(H=>H.deviceClass!==e);await n.writeState([...S,{port:p,pid:f,owner:n.owner,deviceClass:e,...c?{bundleVersion:c}:{},startedAt:new Date(n.now()).toISOString()}])}return r.onProgress?.("Appium server ready"),{result:"started",url:O}}throw f!==void 0&&n.kill(f),new Error(`The managed Appium server (${e}) did not answer on ${p} within ${D/1e3}s.
|
|
4
4
|
Check its log: ${N}`)}async function ye(e,r=[],n=[],o){let t=new Set(n),i=new Set([...G,...r]);for(let s of i)if(!t.has(s))for(let c of await e.sessions(s)){if(!c.id)continue;if(o){let d=be(c.caps);if(d&&d!==o)continue}let u=De(c.caps);return{port:s,...u?{device:u}:{}}}return null}function be(e){let r=t=>{let i=e[t];return typeof i=="string"?i.toLowerCase():""},n=r("platformName")||r("appium:platformName");if(n.includes("ios"))return"simulator";if(n.includes("android"))return"emulator";let o=r("appium:automationName")||r("automationName");if(o.includes("xcuitest"))return"simulator";if(o.includes("uiautomator"))return"emulator"}var he=["appium:deviceName","deviceName","appium:udid","udid","appium:deviceUDID","deviceUDID"];function De(e){for(let r of he){let n=e[r];if(typeof n=="string"&&n.trim())return n}}function Ue(e={}){let r={...L(),kill:k,writeState:Ae,...e.deps};try{let n=r.readState(),o=e.owner??process.pid,t=n.filter(s=>s.owner===o&&(!e.deviceClass||s.deviceClass===e.deviceClass));for(let s of t){if(!r.alive(s.pid))continue;let c=R(r.getJson(`http://127.0.0.1:${s.port}/sessions`));for(let u of c)u.id&&r.del(`http://127.0.0.1:${s.port}/session/${u.id}`);r.kill(s.pid)}let i=new Set(t.map(s=>`${s.port}:${s.pid}`));C(()=>{r.writeState(r.readState().filter(s=>!i.has(`${s.port}:${s.pid}`)))})}catch{}}function Ae(e){try{let r=m();g(l(r),{recursive:!0}),M(r,JSON.stringify(e,null,2))}catch{}}export{Ce as a,Q as b,se as c,Le as d,ve as e,Je as f,ye as g,Ue as h};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as A}from"./chunk-YCCUBQY4.js";import{a as _}from"./chunk-
|
|
2
|
+
import{a as A}from"./chunk-YCCUBQY4.js";import{a as _}from"./chunk-NM76SG3S.js";import{a as B}from"./chunk-BPMSNGXQ.js";import{a as R}from"./chunk-ARU6KAGY.js";import{a as k}from"./chunk-NUWOQS6L.js";import{y as c}from"./chunk-33GXXC2L.js";import{a as P}from"./chunk-HCBYKLMW.js";import{a as u,b as l}from"./chunk-C44QQJR4.js";import{a as J}from"./chunk-6YGTRKDT.js";import{e as L}from"./chunk-UR6MHSHU.js";var t=L(J(),1);var e=L(P(),1);function X(n,i,y,m){return{id:n,label:`${i} (${n}) \xB7 ${y} tests`,isActive:n===m}}function W({resolver:n,projectId:i,currentFolderId:y,env:m,onSelect:x,onCancel:w}){let[I,M]=(0,t.useState)([]),[$,d]=(0,t.useState)(!0),[O,g]=(0,t.useState)(!1),[U,N]=(0,t.useState)(null),[p,b]=(0,t.useState)("list"),[S,v]=(0,t.useState)(""),[E,f]=(0,t.useState)(null),h=(0,t.useRef)(!1);(0,t.useEffect)(()=>{if(!n){N("Login first to browse folders"),d(!1);return}let o=new AbortController;return d(!0),g(!0),(async()=>{try{let r=n.cached??await n.resolve();if(!r){N("Login first to browse folders"),d(!1),g(!1);return}let a=k(m),T=new B(a.tmsBaseUrl,r.username,r.access_key),F=(async function*(){if(o.signal.aborted)return;let s=await T.listFolders(i);yield{page:1,folders:s,totalLoaded:s.length,done:!0}})();for await(let s of F){if(d(!1),s.totalLoaded===0){h.current=!0,b("naming"),g(!1);return}M(s.folders.map(C=>X(C.id,C.name,C.test_cases_count,y))),s.done&&g(!1)}}catch(r){if(r?.name==="AbortError")return;N(r instanceof Error?r.message:String(r)),d(!1),g(!1)}})(),()=>o.abort()},[n,i,y,m]);let D=(0,t.useCallback)(o=>{let r=o.trim();if(!r){f("Name cannot be empty");return}if(!i){f("No project selected \u2014 pick a project first");return}f(null),b("creating"),(async()=>{try{if(!n)throw new Error("Not authenticated");let a=n.cached??await n.resolve();if(!a)throw new Error("Not authenticated");let T=k(m),s=await new B(T.tmsBaseUrl,a.username,a.access_key).createFolder(i,r);x(s.id,s.name)}catch(a){f(a instanceof Error?a.message:String(a)),b("naming")}})()},[n,i,m,x]),H=(0,t.useCallback)(()=>{v(""),f(null),h.current?w():b("list")},[w]);return p==="naming"||p==="creating"?(0,e.jsxs)(u,{flexDirection:"column",borderStyle:"round",borderColor:c.orange,paddingX:2,paddingY:1,children:[(0,e.jsx)(l,{color:c.orange,bold:!0,children:"Create new folder"}),h.current&&(0,e.jsx)(u,{marginTop:1,children:(0,e.jsx)(l,{color:c.dim,children:"No folders yet \u2014 let's create one."})}),(0,e.jsxs)(u,{marginTop:1,children:[(0,e.jsx)(l,{color:c.dim,children:"Name: "}),p==="naming"?(0,e.jsx)(A,{value:S,onChange:o=>{v(o),E&&f(null)},onSubmit:D,onCancel:H}):(0,e.jsx)(l,{children:S})]}),E&&(0,e.jsx)(u,{marginTop:1,children:(0,e.jsx)(l,{color:c.red,children:E})}),p==="creating"&&(0,e.jsx)(u,{marginTop:1,children:(0,e.jsx)(l,{color:c.dim,children:"Creating..."})}),p==="naming"&&(0,e.jsx)(R,{bindings:[{keys:"\u21B5",label:"create"}],escBackLabel:h.current?"cancel":"back"})]}):(0,e.jsx)(_,{title:"Folders",items:I,loading:$,loadingMore:O,preserveSelectionById:!0,error:U,itemNoun:"folders",onTab:()=>{h.current=!1,b("naming")},extraHint:"tab to create new",onSelect:o=>{let r=o.label.split(" (")[0];x(o.id,r)},onCancel:w})}export{X as a,W as b};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as o,b as i}from"./chunk-
|
|
2
|
+
import{a as o,b as i}from"./chunk-AIVOYTYQ.js";import{resolve as n}from"path";async function w(c,s,r={}){let e=i({verb:c,mode:"cli",contextRoot:n(process.cwd(),".context"),env:o(),write:r.write});try{let t=await s(e);return r.write&&t===0&&await e.lateBindContext(n(process.cwd(),".context")),t===1&&process.stderr.write(e.supportFooter()+`
|
|
3
3
|
`),await e.end({exit_code:t}),t}catch(t){throw e.error("cli_crash"),process.stderr.write(e.supportFooter()+`
|
|
4
4
|
`),await e.end({exit_code:1}),t}}export{w as a};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as w,b as O}from"./chunk-4PMZ5FCD.js";import{a as I}from"./chunk-KBM3XHAM.js";import{e as L}from"./chunk-IDX3TOPY.js";import{a as N,b as k}from"./chunk-BKM2LWU2.js";import{a as R,b as y,c as T,d as m,e as A,g as b,h as r}from"./chunk-RSSOJ3L2.js";import{b as x}from"./chunk-5EOX4MEY.js";import{a as E}from"./chunk-RZ4F3BHX.js";import{a as g,i as v}from"./chunk-
|
|
2
|
+
import{a as w,b as O}from"./chunk-4PMZ5FCD.js";import{a as I}from"./chunk-KBM3XHAM.js";import{e as L}from"./chunk-IDX3TOPY.js";import{a as N,b as k}from"./chunk-BKM2LWU2.js";import{a as R,b as y,c as T,d as m,e as A,g as b,h as r}from"./chunk-RSSOJ3L2.js";import{b as x}from"./chunk-5EOX4MEY.js";import{a as E}from"./chunk-RZ4F3BHX.js";import{a as g,i as v}from"./chunk-33GXXC2L.js";import{platform as X,arch as Y}from"os";import P from"fs";import M from"fs";import D from"path";var V=1e3,d=0,j=new Set([130,3]),a=class t{ids;logger;opts;ended=!1;createdAt=Date.now();errorState;constructor(e,n={emitted:!1}){this.ids=e.envelope,this.logger=e.logger,this.opts=e,this.errorState=n}get enabled(){return this.logger!==null}event(e,n={}){if(!this.logger)return;e==="ASR_ERROR"&&(this.errorState.emitted=!0);let i=m(this.ids,e,n);this.logger.log(R[e],e,e,C(i))}error(e,n={}){this.logger&&(this.logger.escalate(d),this.event("ASR_ERROR",{...n,error_code:e}))}child(e,n){return new t({...this.opts,envelope:{...this.ids,operation_id:n,parent_operation_id:this.ids.operation_id,verb:"design"}},this.errorState)}async lateBindContext(e){if(!(!this.logger||this.ids.context_instance_id))try{let{ensureStoreIds:n}=await import("./store-id-EOSGEKVK.js"),{ids:i,cloned:s}=n(e);this.ids.context_lineage_id=i.context_lineage_id,this.ids.context_instance_id=i.context_instance_id,s&&this.event("ASR_CONTEXT_CLONED")}catch{}}agentSession(e){this.ids.agent_session_id=e}spawnEnv(){if(!this.opts.telemetryEnabled)return{};let e={TESTMUAI_USER_SESSION_ID:this.ids.session_id,TESTMUAI_OPERATION_ID:this.ids.operation_id,TESTMUAI_CLIENT_VERSION:this.opts.clientVersion,TESTMUAI_TELEMETRY_PROXY_URL:this.opts.proxyUrl};return this.ids.context_instance_id&&(e.TESTMUAI_CONTEXT_INSTANCE_ID=this.ids.context_instance_id),e}traceTee(){return e=>{if(!this.logger)return;let n=typeof e.kind=="string"?e.kind.slice(0,64):"trace",i={...C(m(this.ids,"ASR_CMD_START",{})),trace_kind:n};typeof e.code=="string"&&(i.trace_code=e.code.slice(0,64)),delete i.event,this.logger.logStep(d,`trace_${n}`,n,i)}}wireTrace(e,n,i){if(!this.logger)return;i&&this.agentSession(i);let s=n&&typeof n=="object"?n:{};switch(e){case"spawn":this.event("ASR_AGENT_SPAWN",{tier:s.tier});break;case"session_paused":this.event("ASR_SESSION_PAUSED",s);break;case"commit":this.event("ASR_COMMIT",s);break;default:this.traceTee()({kind:e,code:typeof s.code=="string"?s.code:void 0})}}banner(){return`session: ${this.ids.session_id}`}supportFooter(){return`if this keeps failing, share this id with support: ${this.ids.session_id}`}async end(e){if(!this.ended){if(this.ended=!0,e.duration_ms===void 0&&(e={...e,duration_ms:Date.now()-this.createdAt}),this.logger)if(e.exit_code===0?this.logger.discardSteps(d):this.logger.escalate(d),e.exit_code>0&&!j.has(e.exit_code)&&!this.errorState.emitted&&this.event("ASR_ERROR",{error_code:e.exit_code===2?"usage_exit_unattributed":`exit_${e.exit_code}_unattributed`,exit_code:e.exit_code}),this.event("ASR_CMD_END",e),this.opts.longSession)await this.logger.shutdown();else{let n=await this.logger.flushOnce(V);(n==="failed"||n==="timeout")&&A(this.logger.drainBuffer())}this.logger&&this.writeManifestLine(e.exit_code),r(null)}}writeManifestLine(e){try{let n=x(this.ids.context_instance_id??null);M.mkdirSync(D.dirname(n),{recursive:!0});let i={ts:new Date().toISOString(),session_id:this.ids.session_id,operation_id:this.ids.operation_id,agent_session_id:this.ids.agent_session_id,verb:this.ids.verb,mode:this.ids.mode,exit_code:e};M.appendFileSync(n,JSON.stringify(i)+`
|
|
3
3
|
`,{flag:"a",mode:384})}catch{}}};function C(t){let e={event:t.event,session_id:t.session_id,operation_id:t.operation_id,verb:t.verb,mode:t.mode,component:t.component,seq:t.seq,context_lineage_id:t.context_lineage_id,context_instance_id:t.context_instance_id};t.parent_operation_id&&(e.parent_operation_id=t.parent_operation_id),t.agent_session_id&&(e.agent_session_id=t.agent_session_id);for(let[n,i]of Object.entries(t.context))e[n]=i;return e}var u=process.env.KANE_TELEMETRY_URL||v;function B(){return process.env.TESTMUAI_BASE_URL?"custom":process.env.TESTMUAI_ENV==="stage"?"stage":"prod"}function _e(t){let e=process.env.KANE_TELEMETRY!=="0"&&(!process.env.VITEST||process.env.KANE_TELEMETRY==="1"),n=t.env??B(),i=null;if(t.resumeSid&&t.contextRoot)try{let o=L(t.contextRoot,t.resumeSid);o?.user_session_id&&(i=o.user_session_id)}catch{}if(!i&&t.applyPlanPath)try{let o=JSON.parse(P.readFileSync(t.applyPlanPath,"utf8"));o.telemetry?.user_session_id&&(i=o.telemetry.user_session_id)}catch{}let s=i!==null;i||(i=y());let l=null,c=null,f=!1;if(t.contextRoot&&P.existsSync(t.contextRoot))if(t.write&&e){let o=k(t.contextRoot);l=o.ids.context_lineage_id,c=o.ids.context_instance_id,f=o.cloned}else{let o=N(t.contextRoot);l=o?.context_lineage_id??null,c=o?.context_instance_id??null}let h={session_id:i,operation_id:T(),context_lineage_id:l,context_instance_id:c,verb:t.verb,mode:t.mode,component:"kane-cli"},_=null;if(e){let o=I(n),S={org_id:o.org_id??"",user_id:o.user_id??"",machine_id:o.machine_id,email:null,email_domain:"",user_type:o.user_type??"unknown",env:o.env,plan:o.plan??"unknown"},U=t.mode==="interactive"||t.mode==="cli"?"cli":"agent";_=new w({proxyUrl:u,sessionId:i,identity:S,device:{cli_version:g,platform:X(),arch:Y(),host_agent:O(),invocation_mode:U},getToken:async()=>null}),t.longSession&&_.start()}let p=new a({envelope:h,logger:_,longSession:!!t.longSession,proxyUrl:u,clientVersion:`kane-cli/${g}`,telemetryEnabled:e});return e&&(r(h),p.event("ASR_CMD_START",{resumed:s,applied_plan:!!t.applyPlanPath}),f&&p.event("ASR_CONTEXT_CLONED"),b(async o=>{try{return(await E(u,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})).ok}catch{return!1}}).catch(()=>{})),p}export{B as a,_e as b};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{
|
|
2
|
+
import{y as o}from"./chunk-33GXXC2L.js";import{a as m}from"./chunk-HCBYKLMW.js";import{a as e,b as i}from"./chunk-C44QQJR4.js";import{e as d}from"./chunk-UR6MHSHU.js";var r=d(m(),1),s={default:o.muted,error:o.red,success:o.green,info:o.orange,warning:o.orange};function h({title:t,titleColor:a,borderColor:l,variant:n="default",children:c,width:u,paddingX:x=2,paddingY:g=0,marginBottom:f=0}){let p=l??s[n],B=a??(n==="default"?o.orange:s[n]);return(0,r.jsxs)(e,{flexDirection:"column",marginBottom:f,children:[t&&(0,r.jsx)(e,{marginBottom:0,children:(0,r.jsxs)(i,{color:B,bold:!0,children:[" ",t]})}),(0,r.jsx)(e,{borderStyle:"round",borderColor:p,flexDirection:"column",paddingX:x,paddingY:g,width:u,children:c})]})}function k({label:t,value:a,labelColor:l=o.dim,valueColor:n,labelWidth:c=14}){return(0,r.jsxs)(e,{children:[(0,r.jsx)(e,{width:c,flexShrink:0,children:(0,r.jsx)(i,{color:l,children:t})}),(0,r.jsx)(e,{flexShrink:1,children:(0,r.jsx)(i,{color:n,wrap:"wrap",children:a})})]})}function I({label:t}){return(0,r.jsx)(e,{marginTop:1,marginBottom:0,children:(0,r.jsx)(i,{bold:!0,children:t})})}export{h as a,k as b,I as c};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{
|
|
2
|
+
import{y as n}from"./chunk-33GXXC2L.js";import{a as s}from"./chunk-HCBYKLMW.js";import{a,b as i}from"./chunk-C44QQJR4.js";import{e as r}from"./chunk-UR6MHSHU.js";var o=r(s(),1);function g({bindings:c,suppressEscBack:p=!1,escBackLabel:m="back to chat"}){let e=c.map(t=>`${t.keys} ${t.label}`);return p||e.push(`esc \xB7 ${m}`),(0,o.jsx)(a,{marginTop:1,children:(0,o.jsx)(i,{color:n.dim,children:e.join(" \xB7 ")})})}export{g as a};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as Bt}from"./chunk-ZMNJBUAO.js";import{f as tr}from"./chunk-W5TTF7GB.js";import{a as te,c as Yt,e as Zt,f as qe,g as Qt,h as nr}from"./chunk-
|
|
2
|
+
import{b as Bt}from"./chunk-ZMNJBUAO.js";import{f as tr}from"./chunk-W5TTF7GB.js";import{a as Ft}from"./chunk-I7TIGB7K.js";import{a as te,c as Yt,e as Zt,f as qe,g as Qt,h as nr}from"./chunk-6IAA644J.js";import{a as Xt,b as rr,c as sr,d as ir,e as dt,f as or}from"./chunk-5G22NOZK.js";import{a as ke,b as qt,c as Gt,d as Lt,e as Vt}from"./chunk-YEZYO5QH.js";import{a as Kt,b as Jt}from"./chunk-BZAGVBCX.js";import{a as er}from"./chunk-GX3FPJUG.js";import{a as zt}from"./chunk-L2TV4G56.js";import{c as Wt}from"./chunk-IVQX3AKL.js";import{e as Ut}from"./chunk-J2UN2AHO.js";import{a as Fe}from"./chunk-TMRLBSIA.js";import{g as Mt}from"./chunk-54JZ6VEW.js";import{a as $e,b as ct}from"./chunk-DNNZ353O.js";import{b as Nt}from"./chunk-YKTYVJBN.js";import{a as Ht,e as jt}from"./chunk-EV64VI66.js";import{a as Se}from"./chunk-NVGBE2DR.js";import{b as nt}from"./chunk-IDX3TOPY.js";import{C as ee,m as be,q as Be}from"./chunk-W3Z7AZNT.js";import{g as It}from"./chunk-XMTSHHYQ.js";import{e as at}from"./chunk-DBIBROYW.js";import{d as me}from"./chunk-AKX4VRRR.js";import{b as Ot}from"./chunk-IAHKTEET.js";import{a as At}from"./chunk-5EOX4MEY.js";import{appendFileSync as wr,mkdirSync as ut,rmdirSync as br,writeFileSync as lt}from"fs";import{dirname as mr,extname as Sr,join as ce}from"path";var X=class extends Error{code;constructor(e,a){super(`${e}: ${a}`),this.name="ProposalAdapterError",this.code=e}};function cr(r){return r.version===2}var ar=8;function vr(r){let e=/^extract@(\d+)$/.exec(r??"");return e?Number.parseInt(e[1],10):null}var yr=r=>typeof r=="object"&&r!==null&&"op"in r;function Ge(r,e,a){return{anchor:r.anchor,quote:r.quote,...a||r.source_id!==e?{source_id:r.source_id}:{}}}function dr(r,e,a={}){let m=vr(a.templateVersion),x=m!==null&&m>=5,_=m!==null&&m<5,y=r.archived!=null&&r.archived.length>0&&m!==null&&m<5;if(y&&a.warn?.(`dropped ${r.archived.length} archive op(s): the bound extract template @${m} never described archiving \u2014 nothing was archived; the use-cases still land`),!x&&r.read_basis.length!==1)throw new X("READ_BASIS_COUNT",`read_basis must have exactly 1 element, got ${r.read_basis.length}`);if(r.read_basis.length===0)throw new X("READ_BASIS_COUNT","read_basis must not be empty");let v=r.read_basis[0],h=r.read_basis.length>1,$=r.use_cases.map(i=>{if(_&&i.cite.length!==1)throw new X("CITE_COUNT",`${i.temp_ref}: cite must have exactly 1 element, got ${i.cite.length}`);if(i.cite.length<1||i.cite.length>ar)throw new X("CITE_COUNT",`${i.temp_ref}: 1..${ar} cites allowed, got ${i.cite.length}`);let M=(f,re)=>{if(!x&&f!==v.source_id)throw new X("SOURCE_MISMATCH",`${re}: cite source ${f} != read_basis source ${v.source_id} (single-source)`)};M(i.cite[0].source_id,i.temp_ref);let P=i.cite.map(f=>(M(f.source_id,i.temp_ref),Ge(f,v.source_id,x&&(h||f.source_id!==v.source_id)))),l=(i.updated?.criteria??[]).some(yr);if(!x&&l)throw new X("CRITERIA_OPS_UNSUPPORTED",`${i.temp_ref}: op-union updated.criteria (keep/set/remove) needs an extract@5+ binding \u2014 this session is bound to ${a.templateVersion??"an unversioned template"}`);return{temp_ref:i.temp_ref,title:i.title,...i.description!==void 0?{description:i.description}:{},...i.summary!==void 0?{summary:i.summary}:{},...i.actors!==void 0?{actors:i.actors}:{},...i.value!==void 0?{value:i.value}:{},risk:i.risk,cite:P[0],...P.length>1?{cites:P}:{},...i.criteria!=null&&i.criteria.length>0?{criteria:i.criteria.map((f,re)=>(M(f.cite.source_id,`${i.temp_ref}.criteria[${re}]`),{text:f.text,cite:Ge(f.cite,v.source_id,x&&f.cite.source_id!==v.source_id)}))}:{},depends_on_hint:i.depends_on_hint,matches_existing:i.matches_existing,...i.conflicts_with!=null?{conflicts_with:i.conflicts_with}:{},...i.changed?{changed:!0}:{},...i.updated!=null?{updated:{...i.updated.title!=null?{title:i.updated.title}:{},...i.updated.description!=null?{description:i.updated.description}:{},...i.updated.summary!=null?{summary:i.updated.summary}:{},...i.updated.actors!=null?{actors:i.updated.actors}:{},...i.updated.value!=null?{value:i.updated.value}:{},...i.updated.risk!=null?{risk:i.updated.risk}:{},...i.updated.criteria!=null?{criteria:l?i.updated.criteria.map(f=>f.op==="set"?{op:"set",text:f.text,cite:Ge(f.cite,v.source_id,x&&f.cite.source_id!==v.source_id)}:f.op==="keep"?{op:"keep",ref:f.ref,text:f.text}:{op:"remove",ref:f.ref,text:f.text,reason:f.reason}):i.updated.criteria.map((f,re)=>(M(f.cite.source_id,`${i.temp_ref}.updated.criteria[${re}]`),{text:f.text,cite:Ge(f.cite,v.source_id,x&&f.cite.source_id!==v.source_id)}))}:{}}}:{},...i.change_note!=null?{change_note:i.change_note}:{}}});return{version:1,read_basis:e,source:{source_id:v.source_id,source_cid:v.source_cid},use_cases:$,...h?{sources:r.read_basis.map(i=>({source_id:i.source_id,source_cid:i.source_cid}))}:{},...r.extraction_of!=null&&r.extraction_of.length>0?{extraction_claims:r.extraction_of.map(i=>({source_id:i.source_id,completeness:i.completeness}))}:{},...r.archived!=null&&r.archived.length>0&&!y?{archived:r.archived.map(i=>({target:i.target,reason:i.reason,basis:i.basis}))}:{}}}function ur(r){let{contextDir:e,graph:a}=r,m=r.maxDigestBytes??4096,x={},_=[];for(let[h,$]of a.heads){if(x[h]=$,typeof $!="string")continue;let i=a.mediaOf($),M=a.getNode($)?.content?.blob;if(typeof M=="string")if(i.format==="image")_.push({source_id:h,cid:$,format:"image",blobRef:{path:Se(e,M),cid:M}});else{let P=$e(e,a,$)?.toString("utf8")??"";_.push({source_id:h,cid:$,format:i.format,text:P})}}_.sort((h,$)=>h.source_id<$.source_id?-1:1);let y=[];for(let h of a.byLabel(me.STYLENOTE).sort(($,i)=>$.cid<i.cid?-1:1))a.superseded.has(h.cid)||y.push(`\u2022 ${String(h.content.statement)} [${String(h.content.learned_from_kind)}]`);let v="";for(let h of y){if(Buffer.byteLength(v+h+`
|
|
3
3
|
`,"utf8")>m)break;v+=h+`
|
|
4
4
|
`}return{read_basis:x,sources:_,styleNoteDigest:v}}function lr(r,e){let a=ur({contextDir:r,graph:e}).styleNoteDigest;return a.length>0?a:void 0}function mt(r,e,a,m,x){let _=null,y=()=>_??=x&&Object.keys(x).length>0?Promise.resolve(x):Ut().catch(()=>({}));return{contextDir:r,rootSid:e,locks:at(r,e),probe:m??Ft(r,{resolveAlias:async v=>qt(v,{env:process.env,auth:await y()}),embed:async(v,h)=>Gt(v,h,{env:process.env,auth:await y()}),readVector:(v,h)=>Lt(r,v,h),writeVector:(v,h,$)=>Vt(r,v,h,$)}),...a?.length?{reservedEventIds:a}:{}}}function ht(r,e){let a=[],m=[];for(let x of r.use_cases){let _=x.matches_existing;_?.cid&&e.hasNode(_.cid)?a.push({ref:_.cid,expectedTip:e.tipOf(_.cid)}):m.push({tempRef:x.temp_ref,title:String(x.title??""),probeText:String(x.title??"")})}return{verb:"extract",ucTargets:a,newBuCandidates:m,sourcePins:[{source_id:r.source.source_id,source_cid:r.source.source_cid}],readBasis:r.read_basis??null}}function $r(r,e){let a=(r.images??[]).filter(m=>m.delivery==="selected");if(a.length!==0)return a.map(m=>({ref:m.ref,...m.page!==void 0?{page:m.page}:{},...m.loc!==void 0?{loc:m.loc}:{},media_type:m.media_type,blob_ref:{path:Se(e,m.blob),cid:m.blob}}))}function kr(r){return r.length>8&&r[0]===137&&r[1]===80&&r[2]===78&&r[3]===71?"image/png":r.length>3&&r[0]===255&&r[1]===216&&r[2]===255?"image/jpeg":r.length>12&&r.toString("ascii",0,4)==="RIFF"&&r.toString("ascii",8,12)==="WEBP"?"image/webp":null}function Le(r){return r.toISOString().replace(/[-:]/g,"").slice(0,15)}function hr(r){return r.startsWith("su-conv-")?`conv-${Ot(Buffer.from(r,"utf8")).slice(0,8)}`:r}function pr(r){return r.source_id.startsWith("su-conv-")?"the conversation":r.source_id}function Rr(r,e,a){return`reading ${pr(r)}${a>1?` (source ${e} of ${a})`:""}`}function Re(r){return r.toLowerCase().trim().replace(/\s+/g," ")}function gr(r,e){let a=new Map,m=new Map,x=new Map;for(let{cid:y,content:v}of e.byLabel(me.USECASE)){if(e.superseded.has(y))continue;(e.trust.get(y)==="archived"?x:m).set(Re(String(v.title??"")),y)}let _=y=>e.trust.get(y)==="archived"?{cid:y,archived:!0,reason:e.archivedReason.get(y)}:{cid:y};for(let y of r.use_cases){if(y.matches_existing){let $=y.matches_existing.cid;if(e.superseded.has($)){let i=e.tipOf($);$=e.superseded.has(i)?null:i}if($!==null){a.set(y.temp_ref,_($));continue}}let v=m.get(Re(y.title));if(v){a.set(y.temp_ref,{cid:v});continue}let h=x.get(Re(y.title));h&&a.set(y.temp_ref,_(h))}return a}var fr=/^(\S+)\.criteria\[(\d+)\]/;function Cr(r,e,a){if(e.length===0||!e.every(x=>fr.test(x.detail)))return!1;let m=new Map;for(let x of e){let _=fr.exec(x.detail),y=m.get(_[1])??new Set;y.add(Number(_[2])),m.set(_[1],y)}for(let x of r.use_cases){let _=m.get(x.temp_ref);_?.size&&(x.criteria=(x.criteria??[]).filter((y,v)=>!_.has(v)),a(`${x.temp_ref}: dropped ${_.size} criteria with unverifiable cites \u2014 committed without them (criteria are hints, not oracles)`))}return!0}async function gt(r,e,a,m,x=()=>{},_,y){let v=(h,$)=>x(h,$,r.session_id);return Zt(r,e,a,m,x,{async onProposalEvent(h){let $=h,i=null,M=null;if(cr($))try{i=dr($,r.read_basis,{templateVersion:y?.()??null,warn:P=>{e.out(`warning: ${P}`),v("adapter",{warn:P})}}),v("adapter",{ok:!0,use_cases:i.use_cases.length})}catch(P){M=P instanceof X?P.message:String(P),v("adapter",{ok:!1,error:M})}else i=$;return i&&i.use_cases.length===0&&(e.out("warning: the agent proposed ZERO use-cases for this source"),e.emit?.({type:"warning",code:"ZERO_USE_CASES",message:"the agent proposed ZERO use-cases for this source"})),i&&_&&await _(i),{proposal:i,error:M}}})}var Dr=new Set(["agent","ci","override"]);async function Ss(r,e){let a=`ext-${Le(e.now?.()??new Date)}-lk${Math.random().toString(36).slice(2,8)}`,x=at(e.contextDir,a,e.now?{now:e.now}:void 0).tryAcquire([{kind:"extract"}],{hold:"session",verb:"extract"});if("contended"in x){let _=x.contended.holder,y=`another extraction is running on this context${_?` (pid ${_.pid})`:""} \u2014 retry when it finishes`;return e.out(y),e.emit?.({type:"error",message:y,code:"EXTRACT_LOCKED"}),2}try{return await Er(r,e)}finally{x.release()}}async function Er(r,e){let a=r.mode??"interactive";if(r.posture==="reconcile"){if(r.trust==="hold"){let o="error: --trust hold has no meaning here \u2014 a reconcile IS the review; drop the flag";return e.out(`${o} [TRUST_USAGE]`),e.emit?.({type:"error",message:o,code:"TRUST_USAGE"}),2}if(!r.source||!r.changeContext){let o="reconcile posture needs a pinned source and its change context \u2014 internal wiring fault";return e.out(`error: ${o}`),e.emit?.({type:"error",message:o,code:"POSTURE_USAGE"}),2}if(a==="ci"){let o="reconcile posture is not available under --mode ci \u2014 a held changeset needs a durable session; use --mode agent";return e.out(`error: ${o}`),e.emit?.({type:"error",message:o,code:"POSTURE_USAGE"}),2}}if(r.trust==="hold"&&a==="interactive")return e.out("error: --trust hold only applies to headless runs \u2014 in interactive chat you review items in-session anyway; use --mode agent to hold everything for review"),e.emit?.({type:"error",message:"error: --trust hold only applies to headless runs \u2014 use --mode agent",code:"TRUST_USAGE"}),2;if(a==="interactive"){if(!e.isTTY)return e.out("extract: --mode interactive needs a TTY (use --mode agent|ci|override headless)"),2}else if(!Dr.has(a))return e.out(`extract: unknown mode "${a}" \u2014 interactive | agent | ci | override`),2;if(r.trust!==void 0){if(a==="ci")return e.out("error: --trust is not available under --mode ci (ci is fail-closed \u2014 no trust dials)"),e.emit?.({type:"error",message:"error: --trust is not available under --mode ci",code:"TRUST_UNDER_CI"}),2;if(r.trust!=="auto"&&r.trust!=="hold")return e.out(`error: --trust must be auto | hold, got '${r.trust}'`),e.emit?.({type:"error",message:`error: --trust must be auto | hold, got '${r.trust}'`,code:"TRUST_USAGE"}),2}let m=e.telemetry?.enabled?e.telemetry:void 0,x=Le(e.now?.()??new Date),_=m?At(m.ids.context_instance_id??null,"extract",m.ids.session_id):ce(e.contextDir,"logs",`extract-${x}.log`);ut(mr(_),{recursive:!0});let y=`run-${x}-${Math.random().toString(36).slice(2,8)}`,v=o=>o==="error"||o==="failed_proposal"?"error":o==="repair_respawn"?"warn":"info",h=(o,u,s)=>{try{wr(_,JSON.stringify({ts:new Date().toISOString(),level:v(o),run_id:y,...m?{user_session_id:m.ids.session_id}:{},...s?{session_id:s}:{},kind:o,data:u})+`
|
|
5
5
|
`)}catch{}m?.wireTrace(o,u,s)};{let o=e.out;e.out=u=>{h("transcript",{line:u}),o(u)}}e.chat||e.out(`trace: ${te(_)}`),e.emit?.({type:"run_start",mode:a,trace:_,...m?{session:m.ids.session_id}:{}});let $=Nt();if($&&e.out($),e.preflightTurn){let o=await e.preflightTurn();if(h("preflight",o),!o.ok)return e.out(o.message??"error: turn-endpoint preflight failed"),e.emit?.({type:"error",message:o.message??"error: turn-endpoint preflight failed",code:"PREFLIGHT"}),2}let i=ee(e.contextDir),M=lr(e.contextDir,i),P=r.sources?.length?r.sources:r.source?[r.source]:[];if(P.length>0){if(r.resume){let o="error: --source cannot be combined with --resume (the resumed session already has its scope)";return e.out(o),e.emit?.({type:"error",message:o,code:"SOURCE_WITH_RESUME"}),2}for(let o of P){let u=i.heads.get(o);if(typeof u!="string"){let s=u===null?`error: --source ${o} was ingested but is retired \u2014 re-ingest it to extract again`:`error: --source ${o} is not an ingested source (kane-cli context list shows them)`;return e.out(s),e.emit?.({type:"error",message:s,code:"SOURCE_UNKNOWN"}),2}}}let l=null,f=null;if(r.resume){try{{let c=await or(e.contextDir,r.resume,i,{verb:"extract",deps:{onWarn:C=>e.out(`note: ${C}`)}});{let C=Object.keys(c.handle.state.read_basis??{});if(C.length>1){let B=`error: session ${r.resume} spans ${C.length} sources \u2014 multi-source resume isn't supported yet; committed work is preserved (re-run kane-cli context extract for anything remaining)`;return e.out(B),e.emit?.({type:"error",message:B,code:"MULTI_SOURCE_RESUME"}),c.handle.release(),2}f=c,h("resume_kind",{kind:c.view.pointer===null?"bare-base":c.view.pointer.at==="final"?"pause":"crash"}),l={handle:c.handle,represent:c.represent,questions:c.questions,staleBasis:c.drift.map(B=>B.subject)}}}}catch(c){let C=c instanceof Error?c.message:String(c);return e.out(`error: ${C}`),e.emit?.({type:"error",message:`error: ${C}`,...c instanceof dt?{code:c.code}:{}}),c instanceof dt?2:1}let o=f?null:Xt(l.handle.state.verb,"extract",r.resume);if(o)return e.out(o.message),e.emit?.({type:"error",message:o.message,code:o.code}),l.handle.release(),2;let u=l.handle.state.change_basis;if(u&&(i.heads.get(u.source_id)??null)!==u.new_head){let c=`error: ${u.source_id} moved while this reconcile extraction was paused \u2014 its recorded change context no longer matches; re-run kane-cli maintain reconcile against the current file (session ${r.resume} is defunct and can be ignored)`;return e.out(c),e.emit?.({type:"error",message:c,code:"CHANGE_BASIS_MOVED"}),l.handle.release(),2}if(f&&f.view.pointer!==null&&f.drift.length>0){if(!await e.confirmStale(`changed since the pause: ${f.drift.map(C=>C.subject).join(", ")} \u2014 re-ground and continue against the current versions?`)){let C=`resume aborted: the context moved since the pause (${f.drift.map(B=>B.subject).join(", ")}) \u2014 session ${r.resume} is preserved`;return e.out(C),e.emit?.({type:"error",message:C,code:"RESUME_DRIFT"}),l.handle.release(),2}}else l.staleBasis.length>0&&e.out(`note: changed since the pause: ${l.staleBasis.join(", ")} \u2014 re-presented items may be stale`);let s=[...new Set([...l.handle.state.held_receipts??[],...f?.view.kane?.held_receipts??[]])];if(s.length>0)if(e.chat?.holdReceipt)for(let c of s)e.chat.holdReceipt(c);else e={...e,initialMessage:[s.join(`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as h}from"./chunk-
|
|
2
|
+
import{a as h}from"./chunk-VYMMGWVO.js";import{a as f}from"./chunk-TDNM22BQ.js";import{a as m}from"./chunk-NUWOQS6L.js";var o=class extends Error{constructor(a,l){super(a);this.code=l;this.name="AuthError"}};async function k(c){let{creds:i,env:a,usernameFlag:l,accessKeyFlag:g,log:t}=c,e=null,u=null;if(l&&g)e={username:l,access_key:g},t("info","AUTH_RESOLVE_FLAGS","Auth resolved via CLI flags",{username:l});else{let r=i.resolveAuth();r?.method==="basic"&&(e={username:r.username,access_key:r.access_key},t("info","AUTH_RESOLVE_CONFIG","Auth resolved via config",{username:r.username}))}if(!e){let{credentials:r,profile:E}=i.getActiveCredentials();if(!r)throw new o("Not authenticated \u2014 no credentials found","not_authenticated");if(u=r.access_token,r.expires_at-Date.now()/1e3<300)try{let n=await f({creds:i,profile:E,env:a,credentials:r});n&&(u=n.accessToken,t("info","AUTH_TOKEN_REFRESHED","OAuth token refreshed"))}catch(n){let d=n instanceof Error?n.message:String(n);throw t("error","TOKEN_REFRESH_FAILED","Token refresh failed",{error:d}),new o(`Token refresh failed: ${d}`,"refresh_failed")}}let v=m(a),b=async()=>u,y=e?{username:e.username,access_key:e.access_key}:null,p=new h(v.controllerBaseUrl,b,y,t),s=await p.resolve();return s&&!e&&(e={username:s.username,access_key:s.access_key},t("info","AUTH_RESOLVE_CONTROLLER","Auth resolved via controller",{username:s.username})),{basicAuth:e,token:u,resolver:p,resolvedCreds:s}}export{o as a,k as b};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{e as U}from"./chunk-EHN5HTUD.js";import{b as J,c as w,e as q,i as z,j as Q,k as X,l as Y,m as T}from"./chunk-
|
|
2
|
+
import{e as U}from"./chunk-EHN5HTUD.js";import{b as J,c as w,e as q,i as z,j as Q,k as X,l as Y,m as T}from"./chunk-4WOVHRI2.js";import{a as G}from"./chunk-OTMAFCZK.js";import{copyFileSync as le,cpSync as pe,existsSync as $,mkdirSync as ue,readFileSync as Oe,readdirSync as ce,rmSync as Te,writeFileSync as Ae}from"fs";import{dirname as _e,isAbsolute as Ee,join as y,relative as Le,resolve as Ke}from"path";import{writeFileSync as ge,mkdirSync as Se,readFileSync as ye}from"fs";import{dirname as Re,basename as Z}from"path";function te(e){let t=e.outPath??w(e.sourcePath);Se(Re(t),{recursive:!0});let s=[];s.push("---"),s.push(`test: ../${Z(e.sourcePath)}`),s.push(`status: ${e.overallStatus}`),s.push(`started: ${e.startedISO}`),s.push(`duration_s: ${e.durationS}`),s.push(`session_id: ${e.sessionId}`),s.push("---",""),s.push(`# ${e.title??Z(e.sourcePath)} \u2014 Result`,"");for(let l=0;l<e.rootSteps.length;l++){let d=e.rootSteps[l],r=e.outcomes.find(u=>u.rootStepIndex===l+1);if(s.push(xe(d,r)),r?.stepMd5&&s.push(`md5: ${r.stepMd5}`),r?.status==="failed"&&r.reason&&s.push(`Reason: ${r.reason}`),r?.softFailures?.length)for(let u of r.softFailures){let o=u.reason?`: ${u.reason}`:"";s.push(`\u26A0 optional sub-step ${u.subStepIndex} failed${o}`)}d.body.kind==="objective"&&r?.status!=="skipped"&&s.push(d.body.text),s.push("")}return ge(t,s.join(`
|
|
3
3
|
`),"utf8"),t}function xe(e,t){if(!t)return`## ${e.heading} (no outcome)`;let s=t.duration_s!=null?`${t.duration_s}s`:"\u2014";if(t.status==="skipped")return`## ${e.heading} \u23ED skipped`;let l=t.softFailed?" (optional)":"";if(t.refKind&&t.status==="passed"){let d=t.helperResultRelPath?` \u2192 ${t.helperResultRelPath}`:"";return`## ${e.heading} \u2713 passed (via @${t.refKind} ${t.refLabel} \u2014 ${t.inlinedCount} inlined steps, ${s}${d})`}if(t.refKind&&t.status==="failed"){let d=t.failedSubStepIndex&&t.failedSubStepIndex.length>0?` \u2014 at sub-step ${t.failedSubStepIndex.join(" \u2192 sub-step ")}`:"",r=t.helperResultRelPath?` \u2192 ${t.helperResultRelPath}`:"";return`## ${e.heading} \u2717 failed${l} (via @${t.refKind} ${t.refLabel}${d}, ${s}${r})`}return t.status==="passed"?`## ${e.heading} \u2713 passed (${s})`:`## ${e.heading} \u2717 failed${l} (${s})`}var Ie=/^##\s+(.+?)\s+(✓ passed|✗ failed(?:\s+\(optional\))?|⏭ skipped)(?:\s+\((.*)\))?\s*$/,ke=/via\s+@\w+\s+(\S+).*?(?:→\s+(\S+))?\s*$/,be=/^md5:\s+([a-f0-9]{32})\s*$/;function ee(e,t){for(let s=t;s<e.length&&!/^##\s/.test(e[s]);s++){if(e[s].trim()==="")continue;let l=be.exec(e[s]);return l?l[1]:null}return null}function D(e){let s=ye(e,"utf8").split(`
|
|
4
4
|
`),l="passed";if(s[0]?.trim()==="---")for(let r=1;r<s.length&&s[r].trim()!=="---";r++){let u=/^status:\s+(passed|failed|interrupted)\s*$/.exec(s[r]);u&&(l=u[1])}let d=[];for(let r=0;r<s.length;r++){let u=Ie.exec(s[r]);if(!u)continue;let o=u[1],n=u[2],c=u[3]??"",m=n.startsWith("\u2713")?"passed":n.startsWith("\u23ED")?"skipped":"failed";if(/via\s+@/.test(c)){let f=ke.exec(c),v=f?.[1]??"",x=f?.[2]??null;d.push({kind:"import",heading:o,status:m,md5:ee(s,r+1),importPath:v,helperResultRelPath:x})}else d.push({kind:"objective",heading:o,status:m,md5:ee(s,r+1)})}return{overallStatus:l,steps:d}}import{copyFileSync as se,existsSync as C,mkdirSync as ve,writeFileSync as ne,promises as Ue}from"fs";import{join as M,dirname as re,basename as Pe}from"path";async function ie(e){for(let t=0;t<e.totalRunDirs;t++){let s=e.runIndex+t,l=M(e.sessionDir,"runs",String(s)),d=M(e.stagingStepDir,"flows",String(t));ve(d,{recursive:!0});let r=M(d,"actions.ndjson");if(e.packTestDir){let n=M(e.packTestDir,"logs",`${s}-actions.ndjson`);if(C(n)){se(n,r);continue}let c=re(re(e.packTestDir)),m=Pe(e.packTestDir),R=C(c)?await U(c,`tests/${m}/logs/${s}-actions.ndjson`).catch(()=>null):null;ne(r,R??"");continue}let u=[M(l,"run-test","actions.ndjson"),M(l,"actions.ndjson")],o=!1;for(let n of u)if(C(n)){se(n,r),o=!0;break}o||ne(r,"")}}import{existsSync as A,readdirSync as we}from"fs";import{dirname as $e,join as j,basename as H}from"path";function et(e,t){let s=[];return e.steps.forEach((l,d)=>{let r=t[d];!l.replayOnly||!r||r.kind!=="author"||s.push({flatIndex:l.flatIndex,file:l.owningFile,heading:l.trace[l.trace.length-1].heading,kind:l.replayOnly,reason:r.reason})}),s}function tt(e){let t=[],s=new Set,l=new Map;function d(n){if(l.has(n))return l.get(n);let c=w(n),m=A(c)?D(c):null;return l.set(n,m),m}let r=new Map;function u(n){if(r.has(n))return r.get(n);let c=j(n,"Result.md"),m=A(c)?D(c):null;return r.set(n,m),m}function o(n){for(let c=1;c<n.trace.length;c++){let m=n.trace[c-1],R=d(m.file);if(!R)continue;let f=R.steps[m.stepIndex-1];if(f){if(f.kind!=="import")return{kind:"author",reason:"structure-mismatch"};if(H(f.importPath)!==H(n.trace[c].file))return{kind:"author",reason:"structure-mismatch"};if(f.md5!=null&&f.md5!==m.rowMd5)return{kind:"author",reason:"structure-mismatch"}}}return null}for(let n of e.steps){let c=n.trace[n.trace.length-1].stepIndex,m=n.replayOnly,R=s.has(n.owningFile);for(let g=0;g<n.trace.length-1&&!R;g++)s.has(n.trace[g].file)&&(R=!0);if(R&&!m){t.push({kind:"author",reason:d(n.owningFile)===null?"no-result-md":"downstream-of-divergence"});continue}let f=o(n);if(f){for(let g=0;g<n.trace.length;g++)s.add(n.trace[g].file);if(!m){t.push(f);continue}}let v=d(n.owningFile),x;if(v===null&&n.trace.length>1){let g=W(n.trace);x=oe(n,u(g),c,g)}else x=oe(n,v,c);if(m&&x.kind==="replay"&&(x={...x,replayOnly:m}),t.push(x),x.kind==="author"){s.add(n.owningFile);for(let g=0;g<n.trace.length-1;g++)s.add(n.trace[g].file)}}return t}function oe(e,t,s,l=null){if(!t)return{kind:"author",reason:"no-result-md"};let d=t.steps[s-1];if(!d)return{kind:"author",reason:"no-result-md"};if(d.kind!=="objective")return{kind:"author",reason:"structure-mismatch"};if(d.status!=="passed")return{kind:"author",reason:"recorded-failed"};let r=T(e);if(r!==d.md5)return{kind:"author",reason:"md5-mismatch"};let u=l===null?X(e.owningFile,s,r.slice(0,8)):j(l,".internal","steps",`${s}-${r.slice(0,8)}`),o=De(u);return o===0?{kind:"author",reason:"missing-recording"}:{kind:"replay",recordingDir:u,flowCount:o}}function De(e){let t=j(e,"flows");if(!A(t))return 0;let s;try{s=we(t,{withFileTypes:!0}).filter(d=>d.isDirectory()&&/^\d+$/.test(d.name)).map(d=>parseInt(d.name,10))}catch{return 0}if(s.length===0)return 0;let l=Math.max(...s);for(let d=0;d<=l;d++)if(!A(j(t,String(d),"actions.ndjson")))return 0;return l+1}function st(e){return e.some(t=>t.kind==="author")}function nt(e){for(let t=0;t<e.length;t++)if(e[t].kind==="author")return t;return e.length}function W(e){let t=r=>{let u=H(r);return u.endsWith("_test.md")?u.slice(0,-8):u.endsWith(".md")?u.slice(0,-3):u},s=t(e[0].file),l=t(e[e.length-1].file),d=e.slice(0,-1).map(r=>String(r.stepIndex));return j($e(e[e.length-1].file),`helper-output-${l}-${s}-${d.join("-")}`)}function rt(e){return Array.from({length:e.flowCount},(t,s)=>j(e.recordingDir,"flows",String(s),"actions.ndjson"))}import{existsSync as ae,mkdirSync as Me,rmSync as je,cpSync as Fe}from"fs";function de(e,t){ae(e)&&(ae(t)&&je(t,{recursive:!0,force:!0}),Me(t,{recursive:!0}),Fe(e,t,{recursive:!0}))}async function St(e){let t=new Map;for(let o of e.stepRunRecords)t.set(o.testmdStepIndex,o);let s=e.authoredFlatIdx??new Set,l=[],d=[],r=new Map,u=o=>{if(r.has(o))return r.get(o);let n=y(o,"Result.md"),c=$(n)?D(n):null;return r.set(o,c),c};for(let o of e.resolvedTest.unitFiles){let n=o.file===e.resolvedTest.rootPath,c=G(o.file,Oe(o.file,"utf8")),m=w(o.file),R=$(m)?D(m):null,f=[],v=[],x=[],g=[];if(!n)for(let a of e.resolvedTest.steps){if(a.owningFile!==o.file||a.trace.length<2)continue;let i=W(a.trace);g.includes(i)||g.push(i)}let F=a=>{if(R!==null)return null;for(let i of g){let P=u(i)?.steps[a-1];if(P)return{row:P,dir:i}}return null},V=[],_=!1,B=!1,E=!1,L=!1;for(let a of c.steps){let i=a.index,p=R?.steps[i-1];if(a.body.kind==="objective"){let h=e.resolvedTest.steps.filter(S=>S.owningFile===o.file&&S.trace[S.trace.length-1].stepIndex===i&&t.has(S.flatIndex)),I=h.length>0?h[h.length-1]:null;if(I){_=!0,s.has(I.flatIndex)&&(B=!0);let S=T(I),k;n?k=e.outcomes.find(he=>he.rootStepIndex===i)??{rootStepIndex:i,status:"skipped"}:k={rootStepIndex:i,status:fe(I,e.outcomes)},k.status==="failed"&&(E=!0),k.stepMd5==null&&(k.stepMd5=S),f.push(k),v.push({stepIndex:i,md5:S,rec:t.get(I.flatIndex)}),(!p||p.kind!=="objective"||p.status!==k.status||k.status==="passed"&&p.md5!==S)&&(L=!0)}else if(p&&p.kind==="objective")f.push({rootStepIndex:i,status:p.status,...p.md5?{stepMd5:p.md5}:{}}),x.push(i);else if(!n&&F(i)?.row.kind==="objective"){let S=F(i),k=S.row;f.push({rootStepIndex:i,status:k.status,...k.md5?{stepMd5:k.md5}:{}}),V.push({psIdx:i,dir:S.dir})}else n?f.push(e.outcomes.find(S=>S.rootStepIndex===i)??{rootStepIndex:i,status:"skipped"}):f.push({rootStepIndex:i,status:"skipped"});continue}let P=Ee(a.body.path)?a.body.path:Ke(_e(o.file),a.body.path),O=Y({path:a.body.path,bindings:a.body.bindings,optional:a.optional??!1}),K=Le(J(o.file),w(P)),N=e.resolvedTest.steps.filter(h=>h.trace.some((I,S)=>S<h.trace.length-1&&I.file===o.file&&I.stepIndex===i)&&t.has(h.flatIndex));if(N.length>0){_=!0;let h;if(n)h=e.outcomes.find(I=>I.rootStepIndex===i)??{rootStepIndex:i,status:"passed",refKind:"import",refLabel:a.body.path};else{let I=N.some(S=>fe(S,e.outcomes)==="failed");h={rootStepIndex:i,status:I?"failed":"passed",refKind:"import",refLabel:a.body.path,inlinedCount:N.length}}h.status==="failed"&&(E=!0),h.stepMd5==null&&(h.stepMd5=O),h.helperResultRelPath==null&&(h.helperResultRelPath=K),f.push(h),(!p||p.kind!=="import"||p.status!==h.status||p.md5!==O)&&(L=!0)}else if(p&&p.kind==="import")f.push({rootStepIndex:i,status:p.status,refKind:"import",refLabel:p.importPath,...p.md5?{stepMd5:p.md5}:{},...p.helperResultRelPath?{helperResultRelPath:p.helperResultRelPath}:{}});else if(!n&&F(i)?.row.kind==="import"){let h=F(i).row;f.push({rootStepIndex:i,status:h.status,refKind:"import",refLabel:a.body.path})}else n?f.push(e.outcomes.find(h=>h.rootStepIndex===i)??{rootStepIndex:i,status:"skipped",refKind:"import",refLabel:a.body.path}):f.push({rootStepIndex:i,status:"skipped",refKind:"import",refLabel:a.body.path})}if(!(n||_&&(B||E||R===null||L)))continue;l.push(o.file);let b=z(o.file);ue(y(b,".internal"),{recursive:!0});for(let a of v){let i=y(b,".internal","steps",`${a.stepIndex}-${a.md5.slice(0,8)}`);ue(i,{recursive:!0}),await ie({sessionDir:e.sessionDir,runIndex:a.rec.runIndex,totalRunDirs:a.rec.totalRunDirs,stagingStepDir:i,packTestDir:e.packTestDir})}if(x.length>0){let a=Q(o.file);if($(a))for(let i of ce(a)){let p=parseInt(i.split("-")[0]??"",10);!Number.isNaN(p)&&x.includes(p)&&pe(y(a,i),y(b,".internal","steps",i),{recursive:!0})}}for(let a of V){let i=y(a.dir,".internal","steps");if($(i))for(let p of ce(i))parseInt(p.split("-")[0]??"",10)===a.psIdx&&pe(y(i,p),y(b,".internal","steps",p),{recursive:!0})}let me=f.some(a=>a.status==="failed");if(te({sourcePath:o.file,title:c.title,rootSteps:c.steps,outcomes:f,overallStatus:n?e.overallStatus:me?"failed":"passed",startedISO:e.startedISO,durationS:n?e.durationS:0,sessionId:e.sessionId,outPath:y(b,"Result.md")}),n){let a={};e.commitId&&(a.commit_id=e.commitId),e.tmsIds.testId&&(a.test_id=e.tmsIds.testId),e.tmsIds.testcaseId&&(a.testcase_id=e.tmsIds.testcaseId),e.tmsIds.projectId&&(a.project_id=e.tmsIds.projectId),e.tmsIds.folderId&&(a.folder_id=e.tmsIds.folderId),e.tmsIds.orgId&&(a.org_id=e.tmsIds.orgId),e.tmsIds.sessionName&&(a.session_name=e.tmsIds.sessionName),Ae(y(b,".internal","meta.json"),JSON.stringify(a,null,2)+`
|
|
5
5
|
`,"utf8");let i=y(e.sessionDir,"execution.json");if($(i))try{le(i,y(b,".internal","execution.json"))}catch{}if(e.codeExportDir){let p=e.codeExportLanguage??"python",P=e.codeExportFramework??"playwright",O=y(b,`${P}-${p}-code`);try{de(e.codeExportDir,O)}catch(K){process.stderr.write(`warn: codegen copy failed: ${K.message}
|