@testmuai/kane-cli 0.6.9 → 0.6.10

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 (170) hide show
  1. package/dist/ChatSurface-PLXUGRBV.js +8 -0
  2. package/dist/{ChromeProfilePicker-FSZB4SZR.js → ChromeProfilePicker-IDKFTIHW.js} +1 -1
  3. package/dist/{CliFeedbackPrompt-WNMDCIHZ.js → CliFeedbackPrompt-SZOU5FGZ.js} +1 -1
  4. package/dist/{CliUploadProgress-H4265KXU.js → CliUploadProgress-W2FC33Q4.js} +1 -1
  5. package/dist/{ConfigView-XCUZ44SP.js → ConfigView-JB2NSZ2N.js} +1 -1
  6. package/dist/EvidenceViewOffer-5YST67KY.js +2 -0
  7. package/dist/{FolderPicker-S2XVCPYN.js → FolderPicker-SPNZESAR.js} +1 -1
  8. package/dist/{HelpView-OPKRGNNM.js → HelpView-XBDXXHFB.js} +1 -1
  9. package/dist/{InfoBox-TW2PGJK5.js → InfoBox-2T7GYSFT.js} +1 -1
  10. package/dist/{LinksBox-66M7XP5Y.js → LinksBox-2NNZZDQT.js} +1 -1
  11. package/dist/{ProfilesView-T2CFQPR5.js → ProfilesView-KJZVGU5B.js} +1 -1
  12. package/dist/{ProjectPicker-7ALN52CY.js → ProjectPicker-AUTZNEPE.js} +1 -1
  13. package/dist/{SaveSessionPrompt-HM3F6QML.js → SaveSessionPrompt-LHLSJQSQ.js} +1 -1
  14. package/dist/SingleShotApp-Z2HGSZXG.js +2 -0
  15. package/dist/{SummaryBox-BQZEGOIV.js → SummaryBox-5G7WULUN.js} +1 -1
  16. package/dist/TestMdRunView-B4IZHRDT.js +2 -0
  17. package/dist/{WhoamiView-722MBPSG.js → WhoamiView-XNWBDMQR.js} +1 -1
  18. package/dist/bind-FEOGBJ2O.js +6 -0
  19. package/dist/bootstrap-T6DSUI34.js +2 -0
  20. package/dist/{bridge-V4FF5QPK.js → bridge-WMGH3O3B.js} +1 -1
  21. package/dist/{changelog-KMYZW5MI.js → changelog-AGFDNTTW.js} +1 -1
  22. package/dist/{chat-committer-MWZ4JQMM.js → chat-committer-4ENYH3RC.js} +1 -1
  23. package/dist/{chat-controller-YX5A7R52.js → chat-controller-M4QYRH7Y.js} +1 -1
  24. package/dist/chunk-26H3PDVN.js +4 -0
  25. package/dist/{chunk-MXLXKHW4.js → chunk-2H3XNXL3.js} +1 -1
  26. package/dist/chunk-2KS2YRIS.js +2 -0
  27. package/dist/{chunk-4BAL4OGF.js → chunk-2OQLMW3F.js} +1 -1
  28. package/dist/chunk-2XMJ6YAE.js +2 -0
  29. package/dist/{chunk-NIKA2V6B.js → chunk-3KN2UW37.js} +1 -1
  30. package/dist/{chunk-CLYG26XV.js → chunk-4OSW2WEN.js} +35 -35
  31. package/dist/chunk-5EOX4MEY.js +2 -0
  32. package/dist/{chunk-U5QTE3WX.js → chunk-5F7PU5AJ.js} +1 -1
  33. package/dist/{chunk-T2ULEJK7.js → chunk-5LTUYXMP.js} +2 -2
  34. package/dist/{chunk-T4WZWKIU.js → chunk-5Z7GAIPP.js} +2 -2
  35. package/dist/{chunk-ZA4GR5R7.js → chunk-6CGNLFSN.js} +1 -1
  36. package/dist/{chunk-FVM7TWKT.js → chunk-6JTEWZ75.js} +1 -1
  37. package/dist/{chunk-QZNUTCSD.js → chunk-6MTVGARW.js} +1 -1
  38. package/dist/{chunk-3YI4QRXF.js → chunk-6NWPK2MS.js} +1 -1
  39. package/dist/{chunk-4FH2KFRT.js → chunk-6ZJ7ZFEX.js} +1 -1
  40. package/dist/{chunk-345PY4SZ.js → chunk-76I6NJBX.js} +1 -1
  41. package/dist/{chunk-R65HNFRB.js → chunk-7APDXIKI.js} +1 -1
  42. package/dist/{chunk-TFVMSEIA.js → chunk-7C6G4V43.js} +1 -1
  43. package/dist/{chunk-QB4IOM3X.js → chunk-7LWXIRI3.js} +1 -1
  44. package/dist/{chunk-L3HG5ONB.js → chunk-A46NBRAP.js} +1 -1
  45. package/dist/{chunk-JHAGEBKE.js → chunk-AYDUHTPA.js} +1 -1
  46. package/dist/chunk-BKM2LWU2.js +3 -0
  47. package/dist/{chunk-OAEZKYYQ.js → chunk-C3OGWCII.js} +2 -2
  48. package/dist/{chunk-LMMOR7CR.js → chunk-DHF3VO2R.js} +1 -1
  49. package/dist/{chunk-IWBPV3VS.js → chunk-ECFOND7B.js} +1 -1
  50. package/dist/chunk-EV3EHXEI.js +4 -0
  51. package/dist/{chunk-OV2W7KBC.js → chunk-FEF75YKV.js} +1 -1
  52. package/dist/chunk-FHKDTM5L.js +6 -0
  53. package/dist/{chunk-LRA3V5GY.js → chunk-FYDBD7Q4.js} +1 -1
  54. package/dist/{chunk-TACPTX64.js → chunk-GWJ76BLF.js} +2 -2
  55. package/dist/chunk-J44RN3FB.js +2 -0
  56. package/dist/{chunk-GNNMHYWE.js → chunk-J4WS2SXT.js} +1 -1
  57. package/dist/chunk-JHHMXU76.js +2 -0
  58. package/dist/chunk-JHPZXF77.js +14 -0
  59. package/dist/chunk-JTCW76YG.js +12 -0
  60. package/dist/{chunk-K5JGCJ2K.js → chunk-K7USHLVZ.js} +4 -4
  61. package/dist/{chunk-EASTDHNW.js → chunk-KA7Q5IIC.js} +1 -1
  62. package/dist/chunk-KFUZYEHX.js +2 -0
  63. package/dist/chunk-KK7DYHK6.js +347 -0
  64. package/dist/{chunk-GBYH35H5.js → chunk-LPBAQQ7E.js} +1 -1
  65. package/dist/{chunk-AU7WQ2O5.js → chunk-MJF3USZF.js} +1 -1
  66. package/dist/{chunk-FFHBQK5N.js → chunk-MSK7AC4E.js} +2 -2
  67. package/dist/{chunk-O4HWPV67.js → chunk-OESHJ4J2.js} +2 -2
  68. package/dist/chunk-OIYGGEUL.js +6 -0
  69. package/dist/chunk-Q2F5QB2W.js +2 -0
  70. package/dist/{chunk-EWLLPUP4.js → chunk-QGBLC4ZJ.js} +1 -1
  71. package/dist/chunk-QPT4ERGK.js +47 -0
  72. package/dist/{chunk-QZJID3OZ.js → chunk-RH4GCEFX.js} +1 -1
  73. package/dist/{chunk-U6TLLYRG.js → chunk-RLZA4VJT.js} +1 -1
  74. package/dist/{chunk-FT4G3QGO.js → chunk-SACSQY3Q.js} +1 -1
  75. package/dist/{chunk-LEA6IHXC.js → chunk-SDRFTIRU.js} +1 -1
  76. package/dist/{chunk-SHAA6FOD.js → chunk-SKRZN25J.js} +1 -1
  77. package/dist/chunk-TLL7KFLY.js +6 -0
  78. package/dist/{chunk-QTHITA73.js → chunk-TW3K2DKB.js} +1 -1
  79. package/dist/chunk-VOHQA2SP.js +2 -0
  80. package/dist/{chunk-QM3XF5TW.js → chunk-VYQMCLKG.js} +1 -1
  81. package/dist/{chunk-DKERZJYF.js → chunk-W54W762O.js} +1 -1
  82. package/dist/{chunk-YY6WPFMT.js → chunk-WSZ7IENQ.js} +3 -3
  83. package/dist/{chunk-7BCZLDNX.js → chunk-WV42KKEU.js} +1 -1
  84. package/dist/chunk-XY5KWIRF.js +3 -0
  85. package/dist/{chunk-RLICAFFQ.js → chunk-XZW3TBOV.js} +1 -1
  86. package/dist/chunk-Y5RNCJAN.js +19 -0
  87. package/dist/{chunk-DPOES6G3.js → chunk-YJIESLN6.js} +1 -1
  88. package/dist/{chunk-G6F2BOFT.js → chunk-YOFKDRY4.js} +1 -1
  89. package/dist/{chunk-F42YVALT.js → chunk-YVXC46DY.js} +1 -1
  90. package/dist/{chunk-P4SE6YON.js → chunk-Z25FKS3Y.js} +1 -1
  91. package/dist/{chunk-RQM3DUSB.js → chunk-ZFFRHV5U.js} +1 -1
  92. package/dist/chunk-ZPENY2Q3.js +4 -0
  93. package/dist/{config-Z4OS3HEE.js → config-7WI6TBDV.js} +1 -1
  94. package/dist/{cover-cmd-L2HSVDLH.js → cover-cmd-J2ZJUL6P.js} +1 -1
  95. package/dist/{credentials-TNEVAUHI.js → credentials-MX5ABDPF.js} +1 -1
  96. package/dist/docx-convert-IAX54REO.js +2 -0
  97. package/dist/{dossier-ZHSHATVU.js → dossier-UVTGCL7T.js} +1 -1
  98. package/dist/{evidence-MA3LDBWG.js → evidence-TZYIOSPG.js} +1 -1
  99. package/dist/{evolve-cmd-DTW4EOXM.js → evolve-cmd-IDS5ZIUY.js} +1 -1
  100. package/dist/exit-manager-MXUD7GQ7.js +2 -0
  101. package/dist/{explain-cmd-E366QTAD.js → explain-cmd-NPKN63XL.js} +1 -1
  102. package/dist/{explain-cmd-327F6ESA.js → explain-cmd-R3WCNR2A.js} +1 -1
  103. package/dist/extract-bind-CISTQFI3.js +8 -0
  104. package/dist/{extract-cmd-LFVMG6UE.js → extract-cmd-HG3DHHSL.js} +1 -1
  105. package/dist/{gaps-cmd-IAEXXESW.js → gaps-cmd-XLVUFSTY.js} +1 -1
  106. package/dist/{generate-headless-TYQRYQKJ.js → generate-headless-4VJMAHCU.js} +2 -2
  107. package/dist/index.js +67 -65
  108. package/dist/ingest-UAIKHOB4.js +2 -0
  109. package/dist/ingest-cmd-7HJLRLMG.js +4 -0
  110. package/dist/interactive-bind-IXFRXBBL.js +10 -0
  111. package/dist/{lifecycle-cmd-KZOC4WDW.js → lifecycle-cmd-VTFZ3TF2.js} +1 -1
  112. package/dist/{list-cmd-6X5U46RD.js → list-cmd-KXL4WQII.js} +1 -1
  113. package/dist/list-commands-BJYJ34HT.js +2 -0
  114. package/dist/{logical-ids-RFGWBVML.js → logical-ids-LMBNMENR.js} +1 -1
  115. package/dist/login-flow-KW5T7WRJ.js +2 -0
  116. package/dist/pdf-convert-S7VYE6AV.js +2 -0
  117. package/dist/{persist-recorded-session-RAL7UCQT.js → persist-recorded-session-QR7RVAXR.js} +1 -1
  118. package/dist/{pipeline-PLI5WQKX.js → pipeline-L6V24KGN.js} +1 -1
  119. package/dist/{readmodel-V3DVL6NP.js → readmodel-AGAPK2AI.js} +1 -1
  120. package/dist/reconcile-cmd-E2MMQM7Z.js +2 -0
  121. package/dist/{recording-banner-MBR3Q7VD.js → recording-banner-QAIKLV6E.js} +1 -1
  122. package/dist/{require-project-folder-KE7XOOFN.js → require-project-folder-OANMHOVE.js} +1 -1
  123. package/dist/{review-cmd-XVWPSWU2.js → review-cmd-2FCGP55U.js} +1 -1
  124. package/dist/run-FYJZCWYS.js +2 -0
  125. package/dist/run-IOBBB7GN.js +2 -0
  126. package/dist/{run-test-md-ZCAWNP35.js → run-test-md-5E53A5DT.js} +2 -2
  127. package/dist/{sessions-cmd-STHKGDX4.js → sessions-cmd-DTQYDZNT.js} +1 -1
  128. package/dist/{skill-installer-H5DPJJFW.js → skill-installer-LGEIIQ4Q.js} +1 -1
  129. package/dist/{spawner-C6B5J73J.js → spawner-6FHAXNOA.js} +1 -1
  130. package/dist/store-id-EOSGEKVK.js +2 -0
  131. package/dist/tcg-generate-CEDA6DZJ.js +2 -0
  132. package/dist/testmd-actions-2OFH5GRJ.js +2 -0
  133. package/dist/token-refresh-R75DGT4X.js +2 -0
  134. package/dist/{validate-basic-VBPGGHES.js → validate-basic-Z46MAH2G.js} +1 -1
  135. package/dist/{version-check-YPRCQJ7E.js → version-check-64M5JQQ7.js} +1 -1
  136. package/dist/{view-cmd-G4PGJRQH.js → view-cmd-PG66UQK7.js} +1 -1
  137. package/dist/walk-session-7PM2RXEF.js +2 -0
  138. package/package.json +10 -6
  139. package/dist/ChatSurface-B2QJYKV4.js +0 -8
  140. package/dist/EvidenceViewOffer-5TJCRM2T.js +0 -2
  141. package/dist/SingleShotApp-YQYS6HTB.js +0 -2
  142. package/dist/TestMdRunView-7CL3PM3J.js +0 -2
  143. package/dist/bind-HNI5LCNK.js +0 -6
  144. package/dist/chunk-2Z5MSC23.js +0 -12
  145. package/dist/chunk-4CKZAGBD.js +0 -2
  146. package/dist/chunk-4GXOBABK.js +0 -4
  147. package/dist/chunk-E4EHWO3J.js +0 -4
  148. package/dist/chunk-FXPPQL4D.js +0 -6
  149. package/dist/chunk-M5JQXOCE.js +0 -12
  150. package/dist/chunk-RHNKYNNZ.js +0 -6
  151. package/dist/chunk-SORKKW7B.js +0 -6
  152. package/dist/chunk-VCYVSKPM.js +0 -2
  153. package/dist/chunk-VXLOEM2U.js +0 -347
  154. package/dist/chunk-XTO236AL.js +0 -14
  155. package/dist/chunk-XWIN3S7O.js +0 -4
  156. package/dist/exit-manager-VCSIUYBR.js +0 -2
  157. package/dist/extract-bind-DZLG4GUE.js +0 -5
  158. package/dist/ingest-CBQAXVH6.js +0 -2
  159. package/dist/ingest-cmd-JN6PLDE3.js +0 -3
  160. package/dist/interactive-bind-QEBWUJCN.js +0 -7
  161. package/dist/list-commands-BU2MSYRH.js +0 -2
  162. package/dist/login-flow-4L62GWLT.js +0 -2
  163. package/dist/pdf-convert-KYXI4FU4.js +0 -2
  164. package/dist/reconcile-cmd-UXY36ROJ.js +0 -2
  165. package/dist/run-5DQSL5KH.js +0 -2
  166. package/dist/run-B7BRNC3X.js +0 -2
  167. package/dist/tcg-generate-DIMZXAV3.js +0 -2
  168. package/dist/testmd-actions-X6XCV53D.js +0 -2
  169. package/dist/token-refresh-7PAPCMQK.js +0 -2
  170. package/dist/walk-session-GWOP27TX.js +0 -2
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a,b,c,d}from"./chunk-ZPENY2Q3.js";import"./chunk-JHHMXU76.js";import"./chunk-DNNZ353O.js";import"./chunk-Q2F5QB2W.js";import"./chunk-NVGBE2DR.js";import"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";export{a as compositePayloadBytes,d as ingestFile,b as slugFromFilename,c as versionBaseOf};
@@ -0,0 +1,4 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{c as g}from"./chunk-RN4OSVTG.js";import{b as l,c as p,d as $}from"./chunk-ZPENY2Q3.js";import"./chunk-JHHMXU76.js";import"./chunk-DNNZ353O.js";import{g as b}from"./chunk-EV3EHXEI.js";import{i as v}from"./chunk-QPT4ERGK.js";import"./chunk-Q2F5QB2W.js";import"./chunk-VOHQA2SP.js";import{a as u}from"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import{a as f}from"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";import{existsSync as O}from"fs";import{appendFileSync as y,mkdirSync as h}from"fs";import{homedir as T}from"os";import{dirname as w,join as S}from"path";function x(n,a){let e=/^(DOCX_[A-Z_]+):/.exec(a)?.[1];if(e)try{let s=process.env.KANE_CONTEXT_REFUSAL_LOG??S(T(),".testmuai","kaneai","context-refusals.log");h(w(s),{recursive:!0}),y(s,`${new Date().toISOString()} ${e} ${n}
3
+ `)}catch{}}async function _(n,a,e,s=process.cwd()){let i=u(s);if(a.as!==void 0&&n.length>1)return(e.err??e.out)(`error: --as names ONE source identity \u2014 pass a single file (got ${n.length})`),2;for(let c of n){let d=a.as;if(e.isTTY&&d===void 0&&O(i)){let o=l(c),r=p(o);if(r){let m=f(i);m.heads.get(r)!=null&&m.heads.get(o)==null&&await e.confirm(`${o} looks like a new version of existing source '${r}' \u2014 ingest as '${r}' (moves its head)?`)&&(d=r)}}let t;try{t=await $({contextDir:i,filePath:c,asId:d,confirmSameSource:e.isTTY?o=>e.confirm(`identical bytes already ingested as ${o} \u2014 treat as the same source?`):void 0,converters:{pdf:b,docx:v}})}catch(o){let r=o instanceof Error?o.message:String(o);return x(c,r),e.out(`error: ${c}: ${r}`),1}e.out(`${t.status} ${t.source_id} source ${t.cid} blob ${t.blob}`);for(let o of t.warnings??[])e.out(`warning: ${o}`);if(t.composite){let o=t.composite.pages!==void 0?` ${t.composite.pages} pages,`:"";e.out(`${t.source_id}: ${t.composite.kind},${o} ${t.composite.delivered} images delivered (${t.composite.omitted} omitted)`)}if(!e.isTTY&&t.status==="created"){let o=f(i);for(let[r,m]of o.heads.entries())if(!(r===t.source_id||m==null)&&o.getNode(m)?.content.blob===t.blob){e.out(`hint: identical bytes already ingested as ${r} \u2014 merged later via review`);break}}}return 0}async function G(n,a){let{createInterface:e}=await import("readline/promises");return _(n,a,{out:s=>process.stdout.write(s+`
4
+ `),isTTY:g(),confirm:async s=>{let i=e({input:process.stdin,output:process.stdout});try{let c=await i.question(`${s} [Y/n] `);return!/^n(o)?$/i.test(c.trim())}finally{i.close()}}})}export{G as ingestCommand,_ as runIngestCommand};
@@ -0,0 +1,10 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as v}from"./chunk-KK7DYHK6.js";import"./chunk-KHU7C6EE.js";import"./chunk-SKRZN25J.js";import"./chunk-ZFFRHV5U.js";import"./chunk-JFAFKHDX.js";import"./chunk-J44RN3FB.js";import"./chunk-3C5GMAM4.js";import"./chunk-GG43HSU2.js";import"./chunk-OSALXGD4.js";import{c as b}from"./chunk-RN4OSVTG.js";import"./chunk-DNNZ353O.js";import"./chunk-YKTYVJBN.js";import"./chunk-CVOGP253.js";import"./chunk-427OQS2N.js";import{a as A,b as E}from"./chunk-XY5KWIRF.js";import"./chunk-FHKDTM5L.js";import"./chunk-2XMJ6YAE.js";import"./chunk-BKM2LWU2.js";import"./chunk-ZPDM6FO7.js";import{a as D}from"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import"./chunk-L5LI2JF4.js";import"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-2KS2YRIS.js";import"./chunk-UR6MHSHU.js";async function q(t){let[{render:p},a,{QuestionBatchPrompt:m}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./react-QWOAB3TB.js"),import("./ui-JEJGTURD.js")]),d=a.default??a;return new Promise(e=>{let f=p(d.createElement(m,{questions:t,onSubmit:c=>{f.unmount(),e(c)}}))})}async function J(t){let[{resolveAgentAuthEnv:p},{runAgent:a},{preflightTurn:m}]=await Promise.all([import("./spawner-6FHAXNOA.js"),import("./bridge-WMGH3O3B.js"),import("./turn-preflight-JGYT7LXP.js")]),d=await p(),e=D(process.cwd()),{baseUrlAdvisory:f}=await import("./turn-preflight-JGYT7LXP.js"),c=f();c&&process.stderr.write(c+`
3
+ `);let r=E({verb:"design",mode:t.plan?"cli":"interactive",contextRoot:e,env:A(),resumeSid:t.resume,write:!0,longSession:!0}),h={...d,...r.spawnEnv()},w=await m(h);if(!w.ok)return process.stderr.write((w.message??"error: turn-endpoint preflight failed")+`
4
+ `),process.stderr.write(r.supportFooter()+`
5
+ `),r.error("preflight_auth"),await r.end({exit_code:2}),2;let T=async()=>w;if(t.plan){let n=await v(t,{contextDir:e,agent:a,preflightTurn:T,ask:q,out:o=>process.stdout.write(o+`
6
+ `),progress:o=>process.stderr.write(o+`
7
+ `),isTTY:b(),auth:h,telemetry:r});return n===1&&process.stderr.write(r.supportFooter()+`
8
+ `),await r.end({exit_code:n}),n}if(!t.resume){let[{openGraph:n},{designGate:o}]=await Promise.all([import("./readmodel-AGAPK2AI.js"),import("./gate-B6C6KLFA.js")]),s=o(n(e),t.useCase,!!t.force);if(!s.ok)return process.stderr.write(`design: ${s.message}
9
+ `),s.code}let[{render:S},P,{ScrollbackProvider:R},{ChatSurface:F},{ScrollbackTap:G},{makeChatController:_},{setInkExit:j},B]=await Promise.all([import("./build-JIKYOZUH.js"),import("./react-QWOAB3TB.js"),import("./scrollback-JLPJR25X.js"),import("./ChatSurface-PLXUGRBV.js"),import("./ScrollbackTap-Q3IOKNMS.js"),import("./chat-controller-M4QYRH7Y.js"),import("./exit-manager-MXUD7GQ7.js"),Promise.all([import("./chat-committer-4ENYH3RC.js"),import("./descriptor-KXDJ4XYD.js"),import("./explain-VTRHEVUQ.js"),import("./readmodel-AGAPK2AI.js")])]),[{commitChatTurn:I},{topologyDescriptor:N},{explain:O},{openGraph:g}]=B,y=P.default??P,i=_({commitChatTurn:I,descriptor:N("design"),contextDir:e,refreshGraph:()=>g(e),graph:g(e),explain:O,by:{kind:"human",id:"owner"}}),{buildDossier:Q}=await import("./dossier-UVTGCL7T.js"),Y=n=>{try{return Q(g(e),n)}catch{return null}},k={current:null},C=0,x=null,l=!1,$=()=>{if(C+=1,C>=2){try{u.unmount()}catch{}process.exit(130)}i.requestPause(),x=setTimeout(()=>{l||(l=!0,(async()=>{i.ledger({kind:"interrupted",detail:"the agent did not confirm the pause within 5s"}),await k.current?.flush();try{u.unmount()}catch{}process.exit(130)})())},5e3)},u=S(y.createElement(R,null,y.createElement(G,{into:k}),y.createElement(F,{controller:i,verb:"design",onCtrlC:$,inspect:Y})),{exitOnCtrlC:!1});j(()=>u.unmount()),i.ledger({kind:"banner",text:`kane-cli design \xB7 ${t.useCase??t.resume??""}`});try{let n=v(t,{contextDir:e,agent:a,preflightTurn:T,ask:s=>i.ask(s),out:s=>i.note(s),progress:()=>{},isTTY:b(),auth:h,chat:i,telemetry:r});n.finally(()=>{l=!0});let o=await n;return o===1&&process.stderr.write(r.supportFooter()+`
10
+ `),await r.end({exit_code:o}),o}finally{l=!0,x&&clearTimeout(x),await k.current?.flush();try{u.unmount()}catch{}}}export{J as bindDesignInteractive};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as l,b as a,c as f,d as m}from"./chunk-GRB66C5S.js";import"./chunk-RN4OSVTG.js";import"./chunk-BC7UVJJB.js";import{a as c}from"./chunk-LEA6IHXC.js";import"./chunk-RGDQMKNJ.js";import{h as y,i as b,m as v}from"./chunk-L3HG5ONB.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";var g={kind:"human",id:process.env.USER??"operator"},C=/^(UNKNOWN_|BAD_|INVALID_|MALFORMED_|NOT_|SLUG_TAKEN|ALREADY_|SUPERSEDED_)/;function w(e){return e.every(r=>C.test(r.code))?2:1}function p(e,r){for(let n of r)l(e,`${n.code}: ${n.detail}`);return w(r)}async function E(e,r,n,o=process.cwd()){let t=a(o,n);if(!t||!await f(n,`retire source ${e} (head \u2192 null + tombstone record)`,r.yes))return 2;let i=c(t),s=b({contextDir:t,graph:i,sourceId:e,reason:r.reason,by:g});return s.errors?p(n,s.errors):(n.out(`retired ${e} (record ${s.record.seq}) \u2014 its use-cases stay until no live source evidences them`),0)}async function _(e,r,n,o=process.cwd()){let t=a(o,n);if(!t)return 2;if(v.test(r))return l(n,`"${r}" is in the reserved sequential-id namespace (assigned at mint) \u2014 pick a descriptive name`),2;let i=c(t),s=y({contextDir:t,graph:i,assignments:[{ref:e,slug:r}],by:g});return s.errors?p(n,s.errors):(n.out(`named ${s.record.names[0].cid} as "${r}" (record ${s.record.seq})`),0)}async function x(e,r,n,o=process.cwd()){let t=a(o,n);if(!t)return 2;let i=Number(e);if(!await f(n,`revert record ${i} via a compensation record`,r.yes))return 2;let s=c(t),{commitRevert:$}=await import("./revert-FRXNIP5R.js"),d=$({contextDir:t,graph:s,seq:i,reason:r.reason,by:g});for(let h of d.warnings)n.out(`note: ${h}`);if(d.errors)return p(n,d.errors);let u=d.record;return n.out(`reverted record ${i} via compensation record ${u.seq}: ${u.supersessions.length} supersession(s), ${u.review.length} trust restoration(s), ${Object.keys(u.source_head_moves).length} head move(s) \u2014 history unchanged, effects inverted`),0}async function P(e,r){return E(e,r,m())}async function R(e,r){return _(e,r,m())}async function k(e={},r=process.cwd()){return D(e,m(),r)}async function D(e,r,n=process.cwd()){let o=a(n,r);if(!o||!await f(r,"assign logical ids to every live unnamed node (one commit record)",e.yes))return 2;let{backfillLogicalIds:t}=await import("./logical-ids-RFGWBVML.js"),i=c(o),s=t(o,i);return s.errors?p(r,s.errors):(r.out(s.assigned===0?"backfill: every live node already has a logical id":`backfill: assigned ${s.assigned} logical id(s) (record ${s.record.seq})`),0)}async function q(e,r){return x(e,r,m())}export{k as nameBackfillCommand,R as nameCommand,P as retireCommand,q as revertCommand,D as runNameBackfillCommand,_ as runNameCommand,E as runRetireCommand,x as runRevertCommand};
2
+ import{a as l,b as a,c as f,d as m}from"./chunk-GRB66C5S.js";import"./chunk-RN4OSVTG.js";import"./chunk-BC7UVJJB.js";import{a as c}from"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import{h as y,i as b,m as v}from"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";var g={kind:"human",id:process.env.USER??"operator"},C=/^(UNKNOWN_|BAD_|INVALID_|MALFORMED_|NOT_|SLUG_TAKEN|ALREADY_|SUPERSEDED_)/;function w(e){return e.every(r=>C.test(r.code))?2:1}function p(e,r){for(let n of r)l(e,`${n.code}: ${n.detail}`);return w(r)}async function E(e,r,n,o=process.cwd()){let t=a(o,n);if(!t||!await f(n,`retire source ${e} (head \u2192 null + tombstone record)`,r.yes))return 2;let i=c(t),s=b({contextDir:t,graph:i,sourceId:e,reason:r.reason,by:g});return s.errors?p(n,s.errors):(n.out(`retired ${e} (record ${s.record.seq}) \u2014 its use-cases stay until no live source evidences them`),0)}async function _(e,r,n,o=process.cwd()){let t=a(o,n);if(!t)return 2;if(v.test(r))return l(n,`"${r}" is in the reserved sequential-id namespace (assigned at mint) \u2014 pick a descriptive name`),2;let i=c(t),s=y({contextDir:t,graph:i,assignments:[{ref:e,slug:r}],by:g});return s.errors?p(n,s.errors):(n.out(`named ${s.record.names[0].cid} as "${r}" (record ${s.record.seq})`),0)}async function x(e,r,n,o=process.cwd()){let t=a(o,n);if(!t)return 2;let i=Number(e);if(!await f(n,`revert record ${i} via a compensation record`,r.yes))return 2;let s=c(t),{commitRevert:$}=await import("./revert-FRXNIP5R.js"),d=$({contextDir:t,graph:s,seq:i,reason:r.reason,by:g});for(let h of d.warnings)n.out(`note: ${h}`);if(d.errors)return p(n,d.errors);let u=d.record;return n.out(`reverted record ${i} via compensation record ${u.seq}: ${u.supersessions.length} supersession(s), ${u.review.length} trust restoration(s), ${Object.keys(u.source_head_moves).length} head move(s) \u2014 history unchanged, effects inverted`),0}async function P(e,r){return E(e,r,m())}async function R(e,r){return _(e,r,m())}async function k(e={},r=process.cwd()){return D(e,m(),r)}async function D(e,r,n=process.cwd()){let o=a(n,r);if(!o||!await f(r,"assign logical ids to every live unnamed node (one commit record)",e.yes))return 2;let{backfillLogicalIds:t}=await import("./logical-ids-LMBNMENR.js"),i=c(o),s=t(o,i);return s.errors?p(r,s.errors):(r.out(s.assigned===0?"backfill: every live node already has a logical id":`backfill: assigned ${s.assigned} logical id(s) (record ${s.record.seq})`),0)}async function q(e,r){return x(e,r,m())}export{k as nameBackfillCommand,R as nameCommand,P as retireCommand,q as revertCommand,D as runNameBackfillCommand,_ as runNameCommand,E as runRetireCommand,x as runRevertCommand};
@@ -1,3 +1,3 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as m}from"./chunk-GRB66C5S.js";import"./chunk-RN4OSVTG.js";import"./chunk-BC7UVJJB.js";import{a as g}from"./chunk-LEA6IHXC.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L3HG5ONB.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import{d as o}from"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";var p=[o.SOURCE,o.USECASE,o.SCENARIO,o.AC,o.TEST,o.GAP];function h(n,e){if(n===o.SOURCE)return String(e.source_id??"");let i=e.question?.header,l=e.title??e.text??i??e.kind??"";return String(l)}function E(n,e){if(n.length<=e)return n;let i=n.slice(0,e-1),l=i.lastIndexOf(" ");return`${(l>e*.6?i.slice(0,l):i).trimEnd()}\u2026`}var b=58;async function O(n,e,i=process.cwd()){let l=m(i,e);if(!l)return 2;let a=g(l),s=[...a.nodeLabel.entries()].filter(([t])=>n.all||!a.superseded.has(t)).map(([t,r])=>{let u=a.getNode(t)?.content??{},f=a.trust.get(t)??(r===o.SOURCE?"-":"derived");return{id:r===o.SOURCE?String(u.source_id??""):a.nameOf.get(t)??t.slice(0,19),cid:t,label:r,title:h(r,u),trust:f,fresh:f==="archived"?"-":a.stale(t)}});if(n.type&&(s=s.filter(t=>t.label===n.type)),n.inferred&&(s=s.filter(t=>t.trust==="derived")),n.stale&&(s=s.filter(t=>t.fresh!=="fresh")),!n.all){let t=new Map;for(let r of s)t.set(`${r.label}:${r.id}`,r);s=[...t.values()]}let d=t=>{let r=p.indexOf(t);return r===-1?p.length:r};if(s.sort((t,r)=>d(t.label)-d(r.label)||t.title.localeCompare(r.title)),n.json){for(let t of s)e.out(JSON.stringify(t));return 0}if(s.length===0)return e.out("(no matching nodes)"),0;e.out("trust \xB7 fresh \xB7 title \xB7 id");let c=null;for(let t of s){if(t.label!==c){c=t.label;let u=s.filter(f=>f.label===t.label).length;e.out(""),e.out(`\u2500\u2500 ${t.label} \xB7 ${u} \u2500\u2500`)}let r=E(t.title||"(untitled)",b);e.out(` ${t.trust.padEnd(8)} ${t.fresh.padEnd(6)} ${r.padEnd(b)} ${t.id}`)}return 0}async function R(n){return O(n,{out:e=>process.stdout.write(e+`
2
+ import{b as m}from"./chunk-GRB66C5S.js";import"./chunk-RN4OSVTG.js";import"./chunk-BC7UVJJB.js";import{a as g}from"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import{d as o}from"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";var p=[o.SOURCE,o.USECASE,o.SCENARIO,o.AC,o.TEST,o.GAP];function h(n,e){if(n===o.SOURCE)return String(e.source_id??"");let i=e.question?.header,l=e.title??e.text??i??e.kind??"";return String(l)}function E(n,e){if(n.length<=e)return n;let i=n.slice(0,e-1),l=i.lastIndexOf(" ");return`${(l>e*.6?i.slice(0,l):i).trimEnd()}\u2026`}var b=58;async function O(n,e,i=process.cwd()){let l=m(i,e);if(!l)return 2;let a=g(l),s=[...a.nodeLabel.entries()].filter(([t])=>n.all||!a.superseded.has(t)).map(([t,r])=>{let u=a.getNode(t)?.content??{},f=a.trust.get(t)??(r===o.SOURCE?"-":"derived");return{id:r===o.SOURCE?String(u.source_id??""):a.nameOf.get(t)??t.slice(0,19),cid:t,label:r,title:h(r,u),trust:f,fresh:f==="archived"?"-":a.stale(t)}});if(n.type&&(s=s.filter(t=>t.label===n.type)),n.inferred&&(s=s.filter(t=>t.trust==="derived")),n.stale&&(s=s.filter(t=>t.fresh!=="fresh")),!n.all){let t=new Map;for(let r of s)t.set(`${r.label}:${r.id}`,r);s=[...t.values()]}let d=t=>{let r=p.indexOf(t);return r===-1?p.length:r};if(s.sort((t,r)=>d(t.label)-d(r.label)||t.title.localeCompare(r.title)),n.json){for(let t of s)e.out(JSON.stringify(t));return 0}if(s.length===0)return e.out("(no matching nodes)"),0;e.out("trust \xB7 fresh \xB7 title \xB7 id");let c=null;for(let t of s){if(t.label!==c){c=t.label;let u=s.filter(f=>f.label===t.label).length;e.out(""),e.out(`\u2500\u2500 ${t.label} \xB7 ${u} \u2500\u2500`)}let r=E(t.title||"(untitled)",b);e.out(` ${t.trust.padEnd(8)} ${t.fresh.padEnd(6)} ${r.padEnd(b)} ${t.id}`)}return 0}async function R(n){return O(n,{out:e=>process.stdout.write(e+`
3
3
  `),confirm:async()=>!1,isTTY:!!process.stdout.isTTY})}export{E as capWord,R as listCommand,O as runListCommand,h as titleOf};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a,b,c,d,e,f,g,h,i}from"./chunk-MSK7AC4E.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-YJIESLN6.js";import"./chunk-2KS2YRIS.js";import"./chunk-UR6MHSHU.js";export{d as emitNdjson,b as filterByName,g as formatAuthResolutionError,c as paginate,a as parsePagination,i as registerListCommands,e as renderTable,f as resolveTmsBasicAuth,h as validateCreateName};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{h as d,k as f,l as m}from"./chunk-L3HG5ONB.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(f).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?m(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=d({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};
2
+ import{h as d,k as f,l as m}from"./chunk-A46NBRAP.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(f).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?m(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=d({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-6ZJ7ZFEX.js";import"./chunk-5F7PU5AJ.js";import"./chunk-RFHMDQXZ.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-YJIESLN6.js";import"./chunk-2KS2YRIS.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{a,b,c,d,e,f,g}from"./chunk-EV3EHXEI.js";import"./chunk-VOHQA2SP.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-FVM7TWKT.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-VCYVSKPM.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}
2
+ import{g as h}from"./chunk-OIYGGEUL.js";import{a as m,b as I,k as S,s as _}from"./chunk-RKWJG3WW.js";import{a as f}from"./chunk-6JTEWZ75.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-2KS2YRIS.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};
@@ -1,2 +1,2 @@
1
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-O4HWPV67.js";import"./chunk-FCMLIK7P.js";import"./chunk-CJJXT5DO.js";import"./chunk-QM4S2APK.js";import"./chunk-ZPDM6FO7.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-LEA6IHXC.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L3HG5ONB.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-QZJID3OZ.js";import"./chunk-VCYVSKPM.js";import"./chunk-UR6MHSHU.js";export{c as UploadPipeline,b as packPresignEntry,a as readPackForUpload};
2
+ import{a,b,c}from"./chunk-GLS46X7N.js";import"./chunk-2YQ6TW77.js";import"./chunk-WAOCHXJ5.js";import"./chunk-OESHJ4J2.js";import"./chunk-FCMLIK7P.js";import"./chunk-CJJXT5DO.js";import"./chunk-QM4S2APK.js";import"./chunk-ZPDM6FO7.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.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-RH4GCEFX.js";import"./chunk-2KS2YRIS.js";import"./chunk-UR6MHSHU.js";export{c as UploadPipeline,b as packPresignEntry,a as readPackForUpload};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b}from"./chunk-LEA6IHXC.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L3HG5ONB.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};
2
+ import{a,b}from"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.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 J,b as Q,c as X,d as ee}from"./chunk-JHPZXF77.js";import{a as z,c as G,d as pe,f as Z}from"./chunk-5Z7GAIPP.js";import{a as P,b as ue,d as fe}from"./chunk-GRB66C5S.js";import{a as L,b as V,c as N,d as j,e as de,g as O,h as q}from"./chunk-K7USHLVZ.js";import{a as le}from"./chunk-JFAFKHDX.js";import"./chunk-3C5GMAM4.js";import{a as H}from"./chunk-7C6G4V43.js";import"./chunk-RN4OSVTG.js";import{b as ce}from"./chunk-ZPENY2Q3.js";import{c as ae}from"./chunk-JHHMXU76.js";import"./chunk-DNNZ353O.js";import"./chunk-Q2F5QB2W.js";import"./chunk-QM4S2APK.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import{a as I}from"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.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 we,statSync as ye}from"fs";import{basename as Y,resolve as W}from"path";var me=new Set(["interactive","agent","ci","override"]);function Re(e,n){if(e.mode!==void 0&&!me.has(e.mode))return{error:`--mode must be interactive | agent | ci | override, got '${e.mode}'`};let r=e.mode,t="reconcile without a TTY needs an explicit mode \u2014 pass --mode agent|ci|override, or --plan for a preview";return r==="interactive"&&!n?{error:t}:r||(n?"interactive":e.plan?"override":{error:t})}function ke(e,n,r,t){let i=W(n,r);if(!we(i)||!ye(i).isFile())return{error:`--from '${r}' is not a file \u2014 pass the changed source document`};let o=ae(i);if(!o.ok)return{error:`--from '${r}' is not an ingestable document \u2014 allowed: ${o.allowlist.join(", ")}`};let c=I(e);if(!c.heads.has(t))return{error:`unknown source '${t}' \u2014 see \`kane-cli context list --type source\``};if(c.heads.get(t)==null)return{error:`source '${t}' is retired \u2014 restore it first with \`kane-cli context revert\`, then reconcile`};let l=null;try{l=ce(i)}catch{}return l!==null&&l!==t&&c.heads.get(l)!=null?{error:`'${Y(i)}' already backs live source '${l}' \u2014 did you mean --source-id ${l}? To truly move these bytes under '${t}', retire '${l}' first`}:{sourceId:t,filePath:i}}function x(e){return e==null?"(none)":e.slice(0,19)}function T(e,n,r,t=!1){if(e.out(`reconcile ${n.source_id}: head ${n.head.status} \u2014 ${x(n.head.before)} \u2192 ${x(n.head.after)}`),t||(e.out(`note: ${n.note}`),e.out(`skipped arms: ${n.skipped_arms}`)),n.changed&&e.out(n.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){let i=n.changeset??[],o=(l,h)=>{let y=i.filter(s=>s.kind===l).length;return y>0?`${y} ${h}`:null},c=[o("ADD","add"),o("MODIFY","modify"),o("ARCHIVE","archive")].filter(Boolean);n.changed&&e.out(`changeset: ${i.length} item(s)${c.length?` \u2014 ${c.join(" \xB7 ")}`:""}`),e.out(`plan: ${n.rows.length} row(s) \u2014 each gets a card below`);return}if(n.changed){let i=n.changeset??[];e.out(`changeset: ${i.length} item(s)`);for(let o of i)if(o.kind==="MODIFY")e.out(` [MODIFY] ${H(o.ref)} \u2014 ${o.summary} (${x(o.old_cid)} \u2192 ${o.new_cid===null?"(staged)":x(o.new_cid)})`);else if(o.kind==="ADD")e.out(` [ADD] ${H(o.ref)}`);else{e.out(` [ARCHIVE] ${H(o.ref)} \u2014 ${o.why}`);let c=ne(o.impact,"retiring drops");c&&e.out(` ${c}`)}}e.out(`plan: ${n.rows.length} row(s)`);for(let i of n.rows){e.out(` [${i.kind}] ${H(i.ref)} \u2014 ${i.reason}`);let o=ne(i.impact,"approving marks");o&&e.out(` ${o}`),e.out(` provenance: ${i.provenance}`),e.out(` action: ${i.action}`)}}function ne(e,n){if(!e||e.stale_refs.length===0)return null;let r=e.direct_refs??[];return`impact: ${n} ${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,n,r,t,i,o,c=[],l="override",h,y,s,f,v){let p;try{p=q(e)}catch($){return P(t,$ instanceof Error?$.message:String($)),1}try{if(!r){let{runWalkSession:$}=await import("./walk-session-7PM2RXEF.js");return await $({dir:e,rows:n,archive:c,held:h??null,childMode:l,runDesign:f??null,mark:o,markA:s,...y?{archiveState:y}:{},signals:R=>C(e,R.ref,R.verdict,R.reason),...v?{script:v}:{}})}return await _e(e,n,r,t,i,o,c,l,h,y)}finally{p()}}var M=e=>`${e} high-risk item(s) need a human \u2014 ci mode won't guess. Walk interactively or use --mode agent.`;function K(e,n,r){let t=n.rows;e({type:"reconcile_plan",source_id:n.source_id,plan_path:r,rows:t.map(i=>({kind:i.kind,ref:i.ref,why:i.reason})),archive:n.changeset.filter(i=>i.kind==="ARCHIVE").map(i=>({ref:i.ref,why:i.why}))})}function re(e={}){return{type:"reconcile_summary",applied:0,skipped:0,deferred:0,plan_only:0,failed:0,paused:0,stale_created:0,...e}}var te=re();async function U(e,n,r,t,i,o,c,l,h){K(i,n,r);let y=n.changeset.filter(v=>v.kind==="ARCHIVE"&&h?.[v.ref]===void 0),s=n.rows,f;try{f=q(e)}catch(v){return i({type:"error",message:v instanceof Error?v.message:String(v)}),i(re()),2}try{return await $e(e,n,r,t,i,o,c,s,y,l)}finally{f()}}async function $e(e,n,r,t,i,o,c,l,h,y){let s=0,f=0,v=0,p=0,$=0,R=0,d=0,k=new Set,w=(u,a)=>{try{y?.(u,a)}catch{}};for(let[u,a]of l.entries()){i({type:"reconcile_row_start",kind:a.kind,ref:a.ref,...a.impact?{stale:a.impact.stale_refs.length,direct:a.impact.direct_refs?.length??0}:{}});let g=(m,D,S)=>i({type:"reconcile_row_end",kind:a.kind,ref:a.ref,outcome:m,...D!==void 0?{exit_code:D}:{},...S?{detail:S}:{}});if(a.applied){f++,g("skipped");continue}if(a.kind==="REMOVE"){$++,g("plan-only");continue}if(a.held_ref&&n.held){let m=new Set;if(a.kind==="MODIFY"&&a.impact){let S=I(e);for(let se of a.impact.stale_refs){let oe=S.resolve(se);oe&&S.stale(oe.tip)==="fresh"&&m.add(se)}}let D=J(e,n.held,a.held_ref,ie);if(!D.ok){v++,d===0&&(d=1),g("failed",1,D.message);continue}if(D.kind==="ADD"){let S=await t(D.ref,{yes:!0,mode:c});if(S!==0){S===3?(p++,d===0&&(d=3),g("paused",3)):(v++,d===0&&(d=1),g("failed",S));continue}}s++,D.kind!=="ADD"&&a.impact&&(R+=m.size),w(u,"approved"),C(e,a.ref,D.kind==="ADD"?"gap-resolved-create":"gap-resolved-evolve"),g("applied");continue}let _=z(I(e),a.ref);if(!_.ok){f++,g("skipped");continue}let b=_.target;if(k.has(b.ucTip)){f++,g("skipped");continue}if(a.kind==="ADD"){let m=await t(b.seamRef,{yes:!0,mode:c});if(m===3){p++,d===0&&(d=3),g("paused",3);continue}if(m!==0){v++,d===0&&(d=1),g("failed",m);continue}k.add(b.ucTip),s++,w(u,"approved"),C(e,a.ref,"gap-resolved-create"),g("applied")}else{let m=await G(e,b,{yes:!0,mode:c},o,t,"batch");m.outcome==="evolved"?(k.add(b.ucTip),s++,w(u,"approved"),C(e,a.ref,"gap-resolved-evolve"),g("applied")):m.outcome==="paused"?(p++,d===0&&(d=m.code),g("paused",m.code)):m.outcome==="failed"?(v++,d===0&&(d=1),g("failed",m.code)):(f++,g("skipped"))}}return h.length>0&&(i({type:"reconcile_paused",plan_path:r,pending:h.map(u=>({ref:u.ref,why:u.why}))}),p+=h.length,d===0&&(d=3)),i(re({applied:s,skipped:f,plan_only:$,failed:v,paused:p,stale_created:R})),d}var ie={kind:"human",id:process.env.USER??"operator"};function C(e,n,r,t){le(e,{ts:new Date().toISOString(),command:"reconcile-walk",id:n,verdict:r,polarity:"preference",by:ie,target:n,...t!==void 0?{reason:t}:{}})}async function _e(e,n,r,t,i,o,c=[],l="override",h,y){let s=0,f=0,v=0,p=0,$=0,R=0,d=0,k=new Set;for(let[w,u]of n.entries()){if(u.applied){t.out(`skipped ${u.ref} \u2014 already applied (${u.applied.outcome} at ${u.applied.at})`),f++;continue}let a=m=>{try{o?.(w,m)}catch(D){P(t,`could not record applied state for ${u.ref}: ${D instanceof Error?D.message:String(D)}`)}};if(u.kind==="REMOVE"){t.out(`REMOVE ${u.ref} \u2014 plan-only in this release (not executed)`),p++;continue}if(u.held_ref&&h){let m=J(e,h,u.held_ref,ie);if(!m.ok){P(t,`held ${u.ref}: ${m.message}`),$++,d===0&&(d=1);continue}if(t.out(`committed ${m.ref} (${u.kind==="ADD"?"minted":"updated \u2014 old\u2192new redirect"})`),m.kind==="ADD"){let D=await i(m.ref,{yes:r,mode:l});if(D===3){t.out(`design session for ${m.ref} paused \u2014 resume with "kane-cli design tests --resume"`),R++,d===0&&(d=3),a("approved");continue}if(D!==0){P(t,`design run for ${m.ref} ended with exit code ${D}`),$++,d===0&&(d=1),a("approved");continue}}s++,a("approved"),C(e,u.ref,u.kind==="ADD"?"gap-resolved-create":"gap-resolved-evolve");continue}let g=I(e),_=z(g,u.ref);if(!_.ok){t.out(`skipped ${u.ref} \u2014 ${_.message}`),f++;continue}let b=_.target;if(k.has(b.ucTip)){t.out(`skipped ${u.ref} \u2014 use-case ${b.display} already handled in this walk`),f++;continue}if(u.kind==="ADD"){let m=await i(b.seamRef,{yes:r,mode:l});if(m===3){t.out(`design session for ${b.display} paused \u2014 resume with "kane-cli design tests --resume"; this row lands when that session completes`),R++,d===0&&(d=3);continue}if(m!==0){P(t,`design run for ${b.display} ended with exit code ${m}`),$++,d===0&&(d=1);continue}k.add(b.ucTip),s++,a("approved"),C(e,u.ref,"gap-resolved-create")}else{let m=await G(e,b,{yes:!0,mode:l},t,i,"batch");m.outcome==="evolved"?(k.add(b.ucTip),s++,a("approved"),C(e,u.ref,"gap-resolved-evolve")):m.outcome==="paused"?(R++,d===0&&(d=m.code)):m.outcome==="failed"?($++,d===0&&(d=m.code)):f++}}for(let w of c)if(w.kind==="ARCHIVE"&&y?.[w.ref]===void 0){t.out(`[ARCHIVE] ${w.ref} \u2014 ${w.why}`);{let u=ne(w.impact,"retiring drops");u&&t.out(` ${u}`)}t.out(" plan-only \u2014 retire belongs to the interactive session (never headless)"),p++}return t.out(`reconcile walk: ${s} applied, ${f} skipped, ${v} deferred, ${p} plan-only`+($>0?`, ${$} failed`:"")+(R>0?`, ${R} paused`:"")),d}async function he(e,n,r,t,i,o=!1,c=!1){let l=i.seams??{reingest:X(e,r),reextract:ee(e,{stage:o})},h=null,y={reingest:l.reingest,reextract:async f=>h=await l.reextract(f)},s;try{t.out(`reconciling ${n}: re-reading the source and comparing against the graph\u2026`),s=await(i.buildPlan??Q)(e,n,y)}catch(f){return P(t,`reconcile failed: ${f instanceof Error?f.message:String(f)}`),null}return s.changed&&T(t,s,h,c),s}async function Pe(e,n,r,t,i){let o=V(e,n);if("error"in o)return P(t,o.error),2;let{plan:c,path:l}=o,h=r==="override"||r==="ci";if(n===void 0&&r==="interactive"&&t.isTTY&&!await t.confirm(`apply plan ${Y(l)} for ${c.source_id} (created ${c.created})?`))return t.out(`not applying ${Y(l)}`),0;let y=i.runDesignForUc??Z,s=i.runDesignForUc??null,f=i.sessionScript,v=(k,w)=>O(l,k,w),p=(k,w)=>j(l,k,w),$=F(e);if($===c.head_pin){if(r==="agent"){let w=i.emitEvent??(()=>{});return U(e,B(c),l,y,w,t,E(r),v,c.archive_state)}let k=N(c);return r==="ci"&&k.length>0?(P(t,M(k.length)),2):(t.out(`applying stored plan ${Y(l)} for ${c.source_id} (${c.rows.length} row(s))`),A(e,c.rows,h,t,y,v,c.changeset??[],E(r),c.held,c.archive_state,p,s,f))}if(t.out(`graph moved since this plan (${x(c.head_pin)} \u2192 ${x($)}) \u2014 recomputing`),c.held)return ve(e,c,t,i,r,y,!1);let R=await he(e,c.source_id,c.backing_path,t,i,!1,r==="interactive");if(!R)return 1;if(!R.changed)return T(t,R,null),0;if(r==="agent"){let k=i.emitEvent??(()=>{});return U(e,R,null,y,k,t,E(r))}let d=R.changeset.filter(k=>k.kind==="ARCHIVE");return r==="ci"&&d.length>0?(P(t,M(d.length)),2):A(e,R.rows,h,t,y,void 0,R.changeset,E(r),R.held,void 0,void 0,s,f)}function B(e,n=!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:n?e.rows.filter(r=>r.applied===void 0):e.rows,...e.held?{held:e.held}:{}}}async function be(e,n,r,t,i,o,c){let l=t.runDesignForUc??null,h=t.sessionScript,y=de(e,n);if(y===null)return null;if("error"in y)return P(r,y.error),2;let{plan:s,path:f}=y,v=s.rows.filter(d=>d.applied===void 0),p=N(s),$=t.emitEvent??(()=>{});if(v.length===0&&p.length===0){r.out(`already reconciled \u2014 plan ${s.created} applied ${s.rows.length} row(s)`);let d=pe(I(e)).staleCount;return d>0&&r.out(`${d} item(s) still stale \u2014 kane-cli maintain evolve --from-stale`),i==="agent"&&(K($,B(s),f),$({...te})),0}let R=F(e);return R!==s.head_pin?(r.out(`plan ${s.created} superseded \u2014 graph moved (${x(s.head_pin)} \u2192 ${x(R)}); recomputing`),ve(e,s,r,t,i,o,c)):(r.out(`resuming plan ${s.created} \u2014 ${v.length} pending row(s)${p.length>0?`, ${p.length} undecided archive item(s)`:""}`),c?(T(r,B(s),null),r.out(`plan stored: ${f}`),0):i==="agent"?U(e,B(s),f,o,$,r,E(i),(d,k)=>O(f,d,k),s.archive_state):i==="ci"&&p.length>0?(P(r,M(p.length)),2):A(e,s.rows,i==="override"||i==="ci",r,o,(d,k)=>O(f,d,k),s.changeset??[],E(i),s.held,s.archive_state,(d,k)=>j(f,d,k),l,h))}async function ve(e,n,r,t,i,o,c){let l=t.runDesignForUc??null,h=t.sessionScript,y;if(n.held){let u=I(e),a=new Set(n.rows.filter(_=>_.held_ref!==void 0&&_.applied!==void 0).map(_=>_.held_ref)),g=[];for(let _ of n.held.rows){if(a.has(_.temp_ref))continue;if(!_.matched_cid){g.push(_);continue}let b=u.tipOf(_.matched_cid);if(u.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}}})}y={source_id:n.held.source_id,rows:g}}let s=t.seams??{reingest:X(e,n.backing_path),reextract:ee(e,{stage:y!==void 0})},f;try{f=await(t.buildPlan??Q)(e,n.source_id,s,{resumeHeld:y})}catch(u){return P(r,`reconcile failed: ${u instanceof Error?u.message:String(u)}`),1}T(r,f,null,i==="interactive"&&!c);let v=F(e),p=null;if(v!=null){let u={},a=new Set(f.changeset.filter(g=>g.kind==="ARCHIVE").map(g=>g.ref));for(let[g,_]of Object.entries(n.archive_state??{}))a.has(g)&&(u[g]=_);p=L(e,{version:2,source_id:f.source_id,backing_path:n.backing_path,head_pin:v,created:new Date().toISOString().replace(/[:.]/g,"-"),skipped_arms:f.skipped_arms,note:f.note,changeset:f.changeset,rows:f.rows,...f.held?{held:f.held}:{},...Object.keys(u).length>0?{archive_state:u}:{}}),r.out(`plan stored: ${p}`)}if(c)return 0;let $=t.emitEvent??(()=>{}),R=p?V(e,p).plan.archive_state:void 0,d=p?(u,a)=>O(p,u,a):void 0,k=p?(u,a)=>j(p,u,a):void 0;if(i==="agent")return U(e,f,p,o,$,r,E(i),d,R);let w=f.changeset.filter(u=>u.kind==="ARCHIVE"&&R?.[u.ref]===void 0);return i==="ci"&&w.length>0?(P(r,M(w.length)),2):A(e,f.rows,i==="override"||i==="ci",r,o,d,f.changeset,E(i),f.held,R,k,l,h)}async function ge(e,n,r={},t=process.cwd()){let{telemetryBootstrap:i,telemetryEnvName:o}=await import("./bootstrap-T6DSUI34.js"),c=i({verb:"reconcile",mode:typeof e.mode=="string"?e.mode:"interactive",contextRoot:W(t,".context"),env:o(),applyPlanPath:typeof e.apply=="string"?W(t,e.apply):void 0,write:!0,longSession:!0});n.out(c.banner());let l=await De(e,n,r,t);return l===1&&n.out(c.supportFooter()),await c.end({exit_code:l}),l}async function De(e,n,r={},t=process.cwd()){let i=e.apply!==void 0&&e.apply!==!1,o=typeof e.apply=="string"?e.apply:void 0;if(e.plan&&i)return P(n,"pass --plan OR --apply, not both"),2;if((e.from!==void 0||!i)&&(!e.from||!e.sourceId))return P(n,"reconcile needs --from <file> AND --source-id <id> \u2014 see `kane-cli context list --type source` for ids"),2;if(e.from&&o!==void 0)return P(n,"pass --from OR --apply <path>, not both \u2014 a stored plan names its own source"),2;let l=ue(t,n);if(!l)return 2;if(e.mode!==void 0&&!me.has(e.mode))return P(n,`--mode must be interactive | agent | ci | override, got '${e.mode}'`),2;let h=e.mode==="agent"||e.mode==="ci"||e.mode==="override";if(i&&!h&&!n.isTTY)return P(n,"refusing to apply without a TTY to confirm \u2014 pass --mode override|ci"),2;let y=!e.plan,s="override";if(e.from){let a=Re(e,n.isTTY);if(typeof a=="object")return P(n,a.error),2;s=a}let f=s==="override"||s==="ci";if(i&&!e.from){let a=e.mode??"interactive";return Pe(l,o===void 0?void 0:W(t,o),a,n,r)}let v=ke(l,t,e.from,e.sourceId);if("error"in v)return P(n,v.error),2;let p=await he(l,v.sourceId,v.filePath,n,r,!!e.plan||s==="interactive",s==="interactive"&&!e.plan);if(!p)return 1;let $=r.runDesignForUc??Z,R=r.runDesignForUc??null,d=r.sessionScript;if(!p.changed){let a=await be(l,v.sourceId,n,r,s,$,!!e.plan);if(a!==null)return a;if(T(n,p,null),s==="agent"){let g=r.emitEvent??(()=>{});K(g,p,null),g({...te})}return 0}let k=F(l),w=null;if(k!=null?w=L(l,{version:2,source_id:p.source_id,backing_path:v.filePath,head_pin:k,created:new Date().toISOString().replace(/[:.]/g,"-"),skipped_arms:p.skipped_arms,note:p.note,changeset:p.changeset,rows:p.rows,...p.held?{held:p.held}:{}}):P(n,"no chain head after extract \u2014 plan not stored"),s==="agent"){let a=r.emitEvent??(()=>{});if(!y)return K(a,p,w),a({...te}),0;let g=w?(_,b)=>O(w,_,b):void 0;return U(l,p,w,$,a,n,E(s),g)}if(!y)return w&&n.out(`plan stored: ${w}`),0;let u=p.changeset.filter(a=>a.kind==="ARCHIVE");if(s==="ci"&&u.length>0)return w&&n.out(`plan stored: ${w}`),P(n,M(u.length)),2;if(w){n.out(`plan stored: ${w}`);let a=w;return A(l,Ee(l,a)??p.rows,f,n,$,(g,_)=>O(a,g,_),p.changeset,E(s),p.held,void 0,void 0,R,d)}return A(l,p.rows,f,n,$,void 0,p.changeset,E(s),p.held,void 0,void 0,R,d)}function Ee(e,n){let r=V(e,n);return"error"in r?null:r.plan.rows}async function Ye(e,n={},r,t=process.cwd()){if(e.mode==="agent"){let{makeHeadlessIO:i}=await import("./headless-io-PWW6YKH2.js"),o=r?i("ndjson","reconcile",r):i("ndjson","reconcile"),c={out:o.out,err:h=>o.event({type:"error",message:h}),isTTY:!1,confirm:async()=>!1,ask:async()=>""},l=2;try{l=await ge(e,c,{...n,emitEvent:h=>o.event(h)},t)}catch(h){o.event({type:"error",message:h instanceof Error?h.message:String(h)})}return o.done(l)}return ge(e,fe(),n,t)}export{E as childModeFor,Ye as reconcileCommand,Re as resolveReconcileMode,ge as runReconcileCommand,ke 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-TW2PGJK5.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};
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-2T7GYSFT.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-T2ULEJK7.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-QZJID3OZ.js";import"./chunk-VE3SUJMA.js";import"./chunk-VCYVSKPM.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};
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-5LTUYXMP.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-VE3SUJMA.js";import"./chunk-2KS2YRIS.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};
@@ -1,4 +1,4 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as j}from"./chunk-GRB66C5S.js";import"./chunk-RN4OSVTG.js";import"./chunk-BC7UVJJB.js";import{a as _}from"./chunk-LEA6IHXC.js";import"./chunk-RGDQMKNJ.js";import{g as b}from"./chunk-L3HG5ONB.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+`
2
+ import{b as j}from"./chunk-GRB66C5S.js";import"./chunk-RN4OSVTG.js";import"./chunk-BC7UVJJB.js";import{a as _}from"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import{g as b}from"./chunk-A46NBRAP.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
3
  `),err:n=>process.stderr.write(n+`
