@checksum-ai/runtime 1.3.2 → 1.3.3

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 CHANGED
@@ -1 +1 @@
1
- CHECKSUM_RUNTIME_BUILD_TIME=2025-08-26T12:36:16.284Z
1
+ CHECKSUM_RUNTIME_BUILD_TIME=2025-08-26T15:18:04.783Z
package/cli.js CHANGED
@@ -1592,7 +1592,7 @@ ${b}
1592
1592
  ${this.executedSteps.map(d=>{switch(d.type){case"action":return d.thought;case"assertion":return d.feedback}}).join(`,
1593
1593
  `)}`))}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:lpe.currentChecksumId}:this.pageInteractor.getCurrentReducedHTML({stopFlashingElementsDetection:!0,assignChecksumIdsToAllElements:!0,initialChecksumId:lpe.currentChecksumId})}getErrorFileContent(a){try{let s=Fdr.default.dirname(this.fallbackData.testInfo.config.configFile);return aNe.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,D$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,aXe.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 C$r.JSDOM(l),lpe.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.fallbackAnalytics.arFallbackEnd({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.fallbackAnalytics.arFallbackEnd({result:"failed",avgDuration:0,failMessage:"User canceled"}),{result:"failed",thought:"Fallback Canceled"};let R=this.getStopIterationResult(E);if(R)return{result:R.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.fallbackAnalytics.arFallbackActionExecution({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.fallbackAnalytics.arFallbackActionExecutionFailure({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.fallbackAnalytics.arFallbackAssertion({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 FT(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.fallbackAnalytics.arFallbackActionExecutionFailure({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.fallbackAnalytics.arFallbackActionExecution({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 FT(1e3)}addActionStepPayload(a,s){let{thought:l,action:{checksumid:d,type:g}}=a,{selector:b,locator:E,fillValue:S,getMoreItemsId:F}=s,R={thought:l,checksumid:d,type:g,selector:b,locator:E,fillValue:S,getMoreItemsId:F};return this.stepsPayload.push(R),R}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 R={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 zNe(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:R})}));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 Sor(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.fallbackAnalytics.arFallbackStart({error:this.fallbackData.error.message,failedThought:this.getFailedThought()});try{let E=await zNe(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.fallbackAnalytics.updateToSessionId(S),this.fallbackAnalytics.arFallbackConfig({config:F}),this.log("[AIFallback] Session ID",this.sessionId)}catch(E){throw this.withChecksumAI&&E.message==="fetch failed"&&(this.checksumPage.step(iXe,async()=>{throw new Error(iXe)}),Sor(iXe)),this.fallbackAnalytics.arFallbackEnd({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.fallbackAnalytics.arFallbackIterationResponse({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(lpe,"AIFallback"),lpe.alreadyTriggered=!1,lpe.currentChecksumId="0";var Pdr=lpe;var Ndr=class Ndr extends the{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??VPr(JPr(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 UPr(this.checksumRootFolder,this.data.testId)}getAPIBaseURL(){return this.API_BASE_DOMAIN+this.API_BASE_ROUTE}};e(Ndr,"MetadataBaseFallback");var GNe=Ndr;var _AlternateSelectorFallback=class _AlternateSelectorFallback extends GNe{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(cAe(locatorExpression,"this.page"));try{await C8(locator.first().waitFor({bypassChecksum:!0}),5e3),(await C8(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 Odr=_AlternateSelectorFallback;var o0i=require("@playwright/test");var GZn=require("jsdom");var S$r=zd(require("path"));var Rdr=class Rdr{constructor(r="all"){this.listeners=[];this.logLevel=r}log(r,...a){let s=this.shouldLog(r);try{let d=new Error().stack.split(`
1594
1594
  `)[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=`${S$r.default.basename(b)}:${E}`;s&&(console.log("\x1B[34m",F,"\x1B[0m",...a),setTimeout(()=>this.listeners.forEach(R=>R.onLog(...a)),0)),this.logStream&&this.logStream.write(`[${F}] ${a.map(R=>{if(typeof R=="object")try{return JSON.stringify(R,null,2)}catch{}return String(R)}).join(" ")}
