@testmuai/kane-cli 0.6.9 → 0.6.11

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 (187) hide show
  1. package/dist/ChatSurface-TZ554O4U.js +8 -0
  2. package/dist/{ChromeProfilePicker-FSZB4SZR.js → ChromeProfilePicker-54CAJDUF.js} +1 -1
  3. package/dist/{CliFeedbackPrompt-WNMDCIHZ.js → CliFeedbackPrompt-TCAH4AHL.js} +1 -1
  4. package/dist/{CliUploadProgress-H4265KXU.js → CliUploadProgress-UURZ63VQ.js} +1 -1
  5. package/dist/{ConfigView-XCUZ44SP.js → ConfigView-5QGB7MUS.js} +1 -1
  6. package/dist/EvidenceViewOffer-SSAM4RRP.js +2 -0
  7. package/dist/{FolderPicker-S2XVCPYN.js → FolderPicker-Y5MAYFIJ.js} +1 -1
  8. package/dist/{HelpView-OPKRGNNM.js → HelpView-S3GJGSCE.js} +1 -1
  9. package/dist/{InfoBox-TW2PGJK5.js → InfoBox-LYTNNMVJ.js} +1 -1
  10. package/dist/{LinksBox-66M7XP5Y.js → LinksBox-5MSEKNSV.js} +1 -1
  11. package/dist/{ProfilesView-T2CFQPR5.js → ProfilesView-LTHE5UIO.js} +1 -1
  12. package/dist/{ProjectPicker-7ALN52CY.js → ProjectPicker-XMXIGHSE.js} +1 -1
  13. package/dist/{SaveSessionPrompt-HM3F6QML.js → SaveSessionPrompt-VQDEA4WA.js} +1 -1
  14. package/dist/SingleShotApp-A6PCNPLM.js +2 -0
  15. package/dist/{SummaryBox-BQZEGOIV.js → SummaryBox-WWF3G263.js} +1 -1
  16. package/dist/TestMdRunView-MQ7ZPFN2.js +2 -0
  17. package/dist/{WhoamiView-722MBPSG.js → WhoamiView-PDURYP7E.js} +1 -1
  18. package/dist/auth-I4RB4KO3.js +2 -0
  19. package/dist/bind-QJT726NE.js +6 -0
  20. package/dist/bootstrap-566PPFCC.js +2 -0
  21. package/dist/{bridge-V4FF5QPK.js → bridge-QCMEOQDD.js} +1 -1
  22. package/dist/{changelog-KMYZW5MI.js → changelog-OKYH4F7I.js} +1 -1
  23. package/dist/{chat-committer-MWZ4JQMM.js → chat-committer-OS7ULZMH.js} +1 -1
  24. package/dist/chat-controller-QLORQWJZ.js +2 -0
  25. package/dist/{chunk-LRA3V5GY.js → chunk-2WKX3RMA.js} +1 -1
  26. package/dist/chunk-2XMJ6YAE.js +2 -0
  27. package/dist/{chunk-FVM7TWKT.js → chunk-3AZTXJY4.js} +1 -1
  28. package/dist/{chunk-SHAA6FOD.js → chunk-3RZ63RBO.js} +1 -1
  29. package/dist/{chunk-U5QTE3WX.js → chunk-4CJ55EUY.js} +1 -1
  30. package/dist/{chunk-T4WZWKIU.js → chunk-54IB6CXK.js} +2 -2
  31. package/dist/chunk-54VQ46U2.js +14 -0
  32. package/dist/chunk-55Y65VPA.js +347 -0
  33. package/dist/chunk-5EOX4MEY.js +2 -0
  34. package/dist/{chunk-L4JIMNKW.js → chunk-6HYW5RFX.js} +1 -1
  35. package/dist/{chunk-L3HG5ONB.js → chunk-6W6AIDLJ.js} +1 -1
  36. package/dist/chunk-73OQDAXF.js +3 -0
  37. package/dist/{chunk-LEA6IHXC.js → chunk-7E24OCGX.js} +1 -1
  38. package/dist/{chunk-DKERZJYF.js → chunk-7MRBMDZ5.js} +1 -1
  39. package/dist/{chunk-345PY4SZ.js → chunk-7NLQ3QQD.js} +1 -1
  40. package/dist/chunk-7YPK6EDR.js +4 -0
  41. package/dist/chunk-BKM2LWU2.js +3 -0
  42. package/dist/{chunk-YY6WPFMT.js → chunk-DSOA6L73.js} +3 -3
  43. package/dist/{chunk-ZA4GR5R7.js → chunk-EAUUULJQ.js} +1 -1
  44. package/dist/chunk-EV3EHXEI.js +4 -0
  45. package/dist/chunk-F7WKDMX7.js +47 -0
  46. package/dist/{chunk-7Z64BL5D.js → chunk-FCHTL74E.js} +1 -1
  47. package/dist/chunk-FHKDTM5L.js +6 -0
  48. package/dist/{chunk-OSALXGD4.js → chunk-FMR2KPSK.js} +1 -1
  49. package/dist/{chunk-RGDQMKNJ.js → chunk-FRBYGSGJ.js} +1 -1
  50. package/dist/{chunk-GBYH35H5.js → chunk-FSB3FTIQ.js} +1 -1
  51. package/dist/{chunk-JHAGEBKE.js → chunk-GIMTSDNC.js} +1 -1
  52. package/dist/{chunk-FT4G3QGO.js → chunk-GLA6QL3T.js} +1 -1
  53. package/dist/chunk-H2W2UNTN.js +6 -0
  54. package/dist/{chunk-7BCZLDNX.js → chunk-HLRLP6TQ.js} +1 -1
  55. package/dist/{chunk-4FH2KFRT.js → chunk-HMM5FJJO.js} +1 -1
  56. package/dist/{chunk-TACPTX64.js → chunk-HOQEMPMQ.js} +2 -2
  57. package/dist/{chunk-MXLXKHW4.js → chunk-ICGHBZFZ.js} +1 -1
  58. package/dist/{chunk-TFVMSEIA.js → chunk-IQODWB32.js} +1 -1
  59. package/dist/{chunk-MBXWXBDM.js → chunk-J2KSZUOO.js} +1 -1
  60. package/dist/chunk-J44RN3FB.js +2 -0
  61. package/dist/{chunk-O4HWPV67.js → chunk-JXKRO2ZJ.js} +2 -2
  62. package/dist/{chunk-K5JGCJ2K.js → chunk-K7USHLVZ.js} +4 -4
  63. package/dist/{chunk-QZJID3OZ.js → chunk-KHJXOFDM.js} +1 -1
  64. package/dist/chunk-KHQHVSZ6.js +5 -0
  65. package/dist/{chunk-IWBPV3VS.js → chunk-KSZ72BSC.js} +1 -1
  66. package/dist/{chunk-QTHITA73.js → chunk-KXUSG5ZI.js} +1 -1
  67. package/dist/{chunk-DPOES6G3.js → chunk-LHDNJJGE.js} +1 -1
  68. package/dist/{chunk-P4SE6YON.js → chunk-M5PJQ5Y3.js} +1 -1
  69. package/dist/{chunk-QM3XF5TW.js → chunk-MFOH7EYR.js} +1 -1
  70. package/dist/{chunk-EWLLPUP4.js → chunk-MJBCBQC2.js} +1 -1
  71. package/dist/chunk-MMPFU2YC.js +2 -0
  72. package/dist/{chunk-RQM3DUSB.js → chunk-MR7CX5VT.js} +1 -1
  73. package/dist/{chunk-GNNMHYWE.js → chunk-MRP54NCJ.js} +1 -1
  74. package/dist/chunk-MTNUZEO7.js +12 -0
  75. package/dist/{chunk-RLICAFFQ.js → chunk-NJAHRITS.js} +1 -1
  76. package/dist/{chunk-OV2W7KBC.js → chunk-NTGYFYBP.js} +1 -1
  77. package/dist/{chunk-LMMOR7CR.js → chunk-NTNAHN25.js} +1 -1
  78. package/dist/{chunk-EASTDHNW.js → chunk-NUQ423YE.js} +1 -1
  79. package/dist/{chunk-U6TLLYRG.js → chunk-OGWC3J3C.js} +1 -1
  80. package/dist/chunk-OIYGGEUL.js +6 -0
  81. package/dist/{chunk-T2ULEJK7.js → chunk-POYZ6SAI.js} +2 -2
  82. package/dist/chunk-Q2F5QB2W.js +2 -0
  83. package/dist/{chunk-3YI4QRXF.js → chunk-QJIJC3KC.js} +1 -1
  84. package/dist/{chunk-G6F2BOFT.js → chunk-RFJAYURU.js} +1 -1
  85. package/dist/chunk-RGJIRS3B.js +2 -0
  86. package/dist/{chunk-CLYG26XV.js → chunk-RZJVQUBA.js} +35 -35
  87. package/dist/{chunk-QB4IOM3X.js → chunk-SURF5Z7Y.js} +1 -1
  88. package/dist/chunk-TDPWFYTJ.js +2 -0
  89. package/dist/chunk-V3UE6RJP.js +2 -0
  90. package/dist/chunk-VOHQA2SP.js +2 -0
  91. package/dist/{chunk-FFHBQK5N.js → chunk-XSKLH2MC.js} +2 -2
  92. package/dist/{chunk-OAEZKYYQ.js → chunk-XWSAKVEY.js} +2 -2
  93. package/dist/{chunk-F42YVALT.js → chunk-XXMNUJX4.js} +1 -1
  94. package/dist/{chunk-QZNUTCSD.js → chunk-XZRIQ3GF.js} +1 -1
  95. package/dist/chunk-Y5RNCJAN.js +19 -0
  96. package/dist/chunk-YSSTGJ7O.js +7 -0
  97. package/dist/chunk-Z2JSEL3I.js +4 -0
  98. package/dist/{chunk-R65HNFRB.js → chunk-ZNHXIRCM.js} +9 -9
  99. package/dist/{chunk-AU7WQ2O5.js → chunk-ZP4S5WGW.js} +1 -1
  100. package/dist/{chunk-NIKA2V6B.js → chunk-ZPCU6546.js} +1 -1
  101. package/dist/{config-Z4OS3HEE.js → config-QISRENF5.js} +1 -1
  102. package/dist/{cover-cmd-L2HSVDLH.js → cover-cmd-SV3I23UM.js} +1 -1
  103. package/dist/{credentials-TNEVAUHI.js → credentials-OGLK7MPV.js} +1 -1
  104. package/dist/docx-convert-ZBVQO2LG.js +2 -0
  105. package/dist/{dossier-ZHSHATVU.js → dossier-KJSJPWOW.js} +1 -1
  106. package/dist/{evidence-MA3LDBWG.js → evidence-HDD7T7DX.js} +1 -1
  107. package/dist/evolve-cmd-UE2BIMXK.js +2 -0
  108. package/dist/exit-manager-MXUD7GQ7.js +2 -0
  109. package/dist/{explain-VTRHEVUQ.js → explain-EBVIUS2X.js} +1 -1
  110. package/dist/{explain-cmd-E366QTAD.js → explain-cmd-DBUTPZHA.js} +1 -1
  111. package/dist/{explain-cmd-327F6ESA.js → explain-cmd-NWIYH5MI.js} +1 -1
  112. package/dist/extract-bind-6MQYKN3G.js +8 -0
  113. package/dist/{extract-cmd-LFVMG6UE.js → extract-cmd-2RUIWFZG.js} +1 -1
  114. package/dist/{gaps-cmd-IAEXXESW.js → gaps-cmd-CKCHH3HQ.js} +1 -1
  115. package/dist/{generate-headless-TYQRYQKJ.js → generate-headless-TUA3HGRX.js} +2 -2
  116. package/dist/index.js +67 -65
  117. package/dist/ingest-FIIO67ZN.js +2 -0
  118. package/dist/ingest-cmd-CRMY46YC.js +7 -0
  119. package/dist/interactive-bind-53FCRK34.js +10 -0
  120. package/dist/{lifecycle-cmd-KZOC4WDW.js → lifecycle-cmd-32LG364Q.js} +1 -1
  121. package/dist/{list-cmd-6X5U46RD.js → list-cmd-UTZ2PQUK.js} +1 -1
  122. package/dist/list-commands-F53ZNYOZ.js +2 -0
  123. package/dist/{logical-ids-RFGWBVML.js → logical-ids-I7B3VJEH.js} +1 -1
  124. package/dist/login-flow-D7KBR7XR.js +2 -0
  125. package/dist/{maintenance-cmd-UJG4LPWD.js → maintenance-cmd-BZAGSYGI.js} +1 -1
  126. package/dist/pdf-convert-S7VYE6AV.js +2 -0
  127. package/dist/{persist-recorded-session-RAL7UCQT.js → persist-recorded-session-5ZFS5SMZ.js} +1 -1
  128. package/dist/pipeline-MX3ZR5B3.js +2 -0
  129. package/dist/readmodel-S5RAQH3F.js +2 -0
  130. package/dist/reconcile-cmd-4377PWF5.js +2 -0
  131. package/dist/{recording-banner-MBR3Q7VD.js → recording-banner-ZZUF2MGT.js} +1 -1
  132. package/dist/{require-project-folder-KE7XOOFN.js → require-project-folder-NQBZFUPF.js} +1 -1
  133. package/dist/{revert-FRXNIP5R.js → revert-RQJE56HF.js} +1 -1
  134. package/dist/{review-cmd-XVWPSWU2.js → review-cmd-7LXGYHHQ.js} +1 -1
  135. package/dist/run-2AIQUJ55.js +2 -0
  136. package/dist/run-YH5SCBYD.js +2 -0
  137. package/dist/{run-test-md-ZCAWNP35.js → run-test-md-XOSCYVSS.js} +2 -2
  138. package/dist/{sessions-cmd-STHKGDX4.js → sessions-cmd-DTQYDZNT.js} +1 -1
  139. package/dist/{skill-installer-H5DPJJFW.js → skill-installer-VYIIWAK7.js} +1 -1
  140. package/dist/{spawner-C6B5J73J.js → spawner-7KXVKAD5.js} +1 -1
  141. package/dist/store-id-EOSGEKVK.js +2 -0
  142. package/dist/tcg-generate-U6OCCS2E.js +2 -0
  143. package/dist/testmd-actions-RPALXRZK.js +2 -0
  144. package/dist/token-refresh-S7CYBZTE.js +2 -0
  145. package/dist/{validate-basic-VBPGGHES.js → validate-basic-LP3S5PK7.js} +1 -1
  146. package/dist/{version-check-YPRCQJ7E.js → version-check-XP62HWLJ.js} +1 -1
  147. package/dist/{view-cmd-G4PGJRQH.js → view-cmd-GQBFCPDL.js} +1 -1
  148. package/dist/walk-session-YIKHE6PT.js +2 -0
  149. package/package.json +10 -6
  150. package/dist/ChatSurface-B2QJYKV4.js +0 -8
  151. package/dist/EvidenceViewOffer-5TJCRM2T.js +0 -2
  152. package/dist/SingleShotApp-YQYS6HTB.js +0 -2
  153. package/dist/TestMdRunView-7CL3PM3J.js +0 -2
  154. package/dist/bind-HNI5LCNK.js +0 -6
  155. package/dist/chat-controller-YX5A7R52.js +0 -2
  156. package/dist/chunk-2Z5MSC23.js +0 -12
  157. package/dist/chunk-4BAL4OGF.js +0 -7
  158. package/dist/chunk-4CKZAGBD.js +0 -2
  159. package/dist/chunk-4GXOBABK.js +0 -4
  160. package/dist/chunk-E4EHWO3J.js +0 -4
  161. package/dist/chunk-FXPPQL4D.js +0 -6
  162. package/dist/chunk-GLS46X7N.js +0 -5
  163. package/dist/chunk-M5JQXOCE.js +0 -12
  164. package/dist/chunk-RHNKYNNZ.js +0 -6
  165. package/dist/chunk-SORKKW7B.js +0 -6
  166. package/dist/chunk-VCYVSKPM.js +0 -2
  167. package/dist/chunk-VXLOEM2U.js +0 -347
  168. package/dist/chunk-XTO236AL.js +0 -14
  169. package/dist/chunk-XWIN3S7O.js +0 -4
  170. package/dist/evolve-cmd-DTW4EOXM.js +0 -2
  171. package/dist/exit-manager-VCSIUYBR.js +0 -2
  172. package/dist/extract-bind-DZLG4GUE.js +0 -5
  173. package/dist/ingest-CBQAXVH6.js +0 -2
  174. package/dist/ingest-cmd-JN6PLDE3.js +0 -3
  175. package/dist/interactive-bind-QEBWUJCN.js +0 -7
  176. package/dist/list-commands-BU2MSYRH.js +0 -2
  177. package/dist/login-flow-4L62GWLT.js +0 -2
  178. package/dist/pdf-convert-KYXI4FU4.js +0 -2
  179. package/dist/pipeline-PLI5WQKX.js +0 -2
  180. package/dist/readmodel-V3DVL6NP.js +0 -2
  181. package/dist/reconcile-cmd-UXY36ROJ.js +0 -2
  182. package/dist/run-5DQSL5KH.js +0 -2
  183. package/dist/run-B7BRNC3X.js +0 -2
  184. package/dist/tcg-generate-DIMZXAV3.js +0 -2
  185. package/dist/testmd-actions-X6XCV53D.js +0 -2
  186. package/dist/token-refresh-7PAPCMQK.js +0 -2
  187. 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{b as a,c as b,d as c,e as d,f as e}from"./chunk-Z2JSEL3I.js";import"./chunk-V3UE6RJP.js";import"./chunk-DNNZ353O.js";import"./chunk-Q2F5QB2W.js";import"./chunk-NVGBE2DR.js";import"./chunk-7E24OCGX.js";import"./chunk-FRBYGSGJ.js";import"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.js";import"./chunk-UR6MHSHU.js";export{a as compositePayloadBytes,e as ingestBytes,d as ingestFile,b as slugFromFilename,c as versionBaseOf};
