@testmuai/kane-cli 0.4.5 → 0.4.7

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 (82) hide show
  1. package/dist/{ChromeProfilePicker-DHEEFWVV.js → ChromeProfilePicker-HZP2G3K4.js} +1 -1
  2. package/dist/{CliFeedbackPrompt-XVBAXCYR.js → CliFeedbackPrompt-FTEA5JNK.js} +1 -1
  3. package/dist/{CliUploadProgress-4S3BH3LI.js → CliUploadProgress-3OPVLWXH.js} +1 -1
  4. package/dist/{ConfigView-Q5NNM5T5.js → ConfigView-NMRRHEMR.js} +1 -1
  5. package/dist/FolderPicker-3YHJUXE3.js +2 -0
  6. package/dist/HelpView-RIRNOKNM.js +2 -0
  7. package/dist/{InfoBox-TBM3RTBH.js → InfoBox-AXNZSJME.js} +1 -1
  8. package/dist/{LinksBox-WRMIRJLF.js → LinksBox-PYJZFOAG.js} +1 -1
  9. package/dist/{ProfilesView-GGYBHIOM.js → ProfilesView-BVR2IFBT.js} +1 -1
  10. package/dist/{ProjectPicker-UEVYQGLY.js → ProjectPicker-3FZJ4RK3.js} +1 -1
  11. package/dist/{SaveSessionPrompt-KYL6AOGP.js → SaveSessionPrompt-INCEUNPR.js} +1 -1
  12. package/dist/SingleShotApp-QDTII55J.js +2 -0
  13. package/dist/{SummaryBox-B4QJDLQD.js → SummaryBox-FMDQB4GN.js} +1 -1
  14. package/dist/TestMdRunView-FTWVR2DR.js +2 -0
  15. package/dist/{WhoamiView-BY57RUTR.js → WhoamiView-JLEFXOHP.js} +1 -1
  16. package/dist/{changelog-OM726WGL.js → changelog-O5IX7XHA.js} +1 -1
  17. package/dist/{chunk-SNV7DD5M.js → chunk-2H3DN3F5.js} +1 -1
  18. package/dist/{chunk-5WMT2WVI.js → chunk-2TAGK72D.js} +1 -1
  19. package/dist/{chunk-EQLDX5LN.js → chunk-467Q6LTP.js} +1 -1
  20. package/dist/{chunk-LY2SBSUM.js → chunk-4DRZNE2I.js} +1 -1
  21. package/dist/{chunk-GVXJKQF7.js → chunk-5QBGINQ5.js} +1 -1
  22. package/dist/{chunk-VF6NQFGC.js → chunk-5W225L2A.js} +1 -1
  23. package/dist/{chunk-K77SVBYU.js → chunk-6F5KNQEY.js} +1 -1
  24. package/dist/{chunk-XT45Z36Q.js → chunk-7DJANARQ.js} +1 -1
  25. package/dist/{chunk-SDY6K7ZR.js → chunk-ACIVGK3W.js} +1 -1
  26. package/dist/{chunk-FTWHK7PH.js → chunk-AVEPDV55.js} +1 -1
  27. package/dist/{chunk-D3NAXZ2R.js → chunk-BH6EP2LD.js} +9 -9
  28. package/dist/{chunk-X6FNT3EY.js → chunk-DPWUXRRO.js} +1 -1
  29. package/dist/chunk-DTFX3TMY.js +27 -0
  30. package/dist/{chunk-MBK47QLD.js → chunk-GRFHOT5X.js} +1 -1
  31. package/dist/{chunk-62ZUB3DG.js → chunk-HFRJE27Y.js} +1 -1
  32. package/dist/{chunk-6XWZHEQR.js → chunk-JFSBM4Z2.js} +1 -1
  33. package/dist/{chunk-WGYUOXJX.js → chunk-JPJFIOL7.js} +1 -1
  34. package/dist/{chunk-DVRZITSK.js → chunk-JSHGADRY.js} +1 -1
  35. package/dist/{chunk-E5WH7UGU.js → chunk-KHDW3N76.js} +1 -1
  36. package/dist/{chunk-4D5Z4OAS.js → chunk-KWGOSWHO.js} +1 -1
  37. package/dist/{chunk-GG73PQBI.js → chunk-NXAP7EWY.js} +2 -2
  38. package/dist/{chunk-S6DJADYF.js → chunk-OXHG2VIS.js} +1 -1
  39. package/dist/chunk-PGBUS6CL.js +8 -0
  40. package/dist/{chunk-T4WDQ7I4.js → chunk-PGKK7FRX.js} +1 -1
  41. package/dist/{chunk-HIFHTE2F.js → chunk-PI6BJEFB.js} +2 -2
  42. package/dist/{chunk-6GWQ2RA4.js → chunk-QLSRT65Q.js} +1 -1
  43. package/dist/chunk-RJW244F2.js +5 -0
  44. package/dist/{chunk-EWID6VQA.js → chunk-SX3MRVIA.js} +1 -1
  45. package/dist/{chunk-N7OAA2OD.js → chunk-V7ONIYZZ.js} +1 -1
  46. package/dist/chunk-VVPV3NA5.js +2 -0
  47. package/dist/{chunk-4EDPYAMW.js → chunk-WJRZKLUW.js} +34 -34
  48. package/dist/{chunk-BDMQY6N6.js → chunk-XBL2ZPYQ.js} +1 -1
  49. package/dist/{chunk-7XX4XFCV.js → chunk-Y7Q7OG2K.js} +1 -1
  50. package/dist/{chunk-Q5XYITHT.js → chunk-YIZ6D6YX.js} +1 -1
  51. package/dist/chunk-YTWM34XC.js +6 -0
  52. package/dist/{chunk-F22NYY2I.js → chunk-YVYIWAPJ.js} +1 -1
  53. package/dist/{chunk-UJJX2Y5K.js → chunk-ZHQVKKQZ.js} +2 -2
  54. package/dist/{generate-headless-6SH67NQN.js → generate-headless-J2Z5B3A5.js} +2 -2
  55. package/dist/index.js +39 -39
  56. package/dist/{list-commands-4OC75YL3.js → list-commands-UD7CKE46.js} +1 -1
  57. package/dist/login-flow-MCDTID4T.js +2 -0
  58. package/dist/{persist-recorded-session-HXVQRBJV.js → persist-recorded-session-W44GRYTY.js} +1 -1
  59. package/dist/{pipeline-IXEPO6AR.js → pipeline-34CX3UBO.js} +1 -1
  60. package/dist/{recording-banner-G3BDHTZU.js → recording-banner-I7W76JOM.js} +1 -1
  61. package/dist/{require-project-folder-VSJ3UJL6.js → require-project-folder-R746X2BU.js} +1 -1
  62. package/dist/{run-test-md-JVYGWYZJ.js → run-test-md-NZ32YJC7.js} +5 -5
  63. package/dist/{skill-installer-2CMWR2TX.js → skill-installer-GXQ6LRHC.js} +1 -1
  64. package/dist/tcg-generate-74IGNDXD.js +2 -0
  65. package/dist/testmd-actions-52KGXWZI.js +2 -0
  66. package/dist/token-refresh-4XAFVTGR.js +2 -0
  67. package/dist/{validate-basic-F6DP3VUX.js → validate-basic-SYV4FFMJ.js} +1 -1
  68. package/dist/{version-check-JHH3FYZ4.js → version-check-6EDCR423.js} +1 -1
  69. package/package.json +6 -6
  70. package/dist/FolderPicker-T575L6QE.js +0 -2
  71. package/dist/HelpView-2T36LFLG.js +0 -2
  72. package/dist/SingleShotApp-DOEY5FTW.js +0 -2
  73. package/dist/TestMdRunView-J3M33BMA.js +0 -2
  74. package/dist/chunk-73TFORTS.js +0 -8
  75. package/dist/chunk-AYWWHMM7.js +0 -2
  76. package/dist/chunk-D2J4EILJ.js +0 -22
  77. package/dist/chunk-I5KH34BI.js +0 -5
  78. package/dist/chunk-K74XYWPF.js +0 -5
  79. package/dist/login-flow-GLIUZ3XD.js +0 -2
  80. package/dist/tcg-generate-JNA7RLSH.js +0 -2
  81. package/dist/testmd-actions-3YF6E3W6.js +0 -2
  82. package/dist/token-refresh-TPRQLK6B.js +0 -2
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c,d,e,f,g,h,i}from"./chunk-UJJX2Y5K.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-LOIRZFV3.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-WGYUOXJX.js";import"./chunk-5WMT2WVI.js";import"./chunk-RZ4F3BHX.js";import"./chunk-X6FNT3EY.js";import"./chunk-UR6MHSHU.js";export{d as emitNdjson,b as filterByName,g as formatAuthResolutionError,c as paginate,a as parsePagination,i as registerListCommands,e as renderTable,f as resolveTmsBasicAuth,h as validateCreateName};
2
+ import{a,b,c,d,e,f,g,h,i}from"./chunk-ZHQVKKQZ.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-LOIRZFV3.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-JPJFIOL7.js";import"./chunk-2TAGK72D.js";import"./chunk-RZ4F3BHX.js";import"./chunk-DPWUXRRO.js";import"./chunk-UR6MHSHU.js";export{d as emitNdjson,b as filterByName,g as formatAuthResolutionError,c as paginate,a as parsePagination,i as registerListCommands,e as renderTable,f as resolveTmsBasicAuth,h as validateCreateName};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a}from"./chunk-2H3DN3F5.js";import"./chunk-JPJFIOL7.js";import"./chunk-XBL2ZPYQ.js";import"./chunk-2TAGK72D.js";import"./chunk-RZ4F3BHX.js";import"./chunk-DPWUXRRO.js";import"./chunk-UR6MHSHU.js";export{a as LoginFlow};
@@ -1,3 +1,3 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as _,g as h}from"./chunk-PUU7A26K.js";import{a as m,b as I,j as S}from"./chunk-AH4AXJML.js";import"./chunk-L5LI2JF4.js";import{a as f}from"./chunk-73TFORTS.js";import"./chunk-X6FNT3EY.js";import"./chunk-UR6MHSHU.js";function y(e,d={}){e.flushRecorder();let o=e.recorder?.lastWrittenPath??null;if(!o)return e.log("info","PERSIST_SKIPPED","No recorded path \u2014 recorder.flush no-op",{reason:e.sessionName?"recorder_flush_failed":"no_session_name",session_name:e.sessionName}),null;let p;try{p=_(o)}catch(t){throw e.log("error","PERSIST_RESOLVE_FAILED","resolveTestMd threw",{error:t.message,recorded_path:o}),t}let i=e.getRunsAsStepRecords(),u=e.getFlows(),a=[],c=0;for(let t=0;t<i.length;t++){let r=i[t],l=u.slice(c,c+r.totalRunDirs);c+=r.totalRunDirs;let g=l.find(n=>n.status==="failed"||n.status==="error"),R=g?"failed":l.length===0?"skipped":"passed";a.push({rootStepIndex:t+1,status:R,duration_s:l.reduce((n,D)=>n+(D.duration??0),0),reason:g?.reason})}let P=a.some(t=>t.status==="failed")?"failed":"passed",E=new f().load().code_export?.language==="javascript"?"javascript":"python",s=I(o);e.log("info","PERSIST_START","Building staging dir",{recorded_path:o,output_dir:s,session_dir:e.sessionDir,step_count:i.length,flow_count:u.length});try{h({resolvedTest:p,sessionDir:e.sessionDir,stepRunRecords:i,outcomes:a,overallStatus:P,startedISO:e.startedAt,durationS:a.reduce((t,r)=>t+(r.duration_s??0),0),sessionId:e.sessionId,commitId:e.sessionId,tmsIds:{testId:e.testId??void 0,testcaseId:d.testcaseId,projectId:d.projectId,folderId:d.folderId,orgId:d.orgId??e.orgId??void 0,sessionName:e.sessionName??m(o)},codeExportDir:d.codeExportDir,codeExportLanguage:E}),e.log("info","PERSIST_STAGING_OK","Staging dir built",{output_dir:s}),S(s),e.log("info","PERSIST_OK","Persist complete",{output_dir:s})}catch(t){let r=t;e.log("error","PERSIST_FAILED","staging build / atomic replace failed",{error:r.message,stack:r.stack,output_dir:s}),process.stderr.write(`[persist] staging build / atomic replace failed: ${r.message}
2
+ import{a as _,g as h}from"./chunk-PUU7A26K.js";import{a as m,b as I,j as S}from"./chunk-AH4AXJML.js";import"./chunk-L5LI2JF4.js";import{a as f}from"./chunk-PGBUS6CL.js";import"./chunk-DPWUXRRO.js";import"./chunk-UR6MHSHU.js";function y(e,d={}){e.flushRecorder();let o=e.recorder?.lastWrittenPath??null;if(!o)return e.log("info","PERSIST_SKIPPED","No recorded path \u2014 recorder.flush no-op",{reason:e.sessionName?"recorder_flush_failed":"no_session_name",session_name:e.sessionName}),null;let p;try{p=_(o)}catch(t){throw e.log("error","PERSIST_RESOLVE_FAILED","resolveTestMd threw",{error:t.message,recorded_path:o}),t}let i=e.getRunsAsStepRecords(),u=e.getFlows(),a=[],c=0;for(let t=0;t<i.length;t++){let r=i[t],l=u.slice(c,c+r.totalRunDirs);c+=r.totalRunDirs;let g=l.find(n=>n.status==="failed"||n.status==="error"),R=g?"failed":l.length===0?"skipped":"passed";a.push({rootStepIndex:t+1,status:R,duration_s:l.reduce((n,D)=>n+(D.duration??0),0),reason:g?.reason})}let P=a.some(t=>t.status==="failed")?"failed":"passed",E=new f().load().code_export?.language==="javascript"?"javascript":"python",s=I(o);e.log("info","PERSIST_START","Building staging dir",{recorded_path:o,output_dir:s,session_dir:e.sessionDir,step_count:i.length,flow_count:u.length});try{h({resolvedTest:p,sessionDir:e.sessionDir,stepRunRecords:i,outcomes:a,overallStatus:P,startedISO:e.startedAt,durationS:a.reduce((t,r)=>t+(r.duration_s??0),0),sessionId:e.sessionId,commitId:e.sessionId,tmsIds:{testId:e.testId??void 0,testcaseId:d.testcaseId,projectId:d.projectId,folderId:d.folderId,orgId:d.orgId??e.orgId??void 0,sessionName:e.sessionName??m(o)},codeExportDir:d.codeExportDir,codeExportLanguage:E}),e.log("info","PERSIST_STAGING_OK","Staging dir built",{output_dir:s}),S(s),e.log("info","PERSIST_OK","Persist complete",{output_dir:s})}catch(t){let r=t;e.log("error","PERSIST_FAILED","staging build / atomic replace failed",{error:r.message,stack:r.stack,output_dir:s}),process.stderr.write(`[persist] staging build / atomic replace failed: ${r.message}
3
3
  `)}return{recordedTestPath:o,outputDir:s}}export{y as persistRecordedSession};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-D3NAXZ2R.js";import"./chunk-MDBXYXSC.js";import"./chunk-WAOCHXJ5.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-UR6MHSHU.js";export{a as UploadPipeline};
2
+ import{a}from"./chunk-BH6EP2LD.js";import"./chunk-MDBXYXSC.js";import"./chunk-WAOCHXJ5.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-UR6MHSHU.js";export{a as UploadPipeline};
@@ -1,3 +1,3 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
2
  import{a as n}from"./chunk-3MSXQU2C.js";import"./chunk-UR6MHSHU.js";function p(t){let s=t.sessionName!==null,e={type:"recording_state",enabled:!0,session_id:t.sessionId,persist:s};return t.sessionName&&(e.session_name=t.sessionName),t.testPath&&(e.test_path=t.testPath),t.outputPath&&(e.output_path=t.outputPath),e}async function g(t){if(t.isAgent){process.stdout.write(JSON.stringify(p(t))+`
3
- `);return}let s=(await import("./react-QWOAB3TB.js")).default,{render:e,useApp:a}=await import("./build-JIKYOZUH.js"),{useEffect:o}=s,{InfoBox:r}=await import("./InfoBox-TBM3RTBH.js"),u=t.sessionName?[{label:"session",value:t.sessionName},{label:"test",value:n(t.testPath??"")},{label:"output",value:n(t.outputPath??"")}]:[{label:"session",value:"ephemeral"},{label:"note",value:"use /name <name> to persist this session"}];function l(){let{exit:i}=a();return o(()=>{let c=setTimeout(()=>i(),50);return()=>clearTimeout(c)},[i]),s.createElement(r,{title:"Recording",titleColor:"#ff9500",rows:u})}await e(s.createElement(l),{stdout:process.stderr}).waitUntilExit()}export{p as buildRecordingStateEvent,g as printRecordingBanner};
3
+ `);return}let s=(await import("./react-QWOAB3TB.js")).default,{render:e,useApp:a}=await import("./build-JIKYOZUH.js"),{useEffect:o}=s,{InfoBox:r}=await import("./InfoBox-AXNZSJME.js"),u=t.sessionName?[{label:"session",value:t.sessionName},{label:"test",value:n(t.testPath??"")},{label:"output",value:n(t.outputPath??"")}]:[{label:"session",value:"ephemeral"},{label:"note",value:"use /name <name> to persist this session"}];function l(){let{exit:i}=a();return o(()=>{let c=setTimeout(()=>i(),50);return()=>clearTimeout(c)},[i]),s.createElement(r,{title:"Recording",titleColor:"#ff9500",rows:u})}await e(s.createElement(l),{stdout:process.stderr}).waitUntilExit()}export{p as buildRecordingStateEvent,g as printRecordingBanner};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{b as a,c as b,d as c,e as d,f as e,g as f}from"./chunk-DVRZITSK.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-VE3SUJMA.js";import"./chunk-5WMT2WVI.js";import"./chunk-RZ4F3BHX.js";import"./chunk-X6FNT3EY.js";import"./chunk-UR6MHSHU.js";export{d as buildAutoDefaultAnnouncement,e as buildAutoDefaultedNdjson,c as buildRemediationMessage,b as decideGateAction,a as loadCachedIds,f as requireProjectFolder};
2
+ import{b as a,c as b,d as c,e as d,f as e,g as f}from"./chunk-JSHGADRY.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-VE3SUJMA.js";import"./chunk-2TAGK72D.js";import"./chunk-RZ4F3BHX.js";import"./chunk-DPWUXRRO.js";import"./chunk-UR6MHSHU.js";export{d as buildAutoDefaultAnnouncement,e as buildAutoDefaultedNdjson,c as buildRemediationMessage,b as decideGateAction,a as loadCachedIds,f as requireProjectFolder};
@@ -1,14 +1,14 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{A as V,B as H,x as A,y as B,z as D}from"./chunk-4EDPYAMW.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-D3NAXZ2R.js";import{a as L,b as _}from"./chunk-HIFHTE2F.js";import{a as y,b as T}from"./chunk-62ZUB3DG.js";import"./chunk-MDBXYXSC.js";import"./chunk-S3DAAAE5.js";import{a as b}from"./chunk-PUU7A26K.js";import"./chunk-AH4AXJML.js";import{c as x}from"./chunk-EWID6VQA.js";import"./chunk-L5LI2JF4.js";import{a as S}from"./chunk-73TFORTS.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-K74XYWPF.js";import{d as E,e as C,f as k}from"./chunk-LOIRZFV3.js";import"./chunk-DVRZITSK.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-VE3SUJMA.js";import"./chunk-FTWHK7PH.js";import{a as h}from"./chunk-WGYUOXJX.js";import"./chunk-BDMQY6N6.js";import{a as v}from"./chunk-5WMT2WVI.js";import"./chunk-RZ4F3BHX.js";import"./chunk-E47GFYXA.js";import"./chunk-X6FNT3EY.js";import"./chunk-UR6MHSHU.js";import{resolve as K}from"path";import{existsSync as $}from"fs";function P(a){let{isAgent:o,log:i}=a,c=e=>{o&&process.stdout.write(JSON.stringify(e)+`
3
- `)};return{async runSteps(e){let{default:t}=await import("./react-QWOAB3TB.js"),{render:n}=await import("./build-JIKYOZUH.js"),{TestMdRunView:s}=await import("./TestMdRunView-J3M33BMA.js"),{ScrollbackProvider:m}=await import("./scrollback-6GINSTL2.js"),{waitUntilExit:l}=n(t.createElement(m,null,t.createElement(s,e)),{stdout:process.stderr,exitOnCtrlC:!1});await l()},async runUpload(e,t){let{renderUploadProgress:n}=await import("./CliUploadProgress-4S3BH3LI.js");return await n(e,t)},async onSummary(e){try{let{default:t}=await import("./react-QWOAB3TB.js"),{render:n}=await import("./build-JIKYOZUH.js"),{AutoExitSummaryBox:s}=await import("./SummaryBox-B4QJDLQD.js"),{waitUntilExit:m}=n(t.createElement(s,{data:e}),{stdout:process.stderr});await m()}catch(t){i("warn","TEST_MD_SUMMARY_RENDER_FAILED","Summary box render failed",{error:String(t)})}},async onLinks(e){try{let{default:t}=await import("./react-QWOAB3TB.js"),{render:n}=await import("./build-JIKYOZUH.js"),{LinksBox:s}=await import("./LinksBox-WRMIRJLF.js"),{waitUntilExit:m}=n(t.createElement(s,e),{stdout:process.stderr});await m()}catch(t){i("warn","TEST_MD_LINKS_RENDER_FAILED","LinksBox render failed",{error:String(t)})}},onLockState(e){c({type:"test_md_lock_state",...e})},onRetryAttempt(e){c({type:"test_md_retry_attempt",...e})},onAgentEvent(e){c(e)}}}function M(){return{register:(a,o)=>E(a,o),deregister:a=>C(a),cleanup:(a,o)=>k(a,o),remoteLogger:null}}async function le(a,o){let i=K(a);if(!$(i))return process.stderr.write(`error: file not found: ${i}
2
+ import{A as V,B as H,x as A,y as B,z as D}from"./chunk-WJRZKLUW.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-BH6EP2LD.js";import{a as L,b as T}from"./chunk-PI6BJEFB.js";import{a as y,b as _}from"./chunk-HFRJE27Y.js";import"./chunk-MDBXYXSC.js";import"./chunk-S3DAAAE5.js";import{a as b}from"./chunk-PUU7A26K.js";import"./chunk-AH4AXJML.js";import{c as x}from"./chunk-SX3MRVIA.js";import"./chunk-L5LI2JF4.js";import{a as S}from"./chunk-PGBUS6CL.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-RJW244F2.js";import{d as E,e as C,f as k}from"./chunk-LOIRZFV3.js";import"./chunk-JSHGADRY.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-VE3SUJMA.js";import"./chunk-AVEPDV55.js";import{a as h}from"./chunk-JPJFIOL7.js";import"./chunk-XBL2ZPYQ.js";import{a as v}from"./chunk-2TAGK72D.js";import"./chunk-RZ4F3BHX.js";import"./chunk-E47GFYXA.js";import"./chunk-DPWUXRRO.js";import"./chunk-UR6MHSHU.js";import{resolve as K}from"path";import{existsSync as $}from"fs";function P(a){let{isAgent:o,log:i}=a,c=e=>{o&&process.stdout.write(JSON.stringify(e)+`
3
+ `)};return{async runSteps(e){let{default:t}=await import("./react-QWOAB3TB.js"),{render:n}=await import("./build-JIKYOZUH.js"),{TestMdRunView:s}=await import("./TestMdRunView-FTWVR2DR.js"),{ScrollbackProvider:m}=await import("./scrollback-6GINSTL2.js"),{waitUntilExit:l}=n(t.createElement(m,null,t.createElement(s,e)),{stdout:process.stderr,exitOnCtrlC:!1});await l()},async runUpload(e,t){let{renderUploadProgress:n}=await import("./CliUploadProgress-3OPVLWXH.js");return await n(e,t)},async onSummary(e){try{let{default:t}=await import("./react-QWOAB3TB.js"),{render:n}=await import("./build-JIKYOZUH.js"),{AutoExitSummaryBox:s}=await import("./SummaryBox-FMDQB4GN.js"),{waitUntilExit:m}=n(t.createElement(s,{data:e}),{stdout:process.stderr});await m()}catch(t){i("warn","TEST_MD_SUMMARY_RENDER_FAILED","Summary box render failed",{error:String(t)})}},async onLinks(e){try{let{default:t}=await import("./react-QWOAB3TB.js"),{render:n}=await import("./build-JIKYOZUH.js"),{LinksBox:s}=await import("./LinksBox-PYJZFOAG.js"),{waitUntilExit:m}=n(t.createElement(s,e),{stdout:process.stderr});await m()}catch(t){i("warn","TEST_MD_LINKS_RENDER_FAILED","LinksBox render failed",{error:String(t)})}},onLockState(e){c({type:"test_md_lock_state",...e})},onRetryAttempt(e){c({type:"test_md_retry_attempt",...e})},onAgentEvent(e){c(e)}}}function M(){return{register:(a,o)=>E(a,o),deregister:a=>C(a),cleanup:(a,o)=>k(a,o),remoteLogger:null}}async function le(a,o){let i=K(a);if(!$(i))return process.stderr.write(`error: file not found: ${i}
4
4
  `),2;L(i);let c=!process.stdin.isTTY||!!o.agent,e=M(),t;try{t=b(i)}catch(r){return process.stderr.write(`error: ${r.message}
5
5
  `),2}if(t.steps.length===0)return process.stderr.write(`info: no steps in ${i}; nothing to run.
6
- `),0;let n;try{n=Y(o)}catch(r){if(r instanceof d)return process.stderr.write(r.message),r.exitCode;throw r}let s=new h,m=new S,l=!!(o.username&&o.accessKey);await _({isInteractive:!!process.stdin.isTTY&&!o.agent&&!l,creds:s,config:m});let j=s.getActiveProfile()??"default",u=o.env??void 0??s.getDefaultEnv()??"prod",N=v(u),F="v16-alpha",f;try{f=await T({creds:s,env:u,usernameFlag:o.username,accessKeyFlag:o.accessKey,log:()=>{}})}catch(r){return r instanceof y&&r.code==="not_authenticated"?process.stderr.write(`error: Not authenticated. Choose one:
6
+ `),0;let n;try{n=Y(o)}catch(r){if(r instanceof p)return process.stderr.write(r.message),r.exitCode;throw r}let s=new h,m=new S,l=!!(o.username&&o.accessKey);await T({isInteractive:!!process.stdin.isTTY&&!o.agent&&!l,creds:s,config:m});let j=s.getActiveProfile()??"default",u=o.env??void 0??s.getDefaultEnv()??"prod",N=v(u),F="v16-alpha",f;try{f=await _({creds:s,env:u,usernameFlag:o.username,accessKeyFlag:o.accessKey,log:()=>{}})}catch(r){return r instanceof y&&r.code==="not_authenticated"?process.stderr.write(`error: Not authenticated. Choose one:
7
7
  \u2022 Pass credentials inline: --username <user> --access-key <key>
8
8
  \u2022 Run 'kane-cli login --oauth' (browser-based)
9
9
  \u2022 Run 'kane-cli login --username <user> --access-key <key>'
10
10
  `):r instanceof y&&r.code==="refresh_failed"?process.stderr.write(`error: Token refresh failed. Run 'kane-cli login' to re-authenticate.
11
11
  `):process.stderr.write(`error: auth resolution failed: ${r.message}
12
- `),2}let w=String(f.resolvedCreds?.org_id??"");if(!w)return process.stderr.write("error: TMS did not return an org_id. Run `kane-cli login` again.\n"),2;{let{readMetaIfExists:r,assertOrgMatchOrExit:g}=await import("./testmd-actions-3YF6E3W6.js"),p=g(r(i),w);if(p!==null)return p}let R=new x,I=P({isAgent:c,log:(r,g,p,U)=>R.log(r,g,p,U)}),O={path:i,cwd:process.cwd(),opts:o,isAgent:c,disableAskUser:!process.stdin.isTTY,resolved:t,resolvedAuth:f,cliOverrides:n,environment:u,envConfig:N,profile:j,model:F,creds:s,configStore:m,session:R};try{return(await A(O,I,e)).exitCode}catch(r){return process.stderr.write(`error: ${r.message}
13
- `),2}}var d=class extends Error{constructor(i,c){super(i);this.exitCode=c;this.name="CliArgError"}};function Y(a){let o={mode:"mode",maxSteps:"max_steps",timeout:"timeout",globalContext:"global_context",localContext:"local_context",codeExport:"code_export",codeLanguage:"code_language",headless:"headless",cdpEndpoint:"cdp_endpoint",wsEndpoint:"ws_endpoint"},i=new Set(["max_steps","timeout"]),c={};for(let[e,t]of Object.entries(o)){let n=a[e];if(n===void 0||n==="")continue;let s=n;if(i.has(t)&&(s=Number(n),Number.isNaN(s))){let m="--"+e.replace(/[A-Z]/g,l=>"-"+l.toLowerCase());throw new d(`error: ${m} must be a number
12
+ `),2}let w=String(f.resolvedCreds?.org_id??"");if(!w)return process.stderr.write("error: TMS did not return an org_id. Run `kane-cli login` again.\n"),2;{let{readMetaIfExists:r,assertOrgMatchOrExit:g}=await import("./testmd-actions-52KGXWZI.js"),d=g(r(i),w);if(d!==null)return d}let R=new x,I=P({isAgent:c,log:(r,g,d,U)=>R.log(r,g,d,U)}),O={path:i,cwd:process.cwd(),opts:o,isAgent:c,disableAskUser:!process.stdin.isTTY,resolved:t,resolvedAuth:f,cliOverrides:n,environment:u,envConfig:N,profile:j,model:F,creds:s,configStore:m,session:R};try{return(await A(O,I,e)).exitCode}catch(r){return process.stderr.write(`error: ${r.message}
13
+ `),2}}var p=class extends Error{constructor(i,c){super(i);this.exitCode=c;this.name="CliArgError"}};function Y(a){let o={mode:"mode",assertionMode:"assertion_mode",maxSteps:"max_steps",timeout:"timeout",globalContext:"global_context",localContext:"local_context",codeExport:"code_export",codeLanguage:"code_language",headless:"headless",cdpEndpoint:"cdp_endpoint",wsEndpoint:"ws_endpoint"},i=new Set(["max_steps","timeout"]),c={};for(let[e,t]of Object.entries(o)){let n=a[e];if(n===void 0||n==="")continue;let s=n;if(i.has(t)&&(s=Number(n),Number.isNaN(s))){let m="--"+e.replace(/[A-Z]/g,l=>"-"+l.toLowerCase());throw new p(`error: ${m} must be a number
14
14
  `,2)}c[t]=s}return c}export{H as applyCliStepConfig,D as buildStepRunVariables,B as buildTestLevelVariables,V as replayVariablesForStep,le as runTestMdFile};
@@ -1,3 +1,3 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as p,b as g}from"./chunk-MBK47QLD.js";import{b as m}from"./chunk-E5WH7UGU.js";import"./chunk-WGYUOXJX.js";import"./chunk-5WMT2WVI.js";import{a as d}from"./chunk-RZ4F3BHX.js";import{a as f,g as a,h as u}from"./chunk-X6FNT3EY.js";import"./chunk-UR6MHSHU.js";import{mkdirSync as y,writeFileSync as w,readFileSync as S,rmSync as c,cpSync as v,createWriteStream as T,existsSync as b}from"fs";import{join as s}from"path";import{tmpdir as k}from"os";import{spawn as h}from"child_process";import{Readable as I}from"stream";import{pipeline as $}from"stream/promises";function E(t){try{return S(s(t,"VERSION"),"utf-8").trim()||null}catch{return null}}function L(t,r,l){return l?t!==r:t===null||m(t,r)>0}function C(t){let r=a.split("/").pop()??a;return`https://registry.npmjs.org/${a}/-/${r}-${t}.tgz`}var R=5e3,A=6e4;async function x(){let t=new AbortController,r=setTimeout(()=>t.abort(),R);try{let l=await d(p(),{headers:{Accept:"application/json"},signal:t.signal});if(!l.ok)throw new Error(`Controller returned ${l.status} fetching skill version map`);let i=await l.json(),n=g(i,f);if(!n)throw new Error("No compatible skill version found for this kane-cli build");return n}finally{clearTimeout(r)}}async function _(t){let r=C(t),l=new AbortController,i=setTimeout(()=>l.abort(),A);try{let n=await d(r,{headers:{Accept:"application/octet-stream"},signal:l.signal});if(!n.ok||!n.body)throw new Error(`Failed to download skill tarball (${n.status})`);let e=s(k(),`kane-cli-skill-${t}-${process.pid}.tgz`);return await $(I.fromWeb(n.body),T(e)),e}finally{clearTimeout(i)}}function M(t,r){return new Promise((l,i)=>{y(r,{recursive:!0});let n=h("tar",["-xzf",t,"-C",r,"--strip-components=2","package/skills"],{stdio:["ignore","ignore","pipe"]}),e="";n.stderr?.on("data",o=>{e+=o.toString()}),n.on("error",o=>i(o)),n.on("close",o=>{o===0?l():i(new Error(`tar exited ${o}${e?`: ${e.trim()}`:""}`))})})}async function W(t){let r;try{r=t??await x()}catch(e){return{status:"failed",version:t??"unknown",installedTargets:0,error:e instanceof Error?e.message:String(e)}}let l=u.filter(({dir:e})=>L(E(e),r,!!t));if(l.length===0)return{status:"already-installed",version:r,installedTargets:0};let i=null,n=null;try{if(n=await _(r),i=s(k(),`kane-cli-skill-${r}-stage-${process.pid}`),c(i,{recursive:!0,force:!0}),await M(n,i),!b(s(i,"SKILL.md")))throw new Error(`Unexpected skill tarball layout for v${r}: SKILL.md not at package/skills/ root`);let e=0;for(let{dir:o}of l)try{c(o,{recursive:!0,force:!0}),y(o,{recursive:!0}),v(i,o,{recursive:!0,force:!0}),w(s(o,"VERSION"),r+`
2
+ import{a as p,b as g}from"./chunk-GRFHOT5X.js";import{b as m}from"./chunk-KHDW3N76.js";import"./chunk-JPJFIOL7.js";import"./chunk-2TAGK72D.js";import{a as d}from"./chunk-RZ4F3BHX.js";import{a as f,g as a,h as u}from"./chunk-DPWUXRRO.js";import"./chunk-UR6MHSHU.js";import{mkdirSync as y,writeFileSync as w,readFileSync as S,rmSync as c,cpSync as v,createWriteStream as T,existsSync as b}from"fs";import{join as s}from"path";import{tmpdir as k}from"os";import{spawn as h}from"child_process";import{Readable as I}from"stream";import{pipeline as $}from"stream/promises";function E(t){try{return S(s(t,"VERSION"),"utf-8").trim()||null}catch{return null}}function L(t,r,l){return l?t!==r:t===null||m(t,r)>0}function C(t){let r=a.split("/").pop()??a;return`https://registry.npmjs.org/${a}/-/${r}-${t}.tgz`}var R=5e3,A=6e4;async function x(){let t=new AbortController,r=setTimeout(()=>t.abort(),R);try{let l=await d(p(),{headers:{Accept:"application/json"},signal:t.signal});if(!l.ok)throw new Error(`Controller returned ${l.status} fetching skill version map`);let i=await l.json(),n=g(i,f);if(!n)throw new Error("No compatible skill version found for this kane-cli build");return n}finally{clearTimeout(r)}}async function _(t){let r=C(t),l=new AbortController,i=setTimeout(()=>l.abort(),A);try{let n=await d(r,{headers:{Accept:"application/octet-stream"},signal:l.signal});if(!n.ok||!n.body)throw new Error(`Failed to download skill tarball (${n.status})`);let e=s(k(),`kane-cli-skill-${t}-${process.pid}.tgz`);return await $(I.fromWeb(n.body),T(e)),e}finally{clearTimeout(i)}}function M(t,r){return new Promise((l,i)=>{y(r,{recursive:!0});let n=h("tar",["-xzf",t,"-C",r,"--strip-components=2","package/skills"],{stdio:["ignore","ignore","pipe"]}),e="";n.stderr?.on("data",o=>{e+=o.toString()}),n.on("error",o=>i(o)),n.on("close",o=>{o===0?l():i(new Error(`tar exited ${o}${e?`: ${e.trim()}`:""}`))})})}async function W(t){let r;try{r=t??await x()}catch(e){return{status:"failed",version:t??"unknown",installedTargets:0,error:e instanceof Error?e.message:String(e)}}let l=u.filter(({dir:e})=>L(E(e),r,!!t));if(l.length===0)return{status:"already-installed",version:r,installedTargets:0};let i=null,n=null;try{if(n=await _(r),i=s(k(),`kane-cli-skill-${r}-stage-${process.pid}`),c(i,{recursive:!0,force:!0}),await M(n,i),!b(s(i,"SKILL.md")))throw new Error(`Unexpected skill tarball layout for v${r}: SKILL.md not at package/skills/ root`);let e=0;for(let{dir:o}of l)try{c(o,{recursive:!0,force:!0}),y(o,{recursive:!0}),v(i,o,{recursive:!0,force:!0}),w(s(o,"VERSION"),r+`
3
3
  `),e++}catch{}return e===0?{status:"failed",version:r,installedTargets:0,error:"Could not write to any agent skill directory"}:{status:"installed",version:r,installedTargets:e}}catch(e){return{status:"failed",version:r,installedTargets:0,error:e instanceof Error?e.message:String(e)}}finally{if(n)try{c(n,{force:!0})}catch{}if(i)try{c(i,{recursive:!0,force:!0})}catch{}}}function D(t){switch(t.status){case"installed":return`Installed kane-cli skill v${t.version} (${t.installedTargets}/${u.length} agent dirs). Restart your AI agent (Claude Code / Codex CLI / Gemini CLI) to load it.`;case"already-installed":return`kane-cli skill v${t.version} already installed.`;case"failed":return`Failed to install kane-cli skill: ${t.error??"unknown error"}`}}export{D as formatInstallResult,W as installSkill,L as targetNeedsInstall};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{d as a}from"./chunk-DTFX3TMY.js";import"./chunk-4DRZNE2I.js";import"./chunk-3MSXQU2C.js";import"./chunk-OXHG2VIS.js";import"./chunk-WJRZKLUW.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-BH6EP2LD.js";import"./chunk-NXAP7EWY.js";import"./chunk-PI6BJEFB.js";import"./chunk-HFRJE27Y.js";import"./chunk-MDBXYXSC.js";import"./chunk-QLSRT65Q.js";import"./chunk-S3DAAAE5.js";import"./chunk-PUU7A26K.js";import"./chunk-AH4AXJML.js";import"./chunk-ACIVGK3W.js";import"./chunk-SX3MRVIA.js";import"./chunk-L5LI2JF4.js";import"./chunk-PGBUS6CL.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-YTWM34XC.js";import"./chunk-RJW244F2.js";import"./chunk-5QBGINQ5.js";import"./chunk-JFSBM4Z2.js";import"./chunk-6F5KNQEY.js";import"./chunk-YIZ6D6YX.js";import"./chunk-467Q6LTP.js";import"./chunk-PGKK7FRX.js";import"./chunk-YCCUBQY4.js";import"./chunk-YVYIWAPJ.js";import"./chunk-LOIRZFV3.js";import"./chunk-JSHGADRY.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-VE3SUJMA.js";import"./chunk-AVEPDV55.js";import"./chunk-2H3DN3F5.js";import"./chunk-JPJFIOL7.js";import"./chunk-XBL2ZPYQ.js";import"./chunk-2TAGK72D.js";import"./chunk-RZ4F3BHX.js";import"./chunk-E47GFYXA.js";import"./chunk-Y7Q7OG2K.js";import"./chunk-VVPV3NA5.js";import{a as o}from"./chunk-C6S4IEBC.js";import"./chunk-V7ONIYZZ.js";import"./chunk-KWGOSWHO.js";import"./chunk-7DJANARQ.js";import"./chunk-DPWUXRRO.js";import{a as t}from"./chunk-HCBYKLMW.js";import{c as n}from"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import{e as r}from"./chunk-UR6MHSHU.js";var e=r(t(),1);async function p(i){let c=i.scenarioLimit!==void 0||i.perScenarioLimit!==void 0?{scenarioLimit:i.scenarioLimit,perScenarioLimit:i.perScenarioLimit}:void 0,{waitUntilExit:m}=n((0,e.jsx)(o,{children:(0,e.jsx)(a,{initialChatMode:"generate",initialObjective:i.objective,initialGenerateLimits:c})}),{exitOnCtrlC:!1});await m()}export{p as runGenerate};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{c as a,d as b,e as c,f as d,g as e,h as f,i as g,j as h,k as i,l as j,m as k}from"./chunk-NXAP7EWY.js";import"./chunk-PI6BJEFB.js";import"./chunk-HFRJE27Y.js";import"./chunk-MDBXYXSC.js";import"./chunk-AH4AXJML.js";import"./chunk-PGBUS6CL.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-YVYIWAPJ.js";import"./chunk-LOIRZFV3.js";import"./chunk-NLCCBXXV.js";import"./chunk-AVEPDV55.js";import"./chunk-JPJFIOL7.js";import"./chunk-XBL2ZPYQ.js";import"./chunk-2TAGK72D.js";import"./chunk-RZ4F3BHX.js";import"./chunk-7DJANARQ.js";import"./chunk-DPWUXRRO.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{i as ExportError,c as assertOrgMatchOrExit,j as exportTestmd,b as metaMatchesOrg,a as readMetaIfExists,d as resolveCurrentOrgId,h as runDeleteAction,k as runExportAction,e as runListAction,f as runListTui,g as runStatusAction};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a}from"./chunk-AVEPDV55.js";import"./chunk-XBL2ZPYQ.js";import"./chunk-2TAGK72D.js";import"./chunk-RZ4F3BHX.js";import"./chunk-DPWUXRRO.js";import"./chunk-UR6MHSHU.js";export{a as refreshOAuthToken};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as t}from"./chunk-5WMT2WVI.js";import"./chunk-X6FNT3EY.js";import"./chunk-UR6MHSHU.js";async function l(n,o,r){let{ControllerClient:e}=await import("./controller-client-RD2YEMAH.js");await new e(t(n).controllerBaseUrl,{username:o,accessKey:r}).getTmsCredentials()}export{l as validateBasicAuth};
