@testmuai/kane-cli 0.6.2 → 0.6.4

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 (172) hide show
  1. package/dist/ChatSurface-VXYU6KFW.js +8 -0
  2. package/dist/{ChromeProfilePicker-XXNZLSCC.js → ChromeProfilePicker-QWTM7DK6.js} +1 -1
  3. package/dist/{CliFeedbackPrompt-FJF5INQO.js → CliFeedbackPrompt-6NVWMONO.js} +1 -1
  4. package/dist/{CliUploadProgress-5E3CCYPZ.js → CliUploadProgress-2YRQLECI.js} +1 -1
  5. package/dist/{ConfigView-TGVOKOUZ.js → ConfigView-I4R5M7BO.js} +1 -1
  6. package/dist/EvidenceViewOffer-54GEARRX.js +2 -0
  7. package/dist/{FolderPicker-T4JB4NNW.js → FolderPicker-5VWBYTAK.js} +1 -1
  8. package/dist/{HelpView-PSHKI7DD.js → HelpView-OJZW4XWX.js} +1 -1
  9. package/dist/{InfoBox-PXWJ6BIX.js → InfoBox-TGELGCBR.js} +1 -1
  10. package/dist/{LinksBox-IUOYRXYO.js → LinksBox-B5EBRY26.js} +1 -1
  11. package/dist/{ProfilesView-UK5XX5WP.js → ProfilesView-3SJRIBHQ.js} +1 -1
  12. package/dist/{ProjectPicker-3FE7UFXL.js → ProjectPicker-72HKMBEY.js} +1 -1
  13. package/dist/{SaveSessionPrompt-P7NF5FDA.js → SaveSessionPrompt-CK5SGNRO.js} +1 -1
  14. package/dist/SingleShotApp-AJBIWW74.js +2 -0
  15. package/dist/{SummaryBox-WVR4U3NN.js → SummaryBox-ABB7ST26.js} +1 -1
  16. package/dist/TestMdRunView-5PMLLLFT.js +2 -0
  17. package/dist/{WhoamiView-QVXJAVTC.js → WhoamiView-OF354UGC.js} +1 -1
  18. package/dist/bind-BWILBZGR.js +6 -0
  19. package/dist/{bridge-I6N3YPXI.js → bridge-LNDJS3HH.js} +1 -1
  20. package/dist/{changelog-HPSX3L7T.js → changelog-BWCEZQ23.js} +1 -1
  21. package/dist/{chat-committer-GHDZY5XF.js → chat-committer-ADJJTDUT.js} +1 -1
  22. package/dist/chat-controller-VAC57IEV.js +3 -0
  23. package/dist/{chunk-M6DX4ENH.js → chunk-2K4XOHVK.js} +1 -1
  24. package/dist/{chunk-KHDUQ33H.js → chunk-2PQXEEVY.js} +1 -1
  25. package/dist/{chunk-NNZV5RCE.js → chunk-3C5GMAM4.js} +1 -1
  26. package/dist/{chunk-VL2UA23Z.js → chunk-3HEPW6SN.js} +1 -1
  27. package/dist/{chunk-BKGJGPDN.js → chunk-3WJJ43MT.js} +1 -1
  28. package/dist/{chunk-4G4HPMR2.js → chunk-4MUHS3UL.js} +1 -1
  29. package/dist/{chunk-DEYHK6ZC.js → chunk-5CTMOJG4.js} +1 -1
  30. package/dist/{chunk-6UNTIXFW.js → chunk-5KSB5MOF.js} +1 -1
  31. package/dist/chunk-5YPBPZUR.js +2 -0
  32. package/dist/chunk-64LC36AF.js +2 -0
  33. package/dist/{chunk-HR7AGYV2.js → chunk-64QURIT6.js} +1 -1
  34. package/dist/{chunk-6XKJH5ZE.js → chunk-652FEDL4.js} +2 -2
  35. package/dist/{chunk-Z56AWGVY.js → chunk-6AYUSR7X.js} +1 -1
  36. package/dist/{chunk-VJUIW2ES.js → chunk-6GTOYTCQ.js} +1 -1
  37. package/dist/chunk-6LRKYF67.js +14 -0
  38. package/dist/{chunk-AE6SS34N.js → chunk-74RUSHIB.js} +1 -1
  39. package/dist/chunk-ACEODVSC.js +14 -0
  40. package/dist/{chunk-44QUA6GV.js → chunk-ADOXYGZE.js} +1 -1
  41. package/dist/chunk-ANIVHX3P.js +5 -0
  42. package/dist/{chunk-K2MKBBI4.js → chunk-AXABTFCD.js} +1 -1
  43. package/dist/{chunk-5ON7QQZO.js → chunk-BNN6ZDJW.js} +10 -10
  44. package/dist/{chunk-L4AUCQVO.js → chunk-BOO7YXAV.js} +1 -1
  45. package/dist/{chunk-OZODSY6H.js → chunk-BYUARJE7.js} +1 -1
  46. package/dist/{chunk-FYOCF7DY.js → chunk-CJJXT5DO.js} +1 -1
  47. package/dist/{chunk-S6GRW5ZA.js → chunk-CLTANA4L.js} +2 -2
  48. package/dist/{chunk-NEZ4G7XR.js → chunk-CT2I5KUM.js} +1 -1
  49. package/dist/{chunk-ZGH7T32S.js → chunk-CY5NDMO7.js} +1 -1
  50. package/dist/{chunk-YIOWO6WS.js → chunk-DNOBOZPO.js} +1 -1
  51. package/dist/chunk-DXK55KGR.js +9 -0
  52. package/dist/{chunk-IDDVO4UV.js → chunk-E3BO7OVR.js} +1 -1
  53. package/dist/chunk-EHN5HTUD.js +147 -0
  54. package/dist/{chunk-RGEAEAZB.js → chunk-FJTWJ243.js} +1 -1
  55. package/dist/{chunk-FOZVXYVG.js → chunk-FV4LLU3T.js} +1 -1
  56. package/dist/{chunk-CE664P73.js → chunk-GBBVP2JW.js} +1 -1
  57. package/dist/{chunk-AD46OCZ4.js → chunk-GRB66C5S.js} +1 -1
  58. package/dist/{chunk-22A2ECA2.js → chunk-GYW7LVVL.js} +1 -1
  59. package/dist/{chunk-QIE62H3J.js → chunk-HJGUEZLW.js} +1 -1
  60. package/dist/{chunk-XN7PPLFS.js → chunk-HNE4TDOZ.js} +1 -1
  61. package/dist/{chunk-2U5DZUC7.js → chunk-I2JUBAPU.js} +1 -1
  62. package/dist/chunk-IJPFAWBH.js +5 -0
  63. package/dist/{chunk-TJRBV2V2.js → chunk-IOTJZTHX.js} +3 -3
  64. package/dist/{chunk-OZM4UU5F.js → chunk-IRRGSC7B.js} +1 -1
  65. package/dist/{chunk-Z4K4AYEI.js → chunk-IXVR66NS.js} +1 -1
  66. package/dist/chunk-K5JGCJ2K.js +6 -0
  67. package/dist/{chunk-D5T4ARTB.js → chunk-MCQXRJGH.js} +1 -1
  68. package/dist/{chunk-DCYTRYR2.js → chunk-MK2G7VIF.js} +1 -1
  69. package/dist/{chunk-35SRW4KA.js → chunk-MVF4KRHA.js} +1 -1
  70. package/dist/{chunk-KGFISJFM.js → chunk-O66EU5UV.js} +1 -1
  71. package/dist/{chunk-LV5VRSPI.js → chunk-OB6CKLEL.js} +1 -1
  72. package/dist/{chunk-HUD7SPUF.js → chunk-OLXOZJ7X.js} +1 -1
  73. package/dist/{chunk-U3JB76QP.js → chunk-PICCLJSO.js} +1 -1
  74. package/dist/{chunk-PJSCM6JX.js → chunk-POI6DCP6.js} +1 -1
  75. package/dist/{chunk-D5DEWIAU.js → chunk-PYB2EXRE.js} +2 -2
  76. package/dist/{chunk-YSK535OI.js → chunk-QNNBNIR7.js} +3 -3
  77. package/dist/{chunk-B2CIHKXG.js → chunk-QZI43UNV.js} +1 -1
  78. package/dist/chunk-RE3BZVGE.js +3 -0
  79. package/dist/{chunk-LMJTY32X.js → chunk-RHNKYNNZ.js} +1 -1
  80. package/dist/{chunk-ZKYYZ5NO.js → chunk-RN4OSVTG.js} +2 -2
  81. package/dist/chunk-SJ2KQKOV.js +3 -0
  82. package/dist/{chunk-FU3OQXFH.js → chunk-STH6I3UB.js} +1 -1
  83. package/dist/{chunk-N62EM6JX.js → chunk-UZSG54OY.js} +1 -1
  84. package/dist/{chunk-EK2B2LZK.js → chunk-W36P7S5W.js} +1 -1
  85. package/dist/{chunk-Q6TVDG3X.js → chunk-WE57PD6K.js} +1 -1
  86. package/dist/{chunk-52VLJKIN.js → chunk-WFEGGQJ4.js} +1 -1
  87. package/dist/chunk-WIA7TPK3.js +2 -0
  88. package/dist/{chunk-LZKUF23A.js → chunk-WT3SMSY5.js} +1 -1
  89. package/dist/{chunk-KRFGAVYU.js → chunk-XUJ5EPVW.js} +1 -1
  90. package/dist/{chunk-4PIMEZJW.js → chunk-YI4XULHR.js} +3 -3
  91. package/dist/{chunk-MHQ6A2QZ.js → chunk-YMSN25DX.js} +1 -1
  92. package/dist/{chunk-B2PZAB7J.js → chunk-ZG2V2ODK.js} +1 -1
  93. package/dist/{chunk-GN3SZXZ5.js → chunk-ZQP3MCZW.js} +1 -1
  94. package/dist/{chunk-GIRXJOJI.js → chunk-ZZLR3O5A.js} +1 -1
  95. package/dist/{config-KD62VH3R.js → config-OJF53CHL.js} +1 -1
  96. package/dist/{cover-cmd-Y5L4O4Q3.js → cover-cmd-K3LCXHAQ.js} +1 -1
  97. package/dist/{credentials-NQNJR4E4.js → credentials-NLJHSVBY.js} +1 -1
  98. package/dist/descriptor-EHK3DRCZ.js +2 -0
  99. package/dist/{evidence-FFOI2H3N.js → evidence-UPOFW3XC.js} +1 -1
  100. package/dist/evolve-cmd-MVALOB3G.js +2 -0
  101. package/dist/explain-VFIZTHFN.js +2 -0
  102. package/dist/{explain-cmd-RIDEMDMY.js → explain-cmd-KV5YUXKB.js} +1 -1
  103. package/dist/{explain-cmd-55WRDIMW.js → explain-cmd-U367SD4N.js} +1 -1
  104. package/dist/{extract-bind-6UMILP4U.js → extract-bind-SSTKQGTV.js} +2 -2
  105. package/dist/{extract-cmd-MZR7PHGA.js → extract-cmd-GO4UV7ER.js} +2 -2
  106. package/dist/{gaps-cmd-P2DRK6FW.js → gaps-cmd-DTVDIOED.js} +1 -1
  107. package/dist/{gate-FACZRGOC.js → gate-B6C6KLFA.js} +1 -1
  108. package/dist/{generate-headless-XOBQS6RU.js → generate-headless-2HYMSVN5.js} +2 -2
  109. package/dist/{headless-io-GXHKDPHB.js → headless-io-PWW6YKH2.js} +1 -1
  110. package/dist/index.js +43 -43
  111. package/dist/ingest-C5ANIN7S.js +2 -0
  112. package/dist/ingest-cmd-LLC5CDQ5.js +3 -0
  113. package/dist/interactive-bind-Q5TQFQ6N.js +7 -0
  114. package/dist/{lifecycle-cmd-55NZL3UO.js → lifecycle-cmd-BXE5IMFN.js} +1 -1
  115. package/dist/{list-cmd-JB2ABACD.js → list-cmd-KBWPYJMV.js} +1 -1
  116. package/dist/{list-commands-PDTISP6T.js → list-commands-6WDXAECV.js} +1 -1
  117. package/dist/{logical-ids-ATVR6PF2.js → logical-ids-3Y6RX5C2.js} +1 -1
  118. package/dist/login-flow-XQMJFC4H.js +2 -0
  119. package/dist/{maintenance-cmd-E3HEEVQW.js → maintenance-cmd-VS3APIUN.js} +1 -1
  120. package/dist/{persist-recorded-session-5UNUINWF.js → persist-recorded-session-KHIMN4A3.js} +1 -1
  121. package/dist/pipeline-2HRAWT5U.js +2 -0
  122. package/dist/readmodel-XOGOELUP.js +2 -0
  123. package/dist/reconcile-cmd-DH4VV6PG.js +2 -0
  124. package/dist/{recording-banner-IWY3GS6N.js → recording-banner-SADVYNEP.js} +1 -1
  125. package/dist/{require-project-folder-PFIDA5ZH.js → require-project-folder-LP7V26IU.js} +1 -1
  126. package/dist/{revert-3TKLOYQA.js → revert-AQQ2VHRM.js} +1 -1
  127. package/dist/{review-cmd-RXPPC5GK.js → review-cmd-4WZUUOE4.js} +1 -1
  128. package/dist/run-RT2VMPTQ.js +2 -0
  129. package/dist/run-XAZMT7WO.js +2 -0
  130. package/dist/{run-test-md-7GONSVAM.js → run-test-md-ATB2HZRG.js} +2 -2
  131. package/dist/{skill-installer-YZP5DWWZ.js → skill-installer-DE2LSSKU.js} +1 -1
  132. package/dist/{spawner-YDYCSTZD.js → spawner-GOTVIFR5.js} +1 -1
  133. package/dist/tcg-generate-7PUXJ5R4.js +2 -0
  134. package/dist/{testmd-actions-7RNW76DN.js → testmd-actions-RYQHBX4K.js} +1 -1
  135. package/dist/token-refresh-F5KRV7ER.js +2 -0
  136. package/dist/{validate-basic-IQY5CRLP.js → validate-basic-6BQ2L7TT.js} +1 -1
  137. package/dist/{version-check-U5UBPVX4.js → version-check-YW3FUWDH.js} +1 -1
  138. package/dist/{view-cmd-QE2FS3GB.js → view-cmd-FRMQF76B.js} +1 -1
  139. package/dist/walk-session-O4TMVORI.js +2 -0
  140. package/package.json +7 -7
  141. package/dist/ChatSurface-HGP5EHZM.js +0 -9
  142. package/dist/EvidenceViewOffer-7O3RNBEE.js +0 -2
  143. package/dist/SingleShotApp-UIDA54GB.js +0 -2
  144. package/dist/TestMdRunView-OH4Y6YD6.js +0 -2
  145. package/dist/archive-committer-3NI773TP.js +0 -2
  146. package/dist/bind-SRZYTS4Q.js +0 -6
  147. package/dist/chat-controller-VKGECDTU.js +0 -3
  148. package/dist/chunk-DM2GL24Z.js +0 -3
  149. package/dist/chunk-FTD3B7QA.js +0 -2
  150. package/dist/chunk-GIGD4M7V.js +0 -5
  151. package/dist/chunk-HW7Z5S2M.js +0 -14
  152. package/dist/chunk-I2S6KNZW.js +0 -2
  153. package/dist/chunk-IACKIGPX.js +0 -2
  154. package/dist/chunk-NFOBDHZK.js +0 -147
  155. package/dist/chunk-WM5QHLAP.js +0 -9
  156. package/dist/chunk-X4QL2DAD.js +0 -5
  157. package/dist/chunk-YANCBRER.js +0 -3
  158. package/dist/descriptor-SL5A7RQE.js +0 -2
  159. package/dist/distill-cmd-EYCCCFL3.js +0 -2
  160. package/dist/evolve-cmd-PHQ6FHRI.js +0 -2
  161. package/dist/explain-JIXUWEFJ.js +0 -2
  162. package/dist/ingest-4CGBXC2L.js +0 -2
  163. package/dist/ingest-cmd-X7BWGIN7.js +0 -3
  164. package/dist/interactive-bind-5FWW3S53.js +0 -7
  165. package/dist/login-flow-IXPJHTL2.js +0 -2
  166. package/dist/pipeline-F4WTOZ3Y.js +0 -2
  167. package/dist/readmodel-MPTENJ2R.js +0 -2
  168. package/dist/reconcile-cmd-MNMWAZF3.js +0 -8
  169. package/dist/run-V2WMNHFK.js +0 -2
  170. package/dist/signals-cmd-LXHZQLXZ.js +0 -2
  171. package/dist/tcg-generate-ZRKSX2KC.js +0 -2
  172. package/dist/token-refresh-DH2L2IPP.js +0 -2