1595
- `)}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(Rdr,"Logger");var Bdr=Rdr,yDe=new Bdr,KZn=Object.assign((...i)=>yDe.info(...i),{info:e((...i)=>yDe.info(...i),"info"),warning:e((...i)=>yDe.warning(...i),"warning"),error:e((...i)=>yDe.error(...i),"error"),setLogLevel:e(i=>yDe.setLogLevel(i),"setLogLevel"),setLogStream:e(i=>yDe.setLogStream(i),"setLogStream"),addLogListener:e(i=>yDe.addListener(i),"addLogListener")}),JA=KZn;var vYr=zd(yYr());var u0i=require("@playwright/test");var c0i=zd(yEt());var bgr=class bgr{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?C8(this.execute(),this.options.timeout,"Execution timeout"):this.execute())}catch(r){return this.handleError(this.options.method,this.constructor.name,r)}}};e(bgr,"Action");var q3t=bgr,Egr=class Egr extends q3t{async execute(){return this.options.method in this.options.locator?this.options.locator[this.options.method](...this.options.args):this.options.locator}};e(Egr,"PlaywrightAction");var ygr=Egr,Cgr=class Cgr extends q3t{constructor(a,s){super(a);this.pageInteractor=s}};e(Cgr,"APIAction");var vgr=Cgr,Dgr=class Dgr extends vgr{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(Dgr,"CanvasClickAction");var xgr=Dgr,$3t=class $3t{static createAction(r,a){return r.method in this.customActionMap?new this.customActionMap[r.method]({...r,timeout:15e3},a):new ygr(r)}};e($3t,"ActionFactory"),$3t.customActionMap={canvasClick:xgr};var Agr=$3t;uin();Wee();var Phe=class Phe{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]=Phe.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(Phe.describeTool(s,a.element)):r}return r instanceof W1.ZodOptional?Phe.describeTool(r.unwrap(),a).optional():r instanceof W1.ZodNullable?Phe.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=Phe.describeTool(g,a.params),S=qxr(e(async F=>{let R=b.parse(F);return a.handler(R)},"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=Phe.describeTool(b,{});return qxr(e(async R=>{let N=E.parse(R);return s(N)},"validatedHandler"),{name:g.name,description:g.description,schema:E})}};e(Phe,"AbstractToolContainer");var ybe=Phe;Wee();var KSt=class KSt{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 KSt(r,a)}};e(KSt,"ToolProtocol");var GSt=KSt;var wL=GSt.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 uAr=zd(pin(),1);var Yae=Object.create(null);Yae.open="0";Yae.close="1";Yae.ping="2";Yae.pong="3";Yae.message="4";Yae.upgrade="5";Yae.noop="6";var _et=Object.create(null);Object.keys(Yae).forEach(i=>{_et[Yae[i]]=i});var met={type:"error",data:"parser error"};var het=e(({type:i,data:r},a,s)=>r instanceof ArrayBuffer||ArrayBuffer.isView(r)?s(a?r:"b"+fin(r,!0).toString("base64")):s(Yae[i]+(r||"")),"encodePacket"),fin=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"),Hxr;function din(i,r){if(i.data instanceof ArrayBuffer||ArrayBuffer.isView(i.data))return r(fin(i.data,!1));het(i,!0,a=>{Hxr||(Hxr=new TextEncoder),r(Hxr.encode(a))})}e(din,"encodePacketToBinary");var get=e((i,r)=>{if(typeof i!="string")return{type:"message",data:_in(i,r)};let a=i.charAt(0);if(a==="b"){let s=Buffer.from(i.substring(1),"base64");return{type:"message",data:_in(s,r)}}return _et[a]?i.length>1?{type:_et[a],data:i.substring(1)}:{type:_et[a]}:met},"decodePacket"),_in=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 min="",hin=e((i,r)=>{let a=i.length,s=new Array(a),l=0;i.forEach((d,g)=>{het(d,!1,b=>{s[g]=b,++l===a&&r(s.join(min))})})},"encodePayload"),gin=e((i,r)=>{let a=i.split(min),s=[];for(let l=0;l<a.length;l++){let d=get(a[l],r);if(s.push(d),d.type==="error")break}return s},"decodePayload");function yin(){return new TransformStream({transform(i,r){din(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(yin,"createPacketEncoderStream");var Gxr;function YSt(i){return i.reduce((r,a)=>r+a.length,0)}e(YSt,"totalLength");function XSt(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(XSt,"concatChunks");function vin(i,r){Gxr||(Gxr=new TextDecoder);let a=[],s=0,l=-1,d=!1;return new TransformStream({transform(g,b){for(a.push(g);;){if(s===0){if(YSt(a)<1)break;let E=XSt(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(YSt(a)<2)break;let E=XSt(a,2);l=new DataView(E.buffer,E.byteOffset,E.length).getUint16(0),s=3}else if(s===2){if(YSt(a)<8)break;let E=XSt(a,8),S=new DataView(E.buffer,E.byteOffset,E.length),F=S.getUint32(0);if(F>Math.pow(2,21)-1){b.enqueue(met);break}l=F*Math.pow(2,32)+S.getUint32(4),s=3}else{if(YSt(a)<l)break;let E=XSt(a,l);b.enqueue(get(d?E:Gxr.decode(E),r)),s=0}if(l===0||l>i){b.enqueue(met);break}}}})}e(vin,"createPacketDecoderStream");var Kxr=4;var Bin=zd(NSe(),1);var Nhe=process.nextTick,s$=global,Ain="nodebuffer";function bin(){return new Yxr}e(bin,"createCookieJar");function yyi(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(yyi,"parse");var Xxr=class Xxr{constructor(){this._cookies=new Map}parseCookies(r){r&&r.forEach(a=>{let s=yyi(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(Xxr,"CookieJar");var Yxr=Xxr;function ZSt(i,...r){return r.reduce((a,s)=>(i.hasOwnProperty(s)&&(a[s]=i[s]),a),{})}e(ZSt,"pick");var vyi=s$.setTimeout,xyi=s$.clearTimeout;function Ohe(i,r){r.useNativeTimers?(i.setTimeoutFn=vyi.bind(s$),i.clearTimeoutFn=xyi.bind(s$)):(i.setTimeoutFn=s$.setTimeout.bind(s$),i.clearTimeoutFn=s$.clearTimeout.bind(s$))}e(Ohe,"installTimerFunctions");var Ayi=1.33;function Ein(i){return typeof i=="string"?byi(i):Math.ceil((i.byteLength||i.size)*Ayi)}e(Ein,"byteLength");function byi(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(byi,"utf8Length");function ewt(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}e(ewt,"randomString");function Cin(i){let r="";for(let a in i)i.hasOwnProperty(a)&&(r.length&&(r+="&"),r+=encodeURIComponent(a)+"="+encodeURIComponent(i[a]));return r}e(Cin,"encode");function Din(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(Din,"decode");var Rin=zd(BSe(),1);var Jyi=(0,Rin.default)("engine.io-client:transport"),nAr=class nAr extends Error{constructor(r,a,s){super(r),this.description=a,this.context=s,this.type="TransportError"}};e(nAr,"TransportError");var awt=nAr,iAr=class iAr extends Bin.Emitter{constructor(r){super(),this.writable=!1,Ohe(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 awt(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):Jyi("transport is not open, discarding packets")}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(r){let a=get(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=Cin(r);return a.length?"?"+a:""}};e(iAr,"Transport");var Bhe=iAr;var Lin=zd(BSe(),1);var Xae=(0,Lin.default)("engine.io-client:polling"),aAr=class aAr extends Bhe{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(r){this.readyState="pausing";let a=e(()=>{Xae("paused"),this.readyState="paused",r()},"pause");if(this._polling||!this.writable){let s=0;this._polling&&(Xae("we are currently polling - waiting to pause"),s++,this.once("pollComplete",function(){Xae("pre-pause polling complete"),--s||a()})),this.writable||(Xae("we are currently writing - waiting to pause"),s++,this.once("drain",function(){Xae("pre-pause writing complete"),--s||a()}))}else a()}_poll(){Xae("polling"),this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(r){Xae("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");gin(r,this.socket.binaryType).forEach(a),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"?this._poll():Xae('ignoring poll - transport state "%s"',this.readyState))}doClose(){let r=e(()=>{Xae("writing close packet"),this.write([{type:"close"}])},"close");this.readyState==="open"?(Xae("transport open - closing"),r()):(Xae("transport not open - deferring close"),this.once("open",r))}write(r){this.writable=!1,hin(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]=ewt()),!this.supportsBinary&&!a.sid&&(a.b64=1),this.createUri(r,a)}};e(aAr,"Polling");var vet=aAr;var Qin=zd(NSe(),1);var Min=!1;try{Min=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}var jin=Min;var qin=zd(BSe(),1);var sAr=(0,qin.default)("engine.io-client:polling");function zyi(){}e(zyi,"empty");var oAr=class oAr extends vet{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(){sAr("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(oAr,"BaseXHR");var swt=oAr,jBe=class jBe extends Qin.Emitter{constructor(r,a,s){super(),this.createRequest=r,Ohe(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=ZSt(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");a.xdomain=!!this._opts.xd;let s=this._xhr=this.createRequest(a);try{sAr("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))},sAr("xhr data %s",this._data),s.send(this._data)}catch(l){this.setTimeoutFn(()=>{this._onError(l)},0);return}typeof document<"u"&&(this._index=jBe.requestsCount++,jBe.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=zyi,r)try{this._xhr.abort()}catch{}typeof document<"u"&&delete jBe.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(jBe,"Request");var Rhe=jBe;Rhe.requestsCount=0;Rhe.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",Uin);else if(typeof addEventListener=="function"){let i="onpagehide"in s$?"pagehide":"unload";addEventListener(i,Uin,!1)}}function Uin(){for(let i in Rhe.requests)Rhe.requests.hasOwnProperty(i)&&Rhe.requests[i].abort()}e(Uin,"unloadHandler");var s1a=function(){let i=Wyi({xdomain:!1});return i&&i.responseType!==null}();function Wyi(i){let r=i.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!r||jin))return new XMLHttpRequest}catch{}if(!r)try{return new s$[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}e(Wyi,"newRequest");var Hyi=uAr.default||uAr,cAr=class cAr extends swt{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 Rhe(s=>new Hyi(s),this.uri(),r)}};e(cAr,"XHR");var UBe=cAr;var ivi=zd(zin(),1),avi=zd(EAr(),1),svi=zd(DAr(),1),jAr=zd(RAr(),1),ovi=zd($an(),1);var Van=zd(BSe(),1);var cvi=(0,Van.default)("engine.io-client:websocket"),lvi=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative",UAr=class UAr extends Bhe{get name(){return"websocket"}doOpen(){let r=this.uri(),a=this.opts.protocols,s=lvi?{}:ZSt(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;het(s,this.supportsBinary,d=>{try{this.doWrite(s,d)}catch{cvi("websocket closed before onclose event")}l&&Nhe(()=>{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]=ewt()),this.supportsBinary||(a.b64=1),this.createUri(r,a)}};e(UAr,"BaseWS");var xwt=UAr,z1a=s$.WebSocket||s$.MozWebSocket;var QAr=class QAr extends xwt{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 jAr.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(QAr,"WS");var JBe=QAr;var Jan=zd(BSe(),1);var Fet=(0,Jan.default)("engine.io-client:webtransport"),qAr=class qAr extends Bhe{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(()=>{Fet("transport closed gracefully"),this.onClose()}).catch(r=>{Fet("transport closed due to %s",r),this.onError("webtransport error",r)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(r=>{let a=vin(Number.MAX_SAFE_INTEGER,this.socket.binaryType),s=r.readable.pipeThrough(a).getReader(),l=yin();l.readable.pipeTo(r.writable),this._writer=l.writable.getWriter();let d=e(()=>{s.read().then(({done:b,value:E})=>{if(b){Fet("session is closed");return}Fet("received chunk: %o",E),this.onPacket(E),d()}).catch(b=>{Fet("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&&Nhe(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var r;(r=this._transport)===null||r===void 0||r.close()}};e(qAr,"WT");var zBe=qAr;var $Ar={websocket:JBe,webtransport:zBe,polling:UBe};var pvi=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,fvi=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function WBe(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=pvi.exec(i||""),d={},g=14;for(;g--;)d[fvi[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=dvi(d,d.path),d.queryKey=_vi(d,d.query),d}e(WBe,"parse");function dvi(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(dvi,"pathNames");function _vi(i,r){let a={};return r.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(s,l,d){l&&(a[l]=d)}),a}e(_vi,"queryKey");var zan=zd(NSe(),1);var Wan=zd(BSe(),1);var k3=(0,Wan.default)("engine.io-client:socket"),VAr=typeof addEventListener=="function"&&typeof removeEventListener=="function",Pet=[];VAr&&addEventListener("offline",()=>{k3("closing %d connection(s) because the network was lost",Pet.length),Pet.forEach(i=>i())},!1);var HBe=class HBe extends zan.Emitter{constructor(r,a){if(super(),this.binaryType=Ain,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=WBe(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=WBe(a.host).host);Ohe(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=Din(this.opts.query)),VAr&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(k3("adding listener for the 'offline' event"),this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Pet.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=bin()),this._open()}createTransport(r){k3('creating transport "%s"',r);let a=Object.assign({},this.opts.query);a.EIO=Kxr,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 k3("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&&HBe.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){k3("setting transport %s",r.name),this.transport&&(k3("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(){k3("socket open"),this.readyState="open",HBe.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(r){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(k3('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 k3('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();k3("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+=Ein(l)),s>0&&a>this._maxPayload)return k3("only send %d out of %d packets",s,this.writeBuffer.length),this.writeBuffer.slice(0,s);a+=2}return k3("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&&(k3("throttled timer detected, scheduling connection close"),this._pingTimeoutTime=0,Nhe(()=>{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"),k3("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(k3("socket error %j",r),HBe.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return k3("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(k3('socket close with reason: "%s"',r),this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),VAr&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){let s=Pet.indexOf(this._offlineEventListener);s!==-1&&(k3("removing listener for the 'offline' event"),Pet.splice(s,1))}this.readyState="closed",this.id=null,this.emitReserved("close",r,a),this.writeBuffer=[],this._prevBufferLen=0}}};e(HBe,"SocketWithoutUpgrade");var USe=HBe;USe.protocol=Kxr;var JAr=class JAr extends USe{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade){k3("starting upgrade probes");for(let r=0;r<this._upgrades.length;r++)this._probe(this._upgrades[r])}}_probe(r){k3('probing transport "%s"',r);let a=this.createTransport(r),s=!1;USe.priorWebsocketSuccess=!1;let l=e(()=>{s||(k3('probe transport "%s" opened',r),a.send([{type:"ping",data:"probe"}]),a.once("packet",R=>{if(!s)if(R.type==="pong"&&R.data==="probe"){if(k3('probe transport "%s" pong',r),this.upgrading=!0,this.emitReserved("upgrading",a),!a)return;USe.priorWebsocketSuccess=a.name==="websocket",k3('pausing current transport "%s"',this.transport.name),this.transport.pause(()=>{s||this.readyState!=="closed"&&(k3("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{k3('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(R=>{let N=new Error("probe error: "+R);N.transport=a.name,d(),k3('probe transport "%s" failed because of error: %s',r,R),this.emitReserved("upgradeError",N)},"onerror");function b(){g("transport closed")}e(b,"onTransportClose");function E(){g("socket closed")}e(E,"onclose");function S(R){a&&R.name!==a.name&&(k3('"%s" works - aborting "%s"',R.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(JAr,"SocketWithUpgrade");var Awt=JAr,zAr=class zAr extends Awt{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=>$Ar[l]).filter(l=>!!l)),super(r,s)}};e(zAr,"Socket");var GBe=zAr;var Aga=GBe.protocol;var Zan=zd(Net(),1);var Xan=(0,Zan.default)("socket.io-client:url");function esn(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)||(Xan("protocol-less url %s",i),typeof a<"u"?i=a.protocol+"//"+i:i="https://"+i),Xan("parse %s",i),s=WBe(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(esn,"url");var nbr={};RKe(nbr,{Decoder:()=>tbr,Encoder:()=>ebr,PacketType:()=>tE,protocol:()=>fsn});var lsn=zd(NSe(),1);var Nvi=typeof ArrayBuffer=="function",Ovi=e(i=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(i):i.buffer instanceof ArrayBuffer,"isView"),tsn=Object.prototype.toString,Bvi=typeof Blob=="function"||typeof Blob<"u"&&tsn.call(Blob)==="[object BlobConstructor]",Rvi=typeof File=="function"||typeof File<"u"&&tsn.call(File)==="[object FileConstructor]";function Bet(i){return Nvi&&(i instanceof ArrayBuffer||Ovi(i))||Bvi&&i instanceof Blob||Rvi&&i instanceof File}e(Bet,"isBinary");function Oet(i,r){if(!i||typeof i!="object")return!1;if(Array.isArray(i)){for(let a=0,s=i.length;a<s;a++)if(Oet(i[a]))return!0;return!1}if(Bet(i))return!0;if(i.toJSON&&typeof i.toJSON=="function"&&arguments.length===1)return Oet(i.toJSON(),!0);for(let a in i)if(Object.prototype.hasOwnProperty.call(i,a)&&Oet(i[a]))return!0;return!1}e(Oet,"hasBinary");function rsn(i){let r=[],a=i.data,s=i;return s.data=GAr(a,r),s.attachments=r.length,{packet:s,buffers:r}}e(rsn,"deconstructPacket");function GAr(i,r){if(!i)return i;if(Bet(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]=GAr(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]=GAr(i[s],r));return a}return i}e(GAr,"_deconstructPacket");function nsn(i,r){return i.data=KAr(i.data,r),delete i.attachments,i}e(nsn,"reconstructPacket");function KAr(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]=KAr(i[a],r);else if(typeof i=="object")for(let a in i)Object.prototype.hasOwnProperty.call(i,a)&&(i[a]=KAr(i[a],r));return i}e(KAr,"_reconstructPacket");var psn=zd(usn(),1);var ZAr=(0,psn.default)("socket.io-parser"),Xvi=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"],fsn=5,tE;(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"})(tE||(tE={}));var ibr=class ibr{constructor(r){this.replacer=r}encode(r){return ZAr("encoding packet %j",r),(r.type===tE.EVENT||r.type===tE.ACK)&&Oet(r)?this.encodeAsBinary({type:r.type===tE.EVENT?tE.BINARY_EVENT:tE.BINARY_ACK,nsp:r.nsp,data:r.data,id:r.id}):[this.encodeAsString(r)]}encodeAsString(r){let a=""+r.type;return(r.type===tE.BINARY_EVENT||r.type===tE.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)),ZAr("encoded %j as %s",r,a),a}encodeAsBinary(r){let a=rsn(r),s=this.encodeAsString(a.packet),l=a.buffers;return l.unshift(s),l}};e(ibr,"Encoder");var ebr=ibr;function csn(i){return Object.prototype.toString.call(i)==="[object Object]"}e(csn,"isObject");var Twt=class Twt extends lsn.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===tE.BINARY_EVENT;s||a.type===tE.BINARY_ACK?(a.type=s?tE.EVENT:tE.ACK,this.reconstructor=new rbr(a),a.attachments===0&&super.emitReserved("decoded",a)):super.emitReserved("decoded",a)}else if(Bet(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(tE[s.type]===void 0)throw new Error("unknown packet type "+s.type);if(s.type===tE.BINARY_EVENT||s.type===tE.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(Twt.isPayloadValid(s.type,d))s.data=d;else throw new Error("invalid payload")}return ZAr("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 tE.CONNECT:return csn(a);case tE.DISCONNECT:return a===void 0;case tE.CONNECT_ERROR:return typeof a=="string"||csn(a);case tE.EVENT:case tE.BINARY_EVENT:return Array.isArray(a)&&(typeof a[0]=="number"||typeof a[0]=="string"&&Xvi.indexOf(a[0])===-1);case tE.ACK:case tE.BINARY_ACK:return Array.isArray(a)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}};e(Twt,"Decoder");var tbr=Twt,abr=class abr{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=nsn(this.reconPack,this.buffers);return this.finishedReconstruction(),a}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}};e(abr,"BinaryReconstructor");var rbr=abr;function EK(i,r,a){return i.on(r,a),e(function(){i.off(r,a)},"subDestroy")}e(EK,"on");var dsn=zd(NSe(),1),_sn=zd(Net(),1);var kP=(0,_sn.default)("socket.io-client:socket"),Zvi=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1}),sbr=class sbr extends dsn.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=[EK(r,"open",this.onopen.bind(this)),EK(r,"packet",this.onpacket.bind(this)),EK(r,"error",this.onerror.bind(this)),EK(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(Zvi.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:tE.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 R=a.pop();this._registerAckCallback(F,R),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:tE.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 tE.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 tE.EVENT:case tE.BINARY_EVENT:this.onevent(r);break;case tE.ACK:case tE.BINARY_ACK:this.onack(r);break;case tE.DISCONNECT:this.ondisconnect();break;case tE.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:tE.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:tE.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(sbr,"Socket");var KBe=sbr;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 msn=zd(NSe(),1),hsn=zd(Net(),1);var TL=(0,hsn.default)("socket.io-client:manager"),obr=class obr extends msn.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,Ohe(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||nbr;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 GBe(this.uri,this.opts);let a=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;let l=EK(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=EK(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(EK(r,"ping",this.onping.bind(this)),EK(r,"data",this.ondata.bind(this)),EK(r,"error",this.onerror.bind(this)),EK(r,"close",this.onclose.bind(this)),EK(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){Nhe(()=>{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 KBe(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(obr,"Manager");var YBe=obr;var ysn=zd(Net(),1);var gsn=(0,ysn.default)("socket.io-client"),Ret={};function Let(i,r){typeof i=="object"&&(r=i,i=void 0),r=r||{};let a=esn(i,r.path||"/socket.io"),s=a.source,l=a.id,d=a.path,g=Ret[l]&&d in Ret[l].nsps,b=r.forceNew||r["force new connection"]||r.multiplex===!1||g,E;return b?(gsn("ignoring socket cache for %s",s),E=new YBe(s,r)):(Ret[l]||(gsn("new io instance for %s",s),Ret[l]=new YBe(s,r)),E=Ret[l]),a.query&&!r.query&&(r.query=a.queryKey),E.socket(a.path,r)}e(Let,"lookup");Object.assign(Let,{Manager:YBe,Socket:KBe,io:Let,connect:Let});var kwt={URL:"http://localhost:3000",NAMESPACE:"auto-recovery",RECONNECTION_ATTEMPTS:5,RECONNECTION_DELAY:1e3},ubr=class ubr{constructor(r={}){this.socket=null;this.connectionState="disconnected";this.connectionPromise=null;this.resolution=null;this.options=r,this.url=r.url||kwt.URL,this.namespace=r.namespace||kwt.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){try{return await this.connect(),this.emit(r,a,s=>{this.resolveInitialization(s)}),this.initializationPromise}catch(s){throw this.logError("\u274C Failed to start session:",s),this.rejectInitialization(s),s}}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=Let(l,{autoConnect:!0,reconnection:!0,reconnectionAttempts:kwt.RECONNECTION_ATTEMPTS,reconnectionDelay:kwt.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",this.resolution===null&&r==="io server disconnect"&&this.rejectInitialization(r),!a.connectionResolved&&(r==="io server disconnect"||r==="transport close")&&(a.connectionResolved=!0,a.reject(new Error(r)))}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(ubr,"AbstractClient");var Iwt=ubr;var vsn,xsn,Asn,bsn,Esn,Csn,Pwt=class Pwt extends(Csn=Iwt,Esn=wL.names.getState,bsn=wL.names.invokeCode,Asn=wL.names.final_result,xsn=wL.names.wait,vsn=wL.names.getElementScreenshot,Csn){constructor(a,s){super({verbose:F2.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[Esn]=ybe.buildTool(wL,wL.names.getState,async a=>this.getStateHandler(a));this[bsn]=ybe.buildTool(wL,wL.names.invokeCode,async a=>this.invokeCodeHandler(a));this[Asn]=ybe.buildTool(wL,wL.names.final_result,async a=>this.finalResultHandler(a));this[xsn]=ybe.buildTool(wL,wL.names.wait,async a=>this.waitHandler(a));this[vsn]=ybe.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 Failed";return this.utils.createChecksumStep({title:l,withError:!0}),{finalThought:l,stepsThoughts:[],result:"failed"}})}static async build(a){let s=await a.buildFallbackData();return new Pwt(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){this.utils.createChecksumStep({title:"Error while invoking code",withError:!0}),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),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(Pwt,"AutoRecoveryAgent");var Fwt=Pwt;var Dsn=require("fs"),Ssn=zd(require("path"));var cbr=class cbr extends Iee{constructor(a,s){let l=Iee.getCurrentTestInfo();if(!l)throw new Error("TestRunAnalytics must be initialized with testInfo before FallbackAnalytics can be used");let d=Iee.getCurrentInstance();if(!d)throw new Error("TestRunAnalytics instance not found. Make sure TestRunAnalytics is initialized before creating FallbackAnalytics");let g=d.getTestSuiteRunInfo();super(g,Iee.isolatedMode,l);this.sessionId=null;this.fallbackId=a,this.fallbackType=s}updateToSessionId(a){this.sessionId!==a&&(this.sessionId=a,this.analytics&&this.analytics.alias({userId:a,previousId:this.fallbackId}))}get tableName(){return"auto_recovery"}get metadata(){return{...super.metadata,fallbackType:this.fallbackType,sessionId:this.sessionId||"unknown",fallbackId:this.fallbackId}}event(a){super.trackEventWithTable(a,this.metadata,this.tableName)}setFallbackType(a){this.fallbackType=a}ARStart(){this.event({event:"Auto-Recovery Start",metadata:this.metadata})}ARConfig(a){this.event({event:"Auto-Recovery Config",metadata:this.metadata,...a})}ARGetState(a){this.event({event:"Auto-Recovery State",metadata:this.metadata,thought:a})}ARInvokeCode(a,s){this.event({event:"Auto-Recovery Invoke Code",metadata:this.metadata,thought:a,code:s})}ARFinalResult(a){this.event({event:"Auto-Recovery Final Result",metadata:this.metadata,...a})}autoRecoveryDisconnect(a){this.event({event:"Auto-Recovery Disconnect",metadata:this.metadata,...a})}ARFinish(a){this.event({event:"Auto-Recovery Finish",metadata:this.metadata,...a})}ARError(a){this.event({event:"Auto-Recovery Error",metadata:this.metadata,...a})}};e(cbr,"AutoRecoveryAnalytics");var Nwt=cbr;var qSe=class qSe{constructor({page:r,evaluateWithChecksum:a,checksumPage:s,pageInteractor:l,arConfig:d,sessionId:g,runtimeFallbackData:b,fallbackData:E,variableStore:S}){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 Nwt(this.sessionId,E.type)}static async start(r){return new qSe({...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,Dsn.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),R=F instanceof HTMLOptionElement&&F.value?F.value:void 0;return{selector:l,locator:d,clickOffset:g,selectOptionValue:R,parentFramesSelectors:b,invalid:E,rrwebId:S}},r)}async getReducedHtml(r=qSe.currentChecksumId){let{reducedHTML:a,currentChecksumId:s}=await this.pageInteractor.getCurrentReducedHTML({stopFlashingElementsDetection:!0,assignChecksumIdsToAllElements:!0,initialChecksumId:r});return qSe.currentChecksumId=s,{reducedHTML:a,currentChecksumId:s}}async getApplicationState(){let{reducedHTML:r}=await this.getReducedHtml();return{reducedHTML:r,screenshot:await this.getPageScreenshot()}}async buildFallbackData(){let{reducedHTML:r,currentChecksumId:a}=await this.getReducedHtml();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:r,screenshot:await this.getPageScreenshot()},stepData:{matcher:this.getMatcherResultFileData(this.fallbackData.error)},currentChecksumId:a,failingStepThought:this.runtimeFallbackData.thoughts.failing,type:this.fallbackData.type,config:this.runtimeFallbackData.config,sessionId:this.runtimeFallbackData.testIdentification.testId,variableStore:this.variableStore.reduce((s,l)=>(s[`variablesStore.${l.name}`]=l.value,s),{})}}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.modelPreset)==null?void 0:s.type)==="anthropic-vertexai"?"jpeg":"png"})).toString("base64")})}catch{return}}async getErrorFileContent(r){try{let a=Ssn.default.dirname(this.runtimeFallbackData.testIdentification.testFileName);return aNe.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 R=/variables?Store\.([a-zA-Z_$][a-zA-Z0-9_$]*)/g,N=null;for(;(N=R.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){let a=this.runtimeFallbackData.thoughts.failing;this.checksumPage.addPwAnnotation({type:`"${a}" auto-recovered`,description:r.replace(/^"(.*)"$/,"$1")}),this.checksumPage.addErrorMessage(this.fallbackData.error,`"${a}" auto-recovered:
1595
+ `)}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(Rdr,"Logger");var Bdr=Rdr,yDe=new Bdr,KZn=Object.assign((...i)=>yDe.info(...i),{info:e((...i)=>yDe.info(...i),"info"),warning:e((...i)=>yDe.warning(...i),"warning"),error:e((...i)=>yDe.error(...i),"error"),setLogLevel:e(i=>yDe.setLogLevel(i),"setLogLevel"),setLogStream:e(i=>yDe.setLogStream(i),"setLogStream"),addLogListener:e(i=>yDe.addListener(i),"addLogListener")}),JA=KZn;var vYr=zd(yYr());var u0i=require("@playwright/test");var c0i=zd(yEt());var bgr=class bgr{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?C8(this.execute(),this.options.timeout,"Execution timeout"):this.execute())}catch(r){return this.handleError(this.options.method,this.constructor.name,r)}}};e(bgr,"Action");var q3t=bgr,Egr=class Egr extends q3t{async execute(){return this.options.method in this.options.locator?this.options.locator[this.options.method](...this.options.args):this.options.locator}};e(Egr,"PlaywrightAction");var ygr=Egr,Cgr=class Cgr extends q3t{constructor(a,s){super(a);this.pageInteractor=s}};e(Cgr,"APIAction");var vgr=Cgr,Dgr=class Dgr extends vgr{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(Dgr,"CanvasClickAction");var xgr=Dgr,$3t=class $3t{static createAction(r,a){return r.method in this.customActionMap?new this.customActionMap[r.method]({...r,timeout:15e3},a):new ygr(r)}};e($3t,"ActionFactory"),$3t.customActionMap={canvasClick:xgr};var Agr=$3t;uin();Wee();var Phe=class Phe{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]=Phe.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(Phe.describeTool(s,a.element)):r}return r instanceof W1.ZodOptional?Phe.describeTool(r.unwrap(),a).optional():r instanceof W1.ZodNullable?Phe.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=Phe.describeTool(g,a.params),S=qxr(e(async F=>{let R=b.parse(F);return a.handler(R)},"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=Phe.describeTool(b,{});return qxr(e(async R=>{let N=E.parse(R);return s(N)},"validatedHandler"),{name:g.name,description:g.description,schema:E})}};e(Phe,"AbstractToolContainer");var ybe=Phe;Wee();var KSt=class KSt{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 KSt(r,a)}};e(KSt,"ToolProtocol");var GSt=KSt;var wL=GSt.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 uAr=zd(pin(),1);var Yae=Object.create(null);Yae.open="0";Yae.close="1";Yae.ping="2";Yae.pong="3";Yae.message="4";Yae.upgrade="5";Yae.noop="6";var _et=Object.create(null);Object.keys(Yae).forEach(i=>{_et[Yae[i]]=i});var met={type:"error",data:"parser error"};var het=e(({type:i,data:r},a,s)=>r instanceof ArrayBuffer||ArrayBuffer.isView(r)?s(a?r:"b"+fin(r,!0).toString("base64")):s(Yae[i]+(r||"")),"encodePacket"),fin=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"),Hxr;function din(i,r){if(i.data instanceof ArrayBuffer||ArrayBuffer.isView(i.data))return r(fin(i.data,!1));het(i,!0,a=>{Hxr||(Hxr=new TextEncoder),r(Hxr.encode(a))})}e(din,"encodePacketToBinary");var get=e((i,r)=>{if(typeof i!="string")return{type:"message",data:_in(i,r)};let a=i.charAt(0);if(a==="b"){let s=Buffer.from(i.substring(1),"base64");return{type:"message",data:_in(s,r)}}return _et[a]?i.length>1?{type:_et[a],data:i.substring(1)}:{type:_et[a]}:met},"decodePacket"),_in=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 min="",hin=e((i,r)=>{let a=i.length,s=new Array(a),l=0;i.forEach((d,g)=>{het(d,!1,b=>{s[g]=b,++l===a&&r(s.join(min))})})},"encodePayload"),gin=e((i,r)=>{let a=i.split(min),s=[];for(let l=0;l<a.length;l++){let d=get(a[l],r);if(s.push(d),d.type==="error")break}return s},"decodePayload");function yin(){return new TransformStream({transform(i,r){din(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(yin,"createPacketEncoderStream");var Gxr;function YSt(i){return i.reduce((r,a)=>r+a.length,0)}e(YSt,"totalLength");function XSt(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(XSt,"concatChunks");function vin(i,r){Gxr||(Gxr=new TextDecoder);let a=[],s=0,l=-1,d=!1;return new TransformStream({transform(g,b){for(a.push(g);;){if(s===0){if(YSt(a)<1)break;let E=XSt(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(YSt(a)<2)break;let E=XSt(a,2);l=new DataView(E.buffer,E.byteOffset,E.length).getUint16(0),s=3}else if(s===2){if(YSt(a)<8)break;let E=XSt(a,8),S=new DataView(E.buffer,E.byteOffset,E.length),F=S.getUint32(0);if(F>Math.pow(2,21)-1){b.enqueue(met);break}l=F*Math.pow(2,32)+S.getUint32(4),s=3}else{if(YSt(a)<l)break;let E=XSt(a,l);b.enqueue(get(d?E:Gxr.decode(E),r)),s=0}if(l===0||l>i){b.enqueue(met);break}}}})}e(vin,"createPacketDecoderStream");var Kxr=4;var Bin=zd(NSe(),1);var Nhe=process.nextTick,s$=global,Ain="nodebuffer";function bin(){return new Yxr}e(bin,"createCookieJar");function yyi(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(yyi,"parse");var Xxr=class Xxr{constructor(){this._cookies=new Map}parseCookies(r){r&&r.forEach(a=>{let s=yyi(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(Xxr,"CookieJar");var Yxr=Xxr;function ZSt(i,...r){return r.reduce((a,s)=>(i.hasOwnProperty(s)&&(a[s]=i[s]),a),{})}e(ZSt,"pick");var vyi=s$.setTimeout,xyi=s$.clearTimeout;function Ohe(i,r){r.useNativeTimers?(i.setTimeoutFn=vyi.bind(s$),i.clearTimeoutFn=xyi.bind(s$)):(i.setTimeoutFn=s$.setTimeout.bind(s$),i.clearTimeoutFn=s$.clearTimeout.bind(s$))}e(Ohe,"installTimerFunctions");var Ayi=1.33;function Ein(i){return typeof i=="string"?byi(i):Math.ceil((i.byteLength||i.size)*Ayi)}e(Ein,"byteLength");function byi(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(byi,"utf8Length");function ewt(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}e(ewt,"randomString");function Cin(i){let r="";for(let a in i)i.hasOwnProperty(a)&&(r.length&&(r+="&"),r+=encodeURIComponent(a)+"="+encodeURIComponent(i[a]));return r}e(Cin,"encode");function Din(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(Din,"decode");var Rin=zd(BSe(),1);var Jyi=(0,Rin.default)("engine.io-client:transport"),nAr=class nAr extends Error{constructor(r,a,s){super(r),this.description=a,this.context=s,this.type="TransportError"}};e(nAr,"TransportError");var awt=nAr,iAr=class iAr extends Bin.Emitter{constructor(r){super(),this.writable=!1,Ohe(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 awt(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):Jyi("transport is not open, discarding packets")}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(r){let a=get(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=Cin(r);return a.length?"?"+a:""}};e(iAr,"Transport");var Bhe=iAr;var Lin=zd(BSe(),1);var Xae=(0,Lin.default)("engine.io-client:polling"),aAr=class aAr extends Bhe{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(r){this.readyState="pausing";let a=e(()=>{Xae("paused"),this.readyState="paused",r()},"pause");if(this._polling||!this.writable){let s=0;this._polling&&(Xae("we are currently polling - waiting to pause"),s++,this.once("pollComplete",function(){Xae("pre-pause polling complete"),--s||a()})),this.writable||(Xae("we are currently writing - waiting to pause"),s++,this.once("drain",function(){Xae("pre-pause writing complete"),--s||a()}))}else a()}_poll(){Xae("polling"),this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(r){Xae("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");gin(r,this.socket.binaryType).forEach(a),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"?this._poll():Xae('ignoring poll - transport state "%s"',this.readyState))}doClose(){let r=e(()=>{Xae("writing close packet"),this.write([{type:"close"}])},"close");this.readyState==="open"?(Xae("transport open - closing"),r()):(Xae("transport not open - deferring close"),this.once("open",r))}write(r){this.writable=!1,hin(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]=ewt()),!this.supportsBinary&&!a.sid&&(a.b64=1),this.createUri(r,a)}};e(aAr,"Polling");var vet=aAr;var Qin=zd(NSe(),1);var Min=!1;try{Min=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}var jin=Min;var qin=zd(BSe(),1);var sAr=(0,qin.default)("engine.io-client:polling");function zyi(){}e(zyi,"empty");var oAr=class oAr extends vet{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(){sAr("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(oAr,"BaseXHR");var swt=oAr,jBe=class jBe extends Qin.Emitter{constructor(r,a,s){super(),this.createRequest=r,Ohe(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=ZSt(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");a.xdomain=!!this._opts.xd;let s=this._xhr=this.createRequest(a);try{sAr("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))},sAr("xhr data %s",this._data),s.send(this._data)}catch(l){this.setTimeoutFn(()=>{this._onError(l)},0);return}typeof document<"u"&&(this._index=jBe.requestsCount++,jBe.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=zyi,r)try{this._xhr.abort()}catch{}typeof document<"u"&&delete jBe.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(jBe,"Request");var Rhe=jBe;Rhe.requestsCount=0;Rhe.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",Uin);else if(typeof addEventListener=="function"){let i="onpagehide"in s$?"pagehide":"unload";addEventListener(i,Uin,!1)}}function Uin(){for(let i in Rhe.requests)Rhe.requests.hasOwnProperty(i)&&Rhe.requests[i].abort()}e(Uin,"unloadHandler");var s1a=function(){let i=Wyi({xdomain:!1});return i&&i.responseType!==null}();function Wyi(i){let r=i.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!r||jin))return new XMLHttpRequest}catch{}if(!r)try{return new s$[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}e(Wyi,"newRequest");var Hyi=uAr.default||uAr,cAr=class cAr extends swt{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 Rhe(s=>new Hyi(s),this.uri(),r)}};e(cAr,"XHR");var UBe=cAr;var ivi=zd(zin(),1),avi=zd(EAr(),1),svi=zd(DAr(),1),jAr=zd(RAr(),1),ovi=zd($an(),1);var Van=zd(BSe(),1);var cvi=(0,Van.default)("engine.io-client:websocket"),lvi=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative",UAr=class UAr extends Bhe{get name(){return"websocket"}doOpen(){let r=this.uri(),a=this.opts.protocols,s=lvi?{}:ZSt(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;het(s,this.supportsBinary,d=>{try{this.doWrite(s,d)}catch{cvi("websocket closed before onclose event")}l&&Nhe(()=>{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]=ewt()),this.supportsBinary||(a.b64=1),this.createUri(r,a)}};e(UAr,"BaseWS");var xwt=UAr,z1a=s$.WebSocket||s$.MozWebSocket;var QAr=class QAr extends xwt{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 jAr.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(QAr,"WS");var JBe=QAr;var Jan=zd(BSe(),1);var Fet=(0,Jan.default)("engine.io-client:webtransport"),qAr=class qAr extends Bhe{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(()=>{Fet("transport closed gracefully"),this.onClose()}).catch(r=>{Fet("transport closed due to %s",r),this.onError("webtransport error",r)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(r=>{let a=vin(Number.MAX_SAFE_INTEGER,this.socket.binaryType),s=r.readable.pipeThrough(a).getReader(),l=yin();l.readable.pipeTo(r.writable),this._writer=l.writable.getWriter();let d=e(()=>{s.read().then(({done:b,value:E})=>{if(b){Fet("session is closed");return}Fet("received chunk: %o",E),this.onPacket(E),d()}).catch(b=>{Fet("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&&Nhe(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var r;(r=this._transport)===null||r===void 0||r.close()}};e(qAr,"WT");var zBe=qAr;var $Ar={websocket:JBe,webtransport:zBe,polling:UBe};var pvi=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,fvi=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function WBe(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=pvi.exec(i||""),d={},g=14;for(;g--;)d[fvi[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=dvi(d,d.path),d.queryKey=_vi(d,d.query),d}e(WBe,"parse");function dvi(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(dvi,"pathNames");function _vi(i,r){let a={};return r.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(s,l,d){l&&(a[l]=d)}),a}e(_vi,"queryKey");var zan=zd(NSe(),1);var Wan=zd(BSe(),1);var k3=(0,Wan.default)("engine.io-client:socket"),VAr=typeof addEventListener=="function"&&typeof removeEventListener=="function",Pet=[];VAr&&addEventListener("offline",()=>{k3("closing %d connection(s) because the network was lost",Pet.length),Pet.forEach(i=>i())},!1);var HBe=class HBe extends zan.Emitter{constructor(r,a){if(super(),this.binaryType=Ain,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=WBe(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=WBe(a.host).host);Ohe(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=Din(this.opts.query)),VAr&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(k3("adding listener for the 'offline' event"),this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Pet.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=bin()),this._open()}createTransport(r){k3('creating transport "%s"',r);let a=Object.assign({},this.opts.query);a.EIO=Kxr,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 k3("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&&HBe.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){k3("setting transport %s",r.name),this.transport&&(k3("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(){k3("socket open"),this.readyState="open",HBe.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(r){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(k3('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 k3('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();k3("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+=Ein(l)),s>0&&a>this._maxPayload)return k3("only send %d out of %d packets",s,this.writeBuffer.length),this.writeBuffer.slice(0,s);a+=2}return k3("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&&(k3("throttled timer detected, scheduling connection close"),this._pingTimeoutTime=0,Nhe(()=>{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"),k3("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(k3("socket error %j",r),HBe.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return k3("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(k3('socket close with reason: "%s"',r),this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),VAr&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){let s=Pet.indexOf(this._offlineEventListener);s!==-1&&(k3("removing listener for the 'offline' event"),Pet.splice(s,1))}this.readyState="closed",this.id=null,this.emitReserved("close",r,a),this.writeBuffer=[],this._prevBufferLen=0}}};e(HBe,"SocketWithoutUpgrade");var USe=HBe;USe.protocol=Kxr;var JAr=class JAr extends USe{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade){k3("starting upgrade probes");for(let r=0;r<this._upgrades.length;r++)this._probe(this._upgrades[r])}}_probe(r){k3('probing transport "%s"',r);let a=this.createTransport(r),s=!1;USe.priorWebsocketSuccess=!1;let l=e(()=>{s||(k3('probe transport "%s" opened',r),a.send([{type:"ping",data:"probe"}]),a.once("packet",R=>{if(!s)if(R.type==="pong"&&R.data==="probe"){if(k3('probe transport "%s" pong',r),this.upgrading=!0,this.emitReserved("upgrading",a),!a)return;USe.priorWebsocketSuccess=a.name==="websocket",k3('pausing current transport "%s"',this.transport.name),this.transport.pause(()=>{s||this.readyState!=="closed"&&(k3("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{k3('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(R=>{let N=new Error("probe error: "+R);N.transport=a.name,d(),k3('probe transport "%s" failed because of error: %s',r,R),this.emitReserved("upgradeError",N)},"onerror");function b(){g("transport closed")}e(b,"onTransportClose");function E(){g("socket closed")}e(E,"onclose");function S(R){a&&R.name!==a.name&&(k3('"%s" works - aborting "%s"',R.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(JAr,"SocketWithUpgrade");var Awt=JAr,zAr=class zAr extends Awt{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=>$Ar[l]).filter(l=>!!l)),super(r,s)}};e(zAr,"Socket");var GBe=zAr;var Aga=GBe.protocol;var Zan=zd(Net(),1);var Xan=(0,Zan.default)("socket.io-client:url");function esn(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)||(Xan("protocol-less url %s",i),typeof a<"u"?i=a.protocol+"//"+i:i="https://"+i),Xan("parse %s",i),s=WBe(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(esn,"url");var nbr={};RKe(nbr,{Decoder:()=>tbr,Encoder:()=>ebr,PacketType:()=>tE,protocol:()=>fsn});var lsn=zd(NSe(),1);var Nvi=typeof ArrayBuffer=="function",Ovi=e(i=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(i):i.buffer instanceof ArrayBuffer,"isView"),tsn=Object.prototype.toString,Bvi=typeof Blob=="function"||typeof Blob<"u"&&tsn.call(Blob)==="[object BlobConstructor]",Rvi=typeof File=="function"||typeof File<"u"&&tsn.call(File)==="[object FileConstructor]";function Bet(i){return Nvi&&(i instanceof ArrayBuffer||Ovi(i))||Bvi&&i instanceof Blob||Rvi&&i instanceof File}e(Bet,"isBinary");function Oet(i,r){if(!i||typeof i!="object")return!1;if(Array.isArray(i)){for(let a=0,s=i.length;a<s;a++)if(Oet(i[a]))return!0;return!1}if(Bet(i))return!0;if(i.toJSON&&typeof i.toJSON=="function"&&arguments.length===1)return Oet(i.toJSON(),!0);for(let a in i)if(Object.prototype.hasOwnProperty.call(i,a)&&Oet(i[a]))return!0;return!1}e(Oet,"hasBinary");function rsn(i){let r=[],a=i.data,s=i;return s.data=GAr(a,r),s.attachments=r.length,{packet:s,buffers:r}}e(rsn,"deconstructPacket");function GAr(i,r){if(!i)return i;if(Bet(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]=GAr(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]=GAr(i[s],r));return a}return i}e(GAr,"_deconstructPacket");function nsn(i,r){return i.data=KAr(i.data,r),delete i.attachments,i}e(nsn,"reconstructPacket");function KAr(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]=KAr(i[a],r);else if(typeof i=="object")for(let a in i)Object.prototype.hasOwnProperty.call(i,a)&&(i[a]=KAr(i[a],r));return i}e(KAr,"_reconstructPacket");var psn=zd(usn(),1);var ZAr=(0,psn.default)("socket.io-parser"),Xvi=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"],fsn=5,tE;(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"})(tE||(tE={}));var ibr=class ibr{constructor(r){this.replacer=r}encode(r){return ZAr("encoding packet %j",r),(r.type===tE.EVENT||r.type===tE.ACK)&&Oet(r)?this.encodeAsBinary({type:r.type===tE.EVENT?tE.BINARY_EVENT:tE.BINARY_ACK,nsp:r.nsp,data:r.data,id:r.id}):[this.encodeAsString(r)]}encodeAsString(r){let a=""+r.type;return(r.type===tE.BINARY_EVENT||r.type===tE.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)),ZAr("encoded %j as %s",r,a),a}encodeAsBinary(r){let a=rsn(r),s=this.encodeAsString(a.packet),l=a.buffers;return l.unshift(s),l}};e(ibr,"Encoder");var ebr=ibr;function csn(i){return Object.prototype.toString.call(i)==="[object Object]"}e(csn,"isObject");var Twt=class Twt extends lsn.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===tE.BINARY_EVENT;s||a.type===tE.BINARY_ACK?(a.type=s?tE.EVENT:tE.ACK,this.reconstructor=new rbr(a),a.attachments===0&&super.emitReserved("decoded",a)):super.emitReserved("decoded",a)}else if(Bet(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(tE[s.type]===void 0)throw new Error("unknown packet type "+s.type);if(s.type===tE.BINARY_EVENT||s.type===tE.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(Twt.isPayloadValid(s.type,d))s.data=d;else throw new Error("invalid payload")}return ZAr("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 tE.CONNECT:return csn(a);case tE.DISCONNECT:return a===void 0;case tE.CONNECT_ERROR:return typeof a=="string"||csn(a);case tE.EVENT:case tE.BINARY_EVENT:return Array.isArray(a)&&(typeof a[0]=="number"||typeof a[0]=="string"&&Xvi.indexOf(a[0])===-1);case tE.ACK:case tE.BINARY_ACK:return Array.isArray(a)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}};e(Twt,"Decoder");var tbr=Twt,abr=class abr{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=nsn(this.reconPack,this.buffers);return this.finishedReconstruction(),a}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}};e(abr,"BinaryReconstructor");var rbr=abr;function EK(i,r,a){return i.on(r,a),e(function(){i.off(r,a)},"subDestroy")}e(EK,"on");var dsn=zd(NSe(),1),_sn=zd(Net(),1);var kP=(0,_sn.default)("socket.io-client:socket"),Zvi=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1}),sbr=class sbr extends dsn.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=[EK(r,"open",this.onopen.bind(this)),EK(r,"packet",this.onpacket.bind(this)),EK(r,"error",this.onerror.bind(this)),EK(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(Zvi.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:tE.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 R=a.pop();this._registerAckCallback(F,R),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:tE.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 tE.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 tE.EVENT:case tE.BINARY_EVENT:this.onevent(r);break;case tE.ACK:case tE.BINARY_ACK:this.onack(r);break;case tE.DISCONNECT:this.ondisconnect();break;case tE.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:tE.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:tE.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(sbr,"Socket");var KBe=sbr;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 msn=zd(NSe(),1),hsn=zd(Net(),1);var TL=(0,hsn.default)("socket.io-client:manager"),obr=class obr extends msn.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,Ohe(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||nbr;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 GBe(this.uri,this.opts);let a=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;let l=EK(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=EK(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(EK(r,"ping",this.onping.bind(this)),EK(r,"data",this.ondata.bind(this)),EK(r,"error",this.onerror.bind(this)),EK(r,"close",this.onclose.bind(this)),EK(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){Nhe(()=>{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 KBe(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(obr,"Manager");var YBe=obr;var ysn=zd(Net(),1);var gsn=(0,ysn.default)("socket.io-client"),Ret={};function Let(i,r){typeof i=="object"&&(r=i,i=void 0),r=r||{};let a=esn(i,r.path||"/socket.io"),s=a.source,l=a.id,d=a.path,g=Ret[l]&&d in Ret[l].nsps,b=r.forceNew||r["force new connection"]||r.multiplex===!1||g,E;return b?(gsn("ignoring socket cache for %s",s),E=new YBe(s,r)):(Ret[l]||(gsn("new io instance for %s",s),Ret[l]=new YBe(s,r)),E=Ret[l]),a.query&&!r.query&&(r.query=a.queryKey),E.socket(a.path,r)}e(Let,"lookup");Object.assign(Let,{Manager:YBe,Socket:KBe,io:Let,connect:Let});var kwt={URL:"http://localhost:3000",NAMESPACE:"auto-recovery",RECONNECTION_ATTEMPTS:5,RECONNECTION_DELAY:1e3},ubr=class ubr{constructor(r={}){this.socket=null;this.connectionState="disconnected";this.connectionPromise=null;this.resolution=null;this.options=r,this.url=r.url||kwt.URL,this.namespace=r.namespace||kwt.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){try{return await this.connect(),this.emit(r,a,s=>{this.resolveInitialization(s)}),this.initializationPromise}catch(s){throw this.logError("\u274C Failed to start session:",s),this.rejectInitialization(s),s}}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=Let(l,{autoConnect:!0,reconnection:!0,reconnectionAttempts:kwt.RECONNECTION_ATTEMPTS,reconnectionDelay:kwt.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",this.resolution===null&&r==="io server disconnect"&&this.rejectInitialization(r),!a.connectionResolved&&(r==="io server disconnect"||r==="transport close")&&(a.connectionResolved=!0,a.reject(new Error(r)))}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(ubr,"AbstractClient");var Iwt=ubr;var vsn,xsn,Asn,bsn,Esn,Csn,Pwt=class Pwt extends(Csn=Iwt,Esn=wL.names.getState,bsn=wL.names.invokeCode,Asn=wL.names.final_result,xsn=wL.names.wait,vsn=wL.names.getElementScreenshot,Csn){constructor(a,s){super({verbose:F2.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[Esn]=ybe.buildTool(wL,wL.names.getState,async a=>this.getStateHandler(a));this[bsn]=ybe.buildTool(wL,wL.names.invokeCode,async a=>this.invokeCodeHandler(a));this[Asn]=ybe.buildTool(wL,wL.names.final_result,async a=>this.finalResultHandler(a));this[xsn]=ybe.buildTool(wL,wL.names.wait,async a=>this.waitHandler(a));this[vsn]=ybe.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 Failed";return this.utils.createChecksumStep({title:l,withError:!0}),{finalThought:l,stepsThoughts:[],result:"failed"}})}static async build(a){let s=await a.buildFallbackData();return new Pwt(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){this.utils.createChecksumStep({title:"Error while invoking code",withError:!0}),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(Pwt,"AutoRecoveryAgent");var Fwt=Pwt;var Dsn=require("fs"),Ssn=zd(require("path"));var cbr=class cbr extends Iee{constructor(a,s){let l=Iee.getCurrentTestInfo();if(!l)throw new Error("TestRunAnalytics must be initialized with testInfo before FallbackAnalytics can be used");let d=Iee.getCurrentInstance();if(!d)throw new Error("TestRunAnalytics instance not found. Make sure TestRunAnalytics is initialized before creating FallbackAnalytics");let g=d.getTestSuiteRunInfo();super(g,Iee.isolatedMode,l);this.sessionId=null;this.fallbackId=a,this.fallbackType=s}updateToSessionId(a){this.sessionId!==a&&(this.sessionId=a,this.analytics&&this.analytics.alias({userId:a,previousId:this.fallbackId}))}get tableName(){return"auto_recovery"}get metadata(){return{...super.metadata,fallbackType:this.fallbackType,sessionId:this.sessionId||"unknown",fallbackId:this.fallbackId}}event(a){super.trackEventWithTable(a,this.metadata,this.tableName)}setFallbackType(a){this.fallbackType=a}ARStart(){this.event({event:"Auto-Recovery Start",metadata:this.metadata})}ARConfig(a){this.event({event:"Auto-Recovery Config",metadata:this.metadata,...a})}ARGetState(a){this.event({event:"Auto-Recovery State",metadata:this.metadata,thought:a})}ARInvokeCode(a,s){this.event({event:"Auto-Recovery Invoke Code",metadata:this.metadata,thought:a,code:s})}ARFinalResult(a){this.event({event:"Auto-Recovery Final Result",metadata:this.metadata,...a})}autoRecoveryDisconnect(a){this.event({event:"Auto-Recovery Disconnect",metadata:this.metadata,...a})}ARFinish(a){this.event({event:"Auto-Recovery Finish",metadata:this.metadata,...a})}ARError(a){this.event({event:"Auto-Recovery Error",metadata:this.metadata,...a})}};e(cbr,"AutoRecoveryAnalytics");var Nwt=cbr;var qSe=class qSe{constructor({page:r,evaluateWithChecksum:a,checksumPage:s,pageInteractor:l,arConfig:d,sessionId:g,runtimeFallbackData:b,fallbackData:E,variableStore:S}){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 Nwt(this.sessionId,E.type)}static async start(r){return new qSe({...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,Dsn.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),R=F instanceof HTMLOptionElement&&F.value?F.value:void 0;return{selector:l,locator:d,clickOffset:g,selectOptionValue:R,parentFramesSelectors:b,invalid:E,rrwebId:S}},r)}async getReducedHtml(r=qSe.currentChecksumId){let{reducedHTML:a,currentChecksumId:s}=await this.pageInteractor.getCurrentReducedHTML({stopFlashingElementsDetection:!0,assignChecksumIdsToAllElements:!0,initialChecksumId:r});return qSe.currentChecksumId=s,{reducedHTML:a,currentChecksumId:s}}async getApplicationState(){let{reducedHTML:r}=await this.getReducedHtml();return{reducedHTML:r,screenshot:await this.getPageScreenshot()}}async buildFallbackData(){let{reducedHTML:r,currentChecksumId:a}=await this.getReducedHtml();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:r,screenshot:await this.getPageScreenshot()},stepData:{matcher:this.getMatcherResultFileData(this.fallbackData.error)},currentChecksumId:a,failingStepThought:this.runtimeFallbackData.thoughts.failing,type:this.fallbackData.type,config:this.runtimeFallbackData.config,sessionId:this.runtimeFallbackData.testIdentification.testId,variableStore:this.variableStore.reduce((s,l)=>(s[`variablesStore.${l.name}`]=l.value,s),{})}}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.modelPreset)==null?void 0:s.type)==="anthropic-vertexai"?"jpeg":"png"})).toString("base64")})}catch{return}}async getErrorFileContent(r){try{let a=Ssn.default.dirname(this.runtimeFallbackData.testIdentification.testFileName);return aNe.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 R=/variables?Store\.([a-zA-Z_$][a-zA-Z0-9_$]*)/g,N=null;for(;(N=R.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}:
1596
1596
  ${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.modelPreset)==null?void 0:a.type)==="anthropic-vertexai"?"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(qSe,"AutoRecoveryRuntimeIteratorUtils"),qSe.currentChecksumId="0";var Owt=qSe;var XBe=class XBe extends the{init(r){return this.initializationData=r,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}${XBe.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 XBe.registerSession(this.initializationData);this.utils=new Owt({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 Fwt.build(this.utils)}catch{throw new Error("Failed to prepare ARFallback")}}async resolve(r){let a=Date.now();await this.prepareSession(r),this.utils.analytics.ARStart();let s=await this.agent.init();return this.utils.analytics.ARFinish({duration:Date.now()-a}),{fbResult:s.result,thought:s.finalThought,stepsThoughts:s.stepsThoughts,steps:[]}}};e(XBe,"ARFallback"),XBe.API_BASE_ROUTE="/auto-recovery";var lbr=XBe;var Y2a=1e3*30;var Ebe={defaultMerge:Symbol("deepmerge-ts: default merge"),skip:Symbol("deepmerge-ts: skip")},tva={defaultMerge:Ebe.defaultMerge};function uxi(i,r){return r}e(uxi,"defaultMetaDataUpdater");function cxi(i,r){return i.filter(a=>a!==void 0)}e(cxi,"defaultFilterValues");var wsn;(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"})(wsn||(wsn={}));function Tsn(i){return typeof i!="object"||i===null?0:Array.isArray(i)?2:fxi(i)?1:i instanceof Set?3:i instanceof Map?4:5}e(Tsn,"getObjectType");function lxi(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(lxi,"getKeys");function pxi(i,r){return typeof i=="object"&&Object.prototype.propertyIsEnumerable.call(i,r)}e(pxi,"objectHasProperty");function Isn(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(Isn,"getIterableOfIterables");var ksn=["[object Object]","[object Module]"];function fxi(i){if(!ksn.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"||!ksn.includes(Object.prototype.toString.call(a))||!a.hasOwnProperty("isPrototypeOf"))}e(fxi,"isRecord");function dxi(i,r,a){let s={};for(let l of lxi(i)){let d=[];for(let E of i)pxi(E,l)&&d.push(E[l]);if(d.length===0)continue;let g=r.metaDataUpdater(a,{key:l,parents:i}),b=Psn(d,r,g);b!==Ebe.skip&&(l==="__proto__"?Object.defineProperty(s,l,{value:b,configurable:!0,enumerable:!0,writable:!0}):s[l]=b)}return s}e(dxi,"mergeRecords$1");function _xi(i){return i.flat()}e(_xi,"mergeArrays$1");function mxi(i){return new Set(Isn(i))}e(mxi,"mergeSets$1");function hxi(i){return new Map(Isn(i))}e(hxi,"mergeMaps$1");function gxi(i){return i.at(-1)}e(gxi,"mergeOthers$1");var Bwt={mergeRecords:dxi,mergeArrays:_xi,mergeSets:mxi,mergeMaps:hxi,mergeOthers:gxi};function Fsn(...i){return yxi({})(...i)}e(Fsn,"deepmerge");function yxi(i,r){let a=vxi(i,s);function s(...l){return Psn(l,a,r)}return e(s,"customizedDeepmerge"),s}e(yxi,"deepmergeCustom");function vxi(i,r){return{defaultMergeFunctions:Bwt,mergeFunctions:{...Bwt,...Object.fromEntries(Object.entries(i).filter(([a,s])=>Object.hasOwn(Bwt,a)).map(([a,s])=>s===!1?[a,Bwt.mergeOthers]:[a,s]))},metaDataUpdater:i.metaDataUpdater??uxi,deepmerge:r,useImplicitDefaultMerging:i.enableImplicitDefaultMerging??!1,filterValues:i.filterValues===!1?void 0:i.filterValues??cxi,actions:Ebe}}e(vxi,"getUtils");function Psn(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 fbr(s,r,a);let l=Tsn(s[0]);if(l!==0&&l!==5){for(let g=1;g<s.length;g++)if(Tsn(s[g])!==l)return fbr(s,r,a)}switch(l){case 1:return xxi(s,r,a);case 2:return Axi(s,r,a);case 3:return bxi(s,r,a);case 4:return Exi(s,r,a);default:return fbr(s,r,a)}}e(Psn,"mergeUnknowns");function xxi(i,r,a){let s=r.mergeFunctions.mergeRecords(i,r,a);return s===Ebe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeRecords!==r.defaultMergeFunctions.mergeRecords?r.defaultMergeFunctions.mergeRecords(i,r,a):s}e(xxi,"mergeRecords");function Axi(i,r,a){let s=r.mergeFunctions.mergeArrays(i,r,a);return s===Ebe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeArrays!==r.defaultMergeFunctions.mergeArrays?r.defaultMergeFunctions.mergeArrays(i):s}e(Axi,"mergeArrays");function bxi(i,r,a){let s=r.mergeFunctions.mergeSets(i,r,a);return s===Ebe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeSets!==r.defaultMergeFunctions.mergeSets?r.defaultMergeFunctions.mergeSets(i):s}e(bxi,"mergeSets");function Exi(i,r,a){let s=r.mergeFunctions.mergeMaps(i,r,a);return s===Ebe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeMaps!==r.defaultMergeFunctions.mergeMaps?r.defaultMergeFunctions.mergeMaps(i):s}e(Exi,"mergeMaps");function fbr(i,r,a){let s=r.mergeFunctions.mergeOthers(i,r,a);return s===Ebe.defaultMerge||r.useImplicitDefaultMerging&&s===void 0&&r.mergeFunctions.mergeOthers!==r.defaultMergeFunctions.mergeOthers?r.defaultMergeFunctions.mergeOthers(i):s}e(fbr,"mergeOthers");var Nsn=!1;function pbr(i){Nsn=i}e(pbr,"setLogToConsole");function hw(...i){Nsn&&console.log(...i)}e(hw,"log");async function A$r(i,r,a,s=6e4){if(!(r in i))return i;let l=e(()=>i[r](...a),"executor");return s===null?l():C8(l(),s,"Execution timeout")}e(A$r,"executePlaywrightMethodWithTimeout");var Rwt;function Osn(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),Rwt=Fsn(r,i),F2.testRun.disableAutoRecovery&&(Rwt.options.useChecksumAI={actions:!1,assertions:!1,visualComparison:!1}),F2.testRun.disableHostReports&&(Rwt.options.hostReports=!1),Rwt}e(Osn,"getChecksumConfig");var iXe="Checksum failed connecting to the server";var hvn=zd(require("child_process")),DDr=require("crypto"),skt=require("fs"),a1e=require("path");var Lwt=(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))(Lwt||{});var Cbe=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"),Bsn=e(i=>i.name==="space","isSpaceKey"),eRe=e(i=>i.name==="backspace","isBackspaceKey"),Mwt=e(i=>"123456789".includes(i.name),"isNumberKey"),SI=e(i=>i.name==="enter"||i.name==="return","isEnterKey");var dbr=class dbr extends Error{name="AbortPromptError";message="Prompt was aborted";constructor(r){super(),this.cause=r==null?void 0:r.cause}};e(dbr,"AbortPromptError");var jwt=dbr,_br=class _br extends Error{name="CancelPromptError";message="Prompt was canceled"};e(_br,"CancelPromptError");var Uwt=_br,mbr=class mbr extends Error{name="ExitPromptError"};e(mbr,"ExitPromptError");var Qwt=mbr,hbr=class hbr extends Error{name="HookError"};e(hbr,"HookError");var qwt=hbr,gbr=class gbr extends Error{name="ValidationError"};e(gbr,"ValidationError");var Dbe=gbr;var Abr=require("async_hooks");var $wt=require("async_hooks");var Rsn=new $wt.AsyncLocalStorage;function Cxi(i){return{rl:i,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}e(Cxi,"createStore");function Lsn(i,r){let a=Cxi(i);return Rsn.run(a,()=>{function s(l){a.handleChange=()=>{a.index=0,l()},a.handleChange()}return e(s,"cycle"),r(s)})}e(Lsn,"withHooks");function $Se(){let i=Rsn.getStore();if(!i)throw new qwt("[Inquirer] Hook functions can only be called from within a prompt");return i}e($Se,"getStore");function ybr(){return $Se().rl}e(ybr,"readline");function vbr(i){let r=e((...a)=>{let s=$Se(),l=!1,d=s.handleChange;s.handleChange=()=>{l=!0};let g=i(...a);return l&&d(),s.handleChange=d,g},"wrapped");return $wt.AsyncResource.bind(r)}e(vbr,"withUpdates");function tRe(i){let r=$Se(),{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 Msn(){$Se().handleChange()}e(Msn,"handleChange");var VSe={queue(i){let r=$Se(),{index:a}=r;r.hooksEffect.push(()=>{var l,d;(d=(l=r.hooksCleanup)[a])==null||d.call(l);let s=i(ybr());if(s!=null&&typeof s!="function")throw new Dbe("useEffect return value must be a cleanup function or nothing.");r.hooksCleanup[a]=s})},run(){let i=$Se();vbr(()=>{i.hooksEffect.forEach(r=>{r()}),i.hooksEffect.length=0})()},clearAll(){let i=$Se();i.hooksCleanup.forEach(r=>{r==null||r()}),i.hooksEffect.length=0,i.hooksCleanup.length=0}};function N2(i){return tRe(r=>{let a=e(l=>{r.get()!==l&&(r.set(l),Msn())},"setFn");if(r.initialized)return[r.get(),a];let s=typeof i=="function"?i():i;return r.set(s),[s,a]})}e(N2,"useState");function ese(i,r){tRe(a=>{let s=a.get();(!Array.isArray(s)||r.some((d,g)=>!Object.is(d,s[g])))&&VSe.queue(i),a.set(r)})}e(ese,"useEffect");var cte=zd(Sbe(),1);var tse=zd(require("process"),1);function Sxi(){return tse.default.platform!=="win32"?tse.default.env.TERM!=="linux":!!tse.default.env.WT_SESSION||!!tse.default.env.TERMINUS_SUBLIME||tse.default.env.ConEmuTask==="{cmd::Cmder}"||tse.default.env.TERM_PROGRAM==="Terminus-Sublime"||tse.default.env.TERM_PROGRAM==="vscode"||tse.default.env.TERM==="xterm-256color"||tse.default.env.TERM==="alacritty"||tse.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}e(Sxi,"isUnicodeSupported");var qsn={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"},$sn={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"},wxi={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"},Txi={...qsn,...$sn},kxi={...qsn,...wxi},Ixi=Sxi(),Fxi=Ixi?Txi:kxi,ute=Fxi,wva=Object.entries($sn);var Vsn={prefix:{idle:cte.default.blue("?"),done:cte.default.green(ute.tick)},spinner:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"].map(i=>cte.default.yellow(i))},style:{answer:cte.default.cyan,message:cte.default.bold,error:e(i=>cte.default.red(`> ${i}`),"error"),defaultAnswer:e(i=>cte.default.dim(`(${i})`),"defaultAnswer"),help:cte.default.dim,highlight:cte.default.cyan,key:e(i=>cte.default.cyan(cte.default.bold(`<${i}>`)),"key")}};function Jsn(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(Jsn,"isPlainObject");function zsn(...i){let r={};for(let a of i)for(let[s,l]of Object.entries(a)){let d=r[s];r[s]=Jsn(d)&&Jsn(l)?zsn(d,l):l}return r}e(zsn,"deepMerge");function I8(...i){let r=[Vsn,...i.filter(a=>a!=null)];return zsn(...r)}e(I8,"makeTheme");function yk({status:i="idle",theme:r}){let[a,s]=N2(!1),[l,d]=N2(0),{prefix:g,spinner:b}=I8(r);return ese(()=>{if(i==="loading"){let S,F=-1,R=setTimeout(Abr.AsyncResource.bind(()=>{s(!0),S=setInterval(Abr.AsyncResource.bind(()=>{F=F+1,d(F%b.frames.length)}),b.interval)}),300);return()=>{clearTimeout(R),clearInterval(S)}}else s(!1)},[i]),a?b.frames[l]:typeof g=="string"?g:g[i==="loading"?"idle":i]??g.idle}e(yk,"usePrefix");function CK(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(CK,"useMemo");function lte(i){return N2({current:i})[0]}e(lte,"useRef");function vk(i){let r=lte(i);r.current=i,ese(a=>{let s=!1,l=vbr((d,g)=>{s||r.current(g,a)});return a.input.on("keypress",l),()=>{s=!0,a.input.removeListener("keypress",l)}},[])}e(vk,"useKeypress");var Aon=zd(Hsn(),1),bon=zd(xon(),1);function Uet(i,r){return i.split(`
1597
1597
  `).flatMap(a=>(0,bon.default)(a,r,{trim:!1,hard:!0}).split(`
1598
1598
  `).map(s=>s.trimEnd())).join(`