2
+ import{a as t}from"./chunk-2TAGK72D.js";import"./chunk-DPWUXRRO.js";import"./chunk-UR6MHSHU.js";async function l(n,o,r){let{ControllerClient:e}=await import("./controller-client-RD2YEMAH.js");await new e(t(n).controllerBaseUrl,{username:o,accessKey:r}).getTmsCredentials()}export{l as validateBasicAuth};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c,d}from"./chunk-E5WH7UGU.js";import"./chunk-RZ4F3BHX.js";import"./chunk-X6FNT3EY.js";import"./chunk-UR6MHSHU.js";export{d as checkForUpdate,b as compareVersions,c as getSeverity,a as getUpdateCommand};
2
+ import{a,b,c,d}from"./chunk-KHDW3N76.js";import"./chunk-RZ4F3BHX.js";import"./chunk-DPWUXRRO.js";import"./chunk-UR6MHSHU.js";export{d as checkForUpdate,b as compareVersions,c as getSeverity,a as getUpdateCommand};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testmuai/kane-cli",
3
- "version": "0.4.5",
3
+ "version": "0.4.7",
4
4
  "description": "KaneAI Terminal UI — browser automation testing agent",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -24,11 +24,11 @@
24
24
  "ws": "^8.20.0"
25
25
  },
