@testmuai/kane-cli 0.8.13 → 0.8.15
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-B6ZIO3JL.js → ChatSurface-2GPR4S7I.js} +3 -3
- package/dist/{ChromeProfilePicker-QSICCUMV.js → ChromeProfilePicker-XAZGCJKR.js} +1 -1
- package/dist/{CliFeedbackPrompt-LLLNSKW2.js → CliFeedbackPrompt-4SILDU7S.js} +1 -1
- package/dist/{CliUploadProgress-N5IY66T2.js → CliUploadProgress-OAQBY55Y.js} +1 -1
- package/dist/{ConfigView-UQIRPENS.js → ConfigView-FDBMJC26.js} +1 -1
- package/dist/EvidenceViewOffer-YSNRKKPC.js +2 -0
- package/dist/FolderPicker-XCTJ5447.js +2 -0
- package/dist/{InfoBox-ZGSLEOPE.js → InfoBox-ZPUBB7J4.js} +1 -1
- package/dist/{LinksBox-JFT44YUK.js → LinksBox-MNNNOH23.js} +1 -1
- package/dist/{ProfilesView-WZSPK3HF.js → ProfilesView-GY5QCIT3.js} +1 -1
- package/dist/{ProjectPicker-SBBGVF4L.js → ProjectPicker-UCHMCNFV.js} +1 -1
- package/dist/{SaveSessionPrompt-F3563T3C.js → SaveSessionPrompt-ATVHKAHN.js} +1 -1
- package/dist/ScrollbackTap-QHJOFYMC.js +2 -0
- package/dist/SingleShotApp-IPNZBFXB.js +2 -0
- package/dist/{SummaryBox-6N6NESLI.js → SummaryBox-2DTNE25L.js} +1 -1
- package/dist/TestMdRunView-2FQIEI5W.js +2 -0
- package/dist/{TestrunEvidenceTable-JLJBJ76Q.js → TestrunEvidenceTable-6UE5EMON.js} +1 -1
- package/dist/{WhoamiView-PNVUCWLB.js → WhoamiView-TFCHIOW5.js} +1 -1
- package/dist/agent-parse-XMWVKCRD.js +2 -0
- package/dist/{app-download-NNB52ZRJ.js → app-download-N7MLJQ42.js} +1 -1
- package/dist/attach-target-V6LECVES.js +2 -0
- package/dist/{auth-JIDDELKY.js → auth-IQPCVCZK.js} +1 -1
- package/dist/{binary-LXYAW7WQ.js → binary-VML7EGV4.js} +1 -1
- package/dist/bind-YV6V5AI6.js +15 -0
- package/dist/{bootstrap-THOC3SS7.js → bootstrap-KCPWDBLX.js} +1 -1
- package/dist/bridge-5UKX7YIO.js +2 -0
- package/dist/{changelog-BSMZXLTG.js → changelog-CJFWGRIL.js} +1 -1
- package/dist/chat-committer-HDE3TP5I.js +2 -0
- package/dist/chat-controller-3EPK7UZG.js +2 -0
- package/dist/chunk-27ERHOW3.js +2 -0
- package/dist/{chunk-RN5ERSV2.js → chunk-2WRBCTNM.js} +1 -1
- package/dist/chunk-3D5MKSG3.js +5 -0
- package/dist/{chunk-FNIL4G3V.js → chunk-3GELV4IN.js} +3 -3
- package/dist/{chunk-EEFZXZTZ.js → chunk-3IXEARDX.js} +1 -1
- package/dist/chunk-3N6IAVD5.js +7 -0
- package/dist/{chunk-DXFMELKC.js → chunk-4TMQTSIO.js} +1 -1
- package/dist/chunk-52WM3XYO.js +4 -0
- package/dist/{chunk-R7QAS6LZ.js → chunk-55YDTPB7.js} +1 -1
- package/dist/{chunk-477DYMXZ.js → chunk-5HTSKF5K.js} +1 -1
- package/dist/{chunk-IDX3TOPY.js → chunk-5LJRZI7S.js} +1 -1
- package/dist/chunk-66MOZKD2.js +2 -0
- package/dist/chunk-6DHEOPXX.js +9 -0
- package/dist/{chunk-NU45ROHH.js → chunk-6GLFQHSW.js} +2 -2
- package/dist/chunk-6K4FDYMH.js +89 -0
- package/dist/{chunk-7GUFVQOQ.js → chunk-6L5RV62W.js} +1 -1
- package/dist/{chunk-TDNM22BQ.js → chunk-74FHTDEE.js} +1 -1
- package/dist/chunk-7EGIX6Y4.js +8 -0
- package/dist/chunk-7O54QURK.js +2 -0
- package/dist/chunk-7WDPU33M.js +2 -0
- package/dist/{chunk-BTBUIL4Q.js → chunk-7X4R6464.js} +1 -1
- package/dist/{chunk-FUP4AP6J.js → chunk-A557OSRS.js} +1 -1
- package/dist/chunk-AHXOKBVE.js +7 -0
- package/dist/{chunk-DNNZ353O.js → chunk-ALCE5RLK.js} +1 -1
- package/dist/{chunk-I75FRXKE.js → chunk-AYJ2YZP5.js} +1 -1
- package/dist/chunk-BMVE73M7.js +21 -0
- package/dist/chunk-CAOZKSQ3.js +8 -0
- package/dist/{chunk-BJAHVN2F.js → chunk-CNPIJFZM.js} +1 -1
- package/dist/{chunk-EV64VI66.js → chunk-CRZUBDJ3.js} +1 -1
- package/dist/{chunk-PUM5J56E.js → chunk-D6GBOFK5.js} +1 -1
- package/dist/{chunk-YEZYO5QH.js → chunk-DMCEGMGB.js} +1 -1
- package/dist/{chunk-TMRLBSIA.js → chunk-DMT3W26F.js} +1 -1
- package/dist/{chunk-XS3HIVNS.js → chunk-EDQZIEPJ.js} +1 -1
- package/dist/{chunk-VJ3ES3RR.js → chunk-EFTRH35G.js} +1 -1
- package/dist/{chunk-Q4YAJJPP.js → chunk-EJXBKCNF.js} +1 -1
- package/dist/{chunk-NUWOQS6L.js → chunk-EPE2ELDH.js} +1 -1
- package/dist/{chunk-WIAZN7G4.js → chunk-FFVNISYH.js} +1 -1
- package/dist/chunk-FQNQVC5O.js +5 -0
- package/dist/chunk-FXO7JKMZ.js +4 -0
- package/dist/chunk-GP7WD4UY.js +4 -0
- package/dist/{chunk-K2UEVCIJ.js → chunk-GSDXZS4U.js} +1 -1
- package/dist/{chunk-J2UN2AHO.js → chunk-GZ65ZA4C.js} +1 -1
- package/dist/chunk-H6TNBKGR.js +5 -0
- package/dist/{chunk-GILD6RGH.js → chunk-HLCETZ73.js} +1 -1
- package/dist/chunk-HOA4VWSD.js +5 -0
- package/dist/{chunk-33GXXC2L.js → chunk-HYTBEPC2.js} +1 -1
- package/dist/{chunk-PWRIG6UB.js → chunk-IAHOLH5W.js} +1 -1
- package/dist/chunk-IE3OO5GI.js +2 -0
- package/dist/{chunk-UF4JZXEE.js → chunk-JCMHB4KH.js} +1 -1
- package/dist/{chunk-KV5BOFPK.js → chunk-JFUFWICY.js} +2 -2
- package/dist/{chunk-FE6XRABM.js → chunk-JGAMMOUC.js} +1 -1
- package/dist/{chunk-CAO3XRA2.js → chunk-JL3L6KOG.js} +1 -1
- package/dist/chunk-JQCOKL6U.js +15 -0
- package/dist/{chunk-IZU5ND2C.js → chunk-JSS22MFY.js} +9 -9
- package/dist/chunk-JVEZBJJ7.js +2 -0
- package/dist/{chunk-3SP4JVDN.js → chunk-KALEPJAV.js} +2 -2
- package/dist/{chunk-AIVOYTYQ.js → chunk-KUS324VE.js} +1 -1
- package/dist/chunk-KZG4E5RM.js +2 -0
- package/dist/{chunk-KSLJOUH4.js → chunk-LJGAXIDU.js} +1 -1
- package/dist/chunk-M36MOFJW.js +9 -0
- package/dist/{chunk-ZOSY2PJM.js → chunk-MLYNVJNH.js} +1 -1
- package/dist/{chunk-XL6HDWM3.js → chunk-N3CVR4Z2.js} +1 -1
- package/dist/{chunk-2X3TANEV.js → chunk-NLEA6NPU.js} +1 -1
- package/dist/{chunk-4PARDPK2.js → chunk-NUJVYAI4.js} +1 -1
- package/dist/{chunk-3M2D7UUI.js → chunk-NWNG5UWD.js} +1 -1
- package/dist/{chunk-IWVA37B6.js → chunk-O25AL4B7.js} +1 -1
- package/dist/{chunk-KAZGHWGK.js → chunk-O3XBIURC.js} +1 -1
- package/dist/chunk-O66WXOOC.js +5 -0
- package/dist/{chunk-W2UYUV47.js → chunk-OFWJBOGT.js} +2 -2
- package/dist/{chunk-DMLYUTS4.js → chunk-OGDAWNFY.js} +1 -1
- package/dist/chunk-OPL2MIQG.js +2 -0
- package/dist/{chunk-F5AI3UVS.js → chunk-ORQGQSWG.js} +2 -2
- package/dist/{chunk-7KIIM6H7.js → chunk-OWGFFJKK.js} +1 -1
- package/dist/{chunk-6AZNGOLH.js → chunk-PGXJ275T.js} +1 -1
- package/dist/chunk-Q77QO3PC.js +17 -0
- package/dist/{chunk-XH2KDLZO.js → chunk-QVLYK5JL.js} +1 -1
- package/dist/{chunk-UZCSVEWP.js → chunk-QXRT6HSV.js} +1 -1
- package/dist/{chunk-LWQNRZH3.js → chunk-R7QMZBBH.js} +1 -1
- package/dist/{chunk-DIM5X2FR.js → chunk-RI4ILZZC.js} +1 -1
- package/dist/{chunk-D4G3SEBU.js → chunk-RQILLYSP.js} +1 -1
- package/dist/chunk-S4JUCBCT.js +7 -0
- package/dist/{chunk-VYMMGWVO.js → chunk-SHSXOYKT.js} +1 -1
- package/dist/{chunk-XAM5E27U.js → chunk-SIYSKT6I.js} +1 -1
- package/dist/chunk-SWTJMTBY.js +29 -0
- package/dist/chunk-T4R26WER.js +9 -0
- package/dist/{chunk-O5U6EAL3.js → chunk-TCAHDVII.js} +1 -1
- package/dist/{chunk-LAQBCZ5A.js → chunk-TEHZUSUY.js} +1 -1
- package/dist/chunk-TNBF5OMZ.js +2 -0
- package/dist/chunk-TU6IMGWO.js +2 -0
- package/dist/{chunk-NM76SG3S.js → chunk-TVELOH5A.js} +1 -1
- package/dist/chunk-UHSNUUX3.js +35 -0
- package/dist/{chunk-5G22NOZK.js → chunk-UHT5SVP5.js} +1 -1
- package/dist/{chunk-KXUTO5WC.js → chunk-UZIMYV5U.js} +1 -1
- package/dist/chunk-VOTIGXQ4.js +16 -0
- package/dist/{chunk-MXDWS7S4.js → chunk-VZDLRJ5N.js} +7 -7
- package/dist/{chunk-3FXNQTCE.js → chunk-W77SZLFC.js} +1 -1
- package/dist/{chunk-OHK6V7JX.js → chunk-WFBJNVMQ.js} +1 -1
- package/dist/{chunk-N2I23ANS.js → chunk-WNB2IYHY.js} +1 -1
- package/dist/chunk-XSUJJB7Z.js +11 -0
- package/dist/{chunk-TXZ66K4Q.js → chunk-XUJXGE42.js} +1 -1
- package/dist/{chunk-AQWTK6IN.js → chunk-XXE7W5AV.js} +1 -1
- package/dist/{chunk-EXLXV5OU.js → chunk-YAAQER2L.js} +1 -1
- package/dist/{chunk-XS2LZFCH.js → chunk-YCH7H7JX.js} +1 -1
- package/dist/{chunk-SEKJZOKW.js → chunk-YGMUNNKH.js} +1 -1
- package/dist/{chunk-ARU6KAGY.js → chunk-YKYKOV6U.js} +1 -1
- package/dist/chunk-YLQHY4A7.js +2 -0
- package/dist/{chunk-KGKJU27A.js → chunk-YYYQ5MVD.js} +1 -1
- package/dist/chunk-YZVR7ESF.js +2 -0
- package/dist/{chunk-PYQS5ST6.js → chunk-Z3YYMZHT.js} +2 -2
- package/dist/{chunk-QD2BUO5M.js → chunk-Z73ZYROU.js} +1 -1
- package/dist/{chunk-JX2CAVX6.js → chunk-ZCSEBT2W.js} +1 -1
- package/dist/{chunk-MCKBJIBB.js → chunk-ZEVU2OT3.js} +1 -1
- package/dist/{chunk-K4SULRBL.js → chunk-ZKCCG3GK.js} +1 -1
- package/dist/chunk-ZUZ6QJRA.js +23 -0
- package/dist/committer-IYQPXG6C.js +2 -0
- package/dist/{config-BCGD2FEX.js → config-UGCWZGH5.js} +1 -1
- package/dist/cover-cmd-SWJ2NZUZ.js +3 -0
- package/dist/{credentials-YNH5BU2Z.js → credentials-GWLYYRTL.js} +1 -1
- package/dist/{deps-bundle-LOFI4DAJ.js → deps-bundle-VNGC2UG6.js} +1 -1
- package/dist/{deps-resolve-GA6IPHVZ.js → deps-resolve-YLCEU6I7.js} +1 -1
- package/dist/design-committer-J57IAAA5.js +2 -0
- package/dist/dispatch-OMQCT7WO.js +2 -0
- package/dist/{doctor-W5TQBYB5.js → doctor-B4Z6RPKQ.js} +1 -1
- package/dist/docx-convert-WPZS6OIC.js +2 -0
- package/dist/{dossier-Y6TJWFZU.js → dossier-UGJMYYAB.js} +1 -1
- package/dist/evidence-XJGXVLO5.js +2 -0
- package/dist/evolve-cmd-QQQPPGL3.js +2 -0
- package/dist/explain-H5HJEDEF.js +2 -0
- package/dist/{explain-cmd-XCRO4AS6.js → explain-cmd-R45I5MT7.js} +1 -1
- package/dist/explain-cmd-XVE6Z67Q.js +9 -0
- package/dist/extract-bind-7IDQS4QP.js +14 -0
- package/dist/{extract-cmd-7FKQJNS7.js → extract-cmd-KIEOBRIT.js} +3 -3
- package/dist/feeder-RSHMGW6B.js +2 -0
- package/dist/gaps-cmd-RGIPUSIR.js +3 -0
- package/dist/{generate-headless-OBMB5CSB.js → generate-headless-XGRIDD6O.js} +2 -2
- package/dist/headless-io-3A3BZVQ5.js +2 -0
- package/dist/index.js +187 -206
- package/dist/ingest-QGLVY7ND.js +2 -0
- package/dist/ingest-cmd-R5H5SF5K.js +2 -0
- package/dist/install-W3VPVPAQ.js +2 -0
- package/dist/interactive-bind-X5DVLRRW.js +26 -0
- package/dist/lifecycle-cmd-6R2PR2HM.js +2 -0
- package/dist/{list-cmd-V3HJ5K4O.js → list-cmd-QCIYKWYQ.js} +1 -1
- package/dist/{list-commands-SH4HPFI4.js → list-commands-VRRCVWKO.js} +1 -1
- package/dist/{locks-cmd-CSVSWY2Y.js → locks-cmd-67OHQZNV.js} +1 -1
- package/dist/logical-ids-DN6IZSUM.js +2 -0
- package/dist/login-flow-5HL2QYEL.js +2 -0
- package/dist/maintenance-cmd-GZ4EMT3V.js +2 -0
- package/dist/{mobile-prompts-UZTRJ3L7.js → mobile-prompts-CMIVWDHQ.js} +1 -1
- package/dist/objective-variable-gate-EEYJ6B3X.js +2 -0
- package/dist/open-provider-UFSCTIQQ.js +2 -0
- package/dist/pdf-convert-5H4HQNN3.js +2 -0
- package/dist/{persist-recorded-session-QMRY4DOF.js → persist-recorded-session-JXL5E53A.js} +1 -1
- package/dist/phase-seed-HKJ2EF7R.js +2 -0
- package/dist/pipeline-RSCRNNPW.js +2 -0
- package/dist/prepare-target-XZ3FTVBW.js +2 -0
- package/dist/readmodel-IBFRM6EO.js +2 -0
- package/dist/reconcile-cmd-4VRTUM2D.js +2 -0
- package/dist/reconcile-deps-ZCJ2QCK5.js +4 -0
- package/dist/reconcile-engine-IVLZCYZB.js +2 -0
- package/dist/{recording-banner-7E75ERQJ.js → recording-banner-SRLPSTFP.js} +1 -1
- package/dist/records-TJJJWBUD.js +2 -0
- package/dist/registry-CPQHW2L2.js +2 -0
- package/dist/{require-project-folder-LBUYWQOF.js → require-project-folder-SKEZMSN7.js} +1 -1
- package/dist/{resolve-run-intent-GHISMXLZ.js → resolve-run-intent-THC3EPAX.js} +1 -1
- package/dist/{resolver-7JC5VZ4S.js → resolver-2NUNLK7N.js} +1 -1
- package/dist/revert-6BBBK3I4.js +2 -0
- package/dist/review-cmd-BMJQZ6XJ.js +5 -0
- package/dist/run-TURFDLC6.js +2 -0
- package/dist/run-UDP5VPYS.js +2 -0
- package/dist/{run-test-md-5LPCKCW7.js → run-test-md-MRYNFNPO.js} +2 -2
- package/dist/sessions-NH7WQWMX.js +2 -0
- package/dist/{sessions-cmd-VDQGRBEM.js → sessions-cmd-DV442ZCY.js} +1 -1
- package/dist/{skill-installer-YQPZZB7I.js → skill-installer-CVJ5VTEJ.js} +1 -1
- package/dist/{spawner-X2FOOONV.js → spawner-7FUA3JXA.js} +1 -1
- package/dist/store-guard-XQ5MSUB2.js +2 -0
- package/dist/structured-answers-NADW6D44.js +5 -0
- package/dist/sync-cmd-5INKTZN2.js +2 -0
- package/dist/sync-setup-4R54VRAO.js +2 -0
- package/dist/sync-setup-ui-RC727VK6.js +3 -0
- package/dist/tcg-generate-2BOPGRM6.js +2 -0
- package/dist/testmd-actions-2CPJZAC2.js +2 -0
- package/dist/testmd-sync-HYZI6NRM.js +2 -0
- package/dist/token-refresh-NTE4LQRN.js +2 -0
- package/dist/{validate-basic-GTSVZFQI.js → validate-basic-OKLJLDML.js} +1 -1
- package/dist/{variable-receipt-IHQAYWMZ.js → variable-receipt-CMCDUJI2.js} +1 -1
- package/dist/verdicts-EMCYGQWM.js +2 -0
- package/dist/{version-check-IPEPJZDX.js → version-check-4DQJBSXW.js} +1 -1
- package/dist/{view-cmd-SXXNDZIC.js → view-cmd-P3XRFORJ.js} +1 -1
- package/dist/walk-session-MUGS6CZY.js +2 -0
- package/dist/with-telemetry-3T53GIQC.js +2 -0
- package/package.json +12 -11
- package/dist/EvidenceViewOffer-AZRAILJQ.js +0 -2
- package/dist/FolderPicker-OJFR7AKZ.js +0 -2
- package/dist/ScrollbackTap-Q3IOKNMS.js +0 -2
- package/dist/SingleShotApp-72D5VVLE.js +0 -2
- package/dist/TestMdRunView-4OA52DA2.js +0 -2
- package/dist/bind-F36JFHUK.js +0 -12
- package/dist/bridge-KMDML2NB.js +0 -2
- package/dist/chat-committer-RAOIL2T6.js +0 -2
- package/dist/chat-controller-YJCNU76T.js +0 -2
- package/dist/chunk-4WOVHRI2.js +0 -15
- package/dist/chunk-54JZ6VEW.js +0 -4
- package/dist/chunk-5DT7PIGB.js +0 -5
- package/dist/chunk-6FCPS2VT.js +0 -4
- package/dist/chunk-6IAA644J.js +0 -9
- package/dist/chunk-6J635CRI.js +0 -5
- package/dist/chunk-AGRUULPT.js +0 -4
- package/dist/chunk-BZTWTYQQ.js +0 -6
- package/dist/chunk-CUSTYILP.js +0 -2
- package/dist/chunk-DBIBROYW.js +0 -5
- package/dist/chunk-I27YRAGO.js +0 -7
- package/dist/chunk-IAHKTEET.js +0 -2
- package/dist/chunk-IVQX3AKL.js +0 -4
- package/dist/chunk-J3Q63NFG.js +0 -2
- package/dist/chunk-K6RAOZHP.js +0 -4
- package/dist/chunk-KO3FL2XW.js +0 -26
- package/dist/chunk-L32DKFRQ.js +0 -16
- package/dist/chunk-LPDBTGO5.js +0 -21
- package/dist/chunk-N7Z7BQYO.js +0 -3
- package/dist/chunk-NVGBE2DR.js +0 -2
- package/dist/chunk-OS4VSIHT.js +0 -4
- package/dist/chunk-OTMAFCZK.js +0 -8
- package/dist/chunk-P5MJMM3X.js +0 -85
- package/dist/chunk-QQ5MHSSY.js +0 -2
- package/dist/chunk-T7DGNWI2.js +0 -17
- package/dist/chunk-UH2ZTX4E.js +0 -2
- package/dist/chunk-W3Z7AZNT.js +0 -4
- package/dist/chunk-WUV3FJ7C.js +0 -11
- package/dist/chunk-XMTSHHYQ.js +0 -4
- package/dist/committer-C6UCDYMC.js +0 -2
- package/dist/cover-cmd-5LPHIOSI.js +0 -3
- package/dist/design-committer-UPC6NZUF.js +0 -2
- package/dist/dispatch-FRCPK3AZ.js +0 -2
- package/dist/docx-convert-BIV5T7F5.js +0 -2
- package/dist/evidence-FHO36EEV.js +0 -2
- package/dist/evolve-cmd-6RXLKERE.js +0 -2
- package/dist/explain-3HAZY7Q6.js +0 -2
- package/dist/explain-cmd-RMJPXD4U.js +0 -9
- package/dist/extract-bind-BFJPRNPQ.js +0 -10
- package/dist/feeder-IOR3XRNF.js +0 -2
- package/dist/gaps-cmd-FDJ3PT4C.js +0 -3
- package/dist/headless-io-66RG5NN5.js +0 -2
- package/dist/ingest-TTUQ7UDK.js +0 -2
- package/dist/ingest-cmd-AV66Q5LC.js +0 -2
- package/dist/install-SFJ2FFQ6.js +0 -2
- package/dist/interactive-bind-N5AQB26T.js +0 -25
- package/dist/lifecycle-cmd-KSMETBPP.js +0 -2
- package/dist/logical-ids-MLXAH45L.js +0 -2
- package/dist/login-flow-ODVWEPRU.js +0 -2
- package/dist/maintenance-cmd-VFYGKY3X.js +0 -2
- package/dist/objective-variable-gate-3VUXNDCZ.js +0 -2
- package/dist/pdf-convert-OZIRUADA.js +0 -2
- package/dist/phase-seed-BMOSAA74.js +0 -2
- package/dist/pipeline-5FHWZAXK.js +0 -2
- package/dist/prepare-target-UJEY2FSR.js +0 -2
- package/dist/readmodel-TDRFVDVI.js +0 -2
- package/dist/reconcile-cmd-2QHZML2L.js +0 -2
- package/dist/reconcile-deps-ZBWUY3SM.js +0 -4
- package/dist/reconcile-engine-YC4RQYF2.js +0 -2
- package/dist/records-JLS63SDI.js +0 -2
- package/dist/registry-JJTRUPH7.js +0 -2
- package/dist/revert-PRR3D4XM.js +0 -2
- package/dist/review-cmd-SAGIKWEW.js +0 -4
- package/dist/run-43ACVPJK.js +0 -2
- package/dist/run-EOTOXNQO.js +0 -2
- package/dist/sessions-GIEXOCE4.js +0 -2
- package/dist/structured-answers-YAVW65G4.js +0 -5
- package/dist/tcg-generate-V4QRNEZV.js +0 -2
- package/dist/testmd-actions-2UMU3QMV.js +0 -2
- package/dist/testmd-sync-UBXDLWYD.js +0 -2
- package/dist/token-refresh-NL5AM446.js +0 -2
- package/dist/verdicts-QU6W3TUF.js +0 -2
- package/dist/walk-session-7JVB4Z5S.js +0 -2
- package/dist/with-telemetry-LRI7H6DH.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as nt}from"./chunk-ZKSN2SJ7.js";import{a as
|
|
2
|
+
import{a as nt}from"./chunk-ZKSN2SJ7.js";import{a as it,b as he}from"./chunk-HOA4VWSD.js";import{a as Z,b as Ke,e as pe,f as ge,g as Qe,h as et}from"./chunk-6DHEOPXX.js";import{a as We,c as Ye,d as Xe,e as fe,f as Ze}from"./chunk-UHT5SVP5.js";import{a as Ge,b as Ve,c as Ue}from"./chunk-DMCEGMGB.js";import{a as ze}from"./chunk-L2TV4G56.js";import{c as He}from"./chunk-52WM3XYO.js";import{a as Me,b as Be,c as Fe}from"./chunk-BB2W35TW.js";import{a as qe,e as Le}from"./chunk-CRZUBDJ3.js";import{a as Je}from"./chunk-GX3FPJUG.js";import{a as tt,b as st}from"./chunk-JUJ4SAGH.js";import{q as je}from"./chunk-UHSNUUX3.js";import{b as Oe,c as Pe,d as re,f as Ne}from"./chunk-JVEZBJJ7.js";import{b as Se,c as De,e as $e,f as Ee,g as Re,h as de,k as me,l as ue}from"./chunk-SWTJMTBY.js";import{d as xe}from"./chunk-CAOZKSQ3.js";import{b as ce}from"./chunk-VZ7KXRXB.js";import{a as ke,c as le}from"./chunk-5LJRZI7S.js";import{C as U}from"./chunk-GP7WD4UY.js";import{H as Ie}from"./chunk-3N6IAVD5.js";import{a as Ce,f as Ae,g as Te}from"./chunk-FQNQVC5O.js";import{d as Q,e as Y}from"./chunk-AKX4VRRR.js";import{a as we}from"./chunk-5EOX4MEY.js";import{mkdirSync as Vt,appendFileSync as Ut,rmdirSync as St}from"fs";import{randomBytes as Ht}from"crypto";import{dirname as ae,join as ve,relative as zt}from"path";function rt(t,e){let n=[];for(let i of e??[]){let o=t.resolve(i.ref)?.tip??null;o!==i.cid&&n.push({ref:i.ref,pinned:i.cid,now:o})}return n}import{existsSync as be,readFileSync as _e,readdirSync as Et}from"fs";import{join as se}from"path";var at=`
|
|
3
3
|
version: 1
|
|
4
4
|
techniques:
|
|
5
5
|
- id: eqp
|
|
@@ -349,19 +349,19 @@ pitfalls:
|
|
|
349
349
|
- "'Test the checkout flow' has no end state \u2014 state what done looks like."
|
|
350
350
|
- "Do not cram many unrelated operations into one step; do not reference data outside the step."
|
|
351
351
|
- "A step whose only content is an assertion is a smell \u2014 fold it into the action step before it."
|
|
352
|
-
`;var Rt=["presence","forbidden-presence","count","delta","state-transition","absolute","bound","propagation","latency","graded"];function mt(t,e){for(let n of t)if(!Rt.includes(n))throw new Error(`${e}: emits '${n}' is not an oracle kind`)}function lt(t,e){let n=ce(t);if(!n||!Array.isArray(n.techniques))throw new Error(`${e}: expected { techniques: [...] }`);for(let i of n.techniques){if(!i.id||!i.name||!i.applies_hint||!Array.isArray(i.emits))throw new Error(`${e}: technique '${i?.id??"?"}' missing id/name/applies_hint/emits`);mt(i.emits,`${e}: technique '${i.id}'`)}return n.techniques}function dt(t,e){let n=ce(t);if(!n||!n.id||!n.name||!n.applies_when||!Array.isArray(n.candidate_checks))throw new Error(`${e}: profile missing id/name/applies_when/candidate_checks`);for(let i of n.candidate_checks){if(!i.id||!i.family||!i.measurable_example||!i.emits)throw new Error(`${e}: candidate_check '${i?.id??"?"}' missing id/family/measurable_example/emits`);mt([i.emits],`${e}: check '${i.id}'`)}return n}function ut(t){let e=new Map(lt(at,"packaged techniques").map(i=>[i.id,i])),n=se(t,"design","techniques.yaml");if(be(n))for(let i of lt(_e(n,"utf8"),n))e.set(i.id,i);return[...e.values()]}function pt(t){let e=new Map(Object.entries(ot).map(([i,o])=>[i,dt(o,`packaged profile '${i}'`)])),n=se(t,"design","profiles");if(be(n))for(let i of Et(n).filter(o=>o.endsWith(".yaml")||o.endsWith(".yml")).sort()){let o=dt(_e(se(n,i),"utf8"),se(n,i));e.set(o.id,o)}return[...e.values()]}function gt(t){let e=se(t,"design","runner-grammar.yaml");return be(e)?_e(e,"utf8"):ct}function ie(t,e){return!t.superseded.has(e)}function ye(t,e,n){return{cid:e,logical_id:t.nameOf.get(e)??null,content:n}}async function ft(t,e,n,i,o){let r=await
|
|
353
|
-
`),M=(await ft(i,C,Q.SCENARIO,10,n.embedSearch)).filter(l=>!T.has(l.cid)),R=[],P=new Set,X=[],E=[r],q=new Set([r]);for(;E.length>0;){let l=E.shift();for(let g of i.edgesFrom(l)){if(g.type!==Y.DEPENDS_ON||i.nodeLabel.get(g.dst)!==Q.USECASE)continue;let h=i.tipOf(g.dst);q.has(h)||(q.add(h),X.push(h),E.push(h))}}for(let l of X){let g=`depends_on ${i.nameOf.get(l)??l.slice(0,19)}`;for(let{cid:h}of i.byLabel(Q.SCENARIO))if(ie(i,h)&&i.edgesFrom(h).some(S=>S.type===Y.BELONGS_TO&&S.dst===l))for(let S of i.edgesInto(h)){if(S.type!==Y.AUTOMATES||!ie(i,S.src)||P.has(S.src))continue;P.add(S.src);let G=String(i.getNode(S.src)?.content.title??"");R.push({cid:S.src,logical_id:i.nameOf.get(S.src)??null,title:G,via:g})}}for(let l of await ft(i,C,Q.TEST,5,n.embedSearch)){let{cid:g,title:h}=l;P.has(g)||(P.add(g),R.push({cid:g,logical_id:i.nameOf.get(g)??null,title:h??"",via:"similar"}))}let f=i.byLabel(Q.STYLENOTE).filter(l=>ie(i,l.cid)).sort((l,g)=>l.cid<g.cid?-1:1).slice(0,5).map(l=>`${String(l.content.statement)} [${String(l.content.learned_from_kind)}]`);return{usecase:ye(i,r,v.content),cites:N,committed_acs:$,existing:{scenarios:w,reuse_candidates:M},import_candidates:R,style_notes:f,techniques:ut(t),profiles:pt(t),runner_grammar:gt(t),variables:[...(n.variablesIndex??new Map).entries()].map(([l,g])=>({name:l,has_value:g.has_value})).sort((l,g)=>l.name<g.name?-1:1),budget:{...n.max!=null?{max_pairs:n.max}:{},...n.strength!=null?{strength_override:n.strength}:{}},design_of:(()=>{let l=
|
|
352
|
+
`;var Rt=["presence","forbidden-presence","count","delta","state-transition","absolute","bound","propagation","latency","graded"];function mt(t,e){for(let n of t)if(!Rt.includes(n))throw new Error(`${e}: emits '${n}' is not an oracle kind`)}function lt(t,e){let n=ce(t);if(!n||!Array.isArray(n.techniques))throw new Error(`${e}: expected { techniques: [...] }`);for(let i of n.techniques){if(!i.id||!i.name||!i.applies_hint||!Array.isArray(i.emits))throw new Error(`${e}: technique '${i?.id??"?"}' missing id/name/applies_hint/emits`);mt(i.emits,`${e}: technique '${i.id}'`)}return n.techniques}function dt(t,e){let n=ce(t);if(!n||!n.id||!n.name||!n.applies_when||!Array.isArray(n.candidate_checks))throw new Error(`${e}: profile missing id/name/applies_when/candidate_checks`);for(let i of n.candidate_checks){if(!i.id||!i.family||!i.measurable_example||!i.emits)throw new Error(`${e}: candidate_check '${i?.id??"?"}' missing id/family/measurable_example/emits`);mt([i.emits],`${e}: check '${i.id}'`)}return n}function ut(t){let e=new Map(lt(at,"packaged techniques").map(i=>[i.id,i])),n=se(t,"design","techniques.yaml");if(be(n))for(let i of lt(_e(n,"utf8"),n))e.set(i.id,i);return[...e.values()]}function pt(t){let e=new Map(Object.entries(ot).map(([i,o])=>[i,dt(o,`packaged profile '${i}'`)])),n=se(t,"design","profiles");if(be(n))for(let i of Et(n).filter(o=>o.endsWith(".yaml")||o.endsWith(".yml")).sort()){let o=dt(_e(se(n,i),"utf8"),se(n,i));e.set(o.id,o)}return[...e.values()]}function gt(t){let e=se(t,"design","runner-grammar.yaml");return be(e)?_e(e,"utf8"):ct}function ie(t,e){return!t.superseded.has(e)}function ye(t,e,n){return{cid:e,logical_id:t.nameOf.get(e)??null,content:n}}async function ft(t,e,n,i,o){let r=await Ke(t,"search_similar",{text:e,label:n,k:i},o);return r.ok&&Array.isArray(r.result)?r.result:[]}async function ht(t,e,n={}){let i=U(t),o=i.resolve(e);if(!o)throw new Error(`assembleDesignContext: unknown use-case '${e}' (run designGate first)`);let r=o.tip,v=i.getNode(r);if(!v||v.label!==Q.USECASE)throw new Error(`assembleDesignContext: '${e}' is not a use-case (run designGate first)`);let N=i.derivesInto(r).map(l=>({source_id:l.props.source_id??null,anchor:l.props.anchor??null})),w=[],T=new Set;for(let{cid:l,content:g}of i.byLabel(Q.SCENARIO))ie(i,l)&&i.edgesFrom(l).some(h=>h.type===Y.BELONGS_TO&&h.dst===r)&&(w.push(ye(i,l,g)),T.add(l));let $=[];for(let{cid:l,content:g}of i.byLabel(Q.AC)){if(!ie(i,l))continue;let h=i.edgesFrom(l).find(S=>S.type===Y.SCOPED_TO);!h||h.dst!==r&&!T.has(h.dst)||$.push({...ye(i,l,g),scoped_to:h.dst})}let x=Array.isArray(v.content.criteria)?v.content.criteria:[],C=[v.content.title,v.content.description,...x].filter(Boolean).join(`
|
|
353
|
+
`),M=(await ft(i,C,Q.SCENARIO,10,n.embedSearch)).filter(l=>!T.has(l.cid)),R=[],P=new Set,X=[],E=[r],q=new Set([r]);for(;E.length>0;){let l=E.shift();for(let g of i.edgesFrom(l)){if(g.type!==Y.DEPENDS_ON||i.nodeLabel.get(g.dst)!==Q.USECASE)continue;let h=i.tipOf(g.dst);q.has(h)||(q.add(h),X.push(h),E.push(h))}}for(let l of X){let g=`depends_on ${i.nameOf.get(l)??l.slice(0,19)}`;for(let{cid:h}of i.byLabel(Q.SCENARIO))if(ie(i,h)&&i.edgesFrom(h).some(S=>S.type===Y.BELONGS_TO&&S.dst===l))for(let S of i.edgesInto(h)){if(S.type!==Y.AUTOMATES||!ie(i,S.src)||P.has(S.src))continue;P.add(S.src);let G=String(i.getNode(S.src)?.content.title??"");R.push({cid:S.src,logical_id:i.nameOf.get(S.src)??null,title:G,via:g})}}for(let l of await ft(i,C,Q.TEST,5,n.embedSearch)){let{cid:g,title:h}=l;P.has(g)||(P.add(g),R.push({cid:g,logical_id:i.nameOf.get(g)??null,title:h??"",via:"similar"}))}let f=i.byLabel(Q.STYLENOTE).filter(l=>ie(i,l.cid)).sort((l,g)=>l.cid<g.cid?-1:1).slice(0,5).map(l=>`${String(l.content.statement)} [${String(l.content.learned_from_kind)}]`);return{usecase:ye(i,r,v.content),cites:N,committed_acs:$,existing:{scenarios:w,reuse_candidates:M},import_candidates:R,style_notes:f,techniques:ut(t),profiles:pt(t),runner_grammar:gt(t),variables:[...(n.variablesIndex??new Map).entries()].map(([l,g])=>({name:l,has_value:g.has_value})).sort((l,g)=>l.name<g.name?-1:1),budget:{...n.max!=null?{max_pairs:n.max}:{},...n.strength!=null?{strength_override:n.strength}:{}},design_of:(()=>{let l=tt(i,r);return l?{engine:l.engine,seq:l.seq}:null})()}}function bt(t){let e=n=>{if(Array.isArray(n))return n.map(e);if(n!==null&&typeof n=="object"){let i={};for(let o of Object.keys(n).sort())i[o]=e(n[o]);return i}return n};return JSON.stringify(e(t),null,1)}import{basename as qt,dirname as vt,resolve as wt}from"path";import{existsSync as Ct,mkdirSync as At,readFileSync as Tt,renameSync as It,writeFileSync as Ot}from"fs";import{dirname as Pt,join as Nt}from"path";function _t(t){return Nt(t,".testmuai","variables","assurance.json")}function yt(t){for(let o of t.declarations){let r=re(o.name);if(r)throw new Error(`variable declaration refused: ${r}`)}let e={};if(Ct(t.file)){let o=JSON.parse(Tt(t.file,"utf8"));o&&typeof o=="object"&&!Array.isArray(o)&&(e=o)}let n=[],i=[];for(let o of t.declarations){if(Object.hasOwn(e,o.name)||t.known?.has(o.name)){i.push(o.name);continue}e[o.name]={value:"",secret:!!o.secret,description:o.description},n.push(o.name)}if(n.length>0){At(Pt(t.file),{recursive:!0});let o=`${t.file}.tmp-${process.pid}-${Date.now()}`;Ot(o,JSON.stringify(e,null,2)+`
|
|
354
354
|
`),It(o,t.file)}return{written:n,skipped:i}}var jt=me,Lt=new Set(["narrative","acs","scenarios","tests","exercises","gaps","scoped_to_repoints","judgements","variables","phase"]);function Mt(t){let e=/strength=(\d+)\s*(?:—|-)?\s*(.*)/.exec(t??"");return e?{strength:Number(e[1]),reason:e[2]||t||""}:{strength:2,reason:t??""}}function Bt(t,e,n=new Set,i=0){return jt(e,ue(t),n,i)}function Ft(t,e,n,i){let o=e.scenarios?.find(x=>x.temp_ref===n.automates)??(()=>{let x=t.resolve(n.automates),C=x?t.getNode(x.tip)?.content:void 0;return C?{title:String(C.title??""),intent:String(C.intent??""),technique_notes:String(C.technique_notes??"")}:{}})(),r=[...(e.acs??[]).map(x=>({ref:x.temp_ref,text:x.text})),...n.verifies.filter(x=>!(e.acs??[]).some(C=>C.temp_ref===x)).map(x=>{let C=t.resolve(x);return{ref:x,text:C?String(t.getNode(C.tip)?.content.text??""):""}})],{test_md:v,objectives_yaml:N}=Re({title:n.title,steps:n.steps,check:n.check,check_prose:n.check_prose,reuses:n.reuses,...n.target?{target:n.target,...n.app?{app:n.app}:{}}:{}},{title:o.title,intent:o.intent},r),w=de(Bt(t,v)),T=n.check,$={technique:o.technique_notes??"",profile_family:e.judgements?.find(x=>x.kind==="profile_family"&&(x.target===n.temp_ref||x.target===n.automates))?.rationale??"unspecified",anchor:T.verified_against,expected_how:e.judgements?.find(x=>x.kind==="expected_how"&&x.target===T.verified_against)?.rationale??`expected_mode: ${T.expected_mode??"inferred"}`,combinatorial:Mt(o.technique_notes),surface_state:"absent",deferred_bindings:T.expected_mode==="runtime-derived"?1:0};return i.push({definitionId:w,rationale:$,anchorRef:T.verified_against,tempRef:n.temp_ref}),{temp_ref:n.temp_ref,title:n.title,automates:n.automates,verifies:n.verifies,check:n.check,definitionId:w,test_md_blob:v,objectives_blob:N,...n.reuses?.length?{reuses:n.reuses}:{},...n.surface_required!==void 0?{surface_required:n.surface_required}:{},...n.target?{target:n.target}:{},...n.target&&n.app?{app:n.app}:{}}}function Gt(t,e){try{let n=t.resolve(e.automates);if(!n)return!1;let i=t.tipOf(n.cid)??n.cid;for(let o of t.edgesInto(i)){if(o.type!==Y.AUTOMATES)continue;let r=t.getNode(t.tipOf(o.src)??o.src)?.content,v=typeof r?.test_md_blob=="string"?r.test_md_blob:"";if(!v)continue;if(!v.split(`
|
|
355
|
-
`).some(w=>/^##\s/.test(w)&&!/—\s?assert/.test(w)&&xe.test(w)))return!0}return!1}catch{return!1}}function kt(t){let e=0,n=t.forceScope??null;return{terminalEventType:"design",async onProposalEvent(i){let o=a=>t.steer?(t.steer(`[auto-repair] ${a} \u2014 please re-finalize with this fixed.`),{proposal:null,error:null}):{proposal:null,error:a};if(i==null||typeof i!="object")return o("finalize_design payload is not an object");let r=i,v=Object.keys(r).filter(a=>!Lt.has(a));if(v.length>0)return o(`finalize_design carries ungated/unknown section(s): ${v.join(", ")} \u2014 mintable here: acs, scenarios, tests (+gaps)`);let N=new Map;for(let a of r.tests??[]){let m=N.get(a.automates);if(m)return o(`strict 1:1 violated in-payload: ${m} and ${a.temp_ref} both automate ${a.automates}`);if(N.set(a.automates,a.temp_ref),typeof a.app=="string"&&!/^APP/.test(a.app)&&!/[\/]/.test(a.app)&&!/\.(apk|zip|app)$/i.test(a.app))return o(`${a.temp_ref}: app '${a.app}' is neither a build path (.apk / .zip of an .app) nor an APP\u2026 upload id \u2014 omit the field when only a bundle id exists`)}let w=U(t.contextDir),T=/^design@(\d+)$/.exec(t.templateVersion?.()??"");if(T&&Number.parseInt(T[1],10)>=6)for(let a of r.tests??[]){if(!Array.isArray(a.steps??[]))return o(`${a.temp_ref}: steps must be an array of objective strings or {text, verifies} objects`);let m=new Set;for(let k of Array.isArray(a.steps)?a.steps:[])if(typeof k=="object"&&k.verifies)for(let O of k.verifies)m.add(O);let _=new Set(a.verifies??[]),b=[..._].filter(k=>!m.has(k)),I=[...m].filter(k=>!_.has(k));if(!(m.size===0&&Gt(w,a))&&(m.size===0||b.length>0||I.length>0))return o(`${a.temp_ref}: every AC must be claimed by the step that proves it \u2014 `+(m.size===0?"no step carries verifies tags":`not claimed by any step: [${b.join(", ")}]; tagged but not in the test's verifies: [${I.join(", ")}]`))}if(r.variables!==void 0&&!Array.isArray(r.variables))return o("variables must be an array of {name, description, secret}");let $=!!T&&Number.parseInt(T[1],10)>=7;if((r.variables??[]).length>0&&!$)return o("variables[] needs design@7 \u2014 this session is bound to an older template; drop the section");let x=new Set;for(let a of r.variables??[]){if(!a||typeof a!="object"||typeof a.name!="string"||typeof a.description!="string"||typeof a.secret!="boolean")return o(`variables[]: every entry is {name, description, secret} \u2014 got ${JSON.stringify(a)}`);let m=Object.keys(a).filter(b=>!["name","description","secret"].includes(b));if(m.length>0)return o(`variables[]: '${a.name}' carries ${m.join(", ")} \u2014 a declaration has no value and no other fields`);let _=re(a.name);if(_)return o(`variables[]: ${_}`);if(!a.description.trim()||/[\r\n]/.test(a.description))return o(`variables[]: '${a.name}' needs a one-line, non-empty description`);if(x.has(a.name))return o(`variables[]: '${a.name}' is declared twice`);x.add(a.name)}if($){let a=t.variablesIndex?.()??new Map;for(let m of r.tests??[]){let _=[...(Array.isArray(m.steps)?m.steps:[]).map(b=>typeof b=="string"?b:b.text),m.check_prose??""];for(let b of _)for(let I of Ne(b))if(!(a.has(I)||x.has(I)))return o(`${m.temp_ref}: step references {{${I}}} but no variable named '${I}' exists in the pool and this payload does not declare it \u2014 reuse a name from the variables block, or declare it in \`variables\` ({name, description, secret})`)}}t.force&&!t.resuming&&e===0&&n===null&&(n=st(w,t.ucRef));let C=w.resolve(t.ucRef),M=C?String(w.getNode(C.tip)?.content.risk??"med"):"med",R=[],P=new Set([t.ucRef,C?.cid,C?.tip].filter(Boolean)),X=a=>{if(P.has(a))return!0;let m=w.resolve(a);return m!=null&&(P.has(m.cid)||P.has(m.tip))},E;try{E={...r.acs?.length?{acs:r.acs.map(a=>({temp_ref:a.temp_ref,text:a.text,kind:a.kind,risk:a.risk??M,...a.expected_answer?{expected_answer:a.expected_answer}:{},...a.scoped_to&&!X(a.scoped_to)?{scope:{type:"scenario",ref:a.scoped_to}}:{}}))}:{},...r.scenarios?.length?{scenarios:r.scenarios}:{},...r.tests?.length?{tests:r.tests.map(a=>Ft(w,r,a,R))}:{},...r.exercises?.length?{exercises:r.exercises}:{},...r.gaps?.length?{gaps:r.gaps}:{},...r.scoped_to_repoints?.length?{scoped_to_repoints:r.scoped_to_repoints}:{},...r.judgements?.length?{judgements:r.judgements}:{}}}catch(a){return o(a instanceof Error?a.message:String(a))}let q=r.phase??(r.tests?.length?"tests":r.scenarios?.length?"scenarios":r.acs?.length?"acs":"design"),f=(a,m={})=>({contextDir:t.contextDir,graph:a,ucRef:t.ucRef,sections:E,by:t.by,phase:q,...m,...t.templateVersion?{templateVersion:t.templateVersion()}:{},...t.engine?{engine:t.engine}:{},...n?.length?{forceScope:n}:{},...t.because?{reason:t.because}:{},finalizeTestBody:(()=>{let _=new Map((E.tests??[]).map(k=>[k.temp_ref,k])),b=new Map,I=(k,O,H)=>{let L=_.get(k);if(!L?.test_md_blob)return null;let z=b.get(k);if(z!==void 0)return z;if(H.has(k))return L.test_md_blob;H.add(k);let W=new Map;for(let s of L.reuses??[]){I(s,O,H);let d=O(s);d!==null&&d!==s&&W.set(s,d)}let j=L.verifies.map(O).filter(s=>s!==null),J=Ee(L.test_md_blob,W),{md:ne,tagged:D}=Se(J,O),K=D?ne:$e(J,j);return De(K,j),b.set(k,K),K};return(k,O)=>{if(!k.test_md_blob)return null;let H=I(k.temp_ref,O,new Set)??k.test_md_blob;if(H===k.test_md_blob)return null;let L=z=>{for(let W of _.keys())if(O(W)===z){let j=I(W,O,new Set);if(j!==null)return{body:j,cycleKey:`batch:${z}`,next:L}}return ue(w)(z)};return{test_md_blob:H,definitionId:de(me(H,L))}}})()}),l;if(t.protocol){let a=t.generationTicket,m=await Fe(t.protocol,{verb:"design",ucTargets:[{ref:t.ucRef}],newBuCandidates:[],sourcePins:[],readBasis:w.latestHash,...a?{generationTicket:a}:{}},_=>{let b=he(f(_.graph,{eventIds:_.eventIds("design",1),sid:_.sid,...a&&!t.generationStamped?{generationTicket:a}:{}}));return b.errors!==null?{errors:b.errors}:{result:b,record:b.record}});m.ok&&"result"in m?(l=m.result,a&&!t.generationStamped&&(t.generationStamped=!0,t.generationTicket={...a,expected_prev_gen:a.next_gen})):m.ok?l={record:null,errors:null,minted:{},logicalIds:{},superseded:[],warnings:["commit already applied (recommit)"],finalizedTests:{}}:l={record:null,errors:m.kind==="validation"?m.errors:m.kind==="contended"?[{code:m.err.code,detail:`${t.ucRef} is held by ${m.err.holder?.owner_sid??"another session"}${m.err.holder?.alive?" (live)":" (stale)"} \u2014 try another use-case or wait for it to free`}]:m.kind==="drifted"?m.asks.map(b=>({code:"DRIFTED",detail:b.detail})):[{code:"UNSETTLED",detail:`concurrent activity kept moving the store (${m.attempts} attempts) \u2014 retry when the store is quieter`}],minted:{},logicalIds:{},superseded:[],warnings:[],finalizedTests:{}}}else l=he(f(w));if(l.errors)return o("design commit failed: "+l.errors.map(a=>`${a.code}: ${a.detail}`).join("; "));let g=l.warnings.filter(a=>a.includes("\u2014 committed anyway; approve"));for(let a of l.warnings)(!g.includes(a)||g.length===1)&&t.note(`warning: ${a}`);g.length>1&&t.note(`warning: ${g.length} test link(s) refer to items still awaiting approval \u2014 saved anyway; review and approve those items in chat or via kane-cli context review`);let h=(a,m)=>a?`${a} ${m}${a>1?"s":""}`:null,S=[h(r.acs?.length,"AC"),h(r.scenarios?.length,"scenario"),h(r.tests?.length,"test"),h(r.gaps?.length,"gap")].filter(Boolean);t.aliases?.(Object.entries(l.minted).map(([a,m])=>({ref:a,cid:m,...l.logicalIds[a]?{id:l.logicalIds[a]}:{}})));{let a=`saved ${S.join(" \xB7 ")||"judgements/wiring"} as drafts`;(t.commitLine??t.note)(a)}let G=U(t.contextDir);t.onCommitted?.(G);for(let a of R){let m=l.logicalIds[a.anchorRef]??l.minted[a.anchorRef];nt(t.contextDir,l.finalizedTests[a.tempRef]??a.definitionId,{...a.rationale,anchor:m??a.rationale.anchor})}try{let a=Object.values(l.minted).filter(m=>G.getNode(m)?.label==="test");if(a.length>0){let m=vt(wt(t.contextDir)),_=it({graph:G,cids:a,cwd:m});_.wrote.length>0&&t.note(`\u2692 wrote ${_.wrote.map(b=>qt(b.path)).join(" \xB7 ")}`);for(let b of _.refused)t.note(`warning: could not create the test file for ${b.id} \u2014 ${b.reason}`)}}catch(a){t.note(`warning: the design was saved, but its test file could not be created (${a instanceof Error?a.message:String(a)})`)}try{if((r.variables??[]).length>0){let a=vt(wt(t.contextDir)),m=_t(a),{written:_}=yt({file:m,declarations:r.variables,known:t.variablesIndex?.()});if(_.sort(),_.length>0){let b=_.map(I=>({...r.variables.find(k=>k.name===I),file:m}));t.note(`\u2692 declared ${_.length} new variable${_.length===1?"":"s"} \u2014 ${_.join(" \xB7 ")} (values needed)`),t.event?.({type:"variables_declared",file:m,variables:b.map(({name:I,description:k,secret:O})=>({name:I,description:k,secret:O}))}),t.onVariablesDeclared?.(b)}}}catch(a){t.note(`warning: the design was saved, but its variable stubs could not be written (${a instanceof Error?a.message:String(a)})`)}t.event?.({type:"commit",acs:r.acs?.length??0,scenarios:r.scenarios?.length??0,tests:r.tests?.length??0,gaps:r.gaps?.length??0,warnings:l.warnings.length,minted:Object.entries(l.minted).map(([a,m])=>({temp_ref:a,cid:m,...l.logicalIds[a]?{logical_id:l.logicalIds[a]}:{}}))}),e+=1,n!==null&&(n=l.forceScopeRemaining??n,t.onForceScope?.(n));let V=He({verb:"design",commitN:e,ucRef:t.ucRef,phase:q,committed:Object.entries(l.minted).map(([a,m])=>({temp_ref:a,cid:m,...l.logicalIds[a]?{logical_id:l.logicalIds[a]}:{}})),warnings:l.warnings},G),ee=V.event.parity?.missing??[],te=!!r.tests?.length&&ee.length===0;return{proposal:l,error:null,receipt:V,...te?{sessionComplete:te}:{}}}}}function xt(t,e){return{type:"run_config",version:1,session_id:e.session_id,mode:e.mode,source:{source_id:`design:${t.usecase.logical_id??e.ucCid.slice(0,19)}`,source_cid:e.ucCid,kind:"design_context",numbered_text:bt({...t,session_mode:e.mode})},existing_use_cases:[],read_basis:e.readBasis,max_free_text_rounds:2,graph_reads:!0,verb:"design",chat:!0,design_budget:t.budget,topology:e.topology}}var Dt=Symbol("design-out-tee");function Wt(t,e,n,i){return{terminalEventType:"design",async onProposalEvent(o){let r=o??{},v=["acs","scenarios","tests","gaps"].map(N=>r[N]?.length?`${r[N].length} ${N}`:null).filter(Boolean).join(" \xB7 ");return n?.("plan_payload",{payload:r}),t(`plan: finalize_design \u2014 ${v||"wiring/judgements only"} (nothing committed${i?`; full payload: ${Z(i)}`:""})`),e?.({type:"plan",payload:r}),{proposal:r,error:null}}}}async function ii(t,e){let n=U(e.contextDir),i=null,o=null,r=t.useCase;if(t.resume){try{{let p=await Xe(e.contextDir,t.resume,n,{deps:{onWarn:y=>e.out(`note: ${y}`)}});o=p,i=p.handle,p.drift.length>0&&(e.out(`note: sources changed since the pause: ${p.drift.map(y=>y.subject).join(", ")} \u2014 the design continues against the current versions`),e.emit?.({type:"stale_basis",sources:p.drift.map(y=>y.subject)}))}}catch(p){if(p instanceof ke||p instanceof fe)return e.out(`error: ${p.message}`),e.emit?.({type:"error",message:`error: ${p.message}`}),p instanceof fe||p.code==="SESSION_MISSING"||p.code==="SESSION_EXPIRED"?2:1;throw p}let s=i.state,d=ze(s.verb,"design",t.resume);if(d)return e.out(d.message),e.emit?.({type:"error",message:d.message,code:d.code}),i.release(),2;if(r&&s.use_case&&r!==s.use_case){let p=`session ${t.resume} was designing ${s.use_case}; --use-case ${r} RETARGETS it`;if(!(t.confirmRetarget?await t.confirmRetarget(`${p} \u2014 continue with the new target?`):!1))return e.out(`error: ${p} \u2014 resume without --use-case to continue ${s.use_case}, or start a fresh session on ${r}`),e.emit?.({type:"error",code:"RETARGET_MISMATCH",message:p}),i.release(),2}if(r=r??s.use_case,s.uc_tip&&r){let p=n.resolve(r)?.tip;if(p&&p!==s.uc_tip){let y=`the use-case changed since the pause (${s.uc_tip.slice(0,19)}\u2026 \u2192 ${p.slice(0,19)}\u2026)`;if(!(t.confirmRetarget?await t.confirmRetarget(`${y} \u2014 re-ground and continue against the new version?`):!1))return e.out(`error: ${y} \u2014 resume interactively to re-ground, or abandon this session`),e.emit?.({type:"error",code:"UC_TIP_MOVED",message:y}),i.release(),2;e.emit?.({type:"stale_basis",usecase:r})}}let u=rt(n,s.target_pins);if(u.length>0){let p=`items this session pinned have changed since it paused: ${u.map(A=>`${A.ref}${A.now===null?" (now gone)":""}`).join(", ")}`;if(!(t.confirmRetarget?await t.confirmRetarget(`${p} \u2014 re-ground and continue?`):!1))return e.out(`error: ${p} \u2014 resume interactively to re-ground, or abandon`),e.emit?.({type:"error",code:"TARGET_PIN_MOVED",message:p}),i.release(),2;i.save({target_pins:(s.target_pins??[]).map(A=>({ref:A.ref,cid:n.resolve(A.ref)?.tip??A.cid}))})}let c=[...new Set([...i.state.held_receipts??[],...o?.view.kane?.held_receipts??[]])];if(c.length>0)if(e.chat?.holdReceipt)for(let p of c)e.chat.holdReceipt(p);else e={...e,initialMessage:[c.join(`
|
|
355
|
+
`).some(w=>/^##\s/.test(w)&&!/—\s?assert/.test(w)&&xe.test(w)))return!0}return!1}catch{return!1}}function kt(t){let e=0,n=t.forceScope??null;return{terminalEventType:"design",async onProposalEvent(i){let o=a=>t.steer?(t.steer(`[auto-repair] ${a} \u2014 please re-finalize with this fixed.`),{proposal:null,error:null}):{proposal:null,error:a};if(i==null||typeof i!="object")return o("finalize_design payload is not an object");let r=i,v=Object.keys(r).filter(a=>!Lt.has(a));if(v.length>0)return o(`finalize_design carries ungated/unknown section(s): ${v.join(", ")} \u2014 mintable here: acs, scenarios, tests (+gaps)`);let N=new Map;for(let a of r.tests??[]){let m=N.get(a.automates);if(m)return o(`strict 1:1 violated in-payload: ${m} and ${a.temp_ref} both automate ${a.automates}`);if(N.set(a.automates,a.temp_ref),typeof a.app=="string"&&!/^APP/.test(a.app)&&!/[\/]/.test(a.app)&&!/\.(apk|zip|app)$/i.test(a.app))return o(`${a.temp_ref}: app '${a.app}' is neither a build path (.apk / .zip of an .app) nor an APP\u2026 upload id \u2014 omit the field when only a bundle id exists`)}let w=U(t.contextDir),T=/^design@(\d+)$/.exec(t.templateVersion?.()??"");if(T&&Number.parseInt(T[1],10)>=6)for(let a of r.tests??[]){if(!Array.isArray(a.steps??[]))return o(`${a.temp_ref}: steps must be an array of objective strings or {text, verifies} objects`);let m=new Set;for(let k of Array.isArray(a.steps)?a.steps:[])if(typeof k=="object"&&k.verifies)for(let O of k.verifies)m.add(O);let _=new Set(a.verifies??[]),b=[..._].filter(k=>!m.has(k)),I=[...m].filter(k=>!_.has(k));if(!(m.size===0&&Gt(w,a))&&(m.size===0||b.length>0||I.length>0))return o(`${a.temp_ref}: every AC must be claimed by the step that proves it \u2014 `+(m.size===0?"no step carries verifies tags":`not claimed by any step: [${b.join(", ")}]; tagged but not in the test's verifies: [${I.join(", ")}]`))}if(r.variables!==void 0&&!Array.isArray(r.variables))return o("variables must be an array of {name, description, secret}");let $=!!T&&Number.parseInt(T[1],10)>=7;if((r.variables??[]).length>0&&!$)return o("variables[] needs design@7 \u2014 this session is bound to an older template; drop the section");let x=new Set;for(let a of r.variables??[]){if(!a||typeof a!="object"||typeof a.name!="string"||typeof a.description!="string"||typeof a.secret!="boolean")return o(`variables[]: every entry is {name, description, secret} \u2014 got ${JSON.stringify(a)}`);let m=Object.keys(a).filter(b=>!["name","description","secret"].includes(b));if(m.length>0)return o(`variables[]: '${a.name}' carries ${m.join(", ")} \u2014 a declaration has no value and no other fields`);let _=re(a.name);if(_)return o(`variables[]: ${_}`);if(!a.description.trim()||/[\r\n]/.test(a.description))return o(`variables[]: '${a.name}' needs a one-line, non-empty description`);if(x.has(a.name))return o(`variables[]: '${a.name}' is declared twice`);x.add(a.name)}if($){let a=t.variablesIndex?.()??new Map;for(let m of r.tests??[]){let _=[...(Array.isArray(m.steps)?m.steps:[]).map(b=>typeof b=="string"?b:b.text),m.check_prose??""];for(let b of _)for(let I of Ne(b))if(!(a.has(I)||x.has(I)))return o(`${m.temp_ref}: step references {{${I}}} but no variable named '${I}' exists in the pool and this payload does not declare it \u2014 reuse a name from the variables block, or declare it in \`variables\` ({name, description, secret})`)}}t.force&&!t.resuming&&e===0&&n===null&&(n=it(w,t.ucRef));let C=w.resolve(t.ucRef),M=C?String(w.getNode(C.tip)?.content.risk??"med"):"med",R=[],P=new Set([t.ucRef,C?.cid,C?.tip].filter(Boolean)),X=a=>{if(P.has(a))return!0;let m=w.resolve(a);return m!=null&&(P.has(m.cid)||P.has(m.tip))},E;try{E={...r.acs?.length?{acs:r.acs.map(a=>({temp_ref:a.temp_ref,text:a.text,kind:a.kind,risk:a.risk??M,...a.expected_answer?{expected_answer:a.expected_answer}:{},...a.scoped_to&&!X(a.scoped_to)?{scope:{type:"scenario",ref:a.scoped_to}}:{}}))}:{},...r.scenarios?.length?{scenarios:r.scenarios}:{},...r.tests?.length?{tests:r.tests.map(a=>Ft(w,r,a,R))}:{},...r.exercises?.length?{exercises:r.exercises}:{},...r.gaps?.length?{gaps:r.gaps}:{},...r.scoped_to_repoints?.length?{scoped_to_repoints:r.scoped_to_repoints}:{},...r.judgements?.length?{judgements:r.judgements}:{}}}catch(a){return o(a instanceof Error?a.message:String(a))}let q=r.phase??(r.tests?.length?"tests":r.scenarios?.length?"scenarios":r.acs?.length?"acs":"design"),f=(a,m={})=>({contextDir:t.contextDir,graph:a,ucRef:t.ucRef,sections:E,by:t.by,phase:q,...m,...t.templateVersion?{templateVersion:t.templateVersion()}:{},...t.engine?{engine:t.engine}:{},...n?.length?{forceScope:n}:{},...t.because?{reason:t.because}:{},finalizeTestBody:(()=>{let _=new Map((E.tests??[]).map(k=>[k.temp_ref,k])),b=new Map,I=(k,O,H)=>{let L=_.get(k);if(!L?.test_md_blob)return null;let z=b.get(k);if(z!==void 0)return z;if(H.has(k))return L.test_md_blob;H.add(k);let W=new Map;for(let s of L.reuses??[]){I(s,O,H);let d=O(s);d!==null&&d!==s&&W.set(s,d)}let j=L.verifies.map(O).filter(s=>s!==null),J=Ee(L.test_md_blob,W),{md:ne,tagged:D}=Se(J,O),K=D?ne:$e(J,j);return De(K,j),b.set(k,K),K};return(k,O)=>{if(!k.test_md_blob)return null;let H=I(k.temp_ref,O,new Set)??k.test_md_blob;if(H===k.test_md_blob)return null;let L=z=>{for(let W of _.keys())if(O(W)===z){let j=I(W,O,new Set);if(j!==null)return{body:j,cycleKey:`batch:${z}`,next:L}}return ue(w)(z)};return{test_md_blob:H,definitionId:de(me(H,L))}}})()}),l;if(t.protocol){let a=t.generationTicket,m=await Ge(t.protocol,{verb:"design",ucTargets:[{ref:t.ucRef}],newBuCandidates:[],sourcePins:[],readBasis:w.latestHash,...a?{generationTicket:a}:{}},_=>{let b=he(f(_.graph,{eventIds:_.eventIds("design",1),sid:_.sid,...a&&!t.generationStamped?{generationTicket:a}:{}}));return b.errors!==null?{errors:b.errors}:{result:b,record:b.record}});m.ok&&"result"in m?(l=m.result,a&&!t.generationStamped&&(t.generationStamped=!0,t.generationTicket={...a,expected_prev_gen:a.next_gen})):m.ok?l={record:null,errors:null,minted:{},logicalIds:{},superseded:[],warnings:["commit already applied (recommit)"],finalizedTests:{}}:l={record:null,errors:m.kind==="validation"?m.errors:m.kind==="contended"?[{code:m.err.code,detail:`${t.ucRef} is held by ${m.err.holder?.owner_sid??"another session"}${m.err.holder?.alive?" (live)":" (stale)"} \u2014 try another use-case or wait for it to free`}]:m.kind==="drifted"?m.asks.map(b=>({code:"DRIFTED",detail:b.detail})):[{code:"UNSETTLED",detail:`concurrent activity kept moving the store (${m.attempts} attempts) \u2014 retry when the store is quieter`}],minted:{},logicalIds:{},superseded:[],warnings:[],finalizedTests:{}}}else l=he(f(w));if(l.errors)return o("design commit failed: "+l.errors.map(a=>`${a.code}: ${a.detail}`).join("; "));let g=l.warnings.filter(a=>a.includes("\u2014 committed anyway; approve"));for(let a of l.warnings)(!g.includes(a)||g.length===1)&&t.note(`warning: ${a}`);g.length>1&&t.note(`warning: ${g.length} test link(s) refer to items still awaiting approval \u2014 saved anyway; review and approve those items in chat or via kane-cli context review`);let h=(a,m)=>a?`${a} ${m}${a>1?"s":""}`:null,S=[h(r.acs?.length,"AC"),h(r.scenarios?.length,"scenario"),h(r.tests?.length,"test"),h(r.gaps?.length,"gap")].filter(Boolean);t.aliases?.(Object.entries(l.minted).map(([a,m])=>({ref:a,cid:m,...l.logicalIds[a]?{id:l.logicalIds[a]}:{}})));{let a=`saved ${S.join(" \xB7 ")||"judgements/wiring"} as drafts`;(t.commitLine??t.note)(a)}let G=U(t.contextDir);t.onCommitted?.(G);for(let a of R){let m=l.logicalIds[a.anchorRef]??l.minted[a.anchorRef];nt(t.contextDir,l.finalizedTests[a.tempRef]??a.definitionId,{...a.rationale,anchor:m??a.rationale.anchor})}try{let a=Object.values(l.minted).filter(m=>G.getNode(m)?.label==="test");if(a.length>0){let m=vt(wt(t.contextDir)),_=je({graph:G,cids:a,cwd:m});_.wrote.length>0&&t.note(`\u2692 wrote ${_.wrote.map(b=>qt(b.path)).join(" \xB7 ")}`);for(let b of _.refused)t.note(`warning: could not create the test file for ${b.id} \u2014 ${b.reason}`)}}catch(a){t.note(`warning: the design was saved, but its test file could not be created (${a instanceof Error?a.message:String(a)})`)}try{if((r.variables??[]).length>0){let a=vt(wt(t.contextDir)),m=_t(a),{written:_}=yt({file:m,declarations:r.variables,known:t.variablesIndex?.()});if(_.sort(),_.length>0){let b=_.map(I=>({...r.variables.find(k=>k.name===I),file:m}));t.note(`\u2692 declared ${_.length} new variable${_.length===1?"":"s"} \u2014 ${_.join(" \xB7 ")} (values needed)`),t.event?.({type:"variables_declared",file:m,variables:b.map(({name:I,description:k,secret:O})=>({name:I,description:k,secret:O}))}),t.onVariablesDeclared?.(b)}}}catch(a){t.note(`warning: the design was saved, but its variable stubs could not be written (${a instanceof Error?a.message:String(a)})`)}t.event?.({type:"commit",acs:r.acs?.length??0,scenarios:r.scenarios?.length??0,tests:r.tests?.length??0,gaps:r.gaps?.length??0,warnings:l.warnings.length,minted:Object.entries(l.minted).map(([a,m])=>({temp_ref:a,cid:m,...l.logicalIds[a]?{logical_id:l.logicalIds[a]}:{}}))}),e+=1,n!==null&&(n=l.forceScopeRemaining??n,t.onForceScope?.(n));let V=ze({verb:"design",commitN:e,ucRef:t.ucRef,phase:q,committed:Object.entries(l.minted).map(([a,m])=>({temp_ref:a,cid:m,...l.logicalIds[a]?{logical_id:l.logicalIds[a]}:{}})),warnings:l.warnings},G),ee=V.event.parity?.missing??[],te=!!r.tests?.length&&ee.length===0;return{proposal:l,error:null,receipt:V,...te?{sessionComplete:te}:{}}}}}function xt(t,e){return{type:"run_config",version:1,session_id:e.session_id,mode:e.mode,source:{source_id:`design:${t.usecase.logical_id??e.ucCid.slice(0,19)}`,source_cid:e.ucCid,kind:"design_context",numbered_text:bt({...t,session_mode:e.mode})},existing_use_cases:[],read_basis:e.readBasis,max_free_text_rounds:2,graph_reads:!0,verb:"design",chat:!0,design_budget:t.budget,topology:e.topology}}var Dt=Symbol("design-out-tee");function Wt(t,e,n,i){return{terminalEventType:"design",async onProposalEvent(o){let r=o??{},v=["acs","scenarios","tests","gaps"].map(N=>r[N]?.length?`${r[N].length} ${N}`:null).filter(Boolean).join(" \xB7 ");return n?.("plan_payload",{payload:r}),t(`plan: finalize_design \u2014 ${v||"wiring/judgements only"} (nothing committed${i?`; full payload: ${Z(i)}`:""})`),e?.({type:"plan",payload:r}),{proposal:r,error:null}}}}async function ii(t,e){let n=U(e.contextDir),i=null,o=null,r=t.useCase;if(t.resume){try{{let p=await Ze(e.contextDir,t.resume,n,{deps:{onWarn:y=>e.out(`note: ${y}`)}});o=p,i=p.handle,p.drift.length>0&&(e.out(`note: sources changed since the pause: ${p.drift.map(y=>y.subject).join(", ")} \u2014 the design continues against the current versions`),e.emit?.({type:"stale_basis",sources:p.drift.map(y=>y.subject)}))}}catch(p){if(p instanceof ke||p instanceof fe)return e.out(`error: ${p.message}`),e.emit?.({type:"error",message:`error: ${p.message}`}),p instanceof fe||p.code==="SESSION_MISSING"||p.code==="SESSION_EXPIRED"?2:1;throw p}let s=i.state,d=We(s.verb,"design",t.resume);if(d)return e.out(d.message),e.emit?.({type:"error",message:d.message,code:d.code}),i.release(),2;if(r&&s.use_case&&r!==s.use_case){let p=`session ${t.resume} was designing ${s.use_case}; --use-case ${r} RETARGETS it`;if(!(t.confirmRetarget?await t.confirmRetarget(`${p} \u2014 continue with the new target?`):!1))return e.out(`error: ${p} \u2014 resume without --use-case to continue ${s.use_case}, or start a fresh session on ${r}`),e.emit?.({type:"error",code:"RETARGET_MISMATCH",message:p}),i.release(),2}if(r=r??s.use_case,s.uc_tip&&r){let p=n.resolve(r)?.tip;if(p&&p!==s.uc_tip){let y=`the use-case changed since the pause (${s.uc_tip.slice(0,19)}\u2026 \u2192 ${p.slice(0,19)}\u2026)`;if(!(t.confirmRetarget?await t.confirmRetarget(`${y} \u2014 re-ground and continue against the new version?`):!1))return e.out(`error: ${y} \u2014 resume interactively to re-ground, or abandon this session`),e.emit?.({type:"error",code:"UC_TIP_MOVED",message:y}),i.release(),2;e.emit?.({type:"stale_basis",usecase:r})}}let u=rt(n,s.target_pins);if(u.length>0){let p=`items this session pinned have changed since it paused: ${u.map(A=>`${A.ref}${A.now===null?" (now gone)":""}`).join(", ")}`;if(!(t.confirmRetarget?await t.confirmRetarget(`${p} \u2014 re-ground and continue?`):!1))return e.out(`error: ${p} \u2014 resume interactively to re-ground, or abandon`),e.emit?.({type:"error",code:"TARGET_PIN_MOVED",message:p}),i.release(),2;i.save({target_pins:(s.target_pins??[]).map(A=>({ref:A.ref,cid:n.resolve(A.ref)?.tip??A.cid}))})}let c=[...new Set([...i.state.held_receipts??[],...o?.view.kane?.held_receipts??[]])];if(c.length>0)if(e.chat?.holdReceipt)for(let p of c)e.chat.holdReceipt(p);else e={...e,initialMessage:[c.join(`
|
|
356
356
|
|
|
357
357
|
`),e.initialMessage].filter(Boolean).join(`
|
|
358
358
|
|
|
359
|
-
`)};if(!r)return e.out(`error: session ${t.resume} predates use-case persistence \u2014 re-supply --use-case <ref>`),e.emit?.({type:"error",message:`error: session ${t.resume} predates use-case persistence \u2014 re-supply --use-case <ref>`}),i.release(),2}let v=t.resume?void 0:t.phase,N=!1;if(v!==void 0){let{checkPhaseEntry:s,phaseEntryCmd:d,phaseLadderFor:u}=await import("./phase-seed-
|
|
360
|
-
`)}catch{}g?.wireTrace(s,d,u)};{let s=e.out;if(s[Dt]!==!0){let d=u=>{S("transcript",{line:u}),s(u)};d[Dt]=!0,e.out=d}}if(t.resume&&i){o||(f.resume={agent_state:i.state.agent_state}),e.out(`resuming design session ${t.resume}`),i.state.assumed.length>0&&e.out(`note: ${i.state.assumed.length} default(s) were assumed while you were away \u2014 kane-cli context sessions show ${t.resume} lists them`);try{let{readRecords:s}=await import("./records-
|
|
359
|
+
`)};if(!r)return e.out(`error: session ${t.resume} predates use-case persistence \u2014 re-supply --use-case <ref>`),e.emit?.({type:"error",message:`error: session ${t.resume} predates use-case persistence \u2014 re-supply --use-case <ref>`}),i.release(),2}let v=t.resume?void 0:t.phase,N=!1;if(v!==void 0){let{checkPhaseEntry:s,phaseEntryCmd:d,phaseLadderFor:u}=await import("./phase-seed-HKJ2EF7R.js");N=u(e.contextDir,n,r).length>0;let c=s(e.contextDir,n,r,v);if(!c.ok&&c.code==="UNKNOWN_PHASE")return e.out(`error: ${c.message}`),e.emit?.({type:"error",code:"UNKNOWN_PHASE",message:c.message}),i?.release(),2;if(!c.ok&&c.code==="PHASE_ORDER"){let p=t.askPhaseEntry?await t.askPhaseEntry({message:c.message,earliest:c.earliest}):"cancel";if(p==="earliest")e.out(`starting at ${c.earliest} instead (${c.missing.join(", ")} not committed yet)`),v=c.earliest;else if(p==="proceed")e.out(`note: entering at ${v} with ${c.missing.join(", ")} uncommitted \u2014 proceeding on your say-so`),e.emit?.({type:"phase_entry_override",phase:v,missing:c.missing});else{let y=(t.mode??"interactive")==="agent",A=d(r,c.earliest,y);return e.out(`error: ${c.message}`),e.emit?.({type:"error",code:"PHASE_ORDER",message:c.message,next:[{cmd:A,why:`${c.earliest} is the earliest uncommitted phase for ${r}`,title:`Start at ${c.earliest}`}]}),i?.release(),2}}}let w=!!(t.force||i?.state.force),T=!!(t.resume&&i),$=st(n,r,w||T||N);if(!$.ok){let s=(t.mode??"interactive")==="interactive";if($.wall&&s&&t.askDesignEntry){let{captureForceScope:d}=await import("./design-committer-J57IAAA5.js"),u=d(n,r).length,c=await t.askDesignEntry({wall:$.wall.kind,message:$.message,display:$.wall.display,impactPairs:u});if(c.pick==="redesign"||c.pick==="proceed"){if(!c.because.trim())return e.out("a redesign needs a reason (--because) \u2014 nothing executed"),i?.release(),2;e.out(c.pick==="redesign"?`redesigning ${$.wall.display} (${u} pair(s) superseded) \u2014 because: ${c.because.trim()}`:`proceeding against the stale design (noted) \u2014 because: ${c.because.trim()}`),t={...t,force:!0,because:t.because??c.because.trim()},w=!0}else return c.pick==="view"?(e.out(`view the existing design: kane-cli context view ${$.wall.display}`),i?.release(),0):c.pick==="refresh"?(e.out(`refresh it first: kane-cli maintain evolve ${$.wall.display}`),i?.release(),0):(e.out("nothing executed \u2014 list use-cases: kane-cli context list"),i?.release(),0)}else{e.out(`design: ${$.message}`);let d=$.wall&&t.mode==="agent"?[{cmd:`kane-cli context view ${$.wall.display}`,why:"view the existing design",title:"View the design"},...$.wall.kind==="designed-stale"?[{cmd:`kane-cli maintain evolve ${$.wall.display}`,why:"the use-case moved since the design \u2014 evolve refreshes it",title:"Evolve the design"}]:[],{cmd:`kane-cli design tests --use-case ${$.wall.display} --force --mode agent`,why:"redesign \u2014 supersedes the live scenario+test pairs",title:"Redesign"}]:void 0;return e.emit?.({type:"gate_refused",message:$.message,...d?{next:d}:{}}),i?.release(),$.code}}if(e.preflightTurn){let s=await e.preflightTurn();if(!s.ok)return e.out(s.message??"error: turn-endpoint preflight failed"),e.emit?.({type:"error",message:s.message??"error: turn-endpoint preflight failed",code:"PREFLIGHT"}),i?.release(),2}let x={contextDir:e.contextDir,resolveAlias:s=>Ve(s,{env:process.env,auth:e.auth}),embed:(s,d)=>Ue(s,d,{env:process.env,auth:e.auth})};e.chat?.setWorking?.("assembling context\u2026");let C=Pe(Oe(ae(e.contextDir))),M=[],R=await ht(e.contextDir,r,{max:t.max,strength:t.strength,embedSearch:x,variablesIndex:C});if(t.priorDesign!==void 0&&(R.prior_design=t.priorDesign),t.changeDelta!==void 0&&(R.change_delta=t.changeDelta),t.because&&(R.because=t.because),v!==void 0){let{buildPhaseSeed:s}=await import("./phase-seed-HKJ2EF7R.js"),d=s(e.contextDir,n,r,v);R.prior_design===void 0&&d.priorDesign!==void 0&&(R.prior_design=d.priorDesign),R.entry_phase=v,d.phaseLadder.length>0&&(R.phase_ladder=d.phaseLadder)}let P=e.now?.()??new Date,X=`${P.toISOString().replace(/[-:]/g,"").slice(0,15)}-${Ht(2).toString("hex")}`,E=t.mode??"interactive",q=E==="interactive"&&!!e.chat&&!e.nested,f=o?{...o.spawnConfig,mode:E}:xt(R,{session_id:t.resume??`design-${X}`,mode:E,ucCid:R.usecase.cid,readBasis:n.latestHash,topology:Je("design")}),l={current:null};if(f.resume&&"schema"in f.resume){let s=f.resume.binding?.template_version;typeof s=="string"&&(l.current=s)}t.plan?f.chat=!1:f.chat=!0;let g=e.telemetry?.enabled?e.telemetry:void 0,h=g?we(g.ids.context_instance_id??null,"design",g.ids.session_id):ve(e.contextDir,"logs",`design-${X}.log`);Vt(ae(h),{recursive:!0}),q||e.out(`trace: ${Z(h)}`),e.emit?.({type:"run_start",mode:E,trace:h,use_case:r,...g?{session:g.ids.session_id}:{}});let S=(s,d,u)=>{try{Ut(h,JSON.stringify({ts:new Date().toISOString(),level:s==="error"?"error":"info",run_id:g?.ids.operation_id,...g?{user_session_id:g.ids.session_id}:{},kind:s,session_id:u,data:d})+`
|
|
360
|
+
`)}catch{}g?.wireTrace(s,d,u)};{let s=e.out;if(s[Dt]!==!0){let d=u=>{S("transcript",{line:u}),s(u)};d[Dt]=!0,e.out=d}}if(t.resume&&i){o||(f.resume={agent_state:i.state.agent_state}),e.out(`resuming design session ${t.resume}`),i.state.assumed.length>0&&e.out(`note: ${i.state.assumed.length} default(s) were assumed while you were away \u2014 kane-cli context sessions show ${t.resume} lists them`);try{let{readRecords:s}=await import("./records-TJJJWBUD.js"),d=s(e.contextDir).records.filter(u=>u.sid===t.resume).map(u=>u.design_phase).filter(u=>u!=null&&typeof u.phase=="string");if(d.length>0){let u=d.map(p=>`${p.phase}${p.completeness==="partial"?" (partial)":""}`).join(" \u2192 "),c=`[kane] durable record for this session (${t.resume}) on ${r}: design phases already COMMITTED \u2014 ${u}. Those finalizes landed; do not re-send them. Continue from the next uncommitted phase, or finish if the design is complete.`;e={...e,initialMessage:[e.initialMessage,c].filter(Boolean).join(`
|
|
361
361
|
|
|
362
362
|
`)}}}catch{}t.message&&(e={...e,initialMessage:[e.initialMessage,t.message].filter(Boolean).join(`
|
|
363
363
|
|
|
364
|
-
`)})}let G=null,V={current:n},ee={detach:null},te=()=>{let s=ee.detach;ee.detach=null,s&&s()},a=(s,d)=>{let u=i;if(!u)return{};let c=s.ask,p=Ke({contextDir:s.contextDir,cwd:ae(s.contextDir),handle:u,note:y=>s.chat?s.chat.note(y):s.out(y),graphSlot:d,...s.now?{now:s.now}:{}});if(s.chat?.attachIngest){let y=s.chat;ee.detach=y.attachIngest(async A=>{try{u.save({ingest_registry:ge(u.state.ingest_registry,A,s.now?.()??new Date)});let B=await p({id:`attach-${u.state.sid}-${(u.state.ingest_registry??[]).length}`,ref:A,purpose:null});return B.ok?(y.deferBatch({source_id:B.result.source_id,cid:B.result.cid}),{ok:!0}):{ok:!1,error:B.error.message}}catch(B){return{ok:!1,error:B instanceof Error?B.message:String(B)}}})}return{ask:async y=>{let A=await c(y);if(Array.isArray(A)){let B=A.filter(F=>{if(F.free_text==null||F.free_text.trim()==="")return!1;let oe=y.find($t=>$t.id===F.id);return F.selected_index!=null&&oe?.options[F.selected_index]?.input===!0}).map(F=>F.free_text.trim());if(B.length>0){let F=u.state.ingest_registry;for(let oe of B)F=ge(F,oe,s.now?.()??new Date);u.save({ingest_registry:F})}}return A},ingest:p}};e.nested||e.chat?.attachOnCommitted?.(s=>{V.current=s});let m="";if(e.chat&&!t.plan&&!e.nested){let s=Ue({contextDir:e.contextDir,graph:U(e.contextDir),sessionStamp:f.session_id,by:e.by??{kind:"human",id:"owner"}});s.errors===null||s.errors[0]?.code==="CONV_SOURCE_EXISTS"?(m=s.sourceId,e.chat.attachConversationSource?.(m),V.current=U(e.contextDir)):e.out(`warning: notes you add in chat can't be saved to the context this session (${s.errors[0]?.detail})`)}let _=U(e.contextDir),b;if(!t.plan){let s=Me(_,r);if(T&&s!==null&&s.live){let d=_.resolve(r);b={uc_root:Le(_,d.cid),next_gen:s.gen,expected_prev_gen:s.gen}}else{let d=Be(_,r,{...w?{force:!0}:{},because:t.because??(w?"forced redesign (--force)":void 0)});if("error"in d)return e.out(`design: ${d.error.detail}`),e.emit?.({type:"gate_refused",message:d.error.detail,code:d.error.code}),i?.release(),2;b=d}}let I=Ae(e.contextDir,f.session_id),k=null,O=()=>{try{k?.release()}catch{}};if(!t.plan)try{k=I.acquire([Te(_,r).key],{hold:"session",verb:"design"})}catch(s){if(s instanceof Ce&&s.code==="UC_HELD"){let d=s.holder,u=`design: ${r} is being designed by another session${d?.alive===!1?` \u2014 that session looks stopped; resume it with kane-cli design tests --resume ${d?.owner_sid??"<session>"}`:""} \u2014 pick another use-case (kane-cli design tests) or wait for it to finish`;return e.out(u),e.emit?.({type:"error",code:"UC_HELD",message:u}),i?.release(),2}throw s}let H={contextDir:e.contextDir,rootSid:f.session_id,locks:I,probe:{batchSimilar:async()=>({hits:[],degraded:!1,probeBasis:null}),recheckLocal:()=>({hits:[],uncachedNewNodes:[]})}},L=!t.plan&&E!=="ci",z=()=>Object.fromEntries((n.resolve(r)?n.edgesInto(n.resolve(r).tip):[]).filter(s=>s.type==="DERIVES"&&typeof s.props.source_id=="string").map(s=>[String(s.props.source_id),n.heads.get(String(s.props.source_id))??null])),W=!1;L&&!i&&(W=!0,i=le(e.contextDir,{sid:f.session_id,mode:"agent",created_at:P.toISOString(),expires_at:new Date(P.getTime()+1440*60*1e3).toISOString(),agent_state:{schema:2,items:[],provider_state:""},pending:{questions:[],proposals:[]},read_basis:z(),assumed:[],corpus_cursor:{remaining:[]},conv_source:m,target_pins:n.resolve(r)?[{ref:r,cid:n.resolve(r).tip}]:[],verb:"design",use_case:r,...n.resolve(r)?.tip?{uc_tip:n.resolve(r).tip}:{},...w?{force:!0}:{},...g?{user_session_id:g.ids.session_id}:{}}));let j;if(L&&i){let{resume:s,...d}=f;qe(e.contextDir,f.session_id,{schema:je,kind:"base",sid:f.session_id,verb:"design",mode:E,created_at:P.toISOString(),run_config:d,conv_source:m||i.state.conv_source||"",...r?{use_case:r}:{},...n.resolve(r)?.tip?{uc_tip:n.resolve(r).tip}:{},store_watermark:Ie(e.contextDir)}),f.checkpoints=!0,t.resume&&S("resume_kind",{kind:o?o.view.pointer===null?"bare-base":o.view.pointer.at==="final"?"pause":"crash":"v1-shim"},f.session_id);let u=o?0:i.state.checkpoint?.seq??0,c=i;j=Ye({contextDir:e.contextDir,handle:c,seqBase:()=>u,peekHeldReceipts:()=>e.chat?.peekHeldReceipts?.()??[],readBasis:()=>z(),corpusCursor:()=>({remaining:[]}),onSoftCap:y=>e.out(y),onStat:y=>S("ckpt_stat",y,f.session_id),...e.now?{now:e.now}:{}});let p=j;j={...p,persist:y=>{let A=y.binding?.template_version;return typeof A=="string"&&A&&(l.current=A),p.persist(y)}}}!L&&!t.plan&&(f.checkpoints=!0,j={persist:s=>{let d=s.binding?.template_version;return typeof d=="string"&&d&&(l.current=d),{seq:s.seq,turn_id:s.turn_id,at:s.at,ts:new Date().toISOString(),full_seq:null}}});let J=()=>{if(!i)return;let s=i.state.checkpoint;if(s){let d=E!=="interactive"?` --mode ${E}`:"";e.out(`session ${i.state.sid} kept its last checkpoint (seq ${s.seq}, ${s.ts}) \u2014 resume with: kane-cli design tests --resume ${i.state.sid}${d}`),i.release()}else if(W){try{i.complete()}catch{i.release()}try{St(ve(e.contextDir,"sessions"))}catch{}}else i.release();i=null},ne=t.plan?Wt(e.out,e.emit,S,h):kt({templateVersion:()=>l.current,contextDir:e.contextDir,ucRef:r,by:{kind:"ai",id:"design-agent"},force:w,engine:"design@1",note:s=>e.chat?e.chat.note(s):e.out(s),commitLine:s=>e.chat?e.chat.ledger({kind:"commit",ok:!0,line:s}):e.out(s),steer:e.chat?s=>e.chat.submit(s):void 0,event:e.emit,variablesIndex:()=>C,onVariablesDeclared:s=>{M.push(...s);for(let d of s)C.set(d.name,{has_value:!1,source:d.file})},resuming:T,...i?.state.force_scope?.length?{forceScope:i.state.force_scope}:{},onForceScope:s=>{G=s},...t.because?{because:t.because}:{},aliases:e.chat?s=>e.chat.registerAliases?.(s):void 0,onCommitted:s=>{V.current=s},protocol:H,...b?{generationTicket:b}:{},...T?{generationStamped:!0}:{}});e.chat||(S("design_budget",{max_pairs:R.budget.max_pairs??null,strength:R.budget.strength_override??null}),e.out(`designing: ${R.usecase.logical_id??r}`)),e.chat?.setWorking?.(`designing ${R.usecase.logical_id??r}\u2026`);let D;try{D=await pe(f,{...e,graphSlot:V,...a(e,V),...j?{checkpoint:j}:{}},new Map,n,S,ne)}catch(s){throw S("error",{message:s instanceof Error?s.message:String(s),stack:s instanceof Error?s.stack:void 0},f.session_id),J(),s}finally{e.chat?.setWorking?.(null),te()}if(D.errorCode==="binding_mismatch"&&o){let s=await e.ask([{id:"binding-mismatch",text:"this session's saved conversation is no longer accepted by the service \u2014 start the conversation fresh (committed work is kept), or stop and keep the session?",risk:"high",rationale:"the service refused the saved conversation on the first turn after resume",options:[{label:"start fresh",detail:"continue with a fresh conversation \u2014 earlier answers may be re-asked"},{label:"stop",detail:"stop here; the session stays resumable"}],recommended_index:1,allow_free_text:!1}]);if((Array.isArray(s)?s.find(c=>c.id==="binding-mismatch"):void 0)?.selected_index!==0){let c=`resume abandoned: binding mismatch on session ${f.session_id} \u2014 the session is preserved`;return e.out(c),e.emit?.({type:"error",message:c,code:"BINDING_MISMATCH"}),i?.release(),2}S("binding_migrate",{sid:f.session_id},f.session_id);let u=f.resume&&"schema"in f.resume?{...f.resume,binding:{}}:void 0;try{D=await pe({...f,...u?{resume:u}:{}},{...e,graphSlot:V,...a(e,V),...j?{checkpoint:j}:{}},new Map,n,S,ne)}catch(c){throw S("error",{message:c instanceof Error?c.message:String(c),stack:c instanceof Error?c.stack:void 0},f.session_id),J(),c}finally{e.chat?.setWorking?.(null),te()}}if(D.highRisk)return e.out(`error: ${D.highRisk.length} high-risk decision${D.highRisk.length===1?"":"s"} need a human \u2014 ci mode won't guess. Re-run with --mode agent to pause for review.`),e.emit?.({type:"error",message:`error: high-risk question(s) in ci mode (fail-closed): ${D.highRisk.map(s=>s.id).join(", ")}`,code:"HIGH_RISK_CI"}),J(),O(),1;if(D.paused){let s=i;s||(s=le(e.contextDir,{sid:f.session_id,mode:"agent",created_at:P.toISOString(),expires_at:new Date(P.getTime()+1440*60*1e3).toISOString(),agent_state:D.paused.agent_state,pending:{questions:[],proposals:[]},read_basis:Object.fromEntries((n.resolve(r)?n.edgesInto(n.resolve(r).tip):[]).filter(c=>c.type==="DERIVES"&&typeof c.props.source_id=="string").map(c=>[String(c.props.source_id),n.heads.get(String(c.props.source_id))??null])),assumed:[],corpus_cursor:{remaining:[]},conv_source:m,target_pins:n.resolve(r)?[{ref:r,cid:n.resolve(r).tip}]:[],verb:"design",use_case:r,...n.resolve(r)?.tip?{uc_tip:n.resolve(r).tip}:{},...w?{force:!0}:{},...g?{user_session_id:g.ids.session_id}:{}}));try{w&&!s.state.force&&s.save({force:!0}),g&&s.state.user_session_id!==g.ids.session_id&&s.save({user_session_id:g.ids.session_id}),m&&s.state.conv_source!==m&&s.save({conv_source:m});let c=e.chat?.drainHeldReceipts?.()??[];(c.length>0||(s.state.held_receipts?.length??0)>0)&&s.save({held_receipts:c}),G!==null&&s.save({force_scope:G}),Je(s,D.paused)}catch(c){let p=s.state.checkpoint,y=`error: couldn't persist the pause for session ${s.state.sid}`+(p?` \u2014 last durable checkpoint: seq ${p.seq} @ ${p.ts}`:" \u2014 no durable checkpoint exists")+` (${c instanceof Error?c.message:String(c)})`;return e.out(y),e.emit?.({type:"error",message:y,code:"PAUSE_PERSIST_FAILED",sid:s.state.sid}),1}S("session_paused",{sid:s.state.sid},f.session_id);let d=E!=="interactive"?` --mode ${E}`:"",u=`kane-cli design tests --resume ${s.state.sid}${d}`;if(q||e.out(`paused \u2014 resume with: ${u}`),e.emit?.({type:"session_paused",sid:s.state.sid,mode:E,resume:u,expires_at:s.state.expires_at,pending_questions:D.paused.pending.questions}),q){let c=e.chat?.state.credits?.total;e.onSummary?.({state:"paused",reason:"ctrl+c",facts:[`session ${s.state.sid} saved \u2014 designing ${R.usecase.logical_id??r}`,...s.state.expires_at?[`expires: ${s.state.expires_at}`]:[],...c!==void 0?[`credits used: ${c.toFixed(1)}`]:[]],resume:u,resumeMessage:`${u} --message "<your words>"`,tracePath:Z(h)})}return O(),3}if(D.crashed&&i?.state.checkpoint){let s=i.state.checkpoint,d=E!=="interactive"?` --mode ${E}`:"",u=`kane-cli design tests --resume ${i.state.sid}${d}`;if(S("agent_crashed_resumable",{sid:i.state.sid,seq:s.seq},f.session_id),q||e.out(`agent crashed \u2014 session ${i.state.sid} is resumable at checkpoint seq ${s.seq} (at most the in-flight turn lost); resume with: ${u}`),e.emit?.({type:"session_paused",sid:i.state.sid,mode:E,resume:u,expires_at:i.state.expires_at,crashed:!0}),q){let c=e.chat?.state.credits?.total;e.onSummary?.({state:"crashed",facts:[`agent crashed \u2014 session ${i.state.sid} is resumable at checkpoint seq ${s.seq}`,"at most the in-flight turn was lost",...c!==void 0?[`credits used: ${c.toFixed(1)}`]:[]],resume:u,resumeMessage:`${u} --message "<your words>"`,tracePath:Z(h)})}return i.release(),i=null,3}if(D.error)return e.out(`error: design agent failed: ${D.error}`),e.emit?.({type:"error",message:`error: design agent failed: ${D.error}`}),J(),O(),1;if(D.proposal==null&&E!=="interactive")return e.out(`error: the design session stopped before saving anything \u2014 nothing committed (trace: ${h})`),e.emit?.({type:"error",message:`error: the design session stopped before saving anything \u2014 nothing committed (trace: ${h})`}),J(),O(),1;let K=0;if(D.proposal==null)try{let{readRecords:s}=await import("./records-JLS63SDI.js"),d=t.resume??f.session_id;K=s(e.contextDir).records.filter(u=>u.sid===d).reduce((u,c)=>u+c.nodes.filter(p=>p.label!=="source").length,0)}catch{}if(D.proposal==null&&e.out(K>0?`done \u2014 ${K} item(s) committed in this session (earlier legs included); nothing new since the resume`:"done \u2014 nothing designed this session (no finalize before the session ended)"),D.assumedDefaults&&e.out(`assumed: ${D.assumedDefaults} default(s) taken while unattended`),i&&e.emit?.({type:"session_complete",sid:t.resume??f.session_id}),g?.event("ASR_SESSION_COMPLETE",{}),i?.complete(),W)try{St(ve(e.contextDir,"sessions"))}catch{}if(M.length>0){let s=Kt(M,ae(e.contextDir));e.chat?e.chat.note(s):e.out(s),e.emit?.({type:"variables_summary",file:M[0].file,variables:M.map(({name:d,description:u,secret:c})=>({name:d,description:u,secret:c}))})}if(q){let s=e.chat.state.ledger.filter(c=>c.kind==="answer"&&c.receipt.form==="assumed").length??0,d=(D.assumedDefaults??0)+s,u=e.chat.state.credits?.total??D.creditsTotal;e.onSummary?.({state:"complete",facts:[`designed: ${R.usecase.logical_id??r}${D.proposal==null?K>0?` (${K} item(s) committed across this session)`:" (nothing committed this session)":""}`,...M.length>0?[`${M.length} variable(s) need values \u2014 see .testmuai/variables/assurance.json`]:[],...d>0?[`${d} assumed default(s)`]:[],...u!==void 0?[`credits used: ${u.toFixed(1)}`]:[]],tracePath:Z(h)})}return t.plan||Ze(e.contextDir),O(),0}function Kt(t,e){if(t.length===0)return"";let n=zt(e,t[0].file)||t[0].file,i=Math.max(...t.map(r=>r.name.length))+3,o=t.slice().sort((r,v)=>r.name<v.name?-1:1).map(r=>` ${r.name.padEnd(i)}${r.description}${r.secret?" (secret)":""}`);return`variables declared this session \u2014 fill their values before running:
|
|
364
|
+
`)})}let G=null,V={current:n},ee={detach:null},te=()=>{let s=ee.detach;ee.detach=null,s&&s()},a=(s,d)=>{let u=i;if(!u)return{};let c=s.ask,p=Qe({contextDir:s.contextDir,cwd:ae(s.contextDir),handle:u,note:y=>s.chat?s.chat.note(y):s.out(y),graphSlot:d,...s.now?{now:s.now}:{}});if(s.chat?.attachIngest){let y=s.chat;ee.detach=y.attachIngest(async A=>{try{u.save({ingest_registry:ge(u.state.ingest_registry,A,s.now?.()??new Date)});let B=await p({id:`attach-${u.state.sid}-${(u.state.ingest_registry??[]).length}`,ref:A,purpose:null});return B.ok?(y.deferBatch({source_id:B.result.source_id,cid:B.result.cid}),{ok:!0}):{ok:!1,error:B.error.message}}catch(B){return{ok:!1,error:B instanceof Error?B.message:String(B)}}})}return{ask:async y=>{let A=await c(y);if(Array.isArray(A)){let B=A.filter(F=>{if(F.free_text==null||F.free_text.trim()==="")return!1;let oe=y.find($t=>$t.id===F.id);return F.selected_index!=null&&oe?.options[F.selected_index]?.input===!0}).map(F=>F.free_text.trim());if(B.length>0){let F=u.state.ingest_registry;for(let oe of B)F=ge(F,oe,s.now?.()??new Date);u.save({ingest_registry:F})}}return A},ingest:p}};e.nested||e.chat?.attachOnCommitted?.(s=>{V.current=s});let m="";if(e.chat&&!t.plan&&!e.nested){let s=He({contextDir:e.contextDir,graph:U(e.contextDir),sessionStamp:f.session_id,by:e.by??{kind:"human",id:"owner"}});s.errors===null||s.errors[0]?.code==="CONV_SOURCE_EXISTS"?(m=s.sourceId,e.chat.attachConversationSource?.(m),V.current=U(e.contextDir)):e.out(`warning: notes you add in chat can't be saved to the context this session (${s.errors[0]?.detail})`)}let _=U(e.contextDir),b;if(!t.plan){let s=Be(_,r);if(T&&s!==null&&s.live){let d=_.resolve(r);b={uc_root:Me(_,d.cid),next_gen:s.gen,expected_prev_gen:s.gen}}else{let d=Fe(_,r,{...w?{force:!0}:{},because:t.because??(w?"forced redesign (--force)":void 0)});if("error"in d)return e.out(`design: ${d.error.detail}`),e.emit?.({type:"gate_refused",message:d.error.detail,code:d.error.code}),i?.release(),2;b=d}}let I=Ae(e.contextDir,f.session_id),k=null,O=()=>{try{k?.release()}catch{}};if(!t.plan)try{k=I.acquire([Te(_,r).key],{hold:"session",verb:"design"})}catch(s){if(s instanceof Ce&&s.code==="UC_HELD"){let d=s.holder,u=`design: ${r} is being designed by another session${d?.alive===!1?` \u2014 that session looks stopped; resume it with kane-cli design tests --resume ${d?.owner_sid??"<session>"}`:""} \u2014 pick another use-case (kane-cli design tests) or wait for it to finish`;return e.out(u),e.emit?.({type:"error",code:"UC_HELD",message:u}),i?.release(),2}throw s}let H={contextDir:e.contextDir,rootSid:f.session_id,locks:I,probe:{batchSimilar:async()=>({hits:[],degraded:!1,probeBasis:null}),recheckLocal:()=>({hits:[],uncachedNewNodes:[]})}},L=!t.plan&&E!=="ci",z=()=>Object.fromEntries((n.resolve(r)?n.edgesInto(n.resolve(r).tip):[]).filter(s=>s.type==="DERIVES"&&typeof s.props.source_id=="string").map(s=>[String(s.props.source_id),n.heads.get(String(s.props.source_id))??null])),W=!1;L&&!i&&(W=!0,i=le(e.contextDir,{sid:f.session_id,mode:"agent",created_at:P.toISOString(),expires_at:new Date(P.getTime()+1440*60*1e3).toISOString(),agent_state:{schema:2,items:[],provider_state:""},pending:{questions:[],proposals:[]},read_basis:z(),assumed:[],corpus_cursor:{remaining:[]},conv_source:m,target_pins:n.resolve(r)?[{ref:r,cid:n.resolve(r).tip}]:[],verb:"design",use_case:r,...n.resolve(r)?.tip?{uc_tip:n.resolve(r).tip}:{},...w?{force:!0}:{},...g?{user_session_id:g.ids.session_id}:{}}));let j;if(L&&i){let{resume:s,...d}=f;Le(e.contextDir,f.session_id,{schema:qe,kind:"base",sid:f.session_id,verb:"design",mode:E,created_at:P.toISOString(),run_config:d,conv_source:m||i.state.conv_source||"",...r?{use_case:r}:{},...n.resolve(r)?.tip?{uc_tip:n.resolve(r).tip}:{},store_watermark:Ie(e.contextDir)}),f.checkpoints=!0,t.resume&&S("resume_kind",{kind:o?o.view.pointer===null?"bare-base":o.view.pointer.at==="final"?"pause":"crash":"v1-shim"},f.session_id);let u=o?0:i.state.checkpoint?.seq??0,c=i;j=Xe({contextDir:e.contextDir,handle:c,seqBase:()=>u,peekHeldReceipts:()=>e.chat?.peekHeldReceipts?.()??[],readBasis:()=>z(),corpusCursor:()=>({remaining:[]}),onSoftCap:y=>e.out(y),onStat:y=>S("ckpt_stat",y,f.session_id),...e.now?{now:e.now}:{}});let p=j;j={...p,persist:y=>{let A=y.binding?.template_version;return typeof A=="string"&&A&&(l.current=A),p.persist(y)}}}!L&&!t.plan&&(f.checkpoints=!0,j={persist:s=>{let d=s.binding?.template_version;return typeof d=="string"&&d&&(l.current=d),{seq:s.seq,turn_id:s.turn_id,at:s.at,ts:new Date().toISOString(),full_seq:null}}});let J=()=>{if(!i)return;let s=i.state.checkpoint;if(s){let d=E!=="interactive"?` --mode ${E}`:"";e.out(`session ${i.state.sid} kept its last checkpoint (seq ${s.seq}, ${s.ts}) \u2014 resume with: kane-cli design tests --resume ${i.state.sid}${d}`),i.release()}else if(W){try{i.complete()}catch{i.release()}try{St(ve(e.contextDir,"sessions"))}catch{}}else i.release();i=null},ne=t.plan?Wt(e.out,e.emit,S,h):kt({templateVersion:()=>l.current,contextDir:e.contextDir,ucRef:r,by:{kind:"ai",id:"design-agent"},force:w,engine:"design@1",note:s=>e.chat?e.chat.note(s):e.out(s),commitLine:s=>e.chat?e.chat.ledger({kind:"commit",ok:!0,line:s}):e.out(s),steer:e.chat?s=>e.chat.submit(s):void 0,event:e.emit,variablesIndex:()=>C,onVariablesDeclared:s=>{M.push(...s);for(let d of s)C.set(d.name,{has_value:!1,source:d.file})},resuming:T,...i?.state.force_scope?.length?{forceScope:i.state.force_scope}:{},onForceScope:s=>{G=s},...t.because?{because:t.because}:{},aliases:e.chat?s=>e.chat.registerAliases?.(s):void 0,onCommitted:s=>{V.current=s},protocol:H,...b?{generationTicket:b}:{},...T?{generationStamped:!0}:{}});e.chat||(S("design_budget",{max_pairs:R.budget.max_pairs??null,strength:R.budget.strength_override??null}),e.out(`designing: ${R.usecase.logical_id??r}`)),e.chat?.setWorking?.(`designing ${R.usecase.logical_id??r}\u2026`);let D;try{D=await pe(f,{...e,graphSlot:V,...a(e,V),...j?{checkpoint:j}:{}},new Map,n,S,ne)}catch(s){throw S("error",{message:s instanceof Error?s.message:String(s),stack:s instanceof Error?s.stack:void 0},f.session_id),J(),s}finally{e.chat?.setWorking?.(null),te()}if(D.errorCode==="binding_mismatch"&&o){let s=await e.ask([{id:"binding-mismatch",text:"this session's saved conversation is no longer accepted by the service \u2014 start the conversation fresh (committed work is kept), or stop and keep the session?",risk:"high",rationale:"the service refused the saved conversation on the first turn after resume",options:[{label:"start fresh",detail:"continue with a fresh conversation \u2014 earlier answers may be re-asked"},{label:"stop",detail:"stop here; the session stays resumable"}],recommended_index:1,allow_free_text:!1}]);if((Array.isArray(s)?s.find(c=>c.id==="binding-mismatch"):void 0)?.selected_index!==0){let c=`resume abandoned: binding mismatch on session ${f.session_id} \u2014 the session is preserved`;return e.out(c),e.emit?.({type:"error",message:c,code:"BINDING_MISMATCH"}),i?.release(),2}S("binding_migrate",{sid:f.session_id},f.session_id);let u=f.resume&&"schema"in f.resume?{...f.resume,binding:{}}:void 0;try{D=await pe({...f,...u?{resume:u}:{}},{...e,graphSlot:V,...a(e,V),...j?{checkpoint:j}:{}},new Map,n,S,ne)}catch(c){throw S("error",{message:c instanceof Error?c.message:String(c),stack:c instanceof Error?c.stack:void 0},f.session_id),J(),c}finally{e.chat?.setWorking?.(null),te()}}if(D.highRisk)return e.out(`error: ${D.highRisk.length} high-risk decision${D.highRisk.length===1?"":"s"} need a human \u2014 ci mode won't guess. Re-run with --mode agent to pause for review.`),e.emit?.({type:"error",message:`error: high-risk question(s) in ci mode (fail-closed): ${D.highRisk.map(s=>s.id).join(", ")}`,code:"HIGH_RISK_CI"}),J(),O(),1;if(D.paused){let s=i;s||(s=le(e.contextDir,{sid:f.session_id,mode:"agent",created_at:P.toISOString(),expires_at:new Date(P.getTime()+1440*60*1e3).toISOString(),agent_state:D.paused.agent_state,pending:{questions:[],proposals:[]},read_basis:Object.fromEntries((n.resolve(r)?n.edgesInto(n.resolve(r).tip):[]).filter(c=>c.type==="DERIVES"&&typeof c.props.source_id=="string").map(c=>[String(c.props.source_id),n.heads.get(String(c.props.source_id))??null])),assumed:[],corpus_cursor:{remaining:[]},conv_source:m,target_pins:n.resolve(r)?[{ref:r,cid:n.resolve(r).tip}]:[],verb:"design",use_case:r,...n.resolve(r)?.tip?{uc_tip:n.resolve(r).tip}:{},...w?{force:!0}:{},...g?{user_session_id:g.ids.session_id}:{}}));try{w&&!s.state.force&&s.save({force:!0}),g&&s.state.user_session_id!==g.ids.session_id&&s.save({user_session_id:g.ids.session_id}),m&&s.state.conv_source!==m&&s.save({conv_source:m});let c=e.chat?.drainHeldReceipts?.()??[];(c.length>0||(s.state.held_receipts?.length??0)>0)&&s.save({held_receipts:c}),G!==null&&s.save({force_scope:G}),Ye(s,D.paused)}catch(c){let p=s.state.checkpoint,y=`error: couldn't persist the pause for session ${s.state.sid}`+(p?` \u2014 last durable checkpoint: seq ${p.seq} @ ${p.ts}`:" \u2014 no durable checkpoint exists")+` (${c instanceof Error?c.message:String(c)})`;return e.out(y),e.emit?.({type:"error",message:y,code:"PAUSE_PERSIST_FAILED",sid:s.state.sid}),1}S("session_paused",{sid:s.state.sid},f.session_id);let d=E!=="interactive"?` --mode ${E}`:"",u=`kane-cli design tests --resume ${s.state.sid}${d}`;if(q||e.out(`paused \u2014 resume with: ${u}`),e.emit?.({type:"session_paused",sid:s.state.sid,mode:E,resume:u,expires_at:s.state.expires_at,pending_questions:D.paused.pending.questions}),q){let c=e.chat?.state.credits?.total;e.onSummary?.({state:"paused",reason:"ctrl+c",facts:[`session ${s.state.sid} saved \u2014 designing ${R.usecase.logical_id??r}`,...s.state.expires_at?[`expires: ${s.state.expires_at}`]:[],...c!==void 0?[`credits used: ${c.toFixed(1)}`]:[]],resume:u,resumeMessage:`${u} --message "<your words>"`,tracePath:Z(h)})}return O(),3}if(D.crashed&&i?.state.checkpoint){let s=i.state.checkpoint,d=E!=="interactive"?` --mode ${E}`:"",u=`kane-cli design tests --resume ${i.state.sid}${d}`;if(S("agent_crashed_resumable",{sid:i.state.sid,seq:s.seq},f.session_id),q||e.out(`agent crashed \u2014 session ${i.state.sid} is resumable at checkpoint seq ${s.seq} (at most the in-flight turn lost); resume with: ${u}`),e.emit?.({type:"session_paused",sid:i.state.sid,mode:E,resume:u,expires_at:i.state.expires_at,crashed:!0}),q){let c=e.chat?.state.credits?.total;e.onSummary?.({state:"crashed",facts:[`agent crashed \u2014 session ${i.state.sid} is resumable at checkpoint seq ${s.seq}`,"at most the in-flight turn was lost",...c!==void 0?[`credits used: ${c.toFixed(1)}`]:[]],resume:u,resumeMessage:`${u} --message "<your words>"`,tracePath:Z(h)})}return i.release(),i=null,3}if(D.error)return e.out(`error: design agent failed: ${D.error}`),e.emit?.({type:"error",message:`error: design agent failed: ${D.error}`}),J(),O(),1;if(D.proposal==null&&E!=="interactive")return e.out(`error: the design session stopped before saving anything \u2014 nothing committed (trace: ${h})`),e.emit?.({type:"error",message:`error: the design session stopped before saving anything \u2014 nothing committed (trace: ${h})`}),J(),O(),1;let K=0;if(D.proposal==null)try{let{readRecords:s}=await import("./records-TJJJWBUD.js"),d=t.resume??f.session_id;K=s(e.contextDir).records.filter(u=>u.sid===d).reduce((u,c)=>u+c.nodes.filter(p=>p.label!=="source").length,0)}catch{}if(D.proposal==null&&e.out(K>0?`done \u2014 ${K} item(s) committed in this session (earlier legs included); nothing new since the resume`:"done \u2014 nothing designed this session (no finalize before the session ended)"),D.assumedDefaults&&e.out(`assumed: ${D.assumedDefaults} default(s) taken while unattended`),i&&e.emit?.({type:"session_complete",sid:t.resume??f.session_id}),g?.event("ASR_SESSION_COMPLETE",{}),i?.complete(),W)try{St(ve(e.contextDir,"sessions"))}catch{}if(M.length>0){let s=Kt(M,ae(e.contextDir));e.chat?e.chat.note(s):e.out(s),e.emit?.({type:"variables_summary",file:M[0].file,variables:M.map(({name:d,description:u,secret:c})=>({name:d,description:u,secret:c}))})}if(q){let s=e.chat.state.ledger.filter(c=>c.kind==="answer"&&c.receipt.form==="assumed").length??0,d=(D.assumedDefaults??0)+s,u=e.chat.state.credits?.total??D.creditsTotal;e.onSummary?.({state:"complete",facts:[`designed: ${R.usecase.logical_id??r}${D.proposal==null?K>0?` (${K} item(s) committed across this session)`:" (nothing committed this session)":""}`,...M.length>0?[`${M.length} variable(s) need values \u2014 see .testmuai/variables/assurance.json`]:[],...d>0?[`${d} assumed default(s)`]:[],...u!==void 0?[`credits used: ${u.toFixed(1)}`]:[]],tracePath:Z(h)})}return t.plan||et(e.contextDir),O(),0}function Kt(t,e){if(t.length===0)return"";let n=zt(e,t[0].file)||t[0].file,i=Math.max(...t.map(r=>r.name.length))+3,o=t.slice().sort((r,v)=>r.name<v.name?-1:1).map(r=>` ${r.name.padEnd(i)}${r.description}${r.secret?" (secret)":""}`);return`variables declared this session \u2014 fill their values before running:
|
|
365
365
|
${n}
|
|
366
366
|
${o.join(`
|
|
367
367
|
`)}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as S}from"./chunk-I7TIGB7K.js";import{a as x,b as P,c as C,d as V,e as j}from"./chunk-
|
|
2
|
+
import{a as S}from"./chunk-I7TIGB7K.js";import{a as x,b as P,c as C,d as V,e as j}from"./chunk-DMCEGMGB.js";import{a as R,b as D}from"./chunk-ALCE5RLK.js";import{C as y,c as b,r as f,s as k}from"./chunk-GP7WD4UY.js";import{f as w}from"./chunk-FQNQVC5O.js";function I(o,t){return{contextDir:o,rootSid:t,locks:w(o,t),probe:S(o,{resolveAlias:i=>P(i),embed:(i,s)=>C(i,s),readVector:(i,s)=>V(o,i,s),writeVector:(i,s,n)=>j(o,i,s,n)})}}var N=new Set(["archive"]);async function Y(o,t,i,s){let n=y(o.contextDir);if(i.v==="defer")return{outcome:"deferred"};if(t.kind==="MODIFY_HELD"){if(!t.heldPayload)return{outcome:"failed",detail:`${t.ref} carries no held payload`};let e=t.heldPayload;if(i.v==="keep_current"){if(!e.event_id)return{outcome:"failed",detail:`this held row has no durable event id \u2014 resume the owner to drop it: kane-cli context extract --resume ${e.sid}`};let{commitChatTurn:r}=await import("./chat-committer-HDE3TP5I.js"),u=r({contextDir:o.contextDir,graph:n,ops:[{kind:"resolve_question",questionId:`drop-held:${e.sid}:${e.tempRef}`,resolution:"deferred",eventId:e.event_id}],by:s});return u.errors?{outcome:"failed",detail:u.errors.map(d=>`${d.code}: ${d.detail}`).join("; ")}:(o.signals?.({ref:t.ref,verdict:"held-dropped"}),{outcome:"committed",detail:"held payload dropped (recorded) \u2014 the owner's resume will not re-present it"})}if(i.v==="approve"){let r=e.content._held??null;if(!r?.source_id||!r.source_cid||!r.anchor||!r.quote)return{outcome:"failed",detail:`this held row carries no committable provenance \u2014 resume the owner to apply it: kane-cli context extract --resume ${e.sid}`};{let a=n.mediaOf(r.source_cid),m=R(o.contextDir,n,r.source_cid),g=a.format==="image"?null:m?D(m):null;if(a.format!=="image"&&g===null)return{outcome:"failed",detail:`the pinned source ${r.source_id} (${r.source_cid.slice(0,19)}) has no citable text to verify this held row against \u2014 resume the owner: kane-cli context extract --resume ${e.sid}`};let _=b(a,{anchor:r.anchor,quote:r.quote},g);if(_.length>0)return{outcome:"failed",detail:`held provenance does not verify against the pinned source (${_.map($=>`${$.code}: ${$.detail}`).join("; ")}) \u2014 resume the owner: kane-cli context extract --resume ${e.sid}`}}let{commitProposal:u}=await import("./committer-IYQPXG6C.js"),{_held:d,...c}=e.content,q={version:1,read_basis:n.latestHash,source:{source_id:r.source_id,source_cid:r.source_cid},use_cases:[{temp_ref:e.tempRef,title:String(c.title??e.tempRef),...c.summary!==void 0?{summary:c.summary}:{},risk:String(c.risk??"med"),cite:{anchor:r.anchor,quote:r.quote},depends_on_hint:[],matches_existing:null}]},l=await x(I(o.contextDir,o.rootSid??`review-${process.pid}`),{verb:"maintain",ucTargets:[],newBuCandidates:[{tempRef:e.tempRef,title:String(c.title??e.tempRef),probeText:`${String(c.title??"")} ${String(c.summary??"")}`.trim()}],sourcePins:[{source_id:r.source_id,source_cid:r.source_cid}],readBasis:n.latestHash,...e.event_id?{eventIds:[e.event_id]}:{}},a=>{let m=u({contextDir:o.contextDir,graph:a.graph,proposal:q,proposalId:null,verdicts:new Map([[e.tempRef,{resolution:"skipped"}]]),by:s,autoName:!0,allowStaleBasis:!0,eventIds:e.event_id?[e.event_id]:a.eventIds("maintain",1),sid:a.sid,probeHits:a.probeHits});return m.errors!==null?{errors:m.errors}:{result:m,record:m.record}}),h=l.ok&&"result"in l?l.result:{record:null,errors:l.ok?null:l.kind==="validation"?l.errors:[{code:l.kind==="contended"?l.err.code:"UNSETTLED",detail:l.kind==="contended"?`held by ${l.err.holder?.owner_sid??"another session"}`:"concurrent activity kept moving the store"}]};return h.errors?{outcome:"failed",detail:h.errors.map(a=>`${a.code}: ${a.detail}`).join("; ")}:(o.signals?.({ref:t.ref,verdict:"held-applied"}),{outcome:"committed",detail:`held payload committed (derived) by ${s.id}`})}return{outcome:"failed",detail:`verdict ${i.v} does not apply to a MODIFY_HELD card`}}let v=n.resolve(t.ref);if(!v)return{outcome:"failed",detail:`${t.ref} names nothing in the graph`};let p=n.tipOf(v.cid);if(i.v==="archive"){if(!i.because||!i.because.trim())return{outcome:"failed",detail:"archive requires --because (a reason the record keeps)"};let e=f({contextDir:o.contextDir,graph:n,verdicts:new Map([[p,{resolution:"rejected",reason:i.because}]]),by:s});return e.errors?{outcome:"failed",detail:e.errors.map(r=>`${r.code}: ${r.detail}`).join("; ")}:(o.signals?.({ref:t.ref,verdict:"archived",reason:i.because}),{outcome:"retired"})}if(i.v==="approve"){let e=f({contextDir:o.contextDir,graph:n,verdicts:new Map([[p,{resolution:"approved"}]]),by:s});return e.errors?{outcome:"failed",detail:e.errors.map(r=>`${r.code}: ${r.detail}`).join("; ")}:(o.signals?.({ref:t.ref,verdict:"approved"}),{outcome:"applied"})}if(i.v==="merge"||i.v==="keep_both"){if(t.kind!=="PAIR"||!t.pair)return{outcome:"failed",detail:`${t.ref} is not a PAIR card`};let e=n.resolve(t.pair.candidate_cid);if(!e)return{outcome:"failed",detail:`pair candidate ${t.pair.candidate_ref} names nothing`};let r=n.tipOf(e.cid);if(i.v==="merge"){let d=k({contextDir:o.contextDir,graph:n,survivor:r,merged:p,reason:`pair merge: duplicate of ${t.pair.candidate_ref} (score ${t.pair.score})`,by:s});return d.errors?{outcome:"failed",detail:d.errors.map(c=>`${c.code}: ${c.detail}`).join("; ")}:(o.signals?.({ref:t.ref,verdict:"pair-merged",reason:t.pair.candidate_ref}),{outcome:"committed",detail:`merged into ${t.pair.candidate_ref} \u2014 survivor stays derived`})}let u=f({contextDir:o.contextDir,graph:n,verdicts:new Map([[p,{resolution:"approved"}],[r,{resolution:"approved"}]]),by:s});return u.errors?{outcome:"failed",detail:u.errors.map(d=>`${d.code}: ${d.detail}`).join("; ")}:(o.signals?.({ref:t.ref,verdict:"pair-kept-both",reason:t.pair.candidate_ref}),{outcome:"applied",detail:"both promoted as distinct"})}return{outcome:"failed",detail:`verdict ${i.v} does not apply to a ${t.kind} card`}}export{I as a,N as b,Y as c};
|
|
@@ -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-YKYKOV6U.js";import{y as l}from"./chunk-HYTBEPC2.js";import{a as A}from"./chunk-HCBYKLMW.js";import{a as c,b as f,i as P}from"./chunk-C44QQJR4.js";import{a as B}from"./chunk-6YGTRKDT.js";import{e as x}from"./chunk-UR6MHSHU.js";var L=x(B(),1);var n=x(A(),1);function S(r,d,s,u,m){let p=s==="basic"&&u?`basic (${u})`:s,i=20,a=`${r} [${d}]`,g="\xB7".repeat(Math.max(2,i-a.length+3));return{label:`${a} ${g} ${p}`,profile:r,env:d,isActive:m}}function M({creds:r,onSwitch:d,onCancel:s}){let u=r.listProfiles(),m=r.getActiveProfile(),p=r.getDefaultEnv(),i=u.map(e=>{let o=r.loadBasicAuth(e.profile,e.env),t=r.loadCredentials(e.profile,e.env)!==null,v=o?"basic":t?"oauth":"none",b=o?o.username:null,w=e.profile===m&&e.env===p;return S(e.profile,e.env,v,b,w)}),[a,g]=(0,L.useState)(()=>{let e=i.findIndex(o=>o.isActive);return e>=0?e:0});return P((e,o)=>{if(o.escape){s();return}if(o.upArrow){g(t=>Math.max(0,t-1));return}if(o.downArrow){g(t=>Math.min(i.length-1,t+1));return}if(o.return&&i[a]){let t=i[a];t.isActive||d(t.profile,t.env),s();return}}),i.length===0?(0,n.jsxs)(c,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:[(0,n.jsx)(f,{color:l.orange,bold:!0,children:"Profiles"}),(0,n.jsx)(c,{marginTop:1,children:(0,n.jsx)(f,{color:l.dim,children:"No profiles \u2014 use Login to create one"})}),(0,n.jsx)(h,{bindings:[],escBackLabel:"back"})]}):(0,n.jsxs)(c,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:[(0,n.jsx)(f,{color:l.orange,bold:!0,children:"Profiles"}),(0,n.jsx)(c,{flexDirection:"column",marginTop:1,children:i.map((e,o)=>{let t=o===a,v=t?"\u276F ":" ",b=e.isActive?l.green:t?l.orange:void 0;return(0,n.jsxs)(f,{color:b,children:[v,e.label,e.isActive?" \u25CF active":""]},`${e.profile}-${e.env}`)})}),(0,n.jsx)(h,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"switch"}],escBackLabel:"back"})]})}export{S as a,M as b};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{j as S,k as v}from"./chunk-
|
|
2
|
+
import{j as S,k as v}from"./chunk-NLEA6NPU.js";import{d as c,i as m}from"./chunk-Z7S3IWUX.js";import{a as h,c as _,e as f}from"./chunk-EYOCNMUM.js";var y=["desktop","emulator","simulator"];function T(n,t){return n.kind==="app_id"?!0:t==="emulator"?n.kind==="apk":n.kind==="zip"}function $(n){let t=n.deviceName,e=n.osVersion;return t!==void 0&&t.trim()===""||e!==void 0&&e.trim()===""?{ok:!1,message:"--device-name and --os-version cannot be empty."}:{ok:!0,...t!==void 0?{name:t.trim()}:{},...e!==void 0?{osVersion:e.trim()}:{}}}function R(n){return`--device-name needs an OS version \u2014 a bare name matches every runtime that ships it.
|
|
3
3
|
Provide one: ${n}`}function k(n,t,e){let r=v(n);return r?T(r,t)?null:t==="emulator"?`${e} cannot run on an emulator (needs an .apk, or an APP\u2026 id).`:`${e} cannot run on a simulator (needs a .zip of the .app bundle, or an APP\u2026 id).`:`${n}: ${S}`}function I(n){return y.includes(n)?n:null}function V(n){return`--target must be one of desktop, emulator, simulator (got "${n}")`}function x(n){let t=[];for(let[e,r]of[["--device-name",n.deviceName],["--os-version",n.osVersion],["--app",n.app]])r!==void 0&&t.push(`ignored ${e} ${r}: session target is desktop \u2014 set --target emulator|simulator to run on a device`);return t}function F(n){let{flags:t,saved:e}=n,r=[],s;if(t.target!==void 0){let i=I(t.target);if(!i)return{kind:"invalid",message:V(t.target)};s=i}else{let i=h(e?.tui_target,e?.default_target?.kind);if(i.kind==="choose-mobile")return{kind:"choose-mobile-kind"};s=i.kind==="unset"?"desktop":i.kind}if(s==="desktop")return r.push(...x(t)),{kind:"web",warnings:r};if(!n.host.supported)return{kind:"invalid",message:n.host.reason??"this machine cannot run mobile targets."};let a=[],d,u,o=$(t);if(!o.ok)return{kind:"invalid",message:o.message};let l=e?.default_target&&e.default_target.kind===s?c(e.default_target):void 0;if(o.name!==void 0||o.osVersion!==void 0){let i=o.name??l?.name,p=o.osVersion??l?.osVersion;if(p===void 0)return{kind:"invalid",message:R("--os-version <version>, or save one (kane-cli config set-os-version)")};u={...i!==void 0?{name:i}:{},osVersion:p},d={value:i?`${i} (${p})`:`any device on ${p}`,source:"flag"}}else if(e?.default_target&&e.default_target.kind===s&&(c(e.default_target)!==void 0||e.default_target.id!==void 0))d={value:m(e.default_target)??"(saved device)",source:"saved"};else{if(e?.default_target&&e.default_target.kind!==s&&(c(e.default_target)!==void 0||e.default_target.id!==void 0))return{kind:"invalid",message:`Your saved device '${m(e.default_target)}' is ${e.default_target.kind==="simulator"?"a simulator":"an emulator"}, but this run targets ${s==="simulator"?"a simulator":"an emulator"}. Pass --device-name and --os-version, or update your config (set-target, set-device-name, set-os-version).`};a.push("device")}let g;if(t.app!==void 0){let i=k(t.app,s,`--app ${t.app}`);if(i)return{kind:"invalid",message:i};g={value:t.app,source:"flag"}}else{let i=e?.default_app,p=i?v(i):null;p&&T(p,s)&&e?.default_target?.kind===s?g={value:i,source:"saved"}:a.push("app")}return{kind:"mobile",target:s,...u?{deviceSelector:u}:{},...d?{device:d}:{},...g?{app:g}:{},missing:a,warnings:r}}function M(n){let{flags:t,file:e}=n,r=[],s=e.target==="emulator"||e.target==="simulator"?e.target:void 0,a;if(t.target!==void 0){let i=I(t.target);if(!i)return{kind:"invalid",message:V(t.target)};a=i,s&&s!==a&&r.push(`--target ${a} overrides the file's \`target: ${s}\` \u2014 steps recorded on ${s==="emulator"?"an emulator":"a simulator"} may not replay here`)}else a=s??"desktop";if(a==="desktop")return r.push(...x(t)),{kind:"web",warnings:r};let d=$(t);if(!d.ok)return{kind:"invalid",message:d.message};let u=d.name??(e.device_name?.trim()||void 0),o=d.osVersion??(e.os_version?.trim()||void 0);if(u!==void 0&&o===void 0)return{kind:"invalid",message:R("--os-version <version>, or os_version: in the test file")};let l=o!==void 0?{...u!==void 0?{name:u}:{},osVersion:o}:void 0;if(a==="simulator"&&l&&l.name===void 0&&r.push(`the file names no device_name \u2014 any simulator on ${o} may be used. Add device_name: to the file (or pass --device-name) to pin the device.`),t.app!==void 0){let i=k(t.app,a,`--app ${t.app}`);if(i)return{kind:"invalid",message:i}}else if(e.app){let i=k(e.app,a,`the file's app: ${e.app}`);if(i)return{kind:"invalid",message:i}}let g=t.app??(e.app||void 0);return{kind:"mobile",target:a,platform:_(a)??"",...g?{app:g}:{},...l?{deviceSelector:l}:{},...e.no_reset!==void 0?{noReset:e.no_reset}:{},warnings:r}}function D(n){return n.target==="desktop"?"Running on: Desktop \xB7 Chrome":`Running on: ${f(n.target)} \xB7 ${n.deviceLabel} \xB7 ${n.appLabel}`}var b={emulator:"</path/to/app.apk | AppId>",simulator:"</path/to/app.zip | AppId>"};function E(n,t){let e=f(n).toLowerCase();return t==="device"?[`session target is "${e}" but no device is set.`,` See devices: kane-cli devices list --target ${n}`,' Set one: kane-cli config set-device-name "<name>" && kane-cli config set-os-version "<version>"',' Or per-run: --device-name "<name>" --os-version "<version>"'].join(`
|
|
4
4
|
`):[`session target is "${e}" but no app is set.`,` Set one: kane-cli config set-app ${b[n]}`,` Or per-run: --app ${b[n]}`].join(`
|
|
5
5
|
`)}function K(n){return[`saved device "${n}" was not found on this machine.`," See devices: kane-cli devices list",' Set one: kane-cli config set-device-name "<name>" && kane-cli config set-os-version "<version>"'].join(`
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as g,e as p}from"./chunk-JVEZBJJ7.js";import{existsSync as f}from"fs";import{isAbsolute as m,join as d,relative as v}from"path";function c(t){let n=f(d(t,".context"))?"assurance.json":"variables.json";return d(".testmuai","variables",n)}function h(t,n){if(!m(t))return t;let e=v(n,t);return e.startsWith("..")?t:e}function w(t,n){let e=t.used_by;if(e.length===0||e.every(s=>s.file===p))return"";if(n===void 0||!e.every(s=>s.file===n))return e.map(s=>`${s.file} step ${s.step}`).join(" \xB7 ");let a=[...new Set(e.map(s=>s.step))].sort((s,i)=>s-i);return a.length===1?`step ${a[0]}`:`steps ${a.join(", ")}`}function b(t,n){let e=new Map,a=new Map,s={header:"Not in any variables file",rows:[],declare:!0};for(let i of t){if(i.reason==="not_a_dataset_column"){let l=i.dataset??"",u=a.get(l);u||(u={header:`Not a column of dataset ${l}`.trimEnd(),rows:[],declare:!1},a.set(l,u)),u.rows.push(i);continue}if(i.reason!=="value_missing"){s.rows.push(i);continue}let r=h(i.file??c(n),n),o=e.get(r);o||(o={header:r===g?"Waiting for a value passed with --variables":`Waiting for a value in ${r}`,rows:[],declare:!1},e.set(r,o)),o.rows.push(i)}return[...e.values(),...a.values(),...s.rows.length>0?[s]:[]]}function $(t,n){let e=c(n);if(f(d(n,e)))return["",` Add ${t.length===1?"it":"them"} to ${e}`];let a=t.map(r=>`${JSON.stringify(r.name)}:`),s=Math.max(...a.map(r=>r.length))+1,i=a.map((r,o)=>` ${r.padEnd(s)}{ "value": "" }${o<a.length-1?",":""}`);return["",` Create ${e}:`,""," {",...i," }"]}function _(t,n){let e=t.length,a=`warning: ${e} variable${e===1?" has":"s have"} no value`,s=Math.max(...t.map(r=>r.name.length),8)+2,i=b(t,n.cwd).map(r=>{let o=[` ${r.header}`];for(let l of r.rows)o.push(` ${l.name.padEnd(s)}${w(l,n.entryFile)}`.trimEnd());return r.declare&&o.push(...$(r.rows,n.cwd)),o.join(`
|
|
3
|
+
`)});return`${a}
|
|
4
|
+
|
|
5
|
+
${i.join(`
|
|
6
|
+
|
|
7
|
+
`)}
|
|
8
|
+
|
|
9
|
+
If {{name}} is literal page text, write \\{{name}} to keep it as-is.
|
|
10
|
+
A step that sets a name first binds it; anything else is typed as written. Fill the values to bind them.
|
|
11
|
+
`}function x(t,n){return{type:"warning",code:"unresolved_variables",message:`${t.length} variable(s) have no value \u2014 typed as written unless a step sets them first`,suggested_file:c(n.cwd),variables:t.map(e=>({...e,...e.file?{file:h(e.file,n.cwd)}:{}}))}}export{c as a,_ as b,x as c};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as k}from"./chunk-
|
|
2
|
+
import{a as k}from"./chunk-XXE7W5AV.js";import{y as u}from"./chunk-HYTBEPC2.js";import{a as f}from"./chunk-HCBYKLMW.js";import{a as m,b as s,k as b}from"./chunk-C44QQJR4.js";import{e as p}from"./chunk-UR6MHSHU.js";function B(t){let e=t;return e=e.replace(/@TS\{([^}]+)\}/g,"@S{$1}"),e=e.replace(/@TS-(\d+)/g,(o,i)=>`@S${parseInt(i,10)}.C1`),e=e.replace(/@TS(\d+)/g,(o,i)=>`@S${parseInt(i,10)}`),e=e.replace(/\\n/g,`
|
|
3
3
|
`),e}var c=p(f(),1),S=t=>t!==void 0&&/[A-Za-z0-9]/.test(t);function x(t){let e=[],o="",i=()=>{o&&(e.push({text:o}),o="")},d=(a,l,r)=>(a===0||!S(t[a-1]))&&(l+r>=t.length||!S(t[l+r])),n=0;for(;n<t.length;){let a=t.slice(n,n+2),l=t[n];if(a==="**"||a==="__"){let r=t.indexOf(a,n+2);if(r!==-1&&r>n+2&&(a==="**"||d(n,r,2))){i(),e.push({text:t.slice(n+2,r),bold:!0}),n=r+2;continue}}if(l==="`"){let r=t.indexOf("`",n+1);if(r!==-1&&r>n+1){i(),e.push({text:t.slice(n+1,r),code:!0}),n=r+1;continue}}if(l==="*"||l==="_"){let r=t.indexOf(l,n+1);if(r!==-1&&r>n+1&&(l==="*"||d(n,r,1))){i(),e.push({text:t.slice(n+1,r),italic:!0}),n=r+1;continue}}o+=l,n+=1}return i(),e.length===0&&e.push({text:""}),e}function h(t){return t.map((e,o)=>(0,c.jsx)(s,{bold:e.bold,italic:e.italic,color:e.code?u.dim:void 0,children:e.text},o))}function T(t){return t.split(`
|
|
4
4
|
`).map(e=>{if(e.trim()==="")return{kind:"blank"};let o=e.match(/^\s*[-*+]\s+(.*)$/);if(o)return{kind:"bullet",segs:x(o[1])};let i=e.match(/^\s*(\d+)\.\s+(.*)$/);if(i)return{kind:"numbered",n:i[1],segs:x(i[2])};let d=e.match(/^#{1,6}\s+(.*)$/);return d?{kind:"heading",segs:x(d[1])}:{kind:"para",segs:x(e)}})}function R(t,e,o=""){switch(t.kind){case"blank":return(0,c.jsx)(s,{children:o||" "},e);case"heading":return(0,c.jsxs)(s,{bold:!0,children:[o,h(t.segs)]},e);case"bullet":return(0,c.jsx)(m,{marginLeft:1,children:(0,c.jsxs)(s,{children:[o,"\u2022 ",h(t.segs)]})},e);case"numbered":return(0,c.jsx)(m,{marginLeft:1,children:(0,c.jsxs)(s,{children:[o,`${t.n}. `,h(t.segs)]})},e);default:return(0,c.jsxs)(s,{children:[o,h(t.segs)]},e)}}function $({text:t,accent:e=u.generateAccent}){let o=T(B(t)),{stdout:i}=b(),d=i?.columns??80;return(0,c.jsxs)(m,{marginBottom:1,children:[(0,c.jsx)(m,{width:2,flexShrink:0,children:(0,c.jsx)(s,{color:e,children:"\u2503"})}),(0,c.jsx)(m,{flexDirection:"column",width:d-2,children:o.map((n,a)=>R(n,a))})]})}var g=p(f(),1),I=5;function C({thinking:t,expanded:e,thinkingDone:o,maxLines:i=I}){if(!e)return(0,g.jsxs)(m,{paddingX:1,children:[(0,g.jsx)(s,{color:u.dim,children:o?"\u2237 thinking complete ":"\u2237 thinking\u2026 "}),(0,g.jsx)(s,{color:u.muted,children:o?"(ctrl+t to view)":"(ctrl+t to show)"})]});let d=t.split(`
|
|
5
5
|
`),n=Math.max(0,d.length-i),a=n>0?d.slice(-i).join(`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{y as o}from"./chunk-
|
|
2
|
+
import{y as o}from"./chunk-HYTBEPC2.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{a as f}from"./chunk-
|
|
2
|
+
import{a as f}from"./chunk-YKYKOV6U.js";import{y as r}from"./chunk-HYTBEPC2.js";import{a as g}from"./chunk-HCBYKLMW.js";import{a as i,b as n,i as p}from"./chunk-C44QQJR4.js";import{a as x}from"./chunk-6YGTRKDT.js";import{e as d}from"./chunk-UR6MHSHU.js";var b=d(x(),1);var e=d(g(),1),v=[{value:"desktop",label:"Desktop",hint:"Chrome on this machine"},{value:"emulator",label:"Emulator",hint:"a virtual Android device"},{value:"simulator",label:"Simulator",hint:"a virtual iOS device"}];function T(a){return a==="all"?v:v.filter(l=>l.value!=="desktop")}function B({mode:a="all",onSelect:l,onCancel:c}){let u=T(a),[h,m]=(0,b.useState)(0);return p((s,o)=>{if(o.escape&&c){c();return}o.upArrow&&m(t=>Math.max(0,t-1)),o.downArrow&&m(t=>Math.min(u.length-1,t+1)),o.return&&l(u[h].value)}),(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:r.orange,paddingX:2,paddingY:1,children:[(0,e.jsx)(n,{color:r.orange,bold:!0,children:a==="all"?"Where should tests run?":"Which kind of device?"}),(0,e.jsx)(i,{marginTop:1,flexDirection:"column",children:u.map((s,o)=>{let t=o===h;return(0,e.jsxs)(i,{children:[(0,e.jsxs)(n,{color:t?r.orange:void 0,children:[t?"\u276F ":" ",s.label]}),(0,e.jsxs)(n,{color:r.dim,children:[" ",s.hint]})]},s.value)})}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(n,{color:r.dim,children:"You can change this any time with /desktop or /mobile."})}),(0,e.jsx)(f,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"select"}],suppressEscBack:!c,escBackLabel:"skip"})]})}export{B as a};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as
|
|
2
|
+
import{a as Ot,b as Mt}from"./chunk-2UIHS2FH.js";import{a as vt}from"./chunk-BKHXPBWN.js";import{a as kt}from"./chunk-N2P4MI32.js";import{b as wt}from"./chunk-IE3OO5GI.js";import{a as Nt,b as Ft,c as St}from"./chunk-MSGW4JDG.js";import{c as G,e as Rt}from"./chunk-UR6MHSHU.js";var Lt=G(x=>{"use strict";Object.defineProperty(x,"__esModule",{value:!0});x.CHAR=`
|
|
3
3
|
\r -\uD7FF\uE000-\uFFFD\u{10000}-\u{10FFFF}`;x.S=` \r
|
|
4
4
|
`;x.NAME_START_CHAR=":A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\u{EFFFF}";x.NAME_CHAR="-"+x.NAME_START_CHAR+".0-9\xB7\u0300-\u036F\u203F-\u2040";x.CHAR_RE=new RegExp("^["+x.CHAR+"]$","u");x.S_RE=new RegExp("^["+x.S+"]+$","u");x.NAME_START_CHAR_RE=new RegExp("^["+x.NAME_START_CHAR+"]$","u");x.NAME_CHAR_RE=new RegExp("^["+x.NAME_CHAR+"]$","u");x.NAME_RE=new RegExp("^["+x.NAME_START_CHAR+"]["+x.NAME_CHAR+"]*$","u");x.NMTOKEN_RE=new RegExp("^["+x.NAME_CHAR+"]+$","u");var tt=9,et=10,st=13,it=32;x.S_LIST=[it,et,st,tt];function Ne(e){return e>=it&&e<=55295||e===et||e===st||e===tt||e>=57344&&e<=65533||e>=65536&&e<=1114111}x.isChar=Ne;function Fe(e){return e===it||e===et||e===st||e===tt}x.isS=Fe;function Pt(e){return e>=65&&e<=90||e>=97&&e<=122||e===58||e===95||e===8204||e===8205||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}x.isNameStartChar=Pt;function Se(e){return Pt(e)||e>=48&&e<=57||e===45||e===46||e===183||e>=768&&e<=879||e>=8255&&e<=8256}x.isNameChar=Se});var Ht=G(f=>{"use strict";Object.defineProperty(f,"__esModule",{value:!0});f.CHAR="-\uD7FF\uE000-\uFFFD\u{10000}-\u{10FFFF}";f.RESTRICTED_CHAR="-\b\v\f-\x7F-\x84\x86-\x9F";f.S=` \r
|
|
5
5
|
`;f.NAME_START_CHAR=":A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\u{EFFFF}";f.NAME_CHAR="-"+f.NAME_START_CHAR+".0-9\xB7\u0300-\u036F\u203F-\u2040";f.CHAR_RE=new RegExp("^["+f.CHAR+"]$","u");f.RESTRICTED_CHAR_RE=new RegExp("^["+f.RESTRICTED_CHAR+"]$","u");f.S_RE=new RegExp("^["+f.S+"]+$","u");f.NAME_START_CHAR_RE=new RegExp("^["+f.NAME_START_CHAR+"]$","u");f.NAME_CHAR_RE=new RegExp("^["+f.NAME_CHAR+"]$","u");f.NAME_RE=new RegExp("^["+f.NAME_START_CHAR+"]["+f.NAME_CHAR+"]*$","u");f.NMTOKEN_RE=new RegExp("^["+f.NAME_CHAR+"]+$","u");var yt=9,It=10,Bt=13,Xt=32;f.S_LIST=[Xt,It,Bt,yt];function we(e){return e>=1&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111}f.isChar=we;function ke(e){return e>=1&&e<=8||e===11||e===12||e>=14&&e<=31||e>=127&&e<=132||e>=134&&e<=159}f.isRestrictedChar=ke;function ve(e){return e===9||e===10||e===13||e>31&&e<127||e===133||e>159&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111}f.isCharAndNotRestricted=ve;function Oe(e){return e===Xt||e===It||e===Bt||e===yt}f.isS=Oe;function $t(e){return e>=65&&e<=90||e>=97&&e<=122||e===58||e===95||e===8204||e===8205||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}f.isNameStartChar=$t;function Me(e){return $t(e)||e>=48&&e<=57||e===45||e===46||e===183||e>=768&&e<=879||e>=8255&&e<=8256}f.isNameChar=Me});var Ut=G(N=>{"use strict";Object.defineProperty(N,"__esModule",{value:!0});N.NC_NAME_START_CHAR="A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\u{EFFFF}";N.NC_NAME_CHAR="-"+N.NC_NAME_START_CHAR+".0-9\xB7\u0300-\u036F\u203F-\u2040";N.NC_NAME_START_CHAR_RE=new RegExp("^["+N.NC_NAME_START_CHAR+"]$","u");N.NC_NAME_CHAR_RE=new RegExp("^["+N.NC_NAME_CHAR+"]$","u");N.NC_NAME_RE=new RegExp("^["+N.NC_NAME_START_CHAR+"]["+N.NC_NAME_CHAR+"]*$","u");function Wt(e){return e>=65&&e<=90||e===95||e>=97&&e<=122||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}N.isNCNameStartChar=Wt;function Pe(e){return Wt(e)||e===45||e===46||e>=48&&e<=57||e===183||e>=768&&e<=879||e>=8255&&e<=8256}N.isNCNameChar=Pe});var Ct=G(B=>{"use strict";Object.defineProperty(B,"__esModule",{value:!0});B.SaxesParser=B.EVENTS=void 0;var X=Lt(),Le=Ht(),xt=Ut(),F=X.isS,ye=X.isChar,W=X.isNameStartChar,Vt=X.isNameChar,ne=X.S_LIST,Ie=X.NAME_RE,Be=Le.isChar,Xe=xt.isNCNameStartChar,$e=xt.isNCNameChar,He=xt.NC_NAME_RE,K="http://www.w3.org/XML/1998/namespace",I="http://www.w3.org/2000/xmlns/",We={__proto__:null,xml:K,xmlns:I},Ue={__proto__:null,amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},C=-1,k=-2,Gt=0,Ve=1,nt=2,Ge=3,P=4,qe=5,je=6,ze=7,rt=8,Ye=9,Qe=10,Ke=11,Ze=12,A=13,q=14,at=15,Je=16,ot=17,ts=18,es=19,ht=20,ss=21,is=22,ns=23,qt=24,lt=25,j=26,jt=27,rs=28,as=29,zt=30,os=31,hs=32,O=33,ls=34,ct=35,U=36,ut=37,cs=38,Yt=39,Qt=40,us=41,Kt=42,ds=43,fs=44,dt=9,w=10,ft=13,Zt=32,Jt=33,re=34,V=38,ae=39,z=45,Y=47,ps=59,v=60,L=61,D=62,T=63,oe=91,y=93,te=133,ee=8232,Q=e=>e===re||e===ae,he=[re,ae],ms=[...he,oe,D],gs=[...he,v,y],xs=[L,T,...ne],Cs=[...ne,D,V,v];function mt(e,t,s){switch(t){case"xml":s!==K&&e.fail(`xml prefix must be bound to ${K}.`);break;case"xmlns":s!==I&&e.fail(`xmlns prefix must be bound to ${I}.`);break;default:}switch(s){case I:e.fail(t===""?`the default namespace may not be set to ${s}.`:`may not assign a prefix (even "xmlns") to the URI ${I}.`);break;case K:switch(t){case"xml":break;case"":e.fail(`the default namespace may not be set to ${s}.`);break;default:e.fail("may not assign the xml namespace to another prefix.")}break;default:}}function _s(e,t){for(let s of Object.keys(t))mt(e,s,t[s])}var Es=e=>He.test(e),Ds=e=>Ie.test(e),M=0,se=1,pt=2;B.EVENTS=["xmldecl","text","processinginstruction","doctype","comment","opentagstart","attribute","opentag","closetag","cdata","error","end","ready"];var ie={xmldecl:"xmldeclHandler",text:"textHandler",processinginstruction:"piHandler",doctype:"doctypeHandler",comment:"commentHandler",opentagstart:"openTagStartHandler",attribute:"attributeHandler",opentag:"openTagHandler",closetag:"closeTagHandler",cdata:"cdataHandler",error:"errorHandler",end:"endHandler",ready:"readyHandler"},gt=class{constructor(t){this.opt=t??{},this.fragmentOpt=!!this.opt.fragment;let s=this.xmlnsOpt=!!this.opt.xmlns;if(this.trackPosition=this.opt.position!==!1,this.fileName=this.opt.fileName,s){this.nameStartCheck=Xe,this.nameCheck=$e,this.isName=Es,this.processAttribs=this.processAttribsNS,this.pushAttrib=this.pushAttribNS,this.ns=Object.assign({__proto__:null},We);let i=this.opt.additionalNamespaces;i!=null&&(_s(this,i),Object.assign(this.ns,i))}else this.nameStartCheck=W,this.nameCheck=Vt,this.isName=Ds,this.processAttribs=this.processAttribsPlain,this.pushAttrib=this.pushAttribPlain;this.stateTable=[this.sBegin,this.sBeginWhitespace,this.sDoctype,this.sDoctypeQuote,this.sDTD,this.sDTDQuoted,this.sDTDOpenWaka,this.sDTDOpenWakaBang,this.sDTDComment,this.sDTDCommentEnding,this.sDTDCommentEnded,this.sDTDPI,this.sDTDPIEnding,this.sText,this.sEntity,this.sOpenWaka,this.sOpenWakaBang,this.sComment,this.sCommentEnding,this.sCommentEnded,this.sCData,this.sCDataEnding,this.sCDataEnding2,this.sPIFirstChar,this.sPIRest,this.sPIBody,this.sPIEnding,this.sXMLDeclNameStart,this.sXMLDeclName,this.sXMLDeclEq,this.sXMLDeclValueStart,this.sXMLDeclValue,this.sXMLDeclSeparator,this.sXMLDeclEnding,this.sOpenTag,this.sOpenTagSlash,this.sAttrib,this.sAttribName,this.sAttribNameSawWhite,this.sAttribValue,this.sAttribValueQuoted,this.sAttribValueClosed,this.sAttribValueUnquoted,this.sCloseTag,this.sCloseTagSawWhite],this._init()}get closed(){return this._closed}_init(){var t;this.openWakaBang="",this.text="",this.name="",this.piTarget="",this.entity="",this.q=null,this.tags=[],this.tag=null,this.topNS=null,this.chunk="",this.chunkPosition=0,this.i=0,this.prevI=0,this.carriedFromPrevious=void 0,this.forbiddenState=M,this.attribList=[];let{fragmentOpt:s}=this;this.state=s?A:Gt,this.reportedTextBeforeRoot=this.reportedTextAfterRoot=this.closedRoot=this.sawRoot=s,this.xmlDeclPossible=!s,this.xmlDeclExpects=["version"],this.entityReturnState=void 0;let{defaultXMLVersion:i}=this.opt;if(i===void 0){if(this.opt.forceXMLVersion===!0)throw new Error("forceXMLVersion set but defaultXMLVersion is not set");i="1.0"}this.setXMLVersion(i),this.positionAtNewLine=0,this.doctype=!1,this._closed=!1,this.xmlDecl={version:void 0,encoding:void 0,standalone:void 0},this.line=1,this.column=0,this.ENTITIES=Object.create(Ue),(t=this.readyHandler)===null||t===void 0||t.call(this)}get position(){return this.chunkPosition+this.i}get columnIndex(){return this.position-this.positionAtNewLine}on(t,s){this[ie[t]]=s}off(t){this[ie[t]]=void 0}makeError(t){var s;let i=(s=this.fileName)!==null&&s!==void 0?s:"";return this.trackPosition&&(i.length>0&&(i+=":"),i+=`${this.line}:${this.column}`),i.length>0&&(i+=": "),new Error(i+t)}fail(t){let s=this.makeError(t),i=this.errorHandler;if(i===void 0)throw s;return i(s),this}write(t){if(this.closed)return this.fail("cannot write after close; assign an onready handler.");let s=!1;t===null?(s=!0,t=""):typeof t=="object"&&(t=t.toString()),this.carriedFromPrevious!==void 0&&(t=`${this.carriedFromPrevious}${t}`,this.carriedFromPrevious=void 0);let i=t.length,n=t.charCodeAt(i-1);!s&&(n===ft||n>=55296&&n<=56319)&&(this.carriedFromPrevious=t[i-1],i--,t=t.slice(0,i));let{stateTable:r}=this;for(this.chunk=t,this.i=0;this.i<i;)r[this.state].call(this);return this.chunkPosition+=i,s?this.end():this}close(){return this.write(null)}getCode10(){let{chunk:t,i:s}=this;if(this.prevI=s,this.i=s+1,s>=t.length)return C;let i=t.charCodeAt(s);if(this.column++,i<55296){if(i>=Zt||i===dt)return i;switch(i){case w:return this.line++,this.column=0,this.positionAtNewLine=this.position,w;case ft:return t.charCodeAt(s+1)===w&&(this.i=s+2),this.line++,this.column=0,this.positionAtNewLine=this.position,k;default:return this.fail("disallowed character."),i}}if(i>56319)return i>=57344&&i<=65533||this.fail("disallowed character."),i;let n=65536+(i-55296)*1024+(t.charCodeAt(s+1)-56320);return this.i=s+2,n>1114111&&this.fail("disallowed character."),n}getCode11(){let{chunk:t,i:s}=this;if(this.prevI=s,this.i=s+1,s>=t.length)return C;let i=t.charCodeAt(s);if(this.column++,i<55296){if(i>31&&i<127||i>159&&i!==ee||i===dt)return i;switch(i){case w:return this.line++,this.column=0,this.positionAtNewLine=this.position,w;case ft:{let r=t.charCodeAt(s+1);(r===w||r===te)&&(this.i=s+2)}case te:case ee:return this.line++,this.column=0,this.positionAtNewLine=this.position,k;default:return this.fail("disallowed character."),i}}if(i>56319)return i>=57344&&i<=65533||this.fail("disallowed character."),i;let n=65536+(i-55296)*1024+(t.charCodeAt(s+1)-56320);return this.i=s+2,n>1114111&&this.fail("disallowed character."),n}getCodeNorm(){let t=this.getCode();return t===k?w:t}unget(){this.i=this.prevI,this.column--}captureTo(t){let{i:s}=this,{chunk:i}=this;for(;;){let n=this.getCode(),r=n===k,a=r?w:n;if(a===C||t.includes(a))return this.text+=i.slice(s,this.prevI),a;r&&(this.text+=`${i.slice(s,this.prevI)}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as u,b as x}from"./chunk-
|
|
2
|
+
import{a as u,b as x}from"./chunk-XXE7W5AV.js";import{y as m}from"./chunk-HYTBEPC2.js";import{a as f}from"./chunk-HCBYKLMW.js";import{a as r,b as i}from"./chunk-C44QQJR4.js";import{e as n}from"./chunk-UR6MHSHU.js";var e=n(f(),1);function C({title:B,titleColor:c,borderColor:d,variant:p,rows:s,footer:t,labelWidth:l=14,marginBottom:b=1}){return(0,e.jsxs)(u,{title:B,titleColor:c,borderColor:d,variant:p,marginBottom:b,children:[s.map((o,a)=>typeof o.value=="string"?(0,e.jsx)(x,{label:o.label,value:o.value,valueColor:o.valueColor,labelWidth:l},`${o.label}-${a}`):(0,e.jsxs)(r,{children:[(0,e.jsx)(r,{width:l,children:(0,e.jsx)(i,{color:m.dim,children:o.label})}),o.value]},`${o.label}-${a}`)),t&&(0,e.jsx)(r,{marginTop:1,children:t})]})}export{C as a};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{y as n}from"./chunk-
|
|
2
|
+
import{y as n}from"./chunk-HYTBEPC2.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};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
var S=new Set(["SYNC_BEHIND","SYNC_DIVERGED","SYNC_POSITION_TAKEN","SYNC_LOCAL_MOVED"]),i=new Set(["SYNC_REMOTE_CHAIN_BROKEN","SYNC_OBJECT_CORRUPT","SYNC_LOCAL_RECORD_CORRUPT"]),s=class extends Error{constructor(n,e,u,p){super(e);this.code=n;this.remedy=u;this.diagnostic=p}};function Y(r){return S.has(r)?3:i.has(r)?1:2}var o="kane-context/v1",E=`${o}/commits/`,f=`${o}/meta.json`,O=1e3,C=999999999,c=new RegExp(`^${o}/commits/(\\d{6})/(\\d{9})\\.json$`),R=/^sha256:([0-9a-f]{64})$/;function N(r,t){let n=R.exec(r);if(!n)throw new Error(`not a ${t} fingerprint: ${r} \u2014 expected sha256:<64 lower-case hex>`);return n[1]}function _(r){if(!Number.isInteger(r)||r<1||r>C)throw new Error(`bad position ${r} \u2014 a position is a whole number from 1 to ${C}`);return String(Math.floor((r-1)/O)).padStart(6,"0")}function g(r){return`${E}${_(r)}/${String(r).padStart(9,"0")}.json`}function l(r){return`${E}${_(r)}/`}function d(r){let t=c.exec(r);if(!t)return null;let n=Number(t[2]);return n<1||t[1]!==_(n)?null:n}function D(r){let t=N(r,"blob");return`${o}/blobs/${t.slice(0,2)}/${t.slice(2)}`}function L(r,t){return`${a(r)}${N(t,"proposal digest").slice(0,12)}.json`}function a(r){let t=I(r);if(t===""||t==="."||t==="..")throw new Error(`bad proposal id ${JSON.stringify(r)} \u2014 a proposal id names a folder`);return`${o}/proposals/${t}/`}function I(r){let t="";for(let n of Buffer.from(r,"utf8")){let e=String.fromCharCode(n);t+=/^[a-z0-9._-]$/.test(e)?e:`~${n.toString(16).padStart(2,"0")}`}return t}function $(r){if(!/^[0-9a-f]{16,32}$/.test(r))throw new Error("probe nonce must be 16 to 32 lower-case hex characters");return`${o}/probe/${r}`}export{s as a,Y as b,E as c,f as d,g as e,l as f,d as g,D as h,L as i,a as j,$ as k};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as b,b as $}from"./chunk-
|
|
2
|
+
import{a as b,b as $}from"./chunk-GP7WD4UY.js";function C(n){return n.replace(/\n$/,"").split(`
|
|
3
3
|
`).map((l,o)=>`${String(o+1).padStart(4,"0")}| ${l}`).join(`
|
|
4
4
|
`)}function S(n,d,l){if(!n.quote)return n;let o=$(l,n.anchor);if(o!==null&&o.includes(n.quote))return n;let a=d.indexOf(n.quote);if(a===-1||d.indexOf(n.quote,a+1)!==-1)return"gone-or-ambiguous";let t=d.slice(0,a).split(`
|
|
5
5
|
`).length,r=t+n.quote.replace(/\n$/,"").split(`
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as y}from"./chunk-YCCUBQY4.js";import{y as t}from"./chunk-HYTBEPC2.js";import{a as O}from"./chunk-HCBYKLMW.js";import{a as c,b as n,k as w}from"./chunk-C44QQJR4.js";import{e as k}from"./chunk-UR6MHSHU.js";var e=k(O(),1);function D(i){let a=i.findIndex(s=>s.free);return a>=0?a:null}var P=60,C=100;function F({headline:i,ask:a=!1,rows:s,sel:u,focused:m,freeText:l=null,freeTextNote:x,sublines:$=[]}){let{stdout:h}=w(),p=h?.columns??80,A=p<P,B=Math.min(p-1,C),d=o=>m&&u===o?(0,e.jsx)(n,{color:t.assuranceAccent,children:"\u276F"}):" ",b=a?`? ${i}`:i,f=Math.max(4,B-3),T=$.map((o,r)=>(0,e.jsx)(n,{color:t.dim,children:` ${o.length>f?`${o.slice(0,f-1)}\u2026`:o}`},`sub-${r}`)),g=0,R=s.map((o,r)=>o.free?l?(0,e.jsxs)(c,{flexDirection:"column",children:[(0,e.jsxs)(c,{children:[(0,e.jsxs)(n,{children:[(0,e.jsx)(n,{color:t.assuranceAccent,children:"\u276F"})," ",(0,e.jsx)(n,{color:t.dim,children:"\u270E "})]}),(0,e.jsx)(y,{value:l.value,onChange:l.onChange,onSubmit:l.onSubmit,onCancel:l.onCancel,placeholder:o.label})]}),x?(0,e.jsx)(n,{color:t.muted,children:` ${x}`}):null]},o.key):(0,e.jsxs)(n,{children:[d(r)," ",(0,e.jsx)(n,{color:t.dim,children:`\u270E ${o.label}`})]},o.key):(g+=1,(0,e.jsxs)(n,{bold:m&&u===r,children:[d(r),` ${g}. ${o.label}`,o.detail?(0,e.jsx)(n,{color:t.dim,bold:!1,children:` \u2014 ${o.detail}`}):null]},o.key)));return A?(0,e.jsxs)(c,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,e.jsx)(n,{bold:!0,color:t.assuranceAccent,children:b}),T,R]}):(0,e.jsxs)(c,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,e.jsx)(n,{bold:!0,color:t.assuranceAccent,children:b}),T,(0,e.jsx)(n,{children:" "}),R]})}export{D as a,F as b};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as Y,b as Z,c as nn,d as en,e as tn}from"./chunk-
|
|
2
|
+
import{a as Y,b as Z,c as nn,d as en,e as tn}from"./chunk-JL3L6KOG.js";import{b as rn,c as sn}from"./chunk-P7YZ3PU3.js";import{n as X,p as P}from"./chunk-RSSOJ3L2.js";import{a as jn}from"./chunk-6YGTRKDT.js";import{e as Pn}from"./chunk-UR6MHSHU.js";function on(i){return{command:"start",...i}}function an(i,e,o){return{command:"run",run_id:i,kind:e,...o}}function un(i){return{command:"cancel",...i?{run_id:i}:{}}}function dn(i){return{command:"ask_user_response",answer:i}}function ln(){return{command:"shutdown"}}var z=Symbol("run-queue-end"),G=class{items=[];waiting=null;ended=!1;error=null;push(e){if(this.waiting){let{resolve:o}=this.waiting;this.waiting=null,o(e)}else this.items.push(e)}end(){if(this.ended=!0,this.waiting){let{resolve:e}=this.waiting;this.waiting=null,e(z)}}fail(e){if(this.error=e,this.waiting){let{reject:o}=this.waiting;this.waiting=null,o(e)}}next(){return this.items.length>0?Promise.resolve(this.items.shift()):this.error?Promise.reject(this.error):this.ended?Promise.resolve(z):new Promise((e,o)=>{this.waiting={resolve:e,reject:o}})}},D=class{env;runner;log;sessionId;spawnFn;proc=null;activeRun=null;pendingReady=null;shuttingDown=!1;finalized=!1;exitInfo=null;exitedUnexpectedly=!1;exitResolve;exited;constructor(e){this.env=e.env,this.runner=e.runner,this.log=e.log,this.sessionId=e.sessionId,this.spawnFn=e.spawn??Z;let o;this.exited=new Promise(c=>{o=c}),this.exitResolve=o}async start(e){if(this.proc)throw new Error("PersistentRunner.start called twice");this.proc=this.spawnFn({env:this.env,runner:this.runner,log:this.log,sessionId:this.sessionId}),this.consume();let o=new Promise((c,g)=>{this.pendingReady={resolve:c,reject:g}});this.writeCommand(on(e)),await o}async*run(e,o,c){if(!this.proc)throw new Error("PersistentRunner.run called before start");if(this.finalized)throw new Error(`v16-runner is not running (exited code=${this.exitInfo?.code??"null"}, signal=${this.exitInfo?.signal??"none"}) \u2014 cannot start run '${e}'`);if(this.activeRun)throw new Error(`PersistentRunner.run overlap: '${this.activeRun.runId}' still in flight`);let g=new G,w={runId:e,queue:g};this.activeRun=w,this.writeCommand(an(e,o,c));try{for(;;){let v=await g.next();if(v===z||(yield v,v.type==="run_end"&&(v.run_id===void 0||v.run_id===e)))break}}finally{this.activeRun===w&&(this.activeRun=null)}}sendUserResponse(e){this.writeCommand(dn(e))}cancel(e){this.writeCommand(un(e))}kill(){this.proc?.child.kill("SIGTERM")}async shutdown(){this.shuttingDown=!0,this.proc&&(this.writeCommand(ln()),await this.exited)}get stderr(){return this.proc?.getStderr()??""}get diedUnexpectedly(){return this.exitedUnexpectedly}writeCommand(e){let o=JSON.stringify(e)+`
|
|
3
3
|
`;try{this.proc?.child.stdin?.write(o)}catch{}}async consume(){if(!this.proc)return;try{for await(let c of this.proc.events){if(c.type==="ready"){this.onReady();continue}this.routeEvent(c)}}catch(c){this.log?.("error","PERSISTENT_RUNNER_STREAM_ERROR","Runner stdout stream errored",{error:c instanceof Error?c.message:String(c)})}let{code:e,signal:o}=await this.proc.exited;this.onExit(e,o)}onReady(){if(this.pendingReady){let{resolve:e}=this.pendingReady;this.pendingReady=null,e()}}routeEvent(e){let o=this.activeRun;if(!o){this.log?.("warn","PERSISTENT_RUNNER_ORPHAN_EVENT","Runner event with no active run",{event_type:e.type});return}o.queue.push(e)}onExit(e,o){if(!this.finalized){if(this.finalized=!0,this.exitInfo={code:e,signal:o},this.shuttingDown||(this.exitedUnexpectedly=!0),this.exitResolve({code:e,signal:o}),this.pendingReady){let{reject:c}=this.pendingReady;this.pendingReady=null,c(new Error(`v16-runner exited before ready (code=${e}, signal=${o??"none"})`))}if(this.activeRun){let{queue:c}=this.activeRun;if(this.activeRun=null,this.shuttingDown)c.end();else{let g=this.proc?.getStderr()?.slice(-500)??"";c.fail(new Error(`v16-runner exited unexpectedly mid-run (code=${e}, signal=${o??"none"})${g?`
|
|
4
|
-
${g}`:""}`))}}}}};var p=Pn(jn(),1);function cn(i){let e={cdp_endpoint:i.cdp_endpoint,ws_endpoint:i.ws_endpoint,width:i.width,height:i.height,headless:i.headless,model:i.model,max_steps:i.max_steps,network_ws:i.network_ws,network_sse:i.network_sse,session_id:i.session_id};return i.device&&(e.device=i.device),i.auth&&(e.auth=i.auth),i.disable_ask_user&&(e.disable_ask_user=!0),i.username&&(e.username=i.username),i.access_key&&(e.access_key=i.access_key),e}function j(i,e){let o=null,c=(g,w)=>{for(let v=0;v<g.length;v++){let _=g[v],h=[...w,v];e(_)&&(o===null||h.length>o.length)&&(o=h),_.children&&_.children.length>0&&c(_.children,h)}};return c(i,[]),o}function N(i,e,o){if(e.length===0)return[...i];let c=e[0],g=[...i],w=g[c];if(e.length===1)g[c]=o(w);else{let v=e.slice(1),_=N(w.children??[],v,o);g[c]={...w,children:_}}return g}function pn(){return{steps:[],maxOrdinal:0}}function Nn(i,e){if(e.type==="run_start"&&e.child_id)return e.environment?.resolution?{...i,resolution:e.environment.resolution}:i;if(e.type==="run_start"){let o=sn(i.runnerEnvironment,rn(e.environment));if(o)return{...i,runnerEnvironment:o,...o.resolution?{resolution:o.resolution}:{}}}if(e.type==="step_end"&&typeof e.ordinal=="number"&&e.id){let o={id:e.id,ordinal:e.ordinal,status:e.status,...e.kind?{kind:e.kind}:{},...typeof e.duration=="number"?{duration_ms:Math.round(e.duration*1e3)}:{},...typeof e.action_id=="string"&&e.action_id?{action_id:e.action_id}:{}};return{...i,steps:[...i.steps,o],maxOrdinal:Math.max(i.maxOrdinal,e.ordinal)}}return i}function
|
|
4
|
+
${g}`:""}`))}}}}};var p=Pn(jn(),1);function cn(i){let e={cdp_endpoint:i.cdp_endpoint,ws_endpoint:i.ws_endpoint,width:i.width,height:i.height,headless:i.headless,model:i.model,max_steps:i.max_steps,network_ws:i.network_ws,network_sse:i.network_sse,session_id:i.session_id};return i.device&&(e.device=i.device),i.auth&&(e.auth=i.auth),i.disable_ask_user&&(e.disable_ask_user=!0),i.username&&(e.username=i.username),i.access_key&&(e.access_key=i.access_key),e}function j(i,e){let o=null,c=(g,w)=>{for(let v=0;v<g.length;v++){let _=g[v],h=[...w,v];e(_)&&(o===null||h.length>o.length)&&(o=h),_.children&&_.children.length>0&&c(_.children,h)}};return c(i,[]),o}function N(i,e,o){if(e.length===0)return[...i];let c=e[0],g=[...i],w=g[c];if(e.length===1)g[c]=o(w);else{let v=e.slice(1),_=N(w.children??[],v,o);g[c]={...w,children:_}}return g}function pn(){return{steps:[],maxOrdinal:0}}function Nn(i,e){if(e.type==="run_start"&&e.child_id)return e.environment?.resolution?{...i,resolution:e.environment.resolution}:i;if(e.type==="run_start"){let o=sn(i.runnerEnvironment,rn(e.environment));if(o)return{...i,runnerEnvironment:o,...o.resolution?{resolution:o.resolution}:{}}}if(e.type==="step_end"&&typeof e.ordinal=="number"&&e.id){let o={id:e.id,ordinal:e.ordinal,status:e.status,...e.kind?{kind:e.kind}:{},...typeof e.duration=="number"?{duration_ms:Math.round(e.duration*1e3)}:{},...typeof e.action_id=="string"&&e.action_id?{action_id:e.action_id}:{}};return{...i,steps:[...i.steps,o],maxOrdinal:Math.max(i.maxOrdinal,e.ordinal)}}return i}function K(i){let e=i.indexOf(": ");return e>0&&e<15?i.slice(e+2):i}function V(i){return i.map(e=>{let o=e.children?V(e.children):e.children;return e.status==="running"?{...e,status:"stopped",phase:void 0,children:o}:o!==e.children?{...e,children:o}:e})}function Gn(i,e,o,c,g){let[w,v]=(0,p.useState)(!1),[_,h]=(0,p.useState)([]),[hn,T]=(0,p.useState)(null),[fn,B]=(0,p.useState)(null),[mn,k]=(0,p.useState)(null),[vn,W]=(0,p.useState)(null),[gn,J]=(0,p.useState)([]),[Rn,H]=(0,p.useState)(null),[Sn,yn]=(0,p.useState)(void 0),[wn,$]=(0,p.useState)(0),y=(0,p.useRef)(null),E=(0,p.useRef)(null),S=(0,p.useRef)(null),b=(0,p.useRef)(0),F=(0,p.useRef)(!1),U=(0,p.useRef)(pn()),O=(0,p.useRef)(null),xn=(0,p.useCallback)(async(m,x)=>{let Q=O.current;if(Q)try{await Q}catch{}h([]),T(null),B(null),k(null),W(null),J([]),H(null),yn(m.max_steps),v(!0),S.current=null,b.current=0,U.current=pn();let I=y.current;if(I&&E.current!==m.session_id){try{I.kill()}catch{}y.current=null,E.current=null,$(n=>n+1),I=null}if(!I){let n=Y();if(!n){k("v16-runner not found. Build the binary with `cd v16-runner && python build.py` or ensure Python is available."),v(!1);return}let d=en({environment:x?.environment,mode:x?.mode,assertionMode:x?.assertionMode,finalValidation:x?.finalValidation,username:m.username,accessKey:m.access_key,sessionId:m.session_id});m.device?.platform&&await nn(d,m.device);let u=new D({env:d,runner:n,log:x?.log,sessionId:m.session_id});y.current=u,E.current=m.session_id,I=u,X("runner",()=>{try{u.kill()}catch{}});let s=cn(m);try{await u.start(s)}catch(a){k(a instanceof Error?a.message:String(a)),v(!1),P("runner","Runner start failed"),y.current=null,E.current=null,$(t=>t+1);return}}let M={...m};delete M.run_id,tn(M,{environment:x?.environment});let In=`run-${m.run_index}`,Cn=m.mode==="replay"?"replay":"author",L=I,q=(async()=>{F.current=!1;for await(let n of L.run(In,Cn,M)){if(F.current)break;switch(U.current=Nn(U.current,n),n.type){case"run_start":if(n.child_id)break;if(S.current&&!S.current.isSingleFlow){let d=b.current;b.current++,h(u=>u.map((s,a)=>a===d?{...s,status:"running"}:s.status==="running"&&!s.children?.some(t=>t.status==="running")?{...s,status:s.children?.some(t=>t.status==="failed")?"failed":"passed"}:s))}break;case"bifurcation":{let d=n.flows??[],u=n.count??d.length,s={flows:d,isSingleFlow:n.is_single_flow??u<=1};W(s),S.current=s,b.current=0,h(d.map((a,t)=>({index:t+1,objective:a??`Flow ${t+1}`,status:"pending"})));break}case"step_start":{e?.("STEP_START",`Step ${n.index} started`,{index:n.index,objective:n.objective,child_id:n.child_id});let d=n.index,u=n.objective??`Step ${d}`,s=n.child_id,a=S.current&&!S.current.isSingleFlow;if(s)h(t=>{let r=j(t,l=>l.branchChildId===s)??j(t,l=>l.status==="running");return r?N(t,r,l=>{let f=(l.children??[]).map(R=>R.status==="running"&&R.childId===s?{...R,status:"stopped",phase:void 0}:R);return f.push({index:d,objective:u,status:"running",childId:s}),{...l,children:f}}):t});else if(a){let t=Math.max(0,b.current-1);h(r=>{let l=[...r];if(t>=l.length)return r;let f={...l[t]},C=[...f.children??[]].map(A=>A.status==="running"&&A.childId===void 0?{...A,status:"stopped",phase:void 0}:A);return C.push({index:d,objective:u,status:"running"}),f.children=C,f.status="running",l[t]=f,l})}else h(t=>{let r=V(t);return r.some(f=>f.index===d)?r.map(f=>f.index===d?{...f,status:"running",objective:u}:f):[...r,{index:d,objective:u,status:"running"}]});break}case"step_event":{e?.("STEP_EVENT",`Step ${n.index} ${n.event}`,{index:n.index,phase:n.event,action_type:n.action_type,detail:n.detail,child_id:n.child_id});let d=n.child_id,u=S.current&&!S.current.isSingleFlow;if(n.event==="cm_init"&&n.checkpoint_count!=null){J(s=>[...s,n.checkpoint_count]);break}if(n.event==="replay_started"){H({recordingLength:n.recording_length??0});break}if(n.event==="reasoning"&&n.detail&&n.detail!=="reasoning"&&o?.(n.detail),d){let s=t=>{if(t.index!==n.index||t.childId!==d)return t;let r={phase:n.event};return n.event==="reasoning"&&n.detail&&n.detail!=="reasoning"&&(r.objective=n.detail),n.action_type&&(r.actionType=n.action_type),{...t,...r}},a=t=>t.map(r=>{let l=s(r);return l!==r?l:r.children&&r.children.length>0?{...r,children:a(r.children)}:r});h(t=>t.map(r=>r.children?{...r,children:a(r.children)}:r))}else if(u){let s=Math.max(0,b.current-1);h(a=>{let t=[...a];if(s>=t.length)return a;let r={...t[s]},l=[...r.children??[]];if(!l.some(R=>R.index===n.index&&R.childId===void 0))l.push({index:n.index,objective:`Step ${n.index}`,status:"running",phase:n.event,actionType:n.action_type});else for(let R=0;R<l.length;R++){if(l[R].index!==n.index||l[R].childId!==void 0)continue;let C={phase:n.event};n.event==="reasoning"&&n.detail&&n.detail!=="reasoning"&&(C.objective=n.detail),n.action_type&&(C.actionType=n.action_type),l[R]={...l[R],...C}}return r.children=l,t[s]=r,t})}else h(s=>s.some(t=>t.index===n.index)?s.map(t=>{if(t.index!==n.index)return t;let r={phase:n.event};return n.event==="reasoning"&&n.detail&&n.detail!=="reasoning"&&(r.objective=n.detail),n.action_type&&(r.actionType=n.action_type),{...t,...r}}):[...V(s),{index:n.index,objective:`Step ${n.index}`,status:"running",phase:n.event,actionType:n.action_type}]);break}case"step_end":{e?.("STEP_END",`Step ${n.index} ${n.status}`,{index:n.index,status:n.status,duration:n.duration,summary:n.summary,child_id:n.child_id}),c?.();let d=n.child_id,u=S.current&&!S.current.isSingleFlow;if(d){let s=t=>t.index===n.index&&t.childId===d?{...t,status:n.status,duration:n.duration,phase:void 0,objective:t.objective.startsWith("Step ")?K(n.summary||t.objective):t.objective}:t,a=t=>t.map(r=>{let l=s(r);return l!==r?l:r.children&&r.children.length>0?{...r,children:a(r.children)}:r});h(t=>t.map(r=>r.children?{...r,children:a(r.children)}:r))}else if(u){let s=Math.max(0,b.current-1);h(a=>{let t=[...a];if(s>=t.length)return a;let r={...t[s]},l=(r.children??[]).map(f=>f.index===n.index&&f.childId===void 0?{...f,status:n.status,duration:n.duration,phase:void 0,objective:f.objective.startsWith("Step ")?K(n.summary||f.objective):f.objective}:f);return r.children=l,t[s]=r,t})}else h(s=>s.map(a=>a.index===n.index?{...a,status:n.status,duration:n.duration,phase:void 0,objective:a.objective.startsWith("Step ")?K(n.summary||a.objective):a.objective}:a));{let a=S.current&&!S.current.isSingleFlow?Math.max(0,b.current-1):0,t=typeof n.ordinal=="number"&&n.id?{ordinal:n.ordinal,id:n.id}:void 0;i?.(n.index,a,n.child_id,t)}break}case"child_agent_start":{let d=n.objective??"",u=n.child_id;h(s=>{let a=j(s,t=>t.status==="running");return a?N(s,a,t=>({...t,objective:`${d} (branch)`,phase:`child: ${d.slice(0,50)}`,branchObjective:d,branchChildId:u})):s});break}case"child_agent_end":{let d=n.child_id,u=`child ${n.success?"done":"failed"}`;h(s=>{let a=j(s,t=>t.branchChildId===d);return a?N(s,a,t=>({...t,phase:u})):s.map(t=>t.phase?.startsWith("child:")?{...t,phase:u}:t)});break}case"describe_trigger":g?.(n);break;case"ask_user":T(n.question??"");break;case"run_end":h(d=>d.map(u=>u.status==="running"?{...u,status:n.status,phase:void 0}:u)),v(!1),B(n);break;case"error":v(!1),k(n.message??"Runner error"),h(d=>d.map(u=>u.status==="running"?{...u,status:"failed",phase:void 0}:u));break}}})().catch(n=>{if(y.current!==L)return;let u=[n instanceof Error?n.message:String(n)],s=L.stderr;s&&!u.join(`
|
|
5
5
|
`).includes(s)&&u.push(s),k(u.join(`
|
|
6
6
|
`)),v(!1),h(a=>a.map(t=>t.status==="running"?{...t,status:"failed",phase:void 0}:t)),P("runner","Runner died mid-run"),y.current=null,E.current=null,$(a=>a+1)});O.current=q,q.finally(()=>{O.current===q&&(O.current=null)})},[i,e,o,c,g]),_n=(0,p.useCallback)(m=>{y.current?.sendUserResponse(m),T(null)},[]),bn=(0,p.useCallback)(()=>{let m=y.current;m&&(m.cancel(),v(!1),T(null))},[]),En=(0,p.useCallback)(async()=>{let m=y.current;if(m){try{await Promise.race([m.shutdown(),new Promise(x=>setTimeout(x,5e3))])}catch{}P("runner","Runner shut down"),y.current=null,E.current=null,$(x=>x+1)}},[]),kn=(0,p.useCallback)(()=>{h([]),B(null),k(null)},[]);return(0,p.useEffect)(()=>()=>{F.current=!0,P("runner","Component unmounted"),y.current=null,E.current=null},[]),{isRunning:w,steps:_,askingUser:hn,lastRunEnd:fn,runError:mn,bifurcationInfo:vn,cmInitCounts:gn,replayInfo:Rn,maxSteps:Sn,sessionGen:wn,startRun:xn,sendAnswer:_n,cancelRun:bn,shutdownRunner:En,clearLastRun:kn,getEvidenceState:()=>U.current}}export{D as a,cn as b,pn as c,Nn as d,Gn as e};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as $}from"./chunk-YCCUBQY4.js";import{a as U}from"./chunk-
|
|
2
|
+
import{a as $}from"./chunk-YCCUBQY4.js";import{a as U}from"./chunk-TVELOH5A.js";import{a as k}from"./chunk-BPMSNGXQ.js";import{a as _}from"./chunk-YKYKOV6U.js";import{a as T}from"./chunk-EPE2ELDH.js";import{y as i}from"./chunk-HYTBEPC2.js";import{a as O}from"./chunk-HCBYKLMW.js";import{a as u,b as s}from"./chunk-C44QQJR4.js";import{a as K}from"./chunk-6YGTRKDT.js";import{e as S}from"./chunk-UR6MHSHU.js";var e=S(K(),1);var r=S(O(),1);function V(n,x,c){return{id:n,label:`${x} (${n})`,isActive:n===c}}function se({resolver:n,currentProjectId:x,env:c,onSelect:w,onCancel:C}){let[q,B]=(0,e.useState)([]),[D,l]=(0,e.useState)(!0),[H,m]=(0,e.useState)(!1),[J,g]=(0,e.useState)(!1),[Q,P]=(0,e.useState)(null),[d,p]=(0,e.useState)("list"),[v,R]=(0,e.useState)(""),[E,h]=(0,e.useState)(null),[I,X]=(0,e.useState)(""),b=(0,e.useRef)(!1),A=(0,e.useRef)(!0);(0,e.useEffect)(()=>{if(!n){P("Login first to browse projects"),l(!1);return}let o=new AbortController,a=I.trim();return A.current?l(!0):a&&g(!0),m(!0),P(null),(async()=>{try{let t=n.cached??await n.resolve();if(!t){P("Login first to browse projects"),l(!1),m(!1),g(!1);return}let L=T(c),F=new k(L.tmsBaseUrl,t.username,t.access_key),f=!0,N=0,G=a?{signal:o.signal,name:a,perPage:10}:{signal:o.signal,perPage:10};for await(let y of F.listProjectsStream(G)){if(f&&(l(!1),g(!1),A.current=!1,f=!1),y.totalLoaded===0&&y.done&&N===0&&!a){b.current=!0,p("naming"),m(!1);return}let M=y.projects.map(j=>V(j.project_id,j.name,x));B(N===0?M:j=>[...j,...M]),N+=y.projects.length,y.done&&m(!1)}f&&(l(!1),m(!1),g(!1))}catch(t){if(t?.name==="AbortError")return;P(t instanceof Error?t.message:String(t)),l(!1),m(!1),g(!1)}})(),()=>o.abort()},[n,x,c,I]);let Y=(0,e.useCallback)(o=>{let a=o.trim();if(!a){h("Name cannot be empty");return}h(null),p("creating"),(async()=>{try{if(!n)throw new Error("Not authenticated");let t=n.cached??await n.resolve();if(!t)throw new Error("Not authenticated");let L=T(c),f=await new k(L.tmsBaseUrl,t.username,t.access_key).createProject(a);w(f.id,f.name)}catch(t){h(t instanceof Error?t.message:String(t)),p("naming")}})()},[n,c,w]),z=(0,e.useCallback)(()=>{R(""),h(null),b.current?C():p("list")},[C]);return d==="naming"||d==="creating"?(0,r.jsxs)(u,{flexDirection:"column",borderStyle:"round",borderColor:i.orange,paddingX:2,paddingY:1,children:[(0,r.jsx)(s,{color:i.orange,bold:!0,children:"Create new project"}),b.current&&(0,r.jsx)(u,{marginTop:1,children:(0,r.jsx)(s,{color:i.dim,children:"No projects yet \u2014 let's create one."})}),(0,r.jsxs)(u,{marginTop:1,children:[(0,r.jsx)(s,{color:i.dim,children:"Name: "}),d==="naming"?(0,r.jsx)($,{value:v,onChange:o=>{R(o),E&&h(null)},onSubmit:Y,onCancel:z}):(0,r.jsx)(s,{children:v})]}),E&&(0,r.jsx)(u,{marginTop:1,children:(0,r.jsx)(s,{color:i.red,children:E})}),d==="creating"&&(0,r.jsx)(u,{marginTop:1,children:(0,r.jsx)(s,{color:i.dim,children:"Creating..."})}),d==="naming"&&(0,r.jsx)(_,{bindings:[{keys:"\u21B5",label:"create"}],escBackLabel:b.current?"cancel":"back"})]}):(0,r.jsx)(U,{title:"Projects",items:q,loading:D,loadingMore:H,searching:J,preserveSelectionById:!0,onSearch:X,error:Q,itemNoun:"projects",onTab:()=>{b.current=!1,p("naming")},extraHint:"tab to create new",onSelect:o=>{let a=o.label.replace(` (${o.id})`,"");w(o.id,a)},onCancel:C})}export{V as a,se as b};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as l}from"./chunk-
|
|
2
|
+
import{b as l}from"./chunk-D6GBOFK5.js";import{a as m}from"./chunk-EPE2ELDH.js";import{a as p}from"./chunk-RZ4F3BHX.js";import{a as f}from"./chunk-NWNG5UWD.js";import{a as c,b as s,h as a,x as u}from"./chunk-HYTBEPC2.js";var v="/public/skills/kane-cli";function C(){try{let n=new f().getDefaultEnv();if(n in u)return n}catch{}return"prod"}function k(){return`${m(C()).controllerBaseUrl}${v}`}import{readFileSync as S,writeFileSync as E,mkdirSync as g}from"fs";import{join as d}from"path";var h=d(s,"skill-check.json"),y=3600*1e3;function V(){try{let n=JSON.parse(S(h,"utf-8"));if(Date.now()-n.checkedAt<y)return n}catch{}return null}function A(n){try{g(s,{recursive:!0}),E(h,JSON.stringify({map:n,checkedAt:Date.now()}))}catch{}}function I(){for(let{dir:n}of a)try{let t=S(d(n,"VERSION"),"utf-8").trim();if(t)return t}catch{}return null}function M(n,t){let i=Object.keys(n.versions??{});if(i.length===0)return null;let o=i.slice().sort((r,e)=>l(r,e));for(let r of o){let e=n.versions[r]?.kaneCliMinVersion;if(!e||l(t,e)<=0)return r}return null}async function U(){try{let n=V()?.map;if(!n){let o=new AbortController,r=setTimeout(()=>o.abort(),5e3),e=await p(k(),{headers:{Accept:"application/json"},signal:o.signal});if(clearTimeout(r),!e.ok)return null;n=await e.json(),A(n)}let t=M(n,c);if(!t)return null;let i=I();return i===null?{current:null,latestCompatible:t}:l(i,t)>0?{current:i,latestCompatible:t}:null}catch{return null}}export{k as a,M as b,U as c};
|