@testmuai/kane-cli 0.7.1 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/dist/ChatSurface-U37VZDCW.js +8 -0
  2. package/dist/{ChromeProfilePicker-4CDSPBWL.js → ChromeProfilePicker-AUU7JF6F.js} +1 -1
  3. package/dist/{CliFeedbackPrompt-TLRVBA4E.js → CliFeedbackPrompt-4W74Y3UF.js} +1 -1
  4. package/dist/{CliUploadProgress-WGGFLUSF.js → CliUploadProgress-6HL7WTEX.js} +1 -1
  5. package/dist/ConfigView-6BSCZP5Y.js +2 -0
  6. package/dist/EvidenceViewOffer-62XHEEGW.js +2 -0
  7. package/dist/FolderPicker-S7U2EN2M.js +2 -0
  8. package/dist/{HelpView-FBCX32U7.js → HelpView-TU7ED43J.js} +1 -1
  9. package/dist/{InfoBox-KK2ICVS4.js → InfoBox-JLTMKVDE.js} +1 -1
  10. package/dist/{LinksBox-KKRANMR3.js → LinksBox-LREUUJDV.js} +1 -1
  11. package/dist/{ProfilesView-DGPXSAQN.js → ProfilesView-W3GX2N2E.js} +1 -1
  12. package/dist/{ProjectPicker-ESQSL4TT.js → ProjectPicker-SYQUJK2J.js} +1 -1
  13. package/dist/{SaveSessionPrompt-AQGP5W6E.js → SaveSessionPrompt-MR5NJMRP.js} +1 -1
  14. package/dist/SingleShotApp-XOKVOM7C.js +2 -0
  15. package/dist/{SummaryBox-BFZJW2KK.js → SummaryBox-UAYSVFB7.js} +1 -1
  16. package/dist/TestMdRunView-7UVSDAF4.js +2 -0
  17. package/dist/{WhoamiView-JABY3I5Q.js → WhoamiView-2YU76ASQ.js} +1 -1
  18. package/dist/adbkit-apkreader-ORZBGCJQ.js +184 -0
  19. package/dist/app-client-OEXESV4U.js +2 -0
  20. package/dist/app-download-AEEFQ63M.js +2 -0
  21. package/dist/{auth-76LVI6B5.js → auth-HET3TBRI.js} +1 -1
  22. package/dist/bind-STKXOUYI.js +12 -0
  23. package/dist/bootstrap-44YKVWWE.js +2 -0
  24. package/dist/bridge-5Z3BIB77.js +2 -0
  25. package/dist/{changelog-PSWPPOAF.js → changelog-7OWRHFHZ.js} +1 -1
  26. package/dist/chat-committer-ZWWCLJFD.js +2 -0
  27. package/dist/chat-controller-T2FAI55V.js +2 -0
  28. package/dist/{chunk-C4G7RVJ6.js → chunk-27U4PLPX.js} +1 -1
  29. package/dist/{chunk-V36ATG7A.js → chunk-2BGUUWNF.js} +2 -2
  30. package/dist/chunk-2KDGIZED.js +4 -0
  31. package/dist/chunk-2UIHS2FH.js +2 -0
  32. package/dist/chunk-2YEHV2CX.js +2 -0
  33. package/dist/{chunk-NRTHYROA.js → chunk-3LJWYRAA.js} +1 -1
  34. package/dist/chunk-3PECJD6S.js +11 -0
  35. package/dist/chunk-3POR47RC.js +8 -0
  36. package/dist/{chunk-KVQOBPAZ.js → chunk-3Q6WAK6P.js} +1 -1
  37. package/dist/chunk-4JOD47QI.js +2 -0
  38. package/dist/chunk-56PAQAX5.js +19 -0
  39. package/dist/{chunk-FCMLIK7P.js → chunk-5DBK6QNS.js} +1 -1
  40. package/dist/chunk-5DT7PIGB.js +5 -0
  41. package/dist/chunk-65ZTD5SJ.js +7 -0
  42. package/dist/chunk-6IA6QMPH.js +2 -0
  43. package/dist/{chunk-5KFS3GAZ.js → chunk-6KPPGMO2.js} +1 -1
  44. package/dist/{chunk-F6ZOJXYU.js → chunk-6O3DDOP2.js} +1 -1
  45. package/dist/chunk-6XX4LEVJ.js +2 -0
  46. package/dist/{chunk-KT6G7AF2.js → chunk-766WGMBU.js} +1 -1
  47. package/dist/chunk-7BZSCUPP.js +10 -0
  48. package/dist/{chunk-UBFKZEX3.js → chunk-7JWKHKFU.js} +2 -2
  49. package/dist/{chunk-PMHJRT3A.js → chunk-7KORP5FF.js} +1 -1
  50. package/dist/chunk-7Q6M6P4X.js +26 -0
  51. package/dist/{chunk-AM5S4KG4.js → chunk-AFPHLUQ5.js} +1 -1
  52. package/dist/chunk-AW2XUHH4.js +2 -0
  53. package/dist/chunk-BKHXPBWN.js +2 -0
  54. package/dist/chunk-BRHNRCEZ.js +3 -0
  55. package/dist/chunk-BRIEBB2U.js +2 -0
  56. package/dist/{chunk-NJPTOKW5.js → chunk-C7HSWZP6.js} +1 -1
  57. package/dist/{chunk-JEUA4UWK.js → chunk-CLGC7VEO.js} +1 -1
  58. package/dist/chunk-CTW2VQKS.js +6 -0
  59. package/dist/{chunk-L4JIMNKW.js → chunk-CUM23TLF.js} +1 -1
  60. package/dist/chunk-DBIBROYW.js +5 -0
  61. package/dist/{chunk-L7VREJTG.js → chunk-DCY6R5DP.js} +1 -1
  62. package/dist/{chunk-X3ICV5M5.js → chunk-DO5HAO3H.js} +1 -1
  63. package/dist/chunk-DPUV6OSP.js +2 -0
  64. package/dist/{chunk-M7WQM4UA.js → chunk-DUAXZYAD.js} +1 -1
  65. package/dist/{chunk-HPMS5KO6.js → chunk-DZGCXKKI.js} +3 -3
  66. package/dist/chunk-EDSZJZFG.js +4 -0
  67. package/dist/{chunk-OIYGGEUL.js → chunk-ELM6MXGJ.js} +1 -1
  68. package/dist/{chunk-R2RGSO4B.js → chunk-EWCAFKLX.js} +1 -1
  69. package/dist/chunk-EYOCNMUM.js +2 -0
  70. package/dist/{chunk-73C4PRYU.js → chunk-FEJXWJ3L.js} +1 -1
  71. package/dist/{chunk-BAL64WSI.js → chunk-FMRSMN34.js} +1 -1
  72. package/dist/chunk-FNH55WSR.js +19 -0
  73. package/dist/chunk-FQLIW3LM.js +2 -0
  74. package/dist/{chunk-JRMDGLLT.js → chunk-G7VQCS4J.js} +1 -1
  75. package/dist/chunk-GCBKDX2J.js +2 -0
  76. package/dist/{chunk-AAONIIQV.js → chunk-GFKCTYCA.js} +1 -1
  77. package/dist/chunk-GKYPNSQP.js +26 -0
  78. package/dist/chunk-GPG3FIN3.js +21 -0
  79. package/dist/chunk-GZPK6FRP.js +7 -0
  80. package/dist/{chunk-NOCIMJSN.js → chunk-HCKH44I2.js} +1 -1
  81. package/dist/chunk-HEAIJCGZ.js +2 -0
  82. package/dist/{chunk-3FN5VJMV.js → chunk-HMYMSRA4.js} +1 -1
  83. package/dist/chunk-I7TIGB7K.js +2 -0
  84. package/dist/chunk-IDX3TOPY.js +6 -0
  85. package/dist/{chunk-CVOGP253.js → chunk-IMR64OCZ.js} +1 -1
  86. package/dist/{chunk-IBNC444G.js → chunk-IOD3HQVW.js} +1 -1
  87. package/dist/chunk-IOFZSQAA.js +2 -0
  88. package/dist/chunk-IP2O264K.js +3 -0
  89. package/dist/{chunk-CSQ46PJ7.js → chunk-JJHG3BWO.js} +1 -1
  90. package/dist/{chunk-5JTUL6XL.js → chunk-JZ26R6UL.js} +1 -1
  91. package/dist/chunk-KBM3XHAM.js +2 -0
  92. package/dist/{chunk-SY3HLQMV.js → chunk-KCCSWEGA.js} +1 -1
  93. package/dist/chunk-KFSUPQAG.js +66 -0
  94. package/dist/chunk-KRKGZ2ZW.js +47 -0
  95. package/dist/chunk-KU6IXFGZ.js +9 -0
  96. package/dist/chunk-L7MXYCD7.js +2 -0
  97. package/dist/chunk-MA34UWKX.js +4 -0
  98. package/dist/chunk-MBF3FP5P.js +5 -0
  99. package/dist/chunk-MSGW4JDG.js +2 -0
  100. package/dist/chunk-MXHHMIO2.js +349 -0
  101. package/dist/chunk-N2P4MI32.js +2 -0
  102. package/dist/{chunk-CDQX6HGJ.js → chunk-NX7TM662.js} +1 -1
  103. package/dist/chunk-OMQCD3KR.js +2 -0
  104. package/dist/{chunk-QROUKGKU.js → chunk-OS4VSIHT.js} +1 -1
  105. package/dist/chunk-OTTGS2TE.js +2 -0
  106. package/dist/chunk-QGKPLOUI.js +2 -0
  107. package/dist/{chunk-JKTFTF24.js → chunk-QRZRSAZH.js} +1 -1
  108. package/dist/{chunk-WJ5HDEVH.js → chunk-QSDH5P7C.js} +1 -1
  109. package/dist/{chunk-322JEJEH.js → chunk-QW6EZC53.js} +1 -1
  110. package/dist/{chunk-2XMJ6YAE.js → chunk-R5T4RLF5.js} +1 -1
  111. package/dist/chunk-R7QAS6LZ.js +4 -0
  112. package/dist/{chunk-LR5XO2KD.js → chunk-RC52N7PC.js} +1 -1
  113. package/dist/{chunk-33QXD75Y.js → chunk-RFR4ZKIC.js} +3 -3
  114. package/dist/{chunk-3LWTUMDG.js → chunk-RLRNLIRS.js} +1 -1
  115. package/dist/{chunk-XDHZMCTA.js → chunk-SDPRO2LE.js} +2 -2
  116. package/dist/chunk-T5Y6MOLM.js +4 -0
  117. package/dist/{chunk-4OPQJ7PE.js → chunk-TFPPEOAK.js} +1 -1
  118. package/dist/chunk-TH47OOBV.js +4 -0
  119. package/dist/{chunk-XVDJ423L.js → chunk-TKGUT425.js} +1 -1
  120. package/dist/{chunk-OHRS3H7Z.js → chunk-TRJUD3XJ.js} +1 -1
  121. package/dist/chunk-TYLYFERW.js +10 -0
  122. package/dist/chunk-TZXXJWHA.js +2 -0
  123. package/dist/chunk-UD7KKHPW.js +5 -0
  124. package/dist/{chunk-APAIWBIH.js → chunk-UDIQOJEL.js} +1 -1
  125. package/dist/chunk-UV462FZR.js +2 -0
  126. package/dist/{chunk-323MLBYA.js → chunk-UXDL4XDL.js} +1 -1
  127. package/dist/chunk-V2R3LCA3.js +12 -0
  128. package/dist/chunk-VAYBKR76.js +4 -0
  129. package/dist/{chunk-AH7ZZIZY.js → chunk-VRVFPMCR.js} +1 -1
  130. package/dist/chunk-W2JFDDIB.js +2 -0
  131. package/dist/chunk-W4B5LOEX.js +4 -0
  132. package/dist/{chunk-36OC3TFE.js → chunk-W5TTF7GB.js} +2 -2
  133. package/dist/chunk-WXHQYYD5.js +2 -0
  134. package/dist/{chunk-6HEGD6H2.js → chunk-XO5ZH3ZR.js} +1 -1
  135. package/dist/chunk-XWKUZJCP.js +2 -0
  136. package/dist/{chunk-2KBD6JZX.js → chunk-YFYCCTSL.js} +1 -1
  137. package/dist/{chunk-ZM5PVRJK.js → chunk-YJELGSKJ.js} +1 -1
  138. package/dist/chunk-YRFMPIU2.js +4 -0
  139. package/dist/{chunk-2XGDWUJ5.js → chunk-ZGBSGZZM.js} +1 -1
  140. package/dist/{chunk-NBKQT7LJ.js → chunk-ZIUAOEUC.js} +1 -1
  141. package/dist/chunk-ZMNJBUAO.js +2 -0
  142. package/dist/chunk-ZVHCQMJ6.js +13 -0
  143. package/dist/committer-SWEWEYNX.js +2 -0
  144. package/dist/{config-R3GF2FZA.js → config-RS47F5SC.js} +1 -1
  145. package/dist/{controller-client-RD2YEMAH.js → controller-client-OB4WD2C4.js} +1 -1
  146. package/dist/{cover-cmd-TXICWHUU.js → cover-cmd-HDZZWJXG.js} +1 -1
  147. package/dist/{credentials-XN4ROCQ3.js → credentials-OH6AVI6N.js} +1 -1
  148. package/dist/deps-resolve-XC5S53DG.js +2 -0
  149. package/dist/descriptor-OEUZZCOK.js +2 -0
  150. package/dist/design-committer-VYT6NU3T.js +2 -0
  151. package/dist/dispatch-SE5GY3Z2.js +2 -0
  152. package/dist/doctor-FSECFZUU.js +2 -0
  153. package/dist/docx-convert-JMUMT5C4.js +2 -0
  154. package/dist/{dossier-QZV74XOS.js → dossier-KTLTGT2X.js} +1 -1
  155. package/dist/evidence-OYPHZUKI.js +2 -0
  156. package/dist/evolve-cmd-BCPNXAMV.js +2 -0
  157. package/dist/exec-P2IKJRRR.js +2 -0
  158. package/dist/exit-manager-3FVBTNYR.js +2 -0
  159. package/dist/explain-UAAQWHYR.js +2 -0
  160. package/dist/{explain-cmd-X7JZLSZZ.js → explain-cmd-3GEKR7O5.js} +1 -1
  161. package/dist/{explain-cmd-RZW6QJYM.js → explain-cmd-EX24XKD6.js} +1 -1
  162. package/dist/extract-bind-LLEASZAK.js +10 -0
  163. package/dist/extract-cmd-UZMEZMGP.js +5 -0
  164. package/dist/feeder-C3TOJPKK.js +2 -0
  165. package/dist/{gaps-cmd-BWCRLLBK.js → gaps-cmd-IVXFPFAQ.js} +1 -1
  166. package/dist/{gate-YHBPWEM5.js → gate-54BRAE7N.js} +1 -1
  167. package/dist/{generate-headless-BSTDLZZY.js → generate-headless-D3SVQ2AI.js} +3 -3
  168. package/dist/{headless-io-BL3TEAX5.js → headless-io-66RG5NN5.js} +1 -1
  169. package/dist/host-7GZPBA74.js +2 -0
  170. package/dist/identity-ADZ4PAJF.js +2 -0
  171. package/dist/index.js +85 -69
  172. package/dist/ingest-EX72IEQT.js +2 -0
  173. package/dist/ingest-cmd-EAE7N5RC.js +2 -0
  174. package/dist/{interactive-bind-43HGDF5K.js → interactive-bind-ORMN2REX.js} +7 -6
  175. package/dist/{lifecycle-cmd-D6TVTYRK.js → lifecycle-cmd-O2324GN6.js} +1 -1
  176. package/dist/{list-cmd-XCAV2FKA.js → list-cmd-N4KMA34H.js} +1 -1
  177. package/dist/list-commands-MRXL5HGS.js +2 -0
  178. package/dist/locks-cmd-CSVSWY2Y.js +2 -0
  179. package/dist/logical-ids-TEBCQJGO.js +2 -0
  180. package/dist/login-flow-QJQM3RHT.js +2 -0
  181. package/dist/maintenance-cmd-6XSVO6FO.js +2 -0
  182. package/dist/mobile-prompts-TOX35ER6.js +2 -0
  183. package/dist/pdf-convert-OZIRUADA.js +2 -0
  184. package/dist/persist-recorded-session-TLDQ5HKP.js +3 -0
  185. package/dist/phase-seed-VFHIH6FL.js +2 -0
  186. package/dist/pipeline-UOM4LNAI.js +2 -0
  187. package/dist/prepare-target-QYWIJIVQ.js +2 -0
  188. package/dist/readmodel-XOYGGQ3S.js +2 -0
  189. package/dist/reconcile-cmd-3H34KVVD.js +2 -0
  190. package/dist/reconcile-deps-XIH75ZLY.js +4 -0
  191. package/dist/reconcile-engine-UKWPG2LV.js +2 -0
  192. package/dist/{recording-banner-TALO7PUR.js → recording-banner-4M7XHVGI.js} +1 -1
  193. package/dist/records-IOZTZUZV.js +2 -0
  194. package/dist/registry-PYOTKZYZ.js +2 -0
  195. package/dist/{require-project-folder-R347LFDQ.js → require-project-folder-4UPQNEBJ.js} +1 -1
  196. package/dist/resolve-run-intent-X72V3KJA.js +7 -0
  197. package/dist/{resolver-IDCGRPFJ.js → resolver-UBOZLFFE.js} +1 -1
  198. package/dist/revert-NQ7GEVSE.js +2 -0
  199. package/dist/review-cmd-DQRKQUMG.js +4 -0
  200. package/dist/run-2COODVX2.js +2 -0
  201. package/dist/run-URPGHOQM.js +2 -0
  202. package/dist/run-channel-RGH4WIQX.js +2 -0
  203. package/dist/{run-test-md-DFNIGYB7.js → run-test-md-76ZPKXO6.js} +3 -3
  204. package/dist/session-target-UWROGOCY.js +2 -0
  205. package/dist/sessions-GIEXOCE4.js +2 -0
  206. package/dist/{sessions-cmd-AQWLL5ZN.js → sessions-cmd-ZZIZN2VB.js} +4 -4
  207. package/dist/{skill-installer-ANXTCXQV.js → skill-installer-CIS6GAYF.js} +1 -1
  208. package/dist/spawner-J67QR4QP.js +2 -0
  209. package/dist/structured-answers-5EY2AZN7.js +5 -0
  210. package/dist/tcg-generate-BDTRKY2A.js +2 -0
  211. package/dist/testmd-actions-77ELR5UU.js +2 -0
  212. package/dist/token-refresh-4BPAPXKK.js +2 -0
  213. package/dist/types-6E2HTDKJ.js +2 -0
  214. package/dist/{validate-basic-O2DP2XJL.js → validate-basic-2GVSQ2R5.js} +1 -1
  215. package/dist/verdicts-TRSTJLCL.js +2 -0
  216. package/dist/{version-check-RNR3JCQ5.js → version-check-O6PYTI4T.js} +1 -1
  217. package/dist/{view-cmd-YSEGA5PI.js → view-cmd-KPJTP4DI.js} +1 -1
  218. package/dist/walk-session-CHJXHZMO.js +2 -0
  219. package/dist/with-telemetry-CQCWLVOC.js +2 -0
  220. package/package.json +12 -6
  221. package/dist/ChatSurface-D66CACLX.js +0 -8
  222. package/dist/ConfigView-DBANTBXC.js +0 -2
  223. package/dist/EvidenceViewOffer-DNCQ3A6R.js +0 -2
  224. package/dist/FolderPicker-W7RCIFEL.js +0 -2
  225. package/dist/SingleShotApp-SMCAIKCE.js +0 -2
  226. package/dist/TestMdRunView-FMKZJ3A3.js +0 -2
  227. package/dist/bind-AACBTSAA.js +0 -12
  228. package/dist/bootstrap-CNOZ5VRB.js +0 -2
  229. package/dist/bridge-T4HL4TG7.js +0 -2
  230. package/dist/chat-committer-4BQBOKI4.js +0 -2
  231. package/dist/chat-controller-NNTMKEPG.js +0 -2
  232. package/dist/chunk-2SREGETM.js +0 -4
  233. package/dist/chunk-3STZLM5J.js +0 -4
  234. package/dist/chunk-5YPBPZUR.js +0 -2
  235. package/dist/chunk-6UJDOAYR.js +0 -26
  236. package/dist/chunk-BQHKBOSF.js +0 -11
  237. package/dist/chunk-DQ54MH7F.js +0 -13
  238. package/dist/chunk-DXV6MBTD.js +0 -8
  239. package/dist/chunk-EV3EHXEI.js +0 -4
  240. package/dist/chunk-F7WKDMX7.js +0 -47
  241. package/dist/chunk-FPFOW6BS.js +0 -2
  242. package/dist/chunk-GVIPTX6T.js +0 -6
  243. package/dist/chunk-GW5DWAXY.js +0 -2
  244. package/dist/chunk-HJERKSBK.js +0 -349
  245. package/dist/chunk-IQDWBTRJ.js +0 -3
  246. package/dist/chunk-IXVOXJP6.js +0 -6
  247. package/dist/chunk-KNDSQ4PS.js +0 -2
  248. package/dist/chunk-KRXSXQBU.js +0 -12
  249. package/dist/chunk-LQZ2BU7Q.js +0 -2
  250. package/dist/chunk-NAC7SFBE.js +0 -5
  251. package/dist/chunk-NAE7MBR2.js +0 -23
  252. package/dist/chunk-NRC2G4Y5.js +0 -5
  253. package/dist/chunk-O56PUUNL.js +0 -9
  254. package/dist/chunk-QM4S2APK.js +0 -2
  255. package/dist/chunk-RKWJG3WW.js +0 -19
  256. package/dist/chunk-RNSSM2BK.js +0 -11
  257. package/dist/chunk-SE6WNCYU.js +0 -4
  258. package/dist/chunk-SRDHPKJT.js +0 -2
  259. package/dist/chunk-SWESH2J7.js +0 -10
  260. package/dist/chunk-T63R6QT4.js +0 -4
  261. package/dist/chunk-UI7KULSI.js +0 -7
  262. package/dist/chunk-UPPEOQJQ.js +0 -3
  263. package/dist/chunk-URQUQWGW.js +0 -62
  264. package/dist/chunk-UX2B7L6K.js +0 -2
  265. package/dist/chunk-VOHQA2SP.js +0 -2
  266. package/dist/chunk-W5DOU2DV.js +0 -2
  267. package/dist/chunk-W6VD2XFO.js +0 -19
  268. package/dist/chunk-WAOCHXJ5.js +0 -2
  269. package/dist/chunk-WWNSD6FA.js +0 -6
  270. package/dist/chunk-ZLCZDAEX.js +0 -6
  271. package/dist/committer-2EJPVVCQ.js +0 -2
  272. package/dist/descriptor-KXDJ4XYD.js +0 -2
  273. package/dist/design-committer-BQUWD6AC.js +0 -2
  274. package/dist/docx-convert-ZBVQO2LG.js +0 -2
  275. package/dist/evidence-V23FPVXQ.js +0 -2
  276. package/dist/evolve-cmd-PZCPXDMR.js +0 -2
  277. package/dist/exit-manager-HNFATGSM.js +0 -2
  278. package/dist/explain-UE4IACQH.js +0 -2
  279. package/dist/extract-bind-BFY7IRL4.js +0 -10
  280. package/dist/extract-cmd-U3MGK2LP.js +0 -6
  281. package/dist/feeder-XGTFV7TZ.js +0 -2
  282. package/dist/ingest-AL6CABJT.js +0 -2
  283. package/dist/ingest-cmd-O6OWWZT4.js +0 -2
  284. package/dist/list-commands-747UTUSS.js +0 -2
  285. package/dist/locks-cmd-QAULI5LV.js +0 -2
  286. package/dist/logical-ids-4G4FAHNJ.js +0 -2
  287. package/dist/login-flow-CV76ENHV.js +0 -2
  288. package/dist/maintenance-cmd-ZRB4NTGG.js +0 -2
  289. package/dist/pdf-convert-S7VYE6AV.js +0 -2
  290. package/dist/persist-recorded-session-MDPWWUA7.js +0 -3
  291. package/dist/phase-seed-52LRE3LH.js +0 -2
  292. package/dist/pipeline-LM5JAK7F.js +0 -2
  293. package/dist/readmodel-X7L7W2BA.js +0 -2
  294. package/dist/reconcile-cmd-DGCSDML6.js +0 -2
  295. package/dist/records-5SVUXJBW.js +0 -2
  296. package/dist/revert-DXXYXJGN.js +0 -2
  297. package/dist/review-cmd-2QF5HTI7.js +0 -4
  298. package/dist/run-52UIBPXD.js +0 -2
  299. package/dist/run-VRVH4VO3.js +0 -2
  300. package/dist/sessions-BLXZVK5U.js +0 -2
  301. package/dist/spawner-AH5FTUYU.js +0 -2
  302. package/dist/structured-answers-QHFGZPSS.js +0 -5
  303. package/dist/tcg-generate-WKCBBKI5.js +0 -2
  304. package/dist/testmd-actions-RPYG6TJG.js +0 -2
  305. package/dist/token-refresh-NIDUOTRM.js +0 -2
  306. package/dist/verdicts-TJH3O5UW.js +0 -2
  307. package/dist/walk-session-HXW4OSA2.js +0 -2
  308. package/dist/with-telemetry-PNP6CAVM.js +0 -2
