@testmuai/kane-cli 0.8.6 → 0.8.8

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 (270) hide show
  1. package/bin/kane-cli.cjs +5 -1
  2. package/dist/{ChatSurface-S2P7WMBI.js → ChatSurface-LS3KF7XY.js} +1 -1
  3. package/dist/{ChromeProfilePicker-7DTJK2QW.js → ChromeProfilePicker-UIJ5ZBLY.js} +1 -1
  4. package/dist/{CliFeedbackPrompt-Y3OYZX54.js → CliFeedbackPrompt-EIQQBWDY.js} +1 -1
  5. package/dist/{CliUploadProgress-I3N5WDNJ.js → CliUploadProgress-6U77ZBAX.js} +1 -1
  6. package/dist/ConfigView-MVFLCF5N.js +2 -0
  7. package/dist/EvidenceViewOffer-ANVEOXJA.js +2 -0
  8. package/dist/FolderPicker-HVI6KITN.js +2 -0
  9. package/dist/{InfoBox-QBXPPMM2.js → InfoBox-57MRRSJI.js} +1 -1
  10. package/dist/{LinksBox-L24KON4U.js → LinksBox-RKAEQBFS.js} +1 -1
  11. package/dist/{ProfilesView-H6XCTIXI.js → ProfilesView-RQCQFIXH.js} +1 -1
  12. package/dist/{ProjectPicker-F6JGF2B3.js → ProjectPicker-5JEEHLY3.js} +1 -1
  13. package/dist/{SaveSessionPrompt-QGO65DZN.js → SaveSessionPrompt-TQROE5JM.js} +1 -1
  14. package/dist/SingleShotApp-VJVY3F4H.js +2 -0
  15. package/dist/{SummaryBox-OZIZQY4B.js → SummaryBox-C4UY6R65.js} +1 -1
  16. package/dist/TestMdRunView-X3CCNYV5.js +2 -0
  17. package/dist/{TestrunEvidenceTable-A7WTTKTV.js → TestrunEvidenceTable-LY24PK3T.js} +1 -1
  18. package/dist/{WhoamiView-EB5AV27X.js → WhoamiView-2FIHHS4G.js} +1 -1
  19. package/dist/{app-download-SQ4RDY3E.js → app-download-TO672LBR.js} +1 -1
  20. package/dist/{auth-TW24FZQF.js → auth-EVXJVU72.js} +1 -1
  21. package/dist/{binary-5LMQJ3CZ.js → binary-Y4DKNDQH.js} +1 -1
  22. package/dist/{bind-SJ6DOVQ4.js → bind-FVCVYYL3.js} +3 -3
  23. package/dist/{bootstrap-BTEXO6HX.js → bootstrap-4XBQFKWF.js} +1 -1
  24. package/dist/bridge-6DCBL3GY.js +2 -0
  25. package/dist/{changelog-JLSLSA3Y.js → changelog-LAQ2VGK6.js} +1 -1
  26. package/dist/chat-committer-K3NOTLOU.js +2 -0
  27. package/dist/chat-controller-YJCNU76T.js +2 -0
  28. package/dist/chunk-2MQP4SSF.js +20 -0
  29. package/dist/{chunk-S66MCU2Y.js → chunk-36ZVMJTJ.js} +1 -1
  30. package/dist/{chunk-USI2WMAK.js → chunk-3GZ4FQ4L.js} +1 -1
  31. package/dist/{chunk-CLLQQPBZ.js → chunk-4BIJCAR4.js} +1 -1
  32. package/dist/chunk-4PMZ5FCD.js +2 -0
  33. package/dist/{chunk-2DCNCH32.js → chunk-54JZ6VEW.js} +1 -1
  34. package/dist/{chunk-ZGBSGZZM.js → chunk-5G22NOZK.js} +1 -1
  35. package/dist/{chunk-YEQVJWEF.js → chunk-5LYPSIBC.js} +1 -1
  36. package/dist/{chunk-RDNKYRKY.js → chunk-5M5BG4MT.js} +1 -1
  37. package/dist/{chunk-YHTYPTDD.js → chunk-5YCOYFZH.js} +1 -1
  38. package/dist/chunk-6FCPS2VT.js +4 -0
  39. package/dist/{chunk-4NSP2NPT.js → chunk-6LYQ4MJH.js} +1 -1
  40. package/dist/{chunk-XY325HDJ.js → chunk-6T3DWH56.js} +1 -1
  41. package/dist/{chunk-D4SRHIJ5.js → chunk-6TVNJDSE.js} +1 -1
  42. package/dist/{chunk-P3RKXL3V.js → chunk-7CXIOJB3.js} +1 -1
  43. package/dist/{chunk-RZLD7TPG.js → chunk-7RTITBZG.js} +1 -1
  44. package/dist/{chunk-JCD6FP7A.js → chunk-7UCICMK7.js} +3 -3
  45. package/dist/{chunk-SS5TOK2J.js → chunk-7UYSTQMI.js} +1 -1
  46. package/dist/chunk-7YX2HUHY.js +2 -0
  47. package/dist/chunk-AKX4VRRR.js +2 -0
  48. package/dist/{chunk-KQ2MYMOS.js → chunk-AO5QH6UU.js} +1 -1
  49. package/dist/{chunk-YZ45OEH3.js → chunk-AS5UKK27.js} +1 -1
  50. package/dist/{chunk-JN44V63O.js → chunk-ATIX6CVS.js} +2 -2
  51. package/dist/{chunk-TDS6LG6T.js → chunk-AZ73FJRK.js} +1 -1
  52. package/dist/{chunk-ZRKPZLLG.js → chunk-BAKOH2BR.js} +1 -1
  53. package/dist/{chunk-Z35BUPZT.js → chunk-BRE426DP.js} +1 -1
  54. package/dist/{chunk-IGJIDN4U.js → chunk-BYOXTXLC.js} +1 -1
  55. package/dist/{chunk-JFAFKHDX.js → chunk-BZAGVBCX.js} +1 -1
  56. package/dist/{chunk-FYS5VIOG.js → chunk-CQCV2RJK.js} +2 -2
  57. package/dist/{chunk-FJYDEWOA.js → chunk-DHPBVHED.js} +1 -1
  58. package/dist/{chunk-7KORP5FF.js → chunk-EEFZXZTZ.js} +1 -1
  59. package/dist/{chunk-GFKCTYCA.js → chunk-EV64VI66.js} +1 -1
  60. package/dist/{chunk-IWM5EZC3.js → chunk-FGRTNRBS.js} +2 -2
  61. package/dist/{chunk-NT3UETTV.js → chunk-FL6TCYA5.js} +1 -1
  62. package/dist/{chunk-IMR64OCZ.js → chunk-GX3FPJUG.js} +1 -1
  63. package/dist/{chunk-FUNKVREV.js → chunk-GZLQ2AR6.js} +1 -1
  64. package/dist/chunk-H4WIA4IP.js +26 -0
  65. package/dist/{chunk-ZLSWHCWO.js → chunk-H6YGG3GC.js} +1 -1
  66. package/dist/chunk-HJOGBE23.js +26 -0
  67. package/dist/{chunk-DN3E6RT6.js → chunk-HK3FFI7Y.js} +2 -2
  68. package/dist/{chunk-TYI4MLFJ.js → chunk-HPBI3P6I.js} +3 -3
  69. package/dist/{chunk-FMUCZWS3.js → chunk-HZDNGNO2.js} +1 -1
  70. package/dist/chunk-IPEA7ZOF.js +8 -0
  71. package/dist/{chunk-6KPPGMO2.js → chunk-IVQX3AKL.js} +1 -1
  72. package/dist/chunk-IWVA37B6.js +5 -0
  73. package/dist/chunk-JE6OO2Q6.js +8 -0
  74. package/dist/{chunk-PT7V5WDQ.js → chunk-JPGRUMCS.js} +1 -1
  75. package/dist/chunk-JQW2QFSX.js +2 -0
  76. package/dist/{chunk-JZ26R6UL.js → chunk-JUJ4SAGH.js} +1 -1
  77. package/dist/chunk-K5DL7CZ4.js +2 -0
  78. package/dist/{chunk-TKYJTXWL.js → chunk-K6JRFRGS.js} +1 -1
  79. package/dist/chunk-KAZGHWGK.js +5 -0
  80. package/dist/{chunk-AFPHLUQ5.js → chunk-KGKJU27A.js} +1 -1
  81. package/dist/{chunk-E5S4BASB.js → chunk-LI5FMAUO.js} +1 -1
  82. package/dist/{chunk-INK66XQS.js → chunk-LMYE3M75.js} +1 -1
  83. package/dist/{chunk-OFW3ZVTP.js → chunk-LPH4TERT.js} +1 -1
  84. package/dist/chunk-N5I2QYFD.js +2 -0
  85. package/dist/chunk-N7Z7BQYO.js +3 -0
  86. package/dist/{chunk-EXERQHXV.js → chunk-NAZ36RKI.js} +1 -1
  87. package/dist/chunk-O4IEPE3T.js +4 -0
  88. package/dist/{chunk-CLGC7VEO.js → chunk-O5U6EAL3.js} +1 -1
  89. package/dist/chunk-OGJR5VIG.js +363 -0
  90. package/dist/{chunk-A44G533S.js → chunk-OO7LFDET.js} +1 -1
  91. package/dist/chunk-OQAN2WYO.js +26 -0
  92. package/dist/{chunk-GC5U55MW.js → chunk-P67CGWD6.js} +1 -1
  93. package/dist/{chunk-C4WTZSX4.js → chunk-PQYBIWZH.js} +1 -1
  94. package/dist/chunk-PYHWCV2V.js +2 -0
  95. package/dist/{chunk-AO3PBE2V.js → chunk-Q6743UUQ.js} +1 -1
  96. package/dist/{chunk-5DBK6QNS.js → chunk-QQ5MHSSY.js} +1 -1
  97. package/dist/{chunk-DZCG7FFP.js → chunk-QVR2PB6Y.js} +1 -1
  98. package/dist/{chunk-WMQJBEQP.js → chunk-QXLX6LMJ.js} +1 -1
  99. package/dist/{chunk-VOBXYDJW.js → chunk-R4PLEH2A.js} +47 -47
  100. package/dist/{chunk-TQKIE7AX.js → chunk-RHL7KZNC.js} +1 -1
  101. package/dist/chunk-RSSOJ3L2.js +21 -0
  102. package/dist/{chunk-VMCSRLRC.js → chunk-S6M36UIV.js} +1 -1
  103. package/dist/{chunk-SQC4P2Q7.js → chunk-SQWVGI3J.js} +1 -1
  104. package/dist/{chunk-ATWDQCDA.js → chunk-UDW4ZZAW.js} +7 -7
  105. package/dist/{chunk-CUM23TLF.js → chunk-UH2ZTX4E.js} +1 -1
  106. package/dist/{chunk-XJILZ2WN.js → chunk-UPHF2J5E.js} +1 -1
  107. package/dist/{chunk-SQGBFCFO.js → chunk-UY2ES2Z6.js} +1 -1
  108. package/dist/{chunk-3LEVCW6R.js → chunk-UYLNH4SH.js} +1 -1
  109. package/dist/{chunk-OYJBABRV.js → chunk-V5DYLGAM.js} +1 -1
  110. package/dist/{chunk-7VZCXW74.js → chunk-VCDXUUJQ.js} +1 -1
  111. package/dist/{chunk-5COGCNED.js → chunk-VQVERWC3.js} +1 -1
  112. package/dist/chunk-W3Z7AZNT.js +4 -0
  113. package/dist/{chunk-BN6AHQL7.js → chunk-WALVOFKR.js} +4 -4
  114. package/dist/{chunk-3UUPP5W3.js → chunk-WDOEMLFZ.js} +1 -1
  115. package/dist/chunk-WHEWZR2C.js +15 -0
  116. package/dist/{chunk-VRVFPMCR.js → chunk-WIAZN7G4.js} +1 -1
  117. package/dist/{chunk-AWD56KGX.js → chunk-WPSQYEBP.js} +2 -2
  118. package/dist/{chunk-RX5TZZNQ.js → chunk-WRIPTYSN.js} +1 -1
  119. package/dist/{chunk-GELPKSLC.js → chunk-WYOEOJM2.js} +1 -1
  120. package/dist/{chunk-B4Q6FMIP.js → chunk-XFTF7OOY.js} +3 -3
  121. package/dist/{chunk-QISE272H.js → chunk-XJ4TJARR.js} +1 -1
  122. package/dist/{chunk-KDXQNLVV.js → chunk-XLVH4CIZ.js} +3 -3
  123. package/dist/{chunk-DUAXZYAD.js → chunk-XMTSHHYQ.js} +3 -3
  124. package/dist/{chunk-XWKUZJCP.js → chunk-YMLC55J4.js} +1 -1
  125. package/dist/chunk-Z7S3IWUX.js +2 -0
  126. package/dist/chunk-ZDAO5D6D.js +16 -0
  127. package/dist/{chunk-TZFT7R7B.js → chunk-ZHKBSKCB.js} +1 -1
  128. package/dist/chunk-ZIJLOYXX.js +21 -0
  129. package/dist/{chunk-4ONGF4NT.js → chunk-ZKRL6HMY.js} +2 -2
  130. package/dist/{chunk-2R7KL7YG.js → chunk-ZSFOANLG.js} +1 -1
  131. package/dist/committer-C6UCDYMC.js +2 -0
  132. package/dist/{config-6TQIMTNB.js → config-5UNFAVY6.js} +1 -1
  133. package/dist/cover-cmd-5LPHIOSI.js +3 -0
  134. package/dist/{credentials-ZSNM4BTD.js → credentials-64JYS7AQ.js} +1 -1
  135. package/dist/{deps-bundle-D2ZC2SPT.js → deps-bundle-5JPHXHQV.js} +1 -1
  136. package/dist/{deps-resolve-VRBMFUTX.js → deps-resolve-WFZZ22XH.js} +1 -1
  137. package/dist/descriptor-PWUUNYV7.js +2 -0
  138. package/dist/design-committer-UPC6NZUF.js +2 -0
  139. package/dist/device-ref-LAZWPRQN.js +2 -0
  140. package/dist/dispatch-JLMCXOSK.js +2 -0
  141. package/dist/doctor-KJMR7NRK.js +2 -0
  142. package/dist/dossier-Y6TJWFZU.js +3 -0
  143. package/dist/evidence-OFTY5U4X.js +2 -0
  144. package/dist/evolve-cmd-LU6LPT4F.js +2 -0
  145. package/dist/exit-manager-ZLDO54S4.js +2 -0
  146. package/dist/{explain-UAAQWHYR.js → explain-3HAZY7Q6.js} +1 -1
  147. package/dist/{explain-cmd-EX24XKD6.js → explain-cmd-RMJPXD4U.js} +1 -1
  148. package/dist/{explain-cmd-2TKO7GRW.js → explain-cmd-XCRO4AS6.js} +1 -1
  149. package/dist/{extract-bind-TJ2STXV5.js → extract-bind-YYIOEAYR.js} +3 -3
  150. package/dist/{extract-cmd-FLOYO6HL.js → extract-cmd-Q7OG6RY6.js} +2 -2
  151. package/dist/{feeder-C3TOJPKK.js → feeder-IOR3XRNF.js} +1 -1
  152. package/dist/gaps-cmd-JIUM5YDY.js +3 -0
  153. package/dist/{gate-54BRAE7N.js → gate-E3BLIUEA.js} +1 -1
  154. package/dist/{generate-headless-DBT4MKQT.js → generate-headless-NCVM643E.js} +2 -2
  155. package/dist/index.js +137 -131
  156. package/dist/ingest-TTUQ7UDK.js +2 -0
  157. package/dist/ingest-cmd-42VRDSPV.js +2 -0
  158. package/dist/install-5NMP6ZV4.js +2 -0
  159. package/dist/{interactive-bind-7UDJY4CF.js → interactive-bind-ZDJS7PCV.js} +4 -4
  160. package/dist/lifecycle-cmd-KSMETBPP.js +2 -0
  161. package/dist/list-cmd-V3HJ5K4O.js +3 -0
  162. package/dist/{list-commands-DA4ZXOPJ.js → list-commands-3IKFZSGB.js} +1 -1
  163. package/dist/logical-ids-MLXAH45L.js +2 -0
  164. package/dist/login-flow-UXUQ7GQT.js +2 -0
  165. package/dist/{maintenance-cmd-6XSVO6FO.js → maintenance-cmd-VFYGKY3X.js} +1 -1
  166. package/dist/{mobile-prompts-JS7GPVKS.js → mobile-prompts-XPQSRBIW.js} +1 -1
  167. package/dist/persist-recorded-session-MFQ7JCLJ.js +3 -0
  168. package/dist/phase-seed-BMOSAA74.js +2 -0
  169. package/dist/pipeline-2XITQU5W.js +2 -0
  170. package/dist/prepare-target-CKRWHYXS.js +2 -0
  171. package/dist/readmodel-TDRFVDVI.js +2 -0
  172. package/dist/reconcile-cmd-BKIJFVQT.js +2 -0
  173. package/dist/reconcile-deps-Y5G456WD.js +4 -0
  174. package/dist/reconcile-engine-WDC2MEOY.js +2 -0
  175. package/dist/{recording-banner-YMKWR3M3.js → recording-banner-P3RUW62P.js} +1 -1
  176. package/dist/records-JLS63SDI.js +2 -0
  177. package/dist/registry-OEY4IXB6.js +2 -0
  178. package/dist/{require-project-folder-3KS7KTME.js → require-project-folder-ZGQLWZV5.js} +1 -1
  179. package/dist/resolve-run-intent-DHZD6A4B.js +2 -0
  180. package/dist/{resolver-V5VP5FLT.js → resolver-W54NOQXY.js} +1 -1
  181. package/dist/revert-PRR3D4XM.js +2 -0
  182. package/dist/review-cmd-SAGIKWEW.js +4 -0
  183. package/dist/run-7TZTUTTU.js +2 -0
  184. package/dist/run-BGQTRIU4.js +2 -0
  185. package/dist/{run-test-md-FO2RNNOD.js → run-test-md-WO2UDYPM.js} +2 -2
  186. package/dist/{sessions-cmd-ZZIZN2VB.js → sessions-cmd-VDQGRBEM.js} +1 -1
  187. package/dist/{skill-installer-W4TT5MST.js → skill-installer-UTVUPOTD.js} +1 -1
  188. package/dist/{spawner-ZSYJQGQW.js → spawner-SHCGHLQS.js} +1 -1
  189. package/dist/{structured-answers-5EY2AZN7.js → structured-answers-YAVW65G4.js} +1 -1
  190. package/dist/tcg-generate-YDNE643C.js +2 -0
  191. package/dist/testmd-actions-UCJ4ULSX.js +2 -0
  192. package/dist/token-refresh-ZNV2OSZC.js +2 -0
  193. package/dist/{validate-basic-727KRHX6.js → validate-basic-XEPS5I6V.js} +1 -1
  194. package/dist/verdicts-SOX22V6V.js +2 -0
  195. package/dist/{version-check-A2JQYRI2.js → version-check-LWDLMWBJ.js} +1 -1
  196. package/dist/{view-cmd-KPJTP4DI.js → view-cmd-SXXNDZIC.js} +1 -1
  197. package/dist/walk-session-M3OIWR5K.js +2 -0
  198. package/dist/with-telemetry-SF5RHYQE.js +2 -0
  199. package/package.json +11 -14
  200. package/dist/ConfigView-EOYCKYJS.js +0 -2
  201. package/dist/EvidenceViewOffer-AQ3KB3EN.js +0 -2
  202. package/dist/FolderPicker-RCHRYYC4.js +0 -2
  203. package/dist/SingleShotApp-AY3XFEYT.js +0 -2
  204. package/dist/TestMdRunView-RPW4MIJA.js +0 -2
  205. package/dist/bridge-GQJ35GTL.js +0 -2
  206. package/dist/chat-committer-ZWWCLJFD.js +0 -2
  207. package/dist/chat-controller-R4THYYPU.js +0 -2
  208. package/dist/chunk-3Q6WAK6P.js +0 -2
  209. package/dist/chunk-56PAQAX5.js +0 -19
  210. package/dist/chunk-B5QGIUJA.js +0 -26
  211. package/dist/chunk-BRTARADN.js +0 -4
  212. package/dist/chunk-CZUOGGUK.js +0 -2
  213. package/dist/chunk-DEZ7CXGM.js +0 -21
  214. package/dist/chunk-ESC7AOCX.js +0 -2
  215. package/dist/chunk-KLTKEGDH.js +0 -355
  216. package/dist/chunk-LN7233E2.js +0 -20
  217. package/dist/chunk-LQQXPY5B.js +0 -4
  218. package/dist/chunk-MKSTP2XN.js +0 -26
  219. package/dist/chunk-Q4V2GK5U.js +0 -2
  220. package/dist/chunk-QBG7XEGQ.js +0 -15
  221. package/dist/chunk-QQAAPFIR.js +0 -2
  222. package/dist/chunk-R5T4RLF5.js +0 -2
  223. package/dist/chunk-SORVX3KI.js +0 -7
  224. package/dist/chunk-TH47OOBV.js +0 -4
  225. package/dist/chunk-TRJUD3XJ.js +0 -5
  226. package/dist/chunk-V444REBC.js +0 -11
  227. package/dist/chunk-VAYBKR76.js +0 -4
  228. package/dist/chunk-WXHQYYD5.js +0 -2
  229. package/dist/chunk-XQFITNA3.js +0 -2
  230. package/dist/chunk-ZSXDZI56.js +0 -20
  231. package/dist/committer-SWEWEYNX.js +0 -2
  232. package/dist/cover-cmd-7JILZJUK.js +0 -3
  233. package/dist/descriptor-OEUZZCOK.js +0 -2
  234. package/dist/design-committer-VYT6NU3T.js +0 -2
  235. package/dist/dispatch-2PBSJ7YW.js +0 -2
  236. package/dist/doctor-OWRRDA4Z.js +0 -2
  237. package/dist/dossier-KTLTGT2X.js +0 -3
  238. package/dist/evidence-NDAKCCHQ.js +0 -2
  239. package/dist/evolve-cmd-DIA5EWUT.js +0 -2
  240. package/dist/exit-manager-3FVBTNYR.js +0 -2
  241. package/dist/gaps-cmd-3ZX3PZF4.js +0 -3
  242. package/dist/ingest-JO5NJENZ.js +0 -2
  243. package/dist/ingest-cmd-T6HM3AHK.js +0 -2
  244. package/dist/install-NIVU4XVS.js +0 -2
  245. package/dist/lifecycle-cmd-O2324GN6.js +0 -2
  246. package/dist/list-cmd-N4KMA34H.js +0 -3
  247. package/dist/logical-ids-TEBCQJGO.js +0 -2
  248. package/dist/login-flow-NHBJVDW6.js +0 -2
  249. package/dist/persist-recorded-session-LE3LGFOS.js +0 -3
  250. package/dist/phase-seed-DIRETNU6.js +0 -2
  251. package/dist/pipeline-MTAZDCZR.js +0 -2
  252. package/dist/prepare-target-YK2DLDWB.js +0 -2
  253. package/dist/readmodel-XOYGGQ3S.js +0 -2
  254. package/dist/reconcile-cmd-CYRYVS5B.js +0 -2
  255. package/dist/reconcile-deps-FYXRAMF2.js +0 -4
  256. package/dist/reconcile-engine-6AT6EVGS.js +0 -2
  257. package/dist/records-IOZTZUZV.js +0 -2
  258. package/dist/registry-V45ZQ6Q5.js +0 -2
  259. package/dist/resolve-run-intent-W32G6WM6.js +0 -2
  260. package/dist/revert-NQ7GEVSE.js +0 -2
  261. package/dist/review-cmd-DQRKQUMG.js +0 -4
  262. package/dist/run-26IR3CKX.js +0 -2
  263. package/dist/run-5IYI2TJI.js +0 -2
  264. package/dist/tcg-generate-ONLV5GXG.js +0 -2
  265. package/dist/testmd-actions-NPILETCQ.js +0 -2
  266. package/dist/token-refresh-G2CSTY4B.js +0 -2
  267. package/dist/types-O23GN2YM.js +0 -2
  268. package/dist/verdicts-TDJLJJ3F.js +0 -2
  269. package/dist/walk-session-HB3OOWVR.js +0 -2
  270. package/dist/with-telemetry-HSD6CXDS.js +0 -2
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{d,e as f}from"./chunk-WXHQYYD5.js";var G={high:3,med:2,low:1},R={create:0,evolve:1,"reuse-candidate":2},_=.75;function a(e,n){return!e.superseded.has(n)&&e.trust.get(n)!=="archived"}function E(e,n){return e.edgesInto(n).some(t=>t.type===f.VERIFIES&&a(e,t.src))}function m(e,n="med"){let t=e.risk;return t==="high"||t==="med"||t==="low"?t:n}function u(e,n){return e.displayNameOf(n)??n}function y(e,n){return`kane-cli design tests --use-case ${u(e,n)}`}function b(e,n){let t=e.edgesFrom(n).find(i=>i.type===f.SCOPED_TO&&a(e,i.dst));if(!t)return null;let s=e.nodeLabel.get(t.dst);if(s===d.USECASE)return t.dst;if(s===d.SCENARIO){let i=e.edgesFrom(t.dst).find(r=>r.type===f.BELONGS_TO&&a(e,r.dst));return i?i.dst:null}return null}function v(e,n){let t=b(e,n);return t?y(e,t):w(e,n)}function w(e,n){return`kane-cli design explain ${u(e,n)}`}function h(e,n){let t=e.edgesFrom(n).find(i=>i.type===f.AUTOMATES&&a(e,i.dst));if(!t)return null;let s=e.edgesFrom(t.dst).find(i=>i.type===f.BELONGS_TO&&a(e,i.dst));return s?s.dst:null}function x(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.AC))a(e,t)&&(E(e,t)||n.push({ref:u(e,t),kind:"no-verifies",why:"no live test verifies this acceptance criterion",risk:m(s),stage:"design",tag:"create",ready_command:v(e,t)}));return n}function S(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.USECASE)){if(!a(e,t))continue;let i=e.edgesInto(t).filter(o=>o.type===f.BELONGS_TO&&a(e,o.src));if(i.length===0){n.push({ref:u(e,t),kind:"zero-scenario",why:"use-case has no scenarios",risk:m(s),stage:"design",tag:"create",ready_command:y(e,t)});continue}i.every(o=>e.getNode(o.src)?.content.case_type==="happy")&&n.push({ref:u(e,t),kind:"happy-only",why:"use-case is exercised by happy-path scenarios only",risk:m(s),stage:"design",tag:"create",ready_command:y(e,t)})}return n}function L(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.GAP)){if(!a(e,t))continue;let i=s.ref,r=typeof i=="string"?e.resolve(i):null,o=r&&a(e,r.tip)?r.tip:null,l=o?e.nodeLabel.get(o):null,p=s.kind==="reconcile_deferred"?"kane-cli maintain reconcile":l===d.USECASE?y(e,o):l===d.AC?v(e,o):w(e,t),c=s.question&&typeof s.question=="object"?s.question:void 0,g=typeof s.text=="string"&&s.text||(c&&typeof c.header=="string"?c.header:"")||"design gap";n.push({ref:u(e,t),kind:String(s.kind),why:g,risk:m(s),stage:"design",tag:"create",ready_command:p,...typeof s.risk_rationale=="string"?{risk_rationale:s.risk_rationale}:{},...c?{question:c}:{}})}return n}function C(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.AC)){if(!a(e,t))continue;let i=e.stale(t);i==="fresh"||i==="superseded"||n.push({ref:u(e,t),kind:"stale-ac",why:`acceptance criterion is ${i} \u2014 its source moved since this was authored \xB7 why: kane-cli design explain ${u(e,t)}`,risk:m(s),stage:"design",tag:"evolve",ready_command:"kane-cli maintain reconcile"})}for(let{cid:t,content:s}of e.byLabel(d.TEST)){if(!a(e,t))continue;let i=e.stale(t);if(i==="fresh"||i==="superseded")continue;let r=e.edgesFrom(t).filter(k=>k.type===f.VERIFIES&&a(e,k.dst)),o=r.map(k=>m(e.getNode(k.dst)?.content??{})),l=o.includes("high")?"high":o.includes("med")?"med":o.includes("low")?"low":"med",p=r[0]?.dst??null,c=p?null:h(e,t),g=p?v(e,p):c?y(e,c):w(e,t);n.push({ref:u(e,t),kind:"stale-test",why:`test is ${i} \u2014 its source moved since this was authored`,risk:l,stage:"design",tag:"evolve",ready_command:g})}return n}async function O(e,n,t){for(let s of e)if(s.tag==="create"){if(!t){s.meta={embed_arm:"skipped"};continue}try{let i=n.resolve(s.ref),r=i?n.getNode(i.tip):null,o=r&&(String(r.content.title??"")||String(r.content.text??""))||s.why,l=r?.label===d.USECASE?"scenario":"test",c=(await t.searchSimilar(o,{label:l,k:1}))[0];c&&c.score>=_?(s.tag="reuse-candidate",s.meta={embed_arm:"used",near_hit:{ref:u(n,c.cid),score:c.score}}):s.meta={embed_arm:"used",near_hit:null}}catch{s.meta={embed_arm:"skipped"}}}}function A(e,n){let t=G[n.risk]-G[e.risk];if(t!==0)return t;let s=R[e.tag]-R[n.tag];return s!==0?s:e.ref<n.ref?-1:e.ref>n.ref?1:0}function T(e,n){let t=[],s=r=>{let o=e.resolve(r);return o&&!o.superseded?m(e.getNode(o.tip)?.content??{}):"med"},i=r=>{let o=e.resolve(r),l=o&&!o.superseded?b(e,o.tip):null;return l?u(e,l):r};for(let r of n.usecases??[])for(let o of r.acceptance_criteria??[])(o.covered_by??[]).length>0&&(o.execution==="failed"?t.push({ref:o.id,kind:"execution-failed",stage:"cover",tag:"evolve",risk:s(o.id),why:`covering test failed against this AC (tests: ${(o.covered_by??[]).join(", ")})`,ready_command:`kane-cli maintain evolve ${i(o.id)}`}):o.execution==="blocked"?t.push({ref:o.id,kind:"execution-blocked",stage:"cover",tag:"reuse-candidate",risk:s(o.id),why:"the oracle could not run (infrastructure) \u2014 the covering test exists and is reusable",ready_command:"kane-cli testrun run"}):o.execution==="not-run"&&t.push({ref:o.id,kind:"covered-not-run",stage:"cover",tag:"reuse-candidate",risk:s(o.id),why:"a covering test exists but never joined this pack \u2014 run it",ready_command:"kane-cli testrun run"}));return t}async function N(e,n,t,s){if(n!=="design"&&!s)throw new Error(`gaps-engine: stage "${n}" requires a pack's usecases doc`);let i=[];return(n==="design"||n==="all")&&i.push(...x(e),...S(e),...L(e),...C(e)),(n==="cover"||n==="all")&&i.push(...T(e,s)),await O(i,e,t),i.sort(A),i}export{a,E as b,b as c,N as d};
2
+ import{d,e as f}from"./chunk-AKX4VRRR.js";var G={high:3,med:2,low:1},R={create:0,evolve:1,"reuse-candidate":2},_=.75;function a(e,n){return!e.superseded.has(n)&&e.trust.get(n)!=="archived"}function E(e,n){return e.edgesInto(n).some(t=>t.type===f.VERIFIES&&a(e,t.src))}function m(e,n="med"){let t=e.risk;return t==="high"||t==="med"||t==="low"?t:n}function u(e,n){return e.displayNameOf(n)??n}function y(e,n){return`kane-cli design tests --use-case ${u(e,n)}`}function b(e,n){let t=e.edgesFrom(n).find(i=>i.type===f.SCOPED_TO&&a(e,i.dst));if(!t)return null;let s=e.nodeLabel.get(t.dst);if(s===d.USECASE)return t.dst;if(s===d.SCENARIO){let i=e.edgesFrom(t.dst).find(r=>r.type===f.BELONGS_TO&&a(e,r.dst));return i?i.dst:null}return null}function v(e,n){let t=b(e,n);return t?y(e,t):w(e,n)}function w(e,n){return`kane-cli design explain ${u(e,n)}`}function h(e,n){let t=e.edgesFrom(n).find(i=>i.type===f.AUTOMATES&&a(e,i.dst));if(!t)return null;let s=e.edgesFrom(t.dst).find(i=>i.type===f.BELONGS_TO&&a(e,i.dst));return s?s.dst:null}function x(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.AC))a(e,t)&&(E(e,t)||n.push({ref:u(e,t),kind:"no-verifies",why:"no live test verifies this acceptance criterion",risk:m(s),stage:"design",tag:"create",ready_command:v(e,t)}));return n}function S(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.USECASE)){if(!a(e,t))continue;let i=e.edgesInto(t).filter(o=>o.type===f.BELONGS_TO&&a(e,o.src));if(i.length===0){n.push({ref:u(e,t),kind:"zero-scenario",why:"use-case has no scenarios",risk:m(s),stage:"design",tag:"create",ready_command:y(e,t)});continue}i.every(o=>e.getNode(o.src)?.content.case_type==="happy")&&n.push({ref:u(e,t),kind:"happy-only",why:"use-case is exercised by happy-path scenarios only",risk:m(s),stage:"design",tag:"create",ready_command:y(e,t)})}return n}function L(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.GAP)){if(!a(e,t))continue;let i=s.ref,r=typeof i=="string"?e.resolve(i):null,o=r&&a(e,r.tip)?r.tip:null,l=o?e.nodeLabel.get(o):null,p=s.kind==="reconcile_deferred"?"kane-cli maintain reconcile":l===d.USECASE?y(e,o):l===d.AC?v(e,o):w(e,t),c=s.question&&typeof s.question=="object"?s.question:void 0,g=typeof s.text=="string"&&s.text||(c&&typeof c.header=="string"?c.header:"")||"design gap";n.push({ref:u(e,t),kind:String(s.kind),why:g,risk:m(s),stage:"design",tag:"create",ready_command:p,...typeof s.risk_rationale=="string"?{risk_rationale:s.risk_rationale}:{},...c?{question:c}:{}})}return n}function C(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.AC)){if(!a(e,t))continue;let i=e.stale(t);i==="fresh"||i==="superseded"||n.push({ref:u(e,t),kind:"stale-ac",why:`acceptance criterion is ${i} \u2014 its source moved since this was authored \xB7 why: kane-cli design explain ${u(e,t)}`,risk:m(s),stage:"design",tag:"evolve",ready_command:"kane-cli maintain reconcile"})}for(let{cid:t,content:s}of e.byLabel(d.TEST)){if(!a(e,t))continue;let i=e.stale(t);if(i==="fresh"||i==="superseded")continue;let r=e.edgesFrom(t).filter(k=>k.type===f.VERIFIES&&a(e,k.dst)),o=r.map(k=>m(e.getNode(k.dst)?.content??{})),l=o.includes("high")?"high":o.includes("med")?"med":o.includes("low")?"low":"med",p=r[0]?.dst??null,c=p?null:h(e,t),g=p?v(e,p):c?y(e,c):w(e,t);n.push({ref:u(e,t),kind:"stale-test",why:`test is ${i} \u2014 its source moved since this was authored`,risk:l,stage:"design",tag:"evolve",ready_command:g})}return n}async function O(e,n,t){for(let s of e)if(s.tag==="create"){if(!t){s.meta={embed_arm:"skipped"};continue}try{let i=n.resolve(s.ref),r=i?n.getNode(i.tip):null,o=r&&(String(r.content.title??"")||String(r.content.text??""))||s.why,l=r?.label===d.USECASE?"scenario":"test",c=(await t.searchSimilar(o,{label:l,k:1}))[0];c&&c.score>=_?(s.tag="reuse-candidate",s.meta={embed_arm:"used",near_hit:{ref:u(n,c.cid),score:c.score}}):s.meta={embed_arm:"used",near_hit:null}}catch{s.meta={embed_arm:"skipped"}}}}function A(e,n){let t=G[n.risk]-G[e.risk];if(t!==0)return t;let s=R[e.tag]-R[n.tag];return s!==0?s:e.ref<n.ref?-1:e.ref>n.ref?1:0}function T(e,n){let t=[],s=r=>{let o=e.resolve(r);return o&&!o.superseded?m(e.getNode(o.tip)?.content??{}):"med"},i=r=>{let o=e.resolve(r),l=o&&!o.superseded?b(e,o.tip):null;return l?u(e,l):r};for(let r of n.usecases??[])for(let o of r.acceptance_criteria??[])(o.covered_by??[]).length>0&&(o.execution==="failed"?t.push({ref:o.id,kind:"execution-failed",stage:"cover",tag:"evolve",risk:s(o.id),why:`covering test failed against this AC (tests: ${(o.covered_by??[]).join(", ")})`,ready_command:`kane-cli maintain evolve ${i(o.id)}`}):o.execution==="blocked"?t.push({ref:o.id,kind:"execution-blocked",stage:"cover",tag:"reuse-candidate",risk:s(o.id),why:"the oracle could not run (infrastructure) \u2014 the covering test exists and is reusable",ready_command:"kane-cli testrun run"}):o.execution==="not-run"&&t.push({ref:o.id,kind:"covered-not-run",stage:"cover",tag:"reuse-candidate",risk:s(o.id),why:"a covering test exists but never joined this pack \u2014 run it",ready_command:"kane-cli testrun run"}));return t}async function N(e,n,t,s){if(n!=="design"&&!s)throw new Error(`gaps-engine: stage "${n}" requires a pack's usecases doc`);let i=[];return(n==="design"||n==="all")&&i.push(...x(e),...S(e),...L(e),...C(e)),(n==="cover"||n==="all")&&i.push(...T(e,s)),await O(i,e,t),i.sort(A),i}export{a,E as b,b as c,N as d};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ function a(e){return e.virtualName??e.displayName}function c(e,n){if(!n)return!1;let r=e.trim(),i=n.trim();if(r.toLowerCase()===i.toLowerCase())return!0;let l=o=>{let f=o.split(".").map(s=>Number(s));return f.every(s=>Number.isFinite(s))?f:null},t=l(r),u=l(i);if(!t||!u)return!1;let d=Math.max(t.length,u.length);for(let o=0;o<d;o++)if((t[o]??0)!==(u[o]??0))return!1;return!0}function m(e,n){return c(n.osVersion,e.osVersion)?n.name===void 0?!0:a(e).toLowerCase()===n.name.trim().toLowerCase():!1}function p(e,n){let r=n.trim().toLowerCase();return e.id.toLowerCase()===r||e.virtualName?.toLowerCase()===r}function v(e){if(!(!e?.name||!e.os_version))return{name:e.name,osVersion:e.os_version}}function b(e,n){if(e.platform!==n.platform||e.kind!==n.kind)return!1;let r=v(n);return r?m(e,r):n.id?p(e,n.id):!1}function T(e){return e.osVersion?{platform:e.platform,kind:e.kind,name:a(e),os_version:e.osVersion}:{platform:e.platform,kind:e.kind,id:e.kind==="simulator"?e.id:a(e)}}function D(e){return e?.name??e?.id??null}function R(e){return e?.os_version??null}function g(e){return e?e.name?e.os_version?`${e.name} (${e.os_version})`:e.name:e.id??null:null}function x(e){let n=[...e].sort((r,i)=>r.id.localeCompare(i.id));return n.find(r=>r.state==="ready")??n[0]}export{a,c as b,m as c,v as d,b as e,T as f,D as g,R as h,g as i,x as j};
@@ -0,0 +1,16 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{h as _,k as M,m as R,o as h}from"./chunk-H4WIA4IP.js";import{x as k}from"./chunk-W3Z7AZNT.js";import{existsSync as j,mkdirSync as E,readdirSync as N,readFileSync as O,renameSync as T,writeFileSync as G}from"fs";import{join as g}from"path";var P=/^@import\s+(\S+)\s*$/;function W(e,n){let r=e.resolve(n),i=r?String(e.getNode(r.tip)?.content.title??""):"";return i&&k(i,()=>!1)||n}function D(e){return g(e,".testmuai","tests")}function L(e){let n=new Map;if(!j(e))return n;for(let r of N(e)){if(!r.endsWith("_test.md"))continue;let i=g(e,r);try{let s=h(O(i,"utf8"))?.id;s&&n.set(s,[...n.get(s)??[],i])}catch{}}return n}function q(e,n,r){let i=`assurance:
3
+ id: ${n}
4
+ base: ${r}
5
+ `,s=e.endsWith(`
6
+ `)?e:e+`
7
+ `;return s.startsWith(`---
8
+ `)?`---
9
+ ${i}${s.slice(4)}`:s.startsWith(`---\r
10
+ `)?`---\r
11
+ ${i.replace(/\n/g,`\r
12
+ `)}${s.slice(5)}`:`---
13
+ ${i}---
14
+ ${s}`}function z(e,n){let r=`${e}.tmp-mint`;G(r,n),T(r,e)}function V(e){let{graph:n,cids:r,cwd:i}=e,s=D(i),$=[],f=[],m=L(s),w=new Set,y=(t,d)=>{let a=m.get(t);if(a&&a.length>1)return f.push({id:t,reason:`two files claim assurance.id ${t}: ${a.join(" \xB7 ")} \u2014 resolve the duplicate first`}),null;if(w.has(t))return I(t);if(d.includes(t))return I(t)??`${W(n,t)}_test.md`;let S=n.resolve(t),b=S?n.getNode(S.tip):void 0,v=b?.content.test_md_blob,x=b?.content.definitionId;if(!v||!x)return f.push({id:t,reason:`${t} has no test definition in the graph`}),null;let A=v.split(`
15
+ `).map(o=>{let c=P.exec(o.trim());if(!c)return o;let l=c[1];if(!n.resolve(l))return o;let F=y(l,[...d,t]);if(!F)throw new p(`dependency ${l} could not be minted/located`);return`@import ./${F}`}).join(`
16
+ `),B=q(A,t,x),u=a?.[0];if(u){let o=O(u,"utf8"),c=h(o)?.base,l=_(M(o,R(s,n)));if(!c||l!==c)return f.push({id:t,reason:`${u} was edited since the engine last wrote it \u2014 keeping yours (reconcile via a run or maintain)`}),null}else{let o=W(n,t),c=g(s,`${o}_test.md`);for(let l=2;j(c);l++)c=g(s,`${o}-${l}_test.md`);u=c}return E(s,{recursive:!0}),z(u,B),w.add(t),m.set(t,[u]),$.push({id:t,path:u}),u.split("/").pop()},I=t=>m.get(t)?.[0]?.split("/").pop()??null;for(let t of r){let d=n.nameOf.get(t);if(!d){f.push({id:t,reason:"minted test has no logical id"});continue}try{y(d,[])}catch(a){if(a instanceof p)f.push({id:d,reason:a.message});else throw a}}return{wrote:$,refused:f}}var p=class extends Error{};export{D as a,L as b,V as c};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as $}from"./chunk-YCCUBQY4.js";import{a as U}from"./chunk-CZUOGGUK.js";import{a as k}from"./chunk-BPMSNGXQ.js";import{a as _}from"./chunk-AO3PBE2V.js";import{a as T}from"./chunk-OYJBABRV.js";import{x as i}from"./chunk-OFW3ZVTP.js";import{a as O}from"./chunk-HCBYKLMW.js";import{a as u,b as s}from"./chunk-C44QQJR4.js";import{a as K}from"./chunk-6YGTRKDT.js";import{e as S}from"./chunk-UR6MHSHU.js";var e=S(K(),1);var r=S(O(),1);function V(n,x,c){return{id:n,label:`${x} (${n})`,isActive:n===c}}function se({resolver:n,currentProjectId:x,env:c,onSelect:w,onCancel:C}){let[q,B]=(0,e.useState)([]),[D,l]=(0,e.useState)(!0),[H,m]=(0,e.useState)(!1),[J,g]=(0,e.useState)(!1),[Q,P]=(0,e.useState)(null),[d,p]=(0,e.useState)("list"),[v,R]=(0,e.useState)(""),[E,h]=(0,e.useState)(null),[I,X]=(0,e.useState)(""),b=(0,e.useRef)(!1),A=(0,e.useRef)(!0);(0,e.useEffect)(()=>{if(!n){P("Login first to browse projects"),l(!1);return}let o=new AbortController,a=I.trim();return A.current?l(!0):a&&g(!0),m(!0),P(null),(async()=>{try{let t=n.cached??await n.resolve();if(!t){P("Login first to browse projects"),l(!1),m(!1),g(!1);return}let L=T(c),F=new k(L.tmsBaseUrl,t.username,t.access_key),f=!0,N=0,G=a?{signal:o.signal,name:a,perPage:10}:{signal:o.signal,perPage:10};for await(let y of F.listProjectsStream(G)){if(f&&(l(!1),g(!1),A.current=!1,f=!1),y.totalLoaded===0&&y.done&&N===0&&!a){b.current=!0,p("naming"),m(!1);return}let M=y.projects.map(j=>V(j.project_id,j.name,x));B(N===0?M:j=>[...j,...M]),N+=y.projects.length,y.done&&m(!1)}f&&(l(!1),m(!1),g(!1))}catch(t){if(t?.name==="AbortError")return;P(t instanceof Error?t.message:String(t)),l(!1),m(!1),g(!1)}})(),()=>o.abort()},[n,x,c,I]);let Y=(0,e.useCallback)(o=>{let a=o.trim();if(!a){h("Name cannot be empty");return}h(null),p("creating"),(async()=>{try{if(!n)throw new Error("Not authenticated");let t=n.cached??await n.resolve();if(!t)throw new Error("Not authenticated");let L=T(c),f=await new k(L.tmsBaseUrl,t.username,t.access_key).createProject(a);w(f.id,f.name)}catch(t){h(t instanceof Error?t.message:String(t)),p("naming")}})()},[n,c,w]),z=(0,e.useCallback)(()=>{R(""),h(null),b.current?C():p("list")},[C]);return d==="naming"||d==="creating"?(0,r.jsxs)(u,{flexDirection:"column",borderStyle:"round",borderColor:i.orange,paddingX:2,paddingY:1,children:[(0,r.jsx)(s,{color:i.orange,bold:!0,children:"Create new project"}),b.current&&(0,r.jsx)(u,{marginTop:1,children:(0,r.jsx)(s,{color:i.dim,children:"No projects yet \u2014 let's create one."})}),(0,r.jsxs)(u,{marginTop:1,children:[(0,r.jsx)(s,{color:i.dim,children:"Name: "}),d==="naming"?(0,r.jsx)($,{value:v,onChange:o=>{R(o),E&&h(null)},onSubmit:Y,onCancel:z}):(0,r.jsx)(s,{children:v})]}),E&&(0,r.jsx)(u,{marginTop:1,children:(0,r.jsx)(s,{color:i.red,children:E})}),d==="creating"&&(0,r.jsx)(u,{marginTop:1,children:(0,r.jsx)(s,{color:i.dim,children:"Creating..."})}),d==="naming"&&(0,r.jsx)(_,{bindings:[{keys:"\u21B5",label:"create"}],escBackLabel:b.current?"cancel":"back"})]}):(0,r.jsx)(U,{title:"Projects",items:q,loading:D,loadingMore:H,searching:J,preserveSelectionById:!0,onSearch:X,error:Q,itemNoun:"projects",onTab:()=>{b.current=!1,p("naming")},extraHint:"tab to create new",onSelect:o=>{let a=o.label.replace(` (${o.id})`,"");w(o.id,a)},onCancel:C})}export{V as a,se as b};
2
+ import{a as $}from"./chunk-YCCUBQY4.js";import{a as U}from"./chunk-PYHWCV2V.js";import{a as k}from"./chunk-BPMSNGXQ.js";import{a as _}from"./chunk-Q6743UUQ.js";import{a as T}from"./chunk-V5DYLGAM.js";import{x as i}from"./chunk-LPH4TERT.js";import{a as O}from"./chunk-HCBYKLMW.js";import{a as u,b as s}from"./chunk-C44QQJR4.js";import{a as K}from"./chunk-6YGTRKDT.js";import{e as S}from"./chunk-UR6MHSHU.js";var e=S(K(),1);var r=S(O(),1);function V(n,x,c){return{id:n,label:`${x} (${n})`,isActive:n===c}}function se({resolver:n,currentProjectId:x,env:c,onSelect:w,onCancel:C}){let[q,B]=(0,e.useState)([]),[D,l]=(0,e.useState)(!0),[H,m]=(0,e.useState)(!1),[J,g]=(0,e.useState)(!1),[Q,P]=(0,e.useState)(null),[d,p]=(0,e.useState)("list"),[v,R]=(0,e.useState)(""),[E,h]=(0,e.useState)(null),[I,X]=(0,e.useState)(""),b=(0,e.useRef)(!1),A=(0,e.useRef)(!0);(0,e.useEffect)(()=>{if(!n){P("Login first to browse projects"),l(!1);return}let o=new AbortController,a=I.trim();return A.current?l(!0):a&&g(!0),m(!0),P(null),(async()=>{try{let t=n.cached??await n.resolve();if(!t){P("Login first to browse projects"),l(!1),m(!1),g(!1);return}let L=T(c),F=new k(L.tmsBaseUrl,t.username,t.access_key),f=!0,N=0,G=a?{signal:o.signal,name:a,perPage:10}:{signal:o.signal,perPage:10};for await(let y of F.listProjectsStream(G)){if(f&&(l(!1),g(!1),A.current=!1,f=!1),y.totalLoaded===0&&y.done&&N===0&&!a){b.current=!0,p("naming"),m(!1);return}let M=y.projects.map(j=>V(j.project_id,j.name,x));B(N===0?M:j=>[...j,...M]),N+=y.projects.length,y.done&&m(!1)}f&&(l(!1),m(!1),g(!1))}catch(t){if(t?.name==="AbortError")return;P(t instanceof Error?t.message:String(t)),l(!1),m(!1),g(!1)}})(),()=>o.abort()},[n,x,c,I]);let Y=(0,e.useCallback)(o=>{let a=o.trim();if(!a){h("Name cannot be empty");return}h(null),p("creating"),(async()=>{try{if(!n)throw new Error("Not authenticated");let t=n.cached??await n.resolve();if(!t)throw new Error("Not authenticated");let L=T(c),f=await new k(L.tmsBaseUrl,t.username,t.access_key).createProject(a);w(f.id,f.name)}catch(t){h(t instanceof Error?t.message:String(t)),p("naming")}})()},[n,c,w]),z=(0,e.useCallback)(()=>{R(""),h(null),b.current?C():p("list")},[C]);return d==="naming"||d==="creating"?(0,r.jsxs)(u,{flexDirection:"column",borderStyle:"round",borderColor:i.orange,paddingX:2,paddingY:1,children:[(0,r.jsx)(s,{color:i.orange,bold:!0,children:"Create new project"}),b.current&&(0,r.jsx)(u,{marginTop:1,children:(0,r.jsx)(s,{color:i.dim,children:"No projects yet \u2014 let's create one."})}),(0,r.jsxs)(u,{marginTop:1,children:[(0,r.jsx)(s,{color:i.dim,children:"Name: "}),d==="naming"?(0,r.jsx)($,{value:v,onChange:o=>{R(o),E&&h(null)},onSubmit:Y,onCancel:z}):(0,r.jsx)(s,{children:v})]}),E&&(0,r.jsx)(u,{marginTop:1,children:(0,r.jsx)(s,{color:i.red,children:E})}),d==="creating"&&(0,r.jsx)(u,{marginTop:1,children:(0,r.jsx)(s,{color:i.dim,children:"Creating..."})}),d==="naming"&&(0,r.jsx)(_,{bindings:[{keys:"\u21B5",label:"create"}],escBackLabel:b.current?"cancel":"back"})]}):(0,r.jsx)(U,{title:"Projects",items:q,loading:D,loadingMore:H,searching:J,preserveSelectionById:!0,onSearch:X,error:Q,itemNoun:"projects",onTab:()=>{b.current=!1,p("naming")},extraHint:"tab to create new",onSelect:o=>{let a=o.label.replace(` (${o.id})`,"");w(o.id,a)},onCancel:C})}export{V as a,se as b};
@@ -0,0 +1,21 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{d as xt,g as bt}from"./chunk-QQ5MHSSY.js";import{b as ye,c as Y,d as we,e as _e}from"./chunk-7RTITBZG.js";import{b as w,c as fe,d as dt,f as me,g as ge}from"./chunk-5GUD3CIH.js";import{a as ut,d as lt,h as L,i as pt,j as ft,k as G,l as mt,m as Z,n as gt,o as F,p as ht}from"./chunk-H4WIA4IP.js";import{a as B,b as z,d as ct}from"./chunk-EHN5HTUD.js";import{d as he}from"./chunk-IPEA7ZOF.js";import{d as kt}from"./chunk-NVGBE2DR.js";import{a as re}from"./chunk-CH273NAE.js";import{b as A,c as x}from"./chunk-VZ7KXRXB.js";import{a as le,c as ot,d as st,e as at,f as pe}from"./chunk-P7YZ3PU3.js";import{C as b,e as wt,f as _t}from"./chunk-W3Z7AZNT.js";import{b as W}from"./chunk-6FCPS2VT.js";import{a as yt}from"./chunk-UH2ZTX4E.js";import{b as ve,d as ee,g as te,j as q}from"./chunk-XMTSHHYQ.js";import{d as U,f as vt}from"./chunk-AKX4VRRR.js";import{a as nt,b as it}from"./chunk-SQWVGI3J.js";import{a as rt}from"./chunk-LPH4TERT.js";function D(e){if(e===null)return"broken";let t=Math.floor(e/100);return t===1?"passed":t===7?"failed":t===2?"skipped":"broken"}var C={failed:3,broken:2,passed:1,skipped:0};function xe(e){let t="skipped";for(let r of e)C[r]>C[t]&&(t=r);return t}import{createHash as ur}from"crypto";import{basename as lr}from"path";function be(e){let t=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,40);return t.length>0?t:"session"}function ke(e){return ur("sha256").update(e).digest("hex").slice(0,8)}function Ee(e){let t=lr(e).replace(/_test\.md$/i,"").replace(/\.md$/i,"");return`${be(t)}-${ke(e)}`}function Se(e,t){return`${be(e)}-${ke(t)}`}function Ie(e){let t={};for(let[r,n]of Object.entries(e))typeof n=="string"&&n.length>0&&(t[r]=n);return t}function pr(e,t){return{pack_test_dir:e,ordinal_offset:t}}import{promises as E}from"fs";import{join as S}from"path";function Re(e){let t={evidence:"0.1",run_id:e.execution_id,status:"running",title:e.title,started:e.started,environment:{producer:{name:"kane-cli",version:e.producerVersion},...e.surfaces?{surfaces:e.surfaces}:{},run_kind:e.run_kind,origin:e.origin,pid:e.pid},...e.credits!==void 0?{metrics:{credits:{value:e.credits,type:"count"}}}:{}};return x(t,{lineWidth:-1})}async function Pe(e,t,r,n=process.cwd(),i){let o=i??w(e.execution_id,n),s=S(o,"tests",t);return await E.mkdir(S(o,"coverage"),{recursive:!0}),await E.writeFile(S(o,"coverage",".keep"),""),await E.mkdir(s,{recursive:!0}),await E.writeFile(S(o,"run.yaml"),Re(e)),r&&await E.writeFile(S(s,r.path),r.content),o}async function fr(e,t=process.cwd()){let r=w(e.execution_id,t);await E.mkdir(S(r,"coverage"),{recursive:!0}),await E.writeFile(S(r,"coverage",".keep"),"");let n=A(Re(e));return n.environment&&delete n.environment.run_kind,await E.writeFile(S(r,"run.yaml"),x(n,{lineWidth:-1})),r}async function mr(e,t=process.cwd()){return z(w(e,t),new Date().toISOString())}async function $e(e,t=process.cwd()){await E.rm(w(e,t),{recursive:!0,force:!0})}import{promises as Ae}from"fs";import{join as Le}from"path";function ne(e){let t={evidence:"0.1",test:e.testId,status:e.status,...e.durationMs!==void 0?{duration_ms:e.durationMs}:{},...e.attempts&&e.attempts.length?{attempts:e.attempts}:{},...e.flaky!==void 0?{flaky:e.flaky}:{},...e.adaptiveHeal?{adaptive_heal:e.adaptiveHeal}:{},...e.definitionPath?{definition:{path:e.definitionPath}}:{},...e.definitionId?{definition_id:e.definitionId}:{},...e.assuranceId?{assurance_id:e.assuranceId}:{},...Object.keys(e.externalId).length?{external_id:e.externalId}:{},...e.tags&&e.tags.length?{tags:e.tags}:{},...Object.keys(e.environment).length?{environment:e.environment}:{},steps:e.steps};return x(t,{lineWidth:-1})}function Fe(e){return x({logs:e},{lineWidth:-1})}async function Ce(e,t,r){await Ae.writeFile(Le(e,"tests",t,"result.yaml"),r)}async function De(e,t,r){let n=Le(e,"tests",t,"logs");await Ae.mkdir(n,{recursive:!0}),await Ae.writeFile(Le(n,"meta.yaml"),r)}import{promises as ie}from"fs";import{join as Et}from"path";function St(e){return Et(e,".internal","meta.json")}async function It(e){let t;try{t=await ie.readFile(St(e),"utf8")}catch(n){if(n?.code==="ENOENT")return null;throw n}let r=JSON.parse(t);if(!r||typeof r!="object"||Array.isArray(r))throw new Error("meta.json is not a JSON object");return r}async function Oe(e,t){let r;try{r=await It(e)??{}}catch(s){console.warn(`evidence: meta.json at ${e} unreadable \u2014 skipping execution-pointer append to preserve identity`,s);return}let n=Array.isArray(r.executions)?r.executions:[];n.push(t),r.executions=n,await ie.mkdir(Et(e,".internal"),{recursive:!0});let i=St(e),o=`${i}.tmp-${process.pid}-${Date.now()}`;await ie.writeFile(o,JSON.stringify(r,null,2)+`
3
+ `),await ie.rename(o,i)}async function gr(e){try{let t=await It(e);return t&&Array.isArray(t.executions)?t.executions:[]}catch{return[]}}async function hr(e,t,r=process.cwd()){let n=await me(e,r);if(!n){let o=`evidence: no pack found for "${e}"`;return t.json?console.log(JSON.stringify({valid:!1,error:"not_found",target:e})):console.error(o),2}let i=await B(n,t.profile??"L1");return t.json?console.log(JSON.stringify({valid:i.valid,status:i.status,diagnostics:i.diagnostics})):console.log(`evidence: ${i.valid?"valid":"INVALID"} (${t.profile??"L1"}, status ${i.status})`),i.valid?0:1}function je(e){let t=[];for(let r of e){let n=r.perFlow&&r.perFlow.length?r.perFlow.map(i=>i.resultCode):[r.resultCode];for(let i of n)t.push(D(i))}return xe(t)}function vr(e){let t=null;for(let r of e){let n=r.perFlow&&r.perFlow.length?r.perFlow.map(i=>i.resultCode):[r.resultCode];for(let i of n)i!=null&&(t==null||C[D(i)]>C[D(t)]||C[D(i)]===C[D(t)]&&i>t)&&(t=i)}return t}import{promises as yr}from"fs";import{extname as Rt,basename as wr}from"path";var _r={".ndjson":"ndjson",".log":"log",".json":"json",".har":"har"};async function Me(e){let t;try{t=await yr.readdir(e)}catch{return[]}return t.filter(r=>r!=="meta.yaml"&&!r.startsWith(".")).sort().map(r=>({name:wr(r,Rt(r)),file:r,format:_r[Rt(r)]??"txt"}))}import{mkdirSync as xr,appendFileSync as br}from"fs";import{join as Pt}from"path";function Te(e,t){return Pt(e,"tests",t,"logs")}function Ne(e,t,r,n={},i){try{i?.(t,r,r,n)}catch{}if(e)try{xr(e,{recursive:!0});let o=JSON.stringify({ts:new Date().toISOString(),level:t,event:r,...n})+`
4
+ `;br(Pt(e,"diagnostics.ndjson"),o)}catch{}}import{promises as I}from"fs";import{dirname as Lr,join as O}from"path";import{statSync as kr}from"fs";import{promises as Ve}from"fs";import{basename as Er,join as Sr}from"path";var Ir=1e6,Rr=2e6;function Pr(){return nt.map(e=>it(e))}function $t(e=Pr()){return e.map(t=>{let r=0;try{r=kr(t).size}catch{}return{path:t,offset:r}})}var $r=/\x1b\[[0-9;]*[A-Za-z]/g;async function Ar(e,t,r){let n;try{n=await Ve.open(e,"r");let i=(await n.stat()).size,o=t<=i?t:0,s=i-o;if(s<=0)return null;let a=s>r?i-r:o,u=Buffer.alloc(Math.min(s,r));return await n.read(u,0,u.length,a),u.toString("utf8")}catch{return null}finally{await n?.close().catch(()=>{})}}async function At(e,t){let r=t.caps?.stderr??Ir,n=t.caps?.appium??Rr,i=[];t.runnerStderrPath&&i.push({src:t.runnerStderrPath,from:0,cap:r});for(let o of t.appiumMarks??[])i.push({src:o.path,from:o.offset,cap:n});for(let o of i){let s=await Ar(o.src,o.from,o.cap);if(s===null)continue;let a=s.replace($r,"");if(a!=="")try{await Ve.mkdir(e,{recursive:!0}),await Ve.writeFile(Sr(e,Er(o.src)),a)}catch{}}}async function Fr(e){try{let t=O(e,"tests"),r=await I.readdir(t).catch(()=>[]);for(let n of r){let i=O(t,n,"steps"),o=await I.readdir(i).catch(()=>[]);for(let s of o){let a=await I.readFile(O(i,s,"failure.yaml"),"utf8").catch(()=>null);if(a!=null)try{let u=A(a);if(u&&typeof u=="object"&&u.triage)return!0}catch{}}}}catch{}return!1}async function Lt(e,t,r,n={}){let i=O(e,"tests",t,"logs");if(r)try{await I.mkdir(i,{recursive:!0}),await I.copyFile(r,O(i,"tui.log"))}catch{}await At(i,{runnerStderrPath:r?O(Lr(r),"runner-stderr.log"):void 0,appiumMarks:n.appiumMarks});let o=await Me(i);if(!o.length&&n.requireRealLog)throw new Error(`evidence test ${t} has no real log to declare`);o.length&&await De(e,t,Fe(o))}async function Be(e){let t=e.cwd??process.cwd(),r=e.packDir??w(e.executionId,t);if(!e.saved&&!e.packDir)return await $e(e.executionId,t),{sealed:!1};await Lt(r,e.testId,e.tuiLogPath,{requireRealLog:e.requireRealLog,appiumMarks:e.appiumMarks});let n=O(r,"run.yaml"),i=A(await I.readFile(n,"utf8"));i.environment={...i.environment??{},saved:e.saved,run_kind:e.runKind},await I.writeFile(n,x(i,{lineWidth:-1}));let o=await I.open(n,"r+");try{await o.sync()}finally{await o.close()}let s=await Fr(r);await z(r,new Date().toISOString());let a;try{let d=await B(r,"L1");a=d.valid;let l=(d.diagnostics??[]).filter(c=>String(c?.code??"").includes("failure.status_disagrees"));if(l.length>0)if(e.expectStatusDisagrees||s){let c=e.expectStatusDisagrees?"expected under --bug-detection continue":"self-explained by triaged failure record(s)";console.warn(`evidence: ${l.length} status_disagrees advisory(ies) \u2014 ${c}`)}else console.warn(`evidence: ${l.length} status_disagrees advisory(ies) \u2014 step verdicts disagree with their failure records`,l);if(!d.valid){console.warn(`evidence: sealed pack ${e.executionId} failed L1 validation`,d.diagnostics);let c=String(d.diagnostics?.[0]?.code??"");Ne(Te(r,e.testId),"warn","EVIDENCE_INVALID",{execution_id:e.executionId,first_code:c,surface:e.surface??"testmd"},e.log)}}catch(d){console.warn(`evidence: validation error for ${e.executionId}`,d)}let u;if(e.saved&&e.packDir)try{u=await dt(r,e.executionId,t)}catch(d){console.warn(`evidence: store install failed for ${e.executionId}`,d)}if(e.outputStemDir)try{await Oe(e.outputStemDir,{execution_id:e.executionId,run_kind:e.runKind,status:e.verdict,valid:a,at:new Date().toISOString()})}catch(d){console.warn(`evidence: execution-pointer append failed for ${e.executionId} (pack is sealed)`,d)}return{sealed:!0,valid:a,storePath:u}}import{release as jt}from"os";import{execFileSync as Cr}from"child_process";import{promises as Ft}from"fs";import{join as Ct}from"path";function Dt(e){return e.replace(/\([^)]*\)/g," ").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||void 0}async function Ot(e){try{let t=Ct(e,"steps"),r=(await Ft.readdir(t,{withFileTypes:!0})).filter(n=>n.isDirectory()).map(n=>n.name).sort((n,i)=>(parseInt(n,10)||0)-(parseInt(i,10)||0));for(let n of r)try{let i=await Ft.readFile(Ct(t,n,"step.json"),"utf8"),s=JSON.parse(i).basis?.window;if(Array.isArray(s)&&s.length===2&&Number.isFinite(Number(s[0]))&&Number.isFinite(Number(s[1]))&&Number(s[0])>0&&Number(s[1])>0)return`${Math.round(Number(s[0]))}x${Math.round(Number(s[1]))}`}catch{}return}catch{return}}var Mt=!1,oe;function Dr(){if(!Mt)if(Mt=!0,process.platform==="darwin")try{oe=Cr("sw_vers",["-productVersion"],{timeout:2e3}).toString().trim()||void 0}catch{oe=jt()||void 0}else oe=jt()||void 0;return oe}function ze(e){let t={os:le(process.platform)},r=Dr();if(r&&(t.os_version=r),e.cdpBrowser){let i=/^([A-Za-z]+)\/(\d+)/.exec(e.cdpBrowser);i&&(t.browser=i[1].replace(/^Headless/,""),t.browser_version=i[2])}e.resolution&&(t.resolution=e.resolution);let n=st(t,e.runnerEnvironment);if(!n.native_platform)return n;if(e.deviceName&&(n.device=e.deviceName),e.deviceModel){let i=Dt(e.deviceModel);i&&(n.device_slug=i)}return e.pixelResolution&&(n.viewport=n.resolution??Or(e.pixelResolution,n.pixel_ratio)??e.pixelResolution,n.resolution=e.pixelResolution),n}function Or(e,t){if(!t||!Number.isFinite(t)||t<=0)return;let r=/^(\d+)x(\d+)$/.exec(e);if(r)return`${Math.round(Number(r[1])/t)}x${Math.round(Number(r[2])/t)}`}async function Tt(e){if(e)try{let t=await fetch(`${e}/json/version`,{signal:AbortSignal.timeout(2e3)});if(!t.ok)return;let r=await t.json();return typeof r.Browser=="string"?r.Browser:void 0}catch{return}}function jr(e){let t;return()=>(t||(t=Tt(e)),t)}import{promises as R,existsSync as P,readFileSync as Vr}from"fs";import{basename as Br,join as h}from"path";import{readFileSync as Mr}from"fs";import{dirname as Tr,resolve as Nr}from"path";function Nt(e,t){let r=Nr(e),n=Mr(r,"utf8");return L(t?G(n,Z(Tr(r),t)):n)}var H=class e{constructor(t){this.opts=t}executionId;testId;definitionPath=null;definitionContent=null;accumulatedSteps=[];maxOrdinal=0;_attempts=[];_packDirOverride;_attached=!1;appiumMarks=$t();get attached(){return this._attached}static async attach(t){let r=Br(t.packDir).replace(/\.evidence$/,""),n=new e({origin:"testrun",runKind:"author",pid:process.pid,title:t.testId,started:new Date().toISOString(),producerVersion:rt,cwd:t.cwd});n.executionId=r,n.testId=t.testId,n._packDirOverride=t.packDir,n._attached=!0;let i=h(t.packDir,"tests",t.testId);return await R.mkdir(i,{recursive:!0}),t.definition&&(await R.writeFile(h(i,t.definition.path),t.definition.content),n.definitionPath=t.definition.path,n.definitionContent=t.definition.content),n}async start(){if(this._attached)throw new Error("attach-mode session is already started");this.executionId=fe(),this.testId=this.opts.testmdRelPath?Ee(this.opts.testmdRelPath):Se(this.opts.objectiveOrName??"session",this.opts.sessionId??this.executionId);let t=this.opts.definition??null;return await Pe({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,t,this.opts.cwd,this.opts.packRootDir?this.pack:void 0),t&&(this.definitionPath=t.path,this.definitionContent=t.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`):w(this.executionId,this.opts.cwd)}get packTestDir(){return h(this.pack,"tests",this.testId)}async writeDefinition(t,r="test.md"){await R.writeFile(h(this.packTestDir,r),t),this.definitionPath=r,this.definitionContent=t}computeAssuranceId(){try{if(this.opts.testmdRelPath&&this.opts.cwd){let t=h(this.opts.cwd,this.opts.testmdRelPath);if(P(t))return F(Vr(t,"utf8"))?.id}}catch{}}computeDefinitionId(){try{if(this.opts.testmdRelPath&&this.opts.cwd){let t=h(this.opts.cwd,this.opts.testmdRelPath),r=h(this.opts.cwd,".context"),n=P(r)?b(r):void 0;if(P(t))return Nt(t,n)}if(this.definitionContent!=null)return L(this.definitionContent)}catch{}}noteSpawn(t){this.accumulatedSteps.push(...t.steps),this.maxOrdinal=Math.max(this.maxOrdinal,t.maxOrdinal)}nextOrdinalOffset(){return this.maxOrdinal}get steps(){return this.accumulatedSteps}get attempts(){return this._attempts}async archiveAttempt(t,r){let n=this._attempts.length+1,i=h(this.packTestDir,String(n)),o;try{await R.mkdir(i,{recursive:!0});for(let a of["steps","logs","v16-trajectory"]){let u=h(this.packTestDir,a);P(u)&&await R.rename(u,h(i,a))}this.definitionPath&&P(h(this.packTestDir,this.definitionPath))&&await R.copyFile(h(this.packTestDir,this.definitionPath),h(i,this.definitionPath));let s=h(i,"steps");if(P(s)){for(let a of await R.readdir(s))if(P(h(s,a,"failure.yaml"))){o=`${n}/steps/${a}/failure.yaml`;break}}}catch{}return this._attempts.push({n,status:t,steps:this.accumulatedSteps,...r!==void 0?{failedAt:r}:{},...o?{failure:o}:{}}),this.accumulatedSteps=[],this.maxOrdinal=0,n}async writeResult(t){let r=je(t.spawns),n=this._attempts.length?[...this._attempts.map(c=>({status:c.status})),{status:r,...t.durationMs!==void 0?{duration_ms:t.durationMs}:{}}]:void 0,i=n?new Set(n.map(c=>c.status)).size>1:void 0,o=this._attempts.length?{triggered:!0,outcome:r==="passed"?"healed":"exhausted",attempts:this._attempts.map(c=>({n:c.n,status:c.status,failed_at:c.failedAt??-1,...c.failure?{failure:c.failure}:{}}))}:void 0,s=this.pack,a=Ie(t.externalIdInput),u=pe(t.runnerEnv,t.intentEnv),d=this.computeDefinitionId(),p=this.computeAssuranceId();await Ce(s,this.testId,ne({testId:this.testId,status:r,durationMs:t.durationMs,definitionPath:this.definitionPath,definitionId:d,assuranceId:p,externalId:a,environment:u,steps:t.steps,tags:t.tags,attempts:n,flaky:i,adaptiveHeal:o}));for(let c of this._attempts){let f=h(this.packTestDir,String(c.n));P(f)&&await R.writeFile(h(f,"result.yaml"),ne({testId:this.testId,status:c.status,definitionPath:this.definitionPath,definitionId:d,assuranceId:p,externalId:a,environment:u,steps:c.steps,tags:t.tags}))}let l=t.externalIdInput;return t.log&&(l.commit_id||l.test_id||l.testcase_id)&&t.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 zr(e,t,r=ge){try{let n=await r(e);if(n.aborted.length>0||n.removed.length>0)try{t?.("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 ln}from"fs";import{existsSync as We,mkdirSync as nn,readdirSync as on,readFileSync as sn,rmSync as an,statSync as cn,writeFileSync as dn}from"fs";import{join as T}from"path";import{mkdirSync as Gr,renameSync as Ur,rmSync as qr,writeFileSync as Wr}from"fs";import{join as Vt}from"path";var Yr=5e6;function Bt(e,t,r){let n=Vt(e,"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 u=kt(t,a.cid);if(u===null||u.byteLength>Yr)continue;o||(Gr(n,{recursive:!0}),o=!0);let d=Vt(n,a.id),p=`${d}.tmp-${process.pid}`;Wr(p,u),Ur(p,d);let l=`coverage/sources/${a.id}`;i.set(a.id,l),a.file=l}}catch{for(let s of r.usecases)for(let a of s.sources)delete a.file;if(o)try{qr(n,{recursive:!0,force:!0})}catch{}}}import{appendFileSync as Jt,existsSync as j,readFileSync as $,renameSync as Xt,writeFileSync as Qt}from"fs";import{dirname as Ue,isAbsolute as ae,join as M,resolve as ce}from"path";var Hr=new Set(["inline","testmd","testrun"]),Kr=new Set(["inferred","authored","runtime-derived"]),se=new Set(["passed","failed","broken","skipped"]);function zt(e,t,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=t;for(let i=0;;i++){let o=te(e);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=b(e);continue}let s=Jr(e,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=b(e)}}function Gt(e,t){return Hr.has(e.mode)?se.has(e.verdict)?Kr.has(e.oracle_mode)?typeof e.drift_flag!="boolean"||typeof e.stale_at_run!="boolean"?[{code:"MISSING_FIELD",detail:`${t}: drift_flag and stale_at_run are required booleans`}]:!e.execution_id||!e.started_at||!e.definition_id_at_run?[{code:"MISSING_FIELD",detail:`${t}: execution_id, started_at and definition_id_at_run are required`}]:[]:[{code:"BAD_ORACLE_MODE",detail:`${t}: oracle_mode '${e.oracle_mode}' not in inferred|authored|runtime-derived`}]:[{code:"BAD_VERDICT",detail:`${t}: verdict '${e.verdict}' not in ${[...se].join("|")}`}]:[{code:"BAD_MODE",detail:`${t}: mode '${e.mode}' not in inline|testmd|testrun`}]}function Ut(e,t,r,n){return{about:t,definition_id_at_run:e.definition_id_at_run,verdict:e.verdict,...r&&r.length?{per_ac:r}:{},drift_flag:e.drift_flag,oracle_mode:e.oracle_mode,stale_at_run:e.stale_at_run,...n.length?{unresolved_acs:n}:{},execution_id:e.execution_id,...e.evidence_id?{evidence_id:e.evidence_id}:{},...e.duration_ms!==void 0?{duration_ms:e.duration_ms}:{},started_at:e.started_at,mode:e.mode,local:e.local,...e.via_parent?{via_parent:e.via_parent}:{}}}function qt(e,t){if(!Array.isArray(t.facts)||t.facts.length===0)return{record:null,errors:[{code:"EMPTY_EXECUTIONS",detail:"parked line carries no facts"}]};for(let r=0;;r++){let n=b(e),i=t.facts.filter(d=>n.appliedEvents.has(d.event_id)).map(d=>d.event_id),o=t.facts.filter(d=>!n.appliedEvents.has(d.event_id));if(o.length===0)return{record:null,errors:null,applied:[],skipped:i,rejected:[]};let s=[],a=[],u=[];for(let d of o){let p=`executions[${d.ref}]`,l=[];if(!d.about_cid||!n.hasNode(d.about_cid))l.push({code:"UNKNOWN_REF",detail:`${p}: about_cid '${String(d.about_cid)}' is not in the graph \u2014 the pinned run-time target is gone`});else if(n.nodeLabel.get(d.about_cid)!==U.TEST)l.push({code:"ILLEGAL_TARGET",detail:`${p}: execution facts attach to tests \u2014 '${d.about_cid}' is a ${n.nodeLabel.get(d.about_cid)}`});else if(!d.event_id)l.push({code:"MISSING_FIELD",detail:`${p}: parked facts require event_id`});else{l.push(...Gt(d,p));for(let m of d.per_ac??[])se.has(m.verdict)||l.push({code:"BAD_VERDICT",detail:`${p}.per_ac['${m.ac_ref}']: verdict '${m.verdict}'`})}if(l.length>0){s.push({event_id:d.event_id??"",errors:l});continue}let c=[],f=[...d.unresolved_acs??[]];for(let m of d.per_ac??[]){let g=n.resolve(m.ac_ref),_=g?n.tipOf(g.cid):null;if(!g||!_||n.superseded.has(_)||n.nodeLabel.get(_)!==U.AC){f.push(m.ac_ref);continue}c.push({ac_ref:n.nameOf.get(_)??_,verdict:m.verdict})}a.push(Ut(d,d.about_cid,c,f)),u.push(d.event_id)}if(a.length===0)return{record:null,errors:null,applied:[],skipped:i,rejected:s};try{let d=q(e,{ts:new Date().toISOString(),proposal_id:null,nodes:[],edges:[],review:[],supersessions:[],executions:a,event_ids:[...u].sort(),source_head_moves:{}},{expectPrev:n.latestHash,busyRetry:{deadlineMs:5e3}}),p;try{W(e)}catch(l){p=`parked facts committed, but the projection refresh failed (${l instanceof Error?l.message:String(l)}) \u2014 read state rebuilds on the next open`}return{record:d.record,errors:null,applied:u,skipped:i,rejected:s,...p?{warnings:[p]}:{}}}catch(d){if(!(d instanceof ve))throw d;if(r>=3)return{record:null,errors:[{code:"STALE_BASIS",detail:"concurrent appends kept moving the head \u2014 parked replay retry budget exhausted (line stays queued)"}]}}}}function Jr(e,t,r){let n=[],i=[];for(let a of r.facts){let u=`executions[${a.ref}]`,d=t.resolve(a.ref),p=d?t.tipOf(d.cid):null;if(!d||!p||t.superseded.has(p)){n.push({code:"UNKNOWN_REF",detail:`${u}: '${a.ref}' is not a live committed node`});continue}if(t.nodeLabel.get(p)!==U.TEST){n.push({code:"ILLEGAL_TARGET",detail:`${u}: execution facts attach to tests \u2014 '${a.ref}' is a ${t.nodeLabel.get(p)}`});continue}let l=Gt(a,u);if(l.length>0){n.push(...l);continue}let c=[];for(let f of a.per_ac??[]){let m=t.resolve(f.ac_ref),g=m?t.tipOf(m.cid):null;if(!m||!g||t.superseded.has(g)||t.nodeLabel.get(g)!==U.AC){n.push({code:"UNKNOWN_REF",detail:`${u}.per_ac: '${f.ac_ref}' is not a live AC`});continue}if(!se.has(f.verdict)){n.push({code:"BAD_VERDICT",detail:`${u}.per_ac['${f.ac_ref}']: verdict '${f.verdict}'`});continue}c.push({ac_ref:t.nameOf.get(g)??g,verdict:f.verdict})}i.push(Ut(a,p,c,a.unresolved_acs??[]))}if(n.length>0)return{record:null,errors:n};let o;try{o=q(e,{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:t.latestHash,busyRetry:{deadlineMs:r.lockDeadlineMs??5e3}})}catch(a){if(a instanceof ve)return"cas";throw a}let s;try{W(e)}catch(a){s=`facts committed, but the projection refresh failed (${a instanceof Error?a.message:String(a)}) \u2014 read state rebuilds on the next open`}return{record:o.record,errors:null,...s?{warnings:[s]}:{}}}function Zt(e){let t={failed:3,broken:2,skipped:1,passed:0},r=new Map;for(let n of e)for(let i of n.verifies??[]){let o=r.get(i);(o===void 0||(t[n.status]??0)>(t[o]??0))&&r.set(i,n.status)}return[...r.entries()].map(([n,i])=>({ref:n,verdict:i}))}function er(e){let t=[],r=re(e.cwd);if(!j(r))return{synced:0,superseded:0,skipped:"no-context",warnings:t};let n=e.by??{kind:"ai",id:"exec-sync"},i=e.lockDeadlineMs;try{Xr(r,t,i)}catch(c){t.push(`sync: parked-facts replay failed (${c instanceof Error?c.message:String(c)}) \u2014 queue intact, retrying next sync`)}let o=b(r),s=[],a=0,u=new Set,d=new Set(e.members.map(c=>ae(c.path)?c.path:ce(e.cwd,c.path))),p=new Map;for(let c of e.members){let f=ae(c.path)?c.path:ce(e.cwd,c.path);if(!j(f)){t.push(`sync: member file missing: ${f} \u2014 skipped, no fact attached`);continue}for(let m of Qr(f,t))if(!u.has(m.path))try{let g=m.path===f,_=!g&&d.has(m.path),v=g?void 0:F($(f,"utf8"))?.id,K=$(m.path,"utf8"),k=F(K);if(!k?.id){u.add(m.path);continue}let ue=o.resolve(k.id),N=ue?o.tipOf(ue.cid):null;if(!ue||!N||o.superseded.has(N)){u.add(m.path),t.push(`sync: ${k.id} does not resolve to a live test \u2014 skipped (foreign store?)`);continue}let J=L(G(K,Z(Ue(m.path),o))),dr=String(o.getNode(N)?.content.test_md_blob??""),X=L(G(dr,mt(o))),V=!1,Q=N;if(J===X)k.base!==X&&Kt(m.path,K,X,t);else if(k.base===X){let y=en(r,o,N,K,J,Ue(m.path),n);y.error?(t.push(`sync: could not supersede ${k.id}: ${y.error}`),V=!0):(a++,Q=y.newCid,V=y.oracleTier,Kt(m.path,$(m.path,"utf8"),J,t),o=b(r))}else V=!0,t.push(k.base?`sync: ${k.id} was edited from an older version \u2014 graph kept; reconcile via a redesign or maintain`:`sync: ${k.id} carries no base pin (hand-copied file?) \u2014 fact attached with drift flag`);if(_){V&&p.set(m.path,!0);continue}u.add(m.path);let Qe=o.getNode(Q)?.content.check,Ze=g?c.acs??[]:[],et=Ze.filter(y=>Yt(o,y.ref)),tt=Ze.filter(y=>!Yt(o,y.ref)).map(y=>y.ref);s.push({ref:k.id,about_cid:Q,definition_id_at_run:J,verdict:c.verdict,...et.length?{per_ac:et.map(y=>({ac_ref:y.ref,verdict:y.verdict}))}:{},drift_flag:V||p.get(m.path)===!0||g&&c.driftFlag===!0,oracle_mode:Qe?.expected_mode??(ut(Qe?.operand)?"runtime-derived":"inferred"),stale_at_run:o.stale(Q)!=="fresh",...tt.length?{unresolved_acs:tt}:{},execution_id:c.executionId,...c.evidenceId?{evidence_id:c.evidenceId}:{},...c.durationMs!==void 0?{duration_ms:c.durationMs}:{},started_at:c.startedAt,mode:c.mode,local:c.local,...v?{via_parent:v}:{}})}catch(g){m.path!==f&&d.has(m.path)||u.add(m.path),t.push(`sync: ${m.path} failed to sync (${g instanceof Error?g.message:String(g)}) \u2014 skipped; other members unaffected`)}}if(s.length===0)return{synced:0,superseded:a,warnings:t};let l;try{l=zt(r,b(r),{facts:s,by:n,lockDeadlineMs:i})}catch(c){return t.push(`sync facts: commit threw: ${c instanceof Error?c.message:String(c)}`),Wt(r,s,n,t,i),{synced:0,superseded:a,warnings:t}}return l.errors?(Wt(r,s,n,t,i),t.push(...l.errors.map(c=>`sync facts: ${c.code}: ${c.detail}`)),{synced:0,superseded:a,warnings:t}):(l.warnings&&t.push(...l.warnings.map(c=>`sync facts: ${c}`)),{synced:s.length,superseded:a,warnings:t})}var qe="pending-facts.ndjson",Ge=".pending-facts.bad";function Wt(e,t,r,n,i){try{let o={by:r,ts:new Date().toISOString(),facts:t.map(a=>({...a,about_cid:a.about_cid??"",event_id:`exec-fact:${a.execution_id}:${a.ref}`}))},s=null;try{s=ee(e,{deadlineMs:i??5e3})}catch{n.push("sync facts: store lock busy \u2014 parking without it (a concurrent queue rewrite may race this line)")}try{Jt(M(e,qe),JSON.stringify(o)+`
5
+ `)}finally{s?.()}n.push(`sync facts: commit failed \u2014 ${t.length} fact(s) parked to ${M(e,qe)}; they replay on the next sync`)}catch(o){n.push(`sync facts: could not park the failed batch (${o instanceof Error?o.message:String(o)}) \u2014 this run's facts are LOST`)}}function Xr(e,t,r){let n=M(e,qe);if(!j(n))return;let i;{let d=ee(e,{deadlineMs:r??5e3});try{i=$(n,"utf8")}finally{d()}}let o=i.split(`
6
+ `).filter(d=>d.trim()!=="");if(o.length===0)return;let s=new Set,a=[],u=[];for(let d of o){let p=null;try{let c=JSON.parse(d);c&&Array.isArray(c.facts)&&(p=c)}catch{}if(!p){a.push(d),s.add(d);continue}let l=qt(e,p);if(l.errors){if(l.errors.some(c=>c.code==="STALE_BASIS")){t.push(`sync: parked facts replay deferred (${l.errors[0].detail}) \u2014 retrying next sync`);continue}a.push(d),s.add(d),t.push(`sync: parked facts line quarantined to ${M(e,Ge)} (${l.errors.map(c=>`${c.code}: ${c.detail}`).join("; ")})`);continue}for(let c of l.rejected){let f=p.facts.find(m=>m.event_id===c.event_id);u.push({parent:d,line:JSON.stringify({...f??{event_id:c.event_id},_reason:c.errors})})}l.rejected.length>0&&t.push(`sync: ${l.rejected.length} parked fact(s) quarantined to ${M(e,Ge)} (${l.rejected.map(c=>c.errors.map(f=>`${f.code}: ${f.detail}`).join("; ")).join(" | ")})`),s.add(d),l.warnings&&t.push(...l.warnings.map(c=>`sync: ${c}`)),l.applied.length>0&&t.push(`sync: replayed ${l.applied.length} parked fact(s) from a previous run`)}if(s.size!==0)try{let d=ee(e,{deadlineMs:r??5e3});try{let l=(j(n)?$(n,"utf8"):"").split(`
7
+ `).filter(g=>g.trim()!==""),c=[...a.filter(g=>l.includes(g)),...u.filter(g=>l.includes(g.parent)).map(g=>g.line)];c.length>0&&Jt(M(e,Ge),c.map(g=>g+`
8
+ `).join(""));let f=l.filter(g=>!s.has(g)),m=`${n}.tmp.${process.pid}`;Qt(m,f.length>0?f.join(`
9
+ `)+`
10
+ `:""),Xt(m,n)}finally{d()}}catch(d){t.push(`sync: queue rewrite failed (${d instanceof Error?d.message:String(d)}) \u2014 already-applied lines dedupe next sync; bad lines re-quarantine then`)}}function Qr(e,t){let r=[],n=new Set,i=o=>{if(n.has(o)||!j(o))return;n.add(o);let s;try{s=$(o,"utf8")}catch(a){t.push(`sync: unreadable unit ${o} (${a instanceof Error?a.message:String(a)}) \u2014 skipped`);return}for(let a of s.split(`
11
+ `)){let u=/^@import\s+(\S+)\s*$/.exec(a.trim());if(!u)continue;let d=ae(u[1])?u[1]:ce(Ue(o),u[1]);if(!j(d))continue;let p;try{p=$(d,"utf8")}catch(l){t.push(`sync: unreadable import ${d} (${l instanceof Error?l.message:String(l)}) \u2014 skipped; importer continues`);continue}F(p)?.id&&i(d)}r.push({path:o})};return i(e),r}function Yt(e,t){let r=e.resolve(t),n=r?e.tipOf(r.cid):null;return!!(r&&n&&!e.superseded.has(n)&&e.nodeLabel.get(n)==="ac")}function Zr(e,t,r){let n=e.split(`
12
+ `),i=ft(n);return n.map((o,s)=>{let a=pt.exec(o.trim());if(!a||i.has(s))return o;let u=a[1];if(r.resolve(u))return o;let d=ae(u)?u:ce(t,u);if(!j(d))return o;let p=F($(d,"utf8"))?.id;return!p||!r.resolve(p)?o:`@import ${p}`}).join(`
13
+ `)}function en(e,t,r,n,i,o,s){let a=t.getNode(r);if(!a)return{oracleTier:!1,error:"tip unreadable"};let u=Zr(ht(n),o,t),d=String(a.content.test_md_blob??""),p=/^#\s+(.+?)\s*$/m.exec(u)?.[1]??String(a.content.title??""),l={...a.content,test_md_blob:u,definitionId:i,title:p};{let v=tn(u);v.target!==void 0?l.target=v.target:delete l.target,v.app!==void 0?l.app=v.app:delete l.app}let c=vt("test",l);if(c.length>0)return{oracleTier:!1,error:c.map(v=>v.detail).join("; ")};let f=yt("test",l);if(f===r)return{newCid:r,oracleTier:!1};let m=Ht(d)!==Ht(u);if(wt(t,r,f))return{oracleTier:m,error:"file content reproduces an already-superseded version (supersession cycle guard) \u2014 graph kept; re-edit forward or redesign"};let g=_t({graph:t,oldTip:r,newCid:f,newLabel:"test",by:s,reason:`re-blessed onto ${f} (edited on disk, run sync)`});if(g.errors.length>0)return{oracleTier:m,error:`edge re-bless refused: ${g.errors.join("; ")}`};let _=te(e);if(t.latestHash!==_)return{oracleTier:m,error:`store advanced under the sync (basis ${String(t.latestHash)} vs head ${String(_)}) \u2014 re-run to retry`};try{q(e,{ts:new Date().toISOString(),proposal_id:null,nodes:[{cid:f,label:"test",content:l}],edges:g.edges,review:[{id:f,kind:"review-item",resolution:"edited",edit:null,reason:"edited on disk (run sync)",by:s}],supersessions:[{kind:"node",old:r,new:f,reason:"edited on disk (run sync)",by:s},...g.supersessions],source_head_moves:{}},{expectPrev:_})}catch(v){return{oracleTier:m,error:v instanceof Error?v.message:String(v)}}return W(e),{newCid:f,oracleTier:m}}function tn(e){let t=lt(e);return{...typeof t.target=="string"?{target:t.target}:{},...typeof t.app=="string"?{app:t.app}:{}}}function Ht(e){let t=[],r=e.split(`
14
+ `),n=r.some(o=>/^##\s/.test(o)&&he.test(o)),i=!1;for(let o of r){if(/^##\s/.test(o)){let s=he.exec(o);i=n?s!==null:/\bassert\b/i.test(o),s&&t.push(`v:${s[1].trim()}`);continue}i&&o.trim()!==""&&t.push(o.trim())}return t.join(`
15
+ `)}var rn=0;function Kt(e,t,r,n){try{let i=t.split(`
16
+ `),o=-1;if(i[0]?.trim()==="---"){for(let u=1;u<i.length;u++)if(i[u].trim()==="---"){o=u;break}}if(o<0)return;let s=gt(i,o);if(!s)return;if(s.baseLine!==void 0){let u=i[s.baseLine].endsWith("\r")?"\r":"";i[s.baseLine]=`${s.childIndent}base: ${r}${s.baseComment?` ${s.baseComment}`:""}${u}`}else if(s.strayBase){n.push(`sync: ${e} has a base: line this scanner cannot confidently rewrite (unexpected indentation or key quoting) \u2014 pin refresh skipped (stale pin until the shape is fixed)`);return}else{let d=i[s.idLine??s.start].endsWith("\r")?"\r":"";i.splice((s.idLine??s.start)+1,0,`${s.childIndent??" "}base: ${r}${d}`)}let a=`${e}.tmp-sync.${process.pid}-${rn++}`;Qt(a,i.join(`
17
+ `)),Xt(a,e)}catch(i){n.push(`sync: pin refresh failed for ${e} (${i instanceof Error?i.message:String(i)}) \u2014 next run self-heals`)}}var un={passed:"passed",failed:"failed",broken:"blocked",skipped:"not-run"},tr=(e,t)=>{try{if(!We(t))return{status:"skipped",reason:"no context store at the project root"};let r=T(e,"tests");if(!We(r))return{status:"skipped",reason:"pack has no tests/"};let n=new Map;for(let a of on(r)){let u=T(r,a,"result.yaml");if(!We(u)||!cn(T(r,a)).isDirectory())continue;let d=A(sn(u,"utf8"));if(!d?.definition_id&&!d?.assurance_id)continue;let p=Zt(d.steps??[]),l={testShortId:String(d.test??a),execution:un[String(d.status)]??"not-run",...p.length?{acs:p}:{}};d.assurance_id&&n.set(`id:${d.assurance_id}`,l),d.definition_id&&n.set(`def:${d.definition_id}`,l)}let i=bt(b(t),n,{scope:"run"}),o=xt(i);Bt(e,t,i);let s=x({...i,rollup:o},{lineWidth:-1});return nn(T(e,"coverage"),{recursive:!0}),dn(T(e,"coverage","usecases.yaml"),s),{status:"written"}}catch(r){try{an(T(e,"coverage","sources"),{recursive:!0,force:!0})}catch{}return{status:"skipped",reason:r instanceof Error?r.message:String(r)}}};async function pn(e){try{let t=new H({origin:"inline",runKind:"author",pid:e.pid,title:e.title,started:new Date().toISOString(),producerVersion:e.producerVersion,surfaces:e.surfaces,objectiveOrName:e.objectiveOrName,sessionId:e.sessionId,cwd:e.cwd,packRootDir:e.packRootDir}),r=await t.start();return{session:t,...r,packDir:t.pack,spawns:[],startedAtMs:Date.now(),cwd:e.cwd}}catch(t){return console.warn("evidence: inline pack creation failed",t),null}}function fn(e,t,r){if(!e)return;e.session.noteSpawn(t),t.resolution&&(e.resolution=t.resolution),e.runnerEnvironment=ot(e.runnerEnvironment,t.runnerEnvironment);let n=(r?.per_flow_metadata??[]).map(i=>({resultCode:i?.result_code!=null?Number(i.result_code):null}));e.spawns.push({resultCode:r?.result_code!=null?Number(r.result_code):null,...n.length?{perFlow:n}:{}})}function mn(e){if(e)return{packTestDir:e.packTestDir,ordinalOffset:e.session.nextOrdinalOffset()}}async function gn(e,t){if(!e)return null;if(e.finalized)return e.finalized;let r=(n,i,o)=>t.log?t.log("warn",n,i,o):console.warn(`evidence: ${i}`,o??"");try{if(t.recordedTestPath)try{await e.session.writeDefinition(await ln.readFile(t.recordedTestPath,"utf8"))}catch(s){r("EVIDENCE_DEFINITION_FAILED","could not attach synthesized test.md",{error:String(s)})}let n=t.cdpBrowserCapture?await t.cdpBrowserCapture():void 0,i=await e.session.writeResult({steps:e.session.steps,spawns:e.spawns.length?e.spawns:[{resultCode:null}],externalIdInput:{...t.externalIdInput,execution_id:e.executionId},runnerEnv:ze({cdpBrowser:n,resolution:e.resolution,runnerEnvironment:e.runnerEnvironment,deviceName:t.deviceName,deviceModel:t.deviceModel,pixelResolution:await Ot(e.packTestDir)}),intentEnv:at(t.model,e.runnerEnvironment),durationMs:t.durationMs??Date.now()-e.startedAtMs,log:t.log});try{if(t.recordedTestPath){let s=er({cwd:t.cwd??e.cwd??process.cwd(),members:[{path:t.recordedTestPath,verdict:i,executionId:e.executionId,startedAt:new Date(e.startedAtMs).toISOString(),mode:"inline",local:t.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=(t.coverageWriter??tr)(e.packDir,re(t.cwd??e.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 Be({executionId:e.executionId,testId:e.testId,saved:t.saved,runKind:"author",verdict:i,cwd:t.cwd??e.cwd,packDir:e.packDir,tuiLogPath:t.tuiLogPath,log:t.log,surface:"inline",requireRealLog:!!e.runnerEnvironment?.native_platform,appiumMarks:e.session.appiumMarks});return e.finalized=o,t.log?.("info","EVIDENCE_SEALED","Inline pack sealed",{execution_id:e.executionId,verdict:i,valid:o.valid,pack:e.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 hn,openSync as vn,readSync as yn,closeSync as wn}from"fs";import{basename as _n,resolve as xn}from"path";async function bn(e,t,r={}){let n=r.out??(p=>process.stdout.write(p+`
18
+ `)),i=p=>(n(`error: ${p}`),2);if(t.env!=="prod"&&t.env!=="stage")return i(`invalid --env: ${String(t.env)}`);if(t.port!==void 0&&(!Number.isInteger(t.port)||t.port<1||t.port>65535))return i("invalid --port: expected an integer 1-65535");let o;try{o=Y(t.env,t.viewerUrl),new URL(o)}catch{return i(`invalid --viewer-url: ${t.viewerUrl}`)}if(e.length===0)return i("no pack paths given");let s=new Map;for(let p of e){let l=xn(p),c;try{c=hn(l)}catch{return i(`${p}: not found`)}if(c.isDirectory())return i(`${p}: is a directory \u2014 packs must be sealed .evidence files (run the execution to completion, or seal it, first)`);if(!c.isFile())return i(`${p}: not a regular file`);let f=Buffer.alloc(2),m=vn(l,"r");try{yn(m,f,0,2,0)}finally{wn(m)}if(f.toString("latin1")!=="PK")return i(`${p}: not a sealed evidence pack (zip magic missing)`);let g=_n(l);if(s.has(g))return i(`duplicate pack basename: ${g} (URL names collide \u2014 rename one)`);s.set(g,l)}let a=r.log??((p,l,c)=>process.stderr.write(`warn: ${l} reason=${c.reason} path=${c.path}
19
+ `)),u;try{u=await ye({packs:s,allowedOrigins:[new URL(o).origin],port:t.port,log:a})}catch(p){return i(`could not bind 127.0.0.1${t.port?`:${t.port}`:""} \u2014 ${p.message}`)}n(`serving ${s.size} pack${s.size===1?"":"s"} on http://127.0.0.1:${u.port}`);for(let p of s.keys()){let l=u.urlFor(p);n(p),n(` pack ${l}`),n(` viewer ${we(l,o)}`)}return n("press Ctrl-C to stop"),await(r.hold??kn)(),await u.close(),0}function kn(){return new Promise(e=>{let t=process.listeners("SIGINT");process.removeAllListeners("SIGINT"),process.once("SIGINT",()=>{for(let r of t)process.on("SIGINT",r);e()})})}import{promises as de}from"fs";import{tmpdir as Rn}from"os";import{join as ir,resolve as He}from"path";var En=["error","prefer_first","prefer_latest","discard"],Sn=["external_id.commit_id","external_id.test_id"];function rr(e){let t=e.replace(/-/g,"_");return En.includes(t)?t:null}function nr(e){let t=e==="discard"?{on_collision:"discard"}:{on_collision:"error",identity:{keys:[...Sn],on_same:e??"nest",on_different:e?"error":"split"}};return x({packs:{require_status:"finalized",require_valid:"L1",on_ineligible:"abort"},tests:t,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 Ye(e){try{if(!e.isTTY){e.log(_e(e.packPath));return}let t=Y(e.env);await(e.renderPrompt??In)(e.packPath,t)}catch(t){try{e.log(`evidence view failed \u2014 ${t.message}`)}catch{}}}async function In(e,t){let r=await import("./react-QWOAB3TB.js"),{render:n}=await import("./build-JIKYOZUH.js"),{EvidenceViewOffer:i}=await import("./EvidenceViewOffer-ANVEOXJA.js");await new Promise(o=>{let s=n(r.default.createElement(i,{packPath:e,viewerBase:t,onDone:()=>{s.unmount(),o()}}),{stdout:process.stderr,exitOnCtrlC:!1})})}async function Pn(e,t,r=process.cwd(),n={}){let i=n.out??(c=>process.stdout.write(c+`
20
+ `)),o=n.err??(c=>process.stderr.write(c+`
21
+ `)),s=c=>(o(`evidence merge: ${c}`),2);if(!t.runId)return s("--run-id is required (merged identity is the caller's fact)");if(t.rules&&t.onCollision)return s("--rules and --on-collision are mutually exclusive");let a;if(t.onCollision!==void 0){let c=rr(t.onCollision);if(!c)return s(`invalid --on-collision: ${t.onCollision} (expected error | prefer-first | prefer-latest | discard)`);a=c}let u=[];for(let c of e){let f=await $n(c,r);if(!f)return s(`no pack found for "${c}"`);u.push(f)}let d=t.out?He(r,t.out):w(t.runId,r),p=null,l;t.rules?l=He(r,t.rules):(p=await de.mkdtemp(ir(Rn(),"kane-merge-rules-")),l=ir(p,"merge-rules.yaml"),await de.writeFile(l,nr(a)));try{let c=await(n.mergeFn??ct)(u,{runId:t.runId,out:d,rulesPath:l,title:t.title,finalize:t.finalize});return t.json?i(JSON.stringify(c)):An(i,c),c.output.finalized&&!t.json&&await(n.offer??Ye)({packPath:d,env:t.env,isTTY:n.isTTY??(!!process.stdin.isTTY&&!!process.stderr.isTTY),log:o}),0}catch(c){let f=c instanceof Error?c.message:String(c);return c?.code==="ABORT"?(o(`evidence merge: aborted \u2014 ${f}`),1):s(f)}finally{p&&await de.rm(p,{recursive:!0,force:!0}).catch(()=>{})}}async function $n(e,t){let r=He(t,e);if(await or(r))return r;let n=w(e,t);return await or(n)?n:null}async function or(e){try{return await de.stat(e),!0}catch{return!1}}function An(e,t){let{packs:r,tests:n,output:i}=t;e(`evidence: merged ${n.merged} tests from ${r.eligible.length} packs -> ${i.path} (${i.finalized?"sealed":"live"})`);for(let o of r.skipped)e(` 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}`,e(` collision ${o.test}: ${s} (${o.rule})`)}for(let o of n.discarded)e(` discarded ${o}`)}import{copyFileSync as Ln,existsSync as Ke,mkdirSync as Fn}from"fs";import{join as sr}from"path";function Cn(e,t,r){try{let n=sr(e,"auteur","execution.json");if(Ke(n))return!0;for(let i of t)if(!(!i||!Ke(i)))return Fn(sr(e,"auteur"),{recursive:!0}),Ln(i,n),!0}catch(n){try{r?.("debug","EVIDENCE_BLOB_COPY_FAILED","auteur execution blob copy failed",{operation:"ensureAuteurExecution",source:t.find(i=>i&&Ke(i))??null,error:n instanceof Error?n.message:String(n)})}catch{}}return!1}import{readFileSync as Dn}from"fs";import{join as On}from"path";function Xe(e){let t=[],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 u=a?.operation_id;typeof u=="string"&&u&&t.push(u)}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 u=a?.children;if(Array.isArray(u))for(let d of u)n(d)}}},i=e?.instructions;if(Array.isArray(i))for(let o of i)n(o);return{ids:t,linear:r}}function jn(e){return Xe(e).ids}function Je(e,t){let r=new Set(t.map(a=>a.action_id).filter(Boolean)),n=-1;for(let a of r){let u=e.indexOf(a);u>n&&(n=u)}let i=t.reduce((a,u)=>Math.max(a,u.ordinal),0),o=new Set,s=[];for(let a of e.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 ar(e,t){let r=new Set(t),n=e.filter(o=>o.action_id);if(n.some(o=>r.has(o.action_id))||n.length>t.length)return null;let i=0;return e.map(o=>o.action_id?{...o,action_id:t[i++]}:o)}function Mn(e,t){if(e.length>t.length)return!1;for(let r=0;r<e.length;r++)if(t[r]!==e[r].action_id)return!1;return!0}function Tn(e,t,r,n=!0){if(t.length===0)return{steps:e,tail:[]};let i=(r&&n?ar(e,t):null)??e,o=i.filter(a=>a.action_id),s=new Set(t);return o.length>0&&o.every(a=>s.has(a.action_id))?{steps:i,tail:Je(t,i)}:o.length>0&&!Mn(o,t)?{steps:i,tail:[],unjoined:!0}:{steps:i,tail:Je(t,i)}}function cr(e){try{let t=Dn(On(e,"auteur","execution.json"),"utf8");return Xe(JSON.parse(t))}catch{return{ids:[],linear:!0}}}function Nn(e){return cr(e).ids}export{D as a,xe as b,be as c,ke as d,Ee as e,Se as f,Ie as g,pr as h,Re as i,Pe as j,fr as k,mr as l,$e as m,ne as n,Fe as o,Ce as p,De as q,Oe as r,gr as s,hr as t,je as u,vr as v,Me as w,Te as x,Ne as y,Lt as z,Be as A,Ot as B,ze as C,Tt as D,jr as E,H as F,zr as G,Zt as H,er as I,tr as J,pn as K,fn as L,mn as M,gn as N,bn as O,nr as P,Ye as Q,Pn as R,Cn as S,Xe as T,jn as U,Je as V,ar as W,Tn as X,cr as Y,Nn as Z};
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as g}from"./chunk-BPMSNGXQ.js";import{b as f,c as j}from"./chunk-VE3SUJMA.js";import{a as m}from"./chunk-OYJBABRV.js";var _="KaneAI Generated",E="Untitled";async function p(e){let r=e.config.load(),d=new g(m(e.env).tmsBaseUrl,e.tmsCreds.username,e.tmsCreds.access_key),n=e.projectName??_,o=e.folderName??E,t=r.project_id??null,s=r.project_name??null;if(!t){let a=(await d.listProjects()).find(l=>l.name===n);if(a)t=a.project_id,s=a.name,e.log("info","ENSURE_PROJECT_FOUND","Found default project",{project_id:t,name:s});else{let l=await d.createProject(n);t=l.id,s=l.name,e.log("info","ENSURE_PROJECT_CREATED","Created default project",{project_id:t,name:s})}f(e.creds,e.config,e.profile,e.env,{projectId:t,projectName:s})}let c=r.folder_id??null,i=r.folder_name??null,u=!r.project_id;if(!c||u){let a=(await d.listFolders(t)).find(l=>l.name===o);if(a)c=a.id,i=a.name,e.log("info","ENSURE_FOLDER_FOUND","Found default folder",{folder_id:c,name:i});else{let l=await d.createFolder(t,o);c=l.id,i=l.name,e.log("info","ENSURE_FOLDER_CREATED","Created default folder",{folder_id:c,name:i})}f(e.creds,e.config,e.profile,e.env,{folderId:c,folderName:i})}return{projectId:t,projectName:s??n,folderId:c,folderName:i??o}}function A(e,r,d){let n=e.loadProfileConfig(r,d)??{};return{projectId:n.project_id??null,folderId:n.folder_id??null}}function N(e,r){return e.projectId===null||e.folderId===null||r===null?"needs-picker":r.project==="ok"&&r.folder==="ok"?"ok":r.project==="error"&&r.folder==="error"?"ok-tms-degraded":"needs-picker"}var k=(e,r)=>`error: profile "${e}" (${r}) has no project/folder configured AND no TMS credentials were available to auto-configure one.
2
+ import{a as g}from"./chunk-BPMSNGXQ.js";import{b as f,c as j}from"./chunk-VE3SUJMA.js";import{a as m}from"./chunk-V5DYLGAM.js";var _="KaneAI Generated",E="Untitled";async function p(e){let r=e.config.load(),d=new g(m(e.env).tmsBaseUrl,e.tmsCreds.username,e.tmsCreds.access_key),n=e.projectName??_,o=e.folderName??E,t=r.project_id??null,s=r.project_name??null;if(!t){let a=(await d.listProjects()).find(l=>l.name===n);if(a)t=a.project_id,s=a.name,e.log("info","ENSURE_PROJECT_FOUND","Found default project",{project_id:t,name:s});else{let l=await d.createProject(n);t=l.id,s=l.name,e.log("info","ENSURE_PROJECT_CREATED","Created default project",{project_id:t,name:s})}f(e.creds,e.config,e.profile,e.env,{projectId:t,projectName:s})}let c=r.folder_id??null,i=r.folder_name??null,u=!r.project_id;if(!c||u){let a=(await d.listFolders(t)).find(l=>l.name===o);if(a)c=a.id,i=a.name,e.log("info","ENSURE_FOLDER_FOUND","Found default folder",{folder_id:c,name:i});else{let l=await d.createFolder(t,o);c=l.id,i=l.name,e.log("info","ENSURE_FOLDER_CREATED","Created default folder",{folder_id:c,name:i})}f(e.creds,e.config,e.profile,e.env,{folderId:c,folderName:i})}return{projectId:t,projectName:s??n,folderId:c,folderName:i??o}}function A(e,r,d){let n=e.loadProfileConfig(r,d)??{};return{projectId:n.project_id??null,folderId:n.folder_id??null}}function N(e,r){return e.projectId===null||e.folderId===null||r===null?"needs-picker":r.project==="ok"&&r.folder==="ok"?"ok":r.project==="error"&&r.folder==="error"?"ok-tms-degraded":"needs-picker"}var k=(e,r)=>`error: profile "${e}" (${r}) has no project/folder configured AND no TMS credentials were available to auto-configure one.
3
3
 
4
4
  discover IDs:
5
5
  kane-cli projects list --search "<keyword>" --limit 10
@@ -14,4 +14,4 @@ set them:
14
14
  kane-cli config folder <folder-id>
15
15
  `;function C(e,r){return k(e,r)}function D(e){return`info: auto-configured project "${e.projectName}" (${e.projectId}) and folder "${e.folderName}" (${e.folderId}). Change with: kane-cli config project <id> / kane-cli config folder <id>.`}function S(e){return`${JSON.stringify(T(e))}
16
16
  `}function T(e){return{type:"project_folder_auto_defaulted",project_id:e.projectId,project_name:e.projectName,folder_id:e.folderId,folder_name:e.folderName}}async function x(e){if(e.isLocal)return e.log("info","GATE_SKIP_LOCAL","Gate skipped (--local)",{}),{status:"skip",reason:"local"};j(e.creds,e.config,e.profile,e.env,e.log);let r=A(e.creds,e.profile,e.env),d=null;if(r.projectId!==null){let o=m(e.env);d=await new g(o.tmsBaseUrl,e.tmsCreds.username,e.tmsCreds.access_key).validateProjectFolder(r.projectId,r.folderId??""),e.log("info","GATE_VALIDATE","TMS project/folder validation",{project:d.project,folder:d.folder,folder_was_cached:r.folderId!==null})}else r.folderId!==null&&(f(e.creds,e.config,e.profile,e.env,{folderId:null,folderName:null}),e.log("warn","GATE_CLEARED_ORPHAN_FOLDER","Cleared orphan folder (no project cached)",{folder_id:r.folderId}),r.folderId=null);let n=N(r,d);if(n==="ok")return{status:"ok",projectId:r.projectId,folderId:r.folderId};if(n==="ok-tms-degraded")return e.log("warn","GATE_TMS_DEGRADED","TMS validation failed; using cached IDs",{project_id:r.projectId,folder_id:r.folderId}),{status:"ok",projectId:r.projectId,folderId:r.folderId};if(d){let o={};d.project==="missing"?(o.projectId=null,o.projectName=null,o.folderId=null,o.folderName=null):d.folder==="missing"&&(o.folderId=null,o.folderName=null),Object.keys(o).length>0&&(f(e.creds,e.config,e.profile,e.env,o),e.log("info","GATE_CLEARED_STALE","Cleared stale cached IDs before re-resolve",{project_cleared:d.project==="missing",folder_cleared:d.folder==="missing"||d.project==="missing"}))}try{let o=await p({creds:e.creds,config:e.config,profile:e.profile,env:e.env,tmsCreds:e.tmsCreds,log:e.log}),t={projectId:o.projectId,projectName:o.projectName,folderId:o.folderId,folderName:o.folderName};return e.log("info","GATE_AUTO_DEFAULTED","Auto-configured project/folder",{project_id:t.projectId,project_name:t.projectName,folder_id:t.folderId,folder_name:t.folderName}),e.onAnnounce?e.onAnnounce(t):process.stderr.write(`${D(t)}
17
- `),{status:"ok",projectId:t.projectId,folderId:t.folderId,autoDefaulted:t}}catch(o){let t=C(e.profile,e.env);if(e.log("error","GATE_FATAL","Auto-default failed",{profile:e.profile,env:e.env,cached_project_id:r.projectId,cached_folder_id:r.folderId,validation:d,error:o instanceof Error?o.message:String(o)}),e.onFatalExit)e.onFatalExit(t);else{process.stderr.write(t);let{shutdown:s}=await import("./exit-manager-3FVBTNYR.js");s(2,"Project/folder gate failed")}return{status:"cancelled"}}}export{p as a,A as b,N as c,C as d,D as e,S as f,T as g,x as h};
17
+ `),{status:"ok",projectId:t.projectId,folderId:t.folderId,autoDefaulted:t}}catch(o){let t=C(e.profile,e.env);if(e.log("error","GATE_FATAL","Auto-default failed",{profile:e.profile,env:e.env,cached_project_id:r.projectId,cached_folder_id:r.folderId,validation:d,error:o instanceof Error?o.message:String(o)}),e.onFatalExit)e.onFatalExit(t);else{process.stderr.write(t);let{shutdown:s}=await import("./exit-manager-ZLDO54S4.js");s(2,"Project/folder gate failed")}return{status:"cancelled"}}}export{p as a,A as b,N as c,C as d,D as e,S as f,T as g,x as h};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as j}from"./chunk-CLGC7VEO.js";import{d as K}from"./chunk-RKXHVP2Z.js";import{a as L}from"./chunk-5Y2G4NC7.js";import{a as M}from"./chunk-YCCUBQY4.js";import{x as s}from"./chunk-OFW3ZVTP.js";import{a as O}from"./chunk-HCBYKLMW.js";import{a as x,b as n,i as D,k as E}from"./chunk-C44QQJR4.js";import{a as I}from"./chunk-6YGTRKDT.js";import{e as y}from"./chunk-UR6MHSHU.js";var g=y(O(),1);function ee(e){let t=e.findIndex(r=>r.free);return t>=0?t:null}var q=60,Q=100;function te({headline:e,ask:t=!1,rows:r,sel:o,focused:d,freeText:c=null,freeTextNote:h,sublines:b=[]}){let{stdout:p}=E(),i=p?.columns??80,v=i<q,k=Math.min(i-1,Q),u=a=>d&&o===a?(0,g.jsx)(n,{color:s.assuranceAccent,children:"\u276F"}):" ",m=t?`? ${e}`:e,A=Math.max(4,k-3),S=b.map((a,w)=>(0,g.jsx)(n,{color:s.dim,children:` ${a.length>A?`${a.slice(0,A-1)}\u2026`:a}`},`sub-${w}`)),R=0,B=r.map((a,w)=>a.free?c?(0,g.jsxs)(x,{flexDirection:"column",children:[(0,g.jsxs)(x,{children:[(0,g.jsxs)(n,{children:[(0,g.jsx)(n,{color:s.assuranceAccent,children:"\u276F"})," ",(0,g.jsx)(n,{color:s.dim,children:"\u270E "})]}),(0,g.jsx)(M,{value:c.value,onChange:c.onChange,onSubmit:c.onSubmit,onCancel:c.onCancel,placeholder:a.label})]}),h?(0,g.jsx)(n,{color:s.muted,children:` ${h}`}):null]},a.key):(0,g.jsxs)(n,{children:[u(w)," ",(0,g.jsx)(n,{color:s.dim,children:`\u270E ${a.label}`})]},a.key):(R+=1,(0,g.jsxs)(n,{bold:d&&o===w,children:[u(w),` ${R}. ${a.label}`,a.detail?(0,g.jsx)(n,{color:s.dim,bold:!1,children:` \u2014 ${a.detail}`}):null]},a.key)));return v?(0,g.jsxs)(x,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,g.jsx)(n,{bold:!0,color:s.assuranceAccent,children:m}),S,B]}):(0,g.jsxs)(x,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,g.jsx)(n,{bold:!0,color:s.assuranceAccent,children:m}),S,(0,g.jsx)(n,{children:" "}),B]})}var H=y(I(),1);var $=y(O(),1),N=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function le(e){let t=e.replace(/…$/,"");return t&&t.charAt(0).toLowerCase()+t.slice(1)}function F(e,t){if(e.length<=t)return e;if(t<=1)return"\u2026";let r=Math.ceil((t-1)/2),o=Math.floor((t-1)/2);return`${e.slice(0,r)}\u2026${o>0?e.slice(-o):""}`}function ce({status:e,meta:t,tallies:r,keys:o,child:d,cols:c}){let{stdout:h}=E(),b=c??h?.columns??80,p=e.kind==="working"||e.kind==="child-working",[i,v]=(0,H.useState)(0);L(()=>v(f=>f+1),p?120:null);let k=N[i%N.length],u,m;switch(e.kind){case"working":u=`${k} ${e.step}${e.elapsedS!==void 0?` \xB7 ${e.elapsedS}s`:""}`,m=s.assuranceAccent;break;case"waiting":u=`\u25CF waiting on you${e.pending?` \u2014 ${e.pending} question${e.pending===1?"":"s"}`:""}`,m=s.amber;break;case"idle":u="\u25CF idle",m=s.assuranceAccent;break;case"card":u=`\u25CF card ${e.n} of ${e.m}`,m=s.amber;break;case"child-working":u=`${k} child: ${e.step}`,m=s.assuranceAccent;break;case"child-waiting":u="\u25CF child waiting on you",m=s.amber;break}let A=d?`${t.verb} \u25B8 ${d.verb}`:t.verb,S=d?.sid?t.sid?`${F(t.sid,14)} \u25B8 ${d.sid}`:d.sid:t.sid,R=t.env==="prod"?"":t.env,B=[A,S,R].filter(Boolean),a=" \xB7 ",w=u.length+a.length+B.join(a).length,C=t.subject;if(C){let f=b-w-a.length;C=f>=8?F(C,f):void 0}let _=[A,...C?[C]:[],S,R].filter(Boolean).join(a);return(0,$.jsxs)(x,{flexDirection:"column",children:[(0,$.jsx)(n,{color:s.muted,children:"\u2500".repeat(Math.max(1,b))}),(0,$.jsxs)(n,{children:[(0,$.jsx)(n,{color:m,children:u}),(0,$.jsx)(n,{color:s.dim,children:`${a}${_}`})]}),(0,$.jsx)(n,{color:s.dim,children:r.items.length>0?r.items.join(a):" "}),(0,$.jsx)(n,{color:s.muted,children:o.join(a)})]})}var P=y(I(),1);function ue({onToggleThinking:e,onCtrlC:t,explorer:r,panel:o}){let c=(0,P.useRef)(null),h=(0,P.useRef)(""),b=()=>{c.current&&clearTimeout(c.current),c.current=null,h.current=""};return(0,P.useEffect)(()=>b,[]),D((p,i)=>{if(i.ctrl&&p==="t"){e();return}if(i.ctrl&&p==="c"){t();return}if(!i.ctrl&&p.includes("")){t();return}if(!i.ctrl&&p.includes("")){e();return}if(r&&r.isOpen()){let v=()=>{c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{b(),r.onBack()},150)};if(c.current){if(i.upArrow||i.downArrow||i.return){b(),i.return?r.onEnter():r.onMove(i.upArrow?-1:1);return}if(h.current+=p,h.current==="["){v();return}let k=h.current;b();let u=/^\[([ABCD])/.exec(k);if(u){(u[1]==="A"||u[1]==="B")&&r.onMove(u[1]==="A"?-1:1);return}r.onBack();return}if(i.upArrow){r.onMove(-1);return}if(i.downArrow){r.onMove(1);return}if(i.return){r.onEnter();return}if(i.escape){h.current="",v();return}return}if(o&&o.isFocused()){let v=()=>{c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{b(),o.onBack()},150)};if(c.current){if(i.upArrow||i.downArrow||i.return||i.leftArrow||i.rightArrow){b(),i.return?o.onSelect():i.leftArrow?o.onLeft?.():i.rightArrow?o.onRight?.():o.onMove(i.upArrow?-1:1);return}if(h.current+=p,h.current==="["){v();return}let k=h.current;b();let u=/^\[([ABCD])/.exec(k);if(u){u[1]==="A"||u[1]==="B"?o.onMove(u[1]==="A"?-1:1):u[1]==="C"?o.onRight?.():o.onLeft?.();return}o.onBack();return}if(i.upArrow){o.onMove(-1);return}if(i.downArrow){o.onMove(1);return}if(i.leftArrow){o.onLeft?.();return}if(i.rightArrow){o.onRight?.();return}if(i.return){o.onSelect();return}if(i.escape){h.current="",v();return}if(/^[1-9]$/.test(p)){o.onDigit(Number(p));return}if(i.tab){o.onTab?.();return}if(p===" "&&o.isMulti()){o.onSpace();return}if(p&&!i.ctrl&&!i.meta){o.onType(p);return}return}}),null}var l=y(O(),1);function X(e){return e.kind==="REVIEW"?[{v:"approve",label:"approve",detail:"mark it reviewed and trusted"},{v:"archive",label:"archive",detail:"reject it \u2014 asks for a reason; impact shown above"},{v:"defer",label:"defer",detail:"not now \u2014 stays queued"}]:e.kind==="PAIR"?[{v:"merge",label:"merge",detail:"duplicate \u2014 fold into the older item (it stays unreviewed)"},{v:"keep_both",label:"keep both",detail:"genuinely distinct \u2014 promote both"},{v:"defer",label:"defer",detail:"not now \u2014 stays queued"}]:e.kind==="ARCHIVE"?[{v:"archive",label:"retire",detail:"hidden from now on; history is kept and it can be reverted"},{v:"skip",label:"skip",detail:"keep it \u2014 decided, never re-offered"},{v:"defer",label:"defer",detail:"not now \u2014 the plan re-offers it"}]:e.heldPayload?[{v:"approve",label:"approve update",detail:"commit the held payload \u2014 impact preview above"},{v:"skip",label:"keep current",detail:"drop the held payload (the owner's disk state stays untouched)"},{v:"defer",label:"defer",detail:"not now \u2014 stays held"}]:[{v:"approve",label:"approve",detail:e.kind==="ADD"?"commit + design it":"commit the updated version (old\u2192new redirect)"},{v:"skip",label:e.origin==="content-change"?"reject":"skip",detail:e.origin==="content-change"?"drop the staged proposal \u2014 nothing committed":"leave it as is"},{v:"defer",label:"defer",detail:"not now \u2014 the plan keeps it staged"}]}function V(e){let t=X(e);return e.viewDiff&&t.push({v:"view_diff",label:"view diff",detail:"full old \u2192 new"}),t}function W(e){return e.kind==="ARCHIVE"?null:V(e).length}var Y={ADD:{color:s.green??"green"},MODIFY:{color:"yellow"},ARCHIVE:{color:s.red},REVIEW:{color:"cyan"},PAIR:{color:"magenta"}},U=60;function be({card:e,position:t,sel:r=0,focused:o=!1,freeText:d=null,editorIntent:c="steer"}){let{stdout:h}=E(),b=h?.columns??80,p=b<U,i=V(e),v=W(e),k=Y[e.kind],u=f=>o&&r===f?(0,l.jsx)(n,{color:s.assuranceAccent,children:"\u276F"}):" ",m=e.impact,A=m&&"stale_refs"in m&&m.stale_refs.length>0?`${e.kind==="ARCHIVE"?"retiring leaves":"approving marks"} ${m.stale_refs.length} item(s) stale`+((m.direct_refs?.length??0)>0?` \u2014 ${m.direct_refs.length} directly touched: ${m.direct_refs.join(", ")}`:""):m&&"design_children"in m?`${e.kind==="REVIEW"?"archiving drops":"merging folds"} ${m.design_children} design child(ren)`:null,S=e.provenance&&e.provenance!==e.why?e.provenance:e.origin??null,R=[{label:"why",text:e.why},...S?[{label:"from",text:S,dimmer:!0}]:[],...e.tier?[{label:"match",text:e.tier,dimmer:!0}]:[],...A?[{label:"impact",text:A}]:[]],B=Math.max(...R.map(f=>f.label.length)),a="? reconcile",w=`item ${t.n} of ${t.of}`,C=(0,l.jsxs)(x,{flexDirection:"column",children:[(0,l.jsx)(x,{paddingLeft:2,children:(0,l.jsxs)(n,{bold:!0,children:[(0,l.jsx)(n,{color:k.color,children:`[${e.kind}]`}),` ${j(e.title)}`]})}),R.map((f,T)=>(0,l.jsx)(x,{paddingLeft:2,children:(0,l.jsxs)(n,{children:[(0,l.jsx)(n,{color:s.dim,children:`${f.label.padEnd(B)} `}),(0,l.jsx)(n,{color:f.dimmer?s.dim:void 0,children:f.text})]})},`f-${T}`)),e.diffSummary?(0,l.jsx)(x,{paddingLeft:2,children:(0,l.jsx)(n,{color:s.dim,children:e.diffSummary})}):(e.diff??[]).map((f,T)=>(0,l.jsx)(x,{paddingLeft:4,children:(0,l.jsx)(n,{color:f.op==="-"?"red":"green",children:`${f.op==="-"?"\u2212":"+"} ${f.field==="criteria"?"criterion":f.field}: ${f.text}`})},`d-${T}`)),(e.citeLines??[]).map((f,T)=>(0,l.jsx)(x,{paddingLeft:2,children:(0,l.jsx)(n,{color:s.dim,children:f})},`c-${T}`)),(0,l.jsx)(n,{children:" "}),i.map((f,T)=>(0,l.jsxs)(n,{children:[u(T),` ${T+1}. ${f.label}`,(0,l.jsx)(n,{color:s.dim,children:` \u2014 ${f.detail}`})]},`o-${T}`)),v!==null||d&&c==="because"?d?(0,l.jsxs)(x,{flexDirection:"column",children:[(0,l.jsxs)(x,{children:[(0,l.jsxs)(n,{children:[(0,l.jsx)(n,{color:s.assuranceAccent,children:"\u276F"})," ",(0,l.jsx)(n,{color:s.dim,children:"\u270E "})]}),(0,l.jsx)(M,{value:d.value,onChange:d.onChange,onSubmit:d.onSubmit,onCancel:d.onCancel,placeholder:c==="because"?"why archive it?":"say what to adjust"})]}),(0,l.jsx)(n,{color:s.muted,children:c==="because"?" submits as: archive \xB7 your reason goes on the record":e.kind==="PAIR"?" submits as: defer \xB7 your note parks with the card (it re-offers)":" submits as: approve \xB7 your words steer the re-design"})]}):v!==null?(0,l.jsxs)(n,{children:[u(v)," ",(0,l.jsx)(n,{color:s.dim,children:e.kind==="PAIR"?"\u270E defer with a note \u2014 say what you noticed":"\u270E approve with changes \u2014 say what to adjust"})]}):null:null]});if(p)return(0,l.jsxs)(x,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,l.jsx)(n,{bold:!0,color:s.assuranceAccent,children:a}),(0,l.jsx)(n,{color:s.dim,children:w}),C]});let _=Math.max(2,Math.min(b-1,100)-a.length-w.length);return(0,l.jsxs)(x,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,l.jsxs)(n,{children:[(0,l.jsx)(n,{bold:!0,color:s.assuranceAccent,children:a})," ".repeat(_),(0,l.jsx)(n,{color:s.dim,children:w})]}),(0,l.jsx)(n,{children:" "}),C]})}var z={"acceptance criteria":1,scenarios:2,"acceptance criteria + exercises":3,"tests + gaps":4};function we(e,t){let r=[],o=K(e.turns).entries.length;if(t==="design"){let c;for(let b=e.ledger.length-1;b>=0;b--){let p=e.ledger[b];if(p.kind==="banner"&&p.text.startsWith("designing: ")){c=p.text.slice(11);break}}let h=c?z[c]:void 0;h&&r.push(`phase ${h}/4`),o>0&&r.push(`${o} item${o===1?"":"s"} this session`)}else o>0&&r.push(`${o} saved as draft${o===1?"":"s"}`);let d=e.pending?e.pending.resolution.filter(c=>!c).length:0;return d>0&&r.push(`${d} question${d===1?"":"s"} pending`),e.credits&&r.push(`${e.credits.total.toFixed(1)} credits`),{items:r}}function ke(e,t){let r=[],o=e.applied+e.committed+e.retired;r.push(`${o} applied`),r.push(`${t} to decide`);let d=[];return e.skipped>0&&d.push(`${e.skipped} skipped`),e.deferred>0&&d.push(`${e.deferred} deferred`),e.failed>0&&d.push(`${e.failed} failed`),{items:[...r,...d]}}function Ae(e,t){let r=["\u2191\u2193 select","\u23CE confirm"];return e.multi_select&&r.push("space toggle"),t.batchCount>1&&r.push("\u2190 \u2192 questions"),(e.allow_free_text||e.options.some(o=>o.input===!0))&&r.push("\u270E type your own"),t.canAttach&&r.push("@ attach a file or URL"),t.escBack&&r.push("esc back"),{keys:r}}function Se(e,t){let r=["\u2191\u2193 select","\u23CE confirm"];return e.some(o=>o.free)&&r.push("\u270E type your own"),t.escBack&&r.push("esc back"),{keys:r}}function Re(e){let t=["\u2191\u2193 select","\u23CE confirm","1-9 verdict"];return W(e)!==null&&t.push("type = adjust"),t.push("esc \xB7 nothing to undo"),{keys:t}}export{ee as a,te as b,le as c,ce as d,ue as e,X as f,V as g,W as h,be as i,we as j,ke as k,Ae as l,Se as m,Re as n};
2
+ import{a as j}from"./chunk-O5U6EAL3.js";import{d as K}from"./chunk-RKXHVP2Z.js";import{a as L}from"./chunk-5Y2G4NC7.js";import{a as M}from"./chunk-YCCUBQY4.js";import{x as s}from"./chunk-LPH4TERT.js";import{a as O}from"./chunk-HCBYKLMW.js";import{a as x,b as n,i as D,k as E}from"./chunk-C44QQJR4.js";import{a as I}from"./chunk-6YGTRKDT.js";import{e as y}from"./chunk-UR6MHSHU.js";var g=y(O(),1);function ee(e){let t=e.findIndex(r=>r.free);return t>=0?t:null}var q=60,Q=100;function te({headline:e,ask:t=!1,rows:r,sel:o,focused:d,freeText:c=null,freeTextNote:h,sublines:b=[]}){let{stdout:p}=E(),i=p?.columns??80,v=i<q,k=Math.min(i-1,Q),u=a=>d&&o===a?(0,g.jsx)(n,{color:s.assuranceAccent,children:"\u276F"}):" ",m=t?`? ${e}`:e,A=Math.max(4,k-3),S=b.map((a,w)=>(0,g.jsx)(n,{color:s.dim,children:` ${a.length>A?`${a.slice(0,A-1)}\u2026`:a}`},`sub-${w}`)),R=0,B=r.map((a,w)=>a.free?c?(0,g.jsxs)(x,{flexDirection:"column",children:[(0,g.jsxs)(x,{children:[(0,g.jsxs)(n,{children:[(0,g.jsx)(n,{color:s.assuranceAccent,children:"\u276F"})," ",(0,g.jsx)(n,{color:s.dim,children:"\u270E "})]}),(0,g.jsx)(M,{value:c.value,onChange:c.onChange,onSubmit:c.onSubmit,onCancel:c.onCancel,placeholder:a.label})]}),h?(0,g.jsx)(n,{color:s.muted,children:` ${h}`}):null]},a.key):(0,g.jsxs)(n,{children:[u(w)," ",(0,g.jsx)(n,{color:s.dim,children:`\u270E ${a.label}`})]},a.key):(R+=1,(0,g.jsxs)(n,{bold:d&&o===w,children:[u(w),` ${R}. ${a.label}`,a.detail?(0,g.jsx)(n,{color:s.dim,bold:!1,children:` \u2014 ${a.detail}`}):null]},a.key)));return v?(0,g.jsxs)(x,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,g.jsx)(n,{bold:!0,color:s.assuranceAccent,children:m}),S,B]}):(0,g.jsxs)(x,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,g.jsx)(n,{bold:!0,color:s.assuranceAccent,children:m}),S,(0,g.jsx)(n,{children:" "}),B]})}var H=y(I(),1);var $=y(O(),1),N=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function le(e){let t=e.replace(/…$/,"");return t&&t.charAt(0).toLowerCase()+t.slice(1)}function F(e,t){if(e.length<=t)return e;if(t<=1)return"\u2026";let r=Math.ceil((t-1)/2),o=Math.floor((t-1)/2);return`${e.slice(0,r)}\u2026${o>0?e.slice(-o):""}`}function ce({status:e,meta:t,tallies:r,keys:o,child:d,cols:c}){let{stdout:h}=E(),b=c??h?.columns??80,p=e.kind==="working"||e.kind==="child-working",[i,v]=(0,H.useState)(0);L(()=>v(f=>f+1),p?120:null);let k=N[i%N.length],u,m;switch(e.kind){case"working":u=`${k} ${e.step}${e.elapsedS!==void 0?` \xB7 ${e.elapsedS}s`:""}`,m=s.assuranceAccent;break;case"waiting":u=`\u25CF waiting on you${e.pending?` \u2014 ${e.pending} question${e.pending===1?"":"s"}`:""}`,m=s.amber;break;case"idle":u="\u25CF idle",m=s.assuranceAccent;break;case"card":u=`\u25CF card ${e.n} of ${e.m}`,m=s.amber;break;case"child-working":u=`${k} child: ${e.step}`,m=s.assuranceAccent;break;case"child-waiting":u="\u25CF child waiting on you",m=s.amber;break}let A=d?`${t.verb} \u25B8 ${d.verb}`:t.verb,S=d?.sid?t.sid?`${F(t.sid,14)} \u25B8 ${d.sid}`:d.sid:t.sid,R=t.env==="prod"?"":t.env,B=[A,S,R].filter(Boolean),a=" \xB7 ",w=u.length+a.length+B.join(a).length,C=t.subject;if(C){let f=b-w-a.length;C=f>=8?F(C,f):void 0}let _=[A,...C?[C]:[],S,R].filter(Boolean).join(a);return(0,$.jsxs)(x,{flexDirection:"column",children:[(0,$.jsx)(n,{color:s.muted,children:"\u2500".repeat(Math.max(1,b))}),(0,$.jsxs)(n,{children:[(0,$.jsx)(n,{color:m,children:u}),(0,$.jsx)(n,{color:s.dim,children:`${a}${_}`})]}),(0,$.jsx)(n,{color:s.dim,children:r.items.length>0?r.items.join(a):" "}),(0,$.jsx)(n,{color:s.muted,children:o.join(a)})]})}var P=y(I(),1);function ue({onToggleThinking:e,onCtrlC:t,explorer:r,panel:o}){let c=(0,P.useRef)(null),h=(0,P.useRef)(""),b=()=>{c.current&&clearTimeout(c.current),c.current=null,h.current=""};return(0,P.useEffect)(()=>b,[]),D((p,i)=>{if(i.ctrl&&p==="t"){e();return}if(i.ctrl&&p==="c"){t();return}if(!i.ctrl&&p.includes("")){t();return}if(!i.ctrl&&p.includes("")){e();return}if(r&&r.isOpen()){let v=()=>{c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{b(),r.onBack()},150)};if(c.current){if(i.upArrow||i.downArrow||i.return){b(),i.return?r.onEnter():r.onMove(i.upArrow?-1:1);return}if(h.current+=p,h.current==="["){v();return}let k=h.current;b();let u=/^\[([ABCD])/.exec(k);if(u){(u[1]==="A"||u[1]==="B")&&r.onMove(u[1]==="A"?-1:1);return}r.onBack();return}if(i.upArrow){r.onMove(-1);return}if(i.downArrow){r.onMove(1);return}if(i.return){r.onEnter();return}if(i.escape){h.current="",v();return}return}if(o&&o.isFocused()){let v=()=>{c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{b(),o.onBack()},150)};if(c.current){if(i.upArrow||i.downArrow||i.return||i.leftArrow||i.rightArrow){b(),i.return?o.onSelect():i.leftArrow?o.onLeft?.():i.rightArrow?o.onRight?.():o.onMove(i.upArrow?-1:1);return}if(h.current+=p,h.current==="["){v();return}let k=h.current;b();let u=/^\[([ABCD])/.exec(k);if(u){u[1]==="A"||u[1]==="B"?o.onMove(u[1]==="A"?-1:1):u[1]==="C"?o.onRight?.():o.onLeft?.();return}o.onBack();return}if(i.upArrow){o.onMove(-1);return}if(i.downArrow){o.onMove(1);return}if(i.leftArrow){o.onLeft?.();return}if(i.rightArrow){o.onRight?.();return}if(i.return){o.onSelect();return}if(i.escape){h.current="",v();return}if(/^[1-9]$/.test(p)){o.onDigit(Number(p));return}if(i.tab){o.onTab?.();return}if(p===" "&&o.isMulti()){o.onSpace();return}if(p&&!i.ctrl&&!i.meta){o.onType(p);return}return}}),null}var l=y(O(),1);function X(e){return e.kind==="REVIEW"?[{v:"approve",label:"approve",detail:"mark it reviewed and trusted"},{v:"archive",label:"archive",detail:"reject it \u2014 asks for a reason; impact shown above"},{v:"defer",label:"defer",detail:"not now \u2014 stays queued"}]:e.kind==="PAIR"?[{v:"merge",label:"merge",detail:"duplicate \u2014 fold into the older item (it stays unreviewed)"},{v:"keep_both",label:"keep both",detail:"genuinely distinct \u2014 promote both"},{v:"defer",label:"defer",detail:"not now \u2014 stays queued"}]:e.kind==="ARCHIVE"?[{v:"archive",label:"retire",detail:"hidden from now on; history is kept and it can be reverted"},{v:"skip",label:"skip",detail:"keep it \u2014 decided, never re-offered"},{v:"defer",label:"defer",detail:"not now \u2014 the plan re-offers it"}]:e.heldPayload?[{v:"approve",label:"approve update",detail:"commit the held payload \u2014 impact preview above"},{v:"skip",label:"keep current",detail:"drop the held payload (the owner's disk state stays untouched)"},{v:"defer",label:"defer",detail:"not now \u2014 stays held"}]:[{v:"approve",label:"approve",detail:e.kind==="ADD"?"commit + design it":"commit the updated version (old\u2192new redirect)"},{v:"skip",label:e.origin==="content-change"?"reject":"skip",detail:e.origin==="content-change"?"drop the staged proposal \u2014 nothing committed":"leave it as is"},{v:"defer",label:"defer",detail:"not now \u2014 the plan keeps it staged"}]}function V(e){let t=X(e);return e.viewDiff&&t.push({v:"view_diff",label:"view diff",detail:"full old \u2192 new"}),t}function W(e){return e.kind==="ARCHIVE"?null:V(e).length}var Y={ADD:{color:s.green??"green"},MODIFY:{color:"yellow"},ARCHIVE:{color:s.red},REVIEW:{color:"cyan"},PAIR:{color:"magenta"}},U=60;function be({card:e,position:t,sel:r=0,focused:o=!1,freeText:d=null,editorIntent:c="steer"}){let{stdout:h}=E(),b=h?.columns??80,p=b<U,i=V(e),v=W(e),k=Y[e.kind],u=f=>o&&r===f?(0,l.jsx)(n,{color:s.assuranceAccent,children:"\u276F"}):" ",m=e.impact,A=m&&"stale_refs"in m&&m.stale_refs.length>0?`${e.kind==="ARCHIVE"?"retiring leaves":"approving marks"} ${m.stale_refs.length} item(s) stale`+((m.direct_refs?.length??0)>0?` \u2014 ${m.direct_refs.length} directly touched: ${m.direct_refs.join(", ")}`:""):m&&"design_children"in m?`${e.kind==="REVIEW"?"archiving drops":"merging folds"} ${m.design_children} design child(ren)`:null,S=e.provenance&&e.provenance!==e.why?e.provenance:e.origin??null,R=[{label:"why",text:e.why},...S?[{label:"from",text:S,dimmer:!0}]:[],...e.tier?[{label:"match",text:e.tier,dimmer:!0}]:[],...A?[{label:"impact",text:A}]:[]],B=Math.max(...R.map(f=>f.label.length)),a="? reconcile",w=`item ${t.n} of ${t.of}`,C=(0,l.jsxs)(x,{flexDirection:"column",children:[(0,l.jsx)(x,{paddingLeft:2,children:(0,l.jsxs)(n,{bold:!0,children:[(0,l.jsx)(n,{color:k.color,children:`[${e.kind}]`}),` ${j(e.title)}`]})}),R.map((f,T)=>(0,l.jsx)(x,{paddingLeft:2,children:(0,l.jsxs)(n,{children:[(0,l.jsx)(n,{color:s.dim,children:`${f.label.padEnd(B)} `}),(0,l.jsx)(n,{color:f.dimmer?s.dim:void 0,children:f.text})]})},`f-${T}`)),e.diffSummary?(0,l.jsx)(x,{paddingLeft:2,children:(0,l.jsx)(n,{color:s.dim,children:e.diffSummary})}):(e.diff??[]).map((f,T)=>(0,l.jsx)(x,{paddingLeft:4,children:(0,l.jsx)(n,{color:f.op==="-"?"red":"green",children:`${f.op==="-"?"\u2212":"+"} ${f.field==="criteria"?"criterion":f.field}: ${f.text}`})},`d-${T}`)),(e.citeLines??[]).map((f,T)=>(0,l.jsx)(x,{paddingLeft:2,children:(0,l.jsx)(n,{color:s.dim,children:f})},`c-${T}`)),(0,l.jsx)(n,{children:" "}),i.map((f,T)=>(0,l.jsxs)(n,{children:[u(T),` ${T+1}. ${f.label}`,(0,l.jsx)(n,{color:s.dim,children:` \u2014 ${f.detail}`})]},`o-${T}`)),v!==null||d&&c==="because"?d?(0,l.jsxs)(x,{flexDirection:"column",children:[(0,l.jsxs)(x,{children:[(0,l.jsxs)(n,{children:[(0,l.jsx)(n,{color:s.assuranceAccent,children:"\u276F"})," ",(0,l.jsx)(n,{color:s.dim,children:"\u270E "})]}),(0,l.jsx)(M,{value:d.value,onChange:d.onChange,onSubmit:d.onSubmit,onCancel:d.onCancel,placeholder:c==="because"?"why archive it?":"say what to adjust"})]}),(0,l.jsx)(n,{color:s.muted,children:c==="because"?" submits as: archive \xB7 your reason goes on the record":e.kind==="PAIR"?" submits as: defer \xB7 your note parks with the card (it re-offers)":" submits as: approve \xB7 your words steer the re-design"})]}):v!==null?(0,l.jsxs)(n,{children:[u(v)," ",(0,l.jsx)(n,{color:s.dim,children:e.kind==="PAIR"?"\u270E defer with a note \u2014 say what you noticed":"\u270E approve with changes \u2014 say what to adjust"})]}):null:null]});if(p)return(0,l.jsxs)(x,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,l.jsx)(n,{bold:!0,color:s.assuranceAccent,children:a}),(0,l.jsx)(n,{color:s.dim,children:w}),C]});let _=Math.max(2,Math.min(b-1,100)-a.length-w.length);return(0,l.jsxs)(x,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,l.jsxs)(n,{children:[(0,l.jsx)(n,{bold:!0,color:s.assuranceAccent,children:a})," ".repeat(_),(0,l.jsx)(n,{color:s.dim,children:w})]}),(0,l.jsx)(n,{children:" "}),C]})}var z={"acceptance criteria":1,scenarios:2,"acceptance criteria + exercises":3,"tests + gaps":4};function we(e,t){let r=[],o=K(e.turns).entries.length;if(t==="design"){let c;for(let b=e.ledger.length-1;b>=0;b--){let p=e.ledger[b];if(p.kind==="banner"&&p.text.startsWith("designing: ")){c=p.text.slice(11);break}}let h=c?z[c]:void 0;h&&r.push(`phase ${h}/4`),o>0&&r.push(`${o} item${o===1?"":"s"} this session`)}else o>0&&r.push(`${o} saved as draft${o===1?"":"s"}`);let d=e.pending?e.pending.resolution.filter(c=>!c).length:0;return d>0&&r.push(`${d} question${d===1?"":"s"} pending`),e.credits&&r.push(`${e.credits.total.toFixed(1)} credits`),{items:r}}function ke(e,t){let r=[],o=e.applied+e.committed+e.retired;r.push(`${o} applied`),r.push(`${t} to decide`);let d=[];return e.skipped>0&&d.push(`${e.skipped} skipped`),e.deferred>0&&d.push(`${e.deferred} deferred`),e.failed>0&&d.push(`${e.failed} failed`),{items:[...r,...d]}}function Ae(e,t){let r=["\u2191\u2193 select","\u23CE confirm"];return e.multi_select&&r.push("space toggle"),t.batchCount>1&&r.push("\u2190 \u2192 questions"),(e.allow_free_text||e.options.some(o=>o.input===!0))&&r.push("\u270E type your own"),t.canAttach&&r.push("@ attach a file or URL"),t.escBack&&r.push("esc back"),{keys:r}}function Se(e,t){let r=["\u2191\u2193 select","\u23CE confirm"];return e.some(o=>o.free)&&r.push("\u270E type your own"),t.escBack&&r.push("esc back"),{keys:r}}function Re(e){let t=["\u2191\u2193 select","\u23CE confirm","1-9 verdict"];return W(e)!==null&&t.push("type = adjust"),t.push("esc \xB7 nothing to undo"),{keys:t}}export{ee as a,te as b,le as c,ce as d,ue as e,X as f,V as g,W as h,be as i,we as j,ke as k,Ae as l,Se as m,Re as n};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{g as b,h as c,i as d,j as e,k as f,l as g,m as h,n as i,o as j,p as k,q as l,r as m,s as n,t as o,u as p,v as q,w as r}from"./chunk-W3Z7AZNT.js";import"./chunk-JQW2QFSX.js";import"./chunk-6FCPS2VT.js";import"./chunk-UH2ZTX4E.js";import{i as a}from"./chunk-XMTSHHYQ.js";import"./chunk-DBIBROYW.js";import"./chunk-AKX4VRRR.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";export{b as SLUG_RE,c as checkAcyclic,d as checkCardinality,e as citesOf,q as commitDeferGap,o as commitNames,n as commitPairMerge,l as commitProposal,p as commitRetire,m as commitReviewFacts,f as criteriaShape,i as mintEventId,j as nextEventIds,a as recordsSince,r as resolveDeferGaps,k as resolveLivingTip,g as validateCriterionOps,h as validateProposal};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-OYJBABRV.js";import"./chunk-OFW3ZVTP.js";import"./chunk-UR6MHSHU.js";export{a as getEnvironment};
2
+ import{a}from"./chunk-V5DYLGAM.js";import"./chunk-LPH4TERT.js";import"./chunk-UR6MHSHU.js";export{a as getEnvironment};
@@ -0,0 +1,3 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{b as O}from"./chunk-DYW5C6II.js";import{a as g,b as S,d as G}from"./chunk-OS4VSIHT.js";import"./chunk-5DT7PIGB.js";import{e as w,f as $}from"./chunk-5GUD3CIH.js";import{d as x}from"./chunk-YMLC55J4.js";import{e as k}from"./chunk-EHN5HTUD.js";import"./chunk-CH273NAE.js";import{b}from"./chunk-VZ7KXRXB.js";import{C as R}from"./chunk-W3Z7AZNT.js";import"./chunk-JQW2QFSX.js";import"./chunk-6FCPS2VT.js";import"./chunk-UH2ZTX4E.js";import"./chunk-XMTSHHYQ.js";import"./chunk-DBIBROYW.js";import"./chunk-AKX4VRRR.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";import{basename as h}from"path";import{statSync as A}from"fs";function C(t,e){if(!t)return 1;let o=t.resolve(e);return!o||o.superseded?1:t.getNode(o.tip)?.content.risk==="high"?3:1}function D(t,e){return t.usecases.map(o=>{let s=o.acceptance_criteria??[],a=s.filter(n=>(n.covered_by??[]).length>0),l=s.filter(n=>n.execution==="passed"),i=s.filter(n=>n.execution==="failed"),u=s.filter(n=>n.execution==="blocked"),d=0,m=0;for(let n of s){let f=C(e,n.id);d+=f,n.execution==="passed"&&(m+=f)}let r=d===0?0:Math.round(100*m/d),p=a.length===0?"uncovered":s.length===l.length?"covered":u.length>0&&i.length===0?"blocked":"partial";return{id:o.id,title:o.title,status:p,pct:r,acs:{total:s.length,covered:a.length,passed:l.length,failed:i.length,blocked:u.length},stale:s.filter(n=>n.fresh==="stale").map(n=>n.id)}})}async function P(t){let e=await w(t);return e.length===0?null:e.map(o=>({p:o,m:A(o).mtimeMs})).sort((o,s)=>s.m-o.m)[0].p}var N={covered:"\u2714",partial:"\u25D0",uncovered:"\u2716",blocked:"\u23F8"};function _(t){let e=Math.round(t/10);return"\u2588".repeat(e)+"\u2591".repeat(10-e)}async function I(t,e=G(),o=process.cwd()){if(t.mode!==void 0&&t.mode!=="agent"&&t.mode!=="ci"&&t.mode!=="interactive")return g(e,`--mode must be interactive | agent | ci, got '${t.mode}'`),2;if(t.mode==="agent"||t.mode==="ci"){let{makeHeadlessIO:r,agentRefusal:p}=await import("./headless-io-66RG5NN5.js"),n=r("ndjson","cover",{stdout:c=>e.out(c.replace(/\n$/,"")),stderr:c=>(e.err??e.out)(c.replace(/\n$/,""))}),f=[],v=[],j={out:c=>f.push(c),err:c=>v.push(c),confirm:async()=>!1,isTTY:!1};if(await I({...t,json:!0,mode:void 0},j,o)!==0)return p(n,v.join("; ")||"cover refused");let y=JSON.parse(f.join(`
3
+ `));return n.event({type:"coverage",...y}),n.done(0,void 0,M(y.completeness??[]))}let s=S(o,e);if(!s)return 2;let a=t.from?await $(t.from,o):await P(o);if(!a)return g(e,t.from?`no evidence pack at '${t.from}'`:"no evidence pack in .testmuai/evidence \u2014 run a test first, or pass --from <pack>"),2;let l=await k(a,"coverage/usecases.yaml");if(l==null)return g(e,`${h(a)} carries no coverage/usecases.yaml \u2014 the pack predates coverage or its project had no .context at seal time`),2;let i=b(l);if(!i||!Array.isArray(i.usecases))return g(e,`${h(a)}: coverage/usecases.yaml is not a usecases document`),2;let u=R(s),d=D(i,u),m=await x(u,"design");if(t.json)return e.out(JSON.stringify({pack:a,depth:d,completeness:m},null,2)),0;e.out(`coverage \u2014 ${h(a)}`),e.out(""),e.out("depth (proven by the pack):");for(let r of d){let p=r.stale.length?` \xB7 ${r.stale.length} stale`:"";e.out(` ${N[r.status]} ${_(r.pct)} ${String(r.pct).padStart(3)}% ${r.id} \u2014 ${r.status} (${r.acs.passed}/${r.acs.total} ACs proven${r.acs.failed?`, ${r.acs.failed} failed`:""}${r.acs.blocked?`, ${r.acs.blocked} blocked`:""})${p}`)}e.out(""),e.out("completeness (live graph):"),m.length===0&&e.out(" no design gaps \u2014 every AC verified, every use-case scenarioed");for(let r of m)e.out(` [${r.risk}] ${r.tag} ${r.ref} \u2014 ${r.why}`),e.out(` \u2192 ${r.ready_command}`);return 0}function M(t){return t.filter(e=>e.ready_command.startsWith("kane-cli ")&&O(e.ready_command)).slice(0,4).map(e=>({cmd:e.ready_command,why:e.why}))}export{I as coverCommand,M as coverNext,D as depthRows};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-ZLSWHCWO.js";import"./chunk-OFW3ZVTP.js";import"./chunk-UR6MHSHU.js";export{a as CredentialsManager};
2
+ import{a}from"./chunk-H6YGG3GC.js";import"./chunk-LPH4TERT.js";import"./chunk-UR6MHSHU.js";export{a as CredentialsManager};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c,d,e,f,g,h,i,j}from"./chunk-DN3E6RT6.js";import"./chunk-MSGW4JDG.js";import"./chunk-4JOD47QI.js";import"./chunk-OFW3ZVTP.js";import"./chunk-UR6MHSHU.js";export{a as DEPS_INSTALL_SCHEMA_VERSION,i as DepsBundleResolver,c as DepsInstallRequiredError,h as NoPublishedBundleError,b as classOfTarget,g as downloadPayload,e as formatEta,d as formatRate,j as managedDeps,f as planRangeParts};
2
+ import{a,b,c,d,e,f,g,h,i,j}from"./chunk-HK3FFI7Y.js";import"./chunk-MSGW4JDG.js";import"./chunk-4JOD47QI.js";import"./chunk-LPH4TERT.js";import"./chunk-UR6MHSHU.js";export{a as DEPS_INSTALL_SCHEMA_VERSION,i as DepsBundleResolver,c as DepsInstallRequiredError,h as NoPublishedBundleError,b as classOfTarget,g as downloadPayload,e as formatEta,d as formatRate,j as managedDeps,f as planRangeParts};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import"./chunk-UR6MHSHU.js";var c="Mobile dependencies are resolved through your KaneAI account. Run `kane-cli login` first.";function d(l,o,e=process.env){return e.KANE_MOBILE_DEPS_BASE_URL||o(l)}async function u(){let[{CredentialsManager:l},{refreshOAuthToken:o},{getEnvironment:e},{ControllerClient:n}]=await Promise.all([import("./credentials-ZSNM4BTD.js"),import("./token-refresh-G2CSTY4B.js"),import("./config-6TQIMTNB.js"),import("./controller-client-OB4WD2C4.js")]),s=new l;return{creds:s,refresh:r=>o({creds:s,profile:r.profile,env:r.env,credentials:r.credentials}),controllerBaseUrlFor:r=>d(r,t=>e(t).controllerBaseUrl),makeClient:(r,t)=>new n(r,t)}}function p(l){return async o=>{let e=l??await u(),n=e.creds.getActiveProfile();if(!n)throw new Error(c);let s=e.creds.getDefaultEnv(),r=e.controllerBaseUrlFor(s),t=e.creds.loadBasicAuth(n,s);if(t)return e.makeClient(r,{username:t.username,accessKey:t.access_key}).resolveMobileDepsBundle(o);let i=e.creds.loadCredentials(n,s);if(!i)throw new Error(c);try{await e.refresh({creds:e.creds,profile:n,env:s,credentials:i})}catch{}let a=(e.creds.loadCredentials(n,s)??i).access_token;if(typeof a!="string"||!a)throw new Error(c);return e.makeClient(r,a).resolveMobileDepsBundle(o)}}export{p as controllerResolveBundle,d as depsControllerBaseUrl};
2
+ import"./chunk-UR6MHSHU.js";var c="Mobile dependencies are resolved through your KaneAI account. Run `kane-cli login` first.";function d(l,o,e=process.env){return e.KANE_MOBILE_DEPS_BASE_URL||o(l)}async function u(){let[{CredentialsManager:l},{refreshOAuthToken:o},{getEnvironment:e},{ControllerClient:n}]=await Promise.all([import("./credentials-64JYS7AQ.js"),import("./token-refresh-ZNV2OSZC.js"),import("./config-5UNFAVY6.js"),import("./controller-client-OB4WD2C4.js")]),s=new l;return{creds:s,refresh:r=>o({creds:s,profile:r.profile,env:r.env,credentials:r.credentials}),controllerBaseUrlFor:r=>d(r,t=>e(t).controllerBaseUrl),makeClient:(r,t)=>new n(r,t)}}function p(l){return async o=>{let e=l??await u(),n=e.creds.getActiveProfile();if(!n)throw new Error(c);let s=e.creds.getDefaultEnv(),r=e.controllerBaseUrlFor(s),t=e.creds.loadBasicAuth(n,s);if(t)return e.makeClient(r,{username:t.username,accessKey:t.access_key}).resolveMobileDepsBundle(o);let i=e.creds.loadCredentials(n,s);if(!i)throw new Error(c);try{await e.refresh({creds:e.creds,profile:n,env:s,credentials:i})}catch{}let a=(e.creds.loadCredentials(n,s)??i).access_token;if(typeof a!="string"||!a)throw new Error(c);return e.makeClient(r,a).resolveMobileDepsBundle(o)}}export{p as controllerResolveBundle,d as depsControllerBaseUrl};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a}from"./chunk-GX3FPJUG.js";import"./chunk-427OQS2N.js";import"./chunk-AKX4VRRR.js";import"./chunk-UR6MHSHU.js";export{a as topologyDescriptor};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a,b,c}from"./chunk-N7Z7BQYO.js";import"./chunk-KGKJU27A.js";import"./chunk-BB2W35TW.js";import"./chunk-DNNZ353O.js";import"./chunk-NVGBE2DR.js";import"./chunk-W3Z7AZNT.js";import"./chunk-JQW2QFSX.js";import"./chunk-6FCPS2VT.js";import"./chunk-UH2ZTX4E.js";import"./chunk-XMTSHHYQ.js";import"./chunk-DBIBROYW.js";import"./chunk-AKX4VRRR.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";export{a as captureForceScope,b as commitDesign,c as designPhaseLadder};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a,b,c,d,e,f,g,h,i,j}from"./chunk-Z7S3IWUX.js";import"./chunk-UR6MHSHU.js";export{a as deviceNameOf,i as deviceRefLabel,g as deviceRefName,f as deviceRefOf,h as deviceRefOsVersion,e as matchesDeviceRef,c as matchesSelector,j as pickDevice,d as selectorOf,b as versionMatches};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a,b,c,d}from"./chunk-WALVOFKR.js";import"./chunk-2UIHS2FH.js";import"./chunk-YKTYVJBN.js";import"./chunk-54JZ6VEW.js";import"./chunk-DNNZ353O.js";import"./chunk-Q2F5QB2W.js";import"./chunk-N2P4MI32.js";import"./chunk-NVGBE2DR.js";import"./chunk-W3Z7AZNT.js";import"./chunk-JQW2QFSX.js";import"./chunk-6FCPS2VT.js";import"./chunk-UH2ZTX4E.js";import"./chunk-XMTSHHYQ.js";import"./chunk-DBIBROYW.js";import"./chunk-AKX4VRRR.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-LPH4TERT.js";import"./chunk-UR6MHSHU.js";export{b as REMOTE_PROVIDERS,d as findProvider,a as landingReceipt,c as looksLikeUrl};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a,b,c,d}from"./chunk-HZDNGNO2.js";import"./chunk-2MQP4SSF.js";import"./chunk-MMBBQ4OZ.js";import"./chunk-HK3FFI7Y.js";import"./chunk-MSGW4JDG.js";import"./chunk-TZXXJWHA.js";import"./chunk-Z7S3IWUX.js";import"./chunk-4JOD47QI.js";import"./chunk-RZ4F3BHX.js";import"./chunk-LPH4TERT.js";import"./chunk-UR6MHSHU.js";export{d as doctorExitCode,c as doctorPreflightBlocked,b as renderDoctorText,a as runDoctor};
@@ -0,0 +1,3 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as d}from"./chunk-O5U6EAL3.js";import"./chunk-W3Z7AZNT.js";import"./chunk-JQW2QFSX.js";import"./chunk-6FCPS2VT.js";import"./chunk-UH2ZTX4E.js";import"./chunk-XMTSHHYQ.js";import"./chunk-DBIBROYW.js";import"./chunk-AKX4VRRR.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";var q=s=>`cite ${s.source_id??"?"} ${s.anchor??""}${s.quote?` \u2014 "${s.quote}"`:""}`;function E(s,_){let f=s.resolve(_);if(!f)return null;let c=f.tip,y=s.nodeLabel.get(c);if(!y)return null;let h=s.getNode(c);if(!h)return null;let r=h.content,p=s.displayNameOf(c)??_,a=[],o=(t,e,n=!1)=>{a.push({text:`${t.padEnd(12)} ${e}`,dim:n})},L=s.trust.get(c)??"derived";o("status",`${L}${s.superseded.has(c)?" \xB7 superseded":""}`,!0);let k=typeof r.risk=="string"?r.risk:null;k&&o("risk",k);for(let[t,e]of[["title",null],["description","description"],["value","value"],["summary","summary"],["statement","statement"],["text","text"],["intent","intent"],["case_type","case type"],["technique_notes","technique"],["kind","kind"],["change_note","change"]]){if(!e)continue;let n=r[t];typeof n=="string"&&n&&o(e,n)}let u=[];{let t=f.cid,e=new Set;for(;!e.has(t);){e.add(t),u.push(t);let n=s.superseded.get(t);if(typeof n!="string")break;t=n}}let g=u.flatMap(t=>s.edgesInto(t)).filter(t=>t.type==="DERIVES"),x=t=>{if(!t.source_cid||!t.anchor)return;let e=/^L(\d+)-L(\d+)$/.exec(t.anchor);if(!e)return;let n=s.getNode(t.source_cid)?.content?.text_blob;if(typeof n!="string")return;let i=n.split(`
3
+ `).slice(Number(e[1])-1,Number(e[2])).join(" ").trim();return i?i.length>120?`${i.slice(0,119)}\u2026`:i:void 0},$=new Map,b=new Set;for(let t of g){let e=t.props;if(!e.claim)continue;let n=`${e.claim}|${e.source_id??"?"}|${e.source_cid??"?"}|${e.anchor??"?"}`;if(b.has(n))continue;b.add(n);let i=$.get(e.claim)??[];i.push({source_id:e.source_id,anchor:e.anchor,quote:x(e)}),$.set(e.claim,i)}let N=Array.isArray(r.criteria)?r.criteria:[];for(let[t,e]of N.entries()){o(t===0?"criteria":"",`${t+1}. ${e}`);for(let n of $.get(e)??[])a.push({text:` ${q(n)}`,dim:!0})}let v=g.find(t=>!t.props.claim);if(v){let t=v.props;a.push({text:` ${q({...t,quote:x(t)})}`,dim:!0})}let l=r.check;l?.kind&&o("check",`${l.kind}${l.verified_against?` vs ${d(String(l.verified_against))}`:""}`);let m=r.expected_answer;m?.operator&&o("expects",`${m.operator} \xB7 ${String(m.operand??"")}`);let w=new Set,S=!0;for(let t of g){let e=t.props,n=`${e.source_id??"?"}@${e.source_cid??t.src}`;w.has(n)||(w.add(n),o(S?"provenance":"",`${e.source_id??"?"} @ ${String(e.source_cid??t.src).slice(7,15)}`,!0),S=!1)}let D=u.flatMap(t=>s.edgesFrom(t)).filter(t=>t.type==="depends_on");for(let[t,e]of D.entries()){let n=String(s.getNode(s.tipOf(e.dst))?.content?.title??""),i=s.displayNameOf(e.dst);o(t===0?"depends on":"",`${i?d(i):e.dst.slice(0,12)}${n?` ${n}`:""}`)}for(let[t,e]of s.retractedEdgesTouching(c).entries()){let n=u.includes(e.src),i=s.displayNameOf(n?e.dst:e.src)??(n?e.dst:e.src).slice(0,12),C=n?`${e.type} \u2192 ${d(i)}`:`${e.type} \u2190 ${d(i)}`,I=e.retraction.at.slice(0,10);o(t===0?"retracted":"",`${C} \u2014 ${I}${e.retraction.reason?` (${e.retraction.reason})`:""}`,!0)}return{id:d(p),rawId:p,title:String(r.title??r.text??r.statement??p),label:y,lines:a}}export{E as buildDossier};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{A as L,C as M,D as N,E as O,F as P,G as Q,K as R,L as S,M as T,N as U,O as _,Q as $,R as aa,S as ba,T as ca,U as da,V as ea,W as fa,X as ga,Y as ha,Z as ia,a as c,b as d,c as e,d as f,e as g,f as h,g as i,h as j,i as t,j as u,k as v,l as w,m as x,n as y,o as z,p as A,q as B,r as C,s as D,t as E,u as F,v as G,w as H,x as I,y as J,z as K}from"./chunk-ZIJLOYXX.js";import"./chunk-QQ5MHSSY.js";import{a as V,b as W,c as X,d as Y,e as Z}from"./chunk-7RTITBZG.js";import{a as n,b as o,c as p,e as q,f as r,g as s}from"./chunk-5GUD3CIH.js";import"./chunk-YMLC55J4.js";import"./chunk-H4WIA4IP.js";import{a as k,b as l,c as m}from"./chunk-EHN5HTUD.js";import"./chunk-IPEA7ZOF.js";import"./chunk-NVGBE2DR.js";import"./chunk-CH273NAE.js";import"./chunk-VZ7KXRXB.js";import{a,f as b}from"./chunk-P7YZ3PU3.js";import"./chunk-W3Z7AZNT.js";import"./chunk-JQW2QFSX.js";import"./chunk-6FCPS2VT.js";import"./chunk-UH2ZTX4E.js";import"./chunk-XMTSHHYQ.js";import"./chunk-DBIBROYW.js";import"./chunk-AKX4VRRR.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-SQWVGI3J.js";import"./chunk-MMBBQ4OZ.js";import"./chunk-HK3FFI7Y.js";import"./chunk-MSGW4JDG.js";import"./chunk-4JOD47QI.js";import"./chunk-V5DYLGAM.js";import"./chunk-RZ4F3BHX.js";import"./chunk-EYOCNMUM.js";import"./chunk-LPH4TERT.js";import"./chunk-UR6MHSHU.js";export{P as EvidenceSession,C as appendExecutionPointer,M as assembleExecutionEnv,b as buildEnvironment,j as buildEvidenceRunConfig,i as buildExternalId,z as buildLogsMetaYaml,y as buildResultYaml,t as buildRunYaml,O as createCdpBrowserCapture,u as createRunningPack,v as createRunningPackRoot,H as declareLogsFromDir,J as diagnostics,x as discardPack,ba as ensureAuteurExecution,N as fetchCdpBrowserString,L as finalizeEvidencePack,U as finalizeInlineEvidence,K as finalizeMemberTestLogs,da as flattenAuteurLeafIds,ca as flattenAuteurLeaves,T as inlineEvidenceBlock,q as listPacks,p as newExecutionId,a as normalizeOs,S as noteInlineSpawn,$ as offerEvidenceView,o as packPath,I as packTestLogsDir,V as parseRange,D as readExecutionPointers,ia as readPackLeafIds,ha as readPackLeaves,s as recoverStore,fa as remapReplayActionIds,r as resolvePack,ga as resolveReplayResultSteps,F as rollupTestStatus,aa as runEvidenceMerge,_ as runEvidenceServe,E as runEvidenceValidate,Q as runStartupRecovery,l as sealPack,w as sealPackById,Z as serveHint,f as shortHash,e as slugify,W as startEvidenceLocalServer,R as startInlineEvidence,n as storeDir,m as sweepStore,ea as synthesizeSkippedTail,h as testIdForInline,g as testIdForTestmd,k as validatePack,c as verdictFromResultCode,X as viewerBaseFor,Y as viewerUrlFor,d as worstOf,G as worstResultCode,B as writeLogsMeta,A as writeResult};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a,b,c,d,e,f,g}from"./chunk-VCDXUUJQ.js";import"./chunk-OS4VSIHT.js";import"./chunk-KAZGHWGK.js";import"./chunk-JUJ4SAGH.js";import"./chunk-UJZZDPDY.js";import"./chunk-BZAGVBCX.js";import"./chunk-DNNZ353O.js";import"./chunk-5DT7PIGB.js";import"./chunk-NVGBE2DR.js";import"./chunk-CH273NAE.js";import"./chunk-W3Z7AZNT.js";import"./chunk-JQW2QFSX.js";import"./chunk-6FCPS2VT.js";import"./chunk-UH2ZTX4E.js";import"./chunk-XMTSHHYQ.js";import"./chunk-DBIBROYW.js";import"./chunk-AKX4VRRR.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";export{b as designStateOf,g as evolveCommand,c as evolveOneUc,f as liveRunDesignForUc,a as resolveParentUc,e as runEvolveCommand,d as staleTargets};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{h as a,i as b,j as c,k as d,l as e,m as f,n as g,o as h,p as i,q as j,r as k,s as l,t as m,u as n,v as o,w as p}from"./chunk-RSSOJ3L2.js";import"./chunk-5EOX4MEY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-UR6MHSHU.js";export{p as _reset,i as cleanup,m as clearInkExit,h as deregister,j as fatalRemoteFlush,e as getRemoteLogger,b as getSupportContext,o as installHandlers,f as isShuttingDown,d as logOrBufferRemote,g as register,l as setInkExit,c as setRemoteLogger,a as setSupportContext,n as setTerminalRestore,k as shutdown};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-7KORP5FF.js";import"./chunk-DUAXZYAD.js";import"./chunk-DBIBROYW.js";import"./chunk-WXHQYYD5.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";export{a as explain};
2
+ import{a}from"./chunk-EEFZXZTZ.js";import"./chunk-XMTSHHYQ.js";import"./chunk-DBIBROYW.js";import"./chunk-AKX4VRRR.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";export{a as explain};
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as a}from"./chunk-OS4VSIHT.js";import{a as i}from"./chunk-7KORP5FF.js";import"./chunk-5DT7PIGB.js";import"./chunk-CH273NAE.js";import{A as n}from"./chunk-TH47OOBV.js";import"./chunk-VAYBKR76.js";import"./chunk-CUM23TLF.js";import"./chunk-DUAXZYAD.js";import"./chunk-DBIBROYW.js";import"./chunk-WXHQYYD5.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";async function f(s,p){let o=a(process.cwd(),{out:r=>process.stdout.write(r+`
2
+ import{b as a}from"./chunk-OS4VSIHT.js";import{a as i}from"./chunk-EEFZXZTZ.js";import"./chunk-5DT7PIGB.js";import"./chunk-CH273NAE.js";import{C as n}from"./chunk-W3Z7AZNT.js";import"./chunk-JQW2QFSX.js";import"./chunk-6FCPS2VT.js";import"./chunk-UH2ZTX4E.js";import"./chunk-XMTSHHYQ.js";import"./chunk-DBIBROYW.js";import"./chunk-AKX4VRRR.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";async function f(s,p){let o=a(process.cwd(),{out:r=>process.stdout.write(r+`
3
3
  `),err:r=>process.stderr.write(r+`
4
4
  `),confirm:async()=>!1,isTTY:!!process.stdout.isTTY});if(!o)return 2;let c=n(o),t=i(o,c,s);if(p.json)return process.stdout.write(JSON.stringify(t)+`
5
5
  `),t.target?0:1;if(!t.target)return process.stdout.write(`error: ${s} names nothing in the graph
@@ -1,3 +1,3 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as x}from"./chunk-7KORP5FF.js";import{b as E}from"./chunk-ZKSN2SJ7.js";import{a as k}from"./chunk-CH273NAE.js";import"./chunk-VZ7KXRXB.js";import{A as h}from"./chunk-TH47OOBV.js";import"./chunk-VAYBKR76.js";import"./chunk-CUM23TLF.js";import"./chunk-DUAXZYAD.js";import"./chunk-DBIBROYW.js";import{d,e as g}from"./chunk-WXHQYYD5.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";async function _(f,$={}){let m=$.contextDir??k(process.cwd()),e=$.out??(c=>process.stdout.write(c+`
2
+ import{a as x}from"./chunk-EEFZXZTZ.js";import{b as E}from"./chunk-ZKSN2SJ7.js";import{a as k}from"./chunk-CH273NAE.js";import"./chunk-VZ7KXRXB.js";import{C as h}from"./chunk-W3Z7AZNT.js";import"./chunk-JQW2QFSX.js";import"./chunk-6FCPS2VT.js";import"./chunk-UH2ZTX4E.js";import"./chunk-XMTSHHYQ.js";import"./chunk-DBIBROYW.js";import{d,e as g}from"./chunk-AKX4VRRR.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";async function _(f,$={}){let m=$.contextDir??k(process.cwd()),e=$.out??(c=>process.stdout.write(c+`
3
3
  `)),o=h(m),u=o.resolve(f);if(!u){let c=[...o.names.keys()].filter(n=>/^(t|sc|ac|gap)-/.test(n)).sort();return e(`no design rationale recorded for ${f} (exists: ${c.slice(0,12).join(", ")||"(no designed items)"})`),1}let a=u.tip,s=o.nodeLabel.get(a),r=o.getNode(a),l=o.nameOf.get(a)??a.slice(0,19);if(s===d.TEST){let c=String(r?.content.definitionId??""),n=c?E(m,c):null;if(!n){let i=null;for(let S of o.edgesFrom(a))if(S.type===g.VERIFIES){for(let p of o.edgesFrom(S.dst))if(p.type===g.SCOPED_TO){i=o.nameOf.get(p.dst)??p.dst.slice(0,19);break}if(i)break}return e(`no design rationale recorded for ${f} (exists: test ${l}, but its sidecar is missing \u2014 re-run: kane-cli design tests${i?` --use-case ${i}`:""} --force)`),1}e(`${l} \u2014 ${String(r?.content.title??"")}`),e(`technique: ${n.technique}`),e(`profile family: ${n.profile_family}`),e(`anchored to: ${n.anchor}`),e(`expected how: ${n.expected_how}`),e(`combinatorial: strength ${n.combinatorial.strength} \u2014 ${n.combinatorial.reason}`),e(`surface: ${n.surface_state} \xB7 deferred bindings: ${n.deferred_bindings}`);let t=r?.content.check;t&&e(`check: ${String(t.kind)} ${String(t.operator)} ${String(t.operand??t.within??"")} \u2014 verified against ${String(t.verified_against)}`);for(let i of o.edgesFrom(a))i.type===g.AUTOMATES&&e(`automates: ${o.nameOf.get(i.dst)??i.dst.slice(0,19)}`),i.type===g.VERIFIES&&e(`verifies: ${o.nameOf.get(i.dst)??i.dst.slice(0,19)}`),i.type===g.REUSES&&e(`imports: ${o.nameOf.get(i.dst)??i.dst.slice(0,19)}`);return 0}if(s===d.SCENARIO||s===d.AC||s===d.GAP){let n=x(m,o,f).entries.filter(t=>t.kind==="judgement"||t.kind==="review");if(e(`${l} \u2014 ${String(r?.content.title??r?.content.text??"")}`),s===d.SCENARIO&&(e(`case type: ${String(r?.content.case_type??"")} \xB7 intent: ${String(r?.content.intent??"")}`),e(`technique: ${String(r?.content.technique_notes??"")}`)),s===d.AC){let t=r?.content.expected_answer;e(`kind: ${String(r?.content.kind??"")}${t?` \xB7 oracle: ${String(t.operator)} ${String(t.operand??"")}`:""}`)}n.length===0&&e("(no recorded judgements yet \u2014 approvals and design-time judgements land here)");for(let t of n)e(t.kind==="judgement"?`judgement: ${t.rationale??t.detail}`:`review: ${t.detail}`);return 0}return e(`no design rationale recorded for ${f} (exists: ${s??"nothing"} ${l} \u2014 design explains tests, scenarios, ACs, and gaps)`),1}export{_ as designExplainCommand};
@@ -1,10 +1,10 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as $}from"./chunk-A2SQD2AY.js";import{a as F}from"./chunk-IGJIDN4U.js";import{a as ee}from"./chunk-JZ26R6UL.js";import{f as Z,g as z}from"./chunk-YZ45OEH3.js";import"./chunk-ZMNJBUAO.js";import"./chunk-W5TTF7GB.js";import"./chunk-I7TIGB7K.js";import"./chunk-ATWDQCDA.js";import"./chunk-IWM5EZC3.js";import"./chunk-ZGBSGZZM.js";import"./chunk-EXERQHXV.js";import"./chunk-BB2W35TW.js";import"./chunk-AXTPNZPX.js";import"./chunk-L2TV4G56.js";import"./chunk-JFAFKHDX.js";import"./chunk-6KPPGMO2.js";import"./chunk-KRKGZ2ZW.js";import{e as Y}from"./chunk-TKYJTXWL.js";import"./chunk-AWD56KGX.js";import"./chunk-BN6AHQL7.js";import"./chunk-2UIHS2FH.js";import{c as L}from"./chunk-YKTYVJBN.js";import"./chunk-GFKCTYCA.js";import"./chunk-IMR64OCZ.js";import"./chunk-427OQS2N.js";import"./chunk-2DCNCH32.js";import"./chunk-DNNZ353O.js";import"./chunk-Q2F5QB2W.js";import"./chunk-R7QAS6LZ.js";import"./chunk-BKHXPBWN.js";import"./chunk-N2P4MI32.js";import{c as O}from"./chunk-5DT7PIGB.js";import"./chunk-NVGBE2DR.js";import{a as A}from"./chunk-CH273NAE.js";import{a as U,b as H}from"./chunk-E5S4BASB.js";import"./chunk-R5T4RLF5.js";import"./chunk-KBM3XHAM.js";import"./chunk-2YEHV2CX.js";import"./chunk-IDX3TOPY.js";import"./chunk-BKM2LWU2.js";import"./chunk-TH47OOBV.js";import"./chunk-VAYBKR76.js";import"./chunk-CUM23TLF.js";import"./chunk-DUAXZYAD.js";import"./chunk-DBIBROYW.js";import"./chunk-WXHQYYD5.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-MSGW4JDG.js";import"./chunk-56PAQAX5.js";import"./chunk-5EOX4MEY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-OFW3ZVTP.js";import"./chunk-UR6MHSHU.js";async function ue(t){let[{render:n},o,{QuestionBatchPrompt:f}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./react-QWOAB3TB.js"),import("./ui-JEJGTURD.js")]),g=o.default??o;return new Promise(y=>{let x=n(g.createElement(f,{questions:t,onSubmit:r=>{x.unmount(),y(r)}}))})}async function le(t,n){let[{render:o},f,{ReviewChecklist:g}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./react-QWOAB3TB.js"),import("./ui-JEJGTURD.js")]),y=f.default??f;return new Promise(x=>{let r=o(y.createElement(g,{items:t.map(v=>{let h=n.get(v.temp_ref);return{uc:v,dedupWith:h&&!h.archived?h.cid:void 0,archivedMatch:h?.archived?{cid:h.cid,reason:h.reason}:void 0}}),onSubmit:v=>{r.unmount(),x(v)}}))})}async function me(t){let{createInterface:n}=await import("readline/promises"),o=n({input:process.stdin,output:process.stdout});try{let f=await o.question(`${t} [y/N] `);return/^y(es)?$/i.test(f.trim())}finally{o.close()}}async function be(t){let n=A(process.cwd()),o=H({verb:"extract",mode:t.plan?"cli":"interactive",contextRoot:n,env:U(),resumeSid:t.resume,write:!0,longSession:!0}),g={...await Y(),...o.spawnEnv()},y=await L(g);if(!y.ok)return process.stderr.write((y.message??"error: turn-endpoint preflight failed")+`
2
+ import{a as $}from"./chunk-A2SQD2AY.js";import{a as F}from"./chunk-BYOXTXLC.js";import{a as ee}from"./chunk-JUJ4SAGH.js";import{f as Z,g as z}from"./chunk-AS5UKK27.js";import"./chunk-ZMNJBUAO.js";import"./chunk-W5TTF7GB.js";import"./chunk-I7TIGB7K.js";import"./chunk-UDW4ZZAW.js";import"./chunk-FGRTNRBS.js";import"./chunk-5G22NOZK.js";import"./chunk-NAZ36RKI.js";import"./chunk-BB2W35TW.js";import"./chunk-AXTPNZPX.js";import"./chunk-L2TV4G56.js";import"./chunk-BZAGVBCX.js";import"./chunk-IVQX3AKL.js";import"./chunk-KRKGZ2ZW.js";import{e as Y}from"./chunk-K6JRFRGS.js";import"./chunk-WPSQYEBP.js";import"./chunk-WALVOFKR.js";import"./chunk-2UIHS2FH.js";import{c as L}from"./chunk-YKTYVJBN.js";import"./chunk-EV64VI66.js";import"./chunk-GX3FPJUG.js";import"./chunk-427OQS2N.js";import"./chunk-54JZ6VEW.js";import"./chunk-DNNZ353O.js";import"./chunk-Q2F5QB2W.js";import"./chunk-R7QAS6LZ.js";import"./chunk-BKHXPBWN.js";import"./chunk-N2P4MI32.js";import{c as O}from"./chunk-5DT7PIGB.js";import"./chunk-NVGBE2DR.js";import{a as A}from"./chunk-CH273NAE.js";import{a as U,b as H}from"./chunk-LI5FMAUO.js";import"./chunk-4PMZ5FCD.js";import"./chunk-KBM3XHAM.js";import"./chunk-2YEHV2CX.js";import"./chunk-IDX3TOPY.js";import"./chunk-BKM2LWU2.js";import"./chunk-W3Z7AZNT.js";import"./chunk-JQW2QFSX.js";import"./chunk-6FCPS2VT.js";import"./chunk-UH2ZTX4E.js";import"./chunk-XMTSHHYQ.js";import"./chunk-DBIBROYW.js";import"./chunk-AKX4VRRR.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-MSGW4JDG.js";import"./chunk-RSSOJ3L2.js";import"./chunk-5EOX4MEY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-LPH4TERT.js";import"./chunk-UR6MHSHU.js";async function ue(t){let[{render:n},o,{QuestionBatchPrompt:f}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./react-QWOAB3TB.js"),import("./ui-JEJGTURD.js")]),g=o.default??o;return new Promise(y=>{let x=n(g.createElement(f,{questions:t,onSubmit:r=>{x.unmount(),y(r)}}))})}async function le(t,n){let[{render:o},f,{ReviewChecklist:g}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./react-QWOAB3TB.js"),import("./ui-JEJGTURD.js")]),y=f.default??f;return new Promise(x=>{let r=o(y.createElement(g,{items:t.map(v=>{let h=n.get(v.temp_ref);return{uc:v,dedupWith:h&&!h.archived?h.cid:void 0,archivedMatch:h?.archived?{cid:h.cid,reason:h.reason}:void 0}}),onSubmit:v=>{r.unmount(),x(v)}}))})}async function me(t){let{createInterface:n}=await import("readline/promises"),o=n({input:process.stdin,output:process.stdout});try{let f=await o.question(`${t} [y/N] `);return/^y(es)?$/i.test(f.trim())}finally{o.close()}}async function be(t){let n=A(process.cwd()),o=H({verb:"extract",mode:t.plan?"cli":"interactive",contextRoot:n,env:U(),resumeSid:t.resume,write:!0,longSession:!0}),g={...await Y(),...o.spawnEnv()},y=await L(g);if(!y.ok)return process.stderr.write((y.message??"error: turn-endpoint preflight failed")+`
3
3
  `),process.stderr.write(o.supportFooter()+`
4
4
  `),o.error("preflight_auth"),await o.end({exit_code:2}),2;let x=async()=>y;if(t.plan){let s=await z(t,{contextDir:n,agent:F,preflightTurn:x,ask:ue,review:le,confirmStale:me,out:l=>process.stdout.write(l+`
5
5
  `),progress:l=>process.stderr.write(l+`
6
6
  `),isTTY:O(),auth:g,telemetry:o});return s===1&&process.stderr.write(o.supportFooter()+`
7
- `),await o.end({exit_code:s}),s}let[{render:r},v,{ScrollbackProvider:h},{ChatSurface:u},{ScrollbackTap:j},{makeChatController:Q},{setInkExit:_},W]=await Promise.all([import("./build-JIKYOZUH.js"),import("./react-QWOAB3TB.js"),import("./scrollback-JLPJR25X.js"),import("./ChatSurface-S2P7WMBI.js"),import("./ScrollbackTap-Q3IOKNMS.js"),import("./chat-controller-R4THYYPU.js"),import("./exit-manager-3FVBTNYR.js"),Promise.all([import("./chat-committer-ZWWCLJFD.js"),import("./descriptor-OEUZZCOK.js"),import("./explain-UAAQWHYR.js"),import("./readmodel-XOYGGQ3S.js")])]),[{commitChatTurn:M},{topologyDescriptor:e},{explain:a},{openGraph:k}]=W,E=v.default??v,i=Q({commitChatTurn:M,descriptor:e(),contextDir:n,refreshGraph:()=>k(n),graph:k(n),explain:a,by:{kind:"human",id:"owner"},dedupFlags:s=>Z(s,k(n))}),q={current:null},P=null,J=0,G=null,V=!1,te=()=>{if(J+=1,J>=2){try{I.unmount()}catch{}$({state:"interrupted",reason:"ctrl+c \xD72",facts:["forced quit \u2014 anything already committed is safe in the store"]}),process.exit(130)}i.requestPause(),G=setTimeout(()=>{V||(V=!0,(async()=>{i.finalizeForExit(),await q.current?.flush();try{I.unmount()}catch{}$({state:"interrupted",facts:["the agent did not confirm the pause within 5s \u2014 nothing new was saved"]}),process.exit(130)})())},5e3)},re=await import("./dossier-KTLTGT2X.js"),ne=s=>{try{return re.buildDossier(k(n),s)}catch{return null}},se={listUcs:()=>{let s=k(n),l=new Set(i.state.turns.flatMap(c=>(c.items??[]).map(m=>m.title.toLowerCase()))),d={high:0,med:1,low:2};return s.byLabel("usecase").filter(c=>!s.superseded.has(c.cid)).map((c,m)=>{let b=c.content,C=String(b.title??c.cid.slice(0,12)),N=ee(s,c.cid),S=N?N.designed_at_cid===c.cid?"current":"stale":void 0;return{key:c.cid,title:C,badge:S==="current"?"designed":S==="stale"?"designed \xB7 stale":l.has(C.toLowerCase())?"drafted this session":"existing",designed:S,risk:b.risk,i:m}}).sort((c,m)=>(d[c.risk??"zz"]??3)-(d[m.risk??"zz"]??3)||c.i-m.i).map(({key:c,title:m,badge:b,designed:C})=>({key:c,title:m,badge:b,designed:C}))},runDesignChild:async(s,l=!1,d="design")=>{try{let{designEntryCheck:p,confirmUnreviewedViaAsk:T}=await import("./trust-gate-EX7R2P4Y.js"),w=p(k(n),s);if(!w.ok&&(w.code==="UC_UNREVIEWED"||w.code==="UC_ARCHIVED")&&!await T(D=>i.ask(D),w))return i.note(`design child refused \u2014 approve it first: ${w.reviewCmd}`),2}catch{}let[{runDesign:c}]=await Promise.all([import("./run-26IR3CKX.js")]),m="",b=(()=>{try{let p=k(n),T=p.resolve(s);return(T?p.getNode(T.cid)?.content?.title:void 0)??s}catch{return s}})(),{collectSessionItems:C}=await import("./session-items-2ATN7VXG.js"),N=C(i.state.turns).entries.length,S=i.state.credits?.total,ce=Date.now();i.ledger({kind:"childOpen",verb:d,subject:b});let de=p=>{let T=Math.max(1,Math.round((Date.now()-ce)/1e3)),w=C(i.state.turns).entries.length-N,B=i.state.credits?.total,D=B!==void 0&&S!==void 0?B-S:B;i.ledger(p===0?{kind:"childClose",verb:d,subject:b,ok:!0,durS:T,...w>0?{results:`${w} item${w===1?"":"s"}`}:{},...D!==void 0&&D>0?{credits:D}:{}}:{kind:"childClose",verb:d,subject:b,ok:!1,durS:T,exitCode:p,fixCmd:`kane-cli design tests --use-case ${s}${l||d==="evolve"?" --force":""}`});let X=C(i.state.turns).entries.length;i.ledger({kind:"childBack",parentVerb:"extract",context:`${X} draft${X===1?"":"s"} saved`})},R=1;try{R=await c({useCase:s,force:l,mode:"interactive"},{contextDir:n,agent:F,preflightTurn:x,ask:p=>i.ask(p),chat:i,nested:!0,out:p=>{m=p},progress:()=>{},isTTY:!0,auth:g})}finally{de(R)}return R!==0&&m&&i.note(m),R}},{makeReconcileDeps:ie}=await import("./reconcile-deps-FYXRAMF2.js"),oe=ie({contextDir:n,...t.changeContext?{changeContext:t.changeContext}:{},note:s=>i.note(s)}),ae={verb:"extract",sid:t.resume??o.ids.session_id,env:U(),...t.source?{subject:t.source}:{}},I=r(E.createElement(h,null,E.createElement(j,{into:q}),E.createElement(u,{controller:i,verb:"extract",onCtrlC:te,chain:se,inspect:ne,reconcile:oe,meta:ae})),{exitOnCtrlC:!1});_(()=>I.unmount());let K=null;try{let s=z(t,{contextDir:n,agent:F,preflightTurn:x,onSummary:d=>{P=d},ask:d=>i.ask(d),review:async d=>new Map(d.map(c=>[c.temp_ref,{resolution:"skipped"}])),confirmStale:async()=>!0,out:d=>i.note(d),progress:()=>{},isTTY:O(),auth:g,chat:i,telemetry:o});s.finally(()=>{V=!0});let l=await s;return K=l,l===1&&process.stderr.write(o.supportFooter()+`
8
- `),await o.end({exit_code:l}),l}catch(s){throw P||(P={state:"crashed",facts:[`the session ended unexpectedly \u2014 ${s instanceof Error?s.name:"error"}`]}),s}finally{V=!0,G&&clearTimeout(G),i.finalizeForExit(),await q.current?.flush();try{I.unmount()}catch{}P?$(P):K===1&&$({state:"interrupted",facts:["the session ended without saving \u2014 see the error above"]})}}async function Ce(t){let n=H({verb:"extract",mode:t.mode,contextRoot:A(process.cwd()),env:U(),resumeSid:t.resume,write:!0,longSession:!0}),{makeHeadlessIO:o,resolveEncoding:f,guardedChannels:g}=await import("./headless-io-66RG5NN5.js"),{withStructuredNext:y,prepareStructuredResume:x}=await import("./structured-answers-5EY2AZN7.js"),r=y(o(f(t.mode),"extract")),{runWithChannel:v}=await import("./run-channel-RGH4WIQX.js"),h=f(t.mode)==="ndjson"?e=>v({event:a=>r.event(a)},e):e=>e();for(let e of t.landed??[]){let a=e;r.event({type:"ingested",source_id:e.source_id,status:e.status,cid:e.source_cid,...a.warnings?.length?{warnings:a.warnings}:{},...a.media?{media:a.media}:{},...a.duplicate_of?{duplicate_of:a.duplicate_of}:{},...a.lineage_candidate?{lineage_candidate:a.lineage_candidate}:{}})}let u;try{u=x({opts:t,contextDir:A(process.cwd()),verb:"extract"})}catch(e){let a=e instanceof Error?e.message:String(e);return r.out(`error: ${a}`),t.mode==="agent"&&r.event({type:"error",message:a}),await n.end({exit_code:1}),t.mode==="agent"?r.done(1,"error"):1}if(u.kind==="refuse")return r.out(u.error),t.mode==="agent"&&r.event({type:"error",message:u.error,code:u.code}),await n.end({exit_code:2}),t.mode==="agent"?r.done(2,"refused"):2;let j=t;if(u.kind==="apply"){for(let e of u.notes)r.out(e);if(u.matchedQids.length>0){r.out(`applying ${u.matchedQids.length} structured answer(s) from --answer to the paused session's pending questions`);for(let e of u.matchedQids)r.event({type:"panel_resolved",id:e,by:"user",via:"flag"})}u.statement&&(j={...t,message:[t.message,u.statement].filter(Boolean).join(`
7
+ `),await o.end({exit_code:s}),s}let[{render:r},v,{ScrollbackProvider:h},{ChatSurface:u},{ScrollbackTap:j},{makeChatController:Q},{setInkExit:_},W]=await Promise.all([import("./build-JIKYOZUH.js"),import("./react-QWOAB3TB.js"),import("./scrollback-JLPJR25X.js"),import("./ChatSurface-LS3KF7XY.js"),import("./ScrollbackTap-Q3IOKNMS.js"),import("./chat-controller-YJCNU76T.js"),import("./exit-manager-ZLDO54S4.js"),Promise.all([import("./chat-committer-K3NOTLOU.js"),import("./descriptor-PWUUNYV7.js"),import("./explain-3HAZY7Q6.js"),import("./readmodel-TDRFVDVI.js")])]),[{commitChatTurn:M},{topologyDescriptor:e},{explain:a},{openGraph:k}]=W,E=v.default??v,i=Q({commitChatTurn:M,descriptor:e(),contextDir:n,refreshGraph:()=>k(n),graph:k(n),explain:a,by:{kind:"human",id:"owner"},dedupFlags:s=>Z(s,k(n))}),q={current:null},P=null,J=0,G=null,V=!1,te=()=>{if(J+=1,J>=2){try{I.unmount()}catch{}$({state:"interrupted",reason:"ctrl+c \xD72",facts:["forced quit \u2014 anything already committed is safe in the store"]}),process.exit(130)}i.requestPause(),G=setTimeout(()=>{V||(V=!0,(async()=>{i.finalizeForExit(),await q.current?.flush();try{I.unmount()}catch{}$({state:"interrupted",facts:["the agent did not confirm the pause within 5s \u2014 nothing new was saved"]}),process.exit(130)})())},5e3)},re=await import("./dossier-Y6TJWFZU.js"),ne=s=>{try{return re.buildDossier(k(n),s)}catch{return null}},se={listUcs:()=>{let s=k(n),l=new Set(i.state.turns.flatMap(c=>(c.items??[]).map(m=>m.title.toLowerCase()))),d={high:0,med:1,low:2};return s.byLabel("usecase").filter(c=>!s.superseded.has(c.cid)).map((c,m)=>{let b=c.content,C=String(b.title??c.cid.slice(0,12)),N=ee(s,c.cid),S=N?N.designed_at_cid===c.cid?"current":"stale":void 0;return{key:c.cid,title:C,badge:S==="current"?"designed":S==="stale"?"designed \xB7 stale":l.has(C.toLowerCase())?"drafted this session":"existing",designed:S,risk:b.risk,i:m}}).sort((c,m)=>(d[c.risk??"zz"]??3)-(d[m.risk??"zz"]??3)||c.i-m.i).map(({key:c,title:m,badge:b,designed:C})=>({key:c,title:m,badge:b,designed:C}))},runDesignChild:async(s,l=!1,d="design")=>{try{let{designEntryCheck:p,confirmUnreviewedViaAsk:T}=await import("./trust-gate-EX7R2P4Y.js"),w=p(k(n),s);if(!w.ok&&(w.code==="UC_UNREVIEWED"||w.code==="UC_ARCHIVED")&&!await T(D=>i.ask(D),w))return i.note(`design child refused \u2014 approve it first: ${w.reviewCmd}`),2}catch{}let[{runDesign:c}]=await Promise.all([import("./run-BGQTRIU4.js")]),m="",b=(()=>{try{let p=k(n),T=p.resolve(s);return(T?p.getNode(T.cid)?.content?.title:void 0)??s}catch{return s}})(),{collectSessionItems:C}=await import("./session-items-2ATN7VXG.js"),N=C(i.state.turns).entries.length,S=i.state.credits?.total,ce=Date.now();i.ledger({kind:"childOpen",verb:d,subject:b});let de=p=>{let T=Math.max(1,Math.round((Date.now()-ce)/1e3)),w=C(i.state.turns).entries.length-N,B=i.state.credits?.total,D=B!==void 0&&S!==void 0?B-S:B;i.ledger(p===0?{kind:"childClose",verb:d,subject:b,ok:!0,durS:T,...w>0?{results:`${w} item${w===1?"":"s"}`}:{},...D!==void 0&&D>0?{credits:D}:{}}:{kind:"childClose",verb:d,subject:b,ok:!1,durS:T,exitCode:p,fixCmd:`kane-cli design tests --use-case ${s}${l||d==="evolve"?" --force":""}`});let X=C(i.state.turns).entries.length;i.ledger({kind:"childBack",parentVerb:"extract",context:`${X} draft${X===1?"":"s"} saved`})},R=1;try{R=await c({useCase:s,force:l,mode:"interactive"},{contextDir:n,agent:F,preflightTurn:x,ask:p=>i.ask(p),chat:i,nested:!0,out:p=>{m=p},progress:()=>{},isTTY:!0,auth:g})}finally{de(R)}return R!==0&&m&&i.note(m),R}},{makeReconcileDeps:ie}=await import("./reconcile-deps-Y5G456WD.js"),oe=ie({contextDir:n,...t.changeContext?{changeContext:t.changeContext}:{},note:s=>i.note(s)}),ae={verb:"extract",sid:t.resume??o.ids.session_id,env:U(),...t.source?{subject:t.source}:{}},I=r(E.createElement(h,null,E.createElement(j,{into:q}),E.createElement(u,{controller:i,verb:"extract",onCtrlC:te,chain:se,inspect:ne,reconcile:oe,meta:ae})),{exitOnCtrlC:!1});_(()=>I.unmount());let K=null;try{let s=z(t,{contextDir:n,agent:F,preflightTurn:x,onSummary:d=>{P=d},ask:d=>i.ask(d),review:async d=>new Map(d.map(c=>[c.temp_ref,{resolution:"skipped"}])),confirmStale:async()=>!0,out:d=>i.note(d),progress:()=>{},isTTY:O(),auth:g,chat:i,telemetry:o});s.finally(()=>{V=!0});let l=await s;return K=l,l===1&&process.stderr.write(o.supportFooter()+`
8
+ `),await o.end({exit_code:l}),l}catch(s){throw P||(P={state:"crashed",facts:[`the session ended unexpectedly \u2014 ${s instanceof Error?s.name:"error"}`]}),s}finally{V=!0,G&&clearTimeout(G),i.finalizeForExit(),await q.current?.flush();try{I.unmount()}catch{}P?$(P):K===1&&$({state:"interrupted",facts:["the session ended without saving \u2014 see the error above"]})}}async function Ce(t){let n=H({verb:"extract",mode:t.mode,contextRoot:A(process.cwd()),env:U(),resumeSid:t.resume,write:!0,longSession:!0}),{makeHeadlessIO:o,resolveEncoding:f,guardedChannels:g}=await import("./headless-io-66RG5NN5.js"),{withStructuredNext:y,prepareStructuredResume:x}=await import("./structured-answers-YAVW65G4.js"),r=y(o(f(t.mode),"extract")),{runWithChannel:v}=await import("./run-channel-RGH4WIQX.js"),h=f(t.mode)==="ndjson"?e=>v({event:a=>r.event(a)},e):e=>e();for(let e of t.landed??[]){let a=e;r.event({type:"ingested",source_id:e.source_id,status:e.status,cid:e.source_cid,...a.warnings?.length?{warnings:a.warnings}:{},...a.media?{media:a.media}:{},...a.duplicate_of?{duplicate_of:a.duplicate_of}:{},...a.lineage_candidate?{lineage_candidate:a.lineage_candidate}:{}})}let u;try{u=x({opts:t,contextDir:A(process.cwd()),verb:"extract"})}catch(e){let a=e instanceof Error?e.message:String(e);return r.out(`error: ${a}`),t.mode==="agent"&&r.event({type:"error",message:a}),await n.end({exit_code:1}),t.mode==="agent"?r.done(1,"error"):1}if(u.kind==="refuse")return r.out(u.error),t.mode==="agent"&&r.event({type:"error",message:u.error,code:u.code}),await n.end({exit_code:2}),t.mode==="agent"?r.done(2,"refused"):2;let j=t;if(u.kind==="apply"){for(let e of u.notes)r.out(e);if(u.matchedQids.length>0){r.out(`applying ${u.matchedQids.length} structured answer(s) from --answer to the paused session's pending questions`);for(let e of u.matchedQids)r.event({type:"panel_resolved",id:e,by:"user",via:"flag"})}u.statement&&(j={...t,message:[t.message,u.statement].filter(Boolean).join(`
9
9
 
10
10
  `)})}let{makeInterruptGuard:Q}=await import("./interrupt-guard-UREUWNRL.js"),_=Q(F,e=>r.out(e)),M=g(r,()=>_.interrupted(),/^error: (agent failed|repair run failed|agent ended)/);try{let e=await h(async()=>{let a={...await Y(),...n.spawnEnv()};return z(j,{contextDir:A(process.cwd()),agent:_.agent,preflightTurn:()=>L(a),ask:async()=>[],review:async k=>new Map(k.map(E=>[E.temp_ref,{resolution:"skipped"}])),confirmStale:async()=>!1,out:M.out,emit:M.emit,progress:r.progress,isTTY:!1,auth:a,telemetry:n})});return _.interrupted()&&e!==3?(r.out("interrupted \u2014 no session saved"),await n.end({exit_code:130}),r.done(130)):(e===1&&r.out(n.supportFooter()),await n.end({exit_code:e}),r.done(e))}catch(e){return r.event({type:"error",message:`error: extract failed: ${e instanceof Error?e.message:String(e)}`}),r.out(`error: extract failed: ${e instanceof Error?e.message:String(e)}`),r.out('hint: the full trace is in the file named on the "trace:" line at the start of this run'),r.done(1)}finally{_.dispose()}}export{Ce as bindExtractHeadless,be as bindExtractInteractive};
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
2
  import{a as i}from"./chunk-CH273NAE.js";import"./chunk-UR6MHSHU.js";import{existsSync as u}from"fs";async function g(e){if(e.mode!=null&&!["interactive","agent","ci","override"].includes(e.mode)){let{makeHeadlessIO:t,agentRefusal:r}=await import("./headless-io-66RG5NN5.js");return r(t("ndjson","extract"),`extract: --mode must be interactive | agent | ci | override, got '${e.mode}'`,"MODE_USAGE")}let n=async(t,r)=>{if(e.mode!=="agent")return process.stderr.write(t+`
3
- `),2;let{makeHeadlessIO:o,agentRefusal:c}=await import("./headless-io-66RG5NN5.js");return c(o("ndjson","extract"),t,r)};if(e.apply)return n("extract: --apply is not implemented yet \u2014 coming with the plan\u2192apply workflow (run without --apply, or use --plan to preview)");{let{validateResumeMessage:t}=await import("./headless-io-66RG5NN5.js"),r=t(e,"extract");if(r)return n(r)}{let{gateStructuredFlags:t}=await import("./structured-answers-5EY2AZN7.js"),r=t(e,"extract");if(r)return n(r,"STRUCTURED_FLAGS_USAGE")}if(e.withSource&&!e.resume)return n("extract: --with-source pairs with --resume \u2014 it lands the source and sets the resumed session's pending questions aside");if(e.queued)return n("extract: --queued is gone \u2014 extract sweeps every pending source by default (just run kane-cli context extract)");if(!u(i(process.cwd())))return n("error: no context store here (run `kane-cli context ingest <files>` first)","NO_STORE");if(!e.mode&&!process.stdin.isTTY)return process.stderr.write(`extract: no TTY \u2014 pass an explicit --mode agent|ci|override to run headless
3
+ `),2;let{makeHeadlessIO:o,agentRefusal:c}=await import("./headless-io-66RG5NN5.js");return c(o("ndjson","extract"),t,r)};if(e.apply)return n("extract: --apply is not implemented yet \u2014 coming with the plan\u2192apply workflow (run without --apply, or use --plan to preview)");{let{validateResumeMessage:t}=await import("./headless-io-66RG5NN5.js"),r=t(e,"extract");if(r)return n(r)}{let{gateStructuredFlags:t}=await import("./structured-answers-YAVW65G4.js"),r=t(e,"extract");if(r)return n(r,"STRUCTURED_FLAGS_USAGE")}if(e.withSource&&!e.resume)return n("extract: --with-source pairs with --resume \u2014 it lands the source and sets the resumed session's pending questions aside");if(e.queued)return n("extract: --queued is gone \u2014 extract sweeps every pending source by default (just run kane-cli context extract)");if(!u(i(process.cwd())))return n("error: no context store here (run `kane-cli context ingest <files>` first)","NO_STORE");if(!e.mode&&!process.stdin.isTTY)return process.stderr.write(`extract: no TTY \u2014 pass an explicit --mode agent|ci|override to run headless
4
4
  `),2;let s=e.mode??"interactive";if(s==="interactive"){if(!process.stdin.isTTY||!process.stdout.isTTY)return process.stderr.write(`extract: --mode interactive needs a TTY on stdin and stdout (use --mode agent|ci|override headless)
5
- `),2;let{bindExtractInteractive:t}=await import("./extract-bind-TJ2STXV5.js");return t(e)}let{bindExtractHeadless:a}=await import("./extract-bind-TJ2STXV5.js");return a({...e,mode:s})}export{g as extractCommand};
5
+ `),2;let{bindExtractInteractive:t}=await import("./extract-bind-YYIOEAYR.js");return t(e)}let{bindExtractHeadless:a}=await import("./extract-bind-YYIOEAYR.js");return a({...e,mode:s})}export{g as extractCommand};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c,d}from"./chunk-VRVFPMCR.js";import"./chunk-GFKCTYCA.js";import"./chunk-DUAXZYAD.js";import"./chunk-DBIBROYW.js";import"./chunk-WXHQYYD5.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";export{a as archiveImpact,b as heldArchiveScan,c as reviewCards,d as reviewCounts};
2
+ import{a,b,c,d}from"./chunk-WIAZN7G4.js";import"./chunk-EV64VI66.js";import"./chunk-XMTSHHYQ.js";import"./chunk-DBIBROYW.js";import"./chunk-AKX4VRRR.js";import"./chunk-IAHKTEET.js";import"./chunk-UD7KKHPW.js";import"./chunk-UR6MHSHU.js";export{a as archiveImpact,b as heldArchiveScan,c as reviewCards,d as reviewCounts};