@testmuai/kane-cli 0.6.6 → 0.6.8
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-QLRMFZJG.js +8 -0
- package/dist/{ChromeProfilePicker-6PLUQ5TW.js → ChromeProfilePicker-FJOUNY2B.js} +1 -1
- package/dist/{CliFeedbackPrompt-I4F56IVK.js → CliFeedbackPrompt-HC4NNBTK.js} +1 -1
- package/dist/{CliUploadProgress-ULRSPKY3.js → CliUploadProgress-VIEZQNZ5.js} +1 -1
- package/dist/{ConfigView-7NMYALEA.js → ConfigView-LK5F4F7W.js} +1 -1
- package/dist/EvidenceViewOffer-HZ4WZKGM.js +2 -0
- package/dist/{FolderPicker-4IOVDO2P.js → FolderPicker-3S57MSC6.js} +1 -1
- package/dist/{HelpView-SHMVMHNU.js → HelpView-BQ3TS7WE.js} +1 -1
- package/dist/{InfoBox-W2LZVGQS.js → InfoBox-4HVXV3TD.js} +1 -1
- package/dist/{LinksBox-ZS25VTBY.js → LinksBox-3B2KO5S4.js} +1 -1
- package/dist/{ProfilesView-XBBRIQ3U.js → ProfilesView-FLRMROUR.js} +1 -1
- package/dist/{ProjectPicker-AUN47FXS.js → ProjectPicker-R3KLRGHH.js} +1 -1
- package/dist/{SaveSessionPrompt-Z2K225VN.js → SaveSessionPrompt-P7HSG7R7.js} +1 -1
- package/dist/SingleShotApp-ZBZY7KGR.js +2 -0
- package/dist/{SummaryBox-4T545XRB.js → SummaryBox-HCDIWKPS.js} +1 -1
- package/dist/TestMdRunView-GQP2QGFU.js +2 -0
- package/dist/{WhoamiView-GCVD35EX.js → WhoamiView-ZD6FIBMK.js} +1 -1
- package/dist/{bind-JLMT57Q3.js → bind-RSVQXQJT.js} +2 -2
- package/dist/{bridge-PDJEOSAJ.js → bridge-D2HETW5M.js} +1 -1
- package/dist/{changelog-D65HWZDM.js → changelog-QB7S4VV4.js} +1 -1
- package/dist/chat-committer-MWZ4JQMM.js +2 -0
- package/dist/chat-controller-YX5A7R52.js +2 -0
- package/dist/{chunk-BLSZ4H5W.js → chunk-27GF2OQ7.js} +3 -3
- package/dist/chunk-35RV2AAV.js +12 -0
- package/dist/{chunk-MSPZOEFB.js → chunk-3BIEIXJK.js} +1 -1
- package/dist/chunk-4GXOBABK.js +4 -0
- package/dist/chunk-5VC7MBHR.js +2 -0
- package/dist/{chunk-MY32TBBR.js → chunk-66LXV7NN.js} +1 -1
- package/dist/chunk-6WHKJSMJ.js +6 -0
- package/dist/{chunk-GYW7LVVL.js → chunk-7Z64BL5D.js} +1 -1
- package/dist/{chunk-BV5QKFMJ.js → chunk-A6TFZQV6.js} +1 -1
- package/dist/{chunk-JU5KRCKD.js → chunk-ATO6NM45.js} +1 -1
- package/dist/{chunk-S2C62SDY.js → chunk-AXJIXRYF.js} +1 -1
- package/dist/{chunk-L26LU6TU.js → chunk-B22NUHB2.js} +2 -2
- package/dist/chunk-BLHCGRSK.js +11 -0
- package/dist/chunk-BSFONZ2E.js +2 -0
- package/dist/{chunk-P4HW2NTZ.js → chunk-BUVRZXO3.js} +1 -1
- package/dist/chunk-CVOGP253.js +2 -0
- package/dist/{chunk-JTEY32TL.js → chunk-D4WLVWJQ.js} +1 -1
- package/dist/{chunk-HA5GE57Z.js → chunk-D5IZ77YG.js} +2 -2
- package/dist/chunk-DNNZ353O.js +4 -0
- package/dist/chunk-E4EHWO3J.js +4 -0
- package/dist/{chunk-LLS47HUA.js → chunk-ELN3EN4K.js} +1 -1
- package/dist/{chunk-RV2NXHIC.js → chunk-EQORZ6RT.js} +1 -1
- package/dist/chunk-EYZWG32F.js +13 -0
- package/dist/{chunk-6NIV7AVZ.js → chunk-F4FXE466.js} +1 -1
- package/dist/chunk-FCMLIK7P.js +2 -0
- package/dist/{chunk-EWTX7HSU.js → chunk-FCZ2YFD3.js} +2 -2
- package/dist/{chunk-EOLQUB4Q.js → chunk-GFKIE3AL.js} +1 -1
- package/dist/chunk-GG43HSU2.js +3 -0
- package/dist/{chunk-3Z3UIW5H.js → chunk-GO4CBUB6.js} +1 -1
- package/dist/{chunk-UZJ7MRBV.js → chunk-HCWEZCKP.js} +1 -1
- package/dist/chunk-IAHKTEET.js +2 -0
- package/dist/{chunk-6XHAXAL2.js → chunk-IQFUBT6Z.js} +1 -1
- package/dist/{chunk-WJGBXJT4.js → chunk-JKHQBGFY.js} +2 -2
- package/dist/{chunk-AKHUNBQS.js → chunk-K4ERF7GT.js} +1 -1
- package/dist/chunk-K4LCN5X4.js +6 -0
- package/dist/{chunk-D7L6UW5Z.js → chunk-K7P6VNLI.js} +1 -1
- package/dist/chunk-L3HG5ONB.js +4 -0
- package/dist/{chunk-ZZLR3O5A.js → chunk-L4JIMNKW.js} +1 -1
- package/dist/chunk-LEA6IHXC.js +2 -0
- package/dist/chunk-MBXWXBDM.js +4 -0
- package/dist/{chunk-4SXD6XWV.js → chunk-MEHEGW3V.js} +1 -1
- package/dist/{chunk-2WO7G2HO.js → chunk-N5YIMTGV.js} +1 -1
- package/dist/{chunk-VBCE4U4B.js → chunk-NKCXCCPM.js} +1 -1
- package/dist/{chunk-C42WWO7Y.js → chunk-NKUA3TSO.js} +1 -1
- package/dist/{chunk-2PQXEEVY.js → chunk-NVGBE2DR.js} +1 -1
- package/dist/chunk-NVGTSXCJ.js +9 -0
- package/dist/{chunk-6GTOYTCQ.js → chunk-OSALXGD4.js} +1 -1
- package/dist/{chunk-LEQ2B3PR.js → chunk-OYOTWI53.js} +1 -1
- package/dist/{chunk-N6DO2LBH.js → chunk-PV4EDQY4.js} +1 -1
- package/dist/{chunk-6SGPN76K.js → chunk-PXPXK4Q7.js} +1 -1
- package/dist/{chunk-24OFJ7SE.js → chunk-Q3WHZ26R.js} +1 -1
- package/dist/{chunk-LABIRPOT.js → chunk-QFD6CB4P.js} +1 -1
- package/dist/chunk-QM4S2APK.js +2 -0
- package/dist/{chunk-JV356AYH.js → chunk-QOGQBVTP.js} +2 -2
- package/dist/chunk-QZ7DZXLQ.js +14 -0
- package/dist/chunk-RGDQMKNJ.js +4 -0
- package/dist/chunk-SHAA6FOD.js +11 -0
- package/dist/{chunk-5JJ245FW.js → chunk-TAUSKB3O.js} +1 -1
- package/dist/{chunk-XQL53VB7.js → chunk-TBXIOT6M.js} +1 -1
- package/dist/chunk-TFVMSEIA.js +2 -0
- package/dist/{chunk-KI2DVQSA.js → chunk-TRXNJZSL.js} +1 -1
- package/dist/{chunk-HWA7WD44.js → chunk-VRVSOGXH.js} +1 -1
- package/dist/{chunk-24VYAMMK.js → chunk-VZHXNQDO.js} +1 -1
- package/dist/chunk-XSAZDIQV.js +347 -0
- package/dist/chunk-XWIN3S7O.js +4 -0
- package/dist/{chunk-32GP7KTM.js → chunk-YEMR62WY.js} +1 -1
- package/dist/chunk-YKZIACYJ.js +2 -0
- package/dist/{chunk-2BWRAY3Y.js → chunk-YTK3IQUB.js} +1 -1
- package/dist/{chunk-FJTWJ243.js → chunk-ZPDM6FO7.js} +1 -1
- package/dist/{config-6PAZZ7CR.js → config-JV7HNJ3I.js} +1 -1
- package/dist/cover-cmd-L2HSVDLH.js +2 -0
- package/dist/{credentials-BJCIWQWA.js → credentials-TQW3TT2I.js} +1 -1
- package/dist/{descriptor-EHK3DRCZ.js → descriptor-KXDJ4XYD.js} +1 -1
- package/dist/dossier-ZHSHATVU.js +3 -0
- package/dist/evidence-ZFYDHO73.js +2 -0
- package/dist/evolve-cmd-YGJECGND.js +2 -0
- package/dist/explain-VTRHEVUQ.js +2 -0
- package/dist/{explain-cmd-U367SD4N.js → explain-cmd-327F6ESA.js} +1 -1
- package/dist/{explain-cmd-KV5YUXKB.js → explain-cmd-E366QTAD.js} +1 -1
- package/dist/extract-bind-7UZXDON6.js +5 -0
- package/dist/{extract-cmd-Z4PMDIMZ.js → extract-cmd-TQ2MYXOG.js} +1 -1
- package/dist/gaps-cmd-IAEXXESW.js +2 -0
- package/dist/{generate-headless-IWY32HC4.js → generate-headless-XXECVP6L.js} +2 -2
- package/dist/index.js +12 -12
- package/dist/ingest-CBQAXVH6.js +2 -0
- package/dist/ingest-cmd-JN6PLDE3.js +3 -0
- package/dist/interactive-bind-WA2YVAUW.js +7 -0
- package/dist/lifecycle-cmd-KZOC4WDW.js +2 -0
- package/dist/list-cmd-6X5U46RD.js +3 -0
- package/dist/{list-commands-SSXJQGE7.js → list-commands-I577A5LK.js} +1 -1
- package/dist/{logical-ids-3Y6RX5C2.js → logical-ids-RFGWBVML.js} +1 -1
- package/dist/login-flow-OVEZXSMW.js +2 -0
- package/dist/maintenance-cmd-UJG4LPWD.js +2 -0
- package/dist/pdf-convert-KYXI4FU4.js +2 -0
- package/dist/{persist-recorded-session-3AOYZJT2.js → persist-recorded-session-DT3K6ZYQ.js} +1 -1
- package/dist/pipeline-5N7HWGAL.js +2 -0
- package/dist/readmodel-V3DVL6NP.js +2 -0
- package/dist/reconcile-cmd-HYYH3SZS.js +2 -0
- package/dist/{recording-banner-KKEUWS3N.js → recording-banner-QI77ERTZ.js} +1 -1
- package/dist/{require-project-folder-NPTKR2AW.js → require-project-folder-2UAXXZA4.js} +1 -1
- package/dist/revert-FRXNIP5R.js +2 -0
- package/dist/{review-cmd-4WZUUOE4.js → review-cmd-XVWPSWU2.js} +1 -1
- package/dist/run-RYIYWV63.js +2 -0
- package/dist/run-VMKZDO7J.js +2 -0
- package/dist/{run-test-md-QNC6KDMN.js → run-test-md-DKRJOUFA.js} +2 -2
- package/dist/{skill-installer-ULFNSE6X.js → skill-installer-TK5REDD6.js} +1 -1
- package/dist/{spawner-DWONVIPI.js → spawner-K7LWPNIC.js} +1 -1
- package/dist/tcg-generate-6EJLU5KX.js +2 -0
- package/dist/{testmd-actions-S3ZNOZEK.js → testmd-actions-Q2XWL7P5.js} +1 -1
- package/dist/token-refresh-NQZJEUQE.js +2 -0
- package/dist/{validate-basic-4OLDKIA2.js → validate-basic-XEJGB4GN.js} +1 -1
- package/dist/{version-check-UL4S6R4N.js → version-check-IT7T5YKJ.js} +1 -1
- package/dist/{view-cmd-FRMQF76B.js → view-cmd-G4PGJRQH.js} +3 -3
- package/dist/walk-session-HCTG4LN2.js +2 -0
- package/package.json +7 -6
- package/dist/ChatSurface-LV3KW6WN.js +0 -8
- package/dist/EvidenceViewOffer-KQKPTMXA.js +0 -2
- package/dist/SingleShotApp-M7R5PW4X.js +0 -2
- package/dist/TestMdRunView-JXRXMACE.js +0 -2
- package/dist/chat-committer-ADJJTDUT.js +0 -2
- package/dist/chat-controller-VAC57IEV.js +0 -3
- package/dist/chunk-262ES67I.js +0 -14
- package/dist/chunk-4A6BLXQN.js +0 -13
- package/dist/chunk-4R2HOA7J.js +0 -14
- package/dist/chunk-64LC36AF.js +0 -2
- package/dist/chunk-6AYUSR7X.js +0 -2
- package/dist/chunk-6CZIEK6B.js +0 -11
- package/dist/chunk-6PS65QFF.js +0 -2
- package/dist/chunk-74RUSHIB.js +0 -4
- package/dist/chunk-GBBVP2JW.js +0 -2
- package/dist/chunk-JF7Q2I45.js +0 -2
- package/dist/chunk-KNCHEM6A.js +0 -9
- package/dist/chunk-KYHXDJN4.js +0 -2
- package/dist/chunk-LURGFJEE.js +0 -6
- package/dist/chunk-MCQXRJGH.js +0 -2
- package/dist/chunk-OFEOWKM3.js +0 -6
- package/dist/chunk-QPZRHAYK.js +0 -4
- package/dist/chunk-RE3BZVGE.js +0 -3
- package/dist/chunk-RIMJDJWY.js +0 -2
- package/dist/chunk-SJ2KQKOV.js +0 -3
- package/dist/chunk-WIA7TPK3.js +0 -2
- package/dist/chunk-WWH7CW5R.js +0 -356
- package/dist/chunk-ZG2V2ODK.js +0 -4
- package/dist/cover-cmd-K3LCXHAQ.js +0 -2
- package/dist/evidence-7VE5EGEF.js +0 -2
- package/dist/evolve-cmd-RUGUWKAG.js +0 -2
- package/dist/explain-VFIZTHFN.js +0 -2
- package/dist/extract-bind-YS7C4KZ3.js +0 -5
- package/dist/gaps-cmd-DTVDIOED.js +0 -2
- package/dist/ingest-C5ANIN7S.js +0 -2
- package/dist/ingest-cmd-LLC5CDQ5.js +0 -3
- package/dist/interactive-bind-ZIIJDRBU.js +0 -7
- package/dist/lifecycle-cmd-BXE5IMFN.js +0 -2
- package/dist/list-cmd-KBWPYJMV.js +0 -3
- package/dist/login-flow-HRS6YACY.js +0 -2
- package/dist/maintenance-cmd-VS3APIUN.js +0 -2
- package/dist/pipeline-IZSODNCC.js +0 -2
- package/dist/readmodel-XOGOELUP.js +0 -2
- package/dist/reconcile-cmd-6HVZJFG3.js +0 -2
- package/dist/revert-AQQ2VHRM.js +0 -2
- package/dist/run-2A7M7EJK.js +0 -2
- package/dist/run-6AFY35QW.js +0 -2
- package/dist/tcg-generate-IHHPRVNG.js +0 -2
- package/dist/token-refresh-CFVOA62N.js +0 -2
- package/dist/walk-session-N3BP57HK.js +0 -2
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as K,b as X,c as Y,d as Z}from"./chunk-RE3BZVGE.js";import"./chunk-6PS65QFF.js";import{b as N,d as J}from"./chunk-6GTOYTCQ.js";import{d as V}from"./chunk-2PQXEEVY.js";import"./chunk-ZZLR3O5A.js";import"./chunk-ZG2V2ODK.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";var re=new Set(["approve","edit","reject"]);function se(r,t){return`chatop:${t}:${r.target??"new"}:${r.op}:${r.seq}`}function oe(r,t,x,c){let u=se(r,t),m=r.payload;switch(r.op){case"approve":return{kind:"approve",target:r.target,expectedCid:r.expected_cid,eventId:u};case"edit":{let{reason:i,...h}=m;return{kind:"edit",target:r.target,expectedCid:r.expected_cid,edit:h,reason:i,eventId:u}}case"enhance":return{kind:"enhance",target:r.target,expectedCid:r.expected_cid,edges:m.edges??[],eventId:u};case"reject":return{kind:"reject",target:r.target,expectedCid:r.expected_cid,reason:m.reason??"",redirectTo:m.redirect_to,eventId:u};case"add":{let i=m.proposal_item??{},h=String(i.label??"");if(!x.mint_gate.includes(h))throw new Error(`GATED_LABEL: cannot mint "${h}" (gate: ${x.mint_gate.join(", ")})`);let d=i.cite??{},a=i.conv_source_id??c;if(!a||typeof d.turn!="number"||!d.quote)throw new Error("INVALID_ADD: a chat add requires a conversation cite {turn, quote} and conv_source_id");return{kind:"add",label:h,content:i.content??{},cite:{turn:d.turn,quote:d.quote},convSourceId:a,rationale:i.rationale,eventId:u}}}}function ee(r,t,x={}){let c=x.turn??0,u=[],m=[];for(let d of r)(d.op==="add"||d.op==="enhance")&&m.push(d);let i=new Map;for(let d of r){if(!re.has(d.op)||!d.target)continue;let a=i.get(d.target)??[];a.push(d),i.set(d.target,a)}for(let[d,a]of i){let b=Math.max(...a.map(_=>_.seq)),C=a.filter(_=>_.seq===b);if(C.length>1){u.push({target:d,seq:b,kinds:C.map(_=>_.op)});continue}m.push(C[0])}return{chatOps:m.sort((d,a)=>d.seq-a.seq).map(d=>oe(d,c,t,x.convSourceId)),ambiguous:u}}function ae(r,t){let x=r.trim();if(x==="")return{kind:"defaults"};if(/^defer$/i.test(x))return{kind:"defer-all"};let c=t.cursor,u=x,m=/^(\d+):\s*(.*)$/.exec(x);if(m){let a=Number(m[1]);if(a<1||a>t.questions.length)return{kind:"invalid",target:null,message:`no question ${a} \u2014 this batch has ${t.questions.length}`};if(c=a-1,u=m[2].trim(),!u)return{kind:"invalid",target:c,message:`say what to answer \u2014 e.g. \`${a}: yes\``}}if(c<0||c>=t.questions.length)return{kind:"invalid",target:null,message:"no pending question to answer"};let i=t.questions[c],h=/^"(.*)"$/.exec(u);if(h)return i.allow_free_text?{kind:"free",target:c,text:h[1]}:{kind:"invalid",target:c,message:`question ${c+1} takes an option (1-${i.options.length}) \u2014 free text isn't allowed here`};if(i.multi_select&&/^\d+(\s+\d+)+$/.test(u)){let a=u.split(/\s+/).map(Number);if(a.every(b=>b>=1&&b<=i.options.length))return{kind:"multi",target:c,indices:a.map(b=>b-1)}}if(/^\d+$/.test(u)){let a=Number(u);if(a>=1&&a<=i.options.length)return{kind:"option",target:c,index:a-1}}let d=i.options.findIndex(a=>a.label.toLowerCase()===u.toLowerCase());return d>=0?{kind:"option",target:c,index:d}:i.allow_free_text?{kind:"free",target:c,text:u}:{kind:"invalid",target:c,message:`question ${c+1} takes an option \u2014 type 1-${i.options.length} or an option name`}}function te(r){let t=r.text.replace(/\?+\s*$/,"");return t.length<=36?t:`${t.slice(0,33)}\u2026`}function ue(r){return r.use_cases??[]}var de={acs:"acceptance criteria",scenarios:"scenarios",tests:"tests",gaps:"gaps"};function ce(r){let t=[],x=[],c=(i,h)=>{h.length!==0&&(x.push(i),t.push(...h))},u=i=>typeof i=="string"&&/^[a-z]{1,4}\d{1,4}$/i.test(i)?i:null,m=i=>{let h=u(i.automates)??"1 scenario",d=i.verifies??[],a=d.map(u).filter(_=>_!==null).slice(0,2),b=d.length-a.length,C=a.length?`${a.join(" ")}${b>0?` +${b}`:""}`:`${d.length} ACs`;return`covers ${h} \xB7 verifies ${C}`};return c("acs",(r.acs??[]).map(i=>({temp_ref:i.temp_ref,title:i.text,kind:"ac",badge:String(i.kind),extra:{...i.expected_answer?{expects:`${String(i.expected_answer.operator??"")} \xB7 ${String(i.expected_answer.operand??"")}`}:{},"scoped to":i.scoped_to??"(use-case)"}}))),c("scenarios",(r.scenarios??[]).map(i=>({temp_ref:i.temp_ref,title:i.title,kind:"scenario",badge:i.case_type,why:i.intent,depends_on_hint:i.depends_on??[],extra:{technique:i.technique_notes}}))),c("tests",(r.tests??[]).map(i=>({temp_ref:i.temp_ref,title:i.title,kind:"test",why:m(i),depends_on_hint:i.reuses??[],extra:{automates:String(i.automates??"?"),verifies:(i.verifies??[]).join(", "),check:i.check?`${String(i.check.kind)} vs ${String(i.check.verified_against)}`:"?"}}))),c("gaps",(r.gaps??[]).map(i=>({temp_ref:i.temp_ref??i.ref??"?",title:String(i.question?.header??i.kind),kind:"gap",badge:i.kind,why:i.risk_rationale}))),{items:t,heading:x.join(" + ")||"design"}}function ke(r={}){let t={turns:[],thinking:X(),pending:null,confirm:null,status:"idle",ledger:[],activeTurn:null,stream:null,checkpoint:!1},x=e=>{let n=[],o=e.minted.map(g=>g.slug).filter(Boolean);o.length&&n.push(`added ${o.join(", ")}`);let s=e.applied.length-e.minted.length;return s>0&&n.push(`${s} change${s===1?"":"s"} applied`),e.staleDelta.length&&n.push(`stales ${e.staleDelta.length}`),n.join(" \xB7 ")||"no changes"},c=[];r.onRender&&c.push(r.onRender);let u=0,m=0,i=null,h=null,d=null,a=[],b=0,C=e=>{if(!(!d||!r.contextDir||!e.trim()))try{let n=r.refreshGraph?.()??r.graph;if(!n)return;J({contextDir:r.contextDir,graph:n,sourceId:d,text:e,by:r.by??{kind:"human",id:"owner"}})}catch{}},_=e=>{if(!d||!r.contextDir)return;let n=r.refreshGraph?.()??r.graph,o=n?.heads.get(d),s=n?.convChains.get(d);if(!n||typeof o!="string"||!s)return;let g=n.getNode(o)?.content?.blob,f=typeof g=="string"?V(r.contextDir,g)?.toString("utf8")??"":"";if(f)for(let v of e){if(v.kind!=="add"||v.convSourceId!==d)continue;let O=N(f,v.cite.turn);if(!(O!==null&&O.includes(v.cite.quote)))for(let S=s.turns;S>=1;S--){let L=N(f,S);if(L!==null&&L.includes(v.cite.quote)){v.cite={...v.cite,turn:S};break}}}},j=null,E=new Map,Q=new Map,B=null,k=()=>{R&&(clearTimeout(R),R=null);for(let e of c)e()},R=null,G=()=>{R||(R=setTimeout(()=>{R=null;for(let e of c)e()},80))},l=e=>{t.ledger.push(e)},D=null,A=!1,M=(e=!1)=>{D?l({kind:"agent",text:D}):e&&A&&l({kind:"note",text:'chat to refine ("looks good" approves; /done finishes)'}),D=null,A=!1},ne=()=>{D=null,A=!1},I=()=>{t.activeTurn&&(t.activeTurn=null)},W=(e,n)=>n.choice||(n.selected_index!=null?e.options[n.selected_index]?.label??"?":"?"),U=()=>{let e=t.pending;if(!e)return;if(!e.resolution.every(Boolean)){e.cursor=e.resolution.findIndex(s=>s===null);return}let n=e.questions.map((s,g)=>{let f=e.resolution[g];return f.form==="deferred"?{id:s.id,selected_index:null,free_text:null}:f.free_text!=null?{id:s.id,selected_index:null,free_text:f.free_text}:{id:s.id,selected_index:f.selected_index,free_text:null}});t.pending=null,t.status=t.status==="pausing"?"pausing":"streaming";let o=j;j=null,o?.(n)},T=(e,n)=>{let o=t.pending,s=o.questions[e],g=o.resolution[e];o.resolution[e]=n;let f=te(s);g?l({kind:"answer",receipt:{form:"changed",qNum:e+1,stub:f,choice:W(s,n),prev:g.choice}}):n.form==="deferred"?l({kind:"answer",receipt:{form:"deferred",qNum:e+1,stub:f}}):l({kind:"answer",receipt:{form:n.form,qNum:e+1,stub:f,choice:W(s,n)}})},P=()=>{let e=t.pending;e&&(e.questions.forEach((n,o)=>{e.resolution[o]||T(o,{form:"deferred",selected_index:null,free_text:null,choice:""})}),U())},z=e=>({questions:e,cursor:0,resolution:e.map(()=>null)}),ie=e=>{let n=t.pending;t.notice=void 0;let o=ae(e,n);switch(o.kind){case"invalid":t.notice=o.message;return;case"defaults":{let s=!1;if(n.questions.forEach((g,f)=>{if(!n.resolution[f]){if(g.risk==="high"){s=!0;return}T(f,{form:"assumed",selected_index:g.recommended_index,free_text:null,choice:g.options[g.recommended_index]?.label??"?"})}}),s){n.cursor=n.questions.findIndex((g,f)=>!n.resolution[f]),t.notice="high-risk questions need an explicit answer (or type 'defer' to leave them with the agent)";return}break}case"defer-all":P();return;case"option":{let s=n.questions[o.target];T(o.target,{form:"answered",selected_index:o.index,free_text:null,choice:s.options[o.index]?.label??String(o.index+1)});break}case"free":T(o.target,{form:"answered",selected_index:null,free_text:o.text,choice:o.text});break;case"multi":{let s=n.questions[o.target],g=o.indices[0];T(o.target,{form:"answered",selected_index:g,free_text:null,choice:s.options[g]?.label??String(g+1)}),t.notice="multi-select not yet supported end-to-end \u2014 sent your first choice";break}}U()};return{state:t,explainRef(e){if(!r.explain||!r.graph||r.contextDir===void 0){l({kind:"note",text:"explain isn't available here"}),k();return}let n=r.explain(r.contextDir,r.graph,e),o=n.target?[`${n.target.label} ${n.target.slug??n.target.cid.slice(0,19)}:`,...n.entries.map(s=>` [${s.kind}] ${s.rationale??s.detail}`)].join(`
|
|
3
|
-
`):`unknown ref: ${e}`;l({kind:"note",text:o}),k()},subscribe(e){return c.push(e),()=>{let n=c.indexOf(e);n>=0&&c.splice(n,1)}},submit(e){if(t.confirm&&(t.confirm=null),t.pending){ie(e),k();return}if(!i){t.turns.push({role:"user",text:e}),l({kind:"user",text:e}),t.notice="the agent isn't running \u2014 nothing sent",k();return}for(t.notice=void 0,t.checkpoint=!1,M(),t.turns.push({role:"user",text:e}),l({kind:"user",text:e}),C(e),t.status="streaming",t.busySince=Date.now(),t.error=void 0,m+=1;a.length>0;)m+=1,i({type:"user_message",message_id:`u${m}-receipt`,text:a.shift()});i({type:"user_message",message_id:`u${m}`,text:e}),k()},attachSender(e){i=e},attachOnCommitted(e){h=e},attachConversationSource(e){d=e},holdReceipt(e){a.push(e),t.checkpoint=!0,k()},drainHeldReceipts(){return a.splice(0,a.length)},reopenQuestion(){let e=t.pending;if(!e)return;let n=e.cursor<0?e.questions.length:e.cursor;for(let o=n-1;o>=0;o--)if(e.resolution[o]){e.cursor=o,k();return}},continueParked(){if(!(!i||a.length===0)){for(t.checkpoint=!1,l({kind:"continued"});a.length>0;)m+=1,i({type:"user_message",message_id:`u${m}-receipt`,text:a.shift()});m+=1,i({type:"user_message",message_id:`u${m}`,text:"continue"}),t.status="streaming",t.busySince=Date.now(),k()}},note(e){l({kind:"note",text:e}),k()},registerAliases(e){for(let n of e)Q.set(n.ref,n.cid)},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}k()},ledger(e){(e.kind==="pause"||e.kind==="error"||e.kind==="summary")&&(I(),M()),(e.kind==="summary"||e.kind==="pause")&&(t.stream=null),l(e),e.kind==="commit"&&(e.ok?M(!0):ne()),k()},completeSession(){P(),i?.({type:"session_complete"}),t.status="idle",k()},requestPause(){P(),t.status="pausing";let e=i;Promise.resolve().then(()=>e?.({type:"pause"})),k()},ask(e){return t.pending=z(e),E=new Map(e.map((n,o)=>[n.id,o+1])),t.status="awaiting-input",k(),new Promise(n=>{j=n})},noteCoercion(e,n){l({kind:"answer",receipt:{form:"assumed",qNum:E.get(e.id)??0,stub:te(e),choice:n,note:"your typed answer couldn't be used here"}}),k()},onAgentEvent(e){switch(e.type){case"reasoning_delta":case"reasoning_done":case"tool_activity":case"decision_activity":{let n=t.thinking;if(t.thinking=Z(n,e),t.thinking!==n){if(e.type==="reasoning_done"&&e.present)l({kind:"thinking",tookMs:e.took_ms});else if(e.type==="tool_activity"&&e.status!=="started")l({kind:"tool",name:e.name,status:e.status==="done"?"ok":e.status,detail:e.detail});else if(e.type==="decision_activity"){let o=`\xB7 ${Y(e)}`,s=t.ledger[t.ledger.length-1];s&&s.kind==="note"&&s.text===o||l({kind:"note",text:o})}}if(e.type==="reasoning_delta"){G();return}break}case"usage":t.credits={turn:e.credits,total:e.total_credits};break;case"text_delta":{let n=B;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)&&(B={turn_id:e.turn_id,attempt:e.attempt},t.stream={text:""}),t.stream={text:(t.stream?.text??"")+e.text},G();return}case"progress":break;case"proposal":{u+=1,I(),t.stream=null,t.busySince&&(l({kind:"note",text:`\u2713 done in ${Math.max(1,Math.round((Date.now()-t.busySince)/1e3))}s`}),t.busySince=void 0);let n=ue(e.proposal),o=r.dedupFlags?.(e.proposal);if(o)for(let s of n){let g=o.get(s.temp_ref);g&&(s.matches_existing=g)}t.turns.push({role:"agent",turnIndex:u,items:n,text:e.narrative}),D=e.narrative??null,A=!0,t.activeTurn={turnIndex:u,heading:"use-cases",items:n},l({kind:"turn",turnIndex:u,heading:"use-cases",items:n}),(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"design":{u+=1,I(),t.stream=null,t.busySince&&(l({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:o}=ce(e.design),s=o.split(" + ").map(g=>de[g]??g).join(" + ");l({kind:"banner",text:`designing: ${s}`}),t.turns.push({role:"agent",turnIndex:u,items:n,itemsHeading:o,text:e.narrative}),D=e.narrative??null,A=!0,t.activeTurn={turnIndex:u,heading:o,items:n},l({kind:"turn",turnIndex:u,heading:o,items:n}),(t.status==="streaming"||t.status==="working")&&(t.status="idle"),t.workingLabel=void 0;break}case"ask_user":t.pending=z(e.questions),t.status="awaiting-input";break;case"chat_ops":{u+=1,I(),t.stream=null,t.status==="streaming"&&(t.status="idle");let n=e.chat_ops??e,o=Array.isArray(n.ops)?n.ops:[],s=n.text??e.text??"",g=r.refreshGraph?.()??r.graph,f=p=>Q.get(p)??p,v=o.map(p=>{if(!p.target)return p;let y=f(p.target),w=p.expected_cid;if(w==null&&g){let H=g.resolve(y);H&&(w=g.tipOf(H.cid))}let $=p.payload?.redirect_to,q=$&&f($);return y===p.target&&w===p.expected_cid&&q===$?p:{...p,target:y,expected_cid:w,...q!==$?{payload:{...p.payload,redirect_to:q}}:{}}}),O;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");O=ee(v,r.descriptor??{mint_gate:[]},{turn:u,...d?{convSourceId:d}:{}})}catch(p){t.error=p instanceof Error?p.message:String(p),t.turns.push({role:"agent",turnIndex:u,text:s,narration:t.error}),s&&l({kind:"agent",text:s}),l({kind:"error",title:t.error,detail:[]});break}let{chatOps:S,ambiguous:L}=O;if(L.length>0){let p=L[0];t.confirm={kind:"ambiguity-confirm",prompt:`did you mean edit or ${p.kinds.filter(y=>y!=="edit").join("/")} on ${p.target}?`},t.turns.push({role:"agent",turnIndex:u,text:s}),s&&l({kind:"agent",text:s});break}if(_(S),r.commitChatTurn&&S.length>0){let p=r.commitChatTurn({contextDir:r.contextDir??"",graph:r.refreshGraph?.()??r.graph,ops:S,by:r.by??{kind:"human",id:"owner"},...r.descriptor?.mint_gate?{mintable:r.descriptor.mint_gate}:{}});if(p.errors)t.error=p.errors.map(y=>y.detail).join("; "),t.turns.push({role:"agent",turnIndex:u,text:s}),l({kind:"commit",ok:!1,line:"commit failed \u2014 nothing landed",warnings:p.errors.map(y=>`${y.code}: ${y.detail}`)}),s&&l({kind:"agent",text:s});else{p.applied.length>0&&r.session?.markApplied(p.applied);let y=x(p);t.turns.push({role:"agent",turnIndex:u,text:s,narration:y}),l({kind:"commit",ok:!0,line:y});let w=r.refreshGraph?.();if(w&&h&&h(w),w)try{b+=1;let F=r.descriptor?.mint_gate?.includes("usecase")?"extract":"design",$=K({verb:F,commitN:b,phase:"chat",committed:p.minted.map(q=>({cid:q.cid,...q.slug?{logical_id:q.slug}:{}}))},w);a.push($.text)}catch{}s&&l({kind:"agent",text:s})}}else t.turns.push({role:"agent",turnIndex:u,text:s}),s&&l({kind:"agent",text:s});C(s);break}case"done":case"session_complete":I(),M(),t.status="idle",i=null;break;case"error":I(),M(),t.stream=null,t.status="idle",t.error=e.message,i=null,l({kind:"error",title:e.message,detail:[]});break;case"session_paused":break;default:break}k()}}}export{ke as makeChatController,ae as parseAnswerInput,te as questionStub};
|
package/dist/chunk-262ES67I.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as U}from"./chunk-GBBVP2JW.js";import{b as F}from"./chunk-JV356AYH.js";import{e as P,f as G}from"./chunk-WIA7TPK3.js";import{a as L}from"./chunk-QPZRHAYK.js";import{d as N}from"./chunk-2PQXEEVY.js";import{a as $}from"./chunk-MCQXRJGH.js";import{d as I}from"./chunk-ZG2V2ODK.js";import{d as R,e as x,g as V}from"./chunk-5YPBPZUR.js";function Q(e,s,t,r,n){let a=t.rows.filter(f=>{let g=r.get(f.temp_ref);return g!==void 0&&g!=="reject"});if(a.length===0)return{record:null,errors:null};let o={version:1,read_basis:s.latestHash,source:{source_id:t.source_id,source_cid:s.heads.get(t.source_id)??""},use_cases:a.map(f=>f.uc)},p=new Map;for(let f of a){let g=r.get(f.temp_ref);typeof g=="object"?p.set(f.temp_ref,{resolution:"edited",edit:g.edited}):p.set(f.temp_ref,{resolution:f.uc.matches_existing&&f.uc.changed?"edited":"approved"})}let m=o,i=o.source.source_cid?D(e,s,o.source.source_cid):null;if(i!==null){m=W(o,i);let f=P(m,X(i),s);if(f.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"},...f]}}let u=`held-${(s.latestHash??"root").slice(-12)}-${a.length}`;return G({contextDir:e,graph:s,proposal:m,proposalId:u,verdicts:p,by:n,autoName:!0})}function X(e){return e.replace(/\n$/,"").split(`
|
|
3
|
-
`).map((t,r)=>`${String(r+1).padStart(4,"0")}| ${t}`).join(`
|
|
4
|
-
`)}function W(e,s){let t=s.replace(/\n$/,""),r=X(s),n=a=>{if(!a?.quote)return a;let o=L(r,a.anchor);if(o!==null&&o.includes(a.quote))return a;let p=t.indexOf(a.quote);if(p===-1||t.indexOf(a.quote,p+1)!==-1)return a;let m=t.slice(0,p).split(`
|
|
5
|
-
`).length,i=m+a.quote.replace(/\n$/,"").split(`
|
|
6
|
-
`).length-1;return{...a,anchor:`L${m}-L${i}`}};return{...e,use_cases:e.use_cases.map(a=>({...a,cite:n(a.cite)??a.cite,...a.criteria?{criteria:a.criteria.map(o=>({...o,cite:n(o.cite)??o.cite}))}:{},...a.updated?.criteria?{updated:{...a.updated,criteria:a.updated.criteria.map(o=>({...o,cite:n(o.cite)??o.cite}))}}:{}}))}}function z(e,s,t=[]){let r=F(e,s),n=new Set,a=[],o=u=>{!u||n.has(u)||(n.add(u),a.push(b(e,u)))};for(let u of r.pairs)o(u.scenario),o(u.test);for(let[u,f]of r.verifies){o(u);for(let g of f)o(g)}if(t.length===0)return{stale_refs:a};let p=u=>`${String(u.props.source_id)}\0${String(u.props.anchor)}`,m=new Set;for(let{cid:u}of e.byLabel(R.USECASE))if(e.tipOf(u)===s)for(let f of e.edgesInto(u)){if(f.type!==x.DERIVES)continue;let g=f.props.claim;typeof g=="string"&&t.includes(g)&&m.add(p(f))}if(m.size===0)return{stale_refs:a};let i=new Set;for(let[u,f]of r.verifies)if(e.edgesInto(u).some(d=>d.type===x.DERIVES&&m.has(p(d)))){i.add(b(e,u));for(let d of f)i.add(b(e,d))}return{stale_refs:a,...i.size>0?{direct_refs:[...i]}:{}}}var j="this release plans changes only \u2014 blast-radius impact and drift meaning-checks are not measured, and REMOVE rows are never executed automatically",Z="suite untouched; graph updated";function M(e,s){return!e.superseded.has(s)&&e.trust.get(s)!=="archived"}function b(e,s,t=new Set){let r=e.nameOf.get(s);if(r!==void 0)return r;if(t.has(s))return s;t.add(s);for(let[n,a]of e.superseded){if(a!==s)continue;let o=b(e,n,t);if(o!==n)return o}return s}function O(e){return String(e).slice(0,19)}function A(e,s,t){let r=e.edgesFrom(s).find(n=>n.type===t);return r?e.tipOf(r.dst):null}function B(e,s){let t=e.nodeLabel.get(s);if(t===R.USECASE)return s;if(t===R.SCENARIO)return A(e,s,x.BELONGS_TO);if(t===R.AC){let r=A(e,s,x.SCOPED_TO);return r?e.nodeLabel.get(r)===R.USECASE?r:A(e,r,x.BELONGS_TO):null}if(t===R.TEST){let r=A(e,s,x.AUTOMATES);return r?A(e,r,x.BELONGS_TO):null}return null}function Y(e,s){let t=[],r=new Map;for(let n of e.derivesInto(s))r.set(String(n.props.source_id),n);for(let[n,a]of r){let o=e.heads.get(n);if(o==null){t.push(`DERIVES pin ${n} @ ${O(a.props.source_cid)} \u2014 source retired`);continue}if(o!==a.props.source_cid){let p=e.convChains.get(n)?.chain;if(p&&p.includes(String(a.props.source_cid)))continue;t.push(`DERIVES pin ${n} @ ${O(a.props.source_cid)} \u2014 source head moved to ${O(o)}`)}}for(let n of e.edgesFrom(s))V(n.type)?.pin?.comparesTo==="dst_tip"&&e.superseded.has(n.dst)&&t.push(`${n.type} pin \u2192 ${b(e,n.dst)} \u2014 target superseded`);return t.join("; ")||"structural pin broken"}var ee=new Set([R.USECASE,R.SCENARIO,R.AC,R.TEST]);function k(e,s){return e.ref<s.ref?-1:e.ref>s.ref?1:0}function D(e,s,t){let r=s.getNode(t)?.content.blob;if(typeof r!="string")return null;let n=N(e,r);return n===null?null:n.toString("utf8")}function te(e,s,t,r,n){let a=t.props.quote;if(typeof a=="string"&&a.length>0)return r.includes(a);let o=String(t.props.source_cid);n.has(o)||n.set(o,D(e,s,o));let p=n.get(o);if(p===null)return!1;let m=L(p,String(t.props.anchor));return m===null?!1:m.split(`
|
|
7
|
-
`).some(i=>i.trim().length>0&&r.includes(i.trim()))}var q=128*1024,K=64*1024;function ne(e,s){let t=e.split(`
|
|
8
|
-
`),r=s.split(`
|
|
9
|
-
`),n=0;for(;n<t.length&&n<r.length&&t[n]===r[n];)n++;let a=t.length,o=r.length;for(;a>n&&o>n&&t[a-1]===r[o-1];)a--,o--;if(a===n&&o===n)return"";let p=t.slice(n,a),m=r.slice(n,o),u=se(p,m,2e3),f=[];if(u===null)f.push(`@@ old L${n+1}-L${a} \u2192 new L${n+1}-L${o} @@`,...p.map(g=>`- ${g}`),...m.map(g=>`+ ${g}`));else{let g=u.map((c,w)=>c.op==="="?-1:w).filter(c=>c>=0),d=0;for(;d<g.length;){let c=d;for(;c+1<g.length&&g[c+1]-g[c]<=3;)c++;let w=Math.max(g[d]-1,0),y=Math.min(g[c]+1,u.length-1),_=u.slice(w,y+1),E=n+(_[0].ai??0)+1,h=n+(_[0].bi??0)+1,l=_.filter(v=>v.op!=="+").length,S=_.filter(v=>v.op!=="-").length;f.push(`@@ old L${E}-L${E+Math.max(l-1,0)} \u2192 new L${h}-L${h+Math.max(S-1,0)} @@`);for(let v of _)f.push(v.op==="="?` ${v.line}`:`${v.op} ${v.line}`);d=c+1}}return f.join(`
|
|
10
|
-
`)}function se(e,s,t){let r=e.length,n=s.length,a=Math.min(r+n,t),o=new Map([[1,0]]),p=[],m=!1;for(let g=0;g<=a&&!m;g++){p.push(new Map(o));for(let d=-g;d<=g;d+=2){let c=d===-g||d!==g&&(o.get(d-1)??0)<(o.get(d+1)??0)?o.get(d+1)??0:(o.get(d-1)??0)+1,w=c-d;for(;c<r&&w<n&&e[c]===s[w];)c++,w++;if(o.set(d,c),c>=r&&w>=n){m=!0;break}}}if(!m)return null;let i=r,u=n,f=[];for(let g=p.length-1;g>0;g--){let d=p[g],c=i-u,w=c===-g||c!==g&&(d.get(c-1)??0)<(d.get(c+1)??0)?c+1:c-1,y=d.get(w)??0,_=y-w;for(;i>y&&u>_;)f.push({op:"=",line:e[i-1],ai:i-1,bi:u-1}),i--,u--;g>0&&(i===y?(f.push({op:"+",line:s[u-1],ai:i,bi:u-1}),u--):(f.push({op:"-",line:e[i-1],ai:i-1,bi:u}),i--))}for(;i>0&&u>0;)f.push({op:"=",line:e[i-1],ai:i-1,bi:u-1}),i--,u--;for(;i>0;)f.push({op:"-",line:e[i-1],ai:i-1,bi:0}),i--;for(;u>0;)f.push({op:"+",line:s[u-1],ai:0,bi:u-1}),u--;return f.reverse()}function oe(e){let s=Buffer.byteLength(e,"utf8");if(s<=q+K)return{diff:e,truncated:!1};let t=Buffer.from(e,"utf8"),r=q;for(;r>0&&(t[r]&192)===128;)r--;let n=s-K;for(;n<s&&(t[n]&192)===128;)n++;let a=t.subarray(0,r).toString("utf8"),o=t.subarray(n).toString("utf8");return{diff:`${a}
|
|
11
|
-
\u2026 [diff truncated: ${s-r-(s-n)} bytes omitted] \u2026
|
|
12
|
-
${o}`,truncated:!0}}function re(e,s){let t=$(e),r=t.heads.get(s);if(typeof r!="string")return null;let n=[];for(let d of I(e).records){let c=d.source_head_moves?.[s];c!==void 0&&c!==n[n.length-1]&&n.push(c)}let a=n.lastIndexOf(r),o=a>0?n[a-1]:null;if(typeof o!="string"||o===r)return null;let p=D(e,t,o),m=D(e,t,r);if(p===null||m===null)return null;let{diff:i,truncated:u}=oe(ne(p,m)),f=new Set,g=[];for(let d of t.edgesFrom(o))d.type!==x.DERIVES||t.nodeLabel.get(d.dst)!==R.USECASE||f.has(d.dst)||(f.add(d.dst),g.push({id:d.dst,title:String(t.getNode(d.dst)?.content.title??"")}));return{source_id:s,old_head:o,new_head:r,diff:i,...u?{truncated:!0}:{},prior_ucs:g}}function ie(e,s,t){let r=e.getNode(s)?.content??{},n=e.getNode(t)?.content??{},o=[...new Set([...Object.keys(r),...Object.keys(n)])].sort().filter(p=>JSON.stringify(r[p])!==JSON.stringify(n[p]));return o.length>0?`updated: ${o.join(", ")}`:"updated"}function ce(e,s,t,r,n,a,o){let p=new Set((o?.rows??[]).map(c=>c.matched_cid).filter(c=>!!c)),m=[];for(let[c,w]of t.superseded)w===null||c===w||s.superseded.has(c)||t.nodeLabel.get(c)===R.USECASE&&m.push({kind:"MODIFY",ref:b(t,c),old_cid:c,new_cid:w,summary:ie(t,c,w)});let i=a.map(c=>({kind:"ADD",ref:b(t,c),cid:c}));for(let c of o?.rows??[])c.kind==="MODIFY"&&c.matched_cid?m.push({kind:"MODIFY",ref:b(t,c.matched_cid),old_cid:c.matched_cid,new_cid:null,summary:`${c.why} (staged)`}):c.kind==="ADD"&&i.push({kind:"ADD",ref:c.title,cid:null});let u=[],f=D(e,t,n),g=new Map;for(let{cid:c}of t.byLabel(R.USECASE)){if(!M(t,c)||p.has(c))continue;let w=t.derivesInto(c),y=w.filter(h=>String(h.props.source_id)===r);y.length===0||y.some(h=>h.props.source_cid===n)||f!==null&&y.some(h=>String(h.props.anchor)!=="img#whole"&&te(e,t,h,f,g))||w.some(h=>{let l=String(h.props.source_id);if(l===r)return!1;let S=t.heads.get(l);return S!=null})||u.push({kind:"ARCHIVE",ref:b(t,c),cid:c,why:`evidence decayed: no quote from ${r} relocates into @${O(n)}, no other live source, no fresh evidence this run`,impact:z(t,t.tipOf(c))})}let d=(c,w)=>c.ref<w.ref?-1:c.ref>w.ref?1:0;return[...m.sort(d),...i.sort(d),...u.sort(d)]}function he(e,s,t,r,n){let a=s.rows.find(d=>d.temp_ref===t);if(!a)return{ok:!1,message:`held item ${t} missing from the plan artifact`};let o=a,p=$(e);if(o.matched_cid){let d=p.tipOf(o.matched_cid);if(p.superseded.get(d)===null)return{ok:!1,message:`use-case for "${o.title}" was retired meanwhile \u2014 nothing to update`};d!==o.matched_cid&&(o={...o,matched_cid:d,uc:{...o.uc,matches_existing:{cid:d}}})}let m=n?{edited:n}:"approve",i=Q(e,p,{source_id:s.source_id,rows:[o]},new Map([[o.temp_ref,m]]),r);if(i.errors)return{ok:!1,message:i.errors.map(d=>`${d.code}: ${d.detail}`).join("; ")};let u=$(e),f=o.matched_cid?u.tipOf(o.matched_cid):i.record?.nodes.find(d=>d.label==="usecase")?.cid??i.record?.review[0]?.id;return{ok:!0,ref:f?b(u,f):o.title,kind:o.kind}}async function we(e,s,t,r={}){let n=$(e),a=n.heads.get(s)??null,o=new Set(n.staleList().filter(l=>l.state==="stale").map(l=>l.cid)),p=await t.reingest(s);if(p.status==="unchanged"&&!r.resumeHeld)return{source_id:s,changed:!1,head:{status:p.status,before:a,after:p.cid},note:`nothing to reconcile \u2014 ${s} is unchanged`,skipped_arms:j,changeset:[],rows:[]};let m=r.resumeHeld?{minted:[],matched:[],held:r.resumeHeld}:await t.reextract(s),i=$(e),u=m.minted.map(l=>{let S=b(i,l);return{kind:"ADD",origin:"content-change",ref:S,reason:`new use-case extracted from ${s}`,provenance:`extraction commit \u2014 DERIVES ${s} @ ${O(p.cid)}`,action:`kane-cli design tests --use-case ${S}`}}),f=i.staleList().filter(l=>l.state==="stale"&&!o.has(l.cid)&&M(i,l.cid)).map(l=>l.cid),g=f.map(l=>{let S=b(i,l),v=ee.has(i.nodeLabel.get(l)??"");return{kind:"MODIFY",origin:"structural-stale",ref:S,reason:"stale (structural)",provenance:Y(i,l),action:v?`kane-cli maintain evolve ${S}`:`kane-cli design explain ${S}`}}),d=[],c=[];for(let l of m.held?.rows??[])if(l.kind==="ADD")d.push({kind:"ADD",origin:"content-change",ref:l.title,held_ref:l.temp_ref,reason:`${l.why} (staged \u2014 commits on approval)`,provenance:`staged extraction of ${s} @ ${O(p.cid)}`,action:"approve to commit + design"});else{let S=l.matched_cid?i.tipOf(l.matched_cid):null,v=S?i.getNode(S)?.content.criteria??[]:[],T=(l.uc.updated?.criteria??[]).map(C=>typeof C=="string"?C:C.text),J=[...T.filter(C=>!v.includes(C)),...l.uc.updated?.criteria!==void 0?v.filter(C=>!T.includes(C)):[]],H=S?z(i,S,J):void 0;c.push({kind:"MODIFY",origin:"content-change",ref:l.matched_cid?b(i,l.matched_cid):l.title,held_ref:l.temp_ref,reason:`${l.why} (staged \u2014 commits on approval)`,provenance:`staged extraction of ${s} @ ${O(p.cid)}`,action:"approve to commit the updated version (old\u2192new redirect)",...H?{impact:H}:{}})}let w=new Set;for(let l of[...m.minted,...m.matched])w.add(i.tipOf(l));for(let l of m.held?.rows??[])l.matched_cid&&w.add(i.tipOf(l.matched_cid));for(let l of f){let S=B(i,i.tipOf(l));S&&i.nodeLabel.get(S)===R.USECASE&&w.add(i.tipOf(S))}let y=[];for(let l of await U(i,"design")){if(l.kind!=="no-verifies")continue;let S=i.resolve(l.ref);if(!S)continue;let v=B(i,S.tip);!v||!w.has(i.tipOf(v))||y.push({kind:"ADD",origin:"content-change",ref:l.ref,reason:l.why,provenance:`gaps engine (design) \u2014 uncovered AC of touched use-case ${b(i,v)}`,action:l.ready_command})}let _=[];for(let{cid:l}of i.byLabel(R.USECASE))M(i,l)&&i.stale(l)==="orphaned"&&_.push({kind:"REMOVE",ref:b(i,l),reason:"orphaned \u2014 no live source evidences this use-case",provenance:Y(i,l),action:"plan-only \u2014 REMOVE is not executed in this release"});let E=new Set,h=[...u.sort(k),...d.sort(k),...y.sort(k),...c.sort(k),...g.sort(k),..._.sort(k)].filter(l=>{let S=`${l.kind}\0${l.ref}`;return E.has(S)?!1:(E.add(S),!0)});return{source_id:s,changed:!0,head:{status:p.status,before:a,after:p.cid},note:Z,skipped_arms:j,changeset:ce(e,n,i,s,p.cid,m.minted,m.held),rows:h,...m.held?{held:m.held}:{}}}function _e(e,s){return async t=>{let{ingestFile:r}=await import("./ingest-C5ANIN7S.js"),n=await r({contextDir:e,filePath:s,asId:t});return{status:n.status,cid:n.cid}}}function Se(e,s={}){return async t=>{let r=[],[{runExtract:n},{resolveAgentAuthEnv:a},{runAgent:o},{preflightTurn:p}]=await Promise.all([import("./run-2A7M7EJK.js"),import("./spawner-DWONVIPI.js"),import("./bridge-PDJEOSAJ.js"),import("./turn-preflight-JGYT7LXP.js")]),m=await a(),i=new Set($(e).byLabel(R.USECASE).map(_=>_.cid)),u=re(e,t)??void 0,f=0,g=await n({mode:"override",...u?{changeContext:u}:{}},{contextDir:e,agent:o,preflightTurn:()=>p(m),ask:async()=>[],review:async _=>{if(!s.stage)return new Map(_.map(h=>[h.temp_ref,{resolution:h.matches_existing&&h.changed?"edited":"skipped"}]));let E=new Map;for(let h of _){if(h.matches_existing&&!h.changed){E.set(h.temp_ref,{resolution:"skipped"});continue}r.push({kind:h.matches_existing?"MODIFY":"ADD",temp_ref:h.temp_ref,title:h.title,why:h.matches_existing?`updated: ${Object.keys(h.updated??{}).join(", ")||"content"}`:`newly extracted from ${t}`,...h.matches_existing?{matched_cid:h.matches_existing.cid,updated:h.updated}:{},uc:h}),E.set(h.temp_ref,{resolution:"rejected"})}return E},confirmStale:async()=>!1,out:_=>process.stderr.write(_+`
|
|
13
|
-
`),progress:_=>process.stderr.write(_+`
|
|
14
|
-
`),emit:_=>{_.type==="commit"&&typeof _.assumed=="number"&&(f+=_.assumed)},isTTY:!1,auth:m});if(g!==0)throw new Error(`reconcile: re-extract of ${t} failed (exit ${g})`);let d=$(e),c=d.heads.get(t),w=[],y=[];if(typeof c=="string"){let _=new Set;for(let E of d.edgesFrom(c))E.type!==x.DERIVES||d.nodeLabel.get(E.dst)!==R.USECASE||_.has(E.dst)||(_.add(E.dst),!(s.stage&&d.trust.get(E.dst)==="archived")&&(i.has(E.dst)?y:w).push(E.dst))}return{minted:w,matched:y,defaultsTaken:f,...s.stage?{held:{source_id:t,rows:r}}:{}}}}export{he as a,we as b,_e as c,Se as d};
|
package/dist/chunk-4A6BLXQN.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b,c as ge,d as ct,f as ve,g as he}from"./chunk-CJJXT5DO.js";import{a as at,e as N,f as J,g as dt,h as te,i as U,j as ut}from"./chunk-FJTWJ243.js";import{a as oe}from"./chunk-BC7UVJJB.js";import{d as ft}from"./chunk-2PQXEEVY.js";import{a as K,b as W,d as st}from"./chunk-EHN5HTUD.js";import{a as T,b as S}from"./chunk-L5LI2JF4.js";import{a as O}from"./chunk-MCQXRJGH.js";import{b as ie}from"./chunk-74RUSHIB.js";import{a as pt}from"./chunk-ZZLR3O5A.js";import{e as re,g as ne}from"./chunk-ZG2V2ODK.js";import{d as R,e as H,f as lt}from"./chunk-5YPBPZUR.js";import{a as ot}from"./chunk-AKHUNBQS.js";import{a as it}from"./chunk-6SGPN76K.js";function M(e){if(e===null)return"broken";let t=Math.floor(e/100);return t===1?"passed":t===7?"failed":t===2?"skipped":"broken"}var j={failed:3,broken:2,passed:1,skipped:0};function we(e){let t="skipped";for(let r of e)j[r]>j[t]&&(t=r);return t}import{createHash as Wt}from"crypto";import{basename as Jt}from"path";function ye(e){let t=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40);return t.length>0?t:"session"}function _e(e){return Wt("sha256").update(e).digest("hex").slice(0,8)}function xe(e){let t=Jt(e).replace(/_test\.md$/i,"").replace(/\.md$/i,"");return`${ye(t)}-${_e(e)}`}function Se(e,t){return`${ye(e)}-${_e(t)}`}function be(e){let t={};for(let[r,n]of Object.entries(e))typeof n=="string"&&n.length>0&&(t[r]=n);return t}var Xt={darwin:"macOS",linux:"Linux",win32:"Windows"};function ke(e){return Xt[e]??e}function Ee(e,t){let r={},n=(i,o)=>{o!==void 0&&o!==""&&(r[i]=o)};return n("model",t.model),n("os",e.os),n("browser",e.browser),n("browser_version",e.browser_version),n("resolution",e.resolution),n("platform",t.platform),n("platform_type",t.platform_type),n("run_kind",t.run_kind),n("os_version",e.os_version),e.device!==void 0&&e.device!==""?r.device=e.device:t.platform_type&&t.platform_type!=="web"&&(r.device=null),r}function Zt(e,t){return{pack_test_dir:e,ordinal_offset:t}}import{promises as P}from"fs";import{join as D}from"path";function Ie(e){let t={evidence:"0.1",run_id:e.execution_id,status:"running",title:e.title,started:e.started,environment:{producer:{name:"kane-cli",version:e.producerVersion},...e.surfaces?{surfaces:e.surfaces}:{},run_kind:e.run_kind,origin:e.origin,pid:e.pid},...e.credits!==void 0?{metrics:{credits:{value:e.credits,type:"count"}}}:{}};return S(t,{lineWidth:-1})}async function Re(e,t,r,n=process.cwd(),i){let o=i??b(e.execution_id,n),a=D(o,"tests",t);return await P.mkdir(D(o,"coverage"),{recursive:!0}),await P.writeFile(D(o,"coverage",".keep"),""),await P.mkdir(a,{recursive:!0}),await P.writeFile(D(o,"run.yaml"),Ie(e)),r&&await P.writeFile(D(a,r.path),r.content),o}async function Qt(e,t=process.cwd()){let r=b(e.execution_id,t);await P.mkdir(D(r,"coverage"),{recursive:!0}),await P.writeFile(D(r,"coverage",".keep"),"");let n=T(Ie(e));return n.environment&&delete n.environment.run_kind,await P.writeFile(D(r,"run.yaml"),S(n,{lineWidth:-1})),r}async function qt(e,t=process.cwd()){return W(b(e,t),new Date().toISOString())}async function Pe(e,t=process.cwd()){await P.rm(b(e,t),{recursive:!0,force:!0})}import{promises as Ce}from"fs";import{join as Ae}from"path";function Oe(e){let t={evidence:"0.1",test:e.testId,status:e.status,...e.durationMs!==void 0?{duration_ms:e.durationMs}:{},...e.definitionPath?{definition:{path:e.definitionPath}}:{},...e.definitionId?{definition_id:e.definitionId}:{},...e.assuranceId?{assurance_id:e.assuranceId}:{},...Object.keys(e.externalId).length?{external_id:e.externalId}:{},...e.tags&&e.tags.length?{tags:e.tags}:{},...Object.keys(e.environment).length?{environment:e.environment}:{},steps:e.steps};return S(t,{lineWidth:-1})}function De(e){return S({logs:e},{lineWidth:-1})}async function $e(e,t,r){await Ce.writeFile(Ae(e,"tests",t,"result.yaml"),r)}async function Fe(e,t,r){let n=Ae(e,"tests",t,"logs");await Ce.mkdir(n,{recursive:!0}),await Ce.writeFile(Ae(n,"meta.yaml"),r)}import{promises as se}from"fs";import{join as mt}from"path";function gt(e){return mt(e,".internal","meta.json")}async function vt(e){let t;try{t=await se.readFile(gt(e),"utf8")}catch(n){if(n?.code==="ENOENT")return null;throw n}let r=JSON.parse(t);if(!r||typeof r!="object"||Array.isArray(r))throw new Error("meta.json is not a JSON object");return r}async function Le(e,t){let r;try{r=await vt(e)??{}}catch(a){console.warn(`evidence: meta.json at ${e} unreadable \u2014 skipping execution-pointer append to preserve identity`,a);return}let n=Array.isArray(r.executions)?r.executions:[];n.push(t),r.executions=n,await se.mkdir(mt(e,".internal"),{recursive:!0});let i=gt(e),o=`${i}.tmp-${process.pid}-${Date.now()}`;await se.writeFile(o,JSON.stringify(r,null,2)+`
|
|
3
|
-
`),await se.rename(o,i)}async function er(e){try{let t=await vt(e);return t&&Array.isArray(t.executions)?t.executions:[]}catch{return[]}}async function tr(e,t,r=process.cwd()){let n=await ve(e,r);if(!n){let o=`evidence: no pack found for "${e}"`;return t.json?console.log(JSON.stringify({valid:!1,error:"not_found",target:e})):console.error(o),2}let i=await K(n,t.profile??"L1");return t.json?console.log(JSON.stringify({valid:i.valid,status:i.status,diagnostics:i.diagnostics})):console.log(`evidence: ${i.valid?"valid":"INVALID"} (${t.profile??"L1"}, status ${i.status})`),i.valid?0:1}function Te(e){let t=[];for(let r of e){let n=r.perFlow&&r.perFlow.length?r.perFlow.map(i=>i.resultCode):[r.resultCode];for(let i of n)t.push(M(i))}return we(t)}function rr(e){let t=null;for(let r of e){let n=r.perFlow&&r.perFlow.length?r.perFlow.map(i=>i.resultCode):[r.resultCode];for(let i of n)i!=null&&(t==null||j[M(i)]>j[M(t)]||j[M(i)]===j[M(t)]&&i>t)&&(t=i)}return t}import{promises as nr}from"fs";import{extname as ht,basename as ir}from"path";var or={".ndjson":"ndjson",".log":"log",".json":"json",".har":"har"};async function Ne(e){let t;try{t=await nr.readdir(e)}catch{return[]}return t.filter(r=>r!=="meta.yaml").sort().map(r=>({name:ir(r,ht(r)),file:r,format:or[ht(r)]??"txt"}))}import{mkdirSync as sr,appendFileSync as cr}from"fs";import{join as wt}from"path";function je(e,t){return wt(e,"tests",t,"logs")}function Me(e,t,r,n={},i){try{i?.(t,r,r,n)}catch{}if(e)try{sr(e,{recursive:!0});let o=JSON.stringify({ts:new Date().toISOString(),level:t,event:r,...n})+`
|
|
4
|
-
`;cr(wt(e,"diagnostics.ndjson"),o)}catch{}}import{promises as $}from"fs";import{join as G}from"path";async function ar(e){try{let t=G(e,"tests"),r=await $.readdir(t).catch(()=>[]);for(let n of r){let i=G(t,n,"steps"),o=await $.readdir(i).catch(()=>[]);for(let a of o){let s=await $.readFile(G(i,a,"failure.yaml"),"utf8").catch(()=>null);if(s!=null)try{let u=T(s);if(u&&typeof u=="object"&&u.triage)return!0}catch{}}}}catch{}return!1}async function yt(e,t,r){let n=G(e,"tests",t,"logs");if(r)try{await $.mkdir(n,{recursive:!0}),await $.copyFile(r,G(n,"tui.log"))}catch{}let i=await Ne(n);i.length&&await Fe(e,t,De(i))}async function Ve(e){let t=e.cwd??process.cwd(),r=e.packDir??b(e.executionId,t);if(!e.saved&&!e.packDir)return await Pe(e.executionId,t),{sealed:!1};await yt(r,e.testId,e.tuiLogPath);let n=G(r,"run.yaml"),i=T(await $.readFile(n,"utf8"));i.environment={...i.environment??{},saved:e.saved,run_kind:e.runKind},await $.writeFile(n,S(i,{lineWidth:-1}));let o=await $.open(n,"r+");try{await o.sync()}finally{await o.close()}let a=await ar(r);await W(r,new Date().toISOString());let s;try{let c=await K(r,"L1");s=c.valid;let p=(c.diagnostics??[]).filter(l=>String(l?.code??"").includes("failure.status_disagrees"));if(p.length>0)if(e.expectStatusDisagrees||a){let l=e.expectStatusDisagrees?"expected under --bug-detection continue":"self-explained by triaged failure record(s)";console.warn(`evidence: ${p.length} status_disagrees advisory(ies) \u2014 ${l}`)}else console.warn(`evidence: ${p.length} status_disagrees advisory(ies) \u2014 step verdicts disagree with their failure records`,p);if(!c.valid){console.warn(`evidence: sealed pack ${e.executionId} failed L1 validation`,c.diagnostics);let l=String(c.diagnostics?.[0]?.code??"");Me(je(r,e.testId),"warn","EVIDENCE_INVALID",{execution_id:e.executionId,first_code:l,surface:e.surface??"testmd"},e.log)}}catch(c){console.warn(`evidence: validation error for ${e.executionId}`,c)}let u;if(e.saved&&e.packDir)try{u=await ct(r,e.executionId,t)}catch(c){console.warn(`evidence: store install failed for ${e.executionId}`,c)}if(e.outputStemDir)try{await Le(e.outputStemDir,{execution_id:e.executionId,run_kind:e.runKind,status:e.verdict,valid:s,at:new Date().toISOString()})}catch(c){console.warn(`evidence: execution-pointer append failed for ${e.executionId} (pack is sealed)`,c)}return{sealed:!0,valid:s,storePath:u}}import{release as _t}from"os";import{execFileSync as dr}from"child_process";var xt=!1,ce;function ur(){if(!xt)if(xt=!0,process.platform==="darwin")try{ce=dr("sw_vers",["-productVersion"],{timeout:2e3}).toString().trim()||void 0}catch{ce=_t()||void 0}else ce=_t()||void 0;return ce}function Be(e){let t={os:ke(process.platform)},r=ur();if(r&&(t.os_version=r),e.cdpBrowser){let n=/^([A-Za-z]+)\/(\d+)/.exec(e.cdpBrowser);n&&(t.browser=n[1].replace(/^Headless/,""),t.browser_version=n[2])}return e.resolution&&(t.resolution=e.resolution),t}async function St(e){if(e)try{let t=await fetch(`${e}/json/version`,{signal:AbortSignal.timeout(2e3)});if(!t.ok)return;let r=await t.json();return typeof r.Browser=="string"?r.Browser:void 0}catch{return}}function lr(e){let t;return()=>(t||(t=St(e)),t)}import{promises as Ue,existsSync as He,readFileSync as gr}from"fs";import{basename as vr,join as F}from"path";import{readFileSync as pr}from"fs";import{dirname as fr,resolve as mr}from"path";function bt(e,t){let r=mr(e),n=pr(r,"utf8");return N(t?J(n,te(fr(r),t)):n)}var X=class e{constructor(t){this.opts=t}executionId;testId;definitionPath=null;definitionContent=null;accumulatedSteps=[];maxOrdinal=0;_packDirOverride;_attached=!1;get attached(){return this._attached}static async attach(t){let r=vr(t.packDir).replace(/\.evidence$/,""),n=new e({origin:"testrun",runKind:"author",pid:process.pid,title:t.testId,started:new Date().toISOString(),producerVersion:it,cwd:t.cwd});n.executionId=r,n.testId=t.testId,n._packDirOverride=t.packDir,n._attached=!0;let i=F(t.packDir,"tests",t.testId);return await Ue.mkdir(i,{recursive:!0}),t.definition&&(await Ue.writeFile(F(i,t.definition.path),t.definition.content),n.definitionPath=t.definition.path,n.definitionContent=t.definition.content),n}async start(){if(this._attached)throw new Error("attach-mode session is already started");this.executionId=ge(),this.testId=this.opts.testmdRelPath?xe(this.opts.testmdRelPath):Se(this.opts.objectiveOrName??"session",this.opts.sessionId??this.executionId);let t=this.opts.definition??null;return await Re({execution_id:this.executionId,title:this.opts.title,started:this.opts.started,producerVersion:this.opts.producerVersion,surfaces:this.opts.surfaces,run_kind:this.opts.runKind,origin:this.opts.origin,pid:this.opts.pid,...this.opts.credits!==void 0?{credits:this.opts.credits}:{}},this.testId,t,this.opts.cwd,this.opts.packRootDir?this.pack:void 0),t&&(this.definitionPath=t.path,this.definitionContent=t.content),{executionId:this.executionId,testId:this.testId,packTestDir:this.packTestDir}}get pack(){return this._packDirOverride?this._packDirOverride:this.opts.packRootDir?F(this.opts.packRootDir,`${this.executionId}.evidence`):b(this.executionId,this.opts.cwd)}get packTestDir(){return F(this.pack,"tests",this.testId)}async writeDefinition(t,r="test.md"){await Ue.writeFile(F(this.packTestDir,r),t),this.definitionPath=r,this.definitionContent=t}computeAssuranceId(){try{if(this.opts.testmdRelPath&&this.opts.cwd){let t=F(this.opts.cwd,this.opts.testmdRelPath);if(He(t))return U(gr(t,"utf8"))?.id}}catch{}}computeDefinitionId(){try{if(this.opts.testmdRelPath&&this.opts.cwd){let t=F(this.opts.cwd,this.opts.testmdRelPath),r=F(this.opts.cwd,".context"),n=He(r)?O(r):void 0;if(He(t))return bt(t,n)}if(this.definitionContent!=null)return N(this.definitionContent)}catch{}}noteSpawn(t){this.accumulatedSteps.push(...t.steps),this.maxOrdinal=Math.max(this.maxOrdinal,t.maxOrdinal)}nextOrdinalOffset(){return this.maxOrdinal}get steps(){return this.accumulatedSteps}async writeResult(t){let r=Te(t.spawns),n=this.pack;await $e(n,this.testId,Oe({testId:this.testId,status:r,durationMs:t.durationMs,definitionPath:this.definitionPath,definitionId:this.computeDefinitionId(),assuranceId:this.computeAssuranceId(),externalId:be(t.externalIdInput),environment:Ee(t.runnerEnv,t.intentEnv),steps:t.steps,tags:t.tags}));let i=t.externalIdInput;return t.log&&(i.commit_id||i.test_id||i.testcase_id)&&t.log("info","EVIDENCE_EXTERNAL_ID","Evidence external-id mapping",{execution_id:this.executionId,commit_id:i.commit_id??null,test_id:i.test_id??null,testcase_id:i.testcase_id??null,project_id:i.project_id??null,session_id:i.session_id??null,session_name:i.session_name??null}),r}get id(){return this.executionId}get test(){return this.testId}};async function hr(e,t,r=he){try{let n=await r(e);if(n.aborted.length>0||n.removed.length>0)try{t?.("info","EVIDENCE_RECOVERY","Startup evidence recovery swept incomplete packs",{aborted:n.aborted,removed:n.removed,origin:"startup"})}catch{}return n}catch(n){return console.warn("evidence: startup recovery failed",n),{aborted:[],removed:[]}}}import{promises as Jr}from"fs";import{existsSync as Ye,mkdirSync as Ur,readdirSync as Hr,readFileSync as Gr,rmSync as zr,statSync as Yr,writeFileSync as Kr}from"fs";import{join as z}from"path";var wr={window:10,latest_only:!1,stale_at_run_weight:.5,counted_verdicts:["passed","failed"],accepted_oracle_modes:["authored","inferred","runtime-derived"],verified_threshold:.5,min_passes:1,risk_weights:{high:3}},yr={window:10,latest_only:!0,stale_at_run_weight:0,counted_verdicts:["passed","failed"],accepted_oracle_modes:["authored","inferred"],verified_threshold:1,min_passes:1,risk_weights:{high:3}},_r={lenient:wr,strict:yr};function xr(e,t){let r=e.slice(-t.window),n=new Map;for(let c of r)n.set(c.execution_id,c);let i=[...n.values()].sort((c,d)=>c.ts<d.ts?-1:c.ts>d.ts?1:c.execution_id<d.execution_id?-1:1).filter(c=>t.counted_verdicts.includes(c.verdict)&&t.accepted_oracle_modes.includes(c.oracle_mode));t.latest_only&&i.length>1&&(i=[i[i.length-1]]);let o=0,a=0,s=0;for(let c of i){let d=c.stale_at_run?t.stale_at_run_weight:1;o+=d,c.verdict==="passed"&&(a+=d,s++)}let u=o>0?Math.round(a/o*100)/100:0;return{score:u,verified:u>=t.verified_threshold&&s>=t.min_passes,passes:s,counted:i.length}}function kt(e,t){let r=0,n=0;for(let i of e){let o=t.risk_weights[i.risk]??1;r+=o,i.verified&&(n+=o)}return r>0?Math.round(n/r*100):0}function Sr(e,t){let r={},n={},i=[],o=0;for(let a of e.usecases){let s=[];for(let d of a.acceptance_criteria){let p=xr(d.executions??[],t);r[d.id]=p;let l={risk:d.risk,verified:p.verified};s.push(l),i.push(l)}let u=s.filter(d=>d.verified).length,c=s.length>0&&u===s.length?"covered":u>0?"partial":"uncovered";c==="covered"&&o++,n[a.id]={status:c,pct:kt(s,t)}}return{config:t,acs:r,usecases:n,summary:{coverage_pct:kt(i,t),acs_verified:`${i.filter(a=>a.verified).length}/${i.length}`,usecases_covered:`${o}/${e.usecases.length}`,uncovered:Object.values(n).filter(a=>a.status==="uncovered").length}}}function Et(e,t=_r){return{rollup_version:1,stale_sources:new Set(e.usecases.flatMap(r=>r.stale_sources??[])).size,high_risk_gaps:(e.gaps??[]).filter(r=>r.risk==="high").length,aspects:Object.fromEntries(Object.entries(t).map(([r,n])=>[r,Sr(e,n)]))}}var C=(e,t)=>e.nameOf.get(t)??t,V=(e,t)=>!e.superseded.has(t);function br(e,t){return e.byLabel(R.SCENARIO).filter(({cid:r})=>V(e,r)).filter(({cid:r})=>e.edgesFrom(r).some(n=>n.type===H.BELONGS_TO&&e.tipOf(n.dst)===t)).map(({cid:r})=>r)}function kr(e,t,r){let n=[];for(let{cid:i}of e.byLabel(R.AC)){if(!V(e,i))continue;let o=e.edgesFrom(i).find(s=>s.type===H.SCOPED_TO);if(!o)continue;let a=e.tipOf(o.dst);a===t?n.push({cid:i,scope:{type:"usecase",ref:C(e,t)}}):r.has(a)&&n.push({cid:i,scope:{type:"scenario",ref:C(e,a)}})}return n}function Er(e){let t=e.filter(r=>r!==void 0).map(r=>r.execution);return t.includes("failed")?"failed":t.includes("blocked")?"blocked":t.includes("passed")?"passed":"not-run"}var Ir={passed:"passed",failed:"failed",broken:"blocked",skipped:"not-run"};function Rr(e,t){let r=t.flatMap(n=>n?.acs??[]).filter(n=>n.ref===e).map(n=>Ir[n.verdict]??"not-run");return r.length===0?Er(t):r.includes("failed")?"failed":r.includes("blocked")?"blocked":r.includes("passed")?"passed":"not-run"}function It(e,t,r){let n=r?.scope==="run",i=[],o=new Set,a=new Map;for(let[c,d]of e.nameOf)a.set(e.tipOf(c)??c,d);let s=c=>a.get(c)??C(e,c);for(let{cid:c,content:d}of e.byLabel(R.USECASE)){if(!V(e,c)||e.trust.get(c)==="archived")continue;let p=e.tipOf(c),l=e.derivesInto(p).filter(f=>!e.superseded.has(f.ecid)),v=[...new Set(l.map(f=>String(f.props?.source_id??"")).filter(Boolean))].sort(),g=v.map(f=>{let y=e.heads.get(f);if(typeof y!="string")return{id:f};let m=e.getNode(y)?.content.blob;return{id:f,media_type:e.mediaOf(y).media_type,...typeof m=="string"?{cid:m}:{}}}),w=l[0],E=new Map;for(let f of l)f.props?.source_id&&f.props?.source_cid&&E.set(String(f.props.source_id),String(f.props.source_cid));let I=v.filter(f=>{let y=e.heads.get(f),m=E.get(f);return y!=null&&m!==void 0&&y!==m}).sort(),_=e.edgesFrom(c).filter(f=>f.type===H.DEPENDS_ON&&!e.superseded.has(f.ecid)).map(f=>Cr(e,f.dst)).filter(f=>f!==null).sort(),A=br(e,p),B=new Set(A),Y=A.map(f=>{let y=e.getNode(f)?.content??{},m=e.edgesFrom(f).filter(k=>k.type===H.EXERCISES&&!e.superseded.has(k.ecid)&&V(e,e.tipOf(k.dst))).map(k=>C(e,e.tipOf(k.dst))).sort();return{id:C(e,f),case_type:String(y.case_type??""),intent:String(y.intent??""),exercises:m}}).sort((f,y)=>f.id<y.id?-1:1),ue=!1,L=new Set([p]);for(let f of A)L.add(f);let q=kr(e,p,B).map(({cid:f,scope:y})=>{let m=e.getNode(f)?.content??{},k=[...new Set(e.edgesInto(f).filter(h=>h.type===H.VERIFIES&&!e.superseded.has(h.ecid)).map(h=>e.tipOf(h.src)).filter(h=>!!h&&V(e,h)))].sort((h,x)=>s(h)<s(x)?-1:1),le=k.length>0,pe=k.map(h=>t.get(`id:${s(h)}`)??t.get(`def:${String(e.getNode(h)?.content.definitionId??"")}`)),tt=pe.some(h=>h!==void 0);tt&&(ue=!0),L.add(f);for(let h of k)L.add(h);let Kt=le&&!tt?"unknown":e.stale(f)==="fresh"?"fresh":"stale",ee=m.expected_answer??{},fe=C(e,f),rt=k.flatMap(h=>(e.execHistory?.(s(h))??[]).map(x=>({execution_id:String(x.execution_id),ts:String(x.started_at),verdict:String(x.per_ac?.find(me=>me.ac_ref===fe)?.verdict??x.verdict),stale_at_run:!!x.stale_at_run,oracle_mode:String(x.oracle_mode),...x.via_parent?{via_parent:String(x.via_parent)}:{}}))).sort((h,x)=>h.ts<x.ts?-1:1).slice(-10);return{id:fe,text:String(m.text??""),risk:String(m.risk??""),scope:y,covered_by:k.map(h=>s(h)),...le?{link_type:"verifies"}:{},execution:Rr(fe,pe),fresh:Kt,derived:!!m.derived,...m.kind||m.expected_answer?{expected_answer:{...m.kind?{kind:String(m.kind)}:{},statement:String(m.text??""),...ee.operator!==void 0?{operator:ee.operator}:{},...ee.operand!==void 0?{operand:ee.operand}:{}}}:{},...le?{satisfied_by:k.map((h,x)=>{let me=e.getNode(h)?.content.check??{},nt=pe[x]?.steps?.checkStepId??me.verified_against;return{test:s(h),...nt?{step:nt}:{}}})}:{},...rt.length?{executions:rt}:{}}}).sort((f,y)=>f.id<y.id?-1:1);if(!(n&&!ue)){for(let f of L)o.add(f);i.push({id:C(e,c),title:String(d.title??""),...d.description||d.summary?{description:String(d.description??d.summary)}:{},...Array.isArray(d.actors)&&d.actors.length?{actors:d.actors.map(String)}:{},...d.value?{value:String(d.value)}:{},risk:String(d.risk??""),status:e.trust.get(c)==="trusted"?"approved":"draft",sources:g,...I.length?{stale_sources:I}:{},..._.length?{depends_on:_}:{},...w?{provenance:{derived_from:`${String(w.props?.source_id??"")}#${String(w.props?.anchor??"")}`}}:{},scenarios:Y,acceptance_criteria:q})}}i.sort((c,d)=>c.id<d.id?-1:1);let u=e.byLabel(R.GAP).filter(({cid:c})=>V(e,c)&&e.trust.get(c)!=="archived").filter(({content:c})=>{if(!n||typeof c.uc=="string"&&o.has(e.tipOf(c.uc)))return!0;let d=typeof c.ref=="string"?e.resolve(c.ref):null;return d!==null&&o.has(e.tipOf(d.cid))}).map(({cid:c,content:d})=>({ref:C(e,c),kind:String(d.kind??""),...d.risk?{risk:String(d.risk)}:{},...d.question?{question:Pr(d.question)}:{}})).sort((c,d)=>c.ref<d.ref?-1:1);return{usecases:i,...u.length?{gaps:u}:{},...n?{scope:"run"}:{}}}function Pr(e){if(typeof e=="string")return e;let t=e?.header;return typeof t=="string"?t:""}function Cr(e,t){let r=e.tipOf(t);return e.nodeLabel.get(r)!==R.USECASE||!V(e,r)?null:C(e,r)}import{mkdirSync as Ar,renameSync as Or,rmSync as Dr,writeFileSync as $r}from"fs";import{join as Rt}from"path";var Fr=5e6;function Pt(e,t,r){let n=Rt(e,"coverage","sources"),i=new Map,o=!1;try{for(let a of r.usecases)for(let s of a.sources){if(i.has(s.id)){s.file=i.get(s.id);continue}if(!s.cid)continue;let u=ft(t,s.cid);if(u===null||u.byteLength>Fr)continue;o||(Ar(n,{recursive:!0}),o=!0);let c=Rt(n,s.id),d=`${c}.tmp-${process.pid}`;$r(d,u),Or(d,c);let p=`coverage/sources/${s.id}`;i.set(s.id,p),s.file=p}}catch{for(let a of r.usecases)for(let s of a.sources)delete s.file;if(o)try{Dr(n,{recursive:!0,force:!0})}catch{}}}import{existsSync as ze,readFileSync as Z,renameSync as Nr,writeFileSync as jr}from"fs";import{dirname as $t,isAbsolute as Ft,resolve as Lt}from"path";var Lr=new Set(["inline","testmd","testrun"]),Tr=new Set(["inferred","authored","runtime-derived"]),Ge=new Set(["passed","failed","broken","skipped"]);function Ct(e,t,r){let n=[];if(r.facts.length===0)return{record:null,errors:[{code:"EMPTY_EXECUTIONS",detail:"a run with no designed units attaches no facts \u2014 skip the call"}]};let i=re(e);if(t.latestHash!==i)return{record:null,errors:[{code:"STALE_BASIS",detail:`graph opened at ${String(t.latestHash)} but chain head is ${String(i)} \u2014 re-open and retry`}]};let o=[];for(let s of r.facts){let u=`executions[${s.ref}]`,c=t.resolve(s.ref),d=c?t.tipOf(c.cid):null;if(!c||!d||t.superseded.has(d)){n.push({code:"UNKNOWN_REF",detail:`${u}: '${s.ref}' is not a live committed node`});continue}if(t.nodeLabel.get(d)!==R.TEST){n.push({code:"ILLEGAL_TARGET",detail:`${u}: execution facts attach to tests \u2014 '${s.ref}' is a ${t.nodeLabel.get(d)}`});continue}if(!Lr.has(s.mode)){n.push({code:"BAD_MODE",detail:`${u}: mode '${s.mode}' not in inline|testmd|testrun`});continue}if(!Ge.has(s.verdict)){n.push({code:"BAD_VERDICT",detail:`${u}: verdict '${s.verdict}' not in ${[...Ge].join("|")}`});continue}if(!Tr.has(s.oracle_mode)){n.push({code:"BAD_ORACLE_MODE",detail:`${u}: oracle_mode '${s.oracle_mode}' not in inferred|authored|runtime-derived`});continue}if(typeof s.drift_flag!="boolean"||typeof s.stale_at_run!="boolean"){n.push({code:"MISSING_FIELD",detail:`${u}: drift_flag and stale_at_run are required booleans`});continue}if(!s.execution_id||!s.started_at||!s.definition_id_at_run){n.push({code:"MISSING_FIELD",detail:`${u}: execution_id, started_at and definition_id_at_run are required`});continue}let p=[];for(let l of s.per_ac??[]){let v=t.resolve(l.ac_ref),g=v?t.tipOf(v.cid):null;if(!v||!g||t.superseded.has(g)||t.nodeLabel.get(g)!==R.AC){n.push({code:"UNKNOWN_REF",detail:`${u}.per_ac: '${l.ac_ref}' is not a live AC`});continue}if(!Ge.has(l.verdict)){n.push({code:"BAD_VERDICT",detail:`${u}.per_ac['${l.ac_ref}']: verdict '${l.verdict}'`});continue}p.push({ac_ref:t.nameOf.get(g)??g,verdict:l.verdict})}o.push({about:d,definition_id_at_run:s.definition_id_at_run,verdict:s.verdict,...p.length?{per_ac:p}:{},drift_flag:s.drift_flag,oracle_mode:s.oracle_mode,stale_at_run:s.stale_at_run,...s.unresolved_acs?.length?{unresolved_acs:s.unresolved_acs}:{},execution_id:s.execution_id,...s.evidence_id?{evidence_id:s.evidence_id}:{},...s.duration_ms!==void 0?{duration_ms:s.duration_ms}:{},started_at:s.started_at,mode:s.mode,local:s.local,...s.via_parent?{via_parent:s.via_parent}:{}})}if(n.length>0)return{record:null,errors:n};let a=ne(e,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[],executions:o,source_head_moves:{}});return ie(e),{record:a.record,errors:null}}function Tt(e){let t={failed:3,broken:2,skipped:1,passed:0},r=new Map;for(let n of e)for(let i of n.verifies??[]){let o=r.get(i);(o===void 0||(t[n.status]??0)>(t[o]??0))&&r.set(i,n.status)}return[...r.entries()].map(([n,i])=>({ref:n,verdict:i}))}function Nt(e){let t=[],r=oe(e.cwd);if(!ze(r))return{synced:0,superseded:0,skipped:"no-context",warnings:t};let n=e.by??{kind:"ai",id:"exec-sync"},i=O(r),o=[],a=0,s=new Set;for(let c of e.members){let d=Ft(c.path)?c.path:Lt(e.cwd,c.path);for(let p of Mr(d)){if(s.has(p.path))continue;s.add(p.path);let l=p.path===d?void 0:U(Z(d,"utf8"))?.id,v=Z(p.path,"utf8"),g=U(v);if(!g?.id)continue;let w=i.resolve(g.id),E=w?i.tipOf(w.cid):null;if(!w||!E||i.superseded.has(E)){t.push(`sync: ${g.id} does not resolve to a live test \u2014 skipped (foreign store?)`);continue}let I=N(J(v,te($t(p.path),i))),_=String(i.getNode(E)?.content.test_md_blob??""),A=N(J(_,dt(i))),B=!1,Y=E;if(I===A)g.base!==A&&Dt(p.path,v,A,t);else if(g.base===A){let m=Vr(r,i,E,v,I,n);m.error?(t.push(`sync: could not supersede ${g.id}: ${m.error}`),B=!0):(a++,Y=m.newCid,B=m.oracleTier,Dt(p.path,Z(p.path,"utf8"),I,t),i=O(r))}else B=!0,t.push(g.base?`sync: ${g.id} was edited from an older version \u2014 graph kept; reconcile via a redesign or maintain`:`sync: ${g.id} carries no base pin (hand-copied file?) \u2014 fact attached with drift flag`);let L=i.getNode(Y)?.content.check,q=p.path===d?c.acs??[]:[],f=q.filter(m=>At(i,m.ref)),y=q.filter(m=>!At(i,m.ref)).map(m=>m.ref);o.push({ref:g.id,definition_id_at_run:I,verdict:c.verdict,...f.length?{per_ac:f.map(m=>({ac_ref:m.ref,verdict:m.verdict}))}:{},drift_flag:B,oracle_mode:L?.expected_mode??(at(L?.operand)?"runtime-derived":"inferred"),stale_at_run:i.stale(Y)!=="fresh",...y.length?{unresolved_acs:y}:{},execution_id:c.executionId,...c.evidenceId?{evidence_id:c.evidenceId}:{},...c.durationMs!==void 0?{duration_ms:c.durationMs}:{},started_at:c.startedAt,mode:c.mode,local:c.local,...l?{via_parent:l}:{}})}}if(o.length===0)return{synced:0,superseded:a,warnings:t};let u=Ct(r,O(r),{facts:o,by:n});return u.errors?(t.push(...u.errors.map(c=>`sync facts: ${c.code}: ${c.detail}`)),{synced:0,superseded:a,warnings:t}):{synced:o.length,superseded:a,warnings:t}}function Mr(e){let t=[],r=new Set,n=i=>{if(r.has(i)||!ze(i))return;r.add(i);let o=Z(i,"utf8");for(let a of o.split(`
|
|
5
|
-
`)){let s=/^@import\s+(\S+)\s*$/.exec(a.trim());if(!s)continue;let u=Ft(s[1])?s[1]:Lt($t(i),s[1]);ze(u)&&U(Z(u,"utf8"))?.id&&n(u)}t.push({path:i})};return n(e),t}function At(e,t){let r=e.resolve(t),n=r?e.tipOf(r.cid):null;return!!(r&&n&&!e.superseded.has(n)&&e.nodeLabel.get(n)==="ac")}function Vr(e,t,r,n,i,o){let a=t.getNode(r);if(!a)return{oracleTier:!1,error:"tip unreadable"};let s=ut(n),u=String(a.content.test_md_blob??""),c=/^#\s+(.+?)\s*$/m.exec(s)?.[1]??String(a.content.title??""),d={...a.content,test_md_blob:s,definitionId:i,title:c},p=lt("test",d);if(p.length>0)return{oracleTier:!1,error:p.map(w=>w.detail).join("; ")};let l=pt("test",d);if(l===r)return{newCid:r,oracleTier:!1};let v=Ot(u)!==Ot(s),g=re(e);if(t.latestHash!==g)return{oracleTier:v,error:`store advanced under the sync (basis ${String(t.latestHash)} vs head ${String(g)}) \u2014 re-run to retry`};try{ne(e,{ts:new Date().toISOString(),proposal_id:null,nodes:[{cid:l,label:"test",content:d}],edges:[],review:[{id:l,kind:"review-item",resolution:"edited",edit:null,reason:"edited on disk (run sync)",by:o}],supersessions:[{kind:"node",old:r,new:l,reason:"edited on disk (run sync)",by:o}],source_head_moves:{}},{expectPrev:g})}catch(w){return{oracleTier:v,error:w instanceof Error?w.message:String(w)}}return ie(e),{newCid:l,oracleTier:v}}var Br=/\s@verifies\s+(ac-[\w.:\/-]+(?:\s*,\s*ac-[\w.:\/-]+)*)\s*$/;function Ot(e){let t=[],r=e.split(`
|
|
6
|
-
`),n=!1;for(let i of r){if(/^##\s/.test(i)){n=/\bassert\b/i.test(i);let o=Br.exec(i);o&&t.push(`v:${o[1].trim()}`);continue}n&&i.trim()!==""&&t.push(i.trim())}return t.join(`
|
|
7
|
-
`)}function Dt(e,t,r,n){try{let i=t.split(`
|
|
8
|
-
`),o=-1;if(i[0]?.trim()==="---"){for(let u=1;u<i.length;u++)if(i[u].trim()==="---"){o=u;break}}if(o<0)return;let a=!1;for(let u=1;u<o;u++){if(/^\s+base:\s*sha256:[0-9a-f]+\s*$/.test(i[u])){i[u]=i[u].replace(/sha256:[0-9a-f]+/,r),a=!0;break}if(/^assurance:\s*$/.test(i[u])&&!i.slice(u,Math.min(u+3,o)).some(c=>/^\s+base:/.test(c))){i.splice(u+2,0,` base: ${r}`),a=!0;break}}if(!a)return;let s=`${e}.tmp-sync`;jr(s,i.join(`
|
|
9
|
-
`)),Nr(s,e)}catch(i){n.push(`sync: pin refresh failed for ${e} (${i instanceof Error?i.message:String(i)}) \u2014 next run self-heals`)}}var Wr={passed:"passed",failed:"failed",broken:"blocked",skipped:"not-run"},jt=(e,t)=>{try{if(!Ye(t))return{status:"skipped",reason:"no context store at the project root"};let r=z(e,"tests");if(!Ye(r))return{status:"skipped",reason:"pack has no tests/"};let n=new Map;for(let s of Hr(r)){let u=z(r,s,"result.yaml");if(!Ye(u)||!Yr(z(r,s)).isDirectory())continue;let c=T(Gr(u,"utf8"));if(!c?.definition_id&&!c?.assurance_id)continue;let d=Tt(c.steps??[]),p={testShortId:String(c.test??s),execution:Wr[String(c.status)]??"not-run",...d.length?{acs:d}:{}};c.assurance_id&&n.set(`id:${c.assurance_id}`,p),c.definition_id&&n.set(`def:${c.definition_id}`,p)}let i=It(O(t),n,{scope:"run"}),o=Et(i);Pt(e,t,i);let a=S({...i,rollup:o},{lineWidth:-1});return Ur(z(e,"coverage"),{recursive:!0}),Kr(z(e,"coverage","usecases.yaml"),a),{status:"written"}}catch(r){try{zr(z(e,"coverage","sources"),{recursive:!0,force:!0})}catch{}return{status:"skipped",reason:r instanceof Error?r.message:String(r)}}};async function Xr(e){try{let t=new X({origin:"inline",runKind:"author",pid:e.pid,title:e.title,started:new Date().toISOString(),producerVersion:e.producerVersion,surfaces:e.surfaces,objectiveOrName:e.objectiveOrName,sessionId:e.sessionId,cwd:e.cwd,packRootDir:e.packRootDir}),r=await t.start();return{session:t,...r,packDir:t.pack,spawns:[],startedAtMs:Date.now(),cwd:e.cwd}}catch(t){return console.warn("evidence: inline pack creation failed",t),null}}function Zr(e,t,r){if(!e)return;e.session.noteSpawn(t),t.resolution&&(e.resolution=t.resolution);let n=(r?.per_flow_metadata??[]).map(i=>({resultCode:i?.result_code!=null?Number(i.result_code):null}));e.spawns.push({resultCode:r?.result_code!=null?Number(r.result_code):null,...n.length?{perFlow:n}:{}})}function Qr(e){if(e)return{packTestDir:e.packTestDir,ordinalOffset:e.session.nextOrdinalOffset()}}async function qr(e,t){if(!e)return null;if(e.finalized)return e.finalized;let r=(n,i,o)=>t.log?t.log("warn",n,i,o):console.warn(`evidence: ${i}`,o??"");try{if(t.recordedTestPath)try{await e.session.writeDefinition(await Jr.readFile(t.recordedTestPath,"utf8"))}catch(a){r("EVIDENCE_DEFINITION_FAILED","could not attach synthesized test.md",{error:String(a)})}let n=t.cdpBrowserCapture?await t.cdpBrowserCapture():void 0,i=await e.session.writeResult({steps:e.session.steps,spawns:e.spawns.length?e.spawns:[{resultCode:null}],externalIdInput:{...t.externalIdInput,execution_id:e.executionId},runnerEnv:Be({cdpBrowser:n,resolution:e.resolution}),intentEnv:{model:t.model,platform:"Desktop",platform_type:"web"},durationMs:t.durationMs??Date.now()-e.startedAtMs,log:t.log});try{if(t.recordedTestPath){let a=Nt({cwd:t.cwd??e.cwd??process.cwd(),members:[{path:t.recordedTestPath,verdict:i,executionId:e.executionId,startedAt:new Date(e.startedAtMs).toISOString(),mode:"inline",local:t.local??!1}]});for(let s of a.warnings)r("EXEC_SYNC",s)}}catch(a){r("EXEC_SYNC","exec-sync failed",{error:String(a)})}try{let a=(t.coverageWriter??jt)(e.packDir,oe(t.cwd??e.cwd??process.cwd()));a.status==="skipped"&&r("EVIDENCE_COVERAGE_SKIPPED",`coverage/usecases.yaml not written: ${a.reason}`)}catch(a){r("EVIDENCE_COVERAGE_SKIPPED","coverage writer threw",{error:String(a)})}let o=await Ve({executionId:e.executionId,testId:e.testId,saved:t.saved,runKind:"author",verdict:i,cwd:t.cwd??e.cwd,packDir:e.packDir,tuiLogPath:t.tuiLogPath,log:t.log,surface:"inline"});return e.finalized=o,t.log?.("info","EVIDENCE_SEALED","Inline pack sealed",{execution_id:e.executionId,verdict:i,valid:o.valid,pack:e.packDir,store_copy:o.storePath??null}),o}catch(n){return r("EVIDENCE_SEAL_FAILED","inline pack finalize failed",{error:String(n)}),null}}import{statSync as sn,openSync as cn,readSync as an,closeSync as dn}from"fs";import{basename as un,resolve as ln}from"path";import{createServer as en}from"http";import{createReadStream as tn,promises as rn}from"fs";import{randomBytes as nn}from"crypto";var ae="127.0.0.1";function Mt(e,t){if(!e)return null;let r=/^bytes=(\d*)-(\d*)$/.exec(e.trim());if(!r)return null;let[,n,i]=r;if(n===""&&i==="")return null;if(n===""){let s=Number(i);return s===0||t===0?"unsatisfiable":{start:Math.max(0,t-s),end:t-1}}let o=Number(n);if(o>=t)return"unsatisfiable";let a=i===""?t-1:Math.min(Number(i),t-1);return a<o?null:{start:o,end:a}}async function Ke(e){let t=nn(16).toString("hex"),r=en((i,o)=>{on(i,o,e,t).catch(()=>o.destroy())});await new Promise((i,o)=>{r.once("error",o),r.listen(e.port??0,ae,()=>{r.removeListener("error",o),i()})});let n=r.address().port;return{port:n,urlFor:i=>`http://${ae}:${n}/${t}/${encodeURIComponent(i)}`,close:()=>new Promise(i=>{r.close(()=>i()),r.closeAllConnections()})}}async function on(e,t,r,n){let i=e.url??"/",o=_=>{try{r.log?.("warn","EVIDENCE_SERVE_DENIED",{reason:_,path:i})}catch{}};if(e.headers.host!==`${ae}:${e.socket.localPort}`){o("host_mismatch"),t.writeHead(403).end();return}let a=e.headers.origin;if(a!==void 0&&!r.allowedOrigins.includes(a)){o("origin_denied"),t.writeHead(403).end();return}let s=a?{"Access-Control-Allow-Origin":a,Vary:"Origin","Access-Control-Expose-Headers":"Content-Range, Content-Length"}:{};if(e.method==="OPTIONS"){let _={...s,"Access-Control-Allow-Methods":"GET, HEAD, OPTIONS","Access-Control-Allow-Headers":"range","Access-Control-Max-Age":"86400"};e.headers["access-control-request-private-network"]==="true"&&(_["Access-Control-Allow-Private-Network"]="true"),t.writeHead(204,_).end();return}if(e.method!=="GET"&&e.method!=="HEAD"){t.writeHead(405,s).end();return}let u;try{let _=new URL(e.url??"/",`http://${ae}`).pathname.split("/");if(_.length!==3||_[1]!==n){o("bad_token"),t.writeHead(404,s).end();return}u=decodeURIComponent(_[2])}catch{o("not_found"),t.writeHead(404,s).end();return}let c=r.packs.get(u);if(!c){o("not_found"),t.writeHead(404,s).end();return}let d;try{let _=await rn.stat(c);if(!_.isFile())throw new Error("not a file");d=_.size}catch{o("not_found"),t.writeHead(404,s).end();return}let p={...s,"Accept-Ranges":"bytes","Content-Type":"application/zip","Cache-Control":"no-store"};if(e.method==="HEAD"){t.writeHead(200,{...p,"Content-Length":String(d)}).end();return}let l=Mt(e.headers.range,d);if(l==="unsatisfiable"){o("unsatisfiable"),t.writeHead(416,{...s,"Content-Range":`bytes */${d}`}).end();return}let[v,g,w]=l===null?[0,d-1,200]:[l.start,l.end,206],E={...p,"Content-Length":String(g-v+1)};if(w===206&&(E["Content-Range"]=`bytes ${v}-${g}/${d}`),t.writeHead(w,E),d===0){t.end();return}let I=tn(c,{start:v,end:g});I.on("error",()=>t.destroy()),t.on("close",()=>I.destroy()),I.pipe(t)}function Q(e,t){return(t??ot(e).evidenceViewerUrl).replace(/\/+$/,"")}function We(e,t){return`${t}/?pack=${encodeURIComponent(e)}`}function Je(e){return`evidence: view locally with \`kane-cli evidence serve ${e}\``}async function pn(e,t,r={}){let n=r.out??(d=>process.stdout.write(d+`
|
|
10
|
-
`)),i=d=>(n(`error: ${d}`),2);if(t.env!=="prod"&&t.env!=="stage")return i(`invalid --env: ${String(t.env)}`);if(t.port!==void 0&&(!Number.isInteger(t.port)||t.port<1||t.port>65535))return i("invalid --port: expected an integer 1-65535");let o;try{o=Q(t.env,t.viewerUrl),new URL(o)}catch{return i(`invalid --viewer-url: ${t.viewerUrl}`)}if(e.length===0)return i("no pack paths given");let a=new Map;for(let d of e){let p=ln(d),l;try{l=sn(p)}catch{return i(`${d}: not found`)}if(l.isDirectory())return i(`${d}: is a directory \u2014 packs must be sealed .evidence files (run the execution to completion, or seal it, first)`);if(!l.isFile())return i(`${d}: not a regular file`);let v=Buffer.alloc(2),g=cn(p,"r");try{an(g,v,0,2,0)}finally{dn(g)}if(v.toString("latin1")!=="PK")return i(`${d}: not a sealed evidence pack (zip magic missing)`);let w=un(p);if(a.has(w))return i(`duplicate pack basename: ${w} (URL names collide \u2014 rename one)`);a.set(w,p)}let s=r.log??((d,p,l)=>process.stderr.write(`warn: ${p} reason=${l.reason} path=${l.path}
|
|
11
|
-
`)),u;try{u=await Ke({packs:a,allowedOrigins:[new URL(o).origin],port:t.port,log:s})}catch(d){return i(`could not bind 127.0.0.1${t.port?`:${t.port}`:""} \u2014 ${d.message}`)}n(`serving ${a.size} pack${a.size===1?"":"s"} on http://127.0.0.1:${u.port}`);for(let d of a.keys()){let p=u.urlFor(d);n(d),n(` pack ${p}`),n(` viewer ${We(p,o)}`)}return n("press Ctrl-C to stop"),await(r.hold??fn)(),await u.close(),0}function fn(){return new Promise(e=>{let t=process.listeners("SIGINT");process.removeAllListeners("SIGINT"),process.once("SIGINT",()=>{for(let r of t)process.on("SIGINT",r);e()})})}import{promises as de}from"fs";import{tmpdir as hn}from"os";import{join as Ut,resolve as Ze}from"path";var mn=["error","prefer_first","prefer_latest","discard"],gn=["external_id.commit_id","external_id.test_id"];function Vt(e){let t=e.replace(/-/g,"_");return mn.includes(t)?t:null}function Bt(e){let t=e==="discard"?{on_collision:"discard"}:{on_collision:"error",identity:{keys:[...gn],on_same:e??"nest",on_different:e?"error":"split"}};return S({packs:{require_status:"finalized",require_valid:"L1",on_ineligible:"abort"},tests:t,rules:[{file:"run.yaml",key:"run_id",must:"different",on_violation:"skip"},{file:"result.yaml",key:"external_id.project_id",must:"same",on_violation:"error"},{file:"result.yaml",key:"external_id.org_id",must:"same",on_violation:"error"}]},{lineWidth:-1})}async function Xe(e){try{if(!e.isTTY){e.log(Je(e.packPath));return}let t=Q(e.env);await(e.renderPrompt??vn)(e.packPath,t)}catch(t){try{e.log(`evidence view failed \u2014 ${t.message}`)}catch{}}}async function vn(e,t){let r=await import("./react-QWOAB3TB.js"),{render:n}=await import("./build-JIKYOZUH.js"),{EvidenceViewOffer:i}=await import("./EvidenceViewOffer-KQKPTMXA.js");await new Promise(o=>{let a=n(r.default.createElement(i,{packPath:e,viewerBase:t,onDone:()=>{a.unmount(),o()}}),{stdout:process.stderr,exitOnCtrlC:!1})})}async function wn(e,t,r=process.cwd(),n={}){let i=n.out??(l=>process.stdout.write(l+`
|
|
12
|
-
`)),o=n.err??(l=>process.stderr.write(l+`
|
|
13
|
-
`)),a=l=>(o(`evidence merge: ${l}`),2);if(!t.runId)return a("--run-id is required (merged identity is the caller's fact)");if(t.rules&&t.onCollision)return a("--rules and --on-collision are mutually exclusive");let s;if(t.onCollision!==void 0){let l=Vt(t.onCollision);if(!l)return a(`invalid --on-collision: ${t.onCollision} (expected error | prefer-first | prefer-latest | discard)`);s=l}let u=[];for(let l of e){let v=await yn(l,r);if(!v)return a(`no pack found for "${l}"`);u.push(v)}let c=t.out?Ze(r,t.out):b(t.runId,r),d=null,p;t.rules?p=Ze(r,t.rules):(d=await de.mkdtemp(Ut(hn(),"kane-merge-rules-")),p=Ut(d,"merge-rules.yaml"),await de.writeFile(p,Bt(s)));try{let l=await(n.mergeFn??st)(u,{runId:t.runId,out:c,rulesPath:p,title:t.title,finalize:t.finalize});return t.json?i(JSON.stringify(l)):_n(i,l),l.output.finalized&&!t.json&&await(n.offer??Xe)({packPath:c,env:t.env,isTTY:n.isTTY??(!!process.stdin.isTTY&&!!process.stderr.isTTY),log:o}),0}catch(l){let v=l instanceof Error?l.message:String(l);return l?.code==="ABORT"?(o(`evidence merge: aborted \u2014 ${v}`),1):a(v)}finally{d&&await de.rm(d,{recursive:!0,force:!0}).catch(()=>{})}}async function yn(e,t){let r=Ze(t,e);if(await Ht(r))return r;let n=b(e,t);return await Ht(n)?n:null}async function Ht(e){try{return await de.stat(e),!0}catch{return!1}}function _n(e,t){let{packs:r,tests:n,output:i}=t;e(`evidence: merged ${n.merged} tests from ${r.eligible.length} packs -> ${i.path} (${i.finalized?"sealed":"live"})`);for(let o of r.skipped)e(` skipped ${o.runId}: ${o.rule} \u2014 ${o.reason}`);for(let o of n.collisions){let a;o.action==="nest"?a=`nested into ${o.folder}, latest ${o.winner}`:o.action==="split"?a=`split into ${o.folder}`:a=`winner ${o.winner}`,e(` collision ${o.test}: ${a} (${o.rule})`)}for(let o of n.discarded)e(` discarded ${o}`)}import{copyFileSync as xn,existsSync as Qe,mkdirSync as Sn}from"fs";import{join as Gt}from"path";function bn(e,t,r){try{let n=Gt(e,"auteur","execution.json");if(Qe(n))return!0;for(let i of t)if(!(!i||!Qe(i)))return Sn(Gt(e,"auteur"),{recursive:!0}),xn(i,n),!0}catch(n){try{r?.("debug","EVIDENCE_BLOB_COPY_FAILED","auteur execution blob copy failed",{operation:"ensureAuteurExecution",source:t.find(i=>i&&Qe(i))??null,error:n instanceof Error?n.message:String(n)})}catch{}}return!1}import{readFileSync as kn}from"fs";import{join as En}from"path";function et(e){let t=[],r=!0,n=o=>{if(o===null||typeof o!="object")return;let a=o;if(Array.isArray(a.operations))for(let s of a.operations){let u=s?.operation_id;typeof u=="string"&&u&&t.push(u)}if(Array.isArray(a.children)){a.content_type!=="generative_block"&&(r=!1);for(let s of a.children)n(s)}if(Array.isArray(a.branches)){r=!1;for(let s of a.branches){let u=s?.children;if(Array.isArray(u))for(let c of u)n(c)}}},i=e?.instructions;if(Array.isArray(i))for(let o of i)n(o);return{ids:t,linear:r}}function In(e){return et(e).ids}function qe(e,t){let r=new Set(t.map(s=>s.action_id).filter(Boolean)),n=-1;for(let s of r){let u=e.indexOf(s);u>n&&(n=u)}let i=t.reduce((s,u)=>Math.max(s,u.ordinal),0),o=new Set,a=[];for(let s of e.slice(n+1))r.has(s)||o.has(s)||(o.add(s),a.push({id:s,ordinal:++i,status:"skipped",action_id:s}));return a}function zt(e,t){let r=new Set(t),n=e.filter(o=>o.action_id);if(n.some(o=>r.has(o.action_id))||n.length>t.length)return null;let i=0;return e.map(o=>o.action_id?{...o,action_id:t[i++]}:o)}function Rn(e,t){if(e.length>t.length)return!1;for(let r=0;r<e.length;r++)if(t[r]!==e[r].action_id)return!1;return!0}function Pn(e,t,r,n=!0){if(t.length===0)return{steps:e,tail:[]};let i=(r&&n?zt(e,t):null)??e,o=i.filter(s=>s.action_id),a=new Set(t);return o.length>0&&o.every(s=>a.has(s.action_id))?{steps:i,tail:qe(t,i)}:o.length>0&&!Rn(o,t)?{steps:i,tail:[],unjoined:!0}:{steps:i,tail:qe(t,i)}}function Yt(e){try{let t=kn(En(e,"auteur","execution.json"),"utf8");return et(JSON.parse(t))}catch{return{ids:[],linear:!0}}}function Cn(e){return Yt(e).ids}export{M as a,we as b,ye as c,_e as d,xe as e,Se as f,be as g,ke as h,Ee as i,Zt as j,Ie as k,Re as l,Qt as m,qt as n,Pe as o,Oe as p,De as q,$e as r,Fe as s,Le as t,er as u,tr as v,Te as w,rr as x,Ne as y,je as z,Me as A,yt as B,Ve as C,Be as D,St as E,lr as F,X as G,hr as H,Tt as I,Nt as J,jt as K,Xr as L,Zr as M,Qr as N,qr as O,Mt as P,Ke as Q,Q as R,We as S,Je as T,pn as U,Xe as V,wn as W,bn as X,et as Y,In as Z,qe as _,zt as $,Pn as aa,Yt as ba,Cn as ca};
|
package/dist/chunk-4R2HOA7J.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{f as Be}from"./chunk-K5JGCJ2K.js";import{a as fe,e as Me,g as Te,h as Ge}from"./chunk-KNCHEM6A.js";import{b as Ne,f as je,g as Ue,h as He}from"./chunk-FXPPQL4D.js";import{a as Oe}from"./chunk-RE3BZVGE.js";import{a as Pe,b as Ae}from"./chunk-JFAFKHDX.js";import{e as z,f as re}from"./chunk-WIA7TPK3.js";import{c as Ee}from"./chunk-6GTOYTCQ.js";import{b as Ie}from"./chunk-YKTYVJBN.js";import{a as Fe}from"./chunk-6AYUSR7X.js";import{a as ee,d as te}from"./chunk-2PQXEEVY.js";import{a as R}from"./chunk-MCQXRJGH.js";import{b as Re}from"./chunk-ZG2V2ODK.js";import{d as U}from"./chunk-5YPBPZUR.js";import{appendFileSync as rt,mkdirSync as he,writeFileSync as pe}from"fs";import{extname as st,join as M}from"path";var E=class extends Error{code;constructor(e,c){super(`${e}: ${c}`),this.name="ProposalAdapterError",this.code=e}};function qe(s){return s.version===2}function Le(s,e){if(s.read_basis.length!==1)throw new E("READ_BASIS_COUNT",`read_basis must have exactly 1 element, got ${s.read_basis.length}`);let c=s.read_basis[0],x=s.use_cases.map(o=>{if(o.cite.length!==1)throw new E("CITE_COUNT",`${o.temp_ref}: cite must have exactly 1 element, got ${o.cite.length}`);let m=o.cite[0];if(m.source_id!==c.source_id)throw new E("SOURCE_MISMATCH",`${o.temp_ref}: cite source ${m.source_id} != read_basis source ${c.source_id} (single-source)`);return{temp_ref:o.temp_ref,title:o.title,...o.description!==void 0?{description:o.description}:{},...o.summary!==void 0?{summary:o.summary}:{},...o.actors!==void 0?{actors:o.actors}:{},...o.value!==void 0?{value:o.value}:{},risk:o.risk,cite:{anchor:m.anchor,quote:m.quote},...o.criteria!=null&&o.criteria.length>0?{criteria:o.criteria.map((u,h)=>{if(u.cite.source_id!==c.source_id)throw new E("SOURCE_MISMATCH",`${o.temp_ref}.criteria[${h}]: cite source ${u.cite.source_id} != read_basis source ${c.source_id} (single-source)`);return{text:u.text,cite:{anchor:u.cite.anchor,quote:u.cite.quote}}})}:{},depends_on_hint:o.depends_on_hint,matches_existing:o.matches_existing,...o.conflicts_with!=null?{conflicts_with:o.conflicts_with}:{},...o.changed?{changed:!0}:{},...o.updated!=null?{updated:{...o.updated.title!=null?{title:o.updated.title}:{},...o.updated.description!=null?{description:o.updated.description}:{},...o.updated.summary!=null?{summary:o.updated.summary}:{},...o.updated.actors!=null?{actors:o.updated.actors}:{},...o.updated.value!=null?{value:o.updated.value}:{},...o.updated.risk!=null?{risk:o.updated.risk}:{},...o.updated.criteria!=null?{criteria:o.updated.criteria.map((u,h)=>{if(u.cite.source_id!==c.source_id)throw new E("SOURCE_MISMATCH",`${o.temp_ref}.updated.criteria[${h}]: cite source ${u.cite.source_id} != read_basis source ${c.source_id} (single-source)`);return{text:u.text,cite:{anchor:u.cite.anchor,quote:u.cite.quote}}})}:{}}}:{},...o.change_note!=null?{change_note:o.change_note}:{}}});return{version:1,read_basis:e,source:{source_id:c.source_id,source_cid:c.source_cid},use_cases:x}}function We(s){let{contextDir:e,graph:c}=s,x=s.maxDigestBytes??4096,o={},m=[];for(let[d,g]of c.heads){if(o[d]=g,typeof g!="string")continue;let _=c.mediaOf(g),w=c.getNode(g)?.content?.blob;if(typeof w=="string")if(_.format==="image")m.push({source_id:d,cid:g,format:"image",blobRef:{path:ee(e,w),cid:w}});else{let n=te(e,w)?.toString("utf8")??"";m.push({source_id:d,cid:g,format:_.format,text:n})}}m.sort((d,g)=>d.source_id<g.source_id?-1:1);let u=[];for(let d of c.byLabel(U.STYLENOTE).sort((g,_)=>g.cid<_.cid?-1:1))c.superseded.has(d.cid)||u.push(`\u2022 ${String(d.content.statement)} [${String(d.content.learned_from_kind)}]`);let h="";for(let d of u){if(Buffer.byteLength(h+d+`
|
|
3
|
-
`,"utf8")>x)break;h+=d+`
|
|
4
|
-
`}return{read_basis:o,sources:m,styleNoteDigest:h}}function ze(s,e){let c=We({contextDir:s,graph:e}).styleNoteDigest;return c.length>0?c:void 0}function ot(s){return s.length>8&&s[0]===137&&s[1]===80&&s[2]===78&&s[3]===71?"image/png":s.length>3&&s[0]===255&&s[1]===216&&s[2]===255?"image/jpeg":s.length>12&&s.toString("ascii",0,4)==="RIFF"&&s.toString("ascii",8,12)==="WEBP"?"image/webp":null}function it(s){return s.toString("utf8").replace(/\n$/,"").split(`
|
|
5
|
-
`).map((c,x)=>`${String(x+1).padStart(4,"0")}| ${c}`).join(`
|
|
6
|
-
`)}function Ve(s){return s.toISOString().replace(/[-:]/g,"").slice(0,15)}function nt(s){return s.startsWith("su-conv-")?`conv-${Re(Buffer.from(s,"utf8")).slice(0,8)}`:s}function Ke(s){return s.source_id.startsWith("su-conv-")?"the conversation":s.source_id}function at(s,e,c){return`reading ${Ke(s)}${c>1?` (source ${e} of ${c})`:""}`}function V(s){return s.toLowerCase().trim().replace(/\s+/g," ")}function Je(s,e){let c=new Map,x=new Map,o=new Map;for(let{cid:u,content:h}of e.byLabel(U.USECASE)){if(e.superseded.has(u))continue;(e.trust.get(u)==="archived"?o:x).set(V(String(h.title??"")),u)}let m=u=>e.trust.get(u)==="archived"?{cid:u,archived:!0,reason:e.archivedReason.get(u)}:{cid:u};for(let u of s.use_cases){if(u.matches_existing){let g=u.matches_existing.cid;if(e.superseded.has(g)){let _=e.tipOf(g);g=e.superseded.has(_)?null:_}if(g!==null){c.set(u.temp_ref,m(g));continue}}let h=x.get(V(u.title));if(h){c.set(u.temp_ref,{cid:h});continue}let d=o.get(V(u.title));d&&c.set(u.temp_ref,m(d))}return c}var Xe=/^(\S+)\.criteria\[(\d+)\]/;function ct(s,e,c){if(e.length===0||!e.every(o=>Xe.test(o.detail)))return!1;let x=new Map;for(let o of e){let m=Xe.exec(o.detail),u=x.get(m[1])??new Set;u.add(Number(m[2])),x.set(m[1],u)}for(let o of s.use_cases){let m=x.get(o.temp_ref);m?.size&&(o.criteria=(o.criteria??[]).filter((u,h)=>!m.has(h)),c(`${o.temp_ref}: dropped ${m.size} criteria with unverifiable cites \u2014 committed without them (criteria are hints, not oracles)`))}return!0}async function Ye(s,e,c,x,o=()=>{},m){let u=(h,d)=>o(h,d,s.session_id);return Te(s,e,c,x,o,{async onProposalEvent(h){let d=h,g=null,_=null;if(qe(d))try{g=Le(d,s.read_basis),u("adapter",{ok:!0,use_cases:g.use_cases.length})}catch(w){_=w instanceof E?w.message:String(w),u("adapter",{ok:!1,error:_})}else g=d;return g&&g.use_cases.length===0&&e.out("warning: the agent proposed ZERO use-cases for this source"),g&&m&&await m(g),{proposal:g,error:_}}})}var ut=new Set(["agent","ci","override"]);async function Ut(s,e){let c=s.mode??"interactive";if(c==="interactive"){if(!e.isTTY)return e.out("extract: --mode interactive needs a TTY (use --mode agent|ci|override headless)"),2}else if(!ut.has(c))return e.out(`extract: unknown mode "${c}" \u2014 interactive | agent | ci | override`),2;let x=Ve(e.now?.()??new Date),o=M(e.contextDir,"logs");he(o,{recursive:!0});let m=M(o,`extract-${x}.log`),u=`run-${x}-${Math.random().toString(36).slice(2,8)}`,h=t=>t==="error"||t==="failed_proposal"?"error":t==="repair_respawn"?"warn":"info",d=(t,a,l)=>{try{rt(m,JSON.stringify({ts:new Date().toISOString(),level:h(t),run_id:u,...l?{session_id:l}:{},kind:t,data:a})+`
|
|
7
|
-
`)}catch{}};e.out(`trace: ${fe(m)}`),e.emit?.({type:"run_start",mode:c,trace:m});let g=Ie();if(g&&e.out(g),e.preflightTurn){let t=await e.preflightTurn();if(d("preflight",t),!t.ok)return e.out(t.message??"error: turn-endpoint preflight failed"),e.emit?.({type:"error",message:t.message??"error: turn-endpoint preflight failed",code:"PREFLIGHT"}),2}let _=R(e.contextDir),w=ze(e.contextDir,_);if(s.source){if(s.resume){let a="error: --source cannot be combined with --resume (the resumed session already has its scope)";return e.out(a),e.emit?.({type:"error",message:a,code:"SOURCE_WITH_RESUME"}),2}let t=_.heads.get(s.source);if(typeof t!="string"){let a=t===null?`error: --source ${s.source} was ingested but is retired \u2014 re-ingest it to extract again`:`error: --source ${s.source} is not an ingested source (kane-cli context list shows them)`;return e.out(a),e.emit?.({type:"error",message:a,code:"SOURCE_UNKNOWN"}),2}}let n=null;if(s.resume){try{n=He(e.contextDir,s.resume,_)}catch(l){return e.out(`error: ${l instanceof Error?l.message:String(l)}`),e.emit?.({type:"error",message:`error: ${l instanceof Error?l.message:String(l)}`}),1}let t=n.handle.state.change_basis;if(t&&(_.heads.get(t.source_id)??null)!==t.new_head){let l=`error: ${t.source_id} moved while this reconcile extraction was paused \u2014 its recorded change context no longer matches; re-run kane-cli maintain reconcile against the current file (session ${s.resume} is defunct and can be ignored)`;return e.out(l),e.emit?.({type:"error",message:l,code:"CHANGE_BASIS_MOVED"}),n.handle.release(),2}n.staleBasis.length>0&&e.out(`note: changed since the pause: ${n.staleBasis.join(", ")} \u2014 re-presented items may be stale`);let a=n.handle.state.held_receipts??[];if(a.length>0)if(e.chat?.holdReceipt)for(let l of a)e.chat.holdReceipt(l);else e={...e,initialMessage:[a.join(`
|
|
8
|
-
|
|
9
|
-
`),e.initialMessage].filter(Boolean).join(`
|
|
10
|
-
|
|
11
|
-
`)};n.handle.state.assumed.length>0&&e.out(`note: ${n.handle.state.assumed.length} default(s) were assumed while you were away \u2014 kane-cli context sessions show ${s.resume} lists them`)}let _e=_.extractedSourceCids,J=!!(s.force||n?.handle.state.force),v=[],P=[];for(let[t,a]of _.heads.entries())if(a!=null&&!(s.source&&t!==s.source)){if(!s.source&&!n&&t.startsWith("su-conv-")){e.out(`skipped: ${t} \u2014 conversation source (extract it explicitly with --source ${t})`),P.push({source_id:t,reason:"conversation"});continue}if(n){let l=t in n.handle.state.read_basis,I=n.handle.state.corpus_cursor.remaining.includes(t);if(!l&&!I)continue;if(I&&!J&&_e.has(a)){e.out(`cached: ${t} @ ${a.slice(0,19)} already extracted \u2014 skipping`),P.push({source_id:t,reason:"cached"});continue}}else if(!J&&_e.has(a)){e.out(`cached: ${t} @ ${a.slice(0,19)} already extracted \u2014 skipping`),P.push({source_id:t,reason:"cached"});continue}v.push({source_id:t,cid:a})}let Qe=t=>{let a=Be(e.contextDir,t);a&&e.out(`note: a reconcile plan for ${t} is pending (${a.pending} item(s)) \u2014 resume with \`kane-cli maintain reconcile --apply ${a.path}\``)};for(let t of P)t.reason==="cached"&&Qe(t.source_id);if(e.emit?.({type:"corpus",sources:v,skipped:P}),v.length===0){if(n){let l=`error: resumed session's paused source (${Object.keys(n.handle.state.read_basis).join(", ")||"unknown"}) is no longer in the corpus \u2014 restore/re-ingest it and re-run --resume ${s.resume}, or discard with: kane-cli context sessions clean ${s.resume}`;return e.out(l),e.emit?.({type:"error",message:l,code:"SOURCE_MISSING"}),n.handle.release(),2}let t=P.length>0&&P.every(a=>a.reason==="conversation");return e.out(s.source?`extract: nothing to do \u2014 ${s.source} is already extracted at its current snapshot (--force to re-run)`:t?"extract: nothing to do \u2014 only conversation sources here (extract one explicitly with --source <id>)":"extract: nothing to do \u2014 every ingested source is already extracted"),0}let X=new Map;if(n&&n.questions.length>0&&!s.message){e.out(`re-presenting ${n.questions.length} unanswered question(s) from the paused session`);let t=await e.ask(n.questions.map(je));for(let a of t)X.set(a.id,a)}let H=e.by??{kind:"human",id:"owner"},A=c==="interactive"&&!s.plan&&!!e.chat,se=0,xe=0;try{for(let t of v){let a=R(e.contextDir),l={current:a};e.chat?.attachOnCommitted?.(r=>{l.current=r});let I=a.getNode(t.cid),G=String(I?.content.blob??""),oe=te(e.contextDir,G);if(!oe)return e.out(`error: ${t.source_id}: blob ${G} missing from .context/blobs`),e.emit?.({type:"error",source_id:t.source_id,message:`error: ${t.source_id}: blob ${G} missing from .context/blobs`,code:"BLOB_MISSING"}),1;let ve=a.mediaOf(t.cid),ie=ve.media_type.startsWith("image/");if(!ie){let r=ot(oe);if(r){e.out(`skipping ${t.source_id}: binary ${r} ingested before image support \u2014 re-ingest it (kane-cli context ingest) to extract from it`),e.emit?.({type:"source_skipped",source_id:t.source_id,reason:"binary_pre_media"});continue}}let q=ie?`0001| (image source ${t.source_id} \u2014 the content is attached as an image; cite it with anchor img#whole)`:it(oe),ye=Ve(e.now?.()??new Date),T=`${ye}-${t.source_id}`,$e=!!(n&&t.source_id in n.handle.state.read_basis)?s.resume:`ext-${ye}-${nt(t.source_id)}`,N="";if(A){let r=Ee({contextDir:e.contextDir,graph:R(e.contextDir),sessionStamp:$e,by:H});r.errors===null||r.errors[0]?.code==="CONV_SOURCE_EXISTS"?(N=r.sourceId,e.chat.attachConversationSource?.(N),l.current=R(e.contextDir)):e.out(`warning: conversation source unavailable (${r.errors[0]?.detail}) \u2014 chat adds will not land this session`)}let b={type:"run_config",version:1,session_id:$e,mode:c,source:{source_id:t.source_id,source_cid:t.cid,kind:st(t.source_id)||"md",numbered_text:q},existing_use_cases:a.byLabel(U.USECASE).filter(({cid:r})=>a.trust.get(r)!=="archived"&&!a.superseded.has(r)).map(({cid:r,content:i})=>({id:r,title:String(i.title??""),summary:String(i.summary??"")})),read_basis:l.current.latestHash,max_free_text_rounds:Me,graph_reads:!0,verb:"extract",...w!==void 0?{style_note_digest:w}:{},...s.changeContext&&s.changeContext.source_id===t.source_id?{change_context:s.changeContext}:{},topology:Fe(),...A?{chat:!0}:{},...ie?{image_sources:[{source_id:t.source_id,source_cid:t.cid,media_type:ve.media_type,blob_ref:{path:ee(e.contextDir,G),cid:G}}]}:{},...n&&t.source_id in n.handle.state.read_basis?{resume:{agent_state:n.handle.state.agent_state}}:{}};A||e.out(n&&t.source_id in n.handle.state.read_basis?`resuming: ${t.source_id} (session ${s.resume})`:`extracting: ${t.source_id} @ ${t.cid.slice(0,19)}`),e.emit?.({type:"source_start",source_id:t.source_id,cid:t.cid,index:v.indexOf(t)+1,total:v.length,resumed:!!(n&&t.source_id in n.handle.state.read_basis)}),e.chat?.ledger?.({kind:"banner",text:at(t,v.indexOf(t)+1,v.length)}),e.chat?.setWorking?.(`Reading ${Ke(t)}\u2026`);let be=new Map;d("spawn",{source_id:t.source_id,source_cid:t.cid,resume:!!n,chat:A},b.session_id);let Se=!1,Ze=async r=>{let i=z(r,q,R(e.contextDir));if(d("kane_validate",{errors:i.map(p=>p.code)},b.session_id),i.length>0){e.chat.submit("[auto-repair] the proposal failed validation: "+i.map(p=>`${p.code}: ${p.detail}`).join("; ")+" \u2014 please re-finalize with these fixed.");return}let y=R(e.contextDir),k=Je(r,y),Q=M(e.contextDir,"proposals",T);he(Q,{recursive:!0}),pe(M(Q,"proposal.json"),JSON.stringify(r,null,2)+`
|
|
12
|
-
`);let tt=new Map(r.use_cases.map(p=>[p.temp_ref,{resolution:"skipped"}])),Z=re({contextDir:e.contextDir,graph:y,proposal:r,proposalId:T,verdicts:tt,by:{kind:"ai",id:"extract-agent"},autoName:!0});if(Z.errors){e.chat.ledger?.({kind:"commit",ok:!1,line:"commit failed \u2014 nothing landed",warnings:Z.errors.map(p=>`${p.code}: ${p.detail}`)});return}Se=!0;let B=Z.record.nodes.length;se+=B;let j=r.use_cases.length-B;{let p=R(e.contextDir),De=new Map;for(let{cid:$,content:C}of p.byLabel(U.USECASE))p.superseded.has($)||De.set(V(String(C.title??"")),$);let ge=[];for(let $ of r.use_cases){let C=null;if($.matches_existing?.cid&&p.hasNode($.matches_existing.cid)){let W=p.tipOf($.matches_existing.cid);C=p.superseded.has(W)?null:W}C=C??De.get(V($.title))??null,C&&ge.push({ref:$.temp_ref,cid:C})}ge.length>0&&e.chat.registerAliases?.(ge),l.current=p;let ke=$=>{for(let[C,W]of p.names)if(W===$&&!p.superseded.has(W))return C},Ce=Oe({verb:"extract",commitN:1,phase:"proposal",committed:Z.record.nodes.map($=>({cid:$.cid,...ke($.cid)?{logical_id:ke($.cid)}:{}})),reused:j},p);e.emit?.(Ce.event),e.chat.holdReceipt?.(Ce.text)}d("commit",{derived:B,evidence_matched:j,chat:!0},b.session_id),e.chat.ledger?.({kind:"commit",ok:!0,line:B===0&&j>0?`all ${j} matched existing \u2014 nothing new to save`:`saved ${B} use-case${B===1?"":"s"} as drafts`+(j>0?` \xB7 ${j} matched existing`:"")})},we=!!(n&&t.source_id in n.handle.state.read_basis),Y=we&&X.size>0?{...e,ask:async r=>r.every(i=>X.has(i.id))?(n.handle.markApplied(r.map(i=>`resolveq:${s.resume}:${i.id}`)),e.out(`answered ${r.length} re-asked question(s) from the held resume answers`),r.map(i=>X.get(i.id))):e.ask(r)}:e;we&&s.message&&(Y={...Y,initialMessage:s.message});let f=await Ye(b,{...Y,graphSlot:l},be,a,d,A?Ze:void 0);if(e.chat?.setWorking?.(null),f.error)return e.out(`error: agent failed for ${t.source_id}: ${f.error}`),e.emit?.({type:"error",source_id:t.source_id,message:`error: agent failed for ${t.source_id}: ${f.error}`}),1;if(f.highRisk)return e.out(`error: ${f.highRisk.length} high-risk decision${f.highRisk.length===1?"":"s"} need a human \u2014 ci mode won't guess. Re-run with --mode agent to pause for review.`),e.emit?.({type:"error",source_id:t.source_id,message:`error: high-risk question(s) in ci mode (fail-closed): ${f.highRisk.map(r=>r.id).join(", ")}`,code:"HIGH_RISK_CI"}),1;if(f.paused){let r=v.slice(v.indexOf(t)+1).map(Q=>Q.source_id),i=n?.handle??Ne(e.contextDir,{sid:b.session_id,mode:"agent",created_at:(e.now?.()??new Date).toISOString(),expires_at:new Date((e.now?.()??new Date).getTime()+1440*60*1e3).toISOString(),agent_state:f.paused.agent_state,pending:{questions:[],proposals:[]},assumed:[],read_basis:{[t.source_id]:t.cid},corpus_cursor:{remaining:r},conv_source:N,verb:"extract",...J?{force:!0}:{},...s.changeContext?{change_basis:{source_id:s.changeContext.source_id,new_head:s.changeContext.new_head}}:{}});N&&i.state.conv_source!==N&&i.save({conv_source:N});let y=e.chat?.drainHeldReceipts?.()??[];(y.length>0||(i.state.held_receipts?.length??0)>0)&&i.save({held_receipts:y}),n?.handle&&i.save({read_basis:{[t.source_id]:t.cid},corpus_cursor:{remaining:r},...J&&!i.state.force?{force:!0}:{}}),Ue(i,f.paused),d("session_paused",{sid:i.state.sid},b.session_id);let k=`kane-cli context extract --resume ${i.state.sid} --mode ${c}`;return e.out(`paused: session ${i.state.sid} saved \u2014 resume with: ${k}`),e.emit?.({type:"session_paused",sid:i.state.sid,source_id:t.source_id,mode:c,resume:k,expires_at:i.state.expires_at,pending_questions:f.paused.pending.questions}),e.chat?.ledger?.({kind:"pause",sid:i.state.sid,expires_at:i.state.expires_at,resume:k,messageForm:`${k} --message "<your words>"`}),3}if(A){if(xe+=f.assumedDefaults??0,f.error)return 1;if(!Se){let r=v.length-v.indexOf(t)-1;return e.out(`done \u2014 nothing committed for ${t.source_id} (no finalize before the session ended)`+(r>0?`; stopping here \u2014 ${r} remaining source(s) not extracted (re-run kane-cli context extract to continue)`:"")),n&&t.source_id in n.handle.state.read_basis&&(n.handle.complete(),n=null),0}n&&t.source_id in n.handle.state.read_basis&&(n.handle.complete(),n=null);continue}if(!f.proposal)return e.out(`error: agent ended without a proposal for ${t.source_id}`),e.emit?.({type:"error",source_id:t.source_id,message:`error: agent ended without a proposal for ${t.source_id}`}),1;let D=z(f.proposal,q,a);if(d("kane_validate",{errors:D.map(r=>r.code)},b.session_id),D.length>0&&ct(f.proposal,D,r=>e.out(r))&&(d("criteria_dropped",{source_id:t.source_id},b.session_id),D=z(f.proposal,q,a)),D.length>0){if(e.out("the agent's proposal didn't validate \u2014 retrying once"),e.emit?.({type:"validate_failed",source_id:t.source_id,codes:D.map(r=>r.code),repairing:!0}),d("repair_respawn",{source_id:t.source_id},b.session_id),f=await Ye(b,{...Y,graphSlot:l},be,a,d),f.error||!f.proposal)return e.out(`error: repair run failed for ${t.source_id}`),e.emit?.({type:"error",source_id:t.source_id,message:`error: repair run failed for ${t.source_id}`}),1;if(D=z(f.proposal,q,a),D.length>0){for(let r of D)e.out(` ${r.detail}`);return e.emit?.({type:"validate_failed",source_id:t.source_id,codes:D.map(r=>r.code),repairing:!1}),e.emit?.({type:"error",source_id:t.source_id,message:`error: proposal failed validation after repair (${D.map(r=>r.code).join(", ")})`}),1}}let S=f.proposal,K=Je(S,a),ne=M(e.contextDir,"proposals",T);if(he(ne,{recursive:!0}),pe(M(ne,"proposal.json"),JSON.stringify(S,null,2)+`
|
|
13
|
-
`),s.plan){e.out(`plan: ${S.use_cases.length} use-case(s) proposed from ${t.source_id} (nothing committed)`);for(let r of S.use_cases){let i=K.get(r.temp_ref),y=i?i.archived?` \u2248 matches ARCHIVED ${i.cid.slice(0,19)}${i.reason?` \u2014 previously rejected: "${i.reason}"`:" \u2014 previously rejected"}`:` \u2248 matches ${i.cid.slice(0,19)}`:"";e.out(` [${r.risk}] ${r.title} \u2014 cite ${r.cite.anchor}${y}`)}e.emit?.({type:"plan",source_id:t.source_id,use_cases:S.use_cases.map(r=>{let i=K.get(r.temp_ref);return{risk:r.risk,title:r.title,anchor:r.cite.anchor,...i?{match:i.cid,match_archived:!!i.archived}:{}}})}),f.assumedDefaults&&e.out(`assumed: ${f.assumedDefaults} default(s) auto-taken (flagged)`);continue}for(let r of S.use_cases){if(!r.conflicts_with?.length)continue;let i=r.conflicts_with.filter(k=>a.resolve(k)!==null),y=r.conflicts_with.filter(k=>a.resolve(k)===null);y.length>0&&(e.out(`note: ${r.temp_ref}: dropped unresolvable conflict hint(s): ${y.join(", ")}`),r.conflicts_with=i.length>0?i:void 0)}d("review_start",{use_cases:S.use_cases.length,flags:K.size},b.session_id);let L=await e.review(S.use_cases,K);d("review_verdicts",[...L.entries()].map(([r,i])=>({ref:r,resolution:i.resolution})),b.session_id),pe(M(ne,"review.json"),JSON.stringify(S.use_cases.map(r=>{let i=L.get(r.temp_ref)??{resolution:"skipped"};return{id:r.temp_ref,kind:"review-item",resolution:i.resolution,edit:i.edit??null,reason:i.reason??null,...i.supersedeTarget?{supersede_target:i.supersedeTarget}:{},by:H}}),null,2)+`
|
|
14
|
-
`);let ae=a,O=re({contextDir:e.contextDir,graph:ae,proposal:S,proposalId:T,verdicts:L,by:H,autoName:!0});if(O.errors&&O.errors[0]?.code==="STALE_BASIS"){if(!await e.confirmStale(`the context changed while you reviewed (${O.errors[0].detail}) \u2014 commit against the new head anyway?`))return e.out("aborted: proposal not committed"),e.emit?.({type:"error",source_id:t.source_id,message:"aborted: proposal not committed",code:"STALE_BASIS"}),e.emit?.({type:"done",status:"aborted",exit_code:1}),1;ae=R(e.contextDir),O=re({contextDir:e.contextDir,graph:ae,proposal:S,proposalId:T,verdicts:L,by:H,allowStaleBasis:!0,autoName:!0})}if(O.errors){for(let r of O.errors)e.out(` ${r.detail}`);return e.emit?.({type:"error",source_id:t.source_id,message:`error: commit failed: ${O.errors.map(r=>`${r.code}: ${r.detail}`).join("; ")}`}),1}let et=new Date().toISOString();for(let r of S.use_cases){let i=L.get(r.temp_ref)??{resolution:"skipped"};for(let y of Ae({ts:et,command:"context extract",id:r.temp_ref,by:H},i.resolution))Pe(e.contextDir,y)}let F=O.record,ce=new Map(F.review.map(r=>[r.id,r.resolution])),ue=[...ce.values()].filter(r=>r==="approved"||r==="edited").length,de=[...ce.values()].filter(r=>r==="rejected").length,le=F.nodes.filter(r=>!ce.has(r.cid)).length,me=F.supersessions.filter(r=>r.kind==="node"&&r.new!==r.old).length;d("commit",{trusted:ue,derived:le,archived:de},b.session_id),e.out(`committed: ${ue} trusted, ${le} derived (queued), ${de} archived`+(me>0?`, ${me} superseded`:"")),f.assumedDefaults&&e.out(`assumed: ${f.assumedDefaults} default(s) auto-taken (flagged)`),e.emit?.({type:"commit",source_id:t.source_id,proposal_id:T,trusted:ue,derived:le,archived:de,superseded:me,assumed:f.assumedDefaults??0,evidence_matched:Math.max(0,S.use_cases.length-F.nodes.length),minted:F.nodes.map(r=>{let i=F.names?.find(y=>y.cid===r.cid)?.slug;return{cid:r.cid,...i?{logical_id:i}:{}}})}),n&&t.source_id in n.handle.state.read_basis&&(n.handle.complete(),e.out(`session ${s.resume} complete`),e.emit?.({type:"session_complete",sid:s.resume,source_id:t.source_id}),n=null)}}finally{n?.handle.release()}if(A){let t=e.chat?.state.ledger.filter(I=>I.kind==="answer"&&I.receipt.form==="assumed").length??0,a=xe+t,l=e.chat?.state.credits?.total;e.chat?.ledger?.({kind:"summary",lines:[`saved ${se} use-case${se===1?"":"s"} across ${v.length} source${v.length===1?"":"s"}`,...a>0?[`${a} assumed default(s)`]:[],...l!==void 0?[`credits used: ${l.toFixed(1)}`]:[],`trace: ${fe(m)}`]})}return s.plan||Ge(e.contextDir),0}export{nt as a,Ke as b,at as c,Je as d,Ut as e};
|
package/dist/chunk-64LC36AF.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{i as v}from"./chunk-C44QQJR4.js";import{a as w}from"./chunk-6YGTRKDT.js";import{e as m}from"./chunk-UR6MHSHU.js";var f=m(w(),1);function E({onToggleThinking:d,onCtrlC:a,explorer:e,panel:n}){let t=(0,f.useRef)(null),u=(0,f.useRef)(""),c=()=>{t.current&&clearTimeout(t.current),t.current=null,u.current=""};return(0,f.useEffect)(()=>c,[]),v((o,r)=>{if(r.ctrl&&o==="t"){d();return}if(r.ctrl&&o==="c"){a();return}if(!r.ctrl&&o.includes("")){a();return}if(!r.ctrl&&o.includes("")){d();return}if(e&&e.isOpen()){let i=()=>{t.current&&clearTimeout(t.current),t.current=setTimeout(()=>{c(),e.onBack()},150)};if(t.current){if(r.upArrow||r.downArrow||r.return){c(),r.return?e.onEnter():e.onMove(r.upArrow?-1:1);return}if(u.current+=o,u.current==="["){i();return}let l=u.current;c();let s=/^\[([AB])/.exec(l);if(s){e.onMove(s[1]==="A"?-1:1);return}e.onBack();return}if(r.upArrow){e.onMove(-1);return}if(r.downArrow){e.onMove(1);return}if(r.return){e.onEnter();return}if(r.escape){u.current="",i();return}if(o.length>=2&&!r.ctrl&&!r.meta){e.onClose();return}return}if(n&&n.isFocused()){let i=()=>{t.current&&clearTimeout(t.current),t.current=setTimeout(()=>{c(),n.onBack()},150)};if(t.current){if(r.upArrow||r.downArrow||r.return){c(),r.return?n.onSelect():n.onMove(r.upArrow?-1:1);return}if(u.current+=o,u.current==="["){i();return}let l=u.current;c();let s=/^\[([AB])/.exec(l);if(s){n.onMove(s[1]==="A"?-1:1);return}n.onBack();return}if(r.upArrow){n.onMove(-1);return}if(r.downArrow){n.onMove(1);return}if(r.return){n.onSelect();return}if(r.escape){u.current="",i();return}if(/^[1-9]$/.test(o)){n.onDigit(Number(o));return}if(o&&!r.ctrl&&!r.meta){n.onType(o);return}return}}),null}export{E as a};
|
package/dist/chunk-6AYUSR7X.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as n}from"./chunk-427OQS2N.js";import{a as i,b as s,c as t}from"./chunk-5YPBPZUR.js";function y(o="extract"){let a=new Set(n(o)),c=Object.fromEntries(Object.keys(s).map(r=>{let e=s[r];return[r,{hashed:[...e.hashed],required:[...e.required],enums:Object.fromEntries(Object.entries(e.enums).map(([p,g])=>[p,[...g]])),mintable:a.has(r)}]})),d=Object.fromEntries(Object.keys(t).map(r=>{let e=t[r];return[r,{src:[...e.src],dst:[...e.dst],salient:[...e.salient],props:[...e.props],cardinality:e.cardinality,acyclic:e.acyclic,direction:"dependent->dependency"}]}));return{schema_version:i,nodes:c,edges:d,mint_gate:n(o),blob_fingerprint:{algo:"sha256",domain:"assurance.blob\0",prefix:"sha256:"}}}export{y as a};
|
package/dist/chunk-6CZIEK6B.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as ve}from"./chunk-4SXD6XWV.js";import{c as we,y as d}from"./chunk-6SGPN76K.js";import{a as V}from"./chunk-HCBYKLMW.js";import{a as v,b as u,h as Te,i as de,k as Ae}from"./chunk-C44QQJR4.js";import{a as ue}from"./chunk-6YGTRKDT.js";import{e as B}from"./chunk-UR6MHSHU.js";var Be=B(ue(),1);import{readFileSync as Ye,writeFileSync as Ve,mkdirSync as Xe}from"fs";import{dirname as Ge,join as Pe}from"path";var Je=Pe(we,"command-history.json"),gt=Pe(we,"generate-history.json"),ze=200,Ee=class{entries;filePath;max;constructor(o=Je,n=ze){this.filePath=o,this.max=n,this.entries=this._load()}push(o){this.entries.length>0&&this.entries[this.entries.length-1]===o||(this.entries.push(o),this.entries.length>this.max&&(this.entries=this.entries.slice(this.entries.length-this.max)),this._save())}getAll(){return[...this.entries]}search(o){let n=o.toLowerCase(),l=[];for(let s=this.entries.length-1;s>=0;s--)this.entries[s].toLowerCase().includes(n)&&l.push(this.entries[s]);return l}_load(){if(this.filePath===null)return[];try{let o=Ye(this.filePath,"utf-8"),n=JSON.parse(o);return Array.isArray(n)?n:[]}catch{return[]}}_save(){if(this.filePath!==null)try{Xe(Ge(this.filePath),{recursive:!0}),Ve(this.filePath,JSON.stringify(this.entries)+`
|
|
3
|
-
`)}catch{}}};function pt(r){let o=(0,Be.useRef)(null);return o.current||(o.current=new Ee(r)),o.current}var C=B(ue(),1);var Se=B(ue(),1);var $=B(V(),1);function Le({history:r,onSelect:o,onClose:n}){let[l,s]=(0,Se.useState)(""),[c,m]=(0,Se.useState)(0),S=l?r.search(l).slice(0,8):[];return de((y,g)=>{if(g.escape){n();return}if(g.return){S.length>0&&S[c]?o(S[c]):n();return}if(g.upArrow){m(M=>Math.max(0,M-1));return}if(g.downArrow){m(M=>Math.min(S.length-1,M+1));return}if(g.backspace||g.delete){s(M=>M.slice(0,-1)),m(0);return}y&&!g.ctrl&&!g.meta&&(s(M=>M+y),m(0))}),(0,$.jsxs)(v,{flexDirection:"column",marginLeft:2,borderStyle:"single",paddingX:1,children:[(0,$.jsx)(u,{color:d.muted,bold:!0,children:"reverse search"}),(0,$.jsxs)(v,{gap:1,children:[(0,$.jsx)(u,{color:d.dim,children:"search:"}),(0,$.jsx)(u,{children:l}),(0,$.jsx)(u,{color:d.orange,children:"\u2588"})]}),S.length>0&&(0,$.jsx)(u,{children:" "}),S.map((y,g)=>(0,$.jsx)(v,{marginLeft:2,children:(0,$.jsxs)(u,{color:g===c?d.orange:d.dim,bold:g===c,children:[g===c?"\u25B8 ":" ",y]})},`${g}-${y}`))]})}var X=B(V(),1);function De({commands:r,selectedIndex:o}){return r.length===0?null:(0,X.jsx)(v,{flexDirection:"column",marginBottom:0,children:r.map((n,l)=>{let s=l===o;return(0,X.jsxs)(v,{children:[(0,X.jsx)(u,{color:s?d.orange:d.dim,children:s?"\u276F ":" "}),(0,X.jsxs)(u,{color:s?d.orange:void 0,bold:s,children:["/",n.name]}),n.args&&(0,X.jsxs)(u,{color:d.dim,children:[" ",n.args]}),(0,X.jsxs)(u,{color:d.dim,children:[" ",n.description]})]},n.name)})})}var _e=B(ue(),1);var P=B(V(),1),$e={scenario:"Scenarios",case:"Test Cases",file:"Files"};function Oe(r){let o={scenario:0,case:0,file:0};for(let n of r)o[n.kind]++;return["scenario","case","file"].filter(n=>o[n]>0).map(n=>`${o[n]} ${$e[n]}`).join(" \xB7 ")}var ge=7;function Ke({items:r,selectedIndex:o,accent:n=d.orange}){let l=r.length;if(l===0)return null;let s=Math.floor(ge/2),c=l<=ge?0:Math.max(0,Math.min(o-s,l-ge)),m=Math.min(l,c+ge),S=c,y=l-m;return(0,P.jsxs)(v,{flexDirection:"column",marginBottom:0,children:[S>0&&(0,P.jsx)(v,{children:(0,P.jsx)(u,{color:d.dim,children:` \u22EF ${S} above \u2014 ${Oe(r.slice(0,c))}`})}),r.slice(c,m).map((g,M)=>{let W=c+M,H=W===o,Q=M===0||r[W-1].kind!==g.kind;return(0,P.jsxs)(_e.default.Fragment,{children:[Q&&(0,P.jsx)(v,{children:(0,P.jsx)(u,{color:d.dim,children:$e[g.kind]})}),(0,P.jsxs)(v,{children:[(0,P.jsx)(u,{color:H?n:d.dim,children:H?"\u276F ":" "}),(0,P.jsx)(u,{color:H?n:void 0,bold:H,children:g.label})]})]},`${g.kind}:${g.value}:${W}`)}),y>0&&(0,P.jsx)(v,{children:(0,P.jsx)(u,{color:d.dim,children:` \u22EF ${y} more \u2014 ${Oe(r.slice(m))}`})})]})}var pe=B(ue(),1);var Qe=27,Ze=127,et=11;function tt(r){return r>=64&&r<=126}function nt(r,o){r===et&&o({killToEnd:!0,ctrl:!0,raw:String.fromCharCode(r)})}function rt(r,o){r===Ze&&o({backspace:!0,meta:!0,raw:"\x1B\x7F"})}function ot(r,o){let n=r.map(s=>String.fromCharCode(s)).join(""),l=/^\[1;([0-9]+)([A-D])$/.exec(n);if(l){let s=parseInt(l[1],10),c=l[2],m={raw:"\x1B"+n};if(s===2)m.shift=!0;else if(s===3)m.meta=!0;else if(s===5)m.ctrl=!0;else return;c==="A"?m.arrowUp=!0:c==="B"?m.arrowDown=!0:c==="C"?m.arrowRight=!0:c==="D"&&(m.arrowLeft=!0),o(m);return}if(n==="[H"||n==="[1~"||n==="[7~"){o({home:!0,raw:"\x1B"+n});return}if(n==="[F"||n==="[4~"||n==="[8~"){o({end:!0,raw:"\x1B"+n});return}if(n==="[3;5~"){o({delete:!0,ctrl:!0,raw:"\x1B"+n});return}if(n==="[3;3~"){o({delete:!0,meta:!0,raw:"\x1B"+n});return}}function it(r,o){r===72?o({home:!0,raw:"\x1BO"+String.fromCharCode(r)}):r===70&&o({end:!0,raw:"\x1BO"+String.fromCharCode(r)})}function st(){let r="IDLE",o=[];function n(){r="IDLE",o=[]}return{feed(l,s){for(let c of l)r==="IDLE"?c===Qe?(r="ESC",o=[]):nt(c,s):r==="ESC"?c===91?(r="CSI",o=[]):c===79?(r="SS3",o=[]):(rt(c,s),n()):r==="CSI"?(o.push(c),tt(c)&&(ot([91,...o],s),n())):r==="SS3"&&(it(c,s),n())},flushIdle(l){r==="ESC"&&o.length===0&&l({raw:"\x1B"}),n()}}}function He(r,o={}){let n=(0,pe.useRef)(r);n.current=r;let{stdin:l}=Te();(0,pe.useEffect)(()=>{if(o.isActive===!1||!l)return;let s=st(),c=null,m=S=>{c&&(clearTimeout(c),c=null);let y=Buffer.isBuffer(S)?S:Buffer.from(S,"binary");s.feed(y,g=>n.current(g)),c=setTimeout(()=>{s.flushIdle(g=>n.current(g)),c=null},50)};return l.on("data",m),()=>{l.removeListener("data",m),c&&clearTimeout(c)}},[o.isActive,l])}var x=B(V(),1);function lt(r,o){let n=o-1;for(;n>=0&&r[n]!=="@"&&r[n]!==" "&&r[n]!==`
|
|
4
|
-
`;)n--;return n<0||r[n]!=="@"||n>0&&r[n-1]!==" "&&r[n-1]!==`
|
|
5
|
-
`?null:{at:n,query:r.slice(n+1,o).join("")}}var ye=10;function at(r){return r.replace(/\x1b?\[200~/g,"").replace(/\x1b?\[201~/g,"").replace(/\r\n/g,`
|
|
6
|
-
`).replace(/\r/g,`
|
|
7
|
-
`).replace(/[\x00-\x08\x0b-\x1f\x7f]/g,"")}function ct(r,o){let n=[],l=0;for(;l<=r.length;){let s=l;for(;s<r.length&&r[s]!==`
|
|
8
|
-
`;)s++;if(l===s)n.push({start:l,end:l});else{let c=l;for(;c<s;){let m=Math.min(c+o,s);n.push({start:c,end:m}),c=m}}if(s>=r.length)break;l=s+1}return n}function ut(r,o,n){if(r.length===0)return 0;if(o>=n.length)return r.length-1;if(n[o]===`
|
|
9
|
-
`){for(let l=r.length-1;l>=0;l--)if(r[l].end===o)return l;return r.length-1}for(let l=0;l<r.length;l++){let s=r[l];if(s.start<=o&&o<s.end)return l}return r.length-1}function Fe(r,o,n,l){let s=ct(r,n);if(s.length===0)return null;let c=ut(s,o,r),m=c+l;if(m<0||m>=s.length)return null;let S=o-s[c].start,y=s[m],g=y.end-y.start;return y.start+Math.min(S,g)}function Ht({onSubmit:r,onEscape:o,history:n,placeholder:l="Type an objective or /command...",commands:s,clearSeq:c,submitVerb:m,footerBindings:S,inert:y=!1,clearOnSubmit:g=!0,noHistory:M=!1,accent:W=d.orange,scenarios:H,mentionFiles:Q,submitEmpty:ke=!1}){let[a,E]=(0,C.useState)([]),[f,h]=(0,C.useState)(0),[N,U]=(0,C.useState)("none"),[Z,L]=(0,C.useState)(-1),ee=(0,C.useRef)(""),[Ie,se]=(0,C.useState)(!0),{stdout:We}=Ae(),le=We?.columns??80,[ae,j]=(0,C.useState)(0),[te,ne]=(0,C.useState)(0),[Ne,xe]=(0,C.useState)([]),[Ue,fe]=(0,C.useState)(null),Me=(0,C.useRef)(!1);(0,C.useEffect)(()=>{if(c!==void 0){if(!Me.current){Me.current=!0;return}E([]),h(0),L(-1),ee.current="",se(!0),U("none"),j(0)}},[c]);let I=a.join(""),ce=(()=>{if(N!=="none"||a.length===0)return"";if(I.startsWith("/")&&s&&I.length>=2){let e=I.slice(1).toLowerCase(),t=s.find(p=>p.name.startsWith(e)&&p.name!==e);return t?`/${t.name}`.slice(I.length):""}if(I.startsWith("/")||M)return"";let i=n.getAll();for(let e=i.length-1;e>=0;e--)if(i[e].startsWith(I)&&i[e]!==I)return i[e].slice(I.length);return""})(),G=(()=>{if(!s||!I.startsWith("/"))return[];let i=I.length>=2?I.slice(1).toLowerCase():"";return i&&s.some(e=>e.name===i)?[]:s.filter(e=>!i||e.name.startsWith(i))})(),re=G.length>0&&I.startsWith("/"),D=!!Q||!!(H&&H.length)?lt(a,f):null,be=D?D.query:null,F=(()=>{if(!D)return[];let i=D.query.toLowerCase(),e=[];(H??[]).forEach((t,p)=>{let b=`s${p+1}`;(!i||b.includes(i)||(t.title??"").toLowerCase().includes(i))&&e.push({kind:"scenario",value:b,label:`@${b} ${t.title??t.sid??""}`.trim()})}),(H??[]).forEach((t,p)=>{let w=p+1;(t.test_cases??[]).forEach((b,T)=>{let O=`s${w}.c${T+1}`;(!i||O.includes(i)||(b.title??"").toLowerCase().includes(i))&&e.push({kind:"case",value:O,label:`@${O} ${b.title??""}`.trim()})})});for(let t of Ne)e.push({kind:"file",value:t,label:t});return e})(),oe=D!==null&&D.at!==Ue&&!re&&N==="none"&&F.length>0;(0,C.useEffect)(()=>{if(!Q||be===null){xe([]);return}let i=!1;return Q(be).then(e=>{i||xe(e)}).catch(()=>{i||xe([])}),()=>{i=!0}},[be,Q]),(0,C.useEffect)(()=>{te>=F.length&&ne(0)},[F.length]);let Re=i=>{if(!D)return;let e=i.kind==="file"&&/\s/.test(i.value)?`@"${i.value}"`:`@${i.value}`,t=[...a.slice(0,D.at),...e,...a.slice(f)];E(t),h(D.at+e.length),ne(0),fe(D.at),se(!1)};if(de((i,e)=>{if(Ie&&i&&se(!1),e.return){if(oe&&F[te]){Re(F[te]);return}if(re&&G[ae]){let t=`/${G[ae].name}`;M||n.push(t),r(t),E([]),h(0),U("none"),L(-1),ee.current="",se(!0),j(0);return}I.trim()?(M||n.push(I.trim()),r(I.trim()),g&&(E([]),h(0),U("none"),L(-1),ee.current="",se(!0),j(0))):ke&&r("");return}if(e.escape){if(oe){fe(D.at);return}N!=="none"?U("none"):a.length>0?(E([]),h(0),L(-1),ee.current=""):o?.();return}if(e.tab&&!e.shift){if(oe&&F[te]){Re(F[te]);return}if(re&&G[ae]){let t=`/${G[ae].name}`;E([...t]),h(t.length),j(0);return}if(ce){let t=I+ce;E([...t]),h(t.length);return}return}if(e.ctrl&&i==="r"){if(M)return;U("search");return}if(e.ctrl&&i==="a"){h(0);return}if(e.ctrl&&i==="e"){h(a.length);return}if(e.ctrl&&i==="w"){if(f===0)return;let t=f-1;for(;t>0&&a[t]===" ";)t--;for(;t>0&&a[t-1]!==" ";)t--;let p=[...a.slice(0,t),...a.slice(f)];E(p),h(t);return}if(e.ctrl&&i==="u"){E([]),h(0),L(-1),U("none");return}if(e.meta&&i==="b"){let t=f-1;for(;t>0&&a[t]===" ";)t--;for(;t>0&&a[t-1]!==" ";)t--;h(Math.max(0,t));return}if(e.meta&&i==="f"){let t=f;for(;t<a.length&&a[t]!==" ";)t++;for(;t<a.length&&a[t]===" ";)t++;h(t);return}if(e.leftArrow){if(e.ctrl||e.shift)return;h(t=>Math.max(0,t-1));return}if(e.rightArrow){if(e.ctrl||e.shift)return;if(f>=a.length&&ce){let t=I+ce;E([...t]),h(t.length)}else h(t=>Math.min(a.length,t+1));return}if(e.upArrow){if(e.shift)return;if(oe){ne(t=>Math.max(0,t-1));return}if(re){j(t=>Math.max(0,t-1));return}if(N==="none"){let t=Math.max(1,le-2),p=Fe(a,f,t,-1);if(p!==null){h(p);return}if(M)return;let w=n.getAll();if(w.length===0)return;if(Z===-1){ee.current=I,L(w.length-1);let b=w[w.length-1];E([...b]),h(b.length)}else if(Z>0){let b=Z-1;L(b);let T=w[b];E([...T]),h(T.length)}}return}if(e.downArrow){if(e.shift)return;if(oe){ne(t=>Math.min(F.length-1,t+1));return}if(re){j(t=>Math.min(G.length-1,t+1));return}if(N==="none"){let t=Math.max(1,le-2),p=Fe(a,f,t,1);if(p!==null){h(p);return}if(M)return;let w=n.getAll();if(Z===-1)return;if(Z<w.length-1){let b=Z+1;L(b);let T=w[b];E([...T]),h(T.length)}else{L(-1);let b=ee.current;E([...b]),h(b.length)}}return}if(e.backspace||e.delete){if(e.meta||e.ctrl)return;if(f>0){let t=[...a.slice(0,f-1),...a.slice(f)];E(t),h(f-1),L(-1),j(0),fe(null),ne(0)}return}if(i&&!e.ctrl&&!e.meta){let t=at(i);if(!t)return;let p=[...a.slice(0,f),...t,...a.slice(f)];E(p),h(f+t.length),L(-1),j(0),fe(null),ne(0)}},{isActive:!y&&N!=="search"}),He(i=>{if(i.home){h(0);return}if(i.end){h(a.length);return}if(i.killToEnd){E(a.slice(0,f));return}if(i.arrowLeft&&(i.ctrl||i.meta)){let e=f-1;for(;e>0&&a[e]===" ";)e--;for(;e>0&&a[e-1]!==" ";)e--;h(Math.max(0,e));return}if(i.arrowRight&&(i.ctrl||i.meta)){let e=f;for(;e<a.length&&a[e]!==" ";)e++;for(;e<a.length&&a[e]===" ";)e++;h(e);return}if(i.backspace&&i.meta){if(f===0)return;let e=f-1;for(;e>0&&a[e]===" ";)e--;for(;e>0&&a[e-1]!==" ";)e--;let t=[...a.slice(0,e),...a.slice(f)];E(t),h(e);return}if(i.delete&&(i.ctrl||i.meta)){let e=f;for(;e<a.length&&a[e]===" ";)e++;for(;e<a.length&&a[e]!==" ";)e++;E([...a.slice(0,f),...a.slice(e)]);return}},{isActive:!y&&N!=="search"}),y)return(0,x.jsxs)(v,{flexDirection:"column",children:[(0,x.jsx)(u,{color:d.muted,children:"\u2500".repeat(le)}),(0,x.jsxs)(v,{children:[(0,x.jsx)(u,{color:d.muted,children:"\u276F "}),(0,x.jsx)(u,{color:d.dim,children:l})]}),(0,x.jsx)(ve,{bindings:S??[{keys:"ctrl+c",label:"cancel"},{keys:"/cancel",label:"stop turn"},{keys:"ctrl+t",label:"thinking"}],suppressEscBack:!0})]});let je=i=>{E([...i]),h(i.length),U("none")},qe=()=>{U("none")},he=(()=>{if(Ie&&a.length===0)return null;let i=f>=a.length,e=a.slice(0,f).join(""),t,p;i?(t=" ",p=""):a[f]===`
|
|
10
|
-
`?(t=" ",p=a.slice(f).join("")):(t=a[f],p=a.slice(f+1).join(""));let w=e+t+p+ce,b=e.length,T=b+1,O=T+p.length,me=Math.max(1,le-2),R=[],k=0;for(;k<=w.length;){let A=w.indexOf(`
|
|
11
|
-
`,k);if(A===-1&&(A=w.length),k===A)R.push({type:"content",start:k,end:k});else{let _=k;for(;_<A;){let q=Math.min(_+me,A);R.push({type:"content",start:_,end:q}),_=q}}if(A>=w.length)break;k=A+1}let K=Math.max(0,R.findIndex(A=>A.start<=b&&b<=A.end)),z;if(R.length<=ye)z=R;else{let _=ye-1-4;if(K<4||K>=R.length-_)z=[...R.slice(0,4),{type:"ellipsis",hidden:R.length-4-_},...R.slice(R.length-_)];else{let q=ye-2,Ce=Math.floor(q/2),Y=K-Ce,ie=K+(q-Ce)-1;Y<1&&(ie+=1-Y,Y=1),ie>R.length-2&&(Y-=ie-(R.length-2),ie=R.length-2),Y=Math.max(1,Y),z=[{type:"ellipsis",hidden:Y},...R.slice(Y,ie+1),{type:"ellipsis",hidden:R.length-ie-1}]}}return{full:w,b,c:T,a:O,rows:z}})();return(0,x.jsxs)(v,{flexDirection:"column",children:[N==="search"&&(0,x.jsx)(Le,{history:n,onSelect:je,onClose:qe}),re&&(0,x.jsx)(De,{commands:G,selectedIndex:ae}),oe&&(0,x.jsx)(Ke,{items:F,selectedIndex:te,accent:W}),(0,x.jsx)(u,{color:d.muted,children:"\u2500".repeat(le)}),he===null?(0,x.jsxs)(v,{children:[(0,x.jsx)(u,{color:W,children:"\u276F "}),(0,x.jsx)(u,{inverse:!0,children:" "}),(0,x.jsx)(u,{color:d.dim,children:l})]}):(()=>{let i=he.rows.findIndex(e=>e.type==="content");return(0,x.jsx)(v,{flexDirection:"column",children:he.rows.map((e,t)=>{if(e.type==="ellipsis")return(0,x.jsx)(v,{children:(0,x.jsxs)(u,{color:d.dim,children:[" \u22EF ","(",e.hidden," more line",e.hidden===1?"":"s",")"]})},t);let{full:p,b:w,c:b,a:T}=he,O=e.start,J=e.end,me=t===i,R=me?"\u276F ":" ",k=me?W:d.muted,K=[(0,x.jsx)(u,{color:k,children:R},"p")];O<Math.min(w,J)&&K.push((0,x.jsx)(u,{children:p.slice(O,Math.min(w,J))},"b"));let z=Math.max(w,O),A=Math.min(b,J);z<A&&K.push((0,x.jsx)(u,{color:W,inverse:!0,children:p.slice(z,A)},"c"));let _=Math.max(b,O),q=Math.min(T,J);return _<q&&K.push((0,x.jsx)(u,{children:p.slice(_,q)},"a")),J>T&&K.push((0,x.jsx)(u,{color:d.dim,children:p.slice(Math.max(T,O),J)},"g")),(0,x.jsx)(v,{children:K},t)})})})(),(0,x.jsx)(ve,{bindings:S??[{keys:"\u2191\u2193",label:"history"},{keys:"\u21B5",label:m??"submit"},{keys:"tab",label:"complete"},{keys:"ctrl+r",label:"search"}],escBackLabel:"clear"})]})}export{gt as a,Ee as b,pt as c,Ht as d};
|
package/dist/chunk-6PS65QFF.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
var n={graph_search_similar:"search graph",graph_get_node:"read node",graph_get_edges:"read edges",graph_match_by_type:"match by type",graph_find_by_provenance:"trace provenance",graph_stale_nodes:"check stale",ask_user:"ask",finalize_proposal:"propose use-cases",chat_turn:"apply changes",read_image:"read image",source_read:"read source",source_grep:"search source",finalize_design:"propose design",expand_bva:"expand boundaries",covering_array:"combine classes",dedupe_candidates:"dedupe",budget_cut:"trim to budget"};function s(e){let r=n[e.name],t=e.status==="error"||e.status==="aborted"?" \u2717":"",a=e.detail?` \u2014 ${e.detail}`:"";return r?`\u2692 ${r}${a}${t}`:`\u2692 working\u2026${a}${t}`}function o(e){return s(e).replace(/^\S+ /,"")}export{s as a,o as b};
|
package/dist/chunk-74RUSHIB.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as j}from"./chunk-ZZLR3O5A.js";import{c as m,d as _,f as L}from"./chunk-ZG2V2ODK.js";import{a as w,e as N,f as k,g as O,h as I}from"./chunk-5YPBPZUR.js";import{existsSync as v,mkdirSync as M,readFileSync as S,renameSync as T,rmSync as P,writeFileSync as J}from"fs";import{dirname as W,join as b}from"path";var $=s=>b(s,"derived"),q=s=>b($(s),"index.json");function x(s,n){let t=n.startsWith("sha256:")?n.slice(7):n;return b($(s),"nodes",t.slice(0,2),t.slice(2)+".json")}function A(){return{applied:{seq:0,hash:null},heads:{},trust:{},nodeLabel:{},forward:{},extracted:[],design_of:{},exec:{},superseded:{},names:{},archivedReason:{},appliedEvents:[],conv:{},media:{}}}function D(s){let n=q(s);if(!v(n))return null;try{let t=JSON.parse(S(n,"utf8"));return t.superseded===void 0||t.names===void 0||t.archivedReason===void 0||t.appliedEvents===void 0||t.conv===void 0||t.media===void 0||t.exec===void 0||t.reverse!==void 0?null:t}catch{return null}}function U(s,n){M(W(s),{recursive:!0});let t=`${s}.tmp-${process.pid}`;J(t,n),T(t,s)}function y(s,n,t,l,a={}){let p=a.writeNodeFiles!==!1,g=new Set(n.extracted),h=new Set(n.appliedEvents);t.forEach((i,o)=>{for(let e of i.nodes){let r=x(s,e.cid);p&&!v(r)&&U(r,JSON.stringify({label:e.label,content:e.content})+`
|
|
3
|
-
`),!(e.cid in n.trust)&&e.content.derived===!0&&(n.trust[e.cid]="derived"),n.nodeLabel[e.cid]=e.label}i.proposal_id!=null&&typeof i.extraction_of=="string"&&g.add(i.extraction_of),i.design_of&&((n.design_of??={})[i.design_of.uc_cid]={engine:i.design_of.engine,seq:i.seq});for(let e of i.executions??[])((n.exec??={})[e.about]??=[]).push(e);for(let e of i.edges){let{quote:r,...d}=e.props,c=n.forward[e.src]??=[];c.some(u=>u.ecid===e.ecid)||c.push({...e,props:d}),i.proposal_id!=null&&e.type===N.DERIVES&&typeof e.props.source_cid=="string"&&g.add(e.props.source_cid)}for(let e of i.review)e.resolution==="approved"||e.resolution==="edited"?(n.trust[e.id]="trusted",delete n.archivedReason[e.id]):e.resolution==="rejected"?(n.trust[e.id]="archived",e.reason?n.archivedReason[e.id]=e.reason:delete n.archivedReason[e.id]):e.resolution==="reset"&&(n.trust[e.id]="derived",delete n.archivedReason[e.id]);for(let e of i.supersessions)e.kind==="node"?e.new===e.old?delete n.superseded[e.old]:n.superseded[e.old]=e.new:n.superseded[e.ecid]=null;for(let e of i.names??[])n.names[e.slug]=e.cid;for(let[e,r]of Object.entries(i.source_head_moves))n.heads[e]=r;for(let e of i.event_ids??[])h.add(e);if(i.media)for(let[e,r]of Object.entries(i.media)){let d=i.source_head_moves[e];typeof d=="string"&&(n.media[d]=r)}if(i.conv){let e=i.source_head_moves[i.conv.source_id];if(typeof e=="string"){let r=n.conv[i.conv.source_id],d=r&&r.chain.length>0?r.chain[r.chain.length-1]:null;i.conv.append_of===d?n.conv[i.conv.source_id]={turns:i.conv.turn,chain:[...r?.chain??[],e]}:n.conv[i.conv.source_id]={turns:i.conv.turn,chain:[e]}}}for(let[e,r]of Object.entries(i.source_head_moves))i.conv?.source_id!==e&&n.conv[e]!==void 0&&(n.conv[e]=typeof r=="string"?{turns:n.conv[e].turns,chain:[r]}:{turns:n.conv[e].turns,chain:[]});n.applied={seq:i.seq,hash:l[o]}}),n.extracted=[...g].sort(),n.appliedEvents=[...h].sort()}function F(s,n){U(q(s),JSON.stringify(n)+`
|
|
4
|
-
`)}function K(s){let n=b(s,"meta.json");if(v(n))try{let t=JSON.parse(S(n,"utf8"));if(t.schema!==w||t.canonicalizer!=="v1")throw new m(`schema fence: store is ${t.schema}/${t.canonicalizer}, this build is ${w}/${"v1"} \u2014 migrate explicitly (kane-cli context rebuild after upgrading)`)}catch(t){throw t instanceof m?t:new m(`corrupt meta.json in ${s} \u2014 fix or remove it`)}}function V(s){K(s);let n=D(s);if(n===null){n=A();let{records:a,hashes:p}=_(s);return y(s,n,a,p),F(s,n),n}let{records:t,hashes:l}=L(s,n.applied.seq,n.applied.hash);return t.length>0&&(y(s,n,t,l),F(s,n)),n}function Z(s){return P($(s),{recursive:!0,force:!0}),V(s)}function Q(s){let n=[],t=[],l=[];try{({records:t,hashes:l}=_(s))}catch(o){return{ok:!1,issues:[o instanceof m?o.message:String(o)],records:0}}let a=A();y(s,a,t,l,{writeNodeFiles:!1});let p=D(s);if(p===null)n.push("derived/index.json missing or corrupt (run kane-cli context rebuild)");else{let o=e=>JSON.stringify(R(e));for(let e of["applied","heads","trust","nodeLabel","forward","extracted","superseded","names","archivedReason","appliedEvents","conv","media","design_of","exec"])o(a[e])!==o(p[e])&&n.push(`derived drift in index.${e} (run kane-cli context rebuild)`)}let g=new Set;for(let o of Object.values(a.forward))for(let e of o)g.add(e.ecid);let h=new Set;for(let o of t)for(let e of o.supersessions)e.kind==="node"?(e.old in a.nodeLabel||n.push(`SUPERSEDE_UNKNOWN_OLD: ${e.old} (record ${o.seq})`),e.new!==null&&e.new!==e.old&&!(e.new in a.nodeLabel)&&n.push(`SUPERSEDE_UNKNOWN_NEW: ${String(e.new)} (record ${o.seq})`),e.new===e.old?h.delete(e.old):(h.has(e.old)&&n.push(`DOUBLE_SUPERSEDE: ${e.old} re-superseded while live (record ${o.seq})`),h.add(e.old))):g.has(e.ecid)||n.push(`SUPERSEDE_UNKNOWN_ECID: ${e.ecid} (record ${o.seq})`);for(let o of Object.keys(a.superseded)){let e=new Set,r=o;for(;r!==null&&r in a.superseded;){if(e.has(r)){n.push(`SUPERSEDE_CYCLE: chain from ${o} revisits ${r}`);break}e.add(r),r=a.superseded[r]}}for(let[o,e]of Object.entries(a.names))e in a.nodeLabel||n.push(`NAME_UNKNOWN_TARGET: slug ${o} \u2192 ${e} not in the graph`);for(let o of t)for(let e of o.edges){let r=a.nodeLabel[e.src]??"(unknown)",d=a.nodeLabel[e.dst]??"(unknown)";for(let c of I(e.type,r,d,e.props))n.push(`${c.code}: ${e.ecid} ${c.detail}`)}let i=new Map;for(let o of Object.values(a.forward))for(let e of o){if(e.ecid in a.superseded)continue;let r=i.get(e.type)??[];r.push(e),i.set(e.type,r)}for(let[o,e]of i){let r=O(o);if(r?.acyclic){let d=new Map;for(let f of e)d.set(f.src,[...d.get(f.src)??[],f.dst]);let c=new Map,u=f=>{c.set(f,1);for(let E of d.get(f)??[])if(c.get(E)===1||c.get(E)===void 0&&u(E))return!0;return c.set(f,2),!1};for(let f of d.keys())if(c.get(f)===void 0&&u(f)){n.push(`EDGE_CYCLE: live ${o} edges form a cycle reachable from ${f}`);break}}if(r?.cardinality==="one-live-per-src"||r?.cardinality==="one-live-per-src-and-dst"){let d=new Map;for(let c of e)c.dst in a.superseded||d.set(c.src,(d.get(c.src)??0)+1);for(let[c,u]of d)u>1&&n.push(`CARDINALITY_VIOLATION: ${u} live ${o} edges from ${c} (one-live-per-src)`)}if(r?.cardinality==="one-live-per-src-and-dst"){let d=new Map;for(let c of e)c.src in a.superseded||c.dst in a.superseded||d.set(c.dst,(d.get(c.dst)??0)+1);for(let[c,u]of d)u>1&&n.push(`CARDINALITY_VIOLATION: ${u} live ${o} edges onto ${c} (one-live-per-dst)`)}}for(let[o,e]of Object.entries(a.nodeLabel)){let r=x(s,o);if(!v(r)){n.push(`missing node file for ${o} (run kane-cli context rebuild)`);continue}try{let d=JSON.parse(S(r,"utf8"));(d.label!==e||j(d.label,d.content)!==o)&&n.push(`node file content mismatch for ${o} (run kane-cli context rebuild)`);for(let c of k(d.label,d.content))n.push(`${c.code}: ${o} ${c.detail}`)}catch{n.push(`corrupt node file for ${o} (run kane-cli context rebuild)`)}}return{ok:n.length===0,issues:n,records:t.length}}function R(s){return Array.isArray(s)?s.map(R):s&&typeof s=="object"?Object.fromEntries(Object.entries(s).sort(([n],[t])=>n<t?-1:1).map(([n,t])=>[n,R(t)])):s}export{x as a,V as b,Z as c,Q as d};
|
package/dist/chunk-GBBVP2JW.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{d,e as f}from"./chunk-5YPBPZUR.js";var G={high:3,med:2,low:1},R={create:0,evolve:1,"reuse-candidate":2},_=.75;function a(e,n){return!e.superseded.has(n)&&e.trust.get(n)!=="archived"}function m(e,n="med"){let t=e.risk;return t==="high"||t==="med"||t==="low"?t:n}function l(e,n){return e.nameOf.get(n)??n}function y(e,n){return`kane-cli design tests --use-case ${l(e,n)}`}function b(e,n){let t=e.edgesFrom(n).find(i=>i.type===f.SCOPED_TO&&a(e,i.dst));if(!t)return null;let s=e.nodeLabel.get(t.dst);if(s===d.USECASE)return t.dst;if(s===d.SCENARIO){let i=e.edgesFrom(t.dst).find(r=>r.type===f.BELONGS_TO&&a(e,r.dst));return i?i.dst:null}return null}function v(e,n){let t=b(e,n);return t?y(e,t):w(e,n)}function w(e,n){return`kane-cli design explain ${l(e,n)}`}function E(e,n){let t=e.edgesFrom(n).find(i=>i.type===f.AUTOMATES&&a(e,i.dst));if(!t)return null;let s=e.edgesFrom(t.dst).find(i=>i.type===f.BELONGS_TO&&a(e,i.dst));return s?s.dst:null}function S(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.AC))!a(e,t)||e.edgesInto(t).filter(r=>r.type===f.VERIFIES&&a(e,r.src)).length>0||n.push({ref:l(e,t),kind:"no-verifies",why:"no live test verifies this acceptance criterion",risk:m(s),stage:"design",tag:"create",ready_command:v(e,t)});return n}function h(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.USECASE)){if(!a(e,t))continue;let i=e.edgesInto(t).filter(o=>o.type===f.BELONGS_TO&&a(e,o.src));if(i.length===0){n.push({ref:l(e,t),kind:"zero-scenario",why:"use-case has no scenarios",risk:m(s),stage:"design",tag:"create",ready_command:y(e,t)});continue}i.every(o=>e.getNode(o.src)?.content.case_type==="happy")&&n.push({ref:l(e,t),kind:"happy-only",why:"use-case is exercised by happy-path scenarios only",risk:m(s),stage:"design",tag:"create",ready_command:y(e,t)})}return n}function x(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.GAP)){if(!a(e,t))continue;let i=s.ref,r=typeof i=="string"?e.resolve(i):null,o=r&&a(e,r.tip)?r.tip:null,u=o?e.nodeLabel.get(o):null,p=u===d.USECASE?y(e,o):u===d.AC?v(e,o):w(e,t),c=s.question&&typeof s.question=="object"?s.question:void 0,k=typeof s.text=="string"&&s.text||(c&&typeof c.header=="string"?c.header:"")||"design gap";n.push({ref:l(e,t),kind:String(s.kind),why:k,risk:m(s),stage:"design",tag:"create",ready_command:p,...typeof s.risk_rationale=="string"?{risk_rationale:s.risk_rationale}:{},...c?{question:c}:{}})}return n}function L(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.AC)){if(!a(e,t))continue;let i=e.stale(t);i==="fresh"||i==="superseded"||n.push({ref:l(e,t),kind:"stale-ac",why:`acceptance criterion is ${i} \u2014 its source moved since this was authored`,risk:m(s),stage:"design",tag:"evolve",ready_command:v(e,t)})}for(let{cid:t,content:s}of e.byLabel(d.TEST)){if(!a(e,t))continue;let i=e.stale(t);if(i==="fresh"||i==="superseded")continue;let r=e.edgesFrom(t).filter(g=>g.type===f.VERIFIES&&a(e,g.dst)),o=r.map(g=>m(e.getNode(g.dst)?.content??{})),u=o.includes("high")?"high":o.includes("med")?"med":o.includes("low")?"low":"med",p=r[0]?.dst??null,c=p?null:E(e,t),k=p?v(e,p):c?y(e,c):w(e,t);n.push({ref:l(e,t),kind:"stale-test",why:`test is ${i} \u2014 its source moved since this was authored`,risk:u,stage:"design",tag:"evolve",ready_command:k})}return n}async function C(e,n,t){for(let s of e)if(s.tag==="create"){if(!t){s.meta={embed_arm:"skipped"};continue}try{let i=n.resolve(s.ref),r=i?n.getNode(i.tip):null,o=r&&(String(r.content.title??"")||String(r.content.text??""))||s.why,u=r?.label===d.USECASE?"scenario":"test",c=(await t.searchSimilar(o,{label:u,k:1}))[0];c&&c.score>=_?(s.tag="reuse-candidate",s.meta={embed_arm:"used",near_hit:{ref:l(n,c.cid),score:c.score}}):s.meta={embed_arm:"used",near_hit:null}}catch{s.meta={embed_arm:"skipped"}}}}function O(e,n){let t=G[n.risk]-G[e.risk];if(t!==0)return t;let s=R[e.tag]-R[n.tag];return s!==0?s:e.ref<n.ref?-1:e.ref>n.ref?1:0}function A(e,n){let t=[],s=r=>{let o=e.resolve(r);return o&&!o.superseded?m(e.getNode(o.tip)?.content??{}):"med"},i=r=>{let o=e.resolve(r),u=o&&!o.superseded?b(e,o.tip):null;return u?l(e,u):r};for(let r of n.usecases??[])for(let o of r.acceptance_criteria??[])(o.covered_by??[]).length>0&&(o.execution==="failed"?t.push({ref:o.id,kind:"execution-failed",stage:"cover",tag:"evolve",risk:s(o.id),why:`covering test failed against this AC (tests: ${(o.covered_by??[]).join(", ")})`,ready_command:`kane-cli maintain evolve ${i(o.id)}`}):o.execution==="blocked"?t.push({ref:o.id,kind:"execution-blocked",stage:"cover",tag:"reuse-candidate",risk:s(o.id),why:"the oracle could not run (infrastructure) \u2014 the covering test exists and is reusable",ready_command:"kane-cli testrun run"}):o.execution==="not-run"&&t.push({ref:o.id,kind:"covered-not-run",stage:"cover",tag:"reuse-candidate",risk:s(o.id),why:"a covering test exists but never joined this pack \u2014 run it",ready_command:"kane-cli testrun run"}));return t}async function I(e,n,t,s){if(n!=="design"&&!s)throw new Error(`gaps-engine: stage "${n}" requires a pack's usecases doc`);let i=[];return(n==="design"||n==="all")&&i.push(...S(e),...h(e),...x(e),...L(e)),(n==="cover"||n==="all")&&i.push(...A(e,s)),await C(i,e,t),i.sort(O),i}export{I as a};
|
package/dist/chunk-JF7Q2I45.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as H}from"./chunk-VBCE4U4B.js";import{a as q}from"./chunk-C42WWO7Y.js";import{a as j}from"./chunk-FPFOW6BS.js";import{a as V}from"./chunk-YCCUBQY4.js";import{a as Y}from"./chunk-AKHUNBQS.js";import{a as X}from"./chunk-VE3SUJMA.js";import{a as D}from"./chunk-4SXD6XWV.js";import{y as r}from"./chunk-6SGPN76K.js";import{a as z}from"./chunk-HCBYKLMW.js";import{a as d,b as l,i as $}from"./chunk-C44QQJR4.js";import{a as ne}from"./chunk-6YGTRKDT.js";import{e as G}from"./chunk-UR6MHSHU.js";var f=G(ne(),1);var e=G(z(),1);function re(s){let t=[{id:"method",label:"Auth method",options:[{label:"Basic Auth",value:"basic"},{label:"OAuth (browser)",value:"oauth"}]}];return s&&t.push({id:"env",label:"Environment",options:[{label:"prod",value:"prod"},{label:"stage",value:"stage"}]}),t.push({id:"profile",label:"Profile"}),t.push({id:"credentials",label:"Credentials"}),t}function ce({devMode:s,profiles:t,onBasicLogin:n,onOAuthLogin:o,onComplete:A,onCancel:p}){let v=re(s),[x,h]=(0,f.useState)(0),[m,S]=(0,f.useState)(0),[C,R]=(0,f.useState)({}),[c,g]=(0,f.useState)("select"),[N,b]=(0,f.useState)(""),[_,w]=(0,f.useState)("username"),[I,O]=(0,f.useState)(""),[k,B]=(0,f.useState)(null),[Q,F]=(0,f.useState)(null),P=v[x],K=C.method??"basic",E=C.env??"prod",M=(0,f.useCallback)(()=>{let i=t.filter(a=>a.env===E).map(a=>({label:`${a.profile} [${a.env}]`,value:a.profile}));return i.push({label:"+ Create new",value:"__new__"}),i},[t,E]),W=(0,f.useCallback)(()=>{x===0?p():(h(u=>u-1),S(0),g("select"),b(""),B(null))},[x,p]),U=(0,f.useCallback)(u=>{K==="basic"?(g("text-input"),w("username"),b("")):(g("waiting"),o(u,E).then(()=>{F(`Logged in via OAuth as ${u} [${E}]`),g("done")}).catch(i=>{B(i.message),g("error")}))},[K,E,o]),Z=(0,f.useCallback)(u=>{let i=u.trim();if(i){if(_==="profileName"){let a=i;R(T=>({...T,profile:a})),U(a);return}if(_==="username"){O(i),b(""),w("accessKey"),g("text-input-masked");return}if(_==="accessKey"){let a=C.profile??"default";g("waiting"),(async()=>{try{await n(a,E,I,i),F(`Logged in as ${a} [${E}] via basic auth`),g("done")}catch{B("Credentials not valid. Please use valid credentials."),O(""),b(""),w("username"),g("text-input")}})()}}},[_,C.profile,E,n,I,U]),ee=(0,f.useCallback)(u=>{b(u),k&&B(null)},[k]);$((u,i)=>{if(c==="done"){let T=C.profile??"default";A(T,E);return}if(c==="error"){p();return}if(c==="waiting"){i.escape&&p();return}if(c==="text-input"||c==="text-input-masked")return;if(i.escape){W();return}let a=P?.id==="profile"?M():P?.options??[];if(i.upArrow){S(T=>Math.max(0,T-1));return}if(i.downArrow){S(T=>Math.min(a.length-1,T+1));return}if(i.return&&a[m]){let T=a[m];if(P.id==="profile"){if(T.value==="__new__"){g("text-input"),w("profileName"),b("");return}R(y=>({...y,profile:T.value})),h(y=>y+1),S(0),U(T.value);return}R(y=>({...y,[P.id]:T.value})),h(y=>y+1),S(0)}});let L="Login";if(c==="done")return(0,e.jsxs)(d,{flexDirection:"column",borderStyle:"round",borderColor:r.green,paddingX:2,paddingY:1,children:[(0,e.jsxs)(l,{color:r.green,bold:!0,children:["\u2713 ",Q]}),(0,e.jsx)(d,{marginTop:1,children:(0,e.jsx)(l,{color:r.dim,children:"press any key"})})]});if(c==="error")return(0,e.jsxs)(d,{flexDirection:"column",borderStyle:"round",borderColor:r.red,paddingX:2,paddingY:1,children:[(0,e.jsx)(l,{color:r.red,bold:!0,children:"Login failed"}),(0,e.jsx)(d,{marginTop:1,children:(0,e.jsx)(l,{color:r.red,children:k})}),(0,e.jsx)(d,{marginTop:1,children:(0,e.jsx)(l,{color:r.dim,children:"press any key"})})]});if(c==="waiting")return(0,e.jsxs)(d,{flexDirection:"column",borderStyle:"round",borderColor:r.orange,paddingX:2,paddingY:1,children:[(0,e.jsxs)(l,{color:r.orange,bold:!0,children:[L," \u203A OAuth"]}),(0,e.jsx)(d,{marginTop:1,children:(0,e.jsx)(l,{color:r.secondary,children:"Opening browser for login..."})}),(0,e.jsx)(d,{marginTop:1,children:(0,e.jsx)(l,{color:r.orange,children:"Waiting for callback \u27F3"})}),(0,e.jsx)(D,{bindings:[],escBackLabel:"cancel"})]});if(c==="text-input"||c==="text-input-masked"){let u=_==="username"?"Username":_==="accessKey"?"Access Key":"Profile name",i=_==="username"||_==="accessKey"?`${L} \u203A Basic Auth`:`${L} \u203A New Profile`;return(0,e.jsxs)(d,{flexDirection:"column",borderStyle:"round",borderColor:r.orange,paddingX:2,paddingY:1,children:[k&&(_==="username"||_==="accessKey")&&(0,e.jsx)(d,{marginBottom:1,children:(0,e.jsxs)(l,{color:r.red,children:["\u2717 ",k]})}),(0,e.jsx)(l,{color:r.orange,bold:!0,children:i}),_==="accessKey"&&(0,e.jsxs)(d,{marginTop:1,children:[(0,e.jsx)(l,{color:r.secondary,children:"Username: "}),(0,e.jsx)(l,{children:I})]}),(0,e.jsxs)(d,{marginTop:1,children:[(0,e.jsxs)(l,{color:r.secondary,children:[u,": "]}),(0,e.jsx)(V,{value:N,onChange:ee,onSubmit:Z,onCancel:W,masked:c==="text-input-masked"})]}),(0,e.jsx)(D,{bindings:[{keys:"\u21B5",label:"confirm"}],escBackLabel:"back"})]})}let te=P?.id==="profile"?M():P?.options??[];return(0,e.jsxs)(d,{flexDirection:"column",borderStyle:"round",borderColor:r.orange,paddingX:2,paddingY:1,children:[(0,e.jsx)(l,{color:r.orange,bold:!0,children:L}),(0,e.jsx)(d,{marginTop:1,children:(0,e.jsxs)(l,{color:r.secondary,children:[P?.label,":"]})}),(0,e.jsx)(d,{flexDirection:"column",marginTop:1,children:te.map((u,i)=>{let a=i===m,T=a?"\u276F ":" ",y=u.value==="__new__"?r.green:a?r.orange:void 0;return(0,e.jsxs)(l,{color:y,children:[T,u.label]},u.value)})}),(0,e.jsx)(D,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"select"}],escBackLabel:"back"})]})}async function J(s,t,n,o){let A=s.loadBasicAuth(t,n),p=s.loadCredentials(t,n);if(!A&&!p)return o("info","STARTUP_GATE_NO_CREDS","Profile has no credentials",{profile:t,env:n}),{status:"needs_login",profile:t,env:n};let v=Y(n),x=async()=>s.loadCredentials(t,n)?.access_token??null,h=new j(v.controllerBaseUrl,x,A,o);o("info","STARTUP_GATE_VALIDATE","Validating credentials with controller",{profile:t,env:n,method:A?"basic":"oauth"});let m=await h.resolve(!0);if(m)return o("info","STARTUP_GATE_VALID","Credentials validated",{profile:t,env:n,username:m.username,org_id:m.org_id}),{status:"authenticated",result:{profile:t,env:n,credentials:p,basicAuth:A,tmsCreds:m,resolver:h}};if(!A&&p){let S=p.refresh_token,R=s.loadClient(t,n)?.client_id;if(S&&R){o("info","STARTUP_GATE_REFRESH","Attempting token refresh",{profile:t,env:n});try{let g=await new q(n).refreshToken(S,R);if(g.access_token){s.saveCredentials(t,n,{...p,...g,expires_at:Date.now()/1e3+(g.expires_in??3600)});let b=await h.resolve(!0);if(b)return o("info","STARTUP_GATE_REFRESH_OK","Token refreshed and validated",{profile:t,env:n,username:b.username}),{status:"authenticated",result:{profile:t,env:n,credentials:{...p,...g},basicAuth:null,tmsCreds:b,resolver:h}}}o("warn","STARTUP_GATE_REFRESH_INVALID","Refreshed token still invalid",{profile:t,env:n})}catch(c){o("warn","STARTUP_GATE_REFRESH_FAILED","Token refresh failed",{profile:t,env:n,error:c instanceof Error?c.message:String(c)})}}else o("info","STARTUP_GATE_NO_REFRESH","No refresh_token or client_id \u2014 login required",{profile:t,env:n})}return o("info","STARTUP_GATE_INVALID","Credentials invalid \u2014 login required",{profile:t,env:n}),{status:"needs_login",profile:t,env:n}}async function Te(s,t,n=new H){let o=s.listProfiles();if(t("info","STARTUP_GATE_START","Auth startup gate",{profile_count:o.length}),o.length===0)return t("info","STARTUP_GATE_NONE","No profiles found \u2014 login required"),{status:"needs_login"};if(o.length>1){let v=s.getActiveProfile(),x=s.getDefaultEnv();if(v&&o.some(m=>m.profile===v&&m.env===x)){t("info","STARTUP_GATE_TRY_ACTIVE","Multiple profiles \u2014 trying active first",{activeProfile:v,activeEnv:x});let m=await J(s,v,x,t);if(m.status==="authenticated")return m;t("info","STARTUP_GATE_ACTIVE_FAILED","Active profile invalid \u2014 showing picker",{activeProfile:v,activeEnv:x})}return t("info","STARTUP_GATE_MULTI","Multiple profiles \u2014 picker required",{profiles:o.map(h=>`${h.profile}/${h.env}`)}),{status:"needs_pick",profiles:o}}let{profile:A,env:p}=o[0];return s.setActiveProfile(A),s.setDefaultEnv(p),X(s,n,A,p),J(s,A,p,t)}export{ce as a,J as b,Te as c};
|
package/dist/chunk-KNCHEM6A.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as K,d as W}from"./chunk-RE3BZVGE.js";import{d as D}from"./chunk-JFAFKHDX.js";import{a as G}from"./chunk-YKTYVJBN.js";import{d as X}from"./chunk-2PQXEEVY.js";import{a as Q}from"./chunk-MCQXRJGH.js";import{a as H}from"./chunk-ZZLR3O5A.js";import{g as z}from"./chunk-ZG2V2ODK.js";import{d as U,f as j}from"./chunk-5YPBPZUR.js";import{a as P,c as B}from"./chunk-6SGPN76K.js";function lt(t){let e=process.env.HOME??"";return e&&t.startsWith(e)?`~${t.slice(e.length)}`:t}import{readFileSync as Se,writeFileSync as Ee,renameSync as $e,mkdirSync as Re}from"fs";import{dirname as Ce,join as Te}from"path";var O=1,Me=720*60*1e3;function F(t){return Te(B,"embeddings",`alias-${t}.json`)}function J(t,e=Date.now()){return t!==null&&e-t.fetchedAt<Me}function Y(t){try{let e=JSON.parse(Se(t,"utf-8"));return e.wrapperVersion!==O||typeof e.purposes!="object"||e.purposes===null?null:{wrapperVersion:O,writtenByVersion:String(e.writtenByVersion??""),purposes:e.purposes}}catch{return null}}function Z(t,e,n=F(t)){let r=Y(n)?.purposes?.[e];return!r||typeof r.alias!="string"||typeof r.dims!="number"||typeof r.fetchedAt!="number"?null:{alias:r.alias,dims:r.dims,fetchedAt:r.fetchedAt}}function q(t,e,n,s=F(t)){try{Re(Ce(s),{recursive:!0});let a=Y(s)?.purposes??{};a[e]={alias:n.alias,dims:n.dims,fetchedAt:Date.now()};let o={wrapperVersion:O,writtenByVersion:P,purposes:a},m=`${s}.tmp`;Ee(m,JSON.stringify(o,null,2)+`
|
|
3
|
-
`),$e(m,s)}catch(r){process.stderr.write(`[embed] Failed to save alias cache: ${r instanceof Error?r.message:String(r)}
|
|
4
|
-
`)}}function De(t){return t.TESTMUAI_ENV==="stage"?"stage":"prod"}function ee(t){let e=t.env??process.env,n=t.auth?.TESTMUAI_BASIC_AUTH||e.TESTMUAI_BASIC_AUTH;if(n)return{authorization:`Basic ${n}`};let s=t.auth?.TESTMUAI_API_KEY||e.TESTMUAI_API_KEY;return s?{authorization:`Bearer ${s}`}:{}}async function te(t,e={}){let n=e.env??process.env,s=De(n),r=e.aliasCacheFile??F(s),a=e.now??Date.now,o=Z(s,t,r);if(J(o,a()))return{alias:o.alias,dims:o.dims};let d=`${G(n)}/assurance/embed/alias?purpose=${encodeURIComponent(t)}`,f=await(e.fetchImpl??fetch)(d,{method:"GET",headers:ee(e)});if(!f.ok)throw new Error(`embed alias resolve failed: ${f.status}`);let c=await f.json();return q(s,t,{alias:c.alias,dims:c.dims},r),{alias:c.alias,dims:c.dims}}async function ne(t,e,n={}){let s=n.env??process.env,r=G(s),a=await(n.fetchImpl??fetch)(`${r}/assurance/embed`,{method:"POST",headers:{...ee(n),"content-type":"application/json"},body:JSON.stringify({purpose:t,input:e})});if(!a.ok)throw new Error(`embed failed: ${a.status}`);return await a.json()}import{randomBytes as nt}from"crypto";function re(t,e){let n=Math.min(t.length,e.length),s=0,r=0,a=0;for(let o=0;o<n;o++)s+=t[o]*e[o],r+=t[o]*t[o],a+=e[o]*e[o];return r===0||a===0?0:s/(Math.sqrt(r)*Math.sqrt(a))}function se(t,e,n){return n*t+(1-n)*e}var ie=.7;import{readFileSync as Fe,writeFileSync as Ne,renameSync as Le,mkdirSync as Ge}from"fs";import{dirname as Oe,join as oe}from"path";function Ve(t){return oe(t,"embeddings")}function Ie(t){let e=t.indexOf(":");return e>=0?t.slice(e+1):t}function ae(t,e,n){let s=Ie(n);return oe(Ve(t),e,s.slice(0,2),`${s.slice(2)}.f32`)}function ce(t,e,n){try{let s=Fe(ae(t,e,n)),r=new Float32Array(Math.floor(s.length/4));for(let a=0;a<r.length;a++)r[a]=s.readFloatLE(a*4);return r}catch{return null}}function le(t,e,n,s){try{let r=ae(t,e,n);Ge(Oe(r),{recursive:!0});let a=Buffer.alloc(s.length*4);for(let m=0;m<s.length;m++)a.writeFloatLE(s[m],m*4);let o=`${r}.tmp`;Ne(o,a),Le(o,r)}catch(r){process.stderr.write(`[embed] Failed to cache vector: ${r instanceof Error?r.message:String(r)}
|
|
5
|
-
`)}}var Pe=["get_node","get_edges","find_by_provenance","match_by_type","stale_nodes","search_similar"],Be=["source_read","source_grep"],Ue=[...Pe,...Be],fe=50,V=200,pe=10,ge=50,ue=20,je=200,He=50;function N(t,e,n){let s=typeof t=="number"&&Number.isFinite(t)?Math.floor(t):e;return Math.max(1,Math.min(s,n))}function $(t,e){let n=t[e];if(typeof n!="string"||n.length===0)throw new w(`param "${e}" must be a non-empty string`);return n}function E(t,e){let n=t[e];if(n==null)return null;if(typeof n!="string")throw new w(`param "${e}" must be a string when present`);return n}var w=class extends Error{};function I(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 de(t){return new Set(t.toLowerCase().replace(/[^\p{L}\p{N}]+/gu," ").split(" ").filter(Boolean))}function he(t,...e){let n=de(t);if(n.size===0)return 0;let s=t.trim().toLowerCase(),r=0;for(let a of e){let o=de(a);if(o.size===0)continue;let m=0;for(let c of n)o.has(c)&&m++;let d=n.size+o.size-m,f=d===0?0:m/d;s&&a.toLowerCase().includes(s)&&(f=Math.max(f,.9)),r=Math.max(r,f)}return r}function ze(t,e){let n=$(e,"cid"),s=E(e,"type"),r=E(e,"direction")??"both";if(!["out","in","both"].includes(r))throw new w('param "direction" must be out|in|both');let a=N(e.limit,fe,V),o=[];return(r==="out"||r==="both")&&o.push(...t.edgesFrom(n)),(r==="in"||r==="both")&&o.push(...t.edgesInto(n)),o.filter(m=>s==null||m.type===s).slice(0,a)}function Qe(t,e){let n=$(e,"source_id"),s=t.heads.get(n)??null,r=[];for(let a of t.nodeLabel.keys()){let o=t.derivesInto(a).filter(d=>d.props.source_id===n).map(d=>({source_cid:d.props.source_cid,anchor:d.props.anchor??null}));if(o.length===0)continue;let m=I(t,a);if(m&&(r.push({...m,pins:o,pinned_to_head:s!=null&&o.some(d=>d.source_cid===s)}),r.length>=V))break}return r}function Xe(t,e){let n=$(e,"label"),s=E(e,"trust"),r=E(e,"freshness"),a=N(e.limit,fe,V),o=[];for(let{cid:m}of t.byLabel(n)){let d=I(t,m);if(d&&!(s!=null&&d.trust!==s)&&!(r!=null&&d.freshness!==r)&&(o.push(d),o.length>=a))break}return o}function Ke(t){return t.staleList().map(({cid:e,state:n})=>{let s=t.getNode(e);return{cid:e,state:n,label:s?.label??null,title:s?.content.title??null}})}function We(t,e){let n=$(e,"text"),s=E(e,"label")??"usecase",r=N(e.k,pe,ge),a=[];for(let{cid:o,content:m}of t.byLabel(s)){let d=String(m.title??""),f=String(m.summary??""),c=he(n,d,f);c<=0||a.push({cid:o,title:d,summary:f,score:Math.round(c*1e3)/1e3,trust:t.trust.get(o)??null,freshness:t.stale(o)})}return a.sort((o,m)=>m.score-o.score||o.cid.localeCompare(m.cid)),a.slice(0,r)}function _e(t,e,n){let s=t.heads.get(n);if(typeof s!="string"){let o=[...t.heads.keys()].sort().join(", ");throw new w(`unknown source_id "${n}" \u2014 known: ${o||"(none)"}`)}if(t.mediaOf(s).format==="image")throw new w(`source "${n}" is an image \u2014 no line window (cite img#whole)`);let r=t.getNode(s)?.content?.blob,a=typeof r=="string"?X(e,r):null;if(a==null)throw new w(`source "${n}" blob is missing from the store`);return{head:s,lines:a.toString("utf8").replace(/\n$/,"").split(`
|
|
6
|
-
`)}}function Je(t,e,n){return t.slice(e-1,n).map((s,r)=>`${String(e+r).padStart(4,"0")}| ${s}`).join(`
|
|
7
|
-
`)}function Ye(t,e,n){let s=$(e,"source_id"),r=E(e,"anchor"),a=e.line_range;if(r!=null&&a!=null)throw new w("give anchor OR line_range, not both");let{head:o,lines:m}=_e(t,n,s),d=m.length,f,c;if(r!=null){let p=/^L(\d+)-L(\d+)$/.exec(r);if(!p)throw new w(`anchor "${r}" is not L<a>-L<b>`);let y=Number(p[1]),u=Number(p[2]);if(y<1||u<y||u>d)throw new w(`anchor "${r}" does not resolve (source has ${d} lines)`);f=Math.max(1,y-ue),c=Math.min(d,u+ue)}else if(a!=null){if(!Array.isArray(a)||a.length!==2||!a.every(u=>Number.isInteger(u)))throw new w('param "line_range" must be [from_line, to_line]');let[p,y]=a;if(p<1||y<p)throw new w('param "line_range" must be 1-based with from \u2264 to');if(p>d)throw new w(`line_range starts past the end (source has ${d} lines)`);f=p,c=Math.min(y,d)}else f=1,c=d;return c=Math.min(c,f+je-1),{window:Je(m,f,c),from_line:f,to_line:c,source_cid:o}}function Ze(t,e,n){let s=$(e,"pattern"),r=E(e,"source_id"),a;try{a=new RegExp(s,"u")}catch(f){throw new w(`invalid pattern: ${f instanceof Error?f.message:String(f)}`)}let o=r!=null?[r]:[...t.heads.keys()].sort(),m=[],d=!1;e:for(let f of o){if(r==null){let p=t.heads.get(f);if(typeof p!="string"||t.mediaOf(p).format==="image")continue}let{lines:c}=_e(t,n,f);for(let p=0;p<c.length;p++)if(a.test(c[p])){if(m.length>=He){d=!0;break e}m.push({source_id:f,line:p+1,text:c[p]})}}return{matches:m,truncated:d}}function qe(t,e,n,s){try{switch(e){case"get_node":return{ok:!0,result:I(t,$(n,"cid"))};case"get_edges":return{ok:!0,result:ze(t,n)};case"find_by_provenance":return{ok:!0,result:Qe(t,n)};case"match_by_type":return{ok:!0,result:Xe(t,n)};case"stale_nodes":return{ok:!0,result:Ke(t)};case"search_similar":return{ok:!0,result:We(t,n)};case"source_read":case"source_grep":{if(s==null)throw new w("source text unavailable (no context store)");return{ok:!0,result:(e==="source_read"?Ye:Ze)(t,n,s)}}default:return{ok:!1,error:`unknown method: ${e} \u2014 available: ${Ue.join(", ")}`}}}catch(r){return r instanceof w?{ok:!1,error:`${e}: ${r.message}`}:{ok:!1,error:`${e}: graph read failed: ${r instanceof Error?r.message:String(r)}`}}}var me="assurance.sim";function et(t){return[t.title,t.summary,t.description].filter(Boolean).join(`
|
|
8
|
-
`)}async function tt(t,e,n){let s=$(e,"text"),r=E(e,"label")??"usecase",a=N(e.k,pe,ge),o=[];for(let{cid:d,content:f}of t.byLabel(r)){if(t.superseded.has(d))continue;let c=String(f.title??""),p=String(f.summary??""),y=String(f.description??"");o.push({cid:d,title:c,summary:p,description:y,lex:he(s,c,p,y)})}let m=d=>{let f=[];for(let c of o){let p=d(c);p.score<=0||f.push({cid:c.cid,title:c.title,summary:c.summary,score:Math.round(p.score*1e3)/1e3,trust:t.trust.get(c.cid)??null,freshness:t.stale(c.cid),...p.dense!==void 0?{dense_score:Math.round(p.dense*1e3)/1e3,lexical_score:Math.round(c.lex*1e3)/1e3}:{}})}return f.sort((c,p)=>p.score-c.score||c.cid.localeCompare(p.cid)),f.slice(0,a)};try{let d=n.readVector??ce,f=n.writeVector??le,c=n.alpha??ie,{alias:p}=await n.resolveAlias(me),y=new Map,u=[],b=[];for(let h of o){let k=d(n.contextDir,p,h.cid);k?y.set(h.cid,k):(u.push(h.cid),b.push(et(h)))}let{vectors:v}=await n.embed(me,[s,...b]),A=Float32Array.from(v[0]);for(let h=0;h<u.length;h++){let k=Float32Array.from(v[h+1]);y.set(u[h],k),f(n.contextDir,p,u[h],k)}return m(h=>{let k=y.get(h.cid),x=k?re(A,k):0;return{score:se(x,h.lex,c),dense:x}})}catch{return m(d=>({score:d.lex}))}}async function ye(t,e,n,s){if(e==="search_similar"&&s)try{return{ok:!0,result:await tt(t,n,s)}}catch(r){return r instanceof w?{ok:!1,error:`${e}: ${r.message}`}:{ok:!1,error:`${e}: graph read failed: ${r instanceof Error?r.message:String(r)}`}}return qe(t,e,n,s?.contextDir)}var rt=2,we=10,st=2;function be(t,e,n){return t.map(s=>{let r=e.find(a=>a.id===s.id);return r&&r.selected_index!=null&&r.selected_index>=0&&r.selected_index<s.options.length?{id:s.id,resolution:"answered",selected_index:r.selected_index,free_text:null}: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 Tt(t,e,n,s,r=()=>{},a){let o=(i,l)=>r(i,l,t.session_id),m=(process.env.ASSURANCE_LOG_LEVEL??"info").toLowerCase()==="debug",d={contextDir:e.contextDir,resolveAlias:i=>te(i,{env:process.env,auth:e.auth}),embed:(i,l)=>ne(i,l,{env:process.env,auth:e.auth})},f=0,c=e.agent(t,{auth:e.auth,onWarn:i=>{o("warn",i),e.out(i)},onStderr:i=>o("agent_stderr",i)}),p=null,y=null,u;e.chat?.attachSender?.(i=>c.send(i)),e.initialMessage&&(c.send({type:"user_message",message_id:`msg-${t.session_id}-${nt(3).toString("hex")}`,text:e.initialMessage}),o("user_message_sent",{chars:e.initialMessage.length,...m?{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 b,v=0,A=0,h=0,k,x=K(),C=e.progress??e.out;try{for await(let i of c.events){try{e.chat?.onAgentEvent(i)}catch(l){o("chat_mirror_error",{event_type:i.type,message:l instanceof Error?l.message:String(l)})}if(i.type==="reasoning_delta"?(f+=i.text.length,process.env.KANE_TRACE_REASONING&&o("reasoning_delta",i.text)):o(i.type,i),i.type==="reasoning_done"&&o("reasoning_chars",f),i.type==="progress")C(`\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 l=x;if(x=W(x,i),x===l)continue;i.type==="reasoning_delta"?x.liveThinking===i.text&&C("\u2237 thinking\u2026"):i.type==="reasoning_done"?i.present&&(C(`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"&&(C(x.activity[x.activity.length-1].label),e.emit?.({type:"agent_activity",kind:"tool",label:x.activity[x.activity.length-1].label})):(C(`\xB7 ${x.activity[x.activity.length-1].label}`),e.emit?.({type:"agent_activity",kind:"decision",label:x.activity[x.activity.length-1].label}))}else if(i.type==="usage")k=i.total_credits,e.emit?.({type:"usage",credits:i.credits,total_credits:i.total_credits});else if(i.type==="graph_query"){let l=await ye(e.graphSlot?.current??s,i.method,i.params??{},d),S=l.ok?{type:"graph_result",id:i.id,ok:!0,result:l.result}:{type:"graph_result",id:i.id,ok:!1,error:l.error};o("graph_result",m?{id:i.id,method:i.method,ok:l.ok,result:l.ok?l.result:l.error}:{id:i.id,method:i.method,ok:l.ok}),c.send(S)}else if(i.type==="session_paused")u=i;else if(i.type==="ask_user"){i.text&&(e.chat?e.chat.ledger({kind:"agent",text:i.text}):e.out(i.text));let l=t.mode;if(l!=="interactive"){let g=i.questions.filter(_=>_.risk==="high");if(l==="ci"&&g.length>0){b=g,c.kill();break}if(l==="agent"&&g.length>0){o("pause_requested",{high:g.map(_=>_.id)}),c.send({type:"pause"});continue}let R=be(i.questions,[],{explicitAcceptDefaults:!0});v+=R.length;for(let _ of R)o("assumed_default",{id:_.id,resolution:_.resolution}),e.emit?.({type:"assumed_default",id:_.id,selected_index:_.selected_index,risk:i.questions.find(M=>M.id===_.id)?.risk});let T={type:"user_response",answers:R.map(_=>({id:_.id,selected_index:_.resolution==="deferred"?null:_.selected_index,free_text:null}))};c.send(T);continue}let S=await e.ask(i.questions),xe=be(i.questions,S,{explicitAcceptDefaults:!1}),ke={type:"user_response",answers:i.questions.map(g=>{let R=S.find(_=>_.id===g.id);if(R?.free_text!=null){let _=n.get(g.id)??0;if(!g.allow_free_text||_>=rt){let M=g.options[g.recommended_index]?.label??"recommended option";if(v+=1,e.emit?.({type:"assumed_default",id:g.id,selected_index:g.recommended_index,risk:g.risk}),e.chat?.noteCoercion)e.chat.noteCoercion(g,M);else{let L=g.text.replace(/\?+\s*$/,""),Ae=L.length<=36?L:`${L.slice(0,33)}\u2026`;e.out(`note: couldn't use a typed answer for "${Ae}" \u2014 kept the recommended option (${M})`)}return{id:g.id,selected_index:g.recommended_index,free_text:null}}return n.set(g.id,_+1),{id:g.id,selected_index:null,free_text:R.free_text}}let T=xe.find(_=>_.id===g.id);return T.resolution==="deferred"?{id:g.id,selected_index:null,free_text:null}:{id:g.id,selected_index:T.selected_index,free_text:null}})};c.send(ke)}else if(i.type==="chat_ops"&&!e.chat){let l=i.chat_ops??i,S=Array.isArray(l.ops)?l.ops.length:0;if(S===0)l.text&&e.out(l.text),c.send({type:"session_complete"}),o("headless_zero_op_chat_turn_complete",{chars:l.text?.length??0});else if(h<st)h+=1,c.send({type:"user_message",message_id:`nochat-${t.session_id}-${h}`,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:h,ops:S});else{y="agent kept sending chat ops in a mode with no chat plane",e.out("error: agent kept sending chat ops in a mode with no chat plane \u2014 closing the session"),o("headless_chat_ops_terminal",{ops:S}),c.kill();break}}else if(i.type===(a.terminalEventType??"proposal")){let l=await a.onProposalEvent(i[i.type]);if(p=l.proposal,l.error&&(y=l.error),l.receipt)e.emit?.(l.receipt.event),t.mode!=="interactive"?(A+=1,l.sessionComplete||A>=we?(l.sessionComplete||(e.out(`warning: ${we} commits without completion \u2014 closing the session (runaway guard)`),o("receipt_runaway_cap",{commits:A})),c.send({type:"session_complete"}),o("session_complete_sent",{commit_n:l.receipt.event.commit_n,runaway:!l.sessionComplete})):(c.send({type:"user_message",message_id:`receipt-${t.session_id}-${String(l.receipt.event.commit_n??0)}`,text:l.receipt.text}),o("receipt_sent",{commit_n:l.receipt.event.commit_n,chars:l.receipt.text.length}))):e.chat?.holdReceipt&&(e.chat.holdReceipt(l.receipt.text),o("receipt_held",{commit_n:l.receipt.event.commit_n}));else if(l.error&&t.mode!=="interactive"){e.out("error: commit failed with no repair channel \u2014 closing the session"),o("headless_commit_error_terminal",{error:l.error}),c.kill();break}}else if(i.type==="error"){y=i.message;let l=i.failed_proposal;l&&o("failed_proposal",l)}}}finally{c.kill()}return{proposal:p,error:y,paused:u,highRisk:b,...v>0?{assumedDefaults:v}:{},...k!==void 0?{creditsTotal:k}:{}}}var it=3,ot={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 ve(t){let{contextDir:e,graph:n,watermark:s,by:r}=t,{signals:a}=D(e,s),o=a.filter(u=>u.event_id===void 0||n.appliedEvents.has(u.event_id)),m=new Map;for(let u of o){let b=u.event_id??`${u.ts}|${u.id}|${u.verdict}|${u.polarity}`;m.has(`${b}|${u.polarity}|${u.verdict}`)||m.set(`${b}|${u.polarity}|${u.verdict}`,u)}let d=[...m.values()].sort((u,b)=>(u.event_id??u.ts)<(b.event_id??b.ts)?-1:1),f=new Map;for(let u of d){let b=`${u.verdict}|${u.tag??""}`,v=f.get(b)??{verdict:u.verdict,tag:u.tag,events:new Set};v.events.add(u.event_id??u.ts),f.set(b,v)}let c=[],p=0;for(let[,u]of[...f.entries()].sort(([b],[v])=>b<v?-1:1)){if(u.events.size<it)continue;let v={derived:!0,statement:`${u.verdict}${u.tag?`/${u.tag}`:""} recurs (${u.events.size} distinct events) \u2014 bias future proposals ${u.verdict==="approve"?"toward":"away from"} this pattern`,learned_from_kind:ot[u.verdict]??"usage",learned_from:[...u.events].sort()},A=j("stylenote",v);if(A.length>0)return{record:null,errors:A.map(k=>({code:k.code,detail:k.detail})),minted:0};let h=H("stylenote",v);n.hasNode(h)||(c.push({cid:h,label:U.STYLENOTE,content:v}),p+=1)}return c.length===0?{record:null,errors:null,minted:0}:{record:z(e,{ts:new Date().toISOString(),proposal_id:null,nodes:c,edges:[],review:[],supersessions:[],source_head_moves:{}},{expectPrev:n.latestHash}).record,errors:null,minted:p}}var at={kind:"system",id:"distiller"};function Pt(t,e=n=>process.stderr.write(n+`
|
|
9
|
-
`)){try{let n=Q(t),{watermark:s}=D(t),r=ve({contextDir:t,graph:n,watermark:s,by:at});if(r.errors){let a=r.errors.map(o=>`${o.code}: ${o.detail}`).join("; ");return e(`warning: style-note distill skipped \u2014 ${a}`),{minted:0,error:a}}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{lt as a,ye as b,te as c,ne as d,rt as e,be as f,Tt as g,Pt as h};
|
package/dist/chunk-KYHXDJN4.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{existsSync as l}from"fs";import{dirname as f,resolve as i}from"path";import{fileURLToPath as d}from"url";var g=f(d(import.meta.url));function p(){return[i(g,".."),i(g,"../../..")]}function A(o){return{"darwin-arm64":"kane-cli-darwin-arm64","darwin-x64":"kane-cli-darwin-x64","linux-x64":"kane-cli-linux-x64","linux-arm64":"kane-cli-linux-arm64","win32-x64":"kane-cli-win-x64"}[o]??null}function h(){let o=A(`${process.platform}-${process.arch}`),n=process.platform==="win32"?"assurance-agent.exe":"assurance-agent";for(let r of p()){for(let s of o?["@testmuai","@lambdatestincprivate"]:[]){let e=i(r,"node_modules",s,o,"bin",n);if(l(e))return{cmd:e,args:[]}}let a=i(r,"../assurance-agent/dist",n);if(l(a))return{cmd:a,args:[]};let t=i(r,"../assurance-agent/main.py");if(l(t)){let s=i(r,"../assurance-agent/.venv/bin/python");return{cmd:l(s)?s:"python3",args:[t]}}}return null}function w(o,n={}){return{...process.env,...n,TESTMUAI_SOURCE:"kane-cli",TESTMUAI_SESSION_ID:o,ASSURANCE_LOG_LEVEL:process.env.ASSURANCE_LOG_LEVEL??"info"}}async function x(){if(process.env.TESTMUAI_API_KEY||process.env.TESTMUAI_BASIC_AUTH)return{};try{let{CredentialsManager:o}=await import("./credentials-BJCIWQWA.js"),n=process.env.TESTMUAI_ENV==="stage"?"stage":"prod",r=new o,a=r.getActiveProfile()??"default",t={TESTMUAI_ENV:n},s=r.loadBasicAuth(a,n);if(s)return t.TESTMUAI_BASIC_AUTH=Buffer.from(`${s.username}:${s.access_key}`,"utf8").toString("base64"),t;let e=r.loadCredentials(a,n);if(e){try{let{refreshOAuthToken:u}=await import("./token-refresh-CFVOA62N.js");await u({creds:r,profile:a,env:n,credentials:e})}catch{}let c=r.loadCredentials(a,n)??e;if(typeof c.access_token=="string"){let u=await E(n,c.access_token);return u?(t.TESTMUAI_BASIC_AUTH=u,t):(t.TESTMUAI_API_KEY=c.access_token,t)}}return{}}catch{return{}}}var _=8e3;function m(){return process.stderr.write("warn: session auth may expire during long runs \u2014 if that happens, run `kane-cli login` and retry\n"),null}async function E(o,n){if(process.env.TESTMUAI_BASE_URL)return null;try{let[{getEnvironment:r},{ControllerClient:a}]=await Promise.all([import("./config-6PAZZ7CR.js"),import("./controller-client-RD2YEMAH.js")]),t=new a(r(o).controllerBaseUrl,n),s;try{let e=await Promise.race([t.getTmsCredentials().catch(()=>null),new Promise(c=>{s=setTimeout(()=>c(null),_)})]);return typeof e?.username!="string"||!e.username||typeof e.access_key!="string"||!e.access_key?m():Buffer.from(`${e.username}:${e.access_key}`,"utf8").toString("base64")}finally{clearTimeout(s)}}catch{return m()}}export{A as a,h as b,w as c,x as d};
|
package/dist/chunk-LURGFJEE.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as c,c as p}from"./chunk-KYHXDJN4.js";import{spawn as m}from"child_process";var y=new Set(["progress","ask_user","graph_query","proposal","design","error","done","reasoning_delta","reasoning_done","tool_activity","decision_activity","text_delta","usage","receipt","chat_ops","session_paused","session_complete"]);function S(d,s={}){let a=s.spawnCmd!==void 0?s.spawnCmd:c();if(!a)throw new Error("assurance agent not found \u2014 your platform package may be missing; reinstall kane-cli (npm i -g @testmuai/kane-cli)");let n=m(a.cmd,a.args,{stdio:["pipe","pipe","pipe"],env:p(d.session_id,s.auth)});if(n.stdin.write(JSON.stringify(d)+`
|
|
3
|
-
`),s.onStderr){let e="";n.stderr.on("data",r=>{e+=r.toString("utf8");let i;for(;(i=e.indexOf(`
|
|
4
|
-
`))>=0;){let o=e.slice(0,i);e=e.slice(i+1),o.trim()&&s.onStderr(o)}})}let g=new Promise(e=>{n.on("exit",(r,i)=>e({code:r,signal:i}))});async function*f(){let e="",r=!1;for await(let i of n.stdout){e+=i.toString("utf8");let o;for(;(o=e.indexOf(`
|
|
5
|
-
`))>=0;){let l=e.slice(0,o).trim();if(e=e.slice(o+1),!l)continue;let u;try{u=JSON.parse(l)}catch{s.onWarn?.(`agent: skipping malformed line: ${l.slice(0,120)}`);continue}let t=u;if(!t||typeof t!="object"||!y.has(t.type)){s.onWarn?.(`agent: skipping unknown event type "${t&&typeof t=="object"?String(t.type??"?"):"?"}"`);continue}if(yield t,t.type==="done"){r=!0;break}}if(r)break}await g.catch(()=>{})}return{events:f(),send:e=>{n.stdin&&!n.stdin.destroyed&&n.stdin.write(JSON.stringify(e)+`
|
|
6
|
-
`)},kill:()=>{n.kill("SIGTERM")},exited:g}}export{S as a};
|
package/dist/chunk-MCQXRJGH.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as L,b as N}from"./chunk-74RUSHIB.js";import{c as G}from"./chunk-ZG2V2ODK.js";import{e as _,g as v}from"./chunk-5YPBPZUR.js";import{existsSync as k,readFileSync as q}from"fs";function J(a){let s=N(a),u=new Map(Object.entries(s.heads)),d=new Map(Object.entries(s.trust)),r=new Map(Object.entries(s.nodeLabel)),i=new Map(Object.entries(s.superseded)),g=new Map(Object.entries(s.names)),R=new Map(Object.entries(s.archivedReason)),I=new Set(s.appliedEvents),S=new Map(Object.entries(s.conv)),T=e=>s.media[e]??{format:"text",media_type:"text/plain",anchors_supported:["L-L"]},M=new Map;for(let[e,t]of g)M.set(t,e);let h=new Map,E=e=>{if(h.has(e))return h.get(e);if(!r.has(e))return h.set(e,null),null;let t=L(a,e);if(!k(t))throw new G(`derived node file missing for ${e} \u2014 run kane-cli context rebuild`);let n=JSON.parse(q(t,"utf8"));return h.set(e,n),n},m=e=>{let t=e,n=new Set;for(;i.has(t)&&!n.has(t);){n.add(t);let o=i.get(t);if(typeof o!="string")break;t=o}return t},x=e=>{let t=u.get(e),n=r.has(e)?e:g.get(e)??(typeof t=="string"?t:void 0);if(n===void 0||!r.has(n))return null;let o=m(n);return{cid:n,tip:o,superseded:i.has(n)||i.has(o)}},b=new Map;for(let e of Object.values(s.forward))for(let t of e){let n=b.get(t.dst);n?n.push(t):b.set(t.dst,[t])}let w=e=>(e??[]).filter(t=>!i.has(t.ecid)),C=e=>w(b.get(e)),O=e=>C(e).filter(t=>t.type===_.DERIVES),y=e=>w(s.forward[e]).some(t=>v(t.type)?.pin?.comparesTo==="dst_tip"&&i.has(t.dst)),F=e=>{if(i.has(e))return"superseded";let t=O(e);if(t.length===0)return y(e)?"stale":"fresh";let n=new Map;for(let p of t)n.set(p.props.source_id,p);let o=!1,f=!1;for(let[p,c]of n){let l=u.get(p);if(l!=null&&(o=!0,l!==c.props.source_cid)){let j=S.get(p)?.chain;(!j||!j.includes(c.props.source_cid))&&(f=!0)}}return o?f||y(e)?"stale":"fresh":"orphaned"};return{heads:u,trust:d,nodeLabel:r,superseded:i,names:g,nameOf:M,archivedReason:R,appliedEvents:I,convChains:S,mediaOf:T,extractedSourceCids:new Set(s.extracted),designOf:new Map(Object.entries(s.design_of??{})),latestHash:s.applied.hash,lastSeq:s.applied.seq,hasNode:e=>r.has(e),getNode:E,byLabel:e=>[...r.entries()].filter(([,t])=>t===e).map(([t])=>({cid:t,content:E(t)?.content??{}})),edgesFrom:e=>w(s.forward[e]),edgesInto:C,derivesInto:O,resolve:x,tipOf:m,stale:F,staleList:()=>[...r.keys()].map(e=>({cid:e,state:F(e)})).filter(e=>e.state!=="fresh"),execHistory:e=>{let t=x(e);if(!t)return[];let n=m(t.cid),o=new Set([n]),f=!0;for(;f;){f=!1;for(let[c,l]of i)l!==null&&o.has(l)&&!o.has(c)&&(o.add(c),f=!0)}let p=[];for(let c of Object.entries(s.exec??{}))o.has(c[0])&&p.push(...c[1]);return p.sort((c,l)=>c.started_at<l.started_at?-1:1)}}}function V(a,s){if(a.stale(s)!=="stale")return!1;let u=new Map;for(let d of a.derivesInto(s))u.set(d.props.source_id,d);for(let[d,r]of u){let i=a.heads.get(d);if(i==null||i===r.props.source_cid)continue;let g=a.convChains.get(d)?.chain;if(!g||!g.includes(r.props.source_cid))return!0}for(let d of a.edgesFrom(s)){if(v(d.type)?.pin?.comparesTo!=="dst_tip"||!a.superseded.has(d.dst))continue;let r=a.tipOf(d.dst);if(a.superseded.has(r)||a.nodeLabel.get(r)==="usecase")return!0}return!1}export{J as a,V as b};
|
package/dist/chunk-OFEOWKM3.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as b}from"./chunk-3Z3UIW5H.js";import{y as l}from"./chunk-6SGPN76K.js";import{a as f}from"./chunk-HCBYKLMW.js";import{a as m,b as s}from"./chunk-C44QQJR4.js";import{e as p}from"./chunk-UR6MHSHU.js";var u=p(f(),1),T=5;function _({thinking:t,expanded:e,thinkingDone:o,maxLines:i=T}){if(!e)return(0,u.jsxs)(m,{paddingX:1,children:[(0,u.jsx)(s,{color:l.dim,children:o?"\u2237 thinking complete ":"\u2237 thinking\u2026 "}),(0,u.jsx)(s,{color:l.muted,children:o?"(ctrl+t to view)":"(ctrl+t to show)"})]});let g=t.split(`
|
|
3
|
-
`),n=Math.max(0,g.length-i),a=n>0?g.slice(-i).join(`
|
|
4
|
-
`):t;return(0,u.jsxs)(b,{variant:"default",paddingX:1,children:[n>0&&(0,u.jsxs)(s,{color:l.muted,children:["\u22EE (",n," earlier line",n===1?"":"s"," hidden)"]}),(0,u.jsx)(s,{color:l.dim,children:a}),o&&(0,u.jsx)(s,{color:l.muted,children:"\u2014 thinking complete"})]})}function k(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,`
|
|
5
|
-
`),e}var c=p(f(),1),B=t=>t!==void 0&&/[A-Za-z0-9]/.test(t);function x(t){let e=[],o="",i=()=>{o&&(e.push({text:o}),o="")},g=(a,d,r)=>(a===0||!B(t[a-1]))&&(d+r>=t.length||!B(t[d+r])),n=0;for(;n<t.length;){let a=t.slice(n,n+2),d=t[n];if(a==="**"||a==="__"){let r=t.indexOf(a,n+2);if(r!==-1&&r>n+2&&(a==="**"||g(n,r,2))){i(),e.push({text:t.slice(n+2,r),bold:!0}),n=r+2;continue}}if(d==="`"){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(d==="*"||d==="_"){let r=t.indexOf(d,n+1);if(r!==-1&&r>n+1&&(d==="*"||g(n,r,1))){i(),e.push({text:t.slice(n+1,r),italic:!0}),n=r+1;continue}}o+=d,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?l.dim:void 0,children:e.text},o))}function S(t){return t.split(`
|
|
6
|
-
`).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 g=e.match(/^#{1,6}\s+(.*)$/);return g?{kind:"heading",segs:x(g[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 E({text:t}){let e=S(k(t));return(0,c.jsxs)(m,{marginBottom:1,children:[(0,c.jsx)(s,{color:l.generateAccent,children:"\u2503 "}),(0,c.jsx)(m,{flexDirection:"column",children:e.map((o,i)=>R(o,i))})]})}export{E as a,_ as b};
|
package/dist/chunk-QPZRHAYK.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
function l(e,n){let r=/^L(\d+)-L(\d+)$/.exec(n);if(!r)return null;let t=parseInt(r[1],10),o=parseInt(r[2],10),i=e.split(`
|
|
3
|
-
`);return t<1||o<t||o>i.length?null:i.slice(t-1,o).map(a=>a.replace(/^\d+\| /,"")).join(`
|
|
4
|
-
`)}function s(e,n,r){if(e.format==="image")return n.anchor==="img#whole"?[]:[{code:"CITE_ANCHOR_INVALID",detail:`image cites are anchor-only (img#whole), got ${n.anchor}`}];if(!n.anchor||n.quote===void 0||n.quote==="")return[{code:"MISSING_CITE",detail:"text-kind cites need anchor+quote"}];let t=r!==null?l(r,n.anchor):null;return t===null?[{code:"BAD_ANCHOR",detail:`anchor ${n.anchor} does not resolve in the source`}]:t.includes(n.quote)?[]:[{code:"QUOTE_MISMATCH",detail:`quote is not verbatim within ${n.anchor}`}]}export{l as a,s as b};
|
package/dist/chunk-RE3BZVGE.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as u}from"./chunk-6PS65QFF.js";function g(t,e){return t.byLabel(e).filter(({cid:n})=>!t.superseded.has(n)&&t.trust.get(n)!=="archived")}function v(t,e,n){for(let[o,c]of t.names)if(c===e&&!t.superseded.has(c))return o;return String(n.title??n.text??e)}function f(t,e){let n=g(t,"scenario");if(e){let i=t.resolve(e);if(i){let s=new Set([i.cid,i.tip,t.tipOf(i.cid)]);n=n.filter(({cid:a})=>t.edgesFrom(a).some(m=>m.type==="belongs_to"&&(s.has(m.dst)||s.has(t.tipOf(m.dst)))))}}let o=new Set;for(let{cid:i}of n)o.add(i),o.add(t.tipOf(i));let c=g(t,"test").filter(({cid:i})=>!e||t.edgesFrom(i).some(s=>s.type==="automates"&&(o.has(s.dst)||o.has(t.tipOf(s.dst))))),r=new Set;for(let i of c)for(let s of t.edgesFrom(i.cid))s.type==="automates"&&r.add(t.tipOf(s.dst));let l=n.filter(({cid:i})=>!r.has(i)&&!r.has(t.tipOf(i))).map(({cid:i,content:s})=>v(t,i,s));return{live_scenarios:n.length,live_tests:c.length,missing:l}}function d(t){return t.length<=12?t.join(", "):`${t.slice(0,12).join(", ")} +${t.length-12} more`}function k(t,e){let n=t.committed.length===0?"committed: nothing new":`committed: ${d(t.committed.map(a=>a.temp_ref?`${a.temp_ref} \u2192 ${a.logical_id??a.cid}`:a.logical_id??a.cid))}`,o=[];t.reused&&o.push(`reused: ${t.reused}`),t.rejected?.length&&o.push(`rejected: ${d(t.rejected.map(a=>`${a.ref} (${a.reason})`))}`),t.warnings?.length&&o.push(`warnings: ${d(t.warnings)}`);let c=[`RECEIPT (commit ${t.commitN}, ${t.phase})`,n,...o],r,l;if(t.verb==="design")r=f(e,t.ucRef),c.push(`parity: ${r.live_scenarios} scenario(s) live \xB7 ${r.live_tests} test(s) live`+(r.missing.length?` \xB7 missing tests: ${d(r.missing)}`:"")),l=r.missing.length>0?`next: emit tests for the ${r.missing.length} scenario(s) listed \u2014 1:1, strict. Never re-emit committed items; reference them by the ids above.`:"next: every live scenario has a test. Address open gaps, or finish.";else{let a=g(e,"usecase").length;c.push(`parity: ${a} use-case(s) live`),l="next: refine via chat ops using the ids above. Never re-emit committed items."}c.push(l);let i=c.join(`
|
|
3
|
-
`);for(;Buffer.byteLength(i,"utf8")>6e3;)i=i.slice(0,Math.floor(i.length*.9))+"\u2026";let s={type:"receipt",verb:t.verb,commit_n:t.commitN,phase:t.phase,committed:t.committed,reused:t.reused??0,rejected:t.rejected??[],warnings:t.warnings??[],...r?{parity:{live_scenarios:r.live_scenarios,live_tests:r.live_tests,missing:r.missing}}:{},next:l};return{text:i,event:s}}function A(){return{currentAttempt:null,liveThinking:"",thinkingLog:[],activity:[]}}var p={dedup_candidate:"checking a possible duplicate",ambiguity:"asking to resolve an ambiguity",validation_repair:"repairing a validation failure",finalize:"finalizing the proposal",terminal_call:"putting the result together",validation_failed:"fixing a validation issue",no_tool_calls:"nudging a stalled turn",evidence_readback:"reading the evidence back",evidence_search:"searching the evidence",provenance_check:"checking provenance"};function h(t){return p[t.reason_code]??t.reason_code.replace(/_/g," ")}function _(t){let e=u({name:t.name});return t.status==="started"?`\u2192 ${e}\u2026`:t.status==="error"||t.status==="aborted"?`\u2717 ${e}`:`\u2713 ${e}`}function y(t,e){return e.turn_id!==t.turn_id?e.turn_id<t.turn_id:e.attempt<t.attempt}function x(t,e){let n=t.currentAttempt;if(n===null||n.turn_id!==e.turn_id||n.attempt!==e.attempt){if(n!==null&&y(n,e))return t;t={...t,currentAttempt:{turn_id:e.turn_id,attempt:e.attempt},liveThinking:""}}switch(e.type){case"reasoning_delta":return{...t,liveThinking:t.liveThinking+e.text};case"reasoning_done":return e.present?{...t,thinkingLog:[...t.thinkingLog,{text:t.liveThinking,tookMs:e.took_ms}],liveThinking:""}:{...t,liveThinking:""};case"tool_activity":return{...t,activity:[...t.activity,{name:e.name,status:e.status,label:_(e)}]};case"decision_activity":return{...t,activity:[...t.activity,{name:e.action,status:"decision",label:h(e)}]}}}export{k as a,A as b,h as c,x as d};
|