@testmuai/kane-cli 0.6.3 → 0.6.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.
- package/bin/kane-cli.cjs +91 -0
- package/bin/resolve-runtime.cjs +45 -0
- package/dist/ChatSurface-LV3KW6WN.js +8 -0
- package/dist/{ChromeProfilePicker-UUGUMJPI.js → ChromeProfilePicker-6PLUQ5TW.js} +1 -1
- package/dist/{CliFeedbackPrompt-JZWESL7Z.js → CliFeedbackPrompt-I4F56IVK.js} +1 -1
- package/dist/{CliUploadProgress-62U3LAUU.js → CliUploadProgress-ULRSPKY3.js} +1 -1
- package/dist/{ConfigView-WHEFCVHR.js → ConfigView-7NMYALEA.js} +1 -1
- package/dist/EvidenceViewOffer-KQKPTMXA.js +2 -0
- package/dist/{FolderPicker-HJUUHQEI.js → FolderPicker-4IOVDO2P.js} +1 -1
- package/dist/{HelpView-EWHP7LSJ.js → HelpView-SHMVMHNU.js} +1 -1
- package/dist/{InfoBox-GQQJVTI5.js → InfoBox-W2LZVGQS.js} +1 -1
- package/dist/{LinksBox-EWCPAZFN.js → LinksBox-ZS25VTBY.js} +1 -1
- package/dist/{ProfilesView-5FJNQMUW.js → ProfilesView-XBBRIQ3U.js} +1 -1
- package/dist/{ProjectPicker-IN7GFN7I.js → ProjectPicker-AUN47FXS.js} +1 -1
- package/dist/{SaveSessionPrompt-ISODGFP7.js → SaveSessionPrompt-Z2K225VN.js} +1 -1
- package/dist/SingleShotApp-M7R5PW4X.js +2 -0
- package/dist/{SummaryBox-R6WHU7VD.js → SummaryBox-4T545XRB.js} +1 -1
- package/dist/TestMdRunView-JXRXMACE.js +2 -0
- package/dist/{WhoamiView-YRQNOSOH.js → WhoamiView-GCVD35EX.js} +1 -1
- package/dist/bind-JLMT57Q3.js +6 -0
- package/dist/{bridge-7UMWMIJJ.js → bridge-PDJEOSAJ.js} +1 -1
- package/dist/{changelog-YQC2QDCO.js → changelog-D65HWZDM.js} +1 -1
- package/dist/{chat-committer-GHDZY5XF.js → chat-committer-ADJJTDUT.js} +1 -1
- package/dist/{chat-controller-QXFAB2DK.js → chat-controller-VAC57IEV.js} +1 -1
- package/dist/{chunk-B5LJCGAY.js → chunk-24OFJ7SE.js} +1 -1
- package/dist/{chunk-PJDOXRLB.js → chunk-24VYAMMK.js} +1 -1
- package/dist/chunk-262ES67I.js +14 -0
- package/dist/{chunk-CIW2KP4C.js → chunk-2BWRAY3Y.js} +1 -1
- package/dist/{chunk-KHDUQ33H.js → chunk-2PQXEEVY.js} +1 -1
- package/dist/{chunk-F66SSA4C.js → chunk-2WO7G2HO.js} +1 -1
- package/dist/{chunk-Y6LMHBLE.js → chunk-32GP7KTM.js} +1 -1
- package/dist/{chunk-NNZV5RCE.js → chunk-3C5GMAM4.js} +1 -1
- package/dist/{chunk-SHSV64GX.js → chunk-3Z3UIW5H.js} +1 -1
- package/dist/{chunk-OE7TVGNB.js → chunk-4A6BLXQN.js} +3 -3
- package/dist/chunk-4R2HOA7J.js +14 -0
- package/dist/{chunk-AV5SUGRY.js → chunk-4SXD6XWV.js} +1 -1
- package/dist/{chunk-FFL2TQEJ.js → chunk-5JJ245FW.js} +1 -1
- package/dist/chunk-5YPBPZUR.js +2 -0
- package/dist/chunk-64LC36AF.js +2 -0
- package/dist/{chunk-Z56AWGVY.js → chunk-6AYUSR7X.js} +1 -1
- package/dist/{chunk-Y7KW5AEN.js → chunk-6CZIEK6B.js} +1 -1
- package/dist/{chunk-VJUIW2ES.js → chunk-6GTOYTCQ.js} +1 -1
- package/dist/{chunk-EWFFJBAM.js → chunk-6NIV7AVZ.js} +1 -1
- package/dist/chunk-6SGPN76K.js +2 -0
- package/dist/{chunk-7MV5UF6O.js → chunk-6XHAXAL2.js} +1 -1
- package/dist/{chunk-AE6SS34N.js → chunk-74RUSHIB.js} +1 -1
- package/dist/{chunk-RLG5NUTE.js → chunk-AKHUNBQS.js} +1 -1
- package/dist/{chunk-53VDR5DN.js → chunk-BLSZ4H5W.js} +12 -12
- package/dist/{chunk-OGVIHL5G.js → chunk-BV5QKFMJ.js} +1 -1
- package/dist/{chunk-SL7AJ7JQ.js → chunk-C42WWO7Y.js} +1 -1
- package/dist/{chunk-FYOCF7DY.js → chunk-CJJXT5DO.js} +1 -1
- package/dist/chunk-D7L6UW5Z.js +7 -0
- package/dist/chunk-EHN5HTUD.js +147 -0
- package/dist/{chunk-P46TIMGQ.js → chunk-EOLQUB4Q.js} +1 -1
- package/dist/{chunk-C5POEXSX.js → chunk-EWTX7HSU.js} +2 -2
- package/dist/{chunk-RGEAEAZB.js → chunk-FJTWJ243.js} +1 -1
- package/dist/{chunk-CE664P73.js → chunk-GBBVP2JW.js} +1 -1
- package/dist/chunk-GLS46X7N.js +5 -0
- package/dist/{chunk-AD46OCZ4.js → chunk-GRB66C5S.js} +1 -1
- package/dist/{chunk-22A2ECA2.js → chunk-GYW7LVVL.js} +1 -1
- package/dist/{chunk-BO3JA2GS.js → chunk-HA5GE57Z.js} +15 -15
- package/dist/{chunk-VXGOWBET.js → chunk-HWA7WD44.js} +1 -1
- package/dist/{chunk-7YQW4TFI.js → chunk-JF7Q2I45.js} +1 -1
- package/dist/{chunk-TTSYHJLX.js → chunk-JTEY32TL.js} +1 -1
- package/dist/{chunk-DEEBPSJN.js → chunk-JU5KRCKD.js} +4 -4
- package/dist/chunk-JV356AYH.js +5 -0
- package/dist/chunk-K5JGCJ2K.js +6 -0
- package/dist/{chunk-UXJPCWGW.js → chunk-KI2DVQSA.js} +1 -1
- package/dist/chunk-KNCHEM6A.js +9 -0
- package/dist/{chunk-YZSYXNMB.js → chunk-KYHXDJN4.js} +1 -1
- package/dist/{chunk-326XAPMW.js → chunk-L26LU6TU.js} +2 -2
- package/dist/{chunk-WFRL54GK.js → chunk-LABIRPOT.js} +1 -1
- package/dist/{chunk-BFFCGEUH.js → chunk-LEQ2B3PR.js} +1 -1
- package/dist/{chunk-EEO4XWY6.js → chunk-LLS47HUA.js} +1 -1
- package/dist/{chunk-2S4S2XJC.js → chunk-LURGFJEE.js} +1 -1
- package/dist/{chunk-D5T4ARTB.js → chunk-MCQXRJGH.js} +1 -1
- package/dist/{chunk-2TVRHXRK.js → chunk-MSPZOEFB.js} +1 -1
- package/dist/{chunk-YZKPZXHY.js → chunk-MY32TBBR.js} +1 -1
- package/dist/{chunk-BGGNBWAJ.js → chunk-N6DO2LBH.js} +1 -1
- package/dist/{chunk-ARS72637.js → chunk-OFEOWKM3.js} +1 -1
- package/dist/{chunk-TZZYRDCF.js → chunk-P4HW2NTZ.js} +1 -1
- package/dist/{chunk-LMJTY32X.js → chunk-RHNKYNNZ.js} +1 -1
- package/dist/{chunk-RZFINU7J.js → chunk-RIMJDJWY.js} +1 -1
- package/dist/{chunk-ZKYYZ5NO.js → chunk-RN4OSVTG.js} +2 -2
- package/dist/{chunk-ME5QSYWX.js → chunk-RV2NXHIC.js} +1 -1
- package/dist/{chunk-SQFNMZJ2.js → chunk-S2C62SDY.js} +1 -1
- package/dist/chunk-SJ2KQKOV.js +3 -0
- package/dist/{chunk-G6AF2JUA.js → chunk-UZJ7MRBV.js} +1 -1
- package/dist/{chunk-XBE7PGVY.js → chunk-VBCE4U4B.js} +1 -1
- package/dist/chunk-WIA7TPK3.js +2 -0
- package/dist/{chunk-F2K3XFFH.js → chunk-WJGBXJT4.js} +2 -2
- package/dist/{chunk-7LFCSSPX.js → chunk-WWH7CW5R.js} +1 -1
- package/dist/{chunk-NFGG5DA2.js → chunk-XQL53VB7.js} +1 -1
- package/dist/{chunk-B2PZAB7J.js → chunk-ZG2V2ODK.js} +1 -1
- package/dist/{chunk-GIRXJOJI.js → chunk-ZZLR3O5A.js} +1 -1
- package/dist/{config-5OOP2BO3.js → config-6PAZZ7CR.js} +1 -1
- package/dist/{cover-cmd-Y5L4O4Q3.js → cover-cmd-K3LCXHAQ.js} +1 -1
- package/dist/{credentials-XCP6DJZZ.js → credentials-BJCIWQWA.js} +1 -1
- package/dist/descriptor-EHK3DRCZ.js +2 -0
- package/dist/{evidence-AX67Q6RN.js → evidence-7VE5EGEF.js} +1 -1
- package/dist/evolve-cmd-RUGUWKAG.js +2 -0
- package/dist/explain-VFIZTHFN.js +2 -0
- package/dist/{explain-cmd-RIDEMDMY.js → explain-cmd-KV5YUXKB.js} +1 -1
- package/dist/{explain-cmd-55WRDIMW.js → explain-cmd-U367SD4N.js} +1 -1
- package/dist/{extract-bind-ZDAXRQUS.js → extract-bind-YS7C4KZ3.js} +2 -2
- package/dist/{extract-cmd-5GGI6LAM.js → extract-cmd-Z4PMDIMZ.js} +2 -2
- package/dist/{gaps-cmd-P2DRK6FW.js → gaps-cmd-DTVDIOED.js} +1 -1
- package/dist/{gate-FACZRGOC.js → gate-B6C6KLFA.js} +1 -1
- package/dist/{generate-headless-DRDE46ON.js → generate-headless-IWY32HC4.js} +2 -2
- package/dist/{headless-io-GXHKDPHB.js → headless-io-PWW6YKH2.js} +1 -1
- package/dist/index.js +43 -43
- package/dist/ingest-C5ANIN7S.js +2 -0
- package/dist/ingest-cmd-LLC5CDQ5.js +3 -0
- package/dist/interactive-bind-ZIIJDRBU.js +7 -0
- package/dist/{lifecycle-cmd-55NZL3UO.js → lifecycle-cmd-BXE5IMFN.js} +1 -1
- package/dist/{list-cmd-JB2ABACD.js → list-cmd-KBWPYJMV.js} +1 -1
- package/dist/{list-commands-UDAL3SBY.js → list-commands-SSXJQGE7.js} +1 -1
- package/dist/{logical-ids-ATVR6PF2.js → logical-ids-3Y6RX5C2.js} +1 -1
- package/dist/login-flow-HRS6YACY.js +2 -0
- package/dist/{maintenance-cmd-E3HEEVQW.js → maintenance-cmd-VS3APIUN.js} +1 -1
- package/dist/{persist-recorded-session-BW3YSFMP.js → persist-recorded-session-3AOYZJT2.js} +1 -1
- package/dist/pipeline-IZSODNCC.js +2 -0
- package/dist/readmodel-XOGOELUP.js +2 -0
- package/dist/reconcile-cmd-6HVZJFG3.js +2 -0
- package/dist/{recording-banner-6FVTCUWQ.js → recording-banner-KKEUWS3N.js} +1 -1
- package/dist/{require-project-folder-AQUVEEJB.js → require-project-folder-NPTKR2AW.js} +1 -1
- package/dist/{revert-3TKLOYQA.js → revert-AQQ2VHRM.js} +1 -1
- package/dist/{review-cmd-RXPPC5GK.js → review-cmd-4WZUUOE4.js} +1 -1
- package/dist/run-2A7M7EJK.js +2 -0
- package/dist/run-6AFY35QW.js +2 -0
- package/dist/{run-test-md-AUK7NGLL.js → run-test-md-QNC6KDMN.js} +2 -2
- package/dist/{skill-installer-2MNPCPRD.js → skill-installer-ULFNSE6X.js} +1 -1
- package/dist/{spawner-XCOMTJJC.js → spawner-DWONVIPI.js} +1 -1
- package/dist/tcg-generate-IHHPRVNG.js +2 -0
- package/dist/{testmd-actions-TU4KTO32.js → testmd-actions-S3ZNOZEK.js} +1 -1
- package/dist/token-refresh-CFVOA62N.js +2 -0
- package/dist/{validate-basic-IYMPP7C7.js → validate-basic-4OLDKIA2.js} +1 -1
- package/dist/{version-check-MUPSKONS.js → version-check-UL4S6R4N.js} +1 -1
- package/dist/{view-cmd-QE2FS3GB.js → view-cmd-FRMQF76B.js} +1 -1
- package/dist/walk-session-N3BP57HK.js +2 -0
- package/package.json +16 -8
- package/bin/kane-cli.js +0 -2
- package/dist/ChatSurface-J777M5WC.js +0 -8
- package/dist/EvidenceViewOffer-JQDEAE2T.js +0 -2
- package/dist/SingleShotApp-QANGFAPO.js +0 -2
- package/dist/TestMdRunView-74A3LCNE.js +0 -2
- package/dist/archive-committer-3NI773TP.js +0 -2
- package/dist/bind-FZ4X4SOK.js +0 -6
- package/dist/chunk-6RQAUK5F.js +0 -5
- package/dist/chunk-E4OYR32M.js +0 -2
- package/dist/chunk-FTD3B7QA.js +0 -2
- package/dist/chunk-GIGD4M7V.js +0 -5
- package/dist/chunk-I2S6KNZW.js +0 -2
- package/dist/chunk-IACKIGPX.js +0 -2
- package/dist/chunk-NFOBDHZK.js +0 -147
- package/dist/chunk-Q4HLQOJI.js +0 -7
- package/dist/chunk-SGU72YLH.js +0 -9
- package/dist/chunk-TY5LWU6I.js +0 -14
- package/dist/chunk-YANCBRER.js +0 -3
- package/dist/descriptor-SL5A7RQE.js +0 -2
- package/dist/distill-cmd-EYCCCFL3.js +0 -2
- package/dist/evolve-cmd-HR25DRTC.js +0 -2
- package/dist/explain-JIXUWEFJ.js +0 -2
- package/dist/ingest-4CGBXC2L.js +0 -2
- package/dist/ingest-cmd-X7BWGIN7.js +0 -3
- package/dist/interactive-bind-T6OBLZCT.js +0 -7
- package/dist/login-flow-LJ4BH3OS.js +0 -2
- package/dist/pipeline-TZJ652NT.js +0 -2
- package/dist/readmodel-MPTENJ2R.js +0 -2
- package/dist/reconcile-cmd-242S7XNO.js +0 -8
- package/dist/run-UGAOGR3B.js +0 -2
- package/dist/signals-cmd-LXHZQLXZ.js +0 -2
- package/dist/tcg-generate-E5X23RVP.js +0 -2
- package/dist/token-refresh-GGLARJV4.js +0 -2
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
2
|
function l(r){let{isAgent:c,log:m}=r,a=r.stdout??process.stderr,s=r.stdin??process.stdin,p=t=>{c&&process.stdout.write(JSON.stringify(t)+`
|
|
3
|
-
`)};return{async runSteps(t){let{default:e}=await import("./react-QWOAB3TB.js"),{render:o}=await import("./build-JIKYOZUH.js"),{TestMdRunView:i}=await import("./TestMdRunView-
|
|
3
|
+
`)};return{async runSteps(t){let{default:e}=await import("./react-QWOAB3TB.js"),{render:o}=await import("./build-JIKYOZUH.js"),{TestMdRunView:i}=await import("./TestMdRunView-JXRXMACE.js"),{ScrollbackProvider:n}=await import("./scrollback-JLPJR25X.js"),{waitUntilExit:d}=o(e.createElement(n,null,e.createElement(i,t)),{stdout:a,stdin:s,exitOnCtrlC:!1});await d()},async runUpload(t,e){let{renderUploadProgress:o}=await import("./CliUploadProgress-ULRSPKY3.js");return await o(t,e)},async onSummary(t){try{let{default:e}=await import("./react-QWOAB3TB.js"),{render:o}=await import("./build-JIKYOZUH.js"),{AutoExitSummaryBox:i}=await import("./SummaryBox-4T545XRB.js"),{waitUntilExit:n}=o(e.createElement(i,{data:t}),{stdout:a,stdin:s});await n()}catch(e){m("warn","TEST_MD_SUMMARY_RENDER_FAILED","Summary box render failed",{error:String(e)})}},async onLinks(t){try{let{default:e}=await import("./react-QWOAB3TB.js"),{render:o}=await import("./build-JIKYOZUH.js"),{LinksBox:i}=await import("./LinksBox-ZS25VTBY.js"),{waitUntilExit:n}=o(e.createElement(i,t),{stdout:a,stdin:s});await n()}catch(e){m("warn","TEST_MD_LINKS_RENDER_FAILED","LinksBox render failed",{error:String(e)})}},onLockState(t){p({type:"test_md_lock_state",...t})},onRetryAttempt(t){p({type:"test_md_retry_attempt",...t})},onAgentEvent(t){p(t)}}}export{l as a};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as n}from"./chunk-RZ4F3BHX.js";import{a as c}from"./chunk-
|
|
2
|
+
import{a as n}from"./chunk-RZ4F3BHX.js";import{a as c}from"./chunk-AKHUNBQS.js";import{v as s,w as a}from"./chunk-6SGPN76K.js";import{createHash as h,randomBytes as g}from"crypto";var l=class{authBaseUrl;consentUrl;constructor(t="prod"){let e=c(t);this.authBaseUrl=e.authBaseUrl,this.consentUrl=e.consentUrl}static generatePkce(){let t=g(96).toString("base64url").slice(0,128),e=h("sha256").update(t).digest("base64url");return[t,e]}buildAuthorizationUrl(t,e,r,o){let i=new URLSearchParams({response_type:"code",client_id:t,redirect_uri:o,scope:a,code_challenge:e,code_challenge_method:"S256",state:r});return`${this.consentUrl}/oauth2?${i.toString()}`}async registerClient(t){let e=await n(`${this.authBaseUrl}/oauth2/register`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_name:s,redirect_uris:[t],grant_types:["authorization_code"],response_types:["code"],client_type:"public",application_type:"native"})});if(!e.ok)throw new Error(`DCR failed: ${e.status} ${await e.text()}`);return e.json()}async exchangeCode(t,e,r,o){let i=await n(`${this.authBaseUrl}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:t,redirect_uri:o,client_id:e,code_verifier:r})});if(!i.ok)throw new Error(`Token exchange failed: ${i.status}`);return i.json()}async refreshToken(t,e){let r=await n(`${this.authBaseUrl}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:t,client_id:e})});if(!r.ok)throw new Error(`Token refresh failed: ${r.status}`);return r.json()}async revokeToken(t,e,r="access_token"){await n(`${this.authBaseUrl}/oauth2/revoke`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t,token_type_hint:r,client_id:e})})}async validateToken(t){let e=new AbortController,r=setTimeout(()=>e.abort(),1e4);try{let o=await n(`${this.authBaseUrl}/api/user`,{headers:{Authorization:`Bearer ${t}`,Accept:"application/json","Content-Type":"application/json"},signal:e.signal});return clearTimeout(r),o.ok}catch{return clearTimeout(r),!1}}};export{l as a};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{c as h}from"./chunk-
|
|
2
|
+
import{c as h}from"./chunk-EHN5HTUD.js";import{a as y,b as v}from"./chunk-L5LI2JF4.js";import{randomUUID as k,randomBytes as D}from"crypto";import{promises as i}from"fs";import{join as c}from"path";function p(t=process.cwd()){return c(t,".testmuai","evidence")}function b(t,e=process.cwd()){return c(p(e),`${t}.evidence`)}function W(){return k()}var S=/\.evidence\.tmp-(\d+)-[0-9a-f]+$/;async function _(t,e,r=process.cwd()){let n=p(r);await i.mkdir(n,{recursive:!0});let o=b(e,r),a=c(n,`${e}.evidence.tmp-${process.pid}-${D(6).toString("hex")}`);return await i.copyFile(t,a),await i.rename(a,o),o}async function I(t=process.cwd()){let e=p(t),r;try{r=await i.readdir(e)}catch{return[]}return r.filter(n=>n.endsWith(".evidence")).sort().map(n=>c(e,n))}async function L(t,e=process.cwd()){if(await P(t))return t;let r=b(t,e);return await P(r)?r:null}async function P(t){try{return await i.stat(t),!0}catch{return!1}}function E(t){try{return process.kill(t,0),!0}catch(e){return e?.code==="EPERM"}}async function M(t=process.cwd(),e=E){let r=p(t);await h(r).catch(()=>({restored:[],removed:[]}));let n=[],o=[],a;try{a=await i.readdir(r,{withFileTypes:!0})}catch{return{aborted:n,removed:o}}for(let u of a){let d=u.name.match(S);if(d){let g=Number(d[1]);if(Number.isFinite(g)&&e(g))continue;let w=c(r,u.name);await i.rm(w,{force:!0}),o.push(w);continue}if(!u.isDirectory()||!u.name.endsWith(".evidence"))continue;let m=c(r,u.name),f=c(m,"run.yaml"),s;try{s=y(await i.readFile(f,"utf8"))}catch{continue}if(s?.status!=="running")continue;let l=s?.environment?.pid;if(typeof l=="number"&&e(l))continue;let x=s?.environment?.saved===!0;s?.environment?.origin==="inline"&&!x?(await i.rm(m,{recursive:!0,force:!0}),o.push(m)):(s.status="aborted",await i.writeFile(f,v(s,{lineWidth:-1})),n.push(m))}return{aborted:n,removed:o}}export{p as a,b,W as c,_ as d,I as e,L as f,M as g};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as b}from"./chunk-VBCE4U4B.js";import{a as O}from"./chunk-AKHUNBQS.js";import{e as w,j as N}from"./chunk-6SGPN76K.js";import{spawn as U,execSync as B}from"child_process";import{appendFileSync as L,existsSync as E,mkdirSync as K}from"fs";import{homedir as D}from"os";import{join as G,resolve as t,dirname as C}from"path";import{fileURLToPath as W}from"url";import{createInterface as V}from"readline";async function*T(e){let n=V({input:e,crlfDelay:1/0});for await(let l of n){let r=l.trim();if(r)try{let a=JSON.parse(r);a&&typeof a.type=="string"&&(yield a)}catch{}}}function M(e){return e==="action"?{set:{V16_AGENT_ENABLE_ALL_BLOCKERS:"true",V16_BIFURCATION_PHASES:"1"},unset:["V16_NETWORK_WS","V16_NETWORK_SSE"]}:{set:{V16_BIFURCATION_PHASES:"1"},unset:["V16_AGENT_ENABLE_ALL_BLOCKERS","V16_NETWORK_WS","V16_NETWORK_SSE"]}}function h(e){return e?{set:{},unset:["V16_AGENT_SKIP_CP_FINAL"]}:{set:{V16_AGENT_SKIP_CP_FINAL:"true"},unset:[]}}function I(e){return e==="dom"?{set:{V16_AGENT_ENABLE_TEXTUAL_VISUAL:"true"},unset:[]}:{set:{},unset:["V16_AGENT_ENABLE_TEXTUAL_VISUAL"]}}var o=C(W(import.meta.url));function j(){for(let e of["python3","python"])try{return B(`${e} --version`,{stdio:"ignore"}),e}catch{}return null}function $(){let n=process.platform==="win32"?"v16-runner.exe":"v16-runner",l={"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}`,a=l[r];if(a)for(let s of a){let m=[t(o,"..","node_modules",s,"bin",n),t(o,"..","..","node_modules",s,"bin",n),t(o,"..","..","..","node_modules",s,"bin",n),t(o,"..","..","..","..","node_modules",s,"bin",n)];for(let u of m)if(E(u))return{cmd:u,args:[]}}let f=[t(o,"bin",n),t(o,"..","bin",n),t(o,"..","..","..","..","v16-runner","dist",n),t(o,"..","..","..","v16-runner","dist",n),t(o,"..","..","v16-runner","dist",n),t(process.cwd(),"v16-runner","dist",n),t(process.cwd(),"..","v16-runner","dist",n)];for(let s of f)if(E(s))return{cmd:s,args:[]};let v=[t(o,"..","..","v16-runner"),t(o,"..","..","..","..","v16-runner"),t(o,"..","..","..","v16-runner"),t(process.cwd(),"v16-runner"),t(process.cwd(),"..","v16-runner")];for(let s of v)if(E(t(s,"main.py"))){for(let u of[t(s,".venv","bin","python"),t(s,"..",".venv","bin","python"),t(s,"..","browser-agent",".venv","bin","python")])if(E(u))return{cmd:u,args:["main.py"],cwd:s};let m=j();if(m)return{cmd:m,args:["main.py"],cwd:s}}return null}function ie(e,n){let l=$();if(!l)throw new Error("v16-runner not found. Build the binary with `cd v16-runner && python build.py` or ensure Python is available.");process.env.KANE_SPAWN_DEBUG&&process.stderr.write(`[spawn-debug] ${JSON.stringify(l)}
|
|
3
|
+
`);let r={...process.env};n?.environment&&(r.TESTMUAI_ENV=n.environment),r.TESTMUAI_SOURCE="kane-cli",process.platform==="win32"&&(r.PYTHONIOENCODING="utf-8");let a=O(n?.environment);r.V16_SERVER_API_HOST=a.v16ServerHost,r.ATMS_URL=a.tmsBaseUrl.replace(/\/api\/?$/,""),e.username&&e.access_key&&(r.LT_USERNAME=e.username,r.LT_ACCESS_KEY=e.access_key),e.session_id&&(r.TESTMUAI_SESSION_ID=e.session_id);let f=M(n?.mode??"testing");Object.assign(r,f.set);for(let i of f.unset)delete r[i];let v=new b().load(),s=I(n?.assertionMode??(v.assertion_mode==="visual"?"visual":"dom"));Object.assign(r,s.set);for(let i of s.unset)delete r[i];let m=n?.finalValidation??v.final_validation,u=h(m);Object.assign(r,u.set);for(let i of u.unset)delete r[i];let g=process.env.KANE_AP_MODE,S=g?{v1:"v1",v2:"v2"}[g]:void 0;S!==void 0&&e.ap_mode===void 0&&(e.ap_mode=S),e.telemetry_proxy_url===void 0&&process.env.KANE_TELEMETRY!=="0"&&(e.telemetry_proxy_url=N),e.media_upload===void 0&&e.org_id&&e.username&&e.access_key&&(e.media_upload={url:a.shareApiBaseUrl.replace(/\/$/,"")+"/mfs/v1.0/media/upload",artefacts_host:a.mediaArtefactsHost,org_id:e.org_id,media_dir:w});let d=U(l.cmd,l.args,{stdio:["pipe","pipe","pipe"],env:r,cwd:l.cwd});d.stdin.on("error",()=>{}),d.stdin.write(JSON.stringify(e)+`
|
|
4
|
+
`);let p=e.session_id?G(D(),".testmuai","kaneai","sessions",e.session_id,"runner-stderr.log"):null;if(p)try{K(C(p),{recursive:!0}),L(p,`--- runner spawn ${new Date().toISOString()} run_index=${e.run_index} ---
|
|
5
|
+
`)}catch{}let R=1e5,_="";d.stderr.on("data",i=>{if(_+=i.toString(),_.length>R&&(_=_.slice(-R)),p)try{L(p,i)}catch{}}),d.on("error",i=>{n?.log?.("error","RUNNER_SPAWN_ERROR","Runner spawn error",{error:i.message})});let A=null,y=null,k=new Promise(i=>{d.on("close",(c,x)=>{A=c,y=x?String(x):null,n?.log?.("info","RUNNER_EXIT","Runner exited",{code:c,signal:y??"none"}),i({code:c,signal:y})})}),P=T(d.stdout);return{child:d,events:P,sendUserResponse(i){let c=JSON.stringify({type:"user_response",answer:i});try{d.stdin.write(c+`
|
|
6
|
+
`)}catch{}},sendCancel(i){let c=JSON.stringify({type:"cancel",reason:i});try{d.stdin.write(c+`
|
|
7
|
+
`)}catch{}},cancel(){d.kill("SIGTERM")},get stderr(){return _},get exitCode(){return A},get exitSignal(){return y},exited:k}}export{$ as a,ie as b};
|