@mearl/native-host 2.15.0 → 2.15.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +2 -0
  2. package/dist/index.js +18 -17
  3. package/package.json +6 -6
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropD
4
4
  `).join(`
5
5
  `+prefix),args.push(colorCode+"m+"+module.exports.humanize(this.diff)+"\x1B[0m")}else args[0]=getDate()+name+" "+args[0]}function getDate(){return exports.inspectOpts.hideDate?"":new Date().toISOString()+" "}function log2(...args){return process.stderr.write(util.formatWithOptions(exports.inspectOpts,...args)+`
6
6
  `)}function save(namespaces){namespaces?process.env.DEBUG=namespaces:delete process.env.DEBUG}function load(){return process.env.DEBUG}function init(debug){debug.inspectOpts={};let keys=Object.keys(exports.inspectOpts);for(let i=0;i<keys.length;i++)debug.inspectOpts[keys[i]]=exports.inspectOpts[keys[i]]}module.exports=require_common()(exports);var{formatters}=module.exports;formatters.o=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts).split(`
7
- `).map(str=>str.trim()).join(" ")};formatters.O=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts)}}});var require_src=__commonJS({"../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/index.js"(exports,module){typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?module.exports=require_browser():module.exports=require_node()}});var require_wrappy=__commonJS({"../../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js"(exports,module){module.exports=wrappy;function wrappy(fn,cb){if(fn&&cb)return wrappy(fn)(cb);if(typeof fn!="function")throw new TypeError("need wrapper function");return Object.keys(fn).forEach(function(k){wrapper[k]=fn[k]}),wrapper;function wrapper(){for(var args=new Array(arguments.length),i=0;i<args.length;i++)args[i]=arguments[i];var ret=fn.apply(this,args),cb2=args[args.length-1];return typeof ret=="function"&&ret!==cb2&&Object.keys(cb2).forEach(function(k){ret[k]=cb2[k]}),ret}}}});var require_once=__commonJS({"../../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js"(exports,module){var wrappy=require_wrappy();module.exports=wrappy(once);module.exports.strict=wrappy(onceStrict);once.proto=once(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return once(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return onceStrict(this)},configurable:!0})});function once(fn){var f=function(){return f.called?f.value:(f.called=!0,f.value=fn.apply(this,arguments))};return f.called=!1,f}function onceStrict(fn){var f=function(){if(f.called)throw new Error(f.onceError);return f.called=!0,f.value=fn.apply(this,arguments)},name=fn.name||"Function wrapped with `once`";return f.onceError=name+" shouldn't be called more than once",f.called=!1,f}}});var require_end_of_stream=__commonJS({"../../node_modules/.pnpm/end-of-stream@1.4.5/node_modules/end-of-stream/index.js"(exports,module){var once=require_once(),noop=function(){},qnt=global.Bare?queueMicrotask:process.nextTick.bind(process),isRequest=function(stream){return stream.setHeader&&typeof stream.abort=="function"},isChildProcess=function(stream){return stream.stdio&&Array.isArray(stream.stdio)&&stream.stdio.length===3},eos=function(stream,opts,callback){if(typeof opts=="function")return eos(stream,null,opts);opts||(opts={}),callback=once(callback||noop);var ws=stream._writableState,rs=stream._readableState,readable=opts.readable||opts.readable!==!1&&stream.readable,writable=opts.writable||opts.writable!==!1&&stream.writable,cancelled=!1,onlegacyfinish=function(){stream.writable||onfinish()},onfinish=function(){writable=!1,readable||callback.call(stream)},onend=function(){readable=!1,writable||callback.call(stream)},onexit=function(exitCode){callback.call(stream,exitCode?new Error("exited with error code: "+exitCode):null)},onerror=function(err){callback.call(stream,err)},onclose=function(){qnt(onclosenexttick)},onclosenexttick=function(){if(!cancelled){if(readable&&!(rs&&rs.ended&&!rs.destroyed))return callback.call(stream,new Error("premature close"));if(writable&&!(ws&&ws.ended&&!ws.destroyed))return callback.call(stream,new Error("premature close"))}},onrequest=function(){stream.req.on("finish",onfinish)};return isRequest(stream)?(stream.on("complete",onfinish),stream.on("abort",onclose),stream.req?onrequest():stream.on("request",onrequest)):writable&&!ws&&(stream.on("end",onlegacyfinish),stream.on("close",onlegacyfinish)),isChildProcess(stream)&&stream.on("exit",onexit),stream.on("end",onend),stream.on("finish",onfinish),opts.error!==!1&&stream.on("error",onerror),stream.on("close",onclose),function(){cancelled=!0,stream.removeListener("complete",onfinish),stream.removeListener("abort",onclose),stream.removeListener("request",onrequest),stream.req&&stream.req.removeListener("finish",onfinish),stream.removeListener("end",onlegacyfinish),stream.removeListener("close",onlegacyfinish),stream.removeListener("finish",onfinish),stream.removeListener("exit",onexit),stream.removeListener("end",onend),stream.removeListener("error",onerror),stream.removeListener("close",onclose)}};module.exports=eos}});var require_pump=__commonJS({"../../node_modules/.pnpm/pump@3.0.4/node_modules/pump/index.js"(exports,module){var once=require_once(),eos=require_end_of_stream(),fs19;try{fs19=__require("fs")}catch{}var noop=function(){},ancient=typeof process>"u"?!1:/^v?\.0/.test(process.version),isFn=function(fn){return typeof fn=="function"},isFS=function(stream){return!ancient||!fs19?!1:(stream instanceof(fs19.ReadStream||noop)||stream instanceof(fs19.WriteStream||noop))&&isFn(stream.close)},isRequest=function(stream){return stream.setHeader&&isFn(stream.abort)},destroyer=function(stream,reading,writing,callback){callback=once(callback);var closed=!1;stream.on("close",function(){closed=!0}),eos(stream,{readable:reading,writable:writing},function(err){if(err)return callback(err);closed=!0,callback()});var destroyed=!1;return function(err){if(!closed&&!destroyed){if(destroyed=!0,isFS(stream))return stream.close(noop);if(isRequest(stream))return stream.abort();if(isFn(stream.destroy))return stream.destroy();callback(err||new Error("stream was destroyed"))}}},call=function(fn){fn()},pipe2=function(from,to){return from.pipe(to)},pump=function(){var streams=Array.prototype.slice.call(arguments),callback=isFn(streams[streams.length-1]||noop)&&streams.pop()||noop;if(Array.isArray(streams[0])&&(streams=streams[0]),streams.length<2)throw new Error("pump requires two streams per minimum");var error48,destroys=streams.map(function(stream,i){var reading=i<streams.length-1,writing=i>0;return destroyer(stream,reading,writing,function(err){error48||(error48=err),err&&destroys.forEach(call),!reading&&(destroys.forEach(call),callback(error48))})});return streams.reduce(pipe2)};module.exports=pump}});var require_buffer_stream=__commonJS({"../../node_modules/.pnpm/get-stream@5.2.0/node_modules/get-stream/buffer-stream.js"(exports,module){"use strict";var{PassThrough:PassThroughStream}=__require("stream");module.exports=options=>{options={...options};let{array:array2}=options,{encoding}=options,isBuffer=encoding==="buffer",objectMode=!1;array2?objectMode=!(encoding||isBuffer):encoding=encoding||"utf8",isBuffer&&(encoding=null);let stream=new PassThroughStream({objectMode});encoding&&stream.setEncoding(encoding);let length=0,chunks=[];return stream.on("data",chunk=>{chunks.push(chunk),objectMode?length=chunks.length:length+=chunk.length}),stream.getBufferedValue=()=>array2?chunks:isBuffer?Buffer.concat(chunks,length):chunks.join(""),stream.getBufferedLength=()=>length,stream}}});var require_get_stream=__commonJS({"../../node_modules/.pnpm/get-stream@5.2.0/node_modules/get-stream/index.js"(exports,module){"use strict";var{constants:BufferConstants}=__require("buffer"),pump=require_pump(),bufferStream=require_buffer_stream(),MaxBufferError=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function getStream(inputStream,options){if(!inputStream)return Promise.reject(new Error("Expected a stream"));options={maxBuffer:1/0,...options};let{maxBuffer}=options,stream;return await new Promise((resolve2,reject)=>{let rejectPromise=error48=>{error48&&stream.getBufferedLength()<=BufferConstants.MAX_LENGTH&&(error48.bufferedData=stream.getBufferedValue()),reject(error48)};stream=pump(inputStream,bufferStream(options),error48=>{if(error48){rejectPromise(error48);return}resolve2()}),stream.on("data",()=>{stream.getBufferedLength()>maxBuffer&&rejectPromise(new MaxBufferError)})}),stream.getBufferedValue()}module.exports=getStream;module.exports.default=getStream;module.exports.buffer=(stream,options)=>getStream(stream,{...options,encoding:"buffer"});module.exports.array=(stream,options)=>getStream(stream,{...options,array:!0});module.exports.MaxBufferError=MaxBufferError}});var require_pend=__commonJS({"../../node_modules/.pnpm/pend@1.2.0/node_modules/pend/index.js"(exports,module){module.exports=Pend;function Pend(){this.pending=0,this.max=1/0,this.listeners=[],this.waiting=[],this.error=null}Pend.prototype.go=function(fn){this.pending<this.max?pendGo(this,fn):this.waiting.push(fn)};Pend.prototype.wait=function(cb){this.pending===0?cb(this.error):this.listeners.push(cb)};Pend.prototype.hold=function(){return pendHold(this)};function pendHold(self){self.pending+=1;var called=!1;return onCb;function onCb(err){if(called)throw new Error("callback called twice");if(called=!0,self.error=self.error||err,self.pending-=1,self.waiting.length>0&&self.pending<self.max)pendGo(self,self.waiting.shift());else if(self.pending===0){var listeners=self.listeners;self.listeners=[],listeners.forEach(cbListener)}}function cbListener(listener){listener(self.error)}}function pendGo(self,fn){fn(pendHold(self))}}});var require_fd_slicer=__commonJS({"../../node_modules/.pnpm/fd-slicer@1.1.0/node_modules/fd-slicer/index.js"(exports){var fs19=__require("fs"),util=__require("util"),stream=__require("stream"),Readable2=stream.Readable,Writable2=stream.Writable,PassThrough=stream.PassThrough,Pend=require_pend(),EventEmitter=__require("events").EventEmitter;exports.createFromBuffer=createFromBuffer;exports.createFromFd=createFromFd;exports.BufferSlicer=BufferSlicer;exports.FdSlicer=FdSlicer;util.inherits(FdSlicer,EventEmitter);function FdSlicer(fd,options){options=options||{},EventEmitter.call(this),this.fd=fd,this.pend=new Pend,this.pend.max=1,this.refCount=0,this.autoClose=!!options.autoClose}FdSlicer.prototype.read=function(buffer,offset,length,position,callback){var self=this;self.pend.go(function(cb){fs19.read(self.fd,buffer,offset,length,position,function(err,bytesRead,buffer2){cb(),callback(err,bytesRead,buffer2)})})};FdSlicer.prototype.write=function(buffer,offset,length,position,callback){var self=this;self.pend.go(function(cb){fs19.write(self.fd,buffer,offset,length,position,function(err,written,buffer2){cb(),callback(err,written,buffer2)})})};FdSlicer.prototype.createReadStream=function(options){return new ReadStream(this,options)};FdSlicer.prototype.createWriteStream=function(options){return new WriteStream(this,options)};FdSlicer.prototype.ref=function(){this.refCount+=1};FdSlicer.prototype.unref=function(){var self=this;if(self.refCount-=1,self.refCount>0)return;if(self.refCount<0)throw new Error("invalid unref");self.autoClose&&fs19.close(self.fd,onCloseDone);function onCloseDone(err){err?self.emit("error",err):self.emit("close")}};util.inherits(ReadStream,Readable2);function ReadStream(context,options){options=options||{},Readable2.call(this,options),this.context=context,this.context.ref(),this.start=options.start||0,this.endOffset=options.end,this.pos=this.start,this.destroyed=!1}ReadStream.prototype._read=function(n){var self=this;if(!self.destroyed){var toRead=Math.min(self._readableState.highWaterMark,n);if(self.endOffset!=null&&(toRead=Math.min(toRead,self.endOffset-self.pos)),toRead<=0){self.destroyed=!0,self.push(null),self.context.unref();return}self.context.pend.go(function(cb){if(self.destroyed)return cb();var buffer=new Buffer(toRead);fs19.read(self.context.fd,buffer,0,toRead,self.pos,function(err,bytesRead){err?self.destroy(err):bytesRead===0?(self.destroyed=!0,self.push(null),self.context.unref()):(self.pos+=bytesRead,self.push(buffer.slice(0,bytesRead))),cb()})})}};ReadStream.prototype.destroy=function(err){this.destroyed||(err=err||new Error("stream destroyed"),this.destroyed=!0,this.emit("error",err),this.context.unref())};util.inherits(WriteStream,Writable2);function WriteStream(context,options){options=options||{},Writable2.call(this,options),this.context=context,this.context.ref(),this.start=options.start||0,this.endOffset=options.end==null?1/0:+options.end,this.bytesWritten=0,this.pos=this.start,this.destroyed=!1,this.on("finish",this.destroy.bind(this))}WriteStream.prototype._write=function(buffer,encoding,callback){var self=this;if(!self.destroyed){if(self.pos+buffer.length>self.endOffset){var err=new Error("maximum file length exceeded");err.code="ETOOBIG",self.destroy(),callback(err);return}self.context.pend.go(function(cb){if(self.destroyed)return cb();fs19.write(self.context.fd,buffer,0,buffer.length,self.pos,function(err2,bytes){err2?(self.destroy(),cb(),callback(err2)):(self.bytesWritten+=bytes,self.pos+=bytes,self.emit("progress"),cb(),callback())})})}};WriteStream.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.context.unref())};util.inherits(BufferSlicer,EventEmitter);function BufferSlicer(buffer,options){EventEmitter.call(this),options=options||{},this.refCount=0,this.buffer=buffer,this.maxChunkSize=options.maxChunkSize||Number.MAX_SAFE_INTEGER}BufferSlicer.prototype.read=function(buffer,offset,length,position,callback){var end=position+length,delta=end-this.buffer.length,written=delta>0?delta:length;this.buffer.copy(buffer,offset,position,end),setImmediate(function(){callback(null,written)})};BufferSlicer.prototype.write=function(buffer,offset,length,position,callback){buffer.copy(this.buffer,position,offset,offset+length),setImmediate(function(){callback(null,length,buffer)})};BufferSlicer.prototype.createReadStream=function(options){options=options||{};var readStream=new PassThrough(options);readStream.destroyed=!1,readStream.start=options.start||0,readStream.endOffset=options.end,readStream.pos=readStream.endOffset||this.buffer.length;for(var entireSlice=this.buffer.slice(readStream.start,readStream.pos),offset=0;;){var nextOffset=offset+this.maxChunkSize;if(nextOffset>=entireSlice.length){offset<entireSlice.length&&readStream.write(entireSlice.slice(offset,entireSlice.length));break}readStream.write(entireSlice.slice(offset,nextOffset)),offset=nextOffset}return readStream.end(),readStream.destroy=function(){readStream.destroyed=!0},readStream};BufferSlicer.prototype.createWriteStream=function(options){var bufferSlicer=this;options=options||{};var writeStream=new Writable2(options);return writeStream.start=options.start||0,writeStream.endOffset=options.end==null?this.buffer.length:+options.end,writeStream.bytesWritten=0,writeStream.pos=writeStream.start,writeStream.destroyed=!1,writeStream._write=function(buffer,encoding,callback){if(!writeStream.destroyed){var end=writeStream.pos+buffer.length;if(end>writeStream.endOffset){var err=new Error("maximum file length exceeded");err.code="ETOOBIG",writeStream.destroyed=!0,callback(err);return}buffer.copy(bufferSlicer.buffer,writeStream.pos,0,buffer.length),writeStream.bytesWritten+=buffer.length,writeStream.pos=end,writeStream.emit("progress"),callback()}},writeStream.destroy=function(){writeStream.destroyed=!0},writeStream};BufferSlicer.prototype.ref=function(){this.refCount+=1};BufferSlicer.prototype.unref=function(){if(this.refCount-=1,this.refCount<0)throw new Error("invalid unref")};function createFromBuffer(buffer,options){return new BufferSlicer(buffer,options)}function createFromFd(fd,options){return new FdSlicer(fd,options)}}});var require_buffer_crc32=__commonJS({"../../node_modules/.pnpm/buffer-crc32@0.2.13/node_modules/buffer-crc32/index.js"(exports,module){var Buffer2=__require("buffer").Buffer,CRC_TABLE=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];typeof Int32Array<"u"&&(CRC_TABLE=new Int32Array(CRC_TABLE));function ensureBuffer(input){if(Buffer2.isBuffer(input))return input;var hasNewBufferAPI=typeof Buffer2.alloc=="function"&&typeof Buffer2.from=="function";if(typeof input=="number")return hasNewBufferAPI?Buffer2.alloc(input):new Buffer2(input);if(typeof input=="string")return hasNewBufferAPI?Buffer2.from(input):new Buffer2(input);throw new Error("input must be buffer, number, or string, received "+typeof input)}function bufferizeInt(num){var tmp=ensureBuffer(4);return tmp.writeInt32BE(num,0),tmp}function _crc32(buf,previous){buf=ensureBuffer(buf),Buffer2.isBuffer(previous)&&(previous=previous.readUInt32BE(0));for(var crc=~~previous^-1,n=0;n<buf.length;n++)crc=CRC_TABLE[(crc^buf[n])&255]^crc>>>8;return crc^-1}function crc32(){return bufferizeInt(_crc32.apply(null,arguments))}crc32.signed=function(){return _crc32.apply(null,arguments)};crc32.unsigned=function(){return _crc32.apply(null,arguments)>>>0};module.exports=crc32}});var require_yauzl=__commonJS({"../../node_modules/.pnpm/yauzl@2.10.0/node_modules/yauzl/index.js"(exports){var fs19=__require("fs"),zlib=__require("zlib"),fd_slicer=require_fd_slicer(),crc32=require_buffer_crc32(),util=__require("util"),EventEmitter=__require("events").EventEmitter,Transform=__require("stream").Transform,PassThrough=__require("stream").PassThrough,Writable2=__require("stream").Writable;exports.open=open2;exports.fromFd=fromFd;exports.fromBuffer=fromBuffer;exports.fromRandomAccessReader=fromRandomAccessReader;exports.dosDateTimeToDate=dosDateTimeToDate;exports.validateFileName=validateFileName;exports.ZipFile=ZipFile;exports.Entry=Entry;exports.RandomAccessReader=RandomAccessReader;function open2(path19,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose==null&&(options.autoClose=!0),options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0),options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1),callback==null&&(callback=defaultCallback),fs19.open(path19,"r",function(err,fd){if(err)return callback(err);fromFd(fd,options,function(err2,zipfile){err2&&fs19.close(fd,defaultCallback),callback(err2,zipfile)})})}function fromFd(fd,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose==null&&(options.autoClose=!1),options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0),options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1),callback==null&&(callback=defaultCallback),fs19.fstat(fd,function(err,stats){if(err)return callback(err);var reader=fd_slicer.createFromFd(fd,{autoClose:!0});fromRandomAccessReader(reader,stats.size,options,callback)})}function fromBuffer(buffer,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose=!1,options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0),options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1);var reader=fd_slicer.createFromBuffer(buffer,{maxChunkSize:65536});fromRandomAccessReader(reader,buffer.length,options,callback)}function fromRandomAccessReader(reader,totalSize,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose==null&&(options.autoClose=!0),options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0);var decodeStrings=!!options.decodeStrings;if(options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1),callback==null&&(callback=defaultCallback),typeof totalSize!="number")throw new Error("expected totalSize parameter to be a number");if(totalSize>Number.MAX_SAFE_INTEGER)throw new Error("zip file too large. only file sizes up to 2^52 are supported due to JavaScript's Number type being an IEEE 754 double.");reader.ref();var eocdrWithoutCommentSize=22,maxCommentSize=65535,bufferSize=Math.min(eocdrWithoutCommentSize+maxCommentSize,totalSize),buffer=newBuffer(bufferSize),bufferReadStart=totalSize-buffer.length;readAndAssertNoEof(reader,buffer,0,bufferSize,bufferReadStart,function(err){if(err)return callback(err);for(var i=bufferSize-eocdrWithoutCommentSize;i>=0;i-=1)if(buffer.readUInt32LE(i)===101010256){var eocdrBuffer=buffer.slice(i),diskNumber=eocdrBuffer.readUInt16LE(4);if(diskNumber!==0)return callback(new Error("multi-disk zip files are not supported: found disk number: "+diskNumber));var entryCount=eocdrBuffer.readUInt16LE(10),centralDirectoryOffset=eocdrBuffer.readUInt32LE(16),commentLength=eocdrBuffer.readUInt16LE(20),expectedCommentLength=eocdrBuffer.length-eocdrWithoutCommentSize;if(commentLength!==expectedCommentLength)return callback(new Error("invalid comment length. expected: "+expectedCommentLength+". found: "+commentLength));var comment=decodeStrings?decodeBuffer(eocdrBuffer,22,eocdrBuffer.length,!1):eocdrBuffer.slice(22);if(!(entryCount===65535||centralDirectoryOffset===4294967295))return callback(null,new ZipFile(reader,centralDirectoryOffset,totalSize,entryCount,comment,options.autoClose,options.lazyEntries,decodeStrings,options.validateEntrySizes,options.strictFileNames));var zip64EocdlBuffer=newBuffer(20),zip64EocdlOffset=bufferReadStart+i-zip64EocdlBuffer.length;readAndAssertNoEof(reader,zip64EocdlBuffer,0,zip64EocdlBuffer.length,zip64EocdlOffset,function(err2){if(err2)return callback(err2);if(zip64EocdlBuffer.readUInt32LE(0)!==117853008)return callback(new Error("invalid zip64 end of central directory locator signature"));var zip64EocdrOffset=readUInt64LE(zip64EocdlBuffer,8),zip64EocdrBuffer=newBuffer(56);readAndAssertNoEof(reader,zip64EocdrBuffer,0,zip64EocdrBuffer.length,zip64EocdrOffset,function(err3){return err3?callback(err3):zip64EocdrBuffer.readUInt32LE(0)!==101075792?callback(new Error("invalid zip64 end of central directory record signature")):(entryCount=readUInt64LE(zip64EocdrBuffer,32),centralDirectoryOffset=readUInt64LE(zip64EocdrBuffer,48),callback(null,new ZipFile(reader,centralDirectoryOffset,totalSize,entryCount,comment,options.autoClose,options.lazyEntries,decodeStrings,options.validateEntrySizes,options.strictFileNames)))})});return}callback(new Error("end of central directory record signature not found"))})}util.inherits(ZipFile,EventEmitter);function ZipFile(reader,centralDirectoryOffset,fileSize,entryCount,comment,autoClose,lazyEntries,decodeStrings,validateEntrySizes,strictFileNames){var self=this;EventEmitter.call(self),self.reader=reader,self.reader.on("error",function(err){emitError(self,err)}),self.reader.once("close",function(){self.emit("close")}),self.readEntryCursor=centralDirectoryOffset,self.fileSize=fileSize,self.entryCount=entryCount,self.comment=comment,self.entriesRead=0,self.autoClose=!!autoClose,self.lazyEntries=!!lazyEntries,self.decodeStrings=!!decodeStrings,self.validateEntrySizes=!!validateEntrySizes,self.strictFileNames=!!strictFileNames,self.isOpen=!0,self.emittedError=!1,self.lazyEntries||self._readEntry()}ZipFile.prototype.close=function(){this.isOpen&&(this.isOpen=!1,this.reader.unref())};function emitErrorAndAutoClose(self,err){self.autoClose&&self.close(),emitError(self,err)}function emitError(self,err){self.emittedError||(self.emittedError=!0,self.emit("error",err))}ZipFile.prototype.readEntry=function(){if(!this.lazyEntries)throw new Error("readEntry() called without lazyEntries:true");this._readEntry()};ZipFile.prototype._readEntry=function(){var self=this;if(self.entryCount===self.entriesRead){setImmediate(function(){self.autoClose&&self.close(),!self.emittedError&&self.emit("end")});return}if(!self.emittedError){var buffer=newBuffer(46);readAndAssertNoEof(self.reader,buffer,0,buffer.length,self.readEntryCursor,function(err){if(err)return emitErrorAndAutoClose(self,err);if(!self.emittedError){var entry=new Entry,signature=buffer.readUInt32LE(0);if(signature!==33639248)return emitErrorAndAutoClose(self,new Error("invalid central directory file header signature: 0x"+signature.toString(16)));if(entry.versionMadeBy=buffer.readUInt16LE(4),entry.versionNeededToExtract=buffer.readUInt16LE(6),entry.generalPurposeBitFlag=buffer.readUInt16LE(8),entry.compressionMethod=buffer.readUInt16LE(10),entry.lastModFileTime=buffer.readUInt16LE(12),entry.lastModFileDate=buffer.readUInt16LE(14),entry.crc32=buffer.readUInt32LE(16),entry.compressedSize=buffer.readUInt32LE(20),entry.uncompressedSize=buffer.readUInt32LE(24),entry.fileNameLength=buffer.readUInt16LE(28),entry.extraFieldLength=buffer.readUInt16LE(30),entry.fileCommentLength=buffer.readUInt16LE(32),entry.internalFileAttributes=buffer.readUInt16LE(36),entry.externalFileAttributes=buffer.readUInt32LE(38),entry.relativeOffsetOfLocalHeader=buffer.readUInt32LE(42),entry.generalPurposeBitFlag&64)return emitErrorAndAutoClose(self,new Error("strong encryption is not supported"));self.readEntryCursor+=46,buffer=newBuffer(entry.fileNameLength+entry.extraFieldLength+entry.fileCommentLength),readAndAssertNoEof(self.reader,buffer,0,buffer.length,self.readEntryCursor,function(err2){if(err2)return emitErrorAndAutoClose(self,err2);if(!self.emittedError){var isUtf8=(entry.generalPurposeBitFlag&2048)!==0;entry.fileName=self.decodeStrings?decodeBuffer(buffer,0,entry.fileNameLength,isUtf8):buffer.slice(0,entry.fileNameLength);var fileCommentStart=entry.fileNameLength+entry.extraFieldLength,extraFieldBuffer=buffer.slice(entry.fileNameLength,fileCommentStart);entry.extraFields=[];for(var i=0;i<extraFieldBuffer.length-3;){var headerId=extraFieldBuffer.readUInt16LE(i+0),dataSize=extraFieldBuffer.readUInt16LE(i+2),dataStart=i+4,dataEnd=dataStart+dataSize;if(dataEnd>extraFieldBuffer.length)return emitErrorAndAutoClose(self,new Error("extra field length exceeds extra field buffer size"));var dataBuffer=newBuffer(dataSize);extraFieldBuffer.copy(dataBuffer,0,dataStart,dataEnd),entry.extraFields.push({id:headerId,data:dataBuffer}),i=dataEnd}if(entry.fileComment=self.decodeStrings?decodeBuffer(buffer,fileCommentStart,fileCommentStart+entry.fileCommentLength,isUtf8):buffer.slice(fileCommentStart,fileCommentStart+entry.fileCommentLength),entry.comment=entry.fileComment,self.readEntryCursor+=buffer.length,self.entriesRead+=1,entry.uncompressedSize===4294967295||entry.compressedSize===4294967295||entry.relativeOffsetOfLocalHeader===4294967295){for(var zip64EiefBuffer=null,i=0;i<entry.extraFields.length;i++){var extraField=entry.extraFields[i];if(extraField.id===1){zip64EiefBuffer=extraField.data;break}}if(zip64EiefBuffer==null)return emitErrorAndAutoClose(self,new Error("expected zip64 extended information extra field"));var index=0;if(entry.uncompressedSize===4294967295){if(index+8>zip64EiefBuffer.length)return emitErrorAndAutoClose(self,new Error("zip64 extended information extra field does not include uncompressed size"));entry.uncompressedSize=readUInt64LE(zip64EiefBuffer,index),index+=8}if(entry.compressedSize===4294967295){if(index+8>zip64EiefBuffer.length)return emitErrorAndAutoClose(self,new Error("zip64 extended information extra field does not include compressed size"));entry.compressedSize=readUInt64LE(zip64EiefBuffer,index),index+=8}if(entry.relativeOffsetOfLocalHeader===4294967295){if(index+8>zip64EiefBuffer.length)return emitErrorAndAutoClose(self,new Error("zip64 extended information extra field does not include relative header offset"));entry.relativeOffsetOfLocalHeader=readUInt64LE(zip64EiefBuffer,index),index+=8}}if(self.decodeStrings)for(var i=0;i<entry.extraFields.length;i++){var extraField=entry.extraFields[i];if(extraField.id===28789){if(extraField.data.length<6||extraField.data.readUInt8(0)!==1)continue;var oldNameCrc32=extraField.data.readUInt32LE(1);if(crc32.unsigned(buffer.slice(0,entry.fileNameLength))!==oldNameCrc32)continue;entry.fileName=decodeBuffer(extraField.data,5,extraField.data.length,!0);break}}if(self.validateEntrySizes&&entry.compressionMethod===0){var expectedCompressedSize=entry.uncompressedSize;if(entry.isEncrypted()&&(expectedCompressedSize+=12),entry.compressedSize!==expectedCompressedSize){var msg="compressed/uncompressed size mismatch for stored file: "+entry.compressedSize+" != "+entry.uncompressedSize;return emitErrorAndAutoClose(self,new Error(msg))}}if(self.decodeStrings){self.strictFileNames||(entry.fileName=entry.fileName.replace(/\\/g,"/"));var errorMessage2=validateFileName(entry.fileName,self.validateFileNameOptions);if(errorMessage2!=null)return emitErrorAndAutoClose(self,new Error(errorMessage2))}self.emit("entry",entry),self.lazyEntries||self._readEntry()}})}})}};ZipFile.prototype.openReadStream=function(entry,options,callback){var self=this,relativeStart=0,relativeEnd=entry.compressedSize;if(callback==null)callback=options,options={};else{if(options.decrypt!=null){if(!entry.isEncrypted())throw new Error("options.decrypt can only be specified for encrypted entries");if(options.decrypt!==!1)throw new Error("invalid options.decrypt value: "+options.decrypt);if(entry.isCompressed()&&options.decompress!==!1)throw new Error("entry is encrypted and compressed, and options.decompress !== false")}if(options.decompress!=null){if(!entry.isCompressed())throw new Error("options.decompress can only be specified for compressed entries");if(!(options.decompress===!1||options.decompress===!0))throw new Error("invalid options.decompress value: "+options.decompress)}if(options.start!=null||options.end!=null){if(entry.isCompressed()&&options.decompress!==!1)throw new Error("start/end range not allowed for compressed entry without options.decompress === false");if(entry.isEncrypted()&&options.decrypt!==!1)throw new Error("start/end range not allowed for encrypted entry without options.decrypt === false")}if(options.start!=null){if(relativeStart=options.start,relativeStart<0)throw new Error("options.start < 0");if(relativeStart>entry.compressedSize)throw new Error("options.start > entry.compressedSize")}if(options.end!=null){if(relativeEnd=options.end,relativeEnd<0)throw new Error("options.end < 0");if(relativeEnd>entry.compressedSize)throw new Error("options.end > entry.compressedSize");if(relativeEnd<relativeStart)throw new Error("options.end < options.start")}}if(!self.isOpen)return callback(new Error("closed"));if(entry.isEncrypted()&&options.decrypt!==!1)return callback(new Error("entry is encrypted, and options.decrypt !== false"));self.reader.ref();var buffer=newBuffer(30);readAndAssertNoEof(self.reader,buffer,0,buffer.length,entry.relativeOffsetOfLocalHeader,function(err){try{if(err)return callback(err);var signature=buffer.readUInt32LE(0);if(signature!==67324752)return callback(new Error("invalid local file header signature: 0x"+signature.toString(16)));var fileNameLength=buffer.readUInt16LE(26),extraFieldLength=buffer.readUInt16LE(28),localFileHeaderEnd=entry.relativeOffsetOfLocalHeader+buffer.length+fileNameLength+extraFieldLength,decompress;if(entry.compressionMethod===0)decompress=!1;else if(entry.compressionMethod===8)decompress=options.decompress!=null?options.decompress:!0;else return callback(new Error("unsupported compression method: "+entry.compressionMethod));var fileDataStart=localFileHeaderEnd,fileDataEnd=fileDataStart+entry.compressedSize;if(entry.compressedSize!==0&&fileDataEnd>self.fileSize)return callback(new Error("file data overflows file bounds: "+fileDataStart+" + "+entry.compressedSize+" > "+self.fileSize));var readStream=self.reader.createReadStream({start:fileDataStart+relativeStart,end:fileDataStart+relativeEnd}),endpointStream=readStream;if(decompress){var destroyed=!1,inflateFilter=zlib.createInflateRaw();readStream.on("error",function(err2){setImmediate(function(){destroyed||inflateFilter.emit("error",err2)})}),readStream.pipe(inflateFilter),self.validateEntrySizes?(endpointStream=new AssertByteCountStream(entry.uncompressedSize),inflateFilter.on("error",function(err2){setImmediate(function(){destroyed||endpointStream.emit("error",err2)})}),inflateFilter.pipe(endpointStream)):endpointStream=inflateFilter,endpointStream.destroy=function(){destroyed=!0,inflateFilter!==endpointStream&&inflateFilter.unpipe(endpointStream),readStream.unpipe(inflateFilter),readStream.destroy()}}callback(null,endpointStream)}finally{self.reader.unref()}})};function Entry(){}Entry.prototype.getLastModDate=function(){return dosDateTimeToDate(this.lastModFileDate,this.lastModFileTime)};Entry.prototype.isEncrypted=function(){return(this.generalPurposeBitFlag&1)!==0};Entry.prototype.isCompressed=function(){return this.compressionMethod===8};function dosDateTimeToDate(date5,time3){var day=date5&31,month=(date5>>5&15)-1,year=(date5>>9&127)+1980,millisecond=0,second=(time3&31)*2,minute=time3>>5&63,hour=time3>>11&31;return new Date(year,month,day,hour,minute,second,millisecond)}function validateFileName(fileName){return fileName.indexOf("\\")!==-1?"invalid characters in fileName: "+fileName:/^[a-zA-Z]:/.test(fileName)||/^\//.test(fileName)?"absolute path: "+fileName:fileName.split("/").indexOf("..")!==-1?"invalid relative path: "+fileName:null}function readAndAssertNoEof(reader,buffer,offset,length,position,callback){if(length===0)return setImmediate(function(){callback(null,newBuffer(0))});reader.read(buffer,offset,length,position,function(err,bytesRead){if(err)return callback(err);if(bytesRead<length)return callback(new Error("unexpected EOF"));callback()})}util.inherits(AssertByteCountStream,Transform);function AssertByteCountStream(byteCount){Transform.call(this),this.actualByteCount=0,this.expectedByteCount=byteCount}AssertByteCountStream.prototype._transform=function(chunk,encoding,cb){if(this.actualByteCount+=chunk.length,this.actualByteCount>this.expectedByteCount){var msg="too many bytes in the stream. expected "+this.expectedByteCount+". got at least "+this.actualByteCount;return cb(new Error(msg))}cb(null,chunk)};AssertByteCountStream.prototype._flush=function(cb){if(this.actualByteCount<this.expectedByteCount){var msg="not enough bytes in the stream. expected "+this.expectedByteCount+". got only "+this.actualByteCount;return cb(new Error(msg))}cb()};util.inherits(RandomAccessReader,EventEmitter);function RandomAccessReader(){EventEmitter.call(this),this.refCount=0}RandomAccessReader.prototype.ref=function(){this.refCount+=1};RandomAccessReader.prototype.unref=function(){var self=this;if(self.refCount-=1,self.refCount>0)return;if(self.refCount<0)throw new Error("invalid unref");self.close(onCloseDone);function onCloseDone(err){if(err)return self.emit("error",err);self.emit("close")}};RandomAccessReader.prototype.createReadStream=function(options){var start=options.start,end=options.end;if(start===end){var emptyStream=new PassThrough;return setImmediate(function(){emptyStream.end()}),emptyStream}var stream=this._readStreamForRange(start,end),destroyed=!1,refUnrefFilter=new RefUnrefFilter(this);stream.on("error",function(err){setImmediate(function(){destroyed||refUnrefFilter.emit("error",err)})}),refUnrefFilter.destroy=function(){stream.unpipe(refUnrefFilter),refUnrefFilter.unref(),stream.destroy()};var byteCounter=new AssertByteCountStream(end-start);return refUnrefFilter.on("error",function(err){setImmediate(function(){destroyed||byteCounter.emit("error",err)})}),byteCounter.destroy=function(){destroyed=!0,refUnrefFilter.unpipe(byteCounter),refUnrefFilter.destroy()},stream.pipe(refUnrefFilter).pipe(byteCounter)};RandomAccessReader.prototype._readStreamForRange=function(start,end){throw new Error("not implemented")};RandomAccessReader.prototype.read=function(buffer,offset,length,position,callback){var readStream=this.createReadStream({start:position,end:position+length}),writeStream=new Writable2,written=0;writeStream._write=function(chunk,encoding,cb){chunk.copy(buffer,offset+written,0,chunk.length),written+=chunk.length,cb()},writeStream.on("finish",callback),readStream.on("error",function(error48){callback(error48)}),readStream.pipe(writeStream)};RandomAccessReader.prototype.close=function(callback){setImmediate(callback)};util.inherits(RefUnrefFilter,PassThrough);function RefUnrefFilter(context){PassThrough.call(this),this.context=context,this.context.ref(),this.unreffedYet=!1}RefUnrefFilter.prototype._flush=function(cb){this.unref(),cb()};RefUnrefFilter.prototype.unref=function(cb){this.unreffedYet||(this.unreffedYet=!0,this.context.unref())};var cp437="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ";function decodeBuffer(buffer,start,end,isUtf8){if(isUtf8)return buffer.toString("utf8",start,end);for(var result="",i=start;i<end;i++)result+=cp437[buffer[i]];return result}function readUInt64LE(buffer,offset){var lower32=buffer.readUInt32LE(offset),upper32=buffer.readUInt32LE(offset+4);return upper32*4294967296+lower32}var newBuffer;typeof Buffer.allocUnsafe=="function"?newBuffer=function(len){return Buffer.allocUnsafe(len)}:newBuffer=function(len){return new Buffer(len)};function defaultCallback(err){if(err)throw err}}});var require_extract_zip=__commonJS({"../../node_modules/.pnpm/extract-zip@2.0.1/node_modules/extract-zip/index.js"(exports,module){var debug=require_src()("extract-zip"),{createWriteStream,promises:fs19}=__require("fs"),getStream=require_get_stream(),path19=__require("path"),{promisify}=__require("util"),stream=__require("stream"),yauzl=require_yauzl(),openZip=promisify(yauzl.open),pipeline=promisify(stream.pipeline),Extractor=class{constructor(zipPath,opts){this.zipPath=zipPath,this.opts=opts}async extract(){return debug("opening",this.zipPath,"with opts",this.opts),this.zipfile=await openZip(this.zipPath,{lazyEntries:!0}),this.canceled=!1,new Promise((resolve2,reject)=>{this.zipfile.on("error",err=>{this.canceled=!0,reject(err)}),this.zipfile.readEntry(),this.zipfile.on("close",()=>{this.canceled||(debug("zip extraction complete"),resolve2())}),this.zipfile.on("entry",async entry=>{if(this.canceled){debug("skipping entry",entry.fileName,{cancelled:this.canceled});return}if(debug("zipfile entry",entry.fileName),entry.fileName.startsWith("__MACOSX/")){this.zipfile.readEntry();return}let destDir=path19.dirname(path19.join(this.opts.dir,entry.fileName));try{await fs19.mkdir(destDir,{recursive:!0});let canonicalDestDir=await fs19.realpath(destDir);if(path19.relative(this.opts.dir,canonicalDestDir).split(path19.sep).includes(".."))throw new Error(`Out of bound path "${canonicalDestDir}" found while processing file ${entry.fileName}`);await this.extractEntry(entry),debug("finished processing",entry.fileName),this.zipfile.readEntry()}catch(err){this.canceled=!0,this.zipfile.close(),reject(err)}})})}async extractEntry(entry){if(this.canceled){debug("skipping entry extraction",entry.fileName,{cancelled:this.canceled});return}this.opts.onEntry&&this.opts.onEntry(entry,this.zipfile);let dest=path19.join(this.opts.dir,entry.fileName),mode=entry.externalFileAttributes>>16&65535,IFMT=61440,IFDIR=16384,symlink=(mode&IFMT)===40960,isDir=(mode&IFMT)===IFDIR;!isDir&&entry.fileName.endsWith("/")&&(isDir=!0);let madeBy=entry.versionMadeBy>>8;isDir||(isDir=madeBy===0&&entry.externalFileAttributes===16),debug("extracting entry",{filename:entry.fileName,isDir,isSymlink:symlink});let procMode=this.getExtractedMode(mode,isDir)&511,destDir=isDir?dest:path19.dirname(dest),mkdirOptions={recursive:!0};if(isDir&&(mkdirOptions.mode=procMode),debug("mkdir",{dir:destDir,...mkdirOptions}),await fs19.mkdir(destDir,mkdirOptions),isDir)return;debug("opening read stream",dest);let readStream=await promisify(this.zipfile.openReadStream.bind(this.zipfile))(entry);if(symlink){let link=await getStream(readStream);debug("creating symlink",link,dest),await fs19.symlink(link,dest)}else await pipeline(readStream,createWriteStream(dest,{mode:procMode}))}getExtractedMode(entryMode,isDir){let mode=entryMode;return mode===0&&(isDir?(this.opts.defaultDirMode&&(mode=parseInt(this.opts.defaultDirMode,10)),mode||(mode=493)):(this.opts.defaultFileMode&&(mode=parseInt(this.opts.defaultFileMode,10)),mode||(mode=420))),mode}};module.exports=async function(zipPath,opts){if(debug("creating target directory",opts.dir),!path19.isAbsolute(opts.dir))throw new Error("Target directory is expected to be absolute");return await fs19.mkdir(opts.dir,{recursive:!0}),opts.dir=await fs19.realpath(opts.dir),new Extractor(zipPath,opts).extract()}}});var runtimeArgs_exports={};__export(runtimeArgs_exports,{parseNativeHostRuntimeArgs:()=>parseNativeHostRuntimeArgs,shouldExitWithoutLegacySocket:()=>shouldExitWithoutLegacySocket});function shouldExitWithoutLegacySocket(options,hasLegacySocket){return!hasLegacySocket&&options.discoverCdp}function stripNativeMessagingLaunchArgs(argv){let[origin,parentWindow,...rest]=argv;return/^chrome-extension:\/\/[a-z]{32}\/$/.test(origin??"")?/^--parent-window=\d+$/.test(parentWindow??"")?rest:argv.slice(1):argv}async function parseNativeHostRuntimeArgs(argv){let args=stripNativeMessagingLaunchArgs(argv),options={},readValue=(index,name)=>{let argument=args[index];if(argument===name){let value=args[index+1];if(value===void 0||value.startsWith("-"))throw new Error(`argument missing for option '${name}'`);return{nextIndex:index+1,value}}return argument?.startsWith(`${name}=`)?{nextIndex:index,value:argument.slice(name.length+1)}:null},parseInteger=(value,label,minimum,maximum)=>{let parsed=Number(value);if(!Number.isInteger(parsed)||parsed<minimum||parsed>maximum)throw new Error(`${label} must be an integer from ${minimum} to ${maximum}`);return parsed};for(let index=0;index<args.length;index+=1){let argument=args[index];if(argument==="--daemon"){options.daemon=!0;continue}if(argument==="--discover-cdp"){options.discoverCdp=!0;continue}if(argument==="--skip-browser-registration"){options.skipBrowserRegistration=!0;continue}if(argument==="--browser-headless"){options.browserHeadless=!0;continue}if(argument==="--version"||argument==="-v"){options.version=!0;continue}if(argument==="--help"||argument==="-h"){options.help=!0;continue}let cdpPort=readValue(index,"--cdp-port");if(cdpPort){options.cdpPort=parseInteger(cdpPort.value,"cdp-port",1,65535),index=cdpPort.nextIndex;continue}let stringOptions=[["--cdp-user-data-dir","cdpUserDataDir"],["--cdp-endpoint-file","cdpEndpointFile"],["--browser-id","browserId"],["--browser-name","browserName"]],matchedStringOption=!1;for(let[name,property]of stringOptions){let parsed=readValue(index,name);if(parsed){options[property]=parsed.value,index=parsed.nextIndex,matchedStringOption=!0;break}}if(!matchedStringOption)throw new Error(argument?.startsWith("-")?`unknown option '${argument}'`:`unexpected argument '${argument}'`)}return{browserHeadless:options.browserHeadless===!0,browserId:options.browserId??"cdp",browserName:options.browserName??"CDP",...options.cdpEndpointFile?{cdpEndpointFile:options.cdpEndpointFile}:{},cdpPort:options.cdpPort??9222,...options.cdpUserDataDir?{cdpUserDataDir:options.cdpUserDataDir}:{},daemon:options.daemon===!0,discoverCdp:options.discoverCdp===!0,help:options.help===!0,skipBrowserRegistration:options.skipBrowserRegistration===!0,version:options.version===!0}}var init_runtimeArgs=__esm({"src/runtimeArgs.ts"(){"use strict"}});import fs16 from"node:fs";import os9 from"node:os";import path16 from"node:path";import{execFileSync}from"node:child_process";function resolveNativeHostDirectory(options={}){let env=options.env??process.env,home=(options.homedir??os9.homedir)();switch(options.platform??process.platform){case"darwin":return path16.join(home,"Library/Application Support/Google/Chrome/NativeMessagingHosts");case"linux":return path16.join(home,".config/google-chrome/NativeMessagingHosts");case"win32":return path16.join(env.PROGRAMDATA||"C:\\ProgramData","Google\\Chrome\\NativeMessagingHosts");default:throw new Error(`Unsupported platform: ${String(options.platform??process.platform)}`)}}function unregisterWindowsNativeHost(hostName){let registryKey=`HKCU\\SOFTWARE\\Google\\Chrome\\NativeMessagingHosts\\${hostName}`;try{execFileSync("reg",["delete",registryKey,"/f"],{stdio:"pipe"})}catch{}}function uninstallNativeHostArtifacts(options={},dependencies={}){let{mode="both",silent=!1}=options;if(mode==="both")return["skills","mcp"].map(integrationMode=>uninstallNativeHostArtifacts({...options,mode:integrationMode},dependencies)).every(Boolean);let writeLine=dependencies.writeLine??(line=>console.error(line)),log2=line=>{silent||writeLine(line)};try{let existsSync7=dependencies.existsSync??fs16.existsSync,platform=dependencies.platform??process.platform,hostDir=dependencies.hostDir??resolveNativeHostDirectory({env:dependencies.env,homedir:dependencies.homedir,platform}),unlinkSync=dependencies.unlinkSync??fs16.unlinkSync,unregister=dependencies.unregisterWindowsNativeHost??unregisterWindowsNativeHost,hostName=MEARL_NATIVE_HOST_NAMES[mode],launcherExtension=platform==="win32"?"cmd":"sh",artifacts=[path16.join(hostDir,`${hostName}.json`),path16.join(hostDir,`${hostName}-launcher.${launcherExtension}`)];for(let artifact of artifacts)existsSync7(artifact)&&(unlinkSync(artifact),log2(`✅ Removed: ${artifact}`));return platform==="win32"&&unregister(hostName),!0}catch(error48){return log2(`❌ Uninstall failed: ${error48 instanceof Error?error48.message:String(error48)}`),!1}}var MEARL_NATIVE_HOST_NAMES,init_nativeHost=__esm({"../setup/dist/nativeHost.js"(){"use strict";MEARL_NATIVE_HOST_NAMES={skills:"com.alibaba.mearl.skills",mcp:"com.alibaba.mearl.mcp"}}});var install_exports={};__export(install_exports,{installNativeHost:()=>installNativeHost,parseNativeHostInstallArgs:()=>parseNativeHostInstallArgs,resolveHostDir:()=>resolveHostDir,runCli:()=>runCli,uninstallNativeHost:()=>uninstallNativeHost});import fs17 from"node:fs";import path17 from"node:path";import{execFileSync as execFileSync2}from"node:child_process";import{createRequire as createRequire2}from"node:module";import{fileURLToPath as fileURLToPath2}from"node:url";function resolveHostDir(){return resolveNativeHostDirectory()}function resolveNativeHostPath(){let siblingPath=path17.join(__dirname,"index.js");if(fs17.existsSync(siblingPath))return siblingPath;try{return createRequire2(import.meta.url).resolve("@mearl/native-host/runtime")}catch{throw new Error("Cannot locate native-host runtime entry point. Ensure @mearl/native-host is installed correctly.")}}function registerWindowsNativeHost(hostName,manifestPath){let regKey=`HKCU\\SOFTWARE\\Google\\Chrome\\NativeMessagingHosts\\${hostName}`;execFileSync2("reg",["add",regKey,"/ve","/t","REG_SZ","/d",manifestPath,"/f"],{stdio:"pipe"})}function createLauncherScript(hostDir,hostPath,hostName){let nodePath=path17.resolve(process.execPath);if(process.platform==="win32"){let launcherPath2=path17.join(hostDir,`${hostName}-launcher.cmd`),content2=`@echo off\r
7
+ `).map(str=>str.trim()).join(" ")};formatters.O=function(v){return this.inspectOpts.colors=this.useColors,util.inspect(v,this.inspectOpts)}}});var require_src=__commonJS({"../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/index.js"(exports,module){typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?module.exports=require_browser():module.exports=require_node()}});var require_wrappy=__commonJS({"../../node_modules/.pnpm/wrappy@1.0.2/node_modules/wrappy/wrappy.js"(exports,module){module.exports=wrappy;function wrappy(fn,cb){if(fn&&cb)return wrappy(fn)(cb);if(typeof fn!="function")throw new TypeError("need wrapper function");return Object.keys(fn).forEach(function(k){wrapper[k]=fn[k]}),wrapper;function wrapper(){for(var args=new Array(arguments.length),i=0;i<args.length;i++)args[i]=arguments[i];var ret=fn.apply(this,args),cb2=args[args.length-1];return typeof ret=="function"&&ret!==cb2&&Object.keys(cb2).forEach(function(k){ret[k]=cb2[k]}),ret}}}});var require_once=__commonJS({"../../node_modules/.pnpm/once@1.4.0/node_modules/once/once.js"(exports,module){var wrappy=require_wrappy();module.exports=wrappy(once);module.exports.strict=wrappy(onceStrict);once.proto=once(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return once(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return onceStrict(this)},configurable:!0})});function once(fn){var f=function(){return f.called?f.value:(f.called=!0,f.value=fn.apply(this,arguments))};return f.called=!1,f}function onceStrict(fn){var f=function(){if(f.called)throw new Error(f.onceError);return f.called=!0,f.value=fn.apply(this,arguments)},name=fn.name||"Function wrapped with `once`";return f.onceError=name+" shouldn't be called more than once",f.called=!1,f}}});var require_end_of_stream=__commonJS({"../../node_modules/.pnpm/end-of-stream@1.4.5/node_modules/end-of-stream/index.js"(exports,module){var once=require_once(),noop=function(){},qnt=global.Bare?queueMicrotask:process.nextTick.bind(process),isRequest=function(stream){return stream.setHeader&&typeof stream.abort=="function"},isChildProcess=function(stream){return stream.stdio&&Array.isArray(stream.stdio)&&stream.stdio.length===3},eos=function(stream,opts,callback){if(typeof opts=="function")return eos(stream,null,opts);opts||(opts={}),callback=once(callback||noop);var ws=stream._writableState,rs=stream._readableState,readable=opts.readable||opts.readable!==!1&&stream.readable,writable=opts.writable||opts.writable!==!1&&stream.writable,cancelled=!1,onlegacyfinish=function(){stream.writable||onfinish()},onfinish=function(){writable=!1,readable||callback.call(stream)},onend=function(){readable=!1,writable||callback.call(stream)},onexit=function(exitCode){callback.call(stream,exitCode?new Error("exited with error code: "+exitCode):null)},onerror=function(err){callback.call(stream,err)},onclose=function(){qnt(onclosenexttick)},onclosenexttick=function(){if(!cancelled){if(readable&&!(rs&&rs.ended&&!rs.destroyed))return callback.call(stream,new Error("premature close"));if(writable&&!(ws&&ws.ended&&!ws.destroyed))return callback.call(stream,new Error("premature close"))}},onrequest=function(){stream.req.on("finish",onfinish)};return isRequest(stream)?(stream.on("complete",onfinish),stream.on("abort",onclose),stream.req?onrequest():stream.on("request",onrequest)):writable&&!ws&&(stream.on("end",onlegacyfinish),stream.on("close",onlegacyfinish)),isChildProcess(stream)&&stream.on("exit",onexit),stream.on("end",onend),stream.on("finish",onfinish),opts.error!==!1&&stream.on("error",onerror),stream.on("close",onclose),function(){cancelled=!0,stream.removeListener("complete",onfinish),stream.removeListener("abort",onclose),stream.removeListener("request",onrequest),stream.req&&stream.req.removeListener("finish",onfinish),stream.removeListener("end",onlegacyfinish),stream.removeListener("close",onlegacyfinish),stream.removeListener("finish",onfinish),stream.removeListener("exit",onexit),stream.removeListener("end",onend),stream.removeListener("error",onerror),stream.removeListener("close",onclose)}};module.exports=eos}});var require_pump=__commonJS({"../../node_modules/.pnpm/pump@3.0.4/node_modules/pump/index.js"(exports,module){var once=require_once(),eos=require_end_of_stream(),fs19;try{fs19=__require("fs")}catch{}var noop=function(){},ancient=typeof process>"u"?!1:/^v?\.0/.test(process.version),isFn=function(fn){return typeof fn=="function"},isFS=function(stream){return!ancient||!fs19?!1:(stream instanceof(fs19.ReadStream||noop)||stream instanceof(fs19.WriteStream||noop))&&isFn(stream.close)},isRequest=function(stream){return stream.setHeader&&isFn(stream.abort)},destroyer=function(stream,reading,writing,callback){callback=once(callback);var closed=!1;stream.on("close",function(){closed=!0}),eos(stream,{readable:reading,writable:writing},function(err){if(err)return callback(err);closed=!0,callback()});var destroyed=!1;return function(err){if(!closed&&!destroyed){if(destroyed=!0,isFS(stream))return stream.close(noop);if(isRequest(stream))return stream.abort();if(isFn(stream.destroy))return stream.destroy();callback(err||new Error("stream was destroyed"))}}},call=function(fn){fn()},pipe2=function(from,to){return from.pipe(to)},pump=function(){var streams=Array.prototype.slice.call(arguments),callback=isFn(streams[streams.length-1]||noop)&&streams.pop()||noop;if(Array.isArray(streams[0])&&(streams=streams[0]),streams.length<2)throw new Error("pump requires two streams per minimum");var error48,destroys=streams.map(function(stream,i){var reading=i<streams.length-1,writing=i>0;return destroyer(stream,reading,writing,function(err){error48||(error48=err),err&&destroys.forEach(call),!reading&&(destroys.forEach(call),callback(error48))})});return streams.reduce(pipe2)};module.exports=pump}});var require_buffer_stream=__commonJS({"../../node_modules/.pnpm/get-stream@5.2.0/node_modules/get-stream/buffer-stream.js"(exports,module){"use strict";var{PassThrough:PassThroughStream}=__require("stream");module.exports=options=>{options={...options};let{array:array2}=options,{encoding}=options,isBuffer=encoding==="buffer",objectMode=!1;array2?objectMode=!(encoding||isBuffer):encoding=encoding||"utf8",isBuffer&&(encoding=null);let stream=new PassThroughStream({objectMode});encoding&&stream.setEncoding(encoding);let length=0,chunks=[];return stream.on("data",chunk=>{chunks.push(chunk),objectMode?length=chunks.length:length+=chunk.length}),stream.getBufferedValue=()=>array2?chunks:isBuffer?Buffer.concat(chunks,length):chunks.join(""),stream.getBufferedLength=()=>length,stream}}});var require_get_stream=__commonJS({"../../node_modules/.pnpm/get-stream@5.2.0/node_modules/get-stream/index.js"(exports,module){"use strict";var{constants:BufferConstants}=__require("buffer"),pump=require_pump(),bufferStream=require_buffer_stream(),MaxBufferError=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function getStream(inputStream,options){if(!inputStream)return Promise.reject(new Error("Expected a stream"));options={maxBuffer:1/0,...options};let{maxBuffer}=options,stream;return await new Promise((resolve2,reject)=>{let rejectPromise=error48=>{error48&&stream.getBufferedLength()<=BufferConstants.MAX_LENGTH&&(error48.bufferedData=stream.getBufferedValue()),reject(error48)};stream=pump(inputStream,bufferStream(options),error48=>{if(error48){rejectPromise(error48);return}resolve2()}),stream.on("data",()=>{stream.getBufferedLength()>maxBuffer&&rejectPromise(new MaxBufferError)})}),stream.getBufferedValue()}module.exports=getStream;module.exports.default=getStream;module.exports.buffer=(stream,options)=>getStream(stream,{...options,encoding:"buffer"});module.exports.array=(stream,options)=>getStream(stream,{...options,array:!0});module.exports.MaxBufferError=MaxBufferError}});var require_pend=__commonJS({"../../node_modules/.pnpm/pend@1.2.0/node_modules/pend/index.js"(exports,module){module.exports=Pend;function Pend(){this.pending=0,this.max=1/0,this.listeners=[],this.waiting=[],this.error=null}Pend.prototype.go=function(fn){this.pending<this.max?pendGo(this,fn):this.waiting.push(fn)};Pend.prototype.wait=function(cb){this.pending===0?cb(this.error):this.listeners.push(cb)};Pend.prototype.hold=function(){return pendHold(this)};function pendHold(self){self.pending+=1;var called=!1;return onCb;function onCb(err){if(called)throw new Error("callback called twice");if(called=!0,self.error=self.error||err,self.pending-=1,self.waiting.length>0&&self.pending<self.max)pendGo(self,self.waiting.shift());else if(self.pending===0){var listeners=self.listeners;self.listeners=[],listeners.forEach(cbListener)}}function cbListener(listener){listener(self.error)}}function pendGo(self,fn){fn(pendHold(self))}}});var require_fd_slicer=__commonJS({"../../node_modules/.pnpm/fd-slicer@1.1.0/node_modules/fd-slicer/index.js"(exports){var fs19=__require("fs"),util=__require("util"),stream=__require("stream"),Readable2=stream.Readable,Writable2=stream.Writable,PassThrough=stream.PassThrough,Pend=require_pend(),EventEmitter=__require("events").EventEmitter;exports.createFromBuffer=createFromBuffer;exports.createFromFd=createFromFd;exports.BufferSlicer=BufferSlicer;exports.FdSlicer=FdSlicer;util.inherits(FdSlicer,EventEmitter);function FdSlicer(fd,options){options=options||{},EventEmitter.call(this),this.fd=fd,this.pend=new Pend,this.pend.max=1,this.refCount=0,this.autoClose=!!options.autoClose}FdSlicer.prototype.read=function(buffer,offset,length,position,callback){var self=this;self.pend.go(function(cb){fs19.read(self.fd,buffer,offset,length,position,function(err,bytesRead,buffer2){cb(),callback(err,bytesRead,buffer2)})})};FdSlicer.prototype.write=function(buffer,offset,length,position,callback){var self=this;self.pend.go(function(cb){fs19.write(self.fd,buffer,offset,length,position,function(err,written,buffer2){cb(),callback(err,written,buffer2)})})};FdSlicer.prototype.createReadStream=function(options){return new ReadStream(this,options)};FdSlicer.prototype.createWriteStream=function(options){return new WriteStream(this,options)};FdSlicer.prototype.ref=function(){this.refCount+=1};FdSlicer.prototype.unref=function(){var self=this;if(self.refCount-=1,self.refCount>0)return;if(self.refCount<0)throw new Error("invalid unref");self.autoClose&&fs19.close(self.fd,onCloseDone);function onCloseDone(err){err?self.emit("error",err):self.emit("close")}};util.inherits(ReadStream,Readable2);function ReadStream(context,options){options=options||{},Readable2.call(this,options),this.context=context,this.context.ref(),this.start=options.start||0,this.endOffset=options.end,this.pos=this.start,this.destroyed=!1}ReadStream.prototype._read=function(n){var self=this;if(!self.destroyed){var toRead=Math.min(self._readableState.highWaterMark,n);if(self.endOffset!=null&&(toRead=Math.min(toRead,self.endOffset-self.pos)),toRead<=0){self.destroyed=!0,self.push(null),self.context.unref();return}self.context.pend.go(function(cb){if(self.destroyed)return cb();var buffer=new Buffer(toRead);fs19.read(self.context.fd,buffer,0,toRead,self.pos,function(err,bytesRead){err?self.destroy(err):bytesRead===0?(self.destroyed=!0,self.push(null),self.context.unref()):(self.pos+=bytesRead,self.push(buffer.slice(0,bytesRead))),cb()})})}};ReadStream.prototype.destroy=function(err){this.destroyed||(err=err||new Error("stream destroyed"),this.destroyed=!0,this.emit("error",err),this.context.unref())};util.inherits(WriteStream,Writable2);function WriteStream(context,options){options=options||{},Writable2.call(this,options),this.context=context,this.context.ref(),this.start=options.start||0,this.endOffset=options.end==null?1/0:+options.end,this.bytesWritten=0,this.pos=this.start,this.destroyed=!1,this.on("finish",this.destroy.bind(this))}WriteStream.prototype._write=function(buffer,encoding,callback){var self=this;if(!self.destroyed){if(self.pos+buffer.length>self.endOffset){var err=new Error("maximum file length exceeded");err.code="ETOOBIG",self.destroy(),callback(err);return}self.context.pend.go(function(cb){if(self.destroyed)return cb();fs19.write(self.context.fd,buffer,0,buffer.length,self.pos,function(err2,bytes){err2?(self.destroy(),cb(),callback(err2)):(self.bytesWritten+=bytes,self.pos+=bytes,self.emit("progress"),cb(),callback())})})}};WriteStream.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.context.unref())};util.inherits(BufferSlicer,EventEmitter);function BufferSlicer(buffer,options){EventEmitter.call(this),options=options||{},this.refCount=0,this.buffer=buffer,this.maxChunkSize=options.maxChunkSize||Number.MAX_SAFE_INTEGER}BufferSlicer.prototype.read=function(buffer,offset,length,position,callback){var end=position+length,delta=end-this.buffer.length,written=delta>0?delta:length;this.buffer.copy(buffer,offset,position,end),setImmediate(function(){callback(null,written)})};BufferSlicer.prototype.write=function(buffer,offset,length,position,callback){buffer.copy(this.buffer,position,offset,offset+length),setImmediate(function(){callback(null,length,buffer)})};BufferSlicer.prototype.createReadStream=function(options){options=options||{};var readStream=new PassThrough(options);readStream.destroyed=!1,readStream.start=options.start||0,readStream.endOffset=options.end,readStream.pos=readStream.endOffset||this.buffer.length;for(var entireSlice=this.buffer.slice(readStream.start,readStream.pos),offset=0;;){var nextOffset=offset+this.maxChunkSize;if(nextOffset>=entireSlice.length){offset<entireSlice.length&&readStream.write(entireSlice.slice(offset,entireSlice.length));break}readStream.write(entireSlice.slice(offset,nextOffset)),offset=nextOffset}return readStream.end(),readStream.destroy=function(){readStream.destroyed=!0},readStream};BufferSlicer.prototype.createWriteStream=function(options){var bufferSlicer=this;options=options||{};var writeStream=new Writable2(options);return writeStream.start=options.start||0,writeStream.endOffset=options.end==null?this.buffer.length:+options.end,writeStream.bytesWritten=0,writeStream.pos=writeStream.start,writeStream.destroyed=!1,writeStream._write=function(buffer,encoding,callback){if(!writeStream.destroyed){var end=writeStream.pos+buffer.length;if(end>writeStream.endOffset){var err=new Error("maximum file length exceeded");err.code="ETOOBIG",writeStream.destroyed=!0,callback(err);return}buffer.copy(bufferSlicer.buffer,writeStream.pos,0,buffer.length),writeStream.bytesWritten+=buffer.length,writeStream.pos=end,writeStream.emit("progress"),callback()}},writeStream.destroy=function(){writeStream.destroyed=!0},writeStream};BufferSlicer.prototype.ref=function(){this.refCount+=1};BufferSlicer.prototype.unref=function(){if(this.refCount-=1,this.refCount<0)throw new Error("invalid unref")};function createFromBuffer(buffer,options){return new BufferSlicer(buffer,options)}function createFromFd(fd,options){return new FdSlicer(fd,options)}}});var require_buffer_crc32=__commonJS({"../../node_modules/.pnpm/buffer-crc32@0.2.13/node_modules/buffer-crc32/index.js"(exports,module){var Buffer2=__require("buffer").Buffer,CRC_TABLE=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];typeof Int32Array<"u"&&(CRC_TABLE=new Int32Array(CRC_TABLE));function ensureBuffer(input){if(Buffer2.isBuffer(input))return input;var hasNewBufferAPI=typeof Buffer2.alloc=="function"&&typeof Buffer2.from=="function";if(typeof input=="number")return hasNewBufferAPI?Buffer2.alloc(input):new Buffer2(input);if(typeof input=="string")return hasNewBufferAPI?Buffer2.from(input):new Buffer2(input);throw new Error("input must be buffer, number, or string, received "+typeof input)}function bufferizeInt(num){var tmp=ensureBuffer(4);return tmp.writeInt32BE(num,0),tmp}function _crc32(buf,previous){buf=ensureBuffer(buf),Buffer2.isBuffer(previous)&&(previous=previous.readUInt32BE(0));for(var crc=~~previous^-1,n=0;n<buf.length;n++)crc=CRC_TABLE[(crc^buf[n])&255]^crc>>>8;return crc^-1}function crc32(){return bufferizeInt(_crc32.apply(null,arguments))}crc32.signed=function(){return _crc32.apply(null,arguments)};crc32.unsigned=function(){return _crc32.apply(null,arguments)>>>0};module.exports=crc32}});var require_yauzl=__commonJS({"../../node_modules/.pnpm/yauzl@2.10.0/node_modules/yauzl/index.js"(exports){var fs19=__require("fs"),zlib=__require("zlib"),fd_slicer=require_fd_slicer(),crc32=require_buffer_crc32(),util=__require("util"),EventEmitter=__require("events").EventEmitter,Transform=__require("stream").Transform,PassThrough=__require("stream").PassThrough,Writable2=__require("stream").Writable;exports.open=open2;exports.fromFd=fromFd;exports.fromBuffer=fromBuffer;exports.fromRandomAccessReader=fromRandomAccessReader;exports.dosDateTimeToDate=dosDateTimeToDate;exports.validateFileName=validateFileName;exports.ZipFile=ZipFile;exports.Entry=Entry;exports.RandomAccessReader=RandomAccessReader;function open2(path19,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose==null&&(options.autoClose=!0),options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0),options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1),callback==null&&(callback=defaultCallback),fs19.open(path19,"r",function(err,fd){if(err)return callback(err);fromFd(fd,options,function(err2,zipfile){err2&&fs19.close(fd,defaultCallback),callback(err2,zipfile)})})}function fromFd(fd,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose==null&&(options.autoClose=!1),options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0),options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1),callback==null&&(callback=defaultCallback),fs19.fstat(fd,function(err,stats){if(err)return callback(err);var reader=fd_slicer.createFromFd(fd,{autoClose:!0});fromRandomAccessReader(reader,stats.size,options,callback)})}function fromBuffer(buffer,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose=!1,options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0),options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1);var reader=fd_slicer.createFromBuffer(buffer,{maxChunkSize:65536});fromRandomAccessReader(reader,buffer.length,options,callback)}function fromRandomAccessReader(reader,totalSize,options,callback){typeof options=="function"&&(callback=options,options=null),options==null&&(options={}),options.autoClose==null&&(options.autoClose=!0),options.lazyEntries==null&&(options.lazyEntries=!1),options.decodeStrings==null&&(options.decodeStrings=!0);var decodeStrings=!!options.decodeStrings;if(options.validateEntrySizes==null&&(options.validateEntrySizes=!0),options.strictFileNames==null&&(options.strictFileNames=!1),callback==null&&(callback=defaultCallback),typeof totalSize!="number")throw new Error("expected totalSize parameter to be a number");if(totalSize>Number.MAX_SAFE_INTEGER)throw new Error("zip file too large. only file sizes up to 2^52 are supported due to JavaScript's Number type being an IEEE 754 double.");reader.ref();var eocdrWithoutCommentSize=22,maxCommentSize=65535,bufferSize=Math.min(eocdrWithoutCommentSize+maxCommentSize,totalSize),buffer=newBuffer(bufferSize),bufferReadStart=totalSize-buffer.length;readAndAssertNoEof(reader,buffer,0,bufferSize,bufferReadStart,function(err){if(err)return callback(err);for(var i=bufferSize-eocdrWithoutCommentSize;i>=0;i-=1)if(buffer.readUInt32LE(i)===101010256){var eocdrBuffer=buffer.slice(i),diskNumber=eocdrBuffer.readUInt16LE(4);if(diskNumber!==0)return callback(new Error("multi-disk zip files are not supported: found disk number: "+diskNumber));var entryCount=eocdrBuffer.readUInt16LE(10),centralDirectoryOffset=eocdrBuffer.readUInt32LE(16),commentLength=eocdrBuffer.readUInt16LE(20),expectedCommentLength=eocdrBuffer.length-eocdrWithoutCommentSize;if(commentLength!==expectedCommentLength)return callback(new Error("invalid comment length. expected: "+expectedCommentLength+". found: "+commentLength));var comment=decodeStrings?decodeBuffer(eocdrBuffer,22,eocdrBuffer.length,!1):eocdrBuffer.slice(22);if(!(entryCount===65535||centralDirectoryOffset===4294967295))return callback(null,new ZipFile(reader,centralDirectoryOffset,totalSize,entryCount,comment,options.autoClose,options.lazyEntries,decodeStrings,options.validateEntrySizes,options.strictFileNames));var zip64EocdlBuffer=newBuffer(20),zip64EocdlOffset=bufferReadStart+i-zip64EocdlBuffer.length;readAndAssertNoEof(reader,zip64EocdlBuffer,0,zip64EocdlBuffer.length,zip64EocdlOffset,function(err2){if(err2)return callback(err2);if(zip64EocdlBuffer.readUInt32LE(0)!==117853008)return callback(new Error("invalid zip64 end of central directory locator signature"));var zip64EocdrOffset=readUInt64LE(zip64EocdlBuffer,8),zip64EocdrBuffer=newBuffer(56);readAndAssertNoEof(reader,zip64EocdrBuffer,0,zip64EocdrBuffer.length,zip64EocdrOffset,function(err3){return err3?callback(err3):zip64EocdrBuffer.readUInt32LE(0)!==101075792?callback(new Error("invalid zip64 end of central directory record signature")):(entryCount=readUInt64LE(zip64EocdrBuffer,32),centralDirectoryOffset=readUInt64LE(zip64EocdrBuffer,48),callback(null,new ZipFile(reader,centralDirectoryOffset,totalSize,entryCount,comment,options.autoClose,options.lazyEntries,decodeStrings,options.validateEntrySizes,options.strictFileNames)))})});return}callback(new Error("end of central directory record signature not found"))})}util.inherits(ZipFile,EventEmitter);function ZipFile(reader,centralDirectoryOffset,fileSize,entryCount,comment,autoClose,lazyEntries,decodeStrings,validateEntrySizes,strictFileNames){var self=this;EventEmitter.call(self),self.reader=reader,self.reader.on("error",function(err){emitError(self,err)}),self.reader.once("close",function(){self.emit("close")}),self.readEntryCursor=centralDirectoryOffset,self.fileSize=fileSize,self.entryCount=entryCount,self.comment=comment,self.entriesRead=0,self.autoClose=!!autoClose,self.lazyEntries=!!lazyEntries,self.decodeStrings=!!decodeStrings,self.validateEntrySizes=!!validateEntrySizes,self.strictFileNames=!!strictFileNames,self.isOpen=!0,self.emittedError=!1,self.lazyEntries||self._readEntry()}ZipFile.prototype.close=function(){this.isOpen&&(this.isOpen=!1,this.reader.unref())};function emitErrorAndAutoClose(self,err){self.autoClose&&self.close(),emitError(self,err)}function emitError(self,err){self.emittedError||(self.emittedError=!0,self.emit("error",err))}ZipFile.prototype.readEntry=function(){if(!this.lazyEntries)throw new Error("readEntry() called without lazyEntries:true");this._readEntry()};ZipFile.prototype._readEntry=function(){var self=this;if(self.entryCount===self.entriesRead){setImmediate(function(){self.autoClose&&self.close(),!self.emittedError&&self.emit("end")});return}if(!self.emittedError){var buffer=newBuffer(46);readAndAssertNoEof(self.reader,buffer,0,buffer.length,self.readEntryCursor,function(err){if(err)return emitErrorAndAutoClose(self,err);if(!self.emittedError){var entry=new Entry,signature=buffer.readUInt32LE(0);if(signature!==33639248)return emitErrorAndAutoClose(self,new Error("invalid central directory file header signature: 0x"+signature.toString(16)));if(entry.versionMadeBy=buffer.readUInt16LE(4),entry.versionNeededToExtract=buffer.readUInt16LE(6),entry.generalPurposeBitFlag=buffer.readUInt16LE(8),entry.compressionMethod=buffer.readUInt16LE(10),entry.lastModFileTime=buffer.readUInt16LE(12),entry.lastModFileDate=buffer.readUInt16LE(14),entry.crc32=buffer.readUInt32LE(16),entry.compressedSize=buffer.readUInt32LE(20),entry.uncompressedSize=buffer.readUInt32LE(24),entry.fileNameLength=buffer.readUInt16LE(28),entry.extraFieldLength=buffer.readUInt16LE(30),entry.fileCommentLength=buffer.readUInt16LE(32),entry.internalFileAttributes=buffer.readUInt16LE(36),entry.externalFileAttributes=buffer.readUInt32LE(38),entry.relativeOffsetOfLocalHeader=buffer.readUInt32LE(42),entry.generalPurposeBitFlag&64)return emitErrorAndAutoClose(self,new Error("strong encryption is not supported"));self.readEntryCursor+=46,buffer=newBuffer(entry.fileNameLength+entry.extraFieldLength+entry.fileCommentLength),readAndAssertNoEof(self.reader,buffer,0,buffer.length,self.readEntryCursor,function(err2){if(err2)return emitErrorAndAutoClose(self,err2);if(!self.emittedError){var isUtf8=(entry.generalPurposeBitFlag&2048)!==0;entry.fileName=self.decodeStrings?decodeBuffer(buffer,0,entry.fileNameLength,isUtf8):buffer.slice(0,entry.fileNameLength);var fileCommentStart=entry.fileNameLength+entry.extraFieldLength,extraFieldBuffer=buffer.slice(entry.fileNameLength,fileCommentStart);entry.extraFields=[];for(var i=0;i<extraFieldBuffer.length-3;){var headerId=extraFieldBuffer.readUInt16LE(i+0),dataSize=extraFieldBuffer.readUInt16LE(i+2),dataStart=i+4,dataEnd=dataStart+dataSize;if(dataEnd>extraFieldBuffer.length)return emitErrorAndAutoClose(self,new Error("extra field length exceeds extra field buffer size"));var dataBuffer=newBuffer(dataSize);extraFieldBuffer.copy(dataBuffer,0,dataStart,dataEnd),entry.extraFields.push({id:headerId,data:dataBuffer}),i=dataEnd}if(entry.fileComment=self.decodeStrings?decodeBuffer(buffer,fileCommentStart,fileCommentStart+entry.fileCommentLength,isUtf8):buffer.slice(fileCommentStart,fileCommentStart+entry.fileCommentLength),entry.comment=entry.fileComment,self.readEntryCursor+=buffer.length,self.entriesRead+=1,entry.uncompressedSize===4294967295||entry.compressedSize===4294967295||entry.relativeOffsetOfLocalHeader===4294967295){for(var zip64EiefBuffer=null,i=0;i<entry.extraFields.length;i++){var extraField=entry.extraFields[i];if(extraField.id===1){zip64EiefBuffer=extraField.data;break}}if(zip64EiefBuffer==null)return emitErrorAndAutoClose(self,new Error("expected zip64 extended information extra field"));var index=0;if(entry.uncompressedSize===4294967295){if(index+8>zip64EiefBuffer.length)return emitErrorAndAutoClose(self,new Error("zip64 extended information extra field does not include uncompressed size"));entry.uncompressedSize=readUInt64LE(zip64EiefBuffer,index),index+=8}if(entry.compressedSize===4294967295){if(index+8>zip64EiefBuffer.length)return emitErrorAndAutoClose(self,new Error("zip64 extended information extra field does not include compressed size"));entry.compressedSize=readUInt64LE(zip64EiefBuffer,index),index+=8}if(entry.relativeOffsetOfLocalHeader===4294967295){if(index+8>zip64EiefBuffer.length)return emitErrorAndAutoClose(self,new Error("zip64 extended information extra field does not include relative header offset"));entry.relativeOffsetOfLocalHeader=readUInt64LE(zip64EiefBuffer,index),index+=8}}if(self.decodeStrings)for(var i=0;i<entry.extraFields.length;i++){var extraField=entry.extraFields[i];if(extraField.id===28789){if(extraField.data.length<6||extraField.data.readUInt8(0)!==1)continue;var oldNameCrc32=extraField.data.readUInt32LE(1);if(crc32.unsigned(buffer.slice(0,entry.fileNameLength))!==oldNameCrc32)continue;entry.fileName=decodeBuffer(extraField.data,5,extraField.data.length,!0);break}}if(self.validateEntrySizes&&entry.compressionMethod===0){var expectedCompressedSize=entry.uncompressedSize;if(entry.isEncrypted()&&(expectedCompressedSize+=12),entry.compressedSize!==expectedCompressedSize){var msg="compressed/uncompressed size mismatch for stored file: "+entry.compressedSize+" != "+entry.uncompressedSize;return emitErrorAndAutoClose(self,new Error(msg))}}if(self.decodeStrings){self.strictFileNames||(entry.fileName=entry.fileName.replace(/\\/g,"/"));var errorMessage2=validateFileName(entry.fileName,self.validateFileNameOptions);if(errorMessage2!=null)return emitErrorAndAutoClose(self,new Error(errorMessage2))}self.emit("entry",entry),self.lazyEntries||self._readEntry()}})}})}};ZipFile.prototype.openReadStream=function(entry,options,callback){var self=this,relativeStart=0,relativeEnd=entry.compressedSize;if(callback==null)callback=options,options={};else{if(options.decrypt!=null){if(!entry.isEncrypted())throw new Error("options.decrypt can only be specified for encrypted entries");if(options.decrypt!==!1)throw new Error("invalid options.decrypt value: "+options.decrypt);if(entry.isCompressed()&&options.decompress!==!1)throw new Error("entry is encrypted and compressed, and options.decompress !== false")}if(options.decompress!=null){if(!entry.isCompressed())throw new Error("options.decompress can only be specified for compressed entries");if(!(options.decompress===!1||options.decompress===!0))throw new Error("invalid options.decompress value: "+options.decompress)}if(options.start!=null||options.end!=null){if(entry.isCompressed()&&options.decompress!==!1)throw new Error("start/end range not allowed for compressed entry without options.decompress === false");if(entry.isEncrypted()&&options.decrypt!==!1)throw new Error("start/end range not allowed for encrypted entry without options.decrypt === false")}if(options.start!=null){if(relativeStart=options.start,relativeStart<0)throw new Error("options.start < 0");if(relativeStart>entry.compressedSize)throw new Error("options.start > entry.compressedSize")}if(options.end!=null){if(relativeEnd=options.end,relativeEnd<0)throw new Error("options.end < 0");if(relativeEnd>entry.compressedSize)throw new Error("options.end > entry.compressedSize");if(relativeEnd<relativeStart)throw new Error("options.end < options.start")}}if(!self.isOpen)return callback(new Error("closed"));if(entry.isEncrypted()&&options.decrypt!==!1)return callback(new Error("entry is encrypted, and options.decrypt !== false"));self.reader.ref();var buffer=newBuffer(30);readAndAssertNoEof(self.reader,buffer,0,buffer.length,entry.relativeOffsetOfLocalHeader,function(err){try{if(err)return callback(err);var signature=buffer.readUInt32LE(0);if(signature!==67324752)return callback(new Error("invalid local file header signature: 0x"+signature.toString(16)));var fileNameLength=buffer.readUInt16LE(26),extraFieldLength=buffer.readUInt16LE(28),localFileHeaderEnd=entry.relativeOffsetOfLocalHeader+buffer.length+fileNameLength+extraFieldLength,decompress;if(entry.compressionMethod===0)decompress=!1;else if(entry.compressionMethod===8)decompress=options.decompress!=null?options.decompress:!0;else return callback(new Error("unsupported compression method: "+entry.compressionMethod));var fileDataStart=localFileHeaderEnd,fileDataEnd=fileDataStart+entry.compressedSize;if(entry.compressedSize!==0&&fileDataEnd>self.fileSize)return callback(new Error("file data overflows file bounds: "+fileDataStart+" + "+entry.compressedSize+" > "+self.fileSize));var readStream=self.reader.createReadStream({start:fileDataStart+relativeStart,end:fileDataStart+relativeEnd}),endpointStream=readStream;if(decompress){var destroyed=!1,inflateFilter=zlib.createInflateRaw();readStream.on("error",function(err2){setImmediate(function(){destroyed||inflateFilter.emit("error",err2)})}),readStream.pipe(inflateFilter),self.validateEntrySizes?(endpointStream=new AssertByteCountStream(entry.uncompressedSize),inflateFilter.on("error",function(err2){setImmediate(function(){destroyed||endpointStream.emit("error",err2)})}),inflateFilter.pipe(endpointStream)):endpointStream=inflateFilter,endpointStream.destroy=function(){destroyed=!0,inflateFilter!==endpointStream&&inflateFilter.unpipe(endpointStream),readStream.unpipe(inflateFilter),readStream.destroy()}}callback(null,endpointStream)}finally{self.reader.unref()}})};function Entry(){}Entry.prototype.getLastModDate=function(){return dosDateTimeToDate(this.lastModFileDate,this.lastModFileTime)};Entry.prototype.isEncrypted=function(){return(this.generalPurposeBitFlag&1)!==0};Entry.prototype.isCompressed=function(){return this.compressionMethod===8};function dosDateTimeToDate(date5,time3){var day=date5&31,month=(date5>>5&15)-1,year=(date5>>9&127)+1980,millisecond=0,second=(time3&31)*2,minute=time3>>5&63,hour=time3>>11&31;return new Date(year,month,day,hour,minute,second,millisecond)}function validateFileName(fileName){return fileName.indexOf("\\")!==-1?"invalid characters in fileName: "+fileName:/^[a-zA-Z]:/.test(fileName)||/^\//.test(fileName)?"absolute path: "+fileName:fileName.split("/").indexOf("..")!==-1?"invalid relative path: "+fileName:null}function readAndAssertNoEof(reader,buffer,offset,length,position,callback){if(length===0)return setImmediate(function(){callback(null,newBuffer(0))});reader.read(buffer,offset,length,position,function(err,bytesRead){if(err)return callback(err);if(bytesRead<length)return callback(new Error("unexpected EOF"));callback()})}util.inherits(AssertByteCountStream,Transform);function AssertByteCountStream(byteCount){Transform.call(this),this.actualByteCount=0,this.expectedByteCount=byteCount}AssertByteCountStream.prototype._transform=function(chunk,encoding,cb){if(this.actualByteCount+=chunk.length,this.actualByteCount>this.expectedByteCount){var msg="too many bytes in the stream. expected "+this.expectedByteCount+". got at least "+this.actualByteCount;return cb(new Error(msg))}cb(null,chunk)};AssertByteCountStream.prototype._flush=function(cb){if(this.actualByteCount<this.expectedByteCount){var msg="not enough bytes in the stream. expected "+this.expectedByteCount+". got only "+this.actualByteCount;return cb(new Error(msg))}cb()};util.inherits(RandomAccessReader,EventEmitter);function RandomAccessReader(){EventEmitter.call(this),this.refCount=0}RandomAccessReader.prototype.ref=function(){this.refCount+=1};RandomAccessReader.prototype.unref=function(){var self=this;if(self.refCount-=1,self.refCount>0)return;if(self.refCount<0)throw new Error("invalid unref");self.close(onCloseDone);function onCloseDone(err){if(err)return self.emit("error",err);self.emit("close")}};RandomAccessReader.prototype.createReadStream=function(options){var start=options.start,end=options.end;if(start===end){var emptyStream=new PassThrough;return setImmediate(function(){emptyStream.end()}),emptyStream}var stream=this._readStreamForRange(start,end),destroyed=!1,refUnrefFilter=new RefUnrefFilter(this);stream.on("error",function(err){setImmediate(function(){destroyed||refUnrefFilter.emit("error",err)})}),refUnrefFilter.destroy=function(){stream.unpipe(refUnrefFilter),refUnrefFilter.unref(),stream.destroy()};var byteCounter=new AssertByteCountStream(end-start);return refUnrefFilter.on("error",function(err){setImmediate(function(){destroyed||byteCounter.emit("error",err)})}),byteCounter.destroy=function(){destroyed=!0,refUnrefFilter.unpipe(byteCounter),refUnrefFilter.destroy()},stream.pipe(refUnrefFilter).pipe(byteCounter)};RandomAccessReader.prototype._readStreamForRange=function(start,end){throw new Error("not implemented")};RandomAccessReader.prototype.read=function(buffer,offset,length,position,callback){var readStream=this.createReadStream({start:position,end:position+length}),writeStream=new Writable2,written=0;writeStream._write=function(chunk,encoding,cb){chunk.copy(buffer,offset+written,0,chunk.length),written+=chunk.length,cb()},writeStream.on("finish",callback),readStream.on("error",function(error48){callback(error48)}),readStream.pipe(writeStream)};RandomAccessReader.prototype.close=function(callback){setImmediate(callback)};util.inherits(RefUnrefFilter,PassThrough);function RefUnrefFilter(context){PassThrough.call(this),this.context=context,this.context.ref(),this.unreffedYet=!1}RefUnrefFilter.prototype._flush=function(cb){this.unref(),cb()};RefUnrefFilter.prototype.unref=function(cb){this.unreffedYet||(this.unreffedYet=!0,this.context.unref())};var cp437="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ";function decodeBuffer(buffer,start,end,isUtf8){if(isUtf8)return buffer.toString("utf8",start,end);for(var result="",i=start;i<end;i++)result+=cp437[buffer[i]];return result}function readUInt64LE(buffer,offset){var lower32=buffer.readUInt32LE(offset),upper32=buffer.readUInt32LE(offset+4);return upper32*4294967296+lower32}var newBuffer;typeof Buffer.allocUnsafe=="function"?newBuffer=function(len){return Buffer.allocUnsafe(len)}:newBuffer=function(len){return new Buffer(len)};function defaultCallback(err){if(err)throw err}}});var require_extract_zip=__commonJS({"../../node_modules/.pnpm/extract-zip@2.0.1/node_modules/extract-zip/index.js"(exports,module){var debug=require_src()("extract-zip"),{createWriteStream,promises:fs19}=__require("fs"),getStream=require_get_stream(),path19=__require("path"),{promisify}=__require("util"),stream=__require("stream"),yauzl=require_yauzl(),openZip=promisify(yauzl.open),pipeline=promisify(stream.pipeline),Extractor=class{constructor(zipPath,opts){this.zipPath=zipPath,this.opts=opts}async extract(){return debug("opening",this.zipPath,"with opts",this.opts),this.zipfile=await openZip(this.zipPath,{lazyEntries:!0}),this.canceled=!1,new Promise((resolve2,reject)=>{this.zipfile.on("error",err=>{this.canceled=!0,reject(err)}),this.zipfile.readEntry(),this.zipfile.on("close",()=>{this.canceled||(debug("zip extraction complete"),resolve2())}),this.zipfile.on("entry",async entry=>{if(this.canceled){debug("skipping entry",entry.fileName,{cancelled:this.canceled});return}if(debug("zipfile entry",entry.fileName),entry.fileName.startsWith("__MACOSX/")){this.zipfile.readEntry();return}let destDir=path19.dirname(path19.join(this.opts.dir,entry.fileName));try{await fs19.mkdir(destDir,{recursive:!0});let canonicalDestDir=await fs19.realpath(destDir);if(path19.relative(this.opts.dir,canonicalDestDir).split(path19.sep).includes(".."))throw new Error(`Out of bound path "${canonicalDestDir}" found while processing file ${entry.fileName}`);await this.extractEntry(entry),debug("finished processing",entry.fileName),this.zipfile.readEntry()}catch(err){this.canceled=!0,this.zipfile.close(),reject(err)}})})}async extractEntry(entry){if(this.canceled){debug("skipping entry extraction",entry.fileName,{cancelled:this.canceled});return}this.opts.onEntry&&this.opts.onEntry(entry,this.zipfile);let dest=path19.join(this.opts.dir,entry.fileName),mode=entry.externalFileAttributes>>16&65535,IFMT=61440,IFDIR=16384,symlink=(mode&IFMT)===40960,isDir=(mode&IFMT)===IFDIR;!isDir&&entry.fileName.endsWith("/")&&(isDir=!0);let madeBy=entry.versionMadeBy>>8;isDir||(isDir=madeBy===0&&entry.externalFileAttributes===16),debug("extracting entry",{filename:entry.fileName,isDir,isSymlink:symlink});let procMode=this.getExtractedMode(mode,isDir)&511,destDir=isDir?dest:path19.dirname(dest),mkdirOptions={recursive:!0};if(isDir&&(mkdirOptions.mode=procMode),debug("mkdir",{dir:destDir,...mkdirOptions}),await fs19.mkdir(destDir,mkdirOptions),isDir)return;debug("opening read stream",dest);let readStream=await promisify(this.zipfile.openReadStream.bind(this.zipfile))(entry);if(symlink){let link=await getStream(readStream);debug("creating symlink",link,dest),await fs19.symlink(link,dest)}else await pipeline(readStream,createWriteStream(dest,{mode:procMode}))}getExtractedMode(entryMode,isDir){let mode=entryMode;return mode===0&&(isDir?(this.opts.defaultDirMode&&(mode=parseInt(this.opts.defaultDirMode,10)),mode||(mode=493)):(this.opts.defaultFileMode&&(mode=parseInt(this.opts.defaultFileMode,10)),mode||(mode=420))),mode}};module.exports=async function(zipPath,opts){if(debug("creating target directory",opts.dir),!path19.isAbsolute(opts.dir))throw new Error("Target directory is expected to be absolute");return await fs19.mkdir(opts.dir,{recursive:!0}),opts.dir=await fs19.realpath(opts.dir),new Extractor(zipPath,opts).extract()}}});import fs16 from"node:fs";import os9 from"node:os";import path16 from"node:path";import{execFileSync}from"node:child_process";function resolveNativeHostDirectory(options={}){let env=options.env??process.env,home=(options.homedir??os9.homedir)();switch(options.platform??process.platform){case"darwin":return path16.join(home,"Library/Application Support/Google/Chrome/NativeMessagingHosts");case"linux":return path16.join(home,".config/google-chrome/NativeMessagingHosts");case"win32":return path16.join(env.PROGRAMDATA||"C:\\ProgramData","Google\\Chrome\\NativeMessagingHosts");default:throw new Error(`Unsupported platform: ${String(options.platform??process.platform)}`)}}function unregisterWindowsNativeHost(hostName){let registryKey=`HKCU\\SOFTWARE\\Google\\Chrome\\NativeMessagingHosts\\${hostName}`;try{execFileSync("reg",["delete",registryKey,"/f"],{stdio:"pipe"})}catch{}}function uninstallNativeHostArtifacts(options={},dependencies={}){let{mode="both",silent=!1}=options;if(mode==="both")return["skills","mcp"].map(integrationMode=>uninstallNativeHostArtifacts({...options,mode:integrationMode},dependencies)).every(Boolean);let writeLine=dependencies.writeLine??(line=>console.error(line)),log2=line=>{silent||writeLine(line)};try{let existsSync7=dependencies.existsSync??fs16.existsSync,platform=dependencies.platform??process.platform,hostDir=dependencies.hostDir??resolveNativeHostDirectory({env:dependencies.env,homedir:dependencies.homedir,platform}),unlinkSync=dependencies.unlinkSync??fs16.unlinkSync,unregister=dependencies.unregisterWindowsNativeHost??unregisterWindowsNativeHost,hostName=MEARL_NATIVE_HOST_NAMES[mode],launcherExtension=platform==="win32"?"cmd":"sh",artifacts=[path16.join(hostDir,`${hostName}.json`),path16.join(hostDir,`${hostName}-launcher.${launcherExtension}`)];for(let artifact of artifacts)existsSync7(artifact)&&(unlinkSync(artifact),log2(`✅ Removed: ${artifact}`));return platform==="win32"&&unregister(hostName),!0}catch(error48){return log2(`❌ Uninstall failed: ${error48 instanceof Error?error48.message:String(error48)}`),!1}}var MEARL_NATIVE_HOST_NAMES,init_nativeHost=__esm({"../setup/dist/nativeHost.js"(){"use strict";MEARL_NATIVE_HOST_NAMES={skills:"com.alibaba.mearl.skills",mcp:"com.alibaba.mearl.mcp"}}});var install_exports={};__export(install_exports,{installNativeHost:()=>installNativeHost,parseNativeHostInstallArgs:()=>parseNativeHostInstallArgs,resolveHostDir:()=>resolveHostDir,runCli:()=>runCli,uninstallNativeHost:()=>uninstallNativeHost});import fs17 from"node:fs";import path17 from"node:path";import{execFileSync as execFileSync2}from"node:child_process";import{createRequire as createRequire2}from"node:module";import{fileURLToPath as fileURLToPath2}from"node:url";function resolveHostDir(){return resolveNativeHostDirectory()}function resolveNativeHostPath(){let siblingPath=path17.join(__dirname,"index.js");if(fs17.existsSync(siblingPath))return siblingPath;try{return createRequire2(import.meta.url).resolve("@mearl/native-host/runtime")}catch{throw new Error("Cannot locate native-host runtime entry point. Ensure @mearl/native-host is installed correctly.")}}function registerWindowsNativeHost(hostName,manifestPath){let regKey=`HKCU\\SOFTWARE\\Google\\Chrome\\NativeMessagingHosts\\${hostName}`;execFileSync2("reg",["add",regKey,"/ve","/t","REG_SZ","/d",manifestPath,"/f"],{stdio:"pipe"})}function createLauncherScript(hostDir,hostPath,hostName){let nodePath=path17.resolve(process.execPath);if(process.platform==="win32"){let launcherPath2=path17.join(hostDir,`${hostName}-launcher.cmd`),content2=`@echo off\r
8
8
  "${nodePath}" "${hostPath}" %*\r
9
9
  `;return fs17.writeFileSync(launcherPath2,content2,"utf-8"),launcherPath2}let launcherPath=path17.join(hostDir,`${hostName}-launcher.sh`),content=["#!/bin/sh",`NODE_BIN=${JSON.stringify(nodePath)}`,`HOST_SCRIPT=${JSON.stringify(hostPath)}`,'exec "$NODE_BIN" "$HOST_SCRIPT" "$@"',""].join(`
10
10
  `);return fs17.writeFileSync(launcherPath,content,"utf-8"),fs17.chmodSync(launcherPath,493),launcherPath}async function installNativeHost(options={}){let{mode="both",extensionId=DEFAULT_EXTENSION_ID,silent=!1,skipIfExists=!1}=options;if(mode==="both")return(await Promise.all(ALL_MODES.map(m=>installNativeHost({...options,mode:m})))).every(Boolean);let hostName=MEARL_NATIVE_HOST_NAMES[mode];if(!hostName)throw new Error(`Unknown mode: ${mode}. Expected 'skills' or 'mcp'.`);let log2=(...args)=>{silent||console.error(...args)};try{let hostDir=resolveHostDir();if(skipIfExists){let manifestPath2=path17.join(hostDir,`${hostName}.json`);if(fs17.existsSync(manifestPath2))return log2(`✅ Already installed: ${manifestPath2}`),!0}fs17.existsSync(hostDir)||(fs17.mkdirSync(hostDir,{recursive:!0}),log2(`✅ Created directory: ${hostDir}`));let resolvedHostPath=resolveNativeHostPath();log2(`✅ Native host path: ${resolvedHostPath}`);let launcherPath=createLauncherScript(hostDir,resolvedHostPath,hostName);log2(`✅ Launcher script: ${launcherPath}`);let manifest={name:hostName,description:"Mearl Native Messaging Bridge",path:launcherPath,type:"stdio",allowed_origins:[`chrome-extension://${extensionId}/`]},manifestPath=path17.join(hostDir,`${hostName}.json`);return fs17.writeFileSync(manifestPath,JSON.stringify(manifest,null,2)),process.platform==="win32"?(registerWindowsNativeHost(hostName,manifestPath),log2(`✅ Windows registry key created for: ${hostName}`)):fs17.chmodSync(manifestPath,420),log2(`✅ Manifest installed: ${manifestPath}`),log2(`✅ Extension ID: ${extensionId}`),log2(`✅ Host name: ${hostName}`),!0}catch(error48){return log2(`❌ Installation failed: ${error48 instanceof Error?error48.message:String(error48)}`),error48 instanceof Error&&"code"in error48&&error48.code==="EACCES"&&log2(`
@@ -56,7 +56,7 @@ ${truncated}...`}function extractFields(data,fields){if(fields.length>100)throw
56
56
  if (!el) return { error: 'Element not found: ' + sel };
57
57
  return scroll.call(el, dir, dist, sel, policy);
58
58
  })()`}function unwrapPageScrollResult(result,missingResultMessage){if(!result)throw new Error(missingResultMessage);if("error"in result)throw new Error(result.error);return result}var IPHONE_SAFARI_26_USER_AGENT="Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1",ANDROID_CHROME_152_USER_AGENT="Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Mobile Safari/537.36",DEVICE_PRESETS={"iphone-17-pro":{width:402,height:874,deviceScaleFactor:3,mobile:!0,userAgent:IPHONE_SAFARI_26_USER_AGENT,platform:"iPhone",platformVersion:"26.0",architecture:"",model:"iPhone",safeAreaInsets:{top:62,right:0,bottom:34,left:0},landscapeSafeAreaInsets:{top:0,right:62,bottom:21,left:62},appProfileModel:"iPhone 17 Pro",appProfileOs:"ios",appearance:{cutout:"dynamic-island"}},"iphone-17e":{width:390,height:844,deviceScaleFactor:3,mobile:!0,userAgent:IPHONE_SAFARI_26_USER_AGENT,platform:"iPhone",platformVersion:"26.0",architecture:"",model:"iPhone",safeAreaInsets:{top:47,right:0,bottom:34,left:0},landscapeSafeAreaInsets:{top:0,right:47,bottom:21,left:47},appProfileModel:"iPhone 17e",appProfileOs:"ios",appearance:{cutout:"notch"}},"pixel-11":{width:412,height:923,deviceScaleFactor:2.625,mobile:!0,userAgent:ANDROID_CHROME_152_USER_AGENT,platform:"Android",platformVersion:"17",architecture:"arm",model:"Pixel 11",safeAreaInsets:{top:30,right:0,bottom:24,left:0},landscapeSafeAreaInsets:{top:0,right:24,bottom:0,left:24},appProfileModel:"Pixel 11",appProfileOs:"android",appearance:{cutout:"none"}},"ipad-mini-a17-pro":{width:744,height:1133,deviceScaleFactor:2,mobile:!1,touch:!0,userAgent:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Safari/605.1.15",platform:"macOS",platformVersion:"10.15.7",architecture:"x86",model:"",safeAreaInsets:{top:24,right:0,bottom:20,left:0},landscapeSafeAreaInsets:{top:0,right:24,bottom:20,left:24},appProfileModel:"iPad mini (A17 Pro)",appProfileOs:"ios",appearance:{cutout:"none"}},"galaxy-s26":{width:360,height:780,deviceScaleFactor:3,mobile:!0,userAgent:ANDROID_CHROME_152_USER_AGENT,platform:"Android",platformVersion:"16",architecture:"arm",model:"SM-S942B",safeAreaInsets:{top:30,right:0,bottom:24,left:0},landscapeSafeAreaInsets:{top:0,right:24,bottom:0,left:24},appProfileModel:"SM-S942B",appProfileOs:"android",appearance:{cutout:"none"}},"pura-x-max":{width:664,height:939,deviceScaleFactor:2.75,mobile:!0,userAgent:"Mozilla/5.0 (Phone;OpenHarmony 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 ArkWeb/6.0.0.42 Mobile",platform:"OpenHarmony",platformVersion:"6.0",architecture:"",model:"HUAWEI Pura X Max",safeAreaInsets:{top:30,right:0,bottom:24,left:0},landscapeSafeAreaInsets:{top:0,right:24,bottom:0,left:24},appProfileModel:"HUAWEI Pura X Max",appProfileOs:"android",appearance:{cutout:"none"}},"iphone-15-pro":{width:393,height:852,deviceScaleFactor:3,mobile:!0,userAgent:"Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1",platform:"iPhone",platformVersion:"17.0",architecture:"",model:"iPhone",safeAreaInsets:{top:59,right:0,bottom:34,left:0},landscapeSafeAreaInsets:{top:0,right:59,bottom:21,left:59},appProfileModel:"iPhone 15 Pro",appProfileOs:"ios",appearance:{cutout:"dynamic-island"}},"iphone-se":{width:375,height:667,deviceScaleFactor:2,mobile:!0,userAgent:"Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1",platform:"iPhone",platformVersion:"16.0",architecture:"",model:"iPhone",safeAreaInsets:{top:20,right:0,bottom:0,left:0},landscapeSafeAreaInsets:{top:0,right:0,bottom:0,left:0},appProfileModel:"iPhone SE",appProfileOs:"ios",appearance:{cutout:"none"}},"pixel-8":{width:412,height:915,deviceScaleFactor:2.625,mobile:!0,userAgent:"Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36",platform:"Android",platformVersion:"14",architecture:"",model:"Pixel 8",safeAreaInsets:{top:30,right:0,bottom:24,left:0},landscapeSafeAreaInsets:{top:0,right:24,bottom:0,left:24},appProfileModel:"Pixel 8",appProfileOs:"android",appearance:{cutout:"none"}},"ipad-mini":{width:768,height:1024,deviceScaleFactor:2,mobile:!1,touch:!0,userAgent:"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15",platform:"macOS",platformVersion:"10.15.7",architecture:"x86",model:"",safeAreaInsets:{top:24,right:0,bottom:20,left:0},landscapeSafeAreaInsets:{top:0,right:24,bottom:20,left:24},appProfileModel:"iPad mini",appProfileOs:"ios",appearance:{cutout:"none"}},"galaxy-s23":{width:360,height:780,deviceScaleFactor:3,mobile:!0,userAgent:"Mozilla/5.0 (Linux; Android 14; SM-S911B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36",platform:"Android",platformVersion:"14",architecture:"",model:"SM-S911B",safeAreaInsets:{top:30,right:0,bottom:24,left:0},landscapeSafeAreaInsets:{top:0,right:24,bottom:0,left:24},appProfileModel:"SM-S911B",appProfileOs:"android",appearance:{cutout:"none"}}};function resolveEmulationConfig(input){if(input.preset&&!(input.preset in DEVICE_PRESETS))throw new Error(`set_device_emulation: unknown preset "${input.preset}". Available: ${Object.keys(DEVICE_PRESETS).join(", ")}`);let preset=input.preset?DEVICE_PRESETS[input.preset]:void 0,width=input.width??preset?.width,height=input.height??preset?.height;if(!width||!height)throw new Error('set_device_emulation: must provide either "preset" or both "width" and "height"');let mobile=input.mobile??preset?.mobile??!0,orientation=input.orientation??"portrait",scale=input.scale??1;if(!Number.isFinite(scale)||scale<=0)throw new Error('set_device_emulation: "scale" must be a finite positive number');let[finalWidth,finalHeight]=orientation==="landscape"?[height,width]:[width,height],userAgent=input.userAgent??preset?.userAgent??"";if(!userAgent)throw new Error('set_device_emulation: "userAgent" is required when no preset is used (preset supplies a default)');let safeAreaInsets=orientation==="landscape"?preset?.landscapeSafeAreaInsets??{top:preset?.safeAreaInsets.left??0,right:preset?.safeAreaInsets.top??0,bottom:preset?.safeAreaInsets.right??0,left:preset?.safeAreaInsets.bottom??0}:preset?.safeAreaInsets??{top:0,right:0,bottom:0,left:0},appearance={cutout:orientation==="landscape"?"none":preset?.appearance.cutout??"none"};return{width:finalWidth,height:finalHeight,deviceScaleFactor:input.deviceScaleFactor??preset?.deviceScaleFactor??(mobile?2:1),scale,mobile,userAgent,platform:preset?.platform??(mobile?"iPhone":"macOS"),platformVersion:preset?.platformVersion??"",architecture:preset?.architecture??"",model:preset?.model??"",touch:input.touch??preset?.touch??mobile,orientation,safeAreaInsets,appearance,presetName:input.preset}}function buildEnableEmulationCommands(config2){let safeAreaInsets=config2.safeAreaInsets??{top:0,right:0,bottom:0,left:0};return[{method:"Emulation.setDeviceMetricsOverride",params:{width:config2.width,height:config2.height,screenWidth:config2.width,screenHeight:config2.height,deviceScaleFactor:config2.deviceScaleFactor,scale:config2.scale??1,...(config2.scale??1)!==1?{dontSetVisibleSize:!0}:{},mobile:config2.mobile,screenOrientation:{type:config2.orientation==="landscape"?"landscapePrimary":"portraitPrimary",angle:config2.orientation==="landscape"?90:0}}},...(config2.scale??1)!==1?[{method:"Emulation.setVisibleSize",params:{width:Math.max(1,Math.round(config2.width*(config2.scale??1))),height:Math.max(1,Math.round(config2.height*(config2.scale??1)))}}]:[],{method:"Emulation.setUserAgentOverride",params:{userAgent:config2.userAgent,platform:config2.platform,userAgentMetadata:{mobile:config2.mobile,platform:config2.platform,platformVersion:config2.platformVersion,architecture:config2.architecture,model:config2.model}}},{method:"Emulation.setTouchEmulationEnabled",params:config2.touch?{enabled:!0,maxTouchPoints:5}:{enabled:!1}},{method:"Emulation.setEmitTouchEventsForMouse",params:{enabled:config2.touch,configuration:"mobile"}},{method:"Emulation.setSafeAreaInsetsOverride",params:{insets:{top:safeAreaInsets.top,topMax:safeAreaInsets.top,right:safeAreaInsets.right,rightMax:safeAreaInsets.right,bottom:safeAreaInsets.bottom,bottomMax:safeAreaInsets.bottom,left:safeAreaInsets.left,leftMax:safeAreaInsets.left}},optional:!0}]}function buildDisableEmulationCommands(){return[{method:"Emulation.clearDeviceMetricsOverride",params:{}},{method:"Emulation.setUserAgentOverride",params:{userAgent:""}},{method:"Emulation.setTouchEmulationEnabled",params:{enabled:!1}},{method:"Emulation.setEmitTouchEventsForMouse",params:{enabled:!1}},{method:"Emulation.setSafeAreaInsetsOverride",params:{insets:{}},optional:!0}]}function matchAXNodesByText(nodes,options){let{text,role,exact=!0}=options;if(typeof text!="string"||text.length===0)return{hits:[]};let hits=[];for(let node of nodes){if(node.ignored||node.backendDOMNodeId===void 0)continue;let name=node.name?.value;if(typeof name!="string"||name.length===0||!(exact?name===text:name.includes(text)))continue;let nodeRole=node.role?.value??"";role&&nodeRole!==role||hits.push({backendNodeId:node.backendDOMNodeId,role:nodeRole,name})}return{hits}}function formatAXTextMatchCandidates(hits,limit=5){return hits.slice(0,limit).map((hit,idx)=>{let name=hit.name.length>60?`${hit.name.slice(0,60)}…`:hit.name,role=hit.role||"(no-role)";return` ${idx+1}. ${role} "${name}"`}).join(`
59
- `)}function resolvePageClickDispatchPolicy(clickMode,visibilityState,touchEmulationEnabled){return clickMode!==void 0&&clickMode!=="auto"?{clickMode,stateAwareControls:clickMode==="dom"}:visibilityState==="hidden"?{clickMode:"dom",stateAwareControls:!0,fallbackReason:"page-hidden"}:{clickMode:touchEmulationEnabled?"touch":"mouse",stateAwareControls:!0}}function createPageClickResult(requestedTarget,dispatchTarget){let normalizedDispatchTarget={tag:dispatchTarget.tag,text:dispatchTarget.text},resolvedTarget={tag:dispatchTarget.sourceTarget?.tag??normalizedDispatchTarget.tag,text:dispatchTarget.sourceTarget?.text??normalizedDispatchTarget.text,strategy:dispatchTarget.strategy??"self",distance:dispatchTarget.distance??0};return{clicked:!0,tag:normalizedDispatchTarget.tag,text:requestedTarget.name||normalizedDispatchTarget.text,requestedTarget,resolvedTarget,dispatchTarget:normalizedDispatchTarget,...dispatchTarget.hitTarget?{hitTarget:dispatchTarget.hitTarget}:{},...dispatchTarget.frame?{frame:dispatchTarget.frame}:{},...dispatchTarget.coordinates?{coordinates:dispatchTarget.coordinates}:{},...dispatchTarget.actionableAncestorCandidates?.length?{actionableAncestorCandidates:dispatchTarget.actionableAncestorCandidates}:{},...dispatchTarget.controlState?{controlState:dispatchTarget.controlState}:{},...dispatchTarget.dispatchMode?{dispatchMode:dispatchTarget.dispatchMode}:{},...dispatchTarget.pointerType?{pointerType:dispatchTarget.pointerType}:{}}}function clickElementViaJS(){let el=this.nodeType===3?this.parentElement:this;if(!el||!el.isConnected)return null;let sourceTarget={tag:el.tagName?el.tagName.toLowerCase():"",text:(el.textContent||"").trim().slice(0,100)};if(el.tagName==="OPTION"){let select=el.closest("select");if(select){let desc=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,"value");desc&&desc.set?desc.set.call(select,el.value):select.value=el.value,select.dispatchEvent(new Event("input",{bubbles:!0})),select.dispatchEvent(new Event("change",{bubbles:!0}));let rect2=select.getBoundingClientRect();return{tag:"option",text:(el.textContent||"").trim().slice(0,100),cx:rect2.x+rect2.width/2,cy:rect2.y+rect2.height/2,strategy:"self",distance:0,sourceTarget}}}function isActionable(node){if(!node||node.nodeType!==1)return!1;if(/^(A|BUTTON|INPUT|SELECT|TEXTAREA|SUMMARY|DETAILS|LABEL)$/i.test(node.tagName)||/button|link|tab|menuitem|checkbox|radio|option|switch/i.test(node.getAttribute("role")||"")||node.isContentEditable||typeof node.onclick=="function")return!0;let tabIndexAttribute=node.getAttribute("tabindex");if(tabIndexAttribute===null)return!1;let tabIndex=Number(tabIndexAttribute);return Number.isFinite(tabIndex)&&tabIndex>=0}let target=el,strategy="self",distance=0;if(!isActionable(target)){let ancestor=target.parentElement;for(;ancestor&&ancestor!==document.body&&distance<6;){if(distance+=1,isActionable(ancestor)){target=ancestor,strategy="actionable-ancestor";break}ancestor=ancestor.parentElement}}if(strategy==="self"&&!isActionable(target)){let cursor=target,descendantDistance=0;for(;cursor.children.length===1;){let child=cursor.children[0];if(!child||child.nodeType!==1||!(child.textContent||"").trim())break;cursor=child,descendantDistance+=1}cursor!==target?(target=cursor,strategy="single-child-descendant",distance=descendantDistance):distance=0}let rect=target.getBoundingClientRect();(rect.top<0||rect.left<0||rect.bottom>window.innerHeight||rect.right>window.innerWidth)&&(target.scrollIntoView({block:"center",inline:"center",behavior:"instant"}),rect=target.getBoundingClientRect());let cx=rect.x+rect.width/2,cy=rect.y+rect.height/2;try{let touch=new Touch({identifier:Date.now(),target,clientX:cx,clientY:cy});target.dispatchEvent(new TouchEvent("touchstart",{touches:[touch],targetTouches:[touch],changedTouches:[touch],bubbles:!0,cancelable:!0})),target.dispatchEvent(new TouchEvent("touchend",{touches:[],targetTouches:[],changedTouches:[touch],bubbles:!0,cancelable:!0}))}catch{}let controlState,controlType=target.tagName==="INPUT"&&/^(checkbox|radio)$/i.test(target.type||"")?String(target.type).toLowerCase():"";if(controlType==="checkbox"||controlType==="radio"){let checkedBefore=!!target.checked;target.click(),controlState={type:controlType,checkedBefore,checkedAfter:!!target.checked}}else target.click();return{tag:target.tagName?target.tagName.toLowerCase():"",text:(target.textContent||"").trim().slice(0,100),cx,cy,strategy,distance,sourceTarget,...controlState?{controlState}:{}}}function getClickCoordsFromNode(){let el=this.nodeType===3?this.parentElement:this;if(!el||!el.isConnected||!el.getBoundingClientRect)return null;let sourceTarget={tag:el.tagName?el.tagName.toLowerCase():"",text:(el.textContent||"").trim().slice(0,100)};function isActionable(node){if(!node||node.nodeType!==1)return!1;if(/^(A|BUTTON|INPUT|SELECT|TEXTAREA|SUMMARY|DETAILS|LABEL)$/i.test(node.tagName)||/button|link|tab|menuitem|checkbox|radio|option|switch/i.test(node.getAttribute("role")||"")||node.isContentEditable||typeof node.onclick=="function")return!0;let tabIndexAttribute=node.getAttribute("tabindex");if(tabIndexAttribute===null)return!1;let tabIndex=Number(tabIndexAttribute);return Number.isFinite(tabIndex)&&tabIndex>=0}let target=el,strategy="self",distance=0;if(!isActionable(target)){let ancestor=target.parentElement;for(;ancestor&&ancestor!==document.body&&distance<6;){if(distance+=1,isActionable(ancestor)){target=ancestor,strategy="actionable-ancestor";break}ancestor=ancestor.parentElement}}if(strategy==="self"&&!isActionable(target)){let cursor=target,descendantDistance=0;for(;cursor.children.length===1;){let child=cursor.children[0];if(!child||child.nodeType!==1||!(child.textContent||"").trim())break;cursor=child,descendantDistance+=1}cursor!==target?(target=cursor,strategy="single-child-descendant",distance=descendantDistance):distance=0}let actionableAncestorCandidates=[];if(strategy==="self"&&!isActionable(target)){let sourceRect=el.getBoundingClientRect(),ancestor=el.parentElement,candidateDistance=0;for(;ancestor&&ancestor!==document.body&&candidateDistance<6;){candidateDistance+=1;let rect2=ancestor.getBoundingClientRect(),reason=getComputedStyle(ancestor).cursor==="pointer"?"cursor-pointer":rect2.width*rect2.height>sourceRect.width*sourceRect.height*1.5?"containing-block":null;if(reason){let escapeCss=value=>globalThis.CSS&&typeof globalThis.CSS.escape=="function"?globalThis.CSS.escape(value):value.replace(/[^a-zA-Z0-9_-]/g,character=>`\\${character}`),candidateSelector=ancestor.id?`#${escapeCss(ancestor.id)}`:"";if(!candidateSelector){let path19=[],cursor=ancestor;for(;cursor&&cursor!==document.documentElement&&path19.length<5;){let parent=cursor.parentElement,tag=cursor.tagName.toLowerCase();if(!parent){path19.unshift(tag);break}let siblings=Array.from(parent.children).filter(item=>item.tagName===cursor.tagName),index=siblings.indexOf(cursor)+1;path19.unshift(siblings.length>1?`${tag}:nth-of-type(${index})`:tag),cursor=parent}candidateSelector=path19.join(" > ")}candidateSelector&&actionableAncestorCandidates.push({selector:candidateSelector,tag:ancestor.tagName.toLowerCase(),text:(ancestor.textContent||"").trim().slice(0,100),distance:candidateDistance,reason})}if(actionableAncestorCandidates.length>=3)break;ancestor=ancestor.parentElement}}let rect=target.getBoundingClientRect();return(rect.top<0||rect.left<0||rect.bottom>window.innerHeight||rect.right>window.innerWidth)&&(target.scrollIntoView({block:"center",inline:"center",behavior:"instant"}),rect=target.getBoundingClientRect()),{x:rect.x+rect.width/2,y:rect.y+rect.height/2,tag:target.tagName?target.tagName.toLowerCase():"",text:(target.textContent||"").trim().slice(0,100),...target.tagName==="INPUT"?{inputType:String(target.type||"").toLowerCase()}:{},strategy,distance,sourceTarget,...actionableAncestorCandidates.length>0?{actionableAncestorCandidates}:{}}}function isPageDragPoint(value){if(!value||typeof value!="object")return!1;let point=value;return Number.isFinite(point.x)&&Number.isFinite(point.y)&&point.x>=0&&point.y>=0}function resolveEndpoint(value,name){if(typeof value=="string"&&value.trim().length>0)return value.trim();if(isPageDragPoint(value))return{x:value.x,y:value.y};throw new Error(`page_drag: "${name}" must be a non-empty CSS/@ref selector or { x, y } viewport point.`)}function resolvePageDragInput(data){if(!data||typeof data!="object")throw new Error("page_drag: payload is required");if(data.dragMode!==void 0&&!["auto","dom","mouse","touch"].includes(data.dragMode))throw new Error('page_drag: "dragMode" must be one of auto, dom, mouse, touch');let durationMs=data.durationMs??400;if(!Number.isFinite(durationMs)||durationMs<0||durationMs>5e3)throw new Error('page_drag: "durationMs" must be between 0 and 5000.');return{from:resolveEndpoint(data.from,"from"),to:resolveEndpoint(data.to,"to"),dragMode:data.dragMode??"auto",durationMs:Math.round(durationMs)}}function resolvePageDragDispatchPolicy(dragMode,visibilityState,touchEmulationEnabled){let requestedMode=dragMode??"auto",pointerType=requestedMode==="mouse"||requestedMode==="touch"?requestedMode:touchEmulationEnabled?"touch":"mouse";return requestedMode==="dom"?{dispatchMode:"dom",pointerType}:requestedMode==="auto"&&visibilityState==="hidden"?{dispatchMode:"dom",pointerType,fallbackReason:"page-hidden"}:{dispatchMode:"trusted-input",pointerType}}function buildPageDragPath(from,to,durationMs){let steps=Math.max(2,Math.min(60,Math.ceil(durationMs/25)));return{points:Array.from({length:steps},(_,index)=>{let ratio=(index+1)/steps;return{x:from.x+(to.x-from.x)*ratio,y:from.y+(to.y-from.y)*ratio}}),intervalMs:durationMs/steps}}function dragBetweenPointsInPage(from,points,pointerType){let target=document.elementFromPoint(from.x,from.y);if(!target)return{dragged:!1,steps:0,error:`No element found at drag start point (${from.x}, ${from.y})`};if(points.length===0)return{dragged:!1,steps:0,error:"Drag path must contain at least one point"};let view=target.ownerDocument.defaultView??window,realm=view,pointerId=1,pointerInit=(point,buttons,pressure)=>({bubbles:!0,cancelable:!0,composed:!0,view,clientX:point.x,clientY:point.y,screenX:point.x,screenY:point.y,button:0,buttons,pointerId,pointerType,isPrimary:!0,pressure,width:1,height:1}),dispatchPointer=(type,point,buttons,pressure)=>typeof realm.PointerEvent!="function"?!1:(target.dispatchEvent(new realm.PointerEvent(type,pointerInit(point,buttons,pressure))),!0),dispatchMouse=(type,point,buttons)=>typeof realm.MouseEvent!="function"?!1:(target.dispatchEvent(new realm.MouseEvent(type,{bubbles:!0,cancelable:!0,composed:!0,view,clientX:point.x,clientY:point.y,screenX:point.x,screenY:point.y,button:0,buttons})),!0),createTouch=point=>{let init={identifier:pointerId,target,clientX:point.x,clientY:point.y,screenX:point.x,screenY:point.y,pageX:point.x+view.scrollX,pageY:point.y+view.scrollY,radiusX:1,radiusY:1,rotationAngle:0,force:.5};return typeof realm.Touch=="function"?new realm.Touch(init):init},dispatchTouch=(type,point)=>{if(typeof realm.TouchEvent!="function")return!1;let touch=createTouch(point),activeTouches=type==="touchend"?[]:[touch];return target.dispatchEvent(new realm.TouchEvent(type,{bubbles:!0,cancelable:!0,composed:!0,touches:activeTouches,targetTouches:activeTouches,changedTouches:[touch]})),!0},dispatched=dispatchPointer("pointerdown",from,1,.5);dispatched=pointerType==="touch"?dispatchTouch("touchstart",from)||dispatched:dispatchMouse("mousedown",from,1)||dispatched;for(let point of points)dispatched=dispatchPointer("pointermove",point,1,.5)||dispatched,dispatched=pointerType==="touch"?dispatchTouch("touchmove",point)||dispatched:dispatchMouse("mousemove",point,1)||dispatched;let end=points[points.length-1];return dispatched=pointerType==="touch"?dispatchTouch("touchend",end)||dispatched:dispatchMouse("mouseup",end,0)||dispatched,dispatched=dispatchPointer("pointerup",end,0,0)||dispatched,dispatched?{dragged:!0,steps:points.length}:{dragged:!1,steps:0,error:"This page does not support synthetic drag events"}}var DRAG_BETWEEN_POINTS_IN_PAGE_SOURCE=dragBetweenPointsInPage.toString();function buildPageDragDomExpression(from,points,pointerType){return`(${DRAG_BETWEEN_POINTS_IN_PAGE_SOURCE})(${JSON.stringify(from)}, ${JSON.stringify(points)}, ${JSON.stringify(pointerType)})`}function unwrapPageDragDomResult(result){if(!result)throw new Error("page_drag: DOM simulation returned no result");if(!result.dragged)throw new Error(`page_drag: ${result.error}`);return result}function getDragCoordsFromNode(){let el=this.nodeType===Node.TEXT_NODE?this.parentElement:this;if(!el||typeof el.getBoundingClientRect!="function")return null;let rect=el.getBoundingClientRect(),viewportWidth=window.visualViewport?.width??window.innerWidth,viewportHeight=window.visualViewport?.height??window.innerHeight;if(rect.width<=0||rect.height<=0)return{x:0,y:0,tag:"",text:"",error:"Element has no visible bounds"};if(rect.right<=0||rect.bottom<=0||rect.left>=viewportWidth||rect.top>=viewportHeight)return{x:0,y:0,tag:"",text:"",error:"Element is outside the current viewport; scroll it into view before dragging"};let x=Math.min(Math.max(rect.left+rect.width/2,0),Math.max(viewportWidth-1,0)),y=Math.min(Math.max(rect.top+rect.height/2,0),Math.max(viewportHeight-1,0));return{x,y,tag:el.tagName?.toLowerCase()??"",text:(el.textContent??"").trim().slice(0,100)}}var SKIP_ROLES=new Set(["none","generic","InlineTextBox","LineBreak","paragraph","Section","LabelText"]),ALWAYS_SKIP_ROLES=new Set(["InlineTextBox","LineBreak","graphics-symbol","graphics-document"]),INTERACTIVE_ROLES=new Set(["button","checkbox","combobox","gridcell","link","listbox","menuitem","menuitemcheckbox","menuitemradio","option","radio","scrollbar","searchbox","slider","spinbutton","switch","tab","textbox","treeitem"]);function isInteractiveSnapshotNode(node){let focusedControl=!!node.focused&&node.role!=="RootWebArea"&&node.role!=="WebArea";return INTERACTIVE_ROLES.has(node.role)||focusedControl||node.checked!==void 0||node.expanded!==void 0||!!node.selected}function hasInteractiveSnapshotNode(node){return node?isInteractiveSnapshotNode(node)?!0:(node.children??[]).some(hasInteractiveSnapshotNode):!1}var CHECKABLE_AX_ROLES=new Set(["checkbox","menuitemcheckbox","menuitemradio","radio","switch"]);function resolveDOMSnapshotViewportBounds(metrics){let viewport=metrics.visualViewport??metrics.cssVisualViewport;return normalizePageViewportBounds({left:viewport?.pageX??0,top:viewport?.pageY??0,width:viewport?.clientWidth,height:viewport?.clientHeight})}function normalizePageViewportBounds(value){if(!value||typeof value!="object")return null;let{left,top,width,height}=value;return typeof left!="number"||typeof top!="number"||typeof width!="number"||typeof height!="number"||!Number.isFinite(left)||!Number.isFinite(top)||!Number.isFinite(width)||!Number.isFinite(height)||width<=0||height<=0?null:{left,top,width,height}}function readDOMCheckedState(){let tag=String(this&&this.tagName||"").toLowerCase(),type=String(this&&this.type||"").toLowerCase();if(tag==="input"&&(type==="checkbox"||type==="radio"))return!!this.checked;let ariaChecked=this&&this.getAttribute&&this.getAttribute("aria-checked");if(ariaChecked==="mixed")return"mixed";if(ariaChecked==="true")return!0;if(ariaChecked==="false")return!1}async function reconcileAXCheckedStates(nodes,readCheckedState){let candidates=nodes.filter(node=>node.backendDOMNodeId!==void 0&&CHECKABLE_AX_ROLES.has(node.role?.value??"")),nextIndex=0,workers=Array.from({length:Math.min(8,candidates.length)},async()=>{for(;nextIndex<candidates.length;){let node=candidates[nextIndex++];if(!(!node||node.backendDOMNodeId===void 0))try{let checked=await readCheckedState(node.backendDOMNodeId);if(checked===void 0)continue;let properties=node.properties??=[],existing=properties.find(property=>property.name==="checked");existing?existing.value.value=checked:properties.push({name:"checked",value:{value:checked}})}catch{}}});await Promise.all(workers)}function extractAXProperties(node){let result={};if(!node.properties)return result;for(let prop of node.properties)switch(prop.name){case"focused":prop.value.value===!0&&(result.focused=!0);break;case"checked":result.checked=prop.value.value==="mixed"?"mixed":prop.value.value===!0;break;case"disabled":prop.value.value===!0&&(result.disabled=!0);break;case"required":prop.value.value===!0&&(result.required=!0);break;case"expanded":result.expanded=prop.value.value===!0;break;case"selected":prop.value.value===!0&&(result.selected=!0);break;case"level":result.level=prop.value.value;break}return result}function formatSnapshotNode(node,indent,lines){let line=" ".repeat(indent);node.ref&&(line+=`${node.ref} `),line+=`[${node.role}`,node.name&&(line+=` "${node.name}"`),line+="]";let annotations=[];if(node.value!==void 0&&annotations.push(`value="${node.value}"`),node.focused&&annotations.push("focused"),node.checked===!0&&annotations.push("checked"),node.checked==="mixed"&&annotations.push("mixed"),node.disabled&&annotations.push("disabled"),node.required&&annotations.push("required"),node.expanded===!0&&annotations.push("expanded"),node.expanded===!1&&annotations.push("collapsed"),node.selected&&annotations.push("selected"),node.level!==void 0&&annotations.push(`level=${node.level}`),node.description&&annotations.push(`desc="${node.description}"`),annotations.length>0&&(line+=` (${annotations.join(", ")})`),lines.push(line),node.children)for(let child of node.children)formatSnapshotNode(child,indent+1,lines)}function filterSnapshotTree(node,mode,visibleBackendNodeIds){if(!node)return null;if(mode==="full")return node;let keepSelf=mode==="interactive"?isInteractiveSnapshotNode(node):node.backendDOMNodeId!==void 0&&!!visibleBackendNodeIds?.has(node.backendDOMNodeId);if(mode==="interactive"&&keepSelf)return node;let children=(node.children??[]).map(child=>filterSnapshotTree(child,mode,visibleBackendNodeIds)).filter(child=>child!==null);return!keepSelf&&children.length===0?null:{...node,...children.length>0?{children}:{children:void 0}}}function snapshotNodeMatchesQuery(node,query){return query.role&&node.role!==query.role?!1:query.text===void 0?!0:query.exact??!0?node.name===query.text:node.name.includes(query.text)}function resolvePageSnapshotQuery(query){if(query===void 0)return;if(!query||typeof query!="object"||Array.isArray(query))throw new Error("page_snapshot: query must be an object");let{text,role,exact}=query;if(text!==void 0&&(typeof text!="string"||!text.trim()))throw new Error("page_snapshot: query.text must be a non-empty string");if(role!==void 0&&(typeof role!="string"||!role.trim()))throw new Error("page_snapshot: query.role must be a non-empty string");if(text===void 0&&role===void 0)throw new Error("page_snapshot: query must include text or role");if(exact!==void 0&&typeof exact!="boolean")throw new Error("page_snapshot: query.exact must be a boolean");return{...text!==void 0?{text}:{},...role!==void 0?{role}:{},...exact!==void 0?{exact}:{}}}function snapshotQueryMatch(node){return{...node.ref?{ref:node.ref}:{},role:node.role,name:node.name,...node.value!==void 0?{value:node.value}:{},...node.disabled?{disabled:!0}:{},...node.checked!==void 0?{checked:node.checked}:{},...node.selected?{selected:!0}:{},...node.expanded!==void 0?{expanded:node.expanded}:{}}}function compactSnapshotQueryField(value){if(value.length<=2048)return{value,truncated:!1};let marker="… [truncated] …",remaining=2048-marker.length,head=Math.ceil(remaining/2),tail=Math.floor(remaining/2);return{value:value.slice(0,head)+marker+value.slice(-tail),truncated:!0}}function compactSnapshotQueryMatch(match){let role=compactSnapshotQueryField(match.role),name=compactSnapshotQueryField(match.name),value=match.value===void 0?void 0:compactSnapshotQueryField(match.value);return{match:{...match,role:role.value,name:name.value,...value?{value:value.value}:{}},truncated:role.truncated||name.truncated||!!value?.truncated}}function limitPageSnapshotQueryMatches(matches){let limited=[],encoder=new TextEncoder,bytes=2,truncated=!1;for(let candidate of matches){if(limited.length>=100){truncated=!0;break}let compacted=compactSnapshotQueryMatch(candidate),candidateBytes=encoder.encode(JSON.stringify(compacted.match)).byteLength+(limited.length>0?1:0);if(bytes+candidateBytes>262144){truncated=!0;break}limited.push(compacted.match),bytes+=candidateBytes,truncated=truncated||compacted.truncated}return limited.length<matches.length&&(truncated=!0),{matches:limited,truncated}}function filterSnapshotTreeByQuery(node,query){if(!node)return{tree:null,matches:[]};let matches=[],children=[];for(let child of node.children??[]){let childResult=filterSnapshotTreeByQuery(child,query);matches.push(...childResult.matches),childResult.tree&&children.push(childResult.tree)}let matchesSelf=snapshotNodeMatchesQuery(node,query);return matchesSelf&&matches.unshift(snapshotQueryMatch(node)),!matchesSelf&&children.length===0?{tree:null,matches}:{tree:{...node,...children.length>0?{children}:{children:void 0}},matches}}function countSnapshotNodes(node){return node?1+(node.children??[]).reduce((total,child)=>total+countSnapshotNodes(child),0):0}function takeHeadTail(items,limit){let available=Math.max(0,Math.floor(limit)-1),tailCount=available>1?Math.max(1,Math.floor(available*.3)):0,headCount=Math.max(0,available-tailCount);return{items:[...items.slice(0,headCount),...items.slice(Math.max(headCount,items.length-tailCount))],headCount}}function formatSnapshotWithLimits(lines,limits={}){let maxNodes=limits.maxNodes===void 0||limits.maxNodes===0?1/0:Math.max(3,Math.floor(limits.maxNodes)),maxChars=limits.maxChars===void 0?6e4:limits.maxChars===0?1/0:Math.max(200,Math.floor(limits.maxChars)),outputLines=lines,truncated=!1;if(outputLines.length>maxNodes){let originalCount=outputLines.length,selected=takeHeadTail(outputLines,maxNodes);outputLines=[...selected.items.slice(0,selected.headCount),`... [snapshot nodes omitted: showing ${selected.items.length} of ${originalCount}; use rootSelector or mode:"viewport"]`,...selected.items.slice(selected.headCount)],truncated=!0}let snapshot=outputLines.join(`
59
+ `)}var PAGE_CLICK_HIDDEN_TOUCH_ERROR='page_click: clickMode "touch" requires a visible page, but the target is hidden or in a background tab. Use clickMode "auto" for DOM fallback, activate the tab, or use "mouse" when trusted touch is not required.';function resolvePageClickDispatchPolicy(clickMode,visibilityState,touchEmulationEnabled){return clickMode!==void 0&&clickMode!=="auto"?{clickMode,stateAwareControls:clickMode==="dom"}:visibilityState==="hidden"?{clickMode:"dom",stateAwareControls:!0,fallbackReason:"page-hidden"}:{clickMode:touchEmulationEnabled?"touch":"mouse",stateAwareControls:!0}}function createPageClickResult(requestedTarget,dispatchTarget){let normalizedDispatchTarget={tag:dispatchTarget.tag,text:dispatchTarget.text},resolvedTarget={tag:dispatchTarget.sourceTarget?.tag??normalizedDispatchTarget.tag,text:dispatchTarget.sourceTarget?.text??normalizedDispatchTarget.text,strategy:dispatchTarget.strategy??"self",distance:dispatchTarget.distance??0};return{clicked:!0,tag:normalizedDispatchTarget.tag,text:requestedTarget.name||normalizedDispatchTarget.text,requestedTarget,resolvedTarget,dispatchTarget:normalizedDispatchTarget,...dispatchTarget.hitTarget?{hitTarget:dispatchTarget.hitTarget}:{},...dispatchTarget.frame?{frame:dispatchTarget.frame}:{},...dispatchTarget.coordinates?{coordinates:dispatchTarget.coordinates}:{},...dispatchTarget.actionableAncestorCandidates?.length?{actionableAncestorCandidates:dispatchTarget.actionableAncestorCandidates}:{},...dispatchTarget.controlState?{controlState:dispatchTarget.controlState}:{},...dispatchTarget.dispatchMode?{dispatchMode:dispatchTarget.dispatchMode}:{},...dispatchTarget.pointerType?{pointerType:dispatchTarget.pointerType}:{}}}function clickElementViaJS(){let el=this.nodeType===3?this.parentElement:this;if(!el||!el.isConnected)return null;let sourceTarget={tag:el.tagName?el.tagName.toLowerCase():"",text:(el.textContent||"").trim().slice(0,100)};if(el.tagName==="OPTION"){let select=el.closest("select");if(select){let desc=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,"value");desc&&desc.set?desc.set.call(select,el.value):select.value=el.value,select.dispatchEvent(new Event("input",{bubbles:!0})),select.dispatchEvent(new Event("change",{bubbles:!0}));let rect2=select.getBoundingClientRect();return{tag:"option",text:(el.textContent||"").trim().slice(0,100),cx:rect2.x+rect2.width/2,cy:rect2.y+rect2.height/2,strategy:"self",distance:0,sourceTarget}}}function isActionable(node){if(!node||node.nodeType!==1)return!1;if(/^(A|BUTTON|INPUT|SELECT|TEXTAREA|SUMMARY|DETAILS|LABEL)$/i.test(node.tagName)||/button|link|tab|menuitem|checkbox|radio|option|switch/i.test(node.getAttribute("role")||"")||node.isContentEditable||typeof node.onclick=="function")return!0;let tabIndexAttribute=node.getAttribute("tabindex");if(tabIndexAttribute===null)return!1;let tabIndex=Number(tabIndexAttribute);return Number.isFinite(tabIndex)&&tabIndex>=0}let target=el,strategy="self",distance=0;if(!isActionable(target)){let ancestor=target.parentElement;for(;ancestor&&ancestor!==document.body&&distance<6;){if(distance+=1,isActionable(ancestor)){target=ancestor,strategy="actionable-ancestor";break}ancestor=ancestor.parentElement}}if(strategy==="self"&&!isActionable(target)){let cursor=target,descendantDistance=0;for(;cursor.children.length===1;){let child=cursor.children[0];if(!child||child.nodeType!==1||!(child.textContent||"").trim())break;cursor=child,descendantDistance+=1}cursor!==target?(target=cursor,strategy="single-child-descendant",distance=descendantDistance):distance=0}let rect=target.getBoundingClientRect();(rect.top<0||rect.left<0||rect.bottom>window.innerHeight||rect.right>window.innerWidth)&&(target.scrollIntoView({block:"center",inline:"center",behavior:"instant"}),rect=target.getBoundingClientRect());let cx=rect.x+rect.width/2,cy=rect.y+rect.height/2;try{let touch=new Touch({identifier:Date.now(),target,clientX:cx,clientY:cy});target.dispatchEvent(new TouchEvent("touchstart",{touches:[touch],targetTouches:[touch],changedTouches:[touch],bubbles:!0,cancelable:!0})),target.dispatchEvent(new TouchEvent("touchend",{touches:[],targetTouches:[],changedTouches:[touch],bubbles:!0,cancelable:!0}))}catch{}let controlState,controlType=target.tagName==="INPUT"&&/^(checkbox|radio)$/i.test(target.type||"")?String(target.type).toLowerCase():"";if(controlType==="checkbox"||controlType==="radio"){let checkedBefore=!!target.checked;target.click(),controlState={type:controlType,checkedBefore,checkedAfter:!!target.checked}}else target.click();return{tag:target.tagName?target.tagName.toLowerCase():"",text:(target.textContent||"").trim().slice(0,100),cx,cy,strategy,distance,sourceTarget,...controlState?{controlState}:{}}}function getClickCoordsFromNode(){let el=this.nodeType===3?this.parentElement:this;if(!el||!el.isConnected||!el.getBoundingClientRect)return null;let sourceTarget={tag:el.tagName?el.tagName.toLowerCase():"",text:(el.textContent||"").trim().slice(0,100)};function isActionable(node){if(!node||node.nodeType!==1)return!1;if(/^(A|BUTTON|INPUT|SELECT|TEXTAREA|SUMMARY|DETAILS|LABEL)$/i.test(node.tagName)||/button|link|tab|menuitem|checkbox|radio|option|switch/i.test(node.getAttribute("role")||"")||node.isContentEditable||typeof node.onclick=="function")return!0;let tabIndexAttribute=node.getAttribute("tabindex");if(tabIndexAttribute===null)return!1;let tabIndex=Number(tabIndexAttribute);return Number.isFinite(tabIndex)&&tabIndex>=0}let target=el,strategy="self",distance=0;if(!isActionable(target)){let ancestor=target.parentElement;for(;ancestor&&ancestor!==document.body&&distance<6;){if(distance+=1,isActionable(ancestor)){target=ancestor,strategy="actionable-ancestor";break}ancestor=ancestor.parentElement}}if(strategy==="self"&&!isActionable(target)){let cursor=target,descendantDistance=0;for(;cursor.children.length===1;){let child=cursor.children[0];if(!child||child.nodeType!==1||!(child.textContent||"").trim())break;cursor=child,descendantDistance+=1}cursor!==target?(target=cursor,strategy="single-child-descendant",distance=descendantDistance):distance=0}let actionableAncestorCandidates=[];if(strategy==="self"&&!isActionable(target)){let sourceRect=el.getBoundingClientRect(),ancestor=el.parentElement,candidateDistance=0;for(;ancestor&&ancestor!==document.body&&candidateDistance<6;){candidateDistance+=1;let rect2=ancestor.getBoundingClientRect(),reason=getComputedStyle(ancestor).cursor==="pointer"?"cursor-pointer":rect2.width*rect2.height>sourceRect.width*sourceRect.height*1.5?"containing-block":null;if(reason){let escapeCss=value=>globalThis.CSS&&typeof globalThis.CSS.escape=="function"?globalThis.CSS.escape(value):value.replace(/[^a-zA-Z0-9_-]/g,character=>`\\${character}`),candidateSelector=ancestor.id?`#${escapeCss(ancestor.id)}`:"";if(!candidateSelector){let path19=[],cursor=ancestor;for(;cursor&&cursor!==document.documentElement&&path19.length<5;){let parent=cursor.parentElement,tag=cursor.tagName.toLowerCase();if(!parent){path19.unshift(tag);break}let siblings=Array.from(parent.children).filter(item=>item.tagName===cursor.tagName),index=siblings.indexOf(cursor)+1;path19.unshift(siblings.length>1?`${tag}:nth-of-type(${index})`:tag),cursor=parent}candidateSelector=path19.join(" > ")}candidateSelector&&actionableAncestorCandidates.push({selector:candidateSelector,tag:ancestor.tagName.toLowerCase(),text:(ancestor.textContent||"").trim().slice(0,100),distance:candidateDistance,reason})}if(actionableAncestorCandidates.length>=3)break;ancestor=ancestor.parentElement}}let rect=target.getBoundingClientRect();return(rect.top<0||rect.left<0||rect.bottom>window.innerHeight||rect.right>window.innerWidth)&&(target.scrollIntoView({block:"center",inline:"center",behavior:"instant"}),rect=target.getBoundingClientRect()),{x:rect.x+rect.width/2,y:rect.y+rect.height/2,tag:target.tagName?target.tagName.toLowerCase():"",text:(target.textContent||"").trim().slice(0,100),...target.tagName==="INPUT"?{inputType:String(target.type||"").toLowerCase()}:{},strategy,distance,sourceTarget,...actionableAncestorCandidates.length>0?{actionableAncestorCandidates}:{}}}function isPageDragPoint(value){if(!value||typeof value!="object")return!1;let point=value;return Number.isFinite(point.x)&&Number.isFinite(point.y)&&point.x>=0&&point.y>=0}function resolveEndpoint(value,name){if(typeof value=="string"&&value.trim().length>0)return value.trim();if(isPageDragPoint(value))return{x:value.x,y:value.y};throw new Error(`page_drag: "${name}" must be a non-empty CSS/@ref selector or { x, y } viewport point.`)}function resolvePageDragInput(data){if(!data||typeof data!="object")throw new Error("page_drag: payload is required");if(data.dragMode!==void 0&&!["auto","dom","mouse","touch"].includes(data.dragMode))throw new Error('page_drag: "dragMode" must be one of auto, dom, mouse, touch');let durationMs=data.durationMs??400;if(!Number.isFinite(durationMs)||durationMs<0||durationMs>5e3)throw new Error('page_drag: "durationMs" must be between 0 and 5000.');return{from:resolveEndpoint(data.from,"from"),to:resolveEndpoint(data.to,"to"),dragMode:data.dragMode??"auto",durationMs:Math.round(durationMs)}}function resolvePageDragDispatchPolicy(dragMode,visibilityState,touchEmulationEnabled){let requestedMode=dragMode??"auto",pointerType=requestedMode==="mouse"||requestedMode==="touch"?requestedMode:touchEmulationEnabled?"touch":"mouse";return requestedMode==="dom"?{dispatchMode:"dom",pointerType}:requestedMode==="auto"&&visibilityState==="hidden"?{dispatchMode:"dom",pointerType,fallbackReason:"page-hidden"}:{dispatchMode:"trusted-input",pointerType}}function buildPageDragPath(from,to,durationMs){let steps=Math.max(2,Math.min(60,Math.ceil(durationMs/25)));return{points:Array.from({length:steps},(_,index)=>{let ratio=(index+1)/steps;return{x:from.x+(to.x-from.x)*ratio,y:from.y+(to.y-from.y)*ratio}}),intervalMs:durationMs/steps}}function dragBetweenPointsInPage(from,points,pointerType){let target=document.elementFromPoint(from.x,from.y);if(!target)return{dragged:!1,steps:0,error:`No element found at drag start point (${from.x}, ${from.y})`};if(points.length===0)return{dragged:!1,steps:0,error:"Drag path must contain at least one point"};let view=target.ownerDocument.defaultView??window,realm=view,pointerId=1,pointerInit=(point,buttons,pressure)=>({bubbles:!0,cancelable:!0,composed:!0,view,clientX:point.x,clientY:point.y,screenX:point.x,screenY:point.y,button:0,buttons,pointerId,pointerType,isPrimary:!0,pressure,width:1,height:1}),dispatchPointer=(type,point,buttons,pressure)=>typeof realm.PointerEvent!="function"?!1:(target.dispatchEvent(new realm.PointerEvent(type,pointerInit(point,buttons,pressure))),!0),dispatchMouse=(type,point,buttons)=>typeof realm.MouseEvent!="function"?!1:(target.dispatchEvent(new realm.MouseEvent(type,{bubbles:!0,cancelable:!0,composed:!0,view,clientX:point.x,clientY:point.y,screenX:point.x,screenY:point.y,button:0,buttons})),!0),createTouch=point=>{let init={identifier:pointerId,target,clientX:point.x,clientY:point.y,screenX:point.x,screenY:point.y,pageX:point.x+view.scrollX,pageY:point.y+view.scrollY,radiusX:1,radiusY:1,rotationAngle:0,force:.5};return typeof realm.Touch=="function"?new realm.Touch(init):init},dispatchTouch=(type,point)=>{if(typeof realm.TouchEvent!="function")return!1;let touch=createTouch(point),activeTouches=type==="touchend"?[]:[touch];return target.dispatchEvent(new realm.TouchEvent(type,{bubbles:!0,cancelable:!0,composed:!0,touches:activeTouches,targetTouches:activeTouches,changedTouches:[touch]})),!0},dispatched=dispatchPointer("pointerdown",from,1,.5);dispatched=pointerType==="touch"?dispatchTouch("touchstart",from)||dispatched:dispatchMouse("mousedown",from,1)||dispatched;for(let point of points)dispatched=dispatchPointer("pointermove",point,1,.5)||dispatched,dispatched=pointerType==="touch"?dispatchTouch("touchmove",point)||dispatched:dispatchMouse("mousemove",point,1)||dispatched;let end=points[points.length-1];return dispatched=pointerType==="touch"?dispatchTouch("touchend",end)||dispatched:dispatchMouse("mouseup",end,0)||dispatched,dispatched=dispatchPointer("pointerup",end,0,0)||dispatched,dispatched?{dragged:!0,steps:points.length}:{dragged:!1,steps:0,error:"This page does not support synthetic drag events"}}var DRAG_BETWEEN_POINTS_IN_PAGE_SOURCE=dragBetweenPointsInPage.toString();function buildPageDragDomExpression(from,points,pointerType){return`(${DRAG_BETWEEN_POINTS_IN_PAGE_SOURCE})(${JSON.stringify(from)}, ${JSON.stringify(points)}, ${JSON.stringify(pointerType)})`}function unwrapPageDragDomResult(result){if(!result)throw new Error("page_drag: DOM simulation returned no result");if(!result.dragged)throw new Error(`page_drag: ${result.error}`);return result}function getDragCoordsFromNode(){let el=this.nodeType===Node.TEXT_NODE?this.parentElement:this;if(!el||typeof el.getBoundingClientRect!="function")return null;let rect=el.getBoundingClientRect(),viewportWidth=window.visualViewport?.width??window.innerWidth,viewportHeight=window.visualViewport?.height??window.innerHeight;if(rect.width<=0||rect.height<=0)return{x:0,y:0,tag:"",text:"",error:"Element has no visible bounds"};if(rect.right<=0||rect.bottom<=0||rect.left>=viewportWidth||rect.top>=viewportHeight)return{x:0,y:0,tag:"",text:"",error:"Element is outside the current viewport; scroll it into view before dragging"};let x=Math.min(Math.max(rect.left+rect.width/2,0),Math.max(viewportWidth-1,0)),y=Math.min(Math.max(rect.top+rect.height/2,0),Math.max(viewportHeight-1,0));return{x,y,tag:el.tagName?.toLowerCase()??"",text:(el.textContent??"").trim().slice(0,100)}}var SKIP_ROLES=new Set(["none","generic","InlineTextBox","LineBreak","paragraph","Section","LabelText"]),ALWAYS_SKIP_ROLES=new Set(["InlineTextBox","LineBreak","graphics-symbol","graphics-document"]),INTERACTIVE_ROLES=new Set(["button","checkbox","combobox","gridcell","link","listbox","menuitem","menuitemcheckbox","menuitemradio","option","radio","scrollbar","searchbox","slider","spinbutton","switch","tab","textbox","treeitem"]);function isInteractiveSnapshotNode(node){let focusedControl=!!node.focused&&node.role!=="RootWebArea"&&node.role!=="WebArea";return INTERACTIVE_ROLES.has(node.role)||focusedControl||node.checked!==void 0||node.expanded!==void 0||!!node.selected}function hasInteractiveSnapshotNode(node){return node?isInteractiveSnapshotNode(node)?!0:(node.children??[]).some(hasInteractiveSnapshotNode):!1}var CHECKABLE_AX_ROLES=new Set(["checkbox","menuitemcheckbox","menuitemradio","radio","switch"]);function resolveDOMSnapshotViewportBounds(metrics){let viewport=metrics.visualViewport??metrics.cssVisualViewport;return normalizePageViewportBounds({left:viewport?.pageX??0,top:viewport?.pageY??0,width:viewport?.clientWidth,height:viewport?.clientHeight})}function normalizePageViewportBounds(value){if(!value||typeof value!="object")return null;let{left,top,width,height}=value;return typeof left!="number"||typeof top!="number"||typeof width!="number"||typeof height!="number"||!Number.isFinite(left)||!Number.isFinite(top)||!Number.isFinite(width)||!Number.isFinite(height)||width<=0||height<=0?null:{left,top,width,height}}function readDOMCheckedState(){let tag=String(this&&this.tagName||"").toLowerCase(),type=String(this&&this.type||"").toLowerCase();if(tag==="input"&&(type==="checkbox"||type==="radio"))return!!this.checked;let ariaChecked=this&&this.getAttribute&&this.getAttribute("aria-checked");if(ariaChecked==="mixed")return"mixed";if(ariaChecked==="true")return!0;if(ariaChecked==="false")return!1}async function reconcileAXCheckedStates(nodes,readCheckedState){let candidates=nodes.filter(node=>node.backendDOMNodeId!==void 0&&CHECKABLE_AX_ROLES.has(node.role?.value??"")),nextIndex=0,workers=Array.from({length:Math.min(8,candidates.length)},async()=>{for(;nextIndex<candidates.length;){let node=candidates[nextIndex++];if(!(!node||node.backendDOMNodeId===void 0))try{let checked=await readCheckedState(node.backendDOMNodeId);if(checked===void 0)continue;let properties=node.properties??=[],existing=properties.find(property=>property.name==="checked");existing?existing.value.value=checked:properties.push({name:"checked",value:{value:checked}})}catch{}}});await Promise.all(workers)}function extractAXProperties(node){let result={};if(!node.properties)return result;for(let prop of node.properties)switch(prop.name){case"focused":prop.value.value===!0&&(result.focused=!0);break;case"checked":result.checked=prop.value.value==="mixed"?"mixed":prop.value.value===!0;break;case"disabled":prop.value.value===!0&&(result.disabled=!0);break;case"required":prop.value.value===!0&&(result.required=!0);break;case"expanded":result.expanded=prop.value.value===!0;break;case"selected":prop.value.value===!0&&(result.selected=!0);break;case"level":result.level=prop.value.value;break}return result}function formatSnapshotNode(node,indent,lines){let line=" ".repeat(indent);node.ref&&(line+=`${node.ref} `),line+=`[${node.role}`,node.name&&(line+=` "${node.name}"`),line+="]";let annotations=[];if(node.value!==void 0&&annotations.push(`value="${node.value}"`),node.focused&&annotations.push("focused"),node.checked===!0&&annotations.push("checked"),node.checked==="mixed"&&annotations.push("mixed"),node.disabled&&annotations.push("disabled"),node.required&&annotations.push("required"),node.expanded===!0&&annotations.push("expanded"),node.expanded===!1&&annotations.push("collapsed"),node.selected&&annotations.push("selected"),node.level!==void 0&&annotations.push(`level=${node.level}`),node.description&&annotations.push(`desc="${node.description}"`),annotations.length>0&&(line+=` (${annotations.join(", ")})`),lines.push(line),node.children)for(let child of node.children)formatSnapshotNode(child,indent+1,lines)}function filterSnapshotTree(node,mode,visibleBackendNodeIds){if(!node)return null;if(mode==="full")return node;let keepSelf=mode==="interactive"?isInteractiveSnapshotNode(node):node.backendDOMNodeId!==void 0&&!!visibleBackendNodeIds?.has(node.backendDOMNodeId);if(mode==="interactive"&&keepSelf)return node;let children=(node.children??[]).map(child=>filterSnapshotTree(child,mode,visibleBackendNodeIds)).filter(child=>child!==null);return!keepSelf&&children.length===0?null:{...node,...children.length>0?{children}:{children:void 0}}}function snapshotNodeMatchesQuery(node,query){return query.role&&node.role!==query.role?!1:query.text===void 0?!0:query.exact??!0?node.name===query.text:node.name.includes(query.text)}function resolvePageSnapshotQuery(query){if(query===void 0)return;if(!query||typeof query!="object"||Array.isArray(query))throw new Error("page_snapshot: query must be an object");let{text,role,exact}=query;if(text!==void 0&&(typeof text!="string"||!text.trim()))throw new Error("page_snapshot: query.text must be a non-empty string");if(role!==void 0&&(typeof role!="string"||!role.trim()))throw new Error("page_snapshot: query.role must be a non-empty string");if(text===void 0&&role===void 0)throw new Error("page_snapshot: query must include text or role");if(exact!==void 0&&typeof exact!="boolean")throw new Error("page_snapshot: query.exact must be a boolean");return{...text!==void 0?{text}:{},...role!==void 0?{role}:{},...exact!==void 0?{exact}:{}}}function snapshotQueryMatch(node){return{...node.ref?{ref:node.ref}:{},role:node.role,name:node.name,...node.value!==void 0?{value:node.value}:{},...node.disabled?{disabled:!0}:{},...node.checked!==void 0?{checked:node.checked}:{},...node.selected?{selected:!0}:{},...node.expanded!==void 0?{expanded:node.expanded}:{}}}function compactSnapshotQueryField(value){if(value.length<=2048)return{value,truncated:!1};let marker="… [truncated] …",remaining=2048-marker.length,head=Math.ceil(remaining/2),tail=Math.floor(remaining/2);return{value:value.slice(0,head)+marker+value.slice(-tail),truncated:!0}}function compactSnapshotQueryMatch(match){let role=compactSnapshotQueryField(match.role),name=compactSnapshotQueryField(match.name),value=match.value===void 0?void 0:compactSnapshotQueryField(match.value);return{match:{...match,role:role.value,name:name.value,...value?{value:value.value}:{}},truncated:role.truncated||name.truncated||!!value?.truncated}}function limitPageSnapshotQueryMatches(matches){let limited=[],encoder=new TextEncoder,bytes=2,truncated=!1;for(let candidate of matches){if(limited.length>=100){truncated=!0;break}let compacted=compactSnapshotQueryMatch(candidate),candidateBytes=encoder.encode(JSON.stringify(compacted.match)).byteLength+(limited.length>0?1:0);if(bytes+candidateBytes>262144){truncated=!0;break}limited.push(compacted.match),bytes+=candidateBytes,truncated=truncated||compacted.truncated}return limited.length<matches.length&&(truncated=!0),{matches:limited,truncated}}function filterSnapshotTreeByQuery(node,query){if(!node)return{tree:null,matches:[]};let matches=[],children=[];for(let child of node.children??[]){let childResult=filterSnapshotTreeByQuery(child,query);matches.push(...childResult.matches),childResult.tree&&children.push(childResult.tree)}let matchesSelf=snapshotNodeMatchesQuery(node,query);return matchesSelf&&matches.unshift(snapshotQueryMatch(node)),!matchesSelf&&children.length===0?{tree:null,matches}:{tree:{...node,...children.length>0?{children}:{children:void 0}},matches}}function countSnapshotNodes(node){return node?1+(node.children??[]).reduce((total,child)=>total+countSnapshotNodes(child),0):0}function takeHeadTail(items,limit){let available=Math.max(0,Math.floor(limit)-1),tailCount=available>1?Math.max(1,Math.floor(available*.3)):0,headCount=Math.max(0,available-tailCount);return{items:[...items.slice(0,headCount),...items.slice(Math.max(headCount,items.length-tailCount))],headCount}}function formatSnapshotWithLimits(lines,limits={}){let maxNodes=limits.maxNodes===void 0||limits.maxNodes===0?1/0:Math.max(3,Math.floor(limits.maxNodes)),maxChars=limits.maxChars===void 0?6e4:limits.maxChars===0?1/0:Math.max(200,Math.floor(limits.maxChars)),outputLines=lines,truncated=!1;if(outputLines.length>maxNodes){let originalCount=outputLines.length,selected=takeHeadTail(outputLines,maxNodes);outputLines=[...selected.items.slice(0,selected.headCount),`... [snapshot nodes omitted: showing ${selected.items.length} of ${originalCount}; use rootSelector or mode:"viewport"]`,...selected.items.slice(selected.headCount)],truncated=!0}let snapshot=outputLines.join(`
60
60
  `);if(snapshot.length>maxChars){let originalLength=snapshot.length,marker=`
61
61
  ... [snapshot content omitted: showing at most ${maxChars} of ${originalLength} chars; use rootSelector, mode:"viewport", or maxChars:0]
62
62
  `,usable=Math.max(0,maxChars-marker.length),headBudget=Math.ceil(usable*.7),tailBudget=Math.max(0,usable-headBudget),headCut=snapshot.lastIndexOf(`
@@ -76,7 +76,7 @@ ${truncated}...`}function extractFields(data,fields){if(fields.length>100)throw
76
76
  ${BASE_ICON}
77
77
  ${SOURCE_BADGES[source]}
78
78
  </svg>`;return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`}var enabledDomains=new WeakMap;function ensureCdpDomain(client2,domain2,params={}){let domains=enabledDomains.get(client2);domains||(domains=new Map,enabledDomains.set(client2,domains));let existing=domains.get(domain2);if(existing)return existing;let enabling=client2.sendCommand(`${domain2}.enable`,params).then(()=>{}).catch(error48=>{throw domains?.get(domain2)===enabling&&domains.delete(domain2),error48});return domains.set(domain2,enabling),enabling}var MAX_LOGS=500,MAX_EVENTS=500,COLLECTED_RESOURCE_TYPES=new Set(["xhr","fetch","document","eventsource"]);function createBuffers(tabId=0){return{requests:[],logs:[],events:[],pending:new Map,sseStreams:new Map,requestCounter:0,requestBufferAccounting:createRequestBufferAccounting(),capture:{tabId,generation:createCaptureGeneration(),currentSequence:0,droppedRequestsThroughSequence:0,droppedLogsThroughSequence:0,droppedEventsThroughSequence:0}}}function parseQueryString2(url2){try{let u=new URL(url2),result=[];return u.searchParams.forEach((value,name)=>result.push({name,value})),result}catch{return[]}}function headersObjToArray(obj){return Object.entries(obj).map(([name,value])=>({name,value:String(value)}))}function getHeaderValue(headers,targetName){let target=targetName.toLowerCase(),entry=Object.entries(headers).find(([name])=>name.toLowerCase()===target);return entry?String(entry[1]):""}function extractMtopApiName(url2,postData){try{let u=new URL(url2),pathMatch=u.pathname.match(/\/h5\/([\w.]+)\//);if(pathMatch)return pathMatch[1];let proxyMatch=u.searchParams.get("requestUrl")?.match(/\b(?:mtop|mopen)\.[\w.]+/);if(proxyMatch)return proxyMatch[0]}catch{}let urlMatch=url2.match(/\b(?:mtop|mopen)\.[\w.]+/);if(urlMatch)return urlMatch[0];if(!postData)return null;try{let parsed=JSON.parse(postData),proxyMatch=(typeof parsed?.requestUrl=="string"?parsed.requestUrl:void 0)?.match(/\b(?:mtop|mopen)\.[\w.]+/);if(proxyMatch)return proxyMatch[0]}catch{let proxyMatch=new URLSearchParams(postData).get("requestUrl")?.match(/\b(?:mtop|mopen)\.[\w.]+/);if(proxyMatch)return proxyMatch[0]}return null}function requestDisplayName(url2){try{return new URL(url2).pathname}catch{return url2}}function parsePostData(postData){if(!postData)return null;try{return JSON.parse(postData)}catch{try{let params={};return new URLSearchParams(postData).forEach((v,k)=>params[k]=v),params}catch{return postData}}}function appendTrackingEvents(buffers,url2,postData,batchSequence,captureSequence){let events=parseTrackingRequest(url2,postData,{sequence:batchSequence,now:Date.now()}).map(event=>({...event,captureSequence}));if(events.length===0)return!1;let removed=appendCapturedTrackingBatch(buffers.events,events,MAX_EVENTS);for(let event of removed)event.captureSequence!==void 0&&(buffers.capture.droppedEventsThroughSequence=Math.max(buffers.capture.droppedEventsThroughSequence,event.captureSequence));return!0}function recordDroppedRequests(buffers,removed){for(let request of removed)request.captureSequence!==void 0&&(buffers.capture.droppedRequestsThroughSequence=Math.max(buffers.capture.droppedRequestsThroughSequence,request.captureSequence))}function appendCapturedRequest(buffers,request){recordDroppedRequests(buffers,appendRequestToBuffer(buffers.requests,buffers.requestBufferAccounting,request))}function refreshCapturedRequest(buffers,request){recordDroppedRequests(buffers,refreshRequestInBuffer(buffers.requests,buffers.requestBufferAccounting,request))}function recordCdpMtopStreamStart(buffers,data){let capture=createMtopStreamCapture({...data,id:++buffers.requestCounter,tabId:buffers.capture.tabId,captureSequence:nextCaptureSequence(buffers.capture)});return appendCapturedRequest(buffers,capture.request),capture}function recordCdpMtopStreamResponse(buffers,capture,response){updateMtopStreamCaptureResponse(capture,response),refreshCapturedRequest(buffers,capture.request)}function recordCdpMtopStreamChunk(buffers,capture,data,timestampMs2=Date.now()){appendMtopStreamCaptureChunk(capture,data,timestampMs2)&&refreshCapturedRequest(buffers,capture.request)}function recordCdpMtopStreamEnd(buffers,capture,options={}){finishMtopStreamCapture(capture,options),refreshCapturedRequest(buffers,capture.request)}function requestEventTimestamp(partial2,monotonicTimestamp){return monotonicTimestamp!==void 0&&partial2.startTs!==void 0?Math.round(partial2.timestampMs+(monotonicTimestamp-partial2.startTs)*1e3):Date.now()}function ensurePageSseStream(buffers,partial2,mode){partial2.isSSE=!0,Array.isArray(partial2.responseBody)||(partial2.responseBody=[]);let existing=buffers.sseStreams.get(partial2.requestId);if(existing)return existing;let stream={parser:createSseEventParser(),decoder:new TextDecoder2,mode};return buffers.sseStreams.set(partial2.requestId,stream),stream}function appendPageSseEvents(buffers,partial2,stream,events,timestampMs2){if(Array.isArray(partial2.responseBody)){for(let event of events)partial2.responseBody.push({event:event.event,data:event.data,...event.eventId!==void 0?{eventId:event.eventId}:{},timestamp:timestampMs2,duration:stream.lastMessageTimeMs===void 0?0:timestampMs2-stream.lastMessageTimeMs}),stream.lastMessageTimeMs=timestampMs2;events.length>0&&refreshCapturedRequest(buffers,partial2)}}function consumePageSseBytes(buffers,partial2,stream,bytes,timestampMs2){let text=stream.decoder.decode(bytes,{stream:!0});appendPageSseEvents(buffers,partial2,stream,stream.parser.push(text),timestampMs2)}function finishPageSseStream(buffers,partial2,stream,timestampMs2){let tail=stream.decoder.decode(),events=[...stream.parser.push(tail),...stream.parser.finish()];appendPageSseEvents(buffers,partial2,stream,events,timestampMs2)}function replaceWithParsedSseBody(partial2,body,timestampMs2){let parser=createSseEventParser();partial2.responseBody=[...parser.push(body),...parser.finish()].map(event=>({event:event.event,data:event.data,...event.eventId!==void 0?{eventId:event.eventId}:{},timestamp:timestampMs2,duration:0}))}function appendCapturedLog(buffers,log2){if(buffers.logs.push({...log2,captureSequence:nextCaptureSequence(buffers.capture)}),buffers.logs.length>MAX_LOGS){let removed=buffers.logs.shift();removed&&(buffers.capture.droppedLogsThroughSequence=removed.captureSequence)}}async function setupBufferListeners(client2,buffers){client2.on("Network.requestWillBeSent",params=>{let url2=params.request?.url??"";if(!url2.startsWith("http"))return;if(isTrackingUrl(url2)){let batchSequence=++buffers.requestCounter,captureSequence2=nextCaptureSequence(buffers.capture);!appendTrackingEvents(buffers,url2,params.request?.postData,batchSequence,captureSequence2)&&params.request?.hasPostData&&!params.request?.postData&&client2.sendCommand("Network.getRequestPostData",{requestId:params.requestId},1e4).then(result=>appendTrackingEvents(buffers,url2,result?.postData,batchSequence,captureSequence2)).catch(()=>{});return}let resourceType=String(params.type??"").toLowerCase(),mtopApiName=extractMtopApiName(url2,params.request?.postData),isMtop=mtopApiName!==null;if(!isMtop&&!COLLECTED_RESOURCE_TYPES.has(resourceType))return;let ts=params.timestamp,timestampMs2=params.wallTime!==void 0?Math.floor(params.wallTime*1e3):Date.now(),redirected=buffers.pending.get(params.requestId);redirected&&params.redirectResponse&&(redirected.status=params.redirectResponse.status??0,redirected.statusText=params.redirectResponse.statusText??"",redirected.duration=ts!==void 0&&redirected.startTs!==void 0?Math.round((ts-redirected.startTs)*1e3):void 0,redirected.isPending=!1,refreshCapturedRequest(buffers,redirected),buffers.pending.delete(params.requestId),buffers.sseStreams.delete(params.requestId));let id=++buffers.requestCounter,captureSequence=nextCaptureSequence(buffers.capture),partial2={id,requestId:params.requestId,timestamp:new Date(timestampMs2).toISOString(),timestampMs:timestampMs2,method:params.request?.method??"GET",url:url2,apiName:mtopApiName??requestDisplayName(url2),headers:headersObjToArray(params.request?.headers??{}),postData:parsePostData(params.request?.postData),queryString:parseQueryString2(url2),status:0,statusText:"",responseHeaders:[],responseBody:resourceType==="eventsource"?[]:null,isProxy:!1,proxyRequestUrl:null,proxyData:null,startTs:ts,captureSequence,isPending:!0,isSSE:resourceType==="eventsource",source:isMtop?"mtop":"requests",resourceType};buffers.pending.set(params.requestId,partial2),appendCapturedRequest(buffers,partial2)}),client2.on("Network.responseReceived",params=>{let partial2=buffers.pending.get(params.requestId);if(!partial2)return;partial2.status=params.response?.status??0,partial2.statusText=params.response?.statusText??"",partial2.responseHeaders=headersObjToArray(params.response?.headers??{});let contentType=getHeaderValue(params.response?.headers??{},"content-type");if(partial2.resourceType==="eventsource"||contentType.toLowerCase().includes("text/event-stream")){let mode=partial2.resourceType==="eventsource"?"eventsource":"resource",stream=ensurePageSseStream(buffers,partial2,mode);mode==="resource"&&client2.sendCommand("Network.streamResourceContent",{requestId:params.requestId},1e4).then(result=>{buffers.sseStreams.get(params.requestId)===stream&&typeof result?.bufferedData=="string"&&result.bufferedData&&consumePageSseBytes(buffers,partial2,stream,Buffer.from(result.bufferedData,"base64"),requestEventTimestamp(partial2,params.timestamp))}).catch(()=>{buffers.sseStreams.get(params.requestId)===stream&&(stream.mode="fallback")})}refreshCapturedRequest(buffers,partial2)}),client2.on("Network.dataReceived",params=>{let partial2=buffers.pending.get(params.requestId),stream=buffers.sseStreams.get(params.requestId);!partial2||stream?.mode!=="resource"||typeof params.data!="string"||consumePageSseBytes(buffers,partial2,stream,Buffer.from(params.data,"base64"),requestEventTimestamp(partial2,params.timestamp))}),client2.on("Network.eventSourceMessageReceived",params=>{let partial2=buffers.pending.get(params.requestId);if(!partial2)return;let stream=ensurePageSseStream(buffers,partial2,"eventsource");appendPageSseEvents(buffers,partial2,stream,[{event:typeof params.eventName=="string"&&params.eventName?params.eventName:"message",data:parseSseDataValue(String(params.data??"")),...typeof params.eventId=="string"&&params.eventId?{eventId:params.eventId}:{}}],requestEventTimestamp(partial2,params.timestamp))}),client2.on("Network.loadingFinished",params=>{let partial2=buffers.pending.get(params.requestId);if(!partial2)return;buffers.pending.delete(params.requestId);let endTs=params.timestamp,duration3=endTs!==void 0&&partial2.startTs!==void 0?Math.round((endTs-partial2.startTs)*1e3):void 0,stream=buffers.sseStreams.get(params.requestId);stream?.mode==="resource"&&finishPageSseStream(buffers,partial2,stream,requestEventTimestamp(partial2,params.timestamp)),buffers.sseStreams.delete(params.requestId),partial2.duration=duration3,partial2.isPending=!1,refreshCapturedRequest(buffers,partial2),!(partial2.isSSE&&Array.isArray(partial2.responseBody)&&partial2.responseBody.length>0)&&client2.sendCommand("Network.getResponseBody",{requestId:params.requestId},1e4).then(result=>{let responseBody=result.base64Encoded?Buffer.from(result.body,"base64").toString("utf-8"):result.body;if(partial2.isSSE&&typeof responseBody=="string"){replaceWithParsedSseBody(partial2,responseBody,requestEventTimestamp(partial2,params.timestamp)),refreshCapturedRequest(buffers,partial2);return}if(partial2.responseBody=responseBody,typeof partial2.responseBody=="string")try{partial2.responseBody=JSON.parse(partial2.responseBody)}catch{}refreshCapturedRequest(buffers,partial2)}).catch(()=>{})}),client2.on("Network.loadingFailed",params=>{let partial2=buffers.pending.get(params.requestId);partial2&&(buffers.pending.delete(params.requestId),buffers.sseStreams.delete(params.requestId),partial2.status=0,partial2.statusText=params.errorText??"Failed",partial2.duration=params.timestamp!==void 0&&partial2.startTs!==void 0?Math.round((params.timestamp-partial2.startTs)*1e3):void 0,partial2.isPending=!1,partial2.isSSE&&Array.isArray(partial2.responseBody)&&partial2.responseBody.length===0&&(partial2.responseBody={error:partial2.statusText}),refreshCapturedRequest(buffers,partial2))}),client2.on("Runtime.consoleAPICalled",params=>{let level={warning:"warn",debug:"debug",info:"info",error:"error",assert:"error"}[params.type]??"log",args=(params.args??[]).map(arg=>arg.type==="string"?arg.value:arg.value!==void 0?String(arg.value):arg.description!==void 0?arg.description:JSON.stringify(arg));appendCapturedLog(buffers,{level,message:args.join(" "),timestampMs:params.timestamp??Date.now(),source:params.stackTrace?.callFrames?.[0]?.url?`${params.stackTrace.callFrames[0].url.split("/").pop()||params.stackTrace.callFrames[0].url}:${params.stackTrace.callFrames[0].lineNumber+1}`:"console",args,origin:"console"})}),client2.on("Runtime.exceptionThrown",params=>{let details=params.exceptionDetails??{},exception=details.exception,message=exception?.description??(exception?.value!==void 0?String(exception.value):void 0)??details.text??"Uncaught exception",topFrame=details.stackTrace?.callFrames?.[0],url2=topFrame?.url||details.url,lineNumber=topFrame?.lineNumber??details.lineNumber,source=url2?`${url2.split("/").pop()||url2}${lineNumber!==void 0?`:${lineNumber+1}`:""}`:void 0;appendCapturedLog(buffers,{level:"error",message,timestampMs:params.timestamp??Date.now(),...source?{source}:{},args:[message],origin:"exception"})}),client2.on("Log.entryAdded",params=>{let entry=params.entry??{},levelMap={verbose:"log",info:"info",warning:"warn",error:"error"},args=(entry.args??[]).map(arg=>arg.value!==void 0?String(arg.value):arg.description??`[${arg.type||"Object"}]`),message=entry.text||args.join(" ");appendCapturedLog(buffers,{level:levelMap[entry.level]??entry.level??"log",message,timestampMs:entry.timestamp??Date.now(),source:entry.url?`${entry.url.split("/").pop()||entry.url}${entry.lineNumber!==void 0?`:${entry.lineNumber+1}`:""}`:entry.source??"other",args:args.length>0?args:[message],origin:"browser"})}),await Promise.all([ensureCdpDomain(client2,"Network",{maxTotalBufferSize:10*1024*1024,maxPostDataSize:5*1024*1024}),ensureCdpDomain(client2,"Runtime"),ensureCdpDomain(client2,"Log")])}import fs from"node:fs";import http from"node:http";import os from"node:os";import path from"node:path";function chromeUserDataDir(){let platform=process.platform,home=os.homedir();return platform==="darwin"?path.join(home,"Library","Application Support","Google","Chrome"):platform==="win32"?path.join(process.env.LOCALAPPDATA??home,"Google","Chrome","User Data"):path.join(home,".config","google-chrome")}function readDevToolsActivePort(userDataDir=chromeUserDataDir()){try{let filePath=path.join(userDataDir,"DevToolsActivePort"),lines=fs.readFileSync(filePath,"utf8").trim().split(`
79
- `).map(l=>l.trim()),port=parseInt(lines[0],10),browserWsPath=lines[1]??"/devtools/browser";return isNaN(port)?null:{port,browserWsPath}}catch{return null}}async function discoverTargets(port=9222){return new Promise((resolve2,reject)=>{let req=http.get(`http://localhost:${port}/json`,res=>{let data="";res.on("data",chunk=>data+=chunk),res.on("end",()=>{try{resolve2(JSON.parse(data))}catch(e){reject(new Error(`Failed to parse CDP targets: ${e}`))}})});req.on("error",reject),req.setTimeout(3e3,()=>{req.destroy(),reject(new Error("CDP discover timeout"))})})}var CdpSession=class{port;userDataDir;endpointUrl;endpointResolver;browserClient=null;browserClientPromise=null;pageSessions=new Map;tabIdMap=new Map;nextTabId=1e3;constructor(options=9222){if(typeof options=="number"){this.port=options;return}this.port=options.port??9222,this.userDataDir=options.userDataDir,this.endpointUrl=options.endpointUrl,this.endpointResolver=options.endpointResolver}async getBrowserClient(){if(this.browserClient&&!this.browserClient.closed)return this.browserClient;this.browserClientPromise||(this.browserClientPromise=this.connectBrowserClient());let pending=this.browserClientPromise;try{return await pending}finally{this.browserClientPromise===pending&&(this.browserClientPromise=null)}}async getPageSession(virtualTabId){let targetId;if(virtualTabId!==void 0&&(targetId=this.tabIdMap.get(virtualTabId),!targetId))throw new Error(`Tab ${virtualTabId} not found. Open a tab first with tab_open.`);if(targetId){let existing2=this.pageSessions.get(targetId);if(existing2&&!existing2.client.closed)return existing2}let target=targetId?await this.findTargetById(targetId):await this.findDefaultPageTarget();if(!target)throw new Error(virtualTabId?`CDP target for tab ${virtualTabId} is no longer available`:"No active page target found. Open a web page in Chrome with remote debugging enabled.");let existing=this.pageSessions.get(target.id);return existing&&!existing.client.closed?existing:this.createPageSession(target)}async registerTarget(targetId){let virtualId=this.nextTabId++;this.tabIdMap.set(virtualId,targetId);let target=await this.findTargetById(targetId);return target&&await this.createPageSession(target),virtualId}async ensureTargetRegistered(targetId){for(let[virtualId2,registeredTargetId]of this.tabIdMap)if(registeredTargetId===targetId)return virtualId2;let virtualId=this.nextTabId++;return this.tabIdMap.set(virtualId,targetId),virtualId}async connectBrowserClient(){let wsUrl=await this.resolveBrowserWsUrl();if(!wsUrl)throw new Error("No browser-level WebSocket URL available from CDP");let client2=await CdpClient.connect(wsUrl);return this.browserClient=client2,client2.on("Target.targetDestroyed",params=>{for(let[virtualId,targetId]of this.tabIdMap)if(targetId===params.targetId){this.tabIdMap.delete(virtualId);break}this.pageSessions.delete(params.targetId)}),client2}async createPageSession(target){let client2;try{let browser=await this.getBrowserClient(),{sessionId}=await browser.sendCommand("Target.attachToTarget",{targetId:target.id,flatten:!0},5e3);client2=browser.createChildSession(sessionId)}catch(error48){if(this.isRemote())throw new Error(`Failed to attach to remote CDP target ${target.id}: ${error48 instanceof Error?error48.message:String(error48)}`,{cause:error48});client2=await CdpClient.connect(target.webSocketDebuggerUrl)}let tabId;for(let[virtualId,registeredTargetId]of this.tabIdMap)if(registeredTargetId===target.id){tabId=virtualId;break}tabId===void 0&&(tabId=this.nextTabId++,this.tabIdMap.set(tabId,target.id));let buffers=createBuffers(tabId);await setupBufferListeners(client2,buffers);let session={tabId,client:client2,buffers,targetId:target.id,url:target.url};return this.pageSessions.set(target.id,session),client2.on("Inspector.detached",()=>{this.pageSessions.delete(target.id)}),session}async findTargetById(targetId){if(this.isRemote())return this.findTargetByIdViaCdp(targetId);try{return(await discoverTargets(this.effectivePort())).find(t=>t.id===targetId&&t.webSocketDebuggerUrl)??null}catch{return this.findTargetByIdViaCdp(targetId)}}async findDefaultPageTarget(){if(this.isRemote())return this.findDefaultPageTargetViaCdp();try{return(await discoverTargets(this.effectivePort())).find(t=>t.type==="page"&&t.webSocketDebuggerUrl&&!t.url.startsWith("chrome-extension://")&&!t.url.startsWith("about:")&&!t.url.startsWith("chrome://"))??null}catch{return this.findDefaultPageTargetViaCdp()}}effectivePort(){return readDevToolsActivePort(this.userDataDir)?.port??this.port}async resolveBrowserWsUrl(){let configuredEndpoint=this.endpointResolver?await this.endpointResolver():this.endpointUrl;if(configuredEndpoint){let url2=new URL(configuredEndpoint);if(url2.protocol!=="ws:"&&url2.protocol!=="wss:")throw new Error(`Unsupported CDP endpoint protocol: ${url2.protocol}`);return url2.toString()}let fileInfo=readDevToolsActivePort(this.userDataDir);if(fileInfo)return`ws://localhost:${fileInfo.port}${fileInfo.browserWsPath}`;try{return(await this.fetchVersionInfo()).webSocketDebuggerUrl??null}catch{return null}}pageWsUrl(targetId){return`ws://localhost:${this.effectivePort()}/devtools/page/${targetId}`}isRemote(){return!!(this.endpointUrl||this.endpointResolver)}async findTargetByIdViaCdp(targetId){try{let info=(await(await this.getBrowserClient()).sendCommand("Target.getTargets",{})).targetInfos.find(t=>t.targetId===targetId);return info?{id:info.targetId,title:info.title??"",type:info.type??"page",url:info.url??"",webSocketDebuggerUrl:this.pageWsUrl(info.targetId)}:null}catch{return null}}async findDefaultPageTargetViaCdp(){try{let info=(await(await this.getBrowserClient()).sendCommand("Target.getTargets",{})).targetInfos.find(t=>t.type==="page"&&!t.url.startsWith("chrome-extension://")&&!t.url.startsWith("about:")&&!t.url.startsWith("chrome://"));return info?{id:info.targetId,title:info.title??"",type:info.type??"page",url:info.url??"",webSocketDebuggerUrl:this.pageWsUrl(info.targetId)}:null}catch{return null}}fetchVersionInfo(){return new Promise((resolve2,reject)=>{let req=http2.get(`http://localhost:${this.port}/json/version`,res=>{let data="";res.on("data",chunk=>data+=chunk),res.on("end",()=>{try{resolve2(JSON.parse(data))}catch(e){reject(new Error(`Failed to parse CDP version info: ${e}`))}})});req.on("error",reject),req.setTimeout(3e3,()=>{req.destroy(),reject(new Error("CDP version info timeout"))})})}async isAvailable(){try{return await(await this.getBrowserClient()).sendCommand("Target.getTargets",{},3e3),!0}catch{return this.browserClient?.close(),this.browserClient=null,!1}}hasActiveConnections(){return this.browserClient!==null&&!this.browserClient.closed||Array.from(this.pageSessions.values()).some(session=>!session.client.closed)}listOpenPageSessions(){return Array.from(this.pageSessions.values()).filter(session=>!session.client.closed)}listRegisteredTabIds(targetIds){return Array.from(this.tabIdMap.entries()).filter(([,targetId])=>!targetIds||targetIds.has(targetId)).map(([tabId])=>tabId)}close(){this.browserClient?.close(),this.browserClient=null;for(let session of this.pageSessions.values())session.client.close();this.pageSessions.clear(),this.tabIdMap.clear()}};var injectedSessions=new WeakMap,indicatorQueues=new WeakMap;function enqueueIndicatorOperation(session,operation){let queued=(indicatorQueues.get(session)??Promise.resolve()).catch(()=>{}).then(operation);return indicatorQueues.set(session,queued),queued.finally(()=>{indicatorQueues.get(session)===queued&&indicatorQueues.delete(session)})}function createFaviconScript(controlSource){let iconDataUrl=createControlledFaviconDataUrl(controlSource);return`(() => {
79
+ `).map(l=>l.trim()),port=parseInt(lines[0],10),browserWsPath=lines[1]??"/devtools/browser";return isNaN(port)?null:{port,browserWsPath}}catch{return null}}async function discoverTargets(port=9222){return new Promise((resolve2,reject)=>{let req=http.get(`http://localhost:${port}/json`,res=>{let data="";res.on("data",chunk=>data+=chunk),res.on("end",()=>{try{resolve2(JSON.parse(data))}catch(e){reject(new Error(`Failed to parse CDP targets: ${e}`))}})});req.on("error",reject),req.setTimeout(3e3,()=>{req.destroy(),reject(new Error("CDP discover timeout"))})})}function isImplicitlySelectablePageUrl(url2){return!url2.startsWith("chrome-extension://")&&!url2.startsWith("about:")&&!url2.startsWith("chrome://")}var CdpSession=class{port;userDataDir;endpointUrl;endpointResolver;browserClient=null;browserClientPromise=null;pageSessions=new Map;tabIdMap=new Map;nextTabId=1e3;constructor(options=9222){if(typeof options=="number"){this.port=options;return}this.port=options.port??9222,this.userDataDir=options.userDataDir,this.endpointUrl=options.endpointUrl,this.endpointResolver=options.endpointResolver}async getBrowserClient(){if(this.browserClient&&!this.browserClient.closed)return this.browserClient;this.browserClientPromise||(this.browserClientPromise=this.connectBrowserClient());let pending=this.browserClientPromise;try{return await pending}finally{this.browserClientPromise===pending&&(this.browserClientPromise=null)}}async getPageSession(virtualTabId){let targetId;if(virtualTabId!==void 0&&(targetId=this.tabIdMap.get(virtualTabId),!targetId))throw new Error(`Tab ${virtualTabId} not found. Open a tab first with tab_open.`);if(targetId){let existing2=this.pageSessions.get(targetId);if(existing2&&!existing2.client.closed)return existing2}let target=targetId?await this.findTargetById(targetId):await this.findDefaultPageTarget();if(!target)throw new Error(virtualTabId?`CDP target for tab ${virtualTabId} is no longer available`:"No implicitly selectable page target found. about:, chrome:, and extension pages are excluded; pass a tabId returned by tab_open or open a web page.");let existing=this.pageSessions.get(target.id);return existing&&!existing.client.closed?existing:this.createPageSession(target)}async registerTarget(targetId){let virtualId=this.nextTabId++;this.tabIdMap.set(virtualId,targetId);let target=await this.findTargetById(targetId);return target&&await this.createPageSession(target),virtualId}async ensureTargetRegistered(targetId){for(let[virtualId2,registeredTargetId]of this.tabIdMap)if(registeredTargetId===targetId)return virtualId2;let virtualId=this.nextTabId++;return this.tabIdMap.set(virtualId,targetId),virtualId}async connectBrowserClient(){let wsUrl=await this.resolveBrowserWsUrl();if(!wsUrl)throw new Error("No browser-level WebSocket URL available from CDP");let client2=await CdpClient.connect(wsUrl);return this.browserClient=client2,client2.on("Target.targetDestroyed",params=>{for(let[virtualId,targetId]of this.tabIdMap)if(targetId===params.targetId){this.tabIdMap.delete(virtualId);break}this.pageSessions.delete(params.targetId)}),client2}async createPageSession(target){let client2;try{let browser=await this.getBrowserClient(),{sessionId}=await browser.sendCommand("Target.attachToTarget",{targetId:target.id,flatten:!0},5e3);client2=browser.createChildSession(sessionId)}catch(error48){if(this.isRemote())throw new Error(`Failed to attach to remote CDP target ${target.id}: ${error48 instanceof Error?error48.message:String(error48)}`,{cause:error48});client2=await CdpClient.connect(target.webSocketDebuggerUrl)}let tabId;for(let[virtualId,registeredTargetId]of this.tabIdMap)if(registeredTargetId===target.id){tabId=virtualId;break}tabId===void 0&&(tabId=this.nextTabId++,this.tabIdMap.set(tabId,target.id));let buffers=createBuffers(tabId);await setupBufferListeners(client2,buffers);let session={tabId,client:client2,buffers,targetId:target.id,url:target.url};return this.pageSessions.set(target.id,session),client2.on("Inspector.detached",()=>{this.pageSessions.delete(target.id)}),session}async findTargetById(targetId){if(this.isRemote())return this.findTargetByIdViaCdp(targetId);try{return(await discoverTargets(this.effectivePort())).find(t=>t.id===targetId&&t.webSocketDebuggerUrl)??null}catch{return this.findTargetByIdViaCdp(targetId)}}async findDefaultPageTarget(){if(this.isRemote())return this.findDefaultPageTargetViaCdp();try{return(await discoverTargets(this.effectivePort())).find(t=>t.type==="page"&&t.webSocketDebuggerUrl&&isImplicitlySelectablePageUrl(t.url))??null}catch{return this.findDefaultPageTargetViaCdp()}}effectivePort(){return readDevToolsActivePort(this.userDataDir)?.port??this.port}async resolveBrowserWsUrl(){let configuredEndpoint=this.endpointResolver?await this.endpointResolver():this.endpointUrl;if(configuredEndpoint){let url2=new URL(configuredEndpoint);if(url2.protocol!=="ws:"&&url2.protocol!=="wss:")throw new Error(`Unsupported CDP endpoint protocol: ${url2.protocol}`);return url2.toString()}let fileInfo=readDevToolsActivePort(this.userDataDir);if(fileInfo)return`ws://localhost:${fileInfo.port}${fileInfo.browserWsPath}`;try{return(await this.fetchVersionInfo()).webSocketDebuggerUrl??null}catch{return null}}pageWsUrl(targetId){return`ws://localhost:${this.effectivePort()}/devtools/page/${targetId}`}isRemote(){return!!(this.endpointUrl||this.endpointResolver)}async findTargetByIdViaCdp(targetId){try{let info=(await(await this.getBrowserClient()).sendCommand("Target.getTargets",{})).targetInfos.find(t=>t.targetId===targetId);return info?{id:info.targetId,title:info.title??"",type:info.type??"page",url:info.url??"",webSocketDebuggerUrl:this.pageWsUrl(info.targetId)}:null}catch{return null}}async findDefaultPageTargetViaCdp(){try{let info=(await(await this.getBrowserClient()).sendCommand("Target.getTargets",{})).targetInfos.find(t=>t.type==="page"&&isImplicitlySelectablePageUrl(t.url));return info?{id:info.targetId,title:info.title??"",type:info.type??"page",url:info.url??"",webSocketDebuggerUrl:this.pageWsUrl(info.targetId)}:null}catch{return null}}fetchVersionInfo(){return new Promise((resolve2,reject)=>{let req=http2.get(`http://localhost:${this.port}/json/version`,res=>{let data="";res.on("data",chunk=>data+=chunk),res.on("end",()=>{try{resolve2(JSON.parse(data))}catch(e){reject(new Error(`Failed to parse CDP version info: ${e}`))}})});req.on("error",reject),req.setTimeout(3e3,()=>{req.destroy(),reject(new Error("CDP version info timeout"))})})}async probeAvailability(){try{return await(await this.getBrowserClient()).sendCommand("Target.getTargets",{},3e3),{available:!0}}catch(error48){return this.browserClient?.close(),this.browserClient=null,{available:!1,error:(error48 instanceof Error?error48.message:String(error48)).trim()||"CDP connection failed"}}}async isAvailable(){return(await this.probeAvailability()).available}hasActiveConnections(){return this.browserClient!==null&&!this.browserClient.closed||Array.from(this.pageSessions.values()).some(session=>!session.client.closed)}listOpenPageSessions(){return Array.from(this.pageSessions.values()).filter(session=>!session.client.closed)}listRegisteredTabIds(targetIds){return Array.from(this.tabIdMap.entries()).filter(([,targetId])=>!targetIds||targetIds.has(targetId)).map(([tabId])=>tabId)}close(){this.browserClient?.close(),this.browserClient=null;for(let session of this.pageSessions.values())session.client.close();this.pageSessions.clear(),this.tabIdMap.clear()}};var injectedSessions=new WeakMap,indicatorQueues=new WeakMap;function enqueueIndicatorOperation(session,operation){let queued=(indicatorQueues.get(session)??Promise.resolve()).catch(()=>{}).then(operation);return indicatorQueues.set(session,queued),queued.finally(()=>{indicatorQueues.get(session)===queued&&indicatorQueues.delete(session)})}function createFaviconScript(controlSource){let iconDataUrl=createControlledFaviconDataUrl(controlSource);return`(() => {
80
80
  if (window !== window.top) return;
81
81
  const ICON = ${JSON.stringify(iconDataUrl)};
82
82
  const existing = window.__mearlControlledFavicon__;
@@ -396,14 +396,14 @@ ${SOURCE_BADGES[source]}
396
396
  <div id="bottom-bar" class="system-bar" data-mearl-device-bottom-bar>
397
397
  <button id="gesture-surface" type="button" data-interactive="false" disabled aria-hidden="true"><span id="gesture-indicator" aria-hidden="true"></span></button>
398
398
  </div>
399
- </div>`;let deviceChrome=root.querySelector("#device-chrome"),statusBar=root.querySelector("#status-bar"),time3=root.querySelector("#time"),cutoutButton=root.querySelector("#device-cutout"),cutoutStatusPath=root.querySelector("#cutout-check path"),gestureSurface=root.querySelector("#gesture-surface"),screenshotPending=!1,resetTimer=null,destroyed=!1,updateTime=()=>{if(!time3)return;let now=new NativeDate(nativeNow()+(state.timeOffsetMs??0));time3.textContent=`${String(now.getHours()).padStart(2,"0")}:${String(now.getMinutes()).padStart(2,"0")}`};updateTime();let timeTimer=browser.setInterval(updateTime,3e4),setCutoutState=nextState=>{if(!cutoutButton||cutoutButton.tagName!=="BUTTON")return;cutoutButton.dataset.state=nextState;let label=nextState==="copied"?labels.copied:nextState==="downloaded"?labels.downloaded:nextState==="failed"?labels.captureFailed:labels.screenshot;cutoutButton.setAttribute("aria-label",label),cutoutButton.title=label,cutoutStatusPath?.setAttribute("d",nextState==="failed"?"M5.5 5.5l9 9m0-9-9 9":"m4.5 10.5 3.2 3.2 7.8-7.8")},screenshotBlob=data=>{let binary=browser.atob(data),bytes=new Uint8Array(binary.length);for(let index=0;index<binary.length;index+=1)bytes[index]=binary.charCodeAt(index);return new browser.Blob([bytes],{type:"image/png"})},downloadScreenshot=blob=>{let link=ownerDocument.createElement("a"),objectUrl=browser.URL.createObjectURL(blob);link.href=objectUrl,link.download=`mearl-screenshot-${new Date().toISOString().replace(/[:.]/g,"-")}.png`,link.style.display="none",ownerDocument.body.appendChild(link),link.click(),link.remove(),browser.setTimeout(()=>browser.URL.revokeObjectURL(objectUrl),1e3)},applyState=()=>{if(statusBar&&(statusBar.style.display=state.statusBarVisible?"":"none",statusBar.style.background=state.statusBarBackground),deviceChrome&&(deviceChrome.style.color=state.textColor),gestureSurface){let interactive=!!(state.bottomActionEnabled&&options.onBottomAction);gestureSurface.dataset.interactive=String(interactive),gestureSurface.disabled=!interactive,gestureSurface.setAttribute("aria-hidden",String(!interactive)),interactive?(gestureSurface.setAttribute("aria-label",labels.bottomAction),gestureSurface.title=labels.bottomAction):(gestureSurface.removeAttribute("aria-label"),gestureSurface.removeAttribute("title"))}};return cutoutButton?.tagName==="BUTTON"&&(setCutoutState("idle"),cutoutButton.disabled=!options.captureScreenshot,cutoutButton.addEventListener("click",()=>{destroyed||!options.captureScreenshot||screenshotPending||cutoutButton.dataset.state!=="idle"||(screenshotPending=!0,cutoutButton.setAttribute("aria-busy","true"),options.captureScreenshot().then(({data})=>screenshotBlob(data)).then(async blob=>{let ClipboardItemConstructor=browser.ClipboardItem;if(browser.navigator.clipboard?.write&&ClipboardItemConstructor)try{await browser.navigator.clipboard.write([new ClipboardItemConstructor({"image/png":blob})]),setCutoutState("copied");return}catch{}downloadScreenshot(blob),setCutoutState("downloaded")}).catch(()=>setCutoutState("failed")).finally(()=>{screenshotPending=!1,!destroyed&&(cutoutButton.setAttribute("aria-busy","false"),resetTimer=browser.setTimeout(()=>{resetTimer=null,screenshotPending||setCutoutState("idle")},1600))}))})),gestureSurface?.addEventListener("click",()=>{!destroyed&&state.bottomActionEnabled&&options.onBottomAction?.()}),applyState(),{updateState(nextState){destroyed||(Object.assign(state,nextState),applyState(),updateTime())},destroy(){destroyed||(destroyed=!0,browser.clearInterval(timeTimer),resetTimer!==null&&browser.clearTimeout(resetTimer),root.replaceChildren())}}}var deviceShellStates=new WeakMap,DEVICE_SHELL_BINDING="__mearlCdpDeviceShellRelay",DEVICE_SHELL_RESPONSE="__mearlCdpDeviceShellResponse",FRAME_INTERACTIVITY_SETTLE_TIMEOUT_MS=420,FRAME_INTERACTIVITY_POLL_MS=20;function findActiveWebView(frameTree){if(!frameTree)return;let root=frameTree.frame?.name==="__mearl_root__"?frameTree.frame:void 0,layer=frameTree.frame?.name==="__mearl_layer__"?frameTree.frame:void 0;for(let child of frameTree.childFrames??[]){let match=findActiveWebView(child);match&&(match.name==="__mearl_layer__"?layer=match:root??=match)}return layer??root}function collectDeviceShellFrames(frameTree,frames=[]){if(!frameTree)return frames;(frameTree.frame?.name==="__mearl_root__"||frameTree.frame?.name==="__mearl_layer__")&&frames.push(frameTree.frame);for(let child of frameTree.childFrames??[])collectDeviceShellFrames(child,frames);return frames}async function readFrameOwnerInteractivity(client2,frameId){try{let owner=await client2.sendCommand("DOM.getFrameOwner",{frameId});if(owner.backendNodeId===void 0)return;let attributes=(await client2.sendCommand("DOM.describeNode",{backendNodeId:owner.backendNodeId,depth:0})).node?.attributes;if(!attributes)return;let names=new Set(attributes.filter((_,index)=>index%2===0)),ariaHiddenIndex=attributes.indexOf("aria-hidden");return!names.has("inert")&&(ariaHiddenIndex<0||attributes[ariaHiddenIndex+1]!=="true")}catch{return}}async function resolveInteractiveWebViewFrame(client2){let deadline=Date.now()+FRAME_INTERACTIVITY_SETTLE_TIMEOUT_MS,fallback;do{let frameTree=(await client2.sendCommand("Page.getFrameTree").catch(()=>null))?.frameTree;fallback=findActiveWebView(frameTree)??fallback;let candidates=collectDeviceShellFrames(frameTree),inspected=!1;for(let index=candidates.length-1;index>=0;index-=1){let candidate=candidates[index];if(candidate.id===frameTree?.frame?.id)continue;let interactive=await readFrameOwnerInteractivity(client2,candidate.id);if(interactive!==void 0&&(inspected=!0,interactive))return candidate}if(!inspected||Date.now()>=deadline)return fallback;await new Promise(resolve2=>setTimeout(resolve2,FRAME_INTERACTIVITY_POLL_MS))}while(Date.now()<deadline);return fallback}function trackExecutionContexts(state,client2){let contexts=new Map;return state.executionContexts.set(client2,contexts),[client2.on("Runtime.executionContextsCleared",()=>contexts.clear()),client2.on("Runtime.executionContextCreated",params=>{let context=params?.context,frameId=context?.auxData?.frameId;typeof frameId=="string"&&context?.auxData?.isDefault===!0&&typeof context.id=="number"&&contexts.set(frameId,context.id)}),client2.on("Runtime.executionContextDestroyed",params=>{let executionContextId=params?.executionContextId;for(let[frameId,contextId]of contexts)contextId===executionContextId&&contexts.delete(frameId)})]}async function installChildTarget(session,state,params){let sessionId=params.sessionId;if(typeof sessionId!="string")return;let child=session.client.createChildSession(sessionId),disposeListeners=trackExecutionContexts(state,child);try{if(params.targetInfo?.type!=="iframe"||deviceShellStates.get(session)!==state)return;await child.sendCommand("Runtime.enable");let frameName=await child.sendCommand("Runtime.evaluate",{expression:"window.name",returnByValue:!0}).then(result=>result.result?.value);if(frameName!=="__mearl_root__"&&frameName!=="__mearl_layer__")return;let frameTree=await child.sendCommand("Page.getFrameTree").catch(()=>null);if(state.attachedWebViews.set(sessionId,{client:child,name:frameName,frameId:frameTree?.frameTree?.frame?.id??params.targetInfo?.targetId,order:state.nextAttachedOrder++,disposeListeners}),!state.childEnvironmentManagedByApp)for(let{method,params:commandParams,optional:optional2}of buildEnableEmulationCommands(state.emulation))await child.sendCommand(method,commandParams).catch(error48=>{if(!optional2)throw error48})}finally{if(!state.attachedWebViews.has(sessionId)){for(let dispose of disposeListeners)dispose();state.executionContexts.delete(child)}await child.sendCommand("Runtime.runIfWaitingForDebugger").catch(()=>{})}}async function enableDeviceShellFrameRouting(session,state){state.disposeListeners.push(...trackExecutionContexts(state,session.client)),state.disposeListeners.push(session.client.on("Target.attachedToTarget",params=>{installChildTarget(session,state,params).catch(()=>{})})),state.disposeListeners.push(session.client.on("Target.detachedFromTarget",params=>{if(deviceShellStates.get(session)!==state)return;let attached=state.attachedWebViews.get(params?.sessionId);if(attached){for(let dispose of attached.disposeListeners)dispose();state.executionContexts.delete(attached.client),state.attachedWebViews.delete(params.sessionId)}})),await session.client.sendCommand("Runtime.enable"),await session.client.sendCommand("Target.setAutoAttach",{autoAttach:!0,waitForDebuggerOnStart:!0,flatten:!0,filter:[{type:"iframe"},{exclude:!0}]})}function serializeForSource(value){return JSON.stringify(value).replace(/[\u2028\u2029]/g,character=>character==="\u2028"?"\\u2028":"\\u2029")}function installDeviceShell(config2,installChromeView,bindingName,responseName){let browser=globalThis,target=globalThis,document2=browser.document;if(browser.top!==globalThis||!/^https?:$/i.test(browser.location.protocol))return;let businessUrl=browser.location.href;try{let shellRoot=document2.createElement("html"),shellHead=document2.createElement("head"),charset=document2.createElement("meta"),viewport=document2.createElement("meta"),title=document2.createElement("title"),style=document2.createElement("style"),shellBody=document2.createElement("body"),frame=document2.createElement("iframe"),chromeHost=document2.createElement("div");shellRoot.setAttribute("data-mearl-device-shell",""),shellBody.setAttribute("data-mearl-device-shell",""),charset.setAttribute("charset","utf-8"),viewport.name="viewport",viewport.content="width=device-width,initial-scale=1,viewport-fit=cover",style.textContent=`
399
+ </div>`;let deviceChrome=root.querySelector("#device-chrome"),statusBar=root.querySelector("#status-bar"),time3=root.querySelector("#time"),cutoutButton=root.querySelector("#device-cutout"),cutoutStatusPath=root.querySelector("#cutout-check path"),gestureSurface=root.querySelector("#gesture-surface"),screenshotPending=!1,resetTimer=null,destroyed=!1,updateTime=()=>{if(!time3)return;let now=new NativeDate(nativeNow()+(state.timeOffsetMs??0));time3.textContent=`${String(now.getHours()).padStart(2,"0")}:${String(now.getMinutes()).padStart(2,"0")}`};updateTime();let timeTimer=browser.setInterval(updateTime,3e4),setCutoutState=nextState=>{if(!cutoutButton||cutoutButton.tagName!=="BUTTON")return;cutoutButton.dataset.state=nextState;let label=nextState==="copied"?labels.copied:nextState==="downloaded"?labels.downloaded:nextState==="failed"?labels.captureFailed:labels.screenshot;cutoutButton.setAttribute("aria-label",label),cutoutButton.title=label,cutoutStatusPath?.setAttribute("d",nextState==="failed"?"M5.5 5.5l9 9m0-9-9 9":"m4.5 10.5 3.2 3.2 7.8-7.8")},screenshotBlob=data=>{let binary=browser.atob(data),bytes=new Uint8Array(binary.length);for(let index=0;index<binary.length;index+=1)bytes[index]=binary.charCodeAt(index);return new browser.Blob([bytes],{type:"image/png"})},downloadScreenshot=blob=>{let link=ownerDocument.createElement("a"),objectUrl=browser.URL.createObjectURL(blob);link.href=objectUrl,link.download=`mearl-screenshot-${new Date().toISOString().replace(/[:.]/g,"-")}.png`,link.style.display="none",ownerDocument.body.appendChild(link),link.click(),link.remove(),browser.setTimeout(()=>browser.URL.revokeObjectURL(objectUrl),1e3)},applyState=()=>{if(statusBar&&(statusBar.style.display=state.statusBarVisible?"":"none",statusBar.style.background=state.statusBarBackground),deviceChrome&&(deviceChrome.style.color=state.textColor),gestureSurface){let interactive=!!(state.bottomActionEnabled&&options.onBottomAction);gestureSurface.dataset.interactive=String(interactive),gestureSurface.disabled=!interactive,gestureSurface.setAttribute("aria-hidden",String(!interactive)),interactive?(gestureSurface.setAttribute("aria-label",labels.bottomAction),gestureSurface.title=labels.bottomAction):(gestureSurface.removeAttribute("aria-label"),gestureSurface.removeAttribute("title"))}};return cutoutButton?.tagName==="BUTTON"&&(setCutoutState("idle"),cutoutButton.disabled=!options.captureScreenshot,cutoutButton.addEventListener("click",()=>{destroyed||!options.captureScreenshot||screenshotPending||cutoutButton.dataset.state!=="idle"||(screenshotPending=!0,cutoutButton.setAttribute("aria-busy","true"),options.captureScreenshot().then(({data})=>screenshotBlob(data)).then(async blob=>{let ClipboardItemConstructor=browser.ClipboardItem;if(browser.navigator.clipboard?.write&&ClipboardItemConstructor)try{await browser.navigator.clipboard.write([new ClipboardItemConstructor({"image/png":blob})]),setCutoutState("copied");return}catch{}downloadScreenshot(blob),setCutoutState("downloaded")}).catch(()=>setCutoutState("failed")).finally(()=>{screenshotPending=!1,!destroyed&&(cutoutButton.setAttribute("aria-busy","false"),resetTimer=browser.setTimeout(()=>{resetTimer=null,screenshotPending||setCutoutState("idle")},1600))}))})),gestureSurface?.addEventListener("click",()=>{!destroyed&&state.bottomActionEnabled&&options.onBottomAction?.()}),applyState(),{updateState(nextState){destroyed||(Object.assign(state,nextState),applyState(),updateTime())},destroy(){destroyed||(destroyed=!0,browser.clearInterval(timeTimer),resetTimer!==null&&browser.clearTimeout(resetTimer),root.replaceChildren())}}}var deviceShellStates=new WeakMap,DEVICE_SHELL_BINDING="__mearlCdpDeviceShellRelay",DEVICE_SHELL_RESPONSE="__mearlCdpDeviceShellResponse",FRAME_INTERACTIVITY_SETTLE_TIMEOUT_MS=420,FRAME_INTERACTIVITY_POLL_MS=20;function findActiveWebView(frameTree){if(!frameTree)return;let root=frameTree.frame?.name==="__mearl_root__"?frameTree.frame:void 0,layer=frameTree.frame?.name==="__mearl_layer__"?frameTree.frame:void 0;for(let child of frameTree.childFrames??[]){let match=findActiveWebView(child);match&&(match.name==="__mearl_layer__"?layer=match:root??=match)}return layer??root}function collectDeviceShellFrames(frameTree,frames=[]){if(!frameTree)return frames;(frameTree.frame?.name==="__mearl_root__"||frameTree.frame?.name==="__mearl_layer__")&&frames.push(frameTree.frame);for(let child of frameTree.childFrames??[])collectDeviceShellFrames(child,frames);return frames}async function readFrameOwnerInteractivity(client2,frameId){try{let owner=await client2.sendCommand("DOM.getFrameOwner",{frameId});if(owner.backendNodeId===void 0)return;let attributes=(await client2.sendCommand("DOM.describeNode",{backendNodeId:owner.backendNodeId,depth:0})).node?.attributes;if(!attributes)return;let names=new Set(attributes.filter((_,index)=>index%2===0)),ariaHiddenIndex=attributes.indexOf("aria-hidden");return!names.has("inert")&&(ariaHiddenIndex<0||attributes[ariaHiddenIndex+1]!=="true")}catch{return}}async function resolveInteractiveWebViewFrame(client2){let deadline=Date.now()+FRAME_INTERACTIVITY_SETTLE_TIMEOUT_MS,fallback;do{let frameTree=(await client2.sendCommand("Page.getFrameTree").catch(()=>null))?.frameTree;fallback=findActiveWebView(frameTree)??fallback;let candidates=collectDeviceShellFrames(frameTree),inspected=!1;for(let index=candidates.length-1;index>=0;index-=1){let candidate=candidates[index];if(candidate.id===frameTree?.frame?.id)continue;let interactive=await readFrameOwnerInteractivity(client2,candidate.id);if(interactive!==void 0&&(inspected=!0,interactive))return candidate}if(!inspected||Date.now()>=deadline)return fallback;await new Promise(resolve2=>setTimeout(resolve2,FRAME_INTERACTIVITY_POLL_MS))}while(Date.now()<deadline);return fallback}function trackExecutionContexts(state,client2){let contexts=new Map;return state.executionContexts.set(client2,contexts),[client2.on("Runtime.executionContextsCleared",()=>contexts.clear()),client2.on("Runtime.executionContextCreated",params=>{let context=params?.context,frameId=context?.auxData?.frameId;typeof frameId=="string"&&context?.auxData?.isDefault===!0&&typeof context.id=="number"&&contexts.set(frameId,context.id)}),client2.on("Runtime.executionContextDestroyed",params=>{let executionContextId=params?.executionContextId;for(let[frameId,contextId]of contexts)contextId===executionContextId&&contexts.delete(frameId)})]}async function installChildTarget(session,state,params){let sessionId=params.sessionId;if(typeof sessionId!="string")return;let child=session.client.createChildSession(sessionId),disposeListeners=trackExecutionContexts(state,child);try{if(params.targetInfo?.type!=="iframe"||deviceShellStates.get(session)!==state)return;await child.sendCommand("Runtime.enable");let frameName=await child.sendCommand("Runtime.evaluate",{expression:"window.name",returnByValue:!0}).then(result=>result.result?.value);if(frameName!=="__mearl_root__"&&frameName!=="__mearl_layer__")return;let frameTree=await child.sendCommand("Page.getFrameTree").catch(()=>null);if(state.attachedWebViews.set(sessionId,{client:child,name:frameName,frameId:frameTree?.frameTree?.frame?.id??params.targetInfo?.targetId,order:state.nextAttachedOrder++,disposeListeners}),!state.childEnvironmentManagedByApp)for(let{method,params:commandParams,optional:optional2}of buildEnableEmulationCommands(state.emulation))await child.sendCommand(method,commandParams).catch(error48=>{if(!optional2)throw error48})}finally{if(!state.attachedWebViews.has(sessionId)){for(let dispose of disposeListeners)dispose();state.executionContexts.delete(child)}await child.sendCommand("Runtime.runIfWaitingForDebugger").catch(()=>{})}}async function enableDeviceShellFrameRouting(session,state){state.disposeListeners.push(...trackExecutionContexts(state,session.client)),state.disposeListeners.push(session.client.on("Target.attachedToTarget",params=>{installChildTarget(session,state,params).catch(()=>{})})),state.disposeListeners.push(session.client.on("Target.detachedFromTarget",params=>{if(deviceShellStates.get(session)!==state)return;let attached=state.attachedWebViews.get(params?.sessionId);if(attached){for(let dispose of attached.disposeListeners)dispose();state.executionContexts.delete(attached.client),state.attachedWebViews.delete(params.sessionId)}})),await session.client.sendCommand("Runtime.enable"),await session.client.sendCommand("Target.setAutoAttach",{autoAttach:!0,waitForDebuggerOnStart:!0,flatten:!0,filter:[{type:"iframe"},{exclude:!0}]})}function serializeForSource(value){return JSON.stringify(value).replace(/[\u2028\u2029]/g,character=>character==="\u2028"?"\\u2028":"\\u2029")}function installDeviceShell(config2,installChromeView,bindingName,responseName){let browser=globalThis,target=globalThis,document2=browser.document;if(browser.top!==globalThis||!/^https?:$/i.test(browser.location.protocol))return;if(!document2.documentElement){let observer=new browser.MutationObserver(()=>{document2.documentElement&&(observer.disconnect(),installDeviceShell(config2,installChromeView,bindingName,responseName))});observer.observe(document2,{childList:!0});return}let businessUrl=browser.location.href;try{let shellRoot=document2.createElement("html"),shellHead=document2.createElement("head"),charset=document2.createElement("meta"),viewport=document2.createElement("meta"),title=document2.createElement("title"),style=document2.createElement("style"),shellBody=document2.createElement("body"),frame=document2.createElement("iframe"),chromeHost=document2.createElement("div");shellRoot.setAttribute("data-mearl-device-shell",""),shellBody.setAttribute("data-mearl-device-shell",""),charset.setAttribute("charset","utf-8"),viewport.name="viewport",viewport.content="width=device-width,initial-scale=1,viewport-fit=cover",style.textContent=`
400
400
  :root, body { width: 100%; height: 100%; margin: 0; overflow: hidden; background: #fff; }
401
401
  [data-mearl-root-webview] {
402
402
  position: fixed; left: 0; right: 0; top: ${config2.statusBarHeight}px;
403
403
  width: 100%; height: calc(100% - ${config2.statusBarHeight}px);
404
404
  border: 0; display: block; background: #fff; z-index: 0;
405
405
  }
406
- `,shellHead.append(charset,viewport,title,style),shellRoot.append(shellHead,shellBody),frame.name="__mearl_root__",frame.setAttribute("data-mearl-root-webview","device-shell"),frame.addEventListener("load",()=>{frame.getAttribute("src")&&frame.getAttribute("src")!=="about:blank"&&frame.setAttribute("data-mearl-webview-ready","")}),chromeHost.setAttribute("data-mearl-device-chrome-host","");let pendingScreenshots=new Map,nextScreenshotId=1;target[responseName]=(requestId,result)=>{let pending=pendingScreenshots.get(requestId);pending&&(pendingScreenshots.delete(requestId),browser.clearTimeout(pending.timer),typeof result?.data=="string"?pending.resolve({data:result.data}):pending.reject(new Error(String(result?.error??"Screenshot failed"))))};let binding=target[bindingName],captureScreenshot=typeof binding=="function"?()=>new Promise((resolve2,reject)=>{let requestId=nextScreenshotId++,timer=browser.setTimeout(()=>{pendingScreenshots.delete(requestId),reject(new Error("Screenshot timed out"))},15e3);pendingScreenshots.set(requestId,{resolve:resolve2,reject,timer});try{binding(JSON.stringify({type:"screenshot",requestId}))}catch(error48){pendingScreenshots.delete(requestId),browser.clearTimeout(timer),reject(error48 instanceof Error?error48:new Error(String(error48)))}}):void 0;installChromeView(chromeHost.attachShadow({mode:"open"}),config2,{captureScreenshot}),shellBody.append(frame,chromeHost);let currentRoot=document2.documentElement;currentRoot?document2.replaceChild(shellRoot,currentRoot):document2.appendChild(shellRoot),typeof browser.stop=="function"&&browser.stop(),frame.src=businessUrl}catch(error48){console.warn("[Mearl Device Shell] failed to create root WebView",error48)}}function resolveDeviceShellConfig(emulation){let platform=/iPhone|iPad|iPod|Mac/i.test(emulation.platform)?"ios":"android";return{platform,statusBarHeight:emulation.orientation==="landscape"?24:Math.max(0,Math.round(emulation.safeAreaInsets.top)),bottomBarHeight:Math.max(0,Math.round(emulation.safeAreaInsets.bottom)),cutout:platform==="ios"?emulation.appearance.cutout:"none"}}function buildDeviceShellSource(config2){return`;(${installDeviceShell.toString()})(${serializeForSource(config2)},(${installDeviceChromeView.toString()}),${JSON.stringify(DEVICE_SHELL_BINDING)},${JSON.stringify(DEVICE_SHELL_RESPONSE)});`}async function evaluateDeviceShellContext(session,contextId,expression,options={}){return session.client.sendCommand("Runtime.evaluate",{expression,...contextId===void 0?{}:{contextId},...options})}function listenForDeviceShellRequests(session,state){return session.client.on("Runtime.bindingCalled",params=>{if(params?.name!==DEVICE_SHELL_BINDING||deviceShellStates.get(session)!==state)return;let request;try{request=JSON.parse(params.payload)}catch{return}if(request.type!=="screenshot"||typeof request.requestId!="number")return;let requestId=request.requestId,contextId=typeof params.executionContextId=="number"?params.executionContextId:void 0,reply=result=>evaluateDeviceShellContext(session,contextId,`globalThis[${JSON.stringify(DEVICE_SHELL_RESPONSE)}]?.(${requestId},${serializeForSource(result)})`);(async()=>{let hiddenState;try{hiddenState=(await evaluateDeviceShellContext(session,contextId,`(() => {
406
+ `,shellHead.append(charset,viewport,title,style),shellRoot.append(shellHead,shellBody),frame.name="__mearl_root__",frame.setAttribute("data-mearl-root-webview","device-shell"),frame.addEventListener("load",()=>{frame.getAttribute("src")&&frame.getAttribute("src")!=="about:blank"&&(frame.setAttribute("data-mearl-webview-ready",""),frame.contentWindow?.postMessage({source:"mearl-app-bridge",type:"requestTitleBarState"},"*"))}),chromeHost.setAttribute("data-mearl-device-chrome-host","");let pendingScreenshots=new Map,nextScreenshotId=1;target[responseName]=(requestId,result)=>{let pending=pendingScreenshots.get(requestId);pending&&(pendingScreenshots.delete(requestId),browser.clearTimeout(pending.timer),typeof result?.data=="string"?pending.resolve({data:result.data}):pending.reject(new Error(String(result?.error??"Screenshot failed"))))};let binding=target[bindingName],captureScreenshot=typeof binding=="function"?()=>new Promise((resolve2,reject)=>{let requestId=nextScreenshotId++,timer=browser.setTimeout(()=>{pendingScreenshots.delete(requestId),reject(new Error("Screenshot timed out"))},15e3);pendingScreenshots.set(requestId,{resolve:resolve2,reject,timer});try{binding(JSON.stringify({type:"screenshot",requestId}))}catch(error48){pendingScreenshots.delete(requestId),browser.clearTimeout(timer),reject(error48 instanceof Error?error48:new Error(String(error48)))}}):void 0,chromeView=installChromeView(chromeHost.attachShadow({mode:"open"}),config2,{captureScreenshot});browser.addEventListener("message",event=>{if(event.source!==frame.contentWindow)return;let message=event.data,state=message?.state;message?.source!=="mearl-app-bridge"||message.type!=="titleBarState"||typeof state?.statusBarBackground!="string"||typeof state.textColor!="string"||chromeView.updateState({statusBarVisible:state.mode!=="hidden",statusBarBackground:state.statusBarBackground,textColor:state.textColor})}),shellBody.append(frame,chromeHost);let currentRoot=document2.documentElement;currentRoot?document2.replaceChild(shellRoot,currentRoot):document2.appendChild(shellRoot),typeof browser.stop=="function"&&browser.stop(),frame.src=businessUrl}catch(error48){console.warn("[Mearl Device Shell] failed to create root WebView",error48)}}function resolveDeviceShellConfig(emulation){let platform=/iPhone|iPad|iPod|Mac/i.test(emulation.platform)?"ios":"android";return{platform,statusBarHeight:emulation.orientation==="landscape"?24:Math.max(0,Math.round(emulation.safeAreaInsets.top)),bottomBarHeight:Math.max(0,Math.round(emulation.safeAreaInsets.bottom)),cutout:platform==="ios"?emulation.appearance.cutout:"none"}}function buildDeviceShellSource(config2){return`;(${installDeviceShell.toString()})(${serializeForSource(config2)},(${installDeviceChromeView.toString()}),${JSON.stringify(DEVICE_SHELL_BINDING)},${JSON.stringify(DEVICE_SHELL_RESPONSE)});`}async function evaluateDeviceShellContext(session,contextId,expression,options={}){return session.client.sendCommand("Runtime.evaluate",{expression,...contextId===void 0?{}:{contextId},...options})}function listenForDeviceShellRequests(session,state){return session.client.on("Runtime.bindingCalled",params=>{if(params?.name!==DEVICE_SHELL_BINDING||deviceShellStates.get(session)!==state)return;let request;try{request=JSON.parse(params.payload)}catch{return}if(request.type!=="screenshot"||typeof request.requestId!="number")return;let requestId=request.requestId,contextId=typeof params.executionContextId=="number"?params.executionContextId:void 0,reply=result=>evaluateDeviceShellContext(session,contextId,`globalThis[${JSON.stringify(DEVICE_SHELL_RESPONSE)}]?.(${requestId},${serializeForSource(result)})`);(async()=>{let hiddenState;try{hiddenState=(await evaluateDeviceShellContext(session,contextId,`(() => {
407
407
  const root = document.documentElement;
408
408
  if (!root) return {};
409
409
  const property = '--mearl-device-cutout-display';
@@ -622,10 +622,10 @@ ${SOURCE_BADGES[source]}
622
622
  #surface[data-platform="android"]{font-family:Roboto,"Noto Sans SC",sans-serif}
623
623
  #surface[data-platform="android"] #status{padding:0 12px;font-size:12px;font-weight:500;letter-spacing:0}
624
624
  #surface[data-platform="android"] #indicators{gap:5px;transform:scale(.86);transform-origin:right center}
625
- </style><div id="surface" data-platform="${config2.platform.toLowerCase()}" data-cutout="${String(cutoutKind!=="none")}" data-cutout-kind="${cutoutKind}"><div id="status"><span id="time"></span>${cutoutMarkup}<span id="indicators" aria-hidden="true"><svg id="signal" viewBox="0 0 18 12"><rect x="0" y="8" width="3" height="4" rx="1"/><rect x="5" y="6" width="3" height="6" rx="1"/><rect x="10" y="3" width="3" height="9" rx="1"/><rect x="15" y="0" width="3" height="12" rx="1"/></svg><svg id="wifi" viewBox="1 3.8 22 17.2"><path d="M2 8.82a15 15 0 0 1 20 0"/><path d="M5 12.859a10 10 0 0 1 14 0"/><path d="M8.5 16.429a5 5 0 0 1 7 0"/><path d="M12 20h.01"/></svg><svg id="battery" viewBox="0 0 28 13"><rect id="battery-outline" x=".65" y=".65" width="23" height="11.7" rx="3.1"/><rect id="battery-level" x="2.35" y="2.35" width="19.6" height="8.3" rx="1.7"/><path id="battery-cap" d="M25 4.1c1.1.35 1.7 1.15 1.7 2.4s-.6 2.05-1.7 2.4z"/></svg></span></div></div>`;let surface=shadow.getElementById("surface"),time3=shadow.getElementById("time"),cutout=shadow.getElementById("device-cutout"),cutoutStatusPath=shadow.querySelector("#cutout-check path"),localizedScreenshotText=config2.language.toLowerCase().startsWith("zh")?{idle:"截图",copied:"已复制",downloaded:"已下载",failed:"截图失败"}:{idle:"Screenshot",copied:"Copied",downloaded:"Downloaded",failed:"Capture failed"},setCutoutState=state=>{cutout&&(cutout.dataset.state=state,cutout.setAttribute("aria-label",localizedScreenshotText[state]),cutout.title=localizedScreenshotText[state],cutoutStatusPath&&cutoutStatusPath.setAttribute("d",state==="failed"?"M5.5 5.5l9 9m0-9-9 9":"m4.5 10.5 3.2 3.2 7.8-7.8"))},screenshotPending=!1,screenshotBlob=data=>{let binary=atob(data),bytes=new Uint8Array(binary.length);for(let index=0;index<binary.length;index+=1)bytes[index]=binary.charCodeAt(index);return new Blob([bytes],{type:"image/png"})},downloadScreenshot=blob=>{let link=document.createElement("a"),objectUrl=URL.createObjectURL(blob);link.href=objectUrl,link.download=`mearl-screenshot-${new Date().toISOString().replace(/[:.]/g,"-")}.png`,link.style.display="none",document.body.appendChild(link),link.click(),link.remove(),window.setTimeout(()=>URL.revokeObjectURL(objectUrl),1e3)},captureScreenshot=async()=>{if(!cutout||screenshotPending||cutout.dataset.state!=="idle")return;screenshotPending=!0,cutout.setAttribute("aria-busy","true");let requestId=Date.now()*1e3+Math.floor(Math.random()*1e3),timeoutTimer=0,onResponse=null,image=new Promise((resolve2,reject)=>{let cleanup=()=>{timeoutTimer&&window.clearTimeout(timeoutTimer),onResponse&&window.removeEventListener("message",onResponse)};onResponse=event=>{if(event.source!==window)return;let message=event.data;if(!message||message.source!=="mearl-content"||message.type!=="APP_BRIDGE_SCREENSHOT_RESPONSE"||message.requestId!==requestId)return;cleanup();let result=message.result;result?.success===!0&&typeof result.data=="string"?resolve2({data:result.data}):reject(new Error(String(result?.error??"screenshot failed")))},window.addEventListener("message",onResponse),timeoutTimer=window.setTimeout(()=>{cleanup(),reject(new Error("screenshot timeout"))},35e3)}).then(result=>screenshotBlob(result.data)),clipboardWrite=null;if(navigator.clipboard?.write&&typeof ClipboardItem<"u")try{clipboardWrite=navigator.clipboard.write([new ClipboardItem({"image/png":image})]),clipboardWrite.catch(()=>{})}catch{clipboardWrite=null}window.postMessage({source:SRC,type:"screenshot",requestId},"*");try{let blob=await image;if(clipboardWrite)try{await clipboardWrite,setCutoutState("copied")}catch{downloadScreenshot(blob),setCutoutState("downloaded")}else downloadScreenshot(blob),setCutoutState("downloaded")}catch{setCutoutState("failed")}finally{screenshotPending=!1,cutout.setAttribute("aria-busy","false")}window.setTimeout(()=>{screenshotPending||setCutoutState("idle")},1600)};hasDynamicIsland&&cutout&&(setCutoutState("idle"),cutout.addEventListener("click",()=>void captureScreenshot()));let updateTime=()=>{let now=new Date;time3&&(time3.textContent=`${String(now.getHours()).padStart(2,"0")}:${String(now.getMinutes()).padStart(2,"0")}`)};return window.addEventListener("mearl:page-time-change",updateTime),updateTime(),{root,surface,timeTimer:window.setInterval(updateTime,3e4)}},install=()=>{let titleBar=config2.titleBar;if(!titleBar||!isContainerFrame||!simulateSystemBars)return;let observeState=()=>{new MutationObserver(syncSimulatedTitleBar).observe(document.head??document.documentElement,{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:["content","value"]}),window.addEventListener("popstate",syncSimulatedTitleBar),window.addEventListener("hashchange",syncSimulatedTitleBar),document.readyState==="loading"&&document.addEventListener("DOMContentLoaded",syncSimulatedTitleBar,{once:!0});try{let pushState=history.pushState.bind(history),replaceState=history.replaceState.bind(history);history.pushState=function(...args){pushState(...args),syncSimulatedTitleBar()},history.replaceState=function(...args){replaceState(...args),syncSimulatedTitleBar()}}catch{}};if(!isTop){observeState(),syncSimulatedTitleBar();return}let mount=()=>{if(titleBarRoot||!document.body)return;let totalHeight=config2.statusBarHeight+titleBar.navigationBarHeight,navigationView=createNavigationBarView("root",host.requestNativeBack),statusView=externalDeviceChrome||config2.statusBarHeight<=0?null:createStatusBarView(),spacer=document.createElement("div");if(spacer.setAttribute("data-mearl-app-titlebar-spacer",""),spacer.style.cssText=`display:block;width:100%;height:${totalHeight}px;min-height:${totalHeight}px;flex:none;`,spacer.style.setProperty("--mearl-app-navigation-bar-height",`${titleBar.navigationBarHeight}px`),document.body.insertBefore(spacer,document.body.firstChild),document.body.appendChild(navigationView.root),statusView&&document.body.appendChild(statusView.root),!externalDeviceChrome&&safeAreaInsets.bottom>0){let bottomRoot=document.createElement("div");bottomRoot.setAttribute("data-mearl-app-system-bottom",config2.profile),bottomRoot.style.cssText=`position:fixed;left:0;right:0;bottom:0;height:${safeAreaInsets.bottom}px;z-index:2147483600;box-sizing:border-box;pointer-events:none;color:#111111;`;let bottomShadow=bottomRoot.attachShadow({mode:"open"});bottomShadow.innerHTML=`<style>:host{all:initial}#surface{appearance:none;border:0;padding:0;width:166px;max-width:100%;height:24px;position:absolute;left:50%;bottom:0;transform:translateX(-50%);display:block;box-sizing:border-box;pointer-events:auto;color:#111;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent}#surface:focus-visible{outline:2px solid #2563eb;outline-offset:-2px}#indicator{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);width:134px;height:5px;border-radius:999px;background:currentColor;opacity:.92;transition:transform 120ms ease,opacity 120ms ease}#surface:hover #indicator{opacity:1;transform:translateX(-50%) scaleX(1.05)}#surface[data-platform="android"] #indicator{bottom:6px;width:108px;height:4px;opacity:.82}</style><button id="surface" type="button" aria-label="打开桥模拟配置" title="桥模拟配置" data-platform="${config2.platform.toLowerCase()}"><span id="indicator" aria-hidden="true"></span></button>`,document.body.appendChild(bottomRoot),systemBottomRoot=bottomRoot,systemBottomSurface=bottomShadow.getElementById("surface"),systemBottomSurface?.addEventListener("click",()=>{window.postMessage({source:SRC,type:"showBridgeConfig",profile:config2.profile,actions:config2.actions},"*")})}rootTitleBarView=navigationView,systemStatusView=statusView,titleBarRoot=navigationView.root,titleBarSpacer=spacer,syncSimulatedTitleBar(),observeState()};document.body?mount():document.addEventListener("DOMContentLoaded",mount,{once:!0})},service={initialLayerTitleBarState,resolvedTitleBarState,parseReportedTitleBarState,setPresentedRootTitleBarState:state=>{presentedRootTitleBarState=state,syncSimulatedTitleBar()},markStateExplicit:()=>{titleBarStateExplicit=!0},applyNavigationBarState,applyStatusBarState,createNavigationBarView,destroyNavigationBarView:view=>view?.root.remove(),syncLayerViewport,syncActiveSystemBars,syncSimulatedTitleBar};return install(),service}function installAppProfilePageTransport(config2,environment){let{SRC,TAG,log:log2}=environment,appToast=null,appToastHideTimer=null,appToastRemoveTimer=null;function showAppToast(params){let p=params&&typeof params=="object"?params:{},messageValue=[p.message,p.msg,p.content,p.text].find(value=>typeof value=="string"&&value.trim().length>0);if(typeof messageValue!="string")return"missing message";let durationValue=Number(p.milliseconds??p.duration),duration3=Number.isFinite(durationValue)&&durationValue>0?durationValue:2e3,hideAfter=Math.min(6e4,Math.max(300,Math.round(duration3)));appToastHideTimer!==null&&window.clearTimeout(appToastHideTimer),appToastRemoveTimer!==null&&window.clearTimeout(appToastRemoveTimer);let toast=appToast?.isConnected===!0?appToast:document.createElement("div");return toast!==appToast&&(appToast=toast,toast.setAttribute("data-mearl-app-toast",""),toast.setAttribute("role","status"),toast.setAttribute("aria-live","polite"),Object.assign(toast.style,{position:"fixed",left:"50%",top:"50%",zIndex:"2147483647",maxWidth:"calc(100vw - 64px)",boxSizing:"border-box",padding:"14px 20px",borderRadius:"12px",background:"rgba(20, 20, 20, 0.88)",color:"#ffffff",fontFamily:'-apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif',fontSize:"16px",fontWeight:"400",lineHeight:"24px",textAlign:"center",whiteSpace:"pre-wrap",overflowWrap:"anywhere",pointerEvents:"none",opacity:"0",transform:"translate(-50%, -50%) scale(0.96)",transition:"opacity 180ms ease, transform 180ms ease"}),(document.body??document.documentElement).appendChild(toast)),toast.textContent=messageValue,toast.style.opacity="0",toast.style.transform="translate(-50%, -50%) scale(0.96)",toast.offsetWidth,toast.style.opacity="1",toast.style.transform="translate(-50%, -50%) scale(1)",appToastHideTimer=window.setTimeout(()=>{appToastHideTimer=null,toast.style.opacity="0",toast.style.transform="translate(-50%, -50%) scale(0.96)",appToastRemoveTimer=window.setTimeout(()=>{appToastRemoveTimer=null,appToast===toast&&(appToast=null),toast.remove()},180)},hideAfter),null}let bridgeRequestSeq=0,pendingMtop={},pendingMtopStreams={},pendingUserInfo={};function callMtop(params,succ,fail2){let id=++bridgeRequestSeq;pendingMtop[id]={succ,fail:fail2};let post=params.post,rawTimeout=params.timeout??params.timer,timeout=typeof rawTimeout=="number"?rawTimeout:typeof rawTimeout=="string"&&rawTimeout.trim()!==""?Number(rawTimeout):void 0,payload={...params,data:params.data!==void 0?params.data:params.param??{},method:params.method??(post===!0||post===1||post==="1"||post==="true"?"POST":"GET"),env:params.env??(/(^|\.)wapa\.taobao\.com$/i.test(location.hostname)?"pre":"online"),...Number.isFinite(timeout)&&{timeout}};window.postMessage({source:SRC,type:"mtop",requestId:id,payload},"*"),log2("mtop 代发 →",params.api)}function callMtopAsync(params){return new Promise((resolve2,reject)=>callMtop(params,resolve2,reject))}function callMtopStream(params,succ,fail2){let sessionId=typeof params.id=="string"?params.id:String(params.id??""),request=params.request&&typeof params.request=="object"?params.request:null;if(!sessionId||!request||typeof request.api!="string"){fail2?.("invalid mtop_stream params");return}let requestId=++bridgeRequestSeq;pendingMtopStreams[requestId]={sessionId},window.postMessage({source:SRC,type:"mtopStream",requestId,payload:{...request,timeout:params.timeout,method:params.method??request.method,env:/(^|\.)wapa\.taobao\.com$/i.test(location.hostname)?"pre":"online"}},"*"),succ?.({}),log2("mtop 流式代发 →",request.api)}function callUserInfo(fallback,succ){if(fallback.userId){succ?.(fallback);return}let requestId=++bridgeRequestSeq,timer=setTimeout(()=>{let pending=pendingUserInfo[requestId];pending&&(delete pendingUserInfo[requestId],pending.succ?.(pending.fallback))},1e3);pendingUserInfo[requestId]={fallback,succ,timer},window.postMessage({source:SRC,type:"userInfo",requestId},"*")}function emitMtopStreamEvent(sessionId,eventType,data){let detail=data&&typeof data=="object"?{...data,eventType}:{data,eventType};document.dispatchEvent(new CustomEvent(`mtop_stream${sessionId}`,{detail}))}function createUploadId(){try{if(typeof crypto.randomUUID=="function")return crypto.randomUUID()}catch{}return`${Date.now()}-${Math.random().toString(36).slice(2)}`}function pickDirectUploadTarget(response){if(!response||typeof response!="object")return null;let data=response.data;if(data?.success===!1)return null;let result=data?.result,target=Array.isArray(result?.urls)?result.urls[0]:void 0;if(!target||typeof target!="object")return null;let item=target;if(typeof item.put!="string"||!item.put||typeof item.get!="string"||!item.get)return null;let rawHeaders=item.putHeaders&&typeof item.putHeaders=="object"?item.putHeaders:{},putHeaders=Object.fromEntries(Object.entries(rawHeaders).map(([key,value])=>[key,String(value)]));return{put:item.put,get:item.get,putHeaders}}async function uploadImage(file2){let uploader=config2.imagePicker;if(!uploader)throw new Error("图片上传能力未配置");let env=/(^|\.)wapa\.taobao\.com$/i.test(location.hostname)?"pre":"online",response=await callMtopAsync({api:uploader.api,v:uploader.version,method:"POST",env,timeout:6e4,data:{fcId:uploader.fcId,fcGroup:uploader.fcGroup,fcName:uploader.uploadUrlFunction,fcData:JSON.stringify({requestType:"url",mimes:[file2.type||"image/jpeg"],prefix:uploader.prefix,region:uploader.region,uploadNumber:1}),fcConfig:JSON.stringify({timeout:6e4,disasterRecover:!0})}}),target=pickDirectUploadTarget(response);if(!target)throw new Error("获取图片上传地址失败");let uploadUrl=`${target.put}${target.put.includes("?")?"&":"?"}getAvatar=1`,uploadResponse=await fetch(uploadUrl,{method:"PUT",headers:target.putHeaders,body:file2});if(uploadResponse.status!==200)throw new Error(`图片直传失败: HTTP ${uploadResponse.status}`);return target.get}function openImagePicker(callbackCommandFn){let input=document.createElement("input");input.type="file",input.accept="image/*",input.style.display="none";let settled=!1,finish=()=>{settled=!0,input.remove()};input.addEventListener("cancel",finish,{once:!0}),input.addEventListener("change",()=>{let file2=input.files?.[0];if(!file2){finish();return}if(!file2.type.startsWith("image/")){finish(),console.error(TAG,"仅支持选择图片文件");return}uploadImage(file2).then(pic=>{typeof callbackCommandFn=="function"&&callbackCommandFn({pic,uuid:createUploadId(),timeStamp:Date.now()}),log2("图片选择并上传完成:",pic)}).catch(error48=>console.error(TAG,"图片上传失败:",error48)).finally(finish)},{once:!0}),(document.body??document.documentElement).appendChild(input),input.click(),window.addEventListener("focus",()=>{setTimeout(()=>{!settled&&!input.files?.length&&finish()},1e3)},{once:!0})}function showPaymentDialog(api,params,succeed,failed){document.querySelector('[data-mearl-payment-dialog="true"]')?.remove();let overlay=document.createElement("div");overlay.setAttribute("data-mearl-payment-dialog","true"),Object.assign(overlay.style,{position:"fixed",inset:"0",zIndex:"2147483647",display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.5)"});let card=document.createElement("div");Object.assign(card.style,{background:"#fff",borderRadius:"12px",padding:"24px",width:"300px",textAlign:"center",fontFamily:"system-ui, sans-serif"});let title=document.createElement("div");Object.assign(title.style,{fontSize:"17px",fontWeight:"600",marginBottom:"8px"}),title.textContent="支付确认";let desc=document.createElement("div");Object.assign(desc.style,{fontSize:"14px",color:"#666",marginBottom:"20px"}),desc.textContent=`模拟 ${api} 支付,请选择操作`;let btnRow=document.createElement("div");Object.assign(btnRow.style,{display:"flex",gap:"12px"});let btnBase=(text,bg,color,action)=>{let btn=document.createElement("button");return btn.textContent=text,btn.setAttribute("data-mearl-action",action),Object.assign(btn.style,{flex:"1",padding:"10px 0",border:"none",borderRadius:"8px",fontSize:"15px",fontWeight:"500",cursor:"pointer",background:bg,color}),btn},confirmBtn=btnBase("完成支付","#1677ff","#fff","payment-confirm"),cancelBtn=btnBase("取消支付","#f5f5f5","#333","payment-cancel"),cleanup=()=>{overlay.remove()};confirmBtn.addEventListener("click",()=>{cleanup(),log2("用户完成支付",api),succeed(api==="wx.requestPayment"?{errMsg:"requestPayment:ok"}:{ResultStatus:"9000",resultStatus:"9000"})}),cancelBtn.addEventListener("click",()=>{cleanup(),log2("用户取消支付",api),failed(api==="wx.requestPayment"?{errMsg:"requestPayment:fail cancel"}:{ResultStatus:"6001",resultStatus:"6001"})}),btnRow.appendChild(cancelBtn),btnRow.appendChild(confirmBtn),card.appendChild(title),card.appendChild(desc),card.appendChild(btnRow),overlay.appendChild(card),(document.body??document.documentElement).appendChild(overlay)}function showMiniProgramActionDialog(action,params,confirmed,cancelled){document.querySelector('[data-mearl-mini-program-dialog="true"]')?.remove();let overlay=document.createElement("div");overlay.setAttribute("data-mearl-mini-program-dialog","true"),overlay.setAttribute("data-mearl-mini-program-action",action),Object.assign(overlay.style,{position:"fixed",inset:"0",zIndex:"2147483647",display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.5)"});let card=document.createElement("div");Object.assign(card.style,{background:"#fff",borderRadius:"12px",padding:"24px",width:"300px",textAlign:"center",fontFamily:"system-ui, sans-serif"});let title=document.createElement("div");Object.assign(title.style,{fontSize:"17px",fontWeight:"600",marginBottom:"8px"}),title.textContent=action==="navigateMiniProgram"?"打开其他小程序":"订阅消息";let desc=document.createElement("div");Object.assign(desc.style,{fontSize:"14px",color:"#666",marginBottom:"20px"});let targetTitle=params.title?.trim()||"其他";desc.textContent=action==="navigateMiniProgram"?`即将打开“${targetTitle}”小程序,是否继续?`:"模拟微信订阅消息授权,请选择操作";let btnRow=document.createElement("div");Object.assign(btnRow.style,{display:"flex",gap:"12px"});let createButton=(text,background,color,actionName)=>{let button=document.createElement("button");return button.textContent=text,button.setAttribute("data-mearl-action",actionName),Object.assign(button.style,{flex:"1",padding:"10px 0",border:"none",borderRadius:"8px",fontSize:"15px",fontWeight:"500",cursor:"pointer",background,color}),button},confirmButton=createButton(action==="navigateMiniProgram"?"确定":"允许","#1677ff","#fff","mini-program-confirm"),cancelButton=createButton("取消","#f5f5f5","#333","mini-program-cancel"),cleanup=()=>overlay.remove();confirmButton.addEventListener("click",()=>{cleanup();let result=action==="navigateMiniProgram"?{errMsg:"navigateToMiniProgram:ok"}:{result:"SUCCESS",data:{totalCount:1,acceptCount:1}};log2("用户确认小程序原生能力",action,params.appId??params.scene??""),confirmed(result)}),cancelButton.addEventListener("click",()=>{cleanup();let result=action==="navigateMiniProgram"?{errMsg:"navigateToMiniProgram:fail cancel"}:{result:"CLOSE_BY_USER"};log2("用户取消小程序原生能力",action),cancelled(result)}),btnRow.appendChild(cancelButton),btnRow.appendChild(confirmButton),card.appendChild(title),card.appendChild(desc),card.appendChild(btnRow),overlay.appendChild(card),(document.body??document.documentElement).appendChild(overlay)}function handleMessage(msg){if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_MTOP_RESPONSE"){let pending=pendingMtop[msg.requestId];if(!pending)return!0;delete pendingMtop[msg.requestId];let result=msg.result;return result?.success?pending.succ?.(result.response):pending.fail?.(result?.error??"mtop delegate failed"),!0}if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_USER_INFO_RESPONSE"){let requestId=msg.requestId,pending=pendingUserInfo[requestId];if(!pending)return!0;delete pendingUserInfo[requestId],clearTimeout(pending.timer);let result=msg.result,response=result?.success&&result.response&&typeof result.response=="object"?result.response:{};return pending.succ?.({...pending.fallback,...response}),!0}if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_MTOP_STREAM_EVENT"){let requestId=msg.requestId,pending=pendingMtopStreams[requestId];if(!pending)return!0;let eventType=msg.eventType;return emitMtopStreamEvent(pending.sessionId,eventType,msg.data),(eventType==="onFinish"||eventType==="onError")&&delete pendingMtopStreams[requestId],!0}return!1}return{showAppToast,callMtop,callMtopStream,callUserInfo,openImagePicker,showPaymentDialog,showMiniProgramActionDialog,handleMessage}}function installAppProfileBridgeProtocol(config2,environment,host){let{w,SRC,TAG,isTop,log:log2}=environment,{pageTransport,systemBars,requestOpen,requestClose,requestCloseAll,requestContainerData}=host,{showAppToast,callMtop,callMtopStream,callUserInfo,openImagePicker,showPaymentDialog,showMiniProgramActionDialog}=pageTransport,{applyNavigationBarState,applyStatusBarState,syncSimulatedTitleBar}=systemBars,NOT_IMPLEMENTED_PAYLOAD=JSON.stringify({ret:["HY_FAILED"],msg:"not implemented"}),FPT_STORAGE_KEY=`__mearl_app_fpt__:${config2.profile}`,CALENDAR_STORAGE_KEY=`__mearl_app_calendar_events__:${config2.profile}`,unsupportedNativeInputNotified=!1,stopNetworkQualityMonitor=null,simulatedPageHidden=!1,simulatedVisibilityInstalled=!1,hasPendingMiniProgramBackData=!1,pendingMiniProgramBackData,notificationListeners=new Map,megaListenerSeq=0,megaBroadcastListeners=new Map,megaLifeCycleListeners=new Set,megaPageCloseListeners=new Set,megaSystemBackListener=null,megaKVMutationVersion=0,MEGA_KV_TOTAL_SIZE=5*1024*1024,MEGA_KV_STORAGE_KEY=`__mearl_mega_kv__:${config2.profile}`;function readMegaKVStorage(){let storage=new Map;try{let parsed=JSON.parse(localStorage.getItem(MEGA_KV_STORAGE_KEY)??"{}");if(!parsed||typeof parsed!="object"||Array.isArray(parsed))return storage;for(let[bizId,rawEntries]of Object.entries(parsed)){if(!rawEntries||typeof rawEntries!="object"||Array.isArray(rawEntries))continue;let entries=new Map;for(let[key,value]of Object.entries(rawEntries))typeof value=="string"&&entries.set(key,value);storage.set(bizId,entries)}}catch{}return storage}let megaKVStorage=readMegaKVStorage();function megaKVSnapshot(){let snapshot={};for(let[bizId,values]of megaKVStorage)snapshot[bizId]=Object.fromEntries(values);return snapshot}function persistMegaKVStorage(){try{localStorage.setItem(MEGA_KV_STORAGE_KEY,JSON.stringify(megaKVSnapshot()))}catch{}}function replaceMegaKVStorage(value){if(!(!value||typeof value!="object"||Array.isArray(value))){megaKVStorage.clear();for(let[bizId,rawEntries]of Object.entries(value)){if(!rawEntries||typeof rawEntries!="object"||Array.isArray(rawEntries))continue;let entries=new Map;for(let[key,entryValue]of Object.entries(rawEntries))typeof entryValue=="string"&&entries.set(key,entryValue);megaKVStorage.set(bizId,entries)}persistMegaKVStorage()}}function applyMegaKVMutation(payload){let operation=typeof payload.operation=="string"?payload.operation:"",bizId=typeof payload.bizId=="string"?payload.bizId:"",key=typeof payload.key=="string"?payload.key:"";if(bizId){if(operation==="set"&&key&&typeof payload.value=="string"){let entries=megaKVStorage.get(bizId)??new Map;entries.set(key,payload.value),megaKVStorage.set(bizId,entries)}else if(operation==="remove"&&key){let entries=megaKVStorage.get(bizId);entries?.delete(key),entries?.size===0&&megaKVStorage.delete(bizId)}else if(operation==="clear")megaKVStorage.delete(bizId);else return;megaKVMutationVersion+=1,persistMegaKVStorage()}}function emitMegaCallback(callback,value){callback&&setTimeout(()=>callback(value),0)}function megaBroadcastBizId(value){return typeof value=="string"&&value?value:"__MEGA_GLOBAL_MESSAGE__"}function dispatchMegaBroadcast(payload){let bizId=megaBroadcastBizId(payload.bizId),eventName=typeof payload.eventName=="string"?payload.eventName:"";if(eventName)for(let listener of Array.from(megaBroadcastListeners.values()))listener.bizId!==bizId||listener.eventName!==eventName||(listener.once&&megaBroadcastListeners.delete(listener.id),emitMegaCallback(listener.callback,{statusCode:1,type:"onEvent",data:{detail:payload.detail}}),listener.once&&emitMegaCallback(listener.callback,{statusCode:99,type:"finish"}))}let documentPrototype=typeof Document=="function"?Document.prototype:null,nativeHiddenDescriptor=documentPrototype?Object.getOwnPropertyDescriptor(documentPrototype,"hidden"):void 0,nativeVisibilityDescriptor=documentPrototype?Object.getOwnPropertyDescriptor(documentPrototype,"visibilityState"):void 0;function installSimulatedVisibilityState(){if(!simulatedVisibilityInstalled){simulatedVisibilityInstalled=!0;try{Object.defineProperty(document,"hidden",{configurable:!0,get:()=>simulatedPageHidden||!!(nativeHiddenDescriptor?.get?.call(document)??!1)}),Object.defineProperty(document,"visibilityState",{configurable:!0,get:()=>simulatedPageHidden?"hidden":nativeVisibilityDescriptor?.get?.call(document)??"visible"})}catch{}}}function dispatchPageTransitionEvent(type){try{let event=typeof PageTransitionEvent=="function"?new PageTransitionEvent(type,{persisted:!1}):new Event(type);window.dispatchEvent(event)}catch{}}function dispatchActiveEvents(){for(let name of config2.activeEvents)try{document.dispatchEvent(new Event(name))}catch{}}function handlePageVisibility(hidden){if(hidden===simulatedPageHidden)return;installSimulatedVisibilityState(),simulatedPageHidden=hidden;let lifeCycleType=hidden?"onPageDisappear":"onPageAppear";for(let callback of megaLifeCycleListeners)emitMegaCallback(callback,{statusCode:1,type:lifeCycleType,data:{pageId:location.href}});try{document.dispatchEvent(new Event("visibilitychange"))}catch{}if(hidden){try{window.dispatchEvent(new Event("blur"))}catch{}dispatchPageTransitionEvent("pagehide");return}dispatchPageTransitionEvent("pageshow");try{window.dispatchEvent(new Event("focus"))}catch{}dispatchActiveEvents()}function resolveWindowFunction(path19){let parts=path19.split(".").filter(Boolean),owner=w;for(let index=0;index<parts.length-1;index+=1){let next=owner[parts[index]];if(!next||typeof next!="object")return null;owner=next}let fn=owner[parts[parts.length-1]];return typeof fn=="function"?fn.bind(owner):null}function handleNativeBack(){let megaHandled=!1;for(let callback of megaPageCloseListeners)megaHandled=!0,emitMegaCallback(callback,{statusCode:1,type:"onClose",data:{}});if(megaSystemBackListener&&(megaHandled=!0,emitMegaCallback(megaSystemBackListener,{statusCode:1,type:"onSuccess",data:{}})),megaHandled)return!0;let nativeBack=config2.nativeBack;if(!nativeBack)return!1;if(nativeBack.handler){let handler=resolveWindowFunction(nativeBack.handler);if(!handler)return!1;try{return handler(),!0}catch{return!1}}let controlled=!1;if(nativeBack.controlFunction){let control=resolveWindowFunction(nativeBack.controlFunction);if(!control)return!1;try{controlled=control()===!0}catch{return!1}if(!controlled)return!1}if(!nativeBack.event)return controlled;try{let event=new Event(nativeBack.event,{cancelable:!0});return document.dispatchEvent(event),controlled||event.defaultPrevented}catch{return controlled}}function handleAppMessage(message){if(!message||typeof message!="object")return;let payload=message;if(payload.kind==="megaBroadcast"){dispatchMegaBroadcast(payload);return}if(payload.kind==="megaKVStorage"){applyMegaKVMutation(payload);return}if(payload.kind==="legacyBroadcast"&&typeof payload.instanceId=="string"){try{let event=new CustomEvent(`Broadcast.Message.${payload.instanceId}`,{detail:payload.message});Object.defineProperty(event,"param",{configurable:!0,value:payload.message}),document.dispatchEvent(event)}catch{}return}if(payload.kind==="notification"&&typeof payload.name=="string"){let listener=notificationListeners.get(payload.name);listener&&setTimeout(()=>listener(payload.data),0);return}if(!(payload.kind!=="message"||!config2.messageEvent))try{document.dispatchEvent(new CustomEvent(config2.messageEvent,{detail:{data:payload.data}}))}catch{}}function sendAppMessage(message){if(isTop){handleAppMessage(message);return}window.top?.postMessage({source:SRC,type:"appMessageToOpener",message},"*")}function applyRuntimeResponses(responses){let current=config2.actions.responses??{};for(let[api,response]of Object.entries(responses))!response||typeof response!="object"||Array.isArray(response)||(current[api]=response);config2.actions.responses=current}function parseFpt(value){let entries=[],normalized=value.trim();if(!normalized)return entries;let pattern=/([0-9A-Za-z._-]+)\(([0-9A-Za-z._-]+)\)/g,consumed="";for(let match of normalized.matchAll(pattern))consumed+=match[0],entries.push([match[1],match[2]]);return consumed===normalized?entries:[]}function setFptEntry(entries,key,value){entries.delete(key),entries.set(key,value)}function readInitialFptEntries(){let entries=new Map;try{for(let[key,value]of parseFpt(sessionStorage.getItem(FPT_STORAGE_KEY)??""))setFptEntry(entries,key,value)}catch{}try{let currentFpt=new URL(location.href).searchParams.get("fpt")??"";for(let[key,value]of parseFpt(currentFpt))setFptEntry(entries,key,value)}catch{}return entries}let fptEntries=readInitialFptEntries();function serializeFpt(entries){return Array.from(entries,([key,value])=>`${key}(${value})`).join("")}function persistFpt(){try{let value=serializeFpt(fptEntries);value?sessionStorage.setItem(FPT_STORAGE_KEY,value):sessionStorage.removeItem(FPT_STORAGE_KEY)}catch{}}function decorateUrlWithFpt(rawUrl){let targetUrl=mapScheme(rawUrl)??rawUrl;if(fptEntries.size===0)return targetUrl;try{let url2=new URL(targetUrl,location.href);if(url2.protocol!=="http:"&&url2.protocol!=="https:")return targetUrl;let merged=new Map(fptEntries);for(let[key,value]of parseFpt(url2.searchParams.get("fpt")??""))setFptEntry(merged,key,value);return url2.searchParams.set("fpt",serializeFpt(merged)),url2.href}catch{return targetUrl}}function classify(api){let a=config2.actions;return a.open.includes(api)?"open":a.close.includes(api)?"close":a.title.includes(api)?"title":a.navigationBar?.includes(api)?"navigationBar":a.statusBar?.includes(api)?"statusBar":a.systemInfo.includes(api)?"systemInfo":a.mtop.includes(api)?"mtop":a.kvGet?.includes(api)?"kvGet":a.kvSet?.includes(api)?"kvSet":a.kvDelete?.includes(api)?"kvDelete":a.pageContext?.includes(api)?"pageContext":a.responses&&Object.prototype.hasOwnProperty.call(a.responses,api)?"response":a.behaviors&&Object.prototype.hasOwnProperty.call(a.behaviors,api)?a.behaviors[api]:a.noop.includes(api)?"noop":"unknown"}function pickUrl(params){if(!params||typeof params!="object")return null;let p=params,candidates=[p.url,p.data?.url,p.param?.url,p.value?.params?.url];for(let c of candidates)if(typeof c=="string"&&c)return c;return null}function pickCloseData(params){if(params&&typeof params=="object"){let p=params;if("data"in p&&p.data!==void 0)return p.data;if(Object.keys(p).length>0)return p}}function decodeCookieValue2(raw){let value=raw;for(let i=0;i<2;i+=1)try{let decoded=decodeURIComponent(value);if(decoded===value)break;value=decoded}catch{break}return value.replace(/\\u([0-9a-f]{4})/gi,(_match,hex3)=>String.fromCharCode(Number.parseInt(hex3,16)))}function readCookie(name){let prefix=`${name}=`,pair=document.cookie.split(";").map(value=>value.trim()).find(value=>value.startsWith(prefix));return pair?decodeCookieValue2(pair.slice(prefix.length)):""}function readUserCookie(name){let pageUserCookie=w.userCookie;if(!pageUserCookie||typeof pageUserCookie!="object")return"";let value=pageUserCookie[name];return typeof value=="string"?decodeCookieValue2(value):""}function readFirstUserCookie(names){for(let name of names){let value=readCookie(name)||readUserCookie(name);if(value&&value!=="null")return value}return""}let cbSeq=0,callbacks={};function stashCallback(fn){if(typeof fn!="function")return 0;let id=++cbSeq;return callbacks[id]=fn,id}function extractQuery(url2,param){let q=url2.indexOf("?");if(q===-1)return null;for(let pair of url2.slice(q+1).split("&")){let eq=pair.indexOf("=");if(eq>0&&pair.slice(0,eq)===param)return pair.slice(eq+1)}return null}function matchesHostSuffix(hostname3,suffixes){if(!suffixes?.length)return!0;let normalizedHost=hostname3.toLowerCase().replace(/\.$/,"");return suffixes.some(value=>{let suffix=value.toLowerCase().replace(/^\./,"").replace(/\.$/,"");return normalizedHost===suffix||normalizedHost.endsWith(`.${suffix}`)})}function matchesRouteHost(rawUrl,suffixes){if(!suffixes?.length)return!0;try{let parsed=new URL(rawUrl,location.href),hostname3=parsed.protocol==="http:"||parsed.protocol==="https:"?parsed.hostname:location.hostname;return matchesHostSuffix(hostname3,suffixes)}catch{return matchesHostSuffix(location.hostname,suffixes)}}function resolveSchemeValue(raw,depth){if(depth>3)return null;let value=raw;try{value=decodeURIComponent(raw)}catch{}if(value.startsWith("{"))try{let found=pickUrl(JSON.parse(value));if(!found)return null;value=found}catch{return null}if(/^https?:/i.test(value))return value;if(/^[a-z][a-z0-9+.-]*:/i.test(value))return mapScheme(value,depth+1);let nestedUrl=extractQuery(value,"url");return nestedUrl?resolveSchemeValue(nestedUrl,depth+1):null}function mapScheme(url2,depth=0){if(depth>3)return null;let lower=url2.toLowerCase();for(let rule of config2.schemes){if(!matchesRouteHost(url2,rule.hostSuffixes))continue;let normalizedMatch=rule.match.toLowerCase(),matchedUrl=url2;if(!lower.startsWith(normalizedMatch)){if(!normalizedMatch.startsWith("/"))continue;try{let parsed=new URL(url2,location.href);if(matchedUrl=`${parsed.pathname}${parsed.search}${parsed.hash}`,!matchedUrl.toLowerCase().startsWith(normalizedMatch))continue}catch{continue}}if(rule.targetPath){let suffix=matchedUrl.slice(rule.match.length);if(suffix&&!suffix.startsWith("?")&&!suffix.startsWith("#"))continue;try{let source=new URL(matchedUrl),origin=location.origin;if(rule.targetHostPrefix){let hostname3=location.hostname.toLowerCase(),domainSuffix=hostname3==="wapa.taobao.com"||hostname3.endsWith(".wapa.taobao.com")?"wapa.taobao.com":hostname3==="m.taobao.com"||hostname3.endsWith(".m.taobao.com")?"m.taobao.com":"";domainSuffix&&(origin=`https://${rule.targetHostPrefix}.${domainSuffix}`)}let target=new URL(rule.targetPath,`${origin}/`);target.search=source.search,target.hash=source.hash;for(let[key,value]of Object.entries(rule.targetParams??{}))target.searchParams.has(key)||target.searchParams.set(key,value);return target.href}catch{return null}}if(!rule.param)continue;let raw=extractQuery(matchedUrl,rule.param);if(!raw)return null;let resolved=resolveSchemeValue(raw,depth);if(!resolved||!rule.useCurrentOrigin)return resolved;try{let target=new URL(resolved);return`${location.origin}${target.pathname}${target.search}${target.hash}`}catch{return resolved}}return null}function firstRouteParam(params,names){for(let name of names){let value=params.get(name);if(value)return value}return""}function resolvePaymentCallbackUrl(rawUrl,paymentPageUrl,useCurrentOrigin,forwardParams,resultParam){if(!rawUrl)return null;try{let target=new URL(rawUrl,location.href);for(let name of forwardParams){let value=paymentPageUrl.searchParams.get(name);value&&!target.searchParams.get(name)&&target.searchParams.set(name,value)}resultParam&&target.searchParams.set(resultParam.name,JSON.stringify(resultParam.value));let resolved=useCurrentOrigin&&(target.protocol==="http:"||target.protocol==="https:")?`${location.origin}${target.pathname}${target.search}${target.hash}`:target.href;return decorateUrlWithFpt(resolved)}catch{return null}}function openPaymentCallback(rawUrl,paymentPageUrl,useCurrentOrigin,forwardParams,resultParam){let target=resolvePaymentCallbackUrl(rawUrl,paymentPageUrl,useCurrentOrigin,forwardParams,resultParam);target&&requestOpen(target,0,!1)}function handleMiniProgramPaymentRoute(rawUrl){let paymentPageUrl;try{paymentPageUrl=new URL(rawUrl,location.href)}catch{return!1}let normalizedPathname=paymentPageUrl.pathname.replace(/\/+$/,"")||"/",rule=config2.miniProgram?.paymentRoutes?.find(candidate=>(candidate.pathname.replace(/\/+$/,"")||"/")===normalizedPathname&&matchesHostSuffix(paymentPageUrl.hostname,candidate.hostSuffixes));if(!rule)return!1;let successUrl=firstRouteParam(paymentPageUrl.searchParams,rule.successUrlParams),failureUrl=firstRouteParam(paymentPageUrl.searchParams,rule.failureUrlParams),forwardParams=rule.forwardParams??[],useCurrentOrigin=rule.useCurrentOrigin===!0,paymentParams;try{let parsed=JSON.parse(paymentPageUrl.searchParams.get(rule.paymentParamsParam)??"");if(!parsed||typeof parsed!="object"||Array.isArray(parsed))throw new Error;paymentParams=parsed,paymentParams.timeStamp!==void 0&&(paymentParams.timeStamp=String(paymentParams.timeStamp))}catch{return log2("微信支付参数解析失败,执行失败回跳",rawUrl),openPaymentCallback(failureUrl,paymentPageUrl,useCurrentOrigin,forwardParams),!0}return showPaymentDialog("wx.requestPayment",paymentParams,result=>{openPaymentCallback(successUrl,paymentPageUrl,useCurrentOrigin,forwardParams,rule.successResultParam?{name:rule.successResultParam,value:result}:void 0)},()=>{openPaymentCallback(failureUrl,paymentPageUrl,useCurrentOrigin,forwardParams)}),!0}function finishMiniProgramNativeRoute(action,result,storageId){handleResume({data:action==="subscribeMessage"?result:void 0,storageId,callbackId:0,final:!0})}function handleMiniProgramNativeRoute(rawUrl){let nativePageUrl;try{nativePageUrl=new URL(rawUrl,location.href)}catch{return!1}let normalizedPathname=nativePageUrl.pathname.replace(/\/+$/,"")||"/",action=nativePageUrl.searchParams.get("action");if(action!=="navigateMiniProgram"&&action!=="subscribeMessage"||!config2.miniProgram?.nativeRoutes?.find(candidate=>(candidate.pathname.replace(/\/+$/,"")||"/")===normalizedPathname&&candidate.actions.includes(action)&&matchesHostSuffix(nativePageUrl.hostname,candidate.hostSuffixes)))return!1;let params={};nativePageUrl.searchParams.forEach((value,name)=>{params[name]=value});let storageId=nativePageUrl.searchParams.get("__storage_id");return handlePageVisibility(!0),showMiniProgramActionDialog(action,params,result=>finishMiniProgramNativeRoute(action,result,storageId),result=>finishMiniProgramNativeRoute(action,result,storageId)),!0}function handleMiniProgramPostMessage(data){let rules=config2.miniProgram?.messageRules;if(!rules?.length)return!1;let messages=Array.isArray(data)?data:[data],handled=!1;for(let value of messages){if(!value||typeof value!="object"||Array.isArray(value))continue;let message=value;if(typeof message.type!="string")continue;let rule=rules.find(candidate=>candidate.type===message.type&&matchesHostSuffix(location.hostname,candidate.hostSuffixes));rule&&(handled=!0,rule.action==="stageBackData"?(pendingMiniProgramBackData=message.data,hasPendingMiniProgramBackData=!0):rule.action==="closeAll"&&(isTop?requestCloseAll(message.data)||requestClose(message.data):window.top?.postMessage({source:SRC,type:"closeAll",data:message.data},"*")))}return handled}function matchesImagePickerScheme(url2){let lower=url2.toLowerCase();return config2.imagePicker?.schemes.some(scheme=>lower.startsWith(scheme))===!0}function handleMaybeScheme(url2){if(typeof url2!="string"||!url2||!/^[a-z][a-z0-9+.-]*:/i.test(url2)||/^(https?|about|blob|data|javascript):/i.test(url2))return!1;let mapped=mapScheme(url2);return mapped?(log2("scheme 映射为 H5 open:",url2,"→",mapped),requestOpen(decorateUrlWithFpt(mapped),0,!1)):log2("外部 scheme 已拦截(真机表现为唤端):",url2),!0}function handleResume(msg){let{data,storageId,callbackId,final,gotoEvent,silent}=msg;if(gotoEvent&&dispatchGotoEvent(data),callbackId&&callbacks[callbackId]){if(!silent)try{callbacks[callbackId]({backdata:data})}catch(e){console.error(TAG,"callbackCommand 执行失败",e)}final&&delete callbacks[callbackId]}if(data&&typeof data=="object"&&storageId)try{let d={...data};d.__$data=!0,d.__$storageId=String(storageId),localStorage.setItem("XPI_BACK_LISTENER_DATA_STORAGE",JSON.stringify(d))}catch{}simulatedPageHidden?handlePageVisibility(!1):dispatchActiveEvents()}function dispatchGotoEvent(data){if(data!==void 0)try{document.dispatchEvent(new CustomEvent("WV.GotoEvent",{detail:{data}}))}catch{}}function sendUserTrack(params){if(!params||typeof params!="object")return;let p=params,logkey=typeof p.logkey=="string"?p.logkey:"",gmkey=typeof p.gmkey=="string"?p.gmkey:typeof p.event=="string"?p.event:"",gokey=typeof p.gokey=="string"?p.gokey:"";if(!/^\/[0-9A-Za-z._/-]+$/.test(logkey)||!/^[0-9A-Za-z_-]+$/.test(gmkey))return;let pageWindow=w,aplus=pageWindow.goldlog??pageWindow.aplus;if(typeof aplus?.send!="function")return;let configuredHost=aplus.getMetaInfo?.("aplus-rhost-g"),host2=(typeof configuredHost=="string"?configuredHost:"gm.mmstat.com").replace(/^https?:\/\//i,"").replace(/^\/\//,"").split("/")[0];if(!(!host2||!/^[0-9A-Za-z.-]+$/.test(host2)))try{aplus.send(`//${host2}${logkey}`,`gmkey=${encodeURIComponent(gmkey)}&gokey=${gokey}&ts=${Date.now()}`,"GET")}catch{}}function readNetworkState(){let connection=navigator.connection;return navigator.onLine?connection?.type==="wifi"?"wifi":connection?.effectiveType??"unknown":"fail"}function networkTypeNumber(state){return{wifi:2,"slow-2g":3,"2g":3,"3g":4,"4g":5,"5g":6,fail:7}[state]??0}function calendarTimestamp(value){if(typeof value=="number"&&Number.isFinite(value))return value;if(typeof value!="string"||!value.trim())return null;let numeric=Number(value);if(Number.isFinite(numeric)&&numeric>0)return numeric;let parsed=Date.parse(value);return Number.isFinite(parsed)?parsed:null}function calendarEventFromParams(params){let p=params&&typeof params=="object"?params:{},stringValue=(...values)=>values.find(value=>typeof value=="string")??"";return{title:stringValue(p.calendar_title,p.title),startTime:calendarTimestamp(p.calendar_start_ms??p.start_time??p.calendar_start_datetime),endTime:calendarTimestamp(p.calendar_end_ms??p.end_time??p.calendar_end_datetime),url:stringValue(p.calendar_url,p.url),note:stringValue(p.calendar_note,p.note),location:stringValue(p.calendar_location,p.location)}}function readCalendarEvents(){try{let parsed=JSON.parse(localStorage.getItem(CALENDAR_STORAGE_KEY)??"[]");return Array.isArray(parsed)?parsed.filter(event=>event!==null&&typeof event=="object"&&typeof event.title=="string"):[]}catch{return[]}}function writeCalendarEvents(events){try{return localStorage.setItem(CALENDAR_STORAGE_KEY,JSON.stringify(events)),!0}catch{return!1}}function sameCalendarEvent(stored,candidate){return candidate.url?stored.url===candidate.url:!!candidate.title&&stored.title===candidate.title&&(candidate.startTime===null||stored.startTime===candidate.startTime)&&(candidate.endTime===null||stored.endTime===candidate.endTime)}function calendarEventResponse(event){return{title:event.title,start_time:event.startTime,end_time:event.endTime,url:event.url,note:event.note,location:event.location}}function dispatch(api,params,onSuccess,onFailure,callbackCommandFn){let succeed=value=>{onSuccess&&setTimeout(()=>onSuccess(value),0)},failed=reason=>{onFailure&&setTimeout(()=>onFailure(reason),0)},kind=classify(api),silent=config2.actions.silent?.includes(api)===!0;if(silent||log2("桥调用",api,`(${kind})`,params??""),kind==="open"||kind==="navigate"){let p=params&&typeof params=="object"?params:{},navigationData=p.data&&typeof p.data=="object"?p.data:void 0;if(kind==="navigate"&&navigationData?.type==="back"){isTop?requestCloseAll(navigationData.data,!0)||dispatchGotoEvent(navigationData.data):window.top?.postMessage({source:SRC,type:"closeAll",data:navigationData.data,gotoEvent:!0},"*"),succeed({});return}let url2=pickUrl(params);if(!url2){failed("missing url");return}if(matchesImagePickerScheme(url2)){openImagePicker(callbackCommandFn),succeed({});return}if(handleMiniProgramPaymentRoute(url2)){succeed({});return}if(handleMiniProgramNativeRoute(url2)){succeed({});return}let wd=p.useWebdialog===!0||p.useWebdialog==="true"||p.useWebdialog===1||p.useWebdialog==="1";requestOpen(decorateUrlWithFpt(url2),stashCallback(callbackCommandFn),wd,p),succeed({});return}if(kind==="closeAll"){isTop?requestCloseAll(void 0):window.top?.postMessage({source:SRC,type:"closeAll"},"*"),succeed({});return}if(kind==="closeBackData"){let p=params&&typeof params=="object"?params:{};requestClose(Object.prototype.hasOwnProperty.call(p,"backdata")?p.backdata:pickCloseData(p)),succeed({});return}if(kind==="close"){if(api==="navigateBack"&&hasPendingMiniProgramBackData){let data=pendingMiniProgramBackData;pendingMiniProgramBackData=void 0,hasPendingMiniProgramBackData=!1,requestClose(data)}else requestClose(pickCloseData(params));succeed({});return}if(kind==="postMessage"){let p=params&&typeof params=="object"?params:{},data=p.data??p;handleMiniProgramPostMessage(data)||sendAppMessage({kind:"message",data}),succeed({});return}if(kind==="notifySubscribe"){let p=params&&typeof params=="object"?params:{};if(typeof p.name!="string"||!p.name){failed("missing notification name");return}onSuccess&&notificationListeners.set(p.name,onSuccess);return}if(kind==="notifyUnsubscribe"){let p=params&&typeof params=="object"?params:{};typeof p.name=="string"&&notificationListeners.delete(p.name),succeed({});return}if(kind==="notifyPost"){let p=params&&typeof params=="object"?params:{};if(typeof p.name!="string"||!p.name){failed("missing notification name");return}sendAppMessage({kind:"notification",name:p.name,data:p.data}),succeed({});return}if(kind==="sharedFileRead"||kind==="sharedFileWrite"||kind==="sharedDataGet"||kind==="sharedDataSet"){requestContainerData(kind,params&&typeof params=="object"?params:{},succeed,failed);return}if(kind==="legacyBroadcastCreate"||kind==="legacyBroadcastPost"||kind==="legacyBroadcastClose"){requestContainerData(kind,params&&typeof params=="object"?params:{},succeed,failed);return}if(kind==="title"){let title=params&&typeof params=="object"?params.title??params.name:void 0;if(typeof title=="string"&&title){systemBars.markStateExplicit();try{document.title=title,syncSimulatedTitleBar()}catch{}isTop||window.top?.postMessage({source:SRC,type:"title",title},"*")}succeed({});return}if(kind==="navigationBar"){applyNavigationBarState(api,params),succeed({});return}if(kind==="statusBar"){applyStatusBarState(params),succeed({});return}if(kind==="systemInfo"){let model=config2.globals.__DEVICE_MODEL__||"iPhone",info={language:config2.language,model,systemVersion:config2.systemVersion,statusBarHeight:config2.statusBarHeight,platform:config2.platform,brand:config2.platform==="iOS"?"Apple":"Android",client_version:config2.globals.__APP_VERSION__??"",client_type:config2.clientType};succeed(api==="WVNativeDetector.getModelInfo"?{...info,platform:model}:info);return}if(kind==="mtop"){callMtop(params??{},onSuccess,onFailure);return}if(kind==="mtopStream"){callMtopStream(params??{},succeed,failed);return}if(kind==="kvGet"||kind==="kvSet"||kind==="kvDelete"){let p=params&&typeof params=="object"?params:{},key=typeof p.key=="string"?p.key:"";if(!key){failed("missing key");return}try{let storageKey=`__mearl_app_kv__:${key}`;if(kind==="kvGet"){let stored=localStorage.getItem(storageKey);stored!==null?succeed(stored):failed(JSON.stringify({ret:["HY_FAILED"],msg:"key not found"}))}else if(kind==="kvSet"){let value=typeof p.value=="string"?p.value:p.value===void 0?"":JSON.stringify(p.value);localStorage.setItem(storageKey,value),succeed({})}else localStorage.removeItem(storageKey),succeed({})}catch{failed(JSON.stringify({ret:["HY_FAILED"],msg:"kv storage unavailable"}))}return}if(kind==="pageContext"){succeed({pageContext:void 0});return}if(kind==="memoryGet"||kind==="memorySet"||kind==="memoryDelete"){let p=params&&typeof params=="object"?params:{},key=typeof p.key=="string"?p.key:"";if(!key){failed({error_message:"missing key"});return}try{let storageKey=`__mearl_app_memory__:${key}`;if(kind==="memoryGet"){let value=sessionStorage.getItem(storageKey);succeed(value===null?{}:{value})}else if(kind==="memorySet"){let value=typeof p.value=="string"?p.value:p.value===void 0?"":JSON.stringify(p.value);sessionStorage.setItem(storageKey,value),succeed({key,success:!0})}else sessionStorage.removeItem(storageKey),succeed({key,success:!0})}catch{failed({error_message:"memory cache unavailable"})}return}if(kind==="availabilityMap"){let p=params&&typeof params=="object"?params:{},channels=Array.isArray(p.data)?p.data.filter(value=>typeof value=="string"):[];succeed({res:"success",data:Object.fromEntries(channels.map(channel=>[channel,!1]))});return}if(kind==="userInfo"){let userId=readFirstUserCookie(["unb"]),userName=readFirstUserCookie(["_w_tb_nick","_nk_","snk","tracknick"]);callUserInfo({...userId&&{userId},...userName&&{userName}},succeed);return}if(kind==="networkInfo"){let state=readNetworkState();if(api==="WVNetwork.getNetworkType"){succeed({type:{wifi:"WIFI","slow-2g":"2G","2g":"2G","3g":"3G","4g":"4G"}[state]??"UNKNOWN"});return}if(config2.profile==="alipay"||config2.profile==="koubei"){succeed({networkAvailable:state!=="fail",networkType:{wifi:"WIFI","slow-2g":"2G","2g":"2G","3g":"3G","4g":"4G",fail:"NOTREACHABLE"}[state]??"UNKNOWN"});return}let type=networkTypeNumber(state);succeed({type,state:state==="slow-2g"?"2g":state});return}if(kind==="networkQualityMonitor"){let p=params&&typeof params=="object"?params:{},action=typeof p.action=="string"?p.action:"";if(action==="add_notify_network_quality"){if(!stopNetworkQualityMonitor){let notify=()=>{try{document.dispatchEvent(new CustomEvent("WV.NETWORK_TYPE_CHANGED",{detail:{new_network_type:networkTypeNumber(readNetworkState())}}))}catch{}},connection=navigator.connection;window.addEventListener("online",notify),window.addEventListener("offline",notify),connection?.addEventListener?.("change",notify),stopNetworkQualityMonitor=()=>{window.removeEventListener("online",notify),window.removeEventListener("offline",notify),connection?.removeEventListener?.("change",notify)}}succeed({});return}if(action==="remove_notify_network_quality"){stopNetworkQualityMonitor?.(),stopNetworkQualityMonitor=null,succeed({});return}failed({error_message:"unsupported network quality monitor action"});return}if(kind==="beaconRequest"){let url2=pickUrl(params);if(!url2){failed({error_message:"missing url"});return}try{let resolved=new URL(url2,location.href);if(resolved.protocol!=="http:"&&resolved.protocol!=="https:"){failed({error_message:"unsupported request protocol"});return}let image=new Image;image.referrerPolicy="no-referrer-when-downgrade",image.src=resolved.href,succeed({})}catch{failed({error_message:"invalid url"})}return}if(kind==="calendar"){let p=params&&typeof params=="object"?params:{},events=readCalendarEvents();if(api==="store_calendar_event"){let event=calendarEventFromParams(p);if(!event.title||event.startTime===null){failed({error_message:"calendar title and start time are required"});return}let next=events.filter(stored=>!sameCalendarEvent(stored,event));if(next.push(event),!writeCalendarEvents(next)){failed({error_message:"calendar storage unavailable"});return}succeed({success:!0});return}if(api==="remove_calendar_event"){let candidate=calendarEventFromParams(p),next=events.filter(stored=>!sameCalendarEvent(stored,candidate));if(!writeCalendarEvents(next)){failed({error_message:"calendar storage unavailable"});return}succeed({success:!0,removed:events.length-next.length});return}if(api==="check_batch_calendar"){let batch=Array.isArray(p.batch)?p.batch:[];succeed({batch:batch.map(item=>{let candidate=calendarEventFromParams(item);return{...item&&typeof item=="object"?item:{},success:events.some(stored=>sameCalendarEvent(stored,candidate))}})});return}let urls=Array.isArray(p.urls)?p.urls.filter(value=>typeof value=="string"):typeof p.url=="string"?[p.url]:[],titles=Array.isArray(p.calendar_titles)?p.calendar_titles.filter(value=>typeof value=="string"):typeof p.calendar_title=="string"?[p.calendar_title]:[],matched=events.filter(event=>(urls.length===0||urls.includes(event.url))&&(titles.length===0||titles.includes(event.title)));succeed({events:matched.map(calendarEventResponse)});return}if(kind==="geolocation"){let p=params&&typeof params=="object"?params:{},windvane=api==="WVLocation.getLocation",wechat=api==="getLocation"&&config2.bridges.some(bridge=>bridge.style==="wechat"),failLocation=(errorCode,errorMsg)=>{failed({errorCode,errorMsg,...windvane&&{ret:["HY_FAILED"],errMsg:errorCode===1?"PERMISSION_DENIED":"POSITION_UNAVAILABLE",message:errorMsg},...wechat&&{errMsg:`getLocation:fail ${errorMsg}`}})};if(wechat&&p.type&&p.type!=="wgs84"){failLocation(2,`unsupported coordinate type: ${String(p.type)}`);return}if(!navigator.geolocation){failLocation(2,"geolocation unavailable");return}let locate=()=>navigator.geolocation.getCurrentPosition(position=>{let{latitude,longitude,accuracy,altitude,altitudeAccuracy,heading,speed}=position.coords,coords={latitude,longitude,accuracy,altitude,altitudeAccuracy,heading,speed};if(api==="lbs"){let provider=config2.geolocation;if(!provider){failLocation(2,"reverse geocoding unavailable");return}callMtop({api:provider.reverseGeocodeApi,v:provider.version,data:{latitude,longitude,includeGJ:1},timeout:5e3},value=>{let response=value??{},address=response.data??{};if(!Array.isArray(response.ret)||!response.ret.some(ret=>typeof ret=="string"&&ret.startsWith("SUCCESS::"))||typeof address.cityName!="string"||!address.cityName.trim()||typeof address.cityCode!="string"||!address.cityCode.trim()){failLocation(2,"reverse geocoding returned no city");return}succeed({...coords,timestamp:position.timestamp,country:address.country,province:address.province,district:address.district,city:address.cityName,cityName:address.cityName,cityCode:address.cityCode,divisionId:address.divisionId,iataCode:address.iataCode,address:address.detail})},()=>failLocation(2,"reverse geocoding failed"));return}succeed(windvane?{ret:["HY_SUCCESS"],coords,timestamp:position.timestamp}:{...coords,timestamp:position.timestamp,...wechat&&{errMsg:"getLocation:ok"}})},error48=>failLocation(error48.code,error48.message),{enableHighAccuracy:p.enableHighAccuracy===!0||p.enableHighAcuracy===!0,timeout:1e4,maximumAge:p.useCache===!1?0:3e5});navigator.permissions?.query?navigator.permissions.query({name:"geolocation"}).then(status=>{status.state==="granted"?locate():failLocation(1,"location permission not granted")}).catch(locate):locate();return}if(kind==="permission"){let p=params&&typeof params=="object"?params:{},action=typeof p.action=="string"?p.action:"",permission=typeof p.permission=="string"?p.permission:"",permissionFailed=message=>failed({error_code:-1,error_message:message});if(permission==="album"||permission==="MODIFY_AUDIO_SETTINGS"){action==="check"||action==="request"?succeed({}):permissionFailed("unsupported permission action");return}let browserPermission=permission==="mic"?"microphone":permission==="camera"?"camera":permission==="lbs"?"geolocation":"";if(!browserPermission){permissionFailed("unsupported permission");return}if(action==="check"&&navigator.permissions?.query){navigator.permissions.query({name:browserPermission}).then(status=>{status.state==="granted"?succeed({}):permissionFailed("permission not granted")}).catch(()=>permissionFailed("permission check failed"));return}if(action==="request"&&(permission==="mic"||permission==="camera")){if(!navigator.mediaDevices?.getUserMedia){permissionFailed("media permission unavailable");return}navigator.mediaDevices.getUserMedia({audio:permission==="mic",video:permission==="camera"}).then(stream=>{for(let track of stream.getTracks())track.stop();succeed({})}).catch(()=>permissionFailed("permission denied"));return}if(action==="request"&&permission==="lbs"&&navigator.geolocation){navigator.geolocation.getCurrentPosition(()=>succeed({}),()=>permissionFailed("permission denied"),{timeout:1e4});return}permissionFailed("unsupported permission action");return}if(kind==="prefetch"){let p=params&&typeof params=="object"?params:{},url2=typeof p.url=="string"?p.url:"";if(!url2){failed({code:-1,errorMsg:"url is empty"});return}let resolvedUrl;try{resolvedUrl=new URL(url2,location.href).href}catch{failed({code:-1,errorMsg:"invalid url"});return}if(!Array.from(document.querySelectorAll('link[rel="prefetch"]')).some(link=>link.href===resolvedUrl)){let link=document.createElement("link");link.rel="prefetch",link.href=url2,(document.head??document.documentElement).appendChild(link)}succeed({});return}if(kind==="fptTrack"){let p=params&&typeof params=="object"?params:{},action=typeof p.action=="string"?p.action:"",actionParams=p.params&&typeof p.params=="object"?p.params:{},key=typeof actionParams.key=="string"?actionParams.key:"";if(action==="setFpt"){let value=typeof actionParams.value=="string"?actionParams.value:"";if(!key||!value||!/^[0-9A-Za-z._-]+$/.test(key)||!/^[0-9A-Za-z._-]+$/.test(value)||`${key}(${value})`.length>100){failed({error_message:"invalid fpt key or value"});return}setFptEntry(fptEntries,key,value),persistFpt()}else action==="deleteFpt"&&key&&(fptEntries.delete(key),persistFpt());succeed({});return}if(kind==="previewFile"){let p=params&&typeof params=="object"?params:{},fileUrl=typeof p.file_url=="string"?p.file_url:"",remoteUrl=typeof p.file_remote_url=="string"?p.file_remote_url:"",url2=(fileUrl.startsWith("http")?fileUrl:remoteUrl)||fileUrl||remoteUrl;url2?(requestOpen(url2,0,!1),succeed({})):failed({code:-1,errorMsg:"file_url is empty"});return}if(kind==="toast"){let error48=showAppToast(params);error48?failed({error_message:error48}):succeed({});return}if(kind==="unsupportedNativeInput"){let containerType="";try{containerType=new URL(location.href).searchParams.get("containerType")??""}catch{}!unsupportedNativeInputNotified&&(containerType==="h5_dx"||containerType==="flutter_h5")&&(unsupportedNativeInputNotified=!0,showAppToast({message:"当前页面使用原生输入框,请移除 URL 中的 containerType 参数以正常操作",milliseconds:4e3})),succeed({});return}if(kind==="payment"){log2("桥调用支付,等待用户确认",api,params),showPaymentDialog(api,params,succeed,failed);return}if(kind==="userTrack"){sendUserTrack(params),succeed({});return}if(kind==="response"){succeed(config2.actions.responses?.[api]);return}if(kind==="noop"){succeed({});return}silent||log2("未覆盖桥方法,回调 failure(页面库将走 H5 兜底):",api),failed(NOT_IMPLEMENTED_PAYLOAD)}let MEGA_SUPPORTED_APIS={stdPop:["showWeex2","showWeex","showH5","changeSize","close"],broadcast:["addEventListener","dispatchEvent","removeEventListener"],kvStorage:["setItem","getItem","removeItem","getAllKeys","clear","getCurrentInfo","getCurrentInfoAndKeys"],LifeCycle:["addPageLifeCycleListener","removePageLifeCycleListener"],Container:["interceptPageClose","disableInterceptPageClose"],navigator:["openURL","close","replace","setSystemBackBlockListener","removeSystemBackBlockListener"],NavBar:["setTitle"],Router:["popPage"]};function isMegaApiSupported(ability,api){return typeof ability=="string"&&typeof api=="string"&&MEGA_SUPPORTED_APIS[ability]?.includes(api)===!0}function megaParams(value){return value&&typeof value=="object"&&!Array.isArray(value)?value:{}}function megaError(callback,statusCode,message){emitMegaCallback(callback,{statusCode,type:"result",data:{errorMessage:typeof message=="string"?message:String(message??"")}})}function cloneMegaDetail(value){if(value===void 0)return{success:!0,value:void 0};try{return{success:!0,value:JSON.parse(JSON.stringify(value))}}catch{return{success:!1}}}function megaSuccess(data={}){return{statusCode:0,type:"result",data}}function megaFailure(message){return{statusCode:500,type:"result",data:{errorMessage:message}}}function megaKVParams(params){return{bizId:typeof params.bizID=="string"?params.bizID:typeof params.bizId=="string"?params.bizId:"",key:typeof params.key=="string"?params.key:"",value:typeof params.value=="string"?params.value:null}}function megaStringByteLength(value){try{return typeof TextEncoder=="function"?new TextEncoder().encode(value).length:value.length}catch{return value.length}}function megaKVUsedSize(entries){let size=0;for(let value of entries.values())size+=megaStringByteLength(value);return size}function reportMegaKVMutation(operation,bizId,key="",value,onSuccess,onFailure){requestContainerData("megaKVMutation",{operation,bizId,key,...value===void 0?{}:{value}},()=>onSuccess?.(),reason=>{log2("KVStorage 容器同步失败:",reason),onFailure?.(reason)})}function completeMegaKVMutation(operation,bizId,key,value,synchronous,callback){let result=megaSuccess();return reportMegaKVMutation(operation,bizId,key,value,synchronous?void 0:()=>emitMegaCallback(callback,result),synchronous?void 0:reason=>emitMegaCallback(callback,megaFailure(String(reason??"container sync failed")))),synchronous?result:null}function executeMegaKVStorage(api,params,synchronous,callback){let{bizId,key,value}=megaKVParams(params);if(!bizId)return megaFailure("missing bizID");let entries=megaKVStorage.get(bizId)??new Map;if(api==="setItem"){if(!key)return megaFailure("missing key");if(value===null||value==="")return megaFailure("missing value");let previousSize=megaStringByteLength(entries.get(key)??"");return megaKVUsedSize(entries)-previousSize+megaStringByteLength(value)>MEGA_KV_TOTAL_SIZE?megaFailure("KVStorage quota exceeded"):(entries.set(key,value),megaKVStorage.set(bizId,entries),megaKVMutationVersion+=1,persistMegaKVStorage(),completeMegaKVMutation("set",bizId,key,value,synchronous,callback))}if(api==="getItem"){if(!key)return megaFailure("missing key");let result=entries.get(key)??"";return megaSuccess(synchronous?{result}:result)}if(api==="removeItem")return key?(entries.delete(key),entries.size===0&&megaKVStorage.delete(bizId),megaKVMutationVersion+=1,persistMegaKVStorage(),completeMegaKVMutation("remove",bizId,key,void 0,synchronous,callback)):megaFailure("missing key");if(api==="getAllKeys"){let result=Array.from(entries.keys());return megaSuccess(synchronous?{result}:result)}if(api==="clear")return megaKVStorage.delete(bizId),megaKVMutationVersion+=1,persistMegaKVStorage(),completeMegaKVMutation("clear",bizId,"",void 0,synchronous,callback);if(api==="getCurrentInfo"||api==="getCurrentInfoAndKeys"){let data={totalSize:MEGA_KV_TOTAL_SIZE,freeSize:Math.max(MEGA_KV_TOTAL_SIZE-megaKVUsedSize(entries),0)};return api==="getCurrentInfoAndKeys"&&(data.keys=Array.from(entries.keys())),megaSuccess(data)}return{statusCode:405,type:"result",data:{}}}function handleMegaLifeCycle(api,callback){if(api==="addPageLifeCycleListener"){callback&&megaLifeCycleListeners.add(callback),emitMegaCallback(callback,megaSuccess());return}if(api==="removePageLifeCycleListener"){let listeners=Array.from(megaLifeCycleListeners);megaLifeCycleListeners.clear(),emitMegaCallback(callback,megaSuccess());for(let listener of listeners)emitMegaCallback(listener,{statusCode:99,type:"finish",data:{}});return}megaError(callback,405,`LifeCycle.${api} is not supported`)}function handleMegaContainer(api,callback){if(api==="interceptPageClose"){callback&&megaPageCloseListeners.add(callback),emitMegaCallback(callback,megaSuccess());return}if(api==="disableInterceptPageClose"){let listeners=Array.from(megaPageCloseListeners);megaPageCloseListeners.clear(),emitMegaCallback(callback,megaSuccess());for(let listener of listeners)emitMegaCallback(listener,{statusCode:99,type:"finish",data:{}});return}megaError(callback,405,`Container.${api} is not supported`)}function megaNavigationUrl(params){let rawUrl=pickUrl(params);if(!rawUrl)return null;if(!params.extQuery||typeof params.extQuery!="object"||Array.isArray(params.extQuery))return rawUrl;try{let target=new URL(rawUrl,location.href);for(let[key,value]of Object.entries(params.extQuery))value!=null&&target.searchParams.set(key,String(value));return target.href}catch{return rawUrl}}function handleMegaNavigator(api,params,callback){if(api==="openURL"||api==="replace"){let url2=megaNavigationUrl(params);if(!url2){megaError(callback,500,"missing url");return}let callbackId=api==="openURL"&&callback?stashCallback(value=>{let backdata=value&&typeof value=="object"?value.backdata:void 0;emitMegaCallback(callback,{statusCode:1,type:"onResult",data:{result:!0,...backdata===void 0?{}:{data:backdata}}}),emitMegaCallback(callback,{statusCode:99,type:"finish",data:{}})}):0;requestOpen(url2,callbackId,!1,{...params,...api==="replace"?{__mearlReplace:!0}:{}}),emitMegaCallback(callback,megaSuccess());return}if(api==="close"){emitMegaCallback(callback,megaSuccess()),requestClose(void 0);return}if(api==="setSystemBackBlockListener"){megaSystemBackListener&&megaSystemBackListener!==callback&&emitMegaCallback(megaSystemBackListener,{statusCode:99,type:"finish",data:{}}),megaSystemBackListener=callback??null,emitMegaCallback(callback,megaSuccess());return}if(api==="removeSystemBackBlockListener"){let listener=megaSystemBackListener;megaSystemBackListener=null,emitMegaCallback(callback,megaSuccess()),listener&&emitMegaCallback(listener,{statusCode:99,type:"finish",data:{}});return}megaError(callback,405,`navigator.${api} is not supported`)}function handleMegaNavBar(api,params,callback){if(api!=="setTitle"){megaError(callback,405,`NavBar.${api} is not supported`);return}applyNavigationBarState(api,params),emitMegaCallback(callback,megaSuccess())}function handleMegaRouter(api,callback){if(api!=="popPage"){megaError(callback,405,`Router.${api} is not supported`);return}emitMegaCallback(callback,megaSuccess()),requestClose(void 0)}function handleMegaStdPop(api,params,callback){if(api==="showH5"||api==="showWeex2"||api==="showWeex"){let url2=pickUrl(params),popId=typeof params.popId=="string"?params.popId.trim():"";if(!url2||!popId){megaError(callback,500,url2?"missing popId":"missing url");return}let callbackId=stashCallback(value=>{let result=value&&typeof value=="object"&&"backdata"in value?value.backdata:void 0;emitMegaCallback(callback,{statusCode:1,type:"onClose",data:result}),emitMegaCallback(callback,{statusCode:99,type:"finish"})});requestOpen(url2,callbackId,!0,{...params,__mearlMegaPopId:popId}),emitMegaCallback(callback,{statusCode:0,type:"result",data:{}});return}if(api==="close"){let popId=typeof params.popId=="string"?params.popId.trim():"";if(!popId){megaError(callback,500,"missing popId");return}let cloned=cloneMegaDetail(params.result);if(!cloned.success){megaError(callback,500,"result is not serializable");return}requestContainerData("megaPopClose",{popId,result:cloned.value},()=>emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),reason=>megaError(callback,500,reason));return}if(api==="changeSize"){let popId=typeof params.popId=="string"?params.popId.trim():"";if(!popId){megaError(callback,500,"missing popId");return}requestContainerData("megaPopResize",{...params,popId},()=>emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),reason=>megaError(callback,500,reason));return}megaError(callback,405,`stdPop.${api} is not supported`)}function handleMegaBroadcast(api,params,callback){let bizId=megaBroadcastBizId(params.bizId),eventName=typeof params.eventName=="string"?params.eventName.trim():"";if(!eventName){megaError(callback,500,"missing eventName");return}if(api==="addEventListener"){if(!callback)return;let id=`mearl-mega-listener-${++megaListenerSeq}`;megaBroadcastListeners.set(id,{id,bizId,eventName,once:params.once===!0,callback}),emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),emitMegaCallback(callback,{statusCode:1,type:"onAdd",data:{listenerId:id}});return}if(api==="dispatchEvent"){let detail=cloneMegaDetail(params.detail);if(!detail.success){megaError(callback,500,"detail is not serializable");return}requestContainerData("megaBroadcast",{message:{kind:"megaBroadcast",bizId,eventName,detail:detail.value}},()=>emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),reason=>megaError(callback,500,reason));return}if(api==="removeEventListener"){let listenerId=typeof params.listenerId=="string"?params.listenerId:"",removed=[];for(let listener of Array.from(megaBroadcastListeners.values()))listener.bizId!==bizId||listener.eventName!==eventName||listenerId&&listener.id!==listenerId||(megaBroadcastListeners.delete(listener.id),removed.push(listener));emitMegaCallback(callback,{statusCode:0,type:"result",data:{}});for(let listener of removed)emitMegaCallback(listener.callback,{statusCode:99,type:"finish"});return}megaError(callback,405,`broadcast.${api} is not supported`)}function makeMegaBridge(){return{asyncCall:(ability,api,rawParams,callback)=>{let params=megaParams(rawParams);if(ability==="ability"&&api==="available"){emitMegaCallback(callback,{statusCode:0,type:isMegaApiSupported(params.ability,params.api)?"YES":"NO",data:{}});return}if(ability==="ability"&&api==="batchFinishTrace"){emitMegaCallback(callback,{statusCode:0,type:"result",data:{}});return}if(!isMegaApiSupported(ability,api)){megaError(callback,405,`${ability}.${api} is not supported`);return}if(ability==="stdPop")handleMegaStdPop(api,params,callback);else if(ability==="broadcast")handleMegaBroadcast(api,params,callback);else if(ability==="kvStorage"){let result=executeMegaKVStorage(api,params,!1,callback);result&&emitMegaCallback(callback,result)}else ability==="LifeCycle"?handleMegaLifeCycle(api,callback):ability==="Container"?handleMegaContainer(api,callback):ability==="navigator"?handleMegaNavigator(api,params,callback):ability==="NavBar"?handleMegaNavBar(api,params,callback):handleMegaRouter(api,callback)},syncCall:(ability,api,rawParams)=>{let params=megaParams(rawParams);return ability==="ability"&&api==="available"?{statusCode:0,type:isMegaApiSupported(params.ability,params.api)?"YES":"NO",data:{}}:ability==="kvStorage"&&isMegaApiSupported(ability,api)?executeMegaKVStorage(api,params,!0)??megaFailure("container sync pending"):{statusCode:405,type:"result",data:{}}}}}function makeBridge(style){if(style==="mega")return makeMegaBridge();if(style==="easybikeNative"){let callNative=rawPayload=>{let payload;try{payload=typeof rawPayload=="string"?JSON.parse(rawPayload):rawPayload??{}}catch{return}let classMap=typeof payload.classMap=="string"?payload.classMap:"",method=typeof payload.method=="string"?payload.method:"",callbackId=typeof payload.callbackId=="string"||typeof payload.callbackId=="number"?String(payload.callbackId):"",params;try{params=typeof payload.params=="string"?payload.params?JSON.parse(payload.params):{}:payload.params??{}}catch{params={}}let complete=(code,data,msg="")=>{let callback=resolveWindowFunction("callBack");callbackId&&callback&&callback({callbackId,code,data,msg})};dispatch(`${classMap}.${method}`,params,value=>complete(0,value),error48=>complete(1,void 0,typeof error48=="string"?error48:String(error48??"")))};return{postMessage:callNative,callNative}}if(style==="windvane"){let call=(api,params,success2,failure)=>{let onSuccess=typeof success2=="function"?success2:void 0,onFailure=typeof failure=="function"?failure:void 0;if(onSuccess||onFailure){dispatch(api,params,onSuccess,onFailure);return}return new Promise((resolve2,reject)=>dispatch(api,params,resolve2,reject))};return{isAvailable:!0,version:"8.7.0",call2:call,call:(cls,method,params,succ,fail2)=>call(`${cls}.${method}`,params,succ,fail2)}}if(style==="fliggy"||style==="alipay"||style==="callback"){let bridge={call:(api,params,succ,fail2)=>{typeof params=="function"&&(fail2=succ,succ=params,params=void 0);let p=params&&typeof params=="object"?params:{},successFn=succ??(typeof p.success_callback=="function"?p.success_callback:void 0)??(typeof p.successCallback=="function"?p.successCallback:void 0),failureFn=fail2??(typeof p.fail_callback=="function"?p.fail_callback:void 0)??(typeof p.failure_callback=="function"?p.failure_callback:void 0)??(typeof p.failCallback=="function"?p.failCallback:void 0)??(typeof p.failureCallback=="function"?p.failureCallback:void 0);dispatch(api,p,res=>successFn?.(res),err=>{failureFn?failureFn(err):successFn?.({error:err})},p.callbackCommand??p.callback_command)},pushBack:(prefixOrApi,apiOrParams,paramsOrSucc,succ)=>{let api=prefixOrApi,params=apiOrParams,success2=paramsOrSucc;typeof apiOrParams=="string"&&(api=apiOrParams,params=paramsOrSucc,success2=succ);let p=params??{},successFn=(typeof success2=="function"?success2:void 0)??(typeof p.successCallback=="function"?p.successCallback:void 0);return dispatch(api,p,res=>successFn?.(res),void 0,p.callbackCommand??p.callback_command),bridge},sendUriScheme:uri=>(handleMaybeScheme(uri),bridge)};if(style==="fliggy"){let normalizedAppName=(config2.globals.__APP_NAME__??"").toUpperCase(),os11=config2.clientType==="iphone"?"ios":"android",isAliApp=name=>normalizedAppName===name.toUpperCase();Object.assign(bridge,{version:"1.0.21",device:{os:os11,OS:config2.platform,type:os11,version:config2.systemVersion,model:config2.globals.__DEVICE_MODEL__??""},platform:os11,isAliApp,isTmall:isAliApp("TM"),isTaobao:isAliApp("TB"),isAlipay:isAliApp("AP"),isAlitrip:isAliApp("LX"),isKoubei:isAliApp("KB"),isElm:isAliApp("ELMC"),isGaode:isAliApp("amap"),isUC:/UCBrowser/i.test(config2.userAgent),isWeibo:/Weibo/i.test(config2.userAgent),isWeixin:/MicroMessenger/i.test(config2.userAgent),isWindVane:config2.bridges.some(item=>item.style==="windvane"),isAlipayClient:/AlipayClient/i.test(config2.userAgent)})}return bridge}if(style==="btrip")return{call:(api,params)=>dispatch(api,params??{},void 0,void 0)};if(style==="invoke")return{invoke:(api,params)=>{let p=params??{};dispatch(api,p,p.success,p.fail)}};if(style==="callHandler")return{callHandler:(api,params)=>dispatch(api,params??{},void 0,void 0)};if(style==="amap")return{ready:cb=>cb?.(),send:(msg,cb)=>{let m=msg??{};dispatch(typeof m.action=="string"?m.action:"",m,res=>cb?.(res),err=>cb?.({error:err}))}};if(style==="didi")return{openPage:params=>dispatch("openPage",params??{},void 0,void 0),closePage:params=>dispatch("closePage",params??{},void 0,void 0)};if(style==="wechat"||style==="wechatMiniProgram"){let invoke2=(api,params)=>{let p=params&&typeof params=="object"?params:{};dispatch(api,p,value=>{p.success?.(value),p.complete?.(value)},error48=>{p.fail?.(error48),p.complete?.(error48)})};return style==="wechat"?{ready:callback=>{callback&&setTimeout(callback,0)},getLocation:params=>invoke2("getLocation",params)}:{navigateTo:params=>invoke2("navigateTo",params),redirectTo:params=>invoke2("redirectTo",params),switchTab:params=>invoke2("switchTab",params),reLaunch:params=>invoke2("reLaunch",params),navigateBack:params=>invoke2("navigateBack",params),postMessage:params=>invoke2("postMessage",params),getEnv:callback=>{callback&&setTimeout(()=>callback({miniprogram:!0}),0)}}}return{}}function setGlobal(path19,value){let parts=path19.split("."),obj=w;for(let i=0;i<parts.length-1;i++){let cur=obj[parts[i]];(!cur||typeof cur!="object")&&(obj[parts[i]]={}),obj=obj[parts[i]]}obj[parts[parts.length-1]]=value}function setPersistentGlobal(path19,value){let parts=path19.split(".").filter(Boolean);if(parts.length<2){setGlobal(path19,value);return}let[rootKey,...nestedParts]=parts,isObjectLike=candidate=>typeof candidate=="object"&&candidate!==null||typeof candidate=="function",attachBridge=candidate=>{let root=isObjectLike(candidate)?candidate:{},obj=root;for(let index=0;index<nestedParts.length-1;index+=1){let key=nestedParts[index],child=obj[key];if(!isObjectLike(child))try{obj[key]={}}catch{return root}obj=obj[key]}let leaf=nestedParts[nestedParts.length-1];try{Object.defineProperty(obj,leaf,{configurable:!1,enumerable:!0,get:()=>value,set:()=>{}})}catch{try{obj[leaf]=value}catch{}}return root},currentRoot=attachBridge(w[rootKey]);try{Object.defineProperty(w,rootKey,{configurable:!1,enumerable:!0,get:()=>currentRoot,set:next=>{currentRoot=attachBridge(next)}})}catch{w[rootKey]=currentRoot}}if(config2.bridges.some(spec=>spec.style==="mega")){let hydrationVersion=megaKVMutationVersion;requestContainerData("megaKVSnapshot",{},value=>{let entries=value&&typeof value=="object"?value.entries:void 0;megaKVMutationVersion===hydrationVersion&&replaceMegaKVStorage(entries)},()=>{})}for(let spec of config2.bridges)try{let bridge=makeBridge(spec.style);spec.persistent?setPersistentGlobal(spec.global,bridge):setGlobal(spec.global,bridge)}catch(e){console.error(TAG,"桥安装失败:",spec.global,e)}return{mapScheme,handleMaybeScheme,handleAppMessage,handleNativeBack,handleResume,handlePageVisibility,applyRuntimeResponses}}function installAppProfileContainerStack(config2,environment,links){let{SRC,TAG,simulateSystemBars,ROOT_FRAME_NAME,LAYER_FRAME_NAME,isTop,isRootFrame,isLayerFrame,isContainerFrame,usesRootContainer,log:log2}=environment,{pageTransport}=links,initialLayerTitleBarState=url2=>links.getSystemBars().initialLayerTitleBarState(url2),resolvedTitleBarState=layer=>links.getSystemBars().resolvedTitleBarState(layer),parseReportedTitleBarState=value=>links.getSystemBars().parseReportedTitleBarState(value),createSimulatedNavigationBarView=(placement,onBack)=>links.getSystemBars().createNavigationBarView(placement,onBack),destroySimulatedNavigationBarView=view=>links.getSystemBars().destroyNavigationBarView(view),syncLayerViewport=(layer,state)=>links.getSystemBars().syncLayerViewport(layer,state),syncActiveSystemBars=()=>links.getSystemBars().syncActiveSystemBars(),syncSimulatedTitleBar=()=>links.getSystemBars().syncSimulatedTitleBar(),rootContainerActive=!1,rootFrame=null,rootBusinessUrl=location.href,webViewEnvironmentRequestSeq=0,simulatedPageHidden=!1,runtimeResponses=null;function syncSimulatorStateToWindow(target){target&&(runtimeResponses&&target.postMessage({source:SRC,type:"runtimeResponses",profile:config2.profile,responses:runtimeResponses},"*"),simulatedPageHidden&&target.postMessage({source:SRC,type:"simulatorVisibility",hidden:!0},"*"))}function startPreparedWebViewNavigation(frame,target,canCommit,registerCleanup){let insets=config2.safeAreaInsets??{top:config2.statusBarHeight,right:0,bottom:0,left:0};if(!usesRootContainer||!Object.values(insets).some(value=>value>0)){canCommit()&&(frame.src=target);return}let requestId=++webViewEnvironmentRequestSeq,settled=!1,fallbackTimer=0,cleanup=()=>{settled||(settled=!0,clearTimeout(fallbackTimer),window.removeEventListener("message",handleResponse),registerCleanup?.(null))},commitNavigation=fallbackReason=>{cleanup(),fallbackReason&&console.warn(TAG,"WebView 环境准备未完成,降级提交导航",{target,requestId,reason:fallbackReason}),canCommit()&&(frame.src=target)},handleResponse=event=>{if(event.source!==window||event.data?.source!=="mearl-content"||event.data?.type!=="APP_BRIDGE_PREPARE_WEBVIEW_RESPONSE"||event.data?.requestId!==requestId)return;let result=event.data.result;result?.success===!0?commitNavigation():commitNavigation(String(result?.error??"unknown preparation failure"))};registerCleanup?.(cleanup),window.addEventListener("message",handleResponse),fallbackTimer=setTimeout(()=>commitNavigation("preparation timed out after 500ms"),500);try{window.postMessage({source:SRC,type:"prepareWebView",requestId},"*")}catch(error48){commitNavigation(error48 instanceof Error?error48.message:String(error48))}}function installRootContainer(){if(!usesRootContainer||!/^https?:$/i.test(location.protocol))return;let shellRoot,frame;try{for(let cookie of config2.rootContainer?.initialCookies??[]){if(!cookie.name)continue;let parts=[`${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}`,`Path=${cookie.path??"/"}`];cookie.domain&&parts.push(`Domain=${cookie.domain}`),document.cookie=parts.join("; ")}shellRoot=document.createElement("html");let shellHead=document.createElement("head"),charset=document.createElement("meta"),viewport=document.createElement("meta"),title=document.createElement("title"),shellBody=document.createElement("body");frame=document.createElement("iframe"),shellRoot.setAttribute("data-mearl-app-shell",""),shellBody.setAttribute("data-mearl-app-shell",""),charset.setAttribute("charset","utf-8"),viewport.name="viewport",viewport.content="width=device-width,initial-scale=1,viewport-fit=cover",shellHead.append(charset,viewport,title),shellRoot.append(shellHead,shellBody),shellRoot.style.cssText="width:100%;height:100%;margin:0;overflow:hidden;background:#fff;",shellBody.style.cssText="width:100%;height:100%;margin:0;overflow:hidden;background:#fff;",frame.name=ROOT_FRAME_NAME,frame.setAttribute("data-mearl-root-webview",config2.profile),frame.style.cssText="position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;border:0;display:block;background:#fff;z-index:0;opacity:1;",frame.addEventListener("load",()=>{let committedSrc=frame.getAttribute("src");!committedSrc||committedSrc==="about:blank"||(syncSimulatorStateToWindow(frame.contentWindow),requestAnimationFrame(()=>{rootFrame!==frame||!frame.isConnected||(frame.setAttribute("data-mearl-webview-ready",""),syncSimulatedTitleBar())}))}),shellBody.appendChild(frame);let currentRoot=document.documentElement;currentRoot?document.replaceChild(shellRoot,currentRoot):document.appendChild(shellRoot)}catch(error48){console.warn(TAG,"根 WebView 容器创建失败,保留当前页面",error48),rootFrame=null;return}rootFrame=frame,rootContainerActive=!0;try{typeof window.stop=="function"&&window.stop()}catch(error48){console.warn(TAG,"停止外层文档加载失败,继续启动根 WebView",error48)}try{startPreparedWebViewNavigation(frame,rootBusinessUrl,()=>rootFrame===frame&&frame.isConnected)}catch(error48){console.warn(TAG,"根 WebView 环境准备启动失败,直接提交业务导航",error48),rootFrame===frame&&frame.isConnected&&(frame.src=rootBusinessUrl)}}installRootContainer();function normalizeProxyPathPrefix(prefix){let withLeadingSlash=prefix.startsWith("/")?prefix:`/${prefix}`;return withLeadingSlash.endsWith("/")?withLeadingSlash:`${withLeadingSlash}/`}function matchesProxyTarget(hostname3,suffixes){return suffixes.some(suffix=>hostname3===suffix||hostname3.endsWith(`.${suffix}`))}function mapLayerFrameUrl(url2){let proxy=config2.layerUrlProxy;if(!proxy||!location.hostname.startsWith(proxy.sourceHostPrefix))return url2;try{let target=new URL(url2,location.href);if(!/^https?:$/.test(target.protocol))return url2;let prefix=normalizeProxyPathPrefix(proxy.pathPrefix);if(target.hostname===location.hostname){if(target.pathname.startsWith(prefix))return url2;let derivedHost=location.pathname.startsWith(prefix)?location.pathname.slice(prefix.length).split("/")[0]:proxy.defaultTargetHost;return!derivedHost||!matchesProxyTarget(derivedHost,proxy.targetHostSuffixes)?url2:`${location.origin}${prefix}${derivedHost}${target.pathname}${target.search}${target.hash}`}return matchesProxyTarget(target.hostname,proxy.targetHostSuffixes)?`${location.origin}${prefix}${target.host}${target.pathname}${target.search}${target.hash}`:url2}catch{return url2}}function restoreLayerBusinessUrl(url2){let proxy=config2.layerUrlProxy;if(!proxy)return url2;try{let current=new URL(url2,location.href),prefix=normalizeProxyPathPrefix(proxy.pathPrefix);if(current.origin!==location.origin||!current.pathname.startsWith(prefix))return url2;let rest=current.pathname.slice(prefix.length),slash=rest.indexOf("/"),host=slash===-1?rest:rest.slice(0,slash);if(!host)return url2;let hostname3=new URL(`${current.protocol}//${host}`).hostname;if(!matchesProxyTarget(hostname3,proxy.targetHostSuffixes))return url2;let pathname=slash===-1?"/":rest.slice(slash);return`${current.protocol}//${host}${pathname}${current.search}${current.hash}`}catch{return url2}}let ANIM_MS=config2.animationMs??300;function boolParam(value,fallback){return value===!0||value===1||value==="1"||value==="true"?!0:value===!1||value===0||value==="0"||value==="false"?!1:value===""?!0:fallback}function numberParam(value,fallback,min,max){let parsed=typeof value=="number"?value:Number(value);return Number.isFinite(parsed)?Math.min(Math.max(parsed,min),max):fallback}function resolveOverlayPresentation(url2,params,explicitWebdialog){let query=null;try{query=new URL(url2,location.href).searchParams}catch{}let records=[],addRecord=value=>{value&&typeof value=="object"&&!Array.isArray(value)&&records.push(value)};addRecord(params?.pageParams),addRecord(params?.page_params),addRecord(params?.popConfig),addRecord(params?.data),addRecord(params?.param),addRecord(params);let read=key=>{for(let record2 of records)if(Object.prototype.hasOwnProperty.call(record2,key))return record2[key];return query?.has(key)?query.get(key):void 0},protocol=config2.overlay;if(!explicitWebdialog&&(!protocol||!boolParam(read(protocol.enabledParam),!1)))return null;let configuredTopRatio=protocol?read(protocol.topRatioParam):void 0,configuredHeightRatio=protocol?.heightRatioParam?read(protocol.heightRatioParam):void 0,configuredMaxHeight=read("maxHeight")??configuredHeightRatio,defaultTopRatio=protocol?.defaultTopRatio??.2;return{topRatio:configuredTopRatio!==void 0?numberParam(configuredTopRatio,defaultTopRatio,0,1):configuredMaxHeight!==void 0?1-numberParam(configuredMaxHeight,1-defaultTopRatio,0,1):defaultTopRatio,widthRatio:numberParam(read("maxWidth"),1,0,1),radius:numberParam((protocol?read(protocol.radiusParam):void 0)??read("cornerRadius"),protocol?.defaultRadius??0,0,50),maskAlpha:numberParam(protocol?read(protocol.maskAlphaParam):void 0,protocol?.defaultMaskAlpha??.3,0,1),tapClose:boolParam((protocol?read(protocol.tapCloseParam):void 0)??read("tapEnable"),protocol?.defaultTapClose??!0)}}function requestsPopBeforeOpen(url2,params){if(params?.__mearlReplace===!0)return!0;let key=config2.popBeforeOpenParam;if(!key)return!1;let records=[params?.pageParams,params?.page_params,params?.data,params?.param,params];for(let value of records){if(!value||typeof value!="object"||Array.isArray(value))continue;let record2=value;if(Object.prototype.hasOwnProperty.call(record2,key))return boolParam(record2[key],!1)}try{let query=new URL(url2,location.href).searchParams;return query.has(key)&&boolParam(query.get(key),!1)}catch{return!1}}let layers=[],forwardStack=[],layerSeq=0,enteringLayerCount=0,closingLayerCount=0,explicitLayerTitleBarStates=new Map,rootScrollStyles=null,pendingClose=null,nativeBackRequestSeq=0,pendingNativeBack=null,containerDataRequestSeq=0,containerDataCallbacks=new Map,sharedFiles=new Map,sharedData=new Map,legacyBroadcastChannels=new Set,MEGA_KV_STORAGE_KEY=`__mearl_mega_kv__:${config2.profile}`;function readMegaKVStorage(){let storage=new Map;try{let parsed=JSON.parse(localStorage.getItem(MEGA_KV_STORAGE_KEY)??"{}");if(!parsed||typeof parsed!="object"||Array.isArray(parsed))return storage;for(let[bizId,rawEntries]of Object.entries(parsed)){if(!rawEntries||typeof rawEntries!="object"||Array.isArray(rawEntries))continue;let entries=new Map;for(let[key,value]of Object.entries(rawEntries))typeof value=="string"&&entries.set(key,value);storage.set(bizId,entries)}}catch{}return storage}let megaKVStorage=readMegaKVStorage();function megaKVSnapshot(){let snapshot={};for(let[bizId,values]of megaKVStorage)snapshot[bizId]=Object.fromEntries(values);return snapshot}function persistMegaKVStorage(){try{localStorage.setItem(MEGA_KV_STORAGE_KEY,JSON.stringify(megaKVSnapshot()))}catch{}}let PENDING_CLOSE_TIMEOUT_MS=400,pendingHistoryDepth=null;function clearPendingClose(){pendingClose&&(clearTimeout(pendingClose.timer),pendingClose=null)}function clearPendingNativeBack(){pendingNativeBack&&(clearTimeout(pendingNativeBack.timer),pendingNativeBack=null)}function clearPendingHistoryDepth(){pendingHistoryDepth&&(clearTimeout(pendingHistoryDepth.timer),pendingHistoryDepth=null)}function syncHistoryAfterDirectClose(){clearPendingHistoryDepth();let depth=layers.length,timer=setTimeout(()=>{pendingHistoryDepth=null,console.warn(TAG,"WebView 已出栈,但浏览器历史未在预期时间内同步",{depth})},PENDING_CLOSE_TIMEOUT_MS);pendingHistoryDepth={depth,timer},history.back()}function armPendingClose(data,retries){clearPendingClose();let timer=setTimeout(()=>{pendingClose=null,log2("close 未等到 popstate,直接关栈顶兜底"),closeToDepth(Math.max(layers.length-1,0),data,!0)},PENDING_CLOSE_TIMEOUT_MS);pendingClose={data,retries,timer},history.back()}function parseStorageId(url2){try{return new URL(url2,location.href).searchParams.get("__storage_id")}catch{return null}}function titleBarStateCacheKey(url2){try{let parsed=new URL(url2,location.href);return parsed.hash="",parsed.href}catch{return url2}}function cacheExplicitTitleBarState(layer,state){explicitLayerTitleBarStates.set(titleBarStateCacheKey(layer.entryUrl),state),explicitLayerTitleBarStates.set(titleBarStateCacheKey(layer.url),state)}function readDepth(state){if(state&&typeof state=="object"){let d=state.__mearl_layer__;if(typeof d=="number")return d}return null}function mapUrlForSync(url2){let suffixes=config2.urlSyncHostSuffixes??[];try{let u=new URL(url2,location.href);if(!/^https?:$/.test(u.protocol)||!(suffixes.length===0||suffixes.some(s=>u.host===s||u.host.endsWith(`.${s}`))))return;if(u.origin===location.origin)return u.pathname+u.search+u.hash;let proxy=config2.layerUrlProxy;return proxy&&location.hostname.startsWith(proxy.sourceHostPrefix)&&matchesProxyTarget(u.hostname,proxy.targetHostSuffixes)?`${normalizeProxyPathPrefix(proxy.pathPrefix)}${u.host}${u.pathname}${u.search}${u.hash}`:u.pathname+u.search+u.hash}catch{return}}function createLayerEl(overlay,id){let el=document.createElement("div");el.setAttribute("data-mearl-layer",String(id)),el.style.cssText=`position:fixed;inset:0;z-index:${2147483e3+id%100*2};`;let frame=document.createElement("iframe");if(frame.name=LAYER_FRAME_NAME,frame.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms allow-modals allow-downloads allow-popups"),frame.style.cssText="position:absolute;inset:0;width:100%;height:100%;border:0;display:block;background:#fff;z-index:0;opacity:1;",overlay){el.style.pointerEvents="none";let mask=document.createElement("div");mask.style.cssText=`position:absolute;inset:0;background:rgba(0,0,0,${overlay.maskAlpha});opacity:0;pointer-events:auto;`;let sheet=document.createElement("div"),width=overlay.widthRatio*100,left=(1-overlay.widthRatio)/2*100;return sheet.style.cssText=`position:absolute;left:${left}%;right:auto;bottom:0;width:${width}%;height:${(1-overlay.topRatio)*100}%;background:#fff;border-radius:${overlay.radius}px ${overlay.radius}px 0 0;overflow:hidden;pointer-events:auto;`,sheet.appendChild(frame),el.appendChild(mask),el.appendChild(sheet),{el,frame,animEl:sheet,mask}}return el.style.background="#fff",el.appendChild(frame),{el,frame,animEl:el,mask:null}}function setLayerInteractive(layer,interactive){layer.frame.style.pointerEvents=interactive?"":"none",layer.titleBarView&&(layer.titleBarView.root.style.pointerEvents=interactive?"":"none"),interactive?(layer.frame.removeAttribute("inert"),layer.frame.removeAttribute("aria-hidden"),layer.frame.removeAttribute("tabindex")):(layer.frame.setAttribute("inert",""),layer.frame.setAttribute("aria-hidden","true"),layer.frame.setAttribute("tabindex","-1"),layer.frame.blur()),layer.overlay?(layer.el.style.pointerEvents="none",layer.animEl.style.pointerEvents=interactive?"auto":"none",layer.mask&&(layer.mask.style.pointerEvents=interactive?"auto":"none")):layer.el.style.pointerEvents=interactive?"":"none"}function setRootFrameInteractive(interactive){rootFrame&&(rootFrame.style.pointerEvents=interactive?"":"none",interactive?(rootFrame.removeAttribute("inert"),rootFrame.removeAttribute("aria-hidden"),rootFrame.removeAttribute("tabindex")):(rootFrame.setAttribute("inert",""),rootFrame.setAttribute("aria-hidden","true"),rootFrame.setAttribute("tabindex","-1"),rootFrame.blur()))}function blockClosingLayerInteractions(layer){setLayerInteractive(layer,!1),layer.el.style.pointerEvents="auto"}function syncRootScrollLock(locked){let body=document.body;if(locked&&!rootScrollStyles){rootScrollStyles={html:document.documentElement.style.overflow,body:body?.style.overflow??null},document.documentElement.style.overflow="hidden",body&&(body.style.overflow="hidden");return}!locked&&rootScrollStyles&&(document.documentElement.style.overflow=rootScrollStyles.html,body&&rootScrollStyles.body!==null&&(body.style.overflow=rootScrollStyles.body),rootScrollStyles=null)}function syncLayerInteractivity(){let activeLayer=closingLayerCount===0&&enteringLayerCount===0?layers[layers.length-1]:void 0;for(let layer of layers)setLayerInteractive(layer,layer===activeLayer),!activeLayer&&layer===layers[layers.length-1]&&(layer.el.style.pointerEvents="auto");setRootFrameInteractive(layers.length===0&&enteringLayerCount===0&&closingLayerCount===0),syncRootScrollLock(layers.length>0||enteringLayerCount>0||closingLayerCount>0)}function finishLayerEntry(layer){layer.entering&&(layer.entering=!1,layer.enterTimer!==null&&clearTimeout(layer.enterTimer),layer.enterTimer=null,layer.enterTransitionEnd&&(layer.animEl.removeEventListener("transitionend",layer.enterTransitionEnd),layer.enterTransitionEnd=null),enteringLayerCount=Math.max(enteringLayerCount-1,0),syncLayerInteractivity())}function animateIn(layer){let t=layer.animEl;if(t.style.transform=layer.overlay?"translateY(100%)":"translateX(100%)",t.offsetWidth,t.style.transition=`transform ${ANIM_MS}ms ease`,t.style.transform="translate(0px, 0px)",layer.mask&&(layer.mask.style.transition=`opacity ${ANIM_MS}ms ease`,layer.mask.style.opacity="1"),ANIM_MS<=0){finishLayerEntry(layer);return}layer.enterTransitionEnd=event=>{event.target===t&&event.propertyName==="transform"&&finishLayerEntry(layer)},t.addEventListener("transitionend",layer.enterTransitionEnd),layer.enterTimer=setTimeout(()=>finishLayerEntry(layer),ANIM_MS+60)}function animateOut(layer,done){let t=layer.animEl;if(ANIM_MS<=0){t.style.transform=layer.overlay?"translateY(100%)":"translateX(100%)",layer.mask&&(layer.mask.style.opacity="0"),setTimeout(done,0);return}let settled=!1,fallbackTimer=0,finish=()=>{settled||(settled=!0,t.removeEventListener("transitionend",onTransitionEnd),clearTimeout(fallbackTimer),done())},onTransitionEnd=event=>{event.target===t&&event.propertyName==="transform"&&finish()};t.addEventListener("transitionend",onTransitionEnd),t.style.transition=`transform ${ANIM_MS}ms ease`,t.style.transform=layer.overlay?"translateY(100%)":"translateX(100%)",layer.mask&&(layer.mask.style.opacity="0"),fallbackTimer=setTimeout(finish,ANIM_MS+60)}function startLayerNavigation(layer,target){startPreparedWebViewNavigation(layer.frame,target,()=>!layer.closing&&layer.el.isConnected,cleanup=>{layer.navigationPreparationCleanup=cleanup})}function setPageVisibility(target,hidden){if(target===window){links.getBridgeProtocol().handlePageVisibility(hidden);return}try{target.postMessage({source:SRC,type:"simulatorVisibility",hidden},"*")}catch{}}function openLayer(url2,callbackId,overlay,openerWin,pushHistory,popId=null){clearPendingClose();let target=url2;if(!/^https?:/i.test(target)){let mapped=links.getBridgeProtocol().mapScheme(target);if(!mapped)return log2("open 失败,scheme 未映射:",url2),null;target=mapped}location.protocol==="https:"&&target.startsWith("http:")&&(target="https:"+target.slice(5));let presentation=overlay??resolveOverlayPresentation(target,void 0,!1);log2("open →",presentation?"(webdialog) ":"",target);let parts=createLayerEl(presentation,++layerSeq),restoredTitleBarState=explicitLayerTitleBarStates.get(titleBarStateCacheKey(target)),layer={id:layerSeq,win:parts.frame.contentWindow,frame:parts.frame,entryUrl:target,url:target,overlay:presentation,openerWin,callbackId,storageId:parseStorageId(target),popId,el:parts.el,animEl:parts.animEl,mask:parts.mask,entering:!0,enterTimer:null,enterTransitionEnd:null,closing:!1,navigationPreparationCleanup:null,titleBarState:restoredTitleBarState??initialLayerTitleBarState(target),titleBarStateExplicit:restoredTitleBarState!==void 0,titleBarStateReady:restoredTitleBarState!==void 0,titleBarView:null};if(popId&&layer.el.setAttribute("data-mearl-pop-id",popId),layer.mask&&presentation?.tapClose&&layer.mask.addEventListener("click",()=>requestOverlayClose(layer)),!presentation&&simulateSystemBars&&config2.titleBar&&(layer.titleBarView=createSimulatedNavigationBarView("layer",()=>requestNativeBack()),layer.titleBarView.root.setAttribute("data-mearl-layer-titlebar",String(layer.id)),parts.el.appendChild(layer.titleBarView.root)),layers.push(layer),setPageVisibility(openerWin,!0),enteringLayerCount+=1,syncLayerViewport(layer,layer.titleBarState),syncLayerInteractivity(),parts.frame.addEventListener("load",()=>{layer.win=parts.frame.contentWindow,parts.frame.name=LAYER_FRAME_NAME;let committedSrc=parts.frame.getAttribute("src");!committedSrc||committedSrc==="about:blank"||(syncSimulatorStateToWindow(parts.frame.contentWindow),requestAnimationFrame(()=>{layer.titleBarStateReady||layer.closing||!layer.el.isConnected||(layer.titleBarStateReady=!0,syncLayerViewport(layer,resolvedTitleBarState(layer)))}))}),(document.body??document.documentElement).appendChild(parts.el),layer.win=parts.frame.contentWindow,startLayerNavigation(layer,mapLayerFrameUrl(target)),animateIn(layer),pushHistory){forwardStack.length=0;try{history.pushState({__mearl_layer__:layers.length},"",mapUrlForSync(target))}catch{}}return layer}function replaceLayer(sourceLayer,url2,callbackId,overlay,popId=null){if(sourceLayer.closing||layers[layers.length-1]!==sourceLayer){openLayer(url2,callbackId,overlay,sourceLayer.win??window,!0,popId);return}let replacement=openLayer(url2,callbackId,overlay,sourceLayer.openerWin,!1,popId);if(!replacement)return;sourceLayer.navigationPreparationCleanup?.(),sourceLayer.navigationPreparationCleanup=null,sourceLayer.entering&&(sourceLayer.entering=!1,enteringLayerCount=Math.max(enteringLayerCount-1,0),sourceLayer.enterTimer!==null&&clearTimeout(sourceLayer.enterTimer),sourceLayer.enterTransitionEnd&&sourceLayer.animEl.removeEventListener("transitionend",sourceLayer.enterTransitionEnd));let sourceIndex=layers.indexOf(sourceLayer);sourceIndex>=0&&layers.splice(sourceIndex,1),destroySimulatedNavigationBarView(sourceLayer.titleBarView),sourceLayer.el.remove(),forwardStack.length=0,syncLayerInteractivity(),syncActiveSystemBars();try{history.replaceState({__mearl_layer__:layers.length},"",mapUrlForSync(replacement.url))}catch{}}function closeLayer(layer,data,final,gotoEvent=!1,resumeOpener=!0,silent=!1){if(layer.closing)return;layer.navigationPreparationCleanup?.(),layer.navigationPreparationCleanup=null,layer.entering&&(layer.entering=!1,enteringLayerCount=Math.max(enteringLayerCount-1,0),layer.enterTimer!==null&&clearTimeout(layer.enterTimer),layer.enterTimer=null,layer.enterTransitionEnd&&(layer.animEl.removeEventListener("transitionend",layer.enterTransitionEnd),layer.enterTransitionEnd=null)),layer.closing=!0;let idx=layers.indexOf(layer);idx>=0&&layers.splice(idx,1),closingLayerCount+=1,blockClosingLayerInteractions(layer),syncLayerInteractivity(),syncActiveSystemBars(),final?forwardStack.length=0:forwardStack.push({url:layer.url,overlay:layer.overlay,openerWin:layer.openerWin,callbackId:layer.callbackId,storageId:layer.storageId,popId:layer.popId}),log2("close ←",layer.url,data===void 0?"":data),animateOut(layer,()=>{if(destroySimulatedNavigationBarView(layer.titleBarView),layer.el.remove(),closingLayerCount=Math.max(closingLayerCount-1,0),syncLayerInteractivity(),syncActiveSystemBars(),!!resumeOpener)if(layer.openerWin===window)links.getBridgeProtocol().handleResume({data,storageId:layer.storageId,callbackId:layer.callbackId,final,gotoEvent,silent});else try{layer.openerWin.postMessage({source:SRC,type:"resume",data,storageId:layer.storageId,callbackId:layer.callbackId,final,gotoEvent,silent},"*")}catch{}})}function closeToDepth(depth,data,final){for(;layers.length>depth;){let revealsTarget=layers.length===depth+1;closeLayer(layers[layers.length-1],revealsTarget?data:void 0,final,!1,revealsTarget)}}function closeAllLayers(data,gotoEvent=!1){let depth=layers.length;for(;layers.length>0;){let isRootmostLayer=layers.length===1;closeLayer(layers[layers.length-1],isRootmostLayer?data:void 0,!0,isRootmostLayer&&gotoEvent,isRootmostLayer)}if(depth>0)try{history.go(-depth)}catch{}return depth>0}function requestOverlayClose(layer){if(!(layer.closing||layers[layers.length-1]!==layer)){if(!config2.overlay?.silentTapClose){for(let selector of config2.overlay?.tapCloseSelectors??[])try{let control=layer.frame.contentDocument?.querySelector(selector);if(typeof control?.click!="function")continue;control.click();return}catch{}requestCloseOnTop(void 0);return}pendingClose||pendingHistoryDepth||(closeLayer(layer,void 0,!0,!1,!0,!0),syncHistoryAfterDirectClose())}}function forwardToDepth(depth){for(;layers.length<depth&&forwardStack.length>0;){let entry=forwardStack.pop();openLayer(entry.url,entry.callbackId,entry.overlay,entry.openerWin,!1,entry.popId)}}function requestCloseOnTop(data){if(layers.length===0){history.back();return}if(rootContainerActive){closeLayer(layers[layers.length-1],data,!0),syncHistoryAfterDirectClose();return}armPendingClose(data,8)}function isActiveBusinessWindow(target){let topLayer=layers[layers.length-1];return topLayer?topLayer.frame.contentWindow===target:rootFrame?rootFrame.contentWindow===target:target===window}function finishNativeBack(requestId,target,handled){pendingNativeBack?.requestId!==requestId||pendingNativeBack.target!==target||(clearPendingNativeBack(),!handled&&isActiveBusinessWindow(target)&&requestCloseOnTop(void 0))}function requestNativeBack(){if(!isTop||pendingNativeBack)return;let target=layers[layers.length-1]?.frame.contentWindow??rootFrame?.contentWindow??window;if(!target||target===window){links.getBridgeProtocol().handleNativeBack()||requestCloseOnTop(void 0);return}let requestId=++nativeBackRequestSeq,timer=setTimeout(()=>finishNativeBack(requestId,target,!1),120);pendingNativeBack={requestId,target,timer};try{target.postMessage({source:SRC,type:"nativeBack",requestId},"*")}catch{finishNativeBack(requestId,target,!1)}}function layerForWindow(source){if(source)for(let layer of layers){if(layer.win===source)return layer;let currentWindow=layer.frame.contentWindow;if(currentWindow&&currentWindow===source)return layer.win=currentWindow,layer}}if(isTop){if(!rootContainerActive){let rawPushState=history.pushState.bind(history),rawReplaceState=history.replaceState.bind(history),withDepth=state=>state==null?{__mearl_layer__:layers.length}:typeof state=="object"&&!Array.isArray(state)?{...state,__mearl_layer__:layers.length}:state;try{history.pushState=function(...args){rawPushState(withDepth(args[0]),args[1],args[2])},history.replaceState=function(...args){rawReplaceState(withDepth(args[0]),args[1],args[2])}}catch{}}try{readDepth(history.state)===null&&history.replaceState({__mearl_layer__:0},"")}catch{}window.addEventListener("popstate",e=>{let depth=readDepth(e.state);if(pendingHistoryDepth){let expectedDepth=pendingHistoryDepth.depth;if(clearPendingHistoryDepth(),depth===expectedDepth)return;console.warn(TAG,"浏览器历史深度与 WebView 出栈事务不一致",{expectedDepth,actualDepth:depth})}if(rootContainerActive){if(depth===null)return;depth<layers.length?closeToDepth(depth,void 0,!1):depth>layers.length&&forwardToDepth(depth);return}if(pendingClose){if(depth!==null&&depth<layers.length){let{data}=pendingClose;clearPendingClose(),closeToDepth(depth,data,!0)}else if(pendingClose.retries>0)armPendingClose(pendingClose.data,pendingClose.retries-1);else{let{data}=pendingClose;clearPendingClose(),closeToDepth(layers.length-1,data,!0)}return}depth!==null&&(depth<layers.length?closeToDepth(depth,void 0,!1):depth>layers.length&&forwardToDepth(depth))})}function broadcastAppMessage(message){links.getBridgeProtocol().handleAppMessage(message);let targets=[rootFrame?.contentWindow??null,...layers.filter(layer=>!layer.closing).map(layer=>layer.frame.contentWindow)];for(let target of targets)if(!(!target||target===window))try{target.postMessage({source:SRC,type:"appMessage",message},"*")}catch{}}function closeMegaPop(popId,data){let index=layers.findIndex(layer=>layer.popId===popId&&!layer.closing);if(index<0)return!1;let closingDepth=layers.length-index;closeToDepth(index,data,!0);try{history.go(-closingDepth)}catch{}return!0}function resizeMegaPop(popId,params){let layer=layers.find(candidate=>candidate.popId===popId&&!candidate.closing);if(!layer?.overlay)return!1;if(params.maxHeight!==void 0){let maxHeight=numberParam(params.maxHeight,1-layer.overlay.topRatio,0,1);layer.overlay.topRatio=1-maxHeight,layer.animEl.style.height=`${maxHeight*100}%`}if(params.maxWidth!==void 0){let maxWidth=numberParam(params.maxWidth,1,0,1);layer.overlay.widthRatio=maxWidth,layer.animEl.style.width=`${maxWidth*100}%`,layer.animEl.style.left=`${(1-maxWidth)/2*100}%`,layer.animEl.style.right="auto"}return params.animated===!0&&(layer.animEl.style.transition="height 200ms ease, width 200ms ease, left 200ms ease"),!0}function executeContainerData(action,params){if(action==="sharedFileRead"||action==="sharedFileWrite"){let fileName=typeof params.fileName=="string"?params.fileName:"";if(!fileName)return{success:!1,value:"missing fileName"};if(action==="sharedFileRead")return{success:!0,value:{data:sharedFiles.get(fileName)??""}};let data=typeof params.data=="string"?params.data:String(params.data??"");return sharedFiles.set(fileName,data),{success:!0,value:{}}}if(action==="sharedDataGet"){let keys=Array.isArray(params.keys)?params.keys.filter(key=>typeof key=="string"):[],data={};for(let key of keys)sharedData.has(key)&&(data[key]=sharedData.get(key));return{success:!0,value:{data}}}if(action==="sharedDataSet"){if(!params.data||typeof params.data!="object"||Array.isArray(params.data))return{success:!1,value:"missing shared data"};for(let[key,value]of Object.entries(params.data))value==null?sharedData.delete(key):sharedData.set(key,value);return{success:!0,value:{}}}if(action==="megaBroadcast")return!params.message||typeof params.message!="object"||Array.isArray(params.message)?{success:!1,value:"missing broadcast message"}:(broadcastAppMessage(params.message),{success:!0,value:{}});if(action==="megaKVSnapshot")return{success:!0,value:{entries:megaKVSnapshot()}};if(action==="megaKVMutation"){let operation=typeof params.operation=="string"?params.operation:"",bizId=typeof params.bizId=="string"?params.bizId:"";if(!bizId)return{success:!1,value:"missing bizID"};let key=typeof params.key=="string"?params.key:"";if((operation==="set"||operation==="remove")&&!key)return{success:!1,value:"missing key"};if(operation==="set"){if(typeof params.value!="string")return{success:!1,value:"missing value"};let entries=megaKVStorage.get(bizId)??new Map;entries.set(key,params.value),megaKVStorage.set(bizId,entries)}else if(operation==="remove"){let entries=megaKVStorage.get(bizId);entries?.delete(key),entries?.size===0&&megaKVStorage.delete(bizId)}else if(operation==="clear")megaKVStorage.delete(bizId);else return{success:!1,value:"unsupported KVStorage operation"};return persistMegaKVStorage(),broadcastAppMessage({kind:"megaKVStorage",operation,bizId,key,value:params.value}),{success:!0,value:{}}}if(action==="legacyBroadcastCreate"){let instanceId=typeof params.instanceId=="string"?params.instanceId:"";return instanceId?(legacyBroadcastChannels.add(instanceId),{success:!0,value:{}}):{success:!1,value:"missing instanceId"}}if(action==="legacyBroadcastPost"){let instanceId=typeof params.instanceId=="string"?params.instanceId:"";return instanceId?legacyBroadcastChannels.has(instanceId)?(broadcastAppMessage({kind:"legacyBroadcast",instanceId,message:params.message}),{success:!0,value:{}}):{success:!1,value:"broadcast channel not found"}:{success:!1,value:"missing instanceId"}}if(action==="legacyBroadcastClose"){let instanceId=typeof params.instanceId=="string"?params.instanceId:"";return instanceId?(legacyBroadcastChannels.delete(instanceId),{success:!0,value:{}}):{success:!1,value:"missing instanceId"}}if(action==="megaPopClose"){let popId=typeof params.popId=="string"?params.popId:"";return popId?closeMegaPop(popId,params.result)?{success:!0,value:{}}:{success:!1,value:"popId not found"}:{success:!1,value:"missing popId"}}if(action==="megaPopResize"){let popId=typeof params.popId=="string"?params.popId:"";return popId?resizeMegaPop(popId,params)?{success:!0,value:{}}:{success:!1,value:"popId not found"}:{success:!1,value:"missing popId"}}return{success:!1,value:"unsupported container data action"}}function requestContainerData(action,params,onSuccess,onFailure){if(isTop){let result=executeContainerData(action,params);setTimeout(()=>result.success?onSuccess(result.value):onFailure(result.value),0);return}let requestId=++containerDataRequestSeq;containerDataCallbacks.set(requestId,{success:onSuccess,failure:onFailure});try{window.top?.postMessage({source:SRC,type:"containerDataRequest",requestId,action,params},"*")}catch(error48){containerDataCallbacks.delete(requestId),onFailure(error48 instanceof Error?error48.message:String(error48))}}function requestOpen(url2,callbackId,webdialog,params){let overlay=resolveOverlayPresentation(url2,params,webdialog),popBeforeOpen=requestsPopBeforeOpen(url2,params),popId=typeof params?.__mearlMegaPopId=="string"?params.__mearlMegaPopId:null;isTop?openLayer(url2,callbackId,overlay,window,!0,popId):window.top?.postMessage({source:SRC,type:"open",url:url2,callbackId,overlay,popBeforeOpen,popId},"*")}function requestClose(data){let payload;try{payload=data===void 0?void 0:JSON.parse(JSON.stringify(data))}catch{payload=void 0}isTop?requestCloseOnTop(payload):window.top?.postMessage({source:SRC,type:"close",data:payload},"*")}if(window.addEventListener("message",event=>{let msg=event.data;if(!(!msg||typeof msg!="object")){if(msg.source==="mearl-content"&&(msg.type==="APP_BRIDGE_SIMULATOR_VISIBILITY"||msg.type==="APP_BRIDGE_RUNTIME_RESPONSES")){if(!isTop||event.source!==window)return;if(msg.type==="APP_BRIDGE_SIMULATOR_VISIBILITY"&&typeof msg.hidden=="boolean"){simulatedPageHidden=msg.hidden,links.getBridgeProtocol().handlePageVisibility(msg.hidden);let lifecycleMessage={source:SRC,type:"simulatorVisibility",hidden:msg.hidden};rootFrame?.contentWindow?.postMessage(lifecycleMessage,"*");for(let layer of layers)layer.closing||layer.frame.contentWindow?.postMessage(lifecycleMessage,"*")}else if(msg.type==="APP_BRIDGE_RUNTIME_RESPONSES"&&msg.profile===config2.profile&&msg.responses&&typeof msg.responses=="object"&&!Array.isArray(msg.responses)){let responses=msg.responses;runtimeResponses={...runtimeResponses??{},...responses},links.getBridgeProtocol().applyRuntimeResponses(responses);let configMessage={source:SRC,type:"runtimeResponses",profile:config2.profile,responses};rootFrame?.contentWindow?.postMessage(configMessage,"*");for(let layer of layers)layer.closing||layer.frame.contentWindow?.postMessage(configMessage,"*")}return}if(msg.source===SRC){if(isTop){let sourceLayer=layerForWindow(event.source),sourceIsRoot=!!(rootFrame?.contentWindow&&rootFrame.contentWindow===event.source);if(!sourceLayer&&!sourceIsRoot)return;if(msg.type==="open"&&typeof msg.url=="string"){let rawOverlay=msg.overlay&&typeof msg.overlay=="object"?msg.overlay:void 0,overlay=rawOverlay?{topRatio:numberParam(rawOverlay.topRatio,.2,0,1),widthRatio:numberParam(rawOverlay.widthRatio,1,0,1),radius:numberParam(rawOverlay.radius,0,0,50),maskAlpha:numberParam(rawOverlay.maskAlpha,.3,0,1),tapClose:boolParam(rawOverlay.tapClose,!0)}:resolveOverlayPresentation(msg.url,void 0,!1),callbackId=typeof msg.callbackId=="number"?msg.callbackId:0,popId=typeof msg.popId=="string"&&msg.popId?msg.popId:null;msg.popBeforeOpen===!0&&sourceLayer?replaceLayer(sourceLayer,msg.url,callbackId,overlay,popId):openLayer(msg.url,callbackId,overlay,event.source??window,!0,popId)}else if(msg.type==="close")requestCloseOnTop(msg.data);else if(msg.type==="closeAll"){let gotoEvent=msg.gotoEvent===!0;if(gotoEvent&&sourceIsRoot&&layers.length===0&&msg.data!==void 0)try{event.source.postMessage({source:SRC,type:"resume",data:msg.data,storageId:null,callbackId:0,final:!0,gotoEvent:!0},"*")}catch{}else closeAllLayers(msg.data,gotoEvent)}else if(msg.type==="appMessageToOpener"&&sourceLayer){let target=sourceLayer.openerWin;if(target===window)links.getBridgeProtocol().handleAppMessage(msg.message);else try{target.postMessage({source:SRC,type:"appMessage",message:msg.message},"*")}catch{}}else if(msg.type==="containerDataRequest"&&typeof msg.requestId=="number"&&typeof msg.action=="string"&&msg.params&&typeof msg.params=="object"&&!Array.isArray(msg.params)&&event.source){let result=executeContainerData(msg.action,msg.params);try{event.source.postMessage({source:SRC,type:"containerDataResponse",requestId:msg.requestId,success:result.success,value:result.value},"*")}catch{}}else if(msg.type==="nativeBackResult"&&typeof msg.requestId=="number"&&typeof msg.handled=="boolean"&&event.source)finishNativeBack(msg.requestId,event.source,msg.handled);else if(msg.type==="urlChanged"&&typeof msg.url=="string"){let topLayer=layers[layers.length-1];if(sourceIsRoot&&!topLayer){rootBusinessUrl=msg.url;let mapped=mapUrlForSync(msg.url);if(mapped)try{history.replaceState({__mearl_layer__:0},"",mapped)}catch{}}else if(topLayer&&!topLayer.closing&&sourceLayer===topLayer){topLayer.url=msg.url,topLayer.titleBarStateExplicit&&topLayer.titleBarState&&cacheExplicitTitleBarState(topLayer,topLayer.titleBarState);let mapped=mapUrlForSync(msg.url);if(mapped)try{history.replaceState({__mearl_layer__:layers.length},"",mapped)}catch{}}}else if(msg.type==="title"&&typeof msg.title=="string"){let topLayer=layers[layers.length-1];if(sourceIsRoot&&!topLayer)try{document.title=msg.title,syncSimulatedTitleBar()}catch{}else if(topLayer&&sourceLayer===topLayer){document.title=msg.title;let state=resolvedTitleBarState(topLayer);topLayer.titleBarState={...state,title:msg.title},syncLayerViewport(topLayer,topLayer.titleBarState)}}else if(msg.type==="titleBarState"){let state=parseReportedTitleBarState(msg.state);if(state&&sourceIsRoot)links.getSystemBars().setPresentedRootTitleBarState(state);else if(state&&sourceLayer){let explicit=msg.explicit===!0;sourceLayer.titleBarStateReady=!0,explicit?(sourceLayer.titleBarState=state,sourceLayer.titleBarStateExplicit=!0,cacheExplicitTitleBarState(sourceLayer,state)):sourceLayer.titleBarStateExplicit||(sourceLayer.titleBarState=state);let resolvedState=sourceLayer.titleBarState??state;syncLayerViewport(sourceLayer,resolvedState)}}}else if(msg.type==="simulatorVisibility"&&typeof msg.hidden=="boolean"){if(event.source!==window.top)return;links.getBridgeProtocol().handlePageVisibility(msg.hidden)}else if(msg.type==="appMessage"){if(event.source!==window.top)return;links.getBridgeProtocol().handleAppMessage(msg.message)}else if(msg.type==="nativeBack"&&typeof msg.requestId=="number"){if(event.source!==window.top)return;let handled=links.getBridgeProtocol().handleNativeBack();window.top?.postMessage({source:SRC,type:"nativeBackResult",requestId:msg.requestId,handled},"*")}else if(msg.type==="containerDataResponse"&&typeof msg.requestId=="number"){if(event.source!==window.top)return;let callback=containerDataCallbacks.get(msg.requestId);if(!callback)return;containerDataCallbacks.delete(msg.requestId),msg.success===!0?callback.success(msg.value):callback.failure(msg.value)}else if(msg.type==="runtimeResponses"&&msg.profile===config2.profile&&msg.responses&&typeof msg.responses=="object"&&!Array.isArray(msg.responses)){if(event.source!==window.top)return;links.getBridgeProtocol().applyRuntimeResponses(msg.responses)}else if(msg.type==="resume"){if(event.source!==window.top)return;links.getBridgeProtocol().handleResume({data:msg.data,storageId:msg.storageId??null,callbackId:typeof msg.callbackId=="number"?msg.callbackId:0,final:msg.final===!0,gotoEvent:msg.gotoEvent===!0,silent:msg.silent===!0})}else event.source!==window.top&&window.top?.postMessage(msg,"*");return}pageTransport.handleMessage(msg)}}),!isTop&&isContainerFrame){let reportUrl=()=>{try{window.top?.postMessage({source:SRC,type:"urlChanged",url:restoreLayerBusinessUrl(location.href)},"*")}catch{}};try{let origPushState=history.pushState.bind(history),origReplaceState=history.replaceState.bind(history);history.pushState=function(...args){origPushState(...args),reportUrl()},history.replaceState=function(...args){origReplaceState(...args),reportUrl()},window.addEventListener("popstate",reportUrl),window.addEventListener("hashchange",reportUrl)}catch{}}if(isContainerFrame){let requestProxyLocationOpen=url2=>{if(links.getBridgeProtocol().handleMaybeScheme(url2))return!0;try{let current=new URL(restoreLayerBusinessUrl(location.href)),target=new URL(url2,current);return!/^https?:$/.test(target.protocol)||target.origin===current.origin&&target.pathname===current.pathname&&target.search===current.search?!1:(requestOpen(target.href,0,!1),!0)}catch{return!1}};Object.defineProperty(window,"__PROXY_LOCATION__",{value:{get href(){return location.href},set href(url2){requestProxyLocationOpen(url2)||(location.href=mapLayerFrameUrl(url2))},replace(url2){links.getBridgeProtocol().handleMaybeScheme(url2)||location.replace(mapLayerFrameUrl(url2))},assign(url2){requestProxyLocationOpen(url2)||location.assign(mapLayerFrameUrl(url2))}},writable:!1,configurable:!0})}if(isContainerFrame){document.addEventListener("click",event=>{let el=event.target;for(;el&&el.tagName!=="A";)el=el.parentElement;if(!el)return;let href=el.getAttribute("href");if(href){if(links.getBridgeProtocol().handleMaybeScheme(href)){event.preventDefault(),event.stopPropagation();return}/^https?:/i.test(href)&&el.getAttribute("target")==="_blank"&&(event.preventDefault(),event.stopPropagation(),requestOpen(href,0,!1))}},!0);let origOpen=window.open;window.open=function(url2,target,features){let urlStr=typeof url2=="string"?url2:url2 instanceof URL?url2.href:"";return links.getBridgeProtocol().handleMaybeScheme(urlStr)?null:/^https?:/i.test(urlStr)?(requestOpen(urlStr,0,!1),null):origOpen?origOpen.call(window,url2,target,features):null};try{let proto=Location.prototype,origAssign=proto.assign,origReplace=proto.replace;origAssign&&(proto.assign=function(url2){if(links.getBridgeProtocol().handleMaybeScheme(url2))return;let upgraded=location.protocol==="https:"&&url2.startsWith("http:")?"https:"+url2.slice(5):url2;origAssign.call(this,upgraded)}),origReplace&&(proto.replace=function(url2){if(links.getBridgeProtocol().handleMaybeScheme(url2))return;let upgraded=location.protocol==="https:"&&url2.startsWith("http:")?"https:"+url2.slice(5):url2;origReplace.call(this,upgraded)})}catch{}}return log2("容器环境已就绪",isTop?"(top)":isRootFrame?"(root)":isLayerFrame?"(layer)":"(iframe,仅桥)"),{getRootFrame:()=>rootFrame,getLayers:()=>layers,getClosingLayerCount:()=>closingLayerCount,requestOpen,requestClose,requestNativeBack,requestContainerData,closeAllLayers}}var APP_PROFILE_RUNTIME_FACTORIES={environment:installAppProfileEnvironment,containerStack:installAppProfileContainerStack,bridgeProtocol:installAppProfileBridgeProtocol,pageTransport:installAppProfilePageTransport,systemBars:installAppProfileSystemBars};function buildAppProfileRuntimeCallSource(configExpression){return`(${installAppProfileRuntime.toString()})(${configExpression},{environment:${installAppProfileEnvironment.toString()},pageTransport:${installAppProfilePageTransport.toString()},containerStack:${installAppProfileContainerStack.toString()},systemBars:${installAppProfileSystemBars.toString()},bridgeProtocol:${installAppProfileBridgeProtocol.toString()}})`}function installAppProfileRuntime(config2,factories=APP_PROFILE_RUNTIME_FACTORIES){let environment=factories.environment(config2);if(!environment)return;let pageTransport=factories.pageTransport(config2,environment),containerStack=factories.containerStack(config2,environment,{pageTransport,getSystemBars:()=>systemBars,getBridgeProtocol:()=>bridgeProtocol}),systemBars=factories.systemBars(config2,environment,{getRootFrame:containerStack.getRootFrame,getLayers:containerStack.getLayers,getClosingLayerCount:containerStack.getClosingLayerCount,requestClose:containerStack.requestClose,requestNativeBack:containerStack.requestNativeBack}),bridgeProtocol=factories.bridgeProtocol(config2,environment,{pageTransport,systemBars,requestOpen:containerStack.requestOpen,requestClose:containerStack.requestClose,requestCloseAll:containerStack.closeAllLayers,requestContainerData:containerStack.requestContainerData})}import https from"node:https";import http3 from"node:http";var TYPE_INTO_ELEMENT_SRC=typeIntoElement.toString(),CLICK_ELEMENT_VIA_JS_SRC=clickElementViaJS.toString(),GET_CLICK_COORDS_FROM_NODE_SRC=getClickCoordsFromNode.toString();function nodeFetch(urlStr,options={}){return new Promise((resolve2,reject)=>{let url2=new URL(urlStr),isHttps=url2.protocol==="https:",lib=isHttps?https:http3,{method="GET",headers={},body,timeoutMs=3e4}=options,req=lib.request({host:url2.hostname,port:url2.port||(isHttps?443:80),path:url2.pathname+url2.search,method,headers},res=>{let responseHeaders={};for(let[key,value]of Object.entries(res.headers))typeof value=="string"?responseHeaders[key]=value:Array.isArray(value)&&(responseHeaders[key]=value.join(", "));let chunks=[];res.on("data",chunk=>chunks.push(Buffer.from(chunk))),res.on("end",()=>{let bodyBuffer=Buffer.concat(chunks);resolve2({status:res.statusCode??0,statusText:res.statusMessage??"",headers:responseHeaders,body:bodyBuffer.toString("utf-8"),bodyBuffer})})});req.on("error",reject),req.setTimeout(timeoutMs,()=>{req.destroy(),reject(new Error(`Request timeout: ${urlStr}`))}),body&&req.write(body),req.end()})}async function getCookiesForUrl(session,targetUrl){let result=await session.client.sendCommand("Network.getCookies",{urls:[targetUrl]}),map2=new Map;for(let cookie of result.cookies??[])map2.set(cookie.name,cookie.value);return map2}async function waitForPageLoad(session,timeoutMs){if(isCdpDeviceShellActive(session)){let deadline=Date.now()+timeoutMs;for(;Date.now()<deadline;){if((await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:"document.readyState",returnByValue:!0}).catch(()=>null))?.result?.value==="complete")return;await new Promise(resolve2=>setTimeout(resolve2,50))}throw new Error(`Page load timeout after ${timeoutMs}ms`)}return new Promise((resolve2,reject)=>{let settled=!1,removeLoadListener=()=>{},finish=error48=>{settled||(settled=!0,clearTimeout(timer),removeLoadListener(),error48?reject(error48):resolve2())},timer=setTimeout(()=>{finish(new Error(`Page load timeout after ${timeoutMs}ms`))},timeoutMs);removeLoadListener=session.client.on("Page.loadEventFired",()=>finish()),session.client.sendCommand("Runtime.evaluate",{expression:"document.readyState",returnByValue:!0}).then(result=>{result.result?.value==="complete"&&finish()}).catch(()=>{})})}async function getPageViewportSize(session){let result=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:`({
625
+ </style><div id="surface" data-platform="${config2.platform.toLowerCase()}" data-cutout="${String(cutoutKind!=="none")}" data-cutout-kind="${cutoutKind}"><div id="status"><span id="time"></span>${cutoutMarkup}<span id="indicators" aria-hidden="true"><svg id="signal" viewBox="0 0 18 12"><rect x="0" y="8" width="3" height="4" rx="1"/><rect x="5" y="6" width="3" height="6" rx="1"/><rect x="10" y="3" width="3" height="9" rx="1"/><rect x="15" y="0" width="3" height="12" rx="1"/></svg><svg id="wifi" viewBox="1 3.8 22 17.2"><path d="M2 8.82a15 15 0 0 1 20 0"/><path d="M5 12.859a10 10 0 0 1 14 0"/><path d="M8.5 16.429a5 5 0 0 1 7 0"/><path d="M12 20h.01"/></svg><svg id="battery" viewBox="0 0 28 13"><rect id="battery-outline" x=".65" y=".65" width="23" height="11.7" rx="3.1"/><rect id="battery-level" x="2.35" y="2.35" width="19.6" height="8.3" rx="1.7"/><path id="battery-cap" d="M25 4.1c1.1.35 1.7 1.15 1.7 2.4s-.6 2.05-1.7 2.4z"/></svg></span></div></div>`;let surface=shadow.getElementById("surface"),time3=shadow.getElementById("time"),cutout=shadow.getElementById("device-cutout"),cutoutStatusPath=shadow.querySelector("#cutout-check path"),localizedScreenshotText=config2.language.toLowerCase().startsWith("zh")?{idle:"截图",copied:"已复制",downloaded:"已下载",failed:"截图失败"}:{idle:"Screenshot",copied:"Copied",downloaded:"Downloaded",failed:"Capture failed"},setCutoutState=state=>{cutout&&(cutout.dataset.state=state,cutout.setAttribute("aria-label",localizedScreenshotText[state]),cutout.title=localizedScreenshotText[state],cutoutStatusPath&&cutoutStatusPath.setAttribute("d",state==="failed"?"M5.5 5.5l9 9m0-9-9 9":"m4.5 10.5 3.2 3.2 7.8-7.8"))},screenshotPending=!1,screenshotBlob=data=>{let binary=atob(data),bytes=new Uint8Array(binary.length);for(let index=0;index<binary.length;index+=1)bytes[index]=binary.charCodeAt(index);return new Blob([bytes],{type:"image/png"})},downloadScreenshot=blob=>{let link=document.createElement("a"),objectUrl=URL.createObjectURL(blob);link.href=objectUrl,link.download=`mearl-screenshot-${new Date().toISOString().replace(/[:.]/g,"-")}.png`,link.style.display="none",document.body.appendChild(link),link.click(),link.remove(),window.setTimeout(()=>URL.revokeObjectURL(objectUrl),1e3)},captureScreenshot=async()=>{if(!cutout||screenshotPending||cutout.dataset.state!=="idle")return;screenshotPending=!0,cutout.setAttribute("aria-busy","true");let requestId=Date.now()*1e3+Math.floor(Math.random()*1e3),timeoutTimer=0,onResponse=null,image=new Promise((resolve2,reject)=>{let cleanup=()=>{timeoutTimer&&window.clearTimeout(timeoutTimer),onResponse&&window.removeEventListener("message",onResponse)};onResponse=event=>{if(event.source!==window)return;let message=event.data;if(!message||message.source!=="mearl-content"||message.type!=="APP_BRIDGE_SCREENSHOT_RESPONSE"||message.requestId!==requestId)return;cleanup();let result=message.result;result?.success===!0&&typeof result.data=="string"?resolve2({data:result.data}):reject(new Error(String(result?.error??"screenshot failed")))},window.addEventListener("message",onResponse),timeoutTimer=window.setTimeout(()=>{cleanup(),reject(new Error("screenshot timeout"))},35e3)}).then(result=>screenshotBlob(result.data)),clipboardWrite=null;if(navigator.clipboard?.write&&typeof ClipboardItem<"u")try{clipboardWrite=navigator.clipboard.write([new ClipboardItem({"image/png":image})]),clipboardWrite.catch(()=>{})}catch{clipboardWrite=null}window.postMessage({source:SRC,type:"screenshot",requestId},"*");try{let blob=await image;if(clipboardWrite)try{await clipboardWrite,setCutoutState("copied")}catch{downloadScreenshot(blob),setCutoutState("downloaded")}else downloadScreenshot(blob),setCutoutState("downloaded")}catch{setCutoutState("failed")}finally{screenshotPending=!1,cutout.setAttribute("aria-busy","false")}window.setTimeout(()=>{screenshotPending||setCutoutState("idle")},1600)};hasDynamicIsland&&cutout&&(setCutoutState("idle"),cutout.addEventListener("click",()=>void captureScreenshot()));let updateTime=()=>{let now=new Date;time3&&(time3.textContent=`${String(now.getHours()).padStart(2,"0")}:${String(now.getMinutes()).padStart(2,"0")}`)};return window.addEventListener("mearl:page-time-change",updateTime),updateTime(),{root,surface,timeTimer:window.setInterval(updateTime,3e4)}},install=()=>{let titleBar=config2.titleBar;if(!titleBar||!isContainerFrame||!simulateSystemBars)return;let observeState=()=>{new MutationObserver(syncSimulatedTitleBar).observe(document.head??document.documentElement,{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:["content","value"]}),window.addEventListener("popstate",syncSimulatedTitleBar),window.addEventListener("hashchange",syncSimulatedTitleBar),document.readyState==="loading"&&document.addEventListener("DOMContentLoaded",syncSimulatedTitleBar,{once:!0});try{let pushState=history.pushState.bind(history),replaceState=history.replaceState.bind(history);history.pushState=function(...args){pushState(...args),syncSimulatedTitleBar()},history.replaceState=function(...args){replaceState(...args),syncSimulatedTitleBar()}}catch{}};if(!isTop){observeState(),syncSimulatedTitleBar();return}let mount=()=>{if(titleBarRoot||!document.body)return;let totalHeight=config2.statusBarHeight+titleBar.navigationBarHeight,navigationView=createNavigationBarView("root",host.requestNativeBack),statusView=externalDeviceChrome||config2.statusBarHeight<=0?null:createStatusBarView(),spacer=document.createElement("div");if(spacer.setAttribute("data-mearl-app-titlebar-spacer",""),spacer.style.cssText=`display:block;width:100%;height:${totalHeight}px;min-height:${totalHeight}px;flex:none;`,spacer.style.setProperty("--mearl-app-navigation-bar-height",`${titleBar.navigationBarHeight}px`),document.body.insertBefore(spacer,document.body.firstChild),document.body.appendChild(navigationView.root),statusView&&document.body.appendChild(statusView.root),!externalDeviceChrome&&safeAreaInsets.bottom>0){let bottomRoot=document.createElement("div");bottomRoot.setAttribute("data-mearl-app-system-bottom",config2.profile),bottomRoot.style.cssText=`position:fixed;left:0;right:0;bottom:0;height:${safeAreaInsets.bottom}px;z-index:2147483600;box-sizing:border-box;pointer-events:none;color:#111111;`;let bottomShadow=bottomRoot.attachShadow({mode:"open"});bottomShadow.innerHTML=`<style>:host{all:initial}#surface{appearance:none;border:0;padding:0;width:166px;max-width:100%;height:24px;position:absolute;left:50%;bottom:0;transform:translateX(-50%);display:block;box-sizing:border-box;pointer-events:auto;color:#111;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent}#surface:focus-visible{outline:2px solid #2563eb;outline-offset:-2px}#indicator{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);width:134px;height:5px;border-radius:999px;background:currentColor;opacity:.92;transition:transform 120ms ease,opacity 120ms ease}#surface:hover #indicator{opacity:1;transform:translateX(-50%) scaleX(1.05)}#surface[data-platform="android"] #indicator{bottom:6px;width:108px;height:4px;opacity:.82}</style><button id="surface" type="button" aria-label="打开桥模拟配置" title="桥模拟配置" data-platform="${config2.platform.toLowerCase()}"><span id="indicator" aria-hidden="true"></span></button>`,document.body.appendChild(bottomRoot),systemBottomRoot=bottomRoot,systemBottomSurface=bottomShadow.getElementById("surface"),systemBottomSurface?.addEventListener("click",()=>{window.postMessage({source:SRC,type:"showBridgeConfig",profile:config2.profile,actions:config2.actions},"*")})}rootTitleBarView=navigationView,systemStatusView=statusView,titleBarRoot=navigationView.root,titleBarSpacer=spacer,syncSimulatedTitleBar(),observeState()};document.body?mount():document.addEventListener("DOMContentLoaded",mount,{once:!0})},service={initialLayerTitleBarState,resolvedTitleBarState,parseReportedTitleBarState,setPresentedRootTitleBarState:state=>{presentedRootTitleBarState=state,syncSimulatedTitleBar()},markStateExplicit:()=>{titleBarStateExplicit=!0},applyNavigationBarState,applyStatusBarState,createNavigationBarView,destroyNavigationBarView:view=>view?.root.remove(),syncLayerViewport,syncActiveSystemBars,syncSimulatedTitleBar};return install(),service}function installAppProfilePageTransport(config2,environment){let{SRC,TAG,log:log2}=environment,appToast=null,appToastHideTimer=null,appToastRemoveTimer=null;function showAppToast(params){let p=params&&typeof params=="object"?params:{},messageValue=[p.message,p.msg,p.content,p.text].find(value=>typeof value=="string"&&value.trim().length>0);if(typeof messageValue!="string")return"missing message";let durationValue=Number(p.milliseconds??p.duration),duration3=Number.isFinite(durationValue)&&durationValue>0?durationValue:2e3,hideAfter=Math.min(6e4,Math.max(300,Math.round(duration3)));appToastHideTimer!==null&&window.clearTimeout(appToastHideTimer),appToastRemoveTimer!==null&&window.clearTimeout(appToastRemoveTimer);let toast=appToast?.isConnected===!0?appToast:document.createElement("div");return toast!==appToast&&(appToast=toast,toast.setAttribute("data-mearl-app-toast",""),toast.setAttribute("role","status"),toast.setAttribute("aria-live","polite"),Object.assign(toast.style,{position:"fixed",left:"50%",top:"50%",zIndex:"2147483647",maxWidth:"calc(100vw - 64px)",boxSizing:"border-box",padding:"14px 20px",borderRadius:"12px",background:"rgba(20, 20, 20, 0.88)",color:"#ffffff",fontFamily:'-apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif',fontSize:"16px",fontWeight:"400",lineHeight:"24px",textAlign:"center",whiteSpace:"pre-wrap",overflowWrap:"anywhere",pointerEvents:"none",opacity:"0",transform:"translate(-50%, -50%) scale(0.96)",transition:"opacity 180ms ease, transform 180ms ease"}),(document.body??document.documentElement).appendChild(toast)),toast.textContent=messageValue,toast.style.opacity="0",toast.style.transform="translate(-50%, -50%) scale(0.96)",toast.offsetWidth,toast.style.opacity="1",toast.style.transform="translate(-50%, -50%) scale(1)",appToastHideTimer=window.setTimeout(()=>{appToastHideTimer=null,toast.style.opacity="0",toast.style.transform="translate(-50%, -50%) scale(0.96)",appToastRemoveTimer=window.setTimeout(()=>{appToastRemoveTimer=null,appToast===toast&&(appToast=null),toast.remove()},180)},hideAfter),null}let bridgeRequestSeq=0,pendingMtop={},pendingMtopStreams={},pendingUserInfo={};function callMtop(params,succ,fail2){let id=++bridgeRequestSeq;pendingMtop[id]={succ,fail:fail2};let post=params.post,rawTimeout=params.timeout??params.timer,timeout=typeof rawTimeout=="number"?rawTimeout:typeof rawTimeout=="string"&&rawTimeout.trim()!==""?Number(rawTimeout):void 0,payload={...params,data:params.data!==void 0?params.data:params.param??{},method:params.method??(post===!0||post===1||post==="1"||post==="true"?"POST":"GET"),env:params.env??(/(^|\.)wapa\.taobao\.com$/i.test(location.hostname)?"pre":"online"),...Number.isFinite(timeout)&&{timeout}};window.postMessage({source:SRC,type:"mtop",requestId:id,payload},"*"),log2("mtop 代发 →",params.api)}function callMtopAsync(params){return new Promise((resolve2,reject)=>callMtop(params,resolve2,reject))}function callMtopStream(params,succ,fail2){let sessionId=typeof params.id=="string"?params.id:String(params.id??""),request=params.request&&typeof params.request=="object"?params.request:null;if(!sessionId||!request||typeof request.api!="string"){fail2?.("invalid mtop_stream params");return}let requestId=++bridgeRequestSeq;pendingMtopStreams[requestId]={sessionId},window.postMessage({source:SRC,type:"mtopStream",requestId,payload:{...request,timeout:params.timeout,method:params.method??request.method,env:/(^|\.)wapa\.taobao\.com$/i.test(location.hostname)?"pre":"online"}},"*"),succ?.({}),log2("mtop 流式代发 →",request.api)}function callUserInfo(fallback,succ){if(fallback.userId){succ?.(fallback);return}let requestId=++bridgeRequestSeq,timer=setTimeout(()=>{let pending=pendingUserInfo[requestId];pending&&(delete pendingUserInfo[requestId],pending.succ?.(pending.fallback))},1e3);pendingUserInfo[requestId]={fallback,succ,timer},window.postMessage({source:SRC,type:"userInfo",requestId},"*")}function emitMtopStreamEvent(sessionId,eventType,data){let detail=data&&typeof data=="object"?{...data,eventType}:{data,eventType};document.dispatchEvent(new CustomEvent(`mtop_stream${sessionId}`,{detail}))}function createUploadId(){try{if(typeof crypto.randomUUID=="function")return crypto.randomUUID()}catch{}return`${Date.now()}-${Math.random().toString(36).slice(2)}`}function pickDirectUploadTarget(response){if(!response||typeof response!="object")return null;let data=response.data;if(data?.success===!1)return null;let result=data?.result,target=Array.isArray(result?.urls)?result.urls[0]:void 0;if(!target||typeof target!="object")return null;let item=target;if(typeof item.put!="string"||!item.put||typeof item.get!="string"||!item.get)return null;let rawHeaders=item.putHeaders&&typeof item.putHeaders=="object"?item.putHeaders:{},putHeaders=Object.fromEntries(Object.entries(rawHeaders).map(([key,value])=>[key,String(value)]));return{put:item.put,get:item.get,putHeaders}}async function uploadImage(file2){let uploader=config2.imagePicker;if(!uploader)throw new Error("图片上传能力未配置");let env=/(^|\.)wapa\.taobao\.com$/i.test(location.hostname)?"pre":"online",response=await callMtopAsync({api:uploader.api,v:uploader.version,method:"POST",env,timeout:6e4,data:{fcId:uploader.fcId,fcGroup:uploader.fcGroup,fcName:uploader.uploadUrlFunction,fcData:JSON.stringify({requestType:"url",mimes:[file2.type||"image/jpeg"],prefix:uploader.prefix,region:uploader.region,uploadNumber:1}),fcConfig:JSON.stringify({timeout:6e4,disasterRecover:!0})}}),target=pickDirectUploadTarget(response);if(!target)throw new Error("获取图片上传地址失败");let uploadUrl=`${target.put}${target.put.includes("?")?"&":"?"}getAvatar=1`,uploadResponse=await fetch(uploadUrl,{method:"PUT",headers:target.putHeaders,body:file2});if(uploadResponse.status!==200)throw new Error(`图片直传失败: HTTP ${uploadResponse.status}`);return target.get}function openImagePicker(callbackCommandFn){let input=document.createElement("input");input.type="file",input.accept="image/*",input.style.display="none";let settled=!1,finish=()=>{settled=!0,input.remove()};input.addEventListener("cancel",finish,{once:!0}),input.addEventListener("change",()=>{let file2=input.files?.[0];if(!file2){finish();return}if(!file2.type.startsWith("image/")){finish(),console.error(TAG,"仅支持选择图片文件");return}uploadImage(file2).then(pic=>{typeof callbackCommandFn=="function"&&callbackCommandFn({pic,uuid:createUploadId(),timeStamp:Date.now()}),log2("图片选择并上传完成:",pic)}).catch(error48=>console.error(TAG,"图片上传失败:",error48)).finally(finish)},{once:!0}),(document.body??document.documentElement).appendChild(input),input.click(),window.addEventListener("focus",()=>{setTimeout(()=>{!settled&&!input.files?.length&&finish()},1e3)},{once:!0})}function showPaymentDialog(api,params,succeed,failed){document.querySelector('[data-mearl-payment-dialog="true"]')?.remove();let overlay=document.createElement("div");overlay.setAttribute("data-mearl-payment-dialog","true"),Object.assign(overlay.style,{position:"fixed",inset:"0",zIndex:"2147483647",display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.5)"});let card=document.createElement("div");Object.assign(card.style,{background:"#fff",borderRadius:"12px",padding:"24px",width:"300px",textAlign:"center",fontFamily:"system-ui, sans-serif"});let title=document.createElement("div");Object.assign(title.style,{fontSize:"17px",fontWeight:"600",marginBottom:"8px"}),title.textContent="支付确认";let desc=document.createElement("div");Object.assign(desc.style,{fontSize:"14px",color:"#666",marginBottom:"20px"}),desc.textContent=`模拟 ${api} 支付,请选择操作`;let btnRow=document.createElement("div");Object.assign(btnRow.style,{display:"flex",gap:"12px"});let btnBase=(text,bg,color,action)=>{let btn=document.createElement("button");return btn.textContent=text,btn.setAttribute("data-mearl-action",action),Object.assign(btn.style,{flex:"1",padding:"10px 0",border:"none",borderRadius:"8px",fontSize:"15px",fontWeight:"500",cursor:"pointer",background:bg,color}),btn},confirmBtn=btnBase("完成支付","#1677ff","#fff","payment-confirm"),cancelBtn=btnBase("取消支付","#f5f5f5","#333","payment-cancel"),cleanup=()=>{overlay.remove()};confirmBtn.addEventListener("click",()=>{cleanup(),log2("用户完成支付",api),succeed(api==="wx.requestPayment"?{errMsg:"requestPayment:ok"}:{ResultStatus:"9000",resultStatus:"9000"})}),cancelBtn.addEventListener("click",()=>{cleanup(),log2("用户取消支付",api),failed(api==="wx.requestPayment"?{errMsg:"requestPayment:fail cancel"}:{ResultStatus:"6001",resultStatus:"6001"})}),btnRow.appendChild(cancelBtn),btnRow.appendChild(confirmBtn),card.appendChild(title),card.appendChild(desc),card.appendChild(btnRow),overlay.appendChild(card),(document.body??document.documentElement).appendChild(overlay)}function showMiniProgramActionDialog(action,params,confirmed,cancelled){document.querySelector('[data-mearl-mini-program-dialog="true"]')?.remove();let overlay=document.createElement("div");overlay.setAttribute("data-mearl-mini-program-dialog","true"),overlay.setAttribute("data-mearl-mini-program-action",action),Object.assign(overlay.style,{position:"fixed",inset:"0",zIndex:"2147483647",display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.5)"});let card=document.createElement("div");Object.assign(card.style,{background:"#fff",borderRadius:"12px",padding:"24px",width:"300px",textAlign:"center",fontFamily:"system-ui, sans-serif"});let title=document.createElement("div");Object.assign(title.style,{fontSize:"17px",fontWeight:"600",marginBottom:"8px"}),title.textContent=action==="navigateMiniProgram"?"打开其他小程序":"订阅消息";let desc=document.createElement("div");Object.assign(desc.style,{fontSize:"14px",color:"#666",marginBottom:"20px"});let targetTitle=params.title?.trim()||"其他";desc.textContent=action==="navigateMiniProgram"?`即将打开“${targetTitle}”小程序,是否继续?`:"模拟微信订阅消息授权,请选择操作";let btnRow=document.createElement("div");Object.assign(btnRow.style,{display:"flex",gap:"12px"});let createButton=(text,background,color,actionName)=>{let button=document.createElement("button");return button.textContent=text,button.setAttribute("data-mearl-action",actionName),Object.assign(button.style,{flex:"1",padding:"10px 0",border:"none",borderRadius:"8px",fontSize:"15px",fontWeight:"500",cursor:"pointer",background,color}),button},confirmButton=createButton(action==="navigateMiniProgram"?"确定":"允许","#1677ff","#fff","mini-program-confirm"),cancelButton=createButton("取消","#f5f5f5","#333","mini-program-cancel"),cleanup=()=>overlay.remove();confirmButton.addEventListener("click",()=>{cleanup();let result=action==="navigateMiniProgram"?{errMsg:"navigateToMiniProgram:ok"}:{result:"SUCCESS",data:{totalCount:1,acceptCount:1}};log2("用户确认小程序原生能力",action,params.appId??params.scene??""),confirmed(result)}),cancelButton.addEventListener("click",()=>{cleanup();let result=action==="navigateMiniProgram"?{errMsg:"navigateToMiniProgram:fail cancel"}:{result:"CLOSE_BY_USER"};log2("用户取消小程序原生能力",action),cancelled(result)}),btnRow.appendChild(cancelButton),btnRow.appendChild(confirmButton),card.appendChild(title),card.appendChild(desc),card.appendChild(btnRow),overlay.appendChild(card),(document.body??document.documentElement).appendChild(overlay)}function handleMessage(msg){if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_MTOP_RESPONSE"){let pending=pendingMtop[msg.requestId];if(!pending)return!0;delete pendingMtop[msg.requestId];let result=msg.result;return result?.success?pending.succ?.(result.response):pending.fail?.(result?.error??"mtop delegate failed"),!0}if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_USER_INFO_RESPONSE"){let requestId=msg.requestId,pending=pendingUserInfo[requestId];if(!pending)return!0;delete pendingUserInfo[requestId],clearTimeout(pending.timer);let result=msg.result,response=result?.success&&result.response&&typeof result.response=="object"?result.response:{};return pending.succ?.({...pending.fallback,...response}),!0}if(msg.source==="mearl-content"&&msg.type==="APP_BRIDGE_MTOP_STREAM_EVENT"){let requestId=msg.requestId,pending=pendingMtopStreams[requestId];if(!pending)return!0;let eventType=msg.eventType;return emitMtopStreamEvent(pending.sessionId,eventType,msg.data),(eventType==="onFinish"||eventType==="onError")&&delete pendingMtopStreams[requestId],!0}return!1}return{showAppToast,callMtop,callMtopStream,callUserInfo,openImagePicker,showPaymentDialog,showMiniProgramActionDialog,handleMessage}}function installAppProfileBridgeProtocol(config2,environment,host){let{w,SRC,TAG,isTop,log:log2}=environment,{pageTransport,systemBars,requestOpen,requestClose,requestCloseAll,requestContainerData}=host,{showAppToast,callMtop,callMtopStream,callUserInfo,openImagePicker,showPaymentDialog,showMiniProgramActionDialog}=pageTransport,{applyNavigationBarState,applyStatusBarState,syncSimulatedTitleBar}=systemBars,NOT_IMPLEMENTED_PAYLOAD=JSON.stringify({ret:["HY_FAILED"],msg:"not implemented"}),FPT_STORAGE_KEY=`__mearl_app_fpt__:${config2.profile}`,CALENDAR_STORAGE_KEY=`__mearl_app_calendar_events__:${config2.profile}`,unsupportedNativeInputNotified=!1,stopNetworkQualityMonitor=null,simulatedPageHidden=!1,simulatedVisibilityInstalled=!1,hasPendingMiniProgramBackData=!1,pendingMiniProgramBackData,notificationListeners=new Map,megaListenerSeq=0,megaBroadcastListeners=new Map,megaLifeCycleListeners=new Set,megaPageCloseListeners=new Set,megaSystemBackListener=null,megaKVMutationVersion=0,MEGA_KV_TOTAL_SIZE=5*1024*1024,MEGA_KV_STORAGE_KEY=`__mearl_mega_kv__:${config2.profile}`;function readMegaKVStorage(){let storage=new Map;try{let parsed=JSON.parse(localStorage.getItem(MEGA_KV_STORAGE_KEY)??"{}");if(!parsed||typeof parsed!="object"||Array.isArray(parsed))return storage;for(let[bizId,rawEntries]of Object.entries(parsed)){if(!rawEntries||typeof rawEntries!="object"||Array.isArray(rawEntries))continue;let entries=new Map;for(let[key,value]of Object.entries(rawEntries))typeof value=="string"&&entries.set(key,value);storage.set(bizId,entries)}}catch{}return storage}let megaKVStorage=readMegaKVStorage();function megaKVSnapshot(){let snapshot={};for(let[bizId,values]of megaKVStorage)snapshot[bizId]=Object.fromEntries(values);return snapshot}function persistMegaKVStorage(){try{localStorage.setItem(MEGA_KV_STORAGE_KEY,JSON.stringify(megaKVSnapshot()))}catch{}}function replaceMegaKVStorage(value){if(!(!value||typeof value!="object"||Array.isArray(value))){megaKVStorage.clear();for(let[bizId,rawEntries]of Object.entries(value)){if(!rawEntries||typeof rawEntries!="object"||Array.isArray(rawEntries))continue;let entries=new Map;for(let[key,entryValue]of Object.entries(rawEntries))typeof entryValue=="string"&&entries.set(key,entryValue);megaKVStorage.set(bizId,entries)}persistMegaKVStorage()}}function applyMegaKVMutation(payload){let operation=typeof payload.operation=="string"?payload.operation:"",bizId=typeof payload.bizId=="string"?payload.bizId:"",key=typeof payload.key=="string"?payload.key:"";if(bizId){if(operation==="set"&&key&&typeof payload.value=="string"){let entries=megaKVStorage.get(bizId)??new Map;entries.set(key,payload.value),megaKVStorage.set(bizId,entries)}else if(operation==="remove"&&key){let entries=megaKVStorage.get(bizId);entries?.delete(key),entries?.size===0&&megaKVStorage.delete(bizId)}else if(operation==="clear")megaKVStorage.delete(bizId);else return;megaKVMutationVersion+=1,persistMegaKVStorage()}}function emitMegaCallback(callback,value){callback&&setTimeout(()=>callback(value),0)}function megaBroadcastBizId(value){return typeof value=="string"&&value?value:"__MEGA_GLOBAL_MESSAGE__"}function dispatchMegaBroadcast(payload){let bizId=megaBroadcastBizId(payload.bizId),eventName=typeof payload.eventName=="string"?payload.eventName:"";if(eventName)for(let listener of Array.from(megaBroadcastListeners.values()))listener.bizId!==bizId||listener.eventName!==eventName||(listener.once&&megaBroadcastListeners.delete(listener.id),emitMegaCallback(listener.callback,{statusCode:1,type:"onEvent",data:{detail:payload.detail}}),listener.once&&emitMegaCallback(listener.callback,{statusCode:99,type:"finish"}))}let documentPrototype=typeof Document=="function"?Document.prototype:null,nativeHiddenDescriptor=documentPrototype?Object.getOwnPropertyDescriptor(documentPrototype,"hidden"):void 0,nativeVisibilityDescriptor=documentPrototype?Object.getOwnPropertyDescriptor(documentPrototype,"visibilityState"):void 0;function installSimulatedVisibilityState(){if(!simulatedVisibilityInstalled){simulatedVisibilityInstalled=!0;try{Object.defineProperty(document,"hidden",{configurable:!0,get:()=>simulatedPageHidden||!!(nativeHiddenDescriptor?.get?.call(document)??!1)}),Object.defineProperty(document,"visibilityState",{configurable:!0,get:()=>simulatedPageHidden?"hidden":nativeVisibilityDescriptor?.get?.call(document)??"visible"})}catch{}}}function dispatchPageTransitionEvent(type){try{let event=typeof PageTransitionEvent=="function"?new PageTransitionEvent(type,{persisted:!1}):new Event(type);window.dispatchEvent(event)}catch{}}function dispatchActiveEvents(){for(let name of config2.activeEvents)try{document.dispatchEvent(new Event(name))}catch{}}function handlePageVisibility(hidden){if(hidden===simulatedPageHidden)return;installSimulatedVisibilityState(),simulatedPageHidden=hidden;let lifeCycleType=hidden?"onPageDisappear":"onPageAppear";for(let callback of megaLifeCycleListeners)emitMegaCallback(callback,{statusCode:1,type:lifeCycleType,data:{pageId:location.href}});try{document.dispatchEvent(new Event("visibilitychange"))}catch{}if(hidden){try{window.dispatchEvent(new Event("blur"))}catch{}dispatchPageTransitionEvent("pagehide");return}dispatchPageTransitionEvent("pageshow");try{window.dispatchEvent(new Event("focus"))}catch{}dispatchActiveEvents()}function resolveWindowFunction(path19){let parts=path19.split(".").filter(Boolean),owner=w;for(let index=0;index<parts.length-1;index+=1){let next=owner[parts[index]];if(!next||typeof next!="object")return null;owner=next}let fn=owner[parts[parts.length-1]];return typeof fn=="function"?fn.bind(owner):null}function handleNativeBack(){let megaHandled=!1;for(let callback of megaPageCloseListeners)megaHandled=!0,emitMegaCallback(callback,{statusCode:1,type:"onClose",data:{}});if(megaSystemBackListener&&(megaHandled=!0,emitMegaCallback(megaSystemBackListener,{statusCode:1,type:"onSuccess",data:{}})),megaHandled)return!0;let nativeBack=config2.nativeBack;if(!nativeBack)return!1;if(nativeBack.handler){let handler=resolveWindowFunction(nativeBack.handler);if(!handler)return!1;try{return handler(),!0}catch{return!1}}let controlled=!1;if(nativeBack.controlFunction){let control=resolveWindowFunction(nativeBack.controlFunction);if(!control)return!1;try{controlled=control()===!0}catch{return!1}if(!controlled)return!1}if(!nativeBack.event)return controlled;try{let event=new Event(nativeBack.event,{cancelable:!0});return document.dispatchEvent(event),controlled||event.defaultPrevented}catch{return controlled}}function handleAppMessage(message){if(!message||typeof message!="object")return;let payload=message;if(payload.kind==="megaBroadcast"){dispatchMegaBroadcast(payload);return}if(payload.kind==="megaKVStorage"){applyMegaKVMutation(payload);return}if(payload.kind==="legacyBroadcast"&&typeof payload.instanceId=="string"){try{let event=new CustomEvent(`Broadcast.Message.${payload.instanceId}`,{detail:payload.message});Object.defineProperty(event,"param",{configurable:!0,value:payload.message}),document.dispatchEvent(event)}catch{}return}if(payload.kind==="notification"&&typeof payload.name=="string"){let listener=notificationListeners.get(payload.name);listener&&setTimeout(()=>listener(payload.data),0);return}if(!(payload.kind!=="message"||!config2.messageEvent))try{document.dispatchEvent(new CustomEvent(config2.messageEvent,{detail:{data:payload.data}}))}catch{}}function sendAppMessage(message){if(isTop){handleAppMessage(message);return}window.top?.postMessage({source:SRC,type:"appMessageToOpener",message},"*")}function applyRuntimeResponses(responses){let current=config2.actions.responses??{};for(let[api,response]of Object.entries(responses))!response||typeof response!="object"||Array.isArray(response)||(current[api]=response);config2.actions.responses=current}function parseFpt(value){let entries=[],normalized=value.trim();if(!normalized)return entries;let pattern=/([0-9A-Za-z._-]+)\(([0-9A-Za-z._-]+)\)/g,consumed="";for(let match of normalized.matchAll(pattern))consumed+=match[0],entries.push([match[1],match[2]]);return consumed===normalized?entries:[]}function setFptEntry(entries,key,value){entries.delete(key),entries.set(key,value)}function readInitialFptEntries(){let entries=new Map;try{for(let[key,value]of parseFpt(sessionStorage.getItem(FPT_STORAGE_KEY)??""))setFptEntry(entries,key,value)}catch{}try{let currentFpt=new URL(location.href).searchParams.get("fpt")??"";for(let[key,value]of parseFpt(currentFpt))setFptEntry(entries,key,value)}catch{}return entries}let fptEntries=readInitialFptEntries();function serializeFpt(entries){return Array.from(entries,([key,value])=>`${key}(${value})`).join("")}function persistFpt(){try{let value=serializeFpt(fptEntries);value?sessionStorage.setItem(FPT_STORAGE_KEY,value):sessionStorage.removeItem(FPT_STORAGE_KEY)}catch{}}function decorateUrlWithFpt(rawUrl){let targetUrl=mapScheme(rawUrl)??rawUrl;if(fptEntries.size===0)return targetUrl;try{let url2=new URL(targetUrl,location.href);if(url2.protocol!=="http:"&&url2.protocol!=="https:")return targetUrl;let merged=new Map(fptEntries);for(let[key,value]of parseFpt(url2.searchParams.get("fpt")??""))setFptEntry(merged,key,value);return url2.searchParams.set("fpt",serializeFpt(merged)),url2.href}catch{return targetUrl}}function classify(api){let a=config2.actions;return a.open.includes(api)?"open":a.close.includes(api)?"close":a.title.includes(api)?"title":a.navigationBar?.includes(api)?"navigationBar":a.statusBar?.includes(api)?"statusBar":a.systemInfo.includes(api)?"systemInfo":a.mtop.includes(api)?"mtop":a.kvGet?.includes(api)?"kvGet":a.kvSet?.includes(api)?"kvSet":a.kvDelete?.includes(api)?"kvDelete":a.pageContext?.includes(api)?"pageContext":a.responses&&Object.prototype.hasOwnProperty.call(a.responses,api)?"response":a.behaviors&&Object.prototype.hasOwnProperty.call(a.behaviors,api)?a.behaviors[api]:a.noop.includes(api)?"noop":"unknown"}function pickUrl(params){if(!params||typeof params!="object")return null;let p=params,candidates=[p.url,p.data?.url,p.param?.url,p.value?.params?.url];for(let c of candidates)if(typeof c=="string"&&c)return c;return null}function pickCloseData(params){if(params&&typeof params=="object"){let p=params;if("data"in p&&p.data!==void 0)return p.data;if(Object.keys(p).length>0)return p}}function decodeCookieValue2(raw){let value=raw;for(let i=0;i<2;i+=1)try{let decoded=decodeURIComponent(value);if(decoded===value)break;value=decoded}catch{break}return value.replace(/\\u([0-9a-f]{4})/gi,(_match,hex3)=>String.fromCharCode(Number.parseInt(hex3,16)))}function readCookie(name){let prefix=`${name}=`,pair=document.cookie.split(";").map(value=>value.trim()).find(value=>value.startsWith(prefix));return pair?decodeCookieValue2(pair.slice(prefix.length)):""}function readUserCookie(name){let pageUserCookie=w.userCookie;if(!pageUserCookie||typeof pageUserCookie!="object")return"";let value=pageUserCookie[name];return typeof value=="string"?decodeCookieValue2(value):""}function readFirstUserCookie(names){for(let name of names){let value=readCookie(name)||readUserCookie(name);if(value&&value!=="null")return value}return""}let cbSeq=0,callbacks={};function stashCallback(fn){if(typeof fn!="function")return 0;let id=++cbSeq;return callbacks[id]=fn,id}function extractQuery(url2,param){let q=url2.indexOf("?");if(q===-1)return null;for(let pair of url2.slice(q+1).split("&")){let eq=pair.indexOf("=");if(eq>0&&pair.slice(0,eq)===param)return pair.slice(eq+1)}return null}function matchesHostSuffix(hostname3,suffixes){if(!suffixes?.length)return!0;let normalizedHost=hostname3.toLowerCase().replace(/\.$/,"");return suffixes.some(value=>{let suffix=value.toLowerCase().replace(/^\./,"").replace(/\.$/,"");return normalizedHost===suffix||normalizedHost.endsWith(`.${suffix}`)})}function matchesRouteHost(rawUrl,suffixes){if(!suffixes?.length)return!0;try{let parsed=new URL(rawUrl,location.href),hostname3=parsed.protocol==="http:"||parsed.protocol==="https:"?parsed.hostname:location.hostname;return matchesHostSuffix(hostname3,suffixes)}catch{return matchesHostSuffix(location.hostname,suffixes)}}function resolveSchemeValue(raw,depth){if(depth>3)return null;let value=raw;try{value=decodeURIComponent(raw)}catch{}if(value.startsWith("{"))try{let found=pickUrl(JSON.parse(value));if(!found)return null;value=found}catch{return null}if(/^https?:/i.test(value))return value;if(/^[a-z][a-z0-9+.-]*:/i.test(value))return mapScheme(value,depth+1);let nestedUrl=extractQuery(value,"url");return nestedUrl?resolveSchemeValue(nestedUrl,depth+1):null}function mapScheme(url2,depth=0){if(depth>3)return null;let lower=url2.toLowerCase();for(let rule of config2.schemes){if(!matchesRouteHost(url2,rule.hostSuffixes))continue;let normalizedMatch=rule.match.toLowerCase(),matchedUrl=url2;if(!lower.startsWith(normalizedMatch)){if(!normalizedMatch.startsWith("/"))continue;try{let parsed=new URL(url2,location.href);if(matchedUrl=`${parsed.pathname}${parsed.search}${parsed.hash}`,!matchedUrl.toLowerCase().startsWith(normalizedMatch))continue}catch{continue}}if(rule.targetPath){let suffix=matchedUrl.slice(rule.match.length);if(suffix&&!suffix.startsWith("?")&&!suffix.startsWith("#"))continue;try{let source=new URL(matchedUrl),origin=location.origin;if(rule.targetHostPrefix){let hostname3=location.hostname.toLowerCase(),domainSuffix=hostname3==="wapa.taobao.com"||hostname3.endsWith(".wapa.taobao.com")?"wapa.taobao.com":hostname3==="m.taobao.com"||hostname3.endsWith(".m.taobao.com")?"m.taobao.com":"";domainSuffix&&(origin=`https://${rule.targetHostPrefix}.${domainSuffix}`)}let target=new URL(rule.targetPath,`${origin}/`);target.search=source.search,target.hash=source.hash;for(let[key,value]of Object.entries(rule.targetParams??{}))target.searchParams.has(key)||target.searchParams.set(key,value);return target.href}catch{return null}}if(!rule.param)continue;let raw=extractQuery(matchedUrl,rule.param);if(!raw)return null;let resolved=resolveSchemeValue(raw,depth);if(!resolved||!rule.useCurrentOrigin)return resolved;try{let target=new URL(resolved);return`${location.origin}${target.pathname}${target.search}${target.hash}`}catch{return resolved}}return null}function firstRouteParam(params,names){for(let name of names){let value=params.get(name);if(value)return value}return""}function resolvePaymentCallbackUrl(rawUrl,paymentPageUrl,useCurrentOrigin,forwardParams,resultParam){if(!rawUrl)return null;try{let target=new URL(rawUrl,location.href);for(let name of forwardParams){let value=paymentPageUrl.searchParams.get(name);value&&!target.searchParams.get(name)&&target.searchParams.set(name,value)}resultParam&&target.searchParams.set(resultParam.name,JSON.stringify(resultParam.value));let resolved=useCurrentOrigin&&(target.protocol==="http:"||target.protocol==="https:")?`${location.origin}${target.pathname}${target.search}${target.hash}`:target.href;return decorateUrlWithFpt(resolved)}catch{return null}}function openPaymentCallback(rawUrl,paymentPageUrl,useCurrentOrigin,forwardParams,resultParam){let target=resolvePaymentCallbackUrl(rawUrl,paymentPageUrl,useCurrentOrigin,forwardParams,resultParam);target&&requestOpen(target,0,!1)}function handleMiniProgramPaymentRoute(rawUrl){let paymentPageUrl;try{paymentPageUrl=new URL(rawUrl,location.href)}catch{return!1}let normalizedPathname=paymentPageUrl.pathname.replace(/\/+$/,"")||"/",rule=config2.miniProgram?.paymentRoutes?.find(candidate=>(candidate.pathname.replace(/\/+$/,"")||"/")===normalizedPathname&&matchesHostSuffix(paymentPageUrl.hostname,candidate.hostSuffixes));if(!rule)return!1;let successUrl=firstRouteParam(paymentPageUrl.searchParams,rule.successUrlParams),failureUrl=firstRouteParam(paymentPageUrl.searchParams,rule.failureUrlParams),forwardParams=rule.forwardParams??[],useCurrentOrigin=rule.useCurrentOrigin===!0,paymentParams;try{let parsed=JSON.parse(paymentPageUrl.searchParams.get(rule.paymentParamsParam)??"");if(!parsed||typeof parsed!="object"||Array.isArray(parsed))throw new Error;paymentParams=parsed,paymentParams.timeStamp!==void 0&&(paymentParams.timeStamp=String(paymentParams.timeStamp))}catch{return log2("微信支付参数解析失败,执行失败回跳",rawUrl),openPaymentCallback(failureUrl,paymentPageUrl,useCurrentOrigin,forwardParams),!0}return showPaymentDialog("wx.requestPayment",paymentParams,result=>{openPaymentCallback(successUrl,paymentPageUrl,useCurrentOrigin,forwardParams,rule.successResultParam?{name:rule.successResultParam,value:result}:void 0)},()=>{openPaymentCallback(failureUrl,paymentPageUrl,useCurrentOrigin,forwardParams)}),!0}function finishMiniProgramNativeRoute(action,result,storageId){handleResume({data:action==="subscribeMessage"?result:void 0,storageId,callbackId:0,final:!0})}function handleMiniProgramNativeRoute(rawUrl){let nativePageUrl;try{nativePageUrl=new URL(rawUrl,location.href)}catch{return!1}let normalizedPathname=nativePageUrl.pathname.replace(/\/+$/,"")||"/",action=nativePageUrl.searchParams.get("action");if(action!=="navigateMiniProgram"&&action!=="subscribeMessage"||!config2.miniProgram?.nativeRoutes?.find(candidate=>(candidate.pathname.replace(/\/+$/,"")||"/")===normalizedPathname&&candidate.actions.includes(action)&&matchesHostSuffix(nativePageUrl.hostname,candidate.hostSuffixes)))return!1;let params={};nativePageUrl.searchParams.forEach((value,name)=>{params[name]=value});let storageId=nativePageUrl.searchParams.get("__storage_id");return handlePageVisibility(!0),showMiniProgramActionDialog(action,params,result=>finishMiniProgramNativeRoute(action,result,storageId),result=>finishMiniProgramNativeRoute(action,result,storageId)),!0}function handleMiniProgramPostMessage(data){let rules=config2.miniProgram?.messageRules;if(!rules?.length)return!1;let messages=Array.isArray(data)?data:[data],handled=!1;for(let value of messages){if(!value||typeof value!="object"||Array.isArray(value))continue;let message=value;if(typeof message.type!="string")continue;let rule=rules.find(candidate=>candidate.type===message.type&&matchesHostSuffix(location.hostname,candidate.hostSuffixes));rule&&(handled=!0,rule.action==="stageBackData"?(pendingMiniProgramBackData=message.data,hasPendingMiniProgramBackData=!0):rule.action==="closeAll"&&(isTop?requestCloseAll(message.data)||requestClose(message.data):window.top?.postMessage({source:SRC,type:"closeAll",data:message.data},"*")))}return handled}function matchesImagePickerScheme(url2){let lower=url2.toLowerCase();return config2.imagePicker?.schemes.some(scheme=>lower.startsWith(scheme))===!0}function handleMaybeScheme(url2){if(typeof url2!="string"||!url2||!/^[a-z][a-z0-9+.-]*:/i.test(url2)||/^(https?|about|blob|data|javascript):/i.test(url2))return!1;let mapped=mapScheme(url2);return mapped?(log2("scheme 映射为 H5 open:",url2,"→",mapped),requestOpen(decorateUrlWithFpt(mapped),0,!1)):log2("外部 scheme 已拦截(真机表现为唤端):",url2),!0}function handleResume(msg){let{data,storageId,callbackId,final,gotoEvent,silent}=msg;if(gotoEvent&&dispatchGotoEvent(data),callbackId&&callbacks[callbackId]){if(!silent)try{callbacks[callbackId]({backdata:data})}catch(e){console.error(TAG,"callbackCommand 执行失败",e)}final&&delete callbacks[callbackId]}if(data&&typeof data=="object"&&storageId)try{let d={...data};d.__$data=!0,d.__$storageId=String(storageId),localStorage.setItem("XPI_BACK_LISTENER_DATA_STORAGE",JSON.stringify(d))}catch{}simulatedPageHidden?handlePageVisibility(!1):dispatchActiveEvents()}function dispatchGotoEvent(data){if(data!==void 0)try{document.dispatchEvent(new CustomEvent("WV.GotoEvent",{detail:{data}}))}catch{}}function sendUserTrack(params){if(!params||typeof params!="object")return;let p=params,logkey=typeof p.logkey=="string"?p.logkey:"",gmkey=typeof p.gmkey=="string"?p.gmkey:typeof p.event=="string"?p.event:"",gokey=typeof p.gokey=="string"?p.gokey:"";if(!/^\/[0-9A-Za-z._/-]+$/.test(logkey)||!/^[0-9A-Za-z_-]+$/.test(gmkey))return;let pageWindow=w,aplus=pageWindow.goldlog??pageWindow.aplus;if(typeof aplus?.send!="function")return;let configuredHost=aplus.getMetaInfo?.("aplus-rhost-g"),host2=(typeof configuredHost=="string"?configuredHost:"gm.mmstat.com").replace(/^https?:\/\//i,"").replace(/^\/\//,"").split("/")[0];if(!(!host2||!/^[0-9A-Za-z.-]+$/.test(host2)))try{aplus.send(`//${host2}${logkey}`,`gmkey=${encodeURIComponent(gmkey)}&gokey=${gokey}&ts=${Date.now()}`,"GET")}catch{}}function readNetworkState(){let connection=navigator.connection;return navigator.onLine?connection?.type==="wifi"?"wifi":connection?.effectiveType??"unknown":"fail"}function networkTypeNumber(state){return{wifi:2,"slow-2g":3,"2g":3,"3g":4,"4g":5,"5g":6,fail:7}[state]??0}function calendarTimestamp(value){if(typeof value=="number"&&Number.isFinite(value))return value;if(typeof value!="string"||!value.trim())return null;let numeric=Number(value);if(Number.isFinite(numeric)&&numeric>0)return numeric;let parsed=Date.parse(value);return Number.isFinite(parsed)?parsed:null}function calendarEventFromParams(params){let p=params&&typeof params=="object"?params:{},stringValue=(...values)=>values.find(value=>typeof value=="string")??"";return{title:stringValue(p.calendar_title,p.title),startTime:calendarTimestamp(p.calendar_start_ms??p.start_time??p.calendar_start_datetime),endTime:calendarTimestamp(p.calendar_end_ms??p.end_time??p.calendar_end_datetime),url:stringValue(p.calendar_url,p.url),note:stringValue(p.calendar_note,p.note),location:stringValue(p.calendar_location,p.location)}}function readCalendarEvents(){try{let parsed=JSON.parse(localStorage.getItem(CALENDAR_STORAGE_KEY)??"[]");return Array.isArray(parsed)?parsed.filter(event=>event!==null&&typeof event=="object"&&typeof event.title=="string"):[]}catch{return[]}}function writeCalendarEvents(events){try{return localStorage.setItem(CALENDAR_STORAGE_KEY,JSON.stringify(events)),!0}catch{return!1}}function sameCalendarEvent(stored,candidate){return candidate.url?stored.url===candidate.url:!!candidate.title&&stored.title===candidate.title&&(candidate.startTime===null||stored.startTime===candidate.startTime)&&(candidate.endTime===null||stored.endTime===candidate.endTime)}function calendarEventResponse(event){return{title:event.title,start_time:event.startTime,end_time:event.endTime,url:event.url,note:event.note,location:event.location}}function dispatch(api,params,onSuccess,onFailure,callbackCommandFn){let succeed=value=>{onSuccess&&setTimeout(()=>onSuccess(value),0)},failed=reason=>{onFailure&&setTimeout(()=>onFailure(reason),0)},kind=classify(api),silent=config2.actions.silent?.includes(api)===!0;if(silent||log2("桥调用",api,`(${kind})`,params??""),kind==="open"||kind==="navigate"){let p=params&&typeof params=="object"?params:{},navigationData=p.data&&typeof p.data=="object"?p.data:void 0;if(kind==="navigate"&&navigationData?.type==="back"){isTop?requestCloseAll(navigationData.data,!0)||dispatchGotoEvent(navigationData.data):window.top?.postMessage({source:SRC,type:"closeAll",data:navigationData.data,gotoEvent:!0},"*"),succeed({});return}let url2=pickUrl(params);if(!url2){failed("missing url");return}if(matchesImagePickerScheme(url2)){openImagePicker(callbackCommandFn),succeed({});return}if(handleMiniProgramPaymentRoute(url2)){succeed({});return}if(handleMiniProgramNativeRoute(url2)){succeed({});return}let wd=p.useWebdialog===!0||p.useWebdialog==="true"||p.useWebdialog===1||p.useWebdialog==="1";requestOpen(decorateUrlWithFpt(url2),stashCallback(callbackCommandFn),wd,p),succeed({});return}if(kind==="closeAll"){isTop?requestCloseAll(void 0):window.top?.postMessage({source:SRC,type:"closeAll"},"*"),succeed({});return}if(kind==="closeBackData"){let p=params&&typeof params=="object"?params:{};requestClose(Object.prototype.hasOwnProperty.call(p,"backdata")?p.backdata:pickCloseData(p)),succeed({});return}if(kind==="close"){if(api==="navigateBack"&&hasPendingMiniProgramBackData){let data=pendingMiniProgramBackData;pendingMiniProgramBackData=void 0,hasPendingMiniProgramBackData=!1,requestClose(data)}else requestClose(pickCloseData(params));succeed({});return}if(kind==="postMessage"){let p=params&&typeof params=="object"?params:{},data=p.data??p;handleMiniProgramPostMessage(data)||sendAppMessage({kind:"message",data}),succeed({});return}if(kind==="notifySubscribe"){let p=params&&typeof params=="object"?params:{};if(typeof p.name!="string"||!p.name){failed("missing notification name");return}onSuccess&&notificationListeners.set(p.name,onSuccess);return}if(kind==="notifyUnsubscribe"){let p=params&&typeof params=="object"?params:{};typeof p.name=="string"&&notificationListeners.delete(p.name),succeed({});return}if(kind==="notifyPost"){let p=params&&typeof params=="object"?params:{};if(typeof p.name!="string"||!p.name){failed("missing notification name");return}sendAppMessage({kind:"notification",name:p.name,data:p.data}),succeed({});return}if(kind==="sharedFileRead"||kind==="sharedFileWrite"||kind==="sharedDataGet"||kind==="sharedDataSet"){requestContainerData(kind,params&&typeof params=="object"?params:{},succeed,failed);return}if(kind==="legacyBroadcastCreate"||kind==="legacyBroadcastPost"||kind==="legacyBroadcastClose"){requestContainerData(kind,params&&typeof params=="object"?params:{},succeed,failed);return}if(kind==="title"){let title=params&&typeof params=="object"?params.title??params.name:void 0;if(typeof title=="string"&&title){systemBars.markStateExplicit();try{document.title=title,syncSimulatedTitleBar()}catch{}isTop||window.top?.postMessage({source:SRC,type:"title",title},"*")}succeed({});return}if(kind==="navigationBar"){applyNavigationBarState(api,params),succeed({});return}if(kind==="statusBar"){applyStatusBarState(params),succeed({});return}if(kind==="systemInfo"){let model=config2.globals.__DEVICE_MODEL__||"iPhone",info={language:config2.language,model,systemVersion:config2.systemVersion,statusBarHeight:config2.statusBarHeight,platform:config2.platform,brand:config2.platform==="iOS"?"Apple":"Android",client_version:config2.globals.__APP_VERSION__??"",client_type:config2.clientType};succeed(api==="WVNativeDetector.getModelInfo"?{...info,platform:model}:info);return}if(kind==="mtop"){callMtop(params??{},onSuccess,onFailure);return}if(kind==="mtopStream"){callMtopStream(params??{},succeed,failed);return}if(kind==="kvGet"||kind==="kvSet"||kind==="kvDelete"){let p=params&&typeof params=="object"?params:{},key=typeof p.key=="string"?p.key:"";if(!key){failed("missing key");return}try{let storageKey=`__mearl_app_kv__:${key}`;if(kind==="kvGet"){let stored=localStorage.getItem(storageKey);stored!==null?succeed(stored):failed(JSON.stringify({ret:["HY_FAILED"],msg:"key not found"}))}else if(kind==="kvSet"){let value=typeof p.value=="string"?p.value:p.value===void 0?"":JSON.stringify(p.value);localStorage.setItem(storageKey,value),succeed({})}else localStorage.removeItem(storageKey),succeed({})}catch{failed(JSON.stringify({ret:["HY_FAILED"],msg:"kv storage unavailable"}))}return}if(kind==="pageContext"){succeed({pageContext:void 0});return}if(kind==="memoryGet"||kind==="memorySet"||kind==="memoryDelete"){let p=params&&typeof params=="object"?params:{},key=typeof p.key=="string"?p.key:"";if(!key){failed({error_message:"missing key"});return}try{let storageKey=`__mearl_app_memory__:${key}`;if(kind==="memoryGet"){let value=sessionStorage.getItem(storageKey);succeed(value===null?{}:{value})}else if(kind==="memorySet"){let value=typeof p.value=="string"?p.value:p.value===void 0?"":JSON.stringify(p.value);sessionStorage.setItem(storageKey,value),succeed({key,success:!0})}else sessionStorage.removeItem(storageKey),succeed({key,success:!0})}catch{failed({error_message:"memory cache unavailable"})}return}if(kind==="availabilityMap"){let p=params&&typeof params=="object"?params:{},channels=Array.isArray(p.data)?p.data.filter(value=>typeof value=="string"):[];succeed({res:"success",data:Object.fromEntries(channels.map(channel=>[channel,!1]))});return}if(kind==="userInfo"){let userId=readFirstUserCookie(["unb"]),userName=readFirstUserCookie(["_w_tb_nick","_nk_","snk","tracknick"]);callUserInfo({...userId&&{userId},...userName&&{userName}},succeed);return}if(kind==="networkInfo"){let state=readNetworkState();if(api==="WVNetwork.getNetworkType"){succeed({type:{wifi:"WIFI","slow-2g":"2G","2g":"2G","3g":"3G","4g":"4G"}[state]??"UNKNOWN"});return}if(config2.profile==="alipay"||config2.profile==="koubei"){succeed({networkAvailable:state!=="fail",networkType:{wifi:"WIFI","slow-2g":"2G","2g":"2G","3g":"3G","4g":"4G",fail:"NOTREACHABLE"}[state]??"UNKNOWN"});return}let type=networkTypeNumber(state);succeed({type,state:state==="slow-2g"?"2g":state});return}if(kind==="networkQualityMonitor"){let p=params&&typeof params=="object"?params:{},action=typeof p.action=="string"?p.action:"";if(action==="add_notify_network_quality"){if(!stopNetworkQualityMonitor){let notify=()=>{try{document.dispatchEvent(new CustomEvent("WV.NETWORK_TYPE_CHANGED",{detail:{new_network_type:networkTypeNumber(readNetworkState())}}))}catch{}},connection=navigator.connection;window.addEventListener("online",notify),window.addEventListener("offline",notify),connection?.addEventListener?.("change",notify),stopNetworkQualityMonitor=()=>{window.removeEventListener("online",notify),window.removeEventListener("offline",notify),connection?.removeEventListener?.("change",notify)}}succeed({});return}if(action==="remove_notify_network_quality"){stopNetworkQualityMonitor?.(),stopNetworkQualityMonitor=null,succeed({});return}failed({error_message:"unsupported network quality monitor action"});return}if(kind==="beaconRequest"){let url2=pickUrl(params);if(!url2){failed({error_message:"missing url"});return}try{let resolved=new URL(url2,location.href);if(resolved.protocol!=="http:"&&resolved.protocol!=="https:"){failed({error_message:"unsupported request protocol"});return}let image=new Image;image.referrerPolicy="no-referrer-when-downgrade",image.src=resolved.href,succeed({})}catch{failed({error_message:"invalid url"})}return}if(kind==="calendar"){let p=params&&typeof params=="object"?params:{},events=readCalendarEvents();if(api==="store_calendar_event"){let event=calendarEventFromParams(p);if(!event.title||event.startTime===null){failed({error_message:"calendar title and start time are required"});return}let next=events.filter(stored=>!sameCalendarEvent(stored,event));if(next.push(event),!writeCalendarEvents(next)){failed({error_message:"calendar storage unavailable"});return}succeed({success:!0});return}if(api==="remove_calendar_event"){let candidate=calendarEventFromParams(p),next=events.filter(stored=>!sameCalendarEvent(stored,candidate));if(!writeCalendarEvents(next)){failed({error_message:"calendar storage unavailable"});return}succeed({success:!0,removed:events.length-next.length});return}if(api==="check_batch_calendar"){let batch=Array.isArray(p.batch)?p.batch:[];succeed({batch:batch.map(item=>{let candidate=calendarEventFromParams(item);return{...item&&typeof item=="object"?item:{},success:events.some(stored=>sameCalendarEvent(stored,candidate))}})});return}let urls=Array.isArray(p.urls)?p.urls.filter(value=>typeof value=="string"):typeof p.url=="string"?[p.url]:[],titles=Array.isArray(p.calendar_titles)?p.calendar_titles.filter(value=>typeof value=="string"):typeof p.calendar_title=="string"?[p.calendar_title]:[],matched=events.filter(event=>(urls.length===0||urls.includes(event.url))&&(titles.length===0||titles.includes(event.title)));succeed({events:matched.map(calendarEventResponse)});return}if(kind==="geolocation"){let p=params&&typeof params=="object"?params:{},windvane=api==="WVLocation.getLocation",wechat=api==="getLocation"&&config2.bridges.some(bridge=>bridge.style==="wechat"),failLocation=(errorCode,errorMsg)=>{failed({errorCode,errorMsg,...windvane&&{ret:["HY_FAILED"],errMsg:errorCode===1?"PERMISSION_DENIED":"POSITION_UNAVAILABLE",message:errorMsg},...wechat&&{errMsg:`getLocation:fail ${errorMsg}`}})};if(wechat&&p.type&&p.type!=="wgs84"){failLocation(2,`unsupported coordinate type: ${String(p.type)}`);return}if(!navigator.geolocation){failLocation(2,"geolocation unavailable");return}let locate=()=>navigator.geolocation.getCurrentPosition(position=>{let{latitude,longitude,accuracy,altitude,altitudeAccuracy,heading,speed}=position.coords,coords={latitude,longitude,accuracy,altitude,altitudeAccuracy,heading,speed};if(api==="lbs"){let provider=config2.geolocation;if(!provider){failLocation(2,"reverse geocoding unavailable");return}callMtop({api:provider.reverseGeocodeApi,v:provider.version,data:{latitude,longitude,includeGJ:1},timeout:5e3},value=>{let response=value??{},address=response.data??{};if(!Array.isArray(response.ret)||!response.ret.some(ret=>typeof ret=="string"&&ret.startsWith("SUCCESS::"))||typeof address.cityName!="string"||!address.cityName.trim()||typeof address.cityCode!="string"||!address.cityCode.trim()){failLocation(2,"reverse geocoding returned no city");return}succeed({...coords,timestamp:position.timestamp,country:address.country,province:address.province,district:address.district,city:address.cityName,cityName:address.cityName,cityCode:address.cityCode,divisionId:address.divisionId,iataCode:address.iataCode,address:address.detail})},()=>failLocation(2,"reverse geocoding failed"));return}succeed(windvane?{ret:["HY_SUCCESS"],coords,timestamp:position.timestamp}:{...coords,timestamp:position.timestamp,...wechat&&{errMsg:"getLocation:ok"}})},error48=>failLocation(error48.code,error48.message),{enableHighAccuracy:p.enableHighAccuracy===!0||p.enableHighAcuracy===!0,timeout:1e4,maximumAge:p.useCache===!1?0:3e5});navigator.permissions?.query?navigator.permissions.query({name:"geolocation"}).then(status=>{status.state==="granted"?locate():failLocation(1,"location permission not granted")}).catch(locate):locate();return}if(kind==="permission"){let p=params&&typeof params=="object"?params:{},action=typeof p.action=="string"?p.action:"",permission=typeof p.permission=="string"?p.permission:"",permissionFailed=message=>failed({error_code:-1,error_message:message});if(permission==="album"||permission==="MODIFY_AUDIO_SETTINGS"){action==="check"||action==="request"?succeed({}):permissionFailed("unsupported permission action");return}let browserPermission=permission==="mic"?"microphone":permission==="camera"?"camera":permission==="lbs"?"geolocation":"";if(!browserPermission){permissionFailed("unsupported permission");return}if(action==="check"&&navigator.permissions?.query){navigator.permissions.query({name:browserPermission}).then(status=>{status.state==="granted"?succeed({}):permissionFailed("permission not granted")}).catch(()=>permissionFailed("permission check failed"));return}if(action==="request"&&(permission==="mic"||permission==="camera")){if(!navigator.mediaDevices?.getUserMedia){permissionFailed("media permission unavailable");return}navigator.mediaDevices.getUserMedia({audio:permission==="mic",video:permission==="camera"}).then(stream=>{for(let track of stream.getTracks())track.stop();succeed({})}).catch(()=>permissionFailed("permission denied"));return}if(action==="request"&&permission==="lbs"&&navigator.geolocation){navigator.geolocation.getCurrentPosition(()=>succeed({}),()=>permissionFailed("permission denied"),{timeout:1e4});return}permissionFailed("unsupported permission action");return}if(kind==="prefetch"){let p=params&&typeof params=="object"?params:{},url2=typeof p.url=="string"?p.url:"";if(!url2){failed({code:-1,errorMsg:"url is empty"});return}let resolvedUrl;try{resolvedUrl=new URL(url2,location.href).href}catch{failed({code:-1,errorMsg:"invalid url"});return}if(!Array.from(document.querySelectorAll('link[rel="prefetch"]')).some(link=>link.href===resolvedUrl)){let link=document.createElement("link");link.rel="prefetch",link.href=url2,(document.head??document.documentElement).appendChild(link)}succeed({});return}if(kind==="fptTrack"){let p=params&&typeof params=="object"?params:{},action=typeof p.action=="string"?p.action:"",actionParams=p.params&&typeof p.params=="object"?p.params:{},key=typeof actionParams.key=="string"?actionParams.key:"";if(action==="setFpt"){let value=typeof actionParams.value=="string"?actionParams.value:"";if(!key||!value||!/^[0-9A-Za-z._-]+$/.test(key)||!/^[0-9A-Za-z._-]+$/.test(value)||`${key}(${value})`.length>100){failed({error_message:"invalid fpt key or value"});return}setFptEntry(fptEntries,key,value),persistFpt()}else action==="deleteFpt"&&key&&(fptEntries.delete(key),persistFpt());succeed({});return}if(kind==="previewFile"){let p=params&&typeof params=="object"?params:{},fileUrl=typeof p.file_url=="string"?p.file_url:"",remoteUrl=typeof p.file_remote_url=="string"?p.file_remote_url:"",url2=(fileUrl.startsWith("http")?fileUrl:remoteUrl)||fileUrl||remoteUrl;url2?(requestOpen(url2,0,!1),succeed({})):failed({code:-1,errorMsg:"file_url is empty"});return}if(kind==="toast"){let error48=showAppToast(params);error48?failed({error_message:error48}):succeed({});return}if(kind==="unsupportedNativeInput"){let containerType="";try{containerType=new URL(location.href).searchParams.get("containerType")??""}catch{}!unsupportedNativeInputNotified&&(containerType==="h5_dx"||containerType==="flutter_h5")&&(unsupportedNativeInputNotified=!0,showAppToast({message:"当前页面使用原生输入框,请移除 URL 中的 containerType 参数以正常操作",milliseconds:4e3})),succeed({});return}if(kind==="payment"){log2("桥调用支付,等待用户确认",api,params),showPaymentDialog(api,params,succeed,failed);return}if(kind==="userTrack"){sendUserTrack(params),succeed({});return}if(kind==="response"){succeed(config2.actions.responses?.[api]);return}if(kind==="noop"){succeed({});return}silent||log2("未覆盖桥方法,回调 failure(页面库将走 H5 兜底):",api),failed(NOT_IMPLEMENTED_PAYLOAD)}let MEGA_SUPPORTED_APIS={stdPop:["showWeex2","showWeex","showH5","changeSize","close"],broadcast:["addEventListener","dispatchEvent","removeEventListener"],kvStorage:["setItem","getItem","removeItem","getAllKeys","clear","getCurrentInfo","getCurrentInfoAndKeys"],LifeCycle:["addPageLifeCycleListener","removePageLifeCycleListener"],Container:["interceptPageClose","disableInterceptPageClose"],navigator:["openURL","close","replace","setSystemBackBlockListener","removeSystemBackBlockListener"],NavBar:["setTitle"],Router:["popPage"]};function isMegaApiSupported(ability,api){return typeof ability=="string"&&typeof api=="string"&&MEGA_SUPPORTED_APIS[ability]?.includes(api)===!0}function megaParams(value){return value&&typeof value=="object"&&!Array.isArray(value)?value:{}}function megaError(callback,statusCode,message){emitMegaCallback(callback,{statusCode,type:"result",data:{errorMessage:typeof message=="string"?message:String(message??"")}})}function cloneMegaDetail(value){if(value===void 0)return{success:!0,value:void 0};try{return{success:!0,value:JSON.parse(JSON.stringify(value))}}catch{return{success:!1}}}function megaSuccess(data={}){return{statusCode:0,type:"result",data}}function megaFailure(message){return{statusCode:500,type:"result",data:{errorMessage:message}}}function megaKVParams(params){return{bizId:typeof params.bizID=="string"?params.bizID:typeof params.bizId=="string"?params.bizId:"",key:typeof params.key=="string"?params.key:"",value:typeof params.value=="string"?params.value:null}}function megaStringByteLength(value){try{return typeof TextEncoder=="function"?new TextEncoder().encode(value).length:value.length}catch{return value.length}}function megaKVUsedSize(entries){let size=0;for(let value of entries.values())size+=megaStringByteLength(value);return size}function reportMegaKVMutation(operation,bizId,key="",value,onSuccess,onFailure){requestContainerData("megaKVMutation",{operation,bizId,key,...value===void 0?{}:{value}},()=>onSuccess?.(),reason=>{log2("KVStorage 容器同步失败:",reason),onFailure?.(reason)})}function completeMegaKVMutation(operation,bizId,key,value,synchronous,callback){let result=megaSuccess();return reportMegaKVMutation(operation,bizId,key,value,synchronous?void 0:()=>emitMegaCallback(callback,result),synchronous?void 0:reason=>emitMegaCallback(callback,megaFailure(String(reason??"container sync failed")))),synchronous?result:null}function executeMegaKVStorage(api,params,synchronous,callback){let{bizId,key,value}=megaKVParams(params);if(!bizId)return megaFailure("missing bizID");let entries=megaKVStorage.get(bizId)??new Map;if(api==="setItem"){if(!key)return megaFailure("missing key");if(value===null||value==="")return megaFailure("missing value");let previousSize=megaStringByteLength(entries.get(key)??"");return megaKVUsedSize(entries)-previousSize+megaStringByteLength(value)>MEGA_KV_TOTAL_SIZE?megaFailure("KVStorage quota exceeded"):(entries.set(key,value),megaKVStorage.set(bizId,entries),megaKVMutationVersion+=1,persistMegaKVStorage(),completeMegaKVMutation("set",bizId,key,value,synchronous,callback))}if(api==="getItem"){if(!key)return megaFailure("missing key");let result=entries.get(key)??"";return megaSuccess(synchronous?{result}:result)}if(api==="removeItem")return key?(entries.delete(key),entries.size===0&&megaKVStorage.delete(bizId),megaKVMutationVersion+=1,persistMegaKVStorage(),completeMegaKVMutation("remove",bizId,key,void 0,synchronous,callback)):megaFailure("missing key");if(api==="getAllKeys"){let result=Array.from(entries.keys());return megaSuccess(synchronous?{result}:result)}if(api==="clear")return megaKVStorage.delete(bizId),megaKVMutationVersion+=1,persistMegaKVStorage(),completeMegaKVMutation("clear",bizId,"",void 0,synchronous,callback);if(api==="getCurrentInfo"||api==="getCurrentInfoAndKeys"){let data={totalSize:MEGA_KV_TOTAL_SIZE,freeSize:Math.max(MEGA_KV_TOTAL_SIZE-megaKVUsedSize(entries),0)};return api==="getCurrentInfoAndKeys"&&(data.keys=Array.from(entries.keys())),megaSuccess(data)}return{statusCode:405,type:"result",data:{}}}function handleMegaLifeCycle(api,callback){if(api==="addPageLifeCycleListener"){callback&&megaLifeCycleListeners.add(callback),emitMegaCallback(callback,megaSuccess());return}if(api==="removePageLifeCycleListener"){let listeners=Array.from(megaLifeCycleListeners);megaLifeCycleListeners.clear(),emitMegaCallback(callback,megaSuccess());for(let listener of listeners)emitMegaCallback(listener,{statusCode:99,type:"finish",data:{}});return}megaError(callback,405,`LifeCycle.${api} is not supported`)}function handleMegaContainer(api,callback){if(api==="interceptPageClose"){callback&&megaPageCloseListeners.add(callback),emitMegaCallback(callback,megaSuccess());return}if(api==="disableInterceptPageClose"){let listeners=Array.from(megaPageCloseListeners);megaPageCloseListeners.clear(),emitMegaCallback(callback,megaSuccess());for(let listener of listeners)emitMegaCallback(listener,{statusCode:99,type:"finish",data:{}});return}megaError(callback,405,`Container.${api} is not supported`)}function megaNavigationUrl(params){let rawUrl=pickUrl(params);if(!rawUrl)return null;if(!params.extQuery||typeof params.extQuery!="object"||Array.isArray(params.extQuery))return rawUrl;try{let target=new URL(rawUrl,location.href);for(let[key,value]of Object.entries(params.extQuery))value!=null&&target.searchParams.set(key,String(value));return target.href}catch{return rawUrl}}function handleMegaNavigator(api,params,callback){if(api==="openURL"||api==="replace"){let url2=megaNavigationUrl(params);if(!url2){megaError(callback,500,"missing url");return}let callbackId=api==="openURL"&&callback?stashCallback(value=>{let backdata=value&&typeof value=="object"?value.backdata:void 0;emitMegaCallback(callback,{statusCode:1,type:"onResult",data:{result:!0,...backdata===void 0?{}:{data:backdata}}}),emitMegaCallback(callback,{statusCode:99,type:"finish",data:{}})}):0;requestOpen(url2,callbackId,!1,{...params,...api==="replace"?{__mearlReplace:!0}:{}}),emitMegaCallback(callback,megaSuccess());return}if(api==="close"){emitMegaCallback(callback,megaSuccess()),requestClose(void 0);return}if(api==="setSystemBackBlockListener"){megaSystemBackListener&&megaSystemBackListener!==callback&&emitMegaCallback(megaSystemBackListener,{statusCode:99,type:"finish",data:{}}),megaSystemBackListener=callback??null,emitMegaCallback(callback,megaSuccess());return}if(api==="removeSystemBackBlockListener"){let listener=megaSystemBackListener;megaSystemBackListener=null,emitMegaCallback(callback,megaSuccess()),listener&&emitMegaCallback(listener,{statusCode:99,type:"finish",data:{}});return}megaError(callback,405,`navigator.${api} is not supported`)}function handleMegaNavBar(api,params,callback){if(api!=="setTitle"){megaError(callback,405,`NavBar.${api} is not supported`);return}applyNavigationBarState(api,params),emitMegaCallback(callback,megaSuccess())}function handleMegaRouter(api,callback){if(api!=="popPage"){megaError(callback,405,`Router.${api} is not supported`);return}emitMegaCallback(callback,megaSuccess()),requestClose(void 0)}function handleMegaStdPop(api,params,callback){if(api==="showH5"||api==="showWeex2"||api==="showWeex"){let url2=pickUrl(params),popId=typeof params.popId=="string"?params.popId.trim():"";if(!url2||!popId){megaError(callback,500,url2?"missing popId":"missing url");return}let callbackId=stashCallback(value=>{let result=value&&typeof value=="object"&&"backdata"in value?value.backdata:void 0;emitMegaCallback(callback,{statusCode:1,type:"onClose",data:result}),emitMegaCallback(callback,{statusCode:99,type:"finish"})});requestOpen(url2,callbackId,!0,{...params,__mearlMegaPopId:popId}),emitMegaCallback(callback,{statusCode:0,type:"result",data:{}});return}if(api==="close"){let popId=typeof params.popId=="string"?params.popId.trim():"";if(!popId){megaError(callback,500,"missing popId");return}let cloned=cloneMegaDetail(params.result);if(!cloned.success){megaError(callback,500,"result is not serializable");return}requestContainerData("megaPopClose",{popId,result:cloned.value},()=>emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),reason=>megaError(callback,500,reason));return}if(api==="changeSize"){let popId=typeof params.popId=="string"?params.popId.trim():"";if(!popId){megaError(callback,500,"missing popId");return}requestContainerData("megaPopResize",{...params,popId},()=>emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),reason=>megaError(callback,500,reason));return}megaError(callback,405,`stdPop.${api} is not supported`)}function handleMegaBroadcast(api,params,callback){let bizId=megaBroadcastBizId(params.bizId),eventName=typeof params.eventName=="string"?params.eventName.trim():"";if(!eventName){megaError(callback,500,"missing eventName");return}if(api==="addEventListener"){if(!callback)return;let id=`mearl-mega-listener-${++megaListenerSeq}`;megaBroadcastListeners.set(id,{id,bizId,eventName,once:params.once===!0,callback}),emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),emitMegaCallback(callback,{statusCode:1,type:"onAdd",data:{listenerId:id}});return}if(api==="dispatchEvent"){let detail=cloneMegaDetail(params.detail);if(!detail.success){megaError(callback,500,"detail is not serializable");return}requestContainerData("megaBroadcast",{message:{kind:"megaBroadcast",bizId,eventName,detail:detail.value}},()=>emitMegaCallback(callback,{statusCode:0,type:"result",data:{}}),reason=>megaError(callback,500,reason));return}if(api==="removeEventListener"){let listenerId=typeof params.listenerId=="string"?params.listenerId:"",removed=[];for(let listener of Array.from(megaBroadcastListeners.values()))listener.bizId!==bizId||listener.eventName!==eventName||listenerId&&listener.id!==listenerId||(megaBroadcastListeners.delete(listener.id),removed.push(listener));emitMegaCallback(callback,{statusCode:0,type:"result",data:{}});for(let listener of removed)emitMegaCallback(listener.callback,{statusCode:99,type:"finish"});return}megaError(callback,405,`broadcast.${api} is not supported`)}function makeMegaBridge(){return{asyncCall:(ability,api,rawParams,callback)=>{let params=megaParams(rawParams);if(ability==="ability"&&api==="available"){emitMegaCallback(callback,{statusCode:0,type:isMegaApiSupported(params.ability,params.api)?"YES":"NO",data:{}});return}if(ability==="ability"&&api==="batchFinishTrace"){emitMegaCallback(callback,{statusCode:0,type:"result",data:{}});return}if(!isMegaApiSupported(ability,api)){megaError(callback,405,`${ability}.${api} is not supported`);return}if(ability==="stdPop")handleMegaStdPop(api,params,callback);else if(ability==="broadcast")handleMegaBroadcast(api,params,callback);else if(ability==="kvStorage"){let result=executeMegaKVStorage(api,params,!1,callback);result&&emitMegaCallback(callback,result)}else ability==="LifeCycle"?handleMegaLifeCycle(api,callback):ability==="Container"?handleMegaContainer(api,callback):ability==="navigator"?handleMegaNavigator(api,params,callback):ability==="NavBar"?handleMegaNavBar(api,params,callback):handleMegaRouter(api,callback)},syncCall:(ability,api,rawParams)=>{let params=megaParams(rawParams);return ability==="ability"&&api==="available"?{statusCode:0,type:isMegaApiSupported(params.ability,params.api)?"YES":"NO",data:{}}:ability==="kvStorage"&&isMegaApiSupported(ability,api)?executeMegaKVStorage(api,params,!0)??megaFailure("container sync pending"):{statusCode:405,type:"result",data:{}}}}}function makeBridge(style){if(style==="mega")return makeMegaBridge();if(style==="easybikeNative"){let callNative=rawPayload=>{let payload;try{payload=typeof rawPayload=="string"?JSON.parse(rawPayload):rawPayload??{}}catch{return}let classMap=typeof payload.classMap=="string"?payload.classMap:"",method=typeof payload.method=="string"?payload.method:"",callbackId=typeof payload.callbackId=="string"||typeof payload.callbackId=="number"?String(payload.callbackId):"",params;try{params=typeof payload.params=="string"?payload.params?JSON.parse(payload.params):{}:payload.params??{}}catch{params={}}let complete=(code,data,msg="")=>{let callback=resolveWindowFunction("callBack");callbackId&&callback&&callback({callbackId,code,data,msg})};dispatch(`${classMap}.${method}`,params,value=>complete(0,value),error48=>complete(1,void 0,typeof error48=="string"?error48:String(error48??"")))};return{postMessage:callNative,callNative}}if(style==="windvane"){let call=(api,params,success2,failure)=>{let onSuccess=typeof success2=="function"?success2:void 0,onFailure=typeof failure=="function"?failure:void 0;if(onSuccess||onFailure){dispatch(api,params,onSuccess,onFailure);return}return new Promise((resolve2,reject)=>dispatch(api,params,resolve2,reject))};return{isAvailable:!0,version:"8.7.0",call2:call,call:(cls,method,params,succ,fail2)=>call(`${cls}.${method}`,params,succ,fail2)}}if(style==="fliggy"||style==="alipay"||style==="callback"){let bridge={call:(api,params,succ,fail2)=>{typeof params=="function"&&(fail2=succ,succ=params,params=void 0);let p=params&&typeof params=="object"?params:{},successFn=succ??(typeof p.success_callback=="function"?p.success_callback:void 0)??(typeof p.successCallback=="function"?p.successCallback:void 0),failureFn=fail2??(typeof p.fail_callback=="function"?p.fail_callback:void 0)??(typeof p.failure_callback=="function"?p.failure_callback:void 0)??(typeof p.failCallback=="function"?p.failCallback:void 0)??(typeof p.failureCallback=="function"?p.failureCallback:void 0);dispatch(api,p,res=>successFn?.(res),err=>{failureFn?failureFn(err):successFn?.({error:err})},p.callbackCommand??p.callback_command)},pushBack:(prefixOrApi,apiOrParams,paramsOrSucc,succ)=>{let api=prefixOrApi,params=apiOrParams,success2=paramsOrSucc;typeof apiOrParams=="string"&&(api=apiOrParams,params=paramsOrSucc,success2=succ);let p=params??{},successFn=(typeof success2=="function"?success2:void 0)??(typeof p.successCallback=="function"?p.successCallback:void 0);return dispatch(api,p,res=>successFn?.(res),void 0,p.callbackCommand??p.callback_command),bridge},sendUriScheme:uri=>(handleMaybeScheme(uri),bridge)};if(style==="fliggy"){let normalizedAppName=(config2.globals.__APP_NAME__??"").toUpperCase(),os11=config2.clientType==="iphone"?"ios":"android",isAliApp=name=>normalizedAppName===name.toUpperCase();Object.assign(bridge,{version:"1.0.21",device:{os:os11,OS:config2.platform,type:os11,version:config2.systemVersion,model:config2.globals.__DEVICE_MODEL__??""},platform:os11,isAliApp,isTmall:isAliApp("TM"),isTaobao:isAliApp("TB"),isAlipay:isAliApp("AP"),isAlitrip:isAliApp("LX"),isKoubei:isAliApp("KB"),isElm:isAliApp("ELMC"),isGaode:isAliApp("amap"),isUC:/UCBrowser/i.test(config2.userAgent),isWeibo:/Weibo/i.test(config2.userAgent),isWeixin:/MicroMessenger/i.test(config2.userAgent),isWindVane:config2.bridges.some(item=>item.style==="windvane"),isAlipayClient:/AlipayClient/i.test(config2.userAgent)})}return bridge}if(style==="btrip")return{call:(api,params)=>dispatch(api,params??{},void 0,void 0)};if(style==="invoke")return{invoke:(api,params)=>{let p=params??{};dispatch(api,p,p.success,p.fail)}};if(style==="callHandler")return{callHandler:(api,params)=>dispatch(api,params??{},void 0,void 0)};if(style==="amap")return{ready:cb=>cb?.(),send:(msg,cb)=>{let m=msg??{};dispatch(typeof m.action=="string"?m.action:"",m,res=>cb?.(res),err=>cb?.({error:err}))}};if(style==="didi")return{openPage:params=>dispatch("openPage",params??{},void 0,void 0),closePage:params=>dispatch("closePage",params??{},void 0,void 0)};if(style==="wechat"||style==="wechatMiniProgram"){let invoke2=(api,params)=>{let p=params&&typeof params=="object"?params:{};dispatch(api,p,value=>{p.success?.(value),p.complete?.(value)},error48=>{p.fail?.(error48),p.complete?.(error48)})};return style==="wechat"?{ready:callback=>{callback&&setTimeout(callback,0)},getLocation:params=>invoke2("getLocation",params)}:{navigateTo:params=>invoke2("navigateTo",params),redirectTo:params=>invoke2("redirectTo",params),switchTab:params=>invoke2("switchTab",params),reLaunch:params=>invoke2("reLaunch",params),navigateBack:params=>invoke2("navigateBack",params),postMessage:params=>invoke2("postMessage",params),getEnv:callback=>{callback&&setTimeout(()=>callback({miniprogram:!0}),0)}}}return{}}function setGlobal(path19,value){let parts=path19.split("."),obj=w;for(let i=0;i<parts.length-1;i++){let cur=obj[parts[i]];(!cur||typeof cur!="object")&&(obj[parts[i]]={}),obj=obj[parts[i]]}obj[parts[parts.length-1]]=value}function setPersistentGlobal(path19,value){let parts=path19.split(".").filter(Boolean);if(parts.length<2){setGlobal(path19,value);return}let[rootKey,...nestedParts]=parts,isObjectLike=candidate=>typeof candidate=="object"&&candidate!==null||typeof candidate=="function",attachBridge=candidate=>{let root=isObjectLike(candidate)?candidate:{},obj=root;for(let index=0;index<nestedParts.length-1;index+=1){let key=nestedParts[index],child=obj[key];if(!isObjectLike(child))try{obj[key]={}}catch{return root}obj=obj[key]}let leaf=nestedParts[nestedParts.length-1];try{Object.defineProperty(obj,leaf,{configurable:!1,enumerable:!0,get:()=>value,set:()=>{}})}catch{try{obj[leaf]=value}catch{}}return root},currentRoot=attachBridge(w[rootKey]);try{Object.defineProperty(w,rootKey,{configurable:!1,enumerable:!0,get:()=>currentRoot,set:next=>{currentRoot=attachBridge(next)}})}catch{w[rootKey]=currentRoot}}if(config2.bridges.some(spec=>spec.style==="mega")){let hydrationVersion=megaKVMutationVersion;requestContainerData("megaKVSnapshot",{},value=>{let entries=value&&typeof value=="object"?value.entries:void 0;megaKVMutationVersion===hydrationVersion&&replaceMegaKVStorage(entries)},()=>{})}for(let spec of config2.bridges)try{let bridge=makeBridge(spec.style);spec.persistent?setPersistentGlobal(spec.global,bridge):setGlobal(spec.global,bridge)}catch(e){console.error(TAG,"桥安装失败:",spec.global,e)}return{mapScheme,handleMaybeScheme,handleAppMessage,handleNativeBack,handleResume,handlePageVisibility,applyRuntimeResponses}}function installAppProfileContainerStack(config2,environment,links){let{SRC,TAG,simulateSystemBars,ROOT_FRAME_NAME,LAYER_FRAME_NAME,isTop,isRootFrame,isLayerFrame,isContainerFrame,usesRootContainer,log:log2}=environment,{pageTransport}=links,initialLayerTitleBarState=url2=>links.getSystemBars().initialLayerTitleBarState(url2),resolvedTitleBarState=layer=>links.getSystemBars().resolvedTitleBarState(layer),parseReportedTitleBarState=value=>links.getSystemBars().parseReportedTitleBarState(value),createSimulatedNavigationBarView=(placement,onBack)=>links.getSystemBars().createNavigationBarView(placement,onBack),destroySimulatedNavigationBarView=view=>links.getSystemBars().destroyNavigationBarView(view),syncLayerViewport=(layer,state)=>links.getSystemBars().syncLayerViewport(layer,state),syncActiveSystemBars=()=>links.getSystemBars().syncActiveSystemBars(),syncSimulatedTitleBar=()=>links.getSystemBars().syncSimulatedTitleBar(),rootContainerActive=!1,rootFrame=null,rootBusinessUrl=location.href,webViewEnvironmentRequestSeq=0,simulatedPageHidden=!1,runtimeResponses=null;function syncSimulatorStateToWindow(target){target&&(target.postMessage({source:SRC,type:"requestTitleBarState"},"*"),runtimeResponses&&target.postMessage({source:SRC,type:"runtimeResponses",profile:config2.profile,responses:runtimeResponses},"*"),simulatedPageHidden&&target.postMessage({source:SRC,type:"simulatorVisibility",hidden:!0},"*"))}function startPreparedWebViewNavigation(frame,target,canCommit,registerCleanup){let insets=config2.safeAreaInsets??{top:config2.statusBarHeight,right:0,bottom:0,left:0};if(!usesRootContainer||!Object.values(insets).some(value=>value>0)){canCommit()&&(frame.src=target);return}let requestId=++webViewEnvironmentRequestSeq,settled=!1,fallbackTimer=0,cleanup=()=>{settled||(settled=!0,clearTimeout(fallbackTimer),window.removeEventListener("message",handleResponse),registerCleanup?.(null))},commitNavigation=fallbackReason=>{cleanup(),fallbackReason&&console.warn(TAG,"WebView 环境准备未完成,降级提交导航",{target,requestId,reason:fallbackReason}),canCommit()&&(frame.src=target)},handleResponse=event=>{if(event.source!==window||event.data?.source!=="mearl-content"||event.data?.type!=="APP_BRIDGE_PREPARE_WEBVIEW_RESPONSE"||event.data?.requestId!==requestId)return;let result=event.data.result;result?.success===!0?commitNavigation():commitNavigation(String(result?.error??"unknown preparation failure"))};registerCleanup?.(cleanup),window.addEventListener("message",handleResponse),fallbackTimer=setTimeout(()=>commitNavigation("preparation timed out after 500ms"),500);try{window.postMessage({source:SRC,type:"prepareWebView",requestId},"*")}catch(error48){commitNavigation(error48 instanceof Error?error48.message:String(error48))}}function installRootContainer(){if(!usesRootContainer||!/^https?:$/i.test(location.protocol))return;let shellRoot,frame;try{for(let cookie of config2.rootContainer?.initialCookies??[]){if(!cookie.name)continue;let parts=[`${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}`,`Path=${cookie.path??"/"}`];cookie.domain&&parts.push(`Domain=${cookie.domain}`),document.cookie=parts.join("; ")}shellRoot=document.createElement("html");let shellHead=document.createElement("head"),charset=document.createElement("meta"),viewport=document.createElement("meta"),title=document.createElement("title"),shellBody=document.createElement("body");frame=document.createElement("iframe"),shellRoot.setAttribute("data-mearl-app-shell",""),shellBody.setAttribute("data-mearl-app-shell",""),charset.setAttribute("charset","utf-8"),viewport.name="viewport",viewport.content="width=device-width,initial-scale=1,viewport-fit=cover",shellHead.append(charset,viewport,title),shellRoot.append(shellHead,shellBody),shellRoot.style.cssText="width:100%;height:100%;margin:0;overflow:hidden;background:#fff;",shellBody.style.cssText="width:100%;height:100%;margin:0;overflow:hidden;background:#fff;",frame.name=ROOT_FRAME_NAME,frame.setAttribute("data-mearl-root-webview",config2.profile),frame.style.cssText="position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;border:0;display:block;background:#fff;z-index:0;opacity:1;",frame.addEventListener("load",()=>{let committedSrc=frame.getAttribute("src");!committedSrc||committedSrc==="about:blank"||(syncSimulatorStateToWindow(frame.contentWindow),requestAnimationFrame(()=>{rootFrame!==frame||!frame.isConnected||(frame.setAttribute("data-mearl-webview-ready",""),syncSimulatedTitleBar())}))}),shellBody.appendChild(frame);let currentRoot=document.documentElement;currentRoot?document.replaceChild(shellRoot,currentRoot):document.appendChild(shellRoot)}catch(error48){console.warn(TAG,"根 WebView 容器创建失败,保留当前页面",error48),rootFrame=null;return}rootFrame=frame,rootContainerActive=!0;try{typeof window.stop=="function"&&window.stop()}catch(error48){console.warn(TAG,"停止外层文档加载失败,继续启动根 WebView",error48)}try{startPreparedWebViewNavigation(frame,rootBusinessUrl,()=>rootFrame===frame&&frame.isConnected)}catch(error48){console.warn(TAG,"根 WebView 环境准备启动失败,直接提交业务导航",error48),rootFrame===frame&&frame.isConnected&&(frame.src=rootBusinessUrl)}}installRootContainer();function normalizeProxyPathPrefix(prefix){let withLeadingSlash=prefix.startsWith("/")?prefix:`/${prefix}`;return withLeadingSlash.endsWith("/")?withLeadingSlash:`${withLeadingSlash}/`}function matchesProxyTarget(hostname3,suffixes){return suffixes.some(suffix=>hostname3===suffix||hostname3.endsWith(`.${suffix}`))}function mapLayerFrameUrl(url2){let proxy=config2.layerUrlProxy;if(!proxy||!location.hostname.startsWith(proxy.sourceHostPrefix))return url2;try{let target=new URL(url2,location.href);if(!/^https?:$/.test(target.protocol))return url2;let prefix=normalizeProxyPathPrefix(proxy.pathPrefix);if(target.hostname===location.hostname){if(target.pathname.startsWith(prefix))return url2;let derivedHost=location.pathname.startsWith(prefix)?location.pathname.slice(prefix.length).split("/")[0]:proxy.defaultTargetHost;return!derivedHost||!matchesProxyTarget(derivedHost,proxy.targetHostSuffixes)?url2:`${location.origin}${prefix}${derivedHost}${target.pathname}${target.search}${target.hash}`}return matchesProxyTarget(target.hostname,proxy.targetHostSuffixes)?`${location.origin}${prefix}${target.host}${target.pathname}${target.search}${target.hash}`:url2}catch{return url2}}function restoreLayerBusinessUrl(url2){let proxy=config2.layerUrlProxy;if(!proxy)return url2;try{let current=new URL(url2,location.href),prefix=normalizeProxyPathPrefix(proxy.pathPrefix);if(current.origin!==location.origin||!current.pathname.startsWith(prefix))return url2;let rest=current.pathname.slice(prefix.length),slash=rest.indexOf("/"),host=slash===-1?rest:rest.slice(0,slash);if(!host)return url2;let hostname3=new URL(`${current.protocol}//${host}`).hostname;if(!matchesProxyTarget(hostname3,proxy.targetHostSuffixes))return url2;let pathname=slash===-1?"/":rest.slice(slash);return`${current.protocol}//${host}${pathname}${current.search}${current.hash}`}catch{return url2}}let ANIM_MS=config2.animationMs??300;function boolParam(value,fallback){return value===!0||value===1||value==="1"||value==="true"?!0:value===!1||value===0||value==="0"||value==="false"?!1:value===""?!0:fallback}function numberParam(value,fallback,min,max){let parsed=typeof value=="number"?value:Number(value);return Number.isFinite(parsed)?Math.min(Math.max(parsed,min),max):fallback}function resolveOverlayPresentation(url2,params,explicitWebdialog){let query=null;try{query=new URL(url2,location.href).searchParams}catch{}let records=[],addRecord=value=>{value&&typeof value=="object"&&!Array.isArray(value)&&records.push(value)};addRecord(params?.pageParams),addRecord(params?.page_params),addRecord(params?.popConfig),addRecord(params?.data),addRecord(params?.param),addRecord(params);let read=key=>{for(let record2 of records)if(Object.prototype.hasOwnProperty.call(record2,key))return record2[key];return query?.has(key)?query.get(key):void 0},protocol=config2.overlay;if(!explicitWebdialog&&(!protocol||!boolParam(read(protocol.enabledParam),!1)))return null;let configuredTopRatio=protocol?read(protocol.topRatioParam):void 0,configuredHeightRatio=protocol?.heightRatioParam?read(protocol.heightRatioParam):void 0,configuredMaxHeight=read("maxHeight")??configuredHeightRatio,defaultTopRatio=protocol?.defaultTopRatio??.2;return{topRatio:configuredTopRatio!==void 0?numberParam(configuredTopRatio,defaultTopRatio,0,1):configuredMaxHeight!==void 0?1-numberParam(configuredMaxHeight,1-defaultTopRatio,0,1):defaultTopRatio,widthRatio:numberParam(read("maxWidth"),1,0,1),radius:numberParam((protocol?read(protocol.radiusParam):void 0)??read("cornerRadius"),protocol?.defaultRadius??0,0,50),maskAlpha:numberParam(protocol?read(protocol.maskAlphaParam):void 0,protocol?.defaultMaskAlpha??.3,0,1),tapClose:boolParam((protocol?read(protocol.tapCloseParam):void 0)??read("tapEnable"),protocol?.defaultTapClose??!0)}}function requestsPopBeforeOpen(url2,params){if(params?.__mearlReplace===!0)return!0;let key=config2.popBeforeOpenParam;if(!key)return!1;let records=[params?.pageParams,params?.page_params,params?.data,params?.param,params];for(let value of records){if(!value||typeof value!="object"||Array.isArray(value))continue;let record2=value;if(Object.prototype.hasOwnProperty.call(record2,key))return boolParam(record2[key],!1)}try{let query=new URL(url2,location.href).searchParams;return query.has(key)&&boolParam(query.get(key),!1)}catch{return!1}}let layers=[],forwardStack=[],layerSeq=0,enteringLayerCount=0,closingLayerCount=0,explicitLayerTitleBarStates=new Map,rootScrollStyles=null,pendingClose=null,nativeBackRequestSeq=0,pendingNativeBack=null,containerDataRequestSeq=0,containerDataCallbacks=new Map,sharedFiles=new Map,sharedData=new Map,legacyBroadcastChannels=new Set,MEGA_KV_STORAGE_KEY=`__mearl_mega_kv__:${config2.profile}`;function readMegaKVStorage(){let storage=new Map;try{let parsed=JSON.parse(localStorage.getItem(MEGA_KV_STORAGE_KEY)??"{}");if(!parsed||typeof parsed!="object"||Array.isArray(parsed))return storage;for(let[bizId,rawEntries]of Object.entries(parsed)){if(!rawEntries||typeof rawEntries!="object"||Array.isArray(rawEntries))continue;let entries=new Map;for(let[key,value]of Object.entries(rawEntries))typeof value=="string"&&entries.set(key,value);storage.set(bizId,entries)}}catch{}return storage}let megaKVStorage=readMegaKVStorage();function megaKVSnapshot(){let snapshot={};for(let[bizId,values]of megaKVStorage)snapshot[bizId]=Object.fromEntries(values);return snapshot}function persistMegaKVStorage(){try{localStorage.setItem(MEGA_KV_STORAGE_KEY,JSON.stringify(megaKVSnapshot()))}catch{}}let PENDING_CLOSE_TIMEOUT_MS=400,pendingHistoryDepth=null;function clearPendingClose(){pendingClose&&(clearTimeout(pendingClose.timer),pendingClose=null)}function clearPendingNativeBack(){pendingNativeBack&&(clearTimeout(pendingNativeBack.timer),pendingNativeBack=null)}function clearPendingHistoryDepth(){pendingHistoryDepth&&(clearTimeout(pendingHistoryDepth.timer),pendingHistoryDepth=null)}function syncHistoryAfterDirectClose(){clearPendingHistoryDepth();let depth=layers.length,timer=setTimeout(()=>{pendingHistoryDepth=null,console.warn(TAG,"WebView 已出栈,但浏览器历史未在预期时间内同步",{depth})},PENDING_CLOSE_TIMEOUT_MS);pendingHistoryDepth={depth,timer},history.back()}function armPendingClose(data,retries){clearPendingClose();let timer=setTimeout(()=>{pendingClose=null,log2("close 未等到 popstate,直接关栈顶兜底"),closeToDepth(Math.max(layers.length-1,0),data,!0)},PENDING_CLOSE_TIMEOUT_MS);pendingClose={data,retries,timer},history.back()}function parseStorageId(url2){try{return new URL(url2,location.href).searchParams.get("__storage_id")}catch{return null}}function titleBarStateCacheKey(url2){try{let parsed=new URL(url2,location.href);return parsed.hash="",parsed.href}catch{return url2}}function cacheExplicitTitleBarState(layer,state){explicitLayerTitleBarStates.set(titleBarStateCacheKey(layer.entryUrl),state),explicitLayerTitleBarStates.set(titleBarStateCacheKey(layer.url),state)}function readDepth(state){if(state&&typeof state=="object"){let d=state.__mearl_layer__;if(typeof d=="number")return d}return null}function mapUrlForSync(url2){let suffixes=config2.urlSyncHostSuffixes??[];try{let u=new URL(url2,location.href);if(!/^https?:$/.test(u.protocol)||!(suffixes.length===0||suffixes.some(s=>u.host===s||u.host.endsWith(`.${s}`))))return;if(u.origin===location.origin)return u.pathname+u.search+u.hash;let proxy=config2.layerUrlProxy;return proxy&&location.hostname.startsWith(proxy.sourceHostPrefix)&&matchesProxyTarget(u.hostname,proxy.targetHostSuffixes)?`${normalizeProxyPathPrefix(proxy.pathPrefix)}${u.host}${u.pathname}${u.search}${u.hash}`:u.pathname+u.search+u.hash}catch{return}}function createLayerEl(overlay,id){let el=document.createElement("div");el.setAttribute("data-mearl-layer",String(id)),el.style.cssText=`position:fixed;inset:0;z-index:${2147483e3+id%100*2};`;let frame=document.createElement("iframe");if(frame.name=LAYER_FRAME_NAME,frame.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms allow-modals allow-downloads allow-popups"),frame.style.cssText="position:absolute;inset:0;width:100%;height:100%;border:0;display:block;background:#fff;z-index:0;opacity:1;",overlay){el.style.pointerEvents="none";let mask=document.createElement("div");mask.style.cssText=`position:absolute;inset:0;background:rgba(0,0,0,${overlay.maskAlpha});opacity:0;pointer-events:auto;`;let sheet=document.createElement("div"),width=overlay.widthRatio*100,left=(1-overlay.widthRatio)/2*100;return sheet.style.cssText=`position:absolute;left:${left}%;right:auto;bottom:0;width:${width}%;height:${(1-overlay.topRatio)*100}%;background:#fff;border-radius:${overlay.radius}px ${overlay.radius}px 0 0;overflow:hidden;pointer-events:auto;`,sheet.appendChild(frame),el.appendChild(mask),el.appendChild(sheet),{el,frame,animEl:sheet,mask}}return el.style.background="#fff",el.appendChild(frame),{el,frame,animEl:el,mask:null}}function setLayerInteractive(layer,interactive){layer.frame.style.pointerEvents=interactive?"":"none",layer.titleBarView&&(layer.titleBarView.root.style.pointerEvents=interactive?"":"none"),interactive?(layer.frame.removeAttribute("inert"),layer.frame.removeAttribute("aria-hidden"),layer.frame.removeAttribute("tabindex")):(layer.frame.setAttribute("inert",""),layer.frame.setAttribute("aria-hidden","true"),layer.frame.setAttribute("tabindex","-1"),layer.frame.blur()),layer.overlay?(layer.el.style.pointerEvents="none",layer.animEl.style.pointerEvents=interactive?"auto":"none",layer.mask&&(layer.mask.style.pointerEvents=interactive?"auto":"none")):layer.el.style.pointerEvents=interactive?"":"none"}function setRootFrameInteractive(interactive){rootFrame&&(rootFrame.style.pointerEvents=interactive?"":"none",interactive?(rootFrame.removeAttribute("inert"),rootFrame.removeAttribute("aria-hidden"),rootFrame.removeAttribute("tabindex")):(rootFrame.setAttribute("inert",""),rootFrame.setAttribute("aria-hidden","true"),rootFrame.setAttribute("tabindex","-1"),rootFrame.blur()))}function blockClosingLayerInteractions(layer){setLayerInteractive(layer,!1),layer.el.style.pointerEvents="auto"}function syncRootScrollLock(locked){let body=document.body;if(locked&&!rootScrollStyles){rootScrollStyles={html:document.documentElement.style.overflow,body:body?.style.overflow??null},document.documentElement.style.overflow="hidden",body&&(body.style.overflow="hidden");return}!locked&&rootScrollStyles&&(document.documentElement.style.overflow=rootScrollStyles.html,body&&rootScrollStyles.body!==null&&(body.style.overflow=rootScrollStyles.body),rootScrollStyles=null)}function syncLayerInteractivity(){let activeLayer=closingLayerCount===0&&enteringLayerCount===0?layers[layers.length-1]:void 0;for(let layer of layers)setLayerInteractive(layer,layer===activeLayer),!activeLayer&&layer===layers[layers.length-1]&&(layer.el.style.pointerEvents="auto");setRootFrameInteractive(layers.length===0&&enteringLayerCount===0&&closingLayerCount===0),syncRootScrollLock(layers.length>0||enteringLayerCount>0||closingLayerCount>0)}function finishLayerEntry(layer){layer.entering&&(layer.entering=!1,layer.enterTimer!==null&&clearTimeout(layer.enterTimer),layer.enterTimer=null,layer.enterTransitionEnd&&(layer.animEl.removeEventListener("transitionend",layer.enterTransitionEnd),layer.enterTransitionEnd=null),enteringLayerCount=Math.max(enteringLayerCount-1,0),syncLayerInteractivity())}function animateIn(layer){let t=layer.animEl;if(t.style.transform=layer.overlay?"translateY(100%)":"translateX(100%)",t.offsetWidth,t.style.transition=`transform ${ANIM_MS}ms ease`,t.style.transform="translate(0px, 0px)",layer.mask&&(layer.mask.style.transition=`opacity ${ANIM_MS}ms ease`,layer.mask.style.opacity="1"),ANIM_MS<=0){finishLayerEntry(layer);return}layer.enterTransitionEnd=event=>{event.target===t&&event.propertyName==="transform"&&finishLayerEntry(layer)},t.addEventListener("transitionend",layer.enterTransitionEnd),layer.enterTimer=setTimeout(()=>finishLayerEntry(layer),ANIM_MS+60)}function animateOut(layer,done){let t=layer.animEl;if(ANIM_MS<=0){t.style.transform=layer.overlay?"translateY(100%)":"translateX(100%)",layer.mask&&(layer.mask.style.opacity="0"),setTimeout(done,0);return}let settled=!1,fallbackTimer=0,finish=()=>{settled||(settled=!0,t.removeEventListener("transitionend",onTransitionEnd),clearTimeout(fallbackTimer),done())},onTransitionEnd=event=>{event.target===t&&event.propertyName==="transform"&&finish()};t.addEventListener("transitionend",onTransitionEnd),t.style.transition=`transform ${ANIM_MS}ms ease`,t.style.transform=layer.overlay?"translateY(100%)":"translateX(100%)",layer.mask&&(layer.mask.style.opacity="0"),fallbackTimer=setTimeout(finish,ANIM_MS+60)}function startLayerNavigation(layer,target){startPreparedWebViewNavigation(layer.frame,target,()=>!layer.closing&&layer.el.isConnected,cleanup=>{layer.navigationPreparationCleanup=cleanup})}function setPageVisibility(target,hidden){if(target===window){links.getBridgeProtocol().handlePageVisibility(hidden);return}try{target.postMessage({source:SRC,type:"simulatorVisibility",hidden},"*")}catch{}}function openLayer(url2,callbackId,overlay,openerWin,pushHistory,popId=null){clearPendingClose();let target=url2;if(!/^https?:/i.test(target)){let mapped=links.getBridgeProtocol().mapScheme(target);if(!mapped)return log2("open 失败,scheme 未映射:",url2),null;target=mapped}location.protocol==="https:"&&target.startsWith("http:")&&(target="https:"+target.slice(5));let presentation=overlay??resolveOverlayPresentation(target,void 0,!1);log2("open →",presentation?"(webdialog) ":"",target);let parts=createLayerEl(presentation,++layerSeq),restoredTitleBarState=explicitLayerTitleBarStates.get(titleBarStateCacheKey(target)),layer={id:layerSeq,win:parts.frame.contentWindow,frame:parts.frame,entryUrl:target,url:target,overlay:presentation,openerWin,callbackId,storageId:parseStorageId(target),popId,el:parts.el,animEl:parts.animEl,mask:parts.mask,entering:!0,enterTimer:null,enterTransitionEnd:null,closing:!1,navigationPreparationCleanup:null,titleBarState:restoredTitleBarState??initialLayerTitleBarState(target),titleBarStateExplicit:restoredTitleBarState!==void 0,titleBarStateReady:restoredTitleBarState!==void 0,titleBarView:null};if(popId&&layer.el.setAttribute("data-mearl-pop-id",popId),layer.mask&&presentation?.tapClose&&layer.mask.addEventListener("click",()=>requestOverlayClose(layer)),!presentation&&simulateSystemBars&&config2.titleBar&&(layer.titleBarView=createSimulatedNavigationBarView("layer",()=>requestNativeBack()),layer.titleBarView.root.setAttribute("data-mearl-layer-titlebar",String(layer.id)),parts.el.appendChild(layer.titleBarView.root)),layers.push(layer),setPageVisibility(openerWin,!0),enteringLayerCount+=1,syncLayerViewport(layer,layer.titleBarState),syncLayerInteractivity(),parts.frame.addEventListener("load",()=>{layer.win=parts.frame.contentWindow,parts.frame.name=LAYER_FRAME_NAME;let committedSrc=parts.frame.getAttribute("src");!committedSrc||committedSrc==="about:blank"||(syncSimulatorStateToWindow(parts.frame.contentWindow),requestAnimationFrame(()=>{layer.titleBarStateReady||layer.closing||!layer.el.isConnected||(layer.titleBarStateReady=!0,syncLayerViewport(layer,resolvedTitleBarState(layer)))}))}),(document.body??document.documentElement).appendChild(parts.el),layer.win=parts.frame.contentWindow,startLayerNavigation(layer,mapLayerFrameUrl(target)),animateIn(layer),pushHistory){forwardStack.length=0;try{history.pushState({__mearl_layer__:layers.length},"",mapUrlForSync(target))}catch{}}return layer}function replaceLayer(sourceLayer,url2,callbackId,overlay,popId=null){if(sourceLayer.closing||layers[layers.length-1]!==sourceLayer){openLayer(url2,callbackId,overlay,sourceLayer.win??window,!0,popId);return}let replacement=openLayer(url2,callbackId,overlay,sourceLayer.openerWin,!1,popId);if(!replacement)return;sourceLayer.navigationPreparationCleanup?.(),sourceLayer.navigationPreparationCleanup=null,sourceLayer.entering&&(sourceLayer.entering=!1,enteringLayerCount=Math.max(enteringLayerCount-1,0),sourceLayer.enterTimer!==null&&clearTimeout(sourceLayer.enterTimer),sourceLayer.enterTransitionEnd&&sourceLayer.animEl.removeEventListener("transitionend",sourceLayer.enterTransitionEnd));let sourceIndex=layers.indexOf(sourceLayer);sourceIndex>=0&&layers.splice(sourceIndex,1),destroySimulatedNavigationBarView(sourceLayer.titleBarView),sourceLayer.el.remove(),forwardStack.length=0,syncLayerInteractivity(),syncActiveSystemBars();try{history.replaceState({__mearl_layer__:layers.length},"",mapUrlForSync(replacement.url))}catch{}}function closeLayer(layer,data,final,gotoEvent=!1,resumeOpener=!0,silent=!1){if(layer.closing)return;layer.navigationPreparationCleanup?.(),layer.navigationPreparationCleanup=null,layer.entering&&(layer.entering=!1,enteringLayerCount=Math.max(enteringLayerCount-1,0),layer.enterTimer!==null&&clearTimeout(layer.enterTimer),layer.enterTimer=null,layer.enterTransitionEnd&&(layer.animEl.removeEventListener("transitionend",layer.enterTransitionEnd),layer.enterTransitionEnd=null)),layer.closing=!0;let idx=layers.indexOf(layer);idx>=0&&layers.splice(idx,1),closingLayerCount+=1,blockClosingLayerInteractions(layer),syncLayerInteractivity(),syncActiveSystemBars(),final?forwardStack.length=0:forwardStack.push({url:layer.url,overlay:layer.overlay,openerWin:layer.openerWin,callbackId:layer.callbackId,storageId:layer.storageId,popId:layer.popId}),log2("close ←",layer.url,data===void 0?"":data),animateOut(layer,()=>{if(destroySimulatedNavigationBarView(layer.titleBarView),layer.el.remove(),closingLayerCount=Math.max(closingLayerCount-1,0),syncLayerInteractivity(),syncActiveSystemBars(),!!resumeOpener)if(layer.openerWin===window)links.getBridgeProtocol().handleResume({data,storageId:layer.storageId,callbackId:layer.callbackId,final,gotoEvent,silent});else try{layer.openerWin.postMessage({source:SRC,type:"resume",data,storageId:layer.storageId,callbackId:layer.callbackId,final,gotoEvent,silent},"*")}catch{}})}function closeToDepth(depth,data,final){for(;layers.length>depth;){let revealsTarget=layers.length===depth+1;closeLayer(layers[layers.length-1],revealsTarget?data:void 0,final,!1,revealsTarget)}}function closeAllLayers(data,gotoEvent=!1){let depth=layers.length;for(;layers.length>0;){let isRootmostLayer=layers.length===1;closeLayer(layers[layers.length-1],isRootmostLayer?data:void 0,!0,isRootmostLayer&&gotoEvent,isRootmostLayer)}if(depth>0)try{history.go(-depth)}catch{}return depth>0}function requestOverlayClose(layer){if(!(layer.closing||layers[layers.length-1]!==layer)){if(!config2.overlay?.silentTapClose){for(let selector of config2.overlay?.tapCloseSelectors??[])try{let control=layer.frame.contentDocument?.querySelector(selector);if(typeof control?.click!="function")continue;control.click();return}catch{}requestCloseOnTop(void 0);return}pendingClose||pendingHistoryDepth||(closeLayer(layer,void 0,!0,!1,!0,!0),syncHistoryAfterDirectClose())}}function forwardToDepth(depth){for(;layers.length<depth&&forwardStack.length>0;){let entry=forwardStack.pop();openLayer(entry.url,entry.callbackId,entry.overlay,entry.openerWin,!1,entry.popId)}}function requestCloseOnTop(data){if(layers.length===0){history.back();return}if(rootContainerActive){closeLayer(layers[layers.length-1],data,!0),syncHistoryAfterDirectClose();return}armPendingClose(data,8)}function isActiveBusinessWindow(target){let topLayer=layers[layers.length-1];return topLayer?topLayer.frame.contentWindow===target:rootFrame?rootFrame.contentWindow===target:target===window}function finishNativeBack(requestId,target,handled){pendingNativeBack?.requestId!==requestId||pendingNativeBack.target!==target||(clearPendingNativeBack(),!handled&&isActiveBusinessWindow(target)&&requestCloseOnTop(void 0))}function requestNativeBack(){if(!isTop||pendingNativeBack)return;let target=layers[layers.length-1]?.frame.contentWindow??rootFrame?.contentWindow??window;if(!target||target===window){links.getBridgeProtocol().handleNativeBack()||requestCloseOnTop(void 0);return}let requestId=++nativeBackRequestSeq,timer=setTimeout(()=>finishNativeBack(requestId,target,!1),120);pendingNativeBack={requestId,target,timer};try{target.postMessage({source:SRC,type:"nativeBack",requestId},"*")}catch{finishNativeBack(requestId,target,!1)}}function layerForWindow(source){if(source)for(let layer of layers){if(layer.win===source)return layer;let currentWindow=layer.frame.contentWindow;if(currentWindow&&currentWindow===source)return layer.win=currentWindow,layer}}if(isTop){if(!rootContainerActive){let rawPushState=history.pushState.bind(history),rawReplaceState=history.replaceState.bind(history),withDepth=state=>state==null?{__mearl_layer__:layers.length}:typeof state=="object"&&!Array.isArray(state)?{...state,__mearl_layer__:layers.length}:state;try{history.pushState=function(...args){rawPushState(withDepth(args[0]),args[1],args[2])},history.replaceState=function(...args){rawReplaceState(withDepth(args[0]),args[1],args[2])}}catch{}}try{readDepth(history.state)===null&&history.replaceState({__mearl_layer__:0},"")}catch{}window.addEventListener("popstate",e=>{let depth=readDepth(e.state);if(pendingHistoryDepth){let expectedDepth=pendingHistoryDepth.depth;if(clearPendingHistoryDepth(),depth===expectedDepth)return;console.warn(TAG,"浏览器历史深度与 WebView 出栈事务不一致",{expectedDepth,actualDepth:depth})}if(rootContainerActive){if(depth===null)return;depth<layers.length?closeToDepth(depth,void 0,!1):depth>layers.length&&forwardToDepth(depth);return}if(pendingClose){if(depth!==null&&depth<layers.length){let{data}=pendingClose;clearPendingClose(),closeToDepth(depth,data,!0)}else if(pendingClose.retries>0)armPendingClose(pendingClose.data,pendingClose.retries-1);else{let{data}=pendingClose;clearPendingClose(),closeToDepth(layers.length-1,data,!0)}return}depth!==null&&(depth<layers.length?closeToDepth(depth,void 0,!1):depth>layers.length&&forwardToDepth(depth))})}function broadcastAppMessage(message){links.getBridgeProtocol().handleAppMessage(message);let targets=[rootFrame?.contentWindow??null,...layers.filter(layer=>!layer.closing).map(layer=>layer.frame.contentWindow)];for(let target of targets)if(!(!target||target===window))try{target.postMessage({source:SRC,type:"appMessage",message},"*")}catch{}}function closeMegaPop(popId,data){let index=layers.findIndex(layer=>layer.popId===popId&&!layer.closing);if(index<0)return!1;let closingDepth=layers.length-index;closeToDepth(index,data,!0);try{history.go(-closingDepth)}catch{}return!0}function resizeMegaPop(popId,params){let layer=layers.find(candidate=>candidate.popId===popId&&!candidate.closing);if(!layer?.overlay)return!1;if(params.maxHeight!==void 0){let maxHeight=numberParam(params.maxHeight,1-layer.overlay.topRatio,0,1);layer.overlay.topRatio=1-maxHeight,layer.animEl.style.height=`${maxHeight*100}%`}if(params.maxWidth!==void 0){let maxWidth=numberParam(params.maxWidth,1,0,1);layer.overlay.widthRatio=maxWidth,layer.animEl.style.width=`${maxWidth*100}%`,layer.animEl.style.left=`${(1-maxWidth)/2*100}%`,layer.animEl.style.right="auto"}return params.animated===!0&&(layer.animEl.style.transition="height 200ms ease, width 200ms ease, left 200ms ease"),!0}function executeContainerData(action,params){if(action==="sharedFileRead"||action==="sharedFileWrite"){let fileName=typeof params.fileName=="string"?params.fileName:"";if(!fileName)return{success:!1,value:"missing fileName"};if(action==="sharedFileRead")return{success:!0,value:{data:sharedFiles.get(fileName)??""}};let data=typeof params.data=="string"?params.data:String(params.data??"");return sharedFiles.set(fileName,data),{success:!0,value:{}}}if(action==="sharedDataGet"){let keys=Array.isArray(params.keys)?params.keys.filter(key=>typeof key=="string"):[],data={};for(let key of keys)sharedData.has(key)&&(data[key]=sharedData.get(key));return{success:!0,value:{data}}}if(action==="sharedDataSet"){if(!params.data||typeof params.data!="object"||Array.isArray(params.data))return{success:!1,value:"missing shared data"};for(let[key,value]of Object.entries(params.data))value==null?sharedData.delete(key):sharedData.set(key,value);return{success:!0,value:{}}}if(action==="megaBroadcast")return!params.message||typeof params.message!="object"||Array.isArray(params.message)?{success:!1,value:"missing broadcast message"}:(broadcastAppMessage(params.message),{success:!0,value:{}});if(action==="megaKVSnapshot")return{success:!0,value:{entries:megaKVSnapshot()}};if(action==="megaKVMutation"){let operation=typeof params.operation=="string"?params.operation:"",bizId=typeof params.bizId=="string"?params.bizId:"";if(!bizId)return{success:!1,value:"missing bizID"};let key=typeof params.key=="string"?params.key:"";if((operation==="set"||operation==="remove")&&!key)return{success:!1,value:"missing key"};if(operation==="set"){if(typeof params.value!="string")return{success:!1,value:"missing value"};let entries=megaKVStorage.get(bizId)??new Map;entries.set(key,params.value),megaKVStorage.set(bizId,entries)}else if(operation==="remove"){let entries=megaKVStorage.get(bizId);entries?.delete(key),entries?.size===0&&megaKVStorage.delete(bizId)}else if(operation==="clear")megaKVStorage.delete(bizId);else return{success:!1,value:"unsupported KVStorage operation"};return persistMegaKVStorage(),broadcastAppMessage({kind:"megaKVStorage",operation,bizId,key,value:params.value}),{success:!0,value:{}}}if(action==="legacyBroadcastCreate"){let instanceId=typeof params.instanceId=="string"?params.instanceId:"";return instanceId?(legacyBroadcastChannels.add(instanceId),{success:!0,value:{}}):{success:!1,value:"missing instanceId"}}if(action==="legacyBroadcastPost"){let instanceId=typeof params.instanceId=="string"?params.instanceId:"";return instanceId?legacyBroadcastChannels.has(instanceId)?(broadcastAppMessage({kind:"legacyBroadcast",instanceId,message:params.message}),{success:!0,value:{}}):{success:!1,value:"broadcast channel not found"}:{success:!1,value:"missing instanceId"}}if(action==="legacyBroadcastClose"){let instanceId=typeof params.instanceId=="string"?params.instanceId:"";return instanceId?(legacyBroadcastChannels.delete(instanceId),{success:!0,value:{}}):{success:!1,value:"missing instanceId"}}if(action==="megaPopClose"){let popId=typeof params.popId=="string"?params.popId:"";return popId?closeMegaPop(popId,params.result)?{success:!0,value:{}}:{success:!1,value:"popId not found"}:{success:!1,value:"missing popId"}}if(action==="megaPopResize"){let popId=typeof params.popId=="string"?params.popId:"";return popId?resizeMegaPop(popId,params)?{success:!0,value:{}}:{success:!1,value:"popId not found"}:{success:!1,value:"missing popId"}}return{success:!1,value:"unsupported container data action"}}function requestContainerData(action,params,onSuccess,onFailure){if(isTop){let result=executeContainerData(action,params);setTimeout(()=>result.success?onSuccess(result.value):onFailure(result.value),0);return}let requestId=++containerDataRequestSeq;containerDataCallbacks.set(requestId,{success:onSuccess,failure:onFailure});try{window.top?.postMessage({source:SRC,type:"containerDataRequest",requestId,action,params},"*")}catch(error48){containerDataCallbacks.delete(requestId),onFailure(error48 instanceof Error?error48.message:String(error48))}}function requestOpen(url2,callbackId,webdialog,params){let overlay=resolveOverlayPresentation(url2,params,webdialog),popBeforeOpen=requestsPopBeforeOpen(url2,params),popId=typeof params?.__mearlMegaPopId=="string"?params.__mearlMegaPopId:null;isTop?openLayer(url2,callbackId,overlay,window,!0,popId):window.top?.postMessage({source:SRC,type:"open",url:url2,callbackId,overlay,popBeforeOpen,popId},"*")}function requestClose(data){let payload;try{payload=data===void 0?void 0:JSON.parse(JSON.stringify(data))}catch{payload=void 0}isTop?requestCloseOnTop(payload):window.top?.postMessage({source:SRC,type:"close",data:payload},"*")}if(window.addEventListener("message",event=>{let msg=event.data;if(!(!msg||typeof msg!="object")){if(msg.source==="mearl-content"&&(msg.type==="APP_BRIDGE_SIMULATOR_VISIBILITY"||msg.type==="APP_BRIDGE_RUNTIME_RESPONSES")){if(!isTop||event.source!==window)return;if(msg.type==="APP_BRIDGE_SIMULATOR_VISIBILITY"&&typeof msg.hidden=="boolean"){simulatedPageHidden=msg.hidden,links.getBridgeProtocol().handlePageVisibility(msg.hidden);let lifecycleMessage={source:SRC,type:"simulatorVisibility",hidden:msg.hidden};rootFrame?.contentWindow?.postMessage(lifecycleMessage,"*");for(let layer of layers)layer.closing||layer.frame.contentWindow?.postMessage(lifecycleMessage,"*")}else if(msg.type==="APP_BRIDGE_RUNTIME_RESPONSES"&&msg.profile===config2.profile&&msg.responses&&typeof msg.responses=="object"&&!Array.isArray(msg.responses)){let responses=msg.responses;runtimeResponses={...runtimeResponses??{},...responses},links.getBridgeProtocol().applyRuntimeResponses(responses);let configMessage={source:SRC,type:"runtimeResponses",profile:config2.profile,responses};rootFrame?.contentWindow?.postMessage(configMessage,"*");for(let layer of layers)layer.closing||layer.frame.contentWindow?.postMessage(configMessage,"*")}return}if(msg.source===SRC){if(isTop){let sourceLayer=layerForWindow(event.source),sourceIsRoot=!!(rootFrame?.contentWindow&&rootFrame.contentWindow===event.source);if(!sourceLayer&&!sourceIsRoot)return;if(msg.type==="open"&&typeof msg.url=="string"){let rawOverlay=msg.overlay&&typeof msg.overlay=="object"?msg.overlay:void 0,overlay=rawOverlay?{topRatio:numberParam(rawOverlay.topRatio,.2,0,1),widthRatio:numberParam(rawOverlay.widthRatio,1,0,1),radius:numberParam(rawOverlay.radius,0,0,50),maskAlpha:numberParam(rawOverlay.maskAlpha,.3,0,1),tapClose:boolParam(rawOverlay.tapClose,!0)}:resolveOverlayPresentation(msg.url,void 0,!1),callbackId=typeof msg.callbackId=="number"?msg.callbackId:0,popId=typeof msg.popId=="string"&&msg.popId?msg.popId:null;msg.popBeforeOpen===!0&&sourceLayer?replaceLayer(sourceLayer,msg.url,callbackId,overlay,popId):openLayer(msg.url,callbackId,overlay,event.source??window,!0,popId)}else if(msg.type==="close")requestCloseOnTop(msg.data);else if(msg.type==="closeAll"){let gotoEvent=msg.gotoEvent===!0;if(gotoEvent&&sourceIsRoot&&layers.length===0&&msg.data!==void 0)try{event.source.postMessage({source:SRC,type:"resume",data:msg.data,storageId:null,callbackId:0,final:!0,gotoEvent:!0},"*")}catch{}else closeAllLayers(msg.data,gotoEvent)}else if(msg.type==="appMessageToOpener"&&sourceLayer){let target=sourceLayer.openerWin;if(target===window)links.getBridgeProtocol().handleAppMessage(msg.message);else try{target.postMessage({source:SRC,type:"appMessage",message:msg.message},"*")}catch{}}else if(msg.type==="containerDataRequest"&&typeof msg.requestId=="number"&&typeof msg.action=="string"&&msg.params&&typeof msg.params=="object"&&!Array.isArray(msg.params)&&event.source){let result=executeContainerData(msg.action,msg.params);try{event.source.postMessage({source:SRC,type:"containerDataResponse",requestId:msg.requestId,success:result.success,value:result.value},"*")}catch{}}else if(msg.type==="nativeBackResult"&&typeof msg.requestId=="number"&&typeof msg.handled=="boolean"&&event.source)finishNativeBack(msg.requestId,event.source,msg.handled);else if(msg.type==="urlChanged"&&typeof msg.url=="string"){let topLayer=layers[layers.length-1];if(sourceIsRoot&&!topLayer){rootBusinessUrl=msg.url;let mapped=mapUrlForSync(msg.url);if(mapped)try{history.replaceState({__mearl_layer__:0},"",mapped)}catch{}}else if(topLayer&&!topLayer.closing&&sourceLayer===topLayer){topLayer.url=msg.url,topLayer.titleBarStateExplicit&&topLayer.titleBarState&&cacheExplicitTitleBarState(topLayer,topLayer.titleBarState);let mapped=mapUrlForSync(msg.url);if(mapped)try{history.replaceState({__mearl_layer__:layers.length},"",mapped)}catch{}}}else if(msg.type==="title"&&typeof msg.title=="string"){let topLayer=layers[layers.length-1];if(sourceIsRoot&&!topLayer)try{document.title=msg.title,syncSimulatedTitleBar()}catch{}else if(topLayer&&sourceLayer===topLayer){document.title=msg.title;let state=resolvedTitleBarState(topLayer);topLayer.titleBarState={...state,title:msg.title},syncLayerViewport(topLayer,topLayer.titleBarState)}}else if(msg.type==="titleBarState"){let state=parseReportedTitleBarState(msg.state);if(state&&sourceIsRoot)links.getSystemBars().setPresentedRootTitleBarState(state);else if(state&&sourceLayer){let explicit=msg.explicit===!0;sourceLayer.titleBarStateReady=!0,explicit?(sourceLayer.titleBarState=state,sourceLayer.titleBarStateExplicit=!0,cacheExplicitTitleBarState(sourceLayer,state)):sourceLayer.titleBarStateExplicit||(sourceLayer.titleBarState=state);let resolvedState=sourceLayer.titleBarState??state;syncLayerViewport(sourceLayer,resolvedState)}}}else if(msg.type==="requestTitleBarState"){if(event.source!==window.top)return;syncSimulatedTitleBar()}else if(msg.type==="simulatorVisibility"&&typeof msg.hidden=="boolean"){if(event.source!==window.top)return;links.getBridgeProtocol().handlePageVisibility(msg.hidden)}else if(msg.type==="appMessage"){if(event.source!==window.top)return;links.getBridgeProtocol().handleAppMessage(msg.message)}else if(msg.type==="nativeBack"&&typeof msg.requestId=="number"){if(event.source!==window.top)return;let handled=links.getBridgeProtocol().handleNativeBack();window.top?.postMessage({source:SRC,type:"nativeBackResult",requestId:msg.requestId,handled},"*")}else if(msg.type==="containerDataResponse"&&typeof msg.requestId=="number"){if(event.source!==window.top)return;let callback=containerDataCallbacks.get(msg.requestId);if(!callback)return;containerDataCallbacks.delete(msg.requestId),msg.success===!0?callback.success(msg.value):callback.failure(msg.value)}else if(msg.type==="runtimeResponses"&&msg.profile===config2.profile&&msg.responses&&typeof msg.responses=="object"&&!Array.isArray(msg.responses)){if(event.source!==window.top)return;links.getBridgeProtocol().applyRuntimeResponses(msg.responses)}else if(msg.type==="resume"){if(event.source!==window.top)return;links.getBridgeProtocol().handleResume({data:msg.data,storageId:msg.storageId??null,callbackId:typeof msg.callbackId=="number"?msg.callbackId:0,final:msg.final===!0,gotoEvent:msg.gotoEvent===!0,silent:msg.silent===!0})}else event.source!==window.top&&window.top?.postMessage(msg,"*");return}pageTransport.handleMessage(msg)}}),!isTop&&isContainerFrame){let reportUrl=()=>{try{window.top?.postMessage({source:SRC,type:"urlChanged",url:restoreLayerBusinessUrl(location.href)},"*")}catch{}};try{let origPushState=history.pushState.bind(history),origReplaceState=history.replaceState.bind(history);history.pushState=function(...args){origPushState(...args),reportUrl()},history.replaceState=function(...args){origReplaceState(...args),reportUrl()},window.addEventListener("popstate",reportUrl),window.addEventListener("hashchange",reportUrl)}catch{}}if(isContainerFrame){let requestProxyLocationOpen=url2=>{if(links.getBridgeProtocol().handleMaybeScheme(url2))return!0;try{let current=new URL(restoreLayerBusinessUrl(location.href)),target=new URL(url2,current);return!/^https?:$/.test(target.protocol)||target.origin===current.origin&&target.pathname===current.pathname&&target.search===current.search?!1:(requestOpen(target.href,0,!1),!0)}catch{return!1}};Object.defineProperty(window,"__PROXY_LOCATION__",{value:{get href(){return location.href},set href(url2){requestProxyLocationOpen(url2)||(location.href=mapLayerFrameUrl(url2))},replace(url2){links.getBridgeProtocol().handleMaybeScheme(url2)||location.replace(mapLayerFrameUrl(url2))},assign(url2){requestProxyLocationOpen(url2)||location.assign(mapLayerFrameUrl(url2))}},writable:!1,configurable:!0})}if(isContainerFrame){document.addEventListener("click",event=>{let el=event.target;for(;el&&el.tagName!=="A";)el=el.parentElement;if(!el)return;let href=el.getAttribute("href");if(href){if(links.getBridgeProtocol().handleMaybeScheme(href)){event.preventDefault(),event.stopPropagation();return}/^https?:/i.test(href)&&el.getAttribute("target")==="_blank"&&(event.preventDefault(),event.stopPropagation(),requestOpen(href,0,!1))}},!0);let origOpen=window.open;window.open=function(url2,target,features){let urlStr=typeof url2=="string"?url2:url2 instanceof URL?url2.href:"";return links.getBridgeProtocol().handleMaybeScheme(urlStr)?null:/^https?:/i.test(urlStr)?(requestOpen(urlStr,0,!1),null):origOpen?origOpen.call(window,url2,target,features):null};try{let proto=Location.prototype,origAssign=proto.assign,origReplace=proto.replace;origAssign&&(proto.assign=function(url2){if(links.getBridgeProtocol().handleMaybeScheme(url2))return;let upgraded=location.protocol==="https:"&&url2.startsWith("http:")?"https:"+url2.slice(5):url2;origAssign.call(this,upgraded)}),origReplace&&(proto.replace=function(url2){if(links.getBridgeProtocol().handleMaybeScheme(url2))return;let upgraded=location.protocol==="https:"&&url2.startsWith("http:")?"https:"+url2.slice(5):url2;origReplace.call(this,upgraded)})}catch{}}return log2("容器环境已就绪",isTop?"(top)":isRootFrame?"(root)":isLayerFrame?"(layer)":"(iframe,仅桥)"),{getRootFrame:()=>rootFrame,getLayers:()=>layers,getClosingLayerCount:()=>closingLayerCount,requestOpen,requestClose,requestNativeBack,requestContainerData,closeAllLayers}}var APP_PROFILE_RUNTIME_FACTORIES={environment:installAppProfileEnvironment,containerStack:installAppProfileContainerStack,bridgeProtocol:installAppProfileBridgeProtocol,pageTransport:installAppProfilePageTransport,systemBars:installAppProfileSystemBars};function buildAppProfileRuntimeCallSource(configExpression){return`(${installAppProfileRuntime.toString()})(${configExpression},{environment:${installAppProfileEnvironment.toString()},pageTransport:${installAppProfilePageTransport.toString()},containerStack:${installAppProfileContainerStack.toString()},systemBars:${installAppProfileSystemBars.toString()},bridgeProtocol:${installAppProfileBridgeProtocol.toString()}})`}function installAppProfileRuntime(config2,factories=APP_PROFILE_RUNTIME_FACTORIES){let environment=factories.environment(config2);if(!environment)return;let pageTransport=factories.pageTransport(config2,environment),containerStack=factories.containerStack(config2,environment,{pageTransport,getSystemBars:()=>systemBars,getBridgeProtocol:()=>bridgeProtocol}),systemBars=factories.systemBars(config2,environment,{getRootFrame:containerStack.getRootFrame,getLayers:containerStack.getLayers,getClosingLayerCount:containerStack.getClosingLayerCount,requestClose:containerStack.requestClose,requestNativeBack:containerStack.requestNativeBack}),bridgeProtocol=factories.bridgeProtocol(config2,environment,{pageTransport,systemBars,requestOpen:containerStack.requestOpen,requestClose:containerStack.requestClose,requestCloseAll:containerStack.closeAllLayers,requestContainerData:containerStack.requestContainerData})}import https from"node:https";import http3 from"node:http";var TYPE_INTO_ELEMENT_SRC=typeIntoElement.toString(),CLICK_ELEMENT_VIA_JS_SRC=clickElementViaJS.toString(),GET_CLICK_COORDS_FROM_NODE_SRC=getClickCoordsFromNode.toString();async function readCdpCurrentUrl(session,action){let url2=(await session.client.sendCommand("Runtime.evaluate",{expression:"location.href",returnByValue:!0})).result?.value;if(typeof url2!="string"||!url2)throw new Error(`${action}: could not read the current page URL`);return session.url=url2,url2}function nodeFetch(urlStr,options={}){return new Promise((resolve2,reject)=>{let url2=new URL(urlStr),isHttps=url2.protocol==="https:",lib=isHttps?https:http3,{method="GET",headers={},body,timeoutMs=3e4}=options,req=lib.request({host:url2.hostname,port:url2.port||(isHttps?443:80),path:url2.pathname+url2.search,method,headers},res=>{let responseHeaders={};for(let[key,value]of Object.entries(res.headers))typeof value=="string"?responseHeaders[key]=value:Array.isArray(value)&&(responseHeaders[key]=value.join(", "));let chunks=[];res.on("data",chunk=>chunks.push(Buffer.from(chunk))),res.on("end",()=>{let bodyBuffer=Buffer.concat(chunks);resolve2({status:res.statusCode??0,statusText:res.statusMessage??"",headers:responseHeaders,body:bodyBuffer.toString("utf-8"),bodyBuffer})})});req.on("error",reject),req.setTimeout(timeoutMs,()=>{req.destroy(),reject(new Error(`Request timeout: ${urlStr}`))}),body&&req.write(body),req.end()})}async function getCookiesForUrl(session,targetUrl){let result=await session.client.sendCommand("Network.getCookies",{urls:[targetUrl]}),map2=new Map;for(let cookie of result.cookies??[])map2.set(cookie.name,cookie.value);return map2}async function waitForPageLoad(session,timeoutMs){if(isCdpDeviceShellActive(session)){let deadline=Date.now()+timeoutMs;for(;Date.now()<deadline;){if((await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:"document.readyState",returnByValue:!0}).catch(()=>null))?.result?.value==="complete")return;await new Promise(resolve2=>setTimeout(resolve2,50))}throw new Error(`Page load timeout after ${timeoutMs}ms`)}return new Promise((resolve2,reject)=>{let settled=!1,removeLoadListener=()=>{},finish=error48=>{settled||(settled=!0,clearTimeout(timer),removeLoadListener(),error48?reject(error48):resolve2())},timer=setTimeout(()=>{finish(new Error(`Page load timeout after ${timeoutMs}ms`))},timeoutMs);removeLoadListener=session.client.on("Page.loadEventFired",()=>finish()),session.client.sendCommand("Runtime.evaluate",{expression:"document.readyState",returnByValue:!0}).then(result=>{result.result?.value==="complete"&&finish()}).catch(()=>{})})}async function getPageViewportSize(session){let result=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:`({
626
626
  width: window.visualViewport ? window.visualViewport.width : window.innerWidth,
627
627
  height: window.visualViewport ? window.visualViewport.height : window.innerHeight
628
- })`,returnByValue:!0}),width=result.result?.value?.width,height=result.result?.value?.height;return typeof width!="number"||typeof height!="number"||width<=0||height<=0?null:{width,height}}async function getCdpInputViewportSize(session){let metrics;try{metrics=await session.client.sendCommand("Page.getLayoutMetrics",{})}catch{return null}let viewport=metrics.cssVisualViewport??metrics.visualViewport??metrics.cssLayoutViewport??metrics.layoutViewport,width=viewport?.clientWidth,height=viewport?.clientHeight;return typeof width!="number"||typeof height!="number"||width<=0||height<=0?null:{width,height}}async function toCdpInputPoint(session,x,y){if(isCdpDeviceShellActive(session)){let offset=getCdpDeviceShellInputOffset(session);return{x:x+offset.x,y:y+offset.y}}let[pageViewport,cdpViewport]=await Promise.all([getPageViewportSize(session),getCdpInputViewportSize(session)]);if(!pageViewport||!cdpViewport)return{x,y};let scaleX=cdpViewport.width/pageViewport.width,scaleY=cdpViewport.height/pageViewport.height;return!Number.isFinite(scaleX)||!Number.isFinite(scaleY)||scaleX<=0||scaleY<=0||Math.abs(scaleX-1)<.01&&Math.abs(scaleY-1)<.01?{x,y}:{x:x*scaleX,y:y*scaleY}}async function dispatchCdpClick(session,x,y,pointerType){let point=await toCdpInputPoint(session,x,y);if(pointerType==="touch"){await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchStart",touchPoints:[point]}),await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchEnd",touchPoints:[]});return}await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseMoved",x:point.x,y:point.y}),await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mousePressed",x:point.x,y:point.y,button:"left",buttons:1,clickCount:1}),await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseReleased",x:point.x,y:point.y,button:"left",buttons:0,clickCount:1})}async function dispatchCdpDrag(session,from,to,pointerType,durationMs){let[start,end]=await Promise.all([toCdpInputPoint(session,from.x,from.y),toCdpInputPoint(session,to.x,to.y)]),path19=buildPageDragPath(start,end,durationMs),waitForNextPoint=async()=>{path19.intervalMs<=0||await new Promise(resolve2=>setTimeout(resolve2,path19.intervalMs))};if(pointerType==="touch"){await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchStart",touchPoints:[start]});let primaryError2;try{for(let point of path19.points)await waitForNextPoint(),await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchMove",touchPoints:[point]})}catch(error48){throw primaryError2=error48,error48}finally{await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchEnd",touchPoints:[]}).catch(error48=>{if(primaryError2===void 0)throw error48})}return{steps:path19.points.length}}await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseMoved",x:start.x,y:start.y}),await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mousePressed",x:start.x,y:start.y,button:"left",buttons:1,clickCount:1});let primaryError;try{for(let point of path19.points)await waitForNextPoint(),await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseMoved",x:point.x,y:point.y,button:"left",buttons:1})}catch(error48){throw primaryError=error48,error48}finally{await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseReleased",x:end.x,y:end.y,button:"left",buttons:0,clickCount:1}).catch(error48=>{if(primaryError===void 0)throw error48})}return{steps:path19.points.length}}async function sendCdpInputCommand(session,method,params){try{await session.client.sendCommand(method,params,1e4)}catch(error48){if(error48 instanceof Error&&error48.message===`CDP command timeout: ${method}`){let eventType=typeof params.type=="string"?` (${params.type})`:"";throw new Error(`CDP ${method}${eventType} timed out after ${1e4}ms. The page may already have changed; verify its current state before retrying.`,{cause:error48})}throw error48}}async function resolveBackendNodeObjectId(session,backendNodeId){let objectId=(await sendCdpDeviceShellPageCommand(session,"DOM.resolveNode",{backendNodeId})).object?.objectId;if(!objectId)throw new Error(`Cannot resolve element for backendNodeId ${backendNodeId}`);return objectId}var SCREENSHOT_HIDDEN_DISPLAY_PROPERTIES=["--mearl-side-panel-toggle-display","--mearl-device-cutout-display"],screenshotQueueTails=new WeakMap;async function runScreenshotExclusive(session,operation){let previous=screenshotQueueTails.get(session)??Promise.resolve(),unlock,tail=new Promise(resolve2=>{unlock=resolve2});screenshotQueueTails.set(session,tail),await previous;try{return await operation()}finally{unlock(),screenshotQueueTails.get(session)===tail&&screenshotQueueTails.delete(session)}}async function hideScreenshotArtifacts(session){return(await session.client.sendCommand("Runtime.evaluate",{expression:`
628
+ })`,returnByValue:!0}),width=result.result?.value?.width,height=result.result?.value?.height;return typeof width!="number"||typeof height!="number"||width<=0||height<=0?null:{width,height}}async function getCdpInputViewportSize(session){let metrics;try{metrics=await session.client.sendCommand("Page.getLayoutMetrics",{})}catch{return null}let viewport=metrics.cssVisualViewport??metrics.visualViewport??metrics.cssLayoutViewport??metrics.layoutViewport,width=viewport?.clientWidth,height=viewport?.clientHeight;return typeof width!="number"||typeof height!="number"||width<=0||height<=0?null:{width,height}}async function toCdpInputPoint(session,x,y){if(isCdpDeviceShellActive(session)){let offset=getCdpDeviceShellInputOffset(session);return{x:x+offset.x,y:y+offset.y}}let[pageViewport,cdpViewport]=await Promise.all([getPageViewportSize(session),getCdpInputViewportSize(session)]);if(!pageViewport||!cdpViewport)return{x,y};let scaleX=cdpViewport.width/pageViewport.width,scaleY=cdpViewport.height/pageViewport.height;return!Number.isFinite(scaleX)||!Number.isFinite(scaleY)||scaleX<=0||scaleY<=0||Math.abs(scaleX-1)<.01&&Math.abs(scaleY-1)<.01?{x,y}:{x:x*scaleX,y:y*scaleY}}async function dispatchCdpClick(session,x,y,pointerType){let point=await toCdpInputPoint(session,x,y);if(pointerType==="touch"){await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchStart",touchPoints:[point]}),await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchEnd",touchPoints:[]});return}await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseMoved",x:point.x,y:point.y}),await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mousePressed",x:point.x,y:point.y,button:"left",buttons:1,clickCount:1}),await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseReleased",x:point.x,y:point.y,button:"left",buttons:0,clickCount:1})}async function dispatchCdpDrag(session,from,to,pointerType,durationMs){let[start,end]=await Promise.all([toCdpInputPoint(session,from.x,from.y),toCdpInputPoint(session,to.x,to.y)]),path19=buildPageDragPath(start,end,durationMs),waitForNextPoint=async()=>{path19.intervalMs<=0||await new Promise(resolve2=>setTimeout(resolve2,path19.intervalMs))};if(pointerType==="touch"){await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchStart",touchPoints:[start]});let primaryError2;try{for(let point of path19.points)await waitForNextPoint(),await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchMove",touchPoints:[point]})}catch(error48){throw primaryError2=error48,error48}finally{await sendCdpInputCommand(session,"Input.dispatchTouchEvent",{type:"touchEnd",touchPoints:[]}).catch(error48=>{if(primaryError2===void 0)throw error48})}return{steps:path19.points.length}}await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseMoved",x:start.x,y:start.y}),await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mousePressed",x:start.x,y:start.y,button:"left",buttons:1,clickCount:1});let primaryError;try{for(let point of path19.points)await waitForNextPoint(),await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseMoved",x:point.x,y:point.y,button:"left",buttons:1})}catch(error48){throw primaryError=error48,error48}finally{await sendCdpInputCommand(session,"Input.dispatchMouseEvent",{type:"mouseReleased",x:end.x,y:end.y,button:"left",buttons:0,clickCount:1}).catch(error48=>{if(primaryError===void 0)throw error48})}return{steps:path19.points.length}}async function sendCdpInputCommand(session,method,params){try{await session.client.sendCommand(method,params,1e4)}catch(error48){if(error48 instanceof Error&&error48.message===`CDP command timeout: ${method}`){let eventType=typeof params.type=="string"?` (${params.type})`:"",targetHint=method==="Input.dispatchTouchEvent"?'Touch input can stall on a hidden, background, or headless target; use clickMode "auto" or make the target visible. ':"";throw new Error(`CDP ${method}${eventType} timed out after ${1e4}ms. `+targetHint+"The page may already have changed; verify its current state before retrying.",{cause:error48})}throw error48}}async function resolveBackendNodeObjectId(session,backendNodeId){let objectId=(await sendCdpDeviceShellPageCommand(session,"DOM.resolveNode",{backendNodeId})).object?.objectId;if(!objectId)throw new Error(`Cannot resolve element for backendNodeId ${backendNodeId}`);return objectId}var SCREENSHOT_HIDDEN_DISPLAY_PROPERTIES=["--mearl-side-panel-toggle-display","--mearl-device-cutout-display"],screenshotQueueTails=new WeakMap;async function runScreenshotExclusive(session,operation){let previous=screenshotQueueTails.get(session)??Promise.resolve(),unlock,tail=new Promise(resolve2=>{unlock=resolve2});screenshotQueueTails.set(session,tail),await previous;try{return await operation()}finally{unlock(),screenshotQueueTails.get(session)===tail&&screenshotQueueTails.delete(session)}}async function hideScreenshotArtifacts(session){return(await session.client.sendCommand("Runtime.evaluate",{expression:`
629
629
  (() => {
630
630
  const root = document.documentElement;
631
631
  if (!root) return [];
@@ -688,7 +688,7 @@ Content-Type: ${file2.contentType}\r
688
688
  \r
689
689
  `),file2.content,Buffer.from(`\r
690
690
  `))}return chunks.push(Buffer.from(`--${boundary}--\r
691
- `)),{contentType:`multipart/form-data; boundary=${boundary}`,body:Buffer.concat(chunks)}}function hasMultipartPayload(data){return data.formData!==void 0||data.files!==void 0}async function executeNodeSendRequest(data,cookieMap=new Map){let{url:url2,method="GET",headers={},params,body,formData,files,responseType="auto",timeout=3e4}=data;if(!url2||typeof url2!="string"||url2.trim()==="")throw new Error("Invalid url: url must be a non-empty string");let normalizedMethod=method.toUpperCase();if(!ALLOWED_METHODS.has(normalizedMethod))throw new Error(`Invalid method: ${method}. Allowed: ${[...ALLOWED_METHODS].join(", ")}`);if(!Number.isFinite(timeout)||timeout<=0)throw new Error("timeout must be a positive number");let targetUrl=new URL(url2);for(let[key,value]of Object.entries(params??{}))targetUrl.searchParams.set(key,String(value));let requestHeaders={Accept:"application/json, text/plain, */*","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",...headers},resolvedSourceHeaders=getSendRequestSourceHeaders(targetUrl,headers);resolvedSourceHeaders.referer?setHeader(requestHeaders,"Referer",resolvedSourceHeaders.referer):removeHeader(requestHeaders,"Referer"),resolvedSourceHeaders.origin?setHeader(requestHeaders,"Origin",resolvedSourceHeaders.origin):removeHeader(requestHeaders,"Origin");let cookieHeader=[...cookieMap.entries()].map(([key,value])=>`${key}=${value}`).join("; ");cookieHeader&&setHeader(requestHeaders,"Cookie",cookieHeader);let xsrfToken=cookieMap.get("XSRF-TOKEN");xsrfToken&&!findSendRequestHeaderName(requestHeaders,"x-xsrf-token")&&setHeader(requestHeaders,"X-XSRF-TOKEN",xsrfToken);let requestBody;if(hasMultipartPayload(data)){if(body!=null)throw new Error("body cannot be combined with formData or files");if(normalizedMethod==="GET"||normalizedMethod==="HEAD")throw new Error(`${normalizedMethod} requests cannot use formData or files`);if(findSendRequestHeaderName(requestHeaders,"content-type"))throw new Error("Do not set Content-Type when using formData or files; Mearl sets the boundary");let multipart=await buildMultipartBody(formData,files);requestBody=multipart.body,setHeader(requestHeaders,"Content-Type",multipart.contentType),setHeader(requestHeaders,"Content-Length",String(multipart.body.byteLength))}else body!=null&&!["GET","HEAD"].includes(normalizedMethod)&&(typeof body=="string"?(requestBody=body,findSendRequestHeaderName(requestHeaders,"content-type")||setHeader(requestHeaders,"Content-Type","text/plain")):(requestBody=JSON.stringify(body),findSendRequestHeaderName(requestHeaders,"content-type")||setHeader(requestHeaders,"Content-Type","application/json")));let result=await nodeFetch(targetUrl.toString(),{method:normalizedMethod,headers:requestHeaders,body:requestBody,timeoutMs:timeout}),contentType=(result.headers["content-type"]??"").split(";")[0].trim().toLowerCase(),responseHeaders=Object.fromEntries(Object.entries(result.headers).filter(([name])=>name.toLowerCase()!=="set-cookie"&&name.toLowerCase()!=="set-cookie2")),responseBody,bodyType;if(responseType==="auto"&&isBinarySendRequestContentType(contentType))responseBody=result.bodyBuffer.toString("base64"),bodyType="base64";else{let trimmed=result.body.trimStart();if(responseType==="json"||responseType==="auto"&&contentType.includes("application/json")||responseType==="auto"&&(trimmed.startsWith("{")||trimmed.startsWith("[")))try{responseBody=JSON.parse(result.body),bodyType="json"}catch{if(responseType==="json")throw new Error("send_request expected a JSON response");responseBody=result.body,bodyType="text"}else responseBody=result.body,bodyType="text"}return{success:!0,status:result.status,statusText:result.statusText,headers:responseHeaders,body:responseBody,bodyType,attachedCookieCount:cookieMap.size}}async function cdpSendRequest(session,data){if(!data.url||typeof data.url!="string")throw new Error("Invalid url: url must be a non-empty string");let cookieMap=new Map;if(data.withCookies!==!1)try{cookieMap=await getCookiesForUrl(session,new URL(data.url).toString())}catch{}return executeNodeSendRequest(data,cookieMap)}async function prepareCdpMtopRequest(session,data,stream=!1){let resolved=resolveMtopRequest(data),cookieMap=await getCookiesForUrl(session,resolved.gatewayUrl.toString()),prepared=prepareSignedMtopRequest(resolved,cookieMap,stream);return{...prepared,requestHeaders:{...prepared.cookieHeader?{Cookie:prepared.cookieHeader}:{},...prepared.requestHeaders}}}async function cdpSendMtopRequest(session,data){let prepared=await prepareCdpMtopRequest(session,data),result=await nodeFetch(prepared.targetUrl.toString(),{method:prepared.normalizedMethod,headers:prepared.requestHeaders,body:prepared.body,timeoutMs:prepared.timeout});return{success:!0,response:parseMtopResponseText(result.body),requestData:prepared.requestData}}async function cdpSendMtopStreamRequest(session,data,callbacks){let prepared=await prepareCdpMtopRequest(session,data,!0),controller=new AbortController,timeoutId=setTimeout(()=>controller.abort(),prepared.timeout);try{await callbacks.onRequestPrepared?.({method:prepared.normalizedMethod,url:prepared.targetUrl.toString(),requestHeaders:Object.entries(prepared.requestHeaders).map(([name,value])=>({name,value}))});let response=await fetch(prepared.targetUrl,{method:prepared.normalizedMethod,headers:prepared.requestHeaders,body:prepared.body,signal:controller.signal}),responseHeaders=[];return response.headers.forEach((value,name)=>{name.toLowerCase()!=="set-cookie"&&responseHeaders.push({name,value})}),await callbacks.onResponse?.({status:response.status,statusText:response.statusText,responseHeaders}),{success:!0,response:await consumeMtopSseResponse(response,event=>callbacks.onReceive(event.data)),requestData:prepared.requestData}}catch(error48){throw error48 instanceof Error&&error48.name==="AbortError"?new Error(`send_mtop_stream timed out after ${prepared.timeout}ms: ${prepared.api}`,{cause:error48}):new Error(`send_mtop_stream failed: ${error48 instanceof Error?error48.message:String(error48)}`,{cause:error48})}finally{clearTimeout(timeoutId)}}registerActions([{name:"send_request",session:"page",handler:cdpSendRequest},{name:"send_mtop_request",session:"page",handler:cdpSendMtopRequest}]);var registries=new WeakMap;function getPageRefRegistry(session){let registry2=registries.get(session);if(!registry2){registry2=new BackendNodeRefRegistry,registries.set(session,registry2);let activeRegistry=registry2;session.client.on("Page.frameNavigated",params=>{params.frame?.parentId||activeRegistry.clearDocument()})}return registry2}function beginPageSnapshotRefs(session){return getPageRefRegistry(session).beginSnapshot()}function resolvePageRef(session,ref){return registries.get(session)?.resolve(ref)}function deletePageRef(session,ref){registries.get(session)?.delete(ref)}function clearPageRefsForNavigation(session){registries.get(session)?.clearDocument()}async function enrichCdpPageChangeSetWithRefs(session,observation){return enrichPageChangeSetWithRefs(observation,getPageRefRegistry(session),selectors=>resolveUniqueBackendNodeIds((method,params)=>sendCdpDeviceShellPageCommand(session,method,params),selectors),(node,backendNodeId)=>({backendNodeId,role:node.role??"",name:node.name??""}))}var APP_PROFILE_BINDING="__mearlCdpAppProfileRelay",appProfileStates=new WeakMap;function serializeForSource2(value){return JSON.stringify(value).replace(/[\u2028\u2029]/g,character=>character==="\u2028"?"\\u2028":"\\u2029")}function installCdpAppProfileRelay(bindingName){let browser=globalThis,target=globalThis;target.__mearlCdpAppProfileRelayInstalled__||(target.__mearlCdpAppProfileRelayInstalled__=!0,browser.addEventListener("message",event=>{if(event.source!==globalThis)return;let message=event.data;if(!message||message.source!=="mearl-app-bridge")return;let requestId=message.requestId;if(typeof requestId!="number")return;if(message.type==="prepareWebView"){browser.postMessage({source:"mearl-content",type:"APP_BRIDGE_PREPARE_WEBVIEW_RESPONSE",requestId,result:{success:!0}},"*");return}if(message.type!=="mtop"&&message.type!=="mtopStream"&&message.type!=="userInfo"&&message.type!=="screenshot")return;let binding=target[bindingName];if(typeof binding=="function")try{binding(JSON.stringify({type:message.type,requestId,payload:message.payload}))}catch{}}))}function installEarlyAppProfileEnvironment(config2){let browser=globalThis,target=globalThis;for(let[key,value]of Object.entries(config2.globals))try{target[key]=value}catch{}let insets=config2.safeAreaInsets??{top:config2.statusBarHeight,right:0,bottom:0,left:0};target.__STATUS_BAR_HEIGHT__=config2.statusBarHeight,target.__SAFE_AREA_INSET_BOTTOM__=insets.bottom;for(let[key,value]of[["userAgent",config2.userAgent],["platform",config2.navigatorPlatform],["vendor","Apple Computer, Inc."],["appVersion",config2.userAgent.replace(/^Mozilla\//,"")],["maxTouchPoints",config2.maxTouchPoints]])try{Object.defineProperty(browser.navigator,key,{configurable:!0,get:()=>value})}catch{}}function installWhenDocumentElementExists(install){let browser=globalThis;if(browser.document.documentElement){install();return}let observer=new browser.MutationObserver(()=>{browser.document.documentElement&&(observer.disconnect(),install())});observer.observe(browser.document,{childList:!0})}function buildDocumentSource(config2){return`;(() => {const config=${serializeForSource2(config2)};(${installCdpAppProfileRelay.toString()})(${JSON.stringify(APP_PROFILE_BINDING)});(${installEarlyAppProfileEnvironment.toString()})(config);(${installWhenDocumentElementExists.toString()})(() => {${buildAppProfileRuntimeCallSource("config")};});})();`}function appProfileEmulationCommands(config2,userAgent){return buildEnableEmulationCommands(config2).map(command=>command.method==="Emulation.setUserAgentOverride"?{...command,params:{userAgent,platform:config2.platform}}:command)}async function sendCommands(client2,commands){for(let{method,params,optional:optional2}of commands)await client2.sendCommand(method,params).catch(error48=>{if(!optional2)throw error48})}async function postRuntimeMessage(client2,executionContextId,message){await client2.sendCommand("Runtime.evaluate",{expression:`window.postMessage(${serializeForSource2(message)}, '*')`,...typeof executionContextId=="number"?{contextId:executionContextId}:{}})}function listenForBridgeRequests(session,client2,state){return client2.on("Runtime.bindingCalled",params=>{if(params?.name!==APP_PROFILE_BINDING||appProfileStates.get(session)!==state)return;let request;try{request=JSON.parse(params.payload)}catch{return}if(typeof request.requestId!="number")return;let requestId=request.requestId,contextId=typeof params.executionContextId=="number"?params.executionContextId:void 0,reply=message=>postRuntimeMessage(client2,contextId,{requestId,source:"mearl-content",...message});(async()=>{if(request.type==="screenshot"){if(client2!==session.client)return;try{let result=await cdpPageScreenshot(session,{format:"png"});await reply({type:"APP_BRIDGE_SCREENSHOT_RESPONSE",result:{success:!0,...result}})}catch(error48){await reply({type:"APP_BRIDGE_SCREENSHOT_RESPONSE",result:{success:!1,error:error48 instanceof Error?error48.message:String(error48)}})}return}if(request.type==="userInfo"){try{let result=await session.client.sendCommand("Network.getCookies",{urls:[session.url]}),response=resolveAppProfileUserInfo(session.url,(result.cookies??[]).map(cookie=>({name:cookie.name,value:cookie.value})));await reply({type:"APP_BRIDGE_USER_INFO_RESPONSE",result:{success:!0,response}})}catch(error48){await reply({type:"APP_BRIDGE_USER_INFO_RESPONSE",result:{success:!1,error:error48 instanceof Error?error48.message:String(error48)}})}return}let payload=request.payload??{},mtopPayload={...payload,...typeof payload.v=="string"&&payload.version===void 0?{version:payload.v}:{}},streamCapture;try{if(request.type==="mtopStream"){await cdpSendMtopStreamRequest(session,mtopPayload,{onRequestPrepared:metadata=>{streamCapture=recordCdpMtopStreamStart(session.buffers,{api:String(mtopPayload.api??""),url:metadata.url,method:metadata.method,requestHeaders:metadata.requestHeaders,requestData:mtopPayload.data??null})},onResponse:metadata=>{streamCapture&&recordCdpMtopStreamResponse(session.buffers,streamCapture,metadata)},onReceive:async data=>{streamCapture&&recordCdpMtopStreamChunk(session.buffers,streamCapture,data),await reply({type:"APP_BRIDGE_MTOP_STREAM_EVENT",eventType:"onReceive",data})}}),streamCapture&&recordCdpMtopStreamEnd(session.buffers,streamCapture),await reply({type:"APP_BRIDGE_MTOP_STREAM_EVENT",eventType:"onFinish",data:{}});return}let result=await cdpSendMtopRequest(session,mtopPayload);await reply({type:"APP_BRIDGE_MTOP_RESPONSE",result})}catch(error48){let message=error48 instanceof Error?error48.message:String(error48);request.type==="mtopStream"?(streamCapture&&recordCdpMtopStreamEnd(session.buffers,streamCapture,{error:message}),await reply({type:"APP_BRIDGE_MTOP_STREAM_EVENT",eventType:"onError",data:{ret:["HY_FAILED"],msg:message}})):await reply({type:"APP_BRIDGE_MTOP_RESPONSE",result:{success:!1,error:message}})}})().catch(()=>{})})}async function installChildTarget2(session,state,params,source){let sessionId=params.sessionId;if(typeof sessionId!="string")return;let child=session.client.createChildSession(sessionId);try{if(params.targetInfo?.type!=="iframe"||appProfileStates.get(session)!==state)return;await child.sendCommand("Runtime.enable");let frameName=(await child.sendCommand("Runtime.evaluate",{expression:"window.name",returnByValue:!0})).result?.value;if(frameName!=="__mearl_root__"&&frameName!=="__mearl_layer__")return;state.emulation?await sendCommands(child,appProfileEmulationCommands(state.emulation,state.config.userAgent)):await child.sendCommand("Emulation.setUserAgentOverride",{userAgent:state.config.userAgent,platform:state.config.navigatorPlatform}),await child.sendCommand("Runtime.addBinding",{name:APP_PROFILE_BINDING}),state.disposeListeners.push(listenForBridgeRequests(session,child,state)),state.childClients.push(child),await child.sendCommand("Page.addScriptToEvaluateOnNewDocument",{source}).catch(()=>{}),await child.sendCommand("Runtime.evaluate",{expression:source})}finally{await child.sendCommand("Runtime.runIfWaitingForDebugger").catch(()=>{})}}async function disposeState(session,state){appProfileStates.get(session)===state&&appProfileStates.delete(session),setCdpDeviceShellChildEnvironmentManagedByApp(session,!1);for(let dispose of state.disposeListeners.splice(0))dispose();isCdpDeviceShellActive(session)||await session.client.sendCommand("Target.setAutoAttach",{autoAttach:!1,waitForDebuggerOnStart:!1,flatten:!0}).catch(()=>{}),await session.client.sendCommand("Page.removeScriptToEvaluateOnNewDocument",{identifier:state.documentScriptIdentifier}).catch(()=>{}),await Promise.allSettled([session.client,...state.childClients].map(client2=>client2.sendCommand("Runtime.removeBinding",{name:APP_PROFILE_BINDING})));let deviceEmulation=session.emulation?.config;if(deviceEmulation){let commands=buildEnableEmulationCommands(deviceEmulation);await sendCommands(session.client,commands),await Promise.allSettled(state.childClients.map(client2=>sendCommands(client2,commands)))}else await Promise.allSettled([session.client,...state.childClients].map(client2=>client2.sendCommand("Emulation.setUserAgentOverride",{userAgent:""})))}function resolveCdpAppProfile(profile,options={}){return{profile:resolveAppProfile(profile,{os:options.os,appVersion:options.appVersion,deviceModel:options.deviceModel,devicePreset:options.devicePreset,orientation:options.orientation,bridgeConfig:options.bridgeConfig})}}async function applyResolvedCdpAppProfile(session,resolved){let previous=appProfileStates.get(session);previous&&await disposeState(session,previous);let source=buildDocumentSource(resolved.profile.injected),deviceEmulation=session.emulation?.config;deviceEmulation?await sendCommands(session.client,appProfileEmulationCommands(deviceEmulation,resolved.profile.ua)):await session.client.sendCommand("Emulation.setUserAgentOverride",{userAgent:resolved.profile.ua,platform:resolved.profile.injected.navigatorPlatform}),await session.client.sendCommand("Runtime.enable"),await session.client.sendCommand("Runtime.addBinding",{name:APP_PROFILE_BINDING});let script=await session.client.sendCommand("Page.addScriptToEvaluateOnNewDocument",{source});if(typeof script.identifier!="string"||!script.identifier)throw deviceEmulation?await sendCommands(session.client,buildEnableEmulationCommands(deviceEmulation)):await session.client.sendCommand("Emulation.setUserAgentOverride",{userAgent:""}).catch(()=>{}),new Error("Chrome did not return an app profile bootstrap script identifier");let state={config:resolved.profile.injected,documentScriptIdentifier:script.identifier,emulation:deviceEmulation,disposeListeners:[],childClients:[]};appProfileStates.set(session,state),setCdpDeviceShellChildEnvironmentManagedByApp(session,!0),state.disposeListeners.push(listenForBridgeRequests(session,session.client,state)),state.disposeListeners.push(session.client.on("Target.attachedToTarget",params=>{installChildTarget2(session,state,params,source).catch(()=>{})})),state.disposeListeners.push(session.client.on("Target.detachedFromTarget",params=>{let sessionId=params?.sessionId;typeof sessionId!="string"||appProfileStates.get(session)!==state||(state.childClients=state.childClients.filter(client2=>client2.sessionId!==sessionId))})),await session.client.sendCommand("Target.setAutoAttach",{autoAttach:!0,waitForDebuggerOnStart:!0,flatten:!0,filter:[{type:"iframe"},{exclude:!0}]})}async function updateCdpAppProfileDeviceEmulation(session,emulation){let state=appProfileStates.get(session);if(state)return state.emulation=emulation??void 0,await Promise.allSettled(state.childClients.map(client2=>emulation?sendCommands(client2,appProfileEmulationCommands(emulation,state.config.userAgent)):client2.sendCommand("Emulation.setUserAgentOverride",{userAgent:state.config.userAgent,platform:state.config.navigatorPlatform}))),{userAgent:state.config.userAgent,platform:state.config.navigatorPlatform}}function isCdpAppProfileActive(session){return appProfileStates.has(session)}async function waitForCdpAppProfileLoad(session,timeoutMs=3e4){if(isCdpDeviceShellActive(session)){await waitForCdpDeviceShellLoad(session,Math.min(timeoutMs,15e3));return}await waitForPageLoad(session,timeoutMs)}async function clearCdpAppProfile(session,reload=!0){let state=appProfileStates.get(session);if(!state)return{enabled:!1,reloaded:!1};await disposeState(session,state);let reloaded=!1;return reload&&(clearPageRefsForNavigation(session),await session.client.sendCommand("Page.reload",{}),await waitForCdpAppProfileLoad(session),reloaded=!0),{enabled:!1,reloaded}}async function cdpSetAppProfile(session,data){if(typeof data?.enabled!="boolean")throw new Error('set_app_profile: "enabled" is required (true to enable, false to clear)');if(!data.enabled){if(data.emulation===void 0)return clearCdpAppProfile(session,data.reload!==!1);let hadDeviceShell=await clearCdpDeviceShell(session),appResult=await clearCdpAppProfile(session,!1);await sendCommands(session.client,buildDisableEmulationCommands()),session.emulation=void 0;let reloaded2=!1;return(data.reload!==!1||hadDeviceShell)&&(clearPageRefsForNavigation(session),await session.client.sendCommand("Page.reload",{}),await waitForPageLoad(session,3e4),reloaded2=!0),{...appResult,device:{enabled:!1,deviceShell:!1,reloaded:reloaded2},reloaded:reloaded2}}if(!data.profile||typeof data.profile!="string")throw new Error('set_app_profile: "profile" is required when enabled=true');let resolved=resolveCdpAppProfile(data.profile,{...data,devicePreset:session.emulation?.config?.presetName,orientation:session.emulation?.config?.orientation});if(data.emulation!==void 0){let emulation=resolveEmulationConfig({enabled:!0,preset:resolved.profile.recommendedPreset,...data.emulation}),targetOs=emulation.platform==="Android"||emulation.platform==="OpenHarmony"?"android":"ios",targetDeviceModel=data.deviceModel??(emulation.presetName?DEVICE_PRESETS[emulation.presetName].appProfileModel:resolved.profile.injected.globals.__DEVICE_MODEL__),appResolved=resolveCdpAppProfile(data.profile,{...data,os:targetOs,deviceModel:targetDeviceModel}),deviceShell=data.emulation.deviceShell??!0;session.emulation={mobile:emulation.mobile,touch:emulation.touch,config:emulation,deviceShell},await applyResolvedCdpAppProfile(session,appResolved);let shellChanged=deviceShell?await applyCdpDeviceShell(session,emulation):await clearCdpDeviceShell(session);deviceShell&&setCdpDeviceShellChildEnvironmentManagedByApp(session,!0);let reloaded2=!1;return(data.reload!==!1||shellChanged)&&(clearPageRefsForNavigation(session),await session.client.sendCommand("Page.reload",{}),deviceShell?await waitForCdpDeviceShellLoad(session):await waitForPageLoad(session,3e4),reloaded2=!0),{enabled:!0,profile:appResolved.profile.profile,label:appResolved.profile.label,userAgent:appResolved.profile.ua,os:appResolved.profile.injected.platform==="Android"?"android":"ios",device:{enabled:!0,preset:emulation.presetName,viewport:{width:emulation.width,height:emulation.height,deviceScaleFactor:emulation.deviceScaleFactor,scale:emulation.scale??1},userAgent:emulation.userAgent,mobile:emulation.mobile,touch:emulation.touch,orientation:emulation.orientation,deviceShell,reloaded:reloaded2},reloaded:reloaded2}}await applyResolvedCdpAppProfile(session,resolved);let reloaded=!1;return data.reload!==!1&&(clearPageRefsForNavigation(session),await session.client.sendCommand("Page.reload",{}),await waitForCdpAppProfileLoad(session),reloaded=!0),{enabled:!0,profile:resolved.profile.profile,label:resolved.profile.label,userAgent:resolved.profile.ua,os:resolved.profile.injected.platform==="Android"?"android":"ios",reloaded}}registerActions([{name:"set_app_profile",session:"page",handler:cdpSetAppProfile}]);async function releaseCdpControl(session){let pageSessions=session.listOpenPageSessions(),targetIds=new Set(pageSessions.map(pageSession=>pageSession.targetId)),affectedTabIds=session.listRegisteredTabIds(targetIds).sort((a,b)=>a-b),hadActiveControl=session.hasActiveConnections();try{await releaseCdpRecordings(pageSessions)}finally{await Promise.allSettled(pageSessions.map(async pageSession=>{let[,deviceShell]=await Promise.allSettled([clearCdpAppProfile(pageSession,!1),clearCdpDeviceShell(pageSession),releaseControlledIndicator(pageSession)]);deviceShell.status==="fulfilled"&&deviceShell.value&&await pageSession.client.sendCommand("Page.reload",{}).catch(()=>{})})),clearCdpMockState(),session.close()}return{released:!0,hadActiveControl,affectedTabIds}}var SAMPLE_PAGE_READINESS_SRC=samplePageReadinessInPage.toString(),DISPOSE_PAGE_READINESS_SRC=disposePageReadinessObserverInPage.toString();async function startCdpNavigationObserver(cdpSession2,pageSession,urlBefore,options={}){let pageEndpoint=await resolveCdpDeviceShellPageEndpoint(pageSession),pageClient=pageEndpoint.client;await ensureCdpDomain(pageClient,"Page"),await ensureCdpDomain(pageClient,"Runtime"),options.trackNetwork&&await ensureCdpDomain(pageClient,"Network");let browserClient=null,baselineTargetIds=new Set;if(options.trackOpenedTabs)try{browserClient=await cdpSession2.getBrowserClient();let targets=await browserClient.sendCommand("Target.getTargets");for(let target of targets.targetInfos??[])baselineTargetIds.add(target.targetId)}catch{browserClient=null}let frameTree=await pageClient.sendCommand("Page.getFrameTree"),observedFrameId=pageEndpoint.frameId??frameTree.frameTree?.frame?.id,observesParentTargetSubframe=pageClient===pageSession.client&&pageEndpoint.frameId!==void 0,tracker=createNavigationSettlementTracker({urlBefore,trackNetwork:options.trackNetwork,networkAvailable:options.trackNetwork===!0,networkIdleMs:options.networkIdleMs,contentReadyAfterMs:options.contentReadyAfterMs,sampleContent:async()=>(await sendCdpDeviceShellPageCommand(pageSession,"Runtime.evaluate",{expression:`(${SAMPLE_PAGE_READINESS_SRC})(${options.networkIdleMs??500})`,returnByValue:!0})).result?.value}),removeFrameNavigated=pageClient.on("Page.frameNavigated",params=>{observedFrameId&&params.frame?.id!==observedFrameId||tracker.markStarted(params.frame?.url)}),removeWithinDocument=pageClient.on("Page.navigatedWithinDocument",params=>{observedFrameId&&params.frameId!==observedFrameId||(tracker.markStarted(params.url),tracker.markDocumentComplete(params.url))}),removeLoad=pageClient.on("Page.loadEventFired",()=>{observesParentTargetSubframe||tracker.hasStarted()&&tracker.markDocumentComplete()}),removeFrameStoppedLoading=pageClient.on("Page.frameStoppedLoading",params=>{observedFrameId&&params.frameId!==observedFrameId||tracker.hasStarted()&&tracker.markDocumentComplete()}),removeRequestStarted=options.trackNetwork?pageClient.on("Network.requestWillBeSent",params=>{isPotentialNavigationRequest(params.type??"",params.request?.url??"")&&tracker.requestStarted(params.requestId)}):()=>{},onRequestFinished=params=>tracker.requestFinished(params.requestId),removeRequestFinished=options.trackNetwork?pageClient.on("Network.loadingFinished",onRequestFinished):()=>{},removeRequestFailed=options.trackNetwork?pageClient.on("Network.loadingFailed",onRequestFinished):()=>{};return{hasStarted:tracker.hasStarted,hasNetworkActivity:tracker.hasNetworkActivity,waitForStart:tracker.waitForStart,waitForNetworkIdle:tracker.waitForNetworkIdle,waitForResult:async timeoutMs=>{let result=await tracker.waitForResult(timeoutMs);try{let pageState=await sendCdpDeviceShellPageCommand(pageSession,"Runtime.evaluate",{expression:"({ title: document.title, url: location.href })",returnByValue:!0});return{...result,title:pageState.result?.value?.title??result.title,urlAfter:pageState.result?.value?.url??result.urlAfter}}catch{return result}},getOpenedTabs:async timeoutMs=>{if(!browserClient||options.sourceTabId===void 0)return[];let candidates=((await browserClient.sendCommand("Target.getTargets")).targetInfos??[]).filter(target=>target.type==="page"&&target.openerId===pageSession.targetId&&!baselineTargetIds.has(target.targetId));return(await Promise.all(candidates.map(async candidate=>{let tabId=await cdpSession2.ensureTargetRegistered(candidate.targetId),ready=!1;try{let openedPageSession=await cdpSession2.getPageSession(tabId);await ensureCdpDomain(openedPageSession.client,"Page"),await waitForPageLoad(openedPageSession,timeoutMs),ready=!0}catch{}let targetInfo=await browserClient.sendCommand("Target.getTargetInfo",{targetId:candidate.targetId}).then(result=>result.targetInfo).catch(()=>null);return targetInfo?{tabId,openerTabId:options.sourceTabId,url:targetInfo.url??candidate.url??"",title:targetInfo.title??candidate.title??"",ready,settledBy:ready?"load":"timeout"}:null}))).filter(tab=>tab!==null)},dispose:async()=>{removeFrameNavigated(),removeWithinDocument(),removeLoad(),removeFrameStoppedLoading(),removeRequestStarted(),removeRequestFinished(),removeRequestFailed(),tracker.dispose(),await sendCdpDeviceShellPageCommand(pageSession,"Runtime.evaluate",{expression:`(${DISPOSE_PAGE_READINESS_SRC})()`,returnByValue:!1}).catch(()=>{})}}}var INSTALL_PAGE_OBSERVER_SRC=installPageObserverInPage.toString(),DISPOSE_PAGE_OBSERVER_SRC=disposePageObserverInPage.toString(),PAGE_OBSERVER_GLOBAL="__MEARL_PAGE_OBSERVER__",observationTargets=new WeakMap;function evaluationError(result){return result.exceptionDetails?result.exceptionDetails.exception?.description??result.exceptionDetails.text??"Page observation evaluation failed":null}async function startPageObservation(session){let result=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:`(${INSTALL_PAGE_OBSERVER_SRC})()`,returnByValue:!0}),error48=evaluationError(result);if(error48)throw new Error(error48);let checkpoint=result.result?.value;if(!checkpoint||typeof checkpoint.version!="number")throw new Error("Page observer did not return a checkpoint");let endpoint=await resolveCdpDeviceShellPageEndpoint(session);return observationTargets.set(checkpoint,{...endpoint,startedAt:Date.now()}),checkpoint}async function finishPageObservation(session,checkpoint,options={}){let startedTarget=observationTargets.get(checkpoint),currentTarget=await resolveCdpDeviceShellPageEndpoint(session);if(startedTarget&&currentTarget.url&&(currentTarget.client!==startedTarget.client||currentTarget.frameId!==startedTarget.frameId||currentTarget.url!==(startedTarget.url??checkpoint.url))){let title=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:"document.title",returnByValue:!0}).then(result2=>typeof result2.result?.value=="string"?result2.result.value:"").catch(()=>"");return{mode:"navigation",urlBefore:checkpoint.url,urlAfter:currentTarget.url,title,elapsed:Date.now()-startedTarget.startedAt,loaded:!0,ready:!0,settledBy:"load",pendingRequests:0,fullSnapshotRecommended:!0,snapshotReasons:["navigation"]}}let{quietMs,firstChangeTimeoutMs,timeoutMs}=resolvePageObservationWaitOptions(options),expression=`(() => {
691
+ `)),{contentType:`multipart/form-data; boundary=${boundary}`,body:Buffer.concat(chunks)}}function hasMultipartPayload(data){return data.formData!==void 0||data.files!==void 0}async function executeNodeSendRequest(data,cookieMap=new Map){let{url:url2,method="GET",headers={},params,body,formData,files,responseType="auto",timeout=3e4}=data;if(!url2||typeof url2!="string"||url2.trim()==="")throw new Error("Invalid url: url must be a non-empty string");let normalizedMethod=method.toUpperCase();if(!ALLOWED_METHODS.has(normalizedMethod))throw new Error(`Invalid method: ${method}. Allowed: ${[...ALLOWED_METHODS].join(", ")}`);if(!Number.isFinite(timeout)||timeout<=0)throw new Error("timeout must be a positive number");let targetUrl=new URL(url2);for(let[key,value]of Object.entries(params??{}))targetUrl.searchParams.set(key,String(value));let requestHeaders={Accept:"application/json, text/plain, */*","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",...headers},resolvedSourceHeaders=getSendRequestSourceHeaders(targetUrl,headers);resolvedSourceHeaders.referer?setHeader(requestHeaders,"Referer",resolvedSourceHeaders.referer):removeHeader(requestHeaders,"Referer"),resolvedSourceHeaders.origin?setHeader(requestHeaders,"Origin",resolvedSourceHeaders.origin):removeHeader(requestHeaders,"Origin");let cookieHeader=[...cookieMap.entries()].map(([key,value])=>`${key}=${value}`).join("; ");cookieHeader&&setHeader(requestHeaders,"Cookie",cookieHeader);let xsrfToken=cookieMap.get("XSRF-TOKEN");xsrfToken&&!findSendRequestHeaderName(requestHeaders,"x-xsrf-token")&&setHeader(requestHeaders,"X-XSRF-TOKEN",xsrfToken);let requestBody;if(hasMultipartPayload(data)){if(body!=null)throw new Error("body cannot be combined with formData or files");if(normalizedMethod==="GET"||normalizedMethod==="HEAD")throw new Error(`${normalizedMethod} requests cannot use formData or files`);if(findSendRequestHeaderName(requestHeaders,"content-type"))throw new Error("Do not set Content-Type when using formData or files; Mearl sets the boundary");let multipart=await buildMultipartBody(formData,files);requestBody=multipart.body,setHeader(requestHeaders,"Content-Type",multipart.contentType),setHeader(requestHeaders,"Content-Length",String(multipart.body.byteLength))}else body!=null&&!["GET","HEAD"].includes(normalizedMethod)&&(typeof body=="string"?(requestBody=body,findSendRequestHeaderName(requestHeaders,"content-type")||setHeader(requestHeaders,"Content-Type","text/plain")):(requestBody=JSON.stringify(body),findSendRequestHeaderName(requestHeaders,"content-type")||setHeader(requestHeaders,"Content-Type","application/json")));let result=await nodeFetch(targetUrl.toString(),{method:normalizedMethod,headers:requestHeaders,body:requestBody,timeoutMs:timeout}),contentType=(result.headers["content-type"]??"").split(";")[0].trim().toLowerCase(),responseHeaders=Object.fromEntries(Object.entries(result.headers).filter(([name])=>name.toLowerCase()!=="set-cookie"&&name.toLowerCase()!=="set-cookie2")),responseBody,bodyType;if(responseType==="auto"&&isBinarySendRequestContentType(contentType))responseBody=result.bodyBuffer.toString("base64"),bodyType="base64";else{let trimmed=result.body.trimStart();if(responseType==="json"||responseType==="auto"&&contentType.includes("application/json")||responseType==="auto"&&(trimmed.startsWith("{")||trimmed.startsWith("[")))try{responseBody=JSON.parse(result.body),bodyType="json"}catch{if(responseType==="json")throw new Error("send_request expected a JSON response");responseBody=result.body,bodyType="text"}else responseBody=result.body,bodyType="text"}return{success:!0,status:result.status,statusText:result.statusText,headers:responseHeaders,body:responseBody,bodyType,attachedCookieCount:cookieMap.size}}async function cdpSendRequest(session,data){if(!data.url||typeof data.url!="string")throw new Error("Invalid url: url must be a non-empty string");let cookieMap=new Map;if(data.withCookies!==!1)try{cookieMap=await getCookiesForUrl(session,new URL(data.url).toString())}catch{}return executeNodeSendRequest(data,cookieMap)}async function prepareCdpMtopRequest(session,data,stream=!1){let resolved=resolveMtopRequest(data),cookieMap=await getCookiesForUrl(session,resolved.gatewayUrl.toString()),prepared=prepareSignedMtopRequest(resolved,cookieMap,stream);return{...prepared,requestHeaders:{...prepared.cookieHeader?{Cookie:prepared.cookieHeader}:{},...prepared.requestHeaders}}}async function cdpSendMtopRequest(session,data){let prepared=await prepareCdpMtopRequest(session,data),result=await nodeFetch(prepared.targetUrl.toString(),{method:prepared.normalizedMethod,headers:prepared.requestHeaders,body:prepared.body,timeoutMs:prepared.timeout});return{success:!0,response:parseMtopResponseText(result.body),requestData:prepared.requestData}}async function cdpSendMtopStreamRequest(session,data,callbacks){let prepared=await prepareCdpMtopRequest(session,data,!0),controller=new AbortController,timeoutId=setTimeout(()=>controller.abort(),prepared.timeout);try{await callbacks.onRequestPrepared?.({method:prepared.normalizedMethod,url:prepared.targetUrl.toString(),requestHeaders:Object.entries(prepared.requestHeaders).map(([name,value])=>({name,value}))});let response=await fetch(prepared.targetUrl,{method:prepared.normalizedMethod,headers:prepared.requestHeaders,body:prepared.body,signal:controller.signal}),responseHeaders=[];return response.headers.forEach((value,name)=>{name.toLowerCase()!=="set-cookie"&&responseHeaders.push({name,value})}),await callbacks.onResponse?.({status:response.status,statusText:response.statusText,responseHeaders}),{success:!0,response:await consumeMtopSseResponse(response,event=>callbacks.onReceive(event.data)),requestData:prepared.requestData}}catch(error48){throw error48 instanceof Error&&error48.name==="AbortError"?new Error(`send_mtop_stream timed out after ${prepared.timeout}ms: ${prepared.api}`,{cause:error48}):new Error(`send_mtop_stream failed: ${error48 instanceof Error?error48.message:String(error48)}`,{cause:error48})}finally{clearTimeout(timeoutId)}}registerActions([{name:"send_request",session:"page",handler:cdpSendRequest},{name:"send_mtop_request",session:"page",handler:cdpSendMtopRequest}]);var registries=new WeakMap;function getPageRefRegistry(session){let registry2=registries.get(session);if(!registry2){registry2=new BackendNodeRefRegistry,registries.set(session,registry2);let activeRegistry=registry2;session.client.on("Page.frameNavigated",params=>{params.frame?.parentId||activeRegistry.clearDocument()})}return registry2}function beginPageSnapshotRefs(session){return getPageRefRegistry(session).beginSnapshot()}function resolvePageRef(session,ref){return registries.get(session)?.resolve(ref)}function deletePageRef(session,ref){registries.get(session)?.delete(ref)}function clearPageRefsForNavigation(session){registries.get(session)?.clearDocument()}async function enrichCdpPageChangeSetWithRefs(session,observation){return enrichPageChangeSetWithRefs(observation,getPageRefRegistry(session),selectors=>resolveUniqueBackendNodeIds((method,params)=>sendCdpDeviceShellPageCommand(session,method,params),selectors),(node,backendNodeId)=>({backendNodeId,role:node.role??"",name:node.name??""}))}var APP_PROFILE_BINDING="__mearlCdpAppProfileRelay",appProfileStates=new WeakMap;function serializeForSource2(value){return JSON.stringify(value).replace(/[\u2028\u2029]/g,character=>character==="\u2028"?"\\u2028":"\\u2029")}function installCdpAppProfileRelay(bindingName){let browser=globalThis,target=globalThis;target.__mearlCdpAppProfileRelayInstalled__||(target.__mearlCdpAppProfileRelayInstalled__=!0,browser.addEventListener("message",event=>{if(event.source!==globalThis)return;let message=event.data;if(!message||message.source!=="mearl-app-bridge")return;let requestId=message.requestId;if(typeof requestId!="number")return;if(message.type==="prepareWebView"){browser.postMessage({source:"mearl-content",type:"APP_BRIDGE_PREPARE_WEBVIEW_RESPONSE",requestId,result:{success:!0}},"*");return}if(message.type!=="mtop"&&message.type!=="mtopStream"&&message.type!=="userInfo"&&message.type!=="screenshot")return;let binding=target[bindingName];if(typeof binding=="function")try{binding(JSON.stringify({type:message.type,requestId,payload:message.payload}))}catch{}}))}function installEarlyAppProfileEnvironment(config2){let browser=globalThis,target=globalThis;for(let[key,value]of Object.entries(config2.globals))try{target[key]=value}catch{}let insets=config2.safeAreaInsets??{top:config2.statusBarHeight,right:0,bottom:0,left:0};target.__STATUS_BAR_HEIGHT__=config2.statusBarHeight,target.__SAFE_AREA_INSET_BOTTOM__=insets.bottom;for(let[key,value]of[["userAgent",config2.userAgent],["platform",config2.navigatorPlatform],["vendor","Apple Computer, Inc."],["appVersion",config2.userAgent.replace(/^Mozilla\//,"")],["maxTouchPoints",config2.maxTouchPoints]])try{Object.defineProperty(browser.navigator,key,{configurable:!0,get:()=>value})}catch{}}function installWhenDocumentElementExists(install){let browser=globalThis;if(browser.document.documentElement){install();return}let observer=new browser.MutationObserver(()=>{browser.document.documentElement&&(observer.disconnect(),install())});observer.observe(browser.document,{childList:!0})}function buildDocumentSource(config2){return`;(() => {const config=${serializeForSource2(config2)};(${installCdpAppProfileRelay.toString()})(${JSON.stringify(APP_PROFILE_BINDING)});(${installEarlyAppProfileEnvironment.toString()})(config);(${installWhenDocumentElementExists.toString()})(() => {${buildAppProfileRuntimeCallSource("config")};});})();`}function appProfileEmulationCommands(config2,userAgent){return buildEnableEmulationCommands(config2).map(command=>command.method==="Emulation.setUserAgentOverride"?{...command,params:{userAgent,platform:config2.platform}}:command)}async function sendCommands(client2,commands){for(let{method,params,optional:optional2}of commands)await client2.sendCommand(method,params).catch(error48=>{if(!optional2)throw error48})}async function postRuntimeMessage(client2,executionContextId,message){await client2.sendCommand("Runtime.evaluate",{expression:`window.postMessage(${serializeForSource2(message)}, '*')`,...typeof executionContextId=="number"?{contextId:executionContextId}:{}})}function listenForBridgeRequests(session,client2,state){return client2.on("Runtime.bindingCalled",params=>{if(params?.name!==APP_PROFILE_BINDING||appProfileStates.get(session)!==state)return;let request;try{request=JSON.parse(params.payload)}catch{return}if(typeof request.requestId!="number")return;let requestId=request.requestId,contextId=typeof params.executionContextId=="number"?params.executionContextId:void 0,reply=message=>postRuntimeMessage(client2,contextId,{requestId,source:"mearl-content",...message});(async()=>{if(request.type==="screenshot"){if(client2!==session.client)return;try{let result=await cdpPageScreenshot(session,{format:"png"});await reply({type:"APP_BRIDGE_SCREENSHOT_RESPONSE",result:{success:!0,...result}})}catch(error48){await reply({type:"APP_BRIDGE_SCREENSHOT_RESPONSE",result:{success:!1,error:error48 instanceof Error?error48.message:String(error48)}})}return}if(request.type==="userInfo"){try{let currentUrl=await readCdpCurrentUrl(session,"user_info"),result=await session.client.sendCommand("Network.getCookies",{urls:[currentUrl]}),response=resolveAppProfileUserInfo(currentUrl,(result.cookies??[]).map(cookie=>({name:cookie.name,value:cookie.value})));await reply({type:"APP_BRIDGE_USER_INFO_RESPONSE",result:{success:!0,response}})}catch(error48){await reply({type:"APP_BRIDGE_USER_INFO_RESPONSE",result:{success:!1,error:error48 instanceof Error?error48.message:String(error48)}})}return}let payload=request.payload??{},mtopPayload={...payload,...typeof payload.v=="string"&&payload.version===void 0?{version:payload.v}:{}},streamCapture;try{if(request.type==="mtopStream"){await cdpSendMtopStreamRequest(session,mtopPayload,{onRequestPrepared:metadata=>{streamCapture=recordCdpMtopStreamStart(session.buffers,{api:String(mtopPayload.api??""),url:metadata.url,method:metadata.method,requestHeaders:metadata.requestHeaders,requestData:mtopPayload.data??null})},onResponse:metadata=>{streamCapture&&recordCdpMtopStreamResponse(session.buffers,streamCapture,metadata)},onReceive:async data=>{streamCapture&&recordCdpMtopStreamChunk(session.buffers,streamCapture,data),await reply({type:"APP_BRIDGE_MTOP_STREAM_EVENT",eventType:"onReceive",data})}}),streamCapture&&recordCdpMtopStreamEnd(session.buffers,streamCapture),await reply({type:"APP_BRIDGE_MTOP_STREAM_EVENT",eventType:"onFinish",data:{}});return}let result=await cdpSendMtopRequest(session,mtopPayload);await reply({type:"APP_BRIDGE_MTOP_RESPONSE",result})}catch(error48){let message=error48 instanceof Error?error48.message:String(error48);request.type==="mtopStream"?(streamCapture&&recordCdpMtopStreamEnd(session.buffers,streamCapture,{error:message}),await reply({type:"APP_BRIDGE_MTOP_STREAM_EVENT",eventType:"onError",data:{ret:["HY_FAILED"],msg:message}})):await reply({type:"APP_BRIDGE_MTOP_RESPONSE",result:{success:!1,error:message}})}})().catch(()=>{})})}async function installChildTarget2(session,state,params,source){let sessionId=params.sessionId;if(typeof sessionId!="string")return;let child=session.client.createChildSession(sessionId);try{if(params.targetInfo?.type!=="iframe"||appProfileStates.get(session)!==state)return;await child.sendCommand("Runtime.enable");let frameName=(await child.sendCommand("Runtime.evaluate",{expression:"window.name",returnByValue:!0})).result?.value;if(frameName!=="__mearl_root__"&&frameName!=="__mearl_layer__")return;state.emulation?await sendCommands(child,appProfileEmulationCommands(state.emulation,state.config.userAgent)):await child.sendCommand("Emulation.setUserAgentOverride",{userAgent:state.config.userAgent,platform:state.config.navigatorPlatform}),await child.sendCommand("Runtime.addBinding",{name:APP_PROFILE_BINDING}),state.disposeListeners.push(listenForBridgeRequests(session,child,state)),state.childClients.push(child),await child.sendCommand("Page.addScriptToEvaluateOnNewDocument",{source}).catch(()=>{}),await child.sendCommand("Runtime.evaluate",{expression:source})}finally{await child.sendCommand("Runtime.runIfWaitingForDebugger").catch(()=>{})}}async function disposeState(session,state){appProfileStates.get(session)===state&&appProfileStates.delete(session),setCdpDeviceShellChildEnvironmentManagedByApp(session,!1);for(let dispose of state.disposeListeners.splice(0))dispose();isCdpDeviceShellActive(session)||await session.client.sendCommand("Target.setAutoAttach",{autoAttach:!1,waitForDebuggerOnStart:!1,flatten:!0}).catch(()=>{}),await session.client.sendCommand("Page.removeScriptToEvaluateOnNewDocument",{identifier:state.documentScriptIdentifier}).catch(()=>{}),await Promise.allSettled([session.client,...state.childClients].map(client2=>client2.sendCommand("Runtime.removeBinding",{name:APP_PROFILE_BINDING})));let deviceEmulation=session.emulation?.config;if(deviceEmulation){let commands=buildEnableEmulationCommands(deviceEmulation);await sendCommands(session.client,commands),await Promise.allSettled(state.childClients.map(client2=>sendCommands(client2,commands)))}else await Promise.allSettled([session.client,...state.childClients].map(client2=>client2.sendCommand("Emulation.setUserAgentOverride",{userAgent:""})))}function resolveCdpAppProfile(profile,options={}){return{profile:resolveAppProfile(profile,{os:options.os,appVersion:options.appVersion,deviceModel:options.deviceModel,devicePreset:options.devicePreset,orientation:options.orientation,bridgeConfig:options.bridgeConfig})}}async function applyResolvedCdpAppProfile(session,resolved){let previous=appProfileStates.get(session);previous&&await disposeState(session,previous);let source=buildDocumentSource(resolved.profile.injected),deviceEmulation=session.emulation?.config;deviceEmulation?await sendCommands(session.client,appProfileEmulationCommands(deviceEmulation,resolved.profile.ua)):await session.client.sendCommand("Emulation.setUserAgentOverride",{userAgent:resolved.profile.ua,platform:resolved.profile.injected.navigatorPlatform}),await session.client.sendCommand("Runtime.enable"),await session.client.sendCommand("Runtime.addBinding",{name:APP_PROFILE_BINDING});let script=await session.client.sendCommand("Page.addScriptToEvaluateOnNewDocument",{source});if(typeof script.identifier!="string"||!script.identifier)throw deviceEmulation?await sendCommands(session.client,buildEnableEmulationCommands(deviceEmulation)):await session.client.sendCommand("Emulation.setUserAgentOverride",{userAgent:""}).catch(()=>{}),new Error("Chrome did not return an app profile bootstrap script identifier");let state={config:resolved.profile.injected,documentScriptIdentifier:script.identifier,emulation:deviceEmulation,disposeListeners:[],childClients:[]};appProfileStates.set(session,state),setCdpDeviceShellChildEnvironmentManagedByApp(session,!0),state.disposeListeners.push(listenForBridgeRequests(session,session.client,state)),state.disposeListeners.push(session.client.on("Target.attachedToTarget",params=>{installChildTarget2(session,state,params,source).catch(()=>{})})),state.disposeListeners.push(session.client.on("Target.detachedFromTarget",params=>{let sessionId=params?.sessionId;typeof sessionId!="string"||appProfileStates.get(session)!==state||(state.childClients=state.childClients.filter(client2=>client2.sessionId!==sessionId))})),await session.client.sendCommand("Target.setAutoAttach",{autoAttach:!0,waitForDebuggerOnStart:!0,flatten:!0,filter:[{type:"iframe"},{exclude:!0}]})}async function updateCdpAppProfileDeviceEmulation(session,emulation){let state=appProfileStates.get(session);if(state)return state.emulation=emulation??void 0,await Promise.allSettled(state.childClients.map(client2=>emulation?sendCommands(client2,appProfileEmulationCommands(emulation,state.config.userAgent)):client2.sendCommand("Emulation.setUserAgentOverride",{userAgent:state.config.userAgent,platform:state.config.navigatorPlatform}))),{userAgent:state.config.userAgent,platform:state.config.navigatorPlatform}}function isCdpAppProfileActive(session){return appProfileStates.has(session)}async function waitForCdpAppProfileLoad(session,timeoutMs=3e4){if(isCdpDeviceShellActive(session)){await waitForCdpDeviceShellLoad(session,Math.min(timeoutMs,15e3));return}await waitForPageLoad(session,timeoutMs)}async function clearCdpAppProfile(session,reload=!0){let state=appProfileStates.get(session);if(!state)return{enabled:!1,reloaded:!1};await disposeState(session,state);let reloaded=!1;return reload&&(clearPageRefsForNavigation(session),await session.client.sendCommand("Page.reload",{}),await waitForCdpAppProfileLoad(session),reloaded=!0),{enabled:!1,reloaded}}async function cdpSetAppProfile(session,data){if(typeof data?.enabled!="boolean")throw new Error('set_app_profile: "enabled" is required (true to enable, false to clear)');if(!data.enabled){if(data.emulation===void 0)return clearCdpAppProfile(session,data.reload!==!1);let hadDeviceShell=await clearCdpDeviceShell(session),appResult=await clearCdpAppProfile(session,!1);await sendCommands(session.client,buildDisableEmulationCommands()),session.emulation=void 0;let reloaded2=!1;return(data.reload!==!1||hadDeviceShell)&&(clearPageRefsForNavigation(session),await session.client.sendCommand("Page.reload",{}),await waitForPageLoad(session,3e4),reloaded2=!0),{...appResult,device:{enabled:!1,deviceShell:!1,reloaded:reloaded2},reloaded:reloaded2}}if(!data.profile||typeof data.profile!="string")throw new Error('set_app_profile: "profile" is required when enabled=true');let resolved=resolveCdpAppProfile(data.profile,{...data,devicePreset:session.emulation?.config?.presetName,orientation:session.emulation?.config?.orientation});if(data.emulation!==void 0){let emulation=resolveEmulationConfig({enabled:!0,preset:resolved.profile.recommendedPreset,...data.emulation}),targetOs=emulation.platform==="Android"||emulation.platform==="OpenHarmony"?"android":"ios",targetDeviceModel=data.deviceModel??(emulation.presetName?DEVICE_PRESETS[emulation.presetName].appProfileModel:resolved.profile.injected.globals.__DEVICE_MODEL__),appResolved=resolveCdpAppProfile(data.profile,{...data,os:targetOs,deviceModel:targetDeviceModel}),deviceShell=data.emulation.deviceShell??!0;session.emulation={mobile:emulation.mobile,touch:emulation.touch,config:emulation,deviceShell},await applyResolvedCdpAppProfile(session,appResolved);let shellChanged=deviceShell?await applyCdpDeviceShell(session,emulation):await clearCdpDeviceShell(session);deviceShell&&setCdpDeviceShellChildEnvironmentManagedByApp(session,!0);let reloaded2=!1;return(data.reload!==!1||shellChanged)&&(clearPageRefsForNavigation(session),await session.client.sendCommand("Page.reload",{}),deviceShell?await waitForCdpDeviceShellLoad(session):await waitForPageLoad(session,3e4),reloaded2=!0),{enabled:!0,profile:appResolved.profile.profile,label:appResolved.profile.label,userAgent:appResolved.profile.ua,os:appResolved.profile.injected.platform==="Android"?"android":"ios",device:{enabled:!0,preset:emulation.presetName,viewport:{width:emulation.width,height:emulation.height,deviceScaleFactor:emulation.deviceScaleFactor,scale:emulation.scale??1},userAgent:emulation.userAgent,mobile:emulation.mobile,touch:emulation.touch,orientation:emulation.orientation,deviceShell,reloaded:reloaded2},reloaded:reloaded2}}await applyResolvedCdpAppProfile(session,resolved);let reloaded=!1;return data.reload!==!1&&(clearPageRefsForNavigation(session),await session.client.sendCommand("Page.reload",{}),await waitForCdpAppProfileLoad(session),reloaded=!0),{enabled:!0,profile:resolved.profile.profile,label:resolved.profile.label,userAgent:resolved.profile.ua,os:resolved.profile.injected.platform==="Android"?"android":"ios",reloaded}}registerActions([{name:"set_app_profile",session:"page",handler:cdpSetAppProfile}]);async function releaseCdpControl(session){let pageSessions=session.listOpenPageSessions(),targetIds=new Set(pageSessions.map(pageSession=>pageSession.targetId)),affectedTabIds=session.listRegisteredTabIds(targetIds).sort((a,b)=>a-b),hadActiveControl=session.hasActiveConnections();try{await releaseCdpRecordings(pageSessions)}finally{await Promise.allSettled(pageSessions.map(async pageSession=>{let[,deviceShell]=await Promise.allSettled([clearCdpAppProfile(pageSession,!1),clearCdpDeviceShell(pageSession),releaseControlledIndicator(pageSession)]);deviceShell.status==="fulfilled"&&deviceShell.value&&await pageSession.client.sendCommand("Page.reload",{}).catch(()=>{})})),clearCdpMockState(),session.close()}return{released:!0,hadActiveControl,affectedTabIds}}var SAMPLE_PAGE_READINESS_SRC=samplePageReadinessInPage.toString(),DISPOSE_PAGE_READINESS_SRC=disposePageReadinessObserverInPage.toString();async function startCdpNavigationObserver(cdpSession2,pageSession,urlBefore,options={}){let pageEndpoint=await resolveCdpDeviceShellPageEndpoint(pageSession),pageClient=pageEndpoint.client;await ensureCdpDomain(pageClient,"Page"),await ensureCdpDomain(pageClient,"Runtime"),options.trackNetwork&&await ensureCdpDomain(pageClient,"Network");let browserClient=null,baselineTargetIds=new Set;if(options.trackOpenedTabs)try{browserClient=await cdpSession2.getBrowserClient();let targets=await browserClient.sendCommand("Target.getTargets");for(let target of targets.targetInfos??[])baselineTargetIds.add(target.targetId)}catch{browserClient=null}let frameTree=await pageClient.sendCommand("Page.getFrameTree"),observedFrameId=pageEndpoint.frameId??frameTree.frameTree?.frame?.id,observesParentTargetSubframe=pageClient===pageSession.client&&pageEndpoint.frameId!==void 0,tracker=createNavigationSettlementTracker({urlBefore,trackNetwork:options.trackNetwork,networkAvailable:options.trackNetwork===!0,networkIdleMs:options.networkIdleMs,contentReadyAfterMs:options.contentReadyAfterMs,sampleContent:async()=>(await sendCdpDeviceShellPageCommand(pageSession,"Runtime.evaluate",{expression:`(${SAMPLE_PAGE_READINESS_SRC})(${options.networkIdleMs??500})`,returnByValue:!0})).result?.value}),removeFrameNavigated=pageClient.on("Page.frameNavigated",params=>{observedFrameId&&params.frame?.id!==observedFrameId||tracker.markStarted(params.frame?.url)}),removeWithinDocument=pageClient.on("Page.navigatedWithinDocument",params=>{observedFrameId&&params.frameId!==observedFrameId||(tracker.markStarted(params.url),tracker.markDocumentComplete(params.url))}),removeLoad=pageClient.on("Page.loadEventFired",()=>{observesParentTargetSubframe||tracker.hasStarted()&&tracker.markDocumentComplete()}),removeFrameStoppedLoading=pageClient.on("Page.frameStoppedLoading",params=>{observedFrameId&&params.frameId!==observedFrameId||tracker.hasStarted()&&tracker.markDocumentComplete()}),removeRequestStarted=options.trackNetwork?pageClient.on("Network.requestWillBeSent",params=>{isPotentialNavigationRequest(params.type??"",params.request?.url??"")&&tracker.requestStarted(params.requestId)}):()=>{},onRequestFinished=params=>tracker.requestFinished(params.requestId),removeRequestFinished=options.trackNetwork?pageClient.on("Network.loadingFinished",onRequestFinished):()=>{},removeRequestFailed=options.trackNetwork?pageClient.on("Network.loadingFailed",onRequestFinished):()=>{};return{hasStarted:tracker.hasStarted,hasNetworkActivity:tracker.hasNetworkActivity,waitForStart:tracker.waitForStart,waitForNetworkIdle:tracker.waitForNetworkIdle,waitForResult:async timeoutMs=>{let result=await tracker.waitForResult(timeoutMs);try{let pageState=await sendCdpDeviceShellPageCommand(pageSession,"Runtime.evaluate",{expression:"({ title: document.title, url: location.href })",returnByValue:!0});return{...result,title:pageState.result?.value?.title??result.title,urlAfter:pageState.result?.value?.url??result.urlAfter}}catch{return result}},getOpenedTabs:async timeoutMs=>{if(!browserClient||options.sourceTabId===void 0)return[];let candidates=((await browserClient.sendCommand("Target.getTargets")).targetInfos??[]).filter(target=>target.type==="page"&&target.openerId===pageSession.targetId&&!baselineTargetIds.has(target.targetId));return(await Promise.all(candidates.map(async candidate=>{let tabId=await cdpSession2.ensureTargetRegistered(candidate.targetId),ready=!1;try{let openedPageSession=await cdpSession2.getPageSession(tabId);await ensureCdpDomain(openedPageSession.client,"Page"),await waitForPageLoad(openedPageSession,timeoutMs),ready=!0}catch{}let targetInfo=await browserClient.sendCommand("Target.getTargetInfo",{targetId:candidate.targetId}).then(result=>result.targetInfo).catch(()=>null);return targetInfo?{tabId,openerTabId:options.sourceTabId,url:targetInfo.url??candidate.url??"",title:targetInfo.title??candidate.title??"",ready,settledBy:ready?"load":"timeout"}:null}))).filter(tab=>tab!==null)},dispose:async()=>{removeFrameNavigated(),removeWithinDocument(),removeLoad(),removeFrameStoppedLoading(),removeRequestStarted(),removeRequestFinished(),removeRequestFailed(),tracker.dispose(),await sendCdpDeviceShellPageCommand(pageSession,"Runtime.evaluate",{expression:`(${DISPOSE_PAGE_READINESS_SRC})()`,returnByValue:!1}).catch(()=>{})}}}var INSTALL_PAGE_OBSERVER_SRC=installPageObserverInPage.toString(),DISPOSE_PAGE_OBSERVER_SRC=disposePageObserverInPage.toString(),PAGE_OBSERVER_GLOBAL="__MEARL_PAGE_OBSERVER__",observationTargets=new WeakMap;function evaluationError(result){return result.exceptionDetails?result.exceptionDetails.exception?.description??result.exceptionDetails.text??"Page observation evaluation failed":null}async function startPageObservation(session){let result=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:`(${INSTALL_PAGE_OBSERVER_SRC})()`,returnByValue:!0}),error48=evaluationError(result);if(error48)throw new Error(error48);let checkpoint=result.result?.value;if(!checkpoint||typeof checkpoint.version!="number")throw new Error("Page observer did not return a checkpoint");let endpoint=await resolveCdpDeviceShellPageEndpoint(session);return observationTargets.set(checkpoint,{...endpoint,startedAt:Date.now()}),checkpoint}async function finishPageObservation(session,checkpoint,options={}){let startedTarget=observationTargets.get(checkpoint),currentTarget=await resolveCdpDeviceShellPageEndpoint(session);if(startedTarget&&currentTarget.url&&(currentTarget.client!==startedTarget.client||currentTarget.frameId!==startedTarget.frameId||currentTarget.url!==(startedTarget.url??checkpoint.url))){let title=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:"document.title",returnByValue:!0}).then(result2=>typeof result2.result?.value=="string"?result2.result.value:"").catch(()=>"");return{mode:"navigation",urlBefore:checkpoint.url,urlAfter:currentTarget.url,title,elapsed:Date.now()-startedTarget.startedAt,loaded:!0,ready:!0,settledBy:"load",pendingRequests:0,fullSnapshotRecommended:!0,snapshotReasons:["navigation"]}}let{quietMs,firstChangeTimeoutMs,timeoutMs}=resolvePageObservationWaitOptions(options),expression=`(() => {
692
692
  const state = globalThis[${JSON.stringify(PAGE_OBSERVER_GLOBAL)}];
693
693
  if (!state || typeof state.waitSince !== 'function') {
694
694
  throw new Error('Page observer is unavailable after the action');
@@ -700,7 +700,7 @@ Content-Type: ${file2.contentType}\r
700
700
  ${firstChangeTimeoutMs},
701
701
  ${timeoutMs}
702
702
  );
703
- })()`,result=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression,returnByValue:!0,awaitPromise:!0},timeoutMs+2e3),error48=evaluationError(result);if(error48)throw new Error(error48);let changeSet=result.result?.value;if(!changeSet||changeSet.mode!=="delta")throw new Error("Page observer did not return a change set");return changeSet}async function disposePageObservation(session){await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:`(${DISPOSE_PAGE_OBSERVER_SRC})()`,returnByValue:!1}).catch(()=>{})}function filterRequests(buffers,opts){let pattern=opts.filter?compileTextPattern(opts.filter):void 0;return queryCapturedEntries(buffers.requests.filter(request=>Number.isSafeInteger(request.captureSequence)),buffers.capture,{after:opts.after,since:opts.since,limit:opts.count??10},request=>(!opts.source||opts.source==="all"||request.source===opts.source)&&(!pattern||matchesTextPattern(request.url,pattern)||matchesTextPattern(request.apiName,pattern)),buffers.capture.droppedRequestsThroughSequence,"requests")}async function cdpGetRequests(session,data){let opts={count:data.count??10,filter:data.filter,since:data.since,after:data.after,source:data.source,applyHiddenFilter:data.applyHiddenFilter!==!1},captured=filterRequests(session.buffers,opts),serializeOpts={includeBody:data.includeBody!==!1,includeHeaders:data.includeHeaders===!0,maxBodySize:data.maxBodySize??5e4,fields:data.fields,keysOnly:data.keysOnly===!0};return{meta:{count:captured.entries.length,totalMatched:captured.totalMatched,totalInBuffer:session.buffers.requests.length,filter:data.filter,since:data.since,after:data.after,nextCursor:captured.nextCursor,hasMore:captured.hasMore,gap:captured.gap,source:"cdp"},requests:captured.entries.map(r=>serializeRequest(r,serializeOpts))}}async function cdpGetLogs(session,data){let{level,since,after,limit=100,filter}=data,pattern=filter?compileTextPattern(filter):void 0,captured=queryCapturedEntries(session.buffers.logs,session.buffers.capture,{after,since,limit},log2=>(!level||level==="all"||log2.level===level)&&(!pattern||matchesTextPattern(log2.message,pattern)||log2.args.some(arg=>matchesTextPattern(arg,pattern))),session.buffers.capture.droppedLogsThroughSequence,"logs"),captureStatus=session.buffers.logs.length===0?"armed":"active";return{meta:{count:captured.entries.length,totalMatched:captured.totalMatched,totalInBuffer:session.buffers.logs.length,level:level||"all",since,after,filter,nextCursor:captured.nextCursor,hasMore:captured.hasMore,gap:captured.gap,captureStatus,...captureStatus==="armed"&&{hint:"Log capture is active, but this tab has no captured history yet. Reload the current tab or repeat the triggering action, then call get_logs again."},source:"cdp"},logs:captured.entries}}async function cdpCaptureCheckpoint(session,_data){return{tabId:session.tabId,cursor:captureCheckpoint(session.buffers.capture),timestampMs:Date.now(),captureStatus:session.buffers.capture.currentSequence===0?"armed":"active"}}async function collectCdpPageDiagnostics(session,after,diagnostics){let result={};if(diagnostics.logs){let options=diagnostics.logs===!0?{level:"error",limit:100}:{level:"error",limit:100,...diagnostics.logs};result.logs=await cdpGetLogs(session,{...options,after})}if(diagnostics.requests){let options=diagnostics.requests===!0?{source:"all",includeBody:!1,count:100}:{source:"all",includeBody:!1,count:100,...diagnostics.requests};result.requests=await cdpGetRequests(session,{...options,after})}if(diagnostics.events){let options=diagnostics.events===!0?{source:"all",limit:100}:{source:"all",limit:100,...diagnostics.events};result.events=await cdpGetEvents(session,{...options,after})}return result}async function cdpGetEvents(session,data){let{source="all",event_type,since,after,limit=20,filter,includeRaw=!1}=data,response=queryCapturedTrackingEvents(session.buffers.events,session.buffers.capture,{source,event_type,since,after,limit,filter},session.buffers.capture.droppedEventsThroughSequence),captureStatus=response.totalInBuffer===0?"armed":"active",hint=response.events.length===0&&captureStatus==="armed"?TRACKING_CAPTURE_ARMED_HINT:void 0;return{meta:{count:response.events.length,totalMatched:response.totalMatched,totalInBuffer:response.totalInBuffer,source,captureStatus,captureSource:"cdp",includeRaw,after,nextCursor:response.nextCursor,hasMore:response.hasMore,gap:response.gap,hint},events:response.events.map(event=>formatTrackingEvent(event,includeRaw))}}registerActions([{name:"tab_checkpoint",session:"page",handler:cdpCaptureCheckpoint},{name:"capture_checkpoint",session:"page",handler:cdpCaptureCheckpoint},{name:"get_requests",session:"page",handler:cdpGetRequests},{name:"get_logs",session:"page",handler:cdpGetLogs},{name:"get_events",session:"page",handler:cdpGetEvents}]);async function cdpRunActions(session,data,controlSource="local"){let{actions,tabId}=data;if(!Array.isArray(actions)||actions.length===0)throw new Error("actions must be a non-empty array");if(actions.length>50)throw new Error("actions array exceeds maximum of 50 steps");let results=[];for(let i=0;i<actions.length;i++){let step=actions[i],stepAction=String(step.action??"");if(!stepAction)return{results,completedSteps:results.length,totalSteps:actions.length,error:`Step ${i}: action must be a non-empty string`,failedStep:i};if(!isBrowserCommandAction(stepAction))return{results,completedSteps:results.length,totalSteps:actions.length,error:`Step ${i}: unsupported action "${stepAction}"`,failedStep:i};if(stepAction==="run_actions")return{results,completedSteps:results.length,totalSteps:actions.length,error:`Step ${i}: composite action "${stepAction}" is not allowed in run_actions`,failedStep:i};if(stepAction==="browser_release")return{results,completedSteps:results.length,totalSteps:actions.length,error:`Step ${i}: browser-level action "${stepAction}" is not allowed in run_actions`,failedStep:i};let mergedData={...step.data};tabId!==void 0&&mergedData.tabId===void 0&&(mergedData.tabId=tabId);try{let result=await dispatchCdpAction(session,stepAction,mergedData,controlSource);results.push({step:i,action:stepAction,success:!0,data:result})}catch(error48){let errorMessage2=error48 instanceof Error?error48.message:String(error48);return results.push({step:i,action:stepAction,success:!1,error:errorMessage2}),{results,completedSteps:i,totalSteps:actions.length,error:errorMessage2,failedStep:i}}}return{results,completedSteps:actions.length,totalSteps:actions.length}}async function cdpObservedPageAction(session,action,data,controlSource="local"){let{actionData,observe,diagnostics}=splitObservedActionPayload(action,data),{tabId}=actionData;if(typeof tabId!="number")throw new Error(`${action} requires a numeric tabId`);let pageSession=await session.getPageSession(tabId);if(await ensureControlledIndicator(pageSession,controlSource),observe===!1){if(!diagnostics)return dispatchCdpAction(session,action,actionData,controlSource);let cursor=captureCheckpoint(pageSession.buffers.capture),actionResult,actionFailure;try{actionResult=await dispatchCdpAction(session,action,actionData,controlSource)}catch(error48){actionFailure=describePageActionFailure(error48)}let result2={action:{name:action,success:actionFailure===void 0,...actionResult!==void 0?{data:actionResult}:{},...actionFailure||{}}};return actionFailure?.stage==="precondition"?result2:{...result2,diagnostics:await collectCdpPageDiagnostics(pageSession,cursor,diagnostics)}}let diagnosticsCursor,result=await runPageAct({action,actionData,observe},{startObservation:()=>startPageObservation(pageSession),finishObservation:(checkpoint,options)=>finishPageObservation(pageSession,checkpoint,options),startNavigationObserver:options=>startCdpNavigationObserver(session,pageSession,options.urlBefore,options),executeAction:(name,params)=>(diagnostics&&(diagnosticsCursor=captureCheckpoint(pageSession.buffers.capture)),dispatchCdpAction(session,name,{...params,tabId},controlSource)),finalizeObservation:observation=>observation.mode==="delta"?enrichCdpPageChangeSetWithRefs(pageSession,observation):Promise.resolve(observation),disposeObservation:()=>disposePageObservation(pageSession)});return!diagnostics||!diagnosticsCursor||result.action.stage==="precondition"?result:{...result,diagnostics:await collectCdpPageDiagnostics(pageSession,diagnosticsCursor,diagnostics)}}registerActions([{name:"run_actions",session:"browser",handler:cdpRunActions}]);import{randomUUID as randomUUID4}from"node:crypto";import{createReadStream}from"node:fs";var FILE_CHUNK_BYTES=256*1024,TRANSFER_ACTION_TIMEOUT_MS=15e3;async function sendFileChunks(transferId,fileIndex,file2,send){let chunkIndex=0,sendChunk=async chunk=>{await send("__send_request_file_chunk",{transferId,fileIndex,chunkIndex,base64:chunk.toString("base64")},TRANSFER_ACTION_TIMEOUT_MS),chunkIndex+=1};if(file2.filePath){for await(let chunk of createReadStream(file2.filePath,{highWaterMark:FILE_CHUNK_BYTES}))await sendChunk(Buffer.isBuffer(chunk)?chunk:Buffer.from(chunk));return}let content=file2.content;for(let offset=0;offset<content.byteLength;offset+=FILE_CHUNK_BYTES)await sendChunk(content.subarray(offset,offset+FILE_CHUNK_BYTES))}async function prepareFileTransfer(data,send){let files=await resolveSendRequestFiles(data.files??[]);if(files.length===0)throw new Error("files must contain at least one file");let transferId=randomUUID4();await send("__send_request_file_start",{transferId,files:files.map(file2=>file2.descriptor),url:data.url,withCookies:data.withCookies},TRANSFER_ACTION_TIMEOUT_MS);try{for(let index=0;index<files.length;index+=1)await sendFileChunks(transferId,index,files[index],send)}catch(error48){throw await send("__send_request_file_abort",{transferId},TRANSFER_ACTION_TIMEOUT_MS).catch(()=>{}),error48}let{files:_files,...request}=data;return{transferId,request}}async function abortFileTransfer(transferId,send){await send("__send_request_file_abort",{transferId},TRANSFER_ACTION_TIMEOUT_MS).catch(()=>{})}function hasSendRequestFiles(data){return!!data&&typeof data=="object"&&Array.isArray(data.files)&&data.files.length>0}function hasRunActionsSendRequestFiles(data){if(!data||typeof data!="object")return!1;let actions=data.actions;return Array.isArray(actions)&&actions.some(step=>step?.action==="send_request"&&hasSendRequestFiles(step.data))}async function sendRequestWithTransferredFiles(data,send){let prepared=await prepareFileTransfer(data,send);try{let requestTimeout=Number(data.timeout??3e4);return await send("__send_request_with_files",{...prepared.request,transferId:prepared.transferId},(Number.isFinite(requestTimeout)&&requestTimeout>0?requestTimeout:3e4)+5e3)}catch(error48){throw await abortFileTransfer(prepared.transferId,send),error48}}async function sendRunActionsWithTransferredFiles(data,send,resolveTimeoutMs){if(!Array.isArray(data.actions))throw new Error("actions must be an array");let preparedTransferIds=[];try{let actions=[];for(let index=0;index<data.actions.length;index+=1){let step=data.actions[index],action=String(step.action??"");if(action.startsWith("__"))throw new Error(`Step ${index}: internal action "${action}" is not available to clients`);if(action!=="send_request"||!hasSendRequestFiles(step.data)){actions.push(step);continue}let prepared=await prepareFileTransfer(step.data,send);preparedTransferIds.push(prepared.transferId),actions.push({action:"__send_request_with_files",data:{...prepared.request,transferId:prepared.transferId}})}let transformed={...data,actions};return await send("run_actions",transformed,resolveTimeoutMs(transformed))}finally{await Promise.all(preparedTransferIds.map(transferId=>abortFileTransfer(transferId,send)))}}import fs2 from"node:fs";import path2 from"node:path";import{spawn as spawn3,spawnSync}from"node:child_process";var processes=new Map,CONNECTORS_SUBDIR="connectors",REGISTRY_DIR=keyedDir(CONNECTORS_SUBDIR),OFFICIAL_NPM_REGISTRY="https://registry.npmjs.org",STATUS_POLL_MS=5e3;function recordFileFor(serverUrl){return keyedConfigFile(CONNECTORS_SUBDIR,serverUrl)}var logFn=()=>{},isDaemon=!1,sendToExtensionFn=()=>{},nativeHostVersion="unknown",lastPushedKey="",statusWatcher=null;function initCloudConnector(deps){logFn=deps.log,isDaemon=deps.isDaemonMode,sendToExtensionFn=deps.sendToExtension,nativeHostVersion=deps.version,startStatusWatcher()}function liveRecords(){return readLiveRecords(REGISTRY_DIR)}function reconcile(){let live=new Map;for(let record2 of liveRecords())live.set(record2.serverUrl,{serverUrl:record2.serverUrl,pid:record2.pid,...record2.connectorId?{connectorId:record2.connectorId}:{},...record2.name?{name:record2.name}:{}});for(let[serverUrl,entry]of processes)isAlive(entry.pid)?live.has(serverUrl)||live.set(serverUrl,{serverUrl,pid:entry.pid,...entry.connectorId?{connectorId:entry.connectorId}:{},...entry.name?{name:entry.name}:{}}):processes.delete(serverUrl);return Array.from(live.values())}function connectorsKey(connectors){return connectors.map(c=>`${c.serverUrl}@${c.pid}@${c.connectorId??""}@${c.name??""}`).sort().join("|")}function pushStatus(connectors){isDaemon||(lastPushedKey=connectorsKey(connectors),sendToExtensionFn({type:"cloud_connector_status_changed",data:{connectors}}))}function notifyStatusChanged(){pushStatus(reconcile())}function pushIfChanged(){let connectors=reconcile();return connectorsKey(connectors)!==lastPushedKey&&pushStatus(connectors),connectors}function startStatusWatcher(){isDaemon||statusWatcher||(statusWatcher=setInterval(()=>{try{pushIfChanged()}catch{}},STATUS_POLL_MS),statusWatcher.unref?.())}function registerConnector(serverUrl,pid,child){let record2=readRecord(recordFileFor(serverUrl)),entry={pid,serverUrl,...record2?.connectorId?{connectorId:record2.connectorId}:{},...record2?.name?{name:record2.name}:{},...child?{process:child}:{}};return processes.set(serverUrl,entry),notifyStatusChanged(),entry}function clearConnector(serverUrl,expected){let entry=processes.get(serverUrl);entry&&entry.pid!==expected.pid||expected.child&&entry?.process&&entry.process!==expected.child||(processes.delete(serverUrl),removeRecordIfPid(recordFileFor(serverUrl),expected.pid),notifyStatusChanged())}function findLiveConnector(serverUrl){let entry=processes.get(serverUrl);if(entry&&isAlive(entry.pid))return entry.pid;let record2=readRecord(recordFileFor(serverUrl));return record2&&isAlive(record2.pid)?record2.pid:(entry&&processes.delete(serverUrl),record2&&removeRecordIfPid(recordFileFor(serverUrl),record2.pid),null)}function findBin(bin,env){let lookupCommand=process.platform==="win32"?"where":"which",result=spawnSync(lookupCommand,[bin],{encoding:"utf-8",env});return result.status===0&&result.stdout.split(/\r?\n/).find(Boolean)||null}function getBinVersion(binPath){try{let result=spawnSync(process.execPath,[binPath,"--version"],{encoding:"utf-8",timeout:5e3});return result.status===0?result.stdout.trim():null}catch{return null}}function makeDirectCommand(connectorPath){return process.platform!=="win32"?{command:process.execPath,argsPrefix:[connectorPath],displayName:`${process.execPath} ${connectorPath}`}:{command:connectorPath,argsPrefix:[],displayName:connectorPath}}function resolveCloudConnectorCommand(){let connectorBin=process.platform==="win32"?"mearl-cloud-connector.cmd":"mearl-cloud-connector",pathDelimiter=process.platform==="win32"?";":":",nodeDir=path2.dirname(process.execPath),enrichedPath=[nodeDir,process.env.PATH].filter(Boolean).join(pathDelimiter),enrichedEnv={...process.env,PATH:enrichedPath},connectorPath=findBin(connectorBin,enrichedEnv);if(connectorPath){let installedVersion=getBinVersion(connectorPath);if(installedVersion===nativeHostVersion)return logFn(`Cloud connector ${installedVersion} found at ${connectorPath}`),makeDirectCommand(connectorPath);logFn(`Cloud connector version mismatch: installed=${installedVersion}, expected=${nativeHostVersion}`)}let npmBin=process.platform==="win32"?"npm.cmd":"npm",npmPath=path2.join(nodeDir,npmBin),npmCommand=fs2.existsSync(npmPath)?npmPath:npmBin,targetPackage=`@mearl/cloud-connector@${nativeHostVersion}`;logFn(`Installing ${targetPackage} globally via ${npmCommand}...`);let install=spawnSync(npmCommand,["install","-g",targetPackage,"--prefer-offline",`--registry=${OFFICIAL_NPM_REGISTRY}`],{encoding:"utf-8",env:enrichedEnv,timeout:3e4});if(install.status===0){let newPath=findBin(connectorBin,enrichedEnv);if(newPath)return logFn(`Global install succeeded: ${newPath}`),makeDirectCommand(newPath)}logFn(`Global install failed (status=${install.status}), falling back to npx`),install.stderr&&logFn(install.stderr.trim());let npxBin=process.platform==="win32"?"npx.cmd":"npx",npxPath=path2.join(nodeDir,npxBin),npxCommand=fs2.existsSync(npxPath)?npxPath:npxBin;return{command:npxCommand,argsPrefix:[`@mearl/cloud-connector@${nativeHostVersion}`],displayName:`${npxCommand} @mearl/cloud-connector@${nativeHostVersion}`,env:enrichedEnv}}function startCloudConnector(serverUrl){return new Promise(resolve2=>{let existingPid=findLiveConnector(serverUrl);if(existingPid){logFn(`Reusing existing cloud connector for ${serverUrl} (pid=${existingPid})`);let entry=registerConnector(serverUrl,existingPid);resolve2({success:!0,pid:existingPid,...entry.connectorId?{connectorId:entry.connectorId}:{},...entry.name?{name:entry.name}:{},reused:!0});return}let connectorCommand=resolveCloudConnectorCommand();logFn(`Starting cloud connector via ${connectorCommand.displayName}`);let child=spawn3(connectorCommand.command,[...connectorCommand.argsPrefix,serverUrl,"--fail-fast"],{detached:!0,env:connectorCommand.env,stdio:["ignore","pipe","pipe"],windowsHide:!0}),settled=!1,outputBuffer="",startupTimer=setTimeout(()=>{finish(!1,{error:"Cloud connector startup timeout"}),child.kill()},6e4),finish=(ok,result={})=>{if(!settled)if(settled=!0,clearTimeout(startupTimer),ok&&child.pid){let entry=registerConnector(serverUrl,child.pid,child);resolve2({success:!0,pid:child.pid,...entry.connectorId?{connectorId:entry.connectorId}:{},...entry.name?{name:entry.name}:{}})}else resolve2({success:!1,error:result.error||"Failed to spawn cloud connector"})};child.once("error",error48=>{logFn(`Failed to spawn cloud connector: ${error48.message}`),finish(!1,{error:error48.message})});let handleOutput=chunk=>{let text=chunk.toString();outputBuffer=(outputBuffer+text).slice(-2e3),logFn(`[CloudConnector] ${text.trim()}`),text.includes("[CloudConnector] Connected to")&&finish(!0)};child.stdout?.on("data",handleOutput),child.stderr?.on("data",handleOutput),child.once("spawn",()=>{child.once("exit",(code,signal)=>{child.pid&&clearConnector(serverUrl,{pid:child.pid,child}),logFn(`Cloud connector exited for ${serverUrl}: code=${code??"null"} signal=${signal??"null"}`),settled||finish(!1,{error:outputBuffer.trim()||`Cloud connector exited before connected: code=${code??"null"} signal=${signal??"null"}`})}),child.unref()})})}function stopCloudConnector(serverUrl){let pid=processes.get(serverUrl)?.pid??readRecord(recordFileFor(serverUrl))?.pid;if(!pid)return{success:!1,error:"Cloud connector not found"};try{return isAlive(pid)&&process.kill(pid),clearConnector(serverUrl,{pid}),logFn(`Stopped cloud connector for ${serverUrl} (pid=${pid})`),{success:!0}}catch(error48){let err=error48;return err.code==="ESRCH"?(clearConnector(serverUrl,{pid}),{success:!0}):(logFn(`Failed to stop cloud connector: ${err.message}`),{success:!1,error:err.message})}}function listCloudConnectors(){return{connectors:pushIfChanged()}}function currentCapture(pageSession){return{tabId:pageSession.tabId,cursor:captureCheckpoint(pageSession.buffers.capture),timestampMs:Date.now(),captureStatus:pageSession.buffers.capture.currentSequence===0?"armed":"active"}}async function cdpTabOpen(session,data,controlSource="local"){let{url:url2,active=!1,emulation,reuse="never",match,appProfile}=data;if(!url2||typeof url2!="string")throw new Error("Invalid url: url must be a non-empty string");if(!["never","prefer","require"].includes(reuse))throw new Error('Invalid reuse: expected "never", "prefer", or "require"');if(data.os!==void 0&&data.os!=="ios"&&data.os!=="android")throw new Error('Invalid os: expected "ios" or "android"');if(data.os!==void 0&&!appProfile)throw new Error("tab_open os requires appProfile.");if(data.bridgeConfig!==void 0&&!appProfile)throw new Error("tab_open bridgeConfig requires appProfile.");let resolvedProfile=appProfile?resolveCdpAppProfile(appProfile,{os:data.os,devicePreset:emulation?.preset,orientation:emulation?.orientation,bridgeConfig:data.bridgeConfig}):void 0,emulationConfig=emulation?resolveEmulationConfig({...emulation,enabled:!0}):void 0,browserClient=await session.getBrowserClient();if(reuse!=="never"){let pages=((await browserClient.sendCommand("Target.getTargets")).targetInfos??[]).filter(target=>target.type==="page"&&!target.url.startsWith("chrome-extension://")&&!target.url.startsWith("about:")&&!target.url.startsWith("chrome://")),existing=selectMatchingTab(pages,url2,match);if(existing){if(emulation||appProfile)throw new Error("tab_open cannot apply pre-navigation emulation or appProfile to a reused tab.");active&&await browserClient.sendCommand("Target.activateTarget",{targetId:existing.targetId});let tabId2=await session.ensureTargetRegistered(existing.targetId),pageSession2=await session.getPageSession(tabId2);await ensureControlledIndicator(pageSession2,controlSource);let capture2=currentCapture(pageSession2);return{tabId:tabId2,url:existing.url??url2,title:existing.title??"",opened:!1,reused:!0,capture:capture2}}if(reuse==="require")throw new Error('tab_open did not find a matching existing tab and reuse is "require".')}let targetId=(await browserClient.sendCommand("Target.createTarget",{url:"about:blank",background:!active})).targetId,tabId=await session.registerTarget(targetId),pageSession=await session.getPageSession(tabId);await ensureControlledIndicator(pageSession,controlSource);let capture=currentCapture(pageSession);if(emulationConfig){for(let{method,params,optional:optional2}of buildEnableEmulationCommands(emulationConfig))await pageSession.client.sendCommand(method,params).catch(error48=>{if(!optional2)throw error48});pageSession.emulation={mobile:emulationConfig.mobile,touch:emulationConfig.touch,config:emulationConfig,deviceShell:emulation?.deviceShell===!0},emulation?.deviceShell&&await applyCdpDeviceShell(pageSession,emulationConfig)}resolvedProfile&&await applyResolvedCdpAppProfile(pageSession,resolvedProfile),await pageSession.client.sendCommand("Page.navigate",{url:url2}),emulation?.deviceShell?await waitForCdpDeviceShellLoad(pageSession):resolvedProfile?await waitForCdpAppProfileLoad(pageSession):await waitForPageLoad(pageSession,3e4);let targetInfo=await browserClient.sendCommand("Target.getTargetInfo",{targetId}).then(result2=>result2.targetInfo).catch(()=>null);return{tabId,url:targetInfo?.url??url2,title:targetInfo?.title??"",opened:!0,reused:!1,capture,...emulationConfig&&{emulation:{preset:emulationConfig.presetName,viewport:{width:emulationConfig.width,height:emulationConfig.height,deviceScaleFactor:emulationConfig.deviceScaleFactor,scale:emulationConfig.scale??1},userAgent:emulationConfig.userAgent,mobile:emulationConfig.mobile,touch:emulationConfig.touch,orientation:emulationConfig.orientation,deviceShell:emulation?.deviceShell===!0}},...resolvedProfile&&{appProfile:{profile:resolvedProfile.profile.profile,label:resolvedProfile.profile.label,userAgent:resolvedProfile.profile.ua,os:resolvedProfile.profile.injected.platform==="Android"?"android":"ios"}}}}async function cdpTabClose(session,data){let{tabId}=data;if(typeof tabId!="number")throw new Error("Invalid tabId: tabId must be a number");let browserClient=await session.getBrowserClient(),pageSession=await session.getPageSession(tabId);return await browserClient.sendCommand("Target.closeTarget",{targetId:pageSession.targetId}),{success:!0}}async function cdpTabList(session,_data){let pages=((await(await session.getBrowserClient()).sendCommand("Target.getTargets")).targetInfos??[]).filter(t=>t.type==="page"&&!t.url.startsWith("chrome-extension://")&&!t.url.startsWith("about:")&&!t.url.startsWith("chrome://")),tabs=await Promise.all(pages.map(async t=>{let tabId=await session.ensureTargetRegistered(t.targetId);return{id:tabId,tabId,url:t.url,title:t.title??"",active:!1}}));return{tabs,count:tabs.length}}registerActions([{name:"tab_open",session:"browser",handler:cdpTabOpen},{name:"tab_close",session:"browser",handler:cdpTabClose},{name:"tab_list",session:"browser",handler:cdpTabList}]);var GET_DRAG_COORDS_FROM_NODE_SRC=getDragCoordsFromNode.toString();function resolveSnapshotRef(session,ref){let entry=resolvePageRef(session,ref);if(!entry)throw new PageActionPreconditionError(`Ref ${ref} not found. Run page_snapshot first to get fresh refs.`);return entry}async function withSnapshotRef(session,ref,operation){let entry=resolveSnapshotRef(session,ref);try{return await operation(entry)}catch(error48){throw deletePageRef(session,ref),error48}}async function clickBySelectorJs(session,selector){let value=(await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:`(() => {
703
+ })()`,result=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression,returnByValue:!0,awaitPromise:!0},timeoutMs+2e3),error48=evaluationError(result);if(error48)throw new Error(error48);let changeSet=result.result?.value;if(!changeSet||changeSet.mode!=="delta")throw new Error("Page observer did not return a change set");return changeSet}async function disposePageObservation(session){await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:`(${DISPOSE_PAGE_OBSERVER_SRC})()`,returnByValue:!1}).catch(()=>{})}function filterRequests(buffers,opts){let pattern=opts.filter?compileTextPattern(opts.filter):void 0;return queryCapturedEntries(buffers.requests.filter(request=>Number.isSafeInteger(request.captureSequence)),buffers.capture,{after:opts.after,since:opts.since,limit:opts.count??10},request=>(!opts.source||opts.source==="all"||request.source===opts.source)&&(!pattern||matchesTextPattern(request.url,pattern)||matchesTextPattern(request.apiName,pattern)),buffers.capture.droppedRequestsThroughSequence,"requests")}async function cdpGetRequests(session,data){let opts={count:data.count??10,filter:data.filter,since:data.since,after:data.after,source:data.source,applyHiddenFilter:data.applyHiddenFilter!==!1},captured=filterRequests(session.buffers,opts),serializeOpts={includeBody:data.includeBody!==!1,includeHeaders:data.includeHeaders===!0,maxBodySize:data.maxBodySize??5e4,fields:data.fields,keysOnly:data.keysOnly===!0};return{meta:{count:captured.entries.length,totalMatched:captured.totalMatched,totalInBuffer:session.buffers.requests.length,filter:data.filter,since:data.since,after:data.after,nextCursor:captured.nextCursor,hasMore:captured.hasMore,gap:captured.gap,source:"cdp"},requests:captured.entries.map(r=>serializeRequest(r,serializeOpts))}}async function cdpGetLogs(session,data){let{level,since,after,limit=100,filter}=data,pattern=filter?compileTextPattern(filter):void 0,captured=queryCapturedEntries(session.buffers.logs,session.buffers.capture,{after,since,limit},log2=>(!level||level==="all"||log2.level===level)&&(!pattern||matchesTextPattern(log2.message,pattern)||log2.args.some(arg=>matchesTextPattern(arg,pattern))),session.buffers.capture.droppedLogsThroughSequence,"logs"),captureStatus=session.buffers.logs.length===0?"armed":"active";return{meta:{count:captured.entries.length,totalMatched:captured.totalMatched,totalInBuffer:session.buffers.logs.length,level:level||"all",since,after,filter,nextCursor:captured.nextCursor,hasMore:captured.hasMore,gap:captured.gap,captureStatus,...captureStatus==="armed"&&{hint:"Log capture is active, but this tab has no captured history yet. Reload the current tab or repeat the triggering action, then call get_logs again."},source:"cdp"},logs:captured.entries}}async function cdpCaptureCheckpoint(session,_data){return{tabId:session.tabId,cursor:captureCheckpoint(session.buffers.capture),timestampMs:Date.now(),captureStatus:session.buffers.capture.currentSequence===0?"armed":"active"}}async function collectCdpPageDiagnostics(session,after,diagnostics){let result={};if(diagnostics.logs){let options=diagnostics.logs===!0?{level:"error",limit:100}:{level:"error",limit:100,...diagnostics.logs};result.logs=await cdpGetLogs(session,{...options,after})}if(diagnostics.requests){let options=diagnostics.requests===!0?{source:"all",includeBody:!1,count:100}:{source:"all",includeBody:!1,count:100,...diagnostics.requests};result.requests=await cdpGetRequests(session,{...options,after})}if(diagnostics.events){let options=diagnostics.events===!0?{source:"all",limit:100}:{source:"all",limit:100,...diagnostics.events};result.events=await cdpGetEvents(session,{...options,after})}return result}async function cdpGetEvents(session,data){let{source="all",event_type,since,after,limit=20,filter,includeRaw=!1}=data,response=queryCapturedTrackingEvents(session.buffers.events,session.buffers.capture,{source,event_type,since,after,limit,filter},session.buffers.capture.droppedEventsThroughSequence),captureStatus=response.totalInBuffer===0?"armed":"active",hint=response.events.length===0&&captureStatus==="armed"?TRACKING_CAPTURE_ARMED_HINT:void 0;return{meta:{count:response.events.length,totalMatched:response.totalMatched,totalInBuffer:response.totalInBuffer,source,captureStatus,captureSource:"cdp",includeRaw,after,nextCursor:response.nextCursor,hasMore:response.hasMore,gap:response.gap,hint},events:response.events.map(event=>formatTrackingEvent(event,includeRaw))}}registerActions([{name:"tab_checkpoint",session:"page",handler:cdpCaptureCheckpoint},{name:"capture_checkpoint",session:"page",handler:cdpCaptureCheckpoint},{name:"get_requests",session:"page",handler:cdpGetRequests},{name:"get_logs",session:"page",handler:cdpGetLogs},{name:"get_events",session:"page",handler:cdpGetEvents}]);async function cdpRunActions(session,data,controlSource="local"){let{actions,tabId}=data;if(!Array.isArray(actions)||actions.length===0)throw new Error("actions must be a non-empty array");if(actions.length>50)throw new Error("actions array exceeds maximum of 50 steps");let results=[];for(let i=0;i<actions.length;i++){let step=actions[i],stepAction=String(step.action??"");if(!stepAction)return{results,completedSteps:results.length,totalSteps:actions.length,error:`Step ${i}: action must be a non-empty string`,failedStep:i};if(!isBrowserCommandAction(stepAction))return{results,completedSteps:results.length,totalSteps:actions.length,error:`Step ${i}: unsupported action "${stepAction}"`,failedStep:i};if(stepAction==="run_actions")return{results,completedSteps:results.length,totalSteps:actions.length,error:`Step ${i}: composite action "${stepAction}" is not allowed in run_actions`,failedStep:i};if(stepAction==="browser_release")return{results,completedSteps:results.length,totalSteps:actions.length,error:`Step ${i}: browser-level action "${stepAction}" is not allowed in run_actions`,failedStep:i};let mergedData={...step.data};tabId!==void 0&&mergedData.tabId===void 0&&(mergedData.tabId=tabId);try{let result=await dispatchCdpAction(session,stepAction,mergedData,controlSource);results.push({step:i,action:stepAction,success:!0,data:result})}catch(error48){let errorMessage2=error48 instanceof Error?error48.message:String(error48);return results.push({step:i,action:stepAction,success:!1,error:errorMessage2}),{results,completedSteps:i,totalSteps:actions.length,error:errorMessage2,failedStep:i}}}return{results,completedSteps:actions.length,totalSteps:actions.length}}async function cdpObservedPageAction(session,action,data,controlSource="local"){let{actionData,observe,diagnostics}=splitObservedActionPayload(action,data),{tabId}=actionData;if(typeof tabId!="number")throw new Error(`${action} requires a numeric tabId`);let pageSession=await session.getPageSession(tabId);if(await ensureControlledIndicator(pageSession,controlSource),observe===!1){if(!diagnostics)return dispatchCdpAction(session,action,actionData,controlSource);let cursor=captureCheckpoint(pageSession.buffers.capture),actionResult,actionFailure;try{actionResult=await dispatchCdpAction(session,action,actionData,controlSource)}catch(error48){actionFailure=describePageActionFailure(error48)}let result2={action:{name:action,success:actionFailure===void 0,...actionResult!==void 0?{data:actionResult}:{},...actionFailure||{}}};return actionFailure?.stage==="precondition"?result2:{...result2,diagnostics:await collectCdpPageDiagnostics(pageSession,cursor,diagnostics)}}let diagnosticsCursor,result=await runPageAct({action,actionData,observe},{startObservation:()=>startPageObservation(pageSession),finishObservation:(checkpoint,options)=>finishPageObservation(pageSession,checkpoint,options),startNavigationObserver:options=>startCdpNavigationObserver(session,pageSession,options.urlBefore,options),executeAction:(name,params)=>(diagnostics&&(diagnosticsCursor=captureCheckpoint(pageSession.buffers.capture)),dispatchCdpAction(session,name,{...params,tabId},controlSource)),finalizeObservation:observation=>observation.mode==="delta"?enrichCdpPageChangeSetWithRefs(pageSession,observation):Promise.resolve(observation),disposeObservation:()=>disposePageObservation(pageSession)});return!diagnostics||!diagnosticsCursor||result.action.stage==="precondition"?result:{...result,diagnostics:await collectCdpPageDiagnostics(pageSession,diagnosticsCursor,diagnostics)}}registerActions([{name:"run_actions",session:"browser",handler:cdpRunActions}]);import{randomUUID as randomUUID4}from"node:crypto";import{createReadStream}from"node:fs";var FILE_CHUNK_BYTES=256*1024,TRANSFER_ACTION_TIMEOUT_MS=15e3;async function sendFileChunks(transferId,fileIndex,file2,send){let chunkIndex=0,sendChunk=async chunk=>{await send("__send_request_file_chunk",{transferId,fileIndex,chunkIndex,base64:chunk.toString("base64")},TRANSFER_ACTION_TIMEOUT_MS),chunkIndex+=1};if(file2.filePath){for await(let chunk of createReadStream(file2.filePath,{highWaterMark:FILE_CHUNK_BYTES}))await sendChunk(Buffer.isBuffer(chunk)?chunk:Buffer.from(chunk));return}let content=file2.content;for(let offset=0;offset<content.byteLength;offset+=FILE_CHUNK_BYTES)await sendChunk(content.subarray(offset,offset+FILE_CHUNK_BYTES))}async function prepareFileTransfer(data,send){let files=await resolveSendRequestFiles(data.files??[]);if(files.length===0)throw new Error("files must contain at least one file");let transferId=randomUUID4();await send("__send_request_file_start",{transferId,files:files.map(file2=>file2.descriptor),url:data.url,withCookies:data.withCookies},TRANSFER_ACTION_TIMEOUT_MS);try{for(let index=0;index<files.length;index+=1)await sendFileChunks(transferId,index,files[index],send)}catch(error48){throw await send("__send_request_file_abort",{transferId},TRANSFER_ACTION_TIMEOUT_MS).catch(()=>{}),error48}let{files:_files,...request}=data;return{transferId,request}}async function abortFileTransfer(transferId,send){await send("__send_request_file_abort",{transferId},TRANSFER_ACTION_TIMEOUT_MS).catch(()=>{})}function hasSendRequestFiles(data){return!!data&&typeof data=="object"&&Array.isArray(data.files)&&data.files.length>0}function hasRunActionsSendRequestFiles(data){if(!data||typeof data!="object")return!1;let actions=data.actions;return Array.isArray(actions)&&actions.some(step=>step?.action==="send_request"&&hasSendRequestFiles(step.data))}async function sendRequestWithTransferredFiles(data,send){let prepared=await prepareFileTransfer(data,send);try{let requestTimeout=Number(data.timeout??3e4);return await send("__send_request_with_files",{...prepared.request,transferId:prepared.transferId},(Number.isFinite(requestTimeout)&&requestTimeout>0?requestTimeout:3e4)+5e3)}catch(error48){throw await abortFileTransfer(prepared.transferId,send),error48}}async function sendRunActionsWithTransferredFiles(data,send,resolveTimeoutMs){if(!Array.isArray(data.actions))throw new Error("actions must be an array");let preparedTransferIds=[];try{let actions=[];for(let index=0;index<data.actions.length;index+=1){let step=data.actions[index],action=String(step.action??"");if(action.startsWith("__"))throw new Error(`Step ${index}: internal action "${action}" is not available to clients`);if(action!=="send_request"||!hasSendRequestFiles(step.data)){actions.push(step);continue}let prepared=await prepareFileTransfer(step.data,send);preparedTransferIds.push(prepared.transferId),actions.push({action:"__send_request_with_files",data:{...prepared.request,transferId:prepared.transferId}})}let transformed={...data,actions};return await send("run_actions",transformed,resolveTimeoutMs(transformed))}finally{await Promise.all(preparedTransferIds.map(transferId=>abortFileTransfer(transferId,send)))}}import fs2 from"node:fs";import path2 from"node:path";import{spawn as spawn3,spawnSync}from"node:child_process";var processes=new Map,CONNECTORS_SUBDIR="connectors",REGISTRY_DIR=keyedDir(CONNECTORS_SUBDIR),OFFICIAL_NPM_REGISTRY="https://registry.npmjs.org",STATUS_POLL_MS=5e3;function recordFileFor(serverUrl){return keyedConfigFile(CONNECTORS_SUBDIR,serverUrl)}var logFn=()=>{},isDaemon=!1,sendToExtensionFn=()=>{},nativeHostVersion="unknown",lastPushedKey="",statusWatcher=null;function initCloudConnector(deps){logFn=deps.log,isDaemon=deps.isDaemonMode,sendToExtensionFn=deps.sendToExtension,nativeHostVersion=deps.version,startStatusWatcher()}function liveRecords(){return readLiveRecords(REGISTRY_DIR)}function reconcile(){let live=new Map;for(let record2 of liveRecords())live.set(record2.serverUrl,{serverUrl:record2.serverUrl,pid:record2.pid,...record2.connectorId?{connectorId:record2.connectorId}:{},...record2.name?{name:record2.name}:{}});for(let[serverUrl,entry]of processes)isAlive(entry.pid)?live.has(serverUrl)||live.set(serverUrl,{serverUrl,pid:entry.pid,...entry.connectorId?{connectorId:entry.connectorId}:{},...entry.name?{name:entry.name}:{}}):processes.delete(serverUrl);return Array.from(live.values())}function connectorsKey(connectors){return connectors.map(c=>`${c.serverUrl}@${c.pid}@${c.connectorId??""}@${c.name??""}`).sort().join("|")}function pushStatus(connectors){isDaemon||(lastPushedKey=connectorsKey(connectors),sendToExtensionFn({type:"cloud_connector_status_changed",data:{connectors}}))}function notifyStatusChanged(){pushStatus(reconcile())}function pushIfChanged(){let connectors=reconcile();return connectorsKey(connectors)!==lastPushedKey&&pushStatus(connectors),connectors}function startStatusWatcher(){isDaemon||statusWatcher||(statusWatcher=setInterval(()=>{try{pushIfChanged()}catch{}},STATUS_POLL_MS),statusWatcher.unref?.())}function registerConnector(serverUrl,pid,child){let record2=readRecord(recordFileFor(serverUrl)),entry={pid,serverUrl,...record2?.connectorId?{connectorId:record2.connectorId}:{},...record2?.name?{name:record2.name}:{},...child?{process:child}:{}};return processes.set(serverUrl,entry),notifyStatusChanged(),entry}function clearConnector(serverUrl,expected){let entry=processes.get(serverUrl);entry&&entry.pid!==expected.pid||expected.child&&entry?.process&&entry.process!==expected.child||(processes.delete(serverUrl),removeRecordIfPid(recordFileFor(serverUrl),expected.pid),notifyStatusChanged())}function findLiveConnector(serverUrl){let entry=processes.get(serverUrl);if(entry&&isAlive(entry.pid))return entry.pid;let record2=readRecord(recordFileFor(serverUrl));return record2&&isAlive(record2.pid)?record2.pid:(entry&&processes.delete(serverUrl),record2&&removeRecordIfPid(recordFileFor(serverUrl),record2.pid),null)}function findBin(bin,env){let lookupCommand=process.platform==="win32"?"where":"which",result=spawnSync(lookupCommand,[bin],{encoding:"utf-8",env});return result.status===0&&result.stdout.split(/\r?\n/).find(Boolean)||null}function getBinVersion(binPath){try{let result=spawnSync(process.execPath,[binPath,"--version"],{encoding:"utf-8",timeout:5e3});return result.status===0?result.stdout.trim():null}catch{return null}}function makeDirectCommand(connectorPath){return process.platform!=="win32"?{command:process.execPath,argsPrefix:[connectorPath],displayName:`${process.execPath} ${connectorPath}`}:{command:connectorPath,argsPrefix:[],displayName:connectorPath}}function resolveCloudConnectorCommand(){let connectorBin=process.platform==="win32"?"mearl-cloud-connector.cmd":"mearl-cloud-connector",pathDelimiter=process.platform==="win32"?";":":",nodeDir=path2.dirname(process.execPath),enrichedPath=[nodeDir,process.env.PATH].filter(Boolean).join(pathDelimiter),enrichedEnv={...process.env,PATH:enrichedPath},connectorPath=findBin(connectorBin,enrichedEnv);if(connectorPath){let installedVersion=getBinVersion(connectorPath);if(installedVersion===nativeHostVersion)return logFn(`Cloud connector ${installedVersion} found at ${connectorPath}`),makeDirectCommand(connectorPath);logFn(`Cloud connector version mismatch: installed=${installedVersion}, expected=${nativeHostVersion}`)}let npmBin=process.platform==="win32"?"npm.cmd":"npm",npmPath=path2.join(nodeDir,npmBin),npmCommand=fs2.existsSync(npmPath)?npmPath:npmBin,targetPackage=`@mearl/cloud-connector@${nativeHostVersion}`;logFn(`Installing ${targetPackage} globally via ${npmCommand}...`);let install=spawnSync(npmCommand,["install","-g",targetPackage,"--prefer-offline",`--registry=${OFFICIAL_NPM_REGISTRY}`],{encoding:"utf-8",env:enrichedEnv,timeout:3e4});if(install.status===0){let newPath=findBin(connectorBin,enrichedEnv);if(newPath)return logFn(`Global install succeeded: ${newPath}`),makeDirectCommand(newPath)}logFn(`Global install failed (status=${install.status}), falling back to npx`),install.stderr&&logFn(install.stderr.trim());let npxBin=process.platform==="win32"?"npx.cmd":"npx",npxPath=path2.join(nodeDir,npxBin),npxCommand=fs2.existsSync(npxPath)?npxPath:npxBin;return{command:npxCommand,argsPrefix:[`@mearl/cloud-connector@${nativeHostVersion}`],displayName:`${npxCommand} @mearl/cloud-connector@${nativeHostVersion}`,env:enrichedEnv}}function startCloudConnector(serverUrl){return new Promise(resolve2=>{let existingPid=findLiveConnector(serverUrl);if(existingPid){logFn(`Reusing existing cloud connector for ${serverUrl} (pid=${existingPid})`);let entry=registerConnector(serverUrl,existingPid);resolve2({success:!0,pid:existingPid,...entry.connectorId?{connectorId:entry.connectorId}:{},...entry.name?{name:entry.name}:{},reused:!0});return}let connectorCommand=resolveCloudConnectorCommand();logFn(`Starting cloud connector via ${connectorCommand.displayName}`);let child=spawn3(connectorCommand.command,[...connectorCommand.argsPrefix,serverUrl,"--fail-fast"],{detached:!0,env:connectorCommand.env,stdio:["ignore","pipe","pipe"],windowsHide:!0}),settled=!1,outputBuffer="",startupTimer=setTimeout(()=>{finish(!1,{error:"Cloud connector startup timeout"}),child.kill()},6e4),finish=(ok,result={})=>{if(!settled)if(settled=!0,clearTimeout(startupTimer),ok&&child.pid){let entry=registerConnector(serverUrl,child.pid,child);resolve2({success:!0,pid:child.pid,...entry.connectorId?{connectorId:entry.connectorId}:{},...entry.name?{name:entry.name}:{}})}else resolve2({success:!1,error:result.error||"Failed to spawn cloud connector"})};child.once("error",error48=>{logFn(`Failed to spawn cloud connector: ${error48.message}`),finish(!1,{error:error48.message})});let handleOutput=chunk=>{let text=chunk.toString();outputBuffer=(outputBuffer+text).slice(-2e3),logFn(`[CloudConnector] ${text.trim()}`),text.includes("[CloudConnector] Connected to")&&finish(!0)};child.stdout?.on("data",handleOutput),child.stderr?.on("data",handleOutput),child.once("spawn",()=>{child.once("exit",(code,signal)=>{child.pid&&clearConnector(serverUrl,{pid:child.pid,child}),logFn(`Cloud connector exited for ${serverUrl}: code=${code??"null"} signal=${signal??"null"}`),settled||finish(!1,{error:outputBuffer.trim()||`Cloud connector exited before connected: code=${code??"null"} signal=${signal??"null"}`})}),child.unref()})})}function stopCloudConnector(serverUrl){let pid=processes.get(serverUrl)?.pid??readRecord(recordFileFor(serverUrl))?.pid;if(!pid)return{success:!1,error:"Cloud connector not found"};try{return isAlive(pid)&&process.kill(pid),clearConnector(serverUrl,{pid}),logFn(`Stopped cloud connector for ${serverUrl} (pid=${pid})`),{success:!0}}catch(error48){let err=error48;return err.code==="ESRCH"?(clearConnector(serverUrl,{pid}),{success:!0}):(logFn(`Failed to stop cloud connector: ${err.message}`),{success:!1,error:err.message})}}function listCloudConnectors(){return{connectors:pushIfChanged()}}function currentCapture(pageSession){return{tabId:pageSession.tabId,cursor:captureCheckpoint(pageSession.buffers.capture),timestampMs:Date.now(),captureStatus:pageSession.buffers.capture.currentSequence===0?"armed":"active"}}async function cdpTabOpen(session,data,controlSource="local"){let{url:url2,active=!1,emulation,reuse="never",match,appProfile}=data;if(!url2||typeof url2!="string")throw new Error("Invalid url: url must be a non-empty string");if(!["never","prefer","require"].includes(reuse))throw new Error('Invalid reuse: expected "never", "prefer", or "require"');if(data.os!==void 0&&data.os!=="ios"&&data.os!=="android")throw new Error('Invalid os: expected "ios" or "android"');if(data.os!==void 0&&!appProfile)throw new Error("tab_open os requires appProfile.");if(data.bridgeConfig!==void 0&&!appProfile)throw new Error("tab_open bridgeConfig requires appProfile.");let resolvedProfile=appProfile?resolveCdpAppProfile(appProfile,{os:data.os,devicePreset:emulation?.preset,orientation:emulation?.orientation,bridgeConfig:data.bridgeConfig}):void 0,emulationConfig=emulation?resolveEmulationConfig({...emulation,enabled:!0}):void 0,browserClient=await session.getBrowserClient();if(reuse!=="never"){let pages=((await browserClient.sendCommand("Target.getTargets")).targetInfos??[]).filter(target=>target.type==="page"&&isImplicitlySelectablePageUrl(target.url)),existing=selectMatchingTab(pages,url2,match);if(existing){if(emulation||appProfile)throw new Error("tab_open cannot apply pre-navigation emulation or appProfile to a reused tab.");active&&await browserClient.sendCommand("Target.activateTarget",{targetId:existing.targetId});let tabId2=await session.ensureTargetRegistered(existing.targetId),pageSession2=await session.getPageSession(tabId2);await ensureControlledIndicator(pageSession2,controlSource);let capture2=currentCapture(pageSession2);return{tabId:tabId2,url:existing.url??url2,title:existing.title??"",opened:!1,reused:!0,capture:capture2}}if(reuse==="require")throw new Error('tab_open did not find a matching existing tab and reuse is "require".')}let targetId=(await browserClient.sendCommand("Target.createTarget",{url:"about:blank",background:!active})).targetId,tabId=await session.registerTarget(targetId),pageSession=await session.getPageSession(tabId);await ensureControlledIndicator(pageSession,controlSource);let capture=currentCapture(pageSession);if(emulationConfig){for(let{method,params,optional:optional2}of buildEnableEmulationCommands(emulationConfig))await pageSession.client.sendCommand(method,params).catch(error48=>{if(!optional2)throw error48});pageSession.emulation={mobile:emulationConfig.mobile,touch:emulationConfig.touch,config:emulationConfig,deviceShell:emulation?.deviceShell===!0},emulation?.deviceShell&&await applyCdpDeviceShell(pageSession,emulationConfig)}resolvedProfile&&await applyResolvedCdpAppProfile(pageSession,resolvedProfile),await pageSession.client.sendCommand("Page.navigate",{url:url2}),emulation?.deviceShell?await waitForCdpDeviceShellLoad(pageSession):resolvedProfile?await waitForCdpAppProfileLoad(pageSession):await waitForPageLoad(pageSession,3e4);let targetInfo=await browserClient.sendCommand("Target.getTargetInfo",{targetId}).then(result2=>result2.targetInfo).catch(()=>null),openedUrl=targetInfo?.url??url2;return{tabId,url:openedUrl,title:targetInfo?.title??"",opened:!0,reused:!1,capture,...!isImplicitlySelectablePageUrl(openedUrl)&&{note:"This URL is excluded from implicit CDP target selection. Pass this tabId to subsequent page actions."},...emulationConfig&&{emulation:{preset:emulationConfig.presetName,viewport:{width:emulationConfig.width,height:emulationConfig.height,deviceScaleFactor:emulationConfig.deviceScaleFactor,scale:emulationConfig.scale??1},userAgent:emulationConfig.userAgent,mobile:emulationConfig.mobile,touch:emulationConfig.touch,orientation:emulationConfig.orientation,deviceShell:emulation?.deviceShell===!0}},...resolvedProfile&&{appProfile:{profile:resolvedProfile.profile.profile,label:resolvedProfile.profile.label,userAgent:resolvedProfile.profile.ua,os:resolvedProfile.profile.injected.platform==="Android"?"android":"ios"}}}}async function cdpTabClose(session,data){let{tabId}=data;if(typeof tabId!="number")throw new Error("Invalid tabId: tabId must be a number");let browserClient=await session.getBrowserClient(),pageSession=await session.getPageSession(tabId);return await browserClient.sendCommand("Target.closeTarget",{targetId:pageSession.targetId}),{success:!0}}async function cdpTabList(session,_data){let pages=((await(await session.getBrowserClient()).sendCommand("Target.getTargets")).targetInfos??[]).filter(t=>t.type==="page"&&isImplicitlySelectablePageUrl(t.url)),tabs=await Promise.all(pages.map(async t=>{let tabId=await session.ensureTargetRegistered(t.targetId);return{id:tabId,tabId,url:t.url,title:t.title??"",active:!1}}));return{tabs,count:tabs.length}}registerActions([{name:"tab_open",session:"browser",handler:cdpTabOpen},{name:"tab_close",session:"browser",handler:cdpTabClose},{name:"tab_list",session:"browser",handler:cdpTabList}]);var GET_DRAG_COORDS_FROM_NODE_SRC=getDragCoordsFromNode.toString();function resolveSnapshotRef(session,ref){let entry=resolvePageRef(session,ref);if(!entry)throw new PageActionPreconditionError(`Ref ${ref} not found. Run page_snapshot first to get fresh refs.`);return entry}async function withSnapshotRef(session,ref,operation){let entry=resolveSnapshotRef(session,ref);try{return await operation(entry)}catch(error48){throw deletePageRef(session,ref),error48}}async function clickBySelectorJs(session,selector){let value=(await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:`(() => {
704
704
  const sel = ${JSON.stringify(selector)};
705
705
  const el = document.querySelector(sel);
706
706
  if (!el) return { clicked: false, error: 'Element not found: ' + sel };
@@ -733,7 +733,7 @@ Content-Type: ${file2.contentType}\r
733
733
  const r = fn.call(el);
734
734
  if (!r) return { error: 'Cannot resolve element coordinates' };
735
735
  return r;
736
- })()`,returnByValue:!0})).result?.value;if(!value)throw new Error("coord evaluation returned no value");if(value.error)throw new PageActionPreconditionError(value.error);return value}async function getElementCoordsByBackendNodeId(session,backendNodeId){let objectId=await resolveBackendNodeObjectId(session,backendNodeId),value=(await sendCdpDeviceShellPageCommand(session,"Runtime.callFunctionOn",{objectId,functionDeclaration:GET_CLICK_COORDS_FROM_NODE_SRC,returnByValue:!0})).result?.value;if(value===null)throw new PageActionPreconditionError(`Cannot resolve clickable element for backendNodeId ${backendNodeId}`);if(!value)throw new Error("coord evaluation returned no value");return value}async function resolveScopeBackendNodeId(session,scope){if(checkPageActionPrecondition(()=>validatePageElementSelector(scope,"page_click scope")),scope.startsWith("@e"))return resolveSnapshotRef(session,scope).backendNodeId;let evaluated=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:`document.querySelector(${JSON.stringify(scope)})`,returnByValue:!1});if(evaluated.exceptionDetails){let message=evaluated.exceptionDetails.exception?.description??evaluated.exceptionDetails.text??"invalid selector";throw new PageActionPreconditionError(`page_click: invalid scope "${scope}": ${message}`)}let objectId=evaluated.result?.objectId;if(!objectId||evaluated.result?.subtype==="null")throw new PageActionPreconditionError(`page_click: scope not found: ${scope}`);try{let backendNodeId=(await sendCdpDeviceShellPageCommand(session,"DOM.describeNode",{objectId})).node?.backendNodeId;if(backendNodeId===void 0)throw new PageActionPreconditionError(`page_click: cannot resolve scope: ${scope}`);return backendNodeId}finally{await sendCdpDeviceShellPageCommand(session,"Runtime.releaseObject",{objectId}).catch(()=>{})}}async function cdpPageClick(session,data){let{selector,text,role,exact,scope,clickMode,point,frameId,coordinateSpace}=data??{},hasSelector=typeof selector=="string"&&selector.length>0,hasText=typeof text=="string"&&text.length>0,hasPoint=point&&Number.isFinite(point.x)&&Number.isFinite(point.y)&&point.x>=0&&point.y>=0,provided=[hasSelector&&"selector",hasText&&"text",hasPoint&&"point"].filter(Boolean);if(clickMode!==void 0&&!["auto","dom","mouse","touch"].includes(clickMode))throw new PageActionPreconditionError('page_click: "clickMode" must be one of auto, dom, mouse, touch');if(scope!==void 0&&!hasText)throw new PageActionPreconditionError('page_click: "scope" is only supported with the "text" target');if(coordinateSpace!==void 0&&!["outer-viewport","active-frame"].includes(coordinateSpace))throw new PageActionPreconditionError('page_click: "coordinateSpace" must be one of outer-viewport, active-frame');if(coordinateSpace!==void 0&&!hasPoint)throw new PageActionPreconditionError('page_click: "coordinateSpace" is only supported with the "point" target');if(frameId!==void 0||coordinateSpace==="active-frame")throw new PageActionPreconditionError("page_click: frameId and active-frame coordinates require the browser extension backend");if(scope!==void 0&&checkPageActionPrecondition(()=>validatePageElementSelector(scope,"page_click scope")),hasSelector&&checkPageActionPrecondition(()=>validatePageElementSelector(selector,"page_click")),provided.length===0)throw new PageActionPreconditionError('page_click: provide exactly one of "selector", "text", or "point". For text matching, pass "text" (and optionally "role"/"exact"). For coordinate clicks, pass "point": { x, y } in viewport pixels.');if(provided.length>1)throw new PageActionPreconditionError(`page_click: provide exactly one of "selector", "text", or "point" — got ${provided.length} (${provided.join(", ")}).`);let requestedMode=clickMode??"auto",[visibilityResult,touchEmulationEnabled]=requestedMode==="auto"?await Promise.all([sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:"document.visibilityState",returnByValue:!0}),prefersTouchInput(session)]):[void 0,!1],policy=resolvePageClickDispatchPolicy(requestedMode,visibilityResult?.result?.value,touchEmulationEnabled),effectiveClickMode=policy.clickMode,finalize2=result=>policy.fallbackReason?{...result,fallbackReason:policy.fallbackReason}:result;if(hasSelector){if(selector.startsWith("@e")){let ref=selector,result=await withSnapshotRef(session,ref,async entry=>{let dispatchTarget2;if(effectiveClickMode==="dom"||policy.stateAwareControls&&isNativeToggleControl(entry.role))dispatchTarget2=await clickByBackendNodeJs(session,entry.backendNodeId);else{let coord=await getElementCoordsByBackendNodeId(session,entry.backendNodeId);policy.stateAwareControls&&isNativeToggleControl(void 0,coord.inputType)?dispatchTarget2=await clickByBackendNodeJs(session,entry.backendNodeId):(await dispatchCdpClick(session,coord.x,coord.y,effectiveClickMode),dispatchTarget2={...coord,dispatchMode:"trusted-input",pointerType:effectiveClickMode})}return createPageClickResult({kind:"ref",selector:ref,role:entry.role,name:entry.name},dispatchTarget2)});return finalize2(result)}if(effectiveClickMode!=="dom"){let coord=await getElementCoordsBySelector(session,selector);if(policy.stateAwareControls&&isNativeToggleControl(void 0,coord.inputType)){let dispatchTarget2=await clickBySelectorJs(session,selector);return finalize2(createPageClickResult({kind:"selector",selector},dispatchTarget2))}return await dispatchCdpClick(session,coord.x,coord.y,effectiveClickMode),finalize2(createPageClickResult({kind:"selector",selector},{...coord,dispatchMode:"trusted-input",pointerType:effectiveClickMode}))}let dispatchTarget=await clickBySelectorJs(session,selector);return finalize2(createPageClickResult({kind:"selector",selector},dispatchTarget))}if(hasText){let scopeBackendNodeId=scope?await resolveScopeBackendNodeId(session,scope):void 0,nodes=(await sendCdpDeviceShellPageCommand(session,scopeBackendNodeId===void 0?"Accessibility.getFullAXTree":"Accessibility.queryAXTree",scopeBackendNodeId===void 0?{}:{backendNodeId:scopeBackendNodeId})).nodes??[],{hits}=matchAXNodesByText(nodes,{text,role,exact});if(hits.length===0){let exactSuffix=exact===!1?" (substring match)":"",roleSuffix=role?` with role "${role}"`:"";throw new PageActionPreconditionError(`page_click: text "${text}"${roleSuffix}${exactSuffix}${scope?` in scope "${scope}"`:""} not found. Run page_snapshot to inspect the page, or try exact: false for substring matching.`)}if(hits.length>1){let candidates=formatAXTextMatchCandidates(hits);throw new PageActionPreconditionError(`page_click: text "${text}"${scope?` in scope "${scope}"`:""} matched ${hits.length} elements. Refine with "role" or "exact: true", or run page_snapshot and use an "@eN" ref:
736
+ })()`,returnByValue:!0})).result?.value;if(!value)throw new Error("coord evaluation returned no value");if(value.error)throw new PageActionPreconditionError(value.error);return value}async function getElementCoordsByBackendNodeId(session,backendNodeId){let objectId=await resolveBackendNodeObjectId(session,backendNodeId),value=(await sendCdpDeviceShellPageCommand(session,"Runtime.callFunctionOn",{objectId,functionDeclaration:GET_CLICK_COORDS_FROM_NODE_SRC,returnByValue:!0})).result?.value;if(value===null)throw new PageActionPreconditionError(`Cannot resolve clickable element for backendNodeId ${backendNodeId}`);if(!value)throw new Error("coord evaluation returned no value");return value}async function resolveScopeBackendNodeId(session,scope){if(checkPageActionPrecondition(()=>validatePageElementSelector(scope,"page_click scope")),scope.startsWith("@e"))return resolveSnapshotRef(session,scope).backendNodeId;let evaluated=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:`document.querySelector(${JSON.stringify(scope)})`,returnByValue:!1});if(evaluated.exceptionDetails){let message=evaluated.exceptionDetails.exception?.description??evaluated.exceptionDetails.text??"invalid selector";throw new PageActionPreconditionError(`page_click: invalid scope "${scope}": ${message}`)}let objectId=evaluated.result?.objectId;if(!objectId||evaluated.result?.subtype==="null")throw new PageActionPreconditionError(`page_click: scope not found: ${scope}`);try{let backendNodeId=(await sendCdpDeviceShellPageCommand(session,"DOM.describeNode",{objectId})).node?.backendNodeId;if(backendNodeId===void 0)throw new PageActionPreconditionError(`page_click: cannot resolve scope: ${scope}`);return backendNodeId}finally{await sendCdpDeviceShellPageCommand(session,"Runtime.releaseObject",{objectId}).catch(()=>{})}}async function cdpPageClick(session,data){let{selector,text,role,exact,scope,clickMode,point,frameId,coordinateSpace}=data??{},hasSelector=typeof selector=="string"&&selector.length>0,hasText=typeof text=="string"&&text.length>0,hasPoint=point&&Number.isFinite(point.x)&&Number.isFinite(point.y)&&point.x>=0&&point.y>=0,provided=[hasSelector&&"selector",hasText&&"text",hasPoint&&"point"].filter(Boolean);if(clickMode!==void 0&&!["auto","dom","mouse","touch"].includes(clickMode))throw new PageActionPreconditionError('page_click: "clickMode" must be one of auto, dom, mouse, touch');if(scope!==void 0&&!hasText)throw new PageActionPreconditionError('page_click: "scope" is only supported with the "text" target');if(coordinateSpace!==void 0&&!["outer-viewport","active-frame"].includes(coordinateSpace))throw new PageActionPreconditionError('page_click: "coordinateSpace" must be one of outer-viewport, active-frame');if(coordinateSpace!==void 0&&!hasPoint)throw new PageActionPreconditionError('page_click: "coordinateSpace" is only supported with the "point" target');if(frameId!==void 0||coordinateSpace==="active-frame")throw new PageActionPreconditionError("page_click: frameId and active-frame coordinates require the browser extension backend");if(scope!==void 0&&checkPageActionPrecondition(()=>validatePageElementSelector(scope,"page_click scope")),hasSelector&&checkPageActionPrecondition(()=>validatePageElementSelector(selector,"page_click")),provided.length===0)throw new PageActionPreconditionError('page_click: provide exactly one of "selector", "text", or "point". For text matching, pass "text" (and optionally "role"/"exact"). For coordinate clicks, pass "point": { x, y } in viewport pixels.');if(provided.length>1)throw new PageActionPreconditionError(`page_click: provide exactly one of "selector", "text", or "point" — got ${provided.length} (${provided.join(", ")}).`);let requestedMode=clickMode??"auto",[visibilityResult,touchEmulationEnabled]=requestedMode==="auto"||requestedMode==="touch"?await Promise.all([sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:"document.visibilityState",returnByValue:!0}),prefersTouchInput(session)]):[void 0,!1];if(requestedMode==="touch"&&visibilityResult?.result?.value==="hidden")throw new PageActionPreconditionError(PAGE_CLICK_HIDDEN_TOUCH_ERROR);let policy=resolvePageClickDispatchPolicy(requestedMode,visibilityResult?.result?.value,touchEmulationEnabled),effectiveClickMode=policy.clickMode,finalize2=result=>policy.fallbackReason?{...result,fallbackReason:policy.fallbackReason}:result;if(hasSelector){if(selector.startsWith("@e")){let ref=selector,result=await withSnapshotRef(session,ref,async entry=>{let dispatchTarget2;if(effectiveClickMode==="dom"||policy.stateAwareControls&&isNativeToggleControl(entry.role))dispatchTarget2=await clickByBackendNodeJs(session,entry.backendNodeId);else{let coord=await getElementCoordsByBackendNodeId(session,entry.backendNodeId);policy.stateAwareControls&&isNativeToggleControl(void 0,coord.inputType)?dispatchTarget2=await clickByBackendNodeJs(session,entry.backendNodeId):(await dispatchCdpClick(session,coord.x,coord.y,effectiveClickMode),dispatchTarget2={...coord,dispatchMode:"trusted-input",pointerType:effectiveClickMode})}return createPageClickResult({kind:"ref",selector:ref,role:entry.role,name:entry.name},dispatchTarget2)});return finalize2(result)}if(effectiveClickMode!=="dom"){let coord=await getElementCoordsBySelector(session,selector);if(policy.stateAwareControls&&isNativeToggleControl(void 0,coord.inputType)){let dispatchTarget2=await clickBySelectorJs(session,selector);return finalize2(createPageClickResult({kind:"selector",selector},dispatchTarget2))}return await dispatchCdpClick(session,coord.x,coord.y,effectiveClickMode),finalize2(createPageClickResult({kind:"selector",selector},{...coord,dispatchMode:"trusted-input",pointerType:effectiveClickMode}))}let dispatchTarget=await clickBySelectorJs(session,selector);return finalize2(createPageClickResult({kind:"selector",selector},dispatchTarget))}if(hasText){let scopeBackendNodeId=scope?await resolveScopeBackendNodeId(session,scope):void 0,nodes=(await sendCdpDeviceShellPageCommand(session,scopeBackendNodeId===void 0?"Accessibility.getFullAXTree":"Accessibility.queryAXTree",scopeBackendNodeId===void 0?{}:{backendNodeId:scopeBackendNodeId})).nodes??[],{hits}=matchAXNodesByText(nodes,{text,role,exact});if(hits.length===0){let exactSuffix=exact===!1?" (substring match)":"",roleSuffix=role?` with role "${role}"`:"";throw new PageActionPreconditionError(`page_click: text "${text}"${roleSuffix}${exactSuffix}${scope?` in scope "${scope}"`:""} not found. Run page_snapshot to inspect the page, or try exact: false for substring matching.`)}if(hits.length>1){let candidates=formatAXTextMatchCandidates(hits);throw new PageActionPreconditionError(`page_click: text "${text}"${scope?` in scope "${scope}"`:""} matched ${hits.length} elements. Refine with "role" or "exact: true", or run page_snapshot and use an "@eN" ref:
737
737
  ${candidates}`)}let hit=hits[0],dispatchTarget;if(effectiveClickMode==="dom"||policy.stateAwareControls&&isNativeToggleControl(hit.role))dispatchTarget=await clickByBackendNodeJs(session,hit.backendNodeId);else{let coord=await getElementCoordsByBackendNodeId(session,hit.backendNodeId);await dispatchCdpClick(session,coord.x,coord.y,effectiveClickMode),dispatchTarget={...coord,dispatchMode:"trusted-input",pointerType:effectiveClickMode}}return finalize2(createPageClickResult({kind:"text",name:hit.name,role:hit.role||void 0,...scope?{scope}:{}},dispatchTarget))}if(!point)throw new PageActionPreconditionError("page_click point is required");if(effectiveClickMode==="dom"){let dispatchTarget=await clickByPointJs(session,point);return finalize2(createPageClickResult({kind:"point",point},dispatchTarget))}return await dispatchCdpClick(session,point.x,point.y,effectiveClickMode),finalize2(createPageClickResult({kind:"point",point},{tag:"",text:"",dispatchMode:"trusted-input",pointerType:effectiveClickMode}))}async function scrollDragSourceIntoView(session,endpoint){if(typeof endpoint!="string")return;if(validatePageElementSelector(endpoint,"page_drag from"),endpoint.startsWith("@e")){let entry=resolveSnapshotRef(session,endpoint),objectId=await resolveBackendNodeObjectId(session,entry.backendNodeId);await sendCdpDeviceShellPageCommand(session,"Runtime.callFunctionOn",{objectId,functionDeclaration:`function() {
738
738
  const el = this.nodeType === Node.TEXT_NODE ? this.parentElement : this;
739
739
  if (!el) return false;
@@ -759,7 +759,7 @@ ${candidates}`)}let hit=hits[0],dispatchTarget;if(effectiveClickMode==="dom"||po
759
759
  if (!el) return { typed: false, tag: '', error: 'Element not found: ' + sel };
760
760
  const fn = (${TYPE_INTO_ELEMENT_SRC});
761
761
  return fn(el, v, c);
762
- })(${JSON.stringify(selector)}, ${JSON.stringify(text)}, ${JSON.stringify(clearFirst)})`,value=(await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression,returnByValue:!0})).result?.value;if(!value)throw new Error("cdp_page_type: evaluation returned no value");if(value.error)throw new PageActionPreconditionError(value.error);if(!value.typed)throw new PageActionPreconditionError("cdp_page_type: failed to type");return{typed:!0,tag:value.tag}}async function cdpPageScroll(session,data){let input=checkPageActionPrecondition(()=>resolvePageScrollInput(data??{}));if(input.selector?.startsWith("@e"))return withSnapshotRef(session,input.selector,async entry=>{let objectId=await resolveBackendNodeObjectId(session,entry.backendNodeId),result2=await sendCdpDeviceShellPageCommand(session,"Runtime.callFunctionOn",{objectId,functionDeclaration:SCROLL_ELEMENT_IN_PAGE_SOURCE,arguments:[{value:input.direction},{value:input.distance},{value:input.selector},{value:input.containerPolicy}],returnByValue:!0});return unwrapPageScrollResult(result2.result?.value,`Cannot resolve scroll container for ref ${input.selector}`)});let result=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:buildPageScrollExpression(input),returnByValue:!0});if(result.exceptionDetails)throw new Error(result.exceptionDetails.exception?.description??result.exceptionDetails.text??"page_scroll evaluation failed");return unwrapPageScrollResult(result.result?.value,"page_scroll evaluation returned no value")}async function cdpPageEval(session,data){let{expression,awaitPromise=!0}=data;if(!expression||typeof expression!="string")throw new PageActionPreconditionError("Invalid expression");let result=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression,returnByValue:!0,awaitPromise});if(result.exceptionDetails)throw new Error(result.exceptionDetails.exception?.description??result.exceptionDetails.text??"Evaluation error");return{result:result.result?.value}}async function cdpPagePress(session,data){let{key}=data;if(!key||typeof key!="string")throw new PageActionPreconditionError("Invalid key");return await session.client.sendCommand("Input.dispatchKeyEvent",{type:"keyDown",key}),await session.client.sendCommand("Input.dispatchKeyEvent",{type:"keyUp",key}),{success:!0,key}}async function cdpPageWait(session,data){let options=resolvePageWaitInput(data),startedAt=Date.now();if(options.mode==="time")return await new Promise(resolve2=>setTimeout(resolve2,options.time)),{success:!0,waited:!0,elapsed:options.time,mode:options.mode};let expression=options.mode==="selector"?`!!document.querySelector(${JSON.stringify(options.selector)})`:options.condition;for(;Date.now()-startedAt<options.timeout;){let result=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression,returnByValue:!0,awaitPromise:options.mode==="condition"});if(result.exceptionDetails)throw new Error(result.exceptionDetails.exception?.description??result.exceptionDetails.text??`page_wait ${options.mode} evaluation failed`);let value=result.result?.value;if(value)return{success:!0,waited:!0,elapsed:Date.now()-startedAt,mode:options.mode,value};await new Promise(resolve2=>setTimeout(resolve2,options.interval))}throw options.mode==="selector"?new Error(`page_wait selector ${JSON.stringify(options.selector)} was not found after ${options.timeout}ms.`):new Error(`page_wait condition was not met after ${options.timeout}ms.`)}async function cdpPageNavigate(session,data){let input=resolvePageNavigateInput(data);if(input.mode==="refresh")return clearPageRefsForNavigation(session),await sendCdpDeviceShellPageCommand(session,"Page.reload",{},35e3),await waitForPageLoad(session,3e4),{success:!0,...await readPageIdentity(session),refreshed:!0};if(input.mode==="history"){let navigationHistory=await sendCdpDeviceShellPageCommand(session,"Page.getNavigationHistory"),targetIndex=navigationHistory.currentIndex+(input.history==="back"?-1:1),targetEntry=navigationHistory.entries?.[targetIndex];if(!targetEntry)throw new Error(`page_navigate: no ${input.history==="back"?"previous":"next"} history entry`);return clearPageRefsForNavigation(session),await sendCdpDeviceShellPageCommand(session,"Page.navigateToHistoryEntry",{entryId:targetEntry.id},35e3),await waitForHistoryIndex(session,targetIndex,3e4),{success:!0,...await readPageIdentity(session),history:input.history}}clearPageRefsForNavigation(session);let result=await sendCdpDeviceShellPageCommand(session,"Page.navigate",{url:input.url},35e3);return await waitForPageLoad(session,3e4),{success:!0,url:result.url??input.url,frameId:result.frameId}}async function readPageIdentity(session){let evaluated=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:"({ url: location.href, title: document.title })",returnByValue:!0});return{url:evaluated.result?.value?.url??"",title:evaluated.result?.value?.title??""}}async function waitForHistoryIndex(session,targetIndex,timeoutMs){let deadline=Date.now()+timeoutMs;for(;Date.now()<deadline;){try{if((await sendCdpDeviceShellPageCommand(session,"Page.getNavigationHistory")).currentIndex===targetIndex&&(await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:"document.readyState",returnByValue:!0})).result?.value!=="loading")return}catch{}await new Promise(resolve2=>setTimeout(resolve2,50))}throw new Error(`Page history navigation timeout after ${timeoutMs}ms`)}async function cdpPageUpload(session,data){let{selector,filePaths}=data??{};if(typeof selector!="string"||selector.length===0)throw new PageActionPreconditionError('page_upload: "selector" is required (CSS selector or @eN snapshot ref)');if(checkPageActionPrecondition(()=>validatePageElementSelector(selector,"page_upload")),!Array.isArray(filePaths)||filePaths.length===0||filePaths.some(filePath=>typeof filePath!="string"||filePath.length===0))throw new PageActionPreconditionError("Invalid filePaths: must be a non-empty array of file path strings");let described;if(selector.startsWith("@e"))described=await withSnapshotRef(session,selector,entry=>sendCdpDeviceShellPageCommand(session,"DOM.describeNode",{backendNodeId:entry.backendNodeId}));else{let evaluated=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:`document.querySelector(${JSON.stringify(selector)})`,returnByValue:!1}),objectId=evaluated.result?.objectId;if(!objectId||evaluated.result?.subtype==="null")throw new PageActionPreconditionError(`Element not found: ${selector}`);try{described=await sendCdpDeviceShellPageCommand(session,"DOM.describeNode",{objectId})}finally{await sendCdpDeviceShellPageCommand(session,"Runtime.releaseObject",{objectId}).catch(()=>{})}}let backendNodeId=described.node?.backendNodeId,tag=String(described.node?.nodeName??"").toLowerCase();if(backendNodeId===void 0)throw new PageActionPreconditionError(`Cannot resolve file input: ${selector}`);if(tag!=="input")throw new PageActionPreconditionError(`Element <${tag||"unknown"}> is not a file input. selector must point to an <input type="file"> element.`);return await sendCdpDeviceShellPageCommand(session,"DOM.setFileInputFiles",{files:filePaths,backendNodeId}),{uploaded:!0,fileCount:filePaths.length,tag}}async function cdpSetDeviceEmulation(session,data){let{enabled}=data??{};if(typeof enabled!="boolean")throw new Error('set_device_emulation: "enabled" is required (true to enable, false to clear)');if(enabled===!1){let hadDeviceShell2=await clearCdpDeviceShell(session),appEnvironment2=await updateCdpAppProfileDeviceEmulation(session,null);for(let{method,params}of buildDisableEmulationCommands())await session.client.sendCommand(method,params).catch(()=>{});appEnvironment2&&await session.client.sendCommand("Emulation.setUserAgentOverride",{userAgent:appEnvironment2.userAgent,platform:appEnvironment2.platform}),session.emulation=void 0;let reloaded2=!1;if(hadDeviceShell2){clearPageRefsForNavigation(session);try{await session.client.sendCommand("Page.reload",{}),await waitForPageLoad(session,3e4),reloaded2=!0}catch{}}return{enabled:!1,reloaded:reloaded2}}let config2=resolveEmulationConfig(data),deviceShell=data.deviceShell===!0,hadDeviceShell=isCdpDeviceShellActive(session),appEnvironment=await updateCdpAppProfileDeviceEmulation(session,config2),commands=buildEnableEmulationCommands(config2).map(command=>command.method==="Emulation.setUserAgentOverride"&&appEnvironment?{...command,params:{userAgent:appEnvironment.userAgent,platform:config2.platform}}:command);for(let{method,params,optional:optional2}of commands)await session.client.sendCommand(method,params).catch(error48=>{if(!optional2)throw error48});session.emulation={mobile:config2.mobile,touch:config2.touch,config:config2,deviceShell};let deviceShellChanged=deviceShell?await applyCdpDeviceShell(session,config2):await clearCdpDeviceShell(session);deviceShell&&appEnvironment&&setCdpDeviceShellChildEnvironmentManagedByApp(session,!0);let reloaded=!1;if(data?.reload!==!1||deviceShellChanged||hadDeviceShell!==deviceShell){clearPageRefsForNavigation(session);try{await session.client.sendCommand("Page.reload",{}),deviceShell?await waitForCdpDeviceShellLoad(session):isCdpAppProfileActive(session)?await waitForCdpAppProfileLoad(session):await waitForPageLoad(session,3e4),reloaded=!0}catch{}}return{enabled:!0,preset:config2.presetName,viewport:{width:config2.width,height:config2.height,deviceScaleFactor:config2.deviceScaleFactor,scale:config2.scale??1},userAgent:config2.userAgent,mobile:config2.mobile,touch:config2.touch,orientation:config2.orientation,deviceShell,reloaded}}async function cdpPageHover(session,data){let{selector}=data??{};if(typeof selector!="string"||selector.length===0)throw new PageActionPreconditionError('page_hover: "selector" is required (CSS selector or @eN snapshot ref)');checkPageActionPrecondition(()=>validatePageElementSelector(selector,"page_hover"));let coord=selector.startsWith("@e")?await withSnapshotRef(session,selector,entry=>getElementCoordsByBackendNodeId(session,entry.backendNodeId)):await getElementCoordsBySelector(session,selector),offset=getCdpDeviceShellInputOffset(session);return await session.client.sendCommand("Input.dispatchMouseEvent",{type:"mouseMoved",x:coord.x+offset.x,y:coord.y+offset.y}),{hovered:!0,tag:coord.tag,text:coord.text}}registerActions([{name:"page_click",session:"page",handler:cdpPageClick},{name:"page_drag",session:"page",handler:cdpPageDrag},{name:"page_type",session:"page",handler:cdpPageType},{name:"page_hover",session:"page",handler:cdpPageHover},{name:"page_scroll",session:"page",handler:cdpPageScroll},{name:"page_eval",session:"page",handler:cdpPageEval},{name:"page_press",session:"page",handler:cdpPagePress},{name:"page_wait",session:"page",handler:cdpPageWait},{name:"page_navigate",session:"page",handler:cdpPageNavigate},{name:"page_upload",session:"page",handler:cdpPageUpload},{name:"set_device_emulation",session:"page",handler:cdpSetDeviceEmulation}]);async function cdpSetTimezone(session,data){if(typeof data?.timezone!="string")throw new Error('set_timezone: "timezone" is required (IANA timezone or empty string to clear)');let timezone=data.timezone.trim();return await session.client.sendCommand("Emulation.setTimezoneOverride",{timezoneId:timezone}),{enabled:timezone.length>0,timezone:timezone||null}}registerActions([{name:"set_timezone",session:"page",handler:cdpSetTimezone}]);async function readCurrentUrl(session,action){let url2=(await session.client.sendCommand("Runtime.evaluate",{expression:"location.href",returnByValue:!0})).result?.value;if(typeof url2!="string"||!url2)throw new Error(`${action}: could not read the current page URL`);return url2}function reloadPageAndWait(session,timeoutMs){return new Promise((resolve2,reject)=>{let settled=!1,removeListener=()=>{},finish=error48=>{settled||(settled=!0,clearTimeout(timer),removeListener(),error48?reject(error48):resolve2())},timer=setTimeout(()=>{finish(new Error(`Page load timeout after ${timeoutMs}ms`))},timeoutMs);removeListener=session.client.on("Page.loadEventFired",()=>finish()),session.client.sendCommand("Page.reload").catch(error48=>{finish(error48 instanceof Error?error48:new Error(String(error48)))})})}async function cdpSetCookie(session,data){let url2=await readCurrentUrl(session,"set_cookie"),target=resolveSetCookieTarget(url2,data??{});if((await session.client.sendCommand("Network.setCookie",{name:target.cookieName,value:target.cookieValue,url:target.cookieUrl,path:target.path,secure:target.cookieUrl.startsWith("https:"),...target.cookieDomain?{domain:target.cookieDomain}:{}})).success===!1)throw new Error(`set_cookie: failed to set ${target.cookieName}`);return target.reload&&await reloadPageAndWait(session,3e4),{...typeof data?.tabId=="number"?{tabId:data.tabId}:{},url:url2,name:target.cookieName,domain:target.domain,path:target.path,reloaded:target.reload}}async function cdpGetCookie(session,data){let url2=await readCurrentUrl(session,"get_cookie"),target=resolveGetCookieTarget(url2,data??{}),result=await session.client.sendCommand("Network.getCookies",{urls:[target.cookieUrl]}),cookie=selectReadableCookie(result.cookies??[],target);return{...typeof data?.tabId=="number"?{tabId:data.tabId}:{},url:data?.url?target.cookieUrl:url2,name:target.cookieName,found:!!cookie,...cookie?{value:cookie.value,domain:cookie.domain,path:cookie.path}:{}}}registerActions([{name:"get_cookie",session:"page",handler:cdpGetCookie},{name:"set_cookie",session:"page",handler:cdpSetCookie}]);var READ_DOM_CHECKED_STATE_SOURCE=readDOMCheckedState.toString();async function readDOMCheckedState2(session,backendNodeId){let objectId=(await sendCdpDeviceShellPageCommand(session,"DOM.resolveNode",{backendNodeId})).object?.objectId;if(objectId)try{let value=(await sendCdpDeviceShellPageCommand(session,"Runtime.callFunctionOn",{objectId,functionDeclaration:READ_DOM_CHECKED_STATE_SOURCE,returnByValue:!0})).result?.value;return value===!0||value===!1||value==="mixed"?value:void 0}finally{await sendCdpDeviceShellPageCommand(session,"Runtime.releaseObject",{objectId}).catch(()=>{})}}function buildSnapshotTree(nodeMap,nodeId,snapshotRefs){let node=nodeMap.get(nodeId);if(!node)return null;let role=node.role?.value??"generic",name=node.name?.value??"",value=node.value?.value,description=node.description?.value;if(ALWAYS_SKIP_ROLES.has(role)||role==="StaticText"&&!name)return null;if(role==="SvgRoot"){let ref2;node.backendDOMNodeId!==void 0&&(ref2=snapshotRefs.register({backendNodeId:node.backendDOMNodeId,role,name}));let svgChildCount=node.childIds?.length??0;return{role:"SvgRoot",name:name||`(${svgChildCount} elements)`,backendDOMNodeId:node.backendDOMNodeId,ref:ref2}}let children=[];if(node.childIds)for(let childId of node.childIds){let child=buildSnapshotTree(nodeMap,childId,snapshotRefs);child&&children.push(child)}if(node.ignored)return children.length===0?null:children.length===1?children[0]:{role:"group",name:"",children};if(SKIP_ROLES.has(role)&&!name)return children.length===0?null:children.length===1?children[0]:{role:"group",name:"",children};children.length===1&&children[0].role==="StaticText"&&children[0].name===name&&!children[0].children&&(children.length=0);let ref;node.backendDOMNodeId!==void 0&&(ref=snapshotRefs.register({backendNodeId:node.backendDOMNodeId,role,name}));let props=extractAXProperties(node),result={role,name,backendDOMNodeId:node.backendDOMNodeId};return ref&&(result.ref=ref),value!==void 0&&value!==""&&(result.value=String(value)),description&&(result.description=description),props.focused&&(result.focused=!0),props.checked!==void 0&&(result.checked=props.checked),props.disabled&&(result.disabled=!0),props.required&&(result.required=!0),props.expanded!==void 0&&(result.expanded=props.expanded),props.selected&&(result.selected=!0),props.level!==void 0&&(result.level=props.level),children.length>0&&(result.children=children),result}async function resolveRootBackendNodeId(session,selector){let evaluated=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:`document.querySelector(${JSON.stringify(selector)})`,returnByValue:!1});if(evaluated.exceptionDetails){let message=evaluated.exceptionDetails.exception?.description??evaluated.exceptionDetails.text??"invalid selector";throw new Error(`page_snapshot: invalid rootSelector "${selector}": ${message}`)}let objectId=evaluated.result?.objectId;if(!objectId||evaluated.result?.subtype==="null")throw new Error(`page_snapshot: rootSelector not found: ${selector}`);try{let backendNodeId=(await sendCdpDeviceShellPageCommand(session,"DOM.describeNode",{objectId})).node?.backendNodeId;if(backendNodeId===void 0)throw new Error(`page_snapshot: cannot resolve rootSelector: ${selector}`);return backendNodeId}finally{await sendCdpDeviceShellPageCommand(session,"Runtime.releaseObject",{objectId}).catch(()=>{})}}async function resolveAncestorBackendNodeId(session,backendNodeId,ancestorDepth){if(ancestorDepth===0)return backendNodeId;let objectId=(await sendCdpDeviceShellPageCommand(session,"DOM.resolveNode",{backendNodeId})).object?.objectId;if(!objectId)throw new Error("page_snapshot: cannot resolve rootRef in the current document");let ancestorObjectId;try{let ancestor=await sendCdpDeviceShellPageCommand(session,"Runtime.callFunctionOn",{objectId,functionDeclaration:`function(depth) {
762
+ })(${JSON.stringify(selector)}, ${JSON.stringify(text)}, ${JSON.stringify(clearFirst)})`,value=(await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression,returnByValue:!0})).result?.value;if(!value)throw new Error("cdp_page_type: evaluation returned no value");if(value.error)throw new PageActionPreconditionError(value.error);if(!value.typed)throw new PageActionPreconditionError("cdp_page_type: failed to type");return{typed:!0,tag:value.tag}}async function cdpPageScroll(session,data){let input=checkPageActionPrecondition(()=>resolvePageScrollInput(data??{}));if(input.selector?.startsWith("@e"))return withSnapshotRef(session,input.selector,async entry=>{let objectId=await resolveBackendNodeObjectId(session,entry.backendNodeId),result2=await sendCdpDeviceShellPageCommand(session,"Runtime.callFunctionOn",{objectId,functionDeclaration:SCROLL_ELEMENT_IN_PAGE_SOURCE,arguments:[{value:input.direction},{value:input.distance},{value:input.selector},{value:input.containerPolicy}],returnByValue:!0});return unwrapPageScrollResult(result2.result?.value,`Cannot resolve scroll container for ref ${input.selector}`)});let result=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:buildPageScrollExpression(input),returnByValue:!0});if(result.exceptionDetails)throw new Error(result.exceptionDetails.exception?.description??result.exceptionDetails.text??"page_scroll evaluation failed");return unwrapPageScrollResult(result.result?.value,"page_scroll evaluation returned no value")}async function cdpPageEval(session,data){let{expression,awaitPromise=!0}=data;if(!expression||typeof expression!="string")throw new PageActionPreconditionError("Invalid expression");let result=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression,returnByValue:!0,awaitPromise});if(result.exceptionDetails)throw new Error(result.exceptionDetails.exception?.description??result.exceptionDetails.text??"Evaluation error");return{result:result.result?.value}}async function cdpPagePress(session,data){let{key}=data;if(!key||typeof key!="string")throw new PageActionPreconditionError("Invalid key");return await session.client.sendCommand("Input.dispatchKeyEvent",{type:"keyDown",key}),await session.client.sendCommand("Input.dispatchKeyEvent",{type:"keyUp",key}),{success:!0,key}}async function cdpPageWait(session,data){let options=resolvePageWaitInput(data),startedAt=Date.now();if(options.mode==="time")return await new Promise(resolve2=>setTimeout(resolve2,options.time)),{success:!0,waited:!0,elapsed:options.time,mode:options.mode};let expression=options.mode==="selector"?`!!document.querySelector(${JSON.stringify(options.selector)})`:options.condition;for(;Date.now()-startedAt<options.timeout;){let result=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression,returnByValue:!0,awaitPromise:options.mode==="condition"});if(result.exceptionDetails)throw new Error(result.exceptionDetails.exception?.description??result.exceptionDetails.text??`page_wait ${options.mode} evaluation failed`);let value=result.result?.value;if(value)return{success:!0,waited:!0,elapsed:Date.now()-startedAt,mode:options.mode,value};await new Promise(resolve2=>setTimeout(resolve2,options.interval))}throw options.mode==="selector"?new Error(`page_wait selector ${JSON.stringify(options.selector)} was not found after ${options.timeout}ms.`):new Error(`page_wait condition was not met after ${options.timeout}ms.`)}async function cdpPageNavigate(session,data){let input=resolvePageNavigateInput(data);if(input.mode==="refresh")return clearPageRefsForNavigation(session),await sendCdpDeviceShellPageCommand(session,"Page.reload",{},35e3),await waitForPageLoad(session,3e4),{success:!0,...await readPageIdentity(session),refreshed:!0};if(input.mode==="history"){let navigationHistory=await sendCdpDeviceShellPageCommand(session,"Page.getNavigationHistory"),targetIndex=navigationHistory.currentIndex+(input.history==="back"?-1:1),targetEntry=navigationHistory.entries?.[targetIndex];if(!targetEntry)throw new Error(`page_navigate: no ${input.history==="back"?"previous":"next"} history entry`);return clearPageRefsForNavigation(session),await sendCdpDeviceShellPageCommand(session,"Page.navigateToHistoryEntry",{entryId:targetEntry.id},35e3),await waitForHistoryIndex(session,targetIndex,3e4),{success:!0,...await readPageIdentity(session),history:input.history}}clearPageRefsForNavigation(session);let result=await sendCdpDeviceShellPageCommand(session,"Page.navigate",{url:input.url},35e3);return await waitForPageLoad(session,3e4),{success:!0,url:result.url??input.url,frameId:result.frameId}}async function readPageIdentity(session){let evaluated=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:"({ url: location.href, title: document.title })",returnByValue:!0});return{url:evaluated.result?.value?.url??"",title:evaluated.result?.value?.title??""}}async function waitForHistoryIndex(session,targetIndex,timeoutMs){let deadline=Date.now()+timeoutMs;for(;Date.now()<deadline;){try{if((await sendCdpDeviceShellPageCommand(session,"Page.getNavigationHistory")).currentIndex===targetIndex&&(await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:"document.readyState",returnByValue:!0})).result?.value!=="loading")return}catch{}await new Promise(resolve2=>setTimeout(resolve2,50))}throw new Error(`Page history navigation timeout after ${timeoutMs}ms`)}async function cdpPageUpload(session,data){let{selector,filePaths}=data??{};if(typeof selector!="string"||selector.length===0)throw new PageActionPreconditionError('page_upload: "selector" is required (CSS selector or @eN snapshot ref)');if(checkPageActionPrecondition(()=>validatePageElementSelector(selector,"page_upload")),!Array.isArray(filePaths)||filePaths.length===0||filePaths.some(filePath=>typeof filePath!="string"||filePath.length===0))throw new PageActionPreconditionError("Invalid filePaths: must be a non-empty array of file path strings");let described;if(selector.startsWith("@e"))described=await withSnapshotRef(session,selector,entry=>sendCdpDeviceShellPageCommand(session,"DOM.describeNode",{backendNodeId:entry.backendNodeId}));else{let evaluated=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:`document.querySelector(${JSON.stringify(selector)})`,returnByValue:!1}),objectId=evaluated.result?.objectId;if(!objectId||evaluated.result?.subtype==="null")throw new PageActionPreconditionError(`Element not found: ${selector}`);try{described=await sendCdpDeviceShellPageCommand(session,"DOM.describeNode",{objectId})}finally{await sendCdpDeviceShellPageCommand(session,"Runtime.releaseObject",{objectId}).catch(()=>{})}}let backendNodeId=described.node?.backendNodeId,tag=String(described.node?.nodeName??"").toLowerCase();if(backendNodeId===void 0)throw new PageActionPreconditionError(`Cannot resolve file input: ${selector}`);if(tag!=="input")throw new PageActionPreconditionError(`Element <${tag||"unknown"}> is not a file input. selector must point to an <input type="file"> element.`);return await sendCdpDeviceShellPageCommand(session,"DOM.setFileInputFiles",{files:filePaths,backendNodeId}),{uploaded:!0,fileCount:filePaths.length,tag}}async function cdpSetDeviceEmulation(session,data){let{enabled}=data??{};if(typeof enabled!="boolean")throw new Error('set_device_emulation: "enabled" is required (true to enable, false to clear)');if(enabled===!1){let hadDeviceShell2=await clearCdpDeviceShell(session),appEnvironment2=await updateCdpAppProfileDeviceEmulation(session,null);for(let{method,params}of buildDisableEmulationCommands())await session.client.sendCommand(method,params).catch(()=>{});appEnvironment2&&await session.client.sendCommand("Emulation.setUserAgentOverride",{userAgent:appEnvironment2.userAgent,platform:appEnvironment2.platform}),session.emulation=void 0;let reloaded2=!1;if(hadDeviceShell2){clearPageRefsForNavigation(session);try{await session.client.sendCommand("Page.reload",{}),await waitForPageLoad(session,3e4),reloaded2=!0}catch{}}return{enabled:!1,reloaded:reloaded2}}let config2=resolveEmulationConfig(data),deviceShell=data.deviceShell===!0,hadDeviceShell=isCdpDeviceShellActive(session),appEnvironment=await updateCdpAppProfileDeviceEmulation(session,config2),commands=buildEnableEmulationCommands(config2).map(command=>command.method==="Emulation.setUserAgentOverride"&&appEnvironment?{...command,params:{userAgent:appEnvironment.userAgent,platform:config2.platform}}:command);for(let{method,params,optional:optional2}of commands)await session.client.sendCommand(method,params).catch(error48=>{if(!optional2)throw error48});session.emulation={mobile:config2.mobile,touch:config2.touch,config:config2,deviceShell};let deviceShellChanged=deviceShell?await applyCdpDeviceShell(session,config2):await clearCdpDeviceShell(session);deviceShell&&appEnvironment&&setCdpDeviceShellChildEnvironmentManagedByApp(session,!0);let reloaded=!1;if(data?.reload!==!1||deviceShellChanged||hadDeviceShell!==deviceShell){clearPageRefsForNavigation(session);try{await session.client.sendCommand("Page.reload",{}),deviceShell?await waitForCdpDeviceShellLoad(session):isCdpAppProfileActive(session)?await waitForCdpAppProfileLoad(session):await waitForPageLoad(session,3e4),reloaded=!0}catch{}}return{enabled:!0,preset:config2.presetName,viewport:{width:config2.width,height:config2.height,deviceScaleFactor:config2.deviceScaleFactor,scale:config2.scale??1},userAgent:config2.userAgent,mobile:config2.mobile,touch:config2.touch,orientation:config2.orientation,deviceShell,reloaded}}async function cdpPageHover(session,data){let{selector}=data??{};if(typeof selector!="string"||selector.length===0)throw new PageActionPreconditionError('page_hover: "selector" is required (CSS selector or @eN snapshot ref)');checkPageActionPrecondition(()=>validatePageElementSelector(selector,"page_hover"));let coord=selector.startsWith("@e")?await withSnapshotRef(session,selector,entry=>getElementCoordsByBackendNodeId(session,entry.backendNodeId)):await getElementCoordsBySelector(session,selector),offset=getCdpDeviceShellInputOffset(session);return await session.client.sendCommand("Input.dispatchMouseEvent",{type:"mouseMoved",x:coord.x+offset.x,y:coord.y+offset.y}),{hovered:!0,tag:coord.tag,text:coord.text}}registerActions([{name:"page_click",session:"page",handler:cdpPageClick},{name:"page_drag",session:"page",handler:cdpPageDrag},{name:"page_type",session:"page",handler:cdpPageType},{name:"page_hover",session:"page",handler:cdpPageHover},{name:"page_scroll",session:"page",handler:cdpPageScroll},{name:"page_eval",session:"page",handler:cdpPageEval},{name:"page_press",session:"page",handler:cdpPagePress},{name:"page_wait",session:"page",handler:cdpPageWait},{name:"page_navigate",session:"page",handler:cdpPageNavigate},{name:"page_upload",session:"page",handler:cdpPageUpload},{name:"set_device_emulation",session:"page",handler:cdpSetDeviceEmulation}]);async function cdpSetTimezone(session,data){if(typeof data?.timezone!="string")throw new Error('set_timezone: "timezone" is required (IANA timezone or empty string to clear)');let timezone=data.timezone.trim();return await session.client.sendCommand("Emulation.setTimezoneOverride",{timezoneId:timezone}),{enabled:timezone.length>0,timezone:timezone||null}}registerActions([{name:"set_timezone",session:"page",handler:cdpSetTimezone}]);function reloadPageAndWait(session,timeoutMs){return new Promise((resolve2,reject)=>{let settled=!1,removeListener=()=>{},finish=error48=>{settled||(settled=!0,clearTimeout(timer),removeListener(),error48?reject(error48):resolve2())},timer=setTimeout(()=>{finish(new Error(`Page load timeout after ${timeoutMs}ms`))},timeoutMs);removeListener=session.client.on("Page.loadEventFired",()=>finish()),session.client.sendCommand("Page.reload").catch(error48=>{finish(error48 instanceof Error?error48:new Error(String(error48)))})})}async function cdpSetCookie(session,data){let url2=await readCdpCurrentUrl(session,"set_cookie"),target=resolveSetCookieTarget(url2,data??{});if((await session.client.sendCommand("Network.setCookie",{name:target.cookieName,value:target.cookieValue,url:target.cookieUrl,path:target.path,secure:target.cookieUrl.startsWith("https:"),...target.cookieDomain?{domain:target.cookieDomain}:{}})).success===!1)throw new Error(`set_cookie: failed to set ${target.cookieName}`);return target.reload&&await reloadPageAndWait(session,3e4),{...typeof data?.tabId=="number"?{tabId:data.tabId}:{},url:url2,name:target.cookieName,domain:target.domain,path:target.path,reloaded:target.reload}}async function cdpGetCookie(session,data){let url2=await readCdpCurrentUrl(session,"get_cookie"),target=resolveGetCookieTarget(url2,data??{}),result=await session.client.sendCommand("Network.getCookies",{urls:[target.cookieUrl]}),cookie=selectReadableCookie(result.cookies??[],target);return{...typeof data?.tabId=="number"?{tabId:data.tabId}:{},url:data?.url?target.cookieUrl:url2,name:target.cookieName,found:!!cookie,...cookie?{value:cookie.value,domain:cookie.domain,path:cookie.path}:{}}}registerActions([{name:"get_cookie",session:"page",handler:cdpGetCookie},{name:"set_cookie",session:"page",handler:cdpSetCookie}]);var READ_DOM_CHECKED_STATE_SOURCE=readDOMCheckedState.toString();async function readDOMCheckedState2(session,backendNodeId){let objectId=(await sendCdpDeviceShellPageCommand(session,"DOM.resolveNode",{backendNodeId})).object?.objectId;if(objectId)try{let value=(await sendCdpDeviceShellPageCommand(session,"Runtime.callFunctionOn",{objectId,functionDeclaration:READ_DOM_CHECKED_STATE_SOURCE,returnByValue:!0})).result?.value;return value===!0||value===!1||value==="mixed"?value:void 0}finally{await sendCdpDeviceShellPageCommand(session,"Runtime.releaseObject",{objectId}).catch(()=>{})}}function buildSnapshotTree(nodeMap,nodeId,snapshotRefs){let node=nodeMap.get(nodeId);if(!node)return null;let role=node.role?.value??"generic",name=node.name?.value??"",value=node.value?.value,description=node.description?.value;if(ALWAYS_SKIP_ROLES.has(role)||role==="StaticText"&&!name)return null;if(role==="SvgRoot"){let ref2;node.backendDOMNodeId!==void 0&&(ref2=snapshotRefs.register({backendNodeId:node.backendDOMNodeId,role,name}));let svgChildCount=node.childIds?.length??0;return{role:"SvgRoot",name:name||`(${svgChildCount} elements)`,backendDOMNodeId:node.backendDOMNodeId,ref:ref2}}let children=[];if(node.childIds)for(let childId of node.childIds){let child=buildSnapshotTree(nodeMap,childId,snapshotRefs);child&&children.push(child)}if(node.ignored)return children.length===0?null:children.length===1?children[0]:{role:"group",name:"",children};if(SKIP_ROLES.has(role)&&!name)return children.length===0?null:children.length===1?children[0]:{role:"group",name:"",children};children.length===1&&children[0].role==="StaticText"&&children[0].name===name&&!children[0].children&&(children.length=0);let ref;node.backendDOMNodeId!==void 0&&(ref=snapshotRefs.register({backendNodeId:node.backendDOMNodeId,role,name}));let props=extractAXProperties(node),result={role,name,backendDOMNodeId:node.backendDOMNodeId};return ref&&(result.ref=ref),value!==void 0&&value!==""&&(result.value=String(value)),description&&(result.description=description),props.focused&&(result.focused=!0),props.checked!==void 0&&(result.checked=props.checked),props.disabled&&(result.disabled=!0),props.required&&(result.required=!0),props.expanded!==void 0&&(result.expanded=props.expanded),props.selected&&(result.selected=!0),props.level!==void 0&&(result.level=props.level),children.length>0&&(result.children=children),result}async function resolveRootBackendNodeId(session,selector){let evaluated=await sendCdpDeviceShellPageCommand(session,"Runtime.evaluate",{expression:`document.querySelector(${JSON.stringify(selector)})`,returnByValue:!1});if(evaluated.exceptionDetails){let message=evaluated.exceptionDetails.exception?.description??evaluated.exceptionDetails.text??"invalid selector";throw new Error(`page_snapshot: invalid rootSelector "${selector}": ${message}`)}let objectId=evaluated.result?.objectId;if(!objectId||evaluated.result?.subtype==="null")throw new Error(`page_snapshot: rootSelector not found: ${selector}`);try{let backendNodeId=(await sendCdpDeviceShellPageCommand(session,"DOM.describeNode",{objectId})).node?.backendNodeId;if(backendNodeId===void 0)throw new Error(`page_snapshot: cannot resolve rootSelector: ${selector}`);return backendNodeId}finally{await sendCdpDeviceShellPageCommand(session,"Runtime.releaseObject",{objectId}).catch(()=>{})}}async function resolveAncestorBackendNodeId(session,backendNodeId,ancestorDepth){if(ancestorDepth===0)return backendNodeId;let objectId=(await sendCdpDeviceShellPageCommand(session,"DOM.resolveNode",{backendNodeId})).object?.objectId;if(!objectId)throw new Error("page_snapshot: cannot resolve rootRef in the current document");let ancestorObjectId;try{let ancestor=await sendCdpDeviceShellPageCommand(session,"Runtime.callFunctionOn",{objectId,functionDeclaration:`function(depth) {
763
763
  let element = this && this.nodeType === 3 ? this.parentElement : this;
764
764
  let remaining = depth;
765
765
  while (element && element.parentElement && remaining > 0) {
@@ -767,7 +767,8 @@ ${candidates}`)}let hit=hits[0],dispatchTarget;if(effectiveClickMode==="dom"||po
767
767
  remaining -= 1;
768
768
  }
769
769
  return element;
770
- }`,arguments:[{value:ancestorDepth}],returnByValue:!1});if(ancestorObjectId=ancestor.result?.objectId,!ancestorObjectId||ancestor.result?.subtype==="null")throw new Error("page_snapshot: cannot resolve an ancestor for rootRef");let ancestorBackendNodeId=(await sendCdpDeviceShellPageCommand(session,"DOM.describeNode",{objectId:ancestorObjectId})).node?.backendNodeId;if(ancestorBackendNodeId===void 0)throw new Error("page_snapshot: cannot resolve an ancestor for rootRef");return ancestorBackendNodeId}finally{ancestorObjectId&&await sendCdpDeviceShellPageCommand(session,"Runtime.releaseObject",{objectId:ancestorObjectId}).catch(()=>{}),await sendCdpDeviceShellPageCommand(session,"Runtime.releaseObject",{objectId}).catch(()=>{})}}async function getViewportBackendNodeIds(session){let[metrics,captured]=await Promise.all([sendCdpDeviceShellPageCommand(session,"Page.getLayoutMetrics",{}),sendCdpDeviceShellPageCommand(session,"DOMSnapshot.captureSnapshot",{computedStyles:[],includeDOMRects:!0,includePaintOrder:!1})]),viewport=resolveDOMSnapshotViewportBounds(metrics);if(!viewport)throw new Error("page_snapshot: viewport metrics are unavailable");let{left,top,width,height}=viewport,right=left+width,bottom=top+height,visible=new Set;for(let document2 of captured.documents??[]){let backendNodeIds=document2.nodes?.backendNodeId??[],nodeIndexes=document2.layout?.nodeIndex??[],bounds=document2.layout?.bounds??[];for(let index=0;index<nodeIndexes.length;index+=1){let box=bounds[index],backendNodeId=backendNodeIds[nodeIndexes[index]];if(!box||backendNodeId===void 0)continue;let[x,y,boxWidth,boxHeight]=box;boxWidth<=0||boxHeight<=0||x<right&&x+boxWidth>left&&y<bottom&&y+boxHeight>top&&visible.add(backendNodeId)}}return visible}async function cdpPageSnapshot(session,data){let mode=data?.mode??"full",rootSelector=data?.rootSelector,rootRef=data?.rootRef,ancestorDepth=data?.ancestorDepth??0,query=resolvePageSnapshotQuery(data?.query);if(!["full","interactive","viewport"].includes(mode))throw new Error("page_snapshot: mode must be one of full, interactive, viewport");if(rootSelector!==void 0&&(typeof rootSelector!="string"||!rootSelector.trim()))throw new Error("page_snapshot: rootSelector must be a non-empty CSS selector");if(rootRef!==void 0&&(typeof rootRef!="string"||!/^@e\d+$/.test(rootRef)))throw new Error('page_snapshot: rootRef must be a snapshot ref like "@e3"');if(rootSelector!==void 0&&rootRef!==void 0)throw new Error("page_snapshot: rootSelector and rootRef are mutually exclusive");if(!Number.isInteger(ancestorDepth)||ancestorDepth<0||ancestorDepth>20)throw new Error("page_snapshot: ancestorDepth must be an integer between 0 and 20");if(ancestorDepth>0&&rootRef===void 0)throw new Error("page_snapshot: ancestorDepth requires rootRef");let rootBackendNodeId;if(rootSelector)rootBackendNodeId=await resolveRootBackendNodeId(session,rootSelector);else if(rootRef){let entry=resolvePageRef(session,rootRef);if(!entry)throw new Error(`Ref ${rootRef} not found. Run page_snapshot first to get fresh refs.`);rootBackendNodeId=await resolveAncestorBackendNodeId(session,entry.backendNodeId,ancestorDepth)}let snapshotRefs=beginPageSnapshotRefs(session),[result,visibleBackendNodeIds]=await Promise.all([sendCdpDeviceShellPageCommand(session,rootBackendNodeId===void 0?"Accessibility.getFullAXTree":"Accessibility.queryAXTree",rootBackendNodeId===void 0?{depth:data?.depth}:{backendNodeId:rootBackendNodeId}),mode==="viewport"||mode==="interactive"?getViewportBackendNodeIds(session):Promise.resolve(void 0)]),nodes=result.nodes??[];await reconcileAXCheckedStates(nodes,backendNodeId=>readDOMCheckedState2(session,backendNodeId));let nodeMap=new Map;for(let node of nodes)nodeMap.set(node.nodeId,node);let rootNode=nodes[0];if(!rootNode)return snapshotRefs.commit(new Set),{snapshot:"(empty page)",refs:{},elementCount:0,outputNodeCount:1,mode,...rootSelector?{rootSelector}:{},...rootRef?{rootRef,ancestorDepth}:{},...query?{query,matches:[],matchCount:0}:{}};let rawTree=buildSnapshotTree(nodeMap,rootNode.nodeId,snapshotRefs),viewportFilteredTree=mode==="interactive"?filterSnapshotTree(rawTree,"viewport",visibleBackendNodeIds):rawTree,effectiveMode=mode;mode==="interactive"&&!hasInteractiveSnapshotNode(viewportFilteredTree)&&(effectiveMode="viewport");let modeFilteredTree=mode==="interactive"?effectiveMode==="interactive"?filterSnapshotTree(viewportFilteredTree,"interactive"):viewportFilteredTree:filterSnapshotTree(rawTree,effectiveMode,visibleBackendNodeIds),queryResult=query?filterSnapshotTreeByQuery(modeFilteredTree,query):{tree:modeFilteredTree,matches:[]},limitedMatches=query?limitPageSnapshotQueryMatches(queryResult.matches):{matches:[],truncated:!1},tree=queryResult.tree,lines=[];tree&&formatSnapshotNode(tree,0,lines);let formatted=formatSnapshotWithLimits(lines.length>0?lines:[query?"(no matches)":"(empty page)"],{maxChars:data?.maxChars,maxNodes:data?.maxNodes}),refs={},outputRefKeys=new Set(Array.from(formatted.snapshot.matchAll(/(?:^|\n)\s*(@e\d+)\s/g),match=>match[1]));for(let match of limitedMatches.matches)match.ref&&outputRefKeys.add(match.ref);snapshotRefs.commit(outputRefKeys);let registry2=getPageRefRegistry(session);for(let ref of outputRefKeys){let entry=registry2.resolve(ref);entry&&(refs[ref.slice(1)]={backendNodeId:entry.backendNodeId})}return{snapshot:formatted.snapshot,refs,elementCount:countSnapshotNodes(tree),outputNodeCount:formatted.outputNodeCount,mode,...rootSelector?{rootSelector}:{},...rootRef?{rootRef,ancestorDepth}:{},...query?{query,matches:limitedMatches.matches,matchCount:queryResult.matches.length,...limitedMatches.truncated?{matchesTruncated:!0}:{}}:{},...effectiveMode!==mode?{fallbackMode:"viewport"}:{},...formatted.truncated?{truncated:!0}:{}}}async function cdpPageFrames(session,_data){let result=await session.client.sendCommand("Page.getFrameTree",{});function flattenFrameTree(tree){if(!tree)return[];let{frame,childFrames=[]}=tree;return[{frameId:frame.id,parentFrameId:frame.parentId??null,url:frame.url,name:frame.name??""},...childFrames.flatMap(flattenFrameTree)]}let frames=flattenFrameTree(result.frameTree);return{frames,count:frames.length}}registerActions([{name:"page_snapshot",session:"page",handler:cdpPageSnapshot},{name:"page_frames",session:"page",handler:cdpPageFrames}]);var MEARL_SERVICE_COOKIE_DOMAINS=["tdbank.alibaba-inc.com","ats2.alibaba-inc.com","g.alibaba-inc.com","login.alibaba-inc.com","token-hub.alibaba-inc.com","alibaba-inc.com"],MEARL_SERVICE_COOKIE_HOSTS=new Set(MEARL_SERVICE_COOKIE_DOMAINS);function normalizeCookieDomain2(input){let value=input.trim();if(!value)throw new Error("Cookie domain must be a non-empty string");let hostname3;try{hostname3=new URL(value.includes("://")?value:`https://${value}`).hostname}catch{throw new Error(`Invalid cookie domain: ${input}`)}if(hostname3=hostname3.toLowerCase().replace(/^\.+/,"").replace(/\.+$/,""),!hostname3)throw new Error(`Invalid cookie domain: ${input}`);return hostname3}function normalizeCookieDomains(inputs){if(!Array.isArray(inputs))throw new Error("copyCookieDomains must be an array of domains");return[...new Set(inputs.map(value=>normalizeCookieDomain2(String(value))))]}function isMearlServiceCookie(cookie){let domain2=normalizeCookieDomain2(cookie.domain);return MEARL_SERVICE_COOKIE_HOSTS.has(domain2)?!0:domain2.endsWith(".tdbank.alibaba-inc.com")||domain2.endsWith(".ats2.alibaba-inc.com")}function normalizeCookieCopyScope(input){let presets=input.presets??[];if(!Array.isArray(presets)||presets.some(preset=>preset!=="mearl-services"))throw new Error("copyCookieDomains.presets contains an unsupported preset");return{includeMearlServices:presets.includes("mearl-services"),domains:normalizeCookieDomains(input.domains??[])}}function resolveCookieCopyPlan(input){let includeMearlServices=!1,explicitDomains=[];if(input==="mearl-services")includeMearlServices=!0;else if(Array.isArray(input))explicitDomains=normalizeCookieDomains(input);else if(input!=null&&typeof input=="object"){let scope=normalizeCookieCopyScope(input);includeMearlServices=scope.includeMearlServices,explicitDomains=scope.domains}else if(input!==void 0)throw new Error('copyCookieDomains must be an array of domains, "mearl-services", or a scope object');return includeMearlServices?{domains:[...new Set([...MEARL_SERVICE_COOKIE_DOMAINS,...explicitDomains])],select:cookies=>cookies.filter(cookie=>isMearlServiceCookie(cookie)||explicitDomains.some(domain2=>cookieMatchesDomain(cookie.domain,domain2)))}:{domains:explicitDomains,select:cookies=>cookies}}function cookieMatchesDomain(cookieDomain,requestedDomain){let cookieHost=cookieDomain.toLowerCase().replace(/^\.+/,"");return cookieHost===requestedDomain||cookieHost.endsWith(`.${requestedDomain}`)||requestedDomain.endsWith(`.${cookieHost}`)}function toTransferableCookie(cookie){let result={name:String(cookie.name),value:String(cookie.value),domain:String(cookie.domain),path:String(cookie.path||"/"),secure:!!cookie.secure,httpOnly:!!cookie.httpOnly};return["Strict","Lax","None"].includes(cookie.sameSite)&&(result.sameSite=cookie.sameSite),typeof cookie.expires=="number"&&cookie.expires>0&&(result.expires=cookie.expires),["Low","Medium","High"].includes(cookie.priority)&&(result.priority=cookie.priority),typeof cookie.sameParty=="boolean"&&(result.sameParty=cookie.sameParty),["Unset","NonSecure","Secure"].includes(cookie.sourceScheme)&&(result.sourceScheme=cookie.sourceScheme),typeof cookie.sourcePort=="number"&&(result.sourcePort=cookie.sourcePort),cookie.partitionKey?.topLevelSite&&(result.partitionKey={topLevelSite:String(cookie.partitionKey.topLevelSite),...typeof cookie.partitionKey.hasCrossSiteAncestor=="boolean"?{hasCrossSiteAncestor:cookie.partitionKey.hasCrossSiteAncestor}:{}}),result}async function cdpExportCookies(session,domains){let requestedDomains=normalizeCookieDomains(domains);return((await(await session.getBrowserClient()).sendCommand("Storage.getCookies",{})).cookies??[]).filter(cookie=>requestedDomains.some(domain2=>cookieMatchesDomain(String(cookie.domain),domain2))).map(toTransferableCookie)}async function cdpImportCookies(session,cookies){if(cookies.length===0)return 0;let browser=await session.getBrowserClient();return cdpImportCookiesWithClient(browser,cookies)}async function cdpImportCookiesWithClient(browser,cookies){return cookies.length===0?0:(await browser.sendCommand("Storage.setCookies",{cookies}),cookies.length)}var BROWSERS_SUBDIR="browsers",STALE_RECORD_TTL_MS=5*6e4,FOCUS_WRITE_THROTTLE_MS=1e3,identity=null,logFn2=()=>{};function initBrowserRegistry(deps){logFn2=deps.log}function recordFileFor2(browserId){return keyedConfigFile(BROWSERS_SUBDIR,browserId)}function ownsRecord(browserId){let existing=readRecord(recordFileFor2(browserId));return!existing||existing.pid===process.pid||!isAlive(existing.pid)}function persist(patch){if(!identity)return;let file2=recordFileFor2(identity.browserId);if(!ownsRecord(identity.browserId))return;let previous=readRecord(file2),record2={pid:process.pid,browserId:identity.browserId,socketPath:identity.socketPath,browserName:identity.browserName,nativeHostVersion:identity.nativeHostVersion,transport:identity.transport,startedAt:identity.startedAt,lastFocusedAt:previous?.lastFocusedAt,extensionVersion:previous?.extensionVersion,...patch,updatedAt:Date.now()};try{writeRecord(file2,record2)}catch(error48){logFn2("browser-registry: failed to write record:",String(error48))}}function registerBrowser(info){let startedAt=identity?.startedAt??new Date().toISOString();identity={browserId:info.browserId,socketPath:info.socketPath,browserName:info.browserName,nativeHostVersion:info.nativeHostVersion,transport:info.transport,startedAt};let previous=readRecord(recordFileFor2(info.browserId));persist({lastFocusedAt:previous?.lastFocusedAt??info.lastFocusedAt??Date.now(),extensionVersion:info.extensionVersion}),logFn2(`browser-registry: registered ${info.browserName} (${info.browserId})`)}var lastFocusWriteAt=0,focusFlushTimer=null;function writeFocusNow(){lastFocusWriteAt=Date.now(),persist({lastFocusedAt:lastFocusWriteAt})}function touchFocus(){if(!identity)return;let elapsed=Date.now()-lastFocusWriteAt;if(elapsed>=FOCUS_WRITE_THROTTLE_MS){writeFocusNow();return}focusFlushTimer||(focusFlushTimer=setTimeout(()=>{focusFlushTimer=null,writeFocusNow()},FOCUS_WRITE_THROTTLE_MS-elapsed),focusFlushTimer.unref())}function unregisterBrowser(){if(focusFlushTimer&&(clearTimeout(focusFlushTimer),focusFlushTimer=null),!identity)return;let file2=recordFileFor2(identity.browserId),existing=readRecord(file2);existing&&existing.pid!==process.pid||removeRecord(file2)}function pruneDeadBrowsers(){let now=Date.now();for(let file2 of listRecordFiles(keyedDir(BROWSERS_SUBDIR))){let rec=readRecord(file2);if(!rec){removeRecord(file2);continue}isAlive(rec.pid)||now-(rec.updatedAt??0)>STALE_RECORD_TTL_MS&&removeRecord(file2)}}function listRegisteredBrowsers(){let records=[];for(let file2 of listRecordFiles(keyedDir(BROWSERS_SUBDIR))){let record2=readRecord(file2);record2&&isAlive(record2.pid)&&records.push(record2)}return records.sort((a,b)=>(b.lastFocusedAt??0)-(a.lastFocusedAt??0)||(b.updatedAt??0)-(a.updatedAt??0))}function providerIdentity(descriptor){return{id:descriptor.providerId,name:descriptor.name,builtin:descriptor.builtin===!0,version:descriptor.version,protocolVersion:descriptor.protocolVersion}}async function ensureDiscoverableCdpBrowser(discovery){return discovery.isPublished()?!0:await discovery.isAvailable()?(discovery.publish(),discovery.monitor(),!0):!1}function ordinaryBrowser(record2){return{browserId:record2.browserId,name:record2.browserName,type:"regular",status:record2.status==="pairing"?"pairing":"connected",extensionVersion:record2.extensionVersion,nativeHostVersion:record2.nativeHostVersion,transport:record2.transport,pairing:record2.pairing}}function externalProviderBrowser(record2){if(!record2.provider||!record2.persistence||!record2.operations)throw new Error(`Provider browser record is incomplete: ${record2.browserId}`);let status=record2.status??"connected";return{browserId:record2.browserId,name:record2.browserName,type:"managed",status,extensionVersion:record2.extensionVersion,nativeHostVersion:record2.nativeHostVersion,transport:record2.transport,provider:record2.provider,ownership:record2.ownership,persistence:record2.persistence,operations:record2.operations,pairing:record2.pairing,references:record2.references,details:record2.details}}function providerBrowserInfo(entry,route){let{browser,provider}=entry,status=route&&(route.status===void 0||route.status==="connected")?"connected":browser.status;return{browserId:browser.browserId,name:browser.name,type:"managed",status,transport:route?.transport??(browser.control.kind==="host"?browser.control.transport:provider.builtin?void 0:"provider"),extensionVersion:route?.extensionVersion,nativeHostVersion:route?.nativeHostVersion,provider,ownership:browser.ownership,persistence:browser.persistence,operations:browser.operations,pairing:browser.pairing,references:browser.references,details:browser.details}}function mergeBrowserInventory(routes,providerBrowsers){let providerById=new Map(providerBrowsers.map(entry=>[entry.browser.browserId,entry])),browsers=[];for(let route of routes){let providerEntry=providerById.get(route.browserId);providerEntry?(providerById.delete(route.browserId),browsers.push(providerBrowserInfo(providerEntry,route))):route.provider||route.transport==="provider"?browsers.push(externalProviderBrowser(route)):browsers.push(ordinaryBrowser(route))}let inactive=[...providerById.values()].sort((a,b)=>{let aCreated=String(a.browser.details?.createdAt??"");return String(b.browser.details?.createdAt??"").localeCompare(aCreated)}).map(entry=>providerBrowserInfo(entry));return browsers.push(...inactive),{count:browsers.length,connectedCount:browsers.filter(browser=>browser.status==="connected").length,browsers}}async function providerInventory(runtimes){return(await Promise.all(runtimes.map(async runtime=>{let provider=providerIdentity(runtime.definition.descriptor);return(await runtime.listBrowsers()).map(browser=>({provider,browser}))}))).flat()}async function listBrowserInventory(runtimes){return mergeBrowserInventory(listRegisteredBrowsers(),await providerInventory(runtimes))}import fs3 from"node:fs";import path3 from"node:path";import os2 from"node:os";import{randomUUID as randomUUID5}from"node:crypto";var NATIVE_HOST_VERSION="2.15.0";var MEASUREMENT_ID="G-W84LJDZ6PH",API_SECRET="X233siI5RrGYLhlD0kBKEQ",ENDPOINT=`https://www.google-analytics.com/mp/collect?measurement_id=${MEASUREMENT_ID}&api_secret=${API_SECRET}`,CLIENT_ID_PATTERN=/^\d+\.\d+$/,BUILD_CHANNEL=NATIVE_HOST_VERSION==="unknown"?"development":"production",CONFIG_DIR=path3.join(os2.homedir(),".mearl"),CONFIG_FILE=path3.join(CONFIG_DIR,"config.json");function readConfig(){try{return JSON.parse(fs3.readFileSync(CONFIG_FILE,"utf-8"))}catch{return{}}}function writeConfig(config2){try{fs3.mkdirSync(CONFIG_DIR,{recursive:!0}),fs3.writeFileSync(CONFIG_FILE,JSON.stringify(config2,null,2))}catch{}}var clientId=null;function createClientId(seed=randomUUID5()){let first=2166136261,second=2246822519;for(let index=0;index<seed.length;index++){let code=seed.charCodeAt(index);first=Math.imul(first^code,16777619)>>>0,second=Math.imul(second^code,3266489917)>>>0}return`${first||1}.${second||1}`}function getClientId(){if(clientId)return clientId;let config2=readConfig();return config2.clientId&&CLIENT_ID_PATTERN.test(config2.clientId)?(clientId=config2.clientId,clientId):(clientId=createClientId(config2.clientId),writeConfig({...config2,clientId}),clientId)}function setAnalyticsClientId(value){return typeof value!="string"||!CLIENT_ID_PATTERN.test(value)?!1:(clientId=value,!0)}function classifyAnalyticsError(error48){let message=error48 instanceof Error?error48.message:String(error48);return/timed?\s*out|timeout/i.test(message)?"timeout":/permission|not authorized|access denied|forbidden/i.test(message)?"permission_denied":/not found|no matching|does not exist/i.test(message)?"not_found":/not connected|disconnected|unavailable|connection (?:failed|closed)/i.test(message)?"unavailable":/invalid|required|must be|unsupported/i.test(message)?"invalid_request":"execution_error"}function trackAction(action,params){let payload={client_id:getClientId(),events:[{name:"agent_action",params:{action,...params,mearl_version:NATIVE_HOST_VERSION,runtime:"native_host",build_channel:BUILD_CHANNEL}}]};fetch(ENDPOINT,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(payload),keepalive:!0}).catch(()=>{})}import{open}from"node:fs/promises";import path5 from"node:path";var TRUNCATED_MARKER=`
770
+ }`,arguments:[{value:ancestorDepth}],returnByValue:!1});if(ancestorObjectId=ancestor.result?.objectId,!ancestorObjectId||ancestor.result?.subtype==="null")throw new Error("page_snapshot: cannot resolve an ancestor for rootRef");let ancestorBackendNodeId=(await sendCdpDeviceShellPageCommand(session,"DOM.describeNode",{objectId:ancestorObjectId})).node?.backendNodeId;if(ancestorBackendNodeId===void 0)throw new Error("page_snapshot: cannot resolve an ancestor for rootRef");return ancestorBackendNodeId}finally{ancestorObjectId&&await sendCdpDeviceShellPageCommand(session,"Runtime.releaseObject",{objectId:ancestorObjectId}).catch(()=>{}),await sendCdpDeviceShellPageCommand(session,"Runtime.releaseObject",{objectId}).catch(()=>{})}}async function getViewportBackendNodeIds(session){let[metrics,captured]=await Promise.all([sendCdpDeviceShellPageCommand(session,"Page.getLayoutMetrics",{}),sendCdpDeviceShellPageCommand(session,"DOMSnapshot.captureSnapshot",{computedStyles:[],includeDOMRects:!0,includePaintOrder:!1})]),viewport=resolveDOMSnapshotViewportBounds(metrics);if(!viewport)throw new Error("page_snapshot: viewport metrics are unavailable");let{left,top,width,height}=viewport,right=left+width,bottom=top+height,visible=new Set;for(let document2 of captured.documents??[]){let backendNodeIds=document2.nodes?.backendNodeId??[],nodeIndexes=document2.layout?.nodeIndex??[],bounds=document2.layout?.bounds??[];for(let index=0;index<nodeIndexes.length;index+=1){let box=bounds[index],backendNodeId=backendNodeIds[nodeIndexes[index]];if(!box||backendNodeId===void 0)continue;let[x,y,boxWidth,boxHeight]=box;boxWidth<=0||boxHeight<=0||x<right&&x+boxWidth>left&&y<bottom&&y+boxHeight>top&&visible.add(backendNodeId)}}return visible}async function cdpPageSnapshot(session,data){let mode=data?.mode??"full",rootSelector=data?.rootSelector,rootRef=data?.rootRef,ancestorDepth=data?.ancestorDepth??0,query=resolvePageSnapshotQuery(data?.query);if(!["full","interactive","viewport"].includes(mode))throw new Error("page_snapshot: mode must be one of full, interactive, viewport");if(rootSelector!==void 0&&(typeof rootSelector!="string"||!rootSelector.trim()))throw new Error("page_snapshot: rootSelector must be a non-empty CSS selector");if(rootRef!==void 0&&(typeof rootRef!="string"||!/^@e\d+$/.test(rootRef)))throw new Error('page_snapshot: rootRef must be a snapshot ref like "@e3"');if(rootSelector!==void 0&&rootRef!==void 0)throw new Error("page_snapshot: rootSelector and rootRef are mutually exclusive");if(!Number.isInteger(ancestorDepth)||ancestorDepth<0||ancestorDepth>20)throw new Error("page_snapshot: ancestorDepth must be an integer between 0 and 20");if(ancestorDepth>0&&rootRef===void 0)throw new Error("page_snapshot: ancestorDepth requires rootRef");let rootBackendNodeId;if(rootSelector)rootBackendNodeId=await resolveRootBackendNodeId(session,rootSelector);else if(rootRef){let entry=resolvePageRef(session,rootRef);if(!entry)throw new Error(`Ref ${rootRef} not found. Run page_snapshot first to get fresh refs.`);rootBackendNodeId=await resolveAncestorBackendNodeId(session,entry.backendNodeId,ancestorDepth)}let snapshotRefs=beginPageSnapshotRefs(session),[result,visibleBackendNodeIds]=await Promise.all([sendCdpDeviceShellPageCommand(session,rootBackendNodeId===void 0?"Accessibility.getFullAXTree":"Accessibility.queryAXTree",rootBackendNodeId===void 0?{depth:data?.depth}:{backendNodeId:rootBackendNodeId}),mode==="viewport"||mode==="interactive"?getViewportBackendNodeIds(session):Promise.resolve(void 0)]),nodes=result.nodes??[];await reconcileAXCheckedStates(nodes,backendNodeId=>readDOMCheckedState2(session,backendNodeId));let nodeMap=new Map;for(let node of nodes)nodeMap.set(node.nodeId,node);let rootNode=nodes[0];if(!rootNode)return snapshotRefs.commit(new Set),{snapshot:"(empty page)",refs:{},elementCount:0,outputNodeCount:1,mode,...rootSelector?{rootSelector}:{},...rootRef?{rootRef,ancestorDepth}:{},...query?{query,matches:[],matchCount:0}:{}};let rawTree=buildSnapshotTree(nodeMap,rootNode.nodeId,snapshotRefs),viewportFilteredTree=mode==="interactive"?filterSnapshotTree(rawTree,"viewport",visibleBackendNodeIds):rawTree,effectiveMode=mode;mode==="interactive"&&!hasInteractiveSnapshotNode(viewportFilteredTree)&&(effectiveMode="viewport");let modeFilteredTree=mode==="interactive"?effectiveMode==="interactive"?filterSnapshotTree(viewportFilteredTree,"interactive"):viewportFilteredTree:filterSnapshotTree(rawTree,effectiveMode,visibleBackendNodeIds),queryResult=query?filterSnapshotTreeByQuery(modeFilteredTree,query):{tree:modeFilteredTree,matches:[]},limitedMatches=query?limitPageSnapshotQueryMatches(queryResult.matches):{matches:[],truncated:!1},tree=queryResult.tree,lines=[];tree&&formatSnapshotNode(tree,0,lines);let formatted=formatSnapshotWithLimits(lines.length>0?lines:[query?"(no matches)":"(empty page)"],{maxChars:data?.maxChars,maxNodes:data?.maxNodes}),refs={},outputRefKeys=new Set(Array.from(formatted.snapshot.matchAll(/(?:^|\n)\s*(@e\d+)\s/g),match=>match[1]));for(let match of limitedMatches.matches)match.ref&&outputRefKeys.add(match.ref);snapshotRefs.commit(outputRefKeys);let registry2=getPageRefRegistry(session);for(let ref of outputRefKeys){let entry=registry2.resolve(ref);entry&&(refs[ref.slice(1)]={backendNodeId:entry.backendNodeId})}return{snapshot:formatted.snapshot,refs,elementCount:countSnapshotNodes(tree),outputNodeCount:formatted.outputNodeCount,mode,...rootSelector?{rootSelector}:{},...rootRef?{rootRef,ancestorDepth}:{},...query?{query,matches:limitedMatches.matches,matchCount:queryResult.matches.length,...limitedMatches.truncated?{matchesTruncated:!0}:{}}:{},...effectiveMode!==mode?{fallbackMode:"viewport"}:{},...formatted.truncated?{truncated:!0}:{}}}async function cdpPageFrames(session,_data){let result=await session.client.sendCommand("Page.getFrameTree",{});function flattenFrameTree(tree){if(!tree)return[];let{frame,childFrames=[]}=tree;return[{frameId:frame.id,parentFrameId:frame.parentId??null,url:frame.url,name:frame.name??""},...childFrames.flatMap(flattenFrameTree)]}let frames=flattenFrameTree(result.frameTree);return{frames,count:frames.length}}registerActions([{name:"page_snapshot",session:"page",handler:cdpPageSnapshot},{name:"page_frames",session:"page",handler:cdpPageFrames}]);var MEARL_SERVICE_COOKIE_DOMAINS=["tdbank.alibaba-inc.com","ats2.alibaba-inc.com","g.alibaba-inc.com","login.alibaba-inc.com","token-hub.alibaba-inc.com","alibaba-inc.com"],MEARL_SERVICE_COOKIE_HOSTS=new Set(MEARL_SERVICE_COOKIE_DOMAINS);function normalizeCookieDomain2(input){let value=input.trim();if(!value)throw new Error("Cookie domain must be a non-empty string");let hostname3;try{hostname3=new URL(value.includes("://")?value:`https://${value}`).hostname}catch{throw new Error(`Invalid cookie domain: ${input}`)}if(hostname3=hostname3.toLowerCase().replace(/^\.+/,"").replace(/\.+$/,""),!hostname3)throw new Error(`Invalid cookie domain: ${input}`);return hostname3}function normalizeCookieDomains(inputs){if(!Array.isArray(inputs))throw new Error("copyCookieDomains must be an array of domains");return[...new Set(inputs.map(value=>normalizeCookieDomain2(String(value))))]}function isMearlServiceCookie(cookie){let domain2=normalizeCookieDomain2(cookie.domain);return MEARL_SERVICE_COOKIE_HOSTS.has(domain2)?!0:domain2.endsWith(".tdbank.alibaba-inc.com")||domain2.endsWith(".ats2.alibaba-inc.com")}function normalizeCookieCopyScope(input){let presets=input.presets??[];if(!Array.isArray(presets)||presets.some(preset=>preset!=="mearl-services"))throw new Error("copyCookieDomains.presets contains an unsupported preset");return{includeMearlServices:presets.includes("mearl-services"),domains:normalizeCookieDomains(input.domains??[])}}function resolveCookieCopyPlan(input){let includeMearlServices=!1,explicitDomains=[];if(input==="mearl-services")includeMearlServices=!0;else if(Array.isArray(input))explicitDomains=normalizeCookieDomains(input);else if(input!=null&&typeof input=="object"){let scope=normalizeCookieCopyScope(input);includeMearlServices=scope.includeMearlServices,explicitDomains=scope.domains}else if(input!==void 0)throw new Error('copyCookieDomains must be an array of domains, "mearl-services", or a scope object');return includeMearlServices?{domains:[...new Set([...MEARL_SERVICE_COOKIE_DOMAINS,...explicitDomains])],select:cookies=>cookies.filter(cookie=>isMearlServiceCookie(cookie)||explicitDomains.some(domain2=>cookieMatchesDomain(cookie.domain,domain2)))}:{domains:explicitDomains,select:cookies=>cookies}}function cookieMatchesDomain(cookieDomain,requestedDomain){let cookieHost=cookieDomain.toLowerCase().replace(/^\.+/,"");return cookieHost===requestedDomain||cookieHost.endsWith(`.${requestedDomain}`)||requestedDomain.endsWith(`.${cookieHost}`)}function toTransferableCookie(cookie){let result={name:String(cookie.name),value:String(cookie.value),domain:String(cookie.domain),path:String(cookie.path||"/"),secure:!!cookie.secure,httpOnly:!!cookie.httpOnly};return["Strict","Lax","None"].includes(cookie.sameSite)&&(result.sameSite=cookie.sameSite),typeof cookie.expires=="number"&&cookie.expires>0&&(result.expires=cookie.expires),["Low","Medium","High"].includes(cookie.priority)&&(result.priority=cookie.priority),typeof cookie.sameParty=="boolean"&&(result.sameParty=cookie.sameParty),["Unset","NonSecure","Secure"].includes(cookie.sourceScheme)&&(result.sourceScheme=cookie.sourceScheme),typeof cookie.sourcePort=="number"&&(result.sourcePort=cookie.sourcePort),cookie.partitionKey?.topLevelSite&&(result.partitionKey={topLevelSite:String(cookie.partitionKey.topLevelSite),...typeof cookie.partitionKey.hasCrossSiteAncestor=="boolean"?{hasCrossSiteAncestor:cookie.partitionKey.hasCrossSiteAncestor}:{}}),result}async function cdpExportCookies(session,domains){let requestedDomains=normalizeCookieDomains(domains);return((await(await session.getBrowserClient()).sendCommand("Storage.getCookies",{})).cookies??[]).filter(cookie=>requestedDomains.some(domain2=>cookieMatchesDomain(String(cookie.domain),domain2))).map(toTransferableCookie)}async function cdpImportCookies(session,cookies){if(cookies.length===0)return 0;let browser=await session.getBrowserClient();return cdpImportCookiesWithClient(browser,cookies)}async function cdpImportCookiesWithClient(browser,cookies){return cookies.length===0?0:(await browser.sendCommand("Storage.setCookies",{cookies}),cookies.length)}var BROWSERS_SUBDIR="browsers",STALE_RECORD_TTL_MS=5*6e4,FOCUS_WRITE_THROTTLE_MS=1e3,identity=null,logFn2=()=>{};function initBrowserRegistry(deps){logFn2=deps.log}function recordFileFor2(browserId){return keyedConfigFile(BROWSERS_SUBDIR,browserId)}function ownsRecord(browserId){let existing=readRecord(recordFileFor2(browserId));return!existing||existing.pid===process.pid||!isAlive(existing.pid)}function persist(patch){if(!identity)return;let file2=recordFileFor2(identity.browserId);if(!ownsRecord(identity.browserId))return;let previous=readRecord(file2),record2={pid:process.pid,browserId:identity.browserId,socketPath:identity.socketPath,browserName:identity.browserName,nativeHostVersion:identity.nativeHostVersion,transport:identity.transport,startedAt:identity.startedAt,lastFocusedAt:previous?.lastFocusedAt,extensionVersion:previous?.extensionVersion,...patch,updatedAt:Date.now()};try{writeRecord(file2,record2)}catch(error48){logFn2("browser-registry: failed to write record:",String(error48))}}function registerBrowser(info){let startedAt=identity?.startedAt??new Date().toISOString();identity={browserId:info.browserId,socketPath:info.socketPath,browserName:info.browserName,nativeHostVersion:info.nativeHostVersion,transport:info.transport,startedAt};let previous=readRecord(recordFileFor2(info.browserId));persist({lastFocusedAt:previous?.lastFocusedAt??info.lastFocusedAt??Date.now(),extensionVersion:info.extensionVersion}),logFn2(`browser-registry: registered ${info.browserName} (${info.browserId})`)}var lastFocusWriteAt=0,focusFlushTimer=null;function writeFocusNow(){lastFocusWriteAt=Date.now(),persist({lastFocusedAt:lastFocusWriteAt})}function touchFocus(){if(!identity)return;let elapsed=Date.now()-lastFocusWriteAt;if(elapsed>=FOCUS_WRITE_THROTTLE_MS){writeFocusNow();return}focusFlushTimer||(focusFlushTimer=setTimeout(()=>{focusFlushTimer=null,writeFocusNow()},FOCUS_WRITE_THROTTLE_MS-elapsed),focusFlushTimer.unref())}function unregisterBrowser(){if(focusFlushTimer&&(clearTimeout(focusFlushTimer),focusFlushTimer=null),!identity)return;let file2=recordFileFor2(identity.browserId),existing=readRecord(file2);existing&&existing.pid!==process.pid||removeRecord(file2)}function pruneDeadBrowsers(){let now=Date.now();for(let file2 of listRecordFiles(keyedDir(BROWSERS_SUBDIR))){let rec=readRecord(file2);if(!rec){removeRecord(file2);continue}isAlive(rec.pid)||now-(rec.updatedAt??0)>STALE_RECORD_TTL_MS&&removeRecord(file2)}}function listRegisteredBrowsers(){let records=[];for(let file2 of listRecordFiles(keyedDir(BROWSERS_SUBDIR))){let record2=readRecord(file2);record2&&isAlive(record2.pid)&&records.push(record2)}return records.sort((a,b)=>(b.lastFocusedAt??0)-(a.lastFocusedAt??0)||(b.updatedAt??0)-(a.updatedAt??0))}function providerIdentity(descriptor){return{id:descriptor.providerId,name:descriptor.name,builtin:descriptor.builtin===!0,version:descriptor.version,protocolVersion:descriptor.protocolVersion}}async function ensureDiscoverableCdpBrowser(discovery){return discovery.isPublished()?!0:await discovery.isAvailable()?(discovery.publish(),discovery.monitor(),!0):!1}function ordinaryBrowser(record2){return{browserId:record2.browserId,name:record2.browserName,type:"regular",status:record2.status==="pairing"?"pairing":"connected",extensionVersion:record2.extensionVersion,nativeHostVersion:record2.nativeHostVersion,transport:record2.transport,pairing:record2.pairing}}function externalProviderBrowser(record2){if(!record2.provider||!record2.persistence||!record2.operations)throw new Error(`Provider browser record is incomplete: ${record2.browserId}`);let status=record2.status??"connected";return{browserId:record2.browserId,name:record2.browserName,type:"managed",status,extensionVersion:record2.extensionVersion,nativeHostVersion:record2.nativeHostVersion,transport:record2.transport,provider:record2.provider,ownership:record2.ownership,persistence:record2.persistence,operations:record2.operations,pairing:record2.pairing,references:record2.references,details:record2.details}}function providerBrowserInfo(entry,route){let{browser,provider}=entry,status=route&&(route.status===void 0||route.status==="connected")?"connected":browser.status;return{browserId:browser.browserId,name:browser.name,type:"managed",status,transport:route?.transport??(browser.control.kind==="host"?browser.control.transport:provider.builtin?void 0:"provider"),extensionVersion:route?.extensionVersion,nativeHostVersion:route?.nativeHostVersion,provider,ownership:browser.ownership,persistence:browser.persistence,operations:browser.operations,pairing:browser.pairing,references:browser.references,details:browser.details}}function mergeBrowserInventory(routes,providerBrowsers){let providerById=new Map(providerBrowsers.map(entry=>[entry.browser.browserId,entry])),browsers=[];for(let route of routes){let providerEntry=providerById.get(route.browserId);providerEntry?(providerById.delete(route.browserId),browsers.push(providerBrowserInfo(providerEntry,route))):route.provider||route.transport==="provider"?browsers.push(externalProviderBrowser(route)):browsers.push(ordinaryBrowser(route))}let inactive=[...providerById.values()].sort((a,b)=>{let aCreated=String(a.browser.details?.createdAt??"");return String(b.browser.details?.createdAt??"").localeCompare(aCreated)}).map(entry=>providerBrowserInfo(entry));return browsers.push(...inactive),{count:browsers.length,connectedCount:browsers.filter(browser=>browser.status==="connected").length,browsers}}async function providerInventory(runtimes){return(await Promise.all(runtimes.map(async runtime=>{let provider=providerIdentity(runtime.definition.descriptor);return(await runtime.listBrowsers()).map(browser=>({provider,browser}))}))).flat()}async function listBrowserInventory(runtimes){return mergeBrowserInventory(listRegisteredBrowsers(),await providerInventory(runtimes))}import{randomUUID as randomUUID5}from"node:crypto";var NATIVE_HOST_VERSION="2.15.2";import fs3 from"node:fs";import os2 from"node:os";import path3 from"node:path";var MEARL_CONFIG_FILE=path3.join(os2.homedir(),".mearl","config.json");function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function readMearlConfig(configFile=MEARL_CONFIG_FILE){try{let parsed=JSON.parse(fs3.readFileSync(configFile,"utf8"));return isRecord(parsed)?parsed:{}}catch{return{}}}function writeMearlConfig(config2,configFile=MEARL_CONFIG_FILE){let configDirectory=path3.dirname(configFile),temporaryFile=`${configFile}.${process.pid}.tmp`;fs3.mkdirSync(configDirectory,{recursive:!0});try{fs3.writeFileSync(temporaryFile,`${JSON.stringify(config2,null,2)}
771
+ `,{mode:384}),fs3.renameSync(temporaryFile,configFile)}catch(error48){try{fs3.unlinkSync(temporaryFile)}catch{}throw error48}}var MEASUREMENT_ID="G-W84LJDZ6PH",API_SECRET="X233siI5RrGYLhlD0kBKEQ",ENDPOINT=`https://www.google-analytics.com/mp/collect?measurement_id=${MEASUREMENT_ID}&api_secret=${API_SECRET}`,CLIENT_ID_PATTERN=/^\d+\.\d+$/,BUILD_CHANNEL=NATIVE_HOST_VERSION==="unknown"?"development":"production";function writeConfig(config2){try{writeMearlConfig(config2)}catch{}}var clientId=null;function createClientId(seed=randomUUID5()){let first=2166136261,second=2246822519;for(let index=0;index<seed.length;index++){let code=seed.charCodeAt(index);first=Math.imul(first^code,16777619)>>>0,second=Math.imul(second^code,3266489917)>>>0}return`${first||1}.${second||1}`}function getClientId(){if(clientId)return clientId;let config2=readMearlConfig();return config2.clientId&&CLIENT_ID_PATTERN.test(config2.clientId)?(clientId=config2.clientId,clientId):(clientId=createClientId(config2.clientId),writeConfig({...config2,clientId}),clientId)}function setAnalyticsClientId(value){return typeof value!="string"||!CLIENT_ID_PATTERN.test(value)?!1:(clientId=value,!0)}function classifyAnalyticsError(error48){let message=error48 instanceof Error?error48.message:String(error48);return/timed?\s*out|timeout/i.test(message)?"timeout":/permission|not authorized|access denied|forbidden/i.test(message)?"permission_denied":/not found|no matching|does not exist/i.test(message)?"not_found":/not connected|disconnected|unavailable|connection (?:failed|closed)/i.test(message)?"unavailable":/invalid|required|must be|unsupported/i.test(message)?"invalid_request":"execution_error"}function trackAction(action,params){let payload={client_id:getClientId(),events:[{name:"agent_action",params:{action,...params,mearl_version:NATIVE_HOST_VERSION,runtime:"native_host",build_channel:BUILD_CHANNEL}}]};fetch(ENDPOINT,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(payload),keepalive:!0}).catch(()=>{})}import{open}from"node:fs/promises";import path5 from"node:path";var TRUNCATED_MARKER=`
771
772
  … [middle truncated for Native Messaging] …
772
773
  `;function truncateUtf82(value,maxBytes){if(Buffer.byteLength(value,"utf8")<=maxBytes)return value;let markerBytes=Buffer.byteLength(TRUNCATED_MARKER,"utf8");if(maxBytes<=markerBytes)return"";let source=Buffer.from(value,"utf8"),contentBytes=maxBytes-markerBytes,headBytes=Math.ceil(contentBytes/2),tailBytes=Math.floor(contentBytes/2);do{let truncated=`${source.subarray(0,headBytes).toString("utf8")}${TRUNCATED_MARKER}${source.subarray(source.length-tailBytes).toString("utf8")}`;if(Buffer.byteLength(truncated,"utf8")<=maxBytes)return truncated;headBytes>=tailBytes?headBytes-=1:tailBytes-=1}while(headBytes>0&&tailBytes>0);return""}function sanitizeValue(value,budget,depth){if(value===null||typeof value=="boolean"||typeof value=="number")return value;if(typeof value=="string"){let available=Math.max(0,budget.remaining),next2=truncateUtf82(value,available),bytes=Buffer.byteLength(next2,"utf8");return budget.remaining=Math.max(0,budget.remaining-bytes),next2!==value&&(budget.truncated=!0),next2}if(typeof value>"u")return null;if(typeof value!="object")return String(value);if(depth>=12||budget.remaining<=0)return budget.truncated=!0,{__transportTruncated:!0};if(budget.seen.has(value))return budget.truncated=!0,"[Circular]";if(budget.seen.add(value),Array.isArray(value)){let next2=value.slice(0,160).map(entry=>sanitizeValue(entry,budget,depth+1));return value.length>160&&(budget.truncated=!0,next2.push({__transportTruncated:!0,originalLength:value.length})),next2}let entries=Object.entries(value),next={};for(let[index,[key,entry]]of entries.entries()){if(index>=160||budget.remaining<=0){budget.truncated=!0;break}budget.remaining=Math.max(0,budget.remaining-Buffer.byteLength(key,"utf8")),next[key]=sanitizeValue(entry,budget,depth+1)}return budget.truncated&&(next.__transportTruncated=!0),next}function sanitizeAgentChatEvent(event){let budget={remaining:409600,truncated:!1,seen:new WeakSet},next={...event,params:sanitizeValue(event.params,budget,0)},bytes=Buffer.byteLength(JSON.stringify(next),"utf8");return bytes<=524288?next:{...event,params:{__transportTruncated:!0,originalBytes:bytes,message:"Agent event exceeded the Native Messaging transport limit."}}}import fs4 from"node:fs";import path4 from"node:path";import{execFile}from"node:child_process";function selectedPath(stdout){return stdout.replace(/[\r\n]+$/,"")||null}var runDirectoryPickerCommand=(command,args)=>new Promise((resolve2,reject)=>{execFile(command,args,{encoding:"utf8",windowsHide:!0},(error48,stdout)=>{if(!error48){resolve2(selectedPath(stdout));return}if(error48.code===1){resolve2(null);return}reject(error48)})});function isMissingCommand(error48){return error48 instanceof Error&&error48.code==="ENOENT"}async function pickWorkspaceDirectory(platform=process.platform,run=runDirectoryPickerCommand){let directory;if(platform==="darwin")directory=await run("osascript",["-e",'POSIX path of (choose folder with prompt "Select a workspace for Agent Chat")']);else if(platform==="win32"){let script=["Add-Type -AssemblyName System.Windows.Forms;","$dialog = New-Object System.Windows.Forms.FolderBrowserDialog;","$dialog.Description = 'Select a workspace for Agent Chat';","if ($dialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {","[Console]::OutputEncoding = [System.Text.Encoding]::UTF8;","Write-Output $dialog.SelectedPath;","}"].join(" ");directory=await run("powershell.exe",["-NoProfile","-STA","-Command",script])}else if(platform==="linux")try{directory=await run("zenity",["--file-selection","--directory","--title=Select a workspace for Agent Chat"])}catch(error48){if(!isMissingCommand(error48))throw error48;try{directory=await run("kdialog",["--getexistingdirectory",".","--title","Select a workspace for Agent Chat"])}catch(fallbackError){throw isMissingCommand(fallbackError)?new Error("Install zenity or kdialog to select an Agent Chat workspace",{cause:fallbackError}):fallbackError}}else throw new Error(`Directory selection is not supported on ${platform}`);return directory?resolveWorkspaceDirectory(directory):null}function resolveWorkspaceDirectory(directory){if(typeof directory!="string"||!directory)throw new Error("Workspace directory is required");if(!path4.isAbsolute(directory))throw new Error("Workspace directory must be an absolute path");let resolved;try{resolved=fs4.realpathSync.native(directory)}catch(error48){throw new Error(`Workspace directory does not exist: ${directory}`,{cause:error48})}if(!fs4.statSync(resolved).isDirectory())throw new Error(`Workspace path is not a directory: ${directory}`);return resolved}var MAX_REPLAY_EVENTS=1e3,MAX_REPLAY_BYTES=2048*1024,MAX_REPLAY_PAGE_BYTES=524288,MAX_SKILL_FILE_BYTES=1024*1024,SUPPORTED_IMAGE_MIME_TYPES=new Set(AGENT_CHAT_SUPPORTED_IMAGE_MIME_TYPES),REPLAY_SNAPSHOT_METHODS=new Set(["thread/settings/updated"]);function createAgentDeveloperInstructions({cwd,tabId,initialPageUrl,initialPageTitle}){return[...cwd?[createAgentDirectoryContextInstructions(cwd)]:[],...tabId!==void 0?[createBrowserAgentDeveloperInstructions(tabId,{...initialPageUrl?{url:initialPageUrl}:{},...initialPageTitle?{title:initialPageTitle}:{}})]:[]].join(`
773
774
 
@@ -812,7 +813,7 @@ ${candidates}`)}let hit=hits[0],dispatchTarget;if(effectiveClickMode==="dom"||po
812
813
 
813
814
  `)}doc.write("payload.value = newResult;"),doc.write("return payload;");let fn=doc.compile();return(payload,ctx)=>fn(shape,payload,ctx)},fastpass,isObject2=isObject,jit=!globalConfig.jitless,fastEnabled=jit&&allowsEval.value,catchall=def.catchall,value;inst._zod.parse=(payload,ctx)=>{value??(value=_normalized.value);let input=payload.value;return isObject2(input)?jit&&fastEnabled&&ctx?.async===!1&&ctx.jitless!==!0?(fastpass||(fastpass=generateFastpass(def.shape)),payload=fastpass(payload,ctx),catchall?handleCatchall([],input,payload,ctx,value,inst):payload):superParse(payload,ctx):(payload.issues.push({expected:"object",code:"invalid_type",input,inst}),payload)}});function handleUnionResults(results,final,inst,ctx){for(let result of results)if(result.issues.length===0)return final.value=result.value,final;let nonaborted=results.filter(r=>!aborted(r));return nonaborted.length===1?(final.value=nonaborted[0].value,nonaborted[0]):(final.issues.push({code:"invalid_union",input:final.value,inst,errors:results.map(result=>result.issues.map(iss=>finalizeIssue(iss,ctx,config())))}),final)}var $ZodUnion=$constructor("$ZodUnion",(inst,def)=>{$ZodType.init(inst,def),defineLazy(inst._zod,"optin",()=>def.options.some(o=>o._zod.optin==="optional")?"optional":void 0),defineLazy(inst._zod,"optout",()=>def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),defineLazy(inst._zod,"values",()=>{if(def.options.every(o=>o._zod.values))return new Set(def.options.flatMap(option=>Array.from(option._zod.values)))}),defineLazy(inst._zod,"pattern",()=>{if(def.options.every(o=>o._zod.pattern)){let patterns=def.options.map(o=>o._zod.pattern);return new RegExp(`^(${patterns.map(p=>cleanRegex(p.source)).join("|")})$`)}});let single=def.options.length===1,first=def.options[0]._zod.run;inst._zod.parse=(payload,ctx)=>{if(single)return first(payload,ctx);let async=!1,results=[];for(let option of def.options){let result=option._zod.run({value:payload.value,issues:[]},ctx);if(result instanceof Promise)results.push(result),async=!0;else{if(result.issues.length===0)return result;results.push(result)}}return async?Promise.all(results).then(results2=>handleUnionResults(results2,payload,inst,ctx)):handleUnionResults(results,payload,inst,ctx)}});function handleExclusiveUnionResults(results,final,inst,ctx){let successes=results.filter(r=>r.issues.length===0);return successes.length===1?(final.value=successes[0].value,final):(successes.length===0?final.issues.push({code:"invalid_union",input:final.value,inst,errors:results.map(result=>result.issues.map(iss=>finalizeIssue(iss,ctx,config())))}):final.issues.push({code:"invalid_union",input:final.value,inst,errors:[],inclusive:!1}),final)}var $ZodXor=$constructor("$ZodXor",(inst,def)=>{$ZodUnion.init(inst,def),def.inclusive=!1;let single=def.options.length===1,first=def.options[0]._zod.run;inst._zod.parse=(payload,ctx)=>{if(single)return first(payload,ctx);let async=!1,results=[];for(let option of def.options){let result=option._zod.run({value:payload.value,issues:[]},ctx);result instanceof Promise?(results.push(result),async=!0):results.push(result)}return async?Promise.all(results).then(results2=>handleExclusiveUnionResults(results2,payload,inst,ctx)):handleExclusiveUnionResults(results,payload,inst,ctx)}}),$ZodDiscriminatedUnion=$constructor("$ZodDiscriminatedUnion",(inst,def)=>{def.inclusive=!1,$ZodUnion.init(inst,def);let _super=inst._zod.parse;defineLazy(inst._zod,"propValues",()=>{let propValues={};for(let option of def.options){let pv=option._zod.propValues;if(!pv||Object.keys(pv).length===0)throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(option)}"`);for(let[k,v]of Object.entries(pv)){propValues[k]||(propValues[k]=new Set);for(let val of v)propValues[k].add(val)}}return propValues});let disc=cached(()=>{let opts=def.options,map2=new Map;for(let o of opts){let values=o._zod.propValues?.[def.discriminator];if(!values||values.size===0)throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(o)}"`);for(let v of values){if(map2.has(v))throw new Error(`Duplicate discriminator value "${String(v)}"`);map2.set(v,o)}}return map2});inst._zod.parse=(payload,ctx)=>{let input=payload.value;if(!isObject(input))return payload.issues.push({code:"invalid_type",expected:"object",input,inst}),payload;let opt=disc.value.get(input?.[def.discriminator]);return opt?opt._zod.run(payload,ctx):def.unionFallback?_super(payload,ctx):(payload.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:def.discriminator,input,path:[def.discriminator],inst}),payload)}}),$ZodIntersection=$constructor("$ZodIntersection",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,ctx)=>{let input=payload.value,left=def.left._zod.run({value:input,issues:[]},ctx),right=def.right._zod.run({value:input,issues:[]},ctx);return left instanceof Promise||right instanceof Promise?Promise.all([left,right]).then(([left2,right2])=>handleIntersectionResults(payload,left2,right2)):handleIntersectionResults(payload,left,right)}});function mergeValues(a,b){if(a===b)return{valid:!0,data:a};if(a instanceof Date&&b instanceof Date&&+a==+b)return{valid:!0,data:a};if(isPlainObject(a)&&isPlainObject(b)){let bKeys=Object.keys(b),sharedKeys=Object.keys(a).filter(key=>bKeys.indexOf(key)!==-1),newObj={...a,...b};for(let key of sharedKeys){let sharedValue=mergeValues(a[key],b[key]);if(!sharedValue.valid)return{valid:!1,mergeErrorPath:[key,...sharedValue.mergeErrorPath]};newObj[key]=sharedValue.data}return{valid:!0,data:newObj}}if(Array.isArray(a)&&Array.isArray(b)){if(a.length!==b.length)return{valid:!1,mergeErrorPath:[]};let newArray=[];for(let index=0;index<a.length;index++){let itemA=a[index],itemB=b[index],sharedValue=mergeValues(itemA,itemB);if(!sharedValue.valid)return{valid:!1,mergeErrorPath:[index,...sharedValue.mergeErrorPath]};newArray.push(sharedValue.data)}return{valid:!0,data:newArray}}return{valid:!1,mergeErrorPath:[]}}function handleIntersectionResults(result,left,right){let unrecKeys=new Map,unrecIssue;for(let iss of left.issues)if(iss.code==="unrecognized_keys"){unrecIssue??(unrecIssue=iss);for(let k of iss.keys)unrecKeys.has(k)||unrecKeys.set(k,{}),unrecKeys.get(k).l=!0}else result.issues.push(iss);for(let iss of right.issues)if(iss.code==="unrecognized_keys")for(let k of iss.keys)unrecKeys.has(k)||unrecKeys.set(k,{}),unrecKeys.get(k).r=!0;else result.issues.push(iss);let bothKeys=[...unrecKeys].filter(([,f])=>f.l&&f.r).map(([k])=>k);if(bothKeys.length&&unrecIssue&&result.issues.push({...unrecIssue,keys:bothKeys}),aborted(result))return result;let merged=mergeValues(left.value,right.value);if(!merged.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(merged.mergeErrorPath)}`);return result.value=merged.data,result}var $ZodTuple=$constructor("$ZodTuple",(inst,def)=>{$ZodType.init(inst,def);let items=def.items;inst._zod.parse=(payload,ctx)=>{let input=payload.value;if(!Array.isArray(input))return payload.issues.push({input,inst,expected:"tuple",code:"invalid_type"}),payload;payload.value=[];let proms=[],reversedIndex=[...items].reverse().findIndex(item=>item._zod.optin!=="optional"),optStart=reversedIndex===-1?0:items.length-reversedIndex;if(!def.rest){let tooBig=input.length>items.length,tooSmall=input.length<optStart-1;if(tooBig||tooSmall)return payload.issues.push({...tooBig?{code:"too_big",maximum:items.length,inclusive:!0}:{code:"too_small",minimum:items.length},input,inst,origin:"array"}),payload}let i=-1;for(let item of items){if(i++,i>=input.length&&i>=optStart)continue;let result=item._zod.run({value:input[i],issues:[]},ctx);result instanceof Promise?proms.push(result.then(result2=>handleTupleResult(result2,payload,i))):handleTupleResult(result,payload,i)}if(def.rest){let rest=input.slice(items.length);for(let el of rest){i++;let result=def.rest._zod.run({value:el,issues:[]},ctx);result instanceof Promise?proms.push(result.then(result2=>handleTupleResult(result2,payload,i))):handleTupleResult(result,payload,i)}}return proms.length?Promise.all(proms).then(()=>payload):payload}});function handleTupleResult(result,final,index){result.issues.length&&final.issues.push(...prefixIssues(index,result.issues)),final.value[index]=result.value}var $ZodRecord=$constructor("$ZodRecord",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,ctx)=>{let input=payload.value;if(!isPlainObject(input))return payload.issues.push({expected:"record",code:"invalid_type",input,inst}),payload;let proms=[],values=def.keyType._zod.values;if(values){payload.value={};let recordKeys=new Set;for(let key of values)if(typeof key=="string"||typeof key=="number"||typeof key=="symbol"){recordKeys.add(typeof key=="number"?key.toString():key);let result=def.valueType._zod.run({value:input[key],issues:[]},ctx);result instanceof Promise?proms.push(result.then(result2=>{result2.issues.length&&payload.issues.push(...prefixIssues(key,result2.issues)),payload.value[key]=result2.value})):(result.issues.length&&payload.issues.push(...prefixIssues(key,result.issues)),payload.value[key]=result.value)}let unrecognized;for(let key in input)recordKeys.has(key)||(unrecognized=unrecognized??[],unrecognized.push(key));unrecognized&&unrecognized.length>0&&payload.issues.push({code:"unrecognized_keys",input,inst,keys:unrecognized})}else{payload.value={};for(let key of Reflect.ownKeys(input)){if(key==="__proto__")continue;let keyResult=def.keyType._zod.run({value:key,issues:[]},ctx);if(keyResult instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof key=="string"&&number.test(key)&&keyResult.issues.length){let retryResult=def.keyType._zod.run({value:Number(key),issues:[]},ctx);if(retryResult instanceof Promise)throw new Error("Async schemas not supported in object keys currently");retryResult.issues.length===0&&(keyResult=retryResult)}if(keyResult.issues.length){def.mode==="loose"?payload.value[key]=input[key]:payload.issues.push({code:"invalid_key",origin:"record",issues:keyResult.issues.map(iss=>finalizeIssue(iss,ctx,config())),input:key,path:[key],inst});continue}let result=def.valueType._zod.run({value:input[key],issues:[]},ctx);result instanceof Promise?proms.push(result.then(result2=>{result2.issues.length&&payload.issues.push(...prefixIssues(key,result2.issues)),payload.value[keyResult.value]=result2.value})):(result.issues.length&&payload.issues.push(...prefixIssues(key,result.issues)),payload.value[keyResult.value]=result.value)}}return proms.length?Promise.all(proms).then(()=>payload):payload}}),$ZodMap=$constructor("$ZodMap",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,ctx)=>{let input=payload.value;if(!(input instanceof Map))return payload.issues.push({expected:"map",code:"invalid_type",input,inst}),payload;let proms=[];payload.value=new Map;for(let[key,value]of input){let keyResult=def.keyType._zod.run({value:key,issues:[]},ctx),valueResult=def.valueType._zod.run({value,issues:[]},ctx);keyResult instanceof Promise||valueResult instanceof Promise?proms.push(Promise.all([keyResult,valueResult]).then(([keyResult2,valueResult2])=>{handleMapResult(keyResult2,valueResult2,payload,key,input,inst,ctx)})):handleMapResult(keyResult,valueResult,payload,key,input,inst,ctx)}return proms.length?Promise.all(proms).then(()=>payload):payload}});function handleMapResult(keyResult,valueResult,final,key,input,inst,ctx){keyResult.issues.length&&(propertyKeyTypes.has(typeof key)?final.issues.push(...prefixIssues(key,keyResult.issues)):final.issues.push({code:"invalid_key",origin:"map",input,inst,issues:keyResult.issues.map(iss=>finalizeIssue(iss,ctx,config()))})),valueResult.issues.length&&(propertyKeyTypes.has(typeof key)?final.issues.push(...prefixIssues(key,valueResult.issues)):final.issues.push({origin:"map",code:"invalid_element",input,inst,key,issues:valueResult.issues.map(iss=>finalizeIssue(iss,ctx,config()))})),final.value.set(keyResult.value,valueResult.value)}var $ZodSet=$constructor("$ZodSet",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,ctx)=>{let input=payload.value;if(!(input instanceof Set))return payload.issues.push({input,inst,expected:"set",code:"invalid_type"}),payload;let proms=[];payload.value=new Set;for(let item of input){let result=def.valueType._zod.run({value:item,issues:[]},ctx);result instanceof Promise?proms.push(result.then(result2=>handleSetResult(result2,payload))):handleSetResult(result,payload)}return proms.length?Promise.all(proms).then(()=>payload):payload}});function handleSetResult(result,final){result.issues.length&&final.issues.push(...result.issues),final.value.add(result.value)}var $ZodEnum=$constructor("$ZodEnum",(inst,def)=>{$ZodType.init(inst,def);let values=getEnumValues(def.entries),valuesSet=new Set(values);inst._zod.values=valuesSet,inst._zod.pattern=new RegExp(`^(${values.filter(k=>propertyKeyTypes.has(typeof k)).map(o=>typeof o=="string"?escapeRegex(o):o.toString()).join("|")})$`),inst._zod.parse=(payload,_ctx)=>{let input=payload.value;return valuesSet.has(input)||payload.issues.push({code:"invalid_value",values,input,inst}),payload}}),$ZodLiteral=$constructor("$ZodLiteral",(inst,def)=>{if($ZodType.init(inst,def),def.values.length===0)throw new Error("Cannot create literal schema with no valid values");let values=new Set(def.values);inst._zod.values=values,inst._zod.pattern=new RegExp(`^(${def.values.map(o=>typeof o=="string"?escapeRegex(o):o?escapeRegex(o.toString()):String(o)).join("|")})$`),inst._zod.parse=(payload,_ctx)=>{let input=payload.value;return values.has(input)||payload.issues.push({code:"invalid_value",values:def.values,input,inst}),payload}}),$ZodFile=$constructor("$ZodFile",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,_ctx)=>{let input=payload.value;return input instanceof File||payload.issues.push({expected:"file",code:"invalid_type",input,inst}),payload}}),$ZodTransform=$constructor("$ZodTransform",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward")throw new $ZodEncodeError(inst.constructor.name);let _out=def.transform(payload.value,payload);if(ctx.async)return(_out instanceof Promise?_out:Promise.resolve(_out)).then(output2=>(payload.value=output2,payload));if(_out instanceof Promise)throw new $ZodAsyncError;return payload.value=_out,payload}});function handleOptionalResult(result,input){return result.issues.length&&input===void 0?{issues:[],value:void 0}:result}var $ZodOptional=$constructor("$ZodOptional",(inst,def)=>{$ZodType.init(inst,def),inst._zod.optin="optional",inst._zod.optout="optional",defineLazy(inst._zod,"values",()=>def.innerType._zod.values?new Set([...def.innerType._zod.values,void 0]):void 0),defineLazy(inst._zod,"pattern",()=>{let pattern=def.innerType._zod.pattern;return pattern?new RegExp(`^(${cleanRegex(pattern.source)})?$`):void 0}),inst._zod.parse=(payload,ctx)=>{if(def.innerType._zod.optin==="optional"){let result=def.innerType._zod.run(payload,ctx);return result instanceof Promise?result.then(r=>handleOptionalResult(r,payload.value)):handleOptionalResult(result,payload.value)}return payload.value===void 0?payload:def.innerType._zod.run(payload,ctx)}}),$ZodExactOptional=$constructor("$ZodExactOptional",(inst,def)=>{$ZodOptional.init(inst,def),defineLazy(inst._zod,"values",()=>def.innerType._zod.values),defineLazy(inst._zod,"pattern",()=>def.innerType._zod.pattern),inst._zod.parse=(payload,ctx)=>def.innerType._zod.run(payload,ctx)}),$ZodNullable=$constructor("$ZodNullable",(inst,def)=>{$ZodType.init(inst,def),defineLazy(inst._zod,"optin",()=>def.innerType._zod.optin),defineLazy(inst._zod,"optout",()=>def.innerType._zod.optout),defineLazy(inst._zod,"pattern",()=>{let pattern=def.innerType._zod.pattern;return pattern?new RegExp(`^(${cleanRegex(pattern.source)}|null)$`):void 0}),defineLazy(inst._zod,"values",()=>def.innerType._zod.values?new Set([...def.innerType._zod.values,null]):void 0),inst._zod.parse=(payload,ctx)=>payload.value===null?payload:def.innerType._zod.run(payload,ctx)}),$ZodDefault=$constructor("$ZodDefault",(inst,def)=>{$ZodType.init(inst,def),inst._zod.optin="optional",defineLazy(inst._zod,"values",()=>def.innerType._zod.values),inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward")return def.innerType._zod.run(payload,ctx);if(payload.value===void 0)return payload.value=def.defaultValue,payload;let result=def.innerType._zod.run(payload,ctx);return result instanceof Promise?result.then(result2=>handleDefaultResult(result2,def)):handleDefaultResult(result,def)}});function handleDefaultResult(payload,def){return payload.value===void 0&&(payload.value=def.defaultValue),payload}var $ZodPrefault=$constructor("$ZodPrefault",(inst,def)=>{$ZodType.init(inst,def),inst._zod.optin="optional",defineLazy(inst._zod,"values",()=>def.innerType._zod.values),inst._zod.parse=(payload,ctx)=>(ctx.direction==="backward"||payload.value===void 0&&(payload.value=def.defaultValue),def.innerType._zod.run(payload,ctx))}),$ZodNonOptional=$constructor("$ZodNonOptional",(inst,def)=>{$ZodType.init(inst,def),defineLazy(inst._zod,"values",()=>{let v=def.innerType._zod.values;return v?new Set([...v].filter(x=>x!==void 0)):void 0}),inst._zod.parse=(payload,ctx)=>{let result=def.innerType._zod.run(payload,ctx);return result instanceof Promise?result.then(result2=>handleNonOptionalResult(result2,inst)):handleNonOptionalResult(result,inst)}});function handleNonOptionalResult(payload,inst){return!payload.issues.length&&payload.value===void 0&&payload.issues.push({code:"invalid_type",expected:"nonoptional",input:payload.value,inst}),payload}var $ZodSuccess=$constructor("$ZodSuccess",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward")throw new $ZodEncodeError("ZodSuccess");let result=def.innerType._zod.run(payload,ctx);return result instanceof Promise?result.then(result2=>(payload.value=result2.issues.length===0,payload)):(payload.value=result.issues.length===0,payload)}}),$ZodCatch=$constructor("$ZodCatch",(inst,def)=>{$ZodType.init(inst,def),defineLazy(inst._zod,"optin",()=>def.innerType._zod.optin),defineLazy(inst._zod,"optout",()=>def.innerType._zod.optout),defineLazy(inst._zod,"values",()=>def.innerType._zod.values),inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward")return def.innerType._zod.run(payload,ctx);let result=def.innerType._zod.run(payload,ctx);return result instanceof Promise?result.then(result2=>(payload.value=result2.value,result2.issues.length&&(payload.value=def.catchValue({...payload,error:{issues:result2.issues.map(iss=>finalizeIssue(iss,ctx,config()))},input:payload.value}),payload.issues=[]),payload)):(payload.value=result.value,result.issues.length&&(payload.value=def.catchValue({...payload,error:{issues:result.issues.map(iss=>finalizeIssue(iss,ctx,config()))},input:payload.value}),payload.issues=[]),payload)}}),$ZodNaN=$constructor("$ZodNaN",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,_ctx)=>((typeof payload.value!="number"||!Number.isNaN(payload.value))&&payload.issues.push({input:payload.value,inst,expected:"nan",code:"invalid_type"}),payload)}),$ZodPipe=$constructor("$ZodPipe",(inst,def)=>{$ZodType.init(inst,def),defineLazy(inst._zod,"values",()=>def.in._zod.values),defineLazy(inst._zod,"optin",()=>def.in._zod.optin),defineLazy(inst._zod,"optout",()=>def.out._zod.optout),defineLazy(inst._zod,"propValues",()=>def.in._zod.propValues),inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward"){let right=def.out._zod.run(payload,ctx);return right instanceof Promise?right.then(right2=>handlePipeResult(right2,def.in,ctx)):handlePipeResult(right,def.in,ctx)}let left=def.in._zod.run(payload,ctx);return left instanceof Promise?left.then(left2=>handlePipeResult(left2,def.out,ctx)):handlePipeResult(left,def.out,ctx)}});function handlePipeResult(left,next,ctx){return left.issues.length?(left.aborted=!0,left):next._zod.run({value:left.value,issues:left.issues},ctx)}var $ZodCodec=$constructor("$ZodCodec",(inst,def)=>{$ZodType.init(inst,def),defineLazy(inst._zod,"values",()=>def.in._zod.values),defineLazy(inst._zod,"optin",()=>def.in._zod.optin),defineLazy(inst._zod,"optout",()=>def.out._zod.optout),defineLazy(inst._zod,"propValues",()=>def.in._zod.propValues),inst._zod.parse=(payload,ctx)=>{if((ctx.direction||"forward")==="forward"){let left=def.in._zod.run(payload,ctx);return left instanceof Promise?left.then(left2=>handleCodecAResult(left2,def,ctx)):handleCodecAResult(left,def,ctx)}else{let right=def.out._zod.run(payload,ctx);return right instanceof Promise?right.then(right2=>handleCodecAResult(right2,def,ctx)):handleCodecAResult(right,def,ctx)}}});function handleCodecAResult(result,def,ctx){if(result.issues.length)return result.aborted=!0,result;if((ctx.direction||"forward")==="forward"){let transformed=def.transform(result.value,result);return transformed instanceof Promise?transformed.then(value=>handleCodecTxResult(result,value,def.out,ctx)):handleCodecTxResult(result,transformed,def.out,ctx)}else{let transformed=def.reverseTransform(result.value,result);return transformed instanceof Promise?transformed.then(value=>handleCodecTxResult(result,value,def.in,ctx)):handleCodecTxResult(result,transformed,def.in,ctx)}}function handleCodecTxResult(left,value,nextSchema,ctx){return left.issues.length?(left.aborted=!0,left):nextSchema._zod.run({value,issues:left.issues},ctx)}var $ZodReadonly=$constructor("$ZodReadonly",(inst,def)=>{$ZodType.init(inst,def),defineLazy(inst._zod,"propValues",()=>def.innerType._zod.propValues),defineLazy(inst._zod,"values",()=>def.innerType._zod.values),defineLazy(inst._zod,"optin",()=>def.innerType?._zod?.optin),defineLazy(inst._zod,"optout",()=>def.innerType?._zod?.optout),inst._zod.parse=(payload,ctx)=>{if(ctx.direction==="backward")return def.innerType._zod.run(payload,ctx);let result=def.innerType._zod.run(payload,ctx);return result instanceof Promise?result.then(handleReadonlyResult):handleReadonlyResult(result)}});function handleReadonlyResult(payload){return payload.value=Object.freeze(payload.value),payload}var $ZodTemplateLiteral=$constructor("$ZodTemplateLiteral",(inst,def)=>{$ZodType.init(inst,def);let regexParts=[];for(let part of def.parts)if(typeof part=="object"&&part!==null){if(!part._zod.pattern)throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);let source=part._zod.pattern instanceof RegExp?part._zod.pattern.source:part._zod.pattern;if(!source)throw new Error(`Invalid template literal part: ${part._zod.traits}`);let start=source.startsWith("^")?1:0,end=source.endsWith("$")?source.length-1:source.length;regexParts.push(source.slice(start,end))}else if(part===null||primitiveTypes.has(typeof part))regexParts.push(escapeRegex(`${part}`));else throw new Error(`Invalid template literal part: ${part}`);inst._zod.pattern=new RegExp(`^${regexParts.join("")}$`),inst._zod.parse=(payload,_ctx)=>typeof payload.value!="string"?(payload.issues.push({input:payload.value,inst,expected:"string",code:"invalid_type"}),payload):(inst._zod.pattern.lastIndex=0,inst._zod.pattern.test(payload.value)||payload.issues.push({input:payload.value,inst,code:"invalid_format",format:def.format??"template_literal",pattern:inst._zod.pattern.source}),payload)}),$ZodFunction=$constructor("$ZodFunction",(inst,def)=>($ZodType.init(inst,def),inst._def=def,inst._zod.def=def,inst.implement=func=>{if(typeof func!="function")throw new Error("implement() must be called with a function");return function(...args){let parsedArgs=inst._def.input?parse(inst._def.input,args):args,result=Reflect.apply(func,this,parsedArgs);return inst._def.output?parse(inst._def.output,result):result}},inst.implementAsync=func=>{if(typeof func!="function")throw new Error("implementAsync() must be called with a function");return async function(...args){let parsedArgs=inst._def.input?await parseAsync(inst._def.input,args):args,result=await Reflect.apply(func,this,parsedArgs);return inst._def.output?await parseAsync(inst._def.output,result):result}},inst._zod.parse=(payload,_ctx)=>typeof payload.value!="function"?(payload.issues.push({code:"invalid_type",expected:"function",input:payload.value,inst}),payload):(inst._def.output&&inst._def.output._zod.def.type==="promise"?payload.value=inst.implementAsync(payload.value):payload.value=inst.implement(payload.value),payload),inst.input=(...args)=>{let F=inst.constructor;return Array.isArray(args[0])?new F({type:"function",input:new $ZodTuple({type:"tuple",items:args[0],rest:args[1]}),output:inst._def.output}):new F({type:"function",input:args[0],output:inst._def.output})},inst.output=output=>{let F=inst.constructor;return new F({type:"function",input:inst._def.input,output})},inst)),$ZodPromise=$constructor("$ZodPromise",(inst,def)=>{$ZodType.init(inst,def),inst._zod.parse=(payload,ctx)=>Promise.resolve(payload.value).then(inner=>def.innerType._zod.run({value:inner,issues:[]},ctx))}),$ZodLazy=$constructor("$ZodLazy",(inst,def)=>{$ZodType.init(inst,def),defineLazy(inst._zod,"innerType",()=>def.getter()),defineLazy(inst._zod,"pattern",()=>inst._zod.innerType?._zod?.pattern),defineLazy(inst._zod,"propValues",()=>inst._zod.innerType?._zod?.propValues),defineLazy(inst._zod,"optin",()=>inst._zod.innerType?._zod?.optin??void 0),defineLazy(inst._zod,"optout",()=>inst._zod.innerType?._zod?.optout??void 0),inst._zod.parse=(payload,ctx)=>inst._zod.innerType._zod.run(payload,ctx)}),$ZodCustom=$constructor("$ZodCustom",(inst,def)=>{$ZodCheck.init(inst,def),$ZodType.init(inst,def),inst._zod.parse=(payload,_)=>payload,inst._zod.check=payload=>{let input=payload.value,r=def.fn(input);if(r instanceof Promise)return r.then(r2=>handleRefineResult(r2,payload,input,inst));handleRefineResult(r,payload,input,inst)}});function handleRefineResult(result,payload,input,inst){if(!result){let _iss={code:"custom",input,inst,path:[...inst._zod.def.path??[]],continue:!inst._zod.def.abort};inst._zod.def.params&&(_iss.params=inst._zod.def.params),payload.issues.push(issue(_iss))}}var locales_exports={};__export(locales_exports,{ar:()=>ar_default,az:()=>az_default,be:()=>be_default,bg:()=>bg_default,ca:()=>ca_default,cs:()=>cs_default,da:()=>da_default,de:()=>de_default,en:()=>en_default,eo:()=>eo_default,es:()=>es_default,fa:()=>fa_default,fi:()=>fi_default,fr:()=>fr_default,frCA:()=>fr_CA_default,he:()=>he_default,hu:()=>hu_default,hy:()=>hy_default,id:()=>id_default,is:()=>is_default,it:()=>it_default,ja:()=>ja_default,ka:()=>ka_default,kh:()=>kh_default,km:()=>km_default,ko:()=>ko_default,lt:()=>lt_default,mk:()=>mk_default,ms:()=>ms_default,nl:()=>nl_default,no:()=>no_default,ota:()=>ota_default,pl:()=>pl_default,ps:()=>ps_default,pt:()=>pt_default,ru:()=>ru_default,sl:()=>sl_default,sv:()=>sv_default,ta:()=>ta_default,th:()=>th_default,tr:()=>tr_default,ua:()=>ua_default,uk:()=>uk_default,ur:()=>ur_default,uz:()=>uz_default,vi:()=>vi_default,yo:()=>yo_default,zhCN:()=>zh_CN_default,zhTW:()=>zh_TW_default});var error=()=>{let Sizable={string:{unit:"حرف",verb:"أن يحوي"},file:{unit:"بايت",verb:"أن يحوي"},array:{unit:"عنصر",verb:"أن يحوي"},set:{unit:"عنصر",verb:"أن يحوي"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"مدخل",email:"بريد إلكتروني",url:"رابط",emoji:"إيموجي",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"تاريخ ووقت بمعيار ISO",date:"تاريخ بمعيار ISO",time:"وقت بمعيار ISO",duration:"مدة بمعيار ISO",ipv4:"عنوان IPv4",ipv6:"عنوان IPv6",cidrv4:"مدى عناوين بصيغة IPv4",cidrv6:"مدى عناوين بصيغة IPv6",base64:"نَص بترميز base64-encoded",base64url:"نَص بترميز base64url-encoded",json_string:"نَص على هيئة JSON",e164:"رقم هاتف بمعيار E.164",jwt:"JWT",template_literal:"مدخل"},TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`مدخلات غير مقبولة: يفترض إدخال instanceof ${issue2.expected}، ولكن تم إدخال ${received}`:`مدخلات غير مقبولة: يفترض إدخال ${expected}، ولكن تم إدخال ${received}`}case"invalid_value":return issue2.values.length===1?`مدخلات غير مقبولة: يفترض إدخال ${stringifyPrimitive(issue2.values[0])}`:`اختيار غير مقبول: يتوقع انتقاء أحد هذه الخيارات: ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?` أكبر من اللازم: يفترض أن تكون ${issue2.origin??"القيمة"} ${adj} ${issue2.maximum.toString()} ${sizing.unit??"عنصر"}`:`أكبر من اللازم: يفترض أن تكون ${issue2.origin??"القيمة"} ${adj} ${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`أصغر من اللازم: يفترض لـ ${issue2.origin} أن يكون ${adj} ${issue2.minimum.toString()} ${sizing.unit}`:`أصغر من اللازم: يفترض لـ ${issue2.origin} أن يكون ${adj} ${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`نَص غير مقبول: يجب أن يبدأ بـ "${issue2.prefix}"`:_issue.format==="ends_with"?`نَص غير مقبول: يجب أن ينتهي بـ "${_issue.suffix}"`:_issue.format==="includes"?`نَص غير مقبول: يجب أن يتضمَّن "${_issue.includes}"`:_issue.format==="regex"?`نَص غير مقبول: يجب أن يطابق النمط ${_issue.pattern}`:`${FormatDictionary[_issue.format]??issue2.format} غير مقبول`}case"not_multiple_of":return`رقم غير مقبول: يجب أن يكون من مضاعفات ${issue2.divisor}`;case"unrecognized_keys":return`معرف${issue2.keys.length>1?"ات":""} غريب${issue2.keys.length>1?"ة":""}: ${joinValues(issue2.keys,"، ")}`;case"invalid_key":return`معرف غير مقبول في ${issue2.origin}`;case"invalid_union":return"مدخل غير مقبول";case"invalid_element":return`مدخل غير مقبول في ${issue2.origin}`;default:return"مدخل غير مقبول"}}};function ar_default(){return{localeError:error()}}var error2=()=>{let Sizable={string:{unit:"simvol",verb:"olmalıdır"},file:{unit:"bayt",verb:"olmalıdır"},array:{unit:"element",verb:"olmalıdır"},set:{unit:"element",verb:"olmalıdır"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"},TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Yanlış dəyər: gözlənilən instanceof ${issue2.expected}, daxil olan ${received}`:`Yanlış dəyər: gözlənilən ${expected}, daxil olan ${received}`}case"invalid_value":return issue2.values.length===1?`Yanlış dəyər: gözlənilən ${stringifyPrimitive(issue2.values[0])}`:`Yanlış seçim: aşağıdakılardan biri olmalıdır: ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Çox böyük: gözlənilən ${issue2.origin??"dəyər"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"element"}`:`Çox böyük: gözlənilən ${issue2.origin??"dəyər"} ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Çox kiçik: gözlənilən ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Çox kiçik: gözlənilən ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Yanlış mətn: "${_issue.prefix}" ilə başlamalıdır`:_issue.format==="ends_with"?`Yanlış mətn: "${_issue.suffix}" ilə bitməlidir`:_issue.format==="includes"?`Yanlış mətn: "${_issue.includes}" daxil olmalıdır`:_issue.format==="regex"?`Yanlış mətn: ${_issue.pattern} şablonuna uyğun olmalıdır`:`Yanlış ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Yanlış ədəd: ${issue2.divisor} ilə bölünə bilən olmalıdır`;case"unrecognized_keys":return`Tanınmayan açar${issue2.keys.length>1?"lar":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} daxilində yanlış açar`;case"invalid_union":return"Yanlış dəyər";case"invalid_element":return`${issue2.origin} daxilində yanlış dəyər`;default:return"Yanlış dəyər"}}};function az_default(){return{localeError:error2()}}function getBelarusianPlural(count,one,few,many){let absCount=Math.abs(count),lastDigit=absCount%10,lastTwoDigits=absCount%100;return lastTwoDigits>=11&&lastTwoDigits<=19?many:lastDigit===1?one:lastDigit>=2&&lastDigit<=4?few:many}var error3=()=>{let Sizable={string:{unit:{one:"сімвал",few:"сімвалы",many:"сімвалаў"},verb:"мець"},array:{unit:{one:"элемент",few:"элементы",many:"элементаў"},verb:"мець"},set:{unit:{one:"элемент",few:"элементы",many:"элементаў"},verb:"мець"},file:{unit:{one:"байт",few:"байты",many:"байтаў"},verb:"мець"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"увод",email:"email адрас",url:"URL",emoji:"эмодзі",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO дата і час",date:"ISO дата",time:"ISO час",duration:"ISO працягласць",ipv4:"IPv4 адрас",ipv6:"IPv6 адрас",cidrv4:"IPv4 дыяпазон",cidrv6:"IPv6 дыяпазон",base64:"радок у фармаце base64",base64url:"радок у фармаце base64url",json_string:"JSON радок",e164:"нумар E.164",jwt:"JWT",template_literal:"увод"},TypeDictionary={nan:"NaN",number:"лік",array:"масіў"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Няправільны ўвод: чакаўся instanceof ${issue2.expected}, атрымана ${received}`:`Няправільны ўвод: чакаўся ${expected}, атрымана ${received}`}case"invalid_value":return issue2.values.length===1?`Няправільны ўвод: чакалася ${stringifyPrimitive(issue2.values[0])}`:`Няправільны варыянт: чакаўся адзін з ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing){let maxValue=Number(issue2.maximum),unit=getBelarusianPlural(maxValue,sizing.unit.one,sizing.unit.few,sizing.unit.many);return`Занадта вялікі: чакалася, што ${issue2.origin??"значэнне"} павінна ${sizing.verb} ${adj}${issue2.maximum.toString()} ${unit}`}return`Занадта вялікі: чакалася, што ${issue2.origin??"значэнне"} павінна быць ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing){let minValue=Number(issue2.minimum),unit=getBelarusianPlural(minValue,sizing.unit.one,sizing.unit.few,sizing.unit.many);return`Занадта малы: чакалася, што ${issue2.origin} павінна ${sizing.verb} ${adj}${issue2.minimum.toString()} ${unit}`}return`Занадта малы: чакалася, што ${issue2.origin} павінна быць ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Няправільны радок: павінен пачынацца з "${_issue.prefix}"`:_issue.format==="ends_with"?`Няправільны радок: павінен заканчвацца на "${_issue.suffix}"`:_issue.format==="includes"?`Няправільны радок: павінен змяшчаць "${_issue.includes}"`:_issue.format==="regex"?`Няправільны радок: павінен адпавядаць шаблону ${_issue.pattern}`:`Няправільны ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Няправільны лік: павінен быць кратным ${issue2.divisor}`;case"unrecognized_keys":return`Нераспазнаны ${issue2.keys.length>1?"ключы":"ключ"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Няправільны ключ у ${issue2.origin}`;case"invalid_union":return"Няправільны ўвод";case"invalid_element":return`Няправільнае значэнне ў ${issue2.origin}`;default:return"Няправільны ўвод"}}};function be_default(){return{localeError:error3()}}var error4=()=>{let Sizable={string:{unit:"символа",verb:"да съдържа"},file:{unit:"байта",verb:"да съдържа"},array:{unit:"елемента",verb:"да съдържа"},set:{unit:"елемента",verb:"да съдържа"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"вход",email:"имейл адрес",url:"URL",emoji:"емоджи",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO време",date:"ISO дата",time:"ISO време",duration:"ISO продължителност",ipv4:"IPv4 адрес",ipv6:"IPv6 адрес",cidrv4:"IPv4 диапазон",cidrv6:"IPv6 диапазон",base64:"base64-кодиран низ",base64url:"base64url-кодиран низ",json_string:"JSON низ",e164:"E.164 номер",jwt:"JWT",template_literal:"вход"},TypeDictionary={nan:"NaN",number:"число",array:"масив"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Невалиден вход: очакван instanceof ${issue2.expected}, получен ${received}`:`Невалиден вход: очакван ${expected}, получен ${received}`}case"invalid_value":return issue2.values.length===1?`Невалиден вход: очакван ${stringifyPrimitive(issue2.values[0])}`:`Невалидна опция: очаквано едно от ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Твърде голямо: очаква се ${issue2.origin??"стойност"} да съдържа ${adj}${issue2.maximum.toString()} ${sizing.unit??"елемента"}`:`Твърде голямо: очаква се ${issue2.origin??"стойност"} да бъде ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Твърде малко: очаква се ${issue2.origin} да съдържа ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Твърде малко: очаква се ${issue2.origin} да бъде ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`Невалиден низ: трябва да започва с "${_issue.prefix}"`;if(_issue.format==="ends_with")return`Невалиден низ: трябва да завършва с "${_issue.suffix}"`;if(_issue.format==="includes")return`Невалиден низ: трябва да включва "${_issue.includes}"`;if(_issue.format==="regex")return`Невалиден низ: трябва да съвпада с ${_issue.pattern}`;let invalid_adj="Невалиден";return _issue.format==="emoji"&&(invalid_adj="Невалидно"),_issue.format==="datetime"&&(invalid_adj="Невалидно"),_issue.format==="date"&&(invalid_adj="Невалидна"),_issue.format==="time"&&(invalid_adj="Невалидно"),_issue.format==="duration"&&(invalid_adj="Невалидна"),`${invalid_adj} ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Невалидно число: трябва да бъде кратно на ${issue2.divisor}`;case"unrecognized_keys":return`Неразпознат${issue2.keys.length>1?"и":""} ключ${issue2.keys.length>1?"ове":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Невалиден ключ в ${issue2.origin}`;case"invalid_union":return"Невалиден вход";case"invalid_element":return`Невалидна стойност в ${issue2.origin}`;default:return"Невалиден вход"}}};function bg_default(){return{localeError:error4()}}var error5=()=>{let Sizable={string:{unit:"caràcters",verb:"contenir"},file:{unit:"bytes",verb:"contenir"},array:{unit:"elements",verb:"contenir"},set:{unit:"elements",verb:"contenir"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"entrada",email:"adreça electrònica",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data i hora ISO",date:"data ISO",time:"hora ISO",duration:"durada ISO",ipv4:"adreça IPv4",ipv6:"adreça IPv6",cidrv4:"rang IPv4",cidrv6:"rang IPv6",base64:"cadena codificada en base64",base64url:"cadena codificada en base64url",json_string:"cadena JSON",e164:"número E.164",jwt:"JWT",template_literal:"entrada"},TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Tipus invàlid: s'esperava instanceof ${issue2.expected}, s'ha rebut ${received}`:`Tipus invàlid: s'esperava ${expected}, s'ha rebut ${received}`}case"invalid_value":return issue2.values.length===1?`Valor invàlid: s'esperava ${stringifyPrimitive(issue2.values[0])}`:`Opció invàlida: s'esperava una de ${joinValues(issue2.values," o ")}`;case"too_big":{let adj=issue2.inclusive?"com a màxim":"menys de",sizing=getSizing(issue2.origin);return sizing?`Massa gran: s'esperava que ${issue2.origin??"el valor"} contingués ${adj} ${issue2.maximum.toString()} ${sizing.unit??"elements"}`:`Massa gran: s'esperava que ${issue2.origin??"el valor"} fos ${adj} ${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?"com a mínim":"més de",sizing=getSizing(issue2.origin);return sizing?`Massa petit: s'esperava que ${issue2.origin} contingués ${adj} ${issue2.minimum.toString()} ${sizing.unit}`:`Massa petit: s'esperava que ${issue2.origin} fos ${adj} ${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Format invàlid: ha de començar amb "${_issue.prefix}"`:_issue.format==="ends_with"?`Format invàlid: ha d'acabar amb "${_issue.suffix}"`:_issue.format==="includes"?`Format invàlid: ha d'incloure "${_issue.includes}"`:_issue.format==="regex"?`Format invàlid: ha de coincidir amb el patró ${_issue.pattern}`:`Format invàlid per a ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Número invàlid: ha de ser múltiple de ${issue2.divisor}`;case"unrecognized_keys":return`Clau${issue2.keys.length>1?"s":""} no reconeguda${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Clau invàlida a ${issue2.origin}`;case"invalid_union":return"Entrada invàlida";case"invalid_element":return`Element invàlid a ${issue2.origin}`;default:return"Entrada invàlida"}}};function ca_default(){return{localeError:error5()}}var error6=()=>{let Sizable={string:{unit:"znaků",verb:"mít"},file:{unit:"bajtů",verb:"mít"},array:{unit:"prvků",verb:"mít"},set:{unit:"prvků",verb:"mít"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"regulární výraz",email:"e-mailová adresa",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"datum a čas ve formátu ISO",date:"datum ve formátu ISO",time:"čas ve formátu ISO",duration:"doba trvání ISO",ipv4:"IPv4 adresa",ipv6:"IPv6 adresa",cidrv4:"rozsah IPv4",cidrv6:"rozsah IPv6",base64:"řetězec zakódovaný ve formátu base64",base64url:"řetězec zakódovaný ve formátu base64url",json_string:"řetězec ve formátu JSON",e164:"číslo E.164",jwt:"JWT",template_literal:"vstup"},TypeDictionary={nan:"NaN",number:"číslo",string:"řetězec",function:"funkce",array:"pole"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Neplatný vstup: očekáváno instanceof ${issue2.expected}, obdrženo ${received}`:`Neplatný vstup: očekáváno ${expected}, obdrženo ${received}`}case"invalid_value":return issue2.values.length===1?`Neplatný vstup: očekáváno ${stringifyPrimitive(issue2.values[0])}`:`Neplatná možnost: očekávána jedna z hodnot ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Hodnota je příliš velká: ${issue2.origin??"hodnota"} musí mít ${adj}${issue2.maximum.toString()} ${sizing.unit??"prvků"}`:`Hodnota je příliš velká: ${issue2.origin??"hodnota"} musí být ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Hodnota je příliš malá: ${issue2.origin??"hodnota"} musí mít ${adj}${issue2.minimum.toString()} ${sizing.unit??"prvků"}`:`Hodnota je příliš malá: ${issue2.origin??"hodnota"} musí být ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Neplatný řetězec: musí začínat na "${_issue.prefix}"`:_issue.format==="ends_with"?`Neplatný řetězec: musí končit na "${_issue.suffix}"`:_issue.format==="includes"?`Neplatný řetězec: musí obsahovat "${_issue.includes}"`:_issue.format==="regex"?`Neplatný řetězec: musí odpovídat vzoru ${_issue.pattern}`:`Neplatný formát ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Neplatné číslo: musí být násobkem ${issue2.divisor}`;case"unrecognized_keys":return`Neznámé klíče: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Neplatný klíč v ${issue2.origin}`;case"invalid_union":return"Neplatný vstup";case"invalid_element":return`Neplatná hodnota v ${issue2.origin}`;default:return"Neplatný vstup"}}};function cs_default(){return{localeError:error6()}}var error7=()=>{let Sizable={string:{unit:"tegn",verb:"havde"},file:{unit:"bytes",verb:"havde"},array:{unit:"elementer",verb:"indeholdt"},set:{unit:"elementer",verb:"indeholdt"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"input",email:"e-mailadresse",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dato- og klokkeslæt",date:"ISO-dato",time:"ISO-klokkeslæt",duration:"ISO-varighed",ipv4:"IPv4-område",ipv6:"IPv6-område",cidrv4:"IPv4-spektrum",cidrv6:"IPv6-spektrum",base64:"base64-kodet streng",base64url:"base64url-kodet streng",json_string:"JSON-streng",e164:"E.164-nummer",jwt:"JWT",template_literal:"input"},TypeDictionary={nan:"NaN",string:"streng",number:"tal",boolean:"boolean",array:"liste",object:"objekt",set:"sæt",file:"fil"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Ugyldigt input: forventede instanceof ${issue2.expected}, fik ${received}`:`Ugyldigt input: forventede ${expected}, fik ${received}`}case"invalid_value":return issue2.values.length===1?`Ugyldig værdi: forventede ${stringifyPrimitive(issue2.values[0])}`:`Ugyldigt valg: forventede en af følgende ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin),origin=TypeDictionary[issue2.origin]??issue2.origin;return sizing?`For stor: forventede ${origin??"value"} ${sizing.verb} ${adj} ${issue2.maximum.toString()} ${sizing.unit??"elementer"}`:`For stor: forventede ${origin??"value"} havde ${adj} ${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin),origin=TypeDictionary[issue2.origin]??issue2.origin;return sizing?`For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue2.minimum.toString()} ${sizing.unit}`:`For lille: forventede ${origin} havde ${adj} ${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Ugyldig streng: skal starte med "${_issue.prefix}"`:_issue.format==="ends_with"?`Ugyldig streng: skal ende med "${_issue.suffix}"`:_issue.format==="includes"?`Ugyldig streng: skal indeholde "${_issue.includes}"`:_issue.format==="regex"?`Ugyldig streng: skal matche mønsteret ${_issue.pattern}`:`Ugyldig ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Ugyldigt tal: skal være deleligt med ${issue2.divisor}`;case"unrecognized_keys":return`${issue2.keys.length>1?"Ukendte nøgler":"Ukendt nøgle"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Ugyldig nøgle i ${issue2.origin}`;case"invalid_union":return"Ugyldigt input: matcher ingen af de tilladte typer";case"invalid_element":return`Ugyldig værdi i ${issue2.origin}`;default:return"Ugyldigt input"}}};function da_default(){return{localeError:error7()}}var error8=()=>{let Sizable={string:{unit:"Zeichen",verb:"zu haben"},file:{unit:"Bytes",verb:"zu haben"},array:{unit:"Elemente",verb:"zu haben"},set:{unit:"Elemente",verb:"zu haben"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"Eingabe",email:"E-Mail-Adresse",url:"URL",emoji:"Emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-Datum und -Uhrzeit",date:"ISO-Datum",time:"ISO-Uhrzeit",duration:"ISO-Dauer",ipv4:"IPv4-Adresse",ipv6:"IPv6-Adresse",cidrv4:"IPv4-Bereich",cidrv6:"IPv6-Bereich",base64:"Base64-codierter String",base64url:"Base64-URL-codierter String",json_string:"JSON-String",e164:"E.164-Nummer",jwt:"JWT",template_literal:"Eingabe"},TypeDictionary={nan:"NaN",number:"Zahl",array:"Array"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Ungültige Eingabe: erwartet instanceof ${issue2.expected}, erhalten ${received}`:`Ungültige Eingabe: erwartet ${expected}, erhalten ${received}`}case"invalid_value":return issue2.values.length===1?`Ungültige Eingabe: erwartet ${stringifyPrimitive(issue2.values[0])}`:`Ungültige Option: erwartet eine von ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Zu groß: erwartet, dass ${issue2.origin??"Wert"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"Elemente"} hat`:`Zu groß: erwartet, dass ${issue2.origin??"Wert"} ${adj}${issue2.maximum.toString()} ist`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Zu klein: erwartet, dass ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} hat`:`Zu klein: erwartet, dass ${issue2.origin} ${adj}${issue2.minimum.toString()} ist`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Ungültiger String: muss mit "${_issue.prefix}" beginnen`:_issue.format==="ends_with"?`Ungültiger String: muss mit "${_issue.suffix}" enden`:_issue.format==="includes"?`Ungültiger String: muss "${_issue.includes}" enthalten`:_issue.format==="regex"?`Ungültiger String: muss dem Muster ${_issue.pattern} entsprechen`:`Ungültig: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Ungültige Zahl: muss ein Vielfaches von ${issue2.divisor} sein`;case"unrecognized_keys":return`${issue2.keys.length>1?"Unbekannte Schlüssel":"Unbekannter Schlüssel"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Ungültiger Schlüssel in ${issue2.origin}`;case"invalid_union":return"Ungültige Eingabe";case"invalid_element":return`Ungültiger Wert in ${issue2.origin}`;default:return"Ungültige Eingabe"}}};function de_default(){return{localeError:error8()}}var error9=()=>{let Sizable={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"},TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return`Invalid input: expected ${expected}, received ${received}`}case"invalid_value":return issue2.values.length===1?`Invalid input: expected ${stringifyPrimitive(issue2.values[0])}`:`Invalid option: expected one of ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Too big: expected ${issue2.origin??"value"} to have ${adj}${issue2.maximum.toString()} ${sizing.unit??"elements"}`:`Too big: expected ${issue2.origin??"value"} to be ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Too small: expected ${issue2.origin} to have ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Too small: expected ${issue2.origin} to be ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Invalid string: must start with "${_issue.prefix}"`:_issue.format==="ends_with"?`Invalid string: must end with "${_issue.suffix}"`:_issue.format==="includes"?`Invalid string: must include "${_issue.includes}"`:_issue.format==="regex"?`Invalid string: must match pattern ${_issue.pattern}`:`Invalid ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${issue2.divisor}`;case"unrecognized_keys":return`Unrecognized key${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Invalid key in ${issue2.origin}`;case"invalid_union":return"Invalid input";case"invalid_element":return`Invalid value in ${issue2.origin}`;default:return"Invalid input"}}};function en_default(){return{localeError:error9()}}var error10=()=>{let Sizable={string:{unit:"karaktrojn",verb:"havi"},file:{unit:"bajtojn",verb:"havi"},array:{unit:"elementojn",verb:"havi"},set:{unit:"elementojn",verb:"havi"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"enigo",email:"retadreso",url:"URL",emoji:"emoĝio",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-datotempo",date:"ISO-dato",time:"ISO-tempo",duration:"ISO-daŭro",ipv4:"IPv4-adreso",ipv6:"IPv6-adreso",cidrv4:"IPv4-rango",cidrv6:"IPv6-rango",base64:"64-ume kodita karaktraro",base64url:"URL-64-ume kodita karaktraro",json_string:"JSON-karaktraro",e164:"E.164-nombro",jwt:"JWT",template_literal:"enigo"},TypeDictionary={nan:"NaN",number:"nombro",array:"tabelo",null:"senvalora"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Nevalida enigo: atendiĝis instanceof ${issue2.expected}, riceviĝis ${received}`:`Nevalida enigo: atendiĝis ${expected}, riceviĝis ${received}`}case"invalid_value":return issue2.values.length===1?`Nevalida enigo: atendiĝis ${stringifyPrimitive(issue2.values[0])}`:`Nevalida opcio: atendiĝis unu el ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Tro granda: atendiĝis ke ${issue2.origin??"valoro"} havu ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementojn"}`:`Tro granda: atendiĝis ke ${issue2.origin??"valoro"} havu ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Tro malgranda: atendiĝis ke ${issue2.origin} havu ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Tro malgranda: atendiĝis ke ${issue2.origin} estu ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Nevalida karaktraro: devas komenciĝi per "${_issue.prefix}"`:_issue.format==="ends_with"?`Nevalida karaktraro: devas finiĝi per "${_issue.suffix}"`:_issue.format==="includes"?`Nevalida karaktraro: devas inkluzivi "${_issue.includes}"`:_issue.format==="regex"?`Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`:`Nevalida ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Nevalida nombro: devas esti oblo de ${issue2.divisor}`;case"unrecognized_keys":return`Nekonata${issue2.keys.length>1?"j":""} ŝlosilo${issue2.keys.length>1?"j":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Nevalida ŝlosilo en ${issue2.origin}`;case"invalid_union":return"Nevalida enigo";case"invalid_element":return`Nevalida valoro en ${issue2.origin}`;default:return"Nevalida enigo"}}};function eo_default(){return{localeError:error10()}}var error11=()=>{let Sizable={string:{unit:"caracteres",verb:"tener"},file:{unit:"bytes",verb:"tener"},array:{unit:"elementos",verb:"tener"},set:{unit:"elementos",verb:"tener"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"entrada",email:"dirección de correo electrónico",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"fecha y hora ISO",date:"fecha ISO",time:"hora ISO",duration:"duración ISO",ipv4:"dirección IPv4",ipv6:"dirección IPv6",cidrv4:"rango IPv4",cidrv6:"rango IPv6",base64:"cadena codificada en base64",base64url:"URL codificada en base64",json_string:"cadena JSON",e164:"número E.164",jwt:"JWT",template_literal:"entrada"},TypeDictionary={nan:"NaN",string:"texto",number:"número",boolean:"booleano",array:"arreglo",object:"objeto",set:"conjunto",file:"archivo",date:"fecha",bigint:"número grande",symbol:"símbolo",undefined:"indefinido",null:"nulo",function:"función",map:"mapa",record:"registro",tuple:"tupla",enum:"enumeración",union:"unión",literal:"literal",promise:"promesa",void:"vacío",never:"nunca",unknown:"desconocido",any:"cualquiera"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Entrada inválida: se esperaba instanceof ${issue2.expected}, recibido ${received}`:`Entrada inválida: se esperaba ${expected}, recibido ${received}`}case"invalid_value":return issue2.values.length===1?`Entrada inválida: se esperaba ${stringifyPrimitive(issue2.values[0])}`:`Opción inválida: se esperaba una de ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin),origin=TypeDictionary[issue2.origin]??issue2.origin;return sizing?`Demasiado grande: se esperaba que ${origin??"valor"} tuviera ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementos"}`:`Demasiado grande: se esperaba que ${origin??"valor"} fuera ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin),origin=TypeDictionary[issue2.origin]??issue2.origin;return sizing?`Demasiado pequeño: se esperaba que ${origin} tuviera ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Demasiado pequeño: se esperaba que ${origin} fuera ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Cadena inválida: debe comenzar con "${_issue.prefix}"`:_issue.format==="ends_with"?`Cadena inválida: debe terminar en "${_issue.suffix}"`:_issue.format==="includes"?`Cadena inválida: debe incluir "${_issue.includes}"`:_issue.format==="regex"?`Cadena inválida: debe coincidir con el patrón ${_issue.pattern}`:`Inválido ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Número inválido: debe ser múltiplo de ${issue2.divisor}`;case"unrecognized_keys":return`Llave${issue2.keys.length>1?"s":""} desconocida${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Llave inválida en ${TypeDictionary[issue2.origin]??issue2.origin}`;case"invalid_union":return"Entrada inválida";case"invalid_element":return`Valor inválido en ${TypeDictionary[issue2.origin]??issue2.origin}`;default:return"Entrada inválida"}}};function es_default(){return{localeError:error11()}}var error12=()=>{let Sizable={string:{unit:"کاراکتر",verb:"داشته باشد"},file:{unit:"بایت",verb:"داشته باشد"},array:{unit:"آیتم",verb:"داشته باشد"},set:{unit:"آیتم",verb:"داشته باشد"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"ورودی",email:"آدرس ایمیل",url:"URL",emoji:"ایموجی",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"تاریخ و زمان ایزو",date:"تاریخ ایزو",time:"زمان ایزو",duration:"مدت زمان ایزو",ipv4:"IPv4 آدرس",ipv6:"IPv6 آدرس",cidrv4:"IPv4 دامنه",cidrv6:"IPv6 دامنه",base64:"base64-encoded رشته",base64url:"base64url-encoded رشته",json_string:"JSON رشته",e164:"E.164 عدد",jwt:"JWT",template_literal:"ورودی"},TypeDictionary={nan:"NaN",number:"عدد",array:"آرایه"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`ورودی نامعتبر: می‌بایست instanceof ${issue2.expected} می‌بود، ${received} دریافت شد`:`ورودی نامعتبر: می‌بایست ${expected} می‌بود، ${received} دریافت شد`}case"invalid_value":return issue2.values.length===1?`ورودی نامعتبر: می‌بایست ${stringifyPrimitive(issue2.values[0])} می‌بود`:`گزینه نامعتبر: می‌بایست یکی از ${joinValues(issue2.values,"|")} می‌بود`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`خیلی بزرگ: ${issue2.origin??"مقدار"} باید ${adj}${issue2.maximum.toString()} ${sizing.unit??"عنصر"} باشد`:`خیلی بزرگ: ${issue2.origin??"مقدار"} باید ${adj}${issue2.maximum.toString()} باشد`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`خیلی کوچک: ${issue2.origin} باید ${adj}${issue2.minimum.toString()} ${sizing.unit} باشد`:`خیلی کوچک: ${issue2.origin} باید ${adj}${issue2.minimum.toString()} باشد`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`رشته نامعتبر: باید با "${_issue.prefix}" شروع شود`:_issue.format==="ends_with"?`رشته نامعتبر: باید با "${_issue.suffix}" تمام شود`:_issue.format==="includes"?`رشته نامعتبر: باید شامل "${_issue.includes}" باشد`:_issue.format==="regex"?`رشته نامعتبر: باید با الگوی ${_issue.pattern} مطابقت داشته باشد`:`${FormatDictionary[_issue.format]??issue2.format} نامعتبر`}case"not_multiple_of":return`عدد نامعتبر: باید مضرب ${issue2.divisor} باشد`;case"unrecognized_keys":return`کلید${issue2.keys.length>1?"های":""} ناشناس: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`کلید ناشناس در ${issue2.origin}`;case"invalid_union":return"ورودی نامعتبر";case"invalid_element":return`مقدار نامعتبر در ${issue2.origin}`;default:return"ورودی نامعتبر"}}};function fa_default(){return{localeError:error12()}}var error13=()=>{let Sizable={string:{unit:"merkkiä",subject:"merkkijonon"},file:{unit:"tavua",subject:"tiedoston"},array:{unit:"alkiota",subject:"listan"},set:{unit:"alkiota",subject:"joukon"},number:{unit:"",subject:"luvun"},bigint:{unit:"",subject:"suuren kokonaisluvun"},int:{unit:"",subject:"kokonaisluvun"},date:{unit:"",subject:"päivämäärän"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"säännöllinen lauseke",email:"sähköpostiosoite",url:"URL-osoite",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-aikaleima",date:"ISO-päivämäärä",time:"ISO-aika",duration:"ISO-kesto",ipv4:"IPv4-osoite",ipv6:"IPv6-osoite",cidrv4:"IPv4-alue",cidrv6:"IPv6-alue",base64:"base64-koodattu merkkijono",base64url:"base64url-koodattu merkkijono",json_string:"JSON-merkkijono",e164:"E.164-luku",jwt:"JWT",template_literal:"templaattimerkkijono"},TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Virheellinen tyyppi: odotettiin instanceof ${issue2.expected}, oli ${received}`:`Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`}case"invalid_value":return issue2.values.length===1?`Virheellinen syöte: täytyy olla ${stringifyPrimitive(issue2.values[0])}`:`Virheellinen valinta: täytyy olla yksi seuraavista: ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Liian suuri: ${sizing.subject} täytyy olla ${adj}${issue2.maximum.toString()} ${sizing.unit}`.trim():`Liian suuri: arvon täytyy olla ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Liian pieni: ${sizing.subject} täytyy olla ${adj}${issue2.minimum.toString()} ${sizing.unit}`.trim():`Liian pieni: arvon täytyy olla ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Virheellinen syöte: täytyy alkaa "${_issue.prefix}"`:_issue.format==="ends_with"?`Virheellinen syöte: täytyy loppua "${_issue.suffix}"`:_issue.format==="includes"?`Virheellinen syöte: täytyy sisältää "${_issue.includes}"`:_issue.format==="regex"?`Virheellinen syöte: täytyy vastata säännöllistä lauseketta ${_issue.pattern}`:`Virheellinen ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Virheellinen luku: täytyy olla luvun ${issue2.divisor} monikerta`;case"unrecognized_keys":return`${issue2.keys.length>1?"Tuntemattomat avaimet":"Tuntematon avain"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return"Virheellinen avain tietueessa";case"invalid_union":return"Virheellinen unioni";case"invalid_element":return"Virheellinen arvo joukossa";default:return"Virheellinen syöte"}}};function fi_default(){return{localeError:error13()}}var error14=()=>{let Sizable={string:{unit:"caractères",verb:"avoir"},file:{unit:"octets",verb:"avoir"},array:{unit:"éléments",verb:"avoir"},set:{unit:"éléments",verb:"avoir"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"entrée",email:"adresse e-mail",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"date et heure ISO",date:"date ISO",time:"heure ISO",duration:"durée ISO",ipv4:"adresse IPv4",ipv6:"adresse IPv6",cidrv4:"plage IPv4",cidrv6:"plage IPv6",base64:"chaîne encodée en base64",base64url:"chaîne encodée en base64url",json_string:"chaîne JSON",e164:"numéro E.164",jwt:"JWT",template_literal:"entrée"},TypeDictionary={nan:"NaN",number:"nombre",array:"tableau"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Entrée invalide : instanceof ${issue2.expected} attendu, ${received} reçu`:`Entrée invalide : ${expected} attendu, ${received} reçu`}case"invalid_value":return issue2.values.length===1?`Entrée invalide : ${stringifyPrimitive(issue2.values[0])} attendu`:`Option invalide : une valeur parmi ${joinValues(issue2.values,"|")} attendue`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Trop grand : ${issue2.origin??"valeur"} doit ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit??"élément(s)"}`:`Trop grand : ${issue2.origin??"valeur"} doit être ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Trop petit : ${issue2.origin} doit ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Trop petit : ${issue2.origin} doit être ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Chaîne invalide : doit commencer par "${_issue.prefix}"`:_issue.format==="ends_with"?`Chaîne invalide : doit se terminer par "${_issue.suffix}"`:_issue.format==="includes"?`Chaîne invalide : doit inclure "${_issue.includes}"`:_issue.format==="regex"?`Chaîne invalide : doit correspondre au modèle ${_issue.pattern}`:`${FormatDictionary[_issue.format]??issue2.format} invalide`}case"not_multiple_of":return`Nombre invalide : doit être un multiple de ${issue2.divisor}`;case"unrecognized_keys":return`Clé${issue2.keys.length>1?"s":""} non reconnue${issue2.keys.length>1?"s":""} : ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Clé invalide dans ${issue2.origin}`;case"invalid_union":return"Entrée invalide";case"invalid_element":return`Valeur invalide dans ${issue2.origin}`;default:return"Entrée invalide"}}};function fr_default(){return{localeError:error14()}}var error15=()=>{let Sizable={string:{unit:"caractères",verb:"avoir"},file:{unit:"octets",verb:"avoir"},array:{unit:"éléments",verb:"avoir"},set:{unit:"éléments",verb:"avoir"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"entrée",email:"adresse courriel",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"date-heure ISO",date:"date ISO",time:"heure ISO",duration:"durée ISO",ipv4:"adresse IPv4",ipv6:"adresse IPv6",cidrv4:"plage IPv4",cidrv6:"plage IPv6",base64:"chaîne encodée en base64",base64url:"chaîne encodée en base64url",json_string:"chaîne JSON",e164:"numéro E.164",jwt:"JWT",template_literal:"entrée"},TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Entrée invalide : attendu instanceof ${issue2.expected}, reçu ${received}`:`Entrée invalide : attendu ${expected}, reçu ${received}`}case"invalid_value":return issue2.values.length===1?`Entrée invalide : attendu ${stringifyPrimitive(issue2.values[0])}`:`Option invalide : attendu l'une des valeurs suivantes ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"≤":"<",sizing=getSizing(issue2.origin);return sizing?`Trop grand : attendu que ${issue2.origin??"la valeur"} ait ${adj}${issue2.maximum.toString()} ${sizing.unit}`:`Trop grand : attendu que ${issue2.origin??"la valeur"} soit ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?"≥":">",sizing=getSizing(issue2.origin);return sizing?`Trop petit : attendu que ${issue2.origin} ait ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Trop petit : attendu que ${issue2.origin} soit ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Chaîne invalide : doit commencer par "${_issue.prefix}"`:_issue.format==="ends_with"?`Chaîne invalide : doit se terminer par "${_issue.suffix}"`:_issue.format==="includes"?`Chaîne invalide : doit inclure "${_issue.includes}"`:_issue.format==="regex"?`Chaîne invalide : doit correspondre au motif ${_issue.pattern}`:`${FormatDictionary[_issue.format]??issue2.format} invalide`}case"not_multiple_of":return`Nombre invalide : doit être un multiple de ${issue2.divisor}`;case"unrecognized_keys":return`Clé${issue2.keys.length>1?"s":""} non reconnue${issue2.keys.length>1?"s":""} : ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Clé invalide dans ${issue2.origin}`;case"invalid_union":return"Entrée invalide";case"invalid_element":return`Valeur invalide dans ${issue2.origin}`;default:return"Entrée invalide"}}};function fr_CA_default(){return{localeError:error15()}}var error16=()=>{let TypeNames={string:{label:"מחרוזת",gender:"f"},number:{label:"מספר",gender:"m"},boolean:{label:"ערך בוליאני",gender:"m"},bigint:{label:"BigInt",gender:"m"},date:{label:"תאריך",gender:"m"},array:{label:"מערך",gender:"m"},object:{label:"אובייקט",gender:"m"},null:{label:"ערך ריק (null)",gender:"m"},undefined:{label:"ערך לא מוגדר (undefined)",gender:"m"},symbol:{label:"סימבול (Symbol)",gender:"m"},function:{label:"פונקציה",gender:"f"},map:{label:"מפה (Map)",gender:"f"},set:{label:"קבוצה (Set)",gender:"f"},file:{label:"קובץ",gender:"m"},promise:{label:"Promise",gender:"m"},NaN:{label:"NaN",gender:"m"},unknown:{label:"ערך לא ידוע",gender:"m"},value:{label:"ערך",gender:"m"}},Sizable={string:{unit:"תווים",shortLabel:"קצר",longLabel:"ארוך"},file:{unit:"בייטים",shortLabel:"קטן",longLabel:"גדול"},array:{unit:"פריטים",shortLabel:"קטן",longLabel:"גדול"},set:{unit:"פריטים",shortLabel:"קטן",longLabel:"גדול"},number:{unit:"",shortLabel:"קטן",longLabel:"גדול"}},typeEntry=t=>t?TypeNames[t]:void 0,typeLabel=t=>{let e=typeEntry(t);return e?e.label:t??TypeNames.unknown.label},withDefinite=t=>`ה${typeLabel(t)}`,verbFor=t=>(typeEntry(t)?.gender??"m")==="f"?"צריכה להיות":"צריך להיות",getSizing=origin=>origin?Sizable[origin]??null:null,FormatDictionary={regex:{label:"קלט",gender:"m"},email:{label:"כתובת אימייל",gender:"f"},url:{label:"כתובת רשת",gender:"f"},emoji:{label:"אימוג'י",gender:"m"},uuid:{label:"UUID",gender:"m"},nanoid:{label:"nanoid",gender:"m"},guid:{label:"GUID",gender:"m"},cuid:{label:"cuid",gender:"m"},cuid2:{label:"cuid2",gender:"m"},ulid:{label:"ULID",gender:"m"},xid:{label:"XID",gender:"m"},ksuid:{label:"KSUID",gender:"m"},datetime:{label:"תאריך וזמן ISO",gender:"m"},date:{label:"תאריך ISO",gender:"m"},time:{label:"זמן ISO",gender:"m"},duration:{label:"משך זמן ISO",gender:"m"},ipv4:{label:"כתובת IPv4",gender:"f"},ipv6:{label:"כתובת IPv6",gender:"f"},cidrv4:{label:"טווח IPv4",gender:"m"},cidrv6:{label:"טווח IPv6",gender:"m"},base64:{label:"מחרוזת בבסיס 64",gender:"f"},base64url:{label:"מחרוזת בבסיס 64 לכתובות רשת",gender:"f"},json_string:{label:"מחרוזת JSON",gender:"f"},e164:{label:"מספר E.164",gender:"m"},jwt:{label:"JWT",gender:"m"},ends_with:{label:"קלט",gender:"m"},includes:{label:"קלט",gender:"m"},lowercase:{label:"קלט",gender:"m"},starts_with:{label:"קלט",gender:"m"},uppercase:{label:"קלט",gender:"m"}},TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{let expectedKey=issue2.expected,expected=TypeDictionary[expectedKey??""]??typeLabel(expectedKey),receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??TypeNames[receivedType]?.label??receivedType;return/^[A-Z]/.test(issue2.expected)?`קלט לא תקין: צריך להיות instanceof ${issue2.expected}, התקבל ${received}`:`קלט לא תקין: צריך להיות ${expected}, התקבל ${received}`}case"invalid_value":{if(issue2.values.length===1)return`ערך לא תקין: הערך חייב להיות ${stringifyPrimitive(issue2.values[0])}`;let stringified=issue2.values.map(v=>stringifyPrimitive(v));if(issue2.values.length===2)return`ערך לא תקין: האפשרויות המתאימות הן ${stringified[0]} או ${stringified[1]}`;let lastValue=stringified[stringified.length-1];return`ערך לא תקין: האפשרויות המתאימות הן ${stringified.slice(0,-1).join(", ")} או ${lastValue}`}case"too_big":{let sizing=getSizing(issue2.origin),subject=withDefinite(issue2.origin??"value");if(issue2.origin==="string")return`${sizing?.longLabel??"ארוך"} מדי: ${subject} צריכה להכיל ${issue2.maximum.toString()} ${sizing?.unit??""} ${issue2.inclusive?"או פחות":"לכל היותר"}`.trim();if(issue2.origin==="number"){let comparison=issue2.inclusive?`קטן או שווה ל-${issue2.maximum}`:`קטן מ-${issue2.maximum}`;return`גדול מדי: ${subject} צריך להיות ${comparison}`}if(issue2.origin==="array"||issue2.origin==="set"){let verb=issue2.origin==="set"?"צריכה":"צריך",comparison=issue2.inclusive?`${issue2.maximum} ${sizing?.unit??""} או פחות`:`פחות מ-${issue2.maximum} ${sizing?.unit??""}`;return`גדול מדי: ${subject} ${verb} להכיל ${comparison}`.trim()}let adj=issue2.inclusive?"<=":"<",be=verbFor(issue2.origin??"value");return sizing?.unit?`${sizing.longLabel} מדי: ${subject} ${be} ${adj}${issue2.maximum.toString()} ${sizing.unit}`:`${sizing?.longLabel??"גדול"} מדי: ${subject} ${be} ${adj}${issue2.maximum.toString()}`}case"too_small":{let sizing=getSizing(issue2.origin),subject=withDefinite(issue2.origin??"value");if(issue2.origin==="string")return`${sizing?.shortLabel??"קצר"} מדי: ${subject} צריכה להכיל ${issue2.minimum.toString()} ${sizing?.unit??""} ${issue2.inclusive?"או יותר":"לפחות"}`.trim();if(issue2.origin==="number"){let comparison=issue2.inclusive?`גדול או שווה ל-${issue2.minimum}`:`גדול מ-${issue2.minimum}`;return`קטן מדי: ${subject} צריך להיות ${comparison}`}if(issue2.origin==="array"||issue2.origin==="set"){let verb=issue2.origin==="set"?"צריכה":"צריך";if(issue2.minimum===1&&issue2.inclusive){let singularPhrase=(issue2.origin==="set","לפחות פריט אחד");return`קטן מדי: ${subject} ${verb} להכיל ${singularPhrase}`}let comparison=issue2.inclusive?`${issue2.minimum} ${sizing?.unit??""} או יותר`:`יותר מ-${issue2.minimum} ${sizing?.unit??""}`;return`קטן מדי: ${subject} ${verb} להכיל ${comparison}`.trim()}let adj=issue2.inclusive?">=":">",be=verbFor(issue2.origin??"value");return sizing?.unit?`${sizing.shortLabel} מדי: ${subject} ${be} ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`${sizing?.shortLabel??"קטן"} מדי: ${subject} ${be} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;if(_issue.format==="starts_with")return`המחרוזת חייבת להתחיל ב "${_issue.prefix}"`;if(_issue.format==="ends_with")return`המחרוזת חייבת להסתיים ב "${_issue.suffix}"`;if(_issue.format==="includes")return`המחרוזת חייבת לכלול "${_issue.includes}"`;if(_issue.format==="regex")return`המחרוזת חייבת להתאים לתבנית ${_issue.pattern}`;let nounEntry=FormatDictionary[_issue.format],noun=nounEntry?.label??_issue.format,adjective=(nounEntry?.gender??"m")==="f"?"תקינה":"תקין";return`${noun} לא ${adjective}`}case"not_multiple_of":return`מספר לא תקין: חייב להיות מכפלה של ${issue2.divisor}`;case"unrecognized_keys":return`מפתח${issue2.keys.length>1?"ות":""} לא מזוה${issue2.keys.length>1?"ים":"ה"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return"שדה לא תקין באובייקט";case"invalid_union":return"קלט לא תקין";case"invalid_element":return`ערך לא תקין ב${withDefinite(issue2.origin??"array")}`;default:return"קלט לא תקין"}}};function he_default(){return{localeError:error16()}}var error17=()=>{let Sizable={string:{unit:"karakter",verb:"legyen"},file:{unit:"byte",verb:"legyen"},array:{unit:"elem",verb:"legyen"},set:{unit:"elem",verb:"legyen"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"bemenet",email:"email cím",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO időbélyeg",date:"ISO dátum",time:"ISO idő",duration:"ISO időintervallum",ipv4:"IPv4 cím",ipv6:"IPv6 cím",cidrv4:"IPv4 tartomány",cidrv6:"IPv6 tartomány",base64:"base64-kódolt string",base64url:"base64url-kódolt string",json_string:"JSON string",e164:"E.164 szám",jwt:"JWT",template_literal:"bemenet"},TypeDictionary={nan:"NaN",number:"szám",array:"tömb"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Érvénytelen bemenet: a várt érték instanceof ${issue2.expected}, a kapott érték ${received}`:`Érvénytelen bemenet: a várt érték ${expected}, a kapott érték ${received}`}case"invalid_value":return issue2.values.length===1?`Érvénytelen bemenet: a várt érték ${stringifyPrimitive(issue2.values[0])}`:`Érvénytelen opció: valamelyik érték várt ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Túl nagy: ${issue2.origin??"érték"} mérete túl nagy ${adj}${issue2.maximum.toString()} ${sizing.unit??"elem"}`:`Túl nagy: a bemeneti érték ${issue2.origin??"érték"} túl nagy: ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Túl kicsi: a bemeneti érték ${issue2.origin} mérete túl kicsi ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Túl kicsi: a bemeneti érték ${issue2.origin} túl kicsi ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Érvénytelen string: "${_issue.prefix}" értékkel kell kezdődnie`:_issue.format==="ends_with"?`Érvénytelen string: "${_issue.suffix}" értékkel kell végződnie`:_issue.format==="includes"?`Érvénytelen string: "${_issue.includes}" értéket kell tartalmaznia`:_issue.format==="regex"?`Érvénytelen string: ${_issue.pattern} mintának kell megfelelnie`:`Érvénytelen ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Érvénytelen szám: ${issue2.divisor} többszörösének kell lennie`;case"unrecognized_keys":return`Ismeretlen kulcs${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Érvénytelen kulcs ${issue2.origin}`;case"invalid_union":return"Érvénytelen bemenet";case"invalid_element":return`Érvénytelen érték: ${issue2.origin}`;default:return"Érvénytelen bemenet"}}};function hu_default(){return{localeError:error17()}}function getArmenianPlural(count,one,many){return Math.abs(count)===1?one:many}function withDefiniteArticle(word){if(!word)return"";let vowels=["ա","ե","ը","ի","ո","ու","օ"],lastChar=word[word.length-1];return word+(vowels.includes(lastChar)?"ն":"ը")}var error18=()=>{let Sizable={string:{unit:{one:"նշան",many:"նշաններ"},verb:"ունենալ"},file:{unit:{one:"բայթ",many:"բայթեր"},verb:"ունենալ"},array:{unit:{one:"տարր",many:"տարրեր"},verb:"ունենալ"},set:{unit:{one:"տարր",many:"տարրեր"},verb:"ունենալ"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"մուտք",email:"էլ. հասցե",url:"URL",emoji:"էմոջի",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO ամսաթիվ և ժամ",date:"ISO ամսաթիվ",time:"ISO ժամ",duration:"ISO տևողություն",ipv4:"IPv4 հասցե",ipv6:"IPv6 հասցե",cidrv4:"IPv4 միջակայք",cidrv6:"IPv6 միջակայք",base64:"base64 ձևաչափով տող",base64url:"base64url ձևաչափով տող",json_string:"JSON տող",e164:"E.164 համար",jwt:"JWT",template_literal:"մուտք"},TypeDictionary={nan:"NaN",number:"թիվ",array:"զանգված"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Սխալ մուտքագրում․ սպասվում էր instanceof ${issue2.expected}, ստացվել է ${received}`:`Սխալ մուտքագրում․ սպասվում էր ${expected}, ստացվել է ${received}`}case"invalid_value":return issue2.values.length===1?`Սխալ մուտքագրում․ սպասվում էր ${stringifyPrimitive(issue2.values[1])}`:`Սխալ տարբերակ․ սպասվում էր հետևյալներից մեկը՝ ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing){let maxValue=Number(issue2.maximum),unit=getArmenianPlural(maxValue,sizing.unit.one,sizing.unit.many);return`Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue2.origin??"արժեք")} կունենա ${adj}${issue2.maximum.toString()} ${unit}`}return`Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue2.origin??"արժեք")} լինի ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing){let minValue=Number(issue2.minimum),unit=getArmenianPlural(minValue,sizing.unit.one,sizing.unit.many);return`Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue2.origin)} կունենա ${adj}${issue2.minimum.toString()} ${unit}`}return`Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue2.origin)} լինի ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Սխալ տող․ պետք է սկսվի "${_issue.prefix}"-ով`:_issue.format==="ends_with"?`Սխալ տող․ պետք է ավարտվի "${_issue.suffix}"-ով`:_issue.format==="includes"?`Սխալ տող․ պետք է պարունակի "${_issue.includes}"`:_issue.format==="regex"?`Սխալ տող․ պետք է համապատասխանի ${_issue.pattern} ձևաչափին`:`Սխալ ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Սխալ թիվ․ պետք է բազմապատիկ լինի ${issue2.divisor}-ի`;case"unrecognized_keys":return`Չճանաչված բանալի${issue2.keys.length>1?"ներ":""}. ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Սխալ բանալի ${withDefiniteArticle(issue2.origin)}-ում`;case"invalid_union":return"Սխալ մուտքագրում";case"invalid_element":return`Սխալ արժեք ${withDefiniteArticle(issue2.origin)}-ում`;default:return"Սխալ մուտքագրում"}}};function hy_default(){return{localeError:error18()}}var error19=()=>{let Sizable={string:{unit:"karakter",verb:"memiliki"},file:{unit:"byte",verb:"memiliki"},array:{unit:"item",verb:"memiliki"},set:{unit:"item",verb:"memiliki"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"input",email:"alamat email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"tanggal dan waktu format ISO",date:"tanggal format ISO",time:"jam format ISO",duration:"durasi format ISO",ipv4:"alamat IPv4",ipv6:"alamat IPv6",cidrv4:"rentang alamat IPv4",cidrv6:"rentang alamat IPv6",base64:"string dengan enkode base64",base64url:"string dengan enkode base64url",json_string:"string JSON",e164:"angka E.164",jwt:"JWT",template_literal:"input"},TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Input tidak valid: diharapkan instanceof ${issue2.expected}, diterima ${received}`:`Input tidak valid: diharapkan ${expected}, diterima ${received}`}case"invalid_value":return issue2.values.length===1?`Input tidak valid: diharapkan ${stringifyPrimitive(issue2.values[0])}`:`Pilihan tidak valid: diharapkan salah satu dari ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Terlalu besar: diharapkan ${issue2.origin??"value"} memiliki ${adj}${issue2.maximum.toString()} ${sizing.unit??"elemen"}`:`Terlalu besar: diharapkan ${issue2.origin??"value"} menjadi ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Terlalu kecil: diharapkan ${issue2.origin} memiliki ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Terlalu kecil: diharapkan ${issue2.origin} menjadi ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`String tidak valid: harus dimulai dengan "${_issue.prefix}"`:_issue.format==="ends_with"?`String tidak valid: harus berakhir dengan "${_issue.suffix}"`:_issue.format==="includes"?`String tidak valid: harus menyertakan "${_issue.includes}"`:_issue.format==="regex"?`String tidak valid: harus sesuai pola ${_issue.pattern}`:`${FormatDictionary[_issue.format]??issue2.format} tidak valid`}case"not_multiple_of":return`Angka tidak valid: harus kelipatan dari ${issue2.divisor}`;case"unrecognized_keys":return`Kunci tidak dikenali ${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Kunci tidak valid di ${issue2.origin}`;case"invalid_union":return"Input tidak valid";case"invalid_element":return`Nilai tidak valid di ${issue2.origin}`;default:return"Input tidak valid"}}};function id_default(){return{localeError:error19()}}var error20=()=>{let Sizable={string:{unit:"stafi",verb:"að hafa"},file:{unit:"bæti",verb:"að hafa"},array:{unit:"hluti",verb:"að hafa"},set:{unit:"hluti",verb:"að hafa"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"gildi",email:"netfang",url:"vefslóð",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dagsetning og tími",date:"ISO dagsetning",time:"ISO tími",duration:"ISO tímalengd",ipv4:"IPv4 address",ipv6:"IPv6 address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded strengur",base64url:"base64url-encoded strengur",json_string:"JSON strengur",e164:"E.164 tölugildi",jwt:"JWT",template_literal:"gildi"},TypeDictionary={nan:"NaN",number:"númer",array:"fylki"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Rangt gildi: Þú slóst inn ${received} þar sem á að vera instanceof ${issue2.expected}`:`Rangt gildi: Þú slóst inn ${received} þar sem á að vera ${expected}`}case"invalid_value":return issue2.values.length===1?`Rangt gildi: gert ráð fyrir ${stringifyPrimitive(issue2.values[0])}`:`Ógilt val: má vera eitt af eftirfarandi ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Of stórt: gert er ráð fyrir að ${issue2.origin??"gildi"} hafi ${adj}${issue2.maximum.toString()} ${sizing.unit??"hluti"}`:`Of stórt: gert er ráð fyrir að ${issue2.origin??"gildi"} sé ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Of lítið: gert er ráð fyrir að ${issue2.origin} hafi ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Of lítið: gert er ráð fyrir að ${issue2.origin} sé ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Ógildur strengur: verður að byrja á "${_issue.prefix}"`:_issue.format==="ends_with"?`Ógildur strengur: verður að enda á "${_issue.suffix}"`:_issue.format==="includes"?`Ógildur strengur: verður að innihalda "${_issue.includes}"`:_issue.format==="regex"?`Ógildur strengur: verður að fylgja mynstri ${_issue.pattern}`:`Rangt ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Röng tala: verður að vera margfeldi af ${issue2.divisor}`;case"unrecognized_keys":return`Óþekkt ${issue2.keys.length>1?"ir lyklar":"ur lykill"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Rangur lykill í ${issue2.origin}`;case"invalid_union":return"Rangt gildi";case"invalid_element":return`Rangt gildi í ${issue2.origin}`;default:return"Rangt gildi"}}};function is_default(){return{localeError:error20()}}var error21=()=>{let Sizable={string:{unit:"caratteri",verb:"avere"},file:{unit:"byte",verb:"avere"},array:{unit:"elementi",verb:"avere"},set:{unit:"elementi",verb:"avere"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"input",email:"indirizzo email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data e ora ISO",date:"data ISO",time:"ora ISO",duration:"durata ISO",ipv4:"indirizzo IPv4",ipv6:"indirizzo IPv6",cidrv4:"intervallo IPv4",cidrv6:"intervallo IPv6",base64:"stringa codificata in base64",base64url:"URL codificata in base64",json_string:"stringa JSON",e164:"numero E.164",jwt:"JWT",template_literal:"input"},TypeDictionary={nan:"NaN",number:"numero",array:"vettore"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Input non valido: atteso instanceof ${issue2.expected}, ricevuto ${received}`:`Input non valido: atteso ${expected}, ricevuto ${received}`}case"invalid_value":return issue2.values.length===1?`Input non valido: atteso ${stringifyPrimitive(issue2.values[0])}`:`Opzione non valida: atteso uno tra ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Troppo grande: ${issue2.origin??"valore"} deve avere ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementi"}`:`Troppo grande: ${issue2.origin??"valore"} deve essere ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Troppo piccolo: ${issue2.origin} deve avere ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Troppo piccolo: ${issue2.origin} deve essere ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Stringa non valida: deve iniziare con "${_issue.prefix}"`:_issue.format==="ends_with"?`Stringa non valida: deve terminare con "${_issue.suffix}"`:_issue.format==="includes"?`Stringa non valida: deve includere "${_issue.includes}"`:_issue.format==="regex"?`Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`:`Invalid ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Numero non valido: deve essere un multiplo di ${issue2.divisor}`;case"unrecognized_keys":return`Chiav${issue2.keys.length>1?"i":"e"} non riconosciut${issue2.keys.length>1?"e":"a"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Chiave non valida in ${issue2.origin}`;case"invalid_union":return"Input non valido";case"invalid_element":return`Valore non valido in ${issue2.origin}`;default:return"Input non valido"}}};function it_default(){return{localeError:error21()}}var error22=()=>{let Sizable={string:{unit:"文字",verb:"である"},file:{unit:"バイト",verb:"である"},array:{unit:"要素",verb:"である"},set:{unit:"要素",verb:"である"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"入力値",email:"メールアドレス",url:"URL",emoji:"絵文字",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO日時",date:"ISO日付",time:"ISO時刻",duration:"ISO期間",ipv4:"IPv4アドレス",ipv6:"IPv6アドレス",cidrv4:"IPv4範囲",cidrv6:"IPv6範囲",base64:"base64エンコード文字列",base64url:"base64urlエンコード文字列",json_string:"JSON文字列",e164:"E.164番号",jwt:"JWT",template_literal:"入力値"},TypeDictionary={nan:"NaN",number:"数値",array:"配列"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`無効な入力: instanceof ${issue2.expected}が期待されましたが、${received}が入力されました`:`無効な入力: ${expected}が期待されましたが、${received}が入力されました`}case"invalid_value":return issue2.values.length===1?`無効な入力: ${stringifyPrimitive(issue2.values[0])}が期待されました`:`無効な選択: ${joinValues(issue2.values,"、")}のいずれかである必要があります`;case"too_big":{let adj=issue2.inclusive?"以下である":"より小さい",sizing=getSizing(issue2.origin);return sizing?`大きすぎる値: ${issue2.origin??"値"}は${issue2.maximum.toString()}${sizing.unit??"要素"}${adj}必要があります`:`大きすぎる値: ${issue2.origin??"値"}は${issue2.maximum.toString()}${adj}必要があります`}case"too_small":{let adj=issue2.inclusive?"以上である":"より大きい",sizing=getSizing(issue2.origin);return sizing?`小さすぎる値: ${issue2.origin}は${issue2.minimum.toString()}${sizing.unit}${adj}必要があります`:`小さすぎる値: ${issue2.origin}は${issue2.minimum.toString()}${adj}必要があります`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`無効な文字列: "${_issue.prefix}"で始まる必要があります`:_issue.format==="ends_with"?`無効な文字列: "${_issue.suffix}"で終わる必要があります`:_issue.format==="includes"?`無効な文字列: "${_issue.includes}"を含む必要があります`:_issue.format==="regex"?`無効な文字列: パターン${_issue.pattern}に一致する必要があります`:`無効な${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`無効な数値: ${issue2.divisor}の倍数である必要があります`;case"unrecognized_keys":return`認識されていないキー${issue2.keys.length>1?"群":""}: ${joinValues(issue2.keys,"、")}`;case"invalid_key":return`${issue2.origin}内の無効なキー`;case"invalid_union":return"無効な入力";case"invalid_element":return`${issue2.origin}内の無効な値`;default:return"無効な入力"}}};function ja_default(){return{localeError:error22()}}var error23=()=>{let Sizable={string:{unit:"სიმბოლო",verb:"უნდა შეიცავდეს"},file:{unit:"ბაიტი",verb:"უნდა შეიცავდეს"},array:{unit:"ელემენტი",verb:"უნდა შეიცავდეს"},set:{unit:"ელემენტი",verb:"უნდა შეიცავდეს"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"შეყვანა",email:"ელ-ფოსტის მისამართი",url:"URL",emoji:"ემოჯი",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"თარიღი-დრო",date:"თარიღი",time:"დრო",duration:"ხანგრძლივობა",ipv4:"IPv4 მისამართი",ipv6:"IPv6 მისამართი",cidrv4:"IPv4 დიაპაზონი",cidrv6:"IPv6 დიაპაზონი",base64:"base64-კოდირებული სტრინგი",base64url:"base64url-კოდირებული სტრინგი",json_string:"JSON სტრინგი",e164:"E.164 ნომერი",jwt:"JWT",template_literal:"შეყვანა"},TypeDictionary={nan:"NaN",number:"რიცხვი",string:"სტრინგი",boolean:"ბულეანი",function:"ფუნქცია",array:"მასივი"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`არასწორი შეყვანა: მოსალოდნელი instanceof ${issue2.expected}, მიღებული ${received}`:`არასწორი შეყვანა: მოსალოდნელი ${expected}, მიღებული ${received}`}case"invalid_value":return issue2.values.length===1?`არასწორი შეყვანა: მოსალოდნელი ${stringifyPrimitive(issue2.values[0])}`:`არასწორი ვარიანტი: მოსალოდნელია ერთ-ერთი ${joinValues(issue2.values,"|")}-დან`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`ზედმეტად დიდი: მოსალოდნელი ${issue2.origin??"მნიშვნელობა"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit}`:`ზედმეტად დიდი: მოსალოდნელი ${issue2.origin??"მნიშვნელობა"} იყოს ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`ზედმეტად პატარა: მოსალოდნელი ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`ზედმეტად პატარა: მოსალოდნელი ${issue2.origin} იყოს ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`არასწორი სტრინგი: უნდა იწყებოდეს "${_issue.prefix}"-ით`:_issue.format==="ends_with"?`არასწორი სტრინგი: უნდა მთავრდებოდეს "${_issue.suffix}"-ით`:_issue.format==="includes"?`არასწორი სტრინგი: უნდა შეიცავდეს "${_issue.includes}"-ს`:_issue.format==="regex"?`არასწორი სტრინგი: უნდა შეესაბამებოდეს შაბლონს ${_issue.pattern}`:`არასწორი ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`არასწორი რიცხვი: უნდა იყოს ${issue2.divisor}-ის ჯერადი`;case"unrecognized_keys":return`უცნობი გასაღებ${issue2.keys.length>1?"ები":"ი"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`არასწორი გასაღები ${issue2.origin}-ში`;case"invalid_union":return"არასწორი შეყვანა";case"invalid_element":return`არასწორი მნიშვნელობა ${issue2.origin}-ში`;default:return"არასწორი შეყვანა"}}};function ka_default(){return{localeError:error23()}}var error24=()=>{let Sizable={string:{unit:"តួអក្សរ",verb:"គួរមាន"},file:{unit:"បៃ",verb:"គួរមាន"},array:{unit:"ធាតុ",verb:"គួរមាន"},set:{unit:"ធាតុ",verb:"គួរមាន"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"ទិន្នន័យបញ្ចូល",email:"អាសយដ្ឋានអ៊ីមែល",url:"URL",emoji:"សញ្ញាអារម្មណ៍",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"កាលបរិច្ឆេទ និងម៉ោង ISO",date:"កាលបរិច្ឆេទ ISO",time:"ម៉ោង ISO",duration:"រយៈពេល ISO",ipv4:"អាសយដ្ឋាន IPv4",ipv6:"អាសយដ្ឋាន IPv6",cidrv4:"ដែនអាសយដ្ឋាន IPv4",cidrv6:"ដែនអាសយដ្ឋាន IPv6",base64:"ខ្សែអក្សរអ៊ិកូដ base64",base64url:"ខ្សែអក្សរអ៊ិកូដ base64url",json_string:"ខ្សែអក្សរ JSON",e164:"លេខ E.164",jwt:"JWT",template_literal:"ទិន្នន័យបញ្ចូល"},TypeDictionary={nan:"NaN",number:"លេខ",array:"អារេ (Array)",null:"គ្មានតម្លៃ (null)"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ instanceof ${issue2.expected} ប៉ុន្តែទទួលបាន ${received}`:`ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${expected} ប៉ុន្តែទទួលបាន ${received}`}case"invalid_value":return issue2.values.length===1?`ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${stringifyPrimitive(issue2.values[0])}`:`ជម្រើសមិនត្រឹមត្រូវ៖ ត្រូវជាមួយក្នុងចំណោម ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`ធំពេក៖ ត្រូវការ ${issue2.origin??"តម្លៃ"} ${adj} ${issue2.maximum.toString()} ${sizing.unit??"ធាតុ"}`:`ធំពេក៖ ត្រូវការ ${issue2.origin??"តម្លៃ"} ${adj} ${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`តូចពេក៖ ត្រូវការ ${issue2.origin} ${adj} ${issue2.minimum.toString()} ${sizing.unit}`:`តូចពេក៖ ត្រូវការ ${issue2.origin} ${adj} ${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវចាប់ផ្តើមដោយ "${_issue.prefix}"`:_issue.format==="ends_with"?`ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវបញ្ចប់ដោយ "${_issue.suffix}"`:_issue.format==="includes"?`ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវមាន "${_issue.includes}"`:_issue.format==="regex"?`ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវតែផ្គូផ្គងនឹងទម្រង់ដែលបានកំណត់ ${_issue.pattern}`:`មិនត្រឹមត្រូវ៖ ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`លេខមិនត្រឹមត្រូវ៖ ត្រូវតែជាពហុគុណនៃ ${issue2.divisor}`;case"unrecognized_keys":return`រកឃើញសោមិនស្គាល់៖ ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`សោមិនត្រឹមត្រូវនៅក្នុង ${issue2.origin}`;case"invalid_union":return"ទិន្នន័យមិនត្រឹមត្រូវ";case"invalid_element":return`ទិន្នន័យមិនត្រឹមត្រូវនៅក្នុង ${issue2.origin}`;default:return"ទិន្នន័យមិនត្រឹមត្រូវ"}}};function km_default(){return{localeError:error24()}}function kh_default(){return km_default()}var error25=()=>{let Sizable={string:{unit:"문자",verb:"to have"},file:{unit:"바이트",verb:"to have"},array:{unit:"개",verb:"to have"},set:{unit:"개",verb:"to have"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"입력",email:"이메일 주소",url:"URL",emoji:"이모지",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO 날짜시간",date:"ISO 날짜",time:"ISO 시간",duration:"ISO 기간",ipv4:"IPv4 주소",ipv6:"IPv6 주소",cidrv4:"IPv4 범위",cidrv6:"IPv6 범위",base64:"base64 인코딩 문자열",base64url:"base64url 인코딩 문자열",json_string:"JSON 문자열",e164:"E.164 번호",jwt:"JWT",template_literal:"입력"},TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`잘못된 입력: 예상 타입은 instanceof ${issue2.expected}, 받은 타입은 ${received}입니다`:`잘못된 입력: 예상 타입은 ${expected}, 받은 타입은 ${received}입니다`}case"invalid_value":return issue2.values.length===1?`잘못된 입력: 값은 ${stringifyPrimitive(issue2.values[0])} 이어야 합니다`:`잘못된 옵션: ${joinValues(issue2.values,"또는 ")} 중 하나여야 합니다`;case"too_big":{let adj=issue2.inclusive?"이하":"미만",suffix=adj==="미만"?"이어야 합니다":"여야 합니다",sizing=getSizing(issue2.origin),unit=sizing?.unit??"요소";return sizing?`${issue2.origin??"값"}이 너무 큽니다: ${issue2.maximum.toString()}${unit} ${adj}${suffix}`:`${issue2.origin??"값"}이 너무 큽니다: ${issue2.maximum.toString()} ${adj}${suffix}`}case"too_small":{let adj=issue2.inclusive?"이상":"초과",suffix=adj==="이상"?"이어야 합니다":"여야 합니다",sizing=getSizing(issue2.origin),unit=sizing?.unit??"요소";return sizing?`${issue2.origin??"값"}이 너무 작습니다: ${issue2.minimum.toString()}${unit} ${adj}${suffix}`:`${issue2.origin??"값"}이 너무 작습니다: ${issue2.minimum.toString()} ${adj}${suffix}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`잘못된 문자열: "${_issue.prefix}"(으)로 시작해야 합니다`:_issue.format==="ends_with"?`잘못된 문자열: "${_issue.suffix}"(으)로 끝나야 합니다`:_issue.format==="includes"?`잘못된 문자열: "${_issue.includes}"을(를) 포함해야 합니다`:_issue.format==="regex"?`잘못된 문자열: 정규식 ${_issue.pattern} 패턴과 일치해야 합니다`:`잘못된 ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`잘못된 숫자: ${issue2.divisor}의 배수여야 합니다`;case"unrecognized_keys":return`인식할 수 없는 키: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`잘못된 키: ${issue2.origin}`;case"invalid_union":return"잘못된 입력";case"invalid_element":return`잘못된 값: ${issue2.origin}`;default:return"잘못된 입력"}}};function ko_default(){return{localeError:error25()}}var capitalizeFirstCharacter=text=>text.charAt(0).toUpperCase()+text.slice(1);function getUnitTypeFromNumber(number4){let abs=Math.abs(number4),last=abs%10,last2=abs%100;return last2>=11&&last2<=19||last===0?"many":last===1?"one":"few"}var error26=()=>{let Sizable={string:{unit:{one:"simbolis",few:"simboliai",many:"simbolių"},verb:{smaller:{inclusive:"turi būti ne ilgesnė kaip",notInclusive:"turi būti trumpesnė kaip"},bigger:{inclusive:"turi būti ne trumpesnė kaip",notInclusive:"turi būti ilgesnė kaip"}}},file:{unit:{one:"baitas",few:"baitai",many:"baitų"},verb:{smaller:{inclusive:"turi būti ne didesnis kaip",notInclusive:"turi būti mažesnis kaip"},bigger:{inclusive:"turi būti ne mažesnis kaip",notInclusive:"turi būti didesnis kaip"}}},array:{unit:{one:"elementą",few:"elementus",many:"elementų"},verb:{smaller:{inclusive:"turi turėti ne daugiau kaip",notInclusive:"turi turėti mažiau kaip"},bigger:{inclusive:"turi turėti ne mažiau kaip",notInclusive:"turi turėti daugiau kaip"}}},set:{unit:{one:"elementą",few:"elementus",many:"elementų"},verb:{smaller:{inclusive:"turi turėti ne daugiau kaip",notInclusive:"turi turėti mažiau kaip"},bigger:{inclusive:"turi turėti ne mažiau kaip",notInclusive:"turi turėti daugiau kaip"}}}};function getSizing(origin,unitType,inclusive,targetShouldBe){let result=Sizable[origin]??null;return result===null?result:{unit:result.unit[unitType],verb:result.verb[targetShouldBe][inclusive?"inclusive":"notInclusive"]}}let FormatDictionary={regex:"įvestis",email:"el. pašto adresas",url:"URL",emoji:"jaustukas",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO data ir laikas",date:"ISO data",time:"ISO laikas",duration:"ISO trukmė",ipv4:"IPv4 adresas",ipv6:"IPv6 adresas",cidrv4:"IPv4 tinklo prefiksas (CIDR)",cidrv6:"IPv6 tinklo prefiksas (CIDR)",base64:"base64 užkoduota eilutė",base64url:"base64url užkoduota eilutė",json_string:"JSON eilutė",e164:"E.164 numeris",jwt:"JWT",template_literal:"įvestis"},TypeDictionary={nan:"NaN",number:"skaičius",bigint:"sveikasis skaičius",string:"eilutė",boolean:"loginė reikšmė",undefined:"neapibrėžta reikšmė",function:"funkcija",symbol:"simbolis",array:"masyvas",object:"objektas",null:"nulinė reikšmė"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Gautas tipas ${received}, o tikėtasi - instanceof ${issue2.expected}`:`Gautas tipas ${received}, o tikėtasi - ${expected}`}case"invalid_value":return issue2.values.length===1?`Privalo būti ${stringifyPrimitive(issue2.values[0])}`:`Privalo būti vienas iš ${joinValues(issue2.values,"|")} pasirinkimų`;case"too_big":{let origin=TypeDictionary[issue2.origin]??issue2.origin,sizing=getSizing(issue2.origin,getUnitTypeFromNumber(Number(issue2.maximum)),issue2.inclusive??!1,"smaller");if(sizing?.verb)return`${capitalizeFirstCharacter(origin??issue2.origin??"reikšmė")} ${sizing.verb} ${issue2.maximum.toString()} ${sizing.unit??"elementų"}`;let adj=issue2.inclusive?"ne didesnis kaip":"mažesnis kaip";return`${capitalizeFirstCharacter(origin??issue2.origin??"reikšmė")} turi būti ${adj} ${issue2.maximum.toString()} ${sizing?.unit}`}case"too_small":{let origin=TypeDictionary[issue2.origin]??issue2.origin,sizing=getSizing(issue2.origin,getUnitTypeFromNumber(Number(issue2.minimum)),issue2.inclusive??!1,"bigger");if(sizing?.verb)return`${capitalizeFirstCharacter(origin??issue2.origin??"reikšmė")} ${sizing.verb} ${issue2.minimum.toString()} ${sizing.unit??"elementų"}`;let adj=issue2.inclusive?"ne mažesnis kaip":"didesnis kaip";return`${capitalizeFirstCharacter(origin??issue2.origin??"reikšmė")} turi būti ${adj} ${issue2.minimum.toString()} ${sizing?.unit}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Eilutė privalo prasidėti "${_issue.prefix}"`:_issue.format==="ends_with"?`Eilutė privalo pasibaigti "${_issue.suffix}"`:_issue.format==="includes"?`Eilutė privalo įtraukti "${_issue.includes}"`:_issue.format==="regex"?`Eilutė privalo atitikti ${_issue.pattern}`:`Neteisingas ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Skaičius privalo būti ${issue2.divisor} kartotinis.`;case"unrecognized_keys":return`Neatpažint${issue2.keys.length>1?"i":"as"} rakt${issue2.keys.length>1?"ai":"as"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return"Rastas klaidingas raktas";case"invalid_union":return"Klaidinga įvestis";case"invalid_element":{let origin=TypeDictionary[issue2.origin]??issue2.origin;return`${capitalizeFirstCharacter(origin??issue2.origin??"reikšmė")} turi klaidingą įvestį`}default:return"Klaidinga įvestis"}}};function lt_default(){return{localeError:error26()}}var error27=()=>{let Sizable={string:{unit:"знаци",verb:"да имаат"},file:{unit:"бајти",verb:"да имаат"},array:{unit:"ставки",verb:"да имаат"},set:{unit:"ставки",verb:"да имаат"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"внес",email:"адреса на е-пошта",url:"URL",emoji:"емоџи",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO датум и време",date:"ISO датум",time:"ISO време",duration:"ISO времетраење",ipv4:"IPv4 адреса",ipv6:"IPv6 адреса",cidrv4:"IPv4 опсег",cidrv6:"IPv6 опсег",base64:"base64-енкодирана низа",base64url:"base64url-енкодирана низа",json_string:"JSON низа",e164:"E.164 број",jwt:"JWT",template_literal:"внес"},TypeDictionary={nan:"NaN",number:"број",array:"низа"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Грешен внес: се очекува instanceof ${issue2.expected}, примено ${received}`:`Грешен внес: се очекува ${expected}, примено ${received}`}case"invalid_value":return issue2.values.length===1?`Invalid input: expected ${stringifyPrimitive(issue2.values[0])}`:`Грешана опција: се очекува една ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Премногу голем: се очекува ${issue2.origin??"вредноста"} да има ${adj}${issue2.maximum.toString()} ${sizing.unit??"елементи"}`:`Премногу голем: се очекува ${issue2.origin??"вредноста"} да биде ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Премногу мал: се очекува ${issue2.origin} да има ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Премногу мал: се очекува ${issue2.origin} да биде ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Неважечка низа: мора да започнува со "${_issue.prefix}"`:_issue.format==="ends_with"?`Неважечка низа: мора да завршува со "${_issue.suffix}"`:_issue.format==="includes"?`Неважечка низа: мора да вклучува "${_issue.includes}"`:_issue.format==="regex"?`Неважечка низа: мора да одгоара на патернот ${_issue.pattern}`:`Invalid ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Грешен број: мора да биде делив со ${issue2.divisor}`;case"unrecognized_keys":return`${issue2.keys.length>1?"Непрепознаени клучеви":"Непрепознаен клуч"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Грешен клуч во ${issue2.origin}`;case"invalid_union":return"Грешен внес";case"invalid_element":return`Грешна вредност во ${issue2.origin}`;default:return"Грешен внес"}}};function mk_default(){return{localeError:error27()}}var error28=()=>{let Sizable={string:{unit:"aksara",verb:"mempunyai"},file:{unit:"bait",verb:"mempunyai"},array:{unit:"elemen",verb:"mempunyai"},set:{unit:"elemen",verb:"mempunyai"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"input",email:"alamat e-mel",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"tarikh masa ISO",date:"tarikh ISO",time:"masa ISO",duration:"tempoh ISO",ipv4:"alamat IPv4",ipv6:"alamat IPv6",cidrv4:"julat IPv4",cidrv6:"julat IPv6",base64:"string dikodkan base64",base64url:"string dikodkan base64url",json_string:"string JSON",e164:"nombor E.164",jwt:"JWT",template_literal:"input"},TypeDictionary={nan:"NaN",number:"nombor"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Input tidak sah: dijangka instanceof ${issue2.expected}, diterima ${received}`:`Input tidak sah: dijangka ${expected}, diterima ${received}`}case"invalid_value":return issue2.values.length===1?`Input tidak sah: dijangka ${stringifyPrimitive(issue2.values[0])}`:`Pilihan tidak sah: dijangka salah satu daripada ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Terlalu besar: dijangka ${issue2.origin??"nilai"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit??"elemen"}`:`Terlalu besar: dijangka ${issue2.origin??"nilai"} adalah ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Terlalu kecil: dijangka ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Terlalu kecil: dijangka ${issue2.origin} adalah ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`String tidak sah: mesti bermula dengan "${_issue.prefix}"`:_issue.format==="ends_with"?`String tidak sah: mesti berakhir dengan "${_issue.suffix}"`:_issue.format==="includes"?`String tidak sah: mesti mengandungi "${_issue.includes}"`:_issue.format==="regex"?`String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`:`${FormatDictionary[_issue.format]??issue2.format} tidak sah`}case"not_multiple_of":return`Nombor tidak sah: perlu gandaan ${issue2.divisor}`;case"unrecognized_keys":return`Kunci tidak dikenali: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Kunci tidak sah dalam ${issue2.origin}`;case"invalid_union":return"Input tidak sah";case"invalid_element":return`Nilai tidak sah dalam ${issue2.origin}`;default:return"Input tidak sah"}}};function ms_default(){return{localeError:error28()}}var error29=()=>{let Sizable={string:{unit:"tekens",verb:"heeft"},file:{unit:"bytes",verb:"heeft"},array:{unit:"elementen",verb:"heeft"},set:{unit:"elementen",verb:"heeft"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"invoer",email:"emailadres",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum en tijd",date:"ISO datum",time:"ISO tijd",duration:"ISO duur",ipv4:"IPv4-adres",ipv6:"IPv6-adres",cidrv4:"IPv4-bereik",cidrv6:"IPv6-bereik",base64:"base64-gecodeerde tekst",base64url:"base64 URL-gecodeerde tekst",json_string:"JSON string",e164:"E.164-nummer",jwt:"JWT",template_literal:"invoer"},TypeDictionary={nan:"NaN",number:"getal"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Ongeldige invoer: verwacht instanceof ${issue2.expected}, ontving ${received}`:`Ongeldige invoer: verwacht ${expected}, ontving ${received}`}case"invalid_value":return issue2.values.length===1?`Ongeldige invoer: verwacht ${stringifyPrimitive(issue2.values[0])}`:`Ongeldige optie: verwacht één van ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin),longName=issue2.origin==="date"?"laat":issue2.origin==="string"?"lang":"groot";return sizing?`Te ${longName}: verwacht dat ${issue2.origin??"waarde"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementen"} ${sizing.verb}`:`Te ${longName}: verwacht dat ${issue2.origin??"waarde"} ${adj}${issue2.maximum.toString()} is`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin),shortName=issue2.origin==="date"?"vroeg":issue2.origin==="string"?"kort":"klein";return sizing?`Te ${shortName}: verwacht dat ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} ${sizing.verb}`:`Te ${shortName}: verwacht dat ${issue2.origin} ${adj}${issue2.minimum.toString()} is`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Ongeldige tekst: moet met "${_issue.prefix}" beginnen`:_issue.format==="ends_with"?`Ongeldige tekst: moet op "${_issue.suffix}" eindigen`:_issue.format==="includes"?`Ongeldige tekst: moet "${_issue.includes}" bevatten`:_issue.format==="regex"?`Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`:`Ongeldig: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Ongeldig getal: moet een veelvoud van ${issue2.divisor} zijn`;case"unrecognized_keys":return`Onbekende key${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Ongeldige key in ${issue2.origin}`;case"invalid_union":return"Ongeldige invoer";case"invalid_element":return`Ongeldige waarde in ${issue2.origin}`;default:return"Ongeldige invoer"}}};function nl_default(){return{localeError:error29()}}var error30=()=>{let Sizable={string:{unit:"tegn",verb:"å ha"},file:{unit:"bytes",verb:"å ha"},array:{unit:"elementer",verb:"å inneholde"},set:{unit:"elementer",verb:"å inneholde"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"input",email:"e-postadresse",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dato- og klokkeslett",date:"ISO-dato",time:"ISO-klokkeslett",duration:"ISO-varighet",ipv4:"IPv4-område",ipv6:"IPv6-område",cidrv4:"IPv4-spekter",cidrv6:"IPv6-spekter",base64:"base64-enkodet streng",base64url:"base64url-enkodet streng",json_string:"JSON-streng",e164:"E.164-nummer",jwt:"JWT",template_literal:"input"},TypeDictionary={nan:"NaN",number:"tall",array:"liste"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Ugyldig input: forventet instanceof ${issue2.expected}, fikk ${received}`:`Ugyldig input: forventet ${expected}, fikk ${received}`}case"invalid_value":return issue2.values.length===1?`Ugyldig verdi: forventet ${stringifyPrimitive(issue2.values[0])}`:`Ugyldig valg: forventet en av ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`For stor(t): forventet ${issue2.origin??"value"} til å ha ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementer"}`:`For stor(t): forventet ${issue2.origin??"value"} til å ha ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`For lite(n): forventet ${issue2.origin} til å ha ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`For lite(n): forventet ${issue2.origin} til å ha ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Ugyldig streng: må starte med "${_issue.prefix}"`:_issue.format==="ends_with"?`Ugyldig streng: må ende med "${_issue.suffix}"`:_issue.format==="includes"?`Ugyldig streng: må inneholde "${_issue.includes}"`:_issue.format==="regex"?`Ugyldig streng: må matche mønsteret ${_issue.pattern}`:`Ugyldig ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Ugyldig tall: må være et multiplum av ${issue2.divisor}`;case"unrecognized_keys":return`${issue2.keys.length>1?"Ukjente nøkler":"Ukjent nøkkel"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Ugyldig nøkkel i ${issue2.origin}`;case"invalid_union":return"Ugyldig input";case"invalid_element":return`Ugyldig verdi i ${issue2.origin}`;default:return"Ugyldig input"}}};function no_default(){return{localeError:error30()}}var error31=()=>{let Sizable={string:{unit:"harf",verb:"olmalıdır"},file:{unit:"bayt",verb:"olmalıdır"},array:{unit:"unsur",verb:"olmalıdır"},set:{unit:"unsur",verb:"olmalıdır"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"giren",email:"epostagâh",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO hengâmı",date:"ISO tarihi",time:"ISO zamanı",duration:"ISO müddeti",ipv4:"IPv4 nişânı",ipv6:"IPv6 nişânı",cidrv4:"IPv4 menzili",cidrv6:"IPv6 menzili",base64:"base64-şifreli metin",base64url:"base64url-şifreli metin",json_string:"JSON metin",e164:"E.164 sayısı",jwt:"JWT",template_literal:"giren"},TypeDictionary={nan:"NaN",number:"numara",array:"saf",null:"gayb"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Fâsit giren: umulan instanceof ${issue2.expected}, alınan ${received}`:`Fâsit giren: umulan ${expected}, alınan ${received}`}case"invalid_value":return issue2.values.length===1?`Fâsit giren: umulan ${stringifyPrimitive(issue2.values[0])}`:`Fâsit tercih: mûteberler ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Fazla büyük: ${issue2.origin??"value"}, ${adj}${issue2.maximum.toString()} ${sizing.unit??"elements"} sahip olmalıydı.`:`Fazla büyük: ${issue2.origin??"value"}, ${adj}${issue2.maximum.toString()} olmalıydı.`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Fazla küçük: ${issue2.origin}, ${adj}${issue2.minimum.toString()} ${sizing.unit} sahip olmalıydı.`:`Fazla küçük: ${issue2.origin}, ${adj}${issue2.minimum.toString()} olmalıydı.`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Fâsit metin: "${_issue.prefix}" ile başlamalı.`:_issue.format==="ends_with"?`Fâsit metin: "${_issue.suffix}" ile bitmeli.`:_issue.format==="includes"?`Fâsit metin: "${_issue.includes}" ihtivâ etmeli.`:_issue.format==="regex"?`Fâsit metin: ${_issue.pattern} nakşına uymalı.`:`Fâsit ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Fâsit sayı: ${issue2.divisor} katı olmalıydı.`;case"unrecognized_keys":return`Tanınmayan anahtar ${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} için tanınmayan anahtar var.`;case"invalid_union":return"Giren tanınamadı.";case"invalid_element":return`${issue2.origin} için tanınmayan kıymet var.`;default:return"Kıymet tanınamadı."}}};function ota_default(){return{localeError:error31()}}var error32=()=>{let Sizable={string:{unit:"توکي",verb:"ولري"},file:{unit:"بایټس",verb:"ولري"},array:{unit:"توکي",verb:"ولري"},set:{unit:"توکي",verb:"ولري"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"ورودي",email:"بریښنالیک",url:"یو آر ال",emoji:"ایموجي",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"نیټه او وخت",date:"نېټه",time:"وخت",duration:"موده",ipv4:"د IPv4 پته",ipv6:"د IPv6 پته",cidrv4:"د IPv4 ساحه",cidrv6:"د IPv6 ساحه",base64:"base64-encoded متن",base64url:"base64url-encoded متن",json_string:"JSON متن",e164:"د E.164 شمېره",jwt:"JWT",template_literal:"ورودي"},TypeDictionary={nan:"NaN",number:"عدد",array:"ارې"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`ناسم ورودي: باید instanceof ${issue2.expected} وای, مګر ${received} ترلاسه شو`:`ناسم ورودي: باید ${expected} وای, مګر ${received} ترلاسه شو`}case"invalid_value":return issue2.values.length===1?`ناسم ورودي: باید ${stringifyPrimitive(issue2.values[0])} وای`:`ناسم انتخاب: باید یو له ${joinValues(issue2.values,"|")} څخه وای`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`ډیر لوی: ${issue2.origin??"ارزښت"} باید ${adj}${issue2.maximum.toString()} ${sizing.unit??"عنصرونه"} ولري`:`ډیر لوی: ${issue2.origin??"ارزښت"} باید ${adj}${issue2.maximum.toString()} وي`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`ډیر کوچنی: ${issue2.origin} باید ${adj}${issue2.minimum.toString()} ${sizing.unit} ولري`:`ډیر کوچنی: ${issue2.origin} باید ${adj}${issue2.minimum.toString()} وي`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`ناسم متن: باید د "${_issue.prefix}" سره پیل شي`:_issue.format==="ends_with"?`ناسم متن: باید د "${_issue.suffix}" سره پای ته ورسيږي`:_issue.format==="includes"?`ناسم متن: باید "${_issue.includes}" ولري`:_issue.format==="regex"?`ناسم متن: باید د ${_issue.pattern} سره مطابقت ولري`:`${FormatDictionary[_issue.format]??issue2.format} ناسم دی`}case"not_multiple_of":return`ناسم عدد: باید د ${issue2.divisor} مضرب وي`;case"unrecognized_keys":return`ناسم ${issue2.keys.length>1?"کلیډونه":"کلیډ"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`ناسم کلیډ په ${issue2.origin} کې`;case"invalid_union":return"ناسمه ورودي";case"invalid_element":return`ناسم عنصر په ${issue2.origin} کې`;default:return"ناسمه ورودي"}}};function ps_default(){return{localeError:error32()}}var error33=()=>{let Sizable={string:{unit:"znaków",verb:"mieć"},file:{unit:"bajtów",verb:"mieć"},array:{unit:"elementów",verb:"mieć"},set:{unit:"elementów",verb:"mieć"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"wyrażenie",email:"adres email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data i godzina w formacie ISO",date:"data w formacie ISO",time:"godzina w formacie ISO",duration:"czas trwania ISO",ipv4:"adres IPv4",ipv6:"adres IPv6",cidrv4:"zakres IPv4",cidrv6:"zakres IPv6",base64:"ciąg znaków zakodowany w formacie base64",base64url:"ciąg znaków zakodowany w formacie base64url",json_string:"ciąg znaków w formacie JSON",e164:"liczba E.164",jwt:"JWT",template_literal:"wejście"},TypeDictionary={nan:"NaN",number:"liczba",array:"tablica"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Nieprawidłowe dane wejściowe: oczekiwano instanceof ${issue2.expected}, otrzymano ${received}`:`Nieprawidłowe dane wejściowe: oczekiwano ${expected}, otrzymano ${received}`}case"invalid_value":return issue2.values.length===1?`Nieprawidłowe dane wejściowe: oczekiwano ${stringifyPrimitive(issue2.values[0])}`:`Nieprawidłowa opcja: oczekiwano jednej z wartości ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Za duża wartość: oczekiwano, że ${issue2.origin??"wartość"} będzie mieć ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementów"}`:`Zbyt duż(y/a/e): oczekiwano, że ${issue2.origin??"wartość"} będzie wynosić ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Za mała wartość: oczekiwano, że ${issue2.origin??"wartość"} będzie mieć ${adj}${issue2.minimum.toString()} ${sizing.unit??"elementów"}`:`Zbyt mał(y/a/e): oczekiwano, że ${issue2.origin??"wartość"} będzie wynosić ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Nieprawidłowy ciąg znaków: musi zaczynać się od "${_issue.prefix}"`:_issue.format==="ends_with"?`Nieprawidłowy ciąg znaków: musi kończyć się na "${_issue.suffix}"`:_issue.format==="includes"?`Nieprawidłowy ciąg znaków: musi zawierać "${_issue.includes}"`:_issue.format==="regex"?`Nieprawidłowy ciąg znaków: musi odpowiadać wzorcowi ${_issue.pattern}`:`Nieprawidłow(y/a/e) ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Nieprawidłowa liczba: musi być wielokrotnością ${issue2.divisor}`;case"unrecognized_keys":return`Nierozpoznane klucze${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Nieprawidłowy klucz w ${issue2.origin}`;case"invalid_union":return"Nieprawidłowe dane wejściowe";case"invalid_element":return`Nieprawidłowa wartość w ${issue2.origin}`;default:return"Nieprawidłowe dane wejściowe"}}};function pl_default(){return{localeError:error33()}}var error34=()=>{let Sizable={string:{unit:"caracteres",verb:"ter"},file:{unit:"bytes",verb:"ter"},array:{unit:"itens",verb:"ter"},set:{unit:"itens",verb:"ter"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"padrão",email:"endereço de e-mail",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data e hora ISO",date:"data ISO",time:"hora ISO",duration:"duração ISO",ipv4:"endereço IPv4",ipv6:"endereço IPv6",cidrv4:"faixa de IPv4",cidrv6:"faixa de IPv6",base64:"texto codificado em base64",base64url:"URL codificada em base64",json_string:"texto JSON",e164:"número E.164",jwt:"JWT",template_literal:"entrada"},TypeDictionary={nan:"NaN",number:"número",null:"nulo"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Tipo inválido: esperado instanceof ${issue2.expected}, recebido ${received}`:`Tipo inválido: esperado ${expected}, recebido ${received}`}case"invalid_value":return issue2.values.length===1?`Entrada inválida: esperado ${stringifyPrimitive(issue2.values[0])}`:`Opção inválida: esperada uma das ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Muito grande: esperado que ${issue2.origin??"valor"} tivesse ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementos"}`:`Muito grande: esperado que ${issue2.origin??"valor"} fosse ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Muito pequeno: esperado que ${issue2.origin} tivesse ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Muito pequeno: esperado que ${issue2.origin} fosse ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Texto inválido: deve começar com "${_issue.prefix}"`:_issue.format==="ends_with"?`Texto inválido: deve terminar com "${_issue.suffix}"`:_issue.format==="includes"?`Texto inválido: deve incluir "${_issue.includes}"`:_issue.format==="regex"?`Texto inválido: deve corresponder ao padrão ${_issue.pattern}`:`${FormatDictionary[_issue.format]??issue2.format} inválido`}case"not_multiple_of":return`Número inválido: deve ser múltiplo de ${issue2.divisor}`;case"unrecognized_keys":return`Chave${issue2.keys.length>1?"s":""} desconhecida${issue2.keys.length>1?"s":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Chave inválida em ${issue2.origin}`;case"invalid_union":return"Entrada inválida";case"invalid_element":return`Valor inválido em ${issue2.origin}`;default:return"Campo inválido"}}};function pt_default(){return{localeError:error34()}}function getRussianPlural(count,one,few,many){let absCount=Math.abs(count),lastDigit=absCount%10,lastTwoDigits=absCount%100;return lastTwoDigits>=11&&lastTwoDigits<=19?many:lastDigit===1?one:lastDigit>=2&&lastDigit<=4?few:many}var error35=()=>{let Sizable={string:{unit:{one:"символ",few:"символа",many:"символов"},verb:"иметь"},file:{unit:{one:"байт",few:"байта",many:"байт"},verb:"иметь"},array:{unit:{one:"элемент",few:"элемента",many:"элементов"},verb:"иметь"},set:{unit:{one:"элемент",few:"элемента",many:"элементов"},verb:"иметь"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"ввод",email:"email адрес",url:"URL",emoji:"эмодзи",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO дата и время",date:"ISO дата",time:"ISO время",duration:"ISO длительность",ipv4:"IPv4 адрес",ipv6:"IPv6 адрес",cidrv4:"IPv4 диапазон",cidrv6:"IPv6 диапазон",base64:"строка в формате base64",base64url:"строка в формате base64url",json_string:"JSON строка",e164:"номер E.164",jwt:"JWT",template_literal:"ввод"},TypeDictionary={nan:"NaN",number:"число",array:"массив"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Неверный ввод: ожидалось instanceof ${issue2.expected}, получено ${received}`:`Неверный ввод: ожидалось ${expected}, получено ${received}`}case"invalid_value":return issue2.values.length===1?`Неверный ввод: ожидалось ${stringifyPrimitive(issue2.values[0])}`:`Неверный вариант: ожидалось одно из ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);if(sizing){let maxValue=Number(issue2.maximum),unit=getRussianPlural(maxValue,sizing.unit.one,sizing.unit.few,sizing.unit.many);return`Слишком большое значение: ожидалось, что ${issue2.origin??"значение"} будет иметь ${adj}${issue2.maximum.toString()} ${unit}`}return`Слишком большое значение: ожидалось, что ${issue2.origin??"значение"} будет ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);if(sizing){let minValue=Number(issue2.minimum),unit=getRussianPlural(minValue,sizing.unit.one,sizing.unit.few,sizing.unit.many);return`Слишком маленькое значение: ожидалось, что ${issue2.origin} будет иметь ${adj}${issue2.minimum.toString()} ${unit}`}return`Слишком маленькое значение: ожидалось, что ${issue2.origin} будет ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Неверная строка: должна начинаться с "${_issue.prefix}"`:_issue.format==="ends_with"?`Неверная строка: должна заканчиваться на "${_issue.suffix}"`:_issue.format==="includes"?`Неверная строка: должна содержать "${_issue.includes}"`:_issue.format==="regex"?`Неверная строка: должна соответствовать шаблону ${_issue.pattern}`:`Неверный ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Неверное число: должно быть кратным ${issue2.divisor}`;case"unrecognized_keys":return`Нераспознанн${issue2.keys.length>1?"ые":"ый"} ключ${issue2.keys.length>1?"и":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Неверный ключ в ${issue2.origin}`;case"invalid_union":return"Неверные входные данные";case"invalid_element":return`Неверное значение в ${issue2.origin}`;default:return"Неверные входные данные"}}};function ru_default(){return{localeError:error35()}}var error36=()=>{let Sizable={string:{unit:"znakov",verb:"imeti"},file:{unit:"bajtov",verb:"imeti"},array:{unit:"elementov",verb:"imeti"},set:{unit:"elementov",verb:"imeti"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"vnos",email:"e-poštni naslov",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum in čas",date:"ISO datum",time:"ISO čas",duration:"ISO trajanje",ipv4:"IPv4 naslov",ipv6:"IPv6 naslov",cidrv4:"obseg IPv4",cidrv6:"obseg IPv6",base64:"base64 kodiran niz",base64url:"base64url kodiran niz",json_string:"JSON niz",e164:"E.164 številka",jwt:"JWT",template_literal:"vnos"},TypeDictionary={nan:"NaN",number:"število",array:"tabela"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Neveljaven vnos: pričakovano instanceof ${issue2.expected}, prejeto ${received}`:`Neveljaven vnos: pričakovano ${expected}, prejeto ${received}`}case"invalid_value":return issue2.values.length===1?`Neveljaven vnos: pričakovano ${stringifyPrimitive(issue2.values[0])}`:`Neveljavna možnost: pričakovano eno izmed ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Preveliko: pričakovano, da bo ${issue2.origin??"vrednost"} imelo ${adj}${issue2.maximum.toString()} ${sizing.unit??"elementov"}`:`Preveliko: pričakovano, da bo ${issue2.origin??"vrednost"} ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Premajhno: pričakovano, da bo ${issue2.origin} imelo ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Premajhno: pričakovano, da bo ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Neveljaven niz: mora se začeti z "${_issue.prefix}"`:_issue.format==="ends_with"?`Neveljaven niz: mora se končati z "${_issue.suffix}"`:_issue.format==="includes"?`Neveljaven niz: mora vsebovati "${_issue.includes}"`:_issue.format==="regex"?`Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`:`Neveljaven ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Neveljavno število: mora biti večkratnik ${issue2.divisor}`;case"unrecognized_keys":return`Neprepoznan${issue2.keys.length>1?"i ključi":" ključ"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Neveljaven ključ v ${issue2.origin}`;case"invalid_union":return"Neveljaven vnos";case"invalid_element":return`Neveljavna vrednost v ${issue2.origin}`;default:return"Neveljaven vnos"}}};function sl_default(){return{localeError:error36()}}var error37=()=>{let Sizable={string:{unit:"tecken",verb:"att ha"},file:{unit:"bytes",verb:"att ha"},array:{unit:"objekt",verb:"att innehålla"},set:{unit:"objekt",verb:"att innehålla"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"reguljärt uttryck",email:"e-postadress",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-datum och tid",date:"ISO-datum",time:"ISO-tid",duration:"ISO-varaktighet",ipv4:"IPv4-intervall",ipv6:"IPv6-intervall",cidrv4:"IPv4-spektrum",cidrv6:"IPv6-spektrum",base64:"base64-kodad sträng",base64url:"base64url-kodad sträng",json_string:"JSON-sträng",e164:"E.164-nummer",jwt:"JWT",template_literal:"mall-literal"},TypeDictionary={nan:"NaN",number:"antal",array:"lista"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Ogiltig inmatning: förväntat instanceof ${issue2.expected}, fick ${received}`:`Ogiltig inmatning: förväntat ${expected}, fick ${received}`}case"invalid_value":return issue2.values.length===1?`Ogiltig inmatning: förväntat ${stringifyPrimitive(issue2.values[0])}`:`Ogiltigt val: förväntade en av ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`För stor(t): förväntade ${issue2.origin??"värdet"} att ha ${adj}${issue2.maximum.toString()} ${sizing.unit??"element"}`:`För stor(t): förväntat ${issue2.origin??"värdet"} att ha ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`För lite(t): förväntade ${issue2.origin??"värdet"} att ha ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`För lite(t): förväntade ${issue2.origin??"värdet"} att ha ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Ogiltig sträng: måste börja med "${_issue.prefix}"`:_issue.format==="ends_with"?`Ogiltig sträng: måste sluta med "${_issue.suffix}"`:_issue.format==="includes"?`Ogiltig sträng: måste innehålla "${_issue.includes}"`:_issue.format==="regex"?`Ogiltig sträng: måste matcha mönstret "${_issue.pattern}"`:`Ogiltig(t) ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Ogiltigt tal: måste vara en multipel av ${issue2.divisor}`;case"unrecognized_keys":return`${issue2.keys.length>1?"Okända nycklar":"Okänd nyckel"}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Ogiltig nyckel i ${issue2.origin??"värdet"}`;case"invalid_union":return"Ogiltig input";case"invalid_element":return`Ogiltigt värde i ${issue2.origin??"värdet"}`;default:return"Ogiltig input"}}};function sv_default(){return{localeError:error37()}}var error38=()=>{let Sizable={string:{unit:"எழுத்துக்கள்",verb:"கொண்டிருக்க வேண்டும்"},file:{unit:"பைட்டுகள்",verb:"கொண்டிருக்க வேண்டும்"},array:{unit:"உறுப்புகள்",verb:"கொண்டிருக்க வேண்டும்"},set:{unit:"உறுப்புகள்",verb:"கொண்டிருக்க வேண்டும்"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"உள்ளீடு",email:"மின்னஞ்சல் முகவரி",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO தேதி நேரம்",date:"ISO தேதி",time:"ISO நேரம்",duration:"ISO கால அளவு",ipv4:"IPv4 முகவரி",ipv6:"IPv6 முகவரி",cidrv4:"IPv4 வரம்பு",cidrv6:"IPv6 வரம்பு",base64:"base64-encoded சரம்",base64url:"base64url-encoded சரம்",json_string:"JSON சரம்",e164:"E.164 எண்",jwt:"JWT",template_literal:"input"},TypeDictionary={nan:"NaN",number:"எண்",array:"அணி",null:"வெறுமை"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது instanceof ${issue2.expected}, பெறப்பட்டது ${received}`:`தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${expected}, பெறப்பட்டது ${received}`}case"invalid_value":return issue2.values.length===1?`தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${stringifyPrimitive(issue2.values[0])}`:`தவறான விருப்பம்: எதிர்பார்க்கப்பட்டது ${joinValues(issue2.values,"|")} இல் ஒன்று`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue2.origin??"மதிப்பு"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"உறுப்புகள்"} ஆக இருக்க வேண்டும்`:`மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue2.origin??"மதிப்பு"} ${adj}${issue2.maximum.toString()} ஆக இருக்க வேண்டும்`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} ஆக இருக்க வேண்டும்`:`மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue2.origin} ${adj}${issue2.minimum.toString()} ஆக இருக்க வேண்டும்`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`தவறான சரம்: "${_issue.prefix}" இல் தொடங்க வேண்டும்`:_issue.format==="ends_with"?`தவறான சரம்: "${_issue.suffix}" இல் முடிவடைய வேண்டும்`:_issue.format==="includes"?`தவறான சரம்: "${_issue.includes}" ஐ உள்ளடக்க வேண்டும்`:_issue.format==="regex"?`தவறான சரம்: ${_issue.pattern} முறைபாட்டுடன் பொருந்த வேண்டும்`:`தவறான ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`தவறான எண்: ${issue2.divisor} இன் பலமாக இருக்க வேண்டும்`;case"unrecognized_keys":return`அடையாளம் தெரியாத விசை${issue2.keys.length>1?"கள்":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} இல் தவறான விசை`;case"invalid_union":return"தவறான உள்ளீடு";case"invalid_element":return`${issue2.origin} இல் தவறான மதிப்பு`;default:return"தவறான உள்ளீடு"}}};function ta_default(){return{localeError:error38()}}var error39=()=>{let Sizable={string:{unit:"ตัวอักษร",verb:"ควรมี"},file:{unit:"ไบต์",verb:"ควรมี"},array:{unit:"รายการ",verb:"ควรมี"},set:{unit:"รายการ",verb:"ควรมี"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"ข้อมูลที่ป้อน",email:"ที่อยู่อีเมล",url:"URL",emoji:"อิโมจิ",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"วันที่เวลาแบบ ISO",date:"วันที่แบบ ISO",time:"เวลาแบบ ISO",duration:"ช่วงเวลาแบบ ISO",ipv4:"ที่อยู่ IPv4",ipv6:"ที่อยู่ IPv6",cidrv4:"ช่วง IP แบบ IPv4",cidrv6:"ช่วง IP แบบ IPv6",base64:"ข้อความแบบ Base64",base64url:"ข้อความแบบ Base64 สำหรับ URL",json_string:"ข้อความแบบ JSON",e164:"เบอร์โทรศัพท์ระหว่างประเทศ (E.164)",jwt:"โทเคน JWT",template_literal:"ข้อมูลที่ป้อน"},TypeDictionary={nan:"NaN",number:"ตัวเลข",array:"อาร์เรย์ (Array)",null:"ไม่มีค่า (null)"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น instanceof ${issue2.expected} แต่ได้รับ ${received}`:`ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น ${expected} แต่ได้รับ ${received}`}case"invalid_value":return issue2.values.length===1?`ค่าไม่ถูกต้อง: ควรเป็น ${stringifyPrimitive(issue2.values[0])}`:`ตัวเลือกไม่ถูกต้อง: ควรเป็นหนึ่งใน ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"ไม่เกิน":"น้อยกว่า",sizing=getSizing(issue2.origin);return sizing?`เกินกำหนด: ${issue2.origin??"ค่า"} ควรมี${adj} ${issue2.maximum.toString()} ${sizing.unit??"รายการ"}`:`เกินกำหนด: ${issue2.origin??"ค่า"} ควรมี${adj} ${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?"อย่างน้อย":"มากกว่า",sizing=getSizing(issue2.origin);return sizing?`น้อยกว่ากำหนด: ${issue2.origin} ควรมี${adj} ${issue2.minimum.toString()} ${sizing.unit}`:`น้อยกว่ากำหนด: ${issue2.origin} ควรมี${adj} ${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`รูปแบบไม่ถูกต้อง: ข้อความต้องขึ้นต้นด้วย "${_issue.prefix}"`:_issue.format==="ends_with"?`รูปแบบไม่ถูกต้อง: ข้อความต้องลงท้ายด้วย "${_issue.suffix}"`:_issue.format==="includes"?`รูปแบบไม่ถูกต้อง: ข้อความต้องมี "${_issue.includes}" อยู่ในข้อความ`:_issue.format==="regex"?`รูปแบบไม่ถูกต้อง: ต้องตรงกับรูปแบบที่กำหนด ${_issue.pattern}`:`รูปแบบไม่ถูกต้อง: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`ตัวเลขไม่ถูกต้อง: ต้องเป็นจำนวนที่หารด้วย ${issue2.divisor} ได้ลงตัว`;case"unrecognized_keys":return`พบคีย์ที่ไม่รู้จัก: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`คีย์ไม่ถูกต้องใน ${issue2.origin}`;case"invalid_union":return"ข้อมูลไม่ถูกต้อง: ไม่ตรงกับรูปแบบยูเนียนที่กำหนดไว้";case"invalid_element":return`ข้อมูลไม่ถูกต้องใน ${issue2.origin}`;default:return"ข้อมูลไม่ถูกต้อง"}}};function th_default(){return{localeError:error39()}}var error40=()=>{let Sizable={string:{unit:"karakter",verb:"olmalı"},file:{unit:"bayt",verb:"olmalı"},array:{unit:"öğe",verb:"olmalı"},set:{unit:"öğe",verb:"olmalı"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"girdi",email:"e-posta adresi",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO tarih ve saat",date:"ISO tarih",time:"ISO saat",duration:"ISO süre",ipv4:"IPv4 adresi",ipv6:"IPv6 adresi",cidrv4:"IPv4 aralığı",cidrv6:"IPv6 aralığı",base64:"base64 ile şifrelenmiş metin",base64url:"base64url ile şifrelenmiş metin",json_string:"JSON dizesi",e164:"E.164 sayısı",jwt:"JWT",template_literal:"Şablon dizesi"},TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Geçersiz değer: beklenen instanceof ${issue2.expected}, alınan ${received}`:`Geçersiz değer: beklenen ${expected}, alınan ${received}`}case"invalid_value":return issue2.values.length===1?`Geçersiz değer: beklenen ${stringifyPrimitive(issue2.values[0])}`:`Geçersiz seçenek: aşağıdakilerden biri olmalı: ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Çok büyük: beklenen ${issue2.origin??"değer"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"öğe"}`:`Çok büyük: beklenen ${issue2.origin??"değer"} ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Çok küçük: beklenen ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Çok küçük: beklenen ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Geçersiz metin: "${_issue.prefix}" ile başlamalı`:_issue.format==="ends_with"?`Geçersiz metin: "${_issue.suffix}" ile bitmeli`:_issue.format==="includes"?`Geçersiz metin: "${_issue.includes}" içermeli`:_issue.format==="regex"?`Geçersiz metin: ${_issue.pattern} desenine uymalı`:`Geçersiz ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Geçersiz sayı: ${issue2.divisor} ile tam bölünebilmeli`;case"unrecognized_keys":return`Tanınmayan anahtar${issue2.keys.length>1?"lar":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} içinde geçersiz anahtar`;case"invalid_union":return"Geçersiz değer";case"invalid_element":return`${issue2.origin} içinde geçersiz değer`;default:return"Geçersiz değer"}}};function tr_default(){return{localeError:error40()}}var error41=()=>{let Sizable={string:{unit:"символів",verb:"матиме"},file:{unit:"байтів",verb:"матиме"},array:{unit:"елементів",verb:"матиме"},set:{unit:"елементів",verb:"матиме"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"вхідні дані",email:"адреса електронної пошти",url:"URL",emoji:"емодзі",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"дата та час ISO",date:"дата ISO",time:"час ISO",duration:"тривалість ISO",ipv4:"адреса IPv4",ipv6:"адреса IPv6",cidrv4:"діапазон IPv4",cidrv6:"діапазон IPv6",base64:"рядок у кодуванні base64",base64url:"рядок у кодуванні base64url",json_string:"рядок JSON",e164:"номер E.164",jwt:"JWT",template_literal:"вхідні дані"},TypeDictionary={nan:"NaN",number:"число",array:"масив"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Неправильні вхідні дані: очікується instanceof ${issue2.expected}, отримано ${received}`:`Неправильні вхідні дані: очікується ${expected}, отримано ${received}`}case"invalid_value":return issue2.values.length===1?`Неправильні вхідні дані: очікується ${stringifyPrimitive(issue2.values[0])}`:`Неправильна опція: очікується одне з ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Занадто велике: очікується, що ${issue2.origin??"значення"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit??"елементів"}`:`Занадто велике: очікується, що ${issue2.origin??"значення"} буде ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Занадто мале: очікується, що ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Занадто мале: очікується, що ${issue2.origin} буде ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Неправильний рядок: повинен починатися з "${_issue.prefix}"`:_issue.format==="ends_with"?`Неправильний рядок: повинен закінчуватися на "${_issue.suffix}"`:_issue.format==="includes"?`Неправильний рядок: повинен містити "${_issue.includes}"`:_issue.format==="regex"?`Неправильний рядок: повинен відповідати шаблону ${_issue.pattern}`:`Неправильний ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Неправильне число: повинно бути кратним ${issue2.divisor}`;case"unrecognized_keys":return`Нерозпізнаний ключ${issue2.keys.length>1?"і":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Неправильний ключ у ${issue2.origin}`;case"invalid_union":return"Неправильні вхідні дані";case"invalid_element":return`Неправильне значення у ${issue2.origin}`;default:return"Неправильні вхідні дані"}}};function uk_default(){return{localeError:error41()}}function ua_default(){return uk_default()}var error42=()=>{let Sizable={string:{unit:"حروف",verb:"ہونا"},file:{unit:"بائٹس",verb:"ہونا"},array:{unit:"آئٹمز",verb:"ہونا"},set:{unit:"آئٹمز",verb:"ہونا"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"ان پٹ",email:"ای میل ایڈریس",url:"یو آر ایل",emoji:"ایموجی",uuid:"یو یو آئی ڈی",uuidv4:"یو یو آئی ڈی وی 4",uuidv6:"یو یو آئی ڈی وی 6",nanoid:"نینو آئی ڈی",guid:"جی یو آئی ڈی",cuid:"سی یو آئی ڈی",cuid2:"سی یو آئی ڈی 2",ulid:"یو ایل آئی ڈی",xid:"ایکس آئی ڈی",ksuid:"کے ایس یو آئی ڈی",datetime:"آئی ایس او ڈیٹ ٹائم",date:"آئی ایس او تاریخ",time:"آئی ایس او وقت",duration:"آئی ایس او مدت",ipv4:"آئی پی وی 4 ایڈریس",ipv6:"آئی پی وی 6 ایڈریس",cidrv4:"آئی پی وی 4 رینج",cidrv6:"آئی پی وی 6 رینج",base64:"بیس 64 ان کوڈڈ سٹرنگ",base64url:"بیس 64 یو آر ایل ان کوڈڈ سٹرنگ",json_string:"جے ایس او این سٹرنگ",e164:"ای 164 نمبر",jwt:"جے ڈبلیو ٹی",template_literal:"ان پٹ"},TypeDictionary={nan:"NaN",number:"نمبر",array:"آرے",null:"نل"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`غلط ان پٹ: instanceof ${issue2.expected} متوقع تھا، ${received} موصول ہوا`:`غلط ان پٹ: ${expected} متوقع تھا، ${received} موصول ہوا`}case"invalid_value":return issue2.values.length===1?`غلط ان پٹ: ${stringifyPrimitive(issue2.values[0])} متوقع تھا`:`غلط آپشن: ${joinValues(issue2.values,"|")} میں سے ایک متوقع تھا`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`بہت بڑا: ${issue2.origin??"ویلیو"} کے ${adj}${issue2.maximum.toString()} ${sizing.unit??"عناصر"} ہونے متوقع تھے`:`بہت بڑا: ${issue2.origin??"ویلیو"} کا ${adj}${issue2.maximum.toString()} ہونا متوقع تھا`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`بہت چھوٹا: ${issue2.origin} کے ${adj}${issue2.minimum.toString()} ${sizing.unit} ہونے متوقع تھے`:`بہت چھوٹا: ${issue2.origin} کا ${adj}${issue2.minimum.toString()} ہونا متوقع تھا`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`غلط سٹرنگ: "${_issue.prefix}" سے شروع ہونا چاہیے`:_issue.format==="ends_with"?`غلط سٹرنگ: "${_issue.suffix}" پر ختم ہونا چاہیے`:_issue.format==="includes"?`غلط سٹرنگ: "${_issue.includes}" شامل ہونا چاہیے`:_issue.format==="regex"?`غلط سٹرنگ: پیٹرن ${_issue.pattern} سے میچ ہونا چاہیے`:`غلط ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`غلط نمبر: ${issue2.divisor} کا مضاعف ہونا چاہیے`;case"unrecognized_keys":return`غیر تسلیم شدہ کی${issue2.keys.length>1?"ز":""}: ${joinValues(issue2.keys,"، ")}`;case"invalid_key":return`${issue2.origin} میں غلط کی`;case"invalid_union":return"غلط ان پٹ";case"invalid_element":return`${issue2.origin} میں غلط ویلیو`;default:return"غلط ان پٹ"}}};function ur_default(){return{localeError:error42()}}var error43=()=>{let Sizable={string:{unit:"belgi",verb:"bo‘lishi kerak"},file:{unit:"bayt",verb:"bo‘lishi kerak"},array:{unit:"element",verb:"bo‘lishi kerak"},set:{unit:"element",verb:"bo‘lishi kerak"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"kirish",email:"elektron pochta manzili",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO sana va vaqti",date:"ISO sana",time:"ISO vaqt",duration:"ISO davomiylik",ipv4:"IPv4 manzil",ipv6:"IPv6 manzil",mac:"MAC manzil",cidrv4:"IPv4 diapazon",cidrv6:"IPv6 diapazon",base64:"base64 kodlangan satr",base64url:"base64url kodlangan satr",json_string:"JSON satr",e164:"E.164 raqam",jwt:"JWT",template_literal:"kirish"},TypeDictionary={nan:"NaN",number:"raqam",array:"massiv"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Noto‘g‘ri kirish: kutilgan instanceof ${issue2.expected}, qabul qilingan ${received}`:`Noto‘g‘ri kirish: kutilgan ${expected}, qabul qilingan ${received}`}case"invalid_value":return issue2.values.length===1?`Noto‘g‘ri kirish: kutilgan ${stringifyPrimitive(issue2.values[0])}`:`Noto‘g‘ri variant: quyidagilardan biri kutilgan ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Juda katta: kutilgan ${issue2.origin??"qiymat"} ${adj}${issue2.maximum.toString()} ${sizing.unit} ${sizing.verb}`:`Juda katta: kutilgan ${issue2.origin??"qiymat"} ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Juda kichik: kutilgan ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit} ${sizing.verb}`:`Juda kichik: kutilgan ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Noto‘g‘ri satr: "${_issue.prefix}" bilan boshlanishi kerak`:_issue.format==="ends_with"?`Noto‘g‘ri satr: "${_issue.suffix}" bilan tugashi kerak`:_issue.format==="includes"?`Noto‘g‘ri satr: "${_issue.includes}" ni o‘z ichiga olishi kerak`:_issue.format==="regex"?`Noto‘g‘ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`:`Noto‘g‘ri ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Noto‘g‘ri raqam: ${issue2.divisor} ning karralisi bo‘lishi kerak`;case"unrecognized_keys":return`Noma’lum kalit${issue2.keys.length>1?"lar":""}: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} dagi kalit noto‘g‘ri`;case"invalid_union":return"Noto‘g‘ri kirish";case"invalid_element":return`${issue2.origin} da noto‘g‘ri qiymat`;default:return"Noto‘g‘ri kirish"}}};function uz_default(){return{localeError:error43()}}var error44=()=>{let Sizable={string:{unit:"ký tự",verb:"có"},file:{unit:"byte",verb:"có"},array:{unit:"phần tử",verb:"có"},set:{unit:"phần tử",verb:"có"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"đầu vào",email:"địa chỉ email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ngày giờ ISO",date:"ngày ISO",time:"giờ ISO",duration:"khoảng thời gian ISO",ipv4:"địa chỉ IPv4",ipv6:"địa chỉ IPv6",cidrv4:"dải IPv4",cidrv6:"dải IPv6",base64:"chuỗi mã hóa base64",base64url:"chuỗi mã hóa base64url",json_string:"chuỗi JSON",e164:"số E.164",jwt:"JWT",template_literal:"đầu vào"},TypeDictionary={nan:"NaN",number:"số",array:"mảng"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Đầu vào không hợp lệ: mong đợi instanceof ${issue2.expected}, nhận được ${received}`:`Đầu vào không hợp lệ: mong đợi ${expected}, nhận được ${received}`}case"invalid_value":return issue2.values.length===1?`Đầu vào không hợp lệ: mong đợi ${stringifyPrimitive(issue2.values[0])}`:`Tùy chọn không hợp lệ: mong đợi một trong các giá trị ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Quá lớn: mong đợi ${issue2.origin??"giá trị"} ${sizing.verb} ${adj}${issue2.maximum.toString()} ${sizing.unit??"phần tử"}`:`Quá lớn: mong đợi ${issue2.origin??"giá trị"} ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Quá nhỏ: mong đợi ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`Quá nhỏ: mong đợi ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Chuỗi không hợp lệ: phải bắt đầu bằng "${_issue.prefix}"`:_issue.format==="ends_with"?`Chuỗi không hợp lệ: phải kết thúc bằng "${_issue.suffix}"`:_issue.format==="includes"?`Chuỗi không hợp lệ: phải bao gồm "${_issue.includes}"`:_issue.format==="regex"?`Chuỗi không hợp lệ: phải khớp với mẫu ${_issue.pattern}`:`${FormatDictionary[_issue.format]??issue2.format} không hợp lệ`}case"not_multiple_of":return`Số không hợp lệ: phải là bội số của ${issue2.divisor}`;case"unrecognized_keys":return`Khóa không được nhận dạng: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Khóa không hợp lệ trong ${issue2.origin}`;case"invalid_union":return"Đầu vào không hợp lệ";case"invalid_element":return`Giá trị không hợp lệ trong ${issue2.origin}`;default:return"Đầu vào không hợp lệ"}}};function vi_default(){return{localeError:error44()}}var error45=()=>{let Sizable={string:{unit:"字符",verb:"包含"},file:{unit:"字节",verb:"包含"},array:{unit:"项",verb:"包含"},set:{unit:"项",verb:"包含"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"输入",email:"电子邮件",url:"URL",emoji:"表情符号",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO日期时间",date:"ISO日期",time:"ISO时间",duration:"ISO时长",ipv4:"IPv4地址",ipv6:"IPv6地址",cidrv4:"IPv4网段",cidrv6:"IPv6网段",base64:"base64编码字符串",base64url:"base64url编码字符串",json_string:"JSON字符串",e164:"E.164号码",jwt:"JWT",template_literal:"输入"},TypeDictionary={nan:"NaN",number:"数字",array:"数组",null:"空值(null)"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`无效输入:期望 instanceof ${issue2.expected},实际接收 ${received}`:`无效输入:期望 ${expected},实际接收 ${received}`}case"invalid_value":return issue2.values.length===1?`无效输入:期望 ${stringifyPrimitive(issue2.values[0])}`:`无效选项:期望以下之一 ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`数值过大:期望 ${issue2.origin??"值"} ${adj}${issue2.maximum.toString()} ${sizing.unit??"个元素"}`:`数值过大:期望 ${issue2.origin??"值"} ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`数值过小:期望 ${issue2.origin} ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`数值过小:期望 ${issue2.origin} ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`无效字符串:必须以 "${_issue.prefix}" 开头`:_issue.format==="ends_with"?`无效字符串:必须以 "${_issue.suffix}" 结尾`:_issue.format==="includes"?`无效字符串:必须包含 "${_issue.includes}"`:_issue.format==="regex"?`无效字符串:必须满足正则表达式 ${_issue.pattern}`:`无效${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`无效数字:必须是 ${issue2.divisor} 的倍数`;case"unrecognized_keys":return`出现未知的键(key): ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`${issue2.origin} 中的键(key)无效`;case"invalid_union":return"无效输入";case"invalid_element":return`${issue2.origin} 中包含无效值(value)`;default:return"无效输入"}}};function zh_CN_default(){return{localeError:error45()}}var error46=()=>{let Sizable={string:{unit:"字元",verb:"擁有"},file:{unit:"位元組",verb:"擁有"},array:{unit:"項目",verb:"擁有"},set:{unit:"項目",verb:"擁有"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"輸入",email:"郵件地址",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO 日期時間",date:"ISO 日期",time:"ISO 時間",duration:"ISO 期間",ipv4:"IPv4 位址",ipv6:"IPv6 位址",cidrv4:"IPv4 範圍",cidrv6:"IPv6 範圍",base64:"base64 編碼字串",base64url:"base64url 編碼字串",json_string:"JSON 字串",e164:"E.164 數值",jwt:"JWT",template_literal:"輸入"},TypeDictionary={nan:"NaN"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`無效的輸入值:預期為 instanceof ${issue2.expected},但收到 ${received}`:`無效的輸入值:預期為 ${expected},但收到 ${received}`}case"invalid_value":return issue2.values.length===1?`無效的輸入值:預期為 ${stringifyPrimitive(issue2.values[0])}`:`無效的選項:預期為以下其中之一 ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`數值過大:預期 ${issue2.origin??"值"} 應為 ${adj}${issue2.maximum.toString()} ${sizing.unit??"個元素"}`:`數值過大:預期 ${issue2.origin??"值"} 應為 ${adj}${issue2.maximum.toString()}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`數值過小:預期 ${issue2.origin} 應為 ${adj}${issue2.minimum.toString()} ${sizing.unit}`:`數值過小:預期 ${issue2.origin} 應為 ${adj}${issue2.minimum.toString()}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`無效的字串:必須以 "${_issue.prefix}" 開頭`:_issue.format==="ends_with"?`無效的字串:必須以 "${_issue.suffix}" 結尾`:_issue.format==="includes"?`無效的字串:必須包含 "${_issue.includes}"`:_issue.format==="regex"?`無效的字串:必須符合格式 ${_issue.pattern}`:`無效的 ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`無效的數字:必須為 ${issue2.divisor} 的倍數`;case"unrecognized_keys":return`無法識別的鍵值${issue2.keys.length>1?"們":""}:${joinValues(issue2.keys,"、")}`;case"invalid_key":return`${issue2.origin} 中有無效的鍵值`;case"invalid_union":return"無效的輸入值";case"invalid_element":return`${issue2.origin} 中有無效的值`;default:return"無效的輸入值"}}};function zh_TW_default(){return{localeError:error46()}}var error47=()=>{let Sizable={string:{unit:"àmi",verb:"ní"},file:{unit:"bytes",verb:"ní"},array:{unit:"nkan",verb:"ní"},set:{unit:"nkan",verb:"ní"}};function getSizing(origin){return Sizable[origin]??null}let FormatDictionary={regex:"ẹ̀rọ ìbáwọlé",email:"àdírẹ́sì ìmẹ́lì",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"àkókò ISO",date:"ọjọ́ ISO",time:"àkókò ISO",duration:"àkókò tó pé ISO",ipv4:"àdírẹ́sì IPv4",ipv6:"àdírẹ́sì IPv6",cidrv4:"àgbègbè IPv4",cidrv6:"àgbègbè IPv6",base64:"ọ̀rọ̀ tí a kọ́ ní base64",base64url:"ọ̀rọ̀ base64url",json_string:"ọ̀rọ̀ JSON",e164:"nọ́mbà E.164",jwt:"JWT",template_literal:"ẹ̀rọ ìbáwọlé"},TypeDictionary={nan:"NaN",number:"nọ́mbà",array:"akopọ"};return issue2=>{switch(issue2.code){case"invalid_type":{let expected=TypeDictionary[issue2.expected]??issue2.expected,receivedType=parsedType(issue2.input),received=TypeDictionary[receivedType]??receivedType;return/^[A-Z]/.test(issue2.expected)?`Ìbáwọlé aṣìṣe: a ní láti fi instanceof ${issue2.expected}, àmọ̀ a rí ${received}`:`Ìbáwọlé aṣìṣe: a ní láti fi ${expected}, àmọ̀ a rí ${received}`}case"invalid_value":return issue2.values.length===1?`Ìbáwọlé aṣìṣe: a ní láti fi ${stringifyPrimitive(issue2.values[0])}`:`Àṣàyàn aṣìṣe: yan ọ̀kan lára ${joinValues(issue2.values,"|")}`;case"too_big":{let adj=issue2.inclusive?"<=":"<",sizing=getSizing(issue2.origin);return sizing?`Tó pọ̀ jù: a ní láti jẹ́ pé ${issue2.origin??"iye"} ${sizing.verb} ${adj}${issue2.maximum} ${sizing.unit}`:`Tó pọ̀ jù: a ní láti jẹ́ ${adj}${issue2.maximum}`}case"too_small":{let adj=issue2.inclusive?">=":">",sizing=getSizing(issue2.origin);return sizing?`Kéré ju: a ní láti jẹ́ pé ${issue2.origin} ${sizing.verb} ${adj}${issue2.minimum} ${sizing.unit}`:`Kéré ju: a ní láti jẹ́ ${adj}${issue2.minimum}`}case"invalid_format":{let _issue=issue2;return _issue.format==="starts_with"?`Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bẹ̀rẹ̀ pẹ̀lú "${_issue.prefix}"`:_issue.format==="ends_with"?`Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ parí pẹ̀lú "${_issue.suffix}"`:_issue.format==="includes"?`Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ ní "${_issue.includes}"`:_issue.format==="regex"?`Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bá àpẹẹrẹ mu ${_issue.pattern}`:`Aṣìṣe: ${FormatDictionary[_issue.format]??issue2.format}`}case"not_multiple_of":return`Nọ́mbà aṣìṣe: gbọ́dọ̀ jẹ́ èyà pípín ti ${issue2.divisor}`;case"unrecognized_keys":return`Bọtìnì àìmọ̀: ${joinValues(issue2.keys,", ")}`;case"invalid_key":return`Bọtìnì aṣìṣe nínú ${issue2.origin}`;case"invalid_union":return"Ìbáwọlé aṣìṣe";case"invalid_element":return`Iye aṣìṣe nínú ${issue2.origin}`;default:return"Ìbáwọlé aṣìṣe"}}};function yo_default(){return{localeError:error47()}}var _a,$output=Symbol("ZodOutput"),$input=Symbol("ZodInput"),$ZodRegistry=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(schema,..._meta){let meta3=_meta[0];return this._map.set(schema,meta3),meta3&&typeof meta3=="object"&&"id"in meta3&&this._idmap.set(meta3.id,schema),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(schema){let meta3=this._map.get(schema);return meta3&&typeof meta3=="object"&&"id"in meta3&&this._idmap.delete(meta3.id),this._map.delete(schema),this}get(schema){let p=schema._zod.parent;if(p){let pm={...this.get(p)??{}};delete pm.id;let f={...pm,...this._map.get(schema)};return Object.keys(f).length?f:void 0}return this._map.get(schema)}has(schema){return this._map.has(schema)}};function registry(){return new $ZodRegistry}(_a=globalThis).__zod_globalRegistry??(_a.__zod_globalRegistry=registry());var globalRegistry=globalThis.__zod_globalRegistry;function _string(Class2,params){return new Class2({type:"string",...normalizeParams(params)})}function _coercedString(Class2,params){return new Class2({type:"string",coerce:!0,...normalizeParams(params)})}function _email(Class2,params){return new Class2({type:"string",format:"email",check:"string_format",abort:!1,...normalizeParams(params)})}function _guid(Class2,params){return new Class2({type:"string",format:"guid",check:"string_format",abort:!1,...normalizeParams(params)})}function _uuid(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:!1,...normalizeParams(params)})}function _uuidv4(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...normalizeParams(params)})}function _uuidv6(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...normalizeParams(params)})}function _uuidv7(Class2,params){return new Class2({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...normalizeParams(params)})}function _url(Class2,params){return new Class2({type:"string",format:"url",check:"string_format",abort:!1,...normalizeParams(params)})}function _emoji2(Class2,params){return new Class2({type:"string",format:"emoji",check:"string_format",abort:!1,...normalizeParams(params)})}function _nanoid(Class2,params){return new Class2({type:"string",format:"nanoid",check:"string_format",abort:!1,...normalizeParams(params)})}function _cuid(Class2,params){return new Class2({type:"string",format:"cuid",check:"string_format",abort:!1,...normalizeParams(params)})}function _cuid2(Class2,params){return new Class2({type:"string",format:"cuid2",check:"string_format",abort:!1,...normalizeParams(params)})}function _ulid(Class2,params){return new Class2({type:"string",format:"ulid",check:"string_format",abort:!1,...normalizeParams(params)})}function _xid(Class2,params){return new Class2({type:"string",format:"xid",check:"string_format",abort:!1,...normalizeParams(params)})}function _ksuid(Class2,params){return new Class2({type:"string",format:"ksuid",check:"string_format",abort:!1,...normalizeParams(params)})}function _ipv4(Class2,params){return new Class2({type:"string",format:"ipv4",check:"string_format",abort:!1,...normalizeParams(params)})}function _ipv6(Class2,params){return new Class2({type:"string",format:"ipv6",check:"string_format",abort:!1,...normalizeParams(params)})}function _mac(Class2,params){return new Class2({type:"string",format:"mac",check:"string_format",abort:!1,...normalizeParams(params)})}function _cidrv4(Class2,params){return new Class2({type:"string",format:"cidrv4",check:"string_format",abort:!1,...normalizeParams(params)})}function _cidrv6(Class2,params){return new Class2({type:"string",format:"cidrv6",check:"string_format",abort:!1,...normalizeParams(params)})}function _base64(Class2,params){return new Class2({type:"string",format:"base64",check:"string_format",abort:!1,...normalizeParams(params)})}function _base64url(Class2,params){return new Class2({type:"string",format:"base64url",check:"string_format",abort:!1,...normalizeParams(params)})}function _e164(Class2,params){return new Class2({type:"string",format:"e164",check:"string_format",abort:!1,...normalizeParams(params)})}function _jwt(Class2,params){return new Class2({type:"string",format:"jwt",check:"string_format",abort:!1,...normalizeParams(params)})}var TimePrecision={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6};function _isoDateTime(Class2,params){return new Class2({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...normalizeParams(params)})}function _isoDate(Class2,params){return new Class2({type:"string",format:"date",check:"string_format",...normalizeParams(params)})}function _isoTime(Class2,params){return new Class2({type:"string",format:"time",check:"string_format",precision:null,...normalizeParams(params)})}function _isoDuration(Class2,params){return new Class2({type:"string",format:"duration",check:"string_format",...normalizeParams(params)})}function _number(Class2,params){return new Class2({type:"number",checks:[],...normalizeParams(params)})}function _coercedNumber(Class2,params){return new Class2({type:"number",coerce:!0,checks:[],...normalizeParams(params)})}function _int(Class2,params){return new Class2({type:"number",check:"number_format",abort:!1,format:"safeint",...normalizeParams(params)})}function _float32(Class2,params){return new Class2({type:"number",check:"number_format",abort:!1,format:"float32",...normalizeParams(params)})}function _float64(Class2,params){return new Class2({type:"number",check:"number_format",abort:!1,format:"float64",...normalizeParams(params)})}function _int32(Class2,params){return new Class2({type:"number",check:"number_format",abort:!1,format:"int32",...normalizeParams(params)})}function _uint32(Class2,params){return new Class2({type:"number",check:"number_format",abort:!1,format:"uint32",...normalizeParams(params)})}function _boolean(Class2,params){return new Class2({type:"boolean",...normalizeParams(params)})}function _coercedBoolean(Class2,params){return new Class2({type:"boolean",coerce:!0,...normalizeParams(params)})}function _bigint(Class2,params){return new Class2({type:"bigint",...normalizeParams(params)})}function _coercedBigint(Class2,params){return new Class2({type:"bigint",coerce:!0,...normalizeParams(params)})}function _int64(Class2,params){return new Class2({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...normalizeParams(params)})}function _uint64(Class2,params){return new Class2({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...normalizeParams(params)})}function _symbol(Class2,params){return new Class2({type:"symbol",...normalizeParams(params)})}function _undefined2(Class2,params){return new Class2({type:"undefined",...normalizeParams(params)})}function _null2(Class2,params){return new Class2({type:"null",...normalizeParams(params)})}function _any(Class2){return new Class2({type:"any"})}function _unknown(Class2){return new Class2({type:"unknown"})}function _never(Class2,params){return new Class2({type:"never",...normalizeParams(params)})}function _void(Class2,params){return new Class2({type:"void",...normalizeParams(params)})}function _date(Class2,params){return new Class2({type:"date",...normalizeParams(params)})}function _coercedDate(Class2,params){return new Class2({type:"date",coerce:!0,...normalizeParams(params)})}function _nan(Class2,params){return new Class2({type:"nan",...normalizeParams(params)})}function _lt(value,params){return new $ZodCheckLessThan({check:"less_than",...normalizeParams(params),value,inclusive:!1})}function _lte(value,params){return new $ZodCheckLessThan({check:"less_than",...normalizeParams(params),value,inclusive:!0})}function _gt(value,params){return new $ZodCheckGreaterThan({check:"greater_than",...normalizeParams(params),value,inclusive:!1})}function _gte(value,params){return new $ZodCheckGreaterThan({check:"greater_than",...normalizeParams(params),value,inclusive:!0})}function _positive(params){return _gt(0,params)}function _negative(params){return _lt(0,params)}function _nonpositive(params){return _lte(0,params)}function _nonnegative(params){return _gte(0,params)}function _multipleOf(value,params){return new $ZodCheckMultipleOf({check:"multiple_of",...normalizeParams(params),value})}function _maxSize(maximum,params){return new $ZodCheckMaxSize({check:"max_size",...normalizeParams(params),maximum})}function _minSize(minimum,params){return new $ZodCheckMinSize({check:"min_size",...normalizeParams(params),minimum})}function _size(size,params){return new $ZodCheckSizeEquals({check:"size_equals",...normalizeParams(params),size})}function _maxLength(maximum,params){return new $ZodCheckMaxLength({check:"max_length",...normalizeParams(params),maximum})}function _minLength(minimum,params){return new $ZodCheckMinLength({check:"min_length",...normalizeParams(params),minimum})}function _length(length,params){return new $ZodCheckLengthEquals({check:"length_equals",...normalizeParams(params),length})}function _regex(pattern,params){return new $ZodCheckRegex({check:"string_format",format:"regex",...normalizeParams(params),pattern})}function _lowercase(params){return new $ZodCheckLowerCase({check:"string_format",format:"lowercase",...normalizeParams(params)})}function _uppercase(params){return new $ZodCheckUpperCase({check:"string_format",format:"uppercase",...normalizeParams(params)})}function _includes(includes,params){return new $ZodCheckIncludes({check:"string_format",format:"includes",...normalizeParams(params),includes})}function _startsWith(prefix,params){return new $ZodCheckStartsWith({check:"string_format",format:"starts_with",...normalizeParams(params),prefix})}function _endsWith(suffix,params){return new $ZodCheckEndsWith({check:"string_format",format:"ends_with",...normalizeParams(params),suffix})}function _property(property,schema,params){return new $ZodCheckProperty({check:"property",property,schema,...normalizeParams(params)})}function _mime(types,params){return new $ZodCheckMimeType({check:"mime_type",mime:types,...normalizeParams(params)})}function _overwrite(tx){return new $ZodCheckOverwrite({check:"overwrite",tx})}function _normalize(form){return _overwrite(input=>input.normalize(form))}function _trim(){return _overwrite(input=>input.trim())}function _toLowerCase(){return _overwrite(input=>input.toLowerCase())}function _toUpperCase(){return _overwrite(input=>input.toUpperCase())}function _slugify(){return _overwrite(input=>slugify(input))}function _array(Class2,element,params){return new Class2({type:"array",element,...normalizeParams(params)})}function _union(Class2,options,params){return new Class2({type:"union",options,...normalizeParams(params)})}function _xor(Class2,options,params){return new Class2({type:"union",options,inclusive:!1,...normalizeParams(params)})}function _discriminatedUnion(Class2,discriminator,options,params){return new Class2({type:"union",options,discriminator,...normalizeParams(params)})}function _intersection(Class2,left,right){return new Class2({type:"intersection",left,right})}function _tuple(Class2,items,_paramsOrRest,_params){let hasRest=_paramsOrRest instanceof $ZodType,params=hasRest?_params:_paramsOrRest,rest=hasRest?_paramsOrRest:null;return new Class2({type:"tuple",items,rest,...normalizeParams(params)})}function _record(Class2,keyType,valueType,params){return new Class2({type:"record",keyType,valueType,...normalizeParams(params)})}function _map(Class2,keyType,valueType,params){return new Class2({type:"map",keyType,valueType,...normalizeParams(params)})}function _set(Class2,valueType,params){return new Class2({type:"set",valueType,...normalizeParams(params)})}function _enum(Class2,values,params){let entries=Array.isArray(values)?Object.fromEntries(values.map(v=>[v,v])):values;return new Class2({type:"enum",entries,...normalizeParams(params)})}function _nativeEnum(Class2,entries,params){return new Class2({type:"enum",entries,...normalizeParams(params)})}function _literal(Class2,value,params){return new Class2({type:"literal",values:Array.isArray(value)?value:[value],...normalizeParams(params)})}function _file(Class2,params){return new Class2({type:"file",...normalizeParams(params)})}function _transform(Class2,fn){return new Class2({type:"transform",transform:fn})}function _optional(Class2,innerType){return new Class2({type:"optional",innerType})}function _nullable(Class2,innerType){return new Class2({type:"nullable",innerType})}function _default(Class2,innerType,defaultValue){return new Class2({type:"default",innerType,get defaultValue(){return typeof defaultValue=="function"?defaultValue():shallowClone(defaultValue)}})}function _nonoptional(Class2,innerType,params){return new Class2({type:"nonoptional",innerType,...normalizeParams(params)})}function _success(Class2,innerType){return new Class2({type:"success",innerType})}function _catch(Class2,innerType,catchValue){return new Class2({type:"catch",innerType,catchValue:typeof catchValue=="function"?catchValue:()=>catchValue})}function _pipe(Class2,in_,out){return new Class2({type:"pipe",in:in_,out})}function _readonly(Class2,innerType){return new Class2({type:"readonly",innerType})}function _templateLiteral(Class2,parts,params){return new Class2({type:"template_literal",parts,...normalizeParams(params)})}function _lazy(Class2,getter){return new Class2({type:"lazy",getter})}function _promise(Class2,innerType){return new Class2({type:"promise",innerType})}function _custom(Class2,fn,_params){let norm=normalizeParams(_params);return norm.abort??(norm.abort=!0),new Class2({type:"custom",check:"custom",fn,...norm})}function _refine(Class2,fn,_params){return new Class2({type:"custom",check:"custom",fn,...normalizeParams(_params)})}function _superRefine(fn){let ch=_check(payload=>(payload.addIssue=issue2=>{if(typeof issue2=="string")payload.issues.push(issue(issue2,payload.value,ch._zod.def));else{let _issue=issue2;_issue.fatal&&(_issue.continue=!1),_issue.code??(_issue.code="custom"),_issue.input??(_issue.input=payload.value),_issue.inst??(_issue.inst=ch),_issue.continue??(_issue.continue=!ch._zod.def.abort),payload.issues.push(issue(_issue))}},fn(payload.value,payload)));return ch}function _check(fn,params){let ch=new $ZodCheck({check:"custom",...normalizeParams(params)});return ch._zod.check=fn,ch}function describe(description){let ch=new $ZodCheck({check:"describe"});return ch._zod.onattach=[inst=>{let existing=globalRegistry.get(inst)??{};globalRegistry.add(inst,{...existing,description})}],ch._zod.check=()=>{},ch}function meta(metadata){let ch=new $ZodCheck({check:"meta"});return ch._zod.onattach=[inst=>{let existing=globalRegistry.get(inst)??{};globalRegistry.add(inst,{...existing,...metadata})}],ch._zod.check=()=>{},ch}function _stringbool(Classes,_params){let params=normalizeParams(_params),truthyArray=params.truthy??["true","1","yes","on","y","enabled"],falsyArray=params.falsy??["false","0","no","off","n","disabled"];params.case!=="sensitive"&&(truthyArray=truthyArray.map(v=>typeof v=="string"?v.toLowerCase():v),falsyArray=falsyArray.map(v=>typeof v=="string"?v.toLowerCase():v));let truthySet=new Set(truthyArray),falsySet=new Set(falsyArray),_Codec=Classes.Codec??$ZodCodec,_Boolean=Classes.Boolean??$ZodBoolean,_String=Classes.String??$ZodString,stringSchema=new _String({type:"string",error:params.error}),booleanSchema=new _Boolean({type:"boolean",error:params.error}),codec2=new _Codec({type:"pipe",in:stringSchema,out:booleanSchema,transform:((input,payload)=>{let data=input;return params.case!=="sensitive"&&(data=data.toLowerCase()),truthySet.has(data)?!0:falsySet.has(data)?!1:(payload.issues.push({code:"invalid_value",expected:"stringbool",values:[...truthySet,...falsySet],input:payload.value,inst:codec2,continue:!1}),{})}),reverseTransform:((input,_payload)=>input===!0?truthyArray[0]||"true":falsyArray[0]||"false"),error:params.error});return codec2}function _stringFormat(Class2,format,fnOrRegex,_params={}){let params=normalizeParams(_params),def={...normalizeParams(_params),check:"string_format",type:"string",format,fn:typeof fnOrRegex=="function"?fnOrRegex:val=>fnOrRegex.test(val),...params};return fnOrRegex instanceof RegExp&&(def.pattern=fnOrRegex),new Class2(def)}function initializeContext(params){let target=params?.target??"draft-2020-12";return target==="draft-4"&&(target="draft-04"),target==="draft-7"&&(target="draft-07"),{processors:params.processors??{},metadataRegistry:params?.metadata??globalRegistry,target,unrepresentable:params?.unrepresentable??"throw",override:params?.override??(()=>{}),io:params?.io??"output",counter:0,seen:new Map,cycles:params?.cycles??"ref",reused:params?.reused??"inline",external:params?.external??void 0}}function process2(schema,ctx,_params={path:[],schemaPath:[]}){var _a2;let def=schema._zod.def,seen=ctx.seen.get(schema);if(seen)return seen.count++,_params.schemaPath.includes(schema)&&(seen.cycle=_params.path),seen.schema;let result={schema:{},count:1,cycle:void 0,path:_params.path};ctx.seen.set(schema,result);let overrideSchema=schema._zod.toJSONSchema?.();if(overrideSchema)result.schema=overrideSchema;else{let params={..._params,schemaPath:[..._params.schemaPath,schema],path:_params.path};if(schema._zod.processJSONSchema)schema._zod.processJSONSchema(ctx,result.schema,params);else{let _json=result.schema,processor=ctx.processors[def.type];if(!processor)throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);processor(schema,ctx,_json,params)}let parent=schema._zod.parent;parent&&(result.ref||(result.ref=parent),process2(parent,ctx,params),ctx.seen.get(parent).isParent=!0)}let meta3=ctx.metadataRegistry.get(schema);return meta3&&Object.assign(result.schema,meta3),ctx.io==="input"&&isTransforming(schema)&&(delete result.schema.examples,delete result.schema.default),ctx.io==="input"&&result.schema._prefault&&((_a2=result.schema).default??(_a2.default=result.schema._prefault)),delete result.schema._prefault,ctx.seen.get(schema).schema}function extractDefs(ctx,schema){let root=ctx.seen.get(schema);if(!root)throw new Error("Unprocessed schema. This is a bug in Zod.");let idToSchema=new Map;for(let entry of ctx.seen.entries()){let id=ctx.metadataRegistry.get(entry[0])?.id;if(id){let existing=idToSchema.get(id);if(existing&&existing!==entry[0])throw new Error(`Duplicate schema id "${id}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);idToSchema.set(id,entry[0])}}let makeURI=entry=>{let defsSegment=ctx.target==="draft-2020-12"?"$defs":"definitions";if(ctx.external){let externalId=ctx.external.registry.get(entry[0])?.id,uriGenerator=ctx.external.uri??(id2=>id2);if(externalId)return{ref:uriGenerator(externalId)};let id=entry[1].defId??entry[1].schema.id??`schema${ctx.counter++}`;return entry[1].defId=id,{defId:id,ref:`${uriGenerator("__shared")}#/${defsSegment}/${id}`}}if(entry[1]===root)return{ref:"#"};let defUriPrefix=`#/${defsSegment}/`,defId=entry[1].schema.id??`__schema${ctx.counter++}`;return{defId,ref:defUriPrefix+defId}},extractToDef=entry=>{if(entry[1].schema.$ref)return;let seen=entry[1],{ref,defId}=makeURI(entry);seen.def={...seen.schema},defId&&(seen.defId=defId);let schema2=seen.schema;for(let key in schema2)delete schema2[key];schema2.$ref=ref};if(ctx.cycles==="throw")for(let entry of ctx.seen.entries()){let seen=entry[1];if(seen.cycle)throw new Error(`Cycle detected: #/${seen.cycle?.join("/")}/<root>
814
815
 
815
- Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let entry of ctx.seen.entries()){let seen=entry[1];if(schema===entry[0]){extractToDef(entry);continue}if(ctx.external){let ext=ctx.external.registry.get(entry[0])?.id;if(schema!==entry[0]&&ext){extractToDef(entry);continue}}if(ctx.metadataRegistry.get(entry[0])?.id){extractToDef(entry);continue}if(seen.cycle){extractToDef(entry);continue}if(seen.count>1&&ctx.reused==="ref"){extractToDef(entry);continue}}}function finalize(ctx,schema){let root=ctx.seen.get(schema);if(!root)throw new Error("Unprocessed schema. This is a bug in Zod.");let flattenRef=zodSchema=>{let seen=ctx.seen.get(zodSchema);if(seen.ref===null)return;let schema2=seen.def??seen.schema,_cached={...schema2},ref=seen.ref;if(seen.ref=null,ref){flattenRef(ref);let refSeen=ctx.seen.get(ref),refSchema=refSeen.schema;if(refSchema.$ref&&(ctx.target==="draft-07"||ctx.target==="draft-04"||ctx.target==="openapi-3.0")?(schema2.allOf=schema2.allOf??[],schema2.allOf.push(refSchema)):Object.assign(schema2,refSchema),Object.assign(schema2,_cached),zodSchema._zod.parent===ref)for(let key in schema2)key==="$ref"||key==="allOf"||key in _cached||delete schema2[key];if(refSchema.$ref&&refSeen.def)for(let key in schema2)key==="$ref"||key==="allOf"||key in refSeen.def&&JSON.stringify(schema2[key])===JSON.stringify(refSeen.def[key])&&delete schema2[key]}let parent=zodSchema._zod.parent;if(parent&&parent!==ref){flattenRef(parent);let parentSeen=ctx.seen.get(parent);if(parentSeen?.schema.$ref&&(schema2.$ref=parentSeen.schema.$ref,parentSeen.def))for(let key in schema2)key==="$ref"||key==="allOf"||key in parentSeen.def&&JSON.stringify(schema2[key])===JSON.stringify(parentSeen.def[key])&&delete schema2[key]}ctx.override({zodSchema,jsonSchema:schema2,path:seen.path??[]})};for(let entry of[...ctx.seen.entries()].reverse())flattenRef(entry[0]);let result={};if(ctx.target==="draft-2020-12"?result.$schema="https://json-schema.org/draft/2020-12/schema":ctx.target==="draft-07"?result.$schema="http://json-schema.org/draft-07/schema#":ctx.target==="draft-04"?result.$schema="http://json-schema.org/draft-04/schema#":ctx.target,ctx.external?.uri){let id=ctx.external.registry.get(schema)?.id;if(!id)throw new Error("Schema is missing an `id` property");result.$id=ctx.external.uri(id)}Object.assign(result,root.def??root.schema);let defs=ctx.external?.defs??{};for(let entry of ctx.seen.entries()){let seen=entry[1];seen.def&&seen.defId&&(defs[seen.defId]=seen.def)}ctx.external||Object.keys(defs).length>0&&(ctx.target==="draft-2020-12"?result.$defs=defs:result.definitions=defs);try{let finalized=JSON.parse(JSON.stringify(result));return Object.defineProperty(finalized,"~standard",{value:{...schema["~standard"],jsonSchema:{input:createStandardJSONSchemaMethod(schema,"input",ctx.processors),output:createStandardJSONSchemaMethod(schema,"output",ctx.processors)}},enumerable:!1,writable:!1}),finalized}catch{throw new Error("Error converting schema to JSON.")}}function isTransforming(_schema,_ctx){let ctx=_ctx??{seen:new Set};if(ctx.seen.has(_schema))return!1;ctx.seen.add(_schema);let def=_schema._zod.def;if(def.type==="transform")return!0;if(def.type==="array")return isTransforming(def.element,ctx);if(def.type==="set")return isTransforming(def.valueType,ctx);if(def.type==="lazy")return isTransforming(def.getter(),ctx);if(def.type==="promise"||def.type==="optional"||def.type==="nonoptional"||def.type==="nullable"||def.type==="readonly"||def.type==="default"||def.type==="prefault")return isTransforming(def.innerType,ctx);if(def.type==="intersection")return isTransforming(def.left,ctx)||isTransforming(def.right,ctx);if(def.type==="record"||def.type==="map")return isTransforming(def.keyType,ctx)||isTransforming(def.valueType,ctx);if(def.type==="pipe")return isTransforming(def.in,ctx)||isTransforming(def.out,ctx);if(def.type==="object"){for(let key in def.shape)if(isTransforming(def.shape[key],ctx))return!0;return!1}if(def.type==="union"){for(let option of def.options)if(isTransforming(option,ctx))return!0;return!1}if(def.type==="tuple"){for(let item of def.items)if(isTransforming(item,ctx))return!0;return!!(def.rest&&isTransforming(def.rest,ctx))}return!1}var createToJSONSchemaMethod=(schema,processors={})=>params=>{let ctx=initializeContext({...params,processors});return process2(schema,ctx),extractDefs(ctx,schema),finalize(ctx,schema)},createStandardJSONSchemaMethod=(schema,io,processors={})=>params=>{let{libraryOptions,target}=params??{},ctx=initializeContext({...libraryOptions??{},target,io,processors});return process2(schema,ctx),extractDefs(ctx,schema),finalize(ctx,schema)};var formatMap={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},stringProcessor=(schema,ctx,_json,_params)=>{let json2=_json;json2.type="string";let{minimum,maximum,format,patterns,contentEncoding}=schema._zod.bag;if(typeof minimum=="number"&&(json2.minLength=minimum),typeof maximum=="number"&&(json2.maxLength=maximum),format&&(json2.format=formatMap[format]??format,json2.format===""&&delete json2.format,format==="time"&&delete json2.format),contentEncoding&&(json2.contentEncoding=contentEncoding),patterns&&patterns.size>0){let regexes=[...patterns];regexes.length===1?json2.pattern=regexes[0].source:regexes.length>1&&(json2.allOf=[...regexes.map(regex=>({...ctx.target==="draft-07"||ctx.target==="draft-04"||ctx.target==="openapi-3.0"?{type:"string"}:{},pattern:regex.source}))])}},numberProcessor=(schema,ctx,_json,_params)=>{let json2=_json,{minimum,maximum,format,multipleOf,exclusiveMaximum,exclusiveMinimum}=schema._zod.bag;typeof format=="string"&&format.includes("int")?json2.type="integer":json2.type="number",typeof exclusiveMinimum=="number"&&(ctx.target==="draft-04"||ctx.target==="openapi-3.0"?(json2.minimum=exclusiveMinimum,json2.exclusiveMinimum=!0):json2.exclusiveMinimum=exclusiveMinimum),typeof minimum=="number"&&(json2.minimum=minimum,typeof exclusiveMinimum=="number"&&ctx.target!=="draft-04"&&(exclusiveMinimum>=minimum?delete json2.minimum:delete json2.exclusiveMinimum)),typeof exclusiveMaximum=="number"&&(ctx.target==="draft-04"||ctx.target==="openapi-3.0"?(json2.maximum=exclusiveMaximum,json2.exclusiveMaximum=!0):json2.exclusiveMaximum=exclusiveMaximum),typeof maximum=="number"&&(json2.maximum=maximum,typeof exclusiveMaximum=="number"&&ctx.target!=="draft-04"&&(exclusiveMaximum<=maximum?delete json2.maximum:delete json2.exclusiveMaximum)),typeof multipleOf=="number"&&(json2.multipleOf=multipleOf)},booleanProcessor=(_schema,_ctx,json2,_params)=>{json2.type="boolean"},bigintProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},symbolProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},nullProcessor=(_schema,ctx,json2,_params)=>{ctx.target==="openapi-3.0"?(json2.type="string",json2.nullable=!0,json2.enum=[null]):json2.type="null"},undefinedProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},voidProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},neverProcessor=(_schema,_ctx,json2,_params)=>{json2.not={}},anyProcessor=(_schema,_ctx,_json,_params)=>{},unknownProcessor=(_schema,_ctx,_json,_params)=>{},dateProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},enumProcessor=(schema,_ctx,json2,_params)=>{let def=schema._zod.def,values=getEnumValues(def.entries);values.every(v=>typeof v=="number")&&(json2.type="number"),values.every(v=>typeof v=="string")&&(json2.type="string"),json2.enum=values},literalProcessor=(schema,ctx,json2,_params)=>{let def=schema._zod.def,vals=[];for(let val of def.values)if(val===void 0){if(ctx.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof val=="bigint"){if(ctx.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");vals.push(Number(val))}else vals.push(val);if(vals.length!==0)if(vals.length===1){let val=vals[0];json2.type=val===null?"null":typeof val,ctx.target==="draft-04"||ctx.target==="openapi-3.0"?json2.enum=[val]:json2.const=val}else vals.every(v=>typeof v=="number")&&(json2.type="number"),vals.every(v=>typeof v=="string")&&(json2.type="string"),vals.every(v=>typeof v=="boolean")&&(json2.type="boolean"),vals.every(v=>v===null)&&(json2.type="null"),json2.enum=vals},nanProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},templateLiteralProcessor=(schema,_ctx,json2,_params)=>{let _json=json2,pattern=schema._zod.pattern;if(!pattern)throw new Error("Pattern not found in template literal");_json.type="string",_json.pattern=pattern.source},fileProcessor=(schema,_ctx,json2,_params)=>{let _json=json2,file2={type:"string",format:"binary",contentEncoding:"binary"},{minimum,maximum,mime}=schema._zod.bag;minimum!==void 0&&(file2.minLength=minimum),maximum!==void 0&&(file2.maxLength=maximum),mime?mime.length===1?(file2.contentMediaType=mime[0],Object.assign(_json,file2)):(Object.assign(_json,file2),_json.anyOf=mime.map(m=>({contentMediaType:m}))):Object.assign(_json,file2)},successProcessor=(_schema,_ctx,json2,_params)=>{json2.type="boolean"},customProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},functionProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},transformProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},mapProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},setProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},arrayProcessor=(schema,ctx,_json,params)=>{let json2=_json,def=schema._zod.def,{minimum,maximum}=schema._zod.bag;typeof minimum=="number"&&(json2.minItems=minimum),typeof maximum=="number"&&(json2.maxItems=maximum),json2.type="array",json2.items=process2(def.element,ctx,{...params,path:[...params.path,"items"]})},objectProcessor=(schema,ctx,_json,params)=>{let json2=_json,def=schema._zod.def;json2.type="object",json2.properties={};let shape=def.shape;for(let key in shape)json2.properties[key]=process2(shape[key],ctx,{...params,path:[...params.path,"properties",key]});let allKeys=new Set(Object.keys(shape)),requiredKeys=new Set([...allKeys].filter(key=>{let v=def.shape[key]._zod;return ctx.io==="input"?v.optin===void 0:v.optout===void 0}));requiredKeys.size>0&&(json2.required=Array.from(requiredKeys)),def.catchall?._zod.def.type==="never"?json2.additionalProperties=!1:def.catchall?def.catchall&&(json2.additionalProperties=process2(def.catchall,ctx,{...params,path:[...params.path,"additionalProperties"]})):ctx.io==="output"&&(json2.additionalProperties=!1)},unionProcessor=(schema,ctx,json2,params)=>{let def=schema._zod.def,isExclusive=def.inclusive===!1,options=def.options.map((x,i)=>process2(x,ctx,{...params,path:[...params.path,isExclusive?"oneOf":"anyOf",i]}));isExclusive?json2.oneOf=options:json2.anyOf=options},intersectionProcessor=(schema,ctx,json2,params)=>{let def=schema._zod.def,a=process2(def.left,ctx,{...params,path:[...params.path,"allOf",0]}),b=process2(def.right,ctx,{...params,path:[...params.path,"allOf",1]}),isSimpleIntersection=val=>"allOf"in val&&Object.keys(val).length===1,allOf=[...isSimpleIntersection(a)?a.allOf:[a],...isSimpleIntersection(b)?b.allOf:[b]];json2.allOf=allOf},tupleProcessor=(schema,ctx,_json,params)=>{let json2=_json,def=schema._zod.def;json2.type="array";let prefixPath=ctx.target==="draft-2020-12"?"prefixItems":"items",restPath=ctx.target==="draft-2020-12"||ctx.target==="openapi-3.0"?"items":"additionalItems",prefixItems=def.items.map((x,i)=>process2(x,ctx,{...params,path:[...params.path,prefixPath,i]})),rest=def.rest?process2(def.rest,ctx,{...params,path:[...params.path,restPath,...ctx.target==="openapi-3.0"?[def.items.length]:[]]}):null;ctx.target==="draft-2020-12"?(json2.prefixItems=prefixItems,rest&&(json2.items=rest)):ctx.target==="openapi-3.0"?(json2.items={anyOf:prefixItems},rest&&json2.items.anyOf.push(rest),json2.minItems=prefixItems.length,rest||(json2.maxItems=prefixItems.length)):(json2.items=prefixItems,rest&&(json2.additionalItems=rest));let{minimum,maximum}=schema._zod.bag;typeof minimum=="number"&&(json2.minItems=minimum),typeof maximum=="number"&&(json2.maxItems=maximum)},recordProcessor=(schema,ctx,_json,params)=>{let json2=_json,def=schema._zod.def;json2.type="object";let keyType=def.keyType,patterns=keyType._zod.bag?.patterns;if(def.mode==="loose"&&patterns&&patterns.size>0){let valueSchema=process2(def.valueType,ctx,{...params,path:[...params.path,"patternProperties","*"]});json2.patternProperties={};for(let pattern of patterns)json2.patternProperties[pattern.source]=valueSchema}else(ctx.target==="draft-07"||ctx.target==="draft-2020-12")&&(json2.propertyNames=process2(def.keyType,ctx,{...params,path:[...params.path,"propertyNames"]})),json2.additionalProperties=process2(def.valueType,ctx,{...params,path:[...params.path,"additionalProperties"]});let keyValues=keyType._zod.values;if(keyValues){let validKeyValues=[...keyValues].filter(v=>typeof v=="string"||typeof v=="number");validKeyValues.length>0&&(json2.required=validKeyValues)}},nullableProcessor=(schema,ctx,json2,params)=>{let def=schema._zod.def,inner=process2(def.innerType,ctx,params),seen=ctx.seen.get(schema);ctx.target==="openapi-3.0"?(seen.ref=def.innerType,json2.nullable=!0):json2.anyOf=[inner,{type:"null"}]},nonoptionalProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType},defaultProcessor=(schema,ctx,json2,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType,json2.default=JSON.parse(JSON.stringify(def.defaultValue))},prefaultProcessor=(schema,ctx,json2,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType,ctx.io==="input"&&(json2._prefault=JSON.parse(JSON.stringify(def.defaultValue)))},catchProcessor=(schema,ctx,json2,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType;let catchValue;try{catchValue=def.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}json2.default=catchValue},pipeProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def,innerType=ctx.io==="input"?def.in._zod.def.type==="transform"?def.out:def.in:def.out;process2(innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=innerType},readonlyProcessor=(schema,ctx,json2,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType,json2.readOnly=!0},promiseProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType},optionalProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType},lazyProcessor=(schema,ctx,_json,params)=>{let innerType=schema._zod.innerType;process2(innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=innerType},allProcessors={string:stringProcessor,number:numberProcessor,boolean:booleanProcessor,bigint:bigintProcessor,symbol:symbolProcessor,null:nullProcessor,undefined:undefinedProcessor,void:voidProcessor,never:neverProcessor,any:anyProcessor,unknown:unknownProcessor,date:dateProcessor,enum:enumProcessor,literal:literalProcessor,nan:nanProcessor,template_literal:templateLiteralProcessor,file:fileProcessor,success:successProcessor,custom:customProcessor,function:functionProcessor,transform:transformProcessor,map:mapProcessor,set:setProcessor,array:arrayProcessor,object:objectProcessor,union:unionProcessor,intersection:intersectionProcessor,tuple:tupleProcessor,record:recordProcessor,nullable:nullableProcessor,nonoptional:nonoptionalProcessor,default:defaultProcessor,prefault:prefaultProcessor,catch:catchProcessor,pipe:pipeProcessor,readonly:readonlyProcessor,promise:promiseProcessor,optional:optionalProcessor,lazy:lazyProcessor};function toJSONSchema(input,params){if("_idmap"in input){let registry2=input,ctx2=initializeContext({...params,processors:allProcessors}),defs={};for(let entry of registry2._idmap.entries()){let[_,schema]=entry;process2(schema,ctx2)}let schemas={},external={registry:registry2,uri:params?.uri,defs};ctx2.external=external;for(let entry of registry2._idmap.entries()){let[key,schema]=entry;extractDefs(ctx2,schema),schemas[key]=finalize(ctx2,schema)}if(Object.keys(defs).length>0){let defsSegment=ctx2.target==="draft-2020-12"?"$defs":"definitions";schemas.__shared={[defsSegment]:defs}}return{schemas}}let ctx=initializeContext({...params,processors:allProcessors});return process2(input,ctx),extractDefs(ctx,input),finalize(ctx,input)}var JSONSchemaGenerator=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(value){this.ctx.counter=value}get seen(){return this.ctx.seen}constructor(params){let normalizedTarget=params?.target??"draft-2020-12";normalizedTarget==="draft-4"&&(normalizedTarget="draft-04"),normalizedTarget==="draft-7"&&(normalizedTarget="draft-07"),this.ctx=initializeContext({processors:allProcessors,target:normalizedTarget,...params?.metadata&&{metadata:params.metadata},...params?.unrepresentable&&{unrepresentable:params.unrepresentable},...params?.override&&{override:params.override},...params?.io&&{io:params.io}})}process(schema,_params={path:[],schemaPath:[]}){return process2(schema,this.ctx,_params)}emit(schema,_params){_params&&(_params.cycles&&(this.ctx.cycles=_params.cycles),_params.reused&&(this.ctx.reused=_params.reused),_params.external&&(this.ctx.external=_params.external)),extractDefs(this.ctx,schema);let result=finalize(this.ctx,schema),{"~standard":_,...plainResult}=result;return plainResult}};var json_schema_exports={};var schemas_exports2={};__export(schemas_exports2,{ZodAny:()=>ZodAny,ZodArray:()=>ZodArray,ZodBase64:()=>ZodBase64,ZodBase64URL:()=>ZodBase64URL,ZodBigInt:()=>ZodBigInt,ZodBigIntFormat:()=>ZodBigIntFormat,ZodBoolean:()=>ZodBoolean,ZodCIDRv4:()=>ZodCIDRv4,ZodCIDRv6:()=>ZodCIDRv6,ZodCUID:()=>ZodCUID,ZodCUID2:()=>ZodCUID2,ZodCatch:()=>ZodCatch,ZodCodec:()=>ZodCodec,ZodCustom:()=>ZodCustom,ZodCustomStringFormat:()=>ZodCustomStringFormat,ZodDate:()=>ZodDate,ZodDefault:()=>ZodDefault,ZodDiscriminatedUnion:()=>ZodDiscriminatedUnion,ZodE164:()=>ZodE164,ZodEmail:()=>ZodEmail,ZodEmoji:()=>ZodEmoji,ZodEnum:()=>ZodEnum,ZodExactOptional:()=>ZodExactOptional,ZodFile:()=>ZodFile,ZodFunction:()=>ZodFunction,ZodGUID:()=>ZodGUID,ZodIPv4:()=>ZodIPv4,ZodIPv6:()=>ZodIPv6,ZodIntersection:()=>ZodIntersection,ZodJWT:()=>ZodJWT,ZodKSUID:()=>ZodKSUID,ZodLazy:()=>ZodLazy,ZodLiteral:()=>ZodLiteral,ZodMAC:()=>ZodMAC,ZodMap:()=>ZodMap,ZodNaN:()=>ZodNaN,ZodNanoID:()=>ZodNanoID,ZodNever:()=>ZodNever,ZodNonOptional:()=>ZodNonOptional,ZodNull:()=>ZodNull,ZodNullable:()=>ZodNullable,ZodNumber:()=>ZodNumber,ZodNumberFormat:()=>ZodNumberFormat,ZodObject:()=>ZodObject,ZodOptional:()=>ZodOptional,ZodPipe:()=>ZodPipe,ZodPrefault:()=>ZodPrefault,ZodPromise:()=>ZodPromise,ZodReadonly:()=>ZodReadonly,ZodRecord:()=>ZodRecord,ZodSet:()=>ZodSet,ZodString:()=>ZodString,ZodStringFormat:()=>ZodStringFormat,ZodSuccess:()=>ZodSuccess,ZodSymbol:()=>ZodSymbol,ZodTemplateLiteral:()=>ZodTemplateLiteral,ZodTransform:()=>ZodTransform,ZodTuple:()=>ZodTuple,ZodType:()=>ZodType,ZodULID:()=>ZodULID,ZodURL:()=>ZodURL,ZodUUID:()=>ZodUUID,ZodUndefined:()=>ZodUndefined,ZodUnion:()=>ZodUnion,ZodUnknown:()=>ZodUnknown,ZodVoid:()=>ZodVoid,ZodXID:()=>ZodXID,ZodXor:()=>ZodXor,_ZodString:()=>_ZodString,_default:()=>_default2,_function:()=>_function,any:()=>any,array:()=>array,base64:()=>base642,base64url:()=>base64url2,bigint:()=>bigint2,boolean:()=>boolean2,catch:()=>_catch2,check:()=>check,cidrv4:()=>cidrv42,cidrv6:()=>cidrv62,codec:()=>codec,cuid:()=>cuid3,cuid2:()=>cuid22,custom:()=>custom,date:()=>date3,describe:()=>describe2,discriminatedUnion:()=>discriminatedUnion,e164:()=>e1642,email:()=>email2,emoji:()=>emoji2,enum:()=>_enum2,exactOptional:()=>exactOptional,file:()=>file,float32:()=>float32,float64:()=>float64,function:()=>_function,guid:()=>guid2,hash:()=>hash,hex:()=>hex2,hostname:()=>hostname2,httpUrl:()=>httpUrl,instanceof:()=>_instanceof,int:()=>int,int32:()=>int32,int64:()=>int64,intersection:()=>intersection,ipv4:()=>ipv42,ipv6:()=>ipv62,json:()=>json,jwt:()=>jwt,keyof:()=>keyof,ksuid:()=>ksuid2,lazy:()=>lazy,literal:()=>literal,looseObject:()=>looseObject,looseRecord:()=>looseRecord,mac:()=>mac2,map:()=>map,meta:()=>meta2,nan:()=>nan,nanoid:()=>nanoid2,nativeEnum:()=>nativeEnum,never:()=>never,nonoptional:()=>nonoptional,null:()=>_null3,nullable:()=>nullable,nullish:()=>nullish2,number:()=>number2,object:()=>object,optional:()=>optional,partialRecord:()=>partialRecord,pipe:()=>pipe,prefault:()=>prefault,preprocess:()=>preprocess,promise:()=>promise,readonly:()=>readonly,record:()=>record,refine:()=>refine,set:()=>set,strictObject:()=>strictObject,string:()=>string2,stringFormat:()=>stringFormat,stringbool:()=>stringbool,success:()=>success,superRefine:()=>superRefine,symbol:()=>symbol,templateLiteral:()=>templateLiteral,transform:()=>transform,tuple:()=>tuple,uint32:()=>uint32,uint64:()=>uint64,ulid:()=>ulid2,undefined:()=>_undefined3,union:()=>union,unknown:()=>unknown,url:()=>url,uuid:()=>uuid2,uuidv4:()=>uuidv4,uuidv6:()=>uuidv6,uuidv7:()=>uuidv7,void:()=>_void2,xid:()=>xid2,xor:()=>xor});var checks_exports2={};__export(checks_exports2,{endsWith:()=>_endsWith,gt:()=>_gt,gte:()=>_gte,includes:()=>_includes,length:()=>_length,lowercase:()=>_lowercase,lt:()=>_lt,lte:()=>_lte,maxLength:()=>_maxLength,maxSize:()=>_maxSize,mime:()=>_mime,minLength:()=>_minLength,minSize:()=>_minSize,multipleOf:()=>_multipleOf,negative:()=>_negative,nonnegative:()=>_nonnegative,nonpositive:()=>_nonpositive,normalize:()=>_normalize,overwrite:()=>_overwrite,positive:()=>_positive,property:()=>_property,regex:()=>_regex,size:()=>_size,slugify:()=>_slugify,startsWith:()=>_startsWith,toLowerCase:()=>_toLowerCase,toUpperCase:()=>_toUpperCase,trim:()=>_trim,uppercase:()=>_uppercase});var iso_exports={};__export(iso_exports,{ZodISODate:()=>ZodISODate,ZodISODateTime:()=>ZodISODateTime,ZodISODuration:()=>ZodISODuration,ZodISOTime:()=>ZodISOTime,date:()=>date2,datetime:()=>datetime2,duration:()=>duration2,time:()=>time2});var ZodISODateTime=$constructor("ZodISODateTime",(inst,def)=>{$ZodISODateTime.init(inst,def),ZodStringFormat.init(inst,def)});function datetime2(params){return _isoDateTime(ZodISODateTime,params)}var ZodISODate=$constructor("ZodISODate",(inst,def)=>{$ZodISODate.init(inst,def),ZodStringFormat.init(inst,def)});function date2(params){return _isoDate(ZodISODate,params)}var ZodISOTime=$constructor("ZodISOTime",(inst,def)=>{$ZodISOTime.init(inst,def),ZodStringFormat.init(inst,def)});function time2(params){return _isoTime(ZodISOTime,params)}var ZodISODuration=$constructor("ZodISODuration",(inst,def)=>{$ZodISODuration.init(inst,def),ZodStringFormat.init(inst,def)});function duration2(params){return _isoDuration(ZodISODuration,params)}var initializer2=(inst,issues)=>{$ZodError.init(inst,issues),inst.name="ZodError",Object.defineProperties(inst,{format:{value:mapper=>formatError(inst,mapper)},flatten:{value:mapper=>flattenError(inst,mapper)},addIssue:{value:issue2=>{inst.issues.push(issue2),inst.message=JSON.stringify(inst.issues,jsonStringifyReplacer,2)}},addIssues:{value:issues2=>{inst.issues.push(...issues2),inst.message=JSON.stringify(inst.issues,jsonStringifyReplacer,2)}},isEmpty:{get(){return inst.issues.length===0}}})},ZodError=$constructor("ZodError",initializer2),ZodRealError=$constructor("ZodError",initializer2,{Parent:Error});var parse2=_parse(ZodRealError),parseAsync2=_parseAsync(ZodRealError),safeParse2=_safeParse(ZodRealError),safeParseAsync2=_safeParseAsync(ZodRealError),encode2=_encode(ZodRealError),decode2=_decode(ZodRealError),encodeAsync2=_encodeAsync(ZodRealError),decodeAsync2=_decodeAsync(ZodRealError),safeEncode2=_safeEncode(ZodRealError),safeDecode2=_safeDecode(ZodRealError),safeEncodeAsync2=_safeEncodeAsync(ZodRealError),safeDecodeAsync2=_safeDecodeAsync(ZodRealError);var ZodType=$constructor("ZodType",(inst,def)=>($ZodType.init(inst,def),Object.assign(inst["~standard"],{jsonSchema:{input:createStandardJSONSchemaMethod(inst,"input"),output:createStandardJSONSchemaMethod(inst,"output")}}),inst.toJSONSchema=createToJSONSchemaMethod(inst,{}),inst.def=def,inst.type=def.type,Object.defineProperty(inst,"_def",{value:def}),inst.check=(...checks)=>inst.clone(util_exports.mergeDefs(def,{checks:[...def.checks??[],...checks.map(ch=>typeof ch=="function"?{_zod:{check:ch,def:{check:"custom"},onattach:[]}}:ch)]}),{parent:!0}),inst.with=inst.check,inst.clone=(def2,params)=>clone(inst,def2,params),inst.brand=()=>inst,inst.register=((reg,meta3)=>(reg.add(inst,meta3),inst)),inst.parse=(data,params)=>parse2(inst,data,params,{callee:inst.parse}),inst.safeParse=(data,params)=>safeParse2(inst,data,params),inst.parseAsync=async(data,params)=>parseAsync2(inst,data,params,{callee:inst.parseAsync}),inst.safeParseAsync=async(data,params)=>safeParseAsync2(inst,data,params),inst.spa=inst.safeParseAsync,inst.encode=(data,params)=>encode2(inst,data,params),inst.decode=(data,params)=>decode2(inst,data,params),inst.encodeAsync=async(data,params)=>encodeAsync2(inst,data,params),inst.decodeAsync=async(data,params)=>decodeAsync2(inst,data,params),inst.safeEncode=(data,params)=>safeEncode2(inst,data,params),inst.safeDecode=(data,params)=>safeDecode2(inst,data,params),inst.safeEncodeAsync=async(data,params)=>safeEncodeAsync2(inst,data,params),inst.safeDecodeAsync=async(data,params)=>safeDecodeAsync2(inst,data,params),inst.refine=(check2,params)=>inst.check(refine(check2,params)),inst.superRefine=refinement=>inst.check(superRefine(refinement)),inst.overwrite=fn=>inst.check(_overwrite(fn)),inst.optional=()=>optional(inst),inst.exactOptional=()=>exactOptional(inst),inst.nullable=()=>nullable(inst),inst.nullish=()=>optional(nullable(inst)),inst.nonoptional=params=>nonoptional(inst,params),inst.array=()=>array(inst),inst.or=arg=>union([inst,arg]),inst.and=arg=>intersection(inst,arg),inst.transform=tx=>pipe(inst,transform(tx)),inst.default=def2=>_default2(inst,def2),inst.prefault=def2=>prefault(inst,def2),inst.catch=params=>_catch2(inst,params),inst.pipe=target=>pipe(inst,target),inst.readonly=()=>readonly(inst),inst.describe=description=>{let cl=inst.clone();return globalRegistry.add(cl,{description}),cl},Object.defineProperty(inst,"description",{get(){return globalRegistry.get(inst)?.description},configurable:!0}),inst.meta=(...args)=>{if(args.length===0)return globalRegistry.get(inst);let cl=inst.clone();return globalRegistry.add(cl,args[0]),cl},inst.isOptional=()=>inst.safeParse(void 0).success,inst.isNullable=()=>inst.safeParse(null).success,inst.apply=fn=>fn(inst),inst)),_ZodString=$constructor("_ZodString",(inst,def)=>{$ZodString.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>stringProcessor(inst,ctx,json2,params);let bag=inst._zod.bag;inst.format=bag.format??null,inst.minLength=bag.minimum??null,inst.maxLength=bag.maximum??null,inst.regex=(...args)=>inst.check(_regex(...args)),inst.includes=(...args)=>inst.check(_includes(...args)),inst.startsWith=(...args)=>inst.check(_startsWith(...args)),inst.endsWith=(...args)=>inst.check(_endsWith(...args)),inst.min=(...args)=>inst.check(_minLength(...args)),inst.max=(...args)=>inst.check(_maxLength(...args)),inst.length=(...args)=>inst.check(_length(...args)),inst.nonempty=(...args)=>inst.check(_minLength(1,...args)),inst.lowercase=params=>inst.check(_lowercase(params)),inst.uppercase=params=>inst.check(_uppercase(params)),inst.trim=()=>inst.check(_trim()),inst.normalize=(...args)=>inst.check(_normalize(...args)),inst.toLowerCase=()=>inst.check(_toLowerCase()),inst.toUpperCase=()=>inst.check(_toUpperCase()),inst.slugify=()=>inst.check(_slugify())}),ZodString=$constructor("ZodString",(inst,def)=>{$ZodString.init(inst,def),_ZodString.init(inst,def),inst.email=params=>inst.check(_email(ZodEmail,params)),inst.url=params=>inst.check(_url(ZodURL,params)),inst.jwt=params=>inst.check(_jwt(ZodJWT,params)),inst.emoji=params=>inst.check(_emoji2(ZodEmoji,params)),inst.guid=params=>inst.check(_guid(ZodGUID,params)),inst.uuid=params=>inst.check(_uuid(ZodUUID,params)),inst.uuidv4=params=>inst.check(_uuidv4(ZodUUID,params)),inst.uuidv6=params=>inst.check(_uuidv6(ZodUUID,params)),inst.uuidv7=params=>inst.check(_uuidv7(ZodUUID,params)),inst.nanoid=params=>inst.check(_nanoid(ZodNanoID,params)),inst.guid=params=>inst.check(_guid(ZodGUID,params)),inst.cuid=params=>inst.check(_cuid(ZodCUID,params)),inst.cuid2=params=>inst.check(_cuid2(ZodCUID2,params)),inst.ulid=params=>inst.check(_ulid(ZodULID,params)),inst.base64=params=>inst.check(_base64(ZodBase64,params)),inst.base64url=params=>inst.check(_base64url(ZodBase64URL,params)),inst.xid=params=>inst.check(_xid(ZodXID,params)),inst.ksuid=params=>inst.check(_ksuid(ZodKSUID,params)),inst.ipv4=params=>inst.check(_ipv4(ZodIPv4,params)),inst.ipv6=params=>inst.check(_ipv6(ZodIPv6,params)),inst.cidrv4=params=>inst.check(_cidrv4(ZodCIDRv4,params)),inst.cidrv6=params=>inst.check(_cidrv6(ZodCIDRv6,params)),inst.e164=params=>inst.check(_e164(ZodE164,params)),inst.datetime=params=>inst.check(datetime2(params)),inst.date=params=>inst.check(date2(params)),inst.time=params=>inst.check(time2(params)),inst.duration=params=>inst.check(duration2(params))});function string2(params){return _string(ZodString,params)}var ZodStringFormat=$constructor("ZodStringFormat",(inst,def)=>{$ZodStringFormat.init(inst,def),_ZodString.init(inst,def)}),ZodEmail=$constructor("ZodEmail",(inst,def)=>{$ZodEmail.init(inst,def),ZodStringFormat.init(inst,def)});function email2(params){return _email(ZodEmail,params)}var ZodGUID=$constructor("ZodGUID",(inst,def)=>{$ZodGUID.init(inst,def),ZodStringFormat.init(inst,def)});function guid2(params){return _guid(ZodGUID,params)}var ZodUUID=$constructor("ZodUUID",(inst,def)=>{$ZodUUID.init(inst,def),ZodStringFormat.init(inst,def)});function uuid2(params){return _uuid(ZodUUID,params)}function uuidv4(params){return _uuidv4(ZodUUID,params)}function uuidv6(params){return _uuidv6(ZodUUID,params)}function uuidv7(params){return _uuidv7(ZodUUID,params)}var ZodURL=$constructor("ZodURL",(inst,def)=>{$ZodURL.init(inst,def),ZodStringFormat.init(inst,def)});function url(params){return _url(ZodURL,params)}function httpUrl(params){return _url(ZodURL,{protocol:/^https?$/,hostname:regexes_exports.domain,...util_exports.normalizeParams(params)})}var ZodEmoji=$constructor("ZodEmoji",(inst,def)=>{$ZodEmoji.init(inst,def),ZodStringFormat.init(inst,def)});function emoji2(params){return _emoji2(ZodEmoji,params)}var ZodNanoID=$constructor("ZodNanoID",(inst,def)=>{$ZodNanoID.init(inst,def),ZodStringFormat.init(inst,def)});function nanoid2(params){return _nanoid(ZodNanoID,params)}var ZodCUID=$constructor("ZodCUID",(inst,def)=>{$ZodCUID.init(inst,def),ZodStringFormat.init(inst,def)});function cuid3(params){return _cuid(ZodCUID,params)}var ZodCUID2=$constructor("ZodCUID2",(inst,def)=>{$ZodCUID2.init(inst,def),ZodStringFormat.init(inst,def)});function cuid22(params){return _cuid2(ZodCUID2,params)}var ZodULID=$constructor("ZodULID",(inst,def)=>{$ZodULID.init(inst,def),ZodStringFormat.init(inst,def)});function ulid2(params){return _ulid(ZodULID,params)}var ZodXID=$constructor("ZodXID",(inst,def)=>{$ZodXID.init(inst,def),ZodStringFormat.init(inst,def)});function xid2(params){return _xid(ZodXID,params)}var ZodKSUID=$constructor("ZodKSUID",(inst,def)=>{$ZodKSUID.init(inst,def),ZodStringFormat.init(inst,def)});function ksuid2(params){return _ksuid(ZodKSUID,params)}var ZodIPv4=$constructor("ZodIPv4",(inst,def)=>{$ZodIPv4.init(inst,def),ZodStringFormat.init(inst,def)});function ipv42(params){return _ipv4(ZodIPv4,params)}var ZodMAC=$constructor("ZodMAC",(inst,def)=>{$ZodMAC.init(inst,def),ZodStringFormat.init(inst,def)});function mac2(params){return _mac(ZodMAC,params)}var ZodIPv6=$constructor("ZodIPv6",(inst,def)=>{$ZodIPv6.init(inst,def),ZodStringFormat.init(inst,def)});function ipv62(params){return _ipv6(ZodIPv6,params)}var ZodCIDRv4=$constructor("ZodCIDRv4",(inst,def)=>{$ZodCIDRv4.init(inst,def),ZodStringFormat.init(inst,def)});function cidrv42(params){return _cidrv4(ZodCIDRv4,params)}var ZodCIDRv6=$constructor("ZodCIDRv6",(inst,def)=>{$ZodCIDRv6.init(inst,def),ZodStringFormat.init(inst,def)});function cidrv62(params){return _cidrv6(ZodCIDRv6,params)}var ZodBase64=$constructor("ZodBase64",(inst,def)=>{$ZodBase64.init(inst,def),ZodStringFormat.init(inst,def)});function base642(params){return _base64(ZodBase64,params)}var ZodBase64URL=$constructor("ZodBase64URL",(inst,def)=>{$ZodBase64URL.init(inst,def),ZodStringFormat.init(inst,def)});function base64url2(params){return _base64url(ZodBase64URL,params)}var ZodE164=$constructor("ZodE164",(inst,def)=>{$ZodE164.init(inst,def),ZodStringFormat.init(inst,def)});function e1642(params){return _e164(ZodE164,params)}var ZodJWT=$constructor("ZodJWT",(inst,def)=>{$ZodJWT.init(inst,def),ZodStringFormat.init(inst,def)});function jwt(params){return _jwt(ZodJWT,params)}var ZodCustomStringFormat=$constructor("ZodCustomStringFormat",(inst,def)=>{$ZodCustomStringFormat.init(inst,def),ZodStringFormat.init(inst,def)});function stringFormat(format,fnOrRegex,_params={}){return _stringFormat(ZodCustomStringFormat,format,fnOrRegex,_params)}function hostname2(_params){return _stringFormat(ZodCustomStringFormat,"hostname",regexes_exports.hostname,_params)}function hex2(_params){return _stringFormat(ZodCustomStringFormat,"hex",regexes_exports.hex,_params)}function hash(alg,params){let enc=params?.enc??"hex",format=`${alg}_${enc}`,regex=regexes_exports[format];if(!regex)throw new Error(`Unrecognized hash format: ${format}`);return _stringFormat(ZodCustomStringFormat,format,regex,params)}var ZodNumber=$constructor("ZodNumber",(inst,def)=>{$ZodNumber.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>numberProcessor(inst,ctx,json2,params),inst.gt=(value,params)=>inst.check(_gt(value,params)),inst.gte=(value,params)=>inst.check(_gte(value,params)),inst.min=(value,params)=>inst.check(_gte(value,params)),inst.lt=(value,params)=>inst.check(_lt(value,params)),inst.lte=(value,params)=>inst.check(_lte(value,params)),inst.max=(value,params)=>inst.check(_lte(value,params)),inst.int=params=>inst.check(int(params)),inst.safe=params=>inst.check(int(params)),inst.positive=params=>inst.check(_gt(0,params)),inst.nonnegative=params=>inst.check(_gte(0,params)),inst.negative=params=>inst.check(_lt(0,params)),inst.nonpositive=params=>inst.check(_lte(0,params)),inst.multipleOf=(value,params)=>inst.check(_multipleOf(value,params)),inst.step=(value,params)=>inst.check(_multipleOf(value,params)),inst.finite=()=>inst;let bag=inst._zod.bag;inst.minValue=Math.max(bag.minimum??Number.NEGATIVE_INFINITY,bag.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,inst.maxValue=Math.min(bag.maximum??Number.POSITIVE_INFINITY,bag.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,inst.isInt=(bag.format??"").includes("int")||Number.isSafeInteger(bag.multipleOf??.5),inst.isFinite=!0,inst.format=bag.format??null});function number2(params){return _number(ZodNumber,params)}var ZodNumberFormat=$constructor("ZodNumberFormat",(inst,def)=>{$ZodNumberFormat.init(inst,def),ZodNumber.init(inst,def)});function int(params){return _int(ZodNumberFormat,params)}function float32(params){return _float32(ZodNumberFormat,params)}function float64(params){return _float64(ZodNumberFormat,params)}function int32(params){return _int32(ZodNumberFormat,params)}function uint32(params){return _uint32(ZodNumberFormat,params)}var ZodBoolean=$constructor("ZodBoolean",(inst,def)=>{$ZodBoolean.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>booleanProcessor(inst,ctx,json2,params)});function boolean2(params){return _boolean(ZodBoolean,params)}var ZodBigInt=$constructor("ZodBigInt",(inst,def)=>{$ZodBigInt.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>bigintProcessor(inst,ctx,json2,params),inst.gte=(value,params)=>inst.check(_gte(value,params)),inst.min=(value,params)=>inst.check(_gte(value,params)),inst.gt=(value,params)=>inst.check(_gt(value,params)),inst.gte=(value,params)=>inst.check(_gte(value,params)),inst.min=(value,params)=>inst.check(_gte(value,params)),inst.lt=(value,params)=>inst.check(_lt(value,params)),inst.lte=(value,params)=>inst.check(_lte(value,params)),inst.max=(value,params)=>inst.check(_lte(value,params)),inst.positive=params=>inst.check(_gt(BigInt(0),params)),inst.negative=params=>inst.check(_lt(BigInt(0),params)),inst.nonpositive=params=>inst.check(_lte(BigInt(0),params)),inst.nonnegative=params=>inst.check(_gte(BigInt(0),params)),inst.multipleOf=(value,params)=>inst.check(_multipleOf(value,params));let bag=inst._zod.bag;inst.minValue=bag.minimum??null,inst.maxValue=bag.maximum??null,inst.format=bag.format??null});function bigint2(params){return _bigint(ZodBigInt,params)}var ZodBigIntFormat=$constructor("ZodBigIntFormat",(inst,def)=>{$ZodBigIntFormat.init(inst,def),ZodBigInt.init(inst,def)});function int64(params){return _int64(ZodBigIntFormat,params)}function uint64(params){return _uint64(ZodBigIntFormat,params)}var ZodSymbol=$constructor("ZodSymbol",(inst,def)=>{$ZodSymbol.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>symbolProcessor(inst,ctx,json2,params)});function symbol(params){return _symbol(ZodSymbol,params)}var ZodUndefined=$constructor("ZodUndefined",(inst,def)=>{$ZodUndefined.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>undefinedProcessor(inst,ctx,json2,params)});function _undefined3(params){return _undefined2(ZodUndefined,params)}var ZodNull=$constructor("ZodNull",(inst,def)=>{$ZodNull.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>nullProcessor(inst,ctx,json2,params)});function _null3(params){return _null2(ZodNull,params)}var ZodAny=$constructor("ZodAny",(inst,def)=>{$ZodAny.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>anyProcessor(inst,ctx,json2,params)});function any(){return _any(ZodAny)}var ZodUnknown=$constructor("ZodUnknown",(inst,def)=>{$ZodUnknown.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>unknownProcessor(inst,ctx,json2,params)});function unknown(){return _unknown(ZodUnknown)}var ZodNever=$constructor("ZodNever",(inst,def)=>{$ZodNever.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>neverProcessor(inst,ctx,json2,params)});function never(params){return _never(ZodNever,params)}var ZodVoid=$constructor("ZodVoid",(inst,def)=>{$ZodVoid.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>voidProcessor(inst,ctx,json2,params)});function _void2(params){return _void(ZodVoid,params)}var ZodDate=$constructor("ZodDate",(inst,def)=>{$ZodDate.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>dateProcessor(inst,ctx,json2,params),inst.min=(value,params)=>inst.check(_gte(value,params)),inst.max=(value,params)=>inst.check(_lte(value,params));let c=inst._zod.bag;inst.minDate=c.minimum?new Date(c.minimum):null,inst.maxDate=c.maximum?new Date(c.maximum):null});function date3(params){return _date(ZodDate,params)}var ZodArray=$constructor("ZodArray",(inst,def)=>{$ZodArray.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>arrayProcessor(inst,ctx,json2,params),inst.element=def.element,inst.min=(minLength,params)=>inst.check(_minLength(minLength,params)),inst.nonempty=params=>inst.check(_minLength(1,params)),inst.max=(maxLength,params)=>inst.check(_maxLength(maxLength,params)),inst.length=(len,params)=>inst.check(_length(len,params)),inst.unwrap=()=>inst.element});function array(element,params){return _array(ZodArray,element,params)}function keyof(schema){let shape=schema._zod.def.shape;return _enum2(Object.keys(shape))}var ZodObject=$constructor("ZodObject",(inst,def)=>{$ZodObjectJIT.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>objectProcessor(inst,ctx,json2,params),util_exports.defineLazy(inst,"shape",()=>def.shape),inst.keyof=()=>_enum2(Object.keys(inst._zod.def.shape)),inst.catchall=catchall=>inst.clone({...inst._zod.def,catchall}),inst.passthrough=()=>inst.clone({...inst._zod.def,catchall:unknown()}),inst.loose=()=>inst.clone({...inst._zod.def,catchall:unknown()}),inst.strict=()=>inst.clone({...inst._zod.def,catchall:never()}),inst.strip=()=>inst.clone({...inst._zod.def,catchall:void 0}),inst.extend=incoming=>util_exports.extend(inst,incoming),inst.safeExtend=incoming=>util_exports.safeExtend(inst,incoming),inst.merge=other=>util_exports.merge(inst,other),inst.pick=mask=>util_exports.pick(inst,mask),inst.omit=mask=>util_exports.omit(inst,mask),inst.partial=(...args)=>util_exports.partial(ZodOptional,inst,args[0]),inst.required=(...args)=>util_exports.required(ZodNonOptional,inst,args[0])});function object(shape,params){let def={type:"object",shape:shape??{},...util_exports.normalizeParams(params)};return new ZodObject(def)}function strictObject(shape,params){return new ZodObject({type:"object",shape,catchall:never(),...util_exports.normalizeParams(params)})}function looseObject(shape,params){return new ZodObject({type:"object",shape,catchall:unknown(),...util_exports.normalizeParams(params)})}var ZodUnion=$constructor("ZodUnion",(inst,def)=>{$ZodUnion.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>unionProcessor(inst,ctx,json2,params),inst.options=def.options});function union(options,params){return new ZodUnion({type:"union",options,...util_exports.normalizeParams(params)})}var ZodXor=$constructor("ZodXor",(inst,def)=>{ZodUnion.init(inst,def),$ZodXor.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>unionProcessor(inst,ctx,json2,params),inst.options=def.options});function xor(options,params){return new ZodXor({type:"union",options,inclusive:!1,...util_exports.normalizeParams(params)})}var ZodDiscriminatedUnion=$constructor("ZodDiscriminatedUnion",(inst,def)=>{ZodUnion.init(inst,def),$ZodDiscriminatedUnion.init(inst,def)});function discriminatedUnion(discriminator,options,params){return new ZodDiscriminatedUnion({type:"union",options,discriminator,...util_exports.normalizeParams(params)})}var ZodIntersection=$constructor("ZodIntersection",(inst,def)=>{$ZodIntersection.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>intersectionProcessor(inst,ctx,json2,params)});function intersection(left,right){return new ZodIntersection({type:"intersection",left,right})}var ZodTuple=$constructor("ZodTuple",(inst,def)=>{$ZodTuple.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>tupleProcessor(inst,ctx,json2,params),inst.rest=rest=>inst.clone({...inst._zod.def,rest})});function tuple(items,_paramsOrRest,_params){let hasRest=_paramsOrRest instanceof $ZodType,params=hasRest?_params:_paramsOrRest,rest=hasRest?_paramsOrRest:null;return new ZodTuple({type:"tuple",items,rest,...util_exports.normalizeParams(params)})}var ZodRecord=$constructor("ZodRecord",(inst,def)=>{$ZodRecord.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>recordProcessor(inst,ctx,json2,params),inst.keyType=def.keyType,inst.valueType=def.valueType});function record(keyType,valueType,params){return new ZodRecord({type:"record",keyType,valueType,...util_exports.normalizeParams(params)})}function partialRecord(keyType,valueType,params){let k=clone(keyType);return k._zod.values=void 0,new ZodRecord({type:"record",keyType:k,valueType,...util_exports.normalizeParams(params)})}function looseRecord(keyType,valueType,params){return new ZodRecord({type:"record",keyType,valueType,mode:"loose",...util_exports.normalizeParams(params)})}var ZodMap=$constructor("ZodMap",(inst,def)=>{$ZodMap.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>mapProcessor(inst,ctx,json2,params),inst.keyType=def.keyType,inst.valueType=def.valueType,inst.min=(...args)=>inst.check(_minSize(...args)),inst.nonempty=params=>inst.check(_minSize(1,params)),inst.max=(...args)=>inst.check(_maxSize(...args)),inst.size=(...args)=>inst.check(_size(...args))});function map(keyType,valueType,params){return new ZodMap({type:"map",keyType,valueType,...util_exports.normalizeParams(params)})}var ZodSet=$constructor("ZodSet",(inst,def)=>{$ZodSet.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>setProcessor(inst,ctx,json2,params),inst.min=(...args)=>inst.check(_minSize(...args)),inst.nonempty=params=>inst.check(_minSize(1,params)),inst.max=(...args)=>inst.check(_maxSize(...args)),inst.size=(...args)=>inst.check(_size(...args))});function set(valueType,params){return new ZodSet({type:"set",valueType,...util_exports.normalizeParams(params)})}var ZodEnum=$constructor("ZodEnum",(inst,def)=>{$ZodEnum.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>enumProcessor(inst,ctx,json2,params),inst.enum=def.entries,inst.options=Object.values(def.entries);let keys=new Set(Object.keys(def.entries));inst.extract=(values,params)=>{let newEntries={};for(let value of values)if(keys.has(value))newEntries[value]=def.entries[value];else throw new Error(`Key ${value} not found in enum`);return new ZodEnum({...def,checks:[],...util_exports.normalizeParams(params),entries:newEntries})},inst.exclude=(values,params)=>{let newEntries={...def.entries};for(let value of values)if(keys.has(value))delete newEntries[value];else throw new Error(`Key ${value} not found in enum`);return new ZodEnum({...def,checks:[],...util_exports.normalizeParams(params),entries:newEntries})}});function _enum2(values,params){let entries=Array.isArray(values)?Object.fromEntries(values.map(v=>[v,v])):values;return new ZodEnum({type:"enum",entries,...util_exports.normalizeParams(params)})}function nativeEnum(entries,params){return new ZodEnum({type:"enum",entries,...util_exports.normalizeParams(params)})}var ZodLiteral=$constructor("ZodLiteral",(inst,def)=>{$ZodLiteral.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>literalProcessor(inst,ctx,json2,params),inst.values=new Set(def.values),Object.defineProperty(inst,"value",{get(){if(def.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return def.values[0]}})});function literal(value,params){return new ZodLiteral({type:"literal",values:Array.isArray(value)?value:[value],...util_exports.normalizeParams(params)})}var ZodFile=$constructor("ZodFile",(inst,def)=>{$ZodFile.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>fileProcessor(inst,ctx,json2,params),inst.min=(size,params)=>inst.check(_minSize(size,params)),inst.max=(size,params)=>inst.check(_maxSize(size,params)),inst.mime=(types,params)=>inst.check(_mime(Array.isArray(types)?types:[types],params))});function file(params){return _file(ZodFile,params)}var ZodTransform=$constructor("ZodTransform",(inst,def)=>{$ZodTransform.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>transformProcessor(inst,ctx,json2,params),inst._zod.parse=(payload,_ctx)=>{if(_ctx.direction==="backward")throw new $ZodEncodeError(inst.constructor.name);payload.addIssue=issue2=>{if(typeof issue2=="string")payload.issues.push(util_exports.issue(issue2,payload.value,def));else{let _issue=issue2;_issue.fatal&&(_issue.continue=!1),_issue.code??(_issue.code="custom"),_issue.input??(_issue.input=payload.value),_issue.inst??(_issue.inst=inst),payload.issues.push(util_exports.issue(_issue))}};let output=def.transform(payload.value,payload);return output instanceof Promise?output.then(output2=>(payload.value=output2,payload)):(payload.value=output,payload)}});function transform(fn){return new ZodTransform({type:"transform",transform:fn})}var ZodOptional=$constructor("ZodOptional",(inst,def)=>{$ZodOptional.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>optionalProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function optional(innerType){return new ZodOptional({type:"optional",innerType})}var ZodExactOptional=$constructor("ZodExactOptional",(inst,def)=>{$ZodExactOptional.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>optionalProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function exactOptional(innerType){return new ZodExactOptional({type:"optional",innerType})}var ZodNullable=$constructor("ZodNullable",(inst,def)=>{$ZodNullable.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>nullableProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function nullable(innerType){return new ZodNullable({type:"nullable",innerType})}function nullish2(innerType){return optional(nullable(innerType))}var ZodDefault=$constructor("ZodDefault",(inst,def)=>{$ZodDefault.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>defaultProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType,inst.removeDefault=inst.unwrap});function _default2(innerType,defaultValue){return new ZodDefault({type:"default",innerType,get defaultValue(){return typeof defaultValue=="function"?defaultValue():util_exports.shallowClone(defaultValue)}})}var ZodPrefault=$constructor("ZodPrefault",(inst,def)=>{$ZodPrefault.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>prefaultProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function prefault(innerType,defaultValue){return new ZodPrefault({type:"prefault",innerType,get defaultValue(){return typeof defaultValue=="function"?defaultValue():util_exports.shallowClone(defaultValue)}})}var ZodNonOptional=$constructor("ZodNonOptional",(inst,def)=>{$ZodNonOptional.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>nonoptionalProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function nonoptional(innerType,params){return new ZodNonOptional({type:"nonoptional",innerType,...util_exports.normalizeParams(params)})}var ZodSuccess=$constructor("ZodSuccess",(inst,def)=>{$ZodSuccess.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>successProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function success(innerType){return new ZodSuccess({type:"success",innerType})}var ZodCatch=$constructor("ZodCatch",(inst,def)=>{$ZodCatch.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>catchProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType,inst.removeCatch=inst.unwrap});function _catch2(innerType,catchValue){return new ZodCatch({type:"catch",innerType,catchValue:typeof catchValue=="function"?catchValue:()=>catchValue})}var ZodNaN=$constructor("ZodNaN",(inst,def)=>{$ZodNaN.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>nanProcessor(inst,ctx,json2,params)});function nan(params){return _nan(ZodNaN,params)}var ZodPipe=$constructor("ZodPipe",(inst,def)=>{$ZodPipe.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>pipeProcessor(inst,ctx,json2,params),inst.in=def.in,inst.out=def.out});function pipe(in_,out){return new ZodPipe({type:"pipe",in:in_,out})}var ZodCodec=$constructor("ZodCodec",(inst,def)=>{ZodPipe.init(inst,def),$ZodCodec.init(inst,def)});function codec(in_,out,params){return new ZodCodec({type:"pipe",in:in_,out,transform:params.decode,reverseTransform:params.encode})}var ZodReadonly=$constructor("ZodReadonly",(inst,def)=>{$ZodReadonly.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>readonlyProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function readonly(innerType){return new ZodReadonly({type:"readonly",innerType})}var ZodTemplateLiteral=$constructor("ZodTemplateLiteral",(inst,def)=>{$ZodTemplateLiteral.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>templateLiteralProcessor(inst,ctx,json2,params)});function templateLiteral(parts,params){return new ZodTemplateLiteral({type:"template_literal",parts,...util_exports.normalizeParams(params)})}var ZodLazy=$constructor("ZodLazy",(inst,def)=>{$ZodLazy.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>lazyProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.getter()});function lazy(getter){return new ZodLazy({type:"lazy",getter})}var ZodPromise=$constructor("ZodPromise",(inst,def)=>{$ZodPromise.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>promiseProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function promise(innerType){return new ZodPromise({type:"promise",innerType})}var ZodFunction=$constructor("ZodFunction",(inst,def)=>{$ZodFunction.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>functionProcessor(inst,ctx,json2,params)});function _function(params){return new ZodFunction({type:"function",input:Array.isArray(params?.input)?tuple(params?.input):params?.input??array(unknown()),output:params?.output??unknown()})}var ZodCustom=$constructor("ZodCustom",(inst,def)=>{$ZodCustom.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>customProcessor(inst,ctx,json2,params)});function check(fn){let ch=new $ZodCheck({check:"custom"});return ch._zod.check=fn,ch}function custom(fn,_params){return _custom(ZodCustom,fn??(()=>!0),_params)}function refine(fn,_params={}){return _refine(ZodCustom,fn,_params)}function superRefine(fn){return _superRefine(fn)}var describe2=describe,meta2=meta;function _instanceof(cls,params={}){let inst=new ZodCustom({type:"custom",check:"custom",fn:data=>data instanceof cls,abort:!0,...util_exports.normalizeParams(params)});return inst._zod.bag.Class=cls,inst._zod.check=payload=>{payload.value instanceof cls||payload.issues.push({code:"invalid_type",expected:cls.name,input:payload.value,inst,path:[...inst._zod.def.path??[]]})},inst}var stringbool=(...args)=>_stringbool({Codec:ZodCodec,Boolean:ZodBoolean,String:ZodString},...args);function json(params){let jsonSchema=lazy(()=>union([string2(params),number2(),boolean2(),_null3(),array(jsonSchema),record(string2(),jsonSchema)]));return jsonSchema}function preprocess(fn,schema){return pipe(transform(fn),schema)}var ZodIssueCode={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};function setErrorMap(map2){config({customError:map2})}function getErrorMap(){return config().customError}var ZodFirstPartyTypeKind;ZodFirstPartyTypeKind||(ZodFirstPartyTypeKind={});var z={...schemas_exports2,...checks_exports2,iso:iso_exports},RECOGNIZED_KEYS=new Set(["$schema","$ref","$defs","definitions","$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor","type","enum","const","anyOf","oneOf","allOf","not","properties","required","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","items","prefixItems","additionalItems","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minLength","maxLength","pattern","format","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","description","default","contentEncoding","contentMediaType","contentSchema","unevaluatedItems","unevaluatedProperties","if","then","else","dependentSchemas","dependentRequired","nullable","readOnly"]);function detectVersion(schema,defaultTarget){let $schema=schema.$schema;return $schema==="https://json-schema.org/draft/2020-12/schema"?"draft-2020-12":$schema==="http://json-schema.org/draft-07/schema#"?"draft-7":$schema==="http://json-schema.org/draft-04/schema#"?"draft-4":defaultTarget??"draft-2020-12"}function resolveRef(ref,ctx){if(!ref.startsWith("#"))throw new Error("External $ref is not supported, only local refs (#/...) are allowed");let path19=ref.slice(1).split("/").filter(Boolean);if(path19.length===0)return ctx.rootSchema;let defsKey=ctx.version==="draft-2020-12"?"$defs":"definitions";if(path19[0]===defsKey){let key=path19[1];if(!key||!ctx.defs[key])throw new Error(`Reference not found: ${ref}`);return ctx.defs[key]}throw new Error(`Reference not found: ${ref}`)}function convertBaseSchema(schema,ctx){if(schema.not!==void 0){if(typeof schema.not=="object"&&Object.keys(schema.not).length===0)return z.never();throw new Error("not is not supported in Zod (except { not: {} } for never)")}if(schema.unevaluatedItems!==void 0)throw new Error("unevaluatedItems is not supported");if(schema.unevaluatedProperties!==void 0)throw new Error("unevaluatedProperties is not supported");if(schema.if!==void 0||schema.then!==void 0||schema.else!==void 0)throw new Error("Conditional schemas (if/then/else) are not supported");if(schema.dependentSchemas!==void 0||schema.dependentRequired!==void 0)throw new Error("dependentSchemas and dependentRequired are not supported");if(schema.$ref){let refPath=schema.$ref;if(ctx.refs.has(refPath))return ctx.refs.get(refPath);if(ctx.processing.has(refPath))return z.lazy(()=>{if(!ctx.refs.has(refPath))throw new Error(`Circular reference not resolved: ${refPath}`);return ctx.refs.get(refPath)});ctx.processing.add(refPath);let resolved=resolveRef(refPath,ctx),zodSchema2=convertSchema(resolved,ctx);return ctx.refs.set(refPath,zodSchema2),ctx.processing.delete(refPath),zodSchema2}if(schema.enum!==void 0){let enumValues=schema.enum;if(ctx.version==="openapi-3.0"&&schema.nullable===!0&&enumValues.length===1&&enumValues[0]===null)return z.null();if(enumValues.length===0)return z.never();if(enumValues.length===1)return z.literal(enumValues[0]);if(enumValues.every(v=>typeof v=="string"))return z.enum(enumValues);let literalSchemas=enumValues.map(v=>z.literal(v));return literalSchemas.length<2?literalSchemas[0]:z.union([literalSchemas[0],literalSchemas[1],...literalSchemas.slice(2)])}if(schema.const!==void 0)return z.literal(schema.const);let type=schema.type;if(Array.isArray(type)){let typeSchemas=type.map(t=>{let typeSchema={...schema,type:t};return convertBaseSchema(typeSchema,ctx)});return typeSchemas.length===0?z.never():typeSchemas.length===1?typeSchemas[0]:z.union(typeSchemas)}if(!type)return z.any();let zodSchema;switch(type){case"string":{let stringSchema=z.string();if(schema.format){let format=schema.format;format==="email"?stringSchema=stringSchema.check(z.email()):format==="uri"||format==="uri-reference"?stringSchema=stringSchema.check(z.url()):format==="uuid"||format==="guid"?stringSchema=stringSchema.check(z.uuid()):format==="date-time"?stringSchema=stringSchema.check(z.iso.datetime()):format==="date"?stringSchema=stringSchema.check(z.iso.date()):format==="time"?stringSchema=stringSchema.check(z.iso.time()):format==="duration"?stringSchema=stringSchema.check(z.iso.duration()):format==="ipv4"?stringSchema=stringSchema.check(z.ipv4()):format==="ipv6"?stringSchema=stringSchema.check(z.ipv6()):format==="mac"?stringSchema=stringSchema.check(z.mac()):format==="cidr"?stringSchema=stringSchema.check(z.cidrv4()):format==="cidr-v6"?stringSchema=stringSchema.check(z.cidrv6()):format==="base64"?stringSchema=stringSchema.check(z.base64()):format==="base64url"?stringSchema=stringSchema.check(z.base64url()):format==="e164"?stringSchema=stringSchema.check(z.e164()):format==="jwt"?stringSchema=stringSchema.check(z.jwt()):format==="emoji"?stringSchema=stringSchema.check(z.emoji()):format==="nanoid"?stringSchema=stringSchema.check(z.nanoid()):format==="cuid"?stringSchema=stringSchema.check(z.cuid()):format==="cuid2"?stringSchema=stringSchema.check(z.cuid2()):format==="ulid"?stringSchema=stringSchema.check(z.ulid()):format==="xid"?stringSchema=stringSchema.check(z.xid()):format==="ksuid"&&(stringSchema=stringSchema.check(z.ksuid()))}typeof schema.minLength=="number"&&(stringSchema=stringSchema.min(schema.minLength)),typeof schema.maxLength=="number"&&(stringSchema=stringSchema.max(schema.maxLength)),schema.pattern&&(stringSchema=stringSchema.regex(new RegExp(schema.pattern))),zodSchema=stringSchema;break}case"number":case"integer":{let numberSchema=type==="integer"?z.number().int():z.number();typeof schema.minimum=="number"&&(numberSchema=numberSchema.min(schema.minimum)),typeof schema.maximum=="number"&&(numberSchema=numberSchema.max(schema.maximum)),typeof schema.exclusiveMinimum=="number"?numberSchema=numberSchema.gt(schema.exclusiveMinimum):schema.exclusiveMinimum===!0&&typeof schema.minimum=="number"&&(numberSchema=numberSchema.gt(schema.minimum)),typeof schema.exclusiveMaximum=="number"?numberSchema=numberSchema.lt(schema.exclusiveMaximum):schema.exclusiveMaximum===!0&&typeof schema.maximum=="number"&&(numberSchema=numberSchema.lt(schema.maximum)),typeof schema.multipleOf=="number"&&(numberSchema=numberSchema.multipleOf(schema.multipleOf)),zodSchema=numberSchema;break}case"boolean":{zodSchema=z.boolean();break}case"null":{zodSchema=z.null();break}case"object":{let shape={},properties=schema.properties||{},requiredSet=new Set(schema.required||[]);for(let[key,propSchema]of Object.entries(properties)){let propZodSchema=convertSchema(propSchema,ctx);shape[key]=requiredSet.has(key)?propZodSchema:propZodSchema.optional()}if(schema.propertyNames){let keySchema=convertSchema(schema.propertyNames,ctx),valueSchema=schema.additionalProperties&&typeof schema.additionalProperties=="object"?convertSchema(schema.additionalProperties,ctx):z.any();if(Object.keys(shape).length===0){zodSchema=z.record(keySchema,valueSchema);break}let objectSchema2=z.object(shape).passthrough(),recordSchema=z.looseRecord(keySchema,valueSchema);zodSchema=z.intersection(objectSchema2,recordSchema);break}if(schema.patternProperties){let patternProps=schema.patternProperties,patternKeys=Object.keys(patternProps),looseRecords=[];for(let pattern of patternKeys){let patternValue=convertSchema(patternProps[pattern],ctx),keySchema=z.string().regex(new RegExp(pattern));looseRecords.push(z.looseRecord(keySchema,patternValue))}let schemasToIntersect=[];if(Object.keys(shape).length>0&&schemasToIntersect.push(z.object(shape).passthrough()),schemasToIntersect.push(...looseRecords),schemasToIntersect.length===0)zodSchema=z.object({}).passthrough();else if(schemasToIntersect.length===1)zodSchema=schemasToIntersect[0];else{let result=z.intersection(schemasToIntersect[0],schemasToIntersect[1]);for(let i=2;i<schemasToIntersect.length;i++)result=z.intersection(result,schemasToIntersect[i]);zodSchema=result}break}let objectSchema=z.object(shape);schema.additionalProperties===!1?zodSchema=objectSchema.strict():typeof schema.additionalProperties=="object"?zodSchema=objectSchema.catchall(convertSchema(schema.additionalProperties,ctx)):zodSchema=objectSchema.passthrough();break}case"array":{let prefixItems=schema.prefixItems,items=schema.items;if(prefixItems&&Array.isArray(prefixItems)){let tupleItems=prefixItems.map(item=>convertSchema(item,ctx)),rest=items&&typeof items=="object"&&!Array.isArray(items)?convertSchema(items,ctx):void 0;rest?zodSchema=z.tuple(tupleItems).rest(rest):zodSchema=z.tuple(tupleItems),typeof schema.minItems=="number"&&(zodSchema=zodSchema.check(z.minLength(schema.minItems))),typeof schema.maxItems=="number"&&(zodSchema=zodSchema.check(z.maxLength(schema.maxItems)))}else if(Array.isArray(items)){let tupleItems=items.map(item=>convertSchema(item,ctx)),rest=schema.additionalItems&&typeof schema.additionalItems=="object"?convertSchema(schema.additionalItems,ctx):void 0;rest?zodSchema=z.tuple(tupleItems).rest(rest):zodSchema=z.tuple(tupleItems),typeof schema.minItems=="number"&&(zodSchema=zodSchema.check(z.minLength(schema.minItems))),typeof schema.maxItems=="number"&&(zodSchema=zodSchema.check(z.maxLength(schema.maxItems)))}else if(items!==void 0){let element=convertSchema(items,ctx),arraySchema=z.array(element);typeof schema.minItems=="number"&&(arraySchema=arraySchema.min(schema.minItems)),typeof schema.maxItems=="number"&&(arraySchema=arraySchema.max(schema.maxItems)),zodSchema=arraySchema}else zodSchema=z.array(z.any());break}default:throw new Error(`Unsupported type: ${type}`)}return schema.description&&(zodSchema=zodSchema.describe(schema.description)),schema.default!==void 0&&(zodSchema=zodSchema.default(schema.default)),zodSchema}function convertSchema(schema,ctx){if(typeof schema=="boolean")return schema?z.any():z.never();let baseSchema=convertBaseSchema(schema,ctx),hasExplicitType=schema.type||schema.enum!==void 0||schema.const!==void 0;if(schema.anyOf&&Array.isArray(schema.anyOf)){let options=schema.anyOf.map(s=>convertSchema(s,ctx)),anyOfUnion=z.union(options);baseSchema=hasExplicitType?z.intersection(baseSchema,anyOfUnion):anyOfUnion}if(schema.oneOf&&Array.isArray(schema.oneOf)){let options=schema.oneOf.map(s=>convertSchema(s,ctx)),oneOfUnion=z.xor(options);baseSchema=hasExplicitType?z.intersection(baseSchema,oneOfUnion):oneOfUnion}if(schema.allOf&&Array.isArray(schema.allOf))if(schema.allOf.length===0)baseSchema=hasExplicitType?baseSchema:z.any();else{let result=hasExplicitType?baseSchema:convertSchema(schema.allOf[0],ctx),startIdx=hasExplicitType?0:1;for(let i=startIdx;i<schema.allOf.length;i++)result=z.intersection(result,convertSchema(schema.allOf[i],ctx));baseSchema=result}schema.nullable===!0&&ctx.version==="openapi-3.0"&&(baseSchema=z.nullable(baseSchema)),schema.readOnly===!0&&(baseSchema=z.readonly(baseSchema));let extraMeta={},coreMetadataKeys=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let key of coreMetadataKeys)key in schema&&(extraMeta[key]=schema[key]);let contentMetadataKeys=["contentEncoding","contentMediaType","contentSchema"];for(let key of contentMetadataKeys)key in schema&&(extraMeta[key]=schema[key]);for(let key of Object.keys(schema))RECOGNIZED_KEYS.has(key)||(extraMeta[key]=schema[key]);return Object.keys(extraMeta).length>0&&ctx.registry.add(baseSchema,extraMeta),baseSchema}function fromJSONSchema(schema,params){if(typeof schema=="boolean")return schema?z.any():z.never();let version2=detectVersion(schema,params?.defaultTarget),defs=schema.$defs||schema.definitions||{},ctx={version:version2,defs,refs:new Map,processing:new Set,rootSchema:schema,registry:params?.registry??globalRegistry};return convertSchema(schema,ctx)}var coerce_exports={};__export(coerce_exports,{bigint:()=>bigint3,boolean:()=>boolean3,date:()=>date4,number:()=>number3,string:()=>string3});function string3(params){return _coercedString(ZodString,params)}function number3(params){return _coercedNumber(ZodNumber,params)}function boolean3(params){return _coercedBoolean(ZodBoolean,params)}function bigint3(params){return _coercedBigint(ZodBigInt,params)}function date4(params){return _coercedDate(ZodDate,params)}config(en_default());var skippedItem=Symbol("skippedItem");function defaultOnError(schema,fallback){return schema.catch(fallback)}function requiredDefaultOnError(schema,fallback){let schemaWithCatch=schema.catch(fallback);return external_exports.unknown().transform((value,context)=>value!==void 0?schemaWithCatch.parse(value):(context.addIssue({code:"custom",message:"Required value is missing"}),external_exports.NEVER))}function stringTag(value,key){if(value===null||typeof value!="object"||Array.isArray(value))return;let tag=value[key];return typeof tag=="string"?tag:void 0}function excludeKnownTags(schema,key,knownTags){return schema.superRefine((value,context)=>{let tag=stringTag(value,key);tag!==void 0&&knownTags.includes(tag)&&context.addIssue({code:"custom",path:[key],message:`${key} ${JSON.stringify(tag)} is reserved by a known variant, but the value does not match that variant's schema`})})}function preserveCustomPayload(schema,key,knownTags){return external_exports.unknown().transform((value,context)=>{let result=schema.safeParse(value);if(!result.success){for(let issue2 of result.error.issues)context.addIssue({...issue2,input:value});return external_exports.NEVER}let output=result.data,tag=stringTag(value,key);if(tag!==void 0&&!knownTags.includes(tag)){let raw=value;for(let[property,rawValue]of Object.entries(raw))property!=="__proto__"&&(Object.hasOwn(output,property)||(output[property]=rawValue))}return output})}function vecSkipError(itemSchema){return external_exports.array(itemSchema.catch(skippedItem)).transform(items=>items.filter(item=>item!==skippedItem))}var zRequestId=union([number2(),string2()]).nullable(),zSessionId=string2(),zWriteTextFileRequest=object({sessionId:zSessionId,path:string2(),content:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zReadTextFileRequest=object({sessionId:zSessionId,path:string2(),line:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),limit:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zToolCallId=string2(),zToolKind=union([literal("read"),literal("edit"),literal("delete"),literal("move"),literal("search"),literal("execute"),literal("think"),literal("fetch"),literal("switch_mode"),literal("other")]),zToolCallStatus=union([literal("pending"),literal("in_progress"),literal("completed"),literal("failed")]),zRole=union([literal("assistant"),literal("user")]),zAnnotations=object({audience:defaultOnError(vecSkipError(zRole).nullish(),()=>{}),lastModified:defaultOnError(string2().nullish(),()=>{}),priority:defaultOnError(number2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTextContent=object({annotations:defaultOnError(zAnnotations.nullish(),()=>{}),text:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zImageContent=object({annotations:defaultOnError(zAnnotations.nullish(),()=>{}),data:string2(),mimeType:string2(),uri:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAudioContent=object({annotations:defaultOnError(zAnnotations.nullish(),()=>{}),data:string2(),mimeType:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zResourceLink=object({annotations:defaultOnError(zAnnotations.nullish(),()=>{}),description:defaultOnError(string2().nullish(),()=>{}),mimeType:defaultOnError(string2().nullish(),()=>{}),name:string2(),size:defaultOnError(number2().nullish(),()=>{}),title:defaultOnError(string2().nullish(),()=>{}),uri:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTextResourceContents=object({mimeType:defaultOnError(string2().nullish(),()=>{}),text:string2(),uri:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zBlobResourceContents=object({blob:string2(),mimeType:defaultOnError(string2().nullish(),()=>{}),uri:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zEmbeddedResourceResource=union([zTextResourceContents,zBlobResourceContents]),zEmbeddedResource=object({annotations:defaultOnError(zAnnotations.nullish(),()=>{}),resource:zEmbeddedResourceResource,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zContentBlock=union([zTextContent.and(object({type:literal("text")})),zImageContent.and(object({type:literal("image")})),zAudioContent.and(object({type:literal("audio")})),zResourceLink.and(object({type:literal("resource_link")})),zEmbeddedResource.and(object({type:literal("resource")}))]),zContent=object({content:zContentBlock,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDiff=object({path:string2(),oldText:defaultOnError(string2().nullish(),()=>{}),newText:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTerminalId=string2(),zTerminal=object({terminalId:zTerminalId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zToolCallContent=union([zContent.and(object({type:literal("content")})),zDiff.and(object({type:literal("diff")})),zTerminal.and(object({type:literal("terminal")}))]),zToolCallLocation=object({path:string2(),line:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zToolCallUpdate=object({toolCallId:zToolCallId,kind:defaultOnError(zToolKind.nullish(),()=>{}),status:defaultOnError(zToolCallStatus.nullish(),()=>{}),title:defaultOnError(string2().nullish(),()=>{}),content:defaultOnError(vecSkipError(zToolCallContent).nullish(),()=>{}),locations:defaultOnError(vecSkipError(zToolCallLocation).nullish(),()=>{}),rawInput:defaultOnError(unknown().optional(),()=>{}),rawOutput:defaultOnError(unknown().optional(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPermissionOptionId=string2(),zPermissionOptionKind=union([literal("allow_once"),literal("allow_always"),literal("reject_once"),literal("reject_always")]),zPermissionOption=object({optionId:zPermissionOptionId,name:string2(),kind:zPermissionOptionKind,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zRequestPermissionRequest=object({sessionId:zSessionId,toolCall:zToolCallUpdate,options:array(zPermissionOption),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zEnvVariable=object({name:string2(),value:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCreateTerminalRequest=object({sessionId:zSessionId,command:string2(),args:defaultOnError(vecSkipError(string2()).optional(),()=>[]),env:defaultOnError(vecSkipError(zEnvVariable).optional(),()=>[]),cwd:defaultOnError(string2().nullish(),()=>{}),outputByteLimit:defaultOnError(number2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTerminalOutputRequest=object({sessionId:zSessionId,terminalId:zTerminalId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zReleaseTerminalRequest=object({sessionId:zSessionId,terminalId:zTerminalId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zWaitForTerminalExitRequest=object({sessionId:zSessionId,terminalId:zTerminalId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zKillTerminalRequest=object({sessionId:zSessionId,terminalId:zTerminalId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zElicitationSessionScope=object({sessionId:zSessionId,toolCallId:defaultOnError(zToolCallId.nullish(),()=>{})}),zElicitationRequestScope=object({requestId:zRequestId}),zElicitationSchemaType=literal("object"),zStringFormat=union([literal("email"),literal("uri"),literal("date"),literal("date-time")]),zEnumOption=object({const:string2(),title:string2(),description:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zStringPropertySchema=object({title:defaultOnError(string2().nullish(),()=>{}),description:defaultOnError(string2().nullish(),()=>{}),minLength:int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),maxLength:int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),pattern:string2().nullish(),format:zStringFormat.nullish(),default:defaultOnError(string2().nullish(),()=>{}),enum:array(string2()).nullish(),oneOf:array(zEnumOption).nullish(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNumberPropertySchema=object({title:defaultOnError(string2().nullish(),()=>{}),description:defaultOnError(string2().nullish(),()=>{}),minimum:number2().nullish(),maximum:number2().nullish(),default:defaultOnError(number2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zIntegerPropertySchema=object({title:defaultOnError(string2().nullish(),()=>{}),description:defaultOnError(string2().nullish(),()=>{}),minimum:number2().nullish(),maximum:number2().nullish(),default:defaultOnError(number2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zBooleanPropertySchema=object({title:defaultOnError(string2().nullish(),()=>{}),description:defaultOnError(string2().nullish(),()=>{}),default:defaultOnError(boolean2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zStringMultiSelectItems=object({enum:array(string2()),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTitledMultiSelectItems=object({anyOf:array(zEnumOption),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMultiSelectItems=preserveCustomPayload(union([zStringMultiSelectItems.and(object({type:literal("string")})),excludeKnownTags(object({type:string2()}),"type",["string"]),zTitledMultiSelectItems]),"type",["string"]),zMultiSelectPropertySchema=object({title:defaultOnError(string2().nullish(),()=>{}),description:defaultOnError(string2().nullish(),()=>{}),minItems:number2().nullish(),maxItems:number2().nullish(),items:zMultiSelectItems,default:defaultOnError(vecSkipError(string2()).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zElicitationPropertySchema=preserveCustomPayload(union([zStringPropertySchema.and(object({type:literal("string")})),zNumberPropertySchema.and(object({type:literal("number")})),zIntegerPropertySchema.and(object({type:literal("integer")})),zBooleanPropertySchema.and(object({type:literal("boolean")})),zMultiSelectPropertySchema.and(object({type:literal("array")})),excludeKnownTags(object({type:string2()}),"type",["array","boolean","integer","number","string"])]),"type",["array","boolean","integer","number","string"]),zElicitationSchema=object({type:defaultOnError(zElicitationSchemaType.optional().default("object"),()=>"object"),title:defaultOnError(string2().nullish(),()=>{}),properties:record(string2(),zElicitationPropertySchema).optional().default({}),required:array(string2()).nullish(),description:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zElicitationFormMode=intersection(union([zElicitationSessionScope,zElicitationRequestScope]),object({requestedSchema:zElicitationSchema})),zElicitationId=string2(),zElicitationUrlMode=intersection(union([zElicitationSessionScope,zElicitationRequestScope]),object({elicitationId:zElicitationId,url:url()})),zCreateElicitationRequest=preserveCustomPayload(intersection(union([zElicitationFormMode.and(object({mode:literal("form")})),zElicitationUrlMode.and(object({mode:literal("url")})),excludeKnownTags(intersection(union([zElicitationSessionScope,zElicitationRequestScope]),object({mode:string2()})),"mode",["form","url"])]),object({message:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})})),"mode",["form","url"]),zMcpServerAcpId=string2(),zConnectMcpRequest=object({serverId:zMcpServerAcpId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMcpConnectionId=string2(),zMessageMcpRequest=object({connectionId:zMcpConnectionId,method:string2(),params:record(string2(),unknown()).nullish(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDisconnectMcpRequest=object({connectionId:zMcpConnectionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zExtRequest=unknown(),zAgentRequest=object({id:zRequestId,method:string2(),params:union([zWriteTextFileRequest,zReadTextFileRequest,zRequestPermissionRequest,zCreateTerminalRequest,zTerminalOutputRequest,zReleaseTerminalRequest,zWaitForTerminalExitRequest,zKillTerminalRequest,zCreateElicitationRequest,zConnectMcpRequest,zMessageMcpRequest,zDisconnectMcpRequest,zExtRequest]).nullish()}),zProtocolVersion=int().gte(0).lte(65535),zPromptCapabilities=object({image:defaultOnError(boolean2().optional().default(!1),()=>!1),audio:defaultOnError(boolean2().optional().default(!1),()=>!1),embeddedContext:defaultOnError(boolean2().optional().default(!1),()=>!1),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMcpCapabilities=object({http:defaultOnError(boolean2().optional().default(!1),()=>!1),sse:defaultOnError(boolean2().optional().default(!1),()=>!1),acp:defaultOnError(boolean2().optional().default(!1),()=>!1),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionListCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionDeleteCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionAdditionalDirectoriesCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionForkCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionResumeCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionCloseCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionCapabilities=object({list:defaultOnError(zSessionListCapabilities.nullish(),()=>{}),delete:defaultOnError(zSessionDeleteCapabilities.nullish(),()=>{}),additionalDirectories:defaultOnError(zSessionAdditionalDirectoriesCapabilities.nullish(),()=>{}),fork:defaultOnError(zSessionForkCapabilities.nullish(),()=>{}),resume:defaultOnError(zSessionResumeCapabilities.nullish(),()=>{}),close:defaultOnError(zSessionCloseCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zLogoutCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAgentAuthCapabilities=object({logout:defaultOnError(zLogoutCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zProvidersCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesDocumentDidOpenCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTextDocumentSyncKind=union([literal("full"),literal("incremental")]),zNesDocumentDidChangeCapabilities=object({syncKind:zTextDocumentSyncKind,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesDocumentDidCloseCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesDocumentDidSaveCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesDocumentDidFocusCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesDocumentEventCapabilities=object({didOpen:defaultOnError(zNesDocumentDidOpenCapabilities.nullish(),()=>{}),didChange:defaultOnError(zNesDocumentDidChangeCapabilities.nullish(),()=>{}),didClose:defaultOnError(zNesDocumentDidCloseCapabilities.nullish(),()=>{}),didSave:defaultOnError(zNesDocumentDidSaveCapabilities.nullish(),()=>{}),didFocus:defaultOnError(zNesDocumentDidFocusCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesEventCapabilities=object({document:defaultOnError(zNesDocumentEventCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesRecentFilesCapabilities=object({maxCount:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesRelatedSnippetsCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesEditHistoryCapabilities=object({maxCount:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesUserActionsCapabilities=object({maxCount:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesOpenFilesCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesDiagnosticsCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesContextCapabilities=object({recentFiles:defaultOnError(zNesRecentFilesCapabilities.nullish(),()=>{}),relatedSnippets:defaultOnError(zNesRelatedSnippetsCapabilities.nullish(),()=>{}),editHistory:defaultOnError(zNesEditHistoryCapabilities.nullish(),()=>{}),userActions:defaultOnError(zNesUserActionsCapabilities.nullish(),()=>{}),openFiles:defaultOnError(zNesOpenFilesCapabilities.nullish(),()=>{}),diagnostics:defaultOnError(zNesDiagnosticsCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesCapabilities=object({events:defaultOnError(zNesEventCapabilities.nullish(),()=>{}),context:defaultOnError(zNesContextCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPositionEncodingKind=union([literal("utf-16"),literal("utf-32"),literal("utf-8")]),zAgentCapabilities=object({loadSession:defaultOnError(boolean2().optional().default(!1),()=>!1),promptCapabilities:defaultOnError(zPromptCapabilities.optional().default({image:!1,audio:!1,embeddedContext:!1}),()=>({image:!1,audio:!1,embeddedContext:!1})),mcpCapabilities:defaultOnError(zMcpCapabilities.optional().default({http:!1,sse:!1,acp:!1}),()=>({http:!1,sse:!1,acp:!1})),sessionCapabilities:defaultOnError(zSessionCapabilities.optional().default({}),()=>({})),auth:defaultOnError(zAgentAuthCapabilities.optional().default({}),()=>({})),providers:defaultOnError(zProvidersCapabilities.nullish(),()=>{}),nes:defaultOnError(zNesCapabilities.nullish(),()=>{}),positionEncoding:defaultOnError(zPositionEncodingKind.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthMethodId=string2(),zAuthEnvVar=object({name:string2(),label:defaultOnError(string2().nullish(),()=>{}),secret:defaultOnError(boolean2().optional().default(!0),()=>!0),optional:defaultOnError(boolean2().optional().default(!1),()=>!1),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthMethodEnvVar=object({id:zAuthMethodId,name:string2(),description:defaultOnError(string2().nullish(),()=>{}),vars:requiredDefaultOnError(vecSkipError(zAuthEnvVar),()=>[]),link:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthMethodTerminal=object({id:zAuthMethodId,name:string2(),description:defaultOnError(string2().nullish(),()=>{}),args:defaultOnError(vecSkipError(string2()).optional(),()=>[]),env:defaultOnError(record(string2(),string2()).optional(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthMethodAgent=object({id:zAuthMethodId,name:string2(),description:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthMethod=union([zAuthMethodEnvVar.and(object({type:literal("env_var")})),zAuthMethodTerminal.and(object({type:literal("terminal")})),zAuthMethodAgent]),zImplementation=object({name:string2(),title:defaultOnError(string2().nullish(),()=>{}),version:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zInitializeResponse=object({protocolVersion:zProtocolVersion,agentCapabilities:defaultOnError(zAgentCapabilities.optional().default({loadSession:!1,promptCapabilities:{image:!1,audio:!1,embeddedContext:!1},mcpCapabilities:{http:!1,sse:!1,acp:!1},sessionCapabilities:{},auth:{}}),()=>({loadSession:!1,promptCapabilities:{image:!1,audio:!1,embeddedContext:!1},mcpCapabilities:{http:!1,sse:!1,acp:!1},sessionCapabilities:{},auth:{}})),authMethods:defaultOnError(vecSkipError(zAuthMethod).optional().default([]),()=>[]),agentInfo:defaultOnError(zImplementation.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthenticateResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zProviderId=string2(),zLlmProtocol=union([literal("anthropic"),literal("openai"),literal("azure"),literal("vertex"),literal("bedrock"),string2()]),zProviderCurrentConfig=object({apiType:zLlmProtocol,baseUrl:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zProviderInfo=object({providerId:zProviderId,supported:requiredDefaultOnError(vecSkipError(zLlmProtocol),()=>[]),required:boolean2(),current:zProviderCurrentConfig.nullish(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zListProvidersResponse=object({providers:array(zProviderInfo),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSetProviderResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDisableProviderResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zLogoutResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionModeId=string2(),zSessionMode=object({id:zSessionModeId,name:string2(),description:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionModeState=object({currentModeId:zSessionModeId,availableModes:requiredDefaultOnError(vecSkipError(zSessionMode),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionConfigId=string2(),zSessionConfigOptionCategory=union([literal("mode"),literal("model"),literal("model_config"),literal("thought_level"),string2()]),zSessionConfigValueId=string2(),zSessionConfigSelectOption=object({value:zSessionConfigValueId,name:string2(),description:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionConfigGroupId=string2(),zSessionConfigSelectGroup=object({group:zSessionConfigGroupId,name:string2(),options:requiredDefaultOnError(vecSkipError(zSessionConfigSelectOption),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionConfigSelectOptions=union([array(zSessionConfigSelectOption),array(zSessionConfigSelectGroup)]),zSessionConfigSelect=object({currentValue:zSessionConfigValueId,options:zSessionConfigSelectOptions}),zSessionConfigBoolean=object({currentValue:boolean2()}),zSessionConfigOption=intersection(union([zSessionConfigSelect.and(object({type:literal("select")})),zSessionConfigBoolean.and(object({type:literal("boolean")}))]),object({id:zSessionConfigId,name:string2(),description:defaultOnError(string2().nullish(),()=>{}),category:defaultOnError(zSessionConfigOptionCategory.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})})),zNewSessionResponse=object({sessionId:zSessionId,modes:defaultOnError(zSessionModeState.nullish(),()=>{}),configOptions:defaultOnError(vecSkipError(zSessionConfigOption).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zLoadSessionResponse=object({modes:defaultOnError(zSessionModeState.nullish(),()=>{}),configOptions:defaultOnError(vecSkipError(zSessionConfigOption).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionInfo=object({sessionId:zSessionId,cwd:string2(),additionalDirectories:defaultOnError(vecSkipError(string2()).optional(),()=>[]),title:defaultOnError(string2().nullish(),()=>{}),updatedAt:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zListSessionsResponse=object({sessions:requiredDefaultOnError(vecSkipError(zSessionInfo),()=>[]),nextCursor:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDeleteSessionResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zForkSessionResponse=object({sessionId:zSessionId,modes:defaultOnError(zSessionModeState.nullish(),()=>{}),configOptions:defaultOnError(vecSkipError(zSessionConfigOption).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zResumeSessionResponse=object({modes:defaultOnError(zSessionModeState.nullish(),()=>{}),configOptions:defaultOnError(vecSkipError(zSessionConfigOption).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCloseSessionResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSetSessionModeResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSetSessionConfigOptionResponse=object({configOptions:requiredDefaultOnError(vecSkipError(zSessionConfigOption),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zStopReason=union([literal("end_turn"),literal("max_tokens"),literal("max_turn_requests"),literal("refusal"),literal("cancelled")]),zUsage=object({totalTokens:number2(),inputTokens:number2(),outputTokens:number2(),thoughtTokens:defaultOnError(number2().nullish(),()=>{}),cachedReadTokens:defaultOnError(number2().nullish(),()=>{}),cachedWriteTokens:defaultOnError(number2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPromptResponse=object({stopReason:zStopReason,usage:defaultOnError(zUsage.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zStartNesResponse=object({sessionId:zSessionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesSuggestionId=string2(),zPosition=object({line:int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}),character:int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zRange=object({start:zPosition,end:zPosition,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesTextEdit=object({range:zRange,newText:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesEditSuggestion=object({id:zNesSuggestionId,uri:string2(),edits:array(zNesTextEdit),cursorPosition:defaultOnError(zPosition.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesJumpSuggestion=object({id:zNesSuggestionId,uri:string2(),position:zPosition,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesRenameSuggestion=object({id:zNesSuggestionId,uri:string2(),position:zPosition,newName:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesSearchAndReplaceSuggestion=object({id:zNesSuggestionId,uri:string2(),search:string2(),replace:string2(),isRegex:boolean2().nullish(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesSuggestion=union([zNesEditSuggestion.and(object({kind:literal("edit")})),zNesJumpSuggestion.and(object({kind:literal("jump")})),zNesRenameSuggestion.and(object({kind:literal("rename")})),zNesSearchAndReplaceSuggestion.and(object({kind:literal("searchAndReplace")}))]),zSuggestNesResponse=object({suggestions:array(zNesSuggestion),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCloseNesResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zExtResponse=unknown(),zMessageMcpResponse=unknown(),zErrorCode=union([literal(-32700),literal(-32600),literal(-32601),literal(-32602),literal(-32603),literal(-32800),literal(-32e3),literal(-32002),int().min(-2147483648,{error:"Invalid value: Expected int32 to be >= -2147483648"}).max(2147483647,{error:"Invalid value: Expected int32 to be <= 2147483647"})]),zError=object({code:zErrorCode,message:string2(),data:defaultOnError(unknown().optional(),()=>{})}),zAgentResponse=union([object({id:zRequestId,result:union([zInitializeResponse,zAuthenticateResponse,zListProvidersResponse,zSetProviderResponse,zDisableProviderResponse,zLogoutResponse,zNewSessionResponse,zLoadSessionResponse,zListSessionsResponse,zDeleteSessionResponse,zForkSessionResponse,zResumeSessionResponse,zCloseSessionResponse,zSetSessionModeResponse,zSetSessionConfigOptionResponse,zPromptResponse,zStartNesResponse,zSuggestNesResponse,zCloseNesResponse,zExtResponse,zMessageMcpResponse])}),object({id:zRequestId,error:zError})]),zMessageId=string2(),zContentChunk=object({content:zContentBlock,messageId:defaultOnError(zMessageId.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zToolCall=object({toolCallId:zToolCallId,title:string2(),kind:defaultOnError(zToolKind.optional(),()=>{}),status:defaultOnError(zToolCallStatus.optional(),()=>{}),content:defaultOnError(vecSkipError(zToolCallContent).optional(),()=>[]),locations:defaultOnError(vecSkipError(zToolCallLocation).optional(),()=>[]),rawInput:defaultOnError(unknown().optional(),()=>{}),rawOutput:defaultOnError(unknown().optional(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlanEntryPriority=union([literal("high"),literal("medium"),literal("low")]),zPlanEntryStatus=union([literal("pending"),literal("in_progress"),literal("completed")]),zPlanEntry=object({content:string2(),priority:zPlanEntryPriority,status:zPlanEntryStatus,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlan=object({entries:requiredDefaultOnError(vecSkipError(zPlanEntry),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlanId=string2(),zPlanItems=object({planId:zPlanId,entries:requiredDefaultOnError(vecSkipError(zPlanEntry),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlanFile=object({planId:zPlanId,uri:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlanMarkdown=object({planId:zPlanId,content:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlanUpdateContent=union([zPlanItems.and(object({type:literal("items")})),zPlanFile.and(object({type:literal("file")})),zPlanMarkdown.and(object({type:literal("markdown")}))]),zPlanUpdate=object({plan:zPlanUpdateContent,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlanRemoved=object({planId:zPlanId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zUnstructuredCommandInput=object({hint:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAvailableCommandInput=zUnstructuredCommandInput,zAvailableCommand=object({name:string2(),description:string2(),input:defaultOnError(zAvailableCommandInput.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAvailableCommandsUpdate=object({availableCommands:requiredDefaultOnError(vecSkipError(zAvailableCommand),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCurrentModeUpdate=object({currentModeId:zSessionModeId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zConfigOptionUpdate=object({configOptions:requiredDefaultOnError(vecSkipError(zSessionConfigOption),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionInfoUpdate=object({title:defaultOnError(string2().nullish(),()=>{}),updatedAt:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCost=object({amount:number2(),currency:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zUsageUpdate=object({used:number2(),size:number2(),cost:defaultOnError(zCost.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionUpdate=union([zContentChunk.and(object({sessionUpdate:literal("user_message_chunk")})),zContentChunk.and(object({sessionUpdate:literal("agent_message_chunk")})),zContentChunk.and(object({sessionUpdate:literal("agent_thought_chunk")})),zToolCall.and(object({sessionUpdate:literal("tool_call")})),zToolCallUpdate.and(object({sessionUpdate:literal("tool_call_update")})),zPlan.and(object({sessionUpdate:literal("plan")})),zPlanUpdate.and(object({sessionUpdate:literal("plan_update")})),zPlanRemoved.and(object({sessionUpdate:literal("plan_removed")})),zAvailableCommandsUpdate.and(object({sessionUpdate:literal("available_commands_update")})),zCurrentModeUpdate.and(object({sessionUpdate:literal("current_mode_update")})),zConfigOptionUpdate.and(object({sessionUpdate:literal("config_option_update")})),zSessionInfoUpdate.and(object({sessionUpdate:literal("session_info_update")})),zUsageUpdate.and(object({sessionUpdate:literal("usage_update")}))]),zSessionNotification=object({sessionId:zSessionId,update:zSessionUpdate,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCompleteElicitationNotification=object({elicitationId:zElicitationId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMessageMcpNotification=object({connectionId:zMcpConnectionId,method:string2(),params:defaultOnError(record(string2(),unknown()).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zExtNotification=unknown(),zAgentNotification=object({method:string2(),params:union([zSessionNotification,zCompleteElicitationNotification,zMessageMcpNotification,zExtNotification]).nullish()}),zFileSystemCapabilities=object({readTextFile:defaultOnError(boolean2().optional().default(!1),()=>!1),writeTextFile:defaultOnError(boolean2().optional().default(!1),()=>!1),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zBooleanConfigOptionCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionConfigOptionsCapabilities=object({boolean:defaultOnError(zBooleanConfigOptionCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zClientSessionCapabilities=object({configOptions:defaultOnError(zSessionConfigOptionsCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlanCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthCapabilities=object({terminal:defaultOnError(boolean2().optional().default(!1),()=>!1),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zElicitationFormCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zElicitationUrlCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zElicitationCapabilities=object({form:defaultOnError(zElicitationFormCapabilities.nullish(),()=>{}),url:defaultOnError(zElicitationUrlCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesJumpCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesRenameCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesSearchAndReplaceCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zClientNesCapabilities=object({jump:defaultOnError(zNesJumpCapabilities.nullish(),()=>{}),rename:defaultOnError(zNesRenameCapabilities.nullish(),()=>{}),searchAndReplace:defaultOnError(zNesSearchAndReplaceCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zClientCapabilities=object({fs:defaultOnError(zFileSystemCapabilities.optional().default({readTextFile:!1,writeTextFile:!1}),()=>({readTextFile:!1,writeTextFile:!1})),terminal:defaultOnError(boolean2().optional().default(!1),()=>!1),session:defaultOnError(zClientSessionCapabilities.nullish(),()=>{}),plan:defaultOnError(zPlanCapabilities.nullish(),()=>{}),auth:defaultOnError(zAuthCapabilities.optional().default({terminal:!1}),()=>({terminal:!1})),elicitation:defaultOnError(zElicitationCapabilities.nullish(),()=>{}),nes:defaultOnError(zClientNesCapabilities.nullish(),()=>{}),positionEncodings:defaultOnError(vecSkipError(zPositionEncodingKind).optional(),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zInitializeRequest=object({protocolVersion:zProtocolVersion,clientCapabilities:defaultOnError(zClientCapabilities.optional().default({fs:{readTextFile:!1,writeTextFile:!1},terminal:!1,auth:{terminal:!1}}),()=>({fs:{readTextFile:!1,writeTextFile:!1},terminal:!1,auth:{terminal:!1}})),clientInfo:defaultOnError(zImplementation.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthenticateRequest=object({methodId:zAuthMethodId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zListProvidersRequest=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSetProviderRequest=object({providerId:zProviderId,apiType:zLlmProtocol,baseUrl:string2(),headers:record(string2(),string2()).optional(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDisableProviderRequest=object({providerId:zProviderId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zLogoutRequest=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zHttpHeader=object({name:string2(),value:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMcpServerHttp=object({name:string2(),url:string2(),headers:array(zHttpHeader),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMcpServerSse=object({name:string2(),url:string2(),headers:array(zHttpHeader),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMcpServerAcp=object({name:string2(),serverId:zMcpServerAcpId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMcpServerStdio=object({name:string2(),command:string2(),args:array(string2()),env:array(zEnvVariable),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMcpServer=union([zMcpServerHttp.and(object({type:literal("http")})),zMcpServerSse.and(object({type:literal("sse")})),zMcpServerAcp.and(object({type:literal("acp")})),zMcpServerStdio]),zNewSessionRequest=object({cwd:string2(),additionalDirectories:defaultOnError(vecSkipError(string2()).optional(),()=>[]),mcpServers:requiredDefaultOnError(vecSkipError(zMcpServer),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zLoadSessionRequest=object({mcpServers:requiredDefaultOnError(vecSkipError(zMcpServer),()=>[]),cwd:string2(),additionalDirectories:defaultOnError(vecSkipError(string2()).optional(),()=>[]),sessionId:zSessionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zListSessionsRequest=object({cwd:string2().nullish(),cursor:string2().nullish(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDeleteSessionRequest=object({sessionId:zSessionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zForkSessionRequest=object({sessionId:zSessionId,cwd:string2(),additionalDirectories:defaultOnError(vecSkipError(string2()).optional(),()=>[]),mcpServers:defaultOnError(vecSkipError(zMcpServer).optional(),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zResumeSessionRequest=object({sessionId:zSessionId,cwd:string2(),additionalDirectories:defaultOnError(vecSkipError(string2()).optional(),()=>[]),mcpServers:defaultOnError(vecSkipError(zMcpServer).optional(),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCloseSessionRequest=object({sessionId:zSessionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSetSessionModeRequest=object({sessionId:zSessionId,modeId:zSessionModeId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSetSessionConfigOptionRequest=intersection(union([object({value:boolean2(),type:literal("boolean")}),object({value:zSessionConfigValueId})]),object({sessionId:zSessionId,configId:zSessionConfigId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})})),zPromptRequest=object({sessionId:zSessionId,prompt:array(zContentBlock),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zWorkspaceFolder=object({uri:string2(),name:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesRepository=object({name:string2(),owner:string2(),remoteUrl:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zStartNesRequest=object({workspaceUri:defaultOnError(string2().nullish(),()=>{}),workspaceFolders:array(zWorkspaceFolder).nullish(),repository:defaultOnError(zNesRepository.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesTriggerKind=union([literal("automatic"),literal("diagnostic"),literal("manual")]),zNesRecentFile=object({uri:string2(),languageId:string2(),text:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesExcerpt=object({startLine:int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}),endLine:int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}),text:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesRelatedSnippet=object({uri:string2(),excerpts:array(zNesExcerpt),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesEditHistoryEntry=object({uri:string2(),diff:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesUserAction=object({action:string2(),uri:string2(),position:zPosition,timestampMs:number2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesOpenFile=object({uri:string2(),languageId:string2(),visibleRange:defaultOnError(zRange.nullish(),()=>{}),lastFocusedMs:defaultOnError(number2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesDiagnosticSeverity=union([literal("error"),literal("warning"),literal("information"),literal("hint")]),zNesDiagnostic=object({uri:string2(),range:zRange,severity:zNesDiagnosticSeverity,message:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesSuggestContext=object({recentFiles:array(zNesRecentFile).nullish(),relatedSnippets:array(zNesRelatedSnippet).nullish(),editHistory:array(zNesEditHistoryEntry).nullish(),userActions:array(zNesUserAction).nullish(),openFiles:array(zNesOpenFile).nullish(),diagnostics:array(zNesDiagnostic).nullish(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSuggestNesRequest=object({sessionId:zSessionId,uri:string2(),version:number2(),position:zPosition,selection:zRange.nullish(),triggerKind:zNesTriggerKind,context:zNesSuggestContext.nullish(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCloseNesRequest=object({sessionId:zSessionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zClientRequest=object({id:zRequestId,method:string2(),params:union([zInitializeRequest,zAuthenticateRequest,zListProvidersRequest,zSetProviderRequest,zDisableProviderRequest,zLogoutRequest,zNewSessionRequest,zLoadSessionRequest,zListSessionsRequest,zDeleteSessionRequest,zForkSessionRequest,zResumeSessionRequest,zCloseSessionRequest,zSetSessionModeRequest,zSetSessionConfigOptionRequest,zPromptRequest,zStartNesRequest,zSuggestNesRequest,zCloseNesRequest,zMessageMcpRequest,zExtRequest]).nullish()}),zWriteTextFileResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zReadTextFileResponse=object({content:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSelectedPermissionOutcome=object({optionId:zPermissionOptionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zRequestPermissionOutcome=union([object({outcome:literal("cancelled")}),zSelectedPermissionOutcome.and(object({outcome:literal("selected")}))]),zRequestPermissionResponse=object({outcome:zRequestPermissionOutcome,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCreateTerminalResponse=object({terminalId:zTerminalId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTerminalExitStatus=object({exitCode:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),signal:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTerminalOutputResponse=object({output:string2(),truncated:boolean2(),exitStatus:defaultOnError(zTerminalExitStatus.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zReleaseTerminalResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zWaitForTerminalExitResponse=object({exitCode:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),signal:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zKillTerminalResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zElicitationContentValue=union([string2(),number2(),number2(),boolean2(),array(string2())]),zElicitationAcceptAction=object({content:record(string2(),zElicitationContentValue).nullish()}),zCreateElicitationResponse=preserveCustomPayload(intersection(union([zElicitationAcceptAction.and(object({action:literal("accept")})),object({action:literal("decline")}),object({action:literal("cancel")}),excludeKnownTags(object({action:string2()}),"action",["accept","cancel","decline"])]),object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})})),"action",["accept","cancel","decline"]),zConnectMcpResponse=object({connectionId:zMcpConnectionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDisconnectMcpResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zClientResponse=union([object({id:zRequestId,result:union([zWriteTextFileResponse,zReadTextFileResponse,zRequestPermissionResponse,zCreateTerminalResponse,zTerminalOutputResponse,zReleaseTerminalResponse,zWaitForTerminalExitResponse,zKillTerminalResponse,zCreateElicitationResponse,zConnectMcpResponse,zDisconnectMcpResponse,zMessageMcpResponse,zExtResponse])}),object({id:zRequestId,error:zError})]),zCancelNotification=object({sessionId:zSessionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDidOpenDocumentNotification=object({sessionId:zSessionId,uri:string2(),languageId:string2(),version:number2(),text:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTextDocumentContentChangeEvent=object({range:zRange.nullish(),text:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDidChangeDocumentNotification=object({sessionId:zSessionId,uri:string2(),version:number2(),contentChanges:requiredDefaultOnError(vecSkipError(zTextDocumentContentChangeEvent),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDidCloseDocumentNotification=object({sessionId:zSessionId,uri:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDidSaveDocumentNotification=object({sessionId:zSessionId,uri:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDidFocusDocumentNotification=object({sessionId:zSessionId,uri:string2(),version:number2(),position:zPosition,visibleRange:zRange,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAcceptNesNotification=object({sessionId:zSessionId,id:zNesSuggestionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesRejectReason=union([literal("rejected"),literal("ignored"),literal("replaced"),literal("cancelled")]),zRejectNesNotification=object({sessionId:zSessionId,id:zNesSuggestionId,reason:defaultOnError(zNesRejectReason.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zClientNotification=object({method:string2(),params:union([zCancelNotification,zDidOpenDocumentNotification,zDidChangeDocumentNotification,zDidCloseDocumentNotification,zDidSaveDocumentNotification,zDidFocusDocumentNotification,zAcceptNesNotification,zRejectNesNotification,zMessageMcpNotification,zExtNotification]).nullish()}),zCancelRequestNotification=object({requestId:zRequestId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})});var zGuardCreateElicitationRequestForm=zElicitationFormMode.and(object({mode:literal("form")})).and(object({message:string2()})),zGuardCreateElicitationRequestUrl=zElicitationUrlMode.and(object({mode:literal("url")})).and(object({message:string2()})),zGuardCreateElicitationRequestCustom=union([zElicitationSessionScope,zElicitationRequestScope]).and(object({message:string2()})),zGuardElicitationPropertySchemaString=zStringPropertySchema.and(object({type:literal("string")})),zGuardElicitationPropertySchemaNumber=zNumberPropertySchema.and(object({type:literal("number")})),zGuardElicitationPropertySchemaInteger=zIntegerPropertySchema.and(object({type:literal("integer")})),zGuardElicitationPropertySchemaBoolean=zBooleanPropertySchema.and(object({type:literal("boolean")})),zGuardElicitationPropertySchemaArray=zMultiSelectPropertySchema.and(object({type:literal("array")})),zGuardMultiSelectItemsString=zStringMultiSelectItems.and(object({type:literal("string")}));var zGuardCreateElicitationResponseAccept=zElicitationAcceptAction.and(object({action:literal("accept")})),zGuardCreateElicitationResponseDecline=object({action:literal("decline")}),zGuardCreateElicitationResponseCancel=object({action:literal("cancel")});var CANCEL_REQUEST_METHOD="$/cancel_request";function isRecord(value){return typeof value=="object"&&value!==null}function isJsonRpcId(value){return value===null||typeof value=="string"||typeof value=="number"&&Number.isFinite(value)}function cancelRequestId(params){if(!(!isRecord(params)||!isJsonRpcId(params.requestId)))return params.requestId}var Handled={yes(){return{handled:!0}},no(message,retry=!1){return{handled:!1,message,retry}}};function rejectedPromise(error48){let promise2=Promise.reject(error48);return promise2.catch(()=>{}),promise2}function errorDetails(error48){if(error48 instanceof Error||typeof error48=="object"&&error48!=null&&"message"in error48&&typeof error48.message=="string")return error48.message}function isZodError(error48){return typeof error48=="object"&&error48!==null&&"name"in error48&&error48.name==="ZodError"&&"issues"in error48&&Array.isArray(error48.issues)&&"format"in error48&&typeof error48.format=="function"}function errorToResult(error48){if(error48 instanceof RequestError)return error48.toResult();if(isZodError(error48))return RequestError.invalidParams(error48.format()).toResult();let details=errorDetails(error48);try{return RequestError.internalError(details?JSON.parse(details):{}).toResult()}catch{return RequestError.internalError({details}).toResult()}}function requestCancelledError(reason){return reason instanceof RequestError&&reason.code===-32800?reason:RequestError.requestCancelled(reason)}function errorToRequestResult(error48,signal){let requestCancelled=abortErrorToRequestCancelled(error48,signal);return requestCancelled?requestCancelled.toResult():errorToResult(error48)}function abortErrorToRequestCancelled(error48,signal){if(!(!signal.aborted||!isAbortError(error48)))return requestCancelledError(signal.reason)}function isAbortError(error48){if(typeof error48!="object"||error48===null)return!1;let maybeAbortError=error48;return maybeAbortError.name==="AbortError"||maybeAbortError.code==="ABORT_ERR"}var RequestResponder=class{id;sendResult;signal;finishRequest;didRespond=!1;constructor(id,sendResult,signal=new AbortController().signal,finishRequest){this.id=id,this.sendResult=sendResult,this.signal=signal,this.finishRequest=finishRequest}get responded(){return this.didRespond}respond(response){return this.respondWithResult({result:response??null})}respondWithError(error48){let errorResponse=error48 instanceof RequestError?error48.toErrorResponse():error48;return this.respondWithResult({error:errorResponse})}respondWithResult(result){return this.didRespond?rejectedPromise(new Error("JSON-RPC request already responded")):(this.didRespond=!0,this.sendResult(result).finally(()=>{this.finishRequest?.()}))}},HandlerRegistration=class{disposeHandler;active=!0;constructor(disposeHandler){this.disposeHandler=disposeHandler}dispose(){this.active&&(this.active=!1,this.disposeHandler())}[Symbol.dispose](){this.dispose()}runIndefinitely(){return this}},ConnectionContext=class{connection;constructor(connection){this.connection=connection}sendRequest(method,params,mapResponse,options){return this.connection.sendRequest(method,params,mapResponse,options)}sendNotification(method,params){return this.connection.sendNotification(method,params)}sendCancelRequest(requestId){return this.connection.sendCancelRequest(requestId)}addDynamicHandler(handler){return this.connection.addDynamicHandler(handler)}get signal(){return this.connection.signal}get closed(){return this.connection.closed}},Connection=class{pendingResponses=new Map;incomingRequests=new Map;nextRequestId=0;staticHandlers=[];dynamicHandlers=new Set;stream;writeQueue=Promise.resolve();abortController=new AbortController;closedPromise;retryQueue=[];context=new ConnectionContext(this);receiveReader;constructor(requestHandlerOrStream,notificationHandlerOrHandlers,streamOrOptions,options){if(typeof requestHandlerOrStream=="function"){let requestHandler=requestHandlerOrStream,notificationHandler=notificationHandlerOrHandlers,stream2=streamOrOptions;this.initialize(stream2,[...options?.handlers??[],this.legacyHandler(requestHandler,notificationHandler)]);return}let stream=requestHandlerOrStream,handlers=notificationHandlerOrHandlers,connectionOptions=streamOrOptions;this.initialize(stream,[...connectionOptions?.handlers??[],...handlers])}static builder(){return new ConnectionBuilder}runUntil(op){let opSettled=!1,opPromise=Promise.resolve().then(()=>op(this.context)).finally(()=>{opSettled=!0}),closedPromise=this.closed.then(()=>{if(opSettled)return new Promise(()=>{});throw this.closedReason()});return Promise.race([opPromise,closedPromise]).finally(()=>{opSettled=!0,this.close()})}addDynamicHandler(handler){if(this.dynamicHandlers.add(handler),this.retryQueue.length>0)for(let message of this.retryQueue.splice(0))this.processIncomingMessage(message).catch(error48=>this.close(error48));return new HandlerRegistration(()=>{this.dynamicHandlers.delete(handler)})}get signal(){return this.abortController.signal}get closed(){return this.closedPromise}getContext(){return this.context}sendRequest(method,params,mapResponse,options={}){if(this.abortController.signal.aborted)return rejectedPromise(this.closedReason());let id=this.nextRequestId++,cancel=()=>{},responsePromise=new Promise((resolve2,reject)=>{let pendingResponse={resolve:response=>{try{let value=mapResponse?mapResponse(response):response;resolve2(value)}catch(error48){reject(error48)}},reject};cancel=()=>{pendingResponse.cancellationSent||(pendingResponse.cancellationSent=!0,pendingResponse.cleanup?.(),this.sendCancelRequest(id).catch(()=>{}))},options.cancellationSignal?.addEventListener("abort",cancel,{once:!0}),pendingResponse.cleanup=()=>{options.cancellationSignal?.removeEventListener("abort",cancel)},this.pendingResponses.set(id,pendingResponse)});return responsePromise.catch(()=>{}),this.sendMessage({jsonrpc:"2.0",id,method,params}).catch(()=>{}),options.cancellationSignal?.aborted&&cancel(),responsePromise}sendCancelRequest(requestId){return this.sendNotification(CANCEL_REQUEST_METHOD,{requestId})}sendNotification(method,params){return this.abortController.signal.aborted?rejectedPromise(this.closedReason()):this.sendMessage({jsonrpc:"2.0",method,params})}close(error48){if(this.abortController.signal.aborted)return;let closeError=error48??new Error("ACP connection closed");this.abortController.abort(closeError);for(let pendingResponse of this.pendingResponses.values())pendingResponse.cleanup?.(),pendingResponse.reject(closeError);this.pendingResponses.clear();for(let controller of this.incomingRequests.values())controller.abort(closeError);this.incomingRequests.clear(),this.receiveReader?.cancel(closeError).catch(()=>{})}initialize(stream,handlers){this.stream=stream,this.staticHandlers=handlers,this.closedPromise=new Promise(resolve2=>{this.abortController.signal.addEventListener("abort",()=>resolve2())}),this.receive()}legacyHandler(requestHandler,notificationHandler){return{handleMessage:async(message,cx)=>{if(message.kind==="request"){let result=await requestHandler(message.method,message.params,cx);await message.responder.respond(result)}else await notificationHandler(message.method,message.params,cx);return Handled.yes()}}}async receive(){let closeError;try{let reader=this.stream.readable.getReader();this.receiveReader=reader;try{for(;!this.abortController.signal.aborted;){let{value:message,done}=await reader.read();if(this.abortController.signal.aborted||done)break;message&&this.receiveMessage(message)}}finally{this.receiveReader===reader&&(this.receiveReader=void 0),reader.releaseLock()}}catch(error48){closeError=error48}finally{this.close(closeError)}}receiveMessage(message){if(!this.abortController.signal.aborted){if(!isRecord(message)){console.error("Invalid message",{message});return}"method"in message?("id"in message||this.handleProtocolNotification(message),this.processIncomingMessage(this.toIncomingMessage(message)).catch(error48=>this.close(error48))):"id"in message?this.handleResponse(message):console.error("Invalid message",{message})}}async processIncomingMessage(message){if(this.abortController.signal.aborted)return;let current=message,retry=!1;try{for(let handler of[...this.staticHandlers,...this.dynamicHandlers.values()]){if(this.abortController.signal.aborted)return;let result=await handler.handleMessage(current,this.context)??{handled:!0};if(result.handled)return;current=result.message??current,retry=retry||!!result.retry}retry?this.retryQueue.push(current):current.kind==="request"&&await current.responder.respondWithError(RequestError.methodNotFound(current.method))}catch(error48){if(this.abortController.signal.aborted)return;if(current.kind==="request"&&!current.responder.responded)await current.responder.respondWithResult(errorToRequestResult(error48,current.responder.signal));else{let response=errorToResult(error48);"error"in response&&console.error("Error handling notification",message.raw,response.error)}}}toIncomingMessage(message){if("id"in message){let abortController=new AbortController;this.incomingRequests.set(message.id,abortController);let finishRequest=()=>{this.incomingRequests.get(message.id)===abortController&&this.incomingRequests.delete(message.id)};return{kind:"request",method:message.method,params:message.params,raw:message,signal:abortController.signal,responder:new RequestResponder(message.id,result=>this.sendMessage({jsonrpc:"2.0",id:message.id,...result}),abortController.signal,finishRequest)}}return{kind:"notification",method:message.method,params:message.params,raw:message}}handleResponse(response){let pendingResponse=this.pendingResponses.get(response.id);if(pendingResponse)if(this.pendingResponses.delete(response.id),pendingResponse.cleanup?.(),"result"in response)pendingResponse.resolve(response.result);else if("error"in response&&isRecord(response.error)){let{code,message,data}=response.error;pendingResponse.reject(new RequestError(code,message,data))}else pendingResponse.reject(RequestError.invalidRequest(response));else console.error("Got response to unknown request",response.id)}handleProtocolNotification(message){if(message.method!==CANCEL_REQUEST_METHOD)return;let requestId=cancelRequestId(message.params);if(requestId===void 0)return;let controller=this.incomingRequests.get(requestId);!controller||controller.signal.aborted||controller.abort(RequestError.requestCancelled({requestId}))}closedReason(){return this.abortController.signal.reason??new Error("ACP connection closed")}async sendMessage(message){return this.abortController.signal.aborted?rejectedPromise(this.closedReason()):(this.writeQueue=this.writeQueue.then(async()=>{if(this.abortController.signal.aborted)throw this.closedReason();let writer=this.stream.writable.getWriter();try{await writer.write(message)}finally{writer.releaseLock()}}).catch(error48=>{throw this.close(error48),error48}),this.writeQueue)}},ConnectionBuilder=class{handlers=[];connectionName;name(name){return this.connectionName=name,this}withHandler(handler){return this.handlers.push(handler),this}onReceiveMessage(handler){return this.withHandler({handleMessage:async(message,cx)=>await handler(message,cx)??Handled.no(message),describe:()=>this.connectionName??"onReceiveMessage"})}onReceiveRequest(method,parse3,handler){return this.withHandler({handleMessage:async(message,cx)=>{if(message.kind!=="request"||message.method!==method)return Handled.no(message);let request=parse3(message.params);return await handler(request,message.responder,cx)??Handled.yes()},describe:()=>`${this.connectionName??"request"}:${method}`})}onReceiveNotification(method,parse3,handler){return this.withHandler({handleMessage:async(message,cx)=>{if(message.kind!=="notification"||message.method!==method)return Handled.no(message);let notification=parse3(message.params);return await handler(notification,cx)??Handled.yes()},describe:()=>`${this.connectionName??"notification"}:${method}`})}connect(stream,options){return new Connection(stream,this.handlers,options)}connectWith(stream,op,options){return this.connect(stream,options).runUntil(op)}},RequestError=class _RequestError extends Error{code;data;constructor(code,message,data){super(message),this.code=code,this.name="RequestError",this.data=data}static parseError(data,additionalMessage){return new _RequestError(-32700,`Parse error${additionalMessage?`: ${additionalMessage}`:""}`,data)}static invalidRequest(data,additionalMessage){return new _RequestError(-32600,`Invalid request${additionalMessage?`: ${additionalMessage}`:""}`,data)}static methodNotFound(method){return new _RequestError(-32601,`"Method not found": ${method}`,{method})}static invalidParams(data,additionalMessage){return new _RequestError(-32602,`Invalid params${additionalMessage?`: ${additionalMessage}`:""}`,data)}static internalError(data,additionalMessage){return new _RequestError(-32603,`Internal error${additionalMessage?`: ${additionalMessage}`:""}`,data)}static requestCancelled(data,additionalMessage){return new _RequestError(-32800,`Request cancelled${additionalMessage?`: ${additionalMessage}`:""}`,data)}static authRequired(data,additionalMessage){return new _RequestError(-32e3,`Authentication required${additionalMessage?`: ${additionalMessage}`:""}`,data)}static resourceNotFound(uri){return new _RequestError(-32002,`Resource not found${uri?`: ${uri}`:""}`,uri&&{uri})}toResult(){return{error:{code:this.code,message:this.message,data:this.data}}}toErrorResponse(){return{code:this.code,message:this.message,data:this.data}}};var LineBuffer=class{#pending=[];push(chunk){let lines=[],start=0,newlineIndex=chunk.indexOf(10,start);for(;newlineIndex!==-1;)lines.push(this.#takeLine(chunk.subarray(start,newlineIndex))),start=newlineIndex+1,newlineIndex=chunk.indexOf(10,start);return start<chunk.byteLength&&this.#pending.push(start===0?chunk:new Uint8Array(chunk.subarray(start))),lines}flush(){if(this.#pending.length!==0)return this.#takeLine(new Uint8Array(0))}#takeLine(tail){if(this.#pending.length===0)return tail;let total=tail.byteLength;for(let part of this.#pending)total+=part.byteLength;let line=new Uint8Array(total),offset=0;for(let part of this.#pending)line.set(part,offset),offset+=part.byteLength;return line.set(tail,offset),this.#pending=[],line}};function ndJsonStream(output,input){let textEncoder2=new TextEncoder,textDecoder=new TextDecoder,cancelled=!1,inputReader,readable=new ReadableStream({async start(controller){let lines=new LineBuffer,enqueueLine=lineBytes=>{let trimmedLine=textDecoder.decode(lineBytes).trim();if(trimmedLine)try{let message=JSON.parse(trimmedLine);isRecord(message)?controller.enqueue(message):console.warn("Skipping JSON line that is not an object:",trimmedLine)}catch(err){console.error("Failed to parse JSON message:",trimmedLine,err)}},reader=input.getReader();inputReader=reader;try{for(;;){let{value,done}=await reader.read();if(cancelled)return;if(done)break;if(value){for(let line of lines.push(value))if(enqueueLine(line),cancelled)return}}if(cancelled)return;let lastLine=lines.flush();lastLine&&enqueueLine(lastLine)}catch(err){if(cancelled)return;controller.error(err);return}finally{inputReader===reader&&(inputReader=void 0),reader.releaseLock()}cancelled||controller.close()},cancel(reason){return cancelled=!0,inputReader?.cancel(reason)}}),writable=new WritableStream({async write(message){let content=JSON.stringify(message)+`
816
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let entry of ctx.seen.entries()){let seen=entry[1];if(schema===entry[0]){extractToDef(entry);continue}if(ctx.external){let ext=ctx.external.registry.get(entry[0])?.id;if(schema!==entry[0]&&ext){extractToDef(entry);continue}}if(ctx.metadataRegistry.get(entry[0])?.id){extractToDef(entry);continue}if(seen.cycle){extractToDef(entry);continue}if(seen.count>1&&ctx.reused==="ref"){extractToDef(entry);continue}}}function finalize(ctx,schema){let root=ctx.seen.get(schema);if(!root)throw new Error("Unprocessed schema. This is a bug in Zod.");let flattenRef=zodSchema=>{let seen=ctx.seen.get(zodSchema);if(seen.ref===null)return;let schema2=seen.def??seen.schema,_cached={...schema2},ref=seen.ref;if(seen.ref=null,ref){flattenRef(ref);let refSeen=ctx.seen.get(ref),refSchema=refSeen.schema;if(refSchema.$ref&&(ctx.target==="draft-07"||ctx.target==="draft-04"||ctx.target==="openapi-3.0")?(schema2.allOf=schema2.allOf??[],schema2.allOf.push(refSchema)):Object.assign(schema2,refSchema),Object.assign(schema2,_cached),zodSchema._zod.parent===ref)for(let key in schema2)key==="$ref"||key==="allOf"||key in _cached||delete schema2[key];if(refSchema.$ref&&refSeen.def)for(let key in schema2)key==="$ref"||key==="allOf"||key in refSeen.def&&JSON.stringify(schema2[key])===JSON.stringify(refSeen.def[key])&&delete schema2[key]}let parent=zodSchema._zod.parent;if(parent&&parent!==ref){flattenRef(parent);let parentSeen=ctx.seen.get(parent);if(parentSeen?.schema.$ref&&(schema2.$ref=parentSeen.schema.$ref,parentSeen.def))for(let key in schema2)key==="$ref"||key==="allOf"||key in parentSeen.def&&JSON.stringify(schema2[key])===JSON.stringify(parentSeen.def[key])&&delete schema2[key]}ctx.override({zodSchema,jsonSchema:schema2,path:seen.path??[]})};for(let entry of[...ctx.seen.entries()].reverse())flattenRef(entry[0]);let result={};if(ctx.target==="draft-2020-12"?result.$schema="https://json-schema.org/draft/2020-12/schema":ctx.target==="draft-07"?result.$schema="http://json-schema.org/draft-07/schema#":ctx.target==="draft-04"?result.$schema="http://json-schema.org/draft-04/schema#":ctx.target,ctx.external?.uri){let id=ctx.external.registry.get(schema)?.id;if(!id)throw new Error("Schema is missing an `id` property");result.$id=ctx.external.uri(id)}Object.assign(result,root.def??root.schema);let defs=ctx.external?.defs??{};for(let entry of ctx.seen.entries()){let seen=entry[1];seen.def&&seen.defId&&(defs[seen.defId]=seen.def)}ctx.external||Object.keys(defs).length>0&&(ctx.target==="draft-2020-12"?result.$defs=defs:result.definitions=defs);try{let finalized=JSON.parse(JSON.stringify(result));return Object.defineProperty(finalized,"~standard",{value:{...schema["~standard"],jsonSchema:{input:createStandardJSONSchemaMethod(schema,"input",ctx.processors),output:createStandardJSONSchemaMethod(schema,"output",ctx.processors)}},enumerable:!1,writable:!1}),finalized}catch{throw new Error("Error converting schema to JSON.")}}function isTransforming(_schema,_ctx){let ctx=_ctx??{seen:new Set};if(ctx.seen.has(_schema))return!1;ctx.seen.add(_schema);let def=_schema._zod.def;if(def.type==="transform")return!0;if(def.type==="array")return isTransforming(def.element,ctx);if(def.type==="set")return isTransforming(def.valueType,ctx);if(def.type==="lazy")return isTransforming(def.getter(),ctx);if(def.type==="promise"||def.type==="optional"||def.type==="nonoptional"||def.type==="nullable"||def.type==="readonly"||def.type==="default"||def.type==="prefault")return isTransforming(def.innerType,ctx);if(def.type==="intersection")return isTransforming(def.left,ctx)||isTransforming(def.right,ctx);if(def.type==="record"||def.type==="map")return isTransforming(def.keyType,ctx)||isTransforming(def.valueType,ctx);if(def.type==="pipe")return isTransforming(def.in,ctx)||isTransforming(def.out,ctx);if(def.type==="object"){for(let key in def.shape)if(isTransforming(def.shape[key],ctx))return!0;return!1}if(def.type==="union"){for(let option of def.options)if(isTransforming(option,ctx))return!0;return!1}if(def.type==="tuple"){for(let item of def.items)if(isTransforming(item,ctx))return!0;return!!(def.rest&&isTransforming(def.rest,ctx))}return!1}var createToJSONSchemaMethod=(schema,processors={})=>params=>{let ctx=initializeContext({...params,processors});return process2(schema,ctx),extractDefs(ctx,schema),finalize(ctx,schema)},createStandardJSONSchemaMethod=(schema,io,processors={})=>params=>{let{libraryOptions,target}=params??{},ctx=initializeContext({...libraryOptions??{},target,io,processors});return process2(schema,ctx),extractDefs(ctx,schema),finalize(ctx,schema)};var formatMap={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},stringProcessor=(schema,ctx,_json,_params)=>{let json2=_json;json2.type="string";let{minimum,maximum,format,patterns,contentEncoding}=schema._zod.bag;if(typeof minimum=="number"&&(json2.minLength=minimum),typeof maximum=="number"&&(json2.maxLength=maximum),format&&(json2.format=formatMap[format]??format,json2.format===""&&delete json2.format,format==="time"&&delete json2.format),contentEncoding&&(json2.contentEncoding=contentEncoding),patterns&&patterns.size>0){let regexes=[...patterns];regexes.length===1?json2.pattern=regexes[0].source:regexes.length>1&&(json2.allOf=[...regexes.map(regex=>({...ctx.target==="draft-07"||ctx.target==="draft-04"||ctx.target==="openapi-3.0"?{type:"string"}:{},pattern:regex.source}))])}},numberProcessor=(schema,ctx,_json,_params)=>{let json2=_json,{minimum,maximum,format,multipleOf,exclusiveMaximum,exclusiveMinimum}=schema._zod.bag;typeof format=="string"&&format.includes("int")?json2.type="integer":json2.type="number",typeof exclusiveMinimum=="number"&&(ctx.target==="draft-04"||ctx.target==="openapi-3.0"?(json2.minimum=exclusiveMinimum,json2.exclusiveMinimum=!0):json2.exclusiveMinimum=exclusiveMinimum),typeof minimum=="number"&&(json2.minimum=minimum,typeof exclusiveMinimum=="number"&&ctx.target!=="draft-04"&&(exclusiveMinimum>=minimum?delete json2.minimum:delete json2.exclusiveMinimum)),typeof exclusiveMaximum=="number"&&(ctx.target==="draft-04"||ctx.target==="openapi-3.0"?(json2.maximum=exclusiveMaximum,json2.exclusiveMaximum=!0):json2.exclusiveMaximum=exclusiveMaximum),typeof maximum=="number"&&(json2.maximum=maximum,typeof exclusiveMaximum=="number"&&ctx.target!=="draft-04"&&(exclusiveMaximum<=maximum?delete json2.maximum:delete json2.exclusiveMaximum)),typeof multipleOf=="number"&&(json2.multipleOf=multipleOf)},booleanProcessor=(_schema,_ctx,json2,_params)=>{json2.type="boolean"},bigintProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},symbolProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},nullProcessor=(_schema,ctx,json2,_params)=>{ctx.target==="openapi-3.0"?(json2.type="string",json2.nullable=!0,json2.enum=[null]):json2.type="null"},undefinedProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},voidProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},neverProcessor=(_schema,_ctx,json2,_params)=>{json2.not={}},anyProcessor=(_schema,_ctx,_json,_params)=>{},unknownProcessor=(_schema,_ctx,_json,_params)=>{},dateProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},enumProcessor=(schema,_ctx,json2,_params)=>{let def=schema._zod.def,values=getEnumValues(def.entries);values.every(v=>typeof v=="number")&&(json2.type="number"),values.every(v=>typeof v=="string")&&(json2.type="string"),json2.enum=values},literalProcessor=(schema,ctx,json2,_params)=>{let def=schema._zod.def,vals=[];for(let val of def.values)if(val===void 0){if(ctx.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof val=="bigint"){if(ctx.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");vals.push(Number(val))}else vals.push(val);if(vals.length!==0)if(vals.length===1){let val=vals[0];json2.type=val===null?"null":typeof val,ctx.target==="draft-04"||ctx.target==="openapi-3.0"?json2.enum=[val]:json2.const=val}else vals.every(v=>typeof v=="number")&&(json2.type="number"),vals.every(v=>typeof v=="string")&&(json2.type="string"),vals.every(v=>typeof v=="boolean")&&(json2.type="boolean"),vals.every(v=>v===null)&&(json2.type="null"),json2.enum=vals},nanProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},templateLiteralProcessor=(schema,_ctx,json2,_params)=>{let _json=json2,pattern=schema._zod.pattern;if(!pattern)throw new Error("Pattern not found in template literal");_json.type="string",_json.pattern=pattern.source},fileProcessor=(schema,_ctx,json2,_params)=>{let _json=json2,file2={type:"string",format:"binary",contentEncoding:"binary"},{minimum,maximum,mime}=schema._zod.bag;minimum!==void 0&&(file2.minLength=minimum),maximum!==void 0&&(file2.maxLength=maximum),mime?mime.length===1?(file2.contentMediaType=mime[0],Object.assign(_json,file2)):(Object.assign(_json,file2),_json.anyOf=mime.map(m=>({contentMediaType:m}))):Object.assign(_json,file2)},successProcessor=(_schema,_ctx,json2,_params)=>{json2.type="boolean"},customProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},functionProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},transformProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},mapProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},setProcessor=(_schema,ctx,_json,_params)=>{if(ctx.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},arrayProcessor=(schema,ctx,_json,params)=>{let json2=_json,def=schema._zod.def,{minimum,maximum}=schema._zod.bag;typeof minimum=="number"&&(json2.minItems=minimum),typeof maximum=="number"&&(json2.maxItems=maximum),json2.type="array",json2.items=process2(def.element,ctx,{...params,path:[...params.path,"items"]})},objectProcessor=(schema,ctx,_json,params)=>{let json2=_json,def=schema._zod.def;json2.type="object",json2.properties={};let shape=def.shape;for(let key in shape)json2.properties[key]=process2(shape[key],ctx,{...params,path:[...params.path,"properties",key]});let allKeys=new Set(Object.keys(shape)),requiredKeys=new Set([...allKeys].filter(key=>{let v=def.shape[key]._zod;return ctx.io==="input"?v.optin===void 0:v.optout===void 0}));requiredKeys.size>0&&(json2.required=Array.from(requiredKeys)),def.catchall?._zod.def.type==="never"?json2.additionalProperties=!1:def.catchall?def.catchall&&(json2.additionalProperties=process2(def.catchall,ctx,{...params,path:[...params.path,"additionalProperties"]})):ctx.io==="output"&&(json2.additionalProperties=!1)},unionProcessor=(schema,ctx,json2,params)=>{let def=schema._zod.def,isExclusive=def.inclusive===!1,options=def.options.map((x,i)=>process2(x,ctx,{...params,path:[...params.path,isExclusive?"oneOf":"anyOf",i]}));isExclusive?json2.oneOf=options:json2.anyOf=options},intersectionProcessor=(schema,ctx,json2,params)=>{let def=schema._zod.def,a=process2(def.left,ctx,{...params,path:[...params.path,"allOf",0]}),b=process2(def.right,ctx,{...params,path:[...params.path,"allOf",1]}),isSimpleIntersection=val=>"allOf"in val&&Object.keys(val).length===1,allOf=[...isSimpleIntersection(a)?a.allOf:[a],...isSimpleIntersection(b)?b.allOf:[b]];json2.allOf=allOf},tupleProcessor=(schema,ctx,_json,params)=>{let json2=_json,def=schema._zod.def;json2.type="array";let prefixPath=ctx.target==="draft-2020-12"?"prefixItems":"items",restPath=ctx.target==="draft-2020-12"||ctx.target==="openapi-3.0"?"items":"additionalItems",prefixItems=def.items.map((x,i)=>process2(x,ctx,{...params,path:[...params.path,prefixPath,i]})),rest=def.rest?process2(def.rest,ctx,{...params,path:[...params.path,restPath,...ctx.target==="openapi-3.0"?[def.items.length]:[]]}):null;ctx.target==="draft-2020-12"?(json2.prefixItems=prefixItems,rest&&(json2.items=rest)):ctx.target==="openapi-3.0"?(json2.items={anyOf:prefixItems},rest&&json2.items.anyOf.push(rest),json2.minItems=prefixItems.length,rest||(json2.maxItems=prefixItems.length)):(json2.items=prefixItems,rest&&(json2.additionalItems=rest));let{minimum,maximum}=schema._zod.bag;typeof minimum=="number"&&(json2.minItems=minimum),typeof maximum=="number"&&(json2.maxItems=maximum)},recordProcessor=(schema,ctx,_json,params)=>{let json2=_json,def=schema._zod.def;json2.type="object";let keyType=def.keyType,patterns=keyType._zod.bag?.patterns;if(def.mode==="loose"&&patterns&&patterns.size>0){let valueSchema=process2(def.valueType,ctx,{...params,path:[...params.path,"patternProperties","*"]});json2.patternProperties={};for(let pattern of patterns)json2.patternProperties[pattern.source]=valueSchema}else(ctx.target==="draft-07"||ctx.target==="draft-2020-12")&&(json2.propertyNames=process2(def.keyType,ctx,{...params,path:[...params.path,"propertyNames"]})),json2.additionalProperties=process2(def.valueType,ctx,{...params,path:[...params.path,"additionalProperties"]});let keyValues=keyType._zod.values;if(keyValues){let validKeyValues=[...keyValues].filter(v=>typeof v=="string"||typeof v=="number");validKeyValues.length>0&&(json2.required=validKeyValues)}},nullableProcessor=(schema,ctx,json2,params)=>{let def=schema._zod.def,inner=process2(def.innerType,ctx,params),seen=ctx.seen.get(schema);ctx.target==="openapi-3.0"?(seen.ref=def.innerType,json2.nullable=!0):json2.anyOf=[inner,{type:"null"}]},nonoptionalProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType},defaultProcessor=(schema,ctx,json2,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType,json2.default=JSON.parse(JSON.stringify(def.defaultValue))},prefaultProcessor=(schema,ctx,json2,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType,ctx.io==="input"&&(json2._prefault=JSON.parse(JSON.stringify(def.defaultValue)))},catchProcessor=(schema,ctx,json2,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType;let catchValue;try{catchValue=def.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}json2.default=catchValue},pipeProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def,innerType=ctx.io==="input"?def.in._zod.def.type==="transform"?def.out:def.in:def.out;process2(innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=innerType},readonlyProcessor=(schema,ctx,json2,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType,json2.readOnly=!0},promiseProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType},optionalProcessor=(schema,ctx,_json,params)=>{let def=schema._zod.def;process2(def.innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=def.innerType},lazyProcessor=(schema,ctx,_json,params)=>{let innerType=schema._zod.innerType;process2(innerType,ctx,params);let seen=ctx.seen.get(schema);seen.ref=innerType},allProcessors={string:stringProcessor,number:numberProcessor,boolean:booleanProcessor,bigint:bigintProcessor,symbol:symbolProcessor,null:nullProcessor,undefined:undefinedProcessor,void:voidProcessor,never:neverProcessor,any:anyProcessor,unknown:unknownProcessor,date:dateProcessor,enum:enumProcessor,literal:literalProcessor,nan:nanProcessor,template_literal:templateLiteralProcessor,file:fileProcessor,success:successProcessor,custom:customProcessor,function:functionProcessor,transform:transformProcessor,map:mapProcessor,set:setProcessor,array:arrayProcessor,object:objectProcessor,union:unionProcessor,intersection:intersectionProcessor,tuple:tupleProcessor,record:recordProcessor,nullable:nullableProcessor,nonoptional:nonoptionalProcessor,default:defaultProcessor,prefault:prefaultProcessor,catch:catchProcessor,pipe:pipeProcessor,readonly:readonlyProcessor,promise:promiseProcessor,optional:optionalProcessor,lazy:lazyProcessor};function toJSONSchema(input,params){if("_idmap"in input){let registry2=input,ctx2=initializeContext({...params,processors:allProcessors}),defs={};for(let entry of registry2._idmap.entries()){let[_,schema]=entry;process2(schema,ctx2)}let schemas={},external={registry:registry2,uri:params?.uri,defs};ctx2.external=external;for(let entry of registry2._idmap.entries()){let[key,schema]=entry;extractDefs(ctx2,schema),schemas[key]=finalize(ctx2,schema)}if(Object.keys(defs).length>0){let defsSegment=ctx2.target==="draft-2020-12"?"$defs":"definitions";schemas.__shared={[defsSegment]:defs}}return{schemas}}let ctx=initializeContext({...params,processors:allProcessors});return process2(input,ctx),extractDefs(ctx,input),finalize(ctx,input)}var JSONSchemaGenerator=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(value){this.ctx.counter=value}get seen(){return this.ctx.seen}constructor(params){let normalizedTarget=params?.target??"draft-2020-12";normalizedTarget==="draft-4"&&(normalizedTarget="draft-04"),normalizedTarget==="draft-7"&&(normalizedTarget="draft-07"),this.ctx=initializeContext({processors:allProcessors,target:normalizedTarget,...params?.metadata&&{metadata:params.metadata},...params?.unrepresentable&&{unrepresentable:params.unrepresentable},...params?.override&&{override:params.override},...params?.io&&{io:params.io}})}process(schema,_params={path:[],schemaPath:[]}){return process2(schema,this.ctx,_params)}emit(schema,_params){_params&&(_params.cycles&&(this.ctx.cycles=_params.cycles),_params.reused&&(this.ctx.reused=_params.reused),_params.external&&(this.ctx.external=_params.external)),extractDefs(this.ctx,schema);let result=finalize(this.ctx,schema),{"~standard":_,...plainResult}=result;return plainResult}};var json_schema_exports={};var schemas_exports2={};__export(schemas_exports2,{ZodAny:()=>ZodAny,ZodArray:()=>ZodArray,ZodBase64:()=>ZodBase64,ZodBase64URL:()=>ZodBase64URL,ZodBigInt:()=>ZodBigInt,ZodBigIntFormat:()=>ZodBigIntFormat,ZodBoolean:()=>ZodBoolean,ZodCIDRv4:()=>ZodCIDRv4,ZodCIDRv6:()=>ZodCIDRv6,ZodCUID:()=>ZodCUID,ZodCUID2:()=>ZodCUID2,ZodCatch:()=>ZodCatch,ZodCodec:()=>ZodCodec,ZodCustom:()=>ZodCustom,ZodCustomStringFormat:()=>ZodCustomStringFormat,ZodDate:()=>ZodDate,ZodDefault:()=>ZodDefault,ZodDiscriminatedUnion:()=>ZodDiscriminatedUnion,ZodE164:()=>ZodE164,ZodEmail:()=>ZodEmail,ZodEmoji:()=>ZodEmoji,ZodEnum:()=>ZodEnum,ZodExactOptional:()=>ZodExactOptional,ZodFile:()=>ZodFile,ZodFunction:()=>ZodFunction,ZodGUID:()=>ZodGUID,ZodIPv4:()=>ZodIPv4,ZodIPv6:()=>ZodIPv6,ZodIntersection:()=>ZodIntersection,ZodJWT:()=>ZodJWT,ZodKSUID:()=>ZodKSUID,ZodLazy:()=>ZodLazy,ZodLiteral:()=>ZodLiteral,ZodMAC:()=>ZodMAC,ZodMap:()=>ZodMap,ZodNaN:()=>ZodNaN,ZodNanoID:()=>ZodNanoID,ZodNever:()=>ZodNever,ZodNonOptional:()=>ZodNonOptional,ZodNull:()=>ZodNull,ZodNullable:()=>ZodNullable,ZodNumber:()=>ZodNumber,ZodNumberFormat:()=>ZodNumberFormat,ZodObject:()=>ZodObject,ZodOptional:()=>ZodOptional,ZodPipe:()=>ZodPipe,ZodPrefault:()=>ZodPrefault,ZodPromise:()=>ZodPromise,ZodReadonly:()=>ZodReadonly,ZodRecord:()=>ZodRecord,ZodSet:()=>ZodSet,ZodString:()=>ZodString,ZodStringFormat:()=>ZodStringFormat,ZodSuccess:()=>ZodSuccess,ZodSymbol:()=>ZodSymbol,ZodTemplateLiteral:()=>ZodTemplateLiteral,ZodTransform:()=>ZodTransform,ZodTuple:()=>ZodTuple,ZodType:()=>ZodType,ZodULID:()=>ZodULID,ZodURL:()=>ZodURL,ZodUUID:()=>ZodUUID,ZodUndefined:()=>ZodUndefined,ZodUnion:()=>ZodUnion,ZodUnknown:()=>ZodUnknown,ZodVoid:()=>ZodVoid,ZodXID:()=>ZodXID,ZodXor:()=>ZodXor,_ZodString:()=>_ZodString,_default:()=>_default2,_function:()=>_function,any:()=>any,array:()=>array,base64:()=>base642,base64url:()=>base64url2,bigint:()=>bigint2,boolean:()=>boolean2,catch:()=>_catch2,check:()=>check,cidrv4:()=>cidrv42,cidrv6:()=>cidrv62,codec:()=>codec,cuid:()=>cuid3,cuid2:()=>cuid22,custom:()=>custom,date:()=>date3,describe:()=>describe2,discriminatedUnion:()=>discriminatedUnion,e164:()=>e1642,email:()=>email2,emoji:()=>emoji2,enum:()=>_enum2,exactOptional:()=>exactOptional,file:()=>file,float32:()=>float32,float64:()=>float64,function:()=>_function,guid:()=>guid2,hash:()=>hash,hex:()=>hex2,hostname:()=>hostname2,httpUrl:()=>httpUrl,instanceof:()=>_instanceof,int:()=>int,int32:()=>int32,int64:()=>int64,intersection:()=>intersection,ipv4:()=>ipv42,ipv6:()=>ipv62,json:()=>json,jwt:()=>jwt,keyof:()=>keyof,ksuid:()=>ksuid2,lazy:()=>lazy,literal:()=>literal,looseObject:()=>looseObject,looseRecord:()=>looseRecord,mac:()=>mac2,map:()=>map,meta:()=>meta2,nan:()=>nan,nanoid:()=>nanoid2,nativeEnum:()=>nativeEnum,never:()=>never,nonoptional:()=>nonoptional,null:()=>_null3,nullable:()=>nullable,nullish:()=>nullish2,number:()=>number2,object:()=>object,optional:()=>optional,partialRecord:()=>partialRecord,pipe:()=>pipe,prefault:()=>prefault,preprocess:()=>preprocess,promise:()=>promise,readonly:()=>readonly,record:()=>record,refine:()=>refine,set:()=>set,strictObject:()=>strictObject,string:()=>string2,stringFormat:()=>stringFormat,stringbool:()=>stringbool,success:()=>success,superRefine:()=>superRefine,symbol:()=>symbol,templateLiteral:()=>templateLiteral,transform:()=>transform,tuple:()=>tuple,uint32:()=>uint32,uint64:()=>uint64,ulid:()=>ulid2,undefined:()=>_undefined3,union:()=>union,unknown:()=>unknown,url:()=>url,uuid:()=>uuid2,uuidv4:()=>uuidv4,uuidv6:()=>uuidv6,uuidv7:()=>uuidv7,void:()=>_void2,xid:()=>xid2,xor:()=>xor});var checks_exports2={};__export(checks_exports2,{endsWith:()=>_endsWith,gt:()=>_gt,gte:()=>_gte,includes:()=>_includes,length:()=>_length,lowercase:()=>_lowercase,lt:()=>_lt,lte:()=>_lte,maxLength:()=>_maxLength,maxSize:()=>_maxSize,mime:()=>_mime,minLength:()=>_minLength,minSize:()=>_minSize,multipleOf:()=>_multipleOf,negative:()=>_negative,nonnegative:()=>_nonnegative,nonpositive:()=>_nonpositive,normalize:()=>_normalize,overwrite:()=>_overwrite,positive:()=>_positive,property:()=>_property,regex:()=>_regex,size:()=>_size,slugify:()=>_slugify,startsWith:()=>_startsWith,toLowerCase:()=>_toLowerCase,toUpperCase:()=>_toUpperCase,trim:()=>_trim,uppercase:()=>_uppercase});var iso_exports={};__export(iso_exports,{ZodISODate:()=>ZodISODate,ZodISODateTime:()=>ZodISODateTime,ZodISODuration:()=>ZodISODuration,ZodISOTime:()=>ZodISOTime,date:()=>date2,datetime:()=>datetime2,duration:()=>duration2,time:()=>time2});var ZodISODateTime=$constructor("ZodISODateTime",(inst,def)=>{$ZodISODateTime.init(inst,def),ZodStringFormat.init(inst,def)});function datetime2(params){return _isoDateTime(ZodISODateTime,params)}var ZodISODate=$constructor("ZodISODate",(inst,def)=>{$ZodISODate.init(inst,def),ZodStringFormat.init(inst,def)});function date2(params){return _isoDate(ZodISODate,params)}var ZodISOTime=$constructor("ZodISOTime",(inst,def)=>{$ZodISOTime.init(inst,def),ZodStringFormat.init(inst,def)});function time2(params){return _isoTime(ZodISOTime,params)}var ZodISODuration=$constructor("ZodISODuration",(inst,def)=>{$ZodISODuration.init(inst,def),ZodStringFormat.init(inst,def)});function duration2(params){return _isoDuration(ZodISODuration,params)}var initializer2=(inst,issues)=>{$ZodError.init(inst,issues),inst.name="ZodError",Object.defineProperties(inst,{format:{value:mapper=>formatError(inst,mapper)},flatten:{value:mapper=>flattenError(inst,mapper)},addIssue:{value:issue2=>{inst.issues.push(issue2),inst.message=JSON.stringify(inst.issues,jsonStringifyReplacer,2)}},addIssues:{value:issues2=>{inst.issues.push(...issues2),inst.message=JSON.stringify(inst.issues,jsonStringifyReplacer,2)}},isEmpty:{get(){return inst.issues.length===0}}})},ZodError=$constructor("ZodError",initializer2),ZodRealError=$constructor("ZodError",initializer2,{Parent:Error});var parse2=_parse(ZodRealError),parseAsync2=_parseAsync(ZodRealError),safeParse2=_safeParse(ZodRealError),safeParseAsync2=_safeParseAsync(ZodRealError),encode2=_encode(ZodRealError),decode2=_decode(ZodRealError),encodeAsync2=_encodeAsync(ZodRealError),decodeAsync2=_decodeAsync(ZodRealError),safeEncode2=_safeEncode(ZodRealError),safeDecode2=_safeDecode(ZodRealError),safeEncodeAsync2=_safeEncodeAsync(ZodRealError),safeDecodeAsync2=_safeDecodeAsync(ZodRealError);var ZodType=$constructor("ZodType",(inst,def)=>($ZodType.init(inst,def),Object.assign(inst["~standard"],{jsonSchema:{input:createStandardJSONSchemaMethod(inst,"input"),output:createStandardJSONSchemaMethod(inst,"output")}}),inst.toJSONSchema=createToJSONSchemaMethod(inst,{}),inst.def=def,inst.type=def.type,Object.defineProperty(inst,"_def",{value:def}),inst.check=(...checks)=>inst.clone(util_exports.mergeDefs(def,{checks:[...def.checks??[],...checks.map(ch=>typeof ch=="function"?{_zod:{check:ch,def:{check:"custom"},onattach:[]}}:ch)]}),{parent:!0}),inst.with=inst.check,inst.clone=(def2,params)=>clone(inst,def2,params),inst.brand=()=>inst,inst.register=((reg,meta3)=>(reg.add(inst,meta3),inst)),inst.parse=(data,params)=>parse2(inst,data,params,{callee:inst.parse}),inst.safeParse=(data,params)=>safeParse2(inst,data,params),inst.parseAsync=async(data,params)=>parseAsync2(inst,data,params,{callee:inst.parseAsync}),inst.safeParseAsync=async(data,params)=>safeParseAsync2(inst,data,params),inst.spa=inst.safeParseAsync,inst.encode=(data,params)=>encode2(inst,data,params),inst.decode=(data,params)=>decode2(inst,data,params),inst.encodeAsync=async(data,params)=>encodeAsync2(inst,data,params),inst.decodeAsync=async(data,params)=>decodeAsync2(inst,data,params),inst.safeEncode=(data,params)=>safeEncode2(inst,data,params),inst.safeDecode=(data,params)=>safeDecode2(inst,data,params),inst.safeEncodeAsync=async(data,params)=>safeEncodeAsync2(inst,data,params),inst.safeDecodeAsync=async(data,params)=>safeDecodeAsync2(inst,data,params),inst.refine=(check2,params)=>inst.check(refine(check2,params)),inst.superRefine=refinement=>inst.check(superRefine(refinement)),inst.overwrite=fn=>inst.check(_overwrite(fn)),inst.optional=()=>optional(inst),inst.exactOptional=()=>exactOptional(inst),inst.nullable=()=>nullable(inst),inst.nullish=()=>optional(nullable(inst)),inst.nonoptional=params=>nonoptional(inst,params),inst.array=()=>array(inst),inst.or=arg=>union([inst,arg]),inst.and=arg=>intersection(inst,arg),inst.transform=tx=>pipe(inst,transform(tx)),inst.default=def2=>_default2(inst,def2),inst.prefault=def2=>prefault(inst,def2),inst.catch=params=>_catch2(inst,params),inst.pipe=target=>pipe(inst,target),inst.readonly=()=>readonly(inst),inst.describe=description=>{let cl=inst.clone();return globalRegistry.add(cl,{description}),cl},Object.defineProperty(inst,"description",{get(){return globalRegistry.get(inst)?.description},configurable:!0}),inst.meta=(...args)=>{if(args.length===0)return globalRegistry.get(inst);let cl=inst.clone();return globalRegistry.add(cl,args[0]),cl},inst.isOptional=()=>inst.safeParse(void 0).success,inst.isNullable=()=>inst.safeParse(null).success,inst.apply=fn=>fn(inst),inst)),_ZodString=$constructor("_ZodString",(inst,def)=>{$ZodString.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>stringProcessor(inst,ctx,json2,params);let bag=inst._zod.bag;inst.format=bag.format??null,inst.minLength=bag.minimum??null,inst.maxLength=bag.maximum??null,inst.regex=(...args)=>inst.check(_regex(...args)),inst.includes=(...args)=>inst.check(_includes(...args)),inst.startsWith=(...args)=>inst.check(_startsWith(...args)),inst.endsWith=(...args)=>inst.check(_endsWith(...args)),inst.min=(...args)=>inst.check(_minLength(...args)),inst.max=(...args)=>inst.check(_maxLength(...args)),inst.length=(...args)=>inst.check(_length(...args)),inst.nonempty=(...args)=>inst.check(_minLength(1,...args)),inst.lowercase=params=>inst.check(_lowercase(params)),inst.uppercase=params=>inst.check(_uppercase(params)),inst.trim=()=>inst.check(_trim()),inst.normalize=(...args)=>inst.check(_normalize(...args)),inst.toLowerCase=()=>inst.check(_toLowerCase()),inst.toUpperCase=()=>inst.check(_toUpperCase()),inst.slugify=()=>inst.check(_slugify())}),ZodString=$constructor("ZodString",(inst,def)=>{$ZodString.init(inst,def),_ZodString.init(inst,def),inst.email=params=>inst.check(_email(ZodEmail,params)),inst.url=params=>inst.check(_url(ZodURL,params)),inst.jwt=params=>inst.check(_jwt(ZodJWT,params)),inst.emoji=params=>inst.check(_emoji2(ZodEmoji,params)),inst.guid=params=>inst.check(_guid(ZodGUID,params)),inst.uuid=params=>inst.check(_uuid(ZodUUID,params)),inst.uuidv4=params=>inst.check(_uuidv4(ZodUUID,params)),inst.uuidv6=params=>inst.check(_uuidv6(ZodUUID,params)),inst.uuidv7=params=>inst.check(_uuidv7(ZodUUID,params)),inst.nanoid=params=>inst.check(_nanoid(ZodNanoID,params)),inst.guid=params=>inst.check(_guid(ZodGUID,params)),inst.cuid=params=>inst.check(_cuid(ZodCUID,params)),inst.cuid2=params=>inst.check(_cuid2(ZodCUID2,params)),inst.ulid=params=>inst.check(_ulid(ZodULID,params)),inst.base64=params=>inst.check(_base64(ZodBase64,params)),inst.base64url=params=>inst.check(_base64url(ZodBase64URL,params)),inst.xid=params=>inst.check(_xid(ZodXID,params)),inst.ksuid=params=>inst.check(_ksuid(ZodKSUID,params)),inst.ipv4=params=>inst.check(_ipv4(ZodIPv4,params)),inst.ipv6=params=>inst.check(_ipv6(ZodIPv6,params)),inst.cidrv4=params=>inst.check(_cidrv4(ZodCIDRv4,params)),inst.cidrv6=params=>inst.check(_cidrv6(ZodCIDRv6,params)),inst.e164=params=>inst.check(_e164(ZodE164,params)),inst.datetime=params=>inst.check(datetime2(params)),inst.date=params=>inst.check(date2(params)),inst.time=params=>inst.check(time2(params)),inst.duration=params=>inst.check(duration2(params))});function string2(params){return _string(ZodString,params)}var ZodStringFormat=$constructor("ZodStringFormat",(inst,def)=>{$ZodStringFormat.init(inst,def),_ZodString.init(inst,def)}),ZodEmail=$constructor("ZodEmail",(inst,def)=>{$ZodEmail.init(inst,def),ZodStringFormat.init(inst,def)});function email2(params){return _email(ZodEmail,params)}var ZodGUID=$constructor("ZodGUID",(inst,def)=>{$ZodGUID.init(inst,def),ZodStringFormat.init(inst,def)});function guid2(params){return _guid(ZodGUID,params)}var ZodUUID=$constructor("ZodUUID",(inst,def)=>{$ZodUUID.init(inst,def),ZodStringFormat.init(inst,def)});function uuid2(params){return _uuid(ZodUUID,params)}function uuidv4(params){return _uuidv4(ZodUUID,params)}function uuidv6(params){return _uuidv6(ZodUUID,params)}function uuidv7(params){return _uuidv7(ZodUUID,params)}var ZodURL=$constructor("ZodURL",(inst,def)=>{$ZodURL.init(inst,def),ZodStringFormat.init(inst,def)});function url(params){return _url(ZodURL,params)}function httpUrl(params){return _url(ZodURL,{protocol:/^https?$/,hostname:regexes_exports.domain,...util_exports.normalizeParams(params)})}var ZodEmoji=$constructor("ZodEmoji",(inst,def)=>{$ZodEmoji.init(inst,def),ZodStringFormat.init(inst,def)});function emoji2(params){return _emoji2(ZodEmoji,params)}var ZodNanoID=$constructor("ZodNanoID",(inst,def)=>{$ZodNanoID.init(inst,def),ZodStringFormat.init(inst,def)});function nanoid2(params){return _nanoid(ZodNanoID,params)}var ZodCUID=$constructor("ZodCUID",(inst,def)=>{$ZodCUID.init(inst,def),ZodStringFormat.init(inst,def)});function cuid3(params){return _cuid(ZodCUID,params)}var ZodCUID2=$constructor("ZodCUID2",(inst,def)=>{$ZodCUID2.init(inst,def),ZodStringFormat.init(inst,def)});function cuid22(params){return _cuid2(ZodCUID2,params)}var ZodULID=$constructor("ZodULID",(inst,def)=>{$ZodULID.init(inst,def),ZodStringFormat.init(inst,def)});function ulid2(params){return _ulid(ZodULID,params)}var ZodXID=$constructor("ZodXID",(inst,def)=>{$ZodXID.init(inst,def),ZodStringFormat.init(inst,def)});function xid2(params){return _xid(ZodXID,params)}var ZodKSUID=$constructor("ZodKSUID",(inst,def)=>{$ZodKSUID.init(inst,def),ZodStringFormat.init(inst,def)});function ksuid2(params){return _ksuid(ZodKSUID,params)}var ZodIPv4=$constructor("ZodIPv4",(inst,def)=>{$ZodIPv4.init(inst,def),ZodStringFormat.init(inst,def)});function ipv42(params){return _ipv4(ZodIPv4,params)}var ZodMAC=$constructor("ZodMAC",(inst,def)=>{$ZodMAC.init(inst,def),ZodStringFormat.init(inst,def)});function mac2(params){return _mac(ZodMAC,params)}var ZodIPv6=$constructor("ZodIPv6",(inst,def)=>{$ZodIPv6.init(inst,def),ZodStringFormat.init(inst,def)});function ipv62(params){return _ipv6(ZodIPv6,params)}var ZodCIDRv4=$constructor("ZodCIDRv4",(inst,def)=>{$ZodCIDRv4.init(inst,def),ZodStringFormat.init(inst,def)});function cidrv42(params){return _cidrv4(ZodCIDRv4,params)}var ZodCIDRv6=$constructor("ZodCIDRv6",(inst,def)=>{$ZodCIDRv6.init(inst,def),ZodStringFormat.init(inst,def)});function cidrv62(params){return _cidrv6(ZodCIDRv6,params)}var ZodBase64=$constructor("ZodBase64",(inst,def)=>{$ZodBase64.init(inst,def),ZodStringFormat.init(inst,def)});function base642(params){return _base64(ZodBase64,params)}var ZodBase64URL=$constructor("ZodBase64URL",(inst,def)=>{$ZodBase64URL.init(inst,def),ZodStringFormat.init(inst,def)});function base64url2(params){return _base64url(ZodBase64URL,params)}var ZodE164=$constructor("ZodE164",(inst,def)=>{$ZodE164.init(inst,def),ZodStringFormat.init(inst,def)});function e1642(params){return _e164(ZodE164,params)}var ZodJWT=$constructor("ZodJWT",(inst,def)=>{$ZodJWT.init(inst,def),ZodStringFormat.init(inst,def)});function jwt(params){return _jwt(ZodJWT,params)}var ZodCustomStringFormat=$constructor("ZodCustomStringFormat",(inst,def)=>{$ZodCustomStringFormat.init(inst,def),ZodStringFormat.init(inst,def)});function stringFormat(format,fnOrRegex,_params={}){return _stringFormat(ZodCustomStringFormat,format,fnOrRegex,_params)}function hostname2(_params){return _stringFormat(ZodCustomStringFormat,"hostname",regexes_exports.hostname,_params)}function hex2(_params){return _stringFormat(ZodCustomStringFormat,"hex",regexes_exports.hex,_params)}function hash(alg,params){let enc=params?.enc??"hex",format=`${alg}_${enc}`,regex=regexes_exports[format];if(!regex)throw new Error(`Unrecognized hash format: ${format}`);return _stringFormat(ZodCustomStringFormat,format,regex,params)}var ZodNumber=$constructor("ZodNumber",(inst,def)=>{$ZodNumber.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>numberProcessor(inst,ctx,json2,params),inst.gt=(value,params)=>inst.check(_gt(value,params)),inst.gte=(value,params)=>inst.check(_gte(value,params)),inst.min=(value,params)=>inst.check(_gte(value,params)),inst.lt=(value,params)=>inst.check(_lt(value,params)),inst.lte=(value,params)=>inst.check(_lte(value,params)),inst.max=(value,params)=>inst.check(_lte(value,params)),inst.int=params=>inst.check(int(params)),inst.safe=params=>inst.check(int(params)),inst.positive=params=>inst.check(_gt(0,params)),inst.nonnegative=params=>inst.check(_gte(0,params)),inst.negative=params=>inst.check(_lt(0,params)),inst.nonpositive=params=>inst.check(_lte(0,params)),inst.multipleOf=(value,params)=>inst.check(_multipleOf(value,params)),inst.step=(value,params)=>inst.check(_multipleOf(value,params)),inst.finite=()=>inst;let bag=inst._zod.bag;inst.minValue=Math.max(bag.minimum??Number.NEGATIVE_INFINITY,bag.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,inst.maxValue=Math.min(bag.maximum??Number.POSITIVE_INFINITY,bag.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,inst.isInt=(bag.format??"").includes("int")||Number.isSafeInteger(bag.multipleOf??.5),inst.isFinite=!0,inst.format=bag.format??null});function number2(params){return _number(ZodNumber,params)}var ZodNumberFormat=$constructor("ZodNumberFormat",(inst,def)=>{$ZodNumberFormat.init(inst,def),ZodNumber.init(inst,def)});function int(params){return _int(ZodNumberFormat,params)}function float32(params){return _float32(ZodNumberFormat,params)}function float64(params){return _float64(ZodNumberFormat,params)}function int32(params){return _int32(ZodNumberFormat,params)}function uint32(params){return _uint32(ZodNumberFormat,params)}var ZodBoolean=$constructor("ZodBoolean",(inst,def)=>{$ZodBoolean.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>booleanProcessor(inst,ctx,json2,params)});function boolean2(params){return _boolean(ZodBoolean,params)}var ZodBigInt=$constructor("ZodBigInt",(inst,def)=>{$ZodBigInt.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>bigintProcessor(inst,ctx,json2,params),inst.gte=(value,params)=>inst.check(_gte(value,params)),inst.min=(value,params)=>inst.check(_gte(value,params)),inst.gt=(value,params)=>inst.check(_gt(value,params)),inst.gte=(value,params)=>inst.check(_gte(value,params)),inst.min=(value,params)=>inst.check(_gte(value,params)),inst.lt=(value,params)=>inst.check(_lt(value,params)),inst.lte=(value,params)=>inst.check(_lte(value,params)),inst.max=(value,params)=>inst.check(_lte(value,params)),inst.positive=params=>inst.check(_gt(BigInt(0),params)),inst.negative=params=>inst.check(_lt(BigInt(0),params)),inst.nonpositive=params=>inst.check(_lte(BigInt(0),params)),inst.nonnegative=params=>inst.check(_gte(BigInt(0),params)),inst.multipleOf=(value,params)=>inst.check(_multipleOf(value,params));let bag=inst._zod.bag;inst.minValue=bag.minimum??null,inst.maxValue=bag.maximum??null,inst.format=bag.format??null});function bigint2(params){return _bigint(ZodBigInt,params)}var ZodBigIntFormat=$constructor("ZodBigIntFormat",(inst,def)=>{$ZodBigIntFormat.init(inst,def),ZodBigInt.init(inst,def)});function int64(params){return _int64(ZodBigIntFormat,params)}function uint64(params){return _uint64(ZodBigIntFormat,params)}var ZodSymbol=$constructor("ZodSymbol",(inst,def)=>{$ZodSymbol.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>symbolProcessor(inst,ctx,json2,params)});function symbol(params){return _symbol(ZodSymbol,params)}var ZodUndefined=$constructor("ZodUndefined",(inst,def)=>{$ZodUndefined.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>undefinedProcessor(inst,ctx,json2,params)});function _undefined3(params){return _undefined2(ZodUndefined,params)}var ZodNull=$constructor("ZodNull",(inst,def)=>{$ZodNull.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>nullProcessor(inst,ctx,json2,params)});function _null3(params){return _null2(ZodNull,params)}var ZodAny=$constructor("ZodAny",(inst,def)=>{$ZodAny.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>anyProcessor(inst,ctx,json2,params)});function any(){return _any(ZodAny)}var ZodUnknown=$constructor("ZodUnknown",(inst,def)=>{$ZodUnknown.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>unknownProcessor(inst,ctx,json2,params)});function unknown(){return _unknown(ZodUnknown)}var ZodNever=$constructor("ZodNever",(inst,def)=>{$ZodNever.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>neverProcessor(inst,ctx,json2,params)});function never(params){return _never(ZodNever,params)}var ZodVoid=$constructor("ZodVoid",(inst,def)=>{$ZodVoid.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>voidProcessor(inst,ctx,json2,params)});function _void2(params){return _void(ZodVoid,params)}var ZodDate=$constructor("ZodDate",(inst,def)=>{$ZodDate.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>dateProcessor(inst,ctx,json2,params),inst.min=(value,params)=>inst.check(_gte(value,params)),inst.max=(value,params)=>inst.check(_lte(value,params));let c=inst._zod.bag;inst.minDate=c.minimum?new Date(c.minimum):null,inst.maxDate=c.maximum?new Date(c.maximum):null});function date3(params){return _date(ZodDate,params)}var ZodArray=$constructor("ZodArray",(inst,def)=>{$ZodArray.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>arrayProcessor(inst,ctx,json2,params),inst.element=def.element,inst.min=(minLength,params)=>inst.check(_minLength(minLength,params)),inst.nonempty=params=>inst.check(_minLength(1,params)),inst.max=(maxLength,params)=>inst.check(_maxLength(maxLength,params)),inst.length=(len,params)=>inst.check(_length(len,params)),inst.unwrap=()=>inst.element});function array(element,params){return _array(ZodArray,element,params)}function keyof(schema){let shape=schema._zod.def.shape;return _enum2(Object.keys(shape))}var ZodObject=$constructor("ZodObject",(inst,def)=>{$ZodObjectJIT.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>objectProcessor(inst,ctx,json2,params),util_exports.defineLazy(inst,"shape",()=>def.shape),inst.keyof=()=>_enum2(Object.keys(inst._zod.def.shape)),inst.catchall=catchall=>inst.clone({...inst._zod.def,catchall}),inst.passthrough=()=>inst.clone({...inst._zod.def,catchall:unknown()}),inst.loose=()=>inst.clone({...inst._zod.def,catchall:unknown()}),inst.strict=()=>inst.clone({...inst._zod.def,catchall:never()}),inst.strip=()=>inst.clone({...inst._zod.def,catchall:void 0}),inst.extend=incoming=>util_exports.extend(inst,incoming),inst.safeExtend=incoming=>util_exports.safeExtend(inst,incoming),inst.merge=other=>util_exports.merge(inst,other),inst.pick=mask=>util_exports.pick(inst,mask),inst.omit=mask=>util_exports.omit(inst,mask),inst.partial=(...args)=>util_exports.partial(ZodOptional,inst,args[0]),inst.required=(...args)=>util_exports.required(ZodNonOptional,inst,args[0])});function object(shape,params){let def={type:"object",shape:shape??{},...util_exports.normalizeParams(params)};return new ZodObject(def)}function strictObject(shape,params){return new ZodObject({type:"object",shape,catchall:never(),...util_exports.normalizeParams(params)})}function looseObject(shape,params){return new ZodObject({type:"object",shape,catchall:unknown(),...util_exports.normalizeParams(params)})}var ZodUnion=$constructor("ZodUnion",(inst,def)=>{$ZodUnion.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>unionProcessor(inst,ctx,json2,params),inst.options=def.options});function union(options,params){return new ZodUnion({type:"union",options,...util_exports.normalizeParams(params)})}var ZodXor=$constructor("ZodXor",(inst,def)=>{ZodUnion.init(inst,def),$ZodXor.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>unionProcessor(inst,ctx,json2,params),inst.options=def.options});function xor(options,params){return new ZodXor({type:"union",options,inclusive:!1,...util_exports.normalizeParams(params)})}var ZodDiscriminatedUnion=$constructor("ZodDiscriminatedUnion",(inst,def)=>{ZodUnion.init(inst,def),$ZodDiscriminatedUnion.init(inst,def)});function discriminatedUnion(discriminator,options,params){return new ZodDiscriminatedUnion({type:"union",options,discriminator,...util_exports.normalizeParams(params)})}var ZodIntersection=$constructor("ZodIntersection",(inst,def)=>{$ZodIntersection.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>intersectionProcessor(inst,ctx,json2,params)});function intersection(left,right){return new ZodIntersection({type:"intersection",left,right})}var ZodTuple=$constructor("ZodTuple",(inst,def)=>{$ZodTuple.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>tupleProcessor(inst,ctx,json2,params),inst.rest=rest=>inst.clone({...inst._zod.def,rest})});function tuple(items,_paramsOrRest,_params){let hasRest=_paramsOrRest instanceof $ZodType,params=hasRest?_params:_paramsOrRest,rest=hasRest?_paramsOrRest:null;return new ZodTuple({type:"tuple",items,rest,...util_exports.normalizeParams(params)})}var ZodRecord=$constructor("ZodRecord",(inst,def)=>{$ZodRecord.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>recordProcessor(inst,ctx,json2,params),inst.keyType=def.keyType,inst.valueType=def.valueType});function record(keyType,valueType,params){return new ZodRecord({type:"record",keyType,valueType,...util_exports.normalizeParams(params)})}function partialRecord(keyType,valueType,params){let k=clone(keyType);return k._zod.values=void 0,new ZodRecord({type:"record",keyType:k,valueType,...util_exports.normalizeParams(params)})}function looseRecord(keyType,valueType,params){return new ZodRecord({type:"record",keyType,valueType,mode:"loose",...util_exports.normalizeParams(params)})}var ZodMap=$constructor("ZodMap",(inst,def)=>{$ZodMap.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>mapProcessor(inst,ctx,json2,params),inst.keyType=def.keyType,inst.valueType=def.valueType,inst.min=(...args)=>inst.check(_minSize(...args)),inst.nonempty=params=>inst.check(_minSize(1,params)),inst.max=(...args)=>inst.check(_maxSize(...args)),inst.size=(...args)=>inst.check(_size(...args))});function map(keyType,valueType,params){return new ZodMap({type:"map",keyType,valueType,...util_exports.normalizeParams(params)})}var ZodSet=$constructor("ZodSet",(inst,def)=>{$ZodSet.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>setProcessor(inst,ctx,json2,params),inst.min=(...args)=>inst.check(_minSize(...args)),inst.nonempty=params=>inst.check(_minSize(1,params)),inst.max=(...args)=>inst.check(_maxSize(...args)),inst.size=(...args)=>inst.check(_size(...args))});function set(valueType,params){return new ZodSet({type:"set",valueType,...util_exports.normalizeParams(params)})}var ZodEnum=$constructor("ZodEnum",(inst,def)=>{$ZodEnum.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>enumProcessor(inst,ctx,json2,params),inst.enum=def.entries,inst.options=Object.values(def.entries);let keys=new Set(Object.keys(def.entries));inst.extract=(values,params)=>{let newEntries={};for(let value of values)if(keys.has(value))newEntries[value]=def.entries[value];else throw new Error(`Key ${value} not found in enum`);return new ZodEnum({...def,checks:[],...util_exports.normalizeParams(params),entries:newEntries})},inst.exclude=(values,params)=>{let newEntries={...def.entries};for(let value of values)if(keys.has(value))delete newEntries[value];else throw new Error(`Key ${value} not found in enum`);return new ZodEnum({...def,checks:[],...util_exports.normalizeParams(params),entries:newEntries})}});function _enum2(values,params){let entries=Array.isArray(values)?Object.fromEntries(values.map(v=>[v,v])):values;return new ZodEnum({type:"enum",entries,...util_exports.normalizeParams(params)})}function nativeEnum(entries,params){return new ZodEnum({type:"enum",entries,...util_exports.normalizeParams(params)})}var ZodLiteral=$constructor("ZodLiteral",(inst,def)=>{$ZodLiteral.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>literalProcessor(inst,ctx,json2,params),inst.values=new Set(def.values),Object.defineProperty(inst,"value",{get(){if(def.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return def.values[0]}})});function literal(value,params){return new ZodLiteral({type:"literal",values:Array.isArray(value)?value:[value],...util_exports.normalizeParams(params)})}var ZodFile=$constructor("ZodFile",(inst,def)=>{$ZodFile.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>fileProcessor(inst,ctx,json2,params),inst.min=(size,params)=>inst.check(_minSize(size,params)),inst.max=(size,params)=>inst.check(_maxSize(size,params)),inst.mime=(types,params)=>inst.check(_mime(Array.isArray(types)?types:[types],params))});function file(params){return _file(ZodFile,params)}var ZodTransform=$constructor("ZodTransform",(inst,def)=>{$ZodTransform.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>transformProcessor(inst,ctx,json2,params),inst._zod.parse=(payload,_ctx)=>{if(_ctx.direction==="backward")throw new $ZodEncodeError(inst.constructor.name);payload.addIssue=issue2=>{if(typeof issue2=="string")payload.issues.push(util_exports.issue(issue2,payload.value,def));else{let _issue=issue2;_issue.fatal&&(_issue.continue=!1),_issue.code??(_issue.code="custom"),_issue.input??(_issue.input=payload.value),_issue.inst??(_issue.inst=inst),payload.issues.push(util_exports.issue(_issue))}};let output=def.transform(payload.value,payload);return output instanceof Promise?output.then(output2=>(payload.value=output2,payload)):(payload.value=output,payload)}});function transform(fn){return new ZodTransform({type:"transform",transform:fn})}var ZodOptional=$constructor("ZodOptional",(inst,def)=>{$ZodOptional.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>optionalProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function optional(innerType){return new ZodOptional({type:"optional",innerType})}var ZodExactOptional=$constructor("ZodExactOptional",(inst,def)=>{$ZodExactOptional.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>optionalProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function exactOptional(innerType){return new ZodExactOptional({type:"optional",innerType})}var ZodNullable=$constructor("ZodNullable",(inst,def)=>{$ZodNullable.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>nullableProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function nullable(innerType){return new ZodNullable({type:"nullable",innerType})}function nullish2(innerType){return optional(nullable(innerType))}var ZodDefault=$constructor("ZodDefault",(inst,def)=>{$ZodDefault.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>defaultProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType,inst.removeDefault=inst.unwrap});function _default2(innerType,defaultValue){return new ZodDefault({type:"default",innerType,get defaultValue(){return typeof defaultValue=="function"?defaultValue():util_exports.shallowClone(defaultValue)}})}var ZodPrefault=$constructor("ZodPrefault",(inst,def)=>{$ZodPrefault.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>prefaultProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function prefault(innerType,defaultValue){return new ZodPrefault({type:"prefault",innerType,get defaultValue(){return typeof defaultValue=="function"?defaultValue():util_exports.shallowClone(defaultValue)}})}var ZodNonOptional=$constructor("ZodNonOptional",(inst,def)=>{$ZodNonOptional.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>nonoptionalProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function nonoptional(innerType,params){return new ZodNonOptional({type:"nonoptional",innerType,...util_exports.normalizeParams(params)})}var ZodSuccess=$constructor("ZodSuccess",(inst,def)=>{$ZodSuccess.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>successProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function success(innerType){return new ZodSuccess({type:"success",innerType})}var ZodCatch=$constructor("ZodCatch",(inst,def)=>{$ZodCatch.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>catchProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType,inst.removeCatch=inst.unwrap});function _catch2(innerType,catchValue){return new ZodCatch({type:"catch",innerType,catchValue:typeof catchValue=="function"?catchValue:()=>catchValue})}var ZodNaN=$constructor("ZodNaN",(inst,def)=>{$ZodNaN.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>nanProcessor(inst,ctx,json2,params)});function nan(params){return _nan(ZodNaN,params)}var ZodPipe=$constructor("ZodPipe",(inst,def)=>{$ZodPipe.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>pipeProcessor(inst,ctx,json2,params),inst.in=def.in,inst.out=def.out});function pipe(in_,out){return new ZodPipe({type:"pipe",in:in_,out})}var ZodCodec=$constructor("ZodCodec",(inst,def)=>{ZodPipe.init(inst,def),$ZodCodec.init(inst,def)});function codec(in_,out,params){return new ZodCodec({type:"pipe",in:in_,out,transform:params.decode,reverseTransform:params.encode})}var ZodReadonly=$constructor("ZodReadonly",(inst,def)=>{$ZodReadonly.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>readonlyProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function readonly(innerType){return new ZodReadonly({type:"readonly",innerType})}var ZodTemplateLiteral=$constructor("ZodTemplateLiteral",(inst,def)=>{$ZodTemplateLiteral.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>templateLiteralProcessor(inst,ctx,json2,params)});function templateLiteral(parts,params){return new ZodTemplateLiteral({type:"template_literal",parts,...util_exports.normalizeParams(params)})}var ZodLazy=$constructor("ZodLazy",(inst,def)=>{$ZodLazy.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>lazyProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.getter()});function lazy(getter){return new ZodLazy({type:"lazy",getter})}var ZodPromise=$constructor("ZodPromise",(inst,def)=>{$ZodPromise.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>promiseProcessor(inst,ctx,json2,params),inst.unwrap=()=>inst._zod.def.innerType});function promise(innerType){return new ZodPromise({type:"promise",innerType})}var ZodFunction=$constructor("ZodFunction",(inst,def)=>{$ZodFunction.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>functionProcessor(inst,ctx,json2,params)});function _function(params){return new ZodFunction({type:"function",input:Array.isArray(params?.input)?tuple(params?.input):params?.input??array(unknown()),output:params?.output??unknown()})}var ZodCustom=$constructor("ZodCustom",(inst,def)=>{$ZodCustom.init(inst,def),ZodType.init(inst,def),inst._zod.processJSONSchema=(ctx,json2,params)=>customProcessor(inst,ctx,json2,params)});function check(fn){let ch=new $ZodCheck({check:"custom"});return ch._zod.check=fn,ch}function custom(fn,_params){return _custom(ZodCustom,fn??(()=>!0),_params)}function refine(fn,_params={}){return _refine(ZodCustom,fn,_params)}function superRefine(fn){return _superRefine(fn)}var describe2=describe,meta2=meta;function _instanceof(cls,params={}){let inst=new ZodCustom({type:"custom",check:"custom",fn:data=>data instanceof cls,abort:!0,...util_exports.normalizeParams(params)});return inst._zod.bag.Class=cls,inst._zod.check=payload=>{payload.value instanceof cls||payload.issues.push({code:"invalid_type",expected:cls.name,input:payload.value,inst,path:[...inst._zod.def.path??[]]})},inst}var stringbool=(...args)=>_stringbool({Codec:ZodCodec,Boolean:ZodBoolean,String:ZodString},...args);function json(params){let jsonSchema=lazy(()=>union([string2(params),number2(),boolean2(),_null3(),array(jsonSchema),record(string2(),jsonSchema)]));return jsonSchema}function preprocess(fn,schema){return pipe(transform(fn),schema)}var ZodIssueCode={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};function setErrorMap(map2){config({customError:map2})}function getErrorMap(){return config().customError}var ZodFirstPartyTypeKind;ZodFirstPartyTypeKind||(ZodFirstPartyTypeKind={});var z={...schemas_exports2,...checks_exports2,iso:iso_exports},RECOGNIZED_KEYS=new Set(["$schema","$ref","$defs","definitions","$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor","type","enum","const","anyOf","oneOf","allOf","not","properties","required","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","items","prefixItems","additionalItems","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minLength","maxLength","pattern","format","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","description","default","contentEncoding","contentMediaType","contentSchema","unevaluatedItems","unevaluatedProperties","if","then","else","dependentSchemas","dependentRequired","nullable","readOnly"]);function detectVersion(schema,defaultTarget){let $schema=schema.$schema;return $schema==="https://json-schema.org/draft/2020-12/schema"?"draft-2020-12":$schema==="http://json-schema.org/draft-07/schema#"?"draft-7":$schema==="http://json-schema.org/draft-04/schema#"?"draft-4":defaultTarget??"draft-2020-12"}function resolveRef(ref,ctx){if(!ref.startsWith("#"))throw new Error("External $ref is not supported, only local refs (#/...) are allowed");let path19=ref.slice(1).split("/").filter(Boolean);if(path19.length===0)return ctx.rootSchema;let defsKey=ctx.version==="draft-2020-12"?"$defs":"definitions";if(path19[0]===defsKey){let key=path19[1];if(!key||!ctx.defs[key])throw new Error(`Reference not found: ${ref}`);return ctx.defs[key]}throw new Error(`Reference not found: ${ref}`)}function convertBaseSchema(schema,ctx){if(schema.not!==void 0){if(typeof schema.not=="object"&&Object.keys(schema.not).length===0)return z.never();throw new Error("not is not supported in Zod (except { not: {} } for never)")}if(schema.unevaluatedItems!==void 0)throw new Error("unevaluatedItems is not supported");if(schema.unevaluatedProperties!==void 0)throw new Error("unevaluatedProperties is not supported");if(schema.if!==void 0||schema.then!==void 0||schema.else!==void 0)throw new Error("Conditional schemas (if/then/else) are not supported");if(schema.dependentSchemas!==void 0||schema.dependentRequired!==void 0)throw new Error("dependentSchemas and dependentRequired are not supported");if(schema.$ref){let refPath=schema.$ref;if(ctx.refs.has(refPath))return ctx.refs.get(refPath);if(ctx.processing.has(refPath))return z.lazy(()=>{if(!ctx.refs.has(refPath))throw new Error(`Circular reference not resolved: ${refPath}`);return ctx.refs.get(refPath)});ctx.processing.add(refPath);let resolved=resolveRef(refPath,ctx),zodSchema2=convertSchema(resolved,ctx);return ctx.refs.set(refPath,zodSchema2),ctx.processing.delete(refPath),zodSchema2}if(schema.enum!==void 0){let enumValues=schema.enum;if(ctx.version==="openapi-3.0"&&schema.nullable===!0&&enumValues.length===1&&enumValues[0]===null)return z.null();if(enumValues.length===0)return z.never();if(enumValues.length===1)return z.literal(enumValues[0]);if(enumValues.every(v=>typeof v=="string"))return z.enum(enumValues);let literalSchemas=enumValues.map(v=>z.literal(v));return literalSchemas.length<2?literalSchemas[0]:z.union([literalSchemas[0],literalSchemas[1],...literalSchemas.slice(2)])}if(schema.const!==void 0)return z.literal(schema.const);let type=schema.type;if(Array.isArray(type)){let typeSchemas=type.map(t=>{let typeSchema={...schema,type:t};return convertBaseSchema(typeSchema,ctx)});return typeSchemas.length===0?z.never():typeSchemas.length===1?typeSchemas[0]:z.union(typeSchemas)}if(!type)return z.any();let zodSchema;switch(type){case"string":{let stringSchema=z.string();if(schema.format){let format=schema.format;format==="email"?stringSchema=stringSchema.check(z.email()):format==="uri"||format==="uri-reference"?stringSchema=stringSchema.check(z.url()):format==="uuid"||format==="guid"?stringSchema=stringSchema.check(z.uuid()):format==="date-time"?stringSchema=stringSchema.check(z.iso.datetime()):format==="date"?stringSchema=stringSchema.check(z.iso.date()):format==="time"?stringSchema=stringSchema.check(z.iso.time()):format==="duration"?stringSchema=stringSchema.check(z.iso.duration()):format==="ipv4"?stringSchema=stringSchema.check(z.ipv4()):format==="ipv6"?stringSchema=stringSchema.check(z.ipv6()):format==="mac"?stringSchema=stringSchema.check(z.mac()):format==="cidr"?stringSchema=stringSchema.check(z.cidrv4()):format==="cidr-v6"?stringSchema=stringSchema.check(z.cidrv6()):format==="base64"?stringSchema=stringSchema.check(z.base64()):format==="base64url"?stringSchema=stringSchema.check(z.base64url()):format==="e164"?stringSchema=stringSchema.check(z.e164()):format==="jwt"?stringSchema=stringSchema.check(z.jwt()):format==="emoji"?stringSchema=stringSchema.check(z.emoji()):format==="nanoid"?stringSchema=stringSchema.check(z.nanoid()):format==="cuid"?stringSchema=stringSchema.check(z.cuid()):format==="cuid2"?stringSchema=stringSchema.check(z.cuid2()):format==="ulid"?stringSchema=stringSchema.check(z.ulid()):format==="xid"?stringSchema=stringSchema.check(z.xid()):format==="ksuid"&&(stringSchema=stringSchema.check(z.ksuid()))}typeof schema.minLength=="number"&&(stringSchema=stringSchema.min(schema.minLength)),typeof schema.maxLength=="number"&&(stringSchema=stringSchema.max(schema.maxLength)),schema.pattern&&(stringSchema=stringSchema.regex(new RegExp(schema.pattern))),zodSchema=stringSchema;break}case"number":case"integer":{let numberSchema=type==="integer"?z.number().int():z.number();typeof schema.minimum=="number"&&(numberSchema=numberSchema.min(schema.minimum)),typeof schema.maximum=="number"&&(numberSchema=numberSchema.max(schema.maximum)),typeof schema.exclusiveMinimum=="number"?numberSchema=numberSchema.gt(schema.exclusiveMinimum):schema.exclusiveMinimum===!0&&typeof schema.minimum=="number"&&(numberSchema=numberSchema.gt(schema.minimum)),typeof schema.exclusiveMaximum=="number"?numberSchema=numberSchema.lt(schema.exclusiveMaximum):schema.exclusiveMaximum===!0&&typeof schema.maximum=="number"&&(numberSchema=numberSchema.lt(schema.maximum)),typeof schema.multipleOf=="number"&&(numberSchema=numberSchema.multipleOf(schema.multipleOf)),zodSchema=numberSchema;break}case"boolean":{zodSchema=z.boolean();break}case"null":{zodSchema=z.null();break}case"object":{let shape={},properties=schema.properties||{},requiredSet=new Set(schema.required||[]);for(let[key,propSchema]of Object.entries(properties)){let propZodSchema=convertSchema(propSchema,ctx);shape[key]=requiredSet.has(key)?propZodSchema:propZodSchema.optional()}if(schema.propertyNames){let keySchema=convertSchema(schema.propertyNames,ctx),valueSchema=schema.additionalProperties&&typeof schema.additionalProperties=="object"?convertSchema(schema.additionalProperties,ctx):z.any();if(Object.keys(shape).length===0){zodSchema=z.record(keySchema,valueSchema);break}let objectSchema2=z.object(shape).passthrough(),recordSchema=z.looseRecord(keySchema,valueSchema);zodSchema=z.intersection(objectSchema2,recordSchema);break}if(schema.patternProperties){let patternProps=schema.patternProperties,patternKeys=Object.keys(patternProps),looseRecords=[];for(let pattern of patternKeys){let patternValue=convertSchema(patternProps[pattern],ctx),keySchema=z.string().regex(new RegExp(pattern));looseRecords.push(z.looseRecord(keySchema,patternValue))}let schemasToIntersect=[];if(Object.keys(shape).length>0&&schemasToIntersect.push(z.object(shape).passthrough()),schemasToIntersect.push(...looseRecords),schemasToIntersect.length===0)zodSchema=z.object({}).passthrough();else if(schemasToIntersect.length===1)zodSchema=schemasToIntersect[0];else{let result=z.intersection(schemasToIntersect[0],schemasToIntersect[1]);for(let i=2;i<schemasToIntersect.length;i++)result=z.intersection(result,schemasToIntersect[i]);zodSchema=result}break}let objectSchema=z.object(shape);schema.additionalProperties===!1?zodSchema=objectSchema.strict():typeof schema.additionalProperties=="object"?zodSchema=objectSchema.catchall(convertSchema(schema.additionalProperties,ctx)):zodSchema=objectSchema.passthrough();break}case"array":{let prefixItems=schema.prefixItems,items=schema.items;if(prefixItems&&Array.isArray(prefixItems)){let tupleItems=prefixItems.map(item=>convertSchema(item,ctx)),rest=items&&typeof items=="object"&&!Array.isArray(items)?convertSchema(items,ctx):void 0;rest?zodSchema=z.tuple(tupleItems).rest(rest):zodSchema=z.tuple(tupleItems),typeof schema.minItems=="number"&&(zodSchema=zodSchema.check(z.minLength(schema.minItems))),typeof schema.maxItems=="number"&&(zodSchema=zodSchema.check(z.maxLength(schema.maxItems)))}else if(Array.isArray(items)){let tupleItems=items.map(item=>convertSchema(item,ctx)),rest=schema.additionalItems&&typeof schema.additionalItems=="object"?convertSchema(schema.additionalItems,ctx):void 0;rest?zodSchema=z.tuple(tupleItems).rest(rest):zodSchema=z.tuple(tupleItems),typeof schema.minItems=="number"&&(zodSchema=zodSchema.check(z.minLength(schema.minItems))),typeof schema.maxItems=="number"&&(zodSchema=zodSchema.check(z.maxLength(schema.maxItems)))}else if(items!==void 0){let element=convertSchema(items,ctx),arraySchema=z.array(element);typeof schema.minItems=="number"&&(arraySchema=arraySchema.min(schema.minItems)),typeof schema.maxItems=="number"&&(arraySchema=arraySchema.max(schema.maxItems)),zodSchema=arraySchema}else zodSchema=z.array(z.any());break}default:throw new Error(`Unsupported type: ${type}`)}return schema.description&&(zodSchema=zodSchema.describe(schema.description)),schema.default!==void 0&&(zodSchema=zodSchema.default(schema.default)),zodSchema}function convertSchema(schema,ctx){if(typeof schema=="boolean")return schema?z.any():z.never();let baseSchema=convertBaseSchema(schema,ctx),hasExplicitType=schema.type||schema.enum!==void 0||schema.const!==void 0;if(schema.anyOf&&Array.isArray(schema.anyOf)){let options=schema.anyOf.map(s=>convertSchema(s,ctx)),anyOfUnion=z.union(options);baseSchema=hasExplicitType?z.intersection(baseSchema,anyOfUnion):anyOfUnion}if(schema.oneOf&&Array.isArray(schema.oneOf)){let options=schema.oneOf.map(s=>convertSchema(s,ctx)),oneOfUnion=z.xor(options);baseSchema=hasExplicitType?z.intersection(baseSchema,oneOfUnion):oneOfUnion}if(schema.allOf&&Array.isArray(schema.allOf))if(schema.allOf.length===0)baseSchema=hasExplicitType?baseSchema:z.any();else{let result=hasExplicitType?baseSchema:convertSchema(schema.allOf[0],ctx),startIdx=hasExplicitType?0:1;for(let i=startIdx;i<schema.allOf.length;i++)result=z.intersection(result,convertSchema(schema.allOf[i],ctx));baseSchema=result}schema.nullable===!0&&ctx.version==="openapi-3.0"&&(baseSchema=z.nullable(baseSchema)),schema.readOnly===!0&&(baseSchema=z.readonly(baseSchema));let extraMeta={},coreMetadataKeys=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let key of coreMetadataKeys)key in schema&&(extraMeta[key]=schema[key]);let contentMetadataKeys=["contentEncoding","contentMediaType","contentSchema"];for(let key of contentMetadataKeys)key in schema&&(extraMeta[key]=schema[key]);for(let key of Object.keys(schema))RECOGNIZED_KEYS.has(key)||(extraMeta[key]=schema[key]);return Object.keys(extraMeta).length>0&&ctx.registry.add(baseSchema,extraMeta),baseSchema}function fromJSONSchema(schema,params){if(typeof schema=="boolean")return schema?z.any():z.never();let version2=detectVersion(schema,params?.defaultTarget),defs=schema.$defs||schema.definitions||{},ctx={version:version2,defs,refs:new Map,processing:new Set,rootSchema:schema,registry:params?.registry??globalRegistry};return convertSchema(schema,ctx)}var coerce_exports={};__export(coerce_exports,{bigint:()=>bigint3,boolean:()=>boolean3,date:()=>date4,number:()=>number3,string:()=>string3});function string3(params){return _coercedString(ZodString,params)}function number3(params){return _coercedNumber(ZodNumber,params)}function boolean3(params){return _coercedBoolean(ZodBoolean,params)}function bigint3(params){return _coercedBigint(ZodBigInt,params)}function date4(params){return _coercedDate(ZodDate,params)}config(en_default());var skippedItem=Symbol("skippedItem");function defaultOnError(schema,fallback){return schema.catch(fallback)}function requiredDefaultOnError(schema,fallback){let schemaWithCatch=schema.catch(fallback);return external_exports.unknown().transform((value,context)=>value!==void 0?schemaWithCatch.parse(value):(context.addIssue({code:"custom",message:"Required value is missing"}),external_exports.NEVER))}function stringTag(value,key){if(value===null||typeof value!="object"||Array.isArray(value))return;let tag=value[key];return typeof tag=="string"?tag:void 0}function excludeKnownTags(schema,key,knownTags){return schema.superRefine((value,context)=>{let tag=stringTag(value,key);tag!==void 0&&knownTags.includes(tag)&&context.addIssue({code:"custom",path:[key],message:`${key} ${JSON.stringify(tag)} is reserved by a known variant, but the value does not match that variant's schema`})})}function preserveCustomPayload(schema,key,knownTags){return external_exports.unknown().transform((value,context)=>{let result=schema.safeParse(value);if(!result.success){for(let issue2 of result.error.issues)context.addIssue({...issue2,input:value});return external_exports.NEVER}let output=result.data,tag=stringTag(value,key);if(tag!==void 0&&!knownTags.includes(tag)){let raw=value;for(let[property,rawValue]of Object.entries(raw))property!=="__proto__"&&(Object.hasOwn(output,property)||(output[property]=rawValue))}return output})}function vecSkipError(itemSchema){return external_exports.array(itemSchema.catch(skippedItem)).transform(items=>items.filter(item=>item!==skippedItem))}var zRequestId=union([number2(),string2()]).nullable(),zSessionId=string2(),zWriteTextFileRequest=object({sessionId:zSessionId,path:string2(),content:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zReadTextFileRequest=object({sessionId:zSessionId,path:string2(),line:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),limit:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zToolCallId=string2(),zToolKind=union([literal("read"),literal("edit"),literal("delete"),literal("move"),literal("search"),literal("execute"),literal("think"),literal("fetch"),literal("switch_mode"),literal("other")]),zToolCallStatus=union([literal("pending"),literal("in_progress"),literal("completed"),literal("failed")]),zRole=union([literal("assistant"),literal("user")]),zAnnotations=object({audience:defaultOnError(vecSkipError(zRole).nullish(),()=>{}),lastModified:defaultOnError(string2().nullish(),()=>{}),priority:defaultOnError(number2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTextContent=object({annotations:defaultOnError(zAnnotations.nullish(),()=>{}),text:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zImageContent=object({annotations:defaultOnError(zAnnotations.nullish(),()=>{}),data:string2(),mimeType:string2(),uri:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAudioContent=object({annotations:defaultOnError(zAnnotations.nullish(),()=>{}),data:string2(),mimeType:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zResourceLink=object({annotations:defaultOnError(zAnnotations.nullish(),()=>{}),description:defaultOnError(string2().nullish(),()=>{}),mimeType:defaultOnError(string2().nullish(),()=>{}),name:string2(),size:defaultOnError(number2().nullish(),()=>{}),title:defaultOnError(string2().nullish(),()=>{}),uri:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTextResourceContents=object({mimeType:defaultOnError(string2().nullish(),()=>{}),text:string2(),uri:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zBlobResourceContents=object({blob:string2(),mimeType:defaultOnError(string2().nullish(),()=>{}),uri:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zEmbeddedResourceResource=union([zTextResourceContents,zBlobResourceContents]),zEmbeddedResource=object({annotations:defaultOnError(zAnnotations.nullish(),()=>{}),resource:zEmbeddedResourceResource,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zContentBlock=union([zTextContent.and(object({type:literal("text")})),zImageContent.and(object({type:literal("image")})),zAudioContent.and(object({type:literal("audio")})),zResourceLink.and(object({type:literal("resource_link")})),zEmbeddedResource.and(object({type:literal("resource")}))]),zContent=object({content:zContentBlock,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDiff=object({path:string2(),oldText:defaultOnError(string2().nullish(),()=>{}),newText:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTerminalId=string2(),zTerminal=object({terminalId:zTerminalId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zToolCallContent=union([zContent.and(object({type:literal("content")})),zDiff.and(object({type:literal("diff")})),zTerminal.and(object({type:literal("terminal")}))]),zToolCallLocation=object({path:string2(),line:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zToolCallUpdate=object({toolCallId:zToolCallId,kind:defaultOnError(zToolKind.nullish(),()=>{}),status:defaultOnError(zToolCallStatus.nullish(),()=>{}),title:defaultOnError(string2().nullish(),()=>{}),content:defaultOnError(vecSkipError(zToolCallContent).nullish(),()=>{}),locations:defaultOnError(vecSkipError(zToolCallLocation).nullish(),()=>{}),rawInput:defaultOnError(unknown().optional(),()=>{}),rawOutput:defaultOnError(unknown().optional(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPermissionOptionId=string2(),zPermissionOptionKind=union([literal("allow_once"),literal("allow_always"),literal("reject_once"),literal("reject_always")]),zPermissionOption=object({optionId:zPermissionOptionId,name:string2(),kind:zPermissionOptionKind,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zRequestPermissionRequest=object({sessionId:zSessionId,toolCall:zToolCallUpdate,options:array(zPermissionOption),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zEnvVariable=object({name:string2(),value:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCreateTerminalRequest=object({sessionId:zSessionId,command:string2(),args:defaultOnError(vecSkipError(string2()).optional(),()=>[]),env:defaultOnError(vecSkipError(zEnvVariable).optional(),()=>[]),cwd:defaultOnError(string2().nullish(),()=>{}),outputByteLimit:defaultOnError(number2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTerminalOutputRequest=object({sessionId:zSessionId,terminalId:zTerminalId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zReleaseTerminalRequest=object({sessionId:zSessionId,terminalId:zTerminalId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zWaitForTerminalExitRequest=object({sessionId:zSessionId,terminalId:zTerminalId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zKillTerminalRequest=object({sessionId:zSessionId,terminalId:zTerminalId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zElicitationSessionScope=object({sessionId:zSessionId,toolCallId:defaultOnError(zToolCallId.nullish(),()=>{})}),zElicitationRequestScope=object({requestId:zRequestId}),zElicitationSchemaType=literal("object"),zStringFormat=union([literal("email"),literal("uri"),literal("date"),literal("date-time")]),zEnumOption=object({const:string2(),title:string2(),description:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zStringPropertySchema=object({title:defaultOnError(string2().nullish(),()=>{}),description:defaultOnError(string2().nullish(),()=>{}),minLength:int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),maxLength:int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),pattern:string2().nullish(),format:zStringFormat.nullish(),default:defaultOnError(string2().nullish(),()=>{}),enum:array(string2()).nullish(),oneOf:array(zEnumOption).nullish(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNumberPropertySchema=object({title:defaultOnError(string2().nullish(),()=>{}),description:defaultOnError(string2().nullish(),()=>{}),minimum:number2().nullish(),maximum:number2().nullish(),default:defaultOnError(number2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zIntegerPropertySchema=object({title:defaultOnError(string2().nullish(),()=>{}),description:defaultOnError(string2().nullish(),()=>{}),minimum:number2().nullish(),maximum:number2().nullish(),default:defaultOnError(number2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zBooleanPropertySchema=object({title:defaultOnError(string2().nullish(),()=>{}),description:defaultOnError(string2().nullish(),()=>{}),default:defaultOnError(boolean2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zStringMultiSelectItems=object({enum:array(string2()),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTitledMultiSelectItems=object({anyOf:array(zEnumOption),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMultiSelectItems=preserveCustomPayload(union([zStringMultiSelectItems.and(object({type:literal("string")})),excludeKnownTags(object({type:string2()}),"type",["string"]),zTitledMultiSelectItems]),"type",["string"]),zMultiSelectPropertySchema=object({title:defaultOnError(string2().nullish(),()=>{}),description:defaultOnError(string2().nullish(),()=>{}),minItems:number2().nullish(),maxItems:number2().nullish(),items:zMultiSelectItems,default:defaultOnError(vecSkipError(string2()).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zElicitationPropertySchema=preserveCustomPayload(union([zStringPropertySchema.and(object({type:literal("string")})),zNumberPropertySchema.and(object({type:literal("number")})),zIntegerPropertySchema.and(object({type:literal("integer")})),zBooleanPropertySchema.and(object({type:literal("boolean")})),zMultiSelectPropertySchema.and(object({type:literal("array")})),excludeKnownTags(object({type:string2()}),"type",["array","boolean","integer","number","string"])]),"type",["array","boolean","integer","number","string"]),zElicitationSchema=object({type:defaultOnError(zElicitationSchemaType.optional().default("object"),()=>"object"),title:defaultOnError(string2().nullish(),()=>{}),properties:record(string2(),zElicitationPropertySchema).optional().default({}),required:array(string2()).nullish(),description:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zElicitationFormMode=intersection(union([zElicitationSessionScope,zElicitationRequestScope]),object({requestedSchema:zElicitationSchema})),zElicitationId=string2(),zElicitationUrlMode=intersection(union([zElicitationSessionScope,zElicitationRequestScope]),object({elicitationId:zElicitationId,url:url()})),zCreateElicitationRequest=preserveCustomPayload(intersection(union([zElicitationFormMode.and(object({mode:literal("form")})),zElicitationUrlMode.and(object({mode:literal("url")})),excludeKnownTags(intersection(union([zElicitationSessionScope,zElicitationRequestScope]),object({mode:string2()})),"mode",["form","url"])]),object({message:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})})),"mode",["form","url"]),zMcpServerAcpId=string2(),zConnectMcpRequest=object({serverId:zMcpServerAcpId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMcpConnectionId=string2(),zMessageMcpRequest=object({connectionId:zMcpConnectionId,method:string2(),params:record(string2(),unknown()).nullish(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDisconnectMcpRequest=object({connectionId:zMcpConnectionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zExtRequest=unknown(),zAgentRequest=object({id:zRequestId,method:string2(),params:union([zWriteTextFileRequest,zReadTextFileRequest,zRequestPermissionRequest,zCreateTerminalRequest,zTerminalOutputRequest,zReleaseTerminalRequest,zWaitForTerminalExitRequest,zKillTerminalRequest,zCreateElicitationRequest,zConnectMcpRequest,zMessageMcpRequest,zDisconnectMcpRequest,zExtRequest]).nullish()}),zProtocolVersion=int().gte(0).lte(65535),zPromptCapabilities=object({image:defaultOnError(boolean2().optional().default(!1),()=>!1),audio:defaultOnError(boolean2().optional().default(!1),()=>!1),embeddedContext:defaultOnError(boolean2().optional().default(!1),()=>!1),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMcpCapabilities=object({http:defaultOnError(boolean2().optional().default(!1),()=>!1),sse:defaultOnError(boolean2().optional().default(!1),()=>!1),acp:defaultOnError(boolean2().optional().default(!1),()=>!1),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionListCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionDeleteCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionAdditionalDirectoriesCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionForkCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionResumeCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionCloseCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionCapabilities=object({list:defaultOnError(zSessionListCapabilities.nullish(),()=>{}),delete:defaultOnError(zSessionDeleteCapabilities.nullish(),()=>{}),additionalDirectories:defaultOnError(zSessionAdditionalDirectoriesCapabilities.nullish(),()=>{}),fork:defaultOnError(zSessionForkCapabilities.nullish(),()=>{}),resume:defaultOnError(zSessionResumeCapabilities.nullish(),()=>{}),close:defaultOnError(zSessionCloseCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zLogoutCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAgentAuthCapabilities=object({logout:defaultOnError(zLogoutCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zProvidersCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesDocumentDidOpenCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTextDocumentSyncKind=union([literal("full"),literal("incremental")]),zNesDocumentDidChangeCapabilities=object({syncKind:zTextDocumentSyncKind,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesDocumentDidCloseCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesDocumentDidSaveCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesDocumentDidFocusCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesDocumentEventCapabilities=object({didOpen:defaultOnError(zNesDocumentDidOpenCapabilities.nullish(),()=>{}),didChange:defaultOnError(zNesDocumentDidChangeCapabilities.nullish(),()=>{}),didClose:defaultOnError(zNesDocumentDidCloseCapabilities.nullish(),()=>{}),didSave:defaultOnError(zNesDocumentDidSaveCapabilities.nullish(),()=>{}),didFocus:defaultOnError(zNesDocumentDidFocusCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesEventCapabilities=object({document:defaultOnError(zNesDocumentEventCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesRecentFilesCapabilities=object({maxCount:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesRelatedSnippetsCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesEditHistoryCapabilities=object({maxCount:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesUserActionsCapabilities=object({maxCount:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesOpenFilesCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesDiagnosticsCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesContextCapabilities=object({recentFiles:defaultOnError(zNesRecentFilesCapabilities.nullish(),()=>{}),relatedSnippets:defaultOnError(zNesRelatedSnippetsCapabilities.nullish(),()=>{}),editHistory:defaultOnError(zNesEditHistoryCapabilities.nullish(),()=>{}),userActions:defaultOnError(zNesUserActionsCapabilities.nullish(),()=>{}),openFiles:defaultOnError(zNesOpenFilesCapabilities.nullish(),()=>{}),diagnostics:defaultOnError(zNesDiagnosticsCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesCapabilities=object({events:defaultOnError(zNesEventCapabilities.nullish(),()=>{}),context:defaultOnError(zNesContextCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPositionEncodingKind=union([literal("utf-16"),literal("utf-32"),literal("utf-8")]),zAgentCapabilities=object({loadSession:defaultOnError(boolean2().optional().default(!1),()=>!1),promptCapabilities:defaultOnError(zPromptCapabilities.optional().default({image:!1,audio:!1,embeddedContext:!1}),()=>({image:!1,audio:!1,embeddedContext:!1})),mcpCapabilities:defaultOnError(zMcpCapabilities.optional().default({http:!1,sse:!1,acp:!1}),()=>({http:!1,sse:!1,acp:!1})),sessionCapabilities:defaultOnError(zSessionCapabilities.optional().default({}),()=>({})),auth:defaultOnError(zAgentAuthCapabilities.optional().default({}),()=>({})),providers:defaultOnError(zProvidersCapabilities.nullish(),()=>{}),nes:defaultOnError(zNesCapabilities.nullish(),()=>{}),positionEncoding:defaultOnError(zPositionEncodingKind.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthMethodId=string2(),zAuthEnvVar=object({name:string2(),label:defaultOnError(string2().nullish(),()=>{}),secret:defaultOnError(boolean2().optional().default(!0),()=>!0),optional:defaultOnError(boolean2().optional().default(!1),()=>!1),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthMethodEnvVar=object({id:zAuthMethodId,name:string2(),description:defaultOnError(string2().nullish(),()=>{}),vars:requiredDefaultOnError(vecSkipError(zAuthEnvVar),()=>[]),link:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthMethodTerminal=object({id:zAuthMethodId,name:string2(),description:defaultOnError(string2().nullish(),()=>{}),args:defaultOnError(vecSkipError(string2()).optional(),()=>[]),env:defaultOnError(record(string2(),string2()).optional(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthMethodAgent=object({id:zAuthMethodId,name:string2(),description:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthMethod=union([zAuthMethodEnvVar.and(object({type:literal("env_var")})),zAuthMethodTerminal.and(object({type:literal("terminal")})),zAuthMethodAgent]),zImplementation=object({name:string2(),title:defaultOnError(string2().nullish(),()=>{}),version:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zInitializeResponse=object({protocolVersion:zProtocolVersion,agentCapabilities:defaultOnError(zAgentCapabilities.optional().default({loadSession:!1,promptCapabilities:{image:!1,audio:!1,embeddedContext:!1},mcpCapabilities:{http:!1,sse:!1,acp:!1},sessionCapabilities:{},auth:{}}),()=>({loadSession:!1,promptCapabilities:{image:!1,audio:!1,embeddedContext:!1},mcpCapabilities:{http:!1,sse:!1,acp:!1},sessionCapabilities:{},auth:{}})),authMethods:defaultOnError(vecSkipError(zAuthMethod).optional().default([]),()=>[]),agentInfo:defaultOnError(zImplementation.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthenticateResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zProviderId=string2(),zLlmProtocol=union([literal("anthropic"),literal("openai"),literal("azure"),literal("vertex"),literal("bedrock"),string2()]),zProviderCurrentConfig=object({apiType:zLlmProtocol,baseUrl:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zProviderInfo=object({providerId:zProviderId,supported:requiredDefaultOnError(vecSkipError(zLlmProtocol),()=>[]),required:boolean2(),current:zProviderCurrentConfig.nullish(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zListProvidersResponse=object({providers:array(zProviderInfo),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSetProviderResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDisableProviderResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zLogoutResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionModeId=string2(),zSessionMode=object({id:zSessionModeId,name:string2(),description:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionModeState=object({currentModeId:zSessionModeId,availableModes:requiredDefaultOnError(vecSkipError(zSessionMode),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionConfigId=string2(),zSessionConfigOptionCategory=union([literal("mode"),literal("model"),literal("model_config"),literal("thought_level"),string2()]),zSessionConfigValueId=string2(),zSessionConfigSelectOption=object({value:zSessionConfigValueId,name:string2(),description:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionConfigGroupId=string2(),zSessionConfigSelectGroup=object({group:zSessionConfigGroupId,name:string2(),options:requiredDefaultOnError(vecSkipError(zSessionConfigSelectOption),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionConfigSelectOptions=union([array(zSessionConfigSelectOption),array(zSessionConfigSelectGroup)]),zSessionConfigSelect=object({currentValue:zSessionConfigValueId,options:zSessionConfigSelectOptions}),zSessionConfigBoolean=object({currentValue:boolean2()}),zSessionConfigOption=intersection(union([zSessionConfigSelect.and(object({type:literal("select")})),zSessionConfigBoolean.and(object({type:literal("boolean")}))]),object({id:zSessionConfigId,name:string2(),description:defaultOnError(string2().nullish(),()=>{}),category:defaultOnError(zSessionConfigOptionCategory.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})})),zNewSessionResponse=object({sessionId:zSessionId,modes:defaultOnError(zSessionModeState.nullish(),()=>{}),configOptions:defaultOnError(vecSkipError(zSessionConfigOption).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zLoadSessionResponse=object({modes:defaultOnError(zSessionModeState.nullish(),()=>{}),configOptions:defaultOnError(vecSkipError(zSessionConfigOption).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionInfo=object({sessionId:zSessionId,cwd:string2(),additionalDirectories:defaultOnError(vecSkipError(string2()).optional(),()=>[]),title:defaultOnError(string2().nullish(),()=>{}),updatedAt:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zListSessionsResponse=object({sessions:requiredDefaultOnError(vecSkipError(zSessionInfo),()=>[]),nextCursor:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDeleteSessionResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zForkSessionResponse=object({sessionId:zSessionId,modes:defaultOnError(zSessionModeState.nullish(),()=>{}),configOptions:defaultOnError(vecSkipError(zSessionConfigOption).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zResumeSessionResponse=object({modes:defaultOnError(zSessionModeState.nullish(),()=>{}),configOptions:defaultOnError(vecSkipError(zSessionConfigOption).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCloseSessionResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSetSessionModeResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSetSessionConfigOptionResponse=object({configOptions:requiredDefaultOnError(vecSkipError(zSessionConfigOption),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zStopReason=union([literal("end_turn"),literal("max_tokens"),literal("max_turn_requests"),literal("refusal"),literal("cancelled")]),zUsage=object({totalTokens:number2(),inputTokens:number2(),outputTokens:number2(),thoughtTokens:defaultOnError(number2().nullish(),()=>{}),cachedReadTokens:defaultOnError(number2().nullish(),()=>{}),cachedWriteTokens:defaultOnError(number2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPromptResponse=object({stopReason:zStopReason,usage:defaultOnError(zUsage.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zStartNesResponse=object({sessionId:zSessionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesSuggestionId=string2(),zPosition=object({line:int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}),character:int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zRange=object({start:zPosition,end:zPosition,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesTextEdit=object({range:zRange,newText:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesEditSuggestion=object({id:zNesSuggestionId,uri:string2(),edits:array(zNesTextEdit),cursorPosition:defaultOnError(zPosition.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesJumpSuggestion=object({id:zNesSuggestionId,uri:string2(),position:zPosition,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesRenameSuggestion=object({id:zNesSuggestionId,uri:string2(),position:zPosition,newName:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesSearchAndReplaceSuggestion=object({id:zNesSuggestionId,uri:string2(),search:string2(),replace:string2(),isRegex:boolean2().nullish(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesSuggestion=union([zNesEditSuggestion.and(object({kind:literal("edit")})),zNesJumpSuggestion.and(object({kind:literal("jump")})),zNesRenameSuggestion.and(object({kind:literal("rename")})),zNesSearchAndReplaceSuggestion.and(object({kind:literal("searchAndReplace")}))]),zSuggestNesResponse=object({suggestions:array(zNesSuggestion),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCloseNesResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zExtResponse=unknown(),zMessageMcpResponse=unknown(),zErrorCode=union([literal(-32700),literal(-32600),literal(-32601),literal(-32602),literal(-32603),literal(-32800),literal(-32e3),literal(-32002),int().min(-2147483648,{error:"Invalid value: Expected int32 to be >= -2147483648"}).max(2147483647,{error:"Invalid value: Expected int32 to be <= 2147483647"})]),zError=object({code:zErrorCode,message:string2(),data:defaultOnError(unknown().optional(),()=>{})}),zAgentResponse=union([object({id:zRequestId,result:union([zInitializeResponse,zAuthenticateResponse,zListProvidersResponse,zSetProviderResponse,zDisableProviderResponse,zLogoutResponse,zNewSessionResponse,zLoadSessionResponse,zListSessionsResponse,zDeleteSessionResponse,zForkSessionResponse,zResumeSessionResponse,zCloseSessionResponse,zSetSessionModeResponse,zSetSessionConfigOptionResponse,zPromptResponse,zStartNesResponse,zSuggestNesResponse,zCloseNesResponse,zExtResponse,zMessageMcpResponse])}),object({id:zRequestId,error:zError})]),zMessageId=string2(),zContentChunk=object({content:zContentBlock,messageId:defaultOnError(zMessageId.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zToolCall=object({toolCallId:zToolCallId,title:string2(),kind:defaultOnError(zToolKind.optional(),()=>{}),status:defaultOnError(zToolCallStatus.optional(),()=>{}),content:defaultOnError(vecSkipError(zToolCallContent).optional(),()=>[]),locations:defaultOnError(vecSkipError(zToolCallLocation).optional(),()=>[]),rawInput:defaultOnError(unknown().optional(),()=>{}),rawOutput:defaultOnError(unknown().optional(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlanEntryPriority=union([literal("high"),literal("medium"),literal("low")]),zPlanEntryStatus=union([literal("pending"),literal("in_progress"),literal("completed")]),zPlanEntry=object({content:string2(),priority:zPlanEntryPriority,status:zPlanEntryStatus,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlan=object({entries:requiredDefaultOnError(vecSkipError(zPlanEntry),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlanId=string2(),zPlanItems=object({planId:zPlanId,entries:requiredDefaultOnError(vecSkipError(zPlanEntry),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlanFile=object({planId:zPlanId,uri:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlanMarkdown=object({planId:zPlanId,content:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlanUpdateContent=union([zPlanItems.and(object({type:literal("items")})),zPlanFile.and(object({type:literal("file")})),zPlanMarkdown.and(object({type:literal("markdown")}))]),zPlanUpdate=object({plan:zPlanUpdateContent,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlanRemoved=object({planId:zPlanId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zUnstructuredCommandInput=object({hint:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAvailableCommandInput=zUnstructuredCommandInput,zAvailableCommand=object({name:string2(),description:string2(),input:defaultOnError(zAvailableCommandInput.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAvailableCommandsUpdate=object({availableCommands:requiredDefaultOnError(vecSkipError(zAvailableCommand),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCurrentModeUpdate=object({currentModeId:zSessionModeId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zConfigOptionUpdate=object({configOptions:requiredDefaultOnError(vecSkipError(zSessionConfigOption),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionInfoUpdate=object({title:defaultOnError(string2().nullish(),()=>{}),updatedAt:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCost=object({amount:number2(),currency:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zUsageUpdate=object({used:number2(),size:number2(),cost:defaultOnError(zCost.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionUpdate=union([zContentChunk.and(object({sessionUpdate:literal("user_message_chunk")})),zContentChunk.and(object({sessionUpdate:literal("agent_message_chunk")})),zContentChunk.and(object({sessionUpdate:literal("agent_thought_chunk")})),zToolCall.and(object({sessionUpdate:literal("tool_call")})),zToolCallUpdate.and(object({sessionUpdate:literal("tool_call_update")})),zPlan.and(object({sessionUpdate:literal("plan")})),zPlanUpdate.and(object({sessionUpdate:literal("plan_update")})),zPlanRemoved.and(object({sessionUpdate:literal("plan_removed")})),zAvailableCommandsUpdate.and(object({sessionUpdate:literal("available_commands_update")})),zCurrentModeUpdate.and(object({sessionUpdate:literal("current_mode_update")})),zConfigOptionUpdate.and(object({sessionUpdate:literal("config_option_update")})),zSessionInfoUpdate.and(object({sessionUpdate:literal("session_info_update")})),zUsageUpdate.and(object({sessionUpdate:literal("usage_update")}))]),zSessionNotification=object({sessionId:zSessionId,update:zSessionUpdate,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCompleteElicitationNotification=object({elicitationId:zElicitationId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMessageMcpNotification=object({connectionId:zMcpConnectionId,method:string2(),params:defaultOnError(record(string2(),unknown()).nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zExtNotification=unknown(),zAgentNotification=object({method:string2(),params:union([zSessionNotification,zCompleteElicitationNotification,zMessageMcpNotification,zExtNotification]).nullish()}),zFileSystemCapabilities=object({readTextFile:defaultOnError(boolean2().optional().default(!1),()=>!1),writeTextFile:defaultOnError(boolean2().optional().default(!1),()=>!1),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zBooleanConfigOptionCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSessionConfigOptionsCapabilities=object({boolean:defaultOnError(zBooleanConfigOptionCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zClientSessionCapabilities=object({configOptions:defaultOnError(zSessionConfigOptionsCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zPlanCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthCapabilities=object({terminal:defaultOnError(boolean2().optional().default(!1),()=>!1),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zElicitationFormCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zElicitationUrlCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zElicitationCapabilities=object({form:defaultOnError(zElicitationFormCapabilities.nullish(),()=>{}),url:defaultOnError(zElicitationUrlCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesJumpCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesRenameCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesSearchAndReplaceCapabilities=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zClientNesCapabilities=object({jump:defaultOnError(zNesJumpCapabilities.nullish(),()=>{}),rename:defaultOnError(zNesRenameCapabilities.nullish(),()=>{}),searchAndReplace:defaultOnError(zNesSearchAndReplaceCapabilities.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zClientCapabilities=object({fs:defaultOnError(zFileSystemCapabilities.optional().default({readTextFile:!1,writeTextFile:!1}),()=>({readTextFile:!1,writeTextFile:!1})),terminal:defaultOnError(boolean2().optional().default(!1),()=>!1),session:defaultOnError(zClientSessionCapabilities.nullish(),()=>{}),plan:defaultOnError(zPlanCapabilities.nullish(),()=>{}),auth:defaultOnError(zAuthCapabilities.optional().default({terminal:!1}),()=>({terminal:!1})),elicitation:defaultOnError(zElicitationCapabilities.nullish(),()=>{}),nes:defaultOnError(zClientNesCapabilities.nullish(),()=>{}),positionEncodings:defaultOnError(vecSkipError(zPositionEncodingKind).optional(),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zInitializeRequest=object({protocolVersion:zProtocolVersion,clientCapabilities:defaultOnError(zClientCapabilities.optional().default({fs:{readTextFile:!1,writeTextFile:!1},terminal:!1,auth:{terminal:!1}}),()=>({fs:{readTextFile:!1,writeTextFile:!1},terminal:!1,auth:{terminal:!1}})),clientInfo:defaultOnError(zImplementation.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAuthenticateRequest=object({methodId:zAuthMethodId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zListProvidersRequest=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSetProviderRequest=object({providerId:zProviderId,apiType:zLlmProtocol,baseUrl:string2(),headers:record(string2(),string2()).optional(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDisableProviderRequest=object({providerId:zProviderId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zLogoutRequest=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zHttpHeader=object({name:string2(),value:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMcpServerHttp=object({name:string2(),url:string2(),headers:array(zHttpHeader),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMcpServerSse=object({name:string2(),url:string2(),headers:array(zHttpHeader),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMcpServerAcp=object({name:string2(),serverId:zMcpServerAcpId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMcpServerStdio=object({name:string2(),command:string2(),args:array(string2()),env:array(zEnvVariable),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zMcpServer=union([zMcpServerHttp.and(object({type:literal("http")})),zMcpServerSse.and(object({type:literal("sse")})),zMcpServerAcp.and(object({type:literal("acp")})),zMcpServerStdio]),zNewSessionRequest=object({cwd:string2(),additionalDirectories:defaultOnError(vecSkipError(string2()).optional(),()=>[]),mcpServers:requiredDefaultOnError(vecSkipError(zMcpServer),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zLoadSessionRequest=object({mcpServers:requiredDefaultOnError(vecSkipError(zMcpServer),()=>[]),cwd:string2(),additionalDirectories:defaultOnError(vecSkipError(string2()).optional(),()=>[]),sessionId:zSessionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zListSessionsRequest=object({cwd:string2().nullish(),cursor:string2().nullish(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDeleteSessionRequest=object({sessionId:zSessionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zForkSessionRequest=object({sessionId:zSessionId,cwd:string2(),additionalDirectories:defaultOnError(vecSkipError(string2()).optional(),()=>[]),mcpServers:defaultOnError(vecSkipError(zMcpServer).optional(),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zResumeSessionRequest=object({sessionId:zSessionId,cwd:string2(),additionalDirectories:defaultOnError(vecSkipError(string2()).optional(),()=>[]),mcpServers:defaultOnError(vecSkipError(zMcpServer).optional(),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCloseSessionRequest=object({sessionId:zSessionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSetSessionModeRequest=object({sessionId:zSessionId,modeId:zSessionModeId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSetSessionConfigOptionRequest=intersection(union([object({value:boolean2(),type:literal("boolean")}),object({value:zSessionConfigValueId})]),object({sessionId:zSessionId,configId:zSessionConfigId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})})),zPromptRequest=object({sessionId:zSessionId,prompt:array(zContentBlock),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zWorkspaceFolder=object({uri:string2(),name:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesRepository=object({name:string2(),owner:string2(),remoteUrl:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zStartNesRequest=object({workspaceUri:defaultOnError(string2().nullish(),()=>{}),workspaceFolders:array(zWorkspaceFolder).nullish(),repository:defaultOnError(zNesRepository.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesTriggerKind=union([literal("automatic"),literal("diagnostic"),literal("manual")]),zNesRecentFile=object({uri:string2(),languageId:string2(),text:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesExcerpt=object({startLine:int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}),endLine:int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}),text:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesRelatedSnippet=object({uri:string2(),excerpts:array(zNesExcerpt),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesEditHistoryEntry=object({uri:string2(),diff:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesUserAction=object({action:string2(),uri:string2(),position:zPosition,timestampMs:number2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesOpenFile=object({uri:string2(),languageId:string2(),visibleRange:defaultOnError(zRange.nullish(),()=>{}),lastFocusedMs:defaultOnError(number2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesDiagnosticSeverity=union([literal("error"),literal("warning"),literal("information"),literal("hint")]),zNesDiagnostic=object({uri:string2(),range:zRange,severity:zNesDiagnosticSeverity,message:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesSuggestContext=object({recentFiles:array(zNesRecentFile).nullish(),relatedSnippets:array(zNesRelatedSnippet).nullish(),editHistory:array(zNesEditHistoryEntry).nullish(),userActions:array(zNesUserAction).nullish(),openFiles:array(zNesOpenFile).nullish(),diagnostics:array(zNesDiagnostic).nullish(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSuggestNesRequest=object({sessionId:zSessionId,uri:string2(),version:number2(),position:zPosition,selection:zRange.nullish(),triggerKind:zNesTriggerKind,context:zNesSuggestContext.nullish(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCloseNesRequest=object({sessionId:zSessionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zClientRequest=object({id:zRequestId,method:string2(),params:union([zInitializeRequest,zAuthenticateRequest,zListProvidersRequest,zSetProviderRequest,zDisableProviderRequest,zLogoutRequest,zNewSessionRequest,zLoadSessionRequest,zListSessionsRequest,zDeleteSessionRequest,zForkSessionRequest,zResumeSessionRequest,zCloseSessionRequest,zSetSessionModeRequest,zSetSessionConfigOptionRequest,zPromptRequest,zStartNesRequest,zSuggestNesRequest,zCloseNesRequest,zMessageMcpRequest,zExtRequest]).nullish()}),zWriteTextFileResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zReadTextFileResponse=object({content:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zSelectedPermissionOutcome=object({optionId:zPermissionOptionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zRequestPermissionOutcome=union([object({outcome:literal("cancelled")}),zSelectedPermissionOutcome.and(object({outcome:literal("selected")}))]),zRequestPermissionResponse=object({outcome:zRequestPermissionOutcome,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zCreateTerminalResponse=object({terminalId:zTerminalId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTerminalExitStatus=object({exitCode:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),signal:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTerminalOutputResponse=object({output:string2(),truncated:boolean2(),exitStatus:defaultOnError(zTerminalExitStatus.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zReleaseTerminalResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zWaitForTerminalExitResponse=object({exitCode:defaultOnError(int().gte(0).max(4294967295,{error:"Invalid value: Expected uint32 to be <= 4294967295"}).nullish(),()=>{}),signal:defaultOnError(string2().nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zKillTerminalResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zElicitationContentValue=union([string2(),number2(),number2(),boolean2(),array(string2())]),zElicitationAcceptAction=object({content:record(string2(),zElicitationContentValue).nullish()}),zCreateElicitationResponse=preserveCustomPayload(intersection(union([zElicitationAcceptAction.and(object({action:literal("accept")})),object({action:literal("decline")}),object({action:literal("cancel")}),excludeKnownTags(object({action:string2()}),"action",["accept","cancel","decline"])]),object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})})),"action",["accept","cancel","decline"]),zConnectMcpResponse=object({connectionId:zMcpConnectionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDisconnectMcpResponse=object({_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zClientResponse=union([object({id:zRequestId,result:union([zWriteTextFileResponse,zReadTextFileResponse,zRequestPermissionResponse,zCreateTerminalResponse,zTerminalOutputResponse,zReleaseTerminalResponse,zWaitForTerminalExitResponse,zKillTerminalResponse,zCreateElicitationResponse,zConnectMcpResponse,zDisconnectMcpResponse,zMessageMcpResponse,zExtResponse])}),object({id:zRequestId,error:zError})]),zCancelNotification=object({sessionId:zSessionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDidOpenDocumentNotification=object({sessionId:zSessionId,uri:string2(),languageId:string2(),version:number2(),text:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zTextDocumentContentChangeEvent=object({range:zRange.nullish(),text:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDidChangeDocumentNotification=object({sessionId:zSessionId,uri:string2(),version:number2(),contentChanges:requiredDefaultOnError(vecSkipError(zTextDocumentContentChangeEvent),()=>[]),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDidCloseDocumentNotification=object({sessionId:zSessionId,uri:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDidSaveDocumentNotification=object({sessionId:zSessionId,uri:string2(),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zDidFocusDocumentNotification=object({sessionId:zSessionId,uri:string2(),version:number2(),position:zPosition,visibleRange:zRange,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zAcceptNesNotification=object({sessionId:zSessionId,id:zNesSuggestionId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zNesRejectReason=union([literal("rejected"),literal("ignored"),literal("replaced"),literal("cancelled")]),zRejectNesNotification=object({sessionId:zSessionId,id:zNesSuggestionId,reason:defaultOnError(zNesRejectReason.nullish(),()=>{}),_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})}),zClientNotification=object({method:string2(),params:union([zCancelNotification,zDidOpenDocumentNotification,zDidChangeDocumentNotification,zDidCloseDocumentNotification,zDidSaveDocumentNotification,zDidFocusDocumentNotification,zAcceptNesNotification,zRejectNesNotification,zMessageMcpNotification,zExtNotification]).nullish()}),zCancelRequestNotification=object({requestId:zRequestId,_meta:defaultOnError(record(string2(),unknown()).nullish(),()=>{})});var zGuardCreateElicitationRequestForm=zElicitationFormMode.and(object({mode:literal("form")})).and(object({message:string2()})),zGuardCreateElicitationRequestUrl=zElicitationUrlMode.and(object({mode:literal("url")})).and(object({message:string2()})),zGuardCreateElicitationRequestCustom=union([zElicitationSessionScope,zElicitationRequestScope]).and(object({message:string2()})),zGuardElicitationPropertySchemaString=zStringPropertySchema.and(object({type:literal("string")})),zGuardElicitationPropertySchemaNumber=zNumberPropertySchema.and(object({type:literal("number")})),zGuardElicitationPropertySchemaInteger=zIntegerPropertySchema.and(object({type:literal("integer")})),zGuardElicitationPropertySchemaBoolean=zBooleanPropertySchema.and(object({type:literal("boolean")})),zGuardElicitationPropertySchemaArray=zMultiSelectPropertySchema.and(object({type:literal("array")})),zGuardMultiSelectItemsString=zStringMultiSelectItems.and(object({type:literal("string")}));var zGuardCreateElicitationResponseAccept=zElicitationAcceptAction.and(object({action:literal("accept")})),zGuardCreateElicitationResponseDecline=object({action:literal("decline")}),zGuardCreateElicitationResponseCancel=object({action:literal("cancel")});var CANCEL_REQUEST_METHOD="$/cancel_request";function isRecord2(value){return typeof value=="object"&&value!==null}function isJsonRpcId(value){return value===null||typeof value=="string"||typeof value=="number"&&Number.isFinite(value)}function cancelRequestId(params){if(!(!isRecord2(params)||!isJsonRpcId(params.requestId)))return params.requestId}var Handled={yes(){return{handled:!0}},no(message,retry=!1){return{handled:!1,message,retry}}};function rejectedPromise(error48){let promise2=Promise.reject(error48);return promise2.catch(()=>{}),promise2}function errorDetails(error48){if(error48 instanceof Error||typeof error48=="object"&&error48!=null&&"message"in error48&&typeof error48.message=="string")return error48.message}function isZodError(error48){return typeof error48=="object"&&error48!==null&&"name"in error48&&error48.name==="ZodError"&&"issues"in error48&&Array.isArray(error48.issues)&&"format"in error48&&typeof error48.format=="function"}function errorToResult(error48){if(error48 instanceof RequestError)return error48.toResult();if(isZodError(error48))return RequestError.invalidParams(error48.format()).toResult();let details=errorDetails(error48);try{return RequestError.internalError(details?JSON.parse(details):{}).toResult()}catch{return RequestError.internalError({details}).toResult()}}function requestCancelledError(reason){return reason instanceof RequestError&&reason.code===-32800?reason:RequestError.requestCancelled(reason)}function errorToRequestResult(error48,signal){let requestCancelled=abortErrorToRequestCancelled(error48,signal);return requestCancelled?requestCancelled.toResult():errorToResult(error48)}function abortErrorToRequestCancelled(error48,signal){if(!(!signal.aborted||!isAbortError(error48)))return requestCancelledError(signal.reason)}function isAbortError(error48){if(typeof error48!="object"||error48===null)return!1;let maybeAbortError=error48;return maybeAbortError.name==="AbortError"||maybeAbortError.code==="ABORT_ERR"}var RequestResponder=class{id;sendResult;signal;finishRequest;didRespond=!1;constructor(id,sendResult,signal=new AbortController().signal,finishRequest){this.id=id,this.sendResult=sendResult,this.signal=signal,this.finishRequest=finishRequest}get responded(){return this.didRespond}respond(response){return this.respondWithResult({result:response??null})}respondWithError(error48){let errorResponse=error48 instanceof RequestError?error48.toErrorResponse():error48;return this.respondWithResult({error:errorResponse})}respondWithResult(result){return this.didRespond?rejectedPromise(new Error("JSON-RPC request already responded")):(this.didRespond=!0,this.sendResult(result).finally(()=>{this.finishRequest?.()}))}},HandlerRegistration=class{disposeHandler;active=!0;constructor(disposeHandler){this.disposeHandler=disposeHandler}dispose(){this.active&&(this.active=!1,this.disposeHandler())}[Symbol.dispose](){this.dispose()}runIndefinitely(){return this}},ConnectionContext=class{connection;constructor(connection){this.connection=connection}sendRequest(method,params,mapResponse,options){return this.connection.sendRequest(method,params,mapResponse,options)}sendNotification(method,params){return this.connection.sendNotification(method,params)}sendCancelRequest(requestId){return this.connection.sendCancelRequest(requestId)}addDynamicHandler(handler){return this.connection.addDynamicHandler(handler)}get signal(){return this.connection.signal}get closed(){return this.connection.closed}},Connection=class{pendingResponses=new Map;incomingRequests=new Map;nextRequestId=0;staticHandlers=[];dynamicHandlers=new Set;stream;writeQueue=Promise.resolve();abortController=new AbortController;closedPromise;retryQueue=[];context=new ConnectionContext(this);receiveReader;constructor(requestHandlerOrStream,notificationHandlerOrHandlers,streamOrOptions,options){if(typeof requestHandlerOrStream=="function"){let requestHandler=requestHandlerOrStream,notificationHandler=notificationHandlerOrHandlers,stream2=streamOrOptions;this.initialize(stream2,[...options?.handlers??[],this.legacyHandler(requestHandler,notificationHandler)]);return}let stream=requestHandlerOrStream,handlers=notificationHandlerOrHandlers,connectionOptions=streamOrOptions;this.initialize(stream,[...connectionOptions?.handlers??[],...handlers])}static builder(){return new ConnectionBuilder}runUntil(op){let opSettled=!1,opPromise=Promise.resolve().then(()=>op(this.context)).finally(()=>{opSettled=!0}),closedPromise=this.closed.then(()=>{if(opSettled)return new Promise(()=>{});throw this.closedReason()});return Promise.race([opPromise,closedPromise]).finally(()=>{opSettled=!0,this.close()})}addDynamicHandler(handler){if(this.dynamicHandlers.add(handler),this.retryQueue.length>0)for(let message of this.retryQueue.splice(0))this.processIncomingMessage(message).catch(error48=>this.close(error48));return new HandlerRegistration(()=>{this.dynamicHandlers.delete(handler)})}get signal(){return this.abortController.signal}get closed(){return this.closedPromise}getContext(){return this.context}sendRequest(method,params,mapResponse,options={}){if(this.abortController.signal.aborted)return rejectedPromise(this.closedReason());let id=this.nextRequestId++,cancel=()=>{},responsePromise=new Promise((resolve2,reject)=>{let pendingResponse={resolve:response=>{try{let value=mapResponse?mapResponse(response):response;resolve2(value)}catch(error48){reject(error48)}},reject};cancel=()=>{pendingResponse.cancellationSent||(pendingResponse.cancellationSent=!0,pendingResponse.cleanup?.(),this.sendCancelRequest(id).catch(()=>{}))},options.cancellationSignal?.addEventListener("abort",cancel,{once:!0}),pendingResponse.cleanup=()=>{options.cancellationSignal?.removeEventListener("abort",cancel)},this.pendingResponses.set(id,pendingResponse)});return responsePromise.catch(()=>{}),this.sendMessage({jsonrpc:"2.0",id,method,params}).catch(()=>{}),options.cancellationSignal?.aborted&&cancel(),responsePromise}sendCancelRequest(requestId){return this.sendNotification(CANCEL_REQUEST_METHOD,{requestId})}sendNotification(method,params){return this.abortController.signal.aborted?rejectedPromise(this.closedReason()):this.sendMessage({jsonrpc:"2.0",method,params})}close(error48){if(this.abortController.signal.aborted)return;let closeError=error48??new Error("ACP connection closed");this.abortController.abort(closeError);for(let pendingResponse of this.pendingResponses.values())pendingResponse.cleanup?.(),pendingResponse.reject(closeError);this.pendingResponses.clear();for(let controller of this.incomingRequests.values())controller.abort(closeError);this.incomingRequests.clear(),this.receiveReader?.cancel(closeError).catch(()=>{})}initialize(stream,handlers){this.stream=stream,this.staticHandlers=handlers,this.closedPromise=new Promise(resolve2=>{this.abortController.signal.addEventListener("abort",()=>resolve2())}),this.receive()}legacyHandler(requestHandler,notificationHandler){return{handleMessage:async(message,cx)=>{if(message.kind==="request"){let result=await requestHandler(message.method,message.params,cx);await message.responder.respond(result)}else await notificationHandler(message.method,message.params,cx);return Handled.yes()}}}async receive(){let closeError;try{let reader=this.stream.readable.getReader();this.receiveReader=reader;try{for(;!this.abortController.signal.aborted;){let{value:message,done}=await reader.read();if(this.abortController.signal.aborted||done)break;message&&this.receiveMessage(message)}}finally{this.receiveReader===reader&&(this.receiveReader=void 0),reader.releaseLock()}}catch(error48){closeError=error48}finally{this.close(closeError)}}receiveMessage(message){if(!this.abortController.signal.aborted){if(!isRecord2(message)){console.error("Invalid message",{message});return}"method"in message?("id"in message||this.handleProtocolNotification(message),this.processIncomingMessage(this.toIncomingMessage(message)).catch(error48=>this.close(error48))):"id"in message?this.handleResponse(message):console.error("Invalid message",{message})}}async processIncomingMessage(message){if(this.abortController.signal.aborted)return;let current=message,retry=!1;try{for(let handler of[...this.staticHandlers,...this.dynamicHandlers.values()]){if(this.abortController.signal.aborted)return;let result=await handler.handleMessage(current,this.context)??{handled:!0};if(result.handled)return;current=result.message??current,retry=retry||!!result.retry}retry?this.retryQueue.push(current):current.kind==="request"&&await current.responder.respondWithError(RequestError.methodNotFound(current.method))}catch(error48){if(this.abortController.signal.aborted)return;if(current.kind==="request"&&!current.responder.responded)await current.responder.respondWithResult(errorToRequestResult(error48,current.responder.signal));else{let response=errorToResult(error48);"error"in response&&console.error("Error handling notification",message.raw,response.error)}}}toIncomingMessage(message){if("id"in message){let abortController=new AbortController;this.incomingRequests.set(message.id,abortController);let finishRequest=()=>{this.incomingRequests.get(message.id)===abortController&&this.incomingRequests.delete(message.id)};return{kind:"request",method:message.method,params:message.params,raw:message,signal:abortController.signal,responder:new RequestResponder(message.id,result=>this.sendMessage({jsonrpc:"2.0",id:message.id,...result}),abortController.signal,finishRequest)}}return{kind:"notification",method:message.method,params:message.params,raw:message}}handleResponse(response){let pendingResponse=this.pendingResponses.get(response.id);if(pendingResponse)if(this.pendingResponses.delete(response.id),pendingResponse.cleanup?.(),"result"in response)pendingResponse.resolve(response.result);else if("error"in response&&isRecord2(response.error)){let{code,message,data}=response.error;pendingResponse.reject(new RequestError(code,message,data))}else pendingResponse.reject(RequestError.invalidRequest(response));else console.error("Got response to unknown request",response.id)}handleProtocolNotification(message){if(message.method!==CANCEL_REQUEST_METHOD)return;let requestId=cancelRequestId(message.params);if(requestId===void 0)return;let controller=this.incomingRequests.get(requestId);!controller||controller.signal.aborted||controller.abort(RequestError.requestCancelled({requestId}))}closedReason(){return this.abortController.signal.reason??new Error("ACP connection closed")}async sendMessage(message){return this.abortController.signal.aborted?rejectedPromise(this.closedReason()):(this.writeQueue=this.writeQueue.then(async()=>{if(this.abortController.signal.aborted)throw this.closedReason();let writer=this.stream.writable.getWriter();try{await writer.write(message)}finally{writer.releaseLock()}}).catch(error48=>{throw this.close(error48),error48}),this.writeQueue)}},ConnectionBuilder=class{handlers=[];connectionName;name(name){return this.connectionName=name,this}withHandler(handler){return this.handlers.push(handler),this}onReceiveMessage(handler){return this.withHandler({handleMessage:async(message,cx)=>await handler(message,cx)??Handled.no(message),describe:()=>this.connectionName??"onReceiveMessage"})}onReceiveRequest(method,parse3,handler){return this.withHandler({handleMessage:async(message,cx)=>{if(message.kind!=="request"||message.method!==method)return Handled.no(message);let request=parse3(message.params);return await handler(request,message.responder,cx)??Handled.yes()},describe:()=>`${this.connectionName??"request"}:${method}`})}onReceiveNotification(method,parse3,handler){return this.withHandler({handleMessage:async(message,cx)=>{if(message.kind!=="notification"||message.method!==method)return Handled.no(message);let notification=parse3(message.params);return await handler(notification,cx)??Handled.yes()},describe:()=>`${this.connectionName??"notification"}:${method}`})}connect(stream,options){return new Connection(stream,this.handlers,options)}connectWith(stream,op,options){return this.connect(stream,options).runUntil(op)}},RequestError=class _RequestError extends Error{code;data;constructor(code,message,data){super(message),this.code=code,this.name="RequestError",this.data=data}static parseError(data,additionalMessage){return new _RequestError(-32700,`Parse error${additionalMessage?`: ${additionalMessage}`:""}`,data)}static invalidRequest(data,additionalMessage){return new _RequestError(-32600,`Invalid request${additionalMessage?`: ${additionalMessage}`:""}`,data)}static methodNotFound(method){return new _RequestError(-32601,`"Method not found": ${method}`,{method})}static invalidParams(data,additionalMessage){return new _RequestError(-32602,`Invalid params${additionalMessage?`: ${additionalMessage}`:""}`,data)}static internalError(data,additionalMessage){return new _RequestError(-32603,`Internal error${additionalMessage?`: ${additionalMessage}`:""}`,data)}static requestCancelled(data,additionalMessage){return new _RequestError(-32800,`Request cancelled${additionalMessage?`: ${additionalMessage}`:""}`,data)}static authRequired(data,additionalMessage){return new _RequestError(-32e3,`Authentication required${additionalMessage?`: ${additionalMessage}`:""}`,data)}static resourceNotFound(uri){return new _RequestError(-32002,`Resource not found${uri?`: ${uri}`:""}`,uri&&{uri})}toResult(){return{error:{code:this.code,message:this.message,data:this.data}}}toErrorResponse(){return{code:this.code,message:this.message,data:this.data}}};var LineBuffer=class{#pending=[];push(chunk){let lines=[],start=0,newlineIndex=chunk.indexOf(10,start);for(;newlineIndex!==-1;)lines.push(this.#takeLine(chunk.subarray(start,newlineIndex))),start=newlineIndex+1,newlineIndex=chunk.indexOf(10,start);return start<chunk.byteLength&&this.#pending.push(start===0?chunk:new Uint8Array(chunk.subarray(start))),lines}flush(){if(this.#pending.length!==0)return this.#takeLine(new Uint8Array(0))}#takeLine(tail){if(this.#pending.length===0)return tail;let total=tail.byteLength;for(let part of this.#pending)total+=part.byteLength;let line=new Uint8Array(total),offset=0;for(let part of this.#pending)line.set(part,offset),offset+=part.byteLength;return line.set(tail,offset),this.#pending=[],line}};function ndJsonStream(output,input){let textEncoder2=new TextEncoder,textDecoder=new TextDecoder,cancelled=!1,inputReader,readable=new ReadableStream({async start(controller){let lines=new LineBuffer,enqueueLine=lineBytes=>{let trimmedLine=textDecoder.decode(lineBytes).trim();if(trimmedLine)try{let message=JSON.parse(trimmedLine);isRecord2(message)?controller.enqueue(message):console.warn("Skipping JSON line that is not an object:",trimmedLine)}catch(err){console.error("Failed to parse JSON message:",trimmedLine,err)}},reader=input.getReader();inputReader=reader;try{for(;;){let{value,done}=await reader.read();if(cancelled)return;if(done)break;if(value){for(let line of lines.push(value))if(enqueueLine(line),cancelled)return}}if(cancelled)return;let lastLine=lines.flush();lastLine&&enqueueLine(lastLine)}catch(err){if(cancelled)return;controller.error(err);return}finally{inputReader===reader&&(inputReader=void 0),reader.releaseLock()}cancelled||controller.close()},cancel(reason){return cancelled=!0,inputReader?.cancel(reason)}}),writable=new WritableStream({async write(message){let content=JSON.stringify(message)+`
816
817
  `,writer=output.getWriter();try{await writer.write(textEncoder2.encode(content))}finally{writer.releaseLock()}}});return{readable,writable}}function emptyObjectResponse(response){return response??{}}function isStream(value){return typeof value=="object"&&value!==null&&"readable"in value&&"writable"in value}function memoryStreamPair(){let leftToRight=new TransformStream,rightToLeft=new TransformStream;return[{readable:rightToLeft.readable,writable:leftToRight.writable},{readable:leftToRight.readable,writable:rightToLeft.writable}]}var methods={agent:{initialize:AGENT_METHODS.initialize,authenticate:AGENT_METHODS.authenticate,logout:AGENT_METHODS.logout,providers:{list:AGENT_METHODS.providers_list,set:AGENT_METHODS.providers_set,disable:AGENT_METHODS.providers_disable},session:{new:AGENT_METHODS.session_new,load:AGENT_METHODS.session_load,list:AGENT_METHODS.session_list,delete:AGENT_METHODS.session_delete,fork:AGENT_METHODS.session_fork,resume:AGENT_METHODS.session_resume,close:AGENT_METHODS.session_close,setMode:AGENT_METHODS.session_set_mode,setConfigOption:AGENT_METHODS.session_set_config_option,prompt:AGENT_METHODS.session_prompt,cancel:AGENT_METHODS.session_cancel},nes:{start:AGENT_METHODS.nes_start,suggest:AGENT_METHODS.nes_suggest,accept:AGENT_METHODS.nes_accept,reject:AGENT_METHODS.nes_reject,close:AGENT_METHODS.nes_close},document:{didOpen:AGENT_METHODS.document_did_open,didChange:AGENT_METHODS.document_did_change,didClose:AGENT_METHODS.document_did_close,didSave:AGENT_METHODS.document_did_save,didFocus:AGENT_METHODS.document_did_focus}},client:{session:{requestPermission:CLIENT_METHODS.session_request_permission,update:CLIENT_METHODS.session_update},fs:{writeTextFile:CLIENT_METHODS.fs_write_text_file,readTextFile:CLIENT_METHODS.fs_read_text_file},terminal:{create:CLIENT_METHODS.terminal_create,output:CLIENT_METHODS.terminal_output,release:CLIENT_METHODS.terminal_release,waitForExit:CLIENT_METHODS.terminal_wait_for_exit,kill:CLIENT_METHODS.terminal_kill},elicitation:{create:CLIENT_METHODS.elicitation_create,complete:CLIENT_METHODS.elicitation_complete}},protocol:{cancelRequest:PROTOCOL_METHODS.cancel_request}},startActiveSession=Symbol("startActiveSession"),AcpContext=class{cx;currentRequestId;constructor(cx,currentRequestId){this.cx=cx,this.currentRequestId=currentRequestId}get requestId(){return this.currentRequestId}get connectionContext(){return this.cx}sendRequest(method,params,mapResponse,options){return this.cx.sendRequest(method,params,mapResponse,options)}sendNotification(method,params){return this.cx.sendNotification(method,params)}addDynamicHandler(handler){return this.cx.addDynamicHandler(handler)}},AgentContext=class _AgentContext extends AcpContext{constructor(cx,requestId){super(cx,requestId)}static create(cx,requestId){return new _AgentContext(cx,requestId)}request(method,params,options){let spec=clientRequestSpecsByMethod[method];return this.sendRequest(method,params,spec?.mapResponse,options)}notify(method,params){return this.sendNotification(method,params)}},ClientContext=class _ClientContext extends AcpContext{constructor(cx,requestId){super(cx,requestId)}static create(cx,requestId){return new _ClientContext(cx,requestId)}[startActiveSession](params,options){return this.sendRequest(AGENT_METHODS.session_new,params,response=>this.attachSession(response),options)}buildSession(cwdOrRequest){return typeof cwdOrRequest=="string"?SessionBuilder.create(this,{cwd:cwdOrRequest,mcpServers:[]}):SessionBuilder.create(this,cwdOrRequest)}attachSession(response){let updates=new AsyncQueue,closeSignal=this.connectionContext.signal,failUpdatesOnClose=()=>{updates.fail(closeSignal.reason??new Error("ACP connection closed"))};closeSignal.aborted?failUpdatesOnClose():closeSignal.addEventListener("abort",failUpdatesOnClose);let sessionRegistration=sessionUpdateRouter(this.connectionContext).attach(response,updates),closeRegistration=new HandlerRegistration(()=>{closeSignal.removeEventListener("abort",failUpdatesOnClose)});return ActiveSession.create(this,response,updates,[sessionRegistration,closeRegistration])}request(method,params,options){let spec=agentRequestSpecsByMethod[method];return this.sendRequest(method,params,spec?.mapResponse,options)}notify(method,params){return this.sendNotification(method,params)}},AcpConnectionHandle=class{connection;constructor(connection){this.connection=connection}get signal(){return this.connection.signal}get closed(){return this.connection.closed}close(error48){this.connection.close(error48)}},AgentConnectionHandle=class extends AcpConnectionHandle{connectHandlers;client;didStartConnectHandlers=!1;constructor(connection,connectHandlers=[]){super(connection),this.connectHandlers=connectHandlers,this.client=AgentContext.create(connection.getContext())}startConnectHandlers(){this.didStartConnectHandlers||(this.didStartConnectHandlers=!0,runConnectHandlers(this,this.connectHandlers))}},ClientConnectionHandle=class extends AcpConnectionHandle{connectHandlers;agent;didStartConnectHandlers=!1;constructor(connection,connectHandlers=[]){super(connection),this.connectHandlers=connectHandlers,this.agent=ClientContext.create(connection.getContext())}startConnectHandlers(){this.didStartConnectHandlers||(this.didStartConnectHandlers=!0,runConnectHandlers(this,this.connectHandlers))}};function agentConnection(connection,connectHandlers=[]){return new AgentConnectionHandle(connection,connectHandlers)}function clientConnection(connection,connectHandlers=[]){return new ClientConnectionHandle(connection,connectHandlers)}var AsyncQueue=class{values=[];waiters=[];failed=!1;failure;enqueue(value){if(this.failed)return;let waiter=this.waiters.shift();waiter?waiter.resolve(value):this.values.push({kind:"value",value})}reject(error48){if(!this.failed){if(this.waiters.length>0){for(let waiter of this.waiters.splice(0))waiter.reject(error48);return}this.values.push({kind:"error",error:error48})}}clearErrors(){this.values=this.values.filter(entry=>entry.kind==="value")}fail(error48){if(!this.failed){this.failed=!0,this.failure=error48;for(let waiter of this.waiters.splice(0))waiter.reject(error48)}}next(){if(this.values.length>0){let entry=this.values.shift();return entry.kind==="error"?Promise.reject(entry.error):Promise.resolve(entry.value)}return this.failed?Promise.reject(this.failure):new Promise((resolve2,reject)=>{this.waiters.push({resolve:resolve2,reject})})}};function cloneNewSessionRequest(request){return{...request,additionalDirectories:request.additionalDirectories?[...request.additionalDirectories]:void 0,mcpServers:[...request.mcpServers]}}var SessionBuilder=class _SessionBuilder{cx;request;constructor(cx,request){this.cx=cx,this.request=cloneNewSessionRequest(request)}static create(cx,request){return new _SessionBuilder(cx,request)}toRequest(){return cloneNewSessionRequest(this.request)}withAdditionalDirectories(additionalDirectories){return this.request={...this.request,additionalDirectories:[...additionalDirectories]},this}withMcpServer(mcpServer){return this.request={...this.request,mcpServers:[...this.request.mcpServers,mcpServer]},this}async start(options){return this.cx[startActiveSession](this.toRequest(),options)}async withSession(op){let session=await this.start();try{return await op(session)}finally{session.dispose()}}},ActiveSession=class _ActiveSession{cx;sessionResponse;updates;registrations;constructor(cx,sessionResponse,updates,registrations){this.cx=cx,this.sessionResponse=sessionResponse,this.updates=updates,this.registrations=registrations}static create(cx,sessionResponse,updates,registrations){return new _ActiveSession(cx,sessionResponse,updates,registrations)}get sessionId(){return this.sessionResponse.sessionId}get modes(){return this.sessionResponse.modes}get meta(){return this.sessionResponse._meta}get newSessionResponse(){return this.sessionResponse}prompt(prompt,options){this.updates.clearErrors();let response=this.cx.request(AGENT_METHODS.session_prompt,{sessionId:this.sessionId,prompt:this.promptBlocks(prompt)},options);return response.then(value=>{this.updates.enqueue({kind:"stop",response:value,stopReason:value.stopReason})},error48=>{this.updates.reject(error48)}),response}nextUpdate(){return this.updates.next()}async readText(){let output="";for(;;){let message=await this.nextUpdate();if(message.kind==="stop")return output;let{update}=message;update.sessionUpdate==="agent_message_chunk"&&update.content.type==="text"&&(output+=update.content.text)}}dispose(){for(let registration of this.registrations.splice(0))registration.dispose();this.updates.fail(new Error("Active session disposed"))}[Symbol.dispose](){this.dispose()}promptBlocks(prompt){return typeof prompt=="string"?[{type:"text",text:prompt}]:Array.isArray(prompt)?prompt:[prompt]}};function parseParams2(parser,params){return parser?typeof parser=="function"?parser(params):parser.parse(params):params}function requestSpec(method,params,mapResponse){return{method,params,mapResponse}}function notificationSpec(method,params){return{method,params}}function registerAppRequest(builder,spec,context,handler){builder.onReceiveRequest(spec.method,params=>parseParams2(spec.params,params),async(params,responder,cx)=>{let response=await handler(context(params,cx,responder.signal,responder.id));await responder.respond(spec.mapResponse?spec.mapResponse(response):response)})}function registerAppNotification(builder,spec,context,handler){builder.onReceiveNotification(spec.method,params=>parseParams2(spec.params,params),(params,cx)=>handler(context(params,cx,cx.signal)))}function specsByMethod(specs){let byMethod={};for(let spec of Object.values(specs))byMethod[spec.method]=spec;return byMethod}var agentRequestSpecs={initialize:requestSpec(AGENT_METHODS.initialize,zInitializeRequest),newSession:requestSpec(AGENT_METHODS.session_new,zNewSessionRequest),loadSession:requestSpec(AGENT_METHODS.session_load,zLoadSessionRequest,emptyObjectResponse),unstable_forkSession:requestSpec(AGENT_METHODS.session_fork,zForkSessionRequest),listSessions:requestSpec(AGENT_METHODS.session_list,zListSessionsRequest),deleteSession:requestSpec(AGENT_METHODS.session_delete,zDeleteSessionRequest,emptyObjectResponse),resumeSession:requestSpec(AGENT_METHODS.session_resume,zResumeSessionRequest),closeSession:requestSpec(AGENT_METHODS.session_close,zCloseSessionRequest,emptyObjectResponse),setSessionMode:requestSpec(AGENT_METHODS.session_set_mode,zSetSessionModeRequest,emptyObjectResponse),setSessionConfigOption:requestSpec(AGENT_METHODS.session_set_config_option,zSetSessionConfigOptionRequest),authenticate:requestSpec(AGENT_METHODS.authenticate,zAuthenticateRequest,emptyObjectResponse),unstable_listProviders:requestSpec(AGENT_METHODS.providers_list,zListProvidersRequest),unstable_setProvider:requestSpec(AGENT_METHODS.providers_set,zSetProviderRequest,emptyObjectResponse),unstable_disableProvider:requestSpec(AGENT_METHODS.providers_disable,zDisableProviderRequest,emptyObjectResponse),logout:requestSpec(AGENT_METHODS.logout,zLogoutRequest,emptyObjectResponse),prompt:requestSpec(AGENT_METHODS.session_prompt,zPromptRequest),unstable_startNes:requestSpec(AGENT_METHODS.nes_start,zStartNesRequest),unstable_suggestNes:requestSpec(AGENT_METHODS.nes_suggest,zSuggestNesRequest),unstable_closeNes:requestSpec(AGENT_METHODS.nes_close,zCloseNesRequest,emptyObjectResponse)},agentNotificationSpecs={cancel:notificationSpec(AGENT_METHODS.session_cancel,zCancelNotification),unstable_didOpenDocument:notificationSpec(AGENT_METHODS.document_did_open,zDidOpenDocumentNotification),unstable_didChangeDocument:notificationSpec(AGENT_METHODS.document_did_change,zDidChangeDocumentNotification),unstable_didCloseDocument:notificationSpec(AGENT_METHODS.document_did_close,zDidCloseDocumentNotification),unstable_didSaveDocument:notificationSpec(AGENT_METHODS.document_did_save,zDidSaveDocumentNotification),unstable_didFocusDocument:notificationSpec(AGENT_METHODS.document_did_focus,zDidFocusDocumentNotification),unstable_acceptNes:notificationSpec(AGENT_METHODS.nes_accept,zAcceptNesNotification),unstable_rejectNes:notificationSpec(AGENT_METHODS.nes_reject,zRejectNesNotification)},clientRequestSpecs={requestPermission:requestSpec(CLIENT_METHODS.session_request_permission,zRequestPermissionRequest),writeTextFile:requestSpec(CLIENT_METHODS.fs_write_text_file,zWriteTextFileRequest,emptyObjectResponse),readTextFile:requestSpec(CLIENT_METHODS.fs_read_text_file,zReadTextFileRequest),createTerminal:requestSpec(CLIENT_METHODS.terminal_create,zCreateTerminalRequest),terminalOutput:requestSpec(CLIENT_METHODS.terminal_output,zTerminalOutputRequest),releaseTerminal:requestSpec(CLIENT_METHODS.terminal_release,zReleaseTerminalRequest,emptyObjectResponse),waitForTerminalExit:requestSpec(CLIENT_METHODS.terminal_wait_for_exit,zWaitForTerminalExitRequest),killTerminal:requestSpec(CLIENT_METHODS.terminal_kill,zKillTerminalRequest,emptyObjectResponse),unstable_createElicitation:requestSpec(CLIENT_METHODS.elicitation_create,zCreateElicitationRequest)},clientNotificationSpecs={sessionUpdate:notificationSpec(CLIENT_METHODS.session_update,zSessionNotification),unstable_completeElicitation:notificationSpec(CLIENT_METHODS.elicitation_complete,zCompleteElicitationNotification)},agentRequestSpecsByMethod=specsByMethod(agentRequestSpecs),agentNotificationSpecsByMethod=specsByMethod(agentNotificationSpecs),clientRequestSpecsByMethod=specsByMethod(clientRequestSpecs),clientNotificationSpecsByMethod=specsByMethod(clientNotificationSpecs);function agentRequestContext(params,client2,signal,requestId){return{params,requestId,signal,client:client2}}function agentNotificationContext(params,client2,signal){return{params,signal,client:client2}}function clientRequestContext(params,agent,signal,requestId){return{params,requestId,signal,agent}}function clientNotificationContext(params,agent,signal){return{params,signal,agent}}var SessionUpdateRouter=class{activeSessions=new Map;handleMessage(message){if(message.kind!=="notification"||message.method!==CLIENT_METHODS.session_update)return Handled.no(message);let notification=zSessionNotification.parse(message.params),update={kind:"session_update",notification,update:notification.update},activeSessions=this.activeSessions.get(notification.sessionId);if(activeSessions&&activeSessions.size>0)for(let session of activeSessions)session.enqueue(update);return Handled.no(message)}attach(response,updates){let sessions=this.activeSessions.get(response.sessionId)??new Set;return sessions.add(updates),this.activeSessions.set(response.sessionId,sessions),new HandlerRegistration(()=>{sessions.delete(updates),sessions.size===0&&this.activeSessions.delete(response.sessionId)})}},sessionUpdateRouters=new WeakMap;function sessionUpdateRouter(cx){let router=sessionUpdateRouters.get(cx);return router||(router=new SessionUpdateRouter,sessionUpdateRouters.set(cx,router)),router}function runConnectHandlers(connection,handlers){for(let handler of handlers){let result;try{result=handler(connection)}catch(error48){throw connection.close(error48),error48}Promise.resolve(result).catch(error48=>{connection.close(error48)})}}var appBuilder=Symbol("appBuilder"),runAgentConnectHandlers=Symbol("runAgentConnectHandlers"),runClientConnectHandlers=Symbol("runClientConnectHandlers");var AgentApp=class{builder=Connection.builder();connectHandlers=[];constructor(options={}){options.name&&this.builder.name(options.name)}[appBuilder](){return this.builder}[runAgentConnectHandlers](connection){runConnectHandlers(connection,this.connectHandlers)}connect(target,options={}){return this.connectConnection(target,options).connection}connectWith(target,op){let{rawConnection,connection}=this.connectConnection(target);return rawConnection.runUntil(()=>op(connection.client))}onConnect(handler){return this.connectHandlers.push(handler),this}onRequest(method,handlerOrParams,handler){if(handler)return this.request({method,params:handlerOrParams},handler);let spec=agentRequestSpecsByMethod[method];if(!spec)throw new Error(`Unknown ACP request method '${method}'. Pass a params parser for custom methods.`);return this.request(spec,handlerOrParams)}onNotification(method,handlerOrParams,handler){if(handler)return this.notification({method,params:handlerOrParams},handler);let spec=agentNotificationSpecsByMethod[method];if(!spec)throw new Error(`Unknown ACP notification method '${method}'. Pass a params parser for custom methods.`);return this.notification(spec,handlerOrParams)}request(spec,handler){return registerAppRequest(this.builder,spec,(params,cx,signal,requestId)=>agentRequestContext(params,AgentContext.create(cx,requestId),signal,requestId),handler),this}notification(spec,handler){return registerAppNotification(this.builder,spec,(params,cx,signal)=>agentNotificationContext(params,AgentContext.create(cx),signal),handler),this}connectConnection(target,options={}){if(isStream(target)){let state2=this.openStreamConnection(target);return options.deferConnectHandlers||this[runAgentConnectHandlers](state2.connection),state2}let[thisStream,peerStream]=memoryStreamPair(),peerRawConnection=target[appBuilder]().connect(peerStream),peerConnection=clientConnection(peerRawConnection),state=this.openStreamConnection(thisStream);state.rawConnection.closed.then(()=>peerConnection.close()),peerRawConnection.closed.then(()=>state.connection.close());try{target[runClientConnectHandlers](peerConnection),this[runAgentConnectHandlers](state.connection)}catch(error48){throw peerConnection.close(error48),state.connection.close(error48),error48}return state}openStreamConnection(stream){let rawConnection=this.builder.connect(stream);return{rawConnection,connection:agentConnection(rawConnection,this.connectHandlers)}}};function client(options){return new ClientApp(options)}var ClientApp=class{builder=Connection.builder();connectHandlers=[];constructor(options={}){options.name&&this.builder.name(options.name),this.builder.withHandler({handleMessage:(message,cx)=>sessionUpdateRouter(cx).handleMessage(message),describe:()=>"client-session-update-router"})}[appBuilder](){return this.builder}[runClientConnectHandlers](connection){runConnectHandlers(connection,this.connectHandlers)}connect(target){return this.connectConnection(target).connection}connectWith(target,op){let{rawConnection,connection}=this.connectConnection(target);return rawConnection.runUntil(()=>op(connection.agent))}onConnect(handler){return this.connectHandlers.push(handler),this}onRequest(method,handlerOrParams,handler){if(handler)return this.request({method,params:handlerOrParams},handler);let spec=clientRequestSpecsByMethod[method];if(!spec)throw new Error(`Unknown ACP request method '${method}'. Pass a params parser for custom methods.`);return this.request(spec,handlerOrParams)}onNotification(method,handlerOrParams,handler){if(handler)return this.notification({method,params:handlerOrParams},handler);let spec=clientNotificationSpecsByMethod[method];if(!spec)throw new Error(`Unknown ACP notification method '${method}'. Pass a params parser for custom methods.`);return this.notification(spec,handlerOrParams)}request(spec,handler){return registerAppRequest(this.builder,spec,(params,cx,signal,requestId)=>clientRequestContext(params,ClientContext.create(cx,requestId),signal,requestId),handler),this}notification(spec,handler){return registerAppNotification(this.builder,spec,(params,cx,signal)=>clientNotificationContext(params,ClientContext.create(cx),signal),handler),this}connectConnection(target){if(isStream(target)){let state2=this.openStreamConnection(target);return this[runClientConnectHandlers](state2.connection),state2}let[thisStream,peerStream]=memoryStreamPair(),peerRawConnection=target[appBuilder]().connect(peerStream),peerConnection=agentConnection(peerRawConnection),state=this.openStreamConnection(thisStream);state.rawConnection.closed.then(()=>peerConnection.close()),peerRawConnection.closed.then(()=>state.connection.close());try{target[runAgentConnectHandlers](peerConnection),this[runClientConnectHandlers](state.connection)}catch(error48){throw peerConnection.close(error48),state.connection.close(error48),error48}return state}openStreamConnection(stream){let rawConnection=this.builder.connect(stream);return{rawConnection,connection:clientConnection(rawConnection,this.connectHandlers)}}},legacyAgentRequestMethods=new Set([AGENT_METHODS.initialize,AGENT_METHODS.authenticate,AGENT_METHODS.providers_list,AGENT_METHODS.providers_set,AGENT_METHODS.providers_disable,AGENT_METHODS.session_new,AGENT_METHODS.session_load,AGENT_METHODS.session_set_mode,AGENT_METHODS.session_set_config_option,AGENT_METHODS.session_prompt,AGENT_METHODS.session_list,AGENT_METHODS.session_delete,AGENT_METHODS.session_fork,AGENT_METHODS.session_resume,AGENT_METHODS.session_close,AGENT_METHODS.logout,AGENT_METHODS.nes_start,AGENT_METHODS.nes_suggest,AGENT_METHODS.nes_close]),legacyAgentNotificationMethods=new Set([AGENT_METHODS.session_cancel,AGENT_METHODS.nes_accept,AGENT_METHODS.nes_reject,AGENT_METHODS.document_did_open,AGENT_METHODS.document_did_change,AGENT_METHODS.document_did_close,AGENT_METHODS.document_did_save,AGENT_METHODS.document_did_focus]),legacyClientRequestMethods=new Set([CLIENT_METHODS.session_request_permission,CLIENT_METHODS.fs_write_text_file,CLIENT_METHODS.fs_read_text_file,CLIENT_METHODS.terminal_create,CLIENT_METHODS.terminal_output,CLIENT_METHODS.terminal_release,CLIENT_METHODS.terminal_wait_for_exit,CLIENT_METHODS.terminal_kill,CLIENT_METHODS.elicitation_create]),legacyClientNotificationMethods=new Set([CLIENT_METHODS.session_update,CLIENT_METHODS.elicitation_complete]);var PROBE_TIMEOUT_MS2=5e3,REQUEST_TIMEOUT_MS2=3e4,MAX_MODEL_CHARS2=256,QODER_NOT_FOUND_ERROR="Qoder CLI was not found. Install Qoder CLI or set MEARL_QODER_PATH.";function errorMessage(error48){return error48 instanceof Error?error48.message:String(error48)}function contentText(content){return content.type==="text"?content.text:null}function planText(entries){return entries.map(entry=>`${entry.status==="completed"?"✓":entry.status==="in_progress"?"→":"•"} ${entry.content}`).join(`
817
818
  `)}function qoderModelInfo(configOptions){let modelOption=configOptions?.find(option=>option.category==="model"&&option.type==="select");if(!modelOption||typeof modelOption.currentValue!="string")return;let id=modelOption.currentValue.trim().slice(0,MAX_MODEL_CHARS2);if(!id)return;let displayName=modelOption.options.flatMap(option=>"options"in option?option.options:[option]).find(option=>option.value===modelOption.currentValue)?.name.trim().slice(0,MAX_MODEL_CHARS2);return{id,...displayName&&displayName!==id?{displayName}:{}}}function parseQoderSkillsList(output,cwd,home=os4.homedir()){let skills=[],current,finish=()=>{if(!current)return;let skillPath=current.path||(current.builtIn?"bundled":""),relativeToCwd=skillPath&&path8.isAbsolute(skillPath)?path8.relative(cwd,skillPath):"",inProject=!!relativeToCwd&&relativeToCwd!==".."&&!relativeToCwd.startsWith(`..${path8.sep}`)&&!path8.isAbsolute(relativeToCwd);skills.push({name:current.name,path:skillPath,scope:current.builtIn?"built-in":cwd!==home&&inProject?"project":"global"}),current=void 0};for(let line of output.split(/\r?\n/)){let heading=/^(\S+)\s+\[(Enabled|Disabled)\](?:\s+\[Built-in\])?\s*$/.exec(line);if(heading?.[1]&&heading[2]){finish(),current={name:heading[1],builtIn:line.includes("[Built-in]")};continue}if(!current)continue;let skillPath=/^\s+Location:\s*(.*)$/.exec(line)?.[1];skillPath!==void 0&&(current.path=skillPath)}return finish(),skills}function qoderManagedExecutableCandidates(home,readdirSync2=fs7.readdirSync){let directory=path8.join(home,".qoder","bin","qodercli");try{return readdirSync2(directory,{withFileTypes:!0}).filter(entry=>entry.isFile()&&entry.name.startsWith("qodercli-")).sort((left,right)=>right.name.localeCompare(left.name,void 0,{numeric:!0})).map(entry=>path8.join(directory,entry.name))}catch{return[]}}function isPermissionResponse(value){if(!value||typeof value!="object")return!1;let outcome=value.outcome;return!outcome||typeof outcome!="object"?!1:outcome.outcome==="cancelled"?!0:outcome.outcome==="selected"&&typeof outcome.optionId=="string"}function qoderInstallCommand(platform=process.platform){return platform==="win32"?"npm install -g @qoder-ai/qodercli":"curl -fsSL https://qoder.com/install | bash"}function qoderExecutableCandidatePaths(options={}){let env=options.env??process.env,home=(options.homedir??os4.homedir)(),platform=options.platform??process.platform,executableNames2=platform==="win32"?["qodercli.exe","qodercli.cmd"]:["qodercli"];return agentExecutableCandidatePaths({executableNames:executableNames2,configuredPath:env.MEARL_QODER_PATH,env,extraUserCandidates:[...qoderManagedExecutableCandidates(home,options.readdirSync),...executableNames2.map(name=>path8.join(home,".qoder","bin",name))],home,platform,processExecPath:options.processExecPath,readdirSync:options.readdirSync})}function sessionOptions(options){let cwd=path8.resolve(options.cwd||os4.homedir());return{...options,cwd,instructionsSent:!1}}function parsedTimestamp(value){if(!value)return;let timestamp=Date.parse(value);return Number.isNaN(timestamp)?void 0:timestamp}function historyItemId(capture,kind,sourceId){if(sourceId)return`qoder_history_${kind}_${sourceId}`;let id=`qoder_history_${kind}_${capture.nextId}`;return capture.nextId+=1,id}function historyMessageKey(capture,role,messageId){if(messageId)return capture.lastAnonymousMessage=void 0,`${role}:${messageId}`;if(capture.lastAnonymousMessage?.role===role)return capture.lastAnonymousMessage.key;let key=`${role}:anonymous:${capture.nextId}`;return capture.nextId+=1,capture.lastAnonymousMessage={role,key},key}function captureHistoryMessage(capture,role,update){let text=contentText(update.content),imageCount=update.content.type==="image"?1:0;if(!text&&imageCount===0)return;let key=historyMessageKey(capture,role,update.messageId),existing=capture.messageEvents.get(key);if(existing){if(role==="user"){let params=existing.params;text&&(params.text+=text),imageCount>0&&(params.imageCount=(params.imageCount||0)+imageCount)}else if(role==="agent"){let params=existing.params;text&&(params.item.text+=text)}else if(text){let params=existing.params;params.item.summary[0]=`${params.item.summary[0]||""}${text}`}return}let itemId=historyItemId(capture,role,update.messageId),event=role==="user"?{providerSessionId:capture.providerSessionId,kind:"lifecycle",method:"chat/userMessage",params:{text:text||"",...imageCount>0?{imageCount}:{}}}:{providerSessionId:capture.providerSessionId,kind:"notification",method:"item/completed",params:{item:{id:itemId,type:role==="agent"?"agentMessage":"reasoning",...role==="agent"?{text:text||""}:{summary:[text||""]}}}};capture.messageEvents.set(key,event),capture.events.push(event)}function captureHistoryUpdate(capture,update){switch(update.sessionUpdate){case"user_message_chunk":captureHistoryMessage(capture,"user",update);return;case"agent_message_chunk":captureHistoryMessage(capture,"agent",update);return;case"agent_thought_chunk":captureHistoryMessage(capture,"reasoning",update);return;case"tool_call":case"tool_call_update":{capture.lastAnonymousMessage=void 0;let completed=update.status==="completed"||update.status==="failed",existing=capture.toolEvents.get(update.toolCallId),existingItem=existing?existing.params.item:void 0,item={id:historyItemId(capture,"tool",update.toolCallId),type:"dynamicToolCall",namespace:"qoder",tool:update.title||existingItem?.tool||update.toolCallId,status:update.status||(completed?"completed":"inProgress"),kind:update.kind||existingItem?.kind};if(existing)existing.method=completed?"item/completed":"item/started",existing.params={item};else{let event={providerSessionId:capture.providerSessionId,kind:"notification",method:completed?"item/completed":"item/started",params:{item}};capture.toolEvents.set(update.toolCallId,event),capture.events.push(event)}return}case"plan":{capture.lastAnonymousMessage=void 0;let item={id:historyItemId(capture,"plan","current"),type:"plan",text:planText(update.entries)};capture.planEvent?capture.planEvent.params={item}:(capture.planEvent={providerSessionId:capture.providerSessionId,kind:"notification",method:"item/completed",params:{item}},capture.events.push(capture.planEvent));return}default:capture.lastAnonymousMessage=void 0}}var QoderAgentProvider=class{constructor(log2,clientVersion){this.log=log2;this.clientVersion=clientVersion;this.executableResolver=new AgentExecutableResolver({candidates:()=>this.resolveExecutableCandidates(),probe:executable=>this.probeExecutable(executable),notFoundError:QODER_NOT_FOUND_ERROR,unusableError:"Qoder CLI candidates were found, but none is usable.",onFailure:(executable,error48)=>{this.log("[Qoder] Skipping unusable CLI:",executable,error48)}})}id="qoder";process=null;connection=null;context=null;initializeResponse=null;startPromise=null;listeners=new Set;sessions=new Map;pendingPermissions=new Map;historyCaptures=new Map;nextTurnId=1;executableResolver;async getDescriptor(){let{error:error48}=await this.resolveExecutable();return{id:this.id,name:"Qoder",available:error48===null,capabilities:{streaming:!0,resume:!0,listSessions:"runtime",refreshHistory:!1,imageInput:"runtime",interrupt:!0,requests:!0},...error48?{error:error48}:{},setup:{installCommand:qoderInstallCommand(),loginCommand:"qodercli",docsUrl:"https://docs.qoder.com/en/cli/quick-start"}}}async prepare(){await this.ensureStarted()}onEvent(listener){return this.listeners.add(listener),()=>this.listeners.delete(listener)}async listSessions(options){if(await this.ensureStarted(),!this.initializeResponse?.agentCapabilities?.sessionCapabilities?.list)throw new Error("This Qoder CLI version cannot list existing ACP sessions");let result=await this.withTimeout(this.getContext().request(methods.agent.session.list,{cursor:options.cursor??null,...options.cwd?{cwd:options.cwd}:{}}),"Qoder session list");return{sessions:result.sessions.map(session=>{let updatedAt=parsedTimestamp(session.updatedAt);return{providerSessionId:session.sessionId,...session.title?{title:session.title}:{},...session.cwd?{cwd:session.cwd}:{},...updatedAt!==void 0?{updatedAt}:{}}}),...result.nextCursor?{nextCursor:result.nextCursor}:{}}}async listSkills(cwd){let resolution=await this.resolveExecutable();if(resolution.executable===null)throw new Error(resolution.error);let{executable}=resolution,resolvedCwd=cwd||os4.homedir(),output=await this.runSkillsList(executable,resolvedCwd);return parseQoderSkillsList(output,resolvedCwd)}async startSession(options){let session=sessionOptions(options);await this.ensureStarted();let result=await this.withTimeout(this.getContext().request(methods.agent.session.new,{cwd:session.cwd,mcpServers:[]}),"Qoder session creation");if(!result.sessionId)throw new Error("Qoder did not return a session id");let model=qoderModelInfo(result.configOptions);return model&&(session.model=model),this.sessions.set(result.sessionId,session),result.sessionId}async resumeSession(providerSessionId,options){let session=sessionOptions(options);await this.ensureStarted();let capabilities=this.initializeResponse?.agentCapabilities,configOptions,historyCapture=capabilities?.loadSession?{providerSessionId,events:[],messageEvents:new Map,toolEvents:new Map,nextId:1}:null;historyCapture&&this.historyCaptures.set(providerSessionId,historyCapture);try{if(historyCapture)configOptions=(await this.withTimeout(this.getContext().request(methods.agent.session.load,{sessionId:providerSessionId,cwd:session.cwd,mcpServers:[]}),"Qoder session load")).configOptions;else if(capabilities?.sessionCapabilities?.resume)configOptions=(await this.withTimeout(this.getContext().request(methods.agent.session.resume,{sessionId:providerSessionId,cwd:session.cwd,mcpServers:[]}),"Qoder session resume")).configOptions;else throw new Error("This Qoder CLI version cannot resume an existing ACP session")}finally{this.historyCaptures.delete(providerSessionId)}let model=qoderModelInfo(configOptions);return model&&(session.model=model),this.sessions.set(providerSessionId,session),{providerSessionId,...historyCapture?{history:historyCapture.events,historyComplete:!0}:{}}}getSessionModel(providerSessionId){let model=this.sessions.get(providerSessionId)?.model;return model?{...model}:void 0}async validateMessageInput(images){images.length!==0&&(await this.ensureStarted(),this.assertImageInputSupported())}async sendMessage(providerSessionId,message,images=[]){await this.ensureStarted();let session=this.sessions.get(providerSessionId);if(!session)throw new Error(`Unknown Qoder session: ${providerSessionId}`);if(session.activeTurn)throw new Error("The current Qoder turn has not finished");images.length>0&&this.assertImageInputSupported();let turnId=`qoder_turn_${Date.now()}_${this.nextTurnId++}`,turn={id:turnId,assistantItemId:`${turnId}_message`,assistantText:"",reasoningItemId:`${turnId}_reasoning`,reasoningText:"",reasoningStarted:!1,planItemId:`${turnId}_plan`,toolTitles:new Map};session.activeTurn=turn;let prompt=!session.instructionsSent&&session.developerInstructions?`${session.developerInstructions}
818
819
 
@@ -823,7 +824,7 @@ ${output.stderr}`,"project")))}return{cli,updates:(await Promise.all(commands)).
823
824
  `;for(;;)try{let handle=fs10.openSync(lockPath,"wx",384);try{fs10.writeFileSync(handle,owner,"utf8")}finally{fs10.closeSync(handle)}break}catch(error48){if(!(error48 instanceof Error)||!("code"in error48)||error48.code!=="EEXIST")throw error48;let existing=readLockState(lockPath),staleAfter=existing?.owner?NATIVE_HOST_UPDATE_TIMEOUT_MS:INVALID_UPDATE_LOCK_GRACE_MS,referenceTime=existing?.owner?.startedAt??existing?.modifiedAt,expired=referenceTime!==void 0&&Date.now()-referenceTime>staleAfter,ownerAlive=existing?.owner?isAlive(existing.owner.pid):!1;if(expired&&!ownerAlive)try{fs10.unlinkSync(lockPath);continue}catch{}if(Date.now()-startedAt>NATIVE_HOST_UPDATE_TIMEOUT_MS+1e4)throw new NativeHostUpdateFailure("lock-timeout","Another Mearl Native Host update did not finish in time");await wait(UPDATE_LOCK_POLL_MS)}try{return await operation()}finally{try{fs10.readFileSync(lockPath,"utf8")===owner&&fs10.unlinkSync(lockPath)}catch{}}}function classifyUpdateFailure(output){return/\b(?:E404|ETARGET)\b|no matching version found|404\s+not found|package.+not found/i.test(output)?"package-unavailable":/\b(?:EAI_AGAIN|ECONNREFUSED|ECONNRESET|ENETUNREACH|ENOTFOUND|ERR_SOCKET_TIMEOUT)\b|fetch failed|network request/i.test(output)?"network":"setup-failed"}function nativeHostUpdateCommand(targetVersion){if(!isMearlReleaseVersion(targetVersion))throw new Error("The Native Host update target must be a valid Mearl release");let releaseLine=mearlReleaseLineForVersion(targetVersion);return{args:["--yes",`@mearl/setup@${releaseLine}`,"update","--local","--yes","--target-line",releaseLine,"--skip-skill"]}}function currentNativeHostPackageRoot(entryPath){let current=path11.dirname(entryPath);for(let depth=0;depth<12;depth+=1){try{if(JSON.parse(fs10.readFileSync(path11.join(current,"package.json"),"utf8")).name==="@mearl/native-host")return current}catch{}let parent=path11.dirname(current);if(parent===current)break;current=parent}return null}function currentPackageManagerInstallation(environment,nodePath,platform){let packageRoot=currentNativeHostPackageRoot(fileURLToPath(import.meta.url));return packageRoot?resolvePackageManagerInstallation(packageRoot,"@mearl/native-host",{env:environment,platform,processExecPath:nodePath}):null}async function installedLocalPackagesMatch(targetReleaseLine,environment,runner){let installedVersions=[];for(let executableName of["mearl-native-host","mearl"]){let executable=findExecutable(executableName,{env:environment});if(!executable)return!1;try{let result=await runner(executable,["--version"],{capture:!0,env:environment,timeoutMs:5e3}),installedVersion=result.stdout.trim();if(result.code!==0||!isMearlReleaseVersionInLine(installedVersion,targetReleaseLine))return!1;installedVersions.push(installedVersion)}catch{return!1}}return new Set(installedVersions).size===1}async function runNativeHostUpdate(targetVersion,options={}){let command=nativeHostUpdateCommand(targetVersion),targetReleaseLine=mearlReleaseLineForVersion(targetVersion),environment=options.environment??process.env,platform=options.platform??process.platform,nodePath=options.nodePath??process.execPath,currentInstallation=currentPackageManagerInstallation(environment,nodePath,platform),managerCommand=options.packageManagerCommand===void 0?currentInstallation?.command??null:options.packageManagerCommand,packageBinDirectory=options.packageBinDirectory===void 0?currentInstallation?.binDirectory??null:options.packageBinDirectory,childEnvironment=prependNodePath(environment,nodePath);managerCommand&&(childEnvironment=prependCommandPath(managerCommand,childEnvironment)),packageBinDirectory&&(childEnvironment=prependPathDirectory(packageBinDirectory,childEnvironment));let packageRunner=options.packageRunner??findExecutable("npx",{env:childEnvironment,extraDirectories:[path11.dirname(nodePath)],platform});if(!packageRunner)throw new NativeHostUpdateFailure("package-unavailable","The package runner is unavailable");let runner=options.runner??runCommand,areTargetsInstalled=options.areTargetsInstalled??((version2,env)=>installedLocalPackagesMatch(version2,env,runner));await(options.withUpdateLock??((version2,operation)=>withNativeHostUpdateLock(options.updateLockPath??UPDATE_LOCK_PATH,version2,operation)))(targetVersion,async()=>{let result;try{result=await runner(packageRunner,command.args,{capture:!0,env:childEnvironment,timeoutMs:options.timeoutMs??NATIVE_HOST_UPDATE_TIMEOUT_MS})}catch(error48){let message=error48 instanceof Error?error48.message:String(error48),classified=classifyUpdateFailure(message);throw new NativeHostUpdateFailure(/timed out/i.test(message)?"timeout":classified==="setup-failed"?"unknown":classified,"The Native Host update process did not complete")}if(result.code!==0)throw new NativeHostUpdateFailure(classifyUpdateFailure(`${result.stderr.slice(0,8192)}
824
825
  ${result.stdout.slice(0,8192)}`),"The Mearl setup release line did not complete successfully");if(!await areTargetsInstalled(targetReleaseLine,childEnvironment))throw new NativeHostUpdateFailure("verification-failed","The installed Native Host and client do not match the Extension release line")})}var NativeHostUpdateCoordinator=class{constructor(options){this.options=options}#automaticAttempted=!1;#operation=null;evaluate(extensionVersion2,checkForUpdates){if(checkForUpdates!==!0||this.#automaticAttempted||this.#operation)return;if(!isMearlReleaseVersion(extensionVersion2)||!isMearlReleaseVersion(this.options.hostVersion)){this.options.log("Skipped Native Host update check because a release version was invalid");return}let targetVersion=extensionVersion2;if(compareMearlReleaseLines(this.options.hostVersion,targetVersion)>=0)return;this.#automaticAttempted=!0;let operation=this.options.runUpdate(targetVersion).then(()=>this.options.requestRestart()).catch(error48=>{let category=error48 instanceof NativeHostUpdateFailure?error48.updateError:"unknown";this.options.log(`Native Host automatic update failed (${category})`)}).finally(()=>{this.#operation===operation&&(this.#operation=null)});this.#operation=operation}};import fs15 from"node:fs";import path15 from"node:path";import{randomUUID as randomUUID7}from"node:crypto";import fs14 from"node:fs";import os8 from"node:os";import path14 from"node:path";import{createHash as createHash2,randomUUID as randomUUID6}from"node:crypto";import WebSocket2 from"ws";init_generated_browser_action_protocol();var OBSERVED_PAGE_ACTIONS=new Set(PAGE_ACT_ACTIONS2);import net from"node:net";import fs13 from"node:fs";import os7 from"node:os";import path13 from"node:path";import{createRequire}from"node:module";import fs11 from"node:fs";import fs12 from"node:fs";import os6 from"node:os";import path12 from"node:path";var BROWSERS_DIR=path12.join(os6.homedir(),".mearl","browsers");var require2=createRequire(import.meta.url),CLIENT_VERSION=require2("../package.json").version,MAX_SOCKET_BUFFER_SIZE=64*1024*1024,SOCKET_PATH=process.platform==="win32"?"\\\\.\\pipe\\mearl-agent":path13.join(os7.tmpdir(),"mearl-agent.sock");import{existsSync as existsSync5,readFileSync as readFileSync4}from"node:fs";import{homedir as homedir2}from"node:os";import{join as join5}from"node:path";var MEARL_CONFIG_DIR=join5(homedir2(),".mearl");var import_extract_zip=__toESM(require_extract_zip(),1);import WebSocket3 from"ws";var MEARL_EXTENSION_DOWNLOAD_PAGE="https://mearl.alibaba-inc.com/",MEARL_EXTENSION_REMOTE_CONFIG_URL=`${MEARL_EXTENSION_DOWNLOAD_PAGE}config.json`;var MEARL_EXTENSION_ID="aoehhjnofngknnjefamjbplchbolghkm",MEARL_EXTENSION_SETUP_MARKER=".mearl-setup.json";var MAX_ARCHIVE_BYTES=64*1024*1024,SHA256_PATTERN=/^[a-f\d]{64}$/i;function extensionArchiveUrl(version2){if(!isMearlReleaseVersion(version2))throw new Error(`Invalid Mearl browser extension version: ${version2}`);return new URL(`mearl-chrome-v${version2}.zip`,MEARL_EXTENSION_DOWNLOAD_PAGE).toString()}function validateExtensionRelease(release){if(!isMearlReleaseVersion(release.version))throw new Error("Remote extension config has an invalid latestVersion");let expectedArchiveUrl=extensionArchiveUrl(release.version),archiveUrl;try{archiveUrl=new URL(release.archiveUrl).toString()}catch{throw new Error("Remote extension config has an invalid downloadUrl")}if(archiveUrl!==expectedArchiveUrl)throw new Error("Remote extension downloadUrl does not match latestVersion");if(release.sha256!==void 0&&!SHA256_PATTERN.test(release.sha256))throw new Error("Remote extension config has an invalid downloadSha256");return{archiveUrl,...release.sha256?{sha256:release.sha256.toLowerCase()}:{},version:release.version}}async function fetchBrowserExtensionRelease(fetchImpl=fetch){let response=await fetchImpl(MEARL_EXTENSION_REMOTE_CONFIG_URL,{cache:"no-store"});if(!response.ok)throw new Error(`Extension config returned HTTP ${response.status}`);let config2=await response.json();return validateExtensionRelease({archiveUrl:typeof config2.downloadUrl=="string"?config2.downloadUrl:"",...typeof config2.downloadSha256=="string"?{sha256:config2.downloadSha256}:{},version:typeof config2.latestVersion=="string"?config2.latestVersion:""})}function sameExtensionPath(left,right){let normalizedLeft=path14.normalize(path14.resolve(left)),normalizedRight=path14.normalize(path14.resolve(right));return process.platform==="win32"?normalizedLeft.toLowerCase()===normalizedRight.toLowerCase():normalizedLeft===normalizedRight}function setupMarkerPath(directory){return path14.join(directory,MEARL_EXTENSION_SETUP_MARKER)}function hasSetupMarker(targetDirectory){try{let marker=JSON.parse(fs14.readFileSync(setupMarkerPath(targetDirectory),"utf8"));return marker.schemaVersion===1&&marker.extensionId===MEARL_EXTENSION_ID&&typeof marker.path=="string"&&sameExtensionPath(marker.path,targetDirectory)}catch{return!1}}async function writeSetupMarker(directory,targetDirectory){let marker={extensionId:MEARL_EXTENSION_ID,path:path14.resolve(targetDirectory),schemaVersion:1};await fs14.promises.writeFile(setupMarkerPath(directory),`${JSON.stringify(marker,null,2)}
825
826
  `,{mode:384})}async function replaceDirectory(stagingDirectory,targetDirectory){let backupDirectory=`${targetDirectory}.backup-${randomUUID6()}`,targetExists=fs14.existsSync(targetDirectory);try{targetExists&&await fs14.promises.rename(targetDirectory,backupDirectory),await fs14.promises.rename(stagingDirectory,targetDirectory)}catch(error48){throw!fs14.existsSync(targetDirectory)&&fs14.existsSync(backupDirectory)&&await fs14.promises.rename(backupDirectory,targetDirectory),error48}targetExists&&await fs14.promises.rm(backupDirectory,{force:!0,recursive:!0})}function readExtensionManifest(directory){let manifestPath=path14.join(directory,"manifest.json"),parsed;try{parsed=JSON.parse(fs14.readFileSync(manifestPath,"utf8"))}catch(error48){throw new Error(`Downloaded extension has no valid manifest.json: ${error48 instanceof Error?error48.message:error48}`,{cause:error48})}if(parsed.manifest_version!==3||typeof parsed.name!="string"||typeof parsed.key!="string"||parsed.key.length===0)throw new Error("Downloaded archive is not a valid Manifest V3 extension");if(!isMearlReleaseVersion(parsed.version))throw new Error("Downloaded extension manifest has an invalid version");return parsed}async function downloadAndReplaceExtension(releaseInput,targetDirectory,fetchImpl,extractArchive){let release=validateExtensionRelease(releaseInput),parentDirectory=path14.dirname(targetDirectory),stagingDirectory=`${targetDirectory}.staging-${randomUUID6()}`,archivePath=path14.join(parentDirectory,`.mearl-extension-${randomUUID6()}.zip`);await fs14.promises.mkdir(parentDirectory,{recursive:!0});try{let response=await fetchImpl(release.archiveUrl,{redirect:"follow"});if(!response.ok)throw new Error(`Extension archive returned HTTP ${response.status}: ${release.archiveUrl}`);if(Number(response.headers.get("content-length")??0)>MAX_ARCHIVE_BYTES)throw new Error(`Extension archive exceeds ${MAX_ARCHIVE_BYTES} bytes`);let archive=Buffer.from(await response.arrayBuffer());if(archive.length===0||archive.length>MAX_ARCHIVE_BYTES)throw new Error("Extension archive is empty or too large");if(release.sha256&&createHash2("sha256").update(archive).digest("hex")!==release.sha256)throw new Error("Extension archive SHA256 does not match remote config");await fs14.promises.writeFile(archivePath,archive,{mode:384}),await fs14.promises.mkdir(stagingDirectory,{recursive:!0}),await extractArchive(archivePath,stagingDirectory);let manifest=readExtensionManifest(stagingDirectory);if(manifest.version!==release.version)throw new Error(`Extension archive version ${String(manifest.version)} does not match ${release.version}`);return await writeSetupMarker(stagingDirectory,targetDirectory),await replaceDirectory(stagingDirectory,targetDirectory),release}finally{await fs14.promises.rm(archivePath,{force:!0}),await fs14.promises.rm(stagingDirectory,{force:!0,recursive:!0})}}async function updateSetupManagedBrowserExtensionFiles(options,dependencies={}){let targetDirectory=path14.resolve(options.targetDirectory);if(!hasSetupMarker(targetDirectory))throw new Error("The running extension is not managed by Mearl setup");let fetchImpl=dependencies.fetch??fetch,extractArchive=dependencies.extractArchive??((archivePath,destination)=>(0,import_extract_zip.default)(archivePath,{dir:destination}));return{...await downloadAndReplaceExtension(options.release,targetDirectory,fetchImpl,extractArchive),path:targetDirectory}}var EXTENSION_UPDATE_LOCK_PATH=path15.join(DAEMON_HOME,"extension-update.lock"),EXTENSION_UPDATE_LOCK_STALE_MS=10*6e4,INVALID_UPDATE_LOCK_GRACE_MS2=1e4;function readUpdateLock(lockPath){try{let stat2=fs15.lstatSync(lockPath);if(!stat2.isFile()||stat2.isSymbolicLink()||stat2.size>4096)return{modifiedAt:stat2.mtimeMs,owner:null};try{let value=JSON.parse(fs15.readFileSync(lockPath,"utf8")),owner=typeof value.id=="string"&&Number.isInteger(value.pid)&&(value.pid??0)>0&&typeof value.startedAt=="number"?value:null;return{modifiedAt:stat2.mtimeMs,owner}}catch{return{modifiedAt:stat2.mtimeMs,owner:null}}}catch{return null}}async function withExtensionUpdateLock(operation,dependencies){let lockPath=dependencies.lockPath??EXTENSION_UPDATE_LOCK_PATH,now=dependencies.now??Date.now,isProcessAlive=dependencies.isProcessAlive??isAlive;fs15.mkdirSync(path15.dirname(lockPath),{recursive:!0,mode:448});let owner={id:randomUUID7(),pid:process.pid,startedAt:now()},serializedOwner=`${JSON.stringify(owner)}
826
- `;for(let attempt=0;attempt<2;attempt+=1)try{fs15.writeFileSync(lockPath,serializedOwner,{encoding:"utf8",flag:"wx",mode:384});break}catch(error48){if(!(error48 instanceof Error)||!("code"in error48)||error48.code!=="EEXIST")throw error48;let state=readUpdateLock(lockPath);if(!(state===null||(state.owner?now()-state.owner.startedAt>EXTENSION_UPDATE_LOCK_STALE_MS&&!isProcessAlive(state.owner.pid):now()-state.modifiedAt>INVALID_UPDATE_LOCK_GRACE_MS2))||attempt>0)throw new Error("Another extension update is already running",{cause:error48});try{fs15.unlinkSync(lockPath)}catch(unlinkError){throw new Error("Another extension update is already running",{cause:unlinkError})}}try{return await operation()}finally{try{fs15.readFileSync(lockPath,"utf8")===serializedOwner&&fs15.unlinkSync(lockPath)}catch{}}}async function updateSetupManagedExtension(request,dependencies={}){if(!isMearlReleaseVersion(request.currentVersion))throw new Error("The running extension reported an invalid version");if(!request.setupManagedPath||!path15.isAbsolute(request.setupManagedPath))throw new Error("A setup-managed extension path is required");let release=await(dependencies.fetchRelease??fetchBrowserExtensionRelease)(),changelogUrl=`https://mearl.alibaba-inc.com/changelog.html#v${release.version}`;return compareMearlReleaseVersions(release.version,request.currentVersion)<=0?{changelogUrl,updated:!1,version:request.currentVersion}:withExtensionUpdateLock(async()=>(await(dependencies.updateFiles??updateSetupManagedBrowserExtensionFiles)({release,targetDirectory:request.setupManagedPath}),{changelogUrl,updated:!0,version:release.version}),dependencies)}init_runtimeArgs();var OPEN_SANDBOX_PORT_PLACEHOLDER="{port}",AONE_PORT_MAPPING_URL="http://127.0.0.1:58596/api/port-mapping";function normalizeBrowserAccessUrl(value){if(typeof value!="string"||!value.trim())return null;let input=/^[a-z][a-z\d+.-]*:\/\//i.test(value.trim())?value.trim():`https://${value.trim()}`;try{let parsed=new URL(input);return parsed.protocol==="ws:"&&(parsed.protocol="http:"),parsed.protocol==="wss:"&&(parsed.protocol="https:"),!["http:","https:"].includes(parsed.protocol)||!parsed.hostname?null:parsed.toString()}catch{return null}}function resolveSandboxBrowserAccessCapability(env=process.env){return env.OPENSANDBOX_ID?.trim()?{kind:"sandbox-novnc",environment:"opensandbox",port:6080}:env.AONE_SANDBOX_ID?.trim()?{kind:"sandbox-novnc",environment:"aone",port:6080}:null}function resolveOpenSandboxBrowserAccessUrl(port,env=process.env){if(!env.OPENSANDBOX_ID?.trim())return null;let template=env.AONE_SANDBOX_ENDPOINT_TEMPLATE?.trim();return template?.includes(OPEN_SANDBOX_PORT_PLACEHOLDER)?normalizeBrowserAccessUrl(template.replaceAll(OPEN_SANDBOX_PORT_PLACEHOLDER,String(port))):null}async function resolveAoneBrowserAccessUrl(port,dependencies){let response=await(dependencies.fetch??globalThis.fetch)(`${AONE_PORT_MAPPING_URL}?port=${port}`,{signal:AbortSignal.timeout(5e3)});if(!response.ok)throw new Error(`AONE Sandbox port mapping failed with HTTP ${response.status}`);let payload=await response.json(),url2=payload.success?normalizeBrowserAccessUrl(payload.url):null;if(!url2)throw new Error(`AONE Sandbox did not return a browser access URL for port ${port}`);return url2}async function resolveSandboxBrowserAccess(dependencies={}){let env=dependencies.env??process.env,capability=resolveSandboxBrowserAccessCapability(env);if(!capability)throw new Error("The selected browser is not running in a supported sandbox");if(capability.environment==="opensandbox"){let url3=resolveOpenSandboxBrowserAccessUrl(capability.port,env);if(url3)return{...capability,url:url3};if(!env.AONE_SANDBOX_ID?.trim())throw new Error("OpenSandbox browser access is unavailable because AONE_SANDBOX_ENDPOINT_TEMPLATE is missing or invalid")}let url2=await resolveAoneBrowserAccessUrl(capability.port,dependencies);return{...capability,environment:"aone",url:url2}}import net2 from"node:net";import{chmodSync,rmSync as rmSync3}from"node:fs";import{dirname as dirname3}from"node:path";var MAX_REQUEST_BYTES=16*1024*1024;import{closeSync as closeSync4,existsSync as existsSync6,mkdtempSync,mkdirSync as mkdirSync3,openSync as openSync4,readFileSync as readFileSync5,renameSync as renameSync4,rmSync as rmSync4,writeFileSync as writeFileSync3}from"node:fs";import{spawn as spawn9,spawnSync as spawnSync2}from"node:child_process";import{randomUUID as randomUUID8}from"node:crypto";import{tmpdir}from"node:os";import{join as join6}from"node:path";function stoppedPersistentBrowserRecord(record2,deleteProfile){if(deleteProfile||record2.persistent!==!0)return null;let stopped={...record2,pid:0};return"hostPid"in stopped?{...stopped,hostPid:0}:stopped}var MANAGED_BROWSERS_SUBDIR="managed-browsers",MANAGED_BROWSER_LOCKS_SUBDIR="managed-browser-locks",MANAGED_PROFILES_SUBDIR="managed-profiles",LAUNCH_TIMEOUT_MS=15e3;function validateName(value){let name=typeof value=="string"?value.trim():"";if(!name)throw new Error("name is required");if(name.length>64)throw new Error("name must be at most 64 characters");if(/[/\\\0\r\n]/.test(name))throw new Error("name contains unsupported characters");return name}function managedBrowserId(name){return`managed:${name.toLocaleLowerCase("en-US")}`}function chromeExecutableCandidates(platform=process.platform){let envPath=process.env.MEARL_CHROME_PATH,candidates=envPath?[envPath]:[];if(platform==="darwin")return candidates.concat(["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary","/Applications/Chromium.app/Contents/MacOS/Chromium"]);if(platform==="win32"){let local=process.env.LOCALAPPDATA??"",programFiles=process.env.PROGRAMFILES??"",programFilesX86=process.env["PROGRAMFILES(X86)"]??"";return candidates.concat([join6(local,"Google","Chrome","Application","chrome.exe"),join6(programFiles,"Google","Chrome","Application","chrome.exe"),join6(programFilesX86,"Google","Chrome","Application","chrome.exe")])}return candidates.concat(["/usr/bin/google-chrome","/usr/bin/google-chrome-stable","/usr/bin/chromium","/usr/bin/chromium-browser"])}function resolveChromeExecutable(explicitPath){if(explicitPath){if(!existsSync6(explicitPath))throw new Error(`Chrome executable not found: ${explicitPath}`);return explicitPath}let found=chromeExecutableCandidates().find(candidate=>candidate&&existsSync6(candidate));if(!found)throw new Error("Chrome executable not found. Set executablePath or MEARL_CHROME_PATH.");return found}function desktopChromeUserAgent(version2,platform=process.platform){if(!/^\d+(?:\.\d+){1,3}$/.test(version2))throw new Error(`Invalid Chrome version: ${version2}`);return`Mozilla/5.0 (${platform==="darwin"?"Macintosh; Intel Mac OS X 10_15_7":platform==="win32"?"Windows NT 10.0; Win64; x64":"X11; Linux x86_64"}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${version2} Safari/537.36`}function resolveChromeVersion(executablePath){let result=spawnSync2(executablePath,["--version"],{encoding:"utf8",windowsHide:!0}),version2=`${result.stdout??""} ${result.stderr??""}`.match(/\b(\d+(?:\.\d+){1,3})\b/)?.[1];if(!version2)throw new Error(`Could not determine Chrome version from: ${executablePath}`);return version2}function resolveUserAgentMode(value){if(value===void 0||value==="default")return"default";if(value==="desktop")return"desktop";throw new Error('userAgentMode must be "default" or "desktop"')}function buildManagedChromeArgs(options){return[`--user-data-dir=${options.userDataDir}`,"--remote-debugging-port=0","--no-first-run","--no-default-browser-check","--disable-background-networking",...options.headless?["--headless=new"]:[],...options.userAgent?[`--user-agent=${options.userAgent}`]:[],"about:blank"]}function browserSummary(record2,running){return{browserId:record2.browserId,name:record2.name,provider:"local",headless:record2.headless,persistent:record2.persistent,cdpPort:record2.cdpPort,createdAt:record2.createdAt,copiedCookies:record2.copiedCookies,running}}function isManagedProcess(pid,commandMarker,platform=process.platform){if(!isAlive(pid))return!1;try{if(platform==="win32"){let escapedMarker=commandMarker.replace(/'/g,"''");return spawnSync2("powershell.exe",["-NoProfile","-NonInteractive","-Command",`$p = Get-CimInstance Win32_Process -Filter 'ProcessId = ${pid}'; if ($p.CommandLine -and $p.CommandLine.Contains('${escapedMarker}')) { exit 0 } else { exit 1 }`],{windowsHide:!0,stdio:"ignore"}).status===0}let result=spawnSync2("ps",["-p",String(pid),"-o","command="],{encoding:"utf8",stdio:["ignore","pipe","ignore"]});return result.status===0&&result.stdout.includes(commandMarker)}catch{return!1}}function listRecords(){let records=[];for(let file2 of listRecordFiles(keyedDir(MANAGED_BROWSERS_SUBDIR))){let record2=readRecord(file2);if(!record2){removeRecord(file2);continue}let running=isManagedProcess(record2.pid,record2.userDataDir);if(!running&&(signalProcess(record2.hostPid,"SIGTERM",`--browser-id ${record2.browserId}`),removeRecord(keyedConfigFile("browsers",record2.browserId)),!record2.persistent)){removeRecord(file2),rmSync4(record2.userDataDir,{recursive:!0,force:!0});continue}records.push({record:record2,running})}return records}function listManagedBrowsers(){return listRecords().map(({record:record2,running})=>browserSummary(record2,running))}function findManagedRecord(selector){let normalized=selector.trim().toLowerCase();return listRecords().find(({record:record2})=>record2.browserId.toLowerCase()===normalized||record2.name.toLowerCase()===normalized)?.record??null}async function waitForActivePort(userDataDir){let deadline=Date.now()+LAUNCH_TIMEOUT_MS;for(;Date.now()<deadline;){let info=readDevToolsActivePort(userDataDir);if(info)return info.port;await new Promise(resolve2=>setTimeout(resolve2,100))}throw new Error(`Chrome did not expose a CDP port within ${LAUNCH_TIMEOUT_MS}ms`)}async function waitForBrowserRegistration(browserId,expectedPid){let file2=keyedConfigFile("browsers",browserId),deadline=Date.now()+LAUNCH_TIMEOUT_MS;for(;Date.now()<deadline;){if(readRecord(file2)?.pid===expectedPid&&isAlive(expectedPid))return;await new Promise(resolve2=>setTimeout(resolve2,100))}throw new Error(`Managed browser ${browserId} did not register within ${LAUNCH_TIMEOUT_MS}ms`)}function signalProcess(pid,signal,commandMarker){if(isManagedProcess(pid,commandMarker)){if(process.platform==="win32"){spawnSync2("taskkill",["/PID",String(pid),"/T","/F"],{windowsHide:!0,stdio:"ignore"});return}try{process.kill(pid,signal)}catch{}}}async function stopProcess(pid,commandMarker){signalProcess(pid,"SIGTERM",commandMarker);let deadline=Date.now()+3e3;for(;Date.now()<deadline&&isManagedProcess(pid,commandMarker);)await new Promise(resolve2=>setTimeout(resolve2,50));isManagedProcess(pid,commandMarker)&&signalProcess(pid,"SIGKILL",commandMarker)}function profileDirectory(browserId,persistent){if(!persistent)return mkdtempSync(join6(tmpdir(),"mearl-browser-"));let dir=join6(DAEMON_HOME,MANAGED_PROFILES_SUBDIR,hashKey(browserId));return mkdirSync3(dir,{recursive:!0}),dir}async function removeStoppedInstance(browserId){let file2=keyedConfigFile(MANAGED_BROWSERS_SUBDIR,browserId),record2=readRecord(file2);!record2||isManagedProcess(record2.pid,record2.userDataDir)||(await stopProcess(record2.hostPid,`--browser-id ${record2.browserId}`),removeRecord(file2),removeRecord(keyedConfigFile("browsers",record2.browserId)),record2.persistent||rmSync4(record2.userDataDir,{recursive:!0,force:!0}))}function acquireLaunchLock(browserId){let lockDir=keyedDir(MANAGED_BROWSER_LOCKS_SUBDIR),lockFile=keyedConfigFile(MANAGED_BROWSER_LOCKS_SUBDIR,browserId);mkdirSync3(lockDir,{recursive:!0});let token=`${process.pid}:${randomUUID8()}`,tryAcquire=()=>{try{return writeFileSync3(lockFile,token,{flag:"wx"}),!0}catch(error48){if(error48.code!=="EEXIST")throw error48;return!1}};if(!tryAcquire()){let observedToken="";try{observedToken=readFileSync5(lockFile,"utf-8")}catch{}let ownerPid=Number(observedToken.split(":",1)[0]);if(Number.isInteger(ownerPid)&&!isAlive(ownerPid)){let staleFile=`${lockFile}.${process.pid}.${randomUUID8()}.stale`;try{if(readFileSync5(lockFile,"utf-8")!==observedToken)throw new Error("Launch lock owner changed");if(renameSync4(lockFile,staleFile),readFileSync5(staleFile,"utf-8")===observedToken)rmSync4(staleFile,{force:!0});else try{renameSync4(staleFile,lockFile)}catch{}}catch{}}if(!tryAcquire())throw new Error(`Managed browser launch already in progress: ${browserId}`)}return()=>{try{readFileSync5(lockFile,"utf-8")===token&&rmSync4(lockFile,{force:!0})}catch{}}}async function launchManagedBrowser(input,deps){let name=validateName(input.name),browserId=managedBrowserId(name),cookieCopy=resolveCookieCopyPlan(input.copyCookieDomains),copyCookieDomains=cookieCopy.domains,headless=input.headless!==!1,persistent=input.persistent===!0,executablePath=resolveChromeExecutable(input.executablePath),userAgent=resolveUserAgentMode(input.userAgentMode)==="desktop"?desktopChromeUserAgent(resolveChromeVersion(executablePath)):void 0,userDataDir=profileDirectory(browserId,persistent),logDir=keyedDir(MANAGED_BROWSERS_SUBDIR);mkdirSync3(logDir,{recursive:!0});let logPath=join6(logDir,`${hashKey(browserId)}.log`),logFd=openSync4(logPath,"a"),chromePid=0,hostPid=0,session=null,recordWritten=!1,releaseLock=null;try{if(releaseLock=acquireLaunchLock(browserId),await removeStoppedInstance(browserId),findManagedRecord(browserId))throw new Error(`Managed browser already running: ${browserId}`);let exportedCookies=copyCookieDomains.length>0?await deps.exportCookies(copyCookieDomains):[],cookies=cookieCopy.select(exportedCookies),chromeArgs=buildManagedChromeArgs({userDataDir,headless,userAgent});rmSync4(join6(userDataDir,"DevToolsActivePort"),{force:!0});let chrome=spawn9(executablePath,chromeArgs,{detached:!0,stdio:["ignore","ignore",logFd],windowsHide:headless});if(await new Promise((resolve2,reject)=>{chrome.once("error",reject),chrome.once("spawn",resolve2)}),chromePid=chrome.pid??0,!chromePid)throw new Error("Chrome launched without a process id");chrome.unref();let cdpPort=await waitForActivePort(userDataDir);session=new CdpSession({port:cdpPort,userDataDir});let copiedCookieCount=await cdpImportCookies(session,cookies);input.url&&await(await session.getBrowserClient()).sendCommand("Target.createTarget",{url:input.url,background:headless}),session.close(),session=null;let host=spawn9(process.execPath,[deps.nativeHostScript,"--daemon","--cdp-port",String(cdpPort),"--cdp-user-data-dir",userDataDir,"--browser-id",browserId,"--browser-name",name,...headless?["--browser-headless"]:[]],{detached:!0,stdio:"ignore",windowsHide:!0});if(await new Promise((resolve2,reject)=>{host.once("error",reject),host.once("spawn",resolve2)}),hostPid=host.pid??0,!hostPid)throw new Error("Native host launched without a process id");host.unref();let record2={pid:chromePid,hostPid,browserId,name,headless,persistent,userDataDir,executablePath,cdpPort,createdAt:new Date().toISOString(),...copyCookieDomains.length>0?{copiedCookies:{domains:copyCookieDomains,count:copiedCookieCount}}:{}};return writeRecord(keyedConfigFile(MANAGED_BROWSERS_SUBDIR,browserId),record2),recordWritten=!0,await waitForBrowserRegistration(browserId,hostPid),deps.log(`managed browser launched: ${browserId}, chrome=${chromePid}, host=${hostPid}`),{...browserSummary(record2,!0),created:!0,reused:!1}}catch(error48){throw session?.close(),hostPid&&await stopProcess(hostPid,`--browser-id ${browserId}`),chromePid&&await stopProcess(chromePid,userDataDir),recordWritten&&removeRecord(keyedConfigFile(MANAGED_BROWSERS_SUBDIR,browserId)),persistent||rmSync4(userDataDir,{recursive:!0,force:!0}),error48}finally{releaseLock?.(),closeSync4(logFd)}}async function closeManagedBrowser(selector,options={}){let record2=findManagedRecord(selector);if(!record2)throw new Error(`Managed browser not found: ${selector}`);let recordFile=keyedConfigFile(MANAGED_BROWSERS_SUBDIR,record2.browserId);await stopProcess(record2.pid,record2.userDataDir);let closingOwnHost=record2.hostPid===process.pid;closingOwnHost||await stopProcess(record2.hostPid,`--browser-id ${record2.browserId}`),removeRecord(keyedConfigFile("browsers",record2.browserId));let deleteProfile=options.deleteProfile===!0||!record2.persistent,stoppedRecord=stoppedPersistentBrowserRecord(record2,deleteProfile);return stoppedRecord?writeRecord(recordFile,stoppedRecord):(removeRecord(recordFile),rmSync4(record2.userDataDir,{recursive:!0,force:!0})),closingOwnHost&&setTimeout(()=>process.kill(process.pid,"SIGTERM"),250).unref(),{browserId:record2.browserId,closed:!0,profileDeleted:deleteProfile}}var commonLaunchProperties={name:{type:"string",minLength:1},persistent:{type:"boolean",default:!0},copyCookieDomains:{type:"object",component:"cookie-sync",properties:{presets:{type:"array",items:{type:"string",enum:["mearl-services"]}},domains:{type:"array",items:{type:"string",minLength:1}}}}};function connectedBrowserIds(){return new Set(listRegisteredBrowsers().filter(browser=>browser.status===void 0||browser.status==="connected").map(browser=>browser.browserId))}function commonDetails(browser){return{headless:browser.headless,createdAt:browser.createdAt,...browser.copiedCookies?{copiedCookies:{domains:browser.copiedCookies.domains,count:browser.copiedCookies.count}}:{}}}function localBrowser(browser,connected){let stopped=!browser.running;return{browserId:browser.browserId,name:browser.name,status:stopped?"stopped":connected.has(browser.browserId)?"connected":"running_disconnected",control:stopped?{kind:"none"}:{kind:"host",transport:"cdp",browserId:browser.browserId},ownership:"owned",persistence:browser.persistent?"persistent":"ephemeral",operations:stopped?["start","deleteData"]:["close","deleteData"],references:[{kind:"profile",id:browser.browserId,label:"Profile"}],details:{...commonDetails(browser),cdpPort:browser.cdpPort}}}function localDefinition(deps){return{descriptor:{providerId:"local",name:"Local Chrome",version:NATIVE_HOST_VERSION,protocolVersion:2,builtin:!0},browserType:{name:"本地浏览器",inputSchema:{type:"object",required:["name"],additionalProperties:!0,properties:{...commonLaunchProperties,headless:{type:"boolean",default:!0}}}},listBrowsers:()=>{let connected=connectedBrowserIds();return listManagedBrowsers().map(browser=>localBrowser(browser,connected))},launch:async options=>{let summary=await launchManagedBrowser(options,{nativeHostScript:deps.nativeHostScript,exportCookies:deps.exportCookies,log:deps.log});return localBrowser(summary,connectedBrowserIds())},start:async({browserId})=>{let summary=listManagedBrowsers().find(browser=>browser.browserId===browserId);if(!summary)throw new Error(`Local browser not found: ${browserId}`);let launched=await launchManagedBrowser({name:summary.name,persistent:summary.persistent,headless:summary.headless},{nativeHostScript:deps.nativeHostScript,exportCookies:deps.exportCookies,log:deps.log});return localBrowser(launched,connectedBrowserIds())},close:({browserId,deleteData})=>closeManagedBrowser(browserId,{deleteProfile:deleteData})}}function createBuiltinBrowserProviders(deps){return[createProviderRuntime(localDefinition(deps))]}import net3 from"node:net";var MAX_RESPONSE_BUFFER_SIZE=16*1024*1024;function requestBrowserSocket(socketPath,action,data,version2,timeoutMs=6e4,browserId,host){let id=`browser_manager_${Date.now()}_${Math.random().toString(36).slice(2,10)}`;return new Promise((resolve2,reject)=>{let client2=net3.createConnection(socketPath),lines=new Utf8LineBuffer(MAX_RESPONSE_BUFFER_SIZE),settled=!1,finish=(error48,result)=>{settled||(settled=!0,clearTimeout(timer),client2.removeAllListeners(),client2.destroy(),error48?reject(error48):resolve2(result))},timer=setTimeout(()=>finish(new Error(`Browser request timeout after ${timeoutMs}ms`)),timeoutMs);client2.on("connect",()=>{client2.write(`${JSON.stringify({id,action,data,version:version2,controlSource:"local",...browserId?{browserId}:{},...host?{host}:{}})}
827
+ `;for(let attempt=0;attempt<2;attempt+=1)try{fs15.writeFileSync(lockPath,serializedOwner,{encoding:"utf8",flag:"wx",mode:384});break}catch(error48){if(!(error48 instanceof Error)||!("code"in error48)||error48.code!=="EEXIST")throw error48;let state=readUpdateLock(lockPath);if(!(state===null||(state.owner?now()-state.owner.startedAt>EXTENSION_UPDATE_LOCK_STALE_MS&&!isProcessAlive(state.owner.pid):now()-state.modifiedAt>INVALID_UPDATE_LOCK_GRACE_MS2))||attempt>0)throw new Error("Another extension update is already running",{cause:error48});try{fs15.unlinkSync(lockPath)}catch(unlinkError){throw new Error("Another extension update is already running",{cause:unlinkError})}}try{return await operation()}finally{try{fs15.readFileSync(lockPath,"utf8")===serializedOwner&&fs15.unlinkSync(lockPath)}catch{}}}async function updateSetupManagedExtension(request,dependencies={}){if(!isMearlReleaseVersion(request.currentVersion))throw new Error("The running extension reported an invalid version");if(!request.setupManagedPath||!path15.isAbsolute(request.setupManagedPath))throw new Error("A setup-managed extension path is required");let release=await(dependencies.fetchRelease??fetchBrowserExtensionRelease)(),changelogUrl=`https://mearl.alibaba-inc.com/changelog.html#v${release.version}`;return compareMearlReleaseVersions(release.version,request.currentVersion)<=0?{changelogUrl,updated:!1,version:request.currentVersion}:withExtensionUpdateLock(async()=>(await(dependencies.updateFiles??updateSetupManagedBrowserExtensionFiles)({release,targetDirectory:request.setupManagedPath}),{changelogUrl,updated:!0,version:release.version}),dependencies)}function shouldExitWithoutLegacySocket(options,hasLegacySocket){return!hasLegacySocket&&options.discoverCdp}function stripNativeMessagingLaunchArgs(argv){let[origin,parentWindow,...rest]=argv;return/^chrome-extension:\/\/[a-z]{32}\/$/.test(origin??"")?/^--parent-window=\d+$/.test(parentWindow??"")?rest:argv.slice(1):argv}async function parseNativeHostRuntimeArgs(argv){let args=stripNativeMessagingLaunchArgs(argv),options={},readValue=(index,name)=>{let argument=args[index];if(argument===name){let value=args[index+1];if(value===void 0||value.startsWith("-"))throw new Error(`argument missing for option '${name}'`);return{nextIndex:index+1,value}}return argument?.startsWith(`${name}=`)?{nextIndex:index,value:argument.slice(name.length+1)}:null},parseInteger=(value,label,minimum,maximum)=>{let parsed=Number(value);if(!Number.isInteger(parsed)||parsed<minimum||parsed>maximum)throw new Error(`${label} must be an integer from ${minimum} to ${maximum}`);return parsed};for(let index=0;index<args.length;index+=1){let argument=args[index];if(argument==="--daemon"){options.daemon=!0;continue}if(argument==="--discover-cdp"){options.discoverCdp=!0;continue}if(argument==="--skip-browser-registration"){options.skipBrowserRegistration=!0;continue}if(argument==="--browser-headless"){options.browserHeadless=!0;continue}if(argument==="--version"||argument==="-v"){options.version=!0;continue}if(argument==="--help"||argument==="-h"){options.help=!0;continue}let cdpPort=readValue(index,"--cdp-port");if(cdpPort){options.cdpPort=parseInteger(cdpPort.value,"cdp-port",1,65535),index=cdpPort.nextIndex;continue}let stringOptions=[["--cdp-user-data-dir","cdpUserDataDir"],["--cdp-endpoint-file","cdpEndpointFile"],["--browser-id","browserId"],["--browser-name","browserName"]],matchedStringOption=!1;for(let[name,property]of stringOptions){let parsed=readValue(index,name);if(parsed){options[property]=parsed.value,index=parsed.nextIndex,matchedStringOption=!0;break}}if(!matchedStringOption)throw new Error(argument?.startsWith("-")?`unknown option '${argument}'`:`unexpected argument '${argument}'`)}return{browserHeadless:options.browserHeadless??!1,browserId:options.browserId??"cdp",browserName:options.browserName??"CDP",...options.cdpEndpointFile?{cdpEndpointFile:options.cdpEndpointFile}:{},cdpPort:options.cdpPort??9222,...options.cdpUserDataDir?{cdpUserDataDir:options.cdpUserDataDir}:{},daemon:options.daemon===!0,discoverCdp:options.discoverCdp===!0,help:options.help===!0,skipBrowserRegistration:options.skipBrowserRegistration===!0,version:options.version===!0}}var OPEN_SANDBOX_PORT_PLACEHOLDER="{port}",AONE_PORT_MAPPING_URL="http://127.0.0.1:58596/api/port-mapping";function normalizeBrowserAccessUrl(value){if(typeof value!="string"||!value.trim())return null;let input=/^[a-z][a-z\d+.-]*:\/\//i.test(value.trim())?value.trim():`https://${value.trim()}`;try{let parsed=new URL(input);return parsed.protocol==="ws:"&&(parsed.protocol="http:"),parsed.protocol==="wss:"&&(parsed.protocol="https:"),!["http:","https:"].includes(parsed.protocol)||!parsed.hostname?null:parsed.toString()}catch{return null}}function resolveSandboxBrowserAccessCapability(env=process.env){return env.OPENSANDBOX_ID?.trim()?{kind:"sandbox-novnc",environment:"opensandbox",port:6080}:env.AONE_SANDBOX_ID?.trim()?{kind:"sandbox-novnc",environment:"aone",port:6080}:null}function resolveOpenSandboxBrowserAccessUrl(port,env=process.env){if(!env.OPENSANDBOX_ID?.trim())return null;let template=env.AONE_SANDBOX_ENDPOINT_TEMPLATE?.trim();return template?.includes(OPEN_SANDBOX_PORT_PLACEHOLDER)?normalizeBrowserAccessUrl(template.replaceAll(OPEN_SANDBOX_PORT_PLACEHOLDER,String(port))):null}async function resolveAoneBrowserAccessUrl(port,dependencies){let response=await(dependencies.fetch??globalThis.fetch)(`${AONE_PORT_MAPPING_URL}?port=${port}`,{signal:AbortSignal.timeout(5e3)});if(!response.ok)throw new Error(`AONE Sandbox port mapping failed with HTTP ${response.status}`);let payload=await response.json(),url2=payload.success?normalizeBrowserAccessUrl(payload.url):null;if(!url2)throw new Error(`AONE Sandbox did not return a browser access URL for port ${port}`);return url2}async function resolveSandboxBrowserAccess(dependencies={}){let env=dependencies.env??process.env,capability=resolveSandboxBrowserAccessCapability(env);if(!capability)throw new Error("The selected browser is not running in a supported sandbox");if(capability.environment==="opensandbox"){let url3=resolveOpenSandboxBrowserAccessUrl(capability.port,env);if(url3)return{...capability,url:url3};if(!env.AONE_SANDBOX_ID?.trim())throw new Error("OpenSandbox browser access is unavailable because AONE_SANDBOX_ENDPOINT_TEMPLATE is missing or invalid")}let url2=await resolveAoneBrowserAccessUrl(capability.port,dependencies);return{...capability,environment:"aone",url:url2}}import net2 from"node:net";import{chmodSync,rmSync as rmSync3}from"node:fs";import{dirname as dirname3}from"node:path";var MAX_REQUEST_BYTES=16*1024*1024;import{closeSync as closeSync4,existsSync as existsSync6,mkdtempSync,mkdirSync as mkdirSync3,openSync as openSync4,readFileSync as readFileSync5,renameSync as renameSync4,rmSync as rmSync4,writeFileSync as writeFileSync3}from"node:fs";import{spawn as spawn9,spawnSync as spawnSync2}from"node:child_process";import{randomUUID as randomUUID8}from"node:crypto";import{tmpdir}from"node:os";import{join as join6}from"node:path";function stoppedPersistentBrowserRecord(record2,deleteProfile){if(deleteProfile||record2.persistent!==!0)return null;let stopped={...record2,pid:0};return"hostPid"in stopped?{...stopped,hostPid:0}:stopped}var MANAGED_BROWSERS_SUBDIR="managed-browsers",MANAGED_BROWSER_LOCKS_SUBDIR="managed-browser-locks",MANAGED_PROFILES_SUBDIR="managed-profiles",LAUNCH_TIMEOUT_MS=15e3;function validateName(value){let name=typeof value=="string"?value.trim():"";if(!name)throw new Error("name is required");if(name.length>64)throw new Error("name must be at most 64 characters");if(/[/\\\0\r\n]/.test(name))throw new Error("name contains unsupported characters");return name}function managedBrowserId(name){return`managed:${name.toLocaleLowerCase("en-US")}`}function chromeExecutableCandidates(platform=process.platform){let envPath=process.env.MEARL_CHROME_PATH,candidates=envPath?[envPath]:[];if(platform==="darwin")return candidates.concat(["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome","/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary","/Applications/Chromium.app/Contents/MacOS/Chromium"]);if(platform==="win32"){let local=process.env.LOCALAPPDATA??"",programFiles=process.env.PROGRAMFILES??"",programFilesX86=process.env["PROGRAMFILES(X86)"]??"";return candidates.concat([join6(local,"Google","Chrome","Application","chrome.exe"),join6(programFiles,"Google","Chrome","Application","chrome.exe"),join6(programFilesX86,"Google","Chrome","Application","chrome.exe")])}return candidates.concat(["/usr/bin/google-chrome","/usr/bin/google-chrome-stable","/usr/bin/chromium","/usr/bin/chromium-browser"])}function resolveChromeExecutable(explicitPath){if(explicitPath){if(!existsSync6(explicitPath))throw new Error(`Chrome executable not found: ${explicitPath}`);return explicitPath}let found=chromeExecutableCandidates().find(candidate=>candidate&&existsSync6(candidate));if(!found)throw new Error("Chrome executable not found. Set executablePath or MEARL_CHROME_PATH.");return found}function desktopChromeUserAgent(version2,platform=process.platform){if(!/^\d+(?:\.\d+){1,3}$/.test(version2))throw new Error(`Invalid Chrome version: ${version2}`);return`Mozilla/5.0 (${platform==="darwin"?"Macintosh; Intel Mac OS X 10_15_7":platform==="win32"?"Windows NT 10.0; Win64; x64":"X11; Linux x86_64"}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${version2} Safari/537.36`}function resolveChromeVersion(executablePath){let result=spawnSync2(executablePath,["--version"],{encoding:"utf8",windowsHide:!0}),version2=`${result.stdout??""} ${result.stderr??""}`.match(/\b(\d+(?:\.\d+){1,3})\b/)?.[1];if(!version2)throw new Error(`Could not determine Chrome version from: ${executablePath}`);return version2}function resolveUserAgentMode(value){if(value===void 0||value==="default")return"default";if(value==="desktop")return"desktop";throw new Error('userAgentMode must be "default" or "desktop"')}function buildManagedChromeArgs(options){return[`--user-data-dir=${options.userDataDir}`,"--remote-debugging-port=0","--no-first-run","--no-default-browser-check","--disable-background-networking",...options.headless?["--headless=new"]:[],...options.userAgent?[`--user-agent=${options.userAgent}`]:[],"about:blank"]}function browserSummary(record2,running){return{browserId:record2.browserId,name:record2.name,provider:"local",headless:record2.headless,persistent:record2.persistent,cdpPort:record2.cdpPort,createdAt:record2.createdAt,copiedCookies:record2.copiedCookies,running}}function isManagedProcess(pid,commandMarker,platform=process.platform){if(!isAlive(pid))return!1;try{if(platform==="win32"){let escapedMarker=commandMarker.replace(/'/g,"''");return spawnSync2("powershell.exe",["-NoProfile","-NonInteractive","-Command",`$p = Get-CimInstance Win32_Process -Filter 'ProcessId = ${pid}'; if ($p.CommandLine -and $p.CommandLine.Contains('${escapedMarker}')) { exit 0 } else { exit 1 }`],{windowsHide:!0,stdio:"ignore"}).status===0}let result=spawnSync2("ps",["-p",String(pid),"-o","command="],{encoding:"utf8",stdio:["ignore","pipe","ignore"]});return result.status===0&&result.stdout.includes(commandMarker)}catch{return!1}}function listRecords(){let records=[];for(let file2 of listRecordFiles(keyedDir(MANAGED_BROWSERS_SUBDIR))){let record2=readRecord(file2);if(!record2){removeRecord(file2);continue}let running=isManagedProcess(record2.pid,record2.userDataDir);if(!running&&(signalProcess(record2.hostPid,"SIGTERM",`--browser-id ${record2.browserId}`),removeRecord(keyedConfigFile("browsers",record2.browserId)),!record2.persistent)){removeRecord(file2),rmSync4(record2.userDataDir,{recursive:!0,force:!0});continue}records.push({record:record2,running})}return records}function listManagedBrowsers(){return listRecords().map(({record:record2,running})=>browserSummary(record2,running))}function findManagedRecord(selector){let normalized=selector.trim().toLowerCase();return listRecords().find(({record:record2})=>record2.browserId.toLowerCase()===normalized||record2.name.toLowerCase()===normalized)?.record??null}async function waitForActivePort(userDataDir){let deadline=Date.now()+LAUNCH_TIMEOUT_MS;for(;Date.now()<deadline;){let info=readDevToolsActivePort(userDataDir);if(info)return info.port;await new Promise(resolve2=>setTimeout(resolve2,100))}throw new Error(`Chrome did not expose a CDP port within ${LAUNCH_TIMEOUT_MS}ms`)}async function waitForBrowserRegistration(browserId,expectedPid){let file2=keyedConfigFile("browsers",browserId),deadline=Date.now()+LAUNCH_TIMEOUT_MS;for(;Date.now()<deadline;){if(readRecord(file2)?.pid===expectedPid&&isAlive(expectedPid))return;await new Promise(resolve2=>setTimeout(resolve2,100))}throw new Error(`Managed browser ${browserId} did not register within ${LAUNCH_TIMEOUT_MS}ms`)}function signalProcess(pid,signal,commandMarker){if(isManagedProcess(pid,commandMarker)){if(process.platform==="win32"){spawnSync2("taskkill",["/PID",String(pid),"/T","/F"],{windowsHide:!0,stdio:"ignore"});return}try{process.kill(pid,signal)}catch{}}}async function stopProcess(pid,commandMarker){signalProcess(pid,"SIGTERM",commandMarker);let deadline=Date.now()+3e3;for(;Date.now()<deadline&&isManagedProcess(pid,commandMarker);)await new Promise(resolve2=>setTimeout(resolve2,50));isManagedProcess(pid,commandMarker)&&signalProcess(pid,"SIGKILL",commandMarker)}function profileDirectory(browserId,persistent){if(!persistent)return mkdtempSync(join6(tmpdir(),"mearl-browser-"));let dir=join6(DAEMON_HOME,MANAGED_PROFILES_SUBDIR,hashKey(browserId));return mkdirSync3(dir,{recursive:!0}),dir}async function removeStoppedInstance(browserId){let file2=keyedConfigFile(MANAGED_BROWSERS_SUBDIR,browserId),record2=readRecord(file2);!record2||isManagedProcess(record2.pid,record2.userDataDir)||(await stopProcess(record2.hostPid,`--browser-id ${record2.browserId}`),removeRecord(file2),removeRecord(keyedConfigFile("browsers",record2.browserId)),record2.persistent||rmSync4(record2.userDataDir,{recursive:!0,force:!0}))}function acquireLaunchLock(browserId){let lockDir=keyedDir(MANAGED_BROWSER_LOCKS_SUBDIR),lockFile=keyedConfigFile(MANAGED_BROWSER_LOCKS_SUBDIR,browserId);mkdirSync3(lockDir,{recursive:!0});let token=`${process.pid}:${randomUUID8()}`,tryAcquire=()=>{try{return writeFileSync3(lockFile,token,{flag:"wx"}),!0}catch(error48){if(error48.code!=="EEXIST")throw error48;return!1}};if(!tryAcquire()){let observedToken="";try{observedToken=readFileSync5(lockFile,"utf-8")}catch{}let ownerPid=Number(observedToken.split(":",1)[0]);if(Number.isInteger(ownerPid)&&!isAlive(ownerPid)){let staleFile=`${lockFile}.${process.pid}.${randomUUID8()}.stale`;try{if(readFileSync5(lockFile,"utf-8")!==observedToken)throw new Error("Launch lock owner changed");if(renameSync4(lockFile,staleFile),readFileSync5(staleFile,"utf-8")===observedToken)rmSync4(staleFile,{force:!0});else try{renameSync4(staleFile,lockFile)}catch{}}catch{}}if(!tryAcquire())throw new Error(`Managed browser launch already in progress: ${browserId}`)}return()=>{try{readFileSync5(lockFile,"utf-8")===token&&rmSync4(lockFile,{force:!0})}catch{}}}async function launchManagedBrowser(input,deps){let name=validateName(input.name),browserId=managedBrowserId(name),cookieCopy=resolveCookieCopyPlan(input.copyCookieDomains),copyCookieDomains=cookieCopy.domains,headless=input.headless!==!1,persistent=input.persistent===!0,executablePath=resolveChromeExecutable(input.executablePath),userAgent=resolveUserAgentMode(input.userAgentMode)==="desktop"?desktopChromeUserAgent(resolveChromeVersion(executablePath)):void 0,userDataDir=profileDirectory(browserId,persistent),logDir=keyedDir(MANAGED_BROWSERS_SUBDIR);mkdirSync3(logDir,{recursive:!0});let logPath=join6(logDir,`${hashKey(browserId)}.log`),logFd=openSync4(logPath,"a"),chromePid=0,hostPid=0,session=null,recordWritten=!1,releaseLock=null;try{if(releaseLock=acquireLaunchLock(browserId),await removeStoppedInstance(browserId),findManagedRecord(browserId))throw new Error(`Managed browser already running: ${browserId}`);let exportedCookies=copyCookieDomains.length>0?await deps.exportCookies(copyCookieDomains):[],cookies=cookieCopy.select(exportedCookies),chromeArgs=buildManagedChromeArgs({userDataDir,headless,userAgent});rmSync4(join6(userDataDir,"DevToolsActivePort"),{force:!0});let chrome=spawn9(executablePath,chromeArgs,{detached:!0,stdio:["ignore","ignore",logFd],windowsHide:headless});if(await new Promise((resolve2,reject)=>{chrome.once("error",reject),chrome.once("spawn",resolve2)}),chromePid=chrome.pid??0,!chromePid)throw new Error("Chrome launched without a process id");chrome.unref();let cdpPort=await waitForActivePort(userDataDir);session=new CdpSession({port:cdpPort,userDataDir});let copiedCookieCount=await cdpImportCookies(session,cookies);input.url&&await(await session.getBrowserClient()).sendCommand("Target.createTarget",{url:input.url,background:headless}),session.close(),session=null;let host=spawn9(process.execPath,[deps.nativeHostScript,"--daemon","--cdp-port",String(cdpPort),"--cdp-user-data-dir",userDataDir,"--browser-id",browserId,"--browser-name",name,...headless?["--browser-headless"]:[]],{detached:!0,stdio:"ignore",windowsHide:!0});if(await new Promise((resolve2,reject)=>{host.once("error",reject),host.once("spawn",resolve2)}),hostPid=host.pid??0,!hostPid)throw new Error("Native host launched without a process id");host.unref();let record2={pid:chromePid,hostPid,browserId,name,headless,persistent,userDataDir,executablePath,cdpPort,createdAt:new Date().toISOString(),...copyCookieDomains.length>0?{copiedCookies:{domains:copyCookieDomains,count:copiedCookieCount}}:{}};return writeRecord(keyedConfigFile(MANAGED_BROWSERS_SUBDIR,browserId),record2),recordWritten=!0,await waitForBrowserRegistration(browserId,hostPid),deps.log(`managed browser launched: ${browserId}, chrome=${chromePid}, host=${hostPid}`),{...browserSummary(record2,!0),created:!0,reused:!1}}catch(error48){throw session?.close(),hostPid&&await stopProcess(hostPid,`--browser-id ${browserId}`),chromePid&&await stopProcess(chromePid,userDataDir),recordWritten&&removeRecord(keyedConfigFile(MANAGED_BROWSERS_SUBDIR,browserId)),persistent||rmSync4(userDataDir,{recursive:!0,force:!0}),error48}finally{releaseLock?.(),closeSync4(logFd)}}async function closeManagedBrowser(selector,options={}){let record2=findManagedRecord(selector);if(!record2)throw new Error(`Managed browser not found: ${selector}`);let recordFile=keyedConfigFile(MANAGED_BROWSERS_SUBDIR,record2.browserId);await stopProcess(record2.pid,record2.userDataDir);let closingOwnHost=record2.hostPid===process.pid;closingOwnHost||await stopProcess(record2.hostPid,`--browser-id ${record2.browserId}`),removeRecord(keyedConfigFile("browsers",record2.browserId));let deleteProfile=options.deleteProfile===!0||!record2.persistent,stoppedRecord=stoppedPersistentBrowserRecord(record2,deleteProfile);return stoppedRecord?writeRecord(recordFile,stoppedRecord):(removeRecord(recordFile),rmSync4(record2.userDataDir,{recursive:!0,force:!0})),closingOwnHost&&setTimeout(()=>process.kill(process.pid,"SIGTERM"),250).unref(),{browserId:record2.browserId,closed:!0,profileDeleted:deleteProfile}}var commonLaunchProperties={name:{type:"string",minLength:1},persistent:{type:"boolean",default:!0},copyCookieDomains:{type:"object",component:"cookie-sync",properties:{presets:{type:"array",items:{type:"string",enum:["mearl-services"]}},domains:{type:"array",items:{type:"string",minLength:1}}}}};function connectedBrowserIds(){return new Set(listRegisteredBrowsers().filter(browser=>browser.status===void 0||browser.status==="connected").map(browser=>browser.browserId))}function commonDetails(browser){return{headless:browser.headless,createdAt:browser.createdAt,...browser.copiedCookies?{copiedCookies:{domains:browser.copiedCookies.domains,count:browser.copiedCookies.count}}:{}}}function localBrowser(browser,connected){let stopped=!browser.running;return{browserId:browser.browserId,name:browser.name,status:stopped?"stopped":connected.has(browser.browserId)?"connected":"running_disconnected",control:stopped?{kind:"none"}:{kind:"host",transport:"cdp",browserId:browser.browserId},ownership:"owned",persistence:browser.persistent?"persistent":"ephemeral",operations:stopped?["start","deleteData"]:["close","deleteData"],references:[{kind:"profile",id:browser.browserId,label:"Profile"}],details:{...commonDetails(browser),cdpPort:browser.cdpPort}}}function localDefinition(deps){return{descriptor:{providerId:"local",name:"Local Chrome",version:NATIVE_HOST_VERSION,protocolVersion:2,builtin:!0},browserType:{name:"本地浏览器",inputSchema:{type:"object",required:["name"],additionalProperties:!0,properties:{...commonLaunchProperties,headless:{type:"boolean",default:!0}}}},listBrowsers:()=>{let connected=connectedBrowserIds();return listManagedBrowsers().map(browser=>localBrowser(browser,connected))},launch:async options=>{let summary=await launchManagedBrowser(options,{nativeHostScript:deps.nativeHostScript,exportCookies:deps.exportCookies,log:deps.log});return localBrowser(summary,connectedBrowserIds())},start:async({browserId})=>{let summary=listManagedBrowsers().find(browser=>browser.browserId===browserId);if(!summary)throw new Error(`Local browser not found: ${browserId}`);let launched=await launchManagedBrowser({name:summary.name,persistent:summary.persistent,headless:summary.headless},{nativeHostScript:deps.nativeHostScript,exportCookies:deps.exportCookies,log:deps.log});return localBrowser(launched,connectedBrowserIds())},close:({browserId,deleteData})=>closeManagedBrowser(browserId,{deleteProfile:deleteData})}}function createBuiltinBrowserProviders(deps){return[createProviderRuntime(localDefinition(deps))]}import net3 from"node:net";var MAX_RESPONSE_BUFFER_SIZE=16*1024*1024;function requestBrowserSocket(socketPath,action,data,version2,timeoutMs=6e4,browserId,host){let id=`browser_manager_${Date.now()}_${Math.random().toString(36).slice(2,10)}`;return new Promise((resolve2,reject)=>{let client2=net3.createConnection(socketPath),lines=new Utf8LineBuffer(MAX_RESPONSE_BUFFER_SIZE),settled=!1,finish=(error48,result)=>{settled||(settled=!0,clearTimeout(timer),client2.removeAllListeners(),client2.destroy(),error48?reject(error48):resolve2(result))},timer=setTimeout(()=>finish(new Error(`Browser request timeout after ${timeoutMs}ms`)),timeoutMs);client2.on("connect",()=>{client2.write(`${JSON.stringify({id,action,data,version:version2,controlSource:"local",...browserId?{browserId}:{},...host?{host}:{}})}
827
828
  `)}),client2.on("data",chunk=>{let result=lines.push(chunk);if(result.overflow){finish(new Error("Browser response exceeded the supported size"));return}for(let line of result.lines){let response;try{response=JSON.parse(line)}catch{continue}if(response.id===id){response.success?finish(void 0,response.data):finish(new Error(response.error||"Browser request failed"));return}}}),client2.on("error",error48=>finish(error48)),client2.on("end",()=>finish(new Error("Browser connection closed before responding"))),client2.on("close",()=>finish(new Error("Browser connection closed before responding")))})}function listExternalBrowserProviders(){return listInstalledProviders().map(provider=>({provider:{id:provider.providerId,name:provider.name,builtin:!1,version:provider.version,protocolVersion:provider.protocolVersion},browserType:provider.browserType}))}async function requireLiveProvider(providerId){let warnings=await ensureInstalledProvidersRunning(),live=readLiveProvider(providerId);if(!live){let warning=warnings.find(item=>item.startsWith(`provider ${providerId}:`));throw new Error(warning??`Provider did not start: ${providerId}`)}return{socketPath:live.socketPath}}async function launchProviderBrowser(input){let providerId=input.provider.trim();if(!listInstalledProviders().find(item=>item.providerId===providerId))throw new Error(`Provider is not registered: ${providerId}`);let live=await requireLiveProvider(providerId),result=await(input.host?requestBrowserSocket(live.socketPath,"browser_launch",input.providerOptions,NATIVE_HOST_VERSION,6e4,void 0,input.host):requestBrowserSocket(live.socketPath,"browser_launch",input.providerOptions,NATIVE_HOST_VERSION));return validateProviderBrowser(result),{...result,browserId:providerBrowserKey(providerId,result.browserId)}}function findProviderBrowser(selector){let normalized=selector.toLowerCase(),exact=listRegisteredBrowsers().filter(browser=>browser.transport==="provider").filter(browser=>browser.browserId.toLowerCase()===normalized||browser.providerBrowserId?.toLowerCase()===normalized||browser.browserName.toLowerCase()===normalized);if(exact.length>1)throw new Error(`Provider browser selector is ambiguous: ${selector}`);return exact[0]??null}function requireProviderBrowser(browser){if(browser.transport!=="provider"||!browser.providerBrowserId)throw new Error(`Browser is not managed by an external Provider: ${browser.browserId}`);return browser.providerBrowserId}function closeProviderBrowser(browser,options={}){return requestBrowserSocket(browser.socketPath,"browser_close",{deleteProfile:options.deleteProfile===!0},NATIVE_HOST_VERSION,6e4,requireProviderBrowser(browser))}function detachProviderBrowser(browser){return requestBrowserSocket(browser.socketPath,"browser_release",{},NATIVE_HOST_VERSION,6e4,requireProviderBrowser(browser))}async function accessProviderBrowser(browser){return(await requestBrowserSocket(browser.socketPath,"get_browser_access_url",{},NATIVE_HOST_VERSION,6e4,requireProviderBrowser(browser))).browserAccess}async function startProviderBrowser(browser){let result=await requestBrowserSocket(browser.socketPath,"browser_manager_start",{},NATIVE_HOST_VERSION,12e4,requireProviderBrowser(browser));return validateProviderBrowser(result),{...result,browserId:browser.browserId}}function syncProviderBrowserCookies(browser,scope,host){let browserId=requireProviderBrowser(browser);return host?requestBrowserSocket(browser.socketPath,"browser_manager_sync_cookies",{scope},NATIVE_HOST_VERSION,12e4,browserId,host):requestBrowserSocket(browser.socketPath,"browser_manager_sync_cookies",{scope},NATIVE_HOST_VERSION,12e4,browserId)}async function configureProvider(providerId,options){if(!listInstalledProviders().find(item=>item.providerId===providerId)?.browserType.configuration)throw new Error(`Provider does not support configuration: ${providerId}`);let live=await requireLiveProvider(providerId);return requestBrowserSocket(live.socketPath,"browser_provider_configure",options,NATIVE_HOST_VERSION)}var BrowserProviderCoordinator=class{constructor(runtimes,hostServices){this.runtimes=runtimes;this.hostServices=hostServices}async hostContext(options){if(!this.hostServices)return;let result={};if(options.copyCookieDomains!==void 0){let plan=resolveCookieCopyPlan(options.copyCookieDomains);result.cookies=plan.select(await this.hostServices.exportCookies(plan.domains))}return options.userAgentMode==="desktop"&&(result.userAgent=await this.hostServices.getBrowserUserAgent()),Object.keys(result).length>0?result:void 0}definitions(){return{providers:[...this.runtimes.map(runtime=>{let descriptor=runtime.definition.descriptor;return{provider:providerIdentity(descriptor),browserType:runtime.definition.browserType}}),...listExternalBrowserProviders()]}}get providerRuntimes(){return this.runtimes}async launch(input){let providerId=input.provider?.trim()||"local",runtime=this.runtimes.find(item=>item.definition.descriptor.providerId===providerId),builtinOptions={...input};if(delete builtinOptions.provider,delete builtinOptions.providerOptions,input.providerOptions&&Object.keys(builtinOptions).length>0)throw new Error("Use either providerOptions or flat launch options, not both");if(runtime){let descriptor=runtime.definition.descriptor,options={...input.providerOptions??builtinOptions};return Array.isArray(options.copyCookieDomains)&&(options.copyCookieDomains={domains:options.copyCookieDomains}),options.copyCookieDomains==="mearl-services"&&(options.copyCookieDomains={presets:["mearl-services"]}),providerBrowserInfo({provider:providerIdentity(descriptor),browser:await runtime.launch(options)})}let external=listExternalBrowserProviders().find(provider=>provider.provider.id===providerId);if(!external)throw new Error(`Provider is not registered: ${providerId}`);if(Object.keys(builtinOptions).length>0)throw new Error("External Provider launch options must be supplied in providerOptions");let host=await this.hostContext(input.providerOptions??{});return providerBrowserInfo({provider:external.provider,browser:await launchProviderBrowser({provider:providerId,providerOptions:input.providerOptions??{},...host?{host}:{}})})}async close(selector,deleteProfile=!1){let match=await this.requireOne(selector);return"external"in match?closeProviderBrowser(match.external,{deleteProfile}):match.runtime.close({browserId:match.browser.browserId,deleteData:deleteProfile})}async start(selector){let match=await this.requireOne(selector);if("external"in match){if(!match.external.provider)throw new Error("Provider identity is missing");return providerBrowserInfo({provider:match.external.provider,browser:await startProviderBrowser(match.external)})}let descriptor=match.runtime.definition.descriptor;return providerBrowserInfo({provider:providerIdentity(descriptor),browser:await match.runtime.start({browserId:match.browser.browserId})})}async syncCookies(selector,scope){let match=await this.requireOne(selector);if("external"in match){let host=await this.hostContext({copyCookieDomains:scope});return host?syncProviderBrowserCookies(match.external,scope,host):syncProviderBrowserCookies(match.external,scope)}return match.runtime.syncCookies({browserId:match.browser.browserId,scope})}async access(selector){let match=await this.requireOne(selector);return{browserAccess:"runtime"in match?await match.runtime.getAccess({browserId:match.browser.browserId}):await accessProviderBrowser(match.external)}}async detach(selector){let match=await this.requireOne(selector);return"runtime"in match?match.runtime.detach({browserId:match.browser.browserId}):detachProviderBrowser(match.external)}async configure(providerId,options){let runtime=this.runtimes.find(item=>item.definition.descriptor.providerId===providerId);return runtime?runtime.configure(options):configureProvider(providerId,options)}async findRuntimeBrowsers(selector){let normalized=selector.trim().toLowerCase();return(await Promise.all(this.runtimes.map(async runtime=>(await runtime.listBrowsers()).map(browser=>({runtime,browser}))))).flat().filter(entry=>entry.browser.browserId.toLowerCase()===normalized||entry.browser.name.toLowerCase()===normalized)}async requireOne(selector){let matches=await this.findRuntimeBrowsers(selector),external=findProviderBrowser(selector);if(matches.length+ +!!external>1)throw new Error(`Browser name is ambiguous: ${selector}. Use the full browserId from browser_list.`);if(matches[0])return matches[0];if(external)return{external};throw new Error(`Provider browser not found: ${selector}`)}};process.env.MEARL_NATIVE_HOST_ENTRY??=fileURLToPath3(import.meta.url);var cliArgs=process.argv.slice(2),cliArg=cliArgs[0];if(cliArg==="--init"||cliArg==="--uninstall"||cliArg==="init"||cliArg==="uninstall"){let{runCli:runCli2}=await Promise.resolve().then(()=>(init_install(),install_exports));process.exit(await runCli2(cliArgs))}function printCliHelp(){console.error(`mearl-native-host v${NATIVE_HOST_VERSION}
828
829
 
829
830
  Usage:
@@ -866,7 +867,7 @@ Examples:
866
867
  mearl-native-host uninstall --mode skills
867
868
  mearl-native-host init --extension-id abcdefghijklmnopqrstuvwxyzabcdef
868
869
  mearl-native-host --daemon
869
- mearl-native-host --version`)}!cliArg&&process.stdin.isTTY&&(printCliHelp(),process.exit(0));var runtimeArgs={browserId:"cdp",browserHeadless:!1,browserName:"CDP",cdpPort:9222,daemon:!1,discoverCdp:!1,help:!1,skipBrowserRegistration:!1,version:!1};if(cliArgs.length>0)try{let{parseNativeHostRuntimeArgs:parseNativeHostRuntimeArgs2}=await Promise.resolve().then(()=>(init_runtimeArgs(),runtimeArgs_exports));runtimeArgs=await parseNativeHostRuntimeArgs2(cliArgs)}catch(error48){console.error(`Error: ${error48 instanceof Error?error48.message:String(error48)}`),printCliHelp(),process.exit(2)}runtimeArgs.version&&(console.log(NATIVE_HOST_VERSION),process.exit(0));runtimeArgs.help&&(printCliHelp(),process.exit(0));var isDaemonMode=runtimeArgs.daemon,discoverCdp=runtimeArgs.discoverCdp,skipBrowserRegistration=runtimeArgs.skipBrowserRegistration,CDP_ENDPOINT_FILE=runtimeArgs.cdpEndpointFile,CDP_PORT=runtimeArgs.cdpPort,CDP_USER_DATA_DIR=runtimeArgs.cdpUserDataDir,BROWSER_HEADLESS=runtimeArgs.browserHeadless,CDP_BROWSER_ID=runtimeArgs.browserId,CDP_BROWSER_NAME=runtimeArgs.browserName;function socketPathFor(suffix){return process.platform==="win32"?`\\\\.\\pipe\\mearl-agent${suffix}`:path18.join(os10.tmpdir(),`mearl-agent${suffix}.sock`)}var LEGACY_SOCKET_PATH=socketPathFor(""),INSTANCE_SOCKET_PATH=socketPathFor(`-${process.pid}`),LOG_FILE=path18.join(os10.tmpdir(),"mearl-native-host.log"),DEFAULT_TIMEOUT_MS=15e3,INVENTORY_IDLE_EXIT_MS=1e3,DISCOVERY_REQUEST_IDLE_EXIT_MS=5e3,MAX_SOCKET_BUFFER_SIZE2=64*1024*1024,extensionVersion=null,versionWarningEmitted=!1,cdpPermissionNoticeLogged=!1,EXTENSION_INSTALL_URL="https://chromewebstore.google.com/detail/mearl/aoehhjnofngknnjefamjbplchbolghkm";function majorMinor(version2){let parts=version2.split(".");return parts.length>=2?`${parts[0]}.${parts[1]}`:version2}function extractChromeVersion(input){let match=/Chrome\/([\d.]+)/.exec(input);return match?match[1].split(".").slice(0,3).join("."):null}async function fetchCdpBrowserVersion(){if(CDP_ENDPOINT_FILE)try{return(await(await getCdpSession().getBrowserClient()).sendCommand("Browser.getVersion",{},5e3)).product??null}catch{return null}let port=readDevToolsActivePort(CDP_USER_DATA_DIR)?.port??CDP_PORT;return new Promise(resolve2=>{let req=http4.get(`http://localhost:${port}/json/version`,res=>{let data="";res.on("data",chunk=>data+=chunk),res.on("end",()=>{try{let info=JSON.parse(data);resolve2(info.Browser??null)}catch{resolve2(null)}})});req.on("error",()=>resolve2(null)),req.setTimeout(2e3,()=>{req.destroy(),resolve2(null)})})}async function getCurrentBrowserUserAgent(){if(extensionVersion!==null)try{let result=await sendRequestToExtension("get_browser_info",{},3e3,!0);if(result.userAgent?.trim())return result.userAgent}catch{}try{let result=await(await getCdpSession().getBrowserClient()).sendCommand("Browser.getVersion",{},5e3);if(result.userAgent?.trim())return result.userAgent}catch{}throw new Error("Could not determine the control browser user agent for userAgentMode=desktop")}function currentBrowserSupportsSandboxAccess(){return!BROWSER_HEADLESS}function resolveBrowserAccessCapability(){return currentBrowserSupportsSandboxAccess()?resolveSandboxBrowserAccessCapability():null}async function resolveBrowserAccess(){if(!resolveBrowserAccessCapability())throw new Error("The selected browser does not expose a browser access URL");return resolveSandboxBrowserAccess()}async function collectVersions(includeInstallationInfo=!1){let browserAccess=resolveBrowserAccessCapability(),info={nativeHost:NATIVE_HOST_VERSION,extension:extensionVersion,browser:null,...browserAccess?{browserAccess}:{}};if(extensionVersion!==null)try{let browserInfo=await sendRequestToExtension("get_browser_info",{},3e3,!0);browserInfo?.userAgent&&(info.browser=extractChromeVersion(browserInfo.userAgent)),browserInfo?.extensionVersion&&(info.extension=browserInfo.extensionVersion),includeInstallationInfo&&(browserInfo?.extensionId&&(info.extensionId=browserInfo.extensionId),(typeof browserInfo?.setupManagedPath=="string"||browserInfo?.setupManagedPath===null)&&(info.setupManagedPath=browserInfo.setupManagedPath))}catch{}if(!info.browser){let cdpBrowser=await fetchCdpBrowserVersion();cdpBrowser&&(info.browser=extractChromeVersion(cdpBrowser))}return info}function buildVersionWarning(clientVersion){let versions=[clientVersion?{name:"client",version:clientVersion}:null,{name:"native-host",version:NATIVE_HOST_VERSION},extensionVersion?{name:"extension",version:extensionVersion}:null].filter(Boolean);return new Set(versions.map(v=>majorMinor(v.version))).size<=1?null:["⚠️ Mearl version mismatch detected:",versions.map(v=>` - ${v.name}: ${v.version}`).join(`
870
+ mearl-native-host --version`)}!cliArg&&process.stdin.isTTY&&(printCliHelp(),process.exit(0));var runtimeArgs={browserId:"cdp",browserHeadless:!1,browserName:"CDP",cdpPort:9222,daemon:!1,discoverCdp:!1,help:!1,skipBrowserRegistration:!1,version:!1};if(cliArgs.length>0)try{runtimeArgs=await parseNativeHostRuntimeArgs(cliArgs)}catch(error48){console.error(`Error: ${error48 instanceof Error?error48.message:String(error48)}`),printCliHelp(),process.exit(2)}runtimeArgs.version&&(console.log(NATIVE_HOST_VERSION),process.exit(0));runtimeArgs.help&&(printCliHelp(),process.exit(0));var isDaemonMode=runtimeArgs.daemon,discoverCdp=runtimeArgs.discoverCdp,skipBrowserRegistration=runtimeArgs.skipBrowserRegistration,CDP_ENDPOINT_FILE=runtimeArgs.cdpEndpointFile,CDP_PORT=runtimeArgs.cdpPort,CDP_USER_DATA_DIR=runtimeArgs.cdpUserDataDir,BROWSER_HEADLESS=runtimeArgs.browserHeadless,CDP_BROWSER_ID=runtimeArgs.browserId,CDP_BROWSER_NAME=runtimeArgs.browserName,CDP_ENDPOINT_SOURCE=cliArgs.some(argument=>["--cdp-port","--cdp-user-data-dir","--cdp-endpoint-file"].some(option=>argument===option||argument.startsWith(`${option}=`)))?"command-line":"built-in default";function describeCdpEndpoint(){return CDP_ENDPOINT_FILE?`endpoint-file (source=${CDP_ENDPOINT_SOURCE})`:`127.0.0.1:${CDP_PORT} (source=${CDP_ENDPOINT_SOURCE})`}function oneLineError(value){return value.replace(/[\r\n]+/g," ").trim().slice(0,500)}function socketPathFor(suffix){return process.platform==="win32"?`\\\\.\\pipe\\mearl-agent${suffix}`:path18.join(os10.tmpdir(),`mearl-agent${suffix}.sock`)}var LEGACY_SOCKET_PATH=socketPathFor(""),INSTANCE_SOCKET_PATH=socketPathFor(`-${process.pid}`),LOG_FILE=path18.join(os10.tmpdir(),"mearl-native-host.log"),DEFAULT_TIMEOUT_MS=15e3,INVENTORY_IDLE_EXIT_MS=1e3,DISCOVERY_REQUEST_IDLE_EXIT_MS=5e3,MAX_SOCKET_BUFFER_SIZE2=64*1024*1024,extensionVersion=null,versionWarningEmitted=!1,cdpPermissionNoticeLogged=!1,EXTENSION_INSTALL_URL="https://chromewebstore.google.com/detail/mearl/aoehhjnofngknnjefamjbplchbolghkm";function majorMinor(version2){let parts=version2.split(".");return parts.length>=2?`${parts[0]}.${parts[1]}`:version2}function extractChromeVersion(input){let match=/Chrome\/([\d.]+)/.exec(input);return match?match[1].split(".").slice(0,3).join("."):null}async function fetchCdpBrowserVersion(){if(CDP_ENDPOINT_FILE)try{return(await(await getCdpSession().getBrowserClient()).sendCommand("Browser.getVersion",{},5e3)).product??null}catch{return null}let port=readDevToolsActivePort(CDP_USER_DATA_DIR)?.port??CDP_PORT;return new Promise(resolve2=>{let req=http4.get(`http://localhost:${port}/json/version`,res=>{let data="";res.on("data",chunk=>data+=chunk),res.on("end",()=>{try{let info=JSON.parse(data);resolve2(info.Browser??null)}catch{resolve2(null)}})});req.on("error",()=>resolve2(null)),req.setTimeout(2e3,()=>{req.destroy(),resolve2(null)})})}async function getCurrentBrowserUserAgent(){if(extensionVersion!==null)try{let result=await sendRequestToExtension("get_browser_info",{},3e3,!0);if(result.userAgent?.trim())return result.userAgent}catch{}try{let result=await(await getCdpSession().getBrowserClient()).sendCommand("Browser.getVersion",{},5e3);if(result.userAgent?.trim())return result.userAgent}catch{}throw new Error("Could not determine the control browser user agent for userAgentMode=desktop")}function currentBrowserSupportsSandboxAccess(){return!BROWSER_HEADLESS}function resolveBrowserAccessCapability(){return currentBrowserSupportsSandboxAccess()?resolveSandboxBrowserAccessCapability():null}async function resolveBrowserAccess(){if(!resolveBrowserAccessCapability())throw new Error("The selected browser does not expose a browser access URL");return resolveSandboxBrowserAccess()}async function collectVersions(includeInstallationInfo=!1){let browserAccess=resolveBrowserAccessCapability(),info={nativeHost:NATIVE_HOST_VERSION,extension:extensionVersion,browser:null,...browserAccess?{browserAccess}:{}};if(extensionVersion!==null)try{let browserInfo=await sendRequestToExtension("get_browser_info",{},3e3,!0);browserInfo?.userAgent&&(info.browser=extractChromeVersion(browserInfo.userAgent)),browserInfo?.extensionVersion&&(info.extension=browserInfo.extensionVersion),includeInstallationInfo&&(browserInfo?.extensionId&&(info.extensionId=browserInfo.extensionId),(typeof browserInfo?.setupManagedPath=="string"||browserInfo?.setupManagedPath===null)&&(info.setupManagedPath=browserInfo.setupManagedPath))}catch{}if(!info.browser){let cdpBrowser=await fetchCdpBrowserVersion();cdpBrowser&&(info.browser=extractChromeVersion(cdpBrowser))}return info}function buildVersionWarning(clientVersion){let versions=[clientVersion?{name:"client",version:clientVersion}:null,{name:"native-host",version:NATIVE_HOST_VERSION},extensionVersion?{name:"extension",version:extensionVersion}:null].filter(Boolean);return new Set(versions.map(v=>majorMinor(v.version))).size<=1?null:["⚠️ Mearl version mismatch detected:",versions.map(v=>` - ${v.name}: ${v.version}`).join(`
870
871
  `),"","This may cause unexpected behavior. To update:"," npx @mearl/setup update --local",` Browser extension: ${EXTENSION_INSTALL_URL}`].join(`
871
872
  `)}var pendingRequests=new Map,nativeMessageBuffer=Buffer.alloc(0),socketServer=null,legacyServer=null,inventoryExitTimer=null,cdpRegistrationTimer=null,cdpBrowserPublished=!1;function cancelInventoryExit(){inventoryExitTimer&&(clearTimeout(inventoryExitTimer),inventoryExitTimer=null)}function scheduleInventoryExit(delayMs=INVENTORY_IDLE_EXIT_MS){cancelInventoryExit(),inventoryExitTimer=setTimeout(()=>cleanupAndExit(0),delayMs),inventoryExitTimer.unref()}var cdpSession=null,cdpAutoReconnectEnabled=!0;function getCdpSession(){return cdpAutoReconnectEnabled=!0,cdpSession||(cdpSession=CDP_ENDPOINT_FILE?new CdpSession({endpointResolver:async()=>{let endpoint=fs18.readFileSync(CDP_ENDPOINT_FILE,"utf8").trim(),url2=new URL(endpoint);if(url2.protocol!=="ws:"&&url2.protocol!=="wss:")throw new Error(`Unsupported CDP WebSocket protocol: ${url2.protocol}`);return url2.toString()}}):new CdpSession({port:CDP_PORT,userDataDir:CDP_USER_DATA_DIR})),cdpSession}function log(...args){let msg=`[${new Date().toISOString()}] [NativeHost] ${args.join(" ")}
872
873
  `;try{fs18.appendFileSync(LOG_FILE,msg)}catch{}}function sendToExtension(message){let json2=JSON.stringify(message),length=Buffer.byteLength(json2,"utf-8"),header=Buffer.alloc(4);header.writeUInt32LE(length,0),process.stdout.write(header),process.stdout.write(json2)}var nativeHostUpdateCoordinator=new NativeHostUpdateCoordinator({hostVersion:NATIVE_HOST_VERSION,log,runUpdate:targetVersion=>runNativeHostUpdate(targetVersion),requestRestart:()=>{restartAfterUpdate()}}),agentChatManager=null,agentSkillManager=new AgentSkillManager;function getAgentChatManager(){return agentChatManager||(agentChatManager=new AgentChatManager([new CodexAgentProvider(log,NATIVE_HOST_VERSION,INSTANCE_SOCKET_PATH),new QoderAgentProvider(log,NATIVE_HOST_VERSION)],event=>{sendToExtension({type:"agent_chat_event",data:event})})),agentChatManager}var agentServiceHandlers={agent_chat_pick_directory:async()=>({path:await pickWorkspaceDirectory()}),agent_chat_status:()=>getAgentChatManager().getStatus(),agent_chat_prepare:async data=>(await getAgentChatManager().prepare(data),{ok:!0}),agent_chat_list_sessions:data=>getAgentChatManager().listSessions(data),agent_chat_start:data=>getAgentChatManager().startSession(data),agent_chat_send:data=>getAgentChatManager().sendMessage(data),agent_chat_interrupt:async data=>(await getAgentChatManager().interrupt(data),{ok:!0}),agent_chat_close:async data=>(await getAgentChatManager().closeSession(data),{ok:!0}),agent_chat_events:data=>getAgentChatManager().getEvents(data),agent_chat_refresh:data=>getAgentChatManager().refreshSession(data),agent_chat_open_app:async data=>(await getAgentChatManager().openSession(data),{ok:!0}),agent_chat_respond:data=>(getAgentChatManager().respondToRequest(data),{ok:!0}),agent_skills_installed:async data=>{let[cli,skills]=await Promise.all([agentSkillManager.getStatus(),getAgentChatManager().listSkills(data)]);return{cli,skills}},agent_skills_read:data=>getAgentChatManager().readSkill(data),agent_skills_install:data=>agentSkillManager.install(data),agent_skills_check_updates:data=>agentSkillManager.checkUpdates(data),agent_skills_update:data=>agentSkillManager.update(data),agent_skills_uninstall:data=>agentSkillManager.uninstall(data)};function dispatchAgentServiceAction(action,request){let handler=agentServiceHandlers[action];return Promise.resolve(handler(request))}var browserProviderCoordinator=null;function getBrowserProviderCoordinator(){if(browserProviderCoordinator)return browserProviderCoordinator;let runtimes=createBuiltinBrowserProviders({nativeHostScript:fileURLToPath3(import.meta.url),exportCookies:async domains=>extensionVersion!==null?(await sendRequestToExtension("__export_cookies",{domains},2e4,!0)).cookies??[]:cdpExportCookies(getCdpSession(),domains),log});return browserProviderCoordinator=new BrowserProviderCoordinator(runtimes,{exportCookies:async domains=>extensionVersion!==null?(await sendRequestToExtension("__export_cookies",{domains},2e4,!0)).cookies??[]:cdpExportCookies(getCdpSession(),domains),getBrowserUserAgent:getCurrentBrowserUserAgent}),browserProviderCoordinator}async function launchBrowser(data){return getBrowserProviderCoordinator().launch(data)}async function closeBrowser(data){let selector=String(data?.browser??data?.browserId??data?.name??"").trim();if(!selector)throw new Error("browser is required");return getBrowserProviderCoordinator().close(selector,data?.deleteProfile===!0)}async function getManagedBrowserAccess(data){let selector=String(data?.browser??data?.browserId??"").trim();if(!selector)throw new Error("browser is required");return(await getBrowserProviderCoordinator().access(selector)).browserAccess}function appendWarnings(result,warnings){let merged=[...new Set([...result.warnings??[],...warnings])];return{...result,...merged.length>0?{warnings:merged}:{}}}async function handleExtensionControlMessage(message){let{id,action,data={}}=message;if(isAgentServiceAction(action)){let result=await dispatchAgentServiceAction(action,data);sendToExtension({id,success:!0,data:result});return}if(action==="browser_list"){let providerWarnings=await ensureInstalledProvidersRunning(),inventory=await listBrowserInventory(getBrowserProviderCoordinator().providerRuntimes);sendToExtension({id,success:!0,data:appendWarnings(inventory,providerWarnings)});return}if(action==="browser_provider_list"){sendToExtension({id,success:!0,data:getBrowserProviderCoordinator().definitions()});return}if(action==="browser_launch"){let result=await launchBrowser(data);sendToExtension({id,success:!0,data:result});return}if(action==="browser_close"){let result=await closeBrowser(data);sendToExtension({id,success:!0,data:result});return}if(action==="browser_manager_release"){let selector=String(data?.browser??data?.browserId??"").trim();if(!selector)throw new Error("browser is required");let result=await getBrowserProviderCoordinator().detach(selector);sendToExtension({id,success:!0,data:result});return}if(action==="browser_manager_start"||action==="browser_manager_sync_cookies"){let selector=String(data?.browser??"").trim();if(!selector)throw new Error("browser is required");let coordinator=getBrowserProviderCoordinator(),result=action==="browser_manager_start"?await coordinator.start(selector):await coordinator.syncCookies(selector,data?.scope);sendToExtension({id,success:!0,data:result});return}if(action==="get_browser_access_url"){let browserAccess=await getManagedBrowserAccess(data);sendToExtension({id,success:!0,data:{browserAccess}});return}if(action==="browser_provider_configure"){if(typeof data?.provider!="string"||!data.provider.trim())throw new Error("provider is required");let result=await getBrowserProviderCoordinator().configure(data.provider,data.options);sendToExtension({id,success:!0,data:result});return}if(action==="start_cloud_connector"){let serverUrl=data?.serverUrl;if(!serverUrl||typeof serverUrl!="string"){sendToExtension({id,success:!1,error:"serverUrl is required"});return}let result=await startCloudConnector(serverUrl);sendToExtension({id,success:result.success,data:result,error:result.error});return}if(action==="stop_cloud_connector"){let serverUrl=data?.serverUrl;if(!serverUrl||typeof serverUrl!="string"){sendToExtension({id,success:!1,error:"serverUrl is required"});return}let result=stopCloudConnector(serverUrl);sendToExtension({id,success:result.success,data:result,error:result.error});return}if(action==="list_cloud_connectors"){sendToExtension({id,success:!0,data:listCloudConnectors()});return}if(action==="update_setup_extension"){let result=await updateSetupManagedExtension({currentVersion:data?.currentVersion,setupManagedPath:data?.setupManagedPath});sendToExtension({id,success:!0,data:result});return}sendToExtension({id,success:!1,error:`Unknown extension action: ${action}`})}function handleExtensionMessage(message){if(message&&message.type==="ping"){message.version&&(extensionVersion=message.version,log(`Extension version: ${extensionVersion}, Native Host version: ${NATIVE_HOST_VERSION}`)),setAnalyticsClientId(message.analyticsClientId),registerBrowser({browserId:typeof message.browserId=="string"?message.browserId:"default",socketPath:INSTANCE_SOCKET_PATH,browserName:typeof message.browserName=="string"?message.browserName:"Browser",nativeHostVersion:NATIVE_HOST_VERSION,transport:"extension",extensionVersion:extensionVersion??void 0}),sendToExtension({type:"pong",timestamp:Date.now(),version:NATIVE_HOST_VERSION}),nativeHostUpdateCoordinator.evaluate(message.version,message.checkForUpdates);return}if(message&&message.type==="browser_focus"){touchFocus();return}if(!message||typeof message!="object"||!message.id)return;let pending=pendingRequests.get(message.id);if(!pending){message.action&&handleExtensionControlMessage(message).catch(error48=>{sendToExtension({id:message.id,success:!1,error:error48 instanceof Error?error48.message:String(error48)})});return}clearTimeout(pending.timer),pendingRequests.delete(message.id),message.success?pending.resolve(message.data):pending.reject(new Error(message.error||"Unknown error from extension"))}function processNativeMessages(){for(;nativeMessageBuffer.length>=4;){let length=nativeMessageBuffer.readUInt32LE(0);if(nativeMessageBuffer.length<4+length)return;let jsonBytes=nativeMessageBuffer.subarray(4,4+length);nativeMessageBuffer=nativeMessageBuffer.subarray(4+length);try{let message=JSON.parse(jsonBytes.toString("utf-8"));handleExtensionMessage(message)}catch(error48){log("Failed to parse extension message:",String(error48))}}}function setupNativeMessageInput(){process.stdin.on("readable",()=>{let chunk;for(;(chunk=process.stdin.read())!==null;)nativeMessageBuffer=Buffer.concat([nativeMessageBuffer,chunk]),processNativeMessages()}),process.stdin.on("end",()=>{log("Extension disconnected (stdin end)"),cleanupAndExit(0)}),process.stdin.on("error",error48=>{log("stdin error:",String(error48)),cleanupAndExit(1)})}function sendRequestToExtension(action,data,timeoutMs,trustedInternal=!1,controlSource="local"){let id=`${Date.now()}_${Math.random().toString(36).slice(2,10)}`;return new Promise((resolve2,reject)=>{let timer=setTimeout(()=>{pendingRequests.delete(id),reject(new Error(`Request timeout after ${timeoutMs}ms`))},timeoutMs);pendingRequests.set(id,{resolve:resolve2,reject,timer}),sendToExtension(createExtensionRequestMessage(id,action,data,trustedInternal,controlSource))})}function toTimeoutMs(action,data){if(action==="send_request"||action==="__send_request_with_files")return Number(data&&data.timeout?data.timeout:3e4)+5e3;if(action==="send_mtop_request")return Number(data&&data.timeout?data.timeout:1e4)+5e3;if(action==="page_wait")return Number(data?.time??data?.timeout??1e4)+5e3;if(action==="tab_open")return 4e4;if(action==="run_actions"){let timeoutMs=(Array.isArray(data?.actions)?data.actions:[{}]).reduce((total,step)=>{let stepAction=String(step?.action??"");return!stepAction||stepAction==="run_actions"?total+DEFAULT_TIMEOUT_MS:total+toTimeoutMs(stepAction,step?.data??{})},0);return Math.max(DEFAULT_TIMEOUT_MS,timeoutMs)}if(shouldObservePageAction(action,data)){let observationMs=Math.min(Math.max(Number(data?.observe?.timeoutMs??3e3),500),3e4),navigationGraceMs=Math.min(Math.max(Number(data?.observe?.navigationGraceMs??1e3),0),5e3),navigationTimeoutMs=Math.min(Math.max(Number(data?.observe?.navigationTimeoutMs??15e3),1e3),3e4);return Math.max(DEFAULT_TIMEOUT_MS,observationMs+navigationGraceMs+4e3+navigationTimeoutMs+5e3)}return DEFAULT_TIMEOUT_MS}async function handleSocketRequest(socket,line){let request;try{request=JSON.parse(line)}catch{socket.write(JSON.stringify({id:"",success:!1,error:`Invalid JSON request: ${line}`})+`
@@ -879,7 +880,7 @@ Examples:
879
880
  `);return}if(action==="get_browser_access_url"){try{let browserAccess=data?.browser?await getManagedBrowserAccess(data):await resolveBrowserAccess();socket.write(JSON.stringify({id,success:!0,data:{browserAccess}})+`
880
881
  `)}catch(error48){socket.write(JSON.stringify({id,success:!1,error:error48 instanceof Error?error48.message:String(error48)})+`
881
882
  `)}return}if(isInternalExtensionAction(action)){socket.write(JSON.stringify({id,success:!1,error:"Internal action is not available to clients"})+`
882
- `);return}if(action==="browser_list"){let providerWarnings=await ensureInstalledProvidersRunning();discoverCdp&&cancelInventoryExit();let discovered=isDaemonMode&&!skipBrowserRegistration?await ensureDiscoverableCdpBrowser({isPublished:()=>cdpBrowserPublished,isAvailable:()=>getCdpSession().isAvailable(),publish:publishDaemonBrowser,monitor:monitorConnectedDaemonBrowser}):!1,inventory=await listBrowserInventory(getBrowserProviderCoordinator().providerRuntimes),data2=appendWarnings(inventory,providerWarnings),response=JSON.stringify({id,success:!0,data:data2})+`
883
+ `);return}if(action==="browser_list"){let providerWarnings=await ensureInstalledProvidersRunning();discoverCdp&&cancelInventoryExit();let shouldDiscover=isDaemonMode&&!skipBrowserRegistration,discoveryProbeError,discovered=shouldDiscover?await ensureDiscoverableCdpBrowser({isPublished:()=>cdpBrowserPublished,isAvailable:async()=>{let probe=await getCdpSession().probeAvailability();return discoveryProbeError=probe.error?oneLineError(probe.error):void 0,log(`CDP discovery probe ${describeCdpEndpoint()} -> ${probe.available?"ok":`fail (${discoveryProbeError||"unknown error"})`}`),probe.available},publish:publishDaemonBrowser,monitor:monitorConnectedDaemonBrowser}):!1,inventory=await listBrowserInventory(getBrowserProviderCoordinator().providerRuntimes),discoveryWarnings=shouldDiscover&&!discovered?[`CDP discovery probe ${describeCdpEndpoint()} failed: ${discoveryProbeError||"unknown error"}`]:[],data2=appendWarnings(inventory,[...providerWarnings,...discoveryWarnings]),response=JSON.stringify({id,success:!0,data:data2})+`
883
884
  `;skipBrowserRegistration||discoverCdp&&!discovered?(socket.end(response),scheduleInventoryExit()):socket.write(response);return}if(action==="browser_close"){try{let result=await closeBrowser(data);socket.write(JSON.stringify({id,success:!0,data:result})+`
884
885
  `)}catch(error48){socket.write(JSON.stringify({id,success:!1,error:error48 instanceof Error?error48.message:String(error48)})+`
885
886
  `)}return}if(action==="browser_release"){let startedAt2=Date.now(),affectedTabIds=new Set,transports=[],failures=[],released=!0,hadActiveControl=!1;try{let releaseErrors=[];if(extensionVersion!==null)try{let result=await sendRequestToExtension(action,data,toTimeoutMs(action,data));released=released&&result?.released!==!1,hadActiveControl=hadActiveControl||result?.hadActiveControl===!0,result?.hadActiveControl&&transports.push("extension");for(let tabId of result?.affectedTabIds??[])affectedTabIds.add(tabId);Array.isArray(result?.failures)&&failures.push(...result.failures)}catch(error48){releaseErrors.push(`extension: ${error48 instanceof Error?error48.message:String(error48)}`)}if(cdpSession){let session=cdpSession;cdpSession=null;try{let result=await releaseCdpControl(session);released=released&&result.released,hadActiveControl=hadActiveControl||result.hadActiveControl,result.hadActiveControl&&transports.push("cdp");for(let tabId of result.affectedTabIds)affectedTabIds.add(tabId)}catch(error48){session.close(),releaseErrors.push(`cdp: ${error48 instanceof Error?error48.message:String(error48)}`)}}if(cdpAutoReconnectEnabled=!1,releaseErrors.length>0)throw new Error(`Failed to fully release browser control (${releaseErrors.join("; ")})`);trackAction(action,{success:released,transport:transports.join("+")||"none",duration_ms:Date.now()-startedAt2,extension_version:extensionVersion??"not_connected"});let response=JSON.stringify({id,success:!0,data:{released,hadActiveControl,transports,affectedTabIds:Array.from(affectedTabIds).sort((a,b)=>a-b),...failures.length>0&&{failures}}})+`
@@ -889,4 +890,4 @@ Examples:
889
890
  `)}return}if(!isExtensionBrowserAction(action)&&(typeof action!="string"||!action.startsWith("__"))){socket.write(JSON.stringify({id,success:!1,error:`Unsupported action: ${String(action)}`})+`
890
891
  `);return}let useExtension=!(request.transport==="cdp")&&extensionVersion!==null,transport=useExtension?"extension":"cdp",startedAt=Date.now();try{let result;useExtension?action==="send_request"&&hasSendRequestFiles(data)?result=await sendRequestWithTransferredFiles(data,(internalAction,payload,timeoutMs)=>sendRequestToExtension(internalAction,payload,timeoutMs,!0,controlSource)):action==="run_actions"&&hasRunActionsSendRequestFiles(data)?result=await sendRunActionsWithTransferredFiles(data,(internalAction,payload,timeoutMs)=>sendRequestToExtension(internalAction,payload,timeoutMs,!0,controlSource),transformed=>toTimeoutMs("run_actions",transformed)):result=await sendRequestToExtension(action,data,toTimeoutMs(action,data),!1,controlSource):(cdpPermissionNoticeLogged||(cdpPermissionNoticeLogged=!0,log("CDP mode: domain permission checks are not enforced — all actions run without domain authorization")),result=await handleViaCdp(action,data,toTimeoutMs(action,data),controlSource)),trackAction(action,{success:!0,transport,duration_ms:Date.now()-startedAt,extension_version:extensionVersion??"not_connected"});let response={id,success:!0,data:result};if(!versionWarningEmitted){let versionWarning=buildVersionWarning(clientVersion);versionWarning&&(versionWarningEmitted=!0,response.versionWarning=versionWarning)}socket.write(JSON.stringify(response)+`
891
892
  `)}catch(error48){let message=error48 instanceof Error?error48.message:String(error48);trackAction(action,{success:!1,transport,duration_ms:Date.now()-startedAt,error_code:classifyAnalyticsError(error48),extension_version:extensionVersion??"not_connected"}),socket.write(JSON.stringify({id,success:!1,error:message})+`
892
- `)}}async function handleSocketLine(socket,line){await handleSocketRequest(socket,line)}async function handleViaCdp(action,data,_timeoutMs,controlSource){if(action==="set_rule"||action==="get_rules")throw new Error(`${action} requires the Mearl browser extension. Install it from https://chromewebstore.google.com/detail/mearl/aoehhjnofngknnjefamjbplchbolghkm`);if(!getRegisteredActionNames().includes(action))throw new Error(`Action "${action}" is not supported in CDP mode`);if(!await getCdpSession().isAvailable())throw CDP_ENDPOINT_FILE?new Error("The remote CDP endpoint is not available"):new Error(`Chrome DevTools remote debugging is not available on port ${CDP_PORT}. Enable it via chrome://inspect/#remote-debugging (Chrome 145+) or install the Mearl extension.`);return isDaemonMode&&!skipBrowserRegistration&&(publishDaemonBrowser(),shouldReconnectDaemonBrowser()||monitorConnectedDaemonBrowser()),shouldObservePageAction(action,data)?cdpObservedPageAction(getCdpSession(),action,data,controlSource):dispatchCdpAction(getCdpSession(),action,data,controlSource)}function onSocketConnection(socket){let lineBuffer=new Utf8LineBuffer(MAX_SOCKET_BUFFER_SIZE2);socket.on("data",chunk=>{let result=lineBuffer.push(chunk);if(result.overflow){log(`socket request exceeded ${MAX_SOCKET_BUFFER_SIZE2} bytes; closing connection`),socket.destroy();return}for(let line of result.lines)line.trim()&&handleSocketLine(socket,line)}),socket.on("error",error48=>{log("socket error:",String(error48))})}function isPathAlive(socketPath){return new Promise(resolve2=>{if(process.platform!=="win32"&&!fs18.existsSync(socketPath)){resolve2(!1);return}let client2=net4.createConnection(socketPath),done=alive=>{client2.removeAllListeners(),client2.destroy(),resolve2(alive)},timer=setTimeout(()=>done(!1),500);client2.on("connect",()=>{clearTimeout(timer),done(!0)}),client2.on("error",()=>{clearTimeout(timer),done(!1)})})}function listenOn(socketPath){return new Promise((resolve2,reject)=>{if(process.platform!=="win32"&&fs18.existsSync(socketPath))try{fs18.unlinkSync(socketPath)}catch{}let server=net4.createServer(onSocketConnection);server.once("error",reject),server.listen(socketPath,()=>{if(process.platform!=="win32")try{fs18.chmodSync(socketPath,384)}catch(error48){server.close();try{fs18.unlinkSync(socketPath)}catch{}reject(error48);return}server.removeListener("error",reject),server.on("error",error48=>log("socket server error:",String(error48))),log(`listening on ${socketPath}`),resolve2(server)})})}async function tryBindLegacySocket(){if(await isPathAlive(LEGACY_SOCKET_PATH)){log("legacy socket already owned by a live host, skipping");return}try{legacyServer=await listenOn(LEGACY_SOCKET_PATH)}catch(error48){log("legacy socket bind failed (raced):",String(error48)),legacyServer=null}}function releaseLegacySocket(){if(!legacyServer)return;let server=legacyServer;legacyServer=null;try{server.close()}catch{}if(process.platform!=="win32")try{fs18.existsSync(LEGACY_SOCKET_PATH)&&fs18.unlinkSync(LEGACY_SOCKET_PATH)}catch{}}async function startSocketServer(){socketServer=await listenOn(INSTANCE_SOCKET_PATH),skipBrowserRegistration||await tryBindLegacySocket()}function cleanupInstanceSocketFile(){if(process.platform!=="win32")try{fs18.existsSync(INSTANCE_SOCKET_PATH)&&fs18.unlinkSync(INSTANCE_SOCKET_PATH)}catch(error48){log("cleanup socket file failed:",String(error48))}}function cleanupAndExit(code){cancelInventoryExit(),cdpRegistrationTimer&&(clearInterval(cdpRegistrationTimer),cdpRegistrationTimer=null),cdpSession?.close(),agentChatManager?.dispose(),agentChatManager=null,unregisterBrowser(),cdpBrowserPublished=!1,releaseLegacySocket();let finish=()=>{cleanupInstanceSocketFile(),process.exit(code)};if(socketServer){socketServer.close(finish),socketServer=null;return}finish()}function restartAfterUpdate(){setTimeout(()=>process.exit(0),2e3).unref(),cleanupAndExit(0)}function publishDaemonBrowser(){cancelInventoryExit(),!cdpBrowserPublished&&(registerBrowser({browserId:CDP_BROWSER_ID,socketPath:INSTANCE_SOCKET_PATH,browserName:CDP_BROWSER_NAME,nativeHostVersion:NATIVE_HOST_VERSION,transport:"cdp",lastFocusedAt:CDP_BROWSER_ID.startsWith("managed:")?0:void 0}),cdpBrowserPublished=!0)}function unpublishDaemonBrowser(){cdpBrowserPublished&&(unregisterBrowser(),cdpBrowserPublished=!1)}function shouldReconnectDaemonBrowser(){return!!CDP_ENDPOINT_FILE||CDP_BROWSER_ID.startsWith("managed:")}function monitorConnectedDaemonBrowser(){cdpRegistrationTimer||(cdpRegistrationTimer=setInterval(()=>{getCdpSession().hasActiveConnections()||(unpublishDaemonBrowser(),cdpRegistrationTimer&&clearInterval(cdpRegistrationTimer),cdpRegistrationTimer=null)},2e3),cdpRegistrationTimer.unref())}async function monitorReconnectableDaemonBrowser(){let checking=!1,refresh=async()=>{if(!checking&&cdpAutoReconnectEnabled){checking=!0;try{await getCdpSession().isAvailable()?publishDaemonBrowser():unpublishDaemonBrowser()}finally{checking=!1}}};await refresh(),cdpRegistrationTimer=setInterval(()=>{refresh()},2e3),cdpRegistrationTimer.unref()}async function main(){if(initBrowserRegistry({log}),pruneDeadBrowsers(),initCloudConnector({log,isDaemonMode,sendToExtension,version:NATIVE_HOST_VERSION}),isDaemonMode?log(`running in ${skipBrowserRegistration?"browser inventory":discoverCdp?"CDP discovery":"CDP"} daemon mode, pid=${process.pid}, version=${NATIVE_HOST_VERSION}`):setupNativeMessageInput(),await startSocketServer(),shouldExitWithoutLegacySocket(runtimeArgs,!!legacyServer)){cleanupAndExit(0);return}discoverCdp&&scheduleInventoryExit(DISCOVERY_REQUEST_IDLE_EXIT_MS),isDaemonMode&&!skipBrowserRegistration&&shouldReconnectDaemonBrowser()&&await monitorReconnectableDaemonBrowser(),process.on("SIGINT",()=>cleanupAndExit(0)),process.on("SIGTERM",()=>cleanupAndExit(0)),process.on("uncaughtException",error48=>{log("uncaughtException:",String(error48)),cleanupAndExit(1)}),process.on("unhandledRejection",error48=>{log("unhandledRejection:",String(error48)),cleanupAndExit(1)})}main().catch(error48=>{log("main() failed:",String(error48)),process.exit(1)});
893
+ `)}}async function handleSocketLine(socket,line){await handleSocketRequest(socket,line)}async function handleViaCdp(action,data,_timeoutMs,controlSource){if(action==="set_rule"||action==="get_rules")throw new Error(`${action} requires the Mearl browser extension. Install it from https://chromewebstore.google.com/detail/mearl/aoehhjnofngknnjefamjbplchbolghkm`);if(!getRegisteredActionNames().includes(action))throw new Error(`Action "${action}" is not supported in CDP mode`);if(!await getCdpSession().isAvailable())throw CDP_ENDPOINT_FILE?new Error("The remote CDP endpoint is not available"):new Error(`Chrome DevTools remote debugging is not available on port ${CDP_PORT}. Enable it via chrome://inspect/#remote-debugging (Chrome 145+) or install the Mearl extension.`);return isDaemonMode&&!skipBrowserRegistration&&(publishDaemonBrowser(),shouldReconnectDaemonBrowser()||monitorConnectedDaemonBrowser()),shouldObservePageAction(action,data)?cdpObservedPageAction(getCdpSession(),action,data,controlSource):dispatchCdpAction(getCdpSession(),action,data,controlSource)}function onSocketConnection(socket){let lineBuffer=new Utf8LineBuffer(MAX_SOCKET_BUFFER_SIZE2);socket.on("data",chunk=>{let result=lineBuffer.push(chunk);if(result.overflow){log(`socket request exceeded ${MAX_SOCKET_BUFFER_SIZE2} bytes; closing connection`),socket.destroy();return}for(let line of result.lines)line.trim()&&handleSocketLine(socket,line)}),socket.on("error",error48=>{log("socket error:",String(error48))})}function isPathAlive(socketPath){return new Promise(resolve2=>{if(process.platform!=="win32"&&!fs18.existsSync(socketPath)){resolve2(!1);return}let client2=net4.createConnection(socketPath),done=alive=>{client2.removeAllListeners(),client2.destroy(),resolve2(alive)},timer=setTimeout(()=>done(!1),500);client2.on("connect",()=>{clearTimeout(timer),done(!0)}),client2.on("error",()=>{clearTimeout(timer),done(!1)})})}function listenOn(socketPath){return new Promise((resolve2,reject)=>{if(process.platform!=="win32"&&fs18.existsSync(socketPath))try{fs18.unlinkSync(socketPath)}catch{}let server=net4.createServer(onSocketConnection);server.once("error",reject),server.listen(socketPath,()=>{if(process.platform!=="win32")try{fs18.chmodSync(socketPath,384)}catch(error48){server.close();try{fs18.unlinkSync(socketPath)}catch{}reject(error48);return}server.removeListener("error",reject),server.on("error",error48=>log("socket server error:",String(error48))),log(`listening on ${socketPath}`),resolve2(server)})})}async function tryBindLegacySocket(){if(await isPathAlive(LEGACY_SOCKET_PATH)){log("legacy socket already owned by a live host, skipping");return}try{legacyServer=await listenOn(LEGACY_SOCKET_PATH)}catch(error48){log("legacy socket bind failed (raced):",String(error48)),legacyServer=null}}function releaseLegacySocket(){if(!legacyServer)return;let server=legacyServer;legacyServer=null;try{server.close()}catch{}if(process.platform!=="win32")try{fs18.existsSync(LEGACY_SOCKET_PATH)&&fs18.unlinkSync(LEGACY_SOCKET_PATH)}catch{}}async function startSocketServer(){socketServer=await listenOn(INSTANCE_SOCKET_PATH),skipBrowserRegistration||await tryBindLegacySocket()}function cleanupInstanceSocketFile(){if(process.platform!=="win32")try{fs18.existsSync(INSTANCE_SOCKET_PATH)&&fs18.unlinkSync(INSTANCE_SOCKET_PATH)}catch(error48){log("cleanup socket file failed:",String(error48))}}function cleanupAndExit(code){cancelInventoryExit(),cdpRegistrationTimer&&(clearInterval(cdpRegistrationTimer),cdpRegistrationTimer=null),cdpSession?.close(),agentChatManager?.dispose(),agentChatManager=null,unregisterBrowser(),cdpBrowserPublished=!1,releaseLegacySocket();let finish=()=>{cleanupInstanceSocketFile(),process.exit(code)};if(socketServer){socketServer.close(finish),socketServer=null;return}finish()}function restartAfterUpdate(){setTimeout(()=>process.exit(0),2e3).unref(),cleanupAndExit(0)}function publishDaemonBrowser(){cancelInventoryExit(),!cdpBrowserPublished&&(registerBrowser({browserId:CDP_BROWSER_ID,socketPath:INSTANCE_SOCKET_PATH,browserName:CDP_BROWSER_NAME,nativeHostVersion:NATIVE_HOST_VERSION,transport:"cdp",lastFocusedAt:CDP_BROWSER_ID.startsWith("managed:")?0:void 0}),cdpBrowserPublished=!0)}function unpublishDaemonBrowser(){cdpBrowserPublished&&(unregisterBrowser(),cdpBrowserPublished=!1)}function shouldReconnectDaemonBrowser(){return!!CDP_ENDPOINT_FILE||CDP_BROWSER_ID.startsWith("managed:")}function monitorConnectedDaemonBrowser(){cdpRegistrationTimer||(cdpRegistrationTimer=setInterval(()=>{getCdpSession().hasActiveConnections()||(unpublishDaemonBrowser(),cdpRegistrationTimer&&clearInterval(cdpRegistrationTimer),cdpRegistrationTimer=null)},2e3),cdpRegistrationTimer.unref())}async function monitorReconnectableDaemonBrowser(){let checking=!1,refresh=async()=>{if(!checking&&cdpAutoReconnectEnabled){checking=!0;try{await getCdpSession().isAvailable()?publishDaemonBrowser():unpublishDaemonBrowser()}finally{checking=!1}}};await refresh(),cdpRegistrationTimer=setInterval(()=>{refresh()},2e3),cdpRegistrationTimer.unref()}async function main(){if(initBrowserRegistry({log}),pruneDeadBrowsers(),initCloudConnector({log,isDaemonMode,sendToExtension,version:NATIVE_HOST_VERSION}),isDaemonMode?log(`running in ${skipBrowserRegistration?"browser inventory":discoverCdp?"CDP discovery":"CDP"} daemon mode, pid=${process.pid}, version=${NATIVE_HOST_VERSION}, cdp=${describeCdpEndpoint()}`):setupNativeMessageInput(),await startSocketServer(),shouldExitWithoutLegacySocket(runtimeArgs,!!legacyServer)){cleanupAndExit(0);return}discoverCdp&&scheduleInventoryExit(DISCOVERY_REQUEST_IDLE_EXIT_MS),isDaemonMode&&!skipBrowserRegistration&&shouldReconnectDaemonBrowser()&&await monitorReconnectableDaemonBrowser(),process.on("SIGINT",()=>cleanupAndExit(0)),process.on("SIGTERM",()=>cleanupAndExit(0)),process.on("uncaughtException",error48=>{log("uncaughtException:",String(error48)),cleanupAndExit(1)}),process.on("unhandledRejection",error48=>{log("unhandledRejection:",String(error48)),cleanupAndExit(1)})}main().catch(error48=>{log("main() failed:",String(error48)),process.exit(1)});