@testmuai/kane-cli 0.7.2 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/dist/{ChatSurface-E7QKI4LA.js → ChatSurface-U37VZDCW.js} +1 -1
  2. package/dist/{ChromeProfilePicker-DGDWGCZD.js → ChromeProfilePicker-AUU7JF6F.js} +1 -1
  3. package/dist/{CliFeedbackPrompt-SYCZXSME.js → CliFeedbackPrompt-4W74Y3UF.js} +1 -1
  4. package/dist/{CliUploadProgress-VDEAKXJY.js → CliUploadProgress-6HL7WTEX.js} +1 -1
  5. package/dist/ConfigView-6BSCZP5Y.js +2 -0
  6. package/dist/EvidenceViewOffer-62XHEEGW.js +2 -0
  7. package/dist/FolderPicker-S7U2EN2M.js +2 -0
  8. package/dist/{HelpView-ON6BFGJM.js → HelpView-TU7ED43J.js} +1 -1
  9. package/dist/{InfoBox-B23NZ6IG.js → InfoBox-JLTMKVDE.js} +1 -1
  10. package/dist/{LinksBox-TI26VFFH.js → LinksBox-LREUUJDV.js} +1 -1
  11. package/dist/{ProfilesView-CRO5AH3H.js → ProfilesView-W3GX2N2E.js} +1 -1
  12. package/dist/{ProjectPicker-3N7LJOXU.js → ProjectPicker-SYQUJK2J.js} +1 -1
  13. package/dist/{SaveSessionPrompt-UTOEC5AW.js → SaveSessionPrompt-MR5NJMRP.js} +1 -1
  14. package/dist/SingleShotApp-XOKVOM7C.js +2 -0
  15. package/dist/{SummaryBox-JK64EKC2.js → SummaryBox-UAYSVFB7.js} +1 -1
  16. package/dist/TestMdRunView-7UVSDAF4.js +2 -0
  17. package/dist/{WhoamiView-6QSLPNF6.js → WhoamiView-2YU76ASQ.js} +1 -1
  18. package/dist/adbkit-apkreader-ORZBGCJQ.js +184 -0
  19. package/dist/app-client-OEXESV4U.js +2 -0
  20. package/dist/app-download-AEEFQ63M.js +2 -0
  21. package/dist/{auth-IKFVW3NX.js → auth-HET3TBRI.js} +1 -1
  22. package/dist/{bind-KCUSVJXG.js → bind-STKXOUYI.js} +3 -3
  23. package/dist/bootstrap-44YKVWWE.js +2 -0
  24. package/dist/bridge-5Z3BIB77.js +2 -0
  25. package/dist/{changelog-AAH2ZBYO.js → changelog-7OWRHFHZ.js} +1 -1
  26. package/dist/{chat-committer-UUC6JTRJ.js → chat-committer-ZWWCLJFD.js} +1 -1
  27. package/dist/{chunk-ZUGCHQFC.js → chunk-27U4PLPX.js} +1 -1
  28. package/dist/{chunk-ZBOWFJB2.js → chunk-2BGUUWNF.js} +2 -2
  29. package/dist/chunk-2KDGIZED.js +4 -0
  30. package/dist/{chunk-SFII7HPP.js → chunk-3LJWYRAA.js} +1 -1
  31. package/dist/chunk-3PECJD6S.js +11 -0
  32. package/dist/{chunk-7QJ75SYR.js → chunk-3POR47RC.js} +2 -2
  33. package/dist/chunk-4JOD47QI.js +2 -0
  34. package/dist/{chunk-QIGPXYMF.js → chunk-56PAQAX5.js} +6 -6
  35. package/dist/{chunk-DZPGG4S6.js → chunk-65ZTD5SJ.js} +2 -2
  36. package/dist/chunk-6IA6QMPH.js +2 -0
  37. package/dist/{chunk-VT54ARGE.js → chunk-6O3DDOP2.js} +1 -1
  38. package/dist/chunk-6XX4LEVJ.js +2 -0
  39. package/dist/{chunk-4NFCAGRK.js → chunk-766WGMBU.js} +1 -1
  40. package/dist/{chunk-VMM4LC4V.js → chunk-7BZSCUPP.js} +3 -3
  41. package/dist/{chunk-PLOWZLG5.js → chunk-7JWKHKFU.js} +2 -2
  42. package/dist/chunk-7Q6M6P4X.js +26 -0
  43. package/dist/chunk-AW2XUHH4.js +2 -0
  44. package/dist/{chunk-7OYZR6JA.js → chunk-BRHNRCEZ.js} +1 -1
  45. package/dist/chunk-BRIEBB2U.js +2 -0
  46. package/dist/{chunk-APPYQZFK.js → chunk-C7HSWZP6.js} +1 -1
  47. package/dist/chunk-CTW2VQKS.js +6 -0
  48. package/dist/{chunk-FDIPQRX4.js → chunk-DCY6R5DP.js} +1 -1
  49. package/dist/{chunk-KWIK22R6.js → chunk-DO5HAO3H.js} +1 -1
  50. package/dist/chunk-DPUV6OSP.js +2 -0
  51. package/dist/{chunk-B5RS2XZU.js → chunk-DZGCXKKI.js} +3 -3
  52. package/dist/{chunk-JKM2PUHI.js → chunk-EDSZJZFG.js} +1 -1
  53. package/dist/{chunk-OIYGGEUL.js → chunk-ELM6MXGJ.js} +1 -1
  54. package/dist/{chunk-VHZ4S57N.js → chunk-EWCAFKLX.js} +1 -1
  55. package/dist/chunk-EYOCNMUM.js +2 -0
  56. package/dist/{chunk-GYNTNKNB.js → chunk-FEJXWJ3L.js} +1 -1
  57. package/dist/{chunk-UC7MNPIN.js → chunk-FMRSMN34.js} +1 -1
  58. package/dist/chunk-FNH55WSR.js +19 -0
  59. package/dist/chunk-FQLIW3LM.js +2 -0
  60. package/dist/{chunk-O75ZHGJG.js → chunk-G7VQCS4J.js} +1 -1
  61. package/dist/{chunk-2WFZIQ62.js → chunk-GCBKDX2J.js} +1 -1
  62. package/dist/chunk-GKYPNSQP.js +26 -0
  63. package/dist/chunk-GPG3FIN3.js +21 -0
  64. package/dist/chunk-GZPK6FRP.js +7 -0
  65. package/dist/{chunk-XUS4WKDS.js → chunk-HCKH44I2.js} +1 -1
  66. package/dist/chunk-HEAIJCGZ.js +2 -0
  67. package/dist/{chunk-SL6PCVM2.js → chunk-HMYMSRA4.js} +1 -1
  68. package/dist/chunk-IOFZSQAA.js +2 -0
  69. package/dist/{chunk-YTHQNN2L.js → chunk-IP2O264K.js} +1 -1
  70. package/dist/{chunk-AXTGYOMK.js → chunk-JJHG3BWO.js} +1 -1
  71. package/dist/chunk-KFSUPQAG.js +66 -0
  72. package/dist/chunk-KRKGZ2ZW.js +47 -0
  73. package/dist/{chunk-AJ56AMT6.js → chunk-KU6IXFGZ.js} +1 -1
  74. package/dist/chunk-L7MXYCD7.js +2 -0
  75. package/dist/{chunk-5ZQZOVWY.js → chunk-MA34UWKX.js} +3 -3
  76. package/dist/chunk-MBF3FP5P.js +5 -0
  77. package/dist/chunk-MSGW4JDG.js +2 -0
  78. package/dist/{chunk-C3T7TKAC.js → chunk-MXHHMIO2.js} +2 -2
  79. package/dist/{chunk-RDNFVZEB.js → chunk-NX7TM662.js} +1 -1
  80. package/dist/chunk-OMQCD3KR.js +2 -0
  81. package/dist/{chunk-OR6MCL6Z.js → chunk-OTTGS2TE.js} +1 -1
  82. package/dist/chunk-QGKPLOUI.js +2 -0
  83. package/dist/{chunk-FBHRBFHP.js → chunk-QRZRSAZH.js} +1 -1
  84. package/dist/{chunk-VLWMMOMF.js → chunk-QSDH5P7C.js} +1 -1
  85. package/dist/{chunk-VOOPWFHW.js → chunk-QW6EZC53.js} +1 -1
  86. package/dist/{chunk-ZRASQ63J.js → chunk-RC52N7PC.js} +1 -1
  87. package/dist/{chunk-M6FKJKC6.js → chunk-RFR4ZKIC.js} +3 -3
  88. package/dist/{chunk-AFBKGZFG.js → chunk-RLRNLIRS.js} +1 -1
  89. package/dist/{chunk-5FJJJNJK.js → chunk-SDPRO2LE.js} +1 -1
  90. package/dist/chunk-T5Y6MOLM.js +4 -0
  91. package/dist/{chunk-VRLUNZAK.js → chunk-TFPPEOAK.js} +1 -1
  92. package/dist/{chunk-5SXMV66P.js → chunk-TKGUT425.js} +1 -1
  93. package/dist/chunk-TYLYFERW.js +10 -0
  94. package/dist/chunk-TZXXJWHA.js +2 -0
  95. package/dist/{chunk-KQZA2QSC.js → chunk-UDIQOJEL.js} +1 -1
  96. package/dist/chunk-UV462FZR.js +2 -0
  97. package/dist/{chunk-HYSFJSIG.js → chunk-UXDL4XDL.js} +1 -1
  98. package/dist/{chunk-53IBTIL3.js → chunk-V2R3LCA3.js} +1 -1
  99. package/dist/{chunk-VFII6C46.js → chunk-W2JFDDIB.js} +1 -1
  100. package/dist/{chunk-4LTXE3IX.js → chunk-XO5ZH3ZR.js} +1 -1
  101. package/dist/{chunk-EOLFTMWF.js → chunk-YFYCCTSL.js} +1 -1
  102. package/dist/{chunk-JPWLGHPM.js → chunk-YJELGSKJ.js} +1 -1
  103. package/dist/chunk-YRFMPIU2.js +4 -0
  104. package/dist/{chunk-F7ISS545.js → chunk-ZGBSGZZM.js} +1 -1
  105. package/dist/{chunk-VWKVUOXU.js → chunk-ZIUAOEUC.js} +1 -1
  106. package/dist/chunk-ZVHCQMJ6.js +13 -0
  107. package/dist/{config-CWZV6XPT.js → config-RS47F5SC.js} +1 -1
  108. package/dist/{controller-client-RD2YEMAH.js → controller-client-OB4WD2C4.js} +1 -1
  109. package/dist/{cover-cmd-NWIRJY5Z.js → cover-cmd-HDZZWJXG.js} +1 -1
  110. package/dist/{credentials-YHTJGKEO.js → credentials-OH6AVI6N.js} +1 -1
  111. package/dist/deps-resolve-XC5S53DG.js +2 -0
  112. package/dist/{dispatch-WVNXB7AD.js → dispatch-SE5GY3Z2.js} +1 -1
  113. package/dist/doctor-FSECFZUU.js +2 -0
  114. package/dist/docx-convert-JMUMT5C4.js +2 -0
  115. package/dist/evidence-OYPHZUKI.js +2 -0
  116. package/dist/evolve-cmd-BCPNXAMV.js +2 -0
  117. package/dist/exec-P2IKJRRR.js +2 -0
  118. package/dist/exit-manager-3FVBTNYR.js +2 -0
  119. package/dist/{explain-cmd-IZEHWZV5.js → explain-cmd-3GEKR7O5.js} +1 -1
  120. package/dist/{explain-cmd-75MCF2ZV.js → explain-cmd-EX24XKD6.js} +1 -1
  121. package/dist/{extract-bind-5OWELRME.js → extract-bind-LLEASZAK.js} +3 -3
  122. package/dist/{extract-cmd-ZRYMJ6IC.js → extract-cmd-UZMEZMGP.js} +2 -2
  123. package/dist/{gaps-cmd-XBRXKXDL.js → gaps-cmd-IVXFPFAQ.js} +1 -1
  124. package/dist/{generate-headless-D6BISWDC.js → generate-headless-D3SVQ2AI.js} +3 -3
  125. package/dist/host-7GZPBA74.js +2 -0
  126. package/dist/index.js +85 -69
  127. package/dist/ingest-cmd-EAE7N5RC.js +2 -0
  128. package/dist/{interactive-bind-XSRD36MO.js → interactive-bind-ORMN2REX.js} +3 -3
  129. package/dist/{lifecycle-cmd-EQSFAZG6.js → lifecycle-cmd-O2324GN6.js} +1 -1
  130. package/dist/{list-cmd-IRJSUCM5.js → list-cmd-N4KMA34H.js} +1 -1
  131. package/dist/list-commands-MRXL5HGS.js +2 -0
  132. package/dist/login-flow-QJQM3RHT.js +2 -0
  133. package/dist/{maintenance-cmd-MVFA6H74.js → maintenance-cmd-6XSVO6FO.js} +1 -1
  134. package/dist/mobile-prompts-TOX35ER6.js +2 -0
  135. package/dist/persist-recorded-session-TLDQ5HKP.js +3 -0
  136. package/dist/{phase-seed-DIRETNU6.js → phase-seed-VFHIH6FL.js} +1 -1
  137. package/dist/pipeline-UOM4LNAI.js +2 -0
  138. package/dist/prepare-target-QYWIJIVQ.js +2 -0
  139. package/dist/reconcile-cmd-3H34KVVD.js +2 -0
  140. package/dist/{reconcile-deps-HTT6IPHT.js → reconcile-deps-XIH75ZLY.js} +2 -2
  141. package/dist/reconcile-engine-UKWPG2LV.js +2 -0
  142. package/dist/{recording-banner-76GCIPUN.js → recording-banner-4M7XHVGI.js} +1 -1
  143. package/dist/registry-PYOTKZYZ.js +2 -0
  144. package/dist/{require-project-folder-ACRDP5ZB.js → require-project-folder-4UPQNEBJ.js} +1 -1
  145. package/dist/resolve-run-intent-X72V3KJA.js +7 -0
  146. package/dist/{resolver-SRPCFW7P.js → resolver-UBOZLFFE.js} +1 -1
  147. package/dist/{review-cmd-L3V5UP5T.js → review-cmd-DQRKQUMG.js} +1 -1
  148. package/dist/run-2COODVX2.js +2 -0
  149. package/dist/run-URPGHOQM.js +2 -0
  150. package/dist/{run-test-md-KEHSRMCM.js → run-test-md-76ZPKXO6.js} +3 -3
  151. package/dist/session-target-UWROGOCY.js +2 -0
  152. package/dist/{sessions-cmd-ZVYGSRJ3.js → sessions-cmd-ZZIZN2VB.js} +1 -1
  153. package/dist/{skill-installer-HBN3A35K.js → skill-installer-CIS6GAYF.js} +1 -1
  154. package/dist/spawner-J67QR4QP.js +2 -0
  155. package/dist/{structured-answers-A43Q25CZ.js → structured-answers-5EY2AZN7.js} +1 -1
  156. package/dist/tcg-generate-BDTRKY2A.js +2 -0
  157. package/dist/testmd-actions-77ELR5UU.js +2 -0
  158. package/dist/token-refresh-4BPAPXKK.js +2 -0
  159. package/dist/types-6E2HTDKJ.js +2 -0
  160. package/dist/{validate-basic-ZGWPBYB6.js → validate-basic-2GVSQ2R5.js} +1 -1
  161. package/dist/{verdicts-SCETLY5J.js → verdicts-TRSTJLCL.js} +1 -1
  162. package/dist/{version-check-CJWKDAXV.js → version-check-O6PYTI4T.js} +1 -1
  163. package/dist/{view-cmd-SOVM64L2.js → view-cmd-KPJTP4DI.js} +1 -1
  164. package/dist/{walk-session-YUYRULPY.js → walk-session-CHJXHZMO.js} +1 -1
  165. package/dist/with-telemetry-CQCWLVOC.js +2 -0
  166. package/package.json +12 -6
  167. package/dist/ConfigView-HPKRQXMC.js +0 -2
  168. package/dist/EvidenceViewOffer-F5YG54OC.js +0 -2
  169. package/dist/FolderPicker-4NSDXQY5.js +0 -2
  170. package/dist/SingleShotApp-Y3YDFQSD.js +0 -2
  171. package/dist/TestMdRunView-O6JTHV5W.js +0 -2
  172. package/dist/bootstrap-NFYYRGGR.js +0 -2
  173. package/dist/bridge-JSKEO4N3.js +0 -2
  174. package/dist/chunk-23VPUWBD.js +0 -23
  175. package/dist/chunk-2WRBTLFN.js +0 -13
  176. package/dist/chunk-5WXGMXGA.js +0 -26
  177. package/dist/chunk-74HTO7K3.js +0 -11
  178. package/dist/chunk-AECMF3T2.js +0 -8
  179. package/dist/chunk-BXYWX4J3.js +0 -2
  180. package/dist/chunk-DBKNJRJG.js +0 -2
  181. package/dist/chunk-H32GM5G4.js +0 -2
  182. package/dist/chunk-J5FBU425.js +0 -62
  183. package/dist/chunk-MK7JUOYV.js +0 -6
  184. package/dist/chunk-ORQNKZ2Z.js +0 -5
  185. package/dist/chunk-OUJQVBUT.js +0 -7
  186. package/dist/chunk-QOFZSHSC.js +0 -47
  187. package/dist/chunk-RKWJG3WW.js +0 -19
  188. package/dist/chunk-STVP2XHO.js +0 -2
  189. package/dist/chunk-WAOCHXJ5.js +0 -2
  190. package/dist/docx-convert-CHLJUTFH.js +0 -2
  191. package/dist/evidence-IVDNXWPL.js +0 -2
  192. package/dist/evolve-cmd-XBX4SX5H.js +0 -2
  193. package/dist/exit-manager-XZL4KIJU.js +0 -2
  194. package/dist/ingest-cmd-YTGOICTC.js +0 -2
  195. package/dist/list-commands-RCYHJ5Y3.js +0 -2
  196. package/dist/login-flow-PYAPYCPY.js +0 -2
  197. package/dist/persist-recorded-session-DTYCLXTQ.js +0 -3
  198. package/dist/pipeline-MXFOD6ES.js +0 -2
  199. package/dist/reconcile-cmd-EG6BOU3A.js +0 -2
  200. package/dist/reconcile-engine-JQNXALNY.js +0 -2
  201. package/dist/run-GMZCDRDD.js +0 -2
  202. package/dist/run-TFRWPGXP.js +0 -2
  203. package/dist/spawner-GC5CFAJ7.js +0 -2
  204. package/dist/tcg-generate-V7YFNC5O.js +0 -2
  205. package/dist/testmd-actions-MNDOO76O.js +0 -2
  206. package/dist/token-refresh-3UYMCYG3.js +0 -2
  207. package/dist/with-telemetry-E7QWPGL6.js +0 -2
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as T}from"./chunk-OS4VSIHT.js";import"./chunk-5DT7PIGB.js";import{A as V}from"./chunk-TH47OOBV.js";import"./chunk-VAYBKR76.js";import"./chunk-CUM23TLF.js";import{d as I}from"./chunk-DUAXZYAD.js";import"./chunk-DBIBROYW.js";import{d as f,e as x}from"./chunk-WXHQYYD5.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-CH273NAE.js";import"./chunk-UR6MHSHU.js";import{writeFileSync as ce,mkdirSync as pe}from"fs";import{tmpdir as ue}from"os";import{dirname as fe,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"},re=(t,r)=>t===f.SOURCE?String(r.source_id??""):t===f.AC?String(r.text??""):t===f.STYLENOTE?String(r.statement??r.text??""):t===f.GAP?String(r.text??r.question??""):String(r.title??"");function H(t){let r=[];for(let[o,p]of t.nodeLabel){let g=t.getNode(o)?.content??{};r.push({cid:o,label:p,slug:p===f.SOURCE?String(g.source_id??""):t.displayNameOf?.(o)??t.nameOf.get(o)??o.slice(0,19),trust:t.trust.get(o)??"derived",fresh:t.stale(o),title:re(p,g),content:g,superseded:t.superseded.has(o)})}let e=new Map;for(let[o]of t.nodeLabel)for(let p of t.edgesFrom(o)){let g=`${p.type}|${p.src}|${p.dst}`,v=typeof p.props?.anchor=="string"?p.props.anchor:void 0,w=e.get(g);w?(w.count++,v&&w.anchors.push(v)):e.set(g,{key:g,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 s=[...e.values()],i={},l={trusted:0,derived:0,archived:0},d={fresh:0,stale:0,orphaned:0,superseded:0},a=0;for(let o of r)o.superseded||(a++,i[o.label]=(i[o.label]??0)+1,o.label!==f.SOURCE&&l[o.trust]++,d[o.fresh]++);return{nodes:r,edges:s,summary:{nodes:a,edges:s.reduce((o,p)=>o+p.count,0),byLabel:i,trust:l,fresh:d,usecases:i[f.USECASE]??0,designed:0}}}var P=/^([a-z]+)-(\d+)$/,E=(t,r)=>{let e=P.exec(t),s=P.exec(r);return e&&s&&e[1]===s[1]?Number(e[2])-Number(s[2]):t<r?-1:t>r?1:0};function se(t,r,e){let s=new Set,i=d=>{let a=e.nodeLabel.get(d);if(a===f.USECASE)s.add(d);else if(a===f.SCENARIO)for(let o of e.edgesFrom(d))o.type===x.BELONGS_TO&&s.add(o.dst)},l=e.edgesFrom(t);if(r===f.SCENARIO)for(let d of l)d.type===x.BELONGS_TO&&s.add(d.dst);if(r===f.AC)for(let d of l)d.type===x.SCOPED_TO&&i(d.dst);if(r===f.TEST)for(let d of l)d.type===x.AUTOMATES&&i(d.dst);return s}function G(t,r){let e=new Map,s=t.nodes.filter(a=>a.label===f.USECASE).map(a=>a.cid),i=s.map(a=>({ucCid:a,slug:r.nameOf.get(a)??a.slice(0,19),designed:r.designOf.has(a),nodeCids:[a]})).sort((a,o)=>E(a.slug,o.slug)),l={ucCid:"__shared__",slug:"cross-cutting",designed:!1,nodeCids:[]},d=new Map(i.map(a=>[a.ucCid,a]));for(let a of s)e.set(a,a);for(let a of t.nodes){if(a.label===f.SOURCE||a.label===f.USECASE)continue;let o=se(a.cid,a.label,r);if(o.size===1){let p=[...o][0];e.set(a.cid,p),d.get(p).nodeCids.push(a.cid)}else e.set(a.cid,"__shared__"),l.nodeCids.push(a.cid)}return{laneOf:e,lanes:[...i,l]}}var N={source:0,usecase:1,scenario:2,ac:3,test:4,stylenote:5,gap:5},ie=6,z=260,R=64,B=28;function U(t,r,e){let{lanes:s}=r,i=new Map(t.nodes.map(n=>[n.cid,n])),l=new Map,d=[],a=[],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=s.filter(n=>n.ucCid!=="__shared__"||n.nodeCids.length>0),g=t.nodes.filter(n=>n.label===f.SOURCE).sort((n,m)=>E(n.slug,m.slug)),v=0;for(let n of p){let m=n.nodeCids.map(c=>i.get(c)).filter(Boolean),h=c=>m.filter(u=>u.label===c),S=h(f.USECASE).sort((c,u)=>E(c.slug,u.slug));S.forEach((c,u)=>l.set(c.cid,u));let D=h(f.SCENARIO).sort((c,u)=>E(c.slug,u.slug));D.forEach((c,u)=>l.set(c.cid,u));let M=h(f.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(f.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 A=Math.max(1,S.length,D.length,M.length,j.length,q.length)*R+B;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*z,y:v+B/2+_*R})}a.push({...n,y0:v,y1:v+A}),v+=A}let w=Math.max(v,R);g.forEach((n,m)=>d.push({...n,lane:"__spine__",col:0,x:0,y:w/(g.length+1)*(m+1)}));let L=ie*z;return{nodes:d,lanes:a,width:L,height:w}}function ae(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 $(t){let r=new Map,e=new Map,s=[];for(let i of t){for(let n of i.nodes)r.has(n.cid)||r.set(n.cid,i.seq);let l=new Map(e);for(let n of i.nodes)n.content?.derived===!0&&!e.has(n.cid)&&e.set(n.cid,"derived");for(let n of i.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},a=0;for(let[n,m]of e){let h=l.get(n);m==="derived"&&(h==="trusted"||h==="archived")&&a++}let o={trusted:d("trusted"),archived:d("archived"),reset:a},p=ae(i),g=i.nodes.map(n=>n.cid),v=i.edges.map(n=>`${n.type}|${n.src}|${n.dst}`),w=i.review.map(n=>n.id),L=p==="review"?"review \xB7 +"+o.trusted+" trusted"+(o.archived?", +"+o.archived+" archived":""):p+" \xB7 +"+g.length+" nodes";s.push({seq:i.seq,ts:i.ts,kind:p,label:L,mintedNodeCids:g,mintedEdgeKeys:v,reviewedNodeCids:w,trustDelta:o})}return{commits:s,bornSeq:r}}function Y(t,r,e){let s=[];for(let i of t){i.nodes.some(l=>l.cid===r)&&s.push({seq:i.seq,ts:i.ts,kind:"minted",detail:"minted here"});for(let l of i.review)l.id===r&&s.push({seq:i.seq,ts:i.ts,kind:"review",detail:l.resolution+(l.reason?": "+l.reason:"")})}return e.length&&s.push({seq:0,ts:"",kind:"derived_from",detail:"source lines "+e.join(", ")}),s}var oe={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function k(t){return String(t).replace(/[&<>"']/g,r=>oe[r])}var W=t=>"\\u"+t.charCodeAt(0).toString(16).padStart(4,"0"),de=new RegExp("[\u2028\u2029]","g");function X(t){return t.replace(/[<>&]/g,W).replace(de,W)}var K=t=>t.replace("sha256:","").slice(0,12);function J(t){if(!t||typeof t!="object")return"";let r=String(t.operator??""),e=t.operand!=null?String(t.operand):"",s=t.unit!=null?" "+String(t.unit):"",i=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+s;break;case"lte":d="<= "+e+s;break;case"equals":d="= "+e+s+(i?" (was "+i+")":"");break;case"changed-by":d="changed by "+e+s;break;default:d=(r+" "+e+s).trim()}if(l){let a=l.threshold!=null?String(l.threshold):"",o=l.unit!=null?String(l.unit):"";(a||o)&&(d+=" within "+a+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>`,le=t=>Array.isArray(t)&&t.length?`<ul class="crit">${t.map(r=>`<li>${k(r)}</li>`).join("")}</ul>`:"";function Q(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(s=>C(s)):[]].join(""),le(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(([s,i])=>y(s,i)).join(""):"",y("techniques",e.technique_notes)].join("");case"ac":return[y("",e.text),[C(e.kind),C(e.risk?"risk: "+e.risk:"")].join(""),(()=>{let s=J(e.expected_answer);return s?`<div class="pred">${k(s)}</div>`:""})()].join("");case"test":{let s=J(e.check),i=e.test_md_blob!=null?`<pre class="md">${k(String(e.test_md_blob))}</pre>`:"";return[s?`<div class="pred">${k(s)}</div>`:"",y("definitionId",e.definitionId),i].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(s=>C(s)).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,s){let i=H(t),l=G(i,t),d=U(i,l,t),{commits:a}=$(r);i.summary.designed=l.lanes.filter(n=>n.designed&&n.ucCid!=="__shared__").length;let o={},p={};for(let n of i.nodes){o[n.cid]=Q(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 g=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=i.nodes.some(n=>n.label===f.SOURCE)?{}:void 0;return{meta:{fromSeq:r[0]?.seq??0,tipHash:e[e.length-1]??null,storePath:s,schema:"assurance/context@1",asOf:r[r.length-1]?.ts??null},summary:i.summary,lanes:v,nodes:g,edges:i.edges,commits:a,lineage:p,contentHtml:o,width:d.width,height:d.height,source:L}}var ee="__PAYLOAD__",te=`<!doctype html>
2
+ import{b as T}from"./chunk-OS4VSIHT.js";import"./chunk-5DT7PIGB.js";import"./chunk-CH273NAE.js";import{A as V}from"./chunk-TH47OOBV.js";import"./chunk-VAYBKR76.js";import"./chunk-CUM23TLF.js";import{d as I}from"./chunk-DUAXZYAD.js";import"./chunk-DBIBROYW.js";import{d as f,e as x}from"./chunk-WXHQYYD5.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";import{writeFileSync as ce,mkdirSync as pe}from"fs";import{tmpdir as ue}from"os";import{dirname as fe,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"},re=(t,r)=>t===f.SOURCE?String(r.source_id??""):t===f.AC?String(r.text??""):t===f.STYLENOTE?String(r.statement??r.text??""):t===f.GAP?String(r.text??r.question??""):String(r.title??"");function H(t){let r=[];for(let[o,p]of t.nodeLabel){let g=t.getNode(o)?.content??{};r.push({cid:o,label:p,slug:p===f.SOURCE?String(g.source_id??""):t.displayNameOf?.(o)??t.nameOf.get(o)??o.slice(0,19),trust:t.trust.get(o)??"derived",fresh:t.stale(o),title:re(p,g),content:g,superseded:t.superseded.has(o)})}let e=new Map;for(let[o]of t.nodeLabel)for(let p of t.edgesFrom(o)){let g=`${p.type}|${p.src}|${p.dst}`,v=typeof p.props?.anchor=="string"?p.props.anchor:void 0,w=e.get(g);w?(w.count++,v&&w.anchors.push(v)):e.set(g,{key:g,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 s=[...e.values()],i={},l={trusted:0,derived:0,archived:0},d={fresh:0,stale:0,orphaned:0,superseded:0},a=0;for(let o of r)o.superseded||(a++,i[o.label]=(i[o.label]??0)+1,o.label!==f.SOURCE&&l[o.trust]++,d[o.fresh]++);return{nodes:r,edges:s,summary:{nodes:a,edges:s.reduce((o,p)=>o+p.count,0),byLabel:i,trust:l,fresh:d,usecases:i[f.USECASE]??0,designed:0}}}var P=/^([a-z]+)-(\d+)$/,E=(t,r)=>{let e=P.exec(t),s=P.exec(r);return e&&s&&e[1]===s[1]?Number(e[2])-Number(s[2]):t<r?-1:t>r?1:0};function se(t,r,e){let s=new Set,i=d=>{let a=e.nodeLabel.get(d);if(a===f.USECASE)s.add(d);else if(a===f.SCENARIO)for(let o of e.edgesFrom(d))o.type===x.BELONGS_TO&&s.add(o.dst)},l=e.edgesFrom(t);if(r===f.SCENARIO)for(let d of l)d.type===x.BELONGS_TO&&s.add(d.dst);if(r===f.AC)for(let d of l)d.type===x.SCOPED_TO&&i(d.dst);if(r===f.TEST)for(let d of l)d.type===x.AUTOMATES&&i(d.dst);return s}function G(t,r){let e=new Map,s=t.nodes.filter(a=>a.label===f.USECASE).map(a=>a.cid),i=s.map(a=>({ucCid:a,slug:r.nameOf.get(a)??a.slice(0,19),designed:r.designOf.has(a),nodeCids:[a]})).sort((a,o)=>E(a.slug,o.slug)),l={ucCid:"__shared__",slug:"cross-cutting",designed:!1,nodeCids:[]},d=new Map(i.map(a=>[a.ucCid,a]));for(let a of s)e.set(a,a);for(let a of t.nodes){if(a.label===f.SOURCE||a.label===f.USECASE)continue;let o=se(a.cid,a.label,r);if(o.size===1){let p=[...o][0];e.set(a.cid,p),d.get(p).nodeCids.push(a.cid)}else e.set(a.cid,"__shared__"),l.nodeCids.push(a.cid)}return{laneOf:e,lanes:[...i,l]}}var N={source:0,usecase:1,scenario:2,ac:3,test:4,stylenote:5,gap:5},ie=6,z=260,R=64,B=28;function U(t,r,e){let{lanes:s}=r,i=new Map(t.nodes.map(n=>[n.cid,n])),l=new Map,d=[],a=[],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=s.filter(n=>n.ucCid!=="__shared__"||n.nodeCids.length>0),g=t.nodes.filter(n=>n.label===f.SOURCE).sort((n,m)=>E(n.slug,m.slug)),v=0;for(let n of p){let m=n.nodeCids.map(c=>i.get(c)).filter(Boolean),h=c=>m.filter(u=>u.label===c),S=h(f.USECASE).sort((c,u)=>E(c.slug,u.slug));S.forEach((c,u)=>l.set(c.cid,u));let D=h(f.SCENARIO).sort((c,u)=>E(c.slug,u.slug));D.forEach((c,u)=>l.set(c.cid,u));let M=h(f.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(f.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 A=Math.max(1,S.length,D.length,M.length,j.length,q.length)*R+B;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*z,y:v+B/2+_*R})}a.push({...n,y0:v,y1:v+A}),v+=A}let w=Math.max(v,R);g.forEach((n,m)=>d.push({...n,lane:"__spine__",col:0,x:0,y:w/(g.length+1)*(m+1)}));let L=ie*z;return{nodes:d,lanes:a,width:L,height:w}}function ae(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 $(t){let r=new Map,e=new Map,s=[];for(let i of t){for(let n of i.nodes)r.has(n.cid)||r.set(n.cid,i.seq);let l=new Map(e);for(let n of i.nodes)n.content?.derived===!0&&!e.has(n.cid)&&e.set(n.cid,"derived");for(let n of i.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},a=0;for(let[n,m]of e){let h=l.get(n);m==="derived"&&(h==="trusted"||h==="archived")&&a++}let o={trusted:d("trusted"),archived:d("archived"),reset:a},p=ae(i),g=i.nodes.map(n=>n.cid),v=i.edges.map(n=>`${n.type}|${n.src}|${n.dst}`),w=i.review.map(n=>n.id),L=p==="review"?"review \xB7 +"+o.trusted+" trusted"+(o.archived?", +"+o.archived+" archived":""):p+" \xB7 +"+g.length+" nodes";s.push({seq:i.seq,ts:i.ts,kind:p,label:L,mintedNodeCids:g,mintedEdgeKeys:v,reviewedNodeCids:w,trustDelta:o})}return{commits:s,bornSeq:r}}function Y(t,r,e){let s=[];for(let i of t){i.nodes.some(l=>l.cid===r)&&s.push({seq:i.seq,ts:i.ts,kind:"minted",detail:"minted here"});for(let l of i.review)l.id===r&&s.push({seq:i.seq,ts:i.ts,kind:"review",detail:l.resolution+(l.reason?": "+l.reason:"")})}return e.length&&s.push({seq:0,ts:"",kind:"derived_from",detail:"source lines "+e.join(", ")}),s}var oe={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function k(t){return String(t).replace(/[&<>"']/g,r=>oe[r])}var W=t=>"\\u"+t.charCodeAt(0).toString(16).padStart(4,"0"),de=new RegExp("[\u2028\u2029]","g");function X(t){return t.replace(/[<>&]/g,W).replace(de,W)}var K=t=>t.replace("sha256:","").slice(0,12);function J(t){if(!t||typeof t!="object")return"";let r=String(t.operator??""),e=t.operand!=null?String(t.operand):"",s=t.unit!=null?" "+String(t.unit):"",i=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+s;break;case"lte":d="<= "+e+s;break;case"equals":d="= "+e+s+(i?" (was "+i+")":"");break;case"changed-by":d="changed by "+e+s;break;default:d=(r+" "+e+s).trim()}if(l){let a=l.threshold!=null?String(l.threshold):"",o=l.unit!=null?String(l.unit):"";(a||o)&&(d+=" within "+a+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>`,le=t=>Array.isArray(t)&&t.length?`<ul class="crit">${t.map(r=>`<li>${k(r)}</li>`).join("")}</ul>`:"";function Q(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(s=>C(s)):[]].join(""),le(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(([s,i])=>y(s,i)).join(""):"",y("techniques",e.technique_notes)].join("");case"ac":return[y("",e.text),[C(e.kind),C(e.risk?"risk: "+e.risk:"")].join(""),(()=>{let s=J(e.expected_answer);return s?`<div class="pred">${k(s)}</div>`:""})()].join("");case"test":{let s=J(e.check),i=e.test_md_blob!=null?`<pre class="md">${k(String(e.test_md_blob))}</pre>`:"";return[s?`<div class="pred">${k(s)}</div>`:"",y("definitionId",e.definitionId),i].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(s=>C(s)).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,s){let i=H(t),l=G(i,t),d=U(i,l,t),{commits:a}=$(r);i.summary.designed=l.lanes.filter(n=>n.designed&&n.ucCid!=="__shared__").length;let o={},p={};for(let n of i.nodes){o[n.cid]=Q(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 g=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=i.nodes.some(n=>n.label===f.SOURCE)?{}:void 0;return{meta:{fromSeq:r[0]?.seq??0,tipHash:e[e.length-1]??null,storePath:s,schema:"assurance/context@1",asOf:r[r.length-1]?.ts??null},summary:i.summary,lanes:v,nodes:g,edges:i.edges,commits:a,lineage:p,contentHtml:o,width:d.width,height:d.height,source:L}}var ee="__PAYLOAD__",te=`<!doctype html>
3
3
  <html lang="en">
4
4
  <head>
5
5
  <meta charset="utf-8">
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{k as se}from"./chunk-7QJ75SYR.js";import{a as q,c as Q,d as ae}from"./chunk-AFBKGZFG.js";import"./chunk-OS4VSIHT.js";import{c as ce}from"./chunk-VRVFPMCR.js";import"./chunk-TRJUD3XJ.js";import"./chunk-AFPHLUQ5.js";import"./chunk-JFAFKHDX.js";import"./chunk-JZ26R6UL.js";import{b as G,c as ne,d as ie,e as L,g as N,h as oe}from"./chunk-VFII6C46.js";import{a as K}from"./chunk-CLGC7VEO.js";import"./chunk-5DT7PIGB.js";import"./chunk-DNNZ353O.js";import"./chunk-GFKCTYCA.js";import"./chunk-XWKUZJCP.js";import"./chunk-NVGBE2DR.js";import{A as O}from"./chunk-TH47OOBV.js";import{b as re}from"./chunk-VAYBKR76.js";import"./chunk-CUM23TLF.js";import{i as te}from"./chunk-DUAXZYAD.js";import"./chunk-DBIBROYW.js";import"./chunk-WXHQYYD5.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-CH273NAE.js";import{a as ee}from"./chunk-YCCUBQY4.js";import{y as g}from"./chunk-ZUGCHQFC.js";import{a as j}from"./chunk-HCBYKLMW.js";import{a as P,b as w,k as B}from"./chunk-C44QQJR4.js";import{a as be}from"./chunk-6YGTRKDT.js";import{e as H}from"./chunk-UR6MHSHU.js";var D=H(be(),1);function le(r,p,b){let{ref:C,reason:u,by:y}=b;if(!u||u.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 k=p.resolve(C);if(!k)return{record:null,errors:[{code:"UNKNOWN_REF",detail:`no node '${C}' in the graph`}]};let t=p.tipOf(k.cid);if(p.superseded.has(t))return{record:null,errors:[{code:"ALREADY_ARCHIVED",detail:`${C} is already superseded at its tip (${t.slice(0,19)}\u2026)`}]};let i=te(r,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[{kind:"node",old:t,new:null,reason:u,by:y}],source_head_moves:{}},{expectPrev:p.latestHash});return re(r),{record:i.record,errors:null}}function de(r){let p=r.by??{kind:"human",id:process.env.USER??"operator"},b=r.mode==="interactive"?"override":r.mode,C={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},u={applied:0,committed:0,retired:0,skipped:0,deferred:0,failed:0},y=new Map;for(let t of r.planRows)if(t.held_ref&&r.held){let i=r.held.rows.find(a=>a.temp_ref===t.held_ref);if(!i)continue;let v={kind:i.kind,ref:i.temp_ref,title:i.title,why:i.why,origin:"content-change",...t.impact?{impact:t.impact}:{}};y.set(v.ref,{card:v,source:"held",heldRef:i.temp_ref})}else if(t.kind==="MODIFY"){let i={kind:"MODIFY",ref:t.ref,title:t.ref,why:`${t.reason}: ${t.provenance}`,origin:t.origin??"structural-stale",...t.impact?{impact:t.impact}:{}};y.set(i.ref,{card:i,source:"row",row:t})}else if(t.kind==="ADD"){let i={kind:"ADD",ref:t.ref,title:t.ref,why:t.reason,origin:t.origin??"content-change"};y.set(i.ref,{card:i,source:"row",row:t})}for(let t of r.archive){if(t.kind!=="ARCHIVE")continue;let i={kind:"ARCHIVE",ref:t.ref,title:t.ref,why:t.why,provenance:t.why,...t.impact?{impact:t.impact}:{}};y.set(i.ref,{card:i,source:"archive",row:t})}for(let t of r.reviewFeeder?.()??[]){if(y.has(t.ref))continue;let i={kind:t.kind==="MODIFY_HELD"?"MODIFY":t.kind,ref:t.ref,title:t.title,why:t.why,...t.impact?{impact:t.impact}:{},...t.pair?{pair:t.pair}:{},...t.held?{held:!0}:{},...t.kind==="MODIFY_HELD"?{heldPayload:!0}:{}};y.set(i.ref,{card:i,source:"review",reviewCard:t})}let k=t=>(u.failed++,{outcome:"failed",detail:t});return{cards:()=>[...y.values()].map(t=>t.card),async submit(t,i){let v=y.get(t);if(!v)return k(`no card ${t}`);if(v.source==="review"){if(v.reviewCard.kind==="PAIR"&&i.v==="approve")return k(`${t} is a PAIR card \u2014 approve is not in its grammar (merge / keep both / defer); words ride a defer note`);let{submitReview:s}=await import("./verdicts-SCETLY5J.js"),x=i.v==="approve"?{v:"approve"}:i.v==="archive"?{v:"archive",because:i.because??""}:i.v==="skip"&&v.reviewCard.kind==="MODIFY_HELD"?{v:"keep_current"}:i.v==="defer"||i.v==="skip"?{v:"defer"}:i.v==="merge"?{v:"merge"}:{v:"keep_both"},h=await s({contextDir:r.contextDir,signals:o=>r.signals({ref:o.ref,verdict:o.verdict,...o.reason?{reason:o.reason}:{}})},v.reviewCard,x,p);return h.outcome==="failed"?(u.failed++,h):h.outcome==="deferred"?(u.deferred++,i.v==="defer"&&i.note?(r.signals({ref:t,verdict:"deferred-with-note",reason:i.note}),{...h,detail:`steering noted: "${i.note}" \u2014 decide ${v.reviewCard.kind==="PAIR"?"merge / keep both":"the verdict"} when it re-offers`}):h):h.outcome==="retired"?(u.retired++,h):h.outcome==="committed"?(u.committed++,h):(u.applied++,h)}if(i.v==="merge"||i.v==="keep_both")return k(`${t} is a ${v.card.kind} card \u2014 ${i.v} applies to review cards only`);if(i.v==="skip")return u.skipped++,r.signals({ref:t,verdict:"gap-dismissed"}),{outcome:"skipped"};if(i.v==="defer")return u.deferred++,i.note?(r.signals({ref:t,verdict:"deferred-with-note",reason:i.note}),{outcome:"deferred",detail:`steering noted: "${i.note}"`}):{outcome:"deferred"};if(i.v==="archive"){if(v.source!=="archive")return k(`${t} is not an ARCHIVE card`);let s=O(r.contextDir),x=s.resolve(v.row.ref);if(x&&s.superseded.has(s.tipOf(x.cid)))return u.skipped++,{outcome:"skipped",detail:"already retired \u2014 nothing to do"};let h=le(r.contextDir,O(r.contextDir),{ref:v.row.ref,reason:`reconcile retire: ${v.row.why}`,by:p});return h.errors?k(h.errors.map(o=>`${o.code}: ${o.detail}`).join("; ")):(u.retired++,r.signals({ref:t,verdict:"gap-resolved-archive",reason:v.row.why}),{outcome:"retired"})}if(v.source==="archive")return k(`${t} takes archive/skip/defer, not approve`);if(v.source==="held"){let s=se(r.contextDir,r.held,v.heldRef,p,i.edits);if(!s.ok)return k(s.message);if(s.kind==="ADD"){let x=await r.runDesign(s.ref,{yes:!0,mode:b,...i.steering?{because:i.steering}:{}});return x!==0?(u.failed++,{outcome:"failed",landed:!0,detail:`committed ${s.ref}, but its design run exited ${x} \u2014 finish with kane-cli design tests --use-case ${s.ref}`}):(u.applied++,r.signals({ref:t,verdict:"gap-resolved-create",...i.steering?{reason:i.steering}:{}}),{outcome:"applied",detail:s.ref})}if(i.steering){let x=O(r.contextDir),h=q(x,s.ref);if(!h.ok)return u.committed++,{outcome:"committed",detail:`committed ${s.ref}, but steering could not resolve it (${h.message}) \u2014 steer via kane-cli maintain evolve ${s.ref}`};let o=await Q(r.contextDir,h.target,{yes:!0,mode:b,because:i.steering},C,r.runDesign,"batch");if(o.outcome==="no-design"){let d=await r.runDesign(h.target.seamRef,{yes:!0,mode:b,because:i.steering});return d!==0?(u.failed++,{outcome:"failed",landed:!0,detail:`committed ${s.ref}, but its steered design run exited ${d} \u2014 finish with kane-cli design tests --use-case ${h.target.seamRef}`}):(u.applied++,r.signals({ref:t,verdict:"gap-resolved-create",reason:i.steering}),{outcome:"applied",detail:s.ref})}return o.outcome==="failed"||o.outcome==="paused"?(u.failed++,{outcome:"failed",landed:!0,detail:`committed ${s.ref}, but the steering evolve ${o.outcome} (exit ${o.code}) \u2014 finish with kane-cli maintain evolve ${s.ref}`}):o.outcome==="declined"?(u.committed++,{outcome:"committed",detail:`committed ${s.ref} \u2014 the steering evolve was declined; re-run kane-cli maintain evolve ${s.ref}`}):(u.applied++,r.signals({ref:t,verdict:"gap-resolved-evolve",reason:i.steering}),{outcome:"applied",detail:s.ref})}return u.committed++,r.signals({ref:t,verdict:"gap-resolved-evolve"}),{outcome:"committed",detail:s.ref}}let a=O(r.contextDir),f=q(a,v.row.ref);if(!f.ok)return k(f.message);if(v.card.kind==="ADD"){let s=await r.runDesign(f.target.seamRef,{yes:!0,mode:b});return s!==0?k(`design run exited ${s}`):(u.applied++,r.signals({ref:t,verdict:"gap-resolved-create"}),{outcome:"applied"})}let R=await Q(r.contextDir,f.target,{yes:!0,mode:b,...i.steering?{because:i.steering}:{}},C,r.runDesign,"batch");return R.outcome==="evolved"?(u.applied++,r.signals({ref:t,verdict:"gap-resolved-evolve",...i.steering?{reason:i.steering}:{}}),{outcome:"applied"}):R.outcome==="failed"||R.outcome==="paused"?k(`evolve ${R.outcome} (exit ${R.code})`):(u.skipped++,{outcome:"skipped",detail:R.outcome})},summary:()=>({...u})}}var _=H(j(),1);function U({mark:r,markColor:p,color:b,indent:C=2,reserve:u=0,children:y}){let{stdout:k}=B(),t=(k?.columns??80)-u,i=C+r.length+1;return(0,_.jsxs)(P,{children:[(0,_.jsx)(P,{width:i,flexShrink:0,children:(0,_.jsx)(w,{color:p,children:`${" ".repeat(C)}${r}`})}),(0,_.jsx)(P,{width:Math.max(20,t-i),children:(0,_.jsx)(w,{color:b,children:y})})]})}var l=H(j(),1);function ue(r){return r.landed?"committed":r.outcome}var ye={applied:{mark:"\u2714",color:"green"},committed:{mark:"\u2714",color:"green"},retired:{mark:"\u2714",color:"green"},skipped:{mark:"\xB7",color:"dim"},deferred:{mark:"\u2013",color:"dim"},failed:{mark:"\u2717",color:"red"}},Y=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function xe(r){return r.v==="archive"?"Retiring\u2026":r.v==="approve"&&r.steering?"Approving with your changes \u2014 committing, then re-designing\u2026":"Applying \u2014 committing\u2026"}function Re({controller:r,cards:p,note:b,markOutcome:C,routeChat:u,listEvolveTargets:y,barSubject:k,onFinish:t,onCtrlC:i,pauseRef:v}){let[a,f]=(0,D.useState)(p.length>0?{at:"card",idx:0,sel:0,editor:null}:{at:"done-panel",sel:0}),R=(0,D.useRef)(0),s=(0,D.useRef)(a);s.current=a;let x=(0,D.useRef)([]),[h,o]=(0,D.useState)(0),d=a.at==="busy"||a.at==="evolving";(0,D.useEffect)(()=>{if(!d)return;let e=setInterval(()=>o(n=>n+1),120);return()=>clearInterval(e)},[d]);let A=(0,D.useRef)(!1),$=()=>{b((0,l.jsx)(w,{color:g.dim,children:"walk paused \u2014 every verdict so far is committed; re-run the same command to continue"})),t(3)},I=()=>{if(A.current)return;A.current=!0;let e=s.current;if(e.at==="busy"||e.at==="evolving"){b((0,l.jsx)(w,{color:g.dim,children:"finishing the current item, then pausing\u2026"}));return}if(e.at==="done-panel"||e.at==="picker"||e.at==="why"||e.at==="view"){t(R.current);return}$()};v&&(v.current=I);let E=a.at==="card"||a.at==="busy"?p[a.idx]:null,T=()=>[{key:"finish",label:"finish"},...y?[{key:"evolve",label:"evolve another use-case\u2026"}]:[],...x.current.length>0?[{key:"view",label:"view what changed"}]:[]],W=()=>{let e=y?.()??[];if(e.length===0){b((0,l.jsx)(w,{color:g.dim,children:"nothing is stale \u2014 no evolve targets right now"})),f({at:"done-panel",sel:0});return}f({at:"picker",items:e,sel:0})},M=e=>{let n=e+1;if(n<p.length)f({at:"card",idx:n,sel:0,editor:null});else{let c=r.summary();b((0,l.jsx)(w,{color:g.dim,children:`reconcile walk: ${c.applied} applied, ${c.committed} committed, ${c.retired} retired, ${c.skipped} skipped, ${c.deferred} deferred`+(c.failed>0?`, ${c.failed} failed`:"")})),f({at:"done-panel",sel:0})}},F=(0,D.useRef)(!1),S=(e,n)=>{if(F.current)return;F.current=!0;let c=p[e];f({at:"busy",idx:e,label:xe(n),startedAt:Date.now()}),r.submit(c.ref,n).catch(m=>({outcome:"failed",detail:m instanceof Error?m.message:String(m)})).then(m=>{let V=ye[m.outcome]??{mark:"\xB7",color:"dim"},we=m.outcome!=="failed"&&m.outcome!=="skipped"&&m.outcome!=="deferred"&&c.impact&&"stale_refs"in c.impact&&c.impact.stale_refs.length>0?` \xB7 ${c.impact.stale_refs.length} item(s) now stale`:"",Z=`${m.outcome} [${c.kind}] ${K(c.title)}${m.detail?` \u2014 ${K(m.detail)}`:""}${we}`;if(x.current.push({mark:V.mark,color:V.color,line:Z}),b((0,l.jsx)(U,{mark:V.mark,markColor:V.color==="green"?g.green:V.color==="red"?g.red:g.dim,color:V.color==="dim"?g.dim:void 0,children:Z})),m.outcome==="failed"&&(R.current=R.current===0?1:R.current),C(c.ref,ue(m)),F.current=!1,A.current){$();return}M(e)})},me=(e,n)=>{f({at:"evolving",title:e.title,startedAt:Date.now()}),u(`${e.key} ${n}`).catch(c=>`\u2717 evolve failed: ${c instanceof Error?c.message:String(c)}`).then(c=>{let m=c.startsWith("\u2713");if(x.current.push({mark:m?"\u2714":"\u2717",color:m?"green":"red",line:c.replace(/^[✓✗]\s*/,"")}),b((0,l.jsx)(U,{mark:m?"\u2714":"\u2717",markColor:m?g.green:g.red,children:c.replace(/^[✓✗]\s*/,"")})),A.current){t(R.current);return}f({at:"done-panel",sel:0})})},fe=(0,D.useMemo)(()=>({isFocused:()=>{let e=s.current;return e.at==="card"&&e.editor===null||e.at==="done-panel"||e.at==="picker"||e.at==="view"},onMove:e=>{f(n=>{if(n.at==="card"){let c=p[n.idx],m=N(c)??L(c).length-1;return{...n,sel:Math.max(0,Math.min(m,n.sel+e))}}return n.at==="done-panel"?{...n,sel:Math.max(0,Math.min(T().length-1,n.sel+e))}:n.at==="picker"?{...n,sel:Math.max(0,Math.min(n.items.length-1,n.sel+e))}:n})},onSelect:()=>{let e=s.current;if(e.at==="card"){let n=p[e.idx],c=N(n);if(c!==null&&e.sel===c){f({...e,editor:"",editorIntent:"steer"});return}let m=L(n)[e.sel];if(m?.v==="archive"&&n.kind==="REVIEW"){f({...e,editor:"",editorIntent:"because"});return}m&&S(e.idx,{v:m.v});return}if(e.at==="done-panel"){let n=T()[e.sel];n?.key==="finish"?t(R.current):n?.key==="evolve"?W():n?.key==="view"&&f({at:"view"});return}if(e.at==="picker"){let n=e.items[e.sel];n&&f({at:"why",item:n,text:""});return}},onDigit:e=>{let n=s.current;if(n.at==="card"){let c=p[n.idx],m=L(c)[e-1];if(m?.v==="archive"&&c.kind==="REVIEW"){f({...n,editor:"",editorIntent:"because"});return}m&&S(n.idx,{v:m.v});return}n.at==="done-panel"&&e-1<T().length&&f({...n,sel:e-1}),n.at==="picker"&&e-1<n.items.length&&f({...n,sel:e-1})},onType:e=>{f(n=>n.at!=="card"||N(p[n.idx])===null?n:{...n,editor:(n.editor??"")+e,editorIntent:n.editorIntent??"steer"})},isMulti:()=>!1,onSpace:()=>{},onBack:()=>{let e=s.current;(e.at==="picker"||e.at==="view")&&f({at:"done-panel",sel:0})}}),[p]);(0,D.useEffect)(()=>{a.at==="done"&&t(R.current)},[a.at]);let pe=a.at==="card"||a.at==="done-panel"||a.at==="picker"||a.at==="why"||a.at==="view",ge=a.at==="card"||a.at==="busy"?`${k?`${k} \xB7 `:""}item ${a.idx+1} of ${p.length}`:k,X=e=>Math.floor((Date.now()-e)/1e3),{stdout:ve}=B(),z=Math.min((ve?.columns??80)-1,100),J=`view \xB7 this run's changes \xB7 ${x.current.length}`,he=Math.max(2,z-(3+J.length+1)),ke=Math.max(2,z-12);return(0,l.jsxs)(P,{flexDirection:"column",children:[(0,l.jsx)(ie,{onToggleThinking:()=>{},onCtrlC:()=>{i(),I()},panel:fe}),a.at==="card"&&E?(0,l.jsx)(oe,{card:E,position:{n:a.idx+1,of:p.length},sel:a.sel,focused:a.editor===null,editorIntent:a.editorIntent??"steer",freeText:a.editor!==null?{value:a.editor,onChange:e=>f(n=>n.at==="card"?{...n,editor:e}:n),onSubmit:e=>{let n=s.current;if(n.at!=="card")return;let c=e.trim();if(!c){f({...n,editor:null,editorIntent:void 0});return}let m=p[n.idx];n.editorIntent==="because"?S(n.idx,{v:"archive",because:c}):m.kind==="PAIR"?S(n.idx,{v:"defer",note:c}):S(n.idx,{v:"approve",steering:c})},onCancel:()=>f(e=>e.at==="card"?{...e,editor:null,editorIntent:void 0}:e)}:null}):null,a.at==="busy"?(0,l.jsxs)(w,{color:g.assuranceAccent,children:[`${Y[h%Y.length]} ${a.label} `,(0,l.jsx)(w,{color:g.dim,children:`(${X(a.startedAt)}s)`})]}):null,a.at==="evolving"?(0,l.jsxs)(w,{color:g.assuranceAccent,children:[`${Y[h%Y.length]} Evolving ${a.title}\u2026 `,(0,l.jsx)(w,{color:g.dim,children:`(${X(a.startedAt)}s)`})]}):null,a.at==="done-panel"?(0,l.jsx)(G,{headline:(()=>{let e=r.summary();return`reconcile done \u2014 ${e.applied+e.committed} applied \xB7 ${e.retired} retired \xB7 ${e.skipped} skipped \xB7 ${e.deferred} deferred${e.failed>0?` \xB7 ${e.failed} failed`:""}`})(),rows:T(),sel:a.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select"}):null,a.at==="picker"?(0,l.jsx)(G,{ask:!0,headline:"evolve which use-case?",rows:a.items.map(e=>({key:e.key,label:e.title,detail:e.badge})),sel:a.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}):null,a.at==="why"?(0,l.jsxs)(P,{flexDirection:"column",borderStyle:"round",borderColor:g.assuranceAccent,paddingX:1,children:[(0,l.jsxs)(P,{children:[(0,l.jsxs)(w,{children:[(0,l.jsx)(w,{color:g.assuranceAccent,children:"\u25B8"})," ",(0,l.jsx)(w,{color:g.dim,children:"\u270E "})]}),(0,l.jsx)(ee,{value:a.text,onChange:e=>f(n=>n.at==="why"?{...n,text:e}:n),onSubmit:e=>{let n=s.current;n.at==="why"&&(e.trim()?me(n.item,e.trim()):f({at:"picker",items:[n.item],sel:0}))},onCancel:()=>{s.current.at==="why"&&W()},placeholder:`what should change about ${a.item.title}?`})]}),(0,l.jsx)(w,{color:g.muted,children:" \u23CE submit \xB7 esc back"})]}):null,a.at==="view"?(0,l.jsxs)(P,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,l.jsxs)(w,{color:g.assuranceAccent,children:["\u2500\u2500 ",(0,l.jsx)(w,{bold:!0,children:J}),` ${"\u2500".repeat(he)}`]}),(0,l.jsx)(w,{children:" "}),x.current.map((e,n)=>(0,l.jsx)(U,{mark:e.mark,markColor:e.color==="green"?g.green:e.color==="red"?g.red:g.dim,color:e.color==="dim"?g.dim:void 0,indent:0,reserve:0,children:e.line},`vc-${n}`)),(0,l.jsx)(w,{children:" "}),(0,l.jsxs)(w,{color:g.assuranceAccent,children:["\u2500\u2500 ",(0,l.jsx)(w,{color:g.muted,children:"esc back"}),` ${"\u2500".repeat(ke)}`]})]}):null,(0,l.jsx)(ne,{verb:"maintain",subject:ge,state:pe?"idle":void 0,hints:"ctrl+c exit"})]})}async function qe(r){let p={current:null},b=o=>{p.current?.append(o)},C=null,u=async(o,d)=>{let[{runDesign:A},{resolveAgentAuthEnv:$},{runAgent:I},{preflightTurn:E}]=await Promise.all([import("./run-GMZCDRDD.js"),import("./spawner-GC5CFAJ7.js"),import("./bridge-JSKEO4N3.js"),import("./turn-preflight-JGYT7LXP.js")]);C??=await $();let T=C;return A({useCase:o,force:!0,mode:d.mode??"override",...d.because?{because:d.because}:{},...d.changeDelta!==void 0?{changeDelta:d.changeDelta}:{},...d.priorDesign!==void 0?{priorDesign:d.priorDesign}:{}},{contextDir:r.dir,agent:I,preflightTurn:()=>E(T),ask:async()=>[],out:()=>{},progress:()=>{},isTTY:!1,auth:T})},y=r.runDesign??u,k=de({contextDir:r.dir,held:r.held,archive:r.archive,planRows:r.rows,runDesign:y,mode:"interactive",signals:r.signals,reviewFeeder:()=>{try{return ce({contextDir:r.dir},O(r.dir))}catch{return[]}}}),t=new Set(r.rows.filter(o=>o.applied!==void 0).map(o=>o.held_ref??o.ref)),i=k.cards().filter(o=>!t.has(o.ref)&&!(o.kind==="ARCHIVE"&&r.archiveState?.[o.ref]!==void 0)),v=o=>r.rows.findIndex(d=>(d.held_ref??d.ref)===o),a=(o,d)=>{try{if(i.find(I=>I.ref===o)?.kind==="ARCHIVE"){d==="retired"?r.markA?.(o,"retired"):d==="skipped"&&r.markA?.(o,"skipped");return}let $=v(o);if($<0)return;d==="applied"||d==="committed"?r.mark?.($,"approved"):d==="skipped"&&r.mark?.($,"skipped")}catch{}},f=async o=>{let[{openGraph:d},{resolveParentUc:A,evolveOneUc:$}]=await Promise.all([import("./readmodel-XOYGGQ3S.js"),import("./evolve-cmd-XBX4SX5H.js")]),[I,...E]=o.split(/\s+/),T=d(r.dir),W=A(T,I);if(!W.ok)return`couldn't resolve '${I}' \u2014 start with a use-case id (uc-\u2026): ${W.message}`;if(E.length===0)return`say what to change: \`${I} <your words>\` \u2014 the words become the redesign's change delta`;let M=E.join(" "),F={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},S=await $(r.dir,W.target,{yes:!0,mode:"override",because:M},F,y,"batch");return S.outcome==="evolved"?(r.signals({ref:W.target.display,verdict:"gap-resolved-evolve",reason:M}),`\u2713 redesigned ${W.target.display} \u2014 "${M}"`):`\u2717 evolve ${S.outcome} for ${W.target.display} (exit ${S.code})`},R=r.listEvolveTargets??(()=>{let o=O(r.dir);return ae(o).targets.map(d=>({key:d.display,title:d.display,badge:"stale"}))});if(r.script){let o=0;for(let d of i){let A=await r.script(d),$=await k.submit(d.ref,A);$.outcome==="failed"&&o===0&&(o=1),a(d.ref,ue($))}return o}let[{render:s},{ScrollbackProvider:x},{ScrollbackTap:h}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./scrollback-JLPJR25X.js"),import("./ScrollbackTap-Q3IOKNMS.js")]);return new Promise(o=>{let d=!1,A=M=>{d||(d=!0,(async()=>{process.removeListener("SIGINT",T),await p.current?.flush();try{W.unmount()}catch{}o(M)})())},$=0,I={current:null},E=()=>{if($+=1,$>=2){process.removeListener("SIGINT",T);try{W.unmount()}catch{}o(130)}},T=()=>{E(),I.current?.()};process.on("SIGINT",T);let W=s((0,l.jsxs)(x,{children:[(0,l.jsx)(h,{into:p}),(0,l.jsx)(Re,{controller:k,cards:i,note:b,markOutcome:a,routeChat:f,listEvolveTargets:R,barSubject:r.barSubject,onFinish:A,onCtrlC:E,pauseRef:I})]}),{exitOnCtrlC:!1})})}export{Re as WalkSessionSurface,ue as outcomeToMark,qe as runWalkSession};
2
+ import{c as ce}from"./chunk-VRVFPMCR.js";import{k as se}from"./chunk-3POR47RC.js";import"./chunk-AFPHLUQ5.js";import{a as q,c as Q,d as ae}from"./chunk-RLRNLIRS.js";import"./chunk-OS4VSIHT.js";import"./chunk-TRJUD3XJ.js";import{b as G,c as ne,d as ie,e as L,g as N,h as oe}from"./chunk-W2JFDDIB.js";import{a as K}from"./chunk-CLGC7VEO.js";import"./chunk-JFAFKHDX.js";import"./chunk-GFKCTYCA.js";import"./chunk-JZ26R6UL.js";import"./chunk-DNNZ353O.js";import"./chunk-5DT7PIGB.js";import"./chunk-XWKUZJCP.js";import"./chunk-NVGBE2DR.js";import"./chunk-CH273NAE.js";import{A as O}from"./chunk-TH47OOBV.js";import{b as re}from"./chunk-VAYBKR76.js";import"./chunk-CUM23TLF.js";import{i as te}from"./chunk-DUAXZYAD.js";import"./chunk-DBIBROYW.js";import"./chunk-WXHQYYD5.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import{a as ee}from"./chunk-YCCUBQY4.js";import{y as g}from"./chunk-27U4PLPX.js";import{a as j}from"./chunk-HCBYKLMW.js";import{a as P,b as w,k as B}from"./chunk-C44QQJR4.js";import{a as be}from"./chunk-6YGTRKDT.js";import{e as H}from"./chunk-UR6MHSHU.js";var D=H(be(),1);function le(r,p,b){let{ref:C,reason:u,by:y}=b;if(!u||u.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 k=p.resolve(C);if(!k)return{record:null,errors:[{code:"UNKNOWN_REF",detail:`no node '${C}' in the graph`}]};let t=p.tipOf(k.cid);if(p.superseded.has(t))return{record:null,errors:[{code:"ALREADY_ARCHIVED",detail:`${C} is already superseded at its tip (${t.slice(0,19)}\u2026)`}]};let i=te(r,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[{kind:"node",old:t,new:null,reason:u,by:y}],source_head_moves:{}},{expectPrev:p.latestHash});return re(r),{record:i.record,errors:null}}function de(r){let p=r.by??{kind:"human",id:process.env.USER??"operator"},b=r.mode==="interactive"?"override":r.mode,C={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},u={applied:0,committed:0,retired:0,skipped:0,deferred:0,failed:0},y=new Map;for(let t of r.planRows)if(t.held_ref&&r.held){let i=r.held.rows.find(a=>a.temp_ref===t.held_ref);if(!i)continue;let v={kind:i.kind,ref:i.temp_ref,title:i.title,why:i.why,origin:"content-change",...t.impact?{impact:t.impact}:{}};y.set(v.ref,{card:v,source:"held",heldRef:i.temp_ref})}else if(t.kind==="MODIFY"){let i={kind:"MODIFY",ref:t.ref,title:t.ref,why:`${t.reason}: ${t.provenance}`,origin:t.origin??"structural-stale",...t.impact?{impact:t.impact}:{}};y.set(i.ref,{card:i,source:"row",row:t})}else if(t.kind==="ADD"){let i={kind:"ADD",ref:t.ref,title:t.ref,why:t.reason,origin:t.origin??"content-change"};y.set(i.ref,{card:i,source:"row",row:t})}for(let t of r.archive){if(t.kind!=="ARCHIVE")continue;let i={kind:"ARCHIVE",ref:t.ref,title:t.ref,why:t.why,provenance:t.why,...t.impact?{impact:t.impact}:{}};y.set(i.ref,{card:i,source:"archive",row:t})}for(let t of r.reviewFeeder?.()??[]){if(y.has(t.ref))continue;let i={kind:t.kind==="MODIFY_HELD"?"MODIFY":t.kind,ref:t.ref,title:t.title,why:t.why,...t.impact?{impact:t.impact}:{},...t.pair?{pair:t.pair}:{},...t.held?{held:!0}:{},...t.kind==="MODIFY_HELD"?{heldPayload:!0}:{}};y.set(i.ref,{card:i,source:"review",reviewCard:t})}let k=t=>(u.failed++,{outcome:"failed",detail:t});return{cards:()=>[...y.values()].map(t=>t.card),async submit(t,i){let v=y.get(t);if(!v)return k(`no card ${t}`);if(v.source==="review"){if(v.reviewCard.kind==="PAIR"&&i.v==="approve")return k(`${t} is a PAIR card \u2014 approve is not in its grammar (merge / keep both / defer); words ride a defer note`);let{submitReview:s}=await import("./verdicts-TRSTJLCL.js"),x=i.v==="approve"?{v:"approve"}:i.v==="archive"?{v:"archive",because:i.because??""}:i.v==="skip"&&v.reviewCard.kind==="MODIFY_HELD"?{v:"keep_current"}:i.v==="defer"||i.v==="skip"?{v:"defer"}:i.v==="merge"?{v:"merge"}:{v:"keep_both"},h=await s({contextDir:r.contextDir,signals:o=>r.signals({ref:o.ref,verdict:o.verdict,...o.reason?{reason:o.reason}:{}})},v.reviewCard,x,p);return h.outcome==="failed"?(u.failed++,h):h.outcome==="deferred"?(u.deferred++,i.v==="defer"&&i.note?(r.signals({ref:t,verdict:"deferred-with-note",reason:i.note}),{...h,detail:`steering noted: "${i.note}" \u2014 decide ${v.reviewCard.kind==="PAIR"?"merge / keep both":"the verdict"} when it re-offers`}):h):h.outcome==="retired"?(u.retired++,h):h.outcome==="committed"?(u.committed++,h):(u.applied++,h)}if(i.v==="merge"||i.v==="keep_both")return k(`${t} is a ${v.card.kind} card \u2014 ${i.v} applies to review cards only`);if(i.v==="skip")return u.skipped++,r.signals({ref:t,verdict:"gap-dismissed"}),{outcome:"skipped"};if(i.v==="defer")return u.deferred++,i.note?(r.signals({ref:t,verdict:"deferred-with-note",reason:i.note}),{outcome:"deferred",detail:`steering noted: "${i.note}"`}):{outcome:"deferred"};if(i.v==="archive"){if(v.source!=="archive")return k(`${t} is not an ARCHIVE card`);let s=O(r.contextDir),x=s.resolve(v.row.ref);if(x&&s.superseded.has(s.tipOf(x.cid)))return u.skipped++,{outcome:"skipped",detail:"already retired \u2014 nothing to do"};let h=le(r.contextDir,O(r.contextDir),{ref:v.row.ref,reason:`reconcile retire: ${v.row.why}`,by:p});return h.errors?k(h.errors.map(o=>`${o.code}: ${o.detail}`).join("; ")):(u.retired++,r.signals({ref:t,verdict:"gap-resolved-archive",reason:v.row.why}),{outcome:"retired"})}if(v.source==="archive")return k(`${t} takes archive/skip/defer, not approve`);if(v.source==="held"){let s=se(r.contextDir,r.held,v.heldRef,p,i.edits);if(!s.ok)return k(s.message);if(s.kind==="ADD"){let x=await r.runDesign(s.ref,{yes:!0,mode:b,...i.steering?{because:i.steering}:{}});return x!==0?(u.failed++,{outcome:"failed",landed:!0,detail:`committed ${s.ref}, but its design run exited ${x} \u2014 finish with kane-cli design tests --use-case ${s.ref}`}):(u.applied++,r.signals({ref:t,verdict:"gap-resolved-create",...i.steering?{reason:i.steering}:{}}),{outcome:"applied",detail:s.ref})}if(i.steering){let x=O(r.contextDir),h=q(x,s.ref);if(!h.ok)return u.committed++,{outcome:"committed",detail:`committed ${s.ref}, but steering could not resolve it (${h.message}) \u2014 steer via kane-cli maintain evolve ${s.ref}`};let o=await Q(r.contextDir,h.target,{yes:!0,mode:b,because:i.steering},C,r.runDesign,"batch");if(o.outcome==="no-design"){let d=await r.runDesign(h.target.seamRef,{yes:!0,mode:b,because:i.steering});return d!==0?(u.failed++,{outcome:"failed",landed:!0,detail:`committed ${s.ref}, but its steered design run exited ${d} \u2014 finish with kane-cli design tests --use-case ${h.target.seamRef}`}):(u.applied++,r.signals({ref:t,verdict:"gap-resolved-create",reason:i.steering}),{outcome:"applied",detail:s.ref})}return o.outcome==="failed"||o.outcome==="paused"?(u.failed++,{outcome:"failed",landed:!0,detail:`committed ${s.ref}, but the steering evolve ${o.outcome} (exit ${o.code}) \u2014 finish with kane-cli maintain evolve ${s.ref}`}):o.outcome==="declined"?(u.committed++,{outcome:"committed",detail:`committed ${s.ref} \u2014 the steering evolve was declined; re-run kane-cli maintain evolve ${s.ref}`}):(u.applied++,r.signals({ref:t,verdict:"gap-resolved-evolve",reason:i.steering}),{outcome:"applied",detail:s.ref})}return u.committed++,r.signals({ref:t,verdict:"gap-resolved-evolve"}),{outcome:"committed",detail:s.ref}}let a=O(r.contextDir),f=q(a,v.row.ref);if(!f.ok)return k(f.message);if(v.card.kind==="ADD"){let s=await r.runDesign(f.target.seamRef,{yes:!0,mode:b});return s!==0?k(`design run exited ${s}`):(u.applied++,r.signals({ref:t,verdict:"gap-resolved-create"}),{outcome:"applied"})}let R=await Q(r.contextDir,f.target,{yes:!0,mode:b,...i.steering?{because:i.steering}:{}},C,r.runDesign,"batch");return R.outcome==="evolved"?(u.applied++,r.signals({ref:t,verdict:"gap-resolved-evolve",...i.steering?{reason:i.steering}:{}}),{outcome:"applied"}):R.outcome==="failed"||R.outcome==="paused"?k(`evolve ${R.outcome} (exit ${R.code})`):(u.skipped++,{outcome:"skipped",detail:R.outcome})},summary:()=>({...u})}}var _=H(j(),1);function U({mark:r,markColor:p,color:b,indent:C=2,reserve:u=0,children:y}){let{stdout:k}=B(),t=(k?.columns??80)-u,i=C+r.length+1;return(0,_.jsxs)(P,{children:[(0,_.jsx)(P,{width:i,flexShrink:0,children:(0,_.jsx)(w,{color:p,children:`${" ".repeat(C)}${r}`})}),(0,_.jsx)(P,{width:Math.max(20,t-i),children:(0,_.jsx)(w,{color:b,children:y})})]})}var l=H(j(),1);function ue(r){return r.landed?"committed":r.outcome}var ye={applied:{mark:"\u2714",color:"green"},committed:{mark:"\u2714",color:"green"},retired:{mark:"\u2714",color:"green"},skipped:{mark:"\xB7",color:"dim"},deferred:{mark:"\u2013",color:"dim"},failed:{mark:"\u2717",color:"red"}},Y=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function xe(r){return r.v==="archive"?"Retiring\u2026":r.v==="approve"&&r.steering?"Approving with your changes \u2014 committing, then re-designing\u2026":"Applying \u2014 committing\u2026"}function Re({controller:r,cards:p,note:b,markOutcome:C,routeChat:u,listEvolveTargets:y,barSubject:k,onFinish:t,onCtrlC:i,pauseRef:v}){let[a,f]=(0,D.useState)(p.length>0?{at:"card",idx:0,sel:0,editor:null}:{at:"done-panel",sel:0}),R=(0,D.useRef)(0),s=(0,D.useRef)(a);s.current=a;let x=(0,D.useRef)([]),[h,o]=(0,D.useState)(0),d=a.at==="busy"||a.at==="evolving";(0,D.useEffect)(()=>{if(!d)return;let e=setInterval(()=>o(n=>n+1),120);return()=>clearInterval(e)},[d]);let A=(0,D.useRef)(!1),$=()=>{b((0,l.jsx)(w,{color:g.dim,children:"walk paused \u2014 every verdict so far is committed; re-run the same command to continue"})),t(3)},I=()=>{if(A.current)return;A.current=!0;let e=s.current;if(e.at==="busy"||e.at==="evolving"){b((0,l.jsx)(w,{color:g.dim,children:"finishing the current item, then pausing\u2026"}));return}if(e.at==="done-panel"||e.at==="picker"||e.at==="why"||e.at==="view"){t(R.current);return}$()};v&&(v.current=I);let E=a.at==="card"||a.at==="busy"?p[a.idx]:null,T=()=>[{key:"finish",label:"finish"},...y?[{key:"evolve",label:"evolve another use-case\u2026"}]:[],...x.current.length>0?[{key:"view",label:"view what changed"}]:[]],W=()=>{let e=y?.()??[];if(e.length===0){b((0,l.jsx)(w,{color:g.dim,children:"nothing is stale \u2014 no evolve targets right now"})),f({at:"done-panel",sel:0});return}f({at:"picker",items:e,sel:0})},M=e=>{let n=e+1;if(n<p.length)f({at:"card",idx:n,sel:0,editor:null});else{let c=r.summary();b((0,l.jsx)(w,{color:g.dim,children:`reconcile walk: ${c.applied} applied, ${c.committed} committed, ${c.retired} retired, ${c.skipped} skipped, ${c.deferred} deferred`+(c.failed>0?`, ${c.failed} failed`:"")})),f({at:"done-panel",sel:0})}},F=(0,D.useRef)(!1),S=(e,n)=>{if(F.current)return;F.current=!0;let c=p[e];f({at:"busy",idx:e,label:xe(n),startedAt:Date.now()}),r.submit(c.ref,n).catch(m=>({outcome:"failed",detail:m instanceof Error?m.message:String(m)})).then(m=>{let V=ye[m.outcome]??{mark:"\xB7",color:"dim"},we=m.outcome!=="failed"&&m.outcome!=="skipped"&&m.outcome!=="deferred"&&c.impact&&"stale_refs"in c.impact&&c.impact.stale_refs.length>0?` \xB7 ${c.impact.stale_refs.length} item(s) now stale`:"",Z=`${m.outcome} [${c.kind}] ${K(c.title)}${m.detail?` \u2014 ${K(m.detail)}`:""}${we}`;if(x.current.push({mark:V.mark,color:V.color,line:Z}),b((0,l.jsx)(U,{mark:V.mark,markColor:V.color==="green"?g.green:V.color==="red"?g.red:g.dim,color:V.color==="dim"?g.dim:void 0,children:Z})),m.outcome==="failed"&&(R.current=R.current===0?1:R.current),C(c.ref,ue(m)),F.current=!1,A.current){$();return}M(e)})},me=(e,n)=>{f({at:"evolving",title:e.title,startedAt:Date.now()}),u(`${e.key} ${n}`).catch(c=>`\u2717 evolve failed: ${c instanceof Error?c.message:String(c)}`).then(c=>{let m=c.startsWith("\u2713");if(x.current.push({mark:m?"\u2714":"\u2717",color:m?"green":"red",line:c.replace(/^[✓✗]\s*/,"")}),b((0,l.jsx)(U,{mark:m?"\u2714":"\u2717",markColor:m?g.green:g.red,children:c.replace(/^[✓✗]\s*/,"")})),A.current){t(R.current);return}f({at:"done-panel",sel:0})})},fe=(0,D.useMemo)(()=>({isFocused:()=>{let e=s.current;return e.at==="card"&&e.editor===null||e.at==="done-panel"||e.at==="picker"||e.at==="view"},onMove:e=>{f(n=>{if(n.at==="card"){let c=p[n.idx],m=N(c)??L(c).length-1;return{...n,sel:Math.max(0,Math.min(m,n.sel+e))}}return n.at==="done-panel"?{...n,sel:Math.max(0,Math.min(T().length-1,n.sel+e))}:n.at==="picker"?{...n,sel:Math.max(0,Math.min(n.items.length-1,n.sel+e))}:n})},onSelect:()=>{let e=s.current;if(e.at==="card"){let n=p[e.idx],c=N(n);if(c!==null&&e.sel===c){f({...e,editor:"",editorIntent:"steer"});return}let m=L(n)[e.sel];if(m?.v==="archive"&&n.kind==="REVIEW"){f({...e,editor:"",editorIntent:"because"});return}m&&S(e.idx,{v:m.v});return}if(e.at==="done-panel"){let n=T()[e.sel];n?.key==="finish"?t(R.current):n?.key==="evolve"?W():n?.key==="view"&&f({at:"view"});return}if(e.at==="picker"){let n=e.items[e.sel];n&&f({at:"why",item:n,text:""});return}},onDigit:e=>{let n=s.current;if(n.at==="card"){let c=p[n.idx],m=L(c)[e-1];if(m?.v==="archive"&&c.kind==="REVIEW"){f({...n,editor:"",editorIntent:"because"});return}m&&S(n.idx,{v:m.v});return}n.at==="done-panel"&&e-1<T().length&&f({...n,sel:e-1}),n.at==="picker"&&e-1<n.items.length&&f({...n,sel:e-1})},onType:e=>{f(n=>n.at!=="card"||N(p[n.idx])===null?n:{...n,editor:(n.editor??"")+e,editorIntent:n.editorIntent??"steer"})},isMulti:()=>!1,onSpace:()=>{},onBack:()=>{let e=s.current;(e.at==="picker"||e.at==="view")&&f({at:"done-panel",sel:0})}}),[p]);(0,D.useEffect)(()=>{a.at==="done"&&t(R.current)},[a.at]);let pe=a.at==="card"||a.at==="done-panel"||a.at==="picker"||a.at==="why"||a.at==="view",ge=a.at==="card"||a.at==="busy"?`${k?`${k} \xB7 `:""}item ${a.idx+1} of ${p.length}`:k,X=e=>Math.floor((Date.now()-e)/1e3),{stdout:ve}=B(),z=Math.min((ve?.columns??80)-1,100),J=`view \xB7 this run's changes \xB7 ${x.current.length}`,he=Math.max(2,z-(3+J.length+1)),ke=Math.max(2,z-12);return(0,l.jsxs)(P,{flexDirection:"column",children:[(0,l.jsx)(ie,{onToggleThinking:()=>{},onCtrlC:()=>{i(),I()},panel:fe}),a.at==="card"&&E?(0,l.jsx)(oe,{card:E,position:{n:a.idx+1,of:p.length},sel:a.sel,focused:a.editor===null,editorIntent:a.editorIntent??"steer",freeText:a.editor!==null?{value:a.editor,onChange:e=>f(n=>n.at==="card"?{...n,editor:e}:n),onSubmit:e=>{let n=s.current;if(n.at!=="card")return;let c=e.trim();if(!c){f({...n,editor:null,editorIntent:void 0});return}let m=p[n.idx];n.editorIntent==="because"?S(n.idx,{v:"archive",because:c}):m.kind==="PAIR"?S(n.idx,{v:"defer",note:c}):S(n.idx,{v:"approve",steering:c})},onCancel:()=>f(e=>e.at==="card"?{...e,editor:null,editorIntent:void 0}:e)}:null}):null,a.at==="busy"?(0,l.jsxs)(w,{color:g.assuranceAccent,children:[`${Y[h%Y.length]} ${a.label} `,(0,l.jsx)(w,{color:g.dim,children:`(${X(a.startedAt)}s)`})]}):null,a.at==="evolving"?(0,l.jsxs)(w,{color:g.assuranceAccent,children:[`${Y[h%Y.length]} Evolving ${a.title}\u2026 `,(0,l.jsx)(w,{color:g.dim,children:`(${X(a.startedAt)}s)`})]}):null,a.at==="done-panel"?(0,l.jsx)(G,{headline:(()=>{let e=r.summary();return`reconcile done \u2014 ${e.applied+e.committed} applied \xB7 ${e.retired} retired \xB7 ${e.skipped} skipped \xB7 ${e.deferred} deferred${e.failed>0?` \xB7 ${e.failed} failed`:""}`})(),rows:T(),sel:a.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select"}):null,a.at==="picker"?(0,l.jsx)(G,{ask:!0,headline:"evolve which use-case?",rows:a.items.map(e=>({key:e.key,label:e.title,detail:e.badge})),sel:a.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}):null,a.at==="why"?(0,l.jsxs)(P,{flexDirection:"column",borderStyle:"round",borderColor:g.assuranceAccent,paddingX:1,children:[(0,l.jsxs)(P,{children:[(0,l.jsxs)(w,{children:[(0,l.jsx)(w,{color:g.assuranceAccent,children:"\u25B8"})," ",(0,l.jsx)(w,{color:g.dim,children:"\u270E "})]}),(0,l.jsx)(ee,{value:a.text,onChange:e=>f(n=>n.at==="why"?{...n,text:e}:n),onSubmit:e=>{let n=s.current;n.at==="why"&&(e.trim()?me(n.item,e.trim()):f({at:"picker",items:[n.item],sel:0}))},onCancel:()=>{s.current.at==="why"&&W()},placeholder:`what should change about ${a.item.title}?`})]}),(0,l.jsx)(w,{color:g.muted,children:" \u23CE submit \xB7 esc back"})]}):null,a.at==="view"?(0,l.jsxs)(P,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,l.jsxs)(w,{color:g.assuranceAccent,children:["\u2500\u2500 ",(0,l.jsx)(w,{bold:!0,children:J}),` ${"\u2500".repeat(he)}`]}),(0,l.jsx)(w,{children:" "}),x.current.map((e,n)=>(0,l.jsx)(U,{mark:e.mark,markColor:e.color==="green"?g.green:e.color==="red"?g.red:g.dim,color:e.color==="dim"?g.dim:void 0,indent:0,reserve:0,children:e.line},`vc-${n}`)),(0,l.jsx)(w,{children:" "}),(0,l.jsxs)(w,{color:g.assuranceAccent,children:["\u2500\u2500 ",(0,l.jsx)(w,{color:g.muted,children:"esc back"}),` ${"\u2500".repeat(ke)}`]})]}):null,(0,l.jsx)(ne,{verb:"maintain",subject:ge,state:pe?"idle":void 0,hints:"ctrl+c exit"})]})}async function qe(r){let p={current:null},b=o=>{p.current?.append(o)},C=null,u=async(o,d)=>{let[{runDesign:A},{resolveAgentAuthEnv:$},{runAgent:I},{preflightTurn:E}]=await Promise.all([import("./run-2COODVX2.js"),import("./spawner-J67QR4QP.js"),import("./bridge-5Z3BIB77.js"),import("./turn-preflight-JGYT7LXP.js")]);C??=await $();let T=C;return A({useCase:o,force:!0,mode:d.mode??"override",...d.because?{because:d.because}:{},...d.changeDelta!==void 0?{changeDelta:d.changeDelta}:{},...d.priorDesign!==void 0?{priorDesign:d.priorDesign}:{}},{contextDir:r.dir,agent:I,preflightTurn:()=>E(T),ask:async()=>[],out:()=>{},progress:()=>{},isTTY:!1,auth:T})},y=r.runDesign??u,k=de({contextDir:r.dir,held:r.held,archive:r.archive,planRows:r.rows,runDesign:y,mode:"interactive",signals:r.signals,reviewFeeder:()=>{try{return ce({contextDir:r.dir},O(r.dir))}catch{return[]}}}),t=new Set(r.rows.filter(o=>o.applied!==void 0).map(o=>o.held_ref??o.ref)),i=k.cards().filter(o=>!t.has(o.ref)&&!(o.kind==="ARCHIVE"&&r.archiveState?.[o.ref]!==void 0)),v=o=>r.rows.findIndex(d=>(d.held_ref??d.ref)===o),a=(o,d)=>{try{if(i.find(I=>I.ref===o)?.kind==="ARCHIVE"){d==="retired"?r.markA?.(o,"retired"):d==="skipped"&&r.markA?.(o,"skipped");return}let $=v(o);if($<0)return;d==="applied"||d==="committed"?r.mark?.($,"approved"):d==="skipped"&&r.mark?.($,"skipped")}catch{}},f=async o=>{let[{openGraph:d},{resolveParentUc:A,evolveOneUc:$}]=await Promise.all([import("./readmodel-XOYGGQ3S.js"),import("./evolve-cmd-BCPNXAMV.js")]),[I,...E]=o.split(/\s+/),T=d(r.dir),W=A(T,I);if(!W.ok)return`couldn't resolve '${I}' \u2014 start with a use-case id (uc-\u2026): ${W.message}`;if(E.length===0)return`say what to change: \`${I} <your words>\` \u2014 the words become the redesign's change delta`;let M=E.join(" "),F={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},S=await $(r.dir,W.target,{yes:!0,mode:"override",because:M},F,y,"batch");return S.outcome==="evolved"?(r.signals({ref:W.target.display,verdict:"gap-resolved-evolve",reason:M}),`\u2713 redesigned ${W.target.display} \u2014 "${M}"`):`\u2717 evolve ${S.outcome} for ${W.target.display} (exit ${S.code})`},R=r.listEvolveTargets??(()=>{let o=O(r.dir);return ae(o).targets.map(d=>({key:d.display,title:d.display,badge:"stale"}))});if(r.script){let o=0;for(let d of i){let A=await r.script(d),$=await k.submit(d.ref,A);$.outcome==="failed"&&o===0&&(o=1),a(d.ref,ue($))}return o}let[{render:s},{ScrollbackProvider:x},{ScrollbackTap:h}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./scrollback-JLPJR25X.js"),import("./ScrollbackTap-Q3IOKNMS.js")]);return new Promise(o=>{let d=!1,A=M=>{d||(d=!0,(async()=>{process.removeListener("SIGINT",T),await p.current?.flush();try{W.unmount()}catch{}o(M)})())},$=0,I={current:null},E=()=>{if($+=1,$>=2){process.removeListener("SIGINT",T);try{W.unmount()}catch{}o(130)}},T=()=>{E(),I.current?.()};process.on("SIGINT",T);let W=s((0,l.jsxs)(x,{children:[(0,l.jsx)(h,{into:p}),(0,l.jsx)(Re,{controller:k,cards:i,note:b,markOutcome:a,routeChat:f,listEvolveTargets:R,barSubject:r.barSubject,onFinish:A,onCtrlC:E,pauseRef:I})]}),{exitOnCtrlC:!1})})}export{Re as WalkSessionSurface,ue as outcomeToMark,qe as runWalkSession};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a}from"./chunk-EDSZJZFG.js";import"./chunk-IP2O264K.js";import"./chunk-R5T4RLF5.js";import"./chunk-IDX3TOPY.js";import"./chunk-BKM2LWU2.js";import"./chunk-KBM3XHAM.js";import"./chunk-2YEHV2CX.js";import"./chunk-56PAQAX5.js";import"./chunk-5EOX4MEY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-27U4PLPX.js";import"./chunk-UR6MHSHU.js";export{a as withTelemetry};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testmuai/kane-cli",
3
- "version": "0.7.2",
3
+ "version": "0.8.1",
4
4
  "description": "KaneAI Terminal UI — browser automation testing agent",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -17,6 +17,7 @@
17
17
  "README.md"
18
18
  ],
19
19
  "dependencies": {
20
+ "@devicefarmer/adbkit-apkreader": "^3.2.4",
20
21
  "@testmuai/evidence-cli": "^0.1.7",
21
22
  "archiver": "^7.0.1",
22
23
  "chalk": "^5.3.0",
@@ -34,11 +35,16 @@
34
35
  "ws": "^8.20.0"
35
36
  },
36
37
  "optionalDependencies": {
37
- "@testmuai/kane-cli-darwin-arm64": "0.7.2",
38
- "@testmuai/kane-cli-darwin-x64": "0.7.2",
39
- "@testmuai/kane-cli-linux-x64": "0.7.2",
40
- "@testmuai/kane-cli-linux-arm64": "0.7.2",
41
- "@testmuai/kane-cli-win-x64": "0.7.2",
38
+ "@testmuai/kane-cli-assurance-darwin-arm64": "0.8.1",
39
+ "@testmuai/kane-cli-assurance-darwin-x64": "0.8.1",
40
+ "@testmuai/kane-cli-assurance-linux-arm64": "0.8.1",
41
+ "@testmuai/kane-cli-assurance-linux-x64": "0.8.1",
42
+ "@testmuai/kane-cli-assurance-win-x64": "0.8.1",
43
+ "@testmuai/kane-cli-darwin-arm64": "0.8.1",
44
+ "@testmuai/kane-cli-darwin-x64": "0.8.1",
45
+ "@testmuai/kane-cli-linux-x64": "0.8.1",
46
+ "@testmuai/kane-cli-linux-arm64": "0.8.1",
47
+ "@testmuai/kane-cli-win-x64": "0.8.1",
42
48
  "@testmuai/kane-cli-node-darwin-arm64": "24.18.0",
43
49
  "@testmuai/kane-cli-node-darwin-x64": "24.18.0",
44
50
  "@testmuai/kane-cli-node-linux-x64": "24.18.0",
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as p,b as l,c as n}from"./chunk-GYNTNKNB.js";import{y as o}from"./chunk-ZUGCHQFC.js";import{a as g}from"./chunk-HCBYKLMW.js";import{a,j as c}from"./chunk-C44QQJR4.js";import{a as R}from"./chunk-6YGTRKDT.js";import{e as t}from"./chunk-UR6MHSHU.js";var b=t(R(),1);var e=t(g(),1);function A({model:d,authLabel:v,profile:x,env:w,defaultUrl:u,projectId:r,projectName:s,folderId:i,folderName:f,windowSize:B,chromeProfile:C}){let h=r?s?`${s} (${r})`:r:"(none)",D=i?f?`${f} (${i})`:i:"(none)",{exit:m}=c();return(0,b.useEffect)(()=>{let P=setTimeout(()=>m(),50);return()=>clearTimeout(P)},[m]),(0,e.jsx)(a,{flexDirection:"column",children:(0,e.jsx)(p,{title:"Configuration",children:(0,e.jsxs)(a,{flexDirection:"column",paddingY:1,children:[(0,e.jsx)(n,{label:"Auth"}),(0,e.jsx)(l,{label:" method",value:v}),(0,e.jsx)(l,{label:" profile",value:x}),(0,e.jsx)(l,{label:" env",value:w}),(0,e.jsx)(n,{label:"Defaults"}),(0,e.jsx)(l,{label:" url",value:u??"(none)",valueColor:u?o.orange:o.dim}),(0,e.jsx)(l,{label:" model",value:d}),(0,e.jsx)(l,{label:" window",value:B}),(0,e.jsx)(l,{label:" project",value:h}),(0,e.jsx)(l,{label:" folder",value:D}),(0,e.jsx)(n,{label:"Paths"}),(0,e.jsx)(l,{label:" chrome",value:C,valueColor:o.dim})]})})})}export{A as ConfigView};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-EOLFTMWF.js";import"./chunk-2WRBTLFN.js";import"./chunk-5DBK6QNS.js";import"./chunk-CJJXT5DO.js";import"./chunk-XWKUZJCP.js";import"./chunk-ZPDM6FO7.js";import"./chunk-NVGBE2DR.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-TH47OOBV.js";import"./chunk-VAYBKR76.js";import"./chunk-CUM23TLF.js";import"./chunk-DUAXZYAD.js";import"./chunk-DBIBROYW.js";import"./chunk-WXHQYYD5.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-CH273NAE.js";import"./chunk-RFHMDQXZ.js";import"./chunk-QIGPXYMF.js";import"./chunk-5EOX4MEY.js";import"./chunk-O75ZHGJG.js";import"./chunk-ZUGCHQFC.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,b}from"./chunk-HYSFJSIG.js";import"./chunk-YCCUBQY4.js";import"./chunk-H32GM5G4.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-O75ZHGJG.js";import"./chunk-VRLUNZAK.js";import"./chunk-ZUGCHQFC.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as FolderPicker,a as formatFolderLine};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-BXYWX4J3.js";import"./chunk-74HTO7K3.js";import"./chunk-SL6PCVM2.js";import"./chunk-TDPWFYTJ.js";import"./chunk-AECMF3T2.js";import"./chunk-OR6MCL6Z.js";import"./chunk-L5LI2JF4.js";import"./chunk-4NFCAGRK.js";import"./chunk-WAOCHXJ5.js";import"./chunk-FBHRBFHP.js";import"./chunk-HYSFJSIG.js";import"./chunk-YCCUBQY4.js";import"./chunk-H32GM5G4.js";import"./chunk-QIGPXYMF.js";import"./chunk-5EOX4MEY.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-O75ZHGJG.js";import"./chunk-VE3SUJMA.js";import"./chunk-VT54ARGE.js";import"./chunk-VRLUNZAK.js";import"./chunk-ZUGCHQFC.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-VWKVUOXU.js";import"./chunk-MK7JUOYV.js";import"./chunk-OUJQVBUT.js";import"./chunk-TDPWFYTJ.js";import"./chunk-AECMF3T2.js";import"./chunk-VHZ4S57N.js";import"./chunk-5Y2G4NC7.js";import"./chunk-QIGPXYMF.js";import"./chunk-5EOX4MEY.js";import"./chunk-O75ZHGJG.js";import"./chunk-KQZA2QSC.js";import"./chunk-GYNTNKNB.js";import"./chunk-DFS4RMVP.js";import"./chunk-ZUGCHQFC.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,b}from"./chunk-YTHQNN2L.js";import"./chunk-R5T4RLF5.js";import"./chunk-KBM3XHAM.js";import"./chunk-2YEHV2CX.js";import"./chunk-IDX3TOPY.js";import"./chunk-BKM2LWU2.js";import"./chunk-QIGPXYMF.js";import"./chunk-5EOX4MEY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-ZUGCHQFC.js";import"./chunk-UR6MHSHU.js";export{b as telemetryBootstrap,a as telemetryEnvName};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-VLWMMOMF.js";import"./chunk-DBKNJRJG.js";import"./chunk-5FJJJNJK.js";import"./chunk-UD7KKHPW.js";import"./chunk-ZUGCHQFC.js";import"./chunk-UR6MHSHU.js";export{a as runAgent};