26
26
  "optionalDependencies": {
27
- "@testmuai/kane-cli-darwin-arm64": "0.4.5",
28
- "@testmuai/kane-cli-darwin-x64": "0.4.5",
29
- "@testmuai/kane-cli-linux-x64": "0.4.5",
30
- "@testmuai/kane-cli-linux-arm64": "0.4.5",
31
- "@testmuai/kane-cli-win-x64": "0.4.5",
27
+ "@testmuai/kane-cli-darwin-arm64": "0.4.7",
28
+ "@testmuai/kane-cli-darwin-x64": "0.4.7",
29
+ "@testmuai/kane-cli-linux-x64": "0.4.7",
30
+ "@testmuai/kane-cli-linux-arm64": "0.4.7",
31
+ "@testmuai/kane-cli-win-x64": "0.4.7",
32
32
  "sharp": "^0.34.5"
33
33
  },
34
34
  "publishConfig": {
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b}from"./chunk-T4WDQ7I4.js";import"./chunk-YCCUBQY4.js";import"./chunk-F22NYY2I.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-5WMT2WVI.js";import"./chunk-RZ4F3BHX.js";import"./chunk-XT45Z36Q.js";import"./chunk-X6FNT3EY.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as FolderPicker,a as formatFolderLine};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as f,b as i,x as t}from"./chunk-X6FNT3EY.js";import{a as T}from"./chunk-HCBYKLMW.js";import{a as n,b as o,j as p,k as x}from"./chunk-C44QQJR4.js";import{a as b}from"./chunk-6YGTRKDT.js";import{e as h}from"./chunk-UR6MHSHU.js";var w=h(b(),1);var e=h(T(),1),S="https://www.testmuai.com/support/docs/kane-cli-introduction",v="https://github.com/LambdaTest/kane-cli/issues";function k(){let{exit:l}=p(),{stdout:r}=x(),c=r?.columns??80;return(0,w.useEffect)(()=>{let m=setTimeout(()=>l(),50);return()=>clearTimeout(m)},[l]),(0,e.jsxs)(n,{flexDirection:"column",children:[(0,e.jsxs)(n,{paddingX:1,paddingTop:1,flexDirection:"column",children:[(0,e.jsx)(o,{color:t.orange,bold:!0,children:i}),(0,e.jsxs)(n,{children:[(0,e.jsx)(o,{color:t.dim,children:"Browser automation powered by AI "}),(0,e.jsxs)(o,{color:t.muted,children:[" v",f]})]})]}),(0,e.jsx)(o,{children:" "}),(0,e.jsxs)(d,{title:"USAGE",children:[(0,e.jsx)(g,{cmd:`${i}`,desc:"Single-shot prompt (no args, TTY)"}),(0,e.jsx)(g,{cmd:`${i} --tui`,desc:"Full interactive TUI",highlight:!0}),(0,e.jsx)(g,{cmd:`${i} run "<objective>"`,desc:"Inline objective"}),(0,e.jsx)(g,{cmd:`${i} testmd run <path>.md`,desc:"Replay a saved *_test.md file"})]}),(0,e.jsxs)(d,{title:"HELP",children:[(0,e.jsx)(g,{cmd:`${i} --help`,desc:"Show this help (long form)"}),(0,e.jsx)(g,{cmd:`${i} -h`,desc:"Show this help (short form)"}),(0,e.jsx)(g,{cmd:`${i} help`,desc:"Show this help (subcommand form)"}),(0,e.jsxs)(n,{marginLeft:2,marginTop:0,flexDirection:"column",children:[(0,e.jsxs)(o,{color:t.dim,children:["These are the only supported help invocations. Anything else (e.g. ",(0,e.jsx)(o,{color:t.orange,children:"-help"}),") is an unknown flag."]}),(0,e.jsxs)(o,{color:t.dim,children:["Terminal tab-completion is a shell feature; ",i," does not ship shell-completion scripts, so any flag your shell suggests is a generic guess \u2014 not from ",i,"."]})]})]}),(0,e.jsxs)(d,{title:"COMMANDS",children:[(0,e.jsx)(a,{cmd:"run",args:"<objective>",desc:"Run an objective (inline string)",highlight:!0}),(0,e.jsx)(a,{cmd:"testmd",args:"run|list|status|delete|export",desc:"Manage *_test.md files"}),(0,e.jsx)(a,{cmd:"login",desc:"Auth setup (interactive, --oauth, or --username)"}),(0,e.jsx)(a,{cmd:"logout",desc:"Revoke tokens + delete profile"}),(0,e.jsx)(a,{cmd:"whoami",desc:"Show authenticated identity"}),(0,e.jsx)(a,{cmd:"config",args:"show|set-\u2026|reset",desc:"Manage configuration"}),(0,e.jsx)(a,{cmd:"profiles",args:"list|switch|delete",desc:"Manage auth profiles"}),(0,e.jsx)(a,{cmd:"changelog",args:"[--all]",desc:"Show recent release notes"})]}),(0,e.jsxs)(d,{title:"TESTMD ACTIONS",children:[(0,e.jsx)(a,{cmd:"testmd run",args:"<path>",desc:"Replay a saved *_test.md file",highlight:!0}),(0,e.jsx)(a,{cmd:"testmd list",desc:"List *_test.md files in cwd (recursive)"}),(0,e.jsx)(a,{cmd:"testmd status",args:"<path>",desc:"Print local meta.json for a test"}),(0,e.jsx)(a,{cmd:"testmd delete",args:"<path>",desc:"Remove output-<stem>/ and the source file"}),(0,e.jsx)(a,{cmd:"testmd export",args:"<path> --language <py|js>",desc:"Generate standalone Playwright code"})]}),(0,e.jsxs)(d,{title:"RUN FLAGS",children:[(0,e.jsx)(s,{long:"--max-steps",arg:"<n>",desc:"Max agent steps (default: 30)"}),(0,e.jsx)(s,{long:"--timeout",arg:"<sec>",desc:"Kill run after N seconds"}),(0,e.jsx)(s,{long:"--headless",desc:"No visible browser window"}),(0,e.jsx)(s,{long:"--mode",arg:"<action|testing>",desc:"Run mode (default: testing)"}),(0,e.jsx)(s,{long:"--name",arg:"<name>",desc:"Persist session under this name"}),(0,e.jsx)(s,{long:"--variables",arg:"<json>",desc:"Inline variables as JSON"}),(0,e.jsx)(s,{long:"--variables-file",arg:"<path>",desc:"Load variables from file"}),(0,e.jsx)(s,{long:"--session-context",arg:"<json>",desc:"Prior runs context JSON"}),(0,e.jsx)(s,{long:"--global-context",arg:"<file>",desc:"Override global context markdown"}),(0,e.jsx)(s,{long:"--local-context",arg:"<file>",desc:"Override local context markdown"}),(0,e.jsx)(s,{long:"--ws-endpoint",arg:"<url>",desc:"Remote browser (LambdaTest)"}),(0,e.jsx)(s,{long:"--cdp-endpoint",arg:"<url>",desc:"Connect to existing Chrome CDP"}),(0,e.jsx)(s,{long:"--task-skills",desc:"Domain-specific task skills (experimental)"}),(0,e.jsx)(s,{long:"--code-export",desc:"Generate code export after upload"}),(0,e.jsx)(s,{long:"--code-language",arg:"<lang>",desc:"Code export language: python | javascript"}),(0,e.jsx)(s,{long:"--skip-code-validation",desc:"Skip post-codegen validation"}),(0,e.jsx)(s,{long:"--username",arg:"<user>",desc:"Basic auth (skip OAuth)"}),(0,e.jsx)(s,{long:"--access-key",arg:"<key>",desc:"Basic auth access key"}),(0,e.jsx)(s,{long:"--env",arg:"<name>",desc:"Environment (prod or stage)"}),(0,e.jsx)(s,{long:"--agent",desc:"NDJSON output (no UI)",highlight:!0})]}),(0,e.jsxs)(d,{title:"EXAMPLES",children:[(0,e.jsx)(u,{label:"Inline objective",cmd:`${i} run "Search for laptop"`}),(0,e.jsx)(u,{label:"Replay a saved test",cmd:`${i} testmd run smoke_test.md`}),(0,e.jsx)(u,{label:"Variables",cmd:`${i} run "Login as {{user}}" --variables '{"user":{"value":"alice"}}'`}),(0,e.jsx)(u,{label:"Agent mode (NDJSON)",cmd:`${i} run "Add to cart" --agent | jq .status`})]}),(0,e.jsx)(d,{title:"TEST FILES",children:(0,e.jsxs)(n,{marginLeft:2,flexDirection:"column",children:[(0,e.jsxs)(o,{color:t.dim,children:[(0,e.jsx)(o,{color:t.orange,children:"*_test.md"})," \u2014 markdown test files with YAML frontmatter and ",(0,e.jsx)(o,{color:t.orange,children:"## "}),"step headings."]}),(0,e.jsxs)(o,{color:t.dim,children:["Run with ",(0,e.jsxs)(o,{color:t.orange,children:[i," testmd run path/to/foo_test.md"]}),". (`.md` paths are not accepted by `",i," run`.)"]}),(0,e.jsxs)(o,{color:t.dim,children:["Sessions you run in TUI auto-save to ",(0,e.jsx)(o,{color:t.orange,children:"<cwd>/.testmuai/tests/<name>_test.md"})," (testing mode prompts on exit)."]})]})}),(0,e.jsxs)(n,{flexDirection:"column",marginTop:0,paddingX:1,children:[(0,e.jsx)(o,{color:t.muted,children:"\u2500".repeat(Math.min(c-2,70))}),(0,e.jsxs)(n,{gap:3,children:[(0,e.jsxs)(n,{children:[(0,e.jsx)(o,{color:t.dim,children:"Docs "}),(0,e.jsx)(o,{color:t.orange,underline:!0,children:S})]}),(0,e.jsxs)(n,{children:[(0,e.jsx)(o,{color:t.dim,children:"Bugs "}),(0,e.jsx)(o,{color:t.orange,underline:!0,children:v})]})]})]}),(0,e.jsx)(o,{children:" "})]})}function d({title:l,children:r}){return(0,e.jsxs)(n,{flexDirection:"column",marginBottom:1,children:[(0,e.jsx)(n,{marginLeft:1,children:(0,e.jsx)(o,{bold:!0,color:t.dim,children:l})}),r]})}function g({cmd:l,desc:r,highlight:c}){return(0,e.jsxs)(n,{marginLeft:2,children:[(0,e.jsxs)(n,{width:40,children:[(0,e.jsx)(o,{color:t.dim,children:"$ "}),(0,e.jsx)(o,{color:c?t.orange:t.orange,children:l})]}),(0,e.jsx)(o,{color:t.dim,children:r})]})}function a({cmd:l,args:r,desc:c,highlight:m}){return(0,e.jsxs)(n,{marginLeft:2,children:[(0,e.jsx)(n,{width:16,children:(0,e.jsx)(o,{color:m?t.orange:t.green,bold:!0,children:l})}),(0,e.jsx)(n,{width:32,children:r?(0,e.jsx)(o,{color:t.dim,children:r}):null}),(0,e.jsx)(o,{color:t.dim,children:c})]})}function s({long:l,arg:r,desc:c,highlight:m}){return(0,e.jsxs)(n,{marginLeft:2,children:[(0,e.jsxs)(n,{width:30,children:[(0,e.jsx)(o,{color:m?t.orange:t.orange,children:l}),r&&(0,e.jsxs)(o,{color:t.dim,children:[" ",r]})]}),(0,e.jsx)(o,{color:t.dim,children:c})]})}function u({label:l,cmd:r}){return(0,e.jsxs)(n,{marginLeft:2,flexDirection:"column",children:[(0,e.jsxs)(o,{color:t.dim,children:["# ",l]}),(0,e.jsxs)(o,{color:t.orange,children:["$ ",r]})]})}export{k as HelpView};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-VF6NQFGC.js";import"./chunk-SDY6K7ZR.js";import"./chunk-EWID6VQA.js";import"./chunk-L5LI2JF4.js";import"./chunk-73TFORTS.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-EQLDX5LN.js";import"./chunk-T4WDQ7I4.js";import"./chunk-YCCUBQY4.js";import"./chunk-F22NYY2I.js";import"./chunk-LOIRZFV3.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-VE3SUJMA.js";import"./chunk-WGYUOXJX.js";import"./chunk-BDMQY6N6.js";import"./chunk-5WMT2WVI.js";import"./chunk-RZ4F3BHX.js";import"./chunk-XT45Z36Q.js";import"./chunk-X6FNT3EY.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as SingleShotApp};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{h as a}from"./chunk-I5KH34BI.js";import"./chunk-K74XYWPF.js";import"./chunk-6XWZHEQR.js";import"./chunk-LOIRZFV3.js";import"./chunk-5WMT2WVI.js";import"./chunk-7XX4XFCV.js";import"./chunk-AYWWHMM7.js";import"./chunk-C6S4IEBC.js";import"./chunk-X6FNT3EY.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as TestMdRunView};
@@ -1,8 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{d as s,j as l}from"./chunk-X6FNT3EY.js";import{readFileSync as d,writeFileSync as i,mkdirSync as o,existsSync as p}from"fs";import{dirname as a}from"path";var n={window_size:{width:1920,height:1080},chrome_profile_path:"",default_url:l,model:"v16-alpha",project_id:null,project_name:null,folder_id:null,folder_name:null,mode:"testing",code_export:{enabled:!0,language:"python",skip_validation:!0},generate:{scenario_limit:2,per_scenario_limit:3,memory_enabled:!1},last_seen_version:"",hints_enabled:!0},c=class{constructor(r=s){this.path=r}exists(){return p(this.path)}load(){try{let r=d(this.path,"utf-8"),e=JSON.parse(r);return{...n,...e,code_export:{...n.code_export,...e.code_export??{}},generate:{...n.generate,...e.generate??{}}}}catch{return{...n,code_export:{...n.code_export},generate:{...n.generate}}}}set(r,e){try{let t=this.load();t[r]=e,o(a(this.path),{recursive:!0}),i(this.path,JSON.stringify(t,null,2)+`
3
- `)}catch(t){let g=t instanceof Error?t.message:String(t);process.stderr.write(`[config] Failed to save config: ${g}
4
- `)}}save(r){try{let t={...this.load(),...r};o(a(this.path),{recursive:!0}),i(this.path,JSON.stringify(t,null,2)+`
5
- `)}catch(e){let t=e instanceof Error?e.message:String(e);process.stderr.write(`[config] Failed to save config: ${t}
6
- `)}}writeRaw(r){try{o(a(this.path),{recursive:!0}),i(this.path,JSON.stringify(r,null,2)+`
7
- `)}catch(e){let t=e instanceof Error?e.message:String(e);process.stderr.write(`[config] Failed to save config: ${t}
8
- `)}}};export{c as a};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{x as e}from"./chunk-X6FNT3EY.js";import{a as m}from"./chunk-HCBYKLMW.js";import{a as r,b as i}from"./chunk-C44QQJR4.js";import{e as d}from"./chunk-UR6MHSHU.js";var o=d(m(),1),s={default:e.muted,error:e.red,success:e.green,info:e.orange,warning:e.orange};function T({title:t,titleColor:a,borderColor:l,variant:n="default",children:c,width:u,paddingX:g=2,paddingY:x=0,marginBottom:f=0}){let p=l??s[n],B=a??(n==="default"?e.orange:s[n]);return(0,o.jsxs)(r,{flexDirection:"column",marginBottom:f,children:[t&&(0,o.jsx)(r,{marginBottom:0,children:(0,o.jsxs)(i,{color:B,bold:!0,children:[" ",t]})}),(0,o.jsx)(r,{borderStyle:"round",borderColor:p,flexDirection:"column",paddingX:g,paddingY:x,width:u,children:c})]})}function h({label:t,value:a,labelColor:l=e.dim,valueColor:n,labelWidth:c=14}){return(0,o.jsxs)(r,{children:[(0,o.jsx)(r,{width:c,children:(0,o.jsx)(i,{color:l,children:t})}),(0,o.jsx)(i,{color:n,children:a})]})}function C({label:t}){return(0,o.jsx)(r,{marginTop:1,marginBottom:0,children:(0,o.jsx)(i,{bold:!0,children:t})})}export{T as a,h as b,C as c};