@vibelet/cli 0.1.3 → 0.1.4

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 (2) hide show
  1. package/dist/index.cjs +29 -29
  2. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -1,28 +1,28 @@
1
- "use strict";var iu=Object.create;var ai=Object.defineProperty;var ou=Object.getOwnPropertyDescriptor;var au=Object.getOwnPropertyNames;var lu=Object.getPrototypeOf,cu=Object.prototype.hasOwnProperty;var m=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var uu=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of au(e))!cu.call(t,s)&&s!==n&&ai(t,s,{get:()=>e[s],enumerable:!(r=ou(e,s))||r.enumerable});return t};var Ve=(t,e,n)=>(n=t!=null?iu(lu(t)):{},uu(e||!t||!t.__esModule?ai(n,"default",{value:t,enumerable:!0}):n,t));var ce=m((Kg,ui)=>{"use strict";var li=["nodebuffer","arraybuffer","fragments"],ci=typeof Blob<"u";ci&&li.push("blob");ui.exports={BINARY_TYPES:li,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:ci,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var At=m((Xg,un)=>{"use strict";var{EMPTY_BUFFER:du}=ce(),dr=Buffer[Symbol.species];function fu(t,e){if(t.length===0)return du;if(t.length===1)return t[0];let n=Buffer.allocUnsafe(e),r=0;for(let s=0;s<t.length;s++){let i=t[s];n.set(i,r),r+=i.length}return r<e?new dr(n.buffer,n.byteOffset,r):n}function di(t,e,n,r,s){for(let i=0;i<s;i++)n[r+i]=t[i]^e[i&3]}function fi(t,e){for(let n=0;n<t.length;n++)t[n]^=e[n&3]}function hu(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function fr(t){if(fr.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new dr(t):ArrayBuffer.isView(t)?e=new dr(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),fr.readOnly=!1),e}un.exports={concat:fu,mask:di,toArrayBuffer:hu,toBuffer:fr,unmask:fi};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");un.exports.mask=function(e,n,r,s,i){i<48?di(e,n,r,s,i):t.mask(e,n,r,s,i)},un.exports.unmask=function(e,n){e.length<32?fi(e,n):t.unmask(e,n)}}catch{}});var gi=m((Zg,pi)=>{"use strict";var hi=Symbol("kDone"),hr=Symbol("kRun"),pr=class{constructor(e){this[hi]=()=>{this.pending--,this[hr]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[hr]()}[hr](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[hi])}}};pi.exports=pr});var Ct=m((Qg,_i)=>{"use strict";var kt=require("zlib"),mi=At(),pu=gi(),{kStatusCode:yi}=ce(),gu=Buffer[Symbol.species],mu=Buffer.from([0,0,255,255]),fn=Symbol("permessage-deflate"),ue=Symbol("total-length"),Ye=Symbol("callback"),ge=Symbol("buffers"),Je=Symbol("error"),dn,gr=class{constructor(e,n,r){if(this._maxPayload=r|0,this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!n,this._deflate=null,this._inflate=null,this.params=null,!dn){let s=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;dn=new pu(s)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[Ye];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let n=this._options,r=e.find(s=>!(n.serverNoContextTakeover===!1&&s.server_no_context_takeover||s.server_max_window_bits&&(n.serverMaxWindowBits===!1||typeof n.serverMaxWindowBits=="number"&&n.serverMaxWindowBits>s.server_max_window_bits)||typeof n.clientMaxWindowBits=="number"&&!s.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return n.serverNoContextTakeover&&(r.server_no_context_takeover=!0),n.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof n.serverMaxWindowBits=="number"&&(r.server_max_window_bits=n.serverMaxWindowBits),typeof n.clientMaxWindowBits=="number"?r.client_max_window_bits=n.clientMaxWindowBits:(r.client_max_window_bits===!0||n.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(e){let n=e[0];if(this._options.clientNoContextTakeover===!1&&n.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!n.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(n.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&n.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return n}normalizeParams(e){return e.forEach(n=>{Object.keys(n).forEach(r=>{let s=n[r];if(s.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(s=s[0],r==="client_max_window_bits"){if(s!==!0){let i=+s;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${r}": ${s}`);s=i}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${s}`)}else if(r==="server_max_window_bits"){let i=+s;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${r}": ${s}`);s=i}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(s!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${s}`)}else throw new Error(`Unknown parameter "${r}"`);n[r]=s})}),e}decompress(e,n,r){dn.add(s=>{this._decompress(e,n,(i,o)=>{s(),r(i,o)})})}compress(e,n,r){dn.add(s=>{this._compress(e,n,(i,o)=>{s(),r(i,o)})})}_decompress(e,n,r){let s=this._isServer?"client":"server";if(!this._inflate){let i=`${s}_max_window_bits`,o=typeof this.params[i]!="number"?kt.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=kt.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[fn]=this,this._inflate[ue]=0,this._inflate[ge]=[],this._inflate.on("error",Su),this._inflate.on("data",Si)}this._inflate[Ye]=r,this._inflate.write(e),n&&this._inflate.write(mu),this._inflate.flush(()=>{let i=this._inflate[Je];if(i){this._inflate.close(),this._inflate=null,r(i);return}let o=mi.concat(this._inflate[ge],this._inflate[ue]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[ue]=0,this._inflate[ge]=[],n&&this.params[`${s}_no_context_takeover`]&&this._inflate.reset()),r(null,o)})}_compress(e,n,r){let s=this._isServer?"server":"client";if(!this._deflate){let i=`${s}_max_window_bits`,o=typeof this.params[i]!="number"?kt.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=kt.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[ue]=0,this._deflate[ge]=[],this._deflate.on("data",yu)}this._deflate[Ye]=r,this._deflate.write(e),this._deflate.flush(kt.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=mi.concat(this._deflate[ge],this._deflate[ue]);n&&(i=new gu(i.buffer,i.byteOffset,i.length-4)),this._deflate[Ye]=null,this._deflate[ue]=0,this._deflate[ge]=[],n&&this.params[`${s}_no_context_takeover`]&&this._deflate.reset(),r(null,i)})}};_i.exports=gr;function yu(t){this[ge].push(t),this[ue]+=t.length}function Si(t){if(this[ue]+=t.length,this[fn]._maxPayload<1||this[ue]<=this[fn]._maxPayload){this[ge].push(t);return}this[Je]=new RangeError("Max payload size exceeded"),this[Je].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[Je][yi]=1009,this.removeListener("data",Si),this.reset()}function Su(t){if(this[fn]._inflate=null,this[Je]){this[Ye](this[Je]);return}t[yi]=1007,this[Ye](t)}});var Ke=m((em,hn)=>{"use strict";var{isUtf8:vi}=require("buffer"),{hasBlob:_u}=ce(),vu=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function wu(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function mr(t){let e=t.length,n=0;for(;n<e;)if((t[n]&128)===0)n++;else if((t[n]&224)===192){if(n+1===e||(t[n+1]&192)!==128||(t[n]&254)===192)return!1;n+=2}else if((t[n]&240)===224){if(n+2>=e||(t[n+1]&192)!==128||(t[n+2]&192)!==128||t[n]===224&&(t[n+1]&224)===128||t[n]===237&&(t[n+1]&224)===160)return!1;n+=3}else if((t[n]&248)===240){if(n+3>=e||(t[n+1]&192)!==128||(t[n+2]&192)!==128||(t[n+3]&192)!==128||t[n]===240&&(t[n+1]&240)===128||t[n]===244&&t[n+1]>143||t[n]>244)return!1;n+=4}else return!1;return!0}function bu(t){return _u&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}hn.exports={isBlob:bu,isValidStatusCode:wu,isValidUTF8:mr,tokenChars:vu};if(vi)hn.exports.isValidUTF8=function(t){return t.length<24?mr(t):vi(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");hn.exports.isValidUTF8=function(e){return e.length<32?mr(e):t(e)}}catch{}});var wr=m((tm,Ai)=>{"use strict";var{Writable:Iu}=require("stream"),wi=Ct(),{BINARY_TYPES:xu,EMPTY_BUFFER:bi,kStatusCode:Eu,kWebSocket:Tu}=ce(),{concat:yr,toArrayBuffer:Au,unmask:ku}=At(),{isValidStatusCode:Cu,isValidUTF8:Ii}=Ke(),pn=Buffer[Symbol.species],Y=0,xi=1,Ei=2,Ti=3,Sr=4,_r=5,gn=6,vr=class extends Iu{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||xu[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[Tu]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=Y}_write(e,n,r){if(this._opcode===8&&this._state==Y)return r();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(r)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let r=this._buffers[0];return this._buffers[0]=new pn(r.buffer,r.byteOffset+e,r.length-e),new pn(r.buffer,r.byteOffset,e)}let n=Buffer.allocUnsafe(e);do{let r=this._buffers[0],s=n.length-e;e>=r.length?n.set(this._buffers.shift(),s):(n.set(new Uint8Array(r.buffer,r.byteOffset,e),s),this._buffers[0]=new pn(r.buffer,r.byteOffset+e,r.length-e)),e-=r.length}while(e>0);return n}startLoop(e){this._loop=!0;do switch(this._state){case Y:this.getInfo(e);break;case xi:this.getPayloadLength16(e);break;case Ei:this.getPayloadLength64(e);break;case Ti:this.getMask();break;case Sr:this.getData(e);break;case _r:case gn:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let n=this.consume(2);if((n[0]&48)!==0){let s=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(s);return}let r=(n[0]&64)===64;if(r&&!this._extensions[wi.extensionName]){let s=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(s);return}if(this._fin=(n[0]&128)===128,this._opcode=n[0]&15,this._payloadLength=n[1]&127,this._opcode===0){if(r){let s=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(s);return}if(!this._fragmented){let s=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(s);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let s=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(s);return}this._compressed=r}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let s=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(s);return}if(r){let s=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(s);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let s=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(s);return}}else{let s=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(s);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(n[1]&128)===128,this._isServer){if(!this._masked){let s=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(s);return}}else if(this._masked){let s=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(s);return}this._payloadLength===126?this._state=xi:this._payloadLength===127?this._state=Ei:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let n=this.consume(8),r=n.readUInt32BE(0);if(r>Math.pow(2,21)-1){let s=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(s);return}this._payloadLength=r*Math.pow(2,32)+n.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let n=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(n);return}this._masked?this._state=Ti:this._state=Sr}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Sr}getData(e){let n=bi;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}n=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&ku(n,this._mask)}if(this._opcode>7){this.controlMessage(n,e);return}if(this._compressed){this._state=_r,this.decompress(n,e);return}n.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(n)),this.dataMessage(e)}decompress(e,n){this._extensions[wi.extensionName].decompress(e,this._fin,(s,i)=>{if(s)return n(s);if(i.length){if(this._messageLength+=i.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let o=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");n(o);return}this._fragments.push(i)}this.dataMessage(n),this._state===Y&&this.startLoop(n)})}dataMessage(e){if(!this._fin){this._state=Y;return}let n=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let s;this._binaryType==="nodebuffer"?s=yr(r,n):this._binaryType==="arraybuffer"?s=Au(yr(r,n)):this._binaryType==="blob"?s=new Blob(r):s=r,this._allowSynchronousEvents?(this.emit("message",s,!0),this._state=Y):(this._state=gn,setImmediate(()=>{this.emit("message",s,!0),this._state=Y,this.startLoop(e)}))}else{let s=yr(r,n);if(!this._skipUTF8Validation&&!Ii(s)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(i);return}this._state===_r||this._allowSynchronousEvents?(this.emit("message",s,!1),this._state=Y):(this._state=gn,setImmediate(()=>{this.emit("message",s,!1),this._state=Y,this.startLoop(e)}))}}controlMessage(e,n){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,bi),this.end();else{let r=e.readUInt16BE(0);if(!Cu(r)){let i=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");n(i);return}let s=new pn(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Ii(s)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");n(i);return}this._loop=!1,this.emit("conclude",r,s),this.end()}this._state=Y;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=Y):(this._state=gn,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=Y,this.startLoop(n)}))}createError(e,n,r,s,i){this._loop=!1,this._errored=!0;let o=new e(r?`Invalid WebSocket frame: ${n}`:n);return Error.captureStackTrace(o,this.createError),o.code=i,o[Eu]=s,o}};Ai.exports=vr});var xr=m((rm,Ri)=>{"use strict";var{Duplex:nm}=require("stream"),{randomFillSync:Ru}=require("crypto"),ki=Ct(),{EMPTY_BUFFER:Pu,kWebSocket:Lu,NOOP:Mu}=ce(),{isBlob:Xe,isValidStatusCode:Nu}=Ke(),{mask:Ci,toBuffer:Pe}=At(),J=Symbol("kByteLength"),Ou=Buffer.alloc(4),mn=8*1024,Le,Ze=mn,ee=0,Bu=1,Du=2,br=class t{constructor(e,n,r){this._extensions=n||{},r&&(this._generateMask=r,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=ee,this.onerror=Mu,this[Lu]=void 0}static frame(e,n){let r,s=!1,i=2,o=!1;n.mask&&(r=n.maskBuffer||Ou,n.generateMask?n.generateMask(r):(Ze===mn&&(Le===void 0&&(Le=Buffer.alloc(mn)),Ru(Le,0,mn),Ze=0),r[0]=Le[Ze++],r[1]=Le[Ze++],r[2]=Le[Ze++],r[3]=Le[Ze++]),o=(r[0]|r[1]|r[2]|r[3])===0,i=6);let a;typeof e=="string"?(!n.mask||o)&&n[J]!==void 0?a=n[J]:(e=Buffer.from(e),a=e.length):(a=e.length,s=n.mask&&n.readOnly&&!o);let l=a;a>=65536?(i+=8,l=127):a>125&&(i+=2,l=126);let c=Buffer.allocUnsafe(s?a+i:i);return c[0]=n.fin?n.opcode|128:n.opcode,n.rsv1&&(c[0]|=64),c[1]=l,l===126?c.writeUInt16BE(a,2):l===127&&(c[2]=c[3]=0,c.writeUIntBE(a,4,6)),n.mask?(c[1]|=128,c[i-4]=r[0],c[i-3]=r[1],c[i-2]=r[2],c[i-1]=r[3],o?[c,e]:s?(Ci(e,r,c,i,a),[c]):(Ci(e,r,e,0,a),[c,e])):[c,e]}close(e,n,r,s){let i;if(e===void 0)i=Pu;else{if(typeof e!="number"||!Nu(e))throw new TypeError("First argument must be a valid error code number");if(n===void 0||!n.length)i=Buffer.allocUnsafe(2),i.writeUInt16BE(e,0);else{let a=Buffer.byteLength(n);if(a>123)throw new RangeError("The message must not be greater than 123 bytes");i=Buffer.allocUnsafe(2+a),i.writeUInt16BE(e,0),typeof n=="string"?i.write(n,2):i.set(n,2)}}let o={[J]:i.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==ee?this.enqueue([this.dispatch,i,!1,o,s]):this.sendFrame(t.frame(i,o),s)}ping(e,n,r){let s,i;if(typeof e=="string"?(s=Buffer.byteLength(e),i=!1):Xe(e)?(s=e.size,i=!1):(e=Pe(e),s=e.length,i=Pe.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[J]:s,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};Xe(e)?this._state!==ee?this.enqueue([this.getBlobData,e,!1,o,r]):this.getBlobData(e,!1,o,r):this._state!==ee?this.enqueue([this.dispatch,e,!1,o,r]):this.sendFrame(t.frame(e,o),r)}pong(e,n,r){let s,i;if(typeof e=="string"?(s=Buffer.byteLength(e),i=!1):Xe(e)?(s=e.size,i=!1):(e=Pe(e),s=e.length,i=Pe.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[J]:s,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};Xe(e)?this._state!==ee?this.enqueue([this.getBlobData,e,!1,o,r]):this.getBlobData(e,!1,o,r):this._state!==ee?this.enqueue([this.dispatch,e,!1,o,r]):this.sendFrame(t.frame(e,o),r)}send(e,n,r){let s=this._extensions[ki.extensionName],i=n.binary?2:1,o=n.compress,a,l;typeof e=="string"?(a=Buffer.byteLength(e),l=!1):Xe(e)?(a=e.size,l=!1):(e=Pe(e),a=e.length,l=Pe.readOnly),this._firstFragment?(this._firstFragment=!1,o&&s&&s.params[s._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(o=a>=s._threshold),this._compress=o):(o=!1,i=0),n.fin&&(this._firstFragment=!0);let c={[J]:a,fin:n.fin,generateMask:this._generateMask,mask:n.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:l,rsv1:o};Xe(e)?this._state!==ee?this.enqueue([this.getBlobData,e,this._compress,c,r]):this.getBlobData(e,this._compress,c,r):this._state!==ee?this.enqueue([this.dispatch,e,this._compress,c,r]):this.dispatch(e,this._compress,c,r)}getBlobData(e,n,r,s){this._bufferedBytes+=r[J],this._state=Du,e.arrayBuffer().then(i=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(Ir,this,a,s);return}this._bufferedBytes-=r[J];let o=Pe(i);n?this.dispatch(o,n,r,s):(this._state=ee,this.sendFrame(t.frame(o,r),s),this.dequeue())}).catch(i=>{process.nextTick(Hu,this,i,s)})}dispatch(e,n,r,s){if(!n){this.sendFrame(t.frame(e,r),s);return}let i=this._extensions[ki.extensionName];this._bufferedBytes+=r[J],this._state=Bu,i.compress(e,r.fin,(o,a)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");Ir(this,l,s);return}this._bufferedBytes-=r[J],this._state=ee,r.readOnly=!1,this.sendFrame(t.frame(a,r),s),this.dequeue()})}dequeue(){for(;this._state===ee&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][J],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][J],this._queue.push(e)}sendFrame(e,n){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],n),this._socket.uncork()):this._socket.write(e[0],n)}};Ri.exports=br;function Ir(t,e,n){typeof n=="function"&&n(e);for(let r=0;r<t._queue.length;r++){let s=t._queue[r],i=s[s.length-1];typeof i=="function"&&i(e)}}function Hu(t,e,n){Ir(t,e,n),t.onerror(e)}});var Fi=m((sm,Hi)=>{"use strict";var{kForOnEventAttribute:Rt,kListener:Er}=ce(),Pi=Symbol("kCode"),Li=Symbol("kData"),Mi=Symbol("kError"),Ni=Symbol("kMessage"),Oi=Symbol("kReason"),Qe=Symbol("kTarget"),Bi=Symbol("kType"),Di=Symbol("kWasClean"),de=class{constructor(e){this[Qe]=null,this[Bi]=e}get target(){return this[Qe]}get type(){return this[Bi]}};Object.defineProperty(de.prototype,"target",{enumerable:!0});Object.defineProperty(de.prototype,"type",{enumerable:!0});var Me=class extends de{constructor(e,n={}){super(e),this[Pi]=n.code===void 0?0:n.code,this[Oi]=n.reason===void 0?"":n.reason,this[Di]=n.wasClean===void 0?!1:n.wasClean}get code(){return this[Pi]}get reason(){return this[Oi]}get wasClean(){return this[Di]}};Object.defineProperty(Me.prototype,"code",{enumerable:!0});Object.defineProperty(Me.prototype,"reason",{enumerable:!0});Object.defineProperty(Me.prototype,"wasClean",{enumerable:!0});var et=class extends de{constructor(e,n={}){super(e),this[Mi]=n.error===void 0?null:n.error,this[Ni]=n.message===void 0?"":n.message}get error(){return this[Mi]}get message(){return this[Ni]}};Object.defineProperty(et.prototype,"error",{enumerable:!0});Object.defineProperty(et.prototype,"message",{enumerable:!0});var Pt=class extends de{constructor(e,n={}){super(e),this[Li]=n.data===void 0?null:n.data}get data(){return this[Li]}};Object.defineProperty(Pt.prototype,"data",{enumerable:!0});var Fu={addEventListener(t,e,n={}){for(let s of this.listeners(t))if(!n[Rt]&&s[Er]===e&&!s[Rt])return;let r;if(t==="message")r=function(i,o){let a=new Pt("message",{data:o?i:i.toString()});a[Qe]=this,yn(e,this,a)};else if(t==="close")r=function(i,o){let a=new Me("close",{code:i,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[Qe]=this,yn(e,this,a)};else if(t==="error")r=function(i){let o=new et("error",{error:i,message:i.message});o[Qe]=this,yn(e,this,o)};else if(t==="open")r=function(){let i=new de("open");i[Qe]=this,yn(e,this,i)};else return;r[Rt]=!!n[Rt],r[Er]=e,n.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let n of this.listeners(t))if(n[Er]===e&&!n[Rt]){this.removeListener(t,n);break}}};Hi.exports={CloseEvent:Me,ErrorEvent:et,Event:de,EventTarget:Fu,MessageEvent:Pt};function yn(t,e,n){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,n):t.call(e,n)}});var Tr=m((im,Ui)=>{"use strict";var{tokenChars:Lt}=Ke();function ie(t,e,n){t[e]===void 0?t[e]=[n]:t[e].push(n)}function Uu(t){let e=Object.create(null),n=Object.create(null),r=!1,s=!1,i=!1,o,a,l=-1,c=-1,u=-1,d=0;for(;d<t.length;d++)if(c=t.charCodeAt(d),o===void 0)if(u===-1&&Lt[c]===1)l===-1&&(l=d);else if(d!==0&&(c===32||c===9))u===-1&&l!==-1&&(u=d);else if(c===59||c===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let h=t.slice(l,u);c===44?(ie(e,h,n),n=Object.create(null)):o=h,l=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);else if(a===void 0)if(u===-1&&Lt[c]===1)l===-1&&(l=d);else if(c===32||c===9)u===-1&&l!==-1&&(u=d);else if(c===59||c===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d),ie(n,t.slice(l,u),!0),c===44&&(ie(e,o,n),n=Object.create(null),o=void 0),l=u=-1}else if(c===61&&l!==-1&&u===-1)a=t.slice(l,d),l=u=-1;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(s){if(Lt[c]!==1)throw new SyntaxError(`Unexpected character at index ${d}`);l===-1?l=d:r||(r=!0),s=!1}else if(i)if(Lt[c]===1)l===-1&&(l=d);else if(c===34&&l!==-1)i=!1,u=d;else if(c===92)s=!0;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(c===34&&t.charCodeAt(d-1)===61)i=!0;else if(u===-1&&Lt[c]===1)l===-1&&(l=d);else if(l!==-1&&(c===32||c===9))u===-1&&(u=d);else if(c===59||c===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let h=t.slice(l,u);r&&(h=h.replace(/\\/g,""),r=!1),ie(n,a,h),c===44&&(ie(e,o,n),n=Object.create(null),o=void 0),a=void 0,l=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);if(l===-1||i||c===32||c===9)throw new SyntaxError("Unexpected end of input");u===-1&&(u=d);let f=t.slice(l,u);return o===void 0?ie(e,f,n):(a===void 0?ie(n,f,!0):r?ie(n,a,f.replace(/\\/g,"")):ie(n,a,f),ie(e,o,n)),e}function qu(t){return Object.keys(t).map(e=>{let n=t[e];return Array.isArray(n)||(n=[n]),n.map(r=>[e].concat(Object.keys(r).map(s=>{let i=r[s];return Array.isArray(i)||(i=[i]),i.map(o=>o===!0?s:`${s}=${o}`).join("; ")})).join("; ")).join(", ")}).join(", ")}Ui.exports={format:qu,parse:Uu}});var wn=m((lm,Zi)=>{"use strict";var Wu=require("events"),ju=require("https"),Gu=require("http"),ji=require("net"),$u=require("tls"),{randomBytes:zu,createHash:Vu}=require("crypto"),{Duplex:om,Readable:am}=require("stream"),{URL:Ar}=require("url"),me=Ct(),Yu=wr(),Ju=xr(),{isBlob:Ku}=Ke(),{BINARY_TYPES:qi,CLOSE_TIMEOUT:Xu,EMPTY_BUFFER:Sn,GUID:Zu,kForOnEventAttribute:kr,kListener:Qu,kStatusCode:ed,kWebSocket:N,NOOP:Gi}=ce(),{EventTarget:{addEventListener:td,removeEventListener:nd}}=Fi(),{format:rd,parse:sd}=Tr(),{toBuffer:id}=At(),$i=Symbol("kAborted"),Cr=[8,13],fe=["CONNECTING","OPEN","CLOSING","CLOSED"],od=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,E=class t extends Wu{constructor(e,n,r){super(),this._binaryType=qi[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Sn,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=t.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,n===void 0?n=[]:Array.isArray(n)||(typeof n=="object"&&n!==null?(r=n,n=[]):n=[n]),zi(this,e,n,r)):(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){qi.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,n,r){let s=new Yu({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),i=new Ju(e,this._extensions,r.generateMask);this._receiver=s,this._sender=i,this._socket=e,s[N]=this,i[N]=this,e[N]=this,s.on("conclude",cd),s.on("drain",ud),s.on("error",dd),s.on("message",fd),s.on("ping",hd),s.on("pong",pd),i.onerror=gd,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),n.length>0&&e.unshift(n),e.on("close",Ji),e.on("data",vn),e.on("end",Ki),e.on("error",Xi),this._readyState=t.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[me.extensionName]&&this._extensions[me.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,n){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){$(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===t.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=t.CLOSING,this._sender.close(e,n,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Yi(this)}}pause(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,n,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=n=void 0):typeof n=="function"&&(r=n,n=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Rr(this,e,r);return}n===void 0&&(n=!this._isServer),this._sender.ping(e||Sn,n,r)}pong(e,n,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=n=void 0):typeof n=="function"&&(r=n,n=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Rr(this,e,r);return}n===void 0&&(n=!this._isServer),this._sender.pong(e||Sn,n,r)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,n,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof n=="function"&&(r=n,n={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Rr(this,e,r);return}let s={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[me.extensionName]||(s.compress=!1),this._sender.send(e||Sn,s,r)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){$(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(E,"CONNECTING",{enumerable:!0,value:fe.indexOf("CONNECTING")});Object.defineProperty(E.prototype,"CONNECTING",{enumerable:!0,value:fe.indexOf("CONNECTING")});Object.defineProperty(E,"OPEN",{enumerable:!0,value:fe.indexOf("OPEN")});Object.defineProperty(E.prototype,"OPEN",{enumerable:!0,value:fe.indexOf("OPEN")});Object.defineProperty(E,"CLOSING",{enumerable:!0,value:fe.indexOf("CLOSING")});Object.defineProperty(E.prototype,"CLOSING",{enumerable:!0,value:fe.indexOf("CLOSING")});Object.defineProperty(E,"CLOSED",{enumerable:!0,value:fe.indexOf("CLOSED")});Object.defineProperty(E.prototype,"CLOSED",{enumerable:!0,value:fe.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(E.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(E.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[kr])return e[Qu];return null},set(e){for(let n of this.listeners(t))if(n[kr]){this.removeListener(t,n);break}typeof e=="function"&&this.addEventListener(t,e,{[kr]:!0})}})});E.prototype.addEventListener=td;E.prototype.removeEventListener=nd;Zi.exports=E;function zi(t,e,n,r){let s={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:Xu,protocolVersion:Cr[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(t._autoPong=s.autoPong,t._closeTimeout=s.closeTimeout,!Cr.includes(s.protocolVersion))throw new RangeError(`Unsupported protocol version: ${s.protocolVersion} (supported versions: ${Cr.join(", ")})`);let i;if(e instanceof Ar)i=e;else try{i=new Ar(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}i.protocol==="http:"?i.protocol="ws:":i.protocol==="https:"&&(i.protocol="wss:"),t._url=i.href;let o=i.protocol==="wss:",a=i.protocol==="ws+unix:",l;if(i.protocol!=="ws:"&&!o&&!a?l=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!i.pathname?l="The URL's pathname is empty":i.hash&&(l="The URL contains a fragment identifier"),l){let p=new SyntaxError(l);if(t._redirects===0)throw p;_n(t,p);return}let c=o?443:80,u=zu(16).toString("base64"),d=o?ju.request:Gu.request,f=new Set,h;if(s.createConnection=s.createConnection||(o?ld:ad),s.defaultPort=s.defaultPort||c,s.port=i.port||c,s.host=i.hostname.startsWith("[")?i.hostname.slice(1,-1):i.hostname,s.headers={...s.headers,"Sec-WebSocket-Version":s.protocolVersion,"Sec-WebSocket-Key":u,Connection:"Upgrade",Upgrade:"websocket"},s.path=i.pathname+i.search,s.timeout=s.handshakeTimeout,s.perMessageDeflate&&(h=new me(s.perMessageDeflate!==!0?s.perMessageDeflate:{},!1,s.maxPayload),s.headers["Sec-WebSocket-Extensions"]=rd({[me.extensionName]:h.offer()})),n.length){for(let p of n){if(typeof p!="string"||!od.test(p)||f.has(p))throw new SyntaxError("An invalid or duplicated subprotocol was specified");f.add(p)}s.headers["Sec-WebSocket-Protocol"]=n.join(",")}if(s.origin&&(s.protocolVersion<13?s.headers["Sec-WebSocket-Origin"]=s.origin:s.headers.Origin=s.origin),(i.username||i.password)&&(s.auth=`${i.username}:${i.password}`),a){let p=s.path.split(":");s.socketPath=p[0],s.path=p[1]}let g;if(s.followRedirects){if(t._redirects===0){t._originalIpc=a,t._originalSecure=o,t._originalHostOrSocketPath=a?s.socketPath:i.host;let p=r&&r.headers;if(r={...r,headers:{}},p)for(let[y,S]of Object.entries(p))r.headers[y.toLowerCase()]=S}else if(t.listenerCount("redirect")===0){let p=a?t._originalIpc?s.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:i.host===t._originalHostOrSocketPath;(!p||t._originalSecure&&!o)&&(delete s.headers.authorization,delete s.headers.cookie,p||delete s.headers.host,s.auth=void 0)}s.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(s.auth).toString("base64")),g=t._req=d(s),t._redirects&&t.emit("redirect",t.url,g)}else g=t._req=d(s);s.timeout&&g.on("timeout",()=>{$(t,g,"Opening handshake has timed out")}),g.on("error",p=>{g===null||g[$i]||(g=t._req=null,_n(t,p))}),g.on("response",p=>{let y=p.headers.location,S=p.statusCode;if(y&&s.followRedirects&&S>=300&&S<400){if(++t._redirects>s.maxRedirects){$(t,g,"Maximum redirects exceeded");return}g.abort();let G;try{G=new Ar(y,e)}catch{let A=new SyntaxError(`Invalid URL: ${y}`);_n(t,A);return}zi(t,G,n,r)}else t.emit("unexpected-response",g,p)||$(t,g,`Unexpected server response: ${p.statusCode}`)}),g.on("upgrade",(p,y,S)=>{if(t.emit("upgrade",p),t.readyState!==E.CONNECTING)return;g=t._req=null;let G=p.headers.upgrade;if(G===void 0||G.toLowerCase()!=="websocket"){$(t,y,"Invalid Upgrade header");return}let re=Vu("sha1").update(u+Zu).digest("base64");if(p.headers["sec-websocket-accept"]!==re){$(t,y,"Invalid Sec-WebSocket-Accept header");return}let A=p.headers["sec-websocket-protocol"],M;if(A!==void 0?f.size?f.has(A)||(M="Server sent an invalid subprotocol"):M="Server sent a subprotocol but none was requested":f.size&&(M="Server sent no subprotocol"),M){$(t,y,M);return}A&&(t._protocol=A);let V=p.headers["sec-websocket-extensions"];if(V!==void 0){if(!h){$(t,y,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let se;try{se=sd(V)}catch{$(t,y,"Invalid Sec-WebSocket-Extensions header");return}let ze=Object.keys(se);if(ze.length!==1||ze[0]!==me.extensionName){$(t,y,"Server indicated an extension that was not requested");return}try{h.accept(se[me.extensionName])}catch{$(t,y,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[me.extensionName]=h}t.setSocket(y,S,{allowSynchronousEvents:s.allowSynchronousEvents,generateMask:s.generateMask,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation})}),s.finishRequest?s.finishRequest(g,t):g.end()}function _n(t,e){t._readyState=E.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function ad(t){return t.path=t.socketPath,ji.connect(t)}function ld(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=ji.isIP(t.host)?"":t.host),$u.connect(t)}function $(t,e,n){t._readyState=E.CLOSING;let r=new Error(n);Error.captureStackTrace(r,$),e.setHeader?(e[$i]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(_n,t,r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Rr(t,e,n){if(e){let r=Ku(e)?e.size:id(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(n){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${fe[t.readyState]})`);process.nextTick(n,r)}}function cd(t,e){let n=this[N];n._closeFrameReceived=!0,n._closeMessage=e,n._closeCode=t,n._socket[N]!==void 0&&(n._socket.removeListener("data",vn),process.nextTick(Vi,n._socket),t===1005?n.close():n.close(t,e))}function ud(){let t=this[N];t.isPaused||t._socket.resume()}function dd(t){let e=this[N];e._socket[N]!==void 0&&(e._socket.removeListener("data",vn),process.nextTick(Vi,e._socket),e.close(t[ed])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function Wi(){this[N].emitClose()}function fd(t,e){this[N].emit("message",t,e)}function hd(t){let e=this[N];e._autoPong&&e.pong(t,!this._isServer,Gi),e.emit("ping",t)}function pd(t){this[N].emit("pong",t)}function Vi(t){t.resume()}function gd(t){let e=this[N];e.readyState!==E.CLOSED&&(e.readyState===E.OPEN&&(e._readyState=E.CLOSING,Yi(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function Yi(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function Ji(){let t=this[N];if(this.removeListener("close",Ji),this.removeListener("data",vn),this.removeListener("end",Ki),t._readyState=E.CLOSING,!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&this._readableState.length!==0){let e=this.read(this._readableState.length);t._receiver.write(e)}t._receiver.end(),this[N]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",Wi),t._receiver.on("finish",Wi))}function vn(t){this[N]._receiver.write(t)||this.pause()}function Ki(){let t=this[N];t._readyState=E.CLOSING,t._receiver.end(),this.end()}function Xi(){let t=this[N];this.removeListener("error",Xi),this.on("error",Gi),t&&(t._readyState=E.CLOSING,this.destroy())}});var no=m((um,to)=>{"use strict";var cm=wn(),{Duplex:md}=require("stream");function Qi(t){t.emit("close")}function yd(){!this.destroyed&&this._writableState.finished&&this.destroy()}function eo(t){this.removeListener("error",eo),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function Sd(t,e){let n=!0,r=new md({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(i,o){let a=!o&&r._readableState.objectMode?i.toString():i;r.push(a)||t.pause()}),t.once("error",function(i){r.destroyed||(n=!1,r.destroy(i))}),t.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(s,i){if(t.readyState===t.CLOSED){i(s),process.nextTick(Qi,r);return}let o=!1;t.once("error",function(l){o=!0,i(l)}),t.once("close",function(){o||i(s),process.nextTick(Qi,r)}),n&&t.terminate()},r._final=function(s){if(t.readyState===t.CONNECTING){t.once("open",function(){r._final(s)});return}t._socket!==null&&(t._socket._writableState.finished?(s(),r._readableState.endEmitted&&r.destroy()):(t._socket.once("finish",function(){s()}),t.close()))},r._read=function(){t.isPaused&&t.resume()},r._write=function(s,i,o){if(t.readyState===t.CONNECTING){t.once("open",function(){r._write(s,i,o)});return}t.send(s,o)},r.on("end",yd),r.on("error",eo),r}to.exports=Sd});var so=m((dm,ro)=>{"use strict";var{tokenChars:_d}=Ke();function vd(t){let e=new Set,n=-1,r=-1,s=0;for(s;s<t.length;s++){let o=t.charCodeAt(s);if(r===-1&&_d[o]===1)n===-1&&(n=s);else if(s!==0&&(o===32||o===9))r===-1&&n!==-1&&(r=s);else if(o===44){if(n===-1)throw new SyntaxError(`Unexpected character at index ${s}`);r===-1&&(r=s);let a=t.slice(n,r);if(e.has(a))throw new SyntaxError(`The "${a}" subprotocol is duplicated`);e.add(a),n=r=-1}else throw new SyntaxError(`Unexpected character at index ${s}`)}if(n===-1||r!==-1)throw new SyntaxError("Unexpected end of input");let i=t.slice(n,s);if(e.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);return e.add(i),e}ro.exports={parse:vd}});var fo=m((hm,uo)=>{"use strict";var wd=require("events"),bn=require("http"),{Duplex:fm}=require("stream"),{createHash:bd}=require("crypto"),io=Tr(),Ne=Ct(),Id=so(),xd=wn(),{CLOSE_TIMEOUT:Ed,GUID:Td,kWebSocket:Ad}=ce(),kd=/^[+/0-9A-Za-z]{22}==$/,oo=0,ao=1,co=2,Pr=class extends wd{constructor(e,n){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:Ed,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:xd,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=bn.createServer((r,s)=>{let i=bn.STATUS_CODES[426];s.writeHead(426,{"Content-Length":i.length,"Content-Type":"text/plain"}),s.end(i)}),this._server.listen(e.port,e.host,e.backlog,n)):e.server&&(this._server=e.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=Cd(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(s,i,o)=>{this.handleUpgrade(s,i,o,r)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=oo}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===co){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Mt,this);return}if(e&&this.once("close",e),this._state!==ao)if(this._state=ao,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(Mt,this):process.nextTick(Mt,this);else{let n=this._server;this._removeListeners(),this._removeListeners=this._server=null,n.close(()=>{Mt(this)})}}shouldHandle(e){if(this.options.path){let n=e.url.indexOf("?");if((n!==-1?e.url.slice(0,n):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,n,r,s){n.on("error",lo);let i=e.headers["sec-websocket-key"],o=e.headers.upgrade,a=+e.headers["sec-websocket-version"];if(e.method!=="GET"){Oe(this,e,n,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){Oe(this,e,n,400,"Invalid Upgrade header");return}if(i===void 0||!kd.test(i)){Oe(this,e,n,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){Oe(this,e,n,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){Nt(n,400);return}let l=e.headers["sec-websocket-protocol"],c=new Set;if(l!==void 0)try{c=Id.parse(l)}catch{Oe(this,e,n,400,"Invalid Sec-WebSocket-Protocol header");return}let u=e.headers["sec-websocket-extensions"],d={};if(this.options.perMessageDeflate&&u!==void 0){let f=new Ne(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let h=io.parse(u);h[Ne.extensionName]&&(f.accept(h[Ne.extensionName]),d[Ne.extensionName]=f)}catch{Oe(this,e,n,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let f={origin:e.headers[`${a===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(f,(h,g,p,y)=>{if(!h)return Nt(n,g||401,p,y);this.completeUpgrade(d,i,c,e,n,r,s)});return}if(!this.options.verifyClient(f))return Nt(n,401)}this.completeUpgrade(d,i,c,e,n,r,s)}completeUpgrade(e,n,r,s,i,o,a){if(!i.readable||!i.writable)return i.destroy();if(i[Ad])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>oo)return Nt(i,503);let c=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${bd("sha1").update(n+Td).digest("base64")}`],u=new this.options.WebSocket(null,void 0,this.options);if(r.size){let d=this.options.handleProtocols?this.options.handleProtocols(r,s):r.values().next().value;d&&(c.push(`Sec-WebSocket-Protocol: ${d}`),u._protocol=d)}if(e[Ne.extensionName]){let d=e[Ne.extensionName].params,f=io.format({[Ne.extensionName]:[d]});c.push(`Sec-WebSocket-Extensions: ${f}`),u._extensions=e}this.emit("headers",c,s),i.write(c.concat(`\r
1
+ "use strict";var iu=Object.create;var ai=Object.defineProperty;var ou=Object.getOwnPropertyDescriptor;var au=Object.getOwnPropertyNames;var lu=Object.getPrototypeOf,cu=Object.prototype.hasOwnProperty;var m=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var uu=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of au(e))!cu.call(t,s)&&s!==n&&ai(t,s,{get:()=>e[s],enumerable:!(r=ou(e,s))||r.enumerable});return t};var Ve=(t,e,n)=>(n=t!=null?iu(lu(t)):{},uu(e||!t||!t.__esModule?ai(n,"default",{value:t,enumerable:!0}):n,t));var ce=m((Kg,ui)=>{"use strict";var li=["nodebuffer","arraybuffer","fragments"],ci=typeof Blob<"u";ci&&li.push("blob");ui.exports={BINARY_TYPES:li,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:ci,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var Et=m((Xg,un)=>{"use strict";var{EMPTY_BUFFER:du}=ce(),hr=Buffer[Symbol.species];function fu(t,e){if(t.length===0)return du;if(t.length===1)return t[0];let n=Buffer.allocUnsafe(e),r=0;for(let s=0;s<t.length;s++){let i=t[s];n.set(i,r),r+=i.length}return r<e?new hr(n.buffer,n.byteOffset,r):n}function di(t,e,n,r,s){for(let i=0;i<s;i++)n[r+i]=t[i]^e[i&3]}function fi(t,e){for(let n=0;n<t.length;n++)t[n]^=e[n&3]}function hu(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function pr(t){if(pr.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new hr(t):ArrayBuffer.isView(t)?e=new hr(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),pr.readOnly=!1),e}un.exports={concat:fu,mask:di,toArrayBuffer:hu,toBuffer:pr,unmask:fi};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");un.exports.mask=function(e,n,r,s,i){i<48?di(e,n,r,s,i):t.mask(e,n,r,s,i)},un.exports.unmask=function(e,n){e.length<32?fi(e,n):t.unmask(e,n)}}catch{}});var gi=m((Zg,pi)=>{"use strict";var hi=Symbol("kDone"),gr=Symbol("kRun"),mr=class{constructor(e){this[hi]=()=>{this.pending--,this[gr]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[gr]()}[gr](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[hi])}}};pi.exports=mr});var Ct=m((Qg,_i)=>{"use strict";var kt=require("zlib"),mi=Et(),pu=gi(),{kStatusCode:yi}=ce(),gu=Buffer[Symbol.species],mu=Buffer.from([0,0,255,255]),fn=Symbol("permessage-deflate"),ue=Symbol("total-length"),Ye=Symbol("callback"),me=Symbol("buffers"),Je=Symbol("error"),dn,yr=class{constructor(e,n,r){if(this._maxPayload=r|0,this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!n,this._deflate=null,this._inflate=null,this.params=null,!dn){let s=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;dn=new pu(s)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[Ye];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let n=this._options,r=e.find(s=>!(n.serverNoContextTakeover===!1&&s.server_no_context_takeover||s.server_max_window_bits&&(n.serverMaxWindowBits===!1||typeof n.serverMaxWindowBits=="number"&&n.serverMaxWindowBits>s.server_max_window_bits)||typeof n.clientMaxWindowBits=="number"&&!s.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return n.serverNoContextTakeover&&(r.server_no_context_takeover=!0),n.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof n.serverMaxWindowBits=="number"&&(r.server_max_window_bits=n.serverMaxWindowBits),typeof n.clientMaxWindowBits=="number"?r.client_max_window_bits=n.clientMaxWindowBits:(r.client_max_window_bits===!0||n.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(e){let n=e[0];if(this._options.clientNoContextTakeover===!1&&n.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!n.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(n.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&n.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return n}normalizeParams(e){return e.forEach(n=>{Object.keys(n).forEach(r=>{let s=n[r];if(s.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(s=s[0],r==="client_max_window_bits"){if(s!==!0){let i=+s;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${r}": ${s}`);s=i}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${s}`)}else if(r==="server_max_window_bits"){let i=+s;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${r}": ${s}`);s=i}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(s!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${s}`)}else throw new Error(`Unknown parameter "${r}"`);n[r]=s})}),e}decompress(e,n,r){dn.add(s=>{this._decompress(e,n,(i,o)=>{s(),r(i,o)})})}compress(e,n,r){dn.add(s=>{this._compress(e,n,(i,o)=>{s(),r(i,o)})})}_decompress(e,n,r){let s=this._isServer?"client":"server";if(!this._inflate){let i=`${s}_max_window_bits`,o=typeof this.params[i]!="number"?kt.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=kt.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[fn]=this,this._inflate[ue]=0,this._inflate[me]=[],this._inflate.on("error",Su),this._inflate.on("data",Si)}this._inflate[Ye]=r,this._inflate.write(e),n&&this._inflate.write(mu),this._inflate.flush(()=>{let i=this._inflate[Je];if(i){this._inflate.close(),this._inflate=null,r(i);return}let o=mi.concat(this._inflate[me],this._inflate[ue]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[ue]=0,this._inflate[me]=[],n&&this.params[`${s}_no_context_takeover`]&&this._inflate.reset()),r(null,o)})}_compress(e,n,r){let s=this._isServer?"server":"client";if(!this._deflate){let i=`${s}_max_window_bits`,o=typeof this.params[i]!="number"?kt.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=kt.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[ue]=0,this._deflate[me]=[],this._deflate.on("data",yu)}this._deflate[Ye]=r,this._deflate.write(e),this._deflate.flush(kt.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=mi.concat(this._deflate[me],this._deflate[ue]);n&&(i=new gu(i.buffer,i.byteOffset,i.length-4)),this._deflate[Ye]=null,this._deflate[ue]=0,this._deflate[me]=[],n&&this.params[`${s}_no_context_takeover`]&&this._deflate.reset(),r(null,i)})}};_i.exports=yr;function yu(t){this[me].push(t),this[ue]+=t.length}function Si(t){if(this[ue]+=t.length,this[fn]._maxPayload<1||this[ue]<=this[fn]._maxPayload){this[me].push(t);return}this[Je]=new RangeError("Max payload size exceeded"),this[Je].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[Je][yi]=1009,this.removeListener("data",Si),this.reset()}function Su(t){if(this[fn]._inflate=null,this[Je]){this[Ye](this[Je]);return}t[yi]=1007,this[Ye](t)}});var Ke=m((em,hn)=>{"use strict";var{isUtf8:vi}=require("buffer"),{hasBlob:_u}=ce(),vu=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function wu(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function Sr(t){let e=t.length,n=0;for(;n<e;)if((t[n]&128)===0)n++;else if((t[n]&224)===192){if(n+1===e||(t[n+1]&192)!==128||(t[n]&254)===192)return!1;n+=2}else if((t[n]&240)===224){if(n+2>=e||(t[n+1]&192)!==128||(t[n+2]&192)!==128||t[n]===224&&(t[n+1]&224)===128||t[n]===237&&(t[n+1]&224)===160)return!1;n+=3}else if((t[n]&248)===240){if(n+3>=e||(t[n+1]&192)!==128||(t[n+2]&192)!==128||(t[n+3]&192)!==128||t[n]===240&&(t[n+1]&240)===128||t[n]===244&&t[n+1]>143||t[n]>244)return!1;n+=4}else return!1;return!0}function bu(t){return _u&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}hn.exports={isBlob:bu,isValidStatusCode:wu,isValidUTF8:Sr,tokenChars:vu};if(vi)hn.exports.isValidUTF8=function(t){return t.length<24?Sr(t):vi(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");hn.exports.isValidUTF8=function(e){return e.length<32?Sr(e):t(e)}}catch{}});var Ir=m((tm,Ei)=>{"use strict";var{Writable:Iu}=require("stream"),wi=Ct(),{BINARY_TYPES:xu,EMPTY_BUFFER:bi,kStatusCode:Tu,kWebSocket:Au}=ce(),{concat:_r,toArrayBuffer:Eu,unmask:ku}=Et(),{isValidStatusCode:Cu,isValidUTF8:Ii}=Ke(),pn=Buffer[Symbol.species],Y=0,xi=1,Ti=2,Ai=3,vr=4,wr=5,gn=6,br=class extends Iu{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||xu[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[Au]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=Y}_write(e,n,r){if(this._opcode===8&&this._state==Y)return r();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(r)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let r=this._buffers[0];return this._buffers[0]=new pn(r.buffer,r.byteOffset+e,r.length-e),new pn(r.buffer,r.byteOffset,e)}let n=Buffer.allocUnsafe(e);do{let r=this._buffers[0],s=n.length-e;e>=r.length?n.set(this._buffers.shift(),s):(n.set(new Uint8Array(r.buffer,r.byteOffset,e),s),this._buffers[0]=new pn(r.buffer,r.byteOffset+e,r.length-e)),e-=r.length}while(e>0);return n}startLoop(e){this._loop=!0;do switch(this._state){case Y:this.getInfo(e);break;case xi:this.getPayloadLength16(e);break;case Ti:this.getPayloadLength64(e);break;case Ai:this.getMask();break;case vr:this.getData(e);break;case wr:case gn:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let n=this.consume(2);if((n[0]&48)!==0){let s=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(s);return}let r=(n[0]&64)===64;if(r&&!this._extensions[wi.extensionName]){let s=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(s);return}if(this._fin=(n[0]&128)===128,this._opcode=n[0]&15,this._payloadLength=n[1]&127,this._opcode===0){if(r){let s=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(s);return}if(!this._fragmented){let s=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(s);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let s=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(s);return}this._compressed=r}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let s=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(s);return}if(r){let s=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(s);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let s=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(s);return}}else{let s=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(s);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(n[1]&128)===128,this._isServer){if(!this._masked){let s=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(s);return}}else if(this._masked){let s=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(s);return}this._payloadLength===126?this._state=xi:this._payloadLength===127?this._state=Ti:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let n=this.consume(8),r=n.readUInt32BE(0);if(r>Math.pow(2,21)-1){let s=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(s);return}this._payloadLength=r*Math.pow(2,32)+n.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let n=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(n);return}this._masked?this._state=Ai:this._state=vr}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=vr}getData(e){let n=bi;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}n=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&ku(n,this._mask)}if(this._opcode>7){this.controlMessage(n,e);return}if(this._compressed){this._state=wr,this.decompress(n,e);return}n.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(n)),this.dataMessage(e)}decompress(e,n){this._extensions[wi.extensionName].decompress(e,this._fin,(s,i)=>{if(s)return n(s);if(i.length){if(this._messageLength+=i.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let o=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");n(o);return}this._fragments.push(i)}this.dataMessage(n),this._state===Y&&this.startLoop(n)})}dataMessage(e){if(!this._fin){this._state=Y;return}let n=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let s;this._binaryType==="nodebuffer"?s=_r(r,n):this._binaryType==="arraybuffer"?s=Eu(_r(r,n)):this._binaryType==="blob"?s=new Blob(r):s=r,this._allowSynchronousEvents?(this.emit("message",s,!0),this._state=Y):(this._state=gn,setImmediate(()=>{this.emit("message",s,!0),this._state=Y,this.startLoop(e)}))}else{let s=_r(r,n);if(!this._skipUTF8Validation&&!Ii(s)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(i);return}this._state===wr||this._allowSynchronousEvents?(this.emit("message",s,!1),this._state=Y):(this._state=gn,setImmediate(()=>{this.emit("message",s,!1),this._state=Y,this.startLoop(e)}))}}controlMessage(e,n){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,bi),this.end();else{let r=e.readUInt16BE(0);if(!Cu(r)){let i=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");n(i);return}let s=new pn(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Ii(s)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");n(i);return}this._loop=!1,this.emit("conclude",r,s),this.end()}this._state=Y;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=Y):(this._state=gn,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=Y,this.startLoop(n)}))}createError(e,n,r,s,i){this._loop=!1,this._errored=!0;let o=new e(r?`Invalid WebSocket frame: ${n}`:n);return Error.captureStackTrace(o,this.createError),o.code=i,o[Tu]=s,o}};Ei.exports=br});var Ar=m((rm,Pi)=>{"use strict";var{Duplex:nm}=require("stream"),{randomFillSync:Pu}=require("crypto"),ki=Ct(),{EMPTY_BUFFER:Ru,kWebSocket:Lu,NOOP:Mu}=ce(),{isBlob:Xe,isValidStatusCode:Nu}=Ke(),{mask:Ci,toBuffer:Re}=Et(),J=Symbol("kByteLength"),Ou=Buffer.alloc(4),mn=8*1024,Le,Ze=mn,ee=0,Bu=1,Du=2,xr=class t{constructor(e,n,r){this._extensions=n||{},r&&(this._generateMask=r,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=ee,this.onerror=Mu,this[Lu]=void 0}static frame(e,n){let r,s=!1,i=2,o=!1;n.mask&&(r=n.maskBuffer||Ou,n.generateMask?n.generateMask(r):(Ze===mn&&(Le===void 0&&(Le=Buffer.alloc(mn)),Pu(Le,0,mn),Ze=0),r[0]=Le[Ze++],r[1]=Le[Ze++],r[2]=Le[Ze++],r[3]=Le[Ze++]),o=(r[0]|r[1]|r[2]|r[3])===0,i=6);let a;typeof e=="string"?(!n.mask||o)&&n[J]!==void 0?a=n[J]:(e=Buffer.from(e),a=e.length):(a=e.length,s=n.mask&&n.readOnly&&!o);let l=a;a>=65536?(i+=8,l=127):a>125&&(i+=2,l=126);let c=Buffer.allocUnsafe(s?a+i:i);return c[0]=n.fin?n.opcode|128:n.opcode,n.rsv1&&(c[0]|=64),c[1]=l,l===126?c.writeUInt16BE(a,2):l===127&&(c[2]=c[3]=0,c.writeUIntBE(a,4,6)),n.mask?(c[1]|=128,c[i-4]=r[0],c[i-3]=r[1],c[i-2]=r[2],c[i-1]=r[3],o?[c,e]:s?(Ci(e,r,c,i,a),[c]):(Ci(e,r,e,0,a),[c,e])):[c,e]}close(e,n,r,s){let i;if(e===void 0)i=Ru;else{if(typeof e!="number"||!Nu(e))throw new TypeError("First argument must be a valid error code number");if(n===void 0||!n.length)i=Buffer.allocUnsafe(2),i.writeUInt16BE(e,0);else{let a=Buffer.byteLength(n);if(a>123)throw new RangeError("The message must not be greater than 123 bytes");i=Buffer.allocUnsafe(2+a),i.writeUInt16BE(e,0),typeof n=="string"?i.write(n,2):i.set(n,2)}}let o={[J]:i.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==ee?this.enqueue([this.dispatch,i,!1,o,s]):this.sendFrame(t.frame(i,o),s)}ping(e,n,r){let s,i;if(typeof e=="string"?(s=Buffer.byteLength(e),i=!1):Xe(e)?(s=e.size,i=!1):(e=Re(e),s=e.length,i=Re.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[J]:s,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};Xe(e)?this._state!==ee?this.enqueue([this.getBlobData,e,!1,o,r]):this.getBlobData(e,!1,o,r):this._state!==ee?this.enqueue([this.dispatch,e,!1,o,r]):this.sendFrame(t.frame(e,o),r)}pong(e,n,r){let s,i;if(typeof e=="string"?(s=Buffer.byteLength(e),i=!1):Xe(e)?(s=e.size,i=!1):(e=Re(e),s=e.length,i=Re.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[J]:s,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};Xe(e)?this._state!==ee?this.enqueue([this.getBlobData,e,!1,o,r]):this.getBlobData(e,!1,o,r):this._state!==ee?this.enqueue([this.dispatch,e,!1,o,r]):this.sendFrame(t.frame(e,o),r)}send(e,n,r){let s=this._extensions[ki.extensionName],i=n.binary?2:1,o=n.compress,a,l;typeof e=="string"?(a=Buffer.byteLength(e),l=!1):Xe(e)?(a=e.size,l=!1):(e=Re(e),a=e.length,l=Re.readOnly),this._firstFragment?(this._firstFragment=!1,o&&s&&s.params[s._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(o=a>=s._threshold),this._compress=o):(o=!1,i=0),n.fin&&(this._firstFragment=!0);let c={[J]:a,fin:n.fin,generateMask:this._generateMask,mask:n.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:l,rsv1:o};Xe(e)?this._state!==ee?this.enqueue([this.getBlobData,e,this._compress,c,r]):this.getBlobData(e,this._compress,c,r):this._state!==ee?this.enqueue([this.dispatch,e,this._compress,c,r]):this.dispatch(e,this._compress,c,r)}getBlobData(e,n,r,s){this._bufferedBytes+=r[J],this._state=Du,e.arrayBuffer().then(i=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(Tr,this,a,s);return}this._bufferedBytes-=r[J];let o=Re(i);n?this.dispatch(o,n,r,s):(this._state=ee,this.sendFrame(t.frame(o,r),s),this.dequeue())}).catch(i=>{process.nextTick(Hu,this,i,s)})}dispatch(e,n,r,s){if(!n){this.sendFrame(t.frame(e,r),s);return}let i=this._extensions[ki.extensionName];this._bufferedBytes+=r[J],this._state=Bu,i.compress(e,r.fin,(o,a)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");Tr(this,l,s);return}this._bufferedBytes-=r[J],this._state=ee,r.readOnly=!1,this.sendFrame(t.frame(a,r),s),this.dequeue()})}dequeue(){for(;this._state===ee&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][J],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][J],this._queue.push(e)}sendFrame(e,n){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],n),this._socket.uncork()):this._socket.write(e[0],n)}};Pi.exports=xr;function Tr(t,e,n){typeof n=="function"&&n(e);for(let r=0;r<t._queue.length;r++){let s=t._queue[r],i=s[s.length-1];typeof i=="function"&&i(e)}}function Hu(t,e,n){Tr(t,e,n),t.onerror(e)}});var Fi=m((sm,Hi)=>{"use strict";var{kForOnEventAttribute:Pt,kListener:Er}=ce(),Ri=Symbol("kCode"),Li=Symbol("kData"),Mi=Symbol("kError"),Ni=Symbol("kMessage"),Oi=Symbol("kReason"),Qe=Symbol("kTarget"),Bi=Symbol("kType"),Di=Symbol("kWasClean"),de=class{constructor(e){this[Qe]=null,this[Bi]=e}get target(){return this[Qe]}get type(){return this[Bi]}};Object.defineProperty(de.prototype,"target",{enumerable:!0});Object.defineProperty(de.prototype,"type",{enumerable:!0});var Me=class extends de{constructor(e,n={}){super(e),this[Ri]=n.code===void 0?0:n.code,this[Oi]=n.reason===void 0?"":n.reason,this[Di]=n.wasClean===void 0?!1:n.wasClean}get code(){return this[Ri]}get reason(){return this[Oi]}get wasClean(){return this[Di]}};Object.defineProperty(Me.prototype,"code",{enumerable:!0});Object.defineProperty(Me.prototype,"reason",{enumerable:!0});Object.defineProperty(Me.prototype,"wasClean",{enumerable:!0});var et=class extends de{constructor(e,n={}){super(e),this[Mi]=n.error===void 0?null:n.error,this[Ni]=n.message===void 0?"":n.message}get error(){return this[Mi]}get message(){return this[Ni]}};Object.defineProperty(et.prototype,"error",{enumerable:!0});Object.defineProperty(et.prototype,"message",{enumerable:!0});var Rt=class extends de{constructor(e,n={}){super(e),this[Li]=n.data===void 0?null:n.data}get data(){return this[Li]}};Object.defineProperty(Rt.prototype,"data",{enumerable:!0});var Fu={addEventListener(t,e,n={}){for(let s of this.listeners(t))if(!n[Pt]&&s[Er]===e&&!s[Pt])return;let r;if(t==="message")r=function(i,o){let a=new Rt("message",{data:o?i:i.toString()});a[Qe]=this,yn(e,this,a)};else if(t==="close")r=function(i,o){let a=new Me("close",{code:i,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[Qe]=this,yn(e,this,a)};else if(t==="error")r=function(i){let o=new et("error",{error:i,message:i.message});o[Qe]=this,yn(e,this,o)};else if(t==="open")r=function(){let i=new de("open");i[Qe]=this,yn(e,this,i)};else return;r[Pt]=!!n[Pt],r[Er]=e,n.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let n of this.listeners(t))if(n[Er]===e&&!n[Pt]){this.removeListener(t,n);break}}};Hi.exports={CloseEvent:Me,ErrorEvent:et,Event:de,EventTarget:Fu,MessageEvent:Rt};function yn(t,e,n){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,n):t.call(e,n)}});var kr=m((im,Ui)=>{"use strict";var{tokenChars:Lt}=Ke();function ie(t,e,n){t[e]===void 0?t[e]=[n]:t[e].push(n)}function Uu(t){let e=Object.create(null),n=Object.create(null),r=!1,s=!1,i=!1,o,a,l=-1,c=-1,u=-1,d=0;for(;d<t.length;d++)if(c=t.charCodeAt(d),o===void 0)if(u===-1&&Lt[c]===1)l===-1&&(l=d);else if(d!==0&&(c===32||c===9))u===-1&&l!==-1&&(u=d);else if(c===59||c===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let h=t.slice(l,u);c===44?(ie(e,h,n),n=Object.create(null)):o=h,l=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);else if(a===void 0)if(u===-1&&Lt[c]===1)l===-1&&(l=d);else if(c===32||c===9)u===-1&&l!==-1&&(u=d);else if(c===59||c===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d),ie(n,t.slice(l,u),!0),c===44&&(ie(e,o,n),n=Object.create(null),o=void 0),l=u=-1}else if(c===61&&l!==-1&&u===-1)a=t.slice(l,d),l=u=-1;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(s){if(Lt[c]!==1)throw new SyntaxError(`Unexpected character at index ${d}`);l===-1?l=d:r||(r=!0),s=!1}else if(i)if(Lt[c]===1)l===-1&&(l=d);else if(c===34&&l!==-1)i=!1,u=d;else if(c===92)s=!0;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(c===34&&t.charCodeAt(d-1)===61)i=!0;else if(u===-1&&Lt[c]===1)l===-1&&(l=d);else if(l!==-1&&(c===32||c===9))u===-1&&(u=d);else if(c===59||c===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);u===-1&&(u=d);let h=t.slice(l,u);r&&(h=h.replace(/\\/g,""),r=!1),ie(n,a,h),c===44&&(ie(e,o,n),n=Object.create(null),o=void 0),a=void 0,l=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);if(l===-1||i||c===32||c===9)throw new SyntaxError("Unexpected end of input");u===-1&&(u=d);let f=t.slice(l,u);return o===void 0?ie(e,f,n):(a===void 0?ie(n,f,!0):r?ie(n,a,f.replace(/\\/g,"")):ie(n,a,f),ie(e,o,n)),e}function qu(t){return Object.keys(t).map(e=>{let n=t[e];return Array.isArray(n)||(n=[n]),n.map(r=>[e].concat(Object.keys(r).map(s=>{let i=r[s];return Array.isArray(i)||(i=[i]),i.map(o=>o===!0?s:`${s}=${o}`).join("; ")})).join("; ")).join(", ")}).join(", ")}Ui.exports={format:qu,parse:Uu}});var wn=m((lm,Zi)=>{"use strict";var Wu=require("events"),ju=require("https"),Gu=require("http"),ji=require("net"),$u=require("tls"),{randomBytes:zu,createHash:Vu}=require("crypto"),{Duplex:om,Readable:am}=require("stream"),{URL:Cr}=require("url"),ye=Ct(),Yu=Ir(),Ju=Ar(),{isBlob:Ku}=Ke(),{BINARY_TYPES:qi,CLOSE_TIMEOUT:Xu,EMPTY_BUFFER:Sn,GUID:Zu,kForOnEventAttribute:Pr,kListener:Qu,kStatusCode:ed,kWebSocket:N,NOOP:Gi}=ce(),{EventTarget:{addEventListener:td,removeEventListener:nd}}=Fi(),{format:rd,parse:sd}=kr(),{toBuffer:id}=Et(),$i=Symbol("kAborted"),Rr=[8,13],fe=["CONNECTING","OPEN","CLOSING","CLOSED"],od=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,T=class t extends Wu{constructor(e,n,r){super(),this._binaryType=qi[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Sn,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=t.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,n===void 0?n=[]:Array.isArray(n)||(typeof n=="object"&&n!==null?(r=n,n=[]):n=[n]),zi(this,e,n,r)):(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){qi.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,n,r){let s=new Yu({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),i=new Ju(e,this._extensions,r.generateMask);this._receiver=s,this._sender=i,this._socket=e,s[N]=this,i[N]=this,e[N]=this,s.on("conclude",cd),s.on("drain",ud),s.on("error",dd),s.on("message",fd),s.on("ping",hd),s.on("pong",pd),i.onerror=gd,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),n.length>0&&e.unshift(n),e.on("close",Ji),e.on("data",vn),e.on("end",Ki),e.on("error",Xi),this._readyState=t.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[ye.extensionName]&&this._extensions[ye.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,n){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){$(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===t.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=t.CLOSING,this._sender.close(e,n,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Yi(this)}}pause(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,n,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=n=void 0):typeof n=="function"&&(r=n,n=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Lr(this,e,r);return}n===void 0&&(n=!this._isServer),this._sender.ping(e||Sn,n,r)}pong(e,n,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=n=void 0):typeof n=="function"&&(r=n,n=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Lr(this,e,r);return}n===void 0&&(n=!this._isServer),this._sender.pong(e||Sn,n,r)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,n,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof n=="function"&&(r=n,n={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Lr(this,e,r);return}let s={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[ye.extensionName]||(s.compress=!1),this._sender.send(e||Sn,s,r)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){$(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(T,"CONNECTING",{enumerable:!0,value:fe.indexOf("CONNECTING")});Object.defineProperty(T.prototype,"CONNECTING",{enumerable:!0,value:fe.indexOf("CONNECTING")});Object.defineProperty(T,"OPEN",{enumerable:!0,value:fe.indexOf("OPEN")});Object.defineProperty(T.prototype,"OPEN",{enumerable:!0,value:fe.indexOf("OPEN")});Object.defineProperty(T,"CLOSING",{enumerable:!0,value:fe.indexOf("CLOSING")});Object.defineProperty(T.prototype,"CLOSING",{enumerable:!0,value:fe.indexOf("CLOSING")});Object.defineProperty(T,"CLOSED",{enumerable:!0,value:fe.indexOf("CLOSED")});Object.defineProperty(T.prototype,"CLOSED",{enumerable:!0,value:fe.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(T.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(T.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[Pr])return e[Qu];return null},set(e){for(let n of this.listeners(t))if(n[Pr]){this.removeListener(t,n);break}typeof e=="function"&&this.addEventListener(t,e,{[Pr]:!0})}})});T.prototype.addEventListener=td;T.prototype.removeEventListener=nd;Zi.exports=T;function zi(t,e,n,r){let s={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:Xu,protocolVersion:Rr[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(t._autoPong=s.autoPong,t._closeTimeout=s.closeTimeout,!Rr.includes(s.protocolVersion))throw new RangeError(`Unsupported protocol version: ${s.protocolVersion} (supported versions: ${Rr.join(", ")})`);let i;if(e instanceof Cr)i=e;else try{i=new Cr(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}i.protocol==="http:"?i.protocol="ws:":i.protocol==="https:"&&(i.protocol="wss:"),t._url=i.href;let o=i.protocol==="wss:",a=i.protocol==="ws+unix:",l;if(i.protocol!=="ws:"&&!o&&!a?l=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!i.pathname?l="The URL's pathname is empty":i.hash&&(l="The URL contains a fragment identifier"),l){let g=new SyntaxError(l);if(t._redirects===0)throw g;_n(t,g);return}let c=o?443:80,u=zu(16).toString("base64"),d=o?ju.request:Gu.request,f=new Set,h;if(s.createConnection=s.createConnection||(o?ld:ad),s.defaultPort=s.defaultPort||c,s.port=i.port||c,s.host=i.hostname.startsWith("[")?i.hostname.slice(1,-1):i.hostname,s.headers={...s.headers,"Sec-WebSocket-Version":s.protocolVersion,"Sec-WebSocket-Key":u,Connection:"Upgrade",Upgrade:"websocket"},s.path=i.pathname+i.search,s.timeout=s.handshakeTimeout,s.perMessageDeflate&&(h=new ye(s.perMessageDeflate!==!0?s.perMessageDeflate:{},!1,s.maxPayload),s.headers["Sec-WebSocket-Extensions"]=rd({[ye.extensionName]:h.offer()})),n.length){for(let g of n){if(typeof g!="string"||!od.test(g)||f.has(g))throw new SyntaxError("An invalid or duplicated subprotocol was specified");f.add(g)}s.headers["Sec-WebSocket-Protocol"]=n.join(",")}if(s.origin&&(s.protocolVersion<13?s.headers["Sec-WebSocket-Origin"]=s.origin:s.headers.Origin=s.origin),(i.username||i.password)&&(s.auth=`${i.username}:${i.password}`),a){let g=s.path.split(":");s.socketPath=g[0],s.path=g[1]}let p;if(s.followRedirects){if(t._redirects===0){t._originalIpc=a,t._originalSecure=o,t._originalHostOrSocketPath=a?s.socketPath:i.host;let g=r&&r.headers;if(r={...r,headers:{}},g)for(let[y,S]of Object.entries(g))r.headers[y.toLowerCase()]=S}else if(t.listenerCount("redirect")===0){let g=a?t._originalIpc?s.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:i.host===t._originalHostOrSocketPath;(!g||t._originalSecure&&!o)&&(delete s.headers.authorization,delete s.headers.cookie,g||delete s.headers.host,s.auth=void 0)}s.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(s.auth).toString("base64")),p=t._req=d(s),t._redirects&&t.emit("redirect",t.url,p)}else p=t._req=d(s);s.timeout&&p.on("timeout",()=>{$(t,p,"Opening handshake has timed out")}),p.on("error",g=>{p===null||p[$i]||(p=t._req=null,_n(t,g))}),p.on("response",g=>{let y=g.headers.location,S=g.statusCode;if(y&&s.followRedirects&&S>=300&&S<400){if(++t._redirects>s.maxRedirects){$(t,p,"Maximum redirects exceeded");return}p.abort();let G;try{G=new Cr(y,e)}catch{let E=new SyntaxError(`Invalid URL: ${y}`);_n(t,E);return}zi(t,G,n,r)}else t.emit("unexpected-response",p,g)||$(t,p,`Unexpected server response: ${g.statusCode}`)}),p.on("upgrade",(g,y,S)=>{if(t.emit("upgrade",g),t.readyState!==T.CONNECTING)return;p=t._req=null;let G=g.headers.upgrade;if(G===void 0||G.toLowerCase()!=="websocket"){$(t,y,"Invalid Upgrade header");return}let re=Vu("sha1").update(u+Zu).digest("base64");if(g.headers["sec-websocket-accept"]!==re){$(t,y,"Invalid Sec-WebSocket-Accept header");return}let E=g.headers["sec-websocket-protocol"],M;if(E!==void 0?f.size?f.has(E)||(M="Server sent an invalid subprotocol"):M="Server sent a subprotocol but none was requested":f.size&&(M="Server sent no subprotocol"),M){$(t,y,M);return}E&&(t._protocol=E);let V=g.headers["sec-websocket-extensions"];if(V!==void 0){if(!h){$(t,y,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let se;try{se=sd(V)}catch{$(t,y,"Invalid Sec-WebSocket-Extensions header");return}let ze=Object.keys(se);if(ze.length!==1||ze[0]!==ye.extensionName){$(t,y,"Server indicated an extension that was not requested");return}try{h.accept(se[ye.extensionName])}catch{$(t,y,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[ye.extensionName]=h}t.setSocket(y,S,{allowSynchronousEvents:s.allowSynchronousEvents,generateMask:s.generateMask,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation})}),s.finishRequest?s.finishRequest(p,t):p.end()}function _n(t,e){t._readyState=T.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function ad(t){return t.path=t.socketPath,ji.connect(t)}function ld(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=ji.isIP(t.host)?"":t.host),$u.connect(t)}function $(t,e,n){t._readyState=T.CLOSING;let r=new Error(n);Error.captureStackTrace(r,$),e.setHeader?(e[$i]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(_n,t,r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Lr(t,e,n){if(e){let r=Ku(e)?e.size:id(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(n){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${fe[t.readyState]})`);process.nextTick(n,r)}}function cd(t,e){let n=this[N];n._closeFrameReceived=!0,n._closeMessage=e,n._closeCode=t,n._socket[N]!==void 0&&(n._socket.removeListener("data",vn),process.nextTick(Vi,n._socket),t===1005?n.close():n.close(t,e))}function ud(){let t=this[N];t.isPaused||t._socket.resume()}function dd(t){let e=this[N];e._socket[N]!==void 0&&(e._socket.removeListener("data",vn),process.nextTick(Vi,e._socket),e.close(t[ed])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function Wi(){this[N].emitClose()}function fd(t,e){this[N].emit("message",t,e)}function hd(t){let e=this[N];e._autoPong&&e.pong(t,!this._isServer,Gi),e.emit("ping",t)}function pd(t){this[N].emit("pong",t)}function Vi(t){t.resume()}function gd(t){let e=this[N];e.readyState!==T.CLOSED&&(e.readyState===T.OPEN&&(e._readyState=T.CLOSING,Yi(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function Yi(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function Ji(){let t=this[N];if(this.removeListener("close",Ji),this.removeListener("data",vn),this.removeListener("end",Ki),t._readyState=T.CLOSING,!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&this._readableState.length!==0){let e=this.read(this._readableState.length);t._receiver.write(e)}t._receiver.end(),this[N]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",Wi),t._receiver.on("finish",Wi))}function vn(t){this[N]._receiver.write(t)||this.pause()}function Ki(){let t=this[N];t._readyState=T.CLOSING,t._receiver.end(),this.end()}function Xi(){let t=this[N];this.removeListener("error",Xi),this.on("error",Gi),t&&(t._readyState=T.CLOSING,this.destroy())}});var no=m((um,to)=>{"use strict";var cm=wn(),{Duplex:md}=require("stream");function Qi(t){t.emit("close")}function yd(){!this.destroyed&&this._writableState.finished&&this.destroy()}function eo(t){this.removeListener("error",eo),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function Sd(t,e){let n=!0,r=new md({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(i,o){let a=!o&&r._readableState.objectMode?i.toString():i;r.push(a)||t.pause()}),t.once("error",function(i){r.destroyed||(n=!1,r.destroy(i))}),t.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(s,i){if(t.readyState===t.CLOSED){i(s),process.nextTick(Qi,r);return}let o=!1;t.once("error",function(l){o=!0,i(l)}),t.once("close",function(){o||i(s),process.nextTick(Qi,r)}),n&&t.terminate()},r._final=function(s){if(t.readyState===t.CONNECTING){t.once("open",function(){r._final(s)});return}t._socket!==null&&(t._socket._writableState.finished?(s(),r._readableState.endEmitted&&r.destroy()):(t._socket.once("finish",function(){s()}),t.close()))},r._read=function(){t.isPaused&&t.resume()},r._write=function(s,i,o){if(t.readyState===t.CONNECTING){t.once("open",function(){r._write(s,i,o)});return}t.send(s,o)},r.on("end",yd),r.on("error",eo),r}to.exports=Sd});var so=m((dm,ro)=>{"use strict";var{tokenChars:_d}=Ke();function vd(t){let e=new Set,n=-1,r=-1,s=0;for(s;s<t.length;s++){let o=t.charCodeAt(s);if(r===-1&&_d[o]===1)n===-1&&(n=s);else if(s!==0&&(o===32||o===9))r===-1&&n!==-1&&(r=s);else if(o===44){if(n===-1)throw new SyntaxError(`Unexpected character at index ${s}`);r===-1&&(r=s);let a=t.slice(n,r);if(e.has(a))throw new SyntaxError(`The "${a}" subprotocol is duplicated`);e.add(a),n=r=-1}else throw new SyntaxError(`Unexpected character at index ${s}`)}if(n===-1||r!==-1)throw new SyntaxError("Unexpected end of input");let i=t.slice(n,s);if(e.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);return e.add(i),e}ro.exports={parse:vd}});var fo=m((hm,uo)=>{"use strict";var wd=require("events"),bn=require("http"),{Duplex:fm}=require("stream"),{createHash:bd}=require("crypto"),io=kr(),Ne=Ct(),Id=so(),xd=wn(),{CLOSE_TIMEOUT:Td,GUID:Ad,kWebSocket:Ed}=ce(),kd=/^[+/0-9A-Za-z]{22}==$/,oo=0,ao=1,co=2,Mr=class extends wd{constructor(e,n){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:Td,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:xd,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=bn.createServer((r,s)=>{let i=bn.STATUS_CODES[426];s.writeHead(426,{"Content-Length":i.length,"Content-Type":"text/plain"}),s.end(i)}),this._server.listen(e.port,e.host,e.backlog,n)):e.server&&(this._server=e.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=Cd(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(s,i,o)=>{this.handleUpgrade(s,i,o,r)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=oo}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===co){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Mt,this);return}if(e&&this.once("close",e),this._state!==ao)if(this._state=ao,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(Mt,this):process.nextTick(Mt,this);else{let n=this._server;this._removeListeners(),this._removeListeners=this._server=null,n.close(()=>{Mt(this)})}}shouldHandle(e){if(this.options.path){let n=e.url.indexOf("?");if((n!==-1?e.url.slice(0,n):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,n,r,s){n.on("error",lo);let i=e.headers["sec-websocket-key"],o=e.headers.upgrade,a=+e.headers["sec-websocket-version"];if(e.method!=="GET"){Oe(this,e,n,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){Oe(this,e,n,400,"Invalid Upgrade header");return}if(i===void 0||!kd.test(i)){Oe(this,e,n,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){Oe(this,e,n,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){Nt(n,400);return}let l=e.headers["sec-websocket-protocol"],c=new Set;if(l!==void 0)try{c=Id.parse(l)}catch{Oe(this,e,n,400,"Invalid Sec-WebSocket-Protocol header");return}let u=e.headers["sec-websocket-extensions"],d={};if(this.options.perMessageDeflate&&u!==void 0){let f=new Ne(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let h=io.parse(u);h[Ne.extensionName]&&(f.accept(h[Ne.extensionName]),d[Ne.extensionName]=f)}catch{Oe(this,e,n,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let f={origin:e.headers[`${a===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(f,(h,p,g,y)=>{if(!h)return Nt(n,p||401,g,y);this.completeUpgrade(d,i,c,e,n,r,s)});return}if(!this.options.verifyClient(f))return Nt(n,401)}this.completeUpgrade(d,i,c,e,n,r,s)}completeUpgrade(e,n,r,s,i,o,a){if(!i.readable||!i.writable)return i.destroy();if(i[Ed])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>oo)return Nt(i,503);let c=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${bd("sha1").update(n+Ad).digest("base64")}`],u=new this.options.WebSocket(null,void 0,this.options);if(r.size){let d=this.options.handleProtocols?this.options.handleProtocols(r,s):r.values().next().value;d&&(c.push(`Sec-WebSocket-Protocol: ${d}`),u._protocol=d)}if(e[Ne.extensionName]){let d=e[Ne.extensionName].params,f=io.format({[Ne.extensionName]:[d]});c.push(`Sec-WebSocket-Extensions: ${f}`),u._extensions=e}this.emit("headers",c,s),i.write(c.concat(`\r
2
2
  `).join(`\r
3
- `)),i.removeListener("error",lo),u.setSocket(i,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(u),u.on("close",()=>{this.clients.delete(u),this._shouldEmitClose&&!this.clients.size&&process.nextTick(Mt,this)})),a(u,s)}};uo.exports=Pr;function Cd(t,e){for(let n of Object.keys(e))t.on(n,e[n]);return function(){for(let r of Object.keys(e))t.removeListener(r,e[r])}}function Mt(t){t._state=co,t.emit("close")}function lo(){this.destroy()}function Nt(t,e,n,r){n=n||bn.STATUS_CODES[e],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(n),...r},t.once("finish",t.destroy),t.end(`HTTP/1.1 ${e} ${bn.STATUS_CODES[e]}\r
3
+ `)),i.removeListener("error",lo),u.setSocket(i,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(u),u.on("close",()=>{this.clients.delete(u),this._shouldEmitClose&&!this.clients.size&&process.nextTick(Mt,this)})),a(u,s)}};uo.exports=Mr;function Cd(t,e){for(let n of Object.keys(e))t.on(n,e[n]);return function(){for(let r of Object.keys(e))t.removeListener(r,e[r])}}function Mt(t){t._state=co,t.emit("close")}function lo(){this.destroy()}function Nt(t,e,n,r){n=n||bn.STATUS_CODES[e],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(n),...r},t.once("finish",t.destroy),t.end(`HTTP/1.1 ${e} ${bn.STATUS_CODES[e]}\r
4
4
  `+Object.keys(r).map(s=>`${s}: ${r[s]}`).join(`\r
5
5
  `)+`\r
6
6
  \r
7
- `+n)}function Oe(t,e,n,r,s,i){if(t.listenerCount("wsClientError")){let o=new Error(s);Error.captureStackTrace(o,Oe),t.emit("wsClientError",o,n,e)}else Nt(n,r,s,i)}});var Mr=m((gm,ho)=>{ho.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var ye=m(Be=>{var Nr,Nd=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];Be.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};Be.getSymbolTotalCodewords=function(e){return Nd[e]};Be.getBCHDigit=function(t){let e=0;for(;t!==0;)e++,t>>>=1;return e};Be.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');Nr=e};Be.isKanjiModeEnabled=function(){return typeof Nr<"u"};Be.toSJIS=function(e){return Nr(e)}});var In=m(K=>{K.L={bit:1};K.M={bit:0};K.Q={bit:3};K.H={bit:2};function Od(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"l":case"low":return K.L;case"m":case"medium":return K.M;case"q":case"quartile":return K.Q;case"h":case"high":return K.H;default:throw new Error("Unknown EC Level: "+t)}}K.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};K.from=function(e,n){if(K.isValid(e))return e;try{return Od(e)}catch{return n}}});var mo=m((Sm,go)=>{function po(){this.buffer=[],this.length=0}po.prototype={get:function(t){let e=Math.floor(t/8);return(this.buffer[e]>>>7-t%8&1)===1},put:function(t,e){for(let n=0;n<e;n++)this.putBit((t>>>e-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(t){let e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}};go.exports=po});var So=m((_m,yo)=>{function Ot(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=new Uint8Array(t*t),this.reservedBit=new Uint8Array(t*t)}Ot.prototype.set=function(t,e,n,r){let s=t*this.size+e;this.data[s]=n,r&&(this.reservedBit[s]=!0)};Ot.prototype.get=function(t,e){return this.data[t*this.size+e]};Ot.prototype.xor=function(t,e,n){this.data[t*this.size+e]^=n};Ot.prototype.isReserved=function(t,e){return this.reservedBit[t*this.size+e]};yo.exports=Ot});var _o=m(xn=>{var Bd=ye().getSymbolSize;xn.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=Bd(e),s=r===145?26:Math.ceil((r-13)/(2*n-2))*2,i=[r-7];for(let o=1;o<n-1;o++)i[o]=i[o-1]-s;return i.push(6),i.reverse()};xn.getPositions=function(e){let n=[],r=xn.getRowColCoords(e),s=r.length;for(let i=0;i<s;i++)for(let o=0;o<s;o++)i===0&&o===0||i===0&&o===s-1||i===s-1&&o===0||n.push([r[i],r[o]]);return n}});var bo=m(wo=>{var Dd=ye().getSymbolSize,vo=7;wo.getPositions=function(e){let n=Dd(e);return[[0,0],[n-vo,0],[0,n-vo]]}});var Io=m(x=>{x.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var De={N1:3,N2:3,N3:40,N4:10};x.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};x.from=function(e){return x.isValid(e)?parseInt(e,10):void 0};x.getPenaltyN1=function(e){let n=e.size,r=0,s=0,i=0,o=null,a=null;for(let l=0;l<n;l++){s=i=0,o=a=null;for(let c=0;c<n;c++){let u=e.get(l,c);u===o?s++:(s>=5&&(r+=De.N1+(s-5)),o=u,s=1),u=e.get(c,l),u===a?i++:(i>=5&&(r+=De.N1+(i-5)),a=u,i=1)}s>=5&&(r+=De.N1+(s-5)),i>=5&&(r+=De.N1+(i-5))}return r};x.getPenaltyN2=function(e){let n=e.size,r=0;for(let s=0;s<n-1;s++)for(let i=0;i<n-1;i++){let o=e.get(s,i)+e.get(s,i+1)+e.get(s+1,i)+e.get(s+1,i+1);(o===4||o===0)&&r++}return r*De.N2};x.getPenaltyN3=function(e){let n=e.size,r=0,s=0,i=0;for(let o=0;o<n;o++){s=i=0;for(let a=0;a<n;a++)s=s<<1&2047|e.get(o,a),a>=10&&(s===1488||s===93)&&r++,i=i<<1&2047|e.get(a,o),a>=10&&(i===1488||i===93)&&r++}return r*De.N3};x.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let i=0;i<r;i++)n+=e.data[i];return Math.abs(Math.ceil(n*100/r/5)-10)*De.N4};function Hd(t,e,n){switch(t){case x.Patterns.PATTERN000:return(e+n)%2===0;case x.Patterns.PATTERN001:return e%2===0;case x.Patterns.PATTERN010:return n%3===0;case x.Patterns.PATTERN011:return(e+n)%3===0;case x.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(n/3))%2===0;case x.Patterns.PATTERN101:return e*n%2+e*n%3===0;case x.Patterns.PATTERN110:return(e*n%2+e*n%3)%2===0;case x.Patterns.PATTERN111:return(e*n%3+(e+n)%2)%2===0;default:throw new Error("bad maskPattern:"+t)}}x.applyMask=function(e,n){let r=n.size;for(let s=0;s<r;s++)for(let i=0;i<r;i++)n.isReserved(i,s)||n.xor(i,s,Hd(e,i,s))};x.getBestMask=function(e,n){let r=Object.keys(x.Patterns).length,s=0,i=1/0;for(let o=0;o<r;o++){n(o),x.applyMask(o,e);let a=x.getPenaltyN1(e)+x.getPenaltyN2(e)+x.getPenaltyN3(e)+x.getPenaltyN4(e);x.applyMask(o,e),a<i&&(i=a,s=o)}return s}});var Br=m(Or=>{var Se=In(),En=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],Tn=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];Or.getBlocksCount=function(e,n){switch(n){case Se.L:return En[(e-1)*4+0];case Se.M:return En[(e-1)*4+1];case Se.Q:return En[(e-1)*4+2];case Se.H:return En[(e-1)*4+3];default:return}};Or.getTotalCodewordsCount=function(e,n){switch(n){case Se.L:return Tn[(e-1)*4+0];case Se.M:return Tn[(e-1)*4+1];case Se.Q:return Tn[(e-1)*4+2];case Se.H:return Tn[(e-1)*4+3];default:return}}});var xo=m(kn=>{var Bt=new Uint8Array(512),An=new Uint8Array(256);(function(){let e=1;for(let n=0;n<255;n++)Bt[n]=e,An[e]=n,e<<=1,e&256&&(e^=285);for(let n=255;n<512;n++)Bt[n]=Bt[n-255]})();kn.log=function(e){if(e<1)throw new Error("log("+e+")");return An[e]};kn.exp=function(e){return Bt[e]};kn.mul=function(e,n){return e===0||n===0?0:Bt[An[e]+An[n]]}});var Eo=m(Dt=>{var Dr=xo();Dt.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let s=0;s<e.length;s++)for(let i=0;i<n.length;i++)r[s+i]^=Dr.mul(e[s],n[i]);return r};Dt.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let s=r[0];for(let o=0;o<n.length;o++)r[o]^=Dr.mul(n[o],s);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r};Dt.generateECPolynomial=function(e){let n=new Uint8Array([1]);for(let r=0;r<e;r++)n=Dt.mul(n,new Uint8Array([1,Dr.exp(r)]));return n}});var ko=m((Tm,Ao)=>{var To=Eo();function Hr(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}Hr.prototype.initialize=function(e){this.degree=e,this.genPoly=To.generateECPolynomial(this.degree)};Hr.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");let n=new Uint8Array(e.length+this.degree);n.set(e);let r=To.mod(n,this.genPoly),s=this.degree-r.length;if(s>0){let i=new Uint8Array(this.degree);return i.set(r,s),i}return r};Ao.exports=Hr});var Fr=m(Co=>{Co.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var Ur=m(he=>{var Ro="[0-9]+",Fd="[A-Z $%*+\\-./:]+",Ht="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Ht=Ht.replace(/u/g,"\\u");var Ud="(?:(?![A-Z0-9 $%*+\\-./:]|"+Ht+`)(?:.|[\r
8
- ]))+`;he.KANJI=new RegExp(Ht,"g");he.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");he.BYTE=new RegExp(Ud,"g");he.NUMERIC=new RegExp(Ro,"g");he.ALPHANUMERIC=new RegExp(Fd,"g");var qd=new RegExp("^"+Ht+"$"),Wd=new RegExp("^"+Ro+"$"),jd=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");he.testKanji=function(e){return qd.test(e)};he.testNumeric=function(e){return Wd.test(e)};he.testAlphanumeric=function(e){return jd.test(e)}});var _e=m(R=>{var Gd=Fr(),qr=Ur();R.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};R.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};R.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};R.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};R.MIXED={bit:-1};R.getCharCountIndicator=function(e,n){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!Gd.isValid(n))throw new Error("Invalid version: "+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]};R.getBestModeForData=function(e){return qr.testNumeric(e)?R.NUMERIC:qr.testAlphanumeric(e)?R.ALPHANUMERIC:qr.testKanji(e)?R.KANJI:R.BYTE};R.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};R.isValid=function(e){return e&&e.bit&&e.ccBits};function $d(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"numeric":return R.NUMERIC;case"alphanumeric":return R.ALPHANUMERIC;case"kanji":return R.KANJI;case"byte":return R.BYTE;default:throw new Error("Unknown mode: "+t)}}R.from=function(e,n){if(R.isValid(e))return e;try{return $d(e)}catch{return n}}});var Oo=m(He=>{var Cn=ye(),zd=Br(),Po=In(),ve=_e(),Wr=Fr(),Mo=7973,Lo=Cn.getBCHDigit(Mo);function Vd(t,e,n){for(let r=1;r<=40;r++)if(e<=He.getCapacity(r,n,t))return r}function No(t,e){return ve.getCharCountIndicator(t,e)+4}function Yd(t,e){let n=0;return t.forEach(function(r){let s=No(r.mode,e);n+=s+r.getBitsLength()}),n}function Jd(t,e){for(let n=1;n<=40;n++)if(Yd(t,n)<=He.getCapacity(n,e,ve.MIXED))return n}He.from=function(e,n){return Wr.isValid(e)?parseInt(e,10):n};He.getCapacity=function(e,n,r){if(!Wr.isValid(e))throw new Error("Invalid QR Code version");typeof r>"u"&&(r=ve.BYTE);let s=Cn.getSymbolTotalCodewords(e),i=zd.getTotalCodewordsCount(e,n),o=(s-i)*8;if(r===ve.MIXED)return o;let a=o-No(r,e);switch(r){case ve.NUMERIC:return Math.floor(a/10*3);case ve.ALPHANUMERIC:return Math.floor(a/11*2);case ve.KANJI:return Math.floor(a/13);case ve.BYTE:default:return Math.floor(a/8)}};He.getBestVersionForData=function(e,n){let r,s=Po.from(n,Po.M);if(Array.isArray(e)){if(e.length>1)return Jd(e,s);if(e.length===0)return 1;r=e[0]}else r=e;return Vd(r.mode,r.getLength(),s)};He.getEncodedBits=function(e){if(!Wr.isValid(e)||e<7)throw new Error("Invalid QR Code version");let n=e<<12;for(;Cn.getBCHDigit(n)-Lo>=0;)n^=Mo<<Cn.getBCHDigit(n)-Lo;return e<<12|n}});var Fo=m(Ho=>{var jr=ye(),Do=1335,Kd=21522,Bo=jr.getBCHDigit(Do);Ho.getEncodedBits=function(e,n){let r=e.bit<<3|n,s=r<<10;for(;jr.getBCHDigit(s)-Bo>=0;)s^=Do<<jr.getBCHDigit(s)-Bo;return(r<<10|s)^Kd}});var qo=m((Lm,Uo)=>{var Xd=_e();function tt(t){this.mode=Xd.NUMERIC,this.data=t.toString()}tt.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};tt.prototype.getLength=function(){return this.data.length};tt.prototype.getBitsLength=function(){return tt.getBitsLength(this.data.length)};tt.prototype.write=function(e){let n,r,s;for(n=0;n+3<=this.data.length;n+=3)r=this.data.substr(n,3),s=parseInt(r,10),e.put(s,10);let i=this.data.length-n;i>0&&(r=this.data.substr(n),s=parseInt(r,10),e.put(s,i*3+1))};Uo.exports=tt});var jo=m((Mm,Wo)=>{var Zd=_e(),Gr=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function nt(t){this.mode=Zd.ALPHANUMERIC,this.data=t}nt.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};nt.prototype.getLength=function(){return this.data.length};nt.prototype.getBitsLength=function(){return nt.getBitsLength(this.data.length)};nt.prototype.write=function(e){let n;for(n=0;n+2<=this.data.length;n+=2){let r=Gr.indexOf(this.data[n])*45;r+=Gr.indexOf(this.data[n+1]),e.put(r,11)}this.data.length%2&&e.put(Gr.indexOf(this.data[n]),6)};Wo.exports=nt});var $o=m((Nm,Go)=>{var Qd=_e();function rt(t){this.mode=Qd.BYTE,typeof t=="string"?this.data=new TextEncoder().encode(t):this.data=new Uint8Array(t)}rt.getBitsLength=function(e){return e*8};rt.prototype.getLength=function(){return this.data.length};rt.prototype.getBitsLength=function(){return rt.getBitsLength(this.data.length)};rt.prototype.write=function(t){for(let e=0,n=this.data.length;e<n;e++)t.put(this.data[e],8)};Go.exports=rt});var Vo=m((Om,zo)=>{var ef=_e(),tf=ye();function st(t){this.mode=ef.KANJI,this.data=t}st.getBitsLength=function(e){return e*13};st.prototype.getLength=function(){return this.data.length};st.prototype.getBitsLength=function(){return st.getBitsLength(this.data.length)};st.prototype.write=function(t){let e;for(e=0;e<this.data.length;e++){let n=tf.toSJIS(this.data[e]);if(n>=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+`
9
- Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),t.put(n,13)}};zo.exports=st});var Yo=m((Bm,$r)=>{"use strict";var Ft={single_source_shortest_paths:function(t,e,n){var r={},s={};s[e]=0;var i=Ft.PriorityQueue.make();i.push(e,0);for(var o,a,l,c,u,d,f,h,g;!i.empty();){o=i.pop(),a=o.value,c=o.cost,u=t[a]||{};for(l in u)u.hasOwnProperty(l)&&(d=u[l],f=c+d,h=s[l],g=typeof s[l]>"u",(g||h>f)&&(s[l]=f,i.push(l,f),r[l]=a))}if(typeof n<"u"&&typeof s[n]>"u"){var p=["Could not find a path from ",e," to ",n,"."].join("");throw new Error(p)}return r},extract_shortest_path_from_predecessor_list:function(t,e){for(var n=[],r=e,s;r;)n.push(r),s=t[r],r=t[r];return n.reverse(),n},find_path:function(t,e,n){var r=Ft.single_source_shortest_paths(t,e,n);return Ft.extract_shortest_path_from_predecessor_list(r,n)},PriorityQueue:{make:function(t){var e=Ft.PriorityQueue,n={},r;t=t||{};for(r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);return n.queue=[],n.sorter=t.sorter||e.default_sorter,n},default_sorter:function(t,e){return t.cost-e.cost},push:function(t,e){var n={value:t,cost:e};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};typeof $r<"u"&&($r.exports=Ft)});var na=m(it=>{var I=_e(),Xo=qo(),Zo=jo(),Qo=$o(),ea=Vo(),Ut=Ur(),Rn=ye(),nf=Yo();function Jo(t){return unescape(encodeURIComponent(t)).length}function qt(t,e,n){let r=[],s;for(;(s=t.exec(n))!==null;)r.push({data:s[0],index:s.index,mode:e,length:s[0].length});return r}function ta(t){let e=qt(Ut.NUMERIC,I.NUMERIC,t),n=qt(Ut.ALPHANUMERIC,I.ALPHANUMERIC,t),r,s;return Rn.isKanjiModeEnabled()?(r=qt(Ut.BYTE,I.BYTE,t),s=qt(Ut.KANJI,I.KANJI,t)):(r=qt(Ut.BYTE_KANJI,I.BYTE,t),s=[]),e.concat(n,r,s).sort(function(o,a){return o.index-a.index}).map(function(o){return{data:o.data,mode:o.mode,length:o.length}})}function zr(t,e){switch(e){case I.NUMERIC:return Xo.getBitsLength(t);case I.ALPHANUMERIC:return Zo.getBitsLength(t);case I.KANJI:return ea.getBitsLength(t);case I.BYTE:return Qo.getBitsLength(t)}}function rf(t){return t.reduce(function(e,n){let r=e.length-1>=0?e[e.length-1]:null;return r&&r.mode===n.mode?(e[e.length-1].data+=n.data,e):(e.push(n),e)},[])}function sf(t){let e=[];for(let n=0;n<t.length;n++){let r=t[n];switch(r.mode){case I.NUMERIC:e.push([r,{data:r.data,mode:I.ALPHANUMERIC,length:r.length},{data:r.data,mode:I.BYTE,length:r.length}]);break;case I.ALPHANUMERIC:e.push([r,{data:r.data,mode:I.BYTE,length:r.length}]);break;case I.KANJI:e.push([r,{data:r.data,mode:I.BYTE,length:Jo(r.data)}]);break;case I.BYTE:e.push([{data:r.data,mode:I.BYTE,length:Jo(r.data)}])}}return e}function of(t,e){let n={},r={start:{}},s=["start"];for(let i=0;i<t.length;i++){let o=t[i],a=[];for(let l=0;l<o.length;l++){let c=o[l],u=""+i+l;a.push(u),n[u]={node:c,lastCount:0},r[u]={};for(let d=0;d<s.length;d++){let f=s[d];n[f]&&n[f].node.mode===c.mode?(r[f][u]=zr(n[f].lastCount+c.length,c.mode)-zr(n[f].lastCount,c.mode),n[f].lastCount+=c.length):(n[f]&&(n[f].lastCount=c.length),r[f][u]=zr(c.length,c.mode)+4+I.getCharCountIndicator(c.mode,e))}}s=a}for(let i=0;i<s.length;i++)r[s[i]].end=0;return{map:r,table:n}}function Ko(t,e){let n,r=I.getBestModeForData(t);if(n=I.from(e,r),n!==I.BYTE&&n.bit<r.bit)throw new Error('"'+t+'" cannot be encoded with mode '+I.toString(n)+`.
10
- Suggested mode is: `+I.toString(r));switch(n===I.KANJI&&!Rn.isKanjiModeEnabled()&&(n=I.BYTE),n){case I.NUMERIC:return new Xo(t);case I.ALPHANUMERIC:return new Zo(t);case I.KANJI:return new ea(t);case I.BYTE:return new Qo(t)}}it.fromArray=function(e){return e.reduce(function(n,r){return typeof r=="string"?n.push(Ko(r,null)):r.data&&n.push(Ko(r.data,r.mode)),n},[])};it.fromString=function(e,n){let r=ta(e,Rn.isKanjiModeEnabled()),s=sf(r),i=of(s,n),o=nf.find_path(i.map,"start","end"),a=[];for(let l=1;l<o.length-1;l++)a.push(i.table[o[l]].node);return it.fromArray(rf(a))};it.rawSplit=function(e){return it.fromArray(ta(e,Rn.isKanjiModeEnabled()))}});var Zr=m(ra=>{var Ln=ye(),Vr=In(),af=mo(),lf=So(),cf=_o(),uf=bo(),Kr=Io(),Xr=Br(),df=ko(),Pn=Oo(),ff=Fo(),hf=_e(),Yr=na();function pf(t,e){let n=t.size,r=uf.getPositions(e);for(let s=0;s<r.length;s++){let i=r[s][0],o=r[s][1];for(let a=-1;a<=7;a++)if(!(i+a<=-1||n<=i+a))for(let l=-1;l<=7;l++)o+l<=-1||n<=o+l||(a>=0&&a<=6&&(l===0||l===6)||l>=0&&l<=6&&(a===0||a===6)||a>=2&&a<=4&&l>=2&&l<=4?t.set(i+a,o+l,!0,!0):t.set(i+a,o+l,!1,!0))}}function gf(t){let e=t.size;for(let n=8;n<e-8;n++){let r=n%2===0;t.set(n,6,r,!0),t.set(6,n,r,!0)}}function mf(t,e){let n=cf.getPositions(e);for(let r=0;r<n.length;r++){let s=n[r][0],i=n[r][1];for(let o=-2;o<=2;o++)for(let a=-2;a<=2;a++)o===-2||o===2||a===-2||a===2||o===0&&a===0?t.set(s+o,i+a,!0,!0):t.set(s+o,i+a,!1,!0)}}function yf(t,e){let n=t.size,r=Pn.getEncodedBits(e),s,i,o;for(let a=0;a<18;a++)s=Math.floor(a/3),i=a%3+n-8-3,o=(r>>a&1)===1,t.set(s,i,o,!0),t.set(i,s,o,!0)}function Jr(t,e,n){let r=t.size,s=ff.getEncodedBits(e,n),i,o;for(i=0;i<15;i++)o=(s>>i&1)===1,i<6?t.set(i,8,o,!0):i<8?t.set(i+1,8,o,!0):t.set(r-15+i,8,o,!0),i<8?t.set(8,r-i-1,o,!0):i<9?t.set(8,15-i-1+1,o,!0):t.set(8,15-i-1,o,!0);t.set(r-8,8,1,!0)}function Sf(t,e){let n=t.size,r=-1,s=n-1,i=7,o=0;for(let a=n-1;a>0;a-=2)for(a===6&&a--;;){for(let l=0;l<2;l++)if(!t.isReserved(s,a-l)){let c=!1;o<e.length&&(c=(e[o]>>>i&1)===1),t.set(s,a-l,c),i--,i===-1&&(o++,i=7)}if(s+=r,s<0||n<=s){s-=r,r=-r;break}}}function _f(t,e,n){let r=new af;n.forEach(function(l){r.put(l.mode.bit,4),r.put(l.getLength(),hf.getCharCountIndicator(l.mode,t)),l.write(r)});let s=Ln.getSymbolTotalCodewords(t),i=Xr.getTotalCodewordsCount(t,e),o=(s-i)*8;for(r.getLengthInBits()+4<=o&&r.put(0,4);r.getLengthInBits()%8!==0;)r.putBit(0);let a=(o-r.getLengthInBits())/8;for(let l=0;l<a;l++)r.put(l%2?17:236,8);return vf(r,t,e)}function vf(t,e,n){let r=Ln.getSymbolTotalCodewords(e),s=Xr.getTotalCodewordsCount(e,n),i=r-s,o=Xr.getBlocksCount(e,n),a=r%o,l=o-a,c=Math.floor(r/o),u=Math.floor(i/o),d=u+1,f=c-u,h=new df(f),g=0,p=new Array(o),y=new Array(o),S=0,G=new Uint8Array(t.buffer);for(let se=0;se<o;se++){let ze=se<l?u:d;p[se]=G.slice(g,g+ze),y[se]=h.encode(p[se]),g+=ze,S=Math.max(S,ze)}let re=new Uint8Array(r),A=0,M,V;for(M=0;M<S;M++)for(V=0;V<o;V++)M<p[V].length&&(re[A++]=p[V][M]);for(M=0;M<f;M++)for(V=0;V<o;V++)re[A++]=y[V][M];return re}function wf(t,e,n,r){let s;if(Array.isArray(t))s=Yr.fromArray(t);else if(typeof t=="string"){let c=e;if(!c){let u=Yr.rawSplit(t);c=Pn.getBestVersionForData(u,n)}s=Yr.fromString(t,c||40)}else throw new Error("Invalid data");let i=Pn.getBestVersionForData(s,n);if(!i)throw new Error("The amount of data is too big to be stored in a QR Code");if(!e)e=i;else if(e<i)throw new Error(`
7
+ `+n)}function Oe(t,e,n,r,s,i){if(t.listenerCount("wsClientError")){let o=new Error(s);Error.captureStackTrace(o,Oe),t.emit("wsClientError",o,n,e)}else Nt(n,r,s,i)}});var Or=m((gm,ho)=>{ho.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var Se=m(Be=>{var Br,Nd=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];Be.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};Be.getSymbolTotalCodewords=function(e){return Nd[e]};Be.getBCHDigit=function(t){let e=0;for(;t!==0;)e++,t>>>=1;return e};Be.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');Br=e};Be.isKanjiModeEnabled=function(){return typeof Br<"u"};Be.toSJIS=function(e){return Br(e)}});var In=m(K=>{K.L={bit:1};K.M={bit:0};K.Q={bit:3};K.H={bit:2};function Od(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"l":case"low":return K.L;case"m":case"medium":return K.M;case"q":case"quartile":return K.Q;case"h":case"high":return K.H;default:throw new Error("Unknown EC Level: "+t)}}K.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};K.from=function(e,n){if(K.isValid(e))return e;try{return Od(e)}catch{return n}}});var mo=m((Sm,go)=>{function po(){this.buffer=[],this.length=0}po.prototype={get:function(t){let e=Math.floor(t/8);return(this.buffer[e]>>>7-t%8&1)===1},put:function(t,e){for(let n=0;n<e;n++)this.putBit((t>>>e-n-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(t){let e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}};go.exports=po});var So=m((_m,yo)=>{function Ot(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=new Uint8Array(t*t),this.reservedBit=new Uint8Array(t*t)}Ot.prototype.set=function(t,e,n,r){let s=t*this.size+e;this.data[s]=n,r&&(this.reservedBit[s]=!0)};Ot.prototype.get=function(t,e){return this.data[t*this.size+e]};Ot.prototype.xor=function(t,e,n){this.data[t*this.size+e]^=n};Ot.prototype.isReserved=function(t,e){return this.reservedBit[t*this.size+e]};yo.exports=Ot});var _o=m(xn=>{var Bd=Se().getSymbolSize;xn.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=Bd(e),s=r===145?26:Math.ceil((r-13)/(2*n-2))*2,i=[r-7];for(let o=1;o<n-1;o++)i[o]=i[o-1]-s;return i.push(6),i.reverse()};xn.getPositions=function(e){let n=[],r=xn.getRowColCoords(e),s=r.length;for(let i=0;i<s;i++)for(let o=0;o<s;o++)i===0&&o===0||i===0&&o===s-1||i===s-1&&o===0||n.push([r[i],r[o]]);return n}});var bo=m(wo=>{var Dd=Se().getSymbolSize,vo=7;wo.getPositions=function(e){let n=Dd(e);return[[0,0],[n-vo,0],[0,n-vo]]}});var Io=m(x=>{x.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var De={N1:3,N2:3,N3:40,N4:10};x.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};x.from=function(e){return x.isValid(e)?parseInt(e,10):void 0};x.getPenaltyN1=function(e){let n=e.size,r=0,s=0,i=0,o=null,a=null;for(let l=0;l<n;l++){s=i=0,o=a=null;for(let c=0;c<n;c++){let u=e.get(l,c);u===o?s++:(s>=5&&(r+=De.N1+(s-5)),o=u,s=1),u=e.get(c,l),u===a?i++:(i>=5&&(r+=De.N1+(i-5)),a=u,i=1)}s>=5&&(r+=De.N1+(s-5)),i>=5&&(r+=De.N1+(i-5))}return r};x.getPenaltyN2=function(e){let n=e.size,r=0;for(let s=0;s<n-1;s++)for(let i=0;i<n-1;i++){let o=e.get(s,i)+e.get(s,i+1)+e.get(s+1,i)+e.get(s+1,i+1);(o===4||o===0)&&r++}return r*De.N2};x.getPenaltyN3=function(e){let n=e.size,r=0,s=0,i=0;for(let o=0;o<n;o++){s=i=0;for(let a=0;a<n;a++)s=s<<1&2047|e.get(o,a),a>=10&&(s===1488||s===93)&&r++,i=i<<1&2047|e.get(a,o),a>=10&&(i===1488||i===93)&&r++}return r*De.N3};x.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let i=0;i<r;i++)n+=e.data[i];return Math.abs(Math.ceil(n*100/r/5)-10)*De.N4};function Hd(t,e,n){switch(t){case x.Patterns.PATTERN000:return(e+n)%2===0;case x.Patterns.PATTERN001:return e%2===0;case x.Patterns.PATTERN010:return n%3===0;case x.Patterns.PATTERN011:return(e+n)%3===0;case x.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(n/3))%2===0;case x.Patterns.PATTERN101:return e*n%2+e*n%3===0;case x.Patterns.PATTERN110:return(e*n%2+e*n%3)%2===0;case x.Patterns.PATTERN111:return(e*n%3+(e+n)%2)%2===0;default:throw new Error("bad maskPattern:"+t)}}x.applyMask=function(e,n){let r=n.size;for(let s=0;s<r;s++)for(let i=0;i<r;i++)n.isReserved(i,s)||n.xor(i,s,Hd(e,i,s))};x.getBestMask=function(e,n){let r=Object.keys(x.Patterns).length,s=0,i=1/0;for(let o=0;o<r;o++){n(o),x.applyMask(o,e);let a=x.getPenaltyN1(e)+x.getPenaltyN2(e)+x.getPenaltyN3(e)+x.getPenaltyN4(e);x.applyMask(o,e),a<i&&(i=a,s=o)}return s}});var Hr=m(Dr=>{var _e=In(),Tn=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],An=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];Dr.getBlocksCount=function(e,n){switch(n){case _e.L:return Tn[(e-1)*4+0];case _e.M:return Tn[(e-1)*4+1];case _e.Q:return Tn[(e-1)*4+2];case _e.H:return Tn[(e-1)*4+3];default:return}};Dr.getTotalCodewordsCount=function(e,n){switch(n){case _e.L:return An[(e-1)*4+0];case _e.M:return An[(e-1)*4+1];case _e.Q:return An[(e-1)*4+2];case _e.H:return An[(e-1)*4+3];default:return}}});var xo=m(kn=>{var Bt=new Uint8Array(512),En=new Uint8Array(256);(function(){let e=1;for(let n=0;n<255;n++)Bt[n]=e,En[e]=n,e<<=1,e&256&&(e^=285);for(let n=255;n<512;n++)Bt[n]=Bt[n-255]})();kn.log=function(e){if(e<1)throw new Error("log("+e+")");return En[e]};kn.exp=function(e){return Bt[e]};kn.mul=function(e,n){return e===0||n===0?0:Bt[En[e]+En[n]]}});var To=m(Dt=>{var Fr=xo();Dt.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let s=0;s<e.length;s++)for(let i=0;i<n.length;i++)r[s+i]^=Fr.mul(e[s],n[i]);return r};Dt.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let s=r[0];for(let o=0;o<n.length;o++)r[o]^=Fr.mul(n[o],s);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r};Dt.generateECPolynomial=function(e){let n=new Uint8Array([1]);for(let r=0;r<e;r++)n=Dt.mul(n,new Uint8Array([1,Fr.exp(r)]));return n}});var ko=m((Am,Eo)=>{var Ao=To();function Ur(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}Ur.prototype.initialize=function(e){this.degree=e,this.genPoly=Ao.generateECPolynomial(this.degree)};Ur.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");let n=new Uint8Array(e.length+this.degree);n.set(e);let r=Ao.mod(n,this.genPoly),s=this.degree-r.length;if(s>0){let i=new Uint8Array(this.degree);return i.set(r,s),i}return r};Eo.exports=Ur});var qr=m(Co=>{Co.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var Wr=m(he=>{var Po="[0-9]+",Fd="[A-Z $%*+\\-./:]+",Ht="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Ht=Ht.replace(/u/g,"\\u");var Ud="(?:(?![A-Z0-9 $%*+\\-./:]|"+Ht+`)(?:.|[\r
8
+ ]))+`;he.KANJI=new RegExp(Ht,"g");he.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");he.BYTE=new RegExp(Ud,"g");he.NUMERIC=new RegExp(Po,"g");he.ALPHANUMERIC=new RegExp(Fd,"g");var qd=new RegExp("^"+Ht+"$"),Wd=new RegExp("^"+Po+"$"),jd=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");he.testKanji=function(e){return qd.test(e)};he.testNumeric=function(e){return Wd.test(e)};he.testAlphanumeric=function(e){return jd.test(e)}});var ve=m(P=>{var Gd=qr(),jr=Wr();P.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};P.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};P.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};P.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};P.MIXED={bit:-1};P.getCharCountIndicator=function(e,n){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!Gd.isValid(n))throw new Error("Invalid version: "+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]};P.getBestModeForData=function(e){return jr.testNumeric(e)?P.NUMERIC:jr.testAlphanumeric(e)?P.ALPHANUMERIC:jr.testKanji(e)?P.KANJI:P.BYTE};P.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};P.isValid=function(e){return e&&e.bit&&e.ccBits};function $d(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"numeric":return P.NUMERIC;case"alphanumeric":return P.ALPHANUMERIC;case"kanji":return P.KANJI;case"byte":return P.BYTE;default:throw new Error("Unknown mode: "+t)}}P.from=function(e,n){if(P.isValid(e))return e;try{return $d(e)}catch{return n}}});var Oo=m(He=>{var Cn=Se(),zd=Hr(),Ro=In(),we=ve(),Gr=qr(),Mo=7973,Lo=Cn.getBCHDigit(Mo);function Vd(t,e,n){for(let r=1;r<=40;r++)if(e<=He.getCapacity(r,n,t))return r}function No(t,e){return we.getCharCountIndicator(t,e)+4}function Yd(t,e){let n=0;return t.forEach(function(r){let s=No(r.mode,e);n+=s+r.getBitsLength()}),n}function Jd(t,e){for(let n=1;n<=40;n++)if(Yd(t,n)<=He.getCapacity(n,e,we.MIXED))return n}He.from=function(e,n){return Gr.isValid(e)?parseInt(e,10):n};He.getCapacity=function(e,n,r){if(!Gr.isValid(e))throw new Error("Invalid QR Code version");typeof r>"u"&&(r=we.BYTE);let s=Cn.getSymbolTotalCodewords(e),i=zd.getTotalCodewordsCount(e,n),o=(s-i)*8;if(r===we.MIXED)return o;let a=o-No(r,e);switch(r){case we.NUMERIC:return Math.floor(a/10*3);case we.ALPHANUMERIC:return Math.floor(a/11*2);case we.KANJI:return Math.floor(a/13);case we.BYTE:default:return Math.floor(a/8)}};He.getBestVersionForData=function(e,n){let r,s=Ro.from(n,Ro.M);if(Array.isArray(e)){if(e.length>1)return Jd(e,s);if(e.length===0)return 1;r=e[0]}else r=e;return Vd(r.mode,r.getLength(),s)};He.getEncodedBits=function(e){if(!Gr.isValid(e)||e<7)throw new Error("Invalid QR Code version");let n=e<<12;for(;Cn.getBCHDigit(n)-Lo>=0;)n^=Mo<<Cn.getBCHDigit(n)-Lo;return e<<12|n}});var Fo=m(Ho=>{var $r=Se(),Do=1335,Kd=21522,Bo=$r.getBCHDigit(Do);Ho.getEncodedBits=function(e,n){let r=e.bit<<3|n,s=r<<10;for(;$r.getBCHDigit(s)-Bo>=0;)s^=Do<<$r.getBCHDigit(s)-Bo;return(r<<10|s)^Kd}});var qo=m((Lm,Uo)=>{var Xd=ve();function tt(t){this.mode=Xd.NUMERIC,this.data=t.toString()}tt.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};tt.prototype.getLength=function(){return this.data.length};tt.prototype.getBitsLength=function(){return tt.getBitsLength(this.data.length)};tt.prototype.write=function(e){let n,r,s;for(n=0;n+3<=this.data.length;n+=3)r=this.data.substr(n,3),s=parseInt(r,10),e.put(s,10);let i=this.data.length-n;i>0&&(r=this.data.substr(n),s=parseInt(r,10),e.put(s,i*3+1))};Uo.exports=tt});var jo=m((Mm,Wo)=>{var Zd=ve(),zr=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function nt(t){this.mode=Zd.ALPHANUMERIC,this.data=t}nt.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};nt.prototype.getLength=function(){return this.data.length};nt.prototype.getBitsLength=function(){return nt.getBitsLength(this.data.length)};nt.prototype.write=function(e){let n;for(n=0;n+2<=this.data.length;n+=2){let r=zr.indexOf(this.data[n])*45;r+=zr.indexOf(this.data[n+1]),e.put(r,11)}this.data.length%2&&e.put(zr.indexOf(this.data[n]),6)};Wo.exports=nt});var $o=m((Nm,Go)=>{var Qd=ve();function rt(t){this.mode=Qd.BYTE,typeof t=="string"?this.data=new TextEncoder().encode(t):this.data=new Uint8Array(t)}rt.getBitsLength=function(e){return e*8};rt.prototype.getLength=function(){return this.data.length};rt.prototype.getBitsLength=function(){return rt.getBitsLength(this.data.length)};rt.prototype.write=function(t){for(let e=0,n=this.data.length;e<n;e++)t.put(this.data[e],8)};Go.exports=rt});var Vo=m((Om,zo)=>{var ef=ve(),tf=Se();function st(t){this.mode=ef.KANJI,this.data=t}st.getBitsLength=function(e){return e*13};st.prototype.getLength=function(){return this.data.length};st.prototype.getBitsLength=function(){return st.getBitsLength(this.data.length)};st.prototype.write=function(t){let e;for(e=0;e<this.data.length;e++){let n=tf.toSJIS(this.data[e]);if(n>=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+`
9
+ Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),t.put(n,13)}};zo.exports=st});var Yo=m((Bm,Vr)=>{"use strict";var Ft={single_source_shortest_paths:function(t,e,n){var r={},s={};s[e]=0;var i=Ft.PriorityQueue.make();i.push(e,0);for(var o,a,l,c,u,d,f,h,p;!i.empty();){o=i.pop(),a=o.value,c=o.cost,u=t[a]||{};for(l in u)u.hasOwnProperty(l)&&(d=u[l],f=c+d,h=s[l],p=typeof s[l]>"u",(p||h>f)&&(s[l]=f,i.push(l,f),r[l]=a))}if(typeof n<"u"&&typeof s[n]>"u"){var g=["Could not find a path from ",e," to ",n,"."].join("");throw new Error(g)}return r},extract_shortest_path_from_predecessor_list:function(t,e){for(var n=[],r=e,s;r;)n.push(r),s=t[r],r=t[r];return n.reverse(),n},find_path:function(t,e,n){var r=Ft.single_source_shortest_paths(t,e,n);return Ft.extract_shortest_path_from_predecessor_list(r,n)},PriorityQueue:{make:function(t){var e=Ft.PriorityQueue,n={},r;t=t||{};for(r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);return n.queue=[],n.sorter=t.sorter||e.default_sorter,n},default_sorter:function(t,e){return t.cost-e.cost},push:function(t,e){var n={value:t,cost:e};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};typeof Vr<"u"&&(Vr.exports=Ft)});var na=m(it=>{var I=ve(),Xo=qo(),Zo=jo(),Qo=$o(),ea=Vo(),Ut=Wr(),Pn=Se(),nf=Yo();function Jo(t){return unescape(encodeURIComponent(t)).length}function qt(t,e,n){let r=[],s;for(;(s=t.exec(n))!==null;)r.push({data:s[0],index:s.index,mode:e,length:s[0].length});return r}function ta(t){let e=qt(Ut.NUMERIC,I.NUMERIC,t),n=qt(Ut.ALPHANUMERIC,I.ALPHANUMERIC,t),r,s;return Pn.isKanjiModeEnabled()?(r=qt(Ut.BYTE,I.BYTE,t),s=qt(Ut.KANJI,I.KANJI,t)):(r=qt(Ut.BYTE_KANJI,I.BYTE,t),s=[]),e.concat(n,r,s).sort(function(o,a){return o.index-a.index}).map(function(o){return{data:o.data,mode:o.mode,length:o.length}})}function Yr(t,e){switch(e){case I.NUMERIC:return Xo.getBitsLength(t);case I.ALPHANUMERIC:return Zo.getBitsLength(t);case I.KANJI:return ea.getBitsLength(t);case I.BYTE:return Qo.getBitsLength(t)}}function rf(t){return t.reduce(function(e,n){let r=e.length-1>=0?e[e.length-1]:null;return r&&r.mode===n.mode?(e[e.length-1].data+=n.data,e):(e.push(n),e)},[])}function sf(t){let e=[];for(let n=0;n<t.length;n++){let r=t[n];switch(r.mode){case I.NUMERIC:e.push([r,{data:r.data,mode:I.ALPHANUMERIC,length:r.length},{data:r.data,mode:I.BYTE,length:r.length}]);break;case I.ALPHANUMERIC:e.push([r,{data:r.data,mode:I.BYTE,length:r.length}]);break;case I.KANJI:e.push([r,{data:r.data,mode:I.BYTE,length:Jo(r.data)}]);break;case I.BYTE:e.push([{data:r.data,mode:I.BYTE,length:Jo(r.data)}])}}return e}function of(t,e){let n={},r={start:{}},s=["start"];for(let i=0;i<t.length;i++){let o=t[i],a=[];for(let l=0;l<o.length;l++){let c=o[l],u=""+i+l;a.push(u),n[u]={node:c,lastCount:0},r[u]={};for(let d=0;d<s.length;d++){let f=s[d];n[f]&&n[f].node.mode===c.mode?(r[f][u]=Yr(n[f].lastCount+c.length,c.mode)-Yr(n[f].lastCount,c.mode),n[f].lastCount+=c.length):(n[f]&&(n[f].lastCount=c.length),r[f][u]=Yr(c.length,c.mode)+4+I.getCharCountIndicator(c.mode,e))}}s=a}for(let i=0;i<s.length;i++)r[s[i]].end=0;return{map:r,table:n}}function Ko(t,e){let n,r=I.getBestModeForData(t);if(n=I.from(e,r),n!==I.BYTE&&n.bit<r.bit)throw new Error('"'+t+'" cannot be encoded with mode '+I.toString(n)+`.
10
+ Suggested mode is: `+I.toString(r));switch(n===I.KANJI&&!Pn.isKanjiModeEnabled()&&(n=I.BYTE),n){case I.NUMERIC:return new Xo(t);case I.ALPHANUMERIC:return new Zo(t);case I.KANJI:return new ea(t);case I.BYTE:return new Qo(t)}}it.fromArray=function(e){return e.reduce(function(n,r){return typeof r=="string"?n.push(Ko(r,null)):r.data&&n.push(Ko(r.data,r.mode)),n},[])};it.fromString=function(e,n){let r=ta(e,Pn.isKanjiModeEnabled()),s=sf(r),i=of(s,n),o=nf.find_path(i.map,"start","end"),a=[];for(let l=1;l<o.length-1;l++)a.push(i.table[o[l]].node);return it.fromArray(rf(a))};it.rawSplit=function(e){return it.fromArray(ta(e,Pn.isKanjiModeEnabled()))}});var es=m(ra=>{var Ln=Se(),Jr=In(),af=mo(),lf=So(),cf=_o(),uf=bo(),Zr=Io(),Qr=Hr(),df=ko(),Rn=Oo(),ff=Fo(),hf=ve(),Kr=na();function pf(t,e){let n=t.size,r=uf.getPositions(e);for(let s=0;s<r.length;s++){let i=r[s][0],o=r[s][1];for(let a=-1;a<=7;a++)if(!(i+a<=-1||n<=i+a))for(let l=-1;l<=7;l++)o+l<=-1||n<=o+l||(a>=0&&a<=6&&(l===0||l===6)||l>=0&&l<=6&&(a===0||a===6)||a>=2&&a<=4&&l>=2&&l<=4?t.set(i+a,o+l,!0,!0):t.set(i+a,o+l,!1,!0))}}function gf(t){let e=t.size;for(let n=8;n<e-8;n++){let r=n%2===0;t.set(n,6,r,!0),t.set(6,n,r,!0)}}function mf(t,e){let n=cf.getPositions(e);for(let r=0;r<n.length;r++){let s=n[r][0],i=n[r][1];for(let o=-2;o<=2;o++)for(let a=-2;a<=2;a++)o===-2||o===2||a===-2||a===2||o===0&&a===0?t.set(s+o,i+a,!0,!0):t.set(s+o,i+a,!1,!0)}}function yf(t,e){let n=t.size,r=Rn.getEncodedBits(e),s,i,o;for(let a=0;a<18;a++)s=Math.floor(a/3),i=a%3+n-8-3,o=(r>>a&1)===1,t.set(s,i,o,!0),t.set(i,s,o,!0)}function Xr(t,e,n){let r=t.size,s=ff.getEncodedBits(e,n),i,o;for(i=0;i<15;i++)o=(s>>i&1)===1,i<6?t.set(i,8,o,!0):i<8?t.set(i+1,8,o,!0):t.set(r-15+i,8,o,!0),i<8?t.set(8,r-i-1,o,!0):i<9?t.set(8,15-i-1+1,o,!0):t.set(8,15-i-1,o,!0);t.set(r-8,8,1,!0)}function Sf(t,e){let n=t.size,r=-1,s=n-1,i=7,o=0;for(let a=n-1;a>0;a-=2)for(a===6&&a--;;){for(let l=0;l<2;l++)if(!t.isReserved(s,a-l)){let c=!1;o<e.length&&(c=(e[o]>>>i&1)===1),t.set(s,a-l,c),i--,i===-1&&(o++,i=7)}if(s+=r,s<0||n<=s){s-=r,r=-r;break}}}function _f(t,e,n){let r=new af;n.forEach(function(l){r.put(l.mode.bit,4),r.put(l.getLength(),hf.getCharCountIndicator(l.mode,t)),l.write(r)});let s=Ln.getSymbolTotalCodewords(t),i=Qr.getTotalCodewordsCount(t,e),o=(s-i)*8;for(r.getLengthInBits()+4<=o&&r.put(0,4);r.getLengthInBits()%8!==0;)r.putBit(0);let a=(o-r.getLengthInBits())/8;for(let l=0;l<a;l++)r.put(l%2?17:236,8);return vf(r,t,e)}function vf(t,e,n){let r=Ln.getSymbolTotalCodewords(e),s=Qr.getTotalCodewordsCount(e,n),i=r-s,o=Qr.getBlocksCount(e,n),a=r%o,l=o-a,c=Math.floor(r/o),u=Math.floor(i/o),d=u+1,f=c-u,h=new df(f),p=0,g=new Array(o),y=new Array(o),S=0,G=new Uint8Array(t.buffer);for(let se=0;se<o;se++){let ze=se<l?u:d;g[se]=G.slice(p,p+ze),y[se]=h.encode(g[se]),p+=ze,S=Math.max(S,ze)}let re=new Uint8Array(r),E=0,M,V;for(M=0;M<S;M++)for(V=0;V<o;V++)M<g[V].length&&(re[E++]=g[V][M]);for(M=0;M<f;M++)for(V=0;V<o;V++)re[E++]=y[V][M];return re}function wf(t,e,n,r){let s;if(Array.isArray(t))s=Kr.fromArray(t);else if(typeof t=="string"){let c=e;if(!c){let u=Kr.rawSplit(t);c=Rn.getBestVersionForData(u,n)}s=Kr.fromString(t,c||40)}else throw new Error("Invalid data");let i=Rn.getBestVersionForData(s,n);if(!i)throw new Error("The amount of data is too big to be stored in a QR Code");if(!e)e=i;else if(e<i)throw new Error(`
11
11
  The chosen QR Code version cannot contain this amount of data.
12
12
  Minimum version required to store current data is: `+i+`.
13
- `);let o=_f(e,n,s),a=Ln.getSymbolSize(e),l=new lf(a);return pf(l,e),gf(l),mf(l,e),Jr(l,n,0),e>=7&&yf(l,e),Sf(l,o),isNaN(r)&&(r=Kr.getBestMask(l,Jr.bind(null,l,n))),Kr.applyMask(r,l),Jr(l,n,r),{modules:l,version:e,errorCorrectionLevel:n,maskPattern:r,segments:s}}ra.create=function(e,n){if(typeof e>"u"||e==="")throw new Error("No input text");let r=Vr.M,s,i;return typeof n<"u"&&(r=Vr.from(n.errorCorrectionLevel,Vr.M),s=Pn.from(n.version),i=Kr.from(n.maskPattern),n.toSJISFunc&&Ln.setToSJISFunction(n.toSJISFunc)),wf(e,s,r,i)}});var Qr=m((Fm,ia)=>{"use strict";var bf=require("util"),sa=require("stream"),te=ia.exports=function(){sa.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};bf.inherits(te,sa);te.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit("drain"))}.bind(this))};te.prototype.write=function(t,e){if(!this.writable)return this.emit("error",new Error("Stream not writable")),!1;let n;return Buffer.isBuffer(t)?n=t:n=Buffer.from(t,e||this._encoding),this._buffers.push(n),this._buffered+=n.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused};te.prototype.end=function(t,e){t&&this.write(t,e),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))};te.prototype.destroySoon=te.prototype.end;te.prototype._end=function(){this._reads.length>0&&this.emit("error",new Error("Unexpected end of input")),this.destroy()};te.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit("close"))};te.prototype._processReadAllowingLess=function(t){this._reads.shift();let e=this._buffers[0];e.length>t.length?(this._buffered-=t.length,this._buffers[0]=e.slice(t.length),t.func.call(this,e.slice(0,t.length))):(this._buffered-=e.length,this._buffers.shift(),t.func.call(this,e))};te.prototype._processRead=function(t){this._reads.shift();let e=0,n=0,r=Buffer.alloc(t.length);for(;e<t.length;){let s=this._buffers[n++],i=Math.min(s.length,t.length-e);s.copy(r,e,0,i),e+=i,i!==s.length&&(this._buffers[--n]=s.slice(i))}n>0&&this._buffers.splice(0,n),this._buffered-=t.length,t.func.call(this,r)};te.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let t=this._reads[0];if(t.allowLess)this._processReadAllowingLess(t);else if(this._buffered>=t.length)this._processRead(t);else break}this._buffers&&!this.writable&&this._end()}catch(t){this.emit("error",t)}}});var ts=m(es=>{"use strict";var we=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];es.getImagePasses=function(t,e){let n=[],r=t%8,s=e%8,i=(t-r)/8,o=(e-s)/8;for(let a=0;a<we.length;a++){let l=we[a],c=i*l.x.length,u=o*l.y.length;for(let d=0;d<l.x.length&&l.x[d]<r;d++)c++;for(let d=0;d<l.y.length&&l.y[d]<s;d++)u++;c>0&&u>0&&n.push({width:c,height:u,index:a})}return n};es.getInterlaceIterator=function(t){return function(e,n,r){let s=e%we[r].x.length,i=(e-s)/we[r].x.length*8+we[r].x[s],o=n%we[r].y.length,a=(n-o)/we[r].y.length*8+we[r].y[o];return i*4+a*t*4}}});var ns=m((qm,oa)=>{"use strict";oa.exports=function(e,n,r){let s=e+n-r,i=Math.abs(s-e),o=Math.abs(s-n),a=Math.abs(s-r);return i<=o&&i<=a?e:o<=a?n:r}});var rs=m((Wm,la)=>{"use strict";var If=ts(),xf=ns();function aa(t,e,n){let r=t*e;return n!==8&&(r=Math.ceil(r/(8/n))),r}var ot=la.exports=function(t,e){let n=t.width,r=t.height,s=t.interlace,i=t.bpp,o=t.depth;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],s){let a=If.getImagePasses(n,r);for(let l=0;l<a.length;l++)this._images.push({byteWidth:aa(a[l].width,i,o),height:a[l].height,lineIndex:0})}else this._images.push({byteWidth:aa(n,i,o),height:r,lineIndex:0});o===8?this._xComparison=i:o===16?this._xComparison=i*2:this._xComparison=1};ot.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};ot.prototype._unFilterType1=function(t,e,n){let r=this._xComparison,s=r-1;for(let i=0;i<n;i++){let o=t[1+i],a=i>s?e[i-r]:0;e[i]=o+a}};ot.prototype._unFilterType2=function(t,e,n){let r=this._lastLine;for(let s=0;s<n;s++){let i=t[1+s],o=r?r[s]:0;e[s]=i+o}};ot.prototype._unFilterType3=function(t,e,n){let r=this._xComparison,s=r-1,i=this._lastLine;for(let o=0;o<n;o++){let a=t[1+o],l=i?i[o]:0,c=o>s?e[o-r]:0,u=Math.floor((c+l)/2);e[o]=a+u}};ot.prototype._unFilterType4=function(t,e,n){let r=this._xComparison,s=r-1,i=this._lastLine;for(let o=0;o<n;o++){let a=t[1+o],l=i?i[o]:0,c=o>s?e[o-r]:0,u=o>s&&i?i[o-r]:0,d=xf(c,l,u);e[o]=a+d}};ot.prototype._reverseFilterLine=function(t){let e=t[0],n,r=this._images[this._imageIndex],s=r.byteWidth;if(e===0)n=t.slice(1,s+1);else switch(n=Buffer.alloc(s),e){case 1:this._unFilterType1(t,n,s);break;case 2:this._unFilterType2(t,n,s);break;case 3:this._unFilterType3(t,n,s);break;case 4:this._unFilterType4(t,n,s);break;default:throw new Error("Unrecognised filter type - "+e)}this.write(n),r.lineIndex++,r.lineIndex>=r.height?(this._lastLine=null,this._imageIndex++,r=this._images[this._imageIndex]):this._lastLine=n,r?this.read(r.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}});var da=m((jm,ua)=>{"use strict";var Ef=require("util"),ca=Qr(),Tf=rs(),Af=ua.exports=function(t){ca.call(this);let e=[],n=this;this._filter=new Tf(t,{read:this.read.bind(this),write:function(r){e.push(r)},complete:function(){n.emit("complete",Buffer.concat(e))}}),this._filter.start()};Ef.inherits(Af,ca)});var at=m((Gm,fa)=>{"use strict";fa.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var os=m(($m,ha)=>{"use strict";var ss=[];(function(){for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)e&1?e=3988292384^e>>>1:e=e>>>1;ss[t]=e}})();var is=ha.exports=function(){this._crc=-1};is.prototype.write=function(t){for(let e=0;e<t.length;e++)this._crc=ss[(this._crc^t[e])&255]^this._crc>>>8;return!0};is.prototype.crc32=function(){return this._crc^-1};is.crc32=function(t){let e=-1;for(let n=0;n<t.length;n++)e=ss[(e^t[n])&255]^e>>>8;return e^-1}});var as=m((zm,pa)=>{"use strict";var P=at(),kf=os(),O=pa.exports=function(t,e){this._options=t,t.checkCRC=t.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[P.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[P.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[P.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[P.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[P.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[P.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};O.prototype.start=function(){this.read(P.PNG_SIGNATURE.length,this._parseSignature.bind(this))};O.prototype._parseSignature=function(t){let e=P.PNG_SIGNATURE;for(let n=0;n<e.length;n++)if(t[n]!==e[n]){this.error(new Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};O.prototype._parseChunkBegin=function(t){let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r="";for(let i=4;i<8;i++)r+=String.fromCharCode(t[i]);let s=!!(t[4]&32);if(!this._hasIHDR&&n!==P.TYPE_IHDR){this.error(new Error("Expected IHDR on beggining"));return}if(this._crc=new kf,this._crc.write(Buffer.from(r)),this._chunks[n])return this._chunks[n](e);if(!s){this.error(new Error("Unsupported critical chunk type "+r));return}this.read(e+4,this._skipChunk.bind(this))};O.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};O.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};O.prototype._parseChunkEnd=function(t){let e=t.readInt32BE(0),n=this._crc.crc32();if(this._options.checkCRC&&n!==e){this.error(new Error("Crc error - "+e+" - "+n));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))};O.prototype._handleIHDR=function(t){this.read(t,this._parseIHDR.bind(this))};O.prototype._parseIHDR=function(t){this._crc.write(t);let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r=t[8],s=t[9],i=t[10],o=t[11],a=t[12];if(r!==8&&r!==4&&r!==2&&r!==1&&r!==16){this.error(new Error("Unsupported bit depth "+r));return}if(!(s in P.COLORTYPE_TO_BPP_MAP)){this.error(new Error("Unsupported color type"));return}if(i!==0){this.error(new Error("Unsupported compression method"));return}if(o!==0){this.error(new Error("Unsupported filter method"));return}if(a!==0&&a!==1){this.error(new Error("Unsupported interlace method"));return}this._colorType=s;let l=P.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:n,depth:r,interlace:!!a,palette:!!(s&P.COLORTYPE_PALETTE),color:!!(s&P.COLORTYPE_COLOR),alpha:!!(s&P.COLORTYPE_ALPHA),bpp:l,colorType:s}),this._handleChunkEnd()};O.prototype._handlePLTE=function(t){this.read(t,this._parsePLTE.bind(this))};O.prototype._parsePLTE=function(t){this._crc.write(t);let e=Math.floor(t.length/3);for(let n=0;n<e;n++)this._palette.push([t[n*3],t[n*3+1],t[n*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};O.prototype._handleTRNS=function(t){this.simpleTransparency(),this.read(t,this._parseTRNS.bind(this))};O.prototype._parseTRNS=function(t){if(this._crc.write(t),this._colorType===P.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(new Error("Transparency chunk must be after palette"));return}if(t.length>this._palette.length){this.error(new Error("More transparent colors than palette size"));return}for(let e=0;e<t.length;e++)this._palette[e][3]=t[e];this.palette(this._palette)}this._colorType===P.COLORTYPE_GRAYSCALE&&this.transColor([t.readUInt16BE(0)]),this._colorType===P.COLORTYPE_COLOR&&this.transColor([t.readUInt16BE(0),t.readUInt16BE(2),t.readUInt16BE(4)]),this._handleChunkEnd()};O.prototype._handleGAMA=function(t){this.read(t,this._parseGAMA.bind(this))};O.prototype._parseGAMA=function(t){this._crc.write(t),this.gamma(t.readUInt32BE(0)/P.GAMMA_DIVISION),this._handleChunkEnd()};O.prototype._handleIDAT=function(t){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-t,this._parseIDAT.bind(this,t))};O.prototype._parseIDAT=function(t,e){if(this._crc.write(e),this._colorType===P.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw new Error("Expected palette not found");this.inflateData(e);let n=t-e.length;n>0?this._handleIDAT(n):this._handleChunkEnd()};O.prototype._handleIEND=function(t){this.read(t,this._parseIEND.bind(this))};O.prototype._parseIEND=function(t){this._crc.write(t),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}});var ls=m(ma=>{"use strict";var ga=ts(),Cf=[function(){},function(t,e,n,r){if(r===e.length)throw new Error("Ran out of data");let s=e[r];t[n]=s,t[n+1]=s,t[n+2]=s,t[n+3]=255},function(t,e,n,r){if(r+1>=e.length)throw new Error("Ran out of data");let s=e[r];t[n]=s,t[n+1]=s,t[n+2]=s,t[n+3]=e[r+1]},function(t,e,n,r){if(r+2>=e.length)throw new Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=255},function(t,e,n,r){if(r+3>=e.length)throw new Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=e[r+3]}],Rf=[function(){},function(t,e,n,r){let s=e[0];t[n]=s,t[n+1]=s,t[n+2]=s,t[n+3]=r},function(t,e,n){let r=e[0];t[n]=r,t[n+1]=r,t[n+2]=r,t[n+3]=e[1]},function(t,e,n,r){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=r},function(t,e,n){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=e[3]}];function Pf(t,e){let n=[],r=0;function s(){if(r===t.length)throw new Error("Ran out of data");let i=t[r];r++;let o,a,l,c,u,d,f,h;switch(e){default:throw new Error("unrecognised depth");case 16:f=t[r],r++,n.push((i<<8)+f);break;case 4:f=i&15,h=i>>4,n.push(h,f);break;case 2:u=i&3,d=i>>2&3,f=i>>4&3,h=i>>6&3,n.push(h,f,d,u);break;case 1:o=i&1,a=i>>1&1,l=i>>2&1,c=i>>3&1,u=i>>4&1,d=i>>5&1,f=i>>6&1,h=i>>7&1,n.push(h,f,d,u,c,l,a,o);break}}return{get:function(i){for(;n.length<i;)s();let o=n.slice(0,i);return n=n.slice(i),o},resetAfterLine:function(){n.length=0},end:function(){if(r!==t.length)throw new Error("extra data found")}}}function Lf(t,e,n,r,s,i){let o=t.width,a=t.height,l=t.index;for(let c=0;c<a;c++)for(let u=0;u<o;u++){let d=n(u,c,l);Cf[r](e,s,d,i),i+=r}return i}function Mf(t,e,n,r,s,i){let o=t.width,a=t.height,l=t.index;for(let c=0;c<a;c++){for(let u=0;u<o;u++){let d=s.get(r),f=n(u,c,l);Rf[r](e,d,f,i)}s.resetAfterLine()}}ma.dataToBitMap=function(t,e){let n=e.width,r=e.height,s=e.depth,i=e.bpp,o=e.interlace,a;s!==8&&(a=Pf(t,s));let l;s<=8?l=Buffer.alloc(n*r*4):l=new Uint16Array(n*r*4);let c=Math.pow(2,s)-1,u=0,d,f;if(o)d=ga.getImagePasses(n,r),f=ga.getInterlaceIterator(n,r);else{let h=0;f=function(){let g=h;return h+=4,g},d=[{width:n,height:r}]}for(let h=0;h<d.length;h++)s===8?u=Lf(d[h],l,f,i,t,u):Mf(d[h],l,f,i,a,c);if(s===8){if(u!==t.length)throw new Error("extra data found")}else a.end();return l}});var cs=m((Ym,ya)=>{"use strict";function Nf(t,e,n,r,s){let i=0;for(let o=0;o<r;o++)for(let a=0;a<n;a++){let l=s[t[i]];if(!l)throw new Error("index "+t[i]+" not in palette");for(let c=0;c<4;c++)e[i+c]=l[c];i+=4}}function Of(t,e,n,r,s){let i=0;for(let o=0;o<r;o++)for(let a=0;a<n;a++){let l=!1;if(s.length===1?s[0]===t[i]&&(l=!0):s[0]===t[i]&&s[1]===t[i+1]&&s[2]===t[i+2]&&(l=!0),l)for(let c=0;c<4;c++)e[i+c]=0;i+=4}}function Bf(t,e,n,r,s){let i=255,o=Math.pow(2,s)-1,a=0;for(let l=0;l<r;l++)for(let c=0;c<n;c++){for(let u=0;u<4;u++)e[a+u]=Math.floor(t[a+u]*i/o+.5);a+=4}}ya.exports=function(t,e){let n=e.depth,r=e.width,s=e.height,i=e.colorType,o=e.transColor,a=e.palette,l=t;return i===3?Nf(t,l,r,s,a):(o&&Of(t,l,r,s,o),n!==8&&(n===16&&(l=Buffer.alloc(r*s*4)),Bf(t,l,r,s,n))),l}});var va=m((Jm,_a)=>{"use strict";var Df=require("util"),us=require("zlib"),Sa=Qr(),Hf=da(),Ff=as(),Uf=ls(),qf=cs(),oe=_a.exports=function(t){Sa.call(this),this._parser=new Ff(t,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=t,this.writable=!0,this._parser.start()};Df.inherits(oe,Sa);oe.prototype._handleError=function(t){this.emit("error",t),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on("error",function(){})),this.errord=!0};oe.prototype._inflateData=function(t){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=us.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let n=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,r=Math.max(n,us.Z_MIN_CHUNK);this._inflate=us.createInflate({chunkSize:r});let s=n,i=this.emit.bind(this,"error");this._inflate.on("error",function(a){s&&i(a)}),this._filter.on("complete",this._complete.bind(this));let o=this._filter.write.bind(this._filter);this._inflate.on("data",function(a){s&&(a.length>s&&(a=a.slice(0,s)),s-=a.length,o(a))}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(t)};oe.prototype._handleMetaData=function(t){this._metaData=t,this._bitmapInfo=Object.create(t),this._filter=new Hf(this._bitmapInfo)};oe.prototype._handleTransColor=function(t){this._bitmapInfo.transColor=t};oe.prototype._handlePalette=function(t){this._bitmapInfo.palette=t};oe.prototype._simpleTransparency=function(){this._metaData.alpha=!0};oe.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};oe.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit("error","No Inflate block"))};oe.prototype._complete=function(t){if(this.errord)return;let e;try{let n=Uf.dataToBitMap(t,this._bitmapInfo);e=qf(n,this._bitmapInfo),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var ba=m((Km,wa)=>{"use strict";var X=at();wa.exports=function(t,e,n,r){let s=[X.COLORTYPE_COLOR_ALPHA,X.COLORTYPE_ALPHA].indexOf(r.colorType)!==-1;if(r.colorType===r.inputColorType){let g=(function(){let p=new ArrayBuffer(2);return new DataView(p).setInt16(0,256,!0),new Int16Array(p)[0]!==256})();if(r.bitDepth===8||r.bitDepth===16&&g)return t}let i=r.bitDepth!==16?t:new Uint16Array(t.buffer),o=255,a=X.COLORTYPE_TO_BPP_MAP[r.inputColorType];a===4&&!r.inputHasAlpha&&(a=3);let l=X.COLORTYPE_TO_BPP_MAP[r.colorType];r.bitDepth===16&&(o=65535,l*=2);let c=Buffer.alloc(e*n*l),u=0,d=0,f=r.bgColor||{};f.red===void 0&&(f.red=o),f.green===void 0&&(f.green=o),f.blue===void 0&&(f.blue=o);function h(){let g,p,y,S=o;switch(r.inputColorType){case X.COLORTYPE_COLOR_ALPHA:S=i[u+3],g=i[u],p=i[u+1],y=i[u+2];break;case X.COLORTYPE_COLOR:g=i[u],p=i[u+1],y=i[u+2];break;case X.COLORTYPE_ALPHA:S=i[u+1],g=i[u],p=g,y=g;break;case X.COLORTYPE_GRAYSCALE:g=i[u],p=g,y=g;break;default:throw new Error("input color type:"+r.inputColorType+" is not supported at present")}return r.inputHasAlpha&&(s||(S/=o,g=Math.min(Math.max(Math.round((1-S)*f.red+S*g),0),o),p=Math.min(Math.max(Math.round((1-S)*f.green+S*p),0),o),y=Math.min(Math.max(Math.round((1-S)*f.blue+S*y),0),o))),{red:g,green:p,blue:y,alpha:S}}for(let g=0;g<n;g++)for(let p=0;p<e;p++){let y=h(i,u);switch(r.colorType){case X.COLORTYPE_COLOR_ALPHA:case X.COLORTYPE_COLOR:r.bitDepth===8?(c[d]=y.red,c[d+1]=y.green,c[d+2]=y.blue,s&&(c[d+3]=y.alpha)):(c.writeUInt16BE(y.red,d),c.writeUInt16BE(y.green,d+2),c.writeUInt16BE(y.blue,d+4),s&&c.writeUInt16BE(y.alpha,d+6));break;case X.COLORTYPE_ALPHA:case X.COLORTYPE_GRAYSCALE:{let S=(y.red+y.green+y.blue)/3;r.bitDepth===8?(c[d]=S,s&&(c[d+1]=y.alpha)):(c.writeUInt16BE(S,d),s&&c.writeUInt16BE(y.alpha,d+2));break}default:throw new Error("unrecognised color Type "+r.colorType)}u+=a,d+=l}return c}});var Ea=m((Xm,xa)=>{"use strict";var Ia=ns();function Wf(t,e,n,r,s){for(let i=0;i<n;i++)r[s+i]=t[e+i]}function jf(t,e,n){let r=0,s=e+n;for(let i=e;i<s;i++)r+=Math.abs(t[i]);return r}function Gf(t,e,n,r,s,i){for(let o=0;o<n;o++){let a=o>=i?t[e+o-i]:0,l=t[e+o]-a;r[s+o]=l}}function $f(t,e,n,r){let s=0;for(let i=0;i<n;i++){let o=i>=r?t[e+i-r]:0,a=t[e+i]-o;s+=Math.abs(a)}return s}function zf(t,e,n,r,s){for(let i=0;i<n;i++){let o=e>0?t[e+i-n]:0,a=t[e+i]-o;r[s+i]=a}}function Vf(t,e,n){let r=0,s=e+n;for(let i=e;i<s;i++){let o=e>0?t[i-n]:0,a=t[i]-o;r+=Math.abs(a)}return r}function Yf(t,e,n,r,s,i){for(let o=0;o<n;o++){let a=o>=i?t[e+o-i]:0,l=e>0?t[e+o-n]:0,c=t[e+o]-(a+l>>1);r[s+o]=c}}function Jf(t,e,n,r){let s=0;for(let i=0;i<n;i++){let o=i>=r?t[e+i-r]:0,a=e>0?t[e+i-n]:0,l=t[e+i]-(o+a>>1);s+=Math.abs(l)}return s}function Kf(t,e,n,r,s,i){for(let o=0;o<n;o++){let a=o>=i?t[e+o-i]:0,l=e>0?t[e+o-n]:0,c=e>0&&o>=i?t[e+o-(n+i)]:0,u=t[e+o]-Ia(a,l,c);r[s+o]=u}}function Xf(t,e,n,r){let s=0;for(let i=0;i<n;i++){let o=i>=r?t[e+i-r]:0,a=e>0?t[e+i-n]:0,l=e>0&&i>=r?t[e+i-(n+r)]:0,c=t[e+i]-Ia(o,a,l);s+=Math.abs(c)}return s}var Zf={0:Wf,1:Gf,2:zf,3:Yf,4:Kf},Qf={0:jf,1:$f,2:Vf,3:Jf,4:Xf};xa.exports=function(t,e,n,r,s){let i;if(!("filterType"in r)||r.filterType===-1)i=[0,1,2,3,4];else if(typeof r.filterType=="number")i=[r.filterType];else throw new Error("unrecognised filter types");r.bitDepth===16&&(s*=2);let o=e*s,a=0,l=0,c=Buffer.alloc((o+1)*n),u=i[0];for(let d=0;d<n;d++){if(i.length>1){let f=1/0;for(let h=0;h<i.length;h++){let g=Qf[i[h]](t,l,o,s);g<f&&(u=i[h],f=g)}}c[a]=u,a++,Zf[u](t,l,o,c,a,s),a+=o,l+=o}return c}});var ds=m((Zm,Ta)=>{"use strict";var H=at(),eh=os(),th=ba(),nh=Ea(),rh=require("zlib"),be=Ta.exports=function(t){if(this._options=t,t.deflateChunkSize=t.deflateChunkSize||32*1024,t.deflateLevel=t.deflateLevel!=null?t.deflateLevel:9,t.deflateStrategy=t.deflateStrategy!=null?t.deflateStrategy:3,t.inputHasAlpha=t.inputHasAlpha!=null?t.inputHasAlpha:!0,t.deflateFactory=t.deflateFactory||rh.createDeflate,t.bitDepth=t.bitDepth||8,t.colorType=typeof t.colorType=="number"?t.colorType:H.COLORTYPE_COLOR_ALPHA,t.inputColorType=typeof t.inputColorType=="number"?t.inputColorType:H.COLORTYPE_COLOR_ALPHA,[H.COLORTYPE_GRAYSCALE,H.COLORTYPE_COLOR,H.COLORTYPE_COLOR_ALPHA,H.COLORTYPE_ALPHA].indexOf(t.colorType)===-1)throw new Error("option color type:"+t.colorType+" is not supported at present");if([H.COLORTYPE_GRAYSCALE,H.COLORTYPE_COLOR,H.COLORTYPE_COLOR_ALPHA,H.COLORTYPE_ALPHA].indexOf(t.inputColorType)===-1)throw new Error("option input color type:"+t.inputColorType+" is not supported at present");if(t.bitDepth!==8&&t.bitDepth!==16)throw new Error("option bit depth:"+t.bitDepth+" is not supported at present")};be.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};be.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};be.prototype.filterData=function(t,e,n){let r=th(t,e,n,this._options),s=H.COLORTYPE_TO_BPP_MAP[this._options.colorType];return nh(r,e,n,this._options,s)};be.prototype._packChunk=function(t,e){let n=e?e.length:0,r=Buffer.alloc(n+12);return r.writeUInt32BE(n,0),r.writeUInt32BE(t,4),e&&e.copy(r,8),r.writeInt32BE(eh.crc32(r.slice(4,r.length-4)),r.length-4),r};be.prototype.packGAMA=function(t){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(t*H.GAMMA_DIVISION),0),this._packChunk(H.TYPE_gAMA,e)};be.prototype.packIHDR=function(t,e){let n=Buffer.alloc(13);return n.writeUInt32BE(t,0),n.writeUInt32BE(e,4),n[8]=this._options.bitDepth,n[9]=this._options.colorType,n[10]=0,n[11]=0,n[12]=0,this._packChunk(H.TYPE_IHDR,n)};be.prototype.packIDAT=function(t){return this._packChunk(H.TYPE_IDAT,t)};be.prototype.packIEND=function(){return this._packChunk(H.TYPE_IEND,null)}});var Ra=m((Qm,Ca)=>{"use strict";var sh=require("util"),Aa=require("stream"),ih=at(),oh=ds(),ka=Ca.exports=function(t){Aa.call(this);let e=t||{};this._packer=new oh(e),this._deflate=this._packer.createDeflate(),this.readable=!0};sh.inherits(ka,Aa);ka.prototype.pack=function(t,e,n,r){this.emit("data",Buffer.from(ih.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,n)),r&&this.emit("data",this._packer.packGAMA(r));let s=this._packer.filterData(t,e,n);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(i){this.emit("data",this._packer.packIDAT(i))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(s)}});var Ba=m((Wt,Oa)=>{"use strict";var Pa=require("assert").ok,lt=require("zlib"),ah=require("util"),La=require("buffer").kMaxLength;function Fe(t){if(!(this instanceof Fe))return new Fe(t);t&&t.chunkSize<lt.Z_MIN_CHUNK&&(t.chunkSize=lt.Z_MIN_CHUNK),lt.Inflate.call(this,t),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,t&&t.maxLength!=null&&(this._maxLength=t.maxLength)}function lh(t){return new Fe(t)}function Ma(t,e){e&&process.nextTick(e),t._handle&&(t._handle.close(),t._handle=null)}Fe.prototype._processChunk=function(t,e,n){if(typeof n=="function")return lt.Inflate._processChunk.call(this,t,e,n);let r=this,s=t&&t.length,i=this._chunkSize-this._offset,o=this._maxLength,a=0,l=[],c=0,u;this.on("error",function(g){u=g});function d(g,p){if(r._hadError)return;let y=i-p;if(Pa(y>=0,"have should not go down"),y>0){let S=r._buffer.slice(r._offset,r._offset+y);if(r._offset+=y,S.length>o&&(S=S.slice(0,o)),l.push(S),c+=S.length,o-=S.length,o===0)return!1}return(p===0||r._offset>=r._chunkSize)&&(i=r._chunkSize,r._offset=0,r._buffer=Buffer.allocUnsafe(r._chunkSize)),p===0?(a+=s-g,s=g,!0):!1}Pa(this._handle,"zlib binding closed");let f;do f=this._handle.writeSync(e,t,a,s,this._buffer,this._offset,i),f=f||this._writeState;while(!this._hadError&&d(f[0],f[1]));if(this._hadError)throw u;if(c>=La)throw Ma(this),new RangeError("Cannot create final Buffer. It would be larger than 0x"+La.toString(16)+" bytes");let h=Buffer.concat(l,c);return Ma(this),h};ah.inherits(Fe,lt.Inflate);function ch(t,e){if(typeof e=="string"&&(e=Buffer.from(e)),!(e instanceof Buffer))throw new TypeError("Not a string or buffer");let n=t._finishFlushFlag;return n==null&&(n=lt.Z_FINISH),t._processChunk(e,n)}function Na(t,e){return ch(new Fe(e),t)}Oa.exports=Wt=Na;Wt.Inflate=Fe;Wt.createInflate=lh;Wt.inflateSync=Na});var fs=m((ey,Ha)=>{"use strict";var Da=Ha.exports=function(t){this._buffer=t,this._reads=[]};Da.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})};Da.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let t=this._reads[0];if(this._buffer.length&&(this._buffer.length>=t.length||t.allowLess)){this._reads.shift();let e=this._buffer;this._buffer=e.slice(t.length),t.func.call(this,e.slice(0,t.length))}else break}if(this._reads.length>0)return new Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)return new Error("unrecognised content at end of stream")}});var Ua=m(Fa=>{"use strict";var uh=fs(),dh=rs();Fa.process=function(t,e){let n=[],r=new uh(t);return new dh(e,{read:r.read.bind(r),write:function(i){n.push(i)},complete:function(){}}).start(),r.process(),Buffer.concat(n)}});var Ga=m((ny,ja)=>{"use strict";var qa=!0,Wa=require("zlib"),fh=Ba();Wa.deflateSync||(qa=!1);var hh=fs(),ph=Ua(),gh=as(),mh=ls(),yh=cs();ja.exports=function(t,e){if(!qa)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let n;function r(A){n=A}let s;function i(A){s=A}function o(A){s.transColor=A}function a(A){s.palette=A}function l(){s.alpha=!0}let c;function u(A){c=A}let d=[];function f(A){d.push(A)}let h=new hh(t);if(new gh(e,{read:h.read.bind(h),error:r,metadata:i,gamma:u,palette:a,transColor:o,inflateData:f,simpleTransparency:l}).start(),h.process(),n)throw n;let p=Buffer.concat(d);d.length=0;let y;if(s.interlace)y=Wa.inflateSync(p);else{let M=((s.width*s.bpp*s.depth+7>>3)+1)*s.height;y=fh(p,{chunkSize:M,maxLength:M})}if(p=null,!y||!y.length)throw new Error("bad png - invalid inflate data response");let S=ph.process(y,s);p=null;let G=mh.dataToBitMap(S,s);S=null;let re=yh(G,s);return s.data=re,s.gamma=c||0,s}});var Ya=m((ry,Va)=>{"use strict";var $a=!0,za=require("zlib");za.deflateSync||($a=!1);var Sh=at(),_h=ds();Va.exports=function(t,e){if(!$a)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let n=e||{},r=new _h(n),s=[];s.push(Buffer.from(Sh.PNG_SIGNATURE)),s.push(r.packIHDR(t.width,t.height)),t.gamma&&s.push(r.packGAMA(t.gamma));let i=r.filterData(t.data,t.width,t.height),o=za.deflateSync(i,r.getDeflateOptions());if(i=null,!o||!o.length)throw new Error("bad png - invalid compressed data response");return s.push(r.packIDAT(o)),s.push(r.packIEND()),Buffer.concat(s)}});var Ja=m(hs=>{"use strict";var vh=Ga(),wh=Ya();hs.read=function(t,e){return vh(t,e||{})};hs.write=function(t,e){return wh(t,e)}});var Za=m(Xa=>{"use strict";var bh=require("util"),Ka=require("stream"),Ih=va(),xh=Ra(),Eh=Ja(),U=Xa.PNG=function(t){Ka.call(this),t=t||{},this.width=t.width|0,this.height=t.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,t.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new Ih(t),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(e){this.data=e,this.emit("parsed",e)}.bind(this)),this._packer=new xh(t),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};bh.inherits(U,Ka);U.sync=Eh;U.prototype.pack=function(){return!this.data||!this.data.length?(this.emit("error","No data provided"),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)};U.prototype.parse=function(t,e){if(e){let n,r;n=function(s){this.removeListener("error",r),this.data=s,e(null,this)}.bind(this),r=function(s){this.removeListener("parsed",n),e(s,null)}.bind(this),this.once("parsed",n),this.once("error",r)}return this.end(t),this};U.prototype.write=function(t){return this._parser.write(t),!0};U.prototype.end=function(t){this._parser.end(t)};U.prototype._metadata=function(t){this.width=t.width,this.height=t.height,this.emit("metadata",t)};U.prototype._gamma=function(t){this.gamma=t};U.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit("close")};U.bitblt=function(t,e,n,r,s,i,o,a){if(n|=0,r|=0,s|=0,i|=0,o|=0,a|=0,n>t.width||r>t.height||n+s>t.width||r+i>t.height)throw new Error("bitblt reading outside image");if(o>e.width||a>e.height||o+s>e.width||a+i>e.height)throw new Error("bitblt writing outside image");for(let l=0;l<i;l++)t.data.copy(e.data,(a+l)*e.width+o<<2,(r+l)*t.width+n<<2,(r+l)*t.width+n+s<<2)};U.prototype.bitblt=function(t,e,n,r,s,i,o){return U.bitblt(this,t,e,n,r,s,i,o),this};U.adjustGamma=function(t){if(t.gamma){for(let e=0;e<t.height;e++)for(let n=0;n<t.width;n++){let r=t.width*e+n<<2;for(let s=0;s<3;s++){let i=t.data[r+s]/255;i=Math.pow(i,1/2.2/t.gamma),t.data[r+s]=Math.round(i*255)}}t.gamma=0}};U.prototype.adjustGamma=function(){U.adjustGamma(this)}});var jt=m(Ue=>{function Qa(t){if(typeof t=="number"&&(t=t.toString()),typeof t!="string")throw new Error("Color should be defined as hex string");let e=t.slice().replace("#","").split("");if(e.length<3||e.length===5||e.length>8)throw new Error("Invalid hex color: "+t);(e.length===3||e.length===4)&&(e=Array.prototype.concat.apply([],e.map(function(r){return[r,r]}))),e.length===6&&e.push("F","F");let n=parseInt(e.join(""),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:"#"+e.slice(0,6).join("")}}Ue.getOptions=function(e){e||(e={}),e.color||(e.color={});let n=typeof e.margin>"u"||e.margin===null||e.margin<0?4:e.margin,r=e.width&&e.width>=21?e.width:void 0,s=e.scale||4;return{width:r,scale:r?4:s,margin:n,color:{dark:Qa(e.color.dark||"#000000ff"),light:Qa(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};Ue.getScale=function(e,n){return n.width&&n.width>=e+n.margin*2?n.width/(e+n.margin*2):n.scale};Ue.getImageWidth=function(e,n){let r=Ue.getScale(e,n);return Math.floor((e+n.margin*2)*r)};Ue.qrToImageData=function(e,n,r){let s=n.modules.size,i=n.modules.data,o=Ue.getScale(s,r),a=Math.floor((s+r.margin*2)*o),l=r.margin*o,c=[r.color.light,r.color.dark];for(let u=0;u<a;u++)for(let d=0;d<a;d++){let f=(u*a+d)*4,h=r.color.light;if(u>=l&&d>=l&&u<a-l&&d<a-l){let g=Math.floor((u-l)/o),p=Math.floor((d-l)/o);h=c[i[g*s+p]?1:0]}e[f++]=h.r,e[f++]=h.g,e[f++]=h.b,e[f]=h.a}}});var el=m(ae=>{var Th=require("fs"),Ah=Za().PNG,ps=jt();ae.render=function(e,n){let r=ps.getOptions(n),s=r.rendererOpts,i=ps.getImageWidth(e.modules.size,r);s.width=i,s.height=i;let o=new Ah(s);return ps.qrToImageData(o.data,e,r),o};ae.renderToDataURL=function(e,n,r){typeof r>"u"&&(r=n,n=void 0),ae.renderToBuffer(e,n,function(s,i){s&&r(s);let o="data:image/png;base64,";o+=i.toString("base64"),r(null,o)})};ae.renderToBuffer=function(e,n,r){typeof r>"u"&&(r=n,n=void 0);let s=ae.render(e,n),i=[];s.on("error",r),s.on("data",function(o){i.push(o)}),s.on("end",function(){r(null,Buffer.concat(i))}),s.pack()};ae.renderToFile=function(e,n,r,s){typeof s>"u"&&(s=r,r=void 0);let i=!1,o=(...l)=>{i||(i=!0,s.apply(null,l))},a=Th.createWriteStream(e);a.on("error",o),a.on("close",o),ae.renderToFileStream(a,n,r)};ae.renderToFileStream=function(e,n,r){ae.render(n,r).pack().pipe(e)}});var tl=m(Mn=>{var kh=jt(),Ch={WW:" ",WB:"\u2584",BB:"\u2588",BW:"\u2580"},Rh={BB:" ",BW:"\u2584",WW:"\u2588",WB:"\u2580"};function Ph(t,e,n){return t&&e?n.BB:t&&!e?n.BW:!t&&e?n.WB:n.WW}Mn.render=function(t,e,n){let r=kh.getOptions(e),s=Ch;(r.color.dark.hex==="#ffffff"||r.color.light.hex==="#000000")&&(s=Rh);let i=t.modules.size,o=t.modules.data,a="",l=Array(i+r.margin*2+1).join(s.WW);l=Array(r.margin/2+1).join(l+`
14
- `);let c=Array(r.margin+1).join(s.WW);a+=l;for(let u=0;u<i;u+=2){a+=c;for(let d=0;d<i;d++){let f=o[u*i+d],h=o[(u+1)*i+d];a+=Ph(f,h,s)}a+=c+`
13
+ `);let o=_f(e,n,s),a=Ln.getSymbolSize(e),l=new lf(a);return pf(l,e),gf(l),mf(l,e),Xr(l,n,0),e>=7&&yf(l,e),Sf(l,o),isNaN(r)&&(r=Zr.getBestMask(l,Xr.bind(null,l,n))),Zr.applyMask(r,l),Xr(l,n,r),{modules:l,version:e,errorCorrectionLevel:n,maskPattern:r,segments:s}}ra.create=function(e,n){if(typeof e>"u"||e==="")throw new Error("No input text");let r=Jr.M,s,i;return typeof n<"u"&&(r=Jr.from(n.errorCorrectionLevel,Jr.M),s=Rn.from(n.version),i=Zr.from(n.maskPattern),n.toSJISFunc&&Ln.setToSJISFunction(n.toSJISFunc)),wf(e,s,r,i)}});var ts=m((Fm,ia)=>{"use strict";var bf=require("util"),sa=require("stream"),te=ia.exports=function(){sa.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};bf.inherits(te,sa);te.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit("drain"))}.bind(this))};te.prototype.write=function(t,e){if(!this.writable)return this.emit("error",new Error("Stream not writable")),!1;let n;return Buffer.isBuffer(t)?n=t:n=Buffer.from(t,e||this._encoding),this._buffers.push(n),this._buffered+=n.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused};te.prototype.end=function(t,e){t&&this.write(t,e),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))};te.prototype.destroySoon=te.prototype.end;te.prototype._end=function(){this._reads.length>0&&this.emit("error",new Error("Unexpected end of input")),this.destroy()};te.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit("close"))};te.prototype._processReadAllowingLess=function(t){this._reads.shift();let e=this._buffers[0];e.length>t.length?(this._buffered-=t.length,this._buffers[0]=e.slice(t.length),t.func.call(this,e.slice(0,t.length))):(this._buffered-=e.length,this._buffers.shift(),t.func.call(this,e))};te.prototype._processRead=function(t){this._reads.shift();let e=0,n=0,r=Buffer.alloc(t.length);for(;e<t.length;){let s=this._buffers[n++],i=Math.min(s.length,t.length-e);s.copy(r,e,0,i),e+=i,i!==s.length&&(this._buffers[--n]=s.slice(i))}n>0&&this._buffers.splice(0,n),this._buffered-=t.length,t.func.call(this,r)};te.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let t=this._reads[0];if(t.allowLess)this._processReadAllowingLess(t);else if(this._buffered>=t.length)this._processRead(t);else break}this._buffers&&!this.writable&&this._end()}catch(t){this.emit("error",t)}}});var rs=m(ns=>{"use strict";var be=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];ns.getImagePasses=function(t,e){let n=[],r=t%8,s=e%8,i=(t-r)/8,o=(e-s)/8;for(let a=0;a<be.length;a++){let l=be[a],c=i*l.x.length,u=o*l.y.length;for(let d=0;d<l.x.length&&l.x[d]<r;d++)c++;for(let d=0;d<l.y.length&&l.y[d]<s;d++)u++;c>0&&u>0&&n.push({width:c,height:u,index:a})}return n};ns.getInterlaceIterator=function(t){return function(e,n,r){let s=e%be[r].x.length,i=(e-s)/be[r].x.length*8+be[r].x[s],o=n%be[r].y.length,a=(n-o)/be[r].y.length*8+be[r].y[o];return i*4+a*t*4}}});var ss=m((qm,oa)=>{"use strict";oa.exports=function(e,n,r){let s=e+n-r,i=Math.abs(s-e),o=Math.abs(s-n),a=Math.abs(s-r);return i<=o&&i<=a?e:o<=a?n:r}});var is=m((Wm,la)=>{"use strict";var If=rs(),xf=ss();function aa(t,e,n){let r=t*e;return n!==8&&(r=Math.ceil(r/(8/n))),r}var ot=la.exports=function(t,e){let n=t.width,r=t.height,s=t.interlace,i=t.bpp,o=t.depth;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],s){let a=If.getImagePasses(n,r);for(let l=0;l<a.length;l++)this._images.push({byteWidth:aa(a[l].width,i,o),height:a[l].height,lineIndex:0})}else this._images.push({byteWidth:aa(n,i,o),height:r,lineIndex:0});o===8?this._xComparison=i:o===16?this._xComparison=i*2:this._xComparison=1};ot.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};ot.prototype._unFilterType1=function(t,e,n){let r=this._xComparison,s=r-1;for(let i=0;i<n;i++){let o=t[1+i],a=i>s?e[i-r]:0;e[i]=o+a}};ot.prototype._unFilterType2=function(t,e,n){let r=this._lastLine;for(let s=0;s<n;s++){let i=t[1+s],o=r?r[s]:0;e[s]=i+o}};ot.prototype._unFilterType3=function(t,e,n){let r=this._xComparison,s=r-1,i=this._lastLine;for(let o=0;o<n;o++){let a=t[1+o],l=i?i[o]:0,c=o>s?e[o-r]:0,u=Math.floor((c+l)/2);e[o]=a+u}};ot.prototype._unFilterType4=function(t,e,n){let r=this._xComparison,s=r-1,i=this._lastLine;for(let o=0;o<n;o++){let a=t[1+o],l=i?i[o]:0,c=o>s?e[o-r]:0,u=o>s&&i?i[o-r]:0,d=xf(c,l,u);e[o]=a+d}};ot.prototype._reverseFilterLine=function(t){let e=t[0],n,r=this._images[this._imageIndex],s=r.byteWidth;if(e===0)n=t.slice(1,s+1);else switch(n=Buffer.alloc(s),e){case 1:this._unFilterType1(t,n,s);break;case 2:this._unFilterType2(t,n,s);break;case 3:this._unFilterType3(t,n,s);break;case 4:this._unFilterType4(t,n,s);break;default:throw new Error("Unrecognised filter type - "+e)}this.write(n),r.lineIndex++,r.lineIndex>=r.height?(this._lastLine=null,this._imageIndex++,r=this._images[this._imageIndex]):this._lastLine=n,r?this.read(r.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}});var da=m((jm,ua)=>{"use strict";var Tf=require("util"),ca=ts(),Af=is(),Ef=ua.exports=function(t){ca.call(this);let e=[],n=this;this._filter=new Af(t,{read:this.read.bind(this),write:function(r){e.push(r)},complete:function(){n.emit("complete",Buffer.concat(e))}}),this._filter.start()};Tf.inherits(Ef,ca)});var at=m((Gm,fa)=>{"use strict";fa.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var ls=m(($m,ha)=>{"use strict";var os=[];(function(){for(let t=0;t<256;t++){let e=t;for(let n=0;n<8;n++)e&1?e=3988292384^e>>>1:e=e>>>1;os[t]=e}})();var as=ha.exports=function(){this._crc=-1};as.prototype.write=function(t){for(let e=0;e<t.length;e++)this._crc=os[(this._crc^t[e])&255]^this._crc>>>8;return!0};as.prototype.crc32=function(){return this._crc^-1};as.crc32=function(t){let e=-1;for(let n=0;n<t.length;n++)e=os[(e^t[n])&255]^e>>>8;return e^-1}});var cs=m((zm,pa)=>{"use strict";var R=at(),kf=ls(),O=pa.exports=function(t,e){this._options=t,t.checkCRC=t.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[R.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[R.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[R.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[R.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[R.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[R.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};O.prototype.start=function(){this.read(R.PNG_SIGNATURE.length,this._parseSignature.bind(this))};O.prototype._parseSignature=function(t){let e=R.PNG_SIGNATURE;for(let n=0;n<e.length;n++)if(t[n]!==e[n]){this.error(new Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};O.prototype._parseChunkBegin=function(t){let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r="";for(let i=4;i<8;i++)r+=String.fromCharCode(t[i]);let s=!!(t[4]&32);if(!this._hasIHDR&&n!==R.TYPE_IHDR){this.error(new Error("Expected IHDR on beggining"));return}if(this._crc=new kf,this._crc.write(Buffer.from(r)),this._chunks[n])return this._chunks[n](e);if(!s){this.error(new Error("Unsupported critical chunk type "+r));return}this.read(e+4,this._skipChunk.bind(this))};O.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};O.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};O.prototype._parseChunkEnd=function(t){let e=t.readInt32BE(0),n=this._crc.crc32();if(this._options.checkCRC&&n!==e){this.error(new Error("Crc error - "+e+" - "+n));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))};O.prototype._handleIHDR=function(t){this.read(t,this._parseIHDR.bind(this))};O.prototype._parseIHDR=function(t){this._crc.write(t);let e=t.readUInt32BE(0),n=t.readUInt32BE(4),r=t[8],s=t[9],i=t[10],o=t[11],a=t[12];if(r!==8&&r!==4&&r!==2&&r!==1&&r!==16){this.error(new Error("Unsupported bit depth "+r));return}if(!(s in R.COLORTYPE_TO_BPP_MAP)){this.error(new Error("Unsupported color type"));return}if(i!==0){this.error(new Error("Unsupported compression method"));return}if(o!==0){this.error(new Error("Unsupported filter method"));return}if(a!==0&&a!==1){this.error(new Error("Unsupported interlace method"));return}this._colorType=s;let l=R.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:n,depth:r,interlace:!!a,palette:!!(s&R.COLORTYPE_PALETTE),color:!!(s&R.COLORTYPE_COLOR),alpha:!!(s&R.COLORTYPE_ALPHA),bpp:l,colorType:s}),this._handleChunkEnd()};O.prototype._handlePLTE=function(t){this.read(t,this._parsePLTE.bind(this))};O.prototype._parsePLTE=function(t){this._crc.write(t);let e=Math.floor(t.length/3);for(let n=0;n<e;n++)this._palette.push([t[n*3],t[n*3+1],t[n*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};O.prototype._handleTRNS=function(t){this.simpleTransparency(),this.read(t,this._parseTRNS.bind(this))};O.prototype._parseTRNS=function(t){if(this._crc.write(t),this._colorType===R.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(new Error("Transparency chunk must be after palette"));return}if(t.length>this._palette.length){this.error(new Error("More transparent colors than palette size"));return}for(let e=0;e<t.length;e++)this._palette[e][3]=t[e];this.palette(this._palette)}this._colorType===R.COLORTYPE_GRAYSCALE&&this.transColor([t.readUInt16BE(0)]),this._colorType===R.COLORTYPE_COLOR&&this.transColor([t.readUInt16BE(0),t.readUInt16BE(2),t.readUInt16BE(4)]),this._handleChunkEnd()};O.prototype._handleGAMA=function(t){this.read(t,this._parseGAMA.bind(this))};O.prototype._parseGAMA=function(t){this._crc.write(t),this.gamma(t.readUInt32BE(0)/R.GAMMA_DIVISION),this._handleChunkEnd()};O.prototype._handleIDAT=function(t){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-t,this._parseIDAT.bind(this,t))};O.prototype._parseIDAT=function(t,e){if(this._crc.write(e),this._colorType===R.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw new Error("Expected palette not found");this.inflateData(e);let n=t-e.length;n>0?this._handleIDAT(n):this._handleChunkEnd()};O.prototype._handleIEND=function(t){this.read(t,this._parseIEND.bind(this))};O.prototype._parseIEND=function(t){this._crc.write(t),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}});var us=m(ma=>{"use strict";var ga=rs(),Cf=[function(){},function(t,e,n,r){if(r===e.length)throw new Error("Ran out of data");let s=e[r];t[n]=s,t[n+1]=s,t[n+2]=s,t[n+3]=255},function(t,e,n,r){if(r+1>=e.length)throw new Error("Ran out of data");let s=e[r];t[n]=s,t[n+1]=s,t[n+2]=s,t[n+3]=e[r+1]},function(t,e,n,r){if(r+2>=e.length)throw new Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=255},function(t,e,n,r){if(r+3>=e.length)throw new Error("Ran out of data");t[n]=e[r],t[n+1]=e[r+1],t[n+2]=e[r+2],t[n+3]=e[r+3]}],Pf=[function(){},function(t,e,n,r){let s=e[0];t[n]=s,t[n+1]=s,t[n+2]=s,t[n+3]=r},function(t,e,n){let r=e[0];t[n]=r,t[n+1]=r,t[n+2]=r,t[n+3]=e[1]},function(t,e,n,r){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=r},function(t,e,n){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=e[3]}];function Rf(t,e){let n=[],r=0;function s(){if(r===t.length)throw new Error("Ran out of data");let i=t[r];r++;let o,a,l,c,u,d,f,h;switch(e){default:throw new Error("unrecognised depth");case 16:f=t[r],r++,n.push((i<<8)+f);break;case 4:f=i&15,h=i>>4,n.push(h,f);break;case 2:u=i&3,d=i>>2&3,f=i>>4&3,h=i>>6&3,n.push(h,f,d,u);break;case 1:o=i&1,a=i>>1&1,l=i>>2&1,c=i>>3&1,u=i>>4&1,d=i>>5&1,f=i>>6&1,h=i>>7&1,n.push(h,f,d,u,c,l,a,o);break}}return{get:function(i){for(;n.length<i;)s();let o=n.slice(0,i);return n=n.slice(i),o},resetAfterLine:function(){n.length=0},end:function(){if(r!==t.length)throw new Error("extra data found")}}}function Lf(t,e,n,r,s,i){let o=t.width,a=t.height,l=t.index;for(let c=0;c<a;c++)for(let u=0;u<o;u++){let d=n(u,c,l);Cf[r](e,s,d,i),i+=r}return i}function Mf(t,e,n,r,s,i){let o=t.width,a=t.height,l=t.index;for(let c=0;c<a;c++){for(let u=0;u<o;u++){let d=s.get(r),f=n(u,c,l);Pf[r](e,d,f,i)}s.resetAfterLine()}}ma.dataToBitMap=function(t,e){let n=e.width,r=e.height,s=e.depth,i=e.bpp,o=e.interlace,a;s!==8&&(a=Rf(t,s));let l;s<=8?l=Buffer.alloc(n*r*4):l=new Uint16Array(n*r*4);let c=Math.pow(2,s)-1,u=0,d,f;if(o)d=ga.getImagePasses(n,r),f=ga.getInterlaceIterator(n,r);else{let h=0;f=function(){let p=h;return h+=4,p},d=[{width:n,height:r}]}for(let h=0;h<d.length;h++)s===8?u=Lf(d[h],l,f,i,t,u):Mf(d[h],l,f,i,a,c);if(s===8){if(u!==t.length)throw new Error("extra data found")}else a.end();return l}});var ds=m((Ym,ya)=>{"use strict";function Nf(t,e,n,r,s){let i=0;for(let o=0;o<r;o++)for(let a=0;a<n;a++){let l=s[t[i]];if(!l)throw new Error("index "+t[i]+" not in palette");for(let c=0;c<4;c++)e[i+c]=l[c];i+=4}}function Of(t,e,n,r,s){let i=0;for(let o=0;o<r;o++)for(let a=0;a<n;a++){let l=!1;if(s.length===1?s[0]===t[i]&&(l=!0):s[0]===t[i]&&s[1]===t[i+1]&&s[2]===t[i+2]&&(l=!0),l)for(let c=0;c<4;c++)e[i+c]=0;i+=4}}function Bf(t,e,n,r,s){let i=255,o=Math.pow(2,s)-1,a=0;for(let l=0;l<r;l++)for(let c=0;c<n;c++){for(let u=0;u<4;u++)e[a+u]=Math.floor(t[a+u]*i/o+.5);a+=4}}ya.exports=function(t,e){let n=e.depth,r=e.width,s=e.height,i=e.colorType,o=e.transColor,a=e.palette,l=t;return i===3?Nf(t,l,r,s,a):(o&&Of(t,l,r,s,o),n!==8&&(n===16&&(l=Buffer.alloc(r*s*4)),Bf(t,l,r,s,n))),l}});var va=m((Jm,_a)=>{"use strict";var Df=require("util"),fs=require("zlib"),Sa=ts(),Hf=da(),Ff=cs(),Uf=us(),qf=ds(),oe=_a.exports=function(t){Sa.call(this),this._parser=new Ff(t,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=t,this.writable=!0,this._parser.start()};Df.inherits(oe,Sa);oe.prototype._handleError=function(t){this.emit("error",t),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on("error",function(){})),this.errord=!0};oe.prototype._inflateData=function(t){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=fs.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let n=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,r=Math.max(n,fs.Z_MIN_CHUNK);this._inflate=fs.createInflate({chunkSize:r});let s=n,i=this.emit.bind(this,"error");this._inflate.on("error",function(a){s&&i(a)}),this._filter.on("complete",this._complete.bind(this));let o=this._filter.write.bind(this._filter);this._inflate.on("data",function(a){s&&(a.length>s&&(a=a.slice(0,s)),s-=a.length,o(a))}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(t)};oe.prototype._handleMetaData=function(t){this._metaData=t,this._bitmapInfo=Object.create(t),this._filter=new Hf(this._bitmapInfo)};oe.prototype._handleTransColor=function(t){this._bitmapInfo.transColor=t};oe.prototype._handlePalette=function(t){this._bitmapInfo.palette=t};oe.prototype._simpleTransparency=function(){this._metaData.alpha=!0};oe.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};oe.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit("error","No Inflate block"))};oe.prototype._complete=function(t){if(this.errord)return;let e;try{let n=Uf.dataToBitMap(t,this._bitmapInfo);e=qf(n,this._bitmapInfo),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var ba=m((Km,wa)=>{"use strict";var X=at();wa.exports=function(t,e,n,r){let s=[X.COLORTYPE_COLOR_ALPHA,X.COLORTYPE_ALPHA].indexOf(r.colorType)!==-1;if(r.colorType===r.inputColorType){let p=(function(){let g=new ArrayBuffer(2);return new DataView(g).setInt16(0,256,!0),new Int16Array(g)[0]!==256})();if(r.bitDepth===8||r.bitDepth===16&&p)return t}let i=r.bitDepth!==16?t:new Uint16Array(t.buffer),o=255,a=X.COLORTYPE_TO_BPP_MAP[r.inputColorType];a===4&&!r.inputHasAlpha&&(a=3);let l=X.COLORTYPE_TO_BPP_MAP[r.colorType];r.bitDepth===16&&(o=65535,l*=2);let c=Buffer.alloc(e*n*l),u=0,d=0,f=r.bgColor||{};f.red===void 0&&(f.red=o),f.green===void 0&&(f.green=o),f.blue===void 0&&(f.blue=o);function h(){let p,g,y,S=o;switch(r.inputColorType){case X.COLORTYPE_COLOR_ALPHA:S=i[u+3],p=i[u],g=i[u+1],y=i[u+2];break;case X.COLORTYPE_COLOR:p=i[u],g=i[u+1],y=i[u+2];break;case X.COLORTYPE_ALPHA:S=i[u+1],p=i[u],g=p,y=p;break;case X.COLORTYPE_GRAYSCALE:p=i[u],g=p,y=p;break;default:throw new Error("input color type:"+r.inputColorType+" is not supported at present")}return r.inputHasAlpha&&(s||(S/=o,p=Math.min(Math.max(Math.round((1-S)*f.red+S*p),0),o),g=Math.min(Math.max(Math.round((1-S)*f.green+S*g),0),o),y=Math.min(Math.max(Math.round((1-S)*f.blue+S*y),0),o))),{red:p,green:g,blue:y,alpha:S}}for(let p=0;p<n;p++)for(let g=0;g<e;g++){let y=h(i,u);switch(r.colorType){case X.COLORTYPE_COLOR_ALPHA:case X.COLORTYPE_COLOR:r.bitDepth===8?(c[d]=y.red,c[d+1]=y.green,c[d+2]=y.blue,s&&(c[d+3]=y.alpha)):(c.writeUInt16BE(y.red,d),c.writeUInt16BE(y.green,d+2),c.writeUInt16BE(y.blue,d+4),s&&c.writeUInt16BE(y.alpha,d+6));break;case X.COLORTYPE_ALPHA:case X.COLORTYPE_GRAYSCALE:{let S=(y.red+y.green+y.blue)/3;r.bitDepth===8?(c[d]=S,s&&(c[d+1]=y.alpha)):(c.writeUInt16BE(S,d),s&&c.writeUInt16BE(y.alpha,d+2));break}default:throw new Error("unrecognised color Type "+r.colorType)}u+=a,d+=l}return c}});var Ta=m((Xm,xa)=>{"use strict";var Ia=ss();function Wf(t,e,n,r,s){for(let i=0;i<n;i++)r[s+i]=t[e+i]}function jf(t,e,n){let r=0,s=e+n;for(let i=e;i<s;i++)r+=Math.abs(t[i]);return r}function Gf(t,e,n,r,s,i){for(let o=0;o<n;o++){let a=o>=i?t[e+o-i]:0,l=t[e+o]-a;r[s+o]=l}}function $f(t,e,n,r){let s=0;for(let i=0;i<n;i++){let o=i>=r?t[e+i-r]:0,a=t[e+i]-o;s+=Math.abs(a)}return s}function zf(t,e,n,r,s){for(let i=0;i<n;i++){let o=e>0?t[e+i-n]:0,a=t[e+i]-o;r[s+i]=a}}function Vf(t,e,n){let r=0,s=e+n;for(let i=e;i<s;i++){let o=e>0?t[i-n]:0,a=t[i]-o;r+=Math.abs(a)}return r}function Yf(t,e,n,r,s,i){for(let o=0;o<n;o++){let a=o>=i?t[e+o-i]:0,l=e>0?t[e+o-n]:0,c=t[e+o]-(a+l>>1);r[s+o]=c}}function Jf(t,e,n,r){let s=0;for(let i=0;i<n;i++){let o=i>=r?t[e+i-r]:0,a=e>0?t[e+i-n]:0,l=t[e+i]-(o+a>>1);s+=Math.abs(l)}return s}function Kf(t,e,n,r,s,i){for(let o=0;o<n;o++){let a=o>=i?t[e+o-i]:0,l=e>0?t[e+o-n]:0,c=e>0&&o>=i?t[e+o-(n+i)]:0,u=t[e+o]-Ia(a,l,c);r[s+o]=u}}function Xf(t,e,n,r){let s=0;for(let i=0;i<n;i++){let o=i>=r?t[e+i-r]:0,a=e>0?t[e+i-n]:0,l=e>0&&i>=r?t[e+i-(n+r)]:0,c=t[e+i]-Ia(o,a,l);s+=Math.abs(c)}return s}var Zf={0:Wf,1:Gf,2:zf,3:Yf,4:Kf},Qf={0:jf,1:$f,2:Vf,3:Jf,4:Xf};xa.exports=function(t,e,n,r,s){let i;if(!("filterType"in r)||r.filterType===-1)i=[0,1,2,3,4];else if(typeof r.filterType=="number")i=[r.filterType];else throw new Error("unrecognised filter types");r.bitDepth===16&&(s*=2);let o=e*s,a=0,l=0,c=Buffer.alloc((o+1)*n),u=i[0];for(let d=0;d<n;d++){if(i.length>1){let f=1/0;for(let h=0;h<i.length;h++){let p=Qf[i[h]](t,l,o,s);p<f&&(u=i[h],f=p)}}c[a]=u,a++,Zf[u](t,l,o,c,a,s),a+=o,l+=o}return c}});var hs=m((Zm,Aa)=>{"use strict";var H=at(),eh=ls(),th=ba(),nh=Ta(),rh=require("zlib"),Ie=Aa.exports=function(t){if(this._options=t,t.deflateChunkSize=t.deflateChunkSize||32*1024,t.deflateLevel=t.deflateLevel!=null?t.deflateLevel:9,t.deflateStrategy=t.deflateStrategy!=null?t.deflateStrategy:3,t.inputHasAlpha=t.inputHasAlpha!=null?t.inputHasAlpha:!0,t.deflateFactory=t.deflateFactory||rh.createDeflate,t.bitDepth=t.bitDepth||8,t.colorType=typeof t.colorType=="number"?t.colorType:H.COLORTYPE_COLOR_ALPHA,t.inputColorType=typeof t.inputColorType=="number"?t.inputColorType:H.COLORTYPE_COLOR_ALPHA,[H.COLORTYPE_GRAYSCALE,H.COLORTYPE_COLOR,H.COLORTYPE_COLOR_ALPHA,H.COLORTYPE_ALPHA].indexOf(t.colorType)===-1)throw new Error("option color type:"+t.colorType+" is not supported at present");if([H.COLORTYPE_GRAYSCALE,H.COLORTYPE_COLOR,H.COLORTYPE_COLOR_ALPHA,H.COLORTYPE_ALPHA].indexOf(t.inputColorType)===-1)throw new Error("option input color type:"+t.inputColorType+" is not supported at present");if(t.bitDepth!==8&&t.bitDepth!==16)throw new Error("option bit depth:"+t.bitDepth+" is not supported at present")};Ie.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Ie.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Ie.prototype.filterData=function(t,e,n){let r=th(t,e,n,this._options),s=H.COLORTYPE_TO_BPP_MAP[this._options.colorType];return nh(r,e,n,this._options,s)};Ie.prototype._packChunk=function(t,e){let n=e?e.length:0,r=Buffer.alloc(n+12);return r.writeUInt32BE(n,0),r.writeUInt32BE(t,4),e&&e.copy(r,8),r.writeInt32BE(eh.crc32(r.slice(4,r.length-4)),r.length-4),r};Ie.prototype.packGAMA=function(t){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(t*H.GAMMA_DIVISION),0),this._packChunk(H.TYPE_gAMA,e)};Ie.prototype.packIHDR=function(t,e){let n=Buffer.alloc(13);return n.writeUInt32BE(t,0),n.writeUInt32BE(e,4),n[8]=this._options.bitDepth,n[9]=this._options.colorType,n[10]=0,n[11]=0,n[12]=0,this._packChunk(H.TYPE_IHDR,n)};Ie.prototype.packIDAT=function(t){return this._packChunk(H.TYPE_IDAT,t)};Ie.prototype.packIEND=function(){return this._packChunk(H.TYPE_IEND,null)}});var Pa=m((Qm,Ca)=>{"use strict";var sh=require("util"),Ea=require("stream"),ih=at(),oh=hs(),ka=Ca.exports=function(t){Ea.call(this);let e=t||{};this._packer=new oh(e),this._deflate=this._packer.createDeflate(),this.readable=!0};sh.inherits(ka,Ea);ka.prototype.pack=function(t,e,n,r){this.emit("data",Buffer.from(ih.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,n)),r&&this.emit("data",this._packer.packGAMA(r));let s=this._packer.filterData(t,e,n);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(i){this.emit("data",this._packer.packIDAT(i))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(s)}});var Ba=m((Wt,Oa)=>{"use strict";var Ra=require("assert").ok,lt=require("zlib"),ah=require("util"),La=require("buffer").kMaxLength;function Fe(t){if(!(this instanceof Fe))return new Fe(t);t&&t.chunkSize<lt.Z_MIN_CHUNK&&(t.chunkSize=lt.Z_MIN_CHUNK),lt.Inflate.call(this,t),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,t&&t.maxLength!=null&&(this._maxLength=t.maxLength)}function lh(t){return new Fe(t)}function Ma(t,e){e&&process.nextTick(e),t._handle&&(t._handle.close(),t._handle=null)}Fe.prototype._processChunk=function(t,e,n){if(typeof n=="function")return lt.Inflate._processChunk.call(this,t,e,n);let r=this,s=t&&t.length,i=this._chunkSize-this._offset,o=this._maxLength,a=0,l=[],c=0,u;this.on("error",function(p){u=p});function d(p,g){if(r._hadError)return;let y=i-g;if(Ra(y>=0,"have should not go down"),y>0){let S=r._buffer.slice(r._offset,r._offset+y);if(r._offset+=y,S.length>o&&(S=S.slice(0,o)),l.push(S),c+=S.length,o-=S.length,o===0)return!1}return(g===0||r._offset>=r._chunkSize)&&(i=r._chunkSize,r._offset=0,r._buffer=Buffer.allocUnsafe(r._chunkSize)),g===0?(a+=s-p,s=p,!0):!1}Ra(this._handle,"zlib binding closed");let f;do f=this._handle.writeSync(e,t,a,s,this._buffer,this._offset,i),f=f||this._writeState;while(!this._hadError&&d(f[0],f[1]));if(this._hadError)throw u;if(c>=La)throw Ma(this),new RangeError("Cannot create final Buffer. It would be larger than 0x"+La.toString(16)+" bytes");let h=Buffer.concat(l,c);return Ma(this),h};ah.inherits(Fe,lt.Inflate);function ch(t,e){if(typeof e=="string"&&(e=Buffer.from(e)),!(e instanceof Buffer))throw new TypeError("Not a string or buffer");let n=t._finishFlushFlag;return n==null&&(n=lt.Z_FINISH),t._processChunk(e,n)}function Na(t,e){return ch(new Fe(e),t)}Oa.exports=Wt=Na;Wt.Inflate=Fe;Wt.createInflate=lh;Wt.inflateSync=Na});var ps=m((ey,Ha)=>{"use strict";var Da=Ha.exports=function(t){this._buffer=t,this._reads=[]};Da.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})};Da.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let t=this._reads[0];if(this._buffer.length&&(this._buffer.length>=t.length||t.allowLess)){this._reads.shift();let e=this._buffer;this._buffer=e.slice(t.length),t.func.call(this,e.slice(0,t.length))}else break}if(this._reads.length>0)return new Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)return new Error("unrecognised content at end of stream")}});var Ua=m(Fa=>{"use strict";var uh=ps(),dh=is();Fa.process=function(t,e){let n=[],r=new uh(t);return new dh(e,{read:r.read.bind(r),write:function(i){n.push(i)},complete:function(){}}).start(),r.process(),Buffer.concat(n)}});var Ga=m((ny,ja)=>{"use strict";var qa=!0,Wa=require("zlib"),fh=Ba();Wa.deflateSync||(qa=!1);var hh=ps(),ph=Ua(),gh=cs(),mh=us(),yh=ds();ja.exports=function(t,e){if(!qa)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let n;function r(E){n=E}let s;function i(E){s=E}function o(E){s.transColor=E}function a(E){s.palette=E}function l(){s.alpha=!0}let c;function u(E){c=E}let d=[];function f(E){d.push(E)}let h=new hh(t);if(new gh(e,{read:h.read.bind(h),error:r,metadata:i,gamma:u,palette:a,transColor:o,inflateData:f,simpleTransparency:l}).start(),h.process(),n)throw n;let g=Buffer.concat(d);d.length=0;let y;if(s.interlace)y=Wa.inflateSync(g);else{let M=((s.width*s.bpp*s.depth+7>>3)+1)*s.height;y=fh(g,{chunkSize:M,maxLength:M})}if(g=null,!y||!y.length)throw new Error("bad png - invalid inflate data response");let S=ph.process(y,s);g=null;let G=mh.dataToBitMap(S,s);S=null;let re=yh(G,s);return s.data=re,s.gamma=c||0,s}});var Ya=m((ry,Va)=>{"use strict";var $a=!0,za=require("zlib");za.deflateSync||($a=!1);var Sh=at(),_h=hs();Va.exports=function(t,e){if(!$a)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let n=e||{},r=new _h(n),s=[];s.push(Buffer.from(Sh.PNG_SIGNATURE)),s.push(r.packIHDR(t.width,t.height)),t.gamma&&s.push(r.packGAMA(t.gamma));let i=r.filterData(t.data,t.width,t.height),o=za.deflateSync(i,r.getDeflateOptions());if(i=null,!o||!o.length)throw new Error("bad png - invalid compressed data response");return s.push(r.packIDAT(o)),s.push(r.packIEND()),Buffer.concat(s)}});var Ja=m(gs=>{"use strict";var vh=Ga(),wh=Ya();gs.read=function(t,e){return vh(t,e||{})};gs.write=function(t,e){return wh(t,e)}});var Za=m(Xa=>{"use strict";var bh=require("util"),Ka=require("stream"),Ih=va(),xh=Pa(),Th=Ja(),U=Xa.PNG=function(t){Ka.call(this),t=t||{},this.width=t.width|0,this.height=t.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,t.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new Ih(t),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(e){this.data=e,this.emit("parsed",e)}.bind(this)),this._packer=new xh(t),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};bh.inherits(U,Ka);U.sync=Th;U.prototype.pack=function(){return!this.data||!this.data.length?(this.emit("error","No data provided"),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)};U.prototype.parse=function(t,e){if(e){let n,r;n=function(s){this.removeListener("error",r),this.data=s,e(null,this)}.bind(this),r=function(s){this.removeListener("parsed",n),e(s,null)}.bind(this),this.once("parsed",n),this.once("error",r)}return this.end(t),this};U.prototype.write=function(t){return this._parser.write(t),!0};U.prototype.end=function(t){this._parser.end(t)};U.prototype._metadata=function(t){this.width=t.width,this.height=t.height,this.emit("metadata",t)};U.prototype._gamma=function(t){this.gamma=t};U.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit("close")};U.bitblt=function(t,e,n,r,s,i,o,a){if(n|=0,r|=0,s|=0,i|=0,o|=0,a|=0,n>t.width||r>t.height||n+s>t.width||r+i>t.height)throw new Error("bitblt reading outside image");if(o>e.width||a>e.height||o+s>e.width||a+i>e.height)throw new Error("bitblt writing outside image");for(let l=0;l<i;l++)t.data.copy(e.data,(a+l)*e.width+o<<2,(r+l)*t.width+n<<2,(r+l)*t.width+n+s<<2)};U.prototype.bitblt=function(t,e,n,r,s,i,o){return U.bitblt(this,t,e,n,r,s,i,o),this};U.adjustGamma=function(t){if(t.gamma){for(let e=0;e<t.height;e++)for(let n=0;n<t.width;n++){let r=t.width*e+n<<2;for(let s=0;s<3;s++){let i=t.data[r+s]/255;i=Math.pow(i,1/2.2/t.gamma),t.data[r+s]=Math.round(i*255)}}t.gamma=0}};U.prototype.adjustGamma=function(){U.adjustGamma(this)}});var jt=m(Ue=>{function Qa(t){if(typeof t=="number"&&(t=t.toString()),typeof t!="string")throw new Error("Color should be defined as hex string");let e=t.slice().replace("#","").split("");if(e.length<3||e.length===5||e.length>8)throw new Error("Invalid hex color: "+t);(e.length===3||e.length===4)&&(e=Array.prototype.concat.apply([],e.map(function(r){return[r,r]}))),e.length===6&&e.push("F","F");let n=parseInt(e.join(""),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:"#"+e.slice(0,6).join("")}}Ue.getOptions=function(e){e||(e={}),e.color||(e.color={});let n=typeof e.margin>"u"||e.margin===null||e.margin<0?4:e.margin,r=e.width&&e.width>=21?e.width:void 0,s=e.scale||4;return{width:r,scale:r?4:s,margin:n,color:{dark:Qa(e.color.dark||"#000000ff"),light:Qa(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};Ue.getScale=function(e,n){return n.width&&n.width>=e+n.margin*2?n.width/(e+n.margin*2):n.scale};Ue.getImageWidth=function(e,n){let r=Ue.getScale(e,n);return Math.floor((e+n.margin*2)*r)};Ue.qrToImageData=function(e,n,r){let s=n.modules.size,i=n.modules.data,o=Ue.getScale(s,r),a=Math.floor((s+r.margin*2)*o),l=r.margin*o,c=[r.color.light,r.color.dark];for(let u=0;u<a;u++)for(let d=0;d<a;d++){let f=(u*a+d)*4,h=r.color.light;if(u>=l&&d>=l&&u<a-l&&d<a-l){let p=Math.floor((u-l)/o),g=Math.floor((d-l)/o);h=c[i[p*s+g]?1:0]}e[f++]=h.r,e[f++]=h.g,e[f++]=h.b,e[f]=h.a}}});var el=m(ae=>{var Ah=require("fs"),Eh=Za().PNG,ms=jt();ae.render=function(e,n){let r=ms.getOptions(n),s=r.rendererOpts,i=ms.getImageWidth(e.modules.size,r);s.width=i,s.height=i;let o=new Eh(s);return ms.qrToImageData(o.data,e,r),o};ae.renderToDataURL=function(e,n,r){typeof r>"u"&&(r=n,n=void 0),ae.renderToBuffer(e,n,function(s,i){s&&r(s);let o="data:image/png;base64,";o+=i.toString("base64"),r(null,o)})};ae.renderToBuffer=function(e,n,r){typeof r>"u"&&(r=n,n=void 0);let s=ae.render(e,n),i=[];s.on("error",r),s.on("data",function(o){i.push(o)}),s.on("end",function(){r(null,Buffer.concat(i))}),s.pack()};ae.renderToFile=function(e,n,r,s){typeof s>"u"&&(s=r,r=void 0);let i=!1,o=(...l)=>{i||(i=!0,s.apply(null,l))},a=Ah.createWriteStream(e);a.on("error",o),a.on("close",o),ae.renderToFileStream(a,n,r)};ae.renderToFileStream=function(e,n,r){ae.render(n,r).pack().pipe(e)}});var tl=m(Mn=>{var kh=jt(),Ch={WW:" ",WB:"\u2584",BB:"\u2588",BW:"\u2580"},Ph={BB:" ",BW:"\u2584",WW:"\u2588",WB:"\u2580"};function Rh(t,e,n){return t&&e?n.BB:t&&!e?n.BW:!t&&e?n.WB:n.WW}Mn.render=function(t,e,n){let r=kh.getOptions(e),s=Ch;(r.color.dark.hex==="#ffffff"||r.color.light.hex==="#000000")&&(s=Ph);let i=t.modules.size,o=t.modules.data,a="",l=Array(i+r.margin*2+1).join(s.WW);l=Array(r.margin/2+1).join(l+`
14
+ `);let c=Array(r.margin+1).join(s.WW);a+=l;for(let u=0;u<i;u+=2){a+=c;for(let d=0;d<i;d++){let f=o[u*i+d],h=o[(u+1)*i+d];a+=Rh(f,h,s)}a+=c+`
15
15
  `}return a+=l.slice(0,-1),typeof n=="function"&&n(null,a),a};Mn.renderToFile=function(e,n,r,s){typeof s>"u"&&(s=r,r=void 0);let i=require("fs"),o=Mn.render(n,r);i.writeFile(e,o,s)}});var rl=m(nl=>{nl.render=function(t,e,n){let r=t.modules.size,s=t.modules.data,i="\x1B[40m \x1B[0m",o="\x1B[47m \x1B[0m",a="",l=Array(r+3).join(o),c=Array(2).join(o);a+=l+`
16
16
  `;for(let u=0;u<r;++u){a+=o;for(let d=0;d<r;d++)a+=s[u*r+d]?i:o;a+=c+`
17
17
  `}return a+=l+`
18
- `,typeof n=="function"&&n(null,a),a}});var al=m(ol=>{var Lh="\x1B[47m",Mh="\x1B[40m",gs="\x1B[37m",ms="\x1B[30m",qe="\x1B[0m",Nh=Lh+ms,Oh=Mh+gs,Bh=function(t,e,n){return{"00":qe+" "+t,"01":qe+e+"\u2584"+t,"02":qe+n+"\u2584"+t,10:qe+e+"\u2580"+t,11:" ",12:"\u2584",20:qe+n+"\u2580"+t,21:"\u2580",22:"\u2588"}},sl=function(t,e,n,r){let s=e+1;if(n>=s||r>=s||r<-1||n<-1)return"0";if(n>=e||r>=e||r<0||n<0)return"1";let i=r*e+n;return t[i]?"2":"1"},il=function(t,e,n,r){return sl(t,e,n,r)+sl(t,e,n,r+1)};ol.render=function(t,e,n){let r=t.modules.size,s=t.modules.data,i=!!(e&&e.inverse),o=e&&e.inverse?Oh:Nh,c=Bh(o,i?ms:gs,i?gs:ms),u=qe+`
19
- `+o,d=o;for(let f=-1;f<r+1;f+=2){for(let h=-1;h<r;h++)d+=c[il(s,r,h,f)];d+=c[il(s,r,r,f)]+u}return d+=qe,typeof n=="function"&&n(null,d),d}});var cl=m(ll=>{var Dh=rl(),Hh=al();ll.render=function(t,e,n){return e&&e.small?Hh.render(t,e,n):Dh.render(t,e,n)}});var Ss=m(dl=>{var Fh=jt();function ul(t,e){let n=t.a/255,r=e+'="'+t.hex+'"';return n<1?r+" "+e+'-opacity="'+n.toFixed(2).slice(1)+'"':r}function ys(t,e,n){let r=t+e;return typeof n<"u"&&(r+=" "+n),r}function Uh(t,e,n){let r="",s=0,i=!1,o=0;for(let a=0;a<t.length;a++){let l=Math.floor(a%e),c=Math.floor(a/e);!l&&!i&&(i=!0),t[a]?(o++,a>0&&l>0&&t[a-1]||(r+=i?ys("M",l+n,.5+c+n):ys("m",s,0),s=0,i=!1),l+1<e&&t[a+1]||(r+=ys("h",o),o=0)):s++}return r}dl.render=function(e,n,r){let s=Fh.getOptions(n),i=e.modules.size,o=e.modules.data,a=i+s.margin*2,l=s.color.light.a?"<path "+ul(s.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",c="<path "+ul(s.color.dark,"stroke")+' d="'+Uh(o,i,s.margin)+'"/>',u='viewBox="0 0 '+a+" "+a+'"',f='<svg xmlns="http://www.w3.org/2000/svg" '+(s.width?'width="'+s.width+'" height="'+s.width+'" ':"")+u+' shape-rendering="crispEdges">'+l+c+`</svg>
20
- `;return typeof r=="function"&&r(null,f),f}});var fl=m(Nn=>{var qh=Ss();Nn.render=qh.render;Nn.renderToFile=function(e,n,r,s){typeof s>"u"&&(s=r,r=void 0);let i=require("fs"),a='<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'+Nn.render(n,r);i.writeFile(e,a,s)}});var hl=m(On=>{var _s=jt();function Wh(t,e,n){t.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=n,e.width=n,e.style.height=n+"px",e.style.width=n+"px"}function jh(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}On.render=function(e,n,r){let s=r,i=n;typeof s>"u"&&(!n||!n.getContext)&&(s=n,n=void 0),n||(i=jh()),s=_s.getOptions(s);let o=_s.getImageWidth(e.modules.size,s),a=i.getContext("2d"),l=a.createImageData(o,o);return _s.qrToImageData(l.data,e,s),Wh(a,i,o),a.putImageData(l,0,0),i};On.renderToDataURL=function(e,n,r){let s=r;typeof s>"u"&&(!n||!n.getContext)&&(s=n,n=void 0),s||(s={});let i=On.render(e,n,s),o=s.type||"image/png",a=s.rendererOpts||{};return i.toDataURL(o,a.quality)}});var gl=m(Gt=>{var Gh=Mr(),vs=Zr(),pl=hl(),$h=Ss();function ws(t,e,n,r,s){let i=[].slice.call(arguments,1),o=i.length,a=typeof i[o-1]=="function";if(!a&&!Gh())throw new Error("Callback required as last argument");if(a){if(o<2)throw new Error("Too few arguments provided");o===2?(s=n,n=e,e=r=void 0):o===3&&(e.getContext&&typeof s>"u"?(s=r,r=void 0):(s=r,r=n,n=e,e=void 0))}else{if(o<1)throw new Error("Too few arguments provided");return o===1?(n=e,e=r=void 0):o===2&&!e.getContext&&(r=n,n=e,e=void 0),new Promise(function(l,c){try{let u=vs.create(n,r);l(t(u,e,r))}catch(u){c(u)}})}try{let l=vs.create(n,r);s(null,t(l,e,r))}catch(l){s(l)}}Gt.create=vs.create;Gt.toCanvas=ws.bind(null,pl.render);Gt.toDataURL=ws.bind(null,pl.renderToDataURL);Gt.toString=ws.bind(null,function(t,e,n){return $h.render(t,n)})});var _l=m(Ie=>{var ml=Mr(),bs=Zr(),zh=el(),yl=tl(),Vh=cl(),Sl=fl();function $t(t,e,n){if(typeof t>"u")throw new Error("String required as first argument");if(typeof n>"u"&&(n=e,e={}),typeof n!="function")if(ml())e=n||{},n=null;else throw new Error("Callback required as last argument");return{opts:e,cb:n}}function Yh(t){return t.slice((t.lastIndexOf(".")-1>>>0)+2).toLowerCase()}function Bn(t){switch(t){case"svg":return Sl;case"txt":case"utf8":return yl;case"png":case"image/png":default:return zh}}function Jh(t){switch(t){case"svg":return Sl;case"terminal":return Vh;case"utf8":default:return yl}}function zt(t,e,n){if(!n.cb)return new Promise(function(r,s){try{let i=bs.create(e,n.opts);return t(i,n.opts,function(o,a){return o?s(o):r(a)})}catch(i){s(i)}});try{let r=bs.create(e,n.opts);return t(r,n.opts,n.cb)}catch(r){n.cb(r)}}Ie.create=bs.create;Ie.toCanvas=gl().toCanvas;Ie.toString=function(e,n,r){let s=$t(e,n,r),i=s.opts?s.opts.type:void 0,o=Jh(i);return zt(o.render,e,s)};Ie.toDataURL=function(e,n,r){let s=$t(e,n,r),i=Bn(s.opts.type);return zt(i.renderToDataURL,e,s)};Ie.toBuffer=function(e,n,r){let s=$t(e,n,r),i=Bn(s.opts.type);return zt(i.renderToBuffer,e,s)};Ie.toFile=function(e,n,r,s){if(typeof e!="string"||!(typeof n=="string"||typeof n=="object"))throw new Error("Invalid argument");if(arguments.length<3&&!ml())throw new Error("Too few arguments provided");let i=$t(n,r,s),o=i.opts.type||Yh(e),l=Bn(o).renderToFile.bind(null,e);return zt(l,n,i)};Ie.toFileStream=function(e,n,r){if(arguments.length<2)throw new Error("Too few arguments provided");let s=$t(n,r,e.emit.bind(e,"error")),o=Bn("png").renderToFileStream.bind(null,e);zt(o,n,s)}});var wl=m((yy,vl)=>{vl.exports=_l()});var Zc=require("http");var Rd=Ve(no(),1),Pd=Ve(wr(),1),Ld=Ve(xr(),1),Md=Ve(wn(),1),Lr=Ve(fo(),1);var Ge=require("fs/promises"),cr=require("path"),Qc=require("os"),eu=Ve(wl(),1);var dt=require("child_process"),Nl=require("fs"),q=require("path"),Kt=require("os");var jn=require("fs");var bl=require("os"),z=require("path"),Vt=(0,z.join)((0,bl.homedir)(),".vibelet"),Dn=(0,z.join)(Vt,"logs"),Is=(0,z.join)(Vt,"data"),Kh=(0,z.join)(Vt,"runtime"),Sy=(0,z.join)(Kh,"current"),Il=(0,z.join)(Vt,"identity.json"),xl=(0,z.join)(Vt,"pairings.json"),El=(0,z.join)(Is,"push-subscriptions.json"),Hn=(0,z.join)(Is,"sessions.json"),ct=(0,z.join)(Is,"audit.jsonl"),Fn=(0,z.join)(Dn,"daemon.stdout.log"),Un=(0,z.join)(Dn,"daemon.stderr.log");var qn={stdout:!1,stderr:!1};function Tl(t){if(!t||typeof t!="object")return!1;let e=typeof t.code=="string"?t.code:"";return e==="EIO"||e==="EPIPE"}function Xh(t){return!t.destroyed&&t.writable!==!1}function Al(t,e){if(qn[t])return!1;let n=t==="stderr"?process.stderr:process.stdout;if(!Xh(n))return qn[t]=!0,!1;try{return n.write(e,r=>{Tl(r)&&(qn[t]=!0)}),!0}catch(r){return Tl(r)&&(qn[t]=!0),!1}}function Yt(t){return Al("stdout",t)}function Wn(t){return Al("stderr",t)}var kl={debug:10,info:20,warn:30,error:40},Zh=process.env.VIBE_LOG_LEVEL||"info";function Qh(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}var Rl=!Qh();if(Rl)try{(0,jn.mkdirSync)(Dn,{recursive:!0})}catch{}function Cl(t,e,n){if(kl[t]<kl[Zh])return;let r={level:t,ts:new Date().toISOString(),msg:n,...e},s=JSON.stringify(r);if(t==="error"||t==="warn"?Wn(s+`
18
+ `,typeof n=="function"&&n(null,a),a}});var al=m(ol=>{var Lh="\x1B[47m",Mh="\x1B[40m",ys="\x1B[37m",Ss="\x1B[30m",qe="\x1B[0m",Nh=Lh+Ss,Oh=Mh+ys,Bh=function(t,e,n){return{"00":qe+" "+t,"01":qe+e+"\u2584"+t,"02":qe+n+"\u2584"+t,10:qe+e+"\u2580"+t,11:" ",12:"\u2584",20:qe+n+"\u2580"+t,21:"\u2580",22:"\u2588"}},sl=function(t,e,n,r){let s=e+1;if(n>=s||r>=s||r<-1||n<-1)return"0";if(n>=e||r>=e||r<0||n<0)return"1";let i=r*e+n;return t[i]?"2":"1"},il=function(t,e,n,r){return sl(t,e,n,r)+sl(t,e,n,r+1)};ol.render=function(t,e,n){let r=t.modules.size,s=t.modules.data,i=!!(e&&e.inverse),o=e&&e.inverse?Oh:Nh,c=Bh(o,i?Ss:ys,i?ys:Ss),u=qe+`
19
+ `+o,d=o;for(let f=-1;f<r+1;f+=2){for(let h=-1;h<r;h++)d+=c[il(s,r,h,f)];d+=c[il(s,r,r,f)]+u}return d+=qe,typeof n=="function"&&n(null,d),d}});var cl=m(ll=>{var Dh=rl(),Hh=al();ll.render=function(t,e,n){return e&&e.small?Hh.render(t,e,n):Dh.render(t,e,n)}});var vs=m(dl=>{var Fh=jt();function ul(t,e){let n=t.a/255,r=e+'="'+t.hex+'"';return n<1?r+" "+e+'-opacity="'+n.toFixed(2).slice(1)+'"':r}function _s(t,e,n){let r=t+e;return typeof n<"u"&&(r+=" "+n),r}function Uh(t,e,n){let r="",s=0,i=!1,o=0;for(let a=0;a<t.length;a++){let l=Math.floor(a%e),c=Math.floor(a/e);!l&&!i&&(i=!0),t[a]?(o++,a>0&&l>0&&t[a-1]||(r+=i?_s("M",l+n,.5+c+n):_s("m",s,0),s=0,i=!1),l+1<e&&t[a+1]||(r+=_s("h",o),o=0)):s++}return r}dl.render=function(e,n,r){let s=Fh.getOptions(n),i=e.modules.size,o=e.modules.data,a=i+s.margin*2,l=s.color.light.a?"<path "+ul(s.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",c="<path "+ul(s.color.dark,"stroke")+' d="'+Uh(o,i,s.margin)+'"/>',u='viewBox="0 0 '+a+" "+a+'"',f='<svg xmlns="http://www.w3.org/2000/svg" '+(s.width?'width="'+s.width+'" height="'+s.width+'" ':"")+u+' shape-rendering="crispEdges">'+l+c+`</svg>
20
+ `;return typeof r=="function"&&r(null,f),f}});var fl=m(Nn=>{var qh=vs();Nn.render=qh.render;Nn.renderToFile=function(e,n,r,s){typeof s>"u"&&(s=r,r=void 0);let i=require("fs"),a='<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'+Nn.render(n,r);i.writeFile(e,a,s)}});var hl=m(On=>{var ws=jt();function Wh(t,e,n){t.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=n,e.width=n,e.style.height=n+"px",e.style.width=n+"px"}function jh(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}On.render=function(e,n,r){let s=r,i=n;typeof s>"u"&&(!n||!n.getContext)&&(s=n,n=void 0),n||(i=jh()),s=ws.getOptions(s);let o=ws.getImageWidth(e.modules.size,s),a=i.getContext("2d"),l=a.createImageData(o,o);return ws.qrToImageData(l.data,e,s),Wh(a,i,o),a.putImageData(l,0,0),i};On.renderToDataURL=function(e,n,r){let s=r;typeof s>"u"&&(!n||!n.getContext)&&(s=n,n=void 0),s||(s={});let i=On.render(e,n,s),o=s.type||"image/png",a=s.rendererOpts||{};return i.toDataURL(o,a.quality)}});var gl=m(Gt=>{var Gh=Or(),bs=es(),pl=hl(),$h=vs();function Is(t,e,n,r,s){let i=[].slice.call(arguments,1),o=i.length,a=typeof i[o-1]=="function";if(!a&&!Gh())throw new Error("Callback required as last argument");if(a){if(o<2)throw new Error("Too few arguments provided");o===2?(s=n,n=e,e=r=void 0):o===3&&(e.getContext&&typeof s>"u"?(s=r,r=void 0):(s=r,r=n,n=e,e=void 0))}else{if(o<1)throw new Error("Too few arguments provided");return o===1?(n=e,e=r=void 0):o===2&&!e.getContext&&(r=n,n=e,e=void 0),new Promise(function(l,c){try{let u=bs.create(n,r);l(t(u,e,r))}catch(u){c(u)}})}try{let l=bs.create(n,r);s(null,t(l,e,r))}catch(l){s(l)}}Gt.create=bs.create;Gt.toCanvas=Is.bind(null,pl.render);Gt.toDataURL=Is.bind(null,pl.renderToDataURL);Gt.toString=Is.bind(null,function(t,e,n){return $h.render(t,n)})});var _l=m(xe=>{var ml=Or(),xs=es(),zh=el(),yl=tl(),Vh=cl(),Sl=fl();function $t(t,e,n){if(typeof t>"u")throw new Error("String required as first argument");if(typeof n>"u"&&(n=e,e={}),typeof n!="function")if(ml())e=n||{},n=null;else throw new Error("Callback required as last argument");return{opts:e,cb:n}}function Yh(t){return t.slice((t.lastIndexOf(".")-1>>>0)+2).toLowerCase()}function Bn(t){switch(t){case"svg":return Sl;case"txt":case"utf8":return yl;case"png":case"image/png":default:return zh}}function Jh(t){switch(t){case"svg":return Sl;case"terminal":return Vh;case"utf8":default:return yl}}function zt(t,e,n){if(!n.cb)return new Promise(function(r,s){try{let i=xs.create(e,n.opts);return t(i,n.opts,function(o,a){return o?s(o):r(a)})}catch(i){s(i)}});try{let r=xs.create(e,n.opts);return t(r,n.opts,n.cb)}catch(r){n.cb(r)}}xe.create=xs.create;xe.toCanvas=gl().toCanvas;xe.toString=function(e,n,r){let s=$t(e,n,r),i=s.opts?s.opts.type:void 0,o=Jh(i);return zt(o.render,e,s)};xe.toDataURL=function(e,n,r){let s=$t(e,n,r),i=Bn(s.opts.type);return zt(i.renderToDataURL,e,s)};xe.toBuffer=function(e,n,r){let s=$t(e,n,r),i=Bn(s.opts.type);return zt(i.renderToBuffer,e,s)};xe.toFile=function(e,n,r,s){if(typeof e!="string"||!(typeof n=="string"||typeof n=="object"))throw new Error("Invalid argument");if(arguments.length<3&&!ml())throw new Error("Too few arguments provided");let i=$t(n,r,s),o=i.opts.type||Yh(e),l=Bn(o).renderToFile.bind(null,e);return zt(l,n,i)};xe.toFileStream=function(e,n,r){if(arguments.length<2)throw new Error("Too few arguments provided");let s=$t(n,r,e.emit.bind(e,"error")),o=Bn("png").renderToFileStream.bind(null,e);zt(o,n,s)}});var wl=m((yy,vl)=>{vl.exports=_l()});var Zc=require("http");var Pd=Ve(no(),1),Rd=Ve(Ir(),1),Ld=Ve(Ar(),1),Md=Ve(wn(),1),Nr=Ve(fo(),1);var Ge=require("fs/promises"),dr=require("path"),Qc=require("os"),eu=Ve(wl(),1);var dt=require("child_process"),Nl=require("fs"),q=require("path"),Kt=require("os");var jn=require("fs");var bl=require("os"),z=require("path"),Vt=(0,z.join)((0,bl.homedir)(),".vibelet"),Dn=(0,z.join)(Vt,"logs"),Ts=(0,z.join)(Vt,"data"),Kh=(0,z.join)(Vt,"runtime"),Sy=(0,z.join)(Kh,"current"),Il=(0,z.join)(Vt,"identity.json"),xl=(0,z.join)(Vt,"pairings.json"),Tl=(0,z.join)(Ts,"push-subscriptions.json"),Hn=(0,z.join)(Ts,"sessions.json"),ct=(0,z.join)(Ts,"audit.jsonl"),Fn=(0,z.join)(Dn,"daemon.stdout.log"),Un=(0,z.join)(Dn,"daemon.stderr.log");var qn={stdout:!1,stderr:!1};function Al(t){if(!t||typeof t!="object")return!1;let e=typeof t.code=="string"?t.code:"";return e==="EIO"||e==="EPIPE"}function Xh(t){return!t.destroyed&&t.writable!==!1}function El(t,e){if(qn[t])return!1;let n=t==="stderr"?process.stderr:process.stdout;if(!Xh(n))return qn[t]=!0,!1;try{return n.write(e,r=>{Al(r)&&(qn[t]=!0)}),!0}catch(r){return Al(r)&&(qn[t]=!0),!1}}function Yt(t){return El("stdout",t)}function Wn(t){return El("stderr",t)}var kl={debug:10,info:20,warn:30,error:40},Zh=process.env.VIBE_LOG_LEVEL||"info";function Qh(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}var Pl=!Qh();if(Pl)try{(0,jn.mkdirSync)(Dn,{recursive:!0})}catch{}function Cl(t,e,n){if(kl[t]<kl[Zh])return;let r={level:t,ts:new Date().toISOString(),msg:n,...e},s=JSON.stringify(r);if(t==="error"||t==="warn"?Wn(s+`
21
21
  `):Yt(s+`
22
- `),Rl){let i=t==="error"||t==="warn"?Un:Fn;try{(0,jn.appendFileSync)(i,s+`
23
- `)}catch{}}}function Pl(t={}){function e(n,r,s){typeof r=="string"?Cl(n,t,r):Cl(n,{...t,...r},s)}return{debug:(n,r)=>e("debug",n,r),info:(n,r)=>e("info",n,r),warn:(n,r)=>e("warn",n,r),error:(n,r)=>e("error",n,r),child:n=>Pl({...t,...n})}}var L=Pl({module:"daemon"});var ep=["fnm_multishells"],tp=6e4,np=L.child({module:"config"});function xe(t){return ep.some(e=>t.includes(e))}function Es(){return[process.env.SHELL,"/bin/zsh","/bin/bash","/bin/sh"].filter(t=>!!t).filter((t,e,n)=>n.indexOf(t)===e)}var ut=null;function Ol(){if(ut&&!xe(ut.PATH??""))return ut;for(let t of Es())try{let e=(0,dt.execFileSync)(t,["-ilc","env"],{timeout:5e3,encoding:"utf-8",stdio:["pipe","pipe","pipe"]}),n={};for(let r of e.split(`
24
- `)){let s=r.indexOf("=");s>0&&(n[r.slice(0,s)]=r.slice(s+1))}return xe(n.PATH??"")?ut=null:ut=n,n}catch{}return ut={},{}}function rp(t=Ol()){let e=(0,Kt.homedir)(),n=t.PNPM_HOME||process.env.PNPM_HOME||(0,q.join)(e,"Library","pnpm"),r=t.PATH||process.env.PATH||"",s=["/usr/local/bin","/opt/homebrew/bin","/usr/bin","/bin",(0,q.join)(e,".npm-global","bin"),(0,q.join)(e,".local","bin"),(0,q.join)(e,".claude","bin"),n],i=r.split(q.delimiter).filter(Boolean),o=new Set(i);for(let a of s)o.has(a)||(i.push(a),o.add(a));return i.join(q.delimiter)}function xs(t,e){let n=process.env[t];if(!n)return e;let r=Number(n);return Number.isFinite(r)&&r>0?Math.floor(r):e}function Ll(t,e){let n=process.env[t];if(n==null||n==="")return e;let r=Number(n);return Number.isFinite(r)&&r>=0?Math.floor(r):e}function Gn(){let t=Ol(),e={};for(let[n,r]of Object.entries(process.env))typeof r=="string"&&(e[n]=r);for(let[n,r]of Object.entries(t))typeof r=="string"&&(e[n]=r);return e.PATH=rp(t),e.HOME||(e.HOME=(0,Kt.homedir)()),delete e.CLAUDE_CODE_ENTRYPOINT,delete e.CLAUDECODE,e}function Jt(t,e=3e3){try{return(0,dt.execFileSync)(t,["--version"],{timeout:e,stdio:"pipe",encoding:"utf-8",env:Gn()}).trim()||null}catch{return null}}function sp(t){for(let e of Es())try{let n=(0,dt.execFileSync)(e,["-ilc",`command -v ${t}`],{timeout:5e3,stdio:["pipe","pipe","pipe"],encoding:"utf-8"}).trim();if(n)return n}catch{}}function ip(){let t=(0,Kt.homedir)();return[(0,q.join)(t,".local","bin","claude"),(0,q.join)(t,".claude","bin","claude"),"/usr/local/bin/claude","/opt/homebrew/bin/claude",(0,q.join)(t,".npm-global","bin","claude")]}function op(){for(let t of ip())if(Jt(t))return t;try{let t=(0,dt.execFileSync)("/usr/bin/which",["claude"],{timeout:3e3,stdio:"pipe",encoding:"utf-8",env:Gn()}).trim();if(t&&!t.includes("cmux")&&Jt(t))return t}catch{}}function ap(){let t=(0,Kt.homedir)(),e=[process.env.PNPM_HOME,(0,q.join)(t,"Library","pnpm")].filter(n=>!!n);return["/usr/local/bin/codex","/opt/homebrew/bin/codex",(0,q.join)(t,".npm-global","bin","codex"),(0,q.join)(t,".local","bin","codex"),...e.map(n=>(0,q.join)(n,"codex"))]}function lp(){let t;for(let n of ap())if(Jt(n)){if(!xe(n))return n;t=n}try{let n=(0,dt.execFileSync)("/usr/bin/which",["codex"],{timeout:3e3,stdio:"pipe",encoding:"utf-8",env:Gn()}).trim();if(n&&Jt(n)){if(!xe(n))return n;t=t??n}}catch{}let e=sp("codex");if(e&&Jt(e)){if(!xe(e))return e;t=t??e}return t}function Bl(t,e){let n=null,r=0;return()=>{let s=e==="claude"?"CLAUDE_PATH":"CODEX_PATH";if(process.env[s])return process.env[s];let i=Date.now();return(!n||i-r>tp||!(0,Nl.existsSync)(n)||xe(n))&&(n=t()??e,r=i,np.info({name:e,path:n,transient:xe(n)},"binary resolved")),n}}var cp=Bl(op,"claude"),up=Bl(lp,"codex");function dp(){let t={},e=process.argv.slice(2);for(let n=0;n<e.length;n++){let r=e[n];if(r.startsWith("--")&&n+1<e.length){let s=r.slice(2);t[s]=e[++n]}}return t}var Ml=dp();function fp(t,e){return{command:Es()[0]??"/bin/zsh",args:["-lc",`command -v ${t} >/dev/null 2>&1 && exec ${t} "$@"`,"--",...e]}}var _={port:Number(process.env.VIBE_PORT)||9876,legacyToken:process.env.VIBE_TOKEN||"",canonicalHost:Ml.host||process.env.VIBELET_CANONICAL_HOST||process.env.VIBELET_HOST||"",fallbackHosts:Ml["fallback-hosts"]||process.env.VIBELET_FALLBACK_HOSTS||"",relayUrl:process.env.VIBELET_RELAY_URL||"",idleTimeoutMs:Ll("VIBE_IDLE_TIMEOUT_MS",1800*1e3),turnStallTimeoutMs:Ll("VIBE_TURN_STALL_TIMEOUT_MS",300*1e3),auditMaxBytes:xs("VIBE_AUDIT_MAX_BYTES",8*1024*1024),daemonLogMaxBytes:xs("VIBE_DAEMON_LOG_MAX_BYTES",16*1024*1024),storageHousekeepingIntervalMs:xs("VIBE_STORAGE_HOUSEKEEPING_INTERVAL_MS",300*1e3),get claudePath(){return cp()},get codexPath(){return up()},isTransientPath:xe,execViaLoginShell:fp,buildSanitizedEnv:Gn};var Xs=require("crypto"),Lc=require("fs/promises");var $l=require("child_process"),zl=require("fs");var $n=require("fs"),Fl=require("path");var j=require("fs");function hp(t,e,n,r){let s=Math.max(0,e-n),i=Math.floor(e*.75);return Math.max(0,Math.min(t,s,r??i))}function Xt(t,e){if(!(0,j.existsSync)(t))return{path:t,existed:!1,trimmed:!1,beforeBytes:0,afterBytes:0,reclaimedBytes:0};let r=(0,j.statSync)(t).size,s=Math.max(0,e.incomingBytes??0);if(e.maxBytes<=0||r+s<=e.maxBytes)return{path:t,existed:!0,trimmed:!1,beforeBytes:r,afterBytes:r,reclaimedBytes:0};let i=hp(r,e.maxBytes,s,e.retainBytes),o=(0,j.openSync)(t,"r+");try{let a=Buffer.alloc(0);if(i>0){let l=Buffer.alloc(i);(0,j.readSync)(o,l,0,i,r-i);let c=0;if(r>i){let u=l.indexOf(10);u>=0&&u+1<l.length&&(c=u+1)}a=l.subarray(c)}return(0,j.ftruncateSync)(o,0),a.length>0&&(0,j.writeSync)(o,a,0,a.length,0),{path:t,existed:!0,trimmed:!0,beforeBytes:r,afterBytes:a.length,reclaimedBytes:r-a.length}}finally{(0,j.closeSync)(o)}}function Dl(t){let e=[Xt(t.auditPath,{maxBytes:t.auditMaxBytes}),Xt(t.stdoutLogPath,{maxBytes:t.logMaxBytes}),Xt(t.stderrLogPath,{maxBytes:t.logMaxBytes})];return{files:e,trimmedFiles:e.filter(n=>n.trimmed).length,reclaimedBytes:e.reduce((n,r)=>n+r.reclaimedBytes,0)}}var Hl=!1,pp=new Set(["ts","event","source","appEvent","level"]);function gp(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}function mp(t={}){let e={};for(let[n,r]of Object.entries(t))pp.has(n)||(e[n]=r);return e}function yp(t,e,n={},r){return{ts:r??new Date().toISOString(),event:"app.log",source:"app",appEvent:t,level:e,...mp(n)}}function Sp(){Hl||((0,$n.mkdirSync)((0,Fl.dirname)(ct),{recursive:!0}),Hl=!0)}var Ts=class{emit(e,n={}){this.write({ts:new Date().toISOString(),event:e,...n})}emitApp(e,n,r={},s){this.write(yp(e,n,r,s))}write(e){if(!gp()){Sp();try{let n=JSON.stringify(e)+`
25
- `;Xt(ct,{maxBytes:_.auditMaxBytes,incomingBytes:Buffer.byteLength(n)}),(0,$n.appendFileSync)(ct,n)}catch{}}}},v=new Ts;var Ee=require("fs"),Ul=require("os"),Zt=require("path"),ql=require("crypto"),As="claude-hook:",Qt="x-vibelet-claude-hook-secret",en={continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"PreToolUse"}};function _p(t,e){return`#!/usr/bin/env node
22
+ `),Pl){let i=t==="error"||t==="warn"?Un:Fn;try{(0,jn.appendFileSync)(i,s+`
23
+ `)}catch{}}}function Rl(t={}){function e(n,r,s){typeof r=="string"?Cl(n,t,r):Cl(n,{...t,...r},s)}return{debug:(n,r)=>e("debug",n,r),info:(n,r)=>e("info",n,r),warn:(n,r)=>e("warn",n,r),error:(n,r)=>e("error",n,r),child:n=>Rl({...t,...n})}}var L=Rl({module:"daemon"});var ep=["fnm_multishells"],tp=6e4,np=L.child({module:"config"});function Te(t){return ep.some(e=>t.includes(e))}function Es(){return[process.env.SHELL,"/bin/zsh","/bin/bash","/bin/sh"].filter(t=>!!t).filter((t,e,n)=>n.indexOf(t)===e)}var ut=null;function Ol(){if(ut&&!Te(ut.PATH??""))return ut;for(let t of Es())try{let e=(0,dt.execFileSync)(t,["-ilc","env"],{timeout:5e3,encoding:"utf-8",stdio:["pipe","pipe","pipe"]}),n={};for(let r of e.split(`
24
+ `)){let s=r.indexOf("=");s>0&&(n[r.slice(0,s)]=r.slice(s+1))}return Te(n.PATH??"")?ut=null:ut=n,n}catch{}return ut={},{}}function rp(t=Ol()){let e=(0,Kt.homedir)(),n=t.PNPM_HOME||process.env.PNPM_HOME||(0,q.join)(e,"Library","pnpm"),r=t.PATH||process.env.PATH||"",s=["/usr/local/bin","/opt/homebrew/bin","/usr/bin","/bin",(0,q.join)(e,".npm-global","bin"),(0,q.join)(e,".local","bin"),(0,q.join)(e,".claude","bin"),n],i=r.split(q.delimiter).filter(Boolean),o=new Set(i);for(let a of s)o.has(a)||(i.push(a),o.add(a));return i.join(q.delimiter)}function As(t,e){let n=process.env[t];if(!n)return e;let r=Number(n);return Number.isFinite(r)&&r>0?Math.floor(r):e}function Ll(t,e){let n=process.env[t];if(n==null||n==="")return e;let r=Number(n);return Number.isFinite(r)&&r>=0?Math.floor(r):e}function Gn(){let t=Ol(),e={};for(let[n,r]of Object.entries(process.env))typeof r=="string"&&(e[n]=r);for(let[n,r]of Object.entries(t))typeof r=="string"&&(e[n]=r);return e.PATH=rp(t),e.HOME||(e.HOME=(0,Kt.homedir)()),delete e.CLAUDE_CODE_ENTRYPOINT,delete e.CLAUDECODE,e}function Jt(t,e=3e3){try{return(0,dt.execFileSync)(t,["--version"],{timeout:e,stdio:"pipe",encoding:"utf-8",env:Gn()}).trim()||null}catch{return null}}function sp(t){for(let e of Es())try{let n=(0,dt.execFileSync)(e,["-ilc",`command -v ${t}`],{timeout:5e3,stdio:["pipe","pipe","pipe"],encoding:"utf-8"}).trim();if(n)return n}catch{}}function ip(){let t=(0,Kt.homedir)();return[(0,q.join)(t,".local","bin","claude"),(0,q.join)(t,".claude","bin","claude"),"/usr/local/bin/claude","/opt/homebrew/bin/claude",(0,q.join)(t,".npm-global","bin","claude")]}function op(){for(let t of ip())if(Jt(t))return t;try{let t=(0,dt.execFileSync)("/usr/bin/which",["claude"],{timeout:3e3,stdio:"pipe",encoding:"utf-8",env:Gn()}).trim();if(t&&!t.includes("cmux")&&Jt(t))return t}catch{}}function ap(){let t=(0,Kt.homedir)(),e=[process.env.PNPM_HOME,(0,q.join)(t,"Library","pnpm")].filter(n=>!!n);return["/usr/local/bin/codex","/opt/homebrew/bin/codex",(0,q.join)(t,".npm-global","bin","codex"),(0,q.join)(t,".local","bin","codex"),...e.map(n=>(0,q.join)(n,"codex"))]}function lp(){let t;for(let n of ap())if(Jt(n)){if(!Te(n))return n;t=n}try{let n=(0,dt.execFileSync)("/usr/bin/which",["codex"],{timeout:3e3,stdio:"pipe",encoding:"utf-8",env:Gn()}).trim();if(n&&Jt(n)){if(!Te(n))return n;t=t??n}}catch{}let e=sp("codex");if(e&&Jt(e)){if(!Te(e))return e;t=t??e}return t}function Bl(t,e){let n=null,r=0;return()=>{let s=e==="claude"?"CLAUDE_PATH":"CODEX_PATH";if(process.env[s])return process.env[s];let i=Date.now();return(!n||i-r>tp||!(0,Nl.existsSync)(n)||Te(n))&&(n=t()??e,r=i,np.info({name:e,path:n,transient:Te(n)},"binary resolved")),n}}var cp=Bl(op,"claude"),up=Bl(lp,"codex");function dp(){let t={},e=process.argv.slice(2);for(let n=0;n<e.length;n++){let r=e[n];if(r.startsWith("--")&&n+1<e.length){let s=r.slice(2);t[s]=e[++n]}}return t}var Ml=dp();function fp(t,e){return{command:Es()[0]??"/bin/zsh",args:["-lc",`command -v ${t} >/dev/null 2>&1 && exec ${t} "$@"`,"--",...e]}}var _={port:Number(process.env.VIBE_PORT)||9876,legacyToken:process.env.VIBE_TOKEN||"",canonicalHost:Ml.host||process.env.VIBELET_CANONICAL_HOST||process.env.VIBELET_HOST||"",fallbackHosts:Ml["fallback-hosts"]||process.env.VIBELET_FALLBACK_HOSTS||"",relayUrl:process.env.VIBELET_RELAY_URL||"",idleTimeoutMs:Ll("VIBE_IDLE_TIMEOUT_MS",1800*1e3),turnStallTimeoutMs:Ll("VIBE_TURN_STALL_TIMEOUT_MS",300*1e3),auditMaxBytes:As("VIBE_AUDIT_MAX_BYTES",8*1024*1024),daemonLogMaxBytes:As("VIBE_DAEMON_LOG_MAX_BYTES",16*1024*1024),storageHousekeepingIntervalMs:As("VIBE_STORAGE_HOUSEKEEPING_INTERVAL_MS",300*1e3),get claudePath(){return cp()},get codexPath(){return up()},isTransientPath:Te,execViaLoginShell:fp,buildSanitizedEnv:Gn};var Xs=require("crypto"),Lc=require("fs/promises");var $l=require("child_process"),zl=require("fs");var $n=require("fs"),Fl=require("path");var j=require("fs");function hp(t,e,n,r){let s=Math.max(0,e-n),i=Math.floor(e*.75);return Math.max(0,Math.min(t,s,r??i))}function Xt(t,e){if(!(0,j.existsSync)(t))return{path:t,existed:!1,trimmed:!1,beforeBytes:0,afterBytes:0,reclaimedBytes:0};let r=(0,j.statSync)(t).size,s=Math.max(0,e.incomingBytes??0);if(e.maxBytes<=0||r+s<=e.maxBytes)return{path:t,existed:!0,trimmed:!1,beforeBytes:r,afterBytes:r,reclaimedBytes:0};let i=hp(r,e.maxBytes,s,e.retainBytes),o=(0,j.openSync)(t,"r+");try{let a=Buffer.alloc(0);if(i>0){let l=Buffer.alloc(i);(0,j.readSync)(o,l,0,i,r-i);let c=0;if(r>i){let u=l.indexOf(10);u>=0&&u+1<l.length&&(c=u+1)}a=l.subarray(c)}return(0,j.ftruncateSync)(o,0),a.length>0&&(0,j.writeSync)(o,a,0,a.length,0),{path:t,existed:!0,trimmed:!0,beforeBytes:r,afterBytes:a.length,reclaimedBytes:r-a.length}}finally{(0,j.closeSync)(o)}}function Dl(t){let e=[Xt(t.auditPath,{maxBytes:t.auditMaxBytes}),Xt(t.stdoutLogPath,{maxBytes:t.logMaxBytes}),Xt(t.stderrLogPath,{maxBytes:t.logMaxBytes})];return{files:e,trimmedFiles:e.filter(n=>n.trimmed).length,reclaimedBytes:e.reduce((n,r)=>n+r.reclaimedBytes,0)}}var Hl=!1,pp=new Set(["ts","event","source","appEvent","level"]);function gp(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}function mp(t={}){let e={};for(let[n,r]of Object.entries(t))pp.has(n)||(e[n]=r);return e}function yp(t,e,n={},r){return{ts:r??new Date().toISOString(),event:"app.log",source:"app",appEvent:t,level:e,...mp(n)}}function Sp(){Hl||((0,$n.mkdirSync)((0,Fl.dirname)(ct),{recursive:!0}),Hl=!0)}var ks=class{emit(e,n={}){this.write({ts:new Date().toISOString(),event:e,...n})}emitApp(e,n,r={},s){this.write(yp(e,n,r,s))}write(e){if(!gp()){Sp();try{let n=JSON.stringify(e)+`
25
+ `;Xt(ct,{maxBytes:_.auditMaxBytes,incomingBytes:Buffer.byteLength(n)}),(0,$n.appendFileSync)(ct,n)}catch{}}}},w=new ks;var Ae=require("fs"),Ul=require("os"),Zt=require("path"),ql=require("crypto"),Cs="claude-hook:",Qt="x-vibelet-claude-hook-secret",en={continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"PreToolUse"}};function _p(t,e){return`#!/usr/bin/env node
26
26
  const http = require('http');
27
27
  const chunks = [];
28
28
  process.stdin.on('data', (chunk) => chunks.push(chunk));
@@ -79,25 +79,25 @@ process.stdin.on('end', () => {
79
79
  req.end(body);
80
80
  });
81
81
  process.stdin.resume();
82
- `}function Wl(t,e){let n=(0,Zt.join)((0,Ul.tmpdir)(),`vibelet-claude-hooks-${process.pid}-${(0,ql.randomUUID)()}`);(0,Ee.mkdirSync)(n,{recursive:!0});let r=(0,Zt.join)(n,"settings.json"),s=(0,Zt.join)(n,"session_hook_forwarder.cjs"),i=(0,Zt.join)(n,"permission_hook_forwarder.cjs");return(0,Ee.writeFileSync)(s,_p(t,e),"utf8"),(0,Ee.writeFileSync)(i,vp(t,e),"utf8"),(0,Ee.writeFileSync)(r,JSON.stringify({hooks:{SessionStart:[{matcher:"*",hooks:[{type:"command",command:`${JSON.stringify(process.execPath)} ${JSON.stringify(s)}`}]}],PreToolUse:[{matcher:"*",hooks:[{type:"command",command:`${JSON.stringify(process.execPath)} ${JSON.stringify(i)}`}]}]}},null,2),"utf8"),{secret:e,dirPath:n,settingsPath:r,sessionScriptPath:s,permissionScriptPath:i}}function zn(t){if(t)try{(0,Ee.rmSync)(t.dirPath,{recursive:!0,force:!0})}catch{}}var Z=L.child({module:"claude"}),Vl="claude-permission-denial:",wp=/\u001B\[[0-?]*[ -/]*[@-~]/g;function bp(){return process.env.VIBE_TEST!=="1"&&!process.argv.includes("--test")}function ks(t){bp()&&Wn(`\x1B[33m\u26A1 [Vibelet] ${t}\x1B[0m
82
+ `}function Wl(t,e){let n=(0,Zt.join)((0,Ul.tmpdir)(),`vibelet-claude-hooks-${process.pid}-${(0,ql.randomUUID)()}`);(0,Ae.mkdirSync)(n,{recursive:!0});let r=(0,Zt.join)(n,"settings.json"),s=(0,Zt.join)(n,"session_hook_forwarder.cjs"),i=(0,Zt.join)(n,"permission_hook_forwarder.cjs");return(0,Ae.writeFileSync)(s,_p(t,e),"utf8"),(0,Ae.writeFileSync)(i,vp(t,e),"utf8"),(0,Ae.writeFileSync)(r,JSON.stringify({hooks:{SessionStart:[{matcher:"*",hooks:[{type:"command",command:`${JSON.stringify(process.execPath)} ${JSON.stringify(s)}`}]}],PreToolUse:[{matcher:"*",hooks:[{type:"command",command:`${JSON.stringify(process.execPath)} ${JSON.stringify(i)}`}]}]}},null,2),"utf8"),{secret:e,dirPath:n,settingsPath:r,sessionScriptPath:s,permissionScriptPath:i}}function zn(t){if(t)try{(0,Ae.rmSync)(t.dirPath,{recursive:!0,force:!0})}catch{}}var Z=L.child({module:"claude"}),Vl="claude-permission-denial:",wp=/\u001B\[[0-?]*[ -/]*[@-~]/g;function bp(){return process.env.VIBE_TEST!=="1"&&!process.argv.includes("--test")}function Ps(t){bp()&&Wn(`\x1B[33m\u26A1 [Vibelet] ${t}\x1B[0m
83
83
  `)}function Ip(t){return Array.isArray(t)?t.map(e=>!e||typeof e!="object"?"":typeof e.text=="string"?e.text:typeof e.content=="string"?e.content:"").filter(Boolean).join(`
84
- `):""}function xp(t){return Array.isArray(t)&&t.length>0&&t.every(e=>e&&typeof e=="object"&&e.type==="tool_reference")}function Ep(t){if(typeof t=="string")return t;let e=Ip(t);return e||(xp(t)?"":JSON.stringify(t))}function Tp(t){return/requested permissions|haven't granted/i.test(t)}function jl(t){return t.replace(wp,"").replace(/\s+/g," ").trim()}function Ap(t){let e=t.toLowerCase();return e==="error"||e==="failed"||e==="unknown error"}function kp(t){return/\brate limit\b/i.test(t)||/\busage limit\b/i.test(t)||/\bquota\b/i.test(t)||/\btoo many requests\b/i.test(t)||/\bcredit balance\b/i.test(t)||/\bcredits? remaining\b/i.test(t)||/\bmax(?:imum)? usage\b/i.test(t)}function Cp(t){return t.toLowerCase().startsWith("claude ")?t:`Claude usage limit reached. ${t}`}function Gl(t){let e=jl(t.resultText??""),n=(t.stderrLines??[]).map(jl).filter(Boolean).slice(-3),r=[e,...n].find(i=>!!i&&kp(i));if(r)return Cp(r);let s=[e,...n].find(i=>!!i&&!Ap(i));return s?t.exitCode!=null&&s!==e?`Claude exited with code ${t.exitCode}: ${s}`:s:t.exitCode!=null?`Claude exited with code ${t.exitCode}`:"Claude returned an error result."}function Vn(t){return t.startsWith(Vl)}var tn=class{proc=null;handler=null;sessionId="";buffer="";cwd="";approvalMode;sawFinalResult=!1;interrupted=!1;exitHandler=null;lastStderr=[];pendingPermissionDescriptions=new Map;emittedToolCallIds=new Set;hookPort=null;hookSecret=null;hookFiles=null;buildClaudeEnv(){let e=_.buildSanitizedEnv();for(let n of Object.keys(e))n.startsWith("CMUX_")&&delete e[n];return e}async start(e,n,r){return this.cwd=e,this.approvalMode=r,n&&(this.sessionId=n),this.sessionId||(this.sessionId=`pending_${Date.now()}`),Z.info({sessionId:this.sessionId,cwd:e},"session initialized"),v.emit("driver.spawn",{agent:"claude",sessionId:this.sessionId,cwd:e}),this.sessionId}configureHookBridge(e,n){this.hookPort=e,this.hookSecret=n}sendPrompt(e){let n=["-p",e,"--output-format","stream-json","--verbose","--include-partial-messages"];this.sessionId&&!this.sessionId.startsWith("pending_")&&n.push("--resume",this.sessionId),zn(this.hookFiles),this.hookFiles=null,this.approvalMode!=="acceptEdits"&&this.approvalMode!=="autoApprove"&&this.hookPort&&this.hookSecret&&(this.hookFiles=Wl(this.hookPort,this.hookSecret),n.push("--settings",this.hookFiles.settingsPath)),this.approvalMode==="acceptEdits"&&n.push("--permission-mode","acceptEdits"),this.approvalMode==="autoApprove"&&n.push("--dangerously-skip-permissions");let r=this.sessionId.startsWith("pending_")?"(new)":`(resume ${this.sessionId.slice(0,8)})`;Z.info({sessionId:this.sessionId,label:r,promptPreview:e.slice(0,50)},"running claude"),ks(`New message: ${e.slice(0,60)}`),this.sawFinalResult=!1,this.interrupted=!1,this.lastStderr=[],this.pendingPermissionDescriptions.clear(),this.emittedToolCallIds.clear(),this.proc=(0,$l.spawn)(_.claudePath,n,{cwd:this.cwd||void 0,stdio:["ignore","pipe","pipe"],env:this.buildClaudeEnv()}),this.proc.on("error",s=>{let i=s.message;s.code==="ENOENT"&&this.cwd&&!(0,zl.existsSync)(this.cwd)&&(i=`Working directory does not exist: ${this.cwd}`),Z.error({sessionId:this.sessionId,error:i,cwd:this.cwd},"spawn error"),v.emit("driver.error",{agent:"claude",sessionId:this.sessionId,error:i}),this.handler?.({type:"error",sessionId:this.sessionId,message:i})}),this.buffer="",this.proc.stdout.on("data",s=>{this.buffer+=s.toString();let i=this.buffer.split(`
84
+ `):""}function xp(t){return Array.isArray(t)&&t.length>0&&t.every(e=>e&&typeof e=="object"&&e.type==="tool_reference")}function Tp(t){if(typeof t=="string")return t;let e=Ip(t);return e||(xp(t)?"":JSON.stringify(t))}function Ap(t){return/requested permissions|haven't granted/i.test(t)}function jl(t){return t.replace(wp,"").replace(/\s+/g," ").trim()}function Ep(t){let e=t.toLowerCase();return e==="error"||e==="failed"||e==="unknown error"}function kp(t){return/\brate limit\b/i.test(t)||/\busage limit\b/i.test(t)||/\bquota\b/i.test(t)||/\btoo many requests\b/i.test(t)||/\bcredit balance\b/i.test(t)||/\bcredits? remaining\b/i.test(t)||/\bmax(?:imum)? usage\b/i.test(t)}function Cp(t){return t.toLowerCase().startsWith("claude ")?t:`Claude usage limit reached. ${t}`}function Gl(t){let e=jl(t.resultText??""),n=(t.stderrLines??[]).map(jl).filter(Boolean).slice(-3),r=[e,...n].find(i=>!!i&&kp(i));if(r)return Cp(r);let s=[e,...n].find(i=>!!i&&!Ep(i));return s?t.exitCode!=null&&s!==e?`Claude exited with code ${t.exitCode}: ${s}`:s:t.exitCode!=null?`Claude exited with code ${t.exitCode}`:"Claude returned an error result."}function Vn(t){return t.startsWith(Vl)}var tn=class{proc=null;handler=null;sessionId="";buffer="";cwd="";approvalMode;sawFinalResult=!1;interrupted=!1;exitHandler=null;lastStderr=[];pendingPermissionDescriptions=new Map;emittedToolCallIds=new Set;replayPhase=!1;hookPort=null;hookSecret=null;hookFiles=null;buildClaudeEnv(){let e=_.buildSanitizedEnv();for(let n of Object.keys(e))n.startsWith("CMUX_")&&delete e[n];return e}async start(e,n,r){return this.cwd=e,this.approvalMode=r,n&&(this.sessionId=n),this.sessionId||(this.sessionId=`pending_${Date.now()}`),Z.info({sessionId:this.sessionId,cwd:e},"session initialized"),w.emit("driver.spawn",{agent:"claude",sessionId:this.sessionId,cwd:e}),this.sessionId}configureHookBridge(e,n){this.hookPort=e,this.hookSecret=n}sendPrompt(e){let n=["-p",e,"--output-format","stream-json","--verbose","--include-partial-messages"];this.sessionId&&!this.sessionId.startsWith("pending_")&&n.push("--resume",this.sessionId),zn(this.hookFiles),this.hookFiles=null,this.approvalMode!=="acceptEdits"&&this.approvalMode!=="autoApprove"&&this.hookPort&&this.hookSecret&&(this.hookFiles=Wl(this.hookPort,this.hookSecret),n.push("--settings",this.hookFiles.settingsPath)),this.approvalMode==="acceptEdits"&&n.push("--permission-mode","acceptEdits"),this.approvalMode==="autoApprove"&&n.push("--dangerously-skip-permissions");let r=this.sessionId.startsWith("pending_")?"(new)":`(resume ${this.sessionId.slice(0,8)})`;Z.info({sessionId:this.sessionId,label:r,promptPreview:e.slice(0,50)},"running claude"),Ps(`New message: ${e.slice(0,60)}`),this.sawFinalResult=!1,this.interrupted=!1,this.lastStderr=[],this.pendingPermissionDescriptions.clear(),this.emittedToolCallIds.clear(),this.replayPhase=!0,this.proc=(0,$l.spawn)(_.claudePath,n,{cwd:this.cwd||void 0,stdio:["ignore","pipe","pipe"],env:this.buildClaudeEnv()}),this.proc.on("error",s=>{let i=s.message;s.code==="ENOENT"&&this.cwd&&!(0,zl.existsSync)(this.cwd)&&(i=`Working directory does not exist: ${this.cwd}`),Z.error({sessionId:this.sessionId,error:i,cwd:this.cwd},"spawn error"),w.emit("driver.error",{agent:"claude",sessionId:this.sessionId,error:i}),this.handler?.({type:"error",sessionId:this.sessionId,message:i})}),this.buffer="",this.proc.stdout.on("data",s=>{this.buffer+=s.toString();let i=this.buffer.split(`
85
85
  `);this.buffer=i.pop();for(let o of i)if(o.trim())try{this.handleRaw(JSON.parse(o))}catch{Z.warn({sessionId:this.sessionId,linePreview:o.slice(0,100)},"failed to parse stdout line")}}),this.proc.stderr.on("data",s=>{let i=s.toString().trim();i&&(Z.debug({sessionId:this.sessionId,stderr:i},"stderr"),this.lastStderr.push(i),this.lastStderr.length>10&&this.lastStderr.shift())}),this.proc.on("exit",(s,i)=>{Z.info({sessionId:this.sessionId,exitCode:s,signal:i},"process exited");let o=this.interrupted;this.proc=null,zn(this.hookFiles),this.hookFiles=null,this.interrupted=!1,o&&!this.sawFinalResult?this.handler?.({type:"session.interrupted",sessionId:this.sessionId}):s&&s!==0&&!this.sawFinalResult&&(Z.error({sessionId:this.sessionId,exitCode:s,lastStderr:this.lastStderr.slice(-3)},"abnormal exit"),this.handler?.({type:"error",sessionId:this.sessionId,message:Gl({stderrLines:this.lastStderr,exitCode:s})})),this.exitHandler?.(s)})}respondApproval(e,n){if(Z.info({sessionId:this.sessionId,requestId:e,approved:n},"approval response"),!this.proc?.stdin?.writable)return Z.error({sessionId:this.sessionId},"cannot send approval: stdin not writable"),!1;let r=JSON.stringify({type:"control_response",request_id:e,permission_granted:n});return this.proc.stdin.write(r+`
86
- `),!0}setApprovalMode(e){this.approvalMode=e,Z.info({sessionId:this.sessionId,approvalMode:e},"approval mode updated")}interrupt(){this.proc&&!this.proc.killed&&(this.interrupted=!0,this.proc.kill("SIGTERM"),Z.info({sessionId:this.sessionId},"interrupted"))}stop(){if(!this.proc)return;this.proc.kill("SIGTERM");let e=this.proc;setTimeout(()=>{e.killed||e.kill("SIGKILL")},5e3).unref(),this.proc=null,zn(this.hookFiles),this.hookFiles=null}onMessage(e){this.handler=e}onExit(e){this.exitHandler=e}handleRaw(e){let n=e.type;if(n==="system"&&e.subtype==="init"){let r=e.session_id??"";r&&r!==this.sessionId&&(Z.info({oldSessionId:this.sessionId,newSessionId:r},"session ID resolved"),v.emit("driver.init",{agent:"claude",sessionId:r}),this.sessionId=r);return}if(this.handler)switch(n){case"assistant":{let r=e.message?.content;if(!Array.isArray(r))break;for(let s of r)s.type==="tool_use"&&this.handler({type:"tool.call",sessionId:this.sessionId,toolName:s.name,input:s.input??{},toolCallId:s.id});break}case"user":{let r=e.message?.content;if(!Array.isArray(r))break;for(let s of r)if(s.type==="tool_result"){let i=Ep(s.content);if(!i)continue;if(s.is_error===!0&&typeof s.tool_use_id=="string"&&Tp(i)){this.pendingPermissionDescriptions.set(s.tool_use_id,i);continue}this.handler({type:"tool.result",sessionId:this.sessionId,toolCallId:s.tool_use_id,output:i})}break}case"control_request":{let r=e.request;r?.subtype==="can_use_tool"&&(v.emit("approval.request",{agent:"claude",sessionId:this.sessionId,toolName:r.tool_name}),this.handler({type:"approval.request",sessionId:this.sessionId,requestId:e.request_id,toolName:r.tool_name??"unknown",input:r.input??{},description:r.description??r.title??""}));break}case"stream_event":{let r=e.event;r?.type==="content_block_delta"&&r?.delta?.type==="text_delta"&&r?.delta?.text&&this.handler({type:"text.delta",sessionId:this.sessionId,content:r.delta.text});break}case"result":{this.sawFinalResult=!0;let r=typeof e.result=="string"?e.result:"";if(e.is_error){ks("Claude failed."),this.handler({type:"error",sessionId:this.sessionId,message:Gl({resultText:r,stderrLines:this.lastStderr})});break}let s=Array.isArray(e.permission_denials)?e.permission_denials:[];if(s.length>0){let a=s[0]??{},l=typeof a.tool_use_id=="string"?a.tool_use_id:`missing_${Date.now()}`,c=typeof a.tool_name=="string"?a.tool_name:"unknown",u=a.tool_input&&typeof a.tool_input=="object"?a.tool_input:{},d=this.pendingPermissionDescriptions.get(l)??`Claude requested permissions to use ${c}.`;v.emit("approval.request",{agent:"claude",sessionId:this.sessionId,toolName:c}),this.handler({type:"approval.request",sessionId:this.sessionId,requestId:`${Vl}${l}`,toolName:c,input:u,description:d})}this.pendingPermissionDescriptions.clear();let i=e.total_cost_usd,o=e.usage?{inputTokens:e.usage.input_tokens,outputTokens:e.usage.output_tokens}:void 0;ks("Claude finished. Run `claude --continue` to continue on desktop."),v.emit("session.done",{agent:"claude",sessionId:this.sessionId,cost:i,usage:o}),this.handler({type:"session.done",sessionId:this.sessionId,cost:i,usage:o});break}}}};var Xl=require("child_process"),Zl=require("fs");var Cs=class{counters=new Map;timers=new Map;gauges=new Map;startTime=Date.now();logInterval=null;increment(e,n={}){this.counters.has(e)||this.counters.set(e,[]);let r=this.counters.get(e),s=JSON.stringify(n),i=r.find(o=>JSON.stringify(o.labels)===s);i?i.value++:r.push({value:1,labels:n})}gauge(e,n){this.gauges.set(e,n)}startTimer(e){let n=performance.now();return()=>{let r=Math.round(performance.now()-n),s=this.timers.get(e)??{count:0,totalMs:0,minMs:1/0,maxMs:0,lastMs:0};return s.count++,s.totalMs+=r,s.minMs=Math.min(s.minMs,r),s.maxMs=Math.max(s.maxMs,r),s.lastMs=r,this.timers.set(e,s),r}}snapshot(){let e={};for(let[s,i]of this.counters)e[s]=i.map(o=>({...o}));let n={};for(let[s,i]of this.timers)n[s]={...i,minMs:i.minMs===1/0?0:i.minMs};let r={};for(let[s,i]of this.gauges)r[s]=i;return{uptimeMs:Date.now()-this.startTime,counters:e,timers:n,gauges:r}}startPeriodicLog(e=6e4){this.logInterval||(this.logInterval=setInterval(()=>{let n=this.snapshot();L.info({metrics:n},"periodic metrics snapshot")},e),this.logInterval.unref())}stopPeriodicLog(){this.logInterval&&(clearInterval(this.logInterval),this.logInterval=null)}},b=new Cs;var Yl=require("node:fs"),Rs=require("node:path"),Rp="@vibelet/cli";function Pp(t){try{let e=JSON.parse((0,Yl.readFileSync)(t,"utf8"));if(e.name===Rp&&typeof e.version=="string"&&e.version.length>0)return e.version}catch{}return null}function Lp(){return"0.1.3"}var ft=Lp();var T=L.child({module:"codex"});function Q(t){return!t||typeof t!="object"||Array.isArray(t)?null:t}function C(t){return typeof t=="string"&&t.trim().length>0?t.trim():null}function Mp(t){let e=C(t);return e?e.replace(/[^a-z0-9]/gi,"").toLowerCase():null}function Ps(t){return t?C(t.itemId)??C(t.id)??C(t.callId)??C(t.call_id):null}function Ls(t,e){let n={};for(let[r,s]of Object.entries(t))e.includes(r)||(n[r]=s);return n}function Ql(t){return/\bapprove\b|\ballow\b|\baccept\b|\byes\b|\bcontinue\b|\bproceed\b|\brun\b|\bapply\b/i.test(t)}function ec(t){return/\bdeny\b|\breject\b|\bdecline\b|\bno\b|\bcancel\b|\babort\b|\bstop\b/i.test(t)}function Np(t){if(!Array.isArray(t))return null;for(let e of t){let n=Q(e);if(!n)continue;let r=C(n.id),s=Array.isArray(n.options)?n.options.map(l=>Q(l)).filter(l=>!!l):[];if(!r||s.length===0)continue;let i=s.map(l=>C(l.label)).filter(l=>!!l);if(i.length<2)continue;let o=i.find(l=>Ql(l))??i[0],a=i.find(l=>ec(l))??i[i.length-1];if(!(!o||!a||o===a))return{questionId:r,approveLabel:o,denyLabel:a}}return null}function Op(t){if(!Array.isArray(t)||t.length===0)return!1;let e=t.map(s=>Q(s)).filter(s=>!!s).flatMap(s=>(Array.isArray(s.options)?s.options:[]).map(o=>Q(o)).filter(o=>!!o).map(o=>C(o.label)).filter(o=>!!o)),n=e.some(s=>Ql(s)),r=e.some(s=>ec(s));return n&&r}function Jl(t){let e=Mp(t.type??t.itemType);if(e==="commandexecution")return{toolName:"Bash",input:Ls(t,["id","itemId","type","itemType","stdout","stderr","exitCode","exit_code","status","success","error"])};if(e==="filechange")return{toolName:"Patch",input:Ls(t,["id","itemId","type","itemType","stdout","stderr","exitCode","exit_code","status","success","error"])};if(e==="mcptoolcall"){let n=C(t.server),r=C(t.tool)??C(t.name);return r?{toolName:n?`mcp__${n}__${r}`:r,input:Q(t.arguments)??Q(t.input)??{}}:null}return null}function Bp(t){if(!Array.isArray(t))return"";for(let e of t){let n=Q(e);if(!n)continue;let r=C(n.question)??C(n.header);if(r)return r}return""}function Kl(t,e){return t==="autoApprove"?{approvalPolicy:"never",sandbox:"danger-full-access",sandboxPolicy:{type:"dangerFullAccess"}}:{approvalPolicy:"on-request",sandbox:"workspace-write",sandboxPolicy:{type:"workspaceWrite",writableRoots:[e],readOnlyAccess:{type:"fullAccess"},networkAccess:!0,excludeTmpdirEnvVar:!1,excludeSlashTmp:!1}}}var Yn=class{proc=null;handler=null;exitHandler=null;buffer="";rpcId=0;pending=new Map;threadId="";lastStderr=[];approvalRequests=new Map;toolContextByCallId=new Map;approvalMode;cwd="";async start(e,n,r){this.approvalMode=r,this.cwd=e,this.approvalRequests.clear(),this.toolContextByCallId.clear();let s=_.codexPath,i,o=this.buildSpawnArgs();if(_.isTransientPath(s)){let c=_.execViaLoginShell("codex",o);i=c.command,o=c.args,T.info({spawnCmd:i,argsPreview:o.slice(0,2)},"spawning via login shell")}else i=s,T.info({spawnCmd:i,args:o},"spawning");v.emit("driver.spawn",{agent:"codex",cwd:e,resumeSessionId:n}),this.lastStderr=[],this.proc=(0,Xl.spawn)(i,o,{cwd:e||void 0,stdio:["pipe","pipe","pipe"],env:_.buildSanitizedEnv()}),this.proc.on("error",c=>{let u=c.message;c.code==="ENOENT"&&e&&!(0,Zl.existsSync)(e)&&(u=`Working directory does not exist: ${e}`),T.error({error:u,cwd:e},"spawn error"),v.emit("driver.error",{agent:"codex",error:u})}),this.proc.stdout.on("data",c=>{this.buffer+=c.toString();let u=this.buffer.split(`
87
- `);this.buffer=u.pop();for(let d of u)if(d.trim())try{this.handleRaw(JSON.parse(d))}catch{T.warn({linePreview:d.slice(0,200)},"failed to parse stdout line")}}),this.proc.stderr.on("data",c=>{let u=c.toString().trim();u&&(T.debug({stderr:u},"stderr"),this.lastStderr.push(u),this.lastStderr.length>10&&this.lastStderr.shift())}),this.proc.on("exit",c=>{T.info({threadId:this.threadId,exitCode:c},"process exited"),c&&c!==0&&T.error({threadId:this.threadId,exitCode:c,lastStderr:this.lastStderr.slice(-3)},"abnormal exit"),this.proc=null,this.approvalRequests.clear(),this.toolContextByCallId.clear();for(let[,{reject:u}]of this.pending)u(new Error(`Codex process exited with code ${c}`));this.pending.clear(),this.exitHandler?.(c),c&&this.handler&&this.threadId&&this.handler({type:"error",sessionId:this.threadId,message:`Codex process exited with code ${c}`})});let a=b.startTimer("rpc.duration");await this.rpc("initialize",{clientInfo:{name:"@vibelet/cli",version:ft},capabilities:{experimentalApi:!0}}),a(),this.rpcNotify("initialized",{});let l=Kl(this.approvalMode,e);if(n){let c=await this.rpc("thread/resume",{threadId:n,approvalPolicy:l.approvalPolicy,sandbox:l.sandbox,persistExtendedHistory:!0});this.threadId=c?.thread?.id??n,T.info({threadId:this.threadId},"thread resumed"),v.emit("driver.init",{agent:"codex",sessionId:this.threadId})}else{let c=await this.rpc("thread/start",{cwd:e,approvalPolicy:l.approvalPolicy,sandbox:l.sandbox,experimentalRawEvents:!0,persistExtendedHistory:!0});this.threadId=c?.thread?.id??c?.threadId??"",T.info({threadId:this.threadId},"thread created"),v.emit("driver.init",{agent:"codex",sessionId:this.threadId})}return this.threadId}buildSpawnArgs(){return["app-server","--listen","stdio://"]}sendPrompt(e){let n=Kl(this.approvalMode,this.cwd||process.cwd());T.info({threadId:this.threadId,promptPreview:e.slice(0,50)},"turn/start"),this.rpc("turn/start",{threadId:this.threadId,input:[{type:"text",text:e}],approvalPolicy:n.approvalPolicy,sandboxPolicy:n.sandboxPolicy}).then(r=>T.debug({resultPreview:JSON.stringify(r).slice(0,200)},"turn/start result")).catch(r=>{T.error({threadId:this.threadId,error:r.message},"sendPrompt error"),this.handler?.({type:"error",sessionId:this.threadId,message:r.message})})}respondApproval(e,n){if(!this.proc?.stdin?.writable)return!1;let r=this.approvalRequests.get(e),s=r?.rpcId??Number(e);if(!Number.isFinite(s))return!1;let i;if(!r)i=n?{decision:"approve"}:{decision:"deny",reason:"User denied from Vibelet"};else{switch(r.kind){case"command-execution":case"file-change":i={decision:n?"accept":"decline"};break;case"request-user-input-approval":i={answers:{[r.questionId]:{answers:[n?r.approveLabel:r.denyLabel]}}};break;case"exec-command-legacy":case"apply-patch-legacy":i={decision:n?"approved":"denied"};break;default:i={decision:n?"accept":"decline"};break}this.approvalRequests.delete(e)}return T.info({threadId:this.threadId,rpcId:s,approved:n},"approval response"),this.proc.stdin.write(JSON.stringify({jsonrpc:"2.0",id:s,result:i})+`
88
- `),!0}interrupt(){this.rpc("turn/interrupt",{threadId:this.threadId}).catch(()=>{})}setApprovalMode(e){this.approvalMode=e,T.info({approvalMode:e},"approval mode updated (takes effect on restart)")}stop(){if(!this.proc)return;this.proc.kill("SIGTERM");let e=this.proc;setTimeout(()=>{e.killed||e.kill("SIGKILL")},5e3).unref(),this.proc=null,this.approvalRequests.clear(),this.toolContextByCallId.clear();for(let[,{reject:n}]of this.pending)n(new Error("Process stopped"));this.pending.clear()}onMessage(e){this.handler=e}onExit(e){this.exitHandler=e}rpc(e,n){let r=++this.rpcId,s=b.startTimer("rpc.duration");return new Promise((i,o)=>{if(this.pending.set(r,{resolve:a=>{s(),i(a)},reject:a=>{s(),o(a)}}),!this.proc?.stdin?.writable){this.pending.delete(r),s(),o(new Error("Process not available"));return}this.proc.stdin.write(JSON.stringify({jsonrpc:"2.0",method:e,id:r,params:n})+`
89
- `),setTimeout(()=>{this.pending.has(r)&&(this.pending.delete(r),T.error({method:e,rpcId:r,threadId:this.threadId},"RPC timeout"),s(),o(new Error(`RPC timeout: ${e}`)))},3e4).unref()})}rpcNotify(e,n){this.proc?.stdin?.writable&&this.proc.stdin.write(JSON.stringify({jsonrpc:"2.0",method:e,params:n})+`
86
+ `),!0}setApprovalMode(e){this.approvalMode=e,Z.info({sessionId:this.sessionId,approvalMode:e},"approval mode updated")}interrupt(){this.proc&&!this.proc.killed&&(this.interrupted=!0,this.proc.kill("SIGTERM"),Z.info({sessionId:this.sessionId},"interrupted"))}stop(){if(!this.proc)return;this.proc.kill("SIGTERM");let e=this.proc;setTimeout(()=>{e.killed||e.kill("SIGKILL")},5e3).unref(),this.proc=null,zn(this.hookFiles),this.hookFiles=null}onMessage(e){this.handler=e}onExit(e){this.exitHandler=e}handleRaw(e){let n=e.type;if(n==="system"&&e.subtype==="init"){let r=e.session_id??"";r&&r!==this.sessionId&&(Z.info({oldSessionId:this.sessionId,newSessionId:r},"session ID resolved"),w.emit("driver.init",{agent:"claude",sessionId:r}),this.sessionId=r);return}if(this.handler)switch(n){case"assistant":{if(this.replayPhase)break;let r=e.message?.content;if(!Array.isArray(r))break;for(let s of r)s.type==="tool_use"&&!this.emittedToolCallIds.has(s.id)&&(this.emittedToolCallIds.add(s.id),this.handler({type:"tool.call",sessionId:this.sessionId,toolName:s.name,input:s.input??{},toolCallId:s.id}));break}case"user":{if(this.replayPhase)break;let r=e.message?.content;if(!Array.isArray(r))break;for(let s of r)if(s.type==="tool_result"){let i=Tp(s.content);if(!i)continue;if(s.is_error===!0&&typeof s.tool_use_id=="string"&&Ap(i)){this.pendingPermissionDescriptions.set(s.tool_use_id,i);continue}this.handler({type:"tool.result",sessionId:this.sessionId,toolCallId:s.tool_use_id,output:i})}break}case"control_request":{this.replayPhase=!1;let r=e.request;r?.subtype==="can_use_tool"&&(w.emit("approval.request",{agent:"claude",sessionId:this.sessionId,toolName:r.tool_name}),this.handler({type:"approval.request",sessionId:this.sessionId,requestId:e.request_id,toolName:r.tool_name??"unknown",input:r.input??{},description:r.description??r.title??""}));break}case"stream_event":{this.replayPhase=!1;let r=e.event;r?.type==="content_block_delta"&&r?.delta?.type==="text_delta"&&r?.delta?.text&&this.handler({type:"text.delta",sessionId:this.sessionId,content:r.delta.text});break}case"result":{this.replayPhase=!1,this.sawFinalResult=!0;let r=typeof e.result=="string"?e.result:"";if(e.is_error){Ps("Claude failed."),this.handler({type:"error",sessionId:this.sessionId,message:Gl({resultText:r,stderrLines:this.lastStderr})});break}let s=Array.isArray(e.permission_denials)?e.permission_denials:[];if(s.length>0){let a=s[0]??{},l=typeof a.tool_use_id=="string"?a.tool_use_id:`missing_${Date.now()}`,c=typeof a.tool_name=="string"?a.tool_name:"unknown",u=a.tool_input&&typeof a.tool_input=="object"?a.tool_input:{},d=this.pendingPermissionDescriptions.get(l)??`Claude requested permissions to use ${c}.`;w.emit("approval.request",{agent:"claude",sessionId:this.sessionId,toolName:c}),this.handler({type:"approval.request",sessionId:this.sessionId,requestId:`${Vl}${l}`,toolName:c,input:u,description:d})}this.pendingPermissionDescriptions.clear();let i=e.total_cost_usd,o=e.usage?{inputTokens:e.usage.input_tokens,outputTokens:e.usage.output_tokens}:void 0;Ps("Claude finished. Run `claude --continue` to continue on desktop."),w.emit("session.done",{agent:"claude",sessionId:this.sessionId,cost:i,usage:o}),this.handler({type:"session.done",sessionId:this.sessionId,cost:i,usage:o});break}}}};var Xl=require("child_process"),Zl=require("fs");var Rs=class{counters=new Map;timers=new Map;gauges=new Map;startTime=Date.now();logInterval=null;increment(e,n={}){this.counters.has(e)||this.counters.set(e,[]);let r=this.counters.get(e),s=JSON.stringify(n),i=r.find(o=>JSON.stringify(o.labels)===s);i?i.value++:r.push({value:1,labels:n})}gauge(e,n){this.gauges.set(e,n)}startTimer(e){let n=performance.now();return()=>{let r=Math.round(performance.now()-n),s=this.timers.get(e)??{count:0,totalMs:0,minMs:1/0,maxMs:0,lastMs:0};return s.count++,s.totalMs+=r,s.minMs=Math.min(s.minMs,r),s.maxMs=Math.max(s.maxMs,r),s.lastMs=r,this.timers.set(e,s),r}}snapshot(){let e={};for(let[s,i]of this.counters)e[s]=i.map(o=>({...o}));let n={};for(let[s,i]of this.timers)n[s]={...i,minMs:i.minMs===1/0?0:i.minMs};let r={};for(let[s,i]of this.gauges)r[s]=i;return{uptimeMs:Date.now()-this.startTime,counters:e,timers:n,gauges:r}}startPeriodicLog(e=6e4){this.logInterval||(this.logInterval=setInterval(()=>{let n=this.snapshot();L.info({metrics:n},"periodic metrics snapshot")},e),this.logInterval.unref())}stopPeriodicLog(){this.logInterval&&(clearInterval(this.logInterval),this.logInterval=null)}},b=new Rs;var Yl=require("node:fs"),Ls=require("node:path"),Pp="@vibelet/cli";function Rp(t){try{let e=JSON.parse((0,Yl.readFileSync)(t,"utf8"));if(e.name===Pp&&typeof e.version=="string"&&e.version.length>0)return e.version}catch{}return null}function Lp(){return"0.1.4"}var ft=Lp();var A=L.child({module:"codex"});function Q(t){return!t||typeof t!="object"||Array.isArray(t)?null:t}function C(t){return typeof t=="string"&&t.trim().length>0?t.trim():null}function Mp(t){let e=C(t);return e?e.replace(/[^a-z0-9]/gi,"").toLowerCase():null}function Ms(t){return t?C(t.itemId)??C(t.id)??C(t.callId)??C(t.call_id):null}function Ns(t,e){let n={};for(let[r,s]of Object.entries(t))e.includes(r)||(n[r]=s);return n}function Ql(t){return/\bapprove\b|\ballow\b|\baccept\b|\byes\b|\bcontinue\b|\bproceed\b|\brun\b|\bapply\b/i.test(t)}function ec(t){return/\bdeny\b|\breject\b|\bdecline\b|\bno\b|\bcancel\b|\babort\b|\bstop\b/i.test(t)}function Np(t){if(!Array.isArray(t))return null;for(let e of t){let n=Q(e);if(!n)continue;let r=C(n.id),s=Array.isArray(n.options)?n.options.map(l=>Q(l)).filter(l=>!!l):[];if(!r||s.length===0)continue;let i=s.map(l=>C(l.label)).filter(l=>!!l);if(i.length<2)continue;let o=i.find(l=>Ql(l))??i[0],a=i.find(l=>ec(l))??i[i.length-1];if(!(!o||!a||o===a))return{questionId:r,approveLabel:o,denyLabel:a}}return null}function Op(t){if(!Array.isArray(t)||t.length===0)return!1;let e=t.map(s=>Q(s)).filter(s=>!!s).flatMap(s=>(Array.isArray(s.options)?s.options:[]).map(o=>Q(o)).filter(o=>!!o).map(o=>C(o.label)).filter(o=>!!o)),n=e.some(s=>Ql(s)),r=e.some(s=>ec(s));return n&&r}function Jl(t){let e=Mp(t.type??t.itemType);if(e==="commandexecution")return{toolName:"Bash",input:Ns(t,["id","itemId","type","itemType","stdout","stderr","exitCode","exit_code","status","success","error"])};if(e==="filechange")return{toolName:"Patch",input:Ns(t,["id","itemId","type","itemType","stdout","stderr","exitCode","exit_code","status","success","error"])};if(e==="mcptoolcall"){let n=C(t.server),r=C(t.tool)??C(t.name);return r?{toolName:n?`mcp__${n}__${r}`:r,input:Q(t.arguments)??Q(t.input)??{}}:null}return null}function Bp(t){if(!Array.isArray(t))return"";for(let e of t){let n=Q(e);if(!n)continue;let r=C(n.question)??C(n.header);if(r)return r}return""}function Kl(t,e){return t==="autoApprove"?{approvalPolicy:"never",sandbox:"danger-full-access",sandboxPolicy:{type:"dangerFullAccess"}}:{approvalPolicy:"on-request",sandbox:"workspace-write",sandboxPolicy:{type:"workspaceWrite",writableRoots:[e],readOnlyAccess:{type:"fullAccess"},networkAccess:!0,excludeTmpdirEnvVar:!1,excludeSlashTmp:!1}}}var Yn=class{proc=null;handler=null;exitHandler=null;buffer="";rpcId=0;pending=new Map;threadId="";lastStderr=[];approvalRequests=new Map;toolContextByCallId=new Map;approvalMode;cwd="";async start(e,n,r){this.approvalMode=r,this.cwd=e,this.approvalRequests.clear(),this.toolContextByCallId.clear();let s=_.codexPath,i,o=this.buildSpawnArgs();if(_.isTransientPath(s)){let c=_.execViaLoginShell("codex",o);i=c.command,o=c.args,A.info({spawnCmd:i,argsPreview:o.slice(0,2)},"spawning via login shell")}else i=s,A.info({spawnCmd:i,args:o},"spawning");w.emit("driver.spawn",{agent:"codex",cwd:e,resumeSessionId:n}),this.lastStderr=[],this.proc=(0,Xl.spawn)(i,o,{cwd:e||void 0,stdio:["pipe","pipe","pipe"],env:_.buildSanitizedEnv()}),this.proc.on("error",c=>{let u=c.message;c.code==="ENOENT"&&e&&!(0,Zl.existsSync)(e)&&(u=`Working directory does not exist: ${e}`),A.error({error:u,cwd:e},"spawn error"),w.emit("driver.error",{agent:"codex",error:u})}),this.proc.stdout.on("data",c=>{this.buffer+=c.toString();let u=this.buffer.split(`
87
+ `);this.buffer=u.pop();for(let d of u)if(d.trim())try{this.handleRaw(JSON.parse(d))}catch{A.warn({linePreview:d.slice(0,200)},"failed to parse stdout line")}}),this.proc.stderr.on("data",c=>{let u=c.toString().trim();u&&(A.debug({stderr:u},"stderr"),this.lastStderr.push(u),this.lastStderr.length>10&&this.lastStderr.shift())}),this.proc.on("exit",c=>{A.info({threadId:this.threadId,exitCode:c},"process exited"),c&&c!==0&&A.error({threadId:this.threadId,exitCode:c,lastStderr:this.lastStderr.slice(-3)},"abnormal exit"),this.proc=null,this.approvalRequests.clear(),this.toolContextByCallId.clear();for(let[,{reject:u}]of this.pending)u(new Error(`Codex process exited with code ${c}`));this.pending.clear(),this.exitHandler?.(c),c&&this.handler&&this.threadId&&this.handler({type:"error",sessionId:this.threadId,message:`Codex process exited with code ${c}`})});let a=b.startTimer("rpc.duration");await this.rpc("initialize",{clientInfo:{name:"@vibelet/cli",version:ft},capabilities:{experimentalApi:!0}}),a(),this.rpcNotify("initialized",{});let l=Kl(this.approvalMode,e);if(n){let c=await this.rpc("thread/resume",{threadId:n,approvalPolicy:l.approvalPolicy,sandbox:l.sandbox,persistExtendedHistory:!0});this.threadId=c?.thread?.id??n,A.info({threadId:this.threadId},"thread resumed"),w.emit("driver.init",{agent:"codex",sessionId:this.threadId})}else{let c=await this.rpc("thread/start",{cwd:e,approvalPolicy:l.approvalPolicy,sandbox:l.sandbox,experimentalRawEvents:!0,persistExtendedHistory:!0});this.threadId=c?.thread?.id??c?.threadId??"",A.info({threadId:this.threadId},"thread created"),w.emit("driver.init",{agent:"codex",sessionId:this.threadId})}return this.threadId}buildSpawnArgs(){return["app-server","--listen","stdio://"]}sendPrompt(e){let n=Kl(this.approvalMode,this.cwd||process.cwd());A.info({threadId:this.threadId,promptPreview:e.slice(0,50)},"turn/start"),this.rpc("turn/start",{threadId:this.threadId,input:[{type:"text",text:e}],approvalPolicy:n.approvalPolicy,sandboxPolicy:n.sandboxPolicy}).then(r=>A.debug({resultPreview:JSON.stringify(r).slice(0,200)},"turn/start result")).catch(r=>{A.error({threadId:this.threadId,error:r.message},"sendPrompt error"),this.handler?.({type:"error",sessionId:this.threadId,message:r.message})})}respondApproval(e,n){if(!this.proc?.stdin?.writable)return!1;let r=this.approvalRequests.get(e),s=r?.rpcId??Number(e);if(!Number.isFinite(s))return!1;let i;if(!r)i=n?{decision:"approve"}:{decision:"deny",reason:"User denied from Vibelet"};else{switch(r.kind){case"command-execution":case"file-change":i={decision:n?"accept":"decline"};break;case"request-user-input-approval":i={answers:{[r.questionId]:{answers:[n?r.approveLabel:r.denyLabel]}}};break;case"exec-command-legacy":case"apply-patch-legacy":i={decision:n?"approved":"denied"};break;default:i={decision:n?"accept":"decline"};break}this.approvalRequests.delete(e)}return A.info({threadId:this.threadId,rpcId:s,approved:n},"approval response"),this.proc.stdin.write(JSON.stringify({jsonrpc:"2.0",id:s,result:i})+`
88
+ `),!0}interrupt(){this.rpc("turn/interrupt",{threadId:this.threadId}).catch(()=>{})}setApprovalMode(e){this.approvalMode=e,A.info({approvalMode:e},"approval mode updated (takes effect on restart)")}stop(){if(!this.proc)return;this.proc.kill("SIGTERM");let e=this.proc;setTimeout(()=>{e.killed||e.kill("SIGKILL")},5e3).unref(),this.proc=null,this.approvalRequests.clear(),this.toolContextByCallId.clear();for(let[,{reject:n}]of this.pending)n(new Error("Process stopped"));this.pending.clear()}onMessage(e){this.handler=e}onExit(e){this.exitHandler=e}rpc(e,n){let r=++this.rpcId,s=b.startTimer("rpc.duration");return new Promise((i,o)=>{if(this.pending.set(r,{resolve:a=>{s(),i(a)},reject:a=>{s(),o(a)}}),!this.proc?.stdin?.writable){this.pending.delete(r),s(),o(new Error("Process not available"));return}this.proc.stdin.write(JSON.stringify({jsonrpc:"2.0",method:e,id:r,params:n})+`
89
+ `),setTimeout(()=>{this.pending.has(r)&&(this.pending.delete(r),A.error({method:e,rpcId:r,threadId:this.threadId},"RPC timeout"),s(),o(new Error(`RPC timeout: ${e}`)))},3e4).unref()})}rpcNotify(e,n){this.proc?.stdin?.writable&&this.proc.stdin.write(JSON.stringify({jsonrpc:"2.0",method:e,params:n})+`
90
90
  `)}writeServerRequestError(e,n){this.proc?.stdin?.writable&&this.proc.stdin.write(JSON.stringify({jsonrpc:"2.0",id:e,error:{code:-32601,message:n}})+`
91
- `)}resolveToolContext(e){let n=Q(e?.item)??e??null,r=Ps(n);if(!r)return null;let s=n?Jl(n):null;if(s)return this.toolContextByCallId.set(r,s),{callId:r,toolContext:s};let i=this.toolContextByCallId.get(r);return i?{callId:r,toolContext:i}:null}createFallbackInput(e,n){return e?Ls(e,["threadId","turnId",...n]):{}}queueApprovalRequest(e,n,r){if(this.approvalRequests.set(e,n),v.emit("approval.request",{agent:"codex",sessionId:this.threadId,toolName:n.toolName}),!this.handler){T.warn({threadId:this.threadId,requestId:e,toolName:n.toolName},"approval request received without handler"),this.respondApproval(e,!1)||this.writeServerRequestError(n.rpcId,"Approval handler unavailable");return}this.handler({type:"approval.request",sessionId:this.threadId,requestId:e,toolName:n.toolName,input:n.input,description:r})}handleServerRequest(e,n,r){let s=String(n),i=this.resolveToolContext(r);if(e==="item/commandExecution/requestApproval"){this.queueApprovalRequest(s,{kind:"command-execution",responseKind:"v2",rpcId:n,toolName:i?.toolContext.toolName??"Bash",input:i?.toolContext.input??this.createFallbackInput(r,["itemId","reason","description"])},C(r?.reason)??C(r?.description)??"");return}if(e==="item/fileChange/requestApproval"){this.queueApprovalRequest(s,{kind:"file-change",responseKind:"v2",rpcId:n,toolName:i?.toolContext.toolName??"Patch",input:i?.toolContext.input??this.createFallbackInput(r,["itemId","reason","description"])},C(r?.reason)??C(r?.description)??"");return}if(e==="item/tool/requestUserInput"){let o=r?.questions;if(!Op(o)){T.warn({threadId:this.threadId,rpcId:n},"unsupported requestUserInput request"),this.writeServerRequestError(n,"Unsupported interactive request from Codex");return}let a=Np(o);if(!a){this.writeServerRequestError(n,"Malformed requestUserInput approval request");return}this.queueApprovalRequest(s,{kind:"request-user-input-approval",rpcId:n,questionId:a.questionId,approveLabel:a.approveLabel,denyLabel:a.denyLabel,toolName:i?.toolContext.toolName??"Bash",input:i?.toolContext.input??this.createFallbackInput(r,["itemId","questions"])},Bp(o));return}if(e==="execCommandApproval"){this.queueApprovalRequest(s,{kind:"exec-command-legacy",rpcId:n,toolName:i?.toolContext.toolName??"Bash",input:i?.toolContext.input??this.createFallbackInput(r,[])},C(r?.reason)??C(r?.description)??"");return}if(e==="applyPatchApproval"){this.queueApprovalRequest(s,{kind:"apply-patch-legacy",rpcId:n,toolName:i?.toolContext.toolName??"Patch",input:i?.toolContext.input??this.createFallbackInput(r,[])},C(r?.reason)??C(r?.description)??"");return}if(e==="item/permissions/requestApproval"){T.warn({threadId:this.threadId,rpcId:n},"unsupported permissions approval request"),this.writeServerRequestError(n,"Unsupported permissions approval request");return}T.warn({threadId:this.threadId,rpcId:n,method:e},"unsupported server request"),this.writeServerRequestError(n,`Unsupported server request: ${e}`)}handleRaw(e){if(T.debug({method:e.method??"(response)",rpcId:e.id??"-"},"handleRaw"),e.id!=null&&!e.method&&this.pending.has(e.id)){let s=this.pending.get(e.id);this.pending.delete(e.id),e.error?s.reject(new Error(e.error.message??"RPC error")):s.resolve(e.result);return}let n=typeof e.method=="string"?e.method:void 0,r=Q(e.params);if(n&&e.id!=null){this.handleServerRequest(n,e.id,r??void 0);return}switch(n&&T.debug({method:n,paramsPreview:JSON.stringify(r??{}).slice(0,300)},"notification"),n){case"item/agentMessage/delta":{let s=r?.text??r?.delta??r?.content??"";s&&this.handler?this.handler({type:"text.delta",sessionId:this.threadId,content:s}):s||T.debug({paramsKeys:Object.keys(r??{})},"agentMessage/delta with empty text");break}case"item/commandExecution/outputDelta":r?.output&&this.handler&&this.handler({type:"tool.result",sessionId:this.threadId,toolCallId:r.itemId??"",output:String(r.output)});break;case"item/started":{let s=Q(r?.item),i=Ps(s),o=s?Jl(s):null;i&&o&&(this.toolContextByCallId.set(i,o),this.handler&&this.handler({type:"tool.call",sessionId:this.threadId,toolName:o.toolName,input:o.input,toolCallId:i}));break}case"item/completed":{let s=Q(r?.item)??r,i=Ps(s);i&&this.toolContextByCallId.delete(i);break}case"turn/completed":{let s=Q(r?.usage),i=s?{inputTokens:Number(s.input_tokens??s.inputTokens??0),outputTokens:Number(s.output_tokens??s.outputTokens??0)}:void 0;T.info({threadId:this.threadId},"turn completed"),v.emit("session.done",{agent:"codex",sessionId:this.threadId,usage:i}),this.handler&&this.handler({type:"session.done",sessionId:this.threadId,usage:i});break}default:n&&T.debug({method:n},"unhandled notification");break}}};var B=require("fs/promises"),js=require("fs"),Gs=require("readline"),k=require("path"),pe=require("os");var Dp=new Set(["New session","Resumed session","Untitled session"]),Hp=["<environment_context>","<local-command-caveat>","<local-command-stdout>","<local-command-stderr>","<command-name>","<command-message>","<command-args>","# AGENTS.md instructions for "];function Fp(t){return t.replace(/\s+/g," ").trim()}function Jn(t){return typeof t!="string"?void 0:Fp(t)||void 0}function tc(t){let e=Jn(t);return e?/^[0-9a-f]{8,}$/i.test(e)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)||/^agent-[a-z0-9_-]{6,}$/i.test(e):!1}function ht(t){let e=Jn(t);return!e||Dp.has(e)||tc(e)}function Up(t){for(let e of t.replace(/\r/g,"").split(`
92
- `)){let n=Jn(e);if(n&&!qp(n)&&!Wp(n))return n}}function qp(t){return Hp.some(e=>t.startsWith(e))}function Wp(t){let e=t.replace(/^['"`]+/,"").replace(/['"`\\]+$/,"").trim();return!!(!e||/^(\/|~\/|\.\/|\.\.\/)/.test(e)||/^[A-Za-z]:\\/.test(e))}function jp(t){for(let e=0;e<t.length;e+=1){let n=t[e];if(n==="\u3002"||n==="\uFF01"||n==="\uFF1F"||n==="\uFF1B")return e+1;if(n==="."||n==="!"||n==="?"||n===";"){let r=t[e+1];if(!r||/\s/.test(r))return e+1}}return-1}function Ms(t,e=80){if(typeof t!="string")return;let n=Up(t);if(!n)return;let r=jp(n),i=(r>0?n.slice(0,r):n).replace(/[。!?;.!?;]+$/gu,"").trim();if(!(!i||tc(i)))return i.length<=e?i:`${i.slice(0,Math.max(1,e-3)).trimEnd()}...`}function We(t,e){for(let n of t){let r=Jn(n);if(!(!r||ht(r)))return r}return Ms(e)}var rc=require("child_process"),pt=require("fs/promises"),Te=require("path"),Ns=require("os"),sc=require("util");var Gp=(0,sc.promisify)(rc.execFile),$p=15e3,nn=null;function Os(){nn=null}function zp(t){return t.replace(/^['"]|['"]$/g,"")}function Vp(t){return(t.match(/"[^"]*"|'[^']*'|\S+/g)??[]).map(zp)}function Bs(t){let e=Vp(t);for(let n=0;n<e.length;n+=1){let r=e[n],s=(0,Te.basename)(r);if(s==="claude"||s==="codex")return{agent:s,args:e.slice(n+1)}}return null}function Yp(t,e){let n=Bs(e);if(!n||n.agent!==t)return null;let{args:r}=n;if(t==="claude"){for(let s=0;s<r.length;s+=1){let i=r[s];if((i==="--resume"||i==="--session-id")&&r[s+1]&&!r[s+1].startsWith("-"))return r[s+1];if(i.startsWith("--resume="))return i.slice(9);if(i.startsWith("--session-id="))return i.slice(13)}return null}if(r[0]!=="resume")return null;for(let s=1;s<r.length;s+=1){let i=r[s];if(!i.startsWith("-"))return i}return null}function Kn(t){switch(t){case"high":return 3;case"medium":return 2;default:return 1}}function Jp(t,e){return t==="claude"?e.includes("/.claude/projects/")&&!e.includes("/subagents/"):e.includes("/.codex/sessions/")}function Kp(t,e){let n=Bs(e);return!n||n.agent!==t?!1:n.args.includes("--continue")||n.args.includes("-c")}function Xp(t){let e=Yp(t.agent,t.command);if(e)return{agent:t.agent,pid:t.pid,cwd:t.cwd,command:t.command,sessionId:e,confidence:"high"};let n=[...new Set(t.sessionFiles)].filter(s=>Jp(t.agent,s));if(n.length!==1)return null;let r=gt(t.agent,n[0]);return r?{agent:t.agent,pid:t.pid,cwd:t.cwd,command:t.command,sessionId:r,confidence:"medium",sessionFilePath:n[0]}:null}function Zp(t,e){let n=t,r=e;return(Kn(e.confidence)>Kn(t.confidence)||Kn(e.confidence)===Kn(t.confidence)&&e.pid<t.pid)&&(n=e,r=t),{...n,cwd:n.cwd||r.cwd,title:n.title??r.title,sessionFilePath:n.sessionFilePath??r.sessionFilePath}}function Qp(t){let e=new Map;for(let n of t){let r=`${n.agent}:${n.sessionId}`,s=e.get(r);e.set(r,s?Zp(s,n):n)}return[...e.values()]}async function Ds(t,e){try{let{stdout:n}=await Gp(t,e,{maxBuffer:8388608});return n}catch{return""}}async function nc(t){if(!t.sessionFilePath)return t;let e=await rn(t.sessionFilePath,t.agent);return e?{...t,cwd:t.cwd||e.cwd,title:t.title??e.title}:null}async function eg(t){return(await Ds("lsof",["-a","-p",String(t),"-d","cwd","-Fn"])).split(`
93
- `).find(r=>r.startsWith("n"))?.slice(1).trim()??""}async function tg(t){let n=(await Ds("lsof",["-p",String(t),"-Fn"])).split(`
94
- `).filter(r=>r.startsWith("n")).map(r=>r.slice(1).trim()).filter(r=>r.endsWith(".jsonl")?r.includes("/.claude/projects/")||r.includes("/.codex/sessions/"):!1);return[...new Set(n)]}async function ng(){return(await Ds("pgrep",["-fal","(^|/)(claude|codex)( |$)|claude app-server|codex app-server"])).split(`
95
- `).map(e=>e.trim()).filter(Boolean).map(e=>{let n=e.match(/^(\d+)\s+(.*)$/);if(!n)return null;let r=Number(n[1]),s=n[2],i=Bs(s);return!Number.isFinite(r)||!i?null:{pid:r,command:s,agent:i.agent}}).filter(e=>!!e)}async function rg(){let t=await ng();return Promise.all(t.map(async e=>({pid:e.pid,agent:e.agent,command:e.command,cwd:await eg(e.pid),sessionFiles:await tg(e.pid)})))}function sg(t){return t.replace(/[^a-zA-Z0-9]/g,"-")}async function ig(t,e){if(!e)return null;try{if(t==="claude"){let o=(0,Te.join)((0,Ns.homedir)(),".claude","projects",sg(e)),l=(await(0,pt.readdir)(o).catch(()=>[])).filter(f=>f.endsWith(".jsonl"));if(l.length===0)return null;let c=null;if(await Promise.all(l.map(async f=>{let h=await(0,pt.stat)((0,Te.join)(o,f)).catch(()=>null);h&&(!c||h.mtimeMs>c.mtimeMs)&&(c={name:f,mtimeMs:h.mtimeMs})})),!c)return null;let u=(0,Te.join)(o,c.name),d=gt(t,u);return d?{sessionId:d,filePath:u}:null}let n=(0,Te.join)((0,Ns.homedir)(),".codex","sessions"),r=null;async function s(o){let a=await(0,pt.readdir)(o,{withFileTypes:!0}).catch(()=>[]);for(let l of a){let c=(0,Te.join)(o,l.name);if(l.isDirectory())await s(c);else if(l.name.endsWith(".jsonl")){let u=await(0,pt.stat)(c).catch(()=>null);if(!u||r&&u.mtimeMs<=r.mtimeMs)continue;let d=await rn(c,t);if(!d||d.cwd!==e)continue;r={path:c,mtimeMs:u.mtimeMs,sessionId:d.sessionId}}}}await s(n);let i=r;return i?{sessionId:i.sessionId,filePath:i.path}:null}catch{return null}}async function ic(){if(nn&&Date.now()<nn.expiresAt)return nn.value;let t=await rg(),e=await Promise.all(t.map(async r=>{let s=Xp(r);if(s)return nc(s);if(Kp(r.agent,r.command))return null;let i=await ig(r.agent,r.cwd);return i?nc({agent:r.agent,pid:r.pid,cwd:r.cwd,command:r.command,sessionId:i.sessionId,confidence:"low",sessionFilePath:i.filePath}):null})),n=Qp(e.filter(r=>r!==null));return nn={value:n,expiresAt:Date.now()+$p},n}var ac=L.child({module:"inventory"}),mt={daemonActive:3,externalRunning:2,idle:1},oc={high:3,medium:2,low:1};function lc(t,e){return e.lastActivityAt.localeCompare(t.lastActivityAt)||t.sessionId.localeCompare(e.sessionId)}function og(t,e){let n=t.runtime.needsAttention?1:0;return(e.runtime.needsAttention?1:0)-n||mt[e.runtime.state]-mt[t.runtime.state]||lc(t,e)}function ag(t,e){return mt[e.state]>mt[t.state]?e:mt[e.state]<mt[t.state]?t:oc[e.confidence]>oc[t.confidence]?e:t}function lg(t,e){return t?e?t.localeCompare(e)<=0?t:e:t:e}function cg(t,e){return t?e?t.localeCompare(e)>=0?t:e:t:e}function ug(t,e){return e?t?!(ht(e)&&!ht(t)):!0:!1}function Hs(t="high",e="resumeSession"){return{state:"idle",confidence:t,resumeMode:e}}function dg(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:["record"],runtime:Hs(),managed:t.managed}}function fg(t,e){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,title:t.title,createdAt:e,lastActivityAt:e,sources:["process"],runtime:{state:"externalRunning",confidence:t.confidence,resumeMode:"resumeSession",pid:t.pid,command:t.command}}}function hg(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:["daemon"],runtime:{state:"daemonActive",confidence:"high",resumeMode:"reuseDriver",needsAttention:t.needsAttention||void 0,isResponding:t.isResponding||void 0},managed:t.managed}}function pg(t,e){for(let n of e){let r=`${n.agent}:${n.sessionId}`,s=t.get(r);if(!s){t.set(r,{...n,sources:[...n.sources],runtime:{...n.runtime}});continue}let i=ug(s.title,n.title)?n.title:s.title,o=n.cwd||s.cwd,a=ag(s.runtime,n.runtime),l=s.sources.slice();for(let f of n.sources)l.includes(f)||l.push(f);let c=n.sources.includes("process"),u=s.sources.includes("process")&&!s.sources.includes("daemon"),d=c?s.lastActivityAt:u?n.lastActivityAt:cg(s.lastActivityAt,n.lastActivityAt);t.set(r,{...s,cwd:o,title:i,createdAt:lg(s.createdAt,n.createdAt),lastActivityAt:d,sources:l,runtime:a,managed:s.managed||n.managed})}}function gg(...t){let e=new Map;for(let n of t)pg(e,n);return[...e.values()]}function mg(t,e,n,r,s){let i=r?.toLowerCase(),o=t.filter(a=>{if(e&&a.agent!==e||n&&a.cwd!==n)return!1;if(i){let l=(a.title??"").toLowerCase(),c=(a.cwd??"").toLowerCase(),u=l.includes(i)||c.includes(i),d=s?.has(a.sessionId)??!1;if(!u&&!d)return!1}return!0});return r&&ac.info({total:t.length,filtered:o.length,search:r,contentMatchIds:s?.size??0},"filter applied"),o}function yg(t,e){if(!e)return 0;let n=0,r=t.length;for(;n<r;){let s=n+r>>1,i=t[s];(e.lastActivityAt.localeCompare(i.lastActivityAt)||i.sessionId.localeCompare(e.sessionId))>0?r=s:n=s+1}if(n>0){let s=t[n-1];if(s.lastActivityAt===e.lastActivityAt&&s.sessionId===e.sessionId)return n}return 0}function Sg(t,e,n,r,s,i,o){let a=i?1/0:Math.max(1,e||50),l=gg(t.sessionRecords.map(dg),t.scannedSessions,t.runningSessions.map(S=>fg(S,t.scannedAt)),t.activeSessions.map(hg)),c=t.deletedSessionIds?.size?l.filter(S=>!t.deletedSessionIds?.has(S.sessionId)):l,u=mg(c,r,s,i,o),d=u.filter(S=>S.runtime.state!=="idle"||S.managed).sort(og),f=u.filter(S=>S.runtime.state==="idle"&&!S.managed).sort(lc),h=yg(f,n),g=f.slice(h,h+a),y=h+g.length<f.length&&g.length>0?{lastActivityAt:g[g.length-1].lastActivityAt,sessionId:g[g.length-1].sessionId}:void 0;return{sessions:n?g:[...d,...g],nextCursor:y}}async function Xn(t){let e=new Date().toISOString(),[n,r,s]=await Promise.all([sn(t.agent,t.cwd),ic(),t.search?cc(t.search,t.agent):Promise.resolve(void 0)]);return t.search&&ac.info({search:t.search,contentMatches:s?.size??0,scanned:n.length,records:t.sessionRecords.length,active:t.activeSessions.length},"search results"),Sg({activeSessions:t.activeSessions,sessionRecords:t.sessionRecords,scannedSessions:n,runningSessions:r,scannedAt:e,deletedSessionIds:t.deletedSessionIds},t.limit,t.cursor,t.agent,t.cwd,t.search,s)}var Ae=L.child({module:"scanner"});function pc(t){let e=new Map;return{get(n){let r=e.get(n);if(r){if(Date.now()>r.expiresAt){e.delete(n);return}return r.value}},set(n,r){e.set(n,{value:r,expiresAt:Date.now()+t})},clear(){e.clear()}}}var gc=3e4,Us=pc(gc),qs=pc(gc),Zn=8;function $s(){Us.clear(),qs.clear()}function Ws(t){return t.replace(/[^a-zA-Z0-9]/g,"-")}async function Qn(t,e,n){if(t.length===0)return[];let r=Math.max(1,Math.min(e,t.length)),s=new Array(t.length),i=0;return await Promise.all(Array.from({length:r},async()=>{for(;;){let o=i;if(i+=1,o>=t.length)return;s[o]=await n(t[o],o)}})),s}function*mc(t,e){let n=0,r=0;for(;n<t.length&&r<e;){let s=t.indexOf(`
96
- `,n);s===-1&&(s=t.length);let i=t.substring(n,s);n=s+1,!(i.length===0||i.trim().length===0)&&(yield i,r+=1)}}var Fs=512*1024;async function yc(t,e){if(e<=Fs)return(0,B.readFile)(t,"utf-8");let n=await(0,B.open)(t,"r");try{let r=Buffer.alloc(Fs),{bytesRead:s}=await n.read(r,0,Fs,0);return r.toString("utf-8",0,s)}finally{await n.close()}}function zs(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>!e||typeof e!="object"?"":typeof e.text=="string"?e.text:typeof e.content=="string"?e.content:"").join(""):""}function Sc(t){return t?.type==="response_item"&&t.payload?.type==="message"&&t.payload.role==="user"?zs(t.payload.content):t?.type==="event_msg"&&t.payload?.type==="user_message"&&typeof t.payload.message=="string"?t.payload.message:""}function Vs(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>!e||typeof e!="object"||e.type!=="text"?"":typeof e.text=="string"?e.text:"").join(""):""}var _g=["<task-notification>","<local-command-caveat>","<local-command-stdout>","<local-command-stderr>","<command-name>","<command-message>","<command-args>","<system-reminder>","<environment_context>","# AGENTS.md instructions for "];function vg(t,e){if(t?.isMeta===!0)return!0;let n=e.trim();return n?_g.some(r=>n.startsWith(r)):!1}function Ys(t){if(t?.type!=="user"||t.message?.role!=="user")return"";let e=Vs(t.message.content);return vg(t,e)?"":e}function _c(t){let e=t.trim();return e.startsWith("# AGENTS.md instructions for ")||e.startsWith("<environment_context>")}function vc(t,e="scanner"){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:[e],runtime:Hs()}}function gt(t,e){let n=(0,k.basename)(e,".jsonl");return t==="claude"?n||null:n.match(/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$/i)?.[1]??null}async function wg(t,e){let n=await yc(t,e),r=mc(n,64),s="",i="",o,a,l;for(let c of r){let u;try{u=JSON.parse(c)}catch{continue}if(!s&&typeof u.cwd=="string"&&(s=u.cwd),!i&&typeof u.sessionId=="string"&&(i=u.sessionId),o||(o=We([u.customTitle,u.summary])),!l){let d=Ys(u),f=We([],d);f&&(a=d,l=f)}if(s&&(o||l))break}return s?{sessionId:i||gt("claude",t)||(0,k.basename)(t,".jsonl"),cwd:s,title:o??l??We([],a)}:null}async function bg(t,e){let n=await yc(t,e),r=mc(n,96),s="",i="",o,a,l;for(let c of r){let u;try{u=JSON.parse(c)}catch{continue}if(s||(s=u.payload?.cwd??u.cwd??""),i||(i=u.payload?.id??u.id??""),o||(o=We([u.payload?.title,u.title])),!l){let d=Sc(u),f=d&&!_c(d)?We([],d):void 0;f&&(a=d,l=f)}if(s&&(o||l))break}return s?{sessionId:i||gt("codex",t)||(0,k.basename)(t,".jsonl"),cwd:s,title:o??l??We([],a)}:null}async function rn(t,e){let n=await(0,B.stat)(t).catch(()=>null);if(!n)return null;try{let r=n.size;if(e==="claude"){let i=await wg(t,r);return i?{sessionId:i.sessionId,agent:e,cwd:i.cwd,title:i.title,createdAt:new Date(n.birthtimeMs).toISOString(),lastActivityAt:new Date(n.mtimeMs).toISOString(),filePath:t}:null}let s=await bg(t,r);return s?{sessionId:s.sessionId,agent:e,cwd:s.cwd,title:s.title,createdAt:new Date(n.birthtimeMs).toISOString(),lastActivityAt:new Date(n.mtimeMs).toISOString(),filePath:t}:null}catch{return null}}async function uc(t){let e=(0,k.join)((0,pe.homedir)(),".claude","projects");try{let n;t?n=[Ws(t)]:n=(await(0,B.readdir)(e,{withFileTypes:!0})).filter(a=>a.isDirectory()).map(a=>a.name);let r=[];for(let o of n){let a=(0,k.join)(e,o),l=await(0,B.readdir)(a).catch(()=>[]);for(let c of l)c.endsWith(".jsonl")&&r.push((0,k.join)(a,c))}return(await Qn(r,Zn,o=>rn(o,"claude"))).filter(o=>o!==null).map(o=>vc(o)).sort((o,a)=>a.lastActivityAt.localeCompare(o.lastActivityAt))}catch(n){return Ae.warn({error:String(n)},"failed to list claude sessions"),[]}}async function dc(t){let e=(0,k.join)((0,pe.homedir)(),".codex","sessions");try{let n=await(0,B.readdir)(e).catch(()=>[]),r=[];for(let o of n){let a=(0,k.join)(e,o),l=await(0,B.readdir)(a).catch(()=>[]);for(let c of l){let u=(0,k.join)(a,c),d=await(0,B.readdir)(u).catch(()=>[]);for(let f of d){let h=(0,k.join)(u,f),g=await(0,B.readdir)(h).catch(()=>[]);for(let p of g)p.endsWith(".jsonl")&&r.push((0,k.join)(h,p))}}}return(await Qn(r,Zn,o=>rn(o,"codex"))).filter(o=>o!==null).filter(o=>!t||o.cwd===t).map(o=>vc(o)).sort((o,a)=>a.lastActivityAt.localeCompare(o.lastActivityAt))}catch(n){return Ae.warn({error:String(n)},"failed to list codex sessions"),[]}}async function sn(t,e){let r=`list:${(0,pe.homedir)()}:${t??"all"}:${e??""}`,s=Us.get(r);if(s)return s;let i;if(t==="claude")i=await uc(e);else if(t==="codex")i=await dc(e);else{let[o,a]=await Promise.all([uc(e),dc(e)]);i=[...o,...a].sort((l,c)=>c.lastActivityAt.localeCompare(l.lastActivityAt))}return Us.set(r,i),i}async function cc(t,e){let r=`search:${(0,pe.homedir)()}:${t}:${e??"all"}`,s=qs.get(r);if(s)return s;let i=new Set,o=t.toLowerCase();async function a(){let c=(0,k.join)((0,pe.homedir)(),".claude","projects");try{let u=await(0,B.readdir)(c,{withFileTypes:!0}),d=[];for(let h of u){if(!h.isDirectory())continue;let g=(0,k.join)(c,h.name),p=await(0,B.readdir)(g).catch(()=>[]);for(let y of p)y.endsWith(".jsonl")&&d.push((0,k.join)(g,y))}let f=await Qn(d,Zn,h=>fc(h,o,"claude"));for(let h of f)h&&i.add(h)}catch(u){Ae.warn({error:String(u)},"failed to search claude files")}}async function l(){let c=(0,k.join)((0,pe.homedir)(),".codex","sessions");try{let u=[];async function d(h){let g=await(0,B.readdir)(h,{withFileTypes:!0}).catch(()=>[]);for(let p of g){let y=(0,k.join)(h,p.name);p.isDirectory()?await d(y):p.name.endsWith(".jsonl")&&u.push(y)}}await d(c);let f=await Qn(u,Zn,h=>fc(h,o,"codex"));for(let h of f)h&&i.add(h)}catch(u){Ae.warn({error:String(u)},"failed to search codex files")}}return e==="claude"?await a():e==="codex"?await l():await Promise.all([a(),l()]),qs.set(r,i),i}async function fc(t,e,n){let r=(0,js.createReadStream)(t,{encoding:"utf-8"}),s=(0,Gs.createInterface)({input:r,crlfDelay:1/0}),i=n==="claude"?Ig:xg,o="",a=!1;try{for await(let l of s){if(!l.trim())continue;let c;try{c=JSON.parse(l)}catch{continue}if(o||(n==="claude"?typeof c.sessionId=="string"&&(o=c.sessionId):o=c.payload?.id??c.id??""),!a){let u=i(c);u&&u.toLowerCase().includes(e)&&(a=!0)}if(o&&a)break}}finally{s.close(),r.destroy()}return a?o||gt(n,t):null}function Ig(t){return t?.type==="user"&&t.message?.role==="user"?Ys(t):t?.type==="assistant"&&t.message?.role==="assistant"?Vs(t.message.content):""}function xg(t){if(t?.type==="response_item"&&t.payload?.type==="message"){let n=t.payload.role;if(n==="user"||n==="assistant")return zs(t.payload.content)}let e=Sc(t);return e||""}async function hc(t,e){let n=(0,js.createReadStream)(t,{encoding:"utf-8"}),r=(0,Gs.createInterface)({input:n,crlfDelay:1/0});try{for await(let s of r){if(!s.trim())continue;let i;try{i=JSON.parse(s)}catch{continue}if(e(i))break}}finally{r.close(),n.destroy()}}async function on(t,e,n){let r=[];if(e==="claude"){let s=(0,k.join)((0,pe.homedir)(),".claude","projects");try{let i=n?[Ws(n)]:[],o=await(0,B.readdir)(s).catch(()=>[]),a=n?[...i,...o.filter(l=>l!==Ws(n))]:o;for(let l of a){let c=(0,k.join)(s,l,`${t}.jsonl`);try{if(await hc(c,u=>{if(u.type==="user"&&u.message?.role==="user"){let d=Ys(u);d&&r.push({role:"user",content:d})}else if(u.type==="assistant"&&u.message?.role==="assistant"){let d=Vs(u.message.content);d&&r.push({role:"assistant",content:d})}}),r.length>0)break}catch(u){u.code!=="ENOENT"&&Ae.warn({error:String(u)},"failed to read claude session file")}}}catch(i){Ae.warn({error:String(i)},"failed to read claude session history")}}else if(e==="codex"){let s=(0,k.join)((0,pe.homedir)(),".codex","sessions");try{let i=await wc(s,t);i&&await hc(i,o=>{if(o.type!=="response_item"||o.payload?.type!=="message")return;let a=o.payload.role;if(a!=="user"&&a!=="assistant")return;let l=zs(o.payload.content);l&&(a==="user"&&_c(l)||r.push({role:a,content:l}))})}catch(i){Ae.warn({error:String(i)},"failed to read codex session history")}}return r}async function wc(t,e){try{let n=await(0,B.readdir)(t,{withFileTypes:!0});for(let r of n){let s=(0,k.join)(t,r.name);if(r.isDirectory()){let i=await wc(s,e);if(i)return i}else if(r.name.includes(e)&&r.name.endsWith(".jsonl"))return s}}catch(n){Ae.warn({error:String(n)},"failed to walk codex sessions dir")}return null}var yt=require("fs"),xc=require("path");var Eg=500,bc=200;function Tg(t){if(!Array.isArray(t))return[];let e=t.filter(n=>typeof n=="string"&&n.length>0);return e.length<=bc?e:e.slice(-bc)}function Ag(t){if(!Array.isArray(t))return[];let e=[];for(let n of t)typeof n!="string"||n.length===0||e.includes(n)||e.push(n);return e}function Ic(t){return{...t,lastActivityAt:t.lastActivityAt??t.createdAt,acceptedClientMessageIds:Tg(t.acceptedClientMessageIds)}}function kg(t){if(Array.isArray(t))return{records:t.map(Ic),deletedSessionIds:[]};if(t&&typeof t=="object"){let e=t;return{records:Array.isArray(e.records)?e.records.map(Ic):[],deletedSessionIds:Ag(e.deletedSessionIds)}}return{records:[],deletedSessionIds:[]}}var er=class{records;deletedSessionIds;debounceTimer=null;constructor(){let e=this.loadFromDisk();this.records=e.records,this.deletedSessionIds=new Set(e.deletedSessionIds)}getAll(){return this.records}getDeletedSessionIds(){return[...this.deletedSessionIds]}find(e){return this.records.find(n=>n.sessionId===e)}isDeleted(e){return this.deletedSessionIds.has(e)}upsert(e){this.deletedSessionIds.delete(e.sessionId);let n=this.records.findIndex(r=>r.sessionId===e.sessionId);n>=0?this.records[n]=e:this.records.unshift(e),this.scheduleSave()}remove(e){this.records=this.records.filter(n=>n.sessionId!==e),this.deletedSessionIds.add(e),this.scheduleSave()}flushSync(){this.debounceTimer&&(clearTimeout(this.debounceTimer),this.debounceTimer=null),this.saveToDisk()}scheduleSave(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{this.debounceTimer=null,this.saveToDisk()},Eg)}loadFromDisk(){try{let e=(0,yt.readFileSync)(Hn,"utf-8");return kg(JSON.parse(e))}catch{}return{records:[],deletedSessionIds:[]}}saveToDisk(){(0,yt.mkdirSync)((0,xc.dirname)(Hn),{recursive:!0}),(0,yt.writeFileSync)(Hn,JSON.stringify({records:this.records,deletedSessionIds:[...this.deletedSessionIds]},null,2))}};var Ec=require("path"),Tc=require("os");function tr(t){return t=t.replace(/^~/,"~"),t.startsWith("~/")||t==="~"?(0,Ec.join)((0,Tc.homedir)(),t.slice(2)):t}var St=require("fs"),Ac=require("path");function Cg(t){return!!(t&&typeof t=="object"&&typeof t.deviceId=="string"&&typeof t.pushToken=="string"&&t.platform==="expo"&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"&&(typeof t.lastSentAt=="string"||typeof t.lastSentAt>"u"))}function Rg(t){try{let e=(0,St.readFileSync)(t,"utf8"),n=JSON.parse(e);return Array.isArray(n)?n.filter(Cg):[]}catch{return[]}}function nr(t,e){(0,St.mkdirSync)((0,Ac.dirname)(t),{recursive:!0}),(0,St.writeFileSync)(t,JSON.stringify(e,null,2)+`
97
- `,"utf8")}var rr=class{constructor(e=El){this.pushSubscriptionsPath=e;this.records=Rg(e)}records;list(){return this.records.map(e=>({...e}))}listTokens(){return this.records.map(e=>e.pushToken)}count(){return this.records.length}register(e,n){let r=new Date().toISOString(),s=this.records.find(o=>o.deviceId===e),i={deviceId:e,pushToken:n,platform:"expo",createdAt:s?.createdAt??r,updatedAt:r,...s?.lastSentAt?{lastSentAt:s.lastSentAt}:{}};this.records=[i,...this.records.filter(o=>o.deviceId!==e&&o.pushToken!==n)],nr(this.pushSubscriptionsPath,this.records)}unregister(e,n){let r=this.records.filter(s=>!(s.deviceId===e&&s.pushToken===n));return r.length===this.records.length?!1:(this.records=r,nr(this.pushSubscriptionsPath,this.records),!0)}markSent(e){if(e.length===0)return;let n=new Set(e),r=new Date().toISOString(),s=!1;for(let i of this.records)n.has(i.pushToken)&&(i.lastSentAt=r,s=!0);s&&nr(this.pushSubscriptionsPath,this.records)}reset(){this.records=[],nr(this.pushSubscriptionsPath,this.records)}};var je=L.child({module:"push"}),Pg="https://exp.host/--/api/v2/push/send",_t=new rr;function Lg(t,e){if(!Array.isArray(t.data))return{successfulTokens:[],ticketErrors:[]};let n=[],r=[];for(let[s,i]of t.data.entries()){let o=e[s];if(!(!o||!i||typeof i!="object")){if(i.status==="ok"){n.push(o);continue}r.push({token:o,ticket:i})}}return{successfulTokens:n,ticketErrors:r}}function Js(t,e){_t.register(t,e),je.info({deviceId:t,token:e,total:_t.count()},"push token registered")}function Ks(t,e){let n=_t.unregister(t,e);je.info({deviceId:t,token:e,total:_t.count(),removed:n},"push token unregistered")}async function kc(t,e,n){let r=_t.listTokens();if(r.length===0)return;let s=r.map(i=>({to:i,sound:"default",title:t,body:e,data:n}));try{let i=await fetch(Pg,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)});if(!i.ok)je.error({status:i.status,statusText:i.statusText},"push send failed");else{let o=await i.json().catch(()=>null);if(!o){je.error({count:s.length},"push send returned unreadable response");return}let{successfulTokens:a,ticketErrors:l}=Lg(o,r);for(let{token:c,ticket:u}of l)je.error({token:c,message:u.message,details:u.details,ticketStatus:u.status},"push ticket rejected");a.length>0&&(je.debug({count:a.length},"push sent"),_t.markSent(a))}}catch(i){je.error({error:String(i)},"push send error")}}var w=L.child({module:"manager"}),Mg="Done.",Cc=180,ir=200;function sr(...t){let e=[];for(let n of t)if(n?.length)for(let r of n)!r||e.includes(r)||(e.push(r),e.length>ir&&e.splice(0,e.length-ir));return e}function ke(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,approvalMode:t.approvalMode,acceptedClientMessageIds:sr(t.acceptedClientMessageIds),title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,managed:t.managed}}function Rc(t){let e=t.pendingApproval?.requestId;return typeof e=="string"&&Vn(e)}function Ng(t){return t.startsWith(As)}function Pc(t){return t?{continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow"}}:{continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"deny",permissionDecisionReason:"Denied from Vibelet"}}}var or=class{constructor(e=kc){this.pushSender=e;this.startIdleSweep()}sessions=new Map;claudeHookSessions=new Map;store=new er;idleSweepInterval=null;startIdleSweep(){_.idleTimeoutMs<=0&&_.turnStallTimeoutMs<=0||(this.idleSweepInterval=setInterval(()=>this.sweepIdleSessions(),6e4),this.idleSweepInterval.unref())}stopIdleSweep(){this.idleSweepInterval&&(clearInterval(this.idleSweepInterval),this.idleSweepInterval=null)}sweepIdleSessions(){let e=Date.now(),n=_.idleTimeoutMs,r=_.turnStallTimeoutMs;if(n<=0&&r<=0)return;let s=3600*1e3;for(let[i,o]of this.sessions){if(!o.active&&!o.driver){if(o.clients.size===0){let l=e-o.lastActivityTs;l>=s&&(w.info({sessionId:o.sessionId,inactiveMs:l},"removing inactive session from memory"),b.increment("session.cleanup",{reason:"inactive"}),this.unregisterClaudeHookSession(o),this.sessions.delete(i))}continue}if(!o.active||!o.driver)continue;let a=e-o.lastActivityTs;if(o.isResponding){if(r<=0||o.pendingApproval||a<r)continue;w.warn({sessionId:o.sessionId,agent:o.agent,inactiveMs:a,turnStallTimeoutMs:r},"stopping stalled driver"),b.increment("driver.stall_timeout",{agent:o.agent}),v.emit("driver.stall_timeout",{sessionId:o.sessionId,agent:o.agent,idleMs:a}),o.isResponding=!1,o.currentReplyText="",this.broadcast(o.sessionId,{type:"error",sessionId:o.sessionId,message:`Agent stopped responding for over ${Math.ceil(r/1e3)}s. Send a new message to continue.`}),o.driver.stop(),o.active=!1,o.driver=null,this.updateGauges(),this.touchSession(o.sessionId);continue}n<=0||a<n||(w.info({sessionId:o.sessionId,agent:o.agent,idleMs:a,timeoutMs:n},"stopping idle driver"),b.increment("driver.idle_timeout",{agent:o.agent}),v.emit("driver.idle_timeout",{sessionId:o.sessionId,agent:o.agent,idleMs:a}),o.driver.stop(),o.active=!1,o.driver=null,this.updateGauges(),this.touchSession(o.sessionId))}}bindDriverLifecycle(e,n,r,s){e.driver?.onMessage(i=>{if(w.debug({agent:n,context:r,msgType:i.type,sessionId:e.sessionId},"driver message received"),i.type!=="response"&&i.sessionId&&i.sessionId!==e.sessionId&&!this.sessions.has(i.sessionId)){let o=e.sessionId;w.info({oldSessionId:o,newSessionId:i.sessionId},"session ID updated"),this.store.remove(o),this.sessions.delete(o),e.sessionId=i.sessionId,this.sessions.set(i.sessionId,e),this.store.upsert(ke(e)),s&&this.reply(s,`id_update_${Date.now()}`,!0,{sessionId:i.sessionId,oldSessionId:o})}(i.type==="session.done"||i.type==="session.interrupted")&&(e.isResponding=!1,(i.type==="session.interrupted"||!Rc(e))&&(e.pendingApproval=void 0)),i.type==="approval.request"&&(e.isResponding=!1,e.pendingApproval={requestId:i.requestId,toolName:i.toolName,input:i.input,description:i.description}),n==="claude"&&i.type==="approval.request"&&Vn(i.requestId)&&(e.lastUserMessage?e.syntheticApprovalRetries[i.requestId]={message:e.lastUserMessage,toolName:i.toolName}:w.warn({sessionId:e.sessionId,requestId:i.requestId},"missing lastUserMessage for synthetic approval retry")),this.touchSession(e.sessionId,i.type!=="text.delta"),this.broadcast(e.sessionId,i)}),e.driver?.onExit?.(i=>{w.info({agent:n,context:r,exitCode:i,sessionId:e.sessionId},"driver exited"),v.emit("driver.exit",{sessionId:e.sessionId,agent:n,exitCode:i}),b.increment("driver.exit",{agent:n,abnormal:i&&i!==0?"true":"false"});let o=i===0&&Rc(e);this.resolvePendingClaudeHookApprovals(e),e.active=!1,e.driver=null,e.isResponding=!1,e.currentReplyText="",o||(e.pendingApproval=void 0),this.updateGauges(),this.touchSession(e.sessionId)})}configureDriverBeforeStart(e,n,r){if(e!=="claude"||!(n instanceof tn))return;let s=r??(0,Xs.randomUUID)().replace(/-/g,"");return n.configureHookBridge(_.port,s),s}registerClaudeHookSession(e){e.agent!=="claude"||!e.claudeHookSecret||this.claudeHookSessions.set(e.claudeHookSecret,e)}unregisterClaudeHookSession(e){if(e.agent!=="claude"||!e.claudeHookSecret)return;this.claudeHookSessions.get(e.claudeHookSecret)===e&&this.claudeHookSessions.delete(e.claudeHookSecret)}resolvePendingClaudeHookApprovals(e,n=en){for(let r of e.pendingClaudeHookApprovals.values())r.resolve(n);e.pendingClaudeHookApprovals.clear(),e.pendingApproval&&Ng(e.pendingApproval.requestId)&&(e.pendingApproval=void 0)}resolveClaudeHookSession(e){if(!e)return;let n=e.trim();if(n)return this.claudeHookSessions.get(n)}handleClaudeSessionStartHook(e,n){let r=this.resolveClaudeHookSession(e);return r?(this.touchSession(r.sessionId),!0):(w.warn({secretPresent:!!e},"received Claude session-start hook for unknown session"),!1)}async handleClaudePermissionHook(e,n){let r=this.resolveClaudeHookSession(e);if(!r||r.agent!=="claude"||!r.active)return w.warn({secretPresent:!!e},"received Claude permission hook for unknown or inactive session"),en;if(r.approvalMode==="autoApprove")return Pc(!0);let i=(typeof n.tool_name=="string"?n.tool_name:typeof n.toolName=="string"?n.toolName:"").trim();if(!i)return en;let o=n.tool_input??n.toolInput,a=o&&typeof o=="object"&&!Array.isArray(o)?o:{},l=typeof n.tool_use_id=="string"?n.tool_use_id:typeof n.toolUseId=="string"?n.toolUseId:"",c=`${As}${l.trim()||(0,Xs.randomUUID)()}`,u=r.pendingClaudeHookApprovals.get(c);if(u)return u.promise;let d=`Claude requested permissions to use ${i}.`,f,h=new Promise(g=>{f=g});return r.pendingClaudeHookApprovals.set(c,{requestId:c,promise:h,resolve:g=>{r.pendingClaudeHookApprovals.delete(c),f(g)}}),r.pendingApproval={requestId:c,toolName:i,input:a,description:d},v.emit("approval.request",{agent:"claude",sessionId:r.sessionId,toolName:i}),this.touchSession(r.sessionId),this.broadcast(r.sessionId,{type:"approval.request",sessionId:r.sessionId,requestId:c,toolName:i,input:a,description:d}),h}async resolveReconnectSession(e,n,r){if(this.isDeletedSession(e))return;let s=new Date().toISOString(),i=r?.agent,o=r?.cwd??"",a=r?.approvalMode,l=r?.title??"",c=r?.createdAt??s,u=r?.lastActivityAt??s,d=sr(r?.acceptedClientMessageIds),f=r?"memory":"client",h=this.store.find(e);if(h)i=h.agent,o=h.cwd||o,a=h.approvalMode??a,l=h.title||l,c=h.createdAt||c,u=h.lastActivityAt||u,d=sr(h.acceptedClientMessageIds,d),f="record";else if(!r){let p=(await sn(n??i)).find(y=>y.sessionId===e);p&&(i=p.agent,o=p.cwd||o,l=p.title??l,c=p.createdAt,u=p.lastActivityAt,f="scanner")}if(!i&&n&&(i=n,f=r?"memory":"client"),!!i)return{agent:i,cwd:o,approvalMode:a,title:l,createdAt:c,lastActivityAt:u,acceptedClientMessageIds:d,source:f,managed:r?.managed??h?.managed}}resendPendingApproval(e,n){if(!e.pendingApproval||n.readyState!==1)return;let{requestId:r,toolName:s,input:i,description:o}=e.pendingApproval;w.info({sessionId:e.sessionId,requestId:r,toolName:s},"resending pending approval to reconnected client");let a={type:"approval.request",sessionId:e.sessionId,requestId:r,toolName:s,input:i,description:o};n.send(JSON.stringify(a))}buildPushBody(e){let n=e.replace(/\s+/g," ").trim();return n?n.length<=Cc?n:`${n.slice(0,Math.max(1,Cc-3)).trimEnd()}...`:Mg}currentPartialReplyText(e){return e?.isResponding&&e.currentReplyText.trim()?e.currentReplyText:void 0}touchSession(e,n=!0){let r=new Date().toISOString(),s=this.sessions.get(e);if(s){s.lastActivityAt=r,s.lastActivityTs=Date.now(),n&&this.store.upsert(ke(s));return}let i=this.store.find(e);i&&this.store.upsert({...i,lastActivityAt:r})}updateGauges(){let e=0;for(let n of this.sessions.values())n.active&&e++;b.gauge("session.active",e)}activeSessionSnapshots(){let e=[];for(let n of this.sessions.values())n.sessionId.startsWith("pending_")||n.active&&e.push({sessionId:n.sessionId,agent:n.agent,cwd:n.cwd,title:n.title,createdAt:n.createdAt,lastActivityAt:n.lastActivityAt,...n.pendingApproval?{needsAttention:!0}:{},...n.isResponding?{isResponding:!0}:{},managed:n.managed});return e}getDeletedSessionIds(){return new Set(this.store.getDeletedSessionIds())}isDeletedSession(e){return this.store.isDeleted(e)}async listRecentSessionsForContinue(e,n){return sn(e,n)}async handle(e,n){switch(w.debug({action:n.action},"handling client message"),n.action){case"session.create":await this.createSession(e,n.id,n.agent,n.cwd,n.approvalMode,n.continueSession);break;case"session.resume":await this.resumeSession(e,n.id,n.sessionId,n.agent);break;case"session.send":await this.sendMessage(e,n.id,n.sessionId,n.message,n.agent,n.clientMessageId);break;case"session.approve":await this.approve(e,n.id,n.sessionId,n.requestId,n.approved);break;case"session.setApprovalMode":await this.setApprovalMode(e,n.id,n.sessionId,n.approvalMode);break;case"session.interrupt":this.interrupt(e,n.id,n.sessionId);break;case"session.stop":this.stopSession(e,n.id,n.sessionId);break;case"session.delete":this.deleteSession(e,n.id,n.sessionId);break;case"session.history":await this.sendHistory(e,n.id,n.sessionId,n.agent);break;case"reconnect.snapshot":await this.sendReconnectSnapshot(e,n.id,n.agent,n.cwd,n.search,n.activeSessionId,n.activeAgent);break;case"sessions.list":await this.listSessions(e,n.id,n.agent,n.cwd,n.search,n.limit,n.cursor);break}}removeClient(e){for(let n of this.sessions.values())n.clients.delete(e)}shutdown(){this.stopIdleSweep();for(let e of this.sessions.values()){try{this.resolvePendingClaudeHookApprovals(e),e.driver?.stop()}catch(n){w.error({sessionId:e.sessionId,agent:e.agent,error:String(n)},"failed to stop session on shutdown")}e.active=!1,e.driver=null,e.clients.clear(),this.unregisterClaudeHookSession(e)}this.claudeHookSessions.clear(),this.store.flushSync()}getActiveSessionCount(){let e=0;for(let n of this.sessions.values())n.active&&e++;return e}prewarmCaches(){Xn({limit:50,activeSessions:this.activeSessionSnapshots(),sessionRecords:this.store.getAll(),deletedSessionIds:this.getDeletedSessionIds()}).catch(()=>{})}getDriverCounts(){let e={};for(let n of this.sessions.values())n.active&&(e[n.agent]=(e[n.agent]??0)+1);return e}async createSession(e,n,r,s,i,o){s=tr(s),w.info({agent:r,cwd:s,approvalMode:i,continueSession:o},"creating session");try{if(!(await(0,Lc.stat)(s)).isDirectory()){this.reply(e,n,!1,void 0,`Path is not a directory: ${s}`);return}}catch{this.reply(e,n,!1,void 0,`Directory does not exist: ${s}`);return}if(o)try{let l=(await this.listRecentSessionsForContinue(r,s)).find(c=>!this.isDeletedSession(c.sessionId));if(l)return w.info({sessionId:l.sessionId,cwd:s},"continue mode: resuming last session"),this.resumeSession(e,n,l.sessionId,r,s,i);w.info("continue mode: no previous sessions found, creating new")}catch(a){w.warn({error:String(a)},"continue mode: error finding sessions, creating new")}try{let a=b.startTimer("driver.spawn"),l=this.createDriver(r),c=this.configureDriverBeforeStart(r,l),u=await l.start(s,void 0,i),d=a();w.info({sessionId:u,agent:r,spawnMs:d},"session created"),b.increment("session.create",{agent:r}),v.emit("session.create",{sessionId:u,agent:r,cwd:s,approvalMode:i});let f={sessionId:u,agent:r,cwd:s,approvalMode:i,driver:l,clients:new Set([e]),title:"New session",createdAt:new Date().toISOString(),lastActivityAt:new Date().toISOString(),active:!0,lastActivityTs:Date.now(),isResponding:!1,currentReplyText:"",acceptedClientMessageIds:[],syntheticApprovalRetries:{},managed:!0,claudeHookSecret:c,pendingClaudeHookApprovals:new Map};this.sessions.set(u,f),this.registerClaudeHookSession(f),this.store.upsert(ke(f)),this.updateGauges(),$s(),Os(),this.bindDriverLifecycle(f,r,"",e),this.reply(e,n,!0,{sessionId:u})}catch(a){w.error({agent:r,cwd:s,error:String(a)},"createSession error"),this.reply(e,n,!1,void 0,String(a))}}async resumeSession(e,n,r,s,i,o){if(this.isDeletedSession(r)){this.reply(e,n,!1,void 0,"Session not found");return}let a=this.sessions.get(r);if(a&&a.active){a.clients.add(e),this.touchSession(a.sessionId);let f=await on(r,s,a.cwd),h=this.currentPartialReplyText(a);if(f.length>0||h||a.approvalMode){let g={type:"session.history",sessionId:r,messages:f,isResponding:a.isResponding||void 0,partialReplyText:h,approvalMode:a.approvalMode};e.send(JSON.stringify(g))}this.resendPendingApproval(a,e),this.reply(e,n,!0,{sessionId:r});return}let l=this.store.find(r),c=i||l?.cwd||"",u=o??l?.approvalMode,d=l?.title??"Resumed session";try{let f=b.startTimer("driver.spawn"),h=this.createDriver(s),g=this.configureDriverBeforeStart(s,h),p=await h.start(c,r,u),y=f();w.info({sessionId:p,agent:s,spawnMs:y},"session resumed"),b.increment("session.resume",{agent:s}),v.emit("session.resume",{sessionId:p,agent:s,cwd:c});let S={sessionId:p,agent:s,cwd:c,approvalMode:u,driver:h,clients:new Set([e]),title:d,createdAt:l?.createdAt??new Date().toISOString(),lastActivityAt:new Date().toISOString(),active:!0,lastActivityTs:Date.now(),isResponding:!1,currentReplyText:"",acceptedClientMessageIds:l?.acceptedClientMessageIds??[],syntheticApprovalRetries:{},managed:l?.managed,claudeHookSecret:g,pendingClaudeHookApprovals:new Map};this.sessions.set(p,S),this.registerClaudeHookSession(S),this.store.upsert(ke(S)),this.updateGauges(),this.bindDriverLifecycle(S,s," (resumed)",e);let G=await on(r,s,c);if(G.length>0){w.info({sessionId:r,historyCount:G.length},"sending history messages");let re={type:"session.history",sessionId:p,messages:G,approvalMode:u};e.send(JSON.stringify(re))}this.reply(e,n,!0,{sessionId:p})}catch(f){this.reply(e,n,!1,void 0,String(f))}}hasAcceptedClientMessage(e,n){return e.acceptedClientMessageIds.includes(n)}rememberAcceptedClientMessage(e,n){this.hasAcceptedClientMessage(e,n)||(e.acceptedClientMessageIds.push(n),e.acceptedClientMessageIds.length>ir&&e.acceptedClientMessageIds.splice(0,e.acceptedClientMessageIds.length-ir))}async sendMessage(e,n,r,s,i,o){if(this.isDeletedSession(r)){this.reply(e,n,!1,void 0,"Session not found");return}let a=this.sessions.get(r);if(!a||!a.driver){let l=await this.resolveReconnectSession(r,i,a);if(!l){w.warn({sessionId:r},"session not found in records or scanner"),this.reply(e,n,!1,void 0,"Session not found");return}w.info({sessionId:r,agent:l.agent,source:l.source},"auto-reconnecting session"),b.increment("session.reconnect",{agent:l.agent,source:l.source}),v.emit("session.reconnect",{sessionId:r,agent:l.agent,source:l.source});try{let c=this.createDriver(l.agent),u=this.configureDriverBeforeStart(l.agent,c,a?.claudeHookSecret);await c.start(l.cwd,r,l.approvalMode),a?(a.approvalMode=l.approvalMode,a.driver=c,a.active=!0,a.clients.add(e),a.lastActivityAt=l.lastActivityAt,a.lastActivityTs=Date.now(),a.isResponding=!1,a.currentReplyText="",a.acceptedClientMessageIds=sr(a.acceptedClientMessageIds,l.acceptedClientMessageIds),a.syntheticApprovalRetries=a.syntheticApprovalRetries??{},a.claudeHookSecret=u??a.claudeHookSecret,a.pendingClaudeHookApprovals=a.pendingClaudeHookApprovals??new Map):(a={sessionId:r,agent:l.agent,cwd:l.cwd,approvalMode:l.approvalMode,driver:c,clients:new Set([e]),title:l.title,createdAt:l.createdAt,lastActivityAt:l.lastActivityAt,active:!0,lastActivityTs:Date.now(),isResponding:!1,currentReplyText:"",acceptedClientMessageIds:l.acceptedClientMessageIds,syntheticApprovalRetries:{},managed:l.managed,claudeHookSecret:u,pendingClaudeHookApprovals:new Map},this.sessions.set(r,a)),this.registerClaudeHookSession(a),this.bindDriverLifecycle(a,l.agent," (reconnected)"),this.store.upsert(ke(a)),this.updateGauges()}catch(c){this.reply(e,n,!1,void 0,`Failed to reconnect: ${c}`);return}}if(a.clients.add(e),o&&this.hasAcceptedClientMessage(a,o)){this.reply(e,n,!0,{sessionId:r,clientMessageId:o,duplicate:!0});return}if(w.info({sessionId:r,clients:a.clients.size,hasDriver:!!a.driver,active:a.active},"sending message"),v.emit("session.send",{sessionId:r,agent:a.agent,messagePreview:s.slice(0,100)}),ht(a.title)){let l=Ms(s,50);l&&l!==a.title&&(a.title=l),this.store.upsert(ke(a))}o&&this.rememberAcceptedClientMessage(a,o),this.touchSession(a.sessionId),a.isResponding=!0,a.currentReplyText="",a.lastUserMessage=s,a.driver.sendPrompt(s),this.reply(e,n,!0,o?{sessionId:r,clientMessageId:o}:void 0)}async sendReconnectSnapshot(e,n,r,s,i,o,a){try{let l=this.getDeletedSessionIds(),c;try{c=await Xn({agent:r,cwd:s,search:i,limit:50,activeSessions:this.activeSessionSnapshots(),sessionRecords:this.store.getAll(),deletedSessionIds:l})}catch(d){w.warn({error:String(d)},"failed to build reconnect snapshot session list"),c={sessions:[],nextCursor:void 0}}let u;if(o&&!l.has(o)){let d=a??c.sessions.find(g=>g.sessionId===o)?.agent,f=this.sessions.get(o),h=await this.resolveReconnectSession(o,d,f);if(h){let g=await on(o,h.agent,f?.cwd??h.cwd);u={sessionId:o,agent:h.agent,messages:g,isResponding:f?.isResponding||void 0,partialReplyText:this.currentPartialReplyText(f),approvalMode:f?.approvalMode??h.approvalMode,...f?.pendingApproval?{pendingApproval:f.pendingApproval}:{}}}}b.increment("reconnect.snapshot",{activeSession:u?"true":"false"}),this.reply(e,n,!0,{snapshot:{sessions:c.sessions,nextCursor:c.nextCursor,...u?{activeSession:u}:{}}})}catch(l){this.reply(e,n,!1,void 0,`Failed to build reconnect snapshot: ${String(l)}`)}}async approve(e,n,r,s,i){let o=this.sessions.get(r),a=o?.pendingClaudeHookApprovals.get(s);if(o&&a){o.pendingApproval=void 0,v.emit("approval.response",{sessionId:r,requestId:s,approved:i}),this.touchSession(o.sessionId),a.resolve(Pc(i)),o.isResponding=!0,this.reply(e,n,!0);return}o&&(o.pendingApproval=void 0);let l=o?.syntheticApprovalRetries[s];if(o&&l&&Vn(s)){delete o.syntheticApprovalRetries[s],v.emit("approval.response",{sessionId:r,requestId:s,approved:i}),this.touchSession(o.sessionId),this.reply(e,n,!0),i&&await this.retrySyntheticClaudeApproval(o,l);return}if(!o?.driver){this.reply(e,n,!1,void 0,"Session not found or inactive");return}if(v.emit("approval.response",{sessionId:r,requestId:s,approved:i}),this.touchSession(o.sessionId),!o.driver.respondApproval(s,i)){this.reply(e,n,!1,void 0,"Agent process is not running. Send a new message to continue.");return}o.isResponding=!0,this.reply(e,n,!0)}async retrySyntheticClaudeApproval(e,n){if(e.agent==="claude")try{e.driver&&e.driver.stop();let r=["Write","Edit","NotebookEdit"].includes(n.toolName)?"acceptEdits":"autoApprove",s=this.createDriver(e.agent),i=this.configureDriverBeforeStart(e.agent,s,e.claudeHookSecret);await s.start(e.cwd,e.sessionId,r),e.driver=s,e.active=!0,e.isResponding=!0,e.currentReplyText="",e.lastUserMessage=n.message,e.claudeHookSecret=i??e.claudeHookSecret,e.pendingClaudeHookApprovals=e.pendingClaudeHookApprovals??new Map,this.registerClaudeHookSession(e),this.bindDriverLifecycle(e,e.agent," (approval retry)"),this.store.upsert(ke(e)),this.updateGauges(),this.touchSession(e.sessionId),w.info({sessionId:e.sessionId,toolName:n.toolName,retryApprovalMode:r},"retrying Claude turn after synthetic approval"),s.sendPrompt(n.message)}catch(r){e.driver=null,e.active=!1,e.isResponding=!1,this.updateGauges(),this.touchSession(e.sessionId),w.error({sessionId:e.sessionId,error:String(r)},"failed to retry Claude turn after approval"),this.broadcast(e.sessionId,{type:"error",sessionId:e.sessionId,message:`Failed to continue after approval: ${String(r)}`})}}async setApprovalMode(e,n,r,s){let i=this.sessions.get(r);if(!i){let a=this.store.find(r);a?(a.approvalMode=s,this.store.upsert(a),w.info({sessionId:r,agent:a.agent,newMode:s},"approval mode changed (inactive session)")):w.info({sessionId:r,newMode:s},"approval mode changed (untracked session)"),this.reply(e,n,!0,{approvalMode:s});return}let o=i.approvalMode;if(i.approvalMode=s,this.store.upsert(ke(i)),w.info({sessionId:r,agent:i.agent,oldMode:o,newMode:s},"approval mode changed"),i.driver&&(i.driver.setApprovalMode(s),i.agent==="codex"&&i.active&&o!==s))try{i.driver.stop();let a=this.createDriver("codex");await a.start(i.cwd,i.sessionId,s),i.driver=a,this.bindDriverLifecycle(i,"codex"," (mode change)"),w.info({sessionId:r},"codex driver restarted with new approval mode")}catch(a){w.error({sessionId:r,error:String(a)},"failed to restart codex after approval mode change"),i.driver=null,i.active=!1,this.updateGauges()}this.reply(e,n,!0,{approvalMode:s})}interrupt(e,n,r){let s=this.sessions.get(r);if(!s?.driver){this.reply(e,n,!1,void 0,"Session not found or inactive");return}v.emit("session.interrupt",{sessionId:r,agent:s.agent}),s.driver.interrupt(),this.reply(e,n,!0)}stopSession(e,n,r){let s=this.sessions.get(r);if(!s){this.reply(e,n,!1,void 0,"Session not found");return}w.info({sessionId:r,agent:s.agent},"stopping session"),v.emit("session.stop",{sessionId:r,agent:s.agent}),this.resolvePendingClaudeHookApprovals(s),s.driver?.stop(),s.active=!1,s.driver=null,this.updateGauges(),this.touchSession(s.sessionId),this.reply(e,n,!0)}deleteSession(e,n,r){let s=this.sessions.get(r);s&&(w.info({sessionId:r,agent:s.agent},"deleting session"),this.resolvePendingClaudeHookApprovals(s),s.driver?.stop(),this.unregisterClaudeHookSession(s),this.sessions.delete(r)),v.emit("session.delete",{sessionId:r}),this.store.remove(r),this.updateGauges(),$s(),Os(),this.reply(e,n,!0)}async sendHistory(e,n,r,s){let i=this.sessions.get(r);if(!i&&this.isDeletedSession(r)){this.reply(e,n,!1,void 0,"Session not found");return}i&&i.clients.add(e);let o=i?.cwd??this.store.find(r)?.cwd??"",a=await on(r,s,o);w.info({sessionId:r,historyCount:a.length,isResponding:i?.isResponding,approvalMode:i?.approvalMode},"sending history");let l={type:"session.history",sessionId:r,messages:a,isResponding:i?.isResponding||void 0,partialReplyText:this.currentPartialReplyText(i),approvalMode:i?.approvalMode};e.send(JSON.stringify(l)),i&&this.resendPendingApproval(i,e),this.reply(e,n,!0)}async listSessions(e,n,r,s,i,o=50,a){try{let l=await Xn({agent:r,cwd:s,search:i,limit:o,cursor:a,activeSessions:this.activeSessionSnapshots(),sessionRecords:this.store.getAll(),deletedSessionIds:this.getDeletedSessionIds()});this.reply(e,n,!0,l)}catch(l){this.reply(e,n,!1,void 0,String(l))}}createDriver(e){switch(e){case"claude":return new tn;case"codex":return new Yn;default:throw new Error(`Unknown agent: ${e}`)}}broadcast(e,n){let r=this.sessions.get(e);if(!r){w.warn({sessionId:e,msgType:n.type},"broadcast target session not found");return}let s=JSON.stringify(n),i=r.clients.size,o=0,a=0;for(let l of r.clients)l.readyState===1?(l.send(s),o++):a++;if(a>0&&b.increment("broadcast.fail"),n.type!=="text.delta"&&w.debug({sessionId:e,msgType:n.type,sent:o,total:i},"broadcast"),n.type==="text.delta"){r.currentReplyText+=n.content;return}if(n.type==="session.done"){let l=r.title||e,c=this.buildPushBody(r.currentReplyText);r.currentReplyText="",this.pushSender(l,c,{sessionId:e,agent:r.agent});return}n.type==="session.interrupted"&&(r.currentReplyText="")}reply(e,n,r,s,i){if(e.readyState!==1)return;let o={type:"response",id:n,ok:r,data:s,error:i};e.send(JSON.stringify(o))}};function Zs(t,e){if(!e.deviceId){e.respond({type:"response",id:t.id,ok:!1,error:"device_auth_required"});return}t.action==="push.register"?e.registerToken(e.deviceId,t.pushToken):e.unregisterToken(e.deviceId,t.pushToken),e.respond({type:"response",id:t.id,ok:!0})}var Mc=require("child_process");function Og(t,e){return(0,Mc.execFileSync)(t,e,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}function Bg(t){let e=t.split(`
91
+ `)}resolveToolContext(e){let n=Q(e?.item)??e??null,r=Ms(n);if(!r)return null;let s=n?Jl(n):null;if(s)return this.toolContextByCallId.set(r,s),{callId:r,toolContext:s};let i=this.toolContextByCallId.get(r);return i?{callId:r,toolContext:i}:null}createFallbackInput(e,n){return e?Ns(e,["threadId","turnId",...n]):{}}queueApprovalRequest(e,n,r){if(this.approvalRequests.set(e,n),w.emit("approval.request",{agent:"codex",sessionId:this.threadId,toolName:n.toolName}),!this.handler){A.warn({threadId:this.threadId,requestId:e,toolName:n.toolName},"approval request received without handler"),this.respondApproval(e,!1)||this.writeServerRequestError(n.rpcId,"Approval handler unavailable");return}this.handler({type:"approval.request",sessionId:this.threadId,requestId:e,toolName:n.toolName,input:n.input,description:r})}handleServerRequest(e,n,r){let s=String(n),i=this.resolveToolContext(r);if(e==="item/commandExecution/requestApproval"){this.queueApprovalRequest(s,{kind:"command-execution",responseKind:"v2",rpcId:n,toolName:i?.toolContext.toolName??"Bash",input:i?.toolContext.input??this.createFallbackInput(r,["itemId","reason","description"])},C(r?.reason)??C(r?.description)??"");return}if(e==="item/fileChange/requestApproval"){this.queueApprovalRequest(s,{kind:"file-change",responseKind:"v2",rpcId:n,toolName:i?.toolContext.toolName??"Patch",input:i?.toolContext.input??this.createFallbackInput(r,["itemId","reason","description"])},C(r?.reason)??C(r?.description)??"");return}if(e==="item/tool/requestUserInput"){let o=r?.questions;if(!Op(o)){A.warn({threadId:this.threadId,rpcId:n},"unsupported requestUserInput request"),this.writeServerRequestError(n,"Unsupported interactive request from Codex");return}let a=Np(o);if(!a){this.writeServerRequestError(n,"Malformed requestUserInput approval request");return}this.queueApprovalRequest(s,{kind:"request-user-input-approval",rpcId:n,questionId:a.questionId,approveLabel:a.approveLabel,denyLabel:a.denyLabel,toolName:i?.toolContext.toolName??"Bash",input:i?.toolContext.input??this.createFallbackInput(r,["itemId","questions"])},Bp(o));return}if(e==="execCommandApproval"){this.queueApprovalRequest(s,{kind:"exec-command-legacy",rpcId:n,toolName:i?.toolContext.toolName??"Bash",input:i?.toolContext.input??this.createFallbackInput(r,[])},C(r?.reason)??C(r?.description)??"");return}if(e==="applyPatchApproval"){this.queueApprovalRequest(s,{kind:"apply-patch-legacy",rpcId:n,toolName:i?.toolContext.toolName??"Patch",input:i?.toolContext.input??this.createFallbackInput(r,[])},C(r?.reason)??C(r?.description)??"");return}if(e==="item/permissions/requestApproval"){A.warn({threadId:this.threadId,rpcId:n},"unsupported permissions approval request"),this.writeServerRequestError(n,"Unsupported permissions approval request");return}A.warn({threadId:this.threadId,rpcId:n,method:e},"unsupported server request"),this.writeServerRequestError(n,`Unsupported server request: ${e}`)}handleRaw(e){if(A.debug({method:e.method??"(response)",rpcId:e.id??"-"},"handleRaw"),e.id!=null&&!e.method&&this.pending.has(e.id)){let s=this.pending.get(e.id);this.pending.delete(e.id),e.error?s.reject(new Error(e.error.message??"RPC error")):s.resolve(e.result);return}let n=typeof e.method=="string"?e.method:void 0,r=Q(e.params);if(n&&e.id!=null){this.handleServerRequest(n,e.id,r??void 0);return}switch(n&&A.debug({method:n,paramsPreview:JSON.stringify(r??{}).slice(0,300)},"notification"),n){case"item/agentMessage/delta":{let s=r?.text??r?.delta??r?.content??"";s&&this.handler?this.handler({type:"text.delta",sessionId:this.threadId,content:s}):s||A.debug({paramsKeys:Object.keys(r??{})},"agentMessage/delta with empty text");break}case"item/commandExecution/outputDelta":r?.output&&this.handler&&this.handler({type:"tool.result",sessionId:this.threadId,toolCallId:r.itemId??"",output:String(r.output)});break;case"item/started":{let s=Q(r?.item),i=Ms(s),o=s?Jl(s):null;i&&o&&(this.toolContextByCallId.set(i,o),this.handler&&this.handler({type:"tool.call",sessionId:this.threadId,toolName:o.toolName,input:o.input,toolCallId:i}));break}case"item/completed":{let s=Q(r?.item)??r,i=Ms(s);i&&this.toolContextByCallId.delete(i);break}case"turn/completed":{let s=Q(r?.usage),i=s?{inputTokens:Number(s.input_tokens??s.inputTokens??0),outputTokens:Number(s.output_tokens??s.outputTokens??0)}:void 0;A.info({threadId:this.threadId},"turn completed"),w.emit("session.done",{agent:"codex",sessionId:this.threadId,usage:i}),this.handler&&this.handler({type:"session.done",sessionId:this.threadId,usage:i});break}default:n&&A.debug({method:n},"unhandled notification");break}}};var B=require("fs/promises"),Gs=require("fs"),$s=require("readline"),k=require("path"),pe=require("os");var Dp=new Set(["New session","Resumed session","Untitled session"]),Hp=["<environment_context>","<local-command-caveat>","<local-command-stdout>","<local-command-stderr>","<command-name>","<command-message>","<command-args>","# AGENTS.md instructions for "];function Fp(t){return t.replace(/\s+/g," ").trim()}function Jn(t){return typeof t!="string"?void 0:Fp(t)||void 0}function tc(t){let e=Jn(t);return e?/^[0-9a-f]{8,}$/i.test(e)||/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)||/^agent-[a-z0-9_-]{6,}$/i.test(e):!1}function ht(t){let e=Jn(t);return!e||Dp.has(e)||tc(e)}function Up(t){for(let e of t.replace(/\r/g,"").split(`
92
+ `)){let n=Jn(e);if(n&&!qp(n)&&!Wp(n))return n}}function qp(t){return Hp.some(e=>t.startsWith(e))}function Wp(t){let e=t.replace(/^['"`]+/,"").replace(/['"`\\]+$/,"").trim();return!!(!e||/^(\/|~\/|\.\/|\.\.\/)/.test(e)||/^[A-Za-z]:\\/.test(e))}function jp(t){for(let e=0;e<t.length;e+=1){let n=t[e];if(n==="\u3002"||n==="\uFF01"||n==="\uFF1F"||n==="\uFF1B")return e+1;if(n==="."||n==="!"||n==="?"||n===";"){let r=t[e+1];if(!r||/\s/.test(r))return e+1}}return-1}function Os(t,e=80){if(typeof t!="string")return;let n=Up(t);if(!n)return;let r=jp(n),i=(r>0?n.slice(0,r):n).replace(/[。!?;.!?;]+$/gu,"").trim();if(!(!i||tc(i)))return i.length<=e?i:`${i.slice(0,Math.max(1,e-3)).trimEnd()}...`}function We(t,e){for(let n of t){let r=Jn(n);if(!(!r||ht(r)))return r}return Os(e)}var rc=require("child_process"),pt=require("fs/promises"),Ee=require("path"),Bs=require("os"),sc=require("util");var Gp=(0,sc.promisify)(rc.execFile),$p=15e3,nn=null;function Xn(){nn=null}function zp(t){return t.replace(/^['"]|['"]$/g,"")}function Vp(t){return(t.match(/"[^"]*"|'[^']*'|\S+/g)??[]).map(zp)}function Ds(t){let e=Vp(t);for(let n=0;n<e.length;n+=1){let r=e[n],s=(0,Ee.basename)(r);if(s==="claude"||s==="codex")return{agent:s,args:e.slice(n+1)}}return null}function Yp(t,e){let n=Ds(e);if(!n||n.agent!==t)return null;let{args:r}=n;if(t==="claude"){for(let s=0;s<r.length;s+=1){let i=r[s];if((i==="--resume"||i==="--session-id")&&r[s+1]&&!r[s+1].startsWith("-"))return r[s+1];if(i.startsWith("--resume="))return i.slice(9);if(i.startsWith("--session-id="))return i.slice(13)}return null}if(r[0]!=="resume")return null;for(let s=1;s<r.length;s+=1){let i=r[s];if(!i.startsWith("-"))return i}return null}function Kn(t){switch(t){case"high":return 3;case"medium":return 2;default:return 1}}function Jp(t,e){return t==="claude"?e.includes("/.claude/projects/")&&!e.includes("/subagents/"):e.includes("/.codex/sessions/")}function Kp(t,e){let n=Ds(e);return!n||n.agent!==t?!1:n.args.includes("--continue")||n.args.includes("-c")}function Xp(t){let e=Yp(t.agent,t.command);if(e)return{agent:t.agent,pid:t.pid,cwd:t.cwd,command:t.command,sessionId:e,confidence:"high"};let n=[...new Set(t.sessionFiles)].filter(s=>Jp(t.agent,s));if(n.length!==1)return null;let r=gt(t.agent,n[0]);return r?{agent:t.agent,pid:t.pid,cwd:t.cwd,command:t.command,sessionId:r,confidence:"medium",sessionFilePath:n[0]}:null}function Zp(t,e){let n=t,r=e;return(Kn(e.confidence)>Kn(t.confidence)||Kn(e.confidence)===Kn(t.confidence)&&e.pid<t.pid)&&(n=e,r=t),{...n,cwd:n.cwd||r.cwd,title:n.title??r.title,sessionFilePath:n.sessionFilePath??r.sessionFilePath}}function Qp(t){let e=new Map;for(let n of t){let r=`${n.agent}:${n.sessionId}`,s=e.get(r);e.set(r,s?Zp(s,n):n)}return[...e.values()]}async function Hs(t,e){try{let{stdout:n}=await Gp(t,e,{maxBuffer:8388608});return n}catch{return""}}async function nc(t){if(!t.sessionFilePath)return t;let e=await rn(t.sessionFilePath,t.agent);return e?{...t,cwd:t.cwd||e.cwd,title:t.title??e.title}:null}async function eg(t){return(await Hs("lsof",["-a","-p",String(t),"-d","cwd","-Fn"])).split(`
93
+ `).find(r=>r.startsWith("n"))?.slice(1).trim()??""}async function tg(t){let n=(await Hs("lsof",["-p",String(t),"-Fn"])).split(`
94
+ `).filter(r=>r.startsWith("n")).map(r=>r.slice(1).trim()).filter(r=>r.endsWith(".jsonl")?r.includes("/.claude/projects/")||r.includes("/.codex/sessions/"):!1);return[...new Set(n)]}async function ng(){return(await Hs("pgrep",["-fal","(^|/)(claude|codex)( |$)|claude app-server|codex app-server"])).split(`
95
+ `).map(e=>e.trim()).filter(Boolean).map(e=>{let n=e.match(/^(\d+)\s+(.*)$/);if(!n)return null;let r=Number(n[1]),s=n[2],i=Ds(s);return!Number.isFinite(r)||!i?null:{pid:r,command:s,agent:i.agent}}).filter(e=>!!e)}async function rg(){let t=await ng();return Promise.all(t.map(async e=>({pid:e.pid,agent:e.agent,command:e.command,cwd:await eg(e.pid),sessionFiles:await tg(e.pid)})))}function sg(t){return t.replace(/[^a-zA-Z0-9]/g,"-")}async function ig(t,e){if(!e)return null;try{if(t==="claude"){let o=(0,Ee.join)((0,Bs.homedir)(),".claude","projects",sg(e)),l=(await(0,pt.readdir)(o).catch(()=>[])).filter(f=>f.endsWith(".jsonl"));if(l.length===0)return null;let c=null;if(await Promise.all(l.map(async f=>{let h=await(0,pt.stat)((0,Ee.join)(o,f)).catch(()=>null);h&&(!c||h.mtimeMs>c.mtimeMs)&&(c={name:f,mtimeMs:h.mtimeMs})})),!c)return null;let u=(0,Ee.join)(o,c.name),d=gt(t,u);return d?{sessionId:d,filePath:u}:null}let n=(0,Ee.join)((0,Bs.homedir)(),".codex","sessions"),r=null;async function s(o){let a=await(0,pt.readdir)(o,{withFileTypes:!0}).catch(()=>[]);for(let l of a){let c=(0,Ee.join)(o,l.name);if(l.isDirectory())await s(c);else if(l.name.endsWith(".jsonl")){let u=await(0,pt.stat)(c).catch(()=>null);if(!u||r&&u.mtimeMs<=r.mtimeMs)continue;let d=await rn(c,t);if(!d||d.cwd!==e)continue;r={path:c,mtimeMs:u.mtimeMs,sessionId:d.sessionId}}}}await s(n);let i=r;return i?{sessionId:i.sessionId,filePath:i.path}:null}catch{return null}}async function ic(){if(nn&&Date.now()<nn.expiresAt)return nn.value;let t=await rg(),e=await Promise.all(t.map(async r=>{let s=Xp(r);if(s)return nc(s);if(Kp(r.agent,r.command))return null;let i=await ig(r.agent,r.cwd);return i?nc({agent:r.agent,pid:r.pid,cwd:r.cwd,command:r.command,sessionId:i.sessionId,confidence:"low",sessionFilePath:i.filePath}):null})),n=Qp(e.filter(r=>r!==null));return nn={value:n,expiresAt:Date.now()+$p},n}var ac=L.child({module:"inventory"}),mt={daemonActive:3,externalRunning:2,idle:1},oc={high:3,medium:2,low:1};function lc(t,e){return e.lastActivityAt.localeCompare(t.lastActivityAt)||t.sessionId.localeCompare(e.sessionId)}function og(t,e){let n=t.runtime.needsAttention?1:0,r=e.runtime.needsAttention?1:0,s=t.runtime.isResponding?1:0,i=e.runtime.isResponding?1:0;return r-n||i-s||mt[e.runtime.state]-mt[t.runtime.state]||lc(t,e)}function ag(t,e){return mt[e.state]>mt[t.state]?e:mt[e.state]<mt[t.state]?t:oc[e.confidence]>oc[t.confidence]?e:t}function lg(t,e){return t?e?t.localeCompare(e)<=0?t:e:t:e}function cg(t,e){return t?e?t.localeCompare(e)>=0?t:e:t:e}function ug(t,e){return e?t?!(ht(e)&&!ht(t)):!0:!1}function Fs(t="high",e="resumeSession"){return{state:"idle",confidence:t,resumeMode:e}}function dg(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:["record"],runtime:Fs(),managed:t.managed,approvalMode:t.approvalMode}}function fg(t,e){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,title:t.title,createdAt:e,lastActivityAt:e,sources:["process"],runtime:{state:"externalRunning",confidence:t.confidence,resumeMode:"resumeSession",pid:t.pid,command:t.command}}}function hg(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:["daemon"],runtime:{state:"daemonActive",confidence:"high",resumeMode:"reuseDriver",needsAttention:t.needsAttention||void 0,isResponding:t.isResponding||void 0},managed:t.managed,approvalMode:t.approvalMode}}function pg(t,e){for(let n of e){let r=`${n.agent}:${n.sessionId}`,s=t.get(r);if(!s){t.set(r,{...n,sources:[...n.sources],runtime:{...n.runtime}});continue}let i=ug(s.title,n.title)?n.title:s.title,o=n.cwd||s.cwd,a=ag(s.runtime,n.runtime),l=s.sources.slice();for(let f of n.sources)l.includes(f)||l.push(f);let c=n.sources.includes("process"),u=s.sources.includes("process")&&!s.sources.includes("daemon"),d=c?s.lastActivityAt:u?n.lastActivityAt:cg(s.lastActivityAt,n.lastActivityAt);t.set(r,{...s,cwd:o,title:i,createdAt:lg(s.createdAt,n.createdAt),lastActivityAt:d,sources:l,runtime:a,managed:s.managed||n.managed,approvalMode:n.approvalMode??s.approvalMode})}}function gg(...t){let e=new Map;for(let n of t)pg(e,n);return[...e.values()]}function mg(t,e,n,r,s){let i=r?.toLowerCase(),o=t.filter(a=>{if(e&&a.agent!==e||n&&a.cwd!==n)return!1;if(i){let l=(a.title??"").toLowerCase(),c=(a.cwd??"").toLowerCase(),u=l.includes(i)||c.includes(i),d=s?.has(a.sessionId)??!1;if(!u&&!d)return!1}return!0});return r&&ac.info({total:t.length,filtered:o.length,search:r,contentMatchIds:s?.size??0},"filter applied"),o}function yg(t,e){if(!e)return 0;let n=0,r=t.length;for(;n<r;){let s=n+r>>1,i=t[s];(e.lastActivityAt.localeCompare(i.lastActivityAt)||i.sessionId.localeCompare(e.sessionId))>0?r=s:n=s+1}if(n>0){let s=t[n-1];if(s.lastActivityAt===e.lastActivityAt&&s.sessionId===e.sessionId)return n}return 0}function Sg(t,e,n,r,s,i,o){let a=i?1/0:Math.max(1,e||50),l=gg(t.sessionRecords.map(dg),t.scannedSessions,t.runningSessions.map(S=>fg(S,t.scannedAt)),t.activeSessions.map(hg)),c=t.deletedSessionIds?.size?l.filter(S=>!t.deletedSessionIds?.has(S.sessionId)):l,u=mg(c,r,s,i,o),d=u.filter(S=>S.runtime.state!=="idle"||S.managed).sort(og),f=u.filter(S=>S.runtime.state==="idle"&&!S.managed).sort(lc),h=yg(f,n),p=f.slice(h,h+a),y=h+p.length<f.length&&p.length>0?{lastActivityAt:p[p.length-1].lastActivityAt,sessionId:p[p.length-1].sessionId}:void 0;return{sessions:n?p:[...d,...p],nextCursor:y}}async function Zn(t){let e=new Date().toISOString(),[n,r,s]=await Promise.all([sn(t.agent,t.cwd),ic(),t.search?cc(t.search,t.agent):Promise.resolve(void 0)]);return t.search&&ac.info({search:t.search,contentMatches:s?.size??0,scanned:n.length,records:t.sessionRecords.length,active:t.activeSessions.length},"search results"),Sg({activeSessions:t.activeSessions,sessionRecords:t.sessionRecords,scannedSessions:n,runningSessions:r,scannedAt:e,deletedSessionIds:t.deletedSessionIds},t.limit,t.cursor,t.agent,t.cwd,t.search,s)}var ke=L.child({module:"scanner"});function pc(t){let e=new Map;return{get(n){let r=e.get(n);if(r){if(Date.now()>r.expiresAt){e.delete(n);return}return r.value}},set(n,r){e.set(n,{value:r,expiresAt:Date.now()+t})},clear(){e.clear()}}}var gc=3e4,qs=pc(gc),Ws=pc(gc),Qn=8;function tr(){qs.clear(),Ws.clear()}function js(t){return t.replace(/[^a-zA-Z0-9]/g,"-")}async function er(t,e,n){if(t.length===0)return[];let r=Math.max(1,Math.min(e,t.length)),s=new Array(t.length),i=0;return await Promise.all(Array.from({length:r},async()=>{for(;;){let o=i;if(i+=1,o>=t.length)return;s[o]=await n(t[o],o)}})),s}function*mc(t,e){let n=0,r=0;for(;n<t.length&&r<e;){let s=t.indexOf(`
96
+ `,n);s===-1&&(s=t.length);let i=t.substring(n,s);n=s+1,!(i.length===0||i.trim().length===0)&&(yield i,r+=1)}}var Us=512*1024;async function yc(t,e){if(e<=Us)return(0,B.readFile)(t,"utf-8");let n=await(0,B.open)(t,"r");try{let r=Buffer.alloc(Us),{bytesRead:s}=await n.read(r,0,Us,0);return r.toString("utf-8",0,s)}finally{await n.close()}}function zs(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>!e||typeof e!="object"?"":typeof e.text=="string"?e.text:typeof e.content=="string"?e.content:"").join(""):""}function Sc(t){return t?.type==="response_item"&&t.payload?.type==="message"&&t.payload.role==="user"?zs(t.payload.content):t?.type==="event_msg"&&t.payload?.type==="user_message"&&typeof t.payload.message=="string"?t.payload.message:""}function Vs(t){return typeof t=="string"?t:Array.isArray(t)?t.map(e=>!e||typeof e!="object"||e.type!=="text"?"":typeof e.text=="string"?e.text:"").join(""):""}var _g=["<task-notification>","<local-command-caveat>","<local-command-stdout>","<local-command-stderr>","<command-name>","<command-message>","<command-args>","<system-reminder>","<environment_context>","# AGENTS.md instructions for "];function vg(t,e){if(t?.isMeta===!0)return!0;let n=e.trim();return n?_g.some(r=>n.startsWith(r)):!1}function Ys(t){if(t?.type!=="user"||t.message?.role!=="user")return"";let e=Vs(t.message.content);return vg(t,e)?"":e}function _c(t){let e=t.trim();return e.startsWith("# AGENTS.md instructions for ")||e.startsWith("<environment_context>")}function vc(t,e="scanner"){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:[e],runtime:Fs()}}function gt(t,e){let n=(0,k.basename)(e,".jsonl");return t==="claude"?n||null:n.match(/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$/i)?.[1]??null}async function wg(t,e){let n=await yc(t,e),r=mc(n,64),s="",i="",o,a,l;for(let c of r){let u;try{u=JSON.parse(c)}catch{continue}if(!s&&typeof u.cwd=="string"&&(s=u.cwd),!i&&typeof u.sessionId=="string"&&(i=u.sessionId),o||(o=We([u.customTitle,u.summary])),!l){let d=Ys(u),f=We([],d);f&&(a=d,l=f)}if(s&&(o||l))break}return s?{sessionId:i||gt("claude",t)||(0,k.basename)(t,".jsonl"),cwd:s,title:o??l??We([],a)}:null}async function bg(t,e){let n=await yc(t,e),r=mc(n,96),s="",i="",o,a,l;for(let c of r){let u;try{u=JSON.parse(c)}catch{continue}if(s||(s=u.payload?.cwd??u.cwd??""),i||(i=u.payload?.id??u.id??""),o||(o=We([u.payload?.title,u.title])),!l){let d=Sc(u),f=d&&!_c(d)?We([],d):void 0;f&&(a=d,l=f)}if(s&&(o||l))break}return s?{sessionId:i||gt("codex",t)||(0,k.basename)(t,".jsonl"),cwd:s,title:o??l??We([],a)}:null}async function rn(t,e){let n=await(0,B.stat)(t).catch(()=>null);if(!n)return null;try{let r=n.size;if(e==="claude"){let i=await wg(t,r);return i?{sessionId:i.sessionId,agent:e,cwd:i.cwd,title:i.title,createdAt:new Date(n.birthtimeMs).toISOString(),lastActivityAt:new Date(n.mtimeMs).toISOString(),filePath:t}:null}let s=await bg(t,r);return s?{sessionId:s.sessionId,agent:e,cwd:s.cwd,title:s.title,createdAt:new Date(n.birthtimeMs).toISOString(),lastActivityAt:new Date(n.mtimeMs).toISOString(),filePath:t}:null}catch{return null}}async function uc(t){let e=(0,k.join)((0,pe.homedir)(),".claude","projects");try{let n;t?n=[js(t)]:n=(await(0,B.readdir)(e,{withFileTypes:!0})).filter(a=>a.isDirectory()).map(a=>a.name);let r=[];for(let o of n){let a=(0,k.join)(e,o),l=await(0,B.readdir)(a).catch(()=>[]);for(let c of l)c.endsWith(".jsonl")&&r.push((0,k.join)(a,c))}return(await er(r,Qn,o=>rn(o,"claude"))).filter(o=>o!==null).map(o=>vc(o)).sort((o,a)=>a.lastActivityAt.localeCompare(o.lastActivityAt))}catch(n){return ke.warn({error:String(n)},"failed to list claude sessions"),[]}}async function dc(t){let e=(0,k.join)((0,pe.homedir)(),".codex","sessions");try{let n=await(0,B.readdir)(e).catch(()=>[]),r=[];for(let o of n){let a=(0,k.join)(e,o),l=await(0,B.readdir)(a).catch(()=>[]);for(let c of l){let u=(0,k.join)(a,c),d=await(0,B.readdir)(u).catch(()=>[]);for(let f of d){let h=(0,k.join)(u,f),p=await(0,B.readdir)(h).catch(()=>[]);for(let g of p)g.endsWith(".jsonl")&&r.push((0,k.join)(h,g))}}}return(await er(r,Qn,o=>rn(o,"codex"))).filter(o=>o!==null).filter(o=>!t||o.cwd===t).map(o=>vc(o)).sort((o,a)=>a.lastActivityAt.localeCompare(o.lastActivityAt))}catch(n){return ke.warn({error:String(n)},"failed to list codex sessions"),[]}}async function sn(t,e){let r=`list:${(0,pe.homedir)()}:${t??"all"}:${e??""}`,s=qs.get(r);if(s)return s;let i;if(t==="claude")i=await uc(e);else if(t==="codex")i=await dc(e);else{let[o,a]=await Promise.all([uc(e),dc(e)]);i=[...o,...a].sort((l,c)=>c.lastActivityAt.localeCompare(l.lastActivityAt))}return qs.set(r,i),i}async function cc(t,e){let r=`search:${(0,pe.homedir)()}:${t}:${e??"all"}`,s=Ws.get(r);if(s)return s;let i=new Set,o=t.toLowerCase();async function a(){let c=(0,k.join)((0,pe.homedir)(),".claude","projects");try{let u=await(0,B.readdir)(c,{withFileTypes:!0}),d=[];for(let h of u){if(!h.isDirectory())continue;let p=(0,k.join)(c,h.name),g=await(0,B.readdir)(p).catch(()=>[]);for(let y of g)y.endsWith(".jsonl")&&d.push((0,k.join)(p,y))}let f=await er(d,Qn,h=>fc(h,o,"claude"));for(let h of f)h&&i.add(h)}catch(u){ke.warn({error:String(u)},"failed to search claude files")}}async function l(){let c=(0,k.join)((0,pe.homedir)(),".codex","sessions");try{let u=[];async function d(h){let p=await(0,B.readdir)(h,{withFileTypes:!0}).catch(()=>[]);for(let g of p){let y=(0,k.join)(h,g.name);g.isDirectory()?await d(y):g.name.endsWith(".jsonl")&&u.push(y)}}await d(c);let f=await er(u,Qn,h=>fc(h,o,"codex"));for(let h of f)h&&i.add(h)}catch(u){ke.warn({error:String(u)},"failed to search codex files")}}return e==="claude"?await a():e==="codex"?await l():await Promise.all([a(),l()]),Ws.set(r,i),i}async function fc(t,e,n){let r=(0,Gs.createReadStream)(t,{encoding:"utf-8"}),s=(0,$s.createInterface)({input:r,crlfDelay:1/0}),i=n==="claude"?Ig:xg,o="",a=!1;try{for await(let l of s){if(!l.trim())continue;let c;try{c=JSON.parse(l)}catch{continue}if(o||(n==="claude"?typeof c.sessionId=="string"&&(o=c.sessionId):o=c.payload?.id??c.id??""),!a){let u=i(c);u&&u.toLowerCase().includes(e)&&(a=!0)}if(o&&a)break}}finally{s.close(),r.destroy()}return a?o||gt(n,t):null}function Ig(t){return t?.type==="user"&&t.message?.role==="user"?Ys(t):t?.type==="assistant"&&t.message?.role==="assistant"?Vs(t.message.content):""}function xg(t){if(t?.type==="response_item"&&t.payload?.type==="message"){let n=t.payload.role;if(n==="user"||n==="assistant")return zs(t.payload.content)}let e=Sc(t);return e||""}async function hc(t,e){let n=(0,Gs.createReadStream)(t,{encoding:"utf-8"}),r=(0,$s.createInterface)({input:n,crlfDelay:1/0});try{for await(let s of r){if(!s.trim())continue;let i;try{i=JSON.parse(s)}catch{continue}if(e(i))break}}finally{r.close(),n.destroy()}}async function on(t,e,n){let r=[];if(e==="claude"){let s=(0,k.join)((0,pe.homedir)(),".claude","projects");try{let i=n?[js(n)]:[],o=await(0,B.readdir)(s).catch(()=>[]),a=n?[...i,...o.filter(l=>l!==js(n))]:o;for(let l of a){let c=(0,k.join)(s,l,`${t}.jsonl`);try{if(await hc(c,u=>{if(u.type==="user"&&u.message?.role==="user"){let d=Ys(u);d&&r.push({role:"user",content:d})}else if(u.type==="assistant"&&u.message?.role==="assistant"){let d=Vs(u.message.content);d&&r.push({role:"assistant",content:d})}}),r.length>0)break}catch(u){u.code!=="ENOENT"&&ke.warn({error:String(u)},"failed to read claude session file")}}}catch(i){ke.warn({error:String(i)},"failed to read claude session history")}}else if(e==="codex"){let s=(0,k.join)((0,pe.homedir)(),".codex","sessions");try{let i=await wc(s,t);i&&await hc(i,o=>{if(o.type!=="response_item"||o.payload?.type!=="message")return;let a=o.payload.role;if(a!=="user"&&a!=="assistant")return;let l=zs(o.payload.content);l&&(a==="user"&&_c(l)||r.push({role:a,content:l}))})}catch(i){ke.warn({error:String(i)},"failed to read codex session history")}}return r}async function wc(t,e){try{let n=await(0,B.readdir)(t,{withFileTypes:!0});for(let r of n){let s=(0,k.join)(t,r.name);if(r.isDirectory()){let i=await wc(s,e);if(i)return i}else if(r.name.includes(e)&&r.name.endsWith(".jsonl"))return s}}catch(n){ke.warn({error:String(n)},"failed to walk codex sessions dir")}return null}var yt=require("fs"),xc=require("path");var Tg=500,bc=200;function Ag(t){if(!Array.isArray(t))return[];let e=t.filter(n=>typeof n=="string"&&n.length>0);return e.length<=bc?e:e.slice(-bc)}function Eg(t){if(!Array.isArray(t))return[];let e=[];for(let n of t)typeof n!="string"||n.length===0||e.includes(n)||e.push(n);return e}function Ic(t){return{...t,lastActivityAt:t.lastActivityAt??t.createdAt,acceptedClientMessageIds:Ag(t.acceptedClientMessageIds)}}function kg(t){if(Array.isArray(t))return{records:t.map(Ic),deletedSessionIds:[]};if(t&&typeof t=="object"){let e=t;return{records:Array.isArray(e.records)?e.records.map(Ic):[],deletedSessionIds:Eg(e.deletedSessionIds)}}return{records:[],deletedSessionIds:[]}}var nr=class{records;deletedSessionIds;debounceTimer=null;constructor(){let e=this.loadFromDisk();this.records=e.records,this.deletedSessionIds=new Set(e.deletedSessionIds)}getAll(){return this.records}getDeletedSessionIds(){return[...this.deletedSessionIds]}find(e){return this.records.find(n=>n.sessionId===e)}isDeleted(e){return this.deletedSessionIds.has(e)}upsert(e){this.deletedSessionIds.delete(e.sessionId);let n=this.records.findIndex(r=>r.sessionId===e.sessionId);n>=0?this.records[n]=e:this.records.unshift(e),this.scheduleSave()}remove(e){this.records=this.records.filter(n=>n.sessionId!==e),this.deletedSessionIds.add(e),this.scheduleSave()}flushSync(){this.debounceTimer&&(clearTimeout(this.debounceTimer),this.debounceTimer=null),this.saveToDisk()}scheduleSave(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{this.debounceTimer=null,this.saveToDisk()},Tg)}loadFromDisk(){try{let e=(0,yt.readFileSync)(Hn,"utf-8");return kg(JSON.parse(e))}catch{}return{records:[],deletedSessionIds:[]}}saveToDisk(){(0,yt.mkdirSync)((0,xc.dirname)(Hn),{recursive:!0}),(0,yt.writeFileSync)(Hn,JSON.stringify({records:this.records,deletedSessionIds:[...this.deletedSessionIds]},null,2))}};var Tc=require("path"),Ac=require("os");function rr(t){return t=t.replace(/^~/,"~"),t.startsWith("~/")||t==="~"?(0,Tc.join)((0,Ac.homedir)(),t.slice(2)):t}var St=require("fs"),Ec=require("path");function Cg(t){return!!(t&&typeof t=="object"&&typeof t.deviceId=="string"&&typeof t.pushToken=="string"&&t.platform==="expo"&&typeof t.createdAt=="string"&&typeof t.updatedAt=="string"&&(typeof t.lastSentAt=="string"||typeof t.lastSentAt>"u"))}function Pg(t){try{let e=(0,St.readFileSync)(t,"utf8"),n=JSON.parse(e);return Array.isArray(n)?n.filter(Cg):[]}catch{return[]}}function sr(t,e){(0,St.mkdirSync)((0,Ec.dirname)(t),{recursive:!0}),(0,St.writeFileSync)(t,JSON.stringify(e,null,2)+`
97
+ `,"utf8")}var ir=class{constructor(e=Tl){this.pushSubscriptionsPath=e;this.records=Pg(e)}records;list(){return this.records.map(e=>({...e}))}listTokens(){return this.records.map(e=>e.pushToken)}count(){return this.records.length}register(e,n){let r=new Date().toISOString(),s=this.records.find(o=>o.deviceId===e),i={deviceId:e,pushToken:n,platform:"expo",createdAt:s?.createdAt??r,updatedAt:r,...s?.lastSentAt?{lastSentAt:s.lastSentAt}:{}};this.records=[i,...this.records.filter(o=>o.deviceId!==e&&o.pushToken!==n)],sr(this.pushSubscriptionsPath,this.records)}unregister(e,n){let r=this.records.filter(s=>!(s.deviceId===e&&s.pushToken===n));return r.length===this.records.length?!1:(this.records=r,sr(this.pushSubscriptionsPath,this.records),!0)}markSent(e){if(e.length===0)return;let n=new Set(e),r=new Date().toISOString(),s=!1;for(let i of this.records)n.has(i.pushToken)&&(i.lastSentAt=r,s=!0);s&&sr(this.pushSubscriptionsPath,this.records)}reset(){this.records=[],sr(this.pushSubscriptionsPath,this.records)}};var je=L.child({module:"push"}),Rg="https://exp.host/--/api/v2/push/send",_t=new ir;function Lg(t,e){if(!Array.isArray(t.data))return{successfulTokens:[],ticketErrors:[]};let n=[],r=[];for(let[s,i]of t.data.entries()){let o=e[s];if(!(!o||!i||typeof i!="object")){if(i.status==="ok"){n.push(o);continue}r.push({token:o,ticket:i})}}return{successfulTokens:n,ticketErrors:r}}function Js(t,e){_t.register(t,e),je.info({deviceId:t,token:e,total:_t.count()},"push token registered")}function Ks(t,e){let n=_t.unregister(t,e);je.info({deviceId:t,token:e,total:_t.count(),removed:n},"push token unregistered")}async function kc(t,e,n){let r=_t.listTokens();if(r.length===0)return;let s=r.map(i=>({to:i,sound:"default",title:t,body:e,data:n}));try{let i=await fetch(Rg,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)});if(!i.ok)je.error({status:i.status,statusText:i.statusText},"push send failed");else{let o=await i.json().catch(()=>null);if(!o){je.error({count:s.length},"push send returned unreadable response");return}let{successfulTokens:a,ticketErrors:l}=Lg(o,r);for(let{token:c,ticket:u}of l)je.error({token:c,message:u.message,details:u.details,ticketStatus:u.status},"push ticket rejected");a.length>0&&(je.debug({count:a.length},"push sent"),_t.markSent(a))}}catch(i){je.error({error:String(i)},"push send error")}}var v=L.child({module:"manager"}),Mg="Done.",Cc=180,ar=200;function or(...t){let e=[];for(let n of t)if(n?.length)for(let r of n)!r||e.includes(r)||(e.push(r),e.length>ar&&e.splice(0,e.length-ar));return e}function ge(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,approvalMode:t.approvalMode,acceptedClientMessageIds:or(t.acceptedClientMessageIds),title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,managed:t.managed}}function Pc(t){let e=t.pendingApproval?.requestId;return typeof e=="string"&&Vn(e)}function Ng(t){return t.startsWith(Cs)}function Rc(t){return t?{continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"allow"}}:{continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"deny",permissionDecisionReason:"Denied from Vibelet"}}}var lr=class{constructor(e=kc){this.pushSender=e;this.startIdleSweep()}sessions=new Map;claudeHookSessions=new Map;store=new nr;idleSweepInterval=null;startIdleSweep(){_.idleTimeoutMs<=0&&_.turnStallTimeoutMs<=0||(this.idleSweepInterval=setInterval(()=>this.sweepIdleSessions(),6e4),this.idleSweepInterval.unref())}stopIdleSweep(){this.idleSweepInterval&&(clearInterval(this.idleSweepInterval),this.idleSweepInterval=null)}sweepIdleSessions(){let e=Date.now(),n=_.idleTimeoutMs,r=_.turnStallTimeoutMs;if(n<=0&&r<=0)return;let s=3600*1e3;for(let[i,o]of this.sessions){if(!o.active&&!o.driver){if(o.clients.size===0){let l=e-o.lastActivityTs;l>=s&&(v.info({sessionId:o.sessionId,inactiveMs:l},"removing inactive session from memory"),b.increment("session.cleanup",{reason:"inactive"}),this.unregisterClaudeHookSession(o),this.sessions.delete(i))}continue}if(!o.active||!o.driver)continue;let a=e-o.lastActivityTs;if(o.isResponding){if(r<=0||o.pendingApproval||a<r)continue;v.warn({sessionId:o.sessionId,agent:o.agent,inactiveMs:a,turnStallTimeoutMs:r},"stopping stalled driver"),b.increment("driver.stall_timeout",{agent:o.agent}),w.emit("driver.stall_timeout",{sessionId:o.sessionId,agent:o.agent,idleMs:a}),o.isResponding=!1,o.currentReplyText="",this.broadcast(o.sessionId,{type:"error",sessionId:o.sessionId,message:`Agent stopped responding for over ${Math.ceil(r/1e3)}s. Send a new message to continue.`}),o.driver.stop(),o.active=!1,o.driver=null,this.updateGauges(),this.touchSession(o.sessionId);continue}n<=0||a<n||(v.info({sessionId:o.sessionId,agent:o.agent,idleMs:a,timeoutMs:n},"stopping idle driver"),b.increment("driver.idle_timeout",{agent:o.agent}),w.emit("driver.idle_timeout",{sessionId:o.sessionId,agent:o.agent,idleMs:a}),o.driver.stop(),o.active=!1,o.driver=null,this.updateGauges(),this.touchSession(o.sessionId))}}bindDriverLifecycle(e,n,r,s){e.driver?.onMessage(i=>{v.debug({agent:n,context:r,msgType:i.type,sessionId:e.sessionId},"driver message received"),i.type!=="response"&&i.sessionId&&i.sessionId!==e.sessionId&&!this.sessions.has(i.sessionId)&&this.remapSessionId(e,i.sessionId,s),(i.type==="session.done"||i.type==="session.interrupted")&&(e.isResponding=!1,(i.type==="session.interrupted"||!Pc(e))&&(e.pendingApproval=void 0)),i.type==="approval.request"&&(e.isResponding=!1,e.pendingApproval={requestId:i.requestId,toolName:i.toolName,input:i.input,description:i.description}),n==="claude"&&i.type==="approval.request"&&Vn(i.requestId)&&(e.lastUserMessage?e.syntheticApprovalRetries[i.requestId]={message:e.lastUserMessage,toolName:i.toolName}:v.warn({sessionId:e.sessionId,requestId:i.requestId},"missing lastUserMessage for synthetic approval retry")),this.touchSession(e.sessionId,i.type!=="text.delta"),this.broadcast(e.sessionId,i),(i.type==="session.done"||i.type==="session.interrupted")&&e.bufferedPrompts.length>0&&this.flushBufferedPrompt(e)}),e.driver?.onExit?.(i=>{v.info({agent:n,context:r,exitCode:i,sessionId:e.sessionId},"driver exited"),w.emit("driver.exit",{sessionId:e.sessionId,agent:n,exitCode:i}),b.increment("driver.exit",{agent:n,abnormal:i&&i!==0?"true":"false"});let o=i===0&&Pc(e);this.resolvePendingClaudeHookApprovals(e),e.active=!1,e.driver=null,e.isResponding=!1,e.currentReplyText="",o||(e.pendingApproval=void 0),this.updateGauges(),this.touchSession(e.sessionId)})}remapSessionId(e,n,r){if(!n||n===e.sessionId)return;let s=this.sessions.get(n);if(s&&s!==e){v.warn({oldSessionId:e.sessionId,newSessionId:n},"skipping session ID remap because target already exists");return}let i=e.sessionId;v.info({oldSessionId:i,newSessionId:n},"session ID updated"),this.store.remove(i),this.sessions.delete(i),e.sessionId=n,this.sessions.set(n,e),this.store.upsert(ge(e)),r&&this.reply(r,`id_update_${Date.now()}`,!0,{sessionId:n,oldSessionId:i})}flushBufferedPrompt(e,n=!1){if(!e.driver||!e.active||e.startupInProgress||e.pendingApproval||!n&&e.isResponding)return!1;let r=e.bufferedPrompts.shift();return r?(e.isResponding=!0,e.currentReplyText="",e.lastUserMessage=r,this.touchSession(e.sessionId),e.driver.sendPrompt(r),!0):!1}startPendingCodexSession(e,n){if(e.agent!=="codex"||!e.driver)return;let r=e.driver,s=e.sessionId,i=e.startupToken,o=b.startTimer("driver.spawn");(async()=>{try{let a=await r.start(e.cwd,void 0,e.approvalMode),l=o();if(this.sessions.get(s)!==e||e.startupToken!==i||e.driver!==r){v.info({pendingSessionId:s,actualSessionId:a},"discarding stale codex startup result");return}e.startupInProgress=!1,v.info({pendingSessionId:s,sessionId:a,spawnMs:l},"codex session ready"),a&&a!==s&&this.remapSessionId(e,a,n),this.flushBufferedPrompt(e,!0)}catch(a){if(o(),this.sessions.get(s)!==e||e.startupToken!==i){v.info({pendingSessionId:s,error:String(a)},"ignoring stale codex startup failure");return}e.startupInProgress=!1,e.bufferedPrompts=[],e.active=!1,e.driver=null,e.isResponding=!1,e.currentReplyText="",this.updateGauges(),this.touchSession(e.sessionId),v.error({sessionId:s,cwd:e.cwd,error:String(a)},"async codex createSession error"),this.broadcast(e.sessionId,{type:"error",sessionId:e.sessionId,message:`Failed to start Codex session: ${String(a)}`})}})()}configureDriverBeforeStart(e,n,r){if(e!=="claude"||!(n instanceof tn))return;let s=r??(0,Xs.randomUUID)().replace(/-/g,"");return n.configureHookBridge(_.port,s),s}registerClaudeHookSession(e){e.agent!=="claude"||!e.claudeHookSecret||this.claudeHookSessions.set(e.claudeHookSecret,e)}unregisterClaudeHookSession(e){if(e.agent!=="claude"||!e.claudeHookSecret)return;this.claudeHookSessions.get(e.claudeHookSecret)===e&&this.claudeHookSessions.delete(e.claudeHookSecret)}resolvePendingClaudeHookApprovals(e,n=en){for(let r of e.pendingClaudeHookApprovals.values())r.resolve(n);e.pendingClaudeHookApprovals.clear(),e.pendingApproval&&Ng(e.pendingApproval.requestId)&&(e.pendingApproval=void 0)}resolveClaudeHookSession(e){if(!e)return;let n=e.trim();if(n)return this.claudeHookSessions.get(n)}handleClaudeSessionStartHook(e,n){let r=this.resolveClaudeHookSession(e);return r?(this.touchSession(r.sessionId),!0):(v.warn({secretPresent:!!e},"received Claude session-start hook for unknown session"),!1)}async handleClaudePermissionHook(e,n){let r=this.resolveClaudeHookSession(e);if(!r||r.agent!=="claude"||!r.active)return v.warn({secretPresent:!!e},"received Claude permission hook for unknown or inactive session"),en;if(r.approvalMode==="autoApprove")return Rc(!0);let i=(typeof n.tool_name=="string"?n.tool_name:typeof n.toolName=="string"?n.toolName:"").trim();if(!i)return en;let o=n.tool_input??n.toolInput,a=o&&typeof o=="object"&&!Array.isArray(o)?o:{},l=typeof n.tool_use_id=="string"?n.tool_use_id:typeof n.toolUseId=="string"?n.toolUseId:"",c=`${Cs}${l.trim()||(0,Xs.randomUUID)()}`,u=r.pendingClaudeHookApprovals.get(c);if(u)return u.promise;let d=`Claude requested permissions to use ${i}.`,f,h=new Promise(p=>{f=p});return r.pendingClaudeHookApprovals.set(c,{requestId:c,promise:h,resolve:p=>{r.pendingClaudeHookApprovals.delete(c),f(p)}}),r.pendingApproval={requestId:c,toolName:i,input:a,description:d},w.emit("approval.request",{agent:"claude",sessionId:r.sessionId,toolName:i}),this.touchSession(r.sessionId),this.broadcast(r.sessionId,{type:"approval.request",sessionId:r.sessionId,requestId:c,toolName:i,input:a,description:d}),h}async resolveReconnectSession(e,n,r){if(this.isDeletedSession(e))return;let s=new Date().toISOString(),i=r?.agent,o=r?.cwd??"",a=r?.approvalMode,l=r?.title??"",c=r?.createdAt??s,u=r?.lastActivityAt??s,d=or(r?.acceptedClientMessageIds),f=r?"memory":"client",h=this.store.find(e);if(h)i=h.agent,o=h.cwd||o,a=h.approvalMode??a,l=h.title||l,c=h.createdAt||c,u=h.lastActivityAt||u,d=or(h.acceptedClientMessageIds,d),f="record";else if(!r){let g=(await sn(n??i)).find(y=>y.sessionId===e);g&&(i=g.agent,o=g.cwd||o,l=g.title??l,c=g.createdAt,u=g.lastActivityAt,f="scanner")}if(!i&&n&&(i=n,f=r?"memory":"client"),!!i)return{agent:i,cwd:o,approvalMode:a,title:l,createdAt:c,lastActivityAt:u,acceptedClientMessageIds:d,source:f,managed:r?.managed??h?.managed}}resendPendingApproval(e,n){if(!e.pendingApproval||n.readyState!==1)return;let{requestId:r,toolName:s,input:i,description:o}=e.pendingApproval;v.info({sessionId:e.sessionId,requestId:r,toolName:s},"resending pending approval to reconnected client");let a={type:"approval.request",sessionId:e.sessionId,requestId:r,toolName:s,input:i,description:o};n.send(JSON.stringify(a))}buildPushBody(e){let n=e.replace(/\s+/g," ").trim();return n?n.length<=Cc?n:`${n.slice(0,Math.max(1,Cc-3)).trimEnd()}...`:Mg}currentPartialReplyText(e){return e?.isResponding&&e.currentReplyText.trim()?e.currentReplyText:void 0}touchSession(e,n=!0){let r=new Date().toISOString(),s=this.sessions.get(e);if(s){s.lastActivityAt=r,s.lastActivityTs=Date.now(),n&&this.store.upsert(ge(s));return}let i=this.store.find(e);i&&this.store.upsert({...i,lastActivityAt:r})}updateGauges(){let e=0;for(let n of this.sessions.values())n.active&&e++;b.gauge("session.active",e)}activeSessionSnapshots(){let e=[];for(let n of this.sessions.values())n.sessionId.startsWith("pending_")||n.active&&e.push({sessionId:n.sessionId,agent:n.agent,cwd:n.cwd,approvalMode:n.approvalMode,title:n.title,createdAt:n.createdAt,lastActivityAt:n.lastActivityAt,...n.pendingApproval?{needsAttention:!0}:{},...n.isResponding?{isResponding:!0}:{},managed:n.managed});return e}getDeletedSessionIds(){return new Set(this.store.getDeletedSessionIds())}isDeletedSession(e){return this.store.isDeleted(e)}async listRecentSessionsForContinue(e,n){return sn(e,n)}async handle(e,n){switch(v.debug({action:n.action},"handling client message"),n.action){case"session.create":await this.createSession(e,n.id,n.agent,n.cwd,n.approvalMode,n.continueSession);break;case"session.resume":await this.resumeSession(e,n.id,n.sessionId,n.agent);break;case"session.send":await this.sendMessage(e,n.id,n.sessionId,n.message,n.agent,n.clientMessageId);break;case"session.approve":await this.approve(e,n.id,n.sessionId,n.requestId,n.approved);break;case"session.setApprovalMode":await this.setApprovalMode(e,n.id,n.sessionId,n.approvalMode);break;case"session.interrupt":this.interrupt(e,n.id,n.sessionId);break;case"session.stop":this.stopSession(e,n.id,n.sessionId);break;case"session.delete":this.deleteSession(e,n.id,n.sessionId);break;case"session.history":await this.sendHistory(e,n.id,n.sessionId,n.agent);break;case"reconnect.snapshot":await this.sendReconnectSnapshot(e,n.id,n.agent,n.cwd,n.search,n.activeSessionId,n.activeAgent);break;case"sessions.list":await this.listSessions(e,n.id,n.agent,n.cwd,n.search,n.limit,n.cursor);break}}removeClient(e){for(let n of this.sessions.values())n.clients.delete(e)}shutdown(){this.stopIdleSweep();for(let e of this.sessions.values()){try{this.resolvePendingClaudeHookApprovals(e),e.driver?.stop()}catch(n){v.error({sessionId:e.sessionId,agent:e.agent,error:String(n)},"failed to stop session on shutdown")}e.active=!1,e.driver=null,e.clients.clear(),this.unregisterClaudeHookSession(e)}this.claudeHookSessions.clear(),this.store.flushSync()}getActiveSessionCount(){let e=0;for(let n of this.sessions.values())n.active&&e++;return e}prewarmCaches(){Zn({limit:50,activeSessions:this.activeSessionSnapshots(),sessionRecords:this.store.getAll(),deletedSessionIds:this.getDeletedSessionIds()}).catch(()=>{})}getDriverCounts(){let e={};for(let n of this.sessions.values())n.active&&(e[n.agent]=(e[n.agent]??0)+1);return e}async createSession(e,n,r,s,i,o){s=rr(s),v.info({agent:r,cwd:s,approvalMode:i,continueSession:o},"creating session");try{if(!(await(0,Lc.stat)(s)).isDirectory()){this.reply(e,n,!1,void 0,`Path is not a directory: ${s}`);return}}catch{this.reply(e,n,!1,void 0,`Directory does not exist: ${s}`);return}if(o)try{let l=(await this.listRecentSessionsForContinue(r,s)).find(c=>!this.isDeletedSession(c.sessionId));if(l)return v.info({sessionId:l.sessionId,cwd:s},"continue mode: resuming last session"),this.resumeSession(e,n,l.sessionId,r,s,i);v.info("continue mode: no previous sessions found, creating new")}catch(a){v.warn({error:String(a)},"continue mode: error finding sessions, creating new")}try{let a=this.createDriver(r),l=this.configureDriverBeforeStart(r,a);if(r==="codex"){let h=`pending_${Date.now()}`;v.info({sessionId:h,agent:r,cwd:s},"session created (pending codex startup)"),b.increment("session.create",{agent:r}),w.emit("session.create",{sessionId:h,agent:r,cwd:s,approvalMode:i});let p={sessionId:h,agent:r,cwd:s,approvalMode:i,driver:a,clients:new Set([e]),title:"New session",createdAt:new Date().toISOString(),lastActivityAt:new Date().toISOString(),active:!0,lastActivityTs:Date.now(),isResponding:!1,currentReplyText:"",acceptedClientMessageIds:[],syntheticApprovalRetries:{},startupInProgress:!0,bufferedPrompts:[],startupToken:1,managed:!0,claudeHookSecret:l,pendingClaudeHookApprovals:new Map};this.sessions.set(h,p),this.registerClaudeHookSession(p),this.store.upsert(ge(p)),this.updateGauges(),tr(),Xn(),this.bindDriverLifecycle(p,r,"",e),this.reply(e,n,!0,{sessionId:h}),this.startPendingCodexSession(p,e);return}let c=b.startTimer("driver.spawn"),u=await a.start(s,void 0,i),d=c();v.info({sessionId:u,agent:r,spawnMs:d},"session created"),b.increment("session.create",{agent:r}),w.emit("session.create",{sessionId:u,agent:r,cwd:s,approvalMode:i});let f={sessionId:u,agent:r,cwd:s,approvalMode:i,driver:a,clients:new Set([e]),title:"New session",createdAt:new Date().toISOString(),lastActivityAt:new Date().toISOString(),active:!0,lastActivityTs:Date.now(),isResponding:!1,currentReplyText:"",acceptedClientMessageIds:[],syntheticApprovalRetries:{},startupInProgress:!1,bufferedPrompts:[],startupToken:0,managed:!0,claudeHookSecret:l,pendingClaudeHookApprovals:new Map};this.sessions.set(u,f),this.registerClaudeHookSession(f),this.store.upsert(ge(f)),this.updateGauges(),tr(),Xn(),this.bindDriverLifecycle(f,r,"",e),this.reply(e,n,!0,{sessionId:u})}catch(a){v.error({agent:r,cwd:s,error:String(a)},"createSession error"),this.reply(e,n,!1,void 0,String(a))}}async resumeSession(e,n,r,s,i,o){if(this.isDeletedSession(r)){this.reply(e,n,!1,void 0,"Session not found");return}let a=this.sessions.get(r);if(a&&a.active){a.clients.add(e),this.touchSession(a.sessionId);let f=await on(r,s,a.cwd),h=this.currentPartialReplyText(a);if(f.length>0||h||a.approvalMode){let p={type:"session.history",sessionId:r,messages:f,isResponding:a.isResponding||void 0,partialReplyText:h,approvalMode:a.approvalMode};e.send(JSON.stringify(p))}this.resendPendingApproval(a,e),this.reply(e,n,!0,{sessionId:r});return}let l=this.store.find(r),c=i||l?.cwd||"",u=o??l?.approvalMode,d=l?.title??"Resumed session";try{let f=b.startTimer("driver.spawn"),h=this.createDriver(s),p=this.configureDriverBeforeStart(s,h),g=await h.start(c,r,u),y=f();v.info({sessionId:g,agent:s,spawnMs:y},"session resumed"),b.increment("session.resume",{agent:s}),w.emit("session.resume",{sessionId:g,agent:s,cwd:c});let S={sessionId:g,agent:s,cwd:c,approvalMode:u,driver:h,clients:new Set([e]),title:d,createdAt:l?.createdAt??new Date().toISOString(),lastActivityAt:new Date().toISOString(),active:!0,lastActivityTs:Date.now(),isResponding:!1,currentReplyText:"",acceptedClientMessageIds:l?.acceptedClientMessageIds??[],syntheticApprovalRetries:{},startupInProgress:!1,bufferedPrompts:[],startupToken:0,managed:l?.managed,claudeHookSecret:p,pendingClaudeHookApprovals:new Map};this.sessions.set(g,S),this.registerClaudeHookSession(S),this.store.upsert(ge(S)),this.updateGauges(),this.bindDriverLifecycle(S,s," (resumed)",e);let G=await on(r,s,c);if(G.length>0){v.info({sessionId:r,historyCount:G.length},"sending history messages");let re={type:"session.history",sessionId:g,messages:G,approvalMode:u};e.send(JSON.stringify(re))}this.reply(e,n,!0,{sessionId:g})}catch(f){this.reply(e,n,!1,void 0,String(f))}}hasAcceptedClientMessage(e,n){return e.acceptedClientMessageIds.includes(n)}rememberAcceptedClientMessage(e,n){this.hasAcceptedClientMessage(e,n)||(e.acceptedClientMessageIds.push(n),e.acceptedClientMessageIds.length>ar&&e.acceptedClientMessageIds.splice(0,e.acceptedClientMessageIds.length-ar))}async sendMessage(e,n,r,s,i,o){if(this.isDeletedSession(r)){this.reply(e,n,!1,void 0,"Session not found");return}let a=this.sessions.get(r);if(!a||!a.driver){let l=await this.resolveReconnectSession(r,i,a);if(!l){v.warn({sessionId:r},"session not found in records or scanner"),this.reply(e,n,!1,void 0,"Session not found");return}v.info({sessionId:r,agent:l.agent,source:l.source},"auto-reconnecting session"),b.increment("session.reconnect",{agent:l.agent,source:l.source}),w.emit("session.reconnect",{sessionId:r,agent:l.agent,source:l.source});try{let c=this.createDriver(l.agent),u=this.configureDriverBeforeStart(l.agent,c,a?.claudeHookSecret);await c.start(l.cwd,r,l.approvalMode),a?(a.approvalMode=l.approvalMode,a.driver=c,a.active=!0,a.clients.add(e),a.lastActivityAt=l.lastActivityAt,a.lastActivityTs=Date.now(),a.isResponding=!1,a.currentReplyText="",a.acceptedClientMessageIds=or(a.acceptedClientMessageIds,l.acceptedClientMessageIds),a.syntheticApprovalRetries=a.syntheticApprovalRetries??{},a.startupInProgress=!1,a.bufferedPrompts=a.bufferedPrompts??[],a.startupToken=a.startupToken??0,a.claudeHookSecret=u??a.claudeHookSecret,a.pendingClaudeHookApprovals=a.pendingClaudeHookApprovals??new Map):(a={sessionId:r,agent:l.agent,cwd:l.cwd,approvalMode:l.approvalMode,driver:c,clients:new Set([e]),title:l.title,createdAt:l.createdAt,lastActivityAt:l.lastActivityAt,active:!0,lastActivityTs:Date.now(),isResponding:!1,currentReplyText:"",acceptedClientMessageIds:l.acceptedClientMessageIds,syntheticApprovalRetries:{},startupInProgress:!1,bufferedPrompts:[],startupToken:0,managed:l.managed,claudeHookSecret:u,pendingClaudeHookApprovals:new Map},this.sessions.set(r,a)),this.registerClaudeHookSession(a),this.bindDriverLifecycle(a,l.agent," (reconnected)"),this.store.upsert(ge(a)),this.updateGauges()}catch(c){this.reply(e,n,!1,void 0,`Failed to reconnect: ${c}`);return}}if(a.clients.add(e),o&&this.hasAcceptedClientMessage(a,o)){this.reply(e,n,!0,{sessionId:r,clientMessageId:o,duplicate:!0});return}if(v.info({sessionId:r,clients:a.clients.size,hasDriver:!!a.driver,active:a.active},"sending message"),w.emit("session.send",{sessionId:r,agent:a.agent,messagePreview:s.slice(0,100)}),ht(a.title)){let l=Os(s,50);l&&l!==a.title&&(a.title=l),this.store.upsert(ge(a))}if(o&&this.rememberAcceptedClientMessage(a,o),this.touchSession(a.sessionId),a.isResponding=!0,a.currentReplyText="",a.lastUserMessage=s,a.startupInProgress){a.bufferedPrompts.push(s),this.reply(e,n,!0,o?{sessionId:r,clientMessageId:o}:void 0);return}a.driver.sendPrompt(s),this.reply(e,n,!0,o?{sessionId:r,clientMessageId:o}:void 0)}async sendReconnectSnapshot(e,n,r,s,i,o,a){try{let l=this.getDeletedSessionIds(),c;try{c=await Zn({agent:r,cwd:s,search:i,limit:50,activeSessions:this.activeSessionSnapshots(),sessionRecords:this.store.getAll(),deletedSessionIds:l})}catch(d){v.warn({error:String(d)},"failed to build reconnect snapshot session list"),c={sessions:[],nextCursor:void 0}}let u;if(o&&!l.has(o)){let d=a??c.sessions.find(p=>p.sessionId===o)?.agent,f=this.sessions.get(o),h=await this.resolveReconnectSession(o,d,f);if(h){let p=await on(o,h.agent,f?.cwd??h.cwd);u={sessionId:o,agent:h.agent,messages:p,isResponding:f?.isResponding||void 0,partialReplyText:this.currentPartialReplyText(f),approvalMode:f?.approvalMode??h.approvalMode,...f?.pendingApproval?{pendingApproval:f.pendingApproval}:{}}}}b.increment("reconnect.snapshot",{activeSession:u?"true":"false"}),this.reply(e,n,!0,{snapshot:{sessions:c.sessions,nextCursor:c.nextCursor,...u?{activeSession:u}:{}}})}catch(l){this.reply(e,n,!1,void 0,`Failed to build reconnect snapshot: ${String(l)}`)}}async approve(e,n,r,s,i){let o=this.sessions.get(r),a=o?.pendingClaudeHookApprovals.get(s);if(o&&a){o.pendingApproval=void 0,w.emit("approval.response",{sessionId:r,requestId:s,approved:i}),this.touchSession(o.sessionId),a.resolve(Rc(i)),o.isResponding=!0,this.reply(e,n,!0);return}o&&(o.pendingApproval=void 0);let l=o?.syntheticApprovalRetries[s];if(o&&l&&Vn(s)){delete o.syntheticApprovalRetries[s],w.emit("approval.response",{sessionId:r,requestId:s,approved:i}),this.touchSession(o.sessionId),this.reply(e,n,!0),i&&await this.retrySyntheticClaudeApproval(o,l);return}if(!o?.driver){this.reply(e,n,!1,void 0,"Session not found or inactive");return}if(w.emit("approval.response",{sessionId:r,requestId:s,approved:i}),this.touchSession(o.sessionId),!o.driver.respondApproval(s,i)){this.reply(e,n,!1,void 0,"Agent process is not running. Send a new message to continue.");return}o.isResponding=!0,this.reply(e,n,!0)}async retrySyntheticClaudeApproval(e,n){if(e.agent==="claude")try{e.driver&&e.driver.stop();let r=["Write","Edit","NotebookEdit"].includes(n.toolName)?"acceptEdits":"autoApprove",s=this.createDriver(e.agent),i=this.configureDriverBeforeStart(e.agent,s,e.claudeHookSecret);await s.start(e.cwd,e.sessionId,r),e.driver=s,e.active=!0,e.isResponding=!0,e.currentReplyText="",e.lastUserMessage=n.message,e.startupInProgress=!1,e.bufferedPrompts=[],e.startupToken=0,e.claudeHookSecret=i??e.claudeHookSecret,e.pendingClaudeHookApprovals=e.pendingClaudeHookApprovals??new Map,this.registerClaudeHookSession(e),this.bindDriverLifecycle(e,e.agent," (approval retry)"),this.store.upsert(ge(e)),this.updateGauges(),this.touchSession(e.sessionId),v.info({sessionId:e.sessionId,toolName:n.toolName,retryApprovalMode:r},"retrying Claude turn after synthetic approval"),s.sendPrompt(n.message)}catch(r){e.driver=null,e.active=!1,e.isResponding=!1,e.startupInProgress=!1,e.bufferedPrompts=[],e.startupToken+=1,this.updateGauges(),this.touchSession(e.sessionId),v.error({sessionId:e.sessionId,error:String(r)},"failed to retry Claude turn after approval"),this.broadcast(e.sessionId,{type:"error",sessionId:e.sessionId,message:`Failed to continue after approval: ${String(r)}`})}}async setApprovalMode(e,n,r,s){let i=this.sessions.get(r);if(!i){let a=this.store.find(r);a?(a.approvalMode=s,this.store.upsert(a),v.info({sessionId:r,agent:a.agent,newMode:s},"approval mode changed (inactive session)")):v.info({sessionId:r,newMode:s},"approval mode changed (untracked session)"),this.reply(e,n,!0,{approvalMode:s});return}let o=i.approvalMode;if(i.approvalMode=s,this.store.upsert(ge(i)),v.info({sessionId:r,agent:i.agent,oldMode:o,newMode:s},"approval mode changed"),i.driver&&(i.driver.setApprovalMode(s),i.agent==="codex"&&i.active&&o!==s))try{i.driver.stop();let a=this.createDriver("codex");await a.start(i.cwd,i.sessionId,s),i.driver=a,this.bindDriverLifecycle(i,"codex"," (mode change)"),v.info({sessionId:r},"codex driver restarted with new approval mode")}catch(a){v.error({sessionId:r,error:String(a)},"failed to restart codex after approval mode change"),i.driver=null,i.active=!1,this.updateGauges()}this.reply(e,n,!0,{approvalMode:s})}interrupt(e,n,r){let s=this.sessions.get(r);if(!s?.driver){this.reply(e,n,!1,void 0,"Session not found or inactive");return}w.emit("session.interrupt",{sessionId:r,agent:s.agent}),s.driver.interrupt(),this.reply(e,n,!0)}stopSession(e,n,r){let s=this.sessions.get(r);if(!s){this.reply(e,n,!1,void 0,"Session not found");return}v.info({sessionId:r,agent:s.agent},"stopping session"),w.emit("session.stop",{sessionId:r,agent:s.agent}),this.resolvePendingClaudeHookApprovals(s),s.driver?.stop(),s.active=!1,s.driver=null,s.startupInProgress=!1,s.bufferedPrompts=[],s.startupToken+=1,this.updateGauges(),this.touchSession(s.sessionId),this.reply(e,n,!0)}deleteSession(e,n,r){let s=this.sessions.get(r);s&&(v.info({sessionId:r,agent:s.agent},"deleting session"),this.resolvePendingClaudeHookApprovals(s),s.driver?.stop(),s.startupInProgress=!1,s.bufferedPrompts=[],s.startupToken+=1,this.unregisterClaudeHookSession(s),this.sessions.delete(r)),w.emit("session.delete",{sessionId:r}),this.store.remove(r),this.updateGauges(),tr(),Xn(),this.reply(e,n,!0)}async sendHistory(e,n,r,s){let i=this.sessions.get(r);if(!i&&this.isDeletedSession(r)){this.reply(e,n,!1,void 0,"Session not found");return}i&&i.clients.add(e);let o=i?.cwd??this.store.find(r)?.cwd??"",a=await on(r,s,o);v.info({sessionId:r,historyCount:a.length,isResponding:i?.isResponding,approvalMode:i?.approvalMode},"sending history");let l={type:"session.history",sessionId:r,messages:a,isResponding:i?.isResponding||void 0,partialReplyText:this.currentPartialReplyText(i),approvalMode:i?.approvalMode};e.send(JSON.stringify(l)),i&&this.resendPendingApproval(i,e),this.reply(e,n,!0)}async listSessions(e,n,r,s,i,o=50,a){try{let l=await Zn({agent:r,cwd:s,search:i,limit:o,cursor:a,activeSessions:this.activeSessionSnapshots(),sessionRecords:this.store.getAll(),deletedSessionIds:this.getDeletedSessionIds()});this.reply(e,n,!0,l)}catch(l){this.reply(e,n,!1,void 0,String(l))}}createDriver(e){switch(e){case"claude":return new tn;case"codex":return new Yn;default:throw new Error(`Unknown agent: ${e}`)}}broadcast(e,n){let r=this.sessions.get(e);if(!r){v.warn({sessionId:e,msgType:n.type},"broadcast target session not found");return}let s=JSON.stringify(n),i=r.clients.size,o=0,a=0;for(let l of r.clients)l.readyState===1?(l.send(s),o++):a++;if(a>0&&b.increment("broadcast.fail"),n.type!=="text.delta"&&v.debug({sessionId:e,msgType:n.type,sent:o,total:i},"broadcast"),n.type==="text.delta"){r.currentReplyText+=n.content;return}if(n.type==="session.done"){let l=r.title||e,c=this.buildPushBody(r.currentReplyText);r.currentReplyText="",this.pushSender(l,c,{sessionId:e,agent:r.agent});return}n.type==="session.interrupted"&&(r.currentReplyText="")}reply(e,n,r,s,i){if(e.readyState!==1)return;let o={type:"response",id:n,ok:r,data:s,error:i};e.send(JSON.stringify(o))}};function Zs(t,e){if(!e.deviceId){e.respond({type:"response",id:t.id,ok:!1,error:"device_auth_required"});return}t.action==="push.register"?e.registerToken(e.deviceId,t.pushToken):e.unregisterToken(e.deviceId,t.pushToken),e.respond({type:"response",id:t.id,ok:!0})}var Mc=require("child_process");function Og(t,e){return(0,Mc.execFileSync)(t,e,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}function Bg(t){let e=t.split(`
98
98
  `).map(n=>Number(n.trim())).filter(n=>Number.isFinite(n)&&n>0);return[...new Set(e)]}function Nc(t,e=Og){let n;try{n=Bg(e("lsof",["-ti",`tcp:${t}`]))}catch{return[]}return n.map(r=>{try{let s=e("ps",["-p",String(r),"-o","command="]);return s?{pid:r,command:s}:{pid:r}}catch{return{pid:r}}})}var vt=require("fs"),Qs=require("os"),Bc=require("crypto"),Dc=require("path");function Hc(t){return(0,Bc.randomBytes)(t).toString("base64url")}function Dg(){return`d_${Hc(12)}`}function Hg(){return(0,Qs.hostname)()}function Fg(){let t=(0,Qs.hostname)().trim().toLowerCase();return t?t.endsWith(".local")?t:`${t}.local`:"localhost"}function Ug(t){return{daemonId:Dg(),daemonSecret:Hc(32),displayName:Hg(),canonicalHost:Fg(),port:t,createdAt:new Date().toISOString()}}function Oc(t,e){(0,vt.mkdirSync)((0,Dc.dirname)(e),{recursive:!0}),(0,vt.writeFileSync)(e,JSON.stringify(t,null,2)+`
99
99
  `,"utf8")}function Fc(t,e=Il){try{let r=(0,vt.readFileSync)(e,"utf8"),s=JSON.parse(r);if(typeof s.daemonId=="string"&&typeof s.daemonSecret=="string"&&typeof s.displayName=="string"&&typeof s.canonicalHost=="string"&&typeof s.createdAt=="string"){let i={daemonId:s.daemonId,daemonSecret:s.daemonSecret,displayName:s.displayName,canonicalHost:s.canonicalHost,port:typeof s.port=="number"&&Number.isFinite(s.port)?s.port:t,createdAt:s.createdAt};return i.port!==t&&(i.port=t,Oc(i,e)),i}}catch{}let n=Ug(t);return Oc(n,e),n}var wt=require("crypto"),bt=require("fs"),qc=require("path");function ei(t){return(0,wt.randomBytes)(t).toString("base64url")}function ti(t){return(0,wt.createHash)("sha256").update(t).digest("hex")}function Uc(t,e){let n=Buffer.from(t),r=Buffer.from(e);return n.length!==r.length?!1:(0,wt.timingSafeEqual)(n,r)}function qg(t){try{let e=(0,bt.readFileSync)(t,"utf8"),n=JSON.parse(e);return Array.isArray(n)?n.filter(r=>r&&typeof r.deviceId=="string"&&typeof r.deviceName=="string"&&typeof r.tokenHash=="string"&&typeof r.createdAt=="string"&&typeof r.lastSeenAt=="string"&&(typeof r.revokedAt=="string"||r.revokedAt===null)):[]}catch{return[]}}function an(t,e){(0,bt.mkdirSync)((0,qc.dirname)(t),{recursive:!0}),(0,bt.writeFileSync)(t,JSON.stringify(e,null,2)+`
100
- `,"utf8")}var ar=class{constructor(e=xl){this.pairingsPath=e;this.records=qg(e)}records;windows=new Map;list(){return this.records.slice()}pairedCount(){return this.records.filter(e=>!e.revokedAt).length}openWindow(e=5*6e4){let n=`pair_${ei(8)}`,r=ei(24),s=new Date(Date.now()+e).toISOString(),i={pairingId:n,pairNonce:r,expiresAt:s};return this.windows.set(r,i),i}consumeWindow(e){let n=this.windows.get(e);return!n||(this.windows.delete(e),new Date(n.expiresAt).getTime()<Date.now())?null:n}issuePairToken(e,n){let r=new Date().toISOString(),s=ei(32),i={deviceId:e,deviceName:n,tokenHash:ti(s),createdAt:r,lastSeenAt:r,revokedAt:null},o=this.records.findIndex(a=>a.deviceId===e);return o>=0?this.records[o]=i:this.records.unshift(i),an(this.pairingsPath,this.records),s}validatePairToken(e,n,r=!0){let s=this.records.find(o=>o.deviceId===e&&!o.revokedAt);if(!s)return!1;let i=ti(n);return Uc(s.tokenHash,i)?(r&&(s.lastSeenAt=new Date().toISOString(),an(this.pairingsPath,this.records)),!0):!1}validateAnyPairToken(e,n=!0){let r=ti(e),s=this.records.find(i=>!i.revokedAt&&Uc(i.tokenHash,r));return s?(n&&(s.lastSeenAt=new Date().toISOString(),an(this.pairingsPath,this.records)),s):null}revoke(e){let n=this.records.find(r=>r.deviceId===e&&!r.revokedAt);return n?(n.revokedAt=new Date().toISOString(),an(this.pairingsPath,this.records),!0):!1}reset(){this.records=[],this.windows.clear(),an(this.pairingsPath,this.records)}};function It(t){return t?t==="127.0.0.1"||t==="::1"||t==="::ffff:127.0.0.1":!1}function Wg(t){return t&&t.match(/^Bearer\s+(.+)$/i)?.[1]?.trim()||null}function Wc(t,e){return Wg(t)??e}function ni(t,e){return!!(t&&e&&t===e)}function jc(t,e,n,r=!0){return t?ni(t,e)?!0:!!n(t,r):!1}var $c=require("child_process");function ri(t){let e=t.split(".");return e.length!==4?!1:e.every(n=>/^\d+$/.test(n)&&Number(n)>=0&&Number(n)<=255)}function zc(t){if(!ri(t))return!1;let[e,n]=t.split(".").map(Number);return e===100&&n>=64&&n<=127}function jg(t){if(!ri(t))return!1;let[e,n]=t.split(".").map(Number);return e===169&&n===254}function Gg(t){if(!ri(t))return!1;let[e,n]=t.split(".").map(Number);return e===198&&(n===18||n===19)}function si(t){return!!t&&!jg(t)&&!Gg(t)}function xt(t){if(!t)return;let e=t.trim().replace(/\.$/,"");return e?e.toLowerCase():void 0}function Vc(t){return t?t.split(",").map(e=>e.trim()).filter(Boolean):[]}function $g(t){let e=[],n=[];for(let r of Object.values(t))if(r)for(let s of r)s.internal||s.family!=="IPv4"||si(s.address)&&(zc(s.address)?e.push(s.address):n.push(s.address));return[...e,...n]}function Gc(t){let e=JSON.parse(t),n=xt(e.Self?.DNSName),r=(e.Self?.TailscaleIPs??[]).map(o=>xt(o)).filter(o=>!!o).filter(o=>zc(o)&&si(o)),s=r[0]??n,i=[...n&&n!==s?[n]:[],...r.filter(o=>o!==s)];return{canonicalHost:s,fallbackHosts:i}}function Yc(t=$c.execFileSync){let e=[process.env.TAILSCALE_SOCKET,"/tmp/tailscale.sock"].filter(Boolean);for(let n of e)try{let r=t("tailscale",["--socket",n,"status","--json"],{encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:1500});return Gc(r)}catch{}try{let n=t("tailscale",["status","--json"],{encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:1500});return Gc(n)}catch{return{fallbackHosts:[]}}}function Jc(t){let e=xt(t.canonicalHost),n=xt(t.configuredCanonicalHost)||xt(t.tailscaleCanonicalHost)||e||"localhost",r=[...e&&e!==n?[e]:[],...t.configuredFallbackHosts??[],...t.tailscaleFallbackHosts??[],...$g(t.interfaces)].map(s=>xt(s)).filter(s=>!!s).filter(s=>si(s)).filter((s,i,o)=>s!==n&&o.indexOf(s)===i);return{canonicalHost:n,fallbackHosts:r}}function Kc(t){if(typeof t=="string")return t;if(Buffer.isBuffer(t))return t.toString("utf8");if(Array.isArray(t))return Buffer.concat(t).toString("utf8");if(t instanceof ArrayBuffer)return Buffer.from(t).toString("utf8");if(ArrayBuffer.isView(t)){let e=t;return Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("utf8")}return String(t)}var W=L.child({module:"daemon"}),ln=L.child({module:"ws"}),le=new or,F=Fc(_.port),Re=new ar,lr=new Set,Ce=new WeakMap,Xc=!1,tu=Date.now(),Et=null;function Tt(){let t=Yc();return Jc({canonicalHost:F.canonicalHost,configuredCanonicalHost:_.canonicalHost,configuredFallbackHosts:Vc(_.fallbackHosts),tailscaleCanonicalHost:t.canonicalHost,tailscaleFallbackHosts:t.fallbackHosts,interfaces:(0,Qc.networkInterfaces)()})}async function ii(t){let e=[];for await(let r of t)e.push(Buffer.isBuffer(r)?r:Buffer.from(r));let n=Buffer.concat(e).toString("utf8");return n?JSON.parse(n):{}}function D(t,e,n){t.writeHead(e,{"Content-Type":"application/json"}),t.end(JSON.stringify(n,null,2))}function nu(){let t=Re.openWindow(),e=Tt(),n=e.canonicalHost,r=F.port,s=e.fallbackHosts.length>0?e.fallbackHosts:void 0;if(_.relayUrl)try{let i=new URL(_.relayUrl);n=i.hostname,r=i.port?Number(i.port):i.protocol==="https:"?443:80,s=[e.canonicalHost,...s??[]].filter(Boolean)}catch{W.warn({relayUrl:_.relayUrl},"invalid VIBELET_RELAY_URL, ignoring")}return{type:"vibelet-pair",daemonId:F.daemonId,displayName:F.displayName,canonicalHost:n,fallbackHosts:s,port:r,pairNonce:t.pairNonce,expiresAt:t.expiresAt}}async function zg(t){let e=await(0,Ge.readdir)(t),n=[];for(let r of e){if(r.startsWith("."))continue;let s=await(0,Ge.stat)((0,cr.join)(t,r)).catch(()=>null);s&&n.push({name:r,isDirectory:s.isDirectory()})}return n.sort((r,s)=>r.isDirectory!==s.isDirectory?r.isDirectory?-1:1:r.name.localeCompare(s.name)),{entries:n}}var cn=(0,Zc.createServer)(async(t,e)=>{let n=new URL(t.url??"/",`http://localhost:${_.port}`);if(n.pathname==="/health"){let s=Tt(),i={status:"ok",version:ft,daemonId:F.daemonId,displayName:F.displayName,canonicalHost:s.canonicalHost,uptimeSeconds:Math.round((Date.now()-tu)/1e3),activeSessions:le.getActiveSessionCount(),pairedDevices:Re.pairedCount(),wsClients:ne.clients.size,drivers:le.getDriverCounts(),metrics:b.snapshot()};_.relayUrl&&(i.relayUrl=_.relayUrl),D(e,200,i);return}if(t.method==="POST"&&n.pathname==="/pair/open"){if(!It(t.socket.remoteAddress)){D(e,403,{error:"forbidden"});return}D(e,200,nu());return}if(t.method==="POST"&&n.pathname==="/pair/reset"){if(!It(t.socket.remoteAddress)){D(e,403,{error:"forbidden"});return}Re.reset(),D(e,200,{ok:!0});return}if(t.method==="POST"&&n.pathname==="/shutdown"){if(!It(t.socket.remoteAddress)){D(e,403,{error:"forbidden"});return}D(e,200,{status:"stopping"}),setTimeout(()=>$e("HTTP /shutdown request"),50);return}if(t.method==="POST"&&n.pathname==="/hook/claude/session-start"){if(!It(t.socket.remoteAddress)){D(e,403,{error:"forbidden"});return}try{let s=await ii(t),i=t.headers[Qt],o=Array.isArray(i)?i[0]:i;le.handleClaudeSessionStartHook(o,s),D(e,200,{ok:!0})}catch(s){D(e,400,{error:String(s)})}return}if(t.method==="POST"&&n.pathname==="/hook/claude/permission-request"){if(!It(t.socket.remoteAddress)){D(e,403,{error:"forbidden"});return}try{let s=await ii(t),i=t.headers[Qt],o=Array.isArray(i)?i[0]:i,a=await le.handleClaudePermissionHook(o,s);D(e,200,a)}catch(s){D(e,400,{error:String(s)})}return}if(t.method==="POST"&&n.pathname==="/pair/create"){try{let s=await ii(t);if(s.daemonId!==F.daemonId||typeof s.pairNonce!="string"||typeof s.deviceId!="string"||typeof s.deviceName!="string"){D(e,400,{error:"invalid_pair_request"});return}if(!Re.consumeWindow(s.pairNonce)){D(e,401,{error:"pair_window_expired"});return}let o=Re.issuePairToken(s.deviceId,s.deviceName),a=Tt();D(e,200,{daemonId:F.daemonId,displayName:F.displayName,canonicalHost:a.canonicalHost,fallbackHosts:a.fallbackHosts,port:F.port,deviceId:s.deviceId,pairToken:o})}catch(s){D(e,400,{error:String(s)})}return}let r=Wc(t.headers.authorization,n.searchParams.get("token"));if(!jc(r,_.legacyToken,(s,i)=>Re.validateAnyPairToken(s,i),!1)){e.writeHead(401),e.end("Unauthorized");return}if(n.pathname==="/file"){let s=n.searchParams.get("path");if(!s){e.writeHead(400),e.end("Missing path parameter");return}try{let i=tr(s);if(!(await(0,Ge.stat)(i)).isFile()){e.writeHead(404),e.end("Not a file");return}let a=(0,cr.extname)(i).toLowerCase(),c={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".svg":"image/svg+xml",".webp":"image/webp",".pdf":"application/pdf"}[a]||"application/octet-stream",u=await(0,Ge.readFile)(i);e.writeHead(200,{"Content-Type":c,"Content-Length":u.length}),e.end(u)}catch{e.writeHead(404),e.end("File not found")}return}e.writeHead(200),e.end(`Vibelet Daemon v${ft}`)}),ne=new Lr.default({server:cn});cn.on("connection",t=>{lr.add(t),t.on("close",()=>{lr.delete(t)})});ne.on("connection",(t,e)=>{let r=new URL(e.url??"/",`http://localhost:${_.port}`).searchParams.get("token");if(r&&ni(r,_.legacyToken))Ce.set(t,{authMode:"query_token"}),b.increment("ws.auth.success",{mode:"query_token"}),le.prewarmCaches();else if(r){let s=Re.validateAnyPairToken(r);if(s)Ce.set(t,{authMode:"query_token",deviceId:s.deviceId}),b.increment("ws.auth.success",{mode:"query_token"}),le.prewarmCaches();else{b.increment("ws.auth.failure",{mode:"query_token"}),t.close(4001,"Unauthorized");return}}ln.info({clients:ne.clients.size},"client connected"),b.increment("ws.connect"),b.gauge("ws.clients",ne.clients.size),v.emit("ws.connect",{clients:ne.clients.size,authMode:Ce.get(t)?.authMode??"pending",deviceId:Ce.get(t)?.deviceId}),t.on("message",async s=>{try{let i=JSON.parse(Kc(s));if(!i||typeof i.action!="string"){t.send(JSON.stringify({type:"error",sessionId:"",message:'Invalid message: missing or non-string "action" field'}));return}if(i.action==="ping"){t.send(JSON.stringify({type:"pong"}));return}let o=i;if(!Ce.has(t)){if(o.action==="auth.hello"&&o.daemonId===F.daemonId&&Re.validatePairToken(o.deviceId,o.pairToken)){Ce.set(t,{authMode:"auth_hello",deviceId:o.deviceId}),b.increment("ws.auth.success",{mode:"auth_hello"}),le.prewarmCaches(),t.send(JSON.stringify({type:"response",id:o.id,ok:!0,data:{daemonId:F.daemonId,displayName:F.displayName}}));return}if(o.action==="auth.hello"){b.increment("ws.auth.failure",{mode:"auth_hello"}),t.send(JSON.stringify({type:"response",id:o.id,ok:!1,error:"auth_failed"})),t.close(4001,"Unauthorized");return}b.increment("ws.auth.failure",{mode:"missing"}),t.send(JSON.stringify({type:"error",sessionId:"",message:"Authentication required"})),t.close(4001,"Unauthorized");return}if(o.action==="log.report"){for(let a of o.entries)v.emitApp(a.event,a.level,a.data??{},a.ts),(a.level==="error"?W.error:a.level==="warn"?W.warn:W.info).call(W,{event:a.event,...a.data},`[app] ${a.event}`);t.send(JSON.stringify({type:"response",id:o.id,ok:!0}));return}if(o.action==="dirs.list"){try{let a=await zg(o.path);t.send(JSON.stringify({type:"response",id:o.id,ok:!0,data:a}))}catch(a){t.send(JSON.stringify({type:"response",id:o.id,ok:!1,error:String(a)}))}return}if(i.action==="push.register"){let a=Ce.get(t);Zs(i,{deviceId:a?.deviceId,registerToken:Js,unregisterToken:Ks,respond:l=>t.send(JSON.stringify(l))});return}if(i.action==="push.unregister"){let a=Ce.get(t);Zs(i,{deviceId:a?.deviceId,registerToken:Js,unregisterToken:Ks,respond:l=>t.send(JSON.stringify(l))});return}await le.handle(t,o)}catch(i){ln.error({error:String(i)},"message handling error"),t.send(JSON.stringify({type:"error",sessionId:"",message:String(i)}))}}),t.on("close",s=>{ln.info({clients:ne.clients.size,code:s},"client disconnected"),b.increment("ws.disconnect"),b.increment("ws.disconnect.code",{code:String(s)}),b.gauge("ws.clients",ne.clients.size),v.emit("ws.disconnect",{clients:ne.clients.size,code:s}),le.removeClient(t)}),t.on("error",s=>{ln.error({error:s.message},"websocket error")})});function oi(){for(let t of lr)try{t.destroy()}catch{}lr.clear()}function ru(){let t=Dl({auditPath:ct,stdoutLogPath:Fn,stderrLogPath:Un,auditMaxBytes:_.auditMaxBytes,logMaxBytes:_.daemonLogMaxBytes});t.trimmedFiles>0&&W.info({trimmedFiles:t.trimmedFiles,reclaimedBytes:t.reclaimedBytes,files:t.files.filter(e=>e.trimmed).map(e=>({path:e.path,beforeBytes:e.beforeBytes,afterBytes:e.afterBytes}))},"trimmed vibelet storage")}function Vg(){Et||(Et=setInterval(ru,_.storageHousekeepingIntervalMs),Et.unref())}function Yg(){Et&&(clearInterval(Et),Et=null)}function $e(t,e=0){if(!Xc){Xc=!0,W.info({reason:t,exitCode:e},"shutting down"),v.emit("daemon.shutdown",{reason:t,exitCode:e,uptimeSeconds:Math.round((Date.now()-tu)/1e3)}),b.stopPeriodicLog(),Yg(),le.shutdown();for(let n of ne.clients)try{n.close(1001,"Server shutting down"),n.terminate()}catch{}ne.close(n=>{n&&W.error({error:String(n)},"websocket close error")}),cn.close(n=>{if(n){W.error({error:String(n)},"http close error"),oi(),process.exit(1);return}oi(),process.exit(e)}),setTimeout(()=>{W.error("force exiting after shutdown timeout"),oi(),process.exit(e||1)},3e3).unref()}}ne.on("error",t=>{ln.error({error:t.message},"wss error")});cn.on("error",t=>{if(t.code==="EADDRINUSE"){let e=Nc(_.port).filter(n=>n.pid!==process.pid);W.error({port:_.port,occupants:e},"port is already in use. Stop the existing process or use VIBE_PORT=<port> to specify another port")}else W.error({error:String(t)},"server error");$e(`httpServer error: ${t.code??t.message}`,1)});process.once("SIGINT",()=>$e("SIGINT"));process.once("SIGTERM",()=>$e("SIGTERM"));process.once("SIGHUP",()=>$e("SIGHUP"));process.once("SIGTTIN",()=>$e("SIGTTIN"));process.once("SIGTSTP",()=>$e("SIGTSTP"));process.on("uncaughtException",t=>{W.error({error:String(t),stack:t.stack},"uncaughtException"),v.emit("daemon.error",{type:"uncaughtException",error:String(t)})});process.on("unhandledRejection",t=>{W.error({reason:String(t)},"unhandledRejection"),v.emit("daemon.error",{type:"unhandledRejection",reason:String(t)})});cn.listen(_.port,async()=>{ru(),v.emit("daemon.start",{port:_.port}),b.startPeriodicLog(),Vg(),W.info({port:_.port,daemonId:F.daemonId,displayName:F.displayName,canonicalHost:Tt().canonicalHost,fallbackHosts:Tt().fallbackHosts,claudePath:_.claudePath,codexPath:_.codexPath,auditMaxBytes:_.auditMaxBytes,daemonLogMaxBytes:_.daemonLogMaxBytes,storageHousekeepingIntervalMs:_.storageHousekeepingIntervalMs,turnStallTimeoutMs:_.turnStallTimeoutMs},"daemon started");let t=Tt(),e=nu();Yt(`
100
+ `,"utf8")}var cr=class{constructor(e=xl){this.pairingsPath=e;this.records=qg(e)}records;windows=new Map;list(){return this.records.slice()}pairedCount(){return this.records.filter(e=>!e.revokedAt).length}openWindow(e=5*6e4){let n=`pair_${ei(8)}`,r=ei(24),s=new Date(Date.now()+e).toISOString(),i={pairingId:n,pairNonce:r,expiresAt:s};return this.windows.set(r,i),i}consumeWindow(e){let n=this.windows.get(e);return!n||(this.windows.delete(e),new Date(n.expiresAt).getTime()<Date.now())?null:n}issuePairToken(e,n){let r=new Date().toISOString(),s=ei(32),i={deviceId:e,deviceName:n,tokenHash:ti(s),createdAt:r,lastSeenAt:r,revokedAt:null},o=this.records.findIndex(a=>a.deviceId===e);return o>=0?this.records[o]=i:this.records.unshift(i),an(this.pairingsPath,this.records),s}validatePairToken(e,n,r=!0){let s=this.records.find(o=>o.deviceId===e&&!o.revokedAt);if(!s)return!1;let i=ti(n);return Uc(s.tokenHash,i)?(r&&(s.lastSeenAt=new Date().toISOString(),an(this.pairingsPath,this.records)),!0):!1}validateAnyPairToken(e,n=!0){let r=ti(e),s=this.records.find(i=>!i.revokedAt&&Uc(i.tokenHash,r));return s?(n&&(s.lastSeenAt=new Date().toISOString(),an(this.pairingsPath,this.records)),s):null}revoke(e){let n=this.records.find(r=>r.deviceId===e&&!r.revokedAt);return n?(n.revokedAt=new Date().toISOString(),an(this.pairingsPath,this.records),!0):!1}reset(){this.records=[],this.windows.clear(),an(this.pairingsPath,this.records)}};function It(t){return t?t==="127.0.0.1"||t==="::1"||t==="::ffff:127.0.0.1":!1}function Wg(t){return t&&t.match(/^Bearer\s+(.+)$/i)?.[1]?.trim()||null}function Wc(t,e){return Wg(t)??e}function ni(t,e){return!!(t&&e&&t===e)}function jc(t,e,n,r=!0){return t?ni(t,e)?!0:!!n(t,r):!1}var $c=require("child_process");function ri(t){let e=t.split(".");return e.length!==4?!1:e.every(n=>/^\d+$/.test(n)&&Number(n)>=0&&Number(n)<=255)}function zc(t){if(!ri(t))return!1;let[e,n]=t.split(".").map(Number);return e===100&&n>=64&&n<=127}function jg(t){if(!ri(t))return!1;let[e,n]=t.split(".").map(Number);return e===169&&n===254}function Gg(t){if(!ri(t))return!1;let[e,n]=t.split(".").map(Number);return e===198&&(n===18||n===19)}function si(t){return!!t&&!jg(t)&&!Gg(t)}function xt(t){if(!t)return;let e=t.trim().replace(/\.$/,"");return e?e.toLowerCase():void 0}function Vc(t){return t?t.split(",").map(e=>e.trim()).filter(Boolean):[]}function $g(t){let e=[],n=[];for(let r of Object.values(t))if(r)for(let s of r)s.internal||s.family!=="IPv4"||si(s.address)&&(zc(s.address)?e.push(s.address):n.push(s.address));return[...e,...n]}function Gc(t){let e=JSON.parse(t),n=xt(e.Self?.DNSName),r=(e.Self?.TailscaleIPs??[]).map(o=>xt(o)).filter(o=>!!o).filter(o=>zc(o)&&si(o)),s=r[0]??n,i=[...n&&n!==s?[n]:[],...r.filter(o=>o!==s)];return{canonicalHost:s,fallbackHosts:i}}function Yc(t=$c.execFileSync){let e=[process.env.TAILSCALE_SOCKET,"/tmp/tailscale.sock"].filter(Boolean);for(let n of e)try{let r=t("tailscale",["--socket",n,"status","--json"],{encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:1500});return Gc(r)}catch{}try{let n=t("tailscale",["status","--json"],{encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:1500});return Gc(n)}catch{return{fallbackHosts:[]}}}function Jc(t){let e=xt(t.canonicalHost),n=xt(t.configuredCanonicalHost)||xt(t.tailscaleCanonicalHost)||e||"localhost",r=[...e&&e!==n?[e]:[],...t.configuredFallbackHosts??[],...t.tailscaleFallbackHosts??[],...$g(t.interfaces)].map(s=>xt(s)).filter(s=>!!s).filter(s=>si(s)).filter((s,i,o)=>s!==n&&o.indexOf(s)===i);return{canonicalHost:n,fallbackHosts:r}}function Kc(t){if(typeof t=="string")return t;if(Buffer.isBuffer(t))return t.toString("utf8");if(Array.isArray(t))return Buffer.concat(t).toString("utf8");if(t instanceof ArrayBuffer)return Buffer.from(t).toString("utf8");if(ArrayBuffer.isView(t)){let e=t;return Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString("utf8")}return String(t)}var W=L.child({module:"daemon"}),ln=L.child({module:"ws"}),le=new lr,F=Fc(_.port),Pe=new cr,ur=new Set,Ce=new WeakMap,Xc=!1,tu=Date.now(),Tt=null;function At(){let t=Yc();return Jc({canonicalHost:F.canonicalHost,configuredCanonicalHost:_.canonicalHost,configuredFallbackHosts:Vc(_.fallbackHosts),tailscaleCanonicalHost:t.canonicalHost,tailscaleFallbackHosts:t.fallbackHosts,interfaces:(0,Qc.networkInterfaces)()})}async function ii(t){let e=[];for await(let r of t)e.push(Buffer.isBuffer(r)?r:Buffer.from(r));let n=Buffer.concat(e).toString("utf8");return n?JSON.parse(n):{}}function D(t,e,n){t.writeHead(e,{"Content-Type":"application/json"}),t.end(JSON.stringify(n,null,2))}function nu(){let t=Pe.openWindow(),e=At(),n=e.canonicalHost,r=F.port,s=e.fallbackHosts.length>0?e.fallbackHosts:void 0;if(_.relayUrl)try{let i=new URL(_.relayUrl);n=i.hostname,r=i.port?Number(i.port):i.protocol==="https:"?443:80,s=[e.canonicalHost,...s??[]].filter(Boolean)}catch{W.warn({relayUrl:_.relayUrl},"invalid VIBELET_RELAY_URL, ignoring")}return{type:"vibelet-pair",daemonId:F.daemonId,displayName:F.displayName,canonicalHost:n,fallbackHosts:s,port:r,pairNonce:t.pairNonce,expiresAt:t.expiresAt}}async function zg(t){let e=await(0,Ge.readdir)(t),n=[];for(let r of e){if(r.startsWith("."))continue;let s=await(0,Ge.stat)((0,dr.join)(t,r)).catch(()=>null);s&&n.push({name:r,isDirectory:s.isDirectory()})}return n.sort((r,s)=>r.isDirectory!==s.isDirectory?r.isDirectory?-1:1:r.name.localeCompare(s.name)),{entries:n}}var cn=(0,Zc.createServer)(async(t,e)=>{let n=new URL(t.url??"/",`http://localhost:${_.port}`);if(n.pathname==="/health"){let s=At(),i={status:"ok",version:ft,daemonId:F.daemonId,displayName:F.displayName,canonicalHost:s.canonicalHost,uptimeSeconds:Math.round((Date.now()-tu)/1e3),activeSessions:le.getActiveSessionCount(),pairedDevices:Pe.pairedCount(),wsClients:ne.clients.size,drivers:le.getDriverCounts(),metrics:b.snapshot()};_.relayUrl&&(i.relayUrl=_.relayUrl),D(e,200,i);return}if(t.method==="POST"&&n.pathname==="/pair/open"){if(!It(t.socket.remoteAddress)){D(e,403,{error:"forbidden"});return}D(e,200,nu());return}if(t.method==="POST"&&n.pathname==="/pair/reset"){if(!It(t.socket.remoteAddress)){D(e,403,{error:"forbidden"});return}Pe.reset(),D(e,200,{ok:!0});return}if(t.method==="POST"&&n.pathname==="/shutdown"){if(!It(t.socket.remoteAddress)){D(e,403,{error:"forbidden"});return}D(e,200,{status:"stopping"}),setTimeout(()=>$e("HTTP /shutdown request"),50);return}if(t.method==="POST"&&n.pathname==="/hook/claude/session-start"){if(!It(t.socket.remoteAddress)){D(e,403,{error:"forbidden"});return}try{let s=await ii(t),i=t.headers[Qt],o=Array.isArray(i)?i[0]:i;le.handleClaudeSessionStartHook(o,s),D(e,200,{ok:!0})}catch(s){D(e,400,{error:String(s)})}return}if(t.method==="POST"&&n.pathname==="/hook/claude/permission-request"){if(!It(t.socket.remoteAddress)){D(e,403,{error:"forbidden"});return}try{let s=await ii(t),i=t.headers[Qt],o=Array.isArray(i)?i[0]:i,a=await le.handleClaudePermissionHook(o,s);D(e,200,a)}catch(s){D(e,400,{error:String(s)})}return}if(t.method==="POST"&&n.pathname==="/pair/create"){try{let s=await ii(t);if(s.daemonId!==F.daemonId||typeof s.pairNonce!="string"||typeof s.deviceId!="string"||typeof s.deviceName!="string"){D(e,400,{error:"invalid_pair_request"});return}if(!Pe.consumeWindow(s.pairNonce)){D(e,401,{error:"pair_window_expired"});return}let o=Pe.issuePairToken(s.deviceId,s.deviceName),a=At();D(e,200,{daemonId:F.daemonId,displayName:F.displayName,canonicalHost:a.canonicalHost,fallbackHosts:a.fallbackHosts,port:F.port,deviceId:s.deviceId,pairToken:o})}catch(s){D(e,400,{error:String(s)})}return}let r=Wc(t.headers.authorization,n.searchParams.get("token"));if(!jc(r,_.legacyToken,(s,i)=>Pe.validateAnyPairToken(s,i),!1)){e.writeHead(401),e.end("Unauthorized");return}if(n.pathname==="/file"){let s=n.searchParams.get("path");if(!s){e.writeHead(400),e.end("Missing path parameter");return}try{let i=rr(s);if(!(await(0,Ge.stat)(i)).isFile()){e.writeHead(404),e.end("Not a file");return}let a=(0,dr.extname)(i).toLowerCase(),c={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".svg":"image/svg+xml",".webp":"image/webp",".pdf":"application/pdf"}[a]||"application/octet-stream",u=await(0,Ge.readFile)(i);e.writeHead(200,{"Content-Type":c,"Content-Length":u.length}),e.end(u)}catch{e.writeHead(404),e.end("File not found")}return}e.writeHead(200),e.end(`Vibelet Daemon v${ft}`)}),ne=new Nr.default({server:cn});cn.on("connection",t=>{ur.add(t),t.on("close",()=>{ur.delete(t)})});ne.on("connection",(t,e)=>{let r=new URL(e.url??"/",`http://localhost:${_.port}`).searchParams.get("token");if(r&&ni(r,_.legacyToken))Ce.set(t,{authMode:"query_token"}),b.increment("ws.auth.success",{mode:"query_token"}),le.prewarmCaches();else if(r){let s=Pe.validateAnyPairToken(r);if(s)Ce.set(t,{authMode:"query_token",deviceId:s.deviceId}),b.increment("ws.auth.success",{mode:"query_token"}),le.prewarmCaches();else{b.increment("ws.auth.failure",{mode:"query_token"}),t.close(4001,"Unauthorized");return}}ln.info({clients:ne.clients.size},"client connected"),b.increment("ws.connect"),b.gauge("ws.clients",ne.clients.size),w.emit("ws.connect",{clients:ne.clients.size,authMode:Ce.get(t)?.authMode??"pending",deviceId:Ce.get(t)?.deviceId}),t.on("message",async s=>{try{let i=JSON.parse(Kc(s));if(!i||typeof i.action!="string"){t.send(JSON.stringify({type:"error",sessionId:"",message:'Invalid message: missing or non-string "action" field'}));return}if(i.action==="ping"){t.send(JSON.stringify({type:"pong"}));return}let o=i;if(!Ce.has(t)){if(o.action==="auth.hello"&&o.daemonId===F.daemonId&&Pe.validatePairToken(o.deviceId,o.pairToken)){Ce.set(t,{authMode:"auth_hello",deviceId:o.deviceId}),b.increment("ws.auth.success",{mode:"auth_hello"}),le.prewarmCaches(),t.send(JSON.stringify({type:"response",id:o.id,ok:!0,data:{daemonId:F.daemonId,displayName:F.displayName}}));return}if(o.action==="auth.hello"){b.increment("ws.auth.failure",{mode:"auth_hello"}),t.send(JSON.stringify({type:"response",id:o.id,ok:!1,error:"auth_failed"})),t.close(4001,"Unauthorized");return}b.increment("ws.auth.failure",{mode:"missing"}),t.send(JSON.stringify({type:"error",sessionId:"",message:"Authentication required"})),t.close(4001,"Unauthorized");return}if(o.action==="log.report"){for(let a of o.entries)w.emitApp(a.event,a.level,a.data??{},a.ts),(a.level==="error"?W.error:a.level==="warn"?W.warn:W.info).call(W,{event:a.event,...a.data},`[app] ${a.event}`);t.send(JSON.stringify({type:"response",id:o.id,ok:!0}));return}if(o.action==="dirs.list"){try{let a=await zg(o.path);t.send(JSON.stringify({type:"response",id:o.id,ok:!0,data:a}))}catch(a){t.send(JSON.stringify({type:"response",id:o.id,ok:!1,error:String(a)}))}return}if(i.action==="push.register"){let a=Ce.get(t);Zs(i,{deviceId:a?.deviceId,registerToken:Js,unregisterToken:Ks,respond:l=>t.send(JSON.stringify(l))});return}if(i.action==="push.unregister"){let a=Ce.get(t);Zs(i,{deviceId:a?.deviceId,registerToken:Js,unregisterToken:Ks,respond:l=>t.send(JSON.stringify(l))});return}await le.handle(t,o)}catch(i){ln.error({error:String(i)},"message handling error"),t.send(JSON.stringify({type:"error",sessionId:"",message:String(i)}))}}),t.on("close",s=>{ln.info({clients:ne.clients.size,code:s},"client disconnected"),b.increment("ws.disconnect"),b.increment("ws.disconnect.code",{code:String(s)}),b.gauge("ws.clients",ne.clients.size),w.emit("ws.disconnect",{clients:ne.clients.size,code:s}),le.removeClient(t)}),t.on("error",s=>{ln.error({error:s.message},"websocket error")})});function oi(){for(let t of ur)try{t.destroy()}catch{}ur.clear()}function ru(){let t=Dl({auditPath:ct,stdoutLogPath:Fn,stderrLogPath:Un,auditMaxBytes:_.auditMaxBytes,logMaxBytes:_.daemonLogMaxBytes});t.trimmedFiles>0&&W.info({trimmedFiles:t.trimmedFiles,reclaimedBytes:t.reclaimedBytes,files:t.files.filter(e=>e.trimmed).map(e=>({path:e.path,beforeBytes:e.beforeBytes,afterBytes:e.afterBytes}))},"trimmed vibelet storage")}function Vg(){Tt||(Tt=setInterval(ru,_.storageHousekeepingIntervalMs),Tt.unref())}function Yg(){Tt&&(clearInterval(Tt),Tt=null)}function $e(t,e=0){if(!Xc){Xc=!0,W.info({reason:t,exitCode:e},"shutting down"),w.emit("daemon.shutdown",{reason:t,exitCode:e,uptimeSeconds:Math.round((Date.now()-tu)/1e3)}),b.stopPeriodicLog(),Yg(),le.shutdown();for(let n of ne.clients)try{n.close(1001,"Server shutting down"),n.terminate()}catch{}ne.close(n=>{n&&W.error({error:String(n)},"websocket close error")}),cn.close(n=>{if(n){W.error({error:String(n)},"http close error"),oi(),process.exit(1);return}oi(),process.exit(e)}),setTimeout(()=>{W.error("force exiting after shutdown timeout"),oi(),process.exit(e||1)},3e3).unref()}}ne.on("error",t=>{ln.error({error:t.message},"wss error")});cn.on("error",t=>{if(t.code==="EADDRINUSE"){let e=Nc(_.port).filter(n=>n.pid!==process.pid);W.error({port:_.port,occupants:e},"port is already in use. Stop the existing process or use VIBE_PORT=<port> to specify another port")}else W.error({error:String(t)},"server error");$e(`httpServer error: ${t.code??t.message}`,1)});process.once("SIGINT",()=>$e("SIGINT"));process.once("SIGTERM",()=>$e("SIGTERM"));process.once("SIGHUP",()=>$e("SIGHUP"));process.once("SIGTTIN",()=>$e("SIGTTIN"));process.once("SIGTSTP",()=>$e("SIGTSTP"));process.on("uncaughtException",t=>{W.error({error:String(t),stack:t.stack},"uncaughtException"),w.emit("daemon.error",{type:"uncaughtException",error:String(t)})});process.on("unhandledRejection",t=>{W.error({reason:String(t)},"unhandledRejection"),w.emit("daemon.error",{type:"unhandledRejection",reason:String(t)})});cn.listen(_.port,async()=>{ru(),w.emit("daemon.start",{port:_.port}),b.startPeriodicLog(),Vg(),W.info({port:_.port,daemonId:F.daemonId,displayName:F.displayName,canonicalHost:At().canonicalHost,fallbackHosts:At().fallbackHosts,claudePath:_.claudePath,codexPath:_.codexPath,auditMaxBytes:_.auditMaxBytes,daemonLogMaxBytes:_.daemonLogMaxBytes,storageHousekeepingIntervalMs:_.storageHousekeepingIntervalMs,turnStallTimeoutMs:_.turnStallTimeoutMs},"daemon started");let t=At(),e=nu();Yt(`
101
101
  \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557
102
102
  \u2551 Vibelet Daemon v${ft} \u2551
103
103
  \u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibelet/cli",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "macOS CLI for installing and running the Vibelet daemon",
5
5
  "private": false,
6
6
  "files": [