@@ -1,62 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as Ut,b as sn,c as ot,d as it,e as on,f as jt,g as cn,h as dn}from"./chunk-OIYGGEUL.js";import{a as Ft,b as Nt,c as mn}from"./chunk-2XMJ6YAE.js";import{a as je,b as an}from"./chunk-C5UNZ6ZY.js";import{c as un}from"./chunk-NAC7SFBE.js";import{c as Ot,d as nn}from"./chunk-33QXD75Y.js";import{a as Ue,b as ne,e as Re,f as Lt,k as en,p as ye,q as Dt,t as rn}from"./chunk-RKWJG3WW.js";import{d as tn}from"./chunk-2YQ6TW77.js";import{c as ln}from"./chunk-S3DAAAE5.js";import{B as Vr,C as Kr,D as Hr,F as qr,G as zr,I as Yr,J as Wr,K as Qr,X as Jr,aa as Zr,ba as Xr,j as st,x as Br}from"./chunk-DQ54MH7F.js";import{a as Gr}from"./chunk-CH273NAE.js";import{b as _e}from"./chunk-3FN5VJMV.js";import{a as Mr,b as nt,c as Tt}from"./chunk-IXVOXJP6.js";import{a as rt,c as $r,d as Pt}from"./chunk-UI7KULSI.js";import{a as Ie}from"./chunk-WAOCHXJ5.js";import{i as Dr,k as xt,l as Or,m as tt,n as Ur,o as jr}from"./chunk-W6VD2XFO.js";import{g as Fr,h as Nr}from"./chunk-HPMS5KO6.js";import{a as et}from"./chunk-2WVKOZ6W.js";import{a as Xe,b as Lr}from"./chunk-NLCCBXXV.js";import{a as q}from"./chunk-RZ4F3BHX.js";import{a as ie}from"./chunk-JRMDGLLT.js";import{a as Pr}from"./chunk-E47GFYXA.js";import{a as Je,c as Ct,j as Tr,k as Ze,l as Et,m as At}from"./chunk-C4G7RVJ6.js";import{join as de,basename as fs}from"path";import{existsSync as So,readFileSync as gs}from"fs";function fn(e,t){if(process.env.KANE_REPLAY_TRACE==="1")for(let r=0;r<e.steps.length;r++){let n=e.steps[r],s=t[r],o=" ".repeat(n.trace.length-1),i=`step ${n.flatIndex}`;s.kind==="replay"?process.stderr.write(`[replay-trace] ${o}${i}: REPLAY (would skip; v1 always authors)
3
- `):process.stderr.write(`[replay-trace] ${o}${i}: AUTHOR (${s.reason})
4
- `)}}function ke(e){process.env.KANE_REPLAY_TRACE==="1"&&process.stderr.write(e)}function pn(e,t){let r=e===0?"(none)":`0..${e-1}`,n=e>=t?"(none)":`${e}..${t-1}`;ke(`[replay-trace] phase: replay ${r}, author ${n}
5
- `)}function gn(e,t){ke(`[replay-trace] step ${e}: REPLAY ${t==="ok"?"OK":"FAILED"}
6
- `)}function hn(e,t,r){ke(`[replay-trace] shrink ${e}/${t} \u2192 new boundary ${r}
7
- `)}function bn(e,t){ke(`[replay-trace] complete-reauthor (${e} shrinks exhausted of ${t})
8
- `)}function $t(){ke(`[replay-trace] force-author (--author) \u2014 walker bypassed
9
- `)}function yn(e){ke(`[replay-trace] cancelled at step ${e}
10
- `)}import{join as vn}from"path";function Mt(e){let t=on(e.decision),r={objective:e.step.objective,model:"v16-alpha",width:e.windowSize.width,height:e.windowSize.height,session_id:e.sessionId,run_index:e.runIndex,mode:"replay",replay:{recording_path:t[0],...t.length>1?{recording_paths:t}:{},step_label:e.step.objective,...e.investigationAsync?{investigation:"async"}:{}},screenshot_dir:e.evidence?vn(e.sessionDir,"scratch",String(e.runIndex)):vn(e.sessionDir,"runs",String(e.runIndex)),run_id:"run",test_id:"test"};return e.forceNavigateUrl&&(r.url=e.forceNavigateUrl),e.chrome.wsEndpoint?r.ws_endpoint=e.chrome.wsEndpoint:e.chrome.cdpEndpoint&&(r.cdp_endpoint=e.chrome.cdpEndpoint),e.auth.basicAuth?(r.username=e.auth.basicAuth.username,r.access_key=e.auth.basicAuth.access_key):e.auth.token&&(r.auth={type:"bearer",token:e.auth.token}),e.auth.resolvedCreds?.org_id&&(r.org_id=String(e.auth.resolvedCreds.org_id)),e.variables&&Object.keys(e.variables).length>0&&(r.variables=e.variables),e.sessionContext&&(r.session_context=e.sessionContext),e.evidence&&(r.evidence=st(e.evidence.packTestDir,e.evidence.ordinalOffset)),r}async function Sn(e){let t=e.forceAuthor?0:it(e.decisions),r=0,n=!1;for(;;){let s=e.session.snapshot(),o=e.accumulator.snapshot(),i=await e.runReplayPhase(t);if(i.cancelled)return n=!0,yn(i.failedAt??0),{authorBoundary:t,cancelledInPhase:n,shrinkCount:r};if(i.failedAt===null)return{authorBoundary:t,cancelledInPhase:n,shrinkCount:r};let f=an({failedAt:i.failedAt,shrinkCount:r,hasRetry:e.hasRetry,maxShrinks:e.maxShrinks});if(f.kind==="fail")return{authorBoundary:-1,cancelledInPhase:n,shrinkCount:r};if(e.acquireLockIfNeeded&&!await e.acquireLockIfNeeded())return{authorBoundary:-1,cancelledInPhase:n,shrinkCount:r};if(e.session.rollback(s),e.accumulator.rollback(o),f.kind==="complete-reauthor")return bn(r+1,e.maxShrinks),{authorBoundary:0,cancelledInPhase:n,shrinkCount:r};r++,hn(r,je.maxShrinks,f.newAuthorBoundary),t=f.newAuthorBoundary}}var xs=15e3,Bt=3,wn=[500,1e3];async function Vt(e){if(process.env.KANE_LOCK_CONFLICT_SIMULATE==="1")return{ok:!1,reason:"concurrent",httpStatus:409,message:"simulated contention (KANE_LOCK_CONFLICT_SIMULATE=1)"};let t=`${e.baseUrl}/test/${encodeURIComponent(e.testId)}/playground`,r=await at(t,{from_commit_id:e.fromCommitId,new_commit_id:e.newCommitId},e.auth);return r.ok?{ok:!0,sessionExpiresAt:B(r.body,"session_expires_at")??""}:{ok:!1,...Ps(r)}}function Ps(e){let t=B(e.body,"error")??B(e.body,"code")??"",r=B(e.body,"message")??B(e.body,"detail")??e.text??`HTTP ${e.status}`,n;return e.status===0?n="network":e.status===401||e.status===403?n="auth":e.status===409&&t==="PlaygroundBaseCommitMismatch"?n="base_mismatch":e.status===409?n="concurrent":e.status===422?n="disabled":e.status===400&&/no committed/i.test(r)?n="no_commits":e.status===400?n="missing_field":e.status>=500||e.status===408||e.status===429?n="network":n="other",{reason:n,httpStatus:e.status,message:r}}async function In(e){let t=`${e.baseUrl}/test/${encodeURIComponent(e.testId)}/playground/reserve`,r=await at(t,void 0,e.auth);return r.ok?{ok:!0,sessionExpiresAt:B(r.body,"session_expires_at")??""}:{ok:!1,expired:r.status===404,httpStatus:r.status,message:B(r.body,"message")??B(r.body,"detail")??r.text??`HTTP ${r.status}`}}async function Kt(e){let t=`${e.baseUrl}/test/${encodeURIComponent(e.testId)}/commit`,r={commit_id:e.body.commitId,from_commit_id:e.body.fromCommitId,commit_message:e.body.commitMessage,total_steps:e.body.totalSteps};e.body.timeTaken!==void 0&&(r.time_taken=e.body.timeTaken),e.body.objectives!==void 0&&(r.objectives=e.body.objectives);let n=await at(t,r,e.auth);return n.ok?{ok:!0,testId:B(n.body,"test_id")??e.testId,testcaseId:B(n.body,"testcase_id")??"",projectId:B(n.body,"project_id"),isTestCaseDeleted:typeof n.body?.is_test_case_deleted=="boolean"?n.body.is_test_case_deleted:void 0}:{ok:!1,...Ts(n)}}function Ts(e){let t=B(e.body,"error")??B(e.body,"code")??"",r=B(e.body,"message")??B(e.body,"detail")??e.text??`HTTP ${e.status}`,n;return e.status===0?n="network":e.status===401||e.status===403?n="auth":e.status===409&&t==="PlaygroundBaseCommitMismatch"?n="base_mismatch":e.status===409&&t==="PlaygroundCommitLockMismatch"?n="lock_mismatch":e.status===409?n="expired":e.status===422?n="not_found":e.status>=500||e.status===408||e.status===429?n="network":n="other",{reason:n,httpStatus:e.status,message:r}}async function Fe(e){let t=`${e.baseUrl}/test/${encodeURIComponent(e.testId)}/commit`,r={discard:!0,commit_id:e.body.commitId,from_commit_id:e.body.fromCommitId,commit_message:"(discarded)",total_steps:1},n=await at(t,r,e.auth);return n.ok?{ok:!0}:{ok:!1,reason:B(n.body,"error")??"other",httpStatus:n.status,message:B(n.body,"message")??B(n.body,"detail")??n.text??`HTTP ${n.status}`}}async function at(e,t,r){let n=null;for(let s=1;s<=Bt;s++){let o=new AbortController,i=setTimeout(()=>o.abort(),xs);try{let f=await q(e,{method:"POST",headers:{Authorization:Xe(r.username,r.accessKey),"Content-Type":"application/json",Accept:"application/json"},...t!==void 0?{body:JSON.stringify(t)}:{},signal:o.signal});clearTimeout(i);let l=await f.text(),c=null;if(l)try{c=JSON.parse(l)}catch{}let y=f.status>=500||f.status===408||f.status===429;if(f.ok||!y)return{ok:f.ok,status:f.status,body:c,text:l};if(s<Bt){await _n(wn[s-1]??1e3);continue}return{ok:!1,status:f.status,body:c,text:l}}catch(f){if(clearTimeout(i),n=f,s<Bt){await _n(wn[s-1]??1e3);continue}}}return{ok:!1,status:0,body:null,text:n?.message??"exhausted retries"}}function _n(e){return new Promise(t=>setTimeout(t,e))}function B(e,t){if(typeof e!="object"||e===null)return;let r=e[t];return typeof r=="string"?r:void 0}var Ls=60*1e3,Rn="lock-heartbeat",pe=new Map,Ne=null,Ds={register:(e,t)=>tt(e,t),deregister:e=>Ur(e),cleanup:(e,t)=>jr(e,t),remoteLogger:null};function kn(e){if(e!==void 0){let t=pe.get(e);t!==void 0&&(clearInterval(t),pe.delete(e));return}for(let t of pe.values())clearInterval(t);pe.clear()}function lt(e){if(pe.has(e.testId))return;let t=e.lifecycle??Ds,r=setInterval(async()=>{let n=await In({baseUrl:e.baseUrl,testId:e.testId,auth:e.auth});if(!n.ok){let s=n.expired?"session expired":n.message;process.stderr.write(`[lock] heartbeat failed (${e.testId}): ${s}; continuing run
11
- `)}},Ls);pe.set(e.testId,r),Ne===null&&(Ne=t,t.register(Rn,()=>kn()))}function ve(e){pe.size!==0&&(kn(e),pe.size===0&&Ne!==null&&(Ne.deregister(Rn),Ne=null))}import{readFileSync as Cn,readdirSync as En,existsSync as Se,promises as An}from"fs";import{join as ae}from"path";async function Os(e,t){let r=ae(e,"steps",`${t.ordinal}-${t.id}`),n;try{n=await An.readFile(ae(r,"screenshot.png"))}catch{return null}let s=null,o=[];try{let i=JSON.parse(await An.readFile(ae(r,"step.json"),"utf8"));s=i.action_id??null,Array.isArray(i.analyze_action_ids)&&(o=i.analyze_action_ids.filter(f=>typeof f=="string"))}catch{}return{png:n,actionId:s,analyzeActionIds:o}}function Yo(){let e=[];return{track:t=>{e.push(t.catch(()=>{}))},settle:async()=>{await Promise.all(e)}}}async function xn(e,t,r,n){try{let s=await Os(e,t);if(!s){n("warn","SCREENSHOT_SKIP","Pack step folder or screenshot not found",{ordinal:t.ordinal,id:t.id,reason:"pack_step_not_found"});return}let o=new Set;s.actionId&&o.add(s.actionId);for(let i of s.analyzeActionIds)o.add(i);if(o.size===0){n("warn","SCREENSHOT_SKIP","No action_id in step.json",{ordinal:t.ordinal,id:t.id,reason:"no_action_id"});return}for(let i of o)r.enqueue(i,s.png);n("info","SCREENSHOT_ENQUEUED","Screenshot enqueued",{ordinal:t.ordinal,id:t.id,action_id:s.actionId,action_ids:[...o],size:s.png.length})}catch(s){n("error","SCREENSHOT_DISPATCH_ERROR","Screenshot dispatch error",{ordinal:t.ordinal,id:t.id,error:s instanceof Error?s.message:String(s)})}}function Pn(e,t,r,n,s,o){try{let i=ae(e,"runs",String(t),"run-test");if(!Se(i)){s("warn","SCREENSHOT_SKIP","Runs dir not found",{step_index:r,reason:"runsDir_not_found",path:i});return}let f=i;if(o){let k=ae(i,`child-${o}`);if(!Se(k)){s("warn","SCREENSHOT_SKIP","Child dir not found",{step_index:r,child_id:o,reason:"child_dir_not_found",path:k});return}let E=En(k).filter(a=>Se(ae(k,a,"screenshots")));if(E.length===0){s("warn","SCREENSHOT_SKIP","No screenshots dir under child",{step_index:r,child_id:o,reason:"no_child_screenshots_dir"});return}f=ae(k,E[0])}else if(!Se(ae(i,"screenshots"))){let k=En(i).filter(E=>Se(ae(i,E,"screenshots")));if(k.length===0){s("warn","SCREENSHOT_SKIP","No screenshots dir found",{step_index:r,reason:"no_screenshots_dir"});return}f=ae(i,k[0])}let l=ae(f,"screenshots",`step_${String(r).padStart(3,"0")}.png`);if(!Se(l)){s("warn","SCREENSHOT_SKIP","Screenshot not found",{step_index:r,child_id:o,reason:"screenshot_not_found",path:l});return}let c=ae(i,"actions.ndjson");if(!Se(c)){s("warn","SCREENSHOT_SKIP","NDJSON not found",{step_index:r,reason:"ndjson_not_found"});return}let y=Cn(c,"utf-8").trim().split(`
12
- `),w=y[y.length-1];if(!w){s("warn","SCREENSHOT_SKIP","NDJSON empty",{step_index:r,reason:"ndjson_empty"});return}let R=JSON.parse(w).action_id;if(!R){s("warn","SCREENSHOT_SKIP","No action_id in NDJSON",{step_index:r,reason:"no_action_id"});return}let x=Cn(l);n.enqueue(R,x),s("info","SCREENSHOT_ENQUEUED","Screenshot enqueued",{step_index:r,child_id:o,action_id:R,size:x.length})}catch(i){s("error","SCREENSHOT_DISPATCH_ERROR","Screenshot dispatch error",{step_index:r,error:i instanceof Error?i.message:String(i)})}}import{dirname as Us,join as js}from"path";function Tn(e,t,r){let n=e.total_runs??1,s=e.run_dir,o,i;if(n>1&&s){let f=Us(s);o=Array.from({length:n},(l,c)=>js(f,String(t+c))),r&&r.length===n&&(i=r)}return{allRunDirs:o,flowObjectives:i}}function Ln(e,t,r,n){return{index:r,objective:t,summary:e.summary,oneLiner:e.one_liner,status:e.status,resultCode:e.result_code,reasonCode:e.reason_code,perFlowMetadata:e.per_flow_metadata,context:e.context??{memory:{},variables:{},pointer:""},run_dir:e.run_dir,run_dirs:n.allRunDirs,flow_objectives:n.flowObjectives}}var ct=class{constructor(t){this.resolved=t;this.outcomes=t.rootSteps.map(r=>({rootStepIndex:r.index,status:"skipped"}))}outcomes;skipRoot=null;overallHalted=!1;shouldRunFlatStep(t){if(this.overallHalted)return!1;let r=t.trace[0].stepIndex;return!(this.skipRoot!==null&&r===this.skipRoot)}recordStep(t,r){let n=t.trace[0].stepIndex,s=this.outcomes.find(l=>l.rootStepIndex===n),o=this.resolved.rootSteps.find(l=>l.index===n),i=o.body.kind!=="objective";return i&&(s.refKind="import",s.refLabel=o.body.path,s.inlinedCount=(s.inlinedCount??0)+1,s.duration_s=(s.duration_s??0)+r.duration_s),r.status==="passed"?(i?s.status!=="failed"&&(s.status="passed"):(s.status="passed",s.duration_s=r.duration_s),{continueOverall:!0}):t.optional?(s.softFailures=s.softFailures??[],s.softFailures.push({subStepIndex:t.trace[t.trace.length-1].stepIndex,reason:r.reason}),{continueOverall:!0}):(s.status="failed",s.duration_s=i?s.duration_s:r.duration_s,s.failedSubStepIndex=i?t.trace.slice(1).map(l=>l.stepIndex):void 0,s.reason=r.reason,this.skipRoot=n,o.optional??!1?(s.softFailed=!0,{continueOverall:!0}):(this.overallHalted=!0,{continueOverall:!1}))}snapshotOutcomes(){return[...this.outcomes]}snapshot(){return{outcomes:this.outcomes.map(t=>({...t,softFailures:t.softFailures?[...t.softFailures]:void 0})),skipRoot:this.skipRoot,overallHalted:this.overallHalted}}rollback(t){this.outcomes=t.outcomes.map(r=>({...r,softFailures:r.softFailures?[...r.softFailures]:void 0})),this.skipRoot=t.skipRoot,this.overallHalted=t.overallHalted}finalize(){let t=this.outcomes.some(n=>n.status==="failed"&&!n.softFailed)?"failed":"passed",r=this.outcomes.reduce((n,s)=>n+(s.duration_s??0),0);return{overallStatus:t,outcomes:this.outcomes,totalDurationS:r}}};function Ht(e){if(!e)return null;let t=e.trim();return t?/^https?:\/\//i.test(t)?t:`https://${t}`:null}function Dn(e){return Ht(e.flag)??Ht(e.frontmatter)??(e.configDefault&&e.configDefault!==Ze?Ht(e.configDefault):null)}function On(e){return e.resolvedUrl!==null?!1:!((!!e.local||!!e.allowMissingUrl)&&!e.isTTY)}import{spawn as Fs}from"child_process";async function Un(e,t,r=100){let n=`${e.replace(/\/+$/,"")}/json/version`,s=await q(n);if(!s.ok)throw new Error(`CDP /json/version returned ${s.status}`);let o=await s.json();if(!o.webSocketDebuggerUrl)throw new Error("CDP /json/version missing webSocketDebuggerUrl");let i=new Pr(o.webSocketDebuggerUrl);await new Promise((m,_)=>{i.once("open",m),i.once("error",_)});let f=1,l=new Map;i.on("message",m=>{let _;try{_=JSON.parse(m.toString())}catch{return}if(_.id==null)return;let L=l.get(_.id);L&&(l.delete(_.id),_.error?L.reject(new Error(_.error.message)):L.resolve(_.result))});function c(m,_){let L=f++;return new Promise((ue,Z)=>{l.set(L,{resolve:M=>ue(M),reject:Z});let se={id:L,method:m};_&&(se.params=_),i.send(JSON.stringify(se))})}let w=(await c("Target.getTargets")).targetInfos.find(m=>m.type==="page");if(!w)throw i.close(),new Error("CDP: no page target found");let R=(await c("Browser.getWindowForTarget",{targetId:w.targetId})).windowId,x="",k=!1,E=null,a=!1;i.on("close",()=>{a=!0}),i.on("error",()=>{a=!0});async function z(){if(!k){if(a){k=!0;return}try{let _=(await c("Browser.getWindowBounds",{windowId:R})).bounds,L=`${_.left}:${_.top}:${_.width}:${_.height}`;L!==x&&(x=L,t({left:_.left,top:_.top,width:_.width,height:_.height}))}catch{}k||(E=setTimeout(z,r))}}return z(),{stop(){if(!k){k=!0,E&&clearTimeout(E);try{i.close()}catch{}}}}}var Ns=new Set(["1","true","yes"]);function jn(e){if(e?.headless)return null;let t=process.env.KANE_CLI_DISABLE_MARKER;if(t!=null&&Ns.has(t.toLowerCase()))return null;let r=rt();if(!r)return null;let n=[...r.args,"overlay"];e?.text&&n.push(e.text);let s;try{s=Fs(r.cmd,n,{cwd:r.cwd,stdio:["pipe","ignore","ignore"],detached:!1,windowsHide:!0})}catch{return null}s.stdin?.on("error",()=>{});let o=!1;s.on("exit",()=>{o=!0}),s.on("error",()=>{o=!0});function i(c){if(!(o||!s.stdin||s.stdin.destroyed))try{s.stdin.write(JSON.stringify(c)+`
13
- `)}catch{}}e?.chromePid&&e.chromePid>0&&i({type:"chrome_pid",pid:e.chromePid});let f=null;e?.cdpEndpoint&&Un(e.cdpEndpoint,c=>i({type:"bounds",...c})).then(c=>{f=c.stop}).catch(()=>{});let l=!1;return{setRunActive(c){l||i({type:"run_active",active:c})},setStepText(c){if(l)return;let y=c.trim();y&&i({type:"step_text",text:y})},setStepComplete(){l||i({type:"step_complete"})},kill(){if(!l){l=!0,f?.();try{s.stdin?.end()}catch{}try{s.kill("SIGTERM")}catch{}}}}}function Fn(e,t,r){return`${e}/projects/${t}/test-cases/${r}`}function dt(e,t,r,n){return`${Fn(e,t,r)}/dashboard/share/${n}?type=summary&agentView=true&fqdn=summary-page`}function Nn(e,t,r,n){if(!(!t||!r||!n))return dt(e,t,r,n)}function $n(e,t,r){return`${Fn(e,t,r)}/dashboard?type=summary&agentView=true&fqdn=summary-page`}import{mkdtempSync as Zs,rmSync as Xs}from"fs";import{join as eo}from"path";import{tmpdir as to}from"os";import{spawn as Vn,spawnSync as $s}from"child_process";import{existsSync as qt}from"fs";import{createConnection as Ms}from"net";import{homedir as $e,platform as Ve}from"os";import{join as Me}from"path";var Bs=new Set(["1","true","yes"]),ut=class extends Error{constructor(t){super(t),this.name="ChromeNotFoundError"}};function bi(e){return e instanceof ut?e.message:`Chrome failed: ${e instanceof Error?e.message:String(e)}`}var mt={darwin:["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",Me($e(),"Applications/Google Chrome.app/Contents/MacOS/Google Chrome"),"/Applications/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing",Me($e(),"Applications/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing"),"/Applications/Chromium.app/Contents/MacOS/Chromium"],linux:["/usr/bin/google-chrome","/usr/bin/google-chrome-stable","/usr/bin/google-chrome-for-testing","/usr/local/bin/google-chrome-for-testing",Me($e(),"chrome-for-testing/chrome-linux64/chrome"),"/usr/bin/chromium","/usr/bin/chromium-browser","/snap/bin/chromium"],win32:["C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe",Me($e(),"AppData\\Local\\Google\\Chrome\\Application\\chrome.exe"),"C:\\chrome-for-testing\\chrome-win64\\chrome.exe",Me($e(),"AppData\\Local\\chrome-for-testing\\chrome-win64\\chrome.exe")]};function Vs(){if(process.env.KANE_CLI_CHROME_PATH)return process.env.KANE_CLI_CHROME_PATH;let e=Ve(),t=mt[e]??mt.linux;for(let r of t)if(qt(r))return r;return e==="win32"?"chrome.exe":"google-chrome"}function Ks(){if(process.env.KANE_CLI_CHROME_PATH)return qt(process.env.KANE_CLI_CHROME_PATH);let e=Ve();if((mt[e]??mt.linux).some(s=>qt(s)))return!0;let r=e==="win32"?"chrome.exe":"google-chrome",n=e==="win32"?"where":"which";try{return $s(n,[r],{stdio:"ignore"}).status===0}catch{return!1}}function Hs(){let e=Ve();return e==="darwin"?["Google Chrome is required but was not found at any standard path.","","Install via Homebrew (recommended):"," brew install --cask google-chrome","","Or download:"," https://www.google.com/chrome/","","Then re-run your command. Set KANE_CLI_CHROME_PATH=/path/to/chrome","to point at a non-standard install."].join(`
14
- `):e==="linux"?["Google Chrome is required but was not found at /usr/bin/google-chrome.","(amd64 / x86_64 only \u2014 Google does not ship Chrome for Linux ARM.)","","Debian / Ubuntu (any version):"," wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb"," sudo apt install -y ./google-chrome-stable_current_amd64.deb","","Fedora / RHEL / AlmaLinux / Rocky:"," sudo dnf install -y https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm","","Then re-run your command. Set KANE_CLI_CHROME_PATH=/path/to/chrome","to point at a non-standard install."].join(`
15
- `):e==="win32"?["Google Chrome is required but was not found in Program Files or AppData.","","Install via winget (Windows 10 1809+):"," winget install --id Google.Chrome -e --silent","","Or download:"," https://www.google.com/chrome/","","Then re-run your command. Set KANE_CLI_CHROME_PATH=C:\\path\\to\\chrome.exe","to point at a non-standard install."].join(`
16
- `):["Google Chrome is required.","Install from https://www.google.com/chrome/","(Note: no official Chrome builds for BSD or Alpine/musl Linux.)"].join(`
17
- `)}function qs(e){let t=Ve(),r=[`--remote-debugging-port=${e.port}`,`--user-data-dir=${e.userDataDir}`,`--window-size=${e.width},${e.height}`,"--no-first-run","--no-default-browser-check","--disable-blink-features=AutomationControlled","--disable-features=DownloadBubble,DownloadBubbleV2","--safebrowsing-disable-download-protection","--disable-popup-blocking","--disable-notifications","--disable-infobars","--disable-translate","--disable-prompt-on-repost","--disable-background-networking","--disable-client-side-phishing-detection","--disable-default-apps","--disable-hang-monitor","--disable-sync","--metrics-recording-only","--safebrowsing-disable-auto-update","--disable-backgrounding-occluded-windows","--disable-background-timer-throttling","--test-type=webdriver","--allow-pre-commit-input","--enable-logging","--v=1"];return t==="linux"&&(r.push("--no-sandbox"),r.push("--disable-dev-shm-usage"),r.push("--password-store=basic")),t==="darwin"&&r.push("--use-mock-keychain"),e.headless&&r.push("--headless=new"),r}function zs(e){return new Promise(t=>{let r=Ms({port:e,host:"127.0.0.1"});r.setTimeout(1e3),r.on("connect",()=>{r.destroy(),t(!0)}),r.on("timeout",()=>{r.destroy(),t(!1)}),r.on("error",()=>{r.destroy(),t(!1)})})}async function Gs(){for(let e=Et;e<=At;e++)if(!await zs(e))return e;throw new Error(`All CDP ports ${Et}-${At} are in use. Close other Chrome instances.`)}var Be=class extends Error{constructor(t){super(t),this.name="CdpReadinessError"}};async function Ys(e,t){let r=Date.now(),n=`http://127.0.0.1:${e}/json/version`;for(;Date.now()-r<t;){try{if((await q(n)).ok)return`http://127.0.0.1:${e}`}catch{}await new Promise(s=>setTimeout(s,200))}throw new Be(`Chrome CDP not ready after ${t}ms on port ${e}`)}var Ws=3e4,Qs=2;function Mn(e,t,r){let n=process.env[e];if(n==null||n.trim()==="")return t;let s=Number(n);return!Number.isInteger(s)||s<r?t:s}function Js(e){return Math.min(500*e,3e3)}function Bn(e,t){try{if(e.pid)if(t==="win32")Vn("taskkill",["/pid",String(e.pid),"/T","/F"],{stdio:"ignore"});else try{process.kill(-e.pid,"SIGKILL")}catch{e.kill("SIGKILL")}else e.kill("SIGKILL")}catch{}}async function Kn(e){let t=process.env.KANE_CLI_SKIP_BROWSER_DOWNLOAD;if(!(t!=null&&Bs.has(t.toLowerCase()))&&!Ks())throw xt()?.log("error","CHROME_NOT_FOUND","Startup gate: Chrome unavailable at standard system paths",{platform:process.platform,kane_cli_chrome_path:process.env.KANE_CLI_CHROME_PATH??null,skip_browser_download:process.env.KANE_CLI_SKIP_BROWSER_DOWNLOAD??null}),new ut(Hs());let n=Ve(),s=Vs(),o=Mn("KANE_CLI_CDP_TIMEOUT_MS",Ws,1),f=Mn("KANE_CLI_CDP_RETRIES",Qs,0)+1,l;for(let c=1;c<=f;c++){let y=await Gs(),w=qs({port:y,...e});e.startUrl&&w.push(e.startUrl);let A=Vn(s,w,{stdio:"ignore",detached:!0});A.unref();try{let R=await new Promise((x,k)=>{A.on("error",E=>{k(new Error(`Failed to launch Chrome: ${E.message}. Is Chrome installed at ${s}?`))}),A.on("close",E=>{E!==null&&E!==0&&k(new Be(`Chrome exited during startup with code ${E}`))}),Ys(y,o).then(x,k)});return{process:A,port:y,cdpEndpoint:R,kill(){Bn(A,n)}}}catch(R){if(l=R,!(R instanceof Be))throw R;Bn(A,n),xt()?.log("warn","CHROME_CDP_LAUNCH_RETRY",`Chrome CDP launch attempt ${c}/${f} failed`,{attempt:c,max_attempts:f,port:y,timeout_ms:o,headless:e.headless??!1,error:R.message}),c<f&&await new Promise(x=>setTimeout(x,Js(c)))}}throw l??new Error("Chrome launch failed after retries")}async function Hn(e){if(e.cft)return{instance:null,tempDir:null};if(e.wsEndpoint)return{wsEndpoint:e.wsEndpoint,instance:null,tempDir:null};if(e.cdpEndpoint){let s=await q(`${e.cdpEndpoint}/json/version`);if(!s.ok)throw new Error(`CDP endpoint not reachable: ${e.cdpEndpoint} (${s.status})`);return{cdpEndpoint:e.cdpEndpoint,instance:null,tempDir:null}}let t,r=null;if(e.config.chrome_profile_path)t=e.config.chrome_profile_path.replace("~",process.env.HOME??"~");else{r=Zs(eo(to(),"kane-clean-")),t=r;let s=r;tt("tempDir",()=>{try{Xs(s,{recursive:!0,force:!0})}catch{}})}let n=await Kn({userDataDir:t,width:e.config.window_size.width,height:e.config.window_size.height,startUrl:e.startUrl,headless:e.headless});return{cdpEndpoint:n.cdpEndpoint,instance:n,tempDir:r}}function qn(e){let t={objective:e.objective,model:e.model,width:e.windowSize.width,height:e.windowSize.height,session_id:e.sessionId,run_index:e.runIndex,max_steps:e.maxSteps??30,headless:e.headless??!1};return e.url&&(t.url=e.url),e.requireStartUrl&&(t.require_start_url=!0),e.chrome.wsEndpoint?t.ws_endpoint=e.chrome.wsEndpoint:e.chrome.cdpEndpoint&&(t.cdp_endpoint=e.chrome.cdpEndpoint),e.auth.basicAuth?(t.username=e.auth.basicAuth.username,t.access_key=e.auth.basicAuth.access_key):e.auth.token&&(t.auth={type:"bearer",token:e.auth.token}),e.auth.resolvedCreds?.org_id&&(t.org_id=String(e.auth.resolvedCreds.org_id)),e.disableAskUser&&(t.disable_ask_user=!0),e.enableTaskSkills&&(t.enable_task_skills=!0),e.networkWs&&(t.network_ws=!0),e.networkSse&&(t.network_sse=!0),(e.bugDetection==="stop"||e.bugDetection==="continue")&&(t.bug_detection=e.bugDetection),e.variables&&Object.keys(e.variables).length>0&&(t.variables=e.variables),e.globalContext&&(t.global_context=e.globalContext),e.localContext&&(t.local_context=e.localContext),e.sessionContext&&(t.session_context=e.sessionContext),e.evidence&&(t.evidence=st(e.evidence.packTestDir,e.evidence.ordinalOffset)),t}import{readdirSync as ro,readFileSync as Gn,existsSync as Yn}from"fs";import{join as no}from"path";function zn(e,t){if(!Yn(e))return{};let r={},n;try{n=ro(e).filter(s=>s.endsWith(".json")).sort()}catch{return{}}for(let s of n)try{let o=Gn(no(e,s),"utf-8"),i=JSON.parse(o);if(i&&typeof i=="object"){for(let[f,l]of Object.entries(i))if(l&&typeof l=="object"&&"value"in l){let c=l;r[f]={value:c.value,secret:c.secret??!1,syntax:c.syntax??`{{${f}}}`}}}}catch{t?t("warn","VARIABLE_PARSE_FAILED","Skipping invalid variables file",{file:s}):process.stderr.write(`[variables] Warning: skipping invalid variables file: ${s}
18
- `)}return r}function Wn(e){if(!Yn(e))throw new Error(`Variables file not found: ${e}`);let t=Gn(e,"utf-8"),r=JSON.parse(t),n={};if(r&&typeof r=="object"){for(let[s,o]of Object.entries(r))if(o&&typeof o=="object"&&"value"in o){let i=o;n[s]={value:i.value,secret:i.secret??!1,syntax:i.syntax??`{{${s}}}`}}}return n}function Qn(e){let t;try{t=JSON.parse(e)}catch{throw new Error("Invalid --variables JSON")}let r={};if(t&&typeof t=="object"){for(let[n,s]of Object.entries(t))if(s&&typeof s=="object"&&"value"in s){let o=s;r[n]={value:o.value,secret:o.secret??!1,syntax:o.syntax??`{{${n}}}`}}}return r}function Jn(e,t,r){let n=zn(e,r),s=zn(t,r);return{...n,...s}}var Ce=class{constructor(t){this.baseUrl=t}async pushSecret(t){let r=Xe(t.username,t.accessKey),n=await q(`${this.baseUrl}/logistics/v1.0/secrets/create`,{method:"PUT",headers:{Authorization:r,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({secretKey:t.secretKey,secretValue:t.secretValue,orgId:t.orgId,username:t.username,scope:"user",type:"user",accessKey:t.accessKey})});if(!n.ok)throw new Error(`Push secret failed: ${n.status} ${await n.text()}`)}static extractVariableKeys(t){let r=t.matchAll(/\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g),n=new Set;for(let s of r)n.add(s[1]);return[...n]}};var Ee=class extends Lr{constructor(t,r,n){super(t,{username:r,accessKey:n})}async upsertVariable(t){let r=t.environmentId??0,n=await q(`${this.baseUrl}/v1/variables`,{method:"POST",headers:this.headers(),body:JSON.stringify({name:t.name,value:String(t.value),type:"variable",value_type:"string",is_persist:t.isPersist??!1,environment_id:r})});if(n.ok){let l=await n.json().catch(()=>({}));if(l.type==="Success"&&l.id!=null)return{id:Number(l.id)||0}}let s=await q(`${this.baseUrl}/v1/variables/${encodeURIComponent(t.name)}?environment_id=${r}`,{method:"GET",headers:this.headers()});if(!s.ok)return{id:0};let i=(await s.json().catch(()=>({}))).data?.id;return i==null?{id:0}:(await q(`${this.baseUrl}/v1/variables/${i}`,{method:"PUT",headers:this.headers(),body:JSON.stringify({value:String(t.value),value_type:"string"})})).ok?{id:Number(i)||0}:{id:0}}};function Zn(e,t){if(Object.keys(e).length===0)return{};let r={};for(let[n,s]of Object.entries(e)){let o=s.syntax??`{{${n}}}`;t.includes(o)&&(r[n]=s)}return r}function Xn(e){let t=Jn(e.globalDir,e.localDir,e.onLoadError),r=e.file?Wn(e.file):{},n=e.inline?Qn(e.inline):{},s={...t,...r,...n},o=Object.keys(s).length>0,{variables:i,objective:f}=o?_e(s,e.objective):{variables:{},objective:e.objective},l=Object.entries(s).filter(([,y])=>y.secret),c=Object.entries(s).filter(([,y])=>!y.secret);return{raw:s,auteur:i,auteurObjective:f,secretEntries:l,nonSecretEntries:c}}async function es(e){if(e.localMode)return{};let t=ie(e.env);if(e.variables.secretEntries.length>0){let n=new Ce(t.secretsBaseUrl);for(let[s,o]of e.variables.secretEntries)n.pushSecret({secretKey:s,secretValue:o.value,username:e.auth.username,accessKey:e.auth.access_key,orgId:e.orgId}).then(()=>e.log("info","SECRET_PUSH_OK","Secret pushed",{key:s})).catch(i=>e.log("error","SECRET_PUSH_FAILED","Secret push failed",{key:s,error:String(i)}))}let r={};if(e.variables.nonSecretEntries.length>0){let n=new Ee(t.tmsBaseUrl,e.auth.username,e.auth.access_key);for(let[s,o]of e.variables.nonSecretEntries)try{let i=await n.upsertVariable({name:s,value:o.value});r[s]=i.id,e.log("info","VAR_PUSH_OK","Variable pushed",{name:s,id:i.id})}catch(i){e.log("error","VAR_PUSH_FAILED","Variable push failed",{name:s,error:String(i)})}}return r}import{readFileSync as so,existsSync as oo}from"fs";function zt(e){if(!oo(e))return null;try{return so(e,"utf-8").trim()||null}catch{return null}}var io=()=>{};async function ts(e,t,r){let n=t.log??io,s=e.session.testId??null,o=null,i=null,f=null;if(!r.localMode&&t.performUpload)try{o=await t.performUpload(),o?.success&&(o.testId&&(s=o.testId),o.testcaseId&&e.session.setTestcaseId(o.testcaseId))}catch(l){n("error","FINALIZE_UPLOAD_ERROR","Upload pipeline threw",{error:String(l)})}if(t.renderFeedbackPrompt)try{i=await t.renderFeedbackPrompt(),i&&s&&t.submitFeedback&&t.submitFeedback(s,i).catch(l=>{n("error","FINALIZE_FEEDBACK_SUBMIT_ERROR","Feedback submit failed",{error:String(l)})})}catch(l){n("error","FINALIZE_FEEDBACK_RENDER_ERROR","Feedback prompt threw",{error:String(l)})}if(e.session.flushRecorder(),r.skipLocalWrites)n("info","FINALIZE_SKIP_LOCAL_WRITES","Skipping local writes (testmd flow handles via staging)");else if(r.sourcePath&&r.rootSteps&&r.outcomes){try{f=Ut({sourcePath:r.sourcePath,title:r.title,rootSteps:r.rootSteps,outcomes:r.outcomes,overallStatus:r.overallStatus,startedISO:r.startedISO,durationS:r.durationS,sessionId:e.session.sessionId})}catch(l){n("error","FINALIZE_RESULT_MD_ERROR","_Result.md write failed",{error:String(l)})}try{Dt({sourcePath:r.sourcePath,commitId:e.session.sessionId,testId:s??void 0,testcaseId:e.session.testcaseId??void 0,projectId:e.tuiConfig.project_id??void 0,folderId:e.tuiConfig.folder_id??void 0,orgId:e.session.orgId??void 0,sessionName:e.session.sessionName??Ue(r.sourcePath),plan:e.session.plan??void 0})}catch(l){n("error","FINALIZE_META_WRITE_ERROR","meta.json write failed",{error:String(l)})}if(o?.codeExportDir)try{let l=e.tuiConfig.code_export?.language??"python";jt(o.codeExportDir,Lt(r.sourcePath,"playwright",l))}catch(l){n("error","FINALIZE_CODE_COPY_ERROR","code-export copy failed",{error:String(l)})}}else if(e.session.recorder?.lastWrittenPath){let l=e.session.recorder.lastWrittenPath,c=e.session.getFlows(),y=c.map((R,x)=>({index:x+1,heading:`Step ${x+1}`,verifies:[],headingLine:0,body:{kind:"objective",text:R.objective}})),w=c.map((R,x)=>({rootStepIndex:x+1,status:R.status==="passed"?"passed":R.status==="failed"?"failed":"skipped",duration_s:R.duration,reason:R.reason})),A=w.some(R=>R.status==="failed")?"failed":"passed";try{f=Ut({sourcePath:l,title:e.session.sessionName??"Session",rootSteps:y,outcomes:w,overallStatus:A,startedISO:e.session.startedAt,durationS:w.reduce((R,x)=>R+(x.duration_s??0),0),sessionId:e.session.sessionId})}catch(R){n("error","FINALIZE_TUI_RESULT_MD_ERROR","TUI _Result.md write failed",{error:String(R)})}try{Dt({sourcePath:l,commitId:e.session.sessionId,testId:s??void 0,testcaseId:e.session.testcaseId??void 0,sessionName:e.session.sessionName??void 0,projectId:e.tuiConfig.project_id??void 0,folderId:e.tuiConfig.folder_id??void 0,plan:e.session.plan??void 0})}catch(R){n("error","FINALIZE_TUI_META_WRITE_ERROR","TUI meta.json write failed",{error:String(R)})}if(o?.codeExportDir)try{let R=e.tuiConfig.code_export?.language??"python";jt(o.codeExportDir,Lt(l,"playwright",R))}catch(R){n("error","FINALIZE_TUI_CODE_COPY_ERROR","TUI code-export copy failed",{error:String(R)})}e.session.recorder.lastCollisionSuffixed&&process.stderr.write(`Saved to ${l} (renamed: ${e.session.sessionName}_test.md already existed)
19
- `)}try{t.runCleanup?.()}catch(l){n("error","FINALIZE_CLEANUP_ERROR","Cleanup hook threw",{error:String(l)})}try{await e.session.finish("complete")}catch(l){n("error","FINALIZE_SESSION_FINISH_ERROR","session.finish threw",{error:String(l)})}return{uploadResult:o,feedbackChoice:i,resultMdPath:f}}import{readFileSync as Gt,writeFileSync as Yt,existsSync as ns}from"fs";function rs(e,t,r){if(r.forceAuthor)return"re-recorded from scratch";if(r.retryTriggered)return"re-recorded after retry";if(t.length>0&&t.every(i=>i.kind==="author"&&i.reason==="no-result-md"))return"initial recording";if(t.length>0&&t.every(i=>i.kind==="replay"))return r.wantsPush?"re-recorded (no source changes)":"no changes";let n=[];for(let i=0;i<t.length;i++){let f=t[i];if(!f||f.kind!=="author"||f.reason==="downstream-of-divergence"||f.reason==="no-result-md")continue;let l=ao(e,e.steps[i]);switch(f.reason){case"structure-mismatch":n.push(`added/removed: ${l}`);break;case"md5-mismatch":n.push(`modified: ${l}`);break;case"missing-recording":n.push(`re-recorded: ${l}`);break;case"recorded-failed":n.push(`re-authored after failure: ${l}`);break}}if(n.length===0)return"automated commit";let s=n.filter((i,f)=>f===0||n[f-1]!==i),o=s.slice(0,3).join("; ");return s.length>3?`${o}; +${s.length-3} more`:o}function ao(e,t){if(!t)return"unknown step";let r=t.trace[0]?.stepIndex;if(r==null)return"unknown step";let s=e.rootSteps[r-1]?.heading?.trim()??"";return t.trace.length>1?s?`imported step in "${s}"`:`imported step ${r}`:s||`step ${r}`}function lo(e,t){if(!(!e.shouldReplaceLocalOutput||!e.resolvedTest||!e.sourcePath||!e.stepRunRecords||!e.outcomes||!e.overallStatus))return async()=>{let{changedUnitFiles:r,legacySweep:n}=await cn({resolvedTest:e.resolvedTest,sessionDir:e.session.sessionDir,stepRunRecords:e.stepRunRecords,outcomes:e.outcomes,overallStatus:e.overallStatus,startedISO:e.startedISO??new Date().toISOString(),durationS:e.durationS??0,sessionId:e.session.sessionId,commitId:e.fromCommitId??"",tmsIds:e.tmsIds??{},codeExportDir:e.codeExportDir,packTestDir:e.evidence?.packTestDir??e.evidenceRead?.packTestDir,authoredFlatIdx:new Set(e.authoredFlatIdx??[])});t.files=r;for(let s of r){let o=ne(s);if(ns(`${o}.staging`)){en(o);let i=n.find(f=>f.unitFile===s);i&&dn(i.dirs)}}}}function co(e,t){if(!(!e.shouldCommit||e.isFirstRun||!e.tmsBaseUrl||!e.testId||!e.fromCommitId||!e.newCommitId||!e.basicAuth||!e.resolvedTest||!e.decisions))return async()=>{let r=rs(e.resolvedTest,e.decisions,{wantsPush:e.wantsPush??!1,retryTriggered:e.retryTriggered??!1,forceAuthor:e.forceAuthor??!1}),n=e.resolvedTest.steps.map(o=>o.objective).filter(o=>typeof o=="string"&&o.length>0).slice(0,50),s=await Kt({baseUrl:`${e.tmsBaseUrl}/kane-cli/v1`,testId:e.testId,body:{commitId:e.newCommitId,fromCommitId:e.fromCommitId,commitMessage:r,totalSteps:e.resolvedTest.steps.length,timeTaken:Math.round(e.durationS??0),objectives:n},auth:{username:e.basicAuth.username,accessKey:e.basicAuth.access_key}});if(s.ok&&e.sourcePath){let o=Re(e.sourcePath);try{let i=JSON.parse(Gt(o,"utf8"));i.commit_id=e.newCommitId,Yt(o,JSON.stringify(i,null,2)+`
20
- `,"utf8")}catch(i){process.stderr.write(`warn: failed to update meta.json commit_id: ${i.message}
21
- `)}}if(s.ok)for(let o of e.unitLocks??[]){if(!t.files.includes(o.file)){await Fe({baseUrl:`${e.tmsBaseUrl}/kane-cli/v1`,testId:o.testId,body:{commitId:e.newCommitId,fromCommitId:o.fromCommitId},auth:{username:e.basicAuth.username,accessKey:e.basicAuth.access_key}}),ve(o.testId);continue}let i=e.resolvedTest.steps.filter(c=>c.owningFile===o.file),f=i.map(c=>c.objective).filter(c=>typeof c=="string"&&c.length>0).slice(0,50),l=await Kt({baseUrl:`${e.tmsBaseUrl}/kane-cli/v1`,testId:o.testId,body:{commitId:e.newCommitId,fromCommitId:o.fromCommitId,commitMessage:`healed via importer ${e.sourcePath??""}`,totalSteps:i.length,timeTaken:0,objectives:f},auth:{username:e.basicAuth.username,accessKey:e.basicAuth.access_key}});if(l.ok){let c=Re(o.file);try{let y=JSON.parse(Gt(c,"utf8"));y.commit_id=e.newCommitId,Yt(c,JSON.stringify(y,null,2)+`
22
- `,"utf8")}catch(y){process.stderr.write(`warn: failed to update unit meta commit_id (${o.file}): ${y.message}
23
- `)}}else process.stderr.write(`warn: unit self-commit failed (${o.file}): ${l.reason??""} ${l.message??""}
24
- `)}return s}}function uo(e){if(!(!e.isFirstRun||!e.sourcePath))return async t=>{if(!e.sourcePath)return;let r=Re(e.sourcePath);try{let n=ns(r)?JSON.parse(Gt(r,"utf8")):{};e.session.sessionId&&(n.commit_id=e.session.sessionId),t&&(n.testcase_id=t),e.tmsIds?.testId&&(n.test_id=e.tmsIds.testId),e.tmsIds?.projectId&&(n.project_id=e.tmsIds.projectId),e.tmsIds?.folderId&&(n.folder_id=e.tmsIds.folderId),e.tmsIds?.orgId&&(n.org_id=e.tmsIds.orgId),e.tmsIds?.sessionName&&(n.session_name=e.tmsIds.sessionName),Yt(r,JSON.stringify(n,null,2)+`
25
- `,"utf8")}catch(n){process.stderr.write(`warn: failed to update meta.json after endTest: ${n.message}
26
- `)}}}function ss(e){let t=ie(e.env),r={files:[]},{session:n,auth:s}=e,o=s.basicAuth?{username:s.basicAuth.username,accessKey:s.basicAuth.access_key}:s.token,i=s.resolvedCreds?.username??s.basicAuth?.username??"",f=s.resolvedCreds?.access_key??s.basicAuth?.access_key??"",l=s.resolvedCreds?.org_id??0,c=s.resolvedCreds?.user_id??0,y=[];for(let k of Object.keys(n.auteurVariables))k.startsWith("secrets.user.")&&y.push({key_name:k.replace("secrets.user.",""),scope:"user"});let A=n.getContext().prior_runs.map(k=>k.status),R=n.auteurVariables,x=Object.keys(R).length>0;return{controllerBaseUrl:t.controllerBaseUrl,tmsBaseUrl:t.tmsBaseUrl,auth:o,authResolver:s.resolver,sessionId:n.sessionId,sessionDir:n.sessionDir,testId:n.testId,commitId:n.sessionId,apMode:n.apMode,projectId:e.projectId,folderId:e.folderId,firstObjective:n.firstObjective??"KaneAI Test",firstUrl:n.firstUrl??"",runDirs:n.getRunDirs(),runObjectives:n.getRunObjectives(),runMetadata:n.getRunMetadata(),startedAt:n.startedAt,endedAt:new Date().toISOString(),totalSteps:e.totalSteps,totalDuration:e.totalDuration,runStatuses:A,orgId:l,userId:c,tmsUsername:i,tmsAccessKey:f,screenshotBaseUrl:n.screenshotBaseUrl,screenshotExtMap:e.screenshotExtMap,shareApiBaseUrl:t.shareApiBaseUrl,variables:x?R:void 0,variableIds:e.variableIds,secrets:y,codeExport:e.codeExport,onProgress:e.onProgress,log:e.log,shouldUploadArtifacts:e.shouldUploadArtifacts,shouldReplaceLocalOutput:e.shouldReplaceLocalOutput,shouldCommit:e.shouldCommit,isFirstRun:e.isFirstRun,onAtomicReplace:lo(e,r),onCommitLock:co(e,r),onFinalizeSuccess:uo(e),evidence:e.evidence,evidenceRead:e.evidenceRead,authoredExecutionPath:e.authoredExecutionPath}}var os=["python","javascript"];function mo(e){if(e!==void 0){if(!os.includes(e))throw new Error(`--code-language must be one of: ${os.join(", ")} (got "${e}")`);return e}}function is(e,t){let r=mo(e.codeLanguage);return{enabled:e.codeExport??t.enabled,language:r??t.language,skipValidation:e.skipCodeValidation??t.skip_validation}}async function as(e){try{let r=await new et(e.tmsBaseUrl,e.auth.username,e.auth.access_key).createAtmTest({objective:e.objective.slice(0,100),creation_mode:"KANECLI",playground_disabled:e.hasCustomProfile,testURL:e.url,project_id:e.projectId,folder_id:e.folderId,authoring_version:4});return e.log("info","ATM_CREATE_OK","Test created",{test_id:r}),r}catch(t){return e.log("error","ATM_CREATE_FAILED","Test creation failed",{error:t instanceof Error?t.message:String(t)}),null}}var fo=null,po=()=>fo??=import("sharp").then(e=>e.default??e).catch(()=>null),ft=class{maxWorkers;maxRetries=2;queue=[];activeCount=0;drainResolvers=[];sas;log;uploadedExt=new Map;constructor(t,r=3,n){this.sas=t,this.maxWorkers=r,this.log=n}updateSas(t){this.sas=t}enqueue(t,r){this.queue.push({operationId:t,buffer:r}),this.pump()}async drain(t=3e4){if(!(this.queue.length===0&&this.activeCount===0))return new Promise(r=>{this.drainResolvers.push(r),setTimeout(()=>{r()},t)})}pump(){for(;this.activeCount<this.maxWorkers&&this.queue.length>0;){let t=this.queue.shift();this.activeCount++,this.processJob(t).finally(()=>{if(this.activeCount--,this.pump(),this.queue.length===0&&this.activeCount===0){for(let r of this.drainResolvers)r();this.drainResolvers=[]}})}}async processJob(t){let r,n="image/webp",s=await po();if(s)try{let l=await s(t.buffer).webp({quality:80}).toBuffer();r=new Uint8Array(l)}catch(l){r=new Uint8Array(t.buffer),n="image/png",this.log?.("warn","SCREENSHOT_CONVERT_FAILED","WebP conversion failed, using PNG",{operation_id:t.operationId,error:l instanceof Error?l.message:String(l)})}else r=new Uint8Array(t.buffer),n="image/png";let o=n==="image/webp"?"webp":"png",i=`test_screenshots/untagged_screenshot/${t.operationId}.${o}`,f=`${this.sas.base_url}/${this.sas.container}/${i}?${this.sas.sas_token}`;for(let l=0;l<=this.maxRetries;l++)try{let c=await q(f,{method:"PUT",headers:{"Content-Type":n,"x-ms-blob-type":"BlockBlob"},body:r});if(c.ok){this.uploadedExt.set(t.operationId,o);return}if(l<this.maxRetries){await this.backoff(l);continue}this.log?.("warn","SCREENSHOT_UPLOAD_FAILED","Screenshot upload failed after retries",{operation_id:t.operationId,status:c.status,attempts:this.maxRetries+1})}catch{if(l<this.maxRetries){await this.backoff(l);continue}this.log?.("warn","SCREENSHOT_UPLOAD_FAILED","Screenshot upload failed (network error)",{operation_id:t.operationId,error:"network",attempts:this.maxRetries+1})}}backoff(t){let r=t===0?1e3:3e3;return new Promise(n=>setTimeout(n,r))}getExt(t){return this.uploadedExt.get(t)??"png"}getExtMap(){return this.uploadedExt}isNearExpiry(){if(!this.sas.expiry)return!1;let t=new Date(this.sas.expiry).getTime();return Date.now()>t-5*6e4}};import{platform as go,arch as ho}from"os";function ls(e){let t={proxyUrl:Tr,sessionId:e.sessionId,identity:e.identity,device:{cli_version:Je,platform:go(),arch:ho(),host_agent:Nt(),invocation_mode:e.invocationMode},getToken:e.getToken};return new Ft(t)}async function bo(e){try{let t=ie(e.env),n=await new Ie(t.controllerBaseUrl,e.auth).getScreenshotSas();return e.session.setScreenshotSas(n),e.log("info","SCREENSHOT_SAS_OK","Screenshot SAS fetched",{base_url:n.base_url,container:n.container,expiry:n.expiry}),new ft(n,3,e.log)}catch(t){return e.log("warn","SCREENSHOT_SAS_FAIL","Screenshot SAS fetch failed",{error:t instanceof Error?t.message:String(t)}),null}}async function yo(e){if(e.session.hasRemoteLogger||!e.tmsCreds)return null;let t=e.tmsCreds,r=ls({sessionId:e.session.sessionId,identity:{org_id:String(t.org_id??""),user_id:String(t.user_id??""),machine_id:mn(),email:t.email??null,email_domain:t.email_domain??"unknown",user_type:t.user_type??"unknown",env:e.env,plan:t.plan??"unknown"},invocationMode:e.invocationMode,getToken:e.getToken});return e.session.setRemoteLogger(r),r.start(),r}async function Zt(e){let[t,r]=await Promise.allSettled([e.skipScreenshotQueue?Promise.resolve(null):bo({env:e.env,auth:e.auth,session:e.session,log:e.log}),yo({env:e.env,tmsCreds:e.tmsCreds,getToken:e.getToken,session:e.session,invocationMode:e.invocationMode})]);return{resolver:e.resolver,screenshotQueue:t.status==="fulfilled"?t.value:null,remoteLogger:r.status==="fulfilled"?r.value:null}}async function Wt(e){await Promise.allSettled([e.screenshotQueue?.drain(),e.remoteLogger?.shutdown()])}async function Ia(e,t){switch(e.kind){case"boot":{if(t.state.identityServicesRef.current)return t.state.identityServicesRef.current;let r=t.auth.initResolver(e.env);r.prime(e.tmsCreds),t.state.setTmsCredsCache(e.tmsCreds);let n=await Qt(e.env,e.tmsCreds,r,t);return Jt(n,t),n}case"login":case"switch":{let r=t.state.identityServicesRef.current;r&&(await Wt(r),r.resolver.revoke()),t.state.identityServicesRef.current=null,t.state.screenshotQueueRef.current=null,t.state.setTmsCredsCache(null);let n=t.auth.initResolver(e.env),s=await n.resolve(!0).catch(()=>null);if(!s)return t.log("warn","IDENTITY_VALIDATE_FAILED","Identity validation failed",{kind:e.kind,env:e.env}),null;t.state.setTmsCredsCache(s);let o=await Qt(e.env,s,n,t);return Jt(o,t),o}case"logout":{let r=t.state.identityServicesRef.current;return r&&(await Wt(r),r.resolver.revoke()),t.state.identityServicesRef.current=null,t.state.screenshotQueueRef.current=null,t.state.setTmsCredsCache(null),null}case"resessionize":{let r=t.state.identityServicesRef.current;r&&await Wt(r),t.state.identityServicesRef.current=null,t.state.screenshotQueueRef.current=null;let n=t.state.getTmsCredsCache(),s=t.auth.getResolver(),o=s??t.auth.initResolver(e.env);!s&&n&&o.prime(n);let i=await Qt(e.env,n,o,t);return Jt(i,t),i}}}async function Qt(e,t,r,n){let s=n.auth.getBasicAuth(),o=s?null:await n.auth.getToken(),i=s?{username:s.username,accessKey:s.access_key}:o??null;return i===null?{resolver:r,screenshotQueue:null,remoteLogger:null}:Zt({env:e,tmsCreds:t,resolver:r,auth:i,getToken:()=>n.auth.getToken(),session:n.getSession(),log:n.log,skipScreenshotQueue:n.options?.skipScreenshotQueue,invocationMode:"tui"})}function Jt(e,t){t.state.identityServicesRef.current=e,t.state.screenshotQueueRef.current=e.screenshotQueue,e.remoteLogger&&(t.exit.registerCleanup("remote-logger",()=>e.remoteLogger.shutdownSync()),t.exit.setExitRemoteLogger(e.remoteLogger))}import{relative as wo}from"path";import{readFile as vo}from"fs/promises";function cs(e){return e.shouldUploadArtifacts&&!e.lockHeld&&!e.isFirstRun&&e.sealed&&!!e.testId}var Xt=e=>e instanceof Error?e.message:String(e);async function ds(e){let{controller:t,tms:r,testId:n,sessionId:s,executionId:o,sealedPackPath:i,projectId:f}=e,l;try{let c={key:"evidence",content_type:"application/zip",filename:`${o}.evidence`},w=(await t.getPresignedUrls(n,s,[c])).urls?.evidence?.upload_url;if(!w)return{ok:!1,stage:"presign",error:"presign response missing evidence upload_url"};l=w}catch(c){return{ok:!1,stage:"presign",error:Xt(c)}}try{let c=await vo(i);await tn(l,c,"application/zip")}catch(c){return{ok:!1,stage:"upload",error:Xt(c)}}try{await r.ingestEvidence(o,f)}catch(c){return{ok:!1,stage:"ingest",error:Xt(c)}}return{ok:!0}}function us(e){return e.isFirstRun||ot(e.decisions)||e.push===!0||e.author===!0}function ms(e,t){return{projectId:e?.project_id??t.project_id??null,folderId:e?.folder_id??t.folder_id??null}}function er(e){return e?"author":"replay"}function _o(e,t){return e?{session:e,ownsLifecycle:!1}:{session:t,ownsLifecycle:!0}}function pt(e,t){return e?.total_runs??t?.length??1}function Io(e){let t=(e?.per_flow_metadata??[]).map(r=>({resultCode:r?.result_code!=null?Number(r.result_code):null}));return{resultCode:e?.result_code!=null?Number(e.result_code):null,...t.length?{perFlow:t}:{}}}var gt=["target","chrome_profile","cdp_endpoint","ws_endpoint","headless"];async function Al(e,t,r){let{path:n,cwd:s,opts:o,isAgent:i,disableAskUser:f,resolved:l,resolvedAuth:c,cliOverrides:y,environment:w,envConfig:A,profile:R,model:x,creds:k,configStore:E,session:a}=e,z=!1,m=await Eo(n,l,o,{resolvedAuth:c,tmsBaseUrl:A.tmsBaseUrl},a.sessionId,r);if(m.abort)return{overallStatus:"failed",exitCode:m.abort.exitCode,outputDir:ne(n),durationS:0,uploadResult:null};let _=m.lockAcquired,L=!1,ue=new Set,Z=!1,se=!1;_&&t.onLockState({phase:"acquired",scope:"preemptive"}),a.start({model:x,environment:w,profile:R}),a.setRecordingEnabled(!1);let M=0,nr=c.basicAuth?{username:c.basicAuth.username,accessKey:c.basicAuth.access_key}:c.token??null,Te=null;if(nr!==null){let d=await Zt({env:w,tmsCreds:c.resolvedCreds??null,resolver:c.resolver,auth:nr,getToken:async()=>c.token??null,session:a,log:(u,p,b,h)=>a.log(u,p,b,h),skipScreenshotQueue:!!o.local||!c.basicAuth,invocationMode:i?"agent":"cli"});Te=d.screenshotQueue,d.remoteLogger&&(r.register("remote-logger",()=>d.remoteLogger.shutdownSync()),r.remoteLogger=d.remoteLogger,e.skipGlobalRemoteLogger||Dr(d.remoteLogger))}if(o.name){try{ln(o.name)}catch(d){return process.stderr.write(`error: ${d.message}
27
- `),{overallStatus:"failed",exitCode:2,outputDir:ne(n),durationS:0,uploadResult:null}}a.setSessionName(o.name)}let ht={};for(let[d,u]of Object.entries(l.rootGlobal))gt.includes(d)||(ht[d]=u);for(let[d,u]of Object.entries(y))gt.includes(d)||u!==void 0&&(ht[d]=u);let X={...l.chrome};for(let d of gt){let u=y[d];u!==void 0&&(X[d]=u)}let bs={...ht,...X};a.setResolvedGlobal(bs);let sr=k.getActiveProfile()??"default",or=k.getDefaultEnv(),{rehydrateIfStale:ys}=await import("./profile-sync-DTTRRIVP.js");ys(k,E,sr,or);let U=E.load(),ir=(y.assertion_mode??U.assertion_mode)==="dom"?"dom":"visual",ar=y.final_validation,lr=ar===void 0?void 0:ar==="on",$=U.project_id??null,fe=U.folder_id??null,cr=us({isFirstRun:m.isFirstRun,decisions:m.decisions,push:o.push===!0,author:o.author===!0});if(cr){if(c.basicAuth){let d=await Nr({creds:k,config:E,profile:sr,env:or,tmsCreds:c.basicAuth,isLocal:!!o.local,log:(u,p,b,h)=>a.log(u,p,b,h),onAnnounce:e.onAnnounce,onFatalExit:e.onFatalExit});if(d.status==="ok"){$=d.projectId,fe=d.folderId,U=E.load();let u=ye(n);u?.project_id&&($=u.project_id,fe=u.folder_id??fe),i&&d.autoDefaulted&&t.onAgentEvent(Fr(d.autoDefaulted))}else if(d.status==="cancelled"){process.stderr.write(`error: project/folder configuration failed. See remediation above, or use --local.
28
- `);let{shutdown:u}=await import("./exit-manager-HNFATGSM.js");return u(2,"project/folder gate failed"),{}}}}else{let d=ye(n);({projectId:$,folderId:fe}=ms(d,{project_id:U.project_id??null,folder_id:U.folder_id??null})),a.log("info","GATE_SKIP_REPLAY","Project/folder gate skipped (planned pure replay)",{meta_project:!!d?.project_id,config_project:!!U.project_id})}{let d=rn(l),u=c.resolvedCreds?.org_id!=null?String(c.resolvedCreds.org_id):void 0,p=d.find(g=>g.project_id&&$&&g.project_id!==String($)||g.org_id&&u&&g.org_id!==u),b=new Set(d.map(g=>g.project_id).filter(Boolean)),h=new Set(d.map(g=>g.org_id).filter(Boolean));if(p||b.size>1||h.size>1){let g=p??d[0];return process.stderr.write(`error: tenant mismatch \u2014 imported test '${g.file}' was authored under project ${g.project_id??"?"} / org ${g.org_id??"?"}, which differs from the run's project/org (or another imported test). Cross-tenant imports are not allowed.
29
- `),await a.finish("complete"),{overallStatus:"failed",exitCode:2,outputDir:ne(n),durationS:0,uploadResult:null}}}let oe;try{oe=await Hn({config:{chrome_profile_path:X.chrome_profile??null,window_size:{width:1920,height:1080}},startUrl:Ze,headless:X.headless??!1,wsEndpoint:X.ws_endpoint,cdpEndpoint:X.cdp_endpoint})}catch(d){return process.stderr.write(`error: Chrome launch failed: ${d.message}
30
- `),await a.finish("complete"),{overallStatus:"failed",exitCode:2,outputDir:ne(n),durationS:0,uploadResult:null}}let Ke=oe.instance;Ke&&r.register("chrome",()=>{try{Ke.kill()}catch{}});let dr=qr(oe.cdpEndpoint),ee=null,ur=!1,He=()=>{if(!ee?.diedUnexpectedly)return!1;if(!ur){ur=!0;let d=ee.stderr.slice(-500);a.log("error","RUNNER_FATAL_DEATH","v16-runner exited unexpectedly mid-session",{stderr_tail:d}),process.stderr.write(`error: v16-runner exited unexpectedly mid-session \u2014 remaining steps skipped.
31
- `)}return!0},G=null,mr=oe.cdpEndpoint??X.cdp_endpoint;if(mr&&!X.ws_endpoint&&!X.headless&&!e.isAgent)try{G=jn({headless:X.headless??!1,cdpEndpoint:mr,chromePid:Ke?.process.pid}),G&&r.register("marker-overlay",()=>G.kill())}catch(d){a.log("warn","OVERLAY_SPAWN_FAILED","Marker overlay spawn failed",{error:String(d)})}c.resolvedCreds?.org_id!==void 0&&a.setOrgId(String(c.resolvedCreds.org_id)),a.setUserIdentity(c.resolvedCreds?.username??null,c.resolvedCreds?.email??null);let ge=Xn({objective:"",globalDir:de(Ct,"variables"),localDir:de(s,".testmuai","variables"),file:o.variablesFile,inline:o.variables}),vs=l.rootGlobal.variables??{},te=Ro(ge.raw,vs);a.setAuteurVariables(te.auteur);let fr=zt(de(Ct,"global-memory.md"))??void 0,pr=zt(de(s,".testmuai","context.md"))??void 0;o.local?process.stderr.write(`info: --local \u2014 KaneAI upload skipped
32
- `):c.basicAuth?$||(cr?process.stderr.write(`warn: KaneAI upload skipped \u2014 no project configured.
33
- `):process.stderr.write(`warn: evidence publish will be skipped \u2014 no project_id in meta.json or config.
34
- `)):process.stderr.write(`warn: KaneAI upload skipped \u2014 TMS credentials could not be resolved.
35
- Run 'kane-cli login' (OAuth) or 'kane-cli config set-username/set-access-key' (basic auth).
36
- `);let we=!o.local&&!!c.basicAuth&&$!=null;if(a.log("info","PIPELINE_GATE_STATE","Initial gate state (run-start)",{phase:"run-start",shouldUploadArtifacts:we,lockHeld:_,isFirstRun:m.isFirstRun,hasAuth:m.hasAuth}),we&&m.testId==null&&!m.degradedReadonly){let d=ie(w);try{let u=await as({tmsBaseUrl:d.tmsBaseUrl,auth:c.basicAuth,objective:l.steps[0].objective,url:"",projectId:$,folderId:fe??"",hasCustomProfile:!!X.chrome_profile,log:(p,b,h,g)=>a.log(p,b,h,g)});u&&a.setTestId(u)}catch(u){process.stderr.write(`warn: ATM test creation failed: ${u.message}
37
- `)}}else m.testId&&a.setTestId(m.testId);let qe={};if(c.basicAuth&&!o.local&&(te.secretEntries.length>0||te.nonSecretEntries.length>0))try{qe=await es({variables:te,auth:c.basicAuth,orgId:String(c.resolvedCreds?.org_id??""),env:w,localMode:!!o.local,log:(d,u,p,b)=>a.log(d,u,p,b)})}catch(d){process.stderr.write(`warn: variable/secret push failed: ${d.message}
38
- `)}let bt=new Map;for(let[d,u]of te.nonSecretEntries)bt.set(d,u.value);let yt=new Map;for(let[d,u]of te.secretEntries)yt.set(d,u.value);async function vt(d){if(!c.basicAuth||o.local)return;let u=[],p=[];for(let[h,g]of Object.entries(d))if(g.secret){if(yt.get(h)===g.value)continue;p.push([h,g])}else{if(bt.get(h)===g.value)continue;u.push([h,g])}if(u.length===0&&p.length===0)return;let b=ie(w);if(u.length>0){let h=new Ee(b.tmsBaseUrl,c.basicAuth.username,c.basicAuth.access_key);for(let[g,I]of u)try{let C=await h.upsertVariable({name:g,value:I.value});qe[g]=C.id,bt.set(g,I.value),a.log("info","VAR_PUSH_STEP","Variable updated mid-run",{name:g})}catch(C){a.log("warn","VAR_PUSH_STEP_FAILED","Mid-run variable push failed",{name:g,error:String(C)})}}if(p.length>0){let h=new Ce(b.secretsBaseUrl);for(let[g,I]of p)try{await h.pushSecret({secretKey:g,secretValue:I.value,username:c.basicAuth.username,accessKey:c.basicAuth.access_key,orgId:String(c.resolvedCreds?.org_id??"")}),yt.set(g,I.value),a.log("info","SECRET_PUSH_STEP","Secret updated mid-run",{name:g})}catch(C){a.log("warn","SECRET_PUSH_STEP_FAILED","Mid-run secret push failed",{name:g,error:String(C)})}}}let Le=Te?(d,u,p,b)=>{if(!(_||m.isFirstRun))return;if(T&&b){xn(T.packTestDir,b,Te,(g,I,C,j)=>a.log(g,I,C,j));return}let h=M+u;Pn(a.sessionDir,h,d,Te,(g,I,C,j)=>a.log(g,I,C,j),p)}:void 0,gr=l.rootTitle??l.rootSteps[0]?.heading??fs(n),Ss=Object.keys(te.raw).length>0?_e(te.raw,gr).objective:gr,he=Dn({flag:o.url,frontmatter:l.rootGlobal?.url,configDefault:E.load().default_url}),ws=On({resolvedUrl:he,local:!!o.local,allowMissingUrl:!!o.allowMissingUrl,isTTY:!!process.stdin.isTTY});a.setFirstRun(Ss,he??"");let me=new ct(l),ze=new Date().toISOString(),hr=Date.now(),St=e.evidenceAttach?null:new zr({origin:"testmd",runKind:"author",pid:process.pid,title:l.rootTitle??fs(n),started:ze,producerVersion:Je,surfaces:he?[he]:void 0,testmdRelPath:wo(s,n),definition:{path:"test.md",content:gs(n,"utf8")},cwd:s,packRootDir:de(a.sessionDir,"evidence")}),ce=_o(e.evidenceAttach,St),re=ce.session,T=null;if(e.evidenceAttach)T={executionId:e.evidenceAttach.id,testId:e.evidenceAttach.test,packTestDir:e.evidenceAttach.packTestDir};else if(St)try{T=await St.start()}catch(d){a.log("warn","EVIDENCE_START_FAILED","Evidence pack creation failed",{error:String(d)})}let Ge=[],wt=[],br,_t=(d,u,p,b,h)=>{if(!T)return;re.noteSpawn(h?.length?{...d,steps:d.steps.map(I=>({...I,verifies:h}))}:d),d.resolution&&(br=d.resolution),Ge.push(Io(u));let g=pt(u,b);for(let I=0;I<g;I++)wt.push(p+I)},It=()=>T?{packTestDir:T.packTestDir,ordinalOffset:re.nextOrdinalOffset()}:void 0,_s=typeof o.maxSteps=="string"&&o.maxSteps!==""?parseInt(o.maxSteps,10):void 0;function yr(d,u){let p=l.steps[d],b=ps(p.config,y),h=Ae(ge.raw,b.variables,p.objective);return qn({objective:h.objective,url:d===0?he??void 0:p.unitEntryUrl,requireStartUrl:d===0&&ws,model:x,chrome:oe,auth:c,sessionId:a.sessionId,runIndex:u,windowSize:{width:1920,height:1080},maxSteps:b.max_steps??_s??30,headless:X.headless??!1,disableAskUser:!0,variables:Object.keys(h.variables).length>0?h.variables:void 0,globalContext:b.global_context??fr,localContext:b.local_context??pr,sessionContext:a.getContext(),bugDetection:o.bugDetection??U.bug_detection,evidence:It()})}function vr(d){let p=l.steps[d].trace[0].stepIndex,b=l.rootSteps.find(g=>g.index===p);l.steps.slice(0,d).some(g=>g.trace[0].stepIndex===p)||t.onAgentEvent({type:"test_md_step_start",step_index:p,heading:b.heading,ref:b.body.kind==="import_ref"?{kind:"import",label:b.body.path,unit_kind:b.body.path.endsWith("_test.md")?"test":"helper"}:null})}function Rt(d,u,p,b,h,g){let I=l.steps[d],C=I.trace[0].stepIndex,j=!l.steps.slice(d+1).some(D=>D.trace[0].stepIndex===C),F=p?.status==="passed"?"passed":"failed",O=p?.reason??h??void 0,W=p?.duration??g,S=p?.verdict;if(S&&typeof S=="object"){let D=typeof S.one_liner=="string"?S.one_liner:"",H=typeof S.bug_title=="string"&&S.bug_title?S.bug_title:D;if(H&&F==="failed"){let Q=[S.family,S.category].filter(Boolean).join("/"),J=typeof S.confidence=="number"?`, confidence ${S.confidence.toFixed(2)}`:"";O=`${O??"failed"} \u2014 bug verdict: ${H}${Q?` [${Q}${J}]`:""}`}let v=typeof S.category_proposal=="string"?S.category_proposal:"";v&&F==="failed"&&(O=`${O??"failed"}; category proposal: ${v} \u2014 consider adding to taxonomy`),t.onAgentEvent({type:"test_md_bug_verdict",step_index:I.trace[0].stepIndex,confirmed:S.confirmed===!0,bug_title:H||null,family:S.family??null,category:S.category??null,category_proposal:v||null,severity:S.severity??null,confidence:typeof S.confidence=="number"?S.confidence:null,one_liner:D||null})}let{continueOverall:N}=me.recordStep(I,{status:F,duration_s:W,reason:O}),V=ps(I.config,y),K=Ae(ge.raw,V.variables,I.objective).objective;if(p){let D=Tn(p,u,b);a.addRunResult(Ln(p,K,u,D),p.total_runs)}else a.addRunResult({index:u,objective:K,status:F,summary:"",context:{memory:{},variables:{},pointer:""}},1);if(j||!N){let D=me.snapshotOutcomes().find(H=>H.rootStepIndex===C);t.onAgentEvent({type:"test_md_step_end",step_index:C,status:D.status,duration_s:D.duration_s??0,ref_kind:D.refKind??null,unit_kind:D.refKind==="import"?(D.refLabel??"").endsWith("_test.md")?"test":"helper":null,inlined_count:D.inlinedCount??null,failed_sub_step_index:D.failedSubStepIndex??null})}return N}let kt=[];async function Is(d){pn(d,l.steps.length);for(let u=0;u<d;u++){if(z||e.signal?.aborted)return{failedAt:u,cancelled:!0};if(He())return{failedAt:u,cancelled:!1};let p=l.steps[u],b=m.decisions[u];if(b.kind!=="replay")return process.stderr.write(`error: runReplayPhase invoked on a non-replay decision at step ${u}
39
- `),{failedAt:u,cancelled:!1};let h=a.nextRunIndex();M=h;let g=u===0?he??void 0:l.steps[u].unitEntryUrl,I={width:U.window_size.width,height:U.window_size.height},C=Ae(ge.raw,p.config.variables,p.objective),j=Mt({step:p,decision:b,chrome:oe,auth:c,sessionId:a.sessionId,runIndex:h,sessionDir:a.sessionDir,windowSize:I,forceNavigateUrl:g,sessionContext:a.getContext(),variables:Object.keys(C.variables).length>0?C.variables:void 0,evidence:It(),investigationAsync:!ce.ownsLifecycle});await vt(C.raw),vr(u);let F=Date.now(),O=null,W=null,S=nt(),N={...j};delete N.run_id,Pt(N,{environment:w});let V=`run-${h}`;try{G?.setRunActive(!0);try{for await(let v of ee.run(V,"replay",N)){if(t.onAgentEvent(v),S=Tt(S,v),v.type==="step_event"&&v.event==="reasoning"?G?.setStepText(v.detail):v.type==="step_end"&&(v.status==="passed"&&G?.setStepComplete(),Le&&Le(v.index,0,v.child_id,typeof v.ordinal=="number"&&v.id?{ordinal:v.ordinal,id:v.id}:void 0)),v.type==="run_end"){O=v;break}if(v.type==="error"){W=v.message??"runner error";break}}!ce.ownsLifecycle&&O?.status==="failed"&&kt.push({exited:ee.exited.then(()=>{}).catch(()=>{}),cancel:()=>{try{ee?.cancel()}catch{}}})}finally{G?.setRunActive(!1)}}catch(v){W=v.message}if(ee.diedUnexpectedly&&He(),z)return{failedAt:u,cancelled:!0};let K=Math.round((Date.now()-F)/1e3),D=Rt(u,h,O,null,W,K);a.recordStepRun({testmdStepIndex:l.steps[u].flatIndex,runIndex:h,totalRunDirs:pt(O,null)}),_t(S,O,h,null,l.steps[u].verifies);let H=!!W||O?.status==="failed";if(gn(u,H?"failed":"ok"),H||!D)return{failedAt:u,cancelled:!1}}return{failedAt:null,cancelled:!1}}let Sr=async()=>{if(_)return!0;let d=c.basicAuth;if(!d){let h=await c.resolver.resolve(!0);h?.username&&h?.access_key&&(d={username:h.username,access_key:h.access_key},c.basicAuth=d)}if(!m.testId||!m.fromCommitId||!d)return process.stderr.write(`error: cannot acquire lock \u2014 missing required state
40
- `),!1;let u=a.sessionId,p=o.onLockConflict??l.rootGlobal.on_lock_conflict??"readonly",b=await rr({tmsBaseUrl:A.tmsBaseUrl,testId:m.testId,fromCommitId:m.fromCommitId,newCommitId:u,basicAuth:d,onLockConflict:p});if(b==="ok"){_=!0,m.newCommitId=u,a.log("info","MID_RUN_LOCK_ACQUIRED","Mid-run lock acquired",{test_id:m.testId}),i&&t.onLockState({phase:"acquired",scope:"mid_run"}),lt({baseUrl:xe(A.tmsBaseUrl),testId:m.testId,auth:Pe(d),lifecycle:r});let h=await hs({resolved:l,decisions:m.decisions,tmsBaseUrl:A.tmsBaseUrl,newCommitId:u,basicAuth:d,mode:p,lifecycle:r,alreadyLocked:m.unitLocks,allUnits:!0});return h.outcome==="ok"?m.unitLocks.push(...h.locks):process.stderr.write(`warn: mid-run unit lock acquisition degraded (${h.outcome}) \u2014 affected units will not self-commit
41
- `),!0}return a.log("error","MID_RUN_LOCK_CONFLICT","Mid-run lock acquisition failed",{reason:b}),i&&t.onLockState({phase:"conflict",scope:"mid_run",reason:b}),process.stderr.write(`error: mid-run lock acquisition failed (${b})
42
- `),!1};if(i){let d=rt();if(!d)return process.stderr.write("error: v16-runner not found. Build the binary with `cd v16-runner && python build.py` or ensure Python is available.\n"),r.cleanup("marker-overlay","v16-runner not found"),r.cleanup("chrome","v16-runner not found"),await a.finish("complete"),{overallStatus:"failed",exitCode:2,outputDir:ne(n),durationS:0,uploadResult:null};let u=$r({environment:w,mode:y.mode??"testing",assertionMode:ir,finalValidation:lr,username:c.basicAuth?.username,accessKey:c.basicAuth?.access_key,sessionId:a.sessionId});ee=new Mr({env:u,runner:d,log:(C,j,F,O)=>a.log(C,j,F,O),sessionId:a.sessionId}),r.register("runner",()=>{(Or()||e.signal?.aborted)&&(z=!0);try{ee?.kill()}catch{}});let p={cdp_endpoint:oe.cdpEndpoint,ws_endpoint:oe.wsEndpoint,width:U.window_size.width,height:U.window_size.height,headless:X.headless??!1,model:x,session_id:a.sessionId};c.basicAuth?(p.username=c.basicAuth.username,p.access_key=c.basicAuth.access_key):c.token&&(p.auth={type:"bearer",token:c.token}),await ee.start(p);let b=o.author===!0;b&&($t(),a.log("info","FORCE_AUTHOR_RUN","--author flag set; walker bypassed"));let{authorBoundary:h,cancelledInPhase:g,shrinkCount:I}=await Sn({decisions:m.decisions,forceAuthor:b,hasRetry:o.retry===!0||o.retryCount!==void 0,maxShrinks:o.retryCount!==void 0?parseInt(o.retryCount,10):je.maxShrinks,runReplayPhase:Is,session:a,accumulator:me,acquireLockIfNeeded:Sr});if(se=I>0,I>0&&(a.log("info","RETRY_TRIGGERED","Retry loop triggered",{shrink_count:I,final_author_boundary:h}),t.onRetryAttempt({shrink_count:I,final_author_boundary:h,complete_reauthor:h===0})),h===0&&I>0&&a.log("info","COMPLETE_REAUTHOR_TRIGGERED","Complete reauthor fallback",{shrink_count:I}),!g&&h>=0)for(let C=h;C<l.steps.length&&!e.signal?.aborted;C++){let j=l.steps[C];if(He()){me.recordStep(j,{status:"failed",duration_s:0,reason:"v16-runner exited unexpectedly mid-session"});break}if(!me.shouldRunFlatStep(j))continue;vr(C),L=!0,ue.add(l.steps[C].flatIndex);let F=a.nextRunIndex();M=F,await vt(Ae(ge.raw,j.config.variables,j.objective).raw);let O=yr(C,F),W=Date.now(),S=null,N=null,V=null,K=!1,D=0,H=nt(),v={...O};delete v.run_id,Pt(v,{environment:w});let Q=`run-${F}`;try{G?.setRunActive(!0);try{for await(let P of ee.run(Q,"author",v)){if(t.onAgentEvent(P),H=Tt(H,P),P.type==="bifurcation"){let Oe=P.count??P.flows?.length??0;(P.is_single_flow??Oe<=1)||(V=P.flows??null,K=!0,D=0)}else if(P.type==="run_start"&&K)D++;else if(P.type==="step_event"&&P.event==="reasoning")G?.setStepText(P.detail);else if(P.type==="step_end"&&(P.status==="passed"&&G?.setStepComplete(),Le)){let Oe=K?Math.max(0,D-1):0;Le(P.index,Oe,P.child_id,typeof P.ordinal=="number"&&P.id?{ordinal:P.ordinal,id:P.id}:void 0)}if(P.type==="run_end"){S=P;break}if(P.type==="error"){N=P.message??"runner error";break}}}finally{G?.setRunActive(!1)}}catch(P){N=P.message}ee.diedUnexpectedly&&He();let J=Math.round((Date.now()-W)/1e3),De=Rt(C,F,S,V,N,J);if(a.recordStepRun({testmdStepIndex:l.steps[C].flatIndex,runIndex:F,totalRunDirs:pt(S,V)}),_t(H,S,F,V,l.steps[C].verifies),!De||z||e.signal?.aborted)break}}else{let{effectiveDecisions:d}=await import("./effective-decisions-DRM3JSR4.js"),{decideRetry:u}=await import("./replay-policy-6USQBT3E.js"),p=o.retry===!0||o.retryCount!==void 0,b=o.retryCount!==void 0?parseInt(o.retryCount,10):je.maxShrinks,h=o.author===!0;h&&($t(),a.log("info","FORCE_AUTHOR_RUN","--author flag set; walker bypassed"));let g=h?0:it(m.decisions),I=0,C=null,j=m.decisions.filter(S=>S.kind==="replay").length,F=m.decisions.length-j,O=[];o.push&&O.push("--push"),p&&O.push("--retry"),o.retryCount!==void 0&&O.push(`--retry-count=${o.retryCount}`),h&&O.push("--author");let W={source:n,steps:{total:m.decisions.length,replay:j,author:F},model:x,viewport:{width:U.window_size.width,height:U.window_size.height},chrome:oe.cdpEndpoint??oe.wsEndpoint??"managed",session:a.sessionName??"ephemeral",variables:{count:Object.keys(te.raw).length,secrets:Object.values(te.raw).filter(S=>S.secret).length,names:Object.keys(te.raw)},flags:O,mode:y.mode??"testing"};for(;;){let S=a.snapshot(),N=me.snapshot(),V=d(m.decisions,g,h);if(I>=1){let v=g===0?`\u21BB Complete re-author \u2014 retry budget exhausted (${I}/${b})`:`\u21BB Retry ${I}/${b} \u2014 replay 0..${g-1}, author ${g}..${m.decisions.length-1}
43
- reason: replay miss at step ${(C??0)+1}`;process.stderr.write(v+`
44
- `)}let K=I>=1&&g>0&&C!==null?{startIdx:0,endIdx:C,count:C}:void 0;G?.setRunActive(!0);let D=await xo({decisions:V,resolved:l,session:a,accumulator:me,tuiConfig:U,globalConfig:W,buildStepConfigAt:yr,buildReplayConfig:v=>{let Q=m.decisions[v];if(Q.kind!=="replay")throw new Error("expected replay decision at index "+v);let J=l.steps[v];return Mt({step:J,decision:Q,chrome:oe,auth:c,sessionId:a.sessionId,runIndex:a.nextRunIndex(),sessionDir:a.sessionDir,windowSize:{width:U.window_size.width,height:U.window_size.height},forceNavigateUrl:v===0?he??void 0:J.unitEntryUrl,sessionContext:a.getContext(),variables:ko(ge.raw,J.config.variables,J.objective),evidence:It()})},onAnyAuthorStep:v=>{L=!0,ue.add(l.steps[v].flatIndex)},onCancel:()=>{Z=!0},topBannerModel:x,topBannerAuth:`${k.getActiveProfile()??"no profile"}/${w}`,spawnOpts:{environment:w,mode:y.mode??"testing",assertionMode:ir,finalValidation:lr,log:(v,Q,J,De)=>a.log(v,Q,J,De)},priorAttemptRollup:K,pushStepLevelDelta:(v,Q)=>vt(Ae(ge.raw,v,Q).raw),onSequencerStepEnd:(v,Q,J,De)=>{let P=Math.round((Date.now()-De)/1e3),Oe=v.hadError?v.reason??"runner error":null,As=Rt(Q,J,v.runEnd,v.bifurcationFlows??null,Oe,P);return a.recordStepRun({testmdStepIndex:l.steps[Q].flatIndex,runIndex:J,totalRunDirs:pt(v.runEnd,v.bifurcationFlows)}),_t(v.evidence??nt(),v.runEnd,J,v.bifurcationFlows,l.steps[Q].verifies),As},screenshotDispatcher:Le,onReasoning:v=>G?.setStepText(v),onStepComplete:()=>G?.setStepComplete(),onSpawnStart:v=>{M=v},host:t});if(G?.setRunActive(!1),D.cancelled){r.cleanup("marker-overlay","user cancelled run"),r.cleanup("chrome","user cancelled run");break}if(D.failedAt===null)break;let H=u({failedAt:D.failedAt,shrinkCount:I,hasRetry:p,maxShrinks:b});if(H.kind==="fail"||!_&&!await Sr())break;a.rollback(S),me.rollback(N),H.kind==="complete-reauthor"?g=0:g=H.newAuthorBoundary,I++,se=!0,a.log("info","RETRY_TRIGGERED","Retry loop triggered (TTY)",{shrink_count:I,failed_at:C}),g===0&&a.log("info","COMPLETE_REAUTHOR_TRIGGERED","Complete reauthor fallback (TTY)",{shrink_count:I}),C=D.failedAt}}let Y=me.finalize(),be=Math.round((Date.now()-hr)/1e3),Rs={session:a,resolvedAuth:c,chromeResult:oe,chromeInstance:Ke??null,testId:a.testId??null,preparedVariables:te,variableIds:qe,globalContext:fr,localContext:pr,tuiConfig:U,env:w,localMode:!!o.local},wr=!1,_r=!1,Ir=!1,Rr=async(d={})=>{if(!T)return!1;if(ce.ownsLifecycle?wr:Ir)return!0;try{let u=await dr(),p=er(L)==="replay",b=de(ne(n),".internal","execution.json"),h=de(a.sessionDir,"execution.json"),g=Jr(T.packTestDir,p?[b,h]:[h,b],(S,N,V,K)=>a.log(S,N,V,K)),{ids:I,linear:C}=g?Xr(T.packTestDir):{ids:[],linear:!0},{steps:j,tail:F,unjoined:O}=Zr(re.steps,I,p,C);g?O?a.log("warn","SKIPPED_TAIL_UNJOINED","Executed records don't align with the authored blob \u2014 skipped tail withheld",{executed:re.steps.length,leaves:I.length}):F.length>0&&a.log("info","SKIPPED_TAIL_APPENDED","Unexecuted authored actions recorded as skipped",{count:F.length}):a.log("warn","SKIPPED_TAIL_NO_BLOB","No auteur blob in pack \u2014 unexecuted actions cannot be recorded as skipped",{});let W=await re.writeResult({steps:[...j,...F],spawns:Ge.length?Ge:[{resultCode:null}],tags:l.rootGlobal.tags,externalIdInput:{execution_id:T.executionId,session_id:a.sessionId,commit_id:p?m.fromCommitId??a.sessionId:a.sessionId,test_id:m.testId??a.testId??void 0,testcase_id:d.testcaseId??m.testcaseId??a.testcaseId??void 0,project_id:$??void 0,folder_id:fe??void 0,org_id:a.orgId!=null?String(a.orgId):void 0,session_name:a.sessionName??Ue(n),user_name:a.userName??void 0,user_email:a.userEmail??void 0,sharable_link:Nn(ie(w).testManagerUiUrl,$,d.testcaseId??m.testcaseId??a.testcaseId,d.shareId)},runnerEnv:Hr({cdpBrowser:u,resolution:br}),intentEnv:{model:x,platform:"Desktop",platform_type:"web",...ce.ownsLifecycle?{}:{run_kind:er(L)}},durationMs:Date.now()-hr,log:(S,N,V,K)=>a.log(S,N,V,K)});if(!ce.ownsLifecycle)return await Vr(re.pack,T.testId,de(a.sessionDir,"tui.log")),Ir=!0,a.log("info","EVIDENCE_RESULT_WRITTEN","Member result.yaml written",{execution_id:T.executionId,verdict:W}),!0;if(!_r)try{let S=Wr({cwd:process.cwd(),members:[{path:n,verdict:W,executionId:T.executionId,startedAt:new Date().toISOString(),acs:Yr(re.steps),mode:"testmd",local:!!o.local}]});_r=!0;for(let N of S.warnings)a.log("warn","EXEC_SYNC",N,{});S.synced>0&&a.log("info","EXEC_SYNC",`context sync: ${S.synced} fact(s), ${S.superseded} supersession(s)`,{})}catch(S){a.log("warn","EXEC_SYNC",`exec-sync failed: ${S instanceof Error?S.message:String(S)}`,{})}try{let S=Qr(re.pack,Gr(process.cwd()));S.status==="skipped"&&a.log("warn","EVIDENCE_COVERAGE_SKIPPED",`coverage/usecases.yaml not written: ${S.reason}`,{})}catch(S){a.log("warn","EVIDENCE_COVERAGE_SKIPPED","coverage writer threw",{error:String(S)})}return await Kr({executionId:T.executionId,testId:T.testId,saved:!0,runKind:er(L),verdict:W,outputStemDir:ne(n),cwd:s,packDir:re.pack,tuiLogPath:de(a.sessionDir,"tui.log"),expectStatusDisagrees:(o.bugDetection??U.bug_detection)==="continue",log:(S,N,V,K)=>a.log(S,N,V,K),surface:"testmd"}),wr=!0,a.log("info","EVIDENCE_SEALED","Evidence pack sealed",{execution_id:T.executionId,verdict:W}),!0}catch(u){return a.log("warn","EVIDENCE_SEAL_FAILED","Evidence pack seal failed",{error:String(u)}),!1}},Ye=we&&(_||m.isFirstRun)&&!m.degradedReadonly,ks=async()=>{if(!c.basicAuth)return null;let d=ie(w),u=(L||o.push===!0)&&!Z,p=(_||m.isFirstRun)&&!Z&&Y.overallStatus==="passed"&&!m.degradedReadonly;a.log("info","PIPELINE_GATE_STATE","Derived gate state (finalize)",{phase:"finalize",shouldUploadArtifacts:we,shouldUploadPipeline:Ye,shouldReplaceLocalOutput:u,shouldCommit:p,lockHeld:_,anyAuthorStepRan:L,cancelled:Z,overallStatus:Y.overallStatus});let b=ss({session:a,env:w,auth:c,variables:te,variableIds:qe,projectId:$,folderId:fe,totalSteps:Y.outcomes.length,totalDuration:be,screenshotExtMap:Te?.getExtMap(),codeExport:is({codeExport:o.codeExport,codeLanguage:o.codeLanguage,skipCodeValidation:o.skipCodeValidation},U.code_export),onProgress:()=>{},log:(g,I,C,j)=>a.log(g,I,C,j),shouldUploadArtifacts:Ye,shouldReplaceLocalOutput:u,shouldCommit:p,isFirstRun:m.isFirstRun,resolvedTest:l,sourcePath:n,stepRunRecords:a.getStepRunRecords(),authoredFlatIdx:[...ue],unitLocks:m.unitLocks,outcomes:Y.outcomes,overallStatus:Y.overallStatus,fromCommitId:m.fromCommitId,startedISO:ze,durationS:be,tmsIds:{testId:m.testId??a.testId??void 0,testcaseId:m.testcaseId??a.testcaseId??void 0,projectId:$??void 0,folderId:fe??void 0,orgId:a.orgId??void 0,sessionName:a.sessionName??Ue(n)},tmsBaseUrl:A.tmsBaseUrl,testId:m.testId??void 0,newCommitId:m.newCommitId??void 0,basicAuth:c.basicAuth??void 0,decisions:m.decisions,wantsPush:o.push===!0,retryTriggered:se,forceAuthor:o.author===!0,evidence:T&&ce.ownsLifecycle?{executionId:T.executionId,packTestDir:T.packTestDir,sealedPackPath:re.pack,cwd:s,runIndices:wt,sealFn:Rr}:void 0,evidenceRead:T&&!ce.ownsLifecycle?{packTestDir:T.packTestDir,runIndices:wt}:void 0,authoredExecutionPath:L?void 0:de(ne(n),".internal","execution.json")});m.newCommitId!=null&&(b.skipTmsFinalize=!0);let h=new un(b);return i?await h.execute():await t.runUpload(h,g=>{if(g.testcaseId&&g.shareId&&$)return dt(d.testManagerUiUrl,$,g.testcaseId,g.shareId)})};T&&await dr(),ee&&(await ee.shutdown(),r.cleanup("runner","test.md run complete"));let le=await ts(Rs,{performUpload:ks,runCleanup:()=>{r.cleanup("chrome","test.md run complete")},log:(d,u,p,b)=>a.log(d,u,p,b)},{overallStatus:Y.overallStatus,outcomes:Y.outcomes,sourcePath:n,title:l.rootTitle,rootSteps:l.rootSteps,startedISO:ze,durationS:be,localMode:!!o.local,skipLocalWrites:!0}),kr=await Rr({testcaseId:le.uploadResult?.testcaseId,shareId:le.uploadResult?.shareId}),Cr=o.evidencePublish===!1,Er=ce.ownsLifecycle&&!!T&&!!c.basicAuth&&cs({shouldUploadArtifacts:we,lockHeld:_,isFirstRun:m.isFirstRun,sealed:kr,testId:m.testId});if(Er&&Cr)a.log("info","EVIDENCE_PUBLISH_SKIPPED","Replay evidence publish skipped (--no-evidence-publish)",{execution_id:T.executionId}),process.stderr.write(`info: evidence publish skipped (--no-evidence-publish)
45
- `);else if(Cr&&(_||m.isFirstRun))process.stderr.write(`note: --no-evidence-publish has no effect on author/commit runs
46
- `);else if(Er){let d=c.basicAuth,u=T,p=$,b=await ds({controller:new Ie(A.controllerBaseUrl,{username:d.username,accessKey:d.access_key}),tms:new et(A.tmsBaseUrl,c.resolvedCreds?.username??d.username,c.resolvedCreds?.access_key??d.access_key),testId:m.testId,sessionId:a.sessionId,executionId:u.executionId,sealedPackPath:re.pack,projectId:p});b.ok?a.log("info","EVIDENCE_INGESTED","Replay evidence uploaded and ingested",{execution_id:u.executionId,project_id:p}):(a.log("warn","EVIDENCE_PUBLISH_FAILED","Replay evidence publish failed",{execution_id:u.executionId,stage:b.stage,error:b.error}),process.stderr.write(` \u26A0 evidence publish failed (${b.stage}): ${b.error}
47
- `)),t.onAgentEvent({type:"test_md_evidence_ingest",status:b.ok?"ok":"failed",evidence_id:u.executionId,...b.ok?{}:{stage:b.stage}})}await Ao(n,m,a,Y.outcomes,Y.overallStatus,ze,be,le.uploadResult,U,o,{resolvedAuth:c,tmsBaseUrl:A.tmsBaseUrl},_,Z);try{let d=ye(n);if(nn({shouldUploadPipeline:Ye,uploadSucceeded:!!le.uploadResult?.success,metaCommitId:d?.commit_id,metaTestId:d?.test_id})){let u=await Ot({sourcePath:n,testId:d.test_id,sessionId:a.sessionId,commitId:d.commit_id,controller:new Ie(A.controllerBaseUrl,{username:c.basicAuth.username,accessKey:c.basicAuth.access_key})});u.ok?a.log("info","BUNDLE_SYNC_OK","testmd bundle pushed",{commit_id:d.commit_id,bytes:u.bytes}):(a.log("warn","BUNDLE_SYNC_FAILED","testmd bundle sync failed",{commit_id:d.commit_id,stage:u.stage,error:u.error}),process.stderr.write(` \u26A0 bundle sync failed (${u.stage}): ${u.error}
48
- `)),t.onAgentEvent({type:"test_md_bundle_sync",status:u.ok?"ok":"failed",commit_id:d.commit_id,path:n,...u.ok?{bytes:u.bytes}:{stage:u.stage}})}}catch(d){a.log("warn","BUNDLE_SYNC_FAILED","testmd bundle sync threw",{error:d instanceof Error?d.message:String(d)})}if(Ye&&le.uploadResult?.success)for(let d of m.unitLocks)try{let u=ye(d.file);if(u?.commit_id!==a.sessionId||!u?.test_id)continue;let p=await Ot({sourcePath:d.file,testId:String(u.test_id),sessionId:a.sessionId,commitId:String(u.commit_id),controller:new Ie(A.controllerBaseUrl,{username:c.basicAuth.username,accessKey:c.basicAuth.access_key})});p.ok?a.log("info","BUNDLE_SYNC_OK","unit bundle pushed",{commit_id:u.commit_id,path:d.file,bytes:p.bytes}):a.log("warn","BUNDLE_SYNC_FAILED","unit bundle sync failed",{commit_id:u.commit_id,path:d.file,stage:p.stage,error:p.error}),t.onAgentEvent({type:"test_md_bundle_sync",status:p.ok?"ok":"failed",commit_id:u.commit_id,path:d.file,...p.ok?{bytes:p.bytes}:{stage:p.stage}})}catch(u){a.log("warn","BUNDLE_SYNC_FAILED","unit bundle sync threw",{path:d.file,error:u instanceof Error?u.message:String(u)})}let Ar=ie(w),We=le.uploadResult?.testcaseId,Qe=We&&le.uploadResult?.shareId&&$?dt(Ar.testManagerUiUrl,$,We,le.uploadResult.shareId):void 0,Cs=l.unitFiles.filter(d=>d.file!==l.rootPath).map(d=>{let u=l.steps.filter(g=>g.owningFile===d.file),p=u.filter(g=>ue.has(g.flatIndex)).length,h=(d.kind==="test"?ye(d.file):null)?.commit_id===a.sessionId;return{path:d.file,kind:d.kind,replayed:u.length-p,authored:p,committed:h,...h?{commit_id:a.sessionId}:{}}}),xr={overallStatus:Y.overallStatus,durationS:be,decisions:m.decisions,outcomes:Y.outcomes,cancelled:Z,retryTriggered:se,lockHeld:_,anyAuthorStepRan:L,isFirstRun:m.isFirstRun,wantsPush:o.push===!0,uploadResult:le.uploadResult,shouldUploadArtifacts:we,shouldReplaceLocalOutput:L&&!Z,shouldCommit:(_||m.isFirstRun)&&!Z&&Y.overallStatus==="passed"&&!m.degradedReadonly,shareUrl:Qe,imports:Cs},{buildSummaryEvent:Es}=await import("./SummaryBox-BFZJW2KK.js");if(i?t.onAgentEvent(Es(xr)):await t.onSummary(xr),!i){let d=We&&$?$n(Ar.testManagerUiUrl,$,We):void 0;await t.onLinks({recordedTestPath:n,outputDir:ne(n),shareableLink:Qe,testCaseLink:d,codeExportDir:le.uploadResult?.codeExportDir})}if(ce.ownsLifecycle&&re&&kr){let{offerEvidenceView:d}=await import("./evidence-V23FPVXQ.js");await d({packPath:re.pack,env:w,isTTY:!i&&!Z&&!!process.stdin.isTTY&&!!process.stderr.isTTY,log:u=>process.stderr.write(u+`
49
- `)})}return t.onAgentEvent({type:"test_md_done",overall_status:Y.overallStatus,duration_s:be,session_id:a.sessionId,...Qe?{share_url:Qe}:{}}),{overallStatus:Y.overallStatus,exitCode:Y.overallStatus==="passed"?0:1,outputDir:ne(n),durationS:be,uploadResult:le.uploadResult,anyAuthorStepRan:L,resultCode:Br(Ge),...kt.length?{pendingInvestigations:kt}:{}}}function Ro(e,t){let r={...e,...t},n=Object.keys(r).length>0?_e(r,""):{variables:{},objective:"",keyMap:{}};return{raw:r,auteur:n.variables,auteurObjective:"",secretEntries:Object.entries(r).filter(([,s])=>s.secret),nonSecretEntries:Object.entries(r).filter(([,s])=>!s.secret)}}function Ae(e,t,r){let n={...e,...t??{}};if(Object.keys(n).length===0)return{raw:n,variables:{},objective:r};let s=_e(n,r);return{raw:n,variables:Zn(s.variables,s.objective),objective:s.objective}}function ko(e,t,r){let n=Ae(e,t,r).variables;return Object.keys(n).length>0?n:void 0}function ps(e,t){let r=new Set(gt),n={...e};for(let[s,o]of Object.entries(t))r.has(s)||s!=="variables"&&o!==void 0&&e[s]===void 0&&(n[s]=o);return n}function Co(e,t){return e.length<=t?e:e.slice(0,t-1)+"\u2026"}async function Eo(e,t,r,n,s,o){let i=sn(t);fn(t,i);let f=Re(e),l=So(f)?JSON.parse(gs(f,"utf8")):null,c=l?.testcase_id,y=l?.test_id,w=l?.commit_id,A=r.push===!0,R=r.retry===!0||r.retryCount!==void 0,x=r.author===!0;A&&!c&&process.stderr.write(`[--push] no meta.json yet \u2014 flag is a no-op on first run
50
- `),x&&(c=void 0,y=void 0,w=void 0);let k=n.resolvedAuth.basicAuth;if(!k){let M=await n.resolvedAuth.resolver.resolve(!0);M?.username&&M?.access_key&&(k={username:M.username,access_key:M.access_key},n.resolvedAuth.basicAuth=k)}let E=!!k,a=!r.local&&E&&y!=null&&w!=null&&c!=null,z=a&&(ot(i)||A);if(A&&!a)return process.stderr.write(`error: --push requires authenticated credentials for the lock API. Run 'kane-cli login' (OAuth) or pass --username/--access-key inline.
51
- `),{resolved:t,decisions:i,testId:y,testcaseId:c,fromCommitId:w,newCommitId:null,isFirstRun:!1,hasAuth:E,canLock:a,lockAcquired:!1,unitLocks:[],degradedReadonly:!1,abort:{exitCode:2}};if(R&&!a)return process.stderr.write(`error: --retry requires authenticated credentials for the lock API. Run 'kane-cli login' (OAuth) or pass --username/--access-key inline.
52
- `),{resolved:t,decisions:i,testId:y,testcaseId:c,fromCommitId:w,newCommitId:null,isFirstRun:!1,hasAuth:E,canLock:a,lockAcquired:!1,unitLocks:[],degradedReadonly:!1,abort:{exitCode:2}};if(x&&!E)return process.stderr.write(`error: --author requires authenticated credentials for the TMS API. Run 'kane-cli login' (OAuth) or pass --username/--access-key inline.
53
- `),{resolved:t,decisions:i,testId:y,testcaseId:c,fromCommitId:w,newCommitId:null,isFirstRun:!1,hasAuth:E,canLock:a,lockAcquired:!1,unitLocks:[],degradedReadonly:!1,abort:{exitCode:2}};let m=null,_=!1,L=!1;if(z){m=s;let se=r.onLockConflict??t.rootGlobal.on_lock_conflict??"readonly",M=await rr({tmsBaseUrl:n.tmsBaseUrl,testId:y,fromCommitId:w,newCommitId:m,basicAuth:k,onLockConflict:se});if(M==="ok")_=!0,lt({baseUrl:xe(n.tmsBaseUrl),testId:y,auth:Pe(k),lifecycle:o});else{if(M==="abort")return{resolved:t,decisions:i,testId:y,testcaseId:c,fromCommitId:w,newCommitId:null,isFirstRun:!1,hasAuth:E,canLock:a,lockAcquired:!1,unitLocks:[],degradedReadonly:!1,abort:{exitCode:2}};m=null,L=!0}}let ue=[],Z=z&&!_;if(!r.local&&E&&!Z){let se=r.onLockConflict??t.rootGlobal.on_lock_conflict??"readonly",M=await hs({resolved:t,decisions:i,tmsBaseUrl:n.tmsBaseUrl,newCommitId:m??s,basicAuth:k,mode:se,lifecycle:o});if(M.outcome==="ok")ue=M.locks;else{if(_&&y&&w&&m&&await tr(n,y,w,m),ve(),M.outcome==="abort")return{resolved:t,decisions:i,testId:y,testcaseId:c,fromCommitId:w,newCommitId:null,isFirstRun:c==null,hasAuth:E,canLock:a,lockAcquired:!1,unitLocks:[],degradedReadonly:!1,abort:{exitCode:2}};process.stderr.write(`[lock] imported-unit conflict \u2014 whole run degrades to readonly (no commits, no uploads)
54
- `),m=null,_=!1,L=!0}}return{resolved:t,decisions:i,testId:y,testcaseId:c,fromCommitId:w,newCommitId:m,isFirstRun:c==null,hasAuth:E,canLock:a,lockAcquired:_,unitLocks:ue,degradedReadonly:L}}async function hs(e){let t=new Set(e.resolved.steps.filter((n,s)=>e.decisions[s]?.kind==="author").map(n=>n.owningFile)),r=[];for(let n of e.resolved.unitFiles){if(n.kind!=="test"||n.file===e.resolved.rootPath||!e.allUnits&&!t.has(n.file)||e.alreadyLocked?.some(i=>i.file===n.file))continue;let s=ye(n.file);if(!s?.test_id||!s?.commit_id)continue;let o=await rr({tmsBaseUrl:e.tmsBaseUrl,testId:String(s.test_id),fromCommitId:String(s.commit_id),newCommitId:e.newCommitId,basicAuth:e.basicAuth,onLockConflict:e.mode});if(o==="ok"){r.push({file:n.file,testId:String(s.test_id),fromCommitId:String(s.commit_id)}),lt({baseUrl:xe(e.tmsBaseUrl),testId:String(s.test_id),auth:Pe(e.basicAuth),lifecycle:e.lifecycle});continue}for(let i of r)await Fe({baseUrl:xe(e.tmsBaseUrl),testId:i.testId,body:{commitId:e.newCommitId,fromCommitId:i.fromCommitId},auth:Pe(e.basicAuth)}),ve(i.testId);return{outcome:o,locks:[]}}return{outcome:"ok",locks:r}}function xe(e){return`${e}/kane-cli/v1`}function Pe(e){return{username:e.username,accessKey:e.access_key}}async function rr(e){let t=xe(e.tmsBaseUrl),r=Pe(e.basicAuth),n={baseUrl:t,testId:e.testId,fromCommitId:e.fromCommitId,newCommitId:e.newCommitId,auth:r},s=await Vt(n);if(s.ok)return"ok";if(!(s.reason==="concurrent"||s.reason==="base_mismatch"))return process.stderr.write(`[lock] acquire failed: ${s.reason} (HTTP ${s.httpStatus}): ${s.message}
55
- `),"abort";let i=s.reason==="concurrent"?"concurrent session":"base commit mismatch (pull latest)";if(e.onLockConflict==="fail")return process.stderr.write(`[lock] ${i}; aborting (--on-lock-conflict fail)
56
- `),"abort";if(e.onLockConflict==="wait"){if(s.reason==="base_mismatch")return process.stderr.write(`[lock] base commit mismatch \u2014 pull latest; aborting
57
- `),"abort";for(;;){process.stderr.write(`[lock] waiting (concurrent session)...
58
- `),await new Promise(l=>setTimeout(l,3e4));let f=await Vt(n);if(f.ok)return"ok";if(f.reason!=="concurrent")return process.stderr.write(`[lock] wait drifted to ${f.reason} (HTTP ${f.httpStatus}): ${f.message}; aborting
59
- `),"abort"}}return process.stderr.write(`[lock] ${i} \u2014 running in readonly mode (no commit)
60
- `),"readonly"}async function Ao(e,t,r,n,s,o,i,f,l,c,y,w,A){let{decisions:R,testId:x,testcaseId:k,fromCommitId:E,newCommitId:a}=t;if(!(s==="passed")||A){let m=A?"cancelled":s;w&&x&&E&&a&&(process.stderr.write(`[lock] run not committed (${m}); discarding playground lock
61
- `),await tr(y,x,E,a));for(let _ of t.unitLocks)await tr(y,_.testId,_.fromCommitId,a??r.sessionId);ve();return}ve()}async function tr(e,t,r,n){let s=e.resolvedAuth.basicAuth;if(!s){let i=await e.resolvedAuth.resolver.resolve(!0);i?.username&&i?.access_key&&(s={username:i.username,access_key:i.access_key},e.resolvedAuth.basicAuth=s)}if(!s)return;let o=await Fe({baseUrl:xe(e.tmsBaseUrl),testId:t,body:{commitId:n,fromCommitId:r},auth:Pe(s)});o.ok||process.stderr.write(`warn: discardLock failed: ${o.reason} (HTTP ${o.httpStatus}): ${o.message}
62
- `)}async function xo(e){let t=null,r=!1,n=0,s=-1,o=-1,i=0,f=async l=>{if(l&&l.status==="failed")return n>0&&e.decisions[n-1].kind==="replay"&&(t=n-1),null;for(;n<e.decisions.length&&!e.accumulator.shouldRunFlatStep(e.resolved.steps[n]);)n++;if(n>=e.decisions.length)return null;let c=e.decisions[n],y=e.resolved.steps[n],w=n;n++;let A=e.session.nextRunIndex();s=w,o=A,i=Date.now(),e.onSpawnStart?.(A),c.kind==="author"&&e.onAnyAuthorStep(w),await e.pushStepLevelDelta(y.config.variables,y.objective);let R=c.kind==="replay"?e.buildReplayConfig(w):e.buildStepConfigAt(w,A),x=c.kind==="replay"?"md5-match":c.reason,k=y.config??{},E={};for(let[a,z]of Object.entries(k))z!=null&&a!=="variables"&&a!=="assurance"&&(E[a]=z);return{config:R,banner:{stepLabel:`Step ${w+1}/${e.decisions.length}`,objective:Co(y.objective,100)},mode:c.kind,modeReason:x,perStepOverrides:Object.keys(E).length>0?E:void 0}};return await e.host.runSteps({topBanner:{model:e.topBannerModel,auth:e.topBannerAuth},globalConfig:e.globalConfig,getNextStep:f,onStepEnd:l=>(l.status==="failed"&&s>=0&&e.decisions[s]?.kind==="replay"&&(t=s),e.onSequencerStepEnd(l,s,o,i)),onAllComplete:()=>{},onCancel:()=>{r=!0,e.onCancel()},spawnOpts:e.spawnOpts,priorAttemptRollup:e.priorAttemptRollup,screenshotDispatcher:e.screenshotDispatcher,onReasoning:e.onReasoning,onStepComplete:e.onStepComplete}),{failedAt:t,cancelled:r}}export{Tn as a,Ln as b,ut as c,bi as d,Kn as e,jn as f,Yo as g,xn as h,Pn as i,Ht as j,Dn as k,On as l,dt as m,Nn as n,$n as o,Hn as p,qn as q,Zn as r,Xn as s,es as t,zt as u,ss as v,is as w,as as x,ls as y,Zt as z,Ia as A,ds as B,er as C,Al as D,Ro as E,Ae as F,ko as G,ps as H};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as g}from"./chunk-XDHZMCTA.js";import{existsSync as u}from"fs";import{dirname as d,resolve as i}from"path";import{fileURLToPath as p}from"url";var f=d(p(import.meta.url));function A(){return[i(f,".."),i(f,"../../..")]}function _(o){return{"darwin-arm64":"kane-cli-darwin-arm64","darwin-x64":"kane-cli-darwin-x64","linux-x64":"kane-cli-linux-x64","linux-arm64":"kane-cli-linux-arm64","win32-x64":"kane-cli-win-x64"}[o]??null}function w(){let o=_(`${process.platform}-${process.arch}`),n=process.platform==="win32"?"assurance-agent.exe":"assurance-agent";for(let r of A()){for(let s of o?["@testmuai","@lambdatestincprivate"]:[]){let e=i(r,"node_modules",s,o,"bin",n);if(u(e))return{cmd:e,args:[],tier:"platform"}}let a=i(r,"../assurance-agent/dist",n);if(u(a))return{cmd:a,args:[],tier:"sibling"};let t=i(r,"../assurance-agent/main.py");if(u(t)){let s=i(r,"../assurance-agent/.venv/bin/python");return{cmd:u(s)?s:"python3",args:[t],tier:"dev-python"}}}return null}function x(o,n={}){return{...process.env,...n,...g(),TESTMUAI_SOURCE:"kane-cli",TESTMUAI_SESSION_ID:o,ASSURANCE_LOG_LEVEL:process.env.ASSURANCE_LOG_LEVEL??"info"}}async function k(){if(process.env.TESTMUAI_API_KEY||process.env.TESTMUAI_BASIC_AUTH)return{};try{let{CredentialsManager:o}=await import("./credentials-XN4ROCQ3.js"),n=process.env.TESTMUAI_ENV==="stage"?"stage":"prod",r=new o,a=r.getActiveProfile()??"default",t={TESTMUAI_ENV:n},s=r.loadBasicAuth(a,n);if(s)return t.TESTMUAI_BASIC_AUTH=Buffer.from(`${s.username}:${s.access_key}`,"utf8").toString("base64"),t;let e=r.loadCredentials(a,n);if(e){try{let{refreshOAuthToken:l}=await import("./token-refresh-NIDUOTRM.js");await l({creds:r,profile:a,env:n,credentials:e})}catch{}let c=r.loadCredentials(a,n)??e;if(typeof c.access_token=="string"){let l=await T(n,c.access_token);return l?(t.TESTMUAI_BASIC_AUTH=l,t):(t.TESTMUAI_API_KEY=c.access_token,t)}}return{}}catch{return{}}}var E=8e3;function m(){return process.stderr.write("warn: session auth may expire during long runs \u2014 if that happens, run `kane-cli login` and retry\n"),null}async function T(o,n){try{let[{getEnvironment:r},{ControllerClient:a}]=await Promise.all([import("./config-R3GF2FZA.js"),import("./controller-client-RD2YEMAH.js")]),t=new a(r(o).controllerBaseUrl,n),s;try{let e=await Promise.race([t.getTmsCredentials().catch(()=>null),new Promise(c=>{s=setTimeout(()=>c(null),E)})]);return typeof e?.username!="string"||!e.username||typeof e.access_key!="string"||!e.access_key?m():Buffer.from(`${e.username}:${e.access_key}`,"utf8").toString("base64")}finally{clearTimeout(s)}}catch{return m()}}export{_ as a,w as b,x as c,k as d};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- function S(e,n){let{width:t,height:r,channels:a}=n;if(e.length!==t*r*a)throw new Error(`appearanceSignature: buffer ${e.length} bytes does not match ${t}x${r}x${a}`);let f=9,h=8,x=new Array(f*h);for(let o=0;o<h;o++){let l=Math.floor(o*r/h),d=Math.min(r,Math.max(l+1,Math.floor((o+1)*r/h)));for(let c=0;c<f;c++){let y=Math.floor(c*t/f),A=Math.min(t,Math.max(y+1,Math.floor((c+1)*t/f))),b=0,p=0;for(let u=l;u<d;u++)for(let m=y;m<A;m++){let s=(u*t+m)*a;b+=a===1?e[s]:Math.floor((e[s]*299+e[s+1]*587+e[s+2]*114)/1e3),p+=1}x[o*f+c]=Math.floor(b/p)}}let M="",i=0,g=0;for(let o=0;o<h;o++)for(let l=0;l<f-1;l++)i=i<<1|(x[o*f+l+1]>x[o*f+l]?1:0),g+=1,g===4&&(M+=i.toString(16),i=0,g=0);return M}var $=(()=>{let e=new Uint32Array(256);for(let n=0;n<256;n++){let t=n;for(let r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;e[n]=t>>>0}return e})();function C(e){let n=4294967295;for(let t=0;t<e.length;t++)n=$[(n^e[t])&255]^n>>>8;return(n^4294967295)>>>0}export{S as a,C as b};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as P}from"./chunk-YCCUBQY4.js";import{y as a}from"./chunk-C4G7RVJ6.js";import{a as S}from"./chunk-HCBYKLMW.js";import{a as M,b as n,i as $,k as B}from"./chunk-C44QQJR4.js";import{a as N}from"./chunk-6YGTRKDT.js";import{e as b}from"./chunk-UR6MHSHU.js";var o=b(S(),1);function Q(m){let e=m.findIndex(c=>c.free);return e>=0?e:null}var _=60,I=100;function X({headline:m,ask:e=!1,rows:c,sel:r,focused:T,legend:u,freeText:l=null,freeTextNote:x,sublines:i=[]}){let{stdout:t}=B(),f=t?.columns??80,A=f<_,s=Math.min(f-1,I),g=d=>T&&r===d?(0,o.jsx)(n,{color:a.assuranceAccent,children:"\u276F"}):" ",p=e?`? ${m}`:m,w=Math.max(4,s-3),h=i.map((d,v)=>(0,o.jsx)(n,{color:a.dim,children:` ${d.length>w?`${d.slice(0,w-1)}\u2026`:d}`},`sub-${v}`)),C=0,E=c.map((d,v)=>d.free?l?(0,o.jsxs)(M,{flexDirection:"column",children:[(0,o.jsxs)(M,{children:[(0,o.jsxs)(n,{children:[(0,o.jsx)(n,{color:a.assuranceAccent,children:"\u276F"})," ",(0,o.jsx)(n,{color:a.dim,children:"\u270E "})]}),(0,o.jsx)(P,{value:l.value,onChange:l.onChange,onSubmit:l.onSubmit,onCancel:l.onCancel,placeholder:d.label})]}),x?(0,o.jsx)(n,{color:a.muted,children:` ${x}`}):null]},d.key):(0,o.jsxs)(n,{children:[g(v)," ",(0,o.jsx)(n,{color:a.dim,children:`\u270E ${d.label}`})]},d.key):(C+=1,(0,o.jsxs)(n,{bold:T&&r===v,children:[g(v),` ${C}. ${d.label}`,d.detail?(0,o.jsx)(n,{color:a.dim,bold:!1,children:` \u2014 ${d.detail}`}):null]},d.key)));if(A)return(0,o.jsxs)(M,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,o.jsx)(n,{bold:!0,color:a.assuranceAccent,children:p}),h,E,(0,o.jsx)(n,{color:a.muted,children:u})]});let L=Math.max(2,s-(3+p.length+1)),F=Math.max(2,s-(3+u.length+1));return(0,o.jsxs)(M,{marginTop:1,marginBottom:1,flexDirection:"column",children:[(0,o.jsxs)(n,{color:a.assuranceAccent,children:["\u2500\u2500 ",(0,o.jsx)(n,{bold:!0,children:p}),` ${"\u2500".repeat(L)}`]}),h,(0,o.jsx)(n,{children:" "}),E,(0,o.jsx)(n,{children:" "}),(0,o.jsxs)(n,{color:a.assuranceAccent,children:["\u2500\u2500 ",(0,o.jsx)(n,{color:a.muted,children:u}),` ${"\u2500".repeat(F)}`]})]})}var R=b(S(),1),K="ctrl+t thinking \xB7 ctrl+c exit";function D(m,e){if(m.length<=e)return m;if(e<=1)return"\u2026";let c=Math.ceil((e-1)/2),r=Math.floor((e-1)/2);return`${m.slice(0,c)}\u2026${r>0?m.slice(-r):""}`}function J({verb:m,subject:e,pendingCount:c,creditsTotal:r,state:T,hints:u=K}){let{stdout:l}=B(),x=l?.columns??80,i=[];i.push(m),T&&i.push(T),r!==void 0&&i.push(`${r.toFixed(1)} credits`);let t=c?`[${c} pending]`:null,f=" \xB7 ",s=[...i,...t?[t]:[]].join(f).length,g,p=[...i,...e?[e]:[],...t?[t]:[],u].join(f);if(p.length<=x)g=p;else{let w=x-s-(e?f.length:0)-f.length-u.length;if(e&&w>=8)g=[...i,D(e,w),...t?[t]:[],u].join(f);else{let h=x-s-(e?f.length:0);g=[...i,...e&&h>=4?[D(e,h)]:[],...t?[t]:[]].join(f)}}if(T){let w=` \xB7 ${T}`,h=g.indexOf(w);if(h>=0)return(0,R.jsxs)(n,{color:a.dim,children:[g.slice(0,h+3),(0,R.jsx)(n,{color:a.assuranceAccent,children:T}),g.slice(h+w.length)]})}return(0,R.jsx)(n,{color:a.dim,children:g})}var O=b(N(),1);function Z({onToggleThinking:m,onCtrlC:e,explorer:c,panel:r}){let u=(0,O.useRef)(null),l=(0,O.useRef)(""),x=()=>{u.current&&clearTimeout(u.current),u.current=null,l.current=""};return(0,O.useEffect)(()=>x,[]),$((i,t)=>{if(t.ctrl&&i==="t"){m();return}if(t.ctrl&&i==="c"){e();return}if(!t.ctrl&&i.includes("")){e();return}if(!t.ctrl&&i.includes("")){m();return}if(c&&c.isOpen()){let f=()=>{u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{x(),c.onBack()},150)};if(u.current){if(t.upArrow||t.downArrow||t.return){x(),t.return?c.onEnter():c.onMove(t.upArrow?-1:1);return}if(l.current+=i,l.current==="["){f();return}let A=l.current;x();let s=/^\[([ABCD])/.exec(A);if(s){(s[1]==="A"||s[1]==="B")&&c.onMove(s[1]==="A"?-1:1);return}c.onBack();return}if(t.upArrow){c.onMove(-1);return}if(t.downArrow){c.onMove(1);return}if(t.return){c.onEnter();return}if(t.escape){l.current="",f();return}return}if(r&&r.isFocused()){let f=()=>{u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{x(),r.onBack()},150)};if(u.current){if(t.upArrow||t.downArrow||t.return||t.leftArrow||t.rightArrow){x(),t.return?r.onSelect():t.leftArrow?r.onLeft?.():t.rightArrow?r.onRight?.():r.onMove(t.upArrow?-1:1);return}if(l.current+=i,l.current==="["){f();return}let A=l.current;x();let s=/^\[([ABCD])/.exec(A);if(s){s[1]==="A"||s[1]==="B"?r.onMove(s[1]==="A"?-1:1):s[1]==="C"?r.onRight?.():r.onLeft?.();return}r.onBack();return}if(t.upArrow){r.onMove(-1);return}if(t.downArrow){r.onMove(1);return}if(t.leftArrow){r.onLeft?.();return}if(t.rightArrow){r.onRight?.();return}if(t.return){r.onSelect();return}if(t.escape){l.current="",f();return}if(/^[1-9]$/.test(i)){r.onDigit(Number(i));return}if(t.tab){r.onTab?.();return}if(i===" "&&r.isMulti()){r.onSpace();return}if(i&&!t.ctrl&&!t.meta){r.onType(i);return}return}}),null}export{Q as a,X as b,J as c,Z as d};
@@ -1,19 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{c as g}from"./chunk-5EOX4MEY.js";var D={ASR_CMD_START:"info",ASR_CMD_END:"info",ASR_AGENT_SPAWN:"info",ASR_WORK_ITEM_START:"info",ASR_WORK_ITEM_END:"info",ASR_PROPOSAL:"info",ASR_VALIDATE_FAILED:"warn",ASR_COMMIT:"info",ASR_SESSION_PAUSED:"info",ASR_SESSION_RESUMED:"info",ASR_SESSION_COMPLETE:"info",ASR_AGENT_EXIT:"warn",ASR_RECONCILE_PLAN:"info",ASR_RECONCILE_ROW_END:"info",ASR_HIGH_RISK_CI:"warn",ASR_INGEST:"info",ASR_EMBED_DEGRADED:"warn",ASR_CONTEXT_CLONED:"warn",ASR_ERROR:"error",ASR_CRASH:"error"},h={ASR_CMD_START:["source_count","resumed","applied_plan"],ASR_CMD_END:["exit_code","duration_ms","credits_total","work_items_total","work_items_failed"],ASR_AGENT_SPAWN:["tier","duration_ms"],ASR_WORK_ITEM_START:["work_item_index","work_item_count","source_kind"],ASR_WORK_ITEM_END:["work_item_index","work_item_count","outcome","duration_ms","error_domain","error_code"],ASR_PROPOSAL:["item_count","turn_index"],ASR_VALIDATE_FAILED:["error_code","count","turn_index"],ASR_COMMIT:["trusted","derived","archived","items","items_dropped","record_seq"],ASR_SESSION_PAUSED:["pending_questions","pending_proposals"],ASR_SESSION_RESUMED:["resume_count","expired_session_id"],ASR_SESSION_COMPLETE:["duration_ms","credits_total"],ASR_AGENT_EXIT:["exit_code","signal"],ASR_RECONCILE_PLAN:["row_count","add_count","modify_count","archive_count"],ASR_RECONCILE_ROW_END:["row_index","kind","outcome","duration_ms"],ASR_HIGH_RISK_CI:["count"],ASR_INGEST:["work_item_index","work_item_count","format","bytes","media_facts"],ASR_EMBED_DEGRADED:["held"],ASR_CONTEXT_CLONED:[],ASR_ERROR:["error_domain","error_code","exit_code","turn_index"],ASR_CRASH:["error_domain","error_code","error_name"]},k=[[/^(auth_expired|401|preflight_auth|AUTH)/i,"auth"],[/^(credit_denied|402|CREDIT)/i,"credit"],[/^(stream_drop|read_timeout|connect_failed|dns|E(CONN|AI_AGAIN|TIMEDOUT)|network)/i,"network"],[/^(frame_parse|post_terminal_data|eof_without_terminal|turn_id_mismatch|binding_mismatch|schema_invalid|frame_too_large|protocol)/i,"protocol"],[/^(provider_error|http_5\d\d|turn_exhausted|adapter_integrity)/i,"provider"],[/^(STALE_BASIS|R\d+|validation|criteria)/i,"validation"],[/^(BLOB_MISSING|SOURCE_UNKNOWN|SESSION_(LOCKED|EXPIRED|MISSING|LOCK_LOST)|NO_STORE|fsck|store)/i,"store"],[/^(usage|EX2|SOURCE_WITH_RESUME|HIGH_RISK_CI|bad_flag|no_tty)/i,"usage"],[/^agent_(crash|exit)/i,"agent_crash"]];function O(e){let t=(e||"unknown").slice(0,64);for(let[n,r]of k)if(n.test(t))return{error_domain:r,error_code:t};return{error_domain:"cli_crash",error_code:t}}import{randomBytes as L}from"crypto";var v=/^(uc|sc|ac|t|gap|sty)-\d+$/,$="0123456789abcdefghijklmnopqrstuvwxyz";function b(e){let t="",n=L(e);for(let r=0;r<e;r++)t+=$[n[r]%36];return t}function q(e=new Date){let t=(r,o)=>String(r).padStart(o,"0");return`as-${`${e.getUTCFullYear()}${t(e.getUTCMonth()+1,2)}${t(e.getUTCDate(),2)}T${t(e.getUTCHours(),2)}${t(e.getUTCMinutes(),2)}`}-${b(8)}`}var C=-1,p=0;function z(e=new Date){let t=e.getTime(),n=L(10);t===C?p=p+1&4095:(C=t,p=(n[0]<<8|n[1])&4095);let r=Buffer.alloc(16);r.writeUIntBE(t,0,6),r[6]=112|p>>8,r[7]=p&255,r[8]=128|n[2]&63,n.copy(r,9,3,10);let o=r.toString("hex");return`${o.slice(0,8)}-${o.slice(8,12)}-${o.slice(12,16)}-${o.slice(16,20)}-${o.slice(20)}`}var G=64,U=128,P=/^[A-Za-z0-9._:@\/-]+$/,H=0;function W(e,t){if(typeof t=="number"&&Number.isFinite(t)||typeof t=="boolean")return t;if(typeof t!="string")return;let n=e.endsWith("_id")||e==="signal"?U:G;if(!(t.length===0||t.length>n)&&P.test(t))return t}function w(e,t,n={}){let r=h[t],o={};for(let i of r){let s=n[i];if(s==null)continue;if(i==="items"){let u=Array.isArray(s)?s.filter(y=>typeof y=="string"):[],f=u.filter(y=>v.test(y));f.length>0&&(o.items=f.slice(0,50).join(","));let S=u.length-f.length;S>0&&(o.items_dropped=S);continue}let a=W(i,s);a!==void 0&&(o[i]=a)}if(typeof n.error_code=="string"&&r.includes("error_code")){let{error_domain:i,error_code:s}=O(n.error_code);o.error_code=s,r.includes("error_domain")&&(o.error_domain=i)}return{level:D[t],event:t,message:t,session_id:e.session_id,operation_id:e.operation_id,...e.parent_operation_id?{parent_operation_id:e.parent_operation_id}:{},...e.agent_session_id?{agent_session_id:e.agent_session_id}:{},context_lineage_id:e.context_lineage_id??null,context_instance_id:e.context_instance_id??null,verb:e.verb,mode:e.mode,component:"kane-cli",seq:H++,event_time:new Date().toISOString(),context:o}}import _ from"fs";import F from"path";var K=500,j=7;function M(e){if(e.length!==0)try{let t=g();_.mkdirSync(F.dirname(t),{recursive:!0});let n=e.map(r=>JSON.stringify(r)).join(`
3
- `)+`
4
- `;_.appendFileSync(t,n,{flag:"a",mode:384}),B()}catch{}}async function re(e){let t=g(),n=`${t}.claim-${process.pid}`,r;try{_.renameSync(t,n),r=_.readFileSync(n,"utf8")}catch{return}let o=[];for(let i of r.split(`
5
- `))if(i.trim())try{o.push(JSON.parse(i))}catch{}try{(o.length===0?!0:await e(o))?_.unlinkSync(n):(_.appendFileSync(t,r,{flag:"a",mode:384}),_.unlinkSync(n))}catch{try{_.appendFileSync(t,r,{flag:"a",mode:384}),_.unlinkSync(n)}catch{}}}function B(e=K,t=j){try{let n=g(),o=_.readFileSync(n,"utf8").split(`
6
- `).filter(u=>u.trim()),i=Date.now()-t*24*3600*1e3,a=o.filter(u=>{try{let f=JSON.parse(u),S=Date.parse(f.event_time??f.timestamp??"");return Number.isNaN(S)||S>=i}catch{return!1}}).slice(-e);a.length!==o.length&&_.writeFileSync(n,a.length?a.join(`
7
- `)+`
8
- `:"",{mode:384})}catch{}}var l=null;function _e(e){l=e}function ce(){return l}var I=()=>!!process.env.KANE_DEV_MODE,c=[],R=!1,N=null,A=null,x=null,d=null,E=[];function ae(e){if(d=e,e&&E.length>0){let t=E;E=[];for(let n of t)try{e.log(n.level,n.event,n.message,n.context)}catch{}}}function de(e,t,n,r){if(d){try{d.log(e,t,n,r)}catch{}return}E.push({level:e,event:t,message:n,context:r})}function le(){return d}function ue(){return R}function fe(e,t){c=c.filter(n=>n.name!==e),c.push({name:e,fn:t})}function Se(e){c=c.filter(t=>t.name!==e)}function pe(e,t){let n=c.find(o=>o.name===e);if(!n)return;c=c.filter(o=>o.name!==e);let r=!0;try{n.fn()}catch(o){r=!1,process.stderr.write(`[exit-manager] cleanup(${e}) failed: ${o instanceof Error?o.message:String(o)}
9
- `)}t&&r&&I()&&process.stderr.write(`[exit-manager] cleanup(${e}): ${t}
10
- `)}function m(e,t,n=!1,r){if(R){process.exit(N??e);return}if(R=!0,N=e,n&&d)try{d.log("error","CRASH",t),d.shutdownSync()}catch{}if(n&&l&&e!==130&&e!==143)try{let s=/Uncaught exception:\s*([A-Za-z0-9_$]+)/.exec(t)?.[1]??"crash";M([w(l,"ASR_CRASH",{error_code:"cli_crash",error_name:s})])}catch{}let o=[...c].reverse(),i=[];for(let s of o)try{s.fn(),i.push(s.name)}catch(a){process.stderr.write(`[exit-manager] cleanup(${s.name}) failed: ${a instanceof Error?a.message:String(a)}
11
- `)}if(c=[],I()&&(process.stderr.write(`[exit-manager] shutdown(${e}): ${t}
12
- `),i.length>0&&process.stderr.write(`[exit-manager] cleaned up: ${i.join(", ")}
13
- `)),n){if(x)try{x()}catch{}e===130||e===143||(process.stderr.write(`
14
- kane-cli crashed: ${t}
15
- `+(i.length>0?`Resources cleaned up (${i.join(", ")}).
16
- `:"")),l&&process.stderr.write(`session: ${l.session_id} \u2014 share this id with support
17
- `),r&&I()?process.stderr.write(`${r}
18
- `):process.stderr.write(`(re-run with KANE_DEV_MODE=1 for the full stack)
19
- `)),process.exit(e);return}if(A&&!n){A();return}process.exit(e)}function Ee(e){A=e}function ge(e){x=e}var T=!1;function me(){T||(T=!0,process.on("SIGINT",()=>{m(130,"Received SIGINT",!0)}),process.on("SIGTERM",()=>{m(143,"Received SIGTERM",!0)}),process.on("uncaughtException",e=>{m(1,`Uncaught exception: ${e.name}: ${e.message}`,!0,e.stack)}),process.on("unhandledRejection",e=>{m(1,`Unhandled rejection: ${String(e)}`,!0,e instanceof Error?e.stack:void 0)}))}function Re(){c=[],R=!1,N=null,A=null,x=null,d=null,E=[],T=!1,l=null}export{D as a,q as b,z as c,w as d,M as e,re as f,_e as g,ce as h,ae as i,de as j,le as k,ue as l,fe as m,Se as n,pe as o,m as p,Ee as q,ge as r,me as s,Re as t};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as i}from"./chunk-NLCCBXXV.js";import{a as s}from"./chunk-RZ4F3BHX.js";var a={attempts:3,backoffMs:[250,750]},n=class extends i{constructor(e,r){super(e,r)}headers(){return{Authorization:this.authHeader,"Content-Type":"application/json"}}async getTmsCredentials(){let e=await s(`${this.baseUrl}/auth/tms-credentials`,{method:"GET",headers:this.headers(),retry:a});if(!e.ok)throw new Error(`Credential exchange failed: ${e.status} ${await e.text()}`);return await e.json()}async getPresignedUrls(e,r,o){let t=await s(`${this.baseUrl}/upload/presign`,{method:"POST",headers:this.headers(),body:JSON.stringify({test_id:e,session_id:r,files:o})});if(!t.ok)throw new Error(`Presign request failed: ${t.status} ${await t.text()}`);return await t.json()}async getScreenshotSas(){let e=await s(`${this.baseUrl}/upload/screenshot-sas`,{method:"GET",headers:this.headers(),retry:a});if(!e.ok)throw new Error(`Screenshot SAS request failed: ${e.status} ${await e.text()}`);return await e.json()}async getCreditBalance(){let e=await s(`${this.baseUrl}/credits/balance`,{method:"GET",headers:this.headers(),retry:a});if(!e.ok)throw new Error(`Credit balance request failed: ${e.status} ${await e.text()}`);return await e.json()}};export{n as a};
@@ -1,6 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{closeSync as A,existsSync as R,mkdirSync as N,openSync as J,readFileSync as I,readdirSync as W,renameSync as C,rmSync as g,watch as D,writeFileSync as _}from"fs";import{join as h}from"path";import{randomBytes as U}from"crypto";var X=1440*60*1e3,L=class extends Error{constructor(l,u,f,k){super(`${l}: ${f}`);this.code=l;this.key=u;this.holder=k}},E=e=>(e?.now??(()=>new Date))();function M(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(s){return s.code==="EPERM"}}function $(e,s){let l=s.getTime()-new Date(e.ts).getTime();return!M(e.pid)||l>=X||Number.isNaN(l)}var m=e=>h(e,"locks"),G=e=>h(m(e),"waiters");function T(e,s){return s.kind==="context"?h(m(e),"context.lock"):s.kind==="extract"?h(m(e),"extract.lock"):h(m(e),`uc-${s.id}.lock`)}var x=e=>e.kind==="uc"?e.id:e.kind,v=e=>e.kind==="uc"?`uc:${e.id}`:e.kind,K=e=>e.kind==="uc"?e.id:`~${e.kind}`;function H(e){return[...e].sort((s,l)=>K(s)<K(l)?-1:K(s)>K(l)?1:0)}function p(e){try{return JSON.parse(I(e,"utf8"))}catch{return null}}function F(e,s,l){let u=`${e}.break-${l}`;try{C(e,u)}catch(k){if(k.code==="ENOENT")return!1;throw k}let f;try{f=JSON.parse(I(u,"utf8"))}catch{f=null}if(f===null||f.nonce===s)return g(u,{force:!0}),!0;try{C(u,e)}catch{g(u,{force:!0})}return!1}var y=new Map,O=new Map;function B(e,s,l){let u=o=>`${e}|${s}|${x(o)}`;function f(o,d,c=0){if(c>20)throw new L("LOCK_CONTENTION_UNSETTLED",o,`${v(o)}: lock contention did not settle`);let i=T(e,o);N(m(e),{recursive:!0});let n=U(8).toString("hex");try{let t=J(i,"wx",384);return _(t,JSON.stringify({...d,nonce:n})+`
3
- `),A(t),n}catch(t){if(t.code!=="EEXIST")throw t;let r=p(i),a=E(l);if(r!==null&&!$(r,a)){let S=o.kind==="context"?"CONTEXT_HELD":o.kind==="extract"?"EXTRACT_HELD":"UC_HELD";throw new L(S,o,`${v(o)} is held by ${r.owner_sid} (${r.verb})`,{owner_sid:r.owner_sid,pid:r.pid,ts:r.ts,verb:r.verb,alive:M(r.pid)})}return F(i,r?.nonce,n)&&process.stderr.write(JSON.stringify({event:"lock_steal",key:v(o),stale_owner:r?.owner_sid??"corrupt",by:s,ts:a.toISOString()})+`
4
- `),f(o,d,c+1)}}function k(o,d){let c=!1;return{keys:d,assertHeld(){for(let{key:i,sk:n}of o){let t=y.get(n),r=t?p(t.path):null;if(!t||r===null||r.nonce!==t.nonce)throw new L("LOCK_LOST",i,`${v(i)} grant was taken over or removed`)}},touch(){for(let{sk:i}of o){let n=y.get(i);if(!n)continue;let t=p(n.path);t!==null&&t.nonce===n.nonce&&_(n.path,JSON.stringify({...t,ts:E(l).toISOString()})+`
5
- `,{mode:384})}},release(){if(!c){c=!0;for(let{sk:i}of[...o].reverse()){let n=y.get(i);if(n&&(n.count-=1,n.count<=0)){y.delete(i);let t=p(n.path);t!==null&&t.nonce===n.nonce&&g(n.path,{force:!0})}}}}}}function w(o,d){let c=H(o),i=[];try{for(let n of c){let t=u(n),r=y.get(t);if(r)r.count+=1;else{let a=f(n,{owner_sid:s,pid:process.pid,ts:E(l).toISOString(),verb:d.verb??"unknown",hold:d.hold,...n.kind==="uc"?{logical_display:n.id.toUpperCase()}:{}});y.set(t,{nonce:a,count:1,path:T(e,n),key:n})}i.push({key:n,sk:t})}return k(i,c)}catch(n){for(let{sk:t}of[...i].reverse()){let r=y.get(t);if(r&&(r.count-=1,r.count<=0)){y.delete(t);let a=p(r.path);a!==null&&a.nonce===r.nonce&&g(r.path,{force:!0})}}throw n}}return{acquire:w,tryAcquire(o,d){try{return w(o,d)}catch(c){if(c instanceof L&&(c.code==="UC_HELD"||c.code==="CONTEXT_HELD"||c.code==="EXTRACT_HELD"))return{contended:c};throw c}},holder(o){return p(T(e,o))},async wait(o,d){let c=T(e,o);N(G(e),{recursive:!0});let i=h(G(e),`${x(o)}.${s}.${process.pid}.json`);try{_(i,JSON.stringify({sid:s,pid:process.pid,ts:E(l).toISOString()})+`
6
- `,{mode:384})}catch{}let n=Date.now()+d.timeoutMs,t=null,r=null;try{try{t=D(m(e),()=>{r?.()}),t.on("error",()=>{r?.(),t=null})}catch{t=null}for(;;){if(d.signal?.aborted)return"cancelled";let a=p(c);if(a===null||$(a,E(l)))return"free";let S=n-Date.now();if(S<=0)return"timeout";await new Promise(b=>{r=b;let P=setTimeout(b,Math.min(t?250:100,Math.max(1,S)));d.signal?.addEventListener?.("abort",()=>{clearTimeout(P),b()},{once:!0})}),r=null}}finally{t?.close(),g(i,{force:!0})}},async withKeySerialized(o,d){let i=H(o).map(a=>`${e}|${x(a)}`),n=i.map(a=>O.get(a)??Promise.resolve()),t,r=new Promise(a=>{t=a});for(let a of i)O.set(a,r);await Promise.all(n);try{return await d()}finally{t();for(let a of i)O.get(a)===r&&O.delete(a)}},releaseAll(o){let d=`${e}|${o}|`;for(let[c,i]of[...y]){if(!c.startsWith(d))continue;y.delete(c);let n=p(i.path);n!==null&&n.nonce===i.nonce&&g(i.path,{force:!0})}}}}function Q(e,s){let l=e.resolve(s);if(l===null)return{key:{kind:"uc",id:s.toLowerCase()},display:s};let u=e.displayNameOf(l.tip)??e.displayNameOf(l.cid);if(u!==null&&/^uc-\d+$/i.test(u))return{key:{kind:"uc",id:u.toLowerCase()},display:u.toUpperCase()};let f=new Map;for(let[d,c]of e.superseded)typeof c=="string"&&f.set(c,d);let k=l.cid,w=new Set;for(;f.has(k)&&!w.has(k);)w.add(k),k=f.get(k);let o=k.slice(0,12);return{key:{kind:"uc",id:o},display:u??o}}export{L as a,M as b,G as c,H as d,B as e,Q as f};
@@ -1,6 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- var p=1;function f(e){return e==="agent"?"ndjson":"human"}function c(){return!!(process.stdin.isTTY&&process.stdout.isTTY)}var d=/^(∷ |· |→ |✓ |✗ |… )/;function a(e){return e===0?"complete":e===2?"refused":e===3?"paused":e===130?"interrupted":"error"}function l(e,n,s={stdout:t=>process.stdout.write(t),stderr:t=>process.stderr.write(t)}){let t=!1,u=r=>{if(e!=="ndjson")return;if(r.type==="done"){if(t)return;t=!0}let{type:i,...o}=r;s.stdout(JSON.stringify({type:i,v:1,verb:n,...o})+`
3
- `)};return{encoding:e,out:e==="ndjson"?r=>s.stderr(r+`
4
- `):r=>s.stdout(r+`
5
- `),progress:e==="ndjson"?()=>{}:r=>s.stderr(r.replace(d,"").replace(/…$/,"")+`
6
- `),event:u,done:(r,i,o)=>(u({type:"done",status:i??a(r),exit_code:r,...o!==void 0&&o.length>0?{next:o}:{}}),r)}}var g=8*1024;function m(e,n){return e.message==null?null:e.message.trim()?e.resume?Buffer.byteLength(e.message,"utf8")>g?`${n==="extract"?"extract":"design"}: --message is over 8KB \u2014 the agent would silently drop it; shorten the statement`:null:`${n==="extract"?"extract":"design"}: --message only rides a resume \u2014 pair it with --resume <sid> (a fresh run takes its direction from the sources)`:`${n==="extract"?"extract":"design"}: --message is empty \u2014 say what you want the agent to know`}function x(e,n,s){return e.event({type:"error",message:n,...s?{code:s}:{}}),e.done(2,"refused")}function E(e,n,s){return{out:t=>{n()&&s.test(t)||e.out(t)},emit:t=>{n()&&t.type==="error"&&s.test(String(t.message??""))||e.event(t)}}}export{p as a,f as b,c,l as d,g as e,m as f,x as g,E as h};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{d as b,e as c,f as d,g as e,h as f,i as g,j as h,k as i,l as j,m as k,n as l,o as m,p as n,q as o,r as p}from"./chunk-3STZLM5J.js";import"./chunk-L4JIMNKW.js";import{h as a}from"./chunk-M7WQM4UA.js";import"./chunk-WWNSD6FA.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";export{b as SLUG_RE,c as checkAcyclic,d as checkCardinality,e as citesOf,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,k as resolveLivingTip,g as validateCriterionOps,h as validateProposal};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-CVOGP253.js";import"./chunk-427OQS2N.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";export{a as topologyDescriptor};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c}from"./chunk-KVQOBPAZ.js";import"./chunk-AM5S4KG4.js";import"./chunk-BB2W35TW.js";import"./chunk-DNNZ353O.js";import"./chunk-NVGBE2DR.js";import"./chunk-3STZLM5J.js";import"./chunk-L4JIMNKW.js";import"./chunk-M7WQM4UA.js";import"./chunk-WWNSD6FA.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";export{a as captureForceScope,b as commitDesign,c as designPhaseLadder};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{c as a,d as b,e as c,f as d,g as e,h as f,i as g,j as h,k as i}from"./chunk-F7WKDMX7.js";import"./chunk-VOHQA2SP.js";import"./chunk-Q2F5QB2W.js";import"./chunk-NVGBE2DR.js";import"./chunk-IAHKTEET.js";import"./chunk-UR6MHSHU.js";export{a as DOCX_CONVERTER_POLICY,b as DOCX_CONVERTER_VERSION,d as DOCX_IMAGE_CAP,c as DOCX_IMAGE_DIMENSION_FLOOR,f as DOCX_IMAGE_MAX_BYTES,g as DOCX_IMAGE_MAX_PIXELS,e as DOCX_VISION_BYTE_BUDGET,i as convertDocx,h as renderTokens};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{$ as fa,A as J,B as K,C as L,D as M,E as N,F as O,G as P,H as Q,L as R,M as S,N as T,O as U,P as V,Q as W,R as X,S as Y,T as Z,U as _,V as $,W as aa,X as ba,Y as ca,Z as da,_ as ea,a,aa as ga,b,ba as ha,c,ca as ia,d,e,f,g,h,i,j,k as t,l as u,m as v,n as w,o as x,p as y,q as z,r as A,s as B,t as C,u as D,v as E,w as F,x as G,y as H,z as I}from"./chunk-DQ54MH7F.js";import"./chunk-FCMLIK7P.js";import{a as n,b as o,c as p,e as q,f as r,g as s}from"./chunk-CJJXT5DO.js";import"./chunk-QM4S2APK.js";import"./chunk-ZPDM6FO7.js";import{a as k,b as l,c as m}from"./chunk-EHN5HTUD.js";import"./chunk-NVGBE2DR.js";import"./chunk-CH273NAE.js";import"./chunk-L5LI2JF4.js";import"./chunk-GW5DWAXY.js";import"./chunk-T63R6QT4.js";import"./chunk-3STZLM5J.js";import"./chunk-L4JIMNKW.js";import"./chunk-M7WQM4UA.js";import"./chunk-WWNSD6FA.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-JRMDGLLT.js";import"./chunk-C4G7RVJ6.js";import"./chunk-UR6MHSHU.js";export{P as EvidenceSession,C as appendExecutionPointer,M as assembleExecutionEnv,i as buildEnvironment,j as buildEvidenceRunConfig,g 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,h 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,d as shortHash,c as slugify,W as startEvidenceLocalServer,R as startInlineEvidence,n as storeDir,m as sweepStore,ea as synthesizeSkippedTail,f as testIdForInline,e as testIdForTestmd,k as validatePack,a as verdictFromResultCode,X as viewerBaseFor,Y as viewerUrlFor,b as worstOf,G as worstResultCode,B as writeLogsMeta,A as writeResult};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c,d,e,f,g}from"./chunk-3LWTUMDG.js";import"./chunk-QROUKGKU.js";import"./chunk-OHRS3H7Z.js";import"./chunk-5JTUL6XL.js";import"./chunk-JFAFKHDX.js";import"./chunk-ZLCZDAEX.js";import"./chunk-DNNZ353O.js";import"./chunk-NVGBE2DR.js";import"./chunk-CH273NAE.js";import"./chunk-GW5DWAXY.js";import"./chunk-T63R6QT4.js";import"./chunk-3STZLM5J.js";import"./chunk-L4JIMNKW.js";import"./chunk-M7WQM4UA.js";import"./chunk-WWNSD6FA.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.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};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{g as a,h as b,i as c,j as d,k as e,l as f,m as g,n as h,o as i,p as j,q as k,r as l,s as m,t as n}from"./chunk-W6VD2XFO.js";import"./chunk-5EOX4MEY.js";import"./chunk-UR6MHSHU.js";export{n as _reset,i as cleanup,h as deregister,e as getRemoteLogger,b as getSupportContext,m as installHandlers,f as isShuttingDown,d as logOrBufferRemote,g as register,k as setInkExit,c as setRemoteLogger,a as setSupportContext,l as setTerminalRestore,j as shutdown};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-PMHJRT3A.js";import"./chunk-M7WQM4UA.js";import"./chunk-WWNSD6FA.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";export{a as explain};
@@ -1,10 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as T}from"./chunk-WJ5HDEVH.js";import{a as q}from"./chunk-5JTUL6XL.js";import{f as Y,g as A}from"./chunk-KRXSXQBU.js";import"./chunk-UPPEOQJQ.js";import"./chunk-36OC3TFE.js";import"./chunk-O56PUUNL.js";import"./chunk-NRC2G4Y5.js";import"./chunk-BQHKBOSF.js";import"./chunk-2XGDWUJ5.js";import"./chunk-BB2W35TW.js";import"./chunk-VGFTNLQQ.js";import"./chunk-L2TV4G56.js";import"./chunk-JFAFKHDX.js";import"./chunk-5KFS3GAZ.js";import"./chunk-EV3EHXEI.js";import"./chunk-F7WKDMX7.js";import"./chunk-VOHQA2SP.js";import{d as Q}from"./chunk-UX2B7L6K.js";import"./chunk-XDHZMCTA.js";import"./chunk-AAONIIQV.js";import{c as $}from"./chunk-YKTYVJBN.js";import"./chunk-CVOGP253.js";import"./chunk-427OQS2N.js";import{c as U}from"./chunk-ZLCZDAEX.js";import"./chunk-SE6WNCYU.js";import"./chunk-DNNZ353O.js";import"./chunk-Q2F5QB2W.js";import{a as N,b as j}from"./chunk-IQDWBTRJ.js";import"./chunk-GVIPTX6T.js";import"./chunk-BKM2LWU2.js";import"./chunk-2XMJ6YAE.js";import"./chunk-NVGBE2DR.js";import{a as b}from"./chunk-CH273NAE.js";import"./chunk-GW5DWAXY.js";import"./chunk-T63R6QT4.js";import"./chunk-3STZLM5J.js";import"./chunk-L4JIMNKW.js";import"./chunk-M7WQM4UA.js";import"./chunk-WWNSD6FA.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-W6VD2XFO.js";import"./chunk-5EOX4MEY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-C4G7RVJ6.js";import"./chunk-UR6MHSHU.js";async function J(n){let[{render:t},s,{QuestionBatchPrompt:f}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./react-QWOAB3TB.js"),import("./ui-JEJGTURD.js")]),l=s.default??s;return new Promise(g=>{let h=t(l.createElement(f,{questions:n,onSubmit:y=>{h.unmount(),g(y)}}))})}async function K(n,t){let[{render:s},f,{ReviewChecklist:l}]=await Promise.all([import("./build-JIKYOZUH.js"),import("./react-QWOAB3TB.js"),import("./ui-JEJGTURD.js")]),g=f.default??f;return new Promise(h=>{let y=s(g.createElement(l,{items:n.map(e=>{let o=t.get(e.temp_ref);return{uc:e,dedupWith:o&&!o.archived?o.cid:void 0,archivedMatch:o?.archived?{cid:o.cid,reason:o.reason}:void 0}}),onSubmit:e=>{y.unmount(),h(e)}}))})}async function X(n){let{createInterface:t}=await import("readline/promises"),s=t({input:process.stdin,output:process.stdout});try{let f=await s.question(`${n} [y/N] `);return/^y(es)?$/i.test(f.trim())}finally{s.close()}}async function ae(n){let t=b(process.cwd()),s=j({verb:"extract",mode:n.plan?"cli":"interactive",contextRoot:t,env:N(),resumeSid:n.resume,write:!0,longSession:!0}),l={...await Q(),...s.spawnEnv()},g=await $(l);if(!g.ok)return process.stderr.write((g.message??"error: turn-endpoint preflight failed")+`
3
- `),process.stderr.write(s.supportFooter()+`
4
- `),s.error("preflight_auth"),await s.end({exit_code:2}),2;let h=async()=>g;if(n.plan){let a=await A(n,{contextDir:t,agent:T,preflightTurn:h,ask:J,review:K,confirmStale:X,out:d=>process.stdout.write(d+`
5
- `),progress:d=>process.stderr.write(d+`
6
- `),isTTY:U(),auth:l,telemetry:s});return a===1&&process.stderr.write(s.supportFooter()+`
7
- `),await s.end({exit_code:a}),a}let[{render:y},e,{ScrollbackProvider:o},{ChatSurface:E},{ScrollbackTap:D},{makeChatController:k},{setInkExit:G},P]=await Promise.all([import("./build-JIKYOZUH.js"),import("./react-QWOAB3TB.js"),import("./scrollback-JLPJR25X.js"),import("./ChatSurface-D66CACLX.js"),import("./ScrollbackTap-Q3IOKNMS.js"),import("./chat-controller-NNTMKEPG.js"),import("./exit-manager-HNFATGSM.js"),Promise.all([import("./chat-committer-4BQBOKI4.js"),import("./descriptor-KXDJ4XYD.js"),import("./explain-UE4IACQH.js"),import("./readmodel-X7L7W2BA.js")])]),[{commitChatTurn:r},{topologyDescriptor:F},{explain:R},{openGraph:v}]=P,V=e.default??e,c=k({commitChatTurn:r,descriptor:F(),contextDir:t,refreshGraph:()=>v(t),graph:v(t),explain:R,by:{kind:"human",id:"owner"},dedupFlags:a=>Y(a,v(t))}),I={current:null},H=0,M=null,C=!1,z=()=>{if(H+=1,H>=2){try{_.unmount()}catch{}process.exit(130)}c.requestPause(),M=setTimeout(()=>{C||(C=!0,(async()=>{c.ledger({kind:"interrupted",detail:"the agent did not confirm the pause within 5s"}),await I.current?.flush();try{_.unmount()}catch{}process.exit(130)})())},5e3)},O=await import("./dossier-QZV74XOS.js"),B=a=>{try{return O.buildDossier(v(t),a)}catch{return null}},L={listUcs:()=>{let a=v(t),d=new Set(c.state.turns.flatMap(i=>(i.items??[]).map(u=>u.title.toLowerCase()))),p={high:0,med:1,low:2};return a.byLabel("usecase").filter(i=>!a.superseded.has(i.cid)).map((i,u)=>{let m=i.content,x=String(m.title??i.cid.slice(0,12)),w=q(a,i.cid),S=w?w.designed_at_cid===i.cid?"current":"stale":void 0;return{key:i.cid,title:x,badge:S==="current"?"designed":S==="stale"?"designed \xB7 stale":d.has(x.toLowerCase())?"drafted this session":"existing",designed:S,risk:m.risk,i:u}}).sort((i,u)=>(p[i.risk??"zz"]??3)-(p[u.risk??"zz"]??3)||i.i-u.i).map(({key:i,title:u,badge:m,designed:x})=>({key:i,title:u,badge:m,designed:x}))},runDesignChild:async(a,d=!1)=>{try{let{designEntryCheck:m,confirmUnreviewedViaAsk:x}=await import("./trust-gate-EX7R2P4Y.js"),w=m(v(t),a);if(!w.ok&&(w.code==="UC_UNREVIEWED"||w.code==="UC_ARCHIVED")&&!await x(W=>c.ask(W),w))return c.note(`design child refused \u2014 approve it first: ${w.reviewCmd}`),2}catch{}let[{runDesign:p}]=await Promise.all([import("./run-52UIBPXD.js")]),i="",u=await p({useCase:a,force:d,mode:"interactive"},{contextDir:t,agent:T,preflightTurn:h,ask:m=>c.ask(m),chat:c,nested:!0,out:m=>{i=m},progress:()=>{},isTTY:!0,auth:l});return u!==0&&i&&c.note(i),u}},_=y(V.createElement(o,null,V.createElement(D,{into:I}),V.createElement(E,{controller:c,verb:"extract",onCtrlC:z,chain:L,inspect:B})),{exitOnCtrlC:!1});G(()=>_.unmount()),c.ledger({kind:"banner",text:"kane-cli context \xB7 extract \xB7 interactive"});try{let a=A(n,{contextDir:t,agent:T,preflightTurn:h,ask:p=>c.ask(p),review:async p=>new Map(p.map(i=>[i.temp_ref,{resolution:"skipped"}])),confirmStale:async()=>!0,out:p=>c.note(p),progress:()=>{},isTTY:U(),auth:l,chat:c,telemetry:s});a.finally(()=>{C=!0});let d=await a;return d===1&&process.stderr.write(s.supportFooter()+`
8
- `),await s.end({exit_code:d}),d}finally{C=!0,M&&clearTimeout(M),await I.current?.flush();try{_.unmount()}catch{}}}async function ce(n){let t=j({verb:"extract",mode:n.mode,contextRoot:b(process.cwd()),env:N(),resumeSid:n.resume,write:!0,longSession:!0}),s={...await Q(),...t.spawnEnv()},{makeHeadlessIO:f,resolveEncoding:l,guardedChannels:g}=await import("./headless-io-BL3TEAX5.js"),{withStructuredNext:h,prepareStructuredResume:y}=await import("./structured-answers-QHFGZPSS.js"),e=h(f(l(n.mode),"extract"));for(let r of n.landed??[])e.event({type:"ingested",source_id:r.source_id,status:r.status,cid:r.source_cid});let o=y({opts:n,contextDir:b(process.cwd()),verb:"extract"});if(o.kind==="refuse")return e.out(o.error),n.mode==="agent"&&e.event({type:"error",message:o.error,code:o.code}),await t.end({exit_code:2}),n.mode==="agent"?e.done(2,"refused"):2;let E=n;if(o.kind==="apply"){for(let r of o.notes)e.out(r);if(o.matchedQids.length>0){e.out(`applying ${o.matchedQids.length} structured answer(s) from --answer to the paused session's pending questions`);for(let r of o.matchedQids)e.event({type:"panel_resolved",id:r,by:"user",via:"flag"})}o.statement&&(E={...n,message:[n.message,o.statement].filter(Boolean).join(`
9
-
10
- `)})}let{makeInterruptGuard:D}=await import("./interrupt-guard-UREUWNRL.js"),k=D(T,r=>e.out(r)),P=g(e,()=>k.interrupted(),/^error: (agent failed|repair run failed|agent ended)/);try{let r=await A(E,{contextDir:b(process.cwd()),agent:k.agent,preflightTurn:()=>$(s),ask:async()=>[],review:async F=>new Map(F.map(R=>[R.temp_ref,{resolution:"skipped"}])),confirmStale:async()=>!1,out:P.out,emit:P.emit,progress:e.progress,isTTY:!1,auth:s,telemetry:t});return k.interrupted()&&r!==3?(e.out("interrupted \u2014 no session saved"),await t.end({exit_code:130}),e.done(130)):(r===1&&e.out(t.supportFooter()),await t.end({exit_code:r}),e.done(r))}catch(r){return e.event({type:"error",message:`error: extract failed: ${r instanceof Error?r.message:String(r)}`}),e.out(`error: extract failed: ${r instanceof Error?r.message:String(r)}`),e.out('hint: the full trace is in the file named on the "trace:" line at the start of this run'),e.done(1)}finally{k.dispose()}}export{ce as bindExtractHeadless,ae as bindExtractInteractive};
@@ -1,6 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
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))return process.stderr.write(`extract: --mode must be interactive | agent | ci | override, got '${e.mode}'
3
- `),2;let n=async(r,t)=>{if(process.stderr.write(r+`
4
- `),e.mode!=="agent")return 2;let{makeHeadlessIO:o,agentRefusal:c}=await import("./headless-io-BL3TEAX5.js");return c(o("ndjson","extract"),r,t)};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:r}=await import("./headless-io-BL3TEAX5.js"),t=r(e,"extract");if(t)return n(t)}{let{gateStructuredFlags:r}=await import("./structured-answers-QHFGZPSS.js"),t=r(e,"extract");if(t)return n(t,"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
5
- `),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)
6
- `),2;let{bindExtractInteractive:r}=await import("./extract-bind-BFY7IRL4.js");return r(e)}let{bindExtractHeadless:a}=await import("./extract-bind-BFY7IRL4.js");return a({...e,mode:s})}export{g as extractCommand};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c,d}from"./chunk-AH7ZZIZY.js";import"./chunk-AAONIIQV.js";import"./chunk-M7WQM4UA.js";import"./chunk-WWNSD6FA.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";export{a as archiveImpact,b as heldArchiveScan,c as reviewCards,d as reviewCounts};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{e as a,f as b,g as c,h as d,i as e}from"./chunk-SE6WNCYU.js";import"./chunk-DNNZ353O.js";import"./chunk-Q2F5QB2W.js";import"./chunk-NVGBE2DR.js";import"./chunk-GW5DWAXY.js";import"./chunk-T63R6QT4.js";import"./chunk-3STZLM5J.js";import"./chunk-L4JIMNKW.js";import"./chunk-M7WQM4UA.js";import"./chunk-WWNSD6FA.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";export{a as compositePayloadBytes,e as ingestBytes,d as ingestFile,b as slugFromFilename,c as versionBaseOf};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c}from"./chunk-BQHKBOSF.js";import"./chunk-EV3EHXEI.js";import"./chunk-F7WKDMX7.js";import"./chunk-VOHQA2SP.js";import"./chunk-ZLCZDAEX.js";import"./chunk-SE6WNCYU.js";import"./chunk-DNNZ353O.js";import"./chunk-Q2F5QB2W.js";import"./chunk-NVGBE2DR.js";import"./chunk-CH273NAE.js";import"./chunk-GW5DWAXY.js";import"./chunk-T63R6QT4.js";import"./chunk-3STZLM5J.js";import"./chunk-L4JIMNKW.js";import"./chunk-M7WQM4UA.js";import"./chunk-WWNSD6FA.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-C4G7RVJ6.js";import"./chunk-UR6MHSHU.js";export{c as ingestCommand,b as runIngestCommand,a as runIngestWithResults};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c,d,e,f,g,h,i}from"./chunk-V36ATG7A.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-W6VD2XFO.js";import"./chunk-5EOX4MEY.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-JRMDGLLT.js";import"./chunk-F6ZOJXYU.js";import"./chunk-C4G7RVJ6.js";import"./chunk-UR6MHSHU.js";export{d as emitNdjson,b as filterByName,g as formatAuthResolutionError,c as paginate,a as parsePagination,i as registerListCommands,e as renderTable,f as resolveTmsBasicAuth,h as validateCreateName};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as p,c as f}from"./chunk-WWNSD6FA.js";import"./chunk-UR6MHSHU.js";import{existsSync as c,readFileSync as l,readdirSync as w}from"fs";import{join as g}from"path";function h(n,m,i){let o=g(n,"locks");if(!c(n))return i(`error: no context store at ${n}`),2;let s=[],a=new Map,d=f(n);if(c(d))for(let r of w(d)){let e=r.split(".")[0];try{let t=JSON.parse(l(g(d,r),"utf8"));(a.get(e)??a.set(e,[]).get(e)).push({sid:t.sid,pid:t.pid})}catch{}}if(c(o)){for(let r of w(o))if(r.endsWith(".lock"))try{let e=JSON.parse(l(g(o,r),"utf8")),t=r.replace(/\.lock$/,"");s.push({key:t,grant:e,alive:p(e.pid),age_s:Math.max(0,Math.round((Date.now()-new Date(e.ts).getTime())/1e3)),waiters:a.get(t.replace(/^uc-/,""))??a.get(t)??[]})}catch{}}if(m.json)return i(JSON.stringify(s.map(r=>({key:r.key,owner_sid:r.grant.owner_sid,pid:r.grant.pid,alive:r.alive,verb:r.grant.verb,hold:r.grant.hold,age_s:r.age_s,waiters:r.waiters})))),0;if(s.length===0)return i("no locks held"),0;for(let r of s){i(`${r.key} ${r.grant.owner_sid} pid ${r.grant.pid} (${r.alive?"live":"dead"}) ${r.grant.verb}/${r.grant.hold} age ${r.age_s}s`);for(let e of r.waiters)i(` waiter: ${e.sid} (pid ${e.pid})`)}return 0}export{h as runLocksCommand};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{q as d,t as f,u as m}from"./chunk-3STZLM5J.js";import"./chunk-L4JIMNKW.js";import"./chunk-M7WQM4UA.js";import"./chunk-WWNSD6FA.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";var y=Object.keys(f).filter(n=>n!=="source");function b(n,t,u={kind:"system",id:"logical-id-backfill"}){let l=new Set(t.names.keys()),r=[];for(let c of y)for(let{cid:s,content:e}of t.byLabel(c)){if(t.superseded.has(s)||t.nameOf.has(s))continue;let a=typeof e.title=="string"&&e.title||typeof e.intent=="string"&&e.intent||typeof e.statement=="string"&&e.statement||typeof e.text=="string"&&e.text||"",i=a?m(c,a,g=>l.has(g)):null;i&&(l.add(i),r.push({ref:s,slug:i}))}if(r.length===0)return{record:null,errors:null,assigned:0};let o=d({contextDir:n,graph:t,assignments:r,by:u});return o.errors?{record:null,errors:o.errors,assigned:0}:{record:o.record,errors:null,assigned:r.length}}export{b as backfillLogicalIds};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-BAL64WSI.js";import"./chunk-KT6G7AF2.js";import"./chunk-RFHMDQXZ.js";import"./chunk-RZ4F3BHX.js";import"./chunk-JRMDGLLT.js";import"./chunk-F6ZOJXYU.js";import"./chunk-C4G7RVJ6.js";import"./chunk-UR6MHSHU.js";export{a as LoginFlow};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as i,c as m,d as s}from"./chunk-QROUKGKU.js";import"./chunk-ZLCZDAEX.js";import{a as t}from"./chunk-CH273NAE.js";import{c as d,d as c}from"./chunk-T63R6QT4.js";import"./chunk-L4JIMNKW.js";import"./chunk-M7WQM4UA.js";import"./chunk-WWNSD6FA.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";async function u(r,o=process.cwd()){if(!i(o,r))return 2;let e=c(t(o));if(e.ok)return r.out(e.pending?`ok: ${e.records} record(s) verified \u2014 ${e.pending} record(s) pending catch-up (applied automatically on the next command)`:`ok: ${e.records} record(s) verified, derived projection in parity`),0;for(let n of e.issues)r.out(`issue: ${n}`);return 1}async function p(r,o,e=process.cwd()){if(!i(e,o)||!await m(o,"wipe .context/derived and rebuild it from the verified commit chain",r.yes))return 2;let n=d(t(e));return o.out(`rebuilt: ${n.applied.seq} record(s) replayed, ${Object.keys(n.nodeLabel).length} node(s) projected`),0}async function b(){return u(s())}async function y(r={}){return p(r,s())}export{b as fsckCommand,y as rebuildCommand,u as runFsckCommand,p as runRebuildCommand};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c,d,e,f,g}from"./chunk-EV3EHXEI.js";import"./chunk-VOHQA2SP.js";import"./chunk-NVGBE2DR.js";import"./chunk-IAHKTEET.js";import"./chunk-UR6MHSHU.js";export{e as PDFJS_VERSION,b as PDF_IMAGE_CAP,a as PDF_IMAGE_DIMENSION_FLOOR,d as PDF_IMAGE_MAX_BYTES,c as PDF_VISION_BYTE_BUDGET,f as PdfConvertError,g as convertPdf};
@@ -1,3 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{g as h}from"./chunk-OIYGGEUL.js";import{a as m,b as I,k as S,s as _}from"./chunk-RKWJG3WW.js";import"./chunk-EHN5HTUD.js";import"./chunk-L5LI2JF4.js";import{a as f}from"./chunk-DXV6MBTD.js";import"./chunk-C4G7RVJ6.js";import"./chunk-UR6MHSHU.js";async function v(e,s={}){e.flushRecorder();let o=e.recorder?.lastWrittenPath??null;if(!o)return e.log("info","PERSIST_SKIPPED","No recorded path \u2014 recorder.flush no-op",{reason:e.sessionName?"recorder_flush_failed":"no_session_name",session_name:e.sessionName}),null;let p;try{p=_(o)}catch(t){throw e.log("error","PERSIST_RESOLVE_FAILED","resolveTestMd threw",{error:t.message,recorded_path:o}),t}let i=e.getRunsAsStepRecords(),u=e.getFlows(),a=[],c=0;for(let t=0;t<i.length;t++){let r=i[t],l=u.slice(c,c+r.totalRunDirs);c+=r.totalRunDirs;let g=l.find(n=>n.status==="failed"||n.status==="error"),T=g?"failed":l.length===0?"skipped":"passed";a.push({rootStepIndex:t+1,status:T,duration_s:l.reduce((n,E)=>n+(E.duration??0),0),reason:g?.reason})}let P=a.some(t=>t.status==="failed")?"failed":"passed",D=new f().load().code_export?.language==="javascript"?"javascript":"python",d=I(o);e.log("info","PERSIST_START","Building staging dir",{recorded_path:o,output_dir:d,session_dir:e.sessionDir,step_count:i.length,flow_count:u.length});try{await h({resolvedTest:p,sessionDir:e.sessionDir,stepRunRecords:i,outcomes:a,overallStatus:P,startedISO:e.startedAt,durationS:a.reduce((t,r)=>t+(r.duration_s??0),0),sessionId:e.sessionId,commitId:e.sessionId,tmsIds:{testId:e.testId??void 0,testcaseId:s.testcaseId,projectId:s.projectId,folderId:s.folderId,orgId:s.orgId??e.orgId??void 0,sessionName:e.sessionName??m(o)},codeExportDir:s.codeExportDir,codeExportLanguage:D,packTestDir:s.packTestDir}),e.log("info","PERSIST_STAGING_OK","Staging dir built",{output_dir:d}),S(d),e.log("info","PERSIST_OK","Persist complete",{output_dir:d})}catch(t){let r=t;e.log("error","PERSIST_FAILED","staging build / atomic replace failed",{error:r.message,stack:r.stack,output_dir:d}),process.stderr.write(`[persist] staging build / atomic replace failed: ${r.message}
3
- `)}return{recordedTestPath:o,outputDir:d}}export{v as persistRecordedSession};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as p}from"./chunk-OHRS3H7Z.js";import{c}from"./chunk-KVQOBPAZ.js";import"./chunk-AM5S4KG4.js";import{a as g}from"./chunk-BB2W35TW.js";import"./chunk-DNNZ353O.js";import"./chunk-NVGBE2DR.js";import"./chunk-3STZLM5J.js";import"./chunk-L4JIMNKW.js";import{d}from"./chunk-M7WQM4UA.js";import"./chunk-WWNSD6FA.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";var u=["grounding","acs","scenarios","wiring","tests"];function l(i,r,o){let s=r.resolve(o);if(s===null)return[];let n=g(r,s.cid),a=c(d(i).records,n),e=a.reduce((t,m)=>Math.max(t,m.generation),0);return a.filter(t=>t.generation===e)}function E(i,r,o,s){let n=u;if(!n.includes(s))return{ok:!1,code:"UNKNOWN_PHASE",message:`--phase must be one of ${n.join(" | ")}, got '${s}'`,valid:[...n]};let a=new Set(l(i,r,o).map(t=>t.phase)),e=n.slice(0,n.indexOf(s)).filter(t=>t!=="grounding"&&!a.has(t));return e.length===0?{ok:!0,phase:s}:{ok:!1,code:"PHASE_ORDER",message:`--phase ${s} needs ${e.join(" + ")} committed first (nothing recorded for ${e.join(", ")})`,missing:e,earliest:e[0]}}function y(i,r,o,s){let n=l(i,r,o),a=r.resolve(o);if(a===null)return{priorDesign:void 0,phaseLadder:n};let e=p(r,a.tip);return{priorDesign:e.scenarios.length===0&&e.tests.length===0&&e.acs.length===0?void 0:e,phaseLadder:n}}function R(i,r,o){return`kane-cli design tests --use-case ${i} --phase ${r}${o?" --mode agent":""}`}export{u as PHASE_ORDER,y as buildPhaseSeed,E as checkPhaseEntry,R as phaseEntryCmd,l as phaseLadderFor};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c}from"./chunk-NAC7SFBE.js";import"./chunk-2YQ6TW77.js";import"./chunk-DQ54MH7F.js";import"./chunk-FCMLIK7P.js";import"./chunk-CJJXT5DO.js";import"./chunk-QM4S2APK.js";import"./chunk-ZPDM6FO7.js";import"./chunk-EHN5HTUD.js";import"./chunk-NVGBE2DR.js";import"./chunk-CH273NAE.js";import"./chunk-L5LI2JF4.js";import"./chunk-WAOCHXJ5.js";import"./chunk-GW5DWAXY.js";import"./chunk-T63R6QT4.js";import"./chunk-3STZLM5J.js";import"./chunk-L4JIMNKW.js";import"./chunk-M7WQM4UA.js";import"./chunk-WWNSD6FA.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-2WVKOZ6W.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-JRMDGLLT.js";import"./chunk-C4G7RVJ6.js";import"./chunk-UR6MHSHU.js";export{c as UploadPipeline,b as packPresignEntry,a as readPackForUpload};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b}from"./chunk-GW5DWAXY.js";import"./chunk-T63R6QT4.js";import"./chunk-3STZLM5J.js";import"./chunk-L4JIMNKW.js";import"./chunk-M7WQM4UA.js";import"./chunk-WWNSD6FA.js";import"./chunk-IAHKTEET.js";import"./chunk-5YPBPZUR.js";import"./chunk-UR6MHSHU.js";export{a as openGraph,b as staleForEvolve};