4
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 as b,b as c,c as d,d as e,e as f,f as g}from"./chunk-JTCW76YG.js";import"./chunk-K7USHLVZ.js";import{f as a}from"./chunk-ZFFRHV5U.js";import"./chunk-JFAFKHDX.js";import"./chunk-J44RN3FB.js";import"./chunk-GG43HSU2.js";import"./chunk-OSALXGD4.js";import"./chunk-JHHMXU76.js";import"./chunk-DNNZ353O.js";import"./chunk-YKTYVJBN.js";import"./chunk-CVOGP253.js";import"./chunk-427OQS2N.js";import"./chunk-FHKDTM5L.js";import"./chunk-NVGBE2DR.js";import"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-5EOX4MEY.js";import"./chunk-2KS2YRIS.js";import"./chunk-UR6MHSHU.js";export{f as dedupPreFlags,b as deliveredImagesWire,d as displaySourceName,a as resolveAnswers,g as runExtract,c as sessionSourceRef,e as sourceBanner};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a}from"./chunk-KK7DYHK6.js";import"./chunk-KHU7C6EE.js";import"./chunk-SKRZN25J.js";import"./chunk-ZFFRHV5U.js";import"./chunk-JFAFKHDX.js";import"./chunk-J44RN3FB.js";import"./chunk-3C5GMAM4.js";import"./chunk-GG43HSU2.js";import"./chunk-OSALXGD4.js";import"./chunk-DNNZ353O.js";import"./chunk-YKTYVJBN.js";import"./chunk-CVOGP253.js";import"./chunk-427OQS2N.js";import"./chunk-FHKDTM5L.js";import"./chunk-ZPDM6FO7.js";import"./chunk-NVGBE2DR.js";import"./chunk-L5LI2JF4.js";import"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-5EOX4MEY.js";import"./chunk-2KS2YRIS.js";import"./chunk-UR6MHSHU.js";export{a as runDesign};
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as A}from"./chunk-G6F2BOFT.js";import{E as M,F as P,G as K,H,I as U}from"./chunk-CLYG26XV.js";import"./chunk-GLS46X7N.js";import{a as _,b as E}from"./chunk-TACPTX64.js";import{a as h,b as k}from"./chunk-RLICAFFQ.js";import"./chunk-2YQ6TW77.js";import"./chunk-RHNKYNNZ.js";import{s as L}from"./chunk-RKWJG3WW.js";import{c as R}from"./chunk-R65HNFRB.js";import"./chunk-U6TLLYRG.js";import"./chunk-4BAL4OGF.js";import{a as x}from"./chunk-FVM7TWKT.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-S3DAAAE5.js";import"./chunk-QZNUTCSD.js";import"./chunk-U5QTE3WX.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-O4HWPV67.js";import"./chunk-FCMLIK7P.js";import"./chunk-CJJXT5DO.js";import"./chunk-QM4S2APK.js";import"./chunk-ZPDM6FO7.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-LEA6IHXC.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L3HG5ONB.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-T2ULEJK7.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import{a as C}from"./chunk-QZJID3OZ.js";import"./chunk-VE3SUJMA.js";import"./chunk-E47GFYXA.js";import{a as v}from"./chunk-DPOES6G3.js";import"./chunk-VCYVSKPM.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}
2
+ import{a as A}from"./chunk-YOFKDRY4.js";import{D as M,E as P,F as K,G as H,H as U}from"./chunk-4OSW2WEN.js";import"./chunk-2XMJ6YAE.js";import"./chunk-GLS46X7N.js";import{a as _,b as E}from"./chunk-GWJ76BLF.js";import{a as h,b as k}from"./chunk-XZW3TBOV.js";import"./chunk-2YQ6TW77.js";import"./chunk-OIYGGEUL.js";import{s as L}from"./chunk-RKWJG3WW.js";import{c as R}from"./chunk-7APDXIKI.js";import"./chunk-RLZA4VJT.js";import"./chunk-2OQLMW3F.js";import{a as x}from"./chunk-6JTEWZ75.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-S3DAAAE5.js";import"./chunk-6MTVGARW.js";import"./chunk-5F7PU5AJ.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-OESHJ4J2.js";import"./chunk-FCMLIK7P.js";import"./chunk-CJJXT5DO.js";import"./chunk-QM4S2APK.js";import"./chunk-ZPDM6FO7.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import{m as b,n as S,o as T}from"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-5LTUYXMP.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import{a as C}from"./chunk-RH4GCEFX.js";import"./chunk-VE3SUJMA.js";import"./chunk-E47GFYXA.js";import{a as v}from"./chunk-YJIESLN6.js";import"./chunk-2KS2YRIS.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-G6F2BOFT.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-X6XCV53D.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}
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-2OFH5GRJ.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,5 +1,5 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{c as l,d as g,e as $,f}from"./chunk-FXPPQL4D.js";import{a as m}from"./chunk-BC7UVJJB.js";import"./chunk-UR6MHSHU.js";function w(t,o=new Date){let n=new Date(t).getTime()-o.getTime();if(Number.isNaN(n))return"unknown";if(n<=0)return"EXPIRED";let e=Math.floor(n/36e5),r=Math.round(n%36e5/6e4);return e>0?`${e}h ${r}m`:`${r}m`}function p(t){return t.verb==="design"?`kane-cli design tests --resume ${t.sid} --mode ${t.mode==="agent"?"agent":"interactive"}`:`kane-cli context extract --resume ${t.sid}${t.mode==="agent"?" --mode agent":""}`}function _(t,o,n){let e,r,s;try{if(e=l(t,o),!e)return process.stderr.write(`error: no session ${o} (kane-cli context sessions lists them)
2
+ import{a as f}from"./chunk-J44RN3FB.js";import{d as l,e as g,f as $}from"./chunk-FHKDTM5L.js";import{a as m}from"./chunk-BC7UVJJB.js";import"./chunk-UR6MHSHU.js";function w(t,o=new Date){let n=new Date(t).getTime()-o.getTime();if(Number.isNaN(n))return"unknown";if(n<=0)return"EXPIRED";let e=Math.floor(n/36e5),r=Math.round(n%36e5/6e4);return e>0?`${e}h ${r}m`:`${r}m`}function p(t){return t.verb==="design"?`kane-cli design tests --resume ${t.sid} --mode ${t.mode==="agent"?"agent":"interactive"}`:`kane-cli context extract --resume ${t.sid}${t.mode==="agent"?" --mode agent":""}`}function _(t,o,n){let e,r,s;try{if(e=l(t,o),!e)return process.stderr.write(`error: no session ${o} (kane-cli context sessions lists them)
3
3
  `),2;r=e.pending.questions.map(f),s=p(e)}catch{return process.stderr.write(`error: session ${o} has a corrupt state.json \u2014 remove with: kane-cli context sessions clean ${o}
4
4
  `),2}let i=new Date(e.expires_at).getTime()<=Date.now();if(n)return process.stdout.write(JSON.stringify({sid:e.sid,verb:e.verb??"extract",use_case:e.use_case,mode:e.mode,created_at:e.created_at,expires_at:e.expires_at,...i?{expired:!0}:{resume:s},pending_questions:r,pending_proposals:e.pending.proposals.length,assumed:e.assumed,...e.force?{force:!0}:{}})+`
5
5
  `),0;let c=e.verb==="design"?e.use_case??"?":"extract corpus";process.stdout.write(`${e.sid} ${e.verb??"extract"} \xB7 ${c} \xB7 ${e.mode} \xB7 expires in ${w(e.expires_at)}
@@ -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-NIKA2V6B.js";import{b as m}from"./chunk-EWLLPUP4.js";import{a as d}from"./chunk-RZ4F3BHX.js";import"./chunk-QZJID3OZ.js";import"./chunk-DPOES6G3.js";import{a as f,h as a,i as u}from"./chunk-VCYVSKPM.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+`
2
+ import{a as p,b as g}from"./chunk-3KN2UW37.js";import{b as m}from"./chunk-QGBLC4ZJ.js";import{a as d}from"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-YJIESLN6.js";import{a as f,h as a,i as u}from"./chunk-2KS2YRIS.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-7BCZLDNX.js";import"./chunk-UR6MHSHU.js";export{c as buildAgentEnv,b as findAssuranceAgent,a as platformPackageName,d as resolveAgentAuthEnv};
2
+ import{a,b,c,d}from"./chunk-WV42KKEU.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{a,b}from"./chunk-BKM2LWU2.js";import"./chunk-5EOX4MEY.js";import"./chunk-UR6MHSHU.js";export{b as ensureStoreIds,a as readStoreIds};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{d as a}from"./chunk-WSZ7IENQ.js";import"./chunk-3MSXQU2C.js";import"./chunk-LPBAQQ7E.js";import"./chunk-MJF3USZF.js";import"./chunk-TLL7KFLY.js";import"./chunk-4OSW2WEN.js";import"./chunk-2XMJ6YAE.js";import"./chunk-GLS46X7N.js";import"./chunk-C3OGWCII.js";import"./chunk-GWJ76BLF.js";import"./chunk-XZW3TBOV.js";import"./chunk-2YQ6TW77.js";import"./chunk-76I6NJBX.js";import"./chunk-OIYGGEUL.js";import"./chunk-RKWJG3WW.js";import"./chunk-VYQMCLKG.js";import"./chunk-7APDXIKI.js";import"./chunk-DHF3VO2R.js";import"./chunk-RLZA4VJT.js";import"./chunk-2OQLMW3F.js";import"./chunk-6JTEWZ75.js";import"./chunk-J4WS2SXT.js";import"./chunk-YVXC46DY.js";import"./chunk-5Y2G4NC7.js";import"./chunk-FYDBD7Q4.js";import"./chunk-ECFOND7B.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-S3DAAAE5.js";import"./chunk-6MTVGARW.js";import"./chunk-6ZJ7ZFEX.js";import"./chunk-5F7PU5AJ.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-KA7Q5IIC.js";import"./chunk-RFHMDQXZ.js";import"./chunk-OESHJ4J2.js";import"./chunk-FCMLIK7P.js";import"./chunk-CJJXT5DO.js";import"./chunk-QM4S2APK.js";import"./chunk-ZPDM6FO7.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-6CGNLFSN.js";import"./chunk-SACSQY3Q.js";import"./chunk-7LWXIRI3.js";import"./chunk-YCCUBQY4.js";import"./chunk-AYDUHTPA.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-5LTUYXMP.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-VE3SUJMA.js";import"./chunk-E47GFYXA.js";import"./chunk-YJIESLN6.js";import"./chunk-W54W762O.js";import"./chunk-6NWPK2MS.js";import{a as o}from"./chunk-DFS4RMVP.js";import"./chunk-FEF75YKV.js";import"./chunk-TW3K2DKB.js";import"./chunk-2KS2YRIS.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};
@@ -0,0 +1,2 @@
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-C3OGWCII.js";import"./chunk-GWJ76BLF.js";import"./chunk-XZW3TBOV.js";import"./chunk-2YQ6TW77.js";import"./chunk-RKWJG3WW.js";import"./chunk-6JTEWZ75.js";import"./chunk-6MTVGARW.js";import"./chunk-5F7PU5AJ.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-L5LI2JF4.js";import"./chunk-AYDUHTPA.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-YJIESLN6.js";import"./chunk-TW3K2DKB.js";import"./chunk-2KS2YRIS.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-6MTVGARW.js";import"./chunk-5F7PU5AJ.js";import"./chunk-RZ4F3BHX.js";import"./chunk-RH4GCEFX.js";import"./chunk-2KS2YRIS.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-QZJID3OZ.js";import"./chunk-VCYVSKPM.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};
2
+ import{a as t}from"./chunk-RH4GCEFX.js";import"./chunk-2KS2YRIS.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-EWLLPUP4.js";import"./chunk-RZ4F3BHX.js";import"./chunk-VCYVSKPM.js";import"./chunk-UR6MHSHU.js";export{d as checkForUpdate,b as compareVersions,c as getSeverity,a as getUpdateCommand};
2
+ import{a,b,c,d}from"./chunk-QGBLC4ZJ.js";import"./chunk-RZ4F3BHX.js";import"./chunk-2KS2YRIS.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 V}from"./chunk-LEA6IHXC.js";import"./chunk-RGDQMKNJ.js";import"./chunk-L3HG5ONB.js";import"./chunk-L4JIMNKW.js";import{b as I}from"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import{d as f,e as x}from"./chunk-5YPBPZUR.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-GRB66C5S.js";import"./chunk-RN4OSVTG.js";import"./chunk-BC7UVJJB.js";import{a as V}from"./chunk-SDRFTIRU.js";import"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import{b as I}from"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import{d as f,e as x}from"./chunk-5YPBPZUR.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">
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as se}from"./chunk-JHPZXF77.js";import{a as X,c as z,d as ae}from"./chunk-5Z7GAIPP.js";import"./chunk-GRB66C5S.js";import"./chunk-JFAFKHDX.js";import"./chunk-3C5GMAM4.js";import{b as Q,c as ne,d as ie}from"./chunk-KFUZYEHX.js";import{a as U}from"./chunk-7C6G4V43.js";import"./chunk-RN4OSVTG.js";import"./chunk-DNNZ353O.js";import"./chunk-QM4S2APK.js";import"./chunk-BC7UVJJB.js";import"./chunk-NVGBE2DR.js";import{a as V}from"./chunk-SDRFTIRU.js";import{b as oe}from"./chunk-RGDQMKNJ.js";import"./chunk-A46NBRAP.js";import"./chunk-L4JIMNKW.js";import{e as re}from"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import{a as G}from"./chunk-YCCUBQY4.js";import{y as c}from"./chunk-2KS2YRIS.js";import{a as F}from"./chunk-HCBYKLMW.js";import{a as b,b as s,k as j}from"./chunk-C44QQJR4.js";import{a as we}from"./chunk-6YGTRKDT.js";import{e as B}from"./chunk-UR6MHSHU.js";var E=B(we(),1);function le(e,h,w){let{ref:A,reason:p,by:R}=w;if(!p||p.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 v=h.resolve(A);if(!v)return{record:null,errors:[{code:"UNKNOWN_REF",detail:`no node '${A}' in the graph`}]};let o=h.tipOf(v.cid);if(h.superseded.has(o))return{record:null,errors:[{code:"ALREADY_ARCHIVED",detail:`${A} is already superseded at its tip (${o.slice(0,19)}\u2026)`}]};let i=re(e,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[{kind:"node",old:o,new:null,reason:p,by:R}],source_head_moves:{}},{expectPrev:h.latestHash});return oe(e),{record:i.record,errors:null}}function ce(e){let h=e.by??{kind:"human",id:process.env.USER??"operator"},w=e.mode==="interactive"?"override":e.mode,A={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},p={applied:0,committed:0,retired:0,skipped:0,deferred:0,failed:0},R=new Map;for(let o of e.planRows)if(o.held_ref&&e.held){let i=e.held.rows.find(n=>n.temp_ref===o.held_ref);if(!i)continue;let x={kind:i.kind,ref:i.temp_ref,title:i.title,why:i.why,origin:"content-change",...o.impact?{impact:o.impact}:{}};R.set(x.ref,{card:x,source:"held",heldRef:i.temp_ref})}else if(o.kind==="MODIFY"){let i={kind:"MODIFY",ref:o.ref,title:o.ref,why:`${o.reason}: ${o.provenance}`,origin:o.origin??"structural-stale",...o.impact?{impact:o.impact}:{}};R.set(i.ref,{card:i,source:"row",row:o})}else if(o.kind==="ADD"){let i={kind:"ADD",ref:o.ref,title:o.ref,why:o.reason,origin:o.origin??"content-change"};R.set(i.ref,{card:i,source:"row",row:o})}for(let o of e.archive){if(o.kind!=="ARCHIVE")continue;let i={kind:"ARCHIVE",ref:o.ref,title:o.ref,why:o.why,provenance:o.why,...o.impact?{impact:o.impact}:{}};R.set(i.ref,{card:i,source:"archive",row:o})}let v=o=>(p.failed++,{outcome:"failed",detail:o});return{cards:()=>[...R.values()].map(o=>o.card),async submit(o,i){let x=R.get(o);if(!x)return v(`no card ${o}`);if(i.v==="skip")return p.skipped++,e.signals({ref:o,verdict:"gap-dismissed"}),{outcome:"skipped"};if(i.v==="defer")return p.deferred++,{outcome:"deferred"};if(i.v==="archive"){if(x.source!=="archive")return v(`${o} is not an ARCHIVE card`);let l=V(e.contextDir),$=l.resolve(x.row.ref);if($&&l.superseded.has(l.tipOf($.cid)))return p.skipped++,{outcome:"skipped",detail:"already retired \u2014 nothing to do"};let D=le(e.contextDir,V(e.contextDir),{ref:x.row.ref,reason:`reconcile retire: ${x.row.why}`,by:h});return D.errors?v(D.errors.map(a=>`${a.code}: ${a.detail}`).join("; ")):(p.retired++,e.signals({ref:o,verdict:"gap-resolved-archive",reason:x.row.why}),{outcome:"retired"})}if(x.source==="archive")return v(`${o} takes archive/skip/defer, not approve`);if(x.source==="held"){let l=se(e.contextDir,e.held,x.heldRef,h,i.edits);if(!l.ok)return v(l.message);if(l.kind==="ADD"){let $=await e.runDesign(l.ref,{yes:!0,mode:w,...i.steering?{because:i.steering}:{}});return $!==0?(p.failed++,{outcome:"failed",landed:!0,detail:`committed ${l.ref}, but its design run exited ${$} \u2014 finish with kane-cli design tests --use-case ${l.ref}`}):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-create",...i.steering?{reason:i.steering}:{}}),{outcome:"applied",detail:l.ref})}if(i.steering){let $=V(e.contextDir),D=X($,l.ref);if(!D.ok)return p.committed++,{outcome:"committed",detail:`committed ${l.ref}, but steering could not resolve it (${D.message}) \u2014 steer via kane-cli maintain evolve ${l.ref}`};let a=await z(e.contextDir,D.target,{yes:!0,mode:w,because:i.steering},A,e.runDesign,"batch");if(a.outcome==="no-design"){let d=await e.runDesign(D.target.seamRef,{yes:!0,mode:w,because:i.steering});return d!==0?(p.failed++,{outcome:"failed",landed:!0,detail:`committed ${l.ref}, but its steered design run exited ${d} \u2014 finish with kane-cli design tests --use-case ${D.target.seamRef}`}):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-create",reason:i.steering}),{outcome:"applied",detail:l.ref})}return a.outcome==="failed"||a.outcome==="paused"?(p.failed++,{outcome:"failed",landed:!0,detail:`committed ${l.ref}, but the steering evolve ${a.outcome} (exit ${a.code}) \u2014 finish with kane-cli maintain evolve ${l.ref}`}):a.outcome==="declined"?(p.committed++,{outcome:"committed",detail:`committed ${l.ref} \u2014 the steering evolve was declined; re-run kane-cli maintain evolve ${l.ref}`}):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-evolve",reason:i.steering}),{outcome:"applied",detail:l.ref})}return p.committed++,e.signals({ref:o,verdict:"gap-resolved-evolve"}),{outcome:"committed",detail:l.ref}}let n=V(e.contextDir),g=X(n,x.row.ref);if(!g.ok)return v(g.message);if(x.card.kind==="ADD"){let l=await e.runDesign(g.target.seamRef,{yes:!0,mode:w});return l!==0?v(`design run exited ${l}`):(p.applied++,e.signals({ref:o,verdict:"gap-resolved-create"}),{outcome:"applied"})}let y=await z(e.contextDir,g.target,{yes:!0,mode:w,...i.steering?{because:i.steering}:{}},A,e.runDesign,"batch");return y.outcome==="evolved"?(p.applied++,e.signals({ref:o,verdict:"gap-resolved-evolve",...i.steering?{reason:i.steering}:{}}),{outcome:"applied"}):y.outcome==="failed"||y.outcome==="paused"?v(`evolve ${y.outcome} (exit ${y.code})`):(p.skipped++,{outcome:"skipped",detail:y.outcome})},summary:()=>({...p})}}var m=B(F(),1);function L(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 Y(e){return e.kind==="ARCHIVE"?null:L(e).length}var ye={ADD:{color:c.green??"green"},MODIFY:{color:"yellow"},ARCHIVE:{color:c.red}},be=60,Re=100;function de({card:e,position:h,sel:w=0,focused:A=!1,freeText:p=null}){let{stdout:R}=j(),v=R?.columns??80,o=v<be,i=Math.min(v-1,Re),x=L(e),n=Y(e),g=ye[e.kind],y=T=>A&&w===T?(0,m.jsx)(s,{color:c.assuranceAccent,children:"\u276F"}):" ",l=e.impact,$=l&&l.stale_refs.length>0?`${e.kind==="ARCHIVE"?"retiring drops":"approving marks"} ${l.stale_refs.length} item(s) stale`+((l.direct_refs?.length??0)>0?` \u2014 ${l.direct_refs.length} directly touched: ${l.direct_refs.join(", ")}`:""):null,D=`? reconcile \u2014 item ${h.n} of ${h.of}`,a=n!==null?"\u2191\u2193 \xB7 \u23CE select \xB7 1-9 \xB7 type = adjust \xB7 esc \xB7 nothing to undo":"\u2191\u2193 \xB7 \u23CE select \xB7 1-9 \xB7 esc \xB7 nothing to undo",d=(0,m.jsxs)(b,{flexDirection:"column",children:[(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsxs)(s,{bold:!0,children:[(0,m.jsx)(s,{color:g.color,children:`[${e.kind}]`}),` ${U(e.title)}`]})}),(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsx)(s,{color:c.muted,children:e.why})}),$?(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsx)(s,{color:c.muted,children:`impact: ${$}`})}):null,e.kind==="ARCHIVE"&&e.provenance&&e.provenance!==e.why?(0,m.jsx)(b,{paddingLeft:2,children:(0,m.jsx)(s,{color:c.muted,children:e.provenance})}):null,(0,m.jsx)(s,{children:" "}),x.map((T,S)=>(0,m.jsxs)(s,{children:[y(S),` ${S+1}. ${T.label}`,(0,m.jsx)(s,{color:c.dim,children:` \u2014 ${T.detail}`})]},`o-${S}`)),n!==null?p?(0,m.jsxs)(b,{flexDirection:"column",children:[(0,m.jsxs)(b,{children:[(0,m.jsxs)(s,{children:[(0,m.jsx)(s,{color:c.assuranceAccent,children:"\u276F"})," ",(0,m.jsx)(s,{color:c.dim,children:"\u270E "})]}),(0,m.jsx)(G,{value:p.value,onChange:p.onChange,onSubmit:p.onSubmit,onCancel:p.onCancel,placeholder:"say what to adjust"})]}),(0,m.jsx)(s,{color:c.muted,children:" submits as: approve \xB7 your words steer the re-design"})]}):(0,m.jsxs)(s,{children:[y(n)," ",(0,m.jsx)(s,{color:c.dim,children:"\u270E approve with changes \u2014 say what to adjust"})]}):null]});if(o)return(0,m.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,m.jsx)(s,{bold:!0,color:c.assuranceAccent,children:D}),d,(0,m.jsx)(s,{color:c.muted,children:a})]});let W=Math.max(2,i-(3+D.length+1)),C=Math.max(2,i-(3+a.length+1));return(0,m.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,m.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,m.jsx)(s,{bold:!0,children:D}),` ${"\u2500".repeat(W)}`]}),(0,m.jsx)(s,{children:" "}),d,(0,m.jsx)(s,{children:" "}),(0,m.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,m.jsx)(s,{color:c.muted,children:a}),` ${"\u2500".repeat(C)}`]})]})}var _=B(F(),1);function K({mark:e,markColor:h,color:w,indent:A=2,reserve:p=0,children:R}){let{stdout:v}=j(),o=(v?.columns??80)-p,i=A+e.length+1;return(0,_.jsxs)(b,{children:[(0,_.jsx)(b,{width:i,flexShrink:0,children:(0,_.jsx)(s,{color:h,children:`${" ".repeat(A)}${e}`})}),(0,_.jsx)(b,{width:Math.max(20,o-i),children:(0,_.jsx)(s,{color:w,children:R})})]})}var u=B(F(),1);function ue(e){return e.landed?"committed":e.outcome}var $e={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"}},q=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function Ce(e){return e.v==="archive"?"Retiring\u2026":e.v==="approve"&&e.steering?"Approving with your changes \u2014 committing, then re-designing\u2026":"Applying \u2014 committing\u2026"}function Te({controller:e,cards:h,note:w,markOutcome:A,routeChat:p,listEvolveTargets:R,barSubject:v,onFinish:o,onCtrlC:i,pauseRef:x}){let[n,g]=(0,E.useState)(h.length>0?{at:"card",idx:0,sel:0,editor:null}:{at:"done-panel",sel:0}),y=(0,E.useRef)(0),l=(0,E.useRef)(n);l.current=n;let $=(0,E.useRef)([]),[D,a]=(0,E.useState)(0),d=n.at==="busy"||n.at==="evolving";(0,E.useEffect)(()=>{if(!d)return;let t=setInterval(()=>a(r=>r+1),120);return()=>clearInterval(t)},[d]);let W=(0,E.useRef)(!1),C=()=>{w((0,u.jsx)(s,{color:c.dim,children:"walk paused \u2014 every verdict so far is committed; re-run the same command to continue"})),o(3)},T=()=>{if(W.current)return;W.current=!0;let t=l.current;if(t.at==="busy"||t.at==="evolving"){w((0,u.jsx)(s,{color:c.dim,children:"finishing the current item, then pausing\u2026"}));return}if(t.at==="done-panel"||t.at==="picker"||t.at==="why"||t.at==="view"){o(y.current);return}C()};x&&(x.current=T);let S=n.at==="card"||n.at==="busy"?h[n.idx]:null,O=()=>[{key:"finish",label:"finish"},...R?[{key:"evolve",label:"evolve another use-case\u2026"}]:[],...$.current.length>0?[{key:"view",label:"view what changed"}]:[]],I=()=>{let t=R?.()??[];if(t.length===0){w((0,u.jsx)(s,{color:c.dim,children:"nothing is stale \u2014 no evolve targets right now"})),g({at:"done-panel",sel:0});return}g({at:"picker",items:t,sel:0})},P=t=>{let r=t+1;if(r<h.length)g({at:"card",idx:r,sel:0,editor:null});else{let f=e.summary();w((0,u.jsx)(s,{color:c.dim,children:`reconcile walk: ${f.applied} applied, ${f.committed} committed, ${f.retired} retired, ${f.skipped} skipped, ${f.deferred} deferred`+(f.failed>0?`, ${f.failed} failed`:"")})),g({at:"done-panel",sel:0})}},N=(0,E.useRef)(!1),M=(t,r)=>{if(N.current)return;N.current=!0;let f=h[t];g({at:"busy",idx:t,label:Ce(r),startedAt:Date.now()}),e.submit(f.ref,r).catch(k=>({outcome:"failed",detail:k instanceof Error?k.message:String(k)})).then(k=>{let H=$e[k.outcome]??{mark:"\xB7",color:"dim"},xe=k.outcome!=="failed"&&k.outcome!=="skipped"&&k.outcome!=="deferred"&&f.impact&&f.impact.stale_refs.length>0?` \xB7 ${f.impact.stale_refs.length} item(s) now stale`:"",te=`${k.outcome} [${f.kind}] ${U(f.title)}${k.detail?` \u2014 ${U(k.detail)}`:""}${xe}`;if($.current.push({mark:H.mark,color:H.color,line:te}),w((0,u.jsx)(K,{mark:H.mark,markColor:H.color==="green"?c.green:H.color==="red"?c.red:c.dim,color:H.color==="dim"?c.dim:void 0,children:te})),k.outcome==="failed"&&(y.current=y.current===0?1:y.current),A(f.ref,ue(k)),N.current=!1,W.current){C();return}P(t)})},me=(t,r)=>{g({at:"evolving",title:t.title,startedAt:Date.now()}),p(`${t.key} ${r}`).catch(f=>`\u2717 evolve failed: ${f instanceof Error?f.message:String(f)}`).then(f=>{let k=f.startsWith("\u2713");if($.current.push({mark:k?"\u2714":"\u2717",color:k?"green":"red",line:f.replace(/^[✓✗]\s*/,"")}),w((0,u.jsx)(K,{mark:k?"\u2714":"\u2717",markColor:k?c.green:c.red,children:f.replace(/^[✓✗]\s*/,"")})),W.current){o(y.current);return}g({at:"done-panel",sel:0})})},pe=(0,E.useMemo)(()=>({isFocused:()=>{let t=l.current;return t.at==="card"&&t.editor===null||t.at==="done-panel"||t.at==="picker"||t.at==="view"},onMove:t=>{g(r=>{if(r.at==="card"){let f=h[r.idx],k=Y(f)??L(f).length-1;return{...r,sel:Math.max(0,Math.min(k,r.sel+t))}}return r.at==="done-panel"?{...r,sel:Math.max(0,Math.min(O().length-1,r.sel+t))}:r.at==="picker"?{...r,sel:Math.max(0,Math.min(r.items.length-1,r.sel+t))}:r})},onSelect:()=>{let t=l.current;if(t.at==="card"){let r=h[t.idx],f=Y(r);if(f!==null&&t.sel===f){g({...t,editor:""});return}let k=L(r)[t.sel];k&&M(t.idx,{v:k.v});return}if(t.at==="done-panel"){let r=O()[t.sel];r?.key==="finish"?o(y.current):r?.key==="evolve"?I():r?.key==="view"&&g({at:"view"});return}if(t.at==="picker"){let r=t.items[t.sel];r&&g({at:"why",item:r,text:""});return}},onDigit:t=>{let r=l.current;if(r.at==="card"){let f=L(h[r.idx])[t-1];f&&M(r.idx,{v:f.v});return}r.at==="done-panel"&&t-1<O().length&&g({...r,sel:t-1}),r.at==="picker"&&t-1<r.items.length&&g({...r,sel:t-1})},onType:t=>{g(r=>r.at!=="card"||Y(h[r.idx])===null?r:{...r,editor:(r.editor??"")+t})},isMulti:()=>!1,onSpace:()=>{},onBack:()=>{let t=l.current;(t.at==="picker"||t.at==="view")&&g({at:"done-panel",sel:0})}}),[h]);(0,E.useEffect)(()=>{n.at==="done"&&o(y.current)},[n.at]);let fe=n.at==="card"||n.at==="done-panel"||n.at==="picker"||n.at==="why"||n.at==="view",ge=n.at==="card"||n.at==="busy"?`${v?`${v} \xB7 `:""}item ${n.idx+1} of ${h.length}`:v,J=t=>Math.floor((Date.now()-t)/1e3),{stdout:he}=j(),Z=Math.min((he?.columns??80)-1,100),ee=`view \xB7 this run's changes \xB7 ${$.current.length}`,ve=Math.max(2,Z-(3+ee.length+1)),ke=Math.max(2,Z-12);return(0,u.jsxs)(b,{flexDirection:"column",children:[(0,u.jsx)(ie,{onToggleThinking:()=>{},onCtrlC:()=>{i(),T()},panel:pe}),n.at==="card"&&S?(0,u.jsx)(de,{card:S,position:{n:n.idx+1,of:h.length},sel:n.sel,focused:n.editor===null,freeText:n.editor!==null?{value:n.editor,onChange:t=>g(r=>r.at==="card"?{...r,editor:t}:r),onSubmit:t=>{let r=l.current;r.at==="card"&&(t.trim()?M(r.idx,{v:"approve",steering:t.trim()}):g({...r,editor:null}))},onCancel:()=>g(t=>t.at==="card"?{...t,editor:null}:t)}:null}):null,n.at==="busy"?(0,u.jsxs)(s,{color:c.assuranceAccent,children:[`${q[D%q.length]} ${n.label} `,(0,u.jsx)(s,{color:c.dim,children:`(${J(n.startedAt)}s)`})]}):null,n.at==="evolving"?(0,u.jsxs)(s,{color:c.assuranceAccent,children:[`${q[D%q.length]} Evolving ${n.title}\u2026 `,(0,u.jsx)(s,{color:c.dim,children:`(${J(n.startedAt)}s)`})]}):null,n.at==="done-panel"?(0,u.jsx)(Q,{headline:(()=>{let t=e.summary();return`reconcile done \u2014 ${t.applied+t.committed} applied \xB7 ${t.retired} retired \xB7 ${t.skipped} skipped \xB7 ${t.deferred} deferred${t.failed>0?` \xB7 ${t.failed} failed`:""}`})(),rows:O(),sel:n.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select"}):null,n.at==="picker"?(0,u.jsx)(Q,{ask:!0,headline:"evolve which use-case?",rows:n.items.map(t=>({key:t.key,label:t.title,detail:t.badge})),sel:n.sel,focused:!0,legend:"\u2191\u2193 \xB7 \u23CE select \xB7 esc back"}):null,n.at==="why"?(0,u.jsxs)(b,{flexDirection:"column",borderStyle:"round",borderColor:c.assuranceAccent,paddingX:1,children:[(0,u.jsxs)(b,{children:[(0,u.jsxs)(s,{children:[(0,u.jsx)(s,{color:c.assuranceAccent,children:"\u25B8"})," ",(0,u.jsx)(s,{color:c.dim,children:"\u270E "})]}),(0,u.jsx)(G,{value:n.text,onChange:t=>g(r=>r.at==="why"?{...r,text:t}:r),onSubmit:t=>{let r=l.current;r.at==="why"&&(t.trim()?me(r.item,t.trim()):g({at:"picker",items:[r.item],sel:0}))},onCancel:()=>{l.current.at==="why"&&I()},placeholder:`what should change about ${n.item.title}?`})]}),(0,u.jsx)(s,{color:c.muted,children:" \u23CE submit \xB7 esc back"})]}):null,n.at==="view"?(0,u.jsxs)(b,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,u.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,u.jsx)(s,{bold:!0,children:ee}),` ${"\u2500".repeat(ve)}`]}),(0,u.jsx)(s,{children:" "}),$.current.map((t,r)=>(0,u.jsx)(K,{mark:t.mark,markColor:t.color==="green"?c.green:t.color==="red"?c.red:c.dim,color:t.color==="dim"?c.dim:void 0,indent:0,reserve:0,children:t.line},`vc-${r}`)),(0,u.jsx)(s,{children:" "}),(0,u.jsxs)(s,{color:c.assuranceAccent,children:["\u2500\u2500 ",(0,u.jsx)(s,{color:c.muted,children:"esc back"}),` ${"\u2500".repeat(ke)}`]})]}):null,(0,u.jsx)(ne,{verb:"maintain",subject:ge,state:fe?"idle":void 0,hints:"ctrl+c exit"})]})}async function tt(e){let h={current:null},w=a=>{h.current?.append(a)},A=null,p=async(a,d)=>{let[{runDesign:W},{resolveAgentAuthEnv:C},{runAgent:T},{preflightTurn:S}]=await Promise.all([import("./run-IOBBB7GN.js"),import("./spawner-6FHAXNOA.js"),import("./bridge-WMGH3O3B.js"),import("./turn-preflight-JGYT7LXP.js")]);A??=await C();let O=A;return W({useCase:a,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:e.dir,agent:T,preflightTurn:()=>S(O),ask:async()=>[],out:()=>{},progress:()=>{},isTTY:!1,auth:O})},R=e.runDesign??p,v=ce({contextDir:e.dir,held:e.held,archive:e.archive,planRows:e.rows,runDesign:R,mode:"interactive",signals:e.signals}),o=new Set(e.rows.filter(a=>a.applied!==void 0).map(a=>a.held_ref??a.ref)),i=v.cards().filter(a=>!o.has(a.ref)&&!(a.kind==="ARCHIVE"&&e.archiveState?.[a.ref]!==void 0)),x=a=>e.rows.findIndex(d=>(d.held_ref??d.ref)===a),n=(a,d)=>{try{if(i.find(T=>T.ref===a)?.kind==="ARCHIVE"){d==="retired"?e.markA?.(a,"retired"):d==="skipped"&&e.markA?.(a,"skipped");return}let C=x(a);if(C<0)return;d==="applied"||d==="committed"?e.mark?.(C,"approved"):d==="skipped"&&e.mark?.(C,"skipped")}catch{}},g=async a=>{let[{openGraph:d},{resolveParentUc:W,evolveOneUc:C}]=await Promise.all([import("./readmodel-AGAPK2AI.js"),import("./evolve-cmd-IDS5ZIUY.js")]),[T,...S]=a.split(/\s+/),O=d(e.dir),I=W(O,T);if(!I.ok)return`couldn't resolve '${T}' \u2014 start with a use-case id (uc-\u2026): ${I.message}`;if(S.length===0)return`say what to change: \`${T} <your words>\` \u2014 the words become the redesign's change delta`;let P=S.join(" "),N={out:()=>{},err:()=>{},isTTY:!1,confirm:async()=>!0},M=await C(e.dir,I.target,{yes:!0,mode:"override",because:P},N,R,"batch");return M.outcome==="evolved"?(e.signals({ref:I.target.display,verdict:"gap-resolved-evolve",reason:P}),`\u2713 redesigned ${I.target.display} \u2014 "${P}"`):`\u2717 evolve ${M.outcome} for ${I.target.display} (exit ${M.code})`},y=e.listEvolveTargets??(()=>{let a=V(e.dir);return ae(a).targets.map(d=>({key:d.display,title:d.display,badge:"stale"}))});if(e.script){let a=0;for(let d of i){let W=await e.script(d),C=await v.submit(d.ref,W);C.outcome==="failed"&&a===0&&(a=1),n(d.ref,ue(C))}return a}let[{render:l},{ScrollbackProvider:$},{ScrollbackTap:D}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./scrollback-JLPJR25X.js"),import("./ScrollbackTap-Q3IOKNMS.js")]);return new Promise(a=>{let d=!1,W=P=>{d||(d=!0,(async()=>{process.removeListener("SIGINT",O),await h.current?.flush();try{I.unmount()}catch{}a(P)})())},C=0,T={current:null},S=()=>{if(C+=1,C>=2){process.removeListener("SIGINT",O);try{I.unmount()}catch{}a(130)}},O=()=>{S(),T.current?.()};process.on("SIGINT",O);let I=l((0,u.jsxs)($,{children:[(0,u.jsx)(D,{into:h}),(0,u.jsx)(Te,{controller:v,cards:i,note:w,markOutcome:n,routeChat:g,listEvolveTargets:y,barSubject:e.barSubject,onFinish:W,onCtrlC:S,pauseRef:T})]}),{exitOnCtrlC:!1})})}export{Te as WalkSessionSurface,ue as outcomeToMark,tt as runWalkSession};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testmuai/kane-cli",
3
- "version": "0.6.9",
3
+ "version": "0.6.10",
4
4
  "description": "KaneAI Terminal UI — browser automation testing agent",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -21,20 +21,24 @@
21
21
  "archiver": "^7.0.1",
22
22
  "chalk": "^5.3.0",
23
23
  "commander": "^12.0.0",
24
+ "fflate": "0.8.3",
24
25
  "ink": "^5.1.0",
26
+ "jpeg-js": "0.4.4",
25
27
  "js-yaml": "^4.1.1",
26
28
  "open": "^10.1.0",
27
29
  "pdfjs-dist": "6.1.200",
30
+ "pngjs": "7.0.0",
28
31
  "react": "^18.3.1",
32
+ "saxes": "6.0.0",
29
33
  "semver": "^7.8.4",
30
34
  "ws": "^8.20.0"
31
35
  },
32
36
  "optionalDependencies": {
33
- "@testmuai/kane-cli-darwin-arm64": "0.6.9",
34
- "@testmuai/kane-cli-darwin-x64": "0.6.9",
35
- "@testmuai/kane-cli-linux-x64": "0.6.9",
36
- "@testmuai/kane-cli-linux-arm64": "0.6.9",
37
- "@testmuai/kane-cli-win-x64": "0.6.9",
37
+ "@testmuai/kane-cli-darwin-arm64": "0.6.10",
38
+ "@testmuai/kane-cli-darwin-x64": "0.6.10",
39
+ "@testmuai/kane-cli-linux-x64": "0.6.10",
40
+ "@testmuai/kane-cli-linux-arm64": "0.6.10",
41
+ "@testmuai/kane-cli-win-x64": "0.6.10",
38
42
  "@testmuai/kane-cli-node-darwin-arm64": "24.18.0",
39
43
  "@testmuai/kane-cli-node-darwin-x64": "24.18.0",
40
44
  "@testmuai/kane-cli-node-linux-x64": "24.18.0",