@@ -1,10 +1,10 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as B,b as V,c as se}from"./chunk-D5DEWIAU.js";import{a as j,b as N}from"./chunk-OZODSY6H.js";import{a as ne,b as oe}from"./chunk-2YQ6TW77.js";import{a as C,b as Y,e as M,f as te,m as re}from"./chunk-RKWJG3WW.js";import{a as L}from"./chunk-EK2B2LZK.js";import{a as ee}from"./chunk-WAOCHXJ5.js";import{a as Z}from"./chunk-U3JB76QP.js";import{a as A}from"./chunk-RZ4F3BHX.js";import{a as H}from"./chunk-YIOWO6WS.js";import{a as O}from"./chunk-L4AUCQVO.js";import{x as h}from"./chunk-QIE62H3J.js";import{a as F}from"./chunk-HCBYKLMW.js";import{a as k,b as g,i as Q}from"./chunk-C44QQJR4.js";import{a as X}from"./chunk-6YGTRKDT.js";import{e as v}from"./chunk-UR6MHSHU.js";var D=v(X(),1);import{existsSync as P,readFileSync as Je,rmSync as pe,unlinkSync as Ke}from"fs";import{resolve as G}from"path";import{promises as ie,realpathSync as ke}from"fs";import{homedir as be}from"os";import{join as q,parse as Te,relative as ae,resolve as ce}from"path";var le=new Set(["node_modules",".git","dist","build",".next",".venv","venv","target","__pycache__"]),R=class extends Error{constructor(s){super(`refusing to scan '${s}'. Run from your project root, or pass --root <dir>.`);this.cwd=s;this.name="HomeRefusedError"}};function ue(e){try{return ke(ce(e))}catch{return ce(e)}}function Ee(e){let r=ue(e),s=ue(be()),n=Te(r).root;if(process.platform==="win32"){let o=t=>t.toLowerCase();return o(r)===o(s)||o(r)===o(n)}return r===s||r===n}async function U(e){if(Ee(e.root))throw new R(e.root);let r=e.maxEntries??5e4,s=e.maxResults??5e3,n=new Set(e.ignore??[]),o=[],t=0,i=0,c=!1,f,l=[e.root];for(;l.length>0&&!c;){let a=l.shift(),m;try{m=await ie.readdir(a,{withFileTypes:!0})}catch{continue}i++;for(let b of m){if(t++,t>r){c=!0,f="max_entries";break}let w=b.name,E=q(a,w);if(b.isDirectory()){if(le.has(w)||w.startsWith(".")||w.startsWith("output-")||n.has(w))continue;l.push(E)}else if(b.isFile()&&w.endsWith("_test.md")&&(o.push({path:E,relPath:ae(e.root,E),source:"cwd"}),o.length>=s)){c=!0,f="max_results";break}}e.onProgress?.(i,o.length)}if(!c){let m=[{dir:q(e.root,".testmuai","tests"),depth:0}];for(;m.length>0&&!c;){let{dir:b,depth:w}=m.shift(),E;try{E=await ie.readdir(b,{withFileTypes:!0})}catch{continue}i++;for(let u of E){if(t++,t>r){c=!0,f="max_entries";break}let x=u.name,y=q(b,x);if(u.isDirectory()){if(w>=20||x.startsWith(".")||x.startsWith("output-")||le.has(x))continue;m.push({dir:y,depth:w+1})}else if(u.isFile()&&x.endsWith("_test.md")&&(o.push({path:y,relPath:ae(e.root,y),source:"tests-dir"}),o.length>=s)){c=!0,f="max_results";break}}}}return{results:o,aborted:c,abortReason:f,dirsScanned:i}}import{readFileSync as Se}from"fs";function W(e){try{return re(e,Se(e,"utf8")).global.tags??[]}catch{return[]}}import{mkdirSync as ve,writeFileSync as Re}from"fs";import{join as Pe}from"path";function de(e,r){return`Basic ${Buffer.from(`${e}:${r}`).toString("base64")}`}async function Me(e){let r=ne({tmsBaseUrl:e.tmsBaseUrl,testcaseId:e.testcaseId,codeExport:{enabled:!0,language:e.language,skipValidation:e.skipValidation}}),s=await A(r.url,{method:"POST",headers:{"content-type":"application/json",authorization:de(e.auth.username,e.auth.access_key)},body:JSON.stringify(r.body)});if(!s.ok)throw new Error(`code-export trigger failed: ${s.status} ${await s.text()}`);e.log("info","CODE_EXPORT_TRIGGERED","Code export triggered",{testcase_id:e.testcaseId})}async function De(e){let r=oe({tmsBaseUrl:e.tmsBaseUrl,testcaseId:e.testcaseId}),s=e.pollIntervalMs??5e3,n=e.timeoutMs??3e5,o=Date.now()+n;for(;Date.now()<o;){let t=await A(r,{headers:{authorization:de(e.auth.username,e.auth.access_key),accept:"application/json"}});if(!t.ok){await new Promise(l=>setTimeout(l,s));continue}let c=(await t.json()).data?.find(l=>l.code_name==="kane-cli-trigger");if(!c){await new Promise(l=>setTimeout(l,s));continue}let f=(c.status??"").toLowerCase();if(f==="in progress"||f==="in_progress"||f==="pending"){await new Promise(l=>setTimeout(l,s));continue}if(!c.url||c.url.length===0)throw new Error(`code-export status=${c.status} but no files returned`);ve(e.outDir,{recursive:!0});for(let l of c.url){let a=Pe(e.outDir,l.file_name),m=await A(l.file_url);if(!m.ok){e.log("warn","CODE_EXPORT_FILE_FAILED","Failed to download file",{file_name:l.file_name,status:m.status});continue}let b=await m.text();Re(a,b,"utf-8")}return e.log("info","CODE_EXPORT_DOWNLOADED","Code export saved",{out_dir:e.outDir,file_count:c.url.length}),e.outDir}throw new Error("code-export polling timed out")}async function fe(e){return await Me(e),await De(e)}var T=v(X(),1);import{existsSync as $e,readFileSync as Ce}from"fs";var p=v(F(),1);function Ie(e){B(e);let r=M(e);if(!$e(r))return null;try{return JSON.parse(Ce(r,"utf8"))}catch{return{}}}function Fe(e){return e===null?"never_run":e.testcase_id?"synced":"local_only"}function Oe(e){return e==="synced"?"\u2601":e==="local_only"?"\u25A3":"\u25CB"}function Ae(e){return e==="tests-dir"?"\u2726":" "}function Le(e,r){return r==="all"?!0:r==="synced"?e.status==="synced":r==="local"?e.status==="local_only":r==="never_run"?e.status==="never_run":r==="cli"?e.source==="tests-dir":r==="hand"?e.source==="cwd":!0}var z=["all","synced","local","never_run","cli","hand"];function Be(e){let r=z.indexOf(e);return z[(r+1)%z.length]}function me({root:e,currentOrgId:r,onSelect:s,onCancel:n}){let[o,t]=(0,T.useState)([]),[i,c]=(0,T.useState)(null),[f,l]=(0,T.useState)(!0),[a,m]=(0,T.useState)("all");(0,T.useEffect)(()=>{(async()=>{try{let u=await U({root:e}),x=[];for(let y of u.results){let K=Ie(y.path);K?.org_id!==void 0&&K.org_id!==r||x.push({path:y.path,relPath:y.relPath,name:C(y.path),status:Fe(K),source:y.source,tags:W(y.path)})}t(x),l(!1)}catch(u){u instanceof R,c(u.message),l(!1)}})()},[e,r]);let b=(0,T.useMemo)(()=>o.filter(u=>Le(u,a)).map(u=>({id:u.path,label:`${Oe(u.status)} ${Ae(u.source)} ${u.relPath}${u.tags.length>0?` [${u.tags.join(", ")}]`:""}`})),[o,a]),w=(0,T.useMemo)(()=>Ne(a,o),[a,o]);if(i)return(0,p.jsxs)(k,{flexDirection:"column",borderStyle:"round",borderColor:h.red,paddingX:2,paddingY:1,children:[(0,p.jsx)(g,{color:h.red,bold:!0,children:"testmd"}),(0,p.jsx)(k,{marginTop:1,children:(0,p.jsx)(g,{color:h.red,children:i})})]});let E=a==="all"?"all":je(a);return(0,p.jsx)(Z,{title:`testmd \xB7 filter: ${E}`,items:b,loading:f,itemNoun:"tests",onSelect:u=>{let x=o.find(y=>y.path===u.id);x&&s(x)},onCancel:n,onTab:()=>m(u=>Be(u)),extraHint:"cycle filter",footer:w})}function je(e){return e==="synced"?"synced (\u2601)":e==="local"?"local (\u25A3)":e==="never_run"?"never run (\u25CB)":e==="cli"?"cli-generated (\u2726)":e==="hand"?"hand-written":"all"}function Ne(e,r){let s={synced:r.filter(o=>o.status==="synced").length,local:r.filter(o=>o.status==="local_only").length,never:r.filter(o=>o.status==="never_run").length,cli:r.filter(o=>o.source==="tests-dir").length,hand:r.filter(o=>o.source==="cwd").length},n=o=>o?h.orange:h.dim;return(0,p.jsxs)(k,{flexDirection:"column",children:[(0,p.jsx)(g,{color:h.dim,children:"legend:"}),(0,p.jsxs)(k,{children:[(0,p.jsx)(g,{color:n(e==="synced"),children:` \u2601 synced (${s.synced}) `}),(0,p.jsx)(g,{color:n(e==="local"),children:`\u25A3 local (${s.local}) `}),(0,p.jsx)(g,{color:n(e==="never_run"),children:`\u25CB never run (${s.never})`})]}),(0,p.jsxs)(k,{children:[(0,p.jsx)(g,{color:n(e==="cli"),children:` \u2726 cli-generated (${s.cli}) `}),(0,p.jsx)(g,{color:n(e==="hand"),children:` hand-written (${s.hand})`})]})]})}var I=v(X(),1);import{existsSync as Ue,readFileSync as We}from"fs";var d=v(F(),1);function ge({path:e,relPath:r,onAction:s,onBack:n,onView:o}){let[t,i]=(0,I.useState)(null),[c,f]=(0,I.useState)(!1);(0,I.useEffect)(()=>{let a=M(e);if(Ue(a))try{i(JSON.parse(We(a,"utf8")))}catch{i(null)}},[e]),Q((a,m)=>{if(m.escape){if(c){f(!1);return}n();return}if(c){a==="y"||a==="Y"?(f(!1),s("delete")):(a==="n"||a==="N")&&f(!1);return}a==="r"&&s("run"),a==="e"&&t?.testcase_id&&s("export"),a==="d"&&f(!0),a==="v"&&o&&o()});let l=({k:a,v:m})=>m?(0,d.jsxs)(g,{children:[(0,d.jsx)(g,{color:h.dim,children:a.padEnd(14)}),m]}):null;return(0,d.jsxs)(k,{flexDirection:"column",borderStyle:"round",borderColor:h.orange,paddingX:2,paddingY:1,children:[(0,d.jsx)(g,{color:h.orange,bold:!0,children:r}),(0,d.jsx)(k,{marginTop:1,flexDirection:"column",children:t?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(l,{k:"test_id",v:t.test_id}),(0,d.jsx)(l,{k:"testcase_id",v:t.testcase_id}),(0,d.jsx)(l,{k:"project_id",v:t.project_id}),(0,d.jsx)(l,{k:"folder_id",v:t.folder_id}),(0,d.jsx)(l,{k:"org_id",v:t.org_id}),(0,d.jsx)(l,{k:"session_name",v:t.session_name}),(0,d.jsx)(l,{k:"commit_id",v:t.commit_id})]}):(0,d.jsx)(g,{color:h.dim,children:"(never run \u2014 no meta.json)"})}),c?(0,d.jsx)(k,{marginTop:1,children:(0,d.jsxs)(g,{color:h.red,bold:!0,children:["Delete ",r," and its output dir? [y/n]"]})}):(0,d.jsx)(k,{marginTop:1,children:(0,d.jsxs)(g,{color:h.dim,children:["[r] run [e] export",t?.testcase_id?"":" (need testcase_id)"," [d] delete",o?" [v] view":""," [Esc] back"]})})]})}function $(e){B(e);let r=M(e);if(!P(r))return null;try{return JSON.parse(Je(r,"utf8"))}catch{return null}}function he(e,r){return!e||e.org_id===void 0?!0:e.org_id===r}function J(e,r){return he(e,r)?null:(process.stderr.write(`error: this test belongs to org ${e.org_id}; you are logged in as org ${r}.
2
+ import{a as B,b as V,c as se}from"./chunk-PYB2EXRE.js";import{a as j,b as N}from"./chunk-BYUARJE7.js";import{a as ne,b as oe}from"./chunk-2YQ6TW77.js";import{a as C,b as Y,e as M,f as te,m as re}from"./chunk-RKWJG3WW.js";import{a as L}from"./chunk-W36P7S5W.js";import{a as ee}from"./chunk-WAOCHXJ5.js";import{a as Z}from"./chunk-PICCLJSO.js";import{a as A}from"./chunk-RZ4F3BHX.js";import{a as H}from"./chunk-DNOBOZPO.js";import{a as O}from"./chunk-BOO7YXAV.js";import{x as h}from"./chunk-HJGUEZLW.js";import{a as F}from"./chunk-HCBYKLMW.js";import{a as k,b as g,i as Q}from"./chunk-C44QQJR4.js";import{a as X}from"./chunk-6YGTRKDT.js";import{e as v}from"./chunk-UR6MHSHU.js";var D=v(X(),1);import{existsSync as P,readFileSync as Je,rmSync as pe,unlinkSync as Ke}from"fs";import{resolve as G}from"path";import{promises as ie,realpathSync as ke}from"fs";import{homedir as be}from"os";import{join as q,parse as Te,relative as ae,resolve as ce}from"path";var le=new Set(["node_modules",".git","dist","build",".next",".venv","venv","target","__pycache__"]),R=class extends Error{constructor(s){super(`refusing to scan '${s}'. Run from your project root, or pass --root <dir>.`);this.cwd=s;this.name="HomeRefusedError"}};function ue(e){try{return ke(ce(e))}catch{return ce(e)}}function Ee(e){let r=ue(e),s=ue(be()),n=Te(r).root;if(process.platform==="win32"){let o=t=>t.toLowerCase();return o(r)===o(s)||o(r)===o(n)}return r===s||r===n}async function U(e){if(Ee(e.root))throw new R(e.root);let r=e.maxEntries??5e4,s=e.maxResults??5e3,n=new Set(e.ignore??[]),o=[],t=0,i=0,c=!1,f,l=[e.root];for(;l.length>0&&!c;){let a=l.shift(),m;try{m=await ie.readdir(a,{withFileTypes:!0})}catch{continue}i++;for(let b of m){if(t++,t>r){c=!0,f="max_entries";break}let w=b.name,E=q(a,w);if(b.isDirectory()){if(le.has(w)||w.startsWith(".")||w.startsWith("output-")||n.has(w))continue;l.push(E)}else if(b.isFile()&&w.endsWith("_test.md")&&(o.push({path:E,relPath:ae(e.root,E),source:"cwd"}),o.length>=s)){c=!0,f="max_results";break}}e.onProgress?.(i,o.length)}if(!c){let m=[{dir:q(e.root,".testmuai","tests"),depth:0}];for(;m.length>0&&!c;){let{dir:b,depth:w}=m.shift(),E;try{E=await ie.readdir(b,{withFileTypes:!0})}catch{continue}i++;for(let u of E){if(t++,t>r){c=!0,f="max_entries";break}let x=u.name,y=q(b,x);if(u.isDirectory()){if(w>=20||x.startsWith(".")||x.startsWith("output-")||le.has(x))continue;m.push({dir:y,depth:w+1})}else if(u.isFile()&&x.endsWith("_test.md")&&(o.push({path:y,relPath:ae(e.root,y),source:"tests-dir"}),o.length>=s)){c=!0,f="max_results";break}}}}return{results:o,aborted:c,abortReason:f,dirsScanned:i}}import{readFileSync as Se}from"fs";function W(e){try{return re(e,Se(e,"utf8")).global.tags??[]}catch{return[]}}import{mkdirSync as ve,writeFileSync as Re}from"fs";import{join as Pe}from"path";function de(e,r){return`Basic ${Buffer.from(`${e}:${r}`).toString("base64")}`}async function Me(e){let r=ne({tmsBaseUrl:e.tmsBaseUrl,testcaseId:e.testcaseId,codeExport:{enabled:!0,language:e.language,skipValidation:e.skipValidation}}),s=await A(r.url,{method:"POST",headers:{"content-type":"application/json",authorization:de(e.auth.username,e.auth.access_key)},body:JSON.stringify(r.body)});if(!s.ok)throw new Error(`code-export trigger failed: ${s.status} ${await s.text()}`);e.log("info","CODE_EXPORT_TRIGGERED","Code export triggered",{testcase_id:e.testcaseId})}async function De(e){let r=oe({tmsBaseUrl:e.tmsBaseUrl,testcaseId:e.testcaseId}),s=e.pollIntervalMs??5e3,n=e.timeoutMs??3e5,o=Date.now()+n;for(;Date.now()<o;){let t=await A(r,{headers:{authorization:de(e.auth.username,e.auth.access_key),accept:"application/json"}});if(!t.ok){await new Promise(l=>setTimeout(l,s));continue}let c=(await t.json()).data?.find(l=>l.code_name==="kane-cli-trigger");if(!c){await new Promise(l=>setTimeout(l,s));continue}let f=(c.status??"").toLowerCase();if(f==="in progress"||f==="in_progress"||f==="pending"){await new Promise(l=>setTimeout(l,s));continue}if(!c.url||c.url.length===0)throw new Error(`code-export status=${c.status} but no files returned`);ve(e.outDir,{recursive:!0});for(let l of c.url){let a=Pe(e.outDir,l.file_name),m=await A(l.file_url);if(!m.ok){e.log("warn","CODE_EXPORT_FILE_FAILED","Failed to download file",{file_name:l.file_name,status:m.status});continue}let b=await m.text();Re(a,b,"utf-8")}return e.log("info","CODE_EXPORT_DOWNLOADED","Code export saved",{out_dir:e.outDir,file_count:c.url.length}),e.outDir}throw new Error("code-export polling timed out")}async function fe(e){return await Me(e),await De(e)}var T=v(X(),1);import{existsSync as $e,readFileSync as Ce}from"fs";var p=v(F(),1);function Ie(e){B(e);let r=M(e);if(!$e(r))return null;try{return JSON.parse(Ce(r,"utf8"))}catch{return{}}}function Fe(e){return e===null?"never_run":e.testcase_id?"synced":"local_only"}function Oe(e){return e==="synced"?"\u2601":e==="local_only"?"\u25A3":"\u25CB"}function Ae(e){return e==="tests-dir"?"\u2726":" "}function Le(e,r){return r==="all"?!0:r==="synced"?e.status==="synced":r==="local"?e.status==="local_only":r==="never_run"?e.status==="never_run":r==="cli"?e.source==="tests-dir":r==="hand"?e.source==="cwd":!0}var z=["all","synced","local","never_run","cli","hand"];function Be(e){let r=z.indexOf(e);return z[(r+1)%z.length]}function me({root:e,currentOrgId:r,onSelect:s,onCancel:n}){let[o,t]=(0,T.useState)([]),[i,c]=(0,T.useState)(null),[f,l]=(0,T.useState)(!0),[a,m]=(0,T.useState)("all");(0,T.useEffect)(()=>{(async()=>{try{let u=await U({root:e}),x=[];for(let y of u.results){let K=Ie(y.path);K?.org_id!==void 0&&K.org_id!==r||x.push({path:y.path,relPath:y.relPath,name:C(y.path),status:Fe(K),source:y.source,tags:W(y.path)})}t(x),l(!1)}catch(u){u instanceof R,c(u.message),l(!1)}})()},[e,r]);let b=(0,T.useMemo)(()=>o.filter(u=>Le(u,a)).map(u=>({id:u.path,label:`${Oe(u.status)} ${Ae(u.source)} ${u.relPath}${u.tags.length>0?` [${u.tags.join(", ")}]`:""}`})),[o,a]),w=(0,T.useMemo)(()=>Ne(a,o),[a,o]);if(i)return(0,p.jsxs)(k,{flexDirection:"column",borderStyle:"round",borderColor:h.red,paddingX:2,paddingY:1,children:[(0,p.jsx)(g,{color:h.red,bold:!0,children:"testmd"}),(0,p.jsx)(k,{marginTop:1,children:(0,p.jsx)(g,{color:h.red,children:i})})]});let E=a==="all"?"all":je(a);return(0,p.jsx)(Z,{title:`testmd \xB7 filter: ${E}`,items:b,loading:f,itemNoun:"tests",onSelect:u=>{let x=o.find(y=>y.path===u.id);x&&s(x)},onCancel:n,onTab:()=>m(u=>Be(u)),extraHint:"cycle filter",footer:w})}function je(e){return e==="synced"?"synced (\u2601)":e==="local"?"local (\u25A3)":e==="never_run"?"never run (\u25CB)":e==="cli"?"cli-generated (\u2726)":e==="hand"?"hand-written":"all"}function Ne(e,r){let s={synced:r.filter(o=>o.status==="synced").length,local:r.filter(o=>o.status==="local_only").length,never:r.filter(o=>o.status==="never_run").length,cli:r.filter(o=>o.source==="tests-dir").length,hand:r.filter(o=>o.source==="cwd").length},n=o=>o?h.orange:h.dim;return(0,p.jsxs)(k,{flexDirection:"column",children:[(0,p.jsx)(g,{color:h.dim,children:"legend:"}),(0,p.jsxs)(k,{children:[(0,p.jsx)(g,{color:n(e==="synced"),children:` \u2601 synced (${s.synced}) `}),(0,p.jsx)(g,{color:n(e==="local"),children:`\u25A3 local (${s.local}) `}),(0,p.jsx)(g,{color:n(e==="never_run"),children:`\u25CB never run (${s.never})`})]}),(0,p.jsxs)(k,{children:[(0,p.jsx)(g,{color:n(e==="cli"),children:` \u2726 cli-generated (${s.cli}) `}),(0,p.jsx)(g,{color:n(e==="hand"),children:` hand-written (${s.hand})`})]})]})}var I=v(X(),1);import{existsSync as Ue,readFileSync as We}from"fs";var d=v(F(),1);function ge({path:e,relPath:r,onAction:s,onBack:n,onView:o}){let[t,i]=(0,I.useState)(null),[c,f]=(0,I.useState)(!1);(0,I.useEffect)(()=>{let a=M(e);if(Ue(a))try{i(JSON.parse(We(a,"utf8")))}catch{i(null)}},[e]),Q((a,m)=>{if(m.escape){if(c){f(!1);return}n();return}if(c){a==="y"||a==="Y"?(f(!1),s("delete")):(a==="n"||a==="N")&&f(!1);return}a==="r"&&s("run"),a==="e"&&t?.testcase_id&&s("export"),a==="d"&&f(!0),a==="v"&&o&&o()});let l=({k:a,v:m})=>m?(0,d.jsxs)(g,{children:[(0,d.jsx)(g,{color:h.dim,children:a.padEnd(14)}),m]}):null;return(0,d.jsxs)(k,{flexDirection:"column",borderStyle:"round",borderColor:h.orange,paddingX:2,paddingY:1,children:[(0,d.jsx)(g,{color:h.orange,bold:!0,children:r}),(0,d.jsx)(k,{marginTop:1,flexDirection:"column",children:t?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(l,{k:"test_id",v:t.test_id}),(0,d.jsx)(l,{k:"testcase_id",v:t.testcase_id}),(0,d.jsx)(l,{k:"project_id",v:t.project_id}),(0,d.jsx)(l,{k:"folder_id",v:t.folder_id}),(0,d.jsx)(l,{k:"org_id",v:t.org_id}),(0,d.jsx)(l,{k:"session_name",v:t.session_name}),(0,d.jsx)(l,{k:"commit_id",v:t.commit_id})]}):(0,d.jsx)(g,{color:h.dim,children:"(never run \u2014 no meta.json)"})}),c?(0,d.jsx)(k,{marginTop:1,children:(0,d.jsxs)(g,{color:h.red,bold:!0,children:["Delete ",r," and its output dir? [y/n]"]})}):(0,d.jsx)(k,{marginTop:1,children:(0,d.jsxs)(g,{color:h.dim,children:["[r] run [e] export",t?.testcase_id?"":" (need testcase_id)"," [d] delete",o?" [v] view":""," [Esc] back"]})})]})}function $(e){B(e);let r=M(e);if(!P(r))return null;try{return JSON.parse(Je(r,"utf8"))}catch{return null}}function he(e,r){return!e||e.org_id===void 0?!0:e.org_id===r}function J(e,r){return he(e,r)?null:(process.stderr.write(`error: this test belongs to org ${e.org_id}; you are logged in as org ${r}.
3
3
  Switch profiles with \`kane-cli profiles switch\` to act on it.
4
4
  `),2)}async function Ut(e={}){let r=!!process.stdin.isTTY&&!e.json,s=new O,n=new L;await V({isInteractive:r,creds:s,config:n});let o=s.getDefaultEnv()??"prod";try{let t=await N({creds:s,env:o,log:()=>{}});return t.resolvedCreds?.org_id===void 0?(process.stderr.write("error: TMS did not return an org_id. Run `kane-cli login` again.\n"),{ok:!1,code:2}):{ok:!0,orgId:String(t.resolvedCreds.org_id)}}catch(t){if(t instanceof j)return process.stderr.write("error: not authenticated. Run `kane-cli login` first.\n"),{ok:!1,code:2};throw t}}async function Wt(e,r){if(process.stdin.isTTY&&!e.json)return await Ye(r,e.root);let s=e.root??process.cwd(),n;try{n=await U({root:s,ignore:e.ignore})}catch(o){if(o instanceof R)return process.stderr.write(`error: ${o.message}
5
5
  `),2;throw o}for(let o of n.results){let t=$(o.path);if(!he(t,r))continue;let i={path:o.relPath.startsWith(".")?o.relPath:`./${o.relPath}`,name:C(o.path),has_meta:t!==null,source:o.source,synced:!!t?.testcase_id,tags:W(o.path)};t&&(t.test_id&&(i.test_id=t.test_id),t.testcase_id&&(i.testcase_id=t.testcase_id),t.org_id&&(i.org_id=t.org_id),t.project_id&&(i.project_id=t.project_id),t.folder_id&&(i.folder_id=t.folder_id)),process.stdout.write(JSON.stringify(i)+`
6
6
  `)}return n.aborted&&process.stderr.write(`warn: walk aborted (${n.abortReason}). Pass --root or --ignore to narrow.
7
- `),0}var _e=-1001,ye=-1002,we=-1003,_={action:null,path:null};function Xe(e,r){return _.action=e,_.path=r,e==="run"?_e:e==="export"?ye:we}function He({root:e,currentOrgId:r,onComplete:s}){let[n,o]=D.default.useState({kind:"list"});return D.default.useEffect(()=>{n.kind==="exiting"&&s(n.code)},[n,s]),n.kind==="list"?D.default.createElement(me,{root:e,currentOrgId:r,onSelect:t=>o({kind:"inspect",path:t.path,relPath:t.relPath}),onCancel:()=>o({kind:"exiting",code:0})}):n.kind==="inspect"?D.default.createElement(ge,{path:n.path,relPath:n.relPath,onAction:async t=>{o({kind:"exiting",code:Xe(t,n.path)})},onBack:()=>o({kind:"list"})}):null}async function Ye(e,r){let s=r??process.cwd(),{render:n}=await import("./build-JIKYOZUH.js"),o=await new Promise(t=>{let{unmount:i,waitUntilExit:c}=n(D.default.createElement(He,{root:s,currentOrgId:e,onComplete:f=>{i(),t(f)}}),{stdout:process.stderr,exitOnCtrlC:!0});c().then(()=>t(0)).catch(()=>t(0))});if(o===_e&&_.path){let{runTestMdFile:t}=await import("./run-test-md-7GONSVAM.js"),i=await t(_.path,{});return _.action=null,_.path=null,i}if(o===ye&&_.path){let t=await qe(_.path,{},e);return _.action=null,_.path=null,t}if(o===we&&_.path){let t=await Ve(_.path,!0,e);return _.action=null,_.path=null,t}return o}async function Jt(e,r){let s=G(e);if(!P(s))return process.stderr.write(`error: file not found: ${s}
7
+ `),0}var _e=-1001,ye=-1002,we=-1003,_={action:null,path:null};function Xe(e,r){return _.action=e,_.path=r,e==="run"?_e:e==="export"?ye:we}function He({root:e,currentOrgId:r,onComplete:s}){let[n,o]=D.default.useState({kind:"list"});return D.default.useEffect(()=>{n.kind==="exiting"&&s(n.code)},[n,s]),n.kind==="list"?D.default.createElement(me,{root:e,currentOrgId:r,onSelect:t=>o({kind:"inspect",path:t.path,relPath:t.relPath}),onCancel:()=>o({kind:"exiting",code:0})}):n.kind==="inspect"?D.default.createElement(ge,{path:n.path,relPath:n.relPath,onAction:async t=>{o({kind:"exiting",code:Xe(t,n.path)})},onBack:()=>o({kind:"list"})}):null}async function Ye(e,r){let s=r??process.cwd(),{render:n}=await import("./build-JIKYOZUH.js"),o=await new Promise(t=>{let{unmount:i,waitUntilExit:c}=n(D.default.createElement(He,{root:s,currentOrgId:e,onComplete:f=>{i(),t(f)}}),{stdout:process.stderr,exitOnCtrlC:!0});c().then(()=>t(0)).catch(()=>t(0))});if(o===_e&&_.path){let{runTestMdFile:t}=await import("./run-test-md-ATB2HZRG.js"),i=await t(_.path,{});return _.action=null,_.path=null,i}if(o===ye&&_.path){let t=await qe(_.path,{},e);return _.action=null,_.path=null,t}if(o===we&&_.path){let t=await Ve(_.path,!0,e);return _.action=null,_.path=null,t}return o}async function Jt(e,r){let s=G(e);if(!P(s))return process.stderr.write(`error: file not found: ${s}
8
8
  `),2;let n=$(s),o=J(n,r);if(o!==null)return o;let t={path:s,name:C(s),has_meta:n!==null};return n&&(n.commit_id&&(t.commit_id=n.commit_id),n.test_id&&(t.test_id=n.test_id),n.testcase_id&&(t.testcase_id=n.testcase_id),n.project_id&&(t.project_id=n.project_id),n.folder_id&&(t.folder_id=n.folder_id),n.org_id&&(t.org_id=n.org_id),n.session_name&&(t.session_name=n.session_name)),process.stdout.write(JSON.stringify(t)+`
9
9
  `),0}async function Ve(e,r,s){let n=G(e);if(!P(n))return process.stderr.write(`error: file not found: ${n}
10
10
  `),2;let o=$(n),t=J(o,s);if(t!==null)return t;if(!r)return process.stderr.write(`error: refusing to delete without --yes.
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{existsSync as l}from"fs";import{dirname as f,resolve as i}from"path";import{fileURLToPath as d}from"url";var g=f(d(import.meta.url));function p(){return[i(g,".."),i(g,"../../..")]}function A(o){return{"darwin-arm64":"kane-cli-darwin-arm64","darwin-x64":"kane-cli-darwin-x64","linux-x64":"kane-cli-linux-x64","linux-arm64":"kane-cli-linux-arm64","win32-x64":"kane-cli-win-x64"}[o]??null}function h(){let o=A(`${process.platform}-${process.arch}`),n=process.platform==="win32"?"assurance-agent.exe":"assurance-agent";for(let r of p()){for(let s of o?["@testmuai","@lambdatestincprivate"]:[]){let e=i(r,"node_modules",s,o,"bin",n);if(l(e))return{cmd:e,args:[]}}let a=i(r,"../assurance-agent/dist",n);if(l(a))return{cmd:a,args:[]};let t=i(r,"../assurance-agent/main.py");if(l(t)){let s=i(r,"../assurance-agent/.venv/bin/python");return{cmd:l(s)?s:"python3",args:[t]}}}return null}function w(o,n={}){return{...process.env,...n,TESTMUAI_SOURCE:"kane-cli",TESTMUAI_SESSION_ID:o,ASSURANCE_LOG_LEVEL:process.env.ASSURANCE_LOG_LEVEL??"info"}}async function x(){if(process.env.TESTMUAI_API_KEY||process.env.TESTMUAI_BASIC_AUTH)return{};try{let{CredentialsManager:o}=await import("./credentials-NQNJR4E4.js"),n=process.env.TESTMUAI_ENV==="stage"?"stage":"prod",r=new o,a=r.getActiveProfile()??"default",t={TESTMUAI_ENV:n},s=r.loadBasicAuth(a,n);if(s)return t.TESTMUAI_BASIC_AUTH=Buffer.from(`${s.username}:${s.access_key}`,"utf8").toString("base64"),t;let e=r.loadCredentials(a,n);if(e){try{let{refreshOAuthToken:u}=await import("./token-refresh-DH2L2IPP.js");await u({creds:r,profile:a,env:n,credentials:e})}catch{}let c=r.loadCredentials(a,n)??e;if(typeof c.access_token=="string"){let u=await E(n,c.access_token);return u?(t.TESTMUAI_BASIC_AUTH=u,t):(t.TESTMUAI_API_KEY=c.access_token,t)}}return{}}catch{return{}}}var _=8e3;function m(){return process.stderr.write("warn: session auth may expire during long runs \u2014 if that happens, run `kane-cli login` and retry\n"),null}async function E(o,n){if(process.env.TESTMUAI_BASE_URL)return null;try{let[{getEnvironment:r},{ControllerClient:a}]=await Promise.all([import("./config-KD62VH3R.js"),import("./controller-client-RD2YEMAH.js")]),t=new a(r(o).controllerBaseUrl,n),s;try{let e=await Promise.race([t.getTmsCredentials().catch(()=>null),new Promise(c=>{s=setTimeout(()=>c(null),_)})]);return typeof e?.username!="string"||!e.username||typeof e.access_key!="string"||!e.access_key?m():Buffer.from(`${e.username}:${e.access_key}`,"utf8").toString("base64")}finally{clearTimeout(s)}}catch{return m()}}export{A as a,h as b,w as c,x as d};
2
+ import{existsSync as l}from"fs";import{dirname as f,resolve as i}from"path";import{fileURLToPath as d}from"url";var g=f(d(import.meta.url));function p(){return[i(g,".."),i(g,"../../..")]}function A(o){return{"darwin-arm64":"kane-cli-darwin-arm64","darwin-x64":"kane-cli-darwin-x64","linux-x64":"kane-cli-linux-x64","linux-arm64":"kane-cli-linux-arm64","win32-x64":"kane-cli-win-x64"}[o]??null}function h(){let o=A(`${process.platform}-${process.arch}`),n=process.platform==="win32"?"assurance-agent.exe":"assurance-agent";for(let r of p()){for(let s of o?["@testmuai","@lambdatestincprivate"]:[]){let e=i(r,"node_modules",s,o,"bin",n);if(l(e))return{cmd:e,args:[]}}let a=i(r,"../assurance-agent/dist",n);if(l(a))return{cmd:a,args:[]};let t=i(r,"../assurance-agent/main.py");if(l(t)){let s=i(r,"../assurance-agent/.venv/bin/python");return{cmd:l(s)?s:"python3",args:[t]}}}return null}function w(o,n={}){return{...process.env,...n,TESTMUAI_SOURCE:"kane-cli",TESTMUAI_SESSION_ID:o,ASSURANCE_LOG_LEVEL:process.env.ASSURANCE_LOG_LEVEL??"info"}}async function x(){if(process.env.TESTMUAI_API_KEY||process.env.TESTMUAI_BASIC_AUTH)return{};try{let{CredentialsManager:o}=await import("./credentials-NLJHSVBY.js"),n=process.env.TESTMUAI_ENV==="stage"?"stage":"prod",r=new o,a=r.getActiveProfile()??"default",t={TESTMUAI_ENV:n},s=r.loadBasicAuth(a,n);if(s)return t.TESTMUAI_BASIC_AUTH=Buffer.from(`${s.username}:${s.access_key}`,"utf8").toString("base64"),t;let e=r.loadCredentials(a,n);if(e){try{let{refreshOAuthToken:u}=await import("./token-refresh-F5KRV7ER.js");await u({creds:r,profile:a,env:n,credentials:e})}catch{}let c=r.loadCredentials(a,n)??e;if(typeof c.access_token=="string"){let u=await E(n,c.access_token);return u?(t.TESTMUAI_BASIC_AUTH=u,t):(t.TESTMUAI_API_KEY=c.access_token,t)}}return{}}catch{return{}}}var _=8e3;function m(){return process.stderr.write("warn: session auth may expire during long runs \u2014 if that happens, run `kane-cli login` and retry\n"),null}async function E(o,n){if(process.env.TESTMUAI_BASE_URL)return null;try{let[{getEnvironment:r},{ControllerClient:a}]=await Promise.all([import("./config-OJF53CHL.js"),import("./controller-client-RD2YEMAH.js")]),t=new a(r(o).controllerBaseUrl,n),s;try{let e=await Promise.race([t.getTmsCredentials().catch(()=>null),new Promise(c=>{s=setTimeout(()=>c(null),_)})]);return typeof e?.username!="string"||!e.username||typeof e.access_key!="string"||!e.access_key?m():Buffer.from(`${e.username}:${e.access_key}`,"utf8").toString("base64")}finally{clearTimeout(s)}}catch{return m()}}export{A as a,h as b,w as c,x as d};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as z,b as ee,c as te}from"./chunk-VL2UA23Z.js";import{c as K,d as V}from"./chunk-LV5VRSPI.js";import{c as J}from"./chunk-2U5DZUC7.js";import{a as Q}from"./chunk-EK2B2LZK.js";import{a as Z}from"./chunk-FPFOW6BS.js";import{b as H}from"./chunk-MHQ6A2QZ.js";import{b as W}from"./chunk-FU3OQXFH.js";import{h as E}from"./chunk-M5JQXOCE.js";import{a as O}from"./chunk-2WVKOZ6W.js";import{a as _}from"./chunk-YIOWO6WS.js";import{a as k,b as A,d as Y}from"./chunk-VE3SUJMA.js";import{a as q}from"./chunk-L4AUCQVO.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-IQY5CRLP.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-IXPJHTL2.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};
2
+ import{a as z,b as ee,c as te}from"./chunk-3HEPW6SN.js";import{c as K,d as V}from"./chunk-OB6CKLEL.js";import{c as J}from"./chunk-I2JUBAPU.js";import{a as Q}from"./chunk-W36P7S5W.js";import{a as Z}from"./chunk-FPFOW6BS.js";import{b as H}from"./chunk-YMSN25DX.js";import{b as W}from"./chunk-STH6I3UB.js";import{h as E}from"./chunk-M5JQXOCE.js";import{a as O}from"./chunk-2WVKOZ6W.js";import{a as _}from"./chunk-DNOBOZPO.js";import{a as k,b as A,d as Y}from"./chunk-VE3SUJMA.js";import{a as q}from"./chunk-BOO7YXAV.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-6BQ2L7TT.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-XQMJFC4H.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,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{w as s}from"./chunk-QIE62H3J.js";function n(r="prod"){let e=s[r];return r!=="stage"?e:{authBaseUrl:process.env.KANE_STAGE_AUTH_URL??e.authBaseUrl,consentUrl:process.env.KANE_STAGE_CONSENT_URL??e.consentUrl,controllerBaseUrl:process.env.TESTMUAI_BASE_URL??e.controllerBaseUrl,tmsBaseUrl:process.env.KANE_STAGE_TMS_URL??e.tmsBaseUrl,testGeneratorBaseUrl:process.env.KANE_STAGE_TCG_URL??e.testGeneratorBaseUrl,secretsBaseUrl:process.env.KANE_STAGE_SECRETS_URL??e.secretsBaseUrl,testManagerUiUrl:process.env.KANE_STAGE_TEST_MANAGER_UI_URL??e.testManagerUiUrl,shareApiBaseUrl:process.env.KANE_STAGE_SHARE_API_URL??e.shareApiBaseUrl,v16ServerHost:process.env.KANE_STAGE_V16_SERVER_HOST??e.v16ServerHost,evidenceViewerUrl:process.env.KANE_STAGE_EVIDENCE_VIEWER_URL??e.evidenceViewerUrl}}export{n as a};
2
+ import{w as s}from"./chunk-HJGUEZLW.js";function n(r="prod"){let e=s[r];return r!=="stage"?e:{authBaseUrl:process.env.KANE_STAGE_AUTH_URL??e.authBaseUrl,consentUrl:process.env.KANE_STAGE_CONSENT_URL??e.consentUrl,controllerBaseUrl:process.env.TESTMUAI_BASE_URL??e.controllerBaseUrl,tmsBaseUrl:process.env.KANE_STAGE_TMS_URL??e.tmsBaseUrl,testGeneratorBaseUrl:process.env.KANE_STAGE_TCG_URL??e.testGeneratorBaseUrl,secretsBaseUrl:process.env.KANE_STAGE_SECRETS_URL??e.secretsBaseUrl,testManagerUiUrl:process.env.KANE_STAGE_TEST_MANAGER_UI_URL??e.testManagerUiUrl,shareApiBaseUrl:process.env.KANE_STAGE_SHARE_API_URL??e.shareApiBaseUrl,v16ServerHost:process.env.KANE_STAGE_V16_SERVER_HOST??e.v16ServerHost,evidenceViewerUrl:process.env.KANE_STAGE_EVIDENCE_VIEWER_URL??e.evidenceViewerUrl}}export{n as a};
@@ -0,0 +1,9 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{b as K,d as W}from"./chunk-RE3BZVGE.js";import{d as D}from"./chunk-JFAFKHDX.js";import{a as G}from"./chunk-YKTYVJBN.js";import{d as X}from"./chunk-2PQXEEVY.js";import{a as Q}from"./chunk-MCQXRJGH.js";import{a as H}from"./chunk-ZZLR3O5A.js";import{g as z}from"./chunk-ZG2V2ODK.js";import{d as U,f as j}from"./chunk-5YPBPZUR.js";import{a as P,c as B}from"./chunk-HJGUEZLW.js";function lt(t){let e=process.env.HOME??"";return e&&t.startsWith(e)?`~${t.slice(e.length)}`:t}import{readFileSync as Se,writeFileSync as Ee,renameSync as $e,mkdirSync as Re}from"fs";import{dirname as Ce,join as Te}from"path";var O=1,Me=720*60*1e3;function F(t){return Te(B,"embeddings",`alias-${t}.json`)}function J(t,e=Date.now()){return t!==null&&e-t.fetchedAt<Me}function Y(t){try{let e=JSON.parse(Se(t,"utf-8"));return e.wrapperVersion!==O||typeof e.purposes!="object"||e.purposes===null?null:{wrapperVersion:O,writtenByVersion:String(e.writtenByVersion??""),purposes:e.purposes}}catch{return null}}function Z(t,e,n=F(t)){let r=Y(n)?.purposes?.[e];return!r||typeof r.alias!="string"||typeof r.dims!="number"||typeof r.fetchedAt!="number"?null:{alias:r.alias,dims:r.dims,fetchedAt:r.fetchedAt}}function q(t,e,n,s=F(t)){try{Re(Ce(s),{recursive:!0});let a=Y(s)?.purposes??{};a[e]={alias:n.alias,dims:n.dims,fetchedAt:Date.now()};let o={wrapperVersion:O,writtenByVersion:P,purposes:a},m=`${s}.tmp`;Ee(m,JSON.stringify(o,null,2)+`
3
+ `),$e(m,s)}catch(r){process.stderr.write(`[embed] Failed to save alias cache: ${r instanceof Error?r.message:String(r)}
4
+ `)}}function De(t){return t.TESTMUAI_ENV==="stage"?"stage":"prod"}function ee(t){let e=t.env??process.env,n=t.auth?.TESTMUAI_BASIC_AUTH||e.TESTMUAI_BASIC_AUTH;if(n)return{authorization:`Basic ${n}`};let s=t.auth?.TESTMUAI_API_KEY||e.TESTMUAI_API_KEY;return s?{authorization:`Bearer ${s}`}:{}}async function te(t,e={}){let n=e.env??process.env,s=De(n),r=e.aliasCacheFile??F(s),a=e.now??Date.now,o=Z(s,t,r);if(J(o,a()))return{alias:o.alias,dims:o.dims};let d=`${G(n)}/assurance/embed/alias?purpose=${encodeURIComponent(t)}`,f=await(e.fetchImpl??fetch)(d,{method:"GET",headers:ee(e)});if(!f.ok)throw new Error(`embed alias resolve failed: ${f.status}`);let c=await f.json();return q(s,t,{alias:c.alias,dims:c.dims},r),{alias:c.alias,dims:c.dims}}async function ne(t,e,n={}){let s=n.env??process.env,r=G(s),a=await(n.fetchImpl??fetch)(`${r}/assurance/embed`,{method:"POST",headers:{...ee(n),"content-type":"application/json"},body:JSON.stringify({purpose:t,input:e})});if(!a.ok)throw new Error(`embed failed: ${a.status}`);return await a.json()}import{randomBytes as nt}from"crypto";function re(t,e){let n=Math.min(t.length,e.length),s=0,r=0,a=0;for(let o=0;o<n;o++)s+=t[o]*e[o],r+=t[o]*t[o],a+=e[o]*e[o];return r===0||a===0?0:s/(Math.sqrt(r)*Math.sqrt(a))}function se(t,e,n){return n*t+(1-n)*e}var ie=.7;import{readFileSync as Fe,writeFileSync as Ne,renameSync as Le,mkdirSync as Ge}from"fs";import{dirname as Oe,join as oe}from"path";function Ve(t){return oe(t,"embeddings")}function Ie(t){let e=t.indexOf(":");return e>=0?t.slice(e+1):t}function ae(t,e,n){let s=Ie(n);return oe(Ve(t),e,s.slice(0,2),`${s.slice(2)}.f32`)}function ce(t,e,n){try{let s=Fe(ae(t,e,n)),r=new Float32Array(Math.floor(s.length/4));for(let a=0;a<r.length;a++)r[a]=s.readFloatLE(a*4);return r}catch{return null}}function le(t,e,n,s){try{let r=ae(t,e,n);Ge(Oe(r),{recursive:!0});let a=Buffer.alloc(s.length*4);for(let m=0;m<s.length;m++)a.writeFloatLE(s[m],m*4);let o=`${r}.tmp`;Ne(o,a),Le(o,r)}catch(r){process.stderr.write(`[embed] Failed to cache vector: ${r instanceof Error?r.message:String(r)}
5
+ `)}}var Pe=["get_node","get_edges","find_by_provenance","match_by_type","stale_nodes","search_similar"],Be=["source_read","source_grep"],Ue=[...Pe,...Be],fe=50,V=200,pe=10,ge=50,ue=20,je=200,He=50;function N(t,e,n){let s=typeof t=="number"&&Number.isFinite(t)?Math.floor(t):e;return Math.max(1,Math.min(s,n))}function $(t,e){let n=t[e];if(typeof n!="string"||n.length===0)throw new w(`param "${e}" must be a non-empty string`);return n}function E(t,e){let n=t[e];if(n==null)return null;if(typeof n!="string")throw new w(`param "${e}" must be a string when present`);return n}var w=class extends Error{};function I(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 de(t){return new Set(t.toLowerCase().replace(/[^\p{L}\p{N}]+/gu," ").split(" ").filter(Boolean))}function he(t,...e){let n=de(t);if(n.size===0)return 0;let s=t.trim().toLowerCase(),r=0;for(let a of e){let o=de(a);if(o.size===0)continue;let m=0;for(let c of n)o.has(c)&&m++;let d=n.size+o.size-m,f=d===0?0:m/d;s&&a.toLowerCase().includes(s)&&(f=Math.max(f,.9)),r=Math.max(r,f)}return r}function ze(t,e){let n=$(e,"cid"),s=E(e,"type"),r=E(e,"direction")??"both";if(!["out","in","both"].includes(r))throw new w('param "direction" must be out|in|both');let a=N(e.limit,fe,V),o=[];return(r==="out"||r==="both")&&o.push(...t.edgesFrom(n)),(r==="in"||r==="both")&&o.push(...t.edgesInto(n)),o.filter(m=>s==null||m.type===s).slice(0,a)}function Qe(t,e){let n=$(e,"source_id"),s=t.heads.get(n)??null,r=[];for(let a of t.nodeLabel.keys()){let o=t.derivesInto(a).filter(d=>d.props.source_id===n).map(d=>({source_cid:d.props.source_cid,anchor:d.props.anchor??null}));if(o.length===0)continue;let m=I(t,a);if(m&&(r.push({...m,pins:o,pinned_to_head:s!=null&&o.some(d=>d.source_cid===s)}),r.length>=V))break}return r}function Xe(t,e){let n=$(e,"label"),s=E(e,"trust"),r=E(e,"freshness"),a=N(e.limit,fe,V),o=[];for(let{cid:m}of t.byLabel(n)){let d=I(t,m);if(d&&!(s!=null&&d.trust!==s)&&!(r!=null&&d.freshness!==r)&&(o.push(d),o.length>=a))break}return o}function Ke(t){return t.staleList().map(({cid:e,state:n})=>{let s=t.getNode(e);return{cid:e,state:n,label:s?.label??null,title:s?.content.title??null}})}function We(t,e){let n=$(e,"text"),s=E(e,"label")??"usecase",r=N(e.k,pe,ge),a=[];for(let{cid:o,content:m}of t.byLabel(s)){let d=String(m.title??""),f=String(m.summary??""),c=he(n,d,f);c<=0||a.push({cid:o,title:d,summary:f,score:Math.round(c*1e3)/1e3,trust:t.trust.get(o)??null,freshness:t.stale(o)})}return a.sort((o,m)=>m.score-o.score||o.cid.localeCompare(m.cid)),a.slice(0,r)}function _e(t,e,n){let s=t.heads.get(n);if(typeof s!="string"){let o=[...t.heads.keys()].sort().join(", ");throw new w(`unknown source_id "${n}" \u2014 known: ${o||"(none)"}`)}if(t.mediaOf(s).format==="image")throw new w(`source "${n}" is an image \u2014 no line window (cite img#whole)`);let r=t.getNode(s)?.content?.blob,a=typeof r=="string"?X(e,r):null;if(a==null)throw new w(`source "${n}" blob is missing from the store`);return{head:s,lines:a.toString("utf8").replace(/\n$/,"").split(`
6
+ `)}}function Je(t,e,n){return t.slice(e-1,n).map((s,r)=>`${String(e+r).padStart(4,"0")}| ${s}`).join(`
7
+ `)}function Ye(t,e,n){let s=$(e,"source_id"),r=E(e,"anchor"),a=e.line_range;if(r!=null&&a!=null)throw new w("give anchor OR line_range, not both");let{head:o,lines:m}=_e(t,n,s),d=m.length,f,c;if(r!=null){let p=/^L(\d+)-L(\d+)$/.exec(r);if(!p)throw new w(`anchor "${r}" is not L<a>-L<b>`);let y=Number(p[1]),u=Number(p[2]);if(y<1||u<y||u>d)throw new w(`anchor "${r}" does not resolve (source has ${d} lines)`);f=Math.max(1,y-ue),c=Math.min(d,u+ue)}else if(a!=null){if(!Array.isArray(a)||a.length!==2||!a.every(u=>Number.isInteger(u)))throw new w('param "line_range" must be [from_line, to_line]');let[p,y]=a;if(p<1||y<p)throw new w('param "line_range" must be 1-based with from \u2264 to');if(p>d)throw new w(`line_range starts past the end (source has ${d} lines)`);f=p,c=Math.min(y,d)}else f=1,c=d;return c=Math.min(c,f+je-1),{window:Je(m,f,c),from_line:f,to_line:c,source_cid:o}}function Ze(t,e,n){let s=$(e,"pattern"),r=E(e,"source_id"),a;try{a=new RegExp(s,"u")}catch(f){throw new w(`invalid pattern: ${f instanceof Error?f.message:String(f)}`)}let o=r!=null?[r]:[...t.heads.keys()].sort(),m=[],d=!1;e:for(let f of o){if(r==null){let p=t.heads.get(f);if(typeof p!="string"||t.mediaOf(p).format==="image")continue}let{lines:c}=_e(t,n,f);for(let p=0;p<c.length;p++)if(a.test(c[p])){if(m.length>=He){d=!0;break e}m.push({source_id:f,line:p+1,text:c[p]})}}return{matches:m,truncated:d}}function qe(t,e,n,s){try{switch(e){case"get_node":return{ok:!0,result:I(t,$(n,"cid"))};case"get_edges":return{ok:!0,result:ze(t,n)};case"find_by_provenance":return{ok:!0,result:Qe(t,n)};case"match_by_type":return{ok:!0,result:Xe(t,n)};case"stale_nodes":return{ok:!0,result:Ke(t)};case"search_similar":return{ok:!0,result:We(t,n)};case"source_read":case"source_grep":{if(s==null)throw new w("source text unavailable (no context store)");return{ok:!0,result:(e==="source_read"?Ye:Ze)(t,n,s)}}default:return{ok:!1,error:`unknown method: ${e} \u2014 available: ${Ue.join(", ")}`}}}catch(r){return r instanceof w?{ok:!1,error:`${e}: ${r.message}`}:{ok:!1,error:`${e}: graph read failed: ${r instanceof Error?r.message:String(r)}`}}}var me="assurance.sim";function et(t){return[t.title,t.summary,t.description].filter(Boolean).join(`
8
+ `)}async function tt(t,e,n){let s=$(e,"text"),r=E(e,"label")??"usecase",a=N(e.k,pe,ge),o=[];for(let{cid:d,content:f}of t.byLabel(r)){if(t.superseded.has(d))continue;let c=String(f.title??""),p=String(f.summary??""),y=String(f.description??"");o.push({cid:d,title:c,summary:p,description:y,lex:he(s,c,p,y)})}let m=d=>{let f=[];for(let c of o){let p=d(c);p.score<=0||f.push({cid:c.cid,title:c.title,summary:c.summary,score:Math.round(p.score*1e3)/1e3,trust:t.trust.get(c.cid)??null,freshness:t.stale(c.cid),...p.dense!==void 0?{dense_score:Math.round(p.dense*1e3)/1e3,lexical_score:Math.round(c.lex*1e3)/1e3}:{}})}return f.sort((c,p)=>p.score-c.score||c.cid.localeCompare(p.cid)),f.slice(0,a)};try{let d=n.readVector??ce,f=n.writeVector??le,c=n.alpha??ie,{alias:p}=await n.resolveAlias(me),y=new Map,u=[],b=[];for(let h of o){let k=d(n.contextDir,p,h.cid);k?y.set(h.cid,k):(u.push(h.cid),b.push(et(h)))}let{vectors:v}=await n.embed(me,[s,...b]),A=Float32Array.from(v[0]);for(let h=0;h<u.length;h++){let k=Float32Array.from(v[h+1]);y.set(u[h],k),f(n.contextDir,p,u[h],k)}return m(h=>{let k=y.get(h.cid),x=k?re(A,k):0;return{score:se(x,h.lex,c),dense:x}})}catch{return m(d=>({score:d.lex}))}}async function ye(t,e,n,s){if(e==="search_similar"&&s)try{return{ok:!0,result:await tt(t,n,s)}}catch(r){return r instanceof w?{ok:!1,error:`${e}: ${r.message}`}:{ok:!1,error:`${e}: graph read failed: ${r instanceof Error?r.message:String(r)}`}}return qe(t,e,n,s?.contextDir)}var rt=2,we=10,st=2;function be(t,e,n){return t.map(s=>{let r=e.find(a=>a.id===s.id);return r&&r.selected_index!=null&&r.selected_index>=0&&r.selected_index<s.options.length?{id:s.id,resolution:"answered",selected_index:r.selected_index,free_text:null}: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 Tt(t,e,n,s,r=()=>{},a){let o=(i,l)=>r(i,l,t.session_id),m=(process.env.ASSURANCE_LOG_LEVEL??"info").toLowerCase()==="debug",d={contextDir:e.contextDir,resolveAlias:i=>te(i,{env:process.env,auth:e.auth}),embed:(i,l)=>ne(i,l,{env:process.env,auth:e.auth})},f=0,c=e.agent(t,{auth:e.auth,onWarn:i=>{o("warn",i),e.out(i)},onStderr:i=>o("agent_stderr",i)}),p=null,y=null,u;e.chat?.attachSender?.(i=>c.send(i)),e.initialMessage&&(c.send({type:"user_message",message_id:`msg-${t.session_id}-${nt(3).toString("hex")}`,text:e.initialMessage}),o("user_message_sent",{chars:e.initialMessage.length,...m?{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 b,v=0,A=0,h=0,k,x=K(),C=e.progress??e.out;try{for await(let i of c.events){try{e.chat?.onAgentEvent(i)}catch(l){o("chat_mirror_error",{event_type:i.type,message:l instanceof Error?l.message:String(l)})}if(i.type==="reasoning_delta"?(f+=i.text.length,process.env.KANE_TRACE_REASONING&&o("reasoning_delta",i.text)):o(i.type,i),i.type==="reasoning_done"&&o("reasoning_chars",f),i.type==="progress")C(`\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 l=x;if(x=W(x,i),x===l)continue;i.type==="reasoning_delta"?x.liveThinking===i.text&&C("\u2237 thinking\u2026"):i.type==="reasoning_done"?i.present&&(C(`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"&&(C(x.activity[x.activity.length-1].label),e.emit?.({type:"agent_activity",kind:"tool",label:x.activity[x.activity.length-1].label})):(C(`\xB7 ${x.activity[x.activity.length-1].label}`),e.emit?.({type:"agent_activity",kind:"decision",label:x.activity[x.activity.length-1].label}))}else if(i.type==="usage")k=i.total_credits,e.emit?.({type:"usage",credits:i.credits,total_credits:i.total_credits});else if(i.type==="graph_query"){let l=await ye(e.graphSlot?.current??s,i.method,i.params??{},d),S=l.ok?{type:"graph_result",id:i.id,ok:!0,result:l.result}:{type:"graph_result",id:i.id,ok:!1,error:l.error};o("graph_result",m?{id:i.id,method:i.method,ok:l.ok,result:l.ok?l.result:l.error}:{id:i.id,method:i.method,ok:l.ok}),c.send(S)}else if(i.type==="session_paused")u=i;else if(i.type==="ask_user"){i.text&&(e.chat?e.chat.ledger({kind:"agent",text:i.text}):e.out(i.text));let l=t.mode;if(l!=="interactive"){let g=i.questions.filter(_=>_.risk==="high");if(l==="ci"&&g.length>0){b=g,c.kill();break}if(l==="agent"&&g.length>0){o("pause_requested",{high:g.map(_=>_.id)}),c.send({type:"pause"});continue}let R=be(i.questions,[],{explicitAcceptDefaults:!0});v+=R.length;for(let _ of R)o("assumed_default",{id:_.id,resolution:_.resolution}),e.emit?.({type:"assumed_default",id:_.id,selected_index:_.selected_index,risk:i.questions.find(M=>M.id===_.id)?.risk});let T={type:"user_response",answers:R.map(_=>({id:_.id,selected_index:_.resolution==="deferred"?null:_.selected_index,free_text:null}))};c.send(T);continue}let S=await e.ask(i.questions),xe=be(i.questions,S,{explicitAcceptDefaults:!1}),ke={type:"user_response",answers:i.questions.map(g=>{let R=S.find(_=>_.id===g.id);if(R?.free_text!=null){let _=n.get(g.id)??0;if(!g.allow_free_text||_>=rt){let M=g.options[g.recommended_index]?.label??"recommended option";if(v+=1,e.emit?.({type:"assumed_default",id:g.id,selected_index:g.recommended_index,risk:g.risk}),e.chat?.noteCoercion)e.chat.noteCoercion(g,M);else{let L=g.text.replace(/\?+\s*$/,""),Ae=L.length<=36?L:`${L.slice(0,33)}\u2026`;e.out(`note: couldn't use a typed answer for "${Ae}" \u2014 kept the recommended option (${M})`)}return{id:g.id,selected_index:g.recommended_index,free_text:null}}return n.set(g.id,_+1),{id:g.id,selected_index:null,free_text:R.free_text}}let T=xe.find(_=>_.id===g.id);return T.resolution==="deferred"?{id:g.id,selected_index:null,free_text:null}:{id:g.id,selected_index:T.selected_index,free_text:null}})};c.send(ke)}else if(i.type==="chat_ops"&&!e.chat){let l=i.chat_ops??i,S=Array.isArray(l.ops)?l.ops.length:0;if(S===0)l.text&&e.out(l.text),c.send({type:"session_complete"}),o("headless_zero_op_chat_turn_complete",{chars:l.text?.length??0});else if(h<st)h+=1,c.send({type:"user_message",message_id:`nochat-${t.session_id}-${h}`,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:h,ops:S});else{y="agent kept sending chat ops in a mode with no chat plane",e.out("error: agent kept sending chat ops in a mode with no chat plane \u2014 closing the session"),o("headless_chat_ops_terminal",{ops:S}),c.kill();break}}else if(i.type===(a.terminalEventType??"proposal")){let l=await a.onProposalEvent(i[i.type]);if(p=l.proposal,l.error&&(y=l.error),l.receipt)e.emit?.(l.receipt.event),t.mode!=="interactive"?(A+=1,l.sessionComplete||A>=we?(l.sessionComplete||(e.out(`warning: ${we} commits without completion \u2014 closing the session (runaway guard)`),o("receipt_runaway_cap",{commits:A})),c.send({type:"session_complete"}),o("session_complete_sent",{commit_n:l.receipt.event.commit_n,runaway:!l.sessionComplete})):(c.send({type:"user_message",message_id:`receipt-${t.session_id}-${String(l.receipt.event.commit_n??0)}`,text:l.receipt.text}),o("receipt_sent",{commit_n:l.receipt.event.commit_n,chars:l.receipt.text.length}))):e.chat?.holdReceipt&&(e.chat.holdReceipt(l.receipt.text),o("receipt_held",{commit_n:l.receipt.event.commit_n}));else if(l.error&&t.mode!=="interactive"){e.out("error: commit failed with no repair channel \u2014 closing the session"),o("headless_commit_error_terminal",{error:l.error}),c.kill();break}}else if(i.type==="error"){y=i.message;let l=i.failed_proposal;l&&o("failed_proposal",l)}}}finally{c.kill()}return{proposal:p,error:y,paused:u,highRisk:b,...v>0?{assumedDefaults:v}:{},...k!==void 0?{creditsTotal:k}:{}}}var it=3,ot={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 ve(t){let{contextDir:e,graph:n,watermark:s,by:r}=t,{signals:a}=D(e,s),o=a.filter(u=>u.event_id===void 0||n.appliedEvents.has(u.event_id)),m=new Map;for(let u of o){let b=u.event_id??`${u.ts}|${u.id}|${u.verdict}|${u.polarity}`;m.has(`${b}|${u.polarity}|${u.verdict}`)||m.set(`${b}|${u.polarity}|${u.verdict}`,u)}let d=[...m.values()].sort((u,b)=>(u.event_id??u.ts)<(b.event_id??b.ts)?-1:1),f=new Map;for(let u of d){let b=`${u.verdict}|${u.tag??""}`,v=f.get(b)??{verdict:u.verdict,tag:u.tag,events:new Set};v.events.add(u.event_id??u.ts),f.set(b,v)}let c=[],p=0;for(let[,u]of[...f.entries()].sort(([b],[v])=>b<v?-1:1)){if(u.events.size<it)continue;let v={derived:!0,statement:`${u.verdict}${u.tag?`/${u.tag}`:""} recurs (${u.events.size} distinct events) \u2014 bias future proposals ${u.verdict==="approve"?"toward":"away from"} this pattern`,learned_from_kind:ot[u.verdict]??"usage",learned_from:[...u.events].sort()},A=j("stylenote",v);if(A.length>0)return{record:null,errors:A.map(k=>({code:k.code,detail:k.detail})),minted:0};let h=H("stylenote",v);n.hasNode(h)||(c.push({cid:h,label:U.STYLENOTE,content:v}),p+=1)}return c.length===0?{record:null,errors:null,minted:0}:{record:z(e,{ts:new Date().toISOString(),proposal_id:null,nodes:c,edges:[],review:[],supersessions:[],source_head_moves:{}},{expectPrev:n.latestHash}).record,errors:null,minted:p}}var at={kind:"system",id:"distiller"};function Pt(t,e=n=>process.stderr.write(n+`
9
+ `)){try{let n=Q(t),{watermark:s}=D(t),r=ve({contextDir:t,graph:n,watermark:s,by:at});if(r.errors){let a=r.errors.map(o=>`${o.code}: ${o.detail}`).join("; ");return e(`warning: style-note distill skipped \u2014 ${a}`),{minted:0,error:a}}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{lt as a,ye as b,te as c,ne as d,rt as e,be as f,Tt as g,Pt as h};
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as x}from"./chunk-EK2B2LZK.js";import{a as w}from"./chunk-YIOWO6WS.js";import{spawn as M,execSync as V}from"child_process";import{appendFileSync as T,existsSync as g,mkdirSync as k}from"fs";import{homedir as P}from"os";import{join as U,resolve as t,dirname as h}from"path";import{fileURLToPath as B}from"url";import{createInterface as L}from"readline";async function*A(n){let e=L({input:n,crlfDelay:1/0});for await(let d of e){let r=d.trim();if(r)try{let l=JSON.parse(r);l&&typeof l.type=="string"&&(yield l)}catch{}}}function N(n){return n==="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 O(n){return n?{set:{},unset:["V16_AGENT_SKIP_CP_FINAL"]}:{set:{V16_AGENT_SKIP_CP_FINAL:"true"},unset:[]}}function b(n){return n==="dom"?{set:{V16_AGENT_ENABLE_TEXTUAL_VISUAL:"true"},unset:[]}:{set:{},unset:["V16_AGENT_ENABLE_TEXTUAL_VISUAL"]}}var o=h(B(import.meta.url));function G(){for(let n of["python3","python"])try{return V(`${n} --version`,{stdio:"ignore"}),n}catch{}return null}function K(){let e=process.platform==="win32"?"v16-runner.exe":"v16-runner",d={"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"]},r=`${process.platform}-${process.arch}`,l=d[r];if(l)for(let i of l){let m=[t(o,"..","node_modules",i,"bin",e),t(o,"..","..","node_modules",i,"bin",e),t(o,"..","..","..","node_modules",i,"bin",e),t(o,"..","..","..","..","node_modules",i,"bin",e)];for(let c of m)if(g(c))return{cmd:c,args:[]}}let v=[t(o,"bin",e),t(o,"..","bin",e),t(o,"..","..","..","..","v16-runner","dist",e),t(o,"..","..","..","v16-runner","dist",e),t(o,"..","..","v16-runner","dist",e),t(process.cwd(),"v16-runner","dist",e),t(process.cwd(),"..","v16-runner","dist",e)];for(let i of v)if(g(i))return{cmd:i,args:[]};let _=[t(o,"..","..","v16-runner"),t(o,"..","..","..","..","v16-runner"),t(o,"..","..","..","v16-runner"),t(process.cwd(),"v16-runner"),t(process.cwd(),"..","v16-runner")];for(let i of _)if(g(t(i,"main.py"))){for(let c of[t(i,".venv","bin","python"),t(i,"..",".venv","bin","python"),t(i,"..","browser-agent",".venv","bin","python")])if(g(c))return{cmd:c,args:["main.py"],cwd:i};let m=G();if(m)return{cmd:m,args:["main.py"],cwd:i}}return null}function Z(n,e){let d=K();if(!d)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(d)}
2
+ import{a as x}from"./chunk-W36P7S5W.js";import{a as w}from"./chunk-DNOBOZPO.js";import{spawn as M,execSync as V}from"child_process";import{appendFileSync as T,existsSync as g,mkdirSync as k}from"fs";import{homedir as P}from"os";import{join as U,resolve as t,dirname as h}from"path";import{fileURLToPath as B}from"url";import{createInterface as L}from"readline";async function*A(n){let e=L({input:n,crlfDelay:1/0});for await(let d of e){let r=d.trim();if(r)try{let l=JSON.parse(r);l&&typeof l.type=="string"&&(yield l)}catch{}}}function N(n){return n==="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 O(n){return n?{set:{},unset:["V16_AGENT_SKIP_CP_FINAL"]}:{set:{V16_AGENT_SKIP_CP_FINAL:"true"},unset:[]}}function b(n){return n==="dom"?{set:{V16_AGENT_ENABLE_TEXTUAL_VISUAL:"true"},unset:[]}:{set:{},unset:["V16_AGENT_ENABLE_TEXTUAL_VISUAL"]}}var o=h(B(import.meta.url));function G(){for(let n of["python3","python"])try{return V(`${n} --version`,{stdio:"ignore"}),n}catch{}return null}function K(){let e=process.platform==="win32"?"v16-runner.exe":"v16-runner",d={"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"]},r=`${process.platform}-${process.arch}`,l=d[r];if(l)for(let i of l){let m=[t(o,"..","node_modules",i,"bin",e),t(o,"..","..","node_modules",i,"bin",e),t(o,"..","..","..","node_modules",i,"bin",e),t(o,"..","..","..","..","node_modules",i,"bin",e)];for(let c of m)if(g(c))return{cmd:c,args:[]}}let v=[t(o,"bin",e),t(o,"..","bin",e),t(o,"..","..","..","..","v16-runner","dist",e),t(o,"..","..","..","v16-runner","dist",e),t(o,"..","..","v16-runner","dist",e),t(process.cwd(),"v16-runner","dist",e),t(process.cwd(),"..","v16-runner","dist",e)];for(let i of v)if(g(i))return{cmd:i,args:[]};let _=[t(o,"..","..","v16-runner"),t(o,"..","..","..","..","v16-runner"),t(o,"..","..","..","v16-runner"),t(process.cwd(),"v16-runner"),t(process.cwd(),"..","v16-runner")];for(let i of _)if(g(t(i,"main.py"))){for(let c of[t(i,".venv","bin","python"),t(i,"..",".venv","bin","python"),t(i,"..","browser-agent",".venv","bin","python")])if(g(c))return{cmd:c,args:["main.py"],cwd:i};let m=G();if(m)return{cmd:m,args:["main.py"],cwd:i}}return null}function Z(n,e){let d=K();if(!d)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(d)}
3
3
  `);let r={...process.env};e?.environment&&(r.TESTMUAI_ENV=e.environment),r.TESTMUAI_SOURCE="kane-cli",process.platform==="win32"&&(r.PYTHONIOENCODING="utf-8");let l=w(e?.environment);r.V16_SERVER_API_HOST=l.v16ServerHost,r.ATMS_URL=l.tmsBaseUrl.replace(/\/api\/?$/,""),n.username&&n.access_key&&(r.LT_USERNAME=n.username,r.LT_ACCESS_KEY=n.access_key),n.session_id&&(r.TESTMUAI_SESSION_ID=n.session_id);let v=N(e?.mode??"testing");Object.assign(r,v.set);for(let s of v.unset)delete r[s];let _=new x().load(),i=b(e?.assertionMode??(_.assertion_mode==="visual"?"visual":"dom"));Object.assign(r,i.set);for(let s of i.unset)delete r[s];let m=e?.finalValidation??_.final_validation,c=O(m);Object.assign(r,c.set);for(let s of c.unset)delete r[s];let a=M(d.cmd,d.args,{stdio:["pipe","pipe","pipe"],env:r,cwd:d.cwd});a.stdin.on("error",()=>{}),a.stdin.write(JSON.stringify(n)+`
4
4
  `);let p=n.session_id?U(P(),".testmuai","kaneai","sessions",n.session_id,"runner-stderr.log"):null;if(p)try{k(h(p),{recursive:!0}),T(p,`--- runner spawn ${new Date().toISOString()} run_index=${n.run_index} ---
5
5
  `)}catch{}let E=1e5,f="";a.stderr.on("data",s=>{if(f+=s.toString(),f.length>E&&(f=f.slice(-E)),p)try{T(p,s)}catch{}}),a.on("error",s=>{e?.log?.("error","RUNNER_SPAWN_ERROR","Runner spawn error",{error:s.message})});let S=null,y=null,C=new Promise(s=>{a.on("close",(u,R)=>{S=u,y=R?String(R):null,e?.log?.("info","RUNNER_EXIT","Runner exited",{code:u,signal:y??"none"}),s({code:u,signal:y})})}),I=A(a.stdout);return{child:a,events:I,sendUserResponse(s){let u=JSON.stringify({type:"user_response",answer:s});try{a.stdin.write(u+`