@testmuai/kane-cli 0.6.4 → 0.6.7
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/bin/kane-cli.cjs +91 -0
- package/bin/resolve-runtime.cjs +45 -0
- package/dist/{ChatSurface-VXYU6KFW.js → ChatSurface-Y2M6HB2R.js} +1 -1
- package/dist/{ChromeProfilePicker-QWTM7DK6.js → ChromeProfilePicker-IW3K43VC.js} +1 -1
- package/dist/{CliFeedbackPrompt-6NVWMONO.js → CliFeedbackPrompt-ZJ4LZGPK.js} +1 -1
- package/dist/{CliUploadProgress-2YRQLECI.js → CliUploadProgress-SMPVN7Q6.js} +1 -1
- package/dist/{ConfigView-I4R5M7BO.js → ConfigView-RTAGKZH4.js} +1 -1
- package/dist/EvidenceViewOffer-LHPIZUGQ.js +2 -0
- package/dist/{FolderPicker-5VWBYTAK.js → FolderPicker-QUY7LNVZ.js} +1 -1
- package/dist/{HelpView-OJZW4XWX.js → HelpView-47J2NZWJ.js} +1 -1
- package/dist/{InfoBox-TGELGCBR.js → InfoBox-G63WZAMH.js} +1 -1
- package/dist/{LinksBox-B5EBRY26.js → LinksBox-2HIHDT5K.js} +1 -1
- package/dist/{ProfilesView-3SJRIBHQ.js → ProfilesView-TUXQXPXJ.js} +1 -1
- package/dist/{ProjectPicker-72HKMBEY.js → ProjectPicker-VUABWG2P.js} +1 -1
- package/dist/{SaveSessionPrompt-CK5SGNRO.js → SaveSessionPrompt-PNVGNLGO.js} +1 -1
- package/dist/SingleShotApp-BZV5CULT.js +2 -0
- package/dist/{SummaryBox-ABB7ST26.js → SummaryBox-36MDDDYQ.js} +1 -1
- package/dist/TestMdRunView-A655PMEY.js +2 -0
- package/dist/{WhoamiView-OF354UGC.js → WhoamiView-LHU6RGIY.js} +1 -1
- package/dist/{bind-BWILBZGR.js → bind-E67W2DXG.js} +2 -2
- package/dist/{bridge-LNDJS3HH.js → bridge-WVFTWHKP.js} +1 -1
- package/dist/{changelog-BWCEZQ23.js → changelog-D4Y5QJIZ.js} +1 -1
- package/dist/chat-committer-WOTCC7L3.js +2 -0
- package/dist/chat-controller-MONWZKS7.js +4 -0
- package/dist/{chunk-YI4XULHR.js → chunk-3CY3DZDH.js} +15 -15
- package/dist/{chunk-IOTJZTHX.js → chunk-3GOZ7R4G.js} +12 -12
- package/dist/{chunk-DNOBOZPO.js → chunk-3NR6OTHL.js} +1 -1
- package/dist/{chunk-MK2G7VIF.js → chunk-5J3HQZNU.js} +1 -1
- package/dist/{chunk-ADOXYGZE.js → chunk-6EC54ZHT.js} +1 -1
- package/dist/{chunk-CLTANA4L.js → chunk-77PBBYRZ.js} +2 -2
- package/dist/{chunk-GYW7LVVL.js → chunk-7Z64BL5D.js} +1 -1
- package/dist/{chunk-5CTMOJG4.js → chunk-7ZMYAXES.js} +1 -1
- package/dist/{chunk-WFEGGQJ4.js → chunk-A2AZQ4PQ.js} +1 -1
- package/dist/{chunk-HNE4TDOZ.js → chunk-AASBJJCU.js} +4 -4
- package/dist/{chunk-5KSB5MOF.js → chunk-BBZBXSTP.js} +1 -1
- package/dist/chunk-CIFVUX3B.js +4 -0
- package/dist/chunk-CVOGP253.js +2 -0
- package/dist/{chunk-O66EU5UV.js → chunk-DCWCANNS.js} +1 -1
- package/dist/{chunk-4MUHS3UL.js → chunk-DL5CXC64.js} +1 -1
- package/dist/chunk-DNNZ353O.js +4 -0
- package/dist/chunk-E4EHWO3J.js +4 -0
- package/dist/{chunk-AXABTFCD.js → chunk-EDM6YACR.js} +1 -1
- package/dist/{chunk-YMSN25DX.js → chunk-FYSWQ4K7.js} +1 -1
- package/dist/{chunk-QZI43UNV.js → chunk-G5CYSC23.js} +1 -1
- package/dist/chunk-GAD6IBZ6.js +12 -0
- package/dist/chunk-GLS46X7N.js +5 -0
- package/dist/chunk-GLVDOR5G.js +2 -0
- package/dist/chunk-I37UOX73.js +14 -0
- package/dist/chunk-IAHKTEET.js +2 -0
- package/dist/{chunk-IXVR66NS.js → chunk-IX34JIXK.js} +1 -1
- package/dist/{chunk-BNN6ZDJW.js → chunk-IYTHPCQ2.js} +1 -1
- package/dist/chunk-JR37W7IJ.js +6 -0
- package/dist/{chunk-IRRGSC7B.js → chunk-KVAALPTA.js} +1 -1
- package/dist/{chunk-ZZLR3O5A.js → chunk-L4JIMNKW.js} +1 -1
- package/dist/{chunk-WT3SMSY5.js → chunk-LVWB6TB2.js} +1 -1
- package/dist/chunk-MBXWXBDM.js +4 -0
- package/dist/{chunk-UZSG54OY.js → chunk-MTG2LRGV.js} +1 -1
- package/dist/chunk-NEHF4C6X.js +7 -0
- package/dist/chunk-NMKZHHB6.js +2 -0
- package/dist/{chunk-DXK55KGR.js → chunk-NMZATEKQ.js} +8 -8
- package/dist/{chunk-2PQXEEVY.js → chunk-NVGBE2DR.js} +1 -1
- package/dist/{chunk-ANIVHX3P.js → chunk-OPDJD7WS.js} +2 -2
- package/dist/{chunk-6GTOYTCQ.js → chunk-OSALXGD4.js} +1 -1
- package/dist/{chunk-ZQP3MCZW.js → chunk-QG6LJCZG.js} +1 -1
- package/dist/{chunk-MCQXRJGH.js → chunk-QHFUDBQH.js} +1 -1
- package/dist/{chunk-MVF4KRHA.js → chunk-QVJ7C4GW.js} +1 -1
- package/dist/{chunk-W36P7S5W.js → chunk-QYTMD6NM.js} +1 -1
- package/dist/{chunk-OB6CKLEL.js → chunk-R7NNIQMH.js} +1 -1
- package/dist/{chunk-652FEDL4.js → chunk-RBLZUDMZ.js} +2 -2
- package/dist/chunk-RGDQMKNJ.js +4 -0
- package/dist/{chunk-XUJ5EPVW.js → chunk-RGQIBS32.js} +1 -1
- package/dist/{chunk-FV4LLU3T.js → chunk-RWIHSR4H.js} +1 -1
- package/dist/{chunk-I2JUBAPU.js → chunk-SK2GVMTJ.js} +1 -1
- package/dist/{chunk-POI6DCP6.js → chunk-TADJIOHV.js} +1 -1
- package/dist/{chunk-PYB2EXRE.js → chunk-TSWGQKUK.js} +2 -2
- package/dist/{chunk-64QURIT6.js → chunk-TTJ4XMWP.js} +1 -1
- package/dist/{chunk-WE57PD6K.js → chunk-UQVKNUYO.js} +1 -1
- package/dist/chunk-UZWOHCFX.js +4 -0
- package/dist/chunk-VLC24QVT.js +2 -0
- package/dist/{chunk-2K4XOHVK.js → chunk-WFQUDSKY.js} +1 -1
- package/dist/{chunk-3WJJ43MT.js → chunk-WJG4ZPUH.js} +1 -1
- package/dist/{chunk-STH6I3UB.js → chunk-X47VFBIV.js} +1 -1
- package/dist/{chunk-PICCLJSO.js → chunk-XUHVQ5VL.js} +1 -1
- package/dist/{chunk-3HEPW6SN.js → chunk-Y6HPW2OQ.js} +1 -1
- package/dist/{chunk-BYUARJE7.js → chunk-YB54MHKU.js} +1 -1
- package/dist/{chunk-CY5NDMO7.js → chunk-YTZUYCFZ.js} +1 -1
- package/dist/{chunk-QNNBNIR7.js → chunk-YZBLBPOE.js} +2 -2
- package/dist/{chunk-BOO7YXAV.js → chunk-Z34XRBKQ.js} +1 -1
- package/dist/{chunk-FJTWJ243.js → chunk-ZPDM6FO7.js} +1 -1
- package/dist/{config-OJF53CHL.js → config-BZ7C5NU5.js} +1 -1
- package/dist/cover-cmd-DN5D6A3S.js +2 -0
- package/dist/{credentials-NLJHSVBY.js → credentials-BPJL6YIZ.js} +1 -1
- package/dist/{descriptor-EHK3DRCZ.js → descriptor-KXDJ4XYD.js} +1 -1
- package/dist/evidence-E5B24ZO6.js +2 -0
- package/dist/evolve-cmd-V7H4PLCX.js +2 -0
- package/dist/explain-VTRHEVUQ.js +2 -0
- package/dist/{explain-cmd-U367SD4N.js → explain-cmd-AG6ZDXV6.js} +1 -1
- package/dist/{explain-cmd-KV5YUXKB.js → explain-cmd-NZPC6537.js} +1 -1
- package/dist/{extract-bind-SSTKQGTV.js → extract-bind-3QBBCWYE.js} +2 -2
- package/dist/{extract-cmd-GO4UV7ER.js → extract-cmd-4PGUDJMU.js} +1 -1
- package/dist/gaps-cmd-42LPHWFP.js +2 -0
- package/dist/{generate-headless-2HYMSVN5.js → generate-headless-NZUDYIKJ.js} +2 -2
- package/dist/index.js +12 -12
- package/dist/ingest-GOKIMEP4.js +2 -0
- package/dist/ingest-cmd-BTYHVJ33.js +3 -0
- package/dist/{interactive-bind-Q5TQFQ6N.js → interactive-bind-TKRWAPJU.js} +3 -3
- package/dist/lifecycle-cmd-E6AXODQD.js +2 -0
- package/dist/list-cmd-RJVLH2GR.js +3 -0
- package/dist/{list-commands-6WDXAECV.js → list-commands-55RCFEOL.js} +1 -1
- package/dist/logical-ids-QZQRQ3TV.js +2 -0
- package/dist/login-flow-WNIHDQXF.js +2 -0
- package/dist/maintenance-cmd-UJG4LPWD.js +2 -0
- package/dist/pdf-convert-KYXI4FU4.js +2 -0
- package/dist/{persist-recorded-session-KHIMN4A3.js → persist-recorded-session-HK7JUONC.js} +1 -1
- package/dist/pipeline-FTLXJQRT.js +2 -0
- package/dist/readmodel-KTNI6QDC.js +2 -0
- package/dist/reconcile-cmd-5XC4AUSJ.js +2 -0
- package/dist/{recording-banner-SADVYNEP.js → recording-banner-5IYX2KBV.js} +1 -1
- package/dist/{require-project-folder-LP7V26IU.js → require-project-folder-J4Q4FRQ4.js} +1 -1
- package/dist/revert-FRXNIP5R.js +2 -0
- package/dist/review-cmd-XB2DCTMZ.js +4 -0
- package/dist/run-2RFR2ASQ.js +2 -0
- package/dist/run-3ZYJQBBC.js +2 -0
- package/dist/{run-test-md-ATB2HZRG.js → run-test-md-WN6BH3PC.js} +2 -2
- package/dist/{skill-installer-DE2LSSKU.js → skill-installer-4HYPUBNB.js} +1 -1
- package/dist/{spawner-GOTVIFR5.js → spawner-VD6YFZ43.js} +1 -1
- package/dist/tcg-generate-77QKMB63.js +2 -0
- package/dist/{testmd-actions-RYQHBX4K.js → testmd-actions-LT5FNIR6.js} +1 -1
- package/dist/token-refresh-PCOAZBKK.js +2 -0
- package/dist/{validate-basic-6BQ2L7TT.js → validate-basic-XWGKC5VF.js} +1 -1
- package/dist/{version-check-YW3FUWDH.js → version-check-6FDTS6MK.js} +1 -1
- package/dist/{view-cmd-FRMQF76B.js → view-cmd-PCDG3FIC.js} +1 -1
- package/dist/walk-session-YS62CWX5.js +2 -0
- package/package.json +16 -7
- package/bin/kane-cli.js +0 -2
- package/dist/EvidenceViewOffer-54GEARRX.js +0 -2
- package/dist/SingleShotApp-AJBIWW74.js +0 -2
- package/dist/TestMdRunView-5PMLLLFT.js +0 -2
- package/dist/chat-committer-ADJJTDUT.js +0 -2
- package/dist/chat-controller-VAC57IEV.js +0 -3
- package/dist/chunk-6AYUSR7X.js +0 -2
- package/dist/chunk-6LRKYF67.js +0 -14
- package/dist/chunk-74RUSHIB.js +0 -4
- package/dist/chunk-ACEODVSC.js +0 -14
- package/dist/chunk-CT2I5KUM.js +0 -2
- package/dist/chunk-E3BO7OVR.js +0 -7
- package/dist/chunk-HJGUEZLW.js +0 -2
- package/dist/chunk-IJPFAWBH.js +0 -5
- package/dist/chunk-OLXOZJ7X.js +0 -6
- package/dist/chunk-QPZRHAYK.js +0 -4
- package/dist/chunk-SJ2KQKOV.js +0 -3
- package/dist/chunk-WIA7TPK3.js +0 -2
- package/dist/chunk-ZG2V2ODK.js +0 -4
- package/dist/cover-cmd-K3LCXHAQ.js +0 -2
- package/dist/evidence-UPOFW3XC.js +0 -2
- package/dist/evolve-cmd-MVALOB3G.js +0 -2
- package/dist/explain-VFIZTHFN.js +0 -2
- 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/lifecycle-cmd-BXE5IMFN.js +0 -2
- package/dist/list-cmd-KBWPYJMV.js +0 -3
- package/dist/logical-ids-3Y6RX5C2.js +0 -2
- package/dist/login-flow-XQMJFC4H.js +0 -2
- package/dist/maintenance-cmd-VS3APIUN.js +0 -2
- package/dist/pipeline-2HRAWT5U.js +0 -2
- package/dist/readmodel-XOGOELUP.js +0 -2
- package/dist/reconcile-cmd-DH4VV6PG.js +0 -2
- package/dist/revert-AQQ2VHRM.js +0 -2
- package/dist/review-cmd-4WZUUOE4.js +0 -4
- package/dist/run-RT2VMPTQ.js +0 -2
- package/dist/run-XAZMT7WO.js +0 -2
- package/dist/tcg-generate-7PUXJ5R4.js +0 -2
- package/dist/token-refresh-F5KRV7ER.js +0 -2
- package/dist/walk-session-O4TMVORI.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as d,b as f,h as m}from"./chunk-VLC24QVT.js";import"./chunk-CIFVUX3B.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";var y=Object.keys(d).filter(n=>n!=="source");function b(n,t,u={kind:"system",id:"logical-id-backfill"}){let l=new Set(t.names.keys()),r=[];for(let c of y)for(let{cid:s,content:e}of t.byLabel(c)){if(t.superseded.has(s)||t.nameOf.has(s))continue;let a=typeof e.title=="string"&&e.title||typeof e.intent=="string"&&e.intent||typeof e.statement=="string"&&e.statement||typeof e.text=="string"&&e.text||"",i=a?f(c,a,g=>l.has(g)):null;i&&(l.add(i),r.push({ref:s,slug:i}))}if(r.length===0)return{record:null,errors:null,assigned:0};let o=m({contextDir:n,graph:t,assignments:r,by:u});return o.errors?{record:null,errors:o.errors,assigned:0}:{record:o.record,errors:null,assigned:r.length}}export{b as backfillLogicalIds};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a}from"./chunk-7ZMYAXES.js";import"./chunk-DL5CXC64.js";import"./chunk-RFHMDQXZ.js";import"./chunk-RZ4F3BHX.js";import"./chunk-3NR6OTHL.js";import"./chunk-Z34XRBKQ.js";import"./chunk-NMKZHHB6.js";import"./chunk-UR6MHSHU.js";export{a as LoginFlow};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{b as i,c as m,d as s}from"./chunk-GRB66C5S.js";import"./chunk-RN4OSVTG.js";import{a as t}from"./chunk-BC7UVJJB.js";import{c as d,d as c}from"./chunk-RGDQMKNJ.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";async function u(r,o=process.cwd()){if(!i(o,r))return 2;let e=c(t(o));if(e.ok)return r.out(e.pending?`ok: ${e.records} record(s) verified \u2014 ${e.pending} record(s) pending catch-up (applied automatically on the next command)`:`ok: ${e.records} record(s) verified, derived projection in parity`),0;for(let n of e.issues)r.out(`issue: ${n}`);return 1}async function p(r,o,e=process.cwd()){if(!i(e,o)||!await m(o,"wipe .context/derived and rebuild it from the verified commit chain",r.yes))return 2;let n=d(t(e));return o.out(`rebuilt: ${n.applied.seq} record(s) replayed, ${Object.keys(n.nodeLabel).length} node(s) projected`),0}async function b(){return u(s())}async function y(r={}){return p(r,s())}export{b as fsckCommand,y as rebuildCommand,u as runFsckCommand,p as runRebuildCommand};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a,b,c,d,e,f,g}from"./chunk-E4EHWO3J.js";import"./chunk-NVGBE2DR.js";import"./chunk-IAHKTEET.js";import"./chunk-UR6MHSHU.js";export{e as PDFJS_VERSION,b as PDF_IMAGE_CAP,a as PDF_IMAGE_DIMENSION_FLOOR,d as PDF_IMAGE_MAX_BYTES,c as PDF_VISION_BYTE_BUDGET,f as PdfConvertError,g as convertPdf};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{g as h}from"./chunk-RHNKYNNZ.js";import{a as m,b as I,k as S,s as _}from"./chunk-RKWJG3WW.js";import{a as f}from"./chunk-
|
|
2
|
+
import{g as h}from"./chunk-RHNKYNNZ.js";import{a as m,b as I,k as S,s as _}from"./chunk-RKWJG3WW.js";import{a as f}from"./chunk-QYTMD6NM.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-NMKZHHB6.js";import"./chunk-UR6MHSHU.js";async function v(e,s={}){e.flushRecorder();let o=e.recorder?.lastWrittenPath??null;if(!o)return e.log("info","PERSIST_SKIPPED","No recorded path \u2014 recorder.flush no-op",{reason:e.sessionName?"recorder_flush_failed":"no_session_name",session_name:e.sessionName}),null;let p;try{p=_(o)}catch(t){throw e.log("error","PERSIST_RESOLVE_FAILED","resolveTestMd threw",{error:t.message,recorded_path:o}),t}let i=e.getRunsAsStepRecords(),u=e.getFlows(),a=[],c=0;for(let t=0;t<i.length;t++){let r=i[t],l=u.slice(c,c+r.totalRunDirs);c+=r.totalRunDirs;let g=l.find(n=>n.status==="failed"||n.status==="error"),T=g?"failed":l.length===0?"skipped":"passed";a.push({rootStepIndex:t+1,status:T,duration_s:l.reduce((n,E)=>n+(E.duration??0),0),reason:g?.reason})}let P=a.some(t=>t.status==="failed")?"failed":"passed",D=new f().load().code_export?.language==="javascript"?"javascript":"python",d=I(o);e.log("info","PERSIST_START","Building staging dir",{recorded_path:o,output_dir:d,session_dir:e.sessionDir,step_count:i.length,flow_count:u.length});try{await h({resolvedTest:p,sessionDir:e.sessionDir,stepRunRecords:i,outcomes:a,overallStatus:P,startedISO:e.startedAt,durationS:a.reduce((t,r)=>t+(r.duration_s??0),0),sessionId:e.sessionId,commitId:e.sessionId,tmsIds:{testId:e.testId??void 0,testcaseId:s.testcaseId,projectId:s.projectId,folderId:s.folderId,orgId:s.orgId??e.orgId??void 0,sessionName:e.sessionName??m(o)},codeExportDir:s.codeExportDir,codeExportLanguage:D,packTestDir:s.packTestDir}),e.log("info","PERSIST_STAGING_OK","Staging dir built",{output_dir:d}),S(d),e.log("info","PERSIST_OK","Persist complete",{output_dir:d})}catch(t){let r=t;e.log("error","PERSIST_FAILED","staging build / atomic replace failed",{error:r.message,stack:r.stack,output_dir:d}),process.stderr.write(`[persist] staging build / atomic replace failed: ${r.message}
|
|
3
3
|
`)}return{recordedTestPath:o,outputDir:d}}export{v as persistRecordedSession};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a,b,c}from"./chunk-GLS46X7N.js";import"./chunk-2YQ6TW77.js";import"./chunk-WAOCHXJ5.js";import"./chunk-YZBLBPOE.js";import"./chunk-CJJXT5DO.js";import"./chunk-ZPDM6FO7.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-QHFUDBQH.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-3NR6OTHL.js";import"./chunk-NMKZHHB6.js";import"./chunk-UR6MHSHU.js";export{c as UploadPipeline,b as packPresignEntry,a as readPackForUpload};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a,b}from"./chunk-QHFUDBQH.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";export{a as openGraph,b as staleForEvolve};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as G,b as Z,c as J,d as Q}from"./chunk-I37UOX73.js";import"./chunk-GBBVP2JW.js";import{a as N,c as q,d as ue,f as z}from"./chunk-OPDJD7WS.js";import"./chunk-3C5GMAM4.js";import{a as P,b as le,d as de}from"./chunk-GRB66C5S.js";import{a as se,b as oe}from"./chunk-UZWOHCFX.js";import{a as B,b as T,c as L,d as V,e as ce,g as I,h as K}from"./chunk-K5JGCJ2K.js";import{a as ae}from"./chunk-JFAFKHDX.js";import"./chunk-VLC24QVT.js";import"./chunk-CIFVUX3B.js";import"./chunk-DNNZ353O.js";import"./chunk-RN4OSVTG.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import{a as x}from"./chunk-QHFUDBQH.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L4JIMNKW.js";import{c as F}from"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";import{existsSync as ve,statSync as we}from"fs";import{basename as j,resolve as pe}from"path";var ge=new Set(["interactive","agent","ci","override"]);function ke(e,t){if(e.mode!==void 0&&!ge.has(e.mode))return{error:`--mode must be interactive | agent | ci | override, got '${e.mode}'`};let r=e.mode,n="reconcile without a TTY needs an explicit mode \u2014 pass --mode agent|ci|override, or --plan for a preview";return r==="interactive"&&!t?{error:n}:r||(t?"interactive":e.plan?"override":{error:n})}function ye(e,t,r,n){let i=pe(t,r);if(!ve(i)||!we(i).isFile())return{error:`--from '${r}' is not a file \u2014 pass the changed source document`};let p=se(i);if(!p.ok)return{error:`--from '${r}' is not an ingestable document \u2014 allowed: ${p.allowlist.join(", ")}`};let f=x(e);if(!f.heads.has(n))return{error:`unknown source '${n}' \u2014 see \`kane-cli context list --type source\``};if(f.heads.get(n)==null)return{error:`source '${n}' is retired \u2014 restore it first with \`kane-cli context revert\`, then reconcile`};let d=null;try{d=oe(i)}catch{}return d!==null&&d!==n&&f.heads.get(d)!=null?{error:`'${j(i)}' already backs live source '${d}' \u2014 did you mean --source-id ${d}? To truly move these bytes under '${n}', retire '${d}' first`}:{sourceId:n,filePath:i}}function O(e){return e==null?"(none)":e.slice(0,19)}function M(e,t,r){if(e.out(`reconcile ${t.source_id}: head ${t.head.status} \u2014 ${O(t.head.before)} \u2192 ${O(t.head.after)}`),e.out(`note: ${t.note}`),e.out(`skipped arms: ${t.skipped_arms}`),t.changed&&e.out(t.held?`extract ran in override mode; ${r?.defaultsTaken??0} default(s) auto-taken; matched-but-changed and new proposals HELD for your verdict (staged \u2014 nothing committed)`:`extract ran in override mode; ${r?.defaultsTaken??0} default(s) auto-taken; matched-but-changed proposals auto-committed as edits`),t.changed){let n=t.changeset??[];e.out(`changeset: ${n.length} item(s)`);for(let i of n)if(i.kind==="MODIFY")e.out(` [MODIFY] ${i.ref} \u2014 ${i.summary} (${O(i.old_cid)} \u2192 ${i.new_cid===null?"(staged)":O(i.new_cid)})`);else if(i.kind==="ADD")e.out(` [ADD] ${i.ref}`);else{e.out(` [ARCHIVE] ${i.ref} \u2014 ${i.why}`);let p=X(i.impact,"retiring drops");p&&e.out(` ${p}`)}}e.out(`plan: ${t.rows.length} row(s)`);for(let n of t.rows){e.out(` [${n.kind}] ${n.ref} \u2014 ${n.reason}`);let i=X(n.impact,"approving marks");i&&e.out(` ${i}`),e.out(` provenance: ${n.provenance}`),e.out(` action: ${n.action}`)}}function X(e,t){if(!e||e.stale_refs.length===0)return null;let r=e.direct_refs??[];return`impact: ${t} ${e.stale_refs.length} item(s) stale`+(r.length>0?` \u2014 ${r.length} directly touched: ${r.join(", ")}`:"")}function E(e){return e==="interactive"?"override":e}async function A(e,t,r,n,i,p,f=[],d="override",y,w,s,u,h){let l;try{l=K(e)}catch($){return P(n,$ instanceof Error?$.message:String($)),1}try{if(!r){let{runWalkSession:$}=await import("./walk-session-YS62CWX5.js");return await $({dir:e,rows:t,archive:f,held:y??null,childMode:d,runDesign:u??null,mark:p,markA:s,...w?{archiveState:w}:{},signals:k=>C(e,k.ref,k.verdict,k.reason),...h?{script:h}:{}})}return await $e(e,t,r,n,i,p,f,d,y,w)}finally{l()}}var H=e=>`${e} high-risk item(s) need a human \u2014 ci mode won't guess. Walk interactively or use --mode agent.`;function W(e,t,r){let n=t.rows;e({type:"reconcile_plan",source_id:t.source_id,plan_path:r,rows:n.map(i=>({kind:i.kind,ref:i.ref,why:i.reason})),archive:t.changeset.filter(i=>i.kind==="ARCHIVE").map(i=>({ref:i.ref,why:i.why}))})}function ne(e={}){return{type:"reconcile_summary",applied:0,skipped:0,deferred:0,plan_only:0,failed:0,paused:0,stale_created:0,...e}}var ee=ne();async function U(e,t,r,n,i,p,f,d,y){W(i,t,r);let w=t.changeset.filter(h=>h.kind==="ARCHIVE"&&y?.[h.ref]===void 0),s=t.rows,u;try{u=K(e)}catch(h){return i({type:"error",message:h instanceof Error?h.message:String(h)}),i(ne()),2}try{return await Re(e,t,r,n,i,p,f,s,w,d)}finally{u()}}async function Re(e,t,r,n,i,p,f,d,y,w){let s=0,u=0,h=0,l=0,$=0,k=0,a=0,R=new Set,v=(c,o)=>{try{w?.(c,o)}catch{}};for(let[c,o]of d.entries()){i({type:"reconcile_row_start",kind:o.kind,ref:o.ref,...o.impact?{stale:o.impact.stale_refs.length,direct:o.impact.direct_refs?.length??0}:{}});let g=(m,D,S)=>i({type:"reconcile_row_end",kind:o.kind,ref:o.ref,outcome:m,...D!==void 0?{exit_code:D}:{},...S?{detail:S}:{}});if(o.applied){u++,g("skipped");continue}if(o.kind==="REMOVE"){$++,g("plan-only");continue}if(o.held_ref&&t.held){let m=new Set;if(o.kind==="MODIFY"&&o.impact){let S=x(e);for(let re of o.impact.stale_refs){let ie=S.resolve(re);ie&&S.stale(ie.tip)==="fresh"&&m.add(re)}}let D=G(e,t.held,o.held_ref,te);if(!D.ok){h++,a===0&&(a=1),g("failed",1,D.message);continue}if(D.kind==="ADD"){let S=await n(D.ref,{yes:!0,mode:f});if(S!==0){S===3?(l++,a===0&&(a=3),g("paused",3)):(h++,a===0&&(a=1),g("failed",S));continue}}s++,D.kind!=="ADD"&&o.impact&&(k+=m.size),v(c,"approved"),C(e,o.ref,D.kind==="ADD"?"gap-resolved-create":"gap-resolved-evolve"),g("applied");continue}let _=N(x(e),o.ref);if(!_.ok){u++,g("skipped");continue}let b=_.target;if(R.has(b.ucTip)){u++,g("skipped");continue}if(o.kind==="ADD"){let m=await n(b.seamRef,{yes:!0,mode:f});if(m===3){l++,a===0&&(a=3),g("paused",3);continue}if(m!==0){h++,a===0&&(a=1),g("failed",m);continue}R.add(b.ucTip),s++,v(c,"approved"),C(e,o.ref,"gap-resolved-create"),g("applied")}else{let m=await q(e,b,{yes:!0,mode:f},p,n,"batch");m.outcome==="evolved"?(R.add(b.ucTip),s++,v(c,"approved"),C(e,o.ref,"gap-resolved-evolve"),g("applied")):m.outcome==="paused"?(l++,a===0&&(a=m.code),g("paused",m.code)):m.outcome==="failed"?(h++,a===0&&(a=1),g("failed",m.code)):(u++,g("skipped"))}}return y.length>0&&(i({type:"reconcile_paused",plan_path:r,pending:y.map(c=>({ref:c.ref,why:c.why}))}),l+=y.length,a===0&&(a=3)),i(ne({applied:s,skipped:u,plan_only:$,failed:h,paused:l,stale_created:k})),a}var te={kind:"human",id:process.env.USER??"operator"};function C(e,t,r,n){ae(e,{ts:new Date().toISOString(),command:"reconcile-walk",id:t,verdict:r,polarity:"preference",by:te,target:t,...n!==void 0?{reason:n}:{}})}async function $e(e,t,r,n,i,p,f=[],d="override",y,w){let s=0,u=0,h=0,l=0,$=0,k=0,a=0,R=new Set;for(let[v,c]of t.entries()){if(c.applied){n.out(`skipped ${c.ref} \u2014 already applied (${c.applied.outcome} at ${c.applied.at})`),u++;continue}let o=m=>{try{p?.(v,m)}catch(D){P(n,`could not record applied state for ${c.ref}: ${D instanceof Error?D.message:String(D)}`)}};if(c.kind==="REMOVE"){n.out(`REMOVE ${c.ref} \u2014 plan-only in this release (not executed)`),l++;continue}if(c.held_ref&&y){let m=G(e,y,c.held_ref,te);if(!m.ok){P(n,`held ${c.ref}: ${m.message}`),$++,a===0&&(a=1);continue}if(n.out(`committed ${m.ref} (${c.kind==="ADD"?"minted":"updated \u2014 old\u2192new redirect"})`),m.kind==="ADD"){let D=await i(m.ref,{yes:r,mode:d});if(D===3){n.out(`design session for ${m.ref} paused \u2014 resume with "kane-cli design tests --resume"`),k++,a===0&&(a=3),o("approved");continue}if(D!==0){P(n,`design run for ${m.ref} ended with exit code ${D}`),$++,a===0&&(a=1),o("approved");continue}}s++,o("approved"),C(e,c.ref,c.kind==="ADD"?"gap-resolved-create":"gap-resolved-evolve");continue}let g=x(e),_=N(g,c.ref);if(!_.ok){n.out(`skipped ${c.ref} \u2014 ${_.message}`),u++;continue}let b=_.target;if(R.has(b.ucTip)){n.out(`skipped ${c.ref} \u2014 use-case ${b.display} already handled in this walk`),u++;continue}if(c.kind==="ADD"){let m=await i(b.seamRef,{yes:r,mode:d});if(m===3){n.out(`design session for ${b.display} paused \u2014 resume with "kane-cli design tests --resume"; this row lands when that session completes`),k++,a===0&&(a=3);continue}if(m!==0){P(n,`design run for ${b.display} ended with exit code ${m}`),$++,a===0&&(a=1);continue}R.add(b.ucTip),s++,o("approved"),C(e,c.ref,"gap-resolved-create")}else{let m=await q(e,b,{yes:!0,mode:d},n,i,"batch");m.outcome==="evolved"?(R.add(b.ucTip),s++,o("approved"),C(e,c.ref,"gap-resolved-evolve")):m.outcome==="paused"?(k++,a===0&&(a=m.code)):m.outcome==="failed"?($++,a===0&&(a=m.code)):u++}}for(let v of f)if(v.kind==="ARCHIVE"&&w?.[v.ref]===void 0){n.out(`[ARCHIVE] ${v.ref} \u2014 ${v.why}`);{let c=X(v.impact,"retiring drops");c&&n.out(` ${c}`)}n.out(" plan-only \u2014 retire belongs to the interactive session (never headless)"),l++}return n.out(`reconcile walk: ${s} applied, ${u} skipped, ${h} deferred, ${l} plan-only`+($>0?`, ${$} failed`:"")+(k>0?`, ${k} paused`:"")),a}async function me(e,t,r,n,i,p=!1){let f=i.seams??{reingest:J(e,r),reextract:Q(e,{stage:p})},d=null,y={reingest:f.reingest,reextract:async s=>d=await f.reextract(s)},w;try{n.out(`reconciling ${t}: re-reading the source and comparing against the graph\u2026`),w=await(i.buildPlan??Z)(e,t,y)}catch(s){return P(n,`reconcile failed: ${s instanceof Error?s.message:String(s)}`),null}return w.changed&&M(n,w,d),w}async function _e(e,t,r,n,i){let p=T(e,t);if("error"in p)return P(n,p.error),2;let{plan:f,path:d}=p,y=r==="override"||r==="ci";if(t===void 0&&r==="interactive"&&n.isTTY&&!await n.confirm(`apply plan ${j(d)} for ${f.source_id} (created ${f.created})?`))return n.out(`not applying ${j(d)}`),0;let w=i.runDesignForUc??z,s=i.runDesignForUc??null,u=i.sessionScript,h=(R,v)=>I(d,R,v),l=(R,v)=>V(d,R,v),$=F(e);if($===f.head_pin){if(r==="agent"){let v=i.emitEvent??(()=>{});return U(e,Y(f),d,w,v,n,E(r),h,f.archive_state)}let R=L(f);return r==="ci"&&R.length>0?(P(n,H(R.length)),2):(n.out(`applying stored plan ${j(d)} for ${f.source_id} (${f.rows.length} row(s))`),A(e,f.rows,y,n,w,h,f.changeset??[],E(r),f.held,f.archive_state,l,s,u))}if(n.out(`graph moved since this plan (${O(f.head_pin)} \u2192 ${O($)}) \u2014 recomputing`),f.held)return he(e,f,n,i,r,w,!1);let k=await me(e,f.source_id,f.backing_path,n,i);if(!k)return 1;if(!k.changed)return M(n,k,null),0;if(r==="agent"){let R=i.emitEvent??(()=>{});return U(e,k,null,w,R,n,E(r))}let a=k.changeset.filter(R=>R.kind==="ARCHIVE");return r==="ci"&&a.length>0?(P(n,H(a.length)),2):A(e,k.rows,y,n,w,void 0,k.changeset,E(r),k.held,void 0,void 0,s,u)}function Y(e,t=!1){return{source_id:e.source_id,changed:!0,head:{status:"unchanged",before:e.head_pin,after:e.head_pin},note:e.note,skipped_arms:e.skipped_arms,changeset:e.changeset??[],rows:t?e.rows.filter(r=>r.applied===void 0):e.rows,...e.held?{held:e.held}:{}}}async function Pe(e,t,r,n,i,p,f){let d=n.runDesignForUc??null,y=n.sessionScript,w=ce(e,t);if(w===null)return null;if("error"in w)return P(r,w.error),2;let{plan:s,path:u}=w,h=s.rows.filter(a=>a.applied===void 0),l=L(s),$=n.emitEvent??(()=>{});if(h.length===0&&l.length===0){r.out(`already reconciled \u2014 plan ${s.created} applied ${s.rows.length} row(s)`);let a=ue(x(e)).staleCount;return a>0&&r.out(`${a} item(s) still stale \u2014 kane-cli maintain evolve --from-stale`),i==="agent"&&(W($,Y(s),u),$({...ee})),0}let k=F(e);return k!==s.head_pin?(r.out(`plan ${s.created} superseded \u2014 graph moved (${O(s.head_pin)} \u2192 ${O(k)}); recomputing`),he(e,s,r,n,i,p,f)):(r.out(`resuming plan ${s.created} \u2014 ${h.length} pending row(s)${l.length>0?`, ${l.length} undecided archive item(s)`:""}`),f?(M(r,Y(s),null),r.out(`plan stored: ${u}`),0):i==="agent"?U(e,Y(s),u,p,$,r,E(i),(a,R)=>I(u,a,R),s.archive_state):i==="ci"&&l.length>0?(P(r,H(l.length)),2):A(e,s.rows,i==="override"||i==="ci",r,p,(a,R)=>I(u,a,R),s.changeset??[],E(i),s.held,s.archive_state,(a,R)=>V(u,a,R),d,y))}async function he(e,t,r,n,i,p,f){let d=n.runDesignForUc??null,y=n.sessionScript,w;if(t.held){let c=x(e),o=new Set(t.rows.filter(_=>_.held_ref!==void 0&&_.applied!==void 0).map(_=>_.held_ref)),g=[];for(let _ of t.held.rows){if(o.has(_.temp_ref))continue;if(!_.matched_cid){g.push(_);continue}let b=c.tipOf(_.matched_cid);if(c.superseded.get(b)===null){r.out(`dropped held "${_.title}" \u2014 its use-case was retired meanwhile`);continue}g.push(b===_.matched_cid?_:{..._,matched_cid:b,uc:{..._.uc,matches_existing:{cid:b}}})}w={source_id:t.held.source_id,rows:g}}let s=n.seams??{reingest:J(e,t.backing_path),reextract:Q(e,{stage:w!==void 0})},u;try{u=await(n.buildPlan??Z)(e,t.source_id,s,{resumeHeld:w})}catch(c){return P(r,`reconcile failed: ${c instanceof Error?c.message:String(c)}`),1}M(r,u,null);let h=F(e),l=null;if(h!=null){let c={},o=new Set(u.changeset.filter(g=>g.kind==="ARCHIVE").map(g=>g.ref));for(let[g,_]of Object.entries(t.archive_state??{}))o.has(g)&&(c[g]=_);l=B(e,{version:2,source_id:u.source_id,backing_path:t.backing_path,head_pin:h,created:new Date().toISOString().replace(/[:.]/g,"-"),skipped_arms:u.skipped_arms,note:u.note,changeset:u.changeset,rows:u.rows,...u.held?{held:u.held}:{},...Object.keys(c).length>0?{archive_state:c}:{}}),r.out(`plan stored: ${l}`)}if(f)return 0;let $=n.emitEvent??(()=>{}),k=l?T(e,l).plan.archive_state:void 0,a=l?(c,o)=>I(l,c,o):void 0,R=l?(c,o)=>V(l,c,o):void 0;if(i==="agent")return U(e,u,l,p,$,r,E(i),a,k);let v=u.changeset.filter(c=>c.kind==="ARCHIVE"&&k?.[c.ref]===void 0);return i==="ci"&&v.length>0?(P(r,H(v.length)),2):A(e,u.rows,i==="override"||i==="ci",r,p,a,u.changeset,E(i),u.held,k,R,d,y)}async function fe(e,t,r={},n=process.cwd()){let i=e.apply!==void 0&&e.apply!==!1,p=typeof e.apply=="string"?e.apply:void 0;if(e.plan&&i)return P(t,"pass --plan OR --apply, not both"),2;if((e.from!==void 0||!i)&&(!e.from||!e.sourceId))return P(t,"reconcile needs --from <file> AND --source-id <id> \u2014 see `kane-cli context list --type source` for ids"),2;if(e.from&&p!==void 0)return P(t,"pass --from OR --apply <path>, not both \u2014 a stored plan names its own source"),2;let d=le(n,t);if(!d)return 2;if(e.mode!==void 0&&!ge.has(e.mode))return P(t,`--mode must be interactive | agent | ci | override, got '${e.mode}'`),2;let y=e.mode==="agent"||e.mode==="ci"||e.mode==="override";if(i&&!y&&!t.isTTY)return P(t,"refusing to apply without a TTY to confirm \u2014 pass --mode override|ci"),2;let w=!e.plan,s="override";if(e.from){let o=ke(e,t.isTTY);if(typeof o=="object")return P(t,o.error),2;s=o}let u=s==="override"||s==="ci";if(i&&!e.from){let o=e.mode??"interactive";return _e(d,p===void 0?void 0:pe(n,p),o,t,r)}let h=ye(d,n,e.from,e.sourceId);if("error"in h)return P(t,h.error),2;let l=await me(d,h.sourceId,h.filePath,t,r,!!e.plan||s==="interactive");if(!l)return 1;let $=r.runDesignForUc??z,k=r.runDesignForUc??null,a=r.sessionScript;if(!l.changed){let o=await Pe(d,h.sourceId,t,r,s,$,!!e.plan);if(o!==null)return o;if(M(t,l,null),s==="agent"){let g=r.emitEvent??(()=>{});W(g,l,null),g({...ee})}return 0}let R=F(d),v=null;if(R!=null?v=B(d,{version:2,source_id:l.source_id,backing_path:h.filePath,head_pin:R,created:new Date().toISOString().replace(/[:.]/g,"-"),skipped_arms:l.skipped_arms,note:l.note,changeset:l.changeset,rows:l.rows,...l.held?{held:l.held}:{}}):P(t,"no chain head after extract \u2014 plan not stored"),s==="agent"){let o=r.emitEvent??(()=>{});if(!w)return W(o,l,v),o({...ee}),0;let g=v?(_,b)=>I(v,_,b):void 0;return U(d,l,v,$,o,t,E(s),g)}if(!w)return v&&t.out(`plan stored: ${v}`),0;let c=l.changeset.filter(o=>o.kind==="ARCHIVE");if(s==="ci"&&c.length>0)return v&&t.out(`plan stored: ${v}`),P(t,H(c.length)),2;if(v){t.out(`plan stored: ${v}`);let o=v;return A(d,be(d,o)??l.rows,u,t,$,(g,_)=>I(o,g,_),l.changeset,E(s),l.held,void 0,void 0,k,a)}return A(d,l.rows,u,t,$,void 0,l.changeset,E(s),l.held,void 0,void 0,k,a)}function be(e,t){let r=T(e,t);return"error"in r?null:r.plan.rows}async function Te(e,t={},r,n=process.cwd()){if(e.mode==="agent"){let{makeHeadlessIO:i}=await import("./headless-io-PWW6YKH2.js"),p=r?i("ndjson","reconcile",r):i("ndjson","reconcile"),f={out:p.out,err:y=>p.event({type:"error",message:y}),isTTY:!1,confirm:async()=>!1,ask:async()=>""},d=2;try{d=await fe(e,f,{...t,emitEvent:y=>p.event(y)},n)}catch(y){p.event({type:"error",message:y instanceof Error?y.message:String(y)})}return p.done(d)}return fe(e,de(),t,n)}export{E as childModeFor,Te as reconcileCommand,ke as resolveReconcileMode,fe as runReconcileCommand,ye as validateReconcileInputs};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
2
|
import{a as n}from"./chunk-3MSXQU2C.js";import"./chunk-UR6MHSHU.js";function p(t){let s=t.sessionName!==null,e={type:"recording_state",enabled:!0,session_id:t.sessionId,persist:s};return t.sessionName&&(e.session_name=t.sessionName),t.testPath&&(e.test_path=t.testPath),t.outputPath&&(e.output_path=t.outputPath),e}async function g(t){if(t.isAgent){process.stdout.write(JSON.stringify(p(t))+`
|
|
3
|
-
`);return}let s=(await import("./react-QWOAB3TB.js")).default,{render:e,useApp:a}=await import("./build-JIKYOZUH.js"),{useEffect:o}=s,{InfoBox:r}=await import("./InfoBox-
|
|
3
|
+
`);return}let s=(await import("./react-QWOAB3TB.js")).default,{render:e,useApp:a}=await import("./build-JIKYOZUH.js"),{useEffect:o}=s,{InfoBox:r}=await import("./InfoBox-G63WZAMH.js"),u=t.sessionName?[{label:"session",value:t.sessionName},{label:"test",value:n(t.testPath??"")},{label:"output",value:n(t.outputPath??"")}]:[{label:"session",value:"ephemeral"},{label:"note",value:"use /name <name> to persist this session"}];function l(){let{exit:i}=a();return o(()=>{let c=setTimeout(()=>i(),50);return()=>clearTimeout(c)},[i]),s.createElement(r,{title:"Recording",titleColor:"#ff9500",rows:u})}await e(s.createElement(l),{stdout:process.stderr}).waitUntilExit()}export{p as buildRecordingStateEvent,g as printRecordingBanner};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as a,c as b,d as c,e as d,f as e,g as f,h as g}from"./chunk-
|
|
2
|
+
import{b as a,c as b,d as c,e as d,f as e,g as f,h as g}from"./chunk-TTJ4XMWP.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-3NR6OTHL.js";import"./chunk-VE3SUJMA.js";import"./chunk-NMKZHHB6.js";import"./chunk-UR6MHSHU.js";export{d as buildAutoDefaultAnnouncement,f as buildAutoDefaultedEvent,e as buildAutoDefaultedNdjson,c as buildRemediationMessage,b as decideGateAction,a as loadCachedIds,g as requireProjectFolder};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{b as _,e as k}from"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";function j(w){let{contextDir:v,graph:y,seq:r,by:d}=w,{records:l,hashes:$}=_(v);if(!Number.isInteger(r)||r<1||r>l.length)return{record:null,warnings:[],errors:[{code:"UNKNOWN_SEQ",detail:`no record ${r} (chain has ${l.length})`}]};let i=l[r-1],p=l.slice(0,r-1),c=w.reason??`revert of record ${r}`,t=[],u=[],f=[],g=[],m={},b=new Set(i.nodes.map(e=>e.cid));for(let e of i.nodes){if(y.superseded.has(e.cid)){t.push(`${e.cid} was already superseded after record ${r} \u2014 left as is`);continue}u.push({kind:"node",old:e.cid,new:null,reason:c,by:d})}for(let e of i.supersessions){if(e.kind==="edge"){t.push(`edge retraction ${e.ecid} cannot be auto-restored \u2014 re-extract to re-evidence`);continue}if(l.slice(r).some(n=>n.supersessions.some(s=>s.kind==="node"&&s.old===e.old))){t.push(`supersession of ${e.old.slice(0,19)} was changed again after record ${r} \u2014 later state kept`);continue}let o;for(let n of p)for(let s of n.supersessions)s.kind==="node"&&s.old===e.old&&(o=s.new===s.old?void 0:s.new);o===void 0?u.push({kind:"node",old:e.old,new:e.old,reason:c,by:d}):u.push({kind:"node",old:e.old,new:o,reason:c,by:d})}let h=l.slice(r);for(let e of Object.keys(i.source_head_moves)){if(h.some(n=>e in n.source_head_moves)){t.push(`head of ${e} was moved again after record ${r} \u2014 later state kept`);continue}let o=null;for(let n of p)e in n.source_head_moves&&(o=n.source_head_moves[e]);m[e]=o}let R=new Set;for(let e of i.review){if(R.has(e.id)||b.has(e.id))continue;if(R.add(e.id),h.some(s=>s.review.some(a=>a.id===e.id))){t.push(`trust of ${e.id.slice(0,19)} was reviewed again after record ${r} \u2014 later state kept`);continue}let o=null,n=null;for(let s of p)for(let a of s.review)a.id===e.id&&(o=a.resolution==="reset"?null:a.resolution,n=a.reason);o==="approved"||o==="edited"?f.push({id:e.id,kind:"review-item",resolution:"approved",edit:null,reason:c,by:d}):o==="rejected"?f.push({id:e.id,kind:"review-item",resolution:"rejected",edit:null,reason:n??c,by:d}):f.push({id:e.id,kind:"review-item",resolution:"reset",edit:null,reason:c,by:d})}for(let e of i.names??[]){if(h.some(n=>(n.names??[]).some(s=>s.slug===e.slug))){t.push(`slug "${e.slug}" was reassigned after record ${r} \u2014 later state kept`);continue}let o;for(let n of p)for(let s of n.names??[])s.slug===e.slug&&(o=s.cid);o!==void 0?g.push({cid:o,slug:e.slug,by:d}):t.push(`slug "${e.slug}" was first assigned by record ${r} \u2014 unassignment unsupported, reassign manually`)}return u.length===0&&f.length===0&&g.length===0&&Object.keys(m).length===0?{record:null,warnings:t,errors:[{code:"NOTHING_TO_REVERT",detail:`record ${r} left no compensable facts`}]}:(i.extraction_of&&t.push(`extraction cache for ${i.extraction_of.slice(0,19)} stays \u2014 re-extract with --force`),{record:k(v,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:f,supersessions:u,...g.length>0?{names:g}:{},source_head_moves:m},{expectPrev:$[$.length-1]??null}).record,warnings:t,errors:null})}export{j as commitRevert};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{b as j}from"./chunk-GRB66C5S.js";import{g as b}from"./chunk-VLC24QVT.js";import"./chunk-CIFVUX3B.js";import"./chunk-RN4OSVTG.js";import"./chunk-BC7UVJJB.js";import{a as _}from"./chunk-QHFUDBQH.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L4JIMNKW.js";import{b as V}from"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";import{readFileSync as E}from"fs";var O=new Set(["derived","skipped","archived","drift"]),q={kind:"human",id:process.env.USER??"operator"};function R(d,r){return d.nameOf.get(r)??r.slice(0,19)}function N(d,r){let n=d.getNode(r)?.content??{},a=d.derivesInto(r)[0]?.props.anchor;return{cid:r,uc:{temp_ref:r,title:String(n.title??n.text??""),summary:n.summary!==void 0?String(n.summary):void 0,risk:String(n.risk??"med"),cite:{anchor:typeof a=="string"?a:"\u2014",quote:""},depends_on_hint:[],matches_existing:null}}}function T(d,r){let n=new Set,{records:a}=V(d);for(let s of a){if(s.proposal_id==null)continue;let u=new Set(s.review.map(e=>e.id));for(let e of s.nodes)u.has(e.cid)||n.add(e.cid)}for(let s of[...n])(r.trust.get(s)!=="derived"||r.superseded.has(s))&&n.delete(s);return n}var x=new Set(["approved","edited","rejected","skipped","supersede"]);function C(d){let r;try{r=JSON.parse(d)}catch(s){return{errors:[`not valid JSON: ${s instanceof Error?s.message:String(s)}`]}}if(!Array.isArray(r))return{errors:['expected a top-level array of {"ref", "resolution", ...} entries']};let n=[],a=[];return r.forEach((s,u)=>{if(s==null||typeof s!="object"||Array.isArray(s)){n.push(`[${u}]: not an object`);return}let e=s;(typeof e.ref!="string"||!e.ref.trim())&&n.push(`[${u}]: "ref" (slug or cid) is required`),(typeof e.resolution!="string"||!x.has(e.resolution))&&n.push(`[${u}]: "resolution" must be one of approved | edited | rejected | skipped | supersede`),e.resolution==="supersede"&&(typeof e.supersede_target!="string"||!e.supersede_target.trim())&&n.push(`[${u}]: resolution "supersede" requires "supersede_target" (slug or cid)`),e.edit!==void 0&&(e.edit==null||typeof e.edit!="object"||Array.isArray(e.edit))&&n.push(`[${u}]: "edit" must be an object ({title?, summary?, risk?})`),n.length===0&&a.push(e)}),n.length>0?{errors:n}:{entries:a}}async function I(d,r,n,a=process.cwd()){let s=d.queue??"derived";if(!O.has(s))return r.out(`unknown queue ${s} \u2014 one of: derived | skipped | archived | drift`),2;let u=j(a,r);if(!u)return 2;let e=_(u);if(d.verdicts){let i=t=>(r.err??r.out)(t),o;try{o=E(d.verdicts,"utf8")}catch{return i(`error: cannot read verdicts file ${d.verdicts}`),2}let l=C(o);if("errors"in l){for(let t of l.errors)i(`error: --verdicts ${d.verdicts}: ${t}`);return 2}let c=new Set([...e.trust.entries()].filter(([t,p])=>(p==="derived"||p==="archived")&&!e.superseded.has(t)).map(([t])=>t)),f=new Map,y=[];for(let t of l.entries){let p=e.resolve(t.ref),m=p&&!e.superseded.has(p.tip)?p.tip:null;if(!m){y.push(`${t.ref}: names nothing in the graph`);continue}if(!c.has(m)){y.push(`${t.ref}: not in a review queue (trust: ${e.trust.get(m)??"?"})`);continue}if(f.has(m)){y.push(`${t.ref}: duplicate \u2014 an earlier entry already resolves to this node (${R(e,m)})`);continue}f.set(m,{resolution:t.resolution,...t.reason?{reason:t.reason}:{},...t.edit?{edit:t.edit}:{},...t.supersede_target?{supersedeTarget:t.supersede_target}:{}})}if(y.length>0){for(let t of y)i(`error: --verdicts: ${t}`);return i("error: nothing committed (the verdicts file is atomic \u2014 fix every offender and re-run)"),2}let k=b({contextDir:u,graph:e,verdicts:f,by:q});if(k.errors){if(k.errors[0]?.code==="NO_VERDICTS")return i("nothing changed \u2014 every item was skipped"),0;for(let t of k.errors)i(`${t.code}: ${t.detail}`);return 1}let S=new Map;for(let t of f.values())S.set(t.resolution,(S.get(t.resolution)??0)+1);if(d.json)for(let[t,p]of f.entries())r.out(JSON.stringify({ref:R(e,t),cid:t,resolution:p.resolution}));else{let t=[...S.entries()].map(([p,m])=>`${m} ${p}`).join(", ");r.out(`review: committed record ${k.record.seq} \u2014 ${t}`)}return 0}if(s==="drift"){let i=e.staleList().filter(({state:o})=>o!=="superseded").map(({cid:o,state:l})=>({ref:R(e,o),cid:o,state:l,title:String(e.getNode(o)?.content.title??e.getNode(o)?.content.source_id??""),pinned_sources:[...new Set(e.derivesInto(o).map(c=>String(c.props.source_id)))]}));if(d.json){for(let o of i)r.out(JSON.stringify(o));return 0}if(i.length===0)return r.out("drift queue is empty \u2014 every node's evidence matches the current source snapshots"),0;r.out(`${i.length} node(s) with drifting evidence (re-extract the source to re-bless):`);for(let o of i)r.out(` [${o.state}] ${o.ref} \xB7 ${o.title} \xB7 sources: ${o.pinned_sources.join(", ")||"\u2014"}`);return 0}if(!r.isTTY)return r.out("review: verdict queues need a TTY (drift listing works anywhere, or pass --verdicts <file.json>)"),2;let g,h;if(s==="archived")g=[...e.trust.entries()].filter(([i,o])=>o==="archived"&&!e.superseded.has(i)).map(([i])=>N(e,i)),h="skipped";else{let i=T(u,e),o=[...e.trust.entries()].filter(([c,f])=>f==="derived"&&!e.superseded.has(c)).map(([c])=>c),l=s==="skipped"?o.filter(c=>i.has(c)):o;l.sort((c,f)=>Number(i.has(f))-Number(i.has(c))),g=l.map(c=>N(e,c)),h="skipped"}if(g.length===0)return r.out(`${s} queue is empty`),0;r.out(`${g.length} node(s) in the ${s} queue \u2014 approve promotes, reject ${s==="archived"?"re-archives":"archives"}, edit mints a new version, skip leaves it for later`);let v=await n(g,e,h),w=b({contextDir:u,graph:e,verdicts:v,by:q});if(w.errors){if(w.errors[0]?.code==="NO_VERDICTS")return r.out("nothing changed \u2014 every item was skipped"),0;for(let i of w.errors)r.out(`${i.code}: ${i.detail}`);return 1}let $=w.record;return r.out(`committed record ${$.seq}: ${$.review.length} review fact(s), ${$.supersessions.length} supersession(s), ${$.nodes.length} new version(s)`),0}async function P(d,r,n){let[{render:a},s,{ReviewChecklist:u}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./react-QWOAB3TB.js"),import("./ui-JEJGTURD.js")]),e=s.default??s;return new Promise(g=>{let h=a(e.createElement(u,{items:d.map(v=>({uc:v.uc})),defaultResolution:n,onSubmit:v=>{h.unmount(),g(v)}}))})}async function D(d){let{bothTTY:r}=await import("./headless-io-PWW6YKH2.js");return I(d,{out:n=>process.stdout.write(n+`
|
|
3
|
+
`),err:n=>process.stderr.write(n+`
|
|
4
|
+
`),confirm:async()=>!1,isTTY:r()},P)}export{C as parseVerdictsFile,D as reviewCommand,I as runReviewCommand};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a}from"./chunk-IYTHPCQ2.js";import"./chunk-KHU7C6EE.js";import"./chunk-3C5GMAM4.js";import"./chunk-NMZATEKQ.js";import"./chunk-FXPPQL4D.js";import"./chunk-RE3BZVGE.js";import"./chunk-6PS65QFF.js";import"./chunk-JFAFKHDX.js";import"./chunk-VLC24QVT.js";import"./chunk-CIFVUX3B.js";import"./chunk-OSALXGD4.js";import"./chunk-DNNZ353O.js";import"./chunk-YKTYVJBN.js";import"./chunk-CVOGP253.js";import"./chunk-427OQS2N.js";import"./chunk-ZPDM6FO7.js";import"./chunk-NVGBE2DR.js";import"./chunk-L5LI2JF4.js";import"./chunk-QHFUDBQH.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-NMKZHHB6.js";import"./chunk-UR6MHSHU.js";export{a as runDesign};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as b,b as c,c as d,d as e,e as f}from"./chunk-GAD6IBZ6.js";import"./chunk-K5JGCJ2K.js";import{f as a}from"./chunk-NMZATEKQ.js";import"./chunk-FXPPQL4D.js";import"./chunk-RE3BZVGE.js";import"./chunk-6PS65QFF.js";import"./chunk-JFAFKHDX.js";import"./chunk-VLC24QVT.js";import"./chunk-CIFVUX3B.js";import"./chunk-OSALXGD4.js";import"./chunk-DNNZ353O.js";import"./chunk-YKTYVJBN.js";import"./chunk-CVOGP253.js";import"./chunk-427OQS2N.js";import"./chunk-NVGBE2DR.js";import"./chunk-QHFUDBQH.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-NMKZHHB6.js";import"./chunk-UR6MHSHU.js";export{e as dedupPreFlags,c as displaySourceName,a as resolveAnswers,f as runExtract,b as sessionSourceRef,d as sourceBanner};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as A}from"./chunk-
|
|
2
|
+
import{a as A}from"./chunk-BBZBXSTP.js";import{E as M,F as P,G as K,H,I as U}from"./chunk-3CY3DZDH.js";import"./chunk-GLS46X7N.js";import{a as _,b as E}from"./chunk-TSWGQKUK.js";import{a as h,b as k}from"./chunk-YB54MHKU.js";import"./chunk-2YQ6TW77.js";import"./chunk-RHNKYNNZ.js";import{s as L}from"./chunk-RKWJG3WW.js";import{c as R}from"./chunk-SK2GVMTJ.js";import"./chunk-6EC54ZHT.js";import"./chunk-NEHF4C6X.js";import{a as x}from"./chunk-QYTMD6NM.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-S3DAAAE5.js";import"./chunk-QVJ7C4GW.js";import"./chunk-DL5CXC64.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-YZBLBPOE.js";import"./chunk-CJJXT5DO.js";import"./chunk-ZPDM6FO7.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-QHFUDBQH.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import{e as b,f as S,g as T}from"./chunk-M5JQXOCE.js";import"./chunk-TTJ4XMWP.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import{a as C}from"./chunk-3NR6OTHL.js";import"./chunk-VE3SUJMA.js";import"./chunk-E47GFYXA.js";import{a as v}from"./chunk-Z34XRBKQ.js";import"./chunk-NMKZHHB6.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";import{resolve as Y}from"path";import{existsSync as D}from"fs";function O(){return{register:(n,r)=>b(n,r),deregister:n=>S(n),cleanup:(n,r)=>T(n,r),remoteLogger:null}}async function le(n,r){let t=Y(n);if(!D(t))return process.stderr.write(`error: file not found: ${t}
|
|
3
3
|
`),2;if(r.finalValidation!==void 0&&r.finalValidation!=="on"&&r.finalValidation!=="off")return process.stderr.write(`error: --final-validation must be 'on' or 'off'
|
|
4
4
|
`),2;if(!t.endsWith("_test.md"))return process.stderr.write(`error: not a *_test.md file: ${t}
|
|
5
5
|
helpers are import-only \u2014 run a test that @imports it.
|
|
@@ -12,6 +12,6 @@ import{a as A}from"./chunk-5KSB5MOF.js";import{E as M,F as P,G as K,H,I as U}fro
|
|
|
12
12
|
\u2022 Run 'kane-cli login --username <user> --access-key <key>'
|
|
13
13
|
`):e instanceof h&&e.code==="refresh_failed"?process.stderr.write(`error: Token refresh failed. Run 'kane-cli login' to re-authenticate.
|
|
14
14
|
`):process.stderr.write(`error: auth resolution failed: ${e.message}
|
|
15
|
-
`),2}let y=String(p.resolvedCreds?.org_id??"");if(!y)return process.stderr.write("error: TMS did not return an org_id. Run `kane-cli login` again.\n"),2;{let{readMetaIfExists:e,assertOrgMatchOrExit:g}=await import("./testmd-actions-
|
|
15
|
+
`),2}let y=String(p.resolvedCreds?.org_id??"");if(!y)return process.stderr.write("error: TMS did not return an org_id. Run `kane-cli login` again.\n"),2;{let{readMetaIfExists:e,assertOrgMatchOrExit:g}=await import("./testmd-actions-LT5FNIR6.js"),d=g(e(t),y);if(d!==null)return d}let w=new R,j=A({isAgent:a,log:(e,g,d,V)=>w.log(e,g,d,V)}),F={path:t,cwd:process.cwd(),opts:r,isAgent:a,disableAskUser:!0,resolved:s,resolvedAuth:p,cliOverrides:i,environment:f,envConfig:N,profile:I,model:$,creds:o,configStore:l,session:w};try{return(await M(F,j,c)).exitCode}catch(e){return process.stderr.write(`error: ${e.message}
|
|
16
16
|
`),2}}var m=class extends Error{constructor(t,a){super(t);this.exitCode=a;this.name="CliArgError"}};function G(n){let r={mode:"mode",assertionMode:"assertion_mode",finalValidation:"final_validation",maxSteps:"max_steps",timeout:"timeout",globalContext:"global_context",localContext:"local_context",codeExport:"code_export",codeLanguage:"code_language",headless:"headless",cdpEndpoint:"cdp_endpoint",wsEndpoint:"ws_endpoint"},t=new Set(["max_steps","timeout"]),a={};for(let[c,s]of Object.entries(r)){let i=n[c];if(i===void 0||i==="")continue;let o=i;if(t.has(s)&&(o=Number(i),Number.isNaN(o))){let l="--"+c.replace(/[A-Z]/g,u=>"-"+u.toLowerCase());throw new m(`error: ${l} must be a number
|
|
17
17
|
`,2)}a[s]=o}return a}export{U as applyCliStepConfig,K as buildStepRunVariables,P as buildTestLevelVariables,G as optsToOverrides,H as replayVariablesForStep,le as runTestMdFile};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as p,b as g}from"./chunk-
|
|
2
|
+
import{a as p,b as g}from"./chunk-RWIHSR4H.js";import{b as m}from"./chunk-G5CYSC23.js";import{a as d}from"./chunk-RZ4F3BHX.js";import"./chunk-3NR6OTHL.js";import"./chunk-Z34XRBKQ.js";import{a as f,h as a,i as u}from"./chunk-NMKZHHB6.js";import"./chunk-UR6MHSHU.js";import{mkdirSync as y,writeFileSync as w,readFileSync as S,rmSync as c,cpSync as v,createWriteStream as T,existsSync as b}from"fs";import{join as s}from"path";import{tmpdir as k}from"os";import{spawn as h}from"child_process";import{Readable as I}from"stream";import{pipeline as $}from"stream/promises";function E(t){try{return S(s(t,"VERSION"),"utf-8").trim()||null}catch{return null}}function L(t,r,l){return l?t!==r:t===null||m(t,r)>0}function C(t){let r=a.split("/").pop()??a;return`https://registry.npmjs.org/${a}/-/${r}-${t}.tgz`}var R=5e3,A=6e4;async function x(){let t=new AbortController,r=setTimeout(()=>t.abort(),R);try{let l=await d(p(),{headers:{Accept:"application/json"},signal:t.signal});if(!l.ok)throw new Error(`Controller returned ${l.status} fetching skill version map`);let i=await l.json(),n=g(i,f);if(!n)throw new Error("No compatible skill version found for this kane-cli build");return n}finally{clearTimeout(r)}}async function _(t){let r=C(t),l=new AbortController,i=setTimeout(()=>l.abort(),A);try{let n=await d(r,{headers:{Accept:"application/octet-stream"},signal:l.signal});if(!n.ok||!n.body)throw new Error(`Failed to download skill tarball (${n.status})`);let e=s(k(),`kane-cli-skill-${t}-${process.pid}.tgz`);return await $(I.fromWeb(n.body),T(e)),e}finally{clearTimeout(i)}}function M(t,r){return new Promise((l,i)=>{y(r,{recursive:!0});let n=h("tar",["-xzf",t,"-C",r,"--strip-components=2","package/skills"],{stdio:["ignore","ignore","pipe"]}),e="";n.stderr?.on("data",o=>{e+=o.toString()}),n.on("error",o=>i(o)),n.on("close",o=>{o===0?l():i(new Error(`tar exited ${o}${e?`: ${e.trim()}`:""}`))})})}async function W(t){let r;try{r=t??await x()}catch(e){return{status:"failed",version:t??"unknown",installedTargets:0,error:e instanceof Error?e.message:String(e)}}let l=u.filter(({dir:e})=>L(E(e),r,!!t));if(l.length===0)return{status:"already-installed",version:r,installedTargets:0};let i=null,n=null;try{if(n=await _(r),i=s(k(),`kane-cli-skill-${r}-stage-${process.pid}`),c(i,{recursive:!0,force:!0}),await M(n,i),!b(s(i,"SKILL.md")))throw new Error(`Unexpected skill tarball layout for v${r}: SKILL.md not at package/skills/ root`);let e=0;for(let{dir:o}of l)try{c(o,{recursive:!0,force:!0}),y(o,{recursive:!0}),v(i,o,{recursive:!0,force:!0}),w(s(o,"VERSION"),r+`
|
|
3
3
|
`),e++}catch{}return e===0?{status:"failed",version:r,installedTargets:0,error:"Could not write to any agent skill directory"}:{status:"installed",version:r,installedTargets:e}}catch(e){return{status:"failed",version:r,installedTargets:0,error:e instanceof Error?e.message:String(e)}}finally{if(n)try{c(n,{force:!0})}catch{}if(i)try{c(i,{recursive:!0,force:!0})}catch{}}}function D(t){switch(t.status){case"installed":return`Installed kane-cli skill v${t.version} (${t.installedTargets}/${u.length} agent dirs). Restart your AI agent (Claude Code / Codex CLI / Gemini CLI) to load it.`;case"already-installed":return`kane-cli skill v${t.version} already installed.`;case"failed":return`Failed to install kane-cli skill: ${t.error??"unknown error"}`}}export{D as formatInstallResult,W as installSkill,L as targetNeedsInstall};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b,c,d}from"./chunk-
|
|
2
|
+
import{a,b,c,d}from"./chunk-GLVDOR5G.js";import"./chunk-UR6MHSHU.js";export{c as buildAgentEnv,b as findAssuranceAgent,a as platformPackageName,d as resolveAgentAuthEnv};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{d as a}from"./chunk-3GOZ7R4G.js";import"./chunk-3MSXQU2C.js";import"./chunk-LVWB6TB2.js";import"./chunk-AASBJJCU.js";import"./chunk-DCWCANNS.js";import"./chunk-3CY3DZDH.js";import"./chunk-GLS46X7N.js";import"./chunk-77PBBYRZ.js";import"./chunk-TSWGQKUK.js";import"./chunk-YB54MHKU.js";import"./chunk-2YQ6TW77.js";import"./chunk-UQVKNUYO.js";import"./chunk-RHNKYNNZ.js";import"./chunk-RKWJG3WW.js";import"./chunk-Y6HPW2OQ.js";import"./chunk-R7NNIQMH.js";import"./chunk-SK2GVMTJ.js";import"./chunk-5J3HQZNU.js";import"./chunk-6EC54ZHT.js";import"./chunk-NEHF4C6X.js";import"./chunk-QYTMD6NM.js";import"./chunk-MTG2LRGV.js";import"./chunk-WFQUDSKY.js";import"./chunk-5Y2G4NC7.js";import"./chunk-QG6LJCZG.js";import"./chunk-A2AZQ4PQ.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-S3DAAAE5.js";import"./chunk-QVJ7C4GW.js";import"./chunk-7ZMYAXES.js";import"./chunk-DL5CXC64.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-EDM6YACR.js";import"./chunk-RFHMDQXZ.js";import"./chunk-YZBLBPOE.js";import"./chunk-CJJXT5DO.js";import"./chunk-ZPDM6FO7.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-QHFUDBQH.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-WJG4ZPUH.js";import"./chunk-FYSWQ4K7.js";import"./chunk-X47VFBIV.js";import"./chunk-YCCUBQY4.js";import"./chunk-XUHVQ5VL.js";import"./chunk-M5JQXOCE.js";import"./chunk-TTJ4XMWP.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-3NR6OTHL.js";import"./chunk-VE3SUJMA.js";import"./chunk-E47GFYXA.js";import"./chunk-Z34XRBKQ.js";import"./chunk-TADJIOHV.js";import"./chunk-KVAALPTA.js";import{a as o}from"./chunk-DFS4RMVP.js";import"./chunk-IX34JIXK.js";import"./chunk-RGQIBS32.js";import"./chunk-NMKZHHB6.js";import{a as t}from"./chunk-HCBYKLMW.js";import{c as n}from"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import{e as r}from"./chunk-UR6MHSHU.js";var e=r(t(),1);async function p(i){let c=i.scenarioLimit!==void 0||i.perScenarioLimit!==void 0?{scenarioLimit:i.scenarioLimit,perScenarioLimit:i.perScenarioLimit}:void 0,{waitUntilExit:m}=n((0,e.jsx)(o,{children:(0,e.jsx)(a,{initialChatMode:"generate",initialObjective:i.objective,initialGenerateLimits:c})}),{exitOnCtrlC:!1});await m()}export{p as runGenerate};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{e as a,f as b,g as c,h as d,i as e,j as f,k as g,l as h,m as i,n as j,o as k,p as l,q as m}from"./chunk-
|
|
2
|
+
import{e as a,f as b,g as c,h as d,i as e,j as f,k as g,l as h,m as i,n as j,o as k,p as l,q as m}from"./chunk-77PBBYRZ.js";import"./chunk-TSWGQKUK.js";import"./chunk-YB54MHKU.js";import"./chunk-2YQ6TW77.js";import"./chunk-RKWJG3WW.js";import"./chunk-QYTMD6NM.js";import"./chunk-QVJ7C4GW.js";import"./chunk-DL5CXC64.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-L5LI2JF4.js";import"./chunk-XUHVQ5VL.js";import"./chunk-M5JQXOCE.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-3NR6OTHL.js";import"./chunk-Z34XRBKQ.js";import"./chunk-RGQIBS32.js";import"./chunk-NMKZHHB6.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{i as ExportError,c as assertOrgMatchOrExit,j as exportTestmd,b as metaMatchesOrg,a as readMetaIfExists,d as resolveCurrentOrgId,l as resolveSyncAuth,h as runDeleteAction,k as runExportAction,e as runListAction,f as runListTui,g as runStatusAction,m as runSyncAction};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a}from"./chunk-QVJ7C4GW.js";import"./chunk-DL5CXC64.js";import"./chunk-RZ4F3BHX.js";import"./chunk-3NR6OTHL.js";import"./chunk-NMKZHHB6.js";import"./chunk-UR6MHSHU.js";export{a as refreshOAuthToken};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as t}from"./chunk-
|
|
2
|
+
import{a as t}from"./chunk-3NR6OTHL.js";import"./chunk-NMKZHHB6.js";import"./chunk-UR6MHSHU.js";async function l(n,o,r){let{ControllerClient:e}=await import("./controller-client-RD2YEMAH.js");await new e(t(n).controllerBaseUrl,{username:o,accessKey:r}).getTmsCredentials()}export{l as validateBasicAuth};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b,c,d}from"./chunk-
|
|
2
|
+
import{a,b,c,d}from"./chunk-G5CYSC23.js";import"./chunk-RZ4F3BHX.js";import"./chunk-NMKZHHB6.js";import"./chunk-UR6MHSHU.js";export{d as checkForUpdate,b as compareVersions,c as getSeverity,a as getUpdateCommand};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as T}from"./chunk-GRB66C5S.js";import"./chunk-RN4OSVTG.js";import"./chunk-BC7UVJJB.js";import{a as A}from"./chunk-
|
|
2
|
+
import{b as T}from"./chunk-GRB66C5S.js";import"./chunk-RN4OSVTG.js";import"./chunk-BC7UVJJB.js";import{a as A}from"./chunk-QHFUDBQH.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L4JIMNKW.js";import{b as V}from"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import{d as g,e as x}from"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";import{writeFileSync as le,mkdirSync as ce}from"fs";import{tmpdir as pe}from"os";import{dirname as ue,join as ge}from"path";var F={DERIVES:"derivation",automates:"linkage",exercises:"mesh",verifies:"mesh",depends_on:"crosslink",reuses:"crosslink",belongs_to:"containment",scoped_to:"containment",annotates:"annotation"},ne=(t,r)=>t===g.SOURCE?String(r.source_id??""):t===g.AC?String(r.text??""):t===g.STYLENOTE?String(r.statement??r.text??""):t===g.GAP?String(r.text??r.question??""):String(r.title??"");function H(t){let r=[];for(let[o,p]of t.nodeLabel){let f=t.getNode(o)?.content??{};r.push({cid:o,label:p,slug:p===g.SOURCE?String(f.source_id??""):t.nameOf.get(o)??o.slice(0,19),trust:t.trust.get(o)??"derived",fresh:t.stale(o),title:ne(p,f),content:f,superseded:t.superseded.has(o)})}let e=new Map;for(let[o]of t.nodeLabel)for(let p of t.edgesFrom(o)){let f=`${p.type}|${p.src}|${p.dst}`,v=typeof p.props?.anchor=="string"?p.props.anchor:void 0,w=e.get(f);w?(w.count++,v&&w.anchors.push(v)):e.set(f,{key:f,type:p.type,family:F[p.type]??"mesh",src:p.src,dst:p.dst,count:1,anchors:v?[v]:[],container:F[p.type]==="containment"})}let a=[...e.values()],s={},l={trusted:0,derived:0,archived:0},d={fresh:0,stale:0,orphaned:0,superseded:0},i=0;for(let o of r)o.superseded||(i++,s[o.label]=(s[o.label]??0)+1,o.label!==g.SOURCE&&l[o.trust]++,d[o.fresh]++);return{nodes:r,edges:a,summary:{nodes:i,edges:a.reduce((o,p)=>o+p.count,0),byLabel:s,trust:l,fresh:d,usecases:s[g.USECASE]??0,designed:0}}}var E=(t,r)=>t<r?-1:t>r?1:0;function re(t,r,e){let a=new Set,s=d=>{let i=e.nodeLabel.get(d);if(i===g.USECASE)a.add(d);else if(i===g.SCENARIO)for(let o of e.edgesFrom(d))o.type===x.BELONGS_TO&&a.add(o.dst)},l=e.edgesFrom(t);if(r===g.SCENARIO)for(let d of l)d.type===x.BELONGS_TO&&a.add(d.dst);if(r===g.AC)for(let d of l)d.type===x.SCOPED_TO&&s(d.dst);if(r===g.TEST)for(let d of l)d.type===x.AUTOMATES&&s(d.dst);return a}function P(t,r){let e=new Map,a=t.nodes.filter(i=>i.label===g.USECASE).map(i=>i.cid),s=a.map(i=>({ucCid:i,slug:r.nameOf.get(i)??i.slice(0,19),designed:r.designOf.has(i),nodeCids:[i]})).sort((i,o)=>E(i.slug,o.slug)),l={ucCid:"__shared__",slug:"cross-cutting",designed:!1,nodeCids:[]},d=new Map(s.map(i=>[i.ucCid,i]));for(let i of a)e.set(i,i);for(let i of t.nodes){if(i.label===g.SOURCE||i.label===g.USECASE)continue;let o=re(i.cid,i.label,r);if(o.size===1){let p=[...o][0];e.set(i.cid,p),d.get(p).nodeCids.push(i.cid)}else e.set(i.cid,"__shared__"),l.nodeCids.push(i.cid)}return{laneOf:e,lanes:[...s,l]}}var N={source:0,usecase:1,scenario:2,ac:3,test:4,stylenote:5,gap:5},se=6,G=260,R=64,z=28;function B(t,r,e){let{lanes:a}=r,s=new Map(t.nodes.map(n=>[n.cid,n])),l=new Map,d=[],i=[],o=n=>{let m=n.map(h=>l.get(h)).filter(h=>h!==void 0);return m.length?m.reduce((h,S)=>h+S,0)/m.length:Number.MAX_SAFE_INTEGER},p=a.filter(n=>n.ucCid!=="__shared__"||n.nodeCids.length>0),f=t.nodes.filter(n=>n.label===g.SOURCE).sort((n,m)=>E(n.slug,m.slug)),v=0;for(let n of p){let m=n.nodeCids.map(c=>s.get(c)).filter(Boolean),h=c=>m.filter(u=>u.label===c),S=h(g.USECASE).sort((c,u)=>E(c.slug,u.slug));S.forEach((c,u)=>l.set(c.cid,u));let D=h(g.SCENARIO).sort((c,u)=>E(c.slug,u.slug));D.forEach((c,u)=>l.set(c.cid,u));let M=h(g.AC).sort((c,u)=>{let _=o(e.edgesInto(c.cid).filter(b=>b.type===x.EXERCISES).map(b=>b.src)),O=o(e.edgesInto(u.cid).filter(b=>b.type===x.EXERCISES).map(b=>b.src));return _-O||E(c.slug,u.slug)});M.forEach((c,u)=>l.set(c.cid,u));let j=h(g.TEST).sort((c,u)=>{let _=o(e.edgesFrom(c.cid).filter(b=>b.type===x.VERIFIES).map(b=>b.dst)),O=o(e.edgesFrom(u.cid).filter(b=>b.type===x.VERIFIES).map(b=>b.dst));return _-O||E(c.slug,u.slug)});j.forEach((c,u)=>l.set(c.cid,u));let q=m.filter(c=>N[c.label]===void 0||N[c.label]>=5).sort((c,u)=>E(c.slug,u.slug));q.forEach((c,u)=>l.set(c.cid,u));let I=Math.max(1,S.length,D.length,M.length,j.length,q.length)*R+z;for(let c of m){let u=N[c.label]??4,_=l.get(c.cid)??0;d.push({...c,lane:n.ucCid,col:u,x:u*G,y:v+z/2+_*R})}i.push({...n,y0:v,y1:v+I}),v+=I}let w=Math.max(v,R);f.forEach((n,m)=>d.push({...n,lane:"__spine__",col:0,x:0,y:w/(f.length+1)*(m+1)}));let L=se*G;return{nodes:d,lanes:i,width:L,height:w}}function ie(t){return t.design_of?"design":t.review.length>0?"review":t.nodes.some(r=>r.label==="source")?"ingest":t.nodes.length>0?"extract":"other"}function U(t){let r=new Map,e=new Map,a=[];for(let s of t){for(let n of s.nodes)r.has(n.cid)||r.set(n.cid,s.seq);let l=new Map(e);for(let n of s.nodes)n.content?.derived===!0&&!e.has(n.cid)&&e.set(n.cid,"derived");for(let n of s.review)n.resolution==="approved"||n.resolution==="edited"?e.set(n.id,"trusted"):n.resolution==="rejected"?e.set(n.id,"archived"):n.resolution==="reset"&&e.set(n.id,"derived");let d=n=>{let m=0;for(let[h,S]of e)S===n&&l.get(h)!==n&&m++;return m},i=0;for(let[n,m]of e){let h=l.get(n);m==="derived"&&(h==="trusted"||h==="archived")&&i++}let o={trusted:d("trusted"),archived:d("archived"),reset:i},p=ie(s),f=s.nodes.map(n=>n.cid),v=s.edges.map(n=>`${n.type}|${n.src}|${n.dst}`),w=s.review.map(n=>n.id),L=p==="review"?"review \xB7 +"+o.trusted+" trusted"+(o.archived?", +"+o.archived+" archived":""):p+" \xB7 +"+f.length+" nodes";a.push({seq:s.seq,ts:s.ts,kind:p,label:L,mintedNodeCids:f,mintedEdgeKeys:v,reviewedNodeCids:w,trustDelta:o})}return{commits:a,bornSeq:r}}function Y(t,r,e){let a=[];for(let s of t){s.nodes.some(l=>l.cid===r)&&a.push({seq:s.seq,ts:s.ts,kind:"minted",detail:"minted here"});for(let l of s.review)l.id===r&&a.push({seq:s.seq,ts:s.ts,kind:"review",detail:l.resolution+(l.reason?": "+l.reason:"")})}return e.length&&a.push({seq:0,ts:"",kind:"derived_from",detail:"source lines "+e.join(", ")}),a}var ae={"&":"&","<":"<",">":">",'"':""","'":"'"};function k(t){return String(t).replace(/[&<>"']/g,r=>ae[r])}var $=t=>"\\u"+t.charCodeAt(0).toString(16).padStart(4,"0"),oe=new RegExp("[\u2028\u2029]","g");function W(t){return t.replace(/[<>&]/g,$).replace(oe,$)}var X=t=>t.replace("sha256:","").slice(0,12);function K(t){if(!t||typeof t!="object")return"";let r=String(t.operator??""),e=t.operand!=null?String(t.operand):"",a=t.unit!=null?" "+String(t.unit):"",s=t.baseline!=null?String(t.baseline):"",l=t.within&&typeof t.within=="object"?t.within:null,d;switch(r){case"exists":d="exists: "+e;break;case"forall":d="for all "+e;break;case"contains":d="contains "+e;break;case"gte":d=">= "+e+a;break;case"lte":d="<= "+e+a;break;case"equals":d="= "+e+a+(s?" (was "+s+")":"");break;case"changed-by":d="changed by "+e+a;break;default:d=(r+" "+e+a).trim()}if(l){let i=l.threshold!=null?String(l.threshold):"",o=l.unit!=null?String(l.unit):"";(i||o)&&(d+=" within "+i+o)}return d.trim()}var C=t=>t==null||t===""?"":`<span class="chip">${k(t)}</span>`,y=(t,r)=>r==null||r===""?"":`<div class="kv"><span class="k">${k(t)}</span><span class="v">${k(r)}</span></div>`,de=t=>Array.isArray(t)&&t.length?`<ul class="crit">${t.map(r=>`<li>${k(r)}</li>`).join("")}</ul>`:"";function J(t,r){let e=r??{};switch(t){case"usecase":return[y("description",e.description),y("value",e.value),[C(e.risk?"risk: "+e.risk:""),...Array.isArray(e.actors)?e.actors.map(a=>C(a)):[]].join(""),de(e.criteria)].join("");case"scenario":return[y("intent",e.intent),[C(e.case_type)].join(""),e.parameters&&typeof e.parameters=="object"?Object.entries(e.parameters).map(([a,s])=>y(a,s)).join(""):"",y("techniques",e.technique_notes)].join("");case"ac":return[y("",e.text),[C(e.kind),C(e.risk?"risk: "+e.risk:"")].join(""),(()=>{let a=K(e.expected_answer);return a?`<div class="pred">${k(a)}</div>`:""})()].join("");case"test":{let a=K(e.check),s=e.test_md_blob!=null?`<pre class="md">${k(String(e.test_md_blob))}</pre>`:"";return[a?`<div class="pred">${k(a)}</div>`:"",y("definitionId",e.definitionId),s].join("")}case"source":return[y("source_id",e.source_id),y("blob",e.blob)].join("");case"stylenote":return[e.statement?`<div class="pred">${k(e.statement)}</div>`:"",[C(e.learned_from_kind?"learned from: "+e.learned_from_kind:"")].join(""),y("",e.text),Array.isArray(e.tags)?e.tags.map(a=>C(a)).join(""):""].join("");case"gap":return[y("",e.text??e.question),[C(e.kind),C(e.risk?"risk: "+e.risk:"")].join(""),y("why",e.risk_rationale),y("ref",e.ref)].join("");default:return""}}function Z(t,r,e,a){let s=H(t),l=P(s,t),d=B(s,l,t),{commits:i}=U(r);s.summary.designed=l.lanes.filter(n=>n.designed&&n.ucCid!=="__shared__").length;let o={},p={};for(let n of s.nodes){o[n.cid]=J(n.label,n.content);let m=t.edgesInto(n.cid).filter(h=>h.type===x.DERIVES&&typeof h.props?.anchor=="string").map(h=>h.props.anchor);p[n.cid]=Y(r,n.cid,m)}let f=d.nodes.map(n=>({cid:n.cid,slug:n.slug,label:n.label,trust:n.trust,fresh:n.fresh,title:n.title,superseded:n.superseded,lane:n.lane,col:n.col,x:n.x,y:n.y})),v=d.lanes.map(n=>({ucCid:n.ucCid,slug:n.slug,designed:n.designed,y0:n.y0,y1:n.y1})),L=s.nodes.some(n=>n.label===g.SOURCE)?{}:void 0;return{meta:{fromSeq:r[0]?.seq??0,tipHash:e[e.length-1]??null,storePath:a,schema:"assurance/context@1",asOf:r[r.length-1]?.ts??null},summary:s.summary,lanes:v,nodes:f,edges:s.edges,commits:i,lineage:p,contentHtml:o,width:d.width,height:d.height,source:L}}var Q="__PAYLOAD__",ee=`<!doctype html>
|
|
3
3
|
<html lang="en">
|
|
4
4
|
<head>
|
|
5
5
|
<meta charset="utf-8">
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as Y}from"./chunk-I37UOX73.js";import"./chunk-GBBVP2JW.js";import{a as j,c as F}from"./chunk-OPDJD7WS.js";import"./chunk-3C5GMAM4.js";import"./chunk-GRB66C5S.js";import{a as B}from"./chunk-64LC36AF.js";import"./chunk-JFAFKHDX.js";import"./chunk-VLC24QVT.js";import"./chunk-CIFVUX3B.js";import"./chunk-DNNZ353O.js";import"./chunk-RN4OSVTG.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import{a as I}from"./chunk-QHFUDBQH.js";import{b as U}from"./chunk-RGDQMKNJ.js";import"./chunk-L4JIMNKW.js";import{e as N}from"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import{a as V}from"./chunk-YCCUBQY4.js";import{y as m}from"./chunk-NMKZHHB6.js";import{a as P}from"./chunk-HCBYKLMW.js";import{a as A,b as u,k as M}from"./chunk-C44QQJR4.js";import{a as Q}from"./chunk-6YGTRKDT.js";import{e as O}from"./chunk-UR6MHSHU.js";var T=O(Q(),1);function K(e,p,k){let{ref:D,reason:d,by:y}=k;if(!d||d.trim().length===0)return{record:null,errors:[{code:"REASON_REQUIRED",detail:"archiving a node needs a reason \u2014 it becomes the tombstone's provenance"}]};let x=p.resolve(D);if(!x)return{record:null,errors:[{code:"UNKNOWN_REF",detail:`no node '${D}' in the graph`}]};let r=p.tipOf(x.cid);if(p.superseded.has(r))return{record:null,errors:[{code:"ALREADY_ARCHIVED",detail:`${D} is already superseded at its tip (${r.slice(0,19)}\u2026)`}]};let t=N(e,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[{kind:"node",old:r,new:null,reason:d,by:y}],source_head_moves:{}},{expectPrev:p.latestHash});return U(e),{record:t.record,errors:null}}function L(e){let p=e.by??{kind:"human",id:process.env.USER??"operator"},k=e.mode==="interactive"?"override":e.mode,D={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},d={applied:0,committed:0,retired:0,skipped:0,deferred:0,failed:0},y=new Map;for(let r of e.planRows)if(r.held_ref&&e.held){let t=e.held.rows.find($=>$.temp_ref===r.held_ref);if(!t)continue;let l={kind:t.kind,ref:t.temp_ref,title:t.title,why:t.why,origin:"content-change",...r.impact?{impact:r.impact}:{}};y.set(l.ref,{card:l,source:"held",heldRef:t.temp_ref})}else if(r.kind==="MODIFY"){let t={kind:"MODIFY",ref:r.ref,title:r.ref,why:`${r.reason}: ${r.provenance}`,origin:r.origin??"structural-stale",...r.impact?{impact:r.impact}:{}};y.set(t.ref,{card:t,source:"row",row:r})}else if(r.kind==="ADD"){let t={kind:"ADD",ref:r.ref,title:r.ref,why:r.reason,origin:r.origin??"content-change"};y.set(t.ref,{card:t,source:"row",row:r})}for(let r of e.archive){if(r.kind!=="ARCHIVE")continue;let t={kind:"ARCHIVE",ref:r.ref,title:r.ref,why:r.why,provenance:r.why,...r.impact?{impact:r.impact}:{}};y.set(t.ref,{card:t,source:"archive",row:r})}let x=r=>(d.failed++,{outcome:"failed",detail:r});return{cards:()=>[...y.values()].map(r=>r.card),async submit(r,t){let l=y.get(r);if(!l)return x(`no card ${r}`);if(t.v==="skip")return d.skipped++,e.signals({ref:r,verdict:"gap-dismissed"}),{outcome:"skipped"};if(t.v==="defer")return d.deferred++,{outcome:"deferred"};if(t.v==="archive"){if(l.source!=="archive")return x(`${r} is not an ARCHIVE card`);let c=I(e.contextDir),C=c.resolve(l.row.ref);if(C&&c.superseded.has(c.tipOf(C.cid)))return d.skipped++,{outcome:"skipped",detail:"already retired \u2014 nothing to do"};let n=K(e.contextDir,I(e.contextDir),{ref:l.row.ref,reason:`reconcile retire: ${l.row.why}`,by:p});return n.errors?x(n.errors.map(s=>`${s.code}: ${s.detail}`).join("; ")):(d.retired++,e.signals({ref:r,verdict:"gap-resolved-archive",reason:l.row.why}),{outcome:"retired"})}if(l.source==="archive")return x(`${r} takes archive/skip/defer, not approve`);if(l.source==="held"){let c=Y(e.contextDir,e.held,l.heldRef,p,t.edits);if(!c.ok)return x(c.message);if(c.kind==="ADD"){let C=await e.runDesign(c.ref,{yes:!0,mode:k,...t.steering?{because:t.steering}:{}});return C!==0?(d.failed++,{outcome:"failed",landed:!0,detail:`committed ${c.ref}, but its design run exited ${C} \u2014 finish with kane-cli design tests --use-case ${c.ref}`}):(d.applied++,e.signals({ref:r,verdict:"gap-resolved-create",...t.steering?{reason:t.steering}:{}}),{outcome:"applied",detail:c.ref})}if(t.steering){let C=I(e.contextDir),n=j(C,c.ref);if(!n.ok)return d.committed++,{outcome:"committed",detail:`committed ${c.ref}, but steering could not resolve it (${n.message}) \u2014 steer via kane-cli maintain evolve ${c.ref}`};let s=await F(e.contextDir,n.target,{yes:!0,mode:k,because:t.steering},D,e.runDesign,"batch");if(s.outcome==="no-design"){let R=await e.runDesign(n.target.seamRef,{yes:!0,mode:k,because:t.steering});return R!==0?(d.failed++,{outcome:"failed",landed:!0,detail:`committed ${c.ref}, but its steered design run exited ${R} \u2014 finish with kane-cli design tests --use-case ${n.target.seamRef}`}):(d.applied++,e.signals({ref:r,verdict:"gap-resolved-create",reason:t.steering}),{outcome:"applied",detail:c.ref})}return s.outcome==="failed"||s.outcome==="paused"?(d.failed++,{outcome:"failed",landed:!0,detail:`committed ${c.ref}, but the steering evolve ${s.outcome} (exit ${s.code}) \u2014 finish with kane-cli maintain evolve ${c.ref}`}):s.outcome==="declined"?(d.committed++,{outcome:"committed",detail:`committed ${c.ref} \u2014 the steering evolve was declined; re-run kane-cli maintain evolve ${c.ref}`}):(d.applied++,e.signals({ref:r,verdict:"gap-resolved-evolve",reason:t.steering}),{outcome:"applied",detail:c.ref})}return d.committed++,e.signals({ref:r,verdict:"gap-resolved-evolve"}),{outcome:"committed",detail:c.ref}}let $=I(e.contextDir),b=j($,l.row.ref);if(!b.ok)return x(b.message);if(l.card.kind==="ADD"){let c=await e.runDesign(b.target.seamRef,{yes:!0,mode:k});return c!==0?x(`design run exited ${c}`):(d.applied++,e.signals({ref:r,verdict:"gap-resolved-create"}),{outcome:"applied"})}let h=await F(e.contextDir,b.target,{yes:!0,mode:k,...t.steering?{because:t.steering}:{}},D,e.runDesign,"batch");return h.outcome==="evolved"?(d.applied++,e.signals({ref:r,verdict:"gap-resolved-evolve",...t.steering?{reason:t.steering}:{}}),{outcome:"applied"}):h.outcome==="failed"||h.outcome==="paused"?x(`evolve ${h.outcome} (exit ${h.code})`):(d.skipped++,{outcome:"skipped",detail:h.outcome})},summary:()=>({...d})}}var v=O(P(),1);function S(e){return e.kind==="ARCHIVE"?[{v:"archive",label:"retire",detail:"tombstone it \u2014 the graph forgets forward"},{v:"skip",label:"skip",detail:"keep it \u2014 decided, never re-offered"},{v:"defer",label:"defer",detail:"not now \u2014 the plan re-offers it"}]:[{v:"approve",label:"approve",detail:e.kind==="ADD"?"commit + design it":"commit the updated version (old\u2192new redirect)"},{v:"skip",label:e.origin==="content-change"?"reject":"skip",detail:e.origin==="content-change"?"drop the staged proposal \u2014 nothing committed":"leave it as is"},{v:"defer",label:"defer",detail:"not now \u2014 the plan keeps it staged"}]}function E(e){return e.kind==="ARCHIVE"?null:S(e).length}var X={ADD:{color:m.green??"green"},MODIFY:{color:"yellow"},ARCHIVE:{color:m.red}},z=60;function G({card:e,position:p,sel:k=0,focused:D=!1,freeText:d=null}){let{stdout:y}=M(),r=(y?.columns??80)<z,t=S(e),l=E(e),$=X[e.kind],b=n=>D&&k===n?(0,v.jsx)(u,{color:m.generateAccent,children:"\u25B8"}):" ",h=e.impact,c=h&&h.stale_refs.length>0?`${e.kind==="ARCHIVE"?"retiring drops":"approving marks"} ${h.stale_refs.length} item(s) stale`+((h.direct_refs?.length??0)>0?` \u2014 ${h.direct_refs.length} directly touched: ${h.direct_refs.join(", ")}`:""):null,C=(0,v.jsxs)(A,{flexDirection:"column",children:[(0,v.jsx)(u,{bold:!0,color:m.generateAccent,children:`? reconcile \u2014 item ${p.n} of ${p.of}`}),(0,v.jsxs)(u,{bold:!0,children:[" ",(0,v.jsx)(u,{color:$.color,children:`[${e.kind}]`}),` ${e.title}`]}),(0,v.jsx)(u,{color:m.muted,children:` ${e.why}`}),c?(0,v.jsx)(u,{color:m.muted,children:` impact: ${c}`}):null,e.kind==="ARCHIVE"&&e.provenance&&e.provenance!==e.why?(0,v.jsx)(u,{color:m.muted,children:` ${e.provenance}`}):null,t.map((n,s)=>(0,v.jsxs)(u,{children:[" ",b(s),` ${s+1} ${n.label}`,(0,v.jsx)(u,{color:m.dim,children:` \u2014 ${n.detail}`})]},`o-${s}`)),l!==null?d?(0,v.jsxs)(A,{children:[(0,v.jsxs)(u,{children:[" ",(0,v.jsx)(u,{color:m.generateAccent,children:"\u25B8"})," ",(0,v.jsx)(u,{color:m.dim,children:"\u270E "})]}),(0,v.jsx)(V,{value:d.value,onChange:d.onChange,onSubmit:d.onSubmit,onCancel:d.onCancel,placeholder:"steer the redesign (approves, then evolves with your words)"})]}):(0,v.jsxs)(u,{children:[" ",b(l)," ",(0,v.jsx)(u,{color:m.dim,children:"\u270E steer the redesign"})]}):null]});return r?C:(0,v.jsx)(A,{flexDirection:"column",borderStyle:"round",borderColor:m.generateAccent,paddingX:1,children:C})}var g=O(P(),1);function q(e){return e.landed?"committed":e.outcome}var J={applied:"\u2713",committed:"\u2713",retired:"\u2713",skipped:"\xB7",deferred:"\u2013",failed:"\u2717"};function Z({controller:e,cards:p,note:k,markOutcome:D,routeChat:d,onFinish:y,onCtrlC:x,pauseRef:r}){let[t,l]=(0,T.useState)(p.length>0?{at:"card",idx:0,sel:0,editor:null}:{at:"chat",text:"",busy:null}),$=(0,T.useRef)(0),b=(0,T.useRef)(t);b.current=t;let h=(0,T.useRef)(!1),c=()=>{k((0,g.jsx)(u,{color:m.dim,children:"walk paused \u2014 every verdict so far is committed; re-run the same command to continue"})),y(3)},C=()=>{if(h.current)return;h.current=!0;let i=b.current;if(i.at==="busy"||i.at==="chat"&&i.busy!==null){k((0,g.jsx)(u,{color:m.dim,children:"finishing the current item, then pausing\u2026"}));return}if(i.at==="chat"){y($.current);return}c()};r&&(r.current=C);let n=t.at==="card"||t.at==="busy"?p[t.idx]:null,s=i=>{let o=i+1;if(o<p.length)l({at:"card",idx:o,sel:0,editor:null});else{let a=e.summary();k((0,g.jsx)(u,{color:m.dim,children:`reconcile walk: ${a.applied} applied, ${a.committed} committed, ${a.retired} retired, ${a.skipped} skipped, ${a.deferred} deferred`+(a.failed>0?`, ${a.failed} failed`:"")})),k((0,g.jsx)(u,{color:m.dim,children:"anything else? steer a redesign \u2014 `<uc-ref> <what to change>` \u2014 or press Enter to finish"})),l({at:"chat",text:"",busy:null})}},R=(0,T.useRef)(!1),w=(i,o)=>{if(R.current)return;R.current=!0;let a=p[i];l({at:"busy",idx:i,label:o.v==="archive"?"retiring\u2026":o.v==="approve"&&o.steering?"committing, then steering the redesign\u2026":"applying\u2026"}),e.submit(a.ref,o).catch(f=>({outcome:"failed",detail:f instanceof Error?f.message:String(f)})).then(f=>{let _=J[f.outcome]??"\xB7";if(k((0,g.jsxs)(u,{children:[(0,g.jsx)(u,{color:f.outcome==="failed"?m.red:m.green,children:_}),` ${f.outcome} [${a.kind}] ${a.title}`,f.detail?(0,g.jsx)(u,{color:m.dim,children:` \u2014 ${f.detail}`}):null,f.outcome!=="failed"&&f.outcome!=="skipped"&&f.outcome!=="deferred"&&a.impact&&a.impact.stale_refs.length>0?(0,g.jsx)(u,{color:m.dim,children:` \xB7 ${a.impact.stale_refs.length} item(s) now stale`}):null]})),f.outcome==="failed"&&($.current=$.current===0?1:$.current),D(a.ref,q(f)),R.current=!1,h.current){c();return}s(i)})},W=(0,T.useMemo)(()=>({isFocused:()=>b.current.at==="card"&&b.current.editor===null,onMove:i=>{l(o=>{if(o.at!=="card")return o;let a=p[o.idx],f=E(a)??S(a).length-1;return{...o,sel:Math.max(0,Math.min(f,o.sel+i))}})},onSelect:()=>{let i=b.current;if(i.at!=="card")return;let o=p[i.idx],a=E(o);if(a!==null&&i.sel===a){l({...i,editor:""});return}let f=S(o)[i.sel];f&&w(i.idx,{v:f.v})},onDigit:i=>{let o=b.current;if(o.at!=="card")return;let a=S(p[o.idx])[i-1];a&&w(o.idx,{v:a.v})},onType:i=>{l(o=>o.at!=="card"||E(p[o.idx])===null?o:{...o,editor:(o.editor??"")+i})},onBack:()=>{}}),[p]);return(0,T.useEffect)(()=>{t.at==="done"&&y($.current)},[t.at]),(0,g.jsxs)(A,{flexDirection:"column",children:[(0,g.jsx)(B,{onToggleThinking:()=>{},onCtrlC:()=>{x(),C()},panel:W}),t.at==="card"&&n?(0,g.jsx)(G,{card:n,position:{n:t.idx+1,of:p.length},sel:t.sel,focused:t.editor===null,freeText:t.editor!==null?{value:t.editor,onChange:i=>l(o=>o.at==="card"?{...o,editor:i}:o),onSubmit:i=>{let o=b.current;o.at==="card"&&(i.trim()?w(o.idx,{v:"approve",steering:i.trim()}):l({...o,editor:null}))},onCancel:()=>l(i=>i.at==="card"?{...i,editor:null}:i)}:null}):null,t.at==="busy"?(0,g.jsx)(u,{color:m.dim,children:`\u2026 ${t.label}`}):null,t.at==="chat"?t.busy?(0,g.jsx)(u,{color:m.dim,children:`\u2026 ${t.busy}`}):(0,g.jsxs)(A,{children:[(0,g.jsx)(u,{color:m.generateAccent,children:"\u203A "}),(0,g.jsx)(V,{value:t.text,onChange:i=>l(o=>o.at==="chat"?{...o,text:i}:o),onSubmit:i=>{let o=i.trim();if(!o){l({at:"done"});return}l({at:"chat",text:"",busy:"redesigning\u2026"}),d(o).catch(a=>`\u2717 redesign failed: ${a instanceof Error?a.message:String(a)}`).then(a=>{if(k((0,g.jsx)(u,{children:a})),h.current){c();return}l({at:"chat",text:"",busy:null})})},onCancel:()=>{},placeholder:"uc-\u2026 what to change (Enter on empty = finish)"})]}):null]})}async function xe(e){let p={current:null},k=n=>{p.current?.append(n)},D=null,d=async(n,s)=>{let[{runDesign:R},{resolveAgentAuthEnv:w},{runAgent:W},{preflightTurn:i}]=await Promise.all([import("./run-2RFR2ASQ.js"),import("./spawner-VD6YFZ43.js"),import("./bridge-WVFTWHKP.js"),import("./turn-preflight-JGYT7LXP.js")]);D??=await w();let o=D;return R({useCase:n,force:!0,mode:s.mode??"override",...s.because?{because:s.because}:{},...s.changeDelta!==void 0?{changeDelta:s.changeDelta}:{},...s.priorDesign!==void 0?{priorDesign:s.priorDesign}:{}},{contextDir:e.dir,agent:W,preflightTurn:()=>i(o),ask:async()=>[],out:a=>k((0,g.jsx)(u,{color:m.dim,children:` ${a}`})),progress:()=>{},isTTY:!1,auth:o})},y=e.runDesign??d,x=L({contextDir:e.dir,held:e.held,archive:e.archive,planRows:e.rows,runDesign:y,mode:"interactive",signals:e.signals}),r=new Set(e.rows.filter(n=>n.applied!==void 0).map(n=>n.held_ref??n.ref)),t=x.cards().filter(n=>!r.has(n.ref)&&!(n.kind==="ARCHIVE"&&e.archiveState?.[n.ref]!==void 0)),l=n=>e.rows.findIndex(s=>(s.held_ref??s.ref)===n),$=(n,s)=>{try{if(t.find(W=>W.ref===n)?.kind==="ARCHIVE"){s==="retired"?e.markA?.(n,"retired"):s==="skipped"&&e.markA?.(n,"skipped");return}let w=l(n);if(w<0)return;s==="applied"||s==="committed"?e.mark?.(w,"approved"):s==="skipped"&&e.mark?.(w,"skipped")}catch{}},b=async n=>{let[{openGraph:s},{resolveParentUc:R,evolveOneUc:w}]=await Promise.all([import("./readmodel-KTNI6QDC.js"),import("./evolve-cmd-V7H4PLCX.js")]),[W,...i]=n.split(/\s+/),o=s(e.dir),a=R(o,W);if(!a.ok)return`couldn't resolve '${W}' \u2014 start with a use-case id (uc-\u2026): ${a.message}`;if(i.length===0)return`say what to change: \`${W} <your words>\` \u2014 the words become the redesign's change delta`;let f=i.join(" "),_={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},H=await w(e.dir,a.target,{yes:!0,mode:"override",because:f},_,y,"batch");return H.outcome==="evolved"?(e.signals({ref:a.target.display,verdict:"gap-resolved-evolve",reason:f}),`\u2713 redesigned ${a.target.display} \u2014 "${f}"`):`\u2717 evolve ${H.outcome} for ${a.target.display} (exit ${H.code})`};if(e.script){let n=0;for(let s of t){let R=await e.script(s),w=await x.submit(s.ref,R);w.outcome==="failed"&&n===0&&(n=1),$(s.ref,q(w))}return n}let[{render:h},{ScrollbackProvider:c},{ScrollbackTap:C}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./scrollback-JLPJR25X.js"),import("./ScrollbackTap-Q3IOKNMS.js")]);return new Promise(n=>{let s=!1,R=f=>{s||(s=!0,(async()=>{process.removeListener("SIGINT",o),await p.current?.flush();try{a.unmount()}catch{}n(f)})())},w=0,W={current:null},i=()=>{if(w+=1,w>=2){process.removeListener("SIGINT",o);try{a.unmount()}catch{}n(130)}},o=()=>{i(),W.current?.()};process.on("SIGINT",o);let a=h((0,g.jsxs)(c,{children:[(0,g.jsx)(C,{into:p}),(0,g.jsx)(Z,{controller:x,cards:t,note:k,markOutcome:$,routeChat:b,onFinish:R,onCtrlC:i,pauseRef:W})]}),{exitOnCtrlC:!1})})}export{Z as WalkSessionSurface,q as outcomeToMark,xe as runWalkSession};
|
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testmuai/kane-cli",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.7",
|
|
4
4
|
"description": "KaneAI Terminal UI — browser automation testing agent",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=18"
|
|
9
|
+
},
|
|
7
10
|
"bin": {
|
|
8
|
-
"kane-cli": "./bin/kane-cli.
|
|
11
|
+
"kane-cli": "./bin/kane-cli.cjs"
|
|
9
12
|
},
|
|
10
13
|
"files": [
|
|
11
14
|
"dist/",
|
|
@@ -21,16 +24,22 @@
|
|
|
21
24
|
"ink": "^5.1.0",
|
|
22
25
|
"js-yaml": "^4.1.1",
|
|
23
26
|
"open": "^10.1.0",
|
|
27
|
+
"pdfjs-dist": "6.1.200",
|
|
24
28
|
"react": "^18.3.1",
|
|
25
29
|
"semver": "^7.8.4",
|
|
26
30
|
"ws": "^8.20.0"
|
|
27
31
|
},
|
|
28
32
|
"optionalDependencies": {
|
|
29
|
-
"@testmuai/kane-cli-darwin-arm64": "0.6.
|
|
30
|
-
"@testmuai/kane-cli-darwin-x64": "0.6.
|
|
31
|
-
"@testmuai/kane-cli-linux-x64": "0.6.
|
|
32
|
-
"@testmuai/kane-cli-linux-arm64": "0.6.
|
|
33
|
-
"@testmuai/kane-cli-win-x64": "0.6.
|
|
33
|
+
"@testmuai/kane-cli-darwin-arm64": "0.6.7",
|
|
34
|
+
"@testmuai/kane-cli-darwin-x64": "0.6.7",
|
|
35
|
+
"@testmuai/kane-cli-linux-x64": "0.6.7",
|
|
36
|
+
"@testmuai/kane-cli-linux-arm64": "0.6.7",
|
|
37
|
+
"@testmuai/kane-cli-win-x64": "0.6.7",
|
|
38
|
+
"@testmuai/kane-cli-node-darwin-arm64": "24.18.0",
|
|
39
|
+
"@testmuai/kane-cli-node-darwin-x64": "24.18.0",
|
|
40
|
+
"@testmuai/kane-cli-node-linux-x64": "24.18.0",
|
|
41
|
+
"@testmuai/kane-cli-node-linux-arm64": "24.18.0",
|
|
42
|
+
"@testmuai/kane-cli-node-win-x64": "24.18.0",
|
|
34
43
|
"sharp": "^0.34.5"
|
|
35
44
|
},
|
|
36
45
|
"publishConfig": {
|
package/bin/kane-cli.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-AXABTFCD.js";import"./chunk-RFHMDQXZ.js";import"./chunk-QNNBNIR7.js";import"./chunk-CJJXT5DO.js";import"./chunk-FJTWJ243.js";import"./chunk-BC7UVJJB.js";import"./chunk-2PQXEEVY.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-MCQXRJGH.js";import"./chunk-74RUSHIB.js";import"./chunk-ZZLR3O5A.js";import"./chunk-ZG2V2ODK.js";import"./chunk-5YPBPZUR.js";import"./chunk-M5JQXOCE.js";import"./chunk-DNOBOZPO.js";import"./chunk-HJGUEZLW.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as EvidenceViewOffer};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-CY5NDMO7.js";import"./chunk-3HEPW6SN.js";import"./chunk-OB6CKLEL.js";import"./chunk-I2JUBAPU.js";import"./chunk-W36P7S5W.js";import"./chunk-4MUHS3UL.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-L5LI2JF4.js";import"./chunk-YMSN25DX.js";import"./chunk-STH6I3UB.js";import"./chunk-YCCUBQY4.js";import"./chunk-PICCLJSO.js";import"./chunk-M5JQXOCE.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-DNOBOZPO.js";import"./chunk-VE3SUJMA.js";import"./chunk-BOO7YXAV.js";import"./chunk-XUJ5EPVW.js";import"./chunk-HJGUEZLW.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as SingleShotApp};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{g as a}from"./chunk-MK2G7VIF.js";import"./chunk-ADOXYGZE.js";import"./chunk-E3BO7OVR.js";import"./chunk-W36P7S5W.js";import"./chunk-2K4XOHVK.js";import"./chunk-5Y2G4NC7.js";import"./chunk-M5JQXOCE.js";import"./chunk-DNOBOZPO.js";import"./chunk-POI6DCP6.js";import"./chunk-IRRGSC7B.js";import"./chunk-DFS4RMVP.js";import"./chunk-HJGUEZLW.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as TestMdRunView};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as V,c as ne}from"./chunk-JFAFKHDX.js";import{b as X,c as Z,d as ee}from"./chunk-WIA7TPK3.js";import"./chunk-QPZRHAYK.js";import{a as w,b as te}from"./chunk-6GTOYTCQ.js";import{a as oe}from"./chunk-427OQS2N.js";import{d as Q}from"./chunk-2PQXEEVY.js";import{a as z}from"./chunk-MCQXRJGH.js";import"./chunk-74RUSHIB.js";import{a as j,b as F}from"./chunk-ZZLR3O5A.js";import{e as W,g as Y}from"./chunk-ZG2V2ODK.js";import{e as L,f as A,g as J,h as x}from"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";var ce=new Set(["approve","edit","reject"]);function Ie(k){let{contextDir:f,graph:o,ops:se,by:l}=k,N=k.mintable??oe(),T=W(f);if(o.latestHash!==T)return{record:null,errors:[{code:"STALE_BASIS",detail:`graph opened at ${String(o.latestHash)} but chain head is ${String(T)} \u2014 re-open and retry`}]};let C=[],h=[],M=new Set;for(let e of se){if(o.appliedEvents.has(e.eventId)||M.has(e.eventId)){C.push(e.eventId);continue}M.add(e.eventId),h.push(e)}if(h.length===0)return{record:null,errors:null,applied:[],skipped:C,minted:[],staleDelta:[]};let s=[],$=[],y=[],m=[],I=[],O=[],_=[...k.judgements??[]],D=[],q=new Map,B=new Set,G=[],b=new Set,ie=new Set(N),H=new Set;for(let e of h){if(!ce.has(e.kind))continue;let n=e.target,t=o.resolve(n)?.cid??n;H.has(t)&&s.push({code:"MULTIPLE_TERMINAL_OPS",detail:`${n} has more than one terminal op in this turn \u2014 normalize latest-wins first`}),H.add(t)}let S=(e,n,t)=>{let d=o.resolve(n);if(!d)return s.push({code:"UNKNOWN_NODE",detail:`${e}: ${n} names nothing in the graph`}),null;let p=o.tipOf(d.cid);return p!==t||o.superseded.has(t)?(s.push({code:"EXPECTED_CID_MOVED",detail:`${e}: ${n} moved or was archived since it was displayed`,data:{tip:p}}),null):t};for(let e of h)if(e.kind==="approve"){let n=S("approve",e.target,e.expectedCid);n&&m.push({id:n,kind:"review-item",resolution:"approved",edit:null,reason:null,by:l})}else if(e.kind==="reject"){let n=S("reject",e.target,e.expectedCid);if(!n)continue;if(m.push({id:n,kind:"review-item",resolution:"rejected",edit:null,reason:e.reason,by:l}),e.redirectTo!==void 0){let t=o.resolve(e.redirectTo);if(!t||t.superseded){s.push({code:"UNKNOWN_NODE",detail:`reject.redirectTo: ${e.redirectTo} is not a live node`});continue}I.push({kind:"node",old:n,new:t.cid,reason:e.reason,by:l})}}else if(e.kind==="edit"){let n=S("edit",e.target,e.expectedCid);if(!n)continue;let t=o.getNode(n);if(!t){s.push({code:"UNKNOWN_NODE",detail:`edit: ${e.target} node file unreadable`});continue}let d={...t.content};for(let[r,g]of Object.entries(e.edit))g!==void 0&&(d[r]=g);if(typeof d.title=="string"&&!d.title.trim()){s.push({code:"EMPTY_TITLE",detail:`edit: ${e.target} edited title is empty`});continue}let p=A(t.label,d);if(p.length>0){for(let r of p)s.push({code:r.code,detail:`edit ${e.target}: ${r.detail}`});continue}let c=j(t.label,d);if(c===n){m.push({id:n,kind:"review-item",resolution:"approved",edit:null,reason:null,by:l});continue}$.push({cid:c,label:t.label,content:d}),I.push({kind:"node",old:n,new:c,reason:e.reason??"edited in chat",by:l}),m.push({id:c,kind:"review-item",resolution:"edited",edit:{...e.edit},reason:null,by:l})}else if(e.kind==="enhance"){if(!S("enhance",e.target,e.expectedCid))continue;for(let t of e.edges){let d=o.nodeLabel.get(t.src)??"(unknown)",p=o.nodeLabel.get(t.dst)??"(unknown)";for(let i of x(t.type,d,p,t.props))s.push({code:i.code,detail:`enhance ${e.target}: ${i.detail}`});let c=F(t.type,t.src,t.dst,t.props);if(o.edgesFrom(t.src).some(i=>i.ecid===c)||y.some(i=>i.ecid===c))continue;let r=Z(o,t.type,t.src,t.dst,G);r&&s.push(r);let g=ee(o,t.type,t.src,t.dst);g&&s.push(g);let a=J(t.type)?.cardinality;if(a==="one-live-per-src"||a==="one-live-per-src-and-dst"){let i=`${t.type}|${t.src}`;b.has(i)&&s.push({code:"CARDINALITY_VIOLATION",detail:`${t.type} from ${t.src}: two one-live edges in one turn`}),b.add(i)}if(a==="one-live-per-src-and-dst"){let i=`${t.type}|dst|${t.dst}`;b.has(i)&&s.push({code:"CARDINALITY_VIOLATION",detail:`${t.type} onto ${t.dst}: two one-live edges in one turn (strict 1:1)`}),b.add(i)}y.push({ecid:c,type:t.type,src:t.src,dst:t.dst,props:t.props}),G.push({src:t.src,dst:t.dst,type:t.type})}}else if(e.kind==="add"){if(!ie.has(e.label)){s.push({code:"GATED_LABEL",detail:`add: ${e.label} is not mintable in v1 (gate: ${N.join("|")})`,data:{gate:[...N]}});continue}let n=o.heads.get(e.convSourceId),t=o.convChains.get(e.convSourceId);if(typeof n!="string"||!t){s.push({code:"CONV_SOURCE_MISSING",detail:`add: ${e.convSourceId} is not a live conversation source`});continue}let d=o.getNode(n)?.content?.blob,p=typeof d=="string"?Q(f,d)?.toString("utf8")??"":"",c=te(p,e.cite.turn);if(c===null){s.push({code:"BAD_ANCHOR",detail:`add: ${w(e.cite.turn)} does not resolve in ${e.convSourceId}`});continue}if(!c.includes(e.cite.quote)){s.push({code:"QUOTE_MISMATCH",detail:`add: quote is not verbatim within ${w(e.cite.turn)}`});continue}let r={...e.content,derived:!0},g=A(e.label,r);if(g.length>0){for(let u of g)s.push({code:u.code,detail:`add: ${u.detail}`});continue}let a=j(e.label,r),i={source_id:e.convSourceId,source_cid:n,anchor:w(e.cite.turn),quote:e.cite.quote};for(let u of x(L.DERIVES,"source",e.label,i))s.push({code:u.code,detail:`add: ${u.detail}`});$.push({cid:a,label:e.label,content:r}),y.push({ecid:F("DERIVES",n,a,i),type:L.DERIVES,src:n,dst:a,props:i}),e.rationale&&_.push({about:a,rationale:e.rationale,by:l});let P=typeof r.title=="string"?r.title:typeof r.intent=="string"?r.intent:"",v=P?X(e.label,P,u=>B.has(u)||o.names.has(u)&&!o.superseded.has(o.names.get(u))):null;v!==null&&(B.add(v),O.push({cid:a,slug:v,by:l})),D.push({cid:a,...v!==null?{slug:v}:{}}),q.set(e.eventId,a)}if(s.length)return{record:null,errors:s};let U=new Date().toISOString();for(let e of h){if(e.kind==="add"){let n=q.get(e.eventId);n&&V(f,{ts:U,command:"extract-chat",id:n,verdict:"add",polarity:"preference",tag:e.label,by:l,event_id:e.eventId,target:n});continue}for(let n of ne(e,{ts:U,command:"extract-chat",by:l}))V(f,n)}let K=h.map(e=>e.eventId).sort(),re=Y(f,{ts:new Date().toISOString(),proposal_id:null,nodes:$,edges:y,review:m,supersessions:I,...O.length>0?{names:O}:{},..._.length>0?{judgements:_}:{},event_ids:K,source_head_moves:{}},{expectPrev:T}),R=z(f),E=new Set;for(let e of I)if(e.kind==="node"){E.add(e.old);for(let n of R.edgesInto(e.old))E.add(n.src)}for(let e of D)E.add(e.cid);let de=[...E].map(e=>({cid:e,state:R.stale(R.tipOf(e))})).filter(e=>e.state!=="fresh");return{record:re.record,errors:null,applied:K,skipped:C,minted:D,staleDelta:de}}export{Ie as commitChatTurn};
|
|
@@ -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-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-6LRKYF67.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-ANIVHX3P.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-RT2VMPTQ.js"),import("./spawner-GOTVIFR5.js"),import("./bridge-LNDJS3HH.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};
|