@@ -0,0 +1,7 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{c as U}from"./chunk-RN4OSVTG.js";import{a as B,c as M,d as V,e as Y,f as H}from"./chunk-Z2JSEL3I.js";import{a as D}from"./chunk-V3UE6RJP.js";import"./chunk-DNNZ353O.js";import{g as z}from"./chunk-EV3EHXEI.js";import{a as G,b as K,k as q}from"./chunk-F7WKDMX7.js";import"./chunk-Q2F5QB2W.js";import{a as F}from"./chunk-VOHQA2SP.js";import{a as C}from"./chunk-BC7UVJJB.js";import{b as k}from"./chunk-NVGBE2DR.js";import{a as j}from"./chunk-7E24OCGX.js";import"./chunk-FRBYGSGJ.js";import"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.js";import{x as N}from"./chunk-MMPFU2YC.js";import"./chunk-UR6MHSHU.js";import{existsSync as ve}from"fs";import{appendFileSync as ce,mkdirSync as ue}from"fs";import{homedir as pe}from"os";import{dirname as me,join as fe}from"path";function X(t,r){let e=/^(DOCX_[A-Z_]+):/.exec(r)?.[1];if(e)try{let i=process.env.KANE_CONTEXT_REFUSAL_LOG??fe(pe(),".testmuai","kaneai","context-refusals.log");ue(me(i),{recursive:!0}),ce(i,`${new Date().toISOString()} ${e} ${t}
3
+ `)}catch{}}var g=class extends Error{constructor(e,i){super(i);this.code=e;this.name="LisError"}};function de(t){let r=t.TESTMUAI_ENV==="stage"?"stage":"prod";return`${N[r].shareApiBaseUrl}/lis/api/v1`}function le(t){let r=t.env??process.env,e=t.auth?.TESTMUAI_BASIC_AUTH||r.TESTMUAI_BASIC_AUTH;if(e)return{authorization:`Basic ${e}`};let i=t.auth?.TESTMUAI_API_KEY||r.TESTMUAI_API_KEY;return i?{authorization:`Bearer ${i}`}:{}}function v(t,r,e="the issue"){return t===401||t===403?new g("LIS_AUTH","credentials rejected \u2014 run `kane-cli login` and retry"):t>=500?new g("LIS_UNAVAILABLE",`the integrations service returned an error (HTTP ${t}) \u2014 retry later`):new g("JIRA_ISSUE_UNAVAILABLE",`could not fetch ${e}: ${r||`HTTP ${t}`}`)}function x(t){try{return JSON.parse(t.bytes.toString("utf8"))}catch{throw new g("LIS_UNAVAILABLE","the integrations service returned a malformed response \u2014 retry later")}}var ge=3e4;async function S(t,r,e){let i=e.env??process.env,u=e.fetchImpl??fetch,o=new AbortController,p=setTimeout(()=>o.abort(),ge);try{let a=await u(`${de(i)}${t}`,{...r,headers:{"content-type":"application/json",...le(e),...r.headers??{}},signal:o.signal}),n=await Promise.race([a.arrayBuffer(),new Promise((s,c)=>{o.signal.addEventListener("abort",()=>c(new DOMException("aborted","AbortError")),{once:!0})})]);return{status:a.status,ok:a.ok,headers:a.headers,bytes:Buffer.from(n)}}catch(a){throw o.signal.aborted?new g("LIS_UNAVAILABLE","the integrations service did not respond within 30 seconds \u2014 retry later"):new g("LIS_UNAVAILABLE",`could not reach the integrations service (${a instanceof Error?a.message:String(a)}) \u2014 check your connection and retry`)}finally{clearTimeout(p)}}function T(t){try{return JSON.parse(t.bytes.toString("utf8")).message??""}catch{return""}}async function Z(t={}){let r=await S("/jira/info",{method:"GET"},t);if(!r.ok)throw v(r.status,T(r));let e=x(r),i=(e.data?.SELECTED_PROJECTS??[]).map(u=>u?.key).filter(u=>typeof u=="string"&&u.length>0);return{installed:e.data?.INSTALLED==="YES",selectAll:e.data?.SELECT_ALL===!0,selectedProjects:i}}async function W(t,r={}){let e=await S("/jira/issue?details=true",{method:"POST",body:JSON.stringify({plugin_code:"jira",issueKey:t})},r);if(!e.ok)throw v(e.status,T(e));let i=x(e);if(i.type==="error"||!i.data)throw new g("JIRA_ISSUE_UNAVAILABLE",`could not fetch the issue: ${i.message??"issue not found or not accessible"}`);return i.data}async function Q(t,r={}){let e=await S("/jira/attachment",{method:"POST",body:JSON.stringify({attachment_id:t})},r);if(e.status===413)throw new g("ATTACHMENT_TOO_LARGE","the attachment exceeds the integrations service's size cap");if(e.status===404)throw new g("JIRA_NOT_CONNECTED","Jira is not connected for this account \u2014 connect it in the Integrations screen and retry");if(!e.ok)throw v(e.status,T(e),`attachment ${t}`);return{bytes:e.bytes,mediaType:e.headers.get("content-type")??"application/octet-stream"}}var $="kane.source.jira/1";function ee(t){if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return String(t);if(Array.isArray(t)){let r=t.map(ee).filter(e=>e!==null);return r.length===0?null:r.join(", ")}if(t!==null&&typeof t=="object"){let r=t;for(let e of["name","value","displayName"])if(typeof r[e]=="string")return r[e];return null}return null}function te(t,r){let e=[],i={},u=t.additional_fields??{};for(let n of Object.keys(u).sort()){let s=ee(u[n]);if(s===null){e.push(`field "${n}" has no stable text form \u2014 dropped from the envelope`);continue}i[n]=s}let o=[...t.attachments??[]].map(n=>({id:String(n.id),filename:n.filename??"",media_type:n.mime_type??"application/octet-stream",size:n.size??0})).sort((n,s)=>{let c=Number(n.id),m=Number(s.id);return Number.isFinite(c)&&Number.isFinite(m)?c-m:n.id<s.id?-1:n.id>s.id?1:0}),p=t.key;if(!/^[A-Za-z][A-Za-z0-9_]*-\d+$/.test(p))throw new Error(`cannot build a stable identity for issue key "${p}" \u2014 expected a PROJECT-NUMBER key`);let a={schema:$,site:r,project:p.slice(0,p.lastIndexOf("-")),issue:{id:t.id,key:p},content:{summary:t.summary??"",description:t.description??"",fields:i},attachments:o};return{bytes:Buffer.from(JSON.stringify(a),"utf8"),envelope:a,warnings:e}}var re=64,he=16,ye=6e6,be=5e7,Ee=12e6,Ie={png:"image/png",jpeg:"image/jpeg",webp:"image/webp",gif:"image/gif",bmp:"image/bmp",tiff:"image/tiff",emf:"image/emf",wmf:"image/wmf",unknown:"application/octet-stream"},Ae=new Set(["png","jpeg","webp"]);function ne(t){return async r=>{let e;try{e=JSON.parse(r.toString("utf8"))}catch{throw new Error("JIRA_ENVELOPE_SCHEMA: source bytes are not a kane jira envelope")}if(e.schema!==$)throw new Error(`JIRA_ENVELOPE_SCHEMA: unknown envelope schema "${e.schema}" \u2014 this CLI understands ${$}`);let i=[],u=new Map,o=[],p=0,a=new Map,n=[];for(let m=0;m<e.attachments.length;m++){let h=e.attachments[m],L=`i${m+1}`,R=`attachment:${h.filename}`,d=E=>`[img#${L}] ${h.filename} (${h.media_type}, ${h.size} bytes${E?"":" \u2014 not delivered"})`,f=(E,ae,w)=>{i.push({ref:L,loc:R,media_type:E,...w?.blob?{blob:w.blob}:{},...w?.appearance?{appearance:w.appearance}:{},delivery:ae,...w?.duplicate_of?{duplicate_of:w.duplicate_of}:{}})};if(!h.media_type.startsWith("image/")){f(h.media_type,"unsupported-vision-media-type"),n.push(d(!1));continue}let y;try{y=await t.fetchAttachment(h.id)}catch{f(h.media_type,"external-image-not-fetched"),n.push(d(!1));continue}let A=y.bytes,l=G(A),I=Ie[l.format],b=k(A);if(u.set(b,A),!Ae.has(l.format)){let E=l.format==="gif"||l.format==="bmp"||l.format==="tiff"?"unsupported-vision-media-type":"unsupported-image-kind";f(I,E,{blob:b}),n.push(d(!1));continue}if(l.width===void 0||l.height===void 0||l.width*l.height>be){f(I,"undecodable",{blob:b}),n.push(d(!1));continue}let _;if(l.format==="png"||l.format==="jpeg"){let E=K(A,l.format);if(E===null){f(I,"undecodable",{blob:b}),n.push(d(!1));continue}_=F(E.data,{width:E.width,height:E.height,channels:E.channels})}if(l.width<re||l.height<re){f(I,"below-dimension-floor",{blob:b,appearance:_}),n.push(d(!1));continue}let J=a.get(b);if(J!==void 0){f(I,"duplicate",{blob:b,appearance:_,duplicate_of:J}),n.push(d(!1));continue}if(A.byteLength>ye){f(I,"image-too-large",{blob:b,appearance:_}),n.push(d(!1));continue}if(p+A.byteLength>Ee){f(I,"vision-byte-budget-reached",{blob:b,appearance:_}),n.push(d(!1));continue}if(o.length>=he){f(I,"image-cap-reached",{blob:b,appearance:_}),n.push(d(!1));continue}a.set(b,L),p+=A.byteLength,o.push(L),f(I,"selected",{blob:b,appearance:_}),n.push(d(!0))}let s=[];s.push(`${e.issue.key} \xB7 ${e.site}/${e.project}`,`Summary: ${e.content.summary}`),e.content.description!==""&&s.push("",...e.content.description.split(`
4
+ `));let c=Object.keys(e.content.fields);return c.length>0&&s.push("","--- fields ---",...c.map(m=>`${m}: ${e.content.fields[m]}`)),n.length>0&&s.push("","--- attachments ---",...n),{projection:s.join(`
5
+ `)+`
6
+ `,inventory:i,blobs:u,delivered:o,converter:{name:"jira-convert",version:"1",policy:"v1"}}}}var _e=/^[A-Za-z][A-Za-z0-9_]*-\d+$/;function O(t){if(!/^https?:\/\/.+/i.test(t))return null;let r;try{r=new URL(t)}catch{return null}let e=r.pathname.split("/").filter(Boolean),i=e.lastIndexOf("browse");if(i===-1||i+1>=e.length)return null;let u=e[i+1];return _e.test(u)?{site:r.hostname,issueKey:u.toUpperCase()}:null}async function Le(t,r,e,i,u){let o=O(t);if(o===null)return(e.err??e.out)(`error: ${t}: unsupported remote URL \u2014 expected a Jira issue URL (https://<site>/browse/KEY-123)`),1;let p=u?.lis??{jiraInfo:Z,jiraIssue:W,jiraAttachment:Q};try{let n={auth:await(u?.authEnv??(await import("./auth-I4RB4KO3.js")).resolveLisAuthEnv)(),env:process.env},s=await p.jiraInfo(n);if(!s.installed)return(e.err??e.out)(`error: ${t}: Jira is not connected for this account \u2014 connect it in the Integrations screen (integrations.lambdatest.com) and retry`),1;let c=o.issueKey.slice(0,o.issueKey.lastIndexOf("-"));if(!s.selectAll&&s.selectedProjects.length>0&&!s.selectedProjects.includes(c))return(e.err??e.out)(`error: ${t}: project ${c} is not in the integration's selected projects (${s.selectedProjects.join(", ")}) \u2014 add it in the Integrations screen to ingest from it`),1;let m=await p.jiraIssue(o.issueKey,n),h=o.site;if(m.host)try{h=new URL(m.host).hostname}catch{h=m.host.replace(/^https?:\/\//,"").replace(/[/:].*$/,"")}let{bytes:L,warnings:R}=te(m,h),d=r??o.issueKey.toLowerCase();B(d);let f=await H({contextDir:i,bytes:L,media:D,sourceId:d,label:t,confirmSameSource:e.isTTY?y=>e.confirm(`identical content already ingested as ${y} \u2014 treat as the same source?`):void 0,converters:{jira:ne({fetchAttachment:y=>p.jiraAttachment(y,n)})}});e.out(`${f.status} ${f.source_id} source ${f.cid} blob ${f.blob}`);for(let y of R)e.out(`warning: ${y}`);for(let y of f.warnings??[])e.out(`warning: ${y}`);if(f.composite){let y=f.composite.delivered+f.composite.omitted;e.out(`${f.source_id}: jira, ${y} attachments, ${f.composite.delivered} images delivered (${f.composite.omitted} omitted)`)}return 0}catch(a){return a instanceof g?((e.err??e.out)(`error: ${t}: ${a.message}`),1):((e.err??e.out)(`error: ${t}: ${we(a instanceof Error?a.message:String(a))}`),1)}}function we(t){let r=t.match(/^FILE_TOO_LARGE: (\d+) bytes > (\d+) cap/);return r?`the issue's content is too large to ingest (${r[1]} bytes; cap ${r[2]}) \u2014 trim the description or attachments in Jira and retry`:t.startsWith("PROJECTION_TOO_LARGE:")?"the issue's text is too large to ingest \u2014 trim the description in Jira and retry":t}var se={name:"jira",hint:"Jira issue URLs (https://<site>/browse/KEY-123)",match:t=>O(t)!==null,ingest:Le};var P=[se];function ie(t){return/^https?:\/\/.+/i.test(t)}function oe(t){return P.find(r=>r.match(t))??null}async function Se(t,r,e,i=process.cwd(),u){let o=C(i);if(r.as!==void 0&&t.length>1)return(e.err??e.out)(`error: --as names ONE source identity \u2014 pass a single file (got ${t.length})`),2;for(let p of t){if(ie(p)){let s=oe(p);if(s===null)return(e.err??e.out)(`error: ${p}: unsupported remote URL \u2014 supported: ${P.map(m=>m.hint).join("; ")}`),1;let c=await s.ingest(p,r.as,e,o,u);if(c!==0)return c;continue}let a=r.as;if(e.isTTY&&a===void 0&&ve(o)){let s=M(p),c=V(s);if(c){let m=j(o);m.heads.get(c)!=null&&m.heads.get(s)==null&&await e.confirm(`${s} looks like a new version of existing source '${c}' \u2014 ingest as '${c}' (moves its head)?`)&&(a=c)}}let n;try{n=await Y({contextDir:o,filePath:p,asId:a,confirmSameSource:e.isTTY?s=>e.confirm(`identical bytes already ingested as ${s} \u2014 treat as the same source?`):void 0,converters:{pdf:z,docx:q}})}catch(s){let c=s instanceof Error?s.message:String(s);return X(p,c),e.out(`error: ${p}: ${c}`),1}e.out(`${n.status} ${n.source_id} source ${n.cid} blob ${n.blob}`);for(let s of n.warnings??[])e.out(`warning: ${s}`);if(n.composite){let s=n.composite.pages!==void 0?` ${n.composite.pages} pages,`:"";e.out(`${n.source_id}: ${n.composite.kind},${s} ${n.composite.delivered} images delivered (${n.composite.omitted} omitted)`)}if(!e.isTTY&&n.status==="created"){let s=j(o);for(let[c,m]of s.heads.entries())if(!(c===n.source_id||m==null)&&s.getNode(m)?.content.blob===n.blob){e.out(`hint: identical bytes already ingested as ${c} \u2014 merged later via review`);break}}}return 0}async function ct(t,r){let{createInterface:e}=await import("readline/promises");return Se(t,r,{out:i=>process.stdout.write(i+`
7
+ `),isTTY:U(),confirm:async i=>{let u=e({input:process.stdin,output:process.stdout});try{let o=await u.question(`${i} [Y/n] `);return!/^n(o)?$/i.test(o.trim())}finally{u.close()}}})}export{ct as ingestCommand,Se as runIngestCommand};
@@ -0,0 +1,10 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as v}from"./chunk-55Y65VPA.js";import"./chunk-3RZ63RBO.js";import"./chunk-KHU7C6EE.js";import"./chunk-MR7CX5VT.js";import"./chunk-J44RN3FB.js";import"./chunk-JFAFKHDX.js";import"./chunk-YKTYVJBN.js";import"./chunk-CVOGP253.js";import"./chunk-427OQS2N.js";import"./chunk-3C5GMAM4.js";import"./chunk-GG43HSU2.js";import"./chunk-FMR2KPSK.js";import{c as b}from"./chunk-RN4OSVTG.js";import"./chunk-DNNZ353O.js";import{a as A,b as E}from"./chunk-73OQDAXF.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-7E24OCGX.js";import"./chunk-FRBYGSGJ.js";import"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-MMPFU2YC.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-7KXVKAD5.js"),import("./bridge-QCMEOQDD.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-S5RAQH3F.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-TZ554O4U.js"),import("./ScrollbackTap-Q3IOKNMS.js"),import("./chat-controller-QLORQWJZ.js"),import("./exit-manager-MXUD7GQ7.js"),Promise.all([import("./chat-committer-OS7ULZMH.js"),import("./descriptor-KXDJ4XYD.js"),import("./explain-EBVIUS2X.js"),import("./readmodel-S5RAQH3F.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-KJSJPWOW.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-7E24OCGX.js";import"./chunk-FRBYGSGJ.js";import{h as y,i as b,m as v}from"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.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-RQJE56HF.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-I7B3VJEH.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-7E24OCGX.js";import"./chunk-FRBYGSGJ.js";import"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import"./chunk-J2KSZUOO.js";import{d as o}from"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.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-XSKLH2MC.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-KHJXOFDM.js";import"./chunk-LHDNJJGE.js";import"./chunk-MMPFU2YC.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-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.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-HMM5FJJO.js";import"./chunk-4CJ55EUY.js";import"./chunk-RFHMDQXZ.js";import"./chunk-RZ4F3BHX.js";import"./chunk-KHJXOFDM.js";import"./chunk-LHDNJJGE.js";import"./chunk-MMPFU2YC.js";import"./chunk-UR6MHSHU.js";export{a as LoginFlow};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as i,c as m,d as s}from"./chunk-GRB66C5S.js";import"./chunk-RN4OSVTG.js";import{a as t}from"./chunk-BC7UVJJB.js";import{c as d,d as c}from"./chunk-RGDQMKNJ.js";import"./chunk-L4JIMNKW.js";import"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";async function u(r,o=process.cwd()){if(!i(o,r))return 2;let e=c(t(o));if(e.ok)return r.out(e.pending?`ok: ${e.records} record(s) verified \u2014 ${e.pending} record(s) pending catch-up (applied automatically on the next command)`:`ok: ${e.records} record(s) verified, derived projection in parity`),0;for(let n of e.issues)r.out(`issue: ${n}`);return 1}async function p(r,o,e=process.cwd()){if(!i(e,o)||!await m(o,"wipe .context/derived and rebuild it from the verified commit chain",r.yes))return 2;let n=d(t(e));return o.out(`rebuilt: ${n.applied.seq} record(s) replayed, ${Object.keys(n.nodeLabel).length} node(s) projected`),0}async function b(){return u(s())}async function y(r={}){return p(r,s())}export{b as fsckCommand,y as rebuildCommand,u as runFsckCommand,p as runRebuildCommand};
2
+ import{b as i,c as m,d as s}from"./chunk-GRB66C5S.js";import"./chunk-RN4OSVTG.js";import{a as t}from"./chunk-BC7UVJJB.js";import{c as d,d as c}from"./chunk-FRBYGSGJ.js";import"./chunk-6HYW5RFX.js";import"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.js";import"./chunk-UR6MHSHU.js";async function u(r,o=process.cwd()){if(!i(o,r))return 2;let e=c(t(o));if(e.ok)return r.out(e.pending?`ok: ${e.records} record(s) verified \u2014 ${e.pending} record(s) pending catch-up (applied automatically on the next command)`:`ok: ${e.records} record(s) verified, derived projection in parity`),0;for(let n of e.issues)r.out(`issue: ${n}`);return 1}async function p(r,o,e=process.cwd()){if(!i(e,o)||!await m(o,"wipe .context/derived and rebuild it from the verified commit chain",r.yes))return 2;let n=d(t(e));return o.out(`rebuilt: ${n.applied.seq} record(s) replayed, ${Object.keys(n.nodeLabel).length} node(s) projected`),0}async function b(){return u(s())}async function y(r={}){return p(r,s())}export{b as fsckCommand,y as rebuildCommand,u as runFsckCommand,p as runRebuildCommand};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a,b,c,d,e,f,g}from"./chunk-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-3AZTXJY4.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import"./chunk-MMPFU2YC.js";import"./chunk-UR6MHSHU.js";async function v(e,s={}){e.flushRecorder();let o=e.recorder?.lastWrittenPath??null;if(!o)return e.log("info","PERSIST_SKIPPED","No recorded path \u2014 recorder.flush no-op",{reason:e.sessionName?"recorder_flush_failed":"no_session_name",session_name:e.sessionName}),null;let p;try{p=_(o)}catch(t){throw e.log("error","PERSIST_RESOLVE_FAILED","resolveTestMd threw",{error:t.message,recorded_path:o}),t}let i=e.getRunsAsStepRecords(),u=e.getFlows(),a=[],c=0;for(let t=0;t<i.length;t++){let r=i[t],l=u.slice(c,c+r.totalRunDirs);c+=r.totalRunDirs;let g=l.find(n=>n.status==="failed"||n.status==="error"),T=g?"failed":l.length===0?"skipped":"passed";a.push({rootStepIndex:t+1,status:T,duration_s:l.reduce((n,E)=>n+(E.duration??0),0),reason:g?.reason})}let P=a.some(t=>t.status==="failed")?"failed":"passed",D=new f().load().code_export?.language==="javascript"?"javascript":"python",d=I(o);e.log("info","PERSIST_START","Building staging dir",{recorded_path:o,output_dir:d,session_dir:e.sessionDir,step_count:i.length,flow_count:u.length});try{await h({resolvedTest:p,sessionDir:e.sessionDir,stepRunRecords:i,outcomes:a,overallStatus:P,startedISO:e.startedAt,durationS:a.reduce((t,r)=>t+(r.duration_s??0),0),sessionId:e.sessionId,commitId:e.sessionId,tmsIds:{testId:e.testId??void 0,testcaseId:s.testcaseId,projectId:s.projectId,folderId:s.folderId,orgId:s.orgId??e.orgId??void 0,sessionName:e.sessionName??m(o)},codeExportDir:s.codeExportDir,codeExportLanguage:D,packTestDir:s.packTestDir}),e.log("info","PERSIST_STAGING_OK","Staging dir built",{output_dir:d}),S(d),e.log("info","PERSIST_OK","Persist complete",{output_dir:d})}catch(t){let r=t;e.log("error","PERSIST_FAILED","staging build / atomic replace failed",{error:r.message,stack:r.stack,output_dir:d}),process.stderr.write(`[persist] staging build / atomic replace failed: ${r.message}
3
3
  `)}return{recordedTestPath:o,outputDir:d}}export{v as persistRecordedSession};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a,b,c}from"./chunk-KHQHVSZ6.js";import"./chunk-2YQ6TW77.js";import"./chunk-WAOCHXJ5.js";import"./chunk-JXKRO2ZJ.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-7E24OCGX.js";import"./chunk-FRBYGSGJ.js";import"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-KHJXOFDM.js";import"./chunk-MMPFU2YC.js";import"./chunk-UR6MHSHU.js";export{c as UploadPipeline,b as packPresignEntry,a as readPackForUpload};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a,b}from"./chunk-7E24OCGX.js";import"./chunk-FRBYGSGJ.js";import"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.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-54VQ46U2.js";import{a as z,c as G,d as pe,f as Z}from"./chunk-54IB6CXK.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-IQODWB32.js";import"./chunk-RN4OSVTG.js";import{c as ce}from"./chunk-Z2JSEL3I.js";import{d as ae}from"./chunk-V3UE6RJP.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-7E24OCGX.js";import"./chunk-FRBYGSGJ.js";import"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import{c as F}from"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.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-YIKHE6PT.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-566PPFCC.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-LYTNNMVJ.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-POYZ6SAI.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-KHJXOFDM.js";import"./chunk-VE3SUJMA.js";import"./chunk-MMPFU2YC.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,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as _,e as k}from"./chunk-MBXWXBDM.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";function j(w){let{contextDir:v,graph:y,seq:r,by:d}=w,{records:l,hashes:$}=_(v);if(!Number.isInteger(r)||r<1||r>l.length)return{record:null,warnings:[],errors:[{code:"UNKNOWN_SEQ",detail:`no record ${r} (chain has ${l.length})`}]};let i=l[r-1],p=l.slice(0,r-1),c=w.reason??`revert of record ${r}`,t=[],u=[],f=[],g=[],m={},b=new Set(i.nodes.map(e=>e.cid));for(let e of i.nodes){if(y.superseded.has(e.cid)){t.push(`${e.cid} was already superseded after record ${r} \u2014 left as is`);continue}u.push({kind:"node",old:e.cid,new:null,reason:c,by:d})}for(let e of i.supersessions){if(e.kind==="edge"){t.push(`edge retraction ${e.ecid} cannot be auto-restored \u2014 re-extract to re-evidence`);continue}if(l.slice(r).some(n=>n.supersessions.some(s=>s.kind==="node"&&s.old===e.old))){t.push(`supersession of ${e.old.slice(0,19)} was changed again after record ${r} \u2014 later state kept`);continue}let o;for(let n of p)for(let s of n.supersessions)s.kind==="node"&&s.old===e.old&&(o=s.new===s.old?void 0:s.new);o===void 0?u.push({kind:"node",old:e.old,new:e.old,reason:c,by:d}):u.push({kind:"node",old:e.old,new:o,reason:c,by:d})}let h=l.slice(r);for(let e of Object.keys(i.source_head_moves)){if(h.some(n=>e in n.source_head_moves)){t.push(`head of ${e} was moved again after record ${r} \u2014 later state kept`);continue}let o=null;for(let n of p)e in n.source_head_moves&&(o=n.source_head_moves[e]);m[e]=o}let R=new Set;for(let e of i.review){if(R.has(e.id)||b.has(e.id))continue;if(R.add(e.id),h.some(s=>s.review.some(a=>a.id===e.id))){t.push(`trust of ${e.id.slice(0,19)} was reviewed again after record ${r} \u2014 later state kept`);continue}let o=null,n=null;for(let s of p)for(let a of s.review)a.id===e.id&&(o=a.resolution==="reset"?null:a.resolution,n=a.reason);o==="approved"||o==="edited"?f.push({id:e.id,kind:"review-item",resolution:"approved",edit:null,reason:c,by:d}):o==="rejected"?f.push({id:e.id,kind:"review-item",resolution:"rejected",edit:null,reason:n??c,by:d}):f.push({id:e.id,kind:"review-item",resolution:"reset",edit:null,reason:c,by:d})}for(let e of i.names??[]){if(h.some(n=>(n.names??[]).some(s=>s.slug===e.slug))){t.push(`slug "${e.slug}" was reassigned after record ${r} \u2014 later state kept`);continue}let o;for(let n of p)for(let s of n.names??[])s.slug===e.slug&&(o=s.cid);o!==void 0?g.push({cid:o,slug:e.slug,by:d}):t.push(`slug "${e.slug}" was first assigned by record ${r} \u2014 unassignment unsupported, reassign manually`)}return u.length===0&&f.length===0&&g.length===0&&Object.keys(m).length===0?{record:null,warnings:t,errors:[{code:"NOTHING_TO_REVERT",detail:`record ${r} left no compensable facts`}]}:(i.extraction_of&&t.push(`extraction cache for ${i.extraction_of.slice(0,19)} stays \u2014 re-extract with --force`),{record:k(v,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:f,supersessions:u,...g.length>0?{names:g}:{},source_head_moves:m},{expectPrev:$[$.length-1]??null}).record,warnings:t,errors:null})}export{j as commitRevert};
2
+ import{b as _,e as k}from"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.js";import"./chunk-UR6MHSHU.js";function j(w){let{contextDir:v,graph:y,seq:r,by:d}=w,{records:l,hashes:$}=_(v);if(!Number.isInteger(r)||r<1||r>l.length)return{record:null,warnings:[],errors:[{code:"UNKNOWN_SEQ",detail:`no record ${r} (chain has ${l.length})`}]};let i=l[r-1],p=l.slice(0,r-1),c=w.reason??`revert of record ${r}`,t=[],u=[],f=[],g=[],m={},b=new Set(i.nodes.map(e=>e.cid));for(let e of i.nodes){if(y.superseded.has(e.cid)){t.push(`${e.cid} was already superseded after record ${r} \u2014 left as is`);continue}u.push({kind:"node",old:e.cid,new:null,reason:c,by:d})}for(let e of i.supersessions){if(e.kind==="edge"){t.push(`edge retraction ${e.ecid} cannot be auto-restored \u2014 re-extract to re-evidence`);continue}if(l.slice(r).some(n=>n.supersessions.some(s=>s.kind==="node"&&s.old===e.old))){t.push(`supersession of ${e.old.slice(0,19)} was changed again after record ${r} \u2014 later state kept`);continue}let o;for(let n of p)for(let s of n.supersessions)s.kind==="node"&&s.old===e.old&&(o=s.new===s.old?void 0:s.new);o===void 0?u.push({kind:"node",old:e.old,new:e.old,reason:c,by:d}):u.push({kind:"node",old:e.old,new:o,reason:c,by:d})}let h=l.slice(r);for(let e of Object.keys(i.source_head_moves)){if(h.some(n=>e in n.source_head_moves)){t.push(`head of ${e} was moved again after record ${r} \u2014 later state kept`);continue}let o=null;for(let n of p)e in n.source_head_moves&&(o=n.source_head_moves[e]);m[e]=o}let R=new Set;for(let e of i.review){if(R.has(e.id)||b.has(e.id))continue;if(R.add(e.id),h.some(s=>s.review.some(a=>a.id===e.id))){t.push(`trust of ${e.id.slice(0,19)} was reviewed again after record ${r} \u2014 later state kept`);continue}let o=null,n=null;for(let s of p)for(let a of s.review)a.id===e.id&&(o=a.resolution==="reset"?null:a.resolution,n=a.reason);o==="approved"||o==="edited"?f.push({id:e.id,kind:"review-item",resolution:"approved",edit:null,reason:c,by:d}):o==="rejected"?f.push({id:e.id,kind:"review-item",resolution:"rejected",edit:null,reason:n??c,by:d}):f.push({id:e.id,kind:"review-item",resolution:"reset",edit:null,reason:c,by:d})}for(let e of i.names??[]){if(h.some(n=>(n.names??[]).some(s=>s.slug===e.slug))){t.push(`slug "${e.slug}" was reassigned after record ${r} \u2014 later state kept`);continue}let o;for(let n of p)for(let s of n.names??[])s.slug===e.slug&&(o=s.cid);o!==void 0?g.push({cid:o,slug:e.slug,by:d}):t.push(`slug "${e.slug}" was first assigned by record ${r} \u2014 unassignment unsupported, reassign manually`)}return u.length===0&&f.length===0&&g.length===0&&Object.keys(m).length===0?{record:null,warnings:t,errors:[{code:"NOTHING_TO_REVERT",detail:`record ${r} left no compensable facts`}]}:(i.extraction_of&&t.push(`extraction cache for ${i.extraction_of.slice(0,19)} stays \u2014 re-extract with --force`),{record:k(v,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:f,supersessions:u,...g.length>0?{names:g}:{},source_head_moves:m},{expectPrev:$[$.length-1]??null}).record,warnings:t,errors:null})}export{j as commitRevert};
@@ -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-7E24OCGX.js";import"./chunk-FRBYGSGJ.js";import{g as b}from"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import{b as V}from"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.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}from"./chunk-55Y65VPA.js";import"./chunk-3RZ63RBO.js";import"./chunk-KHU7C6EE.js";import"./chunk-MR7CX5VT.js";import"./chunk-J44RN3FB.js";import"./chunk-JFAFKHDX.js";import"./chunk-YKTYVJBN.js";import"./chunk-CVOGP253.js";import"./chunk-427OQS2N.js";import"./chunk-3C5GMAM4.js";import"./chunk-GG43HSU2.js";import"./chunk-FMR2KPSK.js";import"./chunk-DNNZ353O.js";import"./chunk-FHKDTM5L.js";import"./chunk-ZPDM6FO7.js";import"./chunk-NVGBE2DR.js";import"./chunk-L5LI2JF4.js";import"./chunk-7E24OCGX.js";import"./chunk-FRBYGSGJ.js";import"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.js";import"./chunk-5EOX4MEY.js";import"./chunk-MMPFU2YC.js";import"./chunk-UR6MHSHU.js";export{a as runDesign};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as b,b as c,c as d,d as e,e as f,f as g}from"./chunk-MTNUZEO7.js";import"./chunk-K7USHLVZ.js";import{f as a}from"./chunk-MR7CX5VT.js";import"./chunk-J44RN3FB.js";import"./chunk-JFAFKHDX.js";import"./chunk-YKTYVJBN.js";import"./chunk-CVOGP253.js";import"./chunk-427OQS2N.js";import"./chunk-GG43HSU2.js";import"./chunk-FMR2KPSK.js";import"./chunk-V3UE6RJP.js";import"./chunk-DNNZ353O.js";import"./chunk-FHKDTM5L.js";import"./chunk-NVGBE2DR.js";import"./chunk-7E24OCGX.js";import"./chunk-FRBYGSGJ.js";import"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.js";import"./chunk-5EOX4MEY.js";import"./chunk-MMPFU2YC.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};
@@ -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-RFJAYURU.js";import{D as M,E as P,F as K,G as H,H as U}from"./chunk-RZJVQUBA.js";import"./chunk-2XMJ6YAE.js";import"./chunk-KHQHVSZ6.js";import{a as _,b as E}from"./chunk-HOQEMPMQ.js";import{a as h,b as k}from"./chunk-NJAHRITS.js";import"./chunk-2YQ6TW77.js";import"./chunk-OIYGGEUL.js";import{s as L}from"./chunk-RKWJG3WW.js";import{c as R}from"./chunk-ZNHXIRCM.js";import"./chunk-OGWC3J3C.js";import"./chunk-YSSTGJ7O.js";import"./chunk-TDPWFYTJ.js";import{a as x}from"./chunk-3AZTXJY4.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-S3DAAAE5.js";import"./chunk-XZRIQ3GF.js";import"./chunk-4CJ55EUY.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-JXKRO2ZJ.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-7E24OCGX.js";import"./chunk-FRBYGSGJ.js";import"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.js";import{m as b,n as S,o as T}from"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-POYZ6SAI.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import{a as C}from"./chunk-KHJXOFDM.js";import"./chunk-VE3SUJMA.js";import"./chunk-E47GFYXA.js";import{a as v}from"./chunk-LHDNJJGE.js";import"./chunk-MMPFU2YC.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-RPALXRZK.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-ZPCU6546.js";import{b as m}from"./chunk-MJBCBQC2.js";import{a as d}from"./chunk-RZ4F3BHX.js";import"./chunk-KHJXOFDM.js";import"./chunk-LHDNJJGE.js";import{a as f,h as a,i as u}from"./chunk-MMPFU2YC.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-HLRLP6TQ.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-DSOA6L73.js";import"./chunk-ZP4S5WGW.js";import"./chunk-3MSXQU2C.js";import"./chunk-FSB3FTIQ.js";import"./chunk-H2W2UNTN.js";import"./chunk-RZJVQUBA.js";import"./chunk-2XMJ6YAE.js";import"./chunk-KHQHVSZ6.js";import"./chunk-XWSAKVEY.js";import"./chunk-HOQEMPMQ.js";import"./chunk-NJAHRITS.js";import"./chunk-2YQ6TW77.js";import"./chunk-7NLQ3QQD.js";import"./chunk-OIYGGEUL.js";import"./chunk-RKWJG3WW.js";import"./chunk-MFOH7EYR.js";import"./chunk-ZNHXIRCM.js";import"./chunk-NTNAHN25.js";import"./chunk-OGWC3J3C.js";import"./chunk-YSSTGJ7O.js";import"./chunk-TDPWFYTJ.js";import"./chunk-3AZTXJY4.js";import"./chunk-MRP54NCJ.js";import"./chunk-XXMNUJX4.js";import"./chunk-5Y2G4NC7.js";import"./chunk-2WKX3RMA.js";import"./chunk-KSZ72BSC.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-S3DAAAE5.js";import"./chunk-XZRIQ3GF.js";import"./chunk-HMM5FJJO.js";import"./chunk-4CJ55EUY.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-NUQ423YE.js";import"./chunk-RFHMDQXZ.js";import"./chunk-JXKRO2ZJ.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-7E24OCGX.js";import"./chunk-FRBYGSGJ.js";import"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.js";import"./chunk-EAUUULJQ.js";import"./chunk-GLA6QL3T.js";import"./chunk-SURF5Z7Y.js";import"./chunk-YCCUBQY4.js";import"./chunk-GIMTSDNC.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-POYZ6SAI.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-KHJXOFDM.js";import"./chunk-VE3SUJMA.js";import"./chunk-E47GFYXA.js";import"./chunk-LHDNJJGE.js";import"./chunk-7MRBMDZ5.js";import"./chunk-QJIJC3KC.js";import{a as o}from"./chunk-DFS4RMVP.js";import"./chunk-NTGYFYBP.js";import"./chunk-KXUSG5ZI.js";import"./chunk-MMPFU2YC.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-XWSAKVEY.js";import"./chunk-HOQEMPMQ.js";import"./chunk-NJAHRITS.js";import"./chunk-2YQ6TW77.js";import"./chunk-RKWJG3WW.js";import"./chunk-3AZTXJY4.js";import"./chunk-XZRIQ3GF.js";import"./chunk-4CJ55EUY.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-L5LI2JF4.js";import"./chunk-GIMTSDNC.js";import"./chunk-Y5RNCJAN.js";import"./chunk-5EOX4MEY.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-KHJXOFDM.js";import"./chunk-LHDNJJGE.js";import"./chunk-KXUSG5ZI.js";import"./chunk-MMPFU2YC.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-XZRIQ3GF.js";import"./chunk-4CJ55EUY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-KHJXOFDM.js";import"./chunk-MMPFU2YC.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-KHJXOFDM.js";import"./chunk-MMPFU2YC.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-MJBCBQC2.js";import"./chunk-RZ4F3BHX.js";import"./chunk-MMPFU2YC.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-7E24OCGX.js";import"./chunk-FRBYGSGJ.js";import"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import{b as I}from"./chunk-J2KSZUOO.js";import{d as f,e as x}from"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.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-54VQ46U2.js";import{a as X,c as z,d as ae}from"./chunk-54IB6CXK.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-RGJIRS3B.js";import{a as U}from"./chunk-IQODWB32.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-7E24OCGX.js";import{b as oe}from"./chunk-FRBYGSGJ.js";import"./chunk-6W6AIDLJ.js";import"./chunk-6HYW5RFX.js";import{e as re}from"./chunk-J2KSZUOO.js";import"./chunk-5YPBPZUR.js";import"./chunk-IAHKTEET.js";import{a as G}from"./chunk-YCCUBQY4.js";import{y as c}from"./chunk-MMPFU2YC.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-2AIQUJ55.js"),import("./spawner-7KXVKAD5.js"),import("./bridge-QCMEOQDD.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-S5RAQH3F.js"),import("./evolve-cmd-UE2BIMXK.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};