@testmuai/kane-cli 0.4.8 → 0.4.10
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.
- package/dist/{ChromeProfilePicker-B2PUH2LL.js → ChromeProfilePicker-EFEVOCWS.js} +1 -1
- package/dist/{CliFeedbackPrompt-647ESLIL.js → CliFeedbackPrompt-PPGJMKHQ.js} +1 -1
- package/dist/{CliUploadProgress-U325KQO6.js → CliUploadProgress-3GGOTLPQ.js} +1 -1
- package/dist/{ConfigView-NKD7QMUV.js → ConfigView-Y7E4Q647.js} +1 -1
- package/dist/FolderPicker-LI5JKG2S.js +2 -0
- package/dist/{HelpView-35KKWQVE.js → HelpView-KHQYGSD2.js} +1 -1
- package/dist/{InfoBox-OIZ3APE3.js → InfoBox-BQ2QOIUP.js} +1 -1
- package/dist/{LinksBox-DLIYPE3S.js → LinksBox-DX6BJAX5.js} +1 -1
- package/dist/{ProfilesView-CFYBJIL4.js → ProfilesView-X35WWM4L.js} +1 -1
- package/dist/{ProjectPicker-ASHXV4HU.js → ProjectPicker-Y4A4UVHA.js} +1 -1
- package/dist/{SaveSessionPrompt-ATKVPQEJ.js → SaveSessionPrompt-IS6HZSF4.js} +1 -1
- package/dist/SingleShotApp-RO25ZX2E.js +2 -0
- package/dist/{SummaryBox-AAXB55TE.js → SummaryBox-47MHU37V.js} +1 -1
- package/dist/TestMdRunView-OXVWHOV3.js +2 -0
- package/dist/{WhoamiView-TRGZE2NZ.js → WhoamiView-KVIQCGRC.js} +1 -1
- package/dist/{changelog-JBGYPN7J.js → changelog-S4ZLEQLC.js} +1 -1
- package/dist/chunk-53O3GMZR.js +8 -0
- package/dist/{chunk-LZEYE2WE.js → chunk-6ATKQYAL.js} +1 -1
- package/dist/{chunk-CVC6MQN6.js → chunk-7GOX44H7.js} +1 -1
- package/dist/{chunk-DMLJUTQO.js → chunk-AKLIPQVR.js} +1 -1
- package/dist/{chunk-F6VA5YBJ.js → chunk-AT45XB6X.js} +3 -3
- package/dist/chunk-BQACGLXW.js +5 -0
- package/dist/{chunk-UR4NSWY7.js → chunk-DMG5QABA.js} +1 -1
- package/dist/{chunk-F5ZL4XYL.js → chunk-EQC7WE2O.js} +1 -1
- package/dist/{chunk-5VZSCQXN.js → chunk-FKAXPYV7.js} +1 -1
- package/dist/{chunk-25YRWDQ7.js → chunk-G2GQ67DP.js} +1 -1
- package/dist/{chunk-LY3DAHNE.js → chunk-G3PWEKD7.js} +2 -2
- package/dist/{chunk-AD6DPSIZ.js → chunk-GF44B552.js} +1 -1
- package/dist/{chunk-SSPIKPHV.js → chunk-GSKA5DKJ.js} +1 -1
- package/dist/{chunk-C2E2DKY3.js → chunk-HPZREZKG.js} +1 -1
- package/dist/{chunk-YYSABHRE.js → chunk-HUAOH2JK.js} +1 -1
- package/dist/{chunk-ALF5ETLD.js → chunk-IGZPQQFP.js} +1 -1
- package/dist/{chunk-IXYUSFH2.js → chunk-IS62CNJW.js} +2 -2
- package/dist/{chunk-EAUU5F4P.js → chunk-IT66S24L.js} +1 -1
- package/dist/{chunk-SH5FUG47.js → chunk-JKLKZCJS.js} +1 -1
- package/dist/{chunk-GRIQ4OQL.js → chunk-KJLOYIWT.js} +1 -1
- package/dist/{chunk-3PISMPFM.js → chunk-KKIFXAJY.js} +1 -1
- package/dist/chunk-LRKWPAGK.js +2 -0
- package/dist/{chunk-K266M5ZM.js → chunk-NAAPNSZD.js} +1 -1
- package/dist/{chunk-ZQPTSSU6.js → chunk-NUGGT2XH.js} +1 -1
- package/dist/{chunk-CL5SB2I7.js → chunk-OHT5RY5E.js} +1 -1
- package/dist/{chunk-WKS4ST3B.js → chunk-QC73LMAN.js} +1 -1
- package/dist/{chunk-WZ6GNXM3.js → chunk-QSXYNJOW.js} +1 -1
- package/dist/{chunk-HZUTFC3G.js → chunk-RB2YKN77.js} +1 -1
- package/dist/{chunk-ZQ5IPBXJ.js → chunk-RQZCGHG7.js} +1 -1
- package/dist/{chunk-W67JBBQF.js → chunk-SQOIKS77.js} +2 -2
- package/dist/chunk-UAYCLUUZ.js +27 -0
- package/dist/{chunk-SVZUJ2QE.js → chunk-UBN6J3ZA.js} +1 -1
- package/dist/{chunk-SRQ7P3WI.js → chunk-VLWWDXBN.js} +1 -1
- package/dist/{chunk-YJVA6LBY.js → chunk-XCOU6AYD.js} +1 -1
- package/dist/{chunk-ZRGEUDG5.js → chunk-XCYCX4TU.js} +1 -1
- package/dist/{chunk-RBG4VTHQ.js → chunk-YAOWO2GE.js} +1 -1
- package/dist/{generate-headless-VB52MM2A.js → generate-headless-ODYT3HT7.js} +2 -2
- package/dist/index.js +13 -13
- package/dist/{list-commands-X6EXASQG.js → list-commands-PNYMVI6X.js} +1 -1
- package/dist/login-flow-FIYH6K4A.js +2 -0
- package/dist/{persist-recorded-session-EI4ISSRI.js → persist-recorded-session-OJPXI4HP.js} +1 -1
- package/dist/{recording-banner-BQQSRJIF.js → recording-banner-3XTXU2VL.js} +1 -1
- package/dist/{require-project-folder-LSM4YSKJ.js → require-project-folder-CFX6U6BZ.js} +1 -1
- package/dist/{run-test-md-VR2Q46Q3.js → run-test-md-YWKVMQDJ.js} +3 -3
- package/dist/{skill-installer-JS7LUETO.js → skill-installer-GYYMVNE4.js} +1 -1
- package/dist/tcg-generate-KLY7QZY2.js +2 -0
- package/dist/testmd-actions-OUY5BOAV.js +2 -0
- package/dist/token-refresh-QCHKMPCM.js +2 -0
- package/dist/{validate-basic-W7UJ5D25.js → validate-basic-4YMRWYLS.js} +1 -1
- package/dist/{version-check-ACQ5Z7JV.js → version-check-GU2LS6NM.js} +1 -1
- package/package.json +6 -6
- package/dist/FolderPicker-2LEIB5F5.js +0 -2
- package/dist/SingleShotApp-JYKEW3WS.js +0 -2
- package/dist/TestMdRunView-U35UBFHZ.js +0 -2
- package/dist/chunk-BGXAW2B5.js +0 -2
- package/dist/chunk-IT2GFEFH.js +0 -5
- package/dist/chunk-UVOM74DG.js +0 -27
- package/dist/chunk-XCMNFMSO.js +0 -8
- package/dist/login-flow-R5IGUIPA.js +0 -2
- package/dist/tcg-generate-YQJZTSSI.js +0 -2
- package/dist/testmd-actions-FAQYABQT.js +0 -2
- package/dist/token-refresh-XM3DXY2A.js +0 -2
|
@@ -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-
|
|
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-53O3GMZR.js";import"./chunk-LRKWPAGK.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-
|
|
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-BQ2QOIUP.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-
|
|
2
|
+
import{b as a,c as b,d as c,e as d,f as e,g as f}from"./chunk-XCYCX4TU.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-VE3SUJMA.js";import"./chunk-KKIFXAJY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-LRKWPAGK.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-
|
|
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-
|
|
2
|
+
import{A as V,B as H,x as A,y as B,z as D}from"./chunk-AT45XB6X.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-BH6EP2LD.js";import{a as L,b as T}from"./chunk-SQOIKS77.js";import{a as y,b as _}from"./chunk-AKLIPQVR.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-NAAPNSZD.js";import"./chunk-L5LI2JF4.js";import{a as S}from"./chunk-53O3GMZR.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-BQACGLXW.js";import{d as E,e as C,f as k}from"./chunk-LOIRZFV3.js";import"./chunk-XCYCX4TU.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-VE3SUJMA.js";import"./chunk-JKLKZCJS.js";import{a as h}from"./chunk-RB2YKN77.js";import"./chunk-IGZPQQFP.js";import{a as v}from"./chunk-KKIFXAJY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-E47GFYXA.js";import"./chunk-LRKWPAGK.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-OXVWHOV3.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-3GGOTLPQ.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-47MHU37V.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-DX6BJAX5.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-F6VA5YBJ.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-
|
|
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-OUY5BOAV.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-
|
|
2
|
+
import{a as p,b as g}from"./chunk-FKAXPYV7.js";import{b as m}from"./chunk-HUAOH2JK.js";import"./chunk-RB2YKN77.js";import"./chunk-KKIFXAJY.js";import{a as d}from"./chunk-RZ4F3BHX.js";import{a as f,g as a,h as u}from"./chunk-LRKWPAGK.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-UAYCLUUZ.js";import"./chunk-QC73LMAN.js";import"./chunk-3MSXQU2C.js";import"./chunk-EQC7WE2O.js";import"./chunk-AT45XB6X.js";import"./chunk-C5UNZ6ZY.js";import"./chunk-BH6EP2LD.js";import"./chunk-IS62CNJW.js";import"./chunk-SQOIKS77.js";import"./chunk-AKLIPQVR.js";import"./chunk-MDBXYXSC.js";import"./chunk-NUGGT2XH.js";import"./chunk-S3DAAAE5.js";import"./chunk-PUU7A26K.js";import"./chunk-AH4AXJML.js";import"./chunk-G2GQ67DP.js";import"./chunk-NAAPNSZD.js";import"./chunk-L5LI2JF4.js";import"./chunk-53O3GMZR.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-XCOU6AYD.js";import"./chunk-BQACGLXW.js";import"./chunk-RQZCGHG7.js";import"./chunk-DMG5QABA.js";import"./chunk-UBN6J3ZA.js";import"./chunk-GSKA5DKJ.js";import"./chunk-OHT5RY5E.js";import"./chunk-VLWWDXBN.js";import"./chunk-YCCUBQY4.js";import"./chunk-YAOWO2GE.js";import"./chunk-LOIRZFV3.js";import"./chunk-XCYCX4TU.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-VE3SUJMA.js";import"./chunk-JKLKZCJS.js";import"./chunk-7GOX44H7.js";import"./chunk-RB2YKN77.js";import"./chunk-IGZPQQFP.js";import"./chunk-KKIFXAJY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-E47GFYXA.js";import"./chunk-6ATKQYAL.js";import"./chunk-QSXYNJOW.js";import{a as o}from"./chunk-C6S4IEBC.js";import"./chunk-GF44B552.js";import"./chunk-KJLOYIWT.js";import"./chunk-IT66S24L.js";import"./chunk-LRKWPAGK.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-IS62CNJW.js";import"./chunk-SQOIKS77.js";import"./chunk-AKLIPQVR.js";import"./chunk-MDBXYXSC.js";import"./chunk-AH4AXJML.js";import"./chunk-53O3GMZR.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-YAOWO2GE.js";import"./chunk-LOIRZFV3.js";import"./chunk-NLCCBXXV.js";import"./chunk-JKLKZCJS.js";import"./chunk-RB2YKN77.js";import"./chunk-IGZPQQFP.js";import"./chunk-KKIFXAJY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-IT66S24L.js";import"./chunk-LRKWPAGK.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-JKLKZCJS.js";import"./chunk-IGZPQQFP.js";import"./chunk-KKIFXAJY.js";import"./chunk-RZ4F3BHX.js";import"./chunk-LRKWPAGK.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-
|
|
2
|
+
import{a as t}from"./chunk-KKIFXAJY.js";import"./chunk-LRKWPAGK.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-
|
|
2
|
+
import{a,b,c,d}from"./chunk-HUAOH2JK.js";import"./chunk-RZ4F3BHX.js";import"./chunk-LRKWPAGK.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.
|
|
3
|
+
"version": "0.4.10",
|
|
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.
|
|
28
|
-
"@testmuai/kane-cli-darwin-x64": "0.4.
|
|
29
|
-
"@testmuai/kane-cli-linux-x64": "0.4.
|
|
30
|
-
"@testmuai/kane-cli-linux-arm64": "0.4.
|
|
31
|
-
"@testmuai/kane-cli-win-x64": "0.4.
|
|
27
|
+
"@testmuai/kane-cli-darwin-arm64": "0.4.10",
|
|
28
|
+
"@testmuai/kane-cli-darwin-x64": "0.4.10",
|
|
29
|
+
"@testmuai/kane-cli-linux-x64": "0.4.10",
|
|
30
|
+
"@testmuai/kane-cli-linux-arm64": "0.4.10",
|
|
31
|
+
"@testmuai/kane-cli-win-x64": "0.4.10",
|
|
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-SRQ7P3WI.js";import"./chunk-YCCUBQY4.js";import"./chunk-RBG4VTHQ.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-3PISMPFM.js";import"./chunk-RZ4F3BHX.js";import"./chunk-EAUU5F4P.js";import"./chunk-BGXAW2B5.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-C2E2DKY3.js";import"./chunk-25YRWDQ7.js";import"./chunk-K266M5ZM.js";import"./chunk-L5LI2JF4.js";import"./chunk-XCMNFMSO.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-CL5SB2I7.js";import"./chunk-SRQ7P3WI.js";import"./chunk-YCCUBQY4.js";import"./chunk-RBG4VTHQ.js";import"./chunk-LOIRZFV3.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-VE3SUJMA.js";import"./chunk-HZUTFC3G.js";import"./chunk-ALF5ETLD.js";import"./chunk-3PISMPFM.js";import"./chunk-RZ4F3BHX.js";import"./chunk-EAUU5F4P.js";import"./chunk-BGXAW2B5.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-YJVA6LBY.js";import"./chunk-IT2GFEFH.js";import"./chunk-UR4NSWY7.js";import"./chunk-LOIRZFV3.js";import"./chunk-3PISMPFM.js";import"./chunk-LZEYE2WE.js";import"./chunk-WZ6GNXM3.js";import"./chunk-C6S4IEBC.js";import"./chunk-BGXAW2B5.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as TestMdRunView};
|
package/dist/chunk-BGXAW2B5.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{homedir as e}from"os";import{join as t}from"path";var m="0.4.8",d="kane-cli",a=t(e(),".testmuai","kaneai"),g=t(a,"profiles"),h=t(a,"tui-config.json"),_="https://registry.npmjs.org/@testmuai/kane-cli",L="https://api.github.com/repos/LambdaTest/kane-cli/releases",n="@testmuai/kane-cli-skill",x=`https://registry.npmjs.org/${n}`,r="kane-cli",A=[{dir:t(e(),".claude","skills",r),agent:"Claude Code"},{dir:t(e(),".agents","skills",r),agent:"Codex CLI"},{dir:t(e(),".gemini","skills",r),agent:"Gemini CLI"}],u="https://dd-proxy.lambdatest.com/intake/kane-cli",R="https://kaneai-playground.lambdatest.io",U=9222,b=9230,I=t(a,"chrome-profiles"),o=t(a,"hints"),C=t(o,"state.json");function E(s){return t(o,`catalog-${s}.json`)}var p="127.0.0.1",T=18392,S=18400,c="/callback";function N(s){return`http://${p}:${s}${c}`}var P="KANE CLI",B="*",O={prod:{authBaseUrl:"https://auth.lambdatest.com",consentUrl:"https://accounts.lambdatest.com",controllerBaseUrl:"https://kaneai-api.lambdatest.com/v16-controller/v1",tmsBaseUrl:"https://test-manager-api.lambdatest.com/api",testGeneratorBaseUrl:"https://test-manager-api.lambdatest.com",secretsBaseUrl:"https://api-hyperexecute.lambdatest.com",testManagerUiUrl:"https://test-manager.lambdatest.com",shareApiBaseUrl:"https://api.lambdatest.com",v16ServerHost:"https://kaneai-api.lambdatest.com/v16-server"},stage:{authBaseUrl:"https://stage-auth.lambdatestinternal.com",consentUrl:"https://stage-accounts.lambdatestinternal.com",controllerBaseUrl:"https://auteur-stage-automind.lambdatestinternal.com/v16-controller/v1",tmsBaseUrl:"https://stage-test-manager-api.lambdatestinternal.com/api",testGeneratorBaseUrl:"https://stage-test-manager-api.lambdatestinternal.com",secretsBaseUrl:"https://api-stage-hyperexecute.lambdatestinternal.com",testManagerUiUrl:"https://stage-test-manager.lambdatestinternal.com",shareApiBaseUrl:"https://stage-api.lambdatestinternal.com",v16ServerHost:"https://auteur-stage-automind.lambdatestinternal.com/v16-server"}},k={orange:"#ff9500",generateAccent:"#0d9488",purple:"#b388ff",secondary:"#888888",dim:"#666666",muted:"#444444",green:"#4ade80",red:"#ef4444"};export{m as a,d as b,a as c,h as d,_ as e,L as f,n as g,A as h,u as i,R as j,U as k,b as l,I as m,C as n,E as o,p,T as q,S as r,c as s,N as t,P as u,B as v,O as w,k as x};
|
package/dist/chunk-IT2GFEFH.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as g}from"./chunk-3PISMPFM.js";import{spawn as N,execSync as b}from"child_process";import{existsSync as v}from"fs";import{resolve as t,dirname as O}from"path";import{fileURLToPath as T}from"url";import{createInterface as A}from"readline";async function*E(s){let e=A({input:s,crlfDelay:1/0});for await(let c of e){let r=c.trim();if(r)try{let d=JSON.parse(r);d&&typeof d.type=="string"&&(yield d)}catch{}}}function S(s){return s==="action"?{set:{V16_AGENT_ENABLE_ALL_BLOCKERS:"true",V16_AGENT_SKIP_CP_FINAL:"true",V16_BIFURCATION_PHASES:"1"},unset:["V16_NETWORK_WS"]}:{set:{V16_BIFURCATION_PHASES:"1"},unset:["V16_AGENT_ENABLE_ALL_BLOCKERS","V16_AGENT_SKIP_CP_FINAL","V16_NETWORK_WS"]}}function R(s){return s==="dom"?{set:{V16_AGENT_ENABLE_TEXTUAL_VISUAL:"true"},unset:[]}:{set:{},unset:["V16_AGENT_ENABLE_TEXTUAL_VISUAL"]}}var a=O(T(import.meta.url));function C(){for(let s of["python3","python"])try{return b(`${s} --version`,{stdio:"ignore"}),s}catch{}return null}function h(){let e=process.platform==="win32"?"v16-runner.exe":"v16-runner",c={"darwin-arm64":["@testmuai/kane-cli-darwin-arm64","@lambdatestincprivate/kane-cli-darwin-arm64"],"darwin-x64":["@testmuai/kane-cli-darwin-x64","@lambdatestincprivate/kane-cli-darwin-x64"],"linux-x64":["@testmuai/kane-cli-linux-x64","@lambdatestincprivate/kane-cli-linux-x64"],"linux-arm64":["@testmuai/kane-cli-linux-arm64","@lambdatestincprivate/kane-cli-linux-arm64"],"win32-x64":["@testmuai/kane-cli-win-x64","@lambdatestincprivate/kane-cli-win-x64"]},r=`${process.platform}-${process.arch}`,d=c[r];if(d)for(let n of d){let l=[t(a,"..","node_modules",n,"bin",e),t(a,"..","..","node_modules",n,"bin",e),t(a,"..","..","..","node_modules",n,"bin",e),t(a,"..","..","..","..","node_modules",n,"bin",e)];for(let o of l)if(v(o))return{cmd:o,args:[]}}let m=[t(a,"bin",e),t(a,"..","bin",e),t(a,"..","..","..","..","v16-runner","dist",e),t(a,"..","..","..","v16-runner","dist",e),t(process.cwd(),"v16-runner","dist",e),t(process.cwd(),"..","v16-runner","dist",e)];for(let n of m)if(v(n))return{cmd:n,args:[]};let p=[t(a,"..","..","v16-runner"),t(a,"..","..","..","..","v16-runner"),t(a,"..","..","..","v16-runner"),t(process.cwd(),"v16-runner"),t(process.cwd(),"..","v16-runner")];for(let n of p)if(v(t(n,"main.py"))){for(let o of[t(n,".venv","bin","python"),t(n,"..","browser-agent",".venv","bin","python")])if(v(o))return{cmd:o,args:["main.py"],cwd:n};let l=C();if(l)return{cmd:l,args:["main.py"],cwd:n}}return null}function j(s,e){let c=h();if(!c)throw new Error("v16-runner not found. Build the binary with `cd v16-runner && python build.py` or ensure Python is available.");let r={...process.env};e?.environment&&(r.TESTMUAI_ENV=e.environment),r.TESTMUAI_SOURCE="kane-cli",process.platform==="win32"&&(r.PYTHONIOENCODING="utf-8");let d=g(e?.environment);r.V16_SERVER_API_HOST=d.v16ServerHost,r.ATMS_URL=d.tmsBaseUrl.replace(/\/api\/?$/,""),s.username&&s.access_key&&(r.LT_USERNAME=s.username,r.LT_ACCESS_KEY=s.access_key),s.session_id&&(r.TESTMUAI_SESSION_ID=s.session_id);let m=S(e?.mode??"testing");Object.assign(r,m.set);for(let i of m.unset)delete r[i];let p=R(e?.assertionMode??"visual");Object.assign(r,p.set);for(let i of p.unset)delete r[i];let n=N(c.cmd,c.args,{stdio:["pipe","pipe","pipe"],env:r,cwd:c.cwd});n.stdin.on("error",()=>{}),n.stdin.write(JSON.stringify(s)+`
|
|
3
|
-
`);let l=1e5,o="";n.stderr.on("data",i=>{o+=i.toString(),o.length>l&&(o=o.slice(-l))}),n.on("error",i=>{e?.log?.("error","RUNNER_SPAWN_ERROR","Runner spawn error",{error:i.message})});let y=null,f=null,x=new Promise(i=>{n.on("close",(u,_)=>{y=u,f=_?String(_):null,e?.log?.("info","RUNNER_EXIT","Runner exited",{code:u,signal:f??"none"}),i({code:u,signal:f})})}),w=E(n.stdout);return{child:n,events:w,sendUserResponse(i){let u=JSON.stringify({type:"user_response",answer:i});try{n.stdin.write(u+`
|
|
4
|
-
`)}catch{}},sendCancel(i){let u=JSON.stringify({type:"cancel",reason:i});try{n.stdin.write(u+`
|
|
5
|
-
`)}catch{}},cancel(){n.kill("SIGTERM")},get stderr(){return o},get exitCode(){return y},get exitSignal(){return f},exited:x}}export{h as a,j as b};
|