@testmuai/kane-cli 0.4.6 → 0.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ChromeProfilePicker-HBFXP75A.js → ChromeProfilePicker-B2PUH2LL.js} +1 -1
- package/dist/{CliFeedbackPrompt-WICQY46X.js → CliFeedbackPrompt-647ESLIL.js} +1 -1
- package/dist/{CliUploadProgress-XJ6CCNCR.js → CliUploadProgress-U325KQO6.js} +1 -1
- package/dist/{ConfigView-GPMON37C.js → ConfigView-NKD7QMUV.js} +1 -1
- package/dist/FolderPicker-2LEIB5F5.js +2 -0
- package/dist/HelpView-35KKWQVE.js +2 -0
- package/dist/{InfoBox-PNFLVOCW.js → InfoBox-OIZ3APE3.js} +1 -1
- package/dist/{LinksBox-R23D7MOQ.js → LinksBox-DLIYPE3S.js} +1 -1
- package/dist/{ProfilesView-7BXBJQWU.js → ProfilesView-CFYBJIL4.js} +1 -1
- package/dist/{ProjectPicker-ZZQKNTV5.js → ProjectPicker-ASHXV4HU.js} +1 -1
- package/dist/{SaveSessionPrompt-HJYSPZH5.js → SaveSessionPrompt-ATKVPQEJ.js} +1 -1
- package/dist/SingleShotApp-JYKEW3WS.js +2 -0
- package/dist/{SummaryBox-WWMBNF6O.js → SummaryBox-AAXB55TE.js} +1 -1
- package/dist/TestMdRunView-U35UBFHZ.js +2 -0
- package/dist/{WhoamiView-JEXEKDXI.js → WhoamiView-TRGZE2NZ.js} +1 -1
- package/dist/{changelog-74AVV4RG.js → changelog-JBGYPN7J.js} +1 -1
- package/dist/{chunk-WILJRFXU.js → chunk-25YRWDQ7.js} +1 -1
- package/dist/{chunk-TQZPYXN7.js → chunk-3PISMPFM.js} +1 -1
- package/dist/{chunk-SC4KKGUA.js → chunk-5VZSCQXN.js} +1 -1
- package/dist/{chunk-BFYV4TJW.js → chunk-AD6DPSIZ.js} +1 -1
- package/dist/{chunk-3TNWLCIU.js → chunk-ALF5ETLD.js} +1 -1
- package/dist/{chunk-J54IX7BP.js → chunk-BGXAW2B5.js} +1 -1
- package/dist/{chunk-Y6MB5JP7.js → chunk-BH6EP2LD.js} +1 -1
- package/dist/{chunk-6E4FS7EC.js → chunk-C2E2DKY3.js} +1 -1
- package/dist/{chunk-TOR7WEDD.js → chunk-CL5SB2I7.js} +1 -1
- package/dist/{chunk-264ZEJT7.js → chunk-CVC6MQN6.js} +1 -1
- package/dist/{chunk-H7TODYZ2.js → chunk-DMLJUTQO.js} +1 -1
- package/dist/{chunk-HWCBOJOP.js → chunk-EAUU5F4P.js} +1 -1
- package/dist/{chunk-554BXLWE.js → chunk-F5ZL4XYL.js} +1 -1
- package/dist/{chunk-NURJMABT.js → chunk-F6VA5YBJ.js} +34 -34
- package/dist/{chunk-HHDG2TGX.js → chunk-GRIQ4OQL.js} +1 -1
- package/dist/{chunk-AR6VSIYN.js → chunk-HZUTFC3G.js} +1 -1
- package/dist/chunk-IT2GFEFH.js +5 -0
- package/dist/{chunk-6IE22TW6.js → chunk-IXYUSFH2.js} +2 -2
- package/dist/{chunk-Q3RXDN74.js → chunk-K266M5ZM.js} +1 -1
- package/dist/{chunk-WVAX7IIU.js → chunk-LY3DAHNE.js} +2 -2
- package/dist/{chunk-LFQ2MZYC.js → chunk-LZEYE2WE.js} +1 -1
- package/dist/{chunk-33273OM4.js → chunk-RBG4VTHQ.js} +1 -1
- package/dist/{chunk-7YZO2QQ6.js → chunk-SH5FUG47.js} +1 -1
- package/dist/{chunk-YC7GOEEW.js → chunk-SRQ7P3WI.js} +1 -1
- package/dist/{chunk-LAPX4BA7.js → chunk-SSPIKPHV.js} +1 -1
- package/dist/{chunk-AFUGVKF7.js → chunk-SVZUJ2QE.js} +1 -1
- package/dist/{chunk-KKXWOTVX.js → chunk-UR4NSWY7.js} +1 -1
- package/dist/chunk-UVOM74DG.js +27 -0
- package/dist/{chunk-T7ECNTOU.js → chunk-W67JBBQF.js} +2 -2
- package/dist/{chunk-7NELLGD4.js → chunk-WKS4ST3B.js} +1 -1
- package/dist/chunk-WZ6GNXM3.js +2 -0
- package/dist/chunk-XCMNFMSO.js +8 -0
- package/dist/chunk-YJVA6LBY.js +6 -0
- package/dist/{chunk-2RXJ7SIN.js → chunk-YYSABHRE.js} +1 -1
- package/dist/{chunk-BY7T5OJN.js → chunk-ZQ5IPBXJ.js} +1 -1
- package/dist/{chunk-WXV73W6R.js → chunk-ZQPTSSU6.js} +1 -1
- package/dist/{chunk-JTXYQ2KH.js → chunk-ZRGEUDG5.js} +1 -1
- package/dist/{generate-headless-FX7EAINU.js → generate-headless-VB52MM2A.js} +2 -2
- package/dist/index.js +39 -39
- package/dist/{list-commands-M35SC7YD.js → list-commands-X6EXASQG.js} +1 -1
- package/dist/login-flow-R5IGUIPA.js +2 -0
- package/dist/{persist-recorded-session-V4OYUDBM.js → persist-recorded-session-EI4ISSRI.js} +1 -1
- package/dist/{pipeline-26FR6BXR.js → pipeline-34CX3UBO.js} +1 -1
- package/dist/{recording-banner-5V66U2RF.js → recording-banner-BQQSRJIF.js} +1 -1
- package/dist/{require-project-folder-J5IFDFQZ.js → require-project-folder-LSM4YSKJ.js} +1 -1
- package/dist/{run-test-md-XSR7NXBR.js → run-test-md-VR2Q46Q3.js} +5 -5
- package/dist/{skill-installer-WZCILRBJ.js → skill-installer-JS7LUETO.js} +1 -1
- package/dist/tcg-generate-YQJZTSSI.js +2 -0
- package/dist/testmd-actions-FAQYABQT.js +2 -0
- package/dist/token-refresh-XM3DXY2A.js +2 -0
- package/dist/{validate-basic-3W5ODPRI.js → validate-basic-W7UJ5D25.js} +1 -1
- package/dist/{version-check-43WUFMCW.js → version-check-ACQ5Z7JV.js} +1 -1
- package/package.json +6 -6
- package/dist/FolderPicker-IZXWPOTS.js +0 -2
- package/dist/HelpView-7SDQKJFW.js +0 -2
- package/dist/SingleShotApp-SLABQ7BW.js +0 -2
- package/dist/TestMdRunView-33RBMIZB.js +0 -2
- package/dist/chunk-2TT2RIVP.js +0 -2
- package/dist/chunk-BACEOONG.js +0 -5
- package/dist/chunk-BSTC6BLT.js +0 -5
- package/dist/chunk-J7QJ5Q3J.js +0 -8
- package/dist/chunk-OUO4AO3Z.js +0 -22
- package/dist/login-flow-OBWXOIJ2.js +0 -2
- package/dist/tcg-generate-2H5AUMWY.js +0 -2
- package/dist/testmd-actions-QKMEYBUJ.js +0 -2
- package/dist/token-refresh-VUGZH2DA.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-
|
|
2
|
+
import{a,b,c}from"./chunk-GRIQ4OQL.js";import"./chunk-EAUU5F4P.js";import"./chunk-BGXAW2B5.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{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-
|
|
2
|
+
import{a as r}from"./chunk-F5ZL4XYL.js";import"./chunk-EAUU5F4P.js";import"./chunk-BGXAW2B5.js";import"./chunk-HCBYKLMW.js";import{c as e}from"./chunk-C44QQJR4.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{a as P,b as g,c as f}from"./chunk-
|
|
2
|
+
import{a as P,b as g,c as f}from"./chunk-ZQ5IPBXJ.js";import"./chunk-UR4NSWY7.js";import"./chunk-BGXAW2B5.js";import{a as c}from"./chunk-HCBYKLMW.js";import{c as d}from"./chunk-C44QQJR4.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 p,b as l,c as n}from"./chunk-
|
|
2
|
+
import{a as p,b as l,c as n}from"./chunk-WZ6GNXM3.js";import{x as o}from"./chunk-BGXAW2B5.js";import{a as g}from"./chunk-HCBYKLMW.js";import{a,j as c}from"./chunk-C44QQJR4.js";import{a as R}from"./chunk-6YGTRKDT.js";import{e as t}from"./chunk-UR6MHSHU.js";var b=t(R(),1);var e=t(g(),1);function A({model:d,authLabel:v,profile:x,env:w,defaultUrl:u,projectId:r,projectName:s,folderId:i,folderName:f,windowSize:B,chromeProfile:C}){let h=r?s?`${s} (${r})`:r:"(none)",D=i?f?`${f} (${i})`:i:"(none)",{exit:m}=c();return(0,b.useEffect)(()=>{let P=setTimeout(()=>m(),50);return()=>clearTimeout(P)},[m]),(0,e.jsx)(a,{flexDirection:"column",children:(0,e.jsx)(p,{title:"Configuration",children:(0,e.jsxs)(a,{flexDirection:"column",paddingY:1,children:[(0,e.jsx)(n,{label:"Auth"}),(0,e.jsx)(l,{label:" method",value:v}),(0,e.jsx)(l,{label:" profile",value:x}),(0,e.jsx)(l,{label:" env",value:w}),(0,e.jsx)(n,{label:"Defaults"}),(0,e.jsx)(l,{label:" url",value:u??"(none)",valueColor:u?o.orange:o.dim}),(0,e.jsx)(l,{label:" model",value:d}),(0,e.jsx)(l,{label:" window",value:B}),(0,e.jsx)(l,{label:" project",value:h}),(0,e.jsx)(l,{label:" folder",value:D}),(0,e.jsx)(n,{label:"Paths"}),(0,e.jsx)(l,{label:" chrome",value:C,valueColor:o.dim})]})})})}export{A as ConfigView};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a,b}from"./chunk-SRQ7P3WI.js";import"./chunk-YCCUBQY4.js";import"./chunk-RBG4VTHQ.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-3PISMPFM.js";import"./chunk-RZ4F3BHX.js";import"./chunk-EAUU5F4P.js";import"./chunk-BGXAW2B5.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as FolderPicker,a as formatFolderLine};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a as f,b as i,x as t}from"./chunk-BGXAW2B5.js";import{a as T}from"./chunk-HCBYKLMW.js";import{a as n,b as o,j as p,k as x}from"./chunk-C44QQJR4.js";import{a as b}from"./chunk-6YGTRKDT.js";import{e as h}from"./chunk-UR6MHSHU.js";var w=h(b(),1);var e=h(T(),1),S="https://www.testmuai.com/support/docs/kane-cli-introduction",v="https://github.com/LambdaTest/kane-cli/issues";function k(){let{exit:l}=p(),{stdout:r}=x(),c=r?.columns??80;return(0,w.useEffect)(()=>{let m=setTimeout(()=>l(),50);return()=>clearTimeout(m)},[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.orange,bold:!0,children:i}),(0,e.jsxs)(n,{children:[(0,e.jsx)(o,{color:t.dim,children:"Browser automation powered by AI "}),(0,e.jsxs)(o,{color:t.muted,children:[" v",f]})]})]}),(0,e.jsx)(o,{children:" "}),(0,e.jsxs)(d,{title:"USAGE",children:[(0,e.jsx)(g,{cmd:`${i}`,desc:"Single-shot prompt (no args, TTY)"}),(0,e.jsx)(g,{cmd:`${i} --tui`,desc:"Full interactive TUI",highlight:!0}),(0,e.jsx)(g,{cmd:`${i} run "<objective>"`,desc:"Inline objective"}),(0,e.jsx)(g,{cmd:`${i} testmd run <path>.md`,desc:"Replay a saved *_test.md file"})]}),(0,e.jsxs)(d,{title:"HELP",children:[(0,e.jsx)(g,{cmd:`${i} --help`,desc:"Show this help (long form)"}),(0,e.jsx)(g,{cmd:`${i} -h`,desc:"Show this help (short form)"}),(0,e.jsx)(g,{cmd:`${i} help`,desc:"Show this help (subcommand form)"}),(0,e.jsxs)(n,{marginLeft:2,marginTop:0,flexDirection:"column",children:[(0,e.jsxs)(o,{color:t.dim,children:["These are the only supported help invocations. Anything else (e.g. ",(0,e.jsx)(o,{color:t.orange,children:"-help"}),") is an unknown flag."]}),(0,e.jsxs)(o,{color:t.dim,children:["Terminal tab-completion is a shell feature; ",i," does not ship shell-completion scripts, so any flag your shell suggests is a generic guess \u2014 not from ",i,"."]})]})]}),(0,e.jsxs)(d,{title:"COMMANDS",children:[(0,e.jsx)(a,{cmd:"run",args:"<objective>",desc:"Run an objective (inline string)",highlight:!0}),(0,e.jsx)(a,{cmd:"testmd",args:"run|list|status|delete|export",desc:"Manage *_test.md files"}),(0,e.jsx)(a,{cmd:"login",desc:"Auth setup (interactive, --oauth, or --username)"}),(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-mode|set-assertion-mode|\u2026",desc:"Chrome, run & generate settings"}),(0,e.jsx)(a,{cmd:"profiles",args:"list|switch|delete",desc:"Manage auth profiles"}),(0,e.jsx)(a,{cmd:"changelog",args:"[--all]",desc:"Show recent release notes"})]}),(0,e.jsxs)(d,{title:"TESTMD ACTIONS",children:[(0,e.jsx)(a,{cmd:"testmd run",args:"<path>",desc:"Replay a saved *_test.md file",highlight:!0}),(0,e.jsx)(a,{cmd:"testmd list",desc:"List *_test.md files in cwd (recursive)"}),(0,e.jsx)(a,{cmd:"testmd status",args:"<path>",desc:"Print local meta.json for a test"}),(0,e.jsx)(a,{cmd:"testmd delete",args:"<path>",desc:"Remove output-<stem>/ and the source file"}),(0,e.jsx)(a,{cmd:"testmd export",args:"<path> --language <py|js>",desc:"Generate standalone Playwright code"})]}),(0,e.jsxs)(d,{title:"RUN FLAGS",children:[(0,e.jsx)(s,{long:"--max-steps",arg:"<n>",desc:"Max agent steps (default: 30)"}),(0,e.jsx)(s,{long:"--timeout",arg:"<sec>",desc:"Kill run after N seconds"}),(0,e.jsx)(s,{long:"--headless",desc:"No visible browser window"}),(0,e.jsx)(s,{long:"--mode",arg:"<action|testing>",desc:"Run mode (default: testing)"}),(0,e.jsx)(s,{long:"--name",arg:"<name>",desc:"Persist session under this name"}),(0,e.jsx)(s,{long:"--variables",arg:"<json>",desc:"Inline variables as JSON"}),(0,e.jsx)(s,{long:"--variables-file",arg:"<path>",desc:"Load variables from file"}),(0,e.jsx)(s,{long:"--session-context",arg:"<json>",desc:"Prior runs context JSON"}),(0,e.jsx)(s,{long:"--global-context",arg:"<file>",desc:"Override global context markdown"}),(0,e.jsx)(s,{long:"--local-context",arg:"<file>",desc:"Override local context markdown"}),(0,e.jsx)(s,{long:"--ws-endpoint",arg:"<url>",desc:"Remote browser (LambdaTest)"}),(0,e.jsx)(s,{long:"--cdp-endpoint",arg:"<url>",desc:"Connect to existing Chrome CDP"}),(0,e.jsx)(s,{long:"--task-skills",desc:"Domain-specific task skills (experimental)"}),(0,e.jsx)(s,{long:"--code-export",desc:"Generate code export after upload"}),(0,e.jsx)(s,{long:"--code-language",arg:"<lang>",desc:"Code export language: python | javascript"}),(0,e.jsx)(s,{long:"--skip-code-validation",desc:"Skip post-codegen validation"}),(0,e.jsx)(s,{long:"--username",arg:"<user>",desc:"Basic auth (skip OAuth)"}),(0,e.jsx)(s,{long:"--access-key",arg:"<key>",desc:"Basic auth access key"}),(0,e.jsx)(s,{long:"--env",arg:"<name>",desc:"Environment (prod or stage)"}),(0,e.jsx)(s,{long:"--agent",desc:"NDJSON output (no UI)",highlight:!0})]}),(0,e.jsxs)(d,{title:"EXAMPLES",children:[(0,e.jsx)(u,{label:"Inline objective",cmd:`${i} run "Search for laptop"`}),(0,e.jsx)(u,{label:"Replay a saved test",cmd:`${i} testmd run smoke_test.md`}),(0,e.jsx)(u,{label:"Variables",cmd:`${i} run "Login as {{user}}" --variables '{"user":{"value":"alice"}}'`}),(0,e.jsx)(u,{label:"Agent mode (NDJSON)",cmd:`${i} run "Add to cart" --agent | jq .status`})]}),(0,e.jsx)(d,{title:"TEST FILES",children:(0,e.jsxs)(n,{marginLeft:2,flexDirection:"column",children:[(0,e.jsxs)(o,{color:t.dim,children:[(0,e.jsx)(o,{color:t.orange,children:"*_test.md"})," \u2014 markdown test files with YAML frontmatter and ",(0,e.jsx)(o,{color:t.orange,children:"## "}),"step headings."]}),(0,e.jsxs)(o,{color:t.dim,children:["Run with ",(0,e.jsxs)(o,{color:t.orange,children:[i," testmd run path/to/foo_test.md"]}),". (`.md` paths are not accepted by `",i," run`.)"]}),(0,e.jsxs)(o,{color:t.dim,children:["Sessions you run in TUI auto-save to ",(0,e.jsx)(o,{color:t.orange,children:"<cwd>/.testmuai/tests/<name>_test.md"})," (testing mode prompts on exit)."]})]})}),(0,e.jsxs)(n,{flexDirection:"column",marginTop:0,paddingX:1,children:[(0,e.jsx)(o,{color:t.muted,children:"\u2500".repeat(Math.min(c-2,70))}),(0,e.jsxs)(n,{gap:3,children:[(0,e.jsxs)(n,{children:[(0,e.jsx)(o,{color:t.dim,children:"Docs "}),(0,e.jsx)(o,{color:t.orange,underline:!0,children:S})]}),(0,e.jsxs)(n,{children:[(0,e.jsx)(o,{color:t.dim,children:"Bugs "}),(0,e.jsx)(o,{color:t.orange,underline:!0,children:v})]})]})]}),(0,e.jsx)(o,{children:" "})]})}function d({title:l,children:r}){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.dim,children:l})}),r]})}function g({cmd:l,desc:r,highlight:c}){return(0,e.jsxs)(n,{marginLeft:2,children:[(0,e.jsxs)(n,{width:40,children:[(0,e.jsx)(o,{color:t.dim,children:"$ "}),(0,e.jsx)(o,{color:c?t.orange:t.orange,children:l})]}),(0,e.jsx)(o,{color:t.dim,children:r})]})}function a({cmd:l,args:r,desc:c,highlight:m}){return(0,e.jsxs)(n,{marginLeft:2,children:[(0,e.jsx)(n,{width:16,children:(0,e.jsx)(o,{color:m?t.orange:t.green,bold:!0,children:l})}),(0,e.jsx)(n,{width:32,children:r?(0,e.jsx)(o,{color:t.dim,children:r}):null}),(0,e.jsx)(o,{color:t.dim,children:c})]})}function s({long:l,arg:r,desc:c,highlight:m}){return(0,e.jsxs)(n,{marginLeft:2,children:[(0,e.jsxs)(n,{width:30,children:[(0,e.jsx)(o,{color:m?t.orange:t.orange,children:l}),r&&(0,e.jsxs)(o,{color:t.dim,children:[" ",r]})]}),(0,e.jsx)(o,{color:t.dim,children:c})]})}function u({label:l,cmd:r}){return(0,e.jsxs)(n,{marginLeft:2,flexDirection:"column",children:[(0,e.jsxs)(o,{color:t.dim,children:["# ",l]}),(0,e.jsxs)(o,{color:t.orange,children:["$ ",r]})]})}export{k as HelpView};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-
|
|
2
|
+
import{a}from"./chunk-LZEYE2WE.js";import"./chunk-WZ6GNXM3.js";import"./chunk-BGXAW2B5.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as InfoBox};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a}from"./chunk-
|
|
2
|
+
import{a}from"./chunk-SSPIKPHV.js";import"./chunk-BGXAW2B5.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.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-
|
|
2
|
+
import{a,b}from"./chunk-AD6DPSIZ.js";import"./chunk-EAUU5F4P.js";import"./chunk-BGXAW2B5.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as ProfilesView,a as formatProfileLine};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b}from"./chunk-
|
|
2
|
+
import{a,b}from"./chunk-CL5SB2I7.js";import"./chunk-YCCUBQY4.js";import"./chunk-RBG4VTHQ.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-3PISMPFM.js";import"./chunk-RZ4F3BHX.js";import"./chunk-EAUU5F4P.js";import"./chunk-BGXAW2B5.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{b as ProjectPicker,a as formatProjectLine};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b,c}from"./chunk-
|
|
2
|
+
import{a,b,c}from"./chunk-ZQPTSSU6.js";import"./chunk-S3DAAAE5.js";import"./chunk-LZEYE2WE.js";import"./chunk-WZ6GNXM3.js";import"./chunk-BGXAW2B5.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as SaveSessionPrompt,b as defaultSessionTimestamp,c as renderSavePrompt};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{a}from"./chunk-C2E2DKY3.js";import"./chunk-25YRWDQ7.js";import"./chunk-K266M5ZM.js";import"./chunk-L5LI2JF4.js";import"./chunk-XCMNFMSO.js";import"./chunk-FPFOW6BS.js";import"./chunk-WAOCHXJ5.js";import"./chunk-CL5SB2I7.js";import"./chunk-SRQ7P3WI.js";import"./chunk-YCCUBQY4.js";import"./chunk-RBG4VTHQ.js";import"./chunk-LOIRZFV3.js";import"./chunk-LPUQ4HWQ.js";import"./chunk-NLCCBXXV.js";import"./chunk-VE3SUJMA.js";import"./chunk-HZUTFC3G.js";import"./chunk-ALF5ETLD.js";import"./chunk-3PISMPFM.js";import"./chunk-RZ4F3BHX.js";import"./chunk-EAUU5F4P.js";import"./chunk-BGXAW2B5.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as SingleShotApp};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a,b,c,d}from"./chunk-
|
|
2
|
+
import{a,b,c,d}from"./chunk-SVZUJ2QE.js";import"./chunk-LZEYE2WE.js";import"./chunk-WZ6GNXM3.js";import"./chunk-BGXAW2B5.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{d as AutoExitSummaryBox,c as SummaryBox,b as buildSummaryEvent,a as buildSummaryRendered};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
+
import{h as a}from"./chunk-YJVA6LBY.js";import"./chunk-IT2GFEFH.js";import"./chunk-UR4NSWY7.js";import"./chunk-LOIRZFV3.js";import"./chunk-3PISMPFM.js";import"./chunk-LZEYE2WE.js";import"./chunk-WZ6GNXM3.js";import"./chunk-C6S4IEBC.js";import"./chunk-BGXAW2B5.js";import"./chunk-HCBYKLMW.js";import"./chunk-C44QQJR4.js";import"./chunk-6YGTRKDT.js";import"./chunk-UR6MHSHU.js";export{a as TestMdRunView};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as b,b as r}from"./chunk-
|
|
2
|
+
import{a as b,b as r}from"./chunk-WZ6GNXM3.js";import{x as o}from"./chunk-BGXAW2B5.js";import{a as p}from"./chunk-HCBYKLMW.js";import{a as i,b as l,j as s}from"./chunk-C44QQJR4.js";import{a as T}from"./chunk-6YGTRKDT.js";import{e as a}from"./chunk-UR6MHSHU.js";var f=a(T(),1);var e=a(p(),1);function V({profile:g,env:v,authenticated:n,authMethod:h,username:c,tokenStatus:t,expiresAt:d,serverStatus:u,detail:m}){let{exit:x}=s();return(0,f.useEffect)(()=>{let B=setTimeout(()=>x(),50);return()=>clearTimeout(B)},[x]),(0,e.jsx)(i,{flexDirection:"column",children:(0,e.jsx)(b,{title:"Identity",variant:n?"success":"warning",children:(0,e.jsxs)(i,{flexDirection:"column",paddingY:1,children:[(0,e.jsx)(i,{children:u==="rejected"?(0,e.jsx)(l,{color:o.red,bold:!0,children:"\u2717 Not authenticated"}):u==="unreachable"?(0,e.jsx)(l,{color:o.orange,bold:!0,children:"\u26A0 Couldn't verify"}):n?(0,e.jsx)(l,{color:o.green,bold:!0,children:"\u2713 Authenticated"}):(0,e.jsx)(l,{color:o.orange,bold:!0,children:"\u26A0 Not logged in"})}),(0,e.jsxs)(i,{flexDirection:"column",marginTop:1,children:[(0,e.jsx)(r,{label:"Profile",value:g}),(0,e.jsx)(r,{label:"Environment",value:v}),(0,e.jsx)(r,{label:"Method",value:h}),c&&(0,e.jsx)(r,{label:"User",value:c}),t&&(0,e.jsx)(r,{label:"Token",value:t,valueColor:t==="valid"?o.green:t==="expired"?o.red:o.dim}),d&&(0,e.jsx)(r,{label:"Expires",value:d}),m&&(0,e.jsx)(r,{label:"Detail",value:m})]})]})})})}export{V as WhoamiView};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as l}from"./chunk-RZ4F3BHX.js";import{c as i,f as c}from"./chunk-
|
|
2
|
+
import{a as l}from"./chunk-RZ4F3BHX.js";import{c as i,f as c}from"./chunk-BGXAW2B5.js";import"./chunk-UR6MHSHU.js";import{readFileSync as u,writeFileSync as g,mkdirSync as d}from"fs";import{join as f}from"path";var h=f(i,"changelog-cache.json"),p=3600*1e3;function y(){try{let e=JSON.parse(u(h,"utf-8"));if(Date.now()-e.cachedAt<p)return e}catch{}return null}function m(e){try{d(i,{recursive:!0}),g(h,JSON.stringify({entries:e,cachedAt:Date.now()}))}catch{}}async function A(e){try{let t=y();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 l(`${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 m(s),e?.all?s:s.slice(0,5)}catch{return[]}}function v(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{A as fetchChangelog,v as formatChangelog};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as $e}from"./chunk-
|
|
2
|
+
import{a as $e}from"./chunk-XCMNFMSO.js";import{a as Fe}from"./chunk-FPFOW6BS.js";import{a as ke}from"./chunk-YCCUBQY4.js";import{a as Ke}from"./chunk-VE3SUJMA.js";import{a as Ue}from"./chunk-ALF5ETLD.js";import{a as Oe}from"./chunk-3PISMPFM.js";import{a as de}from"./chunk-EAUU5F4P.js";import{c as Re,x as u}from"./chunk-BGXAW2B5.js";import{a as Z}from"./chunk-HCBYKLMW.js";import{a as x,b as f,h as Le,i as be,k as De}from"./chunk-C44QQJR4.js";import{a as xe}from"./chunk-6YGTRKDT.js";import{e as O}from"./chunk-UR6MHSHU.js";var Ne=O(xe(),1);import{readFileSync as et,writeFileSync as tt,mkdirSync as nt}from"fs";import{dirname as rt,join as We}from"path";var ot=We(Re,"command-history.json"),yt=We(Re,"generate-history.json"),it=200,_e=class{entries;filePath;max;constructor(t=ot,e=it){this.filePath=t,this.max=e,this.entries=this._load()}push(t){this.entries.length>0&&this.entries[this.entries.length-1]===t||(this.entries.push(t),this.entries.length>this.max&&(this.entries=this.entries.slice(this.entries.length-this.max)),this._save())}getAll(){return[...this.entries]}search(t){let e=t.toLowerCase(),i=[];for(let l=this.entries.length-1;l>=0;l--)this.entries[l].toLowerCase().includes(e)&&i.push(this.entries[l]);return i}_load(){try{let t=et(this.filePath,"utf-8"),e=JSON.parse(t);return Array.isArray(e)?e:[]}catch{return[]}}_save(){try{nt(rt(this.filePath),{recursive:!0}),tt(this.filePath,JSON.stringify(this.entries)+`
|
|
3
3
|
`)}catch{}}};function At(r){let t=(0,Ne.useRef)(null);return t.current||(t.current=new _e(r)),t.current}var L=O(xe(),1);var Ie=O(xe(),1);var X=O(Z(),1);function He({history:r,onSelect:t,onClose:e}){let[i,l]=(0,Ie.useState)(""),[a,g]=(0,Ie.useState)(0),v=i?r.search(i).slice(0,8):[];return be((T,d)=>{if(d.escape){e();return}if(d.return){v.length>0&&v[a]?t(v[a]):e();return}if(d.upArrow){g(w=>Math.max(0,w-1));return}if(d.downArrow){g(w=>Math.min(v.length-1,w+1));return}if(d.backspace||d.delete){l(w=>w.slice(0,-1)),g(0);return}T&&!d.ctrl&&!d.meta&&(l(w=>w+T),g(0))}),(0,X.jsxs)(x,{flexDirection:"column",marginLeft:2,borderStyle:"single",paddingX:1,children:[(0,X.jsx)(f,{color:u.muted,bold:!0,children:"reverse search"}),(0,X.jsxs)(x,{gap:1,children:[(0,X.jsx)(f,{color:u.dim,children:"search:"}),(0,X.jsx)(f,{children:i}),(0,X.jsx)(f,{color:u.orange,children:"\u2588"})]}),v.length>0&&(0,X.jsx)(f,{children:" "}),v.map((T,d)=>(0,X.jsx)(x,{marginLeft:2,children:(0,X.jsxs)(f,{color:d===a?u.orange:u.dim,bold:d===a,children:[d===a?"\u25B8 ":" ",T]})},`${d}-${T}`))]})}var ce=O(Z(),1);function Ge({commands:r,selectedIndex:t}){return r.length===0?null:(0,ce.jsx)(x,{flexDirection:"column",marginBottom:0,children:r.map((e,i)=>{let l=i===t;return(0,ce.jsxs)(x,{children:[(0,ce.jsx)(f,{color:l?u.orange:u.dim,children:l?"\u276F ":" "}),(0,ce.jsxs)(f,{color:l?u.orange:void 0,bold:l,children:["/",e.name]}),e.args&&(0,ce.jsxs)(f,{color:u.dim,children:[" ",e.args]}),(0,ce.jsxs)(f,{color:u.dim,children:[" ",e.description]})]},e.name)})})}var Ye=O(xe(),1);var H=O(Z(),1),qe={scenario:"Scenarios",case:"Test Cases",file:"Files"};function Ve(r){let t={scenario:0,case:0,file:0};for(let e of r)t[e.kind]++;return["scenario","case","file"].filter(e=>t[e]>0).map(e=>`${t[e]} ${qe[e]}`).join(" \xB7 ")}var Ee=7;function je({items:r,selectedIndex:t,accent:e=u.orange}){let i=r.length;if(i===0)return null;let l=Math.floor(Ee/2),a=i<=Ee?0:Math.max(0,Math.min(t-l,i-Ee)),g=Math.min(i,a+Ee),v=a,T=i-g;return(0,H.jsxs)(x,{flexDirection:"column",marginBottom:0,children:[v>0&&(0,H.jsx)(x,{children:(0,H.jsx)(f,{color:u.dim,children:` \u22EF ${v} above \u2014 ${Ve(r.slice(0,a))}`})}),r.slice(a,g).map((d,w)=>{let K=a+w,D=K===t,C=w===0||r[K-1].kind!==d.kind;return(0,H.jsxs)(Ye.default.Fragment,{children:[C&&(0,H.jsx)(x,{children:(0,H.jsx)(f,{color:u.dim,children:qe[d.kind]})}),(0,H.jsxs)(x,{children:[(0,H.jsx)(f,{color:D?e:u.dim,children:D?"\u276F ":" "}),(0,H.jsx)(f,{color:D?e:void 0,bold:D,children:d.label})]})]},`${d.kind}:${d.value}:${K}`)}),T>0&&(0,H.jsx)(x,{children:(0,H.jsx)(f,{color:u.dim,children:` \u22EF ${T} more \u2014 ${Ve(r.slice(g))}`})})]})}var ye=O(xe(),1);var st=27,lt=127,at=11;function ct(r){return r>=64&&r<=126}function ut(r,t){r===at&&t({killToEnd:!0,ctrl:!0,raw:String.fromCharCode(r)})}function ft(r,t){r===lt&&t({backspace:!0,meta:!0,raw:"\x1B\x7F"})}function dt(r,t){let e=r.map(l=>String.fromCharCode(l)).join(""),i=/^\[1;([0-9]+)([A-D])$/.exec(e);if(i){let l=parseInt(i[1],10),a=i[2],g={raw:"\x1B"+e};if(l===2)g.shift=!0;else if(l===3)g.meta=!0;else if(l===5)g.ctrl=!0;else return;a==="A"?g.arrowUp=!0:a==="B"?g.arrowDown=!0:a==="C"?g.arrowRight=!0:a==="D"&&(g.arrowLeft=!0),t(g);return}if(e==="[H"||e==="[1~"||e==="[7~"){t({home:!0,raw:"\x1B"+e});return}if(e==="[F"||e==="[4~"||e==="[8~"){t({end:!0,raw:"\x1B"+e});return}if(e==="[3;5~"){t({delete:!0,ctrl:!0,raw:"\x1B"+e});return}if(e==="[3;3~"){t({delete:!0,meta:!0,raw:"\x1B"+e});return}}function mt(r,t){r===72?t({home:!0,raw:"\x1BO"+String.fromCharCode(r)}):r===70&&t({end:!0,raw:"\x1BO"+String.fromCharCode(r)})}function ht(){let r="IDLE",t=[];function e(){r="IDLE",t=[]}return{feed(i,l){for(let a of i)r==="IDLE"?a===st?(r="ESC",t=[]):ut(a,l):r==="ESC"?a===91?(r="CSI",t=[]):a===79?(r="SS3",t=[]):(ft(a,l),e()):r==="CSI"?(t.push(a),ct(a)&&(dt([91,...t],l),e())):r==="SS3"&&(mt(a,l),e())},flushIdle(i){r==="ESC"&&t.length===0&&i({raw:"\x1B"}),e()}}}function ze(r,t={}){let e=(0,ye.useRef)(r);e.current=r;let{stdin:i}=Le();(0,ye.useEffect)(()=>{if(t.isActive===!1||!i)return;let l=ht(),a=null,g=v=>{a&&(clearTimeout(a),a=null);let T=Buffer.isBuffer(v)?v:Buffer.from(v,"binary");l.feed(T,d=>e.current(d)),a=setTimeout(()=>{l.flushIdle(d=>e.current(d)),a=null},50)};return i.on("data",g),()=>{i.removeListener("data",g),a&&clearTimeout(a)}},[t.isActive,i])}var E=O(Z(),1);function gt(r,t){let e=t-1;for(;e>=0&&r[e]!=="@"&&r[e]!==" "&&r[e]!==`
|
|
4
4
|
`;)e--;return e<0||r[e]!=="@"||e>0&&r[e-1]!==" "&&r[e-1]!==`
|
|
5
5
|
`?null:{at:e,query:r.slice(e+1,t).join("")}}var Pe=10;function pt(r){return r.replace(/\x1b?\[200~/g,"").replace(/\x1b?\[201~/g,"").replace(/\r\n/g,`
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{w as s}from"./chunk-
|
|
2
|
+
import{w as s}from"./chunk-BGXAW2B5.js";function n(r="prod"){let e=s[r];return r!=="stage"?e:{authBaseUrl:process.env.KANE_STAGE_AUTH_URL??e.authBaseUrl,consentUrl:process.env.KANE_STAGE_CONSENT_URL??e.consentUrl,controllerBaseUrl:process.env.TESTMUAI_BASE_URL??e.controllerBaseUrl,tmsBaseUrl:process.env.KANE_STAGE_TMS_URL??e.tmsBaseUrl,testGeneratorBaseUrl:process.env.KANE_STAGE_TCG_URL??e.testGeneratorBaseUrl,secretsBaseUrl:process.env.KANE_STAGE_SECRETS_URL??e.secretsBaseUrl,testManagerUiUrl:process.env.KANE_STAGE_TEST_MANAGER_UI_URL??e.testManagerUiUrl,shareApiBaseUrl:process.env.KANE_STAGE_SHARE_API_URL??e.shareApiBaseUrl,v16ServerHost:process.env.KANE_STAGE_V16_SERVER_HOST??e.v16ServerHost}}export{n as a};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as l}from"./chunk-
|
|
2
|
+
import{b as l}from"./chunk-YYSABHRE.js";import{a as f}from"./chunk-HZUTFC3G.js";import{a as m}from"./chunk-3PISMPFM.js";import{a as p}from"./chunk-RZ4F3BHX.js";import{a as c,c as s,h as a,w as u}from"./chunk-BGXAW2B5.js";var v="/public/skills/kane-cli";function C(){try{let n=new f().getDefaultEnv();if(n in u)return n}catch{}return"prod"}function k(){return`${m(C()).controllerBaseUrl}${v}`}import{readFileSync as S,writeFileSync as E,mkdirSync as g}from"fs";import{join as d}from"path";var h=d(s,"skill-check.json"),y=3600*1e3;function V(){try{let n=JSON.parse(S(h,"utf-8"));if(Date.now()-n.checkedAt<y)return n}catch{}return null}function A(n){try{g(s,{recursive:!0}),E(h,JSON.stringify({map:n,checkedAt:Date.now()}))}catch{}}function I(){for(let{dir:n}of a)try{let t=S(d(n,"VERSION"),"utf-8").trim();if(t)return t}catch{}return null}function M(n,t){let i=Object.keys(n.versions??{});if(i.length===0)return null;let o=i.slice().sort((r,e)=>l(r,e));for(let r of o){let e=n.versions[r]?.kaneCliMinVersion;if(!e||l(t,e)<=0)return r}return null}async function U(){try{let n=V()?.map;if(!n){let o=new AbortController,r=setTimeout(()=>o.abort(),5e3),e=await p(k(),{headers:{Accept:"application/json"},signal:o.signal});if(clearTimeout(r),!e.ok)return null;n=await e.json(),A(n)}let t=M(n,c);if(!t)return null;let i=I();return i===null?{current:null,latestCompatible:t}:l(i,t)>0?{current:i,latestCompatible:t}:null}catch{return null}}export{k as a,M as b,U as c};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as h}from"./chunk-
|
|
2
|
+
import{a as h}from"./chunk-EAUU5F4P.js";import{x as l}from"./chunk-BGXAW2B5.js";import{a as A}from"./chunk-HCBYKLMW.js";import{a as c,b as f,i as P}from"./chunk-C44QQJR4.js";import{a as B}from"./chunk-6YGTRKDT.js";import{e as x}from"./chunk-UR6MHSHU.js";var L=x(B(),1);var n=x(A(),1);function S(r,d,s,u,m){let p=s==="basic"&&u?`basic (${u})`:s,i=20,a=`${r} [${d}]`,g="\xB7".repeat(Math.max(2,i-a.length+3));return{label:`${a} ${g} ${p}`,profile:r,env:d,isActive:m}}function M({creds:r,onSwitch:d,onCancel:s}){let u=r.listProfiles(),m=r.getActiveProfile(),p=r.getDefaultEnv(),i=u.map(e=>{let o=r.loadBasicAuth(e.profile,e.env),t=r.loadCredentials(e.profile,e.env)!==null,v=o?"basic":t?"oauth":"none",b=o?o.username:null,w=e.profile===m&&e.env===p;return S(e.profile,e.env,v,b,w)}),[a,g]=(0,L.useState)(()=>{let e=i.findIndex(o=>o.isActive);return e>=0?e:0});return P((e,o)=>{if(o.escape){s();return}if(o.upArrow){g(t=>Math.max(0,t-1));return}if(o.downArrow){g(t=>Math.min(i.length-1,t+1));return}if(o.return&&i[a]){let t=i[a];t.isActive||d(t.profile,t.env),s();return}}),i.length===0?(0,n.jsxs)(c,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:[(0,n.jsx)(f,{color:l.orange,bold:!0,children:"Profiles"}),(0,n.jsx)(c,{marginTop:1,children:(0,n.jsx)(f,{color:l.dim,children:"No profiles \u2014 use Login to create one"})}),(0,n.jsx)(h,{bindings:[],escBackLabel:"back"})]}):(0,n.jsxs)(c,{flexDirection:"column",borderStyle:"round",borderColor:l.orange,paddingX:2,paddingY:1,children:[(0,n.jsx)(f,{color:l.orange,bold:!0,children:"Profiles"}),(0,n.jsx)(c,{flexDirection:"column",marginTop:1,children:i.map((e,o)=>{let t=o===a,v=t?"\u276F ":" ",b=e.isActive?l.green:t?l.orange:void 0;return(0,n.jsxs)(f,{color:b,children:[v,e.label,e.isActive?" \u25CF active":""]},`${e.profile}-${e.env}`)})}),(0,n.jsx)(h,{bindings:[{keys:"\u2191\u2193",label:"navigate"},{keys:"\u21B5",label:"switch"}],escBackLabel:"back"})]})}export{S as a,M 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-
|
|
2
|
+
import{a as c}from"./chunk-3PISMPFM.js";import{a as n}from"./chunk-RZ4F3BHX.js";import{u as s,v as a}from"./chunk-BGXAW2B5.js";import{createHash as h,randomBytes as g}from"crypto";var l=class{authBaseUrl;consentUrl;constructor(t="prod"){let e=c(t);this.authBaseUrl=e.authBaseUrl,this.consentUrl=e.consentUrl}static generatePkce(){let t=g(96).toString("base64url").slice(0,128),e=h("sha256").update(t).digest("base64url");return[t,e]}buildAuthorizationUrl(t,e,r,o){let i=new URLSearchParams({response_type:"code",client_id:t,redirect_uri:o,scope:a,code_challenge:e,code_challenge_method:"S256",state:r});return`${this.consentUrl}/oauth2?${i.toString()}`}async registerClient(t){let e=await n(`${this.authBaseUrl}/oauth2/register`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_name:s,redirect_uris:[t],grant_types:["authorization_code"],response_types:["code"],client_type:"public",application_type:"native"})});if(!e.ok)throw new Error(`DCR failed: ${e.status} ${await e.text()}`);return e.json()}async exchangeCode(t,e,r,o){let i=await n(`${this.authBaseUrl}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:t,redirect_uri:o,client_id:e,code_verifier:r})});if(!i.ok)throw new Error(`Token exchange failed: ${i.status}`);return i.json()}async refreshToken(t,e){let r=await n(`${this.authBaseUrl}/oauth2/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:t,client_id:e})});if(!r.ok)throw new Error(`Token refresh failed: ${r.status}`);return r.json()}async revokeToken(t,e,r="access_token"){await n(`${this.authBaseUrl}/oauth2/revoke`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t,token_type_hint:r,client_id:e})})}async validateToken(t){let e=new AbortController,r=setTimeout(()=>e.abort(),1e4);try{let o=await n(`${this.authBaseUrl}/api/user`,{headers:{Authorization:`Bearer ${t}`,Accept:"application/json","Content-Type":"application/json"},signal:e.signal});return clearTimeout(r),o.ok}catch{return clearTimeout(r),!1}}};export{l as a};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{homedir as e}from"os";import{join as t}from"path";var m="0.4.
|
|
2
|
+
import{homedir as e}from"os";import{join as t}from"path";var m="0.4.8",d="kane-cli",a=t(e(),".testmuai","kaneai"),g=t(a,"profiles"),h=t(a,"tui-config.json"),_="https://registry.npmjs.org/@testmuai/kane-cli",L="https://api.github.com/repos/LambdaTest/kane-cli/releases",n="@testmuai/kane-cli-skill",x=`https://registry.npmjs.org/${n}`,r="kane-cli",A=[{dir:t(e(),".claude","skills",r),agent:"Claude Code"},{dir:t(e(),".agents","skills",r),agent:"Codex CLI"},{dir:t(e(),".gemini","skills",r),agent:"Gemini CLI"}],u="https://dd-proxy.lambdatest.com/intake/kane-cli",R="https://kaneai-playground.lambdatest.io",U=9222,b=9230,I=t(a,"chrome-profiles"),o=t(a,"hints"),C=t(o,"state.json");function E(s){return t(o,`catalog-${s}.json`)}var p="127.0.0.1",T=18392,S=18400,c="/callback";function N(s){return`http://${p}:${s}${c}`}var P="KANE CLI",B="*",O={prod:{authBaseUrl:"https://auth.lambdatest.com",consentUrl:"https://accounts.lambdatest.com",controllerBaseUrl:"https://kaneai-api.lambdatest.com/v16-controller/v1",tmsBaseUrl:"https://test-manager-api.lambdatest.com/api",testGeneratorBaseUrl:"https://test-manager-api.lambdatest.com",secretsBaseUrl:"https://api-hyperexecute.lambdatest.com",testManagerUiUrl:"https://test-manager.lambdatest.com",shareApiBaseUrl:"https://api.lambdatest.com",v16ServerHost:"https://kaneai-api.lambdatest.com/v16-server"},stage:{authBaseUrl:"https://stage-auth.lambdatestinternal.com",consentUrl:"https://stage-accounts.lambdatestinternal.com",controllerBaseUrl:"https://auteur-stage-automind.lambdatestinternal.com/v16-controller/v1",tmsBaseUrl:"https://stage-test-manager-api.lambdatestinternal.com/api",testGeneratorBaseUrl:"https://stage-test-manager-api.lambdatestinternal.com",secretsBaseUrl:"https://api-stage-hyperexecute.lambdatestinternal.com",testManagerUiUrl:"https://stage-test-manager.lambdatestinternal.com",shareApiBaseUrl:"https://stage-api.lambdatestinternal.com",v16ServerHost:"https://auteur-stage-automind.lambdatestinternal.com/v16-server"}},k={orange:"#ff9500",generateAccent:"#0d9488",purple:"#b388ff",secondary:"#888888",dim:"#666666",muted:"#444444",green:"#4ade80",red:"#ef4444"};export{m as a,d as b,a as c,h as d,_ as e,L as f,n as g,A as h,u as i,R as j,U as k,b as l,I as m,C as n,E as o,p,T as q,S as r,c as s,N as t,P as u,B as v,O as w,k as x};
|
|
@@ -10,7 +10,7 @@ GFS4: `),console.error(t)});ne[me]||(_d=global[me]||[],md(ne,_d),ne.close=(funct
|
|
|
10
10
|
`));let i=e.pax;if(i)for(let n in i)r+=uc(" "+n+"="+i[n]+`
|
|
11
11
|
`);return W.from(r)};di.decodePax=function(e){let r={};for(;e.length;){let i=0;for(;i<e.length&&e[i]!==32;)i++;let n=parseInt(W.toString(e.subarray(0,i)),10);if(!n)return r;let s=W.toString(e.subarray(i+1,n-1)),o=s.indexOf("=");if(o===-1)return r;r[s.slice(0,o)]=s.slice(o+1),e=e.subarray(n)}return r};di.encode=function(e){let r=W.alloc(512),i=e.name,n="";if(e.typeflag===5&&i[i.length-1]!=="/"&&(i+="/"),W.byteLength(i)!==i.length)return null;for(;W.byteLength(i)>100;){let s=i.indexOf("/");if(s===-1)return null;n+=n?"/"+i.slice(0,s):i.slice(0,s),i=i.slice(s+1)}return W.byteLength(i)>100||W.byteLength(n)>155||e.linkname&&W.byteLength(e.linkname)>100?null:(W.write(r,i),W.write(r,Yt(e.mode&hB,6),100),W.write(r,Yt(e.uid,6),108),W.write(r,Yt(e.gid,6),116),bB(e.size,r,124),W.write(r,Yt(e.mtime.getTime()/1e3|0,11),136),r[156]=ea+yB(e.type),e.linkname&&W.write(r,e.linkname,157),W.copy(wE,r,Cn),W.copy(uB,r,fc),e.uname&&W.write(r,e.uname,265),e.gname&&W.write(r,e.gname,297),W.write(r,Yt(e.devmajor||0,6),329),W.write(r,Yt(e.devminor||0,6),337),n&&W.write(r,n,345),W.write(r,Yt(EE(r),6),148),r)};di.decode=function(e,r,i){let n=e[156]===0?0:e[156]-ea,s=hi(e,0,100,r),o=Vt(e,100,8),a=Vt(e,108,8),l=Vt(e,116,8),u=Vt(e,124,12),f=Vt(e,136,12),c=_B(n),h=e[157]===0?null:hi(e,157,100,r),d=hi(e,265,32),y=hi(e,297,32),p=Vt(e,329,8),S=Vt(e,337,8),m=EE(e);if(m===256)return null;if(m!==Vt(e,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(dB(e))e[345]&&(s=hi(e,345,155,r)+"/"+s);else if(!pB(e)){if(!i)throw new Error("Invalid tar header: unknown format.")}return n===0&&s&&s[s.length-1]==="/"&&(n=5),{name:s,mode:o,uid:a,gid:l,size:u,mtime:new Date(1e3*f),type:c,linkname:h,uname:d,gname:y,devmajor:p,devminor:S,pax:null}};function dB(t){return W.equals(wE,t.subarray(Cn,Cn+6))}function pB(t){return W.equals(fB,t.subarray(Cn,Cn+6))&&W.equals(cB,t.subarray(fc,fc+2))}function gB(t,e,r){return typeof t!="number"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)}function _B(t){switch(t){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null}function yB(t){switch(t){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0}function SE(t,e,r,i){for(;r<i;r++)if(t[r]===e)return r;return i}function EE(t){let e=256;for(let r=0;r<148;r++)e+=t[r];for(let r=156;r<512;r++)e+=t[r];return e}function Yt(t,e){return t=t.toString(8),t.length>e?lB.slice(0,e)+" ":aB.slice(0,e-t.length)+t+" "}function mB(t,e,r){e[r]=128;for(let i=11;i>0;i--)e[r+i]=t&255,t=Math.floor(t/256)}function bB(t,e,r){t.toString(8).length>11?mB(t,e,r):W.write(e,Yt(t,11),r)}function wB(t){let e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;let r=[],i;for(i=t.length-1;i>0;i--){let o=t[i];e?r.push(o):r.push(255-o)}let n=0,s=r.length;for(i=0;i<s;i++)n+=r[i]*Math.pow(256,i);return e?n:-1*n}function Vt(t,e,r){if(t=t.subarray(e,e+r),e=0,t[e]&128)return wB(t);{for(;e<t.length&&t[e]===32;)e++;let i=gB(SE(t,32,e,t.length),t.length,t.length);for(;e<i&&t[e]===0;)e++;return i===e?0:parseInt(W.toString(t.subarray(e,i)),8)}}function hi(t,e,r,i){return W.toString(t.subarray(e,SE(t,0,e,e+r)),i)}function uc(t){let e=W.byteLength(t),r=Math.floor(Math.log(e)/Math.log(10))+1;return e+r>=Math.pow(10,r)&&r++,e+r+t}});var AE=g((Y6,RE)=>{"use strict";var{Writable:SB,Readable:EB,getStreamError:vE}=lc(),vB=$f(),xE=Jo(),pi=cc(),xB=xE.alloc(0),dc=class{constructor(){this.buffered=0,this.shifted=0,this.queue=new vB,this._offset=0}push(e){this.buffered+=e.byteLength,this.queue.push(e)}shiftFirst(e){return this._buffered===0?null:this._next(e)}shift(e){if(e>this.buffered)return null;if(e===0)return xB;let r=this._next(e);if(e===r.byteLength)return r;let i=[r];for(;(e-=r.byteLength)>0;)r=this._next(e),i.push(r);return xE.concat(i)}_next(e){let r=this.queue.peek(),i=r.byteLength-this._offset;if(e>=i){let n=this._offset?r.subarray(this._offset,r.byteLength):r;return this.queue.shift(),this._offset=0,this.buffered-=i,this.shifted+=i,n}return this.buffered-=e,this.shifted+=e,r.subarray(this._offset,this._offset+=e)}},pc=class extends EB{constructor(e,r,i){super(),this.header=r,this.offset=i,this._parent=e}_read(e){this.header.size===0&&this.push(null),this._parent._stream===this&&this._parent._update(),e(null)}_predestroy(){this._parent.destroy(vE(this))}_detach(){this._parent._stream===this&&(this._parent._stream=null,this._parent._missing=TE(this.header.size),this._parent._update())}_destroy(e){this._detach(),e(null)}},gc=class extends SB{constructor(e){super(e),e||(e={}),this._buffer=new dc,this._offset=0,this._header=null,this._stream=null,this._missing=0,this._longHeader=!1,this._callback=hc,this._locked=!1,this._finished=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null,this._filenameEncoding=e.filenameEncoding||"utf-8",this._allowUnknownFormat=!!e.allowUnknownFormat,this._unlockBound=this._unlock.bind(this)}_unlock(e){if(this._locked=!1,e){this.destroy(e),this._continueWrite(e);return}this._update()}_consumeHeader(){if(this._locked)return!1;this._offset=this._buffer.shifted;try{this._header=pi.decode(this._buffer.shift(512),this._filenameEncoding,this._allowUnknownFormat)}catch(e){return this._continueWrite(e),!1}if(!this._header)return!0;switch(this._header.type){case"gnu-long-path":case"gnu-long-link-path":case"pax-global-header":case"pax-header":return this._longHeader=!0,this._missing=this._header.size,!0}return this._locked=!0,this._applyLongHeaders(),this._header.size===0||this._header.type==="directory"?(this.emit("entry",this._header,this._createStream(),this._unlockBound),!0):(this._stream=this._createStream(),this._missing=this._header.size,this.emit("entry",this._header,this._stream,this._unlockBound),!0)}_applyLongHeaders(){this._gnuLongPath&&(this._header.name=this._gnuLongPath,this._gnuLongPath=null),this._gnuLongLinkPath&&(this._header.linkname=this._gnuLongLinkPath,this._gnuLongLinkPath=null),this._pax&&(this._pax.path&&(this._header.name=this._pax.path),this._pax.linkpath&&(this._header.linkname=this._pax.linkpath),this._pax.size&&(this._header.size=parseInt(this._pax.size,10)),this._header.pax=this._pax,this._pax=null)}_decodeLongHeader(e){switch(this._header.type){case"gnu-long-path":this._gnuLongPath=pi.decodeLongPath(e,this._filenameEncoding);break;case"gnu-long-link-path":this._gnuLongLinkPath=pi.decodeLongPath(e,this._filenameEncoding);break;case"pax-global-header":this._paxGlobal=pi.decodePax(e);break;case"pax-header":this._pax=this._paxGlobal===null?pi.decodePax(e):Object.assign({},this._paxGlobal,pi.decodePax(e));break}}_consumeLongHeader(){this._longHeader=!1,this._missing=TE(this._header.size);let e=this._buffer.shift(this._header.size);try{this._decodeLongHeader(e)}catch(r){return this._continueWrite(r),!1}return!0}_consumeStream(){let e=this._buffer.shiftFirst(this._missing);if(e===null)return!1;this._missing-=e.byteLength;let r=this._stream.push(e);return this._missing===0?(this._stream.push(null),r&&this._stream._detach(),r&&this._locked===!1):r}_createStream(){return new pc(this,this._header,this._offset)}_update(){for(;this._buffer.buffered>0&&!this.destroying;){if(this._missing>0){if(this._stream!==null){if(this._consumeStream()===!1)return;continue}if(this._longHeader===!0){if(this._missing>this._buffer.buffered)break;if(this._consumeLongHeader()===!1)return!1;continue}let e=this._buffer.shiftFirst(this._missing);e!==null&&(this._missing-=e.byteLength);continue}if(this._buffer.buffered<512)break;if(this._stream!==null||this._consumeHeader()===!1)return}this._continueWrite(null)}_continueWrite(e){let r=this._callback;this._callback=hc,r(e)}_write(e,r){this._callback=r,this._buffer.push(e),this._update()}_final(e){this._finished=this._missing===0&&this._buffer.buffered===0,e(this._finished?null:new Error("Unexpected end of data"))}_predestroy(){this._continueWrite(null)}_destroy(e){this._stream&&this._stream.destroy(vE(this)),e(null)}[Symbol.asyncIterator](){let e=null,r=null,i=null,n=null,s=null,o=this;return this.on("entry",u),this.on("error",h=>{e=h}),this.on("close",f),{[Symbol.asyncIterator](){return this},next(){return new Promise(l)},return(){return c(null)},throw(h){return c(h)}};function a(h){if(!s)return;let d=s;s=null,d(h)}function l(h,d){if(e)return d(e);if(n){h({value:n,done:!1}),n=null;return}r=h,i=d,a(null),o._finished&&r&&(r({value:void 0,done:!0}),r=i=null)}function u(h,d,y){s=y,d.on("error",hc),r?(r({value:d,done:!1}),r=i=null):n=d}function f(){a(e),r&&(e?i(e):r({value:void 0,done:!0}),r=i=null)}function c(h){return o.destroy(h),a(h),new Promise((d,y)=>{if(o.destroyed)return d({value:void 0,done:!0});o.once("close",function(){h?y(h):d({value:void 0,done:!0})})})}}};RE.exports=function(e){return new gc(e)};function hc(){}function TE(t){return t&=511,t&&512-t}});var IE=g((K6,_c)=>{"use strict";var OE={S_IFMT:61440,S_IFDIR:16384,S_IFCHR:8192,S_IFBLK:24576,S_IFIFO:4096,S_IFLNK:40960};try{_c.exports=L("fs").constants||OE}catch{_c.exports=OE}});var CE=g((Z6,NE)=>{"use strict";var{Readable:TB,Writable:RB,getStreamError:DE}=lc(),Sr=Jo(),gi=IE(),ta=cc(),AB=493,OB=420,LE=Sr.alloc(1024),mc=class extends RB{constructor(e,r,i){super({mapWritable:DB,eagerOpen:!0}),this.written=0,this.header=r,this._callback=i,this._linkname=null,this._isLinkname=r.type==="symlink"&&!r.linkname,this._isVoid=r.type!=="file"&&r.type!=="contiguous-file",this._finished=!1,this._pack=e,this._openCallback=null,this._pack._stream===null?this._pack._stream=this:this._pack._pending.push(this)}_open(e){this._openCallback=e,this._pack._stream===this&&this._continueOpen()}_continuePack(e){if(this._callback===null)return;let r=this._callback;this._callback=null,r(e)}_continueOpen(){this._pack._stream===null&&(this._pack._stream=this);let e=this._openCallback;if(this._openCallback=null,e!==null){if(this._pack.destroying)return e(new Error("pack stream destroyed"));if(this._pack._finalized)return e(new Error("pack stream is already finalized"));this._pack._stream=this,this._isLinkname||this._pack._encode(this.header),this._isVoid&&(this._finish(),this._continuePack(null)),e(null)}}_write(e,r){if(this._isLinkname)return this._linkname=this._linkname?Sr.concat([this._linkname,e]):e,r(null);if(this._isVoid)return e.byteLength>0?r(new Error("No body allowed for this entry")):r();if(this.written+=e.byteLength,this._pack.push(e))return r();this._pack._drain=r}_finish(){this._finished||(this._finished=!0,this._isLinkname&&(this.header.linkname=this._linkname?Sr.toString(this._linkname,"utf-8"):"",this._pack._encode(this.header)),PE(this._pack,this.header.size),this._pack._done(this))}_final(e){if(this.written!==this.header.size)return e(new Error("Size mismatch"));this._finish(),e(null)}_getError(){return DE(this)||new Error("tar entry destroyed")}_predestroy(){this._pack.destroy(this._getError())}_destroy(e){this._pack._done(this),this._continuePack(this._finished?null:this._getError()),e()}},bc=class extends TB{constructor(e){super(e),this._drain=yc,this._finalized=!1,this._finalizing=!1,this._pending=[],this._stream=null}entry(e,r,i){if(this._finalized||this.destroying)throw new Error("already finalized or destroyed");typeof r=="function"&&(i=r,r=null),i||(i=yc),(!e.size||e.type==="symlink")&&(e.size=0),e.type||(e.type=IB(e.mode)),e.mode||(e.mode=e.type==="directory"?AB:OB),e.uid||(e.uid=0),e.gid||(e.gid=0),e.mtime||(e.mtime=new Date),typeof r=="string"&&(r=Sr.from(r));let n=new mc(this,e,i);return Sr.isBuffer(r)?(e.size=r.byteLength,n.write(r),n.end(),n):(n._isVoid,n)}finalize(){if(this._stream||this._pending.length>0){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(LE),this.push(null))}_done(e){e===this._stream&&(this._stream=null,this._finalizing&&this.finalize(),this._pending.length&&this._pending.shift()._continueOpen())}_encode(e){if(!e.pax){let r=ta.encode(e);if(r){this.push(r);return}}this._encodePax(e)}_encodePax(e){let r=ta.encodePax({name:e.name,linkname:e.linkname,pax:e.pax}),i={name:"PaxHeader",mode:e.mode,uid:e.uid,gid:e.gid,size:r.byteLength,mtime:e.mtime,type:"pax-header",linkname:e.linkname&&"PaxHeader",uname:e.uname,gname:e.gname,devmajor:e.devmajor,devminor:e.devminor};this.push(ta.encode(i)),this.push(r),PE(this,r.byteLength),i.size=e.size,i.type=e.type,this.push(ta.encode(i))}_doDrain(){let e=this._drain;this._drain=yc,e()}_predestroy(){let e=DE(this);for(this._stream&&this._stream.destroy(e);this._pending.length;){let r=this._pending.shift();r.destroy(e),r._continueOpen()}this._doDrain()}_read(e){this._doDrain(),e()}};NE.exports=function(e){return new bc(e)};function IB(t){switch(t&gi.S_IFMT){case gi.S_IFBLK:return"block-device";case gi.S_IFCHR:return"character-device";case gi.S_IFDIR:return"directory";case gi.S_IFIFO:return"fifo";case gi.S_IFLNK:return"symlink"}return"file"}function yc(){}function PE(t,e){e&=511,e&&t.push(LE.subarray(0,512-e))}function DB(t){return Sr.isBuffer(t)?t:Sr.from(t)}});var kE=g(wc=>{"use strict";wc.extract=AE();wc.pack=CE()});var FE=g((X6,qE)=>{"use strict";var LB=L("zlib"),PB=kE(),ME=oi(),Tt=function(t){if(!(this instanceof Tt))return new Tt(t);t=this.options=ME.defaults(t,{gzip:!1}),typeof t.gzipOptions!="object"&&(t.gzipOptions={}),this.supports={directory:!0,symlink:!0},this.engine=PB.pack(t),this.compressor=!1,t.gzip&&(this.compressor=LB.createGzip(t.gzipOptions),this.compressor.on("error",this._onCompressorError.bind(this)))};Tt.prototype._onCompressorError=function(t){this.engine.emit("error",t)};Tt.prototype.append=function(t,e,r){var i=this;e.mtime=e.date;function n(o,a){if(o){r(o);return}i.engine.entry(e,a,function(l){r(l,e)})}if(e.sourceType==="buffer")n(null,t);else if(e.sourceType==="stream"&&e.stats){e.size=e.stats.size;var s=i.engine.entry(e,function(o){r(o,e)});t.pipe(s)}else e.sourceType==="stream"&&ME.collectStream(t,n)};Tt.prototype.finalize=function(){this.engine.finalize()};Tt.prototype.on=function(){return this.engine.on.apply(this.engine,arguments)};Tt.prototype.pipe=function(t,e){return this.compressor?this.engine.pipe.apply(this.engine,[this.compressor]).pipe(t,e):this.engine.pipe.apply(this.engine,arguments)};Tt.prototype.unpipe=function(){return this.compressor?this.compressor.unpipe.apply(this.compressor,arguments):this.engine.unpipe.apply(this.engine,arguments)};qE.exports=Tt});var UE=g((J6,BE)=>{"use strict";function NB(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var CB=new Int32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);function jE(t){if(Buffer.isBuffer(t))return t;if(typeof t=="number")return Buffer.alloc(t);if(typeof t=="string")return Buffer.from(t);throw new Error("input must be buffer, number, or string, received "+typeof t)}function kB(t){let e=jE(4);return e.writeInt32BE(t,0),e}function Sc(t,e){t=jE(t),Buffer.isBuffer(e)&&(e=e.readUInt32BE(0));let r=~~e^-1;for(var i=0;i<t.length;i++)r=CB[(r^t[i])&255]^r>>>8;return r^-1}function Ec(){return kB(Sc.apply(null,arguments))}Ec.signed=function(){return Sc.apply(null,arguments)};Ec.unsigned=function(){return Sc.apply(null,arguments)>>>0};var MB=Ec,qB=NB(MB);BE.exports=qB});var $E=g((e8,GE)=>{"use strict";var FB=L("util").inherits,WE=dr().Transform,jB=UE(),zE=oi(),Kt=function(t){if(!(this instanceof Kt))return new Kt(t);t=this.options=zE.defaults(t,{}),WE.call(this,t),this.supports={directory:!0,symlink:!0},this.files=[]};FB(Kt,WE);Kt.prototype._transform=function(t,e,r){r(null,t)};Kt.prototype._writeStringified=function(){var t=JSON.stringify(this.files);this.write(t)};Kt.prototype.append=function(t,e,r){var i=this;e.crc32=0;function n(s,o){if(s){r(s);return}e.size=o.length||0,e.crc32=jB.unsigned(o),i.files.push(e),r(null,e)}e.sourceType==="buffer"?n(null,t):e.sourceType==="stream"&&zE.collectStream(t,n)};Kt.prototype.finalize=function(){this._writeStringified(),this.end()};GE.exports=Kt});var VE=g((t8,HE)=>{"use strict";var BB=rS(),kn={},Zt=function(t,e){return Zt.create(t,e)};Zt.create=function(t,e){if(kn[t]){var r=new BB(t,e);return r.setFormat(t),r.setModule(new kn[t](e)),r}else throw new Error("create("+t+"): format not registered")};Zt.registerFormat=function(t,e){if(kn[t])throw new Error("register("+t+"): format already registered");if(typeof e!="function")throw new Error("register("+t+"): format module invalid");if(typeof e.prototype.append!="function"||typeof e.prototype.finalize!="function")throw new Error("register("+t+"): format module missing methods");kn[t]=e};Zt.isRegisteredFormat=function(t){return!!kn[t]};Zt.registerFormat("zip",CS());Zt.registerFormat("tar",FE());Zt.registerFormat("json",$E());HE.exports=Zt});import{readFileSync as VB,existsSync as QE,readdirSync as YB,mkdirSync as KB,writeFileSync as xc}from"fs";import{unlink as ZB}from"fs/promises";import{join as Qt}from"path";import{randomUUID as Er}from"crypto";function Pc(t){return t?t.includes(`
|
|
12
12
|
`)?t.split(`
|
|
13
|
-
`).map(e=>e.trim()).filter(Boolean):t.split(". ").map(e=>e.trim()).filter(Boolean).map(e=>e.endsWith(".")?e:e+"."):[]}function Mn(t,e){return!t||!e?t:t.replace(/\{\{(.+?)\}\}/g,(r,i)=>{let n=e[i];return n?n.value:r}).replace(/\$\{(.+?)\}/g,(r,i)=>{let n=e[i];return n?n.value:r})}var iv={click:"CLICK",double_click:"CLICK",type:"TYPE",fill:"TYPE",select:"SELECT",hover:"HOVER",drag:"DRAG_DROP",upload_files:"UPLOAD",navigate:"OPEN",go_back:"NAVIGATE",go_forward:"NAVIGATE",refresh:"REFRESH",press_key:"SENDKEYS",scroll:"SCROLL_PIXELS",scroll_into_view:"SCROLL_UNTIL_ELEMENT",wait:"WAIT",wait_until:"WAIT_UNTIL",wait_for_load:"WAIT_FOR_LOAD",switch_tab:"SWITCH_TAB",new_tab:"NEW_TAB",close_tab:"CLOSE_TAB",api:"API",evaluate_js:"EVALUATE_JS",vision_query:"VISION_QUERY",textual_query:"TEXTUAL_QUERY",get_url:"GET_URL",get_title:"GET_TITLE",assert:"ASSERTION",math:"MATHEMATICAL_OPERATION",set_cookies:"SET_COOKIES",delete_cookies:"DELETE_COOKIES",clear_cookies:"CLEAR_COOKIES",set_local_storage:"SET_LOCAL_STORAGE",delete_local_storage:"DELETE_LOCAL_STORAGE",clear_local_storage:"CLEAR_LOCAL_STORAGE",set_clipboard:"SET_CLIPBOARD",paste_clipboard:"PASTE_CLIPBOARD",clear_clipboard:"CLEAR_CLIPBOARD"},Nc={literal:"SET_VARIABLE",visual:"VISION_QUERY",dom:"TEXTUAL_QUERY",url:"GET_URL",title:"GET_TITLE",devtool_network:"DEVTOOLS_NETWORK_QUERY",devtool_console:"DEVTOOLS_CONSOLE_QUERY",devtool_cookies:"DEVTOOLS_COOKIES_QUERY",devtool_storage:"DEVTOOLS_STORAGE_QUERY",devtool_performance:"DEVTOOLS_PERFORMANCE",api_response:"API_CALLS_QUERY"},nv=new Set(["CLICK","TYPE","FILL","HOVER","SCROLL_UNTIL_ELEMENT","UPLOAD","VISION_QUERY","DRAG_DROP","SELECT"]);function Cc(t,e){if(t==="analyze"){let i=e?.action_params?.analyzer_type??"";return Nc[i]}let r=iv[t];return r||console.warn(`[migrator] UNKNOWN action_type "${t}" \u2014 falling back to "${t.toUpperCase()}"; explicit mapping required`),r??t.toUpperCase()}function kc(t,e){if(!t||!e)return"";try{let r=new Date(t);return isNaN(r.getTime())?"":new Date(r.getTime()+e).toISOString()}catch{return""}}function Mc(t){try{return JSON.parse(t.output_value??"{}")}catch{return{}}}function sv(t){let e=t.output_variable??"";if(!e)return"[]";let i={...Mc(t)};return delete i.body,JSON.stringify([{name:e,unique_key:(t.action_id??"").replace(/-/g,"").slice(0,8)||Er().replace(/-/g,"").slice(0,8),value:i,variable_description:"API Response"}])}function ov(t,e,r){let i=t.action_params??{},n=nv.has(e)?"Vision Agent":"Operation Agent",s={operation_type:e};e==="OPEN"&&(s.url=i.url??""),e==="SET_VARIABLE"&&(s.variable_name=t.output_variable??i.key??"",s.variable_value=t.output_value??"");let o={},a={},l=t.action_instruction??"",u=i.text??"",f=i.url??"",c=[["intent",l],["value",u],["url",f]];for(let[S,m]of Object.entries(r)){let b=String(m);if(S.startsWith("secrets."))for(let[v,E]of c)E.includes(b)&&(a[v]=S);for(let[v,E]of c)E.includes(b)&&!(v in o)&&(o[v]=E)}let h=t.action_type,d={operation:t.action_instruction??"",agent:n,operation_dict:s,reasoning:h==="analyze"?i.query??"":t.intent??t.action_instruction??"",variable:o,secrets:a,params:{}};h==="analyze"&&typeof i.code=="string"&&i.code&&(d.code=i.code),h==="analyze"&&typeof i.code_js=="string"&&i.code_js&&(d.code_js=i.code_js);let p={set_cookies:"cookies",set_clipboard:"text",delete_cookies:"names",set_local_storage:"items",delete_local_storage:"keys"}[h];return p&&i[p]!==void 0&&(d[p]=i[p]),h==="set_clipboard"&&typeof i.html=="string"&&i.html&&(d.html=i.html),d}function av(t){let e=t.assertion_tree??{};if(typeof e.passed=="boolean")return e.passed;let r=e.sub_results??[];return r.length===0?e.status==="passed":(e.composite_operator??"and")==="or"?r.some(n=>n.passed===!0):r.every(n=>n.passed===!0)}function qc(t){return t.map(e=>({description:e.description??"",store_key:e.store_key??"",expected_value:e.expected??"",extracted_value:e.extracted_value??"",operator:e.operator??"equals",transforms:e.transforms??[]}))}function lv(t){let e=t.assertion_tree??{},r=e.sub_results??[],i=qc(r);return{operator:[],assertion_operands:[],left_operand:null,right_operand:null,operands:[],sub_results:r,sub_checks:i,composite_operator:e.composite_operator??"and",verification:e.verification??"",claim:e.description??""}}function uv(t){let r=(t.action_params??{}).assertion_tree??{},i=r.sub_results??[],n=qc(i);return[{operation:t.action_instruction??"",agent:"Operation Agent",operation_dict:{operation_type:"ASSERTION",assertion_tree:{sub_results:i,sub_checks:n,composite_operator:r.composite_operator??"and",verification:"",claim:r.description??t.action_instruction??"",operator:[],assertion_operands:[],left_operand:null,right_operand:null,operands:[]}},variable:{},secrets:{},params:{}}]}function fv(t,e,r,i){let n=t.visual_data;if(!n||n.x==null||n.y==null)return null;let s=e?`${e}/test_screenshots`:"";return{x:n.x,y:n.y,confidence:0,bbox:n.bbox??null,bbox_source:n.bbox?"accessibility_tree":"fallback",viewport_width:n.viewport_width??1280,viewport_height:n.viewport_height??800,scale_factor:null,raw_image_url:s?`${s}/untagged_screenshot/${r}.${i?.get(r)??"png"}`:"",raw_image_sas_url:"",annotated_image_url:"",annotated_image_sas_url:""}}function Dc(t,e={},r="",i){let n=t.action_type,s=Cc(n,t),o=t.action_params??{},a=t.coordinates??null,l=t.selectors??null,u=!!(l&&l.length>0),f=t.timestamp??"",c=t.duration_ms??0,h=t.variables_used??{},d=t.action_id??Er(),y=Er(),p=kc(f,c),S="",m="";n==="navigate"?(m=o.url??"",S=m):n==="type"||n==="fill"?S=o.text??"":n==="press_key"?S=o.key??"":n==="wait"?S=String(o.ms??o.timeout_ms??""):n==="evaluate_js"?S=o.script??"":n==="analyze"&&(o.analyzer_type??"")==="literal"&&(S=t.output_value??"");let b="";n==="go_back"?b="back":n==="go_forward"&&(b="forward");let v=Mn(S,e),E=Mn(m,e),T=Mn(t.action_instruction??"",e),D=ov(t,s,h);return{operation_id:d,instruction_id:y,instruction:T,intent:T,operation_start:f,operation_end:p,status:t.status??"",command:s,name:"",target:"",value:v,message:"",operation_dict:"",frame:t.frame_info?JSON.stringify(t.frame_info):"",error_message:t.error??"",code_snippet:"",sub_instruction_obj:JSON.stringify(D),test_id:"",test_version:"",action:"",string_to_float:!1,feedback_msg:"",time_taken:"",create_time_stamp:"",update_time_stamp:"",locator_variable:"",locator_variable_name:"",image_url:r?`${r}/test_screenshots/untagged_screenshot/${d}.${i?.get(d)??"png"}`:"",alternative_xpaths:[],attribute:"",value_description:"",url:E,navigation_direction:b,tagified_image_url:"",query_variable_name:t.output_variable??"",query_variable_value:t.output_value??"",query_variable_type:"",expected_value:"",queried_value:"",operator:"",assertion_status:s==="ASSERTION"?av(o):"",query_info_dict:{},query_content_confidence:"none",debugging_logs:[],locator_index:0,query_html:"",user_variables:"[]",optional_flag:!1,max_retries:0,retries_delay:0,explicit_wait:0,implicit_wait:0,tab_index:String(o.tab_index??""),tab_identifier:String(o.tab_identifier??""),scroll_value:o.amount??1,scroll_direction:o.direction??"",mi_scroll_payload:{},sleep_duration:0,app_id:"",manual_interaction_tag:"",string_to_float_list:[],js_snippet:n==="evaluate_js"?o.script??"":"",code_error:"",hide:!1,dismiss_dialog:!1,use_v2_mobile_tagging:!1,multiple_inputs:!1,dialog_action:"",dialog_type:"",is_coordinates_used_for_interaction:a!==null&&!u,element_coordinates_ratio:[],element_bounds_ratio:[],x_coord:u?null:a?.x??null,y_coord:u?null:a?.y??null,target_x_coord:o.target_x??null,target_y_coord:o.target_y??null,source_description:o.source_description??null,target_description:o.target_description??null,use_coordinates:a!==null&&!u,kaneaiMobileTaggingImageLimit:1,clicks_order_code:"se_js_ac",selector:u?l.map(x=>({type:x.isXPath?"xpath":"css",...x})):"",selector_target:"",math_result_variable_name:"",math_result_variable_value:"",expression_tree:s==="ASSERTION"?lv(o):o.expression_tree??{},assertion_tree:o.assertion_tree??{},assertion_tree_simplified:{},network_throttle:{},is_mobile_offline:!1,autoheal:!1,db_query:"",db_details:{},db_query_decoded:"",is_global_variable:!1,is_global_variable_persist:!1,global_variable_id:"",wait_for_element_timeout:0,failure_condition:s==="ASSERTION"?"Fail test immediately":"",screenshot_command:"",smartui_contents:{},smartui_results:{},result_type:"",result_hint:"",drag_offset:{},start_coordinates:o.source_coordinates?{x:o.source_coordinates[0],y:o.source_coordinates[1]}:{},end_coordinates:o.target_coordinates?{x:o.target_coordinates[0],y:o.target_coordinates[1]}:{},element_rect:null,is_canvas:!1,until_condition:"",until_max_retries:0,until_settle_ms:0,api_data:n==="api"?{request:t.action_params?.api_data?.request??{}}:{},output_variables:n==="api"?t.output_variable?{[t.output_variable]:null}:{}:t.output_variable?{[t.output_variable]:t.output_value??""}:{},visual_context:fv(t,r,d,i),reasoning:n==="analyze"?o.query??"":t.intent??t.action_instruction??""}}function Lc(t,e,r={}){let i=t.action_type,n=Cc(i,t),s=t.timestamp??"",o=t.duration_ms??0,a=kc(s,o),l=n==="ASSERTION"||n==="MATHEMATICAL_OPERATION";return{instruction_id:e.instruction_id,instruction_class:l?"non_driver_action":"driver_action",module_id:"",instruction:Mn(t.action_instruction??"",r),command:n,error:null,parent_instruction_id:"",classification_layer_resp:n==="ASSERTION"?uv(t):[],classification_error:{},operations:[e],status:t.status??"",start_timestamp:s,end_timestamp:a,type:"agent_generated",tags:[],html_paths:[],optional_flag:!1,max_retries:0,retries_delay:0,explicit_wait:0,implicit_wait:0,content_type:i==="api"?"api":i==="analyze"&&t.action_params?.analyzer_type==="api_response"?"api_calls_query":i==="analyze"&&t.action_params?.analyzer_type?.startsWith("devtool_")?t.action_params.analyzer_type.replace("devtool_","devtools_"):"instruction",js_snippet:i==="evaluate_js"?t.action_params?.script??"":"",user_variables:i==="api"?sv(t):"[]",api_data:i==="api"?{request:t.action_params?.api_data?.request??{},response:Mc(t)}:{},params_used:!1,hard_assertion:n==="ASSERTION"?t.action_params?.failure_condition==="hard":!1,expected_outcome:"",module_execution_index:0,module_version:null,network_throttle:{},isEdited:!1,use_query_assertion_v2:!1,db_query:"",db_details:{},network_assertion_content:{},screenshot_command:"",smartui_contents:{},generative_id:"",plan_id:"",generative_objective:"",error_message:"",error_code:"",reason:"",title:"",used_variables:[],reasoning:i==="analyze"?t.action_params?.query??"":t.intent??t.action_instruction??""}}function cv(t,e=[]){let r=t.action_params??{},i=r.branches??[],n=r.winning_index??-1,s=r.sub_results??[],o={};for(let l of s){let u=l.sub_results;if(u)for(let f of u){let c=f.store_key;c&&(o[c]=f)}}let a=i.map((l,u)=>{let f=u===n,c=(l.sub_checks??[]).map(h=>{let d=o[h.store_key];return{description:h.description,store_key:h.store_key,expected_value:h.expected_value,stored_value:d?.extracted_value??h.stored_value,operator:h.operator??d?.operator??"equals",transforms:h.transforms??d?.transforms??[]}});if(c.length===0&&l.condition&&s.length>0){let d=s.find(y=>y.branch_index===u)?.sub_results??[];d.length>0&&(c=d.map(y=>({description:y.description??l.condition,store_key:y.store_key??"",expected_value:y.expected??"true",stored_value:y.extracted_value??void 0,operator:y.operator??"equals",transforms:y.transforms??[]})))}return{branch_index:u,condition:l.condition??null,branch_type:l.branch_type??"sub_objective",passed:f,sub_objective:null,custom_event:l.custom_event??null,children:f?e:[],sub_checks:l.condition?c:[],composite_operator:l.composite_operator??"and"}});return{content_type:"conditional_block",instruction_id:`if_else_${Er().slice(0,8)}`,instruction:t.action_instruction??"",instruction_class:"driver_action",command:"",status:t.status??"success",resolved_branch_index:n,branches:a,generative_id:"",generative_objective:"",variables_used:{},classification_layer_resp:[],classification_error:{},used_variables:[],user_variables:"[]",module_id:"",module_execution_index:0,module_version:"",plan_id:"",optional_flag:!1,max_retries:0,retries_delay:0,explicit_wait:0,implicit_wait:0,error:null,error_message:"",error_code:"",reason:"",start_timestamp:t.timestamp??"",end_timestamp:"",type:"agent_generated",hook:null,hook_type:null,evaluation_context:{},query_variables:{}}}function Fc(t,e,r){for(let i of t)i.content_type==="instruction"&&"generative_id"in i&&(i.generative_id=e,i.generative_objective=r)}function ra(t,e={},r="",i){let n=[],s=0;for(;s<t.length;){let o=t[s],a=o.action_type;if(o.status==="error"&&a!=="assert"&&a!=="if_else"&&a!=="child_agent_start"&&a!=="child_agent_end"&&!(o.until_condition&&!o.error)){s+=1;continue}if(a==="analyze"&&!Nc[o.action_params?.analyzer_type??""]){s+=1;continue}if(a==="child_agent_start"){let l=o.action_params?.child_id??"",u=o.action_params?.objective??"",f=[];s+=1;let c=1,h="error",d;for(;s<t.length&&c>0;){let T=t[s],D=T.action_type;if(D==="child_agent_start")c+=1;else if(D==="child_agent_end"&&(c-=1,c===0)){h=T.status??"success",d=T,s+=1;break}c>0&&f.push(T),s+=1}let y=ra(f,e,r,i);Fc(y,l,u);let p=d?.action_params?.result_code??null,S=d?.action_params?.reason_code??null,m=d?.action_params?.error_message??null,b=d?.action_params?.summary??null,v=d?.action_params?.one_liner??null,E=h==="error";n.push({content_type:"generative_block",instruction_id:`generative_block_${l}`,generative_id:l,objective:u,status:h,children:y,error_message:E?m??null:null,error_code:E?S??null:null,result_code:p??null,bifurcation_context:[],approach_reason:Pc(b),one_liner:v??null});continue}else if(a==="child_agent_end"){s+=1;continue}else if(a==="if_else"){s+=1;let l=[];for(;s<t.length&&t[s].action_type==="child_agent_start";){let u=t[s],f=u.action_params?.child_id??"",c=u.action_params?.objective??"",h=[];s+=1;let d=1,y="error";for(;s<t.length&&d>0;){let S=t[s];if(S.action_type==="child_agent_start")d+=1;else if(S.action_type==="child_agent_end"&&(d-=1,d===0)){y=S.status??"success",s+=1;break}d>0&&h.push(S),s+=1}let p=ra(h,e,r,i);l.push(...p)}n.push(cv(o,l));continue}else if(a==="query_tool"){s+=1;continue}else if(o.until_condition){let l=Dc(o,e,r,i),u=Lc(o,l,e),f=typeof o.until_condition_met=="boolean"?o.until_condition_met:o.status==="success";n.push({content_type:"until_block",instruction_id:`until_${Er().slice(0,8)}`,condition:o.until_condition,max_retries:o.until_max_retries??10,settle_ms:o.until_settle_ms??500,current_count:0,condition_met:f,children:[u],generative_id:"",generative_objective:"",variables_used:{},status:o.status??"success"})}else{let l=Dc(o,e,r,i),u=Lc(o,l,e);n.push(u)}s+=1}return n}function ia(t,e={},r="",i){let n=[];for(let s of t){let o=ra(s.records,e,r,i);if(o.length===0)continue;let a=Er().replace(/-/g,"");Fc(o,a,s.objective);let l=o.some(h=>"status"in h&&typeof h.status=="string"?h.status==="error"||h.status==="failed":!1),u=s.resultCode?parseInt(s.resultCode,10):null,f=u!==null&&!isNaN(u)&&u>=200,c=l||f?"error":"success";n.push({content_type:"generative_block",instruction_id:`generative_block_${a}`,generative_id:a,objective:s.objective,status:c,children:o,error_message:c==="error"?s.errorMessage??null:null,error_code:c==="error"?s.reasonCode??null:null,result_code:s.resultCode??null,bifurcation_context:[],approach_reason:Pc(s.summary),one_liner:s.oneLiner??null})}return{instructions:n}}var YE=tv(VE(),1);import{createWriteStream as UB}from"fs";import{readFile as WB}from"fs/promises";import{join as zB,basename as GB}from"path";import{tmpdir as $B}from"os";var HB=["**/screenshots/**","**/annotated/**","**/tcg/**","**/bifurcation/**"];async function KE(t){let e=zB($B(),`${GB(t)}_artifacts.zip`);return new Promise((r,i)=>{let n=UB(e),s=(0,YE.default)("zip",{zlib:{level:6}});n.on("close",()=>r(e)),s.on("error",i),s.pipe(n),s.glob("**/*",{cwd:t,ignore:HB}),s.finalize()})}async function ZE(t){return WB(t)}async function vc(t,e,r){let i=await Xt(t,{method:"PUT",headers:{"Content-Type":r,"x-ms-blob-type":"BlockBlob"},body:new Uint8Array(e)});if(!i.ok)throw new Error(`Azure upload failed: ${i.status} ${await i.text()}`)}var XE=class{config;controller;testId;constructor(e){this.config=e,this.controller=new Ac(e.controllerBaseUrl,e.auth),this.testId=e.testId}log(e,r,i,n){this.config.log?.(e,r,i,n)}async execute(){let{onProgress:e}=this.config;try{if(!this.testId)return this.log("error","PIPELINE_ABORT","No test_id available"),{success:!1,testId:null,error:"No test_id available"};if(this.config.shouldUploadArtifacts!==!1){e("convert","running");let s=this.collectNdjsonPerRun(),o=s.reduce((p,S)=>p+S.records.length,0);this.log("info","PIPELINE_CONVERT","Collected NDJSON records",{total_records:o,run_groups:s.length});let a=this.config.variables??{};this.log("info","PIPELINE_CONVERT_VARS","Variables for template resolution",{keys:Object.keys(a)});let{instructions:l}=s.length>0?ia(s,a,this.config.screenshotBaseUrl??"",this.config.screenshotExtMap):{instructions:[]};this.log("info","PIPELINE_CONVERT_INSTRUCTIONS","Auteur instructions produced",{count:l.length});let u=this.buildExecutionEnvelope(l),f=Buffer.from(JSON.stringify(u));this.log("info","PIPELINE_CONVERT_BLOB","Blob created",{size_kb:+(f.length/1024).toFixed(1)});let c=Qt(this.config.sessionDir,"execution.json");xc(c,JSON.stringify(u,null,2)),this.log("info","PIPELINE_CONVERT_LOCAL_SAVE","Execution blob saved locally",{path:c}),e("convert","done"),e("zip","running"),this.log("info","PIPELINE_ZIP_START","Zipping session",{session_dir:this.config.sessionDir});let h=null,d;try{h=await KE(this.config.sessionDir),d=await ZE(h),this.log("info","PIPELINE_ZIP_DONE","Zip complete",{size_mb:+(d.length/1024/1024).toFixed(1),path:h}),e("zip","done",`${(d.length/1024/1024).toFixed(1)}MB`)}finally{h&&await ZB(h).catch(()=>{})}e("presign","running"),this.log("info","PIPELINE_PRESIGN_START","Requesting presigned URLs",{url:`${this.config.controllerBaseUrl}/upload/presign`,test_id:this.testId,session_id:this.config.sessionId});let y=await this.controller.getPresignedUrls(this.testId,this.config.sessionId,[{key:"artifacts",content_type:"application/zip",filename:`${this.config.sessionId}_artifacts.zip`},{key:"blob",content_type:"application/json",filename:`${this.config.commitId}.json`}]);this.log("info","PIPELINE_PRESIGN_OK","Presigned URLs received",{artifacts_url:y.urls.artifacts?.blob_url,blob_url:y.urls.blob?.blob_url}),e("presign","done"),e("upload","running"),this.log("info","PIPELINE_UPLOAD_START","Uploading artifacts and blob",{artifact_size_mb:+(d.length/1024/1024).toFixed(1),blob_size_kb:+(f.length/1024).toFixed(1)}),await Promise.all([vc(y.urls.artifacts.upload_url,d,"application/zip"),vc(y.urls.blob.upload_url,f,"application/json")]),this.log("info","PIPELINE_UPLOAD_OK","Upload complete"),e("upload","done")}else{let s=this.collectNdjsonPerRun(),o=this.config.variables??{},{instructions:a}=s.length>0?ia(s,o,this.config.screenshotBaseUrl??"",this.config.screenshotExtMap):{instructions:[]},l=this.buildExecutionEnvelope(a),u=Qt(this.config.sessionDir,"execution.json");xc(u,JSON.stringify(l,null,2)),this.log("info","PIPELINE_LOCAL_SAVE","Execution blob saved locally (no upload)",{path:u}),e("convert","skipped"),e("zip","skipped"),e("presign","skipped"),e("upload","skipped"),this.log("info","PIPELINE_UPLOAD_SKIPPED","Upload steps skipped (gate disabled)")}if(this.config.shouldReplaceLocalOutput&&this.config.onAtomicReplace){e("atomic_replace","running");try{await this.config.onAtomicReplace(),this.log("info","PIPELINE_ATOMIC_REPLACE_OK","Local output replaced"),e("atomic_replace","done")}catch(s){let o=s instanceof Error?s.message:String(s);throw this.log("error","PIPELINE_ATOMIC_REPLACE_FAILED","Atomic-replace failed",{error:o}),e("atomic_replace","failed",o),s}}else e("atomic_replace","skipped");let r,i;if(this.config.shouldCommit&&!this.config.isFirstRun&&this.config.onCommitLock){e("commit_lock","running");let s=await this.config.onCommitLock();if(s.ok)r=s.testcaseId,this.log("info","PIPELINE_COMMIT_LOCK_OK","Commit lock acquired",{testcase_id:r??"none"}),e("commit_lock","done");else return this.log("error","PIPELINE_COMMIT_LOCK_FAILED","Commit lock failed",{reason:s.reason,message:s.message}),e("commit_lock","failed",`${s.reason??"unknown"}: ${s.message??""}`),{success:!1,testId:this.testId,error:`commit-lock failed: ${s.reason??"unknown"}`}}else e("commit_lock","skipped");if(this.config.isFirstRun&&!this.config.skipTmsFinalize){e("finalize","running"),this.log("info","PIPELINE_FINALIZE_START","Finalizing test (first-run)",{test_id:this.testId,commit_id:this.config.commitId});let s=new Rc(this.config.tmsBaseUrl,this.config.tmsUsername,this.config.tmsAccessKey),o=this.config.runObjectives&&this.config.runObjectives.length>0?this.config.runObjectives:[this.config.firstObjective];if(r=(await s.endTest(this.testId,{commit_id:this.config.commitId,time_taken:Math.round(this.config.totalDuration),steps_count:this.config.totalSteps,commit_message:this.config.firstObjective.slice(0,255),objectives:o})).testcase_id||void 0,this.log("info","PIPELINE_FINALIZE_OK","Test finalized",{testcase_id:r??"none"}),this.config.onFinalizeSuccess)try{await this.config.onFinalizeSuccess(r)}catch(l){this.log("warn","PIPELINE_FINALIZE_META_FAILED","Meta-rewrite after endTest failed",{error:String(l)})}e("finalize","done")}else e("finalize","skipped"),this.log("info","PIPELINE_FINALIZE_SKIPPED","Finalize skipped (evolve flow or first-run disabled)");if(r&&this.config.shareApiBaseUrl)try{i=await this.generateShareLink(r),this.log("info","PIPELINE_SHARE_OK","Share link generated",{share_id:i})}catch(s){this.log("warn","PIPELINE_SHARE_FAILED","Share link failed",{error:String(s)})}let n;if(this.config.codeExport?.enabled&&r){let s=!1;try{await this.triggerCodeExport(r),this.log("info","PIPELINE_CODE_EXPORT_START","Code export triggered"),s=!0}catch(o){let a=o instanceof Error?o.message:String(o);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export trigger failed; skipping poll",{error:a}),e("code_export","failed",`trigger failed: ${a}`)}if(s){e("code_export","running","Waiting for code generation\u2026");try{n=await this.pollAndDownloadCode(r,e),this.log("info","PIPELINE_CODE_EXPORT_OK","Code export complete",{dir:n}),e("code_export","done",n)}catch(o){let a=o instanceof Error?o.message:String(o);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export failed",{error:a}),e("code_export","failed",a)}}}else e("code_export","skipped");return this.log("info","PIPELINE_COMPLETE","Pipeline complete"),{success:!0,testId:this.testId,testcaseId:r,shareId:i,codeExportDir:n}}catch(r){return{success:!1,testId:this.testId,error:r instanceof Error?r.message:String(r)}}}async runCodeExport(e,r){let i=r??this.config.onProgress,n=!1;try{await this.triggerCodeExport(e),this.log("info","PIPELINE_CODE_EXPORT_TRIGGER","Code export triggered",{testcase_id:e}),n=!0}catch(s){let o=s instanceof Error?s.message:String(s);this.log("error","PIPELINE_CODE_EXPORT_TRIGGER_FAILED","Code export trigger failed; skipping poll",{error:o}),i("code_export","failed",`trigger failed: ${o}`)}if(n){i("code_export","running","Waiting for code generation\u2026");try{let s=await this.pollAndDownloadCode(e,i);return this.log("info","PIPELINE_CODE_EXPORT_OK","Code export complete",{dir:s}),i("code_export","done",s),s}catch(s){let o=s instanceof Error?s.message:String(s);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export failed",{error:o}),i("code_export","failed",o);return}}}collectNdjsonPerRun(){let e=[],r=this.config.runObjectives??[],i=this.config.runMetadata??[];for(let n=0;n<this.config.runDirs.length;n++){let s=this.config.runDirs[n],o=r[n]||this.config.firstObjective,a=i[n],l=this.readNdjsonFromDir(s);l.length>0&&e.push({objective:o,records:l,resultCode:a?.resultCode,reasonCode:a?.reasonCode,errorMessage:a?.errorMessage,summary:a?.summary,oneLiner:a?.oneLiner})}if(e.length===0){let n=Qt(this.config.sessionDir,"runs");if(QE(n))try{let o=YB(n,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name).sort();for(let a of o){let l=Qt(n,a),u=this.readNdjsonFromDir(l);u.length>0&&e.push({objective:this.config.firstObjective,records:u})}}catch{}}return e}readNdjsonFromDir(e){let r=[],i=[Qt(e,"run-test","actions.ndjson"),Qt(e,"actions.ndjson")];for(let n of i){if(!QE(n))continue;this.log("debug","PIPELINE_COLLECT_READ","Reading NDJSON file",{path:n});let s=VB(n,"utf-8");for(let o of s.split(`
|
|
13
|
+
`).map(e=>e.trim()).filter(Boolean):t.split(". ").map(e=>e.trim()).filter(Boolean).map(e=>e.endsWith(".")?e:e+"."):[]}function Mn(t,e){return!t||!e?t:t.replace(/\{\{(.+?)\}\}/g,(r,i)=>{let n=e[i];return n?n.value:r}).replace(/\$\{(.+?)\}/g,(r,i)=>{let n=e[i];return n?n.value:r})}var iv={click:"CLICK",double_click:"CLICK",type:"TYPE",fill:"TYPE",select:"SELECT",hover:"HOVER",drag:"DRAG_DROP",upload_files:"UPLOAD",navigate:"OPEN",go_back:"NAVIGATE",go_forward:"NAVIGATE",refresh:"REFRESH",press_key:"SENDKEYS",scroll:"SCROLL_PIXELS",scroll_into_view:"SCROLL_UNTIL_ELEMENT",wait:"WAIT",wait_until:"WAIT_UNTIL",wait_for_load:"WAIT_FOR_LOAD",switch_tab:"SWITCH_TAB",new_tab:"NEW_TAB",close_tab:"CLOSE_TAB",api:"API",evaluate_js:"EVALUATE_JS",vision_query:"VISION_QUERY",textual_query:"TEXTUAL_QUERY",get_url:"GET_URL",get_title:"GET_TITLE",assert:"ASSERTION",math:"MATHEMATICAL_OPERATION",set_cookies:"SET_COOKIES",delete_cookies:"DELETE_COOKIES",clear_cookies:"CLEAR_COOKIES",set_local_storage:"SET_LOCAL_STORAGE",delete_local_storage:"DELETE_LOCAL_STORAGE",clear_local_storage:"CLEAR_LOCAL_STORAGE",set_clipboard:"SET_CLIPBOARD",paste_clipboard:"PASTE_CLIPBOARD",clear_clipboard:"CLEAR_CLIPBOARD"},Nc={literal:"SET_VARIABLE",visual:"VISION_QUERY",dom:"TEXTUAL_QUERY",url:"GET_URL",title:"GET_TITLE",devtool_network:"DEVTOOLS_NETWORK_QUERY",devtool_console:"DEVTOOLS_CONSOLE_QUERY",devtool_cookies:"DEVTOOLS_COOKIES_QUERY",devtool_storage:"DEVTOOLS_STORAGE_QUERY",devtool_performance:"DEVTOOLS_PERFORMANCE",api_response:"API_CALLS_QUERY",textual_visual:"TEXTUAL_ANALYZER"},nv=new Set(["CLICK","TYPE","FILL","HOVER","SCROLL_UNTIL_ELEMENT","UPLOAD","VISION_QUERY","DRAG_DROP","SELECT"]);function Cc(t,e){if(t==="analyze"){let i=e?.action_params?.analyzer_type??"";return Nc[i]}let r=iv[t];return r||console.warn(`[migrator] UNKNOWN action_type "${t}" \u2014 falling back to "${t.toUpperCase()}"; explicit mapping required`),r??t.toUpperCase()}function kc(t,e){if(!t||!e)return"";try{let r=new Date(t);return isNaN(r.getTime())?"":new Date(r.getTime()+e).toISOString()}catch{return""}}function Mc(t){try{return JSON.parse(t.output_value??"{}")}catch{return{}}}function sv(t){let e=t.output_variable??"";if(!e)return"[]";let i={...Mc(t)};return delete i.body,JSON.stringify([{name:e,unique_key:(t.action_id??"").replace(/-/g,"").slice(0,8)||Er().replace(/-/g,"").slice(0,8),value:i,variable_description:"API Response"}])}function ov(t,e,r){let i=t.action_params??{},n=nv.has(e)?"Vision Agent":"Operation Agent",s={operation_type:e};e==="OPEN"&&(s.url=i.url??""),e==="SET_VARIABLE"&&(s.variable_name=t.output_variable??i.key??"",s.variable_value=t.output_value??"");let o={},a={},l=t.action_instruction??"",u=i.text??"",f=i.url??"",c=[["intent",l],["value",u],["url",f]];for(let[S,m]of Object.entries(r)){let b=String(m);if(S.startsWith("secrets."))for(let[v,E]of c)E.includes(b)&&(a[v]=S);for(let[v,E]of c)E.includes(b)&&!(v in o)&&(o[v]=E)}let h=t.action_type,d={operation:t.action_instruction??"",agent:n,operation_dict:s,reasoning:h==="analyze"?i.query??"":t.intent??t.action_instruction??"",variable:o,secrets:a,params:{}};h==="analyze"&&typeof i.code=="string"&&i.code&&(d.code=i.code),h==="analyze"&&typeof i.code_js=="string"&&i.code_js&&(d.code_js=i.code_js),h==="analyze"&&i.analyzer_type==="textual_visual"&&(typeof i.wrapped_js=="string"&&(d.wrapped_js=i.wrapped_js),Array.isArray(i.locators)&&(d.locators=i.locators),typeof i.operator=="string"&&(d.operator=i.operator),Array.isArray(i.transforms)&&(d.transforms=i.transforms),typeof i.query=="string"&&(d.query=i.query),typeof i.expected_value=="string"&&(d.expected_value=i.expected_value),typeof i.needs_unit_conversion=="boolean"&&(d.needs_unit_conversion=i.needs_unit_conversion));let p={set_cookies:"cookies",set_clipboard:"text",delete_cookies:"names",set_local_storage:"items",delete_local_storage:"keys"}[h];return p&&i[p]!==void 0&&(d[p]=i[p]),h==="set_clipboard"&&typeof i.html=="string"&&i.html&&(d.html=i.html),d}function av(t){let e=t.assertion_tree??{};if(typeof e.passed=="boolean")return e.passed;let r=e.sub_results??[];return r.length===0?e.status==="passed":(e.composite_operator??"and")==="or"?r.some(n=>n.passed===!0):r.every(n=>n.passed===!0)}function qc(t){return t.map(e=>({description:e.description??"",store_key:e.store_key??"",expected_value:e.expected??"",extracted_value:e.extracted_value??"",operator:e.operator??"equals",transforms:e.transforms??[]}))}function lv(t){let e=t.assertion_tree??{},r=e.sub_results??[],i=qc(r);return{operator:[],assertion_operands:[],left_operand:null,right_operand:null,operands:[],sub_results:r,sub_checks:i,composite_operator:e.composite_operator??"and",verification:e.verification??"",claim:e.description??""}}function uv(t){let r=(t.action_params??{}).assertion_tree??{},i=r.sub_results??[],n=qc(i);return[{operation:t.action_instruction??"",agent:"Operation Agent",operation_dict:{operation_type:"ASSERTION",assertion_tree:{sub_results:i,sub_checks:n,composite_operator:r.composite_operator??"and",verification:"",claim:r.description??t.action_instruction??"",operator:[],assertion_operands:[],left_operand:null,right_operand:null,operands:[]}},variable:{},secrets:{},params:{}}]}function fv(t,e,r,i){let n=t.visual_data;if(!n||n.x==null||n.y==null)return null;let s=e?`${e}/test_screenshots`:"";return{x:n.x,y:n.y,confidence:0,bbox:n.bbox??null,bbox_source:n.bbox?"accessibility_tree":"fallback",viewport_width:n.viewport_width??1280,viewport_height:n.viewport_height??800,scale_factor:null,raw_image_url:s?`${s}/untagged_screenshot/${r}.${i?.get(r)??"png"}`:"",raw_image_sas_url:"",annotated_image_url:"",annotated_image_sas_url:""}}function Dc(t,e={},r="",i){let n=t.action_type,s=Cc(n,t),o=t.action_params??{},a=t.coordinates??null,l=t.selectors??null,u=!!(l&&l.length>0),f=t.timestamp??"",c=t.duration_ms??0,h=t.variables_used??{},d=t.action_id??Er(),y=Er(),p=kc(f,c),S="",m="";n==="navigate"?(m=o.url??"",S=m):n==="type"||n==="fill"?S=o.text??"":n==="press_key"?S=o.key??"":n==="wait"?S=String(o.ms??o.timeout_ms??""):n==="evaluate_js"?S=o.script??"":n==="analyze"&&(o.analyzer_type??"")==="literal"&&(S=t.output_value??"");let b="";n==="go_back"?b="back":n==="go_forward"&&(b="forward");let v=Mn(S,e),E=Mn(m,e),T=Mn(t.action_instruction??"",e),D=ov(t,s,h);return{operation_id:d,instruction_id:y,instruction:T,intent:T,operation_start:f,operation_end:p,status:t.status??"",command:s,name:"",target:"",value:v,message:"",operation_dict:"",frame:t.frame_info?JSON.stringify(t.frame_info):"",error_message:t.error??"",code_snippet:"",sub_instruction_obj:JSON.stringify(D),test_id:"",test_version:"",action:"",string_to_float:!1,feedback_msg:"",time_taken:"",create_time_stamp:"",update_time_stamp:"",locator_variable:"",locator_variable_name:"",image_url:r?`${r}/test_screenshots/untagged_screenshot/${d}.${i?.get(d)??"png"}`:"",alternative_xpaths:[],attribute:"",value_description:"",url:E,navigation_direction:b,tagified_image_url:"",query_variable_name:t.output_variable??"",query_variable_value:t.output_value??"",query_variable_type:"",expected_value:"",queried_value:"",operator:"",assertion_status:s==="ASSERTION"?av(o):"",query_info_dict:{},query_content_confidence:"none",debugging_logs:[],locator_index:0,query_html:"",user_variables:"[]",optional_flag:!1,max_retries:0,retries_delay:0,explicit_wait:0,implicit_wait:0,tab_index:String(o.tab_index??""),tab_identifier:String(o.tab_identifier??""),scroll_value:o.amount??1,scroll_direction:o.direction??"",mi_scroll_payload:{},sleep_duration:0,app_id:"",manual_interaction_tag:"",string_to_float_list:[],js_snippet:n==="evaluate_js"?o.script??"":"",code_error:"",hide:!1,dismiss_dialog:!1,use_v2_mobile_tagging:!1,multiple_inputs:!1,dialog_action:"",dialog_type:"",is_coordinates_used_for_interaction:a!==null&&!u,element_coordinates_ratio:[],element_bounds_ratio:[],x_coord:u?null:a?.x??null,y_coord:u?null:a?.y??null,target_x_coord:o.target_x??null,target_y_coord:o.target_y??null,source_description:o.source_description??null,target_description:o.target_description??null,use_coordinates:a!==null&&!u,kaneaiMobileTaggingImageLimit:1,clicks_order_code:"se_js_ac",selector:u?l.map(x=>({type:x.isXPath?"xpath":"css",...x})):"",selector_target:"",math_result_variable_name:"",math_result_variable_value:"",expression_tree:s==="ASSERTION"?lv(o):o.expression_tree??{},assertion_tree:o.assertion_tree??{},assertion_tree_simplified:{},network_throttle:{},is_mobile_offline:!1,autoheal:!1,db_query:"",db_details:{},db_query_decoded:"",is_global_variable:!1,is_global_variable_persist:!1,global_variable_id:"",wait_for_element_timeout:0,failure_condition:s==="ASSERTION"?"Fail test immediately":"",screenshot_command:"",smartui_contents:{},smartui_results:{},result_type:"",result_hint:"",drag_offset:{},start_coordinates:o.source_coordinates?{x:o.source_coordinates[0],y:o.source_coordinates[1]}:{},end_coordinates:o.target_coordinates?{x:o.target_coordinates[0],y:o.target_coordinates[1]}:{},element_rect:null,is_canvas:!1,until_condition:"",until_max_retries:0,until_settle_ms:0,api_data:n==="api"?{request:t.action_params?.api_data?.request??{}}:{},output_variables:n==="api"?t.output_variable?{[t.output_variable]:null}:{}:t.output_variable?{[t.output_variable]:t.output_value??""}:{},visual_context:fv(t,r,d,i),reasoning:n==="analyze"?o.query??"":t.intent??t.action_instruction??""}}function Lc(t,e,r={}){let i=t.action_type,n=Cc(i,t),s=t.timestamp??"",o=t.duration_ms??0,a=kc(s,o),l=n==="ASSERTION"||n==="MATHEMATICAL_OPERATION";return{instruction_id:e.instruction_id,instruction_class:l?"non_driver_action":"driver_action",module_id:"",instruction:Mn(t.action_instruction??"",r),command:n,error:null,parent_instruction_id:"",classification_layer_resp:n==="ASSERTION"?uv(t):[],classification_error:{},operations:[e],status:t.status??"",start_timestamp:s,end_timestamp:a,type:"agent_generated",tags:[],html_paths:[],optional_flag:!1,max_retries:0,retries_delay:0,explicit_wait:0,implicit_wait:0,content_type:i==="api"?"api":i==="analyze"&&t.action_params?.analyzer_type==="api_response"?"api_calls_query":i==="analyze"&&t.action_params?.analyzer_type?.startsWith("devtool_")?t.action_params.analyzer_type.replace("devtool_","devtools_"):"instruction",js_snippet:i==="evaluate_js"?t.action_params?.script??"":"",user_variables:i==="api"?sv(t):"[]",api_data:i==="api"?{request:t.action_params?.api_data?.request??{},response:Mc(t)}:{},params_used:!1,hard_assertion:n==="ASSERTION"?t.action_params?.failure_condition==="hard":!1,expected_outcome:"",module_execution_index:0,module_version:null,network_throttle:{},isEdited:!1,use_query_assertion_v2:!1,db_query:"",db_details:{},network_assertion_content:{},screenshot_command:"",smartui_contents:{},generative_id:"",plan_id:"",generative_objective:"",error_message:"",error_code:"",reason:"",title:"",used_variables:[],reasoning:i==="analyze"?t.action_params?.query??"":t.intent??t.action_instruction??""}}function cv(t,e=[]){let r=t.action_params??{},i=r.branches??[],n=r.winning_index??-1,s=r.sub_results??[],o={};for(let l of s){let u=l.sub_results;if(u)for(let f of u){let c=f.store_key;c&&(o[c]=f)}}let a=i.map((l,u)=>{let f=u===n,c=(l.sub_checks??[]).map(h=>{let d=o[h.store_key];return{description:h.description,store_key:h.store_key,expected_value:h.expected_value,stored_value:d?.extracted_value??h.stored_value,operator:h.operator??d?.operator??"equals",transforms:h.transforms??d?.transforms??[]}});if(c.length===0&&l.condition&&s.length>0){let d=s.find(y=>y.branch_index===u)?.sub_results??[];d.length>0&&(c=d.map(y=>({description:y.description??l.condition,store_key:y.store_key??"",expected_value:y.expected??"true",stored_value:y.extracted_value??void 0,operator:y.operator??"equals",transforms:y.transforms??[]})))}return{branch_index:u,condition:l.condition??null,branch_type:l.branch_type??"sub_objective",passed:f,sub_objective:null,custom_event:l.custom_event??null,children:f?e:[],sub_checks:l.condition?c:[],composite_operator:l.composite_operator??"and"}});return{content_type:"conditional_block",instruction_id:`if_else_${Er().slice(0,8)}`,instruction:t.action_instruction??"",instruction_class:"driver_action",command:"",status:t.status??"success",resolved_branch_index:n,branches:a,generative_id:"",generative_objective:"",variables_used:{},classification_layer_resp:[],classification_error:{},used_variables:[],user_variables:"[]",module_id:"",module_execution_index:0,module_version:"",plan_id:"",optional_flag:!1,max_retries:0,retries_delay:0,explicit_wait:0,implicit_wait:0,error:null,error_message:"",error_code:"",reason:"",start_timestamp:t.timestamp??"",end_timestamp:"",type:"agent_generated",hook:null,hook_type:null,evaluation_context:{},query_variables:{}}}function Fc(t,e,r){for(let i of t)i.content_type==="instruction"&&"generative_id"in i&&(i.generative_id=e,i.generative_objective=r)}function ra(t,e={},r="",i){let n=[],s=0;for(;s<t.length;){let o=t[s],a=o.action_type;if(o.status==="error"&&a!=="assert"&&a!=="if_else"&&a!=="child_agent_start"&&a!=="child_agent_end"&&!(o.until_condition&&!o.error)){s+=1;continue}if(a==="analyze"&&!Nc[o.action_params?.analyzer_type??""]){s+=1;continue}if(a==="child_agent_start"){let l=o.action_params?.child_id??"",u=o.action_params?.objective??"",f=[];s+=1;let c=1,h="error",d;for(;s<t.length&&c>0;){let T=t[s],D=T.action_type;if(D==="child_agent_start")c+=1;else if(D==="child_agent_end"&&(c-=1,c===0)){h=T.status??"success",d=T,s+=1;break}c>0&&f.push(T),s+=1}let y=ra(f,e,r,i);Fc(y,l,u);let p=d?.action_params?.result_code??null,S=d?.action_params?.reason_code??null,m=d?.action_params?.error_message??null,b=d?.action_params?.summary??null,v=d?.action_params?.one_liner??null,E=h==="error";n.push({content_type:"generative_block",instruction_id:`generative_block_${l}`,generative_id:l,objective:u,status:h,children:y,error_message:E?m??null:null,error_code:E?S??null:null,result_code:p??null,bifurcation_context:[],approach_reason:Pc(b),one_liner:v??null});continue}else if(a==="child_agent_end"){s+=1;continue}else if(a==="if_else"){s+=1;let l=[];for(;s<t.length&&t[s].action_type==="child_agent_start";){let u=t[s],f=u.action_params?.child_id??"",c=u.action_params?.objective??"",h=[];s+=1;let d=1,y="error";for(;s<t.length&&d>0;){let S=t[s];if(S.action_type==="child_agent_start")d+=1;else if(S.action_type==="child_agent_end"&&(d-=1,d===0)){y=S.status??"success",s+=1;break}d>0&&h.push(S),s+=1}let p=ra(h,e,r,i);l.push(...p)}n.push(cv(o,l));continue}else if(a==="query_tool"){s+=1;continue}else if(o.until_condition){let l=Dc(o,e,r,i),u=Lc(o,l,e),f=typeof o.until_condition_met=="boolean"?o.until_condition_met:o.status==="success";n.push({content_type:"until_block",instruction_id:`until_${Er().slice(0,8)}`,condition:o.until_condition,max_retries:o.until_max_retries??10,settle_ms:o.until_settle_ms??500,current_count:0,condition_met:f,children:[u],generative_id:"",generative_objective:"",variables_used:{},status:o.status??"success"})}else{let l=Dc(o,e,r,i),u=Lc(o,l,e);n.push(u)}s+=1}return n}function ia(t,e={},r="",i){let n=[];for(let s of t){let o=ra(s.records,e,r,i);if(o.length===0)continue;let a=Er().replace(/-/g,"");Fc(o,a,s.objective);let l=o.some(h=>"status"in h&&typeof h.status=="string"?h.status==="error"||h.status==="failed":!1),u=s.resultCode?parseInt(s.resultCode,10):null,f=u!==null&&!isNaN(u)&&u>=200,c=l||f?"error":"success";n.push({content_type:"generative_block",instruction_id:`generative_block_${a}`,generative_id:a,objective:s.objective,status:c,children:o,error_message:c==="error"?s.errorMessage??null:null,error_code:c==="error"?s.reasonCode??null:null,result_code:s.resultCode??null,bifurcation_context:[],approach_reason:Pc(s.summary),one_liner:s.oneLiner??null})}return{instructions:n}}var YE=tv(VE(),1);import{createWriteStream as UB}from"fs";import{readFile as WB}from"fs/promises";import{join as zB,basename as GB}from"path";import{tmpdir as $B}from"os";var HB=["**/screenshots/**","**/annotated/**","**/tcg/**","**/bifurcation/**"];async function KE(t){let e=zB($B(),`${GB(t)}_artifacts.zip`);return new Promise((r,i)=>{let n=UB(e),s=(0,YE.default)("zip",{zlib:{level:6}});n.on("close",()=>r(e)),s.on("error",i),s.pipe(n),s.glob("**/*",{cwd:t,ignore:HB}),s.finalize()})}async function ZE(t){return WB(t)}async function vc(t,e,r){let i=await Xt(t,{method:"PUT",headers:{"Content-Type":r,"x-ms-blob-type":"BlockBlob"},body:new Uint8Array(e)});if(!i.ok)throw new Error(`Azure upload failed: ${i.status} ${await i.text()}`)}var XE=class{config;controller;testId;constructor(e){this.config=e,this.controller=new Ac(e.controllerBaseUrl,e.auth),this.testId=e.testId}log(e,r,i,n){this.config.log?.(e,r,i,n)}async execute(){let{onProgress:e}=this.config;try{if(!this.testId)return this.log("error","PIPELINE_ABORT","No test_id available"),{success:!1,testId:null,error:"No test_id available"};if(this.config.shouldUploadArtifacts!==!1){e("convert","running");let s=this.collectNdjsonPerRun(),o=s.reduce((p,S)=>p+S.records.length,0);this.log("info","PIPELINE_CONVERT","Collected NDJSON records",{total_records:o,run_groups:s.length});let a=this.config.variables??{};this.log("info","PIPELINE_CONVERT_VARS","Variables for template resolution",{keys:Object.keys(a)});let{instructions:l}=s.length>0?ia(s,a,this.config.screenshotBaseUrl??"",this.config.screenshotExtMap):{instructions:[]};this.log("info","PIPELINE_CONVERT_INSTRUCTIONS","Auteur instructions produced",{count:l.length});let u=this.buildExecutionEnvelope(l),f=Buffer.from(JSON.stringify(u));this.log("info","PIPELINE_CONVERT_BLOB","Blob created",{size_kb:+(f.length/1024).toFixed(1)});let c=Qt(this.config.sessionDir,"execution.json");xc(c,JSON.stringify(u,null,2)),this.log("info","PIPELINE_CONVERT_LOCAL_SAVE","Execution blob saved locally",{path:c}),e("convert","done"),e("zip","running"),this.log("info","PIPELINE_ZIP_START","Zipping session",{session_dir:this.config.sessionDir});let h=null,d;try{h=await KE(this.config.sessionDir),d=await ZE(h),this.log("info","PIPELINE_ZIP_DONE","Zip complete",{size_mb:+(d.length/1024/1024).toFixed(1),path:h}),e("zip","done",`${(d.length/1024/1024).toFixed(1)}MB`)}finally{h&&await ZB(h).catch(()=>{})}e("presign","running"),this.log("info","PIPELINE_PRESIGN_START","Requesting presigned URLs",{url:`${this.config.controllerBaseUrl}/upload/presign`,test_id:this.testId,session_id:this.config.sessionId});let y=await this.controller.getPresignedUrls(this.testId,this.config.sessionId,[{key:"artifacts",content_type:"application/zip",filename:`${this.config.sessionId}_artifacts.zip`},{key:"blob",content_type:"application/json",filename:`${this.config.commitId}.json`}]);this.log("info","PIPELINE_PRESIGN_OK","Presigned URLs received",{artifacts_url:y.urls.artifacts?.blob_url,blob_url:y.urls.blob?.blob_url}),e("presign","done"),e("upload","running"),this.log("info","PIPELINE_UPLOAD_START","Uploading artifacts and blob",{artifact_size_mb:+(d.length/1024/1024).toFixed(1),blob_size_kb:+(f.length/1024).toFixed(1)}),await Promise.all([vc(y.urls.artifacts.upload_url,d,"application/zip"),vc(y.urls.blob.upload_url,f,"application/json")]),this.log("info","PIPELINE_UPLOAD_OK","Upload complete"),e("upload","done")}else{let s=this.collectNdjsonPerRun(),o=this.config.variables??{},{instructions:a}=s.length>0?ia(s,o,this.config.screenshotBaseUrl??"",this.config.screenshotExtMap):{instructions:[]},l=this.buildExecutionEnvelope(a),u=Qt(this.config.sessionDir,"execution.json");xc(u,JSON.stringify(l,null,2)),this.log("info","PIPELINE_LOCAL_SAVE","Execution blob saved locally (no upload)",{path:u}),e("convert","skipped"),e("zip","skipped"),e("presign","skipped"),e("upload","skipped"),this.log("info","PIPELINE_UPLOAD_SKIPPED","Upload steps skipped (gate disabled)")}if(this.config.shouldReplaceLocalOutput&&this.config.onAtomicReplace){e("atomic_replace","running");try{await this.config.onAtomicReplace(),this.log("info","PIPELINE_ATOMIC_REPLACE_OK","Local output replaced"),e("atomic_replace","done")}catch(s){let o=s instanceof Error?s.message:String(s);throw this.log("error","PIPELINE_ATOMIC_REPLACE_FAILED","Atomic-replace failed",{error:o}),e("atomic_replace","failed",o),s}}else e("atomic_replace","skipped");let r,i;if(this.config.shouldCommit&&!this.config.isFirstRun&&this.config.onCommitLock){e("commit_lock","running");let s=await this.config.onCommitLock();if(s.ok)r=s.testcaseId,this.log("info","PIPELINE_COMMIT_LOCK_OK","Commit lock acquired",{testcase_id:r??"none"}),e("commit_lock","done");else return this.log("error","PIPELINE_COMMIT_LOCK_FAILED","Commit lock failed",{reason:s.reason,message:s.message}),e("commit_lock","failed",`${s.reason??"unknown"}: ${s.message??""}`),{success:!1,testId:this.testId,error:`commit-lock failed: ${s.reason??"unknown"}`}}else e("commit_lock","skipped");if(this.config.isFirstRun&&!this.config.skipTmsFinalize){e("finalize","running"),this.log("info","PIPELINE_FINALIZE_START","Finalizing test (first-run)",{test_id:this.testId,commit_id:this.config.commitId});let s=new Rc(this.config.tmsBaseUrl,this.config.tmsUsername,this.config.tmsAccessKey),o=this.config.runObjectives&&this.config.runObjectives.length>0?this.config.runObjectives:[this.config.firstObjective];if(r=(await s.endTest(this.testId,{commit_id:this.config.commitId,time_taken:Math.round(this.config.totalDuration),steps_count:this.config.totalSteps,commit_message:this.config.firstObjective.slice(0,255),objectives:o})).testcase_id||void 0,this.log("info","PIPELINE_FINALIZE_OK","Test finalized",{testcase_id:r??"none"}),this.config.onFinalizeSuccess)try{await this.config.onFinalizeSuccess(r)}catch(l){this.log("warn","PIPELINE_FINALIZE_META_FAILED","Meta-rewrite after endTest failed",{error:String(l)})}e("finalize","done")}else e("finalize","skipped"),this.log("info","PIPELINE_FINALIZE_SKIPPED","Finalize skipped (evolve flow or first-run disabled)");if(r&&this.config.shareApiBaseUrl)try{i=await this.generateShareLink(r),this.log("info","PIPELINE_SHARE_OK","Share link generated",{share_id:i})}catch(s){this.log("warn","PIPELINE_SHARE_FAILED","Share link failed",{error:String(s)})}let n;if(this.config.codeExport?.enabled&&r){let s=!1;try{await this.triggerCodeExport(r),this.log("info","PIPELINE_CODE_EXPORT_START","Code export triggered"),s=!0}catch(o){let a=o instanceof Error?o.message:String(o);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export trigger failed; skipping poll",{error:a}),e("code_export","failed",`trigger failed: ${a}`)}if(s){e("code_export","running","Waiting for code generation\u2026");try{n=await this.pollAndDownloadCode(r,e),this.log("info","PIPELINE_CODE_EXPORT_OK","Code export complete",{dir:n}),e("code_export","done",n)}catch(o){let a=o instanceof Error?o.message:String(o);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export failed",{error:a}),e("code_export","failed",a)}}}else e("code_export","skipped");return this.log("info","PIPELINE_COMPLETE","Pipeline complete"),{success:!0,testId:this.testId,testcaseId:r,shareId:i,codeExportDir:n}}catch(r){return{success:!1,testId:this.testId,error:r instanceof Error?r.message:String(r)}}}async runCodeExport(e,r){let i=r??this.config.onProgress,n=!1;try{await this.triggerCodeExport(e),this.log("info","PIPELINE_CODE_EXPORT_TRIGGER","Code export triggered",{testcase_id:e}),n=!0}catch(s){let o=s instanceof Error?s.message:String(s);this.log("error","PIPELINE_CODE_EXPORT_TRIGGER_FAILED","Code export trigger failed; skipping poll",{error:o}),i("code_export","failed",`trigger failed: ${o}`)}if(n){i("code_export","running","Waiting for code generation\u2026");try{let s=await this.pollAndDownloadCode(e,i);return this.log("info","PIPELINE_CODE_EXPORT_OK","Code export complete",{dir:s}),i("code_export","done",s),s}catch(s){let o=s instanceof Error?s.message:String(s);this.log("error","PIPELINE_CODE_EXPORT_FAILED","Code export failed",{error:o}),i("code_export","failed",o);return}}}collectNdjsonPerRun(){let e=[],r=this.config.runObjectives??[],i=this.config.runMetadata??[];for(let n=0;n<this.config.runDirs.length;n++){let s=this.config.runDirs[n],o=r[n]||this.config.firstObjective,a=i[n],l=this.readNdjsonFromDir(s);l.length>0&&e.push({objective:o,records:l,resultCode:a?.resultCode,reasonCode:a?.reasonCode,errorMessage:a?.errorMessage,summary:a?.summary,oneLiner:a?.oneLiner})}if(e.length===0){let n=Qt(this.config.sessionDir,"runs");if(QE(n))try{let o=YB(n,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>a.name).sort();for(let a of o){let l=Qt(n,a),u=this.readNdjsonFromDir(l);u.length>0&&e.push({objective:this.config.firstObjective,records:u})}}catch{}}return e}readNdjsonFromDir(e){let r=[],i=[Qt(e,"run-test","actions.ndjson"),Qt(e,"actions.ndjson")];for(let n of i){if(!QE(n))continue;this.log("debug","PIPELINE_COLLECT_READ","Reading NDJSON file",{path:n});let s=VB(n,"utf-8");for(let o of s.split(`
|
|
14
14
|
`)){let a=o.trim();if(a)try{r.push(JSON.parse(a))}catch{}}return r}return r}async generateShareLink(e){let r=`${this.config.shareApiBaseUrl}/lshs/api/v1.0/share-item/generate-sharable-link`;this.log("info","PIPELINE_SHARE_START","Requesting share link",{url:r,testcase_id:e});let i={method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({entityIds:[e],entityType:"Test Case Details",expiresAt:7})},n=!!this.config.authResolver;this.log("debug","PIPELINE_SHARE_AUTH","Share link auth config",{resolver:n,fallback_auth_type:typeof this.config.auth=="string"?"bearer":"basic",tms_user:this.config.tmsUsername});let s=n?await this.config.authResolver.fetch(r,i):await Xt(r,{...i,headers:{...i.headers,Authorization:this.buildAuthHeader()}});if(!s.ok)throw new Error(`Share link API failed: ${s.status} ${await s.text()}`);let o=await s.json();if(!o.shareId)throw new Error("Share link API returned no shareId");return o.shareId}async triggerCodeExport(e){if(!this.config.codeExport)throw new Error("triggerCodeExport called without resolved codeExport config");let{url:r,body:i}=Oc({tmsBaseUrl:this.config.tmsBaseUrl,testcaseId:e,codeExport:this.config.codeExport});this.log("info","PIPELINE_CODE_EXPORT_POST","Triggering code export",{url:r});let n={method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify(i)},s=this.config.authResolver?await this.config.authResolver.fetch(r,n):await Xt(r,{...n,headers:{...n.headers,Authorization:this.buildAuthHeader()}});if(!s.ok)throw new Error(`Code export failed: ${s.status} ${await s.text()}`)}async pollAndDownloadCode(e,r){let i=Ic({tmsBaseUrl:this.config.tmsBaseUrl,testcaseId:e}),n=this.config.exitTimeoutMs??3e5,s=5e3,o=Date.now()+n;this.log("info","PIPELINE_CODE_EXPORT_POLL","Polling for code export",{url:i,timeout_ms:n});let a=(l,u)=>this.config.authResolver?this.config.authResolver.fetch(l,u):Xt(l,{...u,headers:{...u?.headers,Authorization:this.buildAuthHeader()}});for(;Date.now()<o;){let l=await a(i,{method:"GET",headers:{Accept:"application/json"}});if(!l.ok){let d=await l.text().catch(()=>"");throw this.log("warn","PIPELINE_CODE_EXPORT_POLL_FAILED","Code export poll non-200; skipping",{status:l.status,body:d.slice(0,200)}),new Error(`code export poll skipped: HTTP ${l.status}`)}let f=(await l.json()).data?.find(d=>d.code_name==="kane-cli-trigger");if(!f){this.log("debug","PIPELINE_CODE_EXPORT_WAITING","No kane-cli-trigger entry yet"),r("code_export","running","Waiting for code generation\u2026"),await this.sleep(s);continue}let c=f.status.toLowerCase();if(c==="in progress"||c==="in_progress"||c==="pending"){this.log("debug","PIPELINE_CODE_EXPORT_IN_PROGRESS","Code export in progress",{status:f.status}),r("code_export","running","Generating code\u2026"),await this.sleep(s);continue}if(!f.url||f.url.length===0)throw new Error(`Code export status=${f.status} but no files returned`);let h=this.config.codeExportDir??Qt(this.config.sessionDir,"code-export");KB(h,{recursive:!0}),this.log("info","PIPELINE_CODE_EXPORT_DOWNLOAD","Downloading code files",{file_count:f.url.length,dir:h}),r("code_export","running",`Downloading ${f.url.length} files\u2026`);for(let d of f.url){let y=Qt(h,d.file_name),p=await Xt(d.file_url);if(!p.ok){this.log("warn","PIPELINE_CODE_EXPORT_FILE_FAILED","Failed to download file",{file_name:d.file_name,status:p.status});continue}let S=await p.text();xc(y,S,"utf-8"),this.log("info","PIPELINE_CODE_EXPORT_FILE_SAVED","File saved",{file_name:d.file_name,size_bytes:S.length})}return h}throw new Error("Code export timed out")}sleep(e){return new Promise(r=>setTimeout(r,e))}buildAuthHeader(){return typeof this.config.auth=="string"?`Bearer ${this.config.auth}`:Tc(this.config.auth.username,this.config.auth.accessKey)}buildExecutionEnvelope(e){let r=this.config.runStatuses.every(o=>o==="passed")?"success":"error",i=this.config.variableIds??{},n=[];if(this.config.variables)for(let[o,a]of Object.entries(this.config.variables)){if(a.secret)continue;let l=o.startsWith("global.")?o.slice(7):o;n.push({id:i[l]??0,name:l,value:a.value,session_value:a.value,is_persist:!1,environment_id:0,environment_name:"No Env"})}let s=[];for(let o of this.collectNdjsonPerRun())for(let a of o.records)a.output_variable&&a.output_value!=null&&s.push({name:a.output_variable,value:String(a.output_value),value_type:"test_level",variable_description:"ANALYZE result"});return{test_id:this.testId,version:"v4",session_id:this.config.sessionId,org_id:String(this.config.orgId),user_id:String(this.config.userId),url:this.config.firstUrl??"",start_timestamp:this.config.startedAt,end_timestamp:this.config.endedAt,status:r,commit_id:this.config.commitId,instructions:e,modules:[],uploaded_files:[],test_params:[],test_level_variables:JSON.stringify(s),test_global_variables:n,max_network_wait:0,wait_buffer:0,network_throttle:{},secrets:this.config.secrets??[],totp:[],environment_id:0,environment:"",mobile_browser:!1,native_popups:[],smartui:{},module_index:0}}};export{XE as a};
|
|
15
15
|
/*! Bundled license information:
|
|
16
16
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{b as K,c as V,d as z,e as ee,f as te}from"./chunk-
|
|
2
|
+
import{b as K,c as V,d as z,e as ee,f as te}from"./chunk-25YRWDQ7.js";import{c as J}from"./chunk-K266M5ZM.js";import{a as Q}from"./chunk-XCMNFMSO.js";import{a as Z}from"./chunk-FPFOW6BS.js";import{b as H}from"./chunk-CL5SB2I7.js";import{b as W}from"./chunk-SRQ7P3WI.js";import{g as E}from"./chunk-LOIRZFV3.js";import{a as O}from"./chunk-LPUQ4HWQ.js";import{a as k,b as A,d as Y}from"./chunk-VE3SUJMA.js";import{a as q}from"./chunk-HZUTFC3G.js";import{a as _}from"./chunk-3PISMPFM.js";import{a as G}from"./chunk-HCBYKLMW.js";import{a as c,b as u,i as I,j as X}from"./chunk-C44QQJR4.js";import{a as ue}from"./chunk-6YGTRKDT.js";import{e as F}from"./chunk-UR6MHSHU.js";var i=F(ue(),1);var r=F(G(),1);function _e({resultRef:h,mode:d="singleshot",loginCompleteRef:f}){let{exit:m}=X(),C=(0,i.useRef)(new q),S=(0,i.useRef)(new Q),v=(0,i.useRef)(new J),t=C.current,l=S.current,$=v.current,ne=K(),[P,g]=(0,i.useState)(d==="login"?"login":"gate"),[L,re]=(0,i.useState)(null),[de,R]=(0,i.useState)(null),[ge,T]=(0,i.useState)(null),[N,oe]=(0,i.useState)(null),[U,B]=(0,i.useState)([]),x=(0,i.useCallback)((e,n,s,o)=>$.log(e,n,s,o),[$]),pe=(0,i.useCallback)((e,n)=>{e?k(t,l,e,n):l.save({project_id:null,project_name:null,folder_id:null,folder_name:null})},[t,l]),y=(0,i.useCallback)(()=>{d==="login"?(f&&(f.current=!0),m()):g("input")},[d,m,f]),D=(0,i.useCallback)((e,n)=>{let s=k(t,l,e,n);if(d==="login"){g("ensure-project");return}Y(s)?y():s.projectId?g("ensure-folder"):g("ensure-project")},[t,l,y,d]);I((e,n)=>{n.ctrl&&e==="c"&&E(0,"Ctrl+C exit")});let M=(0,i.useRef)(!1);i.default.useEffect(()=>{M.current||(M.current=!0,d!=="login"&&te(t,x).then(e=>{re(e),e.status==="authenticated"?D(e.result.profile,e.result.env):e.status==="needs_pick"?g("pick"):(R(e.profile??null),T(e.env??null),g("login"))}).catch(e=>{oe(`Auth check failed: ${e instanceof Error?e.message:String(e)}`)}))},[t,x]);let ie=(0,i.useCallback)(e=>{h.current={objective:e},m()},[h,m]),se=(0,i.useCallback)(async(e,n)=>{t.setActiveProfile(e),t.setDefaultEnv(n),(await ee(t,e,n,x)).status==="authenticated"?D(e,n):(R(e),T(n),g("login"))},[t,x,D]),w=(0,i.useCallback)(()=>{let e=t.getActiveProfile(),n=t.getDefaultEnv();if(!e)return null;let s=_(n),o=t.loadBasicAuth(e,n);return new Z(s.controllerBaseUrl,async()=>t.loadCredentials(e,n)?.access_token??null,o,x)},[t,x]),le=(0,i.useCallback)(async()=>{let e=w();if(!e)return null;let n=e.cached??await e.resolve();if(!n)return null;let s=_(t.getDefaultEnv()),o=new O(s.tmsBaseUrl,n.username,n.access_key);try{let p=(await o.listProjects()).find(b=>b.name==="KaneAI Generated");if(p)return{id:p.project_id,name:p.name};let j=await o.createProject("KaneAI Generated");return{id:j.id,name:j.name}}catch{return null}},[w,t]),ae=(0,i.useCallback)(async e=>{let n=w();if(!n)return null;let s=n.cached??await n.resolve();if(!s)return null;let o=_(t.getDefaultEnv()),a=new O(o.tmsBaseUrl,s.username,s.access_key);try{let j=(await a.listFolders(e)).find(ce=>ce.name==="Untitled");if(j)return{id:j.id,name:j.name};let b=await a.createFolder(e,"Untitled");return{id:b.id,name:b.name}}catch{return null}},[w,t]);if(P==="gate")return(0,r.jsx)(c,{paddingX:1,children:(0,r.jsx)(u,{color:"yellow",children:"Checking authentication..."})});if(N)return(0,r.jsxs)(c,{flexDirection:"column",paddingX:1,children:[(0,r.jsx)(u,{color:"red",children:N}),(0,r.jsx)(u,{color:"gray",children:"Press Ctrl+C to exit."})]});if(P==="pick"&&L?.status==="needs_pick")return(0,r.jsx)(fe,{profiles:L.profiles,onSelect:se});if(P==="login")return(0,r.jsx)(z,{devMode:process.env.KANE_DEV_MODE==="1",profiles:t.listProfiles(),onBasicLogin:async(e,n,s,o)=>{let{validateBasicAuth:a}=await import("./validate-basic-W7UJ5D25.js");await a(n,s,o),t.saveBasicAuth(e,n,{username:s,access_key:o}),t.setActiveProfile(e),t.setDefaultEnv(n)},onOAuthLogin:async(e,n)=>{let{LoginFlow:s}=await import("./login-flow-R5IGUIPA.js");t.setDefaultEnv(n),t.setActiveProfile(e),await new s(e,n,t).login()},onComplete:(e,n)=>{R(e),T(n),t.setActiveProfile(e),t.setDefaultEnv(n),D(e,n)},onCancel:()=>{E(0,"Login cancelled")}});if(P==="ensure-project"){let e=t.getActiveProfile()??"default",n=t.getDefaultEnv(),s=()=>{if(d==="login"){g("ensure-folder");return}k(t,l,e,n).folderId?y():g("ensure-folder")};return(0,r.jsxs)(c,{flexDirection:"column",children:[(0,r.jsx)(c,{paddingX:1,marginBottom:1,children:(0,r.jsx)(u,{color:"yellow",children:"Project & folder are required to save tests \xB7 Esc to use defaults \xB7 Ctrl+C to exit"})}),(0,r.jsx)(H,{resolver:w(),currentProjectId:l.load().project_id,env:n,onSelect:(o,a)=>{A(t,l,e,n,{projectId:o,projectName:a}),B(p=>[...p,`\u2713 Project: ${a} (${o})`]),s()},onCancel:async()=>{let o=await le();o&&(A(t,l,e,n,{projectId:o.id,projectName:o.name}),B(a=>[...a,`\u2713 Default project: ${o.name} (${o.id})`]),s())}})]})}if(P==="ensure-folder"){let e=t.getActiveProfile()??"default",n=t.getDefaultEnv(),s=t.loadProfileConfig(e,n);return(0,r.jsxs)(c,{flexDirection:"column",children:[(0,r.jsx)(c,{paddingX:1,marginBottom:1,children:(0,r.jsx)(u,{color:"yellow",children:"Project & folder are required to save tests \xB7 Esc to use defaults \xB7 Ctrl+C to exit"})}),(0,r.jsx)(W,{resolver:w(),projectId:s?.project_id??"",currentFolderId:l.load().folder_id,env:n,onSelect:(o,a)=>{A(t,l,e,n,{folderId:o,folderName:a}),B(p=>[...p,`\u2713 Folder: ${a} (${o})`]),y()},onCancel:async()=>{if(!s?.project_id)return;let o=await ae(s.project_id);o&&(A(t,l,e,n,{folderId:o.id,folderName:o.name}),B(a=>[...a,`\u2713 Default folder: ${o.name} (${o.id})`]),y())}})]})}return P==="input"?(0,r.jsxs)(c,{flexDirection:"column",children:[U.length>0&&(0,r.jsx)(c,{flexDirection:"column",paddingX:1,marginBottom:1,children:U.map((e,n)=>(0,r.jsx)(u,{color:"green",children:e},n))}),(0,r.jsx)(V,{onSubmit:ie,onEscape:()=>E(0,"User pressed Escape"),history:ne,placeholder:"Type an objective..."})]}):(0,r.jsx)(r.Fragment,{})}function fe({profiles:h,onSelect:d}){let[f,m]=(0,i.useState)(0),[C,S]=(0,i.useState)(!1);return I((v,t)=>{if(!C){if(t.escape){E(0,"Profile picker cancelled");return}if(t.upArrow&&f>0&&m(l=>l-1),t.downArrow&&f<h.length-1&&m(l=>l+1),t.return){S(!0);let l=h[f];d(l.profile,l.env).catch(()=>S(!1))}}}),(0,r.jsxs)(c,{flexDirection:"column",paddingX:1,children:[(0,r.jsx)(u,{color:"#ff9500",bold:!0,children:"Select a profile:"}),(0,r.jsx)(c,{marginTop:1,flexDirection:"column",children:h.map((v,t)=>(0,r.jsxs)(u,{children:[t===f?"\u276F ":" ",(0,r.jsx)(u,{color:t===f?"#ff9500":"white",bold:t===f,children:v.profile}),(0,r.jsxs)(u,{color:"gray",children:[" [",v.env,"]"]})]},`${v.profile}-${v.env}`))}),C&&(0,r.jsx)(c,{marginTop:1,children:(0,r.jsx)(u,{color:"yellow",children:"Validating credentials..."})})]})}export{_e as a};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as $}from"./chunk-YCCUBQY4.js";import{a as U}from"./chunk-
|
|
2
|
+
import{a as $}from"./chunk-YCCUBQY4.js";import{a as U}from"./chunk-RBG4VTHQ.js";import{a as T}from"./chunk-LPUQ4HWQ.js";import{a as k}from"./chunk-3PISMPFM.js";import{a as _}from"./chunk-EAUU5F4P.js";import{x as i}from"./chunk-BGXAW2B5.js";import{a as O}from"./chunk-HCBYKLMW.js";import{a as u,b as s}from"./chunk-C44QQJR4.js";import{a as K}from"./chunk-6YGTRKDT.js";import{e as S}from"./chunk-UR6MHSHU.js";var e=S(K(),1);var r=S(O(),1);function V(n,x,c){return{id:n,label:`${x} (${n})`,isActive:n===c}}function se({resolver:n,currentProjectId:x,env:c,onSelect:w,onCancel:C}){let[q,B]=(0,e.useState)([]),[D,l]=(0,e.useState)(!0),[H,m]=(0,e.useState)(!1),[J,g]=(0,e.useState)(!1),[Q,P]=(0,e.useState)(null),[d,p]=(0,e.useState)("list"),[v,R]=(0,e.useState)(""),[E,h]=(0,e.useState)(null),[I,X]=(0,e.useState)(""),b=(0,e.useRef)(!1),A=(0,e.useRef)(!0);(0,e.useEffect)(()=>{if(!n){P("Login first to browse projects"),l(!1);return}let o=new AbortController,a=I.trim();return A.current?l(!0):a&&g(!0),m(!0),P(null),(async()=>{try{let t=n.cached??await n.resolve();if(!t){P("Login first to browse projects"),l(!1),m(!1),g(!1);return}let L=k(c),F=new T(L.tmsBaseUrl,t.username,t.access_key),f=!0,N=0,G=a?{signal:o.signal,name:a,perPage:10}:{signal:o.signal,perPage:10};for await(let y of F.listProjectsStream(G)){if(f&&(l(!1),g(!1),A.current=!1,f=!1),y.totalLoaded===0&&y.done&&N===0&&!a){b.current=!0,p("naming"),m(!1);return}let M=y.projects.map(j=>V(j.project_id,j.name,x));B(N===0?M:j=>[...j,...M]),N+=y.projects.length,y.done&&m(!1)}f&&(l(!1),m(!1),g(!1))}catch(t){if(t?.name==="AbortError")return;P(t instanceof Error?t.message:String(t)),l(!1),m(!1),g(!1)}})(),()=>o.abort()},[n,x,c,I]);let Y=(0,e.useCallback)(o=>{let a=o.trim();if(!a){h("Name cannot be empty");return}h(null),p("creating"),(async()=>{try{if(!n)throw new Error("Not authenticated");let t=n.cached??await n.resolve();if(!t)throw new Error("Not authenticated");let L=k(c),f=await new T(L.tmsBaseUrl,t.username,t.access_key).createProject(a);w(f.id,f.name)}catch(t){h(t instanceof Error?t.message:String(t)),p("naming")}})()},[n,c,w]),z=(0,e.useCallback)(()=>{R(""),h(null),b.current?C():p("list")},[C]);return d==="naming"||d==="creating"?(0,r.jsxs)(u,{flexDirection:"column",borderStyle:"round",borderColor:i.orange,paddingX:2,paddingY:1,children:[(0,r.jsx)(s,{color:i.orange,bold:!0,children:"Create new project"}),b.current&&(0,r.jsx)(u,{marginTop:1,children:(0,r.jsx)(s,{color:i.dim,children:"No projects yet \u2014 let's create one."})}),(0,r.jsxs)(u,{marginTop:1,children:[(0,r.jsx)(s,{color:i.dim,children:"Name: "}),d==="naming"?(0,r.jsx)($,{value:v,onChange:o=>{R(o),E&&h(null)},onSubmit:Y,onCancel:z}):(0,r.jsx)(s,{children:v})]}),E&&(0,r.jsx)(u,{marginTop:1,children:(0,r.jsx)(s,{color:i.red,children:E})}),d==="creating"&&(0,r.jsx)(u,{marginTop:1,children:(0,r.jsx)(s,{color:i.dim,children:"Creating..."})}),d==="naming"&&(0,r.jsx)(_,{bindings:[{keys:"\u21B5",label:"create"}],escBackLabel:b.current?"cancel":"back"})]}):(0,r.jsx)(U,{title:"Projects",items:q,loading:D,loadingMore:H,searching:J,preserveSelectionById:!0,onSearch:X,error:Q,itemNoun:"projects",onTab:()=>{b.current=!1,p("naming")},extraHint:"tab to create new",onSelect:o=>{let a=o.label.replace(` (${o.id})`,"");w(o.id,a)},onCancel:C})}export{V as a,se as b};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
|
|
2
|
-
import{a as D}from"./chunk-
|
|
2
|
+
import{a as D}from"./chunk-HZUTFC3G.js";import{a as A}from"./chunk-ALF5ETLD.js";import{p as S,q as C,r as P,s as U,t as N}from"./chunk-BGXAW2B5.js";import{createServer as Oe}from"http";import{randomBytes as He}from"crypto";import{URL as $e}from"url";import Z from"process";import{Buffer as ee}from"buffer";import re from"path";import{fileURLToPath as ke}from"url";import{promisify as Le}from"util";import te from"child_process";import Me,{constants as Ie}from"fs/promises";import Y from"process";import G,{constants as me}from"fs/promises";import j from"process";import le from"os";import L from"fs";import se from"fs";import z from"fs";var E;function ie(){try{return z.statSync("/.dockerenv"),!0}catch{return!1}}function ae(){try{return z.readFileSync("/proc/self/cgroup","utf8").includes("docker")}catch{return!1}}function B(){return E===void 0&&(E=ie()||ae()),E}var k,ce=()=>{try{return se.statSync("/run/.containerenv"),!0}catch{return!1}};function u(){return k===void 0&&(k=ce()||B()),k}var K=()=>{if(j.platform!=="linux")return!1;if(le.release().toLowerCase().includes("microsoft"))return!u();try{if(L.readFileSync("/proc/version","utf8").toLowerCase().includes("microsoft"))return!u()}catch{}return L.existsSync("/proc/sys/fs/binfmt_misc/WSLInterop")||L.existsSync("/run/WSL")?!u():!1},d=j.env.__IS_WSL_TEST__?K:K();var de=(()=>{let e="/mnt/",r;return async function(){if(r)return r;let t="/etc/wsl.conf",n=!1;try{await G.access(t,me.F_OK),n=!0}catch{}if(!n)return e;let o=await G.readFile(t,{encoding:"utf8"}),i=/(?<!#.*)root\s*=\s*(?<mountPoint>.*)/g.exec(o);return i?(r=i.groups.mountPoint.trim(),r=r.endsWith("/")?r:`${r}/`,r):e}})(),fe=async()=>`${await de()}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`,M=async()=>d?fe():`${Y.env.SYSTEMROOT||Y.env.windir||String.raw`C:\Windows`}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe`;function f(e,r,t){let n=o=>Object.defineProperty(e,r,{value:o,enumerable:!0,writable:!0});return Object.defineProperty(e,r,{configurable:!0,enumerable:!0,get(){let o=t();return n(o),o},set(o){n(o)}}),e}import{promisify as Pe}from"util";import O from"process";import{execFile as Ae}from"child_process";import{promisify as pe}from"util";import ue from"process";import{execFile as ge}from"child_process";var he=pe(ge);async function I(){if(ue.platform!=="darwin")throw new Error("macOS only");let{stdout:e}=await he("defaults",["read","com.apple.LaunchServices/com.apple.launchservices.secure","LSHandlers"]),t=/LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(e)?.groups.id??"com.apple.Safari";return t==="com.apple.safari"?"com.apple.Safari":t}import we from"process";import{promisify as xe}from"util";import{execFile as ye,execFileSync as cr}from"child_process";var ve=xe(ye);async function X(e,{humanReadableOutput:r=!0,signal:t}={}){if(we.platform!=="darwin")throw new Error("macOS only");let n=r?[]:["-ss"],o={};t&&(o.signal=t);let{stdout:i}=await ve("osascript",["-e",e,n],o);return i.trim()}async function T(e){return X(`tell application "Finder" to set app_path to application file id "${e}" as string
|
|
3
3
|
tell application "System Events" to get value of property list item "CFBundleName" of property list file (app_path & ":Contents:Info.plist")`)}import{promisify as be}from"util";import{execFile as Se}from"child_process";var Ce=be(Se),y={MSEdgeHTM:{name:"Edge",id:"com.microsoft.edge"},MSEdgeBHTML:{name:"Edge Beta",id:"com.microsoft.edge.beta"},MSEdgeDHTML:{name:"Edge Dev",id:"com.microsoft.edge.dev"},AppXq0fevzme2pys62n3e0fbqa7peapykr8v:{name:"Edge",id:"com.microsoft.edge.old"},ChromeHTML:{name:"Chrome",id:"com.google.chrome"},ChromeBHTML:{name:"Chrome Beta",id:"com.google.chrome.beta"},ChromeDHTML:{name:"Chrome Dev",id:"com.google.chrome.dev"},ChromiumHTM:{name:"Chromium",id:"org.chromium.Chromium"},BraveHTML:{name:"Brave",id:"com.brave.Browser"},BraveBHTML:{name:"Brave Beta",id:"com.brave.Browser.beta"},BraveDHTML:{name:"Brave Dev",id:"com.brave.Browser.dev"},BraveSSHTM:{name:"Brave Nightly",id:"com.brave.Browser.nightly"},FirefoxURL:{name:"Firefox",id:"org.mozilla.firefox"},OperaStable:{name:"Opera",id:"com.operasoftware.Opera"},VivaldiHTM:{name:"Vivaldi",id:"com.vivaldi.Vivaldi"},"IE.HTTP":{name:"Internet Explorer",id:"com.microsoft.ie"}},ur=new Map(Object.entries(y)),F=class extends Error{};async function _(e=Ce){let{stdout:r}=await e("reg",["QUERY"," HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice","/v","ProgId"]),t=/ProgId\s*REG_SZ\s*(?<id>\S+)/.exec(r);if(!t)throw new F(`Cannot find Windows browser in stdout: ${JSON.stringify(r)}`);let{id:n}=t.groups,o=n.lastIndexOf("."),i=n.lastIndexOf("-"),c=o===-1?void 0:n.slice(0,o),a=i===-1?void 0:n.slice(0,i);return y[n]??y[c]??y[a]??{name:n,id:n}}var Ee=Pe(Ae),Be=e=>e.toLowerCase().replaceAll(/(?:^|\s|-)\S/g,r=>r.toUpperCase());async function H(){if(O.platform==="darwin"){let e=await I();return{name:await T(e),id:e}}if(O.platform==="linux"){let{stdout:e}=await Ee("xdg-mime",["query","default","x-scheme-handler/http"]),r=e.trim();return{name:Be(r.replace(/.desktop$/,"").replace("-"," ")),id:r}}if(O.platform==="win32")return _();throw new Error("Only macOS, Linux, and Windows are supported")}var Te=Le(te.execFile),$=re.dirname(ke(import.meta.url)),q=re.join($,"xdg-open"),{platform:w,arch:V}=Z;async function Fe(){let e=await M(),r=String.raw`(Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice").ProgId`,t=ee.from(r,"utf16le").toString("base64"),{stdout:n}=await Te(e,["-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand",t],{encoding:"utf8"}),o=n.trim(),i={ChromeHTML:"com.google.chrome",BraveHTML:"com.brave.Browser",MSEdgeHTM:"com.microsoft.edge",FirefoxURL:"org.mozilla.firefox"};return i[o]?{id:i[o]}:{}}var J=async(e,r)=>{let t;for(let n of e)try{return await r(n)}catch(o){t=o}throw t},v=async e=>{if(e={wait:!1,background:!1,newInstance:!1,allowNonzeroExitCode:!1,...e},Array.isArray(e.app))return J(e.app,a=>v({...e,app:a}));let{name:r,arguments:t=[]}=e.app??{};if(t=[...t],Array.isArray(r))return J(r,a=>v({...e,app:{name:a,arguments:t}}));if(r==="browser"||r==="browserPrivate"){let a={"com.google.chrome":"chrome","google-chrome.desktop":"chrome","com.brave.Browser":"brave","org.mozilla.firefox":"firefox","firefox.desktop":"firefox","com.microsoft.msedge":"edge","com.microsoft.edge":"edge","com.microsoft.edgemac":"edge","microsoft-edge.desktop":"edge"},l={chrome:"--incognito",brave:"--incognito",firefox:"--private-window",edge:"--inPrivate"},s=d?await Fe():await H();if(s.id in a){let m=a[s.id];return r==="browserPrivate"&&t.push(l[m]),v({...e,app:{name:g[m],arguments:t}})}throw new Error(`${s.name} is not supported as a default browser`)}let n,o=[],i={};if(w==="darwin")n="open",e.wait&&o.push("--wait-apps"),e.background&&o.push("--background"),e.newInstance&&o.push("--new"),r&&o.push("-a",r);else if(w==="win32"||d&&!u()&&!r){n=await M(),o.push("-NoProfile","-NonInteractive","-ExecutionPolicy","Bypass","-EncodedCommand"),d||(i.windowsVerbatimArguments=!0);let a=["Start"];e.wait&&a.push("-Wait"),r?(a.push(`"\`"${r}\`""`),e.target&&t.push(e.target)):e.target&&a.push(`"${e.target}"`),t.length>0&&(t=t.map(l=>`"\`"${l}\`""`),a.push("-ArgumentList",t.join(","))),e.target=ee.from(a.join(" "),"utf16le").toString("base64")}else{if(r)n=r;else{let a=!$||$==="/",l=!1;try{await Me.access(q,Ie.X_OK),l=!0}catch{}n=Z.versions.electron??(w==="android"||a||!l)?"xdg-open":q}t.length>0&&o.push(...t),e.wait||(i.stdio="ignore",i.detached=!0)}w==="darwin"&&t.length>0&&o.push("--args",...t),e.target&&o.push(e.target);let c=te.spawn(n,o,i);return e.wait?new Promise((a,l)=>{c.once("error",l),c.once("close",s=>{if(!e.allowNonzeroExitCode&&s>0){l(new Error(`Exited with code ${s}`));return}a(c)})}):(c.unref(),c)},_e=(e,r)=>{if(typeof e!="string")throw new TypeError("Expected a `target`");return v({...r,target:e})};function Q(e){if(typeof e=="string"||Array.isArray(e))return e;let{[V]:r}=e;if(!r)throw new Error(`${V} is not supported`);return r}function b({[w]:e},{wsl:r}){if(r&&d)return Q(r);if(!e)throw new Error(`${w} is not supported`);return Q(e)}var g={};f(g,"chrome",()=>b({darwin:"google chrome",win32:"chrome",linux:["google-chrome","google-chrome-stable","chromium"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe",x64:["/mnt/c/Program Files/Google/Chrome/Application/chrome.exe","/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe"]}}));f(g,"brave",()=>b({darwin:"brave browser",win32:"brave",linux:["brave-browser","brave"]},{wsl:{ia32:"/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe",x64:["/mnt/c/Program Files/BraveSoftware/Brave-Browser/Application/brave.exe","/mnt/c/Program Files (x86)/BraveSoftware/Brave-Browser/Application/brave.exe"]}}));f(g,"firefox",()=>b({darwin:"firefox",win32:String.raw`C:\Program Files\Mozilla Firefox\firefox.exe`,linux:"firefox"},{wsl:"/mnt/c/Program Files/Mozilla Firefox/firefox.exe"}));f(g,"edge",()=>b({darwin:"microsoft edge",win32:"msedge",linux:["microsoft-edge","microsoft-edge-dev"]},{wsl:"/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"}));f(g,"browser",()=>"browser");f(g,"browserPrivate",()=>"browserPrivate");var oe=_e;var ne=class{profile;environment;creds;oauth;constructor(r="default",t="prod",n){this.profile=r,this.environment=t,this.creds=n??new D,this.oauth=new A(t)}async login(){let{server:r,port:t}=await this.startCallbackServer(),n=N(t);try{let o=this.creds.loadClient(this.profile,this.environment),i=o?.redirect_uris;(!o||!i?.includes(n))&&(o=await this.oauth.registerClient(n),this.creds.saveClient(this.profile,this.environment,o));let c=o.client_id,[a,l]=A.generatePkce(),s=He(32).toString("hex"),m=this.oauth.buildAuthorizationUrl(c,l,s,n),p=await this.waitForCallback(r,t,m,s);if(!p)throw new Error("Login cancelled or timed out");let h=await this.oauth.exchangeCode(p,c,a,n),x={access_token:h.access_token,refresh_token:h.refresh_token,expires_at:Math.floor(Date.now()/1e3)+h.expires_in,scope:h.scope??"*"};return this.creds.saveCredentials(this.profile,this.environment,x),this.creds.setActiveProfile(this.profile),x}catch(o){throw r.close(),o}}startCallbackServer(){return new Promise((r,t)=>{let n=C,o=()=>{let i=Oe();i.on("error",c=>{c.code==="EADDRINUSE"&&n<P?(n++,o()):t(new Error(`Failed to start callback server: ${c.message}. Ports ${C}-${P} are all in use.`))}),i.listen(n,S,()=>{r({server:i,port:n})})};o()})}waitForCallback(r,t,n,o){return new Promise(i=>{let c=!1,a=setTimeout(()=>l(null),12e4),l=s=>{c||(c=!0,clearTimeout(a),r.close(),i(s))};r.on("request",(s,m)=>{let p=new $e(s.url??"/",`http://${S}:${t}`);if(p.pathname!==U){m.writeHead(404),m.end();return}let h=p.searchParams.get("state"),x=p.searchParams.get("code");if(p.searchParams.get("error")){m.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),m.end(R({state:"error",title:"Login failed",message:"We couldn't complete the sign-in. You can close this tab and try again from your terminal."})),l(null);return}if(h!==o){m.writeHead(400,{"Content-Type":"text/html; charset=utf-8"}),m.end(R({state:"error",title:"Invalid state",message:"The sign-in response didn't match this session. Please return to your terminal and try again."})),l(null);return}m.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),m.end(R({state:"success",title:"You're signed in",message:"Head back to your terminal \u2014 KaneAI is ready when you are.",autoClose:!0})),l(x)}),oe(n).catch(s=>{let m=s instanceof Error?s.message:String(s);process.stderr.write(`[auth] Could not open browser: ${m}
|
|
4
4
|
Please open this URL manually: ${n}
|
|
5
5
|
`)})})}};function R(e){let r=e.state==="success",t=r?"#22c55e":"#ef4444",n=r?"rgba(34, 197, 94, 0.12)":"rgba(239, 68, 68, 0.12)",o=r?'<svg viewBox="0 0 24 24" width="36" height="36" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12.5l4.5 4.5L19 7"/></svg>':'<svg viewBox="0 0 24 24" width="36" height="36" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"/></svg>',i=e.autoClose?"<script>setTimeout(function(){try{window.close();}catch(e){}}, 1500);</script>":"";return`<!doctype html>
|