@testmuai/kane-cli 0.7.0 → 0.7.2

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 (267) hide show
  1. package/dist/ChatSurface-E7QKI4LA.js +8 -0
  2. package/dist/{ChromeProfilePicker-DK2A3NYY.js → ChromeProfilePicker-DGDWGCZD.js} +1 -1
  3. package/dist/{CliFeedbackPrompt-D5QDOBE2.js → CliFeedbackPrompt-SYCZXSME.js} +1 -1
  4. package/dist/{CliUploadProgress-AIZL7N6Z.js → CliUploadProgress-VDEAKXJY.js} +1 -1
  5. package/dist/{ConfigView-SDBCTYUU.js → ConfigView-HPKRQXMC.js} +1 -1
  6. package/dist/EvidenceViewOffer-F5YG54OC.js +2 -0
  7. package/dist/{FolderPicker-IVBHPPMW.js → FolderPicker-4NSDXQY5.js} +1 -1
  8. package/dist/{HelpView-YYYX4RKI.js → HelpView-ON6BFGJM.js} +1 -1
  9. package/dist/{InfoBox-MQV3XBT4.js → InfoBox-B23NZ6IG.js} +1 -1
  10. package/dist/{LinksBox-NCFNBUMW.js → LinksBox-TI26VFFH.js} +1 -1
  11. package/dist/{ProfilesView-6GXF6CP2.js → ProfilesView-CRO5AH3H.js} +1 -1
  12. package/dist/{ProjectPicker-W6XDGNDJ.js → ProjectPicker-3N7LJOXU.js} +1 -1
  13. package/dist/{SaveSessionPrompt-QF3P7ERS.js → SaveSessionPrompt-UTOEC5AW.js} +1 -1
  14. package/dist/SingleShotApp-Y3YDFQSD.js +2 -0
  15. package/dist/{SummaryBox-4SZI4XSO.js → SummaryBox-JK64EKC2.js} +1 -1
  16. package/dist/TestMdRunView-O6JTHV5W.js +2 -0
  17. package/dist/{WhoamiView-N3HAJ3TN.js → WhoamiView-6QSLPNF6.js} +1 -1
  18. package/dist/{auth-RXNBQZI2.js → auth-IKFVW3NX.js} +1 -1
  19. package/dist/bind-KCUSVJXG.js +12 -0
  20. package/dist/bootstrap-NFYYRGGR.js +2 -0
  21. package/dist/bridge-JSKEO4N3.js +2 -0
  22. package/dist/{changelog-MI3IPBJS.js → changelog-AAH2ZBYO.js} +1 -1
  23. package/dist/chat-committer-UUC6JTRJ.js +2 -0
  24. package/dist/chat-controller-T2FAI55V.js +2 -0
  25. package/dist/{chunk-CSGQIY7X.js → chunk-23VPUWBD.js} +3 -3
  26. package/dist/chunk-2UIHS2FH.js +2 -0
  27. package/dist/chunk-2WFZIQ62.js +2 -0
  28. package/dist/chunk-2WRBTLFN.js +13 -0
  29. package/dist/chunk-2YEHV2CX.js +2 -0
  30. package/dist/chunk-3Q6WAK6P.js +2 -0
  31. package/dist/{chunk-EN7NW7DU.js → chunk-4LTXE3IX.js} +1 -1
  32. package/dist/{chunk-NR23HZU4.js → chunk-4NFCAGRK.js} +1 -1
  33. package/dist/chunk-53IBTIL3.js +12 -0
  34. package/dist/{chunk-FCMLIK7P.js → chunk-5DBK6QNS.js} +1 -1
  35. package/dist/chunk-5DT7PIGB.js +5 -0
  36. package/dist/chunk-5FJJJNJK.js +4 -0
  37. package/dist/{chunk-BCH3JCND.js → chunk-5SXMV66P.js} +1 -1
  38. package/dist/{chunk-AV6E6WLY.js → chunk-5WXGMXGA.js} +2 -2
  39. package/dist/chunk-5ZQZOVWY.js +4 -0
  40. package/dist/{chunk-FMR2KPSK.js → chunk-6KPPGMO2.js} +1 -1
  41. package/dist/{chunk-77WMTCUQ.js → chunk-74HTO7K3.js} +1 -1
  42. package/dist/{chunk-FCHTL74E.js → chunk-7KORP5FF.js} +1 -1
  43. package/dist/chunk-7OYZR6JA.js +3 -0
  44. package/dist/chunk-7QJ75SYR.js +8 -0
  45. package/dist/{chunk-T7ZPMTGS.js → chunk-AECMF3T2.js} +1 -1
  46. package/dist/chunk-AFBKGZFG.js +2 -0
  47. package/dist/chunk-AFPHLUQ5.js +6 -0
  48. package/dist/chunk-AJ56AMT6.js +9 -0
  49. package/dist/{chunk-RODHDQU3.js → chunk-APPYQZFK.js} +1 -1
  50. package/dist/{chunk-XLKRV2JH.js → chunk-AXTGYOMK.js} +1 -1
  51. package/dist/{chunk-AYY7RYMK.js → chunk-B5RS2XZU.js} +2 -2
  52. package/dist/chunk-BB2W35TW.js +2 -0
  53. package/dist/chunk-BKHXPBWN.js +2 -0
  54. package/dist/{chunk-KCBS57IF.js → chunk-BXYWX4J3.js} +1 -1
  55. package/dist/chunk-C3T7TKAC.js +349 -0
  56. package/dist/{chunk-IQODWB32.js → chunk-CLGC7VEO.js} +1 -1
  57. package/dist/{chunk-6HYW5RFX.js → chunk-CUM23TLF.js} +1 -1
  58. package/dist/chunk-DBIBROYW.js +5 -0
  59. package/dist/chunk-DBKNJRJG.js +2 -0
  60. package/dist/chunk-DUAXZYAD.js +4 -0
  61. package/dist/chunk-DYW5C6II.js +2 -0
  62. package/dist/chunk-DZPGG4S6.js +7 -0
  63. package/dist/{chunk-GQ3NCBYR.js → chunk-EOLFTMWF.js} +1 -1
  64. package/dist/chunk-F7ISS545.js +2 -0
  65. package/dist/{chunk-CH3VWCRZ.js → chunk-FBHRBFHP.js} +1 -1
  66. package/dist/{chunk-X5P2T7MA.js → chunk-FDIPQRX4.js} +1 -1
  67. package/dist/chunk-GFKCTYCA.js +6 -0
  68. package/dist/{chunk-5WE4DHXL.js → chunk-GYNTNKNB.js} +1 -1
  69. package/dist/{chunk-RQYS3KGU.js → chunk-H32GM5G4.js} +1 -1
  70. package/dist/{chunk-4BAMZSFU.js → chunk-HYSFJSIG.js} +1 -1
  71. package/dist/chunk-I7TIGB7K.js +2 -0
  72. package/dist/chunk-IDX3TOPY.js +6 -0
  73. package/dist/{chunk-CVOGP253.js → chunk-IMR64OCZ.js} +1 -1
  74. package/dist/{chunk-3RZ63RBO.js → chunk-IOD3HQVW.js} +1 -1
  75. package/dist/{chunk-QBCS57EO.js → chunk-J5FBU425.js} +40 -40
  76. package/dist/chunk-JKM2PUHI.js +4 -0
  77. package/dist/{chunk-HOOXUO3X.js → chunk-JPWLGHPM.js} +1 -1
  78. package/dist/chunk-JZ26R6UL.js +2 -0
  79. package/dist/chunk-KBM3XHAM.js +2 -0
  80. package/dist/chunk-KCCSWEGA.js +4 -0
  81. package/dist/{chunk-J3EMJ7US.js → chunk-KQZA2QSC.js} +1 -1
  82. package/dist/{chunk-MV4UYTZT.js → chunk-KWIK22R6.js} +1 -1
  83. package/dist/chunk-L2TV4G56.js +4 -0
  84. package/dist/{chunk-VYMCE7UR.js → chunk-M6FKJKC6.js} +2 -2
  85. package/dist/{chunk-5YHVK2EO.js → chunk-MK7JUOYV.js} +1 -1
  86. package/dist/chunk-N2P4MI32.js +2 -0
  87. package/dist/{chunk-A2IQRVPR.js → chunk-O75ZHGJG.js} +1 -1
  88. package/dist/chunk-OR6MCL6Z.js +2 -0
  89. package/dist/chunk-ORQNKZ2Z.js +5 -0
  90. package/dist/{chunk-GRB66C5S.js → chunk-OS4VSIHT.js} +1 -1
  91. package/dist/{chunk-E5PWL3BG.js → chunk-OUJQVBUT.js} +3 -3
  92. package/dist/{chunk-SBZWFULF.js → chunk-PLOWZLG5.js} +1 -1
  93. package/dist/chunk-QIGPXYMF.js +19 -0
  94. package/dist/chunk-QOFZSHSC.js +47 -0
  95. package/dist/{chunk-2XMJ6YAE.js → chunk-R5T4RLF5.js} +1 -1
  96. package/dist/chunk-R7QAS6LZ.js +4 -0
  97. package/dist/{chunk-YHQFYZJ5.js → chunk-RDNFVZEB.js} +1 -1
  98. package/dist/{chunk-67SSEGDO.js → chunk-SFII7HPP.js} +1 -1
  99. package/dist/{chunk-4SJC64KQ.js → chunk-SL6PCVM2.js} +1 -1
  100. package/dist/{chunk-QQUZF2DZ.js → chunk-STVP2XHO.js} +1 -1
  101. package/dist/chunk-TH47OOBV.js +4 -0
  102. package/dist/chunk-TRJUD3XJ.js +5 -0
  103. package/dist/{chunk-XIXR63FI.js → chunk-UC7MNPIN.js} +1 -1
  104. package/dist/chunk-UD7KKHPW.js +5 -0
  105. package/dist/chunk-VAYBKR76.js +4 -0
  106. package/dist/chunk-VFII6C46.js +2 -0
  107. package/dist/chunk-VGFTNLQQ.js +2 -0
  108. package/dist/{chunk-AIMINJVP.js → chunk-VHZ4S57N.js} +1 -1
  109. package/dist/chunk-VLWMMOMF.js +6 -0
  110. package/dist/chunk-VMM4LC4V.js +10 -0
  111. package/dist/{chunk-DFDDUMG5.js → chunk-VOOPWFHW.js} +1 -1
  112. package/dist/{chunk-4GLYNAK7.js → chunk-VRLUNZAK.js} +1 -1
  113. package/dist/chunk-VRVFPMCR.js +2 -0
  114. package/dist/{chunk-WREVEATJ.js → chunk-VT54ARGE.js} +1 -1
  115. package/dist/{chunk-LGVHW4ZA.js → chunk-VWKVUOXU.js} +1 -1
  116. package/dist/chunk-W4B5LOEX.js +4 -0
  117. package/dist/{chunk-K7USHLVZ.js → chunk-W5TTF7GB.js} +3 -3
  118. package/dist/chunk-WXHQYYD5.js +2 -0
  119. package/dist/{chunk-44IWSV6L.js → chunk-XUS4WKDS.js} +1 -1
  120. package/dist/chunk-XWKUZJCP.js +2 -0
  121. package/dist/chunk-YTHQNN2L.js +3 -0
  122. package/dist/{chunk-K4VIM4RM.js → chunk-ZBOWFJB2.js} +2 -2
  123. package/dist/chunk-ZMNJBUAO.js +2 -0
  124. package/dist/{chunk-MTHCUBDF.js → chunk-ZRASQ63J.js} +1 -1
  125. package/dist/{chunk-B4LLKQTK.js → chunk-ZUGCHQFC.js} +1 -1
  126. package/dist/committer-SWEWEYNX.js +2 -0
  127. package/dist/{config-5GOFF5F4.js → config-CWZV6XPT.js} +1 -1
  128. package/dist/cover-cmd-NWIRJY5Z.js +3 -0
  129. package/dist/{credentials-GXDXVMXW.js → credentials-YHTJGKEO.js} +1 -1
  130. package/dist/descriptor-OEUZZCOK.js +2 -0
  131. package/dist/design-committer-VYT6NU3T.js +2 -0
  132. package/dist/dispatch-WVNXB7AD.js +2 -0
  133. package/dist/docx-convert-CHLJUTFH.js +2 -0
  134. package/dist/dossier-KTLTGT2X.js +3 -0
  135. package/dist/evidence-IVDNXWPL.js +2 -0
  136. package/dist/evolve-cmd-XBX4SX5H.js +2 -0
  137. package/dist/{exit-manager-MXUD7GQ7.js → exit-manager-XZL4KIJU.js} +1 -1
  138. package/dist/explain-UAAQWHYR.js +2 -0
  139. package/dist/{explain-cmd-NWIYH5MI.js → explain-cmd-75MCF2ZV.js} +1 -1
  140. package/dist/{explain-cmd-DBUTPZHA.js → explain-cmd-IZEHWZV5.js} +1 -1
  141. package/dist/extract-bind-5OWELRME.js +10 -0
  142. package/dist/extract-cmd-ZRYMJ6IC.js +5 -0
  143. package/dist/feeder-C3TOJPKK.js +2 -0
  144. package/dist/gaps-cmd-XBRXKXDL.js +3 -0
  145. package/dist/{gate-B6C6KLFA.js → gate-54BRAE7N.js} +1 -1
  146. package/dist/{generate-headless-LZ4HRSQ4.js → generate-headless-D6BISWDC.js} +2 -2
  147. package/dist/{headless-io-PWW6YKH2.js → headless-io-66RG5NN5.js} +1 -1
  148. package/dist/identity-ADZ4PAJF.js +2 -0
  149. package/dist/index.js +61 -62
  150. package/dist/ingest-EX72IEQT.js +2 -0
  151. package/dist/ingest-cmd-YTGOICTC.js +2 -0
  152. package/dist/interactive-bind-XSRD36MO.js +25 -0
  153. package/dist/lifecycle-cmd-EQSFAZG6.js +2 -0
  154. package/dist/list-cmd-IRJSUCM5.js +3 -0
  155. package/dist/{list-commands-WIVODSEL.js → list-commands-RCYHJ5Y3.js} +1 -1
  156. package/dist/locks-cmd-CSVSWY2Y.js +2 -0
  157. package/dist/logical-ids-TEBCQJGO.js +2 -0
  158. package/dist/login-flow-PYAPYCPY.js +2 -0
  159. package/dist/maintenance-cmd-MVFA6H74.js +2 -0
  160. package/dist/next-TRSKMBO5.js +2 -0
  161. package/dist/paths-JCYX6UWL.js +2 -0
  162. package/dist/pdf-convert-OZIRUADA.js +2 -0
  163. package/dist/{persist-recorded-session-J6Z2SCTT.js → persist-recorded-session-DTYCLXTQ.js} +1 -1
  164. package/dist/phase-seed-DIRETNU6.js +2 -0
  165. package/dist/pipeline-MXFOD6ES.js +2 -0
  166. package/dist/readmodel-XOYGGQ3S.js +2 -0
  167. package/dist/reconcile-cmd-EG6BOU3A.js +2 -0
  168. package/dist/reconcile-deps-HTT6IPHT.js +4 -0
  169. package/dist/reconcile-engine-JQNXALNY.js +2 -0
  170. package/dist/{recording-banner-IRFMIZSJ.js → recording-banner-76GCIPUN.js} +1 -1
  171. package/dist/records-IOZTZUZV.js +2 -0
  172. package/dist/{require-project-folder-XSBJGIVF.js → require-project-folder-ACRDP5ZB.js} +1 -1
  173. package/dist/{resolver-IDCGRPFJ.js → resolver-SRPCFW7P.js} +1 -1
  174. package/dist/revert-NQ7GEVSE.js +2 -0
  175. package/dist/review-cmd-L3V5UP5T.js +4 -0
  176. package/dist/run-GMZCDRDD.js +2 -0
  177. package/dist/run-TFRWPGXP.js +2 -0
  178. package/dist/run-channel-RGH4WIQX.js +2 -0
  179. package/dist/{run-test-md-QCERS7FQ.js → run-test-md-KEHSRMCM.js} +2 -2
  180. package/dist/sessions-GIEXOCE4.js +2 -0
  181. package/dist/sessions-cmd-ZVYGSRJ3.js +25 -0
  182. package/dist/{skill-installer-WAVEVCSG.js → skill-installer-HBN3A35K.js} +1 -1
  183. package/dist/spawner-GC5CFAJ7.js +2 -0
  184. package/dist/structured-answers-A43Q25CZ.js +5 -0
  185. package/dist/tcg-generate-V7YFNC5O.js +2 -0
  186. package/dist/testmd-actions-MNDOO76O.js +2 -0
  187. package/dist/token-refresh-3UYMCYG3.js +2 -0
  188. package/dist/trust-gate-EX7R2P4Y.js +2 -0
  189. package/dist/{validate-basic-IJKKRQRU.js → validate-basic-ZGWPBYB6.js} +1 -1
  190. package/dist/verdicts-SCETLY5J.js +2 -0
  191. package/dist/{version-check-O5GYZYTP.js → version-check-CJWKDAXV.js} +1 -1
  192. package/dist/{view-cmd-GQBFCPDL.js → view-cmd-SOVM64L2.js} +1 -1
  193. package/dist/walk-session-YUYRULPY.js +2 -0
  194. package/dist/with-telemetry-E7QWPGL6.js +2 -0
  195. package/package.json +6 -6
  196. package/dist/ChatSurface-PMEOJBZG.js +0 -8
  197. package/dist/EvidenceViewOffer-EOKJE2B6.js +0 -2
  198. package/dist/SingleShotApp-T673X7BS.js +0 -2
  199. package/dist/TestMdRunView-SNYEO6CS.js +0 -2
  200. package/dist/bind-NSGW5BBZ.js +0 -6
  201. package/dist/bootstrap-RPT3JOGD.js +0 -2
  202. package/dist/bridge-BTSWCJ3B.js +0 -2
  203. package/dist/chat-committer-OS7ULZMH.js +0 -2
  204. package/dist/chat-controller-QLORQWJZ.js +0 -2
  205. package/dist/chunk-3C5GMAM4.js +0 -2
  206. package/dist/chunk-3CJIMPQK.js +0 -14
  207. package/dist/chunk-4XSW6WZD.js +0 -5
  208. package/dist/chunk-5YPBPZUR.js +0 -2
  209. package/dist/chunk-6W6AIDLJ.js +0 -4
  210. package/dist/chunk-7E24OCGX.js +0 -2
  211. package/dist/chunk-7YPK6EDR.js +0 -4
  212. package/dist/chunk-DGIPQINV.js +0 -12
  213. package/dist/chunk-EV3EHXEI.js +0 -4
  214. package/dist/chunk-F7WKDMX7.js +0 -47
  215. package/dist/chunk-FHKDTM5L.js +0 -6
  216. package/dist/chunk-FPFOW6BS.js +0 -2
  217. package/dist/chunk-FRBYGSGJ.js +0 -4
  218. package/dist/chunk-GG43HSU2.js +0 -3
  219. package/dist/chunk-J2KSZUOO.js +0 -4
  220. package/dist/chunk-J44RN3FB.js +0 -2
  221. package/dist/chunk-JSF5JYZC.js +0 -9
  222. package/dist/chunk-KHQHVSZ6.js +0 -5
  223. package/dist/chunk-MAO5BAQI.js +0 -347
  224. package/dist/chunk-N4LMQR7C.js +0 -6
  225. package/dist/chunk-QM4S2APK.js +0 -2
  226. package/dist/chunk-RCTM7NGT.js +0 -2
  227. package/dist/chunk-RN4OSVTG.js +0 -6
  228. package/dist/chunk-UXPQRALY.js +0 -13
  229. package/dist/chunk-V3UE6RJP.js +0 -2
  230. package/dist/chunk-VJFFMOUA.js +0 -2
  231. package/dist/chunk-VOHQA2SP.js +0 -2
  232. package/dist/chunk-WTXHOWUP.js +0 -3
  233. package/dist/chunk-Y5RNCJAN.js +0 -19
  234. package/dist/chunk-Z2JSEL3I.js +0 -4
  235. package/dist/cover-cmd-SV3I23UM.js +0 -2
  236. package/dist/descriptor-KXDJ4XYD.js +0 -2
  237. package/dist/docx-convert-ZBVQO2LG.js +0 -2
  238. package/dist/dossier-KJSJPWOW.js +0 -3
  239. package/dist/evidence-VDNZ3K23.js +0 -2
  240. package/dist/evolve-cmd-BLSVVW4I.js +0 -2
  241. package/dist/explain-EBVIUS2X.js +0 -2
  242. package/dist/extract-bind-3SWPBZX6.js +0 -8
  243. package/dist/extract-cmd-HEX7F4IS.js +0 -6
  244. package/dist/gaps-cmd-CKCHH3HQ.js +0 -2
  245. package/dist/ingest-FIIO67ZN.js +0 -2
  246. package/dist/ingest-cmd-KRPZVB7W.js +0 -7
  247. package/dist/interactive-bind-PTAZVCE7.js +0 -10
  248. package/dist/lifecycle-cmd-32LG364Q.js +0 -2
  249. package/dist/list-cmd-UTZ2PQUK.js +0 -3
  250. package/dist/logical-ids-I7B3VJEH.js +0 -2
  251. package/dist/login-flow-GX7CTVWN.js +0 -2
  252. package/dist/maintenance-cmd-BZAGSYGI.js +0 -2
  253. package/dist/pdf-convert-S7VYE6AV.js +0 -2
  254. package/dist/pipeline-HT7FCEXA.js +0 -2
  255. package/dist/readmodel-S5RAQH3F.js +0 -2
  256. package/dist/reconcile-cmd-2VHBKFA5.js +0 -2
  257. package/dist/revert-RQJE56HF.js +0 -2
  258. package/dist/review-cmd-7LXGYHHQ.js +0 -4
  259. package/dist/run-4LTYFTF2.js +0 -2
  260. package/dist/run-YGJZ2SXX.js +0 -2
  261. package/dist/sessions-cmd-DTQYDZNT.js +0 -23
  262. package/dist/spawner-YNYB4Z7K.js +0 -2
  263. package/dist/tcg-generate-D35EMRMQ.js +0 -2
  264. package/dist/testmd-actions-NB5Z6QJ3.js +0 -2
  265. package/dist/token-refresh-OY3WLAKD.js +0 -2
  266. package/dist/walk-session-OPAEV4WR.js +0 -2
  267. /package/dist/{chunk-BC7UVJJB.js → chunk-CH273NAE.js} +0 -0
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as ye,c as de,e as Pt}from"./chunk-UR6MHSHU.js";var rt=de((Wi,Rt)=>{"use strict";var Yr=ye("util"),Bt=ye("stream"),Ie=Rt.exports=function(){Bt.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};Yr.inherits(Ie,Bt);Ie.prototype.read=function(e,t){this._reads.push({length:Math.abs(e),allowLess:e<0,func:t}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit("drain"))}.bind(this))};Ie.prototype.write=function(e,t){if(!this.writable)return this.emit("error",new Error("Stream not writable")),!1;let r;return Buffer.isBuffer(e)?r=e:r=Buffer.from(e,t||this._encoding),this._buffers.push(r),this._buffered+=r.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused};Ie.prototype.end=function(e,t){e&&this.write(e,t),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))};Ie.prototype.destroySoon=Ie.prototype.end;Ie.prototype._end=function(){this._reads.length>0&&this.emit("error",new Error("Unexpected end of input")),this.destroy()};Ie.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit("close"))};Ie.prototype._processReadAllowingLess=function(e){this._reads.shift();let t=this._buffers[0];t.length>e.length?(this._buffered-=e.length,this._buffers[0]=t.slice(e.length),e.func.call(this,t.slice(0,e.length))):(this._buffered-=t.length,this._buffers.shift(),e.func.call(this,t))};Ie.prototype._processRead=function(e){this._reads.shift();let t=0,r=0,i=Buffer.alloc(e.length);for(;t<e.length;){let a=this._buffers[r++],n=Math.min(a.length,e.length-t);a.copy(i,t,0,n),t+=n,n!==a.length&&(this._buffers[--r]=a.slice(n))}r>0&&this._buffers.splice(0,r),this._buffered-=e.length,e.func.call(this,i)};Ie.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let e=this._reads[0];if(e.allowLess)this._processReadAllowingLess(e);else if(this._buffered>=e.length)this._processRead(e);else break}this._buffers&&!this.writable&&this._end()}catch(e){this.emit("error",e)}}});var nt=de(it=>{"use strict";var Pe=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];it.getImagePasses=function(e,t){let r=[],i=e%8,a=t%8,n=(e-i)/8,s=(t-a)/8;for(let h=0;h<Pe.length;h++){let c=Pe[h],d=n*c.x.length,g=s*c.y.length;for(let y=0;y<c.x.length&&c.x[y]<i;y++)d++;for(let y=0;y<c.y.length&&c.y[y]<a;y++)g++;d>0&&g>0&&r.push({width:d,height:g,index:h})}return r};it.getInterlaceIterator=function(e){return function(t,r,i){let a=t%Pe[i].x.length,n=(t-a)/Pe[i].x.length*8+Pe[i].x[a],s=r%Pe[i].y.length,h=(r-s)/Pe[i].y.length*8+Pe[i].y[s];return n*4+h*e*4}}});var at=de((Zi,Mt)=>{"use strict";Mt.exports=function(t,r,i){let a=t+r-i,n=Math.abs(a-t),s=Math.abs(a-r),h=Math.abs(a-i);return n<=s&&n<=h?t:s<=h?r:i}});var st=de((Ji,Ut)=>{"use strict";var Hr=nt(),Dr=at();function St(e,t,r){let i=e*t;return r!==8&&(i=Math.ceil(i/(8/r))),i}var Ye=Ut.exports=function(e,t){let r=e.width,i=e.height,a=e.interlace,n=e.bpp,s=e.depth;if(this.read=t.read,this.write=t.write,this.complete=t.complete,this._imageIndex=0,this._images=[],a){let h=Hr.getImagePasses(r,i);for(let c=0;c<h.length;c++)this._images.push({byteWidth:St(h[c].width,n,s),height:h[c].height,lineIndex:0})}else this._images.push({byteWidth:St(r,n,s),height:i,lineIndex:0});s===8?this._xComparison=n:s===16?this._xComparison=n*2:this._xComparison=1};Ye.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};Ye.prototype._unFilterType1=function(e,t,r){let i=this._xComparison,a=i-1;for(let n=0;n<r;n++){let s=e[1+n],h=n>a?t[n-i]:0;t[n]=s+h}};Ye.prototype._unFilterType2=function(e,t,r){let i=this._lastLine;for(let a=0;a<r;a++){let n=e[1+a],s=i?i[a]:0;t[a]=n+s}};Ye.prototype._unFilterType3=function(e,t,r){let i=this._xComparison,a=i-1,n=this._lastLine;for(let s=0;s<r;s++){let h=e[1+s],c=n?n[s]:0,d=s>a?t[s-i]:0,g=Math.floor((d+c)/2);t[s]=h+g}};Ye.prototype._unFilterType4=function(e,t,r){let i=this._xComparison,a=i-1,n=this._lastLine;for(let s=0;s<r;s++){let h=e[1+s],c=n?n[s]:0,d=s>a?t[s-i]:0,g=s>a&&n?n[s-i]:0,y=Dr(d,c,g);t[s]=h+y}};Ye.prototype._reverseFilterLine=function(e){let t=e[0],r,i=this._images[this._imageIndex],a=i.byteWidth;if(t===0)r=e.slice(1,a+1);else switch(r=Buffer.alloc(a),t){case 1:this._unFilterType1(e,r,a);break;case 2:this._unFilterType2(e,r,a);break;case 3:this._unFilterType3(e,r,a);break;case 4:this._unFilterType4(e,r,a);break;default:throw new Error("Unrecognised filter type - "+t)}this.write(r),i.lineIndex++,i.lineIndex>=i.height?(this._lastLine=null,this._imageIndex++,i=this._images[this._imageIndex]):this._lastLine=r,i?this.read(i.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}});var Dt=de((Ki,Ht)=>{"use strict";var qr=ye("util"),Yt=rt(),Nr=st(),Gr=Ht.exports=function(e){Yt.call(this);let t=[],r=this;this._filter=new Nr(e,{read:this.read.bind(this),write:function(i){t.push(i)},complete:function(){r.emit("complete",Buffer.concat(t))}}),this._filter.start()};qr.inherits(Gr,Yt)});var He=de(($i,qt)=>{"use strict";qt.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var ht=de((zi,Nt)=>{"use strict";var lt=[];(function(){for(let e=0;e<256;e++){let t=e;for(let r=0;r<8;r++)t&1?t=3988292384^t>>>1:t=t>>>1;lt[e]=t}})();var ot=Nt.exports=function(){this._crc=-1};ot.prototype.write=function(e){for(let t=0;t<e.length;t++)this._crc=lt[(this._crc^e[t])&255]^this._crc>>>8;return!0};ot.prototype.crc32=function(){return this._crc^-1};ot.crc32=function(e){let t=-1;for(let r=0;r<e.length;r++)t=lt[(t^e[r])&255]^t>>>8;return t^-1}});var ft=de((en,Gt)=>{"use strict";var me=He(),Vr=ht(),we=Gt.exports=function(e,t){this._options=e,e.checkCRC=e.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[me.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[me.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[me.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[me.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[me.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[me.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=t.read,this.error=t.error,this.metadata=t.metadata,this.gamma=t.gamma,this.transColor=t.transColor,this.palette=t.palette,this.parsed=t.parsed,this.inflateData=t.inflateData,this.finished=t.finished,this.simpleTransparency=t.simpleTransparency,this.headersFinished=t.headersFinished||function(){}};we.prototype.start=function(){this.read(me.PNG_SIGNATURE.length,this._parseSignature.bind(this))};we.prototype._parseSignature=function(e){let t=me.PNG_SIGNATURE;for(let r=0;r<t.length;r++)if(e[r]!==t[r]){this.error(new Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};we.prototype._parseChunkBegin=function(e){let t=e.readUInt32BE(0),r=e.readUInt32BE(4),i="";for(let n=4;n<8;n++)i+=String.fromCharCode(e[n]);let a=!!(e[4]&32);if(!this._hasIHDR&&r!==me.TYPE_IHDR){this.error(new Error("Expected IHDR on beggining"));return}if(this._crc=new Vr,this._crc.write(Buffer.from(i)),this._chunks[r])return this._chunks[r](t);if(!a){this.error(new Error("Unsupported critical chunk type "+i));return}this.read(t+4,this._skipChunk.bind(this))};we.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};we.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};we.prototype._parseChunkEnd=function(e){let t=e.readInt32BE(0),r=this._crc.crc32();if(this._options.checkCRC&&r!==t){this.error(new Error("Crc error - "+t+" - "+r));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))};we.prototype._handleIHDR=function(e){this.read(e,this._parseIHDR.bind(this))};we.prototype._parseIHDR=function(e){this._crc.write(e);let t=e.readUInt32BE(0),r=e.readUInt32BE(4),i=e[8],a=e[9],n=e[10],s=e[11],h=e[12];if(i!==8&&i!==4&&i!==2&&i!==1&&i!==16){this.error(new Error("Unsupported bit depth "+i));return}if(!(a in me.COLORTYPE_TO_BPP_MAP)){this.error(new Error("Unsupported color type"));return}if(n!==0){this.error(new Error("Unsupported compression method"));return}if(s!==0){this.error(new Error("Unsupported filter method"));return}if(h!==0&&h!==1){this.error(new Error("Unsupported interlace method"));return}this._colorType=a;let c=me.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:t,height:r,depth:i,interlace:!!h,palette:!!(a&me.COLORTYPE_PALETTE),color:!!(a&me.COLORTYPE_COLOR),alpha:!!(a&me.COLORTYPE_ALPHA),bpp:c,colorType:a}),this._handleChunkEnd()};we.prototype._handlePLTE=function(e){this.read(e,this._parsePLTE.bind(this))};we.prototype._parsePLTE=function(e){this._crc.write(e);let t=Math.floor(e.length/3);for(let r=0;r<t;r++)this._palette.push([e[r*3],e[r*3+1],e[r*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};we.prototype._handleTRNS=function(e){this.simpleTransparency(),this.read(e,this._parseTRNS.bind(this))};we.prototype._parseTRNS=function(e){if(this._crc.write(e),this._colorType===me.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(new Error("Transparency chunk must be after palette"));return}if(e.length>this._palette.length){this.error(new Error("More transparent colors than palette size"));return}for(let t=0;t<e.length;t++)this._palette[t][3]=e[t];this.palette(this._palette)}this._colorType===me.COLORTYPE_GRAYSCALE&&this.transColor([e.readUInt16BE(0)]),this._colorType===me.COLORTYPE_COLOR&&this.transColor([e.readUInt16BE(0),e.readUInt16BE(2),e.readUInt16BE(4)]),this._handleChunkEnd()};we.prototype._handleGAMA=function(e){this.read(e,this._parseGAMA.bind(this))};we.prototype._parseGAMA=function(e){this._crc.write(e),this.gamma(e.readUInt32BE(0)/me.GAMMA_DIVISION),this._handleChunkEnd()};we.prototype._handleIDAT=function(e){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-e,this._parseIDAT.bind(this,e))};we.prototype._parseIDAT=function(e,t){if(this._crc.write(t),this._colorType===me.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw new Error("Expected palette not found");this.inflateData(t);let r=e-t.length;r>0?this._handleIDAT(r):this._handleChunkEnd()};we.prototype._handleIEND=function(e){this.read(e,this._parseIEND.bind(this))};we.prototype._parseIEND=function(e){this._crc.write(e),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}});var ut=de(Xt=>{"use strict";var Vt=nt(),Xr=[function(){},function(e,t,r,i){if(i===t.length)throw new Error("Ran out of data");let a=t[i];e[r]=a,e[r+1]=a,e[r+2]=a,e[r+3]=255},function(e,t,r,i){if(i+1>=t.length)throw new Error("Ran out of data");let a=t[i];e[r]=a,e[r+1]=a,e[r+2]=a,e[r+3]=t[i+1]},function(e,t,r,i){if(i+2>=t.length)throw new Error("Ran out of data");e[r]=t[i],e[r+1]=t[i+1],e[r+2]=t[i+2],e[r+3]=255},function(e,t,r,i){if(i+3>=t.length)throw new Error("Ran out of data");e[r]=t[i],e[r+1]=t[i+1],e[r+2]=t[i+2],e[r+3]=t[i+3]}],jr=[function(){},function(e,t,r,i){let a=t[0];e[r]=a,e[r+1]=a,e[r+2]=a,e[r+3]=i},function(e,t,r){let i=t[0];e[r]=i,e[r+1]=i,e[r+2]=i,e[r+3]=t[1]},function(e,t,r,i){e[r]=t[0],e[r+1]=t[1],e[r+2]=t[2],e[r+3]=i},function(e,t,r){e[r]=t[0],e[r+1]=t[1],e[r+2]=t[2],e[r+3]=t[3]}];function Wr(e,t){let r=[],i=0;function a(){if(i===e.length)throw new Error("Ran out of data");let n=e[i];i++;let s,h,c,d,g,y,C,$;switch(t){default:throw new Error("unrecognised depth");case 16:C=e[i],i++,r.push((n<<8)+C);break;case 4:C=n&15,$=n>>4,r.push($,C);break;case 2:g=n&3,y=n>>2&3,C=n>>4&3,$=n>>6&3,r.push($,C,y,g);break;case 1:s=n&1,h=n>>1&1,c=n>>2&1,d=n>>3&1,g=n>>4&1,y=n>>5&1,C=n>>6&1,$=n>>7&1,r.push($,C,y,g,d,c,h,s);break}}return{get:function(n){for(;r.length<n;)a();let s=r.slice(0,n);return r=r.slice(n),s},resetAfterLine:function(){r.length=0},end:function(){if(i!==e.length)throw new Error("extra data found")}}}function Qr(e,t,r,i,a,n){let s=e.width,h=e.height,c=e.index;for(let d=0;d<h;d++)for(let g=0;g<s;g++){let y=r(g,d,c);Xr[i](t,a,y,n),n+=i}return n}function Zr(e,t,r,i,a,n){let s=e.width,h=e.height,c=e.index;for(let d=0;d<h;d++){for(let g=0;g<s;g++){let y=a.get(i),C=r(g,d,c);jr[i](t,y,C,n)}a.resetAfterLine()}}Xt.dataToBitMap=function(e,t){let r=t.width,i=t.height,a=t.depth,n=t.bpp,s=t.interlace,h;a!==8&&(h=Wr(e,a));let c;a<=8?c=Buffer.alloc(r*i*4):c=new Uint16Array(r*i*4);let d=Math.pow(2,a)-1,g=0,y,C;if(s)y=Vt.getImagePasses(r,i),C=Vt.getInterlaceIterator(r,i);else{let $=0;C=function(){let S=$;return $+=4,S},y=[{width:r,height:i}]}for(let $=0;$<y.length;$++)a===8?g=Qr(y[$],c,C,n,e,g):Zr(y[$],c,C,n,h,d);if(a===8){if(g!==e.length)throw new Error("extra data found")}else h.end();return c}});var ct=de((rn,jt)=>{"use strict";function Jr(e,t,r,i,a){let n=0;for(let s=0;s<i;s++)for(let h=0;h<r;h++){let c=a[e[n]];if(!c)throw new Error("index "+e[n]+" not in palette");for(let d=0;d<4;d++)t[n+d]=c[d];n+=4}}function Kr(e,t,r,i,a){let n=0;for(let s=0;s<i;s++)for(let h=0;h<r;h++){let c=!1;if(a.length===1?a[0]===e[n]&&(c=!0):a[0]===e[n]&&a[1]===e[n+1]&&a[2]===e[n+2]&&(c=!0),c)for(let d=0;d<4;d++)t[n+d]=0;n+=4}}function $r(e,t,r,i,a){let n=255,s=Math.pow(2,a)-1,h=0;for(let c=0;c<i;c++)for(let d=0;d<r;d++){for(let g=0;g<4;g++)t[h+g]=Math.floor(e[h+g]*n/s+.5);h+=4}}jt.exports=function(e,t,r=!1){let i=t.depth,a=t.width,n=t.height,s=t.colorType,h=t.transColor,c=t.palette,d=e;return s===3?Jr(e,d,a,n,c):(h&&Kr(e,d,a,n,h),i!==8&&!r&&(i===16&&(d=Buffer.alloc(a*n*4)),$r(e,d,a,n,i))),d}});var Zt=de((nn,Qt)=>{"use strict";var zr=ye("util"),dt=ye("zlib"),Wt=rt(),ei=Dt(),ti=ft(),ri=ut(),ii=ct(),Oe=Qt.exports=function(e){Wt.call(this),this._parser=new ti(e,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=e,this.writable=!0,this._parser.start()};zr.inherits(Oe,Wt);Oe.prototype._handleError=function(e){this.emit("error",e),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on("error",function(){})),this.errord=!0};Oe.prototype._inflateData=function(e){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=dt.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let r=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,i=Math.max(r,dt.Z_MIN_CHUNK);this._inflate=dt.createInflate({chunkSize:i});let a=r,n=this.emit.bind(this,"error");this._inflate.on("error",function(h){a&&n(h)}),this._filter.on("complete",this._complete.bind(this));let s=this._filter.write.bind(this._filter);this._inflate.on("data",function(h){a&&(h.length>a&&(h=h.slice(0,a)),a-=h.length,s(h))}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(e)};Oe.prototype._handleMetaData=function(e){this._metaData=e,this._bitmapInfo=Object.create(e),this._filter=new ei(this._bitmapInfo)};Oe.prototype._handleTransColor=function(e){this._bitmapInfo.transColor=e};Oe.prototype._handlePalette=function(e){this._bitmapInfo.palette=e};Oe.prototype._simpleTransparency=function(){this._metaData.alpha=!0};Oe.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};Oe.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit("error","No Inflate block"))};Oe.prototype._complete=function(e){if(this.errord)return;let t;try{let r=ri.dataToBitMap(e,this._bitmapInfo);t=ii(r,this._bitmapInfo,this._options.skipRescale),r=null}catch(r){this._handleError(r);return}this.emit("parsed",t)}});var Kt=de((an,Jt)=>{"use strict";var ke=He();Jt.exports=function(e,t,r,i){let a=[ke.COLORTYPE_COLOR_ALPHA,ke.COLORTYPE_ALPHA].indexOf(i.colorType)!==-1;if(i.colorType===i.inputColorType){let S=(function(){let z=new ArrayBuffer(2);return new DataView(z).setInt16(0,256,!0),new Int16Array(z)[0]!==256})();if(i.bitDepth===8||i.bitDepth===16&&S)return e}let n=i.bitDepth!==16?e:new Uint16Array(e.buffer),s=255,h=ke.COLORTYPE_TO_BPP_MAP[i.inputColorType];h===4&&!i.inputHasAlpha&&(h=3);let c=ke.COLORTYPE_TO_BPP_MAP[i.colorType];i.bitDepth===16&&(s=65535,c*=2);let d=Buffer.alloc(t*r*c),g=0,y=0,C=i.bgColor||{};C.red===void 0&&(C.red=s),C.green===void 0&&(C.green=s),C.blue===void 0&&(C.blue=s);function $(){let S,z,P,G=s;switch(i.inputColorType){case ke.COLORTYPE_COLOR_ALPHA:G=n[g+3],S=n[g],z=n[g+1],P=n[g+2];break;case ke.COLORTYPE_COLOR:S=n[g],z=n[g+1],P=n[g+2];break;case ke.COLORTYPE_ALPHA:G=n[g+1],S=n[g],z=S,P=S;break;case ke.COLORTYPE_GRAYSCALE:S=n[g],z=S,P=S;break;default:throw new Error("input color type:"+i.inputColorType+" is not supported at present")}return i.inputHasAlpha&&(a||(G/=s,S=Math.min(Math.max(Math.round((1-G)*C.red+G*S),0),s),z=Math.min(Math.max(Math.round((1-G)*C.green+G*z),0),s),P=Math.min(Math.max(Math.round((1-G)*C.blue+G*P),0),s))),{red:S,green:z,blue:P,alpha:G}}for(let S=0;S<r;S++)for(let z=0;z<t;z++){let P=$(n,g);switch(i.colorType){case ke.COLORTYPE_COLOR_ALPHA:case ke.COLORTYPE_COLOR:i.bitDepth===8?(d[y]=P.red,d[y+1]=P.green,d[y+2]=P.blue,a&&(d[y+3]=P.alpha)):(d.writeUInt16BE(P.red,y),d.writeUInt16BE(P.green,y+2),d.writeUInt16BE(P.blue,y+4),a&&d.writeUInt16BE(P.alpha,y+6));break;case ke.COLORTYPE_ALPHA:case ke.COLORTYPE_GRAYSCALE:{let G=(P.red+P.green+P.blue)/3;i.bitDepth===8?(d[y]=G,a&&(d[y+1]=P.alpha)):(d.writeUInt16BE(G,y),a&&d.writeUInt16BE(P.alpha,y+2));break}default:throw new Error("unrecognised color Type "+i.colorType)}g+=h,y+=c}return d}});var er=de((sn,zt)=>{"use strict";var $t=at();function ni(e,t,r,i,a){for(let n=0;n<r;n++)i[a+n]=e[t+n]}function ai(e,t,r){let i=0,a=t+r;for(let n=t;n<a;n++)i+=Math.abs(e[n]);return i}function si(e,t,r,i,a,n){for(let s=0;s<r;s++){let h=s>=n?e[t+s-n]:0,c=e[t+s]-h;i[a+s]=c}}function li(e,t,r,i){let a=0;for(let n=0;n<r;n++){let s=n>=i?e[t+n-i]:0,h=e[t+n]-s;a+=Math.abs(h)}return a}function oi(e,t,r,i,a){for(let n=0;n<r;n++){let s=t>0?e[t+n-r]:0,h=e[t+n]-s;i[a+n]=h}}function hi(e,t,r){let i=0,a=t+r;for(let n=t;n<a;n++){let s=t>0?e[n-r]:0,h=e[n]-s;i+=Math.abs(h)}return i}function fi(e,t,r,i,a,n){for(let s=0;s<r;s++){let h=s>=n?e[t+s-n]:0,c=t>0?e[t+s-r]:0,d=e[t+s]-(h+c>>1);i[a+s]=d}}function ui(e,t,r,i){let a=0;for(let n=0;n<r;n++){let s=n>=i?e[t+n-i]:0,h=t>0?e[t+n-r]:0,c=e[t+n]-(s+h>>1);a+=Math.abs(c)}return a}function ci(e,t,r,i,a,n){for(let s=0;s<r;s++){let h=s>=n?e[t+s-n]:0,c=t>0?e[t+s-r]:0,d=t>0&&s>=n?e[t+s-(r+n)]:0,g=e[t+s]-$t(h,c,d);i[a+s]=g}}function di(e,t,r,i){let a=0;for(let n=0;n<r;n++){let s=n>=i?e[t+n-i]:0,h=t>0?e[t+n-r]:0,c=t>0&&n>=i?e[t+n-(r+i)]:0,d=e[t+n]-$t(s,h,c);a+=Math.abs(d)}return a}var xi={0:ni,1:si,2:oi,3:fi,4:ci},_i={0:ai,1:li,2:hi,3:ui,4:di};zt.exports=function(e,t,r,i,a){let n;if(!("filterType"in i)||i.filterType===-1)n=[0,1,2,3,4];else if(typeof i.filterType=="number")n=[i.filterType];else throw new Error("unrecognised filter types");i.bitDepth===16&&(a*=2);let s=t*a,h=0,c=0,d=Buffer.alloc((s+1)*r),g=n[0];for(let y=0;y<r;y++){if(n.length>1){let C=1/0;for(let $=0;$<n.length;$++){let S=_i[n[$]](e,c,s,a);S<C&&(g=n[$],C=S)}}d[h]=g,h++,xi[g](e,c,s,d,h,a),h+=s,c+=s}return d}});var xt=de((ln,tr)=>{"use strict";var Ee=He(),pi=ht(),vi=Kt(),gi=er(),mi=ye("zlib"),Be=tr.exports=function(e){if(this._options=e,e.deflateChunkSize=e.deflateChunkSize||32*1024,e.deflateLevel=e.deflateLevel!=null?e.deflateLevel:9,e.deflateStrategy=e.deflateStrategy!=null?e.deflateStrategy:3,e.inputHasAlpha=e.inputHasAlpha!=null?e.inputHasAlpha:!0,e.deflateFactory=e.deflateFactory||mi.createDeflate,e.bitDepth=e.bitDepth||8,e.colorType=typeof e.colorType=="number"?e.colorType:Ee.COLORTYPE_COLOR_ALPHA,e.inputColorType=typeof e.inputColorType=="number"?e.inputColorType:Ee.COLORTYPE_COLOR_ALPHA,[Ee.COLORTYPE_GRAYSCALE,Ee.COLORTYPE_COLOR,Ee.COLORTYPE_COLOR_ALPHA,Ee.COLORTYPE_ALPHA].indexOf(e.colorType)===-1)throw new Error("option color type:"+e.colorType+" is not supported at present");if([Ee.COLORTYPE_GRAYSCALE,Ee.COLORTYPE_COLOR,Ee.COLORTYPE_COLOR_ALPHA,Ee.COLORTYPE_ALPHA].indexOf(e.inputColorType)===-1)throw new Error("option input color type:"+e.inputColorType+" is not supported at present");if(e.bitDepth!==8&&e.bitDepth!==16)throw new Error("option bit depth:"+e.bitDepth+" is not supported at present")};Be.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Be.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Be.prototype.filterData=function(e,t,r){let i=vi(e,t,r,this._options),a=Ee.COLORTYPE_TO_BPP_MAP[this._options.colorType];return gi(i,t,r,this._options,a)};Be.prototype._packChunk=function(e,t){let r=t?t.length:0,i=Buffer.alloc(r+12);return i.writeUInt32BE(r,0),i.writeUInt32BE(e,4),t&&t.copy(i,8),i.writeInt32BE(pi.crc32(i.slice(4,i.length-4)),i.length-4),i};Be.prototype.packGAMA=function(e){let t=Buffer.alloc(4);return t.writeUInt32BE(Math.floor(e*Ee.GAMMA_DIVISION),0),this._packChunk(Ee.TYPE_gAMA,t)};Be.prototype.packIHDR=function(e,t){let r=Buffer.alloc(13);return r.writeUInt32BE(e,0),r.writeUInt32BE(t,4),r[8]=this._options.bitDepth,r[9]=this._options.colorType,r[10]=0,r[11]=0,r[12]=0,this._packChunk(Ee.TYPE_IHDR,r)};Be.prototype.packIDAT=function(e){return this._packChunk(Ee.TYPE_IDAT,e)};Be.prototype.packIEND=function(){return this._packChunk(Ee.TYPE_IEND,null)}});var ar=de((on,nr)=>{"use strict";var wi=ye("util"),rr=ye("stream"),bi=He(),yi=xt(),ir=nr.exports=function(e){rr.call(this);let t=e||{};this._packer=new yi(t),this._deflate=this._packer.createDeflate(),this.readable=!0};wi.inherits(ir,rr);ir.prototype.pack=function(e,t,r,i){this.emit("data",Buffer.from(bi.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(t,r)),i&&this.emit("data",this._packer.packGAMA(i));let a=this._packer.filterData(e,t,r);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(n){this.emit("data",this._packer.packIDAT(n))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(a)}});var ur=de((Qe,fr)=>{"use strict";var sr=ye("assert").ok,De=ye("zlib"),Ei=ye("util"),lr=ye("buffer").kMaxLength;function Me(e){if(!(this instanceof Me))return new Me(e);e&&e.chunkSize<De.Z_MIN_CHUNK&&(e.chunkSize=De.Z_MIN_CHUNK),De.Inflate.call(this,e),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,e&&e.maxLength!=null&&(this._maxLength=e.maxLength)}function Ti(e){return new Me(e)}function or(e,t){t&&process.nextTick(t),e._handle&&(e._handle.close(),e._handle=null)}Me.prototype._processChunk=function(e,t,r){if(typeof r=="function")return De.Inflate._processChunk.call(this,e,t,r);let i=this,a=e&&e.length,n=this._chunkSize-this._offset,s=this._maxLength,h=0,c=[],d=0,g;this.on("error",function(S){g=S});function y(S,z){if(i._hadError)return;let P=n-z;if(sr(P>=0,"have should not go down"),P>0){let G=i._buffer.slice(i._offset,i._offset+P);if(i._offset+=P,G.length>s&&(G=G.slice(0,s)),c.push(G),d+=G.length,s-=G.length,s===0)return!1}return(z===0||i._offset>=i._chunkSize)&&(n=i._chunkSize,i._offset=0,i._buffer=Buffer.allocUnsafe(i._chunkSize)),z===0?(h+=a-S,a=S,!0):!1}sr(this._handle,"zlib binding closed");let C;do C=this._handle.writeSync(t,e,h,a,this._buffer,this._offset,n),C=C||this._writeState;while(!this._hadError&&y(C[0],C[1]));if(this._hadError)throw g;if(d>=lr)throw or(this),new RangeError("Cannot create final Buffer. It would be larger than 0x"+lr.toString(16)+" bytes");let $=Buffer.concat(c,d);return or(this),$};Ei.inherits(Me,De.Inflate);function Ci(e,t){if(typeof t=="string"&&(t=Buffer.from(t)),!(t instanceof Buffer))throw new TypeError("Not a string or buffer");let r=e._finishFlushFlag;return r==null&&(r=De.Z_FINISH),e._processChunk(t,r)}function hr(e,t){return Ci(new Me(t),e)}fr.exports=Qe=hr;Qe.Inflate=Me;Qe.createInflate=Ti;Qe.inflateSync=hr});var _t=de((hn,dr)=>{"use strict";var cr=dr.exports=function(e){this._buffer=e,this._reads=[]};cr.prototype.read=function(e,t){this._reads.push({length:Math.abs(e),allowLess:e<0,func:t})};cr.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let e=this._reads[0];if(this._buffer.length&&(this._buffer.length>=e.length||e.allowLess)){this._reads.shift();let t=this._buffer;this._buffer=t.slice(e.length),e.func.call(this,t.slice(0,e.length))}else break}if(this._reads.length>0)throw new Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)throw new Error("unrecognised content at end of stream")}});var _r=de(xr=>{"use strict";var Ai=_t(),ki=st();xr.process=function(e,t){let r=[],i=new Ai(e);return new ki(t,{read:i.read.bind(i),write:function(n){r.push(n)},complete:function(){}}).start(),i.process(),Buffer.concat(r)}});var mr=de((un,gr)=>{"use strict";var pr=!0,vr=ye("zlib"),Fi=ur();vr.deflateSync||(pr=!1);var Ii=_t(),Li=_r(),Oi=ft(),Pi=ut(),Bi=ct();gr.exports=function(e,t){if(!pr)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let r;function i(w){r=w}let a;function n(w){a=w}function s(w){a.transColor=w}function h(w){a.palette=w}function c(){a.alpha=!0}let d;function g(w){d=w}let y=[];function C(w){y.push(w)}let $=new Ii(e);if(new Oi(t,{read:$.read.bind($),error:i,metadata:n,gamma:g,palette:h,transColor:s,inflateData:C,simpleTransparency:c}).start(),$.process(),r)throw r;let z=Buffer.concat(y);y.length=0;let P;if(a.interlace)P=vr.inflateSync(z);else{let f=((a.width*a.bpp*a.depth+7>>3)+1)*a.height;P=Fi(z,{chunkSize:f,maxLength:f})}if(z=null,!P||!P.length)throw new Error("bad png - invalid inflate data response");let G=Li.process(P,a);z=null;let Q=Pi.dataToBitMap(G,a);G=null;let p=Bi(Q,a,t.skipRescale);return a.data=p,a.gamma=d||0,a}});var Er=de((cn,yr)=>{"use strict";var wr=!0,br=ye("zlib");br.deflateSync||(wr=!1);var Ri=He(),Mi=xt();yr.exports=function(e,t){if(!wr)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let r=t||{},i=new Mi(r),a=[];a.push(Buffer.from(Ri.PNG_SIGNATURE)),a.push(i.packIHDR(e.width,e.height)),e.gamma&&a.push(i.packGAMA(e.gamma));let n=i.filterData(e.data,e.width,e.height),s=br.deflateSync(n,i.getDeflateOptions());if(n=null,!s||!s.length)throw new Error("bad png - invalid compressed data response");return a.push(i.packIDAT(s)),a.push(i.packIEND()),Buffer.concat(a)}});var Tr=de(pt=>{"use strict";var Si=mr(),Ui=Er();pt.read=function(e,t){return Si(e,t||{})};pt.write=function(e,t){return Ui(e,t)}});var kr=de(Ar=>{"use strict";var Yi=ye("util"),Cr=ye("stream"),Hi=Zt(),Di=ar(),qi=Tr(),Te=Ar.PNG=function(e){Cr.call(this),e=e||{},this.width=e.width|0,this.height=e.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,e.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new Hi(e),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(t){this.data=t,this.emit("parsed",t)}.bind(this)),this._packer=new Di(e),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};Yi.inherits(Te,Cr);Te.sync=qi;Te.prototype.pack=function(){return!this.data||!this.data.length?(this.emit("error","No data provided"),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)};Te.prototype.parse=function(e,t){if(t){let r,i;r=function(a){this.removeListener("error",i),this.data=a,t(null,this)}.bind(this),i=function(a){this.removeListener("parsed",r),t(a,null)}.bind(this),this.once("parsed",r),this.once("error",i)}return this.end(e),this};Te.prototype.write=function(e){return this._parser.write(e),!0};Te.prototype.end=function(e){this._parser.end(e)};Te.prototype._metadata=function(e){this.width=e.width,this.height=e.height,this.emit("metadata",e)};Te.prototype._gamma=function(e){this.gamma=e};Te.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit("close")};Te.bitblt=function(e,t,r,i,a,n,s,h){if(r|=0,i|=0,a|=0,n|=0,s|=0,h|=0,r>e.width||i>e.height||r+a>e.width||i+n>e.height)throw new Error("bitblt reading outside image");if(s>t.width||h>t.height||s+a>t.width||h+n>t.height)throw new Error("bitblt writing outside image");for(let c=0;c<n;c++)e.data.copy(t.data,(h+c)*t.width+s<<2,(i+c)*e.width+r<<2,(i+c)*e.width+r+a<<2)};Te.prototype.bitblt=function(e,t,r,i,a,n,s){return Te.bitblt(this,e,t,r,i,a,n,s),this};Te.adjustGamma=function(e){if(e.gamma){for(let t=0;t<e.height;t++)for(let r=0;r<e.width;r++){let i=e.width*t+r<<2;for(let a=0;a<3;a++){let n=e.data[i+a]/255;n=Math.pow(n,1/2.2/e.gamma),e.data[i+a]=Math.round(n*255)}}e.gamma=0}};Te.prototype.adjustGamma=function(){Te.adjustGamma(this)}});var Lr=de((_n,ze)=>{"use strict";var Ir=Ir||function(e){return Buffer.from(e).toString("base64")};function Ni(e){var t=this,r=Math.round,i=Math.floor,a=new Array(64),n=new Array(64),s=new Array(64),h=new Array(64),c,d,g,y,C=new Array(65535),$=new Array(65535),S=new Array(64),z=new Array(64),P=[],G=0,Q=7,p=new Array(64),w=new Array(64),f=new Array(64),ee=new Array(256),x=new Array(2048),H,A=[0,1,5,6,14,15,27,28,2,4,7,13,16,26,29,42,3,8,12,17,25,30,41,43,9,11,18,24,31,40,44,53,10,19,23,32,39,45,52,54,20,22,33,38,46,51,55,60,21,34,37,47,50,56,59,61,35,36,48,49,57,58,62,63],R=[0,0,1,5,1,1,1,1,1,1,0,0,0,0,0,0,0],V=[0,1,2,3,4,5,6,7,8,9,10,11],ae=[0,0,2,1,3,3,2,4,3,5,5,4,4,0,0,1,125],k=[1,2,3,0,4,17,5,18,33,49,65,6,19,81,97,7,34,113,20,50,129,145,161,8,35,66,177,193,21,82,209,240,36,51,98,114,130,9,10,22,23,24,25,26,37,38,39,40,41,42,52,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,225,226,227,228,229,230,231,232,233,234,241,242,243,244,245,246,247,248,249,250],ve=[0,0,3,1,1,1,1,1,1,1,1,1,0,0,0,0,0],F=[0,1,2,3,4,5,6,7,8,9,10,11],X=[0,0,2,1,2,4,4,3,4,7,5,4,4,0,1,2,119],xe=[0,1,2,3,17,4,5,33,49,6,18,65,81,7,97,113,19,34,50,129,8,20,66,145,161,177,193,9,35,51,82,240,21,98,114,209,10,22,36,52,225,37,241,23,24,25,26,38,39,40,41,42,53,54,55,56,57,58,67,68,69,70,71,72,73,74,83,84,85,86,87,88,89,90,99,100,101,102,103,104,105,106,115,116,117,118,119,120,121,122,130,131,132,133,134,135,136,137,138,146,147,148,149,150,151,152,153,154,162,163,164,165,166,167,168,169,170,178,179,180,181,182,183,184,185,186,194,195,196,197,198,199,200,201,202,210,211,212,213,214,215,216,217,218,226,227,228,229,230,231,232,233,234,242,243,244,245,246,247,248,249,250];function he(l){for(var b=[16,11,10,16,24,40,51,61,12,12,14,19,26,58,60,55,14,13,16,24,40,57,69,56,14,17,22,29,51,87,80,62,18,22,37,56,68,109,103,77,24,35,55,64,81,104,113,92,49,64,78,87,103,121,120,101,72,92,95,98,112,100,103,99],I=0;I<64;I++){var T=i((b[I]*l+50)/100);T<1?T=1:T>255&&(T=255),a[A[I]]=T}for(var M=[17,18,24,47,99,99,99,99,18,21,26,66,99,99,99,99,24,26,56,99,99,99,99,99,47,66,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99],U=0;U<64;U++){var te=i((M[U]*l+50)/100);te<1?te=1:te>255&&(te=255),n[A[U]]=te}for(var re=[1,1.387039845,1.306562965,1.175875602,1,.785694958,.5411961,.275899379],pe=0,ue=0;ue<8;ue++)for(var u=0;u<8;u++)s[pe]=1/(a[A[pe]]*re[ue]*re[u]*8),h[pe]=1/(n[A[pe]]*re[ue]*re[u]*8),pe++}function j(l,b){for(var I=0,T=0,M=new Array,U=1;U<=16;U++){for(var te=1;te<=l[U];te++)M[b[T]]=[],M[b[T]][0]=I,M[b[T]][1]=U,T++,I++;I*=2}return M}function ge(){c=j(R,V),d=j(ve,F),g=j(ae,k),y=j(X,xe)}function ie(){for(var l=1,b=2,I=1;I<=15;I++){for(var T=l;T<b;T++)$[32767+T]=I,C[32767+T]=[],C[32767+T][1]=I,C[32767+T][0]=T;for(var M=-(b-1);M<=-l;M++)$[32767+M]=I,C[32767+M]=[],C[32767+M][1]=I,C[32767+M][0]=b-1+M;l<<=1,b<<=1}}function Z(){for(var l=0;l<256;l++)x[l]=19595*l,x[l+256>>0]=38470*l,x[l+512>>0]=7471*l+32768,x[l+768>>0]=-11059*l,x[l+1024>>0]=-21709*l,x[l+1280>>0]=32768*l+8421375,x[l+1536>>0]=-27439*l,x[l+1792>>0]=-5329*l}function D(l){for(var b=l[0],I=l[1]-1;I>=0;)b&1<<I&&(G|=1<<Q),I--,Q--,Q<0&&(G==255?(o(255),o(0)):o(G),Q=7,G=0)}function o(l){P.push(l)}function E(l){o(l>>8&255),o(l&255)}function se(l,b){var I,T,M,U,te,re,pe,ue,u=0,m,B=8,_e=64;for(m=0;m<B;++m){I=l[u],T=l[u+1],M=l[u+2],U=l[u+3],te=l[u+4],re=l[u+5],pe=l[u+6],ue=l[u+7];var Y=I+ue,W=I-ue,oe=T+pe,L=T-pe,ne=M+re,be=M-re,ce=U+te,Ae=U-te,Le=Y+ce,Re=Y-ce,Se=oe+ne,Ue=oe-ne;l[u]=Le+Se,l[u+4]=Le-Se;var qe=(Ue+Re)*.707106781;l[u+2]=Re+qe,l[u+6]=Re-qe,Le=Ae+be,Se=be+L,Ue=L+W;var Ne=(Le-Ue)*.382683433,Ze=.5411961*Le+Ne,Ge=1.306562965*Ue+Ne,Ve=Se*.707106781,Xe=W+Ve,je=W-Ve;l[u+5]=je+Ze,l[u+3]=je-Ze,l[u+1]=Xe+Ge,l[u+7]=Xe-Ge,u+=8}for(u=0,m=0;m<B;++m){I=l[u],T=l[u+8],M=l[u+16],U=l[u+24],te=l[u+32],re=l[u+40],pe=l[u+48],ue=l[u+56];var mt=I+ue,et=I-ue,wt=T+pe,bt=T-pe,yt=M+re,Et=M-re,Tt=U+te,Ur=U-te,We=mt+Tt,tt=mt-Tt,Je=wt+yt,Ke=wt-yt;l[u]=We+Je,l[u+32]=We-Je;var Ct=(Ke+tt)*.707106781;l[u+16]=tt+Ct,l[u+48]=tt-Ct,We=Ur+Et,Je=Et+bt,Ke=bt+et;var At=(We-Ke)*.382683433,kt=.5411961*We+At,Ft=1.306562965*Ke+At,It=Je*.707106781,Lt=et+It,Ot=et-It;l[u+40]=Ot+kt,l[u+24]=Ot-kt,l[u+8]=Lt+Ft,l[u+56]=Lt-Ft,u++}var $e;for(m=0;m<_e;++m)$e=l[m]*b[m],S[m]=$e>0?$e+.5|0:$e-.5|0;return S}function le(){E(65504),E(16),o(74),o(70),o(73),o(70),o(0),o(1),o(1),o(0),E(1),E(1),o(0),o(0)}function J(l){if(l){E(65505),l[0]===69&&l[1]===120&&l[2]===105&&l[3]===102?E(l.length+2):(E(l.length+5+2),o(69),o(120),o(105),o(102),o(0));for(var b=0;b<l.length;b++)o(l[b])}}function K(l,b){E(65472),E(17),o(8),E(b),E(l),o(3),o(1),o(17),o(0),o(2),o(17),o(1),o(3),o(17),o(1)}function q(){E(65499),E(132),o(0);for(var l=0;l<64;l++)o(a[l]);o(1);for(var b=0;b<64;b++)o(n[b])}function v(){E(65476),E(418),o(0);for(var l=0;l<16;l++)o(R[l+1]);for(var b=0;b<=11;b++)o(V[b]);o(16);for(var I=0;I<16;I++)o(ae[I+1]);for(var T=0;T<=161;T++)o(k[T]);o(1);for(var M=0;M<16;M++)o(ve[M+1]);for(var U=0;U<=11;U++)o(F[U]);o(17);for(var te=0;te<16;te++)o(X[te+1]);for(var re=0;re<=161;re++)o(xe[re])}function _(l){typeof l>"u"||l.constructor!==Array||l.forEach(b=>{if(typeof b=="string"){E(65534);var I=b.length;E(I+2);var T;for(T=0;T<I;T++)o(b.charCodeAt(T))}})}function fe(){E(65498),E(12),o(3),o(1),o(0),o(2),o(17),o(3),o(17),o(0),o(63),o(0)}function O(l,b,I,T,M){for(var U=M[0],te=M[240],re,pe=16,ue=63,u=64,m=se(l,b),B=0;B<u;++B)z[A[B]]=m[B];var _e=z[0]-I;I=z[0],_e==0?D(T[0]):(re=32767+_e,D(T[$[re]]),D(C[re]));for(var Y=63;Y>0&&z[Y]==0;Y--);if(Y==0)return D(U),I;for(var W=1,oe;W<=Y;){for(var L=W;z[W]==0&&W<=Y;++W);var ne=W-L;if(ne>=pe){oe=ne>>4;for(var be=1;be<=oe;++be)D(te);ne=ne&15}re=32767+z[W],D(M[(ne<<4)+$[re]]),D(C[re]),W++}return Y!=ue&&D(U),I}function N(){for(var l=String.fromCharCode,b=0;b<256;b++)ee[b]=l(b)}this.encode=function(l,b){var I=new Date().getTime();b&&Ce(b),P=new Array,G=0,Q=7,E(65496),le(),_(l.comments),J(l.exifBuffer),q(),K(l.width,l.height),v(),fe();var T=0,M=0,U=0;G=0,Q=7,this.encode.displayName="_encode_";for(var te=l.data,re=l.width,pe=l.height,ue=re*4,u=re*3,m,B=0,_e,Y,W,oe,L,ne,be,ce;B<pe;){for(m=0;m<ue;){for(oe=ue*B+m,L=oe,ne=-1,be=0,ce=0;ce<64;ce++)be=ce>>3,ne=(ce&7)*4,L=oe+be*ue+ne,B+be>=pe&&(L-=ue*(B+1+be-pe)),m+ne>=ue&&(L-=m+ne-ue+4),_e=te[L++],Y=te[L++],W=te[L++],p[ce]=(x[_e]+x[Y+256>>0]+x[W+512>>0]>>16)-128,w[ce]=(x[_e+768>>0]+x[Y+1024>>0]+x[W+1280>>0]>>16)-128,f[ce]=(x[_e+1280>>0]+x[Y+1536>>0]+x[W+1792>>0]>>16)-128;T=O(p,s,T,c,g),M=O(w,h,M,d,y),U=O(f,h,U,d,y),m+=32}B+=8}if(Q>=0){var Ae=[];Ae[1]=Q+1,Ae[0]=(1<<Q+1)-1,D(Ae)}if(E(65497),typeof ze>"u")return new Uint8Array(P);return Buffer.from(P);var Le,Re};function Ce(l){if(l<=0&&(l=1),l>100&&(l=100),H!=l){var b=0;l<50?b=Math.floor(5e3/l):b=Math.floor(200-l*2),he(b),H=l}}function Fe(){var l=new Date().getTime();e||(e=50),N(),ge(),ie(),Z(),Ce(e);var b=new Date().getTime()-l}Fe()}typeof ze<"u"?ze.exports=Fr:typeof window<"u"&&(window["jpeg-js"]=window["jpeg-js"]||{},window["jpeg-js"].encode=Fr);function Fr(e,t){typeof t>"u"&&(t=50);var r=new Ni(t),i=r.encode(e,t);return{data:i,width:e.width,height:e.height}}});var Pr=de((pn,gt)=>{"use strict";var vt=(function(){"use strict";var t=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),r=4017,i=799,a=3406,n=2276,s=1567,h=3784,c=5793,d=2896;function g(){}function y(Q,p){for(var w=0,f=[],ee,x,H=16;H>0&&!Q[H-1];)H--;f.push({children:[],index:0});var A=f[0],R;for(ee=0;ee<H;ee++){for(x=0;x<Q[ee];x++){for(A=f.pop(),A.children[A.index]=p[w];A.index>0;){if(f.length===0)throw new Error("Could not recreate Huffman Table");A=f.pop()}for(A.index++,f.push(A);f.length<=ee;)f.push(R={children:[],index:0}),A.children[A.index]=R.children,A=R;w++}ee+1<H&&(f.push(R={children:[],index:0}),A.children[A.index]=R.children,A=R)}return f[0].children}function C(Q,p,w,f,ee,x,H,A,R,V){var ae=w.precision,k=w.samplesPerLine,ve=w.scanLines,F=w.mcusPerLine,X=w.progressive,xe=w.maxH,he=w.maxV,j=p,ge=0,ie=0;function Z(){if(ie>0)return ie--,ge>>ie&1;if(ge=Q[p++],ge==255){var u=Q[p++];if(u)throw new Error("unexpected marker: "+(ge<<8|u).toString(16))}return ie=7,ge>>>7}function D(u){for(var m=u,B;(B=Z())!==null;){if(m=m[B],typeof m=="number")return m;if(typeof m!="object")throw new Error("invalid huffman sequence")}return null}function o(u){for(var m=0;u>0;){var B=Z();if(B===null)return;m=m<<1|B,u--}return m}function E(u){var m=o(u);return m>=1<<u-1?m:m+(-1<<u)+1}function se(u,m){var B=D(u.huffmanTableDC),_e=B===0?0:E(B);m[0]=u.pred+=_e;for(var Y=1;Y<64;){var W=D(u.huffmanTableAC),oe=W&15,L=W>>4;if(oe===0){if(L<15)break;Y+=16;continue}Y+=L;var ne=t[Y];m[ne]=E(oe),Y++}}function le(u,m){var B=D(u.huffmanTableDC),_e=B===0?0:E(B)<<R;m[0]=u.pred+=_e}function J(u,m){m[0]|=Z()<<R}var K=0;function q(u,m){if(K>0){K--;return}for(var B=x,_e=H;B<=_e;){var Y=D(u.huffmanTableAC),W=Y&15,oe=Y>>4;if(W===0){if(oe<15){K=o(oe)+(1<<oe)-1;break}B+=16;continue}B+=oe;var L=t[B];m[L]=E(W)*(1<<R),B++}}var v=0,_;function fe(u,m){for(var B=x,_e=H,Y=0;B<=_e;){var W=t[B],oe=m[W]<0?-1:1;switch(v){case 0:var L=D(u.huffmanTableAC),ne=L&15,Y=L>>4;if(ne===0)Y<15?(K=o(Y)+(1<<Y),v=4):(Y=16,v=1);else{if(ne!==1)throw new Error("invalid ACn encoding");_=E(ne),v=Y?2:3}continue;case 1:case 2:m[W]?m[W]+=(Z()<<R)*oe:(Y--,Y===0&&(v=v==2?3:0));break;case 3:m[W]?m[W]+=(Z()<<R)*oe:(m[W]=_<<R,v=0);break;case 4:m[W]&&(m[W]+=(Z()<<R)*oe);break}B++}v===4&&(K--,K===0&&(v=0))}function O(u,m,B,_e,Y){var W=B/F|0,oe=B%F,L=W*u.v+_e,ne=oe*u.h+Y;u.blocks[L]===void 0&&V.tolerantDecoding||m(u,u.blocks[L][ne])}function N(u,m,B){var _e=B/u.blocksPerLine|0,Y=B%u.blocksPerLine;u.blocks[_e]===void 0&&V.tolerantDecoding||m(u,u.blocks[_e][Y])}var Ce=f.length,Fe,l,b,I,T,M;X?x===0?M=A===0?le:J:M=A===0?q:fe:M=se;var U=0,te,re;Ce==1?re=f[0].blocksPerLine*f[0].blocksPerColumn:re=F*w.mcusPerColumn,ee||(ee=re);for(var pe,ue;U<re;){for(l=0;l<Ce;l++)f[l].pred=0;if(K=0,Ce==1)for(Fe=f[0],T=0;T<ee;T++)N(Fe,M,U),U++;else for(T=0;T<ee;T++){for(l=0;l<Ce;l++)for(Fe=f[l],pe=Fe.h,ue=Fe.v,b=0;b<ue;b++)for(I=0;I<pe;I++)O(Fe,M,U,b,I);if(U++,U===re)break}if(U===re)do{if(Q[p]===255&&Q[p+1]!==0)break;p+=1}while(p<Q.length-2);if(ie=0,te=Q[p]<<8|Q[p+1],te<65280)throw new Error("marker was not found");if(te>=65488&&te<=65495)p+=2;else break}return p-j}function $(Q,p){var w=[],f=p.blocksPerLine,ee=p.blocksPerColumn,x=f<<3,H=new Int32Array(64),A=new Uint8Array(64);function R(j,ge,ie){var Z=p.quantizationTable,D,o,E,se,le,J,K,q,v,_=ie,fe;for(fe=0;fe<64;fe++)_[fe]=j[fe]*Z[fe];for(fe=0;fe<8;++fe){var O=8*fe;if(_[1+O]==0&&_[2+O]==0&&_[3+O]==0&&_[4+O]==0&&_[5+O]==0&&_[6+O]==0&&_[7+O]==0){v=c*_[0+O]+512>>10,_[0+O]=v,_[1+O]=v,_[2+O]=v,_[3+O]=v,_[4+O]=v,_[5+O]=v,_[6+O]=v,_[7+O]=v;continue}D=c*_[0+O]+128>>8,o=c*_[4+O]+128>>8,E=_[2+O],se=_[6+O],le=d*(_[1+O]-_[7+O])+128>>8,q=d*(_[1+O]+_[7+O])+128>>8,J=_[3+O]<<4,K=_[5+O]<<4,v=D-o+1>>1,D=D+o+1>>1,o=v,v=E*h+se*s+128>>8,E=E*s-se*h+128>>8,se=v,v=le-K+1>>1,le=le+K+1>>1,K=v,v=q+J+1>>1,J=q-J+1>>1,q=v,v=D-se+1>>1,D=D+se+1>>1,se=v,v=o-E+1>>1,o=o+E+1>>1,E=v,v=le*n+q*a+2048>>12,le=le*a-q*n+2048>>12,q=v,v=J*i+K*r+2048>>12,J=J*r-K*i+2048>>12,K=v,_[0+O]=D+q,_[7+O]=D-q,_[1+O]=o+K,_[6+O]=o-K,_[2+O]=E+J,_[5+O]=E-J,_[3+O]=se+le,_[4+O]=se-le}for(fe=0;fe<8;++fe){var N=fe;if(_[8+N]==0&&_[16+N]==0&&_[24+N]==0&&_[32+N]==0&&_[40+N]==0&&_[48+N]==0&&_[56+N]==0){v=c*ie[fe+0]+8192>>14,_[0+N]=v,_[8+N]=v,_[16+N]=v,_[24+N]=v,_[32+N]=v,_[40+N]=v,_[48+N]=v,_[56+N]=v;continue}D=c*_[0+N]+2048>>12,o=c*_[32+N]+2048>>12,E=_[16+N],se=_[48+N],le=d*(_[8+N]-_[56+N])+2048>>12,q=d*(_[8+N]+_[56+N])+2048>>12,J=_[24+N],K=_[40+N],v=D-o+1>>1,D=D+o+1>>1,o=v,v=E*h+se*s+2048>>12,E=E*s-se*h+2048>>12,se=v,v=le-K+1>>1,le=le+K+1>>1,K=v,v=q+J+1>>1,J=q-J+1>>1,q=v,v=D-se+1>>1,D=D+se+1>>1,se=v,v=o-E+1>>1,o=o+E+1>>1,E=v,v=le*n+q*a+2048>>12,le=le*a-q*n+2048>>12,q=v,v=J*i+K*r+2048>>12,J=J*r-K*i+2048>>12,K=v,_[0+N]=D+q,_[56+N]=D-q,_[8+N]=o+K,_[48+N]=o-K,_[16+N]=E+J,_[40+N]=E-J,_[24+N]=se+le,_[32+N]=se-le}for(fe=0;fe<64;++fe){var Ce=128+(_[fe]+8>>4);ge[fe]=Ce<0?0:Ce>255?255:Ce}}G(x*ee*8);for(var V,ae,k=0;k<ee;k++){var ve=k<<3;for(V=0;V<8;V++)w.push(new Uint8Array(x));for(var F=0;F<f;F++){R(p.blocks[k][F],A,H);var X=0,xe=F<<3;for(ae=0;ae<8;ae++){var he=w[ve+ae];for(V=0;V<8;V++)he[xe+V]=A[X++]}}}return w}function S(Q){return Q<0?0:Q>255?255:Q}g.prototype={load:function(p){var w=new XMLHttpRequest;w.open("GET",p,!0),w.responseType="arraybuffer",w.onload=(function(){var f=new Uint8Array(w.response||w.mozResponseArrayBuffer);this.parse(f),this.onload&&this.onload()}).bind(this),w.send(null)},parse:function(p){var w=this.opts.maxResolutionInMP*1e3*1e3,f=0,ee=p.length;function x(){var L=p[f]<<8|p[f+1];return f+=2,L}function H(){var L=x(),ne=p.subarray(f,f+L-2);return f+=ne.length,ne}function A(L){var ne=1,be=1,ce,Ae;for(Ae in L.components)L.components.hasOwnProperty(Ae)&&(ce=L.components[Ae],ne<ce.h&&(ne=ce.h),be<ce.v&&(be=ce.v));var Le=Math.ceil(L.samplesPerLine/8/ne),Re=Math.ceil(L.scanLines/8/be);for(Ae in L.components)if(L.components.hasOwnProperty(Ae)){ce=L.components[Ae];var Se=Math.ceil(Math.ceil(L.samplesPerLine/8)*ce.h/ne),Ue=Math.ceil(Math.ceil(L.scanLines/8)*ce.v/be),qe=Le*ce.h,Ne=Re*ce.v,Ze=Ne*qe,Ge=[];G(Ze*256);for(var Ve=0;Ve<Ne;Ve++){for(var Xe=[],je=0;je<qe;je++)Xe.push(new Int32Array(64));Ge.push(Xe)}ce.blocksPerLine=Se,ce.blocksPerColumn=Ue,ce.blocks=Ge}L.maxH=ne,L.maxV=be,L.mcusPerLine=Le,L.mcusPerColumn=Re}var R=null,V=null,ae=null,k,ve,F=[],X=[],xe=[],he=[],j=x(),ge=-1;if(this.comments=[],j!=65496)throw new Error("SOI not found");for(j=x();j!=65497;){var ie,Z,D;switch(j){case 65280:break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:var o=H();if(j===65534){var E=String.fromCharCode.apply(null,o);this.comments.push(E)}j===65504&&o[0]===74&&o[1]===70&&o[2]===73&&o[3]===70&&o[4]===0&&(R={version:{major:o[5],minor:o[6]},densityUnits:o[7],xDensity:o[8]<<8|o[9],yDensity:o[10]<<8|o[11],thumbWidth:o[12],thumbHeight:o[13],thumbData:o.subarray(14,14+3*o[12]*o[13])}),j===65505&&o[0]===69&&o[1]===120&&o[2]===105&&o[3]===102&&o[4]===0&&(this.exifBuffer=o.subarray(5,o.length)),j===65518&&o[0]===65&&o[1]===100&&o[2]===111&&o[3]===98&&o[4]===101&&o[5]===0&&(V={version:o[6],flags0:o[7]<<8|o[8],flags1:o[9]<<8|o[10],transformCode:o[11]});break;case 65499:for(var se=x(),le=se+f-2;f<le;){var J=p[f++];G(256);var K=new Int32Array(64);if(J>>4===0)for(Z=0;Z<64;Z++){var q=t[Z];K[q]=p[f++]}else if(J>>4===1)for(Z=0;Z<64;Z++){var q=t[Z];K[q]=x()}else throw new Error("DQT: invalid table spec");F[J&15]=K}break;case 65472:case 65473:case 65474:x(),k={},k.extended=j===65473,k.progressive=j===65474,k.precision=p[f++],k.scanLines=x(),k.samplesPerLine=x(),k.components={},k.componentsOrder=[];var v=k.scanLines*k.samplesPerLine;if(v>w){var _=Math.ceil((v-w)/1e6);throw new Error(`maxResolutionInMP limit exceeded by ${_}MP`)}var fe=p[f++],O,N=0,Ce=0;for(ie=0;ie<fe;ie++){O=p[f];var Fe=p[f+1]>>4,l=p[f+1]&15,b=p[f+2];if(Fe<=0||l<=0)throw new Error("Invalid sampling factor, expected values above 0");k.componentsOrder.push(O),k.components[O]={h:Fe,v:l,quantizationIdx:b},f+=3}A(k),X.push(k);break;case 65476:var I=x();for(ie=2;ie<I;){var T=p[f++],M=new Uint8Array(16),U=0;for(Z=0;Z<16;Z++,f++)U+=M[Z]=p[f];G(16+U);var te=new Uint8Array(U);for(Z=0;Z<U;Z++,f++)te[Z]=p[f];ie+=17+U,(T>>4===0?he:xe)[T&15]=y(M,te)}break;case 65501:x(),ve=x();break;case 65500:x(),x();break;case 65498:var re=x(),pe=p[f++],ue=[],u;for(ie=0;ie<pe;ie++){u=k.components[p[f++]];var m=p[f++];u.huffmanTableDC=he[m>>4],u.huffmanTableAC=xe[m&15],ue.push(u)}var B=p[f++],_e=p[f++],Y=p[f++],W=C(p,f,k,ue,ve,B,_e,Y>>4,Y&15,this.opts);f+=W;break;case 65535:p[f]!==255&&f--;break;default:if(p[f-3]==255&&p[f-2]>=192&&p[f-2]<=254){f-=3;break}else if(j===224||j==225){if(ge!==-1)throw new Error(`first unknown JPEG marker at offset ${ge.toString(16)}, second unknown JPEG marker ${j.toString(16)} at offset ${(f-1).toString(16)}`);ge=f-1;let L=x();if(p[f+L-2]===255){f+=L-2;break}}throw new Error("unknown JPEG marker "+j.toString(16))}j=x()}if(X.length!=1)throw new Error("only single frame JPEGs supported");for(var ie=0;ie<X.length;ie++){var oe=X[ie].components;for(var Z in oe)oe[Z].quantizationTable=F[oe[Z].quantizationIdx],delete oe[Z].quantizationIdx}this.width=k.samplesPerLine,this.height=k.scanLines,this.jfif=R,this.adobe=V,this.components=[];for(var ie=0;ie<k.componentsOrder.length;ie++){var u=k.components[k.componentsOrder[ie]];this.components.push({lines:$(k,u),scaleX:u.h/k.maxH,scaleY:u.v/k.maxV})}},getData:function(p,w){var f=this.width/p,ee=this.height/w,x,H,A,R,V,ae,k,ve,F,X,xe=0,he,j,ge,ie,Z,D,o,E,se,le,J,K=p*w*this.components.length;G(K);var q=new Uint8Array(K);switch(this.components.length){case 1:for(x=this.components[0],X=0;X<w;X++)for(V=x.lines[0|X*x.scaleY*ee],F=0;F<p;F++)he=V[0|F*x.scaleX*f],q[xe++]=he;break;case 2:for(x=this.components[0],H=this.components[1],X=0;X<w;X++)for(V=x.lines[0|X*x.scaleY*ee],ae=H.lines[0|X*H.scaleY*ee],F=0;F<p;F++)he=V[0|F*x.scaleX*f],q[xe++]=he,he=ae[0|F*H.scaleX*f],q[xe++]=he;break;case 3:for(J=!0,this.adobe&&this.adobe.transformCode?J=!0:typeof this.opts.colorTransform<"u"&&(J=!!this.opts.colorTransform),x=this.components[0],H=this.components[1],A=this.components[2],X=0;X<w;X++)for(V=x.lines[0|X*x.scaleY*ee],ae=H.lines[0|X*H.scaleY*ee],k=A.lines[0|X*A.scaleY*ee],F=0;F<p;F++)J?(he=V[0|F*x.scaleX*f],j=ae[0|F*H.scaleX*f],ge=k[0|F*A.scaleX*f],E=S(he+1.402*(ge-128)),se=S(he-.3441363*(j-128)-.71413636*(ge-128)),le=S(he+1.772*(j-128))):(E=V[0|F*x.scaleX*f],se=ae[0|F*H.scaleX*f],le=k[0|F*A.scaleX*f]),q[xe++]=E,q[xe++]=se,q[xe++]=le;break;case 4:if(!this.adobe)throw new Error("Unsupported color mode (4 components)");for(J=!1,this.adobe&&this.adobe.transformCode?J=!0:typeof this.opts.colorTransform<"u"&&(J=!!this.opts.colorTransform),x=this.components[0],H=this.components[1],A=this.components[2],R=this.components[3],X=0;X<w;X++)for(V=x.lines[0|X*x.scaleY*ee],ae=H.lines[0|X*H.scaleY*ee],k=A.lines[0|X*A.scaleY*ee],ve=R.lines[0|X*R.scaleY*ee],F=0;F<p;F++)J?(he=V[0|F*x.scaleX*f],j=ae[0|F*H.scaleX*f],ge=k[0|F*A.scaleX*f],ie=ve[0|F*R.scaleX*f],Z=255-S(he+1.402*(ge-128)),D=255-S(he-.3441363*(j-128)-.71413636*(ge-128)),o=255-S(he+1.772*(j-128))):(Z=V[0|F*x.scaleX*f],D=ae[0|F*H.scaleX*f],o=k[0|F*A.scaleX*f],ie=ve[0|F*R.scaleX*f]),q[xe++]=255-Z,q[xe++]=255-D,q[xe++]=255-o,q[xe++]=255-ie;break;default:throw new Error("Unsupported color mode")}return q},copyToImageData:function(p,w){var f=p.width,ee=p.height,x=p.data,H=this.getData(f,ee),A=0,R=0,V,ae,k,ve,F,X,xe,he,j;switch(this.components.length){case 1:for(ae=0;ae<ee;ae++)for(V=0;V<f;V++)k=H[A++],x[R++]=k,x[R++]=k,x[R++]=k,w&&(x[R++]=255);break;case 3:for(ae=0;ae<ee;ae++)for(V=0;V<f;V++)xe=H[A++],he=H[A++],j=H[A++],x[R++]=xe,x[R++]=he,x[R++]=j,w&&(x[R++]=255);break;case 4:for(ae=0;ae<ee;ae++)for(V=0;V<f;V++)F=H[A++],X=H[A++],k=H[A++],ve=H[A++],xe=255-S(F*(1-ve/255)+ve),he=255-S(X*(1-ve/255)+ve),j=255-S(k*(1-ve/255)+ve),x[R++]=xe,x[R++]=he,x[R++]=j,w&&(x[R++]=255);break;default:throw new Error("Unsupported color mode")}}};var z=0,P=0;function G(Q=0){var p=z+Q;if(p>P){var w=Math.ceil((p-P)/1024/1024);throw new Error(`maxMemoryUsageInMB limit exceeded by at least ${w}MB`)}z=p}return g.resetMaxMemoryUsage=function(Q){z=0,P=Q},g.getBytesAllocated=function(){return z},g.requestMemoryAllocation=G,g})();typeof gt<"u"?gt.exports=Or:typeof window<"u"&&(window["jpeg-js"]=window["jpeg-js"]||{},window["jpeg-js"].decode=Or);function Or(e,t={}){var r={colorTransform:void 0,useTArray:!1,formatAsRGBA:!0,tolerantDecoding:!0,maxResolutionInMP:100,maxMemoryUsageInMB:512},i={...r,...t},a=new Uint8Array(e),n=new vt;n.opts=i,vt.resetMaxMemoryUsage(i.maxMemoryUsageInMB*1024*1024),n.parse(a);var s=i.formatAsRGBA?4:3,h=n.width*n.height*s;try{vt.requestMemoryAllocation(h);var c={width:n.width,height:n.height,exifBuffer:n.exifBuffer,data:i.useTArray?new Uint8Array(h):Buffer.alloc(h)};n.comments.length>0&&(c.comments=n.comments)}catch(d){throw d instanceof RangeError?new Error("Could not allocate enough memory for the image. Required: "+h):d instanceof ReferenceError&&d.message==="Buffer is not defined"?new Error("Buffer is not globally defined in this environment. Consider setting useTArray to true"):d}return n.copyToImageData(c,i.formatAsRGBA),c}});var Rr=de((vn,Br)=>{"use strict";var Gi=Lr(),Vi=Pr();Br.exports={encode:Gi,decode:Vi}});var Mr=Pt(kr(),1),Sr=Pt(Rr(),1);function gn(e){return e.length>=24&&e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71?e.toString("latin1",12,16)!=="IHDR"?{format:"png"}:{format:"png",width:e.readUInt32BE(16),height:e.readUInt32BE(20)}:e.length>=4&&e[0]===255&&e[1]===216&&e[2]===255?{format:"jpeg",...Xi(e)}:e.length>=16&&e.toString("latin1",0,4)==="RIFF"&&e.toString("latin1",8,12)==="WEBP"?{format:"webp",...ji(e)}:e.length>=4&&e.toString("latin1",0,4).startsWith("GIF8")?{format:"gif"}:e.length>=2&&e[0]===66&&e[1]===77?{format:"bmp"}:e.length>=4&&(e[0]===73&&e[1]===73&&e[2]===42&&e[3]===0||e[0]===77&&e[1]===77&&e[2]===0&&e[3]===42)?{format:"tiff"}:e.length>=44&&e.readUInt32LE(0)===1&&e.toString("latin1",40,44)===" EMF"?{format:"emf"}:e.length>=4&&(e[0]===215&&e[1]===205&&e[2]===198&&e[3]===154||e[0]===1&&e[1]===0&&e[2]===9&&e[3]===0)?{format:"wmf"}:{format:"unknown"}}function Xi(e){let t=2;for(;t+9<e.length;){if(e[t]!==255)return{};let r=e[t+1];if(r===216||r>=208&&r<=215){t+=2;continue}let i=e.readUInt16BE(t+2);if(r>=192&&r<=207&&r!==196&&r!==200&&r!==204)return{height:e.readUInt16BE(t+5),width:e.readUInt16BE(t+7)};if(i<2)return{};t+=2+i}return{}}function ji(e){let t=e.toString("latin1",12,16);if(t==="VP8X"&&e.length>=30)return{width:1+e.readUIntLE(24,3),height:1+e.readUIntLE(27,3)};if(t==="VP8 "&&e.length>=30)return e[23]!==157||e[24]!==1||e[25]!==42?{}:{width:e.readUInt16LE(26)&16383,height:e.readUInt16LE(28)&16383};if(t==="VP8L"&&e.length>=25){if(e[20]!==47)return{};let r=e.readUInt32LE(21);return{width:(r&16383)+1,height:(r>>>14&16383)+1}}return{}}function mn(e,t){try{if(t==="png"){let r=Mr.PNG.sync.read(e);return{data:Buffer.from(r.data),width:r.width,height:r.height,channels:4}}if(t==="jpeg"){let r=Sr.decode(e,{useTArray:!0,maxMemoryUsageInMB:512});return{data:Buffer.from(r.data),width:r.width,height:r.height,channels:4}}return null}catch{return null}}export{gn as a,mn as b};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as S}from"./chunk-I7TIGB7K.js";import{a as x,b as P,c as C,d as V,e as j}from"./chunk-7OYZR6JA.js";import{a as R,b as D}from"./chunk-DNNZ353O.js";import{A as y,c as b,p as f,q as k}from"./chunk-TH47OOBV.js";import{e as w}from"./chunk-DBIBROYW.js";function I(o,t){return{contextDir:o,rootSid:t,locks:w(o,t),probe:S(o,{resolveAlias:i=>P(i),embed:(i,s)=>C(i,s),readVector:(i,s)=>V(o,i,s),writeVector:(i,s,n)=>j(o,i,s,n)})}}var N=new Set(["archive"]);async function Y(o,t,i,s){let n=y(o.contextDir);if(i.v==="defer")return{outcome:"deferred"};if(t.kind==="MODIFY_HELD"){if(!t.heldPayload)return{outcome:"failed",detail:`${t.ref} carries no held payload`};let e=t.heldPayload;if(i.v==="keep_current"){if(!e.event_id)return{outcome:"failed",detail:`this held row has no durable event id \u2014 resume the owner to drop it: kane-cli context extract --resume ${e.sid}`};let{commitChatTurn:r}=await import("./chat-committer-UUC6JTRJ.js"),u=r({contextDir:o.contextDir,graph:n,ops:[{kind:"resolve_question",questionId:`drop-held:${e.sid}:${e.tempRef}`,resolution:"deferred",eventId:e.event_id}],by:s});return u.errors?{outcome:"failed",detail:u.errors.map(d=>`${d.code}: ${d.detail}`).join("; ")}:(o.signals?.({ref:t.ref,verdict:"held-dropped"}),{outcome:"committed",detail:"held payload dropped (recorded) \u2014 the owner's resume will not re-present it"})}if(i.v==="approve"){let r=e.content._held??null;if(!r?.source_id||!r.source_cid||!r.anchor||!r.quote)return{outcome:"failed",detail:`this held row carries no committable provenance \u2014 resume the owner to apply it: kane-cli context extract --resume ${e.sid}`};{let a=n.mediaOf(r.source_cid),m=R(o.contextDir,n,r.source_cid),g=a.format==="image"?null:m?D(m):null;if(a.format!=="image"&&g===null)return{outcome:"failed",detail:`the pinned source ${r.source_id} (${r.source_cid.slice(0,19)}) has no citable text to verify this held row against \u2014 resume the owner: kane-cli context extract --resume ${e.sid}`};let _=b(a,{anchor:r.anchor,quote:r.quote},g);if(_.length>0)return{outcome:"failed",detail:`held provenance does not verify against the pinned source (${_.map($=>`${$.code}: ${$.detail}`).join("; ")}) \u2014 resume the owner: kane-cli context extract --resume ${e.sid}`}}let{commitProposal:u}=await import("./committer-SWEWEYNX.js"),{_held:d,...c}=e.content,q={version:1,read_basis:n.latestHash,source:{source_id:r.source_id,source_cid:r.source_cid},use_cases:[{temp_ref:e.tempRef,title:String(c.title??e.tempRef),...c.summary!==void 0?{summary:c.summary}:{},risk:String(c.risk??"med"),cite:{anchor:r.anchor,quote:r.quote},depends_on_hint:[],matches_existing:null}]},l=await x(I(o.contextDir,o.rootSid??`review-${process.pid}`),{verb:"maintain",ucTargets:[],newBuCandidates:[{tempRef:e.tempRef,title:String(c.title??e.tempRef),probeText:`${String(c.title??"")} ${String(c.summary??"")}`.trim()}],sourcePins:[{source_id:r.source_id,source_cid:r.source_cid}],readBasis:n.latestHash,...e.event_id?{eventIds:[e.event_id]}:{}},a=>{let m=u({contextDir:o.contextDir,graph:a.graph,proposal:q,proposalId:null,verdicts:new Map([[e.tempRef,{resolution:"skipped"}]]),by:s,autoName:!0,allowStaleBasis:!0,eventIds:e.event_id?[e.event_id]:a.eventIds("maintain",1),sid:a.sid,probeHits:a.probeHits});return m.errors!==null?{errors:m.errors}:{result:m,record:m.record}}),h=l.ok&&"result"in l?l.result:{record:null,errors:l.ok?null:l.kind==="validation"?l.errors:[{code:l.kind==="contended"?l.err.code:"UNSETTLED",detail:l.kind==="contended"?`held by ${l.err.holder?.owner_sid??"another session"}`:"concurrent activity kept moving the store"}]};return h.errors?{outcome:"failed",detail:h.errors.map(a=>`${a.code}: ${a.detail}`).join("; ")}:(o.signals?.({ref:t.ref,verdict:"held-applied"}),{outcome:"committed",detail:`held payload committed (derived) by ${s.id}`})}return{outcome:"failed",detail:`verdict ${i.v} does not apply to a MODIFY_HELD card`}}let v=n.resolve(t.ref);if(!v)return{outcome:"failed",detail:`${t.ref} names nothing in the graph`};let p=n.tipOf(v.cid);if(i.v==="archive"){if(!i.because||!i.because.trim())return{outcome:"failed",detail:"archive requires --because (a reason the record keeps)"};let e=f({contextDir:o.contextDir,graph:n,verdicts:new Map([[p,{resolution:"rejected",reason:i.because}]]),by:s});return e.errors?{outcome:"failed",detail:e.errors.map(r=>`${r.code}: ${r.detail}`).join("; ")}:(o.signals?.({ref:t.ref,verdict:"archived",reason:i.because}),{outcome:"retired"})}if(i.v==="approve"){let e=f({contextDir:o.contextDir,graph:n,verdicts:new Map([[p,{resolution:"approved"}]]),by:s});return e.errors?{outcome:"failed",detail:e.errors.map(r=>`${r.code}: ${r.detail}`).join("; ")}:(o.signals?.({ref:t.ref,verdict:"approved"}),{outcome:"applied"})}if(i.v==="merge"||i.v==="keep_both"){if(t.kind!=="PAIR"||!t.pair)return{outcome:"failed",detail:`${t.ref} is not a PAIR card`};let e=n.resolve(t.pair.candidate_cid);if(!e)return{outcome:"failed",detail:`pair candidate ${t.pair.candidate_ref} names nothing`};let r=n.tipOf(e.cid);if(i.v==="merge"){let d=k({contextDir:o.contextDir,graph:n,survivor:r,merged:p,reason:`pair merge: duplicate of ${t.pair.candidate_ref} (score ${t.pair.score})`,by:s});return d.errors?{outcome:"failed",detail:d.errors.map(c=>`${c.code}: ${c.detail}`).join("; ")}:(o.signals?.({ref:t.ref,verdict:"pair-merged",reason:t.pair.candidate_ref}),{outcome:"committed",detail:`merged into ${t.pair.candidate_ref} \u2014 survivor stays derived`})}let u=f({contextDir:o.contextDir,graph:n,verdicts:new Map([[p,{resolution:"approved"}],[r,{resolution:"approved"}]]),by:s});return u.errors?{outcome:"failed",detail:u.errors.map(d=>`${d.code}: ${d.detail}`).join("; ")}:(o.signals?.({ref:t.ref,verdict:"pair-kept-both",reason:t.pair.candidate_ref}),{outcome:"applied",detail:"both promoted as distinct"})}return{outcome:"failed",detail:`verdict ${i.v} does not apply to a ${t.kind} card`}}export{I as a,N as b,Y as c};
@@ -0,0 +1,13 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{d as qe,g as et}from"./chunk-5DBK6QNS.js";import{b as y,c as te,d as Ye,f as re,g as ne}from"./chunk-CJJXT5DO.js";import{a as Ke,e as P,f as N,g as We,h as G,i as A,j as Je}from"./chunk-ZPDM6FO7.js";import{d as tt}from"./chunk-NVGBE2DR.js";import{a as T,b as j,d as Ue}from"./chunk-EHN5HTUD.js";import{a as R,b as _}from"./chunk-L5LI2JF4.js";import{A as x}from"./chunk-TH47OOBV.js";import{b as K}from"./chunk-VAYBKR76.js";import{a as Ze}from"./chunk-CUM23TLF.js";import{b as Qe,f as U,i as Y}from"./chunk-DUAXZYAD.js";import{d as ie,f as Xe}from"./chunk-WXHQYYD5.js";import{a as W}from"./chunk-CH273NAE.js";import{a as Ge}from"./chunk-O75ZHGJG.js";import{a as ze}from"./chunk-ZUGCHQFC.js";function D(t){if(t===null)return"broken";let e=Math.floor(t/100);return e===1?"passed":e===7?"failed":e===2?"skipped":"broken"}var C={failed:3,broken:2,passed:1,skipped:0};function oe(t){let e="skipped";for(let r of t)C[r]>C[e]&&(e=r);return e}import{createHash as At}from"crypto";import{basename as Ot}from"path";function se(t){let e=t.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40);return e.length>0?e:"session"}function ae(t){return At("sha256").update(t).digest("hex").slice(0,8)}function ce(t){let e=Ot(t).replace(/_test\.md$/i,"").replace(/\.md$/i,"");return`${se(e)}-${ae(t)}`}function de(t,e){return`${se(t)}-${ae(e)}`}function ue(t){let e={};for(let[r,n]of Object.entries(t))typeof n=="string"&&n.length>0&&(e[r]=n);return e}var Ft={darwin:"macOS",linux:"Linux",win32:"Windows"};function le(t){return Ft[t]??t}function pe(t,e){let r={},n=(i,o)=>{o!==void 0&&o!==""&&(r[i]=o)};return n("model",e.model),n("os",t.os),n("browser",t.browser),n("browser_version",t.browser_version),n("resolution",t.resolution),n("platform",e.platform),n("platform_type",e.platform_type),n("run_kind",e.run_kind),n("os_version",t.os_version),t.device!==void 0&&t.device!==""?r.device=t.device:e.platform_type&&e.platform_type!=="web"&&(r.device=null),r}function Lt(t,e){return{pack_test_dir:t,ordinal_offset:e}}import{promises as k}from"fs";import{join as S}from"path";function fe(t){let e={evidence:"0.1",run_id:t.execution_id,status:"running",title:t.title,started:t.started,environment:{producer:{name:"kane-cli",version:t.producerVersion},...t.surfaces?{surfaces:t.surfaces}:{},run_kind:t.run_kind,origin:t.origin,pid:t.pid},...t.credits!==void 0?{metrics:{credits:{value:t.credits,type:"count"}}}:{}};return _(e,{lineWidth:-1})}async function me(t,e,r,n=process.cwd(),i){let o=i??y(t.execution_id,n),s=S(o,"tests",e);return await k.mkdir(S(o,"coverage"),{recursive:!0}),await k.writeFile(S(o,"coverage",".keep"),""),await k.mkdir(s,{recursive:!0}),await k.writeFile(S(o,"run.yaml"),fe(t)),r&&await k.writeFile(S(s,r.path),r.content),o}async function Tt(t,e=process.cwd()){let r=y(t.execution_id,e);await k.mkdir(S(r,"coverage"),{recursive:!0}),await k.writeFile(S(r,"coverage",".keep"),"");let n=R(fe(t));return n.environment&&delete n.environment.run_kind,await k.writeFile(S(r,"run.yaml"),_(n,{lineWidth:-1})),r}async function jt(t,e=process.cwd()){return j(y(t,e),new Date().toISOString())}async function ge(t,e=process.cwd()){await k.rm(y(t,e),{recursive:!0,force:!0})}import{promises as he}from"fs";import{join as ve}from"path";function J(t){let e={evidence:"0.1",test:t.testId,status:t.status,...t.durationMs!==void 0?{duration_ms:t.durationMs}:{},...t.attempts&&t.attempts.length?{attempts:t.attempts}:{},...t.flaky!==void 0?{flaky:t.flaky}:{},...t.definitionPath?{definition:{path:t.definitionPath}}:{},...t.definitionId?{definition_id:t.definitionId}:{},...t.assuranceId?{assurance_id:t.assuranceId}:{},...Object.keys(t.externalId).length?{external_id:t.externalId}:{},...t.tags&&t.tags.length?{tags:t.tags}:{},...Object.keys(t.environment).length?{environment:t.environment}:{},steps:t.steps};return _(e,{lineWidth:-1})}function we(t){return _({logs:t},{lineWidth:-1})}async function ye(t,e,r){await he.writeFile(ve(t,"tests",e,"result.yaml"),r)}async function _e(t,e,r){let n=ve(t,"tests",e,"logs");await he.mkdir(n,{recursive:!0}),await he.writeFile(ve(n,"meta.yaml"),r)}import{promises as X}from"fs";import{join as rt}from"path";function nt(t){return rt(t,".internal","meta.json")}async function it(t){let e;try{e=await X.readFile(nt(t),"utf8")}catch(n){if(n?.code==="ENOENT")return null;throw n}let r=JSON.parse(e);if(!r||typeof r!="object"||Array.isArray(r))throw new Error("meta.json is not a JSON object");return r}async function xe(t,e){let r;try{r=await it(t)??{}}catch(s){console.warn(`evidence: meta.json at ${t} unreadable \u2014 skipping execution-pointer append to preserve identity`,s);return}let n=Array.isArray(r.executions)?r.executions:[];n.push(e),r.executions=n,await X.mkdir(rt(t,".internal"),{recursive:!0});let i=nt(t),o=`${i}.tmp-${process.pid}-${Date.now()}`;await X.writeFile(o,JSON.stringify(r,null,2)+`
3
+ `),await X.rename(o,i)}async function Nt(t){try{let e=await it(t);return e&&Array.isArray(e.executions)?e.executions:[]}catch{return[]}}async function Mt(t,e,r=process.cwd()){let n=await re(t,r);if(!n){let o=`evidence: no pack found for "${t}"`;return e.json?console.log(JSON.stringify({valid:!1,error:"not_found",target:t})):console.error(o),2}let i=await T(n,e.profile??"L1");return e.json?console.log(JSON.stringify({valid:i.valid,status:i.status,diagnostics:i.diagnostics})):console.log(`evidence: ${i.valid?"valid":"INVALID"} (${e.profile??"L1"}, status ${i.status})`),i.valid?0:1}function ke(t){let e=[];for(let r of t){let n=r.perFlow&&r.perFlow.length?r.perFlow.map(i=>i.resultCode):[r.resultCode];for(let i of n)e.push(D(i))}return oe(e)}function Vt(t){let e=null;for(let r of t){let n=r.perFlow&&r.perFlow.length?r.perFlow.map(i=>i.resultCode):[r.resultCode];for(let i of n)i!=null&&(e==null||C[D(i)]>C[D(e)]||C[D(i)]===C[D(e)]&&i>e)&&(e=i)}return e}import{promises as Bt}from"fs";import{extname as ot,basename as Ht}from"path";var zt={".ndjson":"ndjson",".log":"log",".json":"json",".har":"har"};async function be(t){let e;try{e=await Bt.readdir(t)}catch{return[]}return e.filter(r=>r!=="meta.yaml").sort().map(r=>({name:Ht(r,ot(r)),file:r,format:zt[ot(r)]??"txt"}))}import{mkdirSync as Gt,appendFileSync as Ut}from"fs";import{join as st}from"path";function Ie(t,e){return st(t,"tests",e,"logs")}function Se(t,e,r,n={},i){try{i?.(e,r,r,n)}catch{}if(t)try{Gt(t,{recursive:!0});let o=JSON.stringify({ts:new Date().toISOString(),level:e,event:r,...n})+`
4
+ `;Ut(st(t,"diagnostics.ndjson"),o)}catch{}}import{promises as E}from"fs";import{join as O}from"path";async function Yt(t){try{let e=O(t,"tests"),r=await E.readdir(e).catch(()=>[]);for(let n of r){let i=O(e,n,"steps"),o=await E.readdir(i).catch(()=>[]);for(let s of o){let a=await E.readFile(O(i,s,"failure.yaml"),"utf8").catch(()=>null);if(a!=null)try{let c=R(a);if(c&&typeof c=="object"&&c.triage)return!0}catch{}}}}catch{}return!1}async function at(t,e,r){let n=O(t,"tests",e,"logs");if(r)try{await E.mkdir(n,{recursive:!0}),await E.copyFile(r,O(n,"tui.log"))}catch{}let i=await be(n);i.length&&await _e(t,e,we(i))}async function Ee(t){let e=t.cwd??process.cwd(),r=t.packDir??y(t.executionId,e);if(!t.saved&&!t.packDir)return await ge(t.executionId,e),{sealed:!1};await at(r,t.testId,t.tuiLogPath);let n=O(r,"run.yaml"),i=R(await E.readFile(n,"utf8"));i.environment={...i.environment??{},saved:t.saved,run_kind:t.runKind},await E.writeFile(n,_(i,{lineWidth:-1}));let o=await E.open(n,"r+");try{await o.sync()}finally{await o.close()}let s=await Yt(r);await j(r,new Date().toISOString());let a;try{let d=await T(r,"L1");a=d.valid;let u=(d.diagnostics??[]).filter(p=>String(p?.code??"").includes("failure.status_disagrees"));if(u.length>0)if(t.expectStatusDisagrees||s){let p=t.expectStatusDisagrees?"expected under --bug-detection continue":"self-explained by triaged failure record(s)";console.warn(`evidence: ${u.length} status_disagrees advisory(ies) \u2014 ${p}`)}else console.warn(`evidence: ${u.length} status_disagrees advisory(ies) \u2014 step verdicts disagree with their failure records`,u);if(!d.valid){console.warn(`evidence: sealed pack ${t.executionId} failed L1 validation`,d.diagnostics);let p=String(d.diagnostics?.[0]?.code??"");Se(Ie(r,t.testId),"warn","EVIDENCE_INVALID",{execution_id:t.executionId,first_code:p,surface:t.surface??"testmd"},t.log)}}catch(d){console.warn(`evidence: validation error for ${t.executionId}`,d)}let c;if(t.saved&&t.packDir)try{c=await Ye(r,t.executionId,e)}catch(d){console.warn(`evidence: store install failed for ${t.executionId}`,d)}if(t.outputStemDir)try{await xe(t.outputStemDir,{execution_id:t.executionId,run_kind:t.runKind,status:t.verdict,valid:a,at:new Date().toISOString()})}catch(d){console.warn(`evidence: execution-pointer append failed for ${t.executionId} (pack is sealed)`,d)}return{sealed:!0,valid:a,storePath:c}}import{release as ct}from"os";import{execFileSync as Kt}from"child_process";var dt=!1,Z;function Wt(){if(!dt)if(dt=!0,process.platform==="darwin")try{Z=Kt("sw_vers",["-productVersion"],{timeout:2e3}).toString().trim()||void 0}catch{Z=ct()||void 0}else Z=ct()||void 0;return Z}function Re(t){let e={os:le(process.platform)},r=Wt();if(r&&(e.os_version=r),t.cdpBrowser){let n=/^([A-Za-z]+)\/(\d+)/.exec(t.cdpBrowser);n&&(e.browser=n[1].replace(/^Headless/,""),e.browser_version=n[2])}return t.resolution&&(e.resolution=t.resolution),e}async function ut(t){if(t)try{let e=await fetch(`${t}/json/version`,{signal:AbortSignal.timeout(2e3)});if(!e.ok)return;let r=await e.json();return typeof r.Browser=="string"?r.Browser:void 0}catch{return}}function Jt(t){let e;return()=>(e||(e=ut(t)),e)}import{promises as $,existsSync as F,readFileSync as qt}from"fs";import{basename as er,join as h}from"path";import{readFileSync as Xt}from"fs";import{dirname as Zt,resolve as Qt}from"path";function lt(t,e){let r=Qt(t),n=Xt(r,"utf8");return P(e?N(n,G(Zt(r),e)):n)}var M=class t{constructor(e){this.opts=e}executionId;testId;definitionPath=null;definitionContent=null;accumulatedSteps=[];maxOrdinal=0;_attempts=[];_packDirOverride;_attached=!1;get attached(){return this._attached}static async attach(e){let r=er(e.packDir).replace(/\.evidence$/,""),n=new t({origin:"testrun",runKind:"author",pid:process.pid,title:e.testId,started:new Date().toISOString(),producerVersion:ze,cwd:e.cwd});n.executionId=r,n.testId=e.testId,n._packDirOverride=e.packDir,n._attached=!0;let i=h(e.packDir,"tests",e.testId);return await $.mkdir(i,{recursive:!0}),e.definition&&(await $.writeFile(h(i,e.definition.path),e.definition.content),n.definitionPath=e.definition.path,n.definitionContent=e.definition.content),n}async start(){if(this._attached)throw new Error("attach-mode session is already started");this.executionId=te(),this.testId=this.opts.testmdRelPath?ce(this.opts.testmdRelPath):de(this.opts.objectiveOrName??"session",this.opts.sessionId??this.executionId);let e=this.opts.definition??null;return await me({execution_id:this.executionId,title:this.opts.title,started:this.opts.started,producerVersion:this.opts.producerVersion,surfaces:this.opts.surfaces,run_kind:this.opts.runKind,origin:this.opts.origin,pid:this.opts.pid,...this.opts.credits!==void 0?{credits:this.opts.credits}:{}},this.testId,e,this.opts.cwd,this.opts.packRootDir?this.pack:void 0),e&&(this.definitionPath=e.path,this.definitionContent=e.content),{executionId:this.executionId,testId:this.testId,packTestDir:this.packTestDir}}get pack(){return this._packDirOverride?this._packDirOverride:this.opts.packRootDir?h(this.opts.packRootDir,`${this.executionId}.evidence`):y(this.executionId,this.opts.cwd)}get packTestDir(){return h(this.pack,"tests",this.testId)}async writeDefinition(e,r="test.md"){await $.writeFile(h(this.packTestDir,r),e),this.definitionPath=r,this.definitionContent=e}computeAssuranceId(){try{if(this.opts.testmdRelPath&&this.opts.cwd){let e=h(this.opts.cwd,this.opts.testmdRelPath);if(F(e))return A(qt(e,"utf8"))?.id}}catch{}}computeDefinitionId(){try{if(this.opts.testmdRelPath&&this.opts.cwd){let e=h(this.opts.cwd,this.opts.testmdRelPath),r=h(this.opts.cwd,".context"),n=F(r)?x(r):void 0;if(F(e))return lt(e,n)}if(this.definitionContent!=null)return P(this.definitionContent)}catch{}}noteSpawn(e){this.accumulatedSteps.push(...e.steps),this.maxOrdinal=Math.max(this.maxOrdinal,e.maxOrdinal)}nextOrdinalOffset(){return this.maxOrdinal}get steps(){return this.accumulatedSteps}get attempts(){return this._attempts}async archiveAttempt(e,r){let n=this._attempts.length+1,i=h(this.packTestDir,String(n));try{await $.mkdir(i,{recursive:!0});for(let o of["steps","logs","v16-trajectory"]){let s=h(this.packTestDir,o);F(s)&&await $.rename(s,h(i,o))}this.definitionPath&&F(h(this.packTestDir,this.definitionPath))&&await $.copyFile(h(this.packTestDir,this.definitionPath),h(i,this.definitionPath))}catch{}return this._attempts.push({n,status:e,steps:this.accumulatedSteps,...r!==void 0?{durationMs:r}:{}}),this.accumulatedSteps=[],this.maxOrdinal=0,n}async writeResult(e){let r=ke(e.spawns),n=this._attempts.length?[...this._attempts.map(u=>({status:u.status,...u.durationMs!==void 0?{duration_ms:u.durationMs}:{}})),{status:r,...e.durationMs!==void 0?{duration_ms:e.durationMs}:{}}]:void 0,i=n?new Set(n.map(u=>u.status)).size>1:void 0,o=this.pack,s=ue(e.externalIdInput),a=pe(e.runnerEnv,e.intentEnv),c=this.computeDefinitionId(),d=this.computeAssuranceId();await ye(o,this.testId,J({testId:this.testId,status:r,durationMs:e.durationMs,definitionPath:this.definitionPath,definitionId:c,assuranceId:d,externalId:s,environment:a,steps:e.steps,tags:e.tags,attempts:n,flaky:i}));for(let u of this._attempts){let p=h(this.packTestDir,String(u.n));F(p)&&await $.writeFile(h(p,"result.yaml"),J({testId:this.testId,status:u.status,durationMs:u.durationMs,definitionPath:this.definitionPath,definitionId:c,assuranceId:d,externalId:s,environment:a,steps:u.steps,tags:e.tags}))}let l=e.externalIdInput;return e.log&&(l.commit_id||l.test_id||l.testcase_id)&&e.log("info","EVIDENCE_EXTERNAL_ID","Evidence external-id mapping",{execution_id:this.executionId,commit_id:l.commit_id??null,test_id:l.test_id??null,testcase_id:l.testcase_id??null,project_id:l.project_id??null,session_id:l.session_id??null,session_name:l.session_name??null}),r}get id(){return this.executionId}get test(){return this.testId}};async function tr(t,e,r=ne){try{let n=await r(t);if(n.aborted.length>0||n.removed.length>0)try{e?.("info","EVIDENCE_RECOVERY","Startup evidence recovery swept incomplete packs",{aborted:n.aborted,removed:n.removed,origin:"startup"})}catch{}return n}catch(n){return console.warn("evidence: startup recovery failed",n),{aborted:[],removed:[]}}}import{promises as kr}from"fs";import{existsSync as De,mkdirSync as gr,readdirSync as hr,readFileSync as vr,rmSync as wr,statSync as yr,writeFileSync as _r}from"fs";import{join as L}from"path";import{mkdirSync as rr,renameSync as nr,rmSync as ir,writeFileSync as or}from"fs";import{join as pt}from"path";var sr=5e6;function ft(t,e,r){let n=pt(t,"coverage","sources"),i=new Map,o=!1;try{for(let s of r.usecases)for(let a of s.sources){if(i.has(a.id)){a.file=i.get(a.id);continue}if(!a.cid)continue;let c=tt(e,a.cid);if(c===null||c.byteLength>sr)continue;o||(rr(n,{recursive:!0}),o=!0);let d=pt(n,a.id),l=`${d}.tmp-${process.pid}`;or(l,c),nr(l,d);let u=`coverage/sources/${a.id}`;i.set(a.id,u),a.file=u}}catch{for(let s of r.usecases)for(let a of s.sources)delete a.file;if(o)try{ir(n,{recursive:!0,force:!0})}catch{}}}import{existsSync as Ce,readFileSync as V,renameSync as ur,writeFileSync as lr}from"fs";import{dirname as wt,isAbsolute as yt,resolve as _t}from"path";var ar=new Set(["inline","testmd","testrun"]),cr=new Set(["inferred","authored","runtime-derived"]),Pe=new Set(["passed","failed","broken","skipped"]);function mt(t,e,r){if(r.facts.length===0)return{record:null,errors:[{code:"EMPTY_EXECUTIONS",detail:"a run with no designed units attaches no facts \u2014 skip the call"}]};let n=e;for(let i=0;;i++){let o=U(t);if(n.latestHash!==o){if(i>=3)return{record:null,errors:[{code:"STALE_BASIS",detail:`graph opened at ${String(n.latestHash)} but chain head is ${String(o)} \u2014 retry budget exhausted`}]};n=x(t);continue}let s=dr(t,n,r);if(s!=="cas")return s;if(i>=3)return{record:null,errors:[{code:"STALE_BASIS",detail:"concurrent appends kept moving the head \u2014 retry budget exhausted"}]};n=x(t)}}function dr(t,e,r){let n=[],i=[];for(let s of r.facts){let a=`executions[${s.ref}]`,c=e.resolve(s.ref),d=c?e.tipOf(c.cid):null;if(!c||!d||e.superseded.has(d)){n.push({code:"UNKNOWN_REF",detail:`${a}: '${s.ref}' is not a live committed node`});continue}if(e.nodeLabel.get(d)!==ie.TEST){n.push({code:"ILLEGAL_TARGET",detail:`${a}: execution facts attach to tests \u2014 '${s.ref}' is a ${e.nodeLabel.get(d)}`});continue}if(!ar.has(s.mode)){n.push({code:"BAD_MODE",detail:`${a}: mode '${s.mode}' not in inline|testmd|testrun`});continue}if(!Pe.has(s.verdict)){n.push({code:"BAD_VERDICT",detail:`${a}: verdict '${s.verdict}' not in ${[...Pe].join("|")}`});continue}if(!cr.has(s.oracle_mode)){n.push({code:"BAD_ORACLE_MODE",detail:`${a}: oracle_mode '${s.oracle_mode}' not in inferred|authored|runtime-derived`});continue}if(typeof s.drift_flag!="boolean"||typeof s.stale_at_run!="boolean"){n.push({code:"MISSING_FIELD",detail:`${a}: drift_flag and stale_at_run are required booleans`});continue}if(!s.execution_id||!s.started_at||!s.definition_id_at_run){n.push({code:"MISSING_FIELD",detail:`${a}: execution_id, started_at and definition_id_at_run are required`});continue}let l=[];for(let u of s.per_ac??[]){let p=e.resolve(u.ac_ref),f=p?e.tipOf(p.cid):null;if(!p||!f||e.superseded.has(f)||e.nodeLabel.get(f)!==ie.AC){n.push({code:"UNKNOWN_REF",detail:`${a}.per_ac: '${u.ac_ref}' is not a live AC`});continue}if(!Pe.has(u.verdict)){n.push({code:"BAD_VERDICT",detail:`${a}.per_ac['${u.ac_ref}']: verdict '${u.verdict}'`});continue}l.push({ac_ref:e.nameOf.get(f)??f,verdict:u.verdict})}i.push({about:d,definition_id_at_run:s.definition_id_at_run,verdict:s.verdict,...l.length?{per_ac:l}:{},drift_flag:s.drift_flag,oracle_mode:s.oracle_mode,stale_at_run:s.stale_at_run,...s.unresolved_acs?.length?{unresolved_acs:s.unresolved_acs}:{},execution_id:s.execution_id,...s.evidence_id?{evidence_id:s.evidence_id}:{},...s.duration_ms!==void 0?{duration_ms:s.duration_ms}:{},started_at:s.started_at,mode:s.mode,local:s.local,...s.via_parent?{via_parent:s.via_parent}:{}})}if(n.length>0)return{record:null,errors:n};let o;try{o=Y(t,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[],executions:i,...r.eventIds&&r.eventIds.length>0?{event_ids:r.eventIds}:{},source_head_moves:{}},{expectPrev:e.latestHash})}catch(s){if(s instanceof Qe)return"cas";throw s}return K(t),{record:o.record,errors:null}}function xt(t){let e={failed:3,broken:2,skipped:1,passed:0},r=new Map;for(let n of t)for(let i of n.verifies??[]){let o=r.get(i);(o===void 0||(e[n.status]??0)>(e[o]??0))&&r.set(i,n.status)}return[...r.entries()].map(([n,i])=>({ref:n,verdict:i}))}function kt(t){let e=[],r=W(t.cwd);if(!Ce(r))return{synced:0,superseded:0,skipped:"no-context",warnings:e};let n=t.by??{kind:"ai",id:"exec-sync"},i=x(r),o=[],s=0,a=new Set;for(let d of t.members){let l=yt(d.path)?d.path:_t(t.cwd,d.path);for(let u of pr(l)){if(a.has(u.path))continue;a.add(u.path);let p=u.path===l?void 0:A(V(l,"utf8"))?.id,f=V(u.path,"utf8"),m=A(f);if(!m?.id)continue;let g=i.resolve(m.id),b=g?i.tipOf(g.cid):null;if(!g||!b||i.superseded.has(b)){e.push(`sync: ${m.id} does not resolve to a live test \u2014 skipped (foreign store?)`);continue}let I=P(N(f,G(wt(u.path),i))),v=String(i.getNode(b)?.content.test_md_blob??""),H=P(N(v,We(i))),z=!1,ee=b;if(I===H)m.base!==H&&vt(u.path,f,H,e);else if(m.base===H){let w=fr(r,i,b,f,I,n);w.error?(e.push(`sync: could not supersede ${m.id}: ${w.error}`),z=!0):(s++,ee=w.newCid,z=w.oracleTier,vt(u.path,V(u.path,"utf8"),I,e),i=x(r))}else z=!0,e.push(m.base?`sync: ${m.id} was edited from an older version \u2014 graph kept; reconcile via a redesign or maintain`:`sync: ${m.id} carries no base pin (hand-copied file?) \u2014 fact attached with drift flag`);let Me=i.getNode(ee)?.content.check,Ve=u.path===l?d.acs??[]:[],Be=Ve.filter(w=>gt(i,w.ref)),He=Ve.filter(w=>!gt(i,w.ref)).map(w=>w.ref);o.push({ref:m.id,definition_id_at_run:I,verdict:d.verdict,...Be.length?{per_ac:Be.map(w=>({ac_ref:w.ref,verdict:w.verdict}))}:{},drift_flag:z,oracle_mode:Me?.expected_mode??(Ke(Me?.operand)?"runtime-derived":"inferred"),stale_at_run:i.stale(ee)!=="fresh",...He.length?{unresolved_acs:He}:{},execution_id:d.executionId,...d.evidenceId?{evidence_id:d.evidenceId}:{},...d.durationMs!==void 0?{duration_ms:d.durationMs}:{},started_at:d.startedAt,mode:d.mode,local:d.local,...p?{via_parent:p}:{}})}}if(o.length===0)return{synced:0,superseded:s,warnings:e};let c=mt(r,x(r),{facts:o,by:n});return c.errors?(e.push(...c.errors.map(d=>`sync facts: ${d.code}: ${d.detail}`)),{synced:0,superseded:s,warnings:e}):{synced:o.length,superseded:s,warnings:e}}function pr(t){let e=[],r=new Set,n=i=>{if(r.has(i)||!Ce(i))return;r.add(i);let o=V(i,"utf8");for(let s of o.split(`
5
+ `)){let a=/^@import\s+(\S+)\s*$/.exec(s.trim());if(!a)continue;let c=yt(a[1])?a[1]:_t(wt(i),a[1]);Ce(c)&&A(V(c,"utf8"))?.id&&n(c)}e.push({path:i})};return n(t),e}function gt(t,e){let r=t.resolve(e),n=r?t.tipOf(r.cid):null;return!!(r&&n&&!t.superseded.has(n)&&t.nodeLabel.get(n)==="ac")}function fr(t,e,r,n,i,o){let s=e.getNode(r);if(!s)return{oracleTier:!1,error:"tip unreadable"};let a=Je(n),c=String(s.content.test_md_blob??""),d=/^#\s+(.+?)\s*$/m.exec(a)?.[1]??String(s.content.title??""),l={...s.content,test_md_blob:a,definitionId:i,title:d},u=Xe("test",l);if(u.length>0)return{oracleTier:!1,error:u.map(g=>g.detail).join("; ")};let p=Ze("test",l);if(p===r)return{newCid:r,oracleTier:!1};let f=ht(c)!==ht(a),m=U(t);if(e.latestHash!==m)return{oracleTier:f,error:`store advanced under the sync (basis ${String(e.latestHash)} vs head ${String(m)}) \u2014 re-run to retry`};try{Y(t,{ts:new Date().toISOString(),proposal_id:null,nodes:[{cid:p,label:"test",content:l}],edges:[],review:[{id:p,kind:"review-item",resolution:"edited",edit:null,reason:"edited on disk (run sync)",by:o}],supersessions:[{kind:"node",old:r,new:p,reason:"edited on disk (run sync)",by:o}],source_head_moves:{}},{expectPrev:m})}catch(g){return{oracleTier:f,error:g instanceof Error?g.message:String(g)}}return K(t),{newCid:p,oracleTier:f}}var mr=/\s@verifies\s+(ac-[\w.:\/-]+(?:\s*,\s*ac-[\w.:\/-]+)*)\s*$/;function ht(t){let e=[],r=t.split(`
6
+ `),n=!1;for(let i of r){if(/^##\s/.test(i)){n=/\bassert\b/i.test(i);let o=mr.exec(i);o&&e.push(`v:${o[1].trim()}`);continue}n&&i.trim()!==""&&e.push(i.trim())}return e.join(`
7
+ `)}function vt(t,e,r,n){try{let i=e.split(`
8
+ `),o=-1;if(i[0]?.trim()==="---"){for(let c=1;c<i.length;c++)if(i[c].trim()==="---"){o=c;break}}if(o<0)return;let s=!1;for(let c=1;c<o;c++){if(/^\s+base:\s*sha256:[0-9a-f]+\s*$/.test(i[c])){i[c]=i[c].replace(/sha256:[0-9a-f]+/,r),s=!0;break}if(/^assurance:\s*$/.test(i[c])&&!i.slice(c,Math.min(c+3,o)).some(d=>/^\s+base:/.test(d))){i.splice(c+2,0,` base: ${r}`),s=!0;break}}if(!s)return;let a=`${t}.tmp-sync`;lr(a,i.join(`
9
+ `)),ur(a,t)}catch(i){n.push(`sync: pin refresh failed for ${t} (${i instanceof Error?i.message:String(i)}) \u2014 next run self-heals`)}}var xr={passed:"passed",failed:"failed",broken:"blocked",skipped:"not-run"},bt=(t,e)=>{try{if(!De(e))return{status:"skipped",reason:"no context store at the project root"};let r=L(t,"tests");if(!De(r))return{status:"skipped",reason:"pack has no tests/"};let n=new Map;for(let a of hr(r)){let c=L(r,a,"result.yaml");if(!De(c)||!yr(L(r,a)).isDirectory())continue;let d=R(vr(c,"utf8"));if(!d?.definition_id&&!d?.assurance_id)continue;let l=xt(d.steps??[]),u={testShortId:String(d.test??a),execution:xr[String(d.status)]??"not-run",...l.length?{acs:l}:{}};d.assurance_id&&n.set(`id:${d.assurance_id}`,u),d.definition_id&&n.set(`def:${d.definition_id}`,u)}let i=et(x(e),n,{scope:"run"}),o=qe(i);ft(t,e,i);let s=_({...i,rollup:o},{lineWidth:-1});return gr(L(t,"coverage"),{recursive:!0}),_r(L(t,"coverage","usecases.yaml"),s),{status:"written"}}catch(r){try{wr(L(t,"coverage","sources"),{recursive:!0,force:!0})}catch{}return{status:"skipped",reason:r instanceof Error?r.message:String(r)}}};async function br(t){try{let e=new M({origin:"inline",runKind:"author",pid:t.pid,title:t.title,started:new Date().toISOString(),producerVersion:t.producerVersion,surfaces:t.surfaces,objectiveOrName:t.objectiveOrName,sessionId:t.sessionId,cwd:t.cwd,packRootDir:t.packRootDir}),r=await e.start();return{session:e,...r,packDir:e.pack,spawns:[],startedAtMs:Date.now(),cwd:t.cwd}}catch(e){return console.warn("evidence: inline pack creation failed",e),null}}function Ir(t,e,r){if(!t)return;t.session.noteSpawn(e),e.resolution&&(t.resolution=e.resolution);let n=(r?.per_flow_metadata??[]).map(i=>({resultCode:i?.result_code!=null?Number(i.result_code):null}));t.spawns.push({resultCode:r?.result_code!=null?Number(r.result_code):null,...n.length?{perFlow:n}:{}})}function Sr(t){if(t)return{packTestDir:t.packTestDir,ordinalOffset:t.session.nextOrdinalOffset()}}async function Er(t,e){if(!t)return null;if(t.finalized)return t.finalized;let r=(n,i,o)=>e.log?e.log("warn",n,i,o):console.warn(`evidence: ${i}`,o??"");try{if(e.recordedTestPath)try{await t.session.writeDefinition(await kr.readFile(e.recordedTestPath,"utf8"))}catch(s){r("EVIDENCE_DEFINITION_FAILED","could not attach synthesized test.md",{error:String(s)})}let n=e.cdpBrowserCapture?await e.cdpBrowserCapture():void 0,i=await t.session.writeResult({steps:t.session.steps,spawns:t.spawns.length?t.spawns:[{resultCode:null}],externalIdInput:{...e.externalIdInput,execution_id:t.executionId},runnerEnv:Re({cdpBrowser:n,resolution:t.resolution}),intentEnv:{model:e.model,platform:"Desktop",platform_type:"web"},durationMs:e.durationMs??Date.now()-t.startedAtMs,log:e.log});try{if(e.recordedTestPath){let s=kt({cwd:e.cwd??t.cwd??process.cwd(),members:[{path:e.recordedTestPath,verdict:i,executionId:t.executionId,startedAt:new Date(t.startedAtMs).toISOString(),mode:"inline",local:e.local??!1}]});for(let a of s.warnings)r("EXEC_SYNC",a)}}catch(s){r("EXEC_SYNC","exec-sync failed",{error:String(s)})}try{let s=(e.coverageWriter??bt)(t.packDir,W(e.cwd??t.cwd??process.cwd()));s.status==="skipped"&&r("EVIDENCE_COVERAGE_SKIPPED",`coverage/usecases.yaml not written: ${s.reason}`)}catch(s){r("EVIDENCE_COVERAGE_SKIPPED","coverage writer threw",{error:String(s)})}let o=await Ee({executionId:t.executionId,testId:t.testId,saved:e.saved,runKind:"author",verdict:i,cwd:e.cwd??t.cwd,packDir:t.packDir,tuiLogPath:e.tuiLogPath,log:e.log,surface:"inline"});return t.finalized=o,e.log?.("info","EVIDENCE_SEALED","Inline pack sealed",{execution_id:t.executionId,verdict:i,valid:o.valid,pack:t.packDir,store_copy:o.storePath??null}),o}catch(n){return r("EVIDENCE_SEAL_FAILED","inline pack finalize failed",{error:String(n)}),null}}import{statSync as Ar,openSync as Or,readSync as Fr,closeSync as Lr}from"fs";import{basename as Tr,resolve as jr}from"path";import{createServer as Rr}from"http";import{createReadStream as Pr,promises as Cr}from"fs";import{randomBytes as Dr}from"crypto";var Q="127.0.0.1";function It(t,e){if(!t)return null;let r=/^bytes=(\d*)-(\d*)$/.exec(t.trim());if(!r)return null;let[,n,i]=r;if(n===""&&i==="")return null;if(n===""){let a=Number(i);return a===0||e===0?"unsatisfiable":{start:Math.max(0,e-a),end:e-1}}let o=Number(n);if(o>=e)return"unsatisfiable";let s=i===""?e-1:Math.min(Number(i),e-1);return s<o?null:{start:o,end:s}}async function $e(t){let e=Dr(16).toString("hex"),r=Rr((i,o)=>{$r(i,o,t,e).catch(()=>o.destroy())});await new Promise((i,o)=>{r.once("error",o),r.listen(t.port??0,Q,()=>{r.removeListener("error",o),i()})});let n=r.address().port;return{port:n,urlFor:i=>`http://${Q}:${n}/${e}/${encodeURIComponent(i)}`,close:()=>new Promise(i=>{r.close(()=>i()),r.closeAllConnections()})}}async function $r(t,e,r,n){let i=t.url??"/",o=v=>{try{r.log?.("warn","EVIDENCE_SERVE_DENIED",{reason:v,path:i})}catch{}};if(t.headers.host!==`${Q}:${t.socket.localPort}`){o("host_mismatch"),e.writeHead(403).end();return}let s=t.headers.origin;if(s!==void 0&&!r.allowedOrigins.includes(s)){o("origin_denied"),e.writeHead(403).end();return}let a=s?{"Access-Control-Allow-Origin":s,Vary:"Origin","Access-Control-Expose-Headers":"Content-Range, Content-Length"}:{};if(t.method==="OPTIONS"){let v={...a,"Access-Control-Allow-Methods":"GET, HEAD, OPTIONS","Access-Control-Allow-Headers":"range","Access-Control-Max-Age":"86400"};t.headers["access-control-request-private-network"]==="true"&&(v["Access-Control-Allow-Private-Network"]="true"),e.writeHead(204,v).end();return}if(t.method!=="GET"&&t.method!=="HEAD"){e.writeHead(405,a).end();return}let c;try{let v=new URL(t.url??"/",`http://${Q}`).pathname.split("/");if(v.length!==3||v[1]!==n){o("bad_token"),e.writeHead(404,a).end();return}c=decodeURIComponent(v[2])}catch{o("not_found"),e.writeHead(404,a).end();return}let d=r.packs.get(c);if(!d){o("not_found"),e.writeHead(404,a).end();return}let l;try{let v=await Cr.stat(d);if(!v.isFile())throw new Error("not a file");l=v.size}catch{o("not_found"),e.writeHead(404,a).end();return}let u={...a,"Accept-Ranges":"bytes","Content-Type":"application/zip","Cache-Control":"no-store"};if(t.method==="HEAD"){e.writeHead(200,{...u,"Content-Length":String(l)}).end();return}let p=It(t.headers.range,l);if(p==="unsatisfiable"){o("unsatisfiable"),e.writeHead(416,{...a,"Content-Range":`bytes */${l}`}).end();return}let[f,m,g]=p===null?[0,l-1,200]:[p.start,p.end,206],b={...u,"Content-Length":String(m-f+1)};if(g===206&&(b["Content-Range"]=`bytes ${f}-${m}/${l}`),e.writeHead(g,b),l===0){e.end();return}let I=Pr(d,{start:f,end:m});I.on("error",()=>e.destroy()),e.on("close",()=>I.destroy()),I.pipe(e)}function B(t,e){return(e??Ge(t).evidenceViewerUrl).replace(/\/+$/,"")}function Ae(t,e){return`${e}/?pack=${encodeURIComponent(t)}`}function Oe(t){return`evidence: view locally with \`kane-cli evidence serve ${t}\``}async function Nr(t,e,r={}){let n=r.out??(l=>process.stdout.write(l+`
10
+ `)),i=l=>(n(`error: ${l}`),2);if(e.env!=="prod"&&e.env!=="stage")return i(`invalid --env: ${String(e.env)}`);if(e.port!==void 0&&(!Number.isInteger(e.port)||e.port<1||e.port>65535))return i("invalid --port: expected an integer 1-65535");let o;try{o=B(e.env,e.viewerUrl),new URL(o)}catch{return i(`invalid --viewer-url: ${e.viewerUrl}`)}if(t.length===0)return i("no pack paths given");let s=new Map;for(let l of t){let u=jr(l),p;try{p=Ar(u)}catch{return i(`${l}: not found`)}if(p.isDirectory())return i(`${l}: is a directory \u2014 packs must be sealed .evidence files (run the execution to completion, or seal it, first)`);if(!p.isFile())return i(`${l}: not a regular file`);let f=Buffer.alloc(2),m=Or(u,"r");try{Fr(m,f,0,2,0)}finally{Lr(m)}if(f.toString("latin1")!=="PK")return i(`${l}: not a sealed evidence pack (zip magic missing)`);let g=Tr(u);if(s.has(g))return i(`duplicate pack basename: ${g} (URL names collide \u2014 rename one)`);s.set(g,u)}let a=r.log??((l,u,p)=>process.stderr.write(`warn: ${u} reason=${p.reason} path=${p.path}
11
+ `)),c;try{c=await $e({packs:s,allowedOrigins:[new URL(o).origin],port:e.port,log:a})}catch(l){return i(`could not bind 127.0.0.1${e.port?`:${e.port}`:""} \u2014 ${l.message}`)}n(`serving ${s.size} pack${s.size===1?"":"s"} on http://127.0.0.1:${c.port}`);for(let l of s.keys()){let u=c.urlFor(l);n(l),n(` pack ${u}`),n(` viewer ${Ae(u,o)}`)}return n("press Ctrl-C to stop"),await(r.hold??Mr)(),await c.close(),0}function Mr(){return new Promise(t=>{let e=process.listeners("SIGINT");process.removeAllListeners("SIGINT"),process.once("SIGINT",()=>{for(let r of e)process.on("SIGINT",r);t()})})}import{promises as q}from"fs";import{tmpdir as zr}from"os";import{join as Rt,resolve as Le}from"path";var Vr=["error","prefer_first","prefer_latest","discard"],Br=["external_id.commit_id","external_id.test_id"];function St(t){let e=t.replace(/-/g,"_");return Vr.includes(e)?e:null}function Et(t){let e=t==="discard"?{on_collision:"discard"}:{on_collision:"error",identity:{keys:[...Br],on_same:t??"nest",on_different:t?"error":"split"}};return _({packs:{require_status:"finalized",require_valid:"L1",on_ineligible:"abort"},tests:e,rules:[{file:"run.yaml",key:"run_id",must:"different",on_violation:"skip"},{file:"result.yaml",key:"external_id.project_id",must:"same",on_violation:"error"},{file:"result.yaml",key:"external_id.org_id",must:"same",on_violation:"error"}]},{lineWidth:-1})}async function Fe(t){try{if(!t.isTTY){t.log(Oe(t.packPath));return}let e=B(t.env);await(t.renderPrompt??Hr)(t.packPath,e)}catch(e){try{t.log(`evidence view failed \u2014 ${e.message}`)}catch{}}}async function Hr(t,e){let r=await import("./react-QWOAB3TB.js"),{render:n}=await import("./build-JIKYOZUH.js"),{EvidenceViewOffer:i}=await import("./EvidenceViewOffer-F5YG54OC.js");await new Promise(o=>{let s=n(r.default.createElement(i,{packPath:t,viewerBase:e,onDone:()=>{s.unmount(),o()}}),{stdout:process.stderr,exitOnCtrlC:!1})})}async function Gr(t,e,r=process.cwd(),n={}){let i=n.out??(p=>process.stdout.write(p+`
12
+ `)),o=n.err??(p=>process.stderr.write(p+`
13
+ `)),s=p=>(o(`evidence merge: ${p}`),2);if(!e.runId)return s("--run-id is required (merged identity is the caller's fact)");if(e.rules&&e.onCollision)return s("--rules and --on-collision are mutually exclusive");let a;if(e.onCollision!==void 0){let p=St(e.onCollision);if(!p)return s(`invalid --on-collision: ${e.onCollision} (expected error | prefer-first | prefer-latest | discard)`);a=p}let c=[];for(let p of t){let f=await Ur(p,r);if(!f)return s(`no pack found for "${p}"`);c.push(f)}let d=e.out?Le(r,e.out):y(e.runId,r),l=null,u;e.rules?u=Le(r,e.rules):(l=await q.mkdtemp(Rt(zr(),"kane-merge-rules-")),u=Rt(l,"merge-rules.yaml"),await q.writeFile(u,Et(a)));try{let p=await(n.mergeFn??Ue)(c,{runId:e.runId,out:d,rulesPath:u,title:e.title,finalize:e.finalize});return e.json?i(JSON.stringify(p)):Yr(i,p),p.output.finalized&&!e.json&&await(n.offer??Fe)({packPath:d,env:e.env,isTTY:n.isTTY??(!!process.stdin.isTTY&&!!process.stderr.isTTY),log:o}),0}catch(p){let f=p instanceof Error?p.message:String(p);return p?.code==="ABORT"?(o(`evidence merge: aborted \u2014 ${f}`),1):s(f)}finally{l&&await q.rm(l,{recursive:!0,force:!0}).catch(()=>{})}}async function Ur(t,e){let r=Le(e,t);if(await Pt(r))return r;let n=y(t,e);return await Pt(n)?n:null}async function Pt(t){try{return await q.stat(t),!0}catch{return!1}}function Yr(t,e){let{packs:r,tests:n,output:i}=e;t(`evidence: merged ${n.merged} tests from ${r.eligible.length} packs -> ${i.path} (${i.finalized?"sealed":"live"})`);for(let o of r.skipped)t(` skipped ${o.runId}: ${o.rule} \u2014 ${o.reason}`);for(let o of n.collisions){let s;o.action==="nest"?s=`nested into ${o.folder}, latest ${o.winner}`:o.action==="split"?s=`split into ${o.folder}`:s=`winner ${o.winner}`,t(` collision ${o.test}: ${s} (${o.rule})`)}for(let o of n.discarded)t(` discarded ${o}`)}import{copyFileSync as Kr,existsSync as Te,mkdirSync as Wr}from"fs";import{join as Ct}from"path";function Jr(t,e,r){try{let n=Ct(t,"auteur","execution.json");if(Te(n))return!0;for(let i of e)if(!(!i||!Te(i)))return Wr(Ct(t,"auteur"),{recursive:!0}),Kr(i,n),!0}catch(n){try{r?.("debug","EVIDENCE_BLOB_COPY_FAILED","auteur execution blob copy failed",{operation:"ensureAuteurExecution",source:e.find(i=>i&&Te(i))??null,error:n instanceof Error?n.message:String(n)})}catch{}}return!1}import{readFileSync as Xr}from"fs";import{join as Zr}from"path";function Ne(t){let e=[],r=!0,n=o=>{if(o===null||typeof o!="object")return;let s=o;if(Array.isArray(s.operations))for(let a of s.operations){let c=a?.operation_id;typeof c=="string"&&c&&e.push(c)}if(Array.isArray(s.children)){s.content_type!=="generative_block"&&(r=!1);for(let a of s.children)n(a)}if(Array.isArray(s.branches)){r=!1;for(let a of s.branches){let c=a?.children;if(Array.isArray(c))for(let d of c)n(d)}}},i=t?.instructions;if(Array.isArray(i))for(let o of i)n(o);return{ids:e,linear:r}}function Qr(t){return Ne(t).ids}function je(t,e){let r=new Set(e.map(a=>a.action_id).filter(Boolean)),n=-1;for(let a of r){let c=t.indexOf(a);c>n&&(n=c)}let i=e.reduce((a,c)=>Math.max(a,c.ordinal),0),o=new Set,s=[];for(let a of t.slice(n+1))r.has(a)||o.has(a)||(o.add(a),s.push({id:a,ordinal:++i,status:"skipped",action_id:a}));return s}function Dt(t,e){let r=new Set(e),n=t.filter(o=>o.action_id);if(n.some(o=>r.has(o.action_id))||n.length>e.length)return null;let i=0;return t.map(o=>o.action_id?{...o,action_id:e[i++]}:o)}function qr(t,e){if(t.length>e.length)return!1;for(let r=0;r<t.length;r++)if(e[r]!==t[r].action_id)return!1;return!0}function en(t,e,r,n=!0){if(e.length===0)return{steps:t,tail:[]};let i=(r&&n?Dt(t,e):null)??t,o=i.filter(a=>a.action_id),s=new Set(e);return o.length>0&&o.every(a=>s.has(a.action_id))?{steps:i,tail:je(e,i)}:o.length>0&&!qr(o,e)?{steps:i,tail:[],unjoined:!0}:{steps:i,tail:je(e,i)}}function $t(t){try{let e=Xr(Zr(t,"auteur","execution.json"),"utf8");return Ne(JSON.parse(e))}catch{return{ids:[],linear:!0}}}function tn(t){return $t(t).ids}export{D as a,oe as b,se as c,ae as d,ce as e,de as f,ue as g,le as h,pe as i,Lt as j,fe as k,me as l,Tt as m,jt as n,ge as o,J as p,we as q,ye as r,_e as s,xe as t,Nt as u,Mt as v,ke as w,Vt as x,be as y,Ie as z,Se as A,at as B,Ee as C,Re as D,ut as E,Jt as F,M as G,tr as H,xt as I,kt as J,bt as K,br as L,Ir as M,Sr as N,Er as O,It as P,$e as Q,B as R,Ae as S,Oe as T,Nr as U,Fe as V,Gr as W,Jr as X,Ne as Y,Qr as Z,je as _,Dt as $,en as aa,$t as ba,tn as ca};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{execSync as c}from"child_process";import{readFileSync as o}from"fs";import{createHash as a}from"crypto";import{hostname as u,platform as f,arch as m}from"os";var t=null;function g(){return t||(t=s(),t)}function s(){let r=f();if(r==="darwin")try{let n=c("ioreg -rd1 -c IOPlatformExpertDevice",{encoding:"utf-8",timeout:5e3}).match(/"IOPlatformUUID"\s*=\s*"([^"]+)"/);if(n?.[1])return n[1]}catch{}if(r==="linux")try{let e=o("/etc/machine-id","utf-8").trim();if(e)return e}catch{}let i=`${u()}:${r}:${m()}`;return a("sha256").update(i).digest("hex").slice(0,32)}export{g as a};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as _e}from"./chunk-AFPHLUQ5.js";import{a as le,b as pe,d as me,e as he}from"./chunk-BB2W35TW.js";import{a as ge}from"./chunk-DNNZ353O.js";import{c as de,f as ae,m as fe,z as ue}from"./chunk-TH47OOBV.js";import{a as oe,b as Y}from"./chunk-CUM23TLF.js";import{f as re,i as ce}from"./chunk-DUAXZYAD.js";import{d as g,e as p,f as ne,g as se,h as ie}from"./chunk-WXHQYYD5.js";var x=i=>({record:null,errors:i,minted:{},logicalIds:{},superseded:[],warnings:[],finalizedTests:{}});function D(i){return i.toLowerCase().trim().replace(/\s+/g," ")}function $e(i,I){let t=i.resolve(I);if(!t||i.nodeLabel.get(t.cid)!==g.USECASE||t.superseded)return[];let m=new Set;for(let{cid:f}of i.byLabel(g.SCENARIO))if(!i.superseded.has(f)&&i.edgesFrom(f).some(k=>k.type===p.BELONGS_TO&&i.tipOf(k.dst)===t.cid)){m.add(f);for(let k of i.edgesInto(f))k.type!==p.AUTOMATES||i.superseded.has(k.src)||m.add(k.src)}return[...m]}function De(i){let{contextDir:I,graph:t,sections:m,by:f}=i,k=i.engine??"design@1",K=re(I);if(t.latestHash!==K)return x([{code:"STALE_BASIS",detail:`graph opened at ${String(t.latestHash)} but chain head is ${String(K)} \u2014 re-open and retry`}]);let L=t.resolve(i.ucRef);if(!L||t.nodeLabel.get(L.cid)!==g.USECASE||L.superseded)return x([{code:"UNKNOWN_UC",detail:`${i.ucRef} is not a live use-case`}]);let E=L.cid,_=[],J=/^design@(\d+)$/.exec(i.templateVersion??""),be=J!==null&&Number.parseInt(J[1],10)>=3,W=new Map,Ee=(e,s)=>{let n=W.get(e.source_cid);if(n===void 0){let o=ge(i.contextDir,t,e.source_cid);n=o?_e(o.toString("utf8")):null,W.set(e.source_cid,n)}if(n===null)return _.push({code:"CITE_UNVERIFIED",detail:`${s}: source ${e.source_id} (${e.source_cid.slice(0,19)}) has no citable text to verify against`}),!1;let c=de(t.mediaOf(e.source_cid),e,n);if(c.length>0){for(let o of c)_.push({code:"CITE_UNVERIFIED",detail:`${s}: ${o.code}: ${o.detail}`});return!1}return!0},T=[],F=[],C=[],j=[],q=[],S={},N={},G={},R=[],P=[],Q=new Set,X=[],B=new Set,A=new Set,M=[];{let e=i.forceScope??(i.force?$e(t,i.ucRef):[]),s=new Set;i.sections.scenarios?.length&&s.add(g.SCENARIO),i.sections.tests?.length&&s.add(g.TEST);for(let n of e)t.superseded.has(n)||(s.has(t.nodeLabel.get(n)??"")?A.add(n):M.push(n))}let w=new Set,V=e=>!t.superseded.has(e)&&(!A.has(e)||w.has(e)),v=(e,s,n)=>{if(S[e])return S[e];let c=t.resolve(e),o=c?V(c.cid)?c.cid:t.tipOf(c.cid):null;return!c||!o||!V(o)?(_.push({code:"UNKNOWN_REF",detail:`${s}: '${e}' is neither in this payload nor a live committed node`}),null):n&&t.nodeLabel.get(o)!==n?(_.push({code:"ILLEGAL_EDGE",detail:`${s}: '${e}' is a ${t.nodeLabel.get(o)}, expected ${n}`}),null):o},Se=(e,s,n,c)=>{if(t.nameOf.has(s)){N[c]=t.nameOf.get(s);return}let o=ue(e,h=>Q.has(h),t.names.keys());o!==null&&(Q.add(o),j.push({cid:s,slug:o,by:f}),N[c]=o)},U=(e,s,n,c)=>{for(let h of ne(e,n))_.push({code:h.code,detail:`${s}: ${h.detail}`});let o=oe(e,n);return t.hasNode(o)&&!t.superseded.has(o)?(A.has(o)&&w.add(o),S[s]=o,o):(T.push({cid:o,label:e,content:n}),S[s]=o,Se(e,o,c,s),o)},$=(e,s,n,c,o)=>{let h=Y(e,s,n,c);if(t.edgesFrom(s).some(r=>r.ecid===h&&!t.superseded.has(r.ecid))){e===p.AUTOMATES&&B.add(n);return}let O=t.nodeLabel.get(s)??T.find(r=>r.cid===s)?.label??"(unknown)",u=t.nodeLabel.get(n)??T.find(r=>r.cid===n)?.label??"(unknown)";for(let r of ie(e,O,u,c))_.push({code:r.code,detail:`${o}: ${r.detail}`});let l=ae(t,e,s,n,X);if(l){_.push({code:l.code,detail:`${o}: ${l.detail}`});return}if(e===p.AUTOMATES){if(B.has(n)){_.push({code:"CARDINALITY_VIOLATION",detail:`${o}: two automates onto ${n} in one record (strict 1:1)`});return}if(B.add(n),!A.has(n)||w.has(n)){let r=b=>A.has(b)&&!w.has(b);if(t.edgesFrom(s).some(b=>b.type===p.AUTOMATES&&b.dst!==n&&!t.superseded.has(b.dst)&&!r(b.dst))&&t.hasNode(s)){_.push({code:"CARDINALITY_VIOLATION",detail:`${o}: automates from ${s} already has a live edge \u2014 supersede it first`});return}if(t.edgesInto(n).some(b=>b.type===p.AUTOMATES&&b.src!==s&&!t.superseded.has(b.src)&&!r(b.src))){_.push({code:"CARDINALITY_VIOLATION",detail:`${o}: automates onto ${n} already has a live edge \u2014 strict 1:1, supersede it first`});return}}}F.push({ecid:Y(e,s,n,c),type:e,src:s,dst:n,props:c}),X.push({src:s,dst:n,type:e})},z=new Set;for(let e of m.gaps??[]){let s=e.temp_ref??e.ref??"gap",n=e.question;if(!n||typeof n!="object"||!n.header||!Array.isArray(n.options)||n.options.length===0||!Number.isInteger(n.recommended_index)){_.push({code:"GAP_QUESTION_INCOMPLETE",detail:`${s}: design gaps carry a full ranked question object (header/options/recommended_index)`});continue}e.kind==="budget-evicted"&&e.ref&&z.add(e.ref);let c={kind:e.kind,question:n,derived:!0,uc:E,...e.risk?{risk:e.risk}:{},...e.risk_rationale?{risk_rationale:e.risk_rationale}:{},...e.text?{text:e.text}:{},...e.ref?{ref:e.ref}:{}};U(g.GAP,s,c,String(n.header))}let Z=new Map;for(let{cid:e,content:s}of t.byLabel(g.SCENARIO))V(e)&&t.edgesFrom(e).some(n=>n.type===p.BELONGS_TO&&t.tipOf(n.dst)===E)&&Z.set(D(String(s.title??"")),e);for(let e of m.scenarios??[]){let s=Z.get(D(e.title));if(s){_.push({code:"DUPLICATE_SCENARIO",detail:`${e.temp_ref}: '${e.title}' duplicates live scenario ${t.nameOf.get(s)??s} \u2014 exercise/link it instead (reuse before minting)`});continue}let n={title:e.title,intent:e.intent,case_type:e.case_type,derived:!0,...e.technique_notes?{technique_notes:e.technique_notes}:{},...e.description?{description:e.description}:{},...e.parameters?{parameters:e.parameters}:{},...e.tags?{tags:e.tags}:{}};U(g.SCENARIO,e.temp_ref,n,e.title)}for(let e of m.scenarios??[]){let s=S[e.temp_ref];if(s){$(p.BELONGS_TO,s,E,{},e.temp_ref);for(let n of e.depends_on??[]){let c=v(n,`${e.temp_ref}.depends_on`,g.SCENARIO);c&&$(p.DEPENDS_ON,s,c,{},`${e.temp_ref}.depends_on`)}}}for(let e of m.acs??[]){let s={text:e.text,kind:e.kind,risk:e.risk,derived:!0,...e.expected_answer?{expected_answer:e.expected_answer}:{},...e.measurable!==void 0?{measurable:e.measurable}:{}},n=U(g.AC,e.temp_ref,s,e.text);if(!n)continue;let c=e.scope?.type==="scenario"&&e.scope.ref?v(e.scope.ref,`${e.temp_ref}.scope`,g.SCENARIO):E;c&&!t.edgesFrom(n).some(o=>o.type===p.SCOPED_TO&&!t.superseded.has(o.ecid))&&$(p.SCOPED_TO,n,c,{},`${e.temp_ref}.scope`);for(let o of e.cites??[]){if(be&&!Ee(o,`${e.temp_ref}.cite`))continue;let h={source_id:o.source_id,source_cid:o.source_cid,anchor:o.anchor,...o.quote?{quote:o.quote}:{}};$(p.DERIVES,o.source_cid,n,h,`${e.temp_ref}.cite`)}}for(let e of m.exercises??[]){let s=v(e.scenario,"exercises.scenario",g.SCENARIO),n=v(e.ac,"exercises.ac",g.AC);s&&n&&$(p.EXERCISES,s,n,{},`exercises ${e.scenario}\u2192${e.ac}`)}for(let e of m.scoped_to_repoints??[]){let s=v(e.ac,"scoped_to_repoints.ac",g.AC),n=v(e.to,"scoped_to_repoints.to");if(!s||!n)continue;let c=t.edgesFrom(s).find(o=>o.type===p.SCOPED_TO&&!t.superseded.has(o.ecid));c&&C.push({kind:"edge",ecid:c.ecid,reason:`re-scoped to ${e.to} by ${f.id}`,by:f}),$(p.SCOPED_TO,s,n,{},`scoped_to_repoints ${e.ac}`)}let ee=new Map;if(i.finalizeTestBody)for(let[e,s]of t.nameOf)ee.set(t.tipOf(e),s);let te=e=>t.nameOf.get(e)??ee.get(t.tipOf(e))??null,ye=e=>{let s=S[e];if(s)return N[e]??te(s);if(t.names.has(e))return t.resolve(e)?e:null;let n=t.resolve(e);return n?te(t.tipOf(n.cid)):null};for(let e of m.tests??[]){for(let u of e.reuses??[])z.has(u)&&_.push({code:"REUSES_EVICTED",detail:`${e.temp_ref}: reuses '${u}' which was budget-evicted \u2014 drop the edge; the dependent gap names the missing @import`});let s=e.test_md_blob,n=e.definitionId,c=e.objectives_blob;if(i.finalizeTestBody){let u;try{u=i.finalizeTestBody({temp_ref:e.temp_ref,test_md_blob:e.test_md_blob,verifies:e.verifies,reuses:e.reuses??[]},ye)}catch(l){return x([{code:"FINALIZE_BODY",detail:`${e.temp_ref}: ${l instanceof Error?l.message:String(l)}`}])}u&&(s=u.test_md_blob,n=u.definitionId,c=u.objectives_blob??c,G[e.temp_ref]=n)}let o={title:e.title,check:e.check,definitionId:n,derived:!0,...e.config?{config:e.config}:{},...s?{test_md_blob:s}:{},...c?{objectives_blob:c}:{},...e.surface_required!==void 0?{surface_required:e.surface_required}:{}},h=U(g.TEST,e.temp_ref,o,e.title);if(!h)continue;let O=v(e.automates,`${e.temp_ref}.automates`,g.SCENARIO);O&&$(p.AUTOMATES,h,O,{},`${e.temp_ref}.automates`);for(let u of e.verifies){let l=v(u,`${e.temp_ref}.verifies`,g.AC);l&&$(p.VERIFIES,h,l,{},`${e.temp_ref}.verifies`)}for(let u of e.reuses??[]){if(z.has(u))continue;let l=v(u,`${e.temp_ref}.reuses`,g.TEST);l&&$(p.REUSES,h,l,{},`${e.temp_ref}.reuses`)}for(let u of e.verifies){let l=S[u]??t.resolve(u)?.cid;l&&(t.trust.get(l)??"derived")==="derived"&&!T.some(r=>r.cid===l)?R.push(`${e.temp_ref}: verifies ${u} which is still DERIVED (unapproved) \u2014 committed anyway; approve it in chat or via review`):l&&S[u]===l&&(m.acs??[]).some(r=>r.temp_ref===u)&&R.push(`${e.temp_ref}: verifies ${u} minted in this same record (unapproved) \u2014 committed anyway; approve it in chat`)}if(e.verifies.length>1){let u=e.check?.verified_against;R.push(`${e.temp_ref}: verifies ${e.verifies.length} ACs but machine-asserts only 1 (check.verified_against=${u!=null?String(u):"?"}) \u2014 the rest ride prose only`)}}let H=[];{let e=(r,d)=>`${r??""}\0${D(String(d??""))}`,s=(r,d)=>i.reason?`${i.reason} \u2014 evolve by ${f.id}${d?` (${d})`:""}`:r,n=new Map;for(let r of T){if(r.label!==g.SCENARIO&&r.label!==g.TEST)continue;let d=e(r.label,r.content.title);n.set(d,[...n.get(d)??[],r.cid])}let c=new Map;for(let r of A){if(w.has(r))continue;let d=e(t.nodeLabel.get(r),t.getNode(r)?.content.title);c.set(d,[...c.get(d)??[],r])}for(let[r,d]of c){let a=n.get(r)??[],b=d.length===1&&a.length===1;for(let y of d)b?(C.push({kind:"node",old:y,new:a[0],reason:s(`--force redesign of ${i.ucRef} by ${f.id} (title-matched successor)`,"title-matched successor"),by:f}),H.push({old:y,next:a[0]})):C.push({kind:"node",old:y,new:null,reason:s(`--force redesign of ${i.ucRef} by ${f.id}`),by:f}),P.push(y)}let o=r=>t.edgesFrom(r).some(d=>d.type!==p.SCOPED_TO?!1:d.dst===E||t.tipOf(d.dst)===E?!0:t.nodeLabel.get(d.dst)===g.SCENARIO&&t.edgesFrom(d.dst).some(a=>a.type===p.BELONGS_TO&&t.tipOf(a.dst)===E)),h=new Map;for(let{cid:r,content:d}of t.byLabel(g.AC)){if(t.superseded.has(r)||!o(r))continue;let a=D(String(d.text??""));h.set(a,[...h.get(a)??[],r])}let O=new Map;for(let r of T){if(r.label!==g.AC)continue;let d=D(String(r.content.text??""));O.set(d,[...O.get(d)??[],r.cid])}for(let[r,d]of h){let a=O.get(r)??[];d.length!==1||a.length!==1||(C.push({kind:"node",old:d[0],new:a[0],reason:s(`AC re-emitted with changed content by ${f.id} (text-matched successor)`,"AC text-matched successor"),by:f}),H.push({old:d[0],next:a[0]}),P.push(d[0]))}let u=new Set(P),l=new Set;for(let r of C)r.kind==="edge"&&l.add(r.ecid);for(let{old:r,next:d}of H)for(let a of t.edgesInto(r))se(a.type)?.pin?.comparesTo!=="dst_tip"||t.superseded.has(a.src)||u.has(a.src)||l.has(a.ecid)||(C.push({kind:"edge",ecid:a.ecid,reason:`re-blessed onto ${d} (redirect successor of ${r}) by ${f.id}`,by:f}),l.add(a.ecid),F.some(y=>y.type===a.type&&y.src===a.src&&y.dst===d)||t.edgesFrom(a.src).some(y=>y.type===a.type&&y.dst===d))||a.type===p.AUTOMATES&&B.has(d)||$(a.type,a.src,d,a.props,`rebless ${a.type} from ${t.nameOf.get(a.src)??a.src}`)}if(_.length>0)return x(_);if(T.length===0&&F.length===0&&C.length===0&&q.length===0)return Object.keys(S).length>0?(R.push("everything in this phase is already current \u2014 nothing re-committed"),{record:null,errors:null,minted:S,logicalIds:N,superseded:[],warnings:R,finalizedTests:G,...i.force||i.forceScope?{forceScopeRemaining:M}:{}}):x([{code:"EMPTY_DESIGN",detail:"finalize_design produced nothing to commit"}]);if(i.generationTicket){let e=me(t,i.generationTicket);if(e!==null)return x([e])}return{record:ce(I,{ts:new Date().toISOString(),proposal_id:null,nodes:T,edges:F,review:[],supersessions:C,source_head_moves:{},...j.length>0?{names:j}:{},...(()=>{for(let e of m.judgements??[]){let s=e.target?S[e.target]??t.resolve(e.target)?.cid??E:E;q.push({about:s,rationale:`[${e.kind}] ${e.rationale}`,by:f})}return q.length>0?{judgements:q}:{}})(),design_of:{uc_cid:E,engine:k},...i.generationTicket?{design_generation:he(i.generationTicket,E,f)}:{},...i.eventIds&&i.eventIds.length>0?{event_ids:i.eventIds}:i.sid?{event_ids:fe(t,i.sid,"design",1)}:{},...i.sid?{sid:i.sid}:{},...i.phase?{design_phase:{uc_root:le(t,E),generation:i.generationTicket?.next_gen??pe(t,i.ucRef)?.gen??1,phase:i.phase,completeness:i.phaseCompleteness??"complete"}}:{}},{expectPrev:t.latestHash}).record,errors:null,minted:S,logicalIds:N,superseded:P,warnings:R,finalizedTests:G,...i.force||i.forceScope?{forceScopeRemaining:M}:{}}}function Le(i,I){let t=[];for(let m of i){let f=m.design_phase;!f||typeof f!="object"||f.uc_root===I&&(typeof f.phase!="string"||typeof f.generation!="number"||t.push({phase:f.phase,generation:f.generation,seq:m.seq,completeness:f.completeness==="partial"?"partial":"complete"}))}return t.sort((m,f)=>m.seq-f.seq)}export{$e as a,De as b,Le as c};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as t}from"./chunk-NR23HZU4.js";async function l(e){let o=e.credentials.expires_at,i=e.thresholdSeconds??300;if(o-Date.now()/1e3>=i)return null;let r=e.creds.loadClient(e.profile,e.env);if(!r)return null;let n=await new t(e.env).refreshToken(e.credentials.refresh_token,r.client_id),s=Math.floor(Date.now()/1e3)+n.expires_in;return e.creds.saveCredentials(e.profile,e.env,{access_token:n.access_token,refresh_token:n.refresh_token,expires_at:s,scope:n.scope}),{accessToken:n.access_token,refreshToken:n.refresh_token,expiresAt:s,scope:n.scope}}export{l as a};
2
+ import{a as t}from"./chunk-4NFCAGRK.js";async function l(e){let o=e.credentials.expires_at,i=e.thresholdSeconds??300;if(o-Date.now()/1e3>=i)return null;let r=e.creds.loadClient(e.profile,e.env);if(!r)return null;let n=await new t(e.env).refreshToken(e.credentials.refresh_token,r.client_id),s=Math.floor(Date.now()/1e3)+n.expires_in;return e.creds.saveCredentials(e.profile,e.env,{access_token:n.access_token,refresh_token:n.refresh_token,expires_at:s,scope:n.scope}),{accessToken:n.access_token,refreshToken:n.refresh_token,expiresAt:s,scope:n.scope}}export{l as a};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as n}from"./chunk-RZ4F3BHX.js";import{a as c}from"./chunk-A2IQRVPR.js";import{v as s,w as a}from"./chunk-B4LLKQTK.js";import{createHash as h,randomBytes as g}from"crypto";var l=class{authBaseUrl;consentUrl;constructor(t="prod"){let e=c(t);this.authBaseUrl=e.authBaseUrl,this.consentUrl=e.consentUrl}static generatePkce(){let t=g(96).toString("base64url").slice(0,128),e=h("sha256").update(t).digest("base64url");return[t,e]}buildAuthorizationUrl(t,e,r,o){let i=new URLSearchParams({response_type:"code",client_id:t,redirect_uri:o,scope:a,code_challenge:e,code_challenge_method:"S256",state:r});return`${this.consentUrl}/oauth2?${i.toString()}`}async registerClient(t){let e=await n(`${this.authBaseUrl}/oauth2/register`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_name:s,redirect_uris:[t],grant_types:["authorization_code"],response_types:["code"],client_type:"public",application_type:"native"})});if(!e.ok)throw new Error(`DCR failed: ${e.status} ${await e.text()}`);return e.json()}async exchangeCode(t,e,r,o){let i=await n(`${this.authBaseUrl}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:t,redirect_uri:o,client_id:e,code_verifier:r})});if(!i.ok)throw new Error(`Token exchange failed: ${i.status}`);return i.json()}async refreshToken(t,e){let r=await n(`${this.authBaseUrl}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:t,client_id:e})});if(!r.ok)throw new Error(`Token refresh failed: ${r.status}`);return r.json()}async revokeToken(t,e,r="access_token"){await n(`${this.authBaseUrl}/oauth2/revoke`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t,token_type_hint:r,client_id:e})})}async validateToken(t){let e=new AbortController,r=setTimeout(()=>e.abort(),1e4);try{let o=await n(`${this.authBaseUrl}/api/user`,{headers:{Authorization:`Bearer ${t}`,Accept:"application/json","Content-Type":"application/json"},signal:e.signal});return clearTimeout(r),o.ok}catch{return clearTimeout(r),!1}}};export{l as a};
2
+ import{a as n}from"./chunk-RZ4F3BHX.js";import{a as c}from"./chunk-O75ZHGJG.js";import{v as s,w as a}from"./chunk-ZUGCHQFC.js";import{createHash as h,randomBytes as g}from"crypto";var l=class{authBaseUrl;consentUrl;constructor(t="prod"){let e=c(t);this.authBaseUrl=e.authBaseUrl,this.consentUrl=e.consentUrl}static generatePkce(){let t=g(96).toString("base64url").slice(0,128),e=h("sha256").update(t).digest("base64url");return[t,e]}buildAuthorizationUrl(t,e,r,o){let i=new URLSearchParams({response_type:"code",client_id:t,redirect_uri:o,scope:a,code_challenge:e,code_challenge_method:"S256",state:r});return`${this.consentUrl}/oauth2?${i.toString()}`}async registerClient(t){let e=await n(`${this.authBaseUrl}/oauth2/register`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_name:s,redirect_uris:[t],grant_types:["authorization_code"],response_types:["code"],client_type:"public",application_type:"native"})});if(!e.ok)throw new Error(`DCR failed: ${e.status} ${await e.text()}`);return e.json()}async exchangeCode(t,e,r,o){let i=await n(`${this.authBaseUrl}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:t,redirect_uri:o,client_id:e,code_verifier:r})});if(!i.ok)throw new Error(`Token exchange failed: ${i.status}`);return i.json()}async refreshToken(t,e){let r=await n(`${this.authBaseUrl}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:t,client_id:e})});if(!r.ok)throw new Error(`Token refresh failed: ${r.status}`);return r.json()}async revokeToken(t,e,r="access_token"){await n(`${this.authBaseUrl}/oauth2/revoke`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t,token_type_hint:r,client_id:e})})}async validateToken(t){let e=new AbortController,r=setTimeout(()=>e.abort(),1e4);try{let o=await n(`${this.authBaseUrl}/api/user`,{headers:{Authorization:`Bearer ${t}`,Accept:"application/json","Content-Type":"application/json"},signal:e.signal});return clearTimeout(r),o.ok}catch{return clearTimeout(r),!1}}};export{l as a};
@@ -0,0 +1,12 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{b as jt}from"./chunk-ZMNJBUAO.js";import{f as tr}from"./chunk-W5TTF7GB.js";import{a as Bt}from"./chunk-I7TIGB7K.js";import{a as ke,c as Yt,e as Zt,f as Fe,g as Qt,h as or}from"./chunk-AJ56AMT6.js";import{a as Xt,b as rr,c as sr,d as ir,e as dt,f as nr}from"./chunk-F7ISS545.js";import{a as Se,b as qt,c as Gt,d as Lt,e as Vt}from"./chunk-7OYZR6JA.js";import{a as Kt,b as Jt}from"./chunk-JFAFKHDX.js";import{b as Ft}from"./chunk-YKTYVJBN.js";import{a as er}from"./chunk-IMR64OCZ.js";import{a as zt}from"./chunk-L2TV4G56.js";import{c as Wt}from"./chunk-6KPPGMO2.js";import{d as Ut}from"./chunk-DBKNJRJG.js";import{a as Be}from"./chunk-5FJJJNJK.js";import{d as Mt}from"./chunk-W4B5LOEX.js";import{a as be,b as ct}from"./chunk-DNNZ353O.js";import{a as Nt,e as Ht}from"./chunk-GFKCTYCA.js";import{a as we}from"./chunk-NVGBE2DR.js";import{A as Z,k as ye,o as je}from"./chunk-TH47OOBV.js";import{f as It}from"./chunk-DUAXZYAD.js";import{e as at}from"./chunk-DBIBROYW.js";import{d as de}from"./chunk-WXHQYYD5.js";import{b as Ot}from"./chunk-IAHKTEET.js";import{b as ot}from"./chunk-IDX3TOPY.js";import{a as At}from"./chunk-5EOX4MEY.js";import{appendFileSync as wr,mkdirSync as ut,rmdirSync as br,writeFileSync as lt}from"fs";import{dirname as mr,extname as Sr,join as oe}from"path";var J=class extends Error{code;constructor(e,a){super(`${e}: ${a}`),this.name="ProposalAdapterError",this.code=e}};function cr(r){return r.version===2}var ar=8;function vr(r){let e=/^extract@(\d+)$/.exec(r??"");return e?Number.parseInt(e[1],10):null}var yr=r=>typeof r=="object"&&r!==null&&"op"in r;function qe(r,e,a){return{anchor:r.anchor,quote:r.quote,...a||r.source_id!==e?{source_id:r.source_id}:{}}}function dr(r,e,a={}){let m=vr(a.templateVersion),_=m!==null&&m>=5,x=m!==null&&m<5,y=r.archived!=null&&r.archived.length>0&&m!==null&&m<5;if(y&&a.warn?.(`dropped ${r.archived.length} archive op(s): the bound extract template @${m} never described archiving \u2014 nothing was archived; the use-cases still land`),!_&&r.read_basis.length!==1)throw new J("READ_BASIS_COUNT",`read_basis must have exactly 1 element, got ${r.read_basis.length}`);if(r.read_basis.length===0)throw new J("READ_BASIS_COUNT","read_basis must not be empty");let v=r.read_basis[0],g=r.read_basis.length>1,k=r.use_cases.map(i=>{if(x&&i.cite.length!==1)throw new J("CITE_COUNT",`${i.temp_ref}: cite must have exactly 1 element, got ${i.cite.length}`);if(i.cite.length<1||i.cite.length>ar)throw new J("CITE_COUNT",`${i.temp_ref}: 1..${ar} cites allowed, got ${i.cite.length}`);let I=(h,Q)=>{if(!_&&h!==v.source_id)throw new J("SOURCE_MISMATCH",`${Q}: cite source ${h} != read_basis source ${v.source_id} (single-source)`)};I(i.cite[0].source_id,i.temp_ref);let P=i.cite.map(h=>(I(h.source_id,i.temp_ref),qe(h,v.source_id,_&&(g||h.source_id!==v.source_id)))),u=(i.updated?.criteria??[]).some(yr);if(!_&&u)throw new J("CRITERIA_OPS_UNSUPPORTED",`${i.temp_ref}: op-union updated.criteria (keep/set/remove) needs an extract@5+ binding \u2014 this session is bound to ${a.templateVersion??"an unversioned template"}`);return{temp_ref:i.temp_ref,title:i.title,...i.description!==void 0?{description:i.description}:{},...i.summary!==void 0?{summary:i.summary}:{},...i.actors!==void 0?{actors:i.actors}:{},...i.value!==void 0?{value:i.value}:{},risk:i.risk,cite:P[0],...P.length>1?{cites:P}:{},...i.criteria!=null&&i.criteria.length>0?{criteria:i.criteria.map((h,Q)=>(I(h.cite.source_id,`${i.temp_ref}.criteria[${Q}]`),{text:h.text,cite:qe(h.cite,v.source_id,_&&h.cite.source_id!==v.source_id)}))}:{},depends_on_hint:i.depends_on_hint,matches_existing:i.matches_existing,...i.conflicts_with!=null?{conflicts_with:i.conflicts_with}:{},...i.changed?{changed:!0}:{},...i.updated!=null?{updated:{...i.updated.title!=null?{title:i.updated.title}:{},...i.updated.description!=null?{description:i.updated.description}:{},...i.updated.summary!=null?{summary:i.updated.summary}:{},...i.updated.actors!=null?{actors:i.updated.actors}:{},...i.updated.value!=null?{value:i.updated.value}:{},...i.updated.risk!=null?{risk:i.updated.risk}:{},...i.updated.criteria!=null?{criteria:u?i.updated.criteria.map(h=>h.op==="set"?{op:"set",text:h.text,cite:qe(h.cite,v.source_id,_&&h.cite.source_id!==v.source_id)}:h.op==="keep"?{op:"keep",ref:h.ref,text:h.text}:{op:"remove",ref:h.ref,text:h.text,reason:h.reason}):i.updated.criteria.map((h,Q)=>(I(h.cite.source_id,`${i.temp_ref}.updated.criteria[${Q}]`),{text:h.text,cite:qe(h.cite,v.source_id,_&&h.cite.source_id!==v.source_id)}))}:{}}}:{},...i.change_note!=null?{change_note:i.change_note}:{}}});return{version:1,read_basis:e,source:{source_id:v.source_id,source_cid:v.source_cid},use_cases:k,...g?{sources:r.read_basis.map(i=>({source_id:i.source_id,source_cid:i.source_cid}))}:{},...r.extraction_of!=null&&r.extraction_of.length>0?{extraction_claims:r.extraction_of.map(i=>({source_id:i.source_id,completeness:i.completeness}))}:{},...r.archived!=null&&r.archived.length>0&&!y?{archived:r.archived.map(i=>({target:i.target,reason:i.reason,basis:i.basis}))}:{}}}function ur(r){let{contextDir:e,graph:a}=r,m=r.maxDigestBytes??4096,_={},x=[];for(let[g,k]of a.heads){if(_[g]=k,typeof k!="string")continue;let i=a.mediaOf(k),I=a.getNode(k)?.content?.blob;if(typeof I=="string")if(i.format==="image")x.push({source_id:g,cid:k,format:"image",blobRef:{path:we(e,I),cid:I}});else{let P=be(e,a,k)?.toString("utf8")??"";x.push({source_id:g,cid:k,format:i.format,text:P})}}x.sort((g,k)=>g.source_id<k.source_id?-1:1);let y=[];for(let g of a.byLabel(de.STYLENOTE).sort((k,i)=>k.cid<i.cid?-1:1))a.superseded.has(g.cid)||y.push(`\u2022 ${String(g.content.statement)} [${String(g.content.learned_from_kind)}]`);let v="";for(let g of y){if(Buffer.byteLength(v+g+`
3
+ `,"utf8")>m)break;v+=g+`
4
+ `}return{read_basis:_,sources:x,styleNoteDigest:v}}function lr(r,e){let a=ur({contextDir:r,graph:e}).styleNoteDigest;return a.length>0?a:void 0}function mt(r,e,a,m,_){let x=null,y=()=>x??=_&&Object.keys(_).length>0?Promise.resolve(_):Ut().catch(()=>({}));return{contextDir:r,rootSid:e,locks:at(r,e),probe:m??Bt(r,{resolveAlias:async v=>qt(v,{env:process.env,auth:await y()}),embed:async(v,g)=>Gt(v,g,{env:process.env,auth:await y()}),readVector:(v,g)=>Lt(r,v,g),writeVector:(v,g,k)=>Vt(r,v,g,k)}),...a?.length?{reservedEventIds:a}:{}}}function gt(r,e){let a=[],m=[];for(let _ of r.use_cases){let x=_.matches_existing;x?.cid&&e.hasNode(x.cid)?a.push({ref:x.cid,expectedTip:e.tipOf(x.cid)}):m.push({tempRef:_.temp_ref,title:String(_.title??""),probeText:String(_.title??"")})}return{verb:"extract",ucTargets:a,newBuCandidates:m,sourcePins:[{source_id:r.source.source_id,source_cid:r.source.source_cid}],readBasis:r.read_basis??null}}function kr(r,e){let a=(r.images??[]).filter(m=>m.delivery==="selected");if(a.length!==0)return a.map(m=>({ref:m.ref,...m.page!==void 0?{page:m.page}:{},...m.loc!==void 0?{loc:m.loc}:{},media_type:m.media_type,blob_ref:{path:we(e,m.blob),cid:m.blob}}))}function $r(r){return r.length>8&&r[0]===137&&r[1]===80&&r[2]===78&&r[3]===71?"image/png":r.length>3&&r[0]===255&&r[1]===216&&r[2]===255?"image/jpeg":r.length>12&&r.toString("ascii",0,4)==="RIFF"&&r.toString("ascii",8,12)==="WEBP"?"image/webp":null}function Ge(r){return r.toISOString().replace(/[-:]/g,"").slice(0,15)}function gr(r){return r.startsWith("su-conv-")?`conv-${Ot(Buffer.from(r,"utf8")).slice(0,8)}`:r}function pr(r){return r.source_id.startsWith("su-conv-")?"the conversation":r.source_id}function Rr(r,e,a){return`reading ${pr(r)}${a>1?` (source ${e} of ${a})`:""}`}function $e(r){return r.toLowerCase().trim().replace(/\s+/g," ")}function hr(r,e){let a=new Map,m=new Map,_=new Map;for(let{cid:y,content:v}of e.byLabel(de.USECASE)){if(e.superseded.has(y))continue;(e.trust.get(y)==="archived"?_:m).set($e(String(v.title??"")),y)}let x=y=>e.trust.get(y)==="archived"?{cid:y,archived:!0,reason:e.archivedReason.get(y)}:{cid:y};for(let y of r.use_cases){if(y.matches_existing){let k=y.matches_existing.cid;if(e.superseded.has(k)){let i=e.tipOf(k);k=e.superseded.has(i)?null:i}if(k!==null){a.set(y.temp_ref,x(k));continue}}let v=m.get($e(y.title));if(v){a.set(y.temp_ref,{cid:v});continue}let g=_.get($e(y.title));g&&a.set(y.temp_ref,x(g))}return a}var fr=/^(\S+)\.criteria\[(\d+)\]/;function Cr(r,e,a){if(e.length===0||!e.every(_=>fr.test(_.detail)))return!1;let m=new Map;for(let _ of e){let x=fr.exec(_.detail),y=m.get(x[1])??new Set;y.add(Number(x[2])),m.set(x[1],y)}for(let _ of r.use_cases){let x=m.get(_.temp_ref);x?.size&&(_.criteria=(_.criteria??[]).filter((y,v)=>!x.has(v)),a(`${_.temp_ref}: dropped ${x.size} criteria with unverifiable cites \u2014 committed without them (criteria are hints, not oracles)`))}return!0}async function ht(r,e,a,m,_=()=>{},x,y){let v=(g,k)=>_(g,k,r.session_id);return Zt(r,e,a,m,_,{async onProposalEvent(g){let k=g,i=null,I=null;if(cr(k))try{i=dr(k,r.read_basis,{templateVersion:y?.()??null,warn:P=>{e.out(`warning: ${P}`),v("adapter",{warn:P})}}),v("adapter",{ok:!0,use_cases:i.use_cases.length})}catch(P){I=P instanceof J?P.message:String(P),v("adapter",{ok:!1,error:I})}else i=k;return i&&i.use_cases.length===0&&(e.out("warning: the agent proposed ZERO use-cases for this source"),e.emit?.({type:"warning",code:"ZERO_USE_CASES",message:"the agent proposed ZERO use-cases for this source"})),i&&x&&await x(i),{proposal:i,error:I}}})}var Dr=new Set(["agent","ci","override"]);async function Ss(r,e){let a=`ext-${Ge(e.now?.()??new Date)}-lk${Math.random().toString(36).slice(2,8)}`,_=at(e.contextDir,a,e.now?{now:e.now}:void 0).tryAcquire([{kind:"extract"}],{hold:"session",verb:"extract"});if("contended"in _){let x=_.contended.holder,y=`another extraction is running on this context${x?` (pid ${x.pid})`:""} \u2014 retry when it finishes`;return e.out(y),e.emit?.({type:"error",message:y,code:"EXTRACT_LOCKED"}),2}try{return await Er(r,e)}finally{_.release()}}async function Er(r,e){let a=r.mode??"interactive";if(r.posture==="reconcile"){if(r.trust==="hold"){let n="error: --trust hold has no meaning here \u2014 a reconcile IS the review; drop the flag";return e.out(`${n} [TRUST_USAGE]`),e.emit?.({type:"error",message:n,code:"TRUST_USAGE"}),2}if(!r.source||!r.changeContext){let n="reconcile posture needs a pinned source and its change context \u2014 internal wiring fault";return e.out(`error: ${n}`),e.emit?.({type:"error",message:n,code:"POSTURE_USAGE"}),2}if(a==="ci"){let n="reconcile posture is not available under --mode ci \u2014 a held changeset needs a durable session; use --mode agent";return e.out(`error: ${n}`),e.emit?.({type:"error",message:n,code:"POSTURE_USAGE"}),2}}if(r.trust==="hold"&&a==="interactive")return e.out("error: --trust hold only applies to headless runs \u2014 in interactive chat you review items in-session anyway; use --mode agent to hold everything for review"),e.emit?.({type:"error",message:"error: --trust hold only applies to headless runs \u2014 use --mode agent",code:"TRUST_USAGE"}),2;if(a==="interactive"){if(!e.isTTY)return e.out("extract: --mode interactive needs a TTY (use --mode agent|ci|override headless)"),2}else if(!Dr.has(a))return e.out(`extract: unknown mode "${a}" \u2014 interactive | agent | ci | override`),2;if(r.trust!==void 0){if(a==="ci")return e.out("error: --trust is not available under --mode ci (ci is fail-closed \u2014 no trust dials)"),e.emit?.({type:"error",message:"error: --trust is not available under --mode ci",code:"TRUST_UNDER_CI"}),2;if(r.trust!=="auto"&&r.trust!=="hold")return e.out(`error: --trust must be auto | hold, got '${r.trust}'`),e.emit?.({type:"error",message:`error: --trust must be auto | hold, got '${r.trust}'`,code:"TRUST_USAGE"}),2}let m=e.telemetry?.enabled?e.telemetry:void 0,_=Ge(e.now?.()??new Date),x=m?At(m.ids.context_instance_id??null,"extract",m.ids.session_id):oe(e.contextDir,"logs",`extract-${_}.log`);ut(mr(x),{recursive:!0});let y=`run-${_}-${Math.random().toString(36).slice(2,8)}`,v=n=>n==="error"||n==="failed_proposal"?"error":n==="repair_respawn"?"warn":"info",g=(n,d,s)=>{try{wr(x,JSON.stringify({ts:new Date().toISOString(),level:v(n),run_id:y,...m?{user_session_id:m.ids.session_id}:{},...s?{session_id:s}:{},kind:n,data:d})+`
5
+ `)}catch{}m?.wireTrace(n,d,s)};{let n=e.out;e.out=d=>{g("transcript",{line:d}),n(d)}}e.out(`trace: ${ke(x)}`),e.emit?.({type:"run_start",mode:a,trace:x,...m?{session:m.ids.session_id}:{}});let k=Ft();if(k&&e.out(k),e.preflightTurn){let n=await e.preflightTurn();if(g("preflight",n),!n.ok)return e.out(n.message??"error: turn-endpoint preflight failed"),e.emit?.({type:"error",message:n.message??"error: turn-endpoint preflight failed",code:"PREFLIGHT"}),2}let i=Z(e.contextDir),I=lr(e.contextDir,i),P=r.sources?.length?r.sources:r.source?[r.source]:[];if(P.length>0){if(r.resume){let n="error: --source cannot be combined with --resume (the resumed session already has its scope)";return e.out(n),e.emit?.({type:"error",message:n,code:"SOURCE_WITH_RESUME"}),2}for(let n of P){let d=i.heads.get(n);if(typeof d!="string"){let s=d===null?`error: --source ${n} was ingested but is retired \u2014 re-ingest it to extract again`:`error: --source ${n} is not an ingested source (kane-cli context list shows them)`;return e.out(s),e.emit?.({type:"error",message:s,code:"SOURCE_UNKNOWN"}),2}}}let u=null,h=null;if(r.resume){try{{let c=await nr(e.contextDir,r.resume,i,{verb:"extract",deps:{onWarn:C=>e.out(`note: ${C}`)}});{let C=Object.keys(c.handle.state.read_basis??{});if(C.length>1){let j=`error: session ${r.resume} spans ${C.length} sources \u2014 multi-source resume isn't supported yet; committed work is preserved (re-run kane-cli context extract for anything remaining)`;return e.out(j),e.emit?.({type:"error",message:j,code:"MULTI_SOURCE_RESUME"}),c.handle.release(),2}h=c,g("resume_kind",{kind:c.view.pointer===null?"bare-base":c.view.pointer.at==="final"?"pause":"crash"}),u={handle:c.handle,represent:c.represent,questions:c.questions,staleBasis:c.drift.map(j=>j.subject)}}}}catch(c){let C=c instanceof Error?c.message:String(c);return e.out(`error: ${C}`),e.emit?.({type:"error",message:`error: ${C}`,...c instanceof dt?{code:c.code}:{}}),c instanceof dt?2:1}let n=h?null:Xt(u.handle.state.verb,"extract",r.resume);if(n)return e.out(n.message),e.emit?.({type:"error",message:n.message,code:n.code}),u.handle.release(),2;let d=u.handle.state.change_basis;if(d&&(i.heads.get(d.source_id)??null)!==d.new_head){let c=`error: ${d.source_id} moved while this reconcile extraction was paused \u2014 its recorded change context no longer matches; re-run kane-cli maintain reconcile against the current file (session ${r.resume} is defunct and can be ignored)`;return e.out(c),e.emit?.({type:"error",message:c,code:"CHANGE_BASIS_MOVED"}),u.handle.release(),2}if(h&&h.view.pointer!==null&&h.drift.length>0){if(!await e.confirmStale(`changed since the pause: ${h.drift.map(C=>C.subject).join(", ")} \u2014 re-ground and continue against the current versions?`)){let C=`resume aborted: the context moved since the pause (${h.drift.map(j=>j.subject).join(", ")}) \u2014 session ${r.resume} is preserved`;return e.out(C),e.emit?.({type:"error",message:C,code:"RESUME_DRIFT"}),u.handle.release(),2}}else u.staleBasis.length>0&&e.out(`note: changed since the pause: ${u.staleBasis.join(", ")} \u2014 re-presented items may be stale`);let s=[...new Set([...u.handle.state.held_receipts??[],...h?.view.kane?.held_receipts??[]])];if(s.length>0)if(e.chat?.holdReceipt)for(let c of s)e.chat.holdReceipt(c);else e={...e,initialMessage:[s.join(`
6
+
7
+ `),e.initialMessage].filter(Boolean).join(`
8
+
9
+ `)};u.handle.state.assumed.length>0&&e.out(`note: ${u.handle.state.assumed.length} default(s) were assumed while you were away \u2014 kane-cli context sessions show ${r.resume} lists them`)}let Q=i.extractedSourceCids,ue=!!(r.force||u?.handle.state.force),ee=[],se=[],Re=P.length>0?new Set(P):null;for(let[n,d]of i.heads.entries())if(d!=null&&!(Re&&!Re.has(n))){if(!Re&&!u&&n.startsWith("su-conv-")){e.out(`skipped ${n} \u2014 conversation source; extract it explicitly with --source ${n}`),se.push({source_id:n,reason:"conversation"});continue}if(u){let s=n in u.handle.state.read_basis,c=u.handle.state.corpus_cursor.remaining.includes(n);if(!s&&!c)continue;if(c&&!ue&&Q.has(d)){e.out(`${n} already extracted \u2014 skipped (--force re-runs it)`),se.push({source_id:n,reason:"cached"});continue}}else if(!ue&&Q.has(d)){e.out(`${n} already extracted \u2014 skipped (--force re-runs it)`),se.push({source_id:n,reason:"cached"});continue}ee.push({source_id:n,cid:d})}let _r=n=>{let d=tr(e.contextDir,n);d&&e.out(`note: a reconcile plan for ${n} is pending (${d.pending} item(s)) \u2014 resume with \`kane-cli maintain reconcile --apply ${d.path}\``)};for(let n of se)n.reason==="cached"&&_r(n.source_id);if(e.emit?.({type:"corpus",sources:ee,skipped:se}),ee.length===0){if(u){let s=`error: resumed session's paused source (${Object.keys(u.handle.state.read_basis).join(", ")||"unknown"}) is no longer in the corpus \u2014 restore/re-ingest it and re-run --resume ${r.resume}, or discard with: kane-cli context sessions clean ${r.resume}`;return e.out(s),e.emit?.({type:"error",message:s,code:"SOURCE_MISSING"}),u.handle.release(),2}let n=se.length>0&&se.every(d=>d.reason==="conversation");return e.out(Re?`extract: nothing to do \u2014 ${P.join(", ")} ${P.length===1?"is":"are all"} already extracted at the current snapshot (--force to re-run)`:n?"extract: nothing to do \u2014 only conversation sources here (extract one explicitly with --source <id>)":"extract: nothing to do \u2014 every ingested source is already extracted"),0}let te=!r.plan&&a!=="ci",Ce=e.now?.()??new Date,De=r.resume??`ext-${Ge(Ce)}-${gr(ee[0].source_id)}`,T=null,Ee=!1;te&&!u&&(T=ot(e.contextDir,{sid:De,mode:"agent",created_at:Ce.toISOString(),expires_at:new Date(Ce.getTime()+1440*60*1e3).toISOString(),agent_state:{schema:2,items:[],provider_state:""},pending:{questions:[],proposals:[]},assumed:[],read_basis:{[ee[0].source_id]:ee[0].cid},corpus_cursor:{remaining:ee.slice(1).map(n=>n.source_id)},conv_source:"",verb:"extract",...ue?{force:!0}:{},...r.changeContext?{change_basis:{source_id:r.changeContext.source_id,new_head:r.changeContext.new_head}}:{},...m?{user_session_id:m.ids.session_id}:{}}));let Le=h?h.represent.map(n=>n.event_id).filter(n=>typeof n=="string"):[],w=u?.handle??T,ft=!1,pt=()=>{try{br(oe(e.contextDir,"sessions"))}catch{}},_t=()=>{if(T){try{T.complete()}catch{T.release()}T=null,w=null,pt()}},Pe=new Map;if(u&&u.questions.length>0&&!r.message&&!r.withSource){e.out(`re-presenting ${u.questions.length} unanswered question(s) from the paused session`);let n=await e.ask(u.questions.map(rr));if(Array.isArray(n))for(let d of n)Pe.set(d.id,d)}let le=e.by??{kind:"human",id:"owner"},re=a==="interactive"&&!r.plan&&!!e.chat,Ve=0,xt=0,Te=!1,me=0,We=()=>{Te||(Te=!0,e.out("note: duplicate detection is running in a reduced mode this run \u2014 new items will be held for your review instead of committed"),m?.event("ASR_EMBED_DEGRADED",{}),e.emit?.({type:"degraded",reason:"embed_fallback"}))},Ae=null,ge=()=>w??T,ze=(n,d,s)=>{let c=ge();if(!c)return;let C=d.map(b=>({label:"usecase",content:{title:b.title,...b.summary!==void 0?{summary:b.summary}:{},...b.risk!==void 0?{risk:b.risk}:{},derived:!0,_held:{source_id:n.source_id,source_cid:n.cid,anchor:b.cite?.anchor??"L1-L1",quote:b.cite?.quote??""}},rationale:`held (${s==="degraded"?"embed degraded \u2014 lexical dedup only":"--trust hold"}): ${n.source_id} @ ${n.cid.slice(0,19)} ${b.cite?.anchor??""}`,edges:[],tempRef:b.temp_ref})),j=c.state.pending;c.save({pending:{questions:j.questions,proposals:[...j.proposals,...C]}}),me+=C.length,Ae=c.state.sid,e.emit?.({type:"held",source_id:n.source_id,count:C.length,reason:s==="degraded"?"embed_degraded":"trust_hold"})},F=[],vt=!1,M=[...ee];try{let n=d=>{let s=w;if(!s)return;let c=s.state.ingest_schedule??[];if(!c.some(b=>b.status==="pending"))return;let C=Z(e.contextDir),j=c.map(b=>b.status!=="pending"?b:(C.heads.get(b.source_id)??null)!==b.cid?(e.out(`note: ${b.source_id} changed after it was added \u2014 skipping its extraction this run; re-run kane-cli context extract to pick up the newer version`),{...b,status:"skipped",note:"head moved since landing"}):C.extractedSourceCids.has(b.cid)||M.some(V=>V.source_id===b.source_id&&V.cid===b.cid)?{...b,status:"done"}:M.some(V=>V.source_id===b.source_id)?(e.out(`note: an older version of ${b.source_id} is already queued this run \u2014 the newly landed version is not extracted; re-run kane-cli context extract to pick it up`),{...b,status:"skipped",note:"an older version of the source was already queued this run"}):(M.push({source_id:b.source_id,cid:b.cid}),e.out(`queued ${b.source_id} for extraction in this run (landed mid-run)`),{...b,status:"done"}));s.save({ingest_schedule:j,corpus_cursor:{remaining:M.slice(d+1).map(b=>b.source_id)}})};for(let d=0;d<M.length;n(d),d++){let s=M[d],c=Z(e.contextDir),C={current:c};e.chat?.attachOnCommitted?.(t=>{C.current=t});let j=c.getNode(s.cid),b=String(j?.content.blob??""),Oe=be(e.contextDir,c,s.cid);if(!Oe){e.out(`error: ${s.source_id}: its stored content is missing \u2014 re-ingest the file (kane-cli context ingest <file>) [BLOB_MISSING]`),e.emit?.({type:"error",source_id:s.source_id,message:`error: ${s.source_id}: blob ${b} missing from .context/blobs`,code:"BLOB_MISSING"}),F.push(s.source_id);continue}let V=c.mediaOf(s.cid),Ke=V.media_type.startsWith("image/");if(!Ke){let t=$r(Oe);if(t){e.out(`skipping ${s.source_id}: binary ${t} ingested before image support \u2014 re-ingest it (kane-cli context ingest) to extract from it`),e.emit?.({type:"source_skipped",source_id:s.source_id,reason:"binary_pre_media"});continue}}let yt=Ke?`0001| (image source ${s.source_id} \u2014 the content is attached as an image; cite it with anchor img#whole)`:ct(Oe),Ie=(t,o)=>{let l=new Map;l.set(s.source_id,{media:V,numberedText:yt});for(let f of o.sources??[]){if(l.has(f.source_id))continue;let D=be(e.contextDir,t,f.source_cid);if(!D)continue;let $=t.mediaOf(f.source_cid),E=$.media_type.startsWith("image/")?`0001| (image source ${f.source_id} \u2014 the content is attached as an image; cite it with anchor img#whole)`:ct(D);l.set(f.source_id,{media:$,numberedText:E})}return l},wt=Ge(e.now?.()??new Date),ie=`${wt}-${s.source_id}`,he=!!(u&&s.source_id in u.handle.state.read_basis),Me=w?De:`ext-${wt}-${gr(s.source_id)}`,Je=M.slice(d+1).map(t=>t.source_id);w&&te&&!he&&w.save({read_basis:{[s.source_id]:s.cid},corpus_cursor:{remaining:Je}});let ne="";if(re){let t=Wt({contextDir:e.contextDir,graph:Z(e.contextDir),sessionStamp:Me,by:le});t.errors===null||t.errors[0]?.code==="CONV_SOURCE_EXISTS"?(ne=t.sourceId,e.chat.attachConversationSource?.(ne),C.current=Z(e.contextDir)):e.out(`warning: notes you add in chat can't be saved to the context this session (${t.errors[0]?.detail})`)}let bt={type:"run_config",version:1,session_id:Me,mode:a,source:{source_id:s.source_id,source_cid:s.cid,kind:Mt.has(V.format)?V.format:Sr(s.source_id)||"md",numbered_text:yt,...(()=>{let t=kr(V,e.contextDir);return t?{images:t}:{}})()},existing_use_cases:c.byLabel(de.USECASE).filter(({cid:t})=>c.trust.get(t)!=="archived"&&!c.superseded.has(t)).map(({cid:t,content:o})=>({id:t,title:String(o.title??""),summary:String(o.summary??"")})),read_basis:C.current.latestHash,max_free_text_rounds:Yt,graph_reads:!0,verb:"extract",...I!==void 0?{style_note_digest:I}:{},...r.changeContext&&r.changeContext.source_id===s.source_id?{change_context:r.changeContext}:{},topology:er(),...re?{chat:!0}:{},...Ke?{image_sources:[{source_id:s.source_id,source_cid:s.cid,media_type:V.media_type,blob_ref:{path:we(e.contextDir,b),cid:b}}]}:{},...u&&!h&&s.source_id in u.handle.state.read_basis?{resume:{agent_state:u.handle.state.agent_state}}:{},...te&&w?{checkpoints:!0}:{}},R=h&&he?{...h.spawnConfig,mode:a}:bt;if(te&&w&&!ft){ft=!0;let{resume:t,...o}=bt;Ht(e.contextDir,De,{schema:Nt,kind:"base",sid:De,verb:"extract",mode:a,created_at:Ce.toISOString(),run_config:o,conv_source:ne||w.state.conv_source||"",store_watermark:It(e.contextDir)})}let St=h&&he?0:w?.state.checkpoint?.seq??0,fe={current:null};if(R.resume&&"schema"in R.resume){let t=R.resume.binding?.template_version;typeof t=="string"&&(fe.current=t)}let Xe=te&&w?ir({contextDir:e.contextDir,handle:w,seqBase:()=>St,peekHeldReceipts:()=>e.chat?.peekHeldReceipts?.()??[],readBasis:()=>({[s.source_id]:s.cid}),corpusCursor:()=>({remaining:Je}),onSoftCap:t=>e.out(t),onStat:t=>g("ckpt_stat",t,R.session_id),...e.now?{now:e.now}:{}}):void 0,ae=Xe?{...Xe,persist:t=>{let o=t.binding?.template_version;return typeof o=="string"&&o&&(fe.current=o),Xe.persist(t)}}:void 0;re||e.out(u&&s.source_id in u.handle.state.read_basis?`resuming: ${s.source_id} (session ${r.resume})`:`reading ${s.source_id} (source ${d+1} of ${M.length})`),e.emit?.({type:"source_start",source_id:s.source_id,cid:s.cid,index:d+1,total:M.length,resumed:!!(u&&s.source_id in u.handle.state.read_basis)}),e.chat?.ledger?.({kind:"banner",text:Rr(s,d+1,M.length)}),e.chat?.setWorking?.(`Reading ${pr(s)}\u2026`);let Ye=new Map;g("spawn",{source_id:s.source_id,source_cid:s.cid,resume:!!u,chat:re},R.session_id);let kt=!1,$t=!1,Ze=!1,Rt=async t=>{let o=Z(e.contextDir),l=ye(t,Ie(o,t),o);if(g("kane_validate",{errors:l.map(p=>p.code)},R.session_id),l.length>0){if(e.nested){e.chat?.ledger?.({kind:"commit",ok:!1,line:"proposal failed validation \u2014 nothing landed",warnings:l.map(p=>`${p.code}: ${p.detail}`)}),$t=!0;return}e.chat.submit("[auto-repair] the proposal failed validation: "+l.map(p=>`${p.code}: ${p.detail}`).join("; ")+" \u2014 please re-finalize with these fixed.");return}let f=Z(e.contextDir),D=hr(t,f),$=oe(e.contextDir,"proposals",ie);ut($,{recursive:!0}),lt(oe($,"proposal.json"),JSON.stringify(t,null,2)+`
10
+ `);let E=new Map(t.use_cases.map(p=>[p.temp_ref,{resolution:"skipped"}])),Y=mt(e.contextDir,R.session_id,Le,e.probe,e.auth),O=await Se(Y,gt(t,f),p=>{if(p.degradedProbe&&ge()!==null&&t.use_cases.some(xe=>xe.matches_existing==null))return{result:{degradedHold:!0},record:null};let z=je({contextDir:e.contextDir,graph:p.graph,proposal:t,proposalId:ie,verdicts:E,by:{kind:"ai",id:"extract-agent"},autoName:!0,allowStaleBasis:!0,eventIds:p.eventIds("extract",1),...te?{sid:p.sid}:{},probeHits:p.probeHits});return z.errors!==null?{errors:z.errors}:{result:z,record:z.record}}),U=O.ok&&"result"in O?O.result:null;if(U!==null&&"degradedHold"in U){We(),ze(s,t.use_cases,"degraded"),Ze=!0,e.chat.ledger?.({kind:"commit",ok:!1,line:`held ${t.use_cases.length} item(s) for review \u2014 semantic dedup ran degraded (embeddings unavailable); nothing saved this turn`});return}let L=U??{record:null,errors:O.ok?null:O.kind==="validation"?O.errors:[{code:O.kind==="contended"?O.err.code:"UNSETTLED",detail:O.kind==="contended"?`held by ${O.err.holder?.owner_sid??"another session"}`:"concurrent activity kept moving the store"}]};if(L.errors){e.chat.ledger?.({kind:"commit",ok:!1,line:"commit failed \u2014 nothing landed",warnings:L.errors.map(p=>`${p.code}: ${p.detail}`)});return}kt=!0,L.record?.event_ids?.length&&w?.markApplied(L.record.event_ids);{let p=L.record.review.filter(z=>z.kind==="pending_update");p.length>0&&(e.out(`${p.length} update(s) held for review`),e.emit?.({type:"update_held",count:p.length,targets:p.map(z=>z.id)}),e.chat?.ledger?.({kind:"commit",ok:!0,line:`${p.length} update(s) held for review`}))}let W=L.record.nodes.length;Ve+=W;let N=t.use_cases.length-W;{let p=Z(e.contextDir),z=new Map;for(let{cid:H,content:K}of p.byLabel(de.USECASE))p.superseded.has(H)||z.set($e(String(K.title??"")),H);let xe=[];for(let H of t.use_cases){let K=null;if(H.matches_existing?.cid&&p.hasNode(H.matches_existing.cid)){let ve=p.tipOf(H.matches_existing.cid);K=p.superseded.has(ve)?null:ve}K=K??z.get($e(H.title))??null,K&&xe.push({ref:H.temp_ref,cid:K,...p.displayNameOf(K)?{id:p.displayNameOf(K)}:{}})}xe.length>0&&e.chat.registerAliases?.(xe),C.current=p;let Pt=H=>{for(let[K,ve]of p.names)if(ve===H&&!p.superseded.has(ve))return K},Tt=zt({verb:"extract",commitN:1,phase:"proposal",committed:L.record.nodes.map(H=>({cid:H.cid,...Pt(H.cid)?{logical_id:Pt(H.cid)}:{}})),reused:N},p);e.emit?.(Tt.event),e.chat.holdReceipt?.(Tt.text)}g("commit",{derived:W,evidence_matched:N,chat:!0},R.session_id),e.chat.ledger?.({kind:"commit",ok:!0,line:W===0&&N>0?`all ${N} matched existing \u2014 nothing new to save`:`saved ${W} use-case${W===1?"":"s"} as drafts`+(N>0?` \xB7 ${N} matched existing`:"")})},Qe=!!(u&&s.source_id in u.handle.state.read_basis),q=Qe&&Pe.size>0?{...e,ask:async t=>t.every(o=>Pe.has(o.id))?(u.handle.markApplied(t.map(o=>`resolveq:${r.resume}:${o.id}`)),e.out(`answered ${t.length} re-asked question(s) from the held resume answers`),t.map(o=>Pe.get(o.id))):e.ask(t)}:e;Qe&&r.message&&(q={...q,initialMessage:r.message}),q={...q,onEmbedDegraded:We};let ce,et;if(w){let t=w,o=q.ask,l=Qt({contextDir:e.contextDir,cwd:mr(e.contextDir),handle:t,note:f=>e.chat?e.chat.note(f):e.out(f),schedule:r.trust!=="hold",...r.trust==="hold"?{scheduleRefused:"this run holds items for review, so its extraction is not scheduled \u2014 kane-cli context extract runs it after the review"}:{},graphSlot:C,...e.now?{now:e.now}:{}});if(q={...q,ask:async f=>{let D=await o(f);if(Array.isArray(D)){let $=D.filter(E=>{if(E.free_text==null||E.free_text.trim()==="")return!1;let Y=f.find(O=>O.id===E.id);return E.selected_index!=null&&Y?.options[E.selected_index]?.input===!0}).map(E=>E.free_text.trim());if($.length>0){let E=t.state.ingest_registry;for(let Y of $)E=Fe(E,Y,e.now?.()??new Date);t.save({ingest_registry:E})}}return D},ingest:l},Qe&&r.withSource){let f=(t.state.pending?.proposals??[]).filter(E=>E.content?._held!=null).length;if(r.trust==="hold"||f>0){let E=f>0?`error: --with-source can't add a source to a session holding ${f} item(s) for review \u2014 resume without --with-source to finish the review first, then land it with kane-cli context ingest [HOLD_MULTI_SOURCE]`:"error: --with-source is not available with --trust hold \u2014 held work from a multi-source run can't be resumed yet; drop --trust hold, or land the source separately with kane-cli context ingest [HOLD_MULTI_SOURCE]";return e.out(E),e.emit?.({type:"error",code:"HOLD_MULTI_SOURCE",message:E}),2}let D=r.withSource;t.save({ingest_registry:Fe(t.state.ingest_registry,D,e.now?.()??new Date)});let $=await l({id:`withsource-${t.state.sid}`,ref:D,purpose:null});if(!$.ok)return e.out(`error: --with-source: ${$.error.message}`),e.emit?.({type:"error",code:$.error.code,message:`--with-source: ${$.error.message}`}),2;q={...q,pendingDeferral:{ingested:{source_id:$.result.source_id,cid:$.result.cid}}}}et=()=>{if(!e.chat?.attachIngest)return;let f=e.chat;ce=f.attachIngest(async D=>{try{t.save({ingest_registry:Fe(t.state.ingest_registry,D,e.now?.()??new Date)});let $=await l({id:`attach-${t.state.sid}-${(t.state.ingest_registry??[]).length}`,ref:D,purpose:null});return $.ok?(f.deferBatch({source_id:$.result.source_id,cid:$.result.cid}),{ok:!0}):{ok:!1,error:$.error.message}}catch($){return{ok:!1,error:$ instanceof Error?$.message:String($)}}})},et()}let S;try{S=await ht(R,{...q,graphSlot:C,...ae?{checkpoint:ae}:{}},Ye,c,g,re?Rt:void 0,()=>fe.current)}catch(t){if(t instanceof Be)return ce?.(),e.chat?.setWorking?.(null),e.out(`error: ${t.message}`),e.emit?.({type:"error",code:"PAIR_MISMATCH",message:t.message}),2;throw t}if(ce?.(),e.chat?.setWorking?.(null),S.errorCode==="binding_mismatch"&&h&&he){let t=await e.ask([{id:"binding-mismatch",text:"this session's saved conversation is no longer accepted by the service \u2014 start the conversation fresh (committed work is kept), or stop and keep the session?",risk:"high",rationale:"the service refused the saved conversation on the first turn after resume",options:[{label:"start fresh",detail:"continue with a fresh conversation \u2014 earlier answers may be re-asked"},{label:"stop",detail:"stop here; the session stays resumable"}],recommended_index:1,allow_free_text:!1}]);if((Array.isArray(t)?t.find(f=>f.id==="binding-mismatch"):void 0)?.selected_index!==0){let f=`resume abandoned: binding mismatch on session ${Me} \u2014 the session is preserved`;return e.out(f),e.emit?.({type:"error",message:f,code:"BINDING_MISMATCH"}),2}g("binding_migrate",{sid:Me},R.session_id),et?.();let l=R.resume&&"schema"in R.resume?{...R.resume,binding:{}}:void 0;try{S=await ht({...R,...l?{resume:l}:{}},{...q,graphSlot:C,...ae?{checkpoint:ae}:{}},Ye,c,g,re?Rt:void 0,()=>fe.current)}catch(f){if(f instanceof Be)return ce?.(),e.chat?.setWorking?.(null),e.out(`error: ${f.message}`),e.emit?.({type:"error",code:"PAIR_MISMATCH",message:f.message}),2;throw ce?.(),f}ce?.(),e.chat?.setWorking?.(null)}if(S.error){let t=S.error.startsWith("proposal failed validation after repair:");t&&g("agent_error_detail",{error:S.error},R.session_id);let o=t?`error: the agent could not produce a valid proposal for ${s.source_id} \u2014 re-run kane-cli context extract to retry`:`error: agent failed for ${s.source_id}: ${S.error}`;e.out(o),e.emit?.({type:"error",source_id:s.source_id,message:o}),F.push(s.source_id);continue}if(S.highRisk)return e.out(`error: ${S.highRisk.length} high-risk decision${S.highRisk.length===1?"":"s"} need a human \u2014 ci mode won't guess. Re-run with --mode agent to pause for review.`),e.emit?.({type:"error",source_id:s.source_id,message:`error: high-risk question(s) in ci mode (fail-closed): ${S.highRisk.map(t=>t.id).join(", ")}`,code:"HIGH_RISK_CI"}),1;if(S.paused){let t=M.slice(d+1).map(D=>D.source_id),o=u?.handle??T,l=o??ot(e.contextDir,{sid:R.session_id,mode:"agent",created_at:(e.now?.()??new Date).toISOString(),expires_at:new Date((e.now?.()??new Date).getTime()+1440*60*1e3).toISOString(),agent_state:S.paused.agent_state,pending:{questions:[],proposals:[]},assumed:[],read_basis:{[s.source_id]:s.cid},corpus_cursor:{remaining:t},conv_source:ne,verb:"extract",...ue?{force:!0}:{},...r.changeContext?{change_basis:{source_id:r.changeContext.source_id,new_head:r.changeContext.new_head}}:{},...m?{user_session_id:m.ids.session_id}:{}});Ee=!0;try{ne&&l.state.conv_source!==ne&&l.save({conv_source:ne});let D=e.chat?.drainHeldReceipts?.()??[];(D.length>0||(l.state.held_receipts?.length??0)>0)&&l.save({held_receipts:D}),o&&l.save({read_basis:{[s.source_id]:s.cid},corpus_cursor:{remaining:t},...ue&&!l.state.force?{force:!0}:{},...m&&l.state.user_session_id!==m.ids.session_id?{user_session_id:m.ids.session_id}:{}}),sr(l,S.paused)}catch(D){let $=l.state.checkpoint,E=`error: couldn't persist the pause for session ${l.state.sid}`+($?` \u2014 last durable checkpoint: seq ${$.seq} @ ${$.ts}`:" \u2014 no durable checkpoint exists")+` (${D instanceof Error?D.message:String(D)})`;return e.out(E),e.emit?.({type:"error",message:E,code:"PAUSE_PERSIST_FAILED",sid:l.state.sid}),1}g("session_paused",{sid:l.state.sid},R.session_id);let f=`kane-cli context extract --resume ${l.state.sid} --mode ${a}`;return e.out(`paused: session ${l.state.sid} saved \u2014 resume with: ${f}`),e.emit?.({type:"session_paused",sid:l.state.sid,source_id:s.source_id,mode:a,resume:f,expires_at:l.state.expires_at,pending_questions:S.paused.pending.questions}),e.chat?.ledger?.({kind:"pause",sid:l.state.sid,expires_at:l.state.expires_at,resume:f,messageForm:`${f} --message "<your words>"`}),3}if(S.crashed){let t=w?.state.checkpoint;if(w&&t){let o=`kane-cli context extract --resume ${w.state.sid} --mode ${a}`;try{w.save({read_basis:{[s.source_id]:s.cid},corpus_cursor:{remaining:Je}})}catch{}return g("agent_crashed_resumable",{sid:w.state.sid,seq:t.seq},R.session_id),e.out(`agent crashed \u2014 session ${w.state.sid} is resumable at checkpoint seq ${t.seq} (at most the in-flight turn lost); resume with: ${o}`),e.emit?.({type:"session_paused",sid:w.state.sid,source_id:s.source_id,mode:a,resume:o,expires_at:w.state.expires_at,crashed:!0}),e.chat?.ledger?.({kind:"pause",sid:w.state.sid,expires_at:w.state.expires_at,resume:o,messageForm:`${o} --message "<your words>"`}),Ee=!0,w.release(),3}e.out(`error: agent crashed for ${s.source_id} with no durable checkpoint`),e.emit?.({type:"error",source_id:s.source_id,message:`error: agent crashed for ${s.source_id} with no durable checkpoint`,code:"AGENT_CRASHED"}),F.push(s.source_id);continue}if(re){if(xt+=S.assumedDefaults??0,S.error||$t)return 1;if(!kt&&!Ze){let t=M.length-d-1;e.out(`done \u2014 nothing committed for ${s.source_id} (no finalize before the session ended)`+(t>0?`; stopping here \u2014 ${t} remaining source(s) not extracted (re-run kane-cli context extract to continue)`:""));{let o=(w?.state.ingest_schedule??[]).filter(l=>l.status==="pending");o.length>0&&e.out(`note: ${o.length} source(s) landed this session (${o.map(l=>l.source_id).join(", ")}) were not extracted \u2014 the session ended first; kane-cli context extract runs them`)}return u&&s.source_id in u.handle.state.read_basis&&(u.handle.complete(),u=null,w=null),_t(),0}u&&s.source_id in u.handle.state.read_basis&&!Ze&&(n(d),u.handle.complete(),u=null,w=null);continue}if(!S.proposal){e.out(`error: agent ended without a proposal for ${s.source_id}`),e.emit?.({type:"error",source_id:s.source_id,message:`error: agent ended without a proposal for ${s.source_id}`}),F.push(s.source_id);continue}let G=ye(S.proposal,Ie(c,S.proposal),c);if(g("kane_validate",{errors:G.map(t=>t.code)},R.session_id),G.length>0&&Cr(S.proposal,G,t=>e.out(t))&&(g("criteria_dropped",{source_id:s.source_id},R.session_id),G=ye(S.proposal,Ie(c,S.proposal),c)),G.length>0){e.out("the agent's proposal didn't validate \u2014 retrying once"),e.emit?.({type:"validate_failed",source_id:s.source_id,codes:G.map(t=>t.code),repairing:!0}),g("repair_respawn",{source_id:s.source_id},R.session_id),h&&he||(St=w?.state.checkpoint?.seq??0);try{S=await ht(R,{...q,graphSlot:C,...ae?{checkpoint:ae}:{}},Ye,c,g,void 0,()=>fe.current)}catch(t){if(t instanceof Be)return e.out(`error: ${t.message}`),e.emit?.({type:"error",code:"PAIR_MISMATCH",message:t.message}),2;throw t}if(S.error||!S.proposal){e.out(`error: repair run failed for ${s.source_id}`),e.emit?.({type:"error",source_id:s.source_id,message:`error: repair run failed for ${s.source_id}`}),F.push(s.source_id);continue}if(G=ye(S.proposal,Ie(c,S.proposal),c),G.length>0){g("validation_details",{errors:G.map(t=>({code:t.code,detail:t.detail}))},R.session_id),e.out(`\u2717 validation failed \u2014 ${G.map(t=>t.code).join(", ")} (details: ${ke(x)})`),e.emit?.({type:"validate_failed",source_id:s.source_id,codes:G.map(t=>t.code),repairing:!1}),e.emit?.({type:"error",source_id:s.source_id,message:`error: proposal failed validation after repair (${G.map(t=>t.code).join(", ")})`}),F.push(s.source_id);continue}}let A=S.proposal,Ue=hr(A,c),tt=oe(e.contextDir,"proposals",ie);if(ut(tt,{recursive:!0}),lt(oe(tt,"proposal.json"),JSON.stringify(A,null,2)+`
11
+ `),r.plan){e.out(`plan: ${A.use_cases.length} use-case(s) proposed from ${s.source_id} (nothing committed)`);for(let t of A.use_cases){let o=Ue.get(t.temp_ref),l=o?o.archived?` \u2248 matches ARCHIVED ${o.cid.slice(0,19)}${o.reason?` \u2014 previously rejected: "${o.reason}"`:" \u2014 previously rejected"}`:` \u2248 matches ${o.cid.slice(0,19)}`:"";e.out(` [${t.risk}] ${t.title} \u2014 cite ${t.cite.anchor}${l}`)}e.emit?.({type:"plan",source_id:s.source_id,use_cases:A.use_cases.map(t=>{let o=Ue.get(t.temp_ref);return{risk:t.risk,title:t.title,anchor:t.cite.anchor,...o?{match:o.cid,match_archived:!!o.archived}:{}}})}),S.assumedDefaults&&e.out(`assumed: ${S.assumedDefaults} default(s) auto-taken (assumed)`);continue}for(let t of A.use_cases){if(!t.conflicts_with?.length)continue;let o=t.conflicts_with.filter(f=>c.resolve(f)!==null),l=t.conflicts_with.filter(f=>c.resolve(f)===null);l.length>0&&(e.out(`note: ${t.temp_ref}: dropped unresolvable conflict hint(s): ${l.join(", ")}`),t.conflicts_with=o.length>0?o:void 0)}g("review_start",{use_cases:A.use_cases.length,flags:Ue.size},R.session_id);let Ne=await e.review(A.use_cases,Ue);if(g("review_verdicts",[...Ne.entries()].map(([t,o])=>({ref:t,resolution:o.resolution})),R.session_id),lt(oe(tt,"review.json"),JSON.stringify(A.use_cases.map(t=>{let o=Ne.get(t.temp_ref)??{resolution:"skipped"};return{id:t.temp_ref,kind:"review-item",resolution:o.resolution,edit:o.edit??null,reason:o.reason??null,...o.supersedeTarget?{supersede_target:o.supersedeTarget}:{},by:le}}),null,2)+`
12
+ `),r.posture==="reconcile"){let t=jt(A),o=U=>t.passthrough.use_cases.filter(L=>{let W=L.matches_existing?.cid,N=W?U.resolve(W):null,p=N?U.tipOf(N.cid):null;return p!=null&&(U.trust.get(p)??null)!=="derived"}),l=o(c),f=t.passthrough.use_cases.length-l.length,D=mt(e.contextDir,R.session_id,Le,e.probe,e.auth),$=new Set(l.map(U=>U.temp_ref));(await Se(D,gt({...t.passthrough,use_cases:l},c),U=>{let L={...t.passthrough,use_cases:o(U.graph).filter(p=>$.has(p.temp_ref))},W=new Map(L.use_cases.map(p=>[p.temp_ref,{resolution:"approved"}])),N=je({contextDir:e.contextDir,graph:U.graph,proposal:L,proposalId:ie,verdicts:W,by:le,autoName:!0,allowStaleBasis:!0,eventIds:U.eventIds("extract",1),...te?{sid:U.sid}:{},probeHits:U.probeHits});return N.errors!==null?{errors:N.errors}:{result:N,record:N.record}})).ok||e.out("note: the unchanged-match evidence attach did not land this run \u2014 the held changeset is unaffected; re-run reconcile to refresh it"),f>0&&e.out(`note: ${f} unchanged match(es) target unreviewed (or no-longer-resolving) item(s) \u2014 evidence not attached (bless them with kane-cli context review; a later reconcile attaches)`);let Y=ge(),O=t.adds.length+t.updates.length+t.archives.length;Y&&O>0&&(Y.save({reconcile:{proposal_id:ie,verdicts:{}}}),me+=O,Ae=Y.state.sid,e.out(`held: ${O} change(s) from ${s.source_id} await your verdicts \u2014 nothing from the changeset committed`),e.emit?.({type:"held",source_id:s.source_id,count:O,reason:"reconcile"}));continue}if((Te||r.trust==="hold")&&ge()&&A.use_cases.some(t=>t.matches_existing==null)){ze(s,A.use_cases,Te?"degraded":"trust_hold");continue}let Ct=mt(e.contextDir,R.session_id,Le,e.probe,e.auth),Dt=t=>{if(t.degradedProbe&&ge()!==null&&A.use_cases.some(l=>l.matches_existing==null))return{result:{degradedHold:!0},record:null};let o=je({contextDir:e.contextDir,graph:t.graph,proposal:A,proposalId:ie,verdicts:Ne,by:le,autoName:!0,allowStaleBasis:!0,eventIds:t.eventIds("extract",1),...te?{sid:t.sid}:{},probeHits:t.probeHits});return o.errors!==null?{errors:o.errors}:{result:o,record:o.record}},Et=gt(A,c),B=await Se(Ct,Et,Dt);if(!B.ok&&B.kind==="drifted"){if(!await e.confirmStale(`the context changed while you reviewed (${B.asks.map(o=>o.detail).join("; ")}) \u2014 commit against the new head anyway?`)){e.out("aborted: proposal not committed"),e.emit?.({type:"error",source_id:s.source_id,message:"aborted: proposal not committed",code:"STALE_BASIS"}),F.push(s.source_id);continue}B=await Se(Ct,{...Et,sourcePins:[]},Dt)}let rt=B.ok&&"result"in B?B.result:null;if(rt!==null&&"degradedHold"in rt){We(),ze(s,A.use_cases,"degraded");continue}let pe=rt??(B.ok?{record:null,errors:null}:{record:null,errors:B.kind==="validation"?B.errors:B.kind==="contended"?[{code:B.err.code,detail:`a use-case this proposal touches is held by ${B.err.holder?.owner_sid??"another session"} \u2014 try again when it frees`}]:[{code:"UNSETTLED",detail:"concurrent activity kept moving the store \u2014 retry when quieter"}]});if(pe.errors){g("commit_error_details",{errors:pe.errors.map(t=>({code:t.code,detail:t.detail}))},R.session_id),e.out(`\u2717 commit failed \u2014 ${pe.errors.map(t=>t.code).join(", ")} (details: ${ke(x)})`),e.emit?.({type:"error",source_id:s.source_id,message:`error: commit failed: ${pe.errors.map(t=>`${t.code}: ${t.detail}`).join("; ")}`}),F.push(s.source_id);continue}let xr=new Date().toISOString();for(let t of A.use_cases){let o=Ne.get(t.temp_ref)??{resolution:"skipped"};for(let l of Jt({ts:xr,command:"context extract",id:t.temp_ref,by:le},o.resolution))Kt(e.contextDir,l)}let X=pe.record;X.event_ids?.length&&w?.markApplied(X.event_ids);let st=new Map(X.review.map(t=>[t.id,t.resolution])),it=[...st.values()].filter(t=>t==="approved"||t==="edited").length,He=[...st.values()].filter(t=>t==="rejected").length,_e=X.nodes.filter(t=>!st.has(t.cid)).length,nt=X.supersessions.filter(t=>t.kind==="node"&&t.new!==t.old).length;g("commit",{trusted:it,derived:_e,archived:He},R.session_id),e.out(`saved ${it+_e} use-case(s)`+(_e>0?` \xB7 ${_e} awaiting review`:"")+(He>0?` \xB7 ${He} archived`:"")+(nt>0?` \xB7 ${nt} superseded`:""));{let t=X.review.filter(o=>o.kind==="pending_update");t.length>0&&(e.out(`${t.length} update(s) held for review`),e.emit?.({type:"update_held",count:t.length,targets:t.map(o=>o.id)}))}S.assumedDefaults&&e.out(`assumed: ${S.assumedDefaults} default(s) auto-taken (assumed)`),e.emit?.({type:"commit",source_id:s.source_id,proposal_id:ie,trusted:it,derived:_e,archived:He,superseded:nt,assumed:S.assumedDefaults??0,evidence_matched:Math.max(0,A.use_cases.length-X.nodes.length),minted:X.nodes.map(t=>{let o=X.names?.find(l=>l.cid===t.cid)?.slug;return{cid:t.cid,...o?{logical_id:o}:{}}})}),u&&s.source_id in u.handle.state.read_basis&&(n(d),u.handle.complete(),e.out(`session ${r.resume} complete`),e.emit?.({type:"session_complete",sid:r.resume,source_id:s.source_id}),m?.event("ASR_SESSION_COMPLETE",{}),u=null,w=null)}if(w){let d=w.state.ingest_schedule??[];d.some(s=>s.status==="pending")&&w.save({ingest_schedule:d.map(s=>s.status==="pending"?{...s,status:"skipped",note:"run ended before its turn \u2014 kane-cli context extract runs it"}:s)})}vt=!0}finally{if(u?.handle.release(),T&&!Ee&&!vt){let n=T.state.checkpoint;if(n){let d=`kane-cli context extract --resume ${T.state.sid} --mode ${a}`;e.out(`session ${T.state.sid} kept its last checkpoint (seq ${n.seq}, ${n.ts}) \u2014 resume with: ${d}`),T.release()}else{try{T.complete()}catch{T.release()}pt()}T=null}}if(re){let n=e.chat?.state.ledger.filter(c=>c.kind==="answer"&&c.receipt.form==="assumed").length??0,d=xt+n,s=e.chat?.state.credits?.total;e.chat?.ledger?.({kind:"summary",lines:[`saved ${Ve} use-case${Ve===1?"":"s"} across ${M.length} source${M.length===1?"":"s"}`,...d>0?[`${d} assumed default(s)`]:[],...s!==void 0?[`credits used: ${s.toFixed(1)}`]:[],`trace: ${ke(x)}`]})}if(r.plan||or(e.contextDir),me>0&&(T||Ae)){Ee=!0;let n=T?.state.sid??Ae,d=`kane-cli context extract --resume ${n} --mode ${a}`;return e.out(`paused: ${me} held item(s) await review \u2014 resume with: ${d}`),e.emit?.({type:"session_paused",sid:n,resume:d,held:me}),T?.release(),3}return F.length>0&&e.out(`${F.length} of ${M.length} source(s) failed \u2014 re-run kane-cli context extract to retry (${F.join(", ")})`),_t(),F.length>0?1:0}export{mt as a,kr as b,gr as c,pr as d,Rr as e,hr as f,Ss as g};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as O,b as B,c as P}from"./chunk-QM4S2APK.js";import{d as w,e as h}from"./chunk-5YPBPZUR.js";var z={window:10,latest_only:!1,stale_at_run_weight:.5,counted_verdicts:["passed","failed"],accepted_oracle_modes:["authored","inferred","runtime-derived"],verified_threshold:.5,min_passes:1,risk_weights:{high:3}},Y={window:10,latest_only:!0,stale_at_run_weight:0,counted_verdicts:["passed","failed"],accepted_oracle_modes:["authored","inferred"],verified_threshold:1,min_passes:1,risk_weights:{high:3}},K={lenient:z,strict:Y};function Q(e,t){let s=e.slice(-t.window),i=new Map;for(let c of s)i.set(c.execution_id,c);let d=[...i.values()].sort((c,u)=>c.ts<u.ts?-1:c.ts>u.ts?1:c.execution_id<u.execution_id?-1:1).filter(c=>t.counted_verdicts.includes(c.verdict)&&t.accepted_oracle_modes.includes(c.oracle_mode));return t.latest_only&&d.length>1?[d[d.length-1]]:d}function Z(e,t){let s=Q(e,t),i=0,d=0,c=0;for(let l of s){let b=l.stale_at_run?t.stale_at_run_weight:1;i+=b,l.verdict==="passed"&&(d+=b,c++)}let u=i>0?Math.round(d/i*100)/100:0;return{score:u,verified:u>=t.verified_threshold&&c>=t.min_passes,passes:c,counted:s.length}}function U(e,t){let s=0,i=0;for(let d of e){let c=t[d.risk]??1;s+=c,d.verified&&(i+=c)}return s>0?Math.round(i/s*100):0}function ee(e,t){let s={},i={},d=[],c=0;for(let u of e.usecases){let l=[];for(let o of u.acceptance_criteria){let _=Z(o.executions??[],t);s[o.id]=_;let m={risk:o.risk,verified:_.verified};l.push(m),d.push(m)}let b=l.filter(o=>o.verified).length,n=l.length>0&&b===l.length?"covered":b>0?"partial":"uncovered";n==="covered"&&c++,i[u.id]={status:n,pct:U(l,t.risk_weights)}}return{config:t,acs:s,usecases:i,summary:{coverage_pct:U(d,t.risk_weights),acs_verified:`${d.filter(u=>u.verified).length}/${d.length}`,usecases_covered:`${c}/${e.usecases.length}`,uncovered:Object.values(i).filter(u=>u.status==="uncovered").length}}}function pe(e,t=K){return{rollup_version:1,stale_sources:new Set(e.usecases.flatMap(s=>s.stale_sources??[])).size,high_risk_gaps:(e.gaps??[]).filter(s=>s.risk==="high").length,aspects:Object.fromEntries(Object.entries(t).map(([s,i])=>[s,ee(e,i)]))}}var W={high:3};function fe(e){let t=e.byLabel(w.USECASE).filter(({cid:n})=>O(e,n)),s=new Map(t.map(({cid:n})=>[n,[]]));for(let{cid:n,content:o}of e.byLabel(w.AC)){if(!O(e,n))continue;let _=P(e,n),m=_?s.get(_):void 0;m&&m.push({risk:String(o.risk??""),designed:B(e,n),stale:e.stale(n)!=="fresh"})}let i={},d=[],c=0,u=0,l=0,b=0;for(let{cid:n}of t){let o=s.get(n),_=o.map(v=>({risk:v.risk,verified:v.designed}));d.push(..._),u+=o.length;let m=o.filter(v=>v.designed).length;c+=m;let x=o.filter(v=>v.stale).length,A=e.edgesInto(n).some(v=>v.type===h.BELONGS_TO&&O(e,v.src));A||b++;let k=o.length===0||m===0?"undesigned":m===o.length&&x===0&&A?"complete":"partial";k==="complete"&&l++,i[e.displayNameOf(n)??n]={pct:U(_,W),status:k,staleAcs:x}}return{pct:U(d,W),acs_designed:`${c}/${u}`,usecases_complete:`${l}/${t.length}`,ucs_needing_scenarios:b,perUc:i,config:{criterion:"live_verifies_edge",risk_weights:{high:3},freshness:"not_discounted"}}}var y=(e,t)=>e.nameOf.get(t)??t,R=(e,t)=>!e.superseded.has(t);function te(e,t){return e.byLabel(w.SCENARIO).filter(({cid:s})=>R(e,s)).filter(({cid:s})=>e.edgesFrom(s).some(i=>i.type===h.BELONGS_TO&&e.tipOf(i.dst)===t)).map(({cid:s})=>s)}function se(e,t,s){let i=[];for(let{cid:d}of e.byLabel(w.AC)){if(!R(e,d))continue;let c=e.edgesFrom(d).find(l=>l.type===h.SCOPED_TO);if(!c)continue;let u=e.tipOf(c.dst);u===t?i.push({cid:d,scope:{type:"usecase",ref:y(e,t)}}):s.has(u)&&i.push({cid:d,scope:{type:"scenario",ref:y(e,u)}})}return i}function ne(e){let t=e.filter(s=>s!==void 0).map(s=>s.execution);return t.includes("failed")?"failed":t.includes("blocked")?"blocked":t.includes("passed")?"passed":"not-run"}var oe={passed:"passed",failed:"failed",broken:"blocked",skipped:"not-run"};function re(e,t){let s=t.flatMap(i=>i?.acs??[]).filter(i=>i.ref===e).map(i=>oe[i.verdict]??"not-run");return s.length===0?ne(t):s.includes("failed")?"failed":s.includes("blocked")?"blocked":s.includes("passed")?"passed":"not-run"}function Se(e){return ie(e,new Map)}function ie(e,t,s){let i=s?.scope==="run",d=[],c=new Set,u=new Map;for(let[n,o]of e.nameOf)u.set(e.tipOf(n)??n,o);let l=n=>u.get(n)??y(e,n);for(let{cid:n,content:o}of e.byLabel(w.USECASE)){if(!R(e,n)||e.trust.get(n)==="archived")continue;let _=e.tipOf(n),m=e.derivesInto(_).filter(r=>!e.superseded.has(r.ecid)),x=[...new Set(m.map(r=>String(r.props?.source_id??"")).filter(Boolean))].sort(),A=x.map(r=>{let f=e.heads.get(r);if(typeof f!="string")return{id:r};let p=e.getNode(f)?.content.blob;return{id:r,media_type:e.mediaOf(f).media_type,...typeof p=="string"?{cid:p}:{}}}),k=m[0],v=new Map;for(let r of m)r.props?.source_id&&r.props?.source_cid&&v.set(String(r.props.source_id),String(r.props.source_cid));let T=x.filter(r=>{let f=e.heads.get(r),p=v.get(r);return f!=null&&p!==void 0&&f!==p}).sort(),L=e.edgesFrom(n).filter(r=>r.type===h.DEPENDS_ON&&!e.superseded.has(r.ecid)).map(r=>de(e,r.dst)).filter(r=>r!==null).sort(),D=te(e,_),q=new Set(D),H=D.map(r=>{let f=e.getNode(r)?.content??{},p=e.edgesFrom(r).filter(S=>S.type===h.EXERCISES&&!e.superseded.has(S.ecid)&&R(e,e.tipOf(S.dst))).map(S=>y(e,e.tipOf(S.dst))).sort();return{id:y(e,r),case_type:String(f.case_type??""),intent:String(f.intent??""),exercises:p}}).sort((r,f)=>r.id<f.id?-1:1),$=!1,E=new Set([_]);for(let r of D)E.add(r);let J=se(e,_,q).map(({cid:r,scope:f})=>{let p=e.getNode(r)?.content??{},S=[...new Set(e.edgesInto(r).filter(a=>a.type===h.VERIFIES&&!e.superseded.has(a.ecid)).map(a=>e.tipOf(a.src)).filter(a=>!!a&&R(e,a)))].sort((a,g)=>l(a)<l(g)?-1:1),G=S.length>0,N=S.map(a=>t.get(`id:${l(a)}`)??t.get(`def:${String(e.getNode(a)?.content.definitionId??"")}`)),j=N.some(a=>a!==void 0);j&&($=!0),E.add(r);for(let a of S)E.add(a);let X=G&&!j?"unknown":e.stale(r)==="fresh"?"fresh":"stale",C=p.expected_answer??{},I=y(e,r),F=S.flatMap(a=>(e.execHistory?.(l(a))??[]).map(g=>({execution_id:String(g.execution_id),ts:String(g.started_at),verdict:String(g.per_ac?.find(M=>M.ac_ref===I)?.verdict??g.verdict),stale_at_run:!!g.stale_at_run,oracle_mode:String(g.oracle_mode),...g.via_parent?{via_parent:String(g.via_parent)}:{}}))).sort((a,g)=>a.ts<g.ts?-1:1).slice(-10);return{id:I,text:String(p.text??""),risk:String(p.risk??""),scope:f,covered_by:S.map(a=>l(a)),...G?{link_type:"verifies"}:{},execution:re(I,N),fresh:X,derived:!!p.derived,...p.kind||p.expected_answer?{expected_answer:{...p.kind?{kind:String(p.kind)}:{},statement:String(p.text??""),...C.operator!==void 0?{operator:C.operator}:{},...C.operand!==void 0?{operand:C.operand}:{}}}:{},...G?{satisfied_by:S.map((a,g)=>{let M=e.getNode(a)?.content.check??{},V=N[g]?.steps?.checkStepId??M.verified_against;return{test:l(a),...V?{step:V}:{}}})}:{},...F.length?{executions:F}:{}}}).sort((r,f)=>r.id<f.id?-1:1);if(!(i&&!$)){for(let r of E)c.add(r);d.push({id:y(e,n),title:String(o.title??""),...o.description||o.summary?{description:String(o.description??o.summary)}:{},...Array.isArray(o.actors)&&o.actors.length?{actors:o.actors.map(String)}:{},...o.value?{value:String(o.value)}:{},risk:String(o.risk??""),status:e.trust.get(n)==="trusted"?"approved":"draft",sources:A,...T.length?{stale_sources:T}:{},...L.length?{depends_on:L}:{},...k?{provenance:{derived_from:`${String(k.props?.source_id??"")}#${String(k.props?.anchor??"")}`}}:{},scenarios:H,acceptance_criteria:J})}}d.sort((n,o)=>n.id<o.id?-1:1);let b=e.byLabel(w.GAP).filter(({cid:n})=>R(e,n)&&e.trust.get(n)!=="archived").filter(({content:n})=>{if(!i||typeof n.uc=="string"&&c.has(e.tipOf(n.uc)))return!0;let o=typeof n.ref=="string"?e.resolve(n.ref):null;return o!==null&&c.has(e.tipOf(o.cid))}).map(({cid:n,content:o})=>({ref:y(e,n),kind:String(o.kind??""),...o.risk?{risk:String(o.risk)}:{},...o.question?{question:ce(o.question)}:{}})).sort((n,o)=>n.ref<o.ref?-1:1);return{usecases:d,...b.length?{gaps:b}:{},...i?{scope:"run"}:{}}}function ce(e){if(typeof e=="string")return e;let t=e?.header;return typeof t=="string"?t:""}function de(e,t){let s=e.tipOf(t);return e.nodeLabel.get(s)!==w.USECASE||!R(e,s)?null:y(e,s)}export{K as a,Q as b,Z as c,pe as d,fe as e,Se as f,ie as g};
2
+ import{a as O,b as B,c as P}from"./chunk-XWKUZJCP.js";import{d as w,e as h}from"./chunk-WXHQYYD5.js";var z={window:10,latest_only:!1,stale_at_run_weight:.5,counted_verdicts:["passed","failed"],accepted_oracle_modes:["authored","inferred","runtime-derived"],verified_threshold:.5,min_passes:1,risk_weights:{high:3}},Y={window:10,latest_only:!0,stale_at_run_weight:0,counted_verdicts:["passed","failed"],accepted_oracle_modes:["authored","inferred"],verified_threshold:1,min_passes:1,risk_weights:{high:3}},K={lenient:z,strict:Y};function Q(e,t){let s=e.slice(-t.window),i=new Map;for(let c of s)i.set(c.execution_id,c);let d=[...i.values()].sort((c,u)=>c.ts<u.ts?-1:c.ts>u.ts?1:c.execution_id<u.execution_id?-1:1).filter(c=>t.counted_verdicts.includes(c.verdict)&&t.accepted_oracle_modes.includes(c.oracle_mode));return t.latest_only&&d.length>1?[d[d.length-1]]:d}function Z(e,t){let s=Q(e,t),i=0,d=0,c=0;for(let l of s){let b=l.stale_at_run?t.stale_at_run_weight:1;i+=b,l.verdict==="passed"&&(d+=b,c++)}let u=i>0?Math.round(d/i*100)/100:0;return{score:u,verified:u>=t.verified_threshold&&c>=t.min_passes,passes:c,counted:s.length}}function U(e,t){let s=0,i=0;for(let d of e){let c=t[d.risk]??1;s+=c,d.verified&&(i+=c)}return s>0?Math.round(i/s*100):0}function ee(e,t){let s={},i={},d=[],c=0;for(let u of e.usecases){let l=[];for(let o of u.acceptance_criteria){let _=Z(o.executions??[],t);s[o.id]=_;let m={risk:o.risk,verified:_.verified};l.push(m),d.push(m)}let b=l.filter(o=>o.verified).length,n=l.length>0&&b===l.length?"covered":b>0?"partial":"uncovered";n==="covered"&&c++,i[u.id]={status:n,pct:U(l,t.risk_weights)}}return{config:t,acs:s,usecases:i,summary:{coverage_pct:U(d,t.risk_weights),acs_verified:`${d.filter(u=>u.verified).length}/${d.length}`,usecases_covered:`${c}/${e.usecases.length}`,uncovered:Object.values(i).filter(u=>u.status==="uncovered").length}}}function pe(e,t=K){return{rollup_version:1,stale_sources:new Set(e.usecases.flatMap(s=>s.stale_sources??[])).size,high_risk_gaps:(e.gaps??[]).filter(s=>s.risk==="high").length,aspects:Object.fromEntries(Object.entries(t).map(([s,i])=>[s,ee(e,i)]))}}var W={high:3};function fe(e){let t=e.byLabel(w.USECASE).filter(({cid:n})=>O(e,n)),s=new Map(t.map(({cid:n})=>[n,[]]));for(let{cid:n,content:o}of e.byLabel(w.AC)){if(!O(e,n))continue;let _=P(e,n),m=_?s.get(_):void 0;m&&m.push({risk:String(o.risk??""),designed:B(e,n),stale:e.stale(n)!=="fresh"})}let i={},d=[],c=0,u=0,l=0,b=0;for(let{cid:n}of t){let o=s.get(n),_=o.map(v=>({risk:v.risk,verified:v.designed}));d.push(..._),u+=o.length;let m=o.filter(v=>v.designed).length;c+=m;let x=o.filter(v=>v.stale).length,A=e.edgesInto(n).some(v=>v.type===h.BELONGS_TO&&O(e,v.src));A||b++;let k=o.length===0||m===0?"undesigned":m===o.length&&x===0&&A?"complete":"partial";k==="complete"&&l++,i[e.displayNameOf(n)??n]={pct:U(_,W),status:k,staleAcs:x}}return{pct:U(d,W),acs_designed:`${c}/${u}`,usecases_complete:`${l}/${t.length}`,ucs_needing_scenarios:b,perUc:i,config:{criterion:"live_verifies_edge",risk_weights:{high:3},freshness:"not_discounted"}}}var y=(e,t)=>e.nameOf.get(t)??t,R=(e,t)=>!e.superseded.has(t);function te(e,t){return e.byLabel(w.SCENARIO).filter(({cid:s})=>R(e,s)).filter(({cid:s})=>e.edgesFrom(s).some(i=>i.type===h.BELONGS_TO&&e.tipOf(i.dst)===t)).map(({cid:s})=>s)}function se(e,t,s){let i=[];for(let{cid:d}of e.byLabel(w.AC)){if(!R(e,d))continue;let c=e.edgesFrom(d).find(l=>l.type===h.SCOPED_TO);if(!c)continue;let u=e.tipOf(c.dst);u===t?i.push({cid:d,scope:{type:"usecase",ref:y(e,t)}}):s.has(u)&&i.push({cid:d,scope:{type:"scenario",ref:y(e,u)}})}return i}function ne(e){let t=e.filter(s=>s!==void 0).map(s=>s.execution);return t.includes("failed")?"failed":t.includes("blocked")?"blocked":t.includes("passed")?"passed":"not-run"}var oe={passed:"passed",failed:"failed",broken:"blocked",skipped:"not-run"};function re(e,t){let s=t.flatMap(i=>i?.acs??[]).filter(i=>i.ref===e).map(i=>oe[i.verdict]??"not-run");return s.length===0?ne(t):s.includes("failed")?"failed":s.includes("blocked")?"blocked":s.includes("passed")?"passed":"not-run"}function Se(e){return ie(e,new Map)}function ie(e,t,s){let i=s?.scope==="run",d=[],c=new Set,u=new Map;for(let[n,o]of e.nameOf)u.set(e.tipOf(n)??n,o);let l=n=>u.get(n)??y(e,n);for(let{cid:n,content:o}of e.byLabel(w.USECASE)){if(!R(e,n)||e.trust.get(n)==="archived")continue;let _=e.tipOf(n),m=e.derivesInto(_).filter(r=>!e.superseded.has(r.ecid)),x=[...new Set(m.map(r=>String(r.props?.source_id??"")).filter(Boolean))].sort(),A=x.map(r=>{let f=e.heads.get(r);if(typeof f!="string")return{id:r};let p=e.getNode(f)?.content.blob;return{id:r,media_type:e.mediaOf(f).media_type,...typeof p=="string"?{cid:p}:{}}}),k=m[0],v=new Map;for(let r of m)r.props?.source_id&&r.props?.source_cid&&v.set(String(r.props.source_id),String(r.props.source_cid));let T=x.filter(r=>{let f=e.heads.get(r),p=v.get(r);return f!=null&&p!==void 0&&f!==p}).sort(),L=e.edgesFrom(n).filter(r=>r.type===h.DEPENDS_ON&&!e.superseded.has(r.ecid)).map(r=>de(e,r.dst)).filter(r=>r!==null).sort(),D=te(e,_),q=new Set(D),H=D.map(r=>{let f=e.getNode(r)?.content??{},p=e.edgesFrom(r).filter(S=>S.type===h.EXERCISES&&!e.superseded.has(S.ecid)&&R(e,e.tipOf(S.dst))).map(S=>y(e,e.tipOf(S.dst))).sort();return{id:y(e,r),case_type:String(f.case_type??""),intent:String(f.intent??""),exercises:p}}).sort((r,f)=>r.id<f.id?-1:1),$=!1,E=new Set([_]);for(let r of D)E.add(r);let J=se(e,_,q).map(({cid:r,scope:f})=>{let p=e.getNode(r)?.content??{},S=[...new Set(e.edgesInto(r).filter(a=>a.type===h.VERIFIES&&!e.superseded.has(a.ecid)).map(a=>e.tipOf(a.src)).filter(a=>!!a&&R(e,a)))].sort((a,g)=>l(a)<l(g)?-1:1),G=S.length>0,N=S.map(a=>t.get(`id:${l(a)}`)??t.get(`def:${String(e.getNode(a)?.content.definitionId??"")}`)),j=N.some(a=>a!==void 0);j&&($=!0),E.add(r);for(let a of S)E.add(a);let X=G&&!j?"unknown":e.stale(r)==="fresh"?"fresh":"stale",C=p.expected_answer??{},I=y(e,r),F=S.flatMap(a=>(e.execHistory?.(l(a))??[]).map(g=>({execution_id:String(g.execution_id),ts:String(g.started_at),verdict:String(g.per_ac?.find(M=>M.ac_ref===I)?.verdict??g.verdict),stale_at_run:!!g.stale_at_run,oracle_mode:String(g.oracle_mode),...g.via_parent?{via_parent:String(g.via_parent)}:{}}))).sort((a,g)=>a.ts<g.ts?-1:1).slice(-10);return{id:I,text:String(p.text??""),risk:String(p.risk??""),scope:f,covered_by:S.map(a=>l(a)),...G?{link_type:"verifies"}:{},execution:re(I,N),fresh:X,derived:!!p.derived,...p.kind||p.expected_answer?{expected_answer:{...p.kind?{kind:String(p.kind)}:{},statement:String(p.text??""),...C.operator!==void 0?{operator:C.operator}:{},...C.operand!==void 0?{operand:C.operand}:{}}}:{},...G?{satisfied_by:S.map((a,g)=>{let M=e.getNode(a)?.content.check??{},V=N[g]?.steps?.checkStepId??M.verified_against;return{test:l(a),...V?{step:V}:{}}})}:{},...F.length?{executions:F}:{}}}).sort((r,f)=>r.id<f.id?-1:1);if(!(i&&!$)){for(let r of E)c.add(r);d.push({id:y(e,n),title:String(o.title??""),...o.description||o.summary?{description:String(o.description??o.summary)}:{},...Array.isArray(o.actors)&&o.actors.length?{actors:o.actors.map(String)}:{},...o.value?{value:String(o.value)}:{},risk:String(o.risk??""),status:e.trust.get(n)==="trusted"?"approved":"draft",sources:A,...T.length?{stale_sources:T}:{},...L.length?{depends_on:L}:{},...k?{provenance:{derived_from:`${String(k.props?.source_id??"")}#${String(k.props?.anchor??"")}`}}:{},scenarios:H,acceptance_criteria:J})}}d.sort((n,o)=>n.id<o.id?-1:1);let b=e.byLabel(w.GAP).filter(({cid:n})=>R(e,n)&&e.trust.get(n)!=="archived").filter(({content:n})=>{if(!i||typeof n.uc=="string"&&c.has(e.tipOf(n.uc)))return!0;let o=typeof n.ref=="string"?e.resolve(n.ref):null;return o!==null&&c.has(e.tipOf(o.cid))}).map(({cid:n,content:o})=>({ref:y(e,n),kind:String(o.kind??""),...o.risk?{risk:String(o.risk)}:{},...o.question?{question:ce(o.question)}:{}})).sort((n,o)=>n.ref<o.ref?-1:1);return{usecases:d,...b.length?{gaps:b}:{},...i?{scope:"run"}:{}}}function ce(e){if(typeof e=="string")return e;let t=e?.header;return typeof t=="string"?t:""}function de(e,t){let s=e.tipOf(t);return e.nodeLabel.get(s)!==w.USECASE||!R(e,s)?null:y(e,s)}export{K as a,Q as b,Z as c,pe as d,fe as e,Se as f,ie as g};
@@ -0,0 +1,5 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ var p=1;function f(e){return e==="agent"?"ndjson":"human"}function c(){return!!(process.stdin.isTTY&&process.stdout.isTTY)}var a=/^(∷ |· |→ |✓ |✗ |… )/;function d(e){return e===0?"complete":e===2?"refused":e===3?"paused":e===130?"interrupted":"error"}function l(e,r,s={stdout:t=>process.stdout.write(t),stderr:t=>process.stderr.write(t)}){let t=!1,u=n=>{if(e!=="ndjson"||t)return;n.type==="done"&&(t=!0);let{type:i,...o}=n;s.stdout(JSON.stringify({type:i,v:1,verb:r,...o})+`
3
+ `)};return{encoding:e,out:e==="ndjson"?()=>{}:n=>s.stdout(n+`
4
+ `),progress:e==="ndjson"?()=>{}:n=>s.stderr(n.replace(a,"").replace(/…$/,"")+`
5
+ `),event:u,done:(n,i,o)=>(u({type:"done",status:i??d(n),exit_code:n,...o!==void 0&&o.length>0?{next:o}:{}}),n)}}var g=8*1024;function m(e,r){return e.message==null?null:e.message.trim()?e.resume?Buffer.byteLength(e.message,"utf8")>g?`${r==="extract"?"extract":"design"}: --message is over 8KB \u2014 the agent would silently drop it; shorten the statement`:null:`${r==="extract"?"extract":"design"}: --message only rides a resume \u2014 pair it with --resume <sid> (a fresh run takes its direction from the sources)`:`${r==="extract"?"extract":"design"}: --message is empty \u2014 say what you want the agent to know`}function x(e,r,s){return e.event({type:"error",message:r,...s?{code:s}:{}}),e.done(2,"refused")}function E(e,r,s){return{out:t=>{r()&&s.test(t)||e.out(t)},emit:t=>{r()&&t.type==="error"&&s.test(String(t.message??""))||e.event(t)}}}export{p as a,f as b,c,l as d,g as e,m as f,x as g,E as h};
@@ -0,0 +1,4 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as n}from"./chunk-ZUGCHQFC.js";import{createHash as _}from"crypto";import{existsSync as m,readFileSync as u}from"fs";import{dirname as T,join as f,resolve as o}from"path";import{fileURLToPath as E}from"url";var s=T(E(import.meta.url)),l=2;function p(e,r){let t=_("sha256");return t.update(`kane-assurance-contract
3
+ `),t.update(e),t.update(`
4
+ agent_state_schema=${r}`),"sha256:"+t.digest("hex")}function d(){return[o(s,".."),o(s,"../../..")]}function i(){return"sha256:85dd52f33a9fd9cf22ebb81f04dfd3c05bdbeca2e62e3a7a53e8caaaa4060752"}var a=class extends Error{constructor(t,c){super(`agent/cli contract mismatch (cli ${t||"<unset>"}, agent ${c||"<unset>"}) \u2014 rebuild or reinstall the stale half`);this.expected=t;this.actual=c;this.name="PairMismatchError"}};function I(){return{TESTMUAI_CONTRACT_DIGEST:i(),TESTMUAI_CLIENT_VERSION:process.env.KANE_DEV_FORCE_CLIENT_RELEASE??`kane-cli/${n}`}}export{a,I as b};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as S}from"./chunk-J3EMJ7US.js";import{y as o}from"./chunk-B4LLKQTK.js";import{a as R}from"./chunk-HCBYKLMW.js";import{a as y,b as c,j as x}from"./chunk-C44QQJR4.js";import{a as w}from"./chunk-6YGTRKDT.js";import{e as b}from"./chunk-UR6MHSHU.js";var k=b(w(),1);var i=b(R(),1);function A(e){let t=e.decisions.filter(r=>r.kind==="replay").length,l=e.decisions.filter(r=>r.kind==="author").length,p=e.outcomes.filter(r=>r.status==="passed").length,d=e.outcomes.filter(r=>r.status==="failed").length,f=e.outcomes.filter(r=>r.status==="skipped").length,a=o.green,n;e.cancelled||e.overallStatus==="interrupted"?(a=o.orange,n="CANCELLED"):e.overallStatus==="failed"?(a=o.red,n="FAILED"):n="PASSED";let s=`${n} \xB7 ${e.durationS}s \xB7 ${e.outcomes.length} steps (${p} passed, ${d} failed, ${f} skipped)`,T=`${t} replay \xB7 ${l} author`,C=e.retryTriggered,_="yes \u2014 run recovered after a replay miss",u,h=o.dim;if(e.cancelled)u="\u2013 not committed (cancellation)";else if(e.overallStatus==="failed")u="\u2013 not committed (run failed)",h=o.red;else if(!e.shouldCommit)e.isFirstRun?u="\u2013 not committed (first run skipped commit)":e.lockHeld?u="\u2013 not committed":u="\u2013 not committed (readonly fallback / no lock)";else{let r=e.uploadResult?.testcaseId;u=r?`\u2713 pushed (testcase=${r})`:"\u2713 pushed",h=o.green}let v=e.shouldReplaceLocalOutput?"output dir replaced":e.anyAuthorStepRan?"untouched (cancellation or no replace)":"untouched (replay-only)",m,g=o.dim;return e.shouldUploadArtifacts?e.uploadResult?.success?(m="\u2713 TMS",g=o.green):e.uploadResult?(m=`\u2717 failed${e.uploadResult.error?`: ${e.uploadResult.error}`:""}`,g=o.red):m="\u2013 not run":m="\u2013 skipped (--local or no auth)",{resultLine:{color:a,text:s},breakdown:T,showRetries:C,retriesText:_,commitText:u,commitColor:h,artifactsText:v,uploadText:m,uploadColor:g}}function O(e){let t=e.decisions.filter(s=>s.kind==="replay").length,l=e.decisions.filter(s=>s.kind==="author").length,p=e.outcomes.filter(s=>s.status==="passed").length,d=e.outcomes.filter(s=>s.status==="failed").length,f=e.outcomes.filter(s=>s.status==="skipped").length,a,n=!1;return e.cancelled?a="cancellation":e.overallStatus==="failed"?a="run_failed":e.shouldCommit&&e.uploadResult?.testcaseId?(a="ok",n=!0):!e.shouldCommit&&!e.lockHeld&&!e.isFirstRun?a="readonly_fallback":a="not_committed",{type:"test_md_summary",overall_status:e.overallStatus,duration_s:e.durationS,steps:{total:e.outcomes.length,passed:p,failed:d,skipped:f,replay_decisions:t,author_decisions:l},retries:{triggered:e.retryTriggered},commit:{committed:n,reason:a,...e.uploadResult?.testcaseId?{testcase_id:e.uploadResult.testcaseId}:{}},artifacts:{replaced:e.shouldReplaceLocalOutput},upload:{performed:e.shouldUploadArtifacts,...e.uploadResult?{succeeded:!!e.uploadResult.success}:{}},...e.shareUrl?{share_url:e.shareUrl}:{},cancelled:e.cancelled,...e.imports&&e.imports.length>0?{imports:e.imports}:{}}}function D({data:e}){let t=A(e),l=[{label:"result",value:(0,i.jsx)(c,{color:t.resultLine.color,bold:!0,children:t.resultLine.text})},{label:"breakdown",value:(0,i.jsx)(c,{color:o.dim,children:t.breakdown})}];return t.showRetries&&l.push({label:"retries",value:(0,i.jsx)(c,{color:o.orange,children:t.retriesText})}),l.push({label:"commit",value:(0,i.jsx)(c,{color:t.commitColor,children:t.commitText})}),l.push({label:"artifacts",value:(0,i.jsx)(c,{color:o.dim,children:t.artifactsText})}),l.push({label:"upload",value:(0,i.jsx)(c,{color:t.uploadColor,children:t.uploadText})}),(0,i.jsx)(S,{title:"Run summary",titleColor:"#ff9500",rows:l})}function I({data:e}){let{exit:t}=x();return(0,k.useEffect)(()=>{let l=setTimeout(()=>t(),50);return()=>clearTimeout(l)},[t]),(0,i.jsx)(y,{flexDirection:"column",children:(0,i.jsx)(D,{data:e})})}export{A as a,O as b,D as c,I as d};
2
+ import{a as S}from"./chunk-KQZA2QSC.js";import{y as o}from"./chunk-ZUGCHQFC.js";import{a as R}from"./chunk-HCBYKLMW.js";import{a as y,b as c,j as x}from"./chunk-C44QQJR4.js";import{a as w}from"./chunk-6YGTRKDT.js";import{e as b}from"./chunk-UR6MHSHU.js";var k=b(w(),1);var i=b(R(),1);function A(e){let t=e.decisions.filter(r=>r.kind==="replay").length,l=e.decisions.filter(r=>r.kind==="author").length,p=e.outcomes.filter(r=>r.status==="passed").length,d=e.outcomes.filter(r=>r.status==="failed").length,f=e.outcomes.filter(r=>r.status==="skipped").length,a=o.green,n;e.cancelled||e.overallStatus==="interrupted"?(a=o.orange,n="CANCELLED"):e.overallStatus==="failed"?(a=o.red,n="FAILED"):n="PASSED";let s=`${n} \xB7 ${e.durationS}s \xB7 ${e.outcomes.length} steps (${p} passed, ${d} failed, ${f} skipped)`,T=`${t} replay \xB7 ${l} author`,C=e.retryTriggered,_="yes \u2014 run recovered after a replay miss",u,h=o.dim;if(e.cancelled)u="\u2013 not committed (cancellation)";else if(e.overallStatus==="failed")u="\u2013 not committed (run failed)",h=o.red;else if(!e.shouldCommit)e.isFirstRun?u="\u2013 not committed (first run skipped commit)":e.lockHeld?u="\u2013 not committed":u="\u2013 not committed (readonly fallback / no lock)";else{let r=e.uploadResult?.testcaseId;u=r?`\u2713 pushed (testcase=${r})`:"\u2713 pushed",h=o.green}let v=e.shouldReplaceLocalOutput?"output dir replaced":e.anyAuthorStepRan?"untouched (cancellation or no replace)":"untouched (replay-only)",m,g=o.dim;return e.shouldUploadArtifacts?e.uploadResult?.success?(m="\u2713 TMS",g=o.green):e.uploadResult?(m=`\u2717 failed${e.uploadResult.error?`: ${e.uploadResult.error}`:""}`,g=o.red):m="\u2013 not run":m="\u2013 skipped (--local or no auth)",{resultLine:{color:a,text:s},breakdown:T,showRetries:C,retriesText:_,commitText:u,commitColor:h,artifactsText:v,uploadText:m,uploadColor:g}}function O(e){let t=e.decisions.filter(s=>s.kind==="replay").length,l=e.decisions.filter(s=>s.kind==="author").length,p=e.outcomes.filter(s=>s.status==="passed").length,d=e.outcomes.filter(s=>s.status==="failed").length,f=e.outcomes.filter(s=>s.status==="skipped").length,a,n=!1;return e.cancelled?a="cancellation":e.overallStatus==="failed"?a="run_failed":e.shouldCommit&&e.uploadResult?.testcaseId?(a="ok",n=!0):!e.shouldCommit&&!e.lockHeld&&!e.isFirstRun?a="readonly_fallback":a="not_committed",{type:"test_md_summary",overall_status:e.overallStatus,duration_s:e.durationS,steps:{total:e.outcomes.length,passed:p,failed:d,skipped:f,replay_decisions:t,author_decisions:l},retries:{triggered:e.retryTriggered},commit:{committed:n,reason:a,...e.uploadResult?.testcaseId?{testcase_id:e.uploadResult.testcaseId}:{}},artifacts:{replaced:e.shouldReplaceLocalOutput},upload:{performed:e.shouldUploadArtifacts,...e.uploadResult?{succeeded:!!e.uploadResult.success}:{}},...e.shareUrl?{share_url:e.shareUrl}:{},cancelled:e.cancelled,...e.imports&&e.imports.length>0?{imports:e.imports}:{}}}function D({data:e}){let t=A(e),l=[{label:"result",value:(0,i.jsx)(c,{color:t.resultLine.color,bold:!0,children:t.resultLine.text})},{label:"breakdown",value:(0,i.jsx)(c,{color:o.dim,children:t.breakdown})}];return t.showRetries&&l.push({label:"retries",value:(0,i.jsx)(c,{color:o.orange,children:t.retriesText})}),l.push({label:"commit",value:(0,i.jsx)(c,{color:t.commitColor,children:t.commitText})}),l.push({label:"artifacts",value:(0,i.jsx)(c,{color:o.dim,children:t.artifactsText})}),l.push({label:"upload",value:(0,i.jsx)(c,{color:t.uploadColor,children:t.uploadText})}),(0,i.jsx)(S,{title:"Run summary",titleColor:"#ff9500",rows:l})}function I({data:e}){let{exit:t}=x();return(0,k.useEffect)(()=>{let l=setTimeout(()=>t(),50);return()=>clearTimeout(l)},[t]),(0,i.jsx)(y,{flexDirection:"column",children:(0,i.jsx)(D,{data:e})})}export{A as a,O as b,D as c,I as d};