@testmuai/kane-cli 0.3.4 → 0.3.6

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 (78) hide show
  1. package/dist/{ChromeProfilePicker-DLK4RTFZ.js → ChromeProfilePicker-H4OBHZ2O.js} +1 -1
  2. package/dist/{CliFeedbackPrompt-HNB4SHPG.js → CliFeedbackPrompt-TVXNCWLX.js} +1 -1
  3. package/dist/{CliUploadProgress-6KB7IKFV.js → CliUploadProgress-Z3FSUSUL.js} +1 -1
  4. package/dist/{ConfigView-LMW2B764.js → ConfigView-3YAJ7ILS.js} +1 -1
  5. package/dist/FolderPicker-WFGOWR2V.js +2 -0
  6. package/dist/{HelpView-6HAZNUNN.js → HelpView-7LKN3TJT.js} +1 -1
  7. package/dist/{InfoBox-6OL6MFL6.js → InfoBox-57AAACTY.js} +1 -1
  8. package/dist/{LinksBox-Q6L6WY53.js → LinksBox-LGB3H7NO.js} +1 -1
  9. package/dist/{ProfilesView-ERKUUJWU.js → ProfilesView-4Z3QHZOC.js} +1 -1
  10. package/dist/ProjectPicker-EXI7U76F.js +2 -0
  11. package/dist/{SaveSessionPrompt-GKITQ3KR.js → SaveSessionPrompt-OUXIE3TS.js} +1 -1
  12. package/dist/SingleShotApp-HOPZGLDV.js +2 -0
  13. package/dist/{SummaryBox-MB2JQIXZ.js → SummaryBox-63JMAMEH.js} +1 -1
  14. package/dist/{TestMdRunView-UMTYIRAE.js → TestMdRunView-5NGUC56R.js} +1 -1
  15. package/dist/{WhoamiView-UF5WWELM.js → WhoamiView-ROUT7L3F.js} +1 -1
  16. package/dist/{changelog-JFMKP277.js → changelog-HFYALWQT.js} +1 -1
  17. package/dist/{chunk-TI5CHPPN.js → chunk-2IAYS2ZB.js} +1 -1
  18. package/dist/{chunk-MIZDUPND.js → chunk-67BQCZWE.js} +1 -1
  19. package/dist/{chunk-6566EYUL.js → chunk-6EZHIVLZ.js} +1 -1
  20. package/dist/{chunk-PQLKQKQH.js → chunk-6ISGQNS2.js} +1 -1
  21. package/dist/{chunk-LIJX5PIV.js → chunk-7CLUJYMW.js} +1 -1
  22. package/dist/{chunk-LT4VR7MQ.js → chunk-7DDXXT4W.js} +2 -2
  23. package/dist/{chunk-VKPAHDXM.js → chunk-7F4LHGTO.js} +1 -1
  24. package/dist/{chunk-BNLJNHAZ.js → chunk-7QXTYKSW.js} +1 -1
  25. package/dist/chunk-BPF7TDRU.js +2 -0
  26. package/dist/{chunk-ND5EFB3C.js → chunk-DKHTWC7S.js} +1 -1
  27. package/dist/{chunk-FOT6AMNP.js → chunk-DTQJGYDA.js} +1 -1
  28. package/dist/{chunk-OFX2RC33.js → chunk-DY2ZW7XX.js} +1 -1
  29. package/dist/{chunk-535PXOLA.js → chunk-EMWJ6YF6.js} +1 -1
  30. package/dist/{chunk-RHLK4XYO.js → chunk-FITKUFJG.js} +1 -1
  31. package/dist/chunk-FVOT76XR.js +13 -0
  32. package/dist/chunk-GPR5DODR.js +5 -0
  33. package/dist/{chunk-FOMM3MYV.js → chunk-I3AGHICC.js} +1 -1
  34. package/dist/{chunk-EJR3WRTW.js → chunk-IXNVLVFT.js} +1 -1
  35. package/dist/{chunk-TXUKXLYR.js → chunk-LZX6NTDJ.js} +1 -1
  36. package/dist/{chunk-KKZRPFWO.js → chunk-NLCCBXXV.js} +1 -1
  37. package/dist/{chunk-6JONCMIS.js → chunk-NLP4UA2F.js} +1 -1
  38. package/dist/{chunk-LJA5UGU6.js → chunk-NVUVNXTE.js} +1 -1
  39. package/dist/{chunk-ZYJ4HQAI.js → chunk-OOKRZUN4.js} +1 -1
  40. package/dist/{chunk-ZCHXYZGV.js → chunk-RSXBXGXL.js} +1 -1
  41. package/dist/chunk-RZ4F3BHX.js +3 -0
  42. package/dist/{chunk-VZIBZDS2.js → chunk-SLGV3RDD.js} +1 -1
  43. package/dist/{chunk-CBDUXGVQ.js → chunk-TC74YD2D.js} +1 -1
  44. package/dist/{chunk-KA23QNUA.js → chunk-TQAOXA7C.js} +1 -1
  45. package/dist/{chunk-V7M72PLH.js → chunk-VUIXILBR.js} +11 -11
  46. package/dist/chunk-WAOCHXJ5.js +2 -0
  47. package/dist/{chunk-T3JEMMTA.js → chunk-X6XWDJ5U.js} +1 -1
  48. package/dist/{chunk-YEV3OBEO.js → chunk-XR6QKTHK.js} +1 -1
  49. package/dist/controller-client-RD2YEMAH.js +2 -0
  50. package/dist/index.js +35 -35
  51. package/dist/login-flow-VJWYUHU3.js +2 -0
  52. package/dist/{persist-recorded-session-CDT2I4SH.js → persist-recorded-session-A2KBQ5MZ.js} +1 -1
  53. package/dist/pipeline-L3VM7QEX.js +2 -0
  54. package/dist/{recording-banner-YFDZ6CJ4.js → recording-banner-ZRJAZLAK.js} +1 -1
  55. package/dist/{resolver-F6HCOZOX.js → resolver-OA35IO7J.js} +1 -1
  56. package/dist/run-test-md-E2K4GEOB.js +64 -0
  57. package/dist/{testmd-actions-D3TJX2Q4.js → testmd-actions-AUBFHDIP.js} +2 -2
  58. package/dist/tms-client-R5ZIAOBH.js +2 -0
  59. package/dist/{validate-basic-LTATIAAW.js → validate-basic-XCW5LHJF.js} +1 -1
  60. package/dist/{version-check-Q6M7YAML.js → version-check-MK3U56PI.js} +1 -1
  61. package/package.json +5 -5
  62. package/dist/FolderPicker-JBOPRMPT.js +0 -2
  63. package/dist/ProjectPicker-Y4AXSEVW.js +0 -2
  64. package/dist/SingleShotApp-MKACYNG2.js +0 -2
  65. package/dist/chunk-ANOIEEVS.js +0 -13
  66. package/dist/chunk-CB4WEGVB.js +0 -5
  67. package/dist/chunk-GCAHPH2E.js +0 -2
  68. package/dist/chunk-HZUU7USC.js +0 -2
  69. package/dist/chunk-IFWLAQ3L.js +0 -2
  70. package/dist/chunk-JI7KJKG4.js +0 -2
  71. package/dist/chunk-V7QXJKX7.js +0 -3
  72. package/dist/controller-client-OMKEBP4B.js +0 -2
  73. package/dist/logging-M7EYIZTV.js +0 -2
  74. package/dist/login-flow-THKISL7X.js +0 -2
  75. package/dist/machine-id-DZN4MYOO.js +0 -2
  76. package/dist/pipeline-IF775CGJ.js +0 -2
  77. package/dist/run-test-md-6ELVP2MT.js +0 -65
  78. package/dist/tms-client-T3EAD4Y7.js +0 -2
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{b as i}from"./chunk-NLCCBXXV.js";import{a as s}from"./chunk-RZ4F3BHX.js";var a={attempts:3,backoffMs:[250,750]},n=class extends i{constructor(e,r){super(e,r)}headers(){return{Authorization:this.authHeader,"Content-Type":"application/json"}}async getTmsCredentials(){let e=await s(`${this.baseUrl}/auth/tms-credentials`,{method:"GET",headers:this.headers(),retry:a});if(!e.ok)throw new Error(`Credential exchange failed: ${e.status} ${await e.text()}`);return await e.json()}async getPresignedUrls(e,r,o){let t=await s(`${this.baseUrl}/upload/presign`,{method:"POST",headers:this.headers(),body:JSON.stringify({test_id:e,session_id:r,files:o})});if(!t.ok)throw new Error(`Presign request failed: ${t.status} ${await t.text()}`);return await t.json()}async getScreenshotSas(){let e=await s(`${this.baseUrl}/upload/screenshot-sas`,{method:"GET",headers:this.headers(),retry:a});if(!e.ok)throw new Error(`Screenshot SAS request failed: ${e.status} ${await e.text()}`);return await e.json()}async getCreditBalance(){let e=await s(`${this.baseUrl}/credits/balance`,{method:"GET",headers:this.headers(),retry:a});if(!e.ok)throw new Error(`Credit balance request failed: ${e.status} ${await e.text()}`);return await e.json()}};export{n as a};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as A}from"./chunk-YCCUBQY4.js";import{a as _}from"./chunk-EJR3WRTW.js";import{a as B}from"./chunk-CBDUXGVQ.js";import{a as R}from"./chunk-TI5CHPPN.js";import{a as P}from"./chunk-HCBYKLMW.js";import{t as c}from"./chunk-FOT6AMNP.js";import{a as u,b as l}from"./chunk-C44QQJR4.js";import{a as J}from"./chunk-6YGTRKDT.js";import{a as k}from"./chunk-LIJX5PIV.js";import{e as L}from"./chunk-UR6MHSHU.js";var t=L(J(),1);var e=L(P(),1);function X(n,s,y,m){return{id:n,label:`${s} (${n}) \xB7 ${y} tests`,isActive:n===m}}function W({resolver:n,projectId:s,currentFolderId:y,env:m,onSelect:x,onCancel:w}){let[I,M]=(0,t.useState)([]),[$,d]=(0,t.useState)(!0),[O,g]=(0,t.useState)(!1),[U,N]=(0,t.useState)(null),[p,b]=(0,t.useState)("list"),[S,v]=(0,t.useState)(""),[E,f]=(0,t.useState)(null),h=(0,t.useRef)(!1);(0,t.useEffect)(()=>{if(!n){N("Login first to browse folders"),d(!1);return}let o=new AbortController;return d(!0),g(!0),(async()=>{try{let r=n.cached??await n.resolve();if(!r){N("Login first to browse folders"),d(!1),g(!1);return}let a=B(m),T=new k(a.tmsBaseUrl,r.username,r.access_key),F=(async function*(){if(o.signal.aborted)return;let i=await T.listFolders(s);yield{page:1,folders:i,totalLoaded:i.length,done:!0}})();for await(let i of F){if(d(!1),i.totalLoaded===0){h.current=!0,b("naming"),g(!1);return}M(i.folders.map(C=>X(C.id,C.name,C.test_cases_count,y))),i.done&&g(!1)}}catch(r){if(r?.name==="AbortError")return;N(r instanceof Error?r.message:String(r)),d(!1),g(!1)}})(),()=>o.abort()},[n,s,y,m]);let D=(0,t.useCallback)(o=>{let r=o.trim();if(!r){f("Name cannot be empty");return}if(!s){f("No project selected \u2014 pick a project first");return}f(null),b("creating"),(async()=>{try{if(!n)throw new Error("Not authenticated");let a=n.cached??await n.resolve();if(!a)throw new Error("Not authenticated");let T=B(m),i=await new k(T.tmsBaseUrl,a.username,a.access_key).createFolder(s,r);x(i.id,i.name)}catch(a){f(a instanceof Error?a.message:String(a)),b("naming")}})()},[n,s,m,x]),H=(0,t.useCallback)(()=>{v(""),f(null),h.current?w():b("list")},[w]);return p==="naming"||p==="creating"?(0,e.jsxs)(u,{flexDirection:"column",borderStyle:"round",borderColor:c.primary,paddingX:2,paddingY:1,children:[(0,e.jsx)(l,{color:c.primary,bold:!0,children:"Create new folder"}),h.current&&(0,e.jsx)(u,{marginTop:1,children:(0,e.jsx)(l,{color:c.dim,children:"No folders yet \u2014 let's create one."})}),(0,e.jsxs)(u,{marginTop:1,children:[(0,e.jsx)(l,{color:c.dim,children:"Name: "}),p==="naming"?(0,e.jsx)(A,{value:S,onChange:o=>{v(o),E&&f(null)},onSubmit:D,onCancel:H}):(0,e.jsx)(l,{children:S})]}),E&&(0,e.jsx)(u,{marginTop:1,children:(0,e.jsx)(l,{color:c.red,children:E})}),p==="creating"&&(0,e.jsx)(u,{marginTop:1,children:(0,e.jsx)(l,{color:c.dim,children:"Creating..."})}),p==="naming"&&(0,e.jsx)(R,{bindings:[{keys:"\u21B5",label:"create"}],escBackLabel:h.current?"cancel":"back"})]}):(0,e.jsx)(_,{title:"Folders",items:I,loading:$,loadingMore:O,preserveSelectionById:!0,error:U,itemNoun:"folders",onTab:()=>{h.current=!1,b("naming")},extraHint:"tab to create new",onSelect:o=>{let r=o.label.split(" (")[0];x(o.id,r)},onCancel:w})}export{X as a,W as b};
2
+ import{a as A}from"./chunk-YCCUBQY4.js";import{a as _}from"./chunk-IXNVLVFT.js";import{a as B}from"./chunk-TC74YD2D.js";import{a as R}from"./chunk-2IAYS2ZB.js";import{a as P}from"./chunk-HCBYKLMW.js";import{t as c}from"./chunk-DTQJGYDA.js";import{a as u,b as l}from"./chunk-C44QQJR4.js";import{a as J}from"./chunk-6YGTRKDT.js";import{a as k}from"./chunk-7CLUJYMW.js";import{e as L}from"./chunk-UR6MHSHU.js";var t=L(J(),1);var e=L(P(),1);function X(n,s,y,m){return{id:n,label:`${s} (${n}) \xB7 ${y} tests`,isActive:n===m}}function W({resolver:n,projectId:s,currentFolderId:y,env:m,onSelect:x,onCancel:w}){let[I,M]=(0,t.useState)([]),[$,d]=(0,t.useState)(!0),[O,g]=(0,t.useState)(!1),[U,N]=(0,t.useState)(null),[p,b]=(0,t.useState)("list"),[S,v]=(0,t.useState)(""),[E,f]=(0,t.useState)(null),h=(0,t.useRef)(!1);(0,t.useEffect)(()=>{if(!n){N("Login first to browse folders"),d(!1);return}let o=new AbortController;return d(!0),g(!0),(async()=>{try{let r=n.cached??await n.resolve();if(!r){N("Login first to browse folders"),d(!1),g(!1);return}let a=B(m),T=new k(a.tmsBaseUrl,r.username,r.access_key),F=(async function*(){if(o.signal.aborted)return;let i=await T.listFolders(s);yield{page:1,folders:i,totalLoaded:i.length,done:!0}})();for await(let i of F){if(d(!1),i.totalLoaded===0){h.current=!0,b("naming"),g(!1);return}M(i.folders.map(C=>X(C.id,C.name,C.test_cases_count,y))),i.done&&g(!1)}}catch(r){if(r?.name==="AbortError")return;N(r instanceof Error?r.message:String(r)),d(!1),g(!1)}})(),()=>o.abort()},[n,s,y,m]);let D=(0,t.useCallback)(o=>{let r=o.trim();if(!r){f("Name cannot be empty");return}if(!s){f("No project selected \u2014 pick a project first");return}f(null),b("creating"),(async()=>{try{if(!n)throw new Error("Not authenticated");let a=n.cached??await n.resolve();if(!a)throw new Error("Not authenticated");let T=B(m),i=await new k(T.tmsBaseUrl,a.username,a.access_key).createFolder(s,r);x(i.id,i.name)}catch(a){f(a instanceof Error?a.message:String(a)),b("naming")}})()},[n,s,m,x]),H=(0,t.useCallback)(()=>{v(""),f(null),h.current?w():b("list")},[w]);return p==="naming"||p==="creating"?(0,e.jsxs)(u,{flexDirection:"column",borderStyle:"round",borderColor:c.primary,paddingX:2,paddingY:1,children:[(0,e.jsx)(l,{color:c.primary,bold:!0,children:"Create new folder"}),h.current&&(0,e.jsx)(u,{marginTop:1,children:(0,e.jsx)(l,{color:c.dim,children:"No folders yet \u2014 let's create one."})}),(0,e.jsxs)(u,{marginTop:1,children:[(0,e.jsx)(l,{color:c.dim,children:"Name: "}),p==="naming"?(0,e.jsx)(A,{value:S,onChange:o=>{v(o),E&&f(null)},onSubmit:D,onCancel:H}):(0,e.jsx)(l,{children:S})]}),E&&(0,e.jsx)(u,{marginTop:1,children:(0,e.jsx)(l,{color:c.red,children:E})}),p==="creating"&&(0,e.jsx)(u,{marginTop:1,children:(0,e.jsx)(l,{color:c.dim,children:"Creating..."})}),p==="naming"&&(0,e.jsx)(R,{bindings:[{keys:"\u21B5",label:"create"}],escBackLabel:h.current?"cancel":"back"})]}):(0,e.jsx)(_,{title:"Folders",items:I,loading:$,loadingMore:O,preserveSelectionById:!0,error:U,itemNoun:"folders",onTab:()=>{h.current=!1,b("naming")},extraHint:"tab to create new",onSelect:o=>{let r=o.label.split(" (")[0];x(o.id,r)},onCancel:w})}export{X as a,W as b};
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{d as a,h as c}from"./chunk-FOT6AMNP.js";import{readFileSync as g,writeFileSync as n,mkdirSync as i,existsSync as p}from"fs";import{dirname as s}from"path";var o={window_size:{width:1920,height:1080},chrome_profile_path:"",default_url:c,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},last_seen_version:""},l=class{constructor(r=a){this.path=r}exists(){return p(this.path)}load(){try{let r=g(this.path,"utf-8"),e=JSON.parse(r);return{...o,...e,code_export:{...o.code_export,...e.code_export??{}}}}catch{return{...o,code_export:{...o.code_export}}}}set(r,e){try{let t=this.load();t[r]=e,i(s(this.path),{recursive:!0}),n(this.path,JSON.stringify(t,null,2)+`
2
+ import{d as a,h as c}from"./chunk-DTQJGYDA.js";import{readFileSync as g,writeFileSync as n,mkdirSync as i,existsSync as p}from"fs";import{dirname as s}from"path";var o={window_size:{width:1920,height:1080},chrome_profile_path:"",default_url:c,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},last_seen_version:""},l=class{constructor(r=a){this.path=r}exists(){return p(this.path)}load(){try{let r=g(this.path,"utf-8"),e=JSON.parse(r);return{...o,...e,code_export:{...o.code_export,...e.code_export??{}}}}catch{return{...o,code_export:{...o.code_export}}}}set(r,e){try{let t=this.load();t[r]=e,i(s(this.path),{recursive:!0}),n(this.path,JSON.stringify(t,null,2)+`
3
3
  `)}catch(t){let d=t instanceof Error?t.message:String(t);process.stderr.write(`[config] Failed to save config: ${d}
4
4
  `)}}save(r){try{let t={...this.load(),...r};i(s(this.path),{recursive:!0}),n(this.path,JSON.stringify(t,null,2)+`
5
5
  `)}catch(e){let t=e instanceof Error?e.message:String(e);process.stderr.write(`[config] Failed to save config: ${t}
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a}from"./chunk-WAOCHXJ5.js";import"./chunk-NLCCBXXV.js";import"./chunk-RZ4F3BHX.js";import"./chunk-UR6MHSHU.js";export{a as ControllerClient};