@testmuai/kane-cli 0.4.7 → 0.4.9

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 (77) hide show
  1. package/dist/{ChromeProfilePicker-HZP2G3K4.js → ChromeProfilePicker-BOTCHMXH.js} +1 -1
  2. package/dist/{CliFeedbackPrompt-FTEA5JNK.js → CliFeedbackPrompt-BV4VVYOY.js} +1 -1
  3. package/dist/{CliUploadProgress-3OPVLWXH.js → CliUploadProgress-Y4H43W5T.js} +1 -1
  4. package/dist/{ConfigView-NMRRHEMR.js → ConfigView-JPBD47MS.js} +1 -1
  5. package/dist/FolderPicker-M4RFRBYV.js +2 -0
  6. package/dist/{HelpView-RIRNOKNM.js → HelpView-ZZYE2TKZ.js} +1 -1
  7. package/dist/{InfoBox-AXNZSJME.js → InfoBox-3ZLQZGUE.js} +1 -1
  8. package/dist/{LinksBox-PYJZFOAG.js → LinksBox-UYMOQGSW.js} +1 -1
  9. package/dist/{ProfilesView-BVR2IFBT.js → ProfilesView-YUMYSOZ4.js} +1 -1
  10. package/dist/{ProjectPicker-3FZJ4RK3.js → ProjectPicker-CJVGBY42.js} +1 -1
  11. package/dist/{SaveSessionPrompt-INCEUNPR.js → SaveSessionPrompt-DFVUWTOK.js} +1 -1
  12. package/dist/SingleShotApp-IOEEYVGJ.js +2 -0
  13. package/dist/{SummaryBox-FMDQB4GN.js → SummaryBox-3VIRYWQA.js} +1 -1
  14. package/dist/TestMdRunView-MRSDDMSF.js +2 -0
  15. package/dist/{WhoamiView-JLEFXOHP.js → WhoamiView-GMM4V7ZV.js} +1 -1
  16. package/dist/{changelog-O5IX7XHA.js → changelog-FNJ4P2IF.js} +1 -1
  17. package/dist/{chunk-YVYIWAPJ.js → chunk-2J3VB6DW.js} +1 -1
  18. package/dist/{chunk-DPWUXRRO.js → chunk-3UCNDPTN.js} +1 -1
  19. package/dist/{chunk-GRFHOT5X.js → chunk-42WWGBRK.js} +1 -1
  20. package/dist/{chunk-ZHQVKKQZ.js → chunk-6PBX7QI7.js} +2 -2
  21. package/dist/chunk-7N5H4KTV.js +5 -0
  22. package/dist/{chunk-KWGOSWHO.js → chunk-7NTOV5DV.js} +1 -1
  23. package/dist/{chunk-QLSRT65Q.js → chunk-AH36DUIX.js} +1 -1
  24. package/dist/{chunk-YIZ6D6YX.js → chunk-CLRWPXDJ.js} +1 -1
  25. package/dist/{chunk-6F5KNQEY.js → chunk-CY4HAOSP.js} +1 -1
  26. package/dist/{chunk-ACIVGK3W.js → chunk-DKGNV3VP.js} +1 -1
  27. package/dist/{chunk-SX3MRVIA.js → chunk-DXJ5FL25.js} +1 -1
  28. package/dist/{chunk-AVEPDV55.js → chunk-FN6ZRV4C.js} +1 -1
  29. package/dist/{chunk-HFRJE27Y.js → chunk-FTMJTGT4.js} +1 -1
  30. package/dist/{chunk-7DJANARQ.js → chunk-GBTPZGJB.js} +1 -1
  31. package/dist/{chunk-2TAGK72D.js → chunk-HPJP7NES.js} +1 -1
  32. package/dist/{chunk-5QBGINQ5.js → chunk-HYOST7EA.js} +1 -1
  33. package/dist/{chunk-OXHG2VIS.js → chunk-IO3PBDKN.js} +1 -1
  34. package/dist/{chunk-5W225L2A.js → chunk-JBOXYLDH.js} +1 -1
  35. package/dist/{chunk-Y7Q7OG2K.js → chunk-JHSSBES2.js} +1 -1
  36. package/dist/{chunk-PI6BJEFB.js → chunk-JO3QZB6D.js} +2 -2
  37. package/dist/{chunk-4DRZNE2I.js → chunk-JQXARCVE.js} +1 -1
  38. package/dist/{chunk-PGKK7FRX.js → chunk-KLVCLGHX.js} +1 -1
  39. package/dist/{chunk-JSHGADRY.js → chunk-LJDFBQFR.js} +1 -1
  40. package/dist/{chunk-JPJFIOL7.js → chunk-LZUTY7XS.js} +1 -1
  41. package/dist/{chunk-JFSBM4Z2.js → chunk-MUZCEGJD.js} +1 -1
  42. package/dist/chunk-QMAHNXS6.js +8 -0
  43. package/dist/{chunk-WJRZKLUW.js → chunk-QW5G7TX3.js} +3 -3
  44. package/dist/{chunk-XBL2ZPYQ.js → chunk-RJFHOZG6.js} +1 -1
  45. package/dist/{chunk-YTWM34XC.js → chunk-SEU6OXMD.js} +1 -1
  46. package/dist/{chunk-VVPV3NA5.js → chunk-UJDIXFEE.js} +1 -1
  47. package/dist/{chunk-2H3DN3F5.js → chunk-UVBE3JJV.js} +1 -1
  48. package/dist/{chunk-KHDW3N76.js → chunk-VSJAOEBB.js} +1 -1
  49. package/dist/{chunk-467Q6LTP.js → chunk-WEPNJVBA.js} +1 -1
  50. package/dist/{chunk-V7ONIYZZ.js → chunk-WKJY6TRR.js} +1 -1
  51. package/dist/chunk-XA7UFTB7.js +27 -0
  52. package/dist/{chunk-NXAP7EWY.js → chunk-YK63DTUC.js} +2 -2
  53. package/dist/{generate-headless-J2Z5B3A5.js → generate-headless-ZRRQT56R.js} +2 -2
  54. package/dist/index.js +33 -33
  55. package/dist/{list-commands-UD7CKE46.js → list-commands-M3JL6XBB.js} +1 -1
  56. package/dist/login-flow-DOAIDKIV.js +2 -0
  57. package/dist/{persist-recorded-session-W44GRYTY.js → persist-recorded-session-3I4KMEXA.js} +1 -1
  58. package/dist/{recording-banner-I7W76JOM.js → recording-banner-P6EKDS2Y.js} +1 -1
  59. package/dist/{require-project-folder-R746X2BU.js → require-project-folder-SEMMD3EG.js} +1 -1
  60. package/dist/{run-test-md-NZ32YJC7.js → run-test-md-PXG4RFDI.js} +3 -3
  61. package/dist/{skill-installer-GXQ6LRHC.js → skill-installer-SU52XOIT.js} +1 -1
  62. package/dist/tcg-generate-5T6S2E7L.js +2 -0
  63. package/dist/testmd-actions-N7VS4FS6.js +2 -0
  64. package/dist/token-refresh-LSHPT46T.js +2 -0
  65. package/dist/{validate-basic-SYV4FFMJ.js → validate-basic-EKSOPOMF.js} +1 -1
  66. package/dist/{version-check-6EDCR423.js → version-check-4K4JHG7B.js} +1 -1
  67. package/package.json +6 -6
  68. package/dist/FolderPicker-3YHJUXE3.js +0 -2
  69. package/dist/SingleShotApp-QDTII55J.js +0 -2
  70. package/dist/TestMdRunView-FTWVR2DR.js +0 -2
  71. package/dist/chunk-DTFX3TMY.js +0 -27
  72. package/dist/chunk-PGBUS6CL.js +0 -8
  73. package/dist/chunk-RJW244F2.js +0 -5
  74. package/dist/login-flow-MCDTID4T.js +0 -2
  75. package/dist/tcg-generate-74IGNDXD.js +0 -2
  76. package/dist/testmd-actions-52KGXWZI.js +0 -2
  77. package/dist/token-refresh-4XAFVTGR.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-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};
