@testmuai/kane-cli 0.2.1 → 0.2.2

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 (37) hide show
  1. package/dist/{ChromeProfilePicker-3WP7WWKE.js → ChromeProfilePicker-XLIHAR2Y.js} +1 -1
  2. package/dist/{CliFeedbackPrompt-M5INPPC2.js → CliFeedbackPrompt-UWLFODG7.js} +1 -1
  3. package/dist/{CliUploadProgress-N33PNNIN.js → CliUploadProgress-UOBTPQO2.js} +1 -1
  4. package/dist/{ConfigView-MSV2SCM5.js → ConfigView-LORCKADT.js} +1 -1
  5. package/dist/FolderPicker-UOLFYHBS.js +2 -0
  6. package/dist/HelpView-QSQBGS3R.js +2 -0
  7. package/dist/{LinksBox-FWEUDQKL.js → LinksBox-HCED4U3Y.js} +1 -1
  8. package/dist/{LoginWizard-I2ECCV5L.js → LoginWizard-EYX4VLRU.js} +1 -1
  9. package/dist/{ProfilesView-A2O44JBO.js → ProfilesView-T56LINS3.js} +1 -1
  10. package/dist/ProjectPicker-FHY3WO2I.js +2 -0
  11. package/dist/{WhoamiView-5KBE3JYU.js → WhoamiView-2LCDJ7LM.js} +1 -1
  12. package/dist/{changelog-55ITZPQ5.js → changelog-G5K7UY44.js} +1 -1
  13. package/dist/{chunk-JJU63IV4.js → chunk-2BDMMEKZ.js} +1 -1
  14. package/dist/{chunk-3LZPBHIR.js → chunk-2SAJWTZL.js} +1 -1
  15. package/dist/{chunk-BNJ6GSDA.js → chunk-2WZN5PNJ.js} +1 -1
  16. package/dist/{chunk-UFZAQ5P6.js → chunk-733KSBIW.js} +1 -1
  17. package/dist/{chunk-TYLGP66W.js → chunk-7L6XR6ON.js} +1 -1
  18. package/dist/{chunk-HYR5SALH.js → chunk-ES665H5Q.js} +1 -1
  19. package/dist/{chunk-O2HIAIOC.js → chunk-GNMGQOGV.js} +1 -1
  20. package/dist/{chunk-RE43ZRYS.js → chunk-GRQIIIKB.js} +1 -1
  21. package/dist/chunk-I7YWZ3D2.js +2 -0
  22. package/dist/{chunk-JGWWZTQP.js → chunk-LN4R7PDY.js} +1 -1
  23. package/dist/{chunk-OUXII47G.js → chunk-P5KW7XFK.js} +1 -1
  24. package/dist/{chunk-IJTXDIJZ.js → chunk-SKKMAOD4.js} +1 -1
  25. package/dist/{chunk-7JOLGZTB.js → chunk-TJQXEAEK.js} +1 -1
  26. package/dist/{chunk-CKV5QDKM.js → chunk-ZU6PFD6P.js} +1 -1
  27. package/dist/index.js +7 -7
  28. package/dist/pipeline-7NY333ZT.js +2 -0
  29. package/dist/{tms-client-YS6LCK2T.js → tms-client-QWVBCUUT.js} +1 -1
  30. package/dist/{updater-ZEKNEF2N.js → updater-SIJ34O2X.js} +1 -1
  31. package/dist/{version-check-ESZ4FUKM.js → version-check-GHGJIUN6.js} +1 -1
  32. package/package.json +4 -4
  33. package/dist/FolderPicker-QDCBF2RX.js +0 -2
  34. package/dist/HelpView-IBMGS7HU.js +0 -2
  35. package/dist/ProjectPicker-ZKXRW46M.js +0 -2
  36. package/dist/chunk-XQBQB3VZ.js +0 -2
  37. package/dist/pipeline-AYK5AZRB.js +0 -2
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c}from"./chunk-7JOLGZTB.js";import"./chunk-HCBYKLMW.js";import"./chunk-UFZAQ5P6.js";import"./chunk-Q7JVDEOV.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{c as ChromeProfilePicker,b as formatChromeProfileLine,a as listChromeProfiles};
2
+ import{a,b,c}from"./chunk-TJQXEAEK.js";import"./chunk-HCBYKLMW.js";import"./chunk-733KSBIW.js";import"./chunk-Q7JVDEOV.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{c as ChromeProfilePicker,b as formatChromeProfileLine,a as listChromeProfiles};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as r}from"./chunk-JJU63IV4.js";import"./chunk-HCBYKLMW.js";import"./chunk-UFZAQ5P6.js";import{c as e}from"./chunk-Q7JVDEOV.js";import{a as i}from"./chunk-6YGTRKDT.js";import{e as m}from"./chunk-UR6MHSHU.js";var t=m(i(),1);async function d(){return new Promise(o=>{let c=e(t.default.createElement(r,{onSubmit:n=>{c.unmount(),o(n)}}),{stdout:process.stderr,exitOnCtrlC:!1})})}export{d as renderFeedbackPrompt};
2
+ import{a as r}from"./chunk-2BDMMEKZ.js";import"./chunk-HCBYKLMW.js";import"./chunk-733KSBIW.js";import{c as e}from"./chunk-Q7JVDEOV.js";import{a as i}from"./chunk-6YGTRKDT.js";import{e as m}from"./chunk-UR6MHSHU.js";var t=m(i(),1);async function d(){return new Promise(o=>{let c=e(t.default.createElement(r,{onSubmit:n=>{c.unmount(),o(n)}}),{stdout:process.stderr,exitOnCtrlC:!1})})}export{d as renderFeedbackPrompt};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{c as P,d as g,e as f}from"./chunk-CKV5QDKM.js";import{a as c}from"./chunk-HCBYKLMW.js";import"./chunk-UFZAQ5P6.js";import{c as d}from"./chunk-Q7JVDEOV.js";import{a as h}from"./chunk-6YGTRKDT.js";import{e as p}from"./chunk-UR6MHSHU.js";var e=p(h(),1);var m=p(c(),1);function w({pipeline:t,buildShareUrl:r,onDone:o}){let[n,i]=(0,e.useState)(P()),[S,l]=(0,e.useState)("uploading"),[U,R]=(0,e.useState)(),[C,E]=(0,e.useState)();return(0,e.useEffect)(()=>{let x=t.config.onProgress;t.config.onProgress=(s,u,a)=>{x(s,u,a),i(y=>g(y,s,u,a))},t.execute().then(s=>{s.success?(R(r?.(s)),l("success")):(E(s.error),l("failed")),setTimeout(()=>o(s),1500)})},[]),(0,m.jsx)(f,{steps:n,status:S,testUrl:U,error:C})}async function O(t,r){return new Promise(o=>{let n=d(e.default.createElement(w,{pipeline:t,buildShareUrl:r,onDone:i=>{n.unmount(),o(i)}}),{stdout:process.stderr,exitOnCtrlC:!1})})}export{O as renderUploadProgress};
2
+ import{c as P,d as g,e as f}from"./chunk-ZU6PFD6P.js";import{a as c}from"./chunk-HCBYKLMW.js";import"./chunk-733KSBIW.js";import{c as d}from"./chunk-Q7JVDEOV.js";import{a as h}from"./chunk-6YGTRKDT.js";import{e as p}from"./chunk-UR6MHSHU.js";var e=p(h(),1);var m=p(c(),1);function w({pipeline:t,buildShareUrl:r,onDone:o}){let[n,i]=(0,e.useState)(P()),[S,l]=(0,e.useState)("uploading"),[U,R]=(0,e.useState)(),[C,E]=(0,e.useState)();return(0,e.useEffect)(()=>{let x=t.config.onProgress;t.config.onProgress=(s,u,a)=>{x(s,u,a),i(y=>g(y,s,u,a))},t.execute().then(s=>{s.success?(R(r?.(s)),l("success")):(E(s.error),l("failed")),setTimeout(()=>o(s),1500)})},[]),(0,m.jsx)(f,{steps:n,status:S,testUrl:U,error:C})}async function O(t,r){return new Promise(o=>{let n=d(e.default.createElement(w,{pipeline:t,buildShareUrl:r,onDone:i=>{n.unmount(),o(i)}}),{stdout:process.stderr,exitOnCtrlC:!1})})}export{O as renderUploadProgress};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as f,b as l,c as r}from"./chunk-HYR5SALH.js";import{a as d}from"./chunk-HCBYKLMW.js";import{r as o}from"./chunk-UFZAQ5P6.js";import{a as t,j as m}from"./chunk-Q7JVDEOV.js";import{a as h}from"./chunk-6YGTRKDT.js";import{e as n}from"./chunk-UR6MHSHU.js";var c=n(h(),1);var e=n(d(),1);function D({model:s,authLabel:p,profile:b,env:g,defaultUrl:a,projectId:v,folderId:w,windowSize:x,chromeProfile:C,setupComplete:i}){let{exit:u}=m();return(0,c.useEffect)(()=>{let B=setTimeout(()=>u(),50);return()=>clearTimeout(B)},[u]),(0,e.jsx)(t,{flexDirection:"column",children:(0,e.jsx)(f,{title:"Configuration",children:(0,e.jsxs)(t,{flexDirection:"column",paddingY:1,children:[(0,e.jsx)(r,{label:"Auth"}),(0,e.jsx)(l,{label:" method",value:p}),(0,e.jsx)(l,{label:" profile",value:b}),(0,e.jsx)(l,{label:" env",value:g}),(0,e.jsx)(r,{label:"Defaults"}),(0,e.jsx)(l,{label:" url",value:a??"(none)",valueColor:a?o.cyan:o.dimmed}),(0,e.jsx)(l,{label:" model",value:s}),(0,e.jsx)(l,{label:" window",value:x}),(0,e.jsx)(l,{label:" project",value:v??"(none)"}),(0,e.jsx)(l,{label:" folder",value:w??"(none)"}),(0,e.jsx)(r,{label:"Paths"}),(0,e.jsx)(l,{label:" chrome",value:C,valueColor:o.dimmed}),(0,e.jsx)(r,{label:"Setup"}),(0,e.jsx)(l,{label:" status",value:i?"complete":"pending",valueColor:i?o.green:o.yellow})]})})})}export{D as ConfigView};
2
+ import{a as f,b as l,c as r}from"./chunk-ES665H5Q.js";import{a as d}from"./chunk-HCBYKLMW.js";import{r as o}from"./chunk-733KSBIW.js";import{a as t,j as m}from"./chunk-Q7JVDEOV.js";import{a as h}from"./chunk-6YGTRKDT.js";import{e as n}from"./chunk-UR6MHSHU.js";var c=n(h(),1);var e=n(d(),1);function D({model:s,authLabel:p,profile:b,env:g,defaultUrl:a,projectId:v,folderId:w,windowSize:x,chromeProfile:C,setupComplete:i}){let{exit:u}=m();return(0,c.useEffect)(()=>{let B=setTimeout(()=>u(),50);return()=>clearTimeout(B)},[u]),(0,e.jsx)(t,{flexDirection:"column",children:(0,e.jsx)(f,{title:"Configuration",children:(0,e.jsxs)(t,{flexDirection:"column",paddingY:1,children:[(0,e.jsx)(r,{label:"Auth"}),(0,e.jsx)(l,{label:" method",value:p}),(0,e.jsx)(l,{label:" profile",value:b}),(0,e.jsx)(l,{label:" env",value:g}),(0,e.jsx)(r,{label:"Defaults"}),(0,e.jsx)(l,{label:" url",value:a??"(none)",valueColor:a?o.cyan:o.dimmed}),(0,e.jsx)(l,{label:" model",value:s}),(0,e.jsx)(l,{label:" window",value:x}),(0,e.jsx)(l,{label:" project",value:v??"(none)"}),(0,e.jsx)(l,{label:" folder",value:w??"(none)"}),(0,e.jsx)(r,{label:"Paths"}),(0,e.jsx)(l,{label:" chrome",value:C,valueColor:o.dimmed}),(0,e.jsx)(r,{label:"Setup"}),(0,e.jsx)(l,{label:" status",value:i?"complete":"pending",valueColor:i?o.green:o.yellow})]})})})}export{D as ConfigView};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a,b}from"./chunk-SKKMAOD4.js";import"./chunk-7L6XR6ON.js";import"./chunk-I7YWZ3D2.js";import"./chunk-HCBYKLMW.js";import"./chunk-733KSBIW.js";import"./chunk-Q7JVDEOV.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as FolderPicker,a as formatFolderLine};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a as f}from"./chunk-HCBYKLMW.js";import{a as h,b as c,r as t}from"./chunk-733KSBIW.js";import{a as n,b as o,j as p,k as x}from"./chunk-Q7JVDEOV.js";import{a as T}from"./chunk-6YGTRKDT.js";import{e as u}from"./chunk-UR6MHSHU.js";var b=u(T(),1);var e=u(f(),1),w="https://www.testmuai.com/support/docs/kane-cli-introduction",B="https://github.com/LambdaTest/kane-cli/issues";function L(){let{exit:l}=p(),{stdout:i}=x(),s=i?.columns??80;return(0,b.useEffect)(()=>{let d=setTimeout(()=>l(),50);return()=>clearTimeout(d)},[l]),(0,e.jsxs)(n,{flexDirection:"column",children:[(0,e.jsxs)(n,{paddingX:1,paddingTop:1,flexDirection:"column",children:[(0,e.jsx)(o,{color:t.purple,bold:!0,children:c}),(0,e.jsxs)(n,{children:[(0,e.jsx)(o,{color:t.dimmed,children:"Browser automation powered by AI "}),(0,e.jsxs)(o,{color:t.muted,children:[" v",h]})]})]}),(0,e.jsx)(o,{children:" "}),(0,e.jsx)(m,{title:"USAGE",children:(0,e.jsxs)(o,{color:t.cyan,children:[" $ ",c," ","<command>"," [flags]"]})}),(0,e.jsxs)(m,{title:"COMMANDS",children:[(0,e.jsx)(a,{cmd:"run",args:"<objective>",desc:"Run a browser automation task",highlight:!0}),(0,e.jsx)(a,{cmd:"setup",desc:"First-time auth & configuration"}),(0,e.jsx)(a,{cmd:"login",desc:"OAuth PKCE login (opens browser)"}),(0,e.jsx)(a,{cmd:"logout",desc:"Revoke tokens + delete profile"}),(0,e.jsx)(a,{cmd:"whoami",desc:"Show authenticated identity"}),(0,e.jsx)(a,{cmd:"config",args:"show|set-\u2026|reset",desc:"Manage configuration"}),(0,e.jsx)(a,{cmd:"profiles",args:"list|switch|delete",desc:"Manage auth profiles"})]}),(0,e.jsxs)(m,{title:"RUN FLAGS",children:[(0,e.jsx)(r,{long:"--url",arg:"<url>",desc:"Target URL"}),(0,e.jsx)(r,{long:"--max-steps",arg:"<n>",desc:"Max agent steps (default: 30)"}),(0,e.jsx)(r,{long:"--timeout",arg:"<sec>",desc:"Kill run after N seconds"}),(0,e.jsx)(r,{long:"--headless",desc:"No visible browser window"}),(0,e.jsx)(r,{long:"--variables",arg:"<json>",desc:"Inline variables as JSON"}),(0,e.jsx)(r,{long:"--variables-file",arg:"<path>",desc:"Load variables from file"}),(0,e.jsx)(r,{long:"--ws-endpoint",arg:"<url>",desc:"Remote browser (LambdaTest)"}),(0,e.jsx)(r,{long:"--cdp-endpoint",arg:"<url>",desc:"Connect to existing Chrome CDP"}),(0,e.jsx)(r,{long:"--cft",desc:"Use Playwright Chromium instead of managed Chrome"}),(0,e.jsx)(r,{long:"--global-context",arg:"<file>",desc:"Override global context markdown"}),(0,e.jsx)(r,{long:"--local-context",arg:"<file>",desc:"Override local context markdown"}),(0,e.jsx)(r,{long:"--username",arg:"<user>",desc:"Basic auth (skip OAuth)"}),(0,e.jsx)(r,{long:"--access-key",arg:"<key>",desc:"Basic auth access key"}),(0,e.jsx)(r,{long:"--env",arg:"<name>",desc:"Environment (prod or stage)"}),(0,e.jsx)(r,{long:"--agent",desc:"NDJSON output (no UI)",highlight:!0})]}),(0,e.jsxs)(m,{title:"EXAMPLES",children:[(0,e.jsx)(g,{label:"Search",cmd:`${c} run "Search for laptop" --url https://amazon.in`}),(0,e.jsx)(g,{label:"Headless",cmd:`${c} run "Verify login" --url https://app.example.com --headless`}),(0,e.jsx)(g,{label:"Variables",cmd:`${c} run "Login as {{user}}" --url https://app.com --variables '{"user":{"value":"alice"}}'`}),(0,e.jsx)(g,{label:"Agent",cmd:`${c} run "Add to cart" --url https://shop.com --agent | jq .status`})]}),(0,e.jsxs)(n,{flexDirection:"column",marginTop:0,paddingX:1,children:[(0,e.jsx)(o,{color:t.muted,children:"\u2500".repeat(Math.min(s-2,70))}),(0,e.jsxs)(n,{gap:3,children:[(0,e.jsxs)(n,{children:[(0,e.jsx)(o,{color:t.dimmed,children:"Docs "}),(0,e.jsx)(o,{color:t.cyan,underline:!0,children:w})]}),(0,e.jsxs)(n,{children:[(0,e.jsx)(o,{color:t.dimmed,children:"Bugs "}),(0,e.jsx)(o,{color:t.cyan,underline:!0,children:B})]})]})]}),(0,e.jsx)(o,{children:" "})]})}function m({title:l,children:i}){return(0,e.jsxs)(n,{flexDirection:"column",marginBottom:1,children:[(0,e.jsx)(n,{marginLeft:1,children:(0,e.jsx)(o,{bold:!0,color:t.dimmed,children:l})}),i]})}function a({cmd:l,args:i,desc:s,highlight:d}){return(0,e.jsxs)(n,{marginLeft:2,children:[(0,e.jsx)(n,{width:12,children:(0,e.jsx)(o,{color:d?t.purple:t.green,bold:!0,children:l})}),(0,e.jsx)(n,{width:28,children:i?(0,e.jsx)(o,{color:t.dimmed,children:i}):null}),(0,e.jsx)(o,{color:t.dimmed,children:s})]})}function r({long:l,arg:i,desc:s,highlight:d}){return(0,e.jsxs)(n,{marginLeft:2,children:[(0,e.jsxs)(n,{width:26,children:[(0,e.jsx)(o,{color:d?t.purple:t.cyan,children:l}),i&&(0,e.jsxs)(o,{color:t.dimmed,children:[" ",i]})]}),(0,e.jsx)(o,{color:t.dimmed,children:s})]})}function g({label:l,cmd:i}){return(0,e.jsxs)(n,{marginLeft:2,flexDirection:"column",children:[(0,e.jsxs)(o,{color:t.dimmed,children:["# ",l]}),(0,e.jsxs)(o,{color:t.cyan,children:["$ ",i]})]})}export{L as HelpView};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-BNJ6GSDA.js";import"./chunk-HCBYKLMW.js";import"./chunk-UFZAQ5P6.js";import"./chunk-Q7JVDEOV.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as LinksBox};
2
+ import{a}from"./chunk-2WZN5PNJ.js";import"./chunk-HCBYKLMW.js";import"./chunk-733KSBIW.js";import"./chunk-Q7JVDEOV.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as LinksBox};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b}from"./chunk-JGWWZTQP.js";import"./chunk-HCBYKLMW.js";import"./chunk-UFZAQ5P6.js";import"./chunk-Q7JVDEOV.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as LoginWizard,a as getWizardSteps};
2
+ import{a,b}from"./chunk-LN4R7PDY.js";import"./chunk-HCBYKLMW.js";import"./chunk-733KSBIW.js";import"./chunk-Q7JVDEOV.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as LoginWizard,a as getWizardSteps};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b}from"./chunk-RE43ZRYS.js";import"./chunk-HCBYKLMW.js";import"./chunk-UFZAQ5P6.js";import"./chunk-Q7JVDEOV.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as ProfilesView,a as formatProfileLine};
2
+ import{a,b}from"./chunk-GRQIIIKB.js";import"./chunk-HCBYKLMW.js";import"./chunk-733KSBIW.js";import"./chunk-Q7JVDEOV.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as ProfilesView,a as formatProfileLine};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a,b}from"./chunk-2SAJWTZL.js";import"./chunk-7L6XR6ON.js";import"./chunk-I7YWZ3D2.js";import"./chunk-HCBYKLMW.js";import"./chunk-733KSBIW.js";import"./chunk-Q7JVDEOV.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as ProjectPicker,a as formatProjectLine};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as s,b as o}from"./chunk-HYR5SALH.js";import{a as x}from"./chunk-HCBYKLMW.js";import{r as i}from"./chunk-UFZAQ5P6.js";import{a as r,b as n,j as u}from"./chunk-Q7JVDEOV.js";import{a as B}from"./chunk-6YGTRKDT.js";import{e as t}from"./chunk-UR6MHSHU.js";var p=t(B(),1);var e=t(x(),1);function R({profile:f,env:g,authenticated:a,authMethod:v,username:m,tokenStatus:l,expiresAt:c}){let{exit:d}=u();return(0,p.useEffect)(()=>{let b=setTimeout(()=>d(),50);return()=>clearTimeout(b)},[d]),(0,e.jsx)(r,{flexDirection:"column",children:(0,e.jsx)(s,{title:"Identity",variant:a?"success":"warning",children:(0,e.jsxs)(r,{flexDirection:"column",paddingY:1,children:[(0,e.jsx)(r,{children:a?(0,e.jsx)(n,{color:i.green,bold:!0,children:"\u2713 Authenticated"}):(0,e.jsx)(n,{color:i.yellow,bold:!0,children:"\u26A0 Not logged in"})}),(0,e.jsxs)(r,{flexDirection:"column",marginTop:1,children:[(0,e.jsx)(o,{label:"Profile",value:f}),(0,e.jsx)(o,{label:"Environment",value:g}),(0,e.jsx)(o,{label:"Method",value:v}),m&&(0,e.jsx)(o,{label:"User",value:m}),l&&(0,e.jsx)(o,{label:"Token",value:l,valueColor:l==="valid"?i.green:l==="expired"?i.red:i.dimmed}),c&&(0,e.jsx)(o,{label:"Expires",value:c})]})]})})})}export{R as WhoamiView};
2
+ import{a as s,b as o}from"./chunk-ES665H5Q.js";import{a as x}from"./chunk-HCBYKLMW.js";import{r as i}from"./chunk-733KSBIW.js";import{a as r,b as n,j as u}from"./chunk-Q7JVDEOV.js";import{a as B}from"./chunk-6YGTRKDT.js";import{e as t}from"./chunk-UR6MHSHU.js";var p=t(B(),1);var e=t(x(),1);function R({profile:f,env:g,authenticated:a,authMethod:v,username:m,tokenStatus:l,expiresAt:c}){let{exit:d}=u();return(0,p.useEffect)(()=>{let b=setTimeout(()=>d(),50);return()=>clearTimeout(b)},[d]),(0,e.jsx)(r,{flexDirection:"column",children:(0,e.jsx)(s,{title:"Identity",variant:a?"success":"warning",children:(0,e.jsxs)(r,{flexDirection:"column",paddingY:1,children:[(0,e.jsx)(r,{children:a?(0,e.jsx)(n,{color:i.green,bold:!0,children:"\u2713 Authenticated"}):(0,e.jsx)(n,{color:i.yellow,bold:!0,children:"\u26A0 Not logged in"})}),(0,e.jsxs)(r,{flexDirection:"column",marginTop:1,children:[(0,e.jsx)(o,{label:"Profile",value:f}),(0,e.jsx)(o,{label:"Environment",value:g}),(0,e.jsx)(o,{label:"Method",value:v}),m&&(0,e.jsx)(o,{label:"User",value:m}),l&&(0,e.jsx)(o,{label:"Token",value:l,valueColor:l==="valid"?i.green:l==="expired"?i.red:i.dimmed}),c&&(0,e.jsx)(o,{label:"Expires",value:c})]})]})})})}export{R as WhoamiView};
@@ -1,4 +1,4 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{c as i,f as c}from"./chunk-UFZAQ5P6.js";import"./chunk-UR6MHSHU.js";import{readFileSync as h,writeFileSync as g,mkdirSync as u}from"fs";import{join as d}from"path";var l=d(i,"changelog-cache.json"),f=3600*1e3;function p(){try{let e=JSON.parse(h(l,"utf-8"));if(Date.now()-e.cachedAt<f)return e}catch{}return null}function y(e){try{u(i,{recursive:!0}),g(l,JSON.stringify({entries:e,cachedAt:Date.now()}))}catch{}}async function E(e){try{let t=p();if(t){let r=t.entries;return e?.all?r:r.slice(0,5)}let n=new AbortController,o=setTimeout(()=>n.abort(),5e3),a=await fetch(`${c}?per_page=30`,{headers:{Accept:"application/vnd.github+json"},signal:n.signal});if(clearTimeout(o),!a.ok)return[];let s=(await a.json()).map(r=>({version:r.tag_name.replace(/^v/,""),date:r.published_at?r.published_at.slice(0,10):"",body:r.body??""}));return y(s),e?.all?s:s.slice(0,5)}catch{return[]}}function A(e){if(e.length===0)return"Could not fetch changelog. Visit https://github.com/LambdaTest/kane-cli/releases";let t=["kane-cli Changelog","\u2500".repeat(40),""];for(let n of e){if(t.push(`v${n.version} (${n.date})`),n.body){let o=n.body.split(`
2
+ import{c as i,f as c}from"./chunk-733KSBIW.js";import"./chunk-UR6MHSHU.js";import{readFileSync as h,writeFileSync as g,mkdirSync as u}from"fs";import{join as d}from"path";var l=d(i,"changelog-cache.json"),f=3600*1e3;function p(){try{let e=JSON.parse(h(l,"utf-8"));if(Date.now()-e.cachedAt<f)return e}catch{}return null}function y(e){try{u(i,{recursive:!0}),g(l,JSON.stringify({entries:e,cachedAt:Date.now()}))}catch{}}async function E(e){try{let t=p();if(t){let r=t.entries;return e?.all?r:r.slice(0,5)}let n=new AbortController,o=setTimeout(()=>n.abort(),5e3),a=await fetch(`${c}?per_page=30`,{headers:{Accept:"application/vnd.github+json"},signal:n.signal});if(clearTimeout(o),!a.ok)return[];let s=(await a.json()).map(r=>({version:r.tag_name.replace(/^v/,""),date:r.published_at?r.published_at.slice(0,10):"",body:r.body??""}));return y(s),e?.all?s:s.slice(0,5)}catch{return[]}}function A(e){if(e.length===0)return"Could not fetch changelog. Visit https://github.com/LambdaTest/kane-cli/releases";let t=["kane-cli Changelog","\u2500".repeat(40),""];for(let n of e){if(t.push(`v${n.version} (${n.date})`),n.body){let o=n.body.split(`
3
3
  `).filter(a=>a.trim());for(let a of o)t.push(` ${a}`)}t.push("")}return t.join(`
4
4
  `)}export{E as fetchChangelog,A as formatChangelog};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as m}from"./chunk-HCBYKLMW.js";import{r as t}from"./chunk-UFZAQ5P6.js";import{a as p,b as r,i as a}from"./chunk-Q7JVDEOV.js";import{a as f}from"./chunk-6YGTRKDT.js";import{e as s}from"./chunk-UR6MHSHU.js";var c=s(f(),1);var e=s(m(),1);function R({onSubmit:n}){let[o,l]=(0,c.useState)(0),u=(0,c.useRef)(!1);return a((x,i)=>{u.current||(i.leftArrow||i.rightArrow?l(d=>d===0?1:0):i.return?(u.current=!0,n(o===0?"positive":"negative")):i.escape&&(u.current=!0,n(null)))}),(0,e.jsxs)(p,{marginTop:1,children:[(0,e.jsx)(r,{color:t.secondary,children:"Rate this session: "}),(0,e.jsx)(r,{color:o===0?t.primary:t.dim,children:o===0?"[ \u{1F44D} ]":" \u{1F44D} "}),(0,e.jsx)(r,{children:" "}),(0,e.jsx)(r,{color:o===1?t.primary:t.dim,children:o===1?"[ \u{1F44E} ]":" \u{1F44E} "}),(0,e.jsx)(r,{color:t.dim,children:" \u2190/\u2192 select \xB7 Enter submit \xB7 Esc skip"})]})}export{R as a};
2
+ import{a as m}from"./chunk-HCBYKLMW.js";import{r as t}from"./chunk-733KSBIW.js";import{a as p,b as r,i as a}from"./chunk-Q7JVDEOV.js";import{a as f}from"./chunk-6YGTRKDT.js";import{e as s}from"./chunk-UR6MHSHU.js";var c=s(f(),1);var e=s(m(),1);function R({onSubmit:n}){let[o,l]=(0,c.useState)(0),u=(0,c.useRef)(!1);return a((x,i)=>{u.current||(i.leftArrow||i.rightArrow?l(d=>d===0?1:0):i.return?(u.current=!0,n(o===0?"positive":"negative")):i.escape&&(u.current=!0,n(null)))}),(0,e.jsxs)(p,{marginTop:1,children:[(0,e.jsx)(r,{color:t.secondary,children:"Rate this session: "}),(0,e.jsx)(r,{color:o===0?t.primary:t.dim,children:o===0?"[ \u{1F44D} ]":" \u{1F44D} "}),(0,e.jsx)(r,{children:" "}),(0,e.jsx)(r,{color:o===1?t.primary:t.dim,children:o===1?"[ \u{1F44E} ]":" \u{1F44E} "}),(0,e.jsx)(r,{color:t.dim,children:" \u2190/\u2192 select \xB7 Enter submit \xB7 Esc skip"})]})}export{R as a};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as f,b as u}from"./chunk-TYLGP66W.js";import{a as p}from"./chunk-XQBQB3VZ.js";import{a as m}from"./chunk-HCBYKLMW.js";import{a as E}from"./chunk-6YGTRKDT.js";import{e as a}from"./chunk-UR6MHSHU.js";var r=a(E(),1);var g=a(m(),1);function b(e,o,n){return{id:e,label:`${o} (${e})`,isActive:e===n}}function N({resolver:e,currentProjectId:o,env:n,onSelect:j,onCancel:P}){let[d,v]=(0,r.useState)([]),[L,s]=(0,r.useState)(!0),[h,i]=(0,r.useState)(null);return(0,r.useEffect)(()=>{if(!e){i("Login first to browse projects"),s(!1);return}(async()=>{try{let t=e.cached;if(!t){i("Login first to browse projects"),s(!1);return}let c=f(n),y=await new p(c.tmsBaseUrl,t.username,t.access_key).listProjects();v(y.map(l=>b(l.project_id,l.name,o)))}catch(t){i(t instanceof Error?t.message:String(t))}finally{s(!1)}})()},[e,o,n]),(0,g.jsx)(u,{title:"Projects",items:d,loading:L,error:h,itemNoun:"projects",onSelect:t=>{let c=t.label.replace(` (${t.id})`,"");j(t.id,c)},onCancel:P})}export{b as a,N as b};
2
+ import{a as f,b as u}from"./chunk-7L6XR6ON.js";import{a as p}from"./chunk-I7YWZ3D2.js";import{a as m}from"./chunk-HCBYKLMW.js";import{a as E}from"./chunk-6YGTRKDT.js";import{e as a}from"./chunk-UR6MHSHU.js";var r=a(E(),1);var g=a(m(),1);function b(e,o,n){return{id:e,label:`${o} (${e})`,isActive:e===n}}function N({resolver:e,currentProjectId:o,env:n,onSelect:j,onCancel:P}){let[d,v]=(0,r.useState)([]),[L,s]=(0,r.useState)(!0),[h,i]=(0,r.useState)(null);return(0,r.useEffect)(()=>{if(!e){i("Login first to browse projects"),s(!1);return}(async()=>{try{let t=e.cached;if(!t){i("Login first to browse projects"),s(!1);return}let c=f(n),y=await new p(c.tmsBaseUrl,t.username,t.access_key).listProjects();v(y.map(l=>b(l.project_id,l.name,o)))}catch(t){i(t instanceof Error?t.message:String(t))}finally{s(!1)}})()},[e,o,n]),(0,g.jsx)(u,{title:"Projects",items:d,loading:L,error:h,itemNoun:"projects",onSelect:t=>{let c=t.label.replace(` (${t.id})`,"");j(t.id,c)},onCancel:P})}export{b as a,N as b};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as c}from"./chunk-HCBYKLMW.js";import{r as a}from"./chunk-UFZAQ5P6.js";import{a as s,b as u,j as p}from"./chunk-Q7JVDEOV.js";import{a as T}from"./chunk-6YGTRKDT.js";import{e as l}from"./chunk-UR6MHSHU.js";var x=l(T(),1);function g(n,e){if(!e)return n;let i=n.trim()||e;return`\x1B]8;;${e}\x07${i}\x1B]8;;\x07`}var r=l(c(),1);function h({shareableLink:n,testCaseLink:e,codeExportDir:i,autoExit:m=!0}){let{exit:f}=p();(0,x.useEffect)(()=>{if(!m)return;let t=setTimeout(()=>f(),100);return()=>clearTimeout(t)},[f,m]);let o=[];return n&&o.push({label:"ShareLink",url:n}),e&&o.push({label:"TestCase",url:e}),i&&o.push({label:"CodeExport",url:i,linkUrl:`file://${i}`}),o.length===0?(0,r.jsx)(r.Fragment,{}):(0,r.jsx)(s,{flexDirection:"column",marginTop:1,marginLeft:1,children:o.map(t=>(0,r.jsxs)(s,{flexDirection:"column",marginBottom:1,children:[(0,r.jsxs)(u,{color:a.primary,children:[t.label,":"]}),(0,r.jsx)(u,{color:a.dim,children:g(t.url,t.linkUrl??t.url)})]},t.label))})}export{h as a};
2
+ import{a as c}from"./chunk-HCBYKLMW.js";import{r as a}from"./chunk-733KSBIW.js";import{a as s,b as u,j as p}from"./chunk-Q7JVDEOV.js";import{a as T}from"./chunk-6YGTRKDT.js";import{e as l}from"./chunk-UR6MHSHU.js";var x=l(T(),1);function g(n,e){if(!e)return n;let i=n.trim()||e;return`\x1B]8;;${e}\x07${i}\x1B]8;;\x07`}var r=l(c(),1);function h({shareableLink:n,testCaseLink:e,codeExportDir:i,autoExit:m=!0}){let{exit:f}=p();(0,x.useEffect)(()=>{if(!m)return;let t=setTimeout(()=>f(),100);return()=>clearTimeout(t)},[f,m]);let o=[];return n&&o.push({label:"ShareLink",url:n}),e&&o.push({label:"TestCase",url:e}),i&&o.push({label:"CodeExport",url:i,linkUrl:`file://${i}`}),o.length===0?(0,r.jsx)(r.Fragment,{}):(0,r.jsx)(s,{flexDirection:"column",marginTop:1,marginLeft:1,children:o.map(t=>(0,r.jsxs)(s,{flexDirection:"column",marginBottom:1,children:[(0,r.jsxs)(u,{color:a.primary,children:[t.label,":"]}),(0,r.jsx)(u,{color:a.dim,children:g(t.url,t.linkUrl??t.url)})]},t.label))})}export{h as a};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{homedir as s}from"os";import{join as t}from"path";var p="0.2.1",m="kane-cli",e=t(s(),".testmuai","kaneai"),l=t(e,"profiles"),i=t(e,"config.json"),d=t(e,"tui-config.json"),h="https://registry.npmjs.org/@testmuai/kane-cli",f="https://api.github.com/repos/LambdaTest/kane-cli/releases",_=9222,u=9230,A=t(e,"chrome-profile"),U=t(e,"chrome-profiles"),r="127.0.0.1",b=18392,g=18400,o="/callback";function x(a){return`http://${r}:${a}${o}`}var L="KANE CLI",E="*",R={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",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",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"}},C={base:"#ffffff",primary:"#ff9500",secondary:"#888888",accent:"#ffffff",dim:"#666666",ambient:"#444444",statusPass:"#4ade80",statusFail:"#ef4444",purple:"#ff9500",cyan:"#ff9500",yellow:"#ff9500",green:"#4ade80",greenDim:"#666666",red:"#ef4444",redDim:"#666666",dimmed:"#666666",muted:"#444444"};export{p as a,m as b,e as c,d,h as e,f,_ as g,u as h,U as i,r as j,b as k,g as l,o as m,x as n,L as o,E as p,R as q,C as r};
2
+ import{homedir as s}from"os";import{join as t}from"path";var p="0.2.2",m="kane-cli",e=t(s(),".testmuai","kaneai"),l=t(e,"profiles"),i=t(e,"config.json"),d=t(e,"tui-config.json"),h="https://registry.npmjs.org/@testmuai/kane-cli",f="https://api.github.com/repos/LambdaTest/kane-cli/releases",_=9222,u=9230,A=t(e,"chrome-profile"),U=t(e,"chrome-profiles"),r="127.0.0.1",b=18392,g=18400,o="/callback";function x(a){return`http://${r}:${a}${o}`}var L="KANE CLI",E="*",R={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",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",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"}},C={base:"#ffffff",primary:"#ff9500",secondary:"#888888",accent:"#ffffff",dim:"#666666",ambient:"#444444",statusPass:"#4ade80",statusFail:"#ef4444",purple:"#ff9500",cyan:"#ff9500",yellow:"#ff9500",green:"#4ade80",greenDim:"#666666",red:"#ef4444",redDim:"#666666",dimmed:"#666666",muted:"#444444"};export{p as a,m as b,e as c,d,h as e,f,_ as g,u as h,U as i,r as j,b as k,g as l,o as m,x as n,L as o,E as p,R as q,C as r};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as M}from"./chunk-HCBYKLMW.js";import{q as N,r as t}from"./chunk-UFZAQ5P6.js";import{a as i,b as n,i as R}from"./chunk-Q7JVDEOV.js";import{a as P}from"./chunk-6YGTRKDT.js";import{e as b}from"./chunk-UR6MHSHU.js";function y(a="prod"){let r=N[a];return a!=="stage"?r:{authBaseUrl:process.env.KANE_STAGE_AUTH_URL??r.authBaseUrl,consentUrl:process.env.KANE_STAGE_CONSENT_URL??r.consentUrl,controllerBaseUrl:process.env.TESTMUAI_BASE_URL??r.controllerBaseUrl,tmsBaseUrl:process.env.KANE_STAGE_TMS_URL??r.tmsBaseUrl,secretsBaseUrl:process.env.KANE_STAGE_SECRETS_URL??r.secretsBaseUrl,testManagerUiUrl:process.env.KANE_STAGE_TEST_MANAGER_UI_URL??r.testManagerUiUrl,shareApiBaseUrl:process.env.KANE_STAGE_SHARE_API_URL??r.shareApiBaseUrl,v16ServerHost:process.env.KANE_STAGE_V16_SERVER_HOST??r.v16ServerHost}}var f=b(P(),1);var e=b(M(),1),g=5;function w(a,r){if(!r)return a;let u=r.toLowerCase();return a.filter(E=>E.label.toLowerCase().includes(u))}function Y({title:a,items:r,loading:u=!1,loadingText:E,error:U=null,itemNoun:A="items",onSelect:C,onCancel:L,defaultActiveId:S}){let[m,c]=(0,f.useState)(0),[T,p]=(0,f.useState)(0),[d,_]=(0,f.useState)("");(0,f.useEffect)(()=>{if(r.length===0)return;let l=S?r.findIndex(o=>o.id===S):r.findIndex(o=>o.isActive);l>=0&&(p(Math.floor(l/g)),c(l%g))},[r,S]);let x=w(r,d),B=T*g,I=Math.min(B+g,x.length),v=Math.ceil(x.length/g),G=I-B,h=x.slice(B,I);return R((l,o)=>{if(U){o.escape&&L();return}if(o.escape){d?(_(""),c(0),p(0)):L();return}if(o.upArrow){m>0?c(s=>s-1):T>0&&(p(s=>s-1),c(g-1));return}if(o.downArrow){m<G-1?c(s=>s+1):T<v-1&&(p(s=>s+1),c(0));return}if(o.return&&h[m]){C(h[m]);return}if(o.backspace||o.delete){_(s=>s.slice(0,-1)),c(0),p(0);return}l&&!o.ctrl&&!o.meta&&(_(s=>s+l),c(0),p(0))},{isActive:!u}),u?(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:t.primary,paddingX:2,paddingY:1,children:[(0,e.jsx)(n,{color:t.primary,bold:!0,children:a}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(n,{color:t.secondary,children:E??`Loading ${A}\u2026`})})]}):U?(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:t.statusFail,paddingX:2,paddingY:1,children:[(0,e.jsx)(n,{color:t.statusFail,bold:!0,children:a}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(n,{color:t.statusFail,children:U})}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(n,{color:t.dim,children:"esc back"})})]}):(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:t.primary,paddingX:2,paddingY:1,children:[(0,e.jsxs)(i,{children:[(0,e.jsx)(n,{color:t.primary,bold:!0,children:a}),(0,e.jsxs)(n,{color:t.dim,children:[" (",x.length,d?`/${r.length}`:""," ",A,")"]})]}),d&&(0,e.jsxs)(i,{marginTop:1,children:[(0,e.jsx)(n,{color:t.secondary,children:"filter: "}),(0,e.jsx)(n,{children:d}),(0,e.jsx)(n,{color:t.dimmed,children:"\u2588"})]}),(0,e.jsx)(i,{flexDirection:"column",marginTop:1,children:x.length===0?(0,e.jsxs)(n,{color:t.dim,children:["No ",A,' match "',d,'"']}):h.map((l,o)=>{let s=o===m,H=s?"\u276F ":" ",K=l.isActive?t.statusPass:s?t.primary:void 0;return(0,e.jsxs)(n,{color:K,children:[H,l.label,l.isActive?" \u25CF selected":""]},l.id)})}),v>1&&(0,e.jsx)(i,{marginTop:1,children:(0,e.jsxs)(n,{color:t.dim,children:["Page ",T+1,"/",v]})}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsxs)(n,{color:t.dim,children:["\u2191\u2193 navigate \xB7 type to search \xB7 \u21B5 select \xB7 esc ",d?"clear":"back"]})})]})}export{y as a,Y as b};
2
+ import{a as M}from"./chunk-HCBYKLMW.js";import{q as N,r as t}from"./chunk-733KSBIW.js";import{a as i,b as n,i as R}from"./chunk-Q7JVDEOV.js";import{a as P}from"./chunk-6YGTRKDT.js";import{e as b}from"./chunk-UR6MHSHU.js";function y(a="prod"){let r=N[a];return a!=="stage"?r:{authBaseUrl:process.env.KANE_STAGE_AUTH_URL??r.authBaseUrl,consentUrl:process.env.KANE_STAGE_CONSENT_URL??r.consentUrl,controllerBaseUrl:process.env.TESTMUAI_BASE_URL??r.controllerBaseUrl,tmsBaseUrl:process.env.KANE_STAGE_TMS_URL??r.tmsBaseUrl,secretsBaseUrl:process.env.KANE_STAGE_SECRETS_URL??r.secretsBaseUrl,testManagerUiUrl:process.env.KANE_STAGE_TEST_MANAGER_UI_URL??r.testManagerUiUrl,shareApiBaseUrl:process.env.KANE_STAGE_SHARE_API_URL??r.shareApiBaseUrl,v16ServerHost:process.env.KANE_STAGE_V16_SERVER_HOST??r.v16ServerHost}}var f=b(P(),1);var e=b(M(),1),g=5;function w(a,r){if(!r)return a;let u=r.toLowerCase();return a.filter(E=>E.label.toLowerCase().includes(u))}function Y({title:a,items:r,loading:u=!1,loadingText:E,error:U=null,itemNoun:A="items",onSelect:C,onCancel:L,defaultActiveId:S}){let[m,c]=(0,f.useState)(0),[T,p]=(0,f.useState)(0),[d,_]=(0,f.useState)("");(0,f.useEffect)(()=>{if(r.length===0)return;let l=S?r.findIndex(o=>o.id===S):r.findIndex(o=>o.isActive);l>=0&&(p(Math.floor(l/g)),c(l%g))},[r,S]);let x=w(r,d),B=T*g,I=Math.min(B+g,x.length),v=Math.ceil(x.length/g),G=I-B,h=x.slice(B,I);return R((l,o)=>{if(U){o.escape&&L();return}if(o.escape){d?(_(""),c(0),p(0)):L();return}if(o.upArrow){m>0?c(s=>s-1):T>0&&(p(s=>s-1),c(g-1));return}if(o.downArrow){m<G-1?c(s=>s+1):T<v-1&&(p(s=>s+1),c(0));return}if(o.return&&h[m]){C(h[m]);return}if(o.backspace||o.delete){_(s=>s.slice(0,-1)),c(0),p(0);return}l&&!o.ctrl&&!o.meta&&(_(s=>s+l),c(0),p(0))},{isActive:!u}),u?(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:t.primary,paddingX:2,paddingY:1,children:[(0,e.jsx)(n,{color:t.primary,bold:!0,children:a}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(n,{color:t.secondary,children:E??`Loading ${A}\u2026`})})]}):U?(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:t.statusFail,paddingX:2,paddingY:1,children:[(0,e.jsx)(n,{color:t.statusFail,bold:!0,children:a}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(n,{color:t.statusFail,children:U})}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(n,{color:t.dim,children:"esc back"})})]}):(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:t.primary,paddingX:2,paddingY:1,children:[(0,e.jsxs)(i,{children:[(0,e.jsx)(n,{color:t.primary,bold:!0,children:a}),(0,e.jsxs)(n,{color:t.dim,children:[" (",x.length,d?`/${r.length}`:""," ",A,")"]})]}),d&&(0,e.jsxs)(i,{marginTop:1,children:[(0,e.jsx)(n,{color:t.secondary,children:"filter: "}),(0,e.jsx)(n,{children:d}),(0,e.jsx)(n,{color:t.dimmed,children:"\u2588"})]}),(0,e.jsx)(i,{flexDirection:"column",marginTop:1,children:x.length===0?(0,e.jsxs)(n,{color:t.dim,children:["No ",A,' match "',d,'"']}):h.map((l,o)=>{let s=o===m,H=s?"\u276F ":" ",K=l.isActive?t.statusPass:s?t.primary:void 0;return(0,e.jsxs)(n,{color:K,children:[H,l.label,l.isActive?" \u25CF selected":""]},l.id)})}),v>1&&(0,e.jsx)(i,{marginTop:1,children:(0,e.jsxs)(n,{color:t.dim,children:["Page ",T+1,"/",v]})}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsxs)(n,{color:t.dim,children:["\u2191\u2193 navigate \xB7 type to search \xB7 \u21B5 select \xB7 esc ",d?"clear":"back"]})})]})}export{y as a,Y as b};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as m}from"./chunk-HCBYKLMW.js";import{r as o}from"./chunk-UFZAQ5P6.js";import{a as r,b as i}from"./chunk-Q7JVDEOV.js";import{e as a}from"./chunk-UR6MHSHU.js";var e=a(m(),1),u={default:o.muted,error:o.red,success:o.green,info:o.purple,warning:o.yellow};function T({title:t,titleColor:l,borderColor:d,variant:n="default",children:c,width:s,paddingX:x=2,paddingY:g=0,marginBottom:p=0}){let f=d??u[n],B=l??(n==="default"?o.purple:u[n]);return(0,e.jsxs)(r,{flexDirection:"column",marginBottom:p,children:[t&&(0,e.jsx)(r,{marginBottom:0,children:(0,e.jsxs)(i,{color:B,bold:!0,children:[" ",t]})}),(0,e.jsx)(r,{borderStyle:"round",borderColor:f,flexDirection:"column",paddingX:x,paddingY:g,width:s,children:c})]})}function h({label:t,value:l,labelColor:d=o.dimmed,valueColor:n,labelWidth:c=14}){return(0,e.jsxs)(r,{children:[(0,e.jsx)(r,{width:c,children:(0,e.jsx)(i,{color:d,children:t})}),(0,e.jsx)(i,{color:n,children:l})]})}function C({label:t}){return(0,e.jsx)(r,{marginTop:1,marginBottom:0,children:(0,e.jsx)(i,{bold:!0,children:t})})}export{T as a,h as b,C as c};
2
+ import{a as m}from"./chunk-HCBYKLMW.js";import{r as o}from"./chunk-733KSBIW.js";import{a as r,b as i}from"./chunk-Q7JVDEOV.js";import{e as a}from"./chunk-UR6MHSHU.js";var e=a(m(),1),u={default:o.muted,error:o.red,success:o.green,info:o.purple,warning:o.yellow};function T({title:t,titleColor:l,borderColor:d,variant:n="default",children:c,width:s,paddingX:x=2,paddingY:g=0,marginBottom:p=0}){let f=d??u[n],B=l??(n==="default"?o.purple:u[n]);return(0,e.jsxs)(r,{flexDirection:"column",marginBottom:p,children:[t&&(0,e.jsx)(r,{marginBottom:0,children:(0,e.jsxs)(i,{color:B,bold:!0,children:[" ",t]})}),(0,e.jsx)(r,{borderStyle:"round",borderColor:f,flexDirection:"column",paddingX:x,paddingY:g,width:s,children:c})]})}function h({label:t,value:l,labelColor:d=o.dimmed,valueColor:n,labelWidth:c=14}){return(0,e.jsxs)(r,{children:[(0,e.jsx)(r,{width:c,children:(0,e.jsx)(i,{color:d,children:t})}),(0,e.jsx)(i,{color:n,children:l})]})}function C({label:t}){return(0,e.jsx)(r,{marginTop:1,marginBottom:0,children:(0,e.jsx)(i,{bold:!0,children:t})})}export{T as a,h as b,C as c};
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as Ec}from"./chunk-3CJ6IY5O.js";import{a as xc}from"./chunk-XQBQB3VZ.js";import{a as D,b as Hv,c as g,d as Vv,e as Yv,f as Kv}from"./chunk-UR6MHSHU.js";var Pc=g((YB,Lc)=>{"use strict";var sE=typeof process=="object"&&process&&process.platform==="win32";Lc.exports=sE?{sep:"\\"}:{sep:"/"}});var Fc=g((KB,qc)=>{"use strict";qc.exports=Cc;function Cc(t,e,r){t instanceof RegExp&&(t=kc(t,r)),e instanceof RegExp&&(e=kc(e,r));var i=Mc(t,e,r);return i&&{start:i[0],end:i[1],pre:r.slice(0,i[0]),body:r.slice(i[0]+t.length,i[1]),post:r.slice(i[1]+e.length)}}function kc(t,e){var r=e.match(t);return r?r[0]:null}Cc.range=Mc;function Mc(t,e,r){var i,n,s,o,a,l=r.indexOf(t),u=r.indexOf(e,l+1),f=l;if(l>=0&&u>0){if(t===e)return[l,u];for(i=[],s=r.length;f>=0&&!a;)f==l?(i.push(f),l=r.indexOf(t,f+1)):i.length==1?a=[i.pop(),u]:(n=i.pop(),n<s&&(s=n,o=u),u=r.indexOf(e,f+1)),f=l<u&&l>=0?l:u;i.length&&(a=[s,o])}return a}});var na=g((ZB,$c)=>{"use strict";var jc=Fc();$c.exports=lE;var Bc="\0SLASH"+Math.random()+"\0",Uc="\0OPEN"+Math.random()+"\0",ia="\0CLOSE"+Math.random()+"\0",Wc="\0COMMA"+Math.random()+"\0",zc="\0PERIOD"+Math.random()+"\0";function ra(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function oE(t){return t.split("\\\\").join(Bc).split("\\{").join(Uc).split("\\}").join(ia).split("\\,").join(Wc).split("\\.").join(zc)}function aE(t){return t.split(Bc).join("\\").split(Uc).join("{").split(ia).join("}").split(Wc).join(",").split(zc).join(".")}function Gc(t){if(!t)return[""];var e=[],r=jc("{","}",t);if(!r)return t.split(",");var i=r.pre,n=r.body,s=r.post,o=i.split(",");o[o.length-1]+="{"+n+"}";var a=Gc(s);return s.length&&(o[o.length-1]+=a.shift(),o.push.apply(o,a)),e.push.apply(e,o),e}function lE(t){return t?(t.substr(0,2)==="{}"&&(t="\\{\\}"+t.substr(2)),gi(oE(t),!0).map(aE)):[]}function uE(t){return"{"+t+"}"}function fE(t){return/^-?0\d/.test(t)}function cE(t,e){return t<=e}function hE(t,e){return t>=e}function gi(t,e){var r=[],i=jc("{","}",t);if(!i)return[t];var n=i.pre,s=i.post.length?gi(i.post,!1):[""];if(/\$$/.test(i.pre))for(var o=0;o<s.length;o++){var a=n+"{"+i.body+"}"+s[o];r.push(a)}else{var l=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),u=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),f=l||u,c=i.body.indexOf(",")>=0;if(!f&&!c)return i.post.match(/,(?!,).*\}/)?(t=i.pre+"{"+i.body+ia+i.post,gi(t)):[t];var h;if(f)h=i.body.split(/\.\./);else if(h=Gc(i.body),h.length===1&&(h=gi(h[0],!1).map(uE),h.length===1))return s.map(function(T){return i.pre+h[0]+T});var d;if(f){var y=ra(h[0]),p=ra(h[1]),S=Math.max(h[0].length,h[1].length),m=h.length==3?Math.max(Math.abs(ra(h[2])),1):1,b=cE,v=p<y;v&&(m*=-1,b=hE);var E=h.some(fE);d=[];for(var A=y;b(A,p);A+=m){var N;if(u)N=String.fromCharCode(A),N==="\\"&&(N="");else if(N=String(A),E){var x=S-N.length;if(x>0){var O=new Array(x+1).join("0");A<0?N="-"+O+N.slice(1):N=O+N}}d.push(N)}}else{d=[];for(var w=0;w<h.length;w++)d.push.apply(d,gi(h[w],!1))}for(var w=0;w<d.length;w++)for(var o=0;o<s.length;o++){var a=n+d[w]+s[o];(!e||f||a)&&r.push(a)}}return r}});var Qc=g((XB,ua)=>{"use strict";var Pe=ua.exports=(t,e,r={})=>(Mn(e),!r.nocomment&&e.charAt(0)==="#"?!1:new wr(e,r).match(t));ua.exports=Pe;var aa=Pc();Pe.sep=aa.sep;var Re=Symbol("globstar **");Pe.GLOBSTAR=Re;var dE=na(),Hc={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},la="[^/]",sa=la+"*?",pE="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",gE="(?:(?!(?:\\/|^)\\.).)*?",Kc=t=>t.split("").reduce((e,r)=>(e[r]=!0,e),{}),Vc=Kc("().*{}+?[]^$\\!"),_E=Kc("[.("),Yc=/\/+/;Pe.filter=(t,e={})=>(r,i,n)=>Pe(r,t,e);var At=(t,e={})=>{let r={};return Object.keys(t).forEach(i=>r[i]=t[i]),Object.keys(e).forEach(i=>r[i]=e[i]),r};Pe.defaults=t=>{if(!t||typeof t!="object"||!Object.keys(t).length)return Pe;let e=Pe,r=(i,n,s)=>e(i,n,At(t,s));return r.Minimatch=class extends e.Minimatch{constructor(n,s){super(n,At(t,s))}},r.Minimatch.defaults=i=>e.defaults(At(t,i)).Minimatch,r.filter=(i,n)=>e.filter(i,At(t,n)),r.defaults=i=>e.defaults(At(t,i)),r.makeRe=(i,n)=>e.makeRe(i,At(t,n)),r.braceExpand=(i,n)=>e.braceExpand(i,At(t,n)),r.match=(i,n,s)=>e.match(i,n,At(t,s)),r};Pe.braceExpand=(t,e)=>Zc(t,e);var Zc=(t,e={})=>(Mn(t),e.nobrace||!/\{(?:(?!\{).)*\}/.test(t)?[t]:dE(t)),yE=1024*64,Mn=t=>{if(typeof t!="string")throw new TypeError("invalid pattern");if(t.length>yE)throw new TypeError("pattern is too long")},oa=Symbol("subparse");Pe.makeRe=(t,e)=>new wr(t,e||{}).makeRe();Pe.match=(t,e,r={})=>{let i=new wr(e,r);return t=t.filter(n=>i.match(n)),i.options.nonull&&!t.length&&t.push(e),t};var mE=t=>t.replace(/\\(.)/g,"$1"),bE=t=>t.replace(/\\([^-\]])/g,"$1"),wE=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),SE=t=>t.replace(/[[\]\\]/g,"\\$&"),wr=class{constructor(e,r){Mn(e),r||(r={}),this.options=r,this.maxGlobstarRecursion=r.maxGlobstarRecursion!==void 0?r.maxGlobstarRecursion:200,this.set=[],this.pattern=e,this.windowsPathsNoEscape=!!r.windowsPathsNoEscape||r.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.partial=!!r.partial,this.make()}debug(){}make(){let e=this.pattern,r=this.options;if(!r.nocomment&&e.charAt(0)==="#"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate();let i=this.globSet=this.braceExpand();r.debug&&(this.debug=(...n)=>console.error(...n)),this.debug(this.pattern,i),i=this.globParts=i.map(n=>n.split(Yc)),this.debug(this.pattern,i),i=i.map((n,s,o)=>n.map(this.parse,this)),this.debug(this.pattern,i),i=i.filter(n=>n.indexOf(!1)===-1),this.debug(this.pattern,i),this.set=i}parseNegate(){if(this.options.nonegate)return;let e=this.pattern,r=!1,i=0;for(let n=0;n<e.length&&e.charAt(n)==="!";n++)r=!r,i++;i&&(this.pattern=e.slice(i)),this.negate=r}matchOne(e,r,i){return r.indexOf(Re)!==-1?this._matchGlobstar(e,r,i,0,0):this._matchOne(e,r,i,0,0)}_matchGlobstar(e,r,i,n,s){let o=-1;for(let b=s;b<r.length;b++)if(r[b]===Re){o=b;break}let a=-1;for(let b=r.length-1;b>=0;b--)if(r[b]===Re){a=b;break}let l=r.slice(s,o),u=i?r.slice(o+1):r.slice(o+1,a),f=i?[]:r.slice(a+1);if(l.length){let b=e.slice(n,n+l.length);if(!this._matchOne(b,l,i,0,0))return!1;n+=l.length}let c=0;if(f.length){if(f.length+n>e.length)return!1;let b=e.length-f.length;if(this._matchOne(e,f,i,b,0))c=f.length;else{if(e[e.length-1]!==""||n+f.length===e.length||!this._matchOne(e,f,i,b-1,0))return!1;c=f.length+1}}if(!u.length){let b=!!c;for(let v=n;v<e.length-c;v++){let E=String(e[v]);if(b=!0,E==="."||E===".."||!this.options.dot&&E.charAt(0)===".")return!1}return i||b}let h=[[[],0]],d=h[0],y=0,p=[0];for(let b of u)b===Re?(p.push(y),d=[[],0],h.push(d)):(d[0].push(b),y++);let S=h.length-1,m=e.length-c;for(let b of h)b[1]=m-(p[S--]+b[0].length);return!!this._matchGlobStarBodySections(e,h,n,0,i,0,!!c)}_matchGlobStarBodySections(e,r,i,n,s,o,a){let l=r[n];if(!l){for(let c=i;c<e.length;c++){a=!0;let h=e[c];if(h==="."||h===".."||!this.options.dot&&h.charAt(0)===".")return!1}return a}let[u,f]=l;for(;i<=f;){if(this._matchOne(e.slice(0,i+u.length),u,s,i,0)&&o<this.maxGlobstarRecursion){let d=this._matchGlobStarBodySections(e,r,i+u.length,n+1,s,o+1,a);if(d!==!1)return d}let h=e[i];if(h==="."||h===".."||!this.options.dot&&h.charAt(0)===".")return!1;i++}return s||null}_matchOne(e,r,i,n,s){let o,a,l,u;for(o=n,a=s,l=e.length,u=r.length;o<l&&a<u;o++,a++){this.debug("matchOne loop");let f=r[a],c=e[o];if(this.debug(r,f,c),f===!1||f===Re)return!1;let h;if(typeof f=="string"?(h=c===f,this.debug("string match",f,c,h)):(h=c.match(f),this.debug("pattern match",f,c,h)),!h)return!1}if(o===l&&a===u)return!0;if(o===l)return i;if(a===u)return o===l-1&&e[o]==="";throw new Error("wtf?")}braceExpand(){return Zc(this.pattern,this.options)}parse(e,r){Mn(e);let i=this.options;if(e==="**")if(i.noglobstar)e="*";else return Re;if(e==="")return"";let n="",s=!1,o=!1,a=[],l=[],u,f=!1,c=-1,h=-1,d,y,p,S=e.charAt(0)===".",m=i.dot||S,b=()=>S?"":m?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",v=x=>x.charAt(0)==="."?"":i.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",E=()=>{if(u){switch(u){case"*":n+=sa,s=!0;break;case"?":n+=la,s=!0;break;default:n+="\\"+u;break}this.debug("clearStateChar %j %j",u,n),u=!1}};for(let x=0,O;x<e.length&&(O=e.charAt(x));x++){if(this.debug("%s %s %s %j",e,x,n,O),o){if(O==="/")return!1;Vc[O]&&(n+="\\"),n+=O,o=!1;continue}switch(O){case"/":return!1;case"\\":if(f&&e.charAt(x+1)==="-"){n+=O;continue}E(),o=!0;continue;case"?":case"*":case"+":case"@":case"!":if(this.debug("%s %s %s %j <-- stateChar",e,x,n,O),f){this.debug(" in class"),O==="!"&&x===h+1&&(O="^"),n+=O;continue}if(O==="*"&&u==="*")continue;this.debug("call clearStateChar %j",u),E(),u=O,i.noext&&E();continue;case"(":{if(f){n+="(";continue}if(!u){n+="\\(";continue}let w={type:u,start:x-1,reStart:n.length,open:Hc[u].open,close:Hc[u].close};this.debug(this.pattern," ",w),a.push(w),n+=w.open,w.start===0&&w.type!=="!"&&(S=!0,n+=v(e.slice(x+1))),this.debug("plType %j %j",u,n),u=!1;continue}case")":{let w=a[a.length-1];if(f||!w){n+="\\)";continue}a.pop(),E(),s=!0,y=w,n+=y.close,y.type==="!"&&l.push(Object.assign(y,{reEnd:n.length}));continue}case"|":{let w=a[a.length-1];if(f||!w){n+="\\|";continue}E(),n+="|",w.start===0&&w.type!=="!"&&(S=!0,n+=v(e.slice(x+1)));continue}case"[":if(E(),f){n+="\\"+O;continue}f=!0,h=x,c=n.length,n+=O;continue;case"]":if(x===h+1||!f){n+="\\"+O;continue}d=e.substring(h+1,x);try{RegExp("["+SE(bE(d))+"]"),n+=O}catch{n=n.substring(0,c)+"(?:$.)"}s=!0,f=!1;continue;default:E(),Vc[O]&&!(O==="^"&&f)&&(n+="\\"),n+=O;break}}for(f&&(d=e.slice(h+1),p=this.parse(d,oa),n=n.substring(0,c)+"\\["+p[0],s=s||p[1]),y=a.pop();y;y=a.pop()){let x;x=n.slice(y.reStart+y.open.length),this.debug("setting tail",n,y),x=x.replace(/((?:\\{2}){0,64})(\\?)\|/g,(w,T,R)=>(R||(R="\\"),T+T+R+"|")),this.debug(`tail=%j
2
+ import{a as Ec}from"./chunk-3CJ6IY5O.js";import{a as xc}from"./chunk-I7YWZ3D2.js";import{a as D,b as Hv,c as g,d as Vv,e as Yv,f as Kv}from"./chunk-UR6MHSHU.js";var Pc=g((YB,Lc)=>{"use strict";var sE=typeof process=="object"&&process&&process.platform==="win32";Lc.exports=sE?{sep:"\\"}:{sep:"/"}});var Fc=g((KB,qc)=>{"use strict";qc.exports=Cc;function Cc(t,e,r){t instanceof RegExp&&(t=kc(t,r)),e instanceof RegExp&&(e=kc(e,r));var i=Mc(t,e,r);return i&&{start:i[0],end:i[1],pre:r.slice(0,i[0]),body:r.slice(i[0]+t.length,i[1]),post:r.slice(i[1]+e.length)}}function kc(t,e){var r=e.match(t);return r?r[0]:null}Cc.range=Mc;function Mc(t,e,r){var i,n,s,o,a,l=r.indexOf(t),u=r.indexOf(e,l+1),f=l;if(l>=0&&u>0){if(t===e)return[l,u];for(i=[],s=r.length;f>=0&&!a;)f==l?(i.push(f),l=r.indexOf(t,f+1)):i.length==1?a=[i.pop(),u]:(n=i.pop(),n<s&&(s=n,o=u),u=r.indexOf(e,f+1)),f=l<u&&l>=0?l:u;i.length&&(a=[s,o])}return a}});var na=g((ZB,$c)=>{"use strict";var jc=Fc();$c.exports=lE;var Bc="\0SLASH"+Math.random()+"\0",Uc="\0OPEN"+Math.random()+"\0",ia="\0CLOSE"+Math.random()+"\0",Wc="\0COMMA"+Math.random()+"\0",zc="\0PERIOD"+Math.random()+"\0";function ra(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function oE(t){return t.split("\\\\").join(Bc).split("\\{").join(Uc).split("\\}").join(ia).split("\\,").join(Wc).split("\\.").join(zc)}function aE(t){return t.split(Bc).join("\\").split(Uc).join("{").split(ia).join("}").split(Wc).join(",").split(zc).join(".")}function Gc(t){if(!t)return[""];var e=[],r=jc("{","}",t);if(!r)return t.split(",");var i=r.pre,n=r.body,s=r.post,o=i.split(",");o[o.length-1]+="{"+n+"}";var a=Gc(s);return s.length&&(o[o.length-1]+=a.shift(),o.push.apply(o,a)),e.push.apply(e,o),e}function lE(t){return t?(t.substr(0,2)==="{}"&&(t="\\{\\}"+t.substr(2)),gi(oE(t),!0).map(aE)):[]}function uE(t){return"{"+t+"}"}function fE(t){return/^-?0\d/.test(t)}function cE(t,e){return t<=e}function hE(t,e){return t>=e}function gi(t,e){var r=[],i=jc("{","}",t);if(!i)return[t];var n=i.pre,s=i.post.length?gi(i.post,!1):[""];if(/\$$/.test(i.pre))for(var o=0;o<s.length;o++){var a=n+"{"+i.body+"}"+s[o];r.push(a)}else{var l=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),u=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),f=l||u,c=i.body.indexOf(",")>=0;if(!f&&!c)return i.post.match(/,(?!,).*\}/)?(t=i.pre+"{"+i.body+ia+i.post,gi(t)):[t];var h;if(f)h=i.body.split(/\.\./);else if(h=Gc(i.body),h.length===1&&(h=gi(h[0],!1).map(uE),h.length===1))return s.map(function(T){return i.pre+h[0]+T});var d;if(f){var y=ra(h[0]),p=ra(h[1]),S=Math.max(h[0].length,h[1].length),m=h.length==3?Math.max(Math.abs(ra(h[2])),1):1,b=cE,v=p<y;v&&(m*=-1,b=hE);var E=h.some(fE);d=[];for(var A=y;b(A,p);A+=m){var N;if(u)N=String.fromCharCode(A),N==="\\"&&(N="");else if(N=String(A),E){var x=S-N.length;if(x>0){var O=new Array(x+1).join("0");A<0?N="-"+O+N.slice(1):N=O+N}}d.push(N)}}else{d=[];for(var w=0;w<h.length;w++)d.push.apply(d,gi(h[w],!1))}for(var w=0;w<d.length;w++)for(var o=0;o<s.length;o++){var a=n+d[w]+s[o];(!e||f||a)&&r.push(a)}}return r}});var Qc=g((XB,ua)=>{"use strict";var Pe=ua.exports=(t,e,r={})=>(Mn(e),!r.nocomment&&e.charAt(0)==="#"?!1:new wr(e,r).match(t));ua.exports=Pe;var aa=Pc();Pe.sep=aa.sep;var Re=Symbol("globstar **");Pe.GLOBSTAR=Re;var dE=na(),Hc={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},la="[^/]",sa=la+"*?",pE="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",gE="(?:(?!(?:\\/|^)\\.).)*?",Kc=t=>t.split("").reduce((e,r)=>(e[r]=!0,e),{}),Vc=Kc("().*{}+?[]^$\\!"),_E=Kc("[.("),Yc=/\/+/;Pe.filter=(t,e={})=>(r,i,n)=>Pe(r,t,e);var At=(t,e={})=>{let r={};return Object.keys(t).forEach(i=>r[i]=t[i]),Object.keys(e).forEach(i=>r[i]=e[i]),r};Pe.defaults=t=>{if(!t||typeof t!="object"||!Object.keys(t).length)return Pe;let e=Pe,r=(i,n,s)=>e(i,n,At(t,s));return r.Minimatch=class extends e.Minimatch{constructor(n,s){super(n,At(t,s))}},r.Minimatch.defaults=i=>e.defaults(At(t,i)).Minimatch,r.filter=(i,n)=>e.filter(i,At(t,n)),r.defaults=i=>e.defaults(At(t,i)),r.makeRe=(i,n)=>e.makeRe(i,At(t,n)),r.braceExpand=(i,n)=>e.braceExpand(i,At(t,n)),r.match=(i,n,s)=>e.match(i,n,At(t,s)),r};Pe.braceExpand=(t,e)=>Zc(t,e);var Zc=(t,e={})=>(Mn(t),e.nobrace||!/\{(?:(?!\{).)*\}/.test(t)?[t]:dE(t)),yE=1024*64,Mn=t=>{if(typeof t!="string")throw new TypeError("invalid pattern");if(t.length>yE)throw new TypeError("pattern is too long")},oa=Symbol("subparse");Pe.makeRe=(t,e)=>new wr(t,e||{}).makeRe();Pe.match=(t,e,r={})=>{let i=new wr(e,r);return t=t.filter(n=>i.match(n)),i.options.nonull&&!t.length&&t.push(e),t};var mE=t=>t.replace(/\\(.)/g,"$1"),bE=t=>t.replace(/\\([^-\]])/g,"$1"),wE=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),SE=t=>t.replace(/[[\]\\]/g,"\\$&"),wr=class{constructor(e,r){Mn(e),r||(r={}),this.options=r,this.maxGlobstarRecursion=r.maxGlobstarRecursion!==void 0?r.maxGlobstarRecursion:200,this.set=[],this.pattern=e,this.windowsPathsNoEscape=!!r.windowsPathsNoEscape||r.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.partial=!!r.partial,this.make()}debug(){}make(){let e=this.pattern,r=this.options;if(!r.nocomment&&e.charAt(0)==="#"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate();let i=this.globSet=this.braceExpand();r.debug&&(this.debug=(...n)=>console.error(...n)),this.debug(this.pattern,i),i=this.globParts=i.map(n=>n.split(Yc)),this.debug(this.pattern,i),i=i.map((n,s,o)=>n.map(this.parse,this)),this.debug(this.pattern,i),i=i.filter(n=>n.indexOf(!1)===-1),this.debug(this.pattern,i),this.set=i}parseNegate(){if(this.options.nonegate)return;let e=this.pattern,r=!1,i=0;for(let n=0;n<e.length&&e.charAt(n)==="!";n++)r=!r,i++;i&&(this.pattern=e.slice(i)),this.negate=r}matchOne(e,r,i){return r.indexOf(Re)!==-1?this._matchGlobstar(e,r,i,0,0):this._matchOne(e,r,i,0,0)}_matchGlobstar(e,r,i,n,s){let o=-1;for(let b=s;b<r.length;b++)if(r[b]===Re){o=b;break}let a=-1;for(let b=r.length-1;b>=0;b--)if(r[b]===Re){a=b;break}let l=r.slice(s,o),u=i?r.slice(o+1):r.slice(o+1,a),f=i?[]:r.slice(a+1);if(l.length){let b=e.slice(n,n+l.length);if(!this._matchOne(b,l,i,0,0))return!1;n+=l.length}let c=0;if(f.length){if(f.length+n>e.length)return!1;let b=e.length-f.length;if(this._matchOne(e,f,i,b,0))c=f.length;else{if(e[e.length-1]!==""||n+f.length===e.length||!this._matchOne(e,f,i,b-1,0))return!1;c=f.length+1}}if(!u.length){let b=!!c;for(let v=n;v<e.length-c;v++){let E=String(e[v]);if(b=!0,E==="."||E===".."||!this.options.dot&&E.charAt(0)===".")return!1}return i||b}let h=[[[],0]],d=h[0],y=0,p=[0];for(let b of u)b===Re?(p.push(y),d=[[],0],h.push(d)):(d[0].push(b),y++);let S=h.length-1,m=e.length-c;for(let b of h)b[1]=m-(p[S--]+b[0].length);return!!this._matchGlobStarBodySections(e,h,n,0,i,0,!!c)}_matchGlobStarBodySections(e,r,i,n,s,o,a){let l=r[n];if(!l){for(let c=i;c<e.length;c++){a=!0;let h=e[c];if(h==="."||h===".."||!this.options.dot&&h.charAt(0)===".")return!1}return a}let[u,f]=l;for(;i<=f;){if(this._matchOne(e.slice(0,i+u.length),u,s,i,0)&&o<this.maxGlobstarRecursion){let d=this._matchGlobStarBodySections(e,r,i+u.length,n+1,s,o+1,a);if(d!==!1)return d}let h=e[i];if(h==="."||h===".."||!this.options.dot&&h.charAt(0)===".")return!1;i++}return s||null}_matchOne(e,r,i,n,s){let o,a,l,u;for(o=n,a=s,l=e.length,u=r.length;o<l&&a<u;o++,a++){this.debug("matchOne loop");let f=r[a],c=e[o];if(this.debug(r,f,c),f===!1||f===Re)return!1;let h;if(typeof f=="string"?(h=c===f,this.debug("string match",f,c,h)):(h=c.match(f),this.debug("pattern match",f,c,h)),!h)return!1}if(o===l&&a===u)return!0;if(o===l)return i;if(a===u)return o===l-1&&e[o]==="";throw new Error("wtf?")}braceExpand(){return Zc(this.pattern,this.options)}parse(e,r){Mn(e);let i=this.options;if(e==="**")if(i.noglobstar)e="*";else return Re;if(e==="")return"";let n="",s=!1,o=!1,a=[],l=[],u,f=!1,c=-1,h=-1,d,y,p,S=e.charAt(0)===".",m=i.dot||S,b=()=>S?"":m?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",v=x=>x.charAt(0)==="."?"":i.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",E=()=>{if(u){switch(u){case"*":n+=sa,s=!0;break;case"?":n+=la,s=!0;break;default:n+="\\"+u;break}this.debug("clearStateChar %j %j",u,n),u=!1}};for(let x=0,O;x<e.length&&(O=e.charAt(x));x++){if(this.debug("%s %s %s %j",e,x,n,O),o){if(O==="/")return!1;Vc[O]&&(n+="\\"),n+=O,o=!1;continue}switch(O){case"/":return!1;case"\\":if(f&&e.charAt(x+1)==="-"){n+=O;continue}E(),o=!0;continue;case"?":case"*":case"+":case"@":case"!":if(this.debug("%s %s %s %j <-- stateChar",e,x,n,O),f){this.debug(" in class"),O==="!"&&x===h+1&&(O="^"),n+=O;continue}if(O==="*"&&u==="*")continue;this.debug("call clearStateChar %j",u),E(),u=O,i.noext&&E();continue;case"(":{if(f){n+="(";continue}if(!u){n+="\\(";continue}let w={type:u,start:x-1,reStart:n.length,open:Hc[u].open,close:Hc[u].close};this.debug(this.pattern," ",w),a.push(w),n+=w.open,w.start===0&&w.type!=="!"&&(S=!0,n+=v(e.slice(x+1))),this.debug("plType %j %j",u,n),u=!1;continue}case")":{let w=a[a.length-1];if(f||!w){n+="\\)";continue}a.pop(),E(),s=!0,y=w,n+=y.close,y.type==="!"&&l.push(Object.assign(y,{reEnd:n.length}));continue}case"|":{let w=a[a.length-1];if(f||!w){n+="\\|";continue}E(),n+="|",w.start===0&&w.type!=="!"&&(S=!0,n+=v(e.slice(x+1)));continue}case"[":if(E(),f){n+="\\"+O;continue}f=!0,h=x,c=n.length,n+=O;continue;case"]":if(x===h+1||!f){n+="\\"+O;continue}d=e.substring(h+1,x);try{RegExp("["+SE(bE(d))+"]"),n+=O}catch{n=n.substring(0,c)+"(?:$.)"}s=!0,f=!1;continue;default:E(),Vc[O]&&!(O==="^"&&f)&&(n+="\\"),n+=O;break}}for(f&&(d=e.slice(h+1),p=this.parse(d,oa),n=n.substring(0,c)+"\\["+p[0],s=s||p[1]),y=a.pop();y;y=a.pop()){let x;x=n.slice(y.reStart+y.open.length),this.debug("setting tail",n,y),x=x.replace(/((?:\\{2}){0,64})(\\?)\|/g,(w,T,R)=>(R||(R="\\"),T+T+R+"|")),this.debug(`tail=%j
3
3
  %s`,x,x,y,n);let O=y.type==="*"?sa:y.type==="?"?la:"\\"+y.type;s=!0,n=n.slice(0,y.reStart)+O+"\\("+x}E(),o&&(n+="\\\\");let A=_E[n.charAt(0)];for(let x=l.length-1;x>-1;x--){let O=l[x],w=n.slice(0,O.reStart),T=n.slice(O.reStart,O.reEnd-8),R=n.slice(O.reEnd),P=n.slice(O.reEnd-8,O.reEnd)+R,z=w.split(")").length,ue=w.split("(").length-z,Z=R;for(let V=0;V<ue;V++)Z=Z.replace(/\)[+*?]?/,"");R=Z;let te=R===""&&r!==oa?"(?:$|\\/)":"";n=w+T+R+te+P}if(n!==""&&s&&(n="(?=.)"+n),A&&(n=b()+n),r===oa)return[n,s];if(i.nocase&&!s&&(s=e.toUpperCase()!==e.toLowerCase()),!s)return mE(e);let N=i.nocase?"i":"";try{return Object.assign(new RegExp("^"+n+"$",N),{_glob:e,_src:n})}catch{return new RegExp("$.")}}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let r=this.options,i=r.noglobstar?sa:r.dot?pE:gE,n=r.nocase?"i":"",s=e.map(o=>(o=o.map(a=>typeof a=="string"?wE(a):a===Re?Re:a._src).reduce((a,l)=>(a[a.length-1]===Re&&l===Re||a.push(l),a),[]),o.forEach((a,l)=>{a!==Re||o[l-1]===Re||(l===0?o.length>1?o[l+1]="(?:\\/|"+i+"\\/)?"+o[l+1]:o[l]=i:l===o.length-1?o[l-1]+="(?:\\/|"+i+")?":(o[l-1]+="(?:\\/|\\/"+i+"\\/)"+o[l+1],o[l+1]=Re))}),o.filter(a=>a!==Re).join("/"))).join("|");s="^(?:"+s+")$",this.negate&&(s="^(?!"+s+").*$");try{this.regexp=new RegExp(s,n)}catch{this.regexp=!1}return this.regexp}match(e,r=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return e==="";if(e==="/"&&r)return!0;let i=this.options;aa.sep!=="/"&&(e=e.split(aa.sep).join("/")),e=e.split(Yc),this.debug(this.pattern,"split",e);let n=this.set;this.debug(this.pattern,"set",n);let s;for(let o=e.length-1;o>=0&&(s=e[o],!s);o--);for(let o=0;o<n.length;o++){let a=n[o],l=e;if(i.matchBase&&a.length===1&&(l=[s]),this.matchOne(l,a,r))return i.flipNegate?!0:!this.negate}return i.flipNegate?!1:this.negate}static defaults(e){return Pe.defaults(e).Minimatch}};Pe.Minimatch=wr});var rh=g((JB,th)=>{"use strict";th.exports=eh;var ca=D("fs"),{EventEmitter:vE}=D("events"),{Minimatch:fa}=Qc(),{resolve:EE}=D("path");function xE(t,e){return new Promise((r,i)=>{ca.readdir(t,{withFileTypes:!0},(n,s)=>{if(n)switch(n.code){case"ENOTDIR":e?i(n):r([]);break;case"ENOTSUP":case"ENOENT":case"ENAMETOOLONG":case"UNKNOWN":r([]);break;default:i(n);break}else r(s)})})}function Xc(t,e){return new Promise((r,i)=>{(e?ca.stat:ca.lstat)(t,(s,o)=>{s?s.code==="ENOENT"?r(e?Xc(t,!1):null):r(null):r(o)})})}async function*Jc(t,e,r,i,n,s){let o=await xE(e+t,s);for(let a of o){let l=a.name;l===void 0&&(l=a,i=!0);let u=t+"/"+l,f=u.slice(1),c=e+"/"+f,h=null;(i||r)&&(h=await Xc(c,r)),!h&&a.name!==void 0&&(h=a),h===null&&(h={isDirectory:()=>!1}),h.isDirectory()?n(f)||(yield{relative:f,absolute:c,stats:h},yield*Jc(u,e,r,i,n,!1)):yield{relative:f,absolute:c,stats:h}}}async function*TE(t,e,r,i){yield*Jc("",t,e,r,i,!0)}function AE(t){return{pattern:t.pattern,dot:!!t.dot,noglobstar:!!t.noglobstar,matchBase:!!t.matchBase,nocase:!!t.nocase,ignore:t.ignore,skip:t.skip,follow:!!t.follow,stat:!!t.stat,nodir:!!t.nodir,mark:!!t.mark,silent:!!t.silent,absolute:!!t.absolute}}var qn=class extends vE{constructor(e,r,i){if(super(),typeof r=="function"&&(i=r,r=null),this.options=AE(r||{}),this.matchers=[],this.options.pattern){let n=Array.isArray(this.options.pattern)?this.options.pattern:[this.options.pattern];this.matchers=n.map(s=>new fa(s,{dot:this.options.dot,noglobstar:this.options.noglobstar,matchBase:this.options.matchBase,nocase:this.options.nocase}))}if(this.ignoreMatchers=[],this.options.ignore){let n=Array.isArray(this.options.ignore)?this.options.ignore:[this.options.ignore];this.ignoreMatchers=n.map(s=>new fa(s,{dot:!0}))}if(this.skipMatchers=[],this.options.skip){let n=Array.isArray(this.options.skip)?this.options.skip:[this.options.skip];this.skipMatchers=n.map(s=>new fa(s,{dot:!0}))}this.iterator=TE(EE(e||"."),this.options.follow,this.options.stat,this._shouldSkipDirectory.bind(this)),this.paused=!1,this.inactive=!1,this.aborted=!1,i&&(this._matches=[],this.on("match",n=>this._matches.push(this.options.absolute?n.absolute:n.relative)),this.on("error",n=>i(n)),this.on("end",()=>i(null,this._matches))),setTimeout(()=>this._next(),0)}_shouldSkipDirectory(e){return this.skipMatchers.some(r=>r.match(e))}_fileMatches(e,r){let i=e+(r?"/":"");return(this.matchers.length===0||this.matchers.some(n=>n.match(i)))&&!this.ignoreMatchers.some(n=>n.match(i))&&(!this.options.nodir||!r)}_next(){!this.paused&&!this.aborted?this.iterator.next().then(e=>{if(e.done)this.emit("end");else{let r=e.value.stats.isDirectory();if(this._fileMatches(e.value.relative,r)){let i=e.value.relative,n=e.value.absolute;this.options.mark&&r&&(i+="/",n+="/"),this.options.stat?this.emit("match",{relative:i,absolute:n,stat:e.value.stats}):this.emit("match",{relative:i,absolute:n})}this._next(this.iterator)}}).catch(e=>{this.abort(),this.emit("error",e),!e.code&&!this.options.silent&&console.error(e)}):this.inactive=!0}abort(){this.aborted=!0}pause(){this.paused=!0}resume(){this.paused=!1,this.inactive&&(this.inactive=!1,this._next())}};function eh(t,e,r){return new qn(t,e,r)}eh.ReaddirGlob=qn});var ed={};Vv(ed,{all:()=>wa,allLimit:()=>Sa,allSeries:()=>va,any:()=>Ia,anyLimit:()=>Da,anySeries:()=>Na,apply:()=>lh,applyEach:()=>ph,applyEachSeries:()=>gh,asyncify:()=>jn,auto:()=>ka,autoInject:()=>_h,cargo:()=>yh,cargoQueue:()=>mh,compose:()=>bh,concat:()=>pa,concatLimit:()=>mi,concatSeries:()=>ga,constant:()=>wh,default:()=>Nx,detect:()=>_a,detectLimit:()=>ya,detectSeries:()=>ma,dir:()=>vh,doDuring:()=>Bn,doUntil:()=>Eh,doWhilst:()=>Bn,during:()=>$n,each:()=>ba,eachLimit:()=>Un,eachOf:()=>Fe,eachOfLimit:()=>yi,eachOfSeries:()=>Xe,eachSeries:()=>Wn,ensureAsync:()=>qa,every:()=>wa,everyLimit:()=>Sa,everySeries:()=>va,filter:()=>Ea,filterLimit:()=>xa,filterSeries:()=>Ta,find:()=>_a,findLimit:()=>ya,findSeries:()=>ma,flatMap:()=>pa,flatMapLimit:()=>mi,flatMapSeries:()=>ga,foldl:()=>Sr,foldr:()=>Ra,forEach:()=>ba,forEachLimit:()=>Un,forEachOf:()=>Fe,forEachOfLimit:()=>yi,forEachOfSeries:()=>Xe,forEachSeries:()=>Wn,forever:()=>Th,groupBy:()=>Ah,groupByLimit:()=>Zn,groupBySeries:()=>Rh,inject:()=>Sr,log:()=>Oh,map:()=>Yn,mapLimit:()=>Si,mapSeries:()=>Pa,mapValues:()=>Ih,mapValuesLimit:()=>Qn,mapValuesSeries:()=>Dh,memoize:()=>Nh,nextTick:()=>Lh,parallel:()=>Ph,parallelLimit:()=>kh,priorityQueue:()=>Ch,queue:()=>ja,race:()=>Mh,reduce:()=>Sr,reduceRight:()=>Ra,reflect:()=>zn,reflectAll:()=>qh,reject:()=>Fh,rejectLimit:()=>jh,rejectSeries:()=>Bh,retry:()=>Gn,retryable:()=>zh,select:()=>Ea,selectLimit:()=>xa,selectSeries:()=>Ta,seq:()=>Ma,series:()=>Gh,setImmediate:()=>Rt,some:()=>Ia,someLimit:()=>Da,someSeries:()=>Na,sortBy:()=>$h,timeout:()=>Hh,times:()=>Vh,timesLimit:()=>Xn,timesSeries:()=>Yh,transform:()=>Kh,tryEach:()=>Zh,unmemoize:()=>Qh,until:()=>Xh,waterfall:()=>Jh,whilst:()=>$n,wrapSync:()=>jn});function lh(t,...e){return(...r)=>t(...e,...r)}function bi(t){return function(...e){var r=e.pop();return t.call(this,e,r)}}function ch(t){setTimeout(t,0)}function hh(t){return(e,...r)=>t(()=>e(...r))}function jn(t){return wi(t)?function(...e){let r=e.pop(),i=t.apply(this,e);return ih(i,r)}:bi(function(e,r){var i;try{i=t.apply(this,e)}catch(n){return r(n)}if(i&&typeof i.then=="function")return ih(i,r);r(null,i)})}function ih(t,e){return t.then(r=>{nh(e,null,r)},r=>{nh(e,r&&(r instanceof Error||r.message)?r:new Error(r))})}function nh(t,e,r){try{t(e,r)}catch(i){Rt(n=>{throw n},i)}}function wi(t){return t[Symbol.toStringTag]==="AsyncFunction"}function OE(t){return t[Symbol.toStringTag]==="AsyncGenerator"}function IE(t){return typeof t[Symbol.asyncIterator]=="function"}function q(t){if(typeof t!="function")throw new Error("expected a function");return wi(t)?jn(t):t}function M(t,e){if(e||(e=t.length),!e)throw new Error("arity is undefined");function r(...i){return typeof i[e-1]=="function"?t.apply(this,i):new Promise((n,s)=>{i[e-1]=(o,...a)=>{if(o)return s(o);n(a.length>1?a:a[0])},t.apply(this,i)})}return r}function dh(t){return function(r,...i){return M(function(s){var o=this;return t(r,(a,l)=>{q(a).apply(o,i.concat(l))},s)})}}function La(t,e,r,i){e=e||[];var n=[],s=0,o=q(r);return t(e,(a,l,u)=>{var f=s++;o(a,(c,h)=>{n[f]=h,u(c)})},a=>{i(a,n)})}function Hn(t){return t&&typeof t.length=="number"&&t.length>=0&&t.length%1===0}function Ot(t){function e(...r){if(t!==null){var i=t;t=null,i.apply(this,r)}}return Object.assign(e,t),e}function DE(t){return t[Symbol.iterator]&&t[Symbol.iterator]()}function NE(t){var e=-1,r=t.length;return function(){return++e<r?{value:t[e],key:e}:null}}function LE(t){var e=-1;return function(){var i=t.next();return i.done?null:(e++,{value:i.value,key:e})}}function PE(t){var e=t?Object.keys(t):[],r=-1,i=e.length;return function n(){var s=e[++r];return s==="__proto__"?n():r<i?{value:t[s],key:s}:null}}function kE(t){if(Hn(t))return NE(t);var e=DE(t);return e?LE(e):PE(t)}function It(t){return function(...e){if(t===null)throw new Error("Callback was already called.");var r=t;t=null,r.apply(this,e)}}function sh(t,e,r,i){let n=!1,s=!1,o=!1,a=0,l=0;function u(){a>=e||o||n||(o=!0,t.next().then(({value:h,done:d})=>{if(!(s||n)){if(o=!1,d){n=!0,a<=0&&i(null);return}a++,r(h,l,f),l++,u()}}).catch(c))}function f(h,d){if(a-=1,!s){if(h)return c(h);if(h===!1){n=!0,s=!0;return}if(d===Vn||n&&a<=0)return n=!0,i(null);u()}}function c(h){s||(o=!1,n=!0,i(h))}u()}function CE(t,e,r,i){return $e(e)(t,q(r),i)}function ME(t,e,r){r=Ot(r);var i=0,n=0,{length:s}=t,o=!1;s===0&&r(null);function a(l,u){l===!1&&(o=!0),o!==!0&&(l?r(l):(++n===s||u===Vn)&&r(null))}for(;i<s;i++)e(t[i],i,It(a))}function qE(t,e,r){return yi(t,1/0,e,r)}function FE(t,e,r){var i=Hn(t)?ME:qE;return i(t,q(e),r)}function jE(t,e,r){return La(Fe,t,e,r)}function BE(t,e,r){return yi(t,1,e,r)}function UE(t,e,r){return La(Xe,t,e,r)}function vr(){let t,e;function r(i,...n){if(i)return e(i);t(n.length>1?n:n[0])}return r[Er]=new Promise((i,n)=>{t=i,e=n}),r}function ka(t,e,r){typeof e!="number"&&(r=e,e=null),r=Ot(r||vr());var i=Object.keys(t).length;if(!i)return r(null);e||(e=i);var n={},s=0,o=!1,a=!1,l=Object.create(null),u=[],f=[],c={};Object.keys(t).forEach(v=>{var E=t[v];if(!Array.isArray(E)){h(v,[E]),f.push(v);return}var A=E.slice(0,E.length-1),N=A.length;if(N===0){h(v,E),f.push(v);return}c[v]=N,A.forEach(x=>{if(!t[x])throw new Error("async.auto task `"+v+"` has a non-existent dependency `"+x+"` in "+A.join(", "));y(x,()=>{N--,N===0&&h(v,E)})})}),m(),d();function h(v,E){u.push(()=>S(v,E))}function d(){if(!o){if(u.length===0&&s===0)return r(null,n);for(;u.length&&s<e;){var v=u.shift();v()}}}function y(v,E){var A=l[v];A||(A=l[v]=[]),A.push(E)}function p(v){var E=l[v]||[];E.forEach(A=>A()),d()}function S(v,E){if(!a){var A=It((x,...O)=>{if(s--,x===!1){o=!0;return}if(O.length<2&&([O]=O),x){var w={};if(Object.keys(n).forEach(T=>{w[T]=n[T]}),w[v]=O,a=!0,l=Object.create(null),o)return;r(x,w)}else n[v]=O,p(v)});s++;var N=q(E[E.length-1]);E.length>1?N(n,A):N(A)}}function m(){for(var v,E=0;f.length;)v=f.pop(),E++,b(v).forEach(A=>{--c[A]===0&&f.push(A)});if(E!==i)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}function b(v){var E=[];return Object.keys(t).forEach(A=>{let N=t[A];Array.isArray(N)&&N.indexOf(v)>=0&&E.push(A)}),E}return r[Er]}function HE(t){let e="",r=0,i=t.indexOf("*/");for(;r<t.length;)if(t[r]==="/"&&t[r+1]==="/"){let n=t.indexOf(`
4
4
  `,r);r=n===-1?t.length:n}else if(i!==-1&&t[r]==="/"&&t[r+1]==="*"){let n=t.indexOf("*/",r);n!==-1?(r=n+2,i=t.indexOf("*/",r)):(e+=t[r],r++)}else e+=t[r],r++;return e}function VE(t){let e=HE(t.toString()),r=e.match(WE);if(r||(r=e.match(zE)),!r)throw new Error(`could not parse args in autoInject
5
5
  Source:
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as P}from"./chunk-HCBYKLMW.js";import{r as i}from"./chunk-UFZAQ5P6.js";import{a,b as l,i as h}from"./chunk-Q7JVDEOV.js";import{a as w}from"./chunk-6YGTRKDT.js";import{e as b}from"./chunk-UR6MHSHU.js";var A=b(w(),1);var o=b(P(),1);function B(n,d,f,m,p){let x=f==="basic"&&m?`basic (${m})`:f,s=20,c=`${n} [${d}]`,u="\xB7".repeat(Math.max(2,s-c.length+3));return{label:`${c} ${u} ${x}`,profile:n,env:d,isActive:p}}function y({creds:n,onSwitch:d,onCancel:f}){let m=n.listProfiles(),p=n.getActiveProfile(),x=n.getDefaultEnv(),s=m.map(e=>{let t=n.loadBasicAuth(e.profile,e.env),r=n.loadCredentials(e.profile,e.env)!==null,g=t?"basic":r?"oauth":"none",v=t?t.username:null,T=e.profile===p&&e.env===x;return B(e.profile,e.env,g,v,T)}),[c,u]=(0,A.useState)(()=>{let e=s.findIndex(t=>t.isActive);return e>=0?e:0});return h((e,t)=>{if(t.escape){f();return}if(t.upArrow){u(r=>Math.max(0,r-1));return}if(t.downArrow){u(r=>Math.min(s.length-1,r+1));return}if(t.return&&s[c]){let r=s[c];r.isActive||d(r.profile,r.env),f();return}}),s.length===0?(0,o.jsxs)(a,{flexDirection:"column",borderStyle:"round",borderColor:i.primary,paddingX:2,paddingY:1,children:[(0,o.jsx)(l,{color:i.primary,bold:!0,children:"Profiles"}),(0,o.jsx)(a,{marginTop:1,children:(0,o.jsx)(l,{color:i.dim,children:"No profiles \u2014 use Login to create one"})}),(0,o.jsx)(a,{marginTop:1,children:(0,o.jsx)(l,{color:i.dim,children:"esc back"})})]}):(0,o.jsxs)(a,{flexDirection:"column",borderStyle:"round",borderColor:i.primary,paddingX:2,paddingY:1,children:[(0,o.jsx)(l,{color:i.primary,bold:!0,children:"Profiles"}),(0,o.jsx)(a,{flexDirection:"column",marginTop:1,children:s.map((e,t)=>{let r=t===c,g=r?"\u276F ":" ",v=e.isActive?i.statusPass:r?i.primary:void 0;return(0,o.jsxs)(l,{color:v,children:[g,e.label,e.isActive?" \u25CF active":""]},`${e.profile}-${e.env}`)})}),(0,o.jsx)(a,{marginTop:1,children:(0,o.jsx)(l,{color:i.dim,children:"\u2191\u2193 navigate \xB7 \u21B5 switch \xB7 esc back"})})]})}export{B as a,y as b};
2
+ import{a as P}from"./chunk-HCBYKLMW.js";import{r as i}from"./chunk-733KSBIW.js";import{a,b as l,i as h}from"./chunk-Q7JVDEOV.js";import{a as w}from"./chunk-6YGTRKDT.js";import{e as b}from"./chunk-UR6MHSHU.js";var A=b(w(),1);var o=b(P(),1);function B(n,d,f,m,p){let x=f==="basic"&&m?`basic (${m})`:f,s=20,c=`${n} [${d}]`,u="\xB7".repeat(Math.max(2,s-c.length+3));return{label:`${c} ${u} ${x}`,profile:n,env:d,isActive:p}}function y({creds:n,onSwitch:d,onCancel:f}){let m=n.listProfiles(),p=n.getActiveProfile(),x=n.getDefaultEnv(),s=m.map(e=>{let t=n.loadBasicAuth(e.profile,e.env),r=n.loadCredentials(e.profile,e.env)!==null,g=t?"basic":r?"oauth":"none",v=t?t.username:null,T=e.profile===p&&e.env===x;return B(e.profile,e.env,g,v,T)}),[c,u]=(0,A.useState)(()=>{let e=s.findIndex(t=>t.isActive);return e>=0?e:0});return h((e,t)=>{if(t.escape){f();return}if(t.upArrow){u(r=>Math.max(0,r-1));return}if(t.downArrow){u(r=>Math.min(s.length-1,r+1));return}if(t.return&&s[c]){let r=s[c];r.isActive||d(r.profile,r.env),f();return}}),s.length===0?(0,o.jsxs)(a,{flexDirection:"column",borderStyle:"round",borderColor:i.primary,paddingX:2,paddingY:1,children:[(0,o.jsx)(l,{color:i.primary,bold:!0,children:"Profiles"}),(0,o.jsx)(a,{marginTop:1,children:(0,o.jsx)(l,{color:i.dim,children:"No profiles \u2014 use Login to create one"})}),(0,o.jsx)(a,{marginTop:1,children:(0,o.jsx)(l,{color:i.dim,children:"esc back"})})]}):(0,o.jsxs)(a,{flexDirection:"column",borderStyle:"round",borderColor:i.primary,paddingX:2,paddingY:1,children:[(0,o.jsx)(l,{color:i.primary,bold:!0,children:"Profiles"}),(0,o.jsx)(a,{flexDirection:"column",marginTop:1,children:s.map((e,t)=>{let r=t===c,g=r?"\u276F ":" ",v=e.isActive?i.statusPass:r?i.primary:void 0;return(0,o.jsxs)(l,{color:v,children:[g,e.label,e.isActive?" \u25CF active":""]},`${e.profile}-${e.env}`)})}),(0,o.jsx)(a,{marginTop:1,children:(0,o.jsx)(l,{color:i.dim,children:"\u2191\u2193 navigate \xB7 \u21B5 switch \xB7 esc back"})})]})}export{B as a,y as b};
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ var h=class{constructor(e,t,i){this.baseUrl=e;this.authHeader=`Basic ${Buffer.from(`${t}:${i}`).toString("base64")}`}authHeader;headers(){return{Authorization:this.authHeader,"Content-Type":"application/json",Accept:"application/json"}}async listProjects(e){let s=[],a=!1;for(let o=1;o<=100;o++){let n=`${this.baseUrl}/v1/projects?page=${o}&per_page=200&sort=created_at`,r=await fetch(n,{method:"GET",headers:this.headers()});if(!r.ok)throw new Error(`List projects failed: ${r.status} ${await r.text()}`);let d=(await r.json()).data??[];if(e&&!a&&d.length>0){let c=d[0];e(`PROJECT response sample project_id=${c.project_id} name=${c.name}`),a=!0}if(s.push(...d),d.length<200)break}return s}async getDefaultFolder(e){let t=await fetch(`${this.baseUrl}/v1/projects/${e}/folder/default`,{method:"GET",headers:this.headers()});if(!t.ok)throw new Error(`Get default folder failed: ${t.status} ${await t.text()}`);return(await t.json()).id}async listFolders(e){let t=await fetch(`${this.baseUrl}/v1/folder/entity/${e}`,{method:"GET",headers:this.headers()});if(!t.ok)throw new Error(`List folders failed: ${t.status} ${await t.text()}`);return(await t.json()).data??[]}async createAtmTest(e,t){let i=t?`Bearer ${t}`:this.authHeader,s=await fetch(`${this.baseUrl}/atm/v1/test`,{method:"POST",headers:{Authorization:i,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(e)});if(!s.ok)throw new Error(`Create ATM test failed: ${s.status} ${await s.text()}`);let a=await s.json();if(!a.test_id)throw new Error("Create ATM test returned no test_id");return a.test_id}async endTest(e,t,i){let s=i?`Bearer ${i}`:this.authHeader,a=new URLSearchParams({commit_id:t.commit_id,time_taken:String(t.time_taken),steps_count:String(t.steps_count),commit_message:t.commit_message}),o={};t.objectives&&t.objectives.length>0&&(o.objectives=t.objectives);let n=await fetch(`${this.baseUrl}/atm/v1/test/${e}?${a.toString()}`,{method:"DELETE",headers:{Authorization:s,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(o)});if(!n.ok)throw new Error(`End test failed: ${n.status} ${await n.text()}`);let r=await n.json();return{testcase_id:r.data?.testcase_id??"",test_id:r.data?.test_id??e,project_id:r.data?.project_id??""}}async submitFeedback(e,t){let i=t?`Bearer ${t}`:this.authHeader,s={instruction_id:e.instruction_id,test_id:e.test_id,feedback_type:e.feedback_type,mode:e.mode??"human"};e.details&&(s.details=e.details);let a=await fetch(`${this.baseUrl}/atm/v1/generative-feedback`,{method:"POST",headers:{Authorization:i,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(s)});if(!a.ok)throw new Error(`Submit feedback failed: ${a.status} ${await a.text()}`);return await a.json()}};export{h as a};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as E}from"./chunk-HCBYKLMW.js";import{r}from"./chunk-UFZAQ5P6.js";import{a as i,b as t,i as M}from"./chunk-Q7JVDEOV.js";import{a as q}from"./chunk-6YGTRKDT.js";import{e as L}from"./chunk-UR6MHSHU.js";var c=L(q(),1);var e=L(E(),1);function G(y){let m=[{id:"method",label:"Auth method",options:[{label:"Basic Auth",value:"basic"},{label:"OAuth (browser)",value:"oauth"}]}];return y&&m.push({id:"env",label:"Environment",options:[{label:"prod",value:"prod"},{label:"stage",value:"stage"}]}),m.push({id:"profile",label:"Profile"}),m.push({id:"credentials",label:"Credentials"}),m}function Z({devMode:y,profiles:m,onBasicLogin:F,onOAuthLogin:W,onComplete:R,onCancel:v}){let X=G(y),[B,S]=(0,c.useState)(0),[P,b]=(0,c.useState)(0),[T,w]=(0,c.useState)({}),[d,p]=(0,c.useState)("select"),[_,x]=(0,c.useState)(""),[u,A]=(0,c.useState)("username"),[z,Y]=(0,c.useState)(""),[k,C]=(0,c.useState)(null),[N,K]=(0,c.useState)(null),g=X[B],$=T.method??"basic",f=T.env??"prod",D=(0,c.useCallback)(()=>{let n=m.filter(l=>l.env===f).map(l=>({label:`${l.profile} [${l.env}]`,value:l.profile}));return n.push({label:"+ Create new",value:"__new__"}),n},[m,f]),I=(0,c.useCallback)(()=>{B===0?v():(S(a=>a-1),b(0),p("select"),x(""),C(null))},[B,v]),O=(0,c.useCallback)(a=>{$==="basic"?(p("text-input"),A("username"),x("")):(p("waiting"),W(a,f).then(()=>{K(`Logged in via OAuth as ${a} [${f}]`),p("done")}).catch(n=>{C(n.message),p("error")}))},[$,f,W]);M((a,n)=>{if(d==="done"){let o=T.profile??"default";R(o,f);return}if(d==="error"){v();return}if(d==="waiting"){n.escape&&v();return}if(d==="text-input"||d==="text-input-masked"){if(n.escape){I();return}if(n.return){let o=_.trim();if(!o)return;if(u==="profileName"){let s=o;w(V=>({...V,profile:s})),O(s);return}if(u==="username"){Y(o),x(""),A("accessKey"),p("text-input-masked");return}if(u==="accessKey"){let s=T.profile??"default";F(s,f,z,o),K(`Logged in as ${s} [${f}] via basic auth`),p("done");return}}if(n.backspace||n.delete){x(o=>o.slice(0,-1));return}a&&!n.ctrl&&!n.meta&&x(o=>o+a);return}if(n.escape){I();return}let l=g?.id==="profile"?D():g?.options??[];if(n.upArrow){b(o=>Math.max(0,o-1));return}if(n.downArrow){b(o=>Math.min(l.length-1,o+1));return}if(n.return&&l[P]){let o=l[P];if(g.id==="profile"){if(o.value==="__new__"){p("text-input"),A("profileName"),x("");return}w(s=>({...s,profile:o.value})),S(s=>s+1),b(0),O(o.value);return}w(s=>({...s,[g.id]:o.value})),S(s=>s+1),b(0)}});let h="Login";if(d==="done")return(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:r.statusPass,paddingX:2,paddingY:1,children:[(0,e.jsxs)(t,{color:r.statusPass,bold:!0,children:["\u2713 ",N]}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.dim,children:"press any key"})})]});if(d==="error")return(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:r.statusFail,paddingX:2,paddingY:1,children:[(0,e.jsx)(t,{color:r.statusFail,bold:!0,children:"Login failed"}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.statusFail,children:k})}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.dim,children:"press any key"})})]});if(d==="waiting")return(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:r.primary,paddingX:2,paddingY:1,children:[(0,e.jsxs)(t,{color:r.primary,bold:!0,children:[h," \u203A OAuth"]}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.secondary,children:"Opening browser for login..."})}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.primary,children:"Waiting for callback \u27F3"})}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.dim,children:"esc cancel"})})]});if(d==="text-input"||d==="text-input-masked"){let a=u==="username"?"Username":u==="accessKey"?"Access Key":"Profile name",n=d==="text-input-masked"?"\u2022".repeat(_.length):_,l=u==="username"||u==="accessKey"?`${h} \u203A Basic Auth`:`${h} \u203A New Profile`;return(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:r.primary,paddingX:2,paddingY:1,children:[(0,e.jsx)(t,{color:r.primary,bold:!0,children:l}),u==="accessKey"&&(0,e.jsxs)(i,{marginTop:1,children:[(0,e.jsx)(t,{color:r.secondary,children:"Username: "}),(0,e.jsx)(t,{children:z})]}),(0,e.jsxs)(i,{marginTop:1,children:[(0,e.jsxs)(t,{color:r.secondary,children:[a,": "]}),(0,e.jsx)(t,{children:n}),(0,e.jsx)(t,{color:r.dimmed,children:"\u2588"})]}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.dim,children:"\u21B5 confirm \xB7 esc back"})})]})}let U=g?.id==="profile"?D():g?.options??[];return(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:r.primary,paddingX:2,paddingY:1,children:[(0,e.jsx)(t,{color:r.primary,bold:!0,children:h}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsxs)(t,{color:r.secondary,children:[g?.label,":"]})}),(0,e.jsx)(i,{flexDirection:"column",marginTop:1,children:U.map((a,n)=>{let l=n===P,o=l?"\u276F ":" ",s=a.value==="__new__"?r.statusPass:l?r.primary:void 0;return(0,e.jsxs)(t,{color:s,children:[o,a.label]},a.value)})}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.dim,children:"\u2191\u2193 navigate \xB7 \u21B5 select \xB7 esc back"})})]})}export{G as a,Z as b};
2
+ import{a as E}from"./chunk-HCBYKLMW.js";import{r}from"./chunk-733KSBIW.js";import{a as i,b as t,i as M}from"./chunk-Q7JVDEOV.js";import{a as q}from"./chunk-6YGTRKDT.js";import{e as L}from"./chunk-UR6MHSHU.js";var c=L(q(),1);var e=L(E(),1);function G(y){let m=[{id:"method",label:"Auth method",options:[{label:"Basic Auth",value:"basic"},{label:"OAuth (browser)",value:"oauth"}]}];return y&&m.push({id:"env",label:"Environment",options:[{label:"prod",value:"prod"},{label:"stage",value:"stage"}]}),m.push({id:"profile",label:"Profile"}),m.push({id:"credentials",label:"Credentials"}),m}function Z({devMode:y,profiles:m,onBasicLogin:F,onOAuthLogin:W,onComplete:R,onCancel:v}){let X=G(y),[B,S]=(0,c.useState)(0),[P,b]=(0,c.useState)(0),[T,w]=(0,c.useState)({}),[d,p]=(0,c.useState)("select"),[_,x]=(0,c.useState)(""),[u,A]=(0,c.useState)("username"),[z,Y]=(0,c.useState)(""),[k,C]=(0,c.useState)(null),[N,K]=(0,c.useState)(null),g=X[B],$=T.method??"basic",f=T.env??"prod",D=(0,c.useCallback)(()=>{let n=m.filter(l=>l.env===f).map(l=>({label:`${l.profile} [${l.env}]`,value:l.profile}));return n.push({label:"+ Create new",value:"__new__"}),n},[m,f]),I=(0,c.useCallback)(()=>{B===0?v():(S(a=>a-1),b(0),p("select"),x(""),C(null))},[B,v]),O=(0,c.useCallback)(a=>{$==="basic"?(p("text-input"),A("username"),x("")):(p("waiting"),W(a,f).then(()=>{K(`Logged in via OAuth as ${a} [${f}]`),p("done")}).catch(n=>{C(n.message),p("error")}))},[$,f,W]);M((a,n)=>{if(d==="done"){let o=T.profile??"default";R(o,f);return}if(d==="error"){v();return}if(d==="waiting"){n.escape&&v();return}if(d==="text-input"||d==="text-input-masked"){if(n.escape){I();return}if(n.return){let o=_.trim();if(!o)return;if(u==="profileName"){let s=o;w(V=>({...V,profile:s})),O(s);return}if(u==="username"){Y(o),x(""),A("accessKey"),p("text-input-masked");return}if(u==="accessKey"){let s=T.profile??"default";F(s,f,z,o),K(`Logged in as ${s} [${f}] via basic auth`),p("done");return}}if(n.backspace||n.delete){x(o=>o.slice(0,-1));return}a&&!n.ctrl&&!n.meta&&x(o=>o+a);return}if(n.escape){I();return}let l=g?.id==="profile"?D():g?.options??[];if(n.upArrow){b(o=>Math.max(0,o-1));return}if(n.downArrow){b(o=>Math.min(l.length-1,o+1));return}if(n.return&&l[P]){let o=l[P];if(g.id==="profile"){if(o.value==="__new__"){p("text-input"),A("profileName"),x("");return}w(s=>({...s,profile:o.value})),S(s=>s+1),b(0),O(o.value);return}w(s=>({...s,[g.id]:o.value})),S(s=>s+1),b(0)}});let h="Login";if(d==="done")return(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:r.statusPass,paddingX:2,paddingY:1,children:[(0,e.jsxs)(t,{color:r.statusPass,bold:!0,children:["\u2713 ",N]}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.dim,children:"press any key"})})]});if(d==="error")return(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:r.statusFail,paddingX:2,paddingY:1,children:[(0,e.jsx)(t,{color:r.statusFail,bold:!0,children:"Login failed"}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.statusFail,children:k})}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.dim,children:"press any key"})})]});if(d==="waiting")return(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:r.primary,paddingX:2,paddingY:1,children:[(0,e.jsxs)(t,{color:r.primary,bold:!0,children:[h," \u203A OAuth"]}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.secondary,children:"Opening browser for login..."})}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.primary,children:"Waiting for callback \u27F3"})}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.dim,children:"esc cancel"})})]});if(d==="text-input"||d==="text-input-masked"){let a=u==="username"?"Username":u==="accessKey"?"Access Key":"Profile name",n=d==="text-input-masked"?"\u2022".repeat(_.length):_,l=u==="username"||u==="accessKey"?`${h} \u203A Basic Auth`:`${h} \u203A New Profile`;return(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:r.primary,paddingX:2,paddingY:1,children:[(0,e.jsx)(t,{color:r.primary,bold:!0,children:l}),u==="accessKey"&&(0,e.jsxs)(i,{marginTop:1,children:[(0,e.jsx)(t,{color:r.secondary,children:"Username: "}),(0,e.jsx)(t,{children:z})]}),(0,e.jsxs)(i,{marginTop:1,children:[(0,e.jsxs)(t,{color:r.secondary,children:[a,": "]}),(0,e.jsx)(t,{children:n}),(0,e.jsx)(t,{color:r.dimmed,children:"\u2588"})]}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.dim,children:"\u21B5 confirm \xB7 esc back"})})]})}let U=g?.id==="profile"?D():g?.options??[];return(0,e.jsxs)(i,{flexDirection:"column",borderStyle:"round",borderColor:r.primary,paddingX:2,paddingY:1,children:[(0,e.jsx)(t,{color:r.primary,bold:!0,children:h}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsxs)(t,{color:r.secondary,children:[g?.label,":"]})}),(0,e.jsx)(i,{flexDirection:"column",marginTop:1,children:U.map((a,n)=>{let l=n===P,o=l?"\u276F ":" ",s=a.value==="__new__"?r.statusPass:l?r.primary:void 0;return(0,e.jsxs)(t,{color:s,children:[o,a.label]},a.value)})}),(0,e.jsx)(i,{marginTop:1,children:(0,e.jsx)(t,{color:r.dim,children:"\u2191\u2193 navigate \xB7 \u21B5 select \xB7 esc back"})})]})}export{G as a,Z as b};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as n,c as s,e as c}from"./chunk-UFZAQ5P6.js";import{readFileSync as p,writeFileSync as f,mkdirSync as h}from"fs";import{join as d}from"path";var m=d(s,"version-check.json"),g=1440*60*1e3;function y(){try{let t=JSON.parse(p(m,"utf-8"));if(Date.now()-t.checkedAt<g)return t}catch{}return null}function C(t){try{h(s,{recursive:!0}),f(m,JSON.stringify({latest:t,checkedAt:Date.now()}))}catch{}}function u(t,i){let a=t.split(".").map(Number),e=i.split(".").map(Number);for(let o=0;o<3;o++){let r=(e[o]??0)-(a[o]??0);if(r!==0)return r}return 0}function l(t,i){let a=t.split(".").map(Number),e=i.split(".").map(Number);return(e[0]??0)!==(a[0]??0)?"major":(e[1]??0)!==(a[1]??0)?"minor":"patch"}async function N(){try{let t=y();if(t)return u(n,t.latest)>0?{current:n,latest:t.latest,severity:l(n,t.latest)}:null;let i=new AbortController,a=setTimeout(()=>i.abort(),5e3),e=await fetch(c,{headers:{Accept:"application/json"},signal:i.signal});if(clearTimeout(a),!e.ok)return null;let r=(await e.json())["dist-tags"]?.latest;return r?(C(r),u(n,r)>0?{current:n,latest:r,severity:l(n,r)}:null):null}catch{return null}}export{u as a,l as b,N as c};
2
+ import{a as n,c as s,e as c}from"./chunk-733KSBIW.js";import{readFileSync as p,writeFileSync as f,mkdirSync as h}from"fs";import{join as d}from"path";var m=d(s,"version-check.json"),g=1440*60*1e3;function y(){try{let t=JSON.parse(p(m,"utf-8"));if(Date.now()-t.checkedAt<g)return t}catch{}return null}function C(t){try{h(s,{recursive:!0}),f(m,JSON.stringify({latest:t,checkedAt:Date.now()}))}catch{}}function u(t,i){let a=t.split(".").map(Number),e=i.split(".").map(Number);for(let o=0;o<3;o++){let r=(e[o]??0)-(a[o]??0);if(r!==0)return r}return 0}function l(t,i){let a=t.split(".").map(Number),e=i.split(".").map(Number);return(e[0]??0)!==(a[0]??0)?"major":(e[1]??0)!==(a[1]??0)?"minor":"patch"}async function N(){try{let t=y();if(t)return u(n,t.latest)>0?{current:n,latest:t.latest,severity:l(n,t.latest)}:null;let i=new AbortController,a=setTimeout(()=>i.abort(),5e3),e=await fetch(c,{headers:{Accept:"application/json"},signal:i.signal});if(clearTimeout(a),!e.ok)return null;let r=(await e.json())["dist-tags"]?.latest;return r?(C(r),u(n,r)>0?{current:n,latest:r,severity:l(n,r)}:null):null}catch{return null}}export{u as a,l as b,N as c};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as u,b as g}from"./chunk-TYLGP66W.js";import{a as d}from"./chunk-XQBQB3VZ.js";import{a as f}from"./chunk-HCBYKLMW.js";import{a as P}from"./chunk-6YGTRKDT.js";import{e as m}from"./chunk-UR6MHSHU.js";var r=m(P(),1);var p=m(f(),1);function R(t,s,n,o){return{id:t,label:`${s} (${t}) \xB7 ${n} tests`,isActive:t===o}}function A({resolver:t,projectId:s,currentFolderId:n,env:o,onSelect:v,onCancel:L}){let[h,y]=(0,r.useState)([]),[E,i]=(0,r.useState)(!0),[b,l]=(0,r.useState)(null);return(0,r.useEffect)(()=>{if(!t){l("Login first to browse folders"),i(!1);return}(async()=>{try{let e=t.cached;if(!e){l("Login first to browse folders"),i(!1);return}let a=u(o),F=await new d(a.tmsBaseUrl,e.username,e.access_key).listFolders(s);y(F.map(c=>R(c.id,c.name,c.test_cases_count,n)))}catch(e){l(e instanceof Error?e.message:String(e))}finally{i(!1)}})()},[t,s,n,o]),(0,p.jsx)(g,{title:"Folders",items:h,loading:E,error:b,itemNoun:"folders",onSelect:e=>{let a=e.label.split(" (")[0];v(e.id,a)},onCancel:L})}export{R as a,A as b};
2
+ import{a as u,b as g}from"./chunk-7L6XR6ON.js";import{a as d}from"./chunk-I7YWZ3D2.js";import{a as f}from"./chunk-HCBYKLMW.js";import{a as P}from"./chunk-6YGTRKDT.js";import{e as m}from"./chunk-UR6MHSHU.js";var r=m(P(),1);var p=m(f(),1);function R(t,s,n,o){return{id:t,label:`${s} (${t}) \xB7 ${n} tests`,isActive:t===o}}function A({resolver:t,projectId:s,currentFolderId:n,env:o,onSelect:v,onCancel:L}){let[h,y]=(0,r.useState)([]),[E,i]=(0,r.useState)(!0),[b,l]=(0,r.useState)(null);return(0,r.useEffect)(()=>{if(!t){l("Login first to browse folders"),i(!1);return}(async()=>{try{let e=t.cached;if(!e){l("Login first to browse folders"),i(!1);return}let a=u(o),F=await new d(a.tmsBaseUrl,e.username,e.access_key).listFolders(s);y(F.map(c=>R(c.id,c.name,c.test_cases_count,n)))}catch(e){l(e instanceof Error?e.message:String(e))}finally{i(!1)}})()},[t,s,n,o]),(0,p.jsx)(g,{title:"Folders",items:h,loading:E,error:b,itemNoun:"folders",onSelect:e=>{let a=e.label.split(" (")[0];v(e.id,a)},onCancel:L})}export{R as a,A as b};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as S}from"./chunk-HCBYKLMW.js";import{i as p,r as t}from"./chunk-UFZAQ5P6.js";import{a as m,b as n,i as y}from"./chunk-Q7JVDEOV.js";import{a as L}from"./chunk-6YGTRKDT.js";import{e as h}from"./chunk-UR6MHSHU.js";var g=h(L(),1);import{readdirSync as D,mkdirSync as A,statSync as N}from"fs";import{join as P}from"path";var r=h(S(),1);function O(c){try{return D(c).filter(s=>{try{return N(P(c,s)).isDirectory()}catch{return!1}})}catch{return[]}}function E(c,s,f,T){return{name:c,path:s,label:c,isActive:T}}function F({currentPath:c,onSelect:s,onCancel:f}){let l=O(p).map(i=>{let e=P(p,i);return E(i,e,c,e===c)}),d=!c,B=l.length+2,[a,b]=(0,g.useState)(()=>{if(d)return 0;let i=l.findIndex(e=>e.isActive);return i>=0?i+1:0}),[v,C]=(0,g.useState)(!1),[I,x]=(0,g.useState)("");return y((i,e)=>{if(v){if(e.escape){C(!1),x("");return}if(e.return){let o=I.trim();if(o){let u=P(p,o);A(u,{recursive:!0}),s(u),f()}return}if(e.backspace||e.delete){x(o=>o.slice(0,-1));return}i&&!e.ctrl&&!e.meta&&x(o=>o+i);return}if(e.escape){f();return}if(e.upArrow){b(o=>Math.max(0,o-1));return}if(e.downArrow){b(o=>Math.min(B-1,o+1));return}if(e.return){if(a===0){d||s(""),f();return}if(a===l.length+1){A(p,{recursive:!0}),C(!0),x("");return}let o=l[a-1];o&&!o.isActive&&s(o.path),f();return}}),v?(0,r.jsxs)(m,{flexDirection:"column",borderStyle:"round",borderColor:t.primary,paddingX:2,paddingY:1,children:[(0,r.jsx)(n,{color:t.primary,bold:!0,children:"Chrome Profile \u203A New"}),(0,r.jsxs)(m,{marginTop:1,children:[(0,r.jsx)(n,{color:t.secondary,children:"Name: "}),(0,r.jsx)(n,{children:I}),(0,r.jsx)(n,{color:t.dimmed,children:"\u2588"})]}),(0,r.jsx)(m,{marginTop:1,children:(0,r.jsx)(n,{color:t.dim,children:"\u21B5 create \xB7 esc back"})})]}):(0,r.jsxs)(m,{flexDirection:"column",borderStyle:"round",borderColor:t.primary,paddingX:2,paddingY:1,children:[(0,r.jsx)(n,{color:t.primary,bold:!0,children:"Chrome Profile"}),(0,r.jsxs)(m,{flexDirection:"column",marginTop:1,children:[(0,r.jsxs)(n,{color:d?t.statusPass:a===0?t.primary:t.dim,children:[a===0?"\u276F ":" ","Use temporary (no profile)",d?" \u25CF active":""]}),l.map((i,e)=>{let u=e+1===a,R=u?"\u276F ":" ",w=i.isActive?t.statusPass:u?t.primary:void 0;return(0,r.jsxs)(n,{color:w,children:[R,i.label,i.isActive?" \u25CF active":""]},i.name)}),(0,r.jsxs)(n,{color:a===l.length+1?t.primary:t.dim,children:[a===l.length+1?"\u276F ":" ","+ Create new"]})]}),(0,r.jsx)(m,{marginTop:1,children:(0,r.jsx)(n,{color:t.dim,children:"\u2191\u2193 navigate \xB7 \u21B5 select \xB7 esc back"})})]})}export{O as a,E as b,F as c};
2
+ import{a as S}from"./chunk-HCBYKLMW.js";import{i as p,r as t}from"./chunk-733KSBIW.js";import{a as m,b as n,i as y}from"./chunk-Q7JVDEOV.js";import{a as L}from"./chunk-6YGTRKDT.js";import{e as h}from"./chunk-UR6MHSHU.js";var g=h(L(),1);import{readdirSync as D,mkdirSync as A,statSync as N}from"fs";import{join as P}from"path";var r=h(S(),1);function O(c){try{return D(c).filter(s=>{try{return N(P(c,s)).isDirectory()}catch{return!1}})}catch{return[]}}function E(c,s,f,T){return{name:c,path:s,label:c,isActive:T}}function F({currentPath:c,onSelect:s,onCancel:f}){let l=O(p).map(i=>{let e=P(p,i);return E(i,e,c,e===c)}),d=!c,B=l.length+2,[a,b]=(0,g.useState)(()=>{if(d)return 0;let i=l.findIndex(e=>e.isActive);return i>=0?i+1:0}),[v,C]=(0,g.useState)(!1),[I,x]=(0,g.useState)("");return y((i,e)=>{if(v){if(e.escape){C(!1),x("");return}if(e.return){let o=I.trim();if(o){let u=P(p,o);A(u,{recursive:!0}),s(u),f()}return}if(e.backspace||e.delete){x(o=>o.slice(0,-1));return}i&&!e.ctrl&&!e.meta&&x(o=>o+i);return}if(e.escape){f();return}if(e.upArrow){b(o=>Math.max(0,o-1));return}if(e.downArrow){b(o=>Math.min(B-1,o+1));return}if(e.return){if(a===0){d||s(""),f();return}if(a===l.length+1){A(p,{recursive:!0}),C(!0),x("");return}let o=l[a-1];o&&!o.isActive&&s(o.path),f();return}}),v?(0,r.jsxs)(m,{flexDirection:"column",borderStyle:"round",borderColor:t.primary,paddingX:2,paddingY:1,children:[(0,r.jsx)(n,{color:t.primary,bold:!0,children:"Chrome Profile \u203A New"}),(0,r.jsxs)(m,{marginTop:1,children:[(0,r.jsx)(n,{color:t.secondary,children:"Name: "}),(0,r.jsx)(n,{children:I}),(0,r.jsx)(n,{color:t.dimmed,children:"\u2588"})]}),(0,r.jsx)(m,{marginTop:1,children:(0,r.jsx)(n,{color:t.dim,children:"\u21B5 create \xB7 esc back"})})]}):(0,r.jsxs)(m,{flexDirection:"column",borderStyle:"round",borderColor:t.primary,paddingX:2,paddingY:1,children:[(0,r.jsx)(n,{color:t.primary,bold:!0,children:"Chrome Profile"}),(0,r.jsxs)(m,{flexDirection:"column",marginTop:1,children:[(0,r.jsxs)(n,{color:d?t.statusPass:a===0?t.primary:t.dim,children:[a===0?"\u276F ":" ","Use temporary (no profile)",d?" \u25CF active":""]}),l.map((i,e)=>{let u=e+1===a,R=u?"\u276F ":" ",w=i.isActive?t.statusPass:u?t.primary:void 0;return(0,r.jsxs)(n,{color:w,children:[R,i.label,i.isActive?" \u25CF active":""]},i.name)}),(0,r.jsxs)(n,{color:a===l.length+1?t.primary:t.dim,children:[a===l.length+1?"\u276F ":" ","+ Create new"]})]}),(0,r.jsx)(m,{marginTop:1,children:(0,r.jsx)(n,{color:t.dim,children:"\u2191\u2193 navigate \xB7 \u21B5 select \xB7 esc back"})})]})}export{O as a,E as b,F as c};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as d}from"./chunk-HCBYKLMW.js";import{r as t}from"./chunk-UFZAQ5P6.js";import{a as s,b as n}from"./chunk-Q7JVDEOV.js";import{a as f}from"./chunk-6YGTRKDT.js";import{e as u}from"./chunk-UR6MHSHU.js";var c=u(f(),1);var R=u(f(),1);var m=u(f(),1);function b(o,r){let a=(0,m.useRef)(o);a.current=o,(0,m.useEffect)(()=>{if(r===null)return;let i=setInterval(()=>a.current(),r);return()=>clearInterval(i)},[r])}var B=u(d(),1),T=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function v({active:o=!0}){let[r,a]=(0,R.useState)(0);return b(()=>{a(i=>(i+1)%T.length)},o?80:null),(0,B.jsx)(n,{color:t.purple,children:o?T[r]:"\u25CF"})}var e=u(d(),1);function $(){return[{name:"convert",label:"Converting session data",status:"pending"},{name:"zip",label:"Compressing artifacts",status:"pending"},{name:"presign",label:"Requesting upload URLs",status:"pending"},{name:"upload",label:"Uploading to KaneAI",status:"pending"},{name:"finalize",label:"Finalizing test case",status:"pending"},{name:"code_export",label:"Downloading test code",status:"pending"}]}function k(o,r,a,i){return o.map(p=>p.name===r?{...p,status:a,detail:i}:p)}function I(o){let r=o/1e3;if(r<60)return`${r.toFixed(1)}s`;let a=Math.floor(r/60),i=Math.round(r%60);return`${a}m ${i}s`}function O(o){let[r,a]=(0,c.useState)(0),i=c.default.useRef(Date.now());return(0,c.useEffect)(()=>{if(!o)return;i.current=Date.now();let p=setInterval(()=>{a(Date.now()-i.current)},100);return()=>clearInterval(p)},[o]),r}function y({steps:o,status:r,testUrl:a,error:i}){let p=O(r==="uploading");return r==="uploading"?(0,e.jsxs)(s,{flexDirection:"column",paddingX:1,paddingY:1,children:[(0,e.jsxs)(s,{children:[(0,e.jsx)(n,{color:t.primary,children:"\u2601 "}),(0,e.jsx)(n,{color:t.primary,bold:!0,children:"Saving to KaneAI"}),(0,e.jsxs)(n,{color:t.dimmed,children:[" ",I(p)]})]}),(0,e.jsx)(s,{flexDirection:"column",marginTop:1,children:o.filter(l=>l.status!=="skipped").map((l,E,P)=>{let D=E===P.length-1?"\u2514\u2500":"\u251C\u2500",g=l.status==="done",x=l.status==="running",S=l.status==="failed";return(0,e.jsxs)(s,{children:[(0,e.jsxs)(n,{color:t.dimmed,children:[" ",D," "]}),(0,e.jsx)(s,{width:3,children:x?(0,e.jsx)(v,{}):g?(0,e.jsx)(n,{color:t.green,children:"\u2713"}):S?(0,e.jsx)(n,{color:t.red,children:"\u2717"}):(0,e.jsx)(n,{color:t.muted,children:"\u25CB"})}),(0,e.jsx)(n,{color:g?t.dim:x?t.base:S?t.red:t.muted,children:l.label}),l.detail&&(0,e.jsxs)(n,{color:t.dimmed,children:[" ",l.detail]})]},l.name)})}),(0,e.jsx)(s,{marginTop:1,children:(0,e.jsx)(n,{color:t.muted,children:" press Ctrl+C twice to force exit"})})]}):r==="success"?(0,e.jsx)(e.Fragment,{}):(0,e.jsxs)(s,{flexDirection:"column",paddingX:1,paddingY:1,children:[(0,e.jsxs)(s,{children:[(0,e.jsx)(n,{color:t.red,children:"\u2601 "}),(0,e.jsx)(n,{color:t.red,bold:!0,children:"Save failed"})]}),i&&(0,e.jsxs)(s,{marginTop:0,children:[(0,e.jsx)(n,{color:t.dimmed,children:" "}),(0,e.jsx)(n,{color:t.dim,children:i})]})]})}export{b as a,v as b,$ as c,k as d,y as e};
2
+ import{a as d}from"./chunk-HCBYKLMW.js";import{r as t}from"./chunk-733KSBIW.js";import{a as s,b as n}from"./chunk-Q7JVDEOV.js";import{a as f}from"./chunk-6YGTRKDT.js";import{e as u}from"./chunk-UR6MHSHU.js";var c=u(f(),1);var R=u(f(),1);var m=u(f(),1);function b(o,r){let a=(0,m.useRef)(o);a.current=o,(0,m.useEffect)(()=>{if(r===null)return;let i=setInterval(()=>a.current(),r);return()=>clearInterval(i)},[r])}var B=u(d(),1),T=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"];function v({active:o=!0}){let[r,a]=(0,R.useState)(0);return b(()=>{a(i=>(i+1)%T.length)},o?80:null),(0,B.jsx)(n,{color:t.purple,children:o?T[r]:"\u25CF"})}var e=u(d(),1);function $(){return[{name:"convert",label:"Converting session data",status:"pending"},{name:"zip",label:"Compressing artifacts",status:"pending"},{name:"presign",label:"Requesting upload URLs",status:"pending"},{name:"upload",label:"Uploading to KaneAI",status:"pending"},{name:"finalize",label:"Finalizing test case",status:"pending"},{name:"code_export",label:"Downloading test code",status:"pending"}]}function k(o,r,a,i){return o.map(p=>p.name===r?{...p,status:a,detail:i}:p)}function I(o){let r=o/1e3;if(r<60)return`${r.toFixed(1)}s`;let a=Math.floor(r/60),i=Math.round(r%60);return`${a}m ${i}s`}function O(o){let[r,a]=(0,c.useState)(0),i=c.default.useRef(Date.now());return(0,c.useEffect)(()=>{if(!o)return;i.current=Date.now();let p=setInterval(()=>{a(Date.now()-i.current)},100);return()=>clearInterval(p)},[o]),r}function y({steps:o,status:r,testUrl:a,error:i}){let p=O(r==="uploading");return r==="uploading"?(0,e.jsxs)(s,{flexDirection:"column",paddingX:1,paddingY:1,children:[(0,e.jsxs)(s,{children:[(0,e.jsx)(n,{color:t.primary,children:"\u2601 "}),(0,e.jsx)(n,{color:t.primary,bold:!0,children:"Saving to KaneAI"}),(0,e.jsxs)(n,{color:t.dimmed,children:[" ",I(p)]})]}),(0,e.jsx)(s,{flexDirection:"column",marginTop:1,children:o.filter(l=>l.status!=="skipped").map((l,E,P)=>{let D=E===P.length-1?"\u2514\u2500":"\u251C\u2500",g=l.status==="done",x=l.status==="running",S=l.status==="failed";return(0,e.jsxs)(s,{children:[(0,e.jsxs)(n,{color:t.dimmed,children:[" ",D," "]}),(0,e.jsx)(s,{width:3,children:x?(0,e.jsx)(v,{}):g?(0,e.jsx)(n,{color:t.green,children:"\u2713"}):S?(0,e.jsx)(n,{color:t.red,children:"\u2717"}):(0,e.jsx)(n,{color:t.muted,children:"\u25CB"})}),(0,e.jsx)(n,{color:g?t.dim:x?t.base:S?t.red:t.muted,children:l.label}),l.detail&&(0,e.jsxs)(n,{color:t.dimmed,children:[" ",l.detail]})]},l.name)})}),(0,e.jsx)(s,{marginTop:1,children:(0,e.jsx)(n,{color:t.muted,children:" press Ctrl+C twice to force exit"})})]}):r==="success"?(0,e.jsx)(e.Fragment,{}):(0,e.jsxs)(s,{flexDirection:"column",paddingX:1,paddingY:1,children:[(0,e.jsxs)(s,{children:[(0,e.jsx)(n,{color:t.red,children:"\u2601 "}),(0,e.jsx)(n,{color:t.red,bold:!0,children:"Save failed"})]}),i&&(0,e.jsxs)(s,{marginTop:0,children:[(0,e.jsx)(n,{color:t.dimmed,children:" "}),(0,e.jsx)(n,{color:t.dim,children:i})]})]})}export{b as a,v as b,$ as c,k as d,y as e};
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
3
- import{a as Cn,b as En}from"./chunk-HYR5SALH.js";import{a as an,b as Gr,c as Zn,d as ts,e as ns}from"./chunk-CKV5QDKM.js";import{a as ss}from"./chunk-JJU63IV4.js";import{c as Qr}from"./chunk-7JOLGZTB.js";import{b as Yn}from"./chunk-3LZPBHIR.js";import{b as Qn}from"./chunk-IJTXDIJZ.js";import{a as ce,b as Xn}from"./chunk-TYLGP66W.js";import{a as cn}from"./chunk-NRQDE7HH.js";import{a as Zr,b as un}from"./chunk-YNF4MUQP.js";import{a as es}from"./chunk-O2HIAIOC.js";import{a as rs}from"./chunk-BNJ6GSDA.js";import{c as kn}from"./chunk-OUXII47G.js";import{a as ln}from"./chunk-3CJ6IY5O.js";import{a as It}from"./chunk-XQBQB3VZ.js";import{b as Xr}from"./chunk-JGWWZTQP.js";import{b as Yr}from"./chunk-RE43ZRYS.js";import{a as ae}from"./chunk-HCBYKLMW.js";import{a as Pt,c as _e,d as Wr,g as Kn,h as qn,j as Jn,k as zn,l as Gn,m as Kr,n as qr,o as Jr,p as zr,r as m}from"./chunk-UFZAQ5P6.js";import{a as v,b as u,c as yn,d as Xt,i as Ze,j as Sn,k as Ot}from"./chunk-Q7JVDEOV.js";import{a as We}from"./chunk-6YGTRKDT.js";import{a as on,c as Ht,e as G}from"./chunk-UR6MHSHU.js";var xn=Ht(Rr=>{"use strict";var Fn=class extends Error{constructor(e,t,r){super(r),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},kr=class extends Fn{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Rr.CommanderError=Fn;Rr.InvalidArgumentError=kr});var Nn=Ht(Tr=>{"use strict";var{InvalidArgumentError:da}=xn(),Ar=class{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.length>3&&this._name.slice(-3)==="..."&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new da(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,r):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function fa(i){let e=i.name()+(i.variadic===!0?"...":"");return i.required?"<"+e+">":"["+e+"]"}Tr.Argument=Ar;Tr.humanReadableArgName=fa});var Pr=Ht(uo=>{"use strict";var{humanReadableArgName:ma}=Nn(),Or=class{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(e){let t=e.commands.filter(n=>!n._hidden),r=e._getHelpCommand();return r&&!r._hidden&&t.push(r),this.sortSubcommands&&t.sort((n,s)=>n.name().localeCompare(s.name())),t}compareOptions(e,t){let r=n=>n.short?n.short.replace(/^-/,""):n.long.replace(/^--/,"");return r(e).localeCompare(r(t))}visibleOptions(e){let t=e.options.filter(n=>!n.hidden),r=e._getHelpOption();if(r&&!r.hidden){let n=r.short&&e._findOption(r.short),s=r.long&&e._findOption(r.long);!n&&!s?t.push(r):r.long&&!s?t.push(e.createOption(r.long,r.description)):r.short&&!n&&t.push(e.createOption(r.short,r.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let r=e.parent;r;r=r.parent){let n=r.options.filter(s=>!s.hidden);t.push(...n)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||""}),e.registeredArguments.find(t=>t.description)?e.registeredArguments:[]}subcommandTerm(e){let t=e.registeredArguments.map(r=>ma(r)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((r,n)=>Math.max(r,t.subcommandTerm(n).length),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((r,n)=>Math.max(r,t.optionTerm(n).length),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((r,n)=>Math.max(r,t.optionTerm(n).length),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((r,n)=>Math.max(r,t.argumentTerm(n).length),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let r="";for(let n=e.parent;n;n=n.parent)r=n.name()+" "+r;return r+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];return e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0?`${e.description} (${t.join(", ")})`:e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let r=`(${t.join(", ")})`;return e.description?`${e.description} ${r}`:r}return e.description}formatHelp(e,t){let r=t.padWidth(e,t),n=t.helpWidth||80,s=2,a=2;function o(p,b){if(b){let g=`${p.padEnd(r+a)}${b}`;return t.wrap(g,n-s,r+a)}return p}function l(p){return p.join(`
3
+ import{a as Cn,b as En}from"./chunk-ES665H5Q.js";import{a as an,b as Gr,c as Zn,d as ts,e as ns}from"./chunk-ZU6PFD6P.js";import{a as ss}from"./chunk-2BDMMEKZ.js";import{c as Qr}from"./chunk-TJQXEAEK.js";import{b as Yn}from"./chunk-2SAJWTZL.js";import{b as Qn}from"./chunk-SKKMAOD4.js";import{a as ce,b as Xn}from"./chunk-7L6XR6ON.js";import{a as cn}from"./chunk-NRQDE7HH.js";import{a as Zr,b as un}from"./chunk-YNF4MUQP.js";import{a as es}from"./chunk-GNMGQOGV.js";import{a as rs}from"./chunk-2WZN5PNJ.js";import{c as kn}from"./chunk-P5KW7XFK.js";import{a as ln}from"./chunk-3CJ6IY5O.js";import{a as It}from"./chunk-I7YWZ3D2.js";import{b as Xr}from"./chunk-LN4R7PDY.js";import{b as Yr}from"./chunk-GRQIIIKB.js";import{a as ae}from"./chunk-HCBYKLMW.js";import{a as Pt,c as _e,d as Wr,g as Kn,h as qn,j as Jn,k as zn,l as Gn,m as Kr,n as qr,o as Jr,p as zr,r as m}from"./chunk-733KSBIW.js";import{a as v,b as u,c as yn,d as Xt,i as Ze,j as Sn,k as Ot}from"./chunk-Q7JVDEOV.js";import{a as We}from"./chunk-6YGTRKDT.js";import{a as on,c as Ht,e as G}from"./chunk-UR6MHSHU.js";var xn=Ht(Rr=>{"use strict";var Fn=class extends Error{constructor(e,t,r){super(r),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},kr=class extends Fn{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Rr.CommanderError=Fn;Rr.InvalidArgumentError=kr});var Nn=Ht(Tr=>{"use strict";var{InvalidArgumentError:da}=xn(),Ar=class{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.length>3&&this._name.slice(-3)==="..."&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new da(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,r):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function fa(i){let e=i.name()+(i.variadic===!0?"...":"");return i.required?"<"+e+">":"["+e+"]"}Tr.Argument=Ar;Tr.humanReadableArgName=fa});var Pr=Ht(uo=>{"use strict";var{humanReadableArgName:ma}=Nn(),Or=class{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(e){let t=e.commands.filter(n=>!n._hidden),r=e._getHelpCommand();return r&&!r._hidden&&t.push(r),this.sortSubcommands&&t.sort((n,s)=>n.name().localeCompare(s.name())),t}compareOptions(e,t){let r=n=>n.short?n.short.replace(/^-/,""):n.long.replace(/^--/,"");return r(e).localeCompare(r(t))}visibleOptions(e){let t=e.options.filter(n=>!n.hidden),r=e._getHelpOption();if(r&&!r.hidden){let n=r.short&&e._findOption(r.short),s=r.long&&e._findOption(r.long);!n&&!s?t.push(r):r.long&&!s?t.push(e.createOption(r.long,r.description)):r.short&&!n&&t.push(e.createOption(r.short,r.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let r=e.parent;r;r=r.parent){let n=r.options.filter(s=>!s.hidden);t.push(...n)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||""}),e.registeredArguments.find(t=>t.description)?e.registeredArguments:[]}subcommandTerm(e){let t=e.registeredArguments.map(r=>ma(r)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((r,n)=>Math.max(r,t.subcommandTerm(n).length),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((r,n)=>Math.max(r,t.optionTerm(n).length),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((r,n)=>Math.max(r,t.optionTerm(n).length),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((r,n)=>Math.max(r,t.argumentTerm(n).length),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let r="";for(let n=e.parent;n;n=n.parent)r=n.name()+" "+r;return r+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];return e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0?`${e.description} (${t.join(", ")})`:e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let r=`(${t.join(", ")})`;return e.description?`${e.description} ${r}`:r}return e.description}formatHelp(e,t){let r=t.padWidth(e,t),n=t.helpWidth||80,s=2,a=2;function o(p,b){if(b){let g=`${p.padEnd(r+a)}${b}`;return t.wrap(g,n-s,r+a)}return p}function l(p){return p.join(`
4
4
  `).replace(/^/gm," ".repeat(s))}let c=[`Usage: ${t.commandUsage(e)}`,""],d=t.commandDescription(e);d.length>0&&(c=c.concat([t.wrap(d,n,0),""]));let h=t.visibleArguments(e).map(p=>o(t.argumentTerm(p),t.argumentDescription(p)));h.length>0&&(c=c.concat(["Arguments:",l(h),""]));let x=t.visibleOptions(e).map(p=>o(t.optionTerm(p),t.optionDescription(p)));if(x.length>0&&(c=c.concat(["Options:",l(x),""])),this.showGlobalOptions){let p=t.visibleGlobalOptions(e).map(b=>o(t.optionTerm(b),t.optionDescription(b)));p.length>0&&(c=c.concat(["Global Options:",l(p),""]))}let S=t.visibleCommands(e).map(p=>o(t.subcommandTerm(p),t.subcommandDescription(p)));return S.length>0&&(c=c.concat(["Commands:",l(S),""])),c.join(`
5
5
  `)}padWidth(e,t){return Math.max(t.longestOptionTermLength(e,t),t.longestGlobalOptionTermLength(e,t),t.longestSubcommandTermLength(e,t),t.longestArgumentTermLength(e,t))}wrap(e,t,r,n=40){let s=" \\f\\t\\v\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF",a=new RegExp(`[\\n][${s}]+`);if(e.match(a))return e;let o=t-r;if(o<n)return e;let l=e.slice(0,r),c=e.slice(r).replace(`\r
6
6
  `,`
@@ -37,12 +37,12 @@ tell application "System Events" to get value of property list item "CFBundleNam
37
37
  `))}t(!1),b.current=null})().catch(X=>{let f=b.current,k=[`Runner event loop error: ${X}`];f&&(f.exitCode!==null&&f.exitCode!==0&&k.push(`Exit code: ${f.exitCode}`),f.exitSignal&&k.push(`Signal: ${f.exitSignal}`),f.stderr&&k.push(f.stderr)),d(k.join(`
38
38
  `)),t(!1),b.current=null})},[i]),Q=(0,Re.useCallback)(L=>{b.current?.sendUserResponse(L),a(null)},[]),te=(0,Re.useCallback)(()=>{let L=b.current;L&&(L.sendCancel("user"),t(!1),a(null),setTimeout(()=>{b.current===L&&(L.cancel(),b.current=null)},5e3))},[]);return(0,Re.useEffect)(()=>()=>{F.current=!0,b.current?.cancel(),b.current=null},[]),{isRunning:e,steps:r,askingUser:s,lastRunEnd:o,runError:c,bifurcationInfo:h,cmInitCounts:S,startRun:W,sendAnswer:Q,cancelRun:te}}var ta=null;function Zs(i){ta=i}import{readdirSync as na,readFileSync as to,existsSync as no}from"fs";import{join as ra}from"path";function eo(i,e){if(!no(i))return{};let t={},r;try{r=na(i).filter(n=>n.endsWith(".json")).sort()}catch{return{}}for(let n of r)try{let s=to(ra(i,n),"utf-8"),a=JSON.parse(s);if(a&&typeof a=="object"){for(let[o,l]of Object.entries(a))if(l&&typeof l=="object"&&"value"in l){let c=l;t[o]={value:c.value,secret:c.secret??!1,syntax:c.syntax??`{{${o}}}`}}}}catch{e?.(`Warning: skipping invalid variables file: ${n}`)}return t}function ro(i){no(i)||(console.error(`Variables file not found: ${i}`),process.exit(2));let e=to(i,"utf-8"),t=JSON.parse(e),r={};if(t&&typeof t=="object"){for(let[n,s]of Object.entries(t))if(s&&typeof s=="object"&&"value"in s){let a=s;r[n]={value:a.value,secret:a.secret??!1,syntax:a.syntax??`{{${n}}}`}}}return r}function so(i){let e;try{e=JSON.parse(i)}catch{console.error("Invalid --variables JSON"),process.exit(2)}let t={};if(e&&typeof e=="object"){for(let[r,n]of Object.entries(e))if(n&&typeof n=="object"&&"value"in n){let s=n;t[r]={value:s.value,secret:s.secret??!1,syntax:s.syntax??`{{${r}}}`}}}return t}function Ln(i,e,t){let r=eo(i,t),n=eo(e,t);return{...r,...n}}import{readFileSync as sa,existsSync as oa}from"fs";function Zt(i){if(!oa(i))return null;try{return sa(i,"utf-8").trim()||null}catch{return null}}function Mn(i,e){let t={},r={},n=e;for(let[s,a]of Object.entries(i))if(a.secret){let o=`secrets.user.${s}`;t[o]={value:a.value,secret:!0,syntax:`{{secrets.user.${s}}}`,type:"secret"},r[s]=o,n=n.replaceAll(`{{${s}}}`,`{{secrets.user.${s}}}`)}else{let o=`global.${s}`;t[o]={value:a.value,secret:!1,syntax:`{{global.${s}}}`,type:"global"},r[s]=o,n=n.replaceAll(`{{${s}}}`,`{{global.${s}}}`)}return{variables:t,objective:n,keyMap:r}}import{readFileSync as lo,readdirSync as ca,existsSync as gn}from"fs";import{dirname as ua,join as De}from"path";var tt=G(We(),1);var Xe=G(ae(),1),ia=64;function aa(i){return i.split(`
39
39
  `).map(e=>e.replace(/^[-–•]\s*/,"").trim()).filter(e=>e.length>0)}function Er({status:i,summary:e,duration:t,steps:r,stepsPassed:n,stepsFailed:s,reason:a}){let o=i==="passed",l=o?m.green:m.red,c=o?"\u2713":"\u2717",d=i.toUpperCase(),h=n??(o?r:Math.max(0,r-1)),x=s??(o?0:1),S=x>0?`${r} steps (${h} passed, ${x} failed)`:`${r} steps`,p=t<60?`${t.toFixed(1)}s`:`${Math.floor(t/60)}m ${Math.round(t%60)}s`,b=aa(e);return(0,Xe.jsx)(v,{flexDirection:"column",marginTop:1,children:(0,Xe.jsxs)(v,{borderStyle:"round",borderColor:l,flexDirection:"column",paddingX:2,paddingY:1,width:ia+6,children:[(0,Xe.jsxs)(v,{children:[(0,Xe.jsxs)(u,{bold:!0,color:l,children:[c," ",d]}),(0,Xe.jsxs)(u,{color:m.dimmed,children:[" ","\xB7 ",S," \xB7 ",p]})]}),b.length>0&&(0,Xe.jsx)(v,{flexDirection:"column",marginTop:1,marginLeft:1,children:b.map((g,w)=>(0,Xe.jsxs)(v,{marginBottom:w<b.length-1?1:0,children:[(0,Xe.jsx)(u,{color:m.primary,children:"\u25CF "}),(0,Xe.jsx)(v,{flexShrink:1,children:(0,Xe.jsx)(u,{wrap:"wrap",children:g})})]},w))}),a&&!o&&(0,Xe.jsx)(v,{marginTop:1,children:(0,Xe.jsxs)(u,{color:m.red,wrap:"wrap",children:["Reason: ",a]})})]})})}var Ye=G(ae(),1);function oo({message:i,code:e,remediation:t,docsUrl:r}){return(0,Ye.jsx)(Cn,{title:"Error",variant:"error",children:(0,Ye.jsxs)(v,{flexDirection:"column",paddingY:1,children:[(0,Ye.jsxs)(u,{color:m.red,bold:!0,children:[" \u2717 ",i]}),e&&(0,Ye.jsxs)(v,{marginTop:0,marginLeft:5,children:[(0,Ye.jsx)(u,{color:m.muted,children:"Code: "}),(0,Ye.jsx)(u,{color:m.dimmed,children:e})]}),t&&(0,Ye.jsxs)(v,{flexDirection:"column",marginTop:1,marginLeft:5,children:[(0,Ye.jsx)(u,{color:m.green,bold:!0,children:"Fix:"}),(0,Ye.jsxs)(u,{color:m.cyan,children:["$ ",t]})]}),r&&(0,Ye.jsxs)(v,{marginTop:1,marginLeft:5,children:[(0,Ye.jsx)(u,{color:m.muted,children:"Docs: "}),(0,Ye.jsx)(u,{color:m.cyan,underline:!0,children:r})]})]})})}var Ae=G(ae(),1);function io({data:i,color:e}){let t=i.status==="passed"?"passed":"failed";return(0,Ae.jsx)(Er,{status:t,summary:i.summary??"",duration:i.duration,steps:i.stepsTotal,stepsPassed:i.stepsPassed,stepsFailed:i.stepsFailed,reason:i.reason})}function ao({config:i,spawnOpts:e,cancelRef:t,banner:r,onComplete:n,onStepEnd:s}){let{exit:a}=Sn(),o=Vn(s),l=(0,tt.useRef)(!1),c=(0,tt.useRef)(!1),[d,h]=(0,tt.useState)("");(0,tt.useEffect)(()=>{l.current||(l.current=!0,o.startRun(i,e))},[i,e,o]),(0,tt.useEffect)(()=>{t&&(t.current=()=>o.cancelRun())},[t,o]);let x=(0,tt.useRef)(0);Ze((b,g)=>{g.ctrl&&b==="c"&&(o.isRunning?(x.current++,x.current>=2?a():o.cancelRun()):a())}),Ze((b,g)=>{o.askingUser&&(g.return?(o.sendAnswer(d),h("")):g.backspace||g.delete?h(w=>w.slice(0,-1)):b&&!g.ctrl&&!g.meta&&h(w=>w+b))},{isActive:!!o.askingUser}),(0,tt.useEffect)(()=>{if(!o.isRunning&&o.lastRunEnd&&!c.current){c.current=!0;let b=o.steps.flatMap(Q=>{let te=Q.children??[];return[Q,...te]}),g=b.filter(Q=>Q.status==="passed").length,w=b.filter(Q=>Q.status==="failed").length,F=b.filter(Q=>Q.status==="passed"||Q.status==="failed").length,W=o.bifurcationInfo;n({lastRunEnd:o.lastRunEnd,stepsPassed:g,stepsFailed:w,stepsTotal:F,hadError:!1,bifurcationFlows:W&&!W.isSingleFlow?W.flows:null}),a()}},[o.isRunning,o.lastRunEnd,o.steps,n,a]),(0,tt.useEffect)(()=>{o.runError&&!o.isRunning&&!c.current&&(c.current=!0,n({lastRunEnd:null,stepsPassed:0,stepsFailed:0,stepsTotal:0,hadError:!0,bifurcationFlows:null}),a())},[o.runError,o.isRunning,n,a]);let S=o.lastRunEnd?(()=>{let b=o.steps.flatMap(W=>[W,...W.children??[]]),g=b.filter(W=>W.status==="passed").length,w=b.filter(W=>W.status==="failed").length,F=b.filter(W=>W.status==="passed"||W.status==="failed").length;return{status:o.lastRunEnd.status,duration:o.lastRunEnd.duration??0,summary:o.lastRunEnd.summary??"",stepsPassed:g,stepsFailed:w,stepsTotal:F,reason:o.lastRunEnd.reason,finalState:o.lastRunEnd.final_state}})():null,p=(0,tt.useMemo)(()=>r?[{key:"banner",...r}]:[],[r]);return(0,Ae.jsxs)(v,{flexDirection:"column",children:[(0,Ae.jsx)(Xt,{items:p,children:b=>(0,Ae.jsxs)(v,{flexDirection:"column",marginBottom:1,children:[(0,Ae.jsxs)(v,{borderStyle:"round",borderColor:"#dc4e08",paddingX:2,children:[(0,Ae.jsx)(u,{color:"#ff9500",bold:!0,children:"KaneAI CLI"}),(0,Ae.jsx)(u,{color:m.dimmed,children:" \u2502 "}),(0,Ae.jsx)(u,{color:m.cyan,children:b.model}),(0,Ae.jsx)(u,{color:m.dimmed,children:" \u2502 "}),(0,Ae.jsx)(u,{color:m.dimmed,children:b.auth})]}),b.status?.map((g,w)=>(0,Ae.jsx)(u,{color:m.dimmed,children:g},w))]},b.key)}),o.steps.length>0&&(0,Ae.jsx)(Pn,{steps:o.steps,bifurcated:!!o.bifurcationInfo&&!o.bifurcationInfo.isSingleFlow,flows:o.bifurcationInfo?.flows,cmInitCounts:o.cmInitCounts,staticSteps:!0}),o.askingUser&&(0,Ae.jsxs)(v,{flexDirection:"column",marginTop:1,children:[(0,Ae.jsxs)(u,{color:m.yellow,children:['Agent is asking: "',o.askingUser,'"']}),(0,Ae.jsxs)(u,{children:["> ",d,"\u2588"]})]}),o.runError&&(0,Ae.jsx)(oo,{message:o.runError,code:"RUNNER_ERROR"}),S&&(0,Ae.jsx)(Er,{status:S.status==="passed"?"passed":"failed",summary:S.summary??"",duration:S.duration,steps:S.stepsTotal,stepsPassed:S.stepsPassed,stepsFailed:S.stepsFailed,reason:S.reason})]})}var en=class{constructor(e){this.baseUrl=e}async pushSecret(e){let t=`Basic ${Buffer.from(`${e.username}:${e.accessKey}`).toString("base64")}`,r=await fetch(`${this.baseUrl}/logistics/v1.0/secrets/create`,{method:"PUT",headers:{Authorization:t,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({secretKey:e.secretKey,secretValue:e.secretValue,orgId:e.orgId,username:e.username,scope:"user",type:"user",accessKey:e.accessKey})});if(!r.ok)throw new Error(`Push secret failed: ${r.status} ${await r.text()}`)}static extractVariableKeys(e){let t=e.matchAll(/\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g),r=new Set;for(let n of t)r.add(n[1]);return[...r]}};var tn=class{constructor(e,t,r){this.baseUrl=e;this.authHeader=`Basic ${Buffer.from(`${t}:${r}`).toString("base64")}`}authHeader;headers(){return{Authorization:this.authHeader,"Content-Type":"application/json",Accept:"application/json"}}async upsertVariable(e){let t=e.environmentId??0,r=await fetch(`${this.baseUrl}/v1/variables`,{method:"POST",headers:this.headers(),body:JSON.stringify({name:e.name,value:String(e.value),type:"variable",value_type:"string",is_persist:e.isPersist??!1,environment_id:t})});if(r.ok)return{id:(await r.json()).id??0};if(r.status!==409&&r.status!==422)return{id:0};if(!(await fetch(`${this.baseUrl}/v1/variables/name/${encodeURIComponent(e.name)}`,{method:"PUT",headers:this.headers(),body:JSON.stringify({value:String(e.value),value_type:"string",type:"variable",environment_id:t})})).ok)return{id:0};let s=await fetch(`${this.baseUrl}/v1/variables/${encodeURIComponent(e.name)}?environment_id=${t}`,{method:"GET",headers:this.headers()});return s.ok?{id:(await s.json()).data?.id??0}:{id:0}}};import la from"sharp";var nn=class{maxWorkers;maxRetries=2;queue=[];activeCount=0;drainResolvers=[];sas;constructor(e,t=3){this.sas=e,this.maxWorkers=t}updateSas(e){this.sas=e}enqueue(e,t){this.queue.push({operationId:e,buffer:t}),this.pump()}async drain(e=3e4){if(!(this.queue.length===0&&this.activeCount===0))return new Promise(t=>{this.drainResolvers.push(t),setTimeout(()=>{t()},e)})}pump(){for(;this.activeCount<this.maxWorkers&&this.queue.length>0;){let e=this.queue.shift();this.activeCount++,this.processJob(e).finally(()=>{if(this.activeCount--,this.pump(),this.queue.length===0&&this.activeCount===0){for(let t of this.drainResolvers)t();this.drainResolvers=[]}})}}async processJob(e){let t,r="image/webp";try{let o=await la(e.buffer).webp({quality:80}).toBuffer();t=new Uint8Array(o)}catch{t=new Uint8Array(e.buffer),r="image/png"}let n=r==="image/webp"?"webp":"png",s=`test_screenshots/untagged_screenshot/${e.operationId}.${n}`,a=`${this.sas.base_url}/${this.sas.container}/${s}?${this.sas.sas_token}`;for(let o=0;o<=this.maxRetries;o++)try{if((await fetch(a,{method:"PUT",headers:{"Content-Type":r,"x-ms-blob-type":"BlockBlob"},body:t})).ok)return;if(o<this.maxRetries){await this.backoff(o);continue}}catch{if(o<this.maxRetries){await this.backoff(o);continue}}}backoff(e){let t=e===0?1e3:3e3;return new Promise(r=>setTimeout(r,t))}isNearExpiry(){if(!this.sas.expiry)return!1;let e=new Date(this.sas.expiry).getTime();return Date.now()>e-5*6e4}};var H=G(ae(),1);function co({localMode:i=!1,codeExport:e=!1,updatePromise:t}={}){let{exit:r}=Sn(),[n]=(0,U.useState)(()=>new Qt),[s]=(0,U.useState)(()=>new et),a=(0,U.useRef)(0),o=(0,U.useCallback)(()=>`msg-${++a.current}`,[]),[l,c]=(0,U.useState)(!1),[d,h]=(0,U.useState)(null),[x,S]=(0,U.useState)(!1),[p,b]=(0,U.useState)(null),[g,w]=(0,U.useState)(!1),[F,W]=(0,U.useState)(0),[Q,te]=(0,U.useState)(!1),[L,M]=(0,U.useState)(null),[A,X]=(0,U.useState)(null),[f,k]=(0,U.useState)(Zn()),[y,C]=(0,U.useState)(null),[P,j]=(0,U.useState)(!1),N=(0,U.useRef)(null),Z=(0,U.useRef)(0),Y=(0,U.useRef)(""),ue=(0,U.useRef)(0),[oe,Te]=(0,U.useState)([]),de=(0,U.useCallback)(_=>{let T=`s-${++ue.current}`;Te(R=>[...R,{id:T,content:_}])},[]),[zt,sn]=(0,U.useState)(()=>new et().load().setup_complete),[Vt,St]=(0,U.useState)("menu"),[fe,nt]=(0,U.useState)({headless:!1,maxSteps:50,timeout:0,cdpEndpoint:"",wsEndpoint:"",useCft:!1}),q=as(),$=zs(),Be=Ys(),bn=(0,U.useCallback)((_,T)=>{let R=N.current;if(!R)return;let O=Z.current+T,V=De(n.sessionDir,"runs",String(O),"run-test");try{if(!gn(V)){n.log(`SCREENSHOT_UPLOAD skip step=${_} reason=runsDir_not_found path=${V}`);return}let z=V;if(gn(De(V,"screenshots")))z=V;else{let xe=ca(V).filter(lt=>gn(De(V,lt,"screenshots")));if(xe.length===0){n.log(`SCREENSHOT_UPLOAD skip step=${_} reason=no_screenshots_dir`);return}z=De(V,xe[0])}let se=De(z,"screenshots",`step_${String(_).padStart(3,"0")}.png`);if(!gn(se)){n.log(`SCREENSHOT_UPLOAD skip step=${_} reason=screenshot_not_found path=${se}`);return}let Ue=lo(se),Se=De(z,"actions.ndjson");if(!gn(Se)){n.log(`SCREENSHOT_UPLOAD skip step=${_} reason=ndjson_not_found`);return}let Pe=lo(Se,"utf-8").trim().split(`
40
- `),Le=Pe[Pe.length-1];if(!Le){n.log(`SCREENSHOT_UPLOAD skip step=${_} reason=ndjson_empty`);return}let Ce=JSON.parse(Le).action_id;if(!Ce){n.log(`SCREENSHOT_UPLOAD skip step=${_} reason=no_action_id`);return}R.enqueue(Ce,Ue),n.log(`SCREENSHOT_UPLOAD enqueued step=${_} action_id=${Ce} size=${Ue.length}`)}catch(z){n.log(`SCREENSHOT_UPLOAD error step=${_}: ${z instanceof Error?z.message:String(z)}`)}},[n]),B=Vn(bn),[K,Ct]=(0,U.useState)(()=>s.load()),[,Gt]=(0,U.useState)(0),Et=(0,U.useCallback)(()=>Gt(_=>_+1),[]),[ve,at]=(0,U.useState)(null),Lt=$.creds.getActiveProfile(),E=$.creds.getDefaultEnv(),ie=(0,U.useCallback)((_,T)=>{let R=_?$.creds.loadProfileConfig(_,T):null;s.save({project_id:R?.project_id??null,project_name:R?.project_name??null,folder_id:R?.folder_id??null,folder_name:R?.folder_name??null}),Ct(s.load())},[$.creds,s]);(0,U.useEffect)(()=>{g||(n.start({model:K.model,environment:E,profile:Lt}),w(!0))},[n,g,K.model,E,Lt]);let J=(0,U.useCallback)(async _=>{let T=ce(_),R=$.getBasicAuth(),O=R?{username:R.username,accessKey:R.access_key}:await $.getToken().then(z=>z??"");if(!O)return;let V=new ln(T.controllerBaseUrl,O);try{let z=await V.getScreenshotSas();n.setScreenshotSas(z),N.current=new nn(z,3),n.log("SCREENSHOT_SAS fetched OK")}catch(z){n.log(`SCREENSHOT_SAS failed: ${z instanceof Error?z.message:String(z)}`)}},[$,n]),ne=(0,U.useCallback)(async _=>{let T=_??$.creds.getDefaultEnv();C(null),N.current=null;let O=await $.initResolver(T,V=>n.log(V)).resolve(!0).catch(()=>null);return C(O),O&&(n.log(`AUTH_RESET resolved: user=${O.username} org=${O.org_id} env=${T}`),await J(T)),O},[$,n,J]),ye=(0,U.useRef)(!1);(0,U.useEffect)(()=>{!l||ye.current||!g||(ye.current=!0,ne().then(_=>{_?n.log(`BOOT_RESOLVE basic auth resolved: user=${_.username} org=${_.org_id}`):n.log("BOOT_RESOLVE failed \u2014 non-controller APIs may fail")}).catch(_=>{n.log(`BOOT_RESOLVE error: ${_ instanceof Error?_.message:String(_)}`)}))},[l,g,ne,n]);let me=(0,U.useCallback)(async()=>{if(y)return n.log(`TMS_CREDS using cached credentials for user=${y.username} org=${y.org_id}`),y;let _=await $.resolveBasicAuth();return _?(n.log(`TMS_CREDS resolved: user=${_.username} org=${_.org_id} user_id=${_.user_id}`),C(_)):n.log("TMS_CREDS failed: no credentials resolved"),_},[$,y,n]),ze=(0,U.useCallback)(async()=>{let _=await me();if(!_)return n.log("PROJECT failed: no TMS credentials"),null;let T=ce(E),R=new It(T.tmsBaseUrl,_.username,_.access_key),O=$.creds.getActiveProfile(),V=$.creds.getDefaultEnv(),z=O?$.creds.loadProfileConfig(O,V):null,se=z?.project_id??K.project_id;if(se)n.log(`PROJECT using cached project_id=${se}`);else{n.log("PROJECT no project_id in config, fetching from TMS...");try{n.log(`PROJECT listing projects from: ${T.tmsBaseUrl}/v1/projects`);let Se=await R.listProjects(1,50,Le=>n.log(Le));n.log(`PROJECT found ${Se.length} projects`);let Pe=Se.find(Le=>Le.name==="KaneAI Generated");if(Pe)se=Pe.project_id,n.log(`PROJECT using "KaneAI Generated" project_id=${se}`);else if(Se.length>0){let Le=Se[0];se=Le.project_id,n.log(`PROJECT using first project: name="${Le.name}" project_id=${se}`)}se&&s.set("project_id",se)}catch(Se){return n.log(`PROJECT listing failed: ${Se}`),null}}if(!se)return n.log("PROJECT no projects found"),null;let Ue=z?.folder_id??K.folder_id;if(Ue)n.log(`FOLDER using cached folder_id=${Ue}`);else try{n.log(`FOLDER fetching default folder for project_id=${se}`),Ue=await R.getDefaultFolder(se),n.log(`FOLDER got default folder_id=${Ue}`),Ue&&s.set("folder_id",Ue)}catch(Se){return n.log(`FOLDER default folder fetch failed: ${Se}`),null}return{projectId:se,folderId:Ue??""}},[K.project_id,K.folder_id,me,E,s,n]),re=(0,U.useCallback)(_=>{let T=o(),R={..._,id:T};de((0,H.jsx)(hs,{entry:R}))},[o,de]),le=(0,U.useCallback)(async(_,T)=>{let R=n.nextRunIndex();Z.current=R,Y.current=_,n.logRunStart(R,_,T??""),n.setFirstRun(_,T??"");let V=$.getResolvedBasicAuth(),z=null;if(!V&&(z=await $.getToken(),!z)){re({type:"error",text:"Not authenticated. Run /login first."});return}if(R===0&&!i){n.log("ATM_CREATE runIndex=0 \u2014 creating test via ATM endpoint");let Ie=await ze();try{let Ft=ce(E),xt=V?{username:V.username,access_key:V.access_key}:await me(),Nt=xt?.username??"",Tt=xt?.access_key??"",Hr=await new It(Ft.tmsBaseUrl,Nt,Tt).createAtmTest({objective:_.slice(0,100),creation_mode:"KANECLI",playground_disabled:!!K.chrome_profile_path,testURL:T??K.default_url??"",project_id:Ie?.projectId??K.project_id??"",folder_id:Ie?.folderId??K.folder_id??"",authoring_version:4});n.log(`ATM_CREATE success: test_id=${Hr}`),n.setTestId(Hr),Ie?.projectId&&n.setProjectId(Ie.projectId)}catch(Ft){n.log(`ATM_CREATE failed: ${Ft}`)}}let se=null;if(fe.useCft)re({type:"info",text:"CfT mode: Playwright will manage browser"});else if(fe.wsEndpoint)re({type:"info",text:`WS endpoint: ${fe.wsEndpoint.slice(0,60)}...`});else if(fe.cdpEndpoint)re({type:"info",text:`CDP endpoint: ${fe.cdpEndpoint}`});else{re({type:"info",text:"Starting Chrome..."});try{se=await Be.ensureChrome(T)}catch(Ie){re({type:"error",text:`Chrome failed: ${Ie instanceof Error?Ie.message:String(Ie)}`});return}n.logChromeLaunch(se.port,se.cdpEndpoint),re({type:"info",text:`Chrome ready (port ${se.port})`})}let Ue=De(_e,"variables"),Se=De(process.cwd(),".testmuai","variables"),Pe=Ln(Ue,Se),Le=Zt(De(_e,"global-memory.md")),Ve=Zt(De(process.cwd(),".testmuai","context.md")),Ce=Object.keys(Pe).length>0,{variables:xe,objective:lt}=Ce?Mn(Pe,_):{variables:Pe,objective:_};n.setAuteurVariables(xe);let gt=Object.entries(Pe).filter(([,Ie])=>Ie.secret);if(!i&&gt.length>0&&V){let Ie=ce(E),Ft=new en(Ie.secretsBaseUrl),xt=await me();for(let[Nt,Tt]of gt)Ft.pushSecret({secretKey:Nt,secretValue:Tt.value,username:V.username,accessKey:V.access_key,orgId:String(xt?.org_id??"")}).then(()=>n.log(`SECRET_PUSH success key=${Nt}`)).catch(Nr=>n.log(`SECRET_PUSH failed key=${Nt}: ${Nr}`))}let Fr={},wn=Object.entries(Pe).filter(([,Ie])=>!Ie.secret);if(!i&&wn.length>0&&V){let Ie=ce(E),Ft=new tn(Ie.tmsBaseUrl,V.username,V.access_key);for(let[xt,Nt]of wn)try{let Tt=await Ft.upsertVariable({name:xt,value:Nt.value});Fr[xt]=Tt.id,n.log(`VAR_PUSH success name=${xt} id=${Tt.id}`)}catch(Tt){n.log(`VAR_PUSH failed name=${xt}: ${Tt}`)}}let Io={objective:lt,...T?{url:T}:{},model:K.model,...fe.wsEndpoint?{ws_endpoint:fe.wsEndpoint}:fe.cdpEndpoint?{cdp_endpoint:fe.cdpEndpoint}:se?{cdp_endpoint:se.cdpEndpoint}:{},width:K.window_size.width,height:K.window_size.height,session_id:n.sessionId,run_index:R,stream:!0,...fe.maxSteps!==50?{max_steps:fe.maxSteps}:{},...fe.headless?{headless:!0}:{},...V?{username:V.username,access_key:V.access_key}:z?{auth:{type:"bearer",token:z}}:{},session_context:n.getContext(),variables:Object.keys(xe).length>0?xe:void 0,global_context:Le??void 0,local_context:Ve??void 0};T&&b(T),M(null),B.startRun(Io,{environment:E}),W(Ie=>Ie+1)},[$,Be,s,K,n,E,B,re,fe,ze,me]);(0,U.useEffect)(()=>{if(B.bifurcationInfo){let{flows:_,isSingleFlow:T}=B.bifurcationInfo;if(T&&_.length===1&&_[0])n.log(`OBJECTIVE_REWRITTEN ${_[0]}`),re({type:"info",text:`Objective: ${_[0]}`});else if(!T&&_.length>1){let R=[`Bifurcated into ${_.length} flows:`];_.forEach((O,V)=>R.push(` ${V+1}. ${O}`)),n.log(`BIFURCATION ${_.length} flows`),re({type:"info",text:R.join(`
40
+ `),Le=Pe[Pe.length-1];if(!Le){n.log(`SCREENSHOT_UPLOAD skip step=${_} reason=ndjson_empty`);return}let Ce=JSON.parse(Le).action_id;if(!Ce){n.log(`SCREENSHOT_UPLOAD skip step=${_} reason=no_action_id`);return}R.enqueue(Ce,Ue),n.log(`SCREENSHOT_UPLOAD enqueued step=${_} action_id=${Ce} size=${Ue.length}`)}catch(z){n.log(`SCREENSHOT_UPLOAD error step=${_}: ${z instanceof Error?z.message:String(z)}`)}},[n]),B=Vn(bn),[K,Ct]=(0,U.useState)(()=>s.load()),[,Gt]=(0,U.useState)(0),Et=(0,U.useCallback)(()=>Gt(_=>_+1),[]),[ve,at]=(0,U.useState)(null),Lt=$.creds.getActiveProfile(),E=$.creds.getDefaultEnv(),ie=(0,U.useCallback)((_,T)=>{let R=_?$.creds.loadProfileConfig(_,T):null;s.save({project_id:R?.project_id??null,project_name:R?.project_name??null,folder_id:R?.folder_id??null,folder_name:R?.folder_name??null}),Ct(s.load())},[$.creds,s]);(0,U.useEffect)(()=>{g||(n.start({model:K.model,environment:E,profile:Lt}),w(!0))},[n,g,K.model,E,Lt]);let J=(0,U.useCallback)(async _=>{let T=ce(_),R=$.getBasicAuth(),O=R?{username:R.username,accessKey:R.access_key}:await $.getToken().then(z=>z??"");if(!O)return;let V=new ln(T.controllerBaseUrl,O);try{let z=await V.getScreenshotSas();n.setScreenshotSas(z),N.current=new nn(z,3),n.log("SCREENSHOT_SAS fetched OK")}catch(z){n.log(`SCREENSHOT_SAS failed: ${z instanceof Error?z.message:String(z)}`)}},[$,n]),ne=(0,U.useCallback)(async _=>{let T=_??$.creds.getDefaultEnv();C(null),N.current=null;let O=await $.initResolver(T,V=>n.log(V)).resolve(!0).catch(()=>null);return C(O),O&&(n.log(`AUTH_RESET resolved: user=${O.username} org=${O.org_id} env=${T}`),await J(T)),O},[$,n,J]),ye=(0,U.useRef)(!1);(0,U.useEffect)(()=>{!l||ye.current||!g||(ye.current=!0,ne().then(_=>{_?n.log(`BOOT_RESOLVE basic auth resolved: user=${_.username} org=${_.org_id}`):n.log("BOOT_RESOLVE failed \u2014 non-controller APIs may fail")}).catch(_=>{n.log(`BOOT_RESOLVE error: ${_ instanceof Error?_.message:String(_)}`)}))},[l,g,ne,n]);let me=(0,U.useCallback)(async()=>{if(y)return n.log(`TMS_CREDS using cached credentials for user=${y.username} org=${y.org_id}`),y;let _=await $.resolveBasicAuth();return _?(n.log(`TMS_CREDS resolved: user=${_.username} org=${_.org_id} user_id=${_.user_id}`),C(_)):n.log("TMS_CREDS failed: no credentials resolved"),_},[$,y,n]),ze=(0,U.useCallback)(async()=>{let _=await me();if(!_)return n.log("PROJECT failed: no TMS credentials"),null;let T=ce(E),R=new It(T.tmsBaseUrl,_.username,_.access_key),O=$.creds.getActiveProfile(),V=$.creds.getDefaultEnv(),z=O?$.creds.loadProfileConfig(O,V):null,se=z?.project_id??K.project_id;if(se)n.log(`PROJECT using cached project_id=${se}`);else{n.log("PROJECT no project_id in config, fetching from TMS...");try{n.log(`PROJECT listing projects from: ${T.tmsBaseUrl}/v1/projects`);let Se=await R.listProjects(Le=>n.log(Le));n.log(`PROJECT found ${Se.length} projects`);let Pe=Se.find(Le=>Le.name==="KaneAI Generated");if(Pe)se=Pe.project_id,n.log(`PROJECT using "KaneAI Generated" project_id=${se}`);else if(Se.length>0){let Le=Se[0];se=Le.project_id,n.log(`PROJECT using first project: name="${Le.name}" project_id=${se}`)}se&&s.set("project_id",se)}catch(Se){return n.log(`PROJECT listing failed: ${Se}`),null}}if(!se)return n.log("PROJECT no projects found"),null;let Ue=z?.folder_id??K.folder_id;if(Ue)n.log(`FOLDER using cached folder_id=${Ue}`);else try{n.log(`FOLDER fetching default folder for project_id=${se}`),Ue=await R.getDefaultFolder(se),n.log(`FOLDER got default folder_id=${Ue}`),Ue&&s.set("folder_id",Ue)}catch(Se){return n.log(`FOLDER default folder fetch failed: ${Se}`),null}return{projectId:se,folderId:Ue??""}},[K.project_id,K.folder_id,me,E,s,n]),re=(0,U.useCallback)(_=>{let T=o(),R={..._,id:T};de((0,H.jsx)(hs,{entry:R}))},[o,de]),le=(0,U.useCallback)(async(_,T)=>{let R=n.nextRunIndex();Z.current=R,Y.current=_,n.logRunStart(R,_,T??""),n.setFirstRun(_,T??"");let V=$.getResolvedBasicAuth(),z=null;if(!V&&(z=await $.getToken(),!z)){re({type:"error",text:"Not authenticated. Run /login first."});return}if(R===0&&!i){n.log("ATM_CREATE runIndex=0 \u2014 creating test via ATM endpoint");let Ie=await ze();try{let Ft=ce(E),xt=V?{username:V.username,access_key:V.access_key}:await me(),Nt=xt?.username??"",Tt=xt?.access_key??"",Hr=await new It(Ft.tmsBaseUrl,Nt,Tt).createAtmTest({objective:_.slice(0,100),creation_mode:"KANECLI",playground_disabled:!!K.chrome_profile_path,testURL:T??K.default_url??"",project_id:Ie?.projectId??K.project_id??"",folder_id:Ie?.folderId??K.folder_id??"",authoring_version:4});n.log(`ATM_CREATE success: test_id=${Hr}`),n.setTestId(Hr),Ie?.projectId&&n.setProjectId(Ie.projectId)}catch(Ft){n.log(`ATM_CREATE failed: ${Ft}`)}}let se=null;if(fe.useCft)re({type:"info",text:"CfT mode: Playwright will manage browser"});else if(fe.wsEndpoint)re({type:"info",text:`WS endpoint: ${fe.wsEndpoint.slice(0,60)}...`});else if(fe.cdpEndpoint)re({type:"info",text:`CDP endpoint: ${fe.cdpEndpoint}`});else{re({type:"info",text:"Starting Chrome..."});try{se=await Be.ensureChrome(T)}catch(Ie){re({type:"error",text:`Chrome failed: ${Ie instanceof Error?Ie.message:String(Ie)}`});return}n.logChromeLaunch(se.port,se.cdpEndpoint),re({type:"info",text:`Chrome ready (port ${se.port})`})}let Ue=De(_e,"variables"),Se=De(process.cwd(),".testmuai","variables"),Pe=Ln(Ue,Se),Le=Zt(De(_e,"global-memory.md")),Ve=Zt(De(process.cwd(),".testmuai","context.md")),Ce=Object.keys(Pe).length>0,{variables:xe,objective:lt}=Ce?Mn(Pe,_):{variables:Pe,objective:_};n.setAuteurVariables(xe);let gt=Object.entries(Pe).filter(([,Ie])=>Ie.secret);if(!i&&gt.length>0&&V){let Ie=ce(E),Ft=new en(Ie.secretsBaseUrl),xt=await me();for(let[Nt,Tt]of gt)Ft.pushSecret({secretKey:Nt,secretValue:Tt.value,username:V.username,accessKey:V.access_key,orgId:String(xt?.org_id??"")}).then(()=>n.log(`SECRET_PUSH success key=${Nt}`)).catch(Nr=>n.log(`SECRET_PUSH failed key=${Nt}: ${Nr}`))}let Fr={},wn=Object.entries(Pe).filter(([,Ie])=>!Ie.secret);if(!i&&wn.length>0&&V){let Ie=ce(E),Ft=new tn(Ie.tmsBaseUrl,V.username,V.access_key);for(let[xt,Nt]of wn)try{let Tt=await Ft.upsertVariable({name:xt,value:Nt.value});Fr[xt]=Tt.id,n.log(`VAR_PUSH success name=${xt} id=${Tt.id}`)}catch(Tt){n.log(`VAR_PUSH failed name=${xt}: ${Tt}`)}}let Io={objective:lt,...T?{url:T}:{},model:K.model,...fe.wsEndpoint?{ws_endpoint:fe.wsEndpoint}:fe.cdpEndpoint?{cdp_endpoint:fe.cdpEndpoint}:se?{cdp_endpoint:se.cdpEndpoint}:{},width:K.window_size.width,height:K.window_size.height,session_id:n.sessionId,run_index:R,stream:!0,...fe.maxSteps!==50?{max_steps:fe.maxSteps}:{},...fe.headless?{headless:!0}:{},...V?{username:V.username,access_key:V.access_key}:z?{auth:{type:"bearer",token:z}}:{},session_context:n.getContext(),variables:Object.keys(xe).length>0?xe:void 0,global_context:Le??void 0,local_context:Ve??void 0};T&&b(T),M(null),B.startRun(Io,{environment:E}),W(Ie=>Ie+1)},[$,Be,s,K,n,E,B,re,fe,ze,me]);(0,U.useEffect)(()=>{if(B.bifurcationInfo){let{flows:_,isSingleFlow:T}=B.bifurcationInfo;if(T&&_.length===1&&_[0])n.log(`OBJECTIVE_REWRITTEN ${_[0]}`),re({type:"info",text:`Objective: ${_[0]}`});else if(!T&&_.length>1){let R=[`Bifurcated into ${_.length} flows:`];_.forEach((O,V)=>R.push(` ${V+1}. ${O}`)),n.log(`BIFURCATION ${_.length} flows`),re({type:"info",text:R.join(`
41
41
  `)})}}},[B.bifurcationInfo,n,re]);let je=U.default.useRef(null),ge=U.default.useRef(0),pe=U.default.useRef(0);(0,U.useEffect)(()=>{if(B.lastRunEnd&&B.lastRunEnd!==je.current){je.current=B.lastRunEnd;let{status:_,duration:T,summary:R,reason:O,context:V}=B.lastRunEnd,z=B.steps.flatMap(xe=>{let lt=xe.children??[];return[xe,...lt]}),se=z.filter(xe=>xe.status==="passed").length,Ue=z.filter(xe=>xe.status==="failed").length,Se=z.filter(xe=>xe.status==="passed"||xe.status==="failed").length;ge.current+=Se,pe.current+=T??0,M({status:_,duration:T??0,summary:R??"",stepsPassed:se,stepsFailed:Ue,stepsTotal:Se,reason:O,finalState:B.lastRunEnd?.final_state}),n.logRunEnd(Z.current,_,T,R);let Pe=B.lastRunEnd?.total_runs??1,Le=B.lastRunEnd?.run_dir,Ve,Ce;if(Pe>1&&Le){let xe=ua(Le),lt=Z.current;Ve=Array.from({length:Pe},(Fr,wn)=>De(xe,String(lt+wn)));let gt=B.bifurcationInfo;gt&&!gt.isSingleFlow&&gt.flows.length===Pe&&(Ce=gt.flows)}n.addRunResult({index:Z.current,objective:Y.current,summary:R,status:_,context:V??{memory:{},variables:{},pointer:""},run_dir:Le,run_dirs:Ve,flow_objectives:Ce},B.lastRunEnd?.total_runs)}},[B.lastRunEnd,n,re]);let ut=(0,U.useRef)(null);(0,U.useEffect)(()=>{B.askingUser&&B.askingUser!==ut.current&&(ut.current=B.askingUser,de((0,H.jsxs)(v,{children:[(0,H.jsx)(u,{color:"#ff9500",children:"? "}),(0,H.jsx)(u,{color:"#ff9500",children:"Agent asks: "}),(0,H.jsx)(u,{children:B.askingUser})]}))),B.askingUser||(ut.current=null)},[B.askingUser,de]);let kt=(0,U.useRef)(null);(0,U.useEffect)(()=>{if(L&&!B.isRunning&&B.lastRunEnd){let _=`${B.lastRunEnd.status}-${B.lastRunEnd.summary?.slice(0,20)}`;if(kt.current===_)return;kt.current=_,de((0,H.jsx)(io,{data:L,color:L.status==="passed"?"#4ade80":"#ef4444"})),M(null)}},[L,B.isRunning,B.lastRunEnd,de]),(0,U.useEffect)(()=>{if(B.runError&&!B.isRunning){let _=B.runError.trim();n.log(`RUNNER_ERROR ${_.replace(/\n/g,"\\n")}`);let R=_.split(`
42
42
  `).slice(-8).join(`
43
43
  `);re({type:"error",text:`Runner error:
44
- ${R}`})}},[B.runError,B.isRunning,re,n]);let Rt=(0,U.useCallback)(async()=>{n.log("EXIT_UPLOAD starting exit upload pipeline"),k(Zn()),X({status:"uploading"});let _=ce(E),T=$.getResolvedBasicAuth(),R;if(T)n.log("EXIT_UPLOAD using resolved basic auth for controller"),R={username:T.username,accessKey:T.access_key};else{let Ce=await $.getToken();if(!Ce)return n.log("EXIT_UPLOAD aborted: no auth available"),null;R=Ce}let O=y??await me();if(!O)return n.log("EXIT_UPLOAD aborted: no TMS credentials"),n.setUploadStatus("failed","Could not get TMS credentials"),null;let V=n.generateCommitId();n.log(`EXIT_UPLOAD config: testId=${n.testId} commitId=${V} projectId=${K.project_id} sessionDir=${n.sessionDir} runDirs=${JSON.stringify(n.getRunDirs())}`);let z=T?.username??O.username,se=T?.access_key??O.access_key,Ue=n.getContext().prior_runs,Se=n.getRunObjectives(),Pe=[];for(let[Ce]of Object.entries(n.auteurVariables))if(Ce.startsWith("secrets.user.")){let xe=Ce.replace("secrets.user.","");Pe.push({key_name:xe,scope:"user"})}N.current&&(n.log("SCREENSHOT_UPLOAD draining queue before pipeline"),await N.current.drain(),n.log("SCREENSHOT_UPLOAD queue drained"));let Ve=await new es({controllerBaseUrl:_.controllerBaseUrl,tmsBaseUrl:_.tmsBaseUrl,auth:R,authResolver:$.getResolver()??void 0,sessionId:n.sessionId,sessionDir:n.sessionDir,testId:n.testId,commitId:V,projectId:K.project_id,folderId:K.folder_id,firstObjective:n.firstObjective??"KaneAI Test",firstUrl:n.firstUrl??"",runDirs:n.getRunDirs(),runObjectives:Se,startedAt:n.startedAt,endedAt:new Date().toISOString(),totalSteps:ge.current,totalDuration:pe.current,runStatuses:Ue.map(Ce=>Ce.status),orgId:O.org_id,userId:O.user_id,tmsUsername:z,tmsAccessKey:se,screenshotBaseUrl:n.screenshotBaseUrl,shareApiBaseUrl:_.shareApiBaseUrl,testManagerUiUrl:_.testManagerUiUrl,variables:Object.keys(n.auteurVariables).length>0?n.auteurVariables:void 0,variableIds:{},secrets:Pe,codeExport:e,onProgress:(Ce,xe,lt)=>{n.log(`EXIT_PROGRESS step=${Ce} status=${xe}${lt?` detail=${lt}`:""}`),k(gt=>ts(gt,Ce,xe,lt))},log:Ce=>n.log(Ce)}).execute();return Ve.success?(n.log(`EXIT_UPLOAD success: testId=${Ve.testId} testcaseId=${Ve.testcaseId??"none"} shareId=${Ve.shareId??"none"}`),n.setUploadStatus("uploaded"),Ve.testId&&n.setTestId(Ve.testId),Ve.testcaseId&&n.setTestcaseId(Ve.testcaseId)):(n.log(`EXIT_UPLOAD failed: ${Ve.error}`),n.setUploadStatus("failed",Ve.error)),Ve},[$,E,n,K,y,me]),At=(0,U.useCallback)(()=>{n.finish("complete"),un(),Be.killChrome(),setTimeout(()=>r(),1500)},[n,Be,r]),rt=(0,U.useCallback)(async _=>{if(j(!1),_&&n.testId){n.log(`EXIT feedback=${_}, submitting...`);try{let T=ce(E),R=$.getResolvedBasicAuth();R&&(await new It(T.tmsBaseUrl,R.username,R.access_key).submitFeedback({instruction_id:"",test_id:n.testId,feedback_type:_,mode:"human"}),n.log("EXIT feedback submitted"))}catch(T){n.log(`EXIT feedback failed: ${T}`)}}else n.log("EXIT feedback skipped");At()},[E,$,n,At]),mt=(0,U.useCallback)(()=>{if(Q)return;let _=n.nextRunIndex()>0;if(n.log(`EXIT hasRuns=${_} localMode=${i}`),!_||i){n.log(`EXIT quick exit \u2014 ${_?"local mode":"no runs"}`),n.finish("complete"),un(),Be.killChrome(),r();return}n.log("EXIT starting upload pipeline..."),te(!0),Rt().then(T=>{let R=ce(E),O=K.project_id;if(T?.testcaseId&&O){let V=`${R.testManagerUiUrl}/projects/${O}/test-cases/${T.testcaseId}`,z=T.shareId?`${V}/dashboard/share/${T.shareId}`:void 0,se=`${V}/dashboard?type=summary&agentView=true&fqdn=summary-page`;X({status:"success",testUrl:z,testCaseLink:se,codeExportDir:T.codeExportDir}),Zs({shareableLink:z,testCaseLink:se,codeExportDir:T.codeExportDir})}else X({status:T?.success?"success":"failed",error:T?.error});j(!0)}).catch(T=>{n.log(`EXIT_UPLOAD exception: ${T}`),n.setUploadStatus("failed",String(T)),X({status:"failed",error:String(T)}),j(!0)})},[Q,n,Be,r,i,Rt,E,K]);(0,U.useEffect)(()=>{if(!Q)return;let _=300*1e3,T=setTimeout(()=>{n.setUploadStatus("failed","Upload timed out after 5m"),n.finish("complete"),un(),Be.killChrome(),process.exit(0)},_);return()=>clearTimeout(T)},[Q,n,Be]);let Mt=U.default.useRef(0),Oe=U.default.useRef(null),be=U.default.useRef(0);Ze((_,T)=>{if(T.ctrl&&_==="c"){if(Q){be.current+=1,be.current>=2&&(n.setUploadStatus("pending","Force exit by user"),n.finish("complete"),un(),Be.killChrome(),process.exit(0));return}if(B.isRunning){B.cancelRun(),re({type:"info",text:"Run cancelled."}),Mt.current++,Oe.current&&clearTimeout(Oe.current),Oe.current=setTimeout(()=>{Mt.current=0},2e3),Mt.current>=2&&mt();return}if(Vt==="chat"){St("menu");return}mt()}});let st=U.default.useMemo(()=>{let _=$.creds.getActiveProfile()??"none",T=$.creds.getDefaultEnv();return[{id:"run",label:"Run",type:"submenu",children:[{id:"run-start",label:"Start Run",type:"action"},{id:"run-config",label:"Run Config",type:"submenu",children:[{id:"run-headless",label:"Headless",type:"select",currentValue:fe.headless?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:R=>{nt(O=>({...O,headless:R==="on"}))}},{id:"run-max-steps",label:"Max Steps",type:"text-input",currentValue:String(fe.maxSteps),onValue:R=>{let O=parseInt(R,10);O>0&&nt(V=>({...V,maxSteps:O}))}},{id:"run-timeout",label:"Timeout (sec)",type:"text-input",currentValue:fe.timeout?String(fe.timeout):"",placeholder:"0 = no timeout",onValue:R=>{let O=parseInt(R,10);nt(V=>({...V,timeout:isNaN(O)?0:O}))}},{id:"run-cdp",label:"CDP Endpoint",type:"text-input",currentValue:fe.cdpEndpoint,placeholder:"http://127.0.0.1:9222",onValue:R=>{nt(O=>({...O,cdpEndpoint:R}))}},{id:"run-ws",label:"WS Endpoint",type:"text-input",currentValue:fe.wsEndpoint,placeholder:"wss://...",onValue:R=>{nt(O=>({...O,wsEndpoint:R}))}}]}]},{id:"auth",label:"Auth",type:"submenu",children:[{id:"login",label:"Login",type:"action",onLoginWizard:()=>{}},{id:"logout",label:"Logout",type:"action",onAction:()=>{$.logout().then(R=>{Et();let O=$.creds.getActiveProfile(),V=$.creds.getDefaultEnv();ie(O,V),ne().catch(()=>{}),re(R?{type:"info",text:`Logged out: ${R.profile} [${R.env}]`}:{type:"info",text:"No active profile"})}).catch(()=>{re({type:"error",text:"Logout failed"})})}},{id:"whoami",label:"Who Am I",type:"action",onInfo:()=>{let R=$.creds.getActiveProfile()??"none",O=$.creds.getDefaultEnv(),V=$.creds.loadBasicAuth(R,O),z=V?"basic":$.creds.loadCredentials(R,O)?"oauth":"not configured";return{title:"Who Am I",sections:[{label:"Identity",entries:[{key:"Profile",value:R},{key:"Environment",value:O}]},{label:"Authentication",entries:[{key:"Method",value:z},...V?[{key:"Username",value:V.username}]:[]]},{label:"Token",entries:[{key:"Status",value:$.tokenValid?"valid":"not logged in",color:$.tokenValid?m.statusPass:m.statusFail}]}]}}},{id:"profiles",label:"Profiles",type:"action",onProfilesView:()=>{}}]},{id:"config",label:"Config",type:"submenu",children:[{id:"config-show",label:"Show",type:"action",onInfo:()=>({title:"Show Config",sections:[{label:"General",entries:[{key:"Model",value:"v16-alpha"}]},{label:"Browser",entries:[{key:"Window",value:`${K.window_size.width}x${K.window_size.height}`},{key:"Chrome Profile",value:K.chrome_profile_path?K.chrome_profile_path.split("/").pop()??K.chrome_profile_path:"(temporary)"}]},{label:"Project",entries:[{key:"Project",value:K.project_name?`${K.project_name} (${K.project_id})`:K.project_id??"(none)"},{key:"Folder",value:K.folder_name?`${K.folder_name} (${K.folder_id})`:K.folder_id??"(none)"},{key:"Default URL",value:K.default_url??"(none)"}]}]})},{id:"config-chrome",label:"Chrome Profile",type:"action",onChromeProfilePicker:()=>{}},{id:"config-project",label:"Project",type:"action",onProjectPicker:()=>{}},{id:"config-folder",label:"Folder",type:"action",...K.project_id?{onFolderPicker:()=>{}}:{onInfo:()=>({title:"Folder",sections:[{entries:[{key:"Status",value:"Select a project first",color:m.dim}]}]})}},{id:"config-url",label:"Default URL",type:"text-input",currentValue:K.default_url??"",onValue:R=>{s.set("default_url",R)}},{id:"config-window",label:"Window Size",type:"text-input",currentValue:`${K.window_size.width}x${K.window_size.height}`,placeholder:"WIDTHxHEIGHT",onValue:R=>{let O=R.split("x").map(Number);O[0]&&O[1]&&s.set("window_size",{width:O[0],height:O[1]})}}]},{id:"help",label:"Help",type:"submenu",children:[{id:"help-paths",label:"File Paths",type:"action",onInfo:()=>({title:"File Paths",sections:[{label:"Variables",entries:[{key:"Global dir",value:`${De(_e,"variables")}/*.json`},{key:"Local dir",value:"{cwd}/.testmuai/variables/*.json"},{key:"Format",value:'{ "key": { "value": "...", "secret": false } }'},{key:"Usage",value:"{{key}} in objectives"}]},{label:"Context Files",entries:[{key:"Global",value:De(_e,"global-memory.md")},{key:"Local",value:"{cwd}/.testmuai/context.md"}]},{label:"Config",entries:[{key:"TUI config",value:De(_e,"tui-config.json")},{key:"Auth",value:De(_e,"config.json")},{key:"Sessions",value:`${De(_e,"sessions")}/`}]}]})},{id:"help-variables",label:"Variables",type:"action",onInfo:()=>({title:"Variables",sections:[{label:"Loading Order (later wins)",entries:[{key:"1. Global",value:`${De(_e,"variables")}/*.json`},{key:"2. Local",value:"{cwd}/.testmuai/variables/*.json"},{key:"3. CLI",value:"--variables-file <path>"},{key:"4. Inline",value:`--variables '{"key": {"value": "..."}}"`}]},{label:"Format",entries:[{key:"Normal",value:'{ "username": { "value": "alice", "secret": false } }'},{key:"Secret",value:'{ "api_key": { "value": "sk-...", "secret": true } }'}]},{label:"Usage",entries:[{key:"Syntax",value:"{{key}} in objectives to reference variables"}]}]})},{id:"help-context",label:"Context Files",type:"action",onInfo:()=>({title:"Context Files",sections:[{entries:[{key:"Description",value:"Additional instructions for the agent"}]},{label:"Paths",entries:[{key:"Global",value:De(_e,"global-memory.md")},{key:"Local",value:"{cwd}/.testmuai/context.md"}]},{label:"CLI Overrides",entries:[{key:"Global",value:"--global-context <file>"},{key:"Local",value:"--local-context <file>"}]}]})}]},{id:"update",label:d?`Update (${d.current} \u2192 ${d.latest})`:"Update",type:"action",onAction:()=>{x||(S(!0),re({type:"info",text:"Checking for updates..."}),(async()=>{let{checkForUpdate:R}=await import("./version-check-ESZ4FUKM.js"),O=await R();if(!O){re({type:"info",text:`Already on latest version (${Pt})`}),S(!1);return}re({type:"info",text:`Update available: ${O.current} \u2192 ${O.latest}. Installing...`});let{runSelfUpdate:V}=await import("./updater-ZEKNEF2N.js"),z=await V();z.success?re({type:"info",text:`\u2713 Updated to ${z.toVersion}. Restart kane-cli to use the new version.`}):re({type:"error",text:`Update failed: ${z.error}`}),S(!1)})())}},{id:"exit",label:"Exit",type:"action",onAction:()=>{mt()}}]},[$,s,K,re,mt,fe,Et,d,x]),pt=(0,U.useCallback)(_=>{if(B.askingUser){de((0,H.jsxs)(v,{children:[(0,H.jsx)(u,{color:"#888888",children:"\u2192 "}),(0,H.jsx)(u,{color:"#888888",children:"You answered: "}),(0,H.jsx)(u,{children:_})]})),B.sendAnswer(_);return}if(n.logCommand(_),B.isRunning){re({type:"error",text:"Run in progress. Ctrl+C to cancel."});return}de((0,H.jsxs)(v,{children:[(0,H.jsx)(u,{color:"#b388ff",children:"\u276F "}),(0,H.jsx)(u,{children:_})]}));let T=p??K.default_url;le(_,T||void 0)},[B,re,de,n,p,K,le]),_n="KaneAI CLI",ot=$.getAuthInfo(),ht=ot?ot.method==="basic"?"basic auth":"oauth":"not logged in";return zt?(0,H.jsxs)(v,{flexDirection:"column",children:[oe.length>0&&(0,H.jsx)(Xt,{items:oe,children:_=>(0,H.jsx)(v,{paddingX:1,children:_.content},_.id)}),!l&&(0,H.jsx)(ps,{onComplete:()=>{let _=$.creds.getActiveProfile(),T=$.creds.getDefaultEnv(),R=_?$.creds.loadCredentials(_,T):null,O=_?$.creds.loadBasicAuth(_,T):null,V=!!(R||O),z=O?.username??_??null;de((0,H.jsx)(An,{size:"full",helmetVisibleRows:8,textVisibleRows:7,showMeta:!0,version:Pt,authenticated:V,user:z})),c(!0),t&&t.then(se=>{se&&(h(se),re({type:"info",text:`Update available: ${se.current} \u2192 ${se.latest} \u2014 select Update from menu or run \`kane-cli update\``}))}).catch(()=>{})}}),l&&Vt==="menu"&&!Q&&(0,H.jsx)(v,{marginBottom:1,children:(0,H.jsxs)(v,{borderStyle:"round",borderColor:"#dc4e08",paddingX:2,children:[(0,H.jsx)(u,{color:"#ff9500",bold:!0,children:"KaneAI CLI"}),(0,H.jsx)(u,{color:m.dimmed,children:" \u2502 "}),(0,H.jsx)(u,{color:"#ff9500",children:K.model}),(0,H.jsx)(u,{color:m.dimmed,children:" \u2502 "}),(0,H.jsx)(u,{color:m.dimmed,children:ht}),(0,H.jsx)(u,{color:m.dimmed,children:" \u2502 "}),(0,H.jsxs)(u,{color:m.dimmed,children:[Lt??"no profile","/",E]})]})}),l&&!Q&&(0,H.jsxs)(v,{flexDirection:"column",flexGrow:1,children:[Vt==="menu"&&(0,H.jsx)(H.Fragment,{children:(0,H.jsx)(Ks,{items:st,onRunSelected:()=>St("chat"),renderLoginWizard:_=>{let T=ve?.phase??"wizard";if(T==="project")return(0,H.jsx)(Yn,{resolver:$.getResolver(),currentProjectId:null,env:ve.env,onSelect:(R,O)=>{$.creds.saveProfileConfig(ve.profile,ve.env,{project_id:R,project_name:O}),at(V=>V?{...V,phase:"folder"}:null)},onCancel:()=>{ie(ve.profile,ve.env),at(null),_()}});if(T==="folder"){let R=$.creds.loadProfileConfig(ve.profile,ve.env);return(0,H.jsx)(Qn,{resolver:$.getResolver(),projectId:R?.project_id??"",currentFolderId:null,env:ve.env,onSelect:(O,V)=>{$.creds.saveProfileConfig(ve.profile,ve.env,{folder_id:O,folder_name:V}),ie(ve.profile,ve.env),at(null),_()},onCancel:async()=>{let O=$.creds.loadProfileConfig(ve.profile,ve.env);if(O?.project_id)try{let z=$.getResolver()?.cached;if(z){let se=ce(ve.env),Se=await new It(se.tmsBaseUrl,z.username,z.access_key).getDefaultFolder(O.project_id);Se&&$.creds.saveProfileConfig(ve.profile,ve.env,{folder_id:Se,folder_name:"Default"})}}catch{}ie(ve.profile,ve.env),at(null),_()}})}return(0,H.jsx)(Xr,{devMode:process.env.KANE_DEV_MODE==="1",profiles:$.creds.listProfiles(),onBasicLogin:(R,O,V,z)=>{$.creds.saveBasicAuth(R,O,{username:V,access_key:z}),$.creds.setActiveProfile(R),$.creds.setDefaultEnv(O),$.setTokenValid(!0),Et()},onOAuthLogin:async(R,O)=>{$.creds.setDefaultEnv(O),await $.login(R),Et()},onComplete:(R,O)=>{ne(O).then(()=>{at({phase:"project",profile:R,env:O})}).catch(()=>{at({phase:"project",profile:R,env:O})})},onCancel:()=>{at(null),_()}})},renderProfilesView:_=>(0,H.jsx)(Yr,{creds:$.creds,onSwitch:(T,R)=>{$.creds.setActiveProfile(T),$.creds.setDefaultEnv(R),ie(T,R),Et(),ne(R).catch(()=>{}),re({type:"info",text:`Switched to ${T} [${R}]`})},onCancel:_}),renderChromeProfilePicker:_=>(0,H.jsx)(Qr,{currentPath:K.chrome_profile_path,onSelect:T=>{s.set("chrome_profile_path",T),Ct(s.load())},onCancel:_}),renderProjectPicker:_=>(0,H.jsx)(Yn,{resolver:$.getResolver(),currentProjectId:K.project_id,env:E,onSelect:(T,R)=>{s.save({project_id:T,project_name:R});let O=$.creds.getActiveProfile(),V=$.creds.getDefaultEnv();O&&$.creds.saveProfileConfig(O,V,{project_id:T,project_name:R}),Ct(s.load()),_()},onCancel:_}),renderFolderPicker:_=>(0,H.jsx)(Qn,{resolver:$.getResolver(),projectId:K.project_id??"",currentFolderId:K.folder_id,env:E,onSelect:(T,R)=>{s.save({folder_id:T,folder_name:R});let O=$.creds.getActiveProfile(),V=$.creds.getDefaultEnv();O&&$.creds.saveProfileConfig(O,V,{folder_id:T,folder_name:R}),Ct(s.load()),_()},onCancel:_})})}),Vt==="chat"&&(0,H.jsxs)(H.Fragment,{children:[B.isRunning&&B.steps.length>0&&(0,H.jsx)(Pn,{steps:B.steps,bifurcated:!!B.bifurcationInfo&&!B.bifurcationInfo.isSingleFlow,flows:B.bifurcationInfo?.flows,cmInitCounts:B.cmInitCounts,onStepCommit:de},`run-${Z.current}`),(0,H.jsx)(xs,{onSubmit:pt,onEscape:()=>{!B.isRunning&&!B.askingUser&&St("menu")},history:q,placeholder:B.askingUser?"Type your answer...":B.isRunning?"Run in progress... Ctrl+C to cancel":"Type an objective... (esc = menu)"})]})]}),l&&Q&&A&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(ns,{steps:f,status:A.status,testUrl:A.testUrl,error:A.error}),A.status==="success"&&(0,H.jsx)(rs,{shareableLink:A.testUrl,testCaseLink:A.testCaseLink,codeExportDir:A.codeExportDir,autoExit:!1})]}),P&&(0,H.jsx)(ss,{onSubmit:rt}),l&&!Q&&(0,H.jsx)(os,{profile:Lt,environment:E,model:K.model,tokenValid:$.tokenValid,sessionId:n.sessionId,runCount:F,viewMode:Vt})]}):(0,H.jsx)(Ns,{onComplete:()=>{Ct(s.load()),sn(!0)}})}var So=G(yo(),1),{program:uf,createCommand:df,createArgument:ff,createOption:mf,CommanderError:pf,InvalidArgumentError:hf,InvalidOptionArgumentError:gf,Command:Co,Argument:xf,Option:Hn,Help:vf}=So.default;import{join as Qe}from"path";import{readFileSync as ko,readdirSync as Ra,existsSync as vn}from"fs";var Ro=G(We(),1);import{createInterface as ka}from"readline";function rn(i){process.stdout.write(JSON.stringify(i)+`
45
- `)}async function Eo(i,e,t){let r=Un(i,e);kn().then(h=>{h&&rn({type:"update_available",current:h.current,latest:h.latest,severity:h.severity})}).catch(()=>{});let n=ka({input:process.stdin});n.on("line",h=>{try{let x=JSON.parse(h);x.type==="user_response"?r.sendUserResponse(x.answer??""):x.type==="cancel"&&r.sendCancel(x.reason??"")}catch{}});let s=null,a=!1,o=0,l=null,c=0,d=!1;for await(let h of r.events)switch(h.type){case"run_start":d&&c++;break;case"step_start":{let x=h,S={step:x.index+1,status:"running",remark:x.objective??`Step ${x.index+1}`};x.child_id&&(S.child_id=x.child_id),rn(S);break}case"step_end":{let x=h;o++;let S={step:x.index+1,status:x.status==="passed"?"done":"failed",remark:x.summary??""};x.child_id&&(S.child_id=x.child_id),rn(S);let p=d?Math.max(0,c-1):0;t?.onStepEnd?.(x.index,p);break}case"bifurcation":{let x=h,S=x.flows??[],p=x.count??S.length;(x.is_single_flow??p<=1)||(l=S,d=!0,c=0),rn({type:"bifurcation",flows:S,count:p});break}case"ask_user":{let x=h;rn({type:"ask_user",question:x.question,step_index:x.step_index,...x.options?{options:x.options}:{}});break}case"run_end":{s=h;break}case"error":{a=!0,rn({type:"error",message:h.message});break}default:break}return n.close(),await r.exited,{lastRunEnd:s,stepsTotal:o,hadError:a,bifurcationFlows:l}}function Ao(i){let e=new Co;if(e.name("kane-cli").version(Pt),i[0]==="--help"||i[0]==="-h"||i[0]==="help"){(async()=>{let{HelpView:r}=await import("./HelpView-IBMGS7HU.js"),{render:n}=await import("./build-MFETN2BY.js"),s=await import("./react-QWOAB3TB.js"),{waitUntilExit:a}=n(s.default.createElement(r));await a(),process.exit(0)})();return}e.command("login").action(async()=>{let r=new Ee,{LoginWizard:n}=await import("./LoginWizard-I2ECCV5L.js"),{render:s}=await import("./build-MFETN2BY.js"),a=await import("./react-QWOAB3TB.js");await new Promise(o=>{let{unmount:l}=s(a.default.createElement(n,{devMode:process.env.KANE_DEV_MODE==="1",profiles:r.listProfiles(),onBasicLogin:(c,d,h,x)=>{r.saveBasicAuth(c,d,{username:h,access_key:x}),r.setActiveProfile(c),r.setDefaultEnv(d),l(),o()},onOAuthLogin:async(c,d)=>{r.setDefaultEnv(d),await new bt(c,d,r).login(),l(),o()},onCancel:()=>{l(),o()}}))})}),e.command("logout").action(async()=>{let r=new Ee,n=r.getActiveProfile();if(!n){console.log("No active profile to logout");return}let s=r.getDefaultEnv(),a=r.loadCredentials(n,s),o=r.loadClient(n,s);if(a&&o){let c=new Ge(s);try{await c.revokeToken(a.access_token,o.client_id,"access_token")}catch{}try{await c.revokeToken(a.refresh_token,o.client_id,"refresh_token")}catch{}}r.deleteProfileFull(n,s);let l=r.listProfiles();l.length>0?(r.setActiveProfile(l[0].profile),r.setDefaultEnv(l[0].env),console.log(`Logged out ${n} [${s}]. Switched to ${l[0].profile} [${l[0].env}]`)):console.log(`Logged out ${n} [${s}]. No profiles remaining.`)}),e.command("whoami").option("--profile <name>","Profile name").action(async r=>{let n=new Ee,s=r.profile??n.getActiveProfile()??"default",a=n.getDefaultEnv(),o=n.loadCredentials(s,a),l=n.loadBasicAuth(s,a),c="none",d,h,x;if(l)c="basic",d=l.username;else if(o){c="oauth";let w=o.expires_at,F=Date.now()/1e3;h=w>F?"valid":"expired",x=new Date(w*1e3).toISOString().slice(0,10)}else h="missing";let{WhoamiView:S}=await import("./WhoamiView-5KBE3JYU.js"),{render:p}=await import("./build-MFETN2BY.js"),b=await import("./react-QWOAB3TB.js"),{waitUntilExit:g}=p(b.default.createElement(S,{profile:s,env:a,authenticated:c!=="none",authMethod:c,username:d,tokenStatus:h,expiresAt:x}));await g()}),e.command("config <action> [value]").action(async(r,n)=>{let s=new et,a=new Ee;if(r==="show"){let o=s.load(),l=a.getActiveProfile()??"default",c=a.getDefaultEnv(),d=a.loadBasicAuth(l,c),h=a.loadCredentials(l,c),x=d?`basic (${d.username})`:h?"oauth":"not configured",{ConfigView:S}=await import("./ConfigView-MSV2SCM5.js"),{render:p}=await import("./build-MFETN2BY.js"),b=await import("./react-QWOAB3TB.js"),{waitUntilExit:g}=p(b.default.createElement(S,{model:o.model,authLabel:x,profile:l,env:c,defaultUrl:o.default_url,projectId:o.project_id,projectName:o.project_name,folderId:o.folder_id,windowSize:`${o.window_size.width}x${o.window_size.height}`,chromeProfile:o.chrome_profile_path,setupComplete:o.setup_complete}));await g()}else if(r==="set-url"&&n)s.set("default_url",n),console.log(`Default URL set to ${n}`);else if(r==="set-window"&&n){let o=n.split("x").map(Number);o[0]&&o[1]&&(s.set("window_size",{width:o[0],height:o[1]}),console.log(`Window size set to ${o[0]}x${o[1]}`))}else if(r==="chrome-profile"){let{ChromeProfilePicker:o}=await import("./ChromeProfilePicker-3WP7WWKE.js"),{render:l}=await import("./build-MFETN2BY.js"),c=await import("./react-QWOAB3TB.js");await new Promise(d=>{let{unmount:h}=l(c.default.createElement(o,{currentPath:s.load().chrome_profile_path,onSelect:x=>{s.set("chrome_profile_path",x),console.log(`Chrome profile set to ${x}`),h(),d()},onCancel:()=>{h(),d()}}))})}else if(r==="project"){let o=a.getDefaultEnv(),l=ce(o),c=a.loadBasicAuth(a.getActiveProfile()??"default",o);if(!c){console.log("Login first to browse projects");return}let{ProjectPicker:d}=await import("./ProjectPicker-ZKXRW46M.js"),{AuthResolver:h}=await import("./resolver-L3Z6FAOD.js"),{render:x}=await import("./build-MFETN2BY.js"),S=await import("./react-QWOAB3TB.js"),p=new h(l.controllerBaseUrl,async()=>null,c);await p.resolve(),await new Promise(b=>{let{unmount:g}=x(S.default.createElement(d,{resolver:p,currentProjectId:s.load().project_id,env:o,onSelect:(w,F)=>{s.set("project_id",w),s.set("project_name",F),console.log(`Project set to ${F} (${w})`),g(),b()},onCancel:()=>{g(),b()}}))})}else if(r==="folder"){let o=s.load();if(!o.project_id){console.log("Select a project first: kane-cli config project");return}let l=a.getDefaultEnv(),c=ce(l),d=a.loadBasicAuth(a.getActiveProfile()??"default",l);if(!d){console.log("Login first to browse folders");return}let{FolderPicker:h}=await import("./FolderPicker-QDCBF2RX.js"),{AuthResolver:x}=await import("./resolver-L3Z6FAOD.js"),{render:S}=await import("./build-MFETN2BY.js"),p=await import("./react-QWOAB3TB.js"),b=new x(c.controllerBaseUrl,async()=>null,d);await b.resolve(),await new Promise(g=>{let{unmount:w}=S(p.default.createElement(h,{resolver:b,projectId:o.project_id,currentFolderId:o.folder_id,env:l,onSelect:(F,W)=>{s.set("folder_id",F),s.set("folder_name",W),console.log(`Folder set to ${W} (${F})`),w(),g()},onCancel:()=>{w(),g()}}))})}else console.log("Usage: kane-cli config show|set-url|set-window|chrome-profile|project|folder")}),e.command("run").argument("<objective>","Test objective (use {{var}} to reference variables)").option("--url <url>","Target URL").option("--headless","Run Chrome in headless mode").option("--max-steps <n>","Maximum agent steps","30").option("--timeout <seconds>","Kill run after N seconds").option("--cdp-endpoint <url>","Connect to existing Chrome CDP endpoint").option("--ws-endpoint <url>","Connect via Playwright WebSocket (e.g. LambdaTest wss:// URL)").option("--global-context <file>",`Override global context markdown (default: ${Qe(_e,"global-memory.md")})`).option("--local-context <file>","Override local context markdown (default: .testmuai/context.md in cwd)").addOption(new Hn("--model <name>","Model override").hideHelp()).option("--variables <json>",`Inline variables JSON, e.g. '{"user": {"value": "alice"}}'`).option("--variables-file <path>","Load variables from a JSON file").option("--session-context <json>","Session context JSON (prior runs)").addOption(new Hn("--cft","Use Playwright Chromium instead of managed Chrome").hideHelp()).option("--username <user>","Basic auth username (skip OAuth)").option("--access-key <key>","Basic auth access key (skip OAuth)").option("--env <name>","Environment (prod or stage)").option("--agent","Agent mode: plain NDJSON output, no colors/UI").option("--task-skills","Enable domain-specific task skills (experimental)").addOption(new Hn("--local","Skip TMS integration (no uploads, no variables/secrets push)").hideHelp()).option("--code-export","Generate code export after upload").addHelpText("after",`
44
+ ${R}`})}},[B.runError,B.isRunning,re,n]);let Rt=(0,U.useCallback)(async()=>{n.log("EXIT_UPLOAD starting exit upload pipeline"),k(Zn()),X({status:"uploading"});let _=ce(E),T=$.getResolvedBasicAuth(),R;if(T)n.log("EXIT_UPLOAD using resolved basic auth for controller"),R={username:T.username,accessKey:T.access_key};else{let Ce=await $.getToken();if(!Ce)return n.log("EXIT_UPLOAD aborted: no auth available"),null;R=Ce}let O=y??await me();if(!O)return n.log("EXIT_UPLOAD aborted: no TMS credentials"),n.setUploadStatus("failed","Could not get TMS credentials"),null;let V=n.generateCommitId();n.log(`EXIT_UPLOAD config: testId=${n.testId} commitId=${V} projectId=${K.project_id} sessionDir=${n.sessionDir} runDirs=${JSON.stringify(n.getRunDirs())}`);let z=T?.username??O.username,se=T?.access_key??O.access_key,Ue=n.getContext().prior_runs,Se=n.getRunObjectives(),Pe=[];for(let[Ce]of Object.entries(n.auteurVariables))if(Ce.startsWith("secrets.user.")){let xe=Ce.replace("secrets.user.","");Pe.push({key_name:xe,scope:"user"})}N.current&&(n.log("SCREENSHOT_UPLOAD draining queue before pipeline"),await N.current.drain(),n.log("SCREENSHOT_UPLOAD queue drained"));let Ve=await new es({controllerBaseUrl:_.controllerBaseUrl,tmsBaseUrl:_.tmsBaseUrl,auth:R,authResolver:$.getResolver()??void 0,sessionId:n.sessionId,sessionDir:n.sessionDir,testId:n.testId,commitId:V,projectId:K.project_id,folderId:K.folder_id,firstObjective:n.firstObjective??"KaneAI Test",firstUrl:n.firstUrl??"",runDirs:n.getRunDirs(),runObjectives:Se,startedAt:n.startedAt,endedAt:new Date().toISOString(),totalSteps:ge.current,totalDuration:pe.current,runStatuses:Ue.map(Ce=>Ce.status),orgId:O.org_id,userId:O.user_id,tmsUsername:z,tmsAccessKey:se,screenshotBaseUrl:n.screenshotBaseUrl,shareApiBaseUrl:_.shareApiBaseUrl,testManagerUiUrl:_.testManagerUiUrl,variables:Object.keys(n.auteurVariables).length>0?n.auteurVariables:void 0,variableIds:{},secrets:Pe,codeExport:e,onProgress:(Ce,xe,lt)=>{n.log(`EXIT_PROGRESS step=${Ce} status=${xe}${lt?` detail=${lt}`:""}`),k(gt=>ts(gt,Ce,xe,lt))},log:Ce=>n.log(Ce)}).execute();return Ve.success?(n.log(`EXIT_UPLOAD success: testId=${Ve.testId} testcaseId=${Ve.testcaseId??"none"} shareId=${Ve.shareId??"none"}`),n.setUploadStatus("uploaded"),Ve.testId&&n.setTestId(Ve.testId),Ve.testcaseId&&n.setTestcaseId(Ve.testcaseId)):(n.log(`EXIT_UPLOAD failed: ${Ve.error}`),n.setUploadStatus("failed",Ve.error)),Ve},[$,E,n,K,y,me]),At=(0,U.useCallback)(()=>{n.finish("complete"),un(),Be.killChrome(),setTimeout(()=>r(),1500)},[n,Be,r]),rt=(0,U.useCallback)(async _=>{if(j(!1),_&&n.testId){n.log(`EXIT feedback=${_}, submitting...`);try{let T=ce(E),R=$.getResolvedBasicAuth();R&&(await new It(T.tmsBaseUrl,R.username,R.access_key).submitFeedback({instruction_id:"",test_id:n.testId,feedback_type:_,mode:"human"}),n.log("EXIT feedback submitted"))}catch(T){n.log(`EXIT feedback failed: ${T}`)}}else n.log("EXIT feedback skipped");At()},[E,$,n,At]),mt=(0,U.useCallback)(()=>{if(Q)return;let _=n.nextRunIndex()>0;if(n.log(`EXIT hasRuns=${_} localMode=${i}`),!_||i){n.log(`EXIT quick exit \u2014 ${_?"local mode":"no runs"}`),n.finish("complete"),un(),Be.killChrome(),r();return}n.log("EXIT starting upload pipeline..."),te(!0),Rt().then(T=>{let R=ce(E),O=K.project_id;if(T?.testcaseId&&O){let V=`${R.testManagerUiUrl}/projects/${O}/test-cases/${T.testcaseId}`,z=T.shareId?`${V}/dashboard/share/${T.shareId}`:void 0,se=`${V}/dashboard?type=summary&agentView=true&fqdn=summary-page`;X({status:"success",testUrl:z,testCaseLink:se,codeExportDir:T.codeExportDir}),Zs({shareableLink:z,testCaseLink:se,codeExportDir:T.codeExportDir})}else X({status:T?.success?"success":"failed",error:T?.error});j(!0)}).catch(T=>{n.log(`EXIT_UPLOAD exception: ${T}`),n.setUploadStatus("failed",String(T)),X({status:"failed",error:String(T)}),j(!0)})},[Q,n,Be,r,i,Rt,E,K]);(0,U.useEffect)(()=>{if(!Q)return;let _=300*1e3,T=setTimeout(()=>{n.setUploadStatus("failed","Upload timed out after 5m"),n.finish("complete"),un(),Be.killChrome(),process.exit(0)},_);return()=>clearTimeout(T)},[Q,n,Be]);let Mt=U.default.useRef(0),Oe=U.default.useRef(null),be=U.default.useRef(0);Ze((_,T)=>{if(T.ctrl&&_==="c"){if(Q){be.current+=1,be.current>=2&&(n.setUploadStatus("pending","Force exit by user"),n.finish("complete"),un(),Be.killChrome(),process.exit(0));return}if(B.isRunning){B.cancelRun(),re({type:"info",text:"Run cancelled."}),Mt.current++,Oe.current&&clearTimeout(Oe.current),Oe.current=setTimeout(()=>{Mt.current=0},2e3),Mt.current>=2&&mt();return}if(Vt==="chat"){St("menu");return}mt()}});let st=U.default.useMemo(()=>{let _=$.creds.getActiveProfile()??"none",T=$.creds.getDefaultEnv();return[{id:"run",label:"Run",type:"submenu",children:[{id:"run-start",label:"Start Run",type:"action"},{id:"run-config",label:"Run Config",type:"submenu",children:[{id:"run-headless",label:"Headless",type:"select",currentValue:fe.headless?"on":"off",options:[{label:"off",value:"off"},{label:"on",value:"on"}],onValue:R=>{nt(O=>({...O,headless:R==="on"}))}},{id:"run-max-steps",label:"Max Steps",type:"text-input",currentValue:String(fe.maxSteps),onValue:R=>{let O=parseInt(R,10);O>0&&nt(V=>({...V,maxSteps:O}))}},{id:"run-timeout",label:"Timeout (sec)",type:"text-input",currentValue:fe.timeout?String(fe.timeout):"",placeholder:"0 = no timeout",onValue:R=>{let O=parseInt(R,10);nt(V=>({...V,timeout:isNaN(O)?0:O}))}},{id:"run-cdp",label:"CDP Endpoint",type:"text-input",currentValue:fe.cdpEndpoint,placeholder:"http://127.0.0.1:9222",onValue:R=>{nt(O=>({...O,cdpEndpoint:R}))}},{id:"run-ws",label:"WS Endpoint",type:"text-input",currentValue:fe.wsEndpoint,placeholder:"wss://...",onValue:R=>{nt(O=>({...O,wsEndpoint:R}))}}]}]},{id:"auth",label:"Auth",type:"submenu",children:[{id:"login",label:"Login",type:"action",onLoginWizard:()=>{}},{id:"logout",label:"Logout",type:"action",onAction:()=>{$.logout().then(R=>{Et();let O=$.creds.getActiveProfile(),V=$.creds.getDefaultEnv();ie(O,V),ne().catch(()=>{}),re(R?{type:"info",text:`Logged out: ${R.profile} [${R.env}]`}:{type:"info",text:"No active profile"})}).catch(()=>{re({type:"error",text:"Logout failed"})})}},{id:"whoami",label:"Who Am I",type:"action",onInfo:()=>{let R=$.creds.getActiveProfile()??"none",O=$.creds.getDefaultEnv(),V=$.creds.loadBasicAuth(R,O),z=V?"basic":$.creds.loadCredentials(R,O)?"oauth":"not configured";return{title:"Who Am I",sections:[{label:"Identity",entries:[{key:"Profile",value:R},{key:"Environment",value:O}]},{label:"Authentication",entries:[{key:"Method",value:z},...V?[{key:"Username",value:V.username}]:[]]},{label:"Token",entries:[{key:"Status",value:$.tokenValid?"valid":"not logged in",color:$.tokenValid?m.statusPass:m.statusFail}]}]}}},{id:"profiles",label:"Profiles",type:"action",onProfilesView:()=>{}}]},{id:"config",label:"Config",type:"submenu",children:[{id:"config-show",label:"Show",type:"action",onInfo:()=>({title:"Show Config",sections:[{label:"General",entries:[{key:"Model",value:"v16-alpha"}]},{label:"Browser",entries:[{key:"Window",value:`${K.window_size.width}x${K.window_size.height}`},{key:"Chrome Profile",value:K.chrome_profile_path?K.chrome_profile_path.split("/").pop()??K.chrome_profile_path:"(temporary)"}]},{label:"Project",entries:[{key:"Project",value:K.project_name?`${K.project_name} (${K.project_id})`:K.project_id??"(none)"},{key:"Folder",value:K.folder_name?`${K.folder_name} (${K.folder_id})`:K.folder_id??"(none)"},{key:"Default URL",value:K.default_url??"(none)"}]}]})},{id:"config-chrome",label:"Chrome Profile",type:"action",onChromeProfilePicker:()=>{}},{id:"config-project",label:"Project",type:"action",onProjectPicker:()=>{}},{id:"config-folder",label:"Folder",type:"action",...K.project_id?{onFolderPicker:()=>{}}:{onInfo:()=>({title:"Folder",sections:[{entries:[{key:"Status",value:"Select a project first",color:m.dim}]}]})}},{id:"config-url",label:"Default URL",type:"text-input",currentValue:K.default_url??"",onValue:R=>{s.set("default_url",R)}},{id:"config-window",label:"Window Size",type:"text-input",currentValue:`${K.window_size.width}x${K.window_size.height}`,placeholder:"WIDTHxHEIGHT",onValue:R=>{let O=R.split("x").map(Number);O[0]&&O[1]&&s.set("window_size",{width:O[0],height:O[1]})}}]},{id:"help",label:"Help",type:"submenu",children:[{id:"help-paths",label:"File Paths",type:"action",onInfo:()=>({title:"File Paths",sections:[{label:"Variables",entries:[{key:"Global dir",value:`${De(_e,"variables")}/*.json`},{key:"Local dir",value:"{cwd}/.testmuai/variables/*.json"},{key:"Format",value:'{ "key": { "value": "...", "secret": false } }'},{key:"Usage",value:"{{key}} in objectives"}]},{label:"Context Files",entries:[{key:"Global",value:De(_e,"global-memory.md")},{key:"Local",value:"{cwd}/.testmuai/context.md"}]},{label:"Config",entries:[{key:"TUI config",value:De(_e,"tui-config.json")},{key:"Auth",value:De(_e,"config.json")},{key:"Sessions",value:`${De(_e,"sessions")}/`}]}]})},{id:"help-variables",label:"Variables",type:"action",onInfo:()=>({title:"Variables",sections:[{label:"Loading Order (later wins)",entries:[{key:"1. Global",value:`${De(_e,"variables")}/*.json`},{key:"2. Local",value:"{cwd}/.testmuai/variables/*.json"},{key:"3. CLI",value:"--variables-file <path>"},{key:"4. Inline",value:`--variables '{"key": {"value": "..."}}"`}]},{label:"Format",entries:[{key:"Normal",value:'{ "username": { "value": "alice", "secret": false } }'},{key:"Secret",value:'{ "api_key": { "value": "sk-...", "secret": true } }'}]},{label:"Usage",entries:[{key:"Syntax",value:"{{key}} in objectives to reference variables"}]}]})},{id:"help-context",label:"Context Files",type:"action",onInfo:()=>({title:"Context Files",sections:[{entries:[{key:"Description",value:"Additional instructions for the agent"}]},{label:"Paths",entries:[{key:"Global",value:De(_e,"global-memory.md")},{key:"Local",value:"{cwd}/.testmuai/context.md"}]},{label:"CLI Overrides",entries:[{key:"Global",value:"--global-context <file>"},{key:"Local",value:"--local-context <file>"}]}]})}]},{id:"update",label:d?`Update (${d.current} \u2192 ${d.latest})`:"Update",type:"action",onAction:()=>{x||(S(!0),re({type:"info",text:"Checking for updates..."}),(async()=>{let{checkForUpdate:R}=await import("./version-check-GHGJIUN6.js"),O=await R();if(!O){re({type:"info",text:`Already on latest version (${Pt})`}),S(!1);return}re({type:"info",text:`Update available: ${O.current} \u2192 ${O.latest}. Installing...`});let{runSelfUpdate:V}=await import("./updater-SIJ34O2X.js"),z=await V();z.success?re({type:"info",text:`\u2713 Updated to ${z.toVersion}. Restart kane-cli to use the new version.`}):re({type:"error",text:`Update failed: ${z.error}`}),S(!1)})())}},{id:"exit",label:"Exit",type:"action",onAction:()=>{mt()}}]},[$,s,K,re,mt,fe,Et,d,x]),pt=(0,U.useCallback)(_=>{if(B.askingUser){de((0,H.jsxs)(v,{children:[(0,H.jsx)(u,{color:"#888888",children:"\u2192 "}),(0,H.jsx)(u,{color:"#888888",children:"You answered: "}),(0,H.jsx)(u,{children:_})]})),B.sendAnswer(_);return}if(n.logCommand(_),B.isRunning){re({type:"error",text:"Run in progress. Ctrl+C to cancel."});return}de((0,H.jsxs)(v,{children:[(0,H.jsx)(u,{color:"#b388ff",children:"\u276F "}),(0,H.jsx)(u,{children:_})]}));let T=p??K.default_url;le(_,T||void 0)},[B,re,de,n,p,K,le]),_n="KaneAI CLI",ot=$.getAuthInfo(),ht=ot?ot.method==="basic"?"basic auth":"oauth":"not logged in";return zt?(0,H.jsxs)(v,{flexDirection:"column",children:[oe.length>0&&(0,H.jsx)(Xt,{items:oe,children:_=>(0,H.jsx)(v,{paddingX:1,children:_.content},_.id)}),!l&&(0,H.jsx)(ps,{onComplete:()=>{let _=$.creds.getActiveProfile(),T=$.creds.getDefaultEnv(),R=_?$.creds.loadCredentials(_,T):null,O=_?$.creds.loadBasicAuth(_,T):null,V=!!(R||O),z=O?.username??_??null;de((0,H.jsx)(An,{size:"full",helmetVisibleRows:8,textVisibleRows:7,showMeta:!0,version:Pt,authenticated:V,user:z})),c(!0),t&&t.then(se=>{se&&(h(se),re({type:"info",text:`Update available: ${se.current} \u2192 ${se.latest} \u2014 select Update from menu or run \`kane-cli update\``}))}).catch(()=>{})}}),l&&Vt==="menu"&&!Q&&(0,H.jsx)(v,{marginBottom:1,children:(0,H.jsxs)(v,{borderStyle:"round",borderColor:"#dc4e08",paddingX:2,children:[(0,H.jsx)(u,{color:"#ff9500",bold:!0,children:"KaneAI CLI"}),(0,H.jsx)(u,{color:m.dimmed,children:" \u2502 "}),(0,H.jsx)(u,{color:"#ff9500",children:K.model}),(0,H.jsx)(u,{color:m.dimmed,children:" \u2502 "}),(0,H.jsx)(u,{color:m.dimmed,children:ht}),(0,H.jsx)(u,{color:m.dimmed,children:" \u2502 "}),(0,H.jsxs)(u,{color:m.dimmed,children:[Lt??"no profile","/",E]})]})}),l&&!Q&&(0,H.jsxs)(v,{flexDirection:"column",flexGrow:1,children:[Vt==="menu"&&(0,H.jsx)(H.Fragment,{children:(0,H.jsx)(Ks,{items:st,onRunSelected:()=>St("chat"),renderLoginWizard:_=>{let T=ve?.phase??"wizard";if(T==="project")return(0,H.jsx)(Yn,{resolver:$.getResolver(),currentProjectId:null,env:ve.env,onSelect:(R,O)=>{$.creds.saveProfileConfig(ve.profile,ve.env,{project_id:R,project_name:O}),at(V=>V?{...V,phase:"folder"}:null)},onCancel:()=>{ie(ve.profile,ve.env),at(null),_()}});if(T==="folder"){let R=$.creds.loadProfileConfig(ve.profile,ve.env);return(0,H.jsx)(Qn,{resolver:$.getResolver(),projectId:R?.project_id??"",currentFolderId:null,env:ve.env,onSelect:(O,V)=>{$.creds.saveProfileConfig(ve.profile,ve.env,{folder_id:O,folder_name:V}),ie(ve.profile,ve.env),at(null),_()},onCancel:async()=>{let O=$.creds.loadProfileConfig(ve.profile,ve.env);if(O?.project_id)try{let z=$.getResolver()?.cached;if(z){let se=ce(ve.env),Se=await new It(se.tmsBaseUrl,z.username,z.access_key).getDefaultFolder(O.project_id);Se&&$.creds.saveProfileConfig(ve.profile,ve.env,{folder_id:Se,folder_name:"Default"})}}catch{}ie(ve.profile,ve.env),at(null),_()}})}return(0,H.jsx)(Xr,{devMode:process.env.KANE_DEV_MODE==="1",profiles:$.creds.listProfiles(),onBasicLogin:(R,O,V,z)=>{$.creds.saveBasicAuth(R,O,{username:V,access_key:z}),$.creds.setActiveProfile(R),$.creds.setDefaultEnv(O),$.setTokenValid(!0),Et()},onOAuthLogin:async(R,O)=>{$.creds.setDefaultEnv(O),await $.login(R),Et()},onComplete:(R,O)=>{ne(O).then(()=>{at({phase:"project",profile:R,env:O})}).catch(()=>{at({phase:"project",profile:R,env:O})})},onCancel:()=>{at(null),_()}})},renderProfilesView:_=>(0,H.jsx)(Yr,{creds:$.creds,onSwitch:(T,R)=>{$.creds.setActiveProfile(T),$.creds.setDefaultEnv(R),ie(T,R),Et(),ne(R).catch(()=>{}),re({type:"info",text:`Switched to ${T} [${R}]`})},onCancel:_}),renderChromeProfilePicker:_=>(0,H.jsx)(Qr,{currentPath:K.chrome_profile_path,onSelect:T=>{s.set("chrome_profile_path",T),Ct(s.load())},onCancel:_}),renderProjectPicker:_=>(0,H.jsx)(Yn,{resolver:$.getResolver(),currentProjectId:K.project_id,env:E,onSelect:(T,R)=>{s.save({project_id:T,project_name:R});let O=$.creds.getActiveProfile(),V=$.creds.getDefaultEnv();O&&$.creds.saveProfileConfig(O,V,{project_id:T,project_name:R}),Ct(s.load()),_()},onCancel:_}),renderFolderPicker:_=>(0,H.jsx)(Qn,{resolver:$.getResolver(),projectId:K.project_id??"",currentFolderId:K.folder_id,env:E,onSelect:(T,R)=>{s.save({folder_id:T,folder_name:R});let O=$.creds.getActiveProfile(),V=$.creds.getDefaultEnv();O&&$.creds.saveProfileConfig(O,V,{folder_id:T,folder_name:R}),Ct(s.load()),_()},onCancel:_})})}),Vt==="chat"&&(0,H.jsxs)(H.Fragment,{children:[B.isRunning&&B.steps.length>0&&(0,H.jsx)(Pn,{steps:B.steps,bifurcated:!!B.bifurcationInfo&&!B.bifurcationInfo.isSingleFlow,flows:B.bifurcationInfo?.flows,cmInitCounts:B.cmInitCounts,onStepCommit:de},`run-${Z.current}`),(0,H.jsx)(xs,{onSubmit:pt,onEscape:()=>{!B.isRunning&&!B.askingUser&&St("menu")},history:q,placeholder:B.askingUser?"Type your answer...":B.isRunning?"Run in progress... Ctrl+C to cancel":"Type an objective... (esc = menu)"})]})]}),l&&Q&&A&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(ns,{steps:f,status:A.status,testUrl:A.testUrl,error:A.error}),A.status==="success"&&(0,H.jsx)(rs,{shareableLink:A.testUrl,testCaseLink:A.testCaseLink,codeExportDir:A.codeExportDir,autoExit:!1})]}),P&&(0,H.jsx)(ss,{onSubmit:rt}),l&&!Q&&(0,H.jsx)(os,{profile:Lt,environment:E,model:K.model,tokenValid:$.tokenValid,sessionId:n.sessionId,runCount:F,viewMode:Vt})]}):(0,H.jsx)(Ns,{onComplete:()=>{Ct(s.load()),sn(!0)}})}var So=G(yo(),1),{program:uf,createCommand:df,createArgument:ff,createOption:mf,CommanderError:pf,InvalidArgumentError:hf,InvalidOptionArgumentError:gf,Command:Co,Argument:xf,Option:Hn,Help:vf}=So.default;import{join as Qe}from"path";import{readFileSync as ko,readdirSync as Ra,existsSync as vn}from"fs";var Ro=G(We(),1);import{createInterface as ka}from"readline";function rn(i){process.stdout.write(JSON.stringify(i)+`
45
+ `)}async function Eo(i,e,t){let r=Un(i,e);kn().then(h=>{h&&rn({type:"update_available",current:h.current,latest:h.latest,severity:h.severity})}).catch(()=>{});let n=ka({input:process.stdin});n.on("line",h=>{try{let x=JSON.parse(h);x.type==="user_response"?r.sendUserResponse(x.answer??""):x.type==="cancel"&&r.sendCancel(x.reason??"")}catch{}});let s=null,a=!1,o=0,l=null,c=0,d=!1;for await(let h of r.events)switch(h.type){case"run_start":d&&c++;break;case"step_start":{let x=h,S={step:x.index+1,status:"running",remark:x.objective??`Step ${x.index+1}`};x.child_id&&(S.child_id=x.child_id),rn(S);break}case"step_end":{let x=h;o++;let S={step:x.index+1,status:x.status==="passed"?"done":"failed",remark:x.summary??""};x.child_id&&(S.child_id=x.child_id),rn(S);let p=d?Math.max(0,c-1):0;t?.onStepEnd?.(x.index,p);break}case"bifurcation":{let x=h,S=x.flows??[],p=x.count??S.length;(x.is_single_flow??p<=1)||(l=S,d=!0,c=0),rn({type:"bifurcation",flows:S,count:p});break}case"ask_user":{let x=h;rn({type:"ask_user",question:x.question,step_index:x.step_index,...x.options?{options:x.options}:{}});break}case"run_end":{s=h;break}case"error":{a=!0,rn({type:"error",message:h.message});break}default:break}return n.close(),await r.exited,{lastRunEnd:s,stepsTotal:o,hadError:a,bifurcationFlows:l}}function Ao(i){let e=new Co;if(e.name("kane-cli").version(Pt),i[0]==="--help"||i[0]==="-h"||i[0]==="help"){(async()=>{let{HelpView:r}=await import("./HelpView-QSQBGS3R.js"),{render:n}=await import("./build-MFETN2BY.js"),s=await import("./react-QWOAB3TB.js"),{waitUntilExit:a}=n(s.default.createElement(r));await a(),process.exit(0)})();return}e.command("login").action(async()=>{let r=new Ee,{LoginWizard:n}=await import("./LoginWizard-EYX4VLRU.js"),{render:s}=await import("./build-MFETN2BY.js"),a=await import("./react-QWOAB3TB.js");await new Promise(o=>{let{unmount:l}=s(a.default.createElement(n,{devMode:process.env.KANE_DEV_MODE==="1",profiles:r.listProfiles(),onBasicLogin:(c,d,h,x)=>{r.saveBasicAuth(c,d,{username:h,access_key:x}),r.setActiveProfile(c),r.setDefaultEnv(d),l(),o()},onOAuthLogin:async(c,d)=>{r.setDefaultEnv(d),await new bt(c,d,r).login(),l(),o()},onCancel:()=>{l(),o()}}))})}),e.command("logout").action(async()=>{let r=new Ee,n=r.getActiveProfile();if(!n){console.log("No active profile to logout");return}let s=r.getDefaultEnv(),a=r.loadCredentials(n,s),o=r.loadClient(n,s);if(a&&o){let c=new Ge(s);try{await c.revokeToken(a.access_token,o.client_id,"access_token")}catch{}try{await c.revokeToken(a.refresh_token,o.client_id,"refresh_token")}catch{}}r.deleteProfileFull(n,s);let l=r.listProfiles();l.length>0?(r.setActiveProfile(l[0].profile),r.setDefaultEnv(l[0].env),console.log(`Logged out ${n} [${s}]. Switched to ${l[0].profile} [${l[0].env}]`)):console.log(`Logged out ${n} [${s}]. No profiles remaining.`)}),e.command("whoami").option("--profile <name>","Profile name").action(async r=>{let n=new Ee,s=r.profile??n.getActiveProfile()??"default",a=n.getDefaultEnv(),o=n.loadCredentials(s,a),l=n.loadBasicAuth(s,a),c="none",d,h,x;if(l)c="basic",d=l.username;else if(o){c="oauth";let w=o.expires_at,F=Date.now()/1e3;h=w>F?"valid":"expired",x=new Date(w*1e3).toISOString().slice(0,10)}else h="missing";let{WhoamiView:S}=await import("./WhoamiView-2LCDJ7LM.js"),{render:p}=await import("./build-MFETN2BY.js"),b=await import("./react-QWOAB3TB.js"),{waitUntilExit:g}=p(b.default.createElement(S,{profile:s,env:a,authenticated:c!=="none",authMethod:c,username:d,tokenStatus:h,expiresAt:x}));await g()}),e.command("config <action> [value]").action(async(r,n)=>{let s=new et,a=new Ee;if(r==="show"){let o=s.load(),l=a.getActiveProfile()??"default",c=a.getDefaultEnv(),d=a.loadBasicAuth(l,c),h=a.loadCredentials(l,c),x=d?`basic (${d.username})`:h?"oauth":"not configured",{ConfigView:S}=await import("./ConfigView-LORCKADT.js"),{render:p}=await import("./build-MFETN2BY.js"),b=await import("./react-QWOAB3TB.js"),{waitUntilExit:g}=p(b.default.createElement(S,{model:o.model,authLabel:x,profile:l,env:c,defaultUrl:o.default_url,projectId:o.project_id,projectName:o.project_name,folderId:o.folder_id,windowSize:`${o.window_size.width}x${o.window_size.height}`,chromeProfile:o.chrome_profile_path,setupComplete:o.setup_complete}));await g()}else if(r==="set-url"&&n)s.set("default_url",n),console.log(`Default URL set to ${n}`);else if(r==="set-window"&&n){let o=n.split("x").map(Number);o[0]&&o[1]&&(s.set("window_size",{width:o[0],height:o[1]}),console.log(`Window size set to ${o[0]}x${o[1]}`))}else if(r==="chrome-profile"){let{ChromeProfilePicker:o}=await import("./ChromeProfilePicker-XLIHAR2Y.js"),{render:l}=await import("./build-MFETN2BY.js"),c=await import("./react-QWOAB3TB.js");await new Promise(d=>{let{unmount:h}=l(c.default.createElement(o,{currentPath:s.load().chrome_profile_path,onSelect:x=>{s.set("chrome_profile_path",x),console.log(`Chrome profile set to ${x}`),h(),d()},onCancel:()=>{h(),d()}}))})}else if(r==="project"){let o=a.getDefaultEnv(),l=ce(o),c=a.loadBasicAuth(a.getActiveProfile()??"default",o);if(!c){console.log("Login first to browse projects");return}let{ProjectPicker:d}=await import("./ProjectPicker-FHY3WO2I.js"),{AuthResolver:h}=await import("./resolver-L3Z6FAOD.js"),{render:x}=await import("./build-MFETN2BY.js"),S=await import("./react-QWOAB3TB.js"),p=new h(l.controllerBaseUrl,async()=>null,c);await p.resolve(),await new Promise(b=>{let{unmount:g}=x(S.default.createElement(d,{resolver:p,currentProjectId:s.load().project_id,env:o,onSelect:(w,F)=>{s.set("project_id",w),s.set("project_name",F),console.log(`Project set to ${F} (${w})`),g(),b()},onCancel:()=>{g(),b()}}))})}else if(r==="folder"){let o=s.load();if(!o.project_id){console.log("Select a project first: kane-cli config project");return}let l=a.getDefaultEnv(),c=ce(l),d=a.loadBasicAuth(a.getActiveProfile()??"default",l);if(!d){console.log("Login first to browse folders");return}let{FolderPicker:h}=await import("./FolderPicker-UOLFYHBS.js"),{AuthResolver:x}=await import("./resolver-L3Z6FAOD.js"),{render:S}=await import("./build-MFETN2BY.js"),p=await import("./react-QWOAB3TB.js"),b=new x(c.controllerBaseUrl,async()=>null,d);await b.resolve(),await new Promise(g=>{let{unmount:w}=S(p.default.createElement(h,{resolver:b,projectId:o.project_id,currentFolderId:o.folder_id,env:l,onSelect:(F,W)=>{s.set("folder_id",F),s.set("folder_name",W),console.log(`Folder set to ${W} (${F})`),w(),g()},onCancel:()=>{w(),g()}}))})}else console.log("Usage: kane-cli config show|set-url|set-window|chrome-profile|project|folder")}),e.command("run").argument("<objective>","Test objective (use {{var}} to reference variables)").option("--url <url>","Target URL").option("--headless","Run Chrome in headless mode").option("--max-steps <n>","Maximum agent steps","30").option("--timeout <seconds>","Kill run after N seconds").option("--cdp-endpoint <url>","Connect to existing Chrome CDP endpoint").option("--ws-endpoint <url>","Connect via Playwright WebSocket (e.g. LambdaTest wss:// URL)").option("--global-context <file>",`Override global context markdown (default: ${Qe(_e,"global-memory.md")})`).option("--local-context <file>","Override local context markdown (default: .testmuai/context.md in cwd)").addOption(new Hn("--model <name>","Model override").hideHelp()).option("--variables <json>",`Inline variables JSON, e.g. '{"user": {"value": "alice"}}'`).option("--variables-file <path>","Load variables from a JSON file").option("--session-context <json>","Session context JSON (prior runs)").addOption(new Hn("--cft","Use Playwright Chromium instead of managed Chrome").hideHelp()).option("--username <user>","Basic auth username (skip OAuth)").option("--access-key <key>","Basic auth access key (skip OAuth)").option("--env <name>","Environment (prod or stage)").option("--agent","Agent mode: plain NDJSON output, no colors/UI").option("--task-skills","Enable domain-specific task skills (experimental)").addOption(new Hn("--local","Skip TMS integration (no uploads, no variables/secrets push)").hideHelp()).option("--code-export","Generate code export after upload").addHelpText("after",`
46
46
  Variables:
47
47
  Variables are loaded in order (later wins):
48
48
  1. Global: ${Qe(_e,"variables")}/*.json
@@ -66,11 +66,11 @@ Context Files:
66
66
  Override with --global-context / --local-context flags.
67
67
  `).action(async(r,n)=>{let s=new Ee,o=new et().load();!o.setup_complete&&!(n.username&&n.accessKey)&&(console.error("First-time setup required. Run: kane-cli setup --auth-method <oauth|basic>"),process.exit(1));let l=`${s.getActiveProfile()??"no profile"}/${s.getDefaultEnv()}`,c=[],d=n.env??s.getDefaultEnv(),h,x=!1,S=n.username,p=n.accessKey;if(n.username&&n.accessKey)x=!0,c.push(`Using basic auth (${n.username})`);else{let E=s.resolveAuth();E?.method==="basic"&&(x=!0,S=E.username,p=E.access_key,c.push(`Using basic auth from config (${E.username})`))}if(!x){let{credentials:E,profile:ie}=s.getActiveCredentials();if(E||(console.error("Not authenticated. Run: kane-cli login"),process.exit(2)),h=E.access_token,E.expires_at-Date.now()/1e3<300){let ne=s.loadClient(ie,d);if(ne)try{let me=await new Ge(d).refreshToken(E.refresh_token,ne.client_id);h=me.access_token,s.saveCredentials(ie,d,{access_token:h,refresh_token:me.refresh_token,expires_at:Math.floor(Date.now()/1e3)+me.expires_in,scope:me.scope})}catch{console.error("Token refresh failed. Run: kane-cli login"),process.exit(2)}}}let b=async()=>h??null,g=x&&S&&p?{username:S,access_key:p}:null,w=null,F=[],W=E=>{w?w(E):F.push(E)},Q=new cn(ce(d).controllerBaseUrl,b,g,W),te=await Q.resolve();te&&(x||(x=!0,S=te.username,p=te.access_key,c.push(`Resolved basic auth (${te.username})`)));let L=n.url??o.default_url,M=Qe(_e,"variables"),A=Qe(process.cwd(),".testmuai","variables"),X=Ln(M,A,E=>console.error(E)),f=n.variablesFile?ro(n.variablesFile):{},k=n.variables?so(n.variables):{},y={...X,...f,...k},C;if(n.sessionContext)try{C=JSON.parse(n.sessionContext)}catch{console.error("Invalid --session-context JSON"),process.exit(2)}let P=n.globalContext??Qe(_e,"global-memory.md"),j=n.localContext??Qe(process.cwd(),".testmuai","context.md"),N=Zt(P),Z=Zt(j),Y,ue=null,oe=null;if(n.cft)c.push("CfT mode: Playwright will manage its own browser");else if(n.wsEndpoint)Y=n.wsEndpoint,c.push(`Playwright WS endpoint (${Y.slice(0,60)}...)`);else if(n.cdpEndpoint){try{let E=await fetch(`${n.cdpEndpoint}/json/version`);if(!E.ok)throw new Error(`CDP returned ${E.status}`)}catch{console.error(`CDP endpoint not reachable: ${n.cdpEndpoint}`),process.exit(2)}Y=n.cdpEndpoint,c.push(`CDP connected (${Y})`)}else{let E;if(o.chrome_profile_path)E=o.chrome_profile_path.replace("~",process.env.HOME??"~");else{let{mkdtempSync:ie}=await import("fs"),{tmpdir:J}=await import("os");oe=ie(Qe(J(),"kane-clean-")),E=oe}c.push("Starting Chrome...");try{ue=await Bn({userDataDir:E,width:o.window_size.width,height:o.window_size.height,headless:n.headless,startUrl:L})}catch(ie){console.error(`Chrome failed: ${ie instanceof Error?ie.message:ie}`),process.exit(2)}Y=ue.cdpEndpoint,c.push(`Chrome ready (${Y})`)}let Te=Object.keys(y).length>0,{variables:de,objective:zt,keyMap:sn}=Te?Mn(y,r):{variables:{},objective:r,keyMap:{}},Vt=te?String(te.org_id):"",St=Object.entries(y).filter(([,E])=>E.secret);if(!n.local&&St.length>0&&x&&S&&p){let E=ce(d),ie=new en(E.secretsBaseUrl);for(let[J,ne]of St)ie.pushSecret({secretKey:J,secretValue:ne.value,username:S,accessKey:p,orgId:Vt}).then(()=>console.error(`Secret pushed: ${J}`)).catch(ye=>console.error(`Secret push failed (${J}): ${ye}`))}let fe={},nt=Object.entries(y).filter(([,E])=>!E.secret);if(!n.local&&nt.length>0&&x&&S&&p){let E=ce(d),ie=new tn(E.tmsBaseUrl,S,p);for(let[J,ne]of nt)try{let ye=await ie.upsertVariable({name:J,value:ne.value});fe[J]=ye.id,console.error(`Variable pushed: ${J} (id=${ye.id})`)}catch(ye){console.error(`Variable push failed (${J}): ${ye}`)}}let q=new Qt;q.start({model:n.model??o.model,environment:d,profile:s.getActiveProfile()}),w=E=>q.log(E);for(let E of F)q.log(E);F.length=0;let $={objective:zt,...L?{url:L}:{},model:n.model??o.model,...n.wsEndpoint?{ws_endpoint:Y}:Y?{cdp_endpoint:Y}:{},width:o.window_size.width,height:o.window_size.height,session_id:q.sessionId,run_index:0,stream:!0,...x&&S&&p?{username:S,access_key:p}:h?{auth:{type:"bearer",token:h}}:{},headless:n.headless??!1,max_steps:parseInt(n.maxSteps,10),disable_ask_user:!process.stdin.isTTY,variables:Object.keys(de).length>0?de:void 0,global_context:N??void 0,local_context:Z??void 0,enable_task_skills:n.taskSkills??!1,session_context:C},Be=null;if(!n.local)try{let{ControllerClient:E}=await import("./controller-client-PS5GDXE3.js"),ie;if(x&&S&&p)ie={username:S,accessKey:p};else if(h)ie=h;else throw new Error("No auth available");let ne=await new E(ce(d).controllerBaseUrl,ie).getScreenshotSas();q.setScreenshotSas(ne),Be=new nn(ne,3),q.log(`SCREENSHOT_SAS fetched OK base_url=${ne.base_url} container=${ne.container} expiry=${ne.expiry}`)}catch(E){q.log(`SCREENSHOT_SAS failed: ${E instanceof Error?E.message:String(E)}`)}let bn=Be?(E,ie)=>{try{let J=ie,ne=Qe(q.sessionDir,"runs",String(J),"run-test");if(!vn(ne)){q.log(`SCREENSHOT_UPLOAD skip step=${E} reason=runsDir_not_found path=${ne}`);return}let ye=ne;if(vn(Qe(ne,"screenshots")))ye=ne;else{let ge=Ra(ne).filter(pe=>vn(Qe(ne,pe,"screenshots")));if(ge.length===0){q.log(`SCREENSHOT_UPLOAD skip step=${E} reason=no_screenshots_dir`);return}ye=Qe(ne,ge[0])}let me=Qe(ye,"screenshots",`step_${String(E).padStart(3,"0")}.png`),ze=Qe(ye,"actions.ndjson");if(!vn(me)){q.log(`SCREENSHOT_UPLOAD skip step=${E} reason=screenshot_not_found path=${me}`);return}if(!vn(ze)){q.log(`SCREENSHOT_UPLOAD skip step=${E} reason=ndjson_not_found path=${ze}`);return}let re=ko(ze,"utf-8").trim().split(`
68
68
  `),le=re[re.length-1];if(!le){q.log(`SCREENSHOT_UPLOAD skip step=${E} reason=ndjson_empty`);return}let je=JSON.parse(le);if(je.action_id){let ge=ko(me);Be.enqueue(je.action_id,ge),q.log(`SCREENSHOT_UPLOAD enqueued step=${E} action_id=${je.action_id} size=${ge.length}`)}else q.log(`SCREENSHOT_UPLOAD skip step=${E} reason=no_action_id`)}catch(J){q.log(`SCREENSHOT_UPLOAD error step=${E}: ${J instanceof Error?J.message:String(J)}`)}}:void 0;if(n.agent){let E=le=>{process.stdout.write(JSON.stringify(le)+`
69
- `)},ie=await Eo($,{environment:d},{onStepEnd:bn}),{lastRunEnd:J,stepsTotal:ne,hadError:ye,bifurcationFlows:me}=ie;if(J){let le=J.total_runs??1,je=J.run_dir,ge,pe;if(le>1&&je){let{dirname:ut,join:kt}=await import("path"),Rt=ut(je);ge=Array.from({length:le},(At,rt)=>kt(Rt,String(rt))),me&&me.length===le&&(pe=me)}q.addRunResult({index:0,objective:r,summary:J.summary,status:J.status,context:J.context??{memory:{},variables:{},pointer:""},run_dir:je,run_dirs:ge,flow_objectives:pe},J.total_runs)}if(ue&&ue.kill(),oe)try{let{rmSync:le}=await import("fs");le(oe,{recursive:!0,force:!0})}catch{}let ze;if(q.log(`DIRECT_UPLOAD agent_mode=true lastRunEnd=${!!J} opts.local=${!!n.local}`),J&&!n.local)try{let le=ce(d),je=te??await Q.resolve(),ge=je?.username||S,pe=je?.access_key||p;q.log(`DIRECT_UPLOAD tmsUsername=${ge} tmsAccessKey=${!!pe} resolvedCreds=${!!te} basicUsername=${!!S}`);let ut=ge&&pe?{username:ge,accessKey:pe}:h??"";if(ge&&pe){let{TmsClient:kt}=await import("./tms-client-YS6LCK2T.js"),{UploadPipeline:Rt}=await import("./pipeline-AYK5AZRB.js"),At=new kt(le.tmsBaseUrl,ge,pe),rt=o.project_id,mt=o.folder_id,Mt=n.url??o.default_url,Oe=null;if(rt)try{Oe=await At.createAtmTest({objective:r.slice(0,100),creation_mode:"KANECLI",playground_disabled:!!o.chrome_profile_path,testURL:Mt??o.default_url??"",project_id:rt,folder_id:mt??"",authoring_version:4})}catch{}let be=q.generateCommitId(),st=x&&S?S:ge,pt=x&&p?p:pe;Be&&await Be.drain();let ot=await new Rt({controllerBaseUrl:le.controllerBaseUrl,tmsBaseUrl:le.tmsBaseUrl,auth:ut,authResolver:Q,sessionId:q.sessionId,sessionDir:q.sessionDir,testId:Oe,commitId:be,projectId:rt,folderId:mt,firstObjective:zt,firstUrl:n.url??o.default_url??"",runDirs:q.getRunDirs(),runObjectives:q.getRunObjectives(),startedAt:q.startedAt,endedAt:new Date().toISOString(),totalSteps:ne,totalDuration:J.duration??0,runStatuses:[J.status],orgId:je?.org_id??0,userId:je?.user_id??0,tmsUsername:st,tmsAccessKey:pt,screenshotBaseUrl:q.screenshotBaseUrl,shareApiBaseUrl:le.shareApiBaseUrl,variables:nt.length>0?Object.fromEntries(nt.map(([ht,_])=>[ht,_])):void 0,variableIds:fe,secrets:St.map(([ht])=>({key_name:ht,scope:"user"})),codeExport:!!n.codeExport,onProgress:()=>{},log:ht=>q.log(ht)}).execute();ot.success&&(ot.testcaseId&&q.setTestcaseId(ot.testcaseId),ot.testcaseId&&ot.shareId&&rt&&(ze=`${le.testManagerUiUrl}/projects/${rt}/test-cases/${ot.testcaseId}/dashboard/share/${ot.shareId}`))}}catch(le){q.log(`DIRECT_UPLOAD agent error: ${le instanceof Error?le.message:String(le)}`)}if(J){let le={...J};ze&&(le.test_url=ze),E(le)}q.finish("complete"),J||process.exit(ye?2:1);let re=J.reason??"";(re.includes("Cancel")||re.includes("Timeout"))&&process.exit(3),J.status==="passed"&&process.exit(0),process.exit(1)}let B=null,K=0,Ct=!1,Gt=null,Et={current:null},{waitUntilExit:ve}=yn(Ro.default.createElement(ao,{config:$,spawnOpts:{environment:d},cancelRef:Et,banner:{model:n.model??o.model,auth:l,status:c},onComplete:E=>{B=E.lastRunEnd,K=E.stepsTotal,Ct=E.hadError,Gt=E.bifurcationFlows},onStepEnd:bn}),{stdout:process.stderr,exitOnCtrlC:!1}),at;if(n.timeout){let E=parseInt(n.timeout,10)*1e3;at=setTimeout(()=>{console.error(`
70
- Timeout: ${n.timeout}s exceeded \u2014 cancelling...`),Et.current?.()},E)}if(await ve(),at&&clearTimeout(at),B){let E=B.total_runs??1,ie=B.run_dir,J,ne;if(E>1&&ie){let{dirname:ye,join:me}=await import("path"),ze=ye(ie);J=Array.from({length:E},(re,le)=>me(ze,String(le))),Gt&&Gt.length===E&&(ne=Gt)}q.addRunResult({index:0,objective:r,summary:B.summary,status:B.status,context:B.context??{memory:{},variables:{},pointer:""},run_dir:ie,run_dirs:J,flow_objectives:ne},B.total_runs)}if(ue&&ue.kill(),oe)try{let{rmSync:E}=await import("fs");E(oe,{recursive:!0,force:!0})}catch{}if(q.log(`DIRECT_UPLOAD ink_mode=true lastEvent=${!!B} opts.local=${!!n.local}`),B&&!n.local)try{let E=ce(d),ie=te??await Q.resolve(),J=ie?.username||S,ne=ie?.access_key||p,ye=ie?.org_id??0,me=ie?.user_id??0;q.log(`DIRECT_UPLOAD tmsUsername=${J} tmsAccessKey=${!!ne} resolvedCreds=${!!te} basicUsername=${!!S} projectId=${o.project_id}`);let ze=J&&ne?{username:J,accessKey:ne}:h??"";if(J&&ne){let{TmsClient:re}=await import("./tms-client-YS6LCK2T.js"),{UploadPipeline:le}=await import("./pipeline-AYK5AZRB.js"),je=new re(E.tmsBaseUrl,J,ne),ge=null,pe=o.project_id,ut=o.folder_id,kt=n.url??o.default_url;if(pe)try{ge=await je.createAtmTest({objective:r.slice(0,100),creation_mode:"KANECLI",playground_disabled:!!o.chrome_profile_path,testURL:kt??o.default_url??"",project_id:pe,folder_id:ut,authoring_version:4})}catch(be){console.error(`Test creation failed: ${be}`)}let Rt=q.generateCommitId(),At=x&&S?S:J,rt=x&&p?p:ne;Be&&(q.log("SCREENSHOT_UPLOAD draining queue before pipeline"),await Be.drain(),q.log("SCREENSHOT_UPLOAD queue drained"));let mt=new le({controllerBaseUrl:E.controllerBaseUrl,tmsBaseUrl:E.tmsBaseUrl,auth:ze,authResolver:Q,sessionId:q.sessionId,sessionDir:q.sessionDir,testId:ge,commitId:Rt,projectId:pe,folderId:ut,firstObjective:zt,firstUrl:n.url??o.default_url??"",runDirs:q.getRunDirs(),runObjectives:q.getRunObjectives(),startedAt:new Date().toISOString(),endedAt:new Date().toISOString(),totalSteps:K,totalDuration:B.duration??0,runStatuses:[B.status],orgId:ye,userId:me,tmsUsername:At,tmsAccessKey:rt,screenshotBaseUrl:q.screenshotBaseUrl,shareApiBaseUrl:E.shareApiBaseUrl,variables:nt.length>0?Object.fromEntries(nt.map(([be,st])=>[be,st])):void 0,variableIds:fe,secrets:St.map(([be])=>({key_name:be,scope:"user"})),codeExport:!!n.codeExport,onProgress:()=>{},log:be=>q.log(be)}),{renderUploadProgress:Mt}=await import("./CliUploadProgress-N33PNNIN.js"),Oe=await Mt(mt,be=>{if(be.testcaseId&&be.shareId&&pe)return`${E.testManagerUiUrl}/projects/${pe}/test-cases/${be.testcaseId}/dashboard/share/${be.shareId}`});if(Oe.success){Oe.testcaseId&&q.setTestcaseId(Oe.testcaseId);let be=Oe.testcaseId&&Oe.shareId&&pe?`${E.testManagerUiUrl}/projects/${pe}/test-cases/${Oe.testcaseId}/dashboard/share/${Oe.shareId}`:void 0,st=Oe.testcaseId&&pe?`${E.testManagerUiUrl}/projects/${pe}/test-cases/${Oe.testcaseId}/dashboard?type=summary&agentView=true&fqdn=summary-page`:void 0;if(be||st||Oe.codeExportDir){let{LinksBox:pt}=await import("./LinksBox-FWEUDQKL.js"),{render:_n}=await import("./build-MFETN2BY.js"),ot=await import("./react-QWOAB3TB.js"),{waitUntilExit:ht}=_n(ot.default.createElement(pt,{shareableLink:be,testCaseLink:st,codeExportDir:Oe.codeExportDir}),{stdout:process.stderr});await ht()}}if(ge){let{renderFeedbackPrompt:be}=await import("./CliFeedbackPrompt-M5INPPC2.js"),st=await be();if(st)try{let{TmsClient:pt}=await import("./tms-client-YS6LCK2T.js");await new pt(E.tmsBaseUrl,At,rt).submitFeedback({instruction_id:"",test_id:ge,feedback_type:st,mode:"human"}),q.log(`FEEDBACK submitted type=${st}`)}catch(pt){q.log(`FEEDBACK failed: ${pt}`)}}}}catch(E){q.log(`DIRECT_UPLOAD ink error: ${E instanceof Error?E.stack??E.message:String(E)}`),console.error(`Upload failed: ${E}`)}q.finish("complete"),B||process.exit(Ct?2:1);let Lt=B.reason??"";(Lt.includes("Cancel")||Lt.includes("Timeout"))&&process.exit(3),B.status==="passed"&&process.exit(0),process.exit(1)}),e.command("profiles").action(async()=>{let r=new Ee,{ProfilesView:n}=await import("./ProfilesView-A2O44JBO.js"),{render:s}=await import("./build-MFETN2BY.js"),a=await import("./react-QWOAB3TB.js");await new Promise(o=>{let{unmount:l}=s(a.default.createElement(n,{creds:r,onSwitch:(c,d)=>{r.setActiveProfile(c),r.setDefaultEnv(d),console.log(`Switched to ${c} [${d}]`)},onCancel:()=>{l(),o()}}))})}),e.command("setup").option("--auth-method <method>","Auth method: oauth or basic").option("--username <user>","Basic auth username").option("--access-key <key>","Basic auth access key").option("--model <name>","Model","v16-alpha").option("--chrome-profile <path>","Chrome profile path").option("--project-id <id>","Project ID for testing mode").option("--default-url <url>","Default URL").option("--env <name>","Environment (prod or stage)").action(async r=>{let n=new et,s=new Ee;r.env&&(s.setDefaultEnv(r.env),console.log(`Environment set to ${r.env}`)),(!r.authMethod||!["oauth","basic"].includes(r.authMethod))&&(console.error("--auth-method is required: oauth or basic"),process.exit(1)),r.authMethod==="basic"&&(!r.username||!r.accessKey)&&(console.error("--username and --access-key are required for basic auth"),process.exit(1)),n.set("model",r.model);let a="default";s.setActiveProfile(a);let o=s.getDefaultEnv();if(r.authMethod==="basic"?(s.saveBasicAuth(a,o,{username:r.username,access_key:r.accessKey}),console.log(`Basic auth saved for ${a}/${o}`)):(await new bt(a,o,s).login(),console.log(`OAuth login complete for ${a}/${o}`)),r.chromeProfile&&n.set("chrome_profile_path",r.chromeProfile),r.projectId)n.set("project_id",r.projectId);else try{let l=s.resolveAuth();if(l){let c=s.getDefaultEnv(),d=ce(c),h,x;if(l.method==="basic")h=l.username,x=l.access_key;else{let w=new Ge(c),F=s.getActiveCredentials(),W=s.loadClient(F.profile,F.env),Q=await w.refreshToken(F.credentials.refresh_token,W.client_id),{ControllerClient:te}=await import("./controller-client-PS5GDXE3.js"),M=await new te(d.controllerBaseUrl,Q.access_token).getTmsCredentials();h=M.username,x=M.access_key}let{TmsClient:S}=await import("./tms-client-YS6LCK2T.js"),g=(await new S(d.tmsBaseUrl,h,x).listProjects()).find(w=>w.name.toLowerCase().includes("kaneai"));g&&(n.set("project_id",g.project_id),console.log(`Auto-selected project: ${g.name} (${g.project_id})`))}}catch(l){console.warn(`Could not auto-select project: ${l instanceof Error?l.message:l}`)}r.defaultUrl?n.set("default_url",r.defaultUrl):n.set("default_url","https://kaneai-playground.lambdatest.io"),n.set("setup_complete",!0),console.log("Setup complete.")}),e.command("feedback").requiredOption("--test-id <id>","Test ID").requiredOption("--feedback-type <type>","Feedback type: positive or negative").option("--details <text>","Feedback details (max 500 characters)").option("--username <user>","Basic auth username").option("--access-key <key>","Basic auth access key").option("--env <name>","Environment (prod or stage)").action(async r=>{r.feedbackType!=="positive"&&r.feedbackType!=="negative"&&(console.error('Error: --feedback-type must be "positive" or "negative"'),process.exit(1)),r.details&&r.details.length>500&&(console.error("Error: --details must be 500 characters or fewer"),process.exit(1));let n=new Ee,s=r.env??n.getDefaultEnv(),a=ce(s),o=!1,l=r.username,c=r.accessKey,d;if(r.username&&r.accessKey)o=!0;else{let w=n.resolveAuth();w?.method==="basic"&&(o=!0,l=w.username,c=w.access_key)}if(!o){let{credentials:w}=n.getActiveCredentials();w||(console.error("Not authenticated. Run: kane-cli login"),process.exit(2)),d=w.access_token}let h=async()=>d??null,x=o&&l&&c?{username:l,access_key:c}:null,p=await new cn(a.controllerBaseUrl,h,x).resolve(),b=p?.username??l,g=p?.access_key??c;(!b||!g)&&(console.error(JSON.stringify({error:"Could not resolve TMS credentials"})),process.exit(1));try{let{TmsClient:w}=await import("./tms-client-YS6LCK2T.js"),W=await new w(a.tmsBaseUrl,b,g).submitFeedback({instruction_id:"",test_id:r.testId,feedback_type:r.feedbackType,details:r.details,mode:"agent"});console.log(JSON.stringify(W)),process.exit(0)}catch(w){console.error(JSON.stringify({error:w instanceof Error?w.message:String(w)})),process.exit(1)}}),e.command("help").action(()=>{e.help()}),e.command("update").description("Update kane-cli to the latest version").action(async()=>{let{checkForUpdate:r}=await import("./version-check-ESZ4FUKM.js"),{runSelfUpdate:n}=await import("./updater-ZEKNEF2N.js");console.log("Checking for updates...");let s=await r();if(!s){console.log(`Already on latest version (${Pt})`);return}console.log(`Update available: ${s.current} \u2192 ${s.latest}
69
+ `)},ie=await Eo($,{environment:d},{onStepEnd:bn}),{lastRunEnd:J,stepsTotal:ne,hadError:ye,bifurcationFlows:me}=ie;if(J){let le=J.total_runs??1,je=J.run_dir,ge,pe;if(le>1&&je){let{dirname:ut,join:kt}=await import("path"),Rt=ut(je);ge=Array.from({length:le},(At,rt)=>kt(Rt,String(rt))),me&&me.length===le&&(pe=me)}q.addRunResult({index:0,objective:r,summary:J.summary,status:J.status,context:J.context??{memory:{},variables:{},pointer:""},run_dir:je,run_dirs:ge,flow_objectives:pe},J.total_runs)}if(ue&&ue.kill(),oe)try{let{rmSync:le}=await import("fs");le(oe,{recursive:!0,force:!0})}catch{}let ze;if(q.log(`DIRECT_UPLOAD agent_mode=true lastRunEnd=${!!J} opts.local=${!!n.local}`),J&&!n.local)try{let le=ce(d),je=te??await Q.resolve(),ge=je?.username||S,pe=je?.access_key||p;q.log(`DIRECT_UPLOAD tmsUsername=${ge} tmsAccessKey=${!!pe} resolvedCreds=${!!te} basicUsername=${!!S}`);let ut=ge&&pe?{username:ge,accessKey:pe}:h??"";if(ge&&pe){let{TmsClient:kt}=await import("./tms-client-QWVBCUUT.js"),{UploadPipeline:Rt}=await import("./pipeline-7NY333ZT.js"),At=new kt(le.tmsBaseUrl,ge,pe),rt=o.project_id,mt=o.folder_id,Mt=n.url??o.default_url,Oe=null;if(rt)try{Oe=await At.createAtmTest({objective:r.slice(0,100),creation_mode:"KANECLI",playground_disabled:!!o.chrome_profile_path,testURL:Mt??o.default_url??"",project_id:rt,folder_id:mt??"",authoring_version:4})}catch{}let be=q.generateCommitId(),st=x&&S?S:ge,pt=x&&p?p:pe;Be&&await Be.drain();let ot=await new Rt({controllerBaseUrl:le.controllerBaseUrl,tmsBaseUrl:le.tmsBaseUrl,auth:ut,authResolver:Q,sessionId:q.sessionId,sessionDir:q.sessionDir,testId:Oe,commitId:be,projectId:rt,folderId:mt,firstObjective:zt,firstUrl:n.url??o.default_url??"",runDirs:q.getRunDirs(),runObjectives:q.getRunObjectives(),startedAt:q.startedAt,endedAt:new Date().toISOString(),totalSteps:ne,totalDuration:J.duration??0,runStatuses:[J.status],orgId:je?.org_id??0,userId:je?.user_id??0,tmsUsername:st,tmsAccessKey:pt,screenshotBaseUrl:q.screenshotBaseUrl,shareApiBaseUrl:le.shareApiBaseUrl,variables:nt.length>0?Object.fromEntries(nt.map(([ht,_])=>[ht,_])):void 0,variableIds:fe,secrets:St.map(([ht])=>({key_name:ht,scope:"user"})),codeExport:!!n.codeExport,onProgress:()=>{},log:ht=>q.log(ht)}).execute();ot.success&&(ot.testcaseId&&q.setTestcaseId(ot.testcaseId),ot.testcaseId&&ot.shareId&&rt&&(ze=`${le.testManagerUiUrl}/projects/${rt}/test-cases/${ot.testcaseId}/dashboard/share/${ot.shareId}`))}}catch(le){q.log(`DIRECT_UPLOAD agent error: ${le instanceof Error?le.message:String(le)}`)}if(J){let le={...J};ze&&(le.test_url=ze),E(le)}q.finish("complete"),J||process.exit(ye?2:1);let re=J.reason??"";(re.includes("Cancel")||re.includes("Timeout"))&&process.exit(3),J.status==="passed"&&process.exit(0),process.exit(1)}let B=null,K=0,Ct=!1,Gt=null,Et={current:null},{waitUntilExit:ve}=yn(Ro.default.createElement(ao,{config:$,spawnOpts:{environment:d},cancelRef:Et,banner:{model:n.model??o.model,auth:l,status:c},onComplete:E=>{B=E.lastRunEnd,K=E.stepsTotal,Ct=E.hadError,Gt=E.bifurcationFlows},onStepEnd:bn}),{stdout:process.stderr,exitOnCtrlC:!1}),at;if(n.timeout){let E=parseInt(n.timeout,10)*1e3;at=setTimeout(()=>{console.error(`
70
+ Timeout: ${n.timeout}s exceeded \u2014 cancelling...`),Et.current?.()},E)}if(await ve(),at&&clearTimeout(at),B){let E=B.total_runs??1,ie=B.run_dir,J,ne;if(E>1&&ie){let{dirname:ye,join:me}=await import("path"),ze=ye(ie);J=Array.from({length:E},(re,le)=>me(ze,String(le))),Gt&&Gt.length===E&&(ne=Gt)}q.addRunResult({index:0,objective:r,summary:B.summary,status:B.status,context:B.context??{memory:{},variables:{},pointer:""},run_dir:ie,run_dirs:J,flow_objectives:ne},B.total_runs)}if(ue&&ue.kill(),oe)try{let{rmSync:E}=await import("fs");E(oe,{recursive:!0,force:!0})}catch{}if(q.log(`DIRECT_UPLOAD ink_mode=true lastEvent=${!!B} opts.local=${!!n.local}`),B&&!n.local)try{let E=ce(d),ie=te??await Q.resolve(),J=ie?.username||S,ne=ie?.access_key||p,ye=ie?.org_id??0,me=ie?.user_id??0;q.log(`DIRECT_UPLOAD tmsUsername=${J} tmsAccessKey=${!!ne} resolvedCreds=${!!te} basicUsername=${!!S} projectId=${o.project_id}`);let ze=J&&ne?{username:J,accessKey:ne}:h??"";if(J&&ne){let{TmsClient:re}=await import("./tms-client-QWVBCUUT.js"),{UploadPipeline:le}=await import("./pipeline-7NY333ZT.js"),je=new re(E.tmsBaseUrl,J,ne),ge=null,pe=o.project_id,ut=o.folder_id,kt=n.url??o.default_url;if(pe)try{ge=await je.createAtmTest({objective:r.slice(0,100),creation_mode:"KANECLI",playground_disabled:!!o.chrome_profile_path,testURL:kt??o.default_url??"",project_id:pe,folder_id:ut,authoring_version:4})}catch(be){console.error(`Test creation failed: ${be}`)}let Rt=q.generateCommitId(),At=x&&S?S:J,rt=x&&p?p:ne;Be&&(q.log("SCREENSHOT_UPLOAD draining queue before pipeline"),await Be.drain(),q.log("SCREENSHOT_UPLOAD queue drained"));let mt=new le({controllerBaseUrl:E.controllerBaseUrl,tmsBaseUrl:E.tmsBaseUrl,auth:ze,authResolver:Q,sessionId:q.sessionId,sessionDir:q.sessionDir,testId:ge,commitId:Rt,projectId:pe,folderId:ut,firstObjective:zt,firstUrl:n.url??o.default_url??"",runDirs:q.getRunDirs(),runObjectives:q.getRunObjectives(),startedAt:new Date().toISOString(),endedAt:new Date().toISOString(),totalSteps:K,totalDuration:B.duration??0,runStatuses:[B.status],orgId:ye,userId:me,tmsUsername:At,tmsAccessKey:rt,screenshotBaseUrl:q.screenshotBaseUrl,shareApiBaseUrl:E.shareApiBaseUrl,variables:nt.length>0?Object.fromEntries(nt.map(([be,st])=>[be,st])):void 0,variableIds:fe,secrets:St.map(([be])=>({key_name:be,scope:"user"})),codeExport:!!n.codeExport,onProgress:()=>{},log:be=>q.log(be)}),{renderUploadProgress:Mt}=await import("./CliUploadProgress-UOBTPQO2.js"),Oe=await Mt(mt,be=>{if(be.testcaseId&&be.shareId&&pe)return`${E.testManagerUiUrl}/projects/${pe}/test-cases/${be.testcaseId}/dashboard/share/${be.shareId}`});if(Oe.success){Oe.testcaseId&&q.setTestcaseId(Oe.testcaseId);let be=Oe.testcaseId&&Oe.shareId&&pe?`${E.testManagerUiUrl}/projects/${pe}/test-cases/${Oe.testcaseId}/dashboard/share/${Oe.shareId}`:void 0,st=Oe.testcaseId&&pe?`${E.testManagerUiUrl}/projects/${pe}/test-cases/${Oe.testcaseId}/dashboard?type=summary&agentView=true&fqdn=summary-page`:void 0;if(be||st||Oe.codeExportDir){let{LinksBox:pt}=await import("./LinksBox-HCED4U3Y.js"),{render:_n}=await import("./build-MFETN2BY.js"),ot=await import("./react-QWOAB3TB.js"),{waitUntilExit:ht}=_n(ot.default.createElement(pt,{shareableLink:be,testCaseLink:st,codeExportDir:Oe.codeExportDir}),{stdout:process.stderr});await ht()}}if(ge){let{renderFeedbackPrompt:be}=await import("./CliFeedbackPrompt-UWLFODG7.js"),st=await be();if(st)try{let{TmsClient:pt}=await import("./tms-client-QWVBCUUT.js");await new pt(E.tmsBaseUrl,At,rt).submitFeedback({instruction_id:"",test_id:ge,feedback_type:st,mode:"human"}),q.log(`FEEDBACK submitted type=${st}`)}catch(pt){q.log(`FEEDBACK failed: ${pt}`)}}}}catch(E){q.log(`DIRECT_UPLOAD ink error: ${E instanceof Error?E.stack??E.message:String(E)}`),console.error(`Upload failed: ${E}`)}q.finish("complete"),B||process.exit(Ct?2:1);let Lt=B.reason??"";(Lt.includes("Cancel")||Lt.includes("Timeout"))&&process.exit(3),B.status==="passed"&&process.exit(0),process.exit(1)}),e.command("profiles").action(async()=>{let r=new Ee,{ProfilesView:n}=await import("./ProfilesView-T56LINS3.js"),{render:s}=await import("./build-MFETN2BY.js"),a=await import("./react-QWOAB3TB.js");await new Promise(o=>{let{unmount:l}=s(a.default.createElement(n,{creds:r,onSwitch:(c,d)=>{r.setActiveProfile(c),r.setDefaultEnv(d),console.log(`Switched to ${c} [${d}]`)},onCancel:()=>{l(),o()}}))})}),e.command("setup").option("--auth-method <method>","Auth method: oauth or basic").option("--username <user>","Basic auth username").option("--access-key <key>","Basic auth access key").option("--model <name>","Model","v16-alpha").option("--chrome-profile <path>","Chrome profile path").option("--project-id <id>","Project ID for testing mode").option("--default-url <url>","Default URL").option("--env <name>","Environment (prod or stage)").action(async r=>{let n=new et,s=new Ee;r.env&&(s.setDefaultEnv(r.env),console.log(`Environment set to ${r.env}`)),(!r.authMethod||!["oauth","basic"].includes(r.authMethod))&&(console.error("--auth-method is required: oauth or basic"),process.exit(1)),r.authMethod==="basic"&&(!r.username||!r.accessKey)&&(console.error("--username and --access-key are required for basic auth"),process.exit(1)),n.set("model",r.model);let a="default";s.setActiveProfile(a);let o=s.getDefaultEnv();if(r.authMethod==="basic"?(s.saveBasicAuth(a,o,{username:r.username,access_key:r.accessKey}),console.log(`Basic auth saved for ${a}/${o}`)):(await new bt(a,o,s).login(),console.log(`OAuth login complete for ${a}/${o}`)),r.chromeProfile&&n.set("chrome_profile_path",r.chromeProfile),r.projectId)n.set("project_id",r.projectId);else try{let l=s.resolveAuth();if(l){let c=s.getDefaultEnv(),d=ce(c),h,x;if(l.method==="basic")h=l.username,x=l.access_key;else{let w=new Ge(c),F=s.getActiveCredentials(),W=s.loadClient(F.profile,F.env),Q=await w.refreshToken(F.credentials.refresh_token,W.client_id),{ControllerClient:te}=await import("./controller-client-PS5GDXE3.js"),M=await new te(d.controllerBaseUrl,Q.access_token).getTmsCredentials();h=M.username,x=M.access_key}let{TmsClient:S}=await import("./tms-client-QWVBCUUT.js"),g=(await new S(d.tmsBaseUrl,h,x).listProjects()).find(w=>w.name.toLowerCase().includes("kaneai"));g&&(n.set("project_id",g.project_id),console.log(`Auto-selected project: ${g.name} (${g.project_id})`))}}catch(l){console.warn(`Could not auto-select project: ${l instanceof Error?l.message:l}`)}r.defaultUrl?n.set("default_url",r.defaultUrl):n.set("default_url","https://kaneai-playground.lambdatest.io"),n.set("setup_complete",!0),console.log("Setup complete.")}),e.command("feedback").requiredOption("--test-id <id>","Test ID").requiredOption("--feedback-type <type>","Feedback type: positive or negative").option("--details <text>","Feedback details (max 500 characters)").option("--username <user>","Basic auth username").option("--access-key <key>","Basic auth access key").option("--env <name>","Environment (prod or stage)").action(async r=>{r.feedbackType!=="positive"&&r.feedbackType!=="negative"&&(console.error('Error: --feedback-type must be "positive" or "negative"'),process.exit(1)),r.details&&r.details.length>500&&(console.error("Error: --details must be 500 characters or fewer"),process.exit(1));let n=new Ee,s=r.env??n.getDefaultEnv(),a=ce(s),o=!1,l=r.username,c=r.accessKey,d;if(r.username&&r.accessKey)o=!0;else{let w=n.resolveAuth();w?.method==="basic"&&(o=!0,l=w.username,c=w.access_key)}if(!o){let{credentials:w}=n.getActiveCredentials();w||(console.error("Not authenticated. Run: kane-cli login"),process.exit(2)),d=w.access_token}let h=async()=>d??null,x=o&&l&&c?{username:l,access_key:c}:null,p=await new cn(a.controllerBaseUrl,h,x).resolve(),b=p?.username??l,g=p?.access_key??c;(!b||!g)&&(console.error(JSON.stringify({error:"Could not resolve TMS credentials"})),process.exit(1));try{let{TmsClient:w}=await import("./tms-client-QWVBCUUT.js"),W=await new w(a.tmsBaseUrl,b,g).submitFeedback({instruction_id:"",test_id:r.testId,feedback_type:r.feedbackType,details:r.details,mode:"agent"});console.log(JSON.stringify(W)),process.exit(0)}catch(w){console.error(JSON.stringify({error:w instanceof Error?w.message:String(w)})),process.exit(1)}}),e.command("help").action(()=>{e.help()}),e.command("update").description("Update kane-cli to the latest version").action(async()=>{let{checkForUpdate:r}=await import("./version-check-GHGJIUN6.js"),{runSelfUpdate:n}=await import("./updater-SIJ34O2X.js");console.log("Checking for updates...");let s=await r();if(!s){console.log(`Already on latest version (${Pt})`);return}console.log(`Update available: ${s.current} \u2192 ${s.latest}
71
71
  `),console.log("Updating @testmuai/kane-cli...");let a=await n(o=>{process.stdout.write(o)});a.success?(console.log(`
72
72
  \u2713 Updated to ${a.toVersion}`),console.log("\nRun `kane-cli changelog` to see what's new.")):console.error(`
73
- \u2717 Update failed: ${a.error}`)}),e.command("changelog").description("Show recent release notes").option("--all","Show all releases instead of latest 5").action(async r=>{let{fetchChangelog:n,formatChangelog:s}=await import("./changelog-55ITZPQ5.js"),a=await n({all:r.all});console.log(s(a))}),e.parse(["node","kane-cli",...i])}var To=kn().catch(()=>null),Wn=Ut.argv.slice(2),Aa=Wn.includes("--dev"),Ta=Wn.includes("--local"),Oa=Wn.includes("--code-export"),Po=Wn.filter(i=>i!=="--dev"),Pa=new Set(["--local","--code-export"]),Ia=Po.some(i=>!Pa.has(i));Aa&&(Ut.env.KANE_DEV_MODE="1");if(Ia)To.then(i=>{i&&Ut.stderr.write(`
73
+ \u2717 Update failed: ${a.error}`)}),e.command("changelog").description("Show recent release notes").option("--all","Show all releases instead of latest 5").action(async r=>{let{fetchChangelog:n,formatChangelog:s}=await import("./changelog-G5K7UY44.js"),a=await n({all:r.all});console.log(s(a))}),e.parse(["node","kane-cli",...i])}var To=kn().catch(()=>null),Wn=Ut.argv.slice(2),Aa=Wn.includes("--dev"),Ta=Wn.includes("--local"),Oa=Wn.includes("--code-export"),Po=Wn.filter(i=>i!=="--dev"),Pa=new Set(["--local","--code-export"]),Ia=Po.some(i=>!Pa.has(i));Aa&&(Ut.env.KANE_DEV_MODE="1");if(Ia)To.then(i=>{i&&Ut.stderr.write(`
74
74
  Update available: ${i.current} \u2192 ${i.latest} \u2014 run \`kane-cli update\`
75
75
 
76
76
  `)}),Ao(Po);else{Ut.on("SIGINT",()=>{Ut.exit(130)}),Ut.on("SIGTERM",async()=>{let{runExitCleanup:e}=await import("./exitCleanup-J3GVD6U2.js");e(),Ut.exit(143)});let{waitUntilExit:i}=yn(Oo.default.createElement(co,{localMode:Ta,codeExport:Oa,updatePromise:To}),{exitOnCtrlC:!1});i().then(()=>{Ut.exit(0)})}
@@ -0,0 +1,2 @@
1
+ import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
+ import{a}from"./chunk-GNMGQOGV.js";import"./chunk-3CJ6IY5O.js";import"./chunk-I7YWZ3D2.js";import"./chunk-UR6MHSHU.js";export{a as UploadPipeline};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-XQBQB3VZ.js";import"./chunk-UR6MHSHU.js";export{a as TmsClient};
2
+ import{a}from"./chunk-I7YWZ3D2.js";import"./chunk-UR6MHSHU.js";export{a as TmsClient};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{c as a}from"./chunk-OUXII47G.js";import{a as s}from"./chunk-UFZAQ5P6.js";import"./chunk-UR6MHSHU.js";import{execFile as l}from"child_process";async function p(i){let t=await a();if(!t)return{success:!0,fromVersion:s,toVersion:s};let o=`@testmuai/kane-cli@${t.latest}`;return new Promise(n=>{let r=l("npm",["install","-g",o],{timeout:12e4,env:{...process.env}});r.stdout?.on("data",e=>i?.(e)),r.stderr?.on("data",e=>i?.(e)),r.on("close",e=>{n(e===0?{success:!0,fromVersion:s,toVersion:t.latest}:{success:!1,fromVersion:s,toVersion:t.latest,error:`npm install exited with code ${e}. Try manually: npm install -g ${o}`})}),r.on("error",e=>{n({success:!1,fromVersion:s,toVersion:t.latest,error:`Failed to run npm: ${e.message}. Try manually: npm install -g ${o}`})})})}export{p as runSelfUpdate};
2
+ import{c as a}from"./chunk-P5KW7XFK.js";import{a as s}from"./chunk-733KSBIW.js";import"./chunk-UR6MHSHU.js";import{execFile as l}from"child_process";async function p(i){let t=await a();if(!t)return{success:!0,fromVersion:s,toVersion:s};let o=`@testmuai/kane-cli@${t.latest}`;return new Promise(n=>{let r=l("npm",["install","-g",o],{timeout:12e4,env:{...process.env}});r.stdout?.on("data",e=>i?.(e)),r.stderr?.on("data",e=>i?.(e)),r.on("close",e=>{n(e===0?{success:!0,fromVersion:s,toVersion:t.latest}:{success:!1,fromVersion:s,toVersion:t.latest,error:`npm install exited with code ${e}. Try manually: npm install -g ${o}`})}),r.on("error",e=>{n({success:!1,fromVersion:s,toVersion:t.latest,error:`Failed to run npm: ${e.message}. Try manually: npm install -g ${o}`})})})}export{p as runSelfUpdate};
@@ -1,2 +1,2 @@
1
1
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b,c}from"./chunk-OUXII47G.js";import"./chunk-UFZAQ5P6.js";import"./chunk-UR6MHSHU.js";export{c as checkForUpdate,a as compareVersions,b as getSeverity};
2
+ import{a,b,c}from"./chunk-P5KW7XFK.js";import"./chunk-733KSBIW.js";import"./chunk-UR6MHSHU.js";export{c as checkForUpdate,a as compareVersions,b as getSeverity};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testmuai/kane-cli",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "KaneAI Terminal UI — browser automation testing agent",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -23,9 +23,9 @@
23
23
  "sharp": "^0.34.5"
24
24
  },
25
25
  "optionalDependencies": {
26
- "@testmuai/kane-cli-darwin-arm64": "0.2.1",
27
- "@testmuai/kane-cli-linux-x64": "0.2.1",
28
- "@testmuai/kane-cli-win-x64": "0.2.1"
26
+ "@testmuai/kane-cli-darwin-arm64": "0.2.2",
27
+ "@testmuai/kane-cli-linux-x64": "0.2.2",
28
+ "@testmuai/kane-cli-win-x64": "0.2.2"
29
29
  },
30
30
  "publishConfig": {
31
31
  "registry": "https://registry.npmjs.org",
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b}from"./chunk-IJTXDIJZ.js";import"./chunk-TYLGP66W.js";import"./chunk-XQBQB3VZ.js";import"./chunk-HCBYKLMW.js";import"./chunk-UFZAQ5P6.js";import"./chunk-Q7JVDEOV.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as FolderPicker,a as formatFolderLine};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a as f}from"./chunk-HCBYKLMW.js";import{a as h,b as a,r as t}from"./chunk-UFZAQ5P6.js";import{a as n,b as o,j as p,k as x}from"./chunk-Q7JVDEOV.js";import{a as T}from"./chunk-6YGTRKDT.js";import{e as u}from"./chunk-UR6MHSHU.js";var b=u(T(),1);var e=u(f(),1),w="https://docs.lambdatest.com/kanecli",B="https://docs.lambdatest.com/support";function L(){let{exit:c}=p(),{stdout:l}=x(),s=l?.columns??80;return(0,b.useEffect)(()=>{let d=setTimeout(()=>c(),50);return()=>clearTimeout(d)},[c]),(0,e.jsxs)(n,{flexDirection:"column",children:[(0,e.jsxs)(n,{paddingX:1,paddingTop:1,flexDirection:"column",children:[(0,e.jsx)(o,{color:t.purple,bold:!0,children:a}),(0,e.jsxs)(n,{children:[(0,e.jsx)(o,{color:t.dimmed,children:"Browser automation powered by AI "}),(0,e.jsxs)(o,{color:t.muted,children:[" v",h]})]})]}),(0,e.jsx)(o,{children:" "}),(0,e.jsx)(m,{title:"USAGE",children:(0,e.jsxs)(o,{color:t.cyan,children:[" $ ",a," ","<command>"," [flags]"]})}),(0,e.jsxs)(m,{title:"COMMANDS",children:[(0,e.jsx)(i,{cmd:"run",args:"<objective>",desc:"Run a browser automation task",highlight:!0}),(0,e.jsx)(i,{cmd:"setup",desc:"First-time auth & configuration"}),(0,e.jsx)(i,{cmd:"login",desc:"OAuth PKCE login (opens browser)"}),(0,e.jsx)(i,{cmd:"logout",desc:"Revoke tokens + delete profile"}),(0,e.jsx)(i,{cmd:"whoami",desc:"Show authenticated identity"}),(0,e.jsx)(i,{cmd:"config",args:"show|set-\u2026|reset",desc:"Manage configuration"}),(0,e.jsx)(i,{cmd:"profiles",args:"list|switch|delete",desc:"Manage auth profiles"})]}),(0,e.jsxs)(m,{title:"RUN FLAGS",children:[(0,e.jsx)(r,{long:"--url",arg:"<url>",desc:"Target URL"}),(0,e.jsx)(r,{long:"--max-steps",arg:"<n>",desc:"Max agent steps (default: 30)"}),(0,e.jsx)(r,{long:"--timeout",arg:"<sec>",desc:"Kill run after N seconds"}),(0,e.jsx)(r,{long:"--headless",desc:"No visible browser window"}),(0,e.jsx)(r,{long:"--variables",arg:"<json>",desc:"Inline variables as JSON"}),(0,e.jsx)(r,{long:"--variables-file",arg:"<path>",desc:"Load variables from file"}),(0,e.jsx)(r,{long:"--ws-endpoint",arg:"<url>",desc:"Remote browser (LambdaTest)"}),(0,e.jsx)(r,{long:"--cdp-endpoint",arg:"<url>",desc:"Connect to existing Chrome CDP"}),(0,e.jsx)(r,{long:"--cft",desc:"Use Playwright Chromium instead of managed Chrome"}),(0,e.jsx)(r,{long:"--global-context",arg:"<file>",desc:"Override global context markdown"}),(0,e.jsx)(r,{long:"--local-context",arg:"<file>",desc:"Override local context markdown"}),(0,e.jsx)(r,{long:"--username",arg:"<user>",desc:"Basic auth (skip OAuth)"}),(0,e.jsx)(r,{long:"--access-key",arg:"<key>",desc:"Basic auth access key"}),(0,e.jsx)(r,{long:"--env",arg:"<name>",desc:"Environment (prod or stage)"}),(0,e.jsx)(r,{long:"--agent",desc:"NDJSON output (no UI)",highlight:!0})]}),(0,e.jsxs)(m,{title:"EXAMPLES",children:[(0,e.jsx)(g,{label:"Search",cmd:`${a} run "Search for laptop" --url https://amazon.in`}),(0,e.jsx)(g,{label:"Headless",cmd:`${a} run "Verify login" --url https://app.example.com --headless`}),(0,e.jsx)(g,{label:"Variables",cmd:`${a} run "Login as {{user}}" --url https://app.com --variables '{"user":{"value":"alice"}}'`}),(0,e.jsx)(g,{label:"Agent",cmd:`${a} run "Add to cart" --url https://shop.com --agent | jq .status`})]}),(0,e.jsxs)(n,{flexDirection:"column",marginTop:0,paddingX:1,children:[(0,e.jsx)(o,{color:t.muted,children:"\u2500".repeat(Math.min(s-2,70))}),(0,e.jsxs)(n,{gap:3,children:[(0,e.jsxs)(n,{children:[(0,e.jsx)(o,{color:t.dimmed,children:"Docs "}),(0,e.jsx)(o,{color:t.cyan,underline:!0,children:w})]}),(0,e.jsxs)(n,{children:[(0,e.jsx)(o,{color:t.dimmed,children:"Bugs "}),(0,e.jsx)(o,{color:t.cyan,underline:!0,children:B})]})]})]}),(0,e.jsx)(o,{children:" "})]})}function m({title:c,children:l}){return(0,e.jsxs)(n,{flexDirection:"column",marginBottom:1,children:[(0,e.jsx)(n,{marginLeft:1,children:(0,e.jsx)(o,{bold:!0,color:t.dimmed,children:c})}),l]})}function i({cmd:c,args:l,desc:s,highlight:d}){return(0,e.jsxs)(n,{marginLeft:2,children:[(0,e.jsx)(n,{width:12,children:(0,e.jsx)(o,{color:d?t.purple:t.green,bold:!0,children:c})}),(0,e.jsx)(n,{width:28,children:l?(0,e.jsx)(o,{color:t.dimmed,children:l}):null}),(0,e.jsx)(o,{color:t.dimmed,children:s})]})}function r({long:c,arg:l,desc:s,highlight:d}){return(0,e.jsxs)(n,{marginLeft:2,children:[(0,e.jsxs)(n,{width:26,children:[(0,e.jsx)(o,{color:d?t.purple:t.cyan,children:c}),l&&(0,e.jsxs)(o,{color:t.dimmed,children:[" ",l]})]}),(0,e.jsx)(o,{color:t.dimmed,children:s})]})}function g({label:c,cmd:l}){return(0,e.jsxs)(n,{marginLeft:2,flexDirection:"column",children:[(0,e.jsxs)(o,{color:t.dimmed,children:["# ",c]}),(0,e.jsxs)(o,{color:t.cyan,children:["$ ",l]})]})}export{L as HelpView};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a,b}from"./chunk-3LZPBHIR.js";import"./chunk-TYLGP66W.js";import"./chunk-XQBQB3VZ.js";import"./chunk-HCBYKLMW.js";import"./chunk-UFZAQ5P6.js";import"./chunk-Q7JVDEOV.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as ProjectPicker,a as formatProjectLine};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- var d=class{constructor(e,t,a){this.baseUrl=e;this.authHeader=`Basic ${Buffer.from(`${t}:${a}`).toString("base64")}`}authHeader;headers(){return{Authorization:this.authHeader,"Content-Type":"application/json",Accept:"application/json"}}async listProjects(e=1,t=50,a){let i=`${this.baseUrl}/v1/projects?page=${e}&per_page=${t}&sort=created_at`,s=await fetch(i,{method:"GET",headers:this.headers()});if(!s.ok)throw new Error(`List projects failed: ${s.status} ${await s.text()}`);let o=await s.json();if(a&&o.data?.length>0){let r=o.data[0];a(`PROJECT response sample project_id=${r.project_id} name=${r.name}`)}return o.data}async getDefaultFolder(e){let t=await fetch(`${this.baseUrl}/v1/projects/${e}/folder/default`,{method:"GET",headers:this.headers()});if(!t.ok)throw new Error(`Get default folder failed: ${t.status} ${await t.text()}`);return(await t.json()).id}async listFolders(e){let t=await fetch(`${this.baseUrl}/v1/folder/entity/${e}`,{method:"GET",headers:this.headers()});if(!t.ok)throw new Error(`List folders failed: ${t.status} ${await t.text()}`);return(await t.json()).data??[]}async createAtmTest(e,t){let a=t?`Bearer ${t}`:this.authHeader,i=await fetch(`${this.baseUrl}/atm/v1/test`,{method:"POST",headers:{Authorization:a,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(e)});if(!i.ok)throw new Error(`Create ATM test failed: ${i.status} ${await i.text()}`);let s=await i.json();if(!s.test_id)throw new Error("Create ATM test returned no test_id");return s.test_id}async endTest(e,t,a){let i=a?`Bearer ${a}`:this.authHeader,s=new URLSearchParams({commit_id:t.commit_id,time_taken:String(t.time_taken),steps_count:String(t.steps_count),commit_message:t.commit_message}),o={};t.objectives&&t.objectives.length>0&&(o.objectives=t.objectives);let r=await fetch(`${this.baseUrl}/atm/v1/test/${e}?${s.toString()}`,{method:"DELETE",headers:{Authorization:i,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(o)});if(!r.ok)throw new Error(`End test failed: ${r.status} ${await r.text()}`);let n=await r.json();return{testcase_id:n.data?.testcase_id??"",test_id:n.data?.test_id??e,project_id:n.data?.project_id??""}}async submitFeedback(e,t){let a=t?`Bearer ${t}`:this.authHeader,i={instruction_id:e.instruction_id,test_id:e.test_id,feedback_type:e.feedback_type,mode:e.mode??"human"};e.details&&(i.details=e.details);let s=await fetch(`${this.baseUrl}/atm/v1/generative-feedback`,{method:"POST",headers:{Authorization:a,"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(i)});if(!s.ok)throw new Error(`Submit feedback failed: ${s.status} ${await s.text()}`);return await s.json()}};export{d as a};
@@ -1,2 +0,0 @@
1
- import { createRequire } from 'module'; const require = createRequire(import.meta.url);
2
- import{a}from"./chunk-O2HIAIOC.js";import"./chunk-3CJ6IY5O.js";import"./chunk-XQBQB3VZ.js";import"./chunk-UR6MHSHU.js";export{a as UploadPipeline};