@testmuai/kane-cli 0.7.0 → 0.7.1
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-D66CACLX.js +8 -0
- package/dist/{ChromeProfilePicker-DK2A3NYY.js → ChromeProfilePicker-4CDSPBWL.js} +1 -1
- package/dist/{CliFeedbackPrompt-D5QDOBE2.js → CliFeedbackPrompt-TLRVBA4E.js} +1 -1
- package/dist/{CliUploadProgress-AIZL7N6Z.js → CliUploadProgress-WGGFLUSF.js} +1 -1
- package/dist/{ConfigView-SDBCTYUU.js → ConfigView-DBANTBXC.js} +1 -1
- package/dist/EvidenceViewOffer-DNCQ3A6R.js +2 -0
- package/dist/{FolderPicker-IVBHPPMW.js → FolderPicker-W7RCIFEL.js} +1 -1
- package/dist/{HelpView-YYYX4RKI.js → HelpView-FBCX32U7.js} +1 -1
- package/dist/{InfoBox-MQV3XBT4.js → InfoBox-KK2ICVS4.js} +1 -1
- package/dist/{LinksBox-NCFNBUMW.js → LinksBox-KKRANMR3.js} +1 -1
- package/dist/{ProfilesView-6GXF6CP2.js → ProfilesView-DGPXSAQN.js} +1 -1
- package/dist/{ProjectPicker-W6XDGNDJ.js → ProjectPicker-ESQSL4TT.js} +1 -1
- package/dist/{SaveSessionPrompt-QF3P7ERS.js → SaveSessionPrompt-AQGP5W6E.js} +1 -1
- package/dist/SingleShotApp-SMCAIKCE.js +2 -0
- package/dist/{SummaryBox-4SZI4XSO.js → SummaryBox-BFZJW2KK.js} +1 -1
- package/dist/TestMdRunView-FMKZJ3A3.js +2 -0
- package/dist/{WhoamiView-N3HAJ3TN.js → WhoamiView-JABY3I5Q.js} +1 -1
- package/dist/{auth-RXNBQZI2.js → auth-76LVI6B5.js} +1 -1
- package/dist/bind-AACBTSAA.js +12 -0
- package/dist/bootstrap-CNOZ5VRB.js +2 -0
- package/dist/bridge-T4HL4TG7.js +2 -0
- package/dist/{changelog-MI3IPBJS.js → changelog-PSWPPOAF.js} +1 -1
- package/dist/chat-committer-4BQBOKI4.js +2 -0
- package/dist/chat-controller-NNTMKEPG.js +2 -0
- package/dist/{chunk-GQ3NCBYR.js → chunk-2KBD6JZX.js} +1 -1
- package/dist/chunk-2SREGETM.js +4 -0
- package/dist/chunk-2XGDWUJ5.js +2 -0
- package/dist/{chunk-DFDDUMG5.js → chunk-322JEJEH.js} +1 -1
- package/dist/{chunk-4BAMZSFU.js → chunk-323MLBYA.js} +1 -1
- package/dist/{chunk-VYMCE7UR.js → chunk-33QXD75Y.js} +2 -2
- package/dist/{chunk-K7USHLVZ.js → chunk-36OC3TFE.js} +1 -1
- package/dist/{chunk-4SJC64KQ.js → chunk-3FN5VJMV.js} +1 -1
- package/dist/chunk-3LWTUMDG.js +2 -0
- package/dist/chunk-3STZLM5J.js +4 -0
- package/dist/{chunk-4GLYNAK7.js → chunk-4OPQJ7PE.js} +1 -1
- package/dist/chunk-5JTUL6XL.js +2 -0
- package/dist/{chunk-FMR2KPSK.js → chunk-5KFS3GAZ.js} +1 -1
- package/dist/{chunk-EN7NW7DU.js → chunk-6HEGD6H2.js} +1 -1
- package/dist/{chunk-AV6E6WLY.js → chunk-6UJDOAYR.js} +2 -2
- package/dist/{chunk-5WE4DHXL.js → chunk-73C4PRYU.js} +1 -1
- package/dist/chunk-AAONIIQV.js +6 -0
- package/dist/chunk-AH7ZZIZY.js +2 -0
- package/dist/chunk-AM5S4KG4.js +6 -0
- package/dist/{chunk-J3EMJ7US.js → chunk-APAIWBIH.js} +1 -1
- package/dist/{chunk-XIXR63FI.js → chunk-BAL64WSI.js} +1 -1
- package/dist/chunk-BB2W35TW.js +2 -0
- package/dist/chunk-BQHKBOSF.js +11 -0
- package/dist/{chunk-B4LLKQTK.js → chunk-C4G7RVJ6.js} +1 -1
- package/dist/{chunk-YHQFYZJ5.js → chunk-CDQX6HGJ.js} +1 -1
- package/dist/{chunk-XLKRV2JH.js → chunk-CSQ46PJ7.js} +1 -1
- package/dist/chunk-DQ54MH7F.js +13 -0
- package/dist/{chunk-T7ZPMTGS.js → chunk-DXV6MBTD.js} +1 -1
- package/dist/chunk-DYW5C6II.js +2 -0
- package/dist/{chunk-WREVEATJ.js → chunk-F6ZOJXYU.js} +1 -1
- package/dist/chunk-GVIPTX6T.js +6 -0
- package/dist/chunk-GW5DWAXY.js +2 -0
- package/dist/chunk-HJERKSBK.js +349 -0
- package/dist/{chunk-AYY7RYMK.js → chunk-HPMS5KO6.js} +2 -2
- package/dist/{chunk-3RZ63RBO.js → chunk-IBNC444G.js} +1 -1
- package/dist/{chunk-WTXHOWUP.js → chunk-IQDWBTRJ.js} +1 -1
- package/dist/{chunk-5YHVK2EO.js → chunk-IXVOXJP6.js} +1 -1
- package/dist/{chunk-IQODWB32.js → chunk-JEUA4UWK.js} +1 -1
- package/dist/{chunk-CH3VWCRZ.js → chunk-JKTFTF24.js} +1 -1
- package/dist/{chunk-A2IQRVPR.js → chunk-JRMDGLLT.js} +1 -1
- package/dist/{chunk-RQYS3KGU.js → chunk-KNDSQ4PS.js} +1 -1
- package/dist/chunk-KRXSXQBU.js +12 -0
- package/dist/{chunk-NR23HZU4.js → chunk-KT6G7AF2.js} +1 -1
- package/dist/chunk-KVQOBPAZ.js +2 -0
- package/dist/chunk-L2TV4G56.js +4 -0
- package/dist/{chunk-6HYW5RFX.js → chunk-L4JIMNKW.js} +1 -1
- package/dist/{chunk-X5P2T7MA.js → chunk-L7VREJTG.js} +1 -1
- package/dist/{chunk-QQUZF2DZ.js → chunk-LQZ2BU7Q.js} +1 -1
- package/dist/{chunk-MTHCUBDF.js → chunk-LR5XO2KD.js} +1 -1
- package/dist/chunk-M7WQM4UA.js +4 -0
- package/dist/{chunk-KHQHVSZ6.js → chunk-NAC7SFBE.js} +1 -1
- package/dist/{chunk-CSGQIY7X.js → chunk-NAE7MBR2.js} +3 -3
- package/dist/{chunk-LGVHW4ZA.js → chunk-NBKQT7LJ.js} +1 -1
- package/dist/{chunk-RODHDQU3.js → chunk-NJPTOKW5.js} +1 -1
- package/dist/{chunk-44IWSV6L.js → chunk-NOCIMJSN.js} +1 -1
- package/dist/chunk-NRC2G4Y5.js +5 -0
- package/dist/{chunk-67SSEGDO.js → chunk-NRTHYROA.js} +1 -1
- package/dist/chunk-O56PUUNL.js +9 -0
- package/dist/chunk-OHRS3H7Z.js +5 -0
- package/dist/{chunk-FCHTL74E.js → chunk-PMHJRT3A.js} +1 -1
- package/dist/{chunk-GRB66C5S.js → chunk-QROUKGKU.js} +1 -1
- package/dist/{chunk-AIMINJVP.js → chunk-R2RGSO4B.js} +1 -1
- package/dist/{chunk-77WMTCUQ.js → chunk-RNSSM2BK.js} +1 -1
- package/dist/chunk-SE6WNCYU.js +4 -0
- package/dist/{chunk-KCBS57IF.js → chunk-SRDHPKJT.js} +1 -1
- package/dist/chunk-SWESH2J7.js +10 -0
- package/dist/chunk-SY3HLQMV.js +4 -0
- package/dist/chunk-T63R6QT4.js +4 -0
- package/dist/{chunk-SBZWFULF.js → chunk-UBFKZEX3.js} +1 -1
- package/dist/{chunk-E5PWL3BG.js → chunk-UI7KULSI.js} +1 -1
- package/dist/chunk-UPPEOQJQ.js +3 -0
- package/dist/{chunk-QBCS57EO.js → chunk-URQUQWGW.js} +3 -3
- package/dist/chunk-UX2B7L6K.js +2 -0
- package/dist/{chunk-K4VIM4RM.js → chunk-V36ATG7A.js} +2 -2
- package/dist/chunk-VGFTNLQQ.js +2 -0
- package/dist/{chunk-VJFFMOUA.js → chunk-W5DOU2DV.js} +1 -1
- package/dist/chunk-W6VD2XFO.js +19 -0
- package/dist/chunk-WJ5HDEVH.js +6 -0
- package/dist/chunk-WWNSD6FA.js +6 -0
- package/dist/{chunk-MV4UYTZT.js → chunk-X3ICV5M5.js} +1 -1
- package/dist/chunk-XDHZMCTA.js +4 -0
- package/dist/{chunk-BCH3JCND.js → chunk-XVDJ423L.js} +1 -1
- package/dist/chunk-ZLCZDAEX.js +6 -0
- package/dist/{chunk-HOOXUO3X.js → chunk-ZM5PVRJK.js} +1 -1
- package/dist/committer-2EJPVVCQ.js +2 -0
- package/dist/{config-5GOFF5F4.js → config-R3GF2FZA.js} +1 -1
- package/dist/cover-cmd-TXICWHUU.js +3 -0
- package/dist/{credentials-GXDXVMXW.js → credentials-XN4ROCQ3.js} +1 -1
- package/dist/design-committer-BQUWD6AC.js +2 -0
- package/dist/docx-convert-ZBVQO2LG.js +1 -1
- package/dist/dossier-QZV74XOS.js +3 -0
- package/dist/evidence-V23FPVXQ.js +2 -0
- package/dist/evolve-cmd-PZCPXDMR.js +2 -0
- package/dist/{exit-manager-MXUD7GQ7.js → exit-manager-HNFATGSM.js} +1 -1
- package/dist/explain-UE4IACQH.js +2 -0
- package/dist/{explain-cmd-NWIYH5MI.js → explain-cmd-RZW6QJYM.js} +1 -1
- package/dist/{explain-cmd-DBUTPZHA.js → explain-cmd-X7JZLSZZ.js} +1 -1
- package/dist/extract-bind-BFY7IRL4.js +10 -0
- package/dist/extract-cmd-U3MGK2LP.js +6 -0
- package/dist/feeder-XGTFV7TZ.js +2 -0
- package/dist/gaps-cmd-BWCRLLBK.js +3 -0
- package/dist/{gate-B6C6KLFA.js → gate-YHBPWEM5.js} +1 -1
- package/dist/{generate-headless-LZ4HRSQ4.js → generate-headless-BSTDLZZY.js} +2 -2
- package/dist/{headless-io-PWW6YKH2.js → headless-io-BL3TEAX5.js} +1 -1
- package/dist/index.js +61 -62
- package/dist/ingest-AL6CABJT.js +2 -0
- package/dist/ingest-cmd-O6OWWZT4.js +2 -0
- package/dist/interactive-bind-43HGDF5K.js +24 -0
- package/dist/lifecycle-cmd-D6TVTYRK.js +2 -0
- package/dist/list-cmd-XCAV2FKA.js +3 -0
- package/dist/{list-commands-WIVODSEL.js → list-commands-747UTUSS.js} +1 -1
- package/dist/locks-cmd-QAULI5LV.js +2 -0
- package/dist/logical-ids-4G4FAHNJ.js +2 -0
- package/dist/login-flow-CV76ENHV.js +2 -0
- package/dist/maintenance-cmd-ZRB4NTGG.js +2 -0
- package/dist/next-TRSKMBO5.js +2 -0
- package/dist/paths-JCYX6UWL.js +2 -0
- package/dist/{persist-recorded-session-J6Z2SCTT.js → persist-recorded-session-MDPWWUA7.js} +1 -1
- package/dist/phase-seed-52LRE3LH.js +2 -0
- package/dist/pipeline-LM5JAK7F.js +2 -0
- package/dist/readmodel-X7L7W2BA.js +2 -0
- package/dist/reconcile-cmd-DGCSDML6.js +2 -0
- package/dist/{recording-banner-IRFMIZSJ.js → recording-banner-TALO7PUR.js} +1 -1
- package/dist/records-5SVUXJBW.js +2 -0
- package/dist/{require-project-folder-XSBJGIVF.js → require-project-folder-R347LFDQ.js} +1 -1
- package/dist/revert-DXXYXJGN.js +2 -0
- package/dist/review-cmd-2QF5HTI7.js +4 -0
- package/dist/run-52UIBPXD.js +2 -0
- package/dist/run-VRVH4VO3.js +2 -0
- package/dist/{run-test-md-QCERS7FQ.js → run-test-md-DFNIGYB7.js} +2 -2
- package/dist/sessions-BLXZVK5U.js +2 -0
- package/dist/sessions-cmd-AQWLL5ZN.js +25 -0
- package/dist/{skill-installer-WAVEVCSG.js → skill-installer-ANXTCXQV.js} +1 -1
- package/dist/spawner-AH5FTUYU.js +2 -0
- package/dist/structured-answers-QHFGZPSS.js +5 -0
- package/dist/tcg-generate-WKCBBKI5.js +2 -0
- package/dist/testmd-actions-RPYG6TJG.js +2 -0
- package/dist/token-refresh-NIDUOTRM.js +2 -0
- package/dist/trust-gate-EX7R2P4Y.js +2 -0
- package/dist/{validate-basic-IJKKRQRU.js → validate-basic-O2DP2XJL.js} +1 -1
- package/dist/verdicts-TJH3O5UW.js +2 -0
- package/dist/{version-check-O5GYZYTP.js → version-check-RNR3JCQ5.js} +1 -1
- package/dist/{view-cmd-GQBFCPDL.js → view-cmd-YSEGA5PI.js} +1 -1
- package/dist/walk-session-HXW4OSA2.js +2 -0
- package/dist/with-telemetry-PNP6CAVM.js +2 -0
- package/package.json +6 -6
- package/dist/ChatSurface-PMEOJBZG.js +0 -8
- package/dist/EvidenceViewOffer-EOKJE2B6.js +0 -2
- package/dist/SingleShotApp-T673X7BS.js +0 -2
- package/dist/TestMdRunView-SNYEO6CS.js +0 -2
- package/dist/bind-NSGW5BBZ.js +0 -6
- package/dist/bootstrap-RPT3JOGD.js +0 -2
- package/dist/bridge-BTSWCJ3B.js +0 -2
- package/dist/chat-committer-OS7ULZMH.js +0 -2
- package/dist/chat-controller-QLORQWJZ.js +0 -2
- package/dist/chunk-3C5GMAM4.js +0 -2
- package/dist/chunk-3CJIMPQK.js +0 -14
- package/dist/chunk-4XSW6WZD.js +0 -5
- package/dist/chunk-6W6AIDLJ.js +0 -4
- package/dist/chunk-7E24OCGX.js +0 -2
- package/dist/chunk-7YPK6EDR.js +0 -4
- package/dist/chunk-DGIPQINV.js +0 -12
- package/dist/chunk-FHKDTM5L.js +0 -6
- package/dist/chunk-FRBYGSGJ.js +0 -4
- package/dist/chunk-GG43HSU2.js +0 -3
- package/dist/chunk-J2KSZUOO.js +0 -4
- package/dist/chunk-J44RN3FB.js +0 -2
- package/dist/chunk-JSF5JYZC.js +0 -9
- package/dist/chunk-MAO5BAQI.js +0 -347
- package/dist/chunk-N4LMQR7C.js +0 -6
- package/dist/chunk-RCTM7NGT.js +0 -2
- package/dist/chunk-RN4OSVTG.js +0 -6
- package/dist/chunk-UXPQRALY.js +0 -13
- package/dist/chunk-V3UE6RJP.js +0 -2
- package/dist/chunk-Y5RNCJAN.js +0 -19
- package/dist/chunk-Z2JSEL3I.js +0 -4
- package/dist/cover-cmd-SV3I23UM.js +0 -2
- package/dist/dossier-KJSJPWOW.js +0 -3
- package/dist/evidence-VDNZ3K23.js +0 -2
- package/dist/evolve-cmd-BLSVVW4I.js +0 -2
- package/dist/explain-EBVIUS2X.js +0 -2
- package/dist/extract-bind-3SWPBZX6.js +0 -8
- package/dist/extract-cmd-HEX7F4IS.js +0 -6
- package/dist/gaps-cmd-CKCHH3HQ.js +0 -2
- package/dist/ingest-FIIO67ZN.js +0 -2
- package/dist/ingest-cmd-KRPZVB7W.js +0 -7
- package/dist/interactive-bind-PTAZVCE7.js +0 -10
- package/dist/lifecycle-cmd-32LG364Q.js +0 -2
- package/dist/list-cmd-UTZ2PQUK.js +0 -3
- package/dist/logical-ids-I7B3VJEH.js +0 -2
- package/dist/login-flow-GX7CTVWN.js +0 -2
- package/dist/maintenance-cmd-BZAGSYGI.js +0 -2
- package/dist/pipeline-HT7FCEXA.js +0 -2
- package/dist/readmodel-S5RAQH3F.js +0 -2
- package/dist/reconcile-cmd-2VHBKFA5.js +0 -2
- package/dist/revert-RQJE56HF.js +0 -2
- package/dist/review-cmd-7LXGYHHQ.js +0 -4
- package/dist/run-4LTYFTF2.js +0 -2
- package/dist/run-YGJZ2SXX.js +0 -2
- package/dist/sessions-cmd-DTQYDZNT.js +0 -23
- package/dist/spawner-YNYB4Z7K.js +0 -2
- package/dist/tcg-generate-D35EMRMQ.js +0 -2
- package/dist/testmd-actions-NB5Z6QJ3.js +0 -2
- package/dist/token-refresh-OY3WLAKD.js +0 -2
- package/dist/walk-session-OPAEV4WR.js +0 -2
- /package/dist/{chunk-BC7UVJJB.js → chunk-CH273NAE.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{d as $e}from"./chunk-
|
|
2
|
+
import{d as $e}from"./chunk-IXVOXJP6.js";import{a as te}from"./chunk-R2RGSO4B.js";import{a as K}from"./chunk-5Y2G4NC7.js";import{a as Be}from"./chunk-APAIWBIH.js";import{a as ve}from"./chunk-73C4PRYU.js";import{b as ye}from"./chunk-DFS4RMVP.js";import{y as i}from"./chunk-C4G7RVJ6.js";import{a as k}from"./chunk-HCBYKLMW.js";import{a as s,b as o,i as Se,j as Te,k as ee}from"./chunk-C44QQJR4.js";import{a as V}from"./chunk-6YGTRKDT.js";import{e as R}from"./chunk-UR6MHSHU.js";var A=R(V(),1);var C=R(V(),1);function de(e){let t=e.flatMap(u=>[u,...u.children??[]]),n=t.filter(u=>u.status==="passed").length,l=t.filter(u=>u.status==="failed").length,a=t.filter(u=>u.status==="passed"||u.status==="failed").length;return{passed:n,failed:l,total:a}}function we(e){let t=$e(e.screenshotDispatcher,e.stepLogger,e.onReasoning,e.onStepComplete),[n,l]=(0,C.useState)(0),[a,u]=(0,C.useState)("idle"),c=(0,C.useRef)("idle"),v=(0,C.useRef)(0),S=(0,C.useRef)(!1),T=(0,C.useRef)(null),d=(0,C.useRef)(null),L=(0,C.useCallback)(h=>{c.current=h,u(h)},[]),O=(0,C.useCallback)(async h=>{let b=await e.getNextConfig(h);if(!b){L("done"),e.onAllComplete?.();return}let B=h?v.current+1:0;v.current=B,l(B),e.onStepStart?.(b,B),T.current=null,d.current=null,L("running"),await t.startRun(b,e.spawnOpts)},[t,e,L]);(0,C.useEffect)(()=>{S.current||(S.current=!0,O(null))},[]),(0,C.useEffect)(()=>{if(!t.lastRunEnd||t.lastRunEnd===T.current||c.current!=="running")return;T.current=t.lastRunEnd,c.current="transitioning",u("transitioning");let h=t.lastRunEnd,b=de(t.steps),B=t.bifurcationInfo,F={status:h.status==="passed"?"passed":"failed",duration_s:h.duration??0,reason:h.reason,runEnd:h,hadError:!1,stepsPassed:b.passed,stepsFailed:b.failed,stepsTotal:b.total,bifurcationFlows:B&&!B.isSingleFlow?B.flows:null,evidence:t.getEvidenceState()};if(!(e.onStepEnd?.(F,v.current)??!0)){L("done"),e.onAllComplete?.();return}O(F)},[t.lastRunEnd]),(0,C.useEffect)(()=>{if(!t.runError||t.runError===d.current||t.lastRunEnd||c.current!=="running")return;d.current=t.runError,c.current="transitioning",u("transitioning");let h=de(t.steps),b={status:"failed",duration_s:0,reason:t.runError,runEnd:null,hadError:!0,stepsPassed:h.passed,stepsFailed:h.failed,stepsTotal:h.total,bifurcationFlows:null,evidence:t.getEvidenceState()};if(!(e.onStepEnd?.(b,v.current)??!0)){L("done"),e.onAllComplete?.();return}O(b)},[t.runError,t.lastRunEnd]);let y=(0,C.useCallback)(()=>{t.cancelRun()},[t]);return{runner:t,currentStepIndex:n,phase:a,cancel:y}}var pe=R(V(),1);var ne=R(k(),1),Ee=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function ke({label:e,hasBifurcation:t=!1}){let[n,l]=(0,pe.useState)(0),[a,u]=(0,pe.useState)(0);K(()=>{l(v=>(v+1)%Ee.length)},80),K(()=>{u(v=>(v+1)%4)},400);let c=e??(t?"Planning approach":"Analyzing objective");return(0,ne.jsxs)(s,{marginLeft:1,children:[(0,ne.jsxs)(o,{color:i.orange,children:[Ee[n]," "]}),(0,ne.jsxs)(o,{color:i.dim,children:[c,".".repeat(a+1)]})]})}function Ie(e){if(!e.isRunning||e.replayInfo)return null;let t=e.bifurcationInfo;if(t&&!t.isSingleFlow){let n=e.steps.findIndex(a=>a.status==="running");return(n===-1?e.cmInitCounts.length===0:n>=e.cmInitCounts.length)?{label:n>0?`Planning flow ${n+1}`:void 0,hasBifurcation:!0}:null}return e.cmInitCounts.length>0||e.steps.some(n=>n.children?.length)?null:{hasBifurcation:!!t}}var I=R(V(),1);var Ce=R(V(),1);var re=R(k(),1),He="#ffc580",Ue="#ffd9a8",Le="#ffffff";function oe({text:e,active:t=!0}){let[n,l]=(0,Ce.useState)(0),a=4;if(K(()=>{l(c=>(c+1)%(e.length+a*2))},t?80:null),!t)return(0,re.jsx)(o,{color:Le,children:e});let u=e.split("").map((c,v)=>{let S=n-a,T=Math.abs(v-S-a/2),d;return T<=a/2?d=He:T<=a?d=Ue:d=Le,(0,re.jsx)(o,{color:d,children:c},v)});return(0,re.jsx)(o,{children:u})}var _=R(k(),1),We={starting:i.orange,running:i.orange,passed:i.green,failed:i.red,cancelled:i.dim,timed_out:i.orange};function ie({currentStep:e,maxSteps:t,elapsed:n,status:l}){let a=We[l]??i.orange,u=n<60?`${n.toFixed(1)}s`:`${Math.floor(n/60)}m ${Math.round(n%60)}s`;return(0,_.jsxs)(s,{marginLeft:3,children:[(0,_.jsx)(o,{color:i.dim,children:"Steps "}),(0,_.jsx)(o,{bold:!0,children:e}),(0,_.jsxs)(o,{color:i.dim,children:["/",t]}),(0,_.jsx)(o,{children:" "}),(0,_.jsx)(o,{color:i.dim,children:"Elapsed "}),(0,_.jsx)(o,{bold:!0,children:u}),(0,_.jsx)(o,{children:" "}),(0,_.jsx)(o,{color:i.dim,children:"Status "}),(0,_.jsx)(o,{bold:!0,color:a,children:l})]})}var Ve={click:"\u25CF",type:"\u229E",scroll:"\u2195",navigate:"\u2192",analyze:"\u25CE",assert:"\u25C8","if-else":"\u2442",select:"\u25BC",press_key:"\u21B5",wait:"\u2026",tool_call:"\u2299"};function Oe(e){return Ve[e]??"\u25CF"}var q=R(k(),1);function fe({steps:e,flows:t,cmInitCounts:n,renderStep:l}){return(0,q.jsxs)(s,{flexDirection:"column",marginLeft:2,paddingLeft:1,children:[(0,q.jsxs)(o,{color:i.dim,children:["\u2501\u2501 Bifurcated into ",t?.length??e.length," flows \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"]}),e.map((a,u)=>(0,q.jsxs)(s,{flexDirection:"column",marginTop:u>0?1:0,children:[(0,q.jsxs)(o,{color:i.orange,children:["Flow ",u+1,": ",t?.[u]??a.objective]}),n&&n[u]!=null&&(0,q.jsxs)(o,{color:i.dim,children:[" \u25AA Generated task with ",n[u]," checkpoints"]}),a.children&&a.children.length>0?a.children.map(c=>{let v=!!c.branchObjective,S=`f${u}-${c.childId??"p"}-${c.index}`;return v?(0,q.jsxs)(s,{flexDirection:"column",children:[l({...c,children:void 0},S),(c.children??[]).map(T=>(0,q.jsx)(s,{marginLeft:2,children:l(T,`${S}-${T.childId??"p"}-${T.index}`)},`${S}-${T.childId??"p"}-${T.index}`))]},`${S}-host`):l(c,S)}):a.status==="pending"&&(0,q.jsx)(o,{color:i.dim,children:" \u25CB Waiting..."})]},u))]})}var H=R(k(),1);function Pe({label:e,shimmer:t=!1}){return(0,H.jsxs)(s,{marginLeft:6,children:[(0,H.jsx)(te,{}),(0,H.jsx)(o,{children:" "}),t?(0,H.jsx)(oe,{text:e,active:!0}):(0,H.jsx)(o,{color:i.dim,children:e})]})}var De=R(V(),1);var me=R(k(),1);function ze(e,t){let n=[];for(let l of e.split(`
|
|
3
3
|
`)){if(l===""){n.push("");continue}let a="";for(let u of l.split(" ")){let c=u;for(;c.length>t;)a&&(n.push(a),a=""),n.push(c.slice(0,t)),c=c.slice(t);a===""?a=c:a.length+1+c.length<=t?a+=" "+c:(n.push(a),a=c)}n.push(a)}return n}function je({text:e,maxLines:t=3}){let{stdout:n}=ee(),l=Math.max(20,(n?.columns??80)-7),a=!e.trim(),[u,c]=(0,De.useState)(!0);K(()=>c(T=>!T),500);let v=(a?"Thinking\u2026":e)+(u?"\u258C":" "),S=ze(v,l).slice(-t);for(;S.length<t;)S.push("");return(0,me.jsx)(s,{borderStyle:"round",borderColor:i.muted,paddingX:1,marginLeft:3,flexDirection:"column",children:S.map((T,d)=>(0,me.jsx)(o,{color:a?i.dim:i.secondary,wrap:"truncate-end",children:T.length?T:" "},d))})}var U=R(k(),1);function se({activity:e,describe:t,describeVisible:n}){return(0,U.jsxs)(U.Fragment,{children:[e?(0,U.jsx)(Pe,{label:e.label,shimmer:e.shimmer}):null,n?(0,U.jsx)(je,{text:t??""}):null]})}var r=R(k(),1);function le(e){for(let t of e){if(t.children&&t.children.length>0){let n=le(t.children);if(n)return n}if(t.status==="running")return t}}function z(e){return e.status==="running"&&!e.branchObjective&&(!e.children||e.children.length===0)}function Fe(e){let t=[];for(let n of e)z(n)||(n.children&&n.children.length>0?t.push({...n,children:Fe(n.children)}):t.push(n));return t}function ge(e,t){if(!e)return null;let n=e.objective??"";return n.length>0&&!/^Step \d+$/.test(n)?{label:n+"\u2026",shimmer:!1}:{label:t?"Looking at the screen\u2026":"Deciding next action\u2026",shimmer:!0}}function P({step:e,indent:t=2}){let n=e.actionType?Oe(e.actionType):null,l=e.status==="running",a=e.status==="passed",u=e.status==="failed",c=e.status==="pending"||e.status==="stopped",{stdout:v}=ee(),S=v?.columns??80,T=Math.max(20,S-t-21),d=e.objective??"",L=d.length>T?d.slice(0,T-1)+"\u2026":d,O=(e.duration??0)*1e3,y=e.duration!=null?O<1e3?`${Math.round(O)}ms`:`${(O/1e3).toFixed(1)}s`:"";return(0,r.jsxs)(s,{flexDirection:"column",children:[(0,r.jsxs)(s,{marginLeft:t,children:[(0,r.jsx)(s,{width:4,children:(0,r.jsxs)(o,{color:i.muted,children:[String(e.index).padStart(2," ")," "]})}),(0,r.jsx)(s,{width:3,children:l?(0,r.jsx)(te,{}):a?(0,r.jsx)(o,{color:i.green,bold:!0,children:"\u2713"}):u?(0,r.jsx)(o,{color:i.red,bold:!0,children:"\u2717"}):(0,r.jsx)(o,{color:i.muted,children:"\u25CB"})}),(0,r.jsx)(s,{flexGrow:1,children:l?(0,r.jsx)(oe,{text:L,active:!0}):u?(0,r.jsx)(o,{color:i.red,children:L}):c?(0,r.jsx)(o,{color:i.dim,children:L}):(0,r.jsx)(o,{color:i.dim,children:L})}),(a||u)&&n?(0,r.jsx)(s,{width:3,marginLeft:1,children:(0,r.jsx)(o,{color:i.muted,children:n})}):(0,r.jsx)(s,{width:3,marginLeft:1}),(0,r.jsx)(s,{width:7,justifyContent:"flex-end",children:(0,r.jsx)(o,{color:i.dim,children:y})})]}),e.children&&e.children.length>0&&(0,r.jsx)(s,{flexDirection:"column",children:e.children.map((h,b)=>(0,r.jsx)(P,{step:h,indent:t+2},`child-${b}`))})]})}function Xe(e){return e.type==="cm_init"?(0,r.jsx)(s,{marginLeft:2,paddingLeft:1,children:(0,r.jsxs)(o,{color:i.dim,children:["\u25AA Generated task with ",e.count," checkpoints"]})}):(0,r.jsx)(s,{marginLeft:2,paddingLeft:1,children:(0,r.jsx)(P,{step:e.step})})}function _e({steps:e,bifurcated:t,flows:n,cmInitCounts:l,maxSteps:a=50,staticSteps:u=!1,onStepCommit:c,describe:v,describeVisible:S,describeRevealing:T}){let d=(0,I.useRef)(new Set),L=(0,I.useRef)(!1),O=(0,I.useRef)(new Set),y=(0,I.useRef)(!1),h=(0,I.useRef)(new Set),b=(0,I.useRef)(0);(0,I.useEffect)(()=>{e.length===0&&b.current>0&&(d.current.clear(),L.current=!1,O.current.clear(),y.current=!1,h.current.clear()),b.current=e.length},[e.length]);let B=e.flatMap(p=>[p,...p.children??[]]),F=B.some(p=>p.status==="running"),M=B.some(p=>p.status==="failed"),X=B.length===0||B.every(p=>p.status==="pending"),Y=B.filter(p=>p.status==="passed"||p.status==="failed").length,N;X?N="starting":F?N="running":M?N="failed":N="passed";let J=(0,I.useRef)(null),[ce,he]=(0,I.useState)(0);(0,I.useEffect)(()=>{B.length===0||X?(J.current=null,he(0)):F&&J.current==null&&(J.current=Date.now())},[F,X,B.length]),(0,I.useEffect)(()=>{if(!F)return;let p=setInterval(()=>{J.current!=null&&he((Date.now()-J.current)/1e3)},500);return()=>clearInterval(p)},[F]);let ae=(0,I.useRef)(new Set),[,xe]=(0,I.useState)(0),be=(0,I.useRef)(!1);(0,I.useEffect)(()=>{if(!c||!u||t)return;let p=[];!be.current&&l&&l[0]!=null&&(be.current=!0,l[0]>0&&p.push({key:"cm_init_0",type:"cm_init",count:l[0]}));for(let g of e)(g.status==="passed"||g.status==="failed")&&!ae.current.has(g.index)&&(ae.current.add(g.index),p.push({key:`step_${g.index}`,type:"step",step:{...g,children:g.children?[...g.children]:void 0}}));if(p.length>0){for(let g of p)c(Xe(g));xe(g=>g+1)}},[e,t,l,u,c]),(0,I.useEffect)(()=>{if(!c||u)return;let p=d.current.size;if(!t&&!y.current&&l&&l[0]!=null&&(y.current=!0,l[0]>0&&c((0,r.jsx)(s,{marginLeft:2,children:(0,r.jsxs)(o,{color:i.dim,children:["\u25A0 Generated task with ",l[0]," checkpoints"]})}))),t&&n&&!L.current&&(L.current=!0,c((0,r.jsx)(o,{color:i.purple,children:"\u2501\u2501 Bifurcated into "+n.length+" flows \u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"}))),t){let g=e.flatMap((x,f)=>{let m=x.children??[];return!O.current.has(f)&&m.length>0&&(O.current.add(f),c((0,r.jsx)(o,{color:i.purple,children:" Flow "+(f+1)+": "+(n?.[f]??"")})),l?.[f]!=null&&l[f]>0&&!h.current.has(f)&&(h.current.add(f),c((0,r.jsx)(s,{marginLeft:2,children:(0,r.jsxs)(o,{color:i.dim,children:[" \u25AA Generated task with ",l[f]," checkpoints"]})})))),l?.[f]!=null&&l[f]>0&&O.current.has(f)&&!h.current.has(f)&&(h.current.add(f),c((0,r.jsx)(s,{marginLeft:2,children:(0,r.jsxs)(o,{color:i.dim,children:[" \u25AA Generated task with ",l[f]," checkpoints"]})}))),m});for(let x of g){let f=`${x.childId??"p"}-${x.index}-${x.objective}`;if(!!x.branchObjective){d.current.has(f)||(d.current.add(f),c((0,r.jsx)(s,{marginLeft:2,children:(0,r.jsx)(P,{step:{...x,children:void 0}})})));for(let $ of x.children??[]){let w=`child-${x.childId??"p"}-${x.index}-${$.childId??"p"}-${$.index}-${$.objective}`;d.current.has(w)||($.status==="passed"||$.status==="failed"||$.status==="stopped")&&(d.current.add(w),c((0,r.jsx)(s,{marginLeft:4,children:(0,r.jsx)(P,{step:$})})))}continue}d.current.has(f)||(x.status==="passed"||x.status==="failed"||x.status==="stopped")&&(d.current.add(f),c((0,r.jsx)(s,{marginLeft:2,children:(0,r.jsx)(P,{step:x})})))}}else for(let g of e){let x=`${g.index}-${g.objective}`,f=!!g.branchObjective;f&&!d.current.has(x)&&(d.current.add(x),c((0,r.jsx)(s,{marginLeft:2,children:(0,r.jsx)(P,{step:{...g,children:void 0}})})));for(let m of g.children??[]){let $=`child-${g.index}-${m.childId??"p"}-${m.index}-${m.objective}`;d.current.has($)||(m.status==="passed"||m.status==="failed"||m.status==="stopped")&&(d.current.add($),c((0,r.jsx)(s,{marginLeft:4,children:(0,r.jsx)(P,{step:m})})))}!f&&!d.current.has(x)&&(g.status==="passed"||g.status==="failed"||g.status==="stopped")&&(d.current.add(x),c((0,r.jsx)(s,{marginLeft:2,children:(0,r.jsx)(P,{step:{...g,children:void 0}})})))}d.current.size>p&&xe(g=>g+1)},[e,c,t,n,l]);let G=[];if(u&&!t)for(let p of e)ae.current.has(p.index)||G.push(p);else if(c&&!u)if(t)for(let p of e){let g=p.children??[],x=[];for(let f of g){let m=`${f.childId??"p"}-${f.index}-${f.objective}`,$=d.current.has(m);if(f.branchObjective){let w=(f.children??[]).filter(Q=>{let ue=`child-${f.childId??"p"}-${f.index}-${Q.childId??"p"}-${Q.index}-${Q.objective}`;return!d.current.has(ue)});(!$||w.length>0)&&x.push({...f,children:w})}else $||x.push(f)}x.length>0&&G.push({...p,children:x})}else for(let p of e){let g=`${p.index}-${p.objective}`,x=d.current.has(g),f=(p.children??[]).filter(m=>{let $=`child-${p.index}-${m.childId??"p"}-${m.index}-${m.objective}`;return!d.current.has($)});x?f.length>0&&G.push({...p,children:f}):G.push({...p,children:f})}if(!u){let p=c?G:e,g=le(p),x=ge(g,T);return(0,r.jsxs)(s,{flexDirection:"column",children:[t?c?p.length>0?(0,r.jsx)(s,{flexDirection:"column",marginLeft:2,paddingLeft:1,children:p.map((m,$)=>(0,r.jsx)(s,{flexDirection:"column",marginTop:$>0?1:0,children:m.children&&m.children.length>0?m.children.map(w=>{if(z(w))return null;let Q=!!w.branchObjective,ue=`${w.childId??"p"}-${w.index}-${w.objective}`,Ke=d.current.has(ue);return Q?(0,r.jsxs)(s,{flexDirection:"column",children:[!Ke&&(0,r.jsx)(P,{step:{...w,children:void 0}}),(w.children??[]).filter(Z=>!z(Z)).map(Z=>(0,r.jsx)(s,{marginLeft:2,children:(0,r.jsx)(P,{step:Z})},`f${$}-${w.index}-${Z.childId??"p"}-${Z.index}`))]},`f${$}-host-${w.childId??"p"}-${w.index}`):(0,r.jsx)(P,{step:w},`f${$}-${w.childId??"p"}-${w.index}`)}):m.status==="pending"&&(0,r.jsx)(o,{color:i.dim,children:" \u25CB Waiting..."})},$))}):null:(0,r.jsx)(fe,{steps:e,flows:n,cmInitCounts:l,renderStep:(m,$)=>z(m)?null:(0,r.jsx)(P,{step:m},$)}):(0,r.jsxs)(s,{flexDirection:"column",marginLeft:2,paddingLeft:1,children:[!c&&l&&l[0]!=null&&(0,r.jsxs)(o,{color:i.dim,children:["\u25AA Generated task with ",l[0]," checkpoints"]}),p.filter(m=>!(m.status==="running"&&(!m.children||m.children.length===0))).map(m=>{let $=`${m.index}-${m.objective}`;return c&&d.current.has($)?(0,r.jsx)(s,{flexDirection:"column",children:(m.children??[]).filter(w=>!z(w)).map(w=>(0,r.jsx)(s,{marginLeft:2,children:(0,r.jsx)(P,{step:w})},`${w.childId??"p"}-${w.index}`))},`branch-children-${m.index}`):(0,r.jsx)(P,{step:m},m.index)})]}),(0,r.jsx)(se,{activity:x,describe:v,describeVisible:S}),B.length>0&&(0,r.jsx)(ie,{currentStep:Y,maxSteps:a,elapsed:ce,status:N})]})}if(t){let p=le(e),g=ge(p,T);return(0,r.jsxs)(s,{flexDirection:"column",children:[(0,r.jsx)(fe,{steps:e,flows:n,cmInitCounts:l,renderStep:(x,f)=>z(x)?null:(0,r.jsx)(P,{step:x},f)}),(0,r.jsx)(se,{activity:g,describe:v,describeVisible:S}),B.length>0&&(0,r.jsx)(ie,{currentStep:Y,maxSteps:a,elapsed:ce,status:N})]})}let Ne=le(G),Ge=ge(Ne,T),Re=Fe(G);return(0,r.jsxs)(s,{flexDirection:"column",children:[Re.length>0&&(0,r.jsx)(s,{flexDirection:"column",marginLeft:2,paddingLeft:1,children:Re.map(p=>(0,r.jsx)(P,{step:p},p.index))}),(0,r.jsx)(se,{activity:Ge,describe:v,describeVisible:S}),B.length>0&&(0,r.jsx)(ie,{currentStep:Y,maxSteps:a,elapsed:ce,status:N})]})}var W=R(k(),1);function Ae({runner:e,runKey:t,onStepCommit:n}){let l=Ie({isRunning:e.isRunning,bifurcationInfo:e.bifurcationInfo,steps:e.steps,cmInitCounts:e.cmInitCounts,replayInfo:e.replayInfo});return(0,W.jsxs)(W.Fragment,{children:[l&&(0,W.jsx)(ke,{label:l.label,hasBifurcation:l.hasBifurcation}),e.isRunning&&e.steps.length>0&&(0,W.jsx)(_e,{steps:e.steps,bifurcated:!!e.bifurcationInfo&&!e.bifurcationInfo.isSingleFlow,flows:e.bifurcationInfo?.flows,cmInitCounts:e.cmInitCounts,maxSteps:e.maxSteps,onStepCommit:n},`run-${t}`)]})}var D=R(k(),1),Ye=64;function Je(e){return e.split(`
|
|
4
4
|
`).map(t=>t.replace(/^[-–•]\s*/,"").trim()).filter(t=>t.length>0)}function qe({status:e,summary:t,duration:n,steps:l,stepsPassed:a,stepsFailed:u,reason:c,creditsConsumed:v}){let S=e==="passed",T=S?i.green:i.red,d=S?"\u2713":"\u2717",L=e.toUpperCase(),O=a??(S?l:Math.max(0,l-1)),y=u??(S?0:1),h=y>0?`${l} steps (${O} passed, ${y} failed)`:`${l} steps`,b=n<60?`${n.toFixed(1)}s`:`${Math.floor(n/60)}m ${Math.round(n%60)}s`,B=Je(t);return(0,D.jsx)(s,{flexDirection:"column",marginTop:1,children:(0,D.jsxs)(s,{borderStyle:"round",borderColor:T,flexDirection:"column",paddingX:2,paddingY:1,width:Ye+6,children:[(0,D.jsxs)(s,{flexDirection:"column",children:[(0,D.jsxs)(o,{bold:!0,color:T,children:[d," ",L]}),(0,D.jsxs)(o,{color:i.dim,wrap:"wrap",children:[h," \xB7 ",b,typeof v=="number"&&v>0?` \xB7 ${parseFloat(v.toFixed(4))} credits`:""]})]}),B.length>0&&(0,D.jsx)(s,{flexDirection:"column",marginTop:1,marginLeft:1,children:B.map((F,M)=>(0,D.jsxs)(s,{marginBottom:M<B.length-1?1:0,children:[(0,D.jsx)(o,{color:i.orange,children:"\u25CF "}),(0,D.jsx)(s,{flexShrink:1,children:(0,D.jsx)(o,{wrap:"wrap",children:F})})]},M))}),c&&!S&&(0,D.jsx)(s,{marginTop:1,children:(0,D.jsxs)(o,{color:i.red,wrap:"wrap",children:["Reason: ",c]})})]})})}var j=R(k(),1);function Me({message:e,code:t,remediation:n,docsUrl:l}){return(0,j.jsx)(ve,{title:"Error",variant:"error",children:(0,j.jsxs)(s,{flexDirection:"column",paddingY:1,children:[(0,j.jsxs)(o,{color:i.red,bold:!0,children:[" \u2717 ",e]}),t&&(0,j.jsxs)(s,{marginTop:0,marginLeft:5,children:[(0,j.jsx)(o,{color:i.muted,children:"Code: "}),(0,j.jsx)(o,{color:i.dim,children:t})]}),n&&(0,j.jsxs)(s,{flexDirection:"column",marginTop:1,marginLeft:5,children:[(0,j.jsx)(o,{color:i.green,bold:!0,children:"Fix:"}),(0,j.jsxs)(o,{color:i.orange,children:["$ ",n]})]}),l&&(0,j.jsxs)(s,{marginTop:1,marginLeft:5,children:[(0,j.jsx)(o,{color:i.muted,children:"Docs: "}),(0,j.jsx)(o,{color:i.orange,underline:!0,children:l})]})]})})}var E=R(k(),1);function un(e){let{exit:t}=Te(),{append:n}=ye(),l=(0,A.useRef)(!1);(0,A.useEffect)(()=>{l.current||(l.current=!0,n((0,E.jsx)(s,{flexDirection:"column",marginBottom:1,children:(0,E.jsxs)(s,{borderStyle:"round",borderColor:"#dc4e08",paddingX:2,children:[(0,E.jsx)(o,{color:"#ff9500",bold:!0,children:"KaneAI CLI"}),(0,E.jsx)(o,{color:i.dim,children:" \u2502 "}),(0,E.jsx)(o,{color:i.orange,children:e.topBanner.model}),(0,E.jsx)(o,{color:i.dim,children:" \u2502 "}),(0,E.jsx)(o,{color:i.dim,children:e.topBanner.auth})]})})),n((0,E.jsx)(Qe,{data:e.globalConfig})),e.priorAttemptRollup&&n((0,E.jsx)(o,{color:i.dim,children:` \u21B3 replayed ${e.priorAttemptRollup.startIdx}..${e.priorAttemptRollup.endIdx-1} (${e.priorAttemptRollup.count} steps, from prior attempt)`})))},[]);let a=(0,A.useRef)(null),u=(0,A.useCallback)(async y=>{let h=await e.getNextStep(y);return h?(a.current=h,h.config):(a.current=null,null)},[e]),c=(0,A.useCallback)((y,h)=>{let b=a.current;if(!b)return;let B=b.mode==="replay"?"cyan":"#dc4e08",F=b.modeReason?` (${b.modeReason})`:"",M=b.perStepOverrides?Object.entries(b.perStepOverrides):[];n((0,E.jsxs)(s,{flexDirection:"column",marginBottom:0,children:[(0,E.jsxs)(o,{children:[(0,E.jsxs)(o,{color:i.dim,children:[b.banner.stepLabel," "]}),(0,E.jsxs)(o,{color:B,children:["[",b.mode,"]"]}),(0,E.jsx)(o,{color:i.dim,children:F})]}),(0,E.jsx)(o,{color:i.dim,children:b.banner.objective}),M.length>0&&(0,E.jsxs)(o,{color:i.dim,children:["overrides: ",M.map(([X,Y])=>`${X}=${Y}`).join(", ")]})]}))},[n]),v=(0,A.useRef)(0),S=(0,A.useRef)(!1),T=(0,A.useCallback)((y,h)=>(y.hadError?n((0,E.jsx)(Me,{message:y.reason??"Runner error",code:"RUNNER_ERROR"})):n((0,E.jsx)(s,{flexDirection:"column",marginBottom:1,children:(0,E.jsx)(qe,{status:y.status,summary:y.runEnd?.summary??"",duration:y.runEnd?.duration??0,steps:y.stepsTotal,stepsPassed:y.stepsPassed,stepsFailed:y.stepsFailed,reason:y.runEnd?.reason,creditsConsumed:y.runEnd?.credits_consumed})})),e.onStepEnd?.(y,h)??!0),[n,e]),d=we({getNextConfig:u,onStepStart:c,onStepEnd:T,onAllComplete:()=>{e.onAllComplete(),e.exitOnComplete!==!1&&setImmediate(()=>t())},screenshotDispatcher:e.screenshotDispatcher,stepLogger:e.stepLogger,onReasoning:e.onReasoning,onStepComplete:e.onStepComplete,spawnOpts:e.spawnOpts}),L=250,O=5e3;return Se((y,h)=>{if(h.ctrl&&y==="c"){let b=Date.now(),B=b-v.current;if(B<L)return;S.current&&B<O?(d.cancel(),e.onCancel?.(),e.exitOnComplete!==!1&&setImmediate(()=>t())):(S.current=!0,n((0,E.jsx)(o,{color:"yellow",children:"press Ctrl+C again to cancel run"}))),v.current=b}}),(0,E.jsx)(s,{flexDirection:"column",children:d.phase!=="done"&&(0,E.jsx)(Ae,{runner:d.runner,runKey:d.currentStepIndex,onStepCommit:n})})}function Qe({data:e}){return(0,E.jsx)(Be,{title:"test.md run",titleColor:"#ff9500",borderColor:i.dim,rows:[{label:"source",value:e.source},{label:"steps",value:`${e.steps.total} (${e.steps.replay} replay, ${e.steps.author} author per walker)`},{label:"model",value:e.model},{label:"viewport",value:`${e.viewport.width} x ${e.viewport.height}`},{label:"chrome",value:e.chrome},{label:"session",value:e.session},{label:"variables",value:`${e.variables.count} (${e.variables.secrets} secret)`},{label:"flags",value:e.flags.length>0?e.flags.join(" "):"(none)"}]})}export{_e as a,ke as b,Ie as c,de as d,qe as e,Me as f,un as g};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as B}from"./chunk-S3DAAAE5.js";import{a as g}from"./chunk-
|
|
2
|
+
import{b as B}from"./chunk-S3DAAAE5.js";import{a as g}from"./chunk-APAIWBIH.js";import{y as s}from"./chunk-C4G7RVJ6.js";import{a as w}from"./chunk-HCBYKLMW.js";import{a as x,b as t,c as h,i as P,j as S}from"./chunk-C44QQJR4.js";import{a as C}from"./chunk-6YGTRKDT.js";import{e as T}from"./chunk-UR6MHSHU.js";var o=T(C(),1);var e=T(w(),1);function D({defaultName:i,onSubmit:c}){let[d,p]=(0,o.useState)("confirm"),[f,a]=(0,o.useState)(""),[m,u]=(0,o.useState)(null),l=(0,o.useMemo)(()=>f.trim()||i,[f,i]);return P((n,r)=>{if(d==="confirm"){if(n==="y"||n==="Y"){a(i),p("name");return}if(n==="n"||n==="N"||r.escape||r.ctrl&&n==="c"){c(null);return}if(r.return){c(i);return}return}if(r.return){if(!B(l)){u(`name "${l}" is invalid; allowed: letters, digits, underscore, hyphen`);return}c(l);return}if(r.escape||r.ctrl&&n==="c"){c(null);return}if(r.backspace||r.delete){a(v=>v.slice(0,-1)),u(null);return}n&&!r.ctrl&&!r.meta&&(a(v=>v+n),u(null))}),d==="confirm"?(0,e.jsx)(g,{title:"Save session?",titleColor:"#ff9500",rows:[{label:"name",value:(0,e.jsx)(t,{color:s.orange,children:i})}],footer:(0,e.jsxs)(x,{flexDirection:"column",children:[(0,e.jsx)(t,{color:s.dim,children:"enter \u2014 save with this name"}),(0,e.jsx)(t,{color:s.dim,children:"Y \u2014 edit name"}),(0,e.jsx)(t,{color:s.dim,children:"N/esc \u2014 discard session"})]})}):(0,e.jsx)(g,{title:"Save session?",titleColor:"#ff9500",rows:[{label:"name",value:(0,e.jsxs)(x,{children:[(0,e.jsx)(t,{color:s.orange,children:f}),(0,e.jsx)(t,{inverse:!0,children:" "})]})}],footer:(0,e.jsxs)(x,{flexDirection:"column",children:[m&&(0,e.jsx)(t,{color:s.red,children:m}),(0,e.jsx)(t,{color:s.dim,children:"enter \u2014 save \xB7 esc \u2014 discard"})]})})}function V(){return new Date().toISOString().slice(0,19).replace(/:/g,"-")}async function Y(i){return new Promise(c=>{function d(){let{exit:a}=S(),[m,u]=(0,o.useState)(!1);return(0,o.useEffect)(()=>{if(m){let l=setTimeout(()=>a(),50);return()=>clearTimeout(l)}},[m,a]),(0,e.jsx)(D,{defaultName:i,onSubmit:l=>{c(l),u(!0)}})}let{waitUntilExit:p,unmount:f}=h((0,e.jsx)(d,{}),{stdout:process.stderr,exitOnCtrlC:!1});p().then(()=>{try{f()}catch{}})})}export{D as a,V as b,Y as c};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
2
|
function l(r){let{isAgent:c,log:m}=r,a=r.stdout??process.stderr,s=r.stdin??process.stdin,p=t=>{c&&process.stdout.write(JSON.stringify(t)+`
|
|
3
|
-
`)};return{async runSteps(t){let{default:e}=await import("./react-QWOAB3TB.js"),{render:o}=await import("./build-JIKYOZUH.js"),{TestMdRunView:i}=await import("./TestMdRunView-
|
|
3
|
+
`)};return{async runSteps(t){let{default:e}=await import("./react-QWOAB3TB.js"),{render:o}=await import("./build-JIKYOZUH.js"),{TestMdRunView:i}=await import("./TestMdRunView-FMKZJ3A3.js"),{ScrollbackProvider:n}=await import("./scrollback-JLPJR25X.js"),{waitUntilExit:d}=o(e.createElement(n,null,e.createElement(i,t)),{stdout:a,stdin:s,exitOnCtrlC:!1});await d()},async runUpload(t,e){let{renderUploadProgress:o}=await import("./CliUploadProgress-WGGFLUSF.js");return await o(t,e)},async onSummary(t){try{let{default:e}=await import("./react-QWOAB3TB.js"),{render:o}=await import("./build-JIKYOZUH.js"),{AutoExitSummaryBox:i}=await import("./SummaryBox-BFZJW2KK.js"),{waitUntilExit:n}=o(e.createElement(i,{data:t}),{stdout:a,stdin:s});await n()}catch(e){m("warn","TEST_MD_SUMMARY_RENDER_FAILED","Summary box render failed",{error:String(e)})}},async onLinks(t){try{let{default:e}=await import("./react-QWOAB3TB.js"),{render:o}=await import("./build-JIKYOZUH.js"),{LinksBox:i}=await import("./LinksBox-KKRANMR3.js"),{waitUntilExit:n}=o(e.createElement(i,t),{stdout:a,stdin:s});await n()}catch(e){m("warn","TEST_MD_LINKS_RENDER_FAILED","LinksBox render failed",{error:String(e)})}},onLockState(t){p({type:"test_md_lock_state",...t})},onRetryAttempt(t){p({type:"test_md_retry_attempt",...t})},onAgentEvent(t){p(t)}}}export{l as a};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{d as Y}from"./chunk-BB2W35TW.js";import{a as L}from"./chunk-YKTYVJBN.js";import{a as T}from"./chunk-GW5DWAXY.js";import{k as z,l as W,m as $}from"./chunk-3STZLM5J.js";import{b as q,g as N}from"./chunk-M7WQM4UA.js";import{a as J,d as S,f as D}from"./chunk-WWNSD6FA.js";import{a as G,c as K}from"./chunk-C4G7RVJ6.js";var ae=3,ce=1e4,X=()=>new Promise(r=>setTimeout(r,25+Math.floor(Math.random()*50))),Q=r=>r==="design"||r==="maintain"?"session":r==="revert"||r==="shape-op"?"exclusive":"commit";function de(r,e,o){for(let s of r){for(let t of s.supersessions)if(t.kind==="node"&&(o.has(t.old)||t.new!==null&&o.has(t.new)))return!0;for(let t of s.nodes)if(t.label==="usecase"&&e.newBuCandidates.length>0||o.has(t.cid))return!0;if(s.design_generation&&e.generationTicket&&s.design_generation.uc_root===e.generationTicket.uc_root)return!0;for(let t of e.sourcePins)if(Object.prototype.hasOwnProperty.call(s.source_head_moves,t.source_id))return!0}return!1}async function Re(r,e,o){let{contextDir:s,locks:t,probe:a}=r,p=r.sid??r.rootSid,f=e.newBuCandidates.map(b=>({tempRef:b.tempRef,probeText:b.probeText})),k=0,g=!0,m={hits:[],degraded:!1,probeBasis:null};for(;;){g&&(f.length>0&&(m=await a.batchSimilar(T(s),f)),g=!1);let b=T(s),I={seq:b.lastSeq,hash:b.latestHash},P=new Map,E=[],v=[],_=new Set;for(let d of e.ucTargets){let c=$(b,d.ref);if(c===null)return{ok:!1,kind:"validation",errors:[{code:"UNKNOWN_REF",detail:`${d.ref}: names no living node (unknown or tombstoned chain)`}]};d.expectedTip!==void 0&&d.expectedTip!==c.cid&&P.set(d.expectedTip,c.cid),_.add(c.cid),v.push(D(b,d.ref).key)}(e.verb==="revert"||e.verb==="shape-op")&&(v.length=0,v.push({kind:"context",mode:"exclusive"}));let y;try{y=t.acquire(S(v),{hold:Q(e.verb),verb:e.verb})}catch(d){if(d instanceof J&&(d.code==="UC_HELD"||d.code==="CONTEXT_HELD"))return{ok:!1,kind:"contended",err:d};throw d}let B=!1,V=!1;try{let d=await t.withKeySerialized(v,async()=>{let c=T(s),O=I.hash===c.latestHash?[]:N(s,I.seq,I.hash).records;for(let n of e.ucTargets){let i=$(c,n.ref);if(i===null){E.push({kind:"supersession",ref:n.ref,detail:`${n.ref} was retired while this commit staged \u2014 re-ground or abandon`});continue}for(let l of _)c.superseded.has(l)&&c.tipOf(l)===i.cid&&P.set(l,i.cid)}for(let n of e.sourcePins){let i=c.heads.get(n.source_id);i!=null&&i!==n.source_cid&&E.push({kind:"pin",ref:n.source_id,detail:`source '${n.source_id}' moved (pinned ${n.source_cid.slice(0,19)}, head ${i.slice(0,19)}) \u2014 re-ground or abandon`})}if(E.length>0)return{ok:!1,kind:"drifted",asks:E};if(e.generationTicket){let n=Y(c,e.generationTicket);if(n!==null)return{ok:!1,kind:"validation",errors:[n]}}if(f.length>0&&O.length>0){let n=new Set(m.hits.map(u=>u.candidateCid)),i=a.recheckLocal(c,f,m.probeBasis,O);if(i.hits.some(u=>!n.has(u.candidateCid))||i.uncachedNewNodes.length>0)return V=!0,"restart"}if(e.verb!=="revert"&&e.verb!=="shape-op"){let n=S(e.ucTargets.map(u=>D(c,u.ref).key)),i=S(v);if(!(n.length===i.length&&n.every((u,h)=>JSON.stringify(u)===JSON.stringify(i[h]))))return"restart"}if(e.eventIds&&e.eventIds.length>0&&e.eventIds.every(n=>c.appliedEvents.has(n)))return{ok:!0,skipped:"already-applied"};let ie=Date.now()+ce,M=c.latestHash,w=c;for(;;){let n={graph:w,expectPrev:M,redirects:P,probeHits:m.hits,degradedProbe:m.degraded,sid:p,eventIds:(l,u)=>{if(e.eventIds&&e.eventIds.length>0)return e.eventIds.slice(0,u);let h=W(w,r.rootSid,l,u),j=r.reservedEventIds??[];if(j.length===0)return h;let R=`${r.rootSid}:${l}:`,A=0;for(let F of j){if(!F.startsWith(R))continue;let x=F.slice(R.length);/^\d+$/.test(x)&&(A=Math.max(A,Number.parseInt(x,10)))}if(A===0)return h;let U=Number.parseInt(h[0].slice(R.length),10);return!Number.isInteger(U)||U>A?h:Array.from({length:u},(F,x)=>z(r.rootSid,l,A+1+x))},assertLocks:()=>y.assertHeld()};if(r.revalidate){let l=r.revalidate(n);if(l.length>0)return{ok:!1,kind:"validation",errors:l}}y.assertHeld();let i;try{i=o(n)}catch(l){if(l instanceof q){let u=T(s),h=N(s,w.lastSeq,w.latestHash).records;if(!de(h,e,_)&&Date.now()<ie){await X(),w=u,M=u.latestHash;continue}return"restart"}throw l}return"errors"in i?{ok:!1,kind:"validation",errors:i.errors}:(Q(e.verb)==="session"&&y.touch(),{ok:!0,result:i.result,record:i.record})}});if(d==="restart")B=!0;else return d}finally{y.release()}if(B){if(k+=1,k>=ae)return{ok:!1,kind:"unsettled",attempts:k};V&&(g=!0),await X();continue}}}import{readFileSync as le,writeFileSync as ue,renameSync as fe,mkdirSync as pe}from"fs";import{dirname as me,join as he}from"path";var H=1,ge=720*60*1e3;function C(r){return he(K,"embeddings",`alias-${r}.json`)}function Z(r,e=Date.now()){return r!==null&&e-r.fetchedAt<ge}function ee(r){try{let e=JSON.parse(le(r,"utf-8"));return e.wrapperVersion!==H||typeof e.purposes!="object"||e.purposes===null?null:{wrapperVersion:H,writtenByVersion:String(e.writtenByVersion??""),purposes:e.purposes}}catch{return null}}function re(r,e,o=C(r)){let t=ee(o)?.purposes?.[e];return!t||typeof t.alias!="string"||typeof t.dims!="number"||typeof t.fetchedAt!="number"?null:{alias:t.alias,dims:t.dims,fetchedAt:t.fetchedAt}}function te(r,e,o,s=C(r)){try{pe(me(s),{recursive:!0});let a=ee(s)?.purposes??{};a[e]={alias:o.alias,dims:o.dims,fetchedAt:Date.now()};let p={wrapperVersion:H,writtenByVersion:G,purposes:a},f=`${s}.tmp`;ue(f,JSON.stringify(p,null,2)+`
|
|
3
|
+
`),fe(f,s)}catch(t){process.stderr.write(`[embed] Failed to save alias cache: ${t instanceof Error?t.message:String(t)}
|
|
4
|
+
`)}}function be(r){return r.TESTMUAI_ENV==="stage"?"stage":"prod"}function se(r){let e=r.env??process.env,o=r.auth?.TESTMUAI_BASIC_AUTH||e.TESTMUAI_BASIC_AUTH;if(o)return{authorization:`Basic ${o}`};let s=r.auth?.TESTMUAI_API_KEY||e.TESTMUAI_API_KEY;return s?{authorization:`Bearer ${s}`}:{}}async function Ve(r,e={}){let o=e.env??process.env,s=be(o),t=e.aliasCacheFile??C(s),a=e.now??Date.now,p=re(s,r,t);if(Z(p,a()))return{alias:p.alias,dims:p.dims};let k=`${L(o)}/assurance/embed/alias?purpose=${encodeURIComponent(r)}`,g=await(e.fetchImpl??fetch)(k,{method:"GET",headers:se(e)});if(!g.ok)throw new Error(`embed alias resolve failed: ${g.status}`);let m=await g.json();return te(s,r,{alias:m.alias,dims:m.dims},t),{alias:m.alias,dims:m.dims}}async function Oe(r,e,o={}){let s=o.env??process.env,t=L(s),a=await(o.fetchImpl??fetch)(`${t}/assurance/embed`,{method:"POST",headers:{...se(o),"content-type":"application/json"},body:JSON.stringify({purpose:r,input:e})});if(!a.ok)throw new Error(`embed failed: ${a.status}`);return await a.json()}import{readFileSync as ve,writeFileSync as ke,renameSync as ye,mkdirSync as we}from"fs";import{dirname as Ae,join as oe}from"path";function Te(r){return oe(r,"embeddings")}function Ee(r){let e=r.indexOf(":");return e>=0?r.slice(e+1):r}function ne(r,e,o){let s=Ee(o);return oe(Te(r),e,s.slice(0,2),`${s.slice(2)}.f32`)}function Ge(r,e,o){try{let s=ve(ne(r,e,o)),t=new Float32Array(Math.floor(s.length/4));for(let a=0;a<t.length;a++)t[a]=s.readFloatLE(a*4);return t}catch{return null}}function Ke(r,e,o,s){try{let t=ne(r,e,o);we(Ae(t),{recursive:!0});let a=Buffer.alloc(s.length*4);for(let f=0;f<s.length;f++)a.writeFloatLE(s[f],f*4);let p=`${t}.tmp`;ke(p,a),ye(p,t)}catch(t){process.stderr.write(`[embed] Failed to cache vector: ${t instanceof Error?t.message:String(t)}
|
|
5
|
+
`)}}export{Re as a,Ve as b,Oe as c,Ge as d,Ke as e};
|
|
@@ -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-73C4PRYU.js";import{y as u}from"./chunk-C4G7RVJ6.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(`
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{b as he,c as _e,d as J,e as Z}from"./chunk-NRC2G4Y5.js";import{a as ke}from"./chunk-BQHKBOSF.js";import{c as ye,e as we}from"./chunk-VGFTNLQQ.js";import{d as H}from"./chunk-JFAFKHDX.js";import{a as pe}from"./chunk-XDHZMCTA.js";import{a as L}from"./chunk-DNNZ353O.js";import{a as I}from"./chunk-GW5DWAXY.js";import{b as ge}from"./chunk-T63R6QT4.js";import{w as me}from"./chunk-3STZLM5J.js";import{a as ue}from"./chunk-L4JIMNKW.js";import{d as de,i as fe}from"./chunk-M7WQM4UA.js";import{d as ae,f as le}from"./chunk-5YPBPZUR.js";function bt(t){let e=process.env.HOME??"";return e&&t.startsWith(e)?`~${t.slice(e.length)}`:t}import{randomBytes as mt}from"crypto";function ee(t,e){let n=Math.min(t.length,e.length),s=0,r=0,c=0;for(let o=0;o<n;o++)s+=t[o]*e[o],r+=t[o]*t[o],c+=e[o]*e[o];return r===0||c===0?0:s/(Math.sqrt(r)*Math.sqrt(c))}function te(t,e,n){return n*t+(1-n)*e}var ne=.7;var ze=["get_node","get_edges","find_by_provenance","match_by_type","stale_nodes","search_similar","search_similar_batch","history"],Qe=["source_read","source_grep","source_list"],Ke=[...ze,...Qe],Se=50,Re=200,re=10,Ee=50,be=20,We=200,Xe=50;function V(t,e,n){let s=typeof t=="number"&&Number.isFinite(t)?Math.floor(t):e;return Math.max(1,Math.min(s,n))}function M(t,e){let n=t[e];if(typeof n!="string"||n.length===0)throw new b(`param "${e}" must be a non-empty string`);return n}function D(t,e){let n=t[e];if(n==null)return null;if(typeof n!="string")throw new b(`param "${e}" must be a string when present`);return n}var b=class extends Error{},xe=24,qe=10,Ye=10;function Je(t){let e=t.cursor;if(e==null)return 0;if(typeof e=="string"&&/^\d+$/.test(e))return Number.parseInt(e,10);throw new b(`BAD_CURSOR: cursor ${JSON.stringify(e)} is not a cursor this store minted`)}function Ae(t,e){let n=e.fields;if(!Array.isArray(n)||n.length===0)return t;let s=new Set(n.filter(r=>typeof r=="string"));return t.map(r=>Object.fromEntries(Object.entries(r).filter(([c])=>s.has(c))))}function se(t,e,n=Se,s=Re){let r=Je(e),c=V(e.limit,n,s),o=t.slice(r,r+c),d=r+o.length<t.length;return{rows:Ae(o,e),truncated:d,next_cursor:d?String(r+o.length):null}}var Ze=t=>t.cursor!=null||t.fields!=null;function z(t,e,n=Se){let s=se(t,e,n);return Ze(e)||s.truncated?{rows:s.rows,truncated:s.truncated,next_cursor:s.next_cursor}:s.rows}function oe(t,e){let n=t.getNode(e);return n?{cid:e,label:n.label,content:n.content,trust:t.trust.get(e)??null,freshness:t.stale(e)}:null}function ve(t){return new Set(t.toLowerCase().replace(/[^\p{L}\p{N}]+/gu," ").split(" ").filter(Boolean))}function Q(t,...e){let n=ve(t);if(n.size===0)return 0;let s=t.trim().toLowerCase(),r=0;for(let c of e){let o=ve(c);if(o.size===0)continue;let d=0;for(let u of n)o.has(u)&&d++;let m=n.size+o.size-d,f=m===0?0:d/m;s&&c.toLowerCase().includes(s)&&(f=Math.max(f,.9)),r=Math.max(r,f)}return r}function et(t,e){let n=M(e,"cid"),s=D(e,"type"),r=D(e,"direction")??"both";if(!["out","in","both"].includes(r))throw new b('param "direction" must be out|in|both');let c=[];(r==="out"||r==="both")&&c.push(...t.edgesFrom(n)),(r==="in"||r==="both")&&c.push(...t.edgesInto(n));let o=c.filter(d=>s==null||d.type===s);return z(o,e)}function tt(t,e){let n=M(e,"source_id"),s=t.heads.get(n)??null,r=[];for(let c of t.nodeLabel.keys()){let o=t.derivesInto(c).filter(m=>m.props.source_id===n).map(m=>({source_cid:m.props.source_cid,anchor:m.props.anchor??null}));if(o.length===0)continue;let d=oe(t,c);d&&r.push({...d,pins:o,pinned_to_head:s!=null&&o.some(m=>m.source_cid===s)})}return z(r,e,Re)}function nt(t,e){let n=M(e,"label"),s=D(e,"trust"),r=D(e,"freshness"),c=[];for(let{cid:o}of t.byLabel(n)){let d=oe(t,o);d&&(s!=null&&d.trust!==s||r!=null&&d.freshness!==r||c.push(d))}return z(c,e)}function rt(t,e={}){let n=D(e,"label"),s=t.staleList().map(({cid:r,state:c})=>{let o=t.getNode(r);return{cid:r,state:c,label:o?.label??null,title:o?.content.title??null}}).filter(r=>n==null||r.label===n);return z(s,e)}function st(t,e,n){let s=e.extracted,r=D(e,"kind"),c=[];for(let f of[...t.heads.keys()].sort()){let u=t.heads.get(f);if(typeof u!="string")continue;let h=t.mediaOf(u).format;if(r!=null&&h!==r)continue;let k=t.extractedSourceCids.has(u);if(typeof s=="boolean"&&k!==s)continue;let R=0;if(h!=="image"){let _=L(n,t,u);_&&(R=_.toString("utf8").replace(/\n$/,"").split(`
|
|
3
|
+
`).length)}let l=t.extractionCompleteness.get(f);c.push({source_id:f,kind:h,lines:R,head_cid:u,extracted:k,last_extract_at:l?.at??null,extractor_version:l?.extractor_version??null})}let{rows:o,truncated:d,next_cursor:m}=se(c,e);return{sources:o,truncated:d,next_cursor:m}}function ot(t,e,n){let s=M(e,"ref"),r=t.resolve(s);if(!r)throw new b(`UNKNOWN_REF: ${s} names nothing in the graph`);let c=r.tip,o=new Map;for(let[p,w]of t.superseded)typeof w=="string"&&w!==p&&o.set(w,[...o.get(w)??[],p]);let d=[],m=[c],f=new Set;for(;m.length>0;){let p=m.pop();f.has(p)||(f.add(p),d.push(p),m.push(...o.get(p)??[]))}let{records:u}=de(n),g=new Map,h=new Map;for(let p of u){for(let w of p.nodes)g.has(w.cid)||g.set(w.cid,p.ts);for(let w of p.supersessions)w.kind==="node"&&h.set(w.old,{by_cid:w.new,reason:w.reason})}let k=d.map(p=>({cid:p,minted_at:g.get(p)??null,superseded_by:h.get(p)?.by_cid??null,reason:h.get(p)?.reason??null,change_note:null})),{rows:R,truncated:l,next_cursor:_}=se(k,e,Ye);return{root_logical_id:t.displayNameOf(c),live_tip:t.superseded.has(c)?null:c,truncated:l,next_cursor:_,chain:R}}function $e(t){let e=t.queries;if(!Array.isArray(e)||e.length<1||e.length>xe)throw new b(`param "queries" must be 1..${xe} entries`);return e.map((n,s)=>{if(typeof n!="object"||n===null)throw new b(`queries[${s}] must be an object`);let r=n;if(typeof r.qid!="string"||r.qid.length===0)throw new b(`queries[${s}].qid must be a non-empty string`);if(typeof r.text!="string"||r.text.length===0)throw new b(`queries[${s}].text must be a non-empty string`);return{qid:r.qid,text:r.text,topK:V(r.top_k,re,qe)}})}function De(t){let e=[];for(let{cid:n,content:s}of t.byLabel("usecase"))t.superseded.has(n)||e.push({cid:n,title:String(s.title??""),summary:String(s.summary??""),description:String(s.description??"")});return e}function Me(t,e,n){let s=De(t);return e.map(r=>{let c=[];for(let o of s){let d=n(r,o);d<=0||c.push({cid:o.cid,logical_id:t.displayNameOf(o.cid),title:o.title,score:Math.round(d*1e3)/1e3,trust:t.trust.get(o.cid)??null,superseded:!1})}return c.sort((o,d)=>d.score-o.score||o.cid.localeCompare(d.cid)),{qid:r.qid,truncated:c.length>r.topK,matches:c.slice(0,r.topK)}})}function Ce(t,e){let n=$e(e);return{results:Me(t,n,(s,r)=>Q(s.text,r.title,r.summary,r.description)),scorer:"lexical_fallback"}}function it(t,e){let n=M(e,"text"),s=D(e,"label")??"usecase",r=V(e.k,re,Ee),c=[];for(let{cid:o,content:d}of t.byLabel(s)){let m=String(d.title??""),f=String(d.summary??""),u=Q(n,m,f);u<=0||c.push({cid:o,title:m,summary:f,score:Math.round(u*1e3)/1e3,trust:t.trust.get(o)??null,freshness:t.stale(o)})}return c.sort((o,d)=>d.score-o.score||o.cid.localeCompare(d.cid)),c.slice(0,r)}function Te(t,e,n){let s=t.heads.get(n);if(typeof s!="string"){let c=[...t.heads.keys()].sort().join(", ");throw new b(`unknown source_id "${n}" \u2014 known: ${c||"(none)"}`)}if(t.mediaOf(s).format==="image")throw new b(`source "${n}" is an image \u2014 no line window (cite img#whole)`);let r=L(e,t,s);if(r==null)throw new b(`source "${n}" blob is missing from the store`);return{head:s,lines:r.toString("utf8").replace(/\n$/,"").split(`
|
|
4
|
+
`)}}function ct(t,e,n){return t.slice(e-1,n).map((s,r)=>`${String(e+r).padStart(4,"0")}| ${s}`).join(`
|
|
5
|
+
`)}function at(t,e,n){let s=M(e,"source_id"),r=D(e,"anchor"),c=e.line_range;if(r!=null&&c!=null)throw new b("give anchor OR line_range, not both");let{head:o,lines:d}=Te(t,n,s),m=d.length,f,u;if(r!=null){let g=/^L(\d+)-L(\d+)$/.exec(r);if(!g)throw new b(`anchor "${r}" is not L<a>-L<b>`);let h=Number(g[1]),k=Number(g[2]);if(h<1||k<h||k>m)throw new b(`anchor "${r}" does not resolve (source has ${m} lines)`);f=Math.max(1,h-be),u=Math.min(m,k+be)}else if(c!=null){if(!Array.isArray(c)||c.length!==2||!c.every(k=>Number.isInteger(k)))throw new b('param "line_range" must be [from_line, to_line]');let[g,h]=c;if(g<1||h<g)throw new b('param "line_range" must be 1-based with from \u2264 to');if(g>m)throw new b(`line_range starts past the end (source has ${m} lines)`);f=g,u=Math.min(h,m)}else f=1,u=m;return u=Math.min(u,f+We-1),{window:ct(d,f,u),from_line:f,to_line:u,source_cid:o,total_lines:m}}function lt(t,e,n){let s=M(e,"pattern"),r=D(e,"source_id"),c;try{c=new RegExp(s,"u")}catch(f){throw new b(`invalid pattern: ${f instanceof Error?f.message:String(f)}`)}let o=r!=null?[r]:[...t.heads.keys()].sort(),d=[],m=!1;e:for(let f of o){if(r==null){let g=t.heads.get(f);if(typeof g!="string"||t.mediaOf(g).format==="image")continue}let{lines:u}=Te(t,n,f);for(let g=0;g<u.length;g++)if(c.test(u[g])){if(d.length>=Xe){m=!0;break e}d.push({source_id:f,line:g+1,text:u[g]})}}return{matches:d,truncated:m}}function ut(t,e,n,s){try{switch(e){case"get_node":{let r=oe(t,M(n,"cid"));return r==null?{ok:!0,result:null}:{ok:!0,result:Ae([r],n)[0]}}case"get_edges":return{ok:!0,result:et(t,n)};case"find_by_provenance":return{ok:!0,result:tt(t,n)};case"match_by_type":return{ok:!0,result:nt(t,n)};case"stale_nodes":return{ok:!0,result:rt(t,n)};case"search_similar":return{ok:!0,result:it(t,n)};case"search_similar_batch":return{ok:!0,result:Ce(t,n)};case"history":{if(s==null)throw new b("history unavailable (no context store)");return{ok:!0,result:ot(t,n,s)}}case"source_list":{if(s==null)throw new b("source roster unavailable (no context store)");return{ok:!0,result:st(t,n,s)}}case"source_read":case"source_grep":{if(s==null)throw new b("source text unavailable (no context store)");return{ok:!0,result:(e==="source_read"?at:lt)(t,n,s)}}default:return{ok:!1,error:`unknown method: ${e} \u2014 available: ${Ke.join(", ")}`}}}catch(r){return r instanceof b?{ok:!1,error:`${e}: ${r.message}`}:{ok:!1,error:`${e}: graph read failed: ${r instanceof Error?r.message:String(r)}`}}}var U="assurance.sim";function dt(t){return[t.title,t.summary,t.description].filter(Boolean).join(`
|
|
6
|
+
`)}async function ft(t,e,n){let s=M(e,"text"),r=D(e,"label")??"usecase",c=V(e.k,re,Ee),o=[];for(let{cid:m,content:f}of t.byLabel(r)){if(t.superseded.has(m))continue;let u=String(f.title??""),g=String(f.summary??""),h=String(f.description??"");o.push({cid:m,title:u,summary:g,description:h,lex:Q(s,u,g,h)})}let d=m=>{let f=[];for(let u of o){let g=m(u);g.score<=0||f.push({cid:u.cid,title:u.title,summary:u.summary,score:Math.round(g.score*1e3)/1e3,trust:t.trust.get(u.cid)??null,freshness:t.stale(u.cid),...g.dense!==void 0?{dense_score:Math.round(g.dense*1e3)/1e3,lexical_score:Math.round(u.lex*1e3)/1e3}:{}})}return f.sort((u,g)=>g.score-u.score||u.cid.localeCompare(g.cid)),f.slice(0,c)};try{let m=n.readVector??J,f=n.writeVector??Z,u=n.alpha??ne,{alias:g}=await n.resolveAlias(U),h=new Map,k=[],R=[];for(let p of o){let w=m(n.contextDir,g,p.cid);w?h.set(p.cid,w):(k.push(p.cid),R.push(dt(p)))}let{vectors:l}=await n.embed(U,[s,...R]),_=Float32Array.from(l[0]);for(let p=0;p<k.length;p++){let w=Float32Array.from(l[p+1]);h.set(k[p],w),f(n.contextDir,g,k[p],w)}return d(p=>{let w=h.get(p.cid),$=w?ee(_,w):0;return{score:te($,p.lex,u),dense:$}})}catch{return n.onDegraded?.(),d(m=>({score:m.lex}))}}async function gt(t,e,n){let s=$e(e),r=De(t);try{let c=n.readVector??J,o=n.writeVector??Z,d=n.alpha??ne,{alias:m}=await n.resolveAlias(U),f=new Map,u=[],g=[];for(let l of r){let _=c(n.contextDir,m,l.cid);_?f.set(l.cid,_):(u.push(l.cid),g.push([l.title,l.summary,l.description].filter(Boolean).join(`
|
|
7
|
+
`)))}let{vectors:h}=await n.embed(U,[...s.map(l=>l.text),...g]),k=s.map((l,_)=>Float32Array.from(h[_]));for(let l=0;l<u.length;l++){let _=Float32Array.from(h[s.length+l]);f.set(u[l],_),o(n.contextDir,m,u[l],_)}let R=new Map(s.map((l,_)=>[l.qid,_]));return{results:Me(t,s,(l,_)=>{let p=f.get(_.cid),w=p?ee(k[R.get(l.qid)],p):0;return te(w,Q(l.text,_.title,_.summary,_.description),d)}),scorer:"embedding"}}catch{return n.onDegraded?.(),Ce(t,e)}}async function Ie(t,e,n,s){if((e==="search_similar"||e==="search_similar_batch")&&s)try{return{ok:!0,result:e==="search_similar"?await ft(t,n,s):await gt(t,n,s)}}catch(r){return r instanceof b?{ok:!1,error:`${e}: ${r.message}`}:{ok:!1,error:`${e}: graph read failed: ${r instanceof Error?r.message:String(r)}`}}return ut(t,e,n,s?.contextDir)}var pt=2,Ne=10,ht=2;function Ge(t,e,n){return t.map(s=>{let r=e.find(c=>c.id===s.id);if(r&&r.selected_index!=null&&r.selected_index>=0&&r.selected_index<s.options.length){let o=(s.allow_free_text||s.options[r.selected_index]?.input===!0)&&r.free_text!=null?r.free_text:null;return{id:s.id,resolution:"answered",selected_index:r.selected_index,free_text:o}}return r&&r.free_text!=null&&s.allow_free_text?{id:s.id,resolution:"answered",selected_index:-1,free_text:r.free_text}:n.explicitAcceptDefaults?{id:s.id,resolution:"assumed-default",selected_index:s.recommended_index,flagged:!0}:{id:s.id,resolution:"deferred",selected_index:null}})}async function Nt(t,e,n,s,r=()=>{},c){let o=(i,a)=>r(i,a,t.session_id),d=(process.env.ASSURANCE_LOG_LEVEL??"info").toLowerCase()==="debug",m={contextDir:e.contextDir,resolveAlias:i=>he(i,{env:process.env,auth:e.auth}),embed:(i,a)=>_e(i,a,{env:process.env,auth:e.auth}),...e.onEmbedDegraded?{onDegraded:e.onEmbedDegraded}:{}},f=0,u=e.agent(t,{auth:e.auth,onWarn:i=>{o("warn",i),e.out(i)},onStderr:i=>o("agent_stderr",i)}),g=null,h=null,k,R,l=u.send.bind(u),_=new Set(["user_response","user_message","session_complete"]),p=null,w=!1,$=[],v=i=>{if(i.type==="session_complete"&&(w=!0),p!==null&&_.has(i.type)){$.push(i),o("belt_withheld",{type:i.type,unacked_seq:p});return}l(i)};if(t.checkpoints&&!e.checkpoint)throw u.kill(),new Error("run_config.checkpoints is on but DriverDeps.checkpoint sink is absent (programming error)");let C=!1,K=e.pendingDeferral??null,O=!1,je=e.chat?.attachSender?.(i=>v(i));e.initialMessage&&(v({type:"user_message",message_id:`msg-${t.session_id}-${mt(3).toString("hex")}`,text:e.initialMessage}),o("user_message_sent",{chars:e.initialMessage.length,...d?{text:e.initialMessage}:{}}),e.emit?.({type:"message_sent",sid:t.session_id,chars:e.initialMessage.length}),e.chat?.note(`delivered your message to the agent: "${e.initialMessage}"`));let W,F=0,X=0,B=0,q,E=ye(),N=e.progress??e.out;try{for await(let i of u.events){try{e.chat?.onAgentEvent(i)}catch(a){o("chat_mirror_error",{event_type:i.type,message:a instanceof Error?a.message:String(a)})}if(i.type==="reasoning_delta"?(f+=i.text.length,process.env.KANE_TRACE_REASONING&&o("reasoning_delta",i.text)):i.type==="state_checkpoint"&&!process.env.KANE_TRACE_REASONING?o("state_checkpoint",{seq:i.seq,items:i.delta_items.length,bytes:JSON.stringify(i.delta_items).length}):o(i.type,i),i.type==="reasoning_done"&&o("reasoning_chars",f),i.type==="progress")N(`\u2026 ${i.stage}${i.n?` #${i.n}`:""}`),e.emit?.({type:"agent_activity",kind:"progress",label:`${i.stage}${i.n?` #${i.n}`:""}`});else if(i.type==="reasoning_delta"||i.type==="reasoning_done"||i.type==="tool_activity"||i.type==="decision_activity"){e.onStreamEvent?.(i);let a=E;if(E=we(E,i),E===a)continue;i.type==="reasoning_delta"?E.liveThinking===i.text&&N("\u2237 thinking\u2026"):i.type==="reasoning_done"?i.present&&(N(`thought for ${(i.took_ms/1e3).toFixed(1)}s`),e.emit?.({type:"agent_activity",kind:"thinking_done",label:`thought for ${(i.took_ms/1e3).toFixed(1)}s`})):i.type==="tool_activity"?i.status!=="done"&&(N(E.activity[E.activity.length-1].label),e.emit?.({type:"agent_activity",kind:"tool",label:E.activity[E.activity.length-1].label})):(N(`\xB7 ${E.activity[E.activity.length-1].label}`),e.emit?.({type:"agent_activity",kind:"decision",label:E.activity[E.activity.length-1].label}))}else if(i.type==="usage")q=i.total_credits,e.emit?.({type:"usage",credits:i.credits,total_credits:i.total_credits});else if(i.type==="graph_query"){let a=await Ie(e.graphSlot?.current??s,i.method,i.params??{},m),S=a.ok?{type:"graph_result",id:i.id,ok:!0,result:a.result}:{type:"graph_result",id:i.id,ok:!1,error:a.error};o("graph_result",d?{id:i.id,method:i.method,ok:a.ok,result:a.ok?a.result:a.error}:{id:i.id,method:i.method,ok:a.ok}),v(S)}else if(i.type==="ingest_request")if(e.ingest){let a;try{a=await e.ingest({id:i.id,ref:i.ref,purpose:i.purpose??null})}catch(T){o("ingest_executor_threw",{id:i.id,error:T instanceof Error?T.message:String(T)}),a={ok:!1,error:{code:"INGEST_FAILED",message:"the landing failed \u2014 see the trace for detail"}}}let S=a.ok?{type:"ingest_result",id:i.id,ok:!0,result:a.result}:{type:"ingest_result",id:i.id,ok:!1,error:a.error};o("ingest_result",a.ok?{id:i.id,ok:!0,source_id:a.result.source_id}:{id:i.id,ok:!1,code:a.error.code}),v(S)}else{let a={type:"ingest_result",id:i.id,ok:!1,error:{code:"INGEST_UNAVAILABLE",message:"this session has no ingest executor"}};o("ingest_result",{id:i.id,ok:!1,code:a.error.code}),v(a)}else if(i.type==="state_checkpoint"){if(!e.checkpoint)throw new Error("state_checkpoint arrived with no checkpoint sink (programming error)");p=i.seq;try{for(e.checkpoint.persist(i),p=null,l({type:"checkpoint_ack",seq:i.seq}),o("checkpoint_acked",{seq:i.seq,at:i.at});$.length>0&&p===null;)v($.shift())}catch(a){let S=a instanceof Error?a.message:String(a);C||(C=!0,e.out("warning: couldn't save the session checkpoint \u2014 pausing so no work is lost")),o("checkpoint_persist_failed",{seq:i.seq,message:S}),l({type:"pause"})}}else if(i.type==="session_paused")O=!0,R=i;else if(i.type==="done")O=!0;else if(i.type==="ask_user"){i.text&&(e.chat?e.chat.ledger({kind:"agent",text:i.text}):e.out(i.text));let a=t.mode;if(K){let y=K;K=null,e.emit?.({type:"ask_deferred",source_id:y.ingested.source_id,cid:y.ingested.cid,questions:i.questions.length}),o("ask_deferred",{source_id:y.ingested.source_id,questions:i.questions.length}),v({type:"user_response",answers:[],deferral:{deferred:!0,ingested:y.ingested}});continue}if(a!=="interactive"){let y=i.questions.filter(x=>x.risk==="high");if(a==="ci"&&y.length>0){W=y,u.kill();break}if(a==="agent"&&y.length>0){o("pause_requested",{high:y.map(x=>x.id)}),v({type:"pause"});continue}let A=Ge(i.questions,[],{explicitAcceptDefaults:!0});F+=A.length;for(let x of A)o("assumed_default",{id:x.id,resolution:x.resolution}),e.emit?.({type:"assumed_default",id:x.id,selected_index:x.selected_index,risk:i.questions.find(P=>P.id===x.id)?.risk});let j={type:"user_response",answers:A.map(x=>({id:x.id,selected_index:x.resolution==="deferred"?null:x.selected_index,free_text:null}))};v(j);continue}let S=await e.ask(i.questions);if(!Array.isArray(S)){v({type:"user_response",answers:[],deferral:S});continue}let T=S,He=Ge(i.questions,T,{explicitAcceptDefaults:!1}),Ue={type:"user_response",answers:i.questions.map(y=>{let A=T.find(x=>x.id===y.id);if(A?.free_text!=null){let x=A.selected_index!=null&&A.selected_index>=0&&A.selected_index<y.options.length?A.selected_index:null;if(x!=null){let G=y.allow_free_text||y.options[x]?.input===!0;return G&&A.free_text!=null&&n.set(y.id,(n.get(y.id)??0)+1),{id:y.id,selected_index:x,free_text:G?A.free_text:null}}let P=n.get(y.id)??0;if(!y.allow_free_text||P>=pt){let G=y.options[y.recommended_index]?.label??"recommended option";if(F+=1,e.emit?.({type:"assumed_default",id:y.id,selected_index:y.recommended_index,risk:y.risk}),e.chat?.noteCoercion)e.chat.noteCoercion(y,G);else{let Y=y.text.replace(/\?+\s*$/,""),Ve=Y.length<=36?Y:`${Y.slice(0,33)}\u2026`;e.out(`note: couldn't use a typed answer for "${Ve}" \u2014 kept the recommended option (${G})`)}return{id:y.id,selected_index:y.recommended_index,free_text:null}}return n.set(y.id,P+1),{id:y.id,selected_index:null,free_text:A.free_text}}let j=He.find(x=>x.id===y.id);return j.resolution==="deferred"?{id:y.id,selected_index:null,free_text:null}:{id:y.id,selected_index:j.selected_index,free_text:null}})};v(Ue)}else if(i.type==="chat_ops"&&!e.chat){let a=i.chat_ops??i,S=Array.isArray(a.ops)?a.ops.length:0;if(S===0)a.text&&e.out(a.text),v({type:"session_complete"}),o("headless_zero_op_chat_turn_complete",{chars:a.text?.length??0});else if(B<ht)B+=1,v({type:"user_message",message_id:`nochat-${t.session_id}-${B}`,text:"[auto-repair] chat ops are unavailable in this mode \u2014 commit through finalize_design, or finish if nothing remains."}),o("headless_chat_ops_nudge",{n:B,ops:S});else{h="the agent kept trying to hold a conversation in a non-interactive run",e.out("error: the agent kept trying to hold a conversation in a non-interactive run \u2014 session closed; re-run interactively, or retry"),o("headless_chat_ops_terminal",{ops:S}),u.kill();break}}else if(i.type===(c.terminalEventType??"proposal")){let a=await c.onProposalEvent(i[i.type]);if(g=a.proposal,a.error&&(h=a.error),a.receipt)e.emit?.(a.receipt.event),t.mode!=="interactive"?(X+=1,a.sessionComplete||X>=Ne?(a.sessionComplete||(e.out(`warning: ${Ne} commits without completion \u2014 closing the session (runaway guard)`),o("receipt_runaway_cap",{commits:X})),v({type:"session_complete"}),o("session_complete_sent",{commit_n:a.receipt.event.commit_n,runaway:!a.sessionComplete})):(v({type:"user_message",message_id:`receipt-${t.session_id}-${String(a.receipt.event.commit_n??0)}`,text:a.receipt.text}),o("receipt_sent",{commit_n:a.receipt.event.commit_n,chars:a.receipt.text.length}))):e.chat?.holdReceipt&&(e.chat.holdReceipt(a.receipt.text),o("receipt_held",{commit_n:a.receipt.event.commit_n}));else if(a.error&&t.mode!=="interactive"){e.out("error: saving the agent's work failed and can't be retried in this mode \u2014 session closed; re-run to retry"),o("headless_commit_error_terminal",{error:a.error}),u.kill();break}}else if(i.type==="error"){O=!0;let a=i;if(a.code==="PAIR_MISMATCH")throw new pe(a.expected??"",a.actual??"");h=i.message,typeof a.code=="string"&&(k=a.code);let S=i.failed_proposal;S&&o("failed_proposal",S)}}}finally{u.kill(),je?.()}let Pe=t.chat===!0&&t.mode==="interactive",ce=!!e.checkpoint&&!O&&!w&&!R&&!W&&h===null&&g===null&&!Pe;return{proposal:g,error:h,...k!==void 0?{errorCode:k}:{},paused:R,highRisk:W,...F>0?{assumedDefaults:F}:{},...q!==void 0?{creditsTotal:q}:{},...ce?{crashed:ce}:{}}}function Le(t,e){let n=e.trim(),s=null;for(let r of t??[])if(r.ref===n){if(!r.consumed)return{kind:"unconsumed"};s={kind:"consumed",identity:r.consumed}}return s??{kind:"unauthorized"}}function Lt(t,e,n){let s=e.trim(),r=[...t??[]];return r.find(o=>o.ref===s&&!o.consumed)||r.push({ref:s,entered_at:n.toISOString()}),r}function Oe(t,e,n){let s=e.trim(),r=[...t??[]],c=r.findIndex(o=>o.ref===s&&!o.consumed);return c<0||(r[c]={...r[c],consumed:n}),r}import{basename as ie}from"path";function Fe(t,e,n,s,r){let c=e.mediaOf(s),o=0;if(c.format!=="image"){let d=L(t,e,s);d&&(o=d.toString("utf8").replace(/\n$/,"").split(`
|
|
8
|
+
`).length)}return{source_id:n,cid:s,total_lines:o,media_type:c.format,status:r}}function Ut(t){return async e=>{let n=Le(t.handle.state.ingest_registry,e.ref);if(n.kind==="unauthorized")return{ok:!1,error:{code:"INGEST_UNAUTHORIZED_REF",message:"that ref was not provided by the owner this session \u2014 only owner-provided refs may land"}};if(n.kind==="consumed"){let h=t.graphSlot?.current??I(t.contextDir);return{ok:!0,result:Fe(t.contextDir,h,n.identity.source_id,n.identity.cid,"unchanged")}}let s=[],r={out:h=>s.push(h),err:h=>s.push(h),confirm:async()=>!1,isTTY:!1},c;try{c=await ke([e.ref],{},r,t.cwd,t.remoteDeps)}catch(h){return{ok:!1,error:{code:"INGEST_FAILED",message:h instanceof Error?h.message:String(h)}}}if(c.code!==0||c.results.length===0)return{ok:!1,error:{code:"INGEST_FAILED",message:s.find(k=>k.startsWith("error:"))??s.at(-1)??"the landing failed"}};let o=c.results[0],d={source_id:o.source_id,cid:o.source_cid},m=Oe(t.handle.state.ingest_registry,e.ref,d),f=t.schedule?[...t.handle.state.ingest_schedule??[],{source_id:o.source_id,cid:o.source_cid,status:"pending"}]:void 0;t.handle.save({ingest_registry:m,...f!==void 0?{ingest_schedule:f}:{}}),t.graphSlot&&(t.graphSlot.current=I(t.contextDir));let u=t.graphSlot?.current??I(t.contextDir),g=Fe(t.contextDir,u,o.source_id,o.source_cid,o.status==="unchanged"?"unchanged":"landed");return t.note(t.schedule?`landed ${o.source_id} (${ie(e.ref)}) \u2014 ${g.total_lines} lines; scheduled for extraction in this run`:t.scheduleRefused?`landed ${o.source_id} (${ie(e.ref)}) \u2014 ${g.total_lines} lines; ${t.scheduleRefused}`:`landed ${o.source_id} (${ie(e.ref)}) \u2014 ${g.total_lines} lines; it guides this design only (not extracted \u2014 its own extraction pass adds its use-cases)`),{ok:!0,result:g}}}var _t=3,yt={edit:"edit",reject:"mistake",dedup_dropped:"mistake",approve:"usage",enhance:"directed-edit",add:"directed-edit",default_accepted:"usage",default_overridden:"edit",gap_resolution:"usage",dedup_kept:"usage"};function Be(t){let{contextDir:e,graph:n,watermark:s,by:r}=t,{signals:c}=H(e,s),o=c.filter(l=>l.event_id===void 0||n.appliedEvents.has(l.event_id)),d=new Map;for(let l of o){let _=l.event_id??`${l.ts}|${l.id}|${l.verdict}|${l.polarity}`;d.has(`${_}|${l.polarity}|${l.verdict}`)||d.set(`${_}|${l.polarity}|${l.verdict}`,l)}let m=[...d.values()].sort((l,_)=>(l.event_id??l.ts)<(_.event_id??_.ts)?-1:1),f=new Map;for(let l of m){let _=`${l.verdict}|${l.tag??""}`,p=f.get(_)??{verdict:l.verdict,tag:l.tag,events:new Set};p.events.add(l.event_id??l.ts),f.set(_,p)}let u=[],g=[],h=new Set,k=0;for(let[,l]of[...f.entries()].sort(([_],[p])=>_<p?-1:1)){if(l.events.size<_t)continue;let p={derived:!0,statement:`${l.verdict}${l.tag?`/${l.tag}`:""} recurs (${l.events.size} distinct events) \u2014 bias future proposals ${l.verdict==="approve"?"toward":"away from"} this pattern`,learned_from_kind:yt[l.verdict]??"usage",learned_from:[...l.events].sort()},w=le("stylenote",p);if(w.length>0)return{record:null,errors:w.map(C=>({code:C.code,detail:C.detail})),minted:0};let $=ue("stylenote",p);if(n.hasNode($))continue;u.push({cid:$,label:ae.STYLENOTE,content:p});let v=me("stylenote",C=>h.has(C),n.names.keys());v!==null&&(h.add(v),g.push({cid:$,slug:v,by:r})),k+=1}return u.length===0?{record:null,errors:null,minted:0}:{record:fe(e,{ts:new Date().toISOString(),proposal_id:null,nodes:u,edges:[],review:[],supersessions:[],source_head_moves:{},...g.length>0?{names:g}:{}},{expectPrev:n.latestHash}).record,errors:null,minted:k}}var wt={kind:"system",id:"distiller"};function tn(t,e=n=>process.stderr.write(n+`
|
|
9
|
+
`)){try{let n=I(t),{watermark:s}=H(t),r=Be({contextDir:t,graph:n,watermark:s,by:wt});if(r.errors){let c=r.errors.map(o=>`${o.code}: ${o.detail}`).join("; ");return e(`warning: style-note distill skipped \u2014 ${c}`),{minted:0,error:c}}if(r.minted>0)try{ge(t)}catch{}return{minted:r.minted,error:null}}catch(n){let s=n instanceof Error?n.message:String(n);return e(`warning: style-note distill skipped \u2014 ${s}`),{minted:0,error:s}}}export{bt as a,Ie as b,pt as c,Ge as d,Nt as e,Lt as f,Ut as g,tn as h};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as w}from"./chunk-DNNZ353O.js";import{b as k}from"./chunk-3STZLM5J.js";import{d as S,e as m}from"./chunk-5YPBPZUR.js";var a=(e,t,o=new Set)=>{let s=e.nameOf.get(t);if(s!==void 0)return s;if(o.has(t))return t;o.add(t);for(let[r,n]of e.superseded){if(n!==t)continue;let u=a(e,r,o);if(u!==r)return u}return t};function b(e,t){let o=e.stale(t);if(o==="fresh")return;if(o==="orphaned")return"orphaned \u2014 no live source evidences this item";let s=[],r=new Map;for(let n of e.derivesInto(t))r.set(String(n.props.source_id),n);for(let[n,u]of r){let i=e.heads.get(n);if(i==null||i===u.props.source_cid)continue;let c=e.convChains.get(n)?.chain;c&&c.includes(String(u.props.source_cid))||s.push(`DERIVES pin ${n}@${String(u.props.source_cid).slice(0,19)} broke \u2014 the source head moved`)}for(let n of e.edgesFrom(t)){if(n.type===m.DERIVES||!e.superseded.has(n.dst))continue;let u=e.tipOf(n.dst);if(e.superseded.has(u)){s.push(`${n.type} pin \u2192 ${a(e,n.dst)} \u2014 target retired`);continue}let i=D(e,n.dst,u);s.push(i.length>0?`${a(e,n.dst)} updated: ${i.map(c=>c.field).join(", ")}`:`${n.type} pin \u2192 ${a(e,n.dst)} \u2014 target superseded`)}return s.length>0?s.join("; "):"stale \u2014 a pinned dependency moved"}function D(e,t,o){let s=e.getNode(t)?.content??{},r=e.getNode(o)?.content??{},n=i=>i===void 0?"":Array.isArray(i)?i.map(String).join(" \xB7 "):typeof i=="object"?JSON.stringify(i):String(i),u=[];for(let i of[...new Set([...Object.keys(s),...Object.keys(r)])].sort())JSON.stringify(s[i])!==JSON.stringify(r[i])&&u.push({field:i,old:n(s[i]),new:n(r[i])});return u}function C(e,t){let o=[];for(let{cid:s}of e.byLabel(S.SCENARIO))e.superseded.has(s)||e.edgesFrom(s).some(r=>r.type===m.BELONGS_TO&&e.tipOf(r.dst)===t)&&o.push(s);return o}function O(e,t){let o=[],s=[],r=[],n=C(e,t),u=new Set(n),i=(c,f)=>{let d=b(e,f);return d===void 0?c:{...c,stale:!0,stale_reason:d}};for(let c of n){let f=e.getNode(c)?.content??{};o.push(i({ref:a(e,c),title:String(f.title??""),case_type:String(f.case_type??""),intent:String(f.intent??"")},c));for(let d of e.edgesInto(c)){if(d.type!==m.AUTOMATES||e.superseded.has(d.src))continue;let p=e.getNode(d.src)?.content??{},g=e.edgesFrom(d.src).filter(l=>l.type===m.VERIFIES&&!e.superseded.has(l.dst)).map(l=>a(e,l.dst));s.push(i({ref:a(e,d.src),title:String(p.title??""),check:p.check,verifies:g},d.src))}}for(let{cid:c}of e.byLabel(S.AC)){if(e.superseded.has(c))continue;let f=e.edgesFrom(c).find(l=>l.type===m.SCOPED_TO);if(!f)continue;let d=e.tipOf(f.dst);if(!(d===t||u.has(d)))continue;let g=e.getNode(c)?.content??{};r.push(i({ref:a(e,c),text:String(g.text??""),kind:String(g.kind??""),scope:d===t?"use-case":a(e,d)},c))}return{scenarios:o,tests:s,acs:r}}function E(e,t,o){let s=w(e,t,o);return s===null?null:s.toString("utf8")}function v(e,t){let o=t.split(`
|
|
3
|
+
`).map(r=>r.replace(/^\d+\| /,"")),s=[];for(let r of e.split(`
|
|
4
|
+
`)){let n=r.trim();if(n.length===0)continue;let u=o.find(i=>i.includes(n));u!==void 0&&!s.includes(u.trim())&&s.push(u.trim())}return s.length>0?s.join(`
|
|
5
|
+
`):{removed:!0}}function G(e,t,o,s){if(s!==void 0&&s.trim().length>0)return{kind:"user-directive",text:s.trim()};let r=[o,...O(t,o).acs.map(c=>t.resolve(c.ref)?.cid??"")].filter(Boolean),n=[],u=new Set;for(let c of r){let f=new Map;for(let d of t.derivesInto(c))f.set(String(d.props.source_id),d);for(let[d,p]of f){let g=t.heads.get(d);if(g==null||g===p.props.source_cid)continue;let l=String(p.props.anchor),_=`${d}\0${l}`;if(u.has(_)||l==="img#whole")continue;u.add(_);let y=E(e,t,String(p.props.source_cid)),h=y===null?null:k(y,l);if(h===null)continue;let x=E(e,t,g);n.push({source_id:d,anchor:l,old_anchor_text:h,new_anchor_text:x===null?{removed:!0}:v(h,x)})}}let i;for(let[c,f]of t.superseded){if(f!==o||t.nodeLabel.get(c)!==S.USECASE)continue;let d=D(t,c,o);d.length>0&&(i=d);break}return{kind:"source-change",changes:n,...i?{uc_updated:i}:{}}}function P(e,t,o,s){let r=O(t,o);if(r.scenarios.length===0&&r.tests.length===0&&r.acs.length===0)return;let n=G(e,t,o,s);if(!(n.kind==="source-change"&&n.changes.length===0&&!n.uc_updated))return{prior_design:r,change_delta:n}}export{O as a,P as b};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{
|
|
2
|
+
import{d as c}from"./chunk-M7WQM4UA.js";import{d as l}from"./chunk-5YPBPZUR.js";function h(f,o,u){let n=o.resolve(u);if(!n)return{target:null,entries:[]};let t=new Set([n.cid]),r=n.cid;for(;o.superseded.has(r);){let s=o.superseded.get(r);if(typeof s!="string"||t.has(s))break;t.add(s),r=s}let d=o.nodeLabel.get(n.cid)??"(unknown)",{records:p}=c(f),i=[];for(let s of p){for(let e of s.nodes)t.has(e.cid)&&i.push({seq:s.seq,ts:s.ts,kind:"minted",detail:`minted ${e.label} ${e.cid}`});for(let e of s.judgements??[])t.has(e.about)&&i.push({seq:s.seq,ts:s.ts,kind:"judgement",rationale:e.rationale,detail:`judgement on ${e.about}`,by:e.by});for(let e of s.review)t.has(e.id)&&i.push({seq:s.seq,ts:s.ts,kind:"review",detail:`${e.resolution}${e.reason?` \u2014 ${e.reason}`:""}`,by:e.by});for(let e of s.supersessions)e.kind==="node"&&(t.has(e.old)||e.new!==null&&t.has(e.new))&&i.push({seq:s.seq,ts:s.ts,kind:"supersession",detail:`${e.old} \u2192 ${String(e.new)} \u2014 ${e.reason}`,by:e.by});for(let e of s.names??[])t.has(e.cid)&&i.push({seq:s.seq,ts:s.ts,kind:"name",detail:`named ${e.slug}`,by:e.by});if(d===l.SOURCE)for(let[e,a]of Object.entries(s.source_head_moves))(t.has(a??"")||o.heads.get(e)!==void 0&&t.has(n.cid)&&e===o.getNode(n.cid)?.content?.source_id)&&i.push({seq:s.seq,ts:s.ts,kind:"head_move",detail:`${e} head \u2192 ${String(a)}`})}return i.sort((s,e)=>e.seq-s.seq),{target:{cid:n.cid,tip:n.tip,label:d,slug:o.nameOf.get(n.cid)},entries:i}}export{h as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{c as o}from"./chunk-
|
|
2
|
+
import{c as o}from"./chunk-ZLCZDAEX.js";import{a as n}from"./chunk-CH273NAE.js";import{existsSync as c}from"fs";function s(t,r){(t.err??t.out)(`error: ${r}`)}function a(t,r){let e=n(t);return c(e)?e:(s(r,"no context store here (run `kane-cli context ingest <files>` first)"),null)}async function p(t,r,e){return e?!0:t.isTTY?t.confirm(`${r}?`):(s(t,`refusing to ${r} without --yes (no TTY to confirm)`),!1)}function d(){return{out:t=>process.stdout.write(t+`
|
|
3
3
|
`),err:t=>process.stderr.write(t+`
|
|
4
4
|
`),isTTY:o(),confirm:async t=>{let{createInterface:r}=await import("readline/promises"),e=r({input:process.stdin,output:process.stdout});try{let i=await e.question(`${t} [y/N] `);return/^y(es)?$/i.test(i.trim())}finally{e.close()}},ask:async t=>{let{createInterface:r}=await import("readline/promises"),e=r({input:process.stdin,output:process.stdout});try{return await e.question(t)}finally{e.close()}}}}export{s as a,a as b,p as c,d};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-5Y2G4NC7.js";import{y as o}from"./chunk-
|
|
2
|
+
import{a}from"./chunk-5Y2G4NC7.js";import{y as o}from"./chunk-C4G7RVJ6.js";import{a as n}from"./chunk-HCBYKLMW.js";import{b as t}from"./chunk-C44QQJR4.js";import{a as s}from"./chunk-6YGTRKDT.js";import{e as r}from"./chunk-UR6MHSHU.js";var l=r(s(),1);var m=r(n(),1),i=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function b({active:e=!0}){let[p,c]=(0,l.useState)(0);return a(()=>{c(f=>(f+1)%i.length)},e?80:null),(0,m.jsx)(t,{color:o.orange,children:e?i[p]:"\u25CF"})}export{b as a};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as Ke}from"./chunk-
|
|
2
|
+
import{a as Ke}from"./chunk-DXV6MBTD.js";import{a as Fe}from"./chunk-KT6G7AF2.js";import{a as Ne}from"./chunk-FPFOW6BS.js";import{a as Oe}from"./chunk-YCCUBQY4.js";import{a as $e}from"./chunk-JRMDGLLT.js";import{a as Ue}from"./chunk-VE3SUJMA.js";import{a as me}from"./chunk-4OPQJ7PE.js";import{c as _e,y as u}from"./chunk-C4G7RVJ6.js";import{a as te}from"./chunk-HCBYKLMW.js";import{a as p,b as f,h as De,i as be,k as ke}from"./chunk-C44QQJR4.js";import{a as xe}from"./chunk-6YGTRKDT.js";import{e as $}from"./chunk-UR6MHSHU.js";var We=$(xe(),1);import{readFileSync as tt,writeFileSync as nt,mkdirSync as rt}from"fs";import{dirname as ot,join as He}from"path";var it=He(_e,"command-history.json"),At=He(_e,"generate-history.json"),st=200,Ie=class{entries;filePath;max;constructor(t=it,e=st){this.filePath=t,this.max=e,this.entries=this._load()}push(t){this.entries.length>0&&this.entries[this.entries.length-1]===t||(this.entries.push(t),this.entries.length>this.max&&(this.entries=this.entries.slice(this.entries.length-this.max)),this._save())}getAll(){return[...this.entries]}search(t){let e=t.toLowerCase(),i=[];for(let s=this.entries.length-1;s>=0;s--)this.entries[s].toLowerCase().includes(e)&&i.push(this.entries[s]);return i}_load(){if(this.filePath===null)return[];try{let t=tt(this.filePath,"utf-8"),e=JSON.parse(t);return Array.isArray(e)?e:[]}catch{return[]}}_save(){if(this.filePath!==null)try{rt(ot(this.filePath),{recursive:!0}),nt(this.filePath,JSON.stringify(this.entries)+`
|
|
3
3
|
`)}catch{}}};function Ct(r){let t=(0,We.useRef)(null);return t.current||(t.current=new Ie(r)),t.current}var D=$(xe(),1);var Pe=$(xe(),1);var Q=$(te(),1);function Ge({history:r,onSelect:t,onClose:e}){let[i,s]=(0,Pe.useState)(""),[l,h]=(0,Pe.useState)(0),w=i?r.search(i).slice(0,8):[];return be((T,m)=>{if(m.escape){e();return}if(m.return){w.length>0&&w[l]?t(w[l]):e();return}if(m.upArrow){h(S=>Math.max(0,S-1));return}if(m.downArrow){h(S=>Math.min(w.length-1,S+1));return}if(m.backspace||m.delete){s(S=>S.slice(0,-1)),h(0);return}T&&!m.ctrl&&!m.meta&&(s(S=>S+T),h(0))}),(0,Q.jsxs)(p,{flexDirection:"column",marginLeft:2,borderStyle:"single",paddingX:1,children:[(0,Q.jsx)(f,{color:u.muted,bold:!0,children:"reverse search"}),(0,Q.jsxs)(p,{gap:1,children:[(0,Q.jsx)(f,{color:u.dim,children:"search:"}),(0,Q.jsx)(f,{children:i}),(0,Q.jsx)(f,{color:u.orange,children:"\u2588"})]}),w.length>0&&(0,Q.jsx)(f,{children:" "}),w.map((T,m)=>(0,Q.jsx)(p,{marginLeft:2,children:(0,Q.jsxs)(f,{color:m===l?u.orange:u.dim,bold:m===l,children:[m===l?"\u25B8 ":" ",T]})},`${m}-${T}`))]})}var ue=$(te(),1);function Ve({commands:r,selectedIndex:t}){return r.length===0?null:(0,ue.jsx)(p,{flexDirection:"column",marginBottom:0,children:r.map((e,i)=>{let s=i===t;return(0,ue.jsxs)(p,{children:[(0,ue.jsx)(f,{color:s?u.orange:u.dim,children:s?"\u276F ":" "}),(0,ue.jsxs)(f,{color:s?u.orange:void 0,bold:s,children:["/",e.name]}),e.args&&(0,ue.jsxs)(f,{color:u.dim,children:[" ",e.args]}),(0,ue.jsxs)(f,{color:u.dim,children:[" ",e.description]})]},e.name)})})}var qe=$(xe(),1);var G=$(te(),1),je={scenario:"Scenarios",case:"Test Cases",file:"Files"};function Ye(r){let t={scenario:0,case:0,file:0};for(let e of r)t[e.kind]++;return["scenario","case","file"].filter(e=>t[e]>0).map(e=>`${t[e]} ${je[e]}`).join(" \xB7 ")}var Ee=7;function ze({items:r,selectedIndex:t,accent:e=u.orange}){let i=r.length;if(i===0)return null;let s=Math.floor(Ee/2),l=i<=Ee?0:Math.max(0,Math.min(t-s,i-Ee)),h=Math.min(i,l+Ee),w=l,T=i-h;return(0,G.jsxs)(p,{flexDirection:"column",marginBottom:0,children:[w>0&&(0,G.jsx)(p,{children:(0,G.jsx)(f,{color:u.dim,children:` \u22EF ${w} above \u2014 ${Ye(r.slice(0,l))}`})}),r.slice(l,h).map((m,S)=>{let U=l+S,k=U===t,C=S===0||r[U-1].kind!==m.kind;return(0,G.jsxs)(qe.default.Fragment,{children:[C&&(0,G.jsx)(p,{children:(0,G.jsx)(f,{color:u.dim,children:je[m.kind]})}),(0,G.jsxs)(p,{children:[(0,G.jsx)(f,{color:k?e:u.dim,children:k?"\u276F ":" "}),(0,G.jsx)(f,{color:k?e:void 0,bold:k,children:m.label})]})]},`${m.kind}:${m.value}:${U}`)}),T>0&&(0,G.jsx)(p,{children:(0,G.jsx)(f,{color:u.dim,children:` \u22EF ${T} more \u2014 ${Ye(r.slice(h))}`})})]})}var ye=$(xe(),1);var lt=27,at=127,ct=11;function ut(r){return r>=64&&r<=126}function ft(r,t){r===ct&&t({killToEnd:!0,ctrl:!0,raw:String.fromCharCode(r)})}function dt(r,t){r===at&&t({backspace:!0,meta:!0,raw:"\x1B\x7F"})}function mt(r,t){let e=r.map(s=>String.fromCharCode(s)).join(""),i=/^\[1;([0-9]+)([A-D])$/.exec(e);if(i){let s=parseInt(i[1],10),l=i[2],h={raw:"\x1B"+e};if(s===2)h.shift=!0;else if(s===3)h.meta=!0;else if(s===5)h.ctrl=!0;else return;l==="A"?h.arrowUp=!0:l==="B"?h.arrowDown=!0:l==="C"?h.arrowRight=!0:l==="D"&&(h.arrowLeft=!0),t(h);return}if(e==="[H"||e==="[1~"||e==="[7~"){t({home:!0,raw:"\x1B"+e});return}if(e==="[F"||e==="[4~"||e==="[8~"){t({end:!0,raw:"\x1B"+e});return}if(e==="[3;5~"){t({delete:!0,ctrl:!0,raw:"\x1B"+e});return}if(e==="[3;3~"){t({delete:!0,meta:!0,raw:"\x1B"+e});return}}function ht(r,t){r===72?t({home:!0,raw:"\x1BO"+String.fromCharCode(r)}):r===70&&t({end:!0,raw:"\x1BO"+String.fromCharCode(r)})}function gt(){let r="IDLE",t=[];function e(){r="IDLE",t=[]}return{feed(i,s){for(let l of i)r==="IDLE"?l===lt?(r="ESC",t=[]):ft(l,s):r==="ESC"?l===91?(r="CSI",t=[]):l===79?(r="SS3",t=[]):(dt(l,s),e()):r==="CSI"?(t.push(l),ut(l)&&(mt([91,...t],s),e())):r==="SS3"&&(ht(l,s),e())},flushIdle(i){r==="ESC"&&t.length===0&&i({raw:"\x1B"}),e()}}}function Xe(r,t={}){let e=(0,ye.useRef)(r);e.current=r;let{stdin:i}=De();(0,ye.useEffect)(()=>{if(t.isActive===!1||!i)return;let s=gt(),l=null,h=w=>{l&&(clearTimeout(l),l=null);let T=Buffer.isBuffer(w)?w:Buffer.from(w,"binary");s.feed(T,m=>e.current(m)),l=setTimeout(()=>{s.flushIdle(m=>e.current(m)),l=null},50)};return i.on("data",h),()=>{i.removeListener("data",h),l&&clearTimeout(l)}},[t.isActive,i])}var y=$(te(),1);function pt(r,t){let e=t-1;for(;e>=0&&r[e]!=="@"&&r[e]!==" "&&r[e]!==`
|
|
4
4
|
`;)e--;return e<0||r[e]!=="@"||e>0&&r[e-1]!==" "&&r[e-1]!==`
|
|
5
5
|
`?null:{at:e,query:r.slice(e+1,t).join("")}}var Me=10;function xt(r){return r.replace(/\x1b?\[200~/g,"").replace(/\x1b?\[201~/g,"").replace(/\r\n/g,`
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{b as U}from"./chunk-DNNZ353O.js";import{a as G}from"./chunk-Q2F5QB2W.js";import{b as B,c as b}from"./chunk-NVGBE2DR.js";import{a as T}from"./chunk-GW5DWAXY.js";import{a as L,c as P}from"./chunk-L4JIMNKW.js";import{b as j,i as F}from"./chunk-M7WQM4UA.js";import{a as $,d as N,f as D}from"./chunk-5YPBPZUR.js";import{existsSync as ne,mkdirSync as ie,readFileSync as oe,writeFileSync as re}from"fs";import{basename as C,extname as H,join as se}from"path";var K=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function q(e){return typeof e=="string"&&e!=="."&&e!==".."&&K.test(e)}function k(e){if(!q(e))throw new Error(`unsafe logical_id: ${JSON.stringify(e)} \u2014 must match ${String(K)} (no path separators)`)}import{extname as W}from"path";var Q={kind:"jira",media_type:"application/x-kane-jira-envelope",extensions:[],cite:"verbatim",maxBytes:2e6},z=[{kind:"text",media_type:"text/plain",extensions:[".txt"],cite:"verbatim",maxBytes:2e6},{kind:"markdown",media_type:"text/markdown",extensions:[".md",".markdown"],cite:"verbatim",maxBytes:2e6},{kind:"image",media_type:"image/png",extensions:[".png"],cite:"anchor-only",maxBytes:5e6},{kind:"image",media_type:"image/jpeg",extensions:[".jpg",".jpeg"],cite:"anchor-only",maxBytes:5e6},{kind:"image",media_type:"image/webp",extensions:[".webp"],cite:"anchor-only",maxBytes:5e6},{kind:"text",media_type:"application/json",extensions:[".json"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"application/yaml",extensions:[".yaml",".yml"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"application/toml",extensions:[".toml"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"application/xml",extensions:[".xml"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"text/plain",extensions:[".log"],cite:"verbatim",maxBytes:2e6},{kind:"pdf",media_type:"application/pdf",extensions:[".pdf"],cite:"verbatim",maxBytes:25e6,sniff:e=>e.subarray(0,5).toString("latin1")==="%PDF-"},{kind:"docx",media_type:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",extensions:[".docx"],cite:"verbatim",maxBytes:25e6,sniff:e=>e.length>=4&&e[0]===80&&e[1]===75&&e[2]===3&&e[3]===4,sniffFail:e=>e.length>=8&&e.subarray(0,8).equals(ee)?"DOCX_ENCRYPTED_OR_LEGACY: password-protected Office file (or a legacy .doc renamed .docx) \u2014 remove the password / save as .docx and re-ingest":void 0},Q],ee=Buffer.from([208,207,17,224,161,177,26,225]),S={pdf:"pdf",docx:"docx",jira:"jira"},pe=new Set(Object.keys(S));function J(e){let n=W(e).toLowerCase(),t=z.find(i=>i.extensions.includes(n));return t?{ok:!0,media:t}:{ok:!1,code:"UNSUPPORTED_MEDIA",allowlist:z.flatMap(i=>i.extensions)}}function v(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${Math.max(1,Math.round(e/1024))} KB`}function ae(e,n,t){return G({source_id:e,source_cid:"sha256:".padEnd(71,"0"),doc_kind:n,numbered_text:U(t)})}var Y=2e3;function de(e){let t=C(e,H(e)).toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^[^a-z0-9]+/,"");return k(t),t}function Be(e){let n=/^(.*?)[-_.]?v?\d+$/.exec(e);if(!n)return null;let t=(n[1]??"").replace(/[-_.]+$/,"");return t.length>0&&t!==e?t:null}function X(e){let n=se(e,"meta.json");ne(n)||(ie(e,{recursive:!0}),re(n,JSON.stringify({schema:$,canonicalizer:"v1"},null,2)+`
|
|
3
|
+
`))}async function ke(e){let{contextDir:n,filePath:t,asId:i,confirmSameSource:y,converters:h}=e;X(n);let o=oe(t),s=J(t);if(!s.ok)throw new Error(`${C(t)} is a file type kane can't ingest (${H(t)||"no extension"}) \u2014 supported: ${s.allowlist.join(" ")} [UNSUPPORTED_MEDIA]`);if(o.byteLength>s.media.maxBytes)throw new Error(`${C(t)} is too large \u2014 ${v(o.byteLength)}, the limit for ${s.media.media_type} is ${v(s.media.maxBytes)} [FILE_TOO_LARGE]`);if(s.media.sniff&&!s.media.sniff(o)){let m=s.media.sniffFail?.(o);throw new Error(m??`MEDIA_SNIFF_MISMATCH: ${t} does not look like ${s.media.media_type}`)}let l;return i!==void 0?(k(i),l=i):l=de(t),ce({contextDir:n,bytes:o,media:s.media,sourceId:l,label:t,confirmSameSource:y,converters:h})}async function ce(e){let{contextDir:n,bytes:t,media:i,confirmSameSource:y,converters:h}=e,o=e.sourceId,s=e.label??o;if(X(n),t.byteLength>i.maxBytes)throw new Error(`the content is too large \u2014 ${v(t.byteLength)}, the limit for ${i.media_type} is ${v(i.maxBytes)} [FILE_TOO_LARGE]`);let l=[],m=S[i.kind];if(i.cite==="verbatim"&&!m){try{new TextDecoder("utf-8",{fatal:!0}).decode(t)}catch{throw new Error(`ENCODING_UNSUPPORTED: ${s} is not valid UTF-8 \u2014 re-save it as UTF-8 and re-ingest`)}t.toString("utf8").split(`
|
|
4
|
+
`).some(f=>f.length>Y)&&l.push(`long line detected (> ${Y} chars) \u2014 anchors lose granularity; consider pretty-printing before ingest`)}let p=B(t),_=new Map,c=null,M=!1;for(let f=0;;f++){let x=T(n),u=x.heads.get(o),Z=u!=null?x.getNode(u)?.content:void 0;if(u!=null&&Z?.blob===p)return{status:"unchanged",source_id:o,cid:u,blob:p};if(u==null){for(let[r,g]of x.heads.entries())if(!(r===o||g==null)&&x.getNode(g)?.content.blob===p){let a;if(_.has(r)?a=_.get(r):f===0&&y?(a=await y(r),_.set(r,a)):(a=!1,_.set(r,a),f>0&&l.push(`same bytes already ingested as '${r}' \u2014 minted under '${o}' anyway (the twin appeared mid-commit; not prompted)`)),a)return{status:"unchanged",source_id:r,cid:g,blob:p};break}}if(c===null){let r={},g,a=null,O=null;if(m){let A=h?.[m];if(!A)throw new Error(`${m.toUpperCase()}_CONVERTER_MISSING: ${m} ingestion requires the converter \u2014 the command layer wires it`);let d=await A(t);a=Buffer.from(d.projection,"utf8");let R=ae(o,i.kind,a);if(R>4e5)throw new Error(`PROJECTION_TOO_LARGE: serialized source payload ${R} bytes > ${4e5} \u2014 split the document and re-ingest`);r={text_blob:B(a),...d.inventory.length>0?{images:d.inventory}:{},converter:d.converter},O=d.blobs,g={kind:i.kind,...d.pages!==void 0?{pages:d.pages}:{},delivered:d.delivered.length,omitted:d.inventory.length-d.delivered.length}}c={derived:r,composite:g,projBytes:a,derivedBlobs:O}}if(!M){if(b(n,t),c.projBytes!==null&&b(n,c.projBytes),c.derivedBlobs!==null)for(let[,r]of c.derivedBlobs)b(n,r);M=!0}let w=P(o,p),E=D("source",w);if(E.length>0)throw new Error(`source node fails ${E[0].code}: ${E[0].detail}`);let I=L("source",w);try{F(n,{ts:new Date().toISOString(),proposal_id:null,nodes:[{cid:I,label:N.SOURCE,content:w}],edges:[],review:[],supersessions:[],media:{[o]:{format:i.kind,media_type:i.media_type,anchors_supported:m?["L-L","img#ref"]:i.cite==="verbatim"?["L-L"]:[],...c.derived}},...e.eventIds&&e.eventIds.length>0?{event_ids:e.eventIds}:{},source_head_moves:{[o]:I}},{expectPrev:x.latestHash})}catch(r){if(r instanceof j&&f<3)continue;throw r}return{status:u!=null?"versioned":"created",source_id:o,cid:I,blob:p,...l.length?{warnings:l}:{},...c.composite?{composite:c.composite}:{}}}}export{k as a,Q as b,pe as c,J as d,ae as e,de as f,Be as g,ke as h,ce as i};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as K,c as V,d as z,e as ee,f as te}from"./chunk-
|
|
2
|
+
import{b as K,c as V,d as z,e as ee,f as te}from"./chunk-RNSSM2BK.js";import{c as J}from"./chunk-3FN5VJMV.js";import{a as Q}from"./chunk-DXV6MBTD.js";import{a as Z}from"./chunk-FPFOW6BS.js";import{b as H}from"./chunk-JKTFTF24.js";import{b as W}from"./chunk-323MLBYA.js";import{p as E}from"./chunk-W6VD2XFO.js";import{a as O}from"./chunk-2WVKOZ6W.js";import{a as _}from"./chunk-JRMDGLLT.js";import{a as k,b as A,d as Y}from"./chunk-VE3SUJMA.js";import{a as q}from"./chunk-F6ZOJXYU.js";import{a as G}from"./chunk-HCBYKLMW.js";import{a as c,b as u,i as I,j as X}from"./chunk-C44QQJR4.js";import{a as ue}from"./chunk-6YGTRKDT.js";import{e as F}from"./chunk-UR6MHSHU.js";var i=F(ue(),1);var r=F(G(),1);function _e({resultRef:h,mode:d="singleshot",loginCompleteRef:f}){let{exit:m}=X(),C=(0,i.useRef)(new q),S=(0,i.useRef)(new Q),v=(0,i.useRef)(new J),t=C.current,l=S.current,$=v.current,ne=K(),[P,g]=(0,i.useState)(d==="login"?"login":"gate"),[L,re]=(0,i.useState)(null),[de,R]=(0,i.useState)(null),[ge,T]=(0,i.useState)(null),[N,oe]=(0,i.useState)(null),[U,B]=(0,i.useState)([]),x=(0,i.useCallback)((e,n,s,o)=>$.log(e,n,s,o),[$]),pe=(0,i.useCallback)((e,n)=>{e?k(t,l,e,n):l.save({project_id:null,project_name:null,folder_id:null,folder_name:null})},[t,l]),y=(0,i.useCallback)(()=>{d==="login"?(f&&(f.current=!0),m()):g("input")},[d,m,f]),D=(0,i.useCallback)((e,n)=>{let s=k(t,l,e,n);if(d==="login"){g("ensure-project");return}Y(s)?y():s.projectId?g("ensure-folder"):g("ensure-project")},[t,l,y,d]);I((e,n)=>{n.ctrl&&e==="c"&&E(0,"Ctrl+C exit")});let M=(0,i.useRef)(!1);i.default.useEffect(()=>{M.current||(M.current=!0,d!=="login"&&te(t,x).then(e=>{re(e),e.status==="authenticated"?D(e.result.profile,e.result.env):e.status==="needs_pick"?g("pick"):(R(e.profile??null),T(e.env??null),g("login"))}).catch(e=>{oe(`Auth check failed: ${e instanceof Error?e.message:String(e)}`)}))},[t,x]);let ie=(0,i.useCallback)(e=>{h.current={objective:e},m()},[h,m]),se=(0,i.useCallback)(async(e,n)=>{t.setActiveProfile(e),t.setDefaultEnv(n),(await ee(t,e,n,x)).status==="authenticated"?D(e,n):(R(e),T(n),g("login"))},[t,x,D]),w=(0,i.useCallback)(()=>{let e=t.getActiveProfile(),n=t.getDefaultEnv();if(!e)return null;let s=_(n),o=t.loadBasicAuth(e,n);return new Z(s.controllerBaseUrl,async()=>t.loadCredentials(e,n)?.access_token??null,o,x)},[t,x]),le=(0,i.useCallback)(async()=>{let e=w();if(!e)return null;let n=e.cached??await e.resolve();if(!n)return null;let s=_(t.getDefaultEnv()),o=new O(s.tmsBaseUrl,n.username,n.access_key);try{let p=(await o.listProjects()).find(b=>b.name==="KaneAI Generated");if(p)return{id:p.project_id,name:p.name};let j=await o.createProject("KaneAI Generated");return{id:j.id,name:j.name}}catch{return null}},[w,t]),ae=(0,i.useCallback)(async e=>{let n=w();if(!n)return null;let s=n.cached??await n.resolve();if(!s)return null;let o=_(t.getDefaultEnv()),a=new O(o.tmsBaseUrl,s.username,s.access_key);try{let j=(await a.listFolders(e)).find(ce=>ce.name==="Untitled");if(j)return{id:j.id,name:j.name};let b=await a.createFolder(e,"Untitled");return{id:b.id,name:b.name}}catch{return null}},[w,t]);if(P==="gate")return(0,r.jsx)(c,{paddingX:1,children:(0,r.jsx)(u,{color:"yellow",children:"Checking authentication..."})});if(N)return(0,r.jsxs)(c,{flexDirection:"column",paddingX:1,children:[(0,r.jsx)(u,{color:"red",children:N}),(0,r.jsx)(u,{color:"gray",children:"Press Ctrl+C to exit."})]});if(P==="pick"&&L?.status==="needs_pick")return(0,r.jsx)(fe,{profiles:L.profiles,onSelect:se});if(P==="login")return(0,r.jsx)(z,{devMode:process.env.KANE_DEV_MODE==="1",profiles:t.listProfiles(),onBasicLogin:async(e,n,s,o)=>{let{validateBasicAuth:a}=await import("./validate-basic-O2DP2XJL.js");await a(n,s,o),t.saveBasicAuth(e,n,{username:s,access_key:o}),t.setActiveProfile(e),t.setDefaultEnv(n)},onOAuthLogin:async(e,n)=>{let{LoginFlow:s}=await import("./login-flow-CV76ENHV.js");t.setDefaultEnv(n),t.setActiveProfile(e),await new s(e,n,t).login()},onComplete:(e,n)=>{R(e),T(n),t.setActiveProfile(e),t.setDefaultEnv(n),D(e,n)},onCancel:()=>{E(0,"Login cancelled")}});if(P==="ensure-project"){let e=t.getActiveProfile()??"default",n=t.getDefaultEnv(),s=()=>{if(d==="login"){g("ensure-folder");return}k(t,l,e,n).folderId?y():g("ensure-folder")};return(0,r.jsxs)(c,{flexDirection:"column",children:[(0,r.jsx)(c,{paddingX:1,marginBottom:1,children:(0,r.jsx)(u,{color:"yellow",children:"Project & folder are required to save tests \xB7 Esc to use defaults \xB7 Ctrl+C to exit"})}),(0,r.jsx)(H,{resolver:w(),currentProjectId:l.load().project_id,env:n,onSelect:(o,a)=>{A(t,l,e,n,{projectId:o,projectName:a}),B(p=>[...p,`\u2713 Project: ${a} (${o})`]),s()},onCancel:async()=>{let o=await le();o&&(A(t,l,e,n,{projectId:o.id,projectName:o.name}),B(a=>[...a,`\u2713 Default project: ${o.name} (${o.id})`]),s())}})]})}if(P==="ensure-folder"){let e=t.getActiveProfile()??"default",n=t.getDefaultEnv(),s=t.loadProfileConfig(e,n);return(0,r.jsxs)(c,{flexDirection:"column",children:[(0,r.jsx)(c,{paddingX:1,marginBottom:1,children:(0,r.jsx)(u,{color:"yellow",children:"Project & folder are required to save tests \xB7 Esc to use defaults \xB7 Ctrl+C to exit"})}),(0,r.jsx)(W,{resolver:w(),projectId:s?.project_id??"",currentFolderId:l.load().folder_id,env:n,onSelect:(o,a)=>{A(t,l,e,n,{folderId:o,folderName:a}),B(p=>[...p,`\u2713 Folder: ${a} (${o})`]),y()},onCancel:async()=>{if(!s?.project_id)return;let o=await ae(s.project_id);o&&(A(t,l,e,n,{folderId:o.id,folderName:o.name}),B(a=>[...a,`\u2713 Default folder: ${o.name} (${o.id})`]),y())}})]})}return P==="input"?(0,r.jsxs)(c,{flexDirection:"column",children:[U.length>0&&(0,r.jsx)(c,{flexDirection:"column",paddingX:1,marginBottom:1,children:U.map((e,n)=>(0,r.jsx)(u,{color:"green",children:e},n))}),(0,r.jsx)(V,{onSubmit:ie,onEscape:()=>E(0,"User pressed Escape"),history:ne,placeholder:"Type an objective..."})]}):(0,r.jsx)(r.Fragment,{})}function fe({profiles:h,onSelect:d}){let[f,m]=(0,i.useState)(0),[C,S]=(0,i.useState)(!1);return I((v,t)=>{if(!C){if(t.escape){E(0,"Profile picker cancelled");return}if(t.upArrow&&f>0&&m(l=>l-1),t.downArrow&&f<h.length-1&&m(l=>l+1),t.return){S(!0);let l=h[f];d(l.profile,l.env).catch(()=>S(!1))}}}),(0,r.jsxs)(c,{flexDirection:"column",paddingX:1,children:[(0,r.jsx)(u,{color:"#ff9500",bold:!0,children:"Select a profile:"}),(0,r.jsx)(c,{marginTop:1,flexDirection:"column",children:h.map((v,t)=>(0,r.jsxs)(u,{children:[t===f?"\u276F ":" ",(0,r.jsx)(u,{color:t===f?"#ff9500":"white",bold:t===f,children:v.profile}),(0,r.jsxs)(u,{color:"gray",children:[" [",v.env,"]"]})]},`${v.profile}-${v.env}`))}),C&&(0,r.jsx)(c,{marginTop:1,children:(0,r.jsx)(u,{color:"yellow",children:"Validating credentials..."})})]})}export{_e as a};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{b as K}from"./chunk-3LWTUMDG.js";import{a as j,b as B,c as Y}from"./chunk-AM5S4KG4.js";import{a as U}from"./chunk-DNNZ353O.js";import{d as F}from"./chunk-QM4S2APK.js";import{a as k}from"./chunk-GW5DWAXY.js";import{a as L,b as P,j as G,n as N}from"./chunk-3STZLM5J.js";import{d as V}from"./chunk-M7WQM4UA.js";import{d as E,e as x,g as I}from"./chunk-5YPBPZUR.js";function ee(e,n,t,i,s){let f=t.rows.filter(u=>{let d=i.get(u.temp_ref);return d!==void 0&&d!=="reject"});if(f.length===0)return{record:null,errors:null};let c={version:1,read_basis:n.latestHash,source:{source_id:t.source_id,source_cid:n.heads.get(t.source_id)??""},use_cases:f.map(u=>u.uc)},p=new Map;for(let u of f){let d=i.get(u.temp_ref);typeof d=="object"?p.set(u.temp_ref,{resolution:"edited",edit:d.edited}):p.set(u.temp_ref,{resolution:u.uc.matches_existing&&u.uc.changed?"edited":"approved"})}let g=Y(c,n,t.staged_source_cid);if(g.errors!==null)return{record:null,errors:g.errors};let o=g.proposal,l=c.source.source_cid?D(e,n,c.source.source_cid):null;if(l!==null){o=B(o,l);let u=G(o,j(l),n);if(u.length>0)return{record:null,errors:[{code:"HELD_CITES_STALE",detail:"the source moved after this plan staged \u2014 its quotes no longer verify against the current head; re-run kane-cli maintain reconcile to re-stage"},...u]}}let m=`held-${(n.latestHash??"root").slice(-12)}-${f.length}`;return N({contextDir:e,graph:n,proposal:o,proposalId:m,verdicts:p,by:s,autoName:!0})}function W(e,n,t=[]){let i=K(e,n),s=new Set,f=[],c=l=>{!l||s.has(l)||(s.add(l),f.push(b(e,l)))};for(let l of i.pairs)c(l.scenario),c(l.test);for(let[l,m]of i.verifies){c(l);for(let u of m)c(u)}if(t.length===0)return{stale_refs:f};let p=l=>`${String(l.props.source_id)}\0${String(l.props.anchor)}`,g=new Set;for(let{cid:l}of e.byLabel(E.USECASE))if(e.tipOf(l)===n)for(let m of e.edgesInto(l)){if(m.type!==x.DERIVES)continue;let u=m.props.claim;typeof u=="string"&&t.includes(u)&&g.add(p(m))}if(g.size===0)return{stale_refs:f};let o=new Set;for(let[l,m]of i.verifies)if(e.edgesInto(l).some(d=>d.type===x.DERIVES&&g.has(p(d)))){o.add(b(e,l));for(let d of m)o.add(b(e,d))}return{stale_refs:f,...o.size>0?{direct_refs:[...o]}:{}}}var q="this release plans changes only \u2014 blast-radius impact and drift meaning-checks are not measured, and REMOVE rows are never executed automatically",te="suite untouched; graph updated";function M(e,n){return!e.superseded.has(n)&&e.trust.get(n)!=="archived"}function b(e,n,t=new Set){let i=e.nameOf.get(n);if(i!==void 0)return i;if(t.has(n))return n;t.add(n);for(let[s,f]of e.superseded){if(f!==n)continue;let c=b(e,s,t);if(c!==s)return c}return n}function O(e){return String(e).slice(0,19)}function A(e,n,t){let i=e.edgesFrom(n).find(s=>s.type===t);return i?e.tipOf(i.dst):null}function X(e,n){let t=e.nodeLabel.get(n);if(t===E.USECASE)return n;if(t===E.SCENARIO)return A(e,n,x.BELONGS_TO);if(t===E.AC){let i=A(e,n,x.SCOPED_TO);return i?e.nodeLabel.get(i)===E.USECASE?i:A(e,i,x.BELONGS_TO):null}if(t===E.TEST){let i=A(e,n,x.AUTOMATES);return i?A(e,i,x.BELONGS_TO):null}return null}function z(e,n){let t=[],i=new Map;for(let s of e.derivesInto(n))i.set(String(s.props.source_id),s);for(let[s,f]of i){let c=e.heads.get(s);if(c==null){t.push(`DERIVES pin ${s} @ ${O(f.props.source_cid)} \u2014 source retired`);continue}if(c!==f.props.source_cid){let p=e.convChains.get(s)?.chain;if(p&&p.includes(String(f.props.source_cid)))continue;t.push(`DERIVES pin ${s} @ ${O(f.props.source_cid)} \u2014 source head moved to ${O(c)}`)}}for(let s of e.edgesFrom(n))I(s.type)?.pin?.comparesTo==="dst_tip"&&e.superseded.has(s.dst)&&t.push(`${s.type} pin \u2192 ${b(e,s.dst)} \u2014 target superseded`);return t.join("; ")||"structural pin broken"}var ne=new Set([E.USECASE,E.SCENARIO,E.AC,E.TEST]);function $(e,n){return e.ref<n.ref?-1:e.ref>n.ref?1:0}function D(e,n,t){let i=U(e,n,t);return i===null?null:i.toString("utf8")}function se(e,n,t,i,s){let f=t.props.quote;if(typeof f=="string"&&f.length>0)return i.includes(f);let c=String(t.props.source_cid);s.has(c)||s.set(c,D(e,n,c));let p=s.get(c);if(p===null)return!1;let g=P(p,String(t.props.anchor));return g===null?!1:g.split(`
|
|
3
|
+
`).some(o=>o.trim().length>0&&i.includes(o.trim()))}function oe(e,n,t){let i=L(String(n.props.anchor));if(i?.kind!=="img-part")return!1;let f=(e.mediaOf(String(n.props.source_cid)).images??[]).find(o=>o.ref===i.ref),c=f?.blob;if(c===void 0)return!1;let p=e.mediaOf(t).images??[];if(p.some(o=>o.blob===c))return!0;let g=f?.appearance;return g!==void 0&&p.filter(o=>o.appearance===g).length===1}var J=128*1024,Q=64*1024;function re(e,n){let t=e.split(`
|
|
4
|
+
`),i=n.split(`
|
|
5
|
+
`),s=0;for(;s<t.length&&s<i.length&&t[s]===i[s];)s++;let f=t.length,c=i.length;for(;f>s&&c>s&&t[f-1]===i[c-1];)f--,c--;if(f===s&&c===s)return"";let p=t.slice(s,f),g=i.slice(s,c),l=ie(p,g,2e3),m=[];if(l===null)m.push(`@@ old L${s+1}-L${f} \u2192 new L${s+1}-L${c} @@`,...p.map(u=>`- ${u}`),...g.map(u=>`+ ${u}`));else{let u=l.map((a,h)=>a.op==="="?-1:h).filter(a=>a>=0),d=0;for(;d<u.length;){let a=d;for(;a+1<u.length&&u[a+1]-u[a]<=3;)a++;let h=Math.max(u[d]-1,0),v=Math.min(u[a]+1,l.length-1),y=l.slice(h,v+1),S=s+(y[0].ai??0)+1,_=s+(y[0].bi??0)+1,r=y.filter(R=>R.op!=="+").length,w=y.filter(R=>R.op!=="-").length;m.push(`@@ old L${S}-L${S+Math.max(r-1,0)} \u2192 new L${_}-L${_+Math.max(w-1,0)} @@`);for(let R of y)m.push(R.op==="="?` ${R.line}`:`${R.op} ${R.line}`);d=a+1}}return m.join(`
|
|
6
|
+
`)}function ie(e,n,t){let i=e.length,s=n.length,f=Math.min(i+s,t),c=new Map([[1,0]]),p=[],g=!1;for(let u=0;u<=f&&!g;u++){p.push(new Map(c));for(let d=-u;d<=u;d+=2){let a=d===-u||d!==u&&(c.get(d-1)??0)<(c.get(d+1)??0)?c.get(d+1)??0:(c.get(d-1)??0)+1,h=a-d;for(;a<i&&h<s&&e[a]===n[h];)a++,h++;if(c.set(d,a),a>=i&&h>=s){g=!0;break}}}if(!g)return null;let o=i,l=s,m=[];for(let u=p.length-1;u>0;u--){let d=p[u],a=o-l,h=a===-u||a!==u&&(d.get(a-1)??0)<(d.get(a+1)??0)?a+1:a-1,v=d.get(h)??0,y=v-h;for(;o>v&&l>y;)m.push({op:"=",line:e[o-1],ai:o-1,bi:l-1}),o--,l--;u>0&&(o===v?(m.push({op:"+",line:n[l-1],ai:o,bi:l-1}),l--):(m.push({op:"-",line:e[o-1],ai:o-1,bi:l}),o--))}for(;o>0&&l>0;)m.push({op:"=",line:e[o-1],ai:o-1,bi:l-1}),o--,l--;for(;o>0;)m.push({op:"-",line:e[o-1],ai:o-1,bi:0}),o--;for(;l>0;)m.push({op:"+",line:n[l-1],ai:0,bi:l-1}),l--;return m.reverse()}function ce(e){let n=Buffer.byteLength(e,"utf8");if(n<=J+Q)return{diff:e,truncated:!1};let t=Buffer.from(e,"utf8"),i=J;for(;i>0&&(t[i]&192)===128;)i--;let s=n-Q;for(;s<n&&(t[s]&192)===128;)s++;let f=t.subarray(0,i).toString("utf8"),c=t.subarray(s).toString("utf8");return{diff:`${f}
|
|
7
|
+
\u2026 [diff truncated: ${n-i-(n-s)} bytes omitted] \u2026
|
|
8
|
+
${c}`,truncated:!0}}function ae(e,n){let t=k(e),i=t.heads.get(n);if(typeof i!="string")return null;let s=[];for(let d of V(e).records){let a=d.source_head_moves?.[n];a!==void 0&&a!==s[s.length-1]&&s.push(a)}let f=s.lastIndexOf(i),c=f>0?s[f-1]:null;if(typeof c!="string"||c===i)return null;let p=D(e,t,c),g=D(e,t,i);if(p===null||g===null)return null;let{diff:o,truncated:l}=ce(re(p,g)),m=new Set,u=[];for(let d of t.edgesFrom(c))d.type!==x.DERIVES||t.nodeLabel.get(d.dst)!==E.USECASE||m.has(d.dst)||(m.add(d.dst),u.push({id:d.dst,title:String(t.getNode(d.dst)?.content.title??"")}));return{source_id:n,old_head:c,new_head:i,diff:o,...l?{truncated:!0}:{},prior_ucs:u}}function de(e,n,t){let i=e.getNode(n)?.content??{},s=e.getNode(t)?.content??{},c=[...new Set([...Object.keys(i),...Object.keys(s)])].sort().filter(p=>JSON.stringify(i[p])!==JSON.stringify(s[p]));return c.length>0?`updated: ${c.join(", ")}`:"updated"}function le(e,n,t,i,s,f,c){let p=new Set((c?.rows??[]).map(a=>a.matched_cid).filter(a=>!!a)),g=[];for(let[a,h]of t.superseded)h===null||a===h||n.superseded.has(a)||t.nodeLabel.get(a)===E.USECASE&&g.push({kind:"MODIFY",ref:b(t,a),old_cid:a,new_cid:h,summary:de(t,a,h)});let o=f.map(a=>({kind:"ADD",ref:b(t,a),cid:a}));for(let a of c?.rows??[])a.kind==="MODIFY"&&a.matched_cid?g.push({kind:"MODIFY",ref:b(t,a.matched_cid),old_cid:a.matched_cid,new_cid:null,summary:`${a.why} (staged)`}):a.kind==="ADD"&&o.push({kind:"ADD",ref:a.title,cid:null});let l=[],m=D(e,t,s),u=new Map;for(let{cid:a}of t.byLabel(E.USECASE)){if(!M(t,a)||p.has(a))continue;let h=t.derivesInto(a),v=h.filter(_=>String(_.props.source_id)===i);v.length===0||v.some(_=>_.props.source_cid===s)||v.some(_=>{let r=String(_.props.anchor),w=L(r);return w?.kind==="img-whole"?!1:w?.kind==="img-part"?oe(t,_,s):m!==null&&se(e,t,_,m,u)})||h.some(_=>{let r=String(_.props.source_id);if(r===i)return!1;let w=t.heads.get(r);return w!=null})||l.push({kind:"ARCHIVE",ref:b(t,a),cid:a,why:`evidence decayed: no quote from ${i} relocates into @${O(s)}, no other live source, no fresh evidence this run`,impact:W(t,t.tipOf(a))})}let d=(a,h)=>a.ref<h.ref?-1:a.ref>h.ref?1:0;return[...g.sort(d),...o.sort(d),...l.sort(d)]}function Re(e,n,t,i,s){let f=n.rows.find(d=>d.temp_ref===t);if(!f)return{ok:!1,message:`held item ${t} missing from the plan artifact`};let c=f,p=k(e);if(c.matched_cid){let d=p.tipOf(c.matched_cid);if(p.superseded.get(d)===null)return{ok:!1,message:`use-case for "${c.title}" was retired meanwhile \u2014 nothing to update`};d!==c.matched_cid&&(c={...c,matched_cid:d,uc:{...c.uc,matches_existing:{cid:d}}})}let g=s?{edited:s}:"approve",o=ee(e,p,{source_id:n.source_id,...n.staged_source_cid!==void 0?{staged_source_cid:n.staged_source_cid}:{},rows:[c]},new Map([[c.temp_ref,g]]),i);if(o.errors)return{ok:!1,message:o.errors.map(d=>`${d.code}: ${d.detail}`).join("; ")};let l=k(e),m=c.matched_cid?l.tipOf(c.matched_cid):o.record?.nodes.find(d=>d.label==="usecase")?.cid??o.record?.review[0]?.id;return{ok:!0,ref:m?b(l,m):c.title,kind:c.kind}}async function ve(e,n,t,i={}){let s=k(e),f=s.heads.get(n)??null,c=new Set(s.staleList().filter(r=>r.state==="stale").map(r=>r.cid)),p=await t.reingest(n);if(p.status==="unchanged"&&!i.resumeHeld)return{source_id:n,changed:!1,head:{status:p.status,before:f,after:p.cid},note:`nothing to reconcile \u2014 ${n} is unchanged`,skipped_arms:q,changeset:[],rows:[]};let g=i.resumeHeld?{minted:[],matched:[],held:i.resumeHeld}:await t.reextract(n),o=k(e),l=g.minted.map(r=>{let w=b(o,r);return{kind:"ADD",origin:"content-change",ref:w,reason:`new use-case extracted from ${n}`,provenance:`extraction commit \u2014 DERIVES ${n} @ ${O(p.cid)}`,action:`kane-cli design tests --use-case ${w}`}}),m=o.staleList().filter(r=>r.state==="stale"&&!c.has(r.cid)&&M(o,r.cid)).map(r=>r.cid),u=m.map(r=>{let w=b(o,r),R=ne.has(o.nodeLabel.get(r)??"");return{kind:"MODIFY",origin:"structural-stale",ref:w,reason:"stale (structural)",provenance:z(o,r),action:R?`kane-cli maintain evolve ${w}`:`kane-cli design explain ${w}`}}),d=[],a=[];for(let r of g.held?.rows??[])if(r.kind==="ADD")d.push({kind:"ADD",origin:"content-change",ref:r.title,held_ref:r.temp_ref,reason:`${r.why} (staged \u2014 commits on approval)`,provenance:`staged extraction of ${n} @ ${O(p.cid)}`,action:"approve to commit + design"});else{let w=r.matched_cid?o.tipOf(r.matched_cid):null,R=w?o.getNode(w)?.content.criteria??[]:[],T=(r.uc.updated?.criteria??[]).map(C=>typeof C=="string"?C:C.text),Z=[...T.filter(C=>!R.includes(C)),...r.uc.updated?.criteria!==void 0?R.filter(C=>!T.includes(C)):[]],H=w?W(o,w,Z):void 0;a.push({kind:"MODIFY",origin:"content-change",ref:r.matched_cid?b(o,r.matched_cid):r.title,held_ref:r.temp_ref,reason:`${r.why} (staged \u2014 commits on approval)`,provenance:`staged extraction of ${n} @ ${O(p.cid)}`,action:"approve to commit the updated version (old\u2192new redirect)",...H?{impact:H}:{}})}let h=new Set;for(let r of[...g.minted,...g.matched])h.add(o.tipOf(r));for(let r of g.held?.rows??[])r.matched_cid&&h.add(o.tipOf(r.matched_cid));for(let r of m){let w=X(o,o.tipOf(r));w&&o.nodeLabel.get(w)===E.USECASE&&h.add(o.tipOf(w))}let v=[];for(let r of await F(o,"design")){if(r.kind!=="no-verifies")continue;let w=o.resolve(r.ref);if(!w)continue;let R=X(o,w.tip);!R||!h.has(o.tipOf(R))||v.push({kind:"ADD",origin:"content-change",ref:r.ref,reason:r.why,provenance:`gaps engine (design) \u2014 uncovered AC of touched use-case ${b(o,R)}`,action:r.ready_command})}let y=[];for(let{cid:r}of o.byLabel(E.USECASE))M(o,r)&&o.stale(r)==="orphaned"&&y.push({kind:"REMOVE",ref:b(o,r),reason:"orphaned \u2014 no live source evidences this use-case",provenance:z(o,r),action:"plan-only \u2014 REMOVE is not executed in this release"});let S=new Set,_=[...l.sort($),...d.sort($),...v.sort($),...a.sort($),...u.sort($),...y.sort($)].filter(r=>{let w=`${r.kind}\0${r.ref}`;return S.has(w)?!1:(S.add(w),!0)});return{source_id:n,changed:!0,head:{status:p.status,before:f,after:p.cid},note:te,skipped_arms:q,changeset:le(e,s,o,n,p.cid,g.minted,g.held),rows:_,...g.held?{held:g.held}:{}}}function be(e,n){return async t=>{let{ingestFile:i}=await import("./ingest-AL6CABJT.js"),{convertPdf:s}=await import("./pdf-convert-S7VYE6AV.js"),{convertDocx:f}=await import("./docx-convert-ZBVQO2LG.js"),c=await i({contextDir:e,filePath:n,asId:t,converters:{pdf:s,docx:f}});return{status:c.status,cid:c.cid}}}function ye(e,n={}){return async t=>{let i=[],[{runExtract:s},{resolveAgentAuthEnv:f},{runAgent:c},{preflightTurn:p}]=await Promise.all([import("./run-VRVH4VO3.js"),import("./spawner-AH5FTUYU.js"),import("./bridge-T4HL4TG7.js"),import("./turn-preflight-JGYT7LXP.js")]),g=await f(),o=new Set(k(e).byLabel(E.USECASE).map(S=>S.cid)),l=ae(e,t)??void 0,m=0,u=await s({mode:"override",source:t,...l?{changeContext:l}:{}},{contextDir:e,agent:c,preflightTurn:()=>p(g),ask:async()=>[],review:async S=>{if(!n.stage)return new Map(S.map(r=>[r.temp_ref,{resolution:r.matches_existing&&r.changed?"edited":"skipped"}]));let _=new Map;for(let r of S){if(r.matches_existing&&!r.changed){_.set(r.temp_ref,{resolution:"skipped"});continue}i.push({kind:r.matches_existing?"MODIFY":"ADD",temp_ref:r.temp_ref,title:r.title,why:r.matches_existing?`updated: ${Object.keys(r.updated??{}).join(", ")||"content"}`:`newly extracted from ${t}`,...r.matches_existing?{matched_cid:r.matches_existing.cid,updated:r.updated}:{},uc:r}),_.set(r.temp_ref,{resolution:"rejected"})}return _},confirmStale:async()=>!1,out:S=>process.stderr.write(S+`
|
|
9
|
+
`),progress:S=>process.stderr.write(S+`
|
|
10
|
+
`),emit:S=>{S.type==="commit"&&typeof S.assumed=="number"&&(m+=S.assumed)},isTTY:!1,auth:g});if(u!==0)throw new Error(`reconcile: re-extract of ${t} failed (exit ${u})`);let d=k(e),a=d.heads.get(t),h=[],v=[];if(typeof a=="string"){let S=new Set;for(let _ of d.edgesFrom(a))_.type!==x.DERIVES||d.nodeLabel.get(_.dst)!==E.USECASE||S.has(_.dst)||(S.add(_.dst),!(n.stage&&d.trust.get(_.dst)==="archived")&&(o.has(_.dst)?v:h).push(_.dst))}let y=k(e).heads.get(t);return{minted:h,matched:v,defaultsTaken:m,...n.stage?{held:{source_id:t,...y!=null?{staged_source_cid:y}:{},rows:i}}:{}}}}export{Re as a,ve as b,be as c,ye as d};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{c as re,d as ie,e as se}from"./chunk-VGFTNLQQ.js";import{a as ne}from"./chunk-L2TV4G56.js";import{b as G,d as te}from"./chunk-5KFS3GAZ.js";import{d as ee}from"./chunk-NVGBE2DR.js";var ce=new Set(["approve","edit","reject"]);function le(s,t){return`chatop:${t}:${s.target??"new"}:${s.op}:${s.seq}`}function de(s,t,b,k){let c=le(s,t),h=s.payload;switch(s.op){case"approve":return{kind:"approve",target:s.target,expectedCid:s.expected_cid,eventId:c};case"edit":{let{reason:o,...y}=h;return{kind:"edit",target:s.target,expectedCid:s.expected_cid,edit:y,reason:o,eventId:c}}case"enhance":return{kind:"enhance",target:s.target,expectedCid:s.expected_cid,edges:h.edges??[],eventId:c};case"reject":return{kind:"reject",target:s.target,expectedCid:s.expected_cid,reason:h.reason??"",redirectTo:h.redirect_to,eventId:c};case"add":{let o=h.proposal_item??{},y=String(o.label??"");if(!b.mint_gate.includes(y))throw new Error(`GATED_LABEL: cannot mint "${y}" (gate: ${b.mint_gate.join(", ")})`);let l=o.cite??{},p=o.conv_source_id??k;if(!p||typeof l.turn!="number"||!l.quote)throw new Error("INVALID_ADD: a chat add requires a conversation cite {turn, quote} and conv_source_id");let _=o.content,w=_&&typeof _=="object"&&!Array.isArray(_)&&Object.keys(_).length>0?_:null,v=new Set(["label","cite","conv_source_id","content","rationale","edges"]),C=w??Object.fromEntries(Object.entries(o).filter(([R])=>!v.has(R)));return{kind:"add",label:y,content:C,cite:{turn:l.turn,quote:l.quote},convSourceId:p,rationale:o.rationale,eventId:c}}}}function oe(s,t,b={}){let k=b.turn??0,c=[],h=[];for(let l of s)(l.op==="add"||l.op==="enhance")&&h.push(l);let o=new Map;for(let l of s){if(!ce.has(l.op)||!l.target)continue;let p=o.get(l.target)??[];p.push(l),o.set(l.target,p)}for(let[l,p]of o){let _=Math.max(...p.map(v=>v.seq)),w=p.filter(v=>v.seq===_);if(w.length>1){c.push({target:l,seq:_,kinds:w.map(v=>v.op)});continue}h.push(w[0])}return{chatOps:h.sort((l,p)=>l.seq-p.seq).map(l=>de(l,k,t,b.convSourceId)),ambiguous:c}}function ge(s){let t=[];return s.questions.forEach((b,k)=>{if(s.resolution[k])return;let c=b.recommended_index!=null?b.options[b.recommended_index]?.label:void 0;c!=null&&t.push(b.risk==="high"?`${c} \u203C`:c)}),t.length>3?`${t.slice(0,3).join(" \xB7 ")} \xB7 +${t.length-3} more`:t.join(" \xB7 ")}function ae(s){let t=s.text.replace(/\?+\s*$/,"");return t.length<=36?t:`${t.slice(0,33)}\u2026`}function pe(s){return s.use_cases??[]}var me={acs:"acceptance criteria",scenarios:"scenarios",exercises:"exercises",tests:"tests",gaps:"gaps"};function fe(s){let t=[],b=[],k=(o,y)=>{y.length!==0&&(b.push(o),t.push(...y))},c=o=>typeof o=="string"&&/^[a-z]{1,4}\d{1,4}$/i.test(o)?o:null,h=o=>{let y=c(o.automates)??"1 scenario",l=o.verifies??[],p=l.map(c).filter(v=>v!==null).slice(0,2),_=l.length-p.length,w=p.length?`${p.join(" ")}${_>0?` +${_}`:""}`:`${l.length} ACs`;return`covers ${y} \xB7 verifies ${w}`};return k("acs",(s.acs??[]).map(o=>({temp_ref:o.temp_ref,title:o.text,kind:"ac",badge:String(o.kind),extra:{...o.expected_answer?{expects:`${String(o.expected_answer.operator??"")} \xB7 ${String(o.expected_answer.operand??"")}`}:{},"scoped to":o.scoped_to??"(use-case)"}}))),k("scenarios",(s.scenarios??[]).map(o=>({temp_ref:o.temp_ref,title:o.title,kind:"scenario",badge:o.case_type,why:o.intent,depends_on_hint:o.depends_on??[],extra:{technique:o.technique_notes}}))),k("exercises",(s.exercises??[]).map(o=>({temp_ref:c(o.scenario)??"wiring",title:`${c(o.scenario)??"scenario"} exercises ${c(o.ac)??"1 AC"}`,kind:"exercise",badge:"wires",why:o.rationale}))),k("tests",(s.tests??[]).map(o=>({temp_ref:o.temp_ref,title:o.title,kind:"test",why:h(o),depends_on_hint:o.reuses??[],extra:{automates:String(o.automates??"?"),verifies:(o.verifies??[]).join(", "),check:o.check?`${String(o.check.kind)} vs ${String(o.check.verified_against)}`:"?"}}))),k("gaps",(s.gaps??[]).map(o=>({temp_ref:o.temp_ref??o.ref??"?",title:String(o.question?.header??o.kind),kind:"gap",badge:o.kind,why:o.risk_rationale}))),{items:t,heading:b.join(" + ")||"design"}}function ve(s={}){let t={turns:[],thinking:re(),pending:null,confirm:null,status:"idle",ledger:[],activeTurn:null,stream:null,checkpoint:!1},b=e=>{let n=[],r=e.minted.map(a=>a.slug).filter(Boolean);r.length&&n.push(`added ${r.join(", ")}`);let i=e.applied.length-e.minted.length;return i>0&&n.push(`${i} change${i===1?"":"s"} applied`),e.staleDelta.length&&n.push(`stales ${e.staleDelta.length}`),n.join(" \xB7 ")||"no changes"},k=[];s.onRender&&k.push(s.onRender);let c=0,h=0,o=null,y=null,l=null,p=[],_=0,w=e=>{if(!(!l||!s.contextDir||!e.trim()))try{let n=s.refreshGraph?.()??s.graph;if(!n)return;te({contextDir:s.contextDir,graph:n,sourceId:l,text:e,by:s.by??{kind:"human",id:"owner"}})}catch{}},v=e=>{if(!l||!s.contextDir)return;let n=s.refreshGraph?.()??s.graph,r=n?.heads.get(l),i=n?.convChains.get(l);if(!n||typeof r!="string"||!i)return;let a=n.getNode(r)?.content?.blob,u=typeof a=="string"?ee(s.contextDir,a)?.toString("utf8")??"":"";if(u)for(let f of e){if(f.kind!=="add"||f.convSourceId!==l)continue;let Q=G(u,f.cite.turn);if(!(Q!==null&&Q.includes(f.cite.quote)))for(let $=i.turns;$>=1;$--){let W=G(u,$);if(W!==null&&W.includes(f.cite.quote)){f.cite={...f.cite,turn:$};break}}}},C=null,R=new Map,U=e=>JSON.stringify([e.id,e.text,e.options.map(n=>n.label)]),T=null,z=new Map,B=new Map,H=null,m=()=>{I&&(clearTimeout(I),I=null);for(let e of k)e()},I=null,K=()=>{I||(I=setTimeout(()=>{I=null;for(let e of k)e()},80))},d=e=>{t.ledger.push(e)},O=null,P=!1,N=(e=!1)=>{O?d({kind:"agent",text:O}):e&&P&&d({kind:"note",text:'chat to refine ("looks good" approves; /done finishes)'}),O=null,P=!1},ue=()=>{O=null,P=!1},q=null,F=e=>{if(q){if(e)for(let n of q.items){let r=e.get(n.temp_ref);r&&(n.logical_id=r)}d({kind:"turn",...q}),q=null}},j=()=>{F(),t.activeTurn&&(t.activeTurn=null)},J=(e,n)=>n.choice||(n.selected_index!=null?e.options[n.selected_index]?.label??"?":"?"),L=()=>{let e=t.pending;if(!e)return;if(!e.resolution.every(Boolean)){e.cursor=e.resolution.findIndex(i=>i===null);return}let n=e.questions.map((i,a)=>{let u=e.resolution[a];return u.form==="deferred"?{id:i.id,selected_index:null,free_text:null}:{id:i.id,selected_index:u.selected_index,free_text:u.free_text}});t.pending=null,t.status=t.status==="pausing"?"pausing":"streaming",t.status==="streaming"&&(t.busySince=Date.now());let r=C;C=null,r?.(n)},A=(e,n)=>{let r=t.pending,i=r.questions[e],a=r.resolution[e];r.resolution[e]=n;let u=ae(i);a?d({kind:"answer",receipt:{form:"changed",qNum:e+1,stub:u,choice:J(i,n),prev:a.choice}}):n.form==="deferred"?d({kind:"answer",receipt:{form:"deferred",qNum:e+1,stub:u}}):d({kind:"answer",receipt:{form:n.form,qNum:e+1,stub:u,choice:J(i,n)}})},V=()=>{let e=t.pending;e&&(e.questions.forEach((n,r)=>{e.resolution[r]||A(r,{form:"deferred",selected_index:null,free_text:null,choice:""})}),L())},E=new Map,Y=e=>{E.clear();let n={high:0,med:1,low:2};return e=e.map((r,i)=>({q:r,i})).sort((r,i)=>(n[r.q.risk]??3)-(n[i.q.risk]??3)||r.i-i.i).map(({q:r})=>r),{questions:e,cursor:0,resolution:e.map(()=>null)}};return{state:t,explainLines(e){if(!s.explain||!s.graph||s.contextDir===void 0)return null;let n=s.explain(s.contextDir,s.graph,e);return n.target?[`${n.target.label} ${n.target.slug??n.target.cid.slice(0,19)}:`,...n.entries.map(r=>` [${r.kind}] ${r.rationale??r.detail}`)]:null},explainRef(e){if(!s.explain||!s.graph||s.contextDir===void 0){d({kind:"note",text:"explain isn't available here"}),m();return}let n=s.explain(s.contextDir,s.graph,e),r=n.target?[`${n.target.label} ${n.target.slug??n.target.cid.slice(0,19)}:`,...n.entries.map(i=>` [${i.kind}] ${i.rationale??i.detail}`)].join(`
|
|
3
|
+
`):`unknown ref: ${e}`;d({kind:"note",text:r}),m()},subscribe(e){return k.push(e),()=>{let n=k.indexOf(e);n>=0&&k.splice(n,1)}},submit(e){if(t.confirm&&(t.confirm=null),!t.pending){if(!o){t.turns.push({role:"user",text:e}),d({kind:"user",text:e}),t.notice="the agent isn't running \u2014 nothing sent",m();return}for(t.notice=void 0,t.checkpoint=!1,N(),t.turns.push({role:"user",text:e}),d({kind:"user",text:e}),w(e),t.status="streaming",t.busySince=Date.now(),t.error=void 0,h+=1;p.length>0;)h+=1,o({type:"user_message",message_id:`u${h}-receipt`,text:p.shift()});o({type:"user_message",message_id:`u${h}`,text:e}),m()}},attachSender(e){let n=o;return o=e,()=>{o=n}},attachOnCommitted(e){y=e},attachConversationSource(e){l=e},attachSession(e){s.session=e},holdReceipt(e){p.push(e),t.checkpoint=!0,m()},drainHeldReceipts(){return p.splice(0,p.length)},peekHeldReceipts(){return[...p]},submitAnswer(e,n){let r=t.pending,i=r?.questions[e],a=i?.options[n]?.label;!r||!i||a==null||(A(e,{form:"answered",selected_index:n,free_text:null,choice:a}),L(),m())},submitFreeText(e,n){let r=t.pending,i=r?.questions[e],a=n.trim();!r||!i||!a||(A(e,{form:"answered",selected_index:null,free_text:a,choice:a}),L(),m())},deferBatch(e){let n=t.pending;if(!n||!C)return;n.questions.forEach((i,a)=>{let u=n.resolution[a];u&&u.form==="answered"&&R.set(U(i),u)}),t.pending=null,t.status=t.status==="pausing"?"pausing":"streaming",t.status==="streaming"&&(t.busySince=Date.now()),d({kind:"note",text:`questions set aside \u2014 source ${e.source_id} landed; the agent reads it next`});let r=C;C=null,r({deferred:!0,ingested:e}),m()},submitAnswerWithText(e,n,r){let i=t.pending,a=i?.questions[e],u=a?.options[n]?.label;if(!i||!a||u==null)return;let f=r.trim();A(e,{form:"answered",selected_index:n,free_text:f||null,choice:f?`${u} \u2014 ${f}`:u}),L(),m()},toggleOption(e,n){let r=t.pending?.questions[e];if(!r||r.options[n]==null)return;let i=E.get(e)??new Set;i.has(n)?i.delete(n):i.add(n),E.set(e,i),m()},multiSelection(e){return[...E.get(e)??[]].sort((n,r)=>n-r)},confirmMulti(e){let n=t.pending,r=n?.questions[e];if(!n||!r)return;let i=[...E.get(e)??[]].sort((u,f)=>u-f).map(u=>r.options[u]?.label).filter(u=>u!=null);if(i.length===0)return;E.delete(e);let a=i.join(", ");A(e,{form:"answered",selected_index:null,free_text:a,choice:a}),L(),m()},goWithRecommendations(){let e=t.pending;if(!e)return{picks:""};let n=ge(e),r=null;return e.questions.forEach((i,a)=>{if(e.resolution[a])return;let u=i.recommended_index,f=u!=null?i.options[u]?.label:void 0;if(f==null){r===null&&(r=a);return}A(a,{form:"assumed",selected_index:u,free_text:null,choice:f})}),r!==null?(e.cursor=r,m(),{blocked:r}):(L(),m(),{picks:n})},reopenQuestion(){let e=t.pending;if(!e)return;let n=e.cursor<0?e.questions.length:e.cursor;for(let r=n-1;r>=0;r--)if(e.resolution[r]){e.cursor=r,m();return}},continueParked(){if(o){for(t.checkpoint=!1,d({kind:"continued"});p.length>0;)h+=1,o({type:"user_message",message_id:`u${h}-receipt`,text:p.shift()});h+=1,o({type:"user_message",message_id:`u${h}`,text:"continue"}),t.status="streaming",t.busySince=Date.now(),m()}},note(e){d({kind:"note",text:e}),m()},aliasOf(e){return B.get(e)},registerAliases(e){for(let n of e)B.set(n.ref,n.cid);F(new Map(e.filter(n=>n.id).map(n=>[n.ref,n.id]))),m()},setWorking(e){if(e!=null){if(t.status!=="idle"&&t.status!=="working")return;t.status==="idle"&&(t.busySince=Date.now()),t.status="working",t.workingLabel=e}else{if(t.status!=="working")return;t.status="idle",t.workingLabel=void 0,t.busySince=void 0}m()},ledger(e){e.kind==="commit"&&F(),(e.kind==="pause"||e.kind==="error"||e.kind==="summary")&&(j(),N()),(e.kind==="summary"||e.kind==="pause")&&(t.stream=null),d(e),e.kind==="commit"&&(e.ok?N(!0):ue()),m()},senderAlive(){return o!=null},completeSession(){V(),o?.({type:"session_complete"}),t.status="idle",t.busySince=void 0,m()},requestPause(){V(),t.status="pausing",t.busySince=void 0;let e=o;Promise.resolve().then(()=>e?.({type:"pause"})),m()},ask(e){t.pending=Y(e),z=new Map(e.map((r,i)=>[r.id,i+1])),t.status="awaiting-input",t.busySince=void 0;let n=new Promise(r=>{C=r});if(R.size>0){let r=0;e.forEach((i,a)=>{let u=U(i),f=R.get(u);f&&(R.delete(u),A(a,{...f}),r+=1)}),r>0&&d({kind:"note",text:`your earlier answer${r>1?"s are":" is"} pre-filled \u2014 press enter to send, or pick a different answer`})}return m(),n},attachIngest(e){let n=T;return T=e,()=>{T===e&&(T=n)}},canIngest(){return T!==null},async ingestAttach(e){let n=T,r=e.trim();if(!n||!r)return;let i;try{i=await n(r)}catch(a){i={ok:!1,error:a instanceof Error?a.message:String(a)}}i.ok||(d({kind:"note",text:i.error??"the source could not be ingested"}),m())},noteCoercion(e,n){d({kind:"answer",receipt:{form:"assumed",qNum:z.get(e.id)??0,stub:ae(e),choice:n,note:"your typed answer couldn't be used here"}}),m()},onAgentEvent(e){switch(e.type){case"reasoning_delta":case"reasoning_done":case"tool_activity":case"decision_activity":{let n=t.thinking;if(t.thinking=se(n,e),t.thinking!==n){if(e.type==="reasoning_done"&&e.present)d({kind:"thinking",tookMs:e.took_ms});else if(e.type==="tool_activity"&&e.status!=="started")d({kind:"tool",name:e.name,status:e.status==="done"?"ok":e.status,detail:e.detail});else if(e.type==="decision_activity"){let r=`\xB7 ${ie(e)}`,i=t.ledger.length-1;for(;i>=0&&t.ledger[i].kind==="tool";)i--;let a=t.ledger[i];a&&a.kind==="note"&&a.text===r||d({kind:"note",text:r})}}if(e.type==="reasoning_delta"){K();return}break}case"usage":t.credits={turn:e.credits,total:e.total_credits};break;case"text_delta":{let n=H;if(n&&(e.turn_id<n.turn_id||e.turn_id===n.turn_id&&e.attempt<n.attempt))return;(!n||n.turn_id!==e.turn_id||n.attempt!==e.attempt)&&(H={turn_id:e.turn_id,attempt:e.attempt},t.stream={text:""}),t.stream={text:(t.stream?.text??"")+e.text},K();return}case"progress":break;case"proposal":{c+=1,j(),t.stream=null,t.busySince&&(d({kind:"note",text:`\u2713 done in ${Math.max(1,Math.round((Date.now()-t.busySince)/1e3))}s`}),t.busySince=void 0);let n=pe(e.proposal),r=s.dedupFlags?.(e.proposal);if(r)for(let i of n){let a=r.get(i.temp_ref);a&&(i.matches_existing=a)}t.turns.push({role:"agent",turnIndex:c,items:n,text:e.narrative}),O=e.narrative??null,P=!0,t.activeTurn={turnIndex:c,heading:"use-cases",items:n},q={turnIndex:c,heading:"use-cases",items:n},(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"design":{c+=1,j(),t.stream=null,t.busySince&&(d({kind:"note",text:`\u2713 done in ${Math.max(1,Math.round((Date.now()-t.busySince)/1e3))}s`}),t.busySince=void 0);let{items:n,heading:r}=fe(e.design),i=e.design.phase==="wiring"?"acceptance criteria + exercises":r.split(" + ").map(a=>me[a]??a).join(" + ");d({kind:"banner",text:`designing: ${i}`}),t.turns.push({role:"agent",turnIndex:c,items:n,itemsHeading:r,text:e.narrative}),O=e.narrative??null,P=!0,t.activeTurn={turnIndex:c,heading:r,items:n},q={turnIndex:c,heading:r,items:n},(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"ask_user":t.pending=Y(e.questions),t.status="awaiting-input",t.busySince=void 0;break;case"chat_ops":{c+=1,j(),t.stream=null,t.status==="streaming"&&(t.status="idle",t.busySince=void 0);let n=e.chat_ops??e,r=Array.isArray(n.ops)?n.ops:[],i=n.text??e.text??"",a=s.refreshGraph?.()??s.graph,u=g=>B.get(g)??g,f=r.map(g=>{if(!g.target)return g;let x=u(g.target),S=g.expected_cid;if(S==null&&a){let Z=a.resolve(x);Z&&(S=a.tipOf(Z.cid))}let D=g.payload?.redirect_to,M=D&&u(D);return x===g.target&&S===g.expected_cid&&M===D?g:{...g,target:x,expected_cid:S,...M!==D?{payload:{...g.payload,redirect_to:M}}:{}}}),Q;try{if(!Array.isArray(n.ops))throw new Error("the agent sent an unreadable change set (no ops array) \u2014 say it again in different words");Q=oe(f,s.descriptor??{mint_gate:[]},{turn:c,...l?{convSourceId:l}:{}})}catch(g){t.error=g instanceof Error?g.message:String(g),t.turns.push({role:"agent",turnIndex:c,text:i,narration:t.error}),i&&d({kind:"agent",text:i}),d({kind:"error",title:t.error,detail:[]});break}let{chatOps:$,ambiguous:W}=Q;if(W.length>0){let g=W[0];t.confirm={kind:"ambiguity-confirm",prompt:`did you mean edit or ${g.kinds.filter(x=>x!=="edit").join("/")} on ${g.target}?`},t.turns.push({role:"agent",turnIndex:c,text:i}),i&&d({kind:"agent",text:i});break}if(v($),s.commitChatTurn&&$.length>0){let g=s.commitChatTurn({contextDir:s.contextDir??"",graph:s.refreshGraph?.()??s.graph,ops:$,by:s.by??{kind:"human",id:"owner"},...s.descriptor?.mint_gate?{mintable:s.descriptor.mint_gate}:{},...s.session?.state?.sid?{sid:s.session.state.sid}:{}});if(g.errors)t.error=g.errors.map(x=>x.detail).join("; "),t.turns.push({role:"agent",turnIndex:c,text:i}),d({kind:"commit",ok:!1,line:"commit failed \u2014 nothing landed",warnings:g.errors.map(x=>`${x.code}: ${x.detail}`)}),p.push(["COMMIT FAILED (chat turn) \u2014 nothing landed; do not assume any of your last ops applied.",...g.errors.map(x=>`- ${x.code}: ${x.detail}`),...g.errors.some(x=>x.code==="UNKNOWN_FIELD")?["If you were changing citations or matched-existing content, that is proposal territory (approve/re-propose) \u2014 a chat edit can only replace a node's own schema fields."]:[]].join(`
|
|
4
|
+
`)),i&&d({kind:"agent",text:i});else{g.applied.length>0&&s.session?.markApplied(g.applied);let x=b(g);t.turns.push({role:"agent",turnIndex:c,text:i,narration:x}),d({kind:"commit",ok:!0,line:x});let S=s.refreshGraph?.();if(S&&y&&y(S),S)try{_+=1;let X=s.descriptor?.mint_gate?.includes("usecase")?"extract":"design",D=ne({verb:X,commitN:_,phase:"chat",committed:g.minted.map(M=>({cid:M.cid,...M.slug?{logical_id:M.slug}:{}}))},S);p.push(D.text)}catch{}i&&d({kind:"agent",text:i})}}else t.turns.push({role:"agent",turnIndex:c,text:i}),i&&d({kind:"agent",text:i});w(i);break}case"done":case"session_complete":j(),N(),t.status="idle",t.busySince=void 0,o=null;break;case"error":j(),N(),t.stream=null,t.status="idle",t.busySince=void 0,t.error=e.message,o=null,d({kind:"error",title:e.message,detail:[]});break;case"session_paused":break;default:break}m()}}}export{ge as a,ae as b,ve as c};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as F}from"./chunk-L4JIMNKW.js";import{a as _,d as k,g as A}from"./chunk-M7WQM4UA.js";import{a as R,e as S,f as I,g as j,h as L}from"./chunk-5YPBPZUR.js";import{existsSync as w,mkdirSync as P,readFileSync as N,renameSync as J,rmSync as V,writeFileSync as W}from"fs";import{dirname as K,join as y}from"path";var q=i=>y(i,"derived"),D=i=>y(q(i),"index.json");function U(i,s){let r=s.startsWith("sha256:")?s.slice(7):s;return y(q(i),"nodes",r.slice(0,2),r.slice(2)+".json")}function $(){return{applied:{seq:0,hash:null},heads:{},trust:{},nodeLabel:{},forward:{},extracted:[],design_of:{},design_generation:{},exec:{},superseded:{},names:{},archivedReason:{},appliedEvents:[],completeness:{},srcOwner:{},conv:{},media:{},design_phases:{}}}function M(i){let s=D(i);if(!w(s))return null;try{let r=JSON.parse(N(s,"utf8"));return r.superseded===void 0||r.names===void 0||r.archivedReason===void 0||r.appliedEvents===void 0||r.conv===void 0||r.media===void 0||r.exec===void 0||r.completeness===void 0||r.srcOwner===void 0||r.design_phases===void 0||r.reverse!==void 0?null:r}catch{return null}}function T(i,s){P(K(i),{recursive:!0});let r=`${i}.tmp-${process.pid}`;W(r,s),J(r,i)}function b(i,s,r,p,l={}){let f=l.writeNodeFiles!==!1,g=new Set(s.extracted),m=new Set(s.appliedEvents);r.forEach((t,v)=>{for(let e of t.nodes){let n=U(i,e.cid);f&&!w(n)&&T(n,JSON.stringify({label:e.label,content:e.content})+`
|
|
3
|
+
`),!(e.cid in s.trust)&&e.content.derived===!0&&(s.trust[e.cid]="derived"),s.nodeLabel[e.cid]=e.label}for(let[e,n]of Object.entries(t.source_head_moves))typeof n=="string"&&(s.srcOwner[n]=e);if(t.proposal_id!=null&&typeof t.extraction_of=="string"){g.add(t.extraction_of);let e=null;for(let n of t.edges)if(n.type===S.DERIVES&&n.props.source_cid===t.extraction_of&&typeof n.props.source_id=="string"){e=n.props.source_id;break}if(e??=s.srcOwner[t.extraction_of]??null,e!==null){let n=s.completeness[e];(!n||t.seq>=n.seq)&&(s.completeness[e]={source_cid:t.extraction_of,completeness:"complete",...t.extractor_version?{extractor_version:t.extractor_version}:{},at:t.ts,seq:t.seq})}else s.completenessSkipped=(s.completenessSkipped??0)+1}else if(t.proposal_id!=null&&Array.isArray(t.extraction_of))for(let e of t.extraction_of){g.add(e.source_cid);let n=s.completeness[e.source_id];(!n||t.seq>=n.seq)&&(s.completeness[e.source_id]={source_cid:e.source_cid,completeness:e.completeness,...e.extractor_version?{extractor_version:e.extractor_version}:{},at:e.at,seq:t.seq})}t.design_of&&((s.design_of??={})[t.design_of.uc_cid]={engine:t.design_of.engine,seq:t.seq}),t.design_generation&&((s.design_generation??={})[t.design_generation.uc_root]={gen:t.design_generation.generation,seq:t.seq});{let e=t.design_phase;e&&typeof e.uc_root=="string"&&typeof e.phase=="string"&&typeof e.generation=="number"&&((s.design_phases??={})[e.uc_root]??=[]).push({phase:e.phase,generation:e.generation,seq:t.seq,completeness:e.completeness==="partial"?"partial":"complete"})}for(let e of t.executions??[])((s.exec??={})[e.about]??=[]).push(e);for(let e of t.edges){let{quote:n,...o}=e.props,c=s.forward[e.src]??=[];c.some(a=>a.ecid===e.ecid)||c.push({...e,props:o}),t.proposal_id!=null&&e.type===S.DERIVES&&typeof e.props.source_cid=="string"&&g.add(e.props.source_cid)}for(let e of t.review)e.resolution==="approved"||e.resolution==="edited"?(s.trust[e.id]="trusted",delete s.archivedReason[e.id]):e.resolution==="rejected"?(s.trust[e.id]="archived",e.reason?s.archivedReason[e.id]=e.reason:delete s.archivedReason[e.id]):e.resolution==="reset"&&(s.trust[e.id]="derived",delete s.archivedReason[e.id]);for(let e of t.supersessions)e.kind==="node"?e.new===e.old?delete s.superseded[e.old]:s.superseded[e.old]=e.new:s.superseded[e.ecid]=null;for(let e of t.names??[])s.names[e.slug]=e.cid;for(let[e,n]of Object.entries(t.source_head_moves))s.heads[e]=n;for(let e of t.event_ids??[])m.add(e);if(t.media)for(let[e,n]of Object.entries(t.media)){let o=t.source_head_moves[e];typeof o=="string"&&(s.media[o]=n)}if(t.conv){let e=t.source_head_moves[t.conv.source_id];if(typeof e=="string"){let n=s.conv[t.conv.source_id],o=n&&n.chain.length>0?n.chain[n.chain.length-1]:null;t.conv.append_of===o?s.conv[t.conv.source_id]={turns:t.conv.turn,chain:[...n?.chain??[],e]}:s.conv[t.conv.source_id]={turns:t.conv.turn,chain:[e]}}}for(let[e,n]of Object.entries(t.source_head_moves))t.conv?.source_id!==e&&s.conv[e]!==void 0&&(s.conv[e]=typeof n=="string"?{turns:s.conv[e].turns,chain:[n]}:{turns:s.conv[e].turns,chain:[]});s.applied={seq:t.seq,hash:p[v]}}),s.extracted=[...g].sort(),s.appliedEvents=[...m].sort()}function x(i,s){T(D(i),JSON.stringify(s)+`
|
|
4
|
+
`)}function Y(i){let s=y(i,"meta.json");if(w(s))try{let r=JSON.parse(N(s,"utf8"));if(r.schema!==R||r.canonicalizer!=="v1")throw new _(`schema fence: store is ${r.schema}/${r.canonicalizer}, this build is ${R}/${"v1"} \u2014 migrate explicitly (kane-cli context rebuild after upgrading)`)}catch(r){throw r instanceof _?r:new _(`corrupt meta.json in ${i} \u2014 fix or remove it`)}}function z(i){Y(i);let s=M(i);if(s===null){s=$();let{records:l,hashes:f}=k(i);return b(i,s,l,f),x(i,s),s}let{records:r,hashes:p}=A(i,s.applied.seq,s.applied.hash);return r.length>0&&(b(i,s,r,p),x(i,s)),s}function X(i){return V(q(i),{recursive:!0,force:!0}),z(i)}function ee(i){let s=[],r=[],p=[];try{({records:r,hashes:p}=k(i))}catch(n){return{ok:!1,issues:[n instanceof _?n.message:String(n)],records:0}}let l=$();b(i,l,r,p,{writeNodeFiles:!1});let f=M(i),g=0,m=l;if(f!==null&&f.applied.seq<r.length){let n=f.applied.seq;f.applied.hash===(n===0?null:p[n-1])&&(g=r.length-n,m=$(),b(i,m,r.slice(0,n),p.slice(0,n),{writeNodeFiles:!1}))}if(f===null)s.push("derived/index.json missing or corrupt (run kane-cli context rebuild)");else{let n=o=>JSON.stringify(O(o));for(let o of["applied","heads","trust","nodeLabel","forward","extracted","superseded","names","archivedReason","appliedEvents","conv","media","design_of","design_generation","design_phases","exec","completeness","srcOwner"])n(m[o])!==n(f[o])&&s.push(`derived drift in index.${o} (run kane-cli context rebuild)`)}let t=new Set;for(let n of Object.values(l.forward))for(let o of n)t.add(o.ecid);let v=new Set;for(let n of r)for(let o of n.supersessions)o.kind==="node"?(o.old in l.nodeLabel||s.push(`SUPERSEDE_UNKNOWN_OLD: ${o.old} (record ${n.seq})`),o.new!==null&&o.new!==o.old&&!(o.new in l.nodeLabel)&&s.push(`SUPERSEDE_UNKNOWN_NEW: ${String(o.new)} (record ${n.seq})`),o.new===o.old?v.delete(o.old):(v.has(o.old)&&s.push(`DOUBLE_SUPERSEDE: ${o.old} re-superseded while live (record ${n.seq})`),v.add(o.old))):t.has(o.ecid)||s.push(`SUPERSEDE_UNKNOWN_ECID: ${o.ecid} (record ${n.seq})`);for(let n of Object.keys(l.superseded)){let o=new Set,c=n;for(;c!==null&&c in l.superseded;){if(o.has(c)){s.push(`SUPERSEDE_CYCLE: chain from ${n} revisits ${c}`);break}o.add(c),c=l.superseded[c]}}for(let[n,o]of Object.entries(l.names))o in l.nodeLabel||s.push(`NAME_UNKNOWN_TARGET: slug ${n} \u2192 ${o} not in the graph`);for(let n of r)for(let o of n.edges){let c=l.nodeLabel[o.src]??"(unknown)",a=l.nodeLabel[o.dst]??"(unknown)";for(let d of L(o.type,c,a,o.props))s.push(`${d.code}: ${o.ecid} ${d.detail}`)}let e=new Map;for(let n of Object.values(l.forward))for(let o of n){if(o.ecid in l.superseded)continue;let c=e.get(o.type)??[];c.push(o),e.set(o.type,c)}for(let[n,o]of e){let c=j(n);if(c?.acyclic){let a=new Map;for(let u of o)a.set(u.src,[...a.get(u.src)??[],u.dst]);let d=new Map,h=u=>{d.set(u,1);for(let E of a.get(u)??[])if(d.get(E)===1||d.get(E)===void 0&&h(E))return!0;return d.set(u,2),!1};for(let u of a.keys())if(d.get(u)===void 0&&h(u)){s.push(`EDGE_CYCLE: live ${n} edges form a cycle reachable from ${u}`);break}}if(c?.cardinality==="one-live-per-src"||c?.cardinality==="one-live-per-src-and-dst"){let a=new Map;for(let d of o)d.dst in l.superseded||a.set(d.src,(a.get(d.src)??0)+1);for(let[d,h]of a)h>1&&s.push(`CARDINALITY_VIOLATION: ${h} live ${n} edges from ${d} (one-live-per-src)`)}if(c?.cardinality==="one-live-per-src-and-dst"){let a=new Map;for(let d of o)d.src in l.superseded||d.dst in l.superseded||a.set(d.dst,(a.get(d.dst)??0)+1);for(let[d,h]of a)h>1&&s.push(`CARDINALITY_VIOLATION: ${h} live ${n} edges onto ${d} (one-live-per-dst)`)}}for(let[n,o]of Object.entries(m.nodeLabel)){let c=U(i,n);if(!w(c)){s.push(`missing node file for ${n} (run kane-cli context rebuild)`);continue}try{let a=JSON.parse(N(c,"utf8"));(a.label!==o||F(a.label,a.content)!==n)&&s.push(`node file content mismatch for ${n} (run kane-cli context rebuild)`);for(let d of I(a.label,a.content))s.push(`${d.code}: ${n} ${d.detail}`)}catch{s.push(`corrupt node file for ${n} (run kane-cli context rebuild)`)}}return{ok:s.length===0,issues:s,records:r.length,...g>0?{pending:g}:{}}}function O(i){return Array.isArray(i)?i.map(O):i&&typeof i=="object"?Object.fromEntries(Object.entries(i).sort(([s],[r])=>s<r?-1:1).map(([s,r])=>[s,O(r)])):i}export{U as a,z as b,X as c,ee as d};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as $}from"./chunk-
|
|
2
|
+
import{a as $}from"./chunk-3FN5VJMV.js";import{e as D}from"./chunk-UI7KULSI.js";import{a as E}from"./chunk-NLCCBXXV.js";function U(e){return["completed","failed","ended","stopped"].includes(e.trim().toLowerCase())}function je(e){return["ended","stopped"].includes(e.trim().toLowerCase())}function q(e){return{requestId:e.requestId,objective:e.objective,status:"",turnActive:!1,scenarios:[],thinking:"",thinkingLog:[],chatLog:[],progress:0}}function Re(e){return e.pendingClarification===void 0?e:{...e,pendingClarification:void 0}}function Ce(e){return{...e,turnActive:!0,error:void 0,thinking:"",thinkingLog:[]}}function P(e,t){switch(t.type){case"thinking":return{...e,status:"thinking",thinking:e.thinking+t.delta};case"thinking_done":return{...e,thinkingLog:[...e.thinkingLog,{text:e.thinking,tookMs:t.tookMs}],thinking:""};case"progress":return{...e,progress:t.pct};case"snapshot":return{...e,scenarios:t.data.scenarios,status:t.data.status,headline:t.data.headline??e.headline};case"chat":return{...e,turnActive:!1,chatLog:[...e.chatLog,{role:"model",text:t.text}]};case"clarification":return{...e,turnActive:!1,chatLog:[...e.chatLog,{role:"model",text:t.text}],pendingClarification:t.text};case"limit":return{...e,limits:{scenarioLimit:t.scenarioLimit,perScenarioLimit:t.perScenarioLimit}};case"error":return{...e,error:t.message};case"done":return{...e,status:t.status,turnActive:!1,error:t.status==="failed"&&!e.error?"generation failed":e.error}}}function H(e,t){let n=[],i=e.type??"",d=e.status??"";if(i==="ping")return n;switch(i){case"thinking_token":typeof e.data=="string"&&n.push({type:"thinking",delta:e.data});break;case"thinking_stopped":{let r=e.data??{},o=se(r.time_taken);n.push({type:"thinking_done",text:typeof e.data=="string"?e.data:r.message??"",tookMs:o});break}case"progress":{let r=e.data??{};typeof r.progress=="number"&&n.push({type:"progress",pct:r.progress});break}case"clarification":{let r=e.data??{};typeof r.message=="string"&&n.push({type:"clarification",text:r.message});break}case"chatting_stopped":{let r=e.data??{};typeof r.message=="string"&&r.message.length>0&&n.push({type:"chat",text:r.message});break}case"limit_update":{let r=e.data??{},o=r.test_cases_limit??e.test_cases_limit,p=r.per_scenario_test_cases_limit??e.per_scenario_test_cases_limit;n.push({type:"limit",scenarioLimit:o,perScenarioLimit:p});break}case"error":{let r=typeof e.data=="string"?e.data:e.data?.message??"generation error";n.push({type:"error",message:r});break}case"request_cancelled":return n.push({type:"done",status:"stopped"}),n;case"session_ended":return n.push({type:"done",status:"ended"}),n;default:break}if(Array.isArray(e.scenarios)&&n.push({type:"snapshot",data:{requestId:t,status:d,headline:e.headline,scenarios:e.scenarios}}),d&&U(d)){let r=d.trim().toLowerCase();n.push({type:"done",status:r})}return n}function se(e){if(!e)return;let t=/^([\d.]+)(ms|s)?$/.exec(e.trim());if(!t)return;let n=Number(t[1]);if(Number.isFinite(n))return t[2]==="ms"?Math.round(n):Math.round(n*1e3)}var v=class extends Error{constructor(t){super(t),this.name="AuthError"}},M=class extends Error{constructor(t){super(t),this.name="ForbiddenError"}},I=class extends Error{constructor(t){super(t),this.name="InsufficientCreditsError"}},k=class extends Error{constructor(n,i){super(n);this.cause=i;this.name="TransportError"}};function x(e,t){let n=t?.message??t?.error??`HTTP ${e}`;return e===401?new v(n):e===403?t?.key==="insufficient_credits"?new I(n):new M(n):new k(n)}async function*J(e){let t=e.fetchImpl??fetch,n=e.maxRetries??5,i=e.maxBackoffMs??3e4,d=e.connectTimeoutMs??1e4,r=0,o=!1;for(;;){if(e.signal.aborted)return;let p=new AbortController,a=()=>p.abort();e.signal.addEventListener("abort",a,{once:!0});let c=setTimeout(()=>p.abort(),d),g;try{g=await t(e.url,{method:"GET",headers:{Authorization:await e.authHeader(),Accept:"text/event-stream"},signal:p.signal})}catch(w){if(clearTimeout(c),e.signal.removeEventListener("abort",a),e.signal.aborted)return;if(++r>n)throw new k("SSE connect failed",w);await O(F(r,i));continue}if(clearTimeout(c),!g.ok){e.signal.removeEventListener("abort",a);let w=await oe(g);if(g.status===401&&o){if(++r>n)throw x(401,w);await O(F(r,i));continue}throw x(g.status,w)}if(!g.body)throw e.signal.removeEventListener("abort",a),new k("SSE response had no body");o=!0,r=0;let m=g.body.getReader(),h=new TextDecoder("utf-8"),b="";try{for(;;){if(e.signal.aborted){await m.cancel().catch(()=>{});return}let{done:w,value:s}=await m.read();if(w)break;b+=h.decode(s,{stream:!0});let f;for(;(f=b.indexOf(`
|
|
3
3
|
|
|
4
4
|
`))>=0;){let u=b.slice(0,f);b=b.slice(f+2);let l=ie(u);l&&(yield l)}}}catch(w){if(e.signal.aborted)return;if(++r>n)throw new k("SSE stream dropped",w);await O(F(r,i));continue}finally{e.signal.removeEventListener("abort",a)}return}}function ie(e){let t="message",n="";for(let i of e.split(`
|
|
5
5
|
`))i.startsWith("event:")?t=i.slice(6).trim():i.startsWith("data:")&&(n+=i.slice(5).trim());if(t!=="message"||!n)return null;try{let i=Buffer.from(n,"base64").toString("utf-8");return JSON.parse(i)}catch{return null}}function F(e,t){return Math.min(t,1e3*2**(e-1))}function O(e){return new Promise(t=>setTimeout(t,e))}async function oe(e){try{return await e.clone().json()}catch{return}}function W(e,t){t?.length&&(e.append("files",t.map(n=>n.fileKey).join(",")),e.append("gemini_metadata",JSON.stringify(t.map(n=>({fileData:{fileUri:n.geminiUri,mimeType:n.mimeType}})))))}function Ue(e,t={}){let n=t.fetchImpl??fetch,i=new Map,d=!0;async function r(){let s=await e.authResolver.resolve();if(!s)throw new v("unauthorized; run `kane-cli login`");return E(s.username,s.access_key)}function o(s){return`${e.baseUrl}${s}`}async function p(s){if(!s.ok){let f;try{f=await s.clone().json()}catch{f=void 0}throw x(s.status,f)}return s.json()}function a(s){let f=s?.data??s;return{request_id:f.request_id??f.id,status:f.status??""}}function c(s,f,u,l){let y=q({requestId:s,objective:f});l&&(y=P(y,{type:"snapshot",data:l}),l.status==="cleaned_up"&&(y={...y,error:"session was reaped (cleaned_up) \u2014 continuing will destructively regenerate"}));let S=new AbortController;u&&(u.aborted?S.abort():u.addEventListener("abort",()=>S.abort(),{once:!0})),i.set(s,S);let A={requestId:s,state:y,events:void 0};return A.events=(async function*(){try{let C=J({url:o(`/requests/${s}/sse`),authHeader:r,signal:S.signal,log:e.log,fetchImpl:n});for await(let L of C)for(let z of H(L,s))A.state=P(A.state,z),yield z}finally{i.delete(s)}})(),A}async function g(s,f){let u=new FormData;u.append("prompt",s.prompt),d=s.memoryEnhancement??!0,u.append("memory_enhancement",String(d)),s.scenarioLimit!==void 0&&u.append("test_scenario_limit",String(s.scenarioLimit)),s.perScenarioLimit!==void 0&&u.append("per_scenario_test_cases_limit",String(s.perScenarioLimit));let l=s.projectId??e.projectId,y=s.folderId??e.folderId;l&&u.append("project_id",l),y&&u.append("folder_id",y),W(u,s.attachments);let S=await n(o("/requests"),{method:"POST",headers:{Authorization:await r()},body:u}),A=await p(S),{request_id:C}=a(A),L=String(C);return c(L,s.prompt,f)}async function m(s,f){let u=await n(o(`/requests/${s}`),{method:"GET",headers:{Authorization:await r()}}),l=await p(u),y=l?.data??l,S={requestId:s,status:y.status??"",headline:y.headline,scenarios:Array.isArray(y.scenarios)?y.scenarios:[]};return c(s,"",f,S)}async function h(s,f,u){let l=new FormData;l.append("prompt",f),l.append("chat_enabled","true"),l.append("memory_enhancement",String(d)),u?.mappings&&l.append("mappings",JSON.stringify(u.mappings)),W(l,u?.attachments);let y=await n(o(`/requests/${s}`),{method:"PUT",headers:{Authorization:await r()},body:l});if(!y.ok){let S;try{S=await y.clone().json()}catch{}throw x(y.status,S)}}async function b(s){i.get(s)?.abort();let u=await n(o(`/requests/${s}/stop`),{method:"DELETE",headers:{Authorization:await r()}});if(!u.ok&&u.status!==404){let l;try{l=await u.clone().json()}catch{}throw x(u.status,l)}}async function w(s){i.get(s)?.abort();let u=await n(o(`/requests/${s}/end`),{method:"DELETE",headers:{Authorization:await r()}});if(!u.ok&&u.status!==404){let l;try{l=await u.clone().json()}catch{}throw x(u.status,l)}}return{start:g,attach:m,chat:h,cancel:b,end:w}}import{statSync as ae,realpathSync as G,existsSync as ce}from"fs";import{extname as ue,resolve as j,isAbsolute as pe}from"path";import{homedir as V}from"os";var de=new Set([".txt",".md",".json",".xml",".jpg",".jpeg",".png",".gif",".bmp",".webp",".pdf",".docx",".csv",".xlsx",".mp3",".wav",".m4a",".webm",".mpeg",".mpga",".mp4",".mov"]),le=50*1024*1024,X=10;function fe(e){return e==="~"?V():e.startsWith("~/")?j(V(),e.slice(2)):e}function Ge(e,t){let n=[],i=[],d=new Set,r=[],o=(()=>{try{return G(j(t))}catch{return j(t)}})(),p=o.endsWith("/")?o:o+"/";for(let a of e){let c=fe(a),g=pe(c)?c:j(t,c);if(!ce(g)){n.push(`Not found: ${a}`);continue}let m;try{m=G(g)}catch{n.push(`Cannot resolve: ${a}`);continue}if(d.has(m))continue;let h;try{h=ae(m)}catch{n.push(`Cannot read: ${a}`);continue}if(!h.isFile()){n.push(`Not a file: ${a}`);continue}if(h.size===0){n.push(`Empty file: ${a}`);continue}let b=ue(m).toLowerCase();if(!de.has(b)){n.push(`Unsupported type ${b||"(none)"}: ${a}`);continue}if(h.size>le){n.push(`Too large (>50MB): ${a}`);continue}m!==o&&!m.startsWith(p)&&i.push(`Outside working dir: ${a}`),d.add(m),r.push(m)}return r.length>X&&n.push(`Too many files: ${r.length} (max ${X})`),{ok:n.length?[]:r,errors:n,warnings:i}}var B=class extends Error{constructor(n){super(n.join("; "));this.errors=n;this.name="AttachmentValidationError"}};async function Xe(e){let{promptText:t,filePaths:n,cwd:i,scenarios:d,isRefine:r,conn:o,deps:p}=e,{ok:a,errors:c,warnings:g}=p.validate(n,i);if(c.length)throw new B(c);e.onValidated?.();let m=a.length?await p.upload(o,a,p.onUpload):[],h=r?p.buildMappings(t,d):void 0;return{promptText:t,mappings:h,attachments:m,warnings:g}}import{readFile as me}from"fs/promises";import{basename as K}from"path";async function ge(e){let t=await e.authResolver.resolve();if(!t)throw new v("unauthorized; run `kane-cli login`");return E(t.username,t.access_key)}async function he(e,t,n={}){let i=n.fetchImpl??fetch,d=await me(t),r=K(t),o=new FormData;o.append("file",new Blob([d]),r),o.append("source","omniBox"),o.append("geminiFileUpload","true");let p=await i(`${e.tmsBaseUrl}/v1/attachment`,{method:"POST",headers:{Authorization:await ge(e)},body:o,signal:n.signal});if(!p.ok){let h;try{h=await p.clone().json()}catch{}throw x(p.status,h)}let a=await p.json(),c=a?.data??a,g=c?.gemini_response?.uri,m=c?.gemini_response?.mimeType;if(!c?.file_key||!g){let h=c&&typeof c=="object"?Object.keys(c).join(","):typeof c,b=(()=>{try{return JSON.stringify(c).slice(0,500)}catch{return"<unserializable>"}})();throw new Error(`attachment upload for ${r} returned no file_key/gemini uri \u2014 status ${p.status}, body keys: [${h}], raw: ${b}`)}return{fileName:c.file_name??r,fileKey:c.file_key,geminiUri:g,mimeType:m??"application/octet-stream"}}async function tt(e,t,n,i={}){let d=[];for(let r=0;r<t.length;r++){if(i.signal?.aborted)throw Object.assign(new Error("upload aborted"),{name:"AbortError"});let o=K(t[r]);n?.({file:o,index:r+1,total:t.length,status:"uploading"});try{d.push(await he(e,t[r],i)),n?.({file:o,index:r+1,total:t.length,status:"done"})}catch(p){throw n?.({file:o,index:r+1,total:t.length,status:"failed"}),p}}return d}var ye=/@([sS])(\d+)\.([cC])(\d+)/g,be=/@([sS])(\d+)(?!\d)(?!\.[cC]\d)/g;function rt(e,t){let n={},i={};for(let d of e.matchAll(ye)){let r=Number(d[2]),o=Number(d[4]),p=t[r-1];if(!p)continue;n[`s${r}`]=String(p.id);let a=p.test_cases??[];if(a[o-1])for(let c=0;c<o;c++){let g=a[c];g&&(i[`s${r}.c${c+1}`]=String(g.id))}}for(let d of e.matchAll(be)){let r=Number(d[2]),o=t[r-1];o&&(n[`s${r}`]=String(o.id))}if(!(Object.keys(n).length===0&&Object.keys(i).length===0))return{scenario:n,testcase:i}}function R(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(n==null||typeof n!="object")return[];let i=n;if(typeof i.step!="string")return[];let d=typeof i.expected_result=="string"?i.expected_result:typeof i.outcome=="string"?i.outcome:"";t.push({step:i.step,expected:d})}return t}var we=30,Se=300;function Z(){return{mode:"testing",max_steps:we,timeout:Se,variables:{}}}function Q(e){return e.title??`Test case ${e.id}`}function ct(e,t){return $({frontmatter:Z(),heading:Q(t),steps:e.sub_objectives.map(n=>n.objective)})}function Y(e){let t=R(e.manual_steps).map(n=>n.step);return $({frontmatter:Z(),heading:Q(e),steps:t})}import{mkdtempSync as xe,mkdirSync as N,writeFileSync as ee,rmSync as te,renameSync as _e,existsSync as ne,readFileSync as ve}from"fs";import{join as _,resolve as ke}from"path";async function ft(e,t,n,i=Y){(n.redirectBareCwd??!0)&&ke(t)===process.cwd()&&(t=_(t,".testmuai","tests"));let d=T(e.objective)??e.headline,r=T(n.suiteName)??`${T(re(d,4))??"tcg"}-${e.requestId}`,o=r,p=_(t,r);ne(p)&&!Te(p,e.requestId)&&(o=`${r}-${e.requestId}`);let a=_(t,o),c=[],g=new Map;for(let h of e.scenarios){let b=(h.test_cases??[]).filter(Ae);if(b.length===0)continue;let w=T(Ee(h.scode))??T(h.sid)??`s${h.id}`,s=g.get(w)??new Set;g.set(w,s);for(let f of b){let u=T(re(f.title,5))??"case",l=`${u}_test.md`;for(let y=2;s.has(l);y++)l=`${u}-${y}_test.md`;s.add(l),c.push({dir:w,file:l,tc:f})}}if(c.length===0)return{suiteDir:a,paths:[],warning:"no functional test cases generated"};N(t,{recursive:!0});let m=xe(_(t,".tcg-tmp-"));try{N(_(m,"helpers"),{recursive:!0}),ee(_(m,".tcg-suite.json"),JSON.stringify({requestId:e.requestId,suiteName:o}));let h=[],b=new Set;for(let s of c){let f=_(m,s.dir);b.has(f)||(N(f,{recursive:!0}),b.add(f));let u=_(f,s.file);ee(u,i(s.tc)),h.push(u)}ne(a)&&te(a,{recursive:!0,force:!0}),_e(m,a);let w=h.map(s=>s.replace(m,a));return{suiteDir:a,paths:w}}catch(h){try{te(m,{recursive:!0,force:!0})}catch{}throw h}}function Ae(e){return(e.category??"").trim().toLowerCase()==="functional"}function Te(e,t){try{return JSON.parse(ve(_(e,".tcg-suite.json"),"utf-8"))?.requestId===t}catch{return!1}}function T(e){return e&&e.length>0?e:void 0}function re(e,t){return e?e.toLowerCase().replace(/[^a-z0-9]+/g," ").trim().split(/\s+/).filter(Boolean).slice(0,t).join("-"):""}function Ee(e){return e?e.replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,""):""}function ht(e){let t=[];e.title&&t.push(e.title),e.description&&t.push("",e.description);let n=R(e.manual_steps);return n.length>0&&(t.push("","Steps:"),n.forEach((i,d)=>{t.push(`${d+1}. ${i.step}`)})),t.join(`
|