@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,5 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{d as Y}from"./chunk-BB2W35TW.js";import{a as L}from"./chunk-YKTYVJBN.js";import{a as T}from"./chunk-GW5DWAXY.js";import{k as z,l as W,m as $}from"./chunk-3STZLM5J.js";import{b as q,g as N}from"./chunk-M7WQM4UA.js";import{a as J,d as S,f as D}from"./chunk-WWNSD6FA.js";import{a as G,c as K}from"./chunk-C4G7RVJ6.js";var ae=3,ce=1e4,X=()=>new Promise(r=>setTimeout(r,25+Math.floor(Math.random()*50))),Q=r=>r==="design"||r==="maintain"?"session":r==="revert"||r==="shape-op"?"exclusive":"commit";function de(r,e,o){for(let s of r){for(let t of s.supersessions)if(t.kind==="node"&&(o.has(t.old)||t.new!==null&&o.has(t.new)))return!0;for(let t of s.nodes)if(t.label==="usecase"&&e.newBuCandidates.length>0||o.has(t.cid))return!0;if(s.design_generation&&e.generationTicket&&s.design_generation.uc_root===e.generationTicket.uc_root)return!0;for(let t of e.sourcePins)if(Object.prototype.hasOwnProperty.call(s.source_head_moves,t.source_id))return!0}return!1}async function Re(r,e,o){let{contextDir:s,locks:t,probe:a}=r,p=r.sid??r.rootSid,f=e.newBuCandidates.map(b=>({tempRef:b.tempRef,probeText:b.probeText})),k=0,g=!0,m={hits:[],degraded:!1,probeBasis:null};for(;;){g&&(f.length>0&&(m=await a.batchSimilar(T(s),f)),g=!1);let b=T(s),I={seq:b.lastSeq,hash:b.latestHash},P=new Map,E=[],v=[],_=new Set;for(let d of e.ucTargets){let c=$(b,d.ref);if(c===null)return{ok:!1,kind:"validation",errors:[{code:"UNKNOWN_REF",detail:`${d.ref}: names no living node (unknown or tombstoned chain)`}]};d.expectedTip!==void 0&&d.expectedTip!==c.cid&&P.set(d.expectedTip,c.cid),_.add(c.cid),v.push(D(b,d.ref).key)}(e.verb==="revert"||e.verb==="shape-op")&&(v.length=0,v.push({kind:"context",mode:"exclusive"}));let y;try{y=t.acquire(S(v),{hold:Q(e.verb),verb:e.verb})}catch(d){if(d instanceof J&&(d.code==="UC_HELD"||d.code==="CONTEXT_HELD"))return{ok:!1,kind:"contended",err:d};throw d}let B=!1,V=!1;try{let d=await t.withKeySerialized(v,async()=>{let c=T(s),O=I.hash===c.latestHash?[]:N(s,I.seq,I.hash).records;for(let n of e.ucTargets){let i=$(c,n.ref);if(i===null){E.push({kind:"supersession",ref:n.ref,detail:`${n.ref} was retired while this commit staged \u2014 re-ground or abandon`});continue}for(let l of _)c.superseded.has(l)&&c.tipOf(l)===i.cid&&P.set(l,i.cid)}for(let n of e.sourcePins){let i=c.heads.get(n.source_id);i!=null&&i!==n.source_cid&&E.push({kind:"pin",ref:n.source_id,detail:`source '${n.source_id}' moved (pinned ${n.source_cid.slice(0,19)}, head ${i.slice(0,19)}) \u2014 re-ground or abandon`})}if(E.length>0)return{ok:!1,kind:"drifted",asks:E};if(e.generationTicket){let n=Y(c,e.generationTicket);if(n!==null)return{ok:!1,kind:"validation",errors:[n]}}if(f.length>0&&O.length>0){let n=new Set(m.hits.map(u=>u.candidateCid)),i=a.recheckLocal(c,f,m.probeBasis,O);if(i.hits.some(u=>!n.has(u.candidateCid))||i.uncachedNewNodes.length>0)return V=!0,"restart"}if(e.verb!=="revert"&&e.verb!=="shape-op"){let n=S(e.ucTargets.map(u=>D(c,u.ref).key)),i=S(v);if(!(n.length===i.length&&n.every((u,h)=>JSON.stringify(u)===JSON.stringify(i[h]))))return"restart"}if(e.eventIds&&e.eventIds.length>0&&e.eventIds.every(n=>c.appliedEvents.has(n)))return{ok:!0,skipped:"already-applied"};let ie=Date.now()+ce,M=c.latestHash,w=c;for(;;){let n={graph:w,expectPrev:M,redirects:P,probeHits:m.hits,degradedProbe:m.degraded,sid:p,eventIds:(l,u)=>{if(e.eventIds&&e.eventIds.length>0)return e.eventIds.slice(0,u);let h=W(w,r.rootSid,l,u),j=r.reservedEventIds??[];if(j.length===0)return h;let R=`${r.rootSid}:${l}:`,A=0;for(let F of j){if(!F.startsWith(R))continue;let x=F.slice(R.length);/^\d+$/.test(x)&&(A=Math.max(A,Number.parseInt(x,10)))}if(A===0)return h;let U=Number.parseInt(h[0].slice(R.length),10);return!Number.isInteger(U)||U>A?h:Array.from({length:u},(F,x)=>z(r.rootSid,l,A+1+x))},assertLocks:()=>y.assertHeld()};if(r.revalidate){let l=r.revalidate(n);if(l.length>0)return{ok:!1,kind:"validation",errors:l}}y.assertHeld();let i;try{i=o(n)}catch(l){if(l instanceof q){let u=T(s),h=N(s,w.lastSeq,w.latestHash).records;if(!de(h,e,_)&&Date.now()<ie){await X(),w=u,M=u.latestHash;continue}return"restart"}throw l}return"errors"in i?{ok:!1,kind:"validation",errors:i.errors}:(Q(e.verb)==="session"&&y.touch(),{ok:!0,result:i.result,record:i.record})}});if(d==="restart")B=!0;else return d}finally{y.release()}if(B){if(k+=1,k>=ae)return{ok:!1,kind:"unsettled",attempts:k};V&&(g=!0),await X();continue}}}import{readFileSync as le,writeFileSync as ue,renameSync as fe,mkdirSync as pe}from"fs";import{dirname as me,join as he}from"path";var H=1,ge=720*60*1e3;function C(r){return he(K,"embeddings",`alias-${r}.json`)}function Z(r,e=Date.now()){return r!==null&&e-r.fetchedAt<ge}function ee(r){try{let e=JSON.parse(le(r,"utf-8"));return e.wrapperVersion!==H||typeof e.purposes!="object"||e.purposes===null?null:{wrapperVersion:H,writtenByVersion:String(e.writtenByVersion??""),purposes:e.purposes}}catch{return null}}function re(r,e,o=C(r)){let t=ee(o)?.purposes?.[e];return!t||typeof t.alias!="string"||typeof t.dims!="number"||typeof t.fetchedAt!="number"?null:{alias:t.alias,dims:t.dims,fetchedAt:t.fetchedAt}}function te(r,e,o,s=C(r)){try{pe(me(s),{recursive:!0});let a=ee(s)?.purposes??{};a[e]={alias:o.alias,dims:o.dims,fetchedAt:Date.now()};let p={wrapperVersion:H,writtenByVersion:G,purposes:a},f=`${s}.tmp`;ue(f,JSON.stringify(p,null,2)+`
3
- `),fe(f,s)}catch(t){process.stderr.write(`[embed] Failed to save alias cache: ${t instanceof Error?t.message:String(t)}
4
- `)}}function be(r){return r.TESTMUAI_ENV==="stage"?"stage":"prod"}function se(r){let e=r.env??process.env,o=r.auth?.TESTMUAI_BASIC_AUTH||e.TESTMUAI_BASIC_AUTH;if(o)return{authorization:`Basic ${o}`};let s=r.auth?.TESTMUAI_API_KEY||e.TESTMUAI_API_KEY;return s?{authorization:`Bearer ${s}`}:{}}async function Ve(r,e={}){let o=e.env??process.env,s=be(o),t=e.aliasCacheFile??C(s),a=e.now??Date.now,p=re(s,r,t);if(Z(p,a()))return{alias:p.alias,dims:p.dims};let k=`${L(o)}/assurance/embed/alias?purpose=${encodeURIComponent(r)}`,g=await(e.fetchImpl??fetch)(k,{method:"GET",headers:se(e)});if(!g.ok)throw new Error(`embed alias resolve failed: ${g.status}`);let m=await g.json();return te(s,r,{alias:m.alias,dims:m.dims},t),{alias:m.alias,dims:m.dims}}async function Oe(r,e,o={}){let s=o.env??process.env,t=L(s),a=await(o.fetchImpl??fetch)(`${t}/assurance/embed`,{method:"POST",headers:{...se(o),"content-type":"application/json"},body:JSON.stringify({purpose:r,input:e})});if(!a.ok)throw new Error(`embed failed: ${a.status}`);return await a.json()}import{readFileSync as ve,writeFileSync as ke,renameSync as ye,mkdirSync as we}from"fs";import{dirname as Ae,join as oe}from"path";function Te(r){return oe(r,"embeddings")}function Ee(r){let e=r.indexOf(":");return e>=0?r.slice(e+1):r}function ne(r,e,o){let s=Ee(o);return oe(Te(r),e,s.slice(0,2),`${s.slice(2)}.f32`)}function Ge(r,e,o){try{let s=ve(ne(r,e,o)),t=new Float32Array(Math.floor(s.length/4));for(let a=0;a<t.length;a++)t[a]=s.readFloatLE(a*4);return t}catch{return null}}function Ke(r,e,o,s){try{let t=ne(r,e,o);we(Ae(t),{recursive:!0});let a=Buffer.alloc(s.length*4);for(let f=0;f<s.length;f++)a.writeFloatLE(s[f],f*4);let p=`${t}.tmp`;ke(p,a),ye(p,t)}catch(t){process.stderr.write(`[embed] Failed to cache vector: ${t instanceof Error?t.message:String(t)}
5
- `)}}export{Re as a,Ve as b,Oe as c,Ge as d,Ke as e};
@@ -1,9 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as he,c as _e,d as J,e as Z}from"./chunk-NRC2G4Y5.js";import{a as ke}from"./chunk-BQHKBOSF.js";import{c as ye,e as we}from"./chunk-VGFTNLQQ.js";import{d as H}from"./chunk-JFAFKHDX.js";import{a as pe}from"./chunk-XDHZMCTA.js";import{a as L}from"./chunk-DNNZ353O.js";import{a as I}from"./chunk-GW5DWAXY.js";import{b as ge}from"./chunk-T63R6QT4.js";import{w as me}from"./chunk-3STZLM5J.js";import{a as ue}from"./chunk-L4JIMNKW.js";import{d as de,i as fe}from"./chunk-M7WQM4UA.js";import{d as ae,f as le}from"./chunk-5YPBPZUR.js";function bt(t){let e=process.env.HOME??"";return e&&t.startsWith(e)?`~${t.slice(e.length)}`:t}import{randomBytes as mt}from"crypto";function ee(t,e){let n=Math.min(t.length,e.length),s=0,r=0,c=0;for(let o=0;o<n;o++)s+=t[o]*e[o],r+=t[o]*t[o],c+=e[o]*e[o];return r===0||c===0?0:s/(Math.sqrt(r)*Math.sqrt(c))}function te(t,e,n){return n*t+(1-n)*e}var ne=.7;var ze=["get_node","get_edges","find_by_provenance","match_by_type","stale_nodes","search_similar","search_similar_batch","history"],Qe=["source_read","source_grep","source_list"],Ke=[...ze,...Qe],Se=50,Re=200,re=10,Ee=50,be=20,We=200,Xe=50;function V(t,e,n){let s=typeof t=="number"&&Number.isFinite(t)?Math.floor(t):e;return Math.max(1,Math.min(s,n))}function M(t,e){let n=t[e];if(typeof n!="string"||n.length===0)throw new b(`param "${e}" must be a non-empty string`);return n}function D(t,e){let n=t[e];if(n==null)return null;if(typeof n!="string")throw new b(`param "${e}" must be a string when present`);return n}var b=class extends Error{},xe=24,qe=10,Ye=10;function Je(t){let e=t.cursor;if(e==null)return 0;if(typeof e=="string"&&/^\d+$/.test(e))return Number.parseInt(e,10);throw new b(`BAD_CURSOR: cursor ${JSON.stringify(e)} is not a cursor this store minted`)}function Ae(t,e){let n=e.fields;if(!Array.isArray(n)||n.length===0)return t;let s=new Set(n.filter(r=>typeof r=="string"));return t.map(r=>Object.fromEntries(Object.entries(r).filter(([c])=>s.has(c))))}function se(t,e,n=Se,s=Re){let r=Je(e),c=V(e.limit,n,s),o=t.slice(r,r+c),d=r+o.length<t.length;return{rows:Ae(o,e),truncated:d,next_cursor:d?String(r+o.length):null}}var Ze=t=>t.cursor!=null||t.fields!=null;function z(t,e,n=Se){let s=se(t,e,n);return Ze(e)||s.truncated?{rows:s.rows,truncated:s.truncated,next_cursor:s.next_cursor}:s.rows}function oe(t,e){let n=t.getNode(e);return n?{cid:e,label:n.label,content:n.content,trust:t.trust.get(e)??null,freshness:t.stale(e)}:null}function ve(t){return new Set(t.toLowerCase().replace(/[^\p{L}\p{N}]+/gu," ").split(" ").filter(Boolean))}function Q(t,...e){let n=ve(t);if(n.size===0)return 0;let s=t.trim().toLowerCase(),r=0;for(let c of e){let o=ve(c);if(o.size===0)continue;let d=0;for(let u of n)o.has(u)&&d++;let m=n.size+o.size-d,f=m===0?0:d/m;s&&c.toLowerCase().includes(s)&&(f=Math.max(f,.9)),r=Math.max(r,f)}return r}function et(t,e){let n=M(e,"cid"),s=D(e,"type"),r=D(e,"direction")??"both";if(!["out","in","both"].includes(r))throw new b('param "direction" must be out|in|both');let c=[];(r==="out"||r==="both")&&c.push(...t.edgesFrom(n)),(r==="in"||r==="both")&&c.push(...t.edgesInto(n));let o=c.filter(d=>s==null||d.type===s);return z(o,e)}function tt(t,e){let n=M(e,"source_id"),s=t.heads.get(n)??null,r=[];for(let c of t.nodeLabel.keys()){let o=t.derivesInto(c).filter(m=>m.props.source_id===n).map(m=>({source_cid:m.props.source_cid,anchor:m.props.anchor??null}));if(o.length===0)continue;let d=oe(t,c);d&&r.push({...d,pins:o,pinned_to_head:s!=null&&o.some(m=>m.source_cid===s)})}return z(r,e,Re)}function nt(t,e){let n=M(e,"label"),s=D(e,"trust"),r=D(e,"freshness"),c=[];for(let{cid:o}of t.byLabel(n)){let d=oe(t,o);d&&(s!=null&&d.trust!==s||r!=null&&d.freshness!==r||c.push(d))}return z(c,e)}function rt(t,e={}){let n=D(e,"label"),s=t.staleList().map(({cid:r,state:c})=>{let o=t.getNode(r);return{cid:r,state:c,label:o?.label??null,title:o?.content.title??null}}).filter(r=>n==null||r.label===n);return z(s,e)}function st(t,e,n){let s=e.extracted,r=D(e,"kind"),c=[];for(let f of[...t.heads.keys()].sort()){let u=t.heads.get(f);if(typeof u!="string")continue;let h=t.mediaOf(u).format;if(r!=null&&h!==r)continue;let k=t.extractedSourceCids.has(u);if(typeof s=="boolean"&&k!==s)continue;let R=0;if(h!=="image"){let _=L(n,t,u);_&&(R=_.toString("utf8").replace(/\n$/,"").split(`
3
- `).length)}let l=t.extractionCompleteness.get(f);c.push({source_id:f,kind:h,lines:R,head_cid:u,extracted:k,last_extract_at:l?.at??null,extractor_version:l?.extractor_version??null})}let{rows:o,truncated:d,next_cursor:m}=se(c,e);return{sources:o,truncated:d,next_cursor:m}}function ot(t,e,n){let s=M(e,"ref"),r=t.resolve(s);if(!r)throw new b(`UNKNOWN_REF: ${s} names nothing in the graph`);let c=r.tip,o=new Map;for(let[p,w]of t.superseded)typeof w=="string"&&w!==p&&o.set(w,[...o.get(w)??[],p]);let d=[],m=[c],f=new Set;for(;m.length>0;){let p=m.pop();f.has(p)||(f.add(p),d.push(p),m.push(...o.get(p)??[]))}let{records:u}=de(n),g=new Map,h=new Map;for(let p of u){for(let w of p.nodes)g.has(w.cid)||g.set(w.cid,p.ts);for(let w of p.supersessions)w.kind==="node"&&h.set(w.old,{by_cid:w.new,reason:w.reason})}let k=d.map(p=>({cid:p,minted_at:g.get(p)??null,superseded_by:h.get(p)?.by_cid??null,reason:h.get(p)?.reason??null,change_note:null})),{rows:R,truncated:l,next_cursor:_}=se(k,e,Ye);return{root_logical_id:t.displayNameOf(c),live_tip:t.superseded.has(c)?null:c,truncated:l,next_cursor:_,chain:R}}function $e(t){let e=t.queries;if(!Array.isArray(e)||e.length<1||e.length>xe)throw new b(`param "queries" must be 1..${xe} entries`);return e.map((n,s)=>{if(typeof n!="object"||n===null)throw new b(`queries[${s}] must be an object`);let r=n;if(typeof r.qid!="string"||r.qid.length===0)throw new b(`queries[${s}].qid must be a non-empty string`);if(typeof r.text!="string"||r.text.length===0)throw new b(`queries[${s}].text must be a non-empty string`);return{qid:r.qid,text:r.text,topK:V(r.top_k,re,qe)}})}function De(t){let e=[];for(let{cid:n,content:s}of t.byLabel("usecase"))t.superseded.has(n)||e.push({cid:n,title:String(s.title??""),summary:String(s.summary??""),description:String(s.description??"")});return e}function Me(t,e,n){let s=De(t);return e.map(r=>{let c=[];for(let o of s){let d=n(r,o);d<=0||c.push({cid:o.cid,logical_id:t.displayNameOf(o.cid),title:o.title,score:Math.round(d*1e3)/1e3,trust:t.trust.get(o.cid)??null,superseded:!1})}return c.sort((o,d)=>d.score-o.score||o.cid.localeCompare(d.cid)),{qid:r.qid,truncated:c.length>r.topK,matches:c.slice(0,r.topK)}})}function Ce(t,e){let n=$e(e);return{results:Me(t,n,(s,r)=>Q(s.text,r.title,r.summary,r.description)),scorer:"lexical_fallback"}}function it(t,e){let n=M(e,"text"),s=D(e,"label")??"usecase",r=V(e.k,re,Ee),c=[];for(let{cid:o,content:d}of t.byLabel(s)){let m=String(d.title??""),f=String(d.summary??""),u=Q(n,m,f);u<=0||c.push({cid:o,title:m,summary:f,score:Math.round(u*1e3)/1e3,trust:t.trust.get(o)??null,freshness:t.stale(o)})}return c.sort((o,d)=>d.score-o.score||o.cid.localeCompare(d.cid)),c.slice(0,r)}function Te(t,e,n){let s=t.heads.get(n);if(typeof s!="string"){let c=[...t.heads.keys()].sort().join(", ");throw new b(`unknown source_id "${n}" \u2014 known: ${c||"(none)"}`)}if(t.mediaOf(s).format==="image")throw new b(`source "${n}" is an image \u2014 no line window (cite img#whole)`);let r=L(e,t,s);if(r==null)throw new b(`source "${n}" blob is missing from the store`);return{head:s,lines:r.toString("utf8").replace(/\n$/,"").split(`
4
- `)}}function ct(t,e,n){return t.slice(e-1,n).map((s,r)=>`${String(e+r).padStart(4,"0")}| ${s}`).join(`
5
- `)}function at(t,e,n){let s=M(e,"source_id"),r=D(e,"anchor"),c=e.line_range;if(r!=null&&c!=null)throw new b("give anchor OR line_range, not both");let{head:o,lines:d}=Te(t,n,s),m=d.length,f,u;if(r!=null){let g=/^L(\d+)-L(\d+)$/.exec(r);if(!g)throw new b(`anchor "${r}" is not L<a>-L<b>`);let h=Number(g[1]),k=Number(g[2]);if(h<1||k<h||k>m)throw new b(`anchor "${r}" does not resolve (source has ${m} lines)`);f=Math.max(1,h-be),u=Math.min(m,k+be)}else if(c!=null){if(!Array.isArray(c)||c.length!==2||!c.every(k=>Number.isInteger(k)))throw new b('param "line_range" must be [from_line, to_line]');let[g,h]=c;if(g<1||h<g)throw new b('param "line_range" must be 1-based with from \u2264 to');if(g>m)throw new b(`line_range starts past the end (source has ${m} lines)`);f=g,u=Math.min(h,m)}else f=1,u=m;return u=Math.min(u,f+We-1),{window:ct(d,f,u),from_line:f,to_line:u,source_cid:o,total_lines:m}}function lt(t,e,n){let s=M(e,"pattern"),r=D(e,"source_id"),c;try{c=new RegExp(s,"u")}catch(f){throw new b(`invalid pattern: ${f instanceof Error?f.message:String(f)}`)}let o=r!=null?[r]:[...t.heads.keys()].sort(),d=[],m=!1;e:for(let f of o){if(r==null){let g=t.heads.get(f);if(typeof g!="string"||t.mediaOf(g).format==="image")continue}let{lines:u}=Te(t,n,f);for(let g=0;g<u.length;g++)if(c.test(u[g])){if(d.length>=Xe){m=!0;break e}d.push({source_id:f,line:g+1,text:u[g]})}}return{matches:d,truncated:m}}function ut(t,e,n,s){try{switch(e){case"get_node":{let r=oe(t,M(n,"cid"));return r==null?{ok:!0,result:null}:{ok:!0,result:Ae([r],n)[0]}}case"get_edges":return{ok:!0,result:et(t,n)};case"find_by_provenance":return{ok:!0,result:tt(t,n)};case"match_by_type":return{ok:!0,result:nt(t,n)};case"stale_nodes":return{ok:!0,result:rt(t,n)};case"search_similar":return{ok:!0,result:it(t,n)};case"search_similar_batch":return{ok:!0,result:Ce(t,n)};case"history":{if(s==null)throw new b("history unavailable (no context store)");return{ok:!0,result:ot(t,n,s)}}case"source_list":{if(s==null)throw new b("source roster unavailable (no context store)");return{ok:!0,result:st(t,n,s)}}case"source_read":case"source_grep":{if(s==null)throw new b("source text unavailable (no context store)");return{ok:!0,result:(e==="source_read"?at:lt)(t,n,s)}}default:return{ok:!1,error:`unknown method: ${e} \u2014 available: ${Ke.join(", ")}`}}}catch(r){return r instanceof b?{ok:!1,error:`${e}: ${r.message}`}:{ok:!1,error:`${e}: graph read failed: ${r instanceof Error?r.message:String(r)}`}}}var U="assurance.sim";function dt(t){return[t.title,t.summary,t.description].filter(Boolean).join(`
6
- `)}async function ft(t,e,n){let s=M(e,"text"),r=D(e,"label")??"usecase",c=V(e.k,re,Ee),o=[];for(let{cid:m,content:f}of t.byLabel(r)){if(t.superseded.has(m))continue;let u=String(f.title??""),g=String(f.summary??""),h=String(f.description??"");o.push({cid:m,title:u,summary:g,description:h,lex:Q(s,u,g,h)})}let d=m=>{let f=[];for(let u of o){let g=m(u);g.score<=0||f.push({cid:u.cid,title:u.title,summary:u.summary,score:Math.round(g.score*1e3)/1e3,trust:t.trust.get(u.cid)??null,freshness:t.stale(u.cid),...g.dense!==void 0?{dense_score:Math.round(g.dense*1e3)/1e3,lexical_score:Math.round(u.lex*1e3)/1e3}:{}})}return f.sort((u,g)=>g.score-u.score||u.cid.localeCompare(g.cid)),f.slice(0,c)};try{let m=n.readVector??J,f=n.writeVector??Z,u=n.alpha??ne,{alias:g}=await n.resolveAlias(U),h=new Map,k=[],R=[];for(let p of o){let w=m(n.contextDir,g,p.cid);w?h.set(p.cid,w):(k.push(p.cid),R.push(dt(p)))}let{vectors:l}=await n.embed(U,[s,...R]),_=Float32Array.from(l[0]);for(let p=0;p<k.length;p++){let w=Float32Array.from(l[p+1]);h.set(k[p],w),f(n.contextDir,g,k[p],w)}return d(p=>{let w=h.get(p.cid),$=w?ee(_,w):0;return{score:te($,p.lex,u),dense:$}})}catch{return n.onDegraded?.(),d(m=>({score:m.lex}))}}async function gt(t,e,n){let s=$e(e),r=De(t);try{let c=n.readVector??J,o=n.writeVector??Z,d=n.alpha??ne,{alias:m}=await n.resolveAlias(U),f=new Map,u=[],g=[];for(let l of r){let _=c(n.contextDir,m,l.cid);_?f.set(l.cid,_):(u.push(l.cid),g.push([l.title,l.summary,l.description].filter(Boolean).join(`
7
- `)))}let{vectors:h}=await n.embed(U,[...s.map(l=>l.text),...g]),k=s.map((l,_)=>Float32Array.from(h[_]));for(let l=0;l<u.length;l++){let _=Float32Array.from(h[s.length+l]);f.set(u[l],_),o(n.contextDir,m,u[l],_)}let R=new Map(s.map((l,_)=>[l.qid,_]));return{results:Me(t,s,(l,_)=>{let p=f.get(_.cid),w=p?ee(k[R.get(l.qid)],p):0;return te(w,Q(l.text,_.title,_.summary,_.description),d)}),scorer:"embedding"}}catch{return n.onDegraded?.(),Ce(t,e)}}async function Ie(t,e,n,s){if((e==="search_similar"||e==="search_similar_batch")&&s)try{return{ok:!0,result:e==="search_similar"?await ft(t,n,s):await gt(t,n,s)}}catch(r){return r instanceof b?{ok:!1,error:`${e}: ${r.message}`}:{ok:!1,error:`${e}: graph read failed: ${r instanceof Error?r.message:String(r)}`}}return ut(t,e,n,s?.contextDir)}var pt=2,Ne=10,ht=2;function Ge(t,e,n){return t.map(s=>{let r=e.find(c=>c.id===s.id);if(r&&r.selected_index!=null&&r.selected_index>=0&&r.selected_index<s.options.length){let o=(s.allow_free_text||s.options[r.selected_index]?.input===!0)&&r.free_text!=null?r.free_text:null;return{id:s.id,resolution:"answered",selected_index:r.selected_index,free_text:o}}return r&&r.free_text!=null&&s.allow_free_text?{id:s.id,resolution:"answered",selected_index:-1,free_text:r.free_text}:n.explicitAcceptDefaults?{id:s.id,resolution:"assumed-default",selected_index:s.recommended_index,flagged:!0}:{id:s.id,resolution:"deferred",selected_index:null}})}async function Nt(t,e,n,s,r=()=>{},c){let o=(i,a)=>r(i,a,t.session_id),d=(process.env.ASSURANCE_LOG_LEVEL??"info").toLowerCase()==="debug",m={contextDir:e.contextDir,resolveAlias:i=>he(i,{env:process.env,auth:e.auth}),embed:(i,a)=>_e(i,a,{env:process.env,auth:e.auth}),...e.onEmbedDegraded?{onDegraded:e.onEmbedDegraded}:{}},f=0,u=e.agent(t,{auth:e.auth,onWarn:i=>{o("warn",i),e.out(i)},onStderr:i=>o("agent_stderr",i)}),g=null,h=null,k,R,l=u.send.bind(u),_=new Set(["user_response","user_message","session_complete"]),p=null,w=!1,$=[],v=i=>{if(i.type==="session_complete"&&(w=!0),p!==null&&_.has(i.type)){$.push(i),o("belt_withheld",{type:i.type,unacked_seq:p});return}l(i)};if(t.checkpoints&&!e.checkpoint)throw u.kill(),new Error("run_config.checkpoints is on but DriverDeps.checkpoint sink is absent (programming error)");let C=!1,K=e.pendingDeferral??null,O=!1,je=e.chat?.attachSender?.(i=>v(i));e.initialMessage&&(v({type:"user_message",message_id:`msg-${t.session_id}-${mt(3).toString("hex")}`,text:e.initialMessage}),o("user_message_sent",{chars:e.initialMessage.length,...d?{text:e.initialMessage}:{}}),e.emit?.({type:"message_sent",sid:t.session_id,chars:e.initialMessage.length}),e.chat?.note(`delivered your message to the agent: "${e.initialMessage}"`));let W,F=0,X=0,B=0,q,E=ye(),N=e.progress??e.out;try{for await(let i of u.events){try{e.chat?.onAgentEvent(i)}catch(a){o("chat_mirror_error",{event_type:i.type,message:a instanceof Error?a.message:String(a)})}if(i.type==="reasoning_delta"?(f+=i.text.length,process.env.KANE_TRACE_REASONING&&o("reasoning_delta",i.text)):i.type==="state_checkpoint"&&!process.env.KANE_TRACE_REASONING?o("state_checkpoint",{seq:i.seq,items:i.delta_items.length,bytes:JSON.stringify(i.delta_items).length}):o(i.type,i),i.type==="reasoning_done"&&o("reasoning_chars",f),i.type==="progress")N(`\u2026 ${i.stage}${i.n?` #${i.n}`:""}`),e.emit?.({type:"agent_activity",kind:"progress",label:`${i.stage}${i.n?` #${i.n}`:""}`});else if(i.type==="reasoning_delta"||i.type==="reasoning_done"||i.type==="tool_activity"||i.type==="decision_activity"){e.onStreamEvent?.(i);let a=E;if(E=we(E,i),E===a)continue;i.type==="reasoning_delta"?E.liveThinking===i.text&&N("\u2237 thinking\u2026"):i.type==="reasoning_done"?i.present&&(N(`thought for ${(i.took_ms/1e3).toFixed(1)}s`),e.emit?.({type:"agent_activity",kind:"thinking_done",label:`thought for ${(i.took_ms/1e3).toFixed(1)}s`})):i.type==="tool_activity"?i.status!=="done"&&(N(E.activity[E.activity.length-1].label),e.emit?.({type:"agent_activity",kind:"tool",label:E.activity[E.activity.length-1].label})):(N(`\xB7 ${E.activity[E.activity.length-1].label}`),e.emit?.({type:"agent_activity",kind:"decision",label:E.activity[E.activity.length-1].label}))}else if(i.type==="usage")q=i.total_credits,e.emit?.({type:"usage",credits:i.credits,total_credits:i.total_credits});else if(i.type==="graph_query"){let a=await Ie(e.graphSlot?.current??s,i.method,i.params??{},m),S=a.ok?{type:"graph_result",id:i.id,ok:!0,result:a.result}:{type:"graph_result",id:i.id,ok:!1,error:a.error};o("graph_result",d?{id:i.id,method:i.method,ok:a.ok,result:a.ok?a.result:a.error}:{id:i.id,method:i.method,ok:a.ok}),v(S)}else if(i.type==="ingest_request")if(e.ingest){let a;try{a=await e.ingest({id:i.id,ref:i.ref,purpose:i.purpose??null})}catch(T){o("ingest_executor_threw",{id:i.id,error:T instanceof Error?T.message:String(T)}),a={ok:!1,error:{code:"INGEST_FAILED",message:"the landing failed \u2014 see the trace for detail"}}}let S=a.ok?{type:"ingest_result",id:i.id,ok:!0,result:a.result}:{type:"ingest_result",id:i.id,ok:!1,error:a.error};o("ingest_result",a.ok?{id:i.id,ok:!0,source_id:a.result.source_id}:{id:i.id,ok:!1,code:a.error.code}),v(S)}else{let a={type:"ingest_result",id:i.id,ok:!1,error:{code:"INGEST_UNAVAILABLE",message:"this session has no ingest executor"}};o("ingest_result",{id:i.id,ok:!1,code:a.error.code}),v(a)}else if(i.type==="state_checkpoint"){if(!e.checkpoint)throw new Error("state_checkpoint arrived with no checkpoint sink (programming error)");p=i.seq;try{for(e.checkpoint.persist(i),p=null,l({type:"checkpoint_ack",seq:i.seq}),o("checkpoint_acked",{seq:i.seq,at:i.at});$.length>0&&p===null;)v($.shift())}catch(a){let S=a instanceof Error?a.message:String(a);C||(C=!0,e.out("warning: couldn't save the session checkpoint \u2014 pausing so no work is lost")),o("checkpoint_persist_failed",{seq:i.seq,message:S}),l({type:"pause"})}}else if(i.type==="session_paused")O=!0,R=i;else if(i.type==="done")O=!0;else if(i.type==="ask_user"){i.text&&(e.chat?e.chat.ledger({kind:"agent",text:i.text}):e.out(i.text));let a=t.mode;if(K){let y=K;K=null,e.emit?.({type:"ask_deferred",source_id:y.ingested.source_id,cid:y.ingested.cid,questions:i.questions.length}),o("ask_deferred",{source_id:y.ingested.source_id,questions:i.questions.length}),v({type:"user_response",answers:[],deferral:{deferred:!0,ingested:y.ingested}});continue}if(a!=="interactive"){let y=i.questions.filter(x=>x.risk==="high");if(a==="ci"&&y.length>0){W=y,u.kill();break}if(a==="agent"&&y.length>0){o("pause_requested",{high:y.map(x=>x.id)}),v({type:"pause"});continue}let A=Ge(i.questions,[],{explicitAcceptDefaults:!0});F+=A.length;for(let x of A)o("assumed_default",{id:x.id,resolution:x.resolution}),e.emit?.({type:"assumed_default",id:x.id,selected_index:x.selected_index,risk:i.questions.find(P=>P.id===x.id)?.risk});let j={type:"user_response",answers:A.map(x=>({id:x.id,selected_index:x.resolution==="deferred"?null:x.selected_index,free_text:null}))};v(j);continue}let S=await e.ask(i.questions);if(!Array.isArray(S)){v({type:"user_response",answers:[],deferral:S});continue}let T=S,He=Ge(i.questions,T,{explicitAcceptDefaults:!1}),Ue={type:"user_response",answers:i.questions.map(y=>{let A=T.find(x=>x.id===y.id);if(A?.free_text!=null){let x=A.selected_index!=null&&A.selected_index>=0&&A.selected_index<y.options.length?A.selected_index:null;if(x!=null){let G=y.allow_free_text||y.options[x]?.input===!0;return G&&A.free_text!=null&&n.set(y.id,(n.get(y.id)??0)+1),{id:y.id,selected_index:x,free_text:G?A.free_text:null}}let P=n.get(y.id)??0;if(!y.allow_free_text||P>=pt){let G=y.options[y.recommended_index]?.label??"recommended option";if(F+=1,e.emit?.({type:"assumed_default",id:y.id,selected_index:y.recommended_index,risk:y.risk}),e.chat?.noteCoercion)e.chat.noteCoercion(y,G);else{let Y=y.text.replace(/\?+\s*$/,""),Ve=Y.length<=36?Y:`${Y.slice(0,33)}\u2026`;e.out(`note: couldn't use a typed answer for "${Ve}" \u2014 kept the recommended option (${G})`)}return{id:y.id,selected_index:y.recommended_index,free_text:null}}return n.set(y.id,P+1),{id:y.id,selected_index:null,free_text:A.free_text}}let j=He.find(x=>x.id===y.id);return j.resolution==="deferred"?{id:y.id,selected_index:null,free_text:null}:{id:y.id,selected_index:j.selected_index,free_text:null}})};v(Ue)}else if(i.type==="chat_ops"&&!e.chat){let a=i.chat_ops??i,S=Array.isArray(a.ops)?a.ops.length:0;if(S===0)a.text&&e.out(a.text),v({type:"session_complete"}),o("headless_zero_op_chat_turn_complete",{chars:a.text?.length??0});else if(B<ht)B+=1,v({type:"user_message",message_id:`nochat-${t.session_id}-${B}`,text:"[auto-repair] chat ops are unavailable in this mode \u2014 commit through finalize_design, or finish if nothing remains."}),o("headless_chat_ops_nudge",{n:B,ops:S});else{h="the agent kept trying to hold a conversation in a non-interactive run",e.out("error: the agent kept trying to hold a conversation in a non-interactive run \u2014 session closed; re-run interactively, or retry"),o("headless_chat_ops_terminal",{ops:S}),u.kill();break}}else if(i.type===(c.terminalEventType??"proposal")){let a=await c.onProposalEvent(i[i.type]);if(g=a.proposal,a.error&&(h=a.error),a.receipt)e.emit?.(a.receipt.event),t.mode!=="interactive"?(X+=1,a.sessionComplete||X>=Ne?(a.sessionComplete||(e.out(`warning: ${Ne} commits without completion \u2014 closing the session (runaway guard)`),o("receipt_runaway_cap",{commits:X})),v({type:"session_complete"}),o("session_complete_sent",{commit_n:a.receipt.event.commit_n,runaway:!a.sessionComplete})):(v({type:"user_message",message_id:`receipt-${t.session_id}-${String(a.receipt.event.commit_n??0)}`,text:a.receipt.text}),o("receipt_sent",{commit_n:a.receipt.event.commit_n,chars:a.receipt.text.length}))):e.chat?.holdReceipt&&(e.chat.holdReceipt(a.receipt.text),o("receipt_held",{commit_n:a.receipt.event.commit_n}));else if(a.error&&t.mode!=="interactive"){e.out("error: saving the agent's work failed and can't be retried in this mode \u2014 session closed; re-run to retry"),o("headless_commit_error_terminal",{error:a.error}),u.kill();break}}else if(i.type==="error"){O=!0;let a=i;if(a.code==="PAIR_MISMATCH")throw new pe(a.expected??"",a.actual??"");h=i.message,typeof a.code=="string"&&(k=a.code);let S=i.failed_proposal;S&&o("failed_proposal",S)}}}finally{u.kill(),je?.()}let Pe=t.chat===!0&&t.mode==="interactive",ce=!!e.checkpoint&&!O&&!w&&!R&&!W&&h===null&&g===null&&!Pe;return{proposal:g,error:h,...k!==void 0?{errorCode:k}:{},paused:R,highRisk:W,...F>0?{assumedDefaults:F}:{},...q!==void 0?{creditsTotal:q}:{},...ce?{crashed:ce}:{}}}function Le(t,e){let n=e.trim(),s=null;for(let r of t??[])if(r.ref===n){if(!r.consumed)return{kind:"unconsumed"};s={kind:"consumed",identity:r.consumed}}return s??{kind:"unauthorized"}}function Lt(t,e,n){let s=e.trim(),r=[...t??[]];return r.find(o=>o.ref===s&&!o.consumed)||r.push({ref:s,entered_at:n.toISOString()}),r}function Oe(t,e,n){let s=e.trim(),r=[...t??[]],c=r.findIndex(o=>o.ref===s&&!o.consumed);return c<0||(r[c]={...r[c],consumed:n}),r}import{basename as ie}from"path";function Fe(t,e,n,s,r){let c=e.mediaOf(s),o=0;if(c.format!=="image"){let d=L(t,e,s);d&&(o=d.toString("utf8").replace(/\n$/,"").split(`
8
- `).length)}return{source_id:n,cid:s,total_lines:o,media_type:c.format,status:r}}function Ut(t){return async e=>{let n=Le(t.handle.state.ingest_registry,e.ref);if(n.kind==="unauthorized")return{ok:!1,error:{code:"INGEST_UNAUTHORIZED_REF",message:"that ref was not provided by the owner this session \u2014 only owner-provided refs may land"}};if(n.kind==="consumed"){let h=t.graphSlot?.current??I(t.contextDir);return{ok:!0,result:Fe(t.contextDir,h,n.identity.source_id,n.identity.cid,"unchanged")}}let s=[],r={out:h=>s.push(h),err:h=>s.push(h),confirm:async()=>!1,isTTY:!1},c;try{c=await ke([e.ref],{},r,t.cwd,t.remoteDeps)}catch(h){return{ok:!1,error:{code:"INGEST_FAILED",message:h instanceof Error?h.message:String(h)}}}if(c.code!==0||c.results.length===0)return{ok:!1,error:{code:"INGEST_FAILED",message:s.find(k=>k.startsWith("error:"))??s.at(-1)??"the landing failed"}};let o=c.results[0],d={source_id:o.source_id,cid:o.source_cid},m=Oe(t.handle.state.ingest_registry,e.ref,d),f=t.schedule?[...t.handle.state.ingest_schedule??[],{source_id:o.source_id,cid:o.source_cid,status:"pending"}]:void 0;t.handle.save({ingest_registry:m,...f!==void 0?{ingest_schedule:f}:{}}),t.graphSlot&&(t.graphSlot.current=I(t.contextDir));let u=t.graphSlot?.current??I(t.contextDir),g=Fe(t.contextDir,u,o.source_id,o.source_cid,o.status==="unchanged"?"unchanged":"landed");return t.note(t.schedule?`landed ${o.source_id} (${ie(e.ref)}) \u2014 ${g.total_lines} lines; scheduled for extraction in this run`:t.scheduleRefused?`landed ${o.source_id} (${ie(e.ref)}) \u2014 ${g.total_lines} lines; ${t.scheduleRefused}`:`landed ${o.source_id} (${ie(e.ref)}) \u2014 ${g.total_lines} lines; it guides this design only (not extracted \u2014 its own extraction pass adds its use-cases)`),{ok:!0,result:g}}}var _t=3,yt={edit:"edit",reject:"mistake",dedup_dropped:"mistake",approve:"usage",enhance:"directed-edit",add:"directed-edit",default_accepted:"usage",default_overridden:"edit",gap_resolution:"usage",dedup_kept:"usage"};function Be(t){let{contextDir:e,graph:n,watermark:s,by:r}=t,{signals:c}=H(e,s),o=c.filter(l=>l.event_id===void 0||n.appliedEvents.has(l.event_id)),d=new Map;for(let l of o){let _=l.event_id??`${l.ts}|${l.id}|${l.verdict}|${l.polarity}`;d.has(`${_}|${l.polarity}|${l.verdict}`)||d.set(`${_}|${l.polarity}|${l.verdict}`,l)}let m=[...d.values()].sort((l,_)=>(l.event_id??l.ts)<(_.event_id??_.ts)?-1:1),f=new Map;for(let l of m){let _=`${l.verdict}|${l.tag??""}`,p=f.get(_)??{verdict:l.verdict,tag:l.tag,events:new Set};p.events.add(l.event_id??l.ts),f.set(_,p)}let u=[],g=[],h=new Set,k=0;for(let[,l]of[...f.entries()].sort(([_],[p])=>_<p?-1:1)){if(l.events.size<_t)continue;let p={derived:!0,statement:`${l.verdict}${l.tag?`/${l.tag}`:""} recurs (${l.events.size} distinct events) \u2014 bias future proposals ${l.verdict==="approve"?"toward":"away from"} this pattern`,learned_from_kind:yt[l.verdict]??"usage",learned_from:[...l.events].sort()},w=le("stylenote",p);if(w.length>0)return{record:null,errors:w.map(C=>({code:C.code,detail:C.detail})),minted:0};let $=ue("stylenote",p);if(n.hasNode($))continue;u.push({cid:$,label:ae.STYLENOTE,content:p});let v=me("stylenote",C=>h.has(C),n.names.keys());v!==null&&(h.add(v),g.push({cid:$,slug:v,by:r})),k+=1}return u.length===0?{record:null,errors:null,minted:0}:{record:fe(e,{ts:new Date().toISOString(),proposal_id:null,nodes:u,edges:[],review:[],supersessions:[],source_head_moves:{},...g.length>0?{names:g}:{}},{expectPrev:n.latestHash}).record,errors:null,minted:k}}var wt={kind:"system",id:"distiller"};function tn(t,e=n=>process.stderr.write(n+`
9
- `)){try{let n=I(t),{watermark:s}=H(t),r=Be({contextDir:t,graph:n,watermark:s,by:wt});if(r.errors){let c=r.errors.map(o=>`${o.code}: ${o.detail}`).join("; ");return e(`warning: style-note distill skipped \u2014 ${c}`),{minted:0,error:c}}if(r.minted>0)try{ge(t)}catch{}return{minted:r.minted,error:null}}catch(n){let s=n instanceof Error?n.message:String(n);return e(`warning: style-note distill skipped \u2014 ${s}`),{minted:0,error:s}}}export{bt as a,Ie as b,pt as c,Ge as d,Nt as e,Lt as f,Ut as g,tn as h};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{d,e as f}from"./chunk-5YPBPZUR.js";var G={high:3,med:2,low:1},R={create:0,evolve:1,"reuse-candidate":2},_=.75;function a(e,n){return!e.superseded.has(n)&&e.trust.get(n)!=="archived"}function E(e,n){return e.edgesInto(n).some(t=>t.type===f.VERIFIES&&a(e,t.src))}function m(e,n="med"){let t=e.risk;return t==="high"||t==="med"||t==="low"?t:n}function u(e,n){return e.displayNameOf(n)??n}function y(e,n){return`kane-cli design tests --use-case ${u(e,n)}`}function b(e,n){let t=e.edgesFrom(n).find(i=>i.type===f.SCOPED_TO&&a(e,i.dst));if(!t)return null;let s=e.nodeLabel.get(t.dst);if(s===d.USECASE)return t.dst;if(s===d.SCENARIO){let i=e.edgesFrom(t.dst).find(r=>r.type===f.BELONGS_TO&&a(e,r.dst));return i?i.dst:null}return null}function v(e,n){let t=b(e,n);return t?y(e,t):w(e,n)}function w(e,n){return`kane-cli design explain ${u(e,n)}`}function h(e,n){let t=e.edgesFrom(n).find(i=>i.type===f.AUTOMATES&&a(e,i.dst));if(!t)return null;let s=e.edgesFrom(t.dst).find(i=>i.type===f.BELONGS_TO&&a(e,i.dst));return s?s.dst:null}function x(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.AC))a(e,t)&&(E(e,t)||n.push({ref:u(e,t),kind:"no-verifies",why:"no live test verifies this acceptance criterion",risk:m(s),stage:"design",tag:"create",ready_command:v(e,t)}));return n}function S(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.USECASE)){if(!a(e,t))continue;let i=e.edgesInto(t).filter(o=>o.type===f.BELONGS_TO&&a(e,o.src));if(i.length===0){n.push({ref:u(e,t),kind:"zero-scenario",why:"use-case has no scenarios",risk:m(s),stage:"design",tag:"create",ready_command:y(e,t)});continue}i.every(o=>e.getNode(o.src)?.content.case_type==="happy")&&n.push({ref:u(e,t),kind:"happy-only",why:"use-case is exercised by happy-path scenarios only",risk:m(s),stage:"design",tag:"create",ready_command:y(e,t)})}return n}function L(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.GAP)){if(!a(e,t))continue;let i=s.ref,r=typeof i=="string"?e.resolve(i):null,o=r&&a(e,r.tip)?r.tip:null,l=o?e.nodeLabel.get(o):null,p=l===d.USECASE?y(e,o):l===d.AC?v(e,o):w(e,t),c=s.question&&typeof s.question=="object"?s.question:void 0,k=typeof s.text=="string"&&s.text||(c&&typeof c.header=="string"?c.header:"")||"design gap";n.push({ref:u(e,t),kind:String(s.kind),why:k,risk:m(s),stage:"design",tag:"create",ready_command:p,...typeof s.risk_rationale=="string"?{risk_rationale:s.risk_rationale}:{},...c?{question:c}:{}})}return n}function C(e){let n=[];for(let{cid:t,content:s}of e.byLabel(d.AC)){if(!a(e,t))continue;let i=e.stale(t);i==="fresh"||i==="superseded"||n.push({ref:u(e,t),kind:"stale-ac",why:`acceptance criterion is ${i} \u2014 its source moved since this was authored \xB7 why: kane-cli design explain ${u(e,t)}`,risk:m(s),stage:"design",tag:"evolve",ready_command:"kane-cli maintain reconcile"})}for(let{cid:t,content:s}of e.byLabel(d.TEST)){if(!a(e,t))continue;let i=e.stale(t);if(i==="fresh"||i==="superseded")continue;let r=e.edgesFrom(t).filter(g=>g.type===f.VERIFIES&&a(e,g.dst)),o=r.map(g=>m(e.getNode(g.dst)?.content??{})),l=o.includes("high")?"high":o.includes("med")?"med":o.includes("low")?"low":"med",p=r[0]?.dst??null,c=p?null:h(e,t),k=p?v(e,p):c?y(e,c):w(e,t);n.push({ref:u(e,t),kind:"stale-test",why:`test is ${i} \u2014 its source moved since this was authored`,risk:l,stage:"design",tag:"evolve",ready_command:k})}return n}async function O(e,n,t){for(let s of e)if(s.tag==="create"){if(!t){s.meta={embed_arm:"skipped"};continue}try{let i=n.resolve(s.ref),r=i?n.getNode(i.tip):null,o=r&&(String(r.content.title??"")||String(r.content.text??""))||s.why,l=r?.label===d.USECASE?"scenario":"test",c=(await t.searchSimilar(o,{label:l,k:1}))[0];c&&c.score>=_?(s.tag="reuse-candidate",s.meta={embed_arm:"used",near_hit:{ref:u(n,c.cid),score:c.score}}):s.meta={embed_arm:"used",near_hit:null}}catch{s.meta={embed_arm:"skipped"}}}}function A(e,n){let t=G[n.risk]-G[e.risk];if(t!==0)return t;let s=R[e.tag]-R[n.tag];return s!==0?s:e.ref<n.ref?-1:e.ref>n.ref?1:0}function T(e,n){let t=[],s=r=>{let o=e.resolve(r);return o&&!o.superseded?m(e.getNode(o.tip)?.content??{}):"med"},i=r=>{let o=e.resolve(r),l=o&&!o.superseded?b(e,o.tip):null;return l?u(e,l):r};for(let r of n.usecases??[])for(let o of r.acceptance_criteria??[])(o.covered_by??[]).length>0&&(o.execution==="failed"?t.push({ref:o.id,kind:"execution-failed",stage:"cover",tag:"evolve",risk:s(o.id),why:`covering test failed against this AC (tests: ${(o.covered_by??[]).join(", ")})`,ready_command:`kane-cli maintain evolve ${i(o.id)}`}):o.execution==="blocked"?t.push({ref:o.id,kind:"execution-blocked",stage:"cover",tag:"reuse-candidate",risk:s(o.id),why:"the oracle could not run (infrastructure) \u2014 the covering test exists and is reusable",ready_command:"kane-cli testrun run"}):o.execution==="not-run"&&t.push({ref:o.id,kind:"covered-not-run",stage:"cover",tag:"reuse-candidate",risk:s(o.id),why:"a covering test exists but never joined this pack \u2014 run it",ready_command:"kane-cli testrun run"}));return t}async function N(e,n,t,s){if(n!=="design"&&!s)throw new Error(`gaps-engine: stage "${n}" requires a pack's usecases doc`);let i=[];return(n==="design"||n==="all")&&i.push(...x(e),...S(e),...L(e),...C(e)),(n==="cover"||n==="all")&&i.push(...T(e,s)),await O(i,e,t),i.sort(A),i}export{a,E as b,b as c,N as d};
@@ -1,19 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as $}from"./chunk-L5LI2JF4.js";import{dirname as H,basename as U,join as w}from"path";function z(e){let t=U(e);return t.endsWith("_test.md")?t.slice(0,-8):t.endsWith(".md")?t.slice(0,-3):t}function k(e){return w(H(e),`output-${z(e)}`)}function ve(e){return w(k(e),"Result.md")}function O(e){return w(k(e),".internal")}function M(e){return w(O(e),"meta.json")}function _e(e,t,n){return w(k(e),`${t}-${n}-code`)}function ke(e){return w(k(e),"generated-code")}function xe(e){return k(e)+".staging"}function q(e){return w(O(e),"steps")}function Se(e,t,n){return w(q(e),`${t}-${n}`)}import{existsSync as g,renameSync as x,rmSync as v}from"fs";function $e(e){let t=`${e}.staging`,n=`${e}.bak`;if(!g(t))throw new Error(`atomicReplaceDir: staging missing: ${t}`);if(process.platform==="win32"){g(e)&&v(e,{recursive:!0,force:!0}),x(t,e);return}g(e)&&(g(n)&&v(n,{recursive:!0,force:!0}),x(e,n)),x(t,e),g(n)&&v(n,{recursive:!0,force:!0})}function Me(e){let t=`${e}.staging`,n=`${e}.bak`;if(process.platform==="win32"){g(t)&&(g(e)?v(t,{recursive:!0,force:!0}):x(t,e));return}if(g(n)&&!g(e)){x(n,e),g(t)&&v(t,{recursive:!0,force:!0});return}g(n)&&g(e)&&v(n,{recursive:!0,force:!0}),g(t)&&g(e)&&v(t,{recursive:!0,force:!0})}import{readFileSync as ge,existsSync as pe}from"fs";import{basename as G,dirname as ue,isAbsolute as me,resolve as Y}from"path";var c=class extends Error{constructor(n,r,i){super(`[${r}${i!=null?`:${i}`:""}] ${n}`);this.file=r;this.line=i;this.name="TestMdParseError"}},Q=new Set(["username","access_key","oauth","profile","project_id","folder_id"]),I=new Set(["mode","max_steps","timeout","global_context","local_context","variables","session_context","code_export","code_language","url","target","chrome_profile","cdp_endpoint","ws_endpoint","headless","on_lock_conflict","tags","assurance"]),L=new Set(["optional"]),X=new Set(["optional","variables"]),Z=new Set(["target","chrome_profile","cdp_endpoint","ws_endpoint","headless"]),ee=new Set(["mode","on_lock_conflict","tags","assurance"]);function T(e,t){let n=t.split(`
3
- `),{global:r,bodyStartLine:i}=te(e,n),{title:o,steps:s}=oe(e,n,i);return{path:e,title:o,global:r,steps:s}}function te(e,t){if(t[0]?.trim()!=="---")return{global:{},bodyStartLine:0};let n=-1;for(let o=1;o<t.length;o++)if(t[o].trim()==="---"){n=o;break}if(n===-1)throw new c("frontmatter is missing closing '---'",e,1);let r=t.slice(1,n).join(`
4
- `),i;try{i=$(r)??{}}catch(o){throw new c(`invalid YAML in frontmatter: ${o.message}`,e,1)}if(F(e,i,"frontmatter",1),i.on_lock_conflict!==void 0){let o=i.on_lock_conflict;if(o!=="readonly"&&o!=="fail"&&o!=="wait")throw new c(`on_lock_conflict must be 'readonly' | 'fail' | 'wait', got: ${JSON.stringify(o)}`,e,1)}if(A(e,i,1),i.assurance!==void 0){let o=i.assurance;if(o===null||typeof o!="object"||Array.isArray(o))throw new c("assurance must be a mapping with sub-keys {id, base}",e,1);let s=o;for(let l of Object.keys(s))if(l!=="id"&&l!=="base")throw new c(`unknown assurance sub-key '${l}' \u2014 the engine block allows only {id, base}`,e,1);if(typeof s.id!="string"||s.id.length===0)throw new c("assurance.id must be a non-empty string (logical id)",e,1);if(s.base!==void 0&&!(typeof s.base=="string"&&/^sha256:[0-9a-f]+$/.test(s.base)))throw new c("assurance.base must be a 'sha256:<hex>' string",e,1)}if(i.tags!==void 0){let o=i.tags,s=Array.isArray(o)?o.map(l=>String(l)).join(","):String(o);i.tags=ne(s,e,1)}return{global:i,bodyStartLine:n+1}}function ne(e,t,n){let i=e.trim().replace(/^\[/,"").replace(/\]$/,"").split(",").map(o=>o.trim().toLowerCase());if(i.length===0||i.some(o=>o.length===0))throw new c("tags must be a non-empty list of non-empty strings",t,n);return[...new Set(i)]}var ie=/\s@verifies\s+(ac-[\w.:\/-]+(?:\s*,\s*ac-[\w.:\/-]+)*)\s*$/;function re(e,t,n){let r=ie.exec(t);if(r)return{label:t.slice(0,r.index).trim(),verifies:r[1].split(",").map(o=>o.trim())};let i=t.lastIndexOf("@verifies");if(i>0&&/\s/.test(t[i-1])){let o=t.slice(i+9).split(/[\s,]+/).filter(s=>s.length>0);if(o.length===0||o.every(s=>s.startsWith("ac-")))throw new c("malformed @verifies directive \u2014 expected '@verifies ac-<id>[, ac-<id>\u2026]' at the end of the heading",e,n)}return{label:t,verifies:[]}}function oe(e,t,n){let r,i=n;for(;i<t.length&&t[i].trim()==="";)i++;let o=i<t.length?/^#\s+(.+?)\s*$/.exec(t[i]):null;o&&(r=o[1],i++);let s=[];for(let f=i;f<t.length;f++)/^##\s/.test(t[f])&&s.push(f);let l=[];for(let f=0;f<s.length;f++){let p=s[f],u=s[f+1]??t.length,h=t[p].replace(/^##\s+/,"").trim(),{label:a,verifies:d}=re(e,h,p+1),m=t.slice(p+1,u),{config:b,body:y,optional:R}=se(e,p+1,m);l.push({index:f+1,heading:a,verifies:d,config:b,body:y,headingLine:p+1,optional:R})}return{title:r,steps:l}}function se(e,t,n){let r=0;for(;r<n.length&&n[r].trim()==="";)r++;let i,o=t;if(r<n.length&&/^```yaml\s*$/.test(n[r])){let d=r;o=t+d,r++;let m=-1;for(;r<n.length;){if(/^```\s*$/.test(n[r])){m=r;break}r++}if(m===-1)throw new c("step-config fenced ```yaml block is not closed",e,o);let b=n.slice(d+1,m).join(`
5
- `);try{i=$(b)??{}}catch(y){throw new c(`invalid YAML in step config: ${y.message}`,e,o)}r=m+1}let s=ae(n.slice(r)),l=s.filter(d=>d.trim()!=="");if(l.length>0&&/^@session\s+/.test(l[0].trim()))throw new c("@session is no longer supported (iteration 3); use @import instead",e,t);let f=/^@import\s+(\S.*)$/,u=s.filter(d=>f.test(d.trim())).length>0;if(u&&l.length!==1)throw new c("step body must be exactly one of prose / @import",e,t);let h=!1,a;if(i){if(F(e,i,u?"step config (ref)":"step config (objective)",o),A(e,i,o),typeof i.optional=="boolean")h=i.optional;else if(i.optional!==void 0)throw new c(`step config 'optional' must be boolean: got ${typeof i.optional}`,e,o);let d={...i};delete d.optional,u&&delete d.variables,!u&&Object.keys(d).length>0&&(a=d)}if(u){let m=f.exec(l[0].trim())[1].trim(),b=i?.variables;return{body:{kind:"import_ref",path:m,...b&&Object.keys(b).length>0?{bindings:b}:{}},optional:h}}return{body:{kind:"objective",text:s.join(`
6
- `).trim()},config:a,optional:h}}function ae(e){let t=0,n=e.length;for(;t<n&&e[t].trim()==="";)t++;for(;n>t&&e[n-1].trim()==="";)n--;return e.slice(t,n)}function A(e,t,n){let r=t.variables;if(r==null)return;if(typeof r!="object"||Array.isArray(r))throw new c("variables must be an object map",e,n);let i={};for(let[o,s]of Object.entries(r))if(typeof s=="string")i[o]={value:s};else if(s&&typeof s=="object"&&!Array.isArray(s)&&typeof s.value=="string")i[o]=s;else throw new c(`variable '${o}' must be a string or { value: ... } object`,e,n);t.variables=i}function F(e,t,n,r){for(let i of Object.keys(t)){if(Q.has(i))throw new c(`auth/identity keys are CLI-only: ${i}`,e,r);if(n==="frontmatter"){if(L.has(i))throw new c(`step-only key in frontmatter: ${i}`,e,r);if(!I.has(i))throw new c(`unknown config key: ${i}`,e,r)}else if(n==="step config (objective)"){if(!I.has(i)&&!L.has(i))throw new c(`unknown config key: ${i}`,e,r);if(Z.has(i))throw new c(`chrome config is global-only: ${i}`,e,r);if(ee.has(i))throw new c(`'${i}' is run-level and cannot be set per-step`,e,r)}else if(!X.has(i))throw new c(`step config on @import may only contain 'optional' / 'variables': got ${i}`,e,r)}}import{createHash as P}from"crypto";function S(e){if(e==null)return null;if(Array.isArray(e))return e.map(S);if(typeof e=="object"){let t={};for(let n of Object.keys(e).sort()){let r=e[n];r!==void 0&&(t[n]=S(r))}return t}return e}function ce(e){if(e.body.kind!=="objective")throw new Error("stepMd5: only objective steps have an md5; @import rows do not");let t={...e.config??{},optional:e.optional??!1},n=JSON.stringify(S(t));return P("md5").update(e.body.text).update(`
7
- `).update(n).digest("hex")}function V(e){let t={};for(let[r,i]of Object.entries(e.bindings??{}))t[r]={value:i.value,...i.secret===!0?{secret:!0}:{},...i.syntax?{syntax:i.syntax}:{}};let n=JSON.stringify(S({bindings:t,optional:e.optional}));return P("md5").update(e.path).update(`
8
- `).update(n).digest("hex")}function Le(e){return ce({index:e.trace[e.trace.length-1].stepIndex,heading:e.trace[e.trace.length-1].heading,verifies:[],body:{kind:"objective",text:e.objective},config:e.parsedConfig,headingLine:1,optional:e.optional})}import{writeFileSync as de,mkdirSync as le,readFileSync as fe}from"fs";import{dirname as K}from"path";function D(e){try{return JSON.parse(fe(M(e),"utf8"))}catch{return null}}function Ve(e){let t=M(e.sourcePath);try{le(K(t),{recursive:!0})}catch(r){return process.stderr.write(`
9
- \u26A0 Failed to create output directory.
10
- ${r.message}
11
- Path: ${K(t)}
12
-
13
- `),t}let n={commit_id:e.commitId};e.testId!==void 0&&(n.test_id=e.testId),e.testcaseId!==void 0&&(n.testcase_id=e.testcaseId),e.projectId!==void 0&&(n.project_id=e.projectId),e.folderId!==void 0&&(n.folder_id=e.folderId),e.orgId!==void 0&&(n.org_id=e.orgId),e.sessionName!==void 0&&(n.session_name=e.sessionName),e.plan!==void 0&&(n.plan=e.plan);try{de(t,JSON.stringify(n,null,2)+`
14
- `,"utf8")}catch(r){process.stderr.write(`
15
- \u26A0 Failed to write meta.json.
16
- ${r.message}
17
- Path: ${t}
18
-
19
- `)}return t}var N=["target","chrome_profile","cdp_endpoint","ws_endpoint","headless"],be=["mode","on_lock_conflict","tags","target","chrome_profile","cdp_endpoint","ws_endpoint","headless"],_=class extends Error{constructor(t){super(t),this.name="TestMdResolveError"}};function E(e){return G(e).endsWith("_test.md")?"test":"helper"}function Je(e){let t=Y(e),n=W(t),r=he(n.global),i=[],o=[],s=[{file:t,kind:E(t)}],l=[];return J(n,o,i,[],t,{},s,l,{}),i.forEach((p,u)=>p.flatIndex=u+1),{rootPath:t,rootTitle:n.title,rootGlobal:n.global,rootSteps:n.steps,chrome:r,steps:i,unitFiles:s,warnings:l}}function Be(e){let t=[];for(let n of e.unitFiles){if(n.kind!=="test")continue;let r=D(n.file);r&&t.push({file:n.file,...r.project_id?{project_id:String(r.project_id)}:{},...r.org_id?{org_id:String(r.org_id)}:{}})}return t}function W(e){if(!pe(e))throw new _(`@import path not found: ${e}`);let t=ge(e,"utf8");return T(e,t)}function J(e,t,n,r,i,o,s,l,f){if(t.includes(e.path)){let a=[...t,e.path].map(d=>G(d)).join(" \u2192 ");throw new _(`cyclic reference: ${a}`)}t.push(e.path);let p=r.length===0,u=e.global.variables??{};for(let a of Object.keys(o))if(Object.hasOwn(u,a))throw new _(`callsite binding '${a}' collides with a declared variable in ${e.path} (frontmatter variables are pinned; parameters are its undeclared names)`);let h=e.global;if(!p){let a={...e.global};for(let d of be)a[d]!==void 0&&(l.push(`${e.path}: '${d}' is root-governed on imported units \u2014 ignored`),delete a[d]);a.url!==void 0&&(f.pending=String(a.url),delete a.url),h=a}for(let a of e.steps){let d=a.body.kind!=="objective";if(a.optional&&d&&!p)throw new _(`intermediate-ref 'optional' is not supported in v1: ${e.path}:${a.headingLine}`);if(a.body.kind==="objective"){let j={file:e.path,stepIndex:a.index,heading:a.heading,optional:a.optional??!1},B=ye(h,a.config,o),C={flatIndex:0,objective:a.body.text,sourceFile:e.path,trace:[...r,j],config:B,parsedConfig:a.config,optional:a.optional??!1,verifies:a.verifies,owningFile:e.path,unitKind:E(e.path)};f.pending&&(C.unitEntryUrl=f.pending,f.pending=void 0),n.push(C);continue}let m={file:e.path,stepIndex:a.index,heading:a.heading,optional:a.optional??!1,rowMd5:V({path:a.body.path,bindings:a.body.bindings,optional:a.optional??!1})},b=ue(e.path),y=me(a.body.path)?a.body.path:Y(b,a.body.path),R=W(y);s.some(j=>j.file===y)||s.push({file:y,kind:E(y)}),J(R,t,n,[...r,m],i,a.body.bindings??{},s,l,f)}p||(f.pending=void 0),t.pop()}function he(e){let t={};for(let n of N)e[n]!==void 0&&(t[n]=e[n]);return t}function ye(e,t,n){let r={};for(let[s,l]of Object.entries(e))N.includes(s)||(r[s]=l);let i={...r,...t??{}},o={...n,...e.variables??{},...t?.variables??{}};return Object.keys(o).length>0?i.variables=o:delete i.variables,i}export{z as a,k as b,ve as c,O as d,M as e,_e as f,ke as g,xe as h,q as i,Se as j,$e as k,Me as l,T as m,V as n,Le as o,D as p,Ve as q,_ as r,Je as s,Be as t};
@@ -1,11 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as Ke}from"./chunk-DXV6MBTD.js";import{a as Fe}from"./chunk-KT6G7AF2.js";import{a as Ne}from"./chunk-FPFOW6BS.js";import{a as Oe}from"./chunk-YCCUBQY4.js";import{a as $e}from"./chunk-JRMDGLLT.js";import{a as Ue}from"./chunk-VE3SUJMA.js";import{a as me}from"./chunk-4OPQJ7PE.js";import{c as _e,y as u}from"./chunk-C4G7RVJ6.js";import{a as te}from"./chunk-HCBYKLMW.js";import{a as p,b as f,h as De,i as be,k as ke}from"./chunk-C44QQJR4.js";import{a as xe}from"./chunk-6YGTRKDT.js";import{e as $}from"./chunk-UR6MHSHU.js";var We=$(xe(),1);import{readFileSync as tt,writeFileSync as nt,mkdirSync as rt}from"fs";import{dirname as ot,join as He}from"path";var it=He(_e,"command-history.json"),At=He(_e,"generate-history.json"),st=200,Ie=class{entries;filePath;max;constructor(t=it,e=st){this.filePath=t,this.max=e,this.entries=this._load()}push(t){this.entries.length>0&&this.entries[this.entries.length-1]===t||(this.entries.push(t),this.entries.length>this.max&&(this.entries=this.entries.slice(this.entries.length-this.max)),this._save())}getAll(){return[...this.entries]}search(t){let e=t.toLowerCase(),i=[];for(let s=this.entries.length-1;s>=0;s--)this.entries[s].toLowerCase().includes(e)&&i.push(this.entries[s]);return i}_load(){if(this.filePath===null)return[];try{let t=tt(this.filePath,"utf-8"),e=JSON.parse(t);return Array.isArray(e)?e:[]}catch{return[]}}_save(){if(this.filePath!==null)try{rt(ot(this.filePath),{recursive:!0}),nt(this.filePath,JSON.stringify(this.entries)+`
3
- `)}catch{}}};function Ct(r){let t=(0,We.useRef)(null);return t.current||(t.current=new Ie(r)),t.current}var D=$(xe(),1);var Pe=$(xe(),1);var Q=$(te(),1);function Ge({history:r,onSelect:t,onClose:e}){let[i,s]=(0,Pe.useState)(""),[l,h]=(0,Pe.useState)(0),w=i?r.search(i).slice(0,8):[];return be((T,m)=>{if(m.escape){e();return}if(m.return){w.length>0&&w[l]?t(w[l]):e();return}if(m.upArrow){h(S=>Math.max(0,S-1));return}if(m.downArrow){h(S=>Math.min(w.length-1,S+1));return}if(m.backspace||m.delete){s(S=>S.slice(0,-1)),h(0);return}T&&!m.ctrl&&!m.meta&&(s(S=>S+T),h(0))}),(0,Q.jsxs)(p,{flexDirection:"column",marginLeft:2,borderStyle:"single",paddingX:1,children:[(0,Q.jsx)(f,{color:u.muted,bold:!0,children:"reverse search"}),(0,Q.jsxs)(p,{gap:1,children:[(0,Q.jsx)(f,{color:u.dim,children:"search:"}),(0,Q.jsx)(f,{children:i}),(0,Q.jsx)(f,{color:u.orange,children:"\u2588"})]}),w.length>0&&(0,Q.jsx)(f,{children:" "}),w.map((T,m)=>(0,Q.jsx)(p,{marginLeft:2,children:(0,Q.jsxs)(f,{color:m===l?u.orange:u.dim,bold:m===l,children:[m===l?"\u25B8 ":" ",T]})},`${m}-${T}`))]})}var ue=$(te(),1);function Ve({commands:r,selectedIndex:t}){return r.length===0?null:(0,ue.jsx)(p,{flexDirection:"column",marginBottom:0,children:r.map((e,i)=>{let s=i===t;return(0,ue.jsxs)(p,{children:[(0,ue.jsx)(f,{color:s?u.orange:u.dim,children:s?"\u276F ":" "}),(0,ue.jsxs)(f,{color:s?u.orange:void 0,bold:s,children:["/",e.name]}),e.args&&(0,ue.jsxs)(f,{color:u.dim,children:[" ",e.args]}),(0,ue.jsxs)(f,{color:u.dim,children:[" ",e.description]})]},e.name)})})}var qe=$(xe(),1);var G=$(te(),1),je={scenario:"Scenarios",case:"Test Cases",file:"Files"};function Ye(r){let t={scenario:0,case:0,file:0};for(let e of r)t[e.kind]++;return["scenario","case","file"].filter(e=>t[e]>0).map(e=>`${t[e]} ${je[e]}`).join(" \xB7 ")}var Ee=7;function ze({items:r,selectedIndex:t,accent:e=u.orange}){let i=r.length;if(i===0)return null;let s=Math.floor(Ee/2),l=i<=Ee?0:Math.max(0,Math.min(t-s,i-Ee)),h=Math.min(i,l+Ee),w=l,T=i-h;return(0,G.jsxs)(p,{flexDirection:"column",marginBottom:0,children:[w>0&&(0,G.jsx)(p,{children:(0,G.jsx)(f,{color:u.dim,children:` \u22EF ${w} above \u2014 ${Ye(r.slice(0,l))}`})}),r.slice(l,h).map((m,S)=>{let U=l+S,k=U===t,C=S===0||r[U-1].kind!==m.kind;return(0,G.jsxs)(qe.default.Fragment,{children:[C&&(0,G.jsx)(p,{children:(0,G.jsx)(f,{color:u.dim,children:je[m.kind]})}),(0,G.jsxs)(p,{children:[(0,G.jsx)(f,{color:k?e:u.dim,children:k?"\u276F ":" "}),(0,G.jsx)(f,{color:k?e:void 0,bold:k,children:m.label})]})]},`${m.kind}:${m.value}:${U}`)}),T>0&&(0,G.jsx)(p,{children:(0,G.jsx)(f,{color:u.dim,children:` \u22EF ${T} more \u2014 ${Ye(r.slice(h))}`})})]})}var ye=$(xe(),1);var lt=27,at=127,ct=11;function ut(r){return r>=64&&r<=126}function ft(r,t){r===ct&&t({killToEnd:!0,ctrl:!0,raw:String.fromCharCode(r)})}function dt(r,t){r===at&&t({backspace:!0,meta:!0,raw:"\x1B\x7F"})}function mt(r,t){let e=r.map(s=>String.fromCharCode(s)).join(""),i=/^\[1;([0-9]+)([A-D])$/.exec(e);if(i){let s=parseInt(i[1],10),l=i[2],h={raw:"\x1B"+e};if(s===2)h.shift=!0;else if(s===3)h.meta=!0;else if(s===5)h.ctrl=!0;else return;l==="A"?h.arrowUp=!0:l==="B"?h.arrowDown=!0:l==="C"?h.arrowRight=!0:l==="D"&&(h.arrowLeft=!0),t(h);return}if(e==="[H"||e==="[1~"||e==="[7~"){t({home:!0,raw:"\x1B"+e});return}if(e==="[F"||e==="[4~"||e==="[8~"){t({end:!0,raw:"\x1B"+e});return}if(e==="[3;5~"){t({delete:!0,ctrl:!0,raw:"\x1B"+e});return}if(e==="[3;3~"){t({delete:!0,meta:!0,raw:"\x1B"+e});return}}function ht(r,t){r===72?t({home:!0,raw:"\x1BO"+String.fromCharCode(r)}):r===70&&t({end:!0,raw:"\x1BO"+String.fromCharCode(r)})}function gt(){let r="IDLE",t=[];function e(){r="IDLE",t=[]}return{feed(i,s){for(let l of i)r==="IDLE"?l===lt?(r="ESC",t=[]):ft(l,s):r==="ESC"?l===91?(r="CSI",t=[]):l===79?(r="SS3",t=[]):(dt(l,s),e()):r==="CSI"?(t.push(l),ut(l)&&(mt([91,...t],s),e())):r==="SS3"&&(ht(l,s),e())},flushIdle(i){r==="ESC"&&t.length===0&&i({raw:"\x1B"}),e()}}}function Xe(r,t={}){let e=(0,ye.useRef)(r);e.current=r;let{stdin:i}=De();(0,ye.useEffect)(()=>{if(t.isActive===!1||!i)return;let s=gt(),l=null,h=w=>{l&&(clearTimeout(l),l=null);let T=Buffer.isBuffer(w)?w:Buffer.from(w,"binary");s.feed(T,m=>e.current(m)),l=setTimeout(()=>{s.flushIdle(m=>e.current(m)),l=null},50)};return i.on("data",h),()=>{i.removeListener("data",h),l&&clearTimeout(l)}},[t.isActive,i])}var y=$(te(),1);function pt(r,t){let e=t-1;for(;e>=0&&r[e]!=="@"&&r[e]!==" "&&r[e]!==`
4
- `;)e--;return e<0||r[e]!=="@"||e>0&&r[e-1]!==" "&&r[e-1]!==`
5
- `?null:{at:e,query:r.slice(e+1,t).join("")}}var Me=10;function xt(r){return r.replace(/\x1b?\[200~/g,"").replace(/\x1b?\[201~/g,"").replace(/\r\n/g,`
6
- `).replace(/\r/g,`
7
- `).replace(/[\x00-\x08\x0b-\x1f\x7f]/g,"")}function bt(r,t){let e=[],i=0;for(;i<=r.length;){let s=i;for(;s<r.length&&r[s]!==`
8
- `;)s++;if(i===s)e.push({start:i,end:i});else{let l=i;for(;l<s;){let h=Math.min(l+t,s);e.push({start:l,end:h}),l=h}}if(s>=r.length)break;i=s+1}return e}function Tt(r,t,e){if(r.length===0)return 0;if(t>=e.length)return r.length-1;if(e[t]===`
9
- `){for(let i=r.length-1;i>=0;i--)if(r[i].end===t)return i;return r.length-1}for(let i=0;i<r.length;i++){let s=r[i];if(s.start<=t&&t<s.end)return i}return r.length-1}function Je(r,t,e,i){let s=bt(r,e);if(s.length===0)return null;let l=Tt(s,t,r),h=l+i;if(h<0||h>=s.length)return null;let w=t-s[l].start,T=s[h],m=T.end-T.start;return T.start+Math.min(w,m)}function jt({onSubmit:r,onEscape:t,history:e,placeholder:i="Type an objective or /command...",commands:s,clearSeq:l,submitVerb:h,footerBindings:w,inert:T=!1,clearOnSubmit:m=!0,noHistory:S=!1,accent:U=u.orange,scenarios:k,mentionFiles:C,submitEmpty:M=!1}){let[c,v]=(0,D.useState)([]),[d,b]=(0,D.useState)(0),[V,q]=(0,D.useState)("none"),[Y,O]=(0,D.useState)(-1),oe=(0,D.useRef)(""),[Te,H]=(0,D.useState)(!0),{stdout:ve}=ke(),F=ve?.columns??80,[ie,j]=(0,D.useState)(0),[Z,se]=(0,D.useState)(0),[Ae,le]=(0,D.useState)([]),[Ce,_]=(0,D.useState)(null),R=(0,D.useRef)(!1);(0,D.useEffect)(()=>{if(l!==void 0){if(!R.current){R.current=!0;return}v([]),b(0),O(-1),oe.current="",H(!0),q("none"),j(0)}},[l]);let g=c.join(""),P=(()=>{if(V!=="none"||c.length===0)return"";if(g.startsWith("/")&&s&&g.length>=2){let n=g.slice(1).toLowerCase(),o=s.find(E=>E.name.startsWith(n)&&E.name!==n);return o?`/${o.name}`.slice(g.length):""}if(g.startsWith("/")||S)return"";let a=e.getAll();for(let n=a.length-1;n>=0;n--)if(a[n].startsWith(g)&&a[n]!==g)return a[n].slice(g.length);return""})(),B=(()=>{if(!s||!g.startsWith("/"))return[];let a=g.length>=2?g.slice(1).toLowerCase():"";return a&&s.some(n=>n.name===a)?[]:s.filter(n=>!a||n.name.startsWith(a))})(),he=B.length>0&&g.startsWith("/"),z=!!C||!!(k&&k.length)?pt(c,d):null,Re=z?z.query:null,ne=(()=>{if(!z)return[];let a=z.query.toLowerCase(),n=[];(k??[]).forEach((o,E)=>{let A=`s${E+1}`;(!a||A.includes(a)||(o.title??"").toLowerCase().includes(a))&&n.push({kind:"scenario",value:A,label:`@${A} ${o.title??o.sid??""}`.trim()})}),(k??[]).forEach((o,E)=>{let I=E+1;(o.test_cases??[]).forEach((A,N)=>{let X=`s${I}.c${N+1}`;(!a||X.includes(a)||(A.title??"").toLowerCase().includes(a))&&n.push({kind:"case",value:X,label:`@${X} ${A.title??""}`.trim()})})});for(let o of Ae)n.push({kind:"file",value:o,label:o});return n})(),ge=z!==null&&z.at!==Ce&&!he&&V==="none"&&ne.length>0;(0,D.useEffect)(()=>{if(!C||Re===null){le([]);return}let a=!1;return C(Re).then(n=>{a||le(n)}).catch(()=>{a||le([])}),()=>{a=!0}},[Re,C]),(0,D.useEffect)(()=>{Z>=ne.length&&se(0)},[ne.length]);let Be=a=>{if(!z)return;let n=a.kind==="file"&&/\s/.test(a.value)?`@"${a.value}"`:`@${a.value}`,o=[...c.slice(0,z.at),...n,...c.slice(d)];v(o),b(z.at+n.length),se(0),_(z.at),H(!1)};if(be((a,n)=>{if(Te&&a&&H(!1),n.return){if(ge&&ne[Z]){Be(ne[Z]);return}if(he&&B[ie]){let o=`/${B[ie].name}`;S||e.push(o),r(o),v([]),b(0),q("none"),O(-1),oe.current="",H(!0),j(0);return}g.trim()?(S||e.push(g.trim()),r(g.trim()),m&&(v([]),b(0),q("none"),O(-1),oe.current="",H(!0),j(0))):M&&r("");return}if(n.escape){if(ge){_(z.at);return}V!=="none"?q("none"):c.length>0?(v([]),b(0),O(-1),oe.current=""):t?.();return}if(n.tab&&!n.shift){if(ge&&ne[Z]){Be(ne[Z]);return}if(he&&B[ie]){let o=`/${B[ie].name}`;v([...o]),b(o.length),j(0);return}if(P){let o=g+P;v([...o]),b(o.length);return}return}if(n.ctrl&&a==="r"){if(S)return;q("search");return}if(n.ctrl&&a==="a"){b(0);return}if(n.ctrl&&a==="e"){b(c.length);return}if(n.ctrl&&a==="w"){if(d===0)return;let o=d-1;for(;o>0&&c[o]===" ";)o--;for(;o>0&&c[o-1]!==" ";)o--;let E=[...c.slice(0,o),...c.slice(d)];v(E),b(o);return}if(n.ctrl&&a==="u"){v([]),b(0),O(-1),q("none");return}if(n.meta&&a==="b"){let o=d-1;for(;o>0&&c[o]===" ";)o--;for(;o>0&&c[o-1]!==" ";)o--;b(Math.max(0,o));return}if(n.meta&&a==="f"){let o=d;for(;o<c.length&&c[o]!==" ";)o++;for(;o<c.length&&c[o]===" ";)o++;b(o);return}if(n.leftArrow){if(n.ctrl||n.shift)return;b(o=>Math.max(0,o-1));return}if(n.rightArrow){if(n.ctrl||n.shift)return;if(d>=c.length&&P){let o=g+P;v([...o]),b(o.length)}else b(o=>Math.min(c.length,o+1));return}if(n.upArrow){if(n.shift)return;if(ge){se(o=>Math.max(0,o-1));return}if(he){j(o=>Math.max(0,o-1));return}if(V==="none"){let o=Math.max(1,F-2),E=Je(c,d,o,-1);if(E!==null){b(E);return}if(S)return;let I=e.getAll();if(I.length===0)return;if(Y===-1){oe.current=g,O(I.length-1);let A=I[I.length-1];v([...A]),b(A.length)}else if(Y>0){let A=Y-1;O(A);let N=I[A];v([...N]),b(N.length)}}return}if(n.downArrow){if(n.shift)return;if(ge){se(o=>Math.min(ne.length-1,o+1));return}if(he){j(o=>Math.min(B.length-1,o+1));return}if(V==="none"){let o=Math.max(1,F-2),E=Je(c,d,o,1);if(E!==null){b(E);return}if(S)return;let I=e.getAll();if(Y===-1)return;if(Y<I.length-1){let A=Y+1;O(A);let N=I[A];v([...N]),b(N.length)}else{O(-1);let A=oe.current;v([...A]),b(A.length)}}return}if(n.backspace||n.delete){if(n.meta||n.ctrl)return;if(d>0){let o=[...c.slice(0,d-1),...c.slice(d)];v(o),b(d-1),O(-1),j(0),_(null),se(0)}return}if(a&&!n.ctrl&&!n.meta){let o=xt(a);if(!o)return;let E=[...c.slice(0,d),...o,...c.slice(d)];v(E),b(d+o.length),O(-1),j(0),_(null),se(0)}},{isActive:!T&&V!=="search"}),Xe(a=>{if(a.home){b(0);return}if(a.end){b(c.length);return}if(a.killToEnd){v(c.slice(0,d));return}if(a.arrowLeft&&(a.ctrl||a.meta)){let n=d-1;for(;n>0&&c[n]===" ";)n--;for(;n>0&&c[n-1]!==" ";)n--;b(Math.max(0,n));return}if(a.arrowRight&&(a.ctrl||a.meta)){let n=d;for(;n<c.length&&c[n]!==" ";)n++;for(;n<c.length&&c[n]===" ";)n++;b(n);return}if(a.backspace&&a.meta){if(d===0)return;let n=d-1;for(;n>0&&c[n]===" ";)n--;for(;n>0&&c[n-1]!==" ";)n--;let o=[...c.slice(0,n),...c.slice(d)];v(o),b(n);return}if(a.delete&&(a.ctrl||a.meta)){let n=d;for(;n<c.length&&c[n]===" ";)n++;for(;n<c.length&&c[n]!==" ";)n++;v([...c.slice(0,d),...c.slice(n)]);return}},{isActive:!T&&V!=="search"}),T)return(0,y.jsxs)(p,{flexDirection:"column",children:[(0,y.jsx)(f,{color:u.muted,children:"\u2500".repeat(F)}),(0,y.jsxs)(p,{children:[(0,y.jsx)(f,{color:u.muted,children:"\u276F "}),(0,y.jsx)(f,{color:u.dim,children:i})]}),(0,y.jsx)(me,{bindings:w??[{keys:"ctrl+c",label:"cancel"},{keys:"/cancel",label:"stop turn"},{keys:"ctrl+t",label:"thinking"}],suppressEscBack:!0})]});let Ze=a=>{v([...a]),b(a.length),q("none")},et=()=>{q("none")},we=(()=>{if(Te&&c.length===0)return null;let a=d>=c.length,n=c.slice(0,d).join(""),o,E;a?(o=" ",E=""):c[d]===`
10
- `?(o=" ",E=c.slice(d).join("")):(o=c[d],E=c.slice(d+1).join(""));let I=n+o+E+P,A=n.length,N=A+1,X=N+E.length,Se=Math.max(1,F-2),L=[],re=0;for(;re<=I.length;){let W=I.indexOf(`
11
- `,re);if(W===-1&&(W=I.length),re===W)L.push({type:"content",start:re,end:re});else{let J=re;for(;J<W;){let ae=Math.min(J+Se,W);L.push({type:"content",start:J,end:ae}),J=ae}}if(W>=I.length)break;re=W+1}let ee=Math.max(0,L.findIndex(W=>W.start<=A&&A<=W.end)),de;if(L.length<=Me)de=L;else{let J=Me-1-4;if(ee<4||ee>=L.length-J)de=[...L.slice(0,4),{type:"ellipsis",hidden:L.length-4-J},...L.slice(L.length-J)];else{let ae=Me-2,Le=Math.floor(ae/2),ce=ee-Le,pe=ee+(ae-Le)-1;ce<1&&(pe+=1-ce,ce=1),pe>L.length-2&&(ce-=pe-(L.length-2),pe=L.length-2),ce=Math.max(1,ce),de=[{type:"ellipsis",hidden:ce},...L.slice(ce,pe+1),{type:"ellipsis",hidden:L.length-pe-1}]}}return{full:I,b:A,c:N,a:X,rows:de}})();return(0,y.jsxs)(p,{flexDirection:"column",children:[V==="search"&&(0,y.jsx)(Ge,{history:e,onSelect:Ze,onClose:et}),he&&(0,y.jsx)(Ve,{commands:B,selectedIndex:ie}),ge&&(0,y.jsx)(ze,{items:ne,selectedIndex:Z,accent:U}),(0,y.jsx)(f,{color:u.muted,children:"\u2500".repeat(F)}),we===null?(0,y.jsxs)(p,{children:[(0,y.jsx)(f,{color:U,children:"\u276F "}),(0,y.jsx)(f,{inverse:!0,children:" "}),(0,y.jsx)(f,{color:u.dim,children:i})]}):(()=>{let a=we.rows.findIndex(n=>n.type==="content");return(0,y.jsx)(p,{flexDirection:"column",children:we.rows.map((n,o)=>{if(n.type==="ellipsis")return(0,y.jsx)(p,{children:(0,y.jsxs)(f,{color:u.dim,children:[" \u22EF ","(",n.hidden," more line",n.hidden===1?"":"s",")"]})},o);let{full:E,b:I,c:A,a:N}=we,X=n.start,fe=n.end,Se=o===a,L=Se?"\u276F ":" ",re=Se?U:u.muted,ee=[(0,y.jsx)(f,{color:re,children:L},"p")];X<Math.min(I,fe)&&ee.push((0,y.jsx)(f,{children:E.slice(X,Math.min(I,fe))},"b"));let de=Math.max(I,X),W=Math.min(A,fe);de<W&&ee.push((0,y.jsx)(f,{color:U,inverse:!0,children:E.slice(de,W)},"c"));let J=Math.max(A,X),ae=Math.min(N,fe);return J<ae&&ee.push((0,y.jsx)(f,{children:E.slice(J,ae)},"a")),fe>N&&ee.push((0,y.jsx)(f,{color:u.dim,children:E.slice(Math.max(N,X),fe)},"g")),(0,y.jsx)(p,{children:ee},o)})})})(),(0,y.jsx)(me,{bindings:w??[{keys:"\u2191\u2193",label:"history"},{keys:"\u21B5",label:h??"submit"},{keys:"tab",label:"complete"},{keys:"ctrl+r",label:"search"}],escBackLabel:"clear"})]})}var K=$(xe(),1);var x=$(te(),1);function vt(r){let t=[{id:"method",label:"Auth method",options:[{label:"Basic Auth",value:"basic"},{label:"OAuth (browser)",value:"oauth"}]}];return r&&t.push({id:"env",label:"Environment",options:[{label:"prod",value:"prod"},{label:"stage",value:"stage"}]}),t.push({id:"profile",label:"Profile"}),t.push({id:"credentials",label:"Credentials"}),t}function tn({devMode:r,profiles:t,onBasicLogin:e,onOAuthLogin:i,onComplete:s,onCancel:l}){let h=vt(r),[w,T]=(0,K.useState)(0),[m,S]=(0,K.useState)(0),[U,k]=(0,K.useState)({}),[C,M]=(0,K.useState)("select"),[c,v]=(0,K.useState)(""),[d,b]=(0,K.useState)("username"),[V,q]=(0,K.useState)(""),[Y,O]=(0,K.useState)(null),[oe,Te]=(0,K.useState)(null),H=h[w],ve=U.method??"basic",F=U.env??"prod",ie=(0,K.useCallback)(()=>{let R=t.filter(g=>g.env===F).map(g=>({label:`${g.profile} [${g.env}]`,value:g.profile}));return R.push({label:"+ Create new",value:"__new__"}),R},[t,F]),j=(0,K.useCallback)(()=>{w===0?l():(T(_=>_-1),S(0),M("select"),v(""),O(null))},[w,l]),Z=(0,K.useCallback)(_=>{ve==="basic"?(M("text-input"),b("username"),v("")):(M("waiting"),i(_,F).then(()=>{Te(`Logged in via OAuth as ${_} [${F}]`),M("done")}).catch(R=>{O(R.message),M("error")}))},[ve,F,i]),se=(0,K.useCallback)(_=>{let R=_.trim();if(R){if(d==="profileName"){let g=R;k(P=>({...P,profile:g})),Z(g);return}if(d==="username"){q(R),v(""),b("accessKey"),M("text-input-masked");return}if(d==="accessKey"){let g=U.profile??"default";M("waiting"),(async()=>{try{await e(g,F,V,R),Te(`Logged in as ${g} [${F}] via basic auth`),M("done")}catch{O("Credentials not valid. Please use valid credentials."),q(""),v(""),b("username"),M("text-input")}})()}}},[d,U.profile,F,e,V,Z]),Ae=(0,K.useCallback)(_=>{v(_),Y&&O(null)},[Y]);be((_,R)=>{if(C==="done"){let P=U.profile??"default";s(P,F);return}if(C==="error"){l();return}if(C==="waiting"){R.escape&&l();return}if(C==="text-input"||C==="text-input-masked")return;if(R.escape){j();return}let g=H?.id==="profile"?ie():H?.options??[];if(R.upArrow){S(P=>Math.max(0,P-1));return}if(R.downArrow){S(P=>Math.min(g.length-1,P+1));return}if(R.return&&g[m]){let P=g[m];if(H.id==="profile"){if(P.value==="__new__"){M("text-input"),b("profileName"),v("");return}k(B=>({...B,profile:P.value})),T(B=>B+1),S(0),Z(P.value);return}k(B=>({...B,[H.id]:P.value})),T(B=>B+1),S(0)}});let le="Login";if(C==="done")return(0,x.jsxs)(p,{flexDirection:"column",borderStyle:"round",borderColor:u.green,paddingX:2,paddingY:1,children:[(0,x.jsxs)(f,{color:u.green,bold:!0,children:["\u2713 ",oe]}),(0,x.jsx)(p,{marginTop:1,children:(0,x.jsx)(f,{color:u.dim,children:"press any key"})})]});if(C==="error")return(0,x.jsxs)(p,{flexDirection:"column",borderStyle:"round",borderColor:u.red,paddingX:2,paddingY:1,children:[(0,x.jsx)(f,{color:u.red,bold:!0,children:"Login failed"}),(0,x.jsx)(p,{marginTop:1,children:(0,x.jsx)(f,{color:u.red,children:Y})}),(0,x.jsx)(p,{marginTop:1,children:(0,x.jsx)(f,{color:u.dim,children:"press any key"})})]});if(C==="waiting")return(0,x.jsxs)(p,{flexDirection:"column",borderStyle:"round",borderColor:u.orange,paddingX:2,paddingY:1,children:[(0,x.jsxs)(f,{color:u.orange,bold:!0,children:[le," \u203A OAuth"]}),(0,x.jsx)(p,{marginTop:1,children:(0,x.jsx)(f,{color:u.secondary,children:"Opening browser for login..."})}),(0,x.jsx)(p,{marginTop:1,children:(0,x.jsx)(f,{color:u.orange,children:"Waiting for callback \u27F3"})}),(0,x.jsx)(me,{bindings:[],escBackLabel:"cancel"})]});if(C==="text-input"||C==="text-input-masked"){let _=d==="username"?"Username":d==="accessKey"?"Access Key":"Profile name",R=d==="username"||d==="accessKey"?`${le} \u203A Basic Auth`:`${le} \u203A New Profile`;return(0,x.jsxs)(p,{flexDirection:"column",borderStyle:"round",borderColor:u.orange,paddingX:2,paddingY:1,children:[Y&&(d==="username"||d==="accessKey")&&(0,x.jsx)(p,{marginBottom:1,children:(0,x.jsxs)(f,{color:u.red,children:["\u2717 ",Y]})}),(0,x.jsx)(f,{color:u.orange,bold:!0,children:R}),d==="accessKey"&&(0,x.jsxs)(p,{marginTop:1,children:[(0,x.jsx)(f,{color:u.secondary,children:"Username: "}),(0,x.jsx)(f,{children:V})]}),(0,x.jsxs)(p,{marginTop:1,children:[(0,x.jsxs)(f,{color:u.secondary,children:[_,": "]}),(0,x.jsx)(Oe,{value:c,onChange:Ae,onSubmit:se,onCancel:j,masked:C==="text-input-masked"})]}),(0,x.jsx)(me,{bindings:[{keys:"\u21B5",label:"confirm"}],escBackLabel:"back"})]})}let Ce=H?.id==="profile"?ie():H?.options??[];return(0,x.jsxs)(p,{flexDirection:"column",borderStyle:"round",borderColor:u.orange,paddingX:2,paddingY:1,children:[(0,x.jsx)(f,{color:u.orange,bold:!0,children:le}),(0,x.jsx)(p,{marginTop:1,children:(0,x.jsxs)(f,{color:u.secondary,children:[H?.label,":"]})}),(0,x.jsx)(p,{flexDirection:"column",marginTop:1,children:Ce.map((_,R)=>{let g=R===m,P=g?"\u276F ":" ",B=_.value==="__new__"?u.green:g?u.orange:void 0;return(0,x.jsxs)(f,{color:B,children:[P,_.label]},_.value)})}),(0,x.jsx)(me,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"select"}],escBackLabel:"back"})]})}async function Qe(r,t,e,i){let s=r.loadBasicAuth(t,e),l=r.loadCredentials(t,e);if(!s&&!l)return i("info","STARTUP_GATE_NO_CREDS","Profile has no credentials",{profile:t,env:e}),{status:"needs_login",profile:t,env:e};let h=$e(e),w=async()=>r.loadCredentials(t,e)?.access_token??null,T=new Ne(h.controllerBaseUrl,w,s,i);i("info","STARTUP_GATE_VALIDATE","Validating credentials with controller",{profile:t,env:e,method:s?"basic":"oauth"});let m=await T.resolve(!0);if(m)return i("info","STARTUP_GATE_VALID","Credentials validated",{profile:t,env:e,username:m.username,org_id:m.org_id}),{status:"authenticated",result:{profile:t,env:e,credentials:l,basicAuth:s,tmsCreds:m,resolver:T}};if(!s&&l){let S=l.refresh_token,k=r.loadClient(t,e)?.client_id;if(S&&k){i("info","STARTUP_GATE_REFRESH","Attempting token refresh",{profile:t,env:e});try{let M=await new Fe(e).refreshToken(S,k);if(M.access_token){r.saveCredentials(t,e,{...l,...M,expires_at:Date.now()/1e3+(M.expires_in??3600)});let v=await T.resolve(!0);if(v)return i("info","STARTUP_GATE_REFRESH_OK","Token refreshed and validated",{profile:t,env:e,username:v.username}),{status:"authenticated",result:{profile:t,env:e,credentials:{...l,...M},basicAuth:null,tmsCreds:v,resolver:T}}}i("warn","STARTUP_GATE_REFRESH_INVALID","Refreshed token still invalid",{profile:t,env:e})}catch(C){i("warn","STARTUP_GATE_REFRESH_FAILED","Token refresh failed",{profile:t,env:e,error:C instanceof Error?C.message:String(C)})}}else i("info","STARTUP_GATE_NO_REFRESH","No refresh_token or client_id \u2014 login required",{profile:t,env:e})}return i("info","STARTUP_GATE_INVALID","Credentials invalid \u2014 login required",{profile:t,env:e}),{status:"needs_login",profile:t,env:e}}async function cn(r,t,e=new Ke){let i=r.listProfiles();if(t("info","STARTUP_GATE_START","Auth startup gate",{profile_count:i.length}),i.length===0)return t("info","STARTUP_GATE_NONE","No profiles found \u2014 login required"),{status:"needs_login"};if(i.length>1){let h=r.getActiveProfile(),w=r.getDefaultEnv();if(h&&i.some(m=>m.profile===h&&m.env===w)){t("info","STARTUP_GATE_TRY_ACTIVE","Multiple profiles \u2014 trying active first",{activeProfile:h,activeEnv:w});let m=await Qe(r,h,w,t);if(m.status==="authenticated")return m;t("info","STARTUP_GATE_ACTIVE_FAILED","Active profile invalid \u2014 showing picker",{activeProfile:h,activeEnv:w})}return t("info","STARTUP_GATE_MULTI","Multiple profiles \u2014 picker required",{profiles:i.map(T=>`${T.profile}/${T.env}`)}),{status:"needs_pick",profiles:i}}let{profile:s,env:l}=i[0];return r.setActiveProfile(s),r.setDefaultEnv(l),Ue(r,e,s,l),Qe(r,s,l,t)}export{At as a,Ct as b,jt as c,tn as d,Qe as e,cn as f};
@@ -1,4 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as U}from"./chunk-DNNZ353O.js";import{a as G}from"./chunk-Q2F5QB2W.js";import{b as B,c as b}from"./chunk-NVGBE2DR.js";import{a as T}from"./chunk-GW5DWAXY.js";import{a as L,c as P}from"./chunk-L4JIMNKW.js";import{b as j,i as F}from"./chunk-M7WQM4UA.js";import{a as $,d as N,f as D}from"./chunk-5YPBPZUR.js";import{existsSync as ne,mkdirSync as ie,readFileSync as oe,writeFileSync as re}from"fs";import{basename as C,extname as H,join as se}from"path";var K=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function q(e){return typeof e=="string"&&e!=="."&&e!==".."&&K.test(e)}function k(e){if(!q(e))throw new Error(`unsafe logical_id: ${JSON.stringify(e)} \u2014 must match ${String(K)} (no path separators)`)}import{extname as W}from"path";var Q={kind:"jira",media_type:"application/x-kane-jira-envelope",extensions:[],cite:"verbatim",maxBytes:2e6},z=[{kind:"text",media_type:"text/plain",extensions:[".txt"],cite:"verbatim",maxBytes:2e6},{kind:"markdown",media_type:"text/markdown",extensions:[".md",".markdown"],cite:"verbatim",maxBytes:2e6},{kind:"image",media_type:"image/png",extensions:[".png"],cite:"anchor-only",maxBytes:5e6},{kind:"image",media_type:"image/jpeg",extensions:[".jpg",".jpeg"],cite:"anchor-only",maxBytes:5e6},{kind:"image",media_type:"image/webp",extensions:[".webp"],cite:"anchor-only",maxBytes:5e6},{kind:"text",media_type:"application/json",extensions:[".json"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"application/yaml",extensions:[".yaml",".yml"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"application/toml",extensions:[".toml"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"application/xml",extensions:[".xml"],cite:"verbatim",maxBytes:2e6},{kind:"text",media_type:"text/plain",extensions:[".log"],cite:"verbatim",maxBytes:2e6},{kind:"pdf",media_type:"application/pdf",extensions:[".pdf"],cite:"verbatim",maxBytes:25e6,sniff:e=>e.subarray(0,5).toString("latin1")==="%PDF-"},{kind:"docx",media_type:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",extensions:[".docx"],cite:"verbatim",maxBytes:25e6,sniff:e=>e.length>=4&&e[0]===80&&e[1]===75&&e[2]===3&&e[3]===4,sniffFail:e=>e.length>=8&&e.subarray(0,8).equals(ee)?"DOCX_ENCRYPTED_OR_LEGACY: password-protected Office file (or a legacy .doc renamed .docx) \u2014 remove the password / save as .docx and re-ingest":void 0},Q],ee=Buffer.from([208,207,17,224,161,177,26,225]),S={pdf:"pdf",docx:"docx",jira:"jira"},pe=new Set(Object.keys(S));function J(e){let n=W(e).toLowerCase(),t=z.find(i=>i.extensions.includes(n));return t?{ok:!0,media:t}:{ok:!1,code:"UNSUPPORTED_MEDIA",allowlist:z.flatMap(i=>i.extensions)}}function v(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${Math.max(1,Math.round(e/1024))} KB`}function ae(e,n,t){return G({source_id:e,source_cid:"sha256:".padEnd(71,"0"),doc_kind:n,numbered_text:U(t)})}var Y=2e3;function de(e){let t=C(e,H(e)).toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^[^a-z0-9]+/,"");return k(t),t}function Be(e){let n=/^(.*?)[-_.]?v?\d+$/.exec(e);if(!n)return null;let t=(n[1]??"").replace(/[-_.]+$/,"");return t.length>0&&t!==e?t:null}function X(e){let n=se(e,"meta.json");ne(n)||(ie(e,{recursive:!0}),re(n,JSON.stringify({schema:$,canonicalizer:"v1"},null,2)+`
3
- `))}async function ke(e){let{contextDir:n,filePath:t,asId:i,confirmSameSource:y,converters:h}=e;X(n);let o=oe(t),s=J(t);if(!s.ok)throw new Error(`${C(t)} is a file type kane can't ingest (${H(t)||"no extension"}) \u2014 supported: ${s.allowlist.join(" ")} [UNSUPPORTED_MEDIA]`);if(o.byteLength>s.media.maxBytes)throw new Error(`${C(t)} is too large \u2014 ${v(o.byteLength)}, the limit for ${s.media.media_type} is ${v(s.media.maxBytes)} [FILE_TOO_LARGE]`);if(s.media.sniff&&!s.media.sniff(o)){let m=s.media.sniffFail?.(o);throw new Error(m??`MEDIA_SNIFF_MISMATCH: ${t} does not look like ${s.media.media_type}`)}let l;return i!==void 0?(k(i),l=i):l=de(t),ce({contextDir:n,bytes:o,media:s.media,sourceId:l,label:t,confirmSameSource:y,converters:h})}async function ce(e){let{contextDir:n,bytes:t,media:i,confirmSameSource:y,converters:h}=e,o=e.sourceId,s=e.label??o;if(X(n),t.byteLength>i.maxBytes)throw new Error(`the content is too large \u2014 ${v(t.byteLength)}, the limit for ${i.media_type} is ${v(i.maxBytes)} [FILE_TOO_LARGE]`);let l=[],m=S[i.kind];if(i.cite==="verbatim"&&!m){try{new TextDecoder("utf-8",{fatal:!0}).decode(t)}catch{throw new Error(`ENCODING_UNSUPPORTED: ${s} is not valid UTF-8 \u2014 re-save it as UTF-8 and re-ingest`)}t.toString("utf8").split(`
4
- `).some(f=>f.length>Y)&&l.push(`long line detected (> ${Y} chars) \u2014 anchors lose granularity; consider pretty-printing before ingest`)}let p=B(t),_=new Map,c=null,M=!1;for(let f=0;;f++){let x=T(n),u=x.heads.get(o),Z=u!=null?x.getNode(u)?.content:void 0;if(u!=null&&Z?.blob===p)return{status:"unchanged",source_id:o,cid:u,blob:p};if(u==null){for(let[r,g]of x.heads.entries())if(!(r===o||g==null)&&x.getNode(g)?.content.blob===p){let a;if(_.has(r)?a=_.get(r):f===0&&y?(a=await y(r),_.set(r,a)):(a=!1,_.set(r,a),f>0&&l.push(`same bytes already ingested as '${r}' \u2014 minted under '${o}' anyway (the twin appeared mid-commit; not prompted)`)),a)return{status:"unchanged",source_id:r,cid:g,blob:p};break}}if(c===null){let r={},g,a=null,O=null;if(m){let A=h?.[m];if(!A)throw new Error(`${m.toUpperCase()}_CONVERTER_MISSING: ${m} ingestion requires the converter \u2014 the command layer wires it`);let d=await A(t);a=Buffer.from(d.projection,"utf8");let R=ae(o,i.kind,a);if(R>4e5)throw new Error(`PROJECTION_TOO_LARGE: serialized source payload ${R} bytes > ${4e5} \u2014 split the document and re-ingest`);r={text_blob:B(a),...d.inventory.length>0?{images:d.inventory}:{},converter:d.converter},O=d.blobs,g={kind:i.kind,...d.pages!==void 0?{pages:d.pages}:{},delivered:d.delivered.length,omitted:d.inventory.length-d.delivered.length}}c={derived:r,composite:g,projBytes:a,derivedBlobs:O}}if(!M){if(b(n,t),c.projBytes!==null&&b(n,c.projBytes),c.derivedBlobs!==null)for(let[,r]of c.derivedBlobs)b(n,r);M=!0}let w=P(o,p),E=D("source",w);if(E.length>0)throw new Error(`source node fails ${E[0].code}: ${E[0].detail}`);let I=L("source",w);try{F(n,{ts:new Date().toISOString(),proposal_id:null,nodes:[{cid:I,label:N.SOURCE,content:w}],edges:[],review:[],supersessions:[],media:{[o]:{format:i.kind,media_type:i.media_type,anchors_supported:m?["L-L","img#ref"]:i.cite==="verbatim"?["L-L"]:[],...c.derived}},...e.eventIds&&e.eventIds.length>0?{event_ids:e.eventIds}:{},source_head_moves:{[o]:I}},{expectPrev:x.latestHash})}catch(r){if(r instanceof j&&f<3)continue;throw r}return{status:u!=null?"versioned":"created",source_id:o,cid:I,blob:p,...l.length?{warnings:l}:{},...c.composite?{composite:c.composite}:{}}}}export{k as a,Q as b,pe as c,J as d,ae as e,de as f,Be as g,ke as h,ce as i};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as K,c as V,d as z,e as ee,f as te}from"./chunk-RNSSM2BK.js";import{c as J}from"./chunk-3FN5VJMV.js";import{a as Q}from"./chunk-DXV6MBTD.js";import{a as Z}from"./chunk-FPFOW6BS.js";import{b as H}from"./chunk-JKTFTF24.js";import{b as W}from"./chunk-323MLBYA.js";import{p as E}from"./chunk-W6VD2XFO.js";import{a as O}from"./chunk-2WVKOZ6W.js";import{a as _}from"./chunk-JRMDGLLT.js";import{a as k,b as A,d as Y}from"./chunk-VE3SUJMA.js";import{a as q}from"./chunk-F6ZOJXYU.js";import{a as G}from"./chunk-HCBYKLMW.js";import{a as c,b as u,i as I,j as X}from"./chunk-C44QQJR4.js";import{a as ue}from"./chunk-6YGTRKDT.js";import{e as F}from"./chunk-UR6MHSHU.js";var i=F(ue(),1);var r=F(G(),1);function _e({resultRef:h,mode:d="singleshot",loginCompleteRef:f}){let{exit:m}=X(),C=(0,i.useRef)(new q),S=(0,i.useRef)(new Q),v=(0,i.useRef)(new J),t=C.current,l=S.current,$=v.current,ne=K(),[P,g]=(0,i.useState)(d==="login"?"login":"gate"),[L,re]=(0,i.useState)(null),[de,R]=(0,i.useState)(null),[ge,T]=(0,i.useState)(null),[N,oe]=(0,i.useState)(null),[U,B]=(0,i.useState)([]),x=(0,i.useCallback)((e,n,s,o)=>$.log(e,n,s,o),[$]),pe=(0,i.useCallback)((e,n)=>{e?k(t,l,e,n):l.save({project_id:null,project_name:null,folder_id:null,folder_name:null})},[t,l]),y=(0,i.useCallback)(()=>{d==="login"?(f&&(f.current=!0),m()):g("input")},[d,m,f]),D=(0,i.useCallback)((e,n)=>{let s=k(t,l,e,n);if(d==="login"){g("ensure-project");return}Y(s)?y():s.projectId?g("ensure-folder"):g("ensure-project")},[t,l,y,d]);I((e,n)=>{n.ctrl&&e==="c"&&E(0,"Ctrl+C exit")});let M=(0,i.useRef)(!1);i.default.useEffect(()=>{M.current||(M.current=!0,d!=="login"&&te(t,x).then(e=>{re(e),e.status==="authenticated"?D(e.result.profile,e.result.env):e.status==="needs_pick"?g("pick"):(R(e.profile??null),T(e.env??null),g("login"))}).catch(e=>{oe(`Auth check failed: ${e instanceof Error?e.message:String(e)}`)}))},[t,x]);let ie=(0,i.useCallback)(e=>{h.current={objective:e},m()},[h,m]),se=(0,i.useCallback)(async(e,n)=>{t.setActiveProfile(e),t.setDefaultEnv(n),(await ee(t,e,n,x)).status==="authenticated"?D(e,n):(R(e),T(n),g("login"))},[t,x,D]),w=(0,i.useCallback)(()=>{let e=t.getActiveProfile(),n=t.getDefaultEnv();if(!e)return null;let s=_(n),o=t.loadBasicAuth(e,n);return new Z(s.controllerBaseUrl,async()=>t.loadCredentials(e,n)?.access_token??null,o,x)},[t,x]),le=(0,i.useCallback)(async()=>{let e=w();if(!e)return null;let n=e.cached??await e.resolve();if(!n)return null;let s=_(t.getDefaultEnv()),o=new O(s.tmsBaseUrl,n.username,n.access_key);try{let p=(await o.listProjects()).find(b=>b.name==="KaneAI Generated");if(p)return{id:p.project_id,name:p.name};let j=await o.createProject("KaneAI Generated");return{id:j.id,name:j.name}}catch{return null}},[w,t]),ae=(0,i.useCallback)(async e=>{let n=w();if(!n)return null;let s=n.cached??await n.resolve();if(!s)return null;let o=_(t.getDefaultEnv()),a=new O(o.tmsBaseUrl,s.username,s.access_key);try{let j=(await a.listFolders(e)).find(ce=>ce.name==="Untitled");if(j)return{id:j.id,name:j.name};let b=await a.createFolder(e,"Untitled");return{id:b.id,name:b.name}}catch{return null}},[w,t]);if(P==="gate")return(0,r.jsx)(c,{paddingX:1,children:(0,r.jsx)(u,{color:"yellow",children:"Checking authentication..."})});if(N)return(0,r.jsxs)(c,{flexDirection:"column",paddingX:1,children:[(0,r.jsx)(u,{color:"red",children:N}),(0,r.jsx)(u,{color:"gray",children:"Press Ctrl+C to exit."})]});if(P==="pick"&&L?.status==="needs_pick")return(0,r.jsx)(fe,{profiles:L.profiles,onSelect:se});if(P==="login")return(0,r.jsx)(z,{devMode:process.env.KANE_DEV_MODE==="1",profiles:t.listProfiles(),onBasicLogin:async(e,n,s,o)=>{let{validateBasicAuth:a}=await import("./validate-basic-O2DP2XJL.js");await a(n,s,o),t.saveBasicAuth(e,n,{username:s,access_key:o}),t.setActiveProfile(e),t.setDefaultEnv(n)},onOAuthLogin:async(e,n)=>{let{LoginFlow:s}=await import("./login-flow-CV76ENHV.js");t.setDefaultEnv(n),t.setActiveProfile(e),await new s(e,n,t).login()},onComplete:(e,n)=>{R(e),T(n),t.setActiveProfile(e),t.setDefaultEnv(n),D(e,n)},onCancel:()=>{E(0,"Login cancelled")}});if(P==="ensure-project"){let e=t.getActiveProfile()??"default",n=t.getDefaultEnv(),s=()=>{if(d==="login"){g("ensure-folder");return}k(t,l,e,n).folderId?y():g("ensure-folder")};return(0,r.jsxs)(c,{flexDirection:"column",children:[(0,r.jsx)(c,{paddingX:1,marginBottom:1,children:(0,r.jsx)(u,{color:"yellow",children:"Project & folder are required to save tests \xB7 Esc to use defaults \xB7 Ctrl+C to exit"})}),(0,r.jsx)(H,{resolver:w(),currentProjectId:l.load().project_id,env:n,onSelect:(o,a)=>{A(t,l,e,n,{projectId:o,projectName:a}),B(p=>[...p,`\u2713 Project: ${a} (${o})`]),s()},onCancel:async()=>{let o=await le();o&&(A(t,l,e,n,{projectId:o.id,projectName:o.name}),B(a=>[...a,`\u2713 Default project: ${o.name} (${o.id})`]),s())}})]})}if(P==="ensure-folder"){let e=t.getActiveProfile()??"default",n=t.getDefaultEnv(),s=t.loadProfileConfig(e,n);return(0,r.jsxs)(c,{flexDirection:"column",children:[(0,r.jsx)(c,{paddingX:1,marginBottom:1,children:(0,r.jsx)(u,{color:"yellow",children:"Project & folder are required to save tests \xB7 Esc to use defaults \xB7 Ctrl+C to exit"})}),(0,r.jsx)(W,{resolver:w(),projectId:s?.project_id??"",currentFolderId:l.load().folder_id,env:n,onSelect:(o,a)=>{A(t,l,e,n,{folderId:o,folderName:a}),B(p=>[...p,`\u2713 Folder: ${a} (${o})`]),y()},onCancel:async()=>{if(!s?.project_id)return;let o=await ae(s.project_id);o&&(A(t,l,e,n,{folderId:o.id,folderName:o.name}),B(a=>[...a,`\u2713 Default folder: ${o.name} (${o.id})`]),y())}})]})}return P==="input"?(0,r.jsxs)(c,{flexDirection:"column",children:[U.length>0&&(0,r.jsx)(c,{flexDirection:"column",paddingX:1,marginBottom:1,children:U.map((e,n)=>(0,r.jsx)(u,{color:"green",children:e},n))}),(0,r.jsx)(V,{onSubmit:ie,onEscape:()=>E(0,"User pressed Escape"),history:ne,placeholder:"Type an objective..."})]}):(0,r.jsx)(r.Fragment,{})}function fe({profiles:h,onSelect:d}){let[f,m]=(0,i.useState)(0),[C,S]=(0,i.useState)(!1);return I((v,t)=>{if(!C){if(t.escape){E(0,"Profile picker cancelled");return}if(t.upArrow&&f>0&&m(l=>l-1),t.downArrow&&f<h.length-1&&m(l=>l+1),t.return){S(!0);let l=h[f];d(l.profile,l.env).catch(()=>S(!1))}}}),(0,r.jsxs)(c,{flexDirection:"column",paddingX:1,children:[(0,r.jsx)(u,{color:"#ff9500",bold:!0,children:"Select a profile:"}),(0,r.jsx)(c,{marginTop:1,flexDirection:"column",children:h.map((v,t)=>(0,r.jsxs)(u,{children:[t===f?"\u276F ":" ",(0,r.jsx)(u,{color:t===f?"#ff9500":"white",bold:t===f,children:v.profile}),(0,r.jsxs)(u,{color:"gray",children:[" [",v.env,"]"]})]},`${v.profile}-${v.env}`))}),C&&(0,r.jsx)(c,{marginTop:1,children:(0,r.jsx)(u,{color:"yellow",children:"Validating credentials..."})})]})}export{_e as a};
@@ -1,10 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as K}from"./chunk-3LWTUMDG.js";import{a as j,b as B,c as Y}from"./chunk-AM5S4KG4.js";import{a as U}from"./chunk-DNNZ353O.js";import{d as F}from"./chunk-QM4S2APK.js";import{a as k}from"./chunk-GW5DWAXY.js";import{a as L,b as P,j as G,n as N}from"./chunk-3STZLM5J.js";import{d as V}from"./chunk-M7WQM4UA.js";import{d as E,e as x,g as I}from"./chunk-5YPBPZUR.js";function ee(e,n,t,i,s){let f=t.rows.filter(u=>{let d=i.get(u.temp_ref);return d!==void 0&&d!=="reject"});if(f.length===0)return{record:null,errors:null};let c={version:1,read_basis:n.latestHash,source:{source_id:t.source_id,source_cid:n.heads.get(t.source_id)??""},use_cases:f.map(u=>u.uc)},p=new Map;for(let u of f){let d=i.get(u.temp_ref);typeof d=="object"?p.set(u.temp_ref,{resolution:"edited",edit:d.edited}):p.set(u.temp_ref,{resolution:u.uc.matches_existing&&u.uc.changed?"edited":"approved"})}let g=Y(c,n,t.staged_source_cid);if(g.errors!==null)return{record:null,errors:g.errors};let o=g.proposal,l=c.source.source_cid?D(e,n,c.source.source_cid):null;if(l!==null){o=B(o,l);let u=G(o,j(l),n);if(u.length>0)return{record:null,errors:[{code:"HELD_CITES_STALE",detail:"the source moved after this plan staged \u2014 its quotes no longer verify against the current head; re-run kane-cli maintain reconcile to re-stage"},...u]}}let m=`held-${(n.latestHash??"root").slice(-12)}-${f.length}`;return N({contextDir:e,graph:n,proposal:o,proposalId:m,verdicts:p,by:s,autoName:!0})}function W(e,n,t=[]){let i=K(e,n),s=new Set,f=[],c=l=>{!l||s.has(l)||(s.add(l),f.push(b(e,l)))};for(let l of i.pairs)c(l.scenario),c(l.test);for(let[l,m]of i.verifies){c(l);for(let u of m)c(u)}if(t.length===0)return{stale_refs:f};let p=l=>`${String(l.props.source_id)}\0${String(l.props.anchor)}`,g=new Set;for(let{cid:l}of e.byLabel(E.USECASE))if(e.tipOf(l)===n)for(let m of e.edgesInto(l)){if(m.type!==x.DERIVES)continue;let u=m.props.claim;typeof u=="string"&&t.includes(u)&&g.add(p(m))}if(g.size===0)return{stale_refs:f};let o=new Set;for(let[l,m]of i.verifies)if(e.edgesInto(l).some(d=>d.type===x.DERIVES&&g.has(p(d)))){o.add(b(e,l));for(let d of m)o.add(b(e,d))}return{stale_refs:f,...o.size>0?{direct_refs:[...o]}:{}}}var q="this release plans changes only \u2014 blast-radius impact and drift meaning-checks are not measured, and REMOVE rows are never executed automatically",te="suite untouched; graph updated";function M(e,n){return!e.superseded.has(n)&&e.trust.get(n)!=="archived"}function b(e,n,t=new Set){let i=e.nameOf.get(n);if(i!==void 0)return i;if(t.has(n))return n;t.add(n);for(let[s,f]of e.superseded){if(f!==n)continue;let c=b(e,s,t);if(c!==s)return c}return n}function O(e){return String(e).slice(0,19)}function A(e,n,t){let i=e.edgesFrom(n).find(s=>s.type===t);return i?e.tipOf(i.dst):null}function X(e,n){let t=e.nodeLabel.get(n);if(t===E.USECASE)return n;if(t===E.SCENARIO)return A(e,n,x.BELONGS_TO);if(t===E.AC){let i=A(e,n,x.SCOPED_TO);return i?e.nodeLabel.get(i)===E.USECASE?i:A(e,i,x.BELONGS_TO):null}if(t===E.TEST){let i=A(e,n,x.AUTOMATES);return i?A(e,i,x.BELONGS_TO):null}return null}function z(e,n){let t=[],i=new Map;for(let s of e.derivesInto(n))i.set(String(s.props.source_id),s);for(let[s,f]of i){let c=e.heads.get(s);if(c==null){t.push(`DERIVES pin ${s} @ ${O(f.props.source_cid)} \u2014 source retired`);continue}if(c!==f.props.source_cid){let p=e.convChains.get(s)?.chain;if(p&&p.includes(String(f.props.source_cid)))continue;t.push(`DERIVES pin ${s} @ ${O(f.props.source_cid)} \u2014 source head moved to ${O(c)}`)}}for(let s of e.edgesFrom(n))I(s.type)?.pin?.comparesTo==="dst_tip"&&e.superseded.has(s.dst)&&t.push(`${s.type} pin \u2192 ${b(e,s.dst)} \u2014 target superseded`);return t.join("; ")||"structural pin broken"}var ne=new Set([E.USECASE,E.SCENARIO,E.AC,E.TEST]);function $(e,n){return e.ref<n.ref?-1:e.ref>n.ref?1:0}function D(e,n,t){let i=U(e,n,t);return i===null?null:i.toString("utf8")}function se(e,n,t,i,s){let f=t.props.quote;if(typeof f=="string"&&f.length>0)return i.includes(f);let c=String(t.props.source_cid);s.has(c)||s.set(c,D(e,n,c));let p=s.get(c);if(p===null)return!1;let g=P(p,String(t.props.anchor));return g===null?!1:g.split(`
3
- `).some(o=>o.trim().length>0&&i.includes(o.trim()))}function oe(e,n,t){let i=L(String(n.props.anchor));if(i?.kind!=="img-part")return!1;let f=(e.mediaOf(String(n.props.source_cid)).images??[]).find(o=>o.ref===i.ref),c=f?.blob;if(c===void 0)return!1;let p=e.mediaOf(t).images??[];if(p.some(o=>o.blob===c))return!0;let g=f?.appearance;return g!==void 0&&p.filter(o=>o.appearance===g).length===1}var J=128*1024,Q=64*1024;function re(e,n){let t=e.split(`
4
- `),i=n.split(`
5
- `),s=0;for(;s<t.length&&s<i.length&&t[s]===i[s];)s++;let f=t.length,c=i.length;for(;f>s&&c>s&&t[f-1]===i[c-1];)f--,c--;if(f===s&&c===s)return"";let p=t.slice(s,f),g=i.slice(s,c),l=ie(p,g,2e3),m=[];if(l===null)m.push(`@@ old L${s+1}-L${f} \u2192 new L${s+1}-L${c} @@`,...p.map(u=>`- ${u}`),...g.map(u=>`+ ${u}`));else{let u=l.map((a,h)=>a.op==="="?-1:h).filter(a=>a>=0),d=0;for(;d<u.length;){let a=d;for(;a+1<u.length&&u[a+1]-u[a]<=3;)a++;let h=Math.max(u[d]-1,0),v=Math.min(u[a]+1,l.length-1),y=l.slice(h,v+1),S=s+(y[0].ai??0)+1,_=s+(y[0].bi??0)+1,r=y.filter(R=>R.op!=="+").length,w=y.filter(R=>R.op!=="-").length;m.push(`@@ old L${S}-L${S+Math.max(r-1,0)} \u2192 new L${_}-L${_+Math.max(w-1,0)} @@`);for(let R of y)m.push(R.op==="="?` ${R.line}`:`${R.op} ${R.line}`);d=a+1}}return m.join(`
6
- `)}function ie(e,n,t){let i=e.length,s=n.length,f=Math.min(i+s,t),c=new Map([[1,0]]),p=[],g=!1;for(let u=0;u<=f&&!g;u++){p.push(new Map(c));for(let d=-u;d<=u;d+=2){let a=d===-u||d!==u&&(c.get(d-1)??0)<(c.get(d+1)??0)?c.get(d+1)??0:(c.get(d-1)??0)+1,h=a-d;for(;a<i&&h<s&&e[a]===n[h];)a++,h++;if(c.set(d,a),a>=i&&h>=s){g=!0;break}}}if(!g)return null;let o=i,l=s,m=[];for(let u=p.length-1;u>0;u--){let d=p[u],a=o-l,h=a===-u||a!==u&&(d.get(a-1)??0)<(d.get(a+1)??0)?a+1:a-1,v=d.get(h)??0,y=v-h;for(;o>v&&l>y;)m.push({op:"=",line:e[o-1],ai:o-1,bi:l-1}),o--,l--;u>0&&(o===v?(m.push({op:"+",line:n[l-1],ai:o,bi:l-1}),l--):(m.push({op:"-",line:e[o-1],ai:o-1,bi:l}),o--))}for(;o>0&&l>0;)m.push({op:"=",line:e[o-1],ai:o-1,bi:l-1}),o--,l--;for(;o>0;)m.push({op:"-",line:e[o-1],ai:o-1,bi:0}),o--;for(;l>0;)m.push({op:"+",line:n[l-1],ai:0,bi:l-1}),l--;return m.reverse()}function ce(e){let n=Buffer.byteLength(e,"utf8");if(n<=J+Q)return{diff:e,truncated:!1};let t=Buffer.from(e,"utf8"),i=J;for(;i>0&&(t[i]&192)===128;)i--;let s=n-Q;for(;s<n&&(t[s]&192)===128;)s++;let f=t.subarray(0,i).toString("utf8"),c=t.subarray(s).toString("utf8");return{diff:`${f}
7
- \u2026 [diff truncated: ${n-i-(n-s)} bytes omitted] \u2026
8
- ${c}`,truncated:!0}}function ae(e,n){let t=k(e),i=t.heads.get(n);if(typeof i!="string")return null;let s=[];for(let d of V(e).records){let a=d.source_head_moves?.[n];a!==void 0&&a!==s[s.length-1]&&s.push(a)}let f=s.lastIndexOf(i),c=f>0?s[f-1]:null;if(typeof c!="string"||c===i)return null;let p=D(e,t,c),g=D(e,t,i);if(p===null||g===null)return null;let{diff:o,truncated:l}=ce(re(p,g)),m=new Set,u=[];for(let d of t.edgesFrom(c))d.type!==x.DERIVES||t.nodeLabel.get(d.dst)!==E.USECASE||m.has(d.dst)||(m.add(d.dst),u.push({id:d.dst,title:String(t.getNode(d.dst)?.content.title??"")}));return{source_id:n,old_head:c,new_head:i,diff:o,...l?{truncated:!0}:{},prior_ucs:u}}function de(e,n,t){let i=e.getNode(n)?.content??{},s=e.getNode(t)?.content??{},c=[...new Set([...Object.keys(i),...Object.keys(s)])].sort().filter(p=>JSON.stringify(i[p])!==JSON.stringify(s[p]));return c.length>0?`updated: ${c.join(", ")}`:"updated"}function le(e,n,t,i,s,f,c){let p=new Set((c?.rows??[]).map(a=>a.matched_cid).filter(a=>!!a)),g=[];for(let[a,h]of t.superseded)h===null||a===h||n.superseded.has(a)||t.nodeLabel.get(a)===E.USECASE&&g.push({kind:"MODIFY",ref:b(t,a),old_cid:a,new_cid:h,summary:de(t,a,h)});let o=f.map(a=>({kind:"ADD",ref:b(t,a),cid:a}));for(let a of c?.rows??[])a.kind==="MODIFY"&&a.matched_cid?g.push({kind:"MODIFY",ref:b(t,a.matched_cid),old_cid:a.matched_cid,new_cid:null,summary:`${a.why} (staged)`}):a.kind==="ADD"&&o.push({kind:"ADD",ref:a.title,cid:null});let l=[],m=D(e,t,s),u=new Map;for(let{cid:a}of t.byLabel(E.USECASE)){if(!M(t,a)||p.has(a))continue;let h=t.derivesInto(a),v=h.filter(_=>String(_.props.source_id)===i);v.length===0||v.some(_=>_.props.source_cid===s)||v.some(_=>{let r=String(_.props.anchor),w=L(r);return w?.kind==="img-whole"?!1:w?.kind==="img-part"?oe(t,_,s):m!==null&&se(e,t,_,m,u)})||h.some(_=>{let r=String(_.props.source_id);if(r===i)return!1;let w=t.heads.get(r);return w!=null})||l.push({kind:"ARCHIVE",ref:b(t,a),cid:a,why:`evidence decayed: no quote from ${i} relocates into @${O(s)}, no other live source, no fresh evidence this run`,impact:W(t,t.tipOf(a))})}let d=(a,h)=>a.ref<h.ref?-1:a.ref>h.ref?1:0;return[...g.sort(d),...o.sort(d),...l.sort(d)]}function Re(e,n,t,i,s){let f=n.rows.find(d=>d.temp_ref===t);if(!f)return{ok:!1,message:`held item ${t} missing from the plan artifact`};let c=f,p=k(e);if(c.matched_cid){let d=p.tipOf(c.matched_cid);if(p.superseded.get(d)===null)return{ok:!1,message:`use-case for "${c.title}" was retired meanwhile \u2014 nothing to update`};d!==c.matched_cid&&(c={...c,matched_cid:d,uc:{...c.uc,matches_existing:{cid:d}}})}let g=s?{edited:s}:"approve",o=ee(e,p,{source_id:n.source_id,...n.staged_source_cid!==void 0?{staged_source_cid:n.staged_source_cid}:{},rows:[c]},new Map([[c.temp_ref,g]]),i);if(o.errors)return{ok:!1,message:o.errors.map(d=>`${d.code}: ${d.detail}`).join("; ")};let l=k(e),m=c.matched_cid?l.tipOf(c.matched_cid):o.record?.nodes.find(d=>d.label==="usecase")?.cid??o.record?.review[0]?.id;return{ok:!0,ref:m?b(l,m):c.title,kind:c.kind}}async function ve(e,n,t,i={}){let s=k(e),f=s.heads.get(n)??null,c=new Set(s.staleList().filter(r=>r.state==="stale").map(r=>r.cid)),p=await t.reingest(n);if(p.status==="unchanged"&&!i.resumeHeld)return{source_id:n,changed:!1,head:{status:p.status,before:f,after:p.cid},note:`nothing to reconcile \u2014 ${n} is unchanged`,skipped_arms:q,changeset:[],rows:[]};let g=i.resumeHeld?{minted:[],matched:[],held:i.resumeHeld}:await t.reextract(n),o=k(e),l=g.minted.map(r=>{let w=b(o,r);return{kind:"ADD",origin:"content-change",ref:w,reason:`new use-case extracted from ${n}`,provenance:`extraction commit \u2014 DERIVES ${n} @ ${O(p.cid)}`,action:`kane-cli design tests --use-case ${w}`}}),m=o.staleList().filter(r=>r.state==="stale"&&!c.has(r.cid)&&M(o,r.cid)).map(r=>r.cid),u=m.map(r=>{let w=b(o,r),R=ne.has(o.nodeLabel.get(r)??"");return{kind:"MODIFY",origin:"structural-stale",ref:w,reason:"stale (structural)",provenance:z(o,r),action:R?`kane-cli maintain evolve ${w}`:`kane-cli design explain ${w}`}}),d=[],a=[];for(let r of g.held?.rows??[])if(r.kind==="ADD")d.push({kind:"ADD",origin:"content-change",ref:r.title,held_ref:r.temp_ref,reason:`${r.why} (staged \u2014 commits on approval)`,provenance:`staged extraction of ${n} @ ${O(p.cid)}`,action:"approve to commit + design"});else{let w=r.matched_cid?o.tipOf(r.matched_cid):null,R=w?o.getNode(w)?.content.criteria??[]:[],T=(r.uc.updated?.criteria??[]).map(C=>typeof C=="string"?C:C.text),Z=[...T.filter(C=>!R.includes(C)),...r.uc.updated?.criteria!==void 0?R.filter(C=>!T.includes(C)):[]],H=w?W(o,w,Z):void 0;a.push({kind:"MODIFY",origin:"content-change",ref:r.matched_cid?b(o,r.matched_cid):r.title,held_ref:r.temp_ref,reason:`${r.why} (staged \u2014 commits on approval)`,provenance:`staged extraction of ${n} @ ${O(p.cid)}`,action:"approve to commit the updated version (old\u2192new redirect)",...H?{impact:H}:{}})}let h=new Set;for(let r of[...g.minted,...g.matched])h.add(o.tipOf(r));for(let r of g.held?.rows??[])r.matched_cid&&h.add(o.tipOf(r.matched_cid));for(let r of m){let w=X(o,o.tipOf(r));w&&o.nodeLabel.get(w)===E.USECASE&&h.add(o.tipOf(w))}let v=[];for(let r of await F(o,"design")){if(r.kind!=="no-verifies")continue;let w=o.resolve(r.ref);if(!w)continue;let R=X(o,w.tip);!R||!h.has(o.tipOf(R))||v.push({kind:"ADD",origin:"content-change",ref:r.ref,reason:r.why,provenance:`gaps engine (design) \u2014 uncovered AC of touched use-case ${b(o,R)}`,action:r.ready_command})}let y=[];for(let{cid:r}of o.byLabel(E.USECASE))M(o,r)&&o.stale(r)==="orphaned"&&y.push({kind:"REMOVE",ref:b(o,r),reason:"orphaned \u2014 no live source evidences this use-case",provenance:z(o,r),action:"plan-only \u2014 REMOVE is not executed in this release"});let S=new Set,_=[...l.sort($),...d.sort($),...v.sort($),...a.sort($),...u.sort($),...y.sort($)].filter(r=>{let w=`${r.kind}\0${r.ref}`;return S.has(w)?!1:(S.add(w),!0)});return{source_id:n,changed:!0,head:{status:p.status,before:f,after:p.cid},note:te,skipped_arms:q,changeset:le(e,s,o,n,p.cid,g.minted,g.held),rows:_,...g.held?{held:g.held}:{}}}function be(e,n){return async t=>{let{ingestFile:i}=await import("./ingest-AL6CABJT.js"),{convertPdf:s}=await import("./pdf-convert-S7VYE6AV.js"),{convertDocx:f}=await import("./docx-convert-ZBVQO2LG.js"),c=await i({contextDir:e,filePath:n,asId:t,converters:{pdf:s,docx:f}});return{status:c.status,cid:c.cid}}}function ye(e,n={}){return async t=>{let i=[],[{runExtract:s},{resolveAgentAuthEnv:f},{runAgent:c},{preflightTurn:p}]=await Promise.all([import("./run-VRVH4VO3.js"),import("./spawner-AH5FTUYU.js"),import("./bridge-T4HL4TG7.js"),import("./turn-preflight-JGYT7LXP.js")]),g=await f(),o=new Set(k(e).byLabel(E.USECASE).map(S=>S.cid)),l=ae(e,t)??void 0,m=0,u=await s({mode:"override",source:t,...l?{changeContext:l}:{}},{contextDir:e,agent:c,preflightTurn:()=>p(g),ask:async()=>[],review:async S=>{if(!n.stage)return new Map(S.map(r=>[r.temp_ref,{resolution:r.matches_existing&&r.changed?"edited":"skipped"}]));let _=new Map;for(let r of S){if(r.matches_existing&&!r.changed){_.set(r.temp_ref,{resolution:"skipped"});continue}i.push({kind:r.matches_existing?"MODIFY":"ADD",temp_ref:r.temp_ref,title:r.title,why:r.matches_existing?`updated: ${Object.keys(r.updated??{}).join(", ")||"content"}`:`newly extracted from ${t}`,...r.matches_existing?{matched_cid:r.matches_existing.cid,updated:r.updated}:{},uc:r}),_.set(r.temp_ref,{resolution:"rejected"})}return _},confirmStale:async()=>!1,out:S=>process.stderr.write(S+`
9
- `),progress:S=>process.stderr.write(S+`
10
- `),emit:S=>{S.type==="commit"&&typeof S.assumed=="number"&&(m+=S.assumed)},isTTY:!1,auth:g});if(u!==0)throw new Error(`reconcile: re-extract of ${t} failed (exit ${u})`);let d=k(e),a=d.heads.get(t),h=[],v=[];if(typeof a=="string"){let S=new Set;for(let _ of d.edgesFrom(a))_.type!==x.DERIVES||d.nodeLabel.get(_.dst)!==E.USECASE||S.has(_.dst)||(S.add(_.dst),!(n.stage&&d.trust.get(_.dst)==="archived")&&(o.has(_.dst)?v:h).push(_.dst))}let y=k(e).heads.get(t);return{minted:h,matched:v,defaultsTaken:m,...n.stage?{held:{source_id:t,...y!=null?{staged_source_cid:y}:{},rows:i}}:{}}}}export{Re as a,ve as b,be as c,ye as d};
@@ -1,4 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as F}from"./chunk-L4JIMNKW.js";import{a as _,d as k,g as A}from"./chunk-M7WQM4UA.js";import{a as R,e as S,f as I,g as j,h as L}from"./chunk-5YPBPZUR.js";import{existsSync as w,mkdirSync as P,readFileSync as N,renameSync as J,rmSync as V,writeFileSync as W}from"fs";import{dirname as K,join as y}from"path";var q=i=>y(i,"derived"),D=i=>y(q(i),"index.json");function U(i,s){let r=s.startsWith("sha256:")?s.slice(7):s;return y(q(i),"nodes",r.slice(0,2),r.slice(2)+".json")}function $(){return{applied:{seq:0,hash:null},heads:{},trust:{},nodeLabel:{},forward:{},extracted:[],design_of:{},design_generation:{},exec:{},superseded:{},names:{},archivedReason:{},appliedEvents:[],completeness:{},srcOwner:{},conv:{},media:{},design_phases:{}}}function M(i){let s=D(i);if(!w(s))return null;try{let r=JSON.parse(N(s,"utf8"));return r.superseded===void 0||r.names===void 0||r.archivedReason===void 0||r.appliedEvents===void 0||r.conv===void 0||r.media===void 0||r.exec===void 0||r.completeness===void 0||r.srcOwner===void 0||r.design_phases===void 0||r.reverse!==void 0?null:r}catch{return null}}function T(i,s){P(K(i),{recursive:!0});let r=`${i}.tmp-${process.pid}`;W(r,s),J(r,i)}function b(i,s,r,p,l={}){let f=l.writeNodeFiles!==!1,g=new Set(s.extracted),m=new Set(s.appliedEvents);r.forEach((t,v)=>{for(let e of t.nodes){let n=U(i,e.cid);f&&!w(n)&&T(n,JSON.stringify({label:e.label,content:e.content})+`
3
- `),!(e.cid in s.trust)&&e.content.derived===!0&&(s.trust[e.cid]="derived"),s.nodeLabel[e.cid]=e.label}for(let[e,n]of Object.entries(t.source_head_moves))typeof n=="string"&&(s.srcOwner[n]=e);if(t.proposal_id!=null&&typeof t.extraction_of=="string"){g.add(t.extraction_of);let e=null;for(let n of t.edges)if(n.type===S.DERIVES&&n.props.source_cid===t.extraction_of&&typeof n.props.source_id=="string"){e=n.props.source_id;break}if(e??=s.srcOwner[t.extraction_of]??null,e!==null){let n=s.completeness[e];(!n||t.seq>=n.seq)&&(s.completeness[e]={source_cid:t.extraction_of,completeness:"complete",...t.extractor_version?{extractor_version:t.extractor_version}:{},at:t.ts,seq:t.seq})}else s.completenessSkipped=(s.completenessSkipped??0)+1}else if(t.proposal_id!=null&&Array.isArray(t.extraction_of))for(let e of t.extraction_of){g.add(e.source_cid);let n=s.completeness[e.source_id];(!n||t.seq>=n.seq)&&(s.completeness[e.source_id]={source_cid:e.source_cid,completeness:e.completeness,...e.extractor_version?{extractor_version:e.extractor_version}:{},at:e.at,seq:t.seq})}t.design_of&&((s.design_of??={})[t.design_of.uc_cid]={engine:t.design_of.engine,seq:t.seq}),t.design_generation&&((s.design_generation??={})[t.design_generation.uc_root]={gen:t.design_generation.generation,seq:t.seq});{let e=t.design_phase;e&&typeof e.uc_root=="string"&&typeof e.phase=="string"&&typeof e.generation=="number"&&((s.design_phases??={})[e.uc_root]??=[]).push({phase:e.phase,generation:e.generation,seq:t.seq,completeness:e.completeness==="partial"?"partial":"complete"})}for(let e of t.executions??[])((s.exec??={})[e.about]??=[]).push(e);for(let e of t.edges){let{quote:n,...o}=e.props,c=s.forward[e.src]??=[];c.some(a=>a.ecid===e.ecid)||c.push({...e,props:o}),t.proposal_id!=null&&e.type===S.DERIVES&&typeof e.props.source_cid=="string"&&g.add(e.props.source_cid)}for(let e of t.review)e.resolution==="approved"||e.resolution==="edited"?(s.trust[e.id]="trusted",delete s.archivedReason[e.id]):e.resolution==="rejected"?(s.trust[e.id]="archived",e.reason?s.archivedReason[e.id]=e.reason:delete s.archivedReason[e.id]):e.resolution==="reset"&&(s.trust[e.id]="derived",delete s.archivedReason[e.id]);for(let e of t.supersessions)e.kind==="node"?e.new===e.old?delete s.superseded[e.old]:s.superseded[e.old]=e.new:s.superseded[e.ecid]=null;for(let e of t.names??[])s.names[e.slug]=e.cid;for(let[e,n]of Object.entries(t.source_head_moves))s.heads[e]=n;for(let e of t.event_ids??[])m.add(e);if(t.media)for(let[e,n]of Object.entries(t.media)){let o=t.source_head_moves[e];typeof o=="string"&&(s.media[o]=n)}if(t.conv){let e=t.source_head_moves[t.conv.source_id];if(typeof e=="string"){let n=s.conv[t.conv.source_id],o=n&&n.chain.length>0?n.chain[n.chain.length-1]:null;t.conv.append_of===o?s.conv[t.conv.source_id]={turns:t.conv.turn,chain:[...n?.chain??[],e]}:s.conv[t.conv.source_id]={turns:t.conv.turn,chain:[e]}}}for(let[e,n]of Object.entries(t.source_head_moves))t.conv?.source_id!==e&&s.conv[e]!==void 0&&(s.conv[e]=typeof n=="string"?{turns:s.conv[e].turns,chain:[n]}:{turns:s.conv[e].turns,chain:[]});s.applied={seq:t.seq,hash:p[v]}}),s.extracted=[...g].sort(),s.appliedEvents=[...m].sort()}function x(i,s){T(D(i),JSON.stringify(s)+`
4
- `)}function Y(i){let s=y(i,"meta.json");if(w(s))try{let r=JSON.parse(N(s,"utf8"));if(r.schema!==R||r.canonicalizer!=="v1")throw new _(`schema fence: store is ${r.schema}/${r.canonicalizer}, this build is ${R}/${"v1"} \u2014 migrate explicitly (kane-cli context rebuild after upgrading)`)}catch(r){throw r instanceof _?r:new _(`corrupt meta.json in ${i} \u2014 fix or remove it`)}}function z(i){Y(i);let s=M(i);if(s===null){s=$();let{records:l,hashes:f}=k(i);return b(i,s,l,f),x(i,s),s}let{records:r,hashes:p}=A(i,s.applied.seq,s.applied.hash);return r.length>0&&(b(i,s,r,p),x(i,s)),s}function X(i){return V(q(i),{recursive:!0,force:!0}),z(i)}function ee(i){let s=[],r=[],p=[];try{({records:r,hashes:p}=k(i))}catch(n){return{ok:!1,issues:[n instanceof _?n.message:String(n)],records:0}}let l=$();b(i,l,r,p,{writeNodeFiles:!1});let f=M(i),g=0,m=l;if(f!==null&&f.applied.seq<r.length){let n=f.applied.seq;f.applied.hash===(n===0?null:p[n-1])&&(g=r.length-n,m=$(),b(i,m,r.slice(0,n),p.slice(0,n),{writeNodeFiles:!1}))}if(f===null)s.push("derived/index.json missing or corrupt (run kane-cli context rebuild)");else{let n=o=>JSON.stringify(O(o));for(let o of["applied","heads","trust","nodeLabel","forward","extracted","superseded","names","archivedReason","appliedEvents","conv","media","design_of","design_generation","design_phases","exec","completeness","srcOwner"])n(m[o])!==n(f[o])&&s.push(`derived drift in index.${o} (run kane-cli context rebuild)`)}let t=new Set;for(let n of Object.values(l.forward))for(let o of n)t.add(o.ecid);let v=new Set;for(let n of r)for(let o of n.supersessions)o.kind==="node"?(o.old in l.nodeLabel||s.push(`SUPERSEDE_UNKNOWN_OLD: ${o.old} (record ${n.seq})`),o.new!==null&&o.new!==o.old&&!(o.new in l.nodeLabel)&&s.push(`SUPERSEDE_UNKNOWN_NEW: ${String(o.new)} (record ${n.seq})`),o.new===o.old?v.delete(o.old):(v.has(o.old)&&s.push(`DOUBLE_SUPERSEDE: ${o.old} re-superseded while live (record ${n.seq})`),v.add(o.old))):t.has(o.ecid)||s.push(`SUPERSEDE_UNKNOWN_ECID: ${o.ecid} (record ${n.seq})`);for(let n of Object.keys(l.superseded)){let o=new Set,c=n;for(;c!==null&&c in l.superseded;){if(o.has(c)){s.push(`SUPERSEDE_CYCLE: chain from ${n} revisits ${c}`);break}o.add(c),c=l.superseded[c]}}for(let[n,o]of Object.entries(l.names))o in l.nodeLabel||s.push(`NAME_UNKNOWN_TARGET: slug ${n} \u2192 ${o} not in the graph`);for(let n of r)for(let o of n.edges){let c=l.nodeLabel[o.src]??"(unknown)",a=l.nodeLabel[o.dst]??"(unknown)";for(let d of L(o.type,c,a,o.props))s.push(`${d.code}: ${o.ecid} ${d.detail}`)}let e=new Map;for(let n of Object.values(l.forward))for(let o of n){if(o.ecid in l.superseded)continue;let c=e.get(o.type)??[];c.push(o),e.set(o.type,c)}for(let[n,o]of e){let c=j(n);if(c?.acyclic){let a=new Map;for(let u of o)a.set(u.src,[...a.get(u.src)??[],u.dst]);let d=new Map,h=u=>{d.set(u,1);for(let E of a.get(u)??[])if(d.get(E)===1||d.get(E)===void 0&&h(E))return!0;return d.set(u,2),!1};for(let u of a.keys())if(d.get(u)===void 0&&h(u)){s.push(`EDGE_CYCLE: live ${n} edges form a cycle reachable from ${u}`);break}}if(c?.cardinality==="one-live-per-src"||c?.cardinality==="one-live-per-src-and-dst"){let a=new Map;for(let d of o)d.dst in l.superseded||a.set(d.src,(a.get(d.src)??0)+1);for(let[d,h]of a)h>1&&s.push(`CARDINALITY_VIOLATION: ${h} live ${n} edges from ${d} (one-live-per-src)`)}if(c?.cardinality==="one-live-per-src-and-dst"){let a=new Map;for(let d of o)d.src in l.superseded||d.dst in l.superseded||a.set(d.dst,(a.get(d.dst)??0)+1);for(let[d,h]of a)h>1&&s.push(`CARDINALITY_VIOLATION: ${h} live ${n} edges onto ${d} (one-live-per-dst)`)}}for(let[n,o]of Object.entries(m.nodeLabel)){let c=U(i,n);if(!w(c)){s.push(`missing node file for ${n} (run kane-cli context rebuild)`);continue}try{let a=JSON.parse(N(c,"utf8"));(a.label!==o||F(a.label,a.content)!==n)&&s.push(`node file content mismatch for ${n} (run kane-cli context rebuild)`);for(let d of I(a.label,a.content))s.push(`${d.code}: ${n} ${d.detail}`)}catch{s.push(`corrupt node file for ${n} (run kane-cli context rebuild)`)}}return{ok:s.length===0,issues:s,records:r.length,...g>0?{pending:g}:{}}}function O(i){return Array.isArray(i)?i.map(O):i&&typeof i=="object"?Object.fromEntries(Object.entries(i).sort(([s],[r])=>s<r?-1:1).map(([s,r])=>[s,O(r)])):i}export{U as a,z as b,X as c,ee as d};
@@ -1,7 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as E}from"./chunk-TDPWFYTJ.js";import{a as S}from"./chunk-DXV6MBTD.js";import{a as v}from"./chunk-JRMDGLLT.js";import{e as _,j as y}from"./chunk-C4G7RVJ6.js";import{spawn as T,execSync as h}from"child_process";import{appendFileSync as N,existsSync as m,mkdirSync as O}from"fs";import{homedir as M}from"os";import{join as I,resolve as i,dirname as p}from"path";import{fileURLToPath as L}from"url";import{createInterface as C}from"readline";async function*R(e){let n=C({input:e,crlfDelay:1/0});for await(let s of n){let a=s.trim();if(a)try{let t=JSON.parse(a);t&&typeof t.type=="string"&&(yield t)}catch{}}}function x(e){return e==="action"?{set:{V16_AGENT_ENABLE_ALL_BLOCKERS:"true",V16_BIFURCATION_PHASES:"1"},unset:["V16_NETWORK_WS","V16_NETWORK_SSE"]}:{set:{V16_BIFURCATION_PHASES:"1"},unset:["V16_AGENT_ENABLE_ALL_BLOCKERS","V16_NETWORK_WS","V16_NETWORK_SSE"]}}function A(e){return e?{set:{},unset:["V16_AGENT_SKIP_CP_FINAL"]}:{set:{V16_AGENT_SKIP_CP_FINAL:"true"},unset:[]}}function w(e){return e==="dom"?{set:{V16_AGENT_ENABLE_TEXTUAL_VISUAL:"true"},unset:[]}:{set:{},unset:["V16_AGENT_ENABLE_TEXTUAL_VISUAL"]}}var c=p(L(import.meta.url));function P(){for(let e of["python3","python"])try{return h(`${e} --version`,{stdio:"ignore"}),e}catch{}return null}function V(){let n=process.platform==="win32"?"v16-runner.exe":"v16-runner",s={"darwin-arm64":["@testmuai/kane-cli-darwin-arm64","@lambdatestincprivate/kane-cli-darwin-arm64"],"darwin-x64":["@testmuai/kane-cli-darwin-x64","@lambdatestincprivate/kane-cli-darwin-x64"],"linux-x64":["@testmuai/kane-cli-linux-x64","@lambdatestincprivate/kane-cli-linux-x64"],"linux-arm64":["@testmuai/kane-cli-linux-arm64","@lambdatestincprivate/kane-cli-linux-arm64"],"win32-x64":["@testmuai/kane-cli-win-x64","@lambdatestincprivate/kane-cli-win-x64"]},a=`${process.platform}-${process.arch}`,t=s[a];if(t)for(let r of t){let o=[i(c,"..","node_modules",r,"bin",n),i(c,"..","..","node_modules",r,"bin",n),i(c,"..","..","..","node_modules",r,"bin",n),i(c,"..","..","..","..","node_modules",r,"bin",n)];for(let u of o)if(m(u))return{cmd:u,args:[]}}let d=[i(c,"bin",n),i(c,"..","bin",n),i(c,"..","..","..","..","v16-runner","dist",n),i(c,"..","..","..","v16-runner","dist",n),i(c,"..","..","v16-runner","dist",n),i(process.cwd(),"v16-runner","dist",n),i(process.cwd(),"..","v16-runner","dist",n)];for(let r of d)if(m(r))return{cmd:r,args:[]};let l=[i(c,"..","..","v16-runner"),i(c,"..","..","..","..","v16-runner"),i(c,"..","..","..","v16-runner"),i(process.cwd(),"v16-runner"),i(process.cwd(),"..","v16-runner")];for(let r of l)if(m(i(r,"main.py"))){for(let u of[i(r,".venv","bin","python"),i(r,"..",".venv","bin","python"),i(r,"..","browser-agent",".venv","bin","python")])if(m(u))return{cmd:u,args:["main.py"],cwd:r};let o=P();if(o)return{cmd:o,args:["main.py"],cwd:r}}return null}function b(e){return e?I(M(),".testmuai","kaneai","sessions",e,"runner-stderr.log"):null}function k(e){let n=T(e.runner.cmd,e.runner.args,{stdio:["pipe","pipe","pipe"],env:e.env,cwd:e.runner.cwd});n.stdin.on("error",()=>{});let s=b(e.sessionId);if(s)try{O(p(s),{recursive:!0})}catch{}let a=1e5,t="";n.stderr.on("data",u=>{if(t+=u.toString(),t.length>a&&(t=t.slice(-a)),s)try{N(s,u)}catch{}}),n.on("error",u=>{e.log?.("error","RUNNER_SPAWN_ERROR","Runner spawn error",{error:u.message})});let d=null,l=null,r=new Promise(u=>{n.on("close",(f,g)=>{d=f,l=g?String(g):null,e.log?.("info","RUNNER_EXIT","Runner exited",{code:f,signal:l??"none"}),u({code:f,signal:l})})}),o=R(n.stdout);return{child:n,events:o,getStderr:()=>t,getExitCode:()=>d,getExitSignal:()=>l,exited:r}}function U(e){let n={...process.env};e.environment&&(n.TESTMUAI_ENV=e.environment),n.TESTMUAI_SOURCE="kane-cli",process.platform==="win32"&&(n.PYTHONIOENCODING="utf-8");let s=v(e.environment);n.V16_SERVER_API_HOST=s.v16ServerHost,n.ATMS_URL=s.tmsBaseUrl.replace(/\/api\/?$/,""),e.username&&e.accessKey&&(n.LT_USERNAME=e.username,n.LT_ACCESS_KEY=e.accessKey),e.sessionId&&(n.TESTMUAI_SESSION_ID=e.sessionId);let a=x(e.mode??"testing");Object.assign(n,a.set);for(let o of a.unset)delete n[o];let t=new S().load(),d=w(e.assertionMode??(t.assertion_mode==="visual"?"visual":"dom"));Object.assign(n,d.set);for(let o of d.unset)delete n[o];let l=e.finalValidation??t.final_validation,r=A(l);Object.assign(n,r.set);for(let o of r.unset)delete n[o];return n}function K(e,n){let s=v(n?.environment),a=E();a!==void 0&&e.ap_mode===void 0&&(e.ap_mode=a),e.telemetry_proxy_url===void 0&&process.env.KANE_TELEMETRY!=="0"&&(e.telemetry_proxy_url=y),e.media_upload===void 0&&e.org_id&&e.username&&e.access_key&&(e.media_upload={url:s.shareApiBaseUrl.replace(/\/$/,"")+"/mfs/v1.0/media/upload",artefacts_host:s.mediaArtefactsHost,org_id:e.org_id,media_dir:_})}function Z(e,n){let s=V();if(!s)throw new Error("v16-runner not found. Build the binary with `cd v16-runner && python build.py` or ensure Python is available.");process.env.KANE_SPAWN_DEBUG&&process.stderr.write(`[spawn-debug] ${JSON.stringify(s)}
3
- `);let a=U({environment:n?.environment,mode:n?.mode,assertionMode:n?.assertionMode,finalValidation:n?.finalValidation,username:e.username,accessKey:e.access_key,sessionId:e.session_id});K(e,{environment:n?.environment});let t=k({env:a,runner:s,log:n?.log,sessionId:e.session_id}),d=t.child;d.stdin.write(JSON.stringify(e)+`
4
- `);let l=b(e.session_id);if(l)try{O(p(l),{recursive:!0}),N(l,`--- runner spawn ${new Date().toISOString()} run_index=${e.run_index} ---
5
- `)}catch{}return{child:d,events:t.events,sendUserResponse(r){let o=JSON.stringify({type:"user_response",answer:r});try{d.stdin.write(o+`
6
- `)}catch{}},sendCancel(r){let o=JSON.stringify({type:"cancel",reason:r});try{d.stdin.write(o+`
7
- `)}catch{}},cancel(){d.kill("SIGTERM")},get stderr(){return t.getStderr()},get exitCode(){return t.getExitCode()},get exitSignal(){return t.getExitSignal()},exited:t.exited}}export{V as a,k as b,U as c,K as d,Z as e};
@@ -1,3 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- var v="usecase-dedup";function w(n,r){let i=Math.min(n.length,r.length),u=0,s=0,c=0;for(let e=0;e<i;e++)u+=n[e]*r[e],s+=n[e]*n[e],c+=r[e]*r[e];return s===0||c===0?0:u/(Math.sqrt(s)*Math.sqrt(c))}function y(n,r,i){return i*n+(1-i)*r}var C=.7;function H(n){return new Set(n.toLowerCase().replace(/[^\p{L}\p{N}]+/gu," ").split(" ").filter(Boolean))}function R(n,...r){let i=H(n);if(i.size===0)return 0;let u=n.trim().toLowerCase(),s=0;for(let c of r){let e=H(c);if(e.size===0)continue;let p=0;for(let m of i)e.has(m)&&p++;let b=i.size+e.size-p,d=b===0?0:p/b;u&&c.toLowerCase().includes(u)&&(d=Math.max(d,.9)),s=Math.max(s,d)}return s}var S=n=>String(n.title??"");function A(n){return n.byLabel("usecase").filter(r=>!n.superseded.has(r.cid)).map(r=>({cid:r.cid,text:S(r.content)}))}function _(n,r){let i=r.threshold??.8,u=new Map,s=null;return{async batchSimilar(c,e){let p=c.latestHash;if(e.length===0)return{hits:[],degraded:!1,probeBasis:p};let b=A(c),d=[];try{s=(await r.resolveAlias(v)).alias;let f=new Map,g=[];for(let t of b){let a=r.readVector?.(s,t.cid)??null;a!==null?f.set(t.cid,a):g.push(t)}let o=[...e.map(t=>t.probeText),...g.map(t=>t.text)],{vectors:P}=await r.embed(v,o);e.forEach((t,a)=>u.set(t.tempRef,Float32Array.from(P[a]))),g.forEach((t,a)=>{let l=Float32Array.from(P[e.length+a]);f.set(t.cid,l),r.writeVector?.(s,t.cid,l)});for(let t of e){let a=u.get(t.tempRef);for(let l of b){let x=f.get(l.cid);if(x===void 0)continue;let h=y(w(a,x),R(t.probeText,l.text),C);h>=i&&d.push({tempRef:t.tempRef,candidateCid:l.cid,score:h,scorer:"embedding"})}}return{hits:d,degraded:!1,probeBasis:p}}catch(m){process.stderr.write(JSON.stringify({event:"dedup_probe_degraded",contextDir:n,candidates:e.length,reason:String(m?.message??m).slice(0,160),ts:new Date().toISOString()})+`
3
- `);for(let f of e)for(let g of b){let o=R(f.probeText,g.text);o>=i&&d.push({tempRef:f.tempRef,candidateCid:g.cid,score:o,scorer:"lexical_fallback"})}return{hits:d,degraded:!0,probeBasis:p}}},recheckLocal(c,e,p,b){let d=[],m=[],f=new Set;for(let g of b)for(let o of g.nodes){if(o.label!=="usecase"||f.has(o.cid)||(f.add(o.cid),c.superseded.has(o.cid)||!c.hasNode(o.cid)))continue;let P=S(o.content),t=s!==null?r.readVector?.(s,o.cid)??null:null,a=t!==null;for(let l of e){let x=u.get(l.tempRef),h;t!==null&&x!==void 0?h=y(w(x,t),R(l.probeText,P),C):(h=R(l.probeText,P),a=a&&!1),h>=i&&d.push({tempRef:l.tempRef,candidateCid:o.cid,score:h,scorer:t!==null&&x!==void 0?"embedding":"lexical_fallback"})}a||m.push(o.cid)}return{hits:d,uncachedNewNodes:m}}}}export{_ as a};