@checksum-ai/runtime 2.0.6 → 2.0.7
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/.env +1 -1
- package/checksumlib.js +41 -41
- package/cli.js +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
- package/vtg-build/asset-manifest.json +3 -3
- package/vtg-build/index.html +1 -1
- package/vtg-build/static/js/main.ea43b3f2.js +3 -0
- package/vtg-build/static/js/{main.fd8a9311.js.map → main.ea43b3f2.js.map} +1 -1
- package/vtg-pw-bridge-runner.js +1 -1
- package/vtg-build/static/js/main.fd8a9311.js +0 -3
- /package/vtg-build/static/js/{main.fd8a9311.js.LICENSE.txt → main.ea43b3f2.js.LICENSE.txt} +0 -0
package/cli.js
CHANGED
|
@@ -1592,7 +1592,7 @@ ${this.executedSteps.map(d=>{switch(d.type){case"action":return d.thought;case"a
|
|
|
1592
1592
|
`)}`))}async getReductionComponents(a){var s,l;return a.interruptionEvent==="didRequestMoreItemsEvent"?{reducedHTML:(l=(s=a.payload)==null?void 0:s.promptData)==null?void 0:l.reducedHTML,reducedDomHTMLElement:this.lastReducedDOM,flashingHTML:[],elementsForNodeInterpretation:[],currentChecksumId:dpe.currentChecksumId}:this.pageInteractor.getCurrentReducedHTML({stopFlashingElementsDetection:!0,assignChecksumIdsToAllElements:!0,initialChecksumId:dpe.currentChecksumId})}getErrorFileContent(a){try{let s=Wdr.default.dirname(this.fallbackData.testInfo.config.configFile);return oNe.toString(a,s)}catch{throw new Error("Error while getting error file content for AI fallback")}}async getPageScreenshot(){try{return this.checksumPage.wrapInternalSteps(async()=>{var d,g;let a=await this.page.screenshot({fullPage:!0,type:((g=(d=this.arConfig)==null?void 0:d.modelPreset)==null?void 0:g.type)==="anthropic-vertexai"?"jpeg":"png"}),s=4e3;return(await(0,Y$r.default)(a).resize(s,s,{fit:"inside",withoutEnlargement:!0}).toBuffer()).toString("base64")})}catch{return}}getMatcherResultFileData(){let a=this.fallbackData.error.matcherResult;if((a==null?void 0:a.name)!=="toHaveScreenshot")return;let s=e((b,E=!0)=>{if(!b)return"";try{return(0,cXe.readFileSync)(b,E?"base64":"utf-8")}catch{return""}},"readFileSafe"),l=s(a==null?void 0:a.actual),d=s(a==null?void 0:a.diff),g=s(a==null?void 0:a.expected);if(!g)throw this.log("[AIFallback] No expected file found for 'toHaveScreenshot'"),new Error("No expected file found for 'toHaveScreenshot'");return{...a,actual:l,diff:d,expected:g}}async prepareDataForCurrentIteration(){let a=await this.getPreviousActionOverview(),s=this.getMatcherResultFileData(),{reducedHTML:l,flashingHTML:d,elementsForNodeInterpretation:g,currentChecksumId:b}=await this.getReductionComponents(a),E=await this.getPageScreenshot();this.lastReducedDOM=new K$r.JSDOM(l),dpe.currentChecksumId=b;let S=(()=>{let F=this.executedSteps[this.executedSteps.length-1];if(F&&F.type==="action")return F.locator})();return{reducedHTML:l,flashingHTML:d,elementsForNodeInterpretation:g,previousActionOverview:a,screenshot:E,matcherResult:s,fallbackActionErrorMessage:this.fallbackData.error.message,locatorUsed:S}}async iterate(){this.hasPreviousActionFailed=!1;let a=this.CLIENT_MAX_ITERATIONS;for(;a-- >0;){if(this.didCancel)return this.aiFallbackAnalytics.aiFallbackEnd({result:"failed",avgDuration:0,failMessage:"User canceled"}),{result:"failed",thought:"Fallback Canceled"};let s=await this.prepareDataForCurrentIteration(),l=Date.now(),d=await this.getIterationResponse(s),g=Date.now()-l,{thought:b,command:E,changedVariables:S}=d;if(this.traceAIFallbackIterationNew({thought:b,command:E,duration:g}),this.handleChangedVariables(S),this.fallbackData.type==="assertion"){let q=d.payload;if(E==="scroll"){await this.scrollToElement(q.checksumId);continue}return this.handleAssertionResponse(q)}let F=d.payload;if(this.didCancel)return this.aiFallbackAnalytics.aiFallbackEnd({result:"failed",avgDuration:0,failMessage:"User canceled"}),{result:"failed",thought:"Fallback Canceled"};let O=this.getStopIterationResult(E);if(O)return{result:O.result,summary:F.summary??void 0,thought:b};let N=Date.now();try{let q=await this.pageInteractor.translateActionResponseToAgentPotentialAction(F);await this.executeFallbackAction(F,q),this.trackActionExecution(F,q,Date.now()-N)}catch(q){this.log("[AIFallback] Error while executing selector",q.message),this.hasPreviousActionFailed=!0,this.trackActionExecutionFailure(F,Date.now()-N,q.message);continue}}return this.errorMessage="maximum repetition reached",this.log(`[AIFallback] ${this.errorMessage}`),{result:"failed",thought:"Fallback failed to recover action"}}trackActionExecution(a,s,l){this.aiFallbackAnalytics.aiFallbackActionExecution({thought:a.thought,duration:l,command:a.action.type,checksumId:a.action.checksumid,type:a.action.type,selector:s.selector,locator:s.locator,fillValue:s.fillValue,getMoreItemsId:s.getMoreItemsId})}trackActionExecutionFailure(a,s,l){this.aiFallbackAnalytics.aiFallbackActionExecutionFailure({thought:a.thought,duration:s,command:a.action.type,checksumId:a.action.checksumid,error:l})}getStopIterationResult(a){if(a==="fail")return this.log("[AIFallback] Received fail signal, will quit"),this.errorMessage="Received fail signal",{result:"failed"};if(a==="finish")return this.log("[AIFallback] Received finish step"),{result:"finish"}}handleAssertionResponse(a){if(this.log(`[AIFallback] for assertion returned with value: ${a.command}, feedback: ${a.analysis}`),this.didCancel)return{result:"failed",thought:"Fallback Canceled"};let s=a.command,l=["irrelevant","pass","soft_reject","soft_pass","soft_assertion"].includes(a.command);this.aiFallbackAnalytics.aiFallbackAssertion({duration:0,command:a.command,thought:a.thought}),this.executedSteps.push({type:"assertion",feedback:a.analysis,response:a.command});let d={response:a.command,feedback:a.analysis};if(this.stepsPayload.push(d),a.command==="recovery"){let b={description:a.analysis,reason:a.thought};return{result:"switch_to_fallback_action",assertionToActionData:b,summary:a.summary,thought:a.thought}}return a.command==="hard_assertion"?{result:"hard_assertion",thought:a.thought}:{result:l?"soft_assertion":"failed",summary:a.summary,thought:a.thought}}async scrollToElement(a){if(!a){this.log("[AIFallback] No checksumId provided for scroll");return}await this.pageInteractor.scrollElementIntoViewByChecksumId(a),await IT(1e3)}async executeFallbackAction(a,s){let l=Date.now();try{await this.checksumPage.step(`AI: ${s.thought}`,async()=>await this.pageInteractor.performAction(s),void 0,{noLocation:!0})}catch(d){let g=Date.now()-l;throw this.aiFallbackAnalytics.aiFallbackActionExecutionFailure({thought:s.thought,command:a.action.type,duration:g,checksumId:a.action.checksumid,error:d.message}),this.fallbackData.error=d,new Error("Action failed")}this.hasPreviousActionFailed=!1,this.executedSteps.push({type:"action",...s}),this.aiFallbackAnalytics.aiFallbackActionExecution({thought:a.thought,duration:Date.now()-l,command:a.action.type,checksumId:a.action.checksumid,type:a.action.type,selector:s.selector,locator:s.locator,fillValue:s.fillValue,getMoreItemsId:s.getMoreItemsId}),this.addActionStepPayload(a,s),await IT(1e3)}addActionStepPayload(a,s){let{thought:l,action:{checksumid:d,type:g}}=a,{selector:b,locator:E,fillValue:S,getMoreItemsId:F}=s,O={thought:l,checksumid:d,type:g,selector:b,locator:E,fillValue:S,getMoreItemsId:F};return this.stepsPayload.push(O),O}handleMockServer(){return this.finish?{thought:"finish",command:"finish",payload:{thought:"finish"},changedVariables:[]}:(--this.actionsCounter===0&&(this.finish=!0),{thought:"mock-thought",changedVariables:[],command:"click",payload:{thought:"mock-thought",action:{type:"click",checksumid:"10"}}})}handleChangedVariables(a){a.forEach(({name:s,value:l})=>{this.checksumPage.variableStore.setVariable(s,l)})}async getIterationResponse({reducedHTML:a,flashingHTML:s,elementsForNodeInterpretation:l,previousActionOverview:d,screenshot:g,codeTrace:b,fallbackActionErrorMessage:E,locatorUsed:S}){let{apiKey:F}=this;if(this.mockServer)return this.handleMockServer();let O={reduction:{reducedHTML:a,flashingHTML:s,elementsForNodeInterpretation:l},currentURL:this.page.url(),previousActionOverview:d,resolvesSmartAssertion:this.withChecksumAI,variables:this.variables,screenshot:g,fallbackActionErrorMessage:E,locatorUsed:S};try{let N=await HNe(async()=>await fetch(`${this.getAPIBaseURL()}/iterate`,{method:"POST",headers:{"Content-Type":"application/json",ChecksumAppCode:this.apiKey},body:JSON.stringify({appName:F,sessionId:this.sessionId,iterationData:O})}));if(N.status!==201)throw new Error("Failed to get next iteration");let q=await N.json();return this.log("[AIFallback] Received next action",q),this.sanitizeIterationResponse(q)}catch(N){throw this.log("[AIFallback] Error calling iterate",N),N}}sanitizeIterationResponse(a){var s;return this.fallbackType==="assertion"?{thought:a.thought,command:a.command,payload:a,changedVariables:a.changedVariables??[]}:{thought:a.thought,command:(s=a.action)==null?void 0:s.type,payload:a,changedVariables:a.changedVariables??[]}}async getPreviousActionOverview(){let a=await this.pageInteractor.handleFileChooserEvent();return{success:!this.hasPreviousActionFailed,...this.hasPreviousActionFailed?{failureEvent:"generalExecutionFailureError"}:{},...this.getPreviousWaitActionOverview(),...a,...await this.getPreviousGetMoreItemsActionOverview()}}getExecutedActions(){return this.executedSteps.filter(a=>a.type==="action")}async getPreviousGetMoreItemsActionOverview(){let a=this.getExecutedActions(),s=a[a.length-1];if((s==null?void 0:s.eventCode)!=="get_more_items"||!this.lastReducedDOM)return{};try{return await this.pageInteractor.addMoreItemsToDom(this.lastReducedDOM.window.document.body,s.getMoreItemsId),{interruptionEvent:"didRequestMoreItemsEvent",payload:{promptData:{reducedHTML:this.lastReducedDOM.serialize()},getMoreItemsId:s.getMoreItemsId}}}catch{return{}}}getPreviousWaitActionOverview(){var l;let a=this.getExecutedActions();if(((l=a[a.length-1])==null?void 0:l.eventCode)!=="wait")return{};let s=0;return a.slice().reverse().every(d=>d.eventCode==="wait"?(s++,!0):!1,0),{payload:{waitCount:s}}}async initSession(){let{apiKey:a,goal:s,thoughts:l}=this;if(this.log("[AIFallback] Calling init session...",{appName:a,goal:s,thoughts:l}),!a){let E="Missing Checksum API key, will not run AI fallback";throw Mor(E),new Error(E)}if(this.mockServer){this.sessionId="mock-session-id";return}let d=this.getErrorFileContent(this.fallbackData.error),g={name:this.fallbackData.error.name??"Error",message:this.fallbackData.error.message,stack:this.fallbackData.error.stack},b={type:this.fallbackData.type,resolveSmartAssertion:this.withChecksumAI,storyTitle:s,testSuiteId:this.testSuiteId,testId:this.testId,thoughtsAndActions:{previous:l.slice(0,Math.max(l.length-1,0)).map(E=>({thought:E})),failing:{thought:l[l.length-1]},next:[]},testFileName:this.testFile.split("/").pop()??"",error:g,errorFileContent:d,matcherResult:this.getMatcherResultFileData(),assertionToActionData:this.fallbackData.type==="recovery"||this.fallbackData.type==="action"?this.fallbackData.assertionToActionData:void 0,arMode:this.arMode,overrideOptions:this.arOverrideOptions};this.aiFallbackAnalytics.aiFallbackStart({error:this.fallbackData.error.message,failedThought:this.getFailedThought()});try{let E=await HNe(async()=>await fetch(`${this.getAPIBaseURL()}/init`,{method:"POST",headers:{"Content-Type":"application/json",ChecksumAppCode:this.apiKey},body:JSON.stringify({appName:a,data:b,format:"json"})}));if(E.status!==201)throw new Error("Failed to init session after 3 retries");let{sessionId:S,arConfig:F}=await E.json();this.sessionId=S,this.arConfig=F,this.aiFallbackAnalytics.aiFallbackConfig({config:F}),this.log("[AIFallback] Session ID",this.sessionId)}catch(E){throw this.withChecksumAI&&E.message==="fetch failed"&&(this.checksumPage.step(oXe,async()=>{throw new Error(oXe)}),Mor(oXe)),this.aiFallbackAnalytics.aiFallbackEnd({result:"failed",avgDuration:this.iterationSteps.length>0?this.iterationSteps.reduce((S,F)=>S+F.duration,0)/this.iterationSteps.length:0,failMessage:E==null?void 0:E.message}),this.log("[AIFallback] Error calling init session",E),E}}getReleaseIterationResultIfExists(a){if(this.fallbackType==="assertion"){if(a==="soft_assertion")return{result:"soft_assertion"}}else{if(a==="finish")return{result:"finish"};if(a==="fail")return{result:"failed"}}}translateExecutedActionToFallbackAction(a){return{type:"action",esraMetadata:a.esraMetadata,generatedLocator:a.locator,selector:a.selector,parentFramesSelectors:a.parentFramesSelectors,method:this.getMethodForPotentialAction(a),thought:a.thought}}getMethodForPotentialAction(a){return{name:this.actionEventCodeToMethodName[a.eventCode],args:e(()=>{switch(a.eventCode){case"click":case"double_click":return[{position:a.clickOffset}];case"drag_and_drop":return[this.pageInteractor.makeLocator(a.dropTarget.selector,a.dropTarget.parentFramesSelectors)];case"input":case"click_and_type":case"clear_and_type":case"selectoption":case"keystroke":case"navigation":return[this.pageInteractor.getActionFillValue(a,!1)];case"upload_files":return a.files;default:return}},"makeArgs")()}}getAPIBaseURL(){return this.API_BASE_DOMAIN+this.API_BASE_ROUTE}getAnalyticsPayload(){return{fallbackType:"ai",error:this.errorMessage,thought:this.getFailedThought(),sessionId:this.sessionId,steps:this.stepsPayload.map(a=>JSON.stringify(a))}}getFailedThought(){return this.thoughts[this.thoughts.length-1]}traceAIFallbackIterationNew(a){this.aiFallbackAnalytics.aiFallbackIterationResponse({duration:a.duration,command:a.command,thought:a.thought}),this.iterationSteps.push({thought:a.thought,command:a.command,duration:a.duration})}toString(){return`Checksum AI ("${this.getFailedThought()}")`}get fallbackType(){return this.fallbackData.type}get fallbackAnalyticsPayload(){return{previousThoughts:this.thoughts,iterationSteps:this.iterationSteps}}};e(dpe,"AIFallback"),dpe.alreadyTriggered=!1,dpe.currentChecksumId="0";var Hdr=dpe;var Gdr=class Gdr extends ahe{constructor(){super(...arguments);this.API_BASE_ROUTE="/client-api/runtime/esra-fallback"}init(a){let{apiKey:s,testId:l,apiURL:d,checksumId:g,fileName:b,timeout:E}=a;return this.data={...this.data,testId:l,checksumId:g,fileName:b},this.apiKey=s,d&&(this.API_BASE_DOMAIN=d.replace(/\/$/,"")),E&&(this.timeout=E),this.checksumRootFolder=process.env.CHECKSUM_ROOT_FOLDER??gNr(yNr(this.data.fileName),this.data.fileName),this}getRecoveryAttemptTitle(a){return`Checksum auto-heal: trying to locate the element using checksumSelector("${this.data.checksumId}")...`}async sendLog(a){let s=this.getLogPayload(a);try{fetch(`${this.getAPIBaseURL()}/log`,{method:"POST",headers:{"Content-Type":"application/json",ChecksumAppCode:this.apiKey},body:JSON.stringify(s)}).catch(l=>this.log("[ESRAFallback] Error sending log"))}catch(l){this.log("[ESRAFallback] Error sending log",l)}}getLogPayload(a){let s=process.env.CHECKSUM_TEST_SUITE_ID??"",{selector:l}=a,{checksumId:d,testId:g}=this.data;return this.logPayload={testSuiteId:s,testId:g,selector:l,checksumId:d,thought:this.thought},this.logPayload}async getMetadataForTestId(){return dNr(this.checksumRootFolder,this.data.testId)}getAPIBaseURL(){return this.API_BASE_DOMAIN+this.API_BASE_ROUTE}};e(Gdr,"MetadataBaseFallback");var YNe=Gdr;var _AlternateSelectorFallback=class _AlternateSelectorFallback extends YNe{constructor(){super(...arguments);this.timeout=5*1e3}init(r){return super.init(r),this}async resolve(params){var r;try{let{method,args}=params,{checksumId}=this.data,alternateLocators=[];try{let a=await this.getMetadataForTestId();if(!(checksumId in a)||!a[checksumId].alternateLocators)throw new Error(`No alternate selection metadata found for id ${checksumId}`);alternateLocators=a[checksumId].alternateLocators.locators}catch(a){throw super.log(`Could not read alternate selector metadata file, ${a.message}`),a}try{this.log("Resolving alternate selectors locators");let elementsMap=new Map;await Promise.all(alternateLocators.map(async locatorExpression=>{let locator=eval(fAe(locatorExpression,"this.page"));try{await E8(locator.first().waitFor({bypassChecksum:!0}),5e3),(await E8(locator.elementHandles({bypassChecksum:!0}),1e3)).forEach(s=>{elementsMap.has(s)?elementsMap.set(s,elementsMap.get(s)+1):elementsMap.set(s,1)})}catch(a){return}}));let majorityElementHandle=(r=Array.from(elementsMap.entries()))==null?void 0:r.reduce((a,s)=>a[1]>s[1]?a:s)[0];if(!majorityElementHandle)throw this.errorMessage="No alternate element found",new Error(this.errorMessage);let totalElements=Array.from(elementsMap.values()).reduce((a,s)=>a+s,0),elementSelector=await this.evaluateWithChecksum(async({element:a})=>window.playwright.selector(a),{element:majorityElementHandle});this.log(`Resolved alternate selector: ${elementSelector}' With majority vote of ${elementsMap.get(majorityElementHandle)} out of ${totalElements} elements`),await this.checksumPage.wrapNoLocationSteps(async()=>this.execute(this.page.locator(elementSelector),method,args));let fallbackResult={selector:elementSelector,generatedLocator:`locator("${elementSelector}")`,esraMetadata:void 0};return this.sendLog(fallbackResult),this.logPayload=this.logPayload.concat({mejorityVote:`${elementsMap.get(majorityElementHandle)}/${totalElements}`}),this.checksumPage.addErrorMessage(params.error,`${this.thought?`"${this.thought}" auto-recovered`:"Auto-recovered"} using alternative selector "${elementSelector}"`),{steps:[{type:"action",...fallbackResult}]}}catch(a){throw new Error(`Failed to execute compound selection fallback action: ${a.message}`)}}catch(a){this.errorMessage=a.message,this.log(this.errorMessage);return}}getAnalyticsPayload(){return{fallbackType:"alternative-selector",...this.logPayload??{checksumId:this.data.checksumId,error:this.errorMessage}}}toString(){return`Checksum alternative selector (${this.data.checksumId})`}};e(_AlternateSelectorFallback,"AlternateSelectorFallback");var Kdr=_AlternateSelectorFallback;var G0i=require("@playwright/test");var Lei=require("jsdom");var X$r=qd(require("path"));var Xdr=class Xdr{constructor(r="all"){this.listeners=[];this.logLevel=r}log(r,...a){let s=this.shouldLog(r);try{let d=new Error().stack.split(`
|
|
1593
1593
|
`)[4].trim().match(/\(([^)]+)\)/);if(!(d&&d[1]))throw new Error;let g=d[1].split(":"),b=g.slice(0,-2).join(":"),E=g[g.length-2],F=`${X$r.default.basename(b)}:${E}`;s&&(console.log("\x1B[34m",F,"\x1B[0m",...a),setTimeout(()=>this.listeners.forEach(O=>O.onLog(...a)),0)),this.logStream&&this.logStream.write(`[${F}] ${a.map(O=>{if(typeof O=="object")try{return JSON.stringify(O,null,2)}catch{}return String(O)}).join(" ")}
|
|
1594
1594
|
`)}catch{s&&console.log(...a)}}shouldLog(r){switch(r){case"warning":return this.logLevel==="all"||this.logLevel==="warnings";case"error":return!0;case"info":return this.logLevel==="all"}}addListener(r){this.listeners.push(r)}info(...r){this.log("info",...r)}warning(...r){this.log("warning",...r)}error(...r){this.log("error",...r)}setLogLevel(r){this.logLevel=r}setLogStream(r){this.logStream=r}};e(Xdr,"Logger");var Ydr=Xdr,vDe=new Ydr,Mei=Object.assign((...i)=>vDe.info(...i),{info:e((...i)=>vDe.info(...i),"info"),warning:e((...i)=>vDe.warning(...i),"warning"),error:e((...i)=>vDe.error(...i),"error"),setLogLevel:e(i=>vDe.setLogLevel(i),"setLogLevel"),setLogStream:e(i=>vDe.setLogStream(i),"setLogStream"),addLogListener:e(i=>vDe.addListener(i),"addLogListener")}),VA=Mei;var JYr=qd(VYr());var K0i=require("@playwright/test");var Y0i=qd(CEt());var Mgr=class Mgr{constructor(r){this.options=r}async handleError(r,a,s){let l=`Error in ${a} action during ${r} execution: ${s.message}`;throw new Error(l)}async guardedExecute(){try{return await(this.options.timeout!=null?E8(this.execute(),this.options.timeout,"Execution timeout"):this.execute())}catch(r){return this.handleError(this.options.method,this.constructor.name,r)}}};e(Mgr,"Action");var K3t=Mgr,jgr=class jgr extends K3t{async execute(){return this.options.method in this.options.locator?this.options.locator[this.options.method](...this.options.args):this.options.locator}};e(jgr,"PlaywrightAction");var Ogr=jgr,Ugr=class Ugr extends K3t{constructor(a,s){super(a);this.pageInteractor=s}};e(Ugr,"APIAction");var Bgr=Ugr,Qgr=class Qgr extends Bgr{constructor(r,a){super(r,a.pageInteractor)}async execute(){try{let{locator:r,args:a}=this.options,[s,l]=a,d=await r.screenshot({timeout:3e4}),b=(await this.pageInteractor.getTextDetection(d)).getRectangleByTextAndSizeRanking(s,l);if(!b)throw new Error("No matching text found");await r.click({position:b.center})}catch(r){throw new Error(`Error in canvas click action: ${r.message}`)}}};e(Qgr,"CanvasClickAction");var Rgr=Qgr,Y3t=class Y3t{static createAction(r,a){return r.method in this.customActionMap?new this.customActionMap[r.method]({...r,timeout:15e3},a):new Ogr(r)}};e(Y3t,"ActionFactory"),Y3t.customActionMap={canvasClick:Rgr};var Lgr=Y3t;Pin();Hee();var Bhe=class Bhe{constructor(){this.toolsMap={}}get addTool(){return this._addTool||(this._addTool=this.buildAddToolFacade()),this._addTool}getToolNames(){return Object.keys(this.toolRecord.names)}get tools(){return this.toolsMap}buildAddToolFacade(){let r={},a=this.toolRecord.tools;for(let s of Object.keys(a))r[s]=l=>this._addSingleTool(s,l);return r}static describeTool(r,a){if(r instanceof W1.ZodObject){let s={},l=r.shape;for(let d of Object.keys(l)){let g=l[d],b=a==null?void 0:a[d];typeof b=="string"?s[d]=g.describe(b):b&&typeof b=="object"?s[d]=Bhe.describeTool(g,b):s[d]=g}return W1.object(s).strict()}if(r instanceof W1.ZodArray){let s=r.element;return a&&typeof a=="object"&&a.element?W1.array(Bhe.describeTool(s,a.element)):r}return r instanceof W1.ZodOptional?Bhe.describeTool(r.unwrap(),a).optional():r instanceof W1.ZodNullable?Bhe.describeTool(r.unwrap(),a).nullable():typeof a=="string"?r.describe(a):r}_addSingleTool(r,a){let s=a.name??String(r),d=this.toolRecord.tools[r]._create({...a,name:s,params:a.params,handler:a.handler}),g=this.toolRecord.tools[r],b=Bhe.describeTool(g,a.params),S=sAr(e(async F=>{let O=b.parse(F);return a.handler(O)},"validatedHandler"),{name:d.name,description:d.description,schema:b});return this.toolsMap[r]=S,S}_buildOne(r,a){return this._addSingleTool(r,{...a,name:String(r)})}static buildTool(r,a,s){let l=String(a),g=r.tools[a]._create({name:l,description:"",handler:s,params:{}}),b=r.tools[a],E=Bhe.describeTool(b,{});return sAr(e(async O=>{let N=E.parse(O);return s(N)},"validatedHandler"),{name:g.name,description:g.description,schema:E})}};e(Bhe,"AbstractToolContainer");var xbe=Bhe;Hee();var owt=class owt{constructor(r,a){this.version=r;let s={};for(let d in a)s[d]=d;this.names=s;let l={};for(let d in a){let g=a[d];Object.defineProperty(g,"name",{value:d,configurable:!1,enumerable:!0,writable:!1}),g._create=(b=>E=>{let S=E.name??b;return{...E,name:S}})(d),l[d]=g}this.tools=l}static create(r,a){return new owt(r,a)}};e(owt,"ToolProtocol");var swt=owt;var wL=swt.create("v1",{readFile:W1.object({path:W1.string()}),getState:W1.object({thought:W1.string()}),invokeCode:W1.object({code:W1.string().refine(i=>{let r=i.trim();return r.includes("page.getByChecksumId(")||r.includes("page.getByChecksumId(")||r.startsWith("const ")||r.startsWith("let ")||r.startsWith("var ")||r.includes("=")||r.includes("variableStore.")},{message:"Code should use page.getByChecksumId() for element targeting, or be explicit variable assignments/function calls"}),thought:W1.string()}),wait:W1.object({time:W1.number().optional()}),scroll:W1.object({checksumId:W1.string(),thought:W1.string()}),final_result:W1.object({result:W1.enum(["pass","fail"]),thought:W1.string(),visualAnalysis:W1.string().optional()}),getElementScreenshot:W1.object({checksumId:W1.string(),thought:W1.string()}),analyze:W1.object({previousImmediateSteps:W1.string(),currentFailingStep:W1.string(),nextImmediateSteps:W1.string(),testStepToStopAt:W1.string()}),think:W1.object({thought:W1.string()})});var SAr=qd(Bin(),1);var Zae=Object.create(null);Zae.open="0";Zae.close="1";Zae.ping="2";Zae.pong="3";Zae.message="4";Zae.upgrade="5";Zae.noop="6";var xet=Object.create(null);Object.keys(Zae).forEach(i=>{xet[Zae[i]]=i});var Aet={type:"error",data:"parser error"};var bet=e(({type:i,data:r},a,s)=>r instanceof ArrayBuffer||ArrayBuffer.isView(r)?s(a?r:"b"+Rin(r,!0).toString("base64")):s(Zae[i]+(r||"")),"encodePacket"),Rin=e((i,r)=>Buffer.isBuffer(i)||i instanceof Uint8Array&&!r?i:i instanceof ArrayBuffer?Buffer.from(i):Buffer.from(i.buffer,i.byteOffset,i.byteLength),"toBuffer"),fAr;function Lin(i,r){if(i.data instanceof ArrayBuffer||ArrayBuffer.isView(i.data))return r(Rin(i.data,!1));bet(i,!0,a=>{fAr||(fAr=new TextEncoder),r(fAr.encode(a))})}e(Lin,"encodePacketToBinary");var Eet=e((i,r)=>{if(typeof i!="string")return{type:"message",data:Min(i,r)};let a=i.charAt(0);if(a==="b"){let s=Buffer.from(i.substring(1),"base64");return{type:"message",data:Min(s,r)}}return xet[a]?i.length>1?{type:xet[a],data:i.substring(1)}:{type:xet[a]}:Aet},"decodePacket"),Min=e((i,r)=>{switch(r){case"arraybuffer":return i instanceof ArrayBuffer?i:Buffer.isBuffer(i)?i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength):i.buffer;case"nodebuffer":default:return Buffer.isBuffer(i)?i:Buffer.from(i)}},"mapBinary");var jin="",Uin=e((i,r)=>{let a=i.length,s=new Array(a),l=0;i.forEach((d,g)=>{bet(d,!1,b=>{s[g]=b,++l===a&&r(s.join(jin))})})},"encodePayload"),Qin=e((i,r)=>{let a=i.split(jin),s=[];for(let l=0;l<a.length;l++){let d=Eet(a[l],r);if(s.push(d),d.type==="error")break}return s},"decodePayload");function qin(){return new TransformStream({transform(i,r){Lin(i,a=>{let s=a.length,l;if(s<126)l=new Uint8Array(1),new DataView(l.buffer).setUint8(0,s);else if(s<65536){l=new Uint8Array(3);let d=new DataView(l.buffer);d.setUint8(0,126),d.setUint16(1,s)}else{l=new Uint8Array(9);let d=new DataView(l.buffer);d.setUint8(0,127),d.setBigUint64(1,BigInt(s))}i.data&&typeof i.data!="string"&&(l[0]|=128),r.enqueue(l),r.enqueue(a)})}})}e(qin,"createPacketEncoderStream");var dAr;function cwt(i){return i.reduce((r,a)=>r+a.length,0)}e(cwt,"totalLength");function uwt(i,r){if(i[0].length===r)return i.shift();let a=new Uint8Array(r),s=0;for(let l=0;l<r;l++)a[l]=i[0][s++],s===i[0].length&&(i.shift(),s=0);return i.length&&s<i[0].length&&(i[0]=i[0].slice(s)),a}e(uwt,"concatChunks");function $in(i,r){dAr||(dAr=new TextDecoder);let a=[],s=0,l=-1,d=!1;return new TransformStream({transform(g,b){for(a.push(g);;){if(s===0){if(cwt(a)<1)break;let E=uwt(a,1);d=(E[0]&128)===128,l=E[0]&127,l<126?s=3:l===126?s=1:s=2}else if(s===1){if(cwt(a)<2)break;let E=uwt(a,2);l=new DataView(E.buffer,E.byteOffset,E.length).getUint16(0),s=3}else if(s===2){if(cwt(a)<8)break;let E=uwt(a,8),S=new DataView(E.buffer,E.byteOffset,E.length),F=S.getUint32(0);if(F>Math.pow(2,21)-1){b.enqueue(Aet);break}l=F*Math.pow(2,32)+S.getUint32(4),s=3}else{if(cwt(a)<l)break;let E=uwt(a,l);b.enqueue(Eet(d?E:dAr.decode(E),r)),s=0}if(l===0||l>i){b.enqueue(Aet);break}}}})}e($in,"createPacketDecoderStream");var _Ar=4;var aan=qd(OSe(),1);var Rhe=process.nextTick,s$=global,Jin="nodebuffer";function zin(){return new mAr}e(zin,"createCookieJar");function c2i(i){let r=i.split("; "),a=r[0].indexOf("=");if(a===-1)return;let s=r[0].substring(0,a).trim();if(!s.length)return;let l=r[0].substring(a+1).trim();l.charCodeAt(0)===34&&(l=l.slice(1,-1));let d={name:s,value:l};for(let g=1;g<r.length;g++){let b=r[g].split("=");if(b.length!==2)continue;let E=b[0].trim(),S=b[1].trim();switch(E){case"Expires":d.expires=new Date(S);break;case"Max-Age":let F=new Date;F.setUTCSeconds(F.getUTCSeconds()+parseInt(S,10)),d.expires=F;break;default:}}return d}e(c2i,"parse");var hAr=class hAr{constructor(){this._cookies=new Map}parseCookies(r){r&&r.forEach(a=>{let s=c2i(a);s&&this._cookies.set(s.name,s)})}get cookies(){let r=Date.now();return this._cookies.forEach((a,s)=>{var l;((l=a.expires)===null||l===void 0?void 0:l.getTime())<r&&this._cookies.delete(s)}),this._cookies.entries()}addCookies(r){let a=[];for(let[s,l]of this.cookies)a.push(`${s}=${l.value}`);a.length&&(r.setDisableHeaderCheck(!0),r.setRequestHeader("cookie",a.join("; ")))}appendCookies(r){for(let[a,s]of this.cookies)r.append("cookie",`${a}=${s.value}`)}};e(hAr,"CookieJar");var mAr=hAr;function lwt(i,...r){return r.reduce((a,s)=>(i.hasOwnProperty(s)&&(a[s]=i[s]),a),{})}e(lwt,"pick");var u2i=s$.setTimeout,l2i=s$.clearTimeout;function Lhe(i,r){r.useNativeTimers?(i.setTimeoutFn=u2i.bind(s$),i.clearTimeoutFn=l2i.bind(s$)):(i.setTimeoutFn=s$.setTimeout.bind(s$),i.clearTimeoutFn=s$.clearTimeout.bind(s$))}e(Lhe,"installTimerFunctions");var p2i=1.33;function Win(i){return typeof i=="string"?f2i(i):Math.ceil((i.byteLength||i.size)*p2i)}e(Win,"byteLength");function f2i(i){let r=0,a=0;for(let s=0,l=i.length;s<l;s++)r=i.charCodeAt(s),r<128?a+=1:r<2048?a+=2:r<55296||r>=57344?a+=3:(s++,a+=4);return a}e(f2i,"utf8Length");function pwt(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}e(pwt,"randomString");function Hin(i){let r="";for(let a in i)i.hasOwnProperty(a)&&(r.length&&(r+="&"),r+=encodeURIComponent(a)+"="+encodeURIComponent(i[a]));return r}e(Hin,"encode");function Gin(i){let r={},a=i.split("&");for(let s=0,l=a.length;s<l;s++){let d=a[s].split("=");r[decodeURIComponent(d[0])]=decodeURIComponent(d[1])}return r}e(Gin,"decode");var san=qd(RSe(),1);var B2i=(0,san.default)("engine.io-client:transport"),AAr=class AAr extends Error{constructor(r,a,s){super(r),this.description=a,this.context=s,this.type="TransportError"}};e(AAr,"TransportError");var hwt=AAr,bAr=class bAr extends aan.Emitter{constructor(r){super(),this.writable=!1,Lhe(this,r),this.opts=r,this.query=r.query,this.socket=r.socket,this.supportsBinary=!r.forceBase64}onError(r,a,s){return super.emitReserved("error",new hwt(r,a,s)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(r){this.readyState==="open"?this.write(r):B2i("transport is not open, discarding packets")}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(r){let a=Eet(r,this.socket.binaryType);this.onPacket(a)}onPacket(r){super.emitReserved("packet",r)}onClose(r){this.readyState="closed",super.emitReserved("close",r)}pause(r){}createUri(r,a={}){return r+"://"+this._hostname()+this._port()+this.opts.path+this._query(a)}_hostname(){let r=this.opts.hostname;return r.indexOf(":")===-1?r:"["+r+"]"}_port(){return this.opts.port&&(this.opts.secure&&+(this.opts.port!==443)||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(r){let a=Hin(r);return a.length?"?"+a:""}};e(bAr,"Transport");var Mhe=bAr;var oan=qd(RSe(),1);var ese=(0,oan.default)("engine.io-client:polling"),EAr=class EAr extends Mhe{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(r){this.readyState="pausing";let a=e(()=>{ese("paused"),this.readyState="paused",r()},"pause");if(this._polling||!this.writable){let s=0;this._polling&&(ese("we are currently polling - waiting to pause"),s++,this.once("pollComplete",function(){ese("pre-pause polling complete"),--s||a()})),this.writable||(ese("we are currently writing - waiting to pause"),s++,this.once("drain",function(){ese("pre-pause writing complete"),--s||a()}))}else a()}_poll(){ese("polling"),this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(r){ese("polling got data %s",r);let a=e(s=>{if(this.readyState==="opening"&&s.type==="open"&&this.onOpen(),s.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(s)},"callback");Qin(r,this.socket.binaryType).forEach(a),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"?this._poll():ese('ignoring poll - transport state "%s"',this.readyState))}doClose(){let r=e(()=>{ese("writing close packet"),this.write([{type:"close"}])},"close");this.readyState==="open"?(ese("transport open - closing"),r()):(ese("transport not open - deferring close"),this.once("open",r))}write(r){this.writable=!1,Uin(r,a=>{this.doWrite(a,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){let r=this.opts.secure?"https":"http",a=this.query||{};return this.opts.timestampRequests!==!1&&(a[this.opts.timestampParam]=pwt()),!this.supportsBinary&&!a.sid&&(a.b64=1),this.createUri(r,a)}};e(EAr,"Polling");var Det=EAr;var pan=qd(OSe(),1);var can=!1;try{can=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}var uan=can;var fan=qd(RSe(),1);var CAr=(0,fan.default)("engine.io-client:polling");function R2i(){}e(R2i,"empty");var DAr=class DAr extends Det{constructor(r){if(super(r),typeof location<"u"){let a=location.protocol==="https:",s=location.port;s||(s=a?"443":"80"),this.xd=typeof location<"u"&&r.hostname!==location.hostname||s!==r.port}}doWrite(r,a){let s=this.request({method:"POST",data:r});s.on("success",a),s.on("error",(l,d)=>{this.onError("xhr post error",l,d)})}doPoll(){CAr("xhr poll");let r=this.request();r.on("data",this.onData.bind(this)),r.on("error",(a,s)=>{this.onError("xhr poll error",a,s)}),this.pollXhr=r}};e(DAr,"BaseXHR");var gwt=DAr,UBe=class UBe extends pan.Emitter{constructor(r,a,s){super(),this.createRequest=r,Lhe(this,s),this._opts=s,this._method=s.method||"GET",this._uri=a,this._data=s.data!==void 0?s.data:null,this._create()}_create(){var r;let a=lwt(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");a.xdomain=!!this._opts.xd;let s=this._xhr=this.createRequest(a);try{CAr("xhr open %s: %s",this._method,this._uri),s.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){s.setDisableHeaderCheck&&s.setDisableHeaderCheck(!0);for(let l in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(l)&&s.setRequestHeader(l,this._opts.extraHeaders[l])}}catch{}if(this._method==="POST")try{s.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{s.setRequestHeader("Accept","*/*")}catch{}(r=this._opts.cookieJar)===null||r===void 0||r.addCookies(s),"withCredentials"in s&&(s.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(s.timeout=this._opts.requestTimeout),s.onreadystatechange=()=>{var l;s.readyState===3&&((l=this._opts.cookieJar)===null||l===void 0||l.parseCookies(s.getResponseHeader("set-cookie"))),s.readyState===4&&(s.status===200||s.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof s.status=="number"?s.status:0)},0))},CAr("xhr data %s",this._data),s.send(this._data)}catch(l){this.setTimeoutFn(()=>{this._onError(l)},0);return}typeof document<"u"&&(this._index=UBe.requestsCount++,UBe.requests[this._index]=this)}_onError(r){this.emitReserved("error",r,this._xhr),this._cleanup(!0)}_cleanup(r){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=R2i,r)try{this._xhr.abort()}catch{}typeof document<"u"&&delete UBe.requests[this._index],this._xhr=null}}_onLoad(){let r=this._xhr.responseText;r!==null&&(this.emitReserved("data",r),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}};e(UBe,"Request");var jhe=UBe;jhe.requestsCount=0;jhe.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",lan);else if(typeof addEventListener=="function"){let i="onpagehide"in s$?"pagehide":"unload";addEventListener(i,lan,!1)}}function lan(){for(let i in jhe.requests)jhe.requests.hasOwnProperty(i)&&jhe.requests[i].abort()}e(lan,"unloadHandler");var fga=function(){let i=L2i({xdomain:!1});return i&&i.responseType!==null}();function L2i(i){let r=i.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!r||uan))return new XMLHttpRequest}catch{}if(!r)try{return new s$[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}e(L2i,"newRequest");var M2i=SAr.default||SAr,wAr=class wAr extends gwt{request(r={}){var a;return Object.assign(r,{xd:this.xd,cookieJar:(a=this.socket)===null||a===void 0?void 0:a._cookieJar},this.opts),new jhe(s=>new M2i(s),this.uri(),r)}};e(wAr,"XHR");var QBe=wAr;var Hvi=qd(han(),1),Gvi=qd(QAr(),1),Kvi=qd($Ar(),1),nbr=qd(ebr(),1),Yvi=qd(dsn(),1);var _sn=qd(RSe(),1);var Zvi=(0,_sn.default)("engine.io-client:websocket"),exi=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative",ibr=class ibr extends Mhe{get name(){return"websocket"}doOpen(){let r=this.uri(),a=this.opts.protocols,s=exi?{}:lwt(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(s.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(r,a,s)}catch(l){return this.emitReserved("error",l)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=r=>this.onClose({description:"websocket connection closed",context:r}),this.ws.onmessage=r=>this.onData(r.data),this.ws.onerror=r=>this.onError("websocket error",r)}write(r){this.writable=!1;for(let a=0;a<r.length;a++){let s=r[a],l=a===r.length-1;bet(s,this.supportsBinary,d=>{try{this.doWrite(s,d)}catch{Zvi("websocket closed before onclose event")}l&&Rhe(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){let r=this.opts.secure?"wss":"ws",a=this.query||{};return this.opts.timestampRequests&&(a[this.opts.timestampParam]=pwt()),this.supportsBinary||(a.b64=1),this.createUri(r,a)}};e(ibr,"BaseWS");var Fwt=ibr,Xga=s$.WebSocket||s$.MozWebSocket;var abr=class abr extends Fwt{createSocket(r,a,s){var l;if(!((l=this.socket)===null||l===void 0)&&l._cookieJar){s.headers=s.headers||{},s.headers.cookie=typeof s.headers.cookie=="string"?[s.headers.cookie]:s.headers.cookie||[];for(let[d,g]of this.socket._cookieJar.cookies)s.headers.cookie.push(`${d}=${g.value}`)}return new nbr.default(r,a,s)}doWrite(r,a){let s={};r.options&&(s.compress=r.options.compress),this.opts.perMessageDeflate&&(typeof a=="string"?Buffer.byteLength(a):a.length)<this.opts.perMessageDeflate.threshold&&(s.compress=!1),this.ws.send(a,s)}};e(abr,"WS");var zBe=abr;var msn=qd(RSe(),1);var Let=(0,msn.default)("engine.io-client:webtransport"),sbr=class sbr extends Mhe{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(r){return this.emitReserved("error",r)}this._transport.closed.then(()=>{Let("transport closed gracefully"),this.onClose()}).catch(r=>{Let("transport closed due to %s",r),this.onError("webtransport error",r)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(r=>{let a=$in(Number.MAX_SAFE_INTEGER,this.socket.binaryType),s=r.readable.pipeThrough(a).getReader(),l=qin();l.readable.pipeTo(r.writable),this._writer=l.writable.getWriter();let d=e(()=>{s.read().then(({done:b,value:E})=>{if(b){Let("session is closed");return}Let("received chunk: %o",E),this.onPacket(E),d()}).catch(b=>{Let("an error occurred while reading: %s",b)})},"read");d();let g={type:"open"};this.query.sid&&(g.data=`{"sid":"${this.query.sid}"}`),this._writer.write(g).then(()=>this.onOpen())})})}write(r){this.writable=!1;for(let a=0;a<r.length;a++){let s=r[a],l=a===r.length-1;this._writer.write(s).then(()=>{l&&Rhe(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var r;(r=this._transport)===null||r===void 0||r.close()}};e(sbr,"WT");var WBe=sbr;var obr={websocket:zBe,webtransport:WBe,polling:QBe};var txi=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,rxi=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function HBe(i){if(i.length>8e3)throw"URI too long";let r=i,a=i.indexOf("["),s=i.indexOf("]");a!=-1&&s!=-1&&(i=i.substring(0,a)+i.substring(a,s).replace(/:/g,";")+i.substring(s,i.length));let l=txi.exec(i||""),d={},g=14;for(;g--;)d[rxi[g]]=l[g]||"";return a!=-1&&s!=-1&&(d.source=r,d.host=d.host.substring(1,d.host.length-1).replace(/;/g,":"),d.authority=d.authority.replace("[","").replace("]","").replace(/;/g,":"),d.ipv6uri=!0),d.pathNames=nxi(d,d.path),d.queryKey=ixi(d,d.query),d}e(HBe,"parse");function nxi(i,r){let a=/\/{2,9}/g,s=r.replace(a,"/").split("/");return(r.slice(0,1)=="/"||r.length===0)&&s.splice(0,1),r.slice(-1)=="/"&&s.splice(s.length-1,1),s}e(nxi,"pathNames");function ixi(i,r){let a={};return r.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(s,l,d){l&&(a[l]=d)}),a}e(ixi,"queryKey");var hsn=qd(OSe(),1);var gsn=qd(RSe(),1);var T3=(0,gsn.default)("engine.io-client:socket"),cbr=typeof addEventListener=="function"&&typeof removeEventListener=="function",Met=[];cbr&&addEventListener("offline",()=>{T3("closing %d connection(s) because the network was lost",Met.length),Met.forEach(i=>i())},!1);var GBe=class GBe extends hsn.Emitter{constructor(r,a){if(super(),this.binaryType=Jin,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,r&&typeof r=="object"&&(a=r,r=null),r){let s=HBe(r);a.hostname=s.host,a.secure=s.protocol==="https"||s.protocol==="wss",a.port=s.port,s.query&&(a.query=s.query)}else a.host&&(a.hostname=HBe(a.host).host);Lhe(this,a),this.secure=a.secure!=null?a.secure:typeof location<"u"&&location.protocol==="https:",a.hostname&&!a.port&&(a.port=this.secure?"443":"80"),this.hostname=a.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=a.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},a.transports.forEach(s=>{let l=s.prototype.name;this.transports.push(l),this._transportsByName[l]=s}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},a),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=Gin(this.opts.query)),cbr&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(T3("adding listener for the 'offline' event"),this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Met.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=zin()),this._open()}createTransport(r){T3('creating transport "%s"',r);let a=Object.assign({},this.opts.query);a.EIO=_Ar,a.transport=r,this.id&&(a.sid=this.id);let s=Object.assign({},this.opts,{query:a,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[r]);return T3("options: %j",s),new this._transportsByName[r](s)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}let r=this.opts.rememberUpgrade&&GBe.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";let a=this.createTransport(r);a.open(),this.setTransport(a)}setTransport(r){T3("setting transport %s",r.name),this.transport&&(T3("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=r,r.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",a=>this._onClose("transport close",a))}onOpen(){T3("socket open"),this.readyState="open",GBe.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(r){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(T3('socket receive: type "%s", data "%s"',r.type,r.data),this.emitReserved("packet",r),this.emitReserved("heartbeat"),r.type){case"open":this.onHandshake(JSON.parse(r.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":let a=new Error("server error");a.code=r.data,this._onError(a);break;case"message":this.emitReserved("data",r.data),this.emitReserved("message",r.data);break}else T3('packet received with socket readyState "%s"',this.readyState)}onHandshake(r){this.emitReserved("handshake",r),this.id=r.sid,this.transport.query.sid=r.sid,this._pingInterval=r.pingInterval,this._pingTimeout=r.pingTimeout,this._maxPayload=r.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);let r=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+r,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},r),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){let r=this._getWritablePackets();T3("flushing %d packets in socket",r.length),this.transport.send(r),this._prevBufferLen=r.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let a=1;for(let s=0;s<this.writeBuffer.length;s++){let l=this.writeBuffer[s].data;if(l&&(a+=Win(l)),s>0&&a>this._maxPayload)return T3("only send %d out of %d packets",s,this.writeBuffer.length),this.writeBuffer.slice(0,s);a+=2}return T3("payload size is %d (max: %d)",a,this._maxPayload),this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;let r=Date.now()>this._pingTimeoutTime;return r&&(T3("throttled timer detected, scheduling connection close"),this._pingTimeoutTime=0,Rhe(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),r}write(r,a,s){return this._sendPacket("message",r,a,s),this}send(r,a,s){return this._sendPacket("message",r,a,s),this}_sendPacket(r,a,s,l){if(typeof a=="function"&&(l=a,a=void 0),typeof s=="function"&&(l=s,s=null),this.readyState==="closing"||this.readyState==="closed")return;s=s||{},s.compress=s.compress!==!1;let d={type:r,data:a,options:s};this.emitReserved("packetCreate",d),this.writeBuffer.push(d),l&&this.once("flush",l),this.flush()}close(){let r=e(()=>{this._onClose("forced close"),T3("socket closing - telling transport to close"),this.transport.close()},"close"),a=e(()=>{this.off("upgrade",a),this.off("upgradeError",a),r()},"cleanupAndClose"),s=e(()=>{this.once("upgrade",a),this.once("upgradeError",a)},"waitForUpgrade");return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?s():r()}):this.upgrading?s():r()),this}_onError(r){if(T3("socket error %j",r),GBe.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return T3("trying next transport"),this.transports.shift(),this._open();this.emitReserved("error",r),this._onClose("transport error",r)}_onClose(r,a){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(T3('socket close with reason: "%s"',r),this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),cbr&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){let s=Met.indexOf(this._offlineEventListener);s!==-1&&(T3("removing listener for the 'offline' event"),Met.splice(s,1))}this.readyState="closed",this.id=null,this.emitReserved("close",r,a),this.writeBuffer=[],this._prevBufferLen=0}}};e(GBe,"SocketWithoutUpgrade");var QSe=GBe;QSe.protocol=_Ar;var ubr=class ubr extends QSe{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade){T3("starting upgrade probes");for(let r=0;r<this._upgrades.length;r++)this._probe(this._upgrades[r])}}_probe(r){T3('probing transport "%s"',r);let a=this.createTransport(r),s=!1;QSe.priorWebsocketSuccess=!1;let l=e(()=>{s||(T3('probe transport "%s" opened',r),a.send([{type:"ping",data:"probe"}]),a.once("packet",O=>{if(!s)if(O.type==="pong"&&O.data==="probe"){if(T3('probe transport "%s" pong',r),this.upgrading=!0,this.emitReserved("upgrading",a),!a)return;QSe.priorWebsocketSuccess=a.name==="websocket",T3('pausing current transport "%s"',this.transport.name),this.transport.pause(()=>{s||this.readyState!=="closed"&&(T3("changing transport and sending upgrade packet"),F(),this.setTransport(a),a.send([{type:"upgrade"}]),this.emitReserved("upgrade",a),a=null,this.upgrading=!1,this.flush())})}else{T3('probe transport "%s" failed',r);let N=new Error("probe error");N.transport=a.name,this.emitReserved("upgradeError",N)}}))},"onTransportOpen");function d(){s||(s=!0,F(),a.close(),a=null)}e(d,"freezeTransport");let g=e(O=>{let N=new Error("probe error: "+O);N.transport=a.name,d(),T3('probe transport "%s" failed because of error: %s',r,O),this.emitReserved("upgradeError",N)},"onerror");function b(){g("transport closed")}e(b,"onTransportClose");function E(){g("socket closed")}e(E,"onclose");function S(O){a&&O.name!==a.name&&(T3('"%s" works - aborting "%s"',O.name,a.name),d())}e(S,"onupgrade");let F=e(()=>{a.removeListener("open",l),a.removeListener("error",g),a.removeListener("close",b),this.off("close",E),this.off("upgrading",S)},"cleanup");a.once("open",l),a.once("error",g),a.once("close",b),this.once("close",E),this.once("upgrading",S),this._upgrades.indexOf("webtransport")!==-1&&r!=="webtransport"?this.setTimeoutFn(()=>{s||a.open()},200):a.open()}onHandshake(r){this._upgrades=this._filterUpgrades(r.upgrades),super.onHandshake(r)}_filterUpgrades(r){let a=[];for(let s=0;s<r.length;s++)~this.transports.indexOf(r[s])&&a.push(r[s]);return a}};e(ubr,"SocketWithUpgrade");var Pwt=ubr,lbr=class lbr extends Pwt{constructor(r,a={}){let s=typeof r=="object"?r:a;(!s.transports||s.transports&&typeof s.transports[0]=="string")&&(s.transports=(s.transports||["polling","websocket","webtransport"]).map(l=>obr[l]).filter(l=>!!l)),super(r,s)}};e(lbr,"Socket");var KBe=lbr;var wya=KBe.protocol;var Esn=qd(jet(),1);var bsn=(0,Esn.default)("socket.io-client:url");function Csn(i,r="",a){let s=i;a=a||typeof location<"u"&&location,i==null&&(i=a.protocol+"//"+a.host),typeof i=="string"&&(i.charAt(0)==="/"&&(i.charAt(1)==="/"?i=a.protocol+i:i=a.host+i),/^(https?|wss?):\/\//.test(i)||(bsn("protocol-less url %s",i),typeof a<"u"?i=a.protocol+"//"+i:i="https://"+i),bsn("parse %s",i),s=HBe(i)),s.port||(/^(http|ws)$/.test(s.protocol)?s.port="80":/^(http|ws)s$/.test(s.protocol)&&(s.port="443")),s.path=s.path||"/";let d=s.host.indexOf(":")!==-1?"["+s.host+"]":s.host;return s.id=s.protocol+"://"+d+":"+s.port+r,s.href=s.protocol+"://"+d+(a&&a.port===s.port?"":":"+s.port),s}e(Csn,"url");var Abr={};UKe(Abr,{Decoder:()=>vbr,Encoder:()=>ybr,PacketType:()=>Zb,protocol:()=>Rsn});var Osn=qd(OSe(),1);var Exi=typeof ArrayBuffer=="function",Cxi=e(i=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(i):i.buffer instanceof ArrayBuffer,"isView"),Dsn=Object.prototype.toString,Dxi=typeof Blob=="function"||typeof Blob<"u"&&Dsn.call(Blob)==="[object BlobConstructor]",Sxi=typeof File=="function"||typeof File<"u"&&Dsn.call(File)==="[object FileConstructor]";function Qet(i){return Exi&&(i instanceof ArrayBuffer||Cxi(i))||Dxi&&i instanceof Blob||Sxi&&i instanceof File}e(Qet,"isBinary");function Uet(i,r){if(!i||typeof i!="object")return!1;if(Array.isArray(i)){for(let a=0,s=i.length;a<s;a++)if(Uet(i[a]))return!0;return!1}if(Qet(i))return!0;if(i.toJSON&&typeof i.toJSON=="function"&&arguments.length===1)return Uet(i.toJSON(),!0);for(let a in i)if(Object.prototype.hasOwnProperty.call(i,a)&&Uet(i[a]))return!0;return!1}e(Uet,"hasBinary");function Ssn(i){let r=[],a=i.data,s=i;return s.data=dbr(a,r),s.attachments=r.length,{packet:s,buffers:r}}e(Ssn,"deconstructPacket");function dbr(i,r){if(!i)return i;if(Qet(i)){let a={_placeholder:!0,num:r.length};return r.push(i),a}else if(Array.isArray(i)){let a=new Array(i.length);for(let s=0;s<i.length;s++)a[s]=dbr(i[s],r);return a}else if(typeof i=="object"&&!(i instanceof Date)){let a={};for(let s in i)Object.prototype.hasOwnProperty.call(i,s)&&(a[s]=dbr(i[s],r));return a}return i}e(dbr,"_deconstructPacket");function wsn(i,r){return i.data=_br(i.data,r),delete i.attachments,i}e(wsn,"reconstructPacket");function _br(i,r){if(!i)return i;if(i&&i._placeholder===!0){if(typeof i.num=="number"&&i.num>=0&&i.num<r.length)return r[i.num];throw new Error("illegal attachments")}else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]=_br(i[a],r);else if(typeof i=="object")for(let a in i)Object.prototype.hasOwnProperty.call(i,a)&&(i[a]=_br(i[a],r));return i}e(_br,"_reconstructPacket");var Bsn=qd(Psn(),1);var gbr=(0,Bsn.default)("socket.io-parser"),qxi=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"],Rsn=5,Zb;(function(i){i[i.CONNECT=0]="CONNECT",i[i.DISCONNECT=1]="DISCONNECT",i[i.EVENT=2]="EVENT",i[i.ACK=3]="ACK",i[i.CONNECT_ERROR=4]="CONNECT_ERROR",i[i.BINARY_EVENT=5]="BINARY_EVENT",i[i.BINARY_ACK=6]="BINARY_ACK"})(Zb||(Zb={}));var bbr=class bbr{constructor(r){this.replacer=r}encode(r){return gbr("encoding packet %j",r),(r.type===Zb.EVENT||r.type===Zb.ACK)&&Uet(r)?this.encodeAsBinary({type:r.type===Zb.EVENT?Zb.BINARY_EVENT:Zb.BINARY_ACK,nsp:r.nsp,data:r.data,id:r.id}):[this.encodeAsString(r)]}encodeAsString(r){let a=""+r.type;return(r.type===Zb.BINARY_EVENT||r.type===Zb.BINARY_ACK)&&(a+=r.attachments+"-"),r.nsp&&r.nsp!=="/"&&(a+=r.nsp+","),r.id!=null&&(a+=r.id),r.data!=null&&(a+=JSON.stringify(r.data,this.replacer)),gbr("encoded %j as %s",r,a),a}encodeAsBinary(r){let a=Ssn(r),s=this.encodeAsString(a.packet),l=a.buffers;return l.unshift(s),l}};e(bbr,"Encoder");var ybr=bbr;function Nsn(i){return Object.prototype.toString.call(i)==="[object Object]"}e(Nsn,"isObject");var jwt=class jwt extends Osn.Emitter{constructor(r){super(),this.reviver=r}add(r){let a;if(typeof r=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");a=this.decodeString(r);let s=a.type===Zb.BINARY_EVENT;s||a.type===Zb.BINARY_ACK?(a.type=s?Zb.EVENT:Zb.ACK,this.reconstructor=new xbr(a),a.attachments===0&&super.emitReserved("decoded",a)):super.emitReserved("decoded",a)}else if(Qet(r)||r.base64)if(this.reconstructor)a=this.reconstructor.takeBinaryData(r),a&&(this.reconstructor=null,super.emitReserved("decoded",a));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+r)}decodeString(r){let a=0,s={type:Number(r.charAt(0))};if(Zb[s.type]===void 0)throw new Error("unknown packet type "+s.type);if(s.type===Zb.BINARY_EVENT||s.type===Zb.BINARY_ACK){let d=a+1;for(;r.charAt(++a)!=="-"&&a!=r.length;);let g=r.substring(d,a);if(g!=Number(g)||r.charAt(a)!=="-")throw new Error("Illegal attachments");s.attachments=Number(g)}if(r.charAt(a+1)==="/"){let d=a+1;for(;++a&&!(r.charAt(a)===","||a===r.length););s.nsp=r.substring(d,a)}else s.nsp="/";let l=r.charAt(a+1);if(l!==""&&Number(l)==l){let d=a+1;for(;++a;){let g=r.charAt(a);if(g==null||Number(g)!=g){--a;break}if(a===r.length)break}s.id=Number(r.substring(d,a+1))}if(r.charAt(++a)){let d=this.tryParse(r.substr(a));if(jwt.isPayloadValid(s.type,d))s.data=d;else throw new Error("invalid payload")}return gbr("decoded %s as %j",r,s),s}tryParse(r){try{return JSON.parse(r,this.reviver)}catch{return!1}}static isPayloadValid(r,a){switch(r){case Zb.CONNECT:return Nsn(a);case Zb.DISCONNECT:return a===void 0;case Zb.CONNECT_ERROR:return typeof a=="string"||Nsn(a);case Zb.EVENT:case Zb.BINARY_EVENT:return Array.isArray(a)&&(typeof a[0]=="number"||typeof a[0]=="string"&&qxi.indexOf(a[0])===-1);case Zb.ACK:case Zb.BINARY_ACK:return Array.isArray(a)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}};e(jwt,"Decoder");var vbr=jwt,Ebr=class Ebr{constructor(r){this.packet=r,this.buffers=[],this.reconPack=r}takeBinaryData(r){if(this.buffers.push(r),this.buffers.length===this.reconPack.attachments){let a=wsn(this.reconPack,this.buffers);return this.finishedReconstruction(),a}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}};e(Ebr,"BinaryReconstructor");var xbr=Ebr;function bK(i,r,a){return i.on(r,a),e(function(){i.off(r,a)},"subDestroy")}e(bK,"on");var Lsn=qd(OSe(),1),Msn=qd(jet(),1);var kP=(0,Msn.default)("socket.io-client:socket"),$xi=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1}),Cbr=class Cbr extends Lsn.Emitter{constructor(r,a,s){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=r,this.nsp=a,s&&s.auth&&(this.auth=s.auth),this._opts=Object.assign({},s),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;let r=this.io;this.subs=[bK(r,"open",this.onopen.bind(this)),bK(r,"packet",this.onpacket.bind(this)),bK(r,"error",this.onerror.bind(this)),bK(r,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...r){return r.unshift("message"),this.emit.apply(this,r),this}emit(r,...a){var s,l,d;if($xi.hasOwnProperty(r))throw new Error('"'+r.toString()+'" is a reserved event name');if(a.unshift(r),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(a),this;let g={type:Zb.EVENT,data:a};if(g.options={},g.options.compress=this.flags.compress!==!1,typeof a[a.length-1]=="function"){let F=this.ids++;kP("emitting packet with ack id %d",F);let O=a.pop();this._registerAckCallback(F,O),g.id=F}let b=(l=(s=this.io.engine)===null||s===void 0?void 0:s.transport)===null||l===void 0?void 0:l.writable,E=this.connected&&!(!((d=this.io.engine)===null||d===void 0)&&d._hasPingExpired());return this.flags.volatile&&!b?kP("discard packet as the transport is not currently writable"):E?(this.notifyOutgoingListeners(g),this.packet(g)):this.sendBuffer.push(g),this.flags={},this}_registerAckCallback(r,a){var s;let l=(s=this.flags.timeout)!==null&&s!==void 0?s:this._opts.ackTimeout;if(l===void 0){this.acks[r]=a;return}let d=this.io.setTimeoutFn(()=>{delete this.acks[r];for(let b=0;b<this.sendBuffer.length;b++)this.sendBuffer[b].id===r&&(kP("removing packet with ack id %d from the buffer",r),this.sendBuffer.splice(b,1));kP("event with ack id %d has timed out after %d ms",r,l),a.call(this,new Error("operation has timed out"))},l),g=e((...b)=>{this.io.clearTimeoutFn(d),a.apply(this,b)},"fn");g.withError=!0,this.acks[r]=g}emitWithAck(r,...a){return new Promise((s,l)=>{let d=e((g,b)=>g?l(g):s(b),"fn");d.withError=!0,a.push(d),this.emit(r,...a)})}_addToQueue(r){let a;typeof r[r.length-1]=="function"&&(a=r.pop());let s={id:this._queueSeq++,tryCount:0,pending:!1,args:r,flags:Object.assign({fromQueue:!0},this.flags)};r.push((l,...d)=>s!==this._queue[0]?void 0:(l!==null?s.tryCount>this._opts.retries&&(kP("packet [%d] is discarded after %d tries",s.id,s.tryCount),this._queue.shift(),a&&a(l)):(kP("packet [%d] was successfully sent",s.id),this._queue.shift(),a&&a(null,...d)),s.pending=!1,this._drainQueue())),this._queue.push(s),this._drainQueue()}_drainQueue(r=!1){if(kP("draining queue"),!this.connected||this._queue.length===0)return;let a=this._queue[0];if(a.pending&&!r){kP("packet [%d] has already been sent and is waiting for an ack",a.id);return}a.pending=!0,a.tryCount++,kP("sending packet [%d] (try n\xB0%d)",a.id,a.tryCount),this.flags=a.flags,this.emit.apply(this,a.args)}packet(r){r.nsp=this.nsp,this.io._packet(r)}onopen(){kP("transport is open - connecting"),typeof this.auth=="function"?this.auth(r=>{this._sendConnectPacket(r)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(r){this.packet({type:Zb.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},r):r})}onerror(r){this.connected||this.emitReserved("connect_error",r)}onclose(r,a){kP("close (%s)",r),this.connected=!1,delete this.id,this.emitReserved("disconnect",r,a),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(r=>{if(!this.sendBuffer.some(s=>String(s.id)===r)){let s=this.acks[r];delete this.acks[r],s.withError&&s.call(this,new Error("socket has been disconnected"))}})}onpacket(r){if(r.nsp===this.nsp)switch(r.type){case Zb.CONNECT:r.data&&r.data.sid?this.onconnect(r.data.sid,r.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Zb.EVENT:case Zb.BINARY_EVENT:this.onevent(r);break;case Zb.ACK:case Zb.BINARY_ACK:this.onack(r);break;case Zb.DISCONNECT:this.ondisconnect();break;case Zb.CONNECT_ERROR:this.destroy();let s=new Error(r.data.message);s.data=r.data.data,this.emitReserved("connect_error",s);break}}onevent(r){let a=r.data||[];kP("emitting event %j",a),r.id!=null&&(kP("attaching ack callback to event"),a.push(this.ack(r.id))),this.connected?this.emitEvent(a):this.receiveBuffer.push(Object.freeze(a))}emitEvent(r){if(this._anyListeners&&this._anyListeners.length){let a=this._anyListeners.slice();for(let s of a)s.apply(this,r)}super.emit.apply(this,r),this._pid&&r.length&&typeof r[r.length-1]=="string"&&(this._lastOffset=r[r.length-1])}ack(r){let a=this,s=!1;return function(...l){s||(s=!0,kP("sending ack %j",l),a.packet({type:Zb.ACK,id:r,data:l}))}}onack(r){let a=this.acks[r.id];if(typeof a!="function"){kP("bad ack %s",r.id);return}delete this.acks[r.id],kP("calling ack %s with %j",r.id,r.data),a.withError&&r.data.unshift(null),a.apply(this,r.data)}onconnect(r,a){kP("socket connected with id %s",r),this.id=r,this.recovered=a&&this._pid===a,this._pid=a,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(r=>this.emitEvent(r)),this.receiveBuffer=[],this.sendBuffer.forEach(r=>{this.notifyOutgoingListeners(r),this.packet(r)}),this.sendBuffer=[]}ondisconnect(){kP("server disconnect (%s)",this.nsp),this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(r=>r()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&(kP("performing disconnect (%s)",this.nsp),this.packet({type:Zb.DISCONNECT})),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(r){return this.flags.compress=r,this}get volatile(){return this.flags.volatile=!0,this}timeout(r){return this.flags.timeout=r,this}onAny(r){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(r),this}prependAny(r){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(r),this}offAny(r){if(!this._anyListeners)return this;if(r){let a=this._anyListeners;for(let s=0;s<a.length;s++)if(r===a[s])return a.splice(s,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(r){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(r),this}prependAnyOutgoing(r){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(r),this}offAnyOutgoing(r){if(!this._anyOutgoingListeners)return this;if(r){let a=this._anyOutgoingListeners;for(let s=0;s<a.length;s++)if(r===a[s])return a.splice(s,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(r){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){let a=this._anyOutgoingListeners.slice();for(let s of a)s.apply(this,r.data)}}};e(Cbr,"Socket");var YBe=Cbr;function qSe(i){i=i||{},this.ms=i.min||100,this.max=i.max||1e4,this.factor=i.factor||2,this.jitter=i.jitter>0&&i.jitter<=1?i.jitter:0,this.attempts=0}e(qSe,"Backoff");qSe.prototype.duration=function(){var i=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var r=Math.random(),a=Math.floor(r*this.jitter*i);i=Math.floor(r*10)&1?i+a:i-a}return Math.min(i,this.max)|0};qSe.prototype.reset=function(){this.attempts=0};qSe.prototype.setMin=function(i){this.ms=i};qSe.prototype.setMax=function(i){this.max=i};qSe.prototype.setJitter=function(i){this.jitter=i};var jsn=qd(OSe(),1),Usn=qd(jet(),1);var TL=(0,Usn.default)("socket.io-client:manager"),Dbr=class Dbr extends jsn.Emitter{constructor(r,a){var s;super(),this.nsps={},this.subs=[],r&&typeof r=="object"&&(a=r,r=void 0),a=a||{},a.path=a.path||"/socket.io",this.opts=a,Lhe(this,a),this.reconnection(a.reconnection!==!1),this.reconnectionAttempts(a.reconnectionAttempts||1/0),this.reconnectionDelay(a.reconnectionDelay||1e3),this.reconnectionDelayMax(a.reconnectionDelayMax||5e3),this.randomizationFactor((s=a.randomizationFactor)!==null&&s!==void 0?s:.5),this.backoff=new qSe({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(a.timeout==null?2e4:a.timeout),this._readyState="closed",this.uri=r;let l=a.parser||Abr;this.encoder=new l.Encoder,this.decoder=new l.Decoder,this._autoConnect=a.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(r){return arguments.length?(this._reconnection=!!r,r||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(r){return r===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=r,this)}reconnectionDelay(r){var a;return r===void 0?this._reconnectionDelay:(this._reconnectionDelay=r,(a=this.backoff)===null||a===void 0||a.setMin(r),this)}randomizationFactor(r){var a;return r===void 0?this._randomizationFactor:(this._randomizationFactor=r,(a=this.backoff)===null||a===void 0||a.setJitter(r),this)}reconnectionDelayMax(r){var a;return r===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=r,(a=this.backoff)===null||a===void 0||a.setMax(r),this)}timeout(r){return arguments.length?(this._timeout=r,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(r){if(TL("readyState %s",this._readyState),~this._readyState.indexOf("open"))return this;TL("opening %s",this.uri),this.engine=new KBe(this.uri,this.opts);let a=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;let l=bK(a,"open",function(){s.onopen(),r&&r()}),d=e(b=>{TL("error"),this.cleanup(),this._readyState="closed",this.emitReserved("error",b),r?r(b):this.maybeReconnectOnOpen()},"onError"),g=bK(a,"error",d);if(this._timeout!==!1){let b=this._timeout;TL("connect attempt will timeout after %d",b);let E=this.setTimeoutFn(()=>{TL("connect attempt timed out after %d",b),l(),d(new Error("timeout")),a.close()},b);this.opts.autoUnref&&E.unref(),this.subs.push(()=>{this.clearTimeoutFn(E)})}return this.subs.push(l),this.subs.push(g),this}connect(r){return this.open(r)}onopen(){TL("open"),this.cleanup(),this._readyState="open",this.emitReserved("open");let r=this.engine;this.subs.push(bK(r,"ping",this.onping.bind(this)),bK(r,"data",this.ondata.bind(this)),bK(r,"error",this.onerror.bind(this)),bK(r,"close",this.onclose.bind(this)),bK(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(r){try{this.decoder.add(r)}catch(a){this.onclose("parse error",a)}}ondecoded(r){Rhe(()=>{this.emitReserved("packet",r)},this.setTimeoutFn)}onerror(r){TL("error",r),this.emitReserved("error",r)}socket(r,a){let s=this.nsps[r];return s?this._autoConnect&&!s.active&&s.connect():(s=new YBe(this,r,a),this.nsps[r]=s),s}_destroy(r){let a=Object.keys(this.nsps);for(let s of a)if(this.nsps[s].active){TL("socket %s is still active, skipping close",s);return}this._close()}_packet(r){TL("writing packet %j",r);let a=this.encoder.encode(r);for(let s=0;s<a.length;s++)this.engine.write(a[s],r.options)}cleanup(){TL("cleanup"),this.subs.forEach(r=>r()),this.subs.length=0,this.decoder.destroy()}_close(){TL("disconnect"),this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(r,a){var s;TL("closed due to %s",r),this.cleanup(),(s=this.engine)===null||s===void 0||s.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",r,a),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;let r=this;if(this.backoff.attempts>=this._reconnectionAttempts)TL("reconnect failed"),this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{let a=this.backoff.duration();TL("will wait %dms before reconnect attempt",a),this._reconnecting=!0;let s=this.setTimeoutFn(()=>{r.skipReconnect||(TL("attempting reconnect"),this.emitReserved("reconnect_attempt",r.backoff.attempts),!r.skipReconnect&&r.open(l=>{l?(TL("reconnect attempt error"),r._reconnecting=!1,r.reconnect(),this.emitReserved("reconnect_error",l)):(TL("reconnect success"),r.onreconnect())}))},a);this.opts.autoUnref&&s.unref(),this.subs.push(()=>{this.clearTimeoutFn(s)})}}onreconnect(){let r=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",r)}};e(Dbr,"Manager");var XBe=Dbr;var qsn=qd(jet(),1);var Qsn=(0,qsn.default)("socket.io-client"),qet={};function $et(i,r){typeof i=="object"&&(r=i,i=void 0),r=r||{};let a=Csn(i,r.path||"/socket.io"),s=a.source,l=a.id,d=a.path,g=qet[l]&&d in qet[l].nsps,b=r.forceNew||r["force new connection"]||r.multiplex===!1||g,E;return b?(Qsn("ignoring socket cache for %s",s),E=new XBe(s,r)):(qet[l]||(Qsn("new io instance for %s",s),qet[l]=new XBe(s,r)),E=qet[l]),a.query&&!r.query&&(r.query=a.queryKey),E.socket(a.path,r)}e($et,"lookup");Object.assign($et,{Manager:XBe,Socket:YBe,io:$et,connect:$et});var Uwt={URL:"http://localhost:3000",NAMESPACE:"auto-recovery",RECONNECTION_ATTEMPTS:5,RECONNECTION_DELAY:1e3},Sbr=class Sbr{constructor(r={}){this.socket=null;this.connectionState="disconnected";this.connectionPromise=null;this.resolution=null;this.options=r,this.url=r.url||Uwt.URL,this.namespace=r.namespace||Uwt.NAMESPACE,this.initializationPromise=this.createInitializationPromise()}createInitializationPromise(){return new Promise((r,a)=>{this.resolveInitialization=s=>r(s),this.rejectInitialization=s=>a(s)}).then(r=>(this.resolution=r,this.log("\u2705 Client initialization successful"),r),r=>{throw this.resolution=r,this.logError("\u274C Client initialization failed:",r),r}).finally(()=>{this.disconnect()})}defineHandlers(r){return r}async startSession(r,a,s){try{if(await this.connect(),this.emit(r,a,l=>{this.resolveInitialization(l)}),s&&s>0){let l=new Promise((d,g)=>{setTimeout(()=>{g(new Error(`Session initialization timed out after ${s}ms`))},s)});return Promise.race([this.initializationPromise,l])}return this.initializationPromise}catch(l){throw this.logError("\u274C Failed to start session:",l),this.rejectInitialization(l),l}}isConnected(){var r;return((r=this.socket)==null?void 0:r.connected)||!1}getConnectionState(){return this.connectionState}success(r){return{success:!0,data:r}}error(r){return{success:!1,error:r}}log(r,...a){this.options.verbose&&console.log(`[${this.namespace}] ${r}`,...a)}logError(r,...a){this.options.verbose&&console.error(`[${this.namespace}] ${r}`,...a)}async connect(){var r;if(this.connectionPromise)return this.connectionPromise;if(this.connectionState==="connected"&&((r=this.socket)!=null&&r.connected))return Promise.resolve();this.connectionState="connecting",this.connectionPromise=this.establishConnection();try{await this.connectionPromise,this.connectionState="connected"}catch(a){throw this.connectionState="disconnected",this.connectionPromise=null,a}return this.connectionPromise}establishConnection(){return new Promise((r,a)=>{let s=!1;try{let l=`${this.url}/${this.namespace}`;this.log(`\u{1F517} Connecting to socket at: ${l}`),this.socket=$et(l,{autoConnect:!0,reconnection:!0,reconnectionAttempts:Uwt.RECONNECTION_ATTEMPTS,reconnectionDelay:Uwt.RECONNECTION_DELAY,...this.options.path&&{path:this.options.path}}),this.setupConnectionHandlers(r,a,s)}catch(l){this.logError("\u274C Failed to create socket connection:",l),s||a(l)}})}setupConnectionHandlers(r,a,s){if(!this.socket)return;let l={resolve:r,reject:a,connectionResolved:s};this.socket.on("connect",()=>this.handleConnect(l)),this.socket.on("reconnect",()=>this.handleReconnect()),this.socket.on("connect_error",d=>this.handleConnectError(d,l)),this.socket.on("disconnect",d=>this.handleDisconnect(d,l)),this.socket.io.on("reconnect_attempt",d=>this.handleReconnectAttempt(d)),this.socket.io.on("reconnect_error",d=>this.handleReconnectError(d)),this.socket.io.on("reconnect_failed",()=>this.handleReconnectFailed(l))}handleConnect(r){this.log("\u2705 Connected to socket"),this.connectionState="connected",this.setupEventHandlers(),r.connectionResolved||(r.connectionResolved=!0,r.resolve())}handleReconnect(){this.log("\u2705 Reconnected to socket"),this.connectionState="connected"}handleConnectError(r,a){var s;this.logError("\u274C Connection error:",r),this.connectionState="disconnected",!a.connectionResolved&&((s=this.socket)==null?void 0:s.disconnected)!==!1&&(a.connectionResolved=!0,a.reject(r))}handleDisconnect(r,a){this.log("\u{1F50C} Disconnected from socket:",r),this.connectionState="disconnected";let s=new Error(`Socket disconnected: ${r}`);this.resolution===null&&r==="io server disconnect"&&this.rejectInitialization(s),!a.connectionResolved&&(r==="io server disconnect"||r==="transport close")&&(a.connectionResolved=!0,a.reject(s)),this.resolution===null&&this.connectionState==="disconnected"&&this.rejectInitialization(s)}handleReconnectAttempt(r){this.log(`\u{1F504} Reconnection attempt #${r}`),this.connectionState="reconnecting"}handleReconnectError(r){this.logError("\u274C Reconnection attempt failed:",r)}handleReconnectFailed(r){this.logError("\u274C All reconnection attempts failed"),this.connectionState="disconnected",this.resolution===null&&this.rejectInitialization("All reconnection attempts failed"),r.connectionResolved||(r.connectionResolved=!0,r.reject(new Error("All reconnection attempts failed")))}setupEventHandlers(){if(!this.socket){this.logError("\u274C Cannot setup event handlers: socket is null");return}this.log("\u2705 Setting up event handlers"),this.socket.on("__call",this.handleGatewayCall.bind(this))}async handleGatewayCall(r,a){this.log(`\u{1F4E5} Gateway called method: ${r.key} with args:`,r.args);try{let s=this.validateGatewayCall(r);if(s){a(s);return}let l=this.handlers[r.key];if(!l){let g=`No handler registered for method: ${r.key}`;this.logError(`\u274C ${g}`),a(this.error(g));return}let d=await l(...r.args);a(this.success(d))}catch(s){this.logError("\u274C Error handling gateway call:",s),a(this.error(s.message||"Unknown error occurred"))}}validateGatewayCall(r){return r.key?Array.isArray(r.args)?null:(this.logError("\u274C Received call with invalid args"),this.error("Args must be an array")):(this.logError("\u274C Received call with undefined key"),this.error("Key is undefined"))}emit(r,a,s){if(!this.socket){this.logError("\u274C Cannot emit: socket is null");return}this.log(`\u{1F4E4} Emitting event: ${r}`),this.socket.emit(r,a,l=>{s(l)})}disconnect(){this.connectionState!=="shutting_down"&&(this.connectionState="shutting_down",this.log("\u{1F50C} Initiating disconnect"),this.socket&&(this.socket.disconnect(),this.socket=null),this.connectionPromise=null,this.connectionState="disconnected",this.log("\u2705 Disconnected successfully"))}};e(Sbr,"AbstractClient");var Qwt=Sbr;var $sn,Vsn,Jsn,zsn,Wsn,Hsn,$wt=class $wt extends(Hsn=Qwt,Wsn=wL.names.getState,zsn=wL.names.invokeCode,Jsn=wL.names.final_result,Vsn=wL.names.wait,$sn=wL.names.getElementScreenshot,Hsn){constructor(a,s){super({verbose:eg.testRun.autoRecovery.verboseConsoleLog,url:s.config.apiURL,namespace:"auto-recovery",path:"/auto-recovery/socket.io"});this.utils=a;this.initData=s;this.stepsThoughts=[];this.handlers=this.defineHandlers({callLangChainTool:e(async(a,s)=>{if(!this[a])throw new Error(`Tool ${a} not found`);return s.thought&&this.stepsThoughts.push(s.thought),await this[a].invoke(s)},"callLangChainTool"),getStatus:e(async a=>({sessionId:a,status:"active",data:{message:"Status retrieved successfully"}}),"getStatus")});this[Wsn]=xbe.buildTool(wL,wL.names.getState,async a=>this.getStateHandler(a));this[zsn]=xbe.buildTool(wL,wL.names.invokeCode,async a=>this.invokeCodeHandler(a));this[Jsn]=xbe.buildTool(wL,wL.names.final_result,async a=>this.finalResultHandler(a));this[Vsn]=xbe.buildTool(wL,wL.names.wait,async a=>this.waitHandler(a));this[$sn]=xbe.buildTool(wL,wL.names.getElementScreenshot,async a=>this.getElementScreenshotHandler(a))}async init(){let a={...this.initData,version:wL.version};return await this.startSession("initialize",a).catch(s=>{this.utils.analytics.ARError({error:s.message});let l="Auto-Recovery attempt finished unsuccessfully";return this.utils.createChecksumStep({title:l,withError:!0}),this.utils.addAutoRecoveryErrorToReport(l,!1),{finalThought:l,stepsThoughts:[],result:"failed"}})}static async build(a){let s=await a.buildFallbackData();return new $wt(a,s)}async invokeCodeHandler(a){let s;return await this.utils.runConditionallyWithinStep(!0,a.thought||"Invoke Code",async()=>{try{let l=await this.utils.invokeCode(a.code);this.utils.createChecksumStep({title:"Code Invoked Successfully"}),s={success:!0,invokeCodeResult:`invokeCodeResult: ${l}`,appState:(await this.utils.buildFallbackData()).applicationState}}catch(l){s={success:!1,invokeCodeResult:`Error while invoking code: ${l}`,appState:(await this.utils.buildFallbackData()).applicationState}}}),s}async getStateHandler(a){return this.utils.createChecksumStep({title:a.thought}),this.utils.analytics.ARGetState(a.thought),{success:!0,appState:(await this.utils.buildFallbackData()).applicationState}}finalResultHandler(a){let s=a.result==="pass",l=this.initData.type==="assertion"?s?"soft_assertion":"hard_assertion":s?"finish":"failed";this.utils.analytics.ARFinalResult({finalThought:a.thought,result:l,stepsThoughts:this.stepsThoughts});let d={finalThought:a.thought,result:l,stepsThoughts:this.stepsThoughts};this.utils.addAutoRecoveryErrorToReport(a.thought,s),this.resolveInitialization(d)}async getElementScreenshotHandler(a){return{success:!0,screenshot:await this.utils.getScreenshotForElement(a.checksumId)}}async waitHandler(a){await new Promise(l=>setTimeout(l,a.time||5e3));let s=await this.utils.buildFallbackData();return{success:!0,waitResult:`waited for ${a.time} seconds, the current HTML of the application after the wait is: ${s.applicationState.reducedHTML}`}}};e($wt,"AutoRecoveryAgent");var qwt=$wt;var Gsn=require("fs"),Ksn=qd(require("path"));var wbr=class wbr{constructor(r,a){this.sessionId=null;if(!ppe.getCurrentTestInfo())throw new Error("TestRunAnalytics must be initialized with testInfo before RecoveryAnalytics can be used");let l=ppe.getCurrentInstance();if(!l)throw new Error("TestRunAnalytics instance not found. Make sure TestRunAnalytics is initialized before creating RecoveryAnalytics");let d=l.getTestSuiteRunInfo();this.analytics=Fee.createFromConfig(d,ppe.isolatedMode,!0),this.fallbackId=r,this.fallbackType=a}updateToSessionId(r){this.sessionId!==r&&(this.sessionId=r)}get tableName(){return"fallbacks"}get metadata(){return{...this.analytics.metadata,fallbackType:this.fallbackType,sessionId:this.sessionId||"unknown",fallbackId:this.fallbackId}}event(r){this.analytics.trackEventWithTable(r,this.metadata,this.tableName)}setFallbackType(r){this.fallbackType=r}aiFallbackStart(r){this.event({event:"AI Fallback Start",metadata:this.metadata,...r})}aiFallbackConfig(r){this.event({event:"AI Fallback Config",metadata:this.metadata,...r})}aiFallbackIterationResponse(r){this.event({event:"AI Fallback Iteration Response",metadata:this.metadata,...r})}aiFallbackAssertion(r){this.event({event:"AI Fallback Assertion Execution",metadata:this.metadata,...r})}aiFallbackChangeVariable(r){this.event({event:"AI Fallback Change Variable",metadata:this.metadata,...r})}aiFallbackSummary(r){this.event({event:"AI Fallback Summary",metadata:this.metadata,fallbackType:this.fallbackType,...r})}aiFallbackActionExecution(r){this.event({event:"AI Fallback Action Execution",metadata:this.metadata,...r})}aiFallbackActionExecutionFailure(r){this.event({event:"AI Fallback Action Execution Failure",metadata:this.metadata,...r})}aiFallbackEnd(r){this.event({event:"AI Fallback End",metadata:this.metadata,...r})}ARStart(){this.event({event:"Auto-Recovery Start",metadata:this.metadata})}ARConfig(r){this.event({event:"Auto-Recovery Config",metadata:this.metadata,...r})}ARGetState(r){this.event({event:"Auto-Recovery State",metadata:this.metadata,thought:r})}ARInvokeCode(r,a){this.event({event:"Auto-Recovery Invoke Code",metadata:this.metadata,thought:r,code:a})}ARFinalResult(r){this.event({event:"Auto-Recovery Final Result",metadata:this.metadata,...r})}autoRecoveryDisconnect(r){this.event({event:"Auto-Recovery Disconnect",metadata:this.metadata,...r})}ARFinish(r){this.event({event:"Auto-Recovery Finish",metadata:this.metadata,...r})}ARError(r){this.event({event:"Auto-Recovery Error",metadata:this.metadata,...r})}};e(wbr,"RecoveryAnalytics");var Vwt=wbr;var $Se=class $Se{constructor({page:r,evaluateWithChecksum:a,checksumPage:s,pageInteractor:l,arConfig:d,sessionId:g,runtimeFallbackData:b,fallbackData:E,variableStore:S}){this.reducedHtmlTimeoutMs=3e4;this.page=r,this.evaluateWithChecksum=a,this.checksumPage=s,this.pageInteractor=l,this.arConfig=d,this.sessionId=g,this.runtimeFallbackData=b,this.fallbackData=E,this.variableStore=S,this._analytics=new Vwt(this.sessionId,E.type)}static async start(r){return new $Se({...r})}getMatcherResultFileData(r){let a=r.matcherResult;if((a==null?void 0:a.name)!=="toHaveScreenshot")return;let s=e((b,E=!0)=>{if(!b)return"";try{return(0,Gsn.readFileSync)(b,E?"base64":"utf-8")}catch{return""}},"readFileSafe"),l=s(a==null?void 0:a.actual),d=s(a==null?void 0:a.diff),g=s(a==null?void 0:a.expected);if(!g)throw new Error("No expected file found for 'toHaveScreenshot'");return{...a,actual:l,diff:d,expected:g}}async getSelectionDataForChecksumId(r){return await this.evaluateWithChecksum(async s=>{let{selector:l,locator:d,clickOffset:g,parentFramesSelectors:b,invalid:E,rrwebId:S}=await window.checksum.testGenerator.getSelectorForChecksumId(s),F=await window.checksum.testGenerator.getElementForChecksumId(s),O=F instanceof HTMLOptionElement&&F.value?F.value:void 0;return{selector:l,locator:d,clickOffset:g,selectOptionValue:O,parentFramesSelectors:b,invalid:E,rrwebId:S}},r)}async getReducedHtml(r=$Se.currentChecksumId){if(this.pageInteractor.getCurrentURL()==="about:blank")return{reducedHTML:"Error: Page is about:blank. Cannot get reduced HTML - either wait or navigate to a valid page before continuing.",currentChecksumId:r};let{reducedHTML:a,currentChecksumId:s}=await this.pageInteractor.getCurrentReducedHTML({stopFlashingElementsDetection:!0,assignChecksumIdsToAllElements:!0,initialChecksumId:r});return $Se.currentChecksumId=s,{reducedHTML:a,currentChecksumId:s}}async getApplicationState(){let{reducedHTML:r}=await this.getReducedHtml();return{reducedHTML:r,screenshot:await this.getPageScreenshot()}}async buildFallbackData(){let r=new Promise((l,d)=>setTimeout(()=>d(new Error(`getReducedHtml timeout after ${this.reducedHtmlTimeoutMs/1e3} seconds`)),this.reducedHtmlTimeoutMs)),{reducedHTML:a,currentChecksumId:s}=await Promise.race([this.getReducedHtml(),r]);return{storyInfo:this.runtimeFallbackData.storyInfo,testIdentification:this.runtimeFallbackData.testIdentification,fallbackConfig:this.runtimeFallbackData.fallbackConfig,thoughts:this.runtimeFallbackData.thoughts,errorData:{error:{name:this.fallbackData.error.name,message:this.fallbackData.error.message,stack:this.fallbackData.error.stack},errorFileContent:await this.getErrorFileContent(this.fallbackData.error)},applicationState:{reducedHTML:a,screenshot:await this.getPageScreenshot()},stepData:{matcher:this.getMatcherResultFileData(this.fallbackData.error)},currentChecksumId:s,failingStepThought:this.runtimeFallbackData.thoughts.failing,type:this.fallbackData.type,config:this.runtimeFallbackData.config,sessionId:this.sessionId,variableStore:this.variableStore.reduce((l,d)=>(l[`variablesStore.${d.name}`]=d.value,l),{}),arConfig:this.arConfig}}async scrollToElement(r){r&&await this.pageInteractor.scrollElementIntoViewByChecksumId(r)}async getPageScreenshot(r=this.arConfig){try{return this.checksumPage.wrapInternalSteps(async()=>{var s;return(await this.page.screenshot({fullPage:!0,type:((s=r.modelConfig)==null?void 0:s.provider)==="anthropic"?"jpeg":"png"})).toString("base64")})}catch{return}}async getErrorFileContent(r){try{let a=Ksn.default.dirname(this.runtimeFallbackData.testIdentification.testFileName);return oNe.toRecord(r,a)}catch{throw new Error("Error while getting error file content for AI fallback")}}async wait(){await this.page.waitForTimeout(5e3)}async preprocessCode(r){var q;let a=r,s=r,l=[],d=r.match(/getByChecksumId\([^)]+\)\.([a-zA-Z]+)\(([^)]*)\)/),g=d==null?void 0:d[1],b=d==null?void 0:d[2],E=/(?:page\.)?getByChecksumId\(['"]([^'"]+)['"]\)/,S=(q=r.match(E))==null?void 0:q[1];if(!S)throw new Error("Checksum ID not found in the code");let F=await this.getSelectionDataForChecksumId(S);if(!(F!=null&&F.locator)||F.invalid)throw new Error(`Locator or selector not found for checksumId: ${S}`);s=s.replace(E,F.locator);let O=/variables?Store\.([a-zA-Z_$][a-zA-Z0-9_$]*)/g,N=null;for(;(N=O.exec(r))!==null;){let Q=N[1],z=this.variableStore.find(se=>se.name===Q);z&&(l.push(z),s=s.replace(N[0],`"${z.value}"`))}return{originalCode:a,modifiedCode:s,usedVariables:l,checksumId:S,locator:F.locator,method:g,methodArgs:b}}async invokeCode(r){try{let a=await this.preprocessCode(r),{modifiedCode:s}=a,l=new Function("page",`return (async () => { return page.${s}; })()`),d;return await this.step(s,async()=>d=await l(this.page),!1,{box:!0,noLocation:!0,obtainStep:e(g=>{this.checksumPage.addAutoRecoveryStepId(g.stepId)},"obtainStep")}),{success:!0,result:d}}catch(a){throw console.log("Error while invoking code",a.message),a}}addAutoRecoveryErrorToReport(r,a){let s=this.runtimeFallbackData.thoughts.failing,l=a?`\u2705 "${s}" auto-recovered`:`\u274C "${s}" failed`;this.checksumPage.addPwAnnotation({type:l,description:r.replace(/^"(.*)"$/,"$1")}),a&&this.checksumPage.addErrorMessage(this.fallbackData.error,`${l}:
|
|
1595
|
-
${r}`)}get createChecksumStep(){return r=>this.checksumPage.createChecksumStep(r)}get step(){return this.checksumPage.step.bind(this.checksumPage)}get runConditionallyWithinStep(){return(r,a,s)=>this.checksumPage.runConditionallyWithinStep(r,a,s)}async getScreenshotForElement(r){var a;try{let s=await this.getSelectionDataForChecksumId(r);if(!s)throw new Error(`Locator not found for checksumId: ${r}`);let l=((a=this.arConfig.modelConfig)==null?void 0:a.provider)==="anthropic"?"jpeg":"png";return(await this.page.locator(s.selector).screenshot({type:l})).toString("base64")}catch{throw new Error(`Failed to get screenshot for element: ${r}`)}}get analytics(){return this._analytics}};e($Se,"AutoRecoveryRuntimeIteratorUtils"),$Se.currentChecksumId="0";var Jwt=$Se;var Vhe=class Vhe extends ahe{init(r){var a;return this.initializationData=r,(a=this.initializationData.fallbackConfig).arMode??(a.arMode="fast"),this}canResolve(r){return!0}get failingThought(){return this.initializationData.thoughts.failing}getRecoveryAttemptTitle(){switch(this.initializationData.type){case"action":return`Checksum Auto-Recovery: trying to achieve action "${this.failingThought}"...`;case"assertion":return`Checksum Auto-Recovery: trying to verify assertion "${this.failingThought}"...`}}static async registerSession(r){let a=r.config.apiURL,s=r.config.apiKey;return await(await fetch(`${a}${Vhe.API_BASE_ROUTE}/register-auto-recovery-session`,{method:"POST",headers:{"Content-Type":"application/json",ChecksumAppCode:s},body:JSON.stringify({appName:r.testIdentification.testFileName,fallbackData:r})})).json()}async prepareSession(r){let a=await Vhe.registerSession(this.initializationData);this.utils=new Jwt({page:this.page,evaluateWithChecksum:this.evaluateWithChecksum,checksumPage:this.checksumPage,pageInteractor:this.pageInteractor,arConfig:a.arConfig,sessionId:a.sessionId,runtimeFallbackData:this.initializationData,fallbackData:r,variableStore:this.variables});try{this.agent=await qwt.build(this.utils)}catch{throw new Error("Failed to prepare ARFallback")}}async resolve(r){let a=new Promise((l,d)=>{setTimeout(()=>{this.utils.analytics.ARError({error:`Auto-recovery timed out after ${Vhe.TIMEOUT_MS/1e3} seconds`});let g="Auto-Recovery attempt finished unsuccessfully";this.utils.createChecksumStep({title:g,withError:!0}),this.utils.addAutoRecoveryErrorToReport(g,!1),d(new Error(g))},Vhe.TIMEOUT_MS)}),s=Date.now();await this.prepareSession(r),this.utils.analytics.ARStart();try{let l=await Promise.race([this.agent.init(),a]);return this.utils.analytics.ARFinish({duration:Date.now()-s}),{fbResult:l.result,thought:l.finalThought,stepsThoughts:l.stepsThoughts,steps:[]}}catch(l){throw this.utils.analytics.ARFinish({duration:Date.now()-s}),l}}};e(Vhe,"ARFallback"),Vhe.API_BASE_ROUTE="/auto-recovery",Vhe.TIMEOUT_MS=12e4;var Tbr=Vhe;var lxa=1e3*30;var Dbe={defaultMerge:Symbol("deepmerge-ts: default merge"),skip:Symbol("deepmerge-ts: skip")},mxa={defaultMerge:Dbe.defaultMerge};function Yxi(i,r){return r}e(Yxi,"defaultMetaDataUpdater");function Xxi(i,r){return i.filter(a=>a!==void 0)}e(Xxi,"defaultFilterValues");var Xsn;(function(i){i[i.NOT=0]="NOT",i[i.RECORD=1]="RECORD",i[i.ARRAY=2]="ARRAY",i[i.SET=3]="SET",i[i.MAP=4]="MAP",i[i.OTHER=5]="OTHER"})(Xsn||(Xsn={}));function Zsn(i){return typeof i!="object"||i===null?0:Array.isArray(i)?2:tAi(i)?1:i instanceof Set?3:i instanceof Map?4:5}e(Zsn,"getObjectType");function Zxi(i){let r=new Set;for(let a of i)for(let s of[...Object.keys(a),...Object.getOwnPropertySymbols(a)])r.add(s);return r}e(Zxi,"getKeys");function eAi(i,r){return typeof i=="object"&&Object.prototype.propertyIsEnumerable.call(i,r)}e(eAi,"objectHasProperty");function ton(i){var s;let r=0,a=(s=i[0])==null?void 0:s[Symbol.iterator]();return{[Symbol.iterator](){return{next(){var l;do{if(a===void 0)return{done:!0,value:void 0};let d=a.next();if(d.done===!0){r+=1,a=(l=i[r])==null?void 0:l[Symbol.iterator]();continue}return{done:!1,value:d.value}}while(!0)}}}}}e(ton,"getIterableOfIterables");var eon=["[object Object]","[object Module]"];function tAi(i){if(!eon.includes(Object.prototype.toString.call(i)))return!1;let{constructor:r}=i;if(r===void 0)return!0;let a=r.prototype;return!(a===null||typeof a!="object"||!eon.includes(Object.prototype.toString.call(a))||!a.hasOwnProperty("isPrototypeOf"))}e(tAi,"isRecord");function rAi(i,r,a){let s={};for(let l of Zxi(i)){let d=[];for(let E of i)eAi(E,l)&&d.push(E[l]);if(d.length===0)continue;let g=r.metaDataUpdater(a,{key:l,parents:i}),b=non(d,r,g);b!==Dbe.skip&&(l==="__proto__"?Object.defineProperty(s,l,{value:b,configurable:!0,enumerable:!0,writable:!0}):s[l]=b)}return s}e(rAi,"mergeRecords$1");function nAi(i){return i.flat()}e(nAi,"mergeArrays$1");function iAi(i){return new Set(ton(i))}e(iAi,"mergeSets$1");function aAi(i){return new Map(ton(i))}e(aAi,"mergeMaps$1");function sAi(i){return i.at(-1)}e(sAi,"mergeOthers$1");var zwt={mergeRecords:rAi,mergeArrays:nAi,mergeSets:iAi,mergeMaps:aAi,mergeOthers:sAi};function ron(...i){return oAi({})(...i)}e(ron,"deepmerge");function oAi(i,r){let a=cAi(i,s);function s(...l){return non(l,a,r)}return e(s,"customizedDeepmerge"),s}e(oAi,"deepmergeCustom");function cAi(i,r){return{defaultMergeFunctions:zwt,mergeFunctions:{...zwt,...Object.fromEntries(Object.entries(i).filter(([a,s])=>Object.hasOwn(zwt,a)).map(([a,s])=>s===!1?[a,zwt.mergeOthers]:[a,s]))},metaDataUpdater:i.metaDataUpdater??Yxi,deepmerge:r,useImplicitDefaultMerging:i.enableImplicitDefaultMerging??!1,filterValues:i.filterValues===!1?void 0:i.filterValues??Xxi,actions:Dbe}}e(cAi,"getUtils");function non(i,r,a){var d;let s=((d=r.filterValues)==null?void 0:d.call(r,i,a))??i;if(s.length===0)return;if(s.length===1)return Ibr(s,r,a);let l=Zsn(s[0]);if(l!==0&&l!==5){for(let g=1;g<s.length;g++)if(Zsn(s[g])!==l)return Ibr(s,r,a)}switch(l){case 1:return uAi(s,r,a);case 2:return lAi(s,r,a);case 3:return pAi(s,r,a);case 4:return fAi(s,r,a);default:return Ibr(s,r,a)}}e(non,"mergeUnknowns");function uAi(i,r,a){let s=r.mergeFunctions.mergeRecords(i,r,a);return s===Dbe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeRecords!==r.defaultMergeFunctions.mergeRecords?r.defaultMergeFunctions.mergeRecords(i,r,a):s}e(uAi,"mergeRecords");function lAi(i,r,a){let s=r.mergeFunctions.mergeArrays(i,r,a);return s===Dbe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeArrays!==r.defaultMergeFunctions.mergeArrays?r.defaultMergeFunctions.mergeArrays(i):s}e(lAi,"mergeArrays");function pAi(i,r,a){let s=r.mergeFunctions.mergeSets(i,r,a);return s===Dbe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeSets!==r.defaultMergeFunctions.mergeSets?r.defaultMergeFunctions.mergeSets(i):s}e(pAi,"mergeSets");function fAi(i,r,a){let s=r.mergeFunctions.mergeMaps(i,r,a);return s===Dbe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeMaps!==r.defaultMergeFunctions.mergeMaps?r.defaultMergeFunctions.mergeMaps(i):s}e(fAi,"mergeMaps");function Ibr(i,r,a){let s=r.mergeFunctions.mergeOthers(i,r,a);return s===Dbe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeOthers!==r.defaultMergeFunctions.mergeOthers?r.defaultMergeFunctions.mergeOthers(i):s}e(Ibr,"mergeOthers");var ion=!1;function kbr(i){ion=i}e(kbr,"setLogToConsole");function mD(...i){ion&&console.log(...i)}e(mD,"log");async function W$r(i,r,a,s=6e4){if(!(r in i))return i;let l=e(()=>i[r](...a),"executor");return s===null?l():E8(l(),s,"Execution timeout")}e(W$r,"executePlaywrightMethodWithTimeout");var Wwt;function aon(i={}){var a,s,l,d;let r={apiKey:void 0,runMode:"normal",apiURL:"https://api.checksum.ai",options:{useChecksumSelectors:!0,useChecksumAI:{actions:!0,assertions:!1},newAssertionsEnabled:!0,useMockData:!1,printLogs:!1,hideReports:process.env.AUTHORIZE_REPORTS==="true"}};return((s=(a=i.options)==null?void 0:a.useChecksumAI)==null?void 0:s.visualComparison)===void 0&&((d=(l=i.options)==null?void 0:l.useChecksumAI)!=null&&d.assertions)&&(i.options.useChecksumAI.visualComparison=!0),Wwt=ron(r,i),eg.testRun.disableAutoRecovery&&(Wwt.options.useChecksumAI={actions:!1,assertions:!1,visualComparison:!1}),eg.testRun.disableHostReports&&(Wwt.options.hostReports=!1),Wwt}e(aon,"getChecksumConfig");var oXe="Checksum failed connecting to the server";var nxn=qd(require("child_process")),XDr=require("crypto"),gfe=require("fs"),NK=require("path");var Hwt=(S=>(S.RuntimeError="Runtime Error",S.TestRunMonitorError="Test Run Monitor Error",S.ChecksumConfigError="Checksum Config Error",S.InitializationError="Initialization Error",S.TraceProcessingError="Trace Processing Error",S.TestSuiteInitError="Test Suite Init Error",S.UploadStart="Upload Start",S.UploadComplete="Upload Complete",S.UploadFailed="Upload Failed",S))(Hwt||{});var VSe=class VSe{constructor(r,a){this.isolatedMode=a,this.analytics=Fee.createFromConfig(r,a,!1)}static getInstance(r,a){return VSe.instance||(VSe.instance=new VSe(r,a)),VSe.instance}get tableName(){return"test_suites"}get metadata(){return this.analytics.metadata}event(r){this.analytics.trackEventWithTable(r,this.metadata,this.tableName)}testSuiteStart(){let r={event:"Test Suite Start",metadata:this.metadata};this.event(r)}testSuiteEnd(r){this.event({event:"Test Suite End",metadata:this.metadata,...r})}checksumConfig(r){this.event({event:"Checksum Config",metadata:this.metadata,...r})}checksumConfigError(r){this.event({event:"Checksum Config Error",metadata:this.metadata,...r})}testSuiteError(r){this.event({event:"Test Suite Error",metadata:this.metadata,...r})}allUploadsComplete(){this.event({event:"All Uploads Complete",metadata:this.metadata})}testsFailed(){this.event({event:"Tests Failed",metadata:this.metadata})}testRunMonitorError(r){this.event({event:"Test Run Monitor Error",metadata:this.metadata,...r})}uploadStart(r){this.event({event:"Upload Start",metadata:this.metadata,...r})}uploadComplete(r){this.event({event:"Upload Complete",metadata:this.metadata,...r})}uploadFailed(r){this.event({event:"Upload Failed",metadata:this.metadata,...r})}traceProcessingError(r){this.event({event:"Trace Processing Error",metadata:this.metadata,...r})}uploadsCompleteWithErrors(r){this.event({event:"Uploads Complete With Errors",metadata:this.metadata,...r})}reportComplete(r){this.event({event:"Report Complete",metadata:this.metadata,...r})}playwrightConfig(r){this.event({event:"Playwright Config",metadata:this.metadata,...r})}playwrightConfigError(r){this.event({event:"Playwright Config Error",metadata:this.metadata,...r})}completionStatus(r){this.event({event:"Completion Status",metadata:this.metadata,...r})}reportUploadError(r={}){this.event({event:"Report Upload Error",metadata:this.metadata,...r})}runtimeTimeout(r={}){this.event({event:"Runtime Timeout",metadata:this.metadata,...r})}runtimeComplete(){this.event({event:"Runtime Complete",metadata:this.metadata})}genericEvent(r,a={}){this.event({event:r,metadata:this.metadata,...a})}};e(VSe,"TestSuiteAnalytics");var Gwt=VSe;var Sbe=e(i=>i.name==="up"||i.name==="k"||i.ctrl&&i.name==="p","isUpKey"),ZBe=e(i=>i.name==="down"||i.name==="j"||i.ctrl&&i.name==="n","isDownKey"),son=e(i=>i.name==="space","isSpaceKey"),eRe=e(i=>i.name==="backspace","isBackspaceKey"),Kwt=e(i=>"123456789".includes(i.name),"isNumberKey"),TI=e(i=>i.name==="enter"||i.name==="return","isEnterKey");var Fbr=class Fbr extends Error{name="AbortPromptError";message="Prompt was aborted";constructor(r){super(),this.cause=r==null?void 0:r.cause}};e(Fbr,"AbortPromptError");var Ywt=Fbr,Pbr=class Pbr extends Error{name="CancelPromptError";message="Prompt was canceled"};e(Pbr,"CancelPromptError");var Xwt=Pbr,Nbr=class Nbr extends Error{name="ExitPromptError"};e(Nbr,"ExitPromptError");var Zwt=Nbr,Obr=class Obr extends Error{name="HookError"};e(Obr,"HookError");var e8t=Obr,Bbr=class Bbr extends Error{name="ValidationError"};e(Bbr,"ValidationError");var wbe=Bbr;var jbr=require("async_hooks");var t8t=require("async_hooks");var oon=new t8t.AsyncLocalStorage;function dAi(i){return{rl:i,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}e(dAi,"createStore");function con(i,r){let a=dAi(i);return oon.run(a,()=>{function s(l){a.handleChange=()=>{a.index=0,l()},a.handleChange()}return e(s,"cycle"),r(s)})}e(con,"withHooks");function JSe(){let i=oon.getStore();if(!i)throw new e8t("[Inquirer] Hook functions can only be called from within a prompt");return i}e(JSe,"getStore");function Rbr(){return JSe().rl}e(Rbr,"readline");function Lbr(i){let r=e((...a)=>{let s=JSe(),l=!1,d=s.handleChange;s.handleChange=()=>{l=!0};let g=i(...a);return l&&d(),s.handleChange=d,g},"wrapped");return t8t.AsyncResource.bind(r)}e(Lbr,"withUpdates");function tRe(i){let r=JSe(),{index:a}=r,s={get(){return r.hooks[a]},set(d){r.hooks[a]=d},initialized:a in r.hooks},l=i(s);return r.index++,l}e(tRe,"withPointer");function uon(){JSe().handleChange()}e(uon,"handleChange");var zSe={queue(i){let r=JSe(),{index:a}=r;r.hooksEffect.push(()=>{var l,d;(d=(l=r.hooksCleanup)[a])==null||d.call(l);let s=i(Rbr());if(s!=null&&typeof s!="function")throw new wbe("useEffect return value must be a cleanup function or nothing.");r.hooksCleanup[a]=s})},run(){let i=JSe();Lbr(()=>{i.hooksEffect.forEach(r=>{r()}),i.hooksEffect.length=0})()},clearAll(){let i=JSe();i.hooksCleanup.forEach(r=>{r==null||r()}),i.hooksEffect.length=0,i.hooksCleanup.length=0}};function P2(i){return tRe(r=>{let a=e(l=>{r.get()!==l&&(r.set(l),uon())},"setFn");if(r.initialized)return[r.get(),a];let s=typeof i=="function"?i():i;return r.set(s),[s,a]})}e(P2,"useState");function rse(i,r){tRe(a=>{let s=a.get();(!Array.isArray(s)||r.some((d,g)=>!Object.is(d,s[g])))&&zSe.queue(i),a.set(r)})}e(rse,"useEffect");var lte=qd(Tbe(),1);var nse=qd(require("process"),1);function mAi(){return nse.default.platform!=="win32"?nse.default.env.TERM!=="linux":!!nse.default.env.WT_SESSION||!!nse.default.env.TERMINUS_SUBLIME||nse.default.env.ConEmuTask==="{cmd::Cmder}"||nse.default.env.TERM_PROGRAM==="Terminus-Sublime"||nse.default.env.TERM_PROGRAM==="vscode"||nse.default.env.TERM==="xterm-256color"||nse.default.env.TERM==="alacritty"||nse.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}e(mAi,"isUnicodeSupported");var don={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},_on={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},hAi={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},gAi={...don,..._on},yAi={...don,...hAi},vAi=mAi(),xAi=vAi?gAi:yAi,ute=xAi,Vxa=Object.entries(_on);var mon={prefix:{idle:lte.default.blue("?"),done:lte.default.green(ute.tick)},spinner:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"].map(i=>lte.default.yellow(i))},style:{answer:lte.default.cyan,message:lte.default.bold,error:e(i=>lte.default.red(`> ${i}`),"error"),defaultAnswer:e(i=>lte.default.dim(`(${i})`),"defaultAnswer"),help:lte.default.dim,highlight:lte.default.cyan,key:e(i=>lte.default.cyan(lte.default.bold(`<${i}>`)),"key")}};function hon(i){if(typeof i!="object"||i===null)return!1;let r=i;for(;Object.getPrototypeOf(r)!==null;)r=Object.getPrototypeOf(r);return Object.getPrototypeOf(i)===r}e(hon,"isPlainObject");function gon(...i){let r={};for(let a of i)for(let[s,l]of Object.entries(a)){let d=r[s];r[s]=hon(d)&&hon(l)?gon(d,l):l}return r}e(gon,"deepMerge");function k8(...i){let r=[mon,...i.filter(a=>a!=null)];return gon(...r)}e(k8,"makeTheme");function gk({status:i="idle",theme:r}){let[a,s]=P2(!1),[l,d]=P2(0),{prefix:g,spinner:b}=k8(r);return rse(()=>{if(i==="loading"){let S,F=-1,O=setTimeout(jbr.AsyncResource.bind(()=>{s(!0),S=setInterval(jbr.AsyncResource.bind(()=>{F=F+1,d(F%b.frames.length)}),b.interval)}),300);return()=>{clearTimeout(O),clearInterval(S)}}else s(!1)},[i]),a?b.frames[l]:typeof g=="string"?g:g[i==="loading"?"idle":i]??g.idle}e(gk,"usePrefix");function EK(i,r){return tRe(a=>{let s=a.get();if(!s||s.dependencies.length!==r.length||s.dependencies.some((l,d)=>l!==r[d])){let l=i();return a.set({value:l,dependencies:r}),l}return s.value})}e(EK,"useMemo");function pte(i){return P2({current:i})[0]}e(pte,"useRef");function yk(i){let r=pte(i);r.current=i,rse(a=>{let s=!1,l=Lbr((d,g)=>{s||r.current(g,a)});return a.input.on("keypress",l),()=>{s=!0,a.input.removeListener("keypress",l)}},[])}e(yk,"useKeypress");var zon=qd(von(),1),Won=qd(Jon(),1);function zet(i,r){return i.split(`
|
|
1595
|
+
${r}`)}get createChecksumStep(){return r=>this.checksumPage.createChecksumStep(r)}get step(){return this.checksumPage.step.bind(this.checksumPage)}get runConditionallyWithinStep(){return(r,a,s)=>this.checksumPage.runConditionallyWithinStep(r,a,s)}async getScreenshotForElement(r){var a;try{let s=await this.getSelectionDataForChecksumId(r);if(!s)throw new Error(`Locator not found for checksumId: ${r}`);let l=((a=this.arConfig.modelConfig)==null?void 0:a.provider)==="anthropic"?"jpeg":"png";return(await this.page.locator(s.selector).screenshot({type:l})).toString("base64")}catch{throw new Error(`Failed to get screenshot for element: ${r}`)}}get analytics(){return this._analytics}};e($Se,"AutoRecoveryRuntimeIteratorUtils"),$Se.currentChecksumId="0";var Jwt=$Se;var Vhe=class Vhe extends ahe{init(r){var a;return this.initializationData=r,(a=this.initializationData.fallbackConfig).arMode??(a.arMode="fast"),this}canResolve(r){return!0}get failingThought(){return this.initializationData.thoughts.failing}getRecoveryAttemptTitle(){switch(this.initializationData.type){case"action":return`Checksum Auto-Recovery: trying to achieve action "${this.failingThought}"...`;case"assertion":return`Checksum Auto-Recovery: trying to verify assertion "${this.failingThought}"...`}}static async registerSession(r){let a=r.config.apiURL,s=r.config.apiKey;return await(await fetch(`${a}${Vhe.API_BASE_ROUTE}/register-auto-recovery-session`,{method:"POST",headers:{"Content-Type":"application/json",ChecksumAppCode:s},body:JSON.stringify({appName:r.testIdentification.testFileName,fallbackData:r})})).json()}async prepareSession(r){let a=await Vhe.registerSession(this.initializationData);this.utils=new Jwt({page:this.page,evaluateWithChecksum:this.evaluateWithChecksum,checksumPage:this.checksumPage,pageInteractor:this.pageInteractor,arConfig:a.arConfig,sessionId:a.sessionId,runtimeFallbackData:this.initializationData,fallbackData:r,variableStore:this.variables});try{this.agent=await qwt.build(this.utils)}catch{throw new Error("Failed to prepare ARFallback")}}async resolve(r){let a=new Promise((l,d)=>{setTimeout(()=>{this.utils.analytics.ARError({error:`Auto-recovery timed out after ${Vhe.TIMEOUT_MS/1e3} seconds`});let g="Auto-Recovery attempt finished unsuccessfully";this.utils.createChecksumStep({title:g,withError:!0}),this.utils.addAutoRecoveryErrorToReport(g,!1),d(new Error(g))},Vhe.TIMEOUT_MS)}),s=Date.now();await this.prepareSession(r),this.utils.analytics.ARStart();try{let l=await Promise.race([this.agent.init(),a]);return this.utils.analytics.ARFinish({duration:Date.now()-s}),{fbResult:l.result,thought:l.finalThought,stepsThoughts:l.stepsThoughts,steps:[]}}catch(l){throw this.utils.analytics.ARFinish({duration:Date.now()-s}),l}}};e(Vhe,"ARFallback"),Vhe.API_BASE_ROUTE="/auto-recovery",Vhe.TIMEOUT_MS=12e4;var Tbr=Vhe;var lxa=1e3*30;var Dbe={defaultMerge:Symbol("deepmerge-ts: default merge"),skip:Symbol("deepmerge-ts: skip")},mxa={defaultMerge:Dbe.defaultMerge};function Yxi(i,r){return r}e(Yxi,"defaultMetaDataUpdater");function Xxi(i,r){return i.filter(a=>a!==void 0)}e(Xxi,"defaultFilterValues");var Xsn;(function(i){i[i.NOT=0]="NOT",i[i.RECORD=1]="RECORD",i[i.ARRAY=2]="ARRAY",i[i.SET=3]="SET",i[i.MAP=4]="MAP",i[i.OTHER=5]="OTHER"})(Xsn||(Xsn={}));function Zsn(i){return typeof i!="object"||i===null?0:Array.isArray(i)?2:tAi(i)?1:i instanceof Set?3:i instanceof Map?4:5}e(Zsn,"getObjectType");function Zxi(i){let r=new Set;for(let a of i)for(let s of[...Object.keys(a),...Object.getOwnPropertySymbols(a)])r.add(s);return r}e(Zxi,"getKeys");function eAi(i,r){return typeof i=="object"&&Object.prototype.propertyIsEnumerable.call(i,r)}e(eAi,"objectHasProperty");function ton(i){var s;let r=0,a=(s=i[0])==null?void 0:s[Symbol.iterator]();return{[Symbol.iterator](){return{next(){var l;do{if(a===void 0)return{done:!0,value:void 0};let d=a.next();if(d.done===!0){r+=1,a=(l=i[r])==null?void 0:l[Symbol.iterator]();continue}return{done:!1,value:d.value}}while(!0)}}}}}e(ton,"getIterableOfIterables");var eon=["[object Object]","[object Module]"];function tAi(i){if(!eon.includes(Object.prototype.toString.call(i)))return!1;let{constructor:r}=i;if(r===void 0)return!0;let a=r.prototype;return!(a===null||typeof a!="object"||!eon.includes(Object.prototype.toString.call(a))||!a.hasOwnProperty("isPrototypeOf"))}e(tAi,"isRecord");function rAi(i,r,a){let s={};for(let l of Zxi(i)){let d=[];for(let E of i)eAi(E,l)&&d.push(E[l]);if(d.length===0)continue;let g=r.metaDataUpdater(a,{key:l,parents:i}),b=non(d,r,g);b!==Dbe.skip&&(l==="__proto__"?Object.defineProperty(s,l,{value:b,configurable:!0,enumerable:!0,writable:!0}):s[l]=b)}return s}e(rAi,"mergeRecords$1");function nAi(i){return i.flat()}e(nAi,"mergeArrays$1");function iAi(i){return new Set(ton(i))}e(iAi,"mergeSets$1");function aAi(i){return new Map(ton(i))}e(aAi,"mergeMaps$1");function sAi(i){return i.at(-1)}e(sAi,"mergeOthers$1");var zwt={mergeRecords:rAi,mergeArrays:nAi,mergeSets:iAi,mergeMaps:aAi,mergeOthers:sAi};function ron(...i){return oAi({})(...i)}e(ron,"deepmerge");function oAi(i,r){let a=cAi(i,s);function s(...l){return non(l,a,r)}return e(s,"customizedDeepmerge"),s}e(oAi,"deepmergeCustom");function cAi(i,r){return{defaultMergeFunctions:zwt,mergeFunctions:{...zwt,...Object.fromEntries(Object.entries(i).filter(([a,s])=>Object.hasOwn(zwt,a)).map(([a,s])=>s===!1?[a,zwt.mergeOthers]:[a,s]))},metaDataUpdater:i.metaDataUpdater??Yxi,deepmerge:r,useImplicitDefaultMerging:i.enableImplicitDefaultMerging??!1,filterValues:i.filterValues===!1?void 0:i.filterValues??Xxi,actions:Dbe}}e(cAi,"getUtils");function non(i,r,a){var d;let s=((d=r.filterValues)==null?void 0:d.call(r,i,a))??i;if(s.length===0)return;if(s.length===1)return Ibr(s,r,a);let l=Zsn(s[0]);if(l!==0&&l!==5){for(let g=1;g<s.length;g++)if(Zsn(s[g])!==l)return Ibr(s,r,a)}switch(l){case 1:return uAi(s,r,a);case 2:return lAi(s,r,a);case 3:return pAi(s,r,a);case 4:return fAi(s,r,a);default:return Ibr(s,r,a)}}e(non,"mergeUnknowns");function uAi(i,r,a){let s=r.mergeFunctions.mergeRecords(i,r,a);return s===Dbe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeRecords!==r.defaultMergeFunctions.mergeRecords?r.defaultMergeFunctions.mergeRecords(i,r,a):s}e(uAi,"mergeRecords");function lAi(i,r,a){let s=r.mergeFunctions.mergeArrays(i,r,a);return s===Dbe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeArrays!==r.defaultMergeFunctions.mergeArrays?r.defaultMergeFunctions.mergeArrays(i):s}e(lAi,"mergeArrays");function pAi(i,r,a){let s=r.mergeFunctions.mergeSets(i,r,a);return s===Dbe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeSets!==r.defaultMergeFunctions.mergeSets?r.defaultMergeFunctions.mergeSets(i):s}e(pAi,"mergeSets");function fAi(i,r,a){let s=r.mergeFunctions.mergeMaps(i,r,a);return s===Dbe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeMaps!==r.defaultMergeFunctions.mergeMaps?r.defaultMergeFunctions.mergeMaps(i):s}e(fAi,"mergeMaps");function Ibr(i,r,a){let s=r.mergeFunctions.mergeOthers(i,r,a);return s===Dbe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeOthers!==r.defaultMergeFunctions.mergeOthers?r.defaultMergeFunctions.mergeOthers(i):s}e(Ibr,"mergeOthers");var ion=!1;function kbr(i){ion=i}e(kbr,"setLogToConsole");function mD(...i){ion&&console.log(...i)}e(mD,"log");async function W$r(i,r,a,s=6e4){if(!(r in i))return i;let l=e(()=>i[r](...a),"executor");return s===null?l():E8(l(),s,"Execution timeout")}e(W$r,"executePlaywrightMethodWithTimeout");var Wwt;function aon(i={}){var a,s,l,d;let r={apiKey:void 0,runMode:"normal",apiURL:"https://api.checksum.ai",options:{useChecksumSelectors:!0,useChecksumAI:{actions:!0,assertions:!1,skipTestsWithKnownBugs:!0},newAssertionsEnabled:!0,useMockData:!1,printLogs:!1,hideReports:process.env.AUTHORIZE_REPORTS==="true"}};return((s=(a=i.options)==null?void 0:a.useChecksumAI)==null?void 0:s.visualComparison)===void 0&&((d=(l=i.options)==null?void 0:l.useChecksumAI)!=null&&d.assertions)&&(i.options.useChecksumAI.visualComparison=!0),Wwt=ron(r,i),eg.testRun.disableAutoRecovery&&(Wwt.options.useChecksumAI={actions:!1,assertions:!1,visualComparison:!1}),eg.testRun.disableHostReports&&(Wwt.options.hostReports=!1),Wwt}e(aon,"getChecksumConfig");var oXe="Checksum failed connecting to the server";var nxn=qd(require("child_process")),XDr=require("crypto"),gfe=require("fs"),NK=require("path");var Hwt=(S=>(S.RuntimeError="Runtime Error",S.TestRunMonitorError="Test Run Monitor Error",S.ChecksumConfigError="Checksum Config Error",S.InitializationError="Initialization Error",S.TraceProcessingError="Trace Processing Error",S.TestSuiteInitError="Test Suite Init Error",S.UploadStart="Upload Start",S.UploadComplete="Upload Complete",S.UploadFailed="Upload Failed",S))(Hwt||{});var VSe=class VSe{constructor(r,a){this.isolatedMode=a,this.analytics=Fee.createFromConfig(r,a,!1)}static getInstance(r,a){return VSe.instance||(VSe.instance=new VSe(r,a)),VSe.instance}get tableName(){return"test_suites"}get metadata(){return this.analytics.metadata}event(r){this.analytics.trackEventWithTable(r,this.metadata,this.tableName)}testSuiteStart(){let r={event:"Test Suite Start",metadata:this.metadata};this.event(r)}testSuiteEnd(r){this.event({event:"Test Suite End",metadata:this.metadata,...r})}checksumConfig(r){this.event({event:"Checksum Config",metadata:this.metadata,...r})}checksumConfigError(r){this.event({event:"Checksum Config Error",metadata:this.metadata,...r})}testSuiteError(r){this.event({event:"Test Suite Error",metadata:this.metadata,...r})}allUploadsComplete(){this.event({event:"All Uploads Complete",metadata:this.metadata})}testsFailed(){this.event({event:"Tests Failed",metadata:this.metadata})}testRunMonitorError(r){this.event({event:"Test Run Monitor Error",metadata:this.metadata,...r})}uploadStart(r){this.event({event:"Upload Start",metadata:this.metadata,...r})}uploadComplete(r){this.event({event:"Upload Complete",metadata:this.metadata,...r})}uploadFailed(r){this.event({event:"Upload Failed",metadata:this.metadata,...r})}traceProcessingError(r){this.event({event:"Trace Processing Error",metadata:this.metadata,...r})}uploadsCompleteWithErrors(r){this.event({event:"Uploads Complete With Errors",metadata:this.metadata,...r})}reportComplete(r){this.event({event:"Report Complete",metadata:this.metadata,...r})}playwrightConfig(r){this.event({event:"Playwright Config",metadata:this.metadata,...r})}playwrightConfigError(r){this.event({event:"Playwright Config Error",metadata:this.metadata,...r})}completionStatus(r){this.event({event:"Completion Status",metadata:this.metadata,...r})}reportUploadError(r={}){this.event({event:"Report Upload Error",metadata:this.metadata,...r})}runtimeTimeout(r={}){this.event({event:"Runtime Timeout",metadata:this.metadata,...r})}runtimeComplete(){this.event({event:"Runtime Complete",metadata:this.metadata})}genericEvent(r,a={}){this.event({event:r,metadata:this.metadata,...a})}};e(VSe,"TestSuiteAnalytics");var Gwt=VSe;var Sbe=e(i=>i.name==="up"||i.name==="k"||i.ctrl&&i.name==="p","isUpKey"),ZBe=e(i=>i.name==="down"||i.name==="j"||i.ctrl&&i.name==="n","isDownKey"),son=e(i=>i.name==="space","isSpaceKey"),eRe=e(i=>i.name==="backspace","isBackspaceKey"),Kwt=e(i=>"123456789".includes(i.name),"isNumberKey"),TI=e(i=>i.name==="enter"||i.name==="return","isEnterKey");var Fbr=class Fbr extends Error{name="AbortPromptError";message="Prompt was aborted";constructor(r){super(),this.cause=r==null?void 0:r.cause}};e(Fbr,"AbortPromptError");var Ywt=Fbr,Pbr=class Pbr extends Error{name="CancelPromptError";message="Prompt was canceled"};e(Pbr,"CancelPromptError");var Xwt=Pbr,Nbr=class Nbr extends Error{name="ExitPromptError"};e(Nbr,"ExitPromptError");var Zwt=Nbr,Obr=class Obr extends Error{name="HookError"};e(Obr,"HookError");var e8t=Obr,Bbr=class Bbr extends Error{name="ValidationError"};e(Bbr,"ValidationError");var wbe=Bbr;var jbr=require("async_hooks");var t8t=require("async_hooks");var oon=new t8t.AsyncLocalStorage;function dAi(i){return{rl:i,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}e(dAi,"createStore");function con(i,r){let a=dAi(i);return oon.run(a,()=>{function s(l){a.handleChange=()=>{a.index=0,l()},a.handleChange()}return e(s,"cycle"),r(s)})}e(con,"withHooks");function JSe(){let i=oon.getStore();if(!i)throw new e8t("[Inquirer] Hook functions can only be called from within a prompt");return i}e(JSe,"getStore");function Rbr(){return JSe().rl}e(Rbr,"readline");function Lbr(i){let r=e((...a)=>{let s=JSe(),l=!1,d=s.handleChange;s.handleChange=()=>{l=!0};let g=i(...a);return l&&d(),s.handleChange=d,g},"wrapped");return t8t.AsyncResource.bind(r)}e(Lbr,"withUpdates");function tRe(i){let r=JSe(),{index:a}=r,s={get(){return r.hooks[a]},set(d){r.hooks[a]=d},initialized:a in r.hooks},l=i(s);return r.index++,l}e(tRe,"withPointer");function uon(){JSe().handleChange()}e(uon,"handleChange");var zSe={queue(i){let r=JSe(),{index:a}=r;r.hooksEffect.push(()=>{var l,d;(d=(l=r.hooksCleanup)[a])==null||d.call(l);let s=i(Rbr());if(s!=null&&typeof s!="function")throw new wbe("useEffect return value must be a cleanup function or nothing.");r.hooksCleanup[a]=s})},run(){let i=JSe();Lbr(()=>{i.hooksEffect.forEach(r=>{r()}),i.hooksEffect.length=0})()},clearAll(){let i=JSe();i.hooksCleanup.forEach(r=>{r==null||r()}),i.hooksEffect.length=0,i.hooksCleanup.length=0}};function P2(i){return tRe(r=>{let a=e(l=>{r.get()!==l&&(r.set(l),uon())},"setFn");if(r.initialized)return[r.get(),a];let s=typeof i=="function"?i():i;return r.set(s),[s,a]})}e(P2,"useState");function rse(i,r){tRe(a=>{let s=a.get();(!Array.isArray(s)||r.some((d,g)=>!Object.is(d,s[g])))&&zSe.queue(i),a.set(r)})}e(rse,"useEffect");var lte=qd(Tbe(),1);var nse=qd(require("process"),1);function mAi(){return nse.default.platform!=="win32"?nse.default.env.TERM!=="linux":!!nse.default.env.WT_SESSION||!!nse.default.env.TERMINUS_SUBLIME||nse.default.env.ConEmuTask==="{cmd::Cmder}"||nse.default.env.TERM_PROGRAM==="Terminus-Sublime"||nse.default.env.TERM_PROGRAM==="vscode"||nse.default.env.TERM==="xterm-256color"||nse.default.env.TERM==="alacritty"||nse.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}e(mAi,"isUnicodeSupported");var don={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},_on={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},hAi={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},gAi={...don,..._on},yAi={...don,...hAi},vAi=mAi(),xAi=vAi?gAi:yAi,ute=xAi,Vxa=Object.entries(_on);var mon={prefix:{idle:lte.default.blue("?"),done:lte.default.green(ute.tick)},spinner:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"].map(i=>lte.default.yellow(i))},style:{answer:lte.default.cyan,message:lte.default.bold,error:e(i=>lte.default.red(`> ${i}`),"error"),defaultAnswer:e(i=>lte.default.dim(`(${i})`),"defaultAnswer"),help:lte.default.dim,highlight:lte.default.cyan,key:e(i=>lte.default.cyan(lte.default.bold(`<${i}>`)),"key")}};function hon(i){if(typeof i!="object"||i===null)return!1;let r=i;for(;Object.getPrototypeOf(r)!==null;)r=Object.getPrototypeOf(r);return Object.getPrototypeOf(i)===r}e(hon,"isPlainObject");function gon(...i){let r={};for(let a of i)for(let[s,l]of Object.entries(a)){let d=r[s];r[s]=hon(d)&&hon(l)?gon(d,l):l}return r}e(gon,"deepMerge");function k8(...i){let r=[mon,...i.filter(a=>a!=null)];return gon(...r)}e(k8,"makeTheme");function gk({status:i="idle",theme:r}){let[a,s]=P2(!1),[l,d]=P2(0),{prefix:g,spinner:b}=k8(r);return rse(()=>{if(i==="loading"){let S,F=-1,O=setTimeout(jbr.AsyncResource.bind(()=>{s(!0),S=setInterval(jbr.AsyncResource.bind(()=>{F=F+1,d(F%b.frames.length)}),b.interval)}),300);return()=>{clearTimeout(O),clearInterval(S)}}else s(!1)},[i]),a?b.frames[l]:typeof g=="string"?g:g[i==="loading"?"idle":i]??g.idle}e(gk,"usePrefix");function EK(i,r){return tRe(a=>{let s=a.get();if(!s||s.dependencies.length!==r.length||s.dependencies.some((l,d)=>l!==r[d])){let l=i();return a.set({value:l,dependencies:r}),l}return s.value})}e(EK,"useMemo");function pte(i){return P2({current:i})[0]}e(pte,"useRef");function yk(i){let r=pte(i);r.current=i,rse(a=>{let s=!1,l=Lbr((d,g)=>{s||r.current(g,a)});return a.input.on("keypress",l),()=>{s=!0,a.input.removeListener("keypress",l)}},[])}e(yk,"useKeypress");var zon=qd(von(),1),Won=qd(Jon(),1);function zet(i,r){return i.split(`
|
|
1596
1596
|
`).flatMap(a=>(0,Won.default)(a,r,{trim:!1,hard:!0}).split(`
|
|
1597
1597
|
`).map(s=>s.trimEnd())).join(`
|
|
1598
1598
|
`)}e(zet,"breakLines");function s8t(){return(0,zon.default)({defaultWidth:80,output:Rbr().output})}e(s8t,"readlineWidth");function $Ai(i,r){return zet(i,r).split(`
|
package/index.js
CHANGED
|
@@ -1823,7 +1823,7 @@ Executing locator ${this.getCurrentLocatorInChain().type} with ${typeof t=="stri
|
|
|
1823
1823
|
${t}`)}get createChecksumStep(){return t=>this.checksumPage.createChecksumStep(t)}get step(){return this.checksumPage.step.bind(this.checksumPage)}get runConditionallyWithinStep(){return(t,r,a)=>this.checksumPage.runConditionallyWithinStep(t,r,a)}async getScreenshotForElement(t){var r;try{let a=await this.getSelectionDataForChecksumId(t);if(!a)throw new Error(`Locator not found for checksumId: ${t}`);let o=((r=this.arConfig.modelConfig)==null?void 0:r.provider)==="anthropic"?"jpeg":"png";return(await this.page.locator(a.selector).screenshot({type:o})).toString("base64")}catch{throw new Error(`Failed to get screenshot for element: ${t}`)}}get analytics(){return this._analytics}};e(lFe,"AutoRecoveryRuntimeIteratorUtils"),lFe.currentChecksumId="0";var PVt=lFe;var wbe=class wbe extends jme{init(t){var r;return this.initializationData=t,(r=this.initializationData.fallbackConfig).arMode??(r.arMode="fast"),this}canResolve(t){return!0}get failingThought(){return this.initializationData.thoughts.failing}getRecoveryAttemptTitle(){switch(this.initializationData.type){case"action":return`Checksum Auto-Recovery: trying to achieve action "${this.failingThought}"...`;case"assertion":return`Checksum Auto-Recovery: trying to verify assertion "${this.failingThought}"...`}}static async registerSession(t){let r=t.config.apiURL,a=t.config.apiKey;return await(await fetch(`${r}${wbe.API_BASE_ROUTE}/register-auto-recovery-session`,{method:"POST",headers:{"Content-Type":"application/json",ChecksumAppCode:a},body:JSON.stringify({appName:t.testIdentification.testFileName,fallbackData:t})})).json()}async prepareSession(t){let r=await wbe.registerSession(this.initializationData);this.utils=new PVt({page:this.page,evaluateWithChecksum:this.evaluateWithChecksum,checksumPage:this.checksumPage,pageInteractor:this.pageInteractor,arConfig:r.arConfig,sessionId:r.sessionId,runtimeFallbackData:this.initializationData,fallbackData:t,variableStore:this.variables});try{this.agent=await TVt.build(this.utils)}catch{throw new Error("Failed to prepare ARFallback")}}async resolve(t){let r=new Promise((o,c)=>{setTimeout(()=>{this.utils.analytics.ARError({error:`Auto-recovery timed out after ${wbe.TIMEOUT_MS/1e3} seconds`});let f="Auto-Recovery attempt finished unsuccessfully";this.utils.createChecksumStep({title:f,withError:!0}),this.utils.addAutoRecoveryErrorToReport(f,!1),c(new Error(f))},wbe.TIMEOUT_MS)}),a=Date.now();await this.prepareSession(t),this.utils.analytics.ARStart();try{let o=await Promise.race([this.agent.init(),r]);return this.utils.analytics.ARFinish({duration:Date.now()-a}),{fbResult:o.result,thought:o.finalThought,stepsThoughts:o.stepsThoughts,steps:[]}}catch(o){throw this.utils.analytics.ARFinish({duration:Date.now()-a}),o}}};e(wbe,"ARFallback"),wbe.API_BASE_ROUTE="/auto-recovery",wbe.TIMEOUT_MS=12e4;var Sbe=wbe;var sVn=e(i=>{let t=i.info();return t.annotations.some(r=>r.type==="bug")||t.tags.some(r=>r==="@bug")},"isKnownBugTest");var v$r=1e3*30;var b_t=class b_t extends Vze{constructor(r,a="normal",o,c,f,_,v,C,w,T,k,R){var W,X,ne;super(r,T,()=>this.pageInteractor);this.page=r;this.runMode=a;this.testRunAnalytics=o;this.monitorBridge=c;this.testInfo=f;this.checksumTestId=_;this.test=v;this.options=C;this.isReplMode=w;this.config=T;this.pageInteractorAPI=k;this.hasRuntimeStartedTrace=!1;this.unzippedHarData=[];this.fallbacks=[];this.hasUsedAutoRecovery=!1;this.arSummaries=[];this.arStepIds=[];this.arResults=[];this.failedSteps=[];this.thoughtsCounter=0;this.highLevelThoughts=[];this.pages={};this.framesMsgBroker=new p$e;this.previousSteps=[];this.scriptLoadWrapper=e(async(r,a)=>(!this.isTimeMachineFrame(a)&&this.navigationPromise&&await this.navigationPromise,this.wrapInternalSteps(r,a.page())),"scriptLoadWrapper");this.scriptLoadCheck=e(async r=>r.evaluate(()=>!!window.checksum),"scriptLoadCheck");this.scriptLoadCallback=e(async r=>{await r.evaluate(async({appSpecificRules:a,esraTimeout:o,sessionRecorder:c,showFrontendLogs:f,showTMSeeker:_,filesObserver:v,nativeDialogObserver:C,assertionsObserver:w,actionsObserver:T,recordOptions:k})=>{var R;(R=window.checksum)==null||R.testGenerator.init(a,{esraTimeout:o,showFrontendLogs:f,skipElementHighlighting:!0,recordOptions:k},{assertionGenerator:!1,sessionRecorder:c,filesObserver:v,nativeDialogObserver:C,assertionsObserver:w,actionsObserver:T});try{_&&window.checksum.timeMachine.openSeekbar()}catch{}},{appSpecificRules:this.appSpecificRules,esraTimeout:v$r,sessionRecorder:!!(!this.isTimeMachineFrame(r)&&(this.timeMachine||this.isVTG)),showFrontendLogs:V0.isDevMode,showTMSeeker:this.isTimeMachineFrame(r)&&process.env.CHECKSUM_SHOW_TIME_MACHINE==="true",filesObserver:this.isVTG&&!this.isTimeMachineFrame(r),nativeDialogObserver:this.isVTG&&!this.isTimeMachineFrame(r),assertionsObserver:this.isVTG&&!this.isTimeMachineFrame(r),actionsObserver:this.isVTG&&!this.isTimeMachineFrame(r),recordOptions:this.isVTG?this.getVTGRecordOptions():void 0}),Dv(`[init] init script loaded for ${r.page().url()}`)},"scriptLoadCallback");uVn(C.printLogs),this.isVTG&&(this.options={...this.options,useChecksumAI:{actions:!1,assertions:!1,arVersion:1,visualComparison:!1},useMockData:!1,useChecksumSelectors:!1,autoHealPRs:!1},NVt(this.page)),sVn(v)&&this.config.options.useChecksumAI.skipTestsWithKnownBugs&&(console.log("Auto recovery will not run for this test as it is marked as a known bug"),this.config.options.useChecksumAI.actions=!1,this.config.options.useChecksumAI.assertions=!1,this.config.options.useChecksumAI.visualComparison=!1),this.injectedScriptManager.setScriptLoadWrapper(this.scriptLoadWrapper).setScriptLoadCallback(this.scriptLoadCallback).setScriptLoadCheck(this.scriptLoadCheck);let B=Dbe({config:this.config,throwIfAuthFailed:!0}),U=this.getPlaywrightProjectConfig();if(this.pageInteractor=new J6e(this.evaluateWithChecksum.bind(this),()=>this.page.mainFrame(),()=>this.timeMachine,{log:Dv,logError:Dv},{navigationTimeout:(W=U.use)==null?void 0:W.navigationTimeout,actionTimeout:(X=U.use)==null?void 0:X.actionTimeout,testAssetsDir:lft(Fne()),waitActionDelay:1e3},this.pageInteractorAPI,B),this.checkForActiveTracing(),this.resetFallbacks(),R&&(this.highLevelThoughts=R.highLevelThoughts??[],this.pages=R.pages??{},this.timeMachineBrowserContext=R.timeMachineBrowserContext,this.variableStore=R.variableStore),V0.testRun.timeMachine.active){let ce=this.shouldRecordRRwebEvents()?{recordRRwebEventsToFile:!0,recordRRwebEventsToFilePath:AEn(this.checksumTestId,this.testInfo.retry)}:{};this.timeMachine=new xqt(this.framesMsgBroker,this.injectedScriptManager,{...ce,headless:process.env.CHECKSUM_SHOW_TIME_MACHINE==="true"?!1:V0.testRun.timeMachine.headless,webProxy:(ne=f.project.use)==null?void 0:ne.proxy}),this.timeMachineBrowserContext&&this.timeMachine.setTimeMachineBrowserContext(this.timeMachineBrowserContext)}this.pages[this.getPageGuid(r)]=this.proxy}previousThoughtsAndTimestamps(){return this.previousSteps}static async init(r,a,o,c,f,_,v,C,w=!1){let T=!1;_||(_=zBt(5),T=!0,console.warn(`Checksum test id was not defined for test "${f.title}" and was auto-generated. Please replace - "${f.title}" with -
|
|
1824
1824
|
test(defineChecksumTest("${f.title}", "${_}"), async ({ page }) => {...`)),o.addTestInfo(_,f.testId,T),C.options.useChecksumAI!==void 0&&typeof C.options.useChecksumAI=="boolean"&&(C.options.useChecksumAI={actions:C.options.useChecksumAI,assertions:!1,visualComparison:!1});let k=new j$e(C),R=new b_t(r,C.runMode,a,o,f,_,v,{useChecksumSelectors:!0,useChecksumAI:{actions:!0,assertions:!1},newAssertionsEnabled:C.runMode!=="normal",useMockData:!1,printLogs:!1,...C.options},w,C,k,{variableStore:c});return v._checksum.expect.setPage(R),v._checksum.checksumAI.page=R,c.clearAll(),R.testRunAnalytics.testRunStart(),await R.asyncInit(),R.proxy}async asyncInit(r=!1){await this.loadAppSpecificRules(),await this.wrapInternalSteps(async()=>{await this.page.addInitScript(()=>{window.sessionStorage.setItem("checksumai:disable","true")})}),this.timeMachine&&(await this.timeMachine.prepare(this.page.mainFrame()),this.timeMachineBrowserContext=this.timeMachine.getTimeMachineBrowserContext()),this.pageInteractor.init(),r||await this.prepareForTestArtifacts();let a=bZ.resolve(__dirname,"mock-auto-heal-agent.js");await this.page.addInitScript({path:a})}async getPage(r){let a=this.page.context().pages()[r];if(!a)throw new Error(`Page with index ${r} not found`);return this.makePage(a)}async makePage(r){let a=this.getPageGuid(r);if(this.pages[a])return this.pages[a];let o=new b_t(r,this.runMode,this.testRunAnalytics,this.monitorBridge,this.testInfo,this.checksumTestId,this.test,this.options,this.isReplMode,this.config,this.pageInteractorAPI,{highLevelThoughts:this.highLevelThoughts,pages:this.pages,timeMachineBrowserContext:this.timeMachineBrowserContext,variableStore:this.variableStore});return await o.asyncInit(!0),o.proxy}getTimeMachinePage(){var r;return(r=this.timeMachine)==null?void 0:r.getPage()}getFramesMessageBroker(){return this.framesMsgBroker}isTimeMachineFrame(r){var a;return r===((a=this.timeMachine)==null?void 0:a.getFrame())}shouldRecordRRwebEvents(){return V0.testRun.timeMachine.recordRRwebEventsToFile&&this.config.options.hostReports}getPageGuid(r){return r._guid}getPlaywrightProjectConfig(){return this.testInfo.project}checkForActiveTracing(){var o;let a=(o=this.getPlaywrightProjectConfig().use)==null?void 0:o.trace;this.traceMode=typeof a=="string"?a:a==null?void 0:a.mode}registerPageEvents(){super.registerPageEvents(),this.injectedScriptManager.addTrackedFrame(this.page),this.page.on("framenavigated",async r=>{this.injectedScriptManager.onFrameNavigated(r)})}checksumSelector(r){return this.checksumStepId=r,this.options.useChecksumSelectors&&this.setSelectorFallback(r),this.proxy}checksumAI(r,a,o){let c=this.addNewThought(r,"action",!!a);return this.previousSteps.push({thought:c.thought,timestamp:Date.now()}),a&&typeof a=="function"?this.test.step(r,async f=>{var _;try{return o!=null&&o.withDialog&&this.pageInteractor.listenToDialog(),await a()}catch(v){if(c.children=[],!this.options.useChecksumAI.actions||o!=null&&o.withDialog||o!=null&&o.skipAutoRecovery)throw v;this.setAIFallback(r,"action");try{return await this.initiateFallbackSequence({type:"action",error:v,method:void 0,args:[],testInfo:this.testInfo,step:f},{fallbackTypes:[Fve,Sbe]})}catch(C){throw this.testRunAnalytics.testRunError({failedThought:r,error:(C==null?void 0:C.message)||"Unknown error"}),C}}finally{this.pageInteractor.removeListener("dialog"),this.currentThought=(_=this.currentThought)==null?void 0:_.parent}}):(this.options.useChecksumAI.actions&&!(o!=null&&o.skipAutoRecovery)&&this.setAIFallback(r,"action"),this.proxy)}resolveAssetsFolder(r){return r.map(a=>bZ.join(lft(Fne()),a))}getRuntimeOptions(){return this.options}addPwAnnotation(r){this.testInfo.annotations.push({type:r.type,description:`
|
|
1825
1825
|
${r.description}`})}async onTestComplete(r){this.testRunAnalytics.testRunEnd({success:r,autoRecoveryTriggered:this.hasUsedAutoRecovery,summaries:this.arSummaries}),this.monitorBridge.addChecksumTestMetadata({checksumTestId:this.checksumTestId,pwTestId:this.testInfo.testId,retry:this.testInfo.retry,type:"autoRecoveryMetadata",data:{autoRecoveryTriggered:this.hasUsedAutoRecovery,autoRecovered:this.hasUsedAutoRecovery&&r}}),this.monitorBridge.addChecksumTestMetadata({checksumTestId:this.checksumTestId,pwTestId:this.testInfo.testId,retry:this.testInfo.retry,type:"autoRecoverySummaries",data:this.arSummaries}),this.cleanupMockData()}async wrapInternalSteps(r,a=this.page){try{return a.mainFrame()._checksumInternal=!0,a._checksumInternal=!0,await r()}finally{a.mainFrame()._checksumInternal=!1,a._checksumInternal=!1}}async conditionallyWrapInternalSteps(r,a){return r?this.wrapInternalSteps(a):a()}async wrapNoLocationSteps(r){try{return this.testInfo._checksumNoLocation=!0,await r()}finally{this.testInfo._checksumNoLocation=!1}}findAllStepsRecursively(r,a,o=[]){for(let c of r){(c._stepId===a||c.stepId===a)&&o.push(c);let f=[c.steps,c._testInfoSteps,c._steps].filter(Boolean);for(let _ of f)this.findAllStepsRecursively(_,a,o)}return o}makeChecksumStepFunction(r){return a=>{if(!r)return;let o=a._stepId||a.stepId;this.findAllStepsRecursively(a._testInfo._steps,o).forEach(f=>{f.error={message:"ChecksumStepError",stack:"Fallback Failed",cause:void 0}})}}async createChecksumStep(r){let a,o={box:!0,noLocation:!0,obtainStep:e(c=>{a=c},"obtainStep")};return await this.step(r.title,this.makeChecksumStepFunction(r.withError),!1,o),this.arStepIds.push(a.stepId),a}async step(r,a,o=!0,{obtainStep:c=void 0,box:f=!1,noLocation:_=void 0}={}){let v=this.testInfo._checksumNoLocation;try{this.testInfo._checksumInternal=o===!0,_!==void 0&&(this.testInfo._checksumNoLocation=_),await this.test.step(r,a||(()=>{}),{obtainStep:c,box:f})}finally{this.testInfo._checksumInternal=!1,this.testInfo._checksumNoLocation=v}}addErrorMessage(r,a){this.testInfo.addError(r,a)}async evaluateWithChecksum(r,a,o=!0){return this.navigationPromise&&await this.navigationPromise,this.conditionallyWrapInternalSteps(o,()=>this.page.evaluate(r,a))}getChecksumTestId(){return this.checksumTestId}addNewThought(r,a,o=!1){let c={id:void 0,thought:r,type:a,children:o?[]:void 0,parent:void 0};if(!this.currentThought)this.highLevelThoughts.push(c);else if(this.currentThought.children)this.currentThought.children.push(c),c.parent=this.currentThought;else{let f=this.currentThought.parent;f?(f.children.push(c),c.parent=f):this.highLevelThoughts.push(c)}return c.parent?c.id=`${c.parent.id}.${c.parent.children.length}`:c.id=`${++this.thoughtsCounter}`,this.currentThought=c,c}buildThoughtsChainForFallback(r=this.highLevelThoughts){let a=[];return r.forEach(o=>{a.push(o.thought),o.children&&a.push(...this.buildThoughtsChainForFallback(o.children))}),a}getVTGRecordOptions(){return{recordCanvas:!0,recordCrossOriginIframes:this.isVTG,sampling:{mousemove:!1},slimDOMOptions:"all"}}compoundSelection(...r){let a=super.compoundSelection(...r);return a.setAnalytics(()=>this.testRunAnalytics),this.checksumStepId&&this.options.useChecksumSelectors&&this.setCompoundSelectorFallback(this.checksumStepId),a}setSelectorFallback(r){let a={checksumId:r,fileName:this.testInfo.file,testId:this.checksumTestId,apiKey:this.config.apiKey,apiURL:this.config.apiURL,timeout:v$r};this.pushFallback(this.constructFallback(Ndt).init(a)),this.pushFallback(this.constructFallback(Pdt).init(a))}setCompoundSelectorFallback(r){this.pushFallback(this.constructFallback(Fdt).init({checksumId:r,fileName:this.testInfo.file,testId:this.checksumTestId,apiKey:this.config.apiKey,apiURL:this.config.apiURL,timeout:v$r}))}setAIFallback(r,a){var _;let o=((_=this.options.useChecksumAI)==null?void 0:_.arVersion)===1,c=e(()=>{var R,B;let v=this.buildThoughtsChainForFallback(),C={title:this.testInfo.title},w={testFileName:this.testInfo.file,testId:this.testInfo.testId,testSuiteId:process.env.CHECKSUM_TEST_SUITE_ID||""},T={previous:v.slice(0,-1),failing:r,next:v.slice(1)},k={storyInfo:C,testIdentification:w,fallbackConfig:{arMode:(R=this.options.useChecksumAI)==null?void 0:R.arMode,overrideOptions:(B=this.options.useChecksumAI)==null?void 0:B.overrideOptions},thoughts:T,config:{apiURL:this.config.apiURL,apiKey:this.config.apiKey},type:a};return this.constructFallback(Sbe).init(k)},"createArFallback"),f=e(()=>{var v,C;return this.constructFallback(Fve).init({goal:this.testInfo.title,testFile:this.testInfo.file,apiKey:this.config.apiKey,apiURL:this.config.apiURL,testId:this.checksumTestId,thoughts:this.buildThoughtsChainForFallback(),benchmark:V0.benchmark,arMode:(v=this.options.useChecksumAI)==null?void 0:v.arMode,overrideOptions:(C=this.options.useChecksumAI)==null?void 0:C.overrideOptions,fallbackType:a})},"createAIFallback");return o?this.pushFallback(f()):this.pushFallback(c()),this.proxy}pushFallback(r){this.fallbacks.push(r),this.sortFallbacks()}handleAIFallback(r,a,o,c){let f=r.fallbackAnalyticsPayload.iterationSteps,_=f.length>0?c/f.length:0;this.testRunAnalytics.testRunFallbackExecution({result:o.fbResult,failedThought:r.getFailedThought(),summary:o.summary,stepsPayload:r.fallbackAnalyticsPayload,type:r.fallbackType??a.type,benchmark:V0.benchmark.toString(),duration:c,avgDuration:_,success:["finish","soft_assertion"].includes(o.fbResult)}),this.arResults.push({failedThought:r.getFailedThought(),result:o.fbResult,thought:o.thought})}handleAutoRecovery(r,a,o,c){let f=o.stepsThoughts.length>0?c/o.stepsThoughts.length:0;this.testRunAnalytics.testRunAutoRecovery({failingThought:r.failingThought,type:a.type,finalThought:o.thought,result:o.fbResult,duration:c,avgStepDuration:f,stepsThoughts:o.stepsThoughts,version:"v1"})}async runFallback(r,a){let o=Date.now(),c=r.resolve(a),f=await lD(c,r.timeout),_=Date.now()-o;r instanceof Fve&&(this.hasUsedAutoRecovery=!0,this.handleAIFallback(r,a,f,_)),r instanceof Sbe&&(this.hasUsedAutoRecovery=!0,this.handleAutoRecovery(r,a,f,_));let v=f.thought?`: ${f.thought}`:"";if(!f||f.fbResult==="failed")throw this.createChecksumStep({title:`Recovery Failed${v}`,withError:!0}),new Error("Fallback failed");if(f.fbResult==="hard_assertion")throw this.createChecksumStep({title:`Recovery Failed${v}`,withError:!0}),new Hft(f.fbResult);if(r instanceof Fve&&f.summary&&this.arSummaries.push(f.summary),r instanceof Sbe&&f.thought&&this.arSummaries.push(f.thought),this.createChecksumStep({title:`Recovery Complete${v}`}),f.steps.length===1){let C=f.steps[0];C.thought&&(this.currentThought.thought=C.thought)}else this.currentThought.children=f.steps.map((C,w)=>({id:`${this.currentThought.id}.${w+1}`,thought:C.thought,type:C.type,children:void 0,parent:this.currentThought}))}async runConditionallyWithinStep(r,a,o){return r?await this.step(a,o):await o()}async onExecutionError(r){try{return await this.initiateFallbackSequence({type:"action",...r})}catch(a){if(!this.currentThought){let{locator:o,method:c}=r;this.testRunAnalytics.testRunActionExecutionFailure({locator:o.toString(),selector:o._selector,method:c,checksumStepId:this.checksumStepId,error:a.toString()})}throw a}}async initiateFallbackSequence(r,{fallbackTypes:a=void 0}={}){Dv(`[initiateFallbackSequence] with type: ${r.type}...`);let o=this.fallbacks.find(_=>_ instanceof Fve);if(o){let _=o.getFailedThought(),v=this.variableStore.getActiveVariables();this.fallbacks.forEach(C=>{C.setThought(_),C.setVariables(v)})}let c=this.fallbacks.find(_=>_ instanceof Sbe);if(c){let _=c.failingThought;this.fallbacks.forEach(v=>{v instanceof Sbe&&v.setVariables(this.variableStore.getActiveVariables()),v.setThought(_)})}let f=this.fallbacks;a&&(f=f.filter(_=>a.reduce((v,C)=>v||_ instanceof C,!1))),f=f.filter(_=>_.canResolve(r));try{for(let _ of f){let v=_==null?void 0:_.toString();v&&console.log(`Using ${v}`);let C;try{let w=await this.runConditionallyWithinStep(r.type!=="assertion"||!r.withChecksumAI,_.getRecoveryAttemptTitle(r),async()=>await this.runFallback(_,r));C=!0}catch(w){if(C=!1,r.withChecksumAI&&w.message==="fetch failed")throw new Error(x4e);w instanceof Hft&&w.fallbackResult==="hard_assertion"&&(r.error.fallbackResult="hard_assertion"),v&&console.log(`Failed to use ${v}`),_.cancel();continue}return!0}throw r.error}finally{this.resetFallbacks()}}resetFallbacks(){this.fallbacks=[this.constructFallback(Odt).init()]}async shutdown(){if(this.shouldRecordRRwebEvents()){try{await this.timeMachine.flushRRwebEventsToFile();let r=this.timeMachine.getRRwebFilePath();this.monitorBridge.addAsset({type:"rrweb-recording",path:r,testId:this.checksumTestId,fileName:bZ.basename(r)})}catch(r){Dv("Error shutting down RRweb events recording",r)}if(this.testRunAnalytics)return Dv("Flushing analytics events......"),this.testRunAnalytics.close()}}sortFallbacks(){let r=[Odt,Fdt,Ndt,Pdt,Fve];this.fallbacks.sort((a,o)=>r.indexOf(a.constructor)-r.indexOf(o.constructor))}constructFallback(r){return new r(this.page,this.evaluateWithChecksum.bind(this),this,this.pageInteractor,{generateSelectionData:this.runMode!=="normal"})}async prepareForTestArtifacts(){if((this.options.useMockData||this.runMode==="refactor")&&await this.prepareAPIMock(),this.traceMode&&this.traceMode!=="off"){let a=await this.getTraceFilePath();a&&this.monitorBridge.addAsset({type:"trace",path:a,testId:this.checksumTestId,project:this.testInfo.project.name})}if(!1){let a=xEn(WBt(this.testInfo.file),this.checksumTestId);this.monitorBridge.addAsset({type:"har",path:a,testId:this.checksumTestId})}}async getTraceFilePath(){try{return this.hasRuntimeStartedTrace?EEn(WBt(this.testInfo.file),this.checksumTestId).replace(".zip",".original.zip"):this.testInfo.outputPath("trace.zip")}catch{return}}async prepareMockData(){let r=Y3r(WBt(this.testInfo.file)),a=bZ.join(r,`${this.checksumTestId}.har.zip`);if(!(0,Cz.existsSync)(a))throw new Error("Could not find har file or zip file");let o=bZ.join(r,"tmp");(0,Cz.existsSync)(o)||(0,Cz.mkdirSync)(o);let c=(0,Cz.readFileSync)(a),f=await(0,oVn.loadAsync)(c);for(let v of Object.keys(f.files)){let C=await f.file(v).async("string"),w=bZ.join(o,v);(0,Cz.writeFileSync)(w,C),this.unzippedHarData.push(w)}let _=bZ.join(o,"test.har");if(!(0,Cz.existsSync)(_))throw this.cleanupMockData(),new Error(`Could not find har file ${_} after unzipping ${a}`);return _}cleanupMockData(){this.unzippedHarData.forEach(r=>{(0,Cz.rmSync)(r)}),this.unzippedHarData.length>0&&(0,Cz.rmSync)(bZ.dirname(this.unzippedHarData[0]),{recursive:!0,force:!0})}async prepareAPIMock(){let r={GET:0,POST:0,PUT:0,DELETE:0};try{let a=await this.prepareMockData();await this.page.routeFromHAR(a,{url:"*/**",notFound:"fallback",update:!1});let o=this.page._routes[0].handler;await this.page.route("**/*",c=>{let f=c.request().headers(),_=c.request().method();f["Checksum-Id"]=(++r[_]).toString(),c.request()._applyFallbackOverrides({headers:f}),o(c)})}catch(a){Dv("Error setting up mock data",a.message)}}async loadAppSpecificRules(){this.appSpecificRules={};let r=bZ.join(a9e(Fne()),"settings.asr");if(!(0,Cz.existsSync)(r)){Dv("Could not find ASR file");return}let{ungzip:a}=K3r();try{let o=await a((0,Cz.readFileSync)(r));this.appSpecificRules=JSON.parse(o)||{}}catch(o){Dv("Could not read ASR file",o.message)}}addAutoRecoveryStepId(r){this.arStepIds.push(r)}};e(b_t,"RuntimePage");var FVt=b_t;var RVt=require("fs");var d7e={defaultMerge:Symbol("deepmerge-ts: default merge"),skip:Symbol("deepmerge-ts: skip")},Rks={defaultMerge:d7e.defaultMerge};function Zxa(i,t){return t}e(Zxa,"defaultMetaDataUpdater");function eAa(i,t){return i.filter(r=>r!==void 0)}e(eAa,"defaultFilterValues");var cVn;(function(i){i[i.NOT=0]="NOT",i[i.RECORD=1]="RECORD",i[i.ARRAY=2]="ARRAY",i[i.SET=3]="SET",i[i.MAP=4]="MAP",i[i.OTHER=5]="OTHER"})(cVn||(cVn={}));function lVn(i){return typeof i!="object"||i===null?0:Array.isArray(i)?2:nAa(i)?1:i instanceof Set?3:i instanceof Map?4:5}e(lVn,"getObjectType");function tAa(i){let t=new Set;for(let r of i)for(let a of[...Object.keys(r),...Object.getOwnPropertySymbols(r)])t.add(a);return t}e(tAa,"getKeys");function rAa(i,t){return typeof i=="object"&&Object.prototype.propertyIsEnumerable.call(i,t)}e(rAa,"objectHasProperty");function fVn(i){var a;let t=0,r=(a=i[0])==null?void 0:a[Symbol.iterator]();return{[Symbol.iterator](){return{next(){var o;do{if(r===void 0)return{done:!0,value:void 0};let c=r.next();if(c.done===!0){t+=1,r=(o=i[t])==null?void 0:o[Symbol.iterator]();continue}return{done:!1,value:c.value}}while(!0)}}}}}e(fVn,"getIterableOfIterables");var pVn=["[object Object]","[object Module]"];function nAa(i){if(!pVn.includes(Object.prototype.toString.call(i)))return!1;let{constructor:t}=i;if(t===void 0)return!0;let r=t.prototype;return!(r===null||typeof r!="object"||!pVn.includes(Object.prototype.toString.call(r))||!r.hasOwnProperty("isPrototypeOf"))}e(nAa,"isRecord");function iAa(i,t,r){let a={};for(let o of tAa(i)){let c=[];for(let v of i)rAa(v,o)&&c.push(v[o]);if(c.length===0)continue;let f=t.metaDataUpdater(r,{key:o,parents:i}),_=dVn(c,t,f);_!==d7e.skip&&(o==="__proto__"?Object.defineProperty(a,o,{value:_,configurable:!0,enumerable:!0,writable:!0}):a[o]=_)}return a}e(iAa,"mergeRecords$1");function aAa(i){return i.flat()}e(aAa,"mergeArrays$1");function sAa(i){return new Set(fVn(i))}e(sAa,"mergeSets$1");function oAa(i){return new Map(fVn(i))}e(oAa,"mergeMaps$1");function uAa(i){return i.at(-1)}e(uAa,"mergeOthers$1");var OVt={mergeRecords:iAa,mergeArrays:aAa,mergeSets:sAa,mergeMaps:oAa,mergeOthers:uAa};function BVt(...i){return cAa({})(...i)}e(BVt,"deepmerge");function cAa(i,t){let r=lAa(i,a);function a(...o){return dVn(o,r,t)}return e(a,"customizedDeepmerge"),a}e(cAa,"deepmergeCustom");function lAa(i,t){return{defaultMergeFunctions:OVt,mergeFunctions:{...OVt,...Object.fromEntries(Object.entries(i).filter(([r,a])=>Object.hasOwn(OVt,r)).map(([r,a])=>a===!1?[r,OVt.mergeOthers]:[r,a]))},metaDataUpdater:i.metaDataUpdater??Zxa,deepmerge:t,useImplicitDefaultMerging:i.enableImplicitDefaultMerging??!1,filterValues:i.filterValues===!1?void 0:i.filterValues??eAa,actions:d7e}}e(lAa,"getUtils");function dVn(i,t,r){var c;let a=((c=t.filterValues)==null?void 0:c.call(t,i,r))??i;if(a.length===0)return;if(a.length===1)return b$r(a,t,r);let o=lVn(a[0]);if(o!==0&&o!==5){for(let f=1;f<a.length;f++)if(lVn(a[f])!==o)return b$r(a,t,r)}switch(o){case 1:return pAa(a,t,r);case 2:return fAa(a,t,r);case 3:return dAa(a,t,r);case 4:return mAa(a,t,r);default:return b$r(a,t,r)}}e(dVn,"mergeUnknowns");function pAa(i,t,r){let a=t.mergeFunctions.mergeRecords(i,t,r);return a===d7e.defaultMerge||t.useImplicitDefaultMerging&&a===void 0&&t.mergeFunctions.mergeRecords!==t.defaultMergeFunctions.mergeRecords?t.defaultMergeFunctions.mergeRecords(i,t,r):a}e(pAa,"mergeRecords");function fAa(i,t,r){let a=t.mergeFunctions.mergeArrays(i,t,r);return a===d7e.defaultMerge||t.useImplicitDefaultMerging&&a===void 0&&t.mergeFunctions.mergeArrays!==t.defaultMergeFunctions.mergeArrays?t.defaultMergeFunctions.mergeArrays(i):a}e(fAa,"mergeArrays");function dAa(i,t,r){let a=t.mergeFunctions.mergeSets(i,t,r);return a===d7e.defaultMerge||t.useImplicitDefaultMerging&&a===void 0&&t.mergeFunctions.mergeSets!==t.defaultMergeFunctions.mergeSets?t.defaultMergeFunctions.mergeSets(i):a}e(dAa,"mergeSets");function mAa(i,t,r){let a=t.mergeFunctions.mergeMaps(i,t,r);return a===d7e.defaultMerge||t.useImplicitDefaultMerging&&a===void 0&&t.mergeFunctions.mergeMaps!==t.defaultMergeFunctions.mergeMaps?t.defaultMergeFunctions.mergeMaps(i):a}e(mAa,"mergeMaps");function b$r(i,t,r){let a=t.mergeFunctions.mergeOthers(i,t,r);return a===d7e.defaultMerge||t.useImplicitDefaultMerging&&a===void 0&&t.mergeFunctions.mergeOthers!==t.defaultMergeFunctions.mergeOthers?t.defaultMergeFunctions.mergeOthers(i):a}e(b$r,"mergeOthers");var mVn=!1;function uVn(i){mVn=i}e(uVn,"setLogToConsole");function Dv(...i){mVn&&console.log(...i)}e(Dv,"log");async function akn(i,t,r,a=6e4){if(!(t in i))return i;let o=e(()=>i[t](...r),"executor");return a===null?o():lD(o(),a,"Execution timeout")}e(akn,"executePlaywrightMethodWithTimeout");function x_t(i,{role:t,environment:r}={},a=!1){var _,v;let o;if(r&&(o=(_=i.environments)==null?void 0:_.find(({name:C})=>r===C)),o||(o=(v=i.environments)==null?void 0:v.find(({default:C})=>C)),!o)throw new Error("Environment not found. Please make sure your environments are properly defined in the checksum.config.ts file.");let c=o.users,f;if(c&&(t!==void 0&&(f=c.find(C=>C.role===t)),f||(f=c.find(C=>C.default))),!f)throw new Error(`User not found. Please make sure the users array for the "${o.name}" environment is properly defined in the checksum.config.ts file.`);if(r&&o.name!==r){if(a)throw new Error(`Could not find environment with name "${r}" in config file`);console.warn(`Could not find environment with name "${r}" in config file, trying to use default environment`)}if(t&&f.role!==t){if(a)throw new Error(`Could not find user with role "${t}" for environment "${r}" in config file`);console.warn(`Could not find user with role "${t}" for environment "${r}" in config file, trying to login with environment's default user`)}return{environment:o,user:f}}e(x_t,"resolveEnvironment");function _Aa(i){let t=`${i??Fne()}/login.ts`;if(!(0,RVt.existsSync)(t))throw console.warn(`Could not locate the login.ts file. Please make sure your login file exists at ${t}`),new Error("Could not find login.ts file");try{return require(t).default}catch(r){throw console.warn("Error loading login.ts file",r),r}}e(_Aa,"requireLogin");async function hAa(i,t,{environment:r,user:a,config:o}){try{let c=e(()=>t(i,{environment:r,user:a,config:o}),"performLogin");"checksumAI"in i?await i.checksumAI(`Log in${a!=null&&a.role?` using ${a.role} role`:""}${r!=null&&r.name?` in ${r.name} environment`:""}`,c):await c()}catch(c){throw console.warn(`The login method threw an exception, please check the login.ts file for the following error:
|
|
1826
|
-
`,c),c}}e(hAa,"proceedWithLogin");function Dbe(i){let{config:t,folder:r,throwIfAuthFailed:a}=i,o=_Aa(r);return async(c,{role:f,environment:_}={})=>{let{environment:v,user:C}=x_t(t,{role:f,environment:_},i.throwIfEnvInfoInvalid);if(a&&!C)throw new Error("Could not find user credentials matching the provided role and/or environment");await hAa(c,o,{environment:v,user:C,config:t})}}e(Dbe,"makeUnboundLogin");function _Vn(i,{environmentName:t,userRole:r}){let a=Dbe(i);return o=>a(o,{environment:t,role:r})}e(_Vn,"makeBoundLogin");var GJe;function Tqt(){if(GJe)return GJe;try{let i=(0,RVt.existsSync)(`${Fne()}/checksum.config.ts`)?"checksum.config.ts":(0,RVt.existsSync)(`${Fne()}/checksum.config.tmp.ts`)?"checksum.config.tmp.ts":void 0;if(i)return LVt(require(`${Fne()}/${i}`).default)}catch{console.warn("Could not find checksum config file, will run with defaults")}return LVt()}e(Tqt,"loadChecksumConfig");function LVt(i={}){var r,a,o,c;let t={apiKey:void 0,runMode:"normal",apiURL:"https://api.checksum.ai",options:{useChecksumSelectors:!0,useChecksumAI:{actions:!0,assertions:!1},newAssertionsEnabled:!0,useMockData:!1,printLogs:!1,hideReports:process.env.AUTHORIZE_REPORTS==="true"}};return((a=(r=i.options)==null?void 0:r.useChecksumAI)==null?void 0:a.visualComparison)===void 0&&((c=(o=i.options)==null?void 0:o.useChecksumAI)!=null&&c.assertions)&&(i.options.useChecksumAI.visualComparison=!0),GJe=BVt(t,i),V0.testRun.disableAutoRecovery&&(GJe.options.useChecksumAI={actions:!1,assertions:!1,visualComparison:!1}),V0.testRun.disableHostReports&&(GJe.options.hostReports=!1),GJe}e(LVt,"getChecksumConfig");function NVt(i){let t=e(r=>{r.on("dialog",a=>{})},"makeDialogHandler");i.context().pages().forEach(t),i.context().on("page",r=>{t(r)})}e(NVt,"preventDialogAutoDismissal");var x4e="Checksum failed connecting to the server";var Qce=class Qce{constructor(t){this.workerInfo=t;this.hasMonitor=!1;Qce.monitorAgentPort?this.hasMonitor=!0:Dv("CHECKSUM_UPLOAD_AGENT_PORT is not defined"),this.sendPlaywrightConfig()}addAsset(t){this.signalUpload(t,["trace","har","rrweb-recording"].includes(t.type))}addChecksumTestMetadata(t){let r={type:"checksumTestMetadata",payload:t};this.sendMessage(r)}addTestInfo(t,r,a=!1){this.sendMessage({type:"testInfo",payload:{checksumTestId:t,pwTestId:r,usingChecksumTestIdPlaceholder:a}})}addSingleTestStats(t,r){this.sendMessage({type:"testStats",payload:{passed:t,healed:r}})}sendPlaywrightConfig(){Qce.playwrightConfigSent||(this.sendMessage({type:"playwrightConfig",payload:this.buildPlaywrightConfig()}),Qce.playwrightConfigSent=!0)}buildPlaywrightConfig(){let{use:t,testDir:r,testMatch:a,testIgnore:o,timeout:c,outputDir:f,retries:_}=this.workerInfo.project,{reporter:v,configFile:C,projects:w}=this.workerInfo.config,T=Object.keys(w).filter(k=>[t,r,a,o,c,f,_].includes(k)).reduce((k,R)=>({...k,[R]:w[R]}),{});return{reporter:v,configFile:C,filteredProjects:T,use:t,testDir:r,testMatch:a,testIgnore:o,timeout:c,outputDir:f,retries:_}}sendMessage(t){if(this.hasMonitor)return fetch(`${Qce.monitorAgentHost}:${Qce.monitorAgentPort}`,{method:"POST",body:JSON.stringify(t)}).catch(r=>{Dv("Failed to send message to test run monitor",t,r)})}signalUpload(t,r=!1){return this.sendMessage({type:"asset",payload:t,watch:r})}};e(Qce,"TestRunMonitorBridge"),Qce.monitorAgentHost="http://localhost",Qce.monitorAgentPort=process.env.CHECKSUM_UPLOAD_AGENT_PORT,Qce.playwrightConfigSent=!1;var MVt=Qce;var gAa=e(()=>{let t=new Error().stack.split(`
|
|
1826
|
+
`,c),c}}e(hAa,"proceedWithLogin");function Dbe(i){let{config:t,folder:r,throwIfAuthFailed:a}=i,o=_Aa(r);return async(c,{role:f,environment:_}={})=>{let{environment:v,user:C}=x_t(t,{role:f,environment:_},i.throwIfEnvInfoInvalid);if(a&&!C)throw new Error("Could not find user credentials matching the provided role and/or environment");await hAa(c,o,{environment:v,user:C,config:t})}}e(Dbe,"makeUnboundLogin");function _Vn(i,{environmentName:t,userRole:r}){let a=Dbe(i);return o=>a(o,{environment:t,role:r})}e(_Vn,"makeBoundLogin");var GJe;function Tqt(){if(GJe)return GJe;try{let i=(0,RVt.existsSync)(`${Fne()}/checksum.config.ts`)?"checksum.config.ts":(0,RVt.existsSync)(`${Fne()}/checksum.config.tmp.ts`)?"checksum.config.tmp.ts":void 0;if(i)return LVt(require(`${Fne()}/${i}`).default)}catch{console.warn("Could not find checksum config file, will run with defaults")}return LVt()}e(Tqt,"loadChecksumConfig");function LVt(i={}){var r,a,o,c;let t={apiKey:void 0,runMode:"normal",apiURL:"https://api.checksum.ai",options:{useChecksumSelectors:!0,useChecksumAI:{actions:!0,assertions:!1,skipTestsWithKnownBugs:!0},newAssertionsEnabled:!0,useMockData:!1,printLogs:!1,hideReports:process.env.AUTHORIZE_REPORTS==="true"}};return((a=(r=i.options)==null?void 0:r.useChecksumAI)==null?void 0:a.visualComparison)===void 0&&((c=(o=i.options)==null?void 0:o.useChecksumAI)!=null&&c.assertions)&&(i.options.useChecksumAI.visualComparison=!0),GJe=BVt(t,i),V0.testRun.disableAutoRecovery&&(GJe.options.useChecksumAI={actions:!1,assertions:!1,visualComparison:!1}),V0.testRun.disableHostReports&&(GJe.options.hostReports=!1),GJe}e(LVt,"getChecksumConfig");function NVt(i){let t=e(r=>{r.on("dialog",a=>{})},"makeDialogHandler");i.context().pages().forEach(t),i.context().on("page",r=>{t(r)})}e(NVt,"preventDialogAutoDismissal");var x4e="Checksum failed connecting to the server";var Qce=class Qce{constructor(t){this.workerInfo=t;this.hasMonitor=!1;Qce.monitorAgentPort?this.hasMonitor=!0:Dv("CHECKSUM_UPLOAD_AGENT_PORT is not defined"),this.sendPlaywrightConfig()}addAsset(t){this.signalUpload(t,["trace","har","rrweb-recording"].includes(t.type))}addChecksumTestMetadata(t){let r={type:"checksumTestMetadata",payload:t};this.sendMessage(r)}addTestInfo(t,r,a=!1){this.sendMessage({type:"testInfo",payload:{checksumTestId:t,pwTestId:r,usingChecksumTestIdPlaceholder:a}})}addSingleTestStats(t,r){this.sendMessage({type:"testStats",payload:{passed:t,healed:r}})}sendPlaywrightConfig(){Qce.playwrightConfigSent||(this.sendMessage({type:"playwrightConfig",payload:this.buildPlaywrightConfig()}),Qce.playwrightConfigSent=!0)}buildPlaywrightConfig(){let{use:t,testDir:r,testMatch:a,testIgnore:o,timeout:c,outputDir:f,retries:_}=this.workerInfo.project,{reporter:v,configFile:C,projects:w}=this.workerInfo.config,T=Object.keys(w).filter(k=>[t,r,a,o,c,f,_].includes(k)).reduce((k,R)=>({...k,[R]:w[R]}),{});return{reporter:v,configFile:C,filteredProjects:T,use:t,testDir:r,testMatch:a,testIgnore:o,timeout:c,outputDir:f,retries:_}}sendMessage(t){if(this.hasMonitor)return fetch(`${Qce.monitorAgentHost}:${Qce.monitorAgentPort}`,{method:"POST",body:JSON.stringify(t)}).catch(r=>{Dv("Failed to send message to test run monitor",t,r)})}signalUpload(t,r=!1){return this.sendMessage({type:"asset",payload:t,watch:r})}};e(Qce,"TestRunMonitorBridge"),Qce.monitorAgentHost="http://localhost",Qce.monitorAgentPort=process.env.CHECKSUM_UPLOAD_AGENT_PORT,Qce.playwrightConfigSent=!1;var MVt=Qce;var gAa=e(()=>{let t=new Error().stack.split(`
|
|
1827
1827
|
`).find(r=>r.includes(".checksum.spec.ts"));if(t)return{lineNumber:parseInt(t.split(":")[1]),columnNumber:parseInt(t.split(":")[2])}},"findCodeLocationFromStackTrace"),x$r=class x$r{constructor(){this.store={};this.activeVariablesSet=new Set;return new Proxy(this,this)}clearAll(){for(let t in this.store)Object.prototype.hasOwnProperty.call(this.store,t)&&delete this.store[t];this.activeVariablesSet.clear()}getActiveVariables(){return Array.from(this.activeVariablesSet).map(t=>this.store[t])}setVariable(t,r){this.store[t]={name:t,value:r,type:r instanceof Function?"RandomValueGenerator":"FillValue"}}set(t,r,a){if(typeof r!="string")return!1;let o=gAa();return t.store[r]={name:r,value:a,type:a instanceof Function?"RandomValueGenerator":"FillValue",...o,line:""},!0}get(t,r){var a;if(r in t)return t[r];if(!(r in t.store))throw new Error(`Variable ${r} is not defined`);return t.activeVariablesSet.add(r),(a=t.store[r])==null?void 0:a.value}};e(x$r,"VariableStore");var KJe=x$r;var a_n=require("crypto");var m7e=e(i=>i.name==="up"||i.name==="k"||i.ctrl&&i.name==="p","isUpKey"),YJe=e(i=>i.name==="down"||i.name==="j"||i.ctrl&&i.name==="n","isDownKey"),hVn=e(i=>i.name==="space","isSpaceKey"),XJe=e(i=>i.name==="backspace","isBackspaceKey"),jVt=e(i=>"123456789".includes(i.name),"isNumberKey"),HP=e(i=>i.name==="enter"||i.name==="return","isEnterKey");var A$r=class A$r extends Error{name="AbortPromptError";message="Prompt was aborted";constructor(t){super(),this.cause=t==null?void 0:t.cause}};e(A$r,"AbortPromptError");var UVt=A$r,E$r=class E$r extends Error{name="CancelPromptError";message="Prompt was canceled"};e(E$r,"CancelPromptError");var qVt=E$r,C$r=class C$r extends Error{name="ExitPromptError"};e(C$r,"ExitPromptError");var QVt=C$r,w$r=class w$r extends Error{name="HookError"};e(w$r,"HookError");var $Vt=w$r,S$r=class S$r extends Error{name="ValidationError"};e(S$r,"ValidationError");var _7e=S$r;var I$r=require("async_hooks");var VVt=require("async_hooks");var gVn=new VVt.AsyncLocalStorage;function yAa(i){return{rl:i,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}e(yAa,"createStore");function yVn(i,t){let r=yAa(i);return gVn.run(r,()=>{function a(o){r.handleChange=()=>{r.index=0,o()},r.handleChange()}return e(a,"cycle"),t(a)})}e(yVn,"withHooks");function pFe(){let i=gVn.getStore();if(!i)throw new $Vt("[Inquirer] Hook functions can only be called from within a prompt");return i}e(pFe,"getStore");function D$r(){return pFe().rl}e(D$r,"readline");function T$r(i){let t=e((...r)=>{let a=pFe(),o=!1,c=a.handleChange;a.handleChange=()=>{o=!0};let f=i(...r);return o&&c(),a.handleChange=c,f},"wrapped");return VVt.AsyncResource.bind(t)}e(T$r,"withUpdates");function ZJe(i){let t=pFe(),{index:r}=t,a={get(){return t.hooks[r]},set(c){t.hooks[r]=c},initialized:r in t.hooks},o=i(a);return t.index++,o}e(ZJe,"withPointer");function vVn(){pFe().handleChange()}e(vVn,"handleChange");var fFe={queue(i){let t=pFe(),{index:r}=t;t.hooksEffect.push(()=>{var o,c;(c=(o=t.hooksCleanup)[r])==null||c.call(o);let a=i(D$r());if(a!=null&&typeof a!="function")throw new _7e("useEffect return value must be a cleanup function or nothing.");t.hooksCleanup[r]=a})},run(){let i=pFe();T$r(()=>{i.hooksEffect.forEach(t=>{t()}),i.hooksEffect.length=0})()},clearAll(){let i=pFe();i.hooksCleanup.forEach(t=>{t==null||t()}),i.hooksEffect.length=0,i.hooksCleanup.length=0}};function sv(i){return ZJe(t=>{let r=e(o=>{t.get()!==o&&(t.set(o),vVn())},"setFn");if(t.initialized)return[t.get(),r];let a=typeof i=="function"?i():i;return t.set(a),[a,r]})}e(sv,"useState");function $ce(i,t){ZJe(r=>{let a=r.get();(!Array.isArray(a)||t.some((c,f)=>!Object.is(c,a[f])))&&fFe.queue(i),r.set(t)})}e($ce,"useEffect");var Tie=rf(h7e(),1);var Vce=rf(require("process"),1);function bAa(){return Vce.default.platform!=="win32"?Vce.default.env.TERM!=="linux":!!Vce.default.env.WT_SESSION||!!Vce.default.env.TERMINUS_SUBLIME||Vce.default.env.ConEmuTask==="{cmd::Cmder}"||Vce.default.env.TERM_PROGRAM==="Terminus-Sublime"||Vce.default.env.TERM_PROGRAM==="vscode"||Vce.default.env.TERM==="xterm-256color"||Vce.default.env.TERM==="alacritty"||Vce.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}e(bAa,"isUnicodeSupported");var EVn={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},CVn={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},xAa={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},AAa={...EVn,...CVn},EAa={...EVn,...xAa},CAa=bAa(),wAa=CAa?AAa:EAa,Die=wAa,y5s=Object.entries(CVn);var wVn={prefix:{idle:Tie.default.blue("?"),done:Tie.default.green(Die.tick)},spinner:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"].map(i=>Tie.default.yellow(i))},style:{answer:Tie.default.cyan,message:Tie.default.bold,error:e(i=>Tie.default.red(`> ${i}`),"error"),defaultAnswer:e(i=>Tie.default.dim(`(${i})`),"defaultAnswer"),help:Tie.default.dim,highlight:Tie.default.cyan,key:e(i=>Tie.default.cyan(Tie.default.bold(`<${i}>`)),"key")}};function SVn(i){if(typeof i!="object"||i===null)return!1;let t=i;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(i)===t}e(SVn,"isPlainObject");function DVn(...i){let t={};for(let r of i)for(let[a,o]of Object.entries(r)){let c=t[a];t[a]=SVn(c)&&SVn(o)?DVn(c,o):o}return t}e(DVn,"deepMerge");function P8(...i){let t=[wVn,...i.filter(r=>r!=null)];return DVn(...t)}e(P8,"makeTheme");function OI({status:i="idle",theme:t}){let[r,a]=sv(!1),[o,c]=sv(0),{prefix:f,spinner:_}=P8(t);return $ce(()=>{if(i==="loading"){let C,w=-1,T=setTimeout(I$r.AsyncResource.bind(()=>{a(!0),C=setInterval(I$r.AsyncResource.bind(()=>{w=w+1,c(w%_.frames.length)}),_.interval)}),300);return()=>{clearTimeout(T),clearInterval(C)}}else a(!1)},[i]),r?_.frames[o]:typeof f=="string"?f:f[i==="loading"?"idle":i]??f.idle}e(OI,"usePrefix");function xZ(i,t){return ZJe(r=>{let a=r.get();if(!a||a.dependencies.length!==t.length||a.dependencies.some((o,c)=>o!==t[c])){let o=i();return r.set({value:o,dependencies:t}),o}return a.value})}e(xZ,"useMemo");function kie(i){return sv({current:i})[0]}e(kie,"useRef");function BI(i){let t=kie(i);t.current=i,$ce(r=>{let a=!1,o=T$r((c,f)=>{a||t.current(f,r)});return r.input.on("keypress",o),()=>{a=!0,r.input.removeListener("keypress",o)}},[])}e(BI,"useKeypress");var rzn=rf(kVn(),1),nzn=rf(tzn(),1);function C_t(i,t){return i.split(`
|
|
1828
1828
|
`).flatMap(r=>(0,nzn.default)(r,t,{trim:!1,hard:!0}).split(`
|
|
1829
1829
|
`).map(a=>a.trimEnd())).join(`
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
3
|
"main.css": "/static/css/main.feaf2948.css",
|
|
4
|
-
"main.js": "/static/js/main.
|
|
4
|
+
"main.js": "/static/js/main.ea43b3f2.js",
|
|
5
5
|
"index.html": "/index.html",
|
|
6
6
|
"main.feaf2948.css.map": "/static/css/main.feaf2948.css.map",
|
|
7
|
-
"main.
|
|
7
|
+
"main.ea43b3f2.js.map": "/static/js/main.ea43b3f2.js.map"
|
|
8
8
|
},
|
|
9
9
|
"entrypoints": [
|
|
10
10
|
"static/css/main.feaf2948.css",
|
|
11
|
-
"static/js/main.
|
|
11
|
+
"static/js/main.ea43b3f2.js"
|
|
12
12
|
]
|
|
13
13
|
}
|
package/vtg-build/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><title>Checksum.ai VTG</title><script defer="defer" src="/static/js/main.
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><title>Checksum.ai VTG</title><script defer="defer" src="/static/js/main.ea43b3f2.js"></script><link href="/static/css/main.feaf2948.css" rel="stylesheet"></head><body><div id="root"></div></body></html>
|