2
+ import{a,b,c,d,e,f,g,h,i}from"./chunk-6PBX7QI7.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-LOIRZFV3.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-LZUTY7XS.js";import"./chunk-HPJP7NES.js";import"./chunk-RZ4F3BHX.js";import"./chunk-3UCNDPTN.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-UVBE3JJV.js";import"./chunk-LZUTY7XS.js";import"./chunk-RJFHOZG6.js";import"./chunk-HPJP7NES.js";import"./chunk-RZ4F3BHX.js";import"./chunk-3UCNDPTN.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-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}
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-QMAHNXS6.js";import"./chunk-3UCNDPTN.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,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-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};
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-3ZLQZGUE.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-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};
2
+ import{b as a,c as b,d as c,e as d,f as e,g as f}from"./chunk-LJDFBQFR.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-VE3SUJMA.js";import"./chunk-HPJP7NES.js";import"./chunk-RZ4F3BHX.js";import"./chunk-3UCNDPTN.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,6 +1,6 @@
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-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}
2
+ import{A as V,B as H,x as A,y as B,z as D}from"./chunk-QW5G7TX3.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-BH6EP2LD.js";import{a as L,b as T}from"./chunk-JO3QZB6D.js";import{a as y,b as _}from"./chunk-FTMJTGT4.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-DXJ5FL25.js";import"./chunk-L5LI2JF4.js";import{a as S}from"./chunk-QMAHNXS6.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-7N5H4KTV.js";import{d as E,e as C,f as k}from"./chunk-LOIRZFV3.js";import"./chunk-LJDFBQFR.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-VE3SUJMA.js";import"./chunk-FN6ZRV4C.js";import{a as h}from"./chunk-LZUTY7XS.js";import"./chunk-RJFHOZG6.js";import{a as v}from"./chunk-HPJP7NES.js";import"./chunk-RZ4F3BHX.js";import"./chunk-E47GFYXA.js";import"./chunk-3UCNDPTN.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-MRSDDMSF.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-Y4H43W5T.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-3VIRYWQA.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-UYMOQGSW.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
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:
@@ -9,6 +9,6 @@ import{A as V,B as H,x as A,y as B,z as D}from"./chunk-WJRZKLUW.js";import"./chu
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-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}
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-N7VS4FS6.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
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-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+`
2
+ import{a as p,b as g}from"./chunk-42WWGBRK.js";import{b as m}from"./chunk-VSJAOEBB.js";import"./chunk-LZUTY7XS.js";import"./chunk-HPJP7NES.js";import{a as d}from"./chunk-RZ4F3BHX.js";import{a as f,g as a,h as u}from"./chunk-3UCNDPTN.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-XA7UFTB7.js";import"./chunk-JQXARCVE.js";import"./chunk-3MSXQU2C.js";import"./chunk-IO3PBDKN.js";import"./chunk-QW5G7TX3.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-BH6EP2LD.js";import"./chunk-YK63DTUC.js";import"./chunk-JO3QZB6D.js";import"./chunk-FTMJTGT4.js";import"./chunk-MDBXYXSC.js";import"./chunk-AH36DUIX.js";import"./chunk-S3DAAAE5.js";import"./chunk-PUU7A26K.js";import"./chunk-AH4AXJML.js";import"./chunk-DKGNV3VP.js";import"./chunk-DXJ5FL25.js";import"./chunk-L5LI2JF4.js";import"./chunk-QMAHNXS6.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-SEU6OXMD.js";import"./chunk-7N5H4KTV.js";import"./chunk-HYOST7EA.js";import"./chunk-MUZCEGJD.js";import"./chunk-CY4HAOSP.js";import"./chunk-CLRWPXDJ.js";import"./chunk-WEPNJVBA.js";import"./chunk-KLVCLGHX.js";import"./chunk-YCCUBQY4.js";import"./chunk-2J3VB6DW.js";import"./chunk-LOIRZFV3.js";import"./chunk-LJDFBQFR.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-VE3SUJMA.js";import"./chunk-FN6ZRV4C.js";import"./chunk-UVBE3JJV.js";import"./chunk-LZUTY7XS.js";import"./chunk-RJFHOZG6.js";import"./chunk-HPJP7NES.js";import"./chunk-RZ4F3BHX.js";import"./chunk-E47GFYXA.js";import"./chunk-JHSSBES2.js";import"./chunk-UJDIXFEE.js";import{a as o}from"./chunk-C6S4IEBC.js";import"./chunk-WKJY6TRR.js";import"./chunk-7NTOV5DV.js";import"./chunk-GBTPZGJB.js";import"./chunk-3UCNDPTN.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-YK63DTUC.js";import"./chunk-JO3QZB6D.js";import"./chunk-FTMJTGT4.js";import"./chunk-MDBXYXSC.js";import"./chunk-AH4AXJML.js";import"./chunk-QMAHNXS6.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-2J3VB6DW.js";import"./chunk-LOIRZFV3.js";import"./chunk-NLCCBXXV.js";import"./chunk-FN6ZRV4C.js";import"./chunk-LZUTY7XS.js";import"./chunk-RJFHOZG6.js";import"./chunk-HPJP7NES.js";import"./chunk-RZ4F3BHX.js";import"./chunk-GBTPZGJB.js";import"./chunk-3UCNDPTN.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-FN6ZRV4C.js";import"./chunk-RJFHOZG6.js";import"./chunk-HPJP7NES.js";import"./chunk-RZ4F3BHX.js";import"./chunk-3UCNDPTN.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-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};
2
+ import{a as t}from"./chunk-HPJP7NES.js";import"./chunk-3UCNDPTN.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-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};
2
+ import{a,b,c,d}from"./chunk-VSJAOEBB.js";import"./chunk-RZ4F3BHX.js";import"./chunk-3UCNDPTN.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.7",
3
+ "version": "0.4.9",
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.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",
27
+ "@testmuai/kane-cli-darwin-arm64": "0.4.9",
28
+ "@testmuai/kane-cli-darwin-x64": "0.4.9",
29
+ "@testmuai/kane-cli-linux-x64": "0.4.9",
30
+ "@testmuai/kane-cli-linux-arm64": "0.4.9",
31
+ "@testmuai/kane-cli-win-x64": "0.4.9",
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-PGKK7FRX.js";import"./chunk-YCCUBQY4.js";import"./chunk-YVYIWAPJ.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.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{b as FolderPicker,a as formatFolderLine};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-5W225L2A.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-467Q6LTP.js";import"./chunk-PGKK7FRX.js";import"./chunk-YCCUBQY4.js";import"./chunk-YVYIWAPJ.js";import"./chunk-LOIRZFV3.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-VE3SUJMA.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{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-YTWM34XC.js";import"./chunk-RJW244F2.js";import"./chunk-JFSBM4Z2.js";import"./chunk-LOIRZFV3.js";import"./chunk-2TAGK72D.js";import"./chunk-Y7Q7OG2K.js";import"./chunk-VVPV3NA5.js";import"./chunk-C6S4IEBC.js";import"./chunk-DPWUXRRO.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as TestMdRunView};