vibelet 0.1.7 → 0.1.9

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 +38 -38
  2. package/package.json +18 -1
package/dist/index.cjs CHANGED
@@ -1,28 +1,28 @@
1
- "use strict";var au=Object.create;var ai=Object.defineProperty;var lu=Object.getOwnPropertyDescriptor;var cu=Object.getOwnPropertyNames;var uu=Object.getPrototypeOf,du=Object.prototype.hasOwnProperty;var y=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var fu=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of cu(e))!du.call(t,s)&&s!==n&&ai(t,s,{get:()=>e[s],enumerable:!(r=lu(e,s))||r.enumerable});return t};var Ve=(t,e,n)=>(n=t!=null?au(uu(t)):{},fu(e||!t||!t.__esModule?ai(n,"default",{value:t,enumerable:!0}):n,t));var de=y((cm,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 xt=y((um,dn)=>{"use strict";var{EMPTY_BUFFER:pu}=de(),pr=Buffer[Symbol.species];function hu(t,e){if(t.length===0)return pu;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 pr(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 gu(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function hr(t){if(hr.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new pr(t):ArrayBuffer.isView(t)?e=new pr(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),hr.readOnly=!1),e}dn.exports={concat:hu,mask:di,toArrayBuffer:gu,toBuffer:hr,unmask:fi};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");dn.exports.mask=function(e,n,r,s,i){i<48?di(e,n,r,s,i):t.mask(e,n,r,s,i)},dn.exports.unmask=function(e,n){e.length<32?fi(e,n):t.unmask(e,n)}}catch{}});var gi=y((dm,hi)=>{"use strict";var pi=Symbol("kDone"),gr=Symbol("kRun"),mr=class{constructor(e){this[pi]=()=>{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[pi])}}};hi.exports=mr});var Et=y((fm,vi)=>{"use strict";var Tt=require("zlib"),mi=xt(),mu=gi(),{kStatusCode:yi}=de(),yu=Buffer[Symbol.species],Su=Buffer.from([0,0,255,255]),pn=Symbol("permessage-deflate"),fe=Symbol("total-length"),Ye=Symbol("callback"),ye=Symbol("buffers"),Je=Symbol("error"),fn,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,!fn){let s=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;fn=new mu(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){fn.add(s=>{this._decompress(e,n,(i,o)=>{s(),r(i,o)})})}compress(e,n,r){fn.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"?Tt.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=Tt.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[pn]=this,this._inflate[fe]=0,this._inflate[ye]=[],this._inflate.on("error",_u),this._inflate.on("data",Si)}this._inflate[Ye]=r,this._inflate.write(e),n&&this._inflate.write(Su),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[ye],this._inflate[fe]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[fe]=0,this._inflate[ye]=[],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"?Tt.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=Tt.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[fe]=0,this._deflate[ye]=[],this._deflate.on("data",vu)}this._deflate[Ye]=r,this._deflate.write(e),this._deflate.flush(Tt.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=mi.concat(this._deflate[ye],this._deflate[fe]);n&&(i=new yu(i.buffer,i.byteOffset,i.length-4)),this._deflate[Ye]=null,this._deflate[fe]=0,this._deflate[ye]=[],n&&this.params[`${s}_no_context_takeover`]&&this._deflate.reset(),r(null,i)})}};vi.exports=yr;function vu(t){this[ye].push(t),this[fe]+=t.length}function Si(t){if(this[fe]+=t.length,this[pn]._maxPayload<1||this[fe]<=this[pn]._maxPayload){this[ye].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 _u(t){if(this[pn]._inflate=null,this[Je]){this[Ye](this[Je]);return}t[yi]=1007,this[Ye](t)}});var Ke=y((pm,hn)=>{"use strict";var{isUtf8:_i}=require("buffer"),{hasBlob:wu}=de(),bu=[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 Iu(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 Au(t){return wu&&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:Au,isValidStatusCode:Iu,isValidUTF8:Sr,tokenChars:bu};if(_i)hn.exports.isValidUTF8=function(t){return t.length<24?Sr(t):_i(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=y((hm,Ti)=>{"use strict";var{Writable:ku}=require("stream"),wi=Et(),{BINARY_TYPES:xu,EMPTY_BUFFER:bi,kStatusCode:Tu,kWebSocket:Eu}=de(),{concat:vr,toArrayBuffer:Cu,unmask:Pu}=xt(),{isValidStatusCode:Ru,isValidUTF8:Ii}=Ke(),gn=Buffer[Symbol.species],J=0,Ai=1,ki=2,xi=3,_r=4,wr=5,mn=6,br=class extends ku{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[Eu]=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=J}_write(e,n,r){if(this._opcode===8&&this._state==J)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 gn(r.buffer,r.byteOffset+e,r.length-e),new gn(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 gn(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 J:this.getInfo(e);break;case Ai:this.getPayloadLength16(e);break;case ki:this.getPayloadLength64(e);break;case xi:this.getMask();break;case _r:this.getData(e);break;case wr:case mn: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=Ai:this._payloadLength===127?this._state=ki: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=xi:this._state=_r}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=_r}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&&Pu(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===J&&this.startLoop(n)})}dataMessage(e){if(!this._fin){this._state=J;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=vr(r,n):this._binaryType==="arraybuffer"?s=Cu(vr(r,n)):this._binaryType==="blob"?s=new Blob(r):s=r,this._allowSynchronousEvents?(this.emit("message",s,!0),this._state=J):(this._state=mn,setImmediate(()=>{this.emit("message",s,!0),this._state=J,this.startLoop(e)}))}else{let s=vr(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=J):(this._state=mn,setImmediate(()=>{this.emit("message",s,!1),this._state=J,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(!Ru(r)){let i=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");n(i);return}let s=new gn(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=J;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=J):(this._state=mn,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=J,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}};Ti.exports=br});var xr=y((mm,Pi)=>{"use strict";var{Duplex:gm}=require("stream"),{randomFillSync:Lu}=require("crypto"),Ei=Et(),{EMPTY_BUFFER:Mu,kWebSocket:Nu,NOOP:Ou}=de(),{isBlob:Xe,isValidStatusCode:Bu}=Ke(),{mask:Ci,toBuffer:Le}=xt(),K=Symbol("kByteLength"),Du=Buffer.alloc(4),yn=8*1024,Me,Ze=yn,te=0,Hu=1,Fu=2,Ar=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=te,this.onerror=Ou,this[Nu]=void 0}static frame(e,n){let r,s=!1,i=2,o=!1;n.mask&&(r=n.maskBuffer||Du,n.generateMask?n.generateMask(r):(Ze===yn&&(Me===void 0&&(Me=Buffer.alloc(yn)),Lu(Me,0,yn),Ze=0),r[0]=Me[Ze++],r[1]=Me[Ze++],r[2]=Me[Ze++],r[3]=Me[Ze++]),o=(r[0]|r[1]|r[2]|r[3])===0,i=6);let a;typeof e=="string"?(!n.mask||o)&&n[K]!==void 0?a=n[K]:(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=Mu;else{if(typeof e!="number"||!Bu(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={[K]:i.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==te?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=Le(e),s=e.length,i=Le.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[K]:s,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};Xe(e)?this._state!==te?this.enqueue([this.getBlobData,e,!1,o,r]):this.getBlobData(e,!1,o,r):this._state!==te?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=Le(e),s=e.length,i=Le.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[K]:s,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};Xe(e)?this._state!==te?this.enqueue([this.getBlobData,e,!1,o,r]):this.getBlobData(e,!1,o,r):this._state!==te?this.enqueue([this.dispatch,e,!1,o,r]):this.sendFrame(t.frame(e,o),r)}send(e,n,r){let s=this._extensions[Ei.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=Le(e),a=e.length,l=Le.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={[K]:a,fin:n.fin,generateMask:this._generateMask,mask:n.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:l,rsv1:o};Xe(e)?this._state!==te?this.enqueue([this.getBlobData,e,this._compress,c,r]):this.getBlobData(e,this._compress,c,r):this._state!==te?this.enqueue([this.dispatch,e,this._compress,c,r]):this.dispatch(e,this._compress,c,r)}getBlobData(e,n,r,s){this._bufferedBytes+=r[K],this._state=Fu,e.arrayBuffer().then(i=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(kr,this,a,s);return}this._bufferedBytes-=r[K];let o=Le(i);n?this.dispatch(o,n,r,s):(this._state=te,this.sendFrame(t.frame(o,r),s),this.dequeue())}).catch(i=>{process.nextTick(Uu,this,i,s)})}dispatch(e,n,r,s){if(!n){this.sendFrame(t.frame(e,r),s);return}let i=this._extensions[Ei.extensionName];this._bufferedBytes+=r[K],this._state=Hu,i.compress(e,r.fin,(o,a)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");kr(this,l,s);return}this._bufferedBytes-=r[K],this._state=te,r.readOnly=!1,this.sendFrame(t.frame(a,r),s),this.dequeue()})}dequeue(){for(;this._state===te&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][K],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][K],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=Ar;function kr(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 Uu(t,e,n){kr(t,e,n),t.onerror(e)}});var Fi=y((ym,Hi)=>{"use strict";var{kForOnEventAttribute:Ct,kListener:Tr}=de(),Ri=Symbol("kCode"),Li=Symbol("kData"),Mi=Symbol("kError"),Ni=Symbol("kMessage"),Oi=Symbol("kReason"),Qe=Symbol("kTarget"),Bi=Symbol("kType"),Di=Symbol("kWasClean"),pe=class{constructor(e){this[Qe]=null,this[Bi]=e}get target(){return this[Qe]}get type(){return this[Bi]}};Object.defineProperty(pe.prototype,"target",{enumerable:!0});Object.defineProperty(pe.prototype,"type",{enumerable:!0});var Ne=class extends pe{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(Ne.prototype,"code",{enumerable:!0});Object.defineProperty(Ne.prototype,"reason",{enumerable:!0});Object.defineProperty(Ne.prototype,"wasClean",{enumerable:!0});var et=class extends pe{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 pe{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 qu={addEventListener(t,e,n={}){for(let s of this.listeners(t))if(!n[Ct]&&s[Tr]===e&&!s[Ct])return;let r;if(t==="message")r=function(i,o){let a=new Pt("message",{data:o?i:i.toString()});a[Qe]=this,Sn(e,this,a)};else if(t==="close")r=function(i,o){let a=new Ne("close",{code:i,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[Qe]=this,Sn(e,this,a)};else if(t==="error")r=function(i){let o=new et("error",{error:i,message:i.message});o[Qe]=this,Sn(e,this,o)};else if(t==="open")r=function(){let i=new pe("open");i[Qe]=this,Sn(e,this,i)};else return;r[Ct]=!!n[Ct],r[Tr]=e,n.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let n of this.listeners(t))if(n[Tr]===e&&!n[Ct]){this.removeListener(t,n);break}}};Hi.exports={CloseEvent:Ne,ErrorEvent:et,Event:pe,EventTarget:qu,MessageEvent:Pt};function Sn(t,e,n){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,n):t.call(e,n)}});var Er=y((Sm,Ui)=>{"use strict";var{tokenChars:Rt}=Ke();function oe(t,e,n){t[e]===void 0?t[e]=[n]:t[e].push(n)}function Wu(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&&Rt[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 p=t.slice(l,u);c===44?(oe(e,p,n),n=Object.create(null)):o=p,l=u=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);else if(a===void 0)if(u===-1&&Rt[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),oe(n,t.slice(l,u),!0),c===44&&(oe(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(Rt[c]!==1)throw new SyntaxError(`Unexpected character at index ${d}`);l===-1?l=d:r||(r=!0),s=!1}else if(i)if(Rt[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&&Rt[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 p=t.slice(l,u);r&&(p=p.replace(/\\/g,""),r=!1),oe(n,a,p),c===44&&(oe(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?oe(e,f,n):(a===void 0?oe(n,f,!0):r?oe(n,a,f.replace(/\\/g,"")):oe(n,a,f),oe(e,o,n)),e}function ju(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:ju,parse:Wu}});var bn=y((wm,Zi)=>{"use strict";var Gu=require("events"),$u=require("https"),zu=require("http"),ji=require("net"),Vu=require("tls"),{randomBytes:Yu,createHash:Ju}=require("crypto"),{Duplex:vm,Readable:_m}=require("stream"),{URL:Cr}=require("url"),Se=Et(),Ku=Ir(),Xu=xr(),{isBlob:Zu}=Ke(),{BINARY_TYPES:qi,CLOSE_TIMEOUT:Qu,EMPTY_BUFFER:vn,GUID:ed,kForOnEventAttribute:Pr,kListener:td,kStatusCode:nd,kWebSocket:N,NOOP:Gi}=de(),{EventTarget:{addEventListener:rd,removeEventListener:sd}}=Fi(),{format:id,parse:od}=Er(),{toBuffer:ad}=xt(),$i=Symbol("kAborted"),Rr=[8,13],he=["CONNECTING","OPEN","CLOSING","CLOSED"],ld=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,k=class t extends Gu{constructor(e,n,r){super(),this._binaryType=qi[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=vn,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 Ku({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),i=new Xu(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",dd),s.on("drain",fd),s.on("error",pd),s.on("message",hd),s.on("ping",gd),s.on("pong",md),i.onerror=yd,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),n.length>0&&e.unshift(n),e.on("close",Ji),e.on("data",wn),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[Se.extensionName]&&this._extensions[Se.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){z(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||vn,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||vn,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[Se.extensionName]||(s.compress=!1),this._sender.send(e||vn,s,r)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){z(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(k,"CONNECTING",{enumerable:!0,value:he.indexOf("CONNECTING")});Object.defineProperty(k.prototype,"CONNECTING",{enumerable:!0,value:he.indexOf("CONNECTING")});Object.defineProperty(k,"OPEN",{enumerable:!0,value:he.indexOf("OPEN")});Object.defineProperty(k.prototype,"OPEN",{enumerable:!0,value:he.indexOf("OPEN")});Object.defineProperty(k,"CLOSING",{enumerable:!0,value:he.indexOf("CLOSING")});Object.defineProperty(k.prototype,"CLOSING",{enumerable:!0,value:he.indexOf("CLOSING")});Object.defineProperty(k,"CLOSED",{enumerable:!0,value:he.indexOf("CLOSED")});Object.defineProperty(k.prototype,"CLOSED",{enumerable:!0,value:he.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(k.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(k.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[Pr])return e[td];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})}})});k.prototype.addEventListener=rd;k.prototype.removeEventListener=sd;Zi.exports=k;function zi(t,e,n,r){let s={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:Qu,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=Yu(16).toString("base64"),d=o?$u.request:zu.request,f=new Set,p;if(s.createConnection=s.createConnection||(o?ud:cd),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&&(p=new Se(s.perMessageDeflate!==!0?s.perMessageDeflate:{},!1,s.maxPayload),s.headers["Sec-WebSocket-Extensions"]=id({[Se.extensionName]:p.offer()})),n.length){for(let g of n){if(typeof g!="string"||!ld.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 h;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[m,S]of Object.entries(g))r.headers[m.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")),h=t._req=d(s),t._redirects&&t.emit("redirect",t.url,h)}else h=t._req=d(s);s.timeout&&h.on("timeout",()=>{z(t,h,"Opening handshake has timed out")}),h.on("error",g=>{h===null||h[$i]||(h=t._req=null,_n(t,g))}),h.on("response",g=>{let m=g.headers.location,S=g.statusCode;if(m&&s.followRedirects&&S>=300&&S<400){if(++t._redirects>s.maxRedirects){z(t,h,"Maximum redirects exceeded");return}h.abort();let U;try{U=new Cr(m,e)}catch{let T=new SyntaxError(`Invalid URL: ${m}`);_n(t,T);return}zi(t,U,n,r)}else t.emit("unexpected-response",h,g)||z(t,h,`Unexpected server response: ${g.statusCode}`)}),h.on("upgrade",(g,m,S)=>{if(t.emit("upgrade",g),t.readyState!==k.CONNECTING)return;h=t._req=null;let U=g.headers.upgrade;if(U===void 0||U.toLowerCase()!=="websocket"){z(t,m,"Invalid Upgrade header");return}let se=Ju("sha1").update(u+ed).digest("base64");if(g.headers["sec-websocket-accept"]!==se){z(t,m,"Invalid Sec-WebSocket-Accept header");return}let T=g.headers["sec-websocket-protocol"],M;if(T!==void 0?f.size?f.has(T)||(M="Server sent an invalid subprotocol"):M="Server sent a subprotocol but none was requested":f.size&&(M="Server sent no subprotocol"),M){z(t,m,M);return}T&&(t._protocol=T);let Y=g.headers["sec-websocket-extensions"];if(Y!==void 0){if(!p){z(t,m,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let ie;try{ie=od(Y)}catch{z(t,m,"Invalid Sec-WebSocket-Extensions header");return}let ze=Object.keys(ie);if(ze.length!==1||ze[0]!==Se.extensionName){z(t,m,"Server indicated an extension that was not requested");return}try{p.accept(ie[Se.extensionName])}catch{z(t,m,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[Se.extensionName]=p}t.setSocket(m,S,{allowSynchronousEvents:s.allowSynchronousEvents,generateMask:s.generateMask,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation})}),s.finishRequest?s.finishRequest(h,t):h.end()}function _n(t,e){t._readyState=k.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function cd(t){return t.path=t.socketPath,ji.connect(t)}function ud(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=ji.isIP(t.host)?"":t.host),Vu.connect(t)}function z(t,e,n){t._readyState=k.CLOSING;let r=new Error(n);Error.captureStackTrace(r,z),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=Zu(e)?e.size:ad(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(n){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${he[t.readyState]})`);process.nextTick(n,r)}}function dd(t,e){let n=this[N];n._closeFrameReceived=!0,n._closeMessage=e,n._closeCode=t,n._socket[N]!==void 0&&(n._socket.removeListener("data",wn),process.nextTick(Vi,n._socket),t===1005?n.close():n.close(t,e))}function fd(){let t=this[N];t.isPaused||t._socket.resume()}function pd(t){let e=this[N];e._socket[N]!==void 0&&(e._socket.removeListener("data",wn),process.nextTick(Vi,e._socket),e.close(t[nd])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function Wi(){this[N].emitClose()}function hd(t,e){this[N].emit("message",t,e)}function gd(t){let e=this[N];e._autoPong&&e.pong(t,!this._isServer,Gi),e.emit("ping",t)}function md(t){this[N].emit("pong",t)}function Vi(t){t.resume()}function yd(t){let e=this[N];e.readyState!==k.CLOSED&&(e.readyState===k.OPEN&&(e._readyState=k.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",wn),this.removeListener("end",Ki),t._readyState=k.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 wn(t){this[N]._receiver.write(t)||this.pause()}function Ki(){let t=this[N];t._readyState=k.CLOSING,t._receiver.end(),this.end()}function Xi(){let t=this[N];this.removeListener("error",Xi),this.on("error",Gi),t&&(t._readyState=k.CLOSING,this.destroy())}});var no=y((Im,to)=>{"use strict";var bm=bn(),{Duplex:Sd}=require("stream");function Qi(t){t.emit("close")}function vd(){!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 _d(t,e){let n=!0,r=new Sd({...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",vd),r.on("error",eo),r}to.exports=_d});var so=y((Am,ro)=>{"use strict";var{tokenChars:wd}=Ke();function bd(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&&wd[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:bd}});var fo=y((xm,uo)=>{"use strict";var Id=require("events"),In=require("http"),{Duplex:km}=require("stream"),{createHash:Ad}=require("crypto"),io=Er(),Oe=Et(),kd=so(),xd=bn(),{CLOSE_TIMEOUT:Td,GUID:Ed,kWebSocket:Cd}=de(),Pd=/^[+/0-9A-Za-z]{22}==$/,oo=0,ao=1,co=2,Mr=class extends Id{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=In.createServer((r,s)=>{let i=In.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=Rd(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(Lt,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(Lt,this):process.nextTick(Lt,this);else{let n=this._server;this._removeListeners(),this._removeListeners=this._server=null,n.close(()=>{Lt(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"){Be(this,e,n,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){Be(this,e,n,400,"Invalid Upgrade header");return}if(i===void 0||!Pd.test(i)){Be(this,e,n,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){Be(this,e,n,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){Mt(n,400);return}let l=e.headers["sec-websocket-protocol"],c=new Set;if(l!==void 0)try{c=kd.parse(l)}catch{Be(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 Oe(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let p=io.parse(u);p[Oe.extensionName]&&(f.accept(p[Oe.extensionName]),d[Oe.extensionName]=f)}catch{Be(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,(p,h,g,m)=>{if(!p)return Mt(n,h||401,g,m);this.completeUpgrade(d,i,c,e,n,r,s)});return}if(!this.options.verifyClient(f))return Mt(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[Cd])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>oo)return Mt(i,503);let c=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Ad("sha1").update(n+Ed).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[Oe.extensionName]){let d=e[Oe.extensionName].params,f=io.format({[Oe.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 du=Object.create;var di=Object.defineProperty;var fu=Object.getOwnPropertyDescriptor;var pu=Object.getOwnPropertyNames;var hu=Object.getPrototypeOf,gu=Object.prototype.hasOwnProperty;var y=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var mu=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of pu(e))!gu.call(t,s)&&s!==n&&di(t,s,{get:()=>e[s],enumerable:!(r=fu(e,s))||r.enumerable});return t};var Ve=(t,e,n)=>(n=t!=null?du(hu(t)):{},mu(e||!t||!t.__esModule?di(n,"default",{value:t,enumerable:!0}):n,t));var de=y((bm,hi)=>{"use strict";var fi=["nodebuffer","arraybuffer","fragments"],pi=typeof Blob<"u";pi&&fi.push("blob");hi.exports={BINARY_TYPES:fi,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:pi,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var kt=y((wm,fn)=>{"use strict";var{EMPTY_BUFFER:yu}=de(),mr=Buffer[Symbol.species];function Su(t,e){if(t.length===0)return yu;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 mr(n.buffer,n.byteOffset,r):n}function gi(t,e,n,r,s){for(let i=0;i<s;i++)n[r+i]=t[i]^e[i&3]}function mi(t,e){for(let n=0;n<t.length;n++)t[n]^=e[n&3]}function vu(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function yr(t){if(yr.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new mr(t):ArrayBuffer.isView(t)?e=new mr(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),yr.readOnly=!1),e}fn.exports={concat:Su,mask:gi,toArrayBuffer:vu,toBuffer:yr,unmask:mi};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");fn.exports.mask=function(e,n,r,s,i){i<48?gi(e,n,r,s,i):t.mask(e,n,r,s,i)},fn.exports.unmask=function(e,n){e.length<32?mi(e,n):t.unmask(e,n)}}catch{}});var vi=y((Im,Si)=>{"use strict";var yi=Symbol("kDone"),Sr=Symbol("kRun"),vr=class{constructor(e){this[yi]=()=>{this.pending--,this[Sr]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Sr]()}[Sr](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[yi])}}};Si.exports=vr});var Ct=y((Am,Ii)=>{"use strict";var Et=require("zlib"),_i=kt(),_u=vi(),{kStatusCode:bi}=de(),bu=Buffer[Symbol.species],wu=Buffer.from([0,0,255,255]),hn=Symbol("permessage-deflate"),fe=Symbol("total-length"),Ye=Symbol("callback"),ye=Symbol("buffers"),Je=Symbol("error"),pn,_r=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,!pn){let s=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;pn=new _u(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){pn.add(s=>{this._decompress(e,n,(i,o)=>{s(),r(i,o)})})}compress(e,n,r){pn.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"?Et.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=Et.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[hn]=this,this._inflate[fe]=0,this._inflate[ye]=[],this._inflate.on("error",Au),this._inflate.on("data",wi)}this._inflate[Ye]=r,this._inflate.write(e),n&&this._inflate.write(wu),this._inflate.flush(()=>{let i=this._inflate[Je];if(i){this._inflate.close(),this._inflate=null,r(i);return}let o=_i.concat(this._inflate[ye],this._inflate[fe]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[fe]=0,this._inflate[ye]=[],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"?Et.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=Et.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[fe]=0,this._deflate[ye]=[],this._deflate.on("data",Iu)}this._deflate[Ye]=r,this._deflate.write(e),this._deflate.flush(Et.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=_i.concat(this._deflate[ye],this._deflate[fe]);n&&(i=new bu(i.buffer,i.byteOffset,i.length-4)),this._deflate[Ye]=null,this._deflate[fe]=0,this._deflate[ye]=[],n&&this.params[`${s}_no_context_takeover`]&&this._deflate.reset(),r(null,i)})}};Ii.exports=_r;function Iu(t){this[ye].push(t),this[fe]+=t.length}function wi(t){if(this[fe]+=t.length,this[hn]._maxPayload<1||this[fe]<=this[hn]._maxPayload){this[ye].push(t);return}this[Je]=new RangeError("Max payload size exceeded"),this[Je].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[Je][bi]=1009,this.removeListener("data",wi),this.reset()}function Au(t){if(this[hn]._inflate=null,this[Je]){this[Ye](this[Je]);return}t[bi]=1007,this[Ye](t)}});var Ke=y((xm,gn)=>{"use strict";var{isUtf8:Ai}=require("buffer"),{hasBlob:xu}=de(),Tu=[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 ku(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function br(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 Eu(t){return xu&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}gn.exports={isBlob:Eu,isValidStatusCode:ku,isValidUTF8:br,tokenChars:Tu};if(Ai)gn.exports.isValidUTF8=function(t){return t.length<24?br(t):Ai(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");gn.exports.isValidUTF8=function(e){return e.length<32?br(e):t(e)}}catch{}});var Tr=y((Tm,Ri)=>{"use strict";var{Writable:Cu}=require("stream"),xi=Ct(),{BINARY_TYPES:Pu,EMPTY_BUFFER:Ti,kStatusCode:Ru,kWebSocket:Lu}=de(),{concat:wr,toArrayBuffer:Mu,unmask:Nu}=kt(),{isValidStatusCode:Ou,isValidUTF8:ki}=Ke(),mn=Buffer[Symbol.species],K=0,Ei=1,Ci=2,Pi=3,Ir=4,Ar=5,yn=6,xr=class extends Cu{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||Pu[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[Lu]=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=K}_write(e,n,r){if(this._opcode===8&&this._state==K)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 mn(r.buffer,r.byteOffset+e,r.length-e),new mn(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 mn(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 K:this.getInfo(e);break;case Ei:this.getPayloadLength16(e);break;case Ci:this.getPayloadLength64(e);break;case Pi:this.getMask();break;case Ir:this.getData(e);break;case Ar:case yn: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[xi.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=Ei:this._payloadLength===127?this._state=Ci: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=Pi:this._state=Ir}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Ir}getData(e){let n=Ti;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&&Nu(n,this._mask)}if(this._opcode>7){this.controlMessage(n,e);return}if(this._compressed){this._state=Ar,this.decompress(n,e);return}n.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(n)),this.dataMessage(e)}decompress(e,n){this._extensions[xi.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===K&&this.startLoop(n)})}dataMessage(e){if(!this._fin){this._state=K;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=wr(r,n):this._binaryType==="arraybuffer"?s=Mu(wr(r,n)):this._binaryType==="blob"?s=new Blob(r):s=r,this._allowSynchronousEvents?(this.emit("message",s,!0),this._state=K):(this._state=yn,setImmediate(()=>{this.emit("message",s,!0),this._state=K,this.startLoop(e)}))}else{let s=wr(r,n);if(!this._skipUTF8Validation&&!ki(s)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(i);return}this._state===Ar||this._allowSynchronousEvents?(this.emit("message",s,!1),this._state=K):(this._state=yn,setImmediate(()=>{this.emit("message",s,!1),this._state=K,this.startLoop(e)}))}}controlMessage(e,n){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,Ti),this.end();else{let r=e.readUInt16BE(0);if(!Ou(r)){let i=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");n(i);return}let s=new mn(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!ki(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=K;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=K):(this._state=yn,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=K,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[Ru]=s,o}};Ri.exports=xr});var Cr=y((Em,Ni)=>{"use strict";var{Duplex:km}=require("stream"),{randomFillSync:Bu}=require("crypto"),Li=Ct(),{EMPTY_BUFFER:Du,kWebSocket:Hu,NOOP:Fu}=de(),{isBlob:Xe,isValidStatusCode:Uu}=Ke(),{mask:Mi,toBuffer:Le}=kt(),X=Symbol("kByteLength"),qu=Buffer.alloc(4),Sn=8*1024,Me,Qe=Sn,te=0,ju=1,Wu=2,kr=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=te,this.onerror=Fu,this[Hu]=void 0}static frame(e,n){let r,s=!1,i=2,o=!1;n.mask&&(r=n.maskBuffer||qu,n.generateMask?n.generateMask(r):(Qe===Sn&&(Me===void 0&&(Me=Buffer.alloc(Sn)),Bu(Me,0,Sn),Qe=0),r[0]=Me[Qe++],r[1]=Me[Qe++],r[2]=Me[Qe++],r[3]=Me[Qe++]),o=(r[0]|r[1]|r[2]|r[3])===0,i=6);let a;typeof e=="string"?(!n.mask||o)&&n[X]!==void 0?a=n[X]:(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?(Mi(e,r,c,i,a),[c]):(Mi(e,r,e,0,a),[c,e])):[c,e]}close(e,n,r,s){let i;if(e===void 0)i=Du;else{if(typeof e!="number"||!Uu(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={[X]:i.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==te?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=Le(e),s=e.length,i=Le.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[X]:s,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};Xe(e)?this._state!==te?this.enqueue([this.getBlobData,e,!1,o,r]):this.getBlobData(e,!1,o,r):this._state!==te?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=Le(e),s=e.length,i=Le.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[X]:s,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};Xe(e)?this._state!==te?this.enqueue([this.getBlobData,e,!1,o,r]):this.getBlobData(e,!1,o,r):this._state!==te?this.enqueue([this.dispatch,e,!1,o,r]):this.sendFrame(t.frame(e,o),r)}send(e,n,r){let s=this._extensions[Li.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=Le(e),a=e.length,l=Le.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={[X]:a,fin:n.fin,generateMask:this._generateMask,mask:n.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:l,rsv1:o};Xe(e)?this._state!==te?this.enqueue([this.getBlobData,e,this._compress,c,r]):this.getBlobData(e,this._compress,c,r):this._state!==te?this.enqueue([this.dispatch,e,this._compress,c,r]):this.dispatch(e,this._compress,c,r)}getBlobData(e,n,r,s){this._bufferedBytes+=r[X],this._state=Wu,e.arrayBuffer().then(i=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(Er,this,a,s);return}this._bufferedBytes-=r[X];let o=Le(i);n?this.dispatch(o,n,r,s):(this._state=te,this.sendFrame(t.frame(o,r),s),this.dequeue())}).catch(i=>{process.nextTick(Gu,this,i,s)})}dispatch(e,n,r,s){if(!n){this.sendFrame(t.frame(e,r),s);return}let i=this._extensions[Li.extensionName];this._bufferedBytes+=r[X],this._state=ju,i.compress(e,r.fin,(o,a)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");Er(this,l,s);return}this._bufferedBytes-=r[X],this._state=te,r.readOnly=!1,this.sendFrame(t.frame(a,r),s),this.dequeue()})}dequeue(){for(;this._state===te&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][X],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][X],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)}};Ni.exports=kr;function Er(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 Gu(t,e,n){Er(t,e,n),t.onerror(e)}});var Wi=y((Cm,ji)=>{"use strict";var{kForOnEventAttribute:Pt,kListener:Pr}=de(),Oi=Symbol("kCode"),Bi=Symbol("kData"),Di=Symbol("kError"),Hi=Symbol("kMessage"),Fi=Symbol("kReason"),Ze=Symbol("kTarget"),Ui=Symbol("kType"),qi=Symbol("kWasClean"),pe=class{constructor(e){this[Ze]=null,this[Ui]=e}get target(){return this[Ze]}get type(){return this[Ui]}};Object.defineProperty(pe.prototype,"target",{enumerable:!0});Object.defineProperty(pe.prototype,"type",{enumerable:!0});var Ne=class extends pe{constructor(e,n={}){super(e),this[Oi]=n.code===void 0?0:n.code,this[Fi]=n.reason===void 0?"":n.reason,this[qi]=n.wasClean===void 0?!1:n.wasClean}get code(){return this[Oi]}get reason(){return this[Fi]}get wasClean(){return this[qi]}};Object.defineProperty(Ne.prototype,"code",{enumerable:!0});Object.defineProperty(Ne.prototype,"reason",{enumerable:!0});Object.defineProperty(Ne.prototype,"wasClean",{enumerable:!0});var et=class extends pe{constructor(e,n={}){super(e),this[Di]=n.error===void 0?null:n.error,this[Hi]=n.message===void 0?"":n.message}get error(){return this[Di]}get message(){return this[Hi]}};Object.defineProperty(et.prototype,"error",{enumerable:!0});Object.defineProperty(et.prototype,"message",{enumerable:!0});var Rt=class extends pe{constructor(e,n={}){super(e),this[Bi]=n.data===void 0?null:n.data}get data(){return this[Bi]}};Object.defineProperty(Rt.prototype,"data",{enumerable:!0});var $u={addEventListener(t,e,n={}){for(let s of this.listeners(t))if(!n[Pt]&&s[Pr]===e&&!s[Pt])return;let r;if(t==="message")r=function(i,o){let a=new Rt("message",{data:o?i:i.toString()});a[Ze]=this,vn(e,this,a)};else if(t==="close")r=function(i,o){let a=new Ne("close",{code:i,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[Ze]=this,vn(e,this,a)};else if(t==="error")r=function(i){let o=new et("error",{error:i,message:i.message});o[Ze]=this,vn(e,this,o)};else if(t==="open")r=function(){let i=new pe("open");i[Ze]=this,vn(e,this,i)};else return;r[Pt]=!!n[Pt],r[Pr]=e,n.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let n of this.listeners(t))if(n[Pr]===e&&!n[Pt]){this.removeListener(t,n);break}}};ji.exports={CloseEvent:Ne,ErrorEvent:et,Event:pe,EventTarget:$u,MessageEvent:Rt};function vn(t,e,n){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,n):t.call(e,n)}});var Rr=y((Pm,Gi)=>{"use strict";var{tokenChars:Lt}=Ke();function oe(t,e,n){t[e]===void 0?t[e]=[n]:t[e].push(n)}function zu(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 p=t.slice(l,u);c===44?(oe(e,p,n),n=Object.create(null)):o=p,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),oe(n,t.slice(l,u),!0),c===44&&(oe(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 p=t.slice(l,u);r&&(p=p.replace(/\\/g,""),r=!1),oe(n,a,p),c===44&&(oe(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?oe(e,f,n):(a===void 0?oe(n,f,!0):r?oe(n,a,f.replace(/\\/g,"")):oe(n,a,f),oe(e,o,n)),e}function Vu(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(", ")}Gi.exports={format:Vu,parse:zu}});var In=y((Mm,no)=>{"use strict";var Yu=require("events"),Ju=require("https"),Ku=require("http"),Vi=require("net"),Xu=require("tls"),{randomBytes:Qu,createHash:Zu}=require("crypto"),{Duplex:Rm,Readable:Lm}=require("stream"),{URL:Lr}=require("url"),Se=Ct(),ed=Tr(),td=Cr(),{isBlob:nd}=Ke(),{BINARY_TYPES:$i,CLOSE_TIMEOUT:rd,EMPTY_BUFFER:_n,GUID:sd,kForOnEventAttribute:Mr,kListener:id,kStatusCode:od,kWebSocket:N,NOOP:Yi}=de(),{EventTarget:{addEventListener:ad,removeEventListener:ld}}=Wi(),{format:cd,parse:ud}=Rr(),{toBuffer:dd}=kt(),Ji=Symbol("kAborted"),Nr=[8,13],he=["CONNECTING","OPEN","CLOSING","CLOSED"],fd=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,T=class t extends Yu{constructor(e,n,r){super(),this._binaryType=$i[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=_n,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]),Ki(this,e,n,r)):(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){$i.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 ed({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),i=new td(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",gd),s.on("drain",md),s.on("error",yd),s.on("message",Sd),s.on("ping",vd),s.on("pong",_d),i.onerror=bd,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),n.length>0&&e.unshift(n),e.on("close",Zi),e.on("data",wn),e.on("end",eo),e.on("error",to),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[Se.extensionName]&&this._extensions[Se.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){V(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())}),Qi(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){Or(this,e,r);return}n===void 0&&(n=!this._isServer),this._sender.ping(e||_n,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){Or(this,e,r);return}n===void 0&&(n=!this._isServer),this._sender.pong(e||_n,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){Or(this,e,r);return}let s={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[Se.extensionName]||(s.compress=!1),this._sender.send(e||_n,s,r)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){V(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:he.indexOf("CONNECTING")});Object.defineProperty(T.prototype,"CONNECTING",{enumerable:!0,value:he.indexOf("CONNECTING")});Object.defineProperty(T,"OPEN",{enumerable:!0,value:he.indexOf("OPEN")});Object.defineProperty(T.prototype,"OPEN",{enumerable:!0,value:he.indexOf("OPEN")});Object.defineProperty(T,"CLOSING",{enumerable:!0,value:he.indexOf("CLOSING")});Object.defineProperty(T.prototype,"CLOSING",{enumerable:!0,value:he.indexOf("CLOSING")});Object.defineProperty(T,"CLOSED",{enumerable:!0,value:he.indexOf("CLOSED")});Object.defineProperty(T.prototype,"CLOSED",{enumerable:!0,value:he.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[Mr])return e[id];return null},set(e){for(let n of this.listeners(t))if(n[Mr]){this.removeListener(t,n);break}typeof e=="function"&&this.addEventListener(t,e,{[Mr]:!0})}})});T.prototype.addEventListener=ad;T.prototype.removeEventListener=ld;no.exports=T;function Ki(t,e,n,r){let s={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:rd,protocolVersion:Nr[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,!Nr.includes(s.protocolVersion))throw new RangeError(`Unsupported protocol version: ${s.protocolVersion} (supported versions: ${Nr.join(", ")})`);let i;if(e instanceof Lr)i=e;else try{i=new Lr(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;bn(t,g);return}let c=o?443:80,u=Qu(16).toString("base64"),d=o?Ju.request:Ku.request,f=new Set,p;if(s.createConnection=s.createConnection||(o?hd:pd),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&&(p=new Se(s.perMessageDeflate!==!0?s.perMessageDeflate:{},!1,s.maxPayload),s.headers["Sec-WebSocket-Extensions"]=cd({[Se.extensionName]:p.offer()})),n.length){for(let g of n){if(typeof g!="string"||!fd.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 h;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[m,S]of Object.entries(g))r.headers[m.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")),h=t._req=d(s),t._redirects&&t.emit("redirect",t.url,h)}else h=t._req=d(s);s.timeout&&h.on("timeout",()=>{V(t,h,"Opening handshake has timed out")}),h.on("error",g=>{h===null||h[Ji]||(h=t._req=null,bn(t,g))}),h.on("response",g=>{let m=g.headers.location,S=g.statusCode;if(m&&s.followRedirects&&S>=300&&S<400){if(++t._redirects>s.maxRedirects){V(t,h,"Maximum redirects exceeded");return}h.abort();let U;try{U=new Lr(m,e)}catch{let E=new SyntaxError(`Invalid URL: ${m}`);bn(t,E);return}Ki(t,U,n,r)}else t.emit("unexpected-response",h,g)||V(t,h,`Unexpected server response: ${g.statusCode}`)}),h.on("upgrade",(g,m,S)=>{if(t.emit("upgrade",g),t.readyState!==T.CONNECTING)return;h=t._req=null;let U=g.headers.upgrade;if(U===void 0||U.toLowerCase()!=="websocket"){V(t,m,"Invalid Upgrade header");return}let se=Zu("sha1").update(u+sd).digest("base64");if(g.headers["sec-websocket-accept"]!==se){V(t,m,"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){V(t,m,M);return}E&&(t._protocol=E);let J=g.headers["sec-websocket-extensions"];if(J!==void 0){if(!p){V(t,m,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let ie;try{ie=ud(J)}catch{V(t,m,"Invalid Sec-WebSocket-Extensions header");return}let ze=Object.keys(ie);if(ze.length!==1||ze[0]!==Se.extensionName){V(t,m,"Server indicated an extension that was not requested");return}try{p.accept(ie[Se.extensionName])}catch{V(t,m,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[Se.extensionName]=p}t.setSocket(m,S,{allowSynchronousEvents:s.allowSynchronousEvents,generateMask:s.generateMask,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation})}),s.finishRequest?s.finishRequest(h,t):h.end()}function bn(t,e){t._readyState=T.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function pd(t){return t.path=t.socketPath,Vi.connect(t)}function hd(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=Vi.isIP(t.host)?"":t.host),Xu.connect(t)}function V(t,e,n){t._readyState=T.CLOSING;let r=new Error(n);Error.captureStackTrace(r,V),e.setHeader?(e[Ji]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(bn,t,r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Or(t,e,n){if(e){let r=nd(e)?e.size:dd(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(n){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${he[t.readyState]})`);process.nextTick(n,r)}}function gd(t,e){let n=this[N];n._closeFrameReceived=!0,n._closeMessage=e,n._closeCode=t,n._socket[N]!==void 0&&(n._socket.removeListener("data",wn),process.nextTick(Xi,n._socket),t===1005?n.close():n.close(t,e))}function md(){let t=this[N];t.isPaused||t._socket.resume()}function yd(t){let e=this[N];e._socket[N]!==void 0&&(e._socket.removeListener("data",wn),process.nextTick(Xi,e._socket),e.close(t[od])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function zi(){this[N].emitClose()}function Sd(t,e){this[N].emit("message",t,e)}function vd(t){let e=this[N];e._autoPong&&e.pong(t,!this._isServer,Yi),e.emit("ping",t)}function _d(t){this[N].emit("pong",t)}function Xi(t){t.resume()}function bd(t){let e=this[N];e.readyState!==T.CLOSED&&(e.readyState===T.OPEN&&(e._readyState=T.CLOSING,Qi(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function Qi(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function Zi(){let t=this[N];if(this.removeListener("close",Zi),this.removeListener("data",wn),this.removeListener("end",eo),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",zi),t._receiver.on("finish",zi))}function wn(t){this[N]._receiver.write(t)||this.pause()}function eo(){let t=this[N];t._readyState=T.CLOSING,t._receiver.end(),this.end()}function to(){let t=this[N];this.removeListener("error",to),this.on("error",Yi),t&&(t._readyState=T.CLOSING,this.destroy())}});var oo=y((Om,io)=>{"use strict";var Nm=In(),{Duplex:wd}=require("stream");function ro(t){t.emit("close")}function Id(){!this.destroyed&&this._writableState.finished&&this.destroy()}function so(t){this.removeListener("error",so),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function Ad(t,e){let n=!0,r=new wd({...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(ro,r);return}let o=!1;t.once("error",function(l){o=!0,i(l)}),t.once("close",function(){o||i(s),process.nextTick(ro,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",Id),r.on("error",so),r}io.exports=Ad});var lo=y((Bm,ao)=>{"use strict";var{tokenChars:xd}=Ke();function Td(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&&xd[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}ao.exports={parse:Td}});var mo=y((Hm,go)=>{"use strict";var kd=require("events"),An=require("http"),{Duplex:Dm}=require("stream"),{createHash:Ed}=require("crypto"),co=Rr(),Oe=Ct(),Cd=lo(),Pd=In(),{CLOSE_TIMEOUT:Rd,GUID:Ld,kWebSocket:Md}=de(),Nd=/^[+/0-9A-Za-z]{22}==$/,uo=0,fo=1,ho=2,Br=class extends kd{constructor(e,n){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:Rd,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Pd,...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=An.createServer((r,s)=>{let i=An.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=Od(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=uo}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===ho){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!==fo)if(this._state=fo,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",po);let i=e.headers["sec-websocket-key"],o=e.headers.upgrade,a=+e.headers["sec-websocket-version"];if(e.method!=="GET"){Be(this,e,n,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){Be(this,e,n,400,"Invalid Upgrade header");return}if(i===void 0||!Nd.test(i)){Be(this,e,n,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){Be(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=Cd.parse(l)}catch{Be(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 Oe(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let p=co.parse(u);p[Oe.extensionName]&&(f.accept(p[Oe.extensionName]),d[Oe.extensionName]=f)}catch{Be(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,(p,h,g,m)=>{if(!p)return Nt(n,h||401,g,m);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[Md])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>uo)return Nt(i,503);let c=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Ed("sha1").update(n+Ld).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[Oe.extensionName]){let d=e[Oe.extensionName].params,f=co.format({[Oe.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(Lt,this)})),a(u,s)}};uo.exports=Mr;function Rd(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 Lt(t){t._state=co,t.emit("close")}function lo(){this.destroy()}function Mt(t,e,n,r){n=n||In.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} ${In.STATUS_CODES[e]}\r
3
+ `)),i.removeListener("error",po),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)}};go.exports=Br;function Od(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=ho,t.emit("close")}function po(){this.destroy()}function Nt(t,e,n,r){n=n||An.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} ${An.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 Be(t,e,n,r,s,i){if(t.listenerCount("wsClientError")){let o=new Error(s);Error.captureStackTrace(o,Be),t.emit("wsClientError",o,n,e)}else Mt(n,r,s,i)}});var Or=y((Em,po)=>{po.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var ve=y(De=>{var Br,Bd=[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];De.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};De.getSymbolTotalCodewords=function(e){return Bd[e]};De.getBCHDigit=function(t){let e=0;for(;t!==0;)e++,t>>>=1;return e};De.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');Br=e};De.isKanjiModeEnabled=function(){return typeof Br<"u"};De.toSJIS=function(e){return Br(e)}});var An=y(X=>{X.L={bit:1};X.M={bit:0};X.Q={bit:3};X.H={bit:2};function Dd(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"l":case"low":return X.L;case"m":case"medium":return X.M;case"q":case"quartile":return X.Q;case"h":case"high":return X.H;default:throw new Error("Unknown EC Level: "+t)}}X.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};X.from=function(e,n){if(X.isValid(e))return e;try{return Dd(e)}catch{return n}}});var mo=y((Rm,go)=>{function ho(){this.buffer=[],this.length=0}ho.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=ho});var So=y((Lm,yo)=>{function Nt(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)}Nt.prototype.set=function(t,e,n,r){let s=t*this.size+e;this.data[s]=n,r&&(this.reservedBit[s]=!0)};Nt.prototype.get=function(t,e){return this.data[t*this.size+e]};Nt.prototype.xor=function(t,e,n){this.data[t*this.size+e]^=n};Nt.prototype.isReserved=function(t,e){return this.reservedBit[t*this.size+e]};yo.exports=Nt});var vo=y(kn=>{var Hd=ve().getSymbolSize;kn.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=Hd(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()};kn.getPositions=function(e){let n=[],r=kn.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=y(wo=>{var Fd=ve().getSymbolSize,_o=7;wo.getPositions=function(e){let n=Fd(e);return[[0,0],[n-_o,0],[0,n-_o]]}});var Io=y(A=>{A.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var He={N1:3,N2:3,N3:40,N4:10};A.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};A.from=function(e){return A.isValid(e)?parseInt(e,10):void 0};A.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+=He.N1+(s-5)),o=u,s=1),u=e.get(c,l),u===a?i++:(i>=5&&(r+=He.N1+(i-5)),a=u,i=1)}s>=5&&(r+=He.N1+(s-5)),i>=5&&(r+=He.N1+(i-5))}return r};A.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*He.N2};A.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*He.N3};A.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)*He.N4};function Ud(t,e,n){switch(t){case A.Patterns.PATTERN000:return(e+n)%2===0;case A.Patterns.PATTERN001:return e%2===0;case A.Patterns.PATTERN010:return n%3===0;case A.Patterns.PATTERN011:return(e+n)%3===0;case A.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(n/3))%2===0;case A.Patterns.PATTERN101:return e*n%2+e*n%3===0;case A.Patterns.PATTERN110:return(e*n%2+e*n%3)%2===0;case A.Patterns.PATTERN111:return(e*n%3+(e+n)%2)%2===0;default:throw new Error("bad maskPattern:"+t)}}A.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,Ud(e,i,s))};A.getBestMask=function(e,n){let r=Object.keys(A.Patterns).length,s=0,i=1/0;for(let o=0;o<r;o++){n(o),A.applyMask(o,e);let a=A.getPenaltyN1(e)+A.getPenaltyN2(e)+A.getPenaltyN3(e)+A.getPenaltyN4(e);A.applyMask(o,e),a<i&&(i=a,s=o)}return s}});var Hr=y(Dr=>{var _e=An(),xn=[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];Dr.getBlocksCount=function(e,n){switch(n){case _e.L:return xn[(e-1)*4+0];case _e.M:return xn[(e-1)*4+1];case _e.Q:return xn[(e-1)*4+2];case _e.H:return xn[(e-1)*4+3];default:return}};Dr.getTotalCodewordsCount=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}}});var Ao=y(Cn=>{var Ot=new Uint8Array(512),En=new Uint8Array(256);(function(){let e=1;for(let n=0;n<255;n++)Ot[n]=e,En[e]=n,e<<=1,e&256&&(e^=285);for(let n=255;n<512;n++)Ot[n]=Ot[n-255]})();Cn.log=function(e){if(e<1)throw new Error("log("+e+")");return En[e]};Cn.exp=function(e){return Ot[e]};Cn.mul=function(e,n){return e===0||n===0?0:Ot[En[e]+En[n]]}});var ko=y(Bt=>{var Fr=Ao();Bt.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};Bt.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};Bt.generateECPolynomial=function(e){let n=new Uint8Array([1]);for(let r=0;r<e;r++)n=Bt.mul(n,new Uint8Array([1,Fr.exp(r)]));return n}});var Eo=y((Fm,To)=>{var xo=ko();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=xo.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=xo.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};To.exports=Ur});var qr=y(Co=>{Co.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var Wr=y(ge=>{var Po="[0-9]+",qd="[A-Z $%*+\\-./:]+",Dt="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Dt=Dt.replace(/u/g,"\\u");var Wd="(?:(?![A-Z0-9 $%*+\\-./:]|"+Dt+`)(?:.|[\r
8
- ]))+`;ge.KANJI=new RegExp(Dt,"g");ge.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");ge.BYTE=new RegExp(Wd,"g");ge.NUMERIC=new RegExp(Po,"g");ge.ALPHANUMERIC=new RegExp(qd,"g");var jd=new RegExp("^"+Dt+"$"),Gd=new RegExp("^"+Po+"$"),$d=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");ge.testKanji=function(e){return jd.test(e)};ge.testNumeric=function(e){return Gd.test(e)};ge.testAlphanumeric=function(e){return $d.test(e)}});var we=y(P=>{var zd=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(!zd.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 Vd(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 Vd(e)}catch{return n}}});var Oo=y(Fe=>{var Pn=ve(),Yd=Hr(),Ro=An(),be=we(),Gr=qr(),Mo=7973,Lo=Pn.getBCHDigit(Mo);function Jd(t,e,n){for(let r=1;r<=40;r++)if(e<=Fe.getCapacity(r,n,t))return r}function No(t,e){return be.getCharCountIndicator(t,e)+4}function Kd(t,e){let n=0;return t.forEach(function(r){let s=No(r.mode,e);n+=s+r.getBitsLength()}),n}function Xd(t,e){for(let n=1;n<=40;n++)if(Kd(t,n)<=Fe.getCapacity(n,e,be.MIXED))return n}Fe.from=function(e,n){return Gr.isValid(e)?parseInt(e,10):n};Fe.getCapacity=function(e,n,r){if(!Gr.isValid(e))throw new Error("Invalid QR Code version");typeof r>"u"&&(r=be.BYTE);let s=Pn.getSymbolTotalCodewords(e),i=Yd.getTotalCodewordsCount(e,n),o=(s-i)*8;if(r===be.MIXED)return o;let a=o-No(r,e);switch(r){case be.NUMERIC:return Math.floor(a/10*3);case be.ALPHANUMERIC:return Math.floor(a/11*2);case be.KANJI:return Math.floor(a/13);case be.BYTE:default:return Math.floor(a/8)}};Fe.getBestVersionForData=function(e,n){let r,s=Ro.from(n,Ro.M);if(Array.isArray(e)){if(e.length>1)return Xd(e,s);if(e.length===0)return 1;r=e[0]}else r=e;return Jd(r.mode,r.getLength(),s)};Fe.getEncodedBits=function(e){if(!Gr.isValid(e)||e<7)throw new Error("Invalid QR Code version");let n=e<<12;for(;Pn.getBCHDigit(n)-Lo>=0;)n^=Mo<<Pn.getBCHDigit(n)-Lo;return e<<12|n}});var Fo=y(Ho=>{var $r=ve(),Do=1335,Zd=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)^Zd}});var qo=y(($m,Uo)=>{var Qd=we();function tt(t){this.mode=Qd.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=y((zm,Wo)=>{var ef=we(),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=ef.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=y((Vm,Go)=>{var tf=we();function rt(t){this.mode=tf.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=y((Ym,zo)=>{var nf=we(),rf=ve();function st(t){this.mode=nf.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=rf.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=y((Jm,Vr)=>{"use strict";var Ht={single_source_shortest_paths:function(t,e,n){var r={},s={};s[e]=0;var i=Ht.PriorityQueue.make();i.push(e,0);for(var o,a,l,c,u,d,f,p,h;!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,p=s[l],h=typeof s[l]>"u",(h||p>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=Ht.single_source_shortest_paths(t,e,n);return Ht.extract_shortest_path_from_predecessor_list(r,n)},PriorityQueue:{make:function(t){var e=Ht.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=Ht)});var na=y(it=>{var I=we(),Xo=qo(),Zo=jo(),Qo=$o(),ea=Vo(),Ft=Wr(),Rn=ve(),sf=Yo();function Jo(t){return unescape(encodeURIComponent(t)).length}function Ut(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=Ut(Ft.NUMERIC,I.NUMERIC,t),n=Ut(Ft.ALPHANUMERIC,I.ALPHANUMERIC,t),r,s;return Rn.isKanjiModeEnabled()?(r=Ut(Ft.BYTE,I.BYTE,t),s=Ut(Ft.KANJI,I.KANJI,t)):(r=Ut(Ft.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 of(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 af(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 lf(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&&!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=af(r),i=lf(s,n),o=sf.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(of(a))};it.rawSplit=function(e){return it.fromArray(ta(e,Rn.isKanjiModeEnabled()))}});var es=y(ra=>{var Mn=ve(),Jr=An(),cf=mo(),uf=So(),df=vo(),ff=bo(),Zr=Io(),Qr=Hr(),pf=Eo(),Ln=Oo(),hf=Fo(),gf=we(),Kr=na();function mf(t,e){let n=t.size,r=ff.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 yf(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 Sf(t,e){let n=df.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 vf(t,e){let n=t.size,r=Ln.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=hf.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 _f(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 wf(t,e,n){let r=new cf;n.forEach(function(l){r.put(l.mode.bit,4),r.put(l.getLength(),gf.getCharCountIndicator(l.mode,t)),l.write(r)});let s=Mn.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 bf(r,t,e)}function bf(t,e,n){let r=Mn.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,p=new pf(f),h=0,g=new Array(o),m=new Array(o),S=0,U=new Uint8Array(t.buffer);for(let ie=0;ie<o;ie++){let ze=ie<l?u:d;g[ie]=U.slice(h,h+ze),m[ie]=p.encode(g[ie]),h+=ze,S=Math.max(S,ze)}let se=new Uint8Array(r),T=0,M,Y;for(M=0;M<S;M++)for(Y=0;Y<o;Y++)M<g[Y].length&&(se[T++]=g[Y][M]);for(M=0;M<f;M++)for(Y=0;Y<o;Y++)se[T++]=m[Y][M];return se}function If(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=Ln.getBestVersionForData(u,n)}s=Kr.fromString(t,c||40)}else throw new Error("Invalid data");let i=Ln.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 Be(t,e,n,r,s,i){if(t.listenerCount("wsClientError")){let o=new Error(s);Error.captureStackTrace(o,Be),t.emit("wsClientError",o,n,e)}else Nt(n,r,s,i)}});var Hr=y((Um,yo)=>{yo.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var ve=y(De=>{var Fr,Ud=[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];De.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};De.getSymbolTotalCodewords=function(e){return Ud[e]};De.getBCHDigit=function(t){let e=0;for(;t!==0;)e++,t>>>=1;return e};De.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');Fr=e};De.isKanjiModeEnabled=function(){return typeof Fr<"u"};De.toSJIS=function(e){return Fr(e)}});var xn=y(Q=>{Q.L={bit:1};Q.M={bit:0};Q.Q={bit:3};Q.H={bit:2};function qd(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"l":case"low":return Q.L;case"m":case"medium":return Q.M;case"q":case"quartile":return Q.Q;case"h":case"high":return Q.H;default:throw new Error("Unknown EC Level: "+t)}}Q.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};Q.from=function(e,n){if(Q.isValid(e))return e;try{return qd(e)}catch{return n}}});var _o=y((Wm,vo)=>{function So(){this.buffer=[],this.length=0}So.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++}};vo.exports=So});var wo=y((Gm,bo)=>{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]};bo.exports=Ot});var Io=y(Tn=>{var jd=ve().getSymbolSize;Tn.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=jd(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()};Tn.getPositions=function(e){let n=[],r=Tn.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 To=y(xo=>{var Wd=ve().getSymbolSize,Ao=7;xo.getPositions=function(e){let n=Wd(e);return[[0,0],[n-Ao,0],[0,n-Ao]]}});var ko=y(A=>{A.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var He={N1:3,N2:3,N3:40,N4:10};A.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};A.from=function(e){return A.isValid(e)?parseInt(e,10):void 0};A.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+=He.N1+(s-5)),o=u,s=1),u=e.get(c,l),u===a?i++:(i>=5&&(r+=He.N1+(i-5)),a=u,i=1)}s>=5&&(r+=He.N1+(s-5)),i>=5&&(r+=He.N1+(i-5))}return r};A.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*He.N2};A.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*He.N3};A.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)*He.N4};function Gd(t,e,n){switch(t){case A.Patterns.PATTERN000:return(e+n)%2===0;case A.Patterns.PATTERN001:return e%2===0;case A.Patterns.PATTERN010:return n%3===0;case A.Patterns.PATTERN011:return(e+n)%3===0;case A.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(n/3))%2===0;case A.Patterns.PATTERN101:return e*n%2+e*n%3===0;case A.Patterns.PATTERN110:return(e*n%2+e*n%3)%2===0;case A.Patterns.PATTERN111:return(e*n%3+(e+n)%2)%2===0;default:throw new Error("bad maskPattern:"+t)}}A.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,Gd(e,i,s))};A.getBestMask=function(e,n){let r=Object.keys(A.Patterns).length,s=0,i=1/0;for(let o=0;o<r;o++){n(o),A.applyMask(o,e);let a=A.getPenaltyN1(e)+A.getPenaltyN2(e)+A.getPenaltyN3(e)+A.getPenaltyN4(e);A.applyMask(o,e),a<i&&(i=a,s=o)}return s}});var qr=y(Ur=>{var _e=xn(),kn=[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],En=[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];Ur.getBlocksCount=function(e,n){switch(n){case _e.L:return kn[(e-1)*4+0];case _e.M:return kn[(e-1)*4+1];case _e.Q:return kn[(e-1)*4+2];case _e.H:return kn[(e-1)*4+3];default:return}};Ur.getTotalCodewordsCount=function(e,n){switch(n){case _e.L:return En[(e-1)*4+0];case _e.M:return En[(e-1)*4+1];case _e.Q:return En[(e-1)*4+2];case _e.H:return En[(e-1)*4+3];default:return}}});var Eo=y(Pn=>{var Bt=new Uint8Array(512),Cn=new Uint8Array(256);(function(){let e=1;for(let n=0;n<255;n++)Bt[n]=e,Cn[e]=n,e<<=1,e&256&&(e^=285);for(let n=255;n<512;n++)Bt[n]=Bt[n-255]})();Pn.log=function(e){if(e<1)throw new Error("log("+e+")");return Cn[e]};Pn.exp=function(e){return Bt[e]};Pn.mul=function(e,n){return e===0||n===0?0:Bt[Cn[e]+Cn[n]]}});var Co=y(Dt=>{var jr=Eo();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]^=jr.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]^=jr.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,jr.exp(r)]));return n}});var Lo=y((Xm,Ro)=>{var Po=Co();function Wr(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}Wr.prototype.initialize=function(e){this.degree=e,this.genPoly=Po.generateECPolynomial(this.degree)};Wr.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=Po.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};Ro.exports=Wr});var Gr=y(Mo=>{Mo.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var $r=y(ge=>{var No="[0-9]+",$d="[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 zd="(?:(?![A-Z0-9 $%*+\\-./:]|"+Ht+`)(?:.|[\r
8
+ ]))+`;ge.KANJI=new RegExp(Ht,"g");ge.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");ge.BYTE=new RegExp(zd,"g");ge.NUMERIC=new RegExp(No,"g");ge.ALPHANUMERIC=new RegExp($d,"g");var Vd=new RegExp("^"+Ht+"$"),Yd=new RegExp("^"+No+"$"),Jd=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");ge.testKanji=function(e){return Vd.test(e)};ge.testNumeric=function(e){return Yd.test(e)};ge.testAlphanumeric=function(e){return Jd.test(e)}});var be=y(R=>{var Kd=Gr(),zr=$r();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(!Kd.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 zr.testNumeric(e)?R.NUMERIC:zr.testAlphanumeric(e)?R.ALPHANUMERIC:zr.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 Xd(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 Xd(e)}catch{return n}}});var Fo=y(Fe=>{var Rn=ve(),Qd=qr(),Oo=xn(),we=be(),Vr=Gr(),Do=7973,Bo=Rn.getBCHDigit(Do);function Zd(t,e,n){for(let r=1;r<=40;r++)if(e<=Fe.getCapacity(r,n,t))return r}function Ho(t,e){return we.getCharCountIndicator(t,e)+4}function ef(t,e){let n=0;return t.forEach(function(r){let s=Ho(r.mode,e);n+=s+r.getBitsLength()}),n}function tf(t,e){for(let n=1;n<=40;n++)if(ef(t,n)<=Fe.getCapacity(n,e,we.MIXED))return n}Fe.from=function(e,n){return Vr.isValid(e)?parseInt(e,10):n};Fe.getCapacity=function(e,n,r){if(!Vr.isValid(e))throw new Error("Invalid QR Code version");typeof r>"u"&&(r=we.BYTE);let s=Rn.getSymbolTotalCodewords(e),i=Qd.getTotalCodewordsCount(e,n),o=(s-i)*8;if(r===we.MIXED)return o;let a=o-Ho(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)}};Fe.getBestVersionForData=function(e,n){let r,s=Oo.from(n,Oo.M);if(Array.isArray(e)){if(e.length>1)return tf(e,s);if(e.length===0)return 1;r=e[0]}else r=e;return Zd(r.mode,r.getLength(),s)};Fe.getEncodedBits=function(e){if(!Vr.isValid(e)||e<7)throw new Error("Invalid QR Code version");let n=e<<12;for(;Rn.getBCHDigit(n)-Bo>=0;)n^=Do<<Rn.getBCHDigit(n)-Bo;return e<<12|n}});var Wo=y(jo=>{var Yr=ve(),qo=1335,nf=21522,Uo=Yr.getBCHDigit(qo);jo.getEncodedBits=function(e,n){let r=e.bit<<3|n,s=r<<10;for(;Yr.getBCHDigit(s)-Uo>=0;)s^=qo<<Yr.getBCHDigit(s)-Uo;return(r<<10|s)^nf}});var $o=y((ry,Go)=>{var rf=be();function tt(t){this.mode=rf.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))};Go.exports=tt});var Vo=y((sy,zo)=>{var sf=be(),Jr=["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=sf.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=Jr.indexOf(this.data[n])*45;r+=Jr.indexOf(this.data[n+1]),e.put(r,11)}this.data.length%2&&e.put(Jr.indexOf(this.data[n]),6)};zo.exports=nt});var Jo=y((iy,Yo)=>{var of=be();function rt(t){this.mode=of.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)};Yo.exports=rt});var Xo=y((oy,Ko)=>{var af=be(),lf=ve();function st(t){this.mode=af.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=lf.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)}};Ko.exports=st});var Qo=y((ay,Kr)=>{"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,p,h;!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,p=s[l],h=typeof s[l]>"u",(h||p>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 Kr<"u"&&(Kr.exports=Ft)});var oa=y(it=>{var I=be(),ta=$o(),na=Vo(),ra=Jo(),sa=Xo(),Ut=$r(),Ln=ve(),cf=Qo();function Zo(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 ia(t){let e=qt(Ut.NUMERIC,I.NUMERIC,t),n=qt(Ut.ALPHANUMERIC,I.ALPHANUMERIC,t),r,s;return Ln.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 Xr(t,e){switch(e){case I.NUMERIC:return ta.getBitsLength(t);case I.ALPHANUMERIC:return na.getBitsLength(t);case I.KANJI:return sa.getBitsLength(t);case I.BYTE:return ra.getBitsLength(t)}}function uf(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 df(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:Zo(r.data)}]);break;case I.BYTE:e.push([{data:r.data,mode:I.BYTE,length:Zo(r.data)}])}}return e}function ff(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]=Xr(n[f].lastCount+c.length,c.mode)-Xr(n[f].lastCount,c.mode),n[f].lastCount+=c.length):(n[f]&&(n[f].lastCount=c.length),r[f][u]=Xr(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 ea(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&&!Ln.isKanjiModeEnabled()&&(n=I.BYTE),n){case I.NUMERIC:return new ta(t);case I.ALPHANUMERIC:return new na(t);case I.KANJI:return new sa(t);case I.BYTE:return new ra(t)}}it.fromArray=function(e){return e.reduce(function(n,r){return typeof r=="string"?n.push(ea(r,null)):r.data&&n.push(ea(r.data,r.mode)),n},[])};it.fromString=function(e,n){let r=ia(e,Ln.isKanjiModeEnabled()),s=df(r),i=ff(s,n),o=cf.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(uf(a))};it.rawSplit=function(e){return it.fromArray(ia(e,Ln.isKanjiModeEnabled()))}});var rs=y(aa=>{var Nn=ve(),Qr=xn(),pf=_o(),hf=wo(),gf=Io(),mf=To(),ts=ko(),ns=qr(),yf=Lo(),Mn=Fo(),Sf=Wo(),vf=be(),Zr=oa();function _f(t,e){let n=t.size,r=mf.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 bf(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 wf(t,e){let n=gf.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 If(t,e){let n=t.size,r=Mn.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 es(t,e,n){let r=t.size,s=Sf.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 Af(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 xf(t,e,n){let r=new pf;n.forEach(function(l){r.put(l.mode.bit,4),r.put(l.getLength(),vf.getCharCountIndicator(l.mode,t)),l.write(r)});let s=Nn.getSymbolTotalCodewords(t),i=ns.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 Tf(r,t,e)}function Tf(t,e,n){let r=Nn.getSymbolTotalCodewords(e),s=ns.getTotalCodewordsCount(e,n),i=r-s,o=ns.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,p=new yf(f),h=0,g=new Array(o),m=new Array(o),S=0,U=new Uint8Array(t.buffer);for(let ie=0;ie<o;ie++){let ze=ie<l?u:d;g[ie]=U.slice(h,h+ze),m[ie]=p.encode(g[ie]),h+=ze,S=Math.max(S,ze)}let se=new Uint8Array(r),E=0,M,J;for(M=0;M<S;M++)for(J=0;J<o;J++)M<g[J].length&&(se[E++]=g[J][M]);for(M=0;M<f;M++)for(J=0;J<o;J++)se[E++]=m[J][M];return se}function kf(t,e,n,r){let s;if(Array.isArray(t))s=Zr.fromArray(t);else if(typeof t=="string"){let c=e;if(!c){let u=Zr.rawSplit(t);c=Mn.getBestVersionForData(u,n)}s=Zr.fromString(t,c||40)}else throw new Error("Invalid data");let i=Mn.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=wf(e,n,s),a=Mn.getSymbolSize(e),l=new uf(a);return mf(l,e),yf(l),Sf(l,e),Xr(l,n,0),e>=7&&vf(l,e),_f(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=Ln.from(n.version),i=Zr.from(n.maskPattern),n.toSJISFunc&&Mn.setToSJISFunction(n.toSJISFunc)),If(e,s,r,i)}});var ts=y((Zm,ia)=>{"use strict";var Af=require("util"),sa=require("stream"),ne=ia.exports=function(){sa.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};Af.inherits(ne,sa);ne.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))};ne.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};ne.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()))};ne.prototype.destroySoon=ne.prototype.end;ne.prototype._end=function(){this._reads.length>0&&this.emit("error",new Error("Unexpected end of input")),this.destroy()};ne.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit("close"))};ne.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))};ne.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)};ne.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=y(ns=>{"use strict";var Ie=[{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<Ie.length;a++){let l=Ie[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%Ie[r].x.length,i=(e-s)/Ie[r].x.length*8+Ie[r].x[s],o=n%Ie[r].y.length,a=(n-o)/Ie[r].y.length*8+Ie[r].y[o];return i*4+a*t*4}}});var ss=y((ey,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=y((ty,la)=>{"use strict";var kf=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=kf.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=y((ny,ua)=>{"use strict";var Tf=require("util"),ca=ts(),Ef=is(),Cf=ua.exports=function(t){ca.call(this);let e=[],n=this;this._filter=new Ef(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(Cf,ca)});var at=y((ry,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=y((sy,pa)=>{"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=pa.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=y((iy,ha)=>{"use strict";var R=at(),Pf=ls(),O=ha.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 Pf,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=y(ma=>{"use strict";var ga=rs(),Rf=[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]}],Lf=[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 Mf(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,p;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,p=i>>4,n.push(p,f);break;case 2:u=i&3,d=i>>2&3,f=i>>4&3,p=i>>6&3,n.push(p,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,p=i>>7&1,n.push(p,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 Nf(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);Rf[r](e,s,d,i),i+=r}return i}function Of(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);Lf[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=Mf(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 p=0;f=function(){let h=p;return p+=4,h},d=[{width:n,height:r}]}for(let p=0;p<d.length;p++)s===8?u=Nf(d[p],l,f,i,t,u):Of(d[p],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=y((ay,ya)=>{"use strict";function Bf(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 Df(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 Hf(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?Bf(t,l,r,s,a):(o&&Df(t,l,r,s,o),n!==8&&(n===16&&(l=Buffer.alloc(r*s*4)),Hf(t,l,r,s,n))),l}});var _a=y((ly,va)=>{"use strict";var Ff=require("util"),fs=require("zlib"),Sa=ts(),Uf=da(),qf=cs(),Wf=us(),jf=ds(),ae=va.exports=function(t){Sa.call(this),this._parser=new qf(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()};Ff.inherits(ae,Sa);ae.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};ae.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)};ae.prototype._handleMetaData=function(t){this._metaData=t,this._bitmapInfo=Object.create(t),this._filter=new Uf(this._bitmapInfo)};ae.prototype._handleTransColor=function(t){this._bitmapInfo.transColor=t};ae.prototype._handlePalette=function(t){this._bitmapInfo.palette=t};ae.prototype._simpleTransparency=function(){this._metaData.alpha=!0};ae.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};ae.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit("error","No Inflate block"))};ae.prototype._complete=function(t){if(this.errord)return;let e;try{let n=Wf.dataToBitMap(t,this._bitmapInfo);e=jf(n,this._bitmapInfo),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var ba=y((cy,wa)=>{"use strict";var Z=at();wa.exports=function(t,e,n,r){let s=[Z.COLORTYPE_COLOR_ALPHA,Z.COLORTYPE_ALPHA].indexOf(r.colorType)!==-1;if(r.colorType===r.inputColorType){let h=(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&&h)return t}let i=r.bitDepth!==16?t:new Uint16Array(t.buffer),o=255,a=Z.COLORTYPE_TO_BPP_MAP[r.inputColorType];a===4&&!r.inputHasAlpha&&(a=3);let l=Z.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 p(){let h,g,m,S=o;switch(r.inputColorType){case Z.COLORTYPE_COLOR_ALPHA:S=i[u+3],h=i[u],g=i[u+1],m=i[u+2];break;case Z.COLORTYPE_COLOR:h=i[u],g=i[u+1],m=i[u+2];break;case Z.COLORTYPE_ALPHA:S=i[u+1],h=i[u],g=h,m=h;break;case Z.COLORTYPE_GRAYSCALE:h=i[u],g=h,m=h;break;default:throw new Error("input color type:"+r.inputColorType+" is not supported at present")}return r.inputHasAlpha&&(s||(S/=o,h=Math.min(Math.max(Math.round((1-S)*f.red+S*h),0),o),g=Math.min(Math.max(Math.round((1-S)*f.green+S*g),0),o),m=Math.min(Math.max(Math.round((1-S)*f.blue+S*m),0),o))),{red:h,green:g,blue:m,alpha:S}}for(let h=0;h<n;h++)for(let g=0;g<e;g++){let m=p(i,u);switch(r.colorType){case Z.COLORTYPE_COLOR_ALPHA:case Z.COLORTYPE_COLOR:r.bitDepth===8?(c[d]=m.red,c[d+1]=m.green,c[d+2]=m.blue,s&&(c[d+3]=m.alpha)):(c.writeUInt16BE(m.red,d),c.writeUInt16BE(m.green,d+2),c.writeUInt16BE(m.blue,d+4),s&&c.writeUInt16BE(m.alpha,d+6));break;case Z.COLORTYPE_ALPHA:case Z.COLORTYPE_GRAYSCALE:{let S=(m.red+m.green+m.blue)/3;r.bitDepth===8?(c[d]=S,s&&(c[d+1]=m.alpha)):(c.writeUInt16BE(S,d),s&&c.writeUInt16BE(m.alpha,d+2));break}default:throw new Error("unrecognised color Type "+r.colorType)}u+=a,d+=l}return c}});var ka=y((uy,Aa)=>{"use strict";var Ia=ss();function Gf(t,e,n,r,s){for(let i=0;i<n;i++)r[s+i]=t[e+i]}function $f(t,e,n){let r=0,s=e+n;for(let i=e;i<s;i++)r+=Math.abs(t[i]);return r}function zf(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 Vf(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 Yf(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 Jf(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 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=t[e+o]-(a+l>>1);r[s+o]=c}}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=t[e+i]-(o+a>>1);s+=Math.abs(l)}return s}function Zf(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 Qf(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 ep={0:Gf,1:zf,2:Yf,3:Kf,4:Zf},tp={0:$f,1:Vf,2:Jf,3:Xf,4:Qf};Aa.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 p=0;p<i.length;p++){let h=tp[i[p]](t,l,o,s);h<f&&(u=i[p],f=h)}}c[a]=u,a++,ep[u](t,l,o,c,a,s),a+=o,l+=o}return c}});var ps=y((dy,xa)=>{"use strict";var H=at(),np=ls(),rp=ba(),sp=ka(),ip=require("zlib"),Ae=xa.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||ip.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")};Ae.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Ae.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Ae.prototype.filterData=function(t,e,n){let r=rp(t,e,n,this._options),s=H.COLORTYPE_TO_BPP_MAP[this._options.colorType];return sp(r,e,n,this._options,s)};Ae.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(np.crc32(r.slice(4,r.length-4)),r.length-4),r};Ae.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)};Ae.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)};Ae.prototype.packIDAT=function(t){return this._packChunk(H.TYPE_IDAT,t)};Ae.prototype.packIEND=function(){return this._packChunk(H.TYPE_IEND,null)}});var Pa=y((fy,Ca)=>{"use strict";var op=require("util"),Ta=require("stream"),ap=at(),lp=ps(),Ea=Ca.exports=function(t){Ta.call(this);let e=t||{};this._packer=new lp(e),this._deflate=this._packer.createDeflate(),this.readable=!0};op.inherits(Ea,Ta);Ea.prototype.pack=function(t,e,n,r){this.emit("data",Buffer.from(ap.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=y((qt,Oa)=>{"use strict";var Ra=require("assert").ok,lt=require("zlib"),cp=require("util"),La=require("buffer").kMaxLength;function Ue(t){if(!(this instanceof Ue))return new Ue(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 up(t){return new Ue(t)}function Ma(t,e){e&&process.nextTick(e),t._handle&&(t._handle.close(),t._handle=null)}Ue.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(h){u=h});function d(h,g){if(r._hadError)return;let m=i-g;if(Ra(m>=0,"have should not go down"),m>0){let S=r._buffer.slice(r._offset,r._offset+m);if(r._offset+=m,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-h,s=h,!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 p=Buffer.concat(l,c);return Ma(this),p};cp.inherits(Ue,lt.Inflate);function dp(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 dp(new Ue(e),t)}Oa.exports=qt=Na;qt.Inflate=Ue;qt.createInflate=up;qt.inflateSync=Na});var hs=y((py,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=y(Fa=>{"use strict";var fp=hs(),pp=is();Fa.process=function(t,e){let n=[],r=new fp(t);return new pp(e,{read:r.read.bind(r),write:function(i){n.push(i)},complete:function(){}}).start(),r.process(),Buffer.concat(n)}});var Ga=y((gy,ja)=>{"use strict";var qa=!0,Wa=require("zlib"),hp=Ba();Wa.deflateSync||(qa=!1);var gp=hs(),mp=Ua(),yp=cs(),Sp=us(),vp=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(T){n=T}let s;function i(T){s=T}function o(T){s.transColor=T}function a(T){s.palette=T}function l(){s.alpha=!0}let c;function u(T){c=T}let d=[];function f(T){d.push(T)}let p=new gp(t);if(new yp(e,{read:p.read.bind(p),error:r,metadata:i,gamma:u,palette:a,transColor:o,inflateData:f,simpleTransparency:l}).start(),p.process(),n)throw n;let g=Buffer.concat(d);d.length=0;let m;if(s.interlace)m=Wa.inflateSync(g);else{let M=((s.width*s.bpp*s.depth+7>>3)+1)*s.height;m=hp(g,{chunkSize:M,maxLength:M})}if(g=null,!m||!m.length)throw new Error("bad png - invalid inflate data response");let S=mp.process(m,s);g=null;let U=Sp.dataToBitMap(S,s);S=null;let se=vp(U,s);return s.data=se,s.gamma=c||0,s}});var Ya=y((my,Va)=>{"use strict";var $a=!0,za=require("zlib");za.deflateSync||($a=!1);var _p=at(),wp=ps();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 wp(n),s=[];s.push(Buffer.from(_p.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=y(gs=>{"use strict";var bp=Ga(),Ip=Ya();gs.read=function(t,e){return bp(t,e||{})};gs.write=function(t,e){return Ip(t,e)}});var Za=y(Xa=>{"use strict";var Ap=require("util"),Ka=require("stream"),kp=_a(),xp=Pa(),Tp=Ja(),q=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 kp(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 xp(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"))};Ap.inherits(q,Ka);q.sync=Tp;q.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)};q.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};q.prototype.write=function(t){return this._parser.write(t),!0};q.prototype.end=function(t){this._parser.end(t)};q.prototype._metadata=function(t){this.width=t.width,this.height=t.height,this.emit("metadata",t)};q.prototype._gamma=function(t){this.gamma=t};q.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit("close")};q.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)};q.prototype.bitblt=function(t,e,n,r,s,i,o){return q.bitblt(this,t,e,n,r,s,i,o),this};q.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}};q.prototype.adjustGamma=function(){q.adjustGamma(this)}});var Wt=y(qe=>{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("")}}qe.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||{}}};qe.getScale=function(e,n){return n.width&&n.width>=e+n.margin*2?n.width/(e+n.margin*2):n.scale};qe.getImageWidth=function(e,n){let r=qe.getScale(e,n);return Math.floor((e+n.margin*2)*r)};qe.qrToImageData=function(e,n,r){let s=n.modules.size,i=n.modules.data,o=qe.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,p=r.color.light;if(u>=l&&d>=l&&u<a-l&&d<a-l){let h=Math.floor((u-l)/o),g=Math.floor((d-l)/o);p=c[i[h*s+g]?1:0]}e[f++]=p.r,e[f++]=p.g,e[f++]=p.b,e[f]=p.a}}});var el=y(le=>{var Ep=require("fs"),Cp=Za().PNG,ms=Wt();le.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 Cp(s);return ms.qrToImageData(o.data,e,r),o};le.renderToDataURL=function(e,n,r){typeof r>"u"&&(r=n,n=void 0),le.renderToBuffer(e,n,function(s,i){s&&r(s);let o="data:image/png;base64,";o+=i.toString("base64"),r(null,o)})};le.renderToBuffer=function(e,n,r){typeof r>"u"&&(r=n,n=void 0);let s=le.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()};le.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=Ep.createWriteStream(e);a.on("error",o),a.on("close",o),le.renderToFileStream(a,n,r)};le.renderToFileStream=function(e,n,r){le.render(n,r).pack().pipe(e)}});var tl=y(Nn=>{var Pp=Wt(),Rp={WW:" ",WB:"\u2584",BB:"\u2588",BW:"\u2580"},Lp={BB:" ",BW:"\u2584",WW:"\u2588",WB:"\u2580"};function Mp(t,e,n){return t&&e?n.BB:t&&!e?n.BW:!t&&e?n.WB:n.WW}Nn.render=function(t,e,n){let r=Pp.getOptions(e),s=Rp;(r.color.dark.hex==="#ffffff"||r.color.light.hex==="#000000")&&(s=Lp);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],p=o[(u+1)*i+d];a+=Mp(f,p,s)}a+=c+`
15
- `}return a+=l.slice(0,-1),typeof n=="function"&&n(null,a),a};Nn.renderToFile=function(e,n,r,s){typeof s>"u"&&(s=r,r=void 0);let i=require("fs"),o=Nn.render(n,r);i.writeFile(e,o,s)}});var rl=y(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+`
13
+ `);let o=xf(e,n,s),a=Nn.getSymbolSize(e),l=new hf(a);return _f(l,e),bf(l),wf(l,e),es(l,n,0),e>=7&&If(l,e),Af(l,o),isNaN(r)&&(r=ts.getBestMask(l,es.bind(null,l,n))),ts.applyMask(r,l),es(l,n,r),{modules:l,version:e,errorCorrectionLevel:n,maskPattern:r,segments:s}}aa.create=function(e,n){if(typeof e>"u"||e==="")throw new Error("No input text");let r=Qr.M,s,i;return typeof n<"u"&&(r=Qr.from(n.errorCorrectionLevel,Qr.M),s=Mn.from(n.version),i=ts.from(n.maskPattern),n.toSJISFunc&&Nn.setToSJISFunction(n.toSJISFunc)),kf(e,s,r,i)}});var ss=y((uy,ca)=>{"use strict";var Ef=require("util"),la=require("stream"),ne=ca.exports=function(){la.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};Ef.inherits(ne,la);ne.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))};ne.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};ne.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()))};ne.prototype.destroySoon=ne.prototype.end;ne.prototype._end=function(){this._reads.length>0&&this.emit("error",new Error("Unexpected end of input")),this.destroy()};ne.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit("close"))};ne.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))};ne.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)};ne.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 os=y(is=>{"use strict";var Ie=[{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]}];is.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<Ie.length;a++){let l=Ie[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};is.getInterlaceIterator=function(t){return function(e,n,r){let s=e%Ie[r].x.length,i=(e-s)/Ie[r].x.length*8+Ie[r].x[s],o=n%Ie[r].y.length,a=(n-o)/Ie[r].y.length*8+Ie[r].y[o];return i*4+a*t*4}}});var as=y((fy,ua)=>{"use strict";ua.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 ls=y((py,fa)=>{"use strict";var Cf=os(),Pf=as();function da(t,e,n){let r=t*e;return n!==8&&(r=Math.ceil(r/(8/n))),r}var ot=fa.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=Cf.getImagePasses(n,r);for(let l=0;l<a.length;l++)this._images.push({byteWidth:da(a[l].width,i,o),height:a[l].height,lineIndex:0})}else this._images.push({byteWidth:da(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=Pf(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 ga=y((hy,ha)=>{"use strict";var Rf=require("util"),pa=ss(),Lf=ls(),Mf=ha.exports=function(t){pa.call(this);let e=[],n=this;this._filter=new Lf(t,{read:this.read.bind(this),write:function(r){e.push(r)},complete:function(){n.emit("complete",Buffer.concat(e))}}),this._filter.start()};Rf.inherits(Mf,pa)});var at=y((gy,ma)=>{"use strict";ma.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 ds=y((my,ya)=>{"use strict";var cs=[];(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;cs[t]=e}})();var us=ya.exports=function(){this._crc=-1};us.prototype.write=function(t){for(let e=0;e<t.length;e++)this._crc=cs[(this._crc^t[e])&255]^this._crc>>>8;return!0};us.prototype.crc32=function(){return this._crc^-1};us.crc32=function(t){let e=-1;for(let n=0;n<t.length;n++)e=cs[(e^t[n])&255]^e>>>8;return e^-1}});var fs=y((yy,Sa)=>{"use strict";var L=at(),Nf=ds(),O=Sa.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[L.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[L.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[L.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[L.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[L.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[L.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(L.PNG_SIGNATURE.length,this._parseSignature.bind(this))};O.prototype._parseSignature=function(t){let e=L.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!==L.TYPE_IHDR){this.error(new Error("Expected IHDR on beggining"));return}if(this._crc=new Nf,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 L.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=L.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:n,depth:r,interlace:!!a,palette:!!(s&L.COLORTYPE_PALETTE),color:!!(s&L.COLORTYPE_COLOR),alpha:!!(s&L.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===L.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===L.COLORTYPE_GRAYSCALE&&this.transColor([t.readUInt16BE(0)]),this._colorType===L.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)/L.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===L.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 ps=y(_a=>{"use strict";var va=os(),Of=[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]}],Bf=[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 Df(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,p;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,p=i>>4,n.push(p,f);break;case 2:u=i&3,d=i>>2&3,f=i>>4&3,p=i>>6&3,n.push(p,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,p=i>>7&1,n.push(p,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 Hf(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);Of[r](e,s,d,i),i+=r}return i}function Ff(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);Bf[r](e,d,f,i)}s.resetAfterLine()}}_a.dataToBitMap=function(t,e){let n=e.width,r=e.height,s=e.depth,i=e.bpp,o=e.interlace,a;s!==8&&(a=Df(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=va.getImagePasses(n,r),f=va.getInterlaceIterator(n,r);else{let p=0;f=function(){let h=p;return p+=4,h},d=[{width:n,height:r}]}for(let p=0;p<d.length;p++)s===8?u=Hf(d[p],l,f,i,t,u):Ff(d[p],l,f,i,a,c);if(s===8){if(u!==t.length)throw new Error("extra data found")}else a.end();return l}});var hs=y((vy,ba)=>{"use strict";function Uf(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 qf(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 jf(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}}ba.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?Uf(t,l,r,s,a):(o&&qf(t,l,r,s,o),n!==8&&(n===16&&(l=Buffer.alloc(r*s*4)),jf(t,l,r,s,n))),l}});var Aa=y((_y,Ia)=>{"use strict";var Wf=require("util"),gs=require("zlib"),wa=ss(),Gf=ga(),$f=fs(),zf=ps(),Vf=hs(),ae=Ia.exports=function(t){wa.call(this),this._parser=new $f(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()};Wf.inherits(ae,wa);ae.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};ae.prototype._inflateData=function(t){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=gs.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,gs.Z_MIN_CHUNK);this._inflate=gs.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)};ae.prototype._handleMetaData=function(t){this._metaData=t,this._bitmapInfo=Object.create(t),this._filter=new Gf(this._bitmapInfo)};ae.prototype._handleTransColor=function(t){this._bitmapInfo.transColor=t};ae.prototype._handlePalette=function(t){this._bitmapInfo.palette=t};ae.prototype._simpleTransparency=function(){this._metaData.alpha=!0};ae.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};ae.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit("error","No Inflate block"))};ae.prototype._complete=function(t){if(this.errord)return;let e;try{let n=zf.dataToBitMap(t,this._bitmapInfo);e=Vf(n,this._bitmapInfo),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var Ta=y((by,xa)=>{"use strict";var Z=at();xa.exports=function(t,e,n,r){let s=[Z.COLORTYPE_COLOR_ALPHA,Z.COLORTYPE_ALPHA].indexOf(r.colorType)!==-1;if(r.colorType===r.inputColorType){let h=(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&&h)return t}let i=r.bitDepth!==16?t:new Uint16Array(t.buffer),o=255,a=Z.COLORTYPE_TO_BPP_MAP[r.inputColorType];a===4&&!r.inputHasAlpha&&(a=3);let l=Z.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 p(){let h,g,m,S=o;switch(r.inputColorType){case Z.COLORTYPE_COLOR_ALPHA:S=i[u+3],h=i[u],g=i[u+1],m=i[u+2];break;case Z.COLORTYPE_COLOR:h=i[u],g=i[u+1],m=i[u+2];break;case Z.COLORTYPE_ALPHA:S=i[u+1],h=i[u],g=h,m=h;break;case Z.COLORTYPE_GRAYSCALE:h=i[u],g=h,m=h;break;default:throw new Error("input color type:"+r.inputColorType+" is not supported at present")}return r.inputHasAlpha&&(s||(S/=o,h=Math.min(Math.max(Math.round((1-S)*f.red+S*h),0),o),g=Math.min(Math.max(Math.round((1-S)*f.green+S*g),0),o),m=Math.min(Math.max(Math.round((1-S)*f.blue+S*m),0),o))),{red:h,green:g,blue:m,alpha:S}}for(let h=0;h<n;h++)for(let g=0;g<e;g++){let m=p(i,u);switch(r.colorType){case Z.COLORTYPE_COLOR_ALPHA:case Z.COLORTYPE_COLOR:r.bitDepth===8?(c[d]=m.red,c[d+1]=m.green,c[d+2]=m.blue,s&&(c[d+3]=m.alpha)):(c.writeUInt16BE(m.red,d),c.writeUInt16BE(m.green,d+2),c.writeUInt16BE(m.blue,d+4),s&&c.writeUInt16BE(m.alpha,d+6));break;case Z.COLORTYPE_ALPHA:case Z.COLORTYPE_GRAYSCALE:{let S=(m.red+m.green+m.blue)/3;r.bitDepth===8?(c[d]=S,s&&(c[d+1]=m.alpha)):(c.writeUInt16BE(S,d),s&&c.writeUInt16BE(m.alpha,d+2));break}default:throw new Error("unrecognised color Type "+r.colorType)}u+=a,d+=l}return c}});var Ca=y((wy,Ea)=>{"use strict";var ka=as();function Yf(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 Kf(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 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=t[e+i]-o;s+=Math.abs(a)}return s}function Qf(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 Zf(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 ep(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 tp(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 np(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]-ka(a,l,c);r[s+o]=u}}function rp(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]-ka(o,a,l);s+=Math.abs(c)}return s}var sp={0:Yf,1:Kf,2:Qf,3:ep,4:np},ip={0:Jf,1:Xf,2:Zf,3:tp,4:rp};Ea.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 p=0;p<i.length;p++){let h=ip[i[p]](t,l,o,s);h<f&&(u=i[p],f=h)}}c[a]=u,a++,sp[u](t,l,o,c,a,s),a+=o,l+=o}return c}});var ms=y((Iy,Pa)=>{"use strict";var F=at(),op=ds(),ap=Ta(),lp=Ca(),cp=require("zlib"),Ae=Pa.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||cp.createDeflate,t.bitDepth=t.bitDepth||8,t.colorType=typeof t.colorType=="number"?t.colorType:F.COLORTYPE_COLOR_ALPHA,t.inputColorType=typeof t.inputColorType=="number"?t.inputColorType:F.COLORTYPE_COLOR_ALPHA,[F.COLORTYPE_GRAYSCALE,F.COLORTYPE_COLOR,F.COLORTYPE_COLOR_ALPHA,F.COLORTYPE_ALPHA].indexOf(t.colorType)===-1)throw new Error("option color type:"+t.colorType+" is not supported at present");if([F.COLORTYPE_GRAYSCALE,F.COLORTYPE_COLOR,F.COLORTYPE_COLOR_ALPHA,F.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")};Ae.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Ae.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Ae.prototype.filterData=function(t,e,n){let r=ap(t,e,n,this._options),s=F.COLORTYPE_TO_BPP_MAP[this._options.colorType];return lp(r,e,n,this._options,s)};Ae.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(op.crc32(r.slice(4,r.length-4)),r.length-4),r};Ae.prototype.packGAMA=function(t){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(t*F.GAMMA_DIVISION),0),this._packChunk(F.TYPE_gAMA,e)};Ae.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(F.TYPE_IHDR,n)};Ae.prototype.packIDAT=function(t){return this._packChunk(F.TYPE_IDAT,t)};Ae.prototype.packIEND=function(){return this._packChunk(F.TYPE_IEND,null)}});var Na=y((Ay,Ma)=>{"use strict";var up=require("util"),Ra=require("stream"),dp=at(),fp=ms(),La=Ma.exports=function(t){Ra.call(this);let e=t||{};this._packer=new fp(e),this._deflate=this._packer.createDeflate(),this.readable=!0};up.inherits(La,Ra);La.prototype.pack=function(t,e,n,r){this.emit("data",Buffer.from(dp.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 Ua=y((jt,Fa)=>{"use strict";var Oa=require("assert").ok,lt=require("zlib"),pp=require("util"),Ba=require("buffer").kMaxLength;function Ue(t){if(!(this instanceof Ue))return new Ue(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 hp(t){return new Ue(t)}function Da(t,e){e&&process.nextTick(e),t._handle&&(t._handle.close(),t._handle=null)}Ue.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(h){u=h});function d(h,g){if(r._hadError)return;let m=i-g;if(Oa(m>=0,"have should not go down"),m>0){let S=r._buffer.slice(r._offset,r._offset+m);if(r._offset+=m,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-h,s=h,!0):!1}Oa(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>=Ba)throw Da(this),new RangeError("Cannot create final Buffer. It would be larger than 0x"+Ba.toString(16)+" bytes");let p=Buffer.concat(l,c);return Da(this),p};pp.inherits(Ue,lt.Inflate);function gp(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 Ha(t,e){return gp(new Ue(e),t)}Fa.exports=jt=Ha;jt.Inflate=Ue;jt.createInflate=hp;jt.inflateSync=Ha});var ys=y((xy,ja)=>{"use strict";var qa=ja.exports=function(t){this._buffer=t,this._reads=[]};qa.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})};qa.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 Ga=y(Wa=>{"use strict";var mp=ys(),yp=ls();Wa.process=function(t,e){let n=[],r=new mp(t);return new yp(e,{read:r.read.bind(r),write:function(i){n.push(i)},complete:function(){}}).start(),r.process(),Buffer.concat(n)}});var Ya=y((ky,Va)=>{"use strict";var $a=!0,za=require("zlib"),Sp=Ua();za.deflateSync||($a=!1);var vp=ys(),_p=Ga(),bp=fs(),wp=ps(),Ip=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;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 p=new vp(t);if(new bp(e,{read:p.read.bind(p),error:r,metadata:i,gamma:u,palette:a,transColor:o,inflateData:f,simpleTransparency:l}).start(),p.process(),n)throw n;let g=Buffer.concat(d);d.length=0;let m;if(s.interlace)m=za.inflateSync(g);else{let M=((s.width*s.bpp*s.depth+7>>3)+1)*s.height;m=Sp(g,{chunkSize:M,maxLength:M})}if(g=null,!m||!m.length)throw new Error("bad png - invalid inflate data response");let S=_p.process(m,s);g=null;let U=wp.dataToBitMap(S,s);S=null;let se=Ip(U,s);return s.data=se,s.gamma=c||0,s}});var Qa=y((Ey,Xa)=>{"use strict";var Ja=!0,Ka=require("zlib");Ka.deflateSync||(Ja=!1);var Ap=at(),xp=ms();Xa.exports=function(t,e){if(!Ja)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 xp(n),s=[];s.push(Buffer.from(Ap.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=Ka.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 Za=y(Ss=>{"use strict";var Tp=Ya(),kp=Qa();Ss.read=function(t,e){return Tp(t,e||{})};Ss.write=function(t,e){return kp(t,e)}});var nl=y(tl=>{"use strict";var Ep=require("util"),el=require("stream"),Cp=Aa(),Pp=Na(),Rp=Za(),q=tl.PNG=function(t){el.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 Cp(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 Pp(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"))};Ep.inherits(q,el);q.sync=Rp;q.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)};q.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};q.prototype.write=function(t){return this._parser.write(t),!0};q.prototype.end=function(t){this._parser.end(t)};q.prototype._metadata=function(t){this.width=t.width,this.height=t.height,this.emit("metadata",t)};q.prototype._gamma=function(t){this.gamma=t};q.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit("close")};q.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)};q.prototype.bitblt=function(t,e,n,r,s,i,o){return q.bitblt(this,t,e,n,r,s,i,o),this};q.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}};q.prototype.adjustGamma=function(){q.adjustGamma(this)}});var Wt=y(qe=>{function rl(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("")}}qe.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:rl(e.color.dark||"#000000ff"),light:rl(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};qe.getScale=function(e,n){return n.width&&n.width>=e+n.margin*2?n.width/(e+n.margin*2):n.scale};qe.getImageWidth=function(e,n){let r=qe.getScale(e,n);return Math.floor((e+n.margin*2)*r)};qe.qrToImageData=function(e,n,r){let s=n.modules.size,i=n.modules.data,o=qe.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,p=r.color.light;if(u>=l&&d>=l&&u<a-l&&d<a-l){let h=Math.floor((u-l)/o),g=Math.floor((d-l)/o);p=c[i[h*s+g]?1:0]}e[f++]=p.r,e[f++]=p.g,e[f++]=p.b,e[f]=p.a}}});var sl=y(le=>{var Lp=require("fs"),Mp=nl().PNG,vs=Wt();le.render=function(e,n){let r=vs.getOptions(n),s=r.rendererOpts,i=vs.getImageWidth(e.modules.size,r);s.width=i,s.height=i;let o=new Mp(s);return vs.qrToImageData(o.data,e,r),o};le.renderToDataURL=function(e,n,r){typeof r>"u"&&(r=n,n=void 0),le.renderToBuffer(e,n,function(s,i){s&&r(s);let o="data:image/png;base64,";o+=i.toString("base64"),r(null,o)})};le.renderToBuffer=function(e,n,r){typeof r>"u"&&(r=n,n=void 0);let s=le.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()};le.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=Lp.createWriteStream(e);a.on("error",o),a.on("close",o),le.renderToFileStream(a,n,r)};le.renderToFileStream=function(e,n,r){le.render(n,r).pack().pipe(e)}});var il=y(On=>{var Np=Wt(),Op={WW:" ",WB:"\u2584",BB:"\u2588",BW:"\u2580"},Bp={BB:" ",BW:"\u2584",WW:"\u2588",WB:"\u2580"};function Dp(t,e,n){return t&&e?n.BB:t&&!e?n.BW:!t&&e?n.WB:n.WW}On.render=function(t,e,n){let r=Np.getOptions(e),s=Op;(r.color.dark.hex==="#ffffff"||r.color.light.hex==="#000000")&&(s=Bp);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],p=o[(u+1)*i+d];a+=Dp(f,p,s)}a+=c+`
15
+ `}return a+=l.slice(0,-1),typeof n=="function"&&n(null,a),a};On.renderToFile=function(e,n,r,s){typeof s>"u"&&(s=r,r=void 0);let i=require("fs"),o=On.render(n,r);i.writeFile(e,o,s)}});var al=y(ol=>{ol.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=y(ol=>{var Np="\x1B[47m",Op="\x1B[40m",ys="\x1B[37m",Ss="\x1B[30m",We="\x1B[0m",Bp=Np+Ss,Dp=Op+ys,Hp=function(t,e,n){return{"00":We+" "+t,"01":We+e+"\u2584"+t,"02":We+n+"\u2584"+t,10:We+e+"\u2580"+t,11:" ",12:"\u2584",20:We+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?Dp:Bp,c=Hp(o,i?Ss:ys,i?ys:Ss),u=We+`
19
- `+o,d=o;for(let f=-1;f<r+1;f+=2){for(let p=-1;p<r;p++)d+=c[il(s,r,p,f)];d+=c[il(s,r,r,f)]+u}return d+=We,typeof n=="function"&&n(null,d),d}});var cl=y(ll=>{var Fp=rl(),Up=al();ll.render=function(t,e,n){return e&&e.small?Up.render(t,e,n):Fp.render(t,e,n)}});var _s=y(dl=>{var qp=Wt();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 vs(t,e,n){let r=t+e;return typeof n<"u"&&(r+=" "+n),r}function Wp(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?vs("M",l+n,.5+c+n):vs("m",s,0),s=0,i=!1),l+1<e&&t[a+1]||(r+=vs("h",o),o=0)):s++}return r}dl.render=function(e,n,r){let s=qp.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="'+Wp(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=y(On=>{var jp=_s();On.render=jp.render;On.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">'+On.render(n,r);i.writeFile(e,a,s)}});var pl=y(Bn=>{var ws=Wt();function Gp(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 $p(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}Bn.render=function(e,n,r){let s=r,i=n;typeof s>"u"&&(!n||!n.getContext)&&(s=n,n=void 0),n||(i=$p()),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),Gp(a,i,o),a.putImageData(l,0,0),i};Bn.renderToDataURL=function(e,n,r){let s=r;typeof s>"u"&&(!n||!n.getContext)&&(s=n,n=void 0),s||(s={});let i=Bn.render(e,n,s),o=s.type||"image/png",a=s.rendererOpts||{};return i.toDataURL(o,a.quality)}});var gl=y(jt=>{var zp=Or(),bs=es(),hl=pl(),Vp=_s();function Is(t,e,n,r,s){let i=[].slice.call(arguments,1),o=i.length,a=typeof i[o-1]=="function";if(!a&&!zp())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)}}jt.create=bs.create;jt.toCanvas=Is.bind(null,hl.render);jt.toDataURL=Is.bind(null,hl.renderToDataURL);jt.toString=Is.bind(null,function(t,e,n){return Vp.render(t,n)})});var vl=y(ke=>{var ml=Or(),As=es(),Yp=el(),yl=tl(),Jp=cl(),Sl=fl();function Gt(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 Kp(t){return t.slice((t.lastIndexOf(".")-1>>>0)+2).toLowerCase()}function Dn(t){switch(t){case"svg":return Sl;case"txt":case"utf8":return yl;case"png":case"image/png":default:return Yp}}function Xp(t){switch(t){case"svg":return Sl;case"terminal":return Jp;case"utf8":default:return yl}}function $t(t,e,n){if(!n.cb)return new Promise(function(r,s){try{let i=As.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=As.create(e,n.opts);return t(r,n.opts,n.cb)}catch(r){n.cb(r)}}ke.create=As.create;ke.toCanvas=gl().toCanvas;ke.toString=function(e,n,r){let s=Gt(e,n,r),i=s.opts?s.opts.type:void 0,o=Xp(i);return $t(o.render,e,s)};ke.toDataURL=function(e,n,r){let s=Gt(e,n,r),i=Dn(s.opts.type);return $t(i.renderToDataURL,e,s)};ke.toBuffer=function(e,n,r){let s=Gt(e,n,r),i=Dn(s.opts.type);return $t(i.renderToBuffer,e,s)};ke.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=Gt(n,r,s),o=i.opts.type||Kp(e),l=Dn(o).renderToFile.bind(null,e);return $t(l,n,i)};ke.toFileStream=function(e,n,r){if(arguments.length<2)throw new Error("Too few arguments provided");let s=Gt(n,r,e.emit.bind(e,"error")),o=Dn("png").renderToFileStream.bind(null,e);$t(o,n,s)}});var wl=y((Py,_l)=>{_l.exports=vl()});var eu=require("http");var Ld=Ve(no(),1),Md=Ve(Ir(),1),Nd=Ve(xr(),1),Od=Ve(bn(),1),Nr=Ve(fo(),1);var Ge=require("fs/promises"),dr=require("path"),tu=require("os"),nu=Ve(wl(),1);var dt=require("child_process"),Nl=require("fs"),W=require("path"),Jt=require("os");var Gn=require("fs");var bl=require("os"),V=require("path"),zt=(0,V.join)((0,bl.homedir)(),".vibelet"),Hn=(0,V.join)(zt,"logs"),ks=(0,V.join)(zt,"data"),Zp=(0,V.join)(zt,"runtime"),Ry=(0,V.join)(Zp,"current"),Il=(0,V.join)(zt,"identity.json"),Al=(0,V.join)(zt,"pairings.json"),kl=(0,V.join)(ks,"push-subscriptions.json"),Fn=(0,V.join)(ks,"sessions.json"),ct=(0,V.join)(ks,"audit.jsonl"),Un=(0,V.join)(Hn,"daemon.stdout.log"),qn=(0,V.join)(Hn,"daemon.stderr.log");var Wn={stdout:!1,stderr:!1};function xl(t){if(!t||typeof t!="object")return!1;let e=typeof t.code=="string"?t.code:"";return e==="EIO"||e==="EPIPE"}function Qp(t){return!t.destroyed&&t.writable!==!1}function Tl(t,e){if(Wn[t])return!1;let n=t==="stderr"?process.stderr:process.stdout;if(!Qp(n))return Wn[t]=!0,!1;try{return n.write(e,r=>{xl(r)&&(Wn[t]=!0)}),!0}catch(r){return xl(r)&&(Wn[t]=!0),!1}}function Vt(t){return Tl("stdout",t)}function jn(t){return Tl("stderr",t)}var El={debug:10,info:20,warn:30,error:40},eh=process.env.VIBE_LOG_LEVEL||"info";function th(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}var Pl=!th();if(Pl)try{(0,Gn.mkdirSync)(Hn,{recursive:!0})}catch{}function Cl(t,e,n){if(El[t]<El[eh])return;let r={level:t,ts:new Date().toISOString(),msg:n,...e},s=JSON.stringify(r);if(t==="error"||t==="warn"?jn(s+`
21
- `):Vt(s+`
22
- `),Pl){let i=t==="error"||t==="warn"?qn:Un;try{(0,Gn.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 nh=["fnm_multishells"],rh=6e4,sh=L.child({module:"config"});function xe(t){return nh.some(e=>t.includes(e))}function Ts(){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 Ts())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 ih(t=Ol()){let e=(0,Jt.homedir)(),n=t.PNPM_HOME||process.env.PNPM_HOME||(0,W.join)(e,"Library","pnpm"),r=t.PATH||process.env.PATH||"",s=["/usr/local/bin","/opt/homebrew/bin","/usr/bin","/bin",(0,W.join)(e,".npm-global","bin"),(0,W.join)(e,".local","bin"),(0,W.join)(e,".claude","bin"),n],i=r.split(W.delimiter).filter(Boolean),o=new Set(i);for(let a of s)o.has(a)||(i.push(a),o.add(a));return i.join(W.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 $n(){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=ih(t),e.HOME||(e.HOME=(0,Jt.homedir)()),delete e.CLAUDE_CODE_ENTRYPOINT,delete e.CLAUDECODE,e}function Yt(t,e=3e3){try{return(0,dt.execFileSync)(t,["--version"],{timeout:e,stdio:"pipe",encoding:"utf-8",env:$n()}).trim()||null}catch{return null}}function oh(t){for(let e of Ts())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 ah(){let t=(0,Jt.homedir)();return[(0,W.join)(t,".local","bin","claude"),(0,W.join)(t,".claude","bin","claude"),"/usr/local/bin/claude","/opt/homebrew/bin/claude",(0,W.join)(t,".npm-global","bin","claude")]}function lh(){for(let t of ah())if(Yt(t))return t;try{let t=(0,dt.execFileSync)("/usr/bin/which",["claude"],{timeout:3e3,stdio:"pipe",encoding:"utf-8",env:$n()}).trim();if(t&&!t.includes("cmux")&&Yt(t))return t}catch{}}function ch(){let t=(0,Jt.homedir)(),e=[process.env.PNPM_HOME,(0,W.join)(t,"Library","pnpm")].filter(n=>!!n);return["/usr/local/bin/codex","/opt/homebrew/bin/codex",(0,W.join)(t,".npm-global","bin","codex"),(0,W.join)(t,".local","bin","codex"),...e.map(n=>(0,W.join)(n,"codex"))]}function uh(){let t;for(let n of ch())if(Yt(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:$n()}).trim();if(n&&Yt(n)){if(!xe(n))return n;t=t??n}}catch{}let e=oh("codex");if(e&&Yt(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>rh||!(0,Nl.existsSync)(n)||xe(n))&&(n=t()??e,r=i,sh.info({name:e,path:n,transient:xe(n)},"binary resolved")),n}}var dh=Bl(lh,"claude"),fh=Bl(uh,"codex");function ph(){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=ph();function hh(t,e){return{command:Ts()[0]??"/bin/zsh",args:["-lc",`command -v ${t} >/dev/null 2>&1 && exec ${t} "$@"`,"--",...e]}}var v={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 dh()},get codexPath(){return fh()},isTransientPath:xe,execViaLoginShell:hh,buildSanitizedEnv:$n};var Xs=require("crypto"),Nc=require("fs/promises");var $l=require("child_process"),zl=require("fs");var zn=require("fs"),Fl=require("path");var G=require("fs");function gh(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 Kt(t,e){if(!(0,G.existsSync)(t))return{path:t,existed:!1,trimmed:!1,beforeBytes:0,afterBytes:0,reclaimedBytes:0};let r=(0,G.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=gh(r,e.maxBytes,s,e.retainBytes),o=(0,G.openSync)(t,"r+");try{let a=Buffer.alloc(0);if(i>0){let l=Buffer.alloc(i);(0,G.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,G.ftruncateSync)(o,0),a.length>0&&(0,G.writeSync)(o,a,0,a.length,0),{path:t,existed:!0,trimmed:!0,beforeBytes:r,afterBytes:a.length,reclaimedBytes:r-a.length}}finally{(0,G.closeSync)(o)}}function Dl(t){let e=[Kt(t.auditPath,{maxBytes:t.auditMaxBytes}),Kt(t.stdoutLogPath,{maxBytes:t.logMaxBytes}),Kt(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,mh=new Set(["ts","event","source","appEvent","level"]);function yh(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}function Sh(t={}){let e={};for(let[n,r]of Object.entries(t))mh.has(n)||(e[n]=r);return e}function vh(t,e,n={},r){return{ts:r??new Date().toISOString(),event:"app.log",source:"app",appEvent:t,level:e,...Sh(n)}}function _h(){Hl||((0,zn.mkdirSync)((0,Fl.dirname)(ct),{recursive:!0}),Hl=!0)}var Es=class{emit(e,n={}){this.write({ts:new Date().toISOString(),event:e,...n})}emitApp(e,n,r={},s){this.write(vh(e,n,r,s))}write(e){if(!yh()){_h();try{let n=JSON.stringify(e)+`
25
- `;Kt(ct,{maxBytes:v.auditMaxBytes,incomingBytes:Buffer.byteLength(n)}),(0,zn.appendFileSync)(ct,n)}catch{}}}},w=new Es;var Te=require("fs"),Ul=require("os"),Xt=require("path"),ql=require("crypto"),Cs="claude-hook:",Zt="x-vibelet-claude-hook-secret",Qt={continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"PreToolUse"}};function wh(t,e){return`#!/usr/bin/env node
18
+ `,typeof n=="function"&&n(null,a),a}});var dl=y(ul=>{var Hp="\x1B[47m",Fp="\x1B[40m",_s="\x1B[37m",bs="\x1B[30m",je="\x1B[0m",Up=Hp+bs,qp=Fp+_s,jp=function(t,e,n){return{"00":je+" "+t,"01":je+e+"\u2584"+t,"02":je+n+"\u2584"+t,10:je+e+"\u2580"+t,11:" ",12:"\u2584",20:je+n+"\u2580"+t,21:"\u2580",22:"\u2588"}},ll=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"},cl=function(t,e,n,r){return ll(t,e,n,r)+ll(t,e,n,r+1)};ul.render=function(t,e,n){let r=t.modules.size,s=t.modules.data,i=!!(e&&e.inverse),o=e&&e.inverse?qp:Up,c=jp(o,i?bs:_s,i?_s:bs),u=je+`
19
+ `+o,d=o;for(let f=-1;f<r+1;f+=2){for(let p=-1;p<r;p++)d+=c[cl(s,r,p,f)];d+=c[cl(s,r,r,f)]+u}return d+=je,typeof n=="function"&&n(null,d),d}});var pl=y(fl=>{var Wp=al(),Gp=dl();fl.render=function(t,e,n){return e&&e.small?Gp.render(t,e,n):Wp.render(t,e,n)}});var Is=y(gl=>{var $p=Wt();function hl(t,e){let n=t.a/255,r=e+'="'+t.hex+'"';return n<1?r+" "+e+'-opacity="'+n.toFixed(2).slice(1)+'"':r}function ws(t,e,n){let r=t+e;return typeof n<"u"&&(r+=" "+n),r}function zp(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?ws("M",l+n,.5+c+n):ws("m",s,0),s=0,i=!1),l+1<e&&t[a+1]||(r+=ws("h",o),o=0)):s++}return r}gl.render=function(e,n,r){let s=$p.getOptions(n),i=e.modules.size,o=e.modules.data,a=i+s.margin*2,l=s.color.light.a?"<path "+hl(s.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",c="<path "+hl(s.color.dark,"stroke")+' d="'+zp(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 ml=y(Bn=>{var Vp=Is();Bn.render=Vp.render;Bn.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">'+Bn.render(n,r);i.writeFile(e,a,s)}});var yl=y(Dn=>{var As=Wt();function Yp(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 Jp(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}Dn.render=function(e,n,r){let s=r,i=n;typeof s>"u"&&(!n||!n.getContext)&&(s=n,n=void 0),n||(i=Jp()),s=As.getOptions(s);let o=As.getImageWidth(e.modules.size,s),a=i.getContext("2d"),l=a.createImageData(o,o);return As.qrToImageData(l.data,e,s),Yp(a,i,o),a.putImageData(l,0,0),i};Dn.renderToDataURL=function(e,n,r){let s=r;typeof s>"u"&&(!n||!n.getContext)&&(s=n,n=void 0),s||(s={});let i=Dn.render(e,n,s),o=s.type||"image/png",a=s.rendererOpts||{};return i.toDataURL(o,a.quality)}});var vl=y(Gt=>{var Kp=Hr(),xs=rs(),Sl=yl(),Xp=Is();function Ts(t,e,n,r,s){let i=[].slice.call(arguments,1),o=i.length,a=typeof i[o-1]=="function";if(!a&&!Kp())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=xs.create(n,r);l(t(u,e,r))}catch(u){c(u)}})}try{let l=xs.create(n,r);s(null,t(l,e,r))}catch(l){s(l)}}Gt.create=xs.create;Gt.toCanvas=Ts.bind(null,Sl.render);Gt.toDataURL=Ts.bind(null,Sl.renderToDataURL);Gt.toString=Ts.bind(null,function(t,e,n){return Xp.render(t,n)})});var Il=y(xe=>{var _l=Hr(),ks=rs(),Qp=sl(),bl=il(),Zp=pl(),wl=ml();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(_l())e=n||{},n=null;else throw new Error("Callback required as last argument");return{opts:e,cb:n}}function eh(t){return t.slice((t.lastIndexOf(".")-1>>>0)+2).toLowerCase()}function Hn(t){switch(t){case"svg":return wl;case"txt":case"utf8":return bl;case"png":case"image/png":default:return Qp}}function th(t){switch(t){case"svg":return wl;case"terminal":return Zp;case"utf8":default:return bl}}function zt(t,e,n){if(!n.cb)return new Promise(function(r,s){try{let i=ks.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=ks.create(e,n.opts);return t(r,n.opts,n.cb)}catch(r){n.cb(r)}}xe.create=ks.create;xe.toCanvas=vl().toCanvas;xe.toString=function(e,n,r){let s=$t(e,n,r),i=s.opts?s.opts.type:void 0,o=th(i);return zt(o.render,e,s)};xe.toDataURL=function(e,n,r){let s=$t(e,n,r),i=Hn(s.opts.type);return zt(i.renderToDataURL,e,s)};xe.toBuffer=function(e,n,r){let s=$t(e,n,r),i=Hn(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&&!_l())throw new Error("Too few arguments provided");let i=$t(n,r,s),o=i.opts.type||eh(e),l=Hn(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=Hn("png").renderToFileStream.bind(null,e);zt(o,n,s)}});var xl=y((jy,Al)=>{Al.exports=Il()});var su=require("http");var Bd=Ve(oo(),1),Dd=Ve(Tr(),1),Hd=Ve(Cr(),1),Fd=Ve(In(),1),Dr=Ve(mo(),1);var Ge=require("fs/promises"),hr=require("path"),iu=require("os"),ou=Ve(xl(),1);var dt=require("child_process"),Hl=require("fs"),j=require("path"),Kt=require("os");var $n=require("fs");var Tl=require("os"),Y=require("path"),Vt=(0,Y.join)((0,Tl.homedir)(),".vibelet"),Fn=(0,Y.join)(Vt,"logs"),Es=(0,Y.join)(Vt,"data"),nh=(0,Y.join)(Vt,"runtime"),Wy=(0,Y.join)(nh,"current"),kl=(0,Y.join)(Vt,"identity.json"),El=(0,Y.join)(Vt,"pairings.json"),Cl=(0,Y.join)(Es,"push-subscriptions.json"),Un=(0,Y.join)(Es,"sessions.json"),ct=(0,Y.join)(Es,"audit.jsonl"),qn=(0,Y.join)(Fn,"daemon.stdout.log"),jn=(0,Y.join)(Fn,"daemon.stderr.log");var Wn={stdout:!1,stderr:!1};function Pl(t){if(!t||typeof t!="object")return!1;let e=typeof t.code=="string"?t.code:"";return e==="EIO"||e==="EPIPE"}function rh(t){return!t.destroyed&&t.writable!==!1}function Rl(t,e){if(Wn[t])return!1;let n=t==="stderr"?process.stderr:process.stdout;if(!rh(n))return Wn[t]=!0,!1;try{return n.write(e,r=>{Pl(r)&&(Wn[t]=!0)}),!0}catch(r){return Pl(r)&&(Wn[t]=!0),!1}}function Yt(t){return Rl("stdout",t)}function Gn(t){return Rl("stderr",t)}var Ll={debug:10,info:20,warn:30,error:40},sh=process.env.VIBE_LOG_LEVEL||"info";function ih(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}var Nl=!ih();if(Nl)try{(0,$n.mkdirSync)(Fn,{recursive:!0})}catch{}function Ml(t,e,n){if(Ll[t]<Ll[sh])return;let r={level:t,ts:new Date().toISOString(),msg:n,...e},s=JSON.stringify(r);if(t==="error"||t==="warn"?Gn(s+`
21
+ `):Yt(s+`
22
+ `),Nl){let i=t==="error"||t==="warn"?jn:qn;try{(0,$n.appendFileSync)(i,s+`
23
+ `)}catch{}}}function Ol(t={}){function e(n,r,s){typeof r=="string"?Ml(n,t,r):Ml(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=>Ol({...t,...n})}}var P=Ol({module:"daemon"});var oh=["fnm_multishells"],ah=6e4,lh=P.child({module:"config"});function Te(t){return oh.some(e=>t.includes(e))}function Ps(){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 Fl(){if(ut&&!Te(ut.PATH??""))return ut;for(let t of Ps())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 ch(t=Fl()){let e=(0,Kt.homedir)(),n=t.PNPM_HOME||process.env.PNPM_HOME||(0,j.join)(e,"Library","pnpm"),r=t.PATH||process.env.PATH||"",s=["/usr/local/bin","/opt/homebrew/bin","/usr/bin","/bin",(0,j.join)(e,".npm-global","bin"),(0,j.join)(e,".local","bin"),(0,j.join)(e,".claude","bin"),n],i=r.split(j.delimiter).filter(Boolean),o=new Set(i);for(let a of s)o.has(a)||(i.push(a),o.add(a));return i.join(j.delimiter)}function Cs(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 Bl(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 zn(){let t=Fl(),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=ch(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:zn()}).trim()||null}catch{return null}}function uh(t){for(let e of Ps())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 dh(){let t=(0,Kt.homedir)();return[(0,j.join)(t,".local","bin","claude"),(0,j.join)(t,".claude","bin","claude"),"/usr/local/bin/claude","/opt/homebrew/bin/claude",(0,j.join)(t,".npm-global","bin","claude")]}function fh(){for(let t of dh())if(Jt(t))return t;try{let t=(0,dt.execFileSync)("/usr/bin/which",["claude"],{timeout:3e3,stdio:"pipe",encoding:"utf-8",env:zn()}).trim();if(t&&!t.includes("cmux")&&Jt(t))return t}catch{}}function ph(){let t=(0,Kt.homedir)(),e=[process.env.PNPM_HOME,(0,j.join)(t,"Library","pnpm")].filter(n=>!!n);return["/usr/local/bin/codex","/opt/homebrew/bin/codex",(0,j.join)(t,".npm-global","bin","codex"),(0,j.join)(t,".local","bin","codex"),...e.map(n=>(0,j.join)(n,"codex"))]}function hh(){let t;for(let n of ph())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:zn()}).trim();if(n&&Jt(n)){if(!Te(n))return n;t=t??n}}catch{}let e=uh("codex");if(e&&Jt(e)){if(!Te(e))return e;t=t??e}return t}function Ul(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>ah||!(0,Hl.existsSync)(n)||Te(n))&&(n=t()??e,r=i,lh.info({name:e,path:n,transient:Te(n)},"binary resolved")),n}}var gh=Ul(fh,"claude"),mh=Ul(hh,"codex");function yh(){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 Dl=yh();function Sh(t,e){return{command:Ps()[0]??"/bin/zsh",args:["-lc",`command -v ${t} >/dev/null 2>&1 && exec ${t} "$@"`,"--",...e]}}var v={port:Number(process.env.VIBE_PORT)||9876,legacyToken:process.env.VIBE_TOKEN||"",canonicalHost:Dl.host||process.env.VIBELET_CANONICAL_HOST||process.env.VIBELET_HOST||"",fallbackHosts:Dl["fallback-hosts"]||process.env.VIBELET_FALLBACK_HOSTS||"",relayUrl:process.env.VIBELET_RELAY_URL||"",idleTimeoutMs:Bl("VIBE_IDLE_TIMEOUT_MS",1800*1e3),turnStallTimeoutMs:Bl("VIBE_TURN_STALL_TIMEOUT_MS",300*1e3),auditMaxBytes:Cs("VIBE_AUDIT_MAX_BYTES",8*1024*1024),daemonLogMaxBytes:Cs("VIBE_DAEMON_LOG_MAX_BYTES",16*1024*1024),storageHousekeepingIntervalMs:Cs("VIBE_STORAGE_HOUSEKEEPING_INTERVAL_MS",300*1e3),get claudePath(){return gh()},get codexPath(){return mh()},isTransientPath:Te,execViaLoginShell:Sh,buildSanitizedEnv:zn};var ti=require("crypto"),Hc=require("fs/promises");var Jl=require("child_process"),Kl=require("fs");var Vn=require("fs"),Wl=require("path");var G=require("fs");function vh(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,G.existsSync)(t))return{path:t,existed:!1,trimmed:!1,beforeBytes:0,afterBytes:0,reclaimedBytes:0};let r=(0,G.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=vh(r,e.maxBytes,s,e.retainBytes),o=(0,G.openSync)(t,"r+");try{let a=Buffer.alloc(0);if(i>0){let l=Buffer.alloc(i);(0,G.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,G.ftruncateSync)(o,0),a.length>0&&(0,G.writeSync)(o,a,0,a.length,0),{path:t,existed:!0,trimmed:!0,beforeBytes:r,afterBytes:a.length,reclaimedBytes:r-a.length}}finally{(0,G.closeSync)(o)}}function ql(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 jl=!1,_h=new Set(["ts","event","source","appEvent","level"]);function bh(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}function wh(t={}){let e={};for(let[n,r]of Object.entries(t))_h.has(n)||(e[n]=r);return e}function Ih(t,e,n={},r){return{ts:r??new Date().toISOString(),event:"app.log",source:"app",appEvent:t,level:e,...wh(n)}}function Ah(){jl||((0,Vn.mkdirSync)((0,Wl.dirname)(ct),{recursive:!0}),jl=!0)}var Rs=class{emit(e,n={}){this.write({ts:new Date().toISOString(),event:e,...n})}emitApp(e,n,r={},s){this.write(Ih(e,n,r,s))}write(e){if(!bh()){Ah();try{let n=JSON.stringify(e)+`
25
+ `;Xt(ct,{maxBytes:v.auditMaxBytes,incomingBytes:Buffer.byteLength(n)}),(0,Vn.appendFileSync)(ct,n)}catch{}}}},_=new Rs;var ke=require("fs"),Gl=require("os"),Qt=require("path"),$l=require("crypto"),Ls="claude-hook:",Zt="x-vibelet-claude-hook-secret",en={continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"PreToolUse"}};function xh(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));
@@ -43,9 +43,9 @@ process.stdin.on('end', () => {
43
43
  req.end(body);
44
44
  });
45
45
  process.stdin.resume();
46
- `}function bh(t,e){return`#!/usr/bin/env node
46
+ `}function Th(t,e){return`#!/usr/bin/env node
47
47
  const http = require('http');
48
- const fallback = ${JSON.stringify(JSON.stringify(Qt))};
48
+ const fallback = ${JSON.stringify(JSON.stringify(en))};
49
49
  const chunks = [];
50
50
  process.stdin.on('data', (chunk) => chunks.push(chunk));
51
51
  process.stdin.on('end', () => {
@@ -79,30 +79,30 @@ process.stdin.on('end', () => {
79
79
  req.end(body);
80
80
  });
81
81
  process.stdin.resume();
82
- `}function Wl(t,e){let n=(0,Xt.join)((0,Ul.tmpdir)(),`vibelet-claude-hooks-${process.pid}-${(0,ql.randomUUID)()}`);(0,Te.mkdirSync)(n,{recursive:!0});let r=(0,Xt.join)(n,"settings.json"),s=(0,Xt.join)(n,"session_hook_forwarder.cjs"),i=(0,Xt.join)(n,"permission_hook_forwarder.cjs");return(0,Te.writeFileSync)(s,wh(t,e),"utf8"),(0,Te.writeFileSync)(i,bh(t,e),"utf8"),(0,Te.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 Vn(t){if(t)try{(0,Te.rmSync)(t.dirPath,{recursive:!0,force:!0})}catch{}}var Q=L.child({module:"claude"}),Vl="claude-permission-denial:",Ih=/\u001B\[[0-?]*[ -/]*[@-~]/g;function Ah(){return process.env.VIBE_TEST!=="1"&&!process.argv.includes("--test")}function Ps(t){Ah()&&jn(`\x1B[33m\u26A1 [Vibelet] ${t}\x1B[0m
83
- `)}function kh(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 xh(t){return Array.isArray(t)&&t.length>0&&t.every(e=>e&&typeof e=="object"&&e.type==="tool_reference")}function Th(t){if(typeof t=="string")return t;let e=kh(t);return e||(xh(t)?"":JSON.stringify(t))}function Eh(t){return/requested permissions|haven't granted/i.test(t)}function jl(t){return t.replace(Ih,"").replace(/\s+/g," ").trim()}function Ch(t){let e=t.toLowerCase();return e==="error"||e==="failed"||e==="unknown error"}function Ph(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 Rh(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&&Ph(i));if(r)return Rh(r);let s=[e,...n].find(i=>!!i&&!Ch(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 Yn(t){return t.startsWith(Vl)}var en=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=v.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()}`),Q.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),Vn(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)})`;Q.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)(v.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}`),Q.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
- `);this.buffer=i.pop();for(let o of i)if(o.trim())try{this.handleRaw(JSON.parse(o))}catch{Q.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&&(Q.debug({sessionId:this.sessionId,stderr:i},"stderr"),this.lastStderr.push(i),this.lastStderr.length>10&&this.lastStderr.shift())}),this.proc.on("exit",(s,i)=>{Q.info({sessionId:this.sessionId,exitCode:s,signal:i},"process exited");let o=this.interrupted;this.proc=null,Vn(this.hookFiles),this.hookFiles=null,this.interrupted=!1,o&&!this.sawFinalResult?this.handler?.({type:"session.interrupted",sessionId:this.sessionId}):s&&s!==0&&!this.sawFinalResult&&(Q.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(Q.info({sessionId:this.sessionId,requestId:e,approved:n},"approval response"),!this.proc?.stdin?.writable)return Q.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,Q.info({sessionId:this.sessionId,approvalMode:e},"approval mode updated")}interrupt(){this.proc&&!this.proc.killed&&(this.interrupted=!0,this.proc.kill("SIGTERM"),Q.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,Vn(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&&(Q.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=Th(s.content);if(!i)continue;if(s.is_error===!0&&typeof s.tool_use_id=="string"&&Eh(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"),Lh="@vibelet/cli";function Mh(t){try{let e=JSON.parse((0,Yl.readFileSync)(t,"utf8"));if(e.name===Lh&&typeof e.version=="string"&&e.version.length>0)return e.version}catch{}return null}function Nh(){return"0.1.6"}var ft=Nh();var x=L.child({module:"codex"});function Oh(t){switch(t.kind){case"request-user-input-approval":return{provider:"codex",kind:t.kind,rpcId:t.rpcId,questionId:t.questionId,approveLabel:t.approveLabel,denyLabel:t.denyLabel};default:return{provider:"codex",kind:t.kind,rpcId:t.rpcId}}}function Bh(t){let e=t.approvalContext;if(!e||e.provider!=="codex")return null;switch(e.kind){case"command-execution":return{kind:e.kind,responseKind:"v2",rpcId:e.rpcId,toolName:t.toolName,input:t.input};case"file-change":return{kind:e.kind,responseKind:"v2",rpcId:e.rpcId,toolName:t.toolName,input:t.input};case"request-user-input-approval":return!e.questionId||!e.approveLabel||!e.denyLabel?null:{kind:e.kind,rpcId:e.rpcId,questionId:e.questionId,approveLabel:e.approveLabel,denyLabel:e.denyLabel,toolName:t.toolName,input:t.input};case"exec-command-legacy":return{kind:e.kind,rpcId:e.rpcId,toolName:t.toolName,input:t.input};case"apply-patch-legacy":return{kind:e.kind,rpcId:e.rpcId,toolName:t.toolName,input:t.input};default:return null}}function ee(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 Dh(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 Hh(t){if(!Array.isArray(t))return null;for(let e of t){let n=ee(e);if(!n)continue;let r=C(n.id),s=Array.isArray(n.options)?n.options.map(l=>ee(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 Fh(t){if(!Array.isArray(t)||t.length===0)return!1;let e=t.map(s=>ee(s)).filter(s=>!!s).flatMap(s=>(Array.isArray(s.options)?s.options:[]).map(o=>ee(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=Dh(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:ee(t.arguments)??ee(t.input)??{}}:null}return null}function Uh(t){if(!Array.isArray(t))return"";for(let e of t){let n=ee(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 Jn=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=v.codexPath,i,o=this.buildSpawnArgs();if(v.isTransientPath(s)){let c=v.execViaLoginShell("codex",o);i=c.command,o=c.args,x.info({spawnCmd:i,argsPreview:o.slice(0,2)},"spawning via login shell")}else i=s,x.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:v.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}`),x.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{x.warn({linePreview:d.slice(0,200)},"failed to parse stdout line")}}),this.proc.stderr.on("data",c=>{let u=c.toString().trim();u&&(x.debug({stderr:u},"stderr"),this.lastStderr.push(u),this.lastStderr.length>10&&this.lastStderr.shift())}),this.proc.on("exit",c=>{x.info({threadId:this.threadId,exitCode:c},"process exited"),c&&c!==0&&x.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,x.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??"",x.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());x.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=>x.debug({resultPreview:JSON.stringify(r).slice(0,200)},"turn/start result")).catch(r=>{x.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 x.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}restorePendingApproval(e){let n=Bh(e);n&&this.approvalRequests.set(e.requestId,n)}interrupt(){this.rpc("turn/interrupt",{threadId:this.threadId}).catch(()=>{})}setApprovalMode(e){this.approvalMode=e,x.info({approvalMode:e},"approval mode updated (takes effect on subsequent turns)")}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})+`
82
+ `}function zl(t,e){let n=(0,Qt.join)((0,Gl.tmpdir)(),`vibelet-claude-hooks-${process.pid}-${(0,$l.randomUUID)()}`);(0,ke.mkdirSync)(n,{recursive:!0});let r=(0,Qt.join)(n,"settings.json"),s=(0,Qt.join)(n,"session_hook_forwarder.cjs"),i=(0,Qt.join)(n,"permission_hook_forwarder.cjs");return(0,ke.writeFileSync)(s,xh(t,e),"utf8"),(0,ke.writeFileSync)(i,Th(t,e),"utf8"),(0,ke.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 Yn(t){if(t)try{(0,ke.rmSync)(t.dirPath,{recursive:!0,force:!0})}catch{}}var ee=P.child({module:"claude"}),Xl="claude-permission-denial:",kh=/\u001B\[[0-?]*[ -/]*[@-~]/g;function Eh(){return process.env.VIBE_TEST!=="1"&&!process.argv.includes("--test")}function Ms(t){Eh()&&Gn(`\x1B[33m\u26A1 [Vibelet] ${t}\x1B[0m
83
+ `)}function Ch(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 Ph(t){return Array.isArray(t)&&t.length>0&&t.every(e=>e&&typeof e=="object"&&e.type==="tool_reference")}function Rh(t){if(typeof t=="string")return t;let e=Ch(t);return e||(Ph(t)?"":JSON.stringify(t))}function Lh(t){return/requested permissions|haven't granted/i.test(t)}function Vl(t){return t.replace(kh,"").replace(/\s+/g," ").trim()}function Mh(t){let e=t.toLowerCase();return e==="error"||e==="failed"||e==="unknown error"}function Nh(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 Oh(t){return t.toLowerCase().startsWith("claude ")?t:`Claude usage limit reached. ${t}`}function Yl(t){let e=Vl(t.resultText??""),n=(t.stderrLines??[]).map(Vl).filter(Boolean).slice(-3),r=[e,...n].find(i=>!!i&&Nh(i));if(r)return Oh(r);let s=[e,...n].find(i=>!!i&&!Mh(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 Jn(t){return t.startsWith(Xl)}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=v.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()}`),ee.info({sessionId:this.sessionId,cwd:e},"session initialized"),_.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),Yn(this.hookFiles),this.hookFiles=null,this.approvalMode!=="acceptEdits"&&this.approvalMode!=="autoApprove"&&this.hookPort&&this.hookSecret&&(this.hookFiles=zl(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)})`;ee.info({sessionId:this.sessionId,label:r,promptPreview:e.slice(0,50)},"running claude"),Ms(`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,Jl.spawn)(v.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,Kl.existsSync)(this.cwd)&&(i=`Working directory does not exist: ${this.cwd}`),ee.error({sessionId:this.sessionId,error:i,cwd:this.cwd},"spawn error"),_.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
+ `);this.buffer=i.pop();for(let o of i)if(o.trim())try{this.handleRaw(JSON.parse(o))}catch{ee.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&&(ee.debug({sessionId:this.sessionId,stderr:i},"stderr"),this.lastStderr.push(i),this.lastStderr.length>10&&this.lastStderr.shift())}),this.proc.on("exit",(s,i)=>{ee.info({sessionId:this.sessionId,exitCode:s,signal:i},"process exited");let o=this.interrupted;this.proc=null,Yn(this.hookFiles),this.hookFiles=null,this.interrupted=!1,o&&!this.sawFinalResult?this.handler?.({type:"session.interrupted",sessionId:this.sessionId}):s&&s!==0&&!this.sawFinalResult&&(ee.error({sessionId:this.sessionId,exitCode:s,lastStderr:this.lastStderr.slice(-3)},"abnormal exit"),this.handler?.({type:"error",sessionId:this.sessionId,message:Yl({stderrLines:this.lastStderr,exitCode:s})})),this.exitHandler?.(s)})}respondApproval(e,n){if(ee.info({sessionId:this.sessionId,requestId:e,approved:n},"approval response"),!this.proc?.stdin?.writable)return ee.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,ee.info({sessionId:this.sessionId,approvalMode:e},"approval mode updated")}interrupt(){this.proc&&!this.proc.killed&&(this.interrupted=!0,this.proc.kill("SIGTERM"),ee.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,Yn(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&&(ee.info({oldSessionId:this.sessionId,newSessionId:r},"session ID resolved"),_.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=Rh(s.content);if(!i)continue;if(s.is_error===!0&&typeof s.tool_use_id=="string"&&Lh(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"&&(_.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){Ms("Claude failed."),this.handler({type:"error",sessionId:this.sessionId,message:Yl({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}.`;_.emit("approval.request",{agent:"claude",sessionId:this.sessionId,toolName:c}),this.handler({type:"approval.request",sessionId:this.sessionId,requestId:`${Xl}${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;Ms("Claude finished. Run `claude --continue` to continue on desktop."),_.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 tc=require("child_process"),nc=require("fs");var Ns=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();P.info({metrics:n},"periodic metrics snapshot")},e),this.logInterval.unref())}stopPeriodicLog(){this.logInterval&&(clearInterval(this.logInterval),this.logInterval=null)}},w=new Ns;var Ql=require("node:fs"),Os=require("node:path"),Bh="@vibelet/cli";function Dh(t){try{let e=JSON.parse((0,Ql.readFileSync)(t,"utf8"));if(e.name===Bh&&typeof e.version=="string"&&e.version.length>0)return e.version}catch{}return null}function Hh(){return"0.1.9"}var ft=Hh();var x=P.child({module:"codex"});function Fh(t){switch(t.kind){case"request-user-input-approval":return{provider:"codex",kind:t.kind,rpcId:t.rpcId,questionId:t.questionId,approveLabel:t.approveLabel,denyLabel:t.denyLabel};default:return{provider:"codex",kind:t.kind,rpcId:t.rpcId}}}function Uh(t){let e=t.approvalContext;if(!e||e.provider!=="codex")return null;switch(e.kind){case"command-execution":return{kind:e.kind,responseKind:"v2",rpcId:e.rpcId,toolName:t.toolName,input:t.input};case"file-change":return{kind:e.kind,responseKind:"v2",rpcId:e.rpcId,toolName:t.toolName,input:t.input};case"request-user-input-approval":return!e.questionId||!e.approveLabel||!e.denyLabel?null:{kind:e.kind,rpcId:e.rpcId,questionId:e.questionId,approveLabel:e.approveLabel,denyLabel:e.denyLabel,toolName:t.toolName,input:t.input};case"exec-command-legacy":return{kind:e.kind,rpcId:e.rpcId,toolName:t.toolName,input:t.input};case"apply-patch-legacy":return{kind:e.kind,rpcId:e.rpcId,toolName:t.toolName,input:t.input};default:return null}}function $(t){return!t||typeof t!="object"||Array.isArray(t)?null:t}function k(t){return typeof t=="string"&&t.trim().length>0?t.trim():null}var qh=new Set(["aborted","interrupted","cancelled","canceled"]);function jh(t){let e=k(t);return e?e.toLowerCase():null}function Wh(t){let e=k(t);return e?e.replace(/[^a-z0-9]/gi,"").toLowerCase():null}function Bs(t){return t?k(t.itemId)??k(t.id)??k(t.callId)??k(t.call_id):null}function Ds(t,e){let n={};for(let[r,s]of Object.entries(t))e.includes(r)||(n[r]=s);return n}function rc(t){return/\bapprove\b|\ballow\b|\baccept\b|\byes\b|\bcontinue\b|\bproceed\b|\brun\b|\bapply\b/i.test(t)}function sc(t){return/\bdeny\b|\breject\b|\bdecline\b|\bno\b|\bcancel\b|\babort\b|\bstop\b/i.test(t)}function Gh(t){if(!Array.isArray(t))return null;for(let e of t){let n=$(e);if(!n)continue;let r=k(n.id),s=Array.isArray(n.options)?n.options.map(l=>$(l)).filter(l=>!!l):[];if(!r||s.length===0)continue;let i=s.map(l=>k(l.label)).filter(l=>!!l);if(i.length<2)continue;let o=i.find(l=>rc(l))??i[0],a=i.find(l=>sc(l))??i[i.length-1];if(!(!o||!a||o===a))return{questionId:r,approveLabel:o,denyLabel:a}}return null}function $h(t){if(!Array.isArray(t)||t.length===0)return!1;let e=t.map(s=>$(s)).filter(s=>!!s).flatMap(s=>(Array.isArray(s.options)?s.options:[]).map(o=>$(o)).filter(o=>!!o).map(o=>k(o.label)).filter(o=>!!o)),n=e.some(s=>rc(s)),r=e.some(s=>sc(s));return n&&r}function Zl(t){let e=Wh(t.type??t.itemType);if(e==="commandexecution")return{toolName:"Bash",input:Ds(t,["id","itemId","type","itemType","stdout","stderr","exitCode","exit_code","status","success","error"])};if(e==="filechange")return{toolName:"Patch",input:Ds(t,["id","itemId","type","itemType","stdout","stderr","exitCode","exit_code","status","success","error"])};if(e==="mcptoolcall"){let n=k(t.server),r=k(t.tool)??k(t.name);return r?{toolName:n?`mcp__${n}__${r}`:r,input:$(t.arguments)??$(t.input)??{}}:null}return null}function zh(t){if(!Array.isArray(t))return"";for(let e of t){let n=$(e);if(!n)continue;let r=k(n.question)??k(n.header);if(r)return r}return""}function ec(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 Kn=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=v.codexPath,i,o=this.buildSpawnArgs();if(v.isTransientPath(s)){let c=v.execViaLoginShell("codex",o);i=c.command,o=c.args,x.info({spawnCmd:i,argsPreview:o.slice(0,2)},"spawning via login shell")}else i=s,x.info({spawnCmd:i,args:o},"spawning");_.emit("driver.spawn",{agent:"codex",cwd:e,resumeSessionId:n}),this.lastStderr=[],this.proc=(0,tc.spawn)(i,o,{cwd:e||void 0,stdio:["pipe","pipe","pipe"],env:v.buildSanitizedEnv()}),this.proc.on("error",c=>{let u=c.message;c.code==="ENOENT"&&e&&!(0,nc.existsSync)(e)&&(u=`Working directory does not exist: ${e}`),x.error({error:u,cwd:e},"spawn error"),_.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{x.warn({linePreview:d.slice(0,200)},"failed to parse stdout line")}}),this.proc.stderr.on("data",c=>{let u=c.toString().trim();u&&(x.debug({stderr:u},"stderr"),this.lastStderr.push(u),this.lastStderr.length>10&&this.lastStderr.shift())}),this.proc.on("exit",c=>{x.info({threadId:this.threadId,exitCode:c},"process exited"),c&&c!==0&&x.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=w.startTimer("rpc.duration");await this.rpc("initialize",{clientInfo:{name:"@vibelet/cli",version:ft},capabilities:{experimentalApi:!0}}),a(),this.rpcNotify("initialized",{});let l=ec(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,x.info({threadId:this.threadId},"thread resumed"),_.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??"",x.info({threadId:this.threadId},"thread created"),_.emit("driver.init",{agent:"codex",sessionId:this.threadId})}return this.threadId}buildSpawnArgs(){return["app-server","--listen","stdio://"]}sendPrompt(e){let n=ec(this.approvalMode,this.cwd||process.cwd());x.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=>x.debug({resultPreview:JSON.stringify(r).slice(0,200)},"turn/start result")).catch(r=>{x.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 x.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}restorePendingApproval(e){let n=Uh(e);n&&this.approvalRequests.set(e.requestId,n)}interrupt(){this.rpc("turn/interrupt",{threadId:this.threadId}).catch(()=>{})}setApprovalMode(e){this.approvalMode=e,x.info({approvalMode:e},"approval mode updated (takes effect on subsequent turns)")}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=w.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
89
  `),setTimeout(()=>{this.pending.has(r)&&(this.pending.delete(r),x.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=ee(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){x.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,approvalContext:Oh(n)})}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(!Fh(o)){x.warn({threadId:this.threadId,rpcId:n},"unsupported requestUserInput request"),this.writeServerRequestError(n,"Unsupported interactive request from Codex");return}let a=Hh(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"])},Uh(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"){x.warn({threadId:this.threadId,rpcId:n},"unsupported permissions approval request"),this.writeServerRequestError(n,"Unsupported permissions approval request");return}x.warn({threadId:this.threadId,rpcId:n,method:e},"unsupported server request"),this.writeServerRequestError(n,`Unsupported server request: ${e}`)}handleRaw(e){if(x.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=ee(e.params);if(n&&e.id!=null){this.handleServerRequest(n,e.id,r??void 0);return}switch(n&&x.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||x.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=ee(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=ee(r?.item)??r,i=Ms(s);i&&this.toolContextByCallId.delete(i);break}case"turn/completed":{let s=ee(r?.usage),i=s?{inputTokens:Number(s.input_tokens??s.inputTokens??0),outputTokens:Number(s.output_tokens??s.outputTokens??0)}:void 0;x.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&&x.debug({method:n},"unhandled notification");break}}};var B=require("fs/promises"),Gs=require("fs"),$s=require("readline"),E=require("path"),me=require("os");var qh=new Set(["New session","Resumed session","Untitled session"]),Wh=["<environment_context>","<local-command-caveat>","<local-command-stdout>","<local-command-stderr>","<command-name>","<command-message>","<command-args>","# AGENTS.md instructions for "];function jh(t){return t.replace(/\s+/g," ").trim()}function Kn(t){return typeof t!="string"?void 0:jh(t)||void 0}function tc(t){let e=Kn(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 pt(t){let e=Kn(t);return!e||qh.has(e)||tc(e)}function Gh(t){for(let e of t.replace(/\r/g,"").split(`
92
- `)){let n=Kn(e);if(n&&!$h(n)&&!zh(n))return n}}function $h(t){return Wh.some(e=>t.startsWith(e))}function zh(t){let e=t.replace(/^['"`]+/,"").replace(/['"`\\]+$/,"").trim();return!!(!e||/^(\/|~\/|\.\/|\.\.\/)/.test(e)||/^[A-Za-z]:\\/.test(e))}function Vh(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=Gh(t);if(!n)return;let r=Vh(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 je(t,e){for(let n of t){let r=Kn(n);if(!(!r||pt(r)))return r}return Os(e)}var rc=require("child_process"),ht=require("fs/promises"),Ee=require("path"),Bs=require("os"),sc=require("util");var Yh=(0,sc.promisify)(rc.execFile),Jh=15e3,tn=null;function Zn(){tn=null}function Kh(t){return t.replace(/^['"]|['"]$/g,"")}function Xh(t){return(t.match(/"[^"]*"|'[^']*'|\S+/g)??[]).map(Kh)}function Ds(t){let e=Xh(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 Zh(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 Xn(t){switch(t){case"high":return 3;case"medium":return 2;default:return 1}}function Qh(t,e){return t==="claude"?e.includes("/.claude/projects/")&&!e.includes("/subagents/"):e.includes("/.codex/sessions/")}function eg(t,e){let n=Ds(e);return!n||n.agent!==t?!1:n.args.includes("--continue")||n.args.includes("-c")}function tg(t){let e=Zh(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=>Qh(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 ng(t,e){let n=t,r=e;return(Xn(e.confidence)>Xn(t.confidence)||Xn(e.confidence)===Xn(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 rg(t){let e=new Map;for(let n of t){let r=`${n.agent}:${n.sessionId}`,s=e.get(r);e.set(r,s?ng(s,n):n)}return[...e.values()]}async function Hs(t,e){try{let{stdout:n}=await Yh(t,e,{maxBuffer:8388608});return n}catch{return""}}async function nc(t){if(!t.sessionFilePath)return t;let e=await nn(t.sessionFilePath,t.agent);return e?{...t,cwd:t.cwd||e.cwd,title:t.title??e.title}:null}async function sg(t){return(await Hs("lsof",["-a","-p",String(t),"-d","cwd","-Fn"])).split(`
93
- `).find(r=>r.startsWith("n"))?.slice(1).trim()??""}async function ig(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 og(){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 ag(){let t=await og();return Promise.all(t.map(async e=>({pid:e.pid,agent:e.agent,command:e.command,cwd:await sg(e.pid),sessionFiles:await ig(e.pid)})))}function lg(t){return t.replace(/[^a-zA-Z0-9]/g,"-")}async function cg(t,e){if(!e)return null;try{if(t==="claude"){let o=(0,Ee.join)((0,Bs.homedir)(),".claude","projects",lg(e)),l=(await(0,ht.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 p=await(0,ht.stat)((0,Ee.join)(o,f)).catch(()=>null);p&&(!c||p.mtimeMs>c.mtimeMs)&&(c={name:f,mtimeMs:p.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,ht.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,ht.stat)(c).catch(()=>null);if(!u||r&&u.mtimeMs<=r.mtimeMs)continue;let d=await nn(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(tn&&Date.now()<tn.expiresAt)return tn.value;let t=await ag(),e=await Promise.all(t.map(async r=>{let s=tg(r);if(s)return nc(s);if(eg(r.agent,r.command))return null;let i=await cg(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=rg(e.filter(r=>r!==null));return tn={value:n,expiresAt:Date.now()+Jh},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 ug(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 dg(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 fg(t,e){return t?e?t.localeCompare(e)<=0?t:e:t:e}function pg(t,e){return t?e?t.localeCompare(e)>=0?t:e:t:e}function hg(t,e){return e?t?!(pt(e)&&!pt(t)):!0:!1}function Fs(t="high",e="resumeSession"){return{state:"idle",confidence:t,resumeMode:e}}function gg(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 mg(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 yg(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 Sg(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=hg(s.title,n.title)?n.title:s.title,o=n.cwd||s.cwd,a=dg(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:pg(s.lastActivityAt,n.lastActivityAt);t.set(r,{...s,cwd:o,title:i,createdAt:fg(s.createdAt,n.createdAt),lastActivityAt:d,sources:l,runtime:a,managed:s.managed||n.managed,approvalMode:n.approvalMode??s.approvalMode})}}function vg(...t){let e=new Map;for(let n of t)Sg(e,n);return[...e.values()]}function _g(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 wg(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 bg(t,e,n,r,s,i,o){let a=i?1/0:Math.max(1,e||50),l=vg(t.sessionRecords.map(gg),t.scannedSessions,t.runningSessions.map(S=>mg(S,t.scannedAt)),t.activeSessions.map(yg)),c=t.deletedSessionIds?.size?l.filter(S=>!t.deletedSessionIds?.has(S.sessionId)):l,u=_g(c,r,s,i,o),d=u.filter(S=>S.runtime.state!=="idle"||S.managed).sort(ug),f=u.filter(S=>S.runtime.state==="idle"&&!S.managed).sort(lc),p=wg(f,n),h=f.slice(p,p+a),m=p+h.length<f.length&&h.length>0?{lastActivityAt:h[h.length-1].lastActivityAt,sessionId:h[h.length-1].sessionId}:void 0;return{sessions:n?h:[...d,...h],nextCursor:m}}async function Qn(t){let e=new Date().toISOString(),[n,r,s]=await Promise.all([rn(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"),bg({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 Ce=L.child({module:"scanner"});function hc(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=hc(gc),Ws=hc(gc),er=8;function nr(){qs.clear(),Ws.clear()}function js(t){return t.replace(/[^a-zA-Z0-9]/g,"-")}async function tr(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 Ig=["<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 Ag(t,e){if(t?.isMeta===!0)return!0;let n=e.trim();return n?Ig.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 Ag(t,e)?"":e}function vc(t){let e=t.trim();return e.startsWith("# AGENTS.md instructions for ")||e.startsWith("<environment_context>")}function _c(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,E.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 kg(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=je([u.customTitle,u.summary])),!l){let d=Ys(u),f=je([],d);f&&(a=d,l=f)}if(s&&(o||l))break}return s?{sessionId:i||gt("claude",t)||(0,E.basename)(t,".jsonl"),cwd:s,title:o??l??je([],a)}:null}async function xg(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=je([u.payload?.title,u.title])),!l){let d=Sc(u),f=d&&!vc(d)?je([],d):void 0;f&&(a=d,l=f)}if(s&&(o||l))break}return s?{sessionId:i||gt("codex",t)||(0,E.basename)(t,".jsonl"),cwd:s,title:o??l??je([],a)}:null}async function nn(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 kg(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 xg(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,E.join)((0,me.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,E.join)(e,o),l=await(0,B.readdir)(a).catch(()=>[]);for(let c of l)c.endsWith(".jsonl")&&r.push((0,E.join)(a,c))}return(await tr(r,er,o=>nn(o,"claude"))).filter(o=>o!==null).map(o=>_c(o)).sort((o,a)=>a.lastActivityAt.localeCompare(o.lastActivityAt))}catch(n){return Ce.warn({error:String(n)},"failed to list claude sessions"),[]}}async function dc(t){let e=(0,E.join)((0,me.homedir)(),".codex","sessions");try{let n=await(0,B.readdir)(e).catch(()=>[]),r=[];for(let o of n){let a=(0,E.join)(e,o),l=await(0,B.readdir)(a).catch(()=>[]);for(let c of l){let u=(0,E.join)(a,c),d=await(0,B.readdir)(u).catch(()=>[]);for(let f of d){let p=(0,E.join)(u,f),h=await(0,B.readdir)(p).catch(()=>[]);for(let g of h)g.endsWith(".jsonl")&&r.push((0,E.join)(p,g))}}}return(await tr(r,er,o=>nn(o,"codex"))).filter(o=>o!==null).filter(o=>!t||o.cwd===t).map(o=>_c(o)).sort((o,a)=>a.lastActivityAt.localeCompare(o.lastActivityAt))}catch(n){return Ce.warn({error:String(n)},"failed to list codex sessions"),[]}}async function rn(t,e){let r=`list:${(0,me.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,me.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,E.join)((0,me.homedir)(),".claude","projects");try{let u=await(0,B.readdir)(c,{withFileTypes:!0}),d=[];for(let p of u){if(!p.isDirectory())continue;let h=(0,E.join)(c,p.name),g=await(0,B.readdir)(h).catch(()=>[]);for(let m of g)m.endsWith(".jsonl")&&d.push((0,E.join)(h,m))}let f=await tr(d,er,p=>fc(p,o,"claude"));for(let p of f)p&&i.add(p)}catch(u){Ce.warn({error:String(u)},"failed to search claude files")}}async function l(){let c=(0,E.join)((0,me.homedir)(),".codex","sessions");try{let u=[];async function d(p){let h=await(0,B.readdir)(p,{withFileTypes:!0}).catch(()=>[]);for(let g of h){let m=(0,E.join)(p,g.name);g.isDirectory()?await d(m):g.name.endsWith(".jsonl")&&u.push(m)}}await d(c);let f=await tr(u,er,p=>fc(p,o,"codex"));for(let p of f)p&&i.add(p)}catch(u){Ce.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"?Tg:Eg,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 Tg(t){return t?.type==="user"&&t.message?.role==="user"?Ys(t):t?.type==="assistant"&&t.message?.role==="assistant"?Vs(t.message.content):""}function Eg(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 pc(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 sn(t,e,n){let r=[];if(e==="claude"){let s=(0,E.join)((0,me.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,E.join)(s,l,`${t}.jsonl`);try{if(await pc(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"&&Ce.warn({error:String(u)},"failed to read claude session file")}}}catch(i){Ce.warn({error:String(i)},"failed to read claude session history")}}else if(e==="codex"){let s=(0,E.join)((0,me.homedir)(),".codex","sessions");try{let i=await wc(s,t);i&&await pc(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"&&vc(l)||r.push({role:a,content:l}))})}catch(i){Ce.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,E.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){Ce.warn({error:String(n)},"failed to walk codex sessions dir")}return null}var yt=require("fs"),Ac=require("path");var Cg=500,bc=200;function Pg(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 Rg(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 Lg(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n=typeof e.requestId=="string"?e.requestId:"",r=typeof e.toolName=="string"?e.toolName:"",s=typeof e.description=="string"?e.description:"",i=e.input&&typeof e.input=="object"&&!Array.isArray(e.input)?e.input:{};if(!n||!r||!s)return;let o=e.approvalContext;return o&&typeof o=="object"&&!Array.isArray(o)&&o.provider==="codex"&&typeof o.kind=="string"&&typeof o.rpcId=="number"?{requestId:n,toolName:r,input:i,description:s,approvalContext:{provider:"codex",kind:o.kind,rpcId:o.rpcId,...typeof o.questionId=="string"?{questionId:o.questionId}:{},...typeof o.approveLabel=="string"?{approveLabel:o.approveLabel}:{},...typeof o.denyLabel=="string"?{denyLabel:o.denyLabel}:{}}}:{requestId:n,toolName:r,input:i,description:s}}function Ic(t){return{...t,lastActivityAt:t.lastActivityAt??t.createdAt,acceptedClientMessageIds:Pg(t.acceptedClientMessageIds),pendingApproval:Lg(t.pendingApproval)}}function Mg(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:Rg(e.deletedSessionIds)}}return{records:[],deletedSessionIds:[]}}var rr=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()},Cg)}loadFromDisk(){try{let e=(0,yt.readFileSync)(Fn,"utf-8");return Mg(JSON.parse(e))}catch{}return{records:[],deletedSessionIds:[]}}saveToDisk(){(0,yt.mkdirSync)((0,Ac.dirname)(Fn),{recursive:!0}),(0,yt.writeFileSync)(Fn,JSON.stringify({records:this.records,deletedSessionIds:[...this.deletedSessionIds]},null,2))}};var kc=require("path"),xc=require("os");function sr(t){return t=t.replace(/^~/,"~"),t.startsWith("~/")||t==="~"?(0,kc.join)((0,xc.homedir)(),t.slice(2)):t}var St=require("fs"),Tc=require("path");function Ng(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 Og(t){try{let e=(0,St.readFileSync)(t,"utf8"),n=JSON.parse(e);return Array.isArray(n)?n.filter(Ng):[]}catch{return[]}}function on(t,e){(0,St.mkdirSync)((0,Tc.dirname)(t),{recursive:!0}),(0,St.writeFileSync)(t,JSON.stringify(e,null,2)+`
97
- `,"utf8")}var ir=class{constructor(e=kl){this.pushSubscriptionsPath=e;this.records=Og(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)],on(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,on(this.pushSubscriptionsPath,this.records),!0)}unregisterToken(e){let n=this.records.filter(r=>r.pushToken!==e);return n.length===this.records.length?!1:(this.records=n,on(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&&on(this.pushSubscriptionsPath,this.records)}reset(){this.records=[],on(this.pushSubscriptionsPath,this.records)}};var $=L.child({module:"push"}),Bg="https://exp.host/--/api/v2/push/send",Dg="https://exp.host/--/api/v2/push/getReceipts",Hg=[0,1e3,3e3],an=new ir;function Fg(t){return new Promise(e=>{setTimeout(e,t)})}function Ec(t){return t==="DeviceNotRegistered"}function Ug(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 qg(t,e){let n=new Map;if(!Array.isArray(t.data))return n;for(let[r,s]of t.data.entries()){let i=e[r];!i||!s||s.status!=="ok"||typeof s.id!="string"||s.id.length===0||n.set(s.id,i)}return n}function Wg(t,e){let n=[],r=[],s=t.data;for(let[i,o]of e.entries()){let a=s?.[i];if(!a||typeof a!="object"){n.push(i);continue}a.status==="error"&&r.push({token:o,receipt:a})}return{pendingTicketIds:n,receiptErrors:r}}async function jg(t,e,n,r){let s=new Map(t);for(let i of Hg){if(s.size===0)return;i>0&&await n(i);let o;try{o=await e(Dg,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:[...s.keys()]})})}catch(u){$.error({error:String(u),count:s.size},"push receipt request failed");return}if(!o.ok){$.error({status:o.status,statusText:o.statusText,count:s.size},"push receipt request returned error status");return}let a=await o.json().catch(()=>null);if(!a){$.error({count:s.size},"push receipt response was unreadable");return}let{pendingTicketIds:l,receiptErrors:c}=Wg(a,s);for(let{token:u,receipt:d}of c){let f=d.details?.error;if($.error({token:u,message:d.message,details:d.details,receiptStatus:d.status},"push receipt rejected"),Ec(f)){let p=r.unregisterToken(u);$.info({token:u,errorCode:f,removed:p},"push token removed after receipt rejection")}}s=new Map(l.map(u=>[u,s.get(u)]))}s.size>0&&$.warn({pendingReceipts:s.size},"push receipts still pending after polling")}function Gg(t){let e=t?.pushStore??an,n=t?.fetchImpl??globalThis.fetch,r=t?.sleepImpl??Fg;return async function(i,o,a){let l=e.listTokens();if(l.length===0)return;let c=l.map(u=>({to:u,sound:"default",title:i,body:o,data:a}));try{let u=await n(Bg,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});if(!u.ok){$.error({status:u.status,statusText:u.statusText},"push send failed");return}let d=await u.json().catch(()=>null);if(!d){$.error({count:c.length},"push send returned unreadable response");return}let{successfulTokens:f,ticketErrors:p}=Ug(d,l),h=qg(d,l);for(let{token:g,ticket:m}of p){let S=m.details?.error;if($.error({token:g,message:m.message,details:m.details,ticketStatus:m.status},"push ticket rejected"),Ec(S)){let U=e.unregisterToken(g);$.info({token:g,errorCode:S,removed:U},"push token removed after ticket rejection")}}f.length>0&&($.debug({count:f.length},"push sent"),e.markSent(f)),h.size>0&&await jg(h,n,r,e)}catch(u){$.error({error:String(u)},"push send error")}}}function Js(t,e){an.register(t,e),$.info({deviceId:t,token:e,total:an.count()},"push token registered")}function Ks(t,e){let n=an.unregister(t,e);$.info({deviceId:t,token:e,total:an.count(),removed:n},"push token unregistered")}var Cc=Gg();var _=L.child({module:"manager"}),$g="Done.",zg="Approval required",Pc=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 ce(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,approvalMode:t.approvalMode,acceptedClientMessageIds:or(t.acceptedClientMessageIds),pendingApproval:t.agent==="codex"?t.pendingApproval:void 0,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,managed:t.managed}}function Rc(t){let e=t.pendingApproval?.requestId;return typeof e=="string"&&Yn(e)}function Lc(t,e,n){return{sessionId:t,agent:e,...n}}function Vg(t){return t.startsWith(Cs)}function Mc(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=Cc){this.pushSender=e;this.startIdleSweep()}sessions=new Map;claudeHookSessions=new Map;store=new rr;idleSweepInterval=null;startIdleSweep(){v.idleTimeoutMs<=0&&v.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=v.idleTimeoutMs,r=v.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&&(_.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;_.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}o.pendingApproval||n<=0||a<n||(_.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=>{if(_.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"||!Rc(e))&&(e.pendingApproval=void 0)),i.type==="approval.request"){if(n==="codex"&&e.approvalMode==="autoApprove"){if(e.driver?.respondApproval(i.requestId,!0)??!1){w.emit("approval.response",{sessionId:e.sessionId,requestId:i.requestId,approved:!0}),e.pendingApproval=void 0,e.isResponding=!0,this.touchSession(e.sessionId);return}_.warn({sessionId:e.sessionId,requestId:i.requestId},"failed to auto-approve codex request; falling back to pending approval flow")}e.isResponding=!1,e.pendingApproval={requestId:i.requestId,toolName:i.toolName,input:i.input,description:i.description,...i.approvalContext?{approvalContext:i.approvalContext}:{}},this.pushSender(zg,this.buildPushBody(`${e.title||e.sessionId}: ${i.description||i.toolName}`),{sessionId:e.sessionId,agent:e.agent,requestId:i.requestId})}n==="claude"&&i.type==="approval.request"&&Yn(i.requestId)&&(e.lastUserMessage?e.syntheticApprovalRetries[i.requestId]={message:e.lastUserMessage,toolName:i.toolName}:_.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=>{_.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=!!(e.pendingApproval&&(e.agent==="codex"||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)})}remapSessionId(e,n,r){if(!n||n===e.sessionId)return;let s=this.sessions.get(n);if(s&&s!==e){_.warn({oldSessionId:e.sessionId,newSessionId:n},"skipping session ID remap because target already exists");return}let i=e.sessionId;_.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(ce(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){_.info({pendingSessionId:s,actualSessionId:a},"discarding stale codex startup result");return}e.startupInProgress=!1,_.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){_.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),_.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 en))return;let s=r??(0,Xs.randomUUID)().replace(/-/g,"");return n.configureHookBridge(v.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=Qt){for(let r of e.pendingClaudeHookApprovals.values())r.resolve(n);e.pendingClaudeHookApprovals.clear(),e.pendingApproval&&Vg(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):(_.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 _.warn({secretPresent:!!e},"received Claude permission hook for unknown or inactive session"),Qt;if(r.approvalMode==="autoApprove")return Mc(!0);let i=(typeof n.tool_name=="string"?n.tool_name:typeof n.toolName=="string"?n.toolName:"").trim();if(!i)return Qt;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,p=new Promise(h=>{f=h});return r.pendingClaudeHookApprovals.set(c,{requestId:c,promise:p,resolve:h=>{r.pendingClaudeHookApprovals.delete(c),f(h)}}),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}),p}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?.pendingApproval,c=r?.title??"",u=r?.createdAt??s,d=r?.lastActivityAt??s,f=or(r?.acceptedClientMessageIds),p=r?"memory":"client",h=this.store.find(e);if(h)i=h.agent,o=h.cwd||o,a=h.approvalMode??a,l=h.pendingApproval??l,c=h.title||c,u=h.createdAt||u,d=h.lastActivityAt||d,f=or(h.acceptedClientMessageIds,f),p="record";else if(!r){let m=(await rn(n??i)).find(S=>S.sessionId===e);m&&(i=m.agent,o=m.cwd||o,c=m.title??c,u=m.createdAt,d=m.lastActivityAt,p="scanner")}if(!i&&n&&(i=n,p=r?"memory":"client"),!!i)return{agent:i,cwd:o,approvalMode:a,pendingApproval:l,title:c,createdAt:u,lastActivityAt:d,acceptedClientMessageIds:f,source:p,managed:r?.managed??h?.managed}}collectReconnectPendingApprovals(){let e=[],n=new Set;for(let r of this.sessions.values()){if(!r.pendingApproval)continue;let s=`${r.agent}:${r.sessionId}:${r.pendingApproval.requestId}`;n.has(s)||(n.add(s),e.push(Lc(r.sessionId,r.agent,r.pendingApproval)))}for(let r of this.store.getAll()){if(!r.pendingApproval)continue;let s=`${r.agent}:${r.sessionId}:${r.pendingApproval.requestId}`;n.has(s)||(n.add(s),e.push(Lc(r.sessionId,r.agent,r.pendingApproval)))}return e}restoreDriverPendingApproval(e,n){n&&e.restorePendingApproval?.(n)}async reviveSessionForApproval(e){if(e.driver)return!0;if(!e.pendingApproval||e.agent!=="codex")return!1;let n=this.createDriver(e.agent),r=this.configureDriverBeforeStart(e.agent,n,e.claudeHookSecret);return await n.start(e.cwd,e.sessionId,e.approvalMode),this.restoreDriverPendingApproval(n,e.pendingApproval),e.driver=n,e.active=!0,e.isResponding=!1,e.currentReplyText="",e.startupInProgress=!1,e.bufferedPrompts=e.bufferedPrompts??[],e.startupToken=e.startupToken??0,e.claudeHookSecret=r??e.claudeHookSecret,e.pendingClaudeHookApprovals=e.pendingClaudeHookApprovals??new Map,this.registerClaudeHookSession(e),this.bindDriverLifecycle(e,e.agent," (approval resumed)"),this.store.upsert(ce(e)),this.updateGauges(),this.touchSession(e.sessionId),!0}buildPushBody(e){let n=e.replace(/\s+/g," ").trim();return n?n.length<=Pc?n:`${n.slice(0,Math.max(1,Pc-3)).trimEnd()}...`:$g}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(ce(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 rn(e,n)}async handle(e,n){switch(_.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){_.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(){Qn({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=sr(s),_.info({agent:r,cwd:s,approvalMode:i,continueSession:o},"creating session");try{if(!(await(0,Nc.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 _.info({sessionId:l.sessionId,cwd:s},"continue mode: resuming last session"),this.resumeSession(e,n,l.sessionId,r,s,i);_.info("continue mode: no previous sessions found, creating new")}catch(a){_.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 p=`pending_${Date.now()}`;_.info({sessionId:p,agent:r,cwd:s},"session created (pending codex startup)"),b.increment("session.create",{agent:r}),w.emit("session.create",{sessionId:p,agent:r,cwd:s,approvalMode:i});let h={sessionId:p,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(p,h),this.registerClaudeHookSession(h),this.store.upsert(ce(h)),this.updateGauges(),nr(),Zn(),this.bindDriverLifecycle(h,r,"",e),this.reply(e,n,!0,{sessionId:p}),this.startPendingCodexSession(h,e);return}let c=b.startTimer("driver.spawn"),u=await a.start(s,void 0,i),d=c();_.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(ce(f)),this.updateGauges(),nr(),Zn(),this.bindDriverLifecycle(f,r,"",e),this.reply(e,n,!0,{sessionId:u})}catch(a){_.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 sn(r,s,a.cwd),p=this.currentPartialReplyText(a);if(f.length>0||p||a.approvalMode||a.pendingApproval){let h={type:"session.history",sessionId:r,messages:f,isResponding:a.isResponding||void 0,partialReplyText:p,approvalMode:a.approvalMode,pendingApproval:a.pendingApproval};e.readyState===1&&e.send(JSON.stringify(h))}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"),p=this.createDriver(s),h=this.configureDriverBeforeStart(s,p),g=await p.start(c,r,u),m=f();_.info({sessionId:g,agent:s,spawnMs:m},"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:p,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,pendingApproval:l?.pendingApproval,claudeHookSecret:h,pendingClaudeHookApprovals:new Map};this.sessions.set(g,S),this.registerClaudeHookSession(S),this.store.upsert(ce(S)),this.updateGauges(),this.bindDriverLifecycle(S,s," (resumed)",e),this.restoreDriverPendingApproval(p,S.pendingApproval);let U=await sn(r,s,c);if(U.length>0||S.pendingApproval){_.info({sessionId:r,historyCount:U.length},"sending history messages");let se={type:"session.history",sessionId:g,messages:U,approvalMode:u,pendingApproval:S.pendingApproval};e.readyState===1&&e.send(JSON.stringify(se))}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){_.warn({sessionId:r},"session not found in records or scanner"),this.reply(e,n,!1,void 0,"Session not found");return}_.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),this.restoreDriverPendingApproval(c,l.pendingApproval),a?(a.approvalMode=l.approvalMode,a.pendingApproval=l.pendingApproval,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,pendingApproval:l.pendingApproval,claudeHookSecret:u,pendingClaudeHookApprovals:new Map},this.sessions.set(r,a)),this.registerClaudeHookSession(a),this.bindDriverLifecycle(a,l.agent," (reconnected)"),this.store.upsert(ce(a)),this.updateGauges()}catch(c){this.reply(e,n,!1,void 0,`Failed to reconnect: ${c}`);return}}if(a.clients.add(e),a.pendingApproval){this.reply(e,n,!1,void 0,"Resolve the pending approval before sending another message.");return}if(o&&this.hasAcceptedClientMessage(a,o)){this.reply(e,n,!0,{sessionId:r,clientMessageId:o,duplicate:!0});return}if(_.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)}),pt(a.title)){let l=Os(s,50);l&&l!==a.title&&(a.title=l),this.store.upsert(ce(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 Qn({agent:r,cwd:s,search:i,limit:50,activeSessions:this.activeSessionSnapshots(),sessionRecords:this.store.getAll(),deletedSessionIds:l})}catch(f){_.warn({error:String(f)},"failed to build reconnect snapshot session list"),c={sessions:[],nextCursor:void 0}}let u;if(o&&!l.has(o)){let f=a??c.sessions.find(g=>g.sessionId===o)?.agent,p=this.sessions.get(o),h=await this.resolveReconnectSession(o,f,p);if(h){let g=await sn(o,h.agent,p?.cwd??h.cwd);u={sessionId:o,agent:h.agent,messages:g,isResponding:p?.isResponding||void 0,partialReplyText:this.currentPartialReplyText(p),approvalMode:p?.approvalMode??h.approvalMode,...p?.pendingApproval?{pendingApproval:p.pendingApproval}:{}}}}let d=this.collectReconnectPendingApprovals();b.increment("reconnect.snapshot",{activeSession:u?"true":"false"}),this.reply(e,n,!0,{snapshot:{sessions:c.sessions,nextCursor:c.nextCursor,...u?{activeSession:u}:{},...d.length>0?{pendingApprovals:d}:{}}})}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?.pendingApproval,l=o?.pendingClaudeHookApprovals.get(s);if(o&&l){o.pendingApproval=void 0,w.emit("approval.response",{sessionId:r,requestId:s,approved:i}),this.touchSession(o.sessionId),l.resolve(Mc(i)),o.isResponding=!0,this.reply(e,n,!0);return}let c=o?.syntheticApprovalRetries[s];if(o&&c&&Yn(s)){delete o.syntheticApprovalRetries[s],o.pendingApproval=void 0,w.emit("approval.response",{sessionId:r,requestId:s,approved:i}),this.touchSession(o.sessionId),this.reply(e,n,!0),i&&await this.retrySyntheticClaudeApproval(o,c);return}if(o&&!o.driver&&a)try{await this.reviveSessionForApproval(o)}catch(d){this.reply(e,n,!1,void 0,`Failed to restore approval session: ${String(d)}`);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}),!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.pendingApproval=void 0,this.touchSession(o.sessionId),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(ce(e)),this.updateGauges(),this.touchSession(e.sessionId),_.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),_.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),_.info({sessionId:r,agent:a.agent,newMode:s},"approval mode changed (inactive session)")):_.info({sessionId:r,newMode:s},"approval mode changed (untracked session)"),this.reply(e,n,!0,{approvalMode:s});return}let o=i.approvalMode;i.approvalMode=s,this.store.upsert(ce(i)),_.info({sessionId:r,agent:i.agent,oldMode:o,newMode:s},"approval mode changed"),i.driver&&i.driver.setApprovalMode(s),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}_.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.pendingApproval=void 0,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&&(_.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(),nr(),Zn(),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=this.store.find(r),l=await sn(r,s,o);_.info({sessionId:r,historyCount:l.length,isResponding:i?.isResponding,approvalMode:i?.approvalMode},"sending history");let c={type:"session.history",sessionId:r,messages:l,isResponding:i?.isResponding||void 0,partialReplyText:this.currentPartialReplyText(i),approvalMode:i?.approvalMode??a?.approvalMode,pendingApproval:i?.pendingApproval??a?.pendingApproval};e.readyState===1&&e.send(JSON.stringify(c)),this.reply(e,n,!0)}async listSessions(e,n,r,s,i,o=50,a){try{let l=await Qn({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 en;case"codex":return new Jn;default:throw new Error(`Unknown agent: ${e}`)}}broadcast(e,n){let r=this.sessions.get(e);if(!r){_.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"&&_.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 Oc=require("child_process");function Yg(t,e){return(0,Oc.execFileSync)(t,e,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}function Jg(t){let e=t.split(`
98
- `).map(n=>Number(n.trim())).filter(n=>Number.isFinite(n)&&n>0);return[...new Set(e)]}function Bc(t,e=Yg){let n;try{n=Jg(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"),Hc=require("crypto"),Fc=require("path");function Uc(t){return(0,Hc.randomBytes)(t).toString("base64url")}function Kg(){return`d_${Uc(12)}`}function Xg(){return(0,Qs.hostname)()}function Zg(){let t=(0,Qs.hostname)().trim().toLowerCase();return t?t.endsWith(".local")?t:`${t}.local`:"localhost"}function Qg(t){return{daemonId:Kg(),daemonSecret:Uc(32),displayName:Xg(),canonicalHost:Zg(),port:t,createdAt:new Date().toISOString()}}function Dc(t,e){(0,vt.mkdirSync)((0,Fc.dirname)(e),{recursive:!0}),(0,vt.writeFileSync)(e,JSON.stringify(t,null,2)+`
99
- `,"utf8")}function qc(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,Dc(i,e)),i}}catch{}let n=Qg(t);return Dc(n,e),n}var _t=require("crypto"),wt=require("fs"),jc=require("path");function ei(t){return(0,_t.randomBytes)(t).toString("base64url")}function ti(t){return(0,_t.createHash)("sha256").update(t).digest("hex")}function Wc(t,e){let n=Buffer.from(t),r=Buffer.from(e);return n.length!==r.length?!1:(0,_t.timingSafeEqual)(n,r)}function em(t){try{let e=(0,wt.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 ln(t,e){(0,wt.mkdirSync)((0,jc.dirname)(t),{recursive:!0}),(0,wt.writeFileSync)(t,JSON.stringify(e,null,2)+`
100
- `,"utf8")}var cr=class{constructor(e=Al){this.pairingsPath=e;this.records=em(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),ln(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 Wc(s.tokenHash,i)?(r&&(s.lastSeenAt=new Date().toISOString(),ln(this.pairingsPath,this.records)),!0):!1}validateAnyPairToken(e,n=!0){let r=ti(e),s=this.records.find(i=>!i.revokedAt&&Wc(i.tokenHash,r));return s?(n&&(s.lastSeenAt=new Date().toISOString(),ln(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(),ln(this.pairingsPath,this.records),!0):!1}reset(){this.records=[],this.windows.clear(),ln(this.pairingsPath,this.records)}};function bt(t){return t?t==="127.0.0.1"||t==="::1"||t==="::ffff:127.0.0.1":!1}function tm(t){return t&&t.match(/^Bearer\s+(.+)$/i)?.[1]?.trim()||null}function Gc(t,e){return tm(t)??e}function ni(t,e){return!!(t&&e&&t===e)}function $c(t,e,n,r=!0){return t?ni(t,e)?!0:!!n(t,r):!1}var Vc=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 Yc(t){if(!ri(t))return!1;let[e,n]=t.split(".").map(Number);return e===100&&n>=64&&n<=127}function nm(t){if(!ri(t))return!1;let[e,n]=t.split(".").map(Number);return e===169&&n===254}function rm(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&&!nm(t)&&!rm(t)}function It(t){if(!t)return;let e=t.trim().replace(/\.$/,"");return e?e.toLowerCase():void 0}function Jc(t){return t?t.split(",").map(e=>e.trim()).filter(Boolean):[]}function sm(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)&&(Yc(s.address)?e.push(s.address):n.push(s.address));return[...e,...n]}function zc(t){let e=JSON.parse(t),n=It(e.Self?.DNSName),r=(e.Self?.TailscaleIPs??[]).map(o=>It(o)).filter(o=>!!o).filter(o=>Yc(o)&&si(o)),s=r[0]??n,i=[...n&&n!==s?[n]:[],...r.filter(o=>o!==s)];return{canonicalHost:s,fallbackHosts:i}}function Kc(t=Vc.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 zc(r)}catch{}try{let n=t("tailscale",["status","--json"],{encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:1500});return zc(n)}catch{return{fallbackHosts:[]}}}function Xc(t){let e=It(t.canonicalHost),n=It(t.configuredCanonicalHost)||It(t.tailscaleCanonicalHost)||e||"localhost",r=[...e&&e!==n?[e]:[],...t.configuredFallbackHosts??[],...t.tailscaleFallbackHosts??[],...sm(t.interfaces)].map(s=>It(s)).filter(s=>!!s).filter(s=>si(s)).filter((s,i,o)=>s!==n&&o.indexOf(s)===i);return{canonicalHost:n,fallbackHosts:r}}function Zc(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 j=L.child({module:"daemon"}),cn=L.child({module:"ws"}),ue=new lr,F=qc(v.port),Re=new cr,ur=new Set,Pe=new WeakMap,Qc=!1,ru=Date.now(),At=null;function kt(){let t=Kc();return Xc({canonicalHost:F.canonicalHost,configuredCanonicalHost:v.canonicalHost,configuredFallbackHosts:Jc(v.fallbackHosts),tailscaleCanonicalHost:t.canonicalHost,tailscaleFallbackHosts:t.fallbackHosts,interfaces:(0,tu.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 su(){let t=Re.openWindow(),e=kt(),n=e.canonicalHost,r=F.port,s=e.fallbackHosts.length>0?e.fallbackHosts:void 0;if(v.relayUrl)try{let i=new URL(v.relayUrl);n=i.hostname,r=i.port?Number(i.port):i.protocol==="https:"?443:80,s=[e.canonicalHost,...s??[]].filter(Boolean)}catch{j.warn({relayUrl:v.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 im(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 un=(0,eu.createServer)(async(t,e)=>{let n=new URL(t.url??"/",`http://localhost:${v.port}`);if(n.pathname==="/health"){let s=kt(),i={status:"ok",version:ft,daemonId:F.daemonId,displayName:F.displayName,canonicalHost:s.canonicalHost,uptimeSeconds:Math.round((Date.now()-ru)/1e3),activeSessions:ue.getActiveSessionCount(),pairedDevices:Re.pairedCount(),wsClients:re.clients.size,drivers:ue.getDriverCounts(),metrics:b.snapshot()};v.relayUrl&&(i.relayUrl=v.relayUrl),D(e,200,i);return}if(t.method==="POST"&&n.pathname==="/pair/open"){if(!bt(t.socket.remoteAddress)){D(e,403,{error:"forbidden"});return}D(e,200,su());return}if(t.method==="POST"&&n.pathname==="/pair/reset"){if(!bt(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(!bt(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(!bt(t.socket.remoteAddress)){D(e,403,{error:"forbidden"});return}try{let s=await ii(t),i=t.headers[Zt],o=Array.isArray(i)?i[0]:i;ue.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(!bt(t.socket.remoteAddress)){D(e,403,{error:"forbidden"});return}try{let s=await ii(t),i=t.headers[Zt],o=Array.isArray(i)?i[0]:i,a=await ue.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=kt();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=Gc(t.headers.authorization,n.searchParams.get("token"));if(!$c(r,v.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=sr(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}`)}),re=new Nr.default({server:un});un.on("connection",t=>{ur.add(t),t.on("close",()=>{ur.delete(t)})});re.on("connection",(t,e)=>{let r=new URL(e.url??"/",`http://localhost:${v.port}`).searchParams.get("token");if(r&&ni(r,v.legacyToken))Pe.set(t,{authMode:"query_token"}),b.increment("ws.auth.success",{mode:"query_token"}),ue.prewarmCaches();else if(r){let s=Re.validateAnyPairToken(r);if(s)Pe.set(t,{authMode:"query_token",deviceId:s.deviceId}),b.increment("ws.auth.success",{mode:"query_token"}),ue.prewarmCaches();else{b.increment("ws.auth.failure",{mode:"query_token"}),t.close(4001,"Unauthorized");return}}cn.info({clients:re.clients.size},"client connected"),b.increment("ws.connect"),b.gauge("ws.clients",re.clients.size),w.emit("ws.connect",{clients:re.clients.size,authMode:Pe.get(t)?.authMode??"pending",deviceId:Pe.get(t)?.deviceId}),t.on("message",async s=>{try{let i=JSON.parse(Zc(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(!Pe.has(t)){if(o.action==="auth.hello"&&o.daemonId===F.daemonId&&Re.validatePairToken(o.deviceId,o.pairToken)){Pe.set(t,{authMode:"auth_hello",deviceId:o.deviceId}),b.increment("ws.auth.success",{mode:"auth_hello"}),ue.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"?j.error:a.level==="warn"?j.warn:j.info).call(j,{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 im(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=Pe.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=Pe.get(t);Zs(i,{deviceId:a?.deviceId,registerToken:Js,unregisterToken:Ks,respond:l=>t.send(JSON.stringify(l))});return}await ue.handle(t,o)}catch(i){cn.error({error:String(i)},"message handling error"),t.send(JSON.stringify({type:"error",sessionId:"",message:String(i)}))}}),t.on("close",s=>{cn.info({clients:re.clients.size,code:s},"client disconnected"),b.increment("ws.disconnect"),b.increment("ws.disconnect.code",{code:String(s)}),b.gauge("ws.clients",re.clients.size),w.emit("ws.disconnect",{clients:re.clients.size,code:s}),ue.removeClient(t)}),t.on("error",s=>{cn.error({error:s.message},"websocket error")})});function oi(){for(let t of ur)try{t.destroy()}catch{}ur.clear()}function iu(){let t=Dl({auditPath:ct,stdoutLogPath:Un,stderrLogPath:qn,auditMaxBytes:v.auditMaxBytes,logMaxBytes:v.daemonLogMaxBytes});t.trimmedFiles>0&&j.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 om(){At||(At=setInterval(iu,v.storageHousekeepingIntervalMs),At.unref())}function am(){At&&(clearInterval(At),At=null)}function $e(t,e=0){if(!Qc){Qc=!0,j.info({reason:t,exitCode:e},"shutting down"),w.emit("daemon.shutdown",{reason:t,exitCode:e,uptimeSeconds:Math.round((Date.now()-ru)/1e3)}),b.stopPeriodicLog(),am(),ue.shutdown();for(let n of re.clients)try{n.close(1001,"Server shutting down"),n.terminate()}catch{}re.close(n=>{n&&j.error({error:String(n)},"websocket close error")}),un.close(n=>{if(n){j.error({error:String(n)},"http close error"),oi(),process.exit(1);return}oi(),process.exit(e)}),setTimeout(()=>{j.error("force exiting after shutdown timeout"),oi(),process.exit(e||1)},3e3).unref()}}re.on("error",t=>{cn.error({error:t.message},"wss error")});un.on("error",t=>{if(t.code==="EADDRINUSE"){let e=Bc(v.port).filter(n=>n.pid!==process.pid);j.error({port:v.port,occupants:e},"port is already in use. Stop the existing process or use VIBE_PORT=<port> to specify another port")}else j.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=>{j.error({error:String(t),stack:t.stack},"uncaughtException"),w.emit("daemon.error",{type:"uncaughtException",error:String(t)})});process.on("unhandledRejection",t=>{j.error({reason:String(t)},"unhandledRejection"),w.emit("daemon.error",{type:"unhandledRejection",reason:String(t)})});un.listen(v.port,async()=>{iu(),w.emit("daemon.start",{port:v.port}),b.startPeriodicLog(),om(),j.info({port:v.port,daemonId:F.daemonId,displayName:F.displayName,canonicalHost:kt().canonicalHost,fallbackHosts:kt().fallbackHosts,claudePath:v.claudePath,codexPath:v.codexPath,auditMaxBytes:v.auditMaxBytes,daemonLogMaxBytes:v.daemonLogMaxBytes,storageHousekeepingIntervalMs:v.storageHousekeepingIntervalMs,turnStallTimeoutMs:v.turnStallTimeoutMs},"daemon started");let t=kt(),e=su();Vt(`
91
+ `)}resolveToolContext(e){let n=$(e?.item)??e??null,r=Bs(n);if(!r)return null;let s=n?Zl(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?Ds(e,["threadId","turnId",...n]):{}}queueApprovalRequest(e,n,r){if(this.approvalRequests.set(e,n),_.emit("approval.request",{agent:"codex",sessionId:this.threadId,toolName:n.toolName}),!this.handler){x.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,approvalContext:Fh(n)})}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"])},k(r?.reason)??k(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"])},k(r?.reason)??k(r?.description)??"");return}if(e==="item/tool/requestUserInput"){let o=r?.questions;if(!$h(o)){x.warn({threadId:this.threadId,rpcId:n},"unsupported requestUserInput request"),this.writeServerRequestError(n,"Unsupported interactive request from Codex");return}let a=Gh(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"])},zh(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,[])},k(r?.reason)??k(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,[])},k(r?.reason)??k(r?.description)??"");return}if(e==="item/permissions/requestApproval"){x.warn({threadId:this.threadId,rpcId:n},"unsupported permissions approval request"),this.writeServerRequestError(n,"Unsupported permissions approval request");return}x.warn({threadId:this.threadId,rpcId:n,method:e},"unsupported server request"),this.writeServerRequestError(n,`Unsupported server request: ${e}`)}handleRaw(e){if(x.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=$(e.params);if(n&&e.id!=null){this.handleServerRequest(n,e.id,r??void 0);return}switch(n&&x.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||x.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=$(r?.item),i=Bs(s),o=s?Zl(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=$(r?.item)??r,i=Bs(s);i&&this.toolContextByCallId.delete(i);break}case"turn/aborted":{let s=k(r?.reason)??k($(r?.turn)?.reason);x.info({threadId:this.threadId,reason:s},"turn interrupted"),_.emit("session.interrupted",{agent:"codex",sessionId:this.threadId,...s?{reason:s}:{}}),this.handler&&this.handler({type:"session.interrupted",sessionId:this.threadId});break}case"turn/completed":{let s=$(r?.turn),i=jh(s?.status),o=$(r?.usage),a=o?{inputTokens:Number(o.input_tokens??o.inputTokens??0),outputTokens:Number(o.output_tokens??o.outputTokens??0)}:void 0;if(i&&qh.has(i)){x.info({threadId:this.threadId,status:i},"turn interrupted"),_.emit("session.interrupted",{agent:"codex",sessionId:this.threadId,status:i,...a?{usage:a}:{}}),this.handler&&this.handler({type:"session.interrupted",sessionId:this.threadId});break}x.info({threadId:this.threadId,status:i??"completed"},"turn completed"),_.emit("session.done",{agent:"codex",sessionId:this.threadId,usage:a}),this.handler&&this.handler({type:"session.done",sessionId:this.threadId,usage:a});break}default:n&&x.debug({method:n},"unhandled notification");break}}};var B=require("fs/promises"),Ys=require("fs"),Js=require("readline"),C=require("path"),me=require("os");var Vh=new Set(["New session","Resumed session","Untitled session"]),Yh=["<environment_context>","<local-command-caveat>","<local-command-stdout>","<local-command-stderr>","<command-name>","<command-message>","<command-args>","# AGENTS.md instructions for "];function Jh(t){return t.replace(/\s+/g," ").trim()}function Xn(t){return typeof t!="string"?void 0:Jh(t)||void 0}function ic(t){let e=Xn(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 pt(t){let e=Xn(t);return!e||Vh.has(e)||ic(e)}function Kh(t){for(let e of t.replace(/\r/g,"").split(`
92
+ `)){let n=Xn(e);if(n&&!Xh(n)&&!Qh(n))return n}}function Xh(t){return Yh.some(e=>t.startsWith(e))}function Qh(t){let e=t.replace(/^['"`]+/,"").replace(/['"`\\]+$/,"").trim();return!!(!e||/^(\/|~\/|\.\/|\.\.\/)/.test(e)||/^[A-Za-z]:\\/.test(e))}function Zh(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 Hs(t,e=80){if(typeof t!="string")return;let n=Kh(t);if(!n)return;let r=Zh(n),i=(r>0?n.slice(0,r):n).replace(/[。!?;.!?;]+$/gu,"").trim();if(!(!i||ic(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=Xn(n);if(!(!r||pt(r)))return r}return Hs(e)}var lc=require("child_process"),ht=require("fs/promises"),Ee=require("path"),Fs=require("os"),cc=require("util");var eg=(0,cc.promisify)(lc.execFile),tg=P.child({module:"process-scanner"}),oc=1500,ng=15e3,nn=null;function Zn(){nn=null}function rg(t){return t.replace(/^['"]|['"]$/g,"")}function sg(t){return(t.match(/"[^"]*"|'[^']*'|\S+/g)??[]).map(rg)}function Us(t){let e=sg(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 ig(t,e){let n=Us(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 Qn(t){switch(t){case"high":return 3;case"medium":return 2;default:return 1}}function og(t,e){return t==="claude"?e.includes("/.claude/projects/")&&!e.includes("/subagents/"):e.includes("/.codex/sessions/")}function ag(t,e){let n=Us(e);return!n||n.agent!==t?!1:n.args.includes("--continue")||n.args.includes("-c")}function lg(t){let e=ig(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=>og(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 cg(t,e){let n=t,r=e;return(Qn(e.confidence)>Qn(t.confidence)||Qn(e.confidence)===Qn(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 ug(t){let e=new Map;for(let n of t){let r=`${n.agent}:${n.sessionId}`,s=e.get(r);e.set(r,s?cg(s,n):n)}return[...e.values()]}async function qs(t,e){try{let{stdout:n}=await eg(t,e,{maxBuffer:8388608,timeout:oc});return n}catch(n){return tg.warn({file:t,args:e,timeoutMs:oc,error:String(n)},"process scan command failed"),""}}async function ac(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 dg(t){return(await qs("lsof",["-a","-p",String(t),"-d","cwd","-Fn"])).split(`
93
+ `).find(r=>r.startsWith("n"))?.slice(1).trim()??""}async function fg(t){let n=(await qs("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 pg(){return(await qs("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=Us(s);return!Number.isFinite(r)||!i?null:{pid:r,command:s,agent:i.agent}}).filter(e=>!!e)}async function hg(){let t=await pg();return Promise.all(t.map(async e=>({pid:e.pid,agent:e.agent,command:e.command,cwd:await dg(e.pid),sessionFiles:await fg(e.pid)})))}function gg(t){return t.replace(/[^a-zA-Z0-9]/g,"-")}async function mg(t,e){if(!e)return null;try{if(t==="claude"){let o=(0,Ee.join)((0,Fs.homedir)(),".claude","projects",gg(e)),l=(await(0,ht.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 p=await(0,ht.stat)((0,Ee.join)(o,f)).catch(()=>null);p&&(!c||p.mtimeMs>c.mtimeMs)&&(c={name:f,mtimeMs:p.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,Fs.homedir)(),".codex","sessions"),r=null;async function s(o){let a=await(0,ht.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,ht.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 uc(){if(nn&&Date.now()<nn.expiresAt)return nn.value;let t=await hg(),e=await Promise.all(t.map(async r=>{let s=lg(r);if(s)return ac(s);if(ag(r.agent,r.command))return null;let i=await mg(r.agent,r.cwd);return i?ac({agent:r.agent,pid:r.pid,cwd:r.cwd,command:r.command,sessionId:i.sessionId,confidence:"low",sessionFilePath:i.filePath}):null})),n=ug(e.filter(r=>r!==null));return nn={value:n,expiresAt:Date.now()+ng},n}var er=P.child({module:"inventory"}),yg=2e3,Sg={listScannedSessions:sn,scanRunningSessions:uc,searchSessionContent:pc},mt={daemonActive:3,externalRunning:2,idle:1},dc={high:3,medium:2,low:1};function fc(t,e){return e.lastActivityAt.localeCompare(t.lastActivityAt)||t.sessionId.localeCompare(e.sessionId)}function vg(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]||fc(t,e)}function _g(t,e){return mt[e.state]>mt[t.state]?e:mt[e.state]<mt[t.state]?t:dc[e.confidence]>dc[t.confidence]?e:t}function bg(t,e){return t?e?t.localeCompare(e)<=0?t:e:t:e}function wg(t,e){return t?e?t.localeCompare(e)>=0?t:e:t:e}function Ig(t,e){return e?t?!(pt(e)&&!pt(t)):!0:!1}function Ws(t="high",e="resumeSession"){return{state:"idle",confidence:t,resumeMode:e}}function Ag(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:["record"],runtime:{...Ws(),...t.isResponding?{isResponding:!0}:{}},managed:t.managed,approvalMode:t.approvalMode}}function xg(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 Tg(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 kg(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=Ig(s.title,n.title)?n.title:s.title,o=n.cwd||s.cwd,a=_g(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:wg(s.lastActivityAt,n.lastActivityAt);t.set(r,{...s,cwd:o,title:i,createdAt:bg(s.createdAt,n.createdAt),lastActivityAt:d,sources:l,runtime:a,managed:s.managed||n.managed,approvalMode:n.approvalMode??s.approvalMode})}}function Eg(...t){let e=new Map;for(let n of t)kg(e,n);return[...e.values()]}function Cg(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&&er.info({total:t.length,filtered:o.length,search:r,contentMatchIds:s?.size??0},"filter applied"),o}function Pg(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 Rg(t,e,n,r,s,i,o){let a=i?1/0:Math.max(1,e||50),l=Eg(t.sessionRecords.map(Ag),t.scannedSessions,t.runningSessions.map(S=>xg(S,t.scannedAt)),t.activeSessions.map(Tg)),c=t.deletedSessionIds?.size?l.filter(S=>!t.deletedSessionIds?.has(S.sessionId)):l,u=Cg(c,r,s,i,o),d=u.filter(S=>S.runtime.state!=="idle"||S.managed).sort(vg),f=u.filter(S=>S.runtime.state==="idle"&&!S.managed).sort(fc),p=Pg(f,n),h=f.slice(p,p+a),m=p+h.length<f.length&&h.length>0?{lastActivityAt:h[h.length-1].lastActivityAt,sessionId:h[h.length-1].sessionId}:void 0;return{sessions:n?h:[...d,...h],nextCursor:m}}function js(t,e,n,r){return new Promise(s=>{let i=Date.now(),o=!1,a=null,l=c=>{o||(o=!0,a&&(clearTimeout(a),a=null),s(c))};a=setTimeout(()=>{o||(er.warn({source:t,timeoutMs:r,durationMs:Date.now()-i},"session inventory source timed out, using fallback"),l(n))},r),typeof a=="object"&&"unref"in a&&a.unref(),e().then(c=>{l(c)}).catch(c=>{o||er.warn({source:t,error:String(c)},"session inventory source failed, using fallback"),l(n)})})}async function tr(t){let e=new Date().toISOString(),n={...Sg,...t.loaders??{}},r=Math.max(250,t.sourceTimeoutMs??yg),[s,i,o]=await Promise.all([js("scanner.sessions",()=>n.listScannedSessions(t.agent,t.cwd),[],r),js("process.running_sessions",()=>n.scanRunningSessions(),[],r),t.search?js("scanner.search_content",()=>n.searchSessionContent(t.search,t.agent),void 0,r):Promise.resolve(void 0)]);return t.search&&er.info({search:t.search,contentMatches:o?.size??0,scanned:s.length,records:t.sessionRecords.length,active:t.activeSessions.length},"search results"),Rg({activeSessions:t.activeSessions,sessionRecords:t.sessionRecords,scannedSessions:s,runningSessions:i,scannedAt:e,deletedSessionIds:t.deletedSessionIds},t.limit,t.cursor,t.agent,t.cwd,t.search,o)}var Ce=P.child({module:"scanner"});function Sc(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 vc=3e4,$s=Sc(vc),zs=Sc(vc),nr=8;function sr(){$s.clear(),zs.clear()}function Vs(t){return t.replace(/[^a-zA-Z0-9]/g,"-")}async function rr(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*_c(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 Gs=512*1024;async function bc(t,e){if(e<=Gs)return(0,B.readFile)(t,"utf-8");let n=await(0,B.open)(t,"r");try{let r=Buffer.alloc(Gs),{bytesRead:s}=await n.read(r,0,Gs,0);return r.toString("utf-8",0,s)}finally{await n.close()}}function Ks(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 wc(t){return t?.type==="response_item"&&t.payload?.type==="message"&&t.payload.role==="user"?Ks(t.payload.content):t?.type==="event_msg"&&t.payload?.type==="user_message"&&typeof t.payload.message=="string"?t.payload.message:""}function Xs(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 Lg=["<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 Mg(t,e){if(t?.isMeta===!0)return!0;let n=e.trim();return n?Lg.some(r=>n.startsWith(r)):!1}function Qs(t){if(t?.type!=="user"||t.message?.role!=="user")return"";let e=Xs(t.message.content);return Mg(t,e)?"":e}function Ic(t){let e=t.trim();return e.startsWith("# AGENTS.md instructions for ")||e.startsWith("<environment_context>")}function Ac(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:Ws()}}function gt(t,e){let n=(0,C.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 Ng(t,e){let n=await bc(t,e),r=_c(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=Qs(u),f=We([],d);f&&(a=d,l=f)}if(s&&(o||l))break}return s?{sessionId:i||gt("claude",t)||(0,C.basename)(t,".jsonl"),cwd:s,title:o??l??We([],a)}:null}async function Og(t,e){let n=await bc(t,e),r=_c(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=wc(u),f=d&&!Ic(d)?We([],d):void 0;f&&(a=d,l=f)}if(s&&(o||l))break}return s?{sessionId:i||gt("codex",t)||(0,C.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 Ng(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 Og(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 hc(t){let e=(0,C.join)((0,me.homedir)(),".claude","projects");try{let n;t?n=[Vs(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,C.join)(e,o),l=await(0,B.readdir)(a).catch(()=>[]);for(let c of l)c.endsWith(".jsonl")&&r.push((0,C.join)(a,c))}return(await rr(r,nr,o=>rn(o,"claude"))).filter(o=>o!==null).map(o=>Ac(o)).sort((o,a)=>a.lastActivityAt.localeCompare(o.lastActivityAt))}catch(n){return Ce.warn({error:String(n)},"failed to list claude sessions"),[]}}async function gc(t){let e=(0,C.join)((0,me.homedir)(),".codex","sessions");try{let n=await(0,B.readdir)(e).catch(()=>[]),r=[];for(let o of n){let a=(0,C.join)(e,o),l=await(0,B.readdir)(a).catch(()=>[]);for(let c of l){let u=(0,C.join)(a,c),d=await(0,B.readdir)(u).catch(()=>[]);for(let f of d){let p=(0,C.join)(u,f),h=await(0,B.readdir)(p).catch(()=>[]);for(let g of h)g.endsWith(".jsonl")&&r.push((0,C.join)(p,g))}}}return(await rr(r,nr,o=>rn(o,"codex"))).filter(o=>o!==null).filter(o=>!t||o.cwd===t).map(o=>Ac(o)).sort((o,a)=>a.lastActivityAt.localeCompare(o.lastActivityAt))}catch(n){return Ce.warn({error:String(n)},"failed to list codex sessions"),[]}}async function sn(t,e){let r=`list:${(0,me.homedir)()}:${t??"all"}:${e??""}`,s=$s.get(r);if(s)return s;let i;if(t==="claude")i=await hc(e);else if(t==="codex")i=await gc(e);else{let[o,a]=await Promise.all([hc(e),gc(e)]);i=[...o,...a].sort((l,c)=>c.lastActivityAt.localeCompare(l.lastActivityAt))}return $s.set(r,i),i}async function pc(t,e){let r=`search:${(0,me.homedir)()}:${t}:${e??"all"}`,s=zs.get(r);if(s)return s;let i=new Set,o=t.toLowerCase();async function a(){let c=(0,C.join)((0,me.homedir)(),".claude","projects");try{let u=await(0,B.readdir)(c,{withFileTypes:!0}),d=[];for(let p of u){if(!p.isDirectory())continue;let h=(0,C.join)(c,p.name),g=await(0,B.readdir)(h).catch(()=>[]);for(let m of g)m.endsWith(".jsonl")&&d.push((0,C.join)(h,m))}let f=await rr(d,nr,p=>mc(p,o,"claude"));for(let p of f)p&&i.add(p)}catch(u){Ce.warn({error:String(u)},"failed to search claude files")}}async function l(){let c=(0,C.join)((0,me.homedir)(),".codex","sessions");try{let u=[];async function d(p){let h=await(0,B.readdir)(p,{withFileTypes:!0}).catch(()=>[]);for(let g of h){let m=(0,C.join)(p,g.name);g.isDirectory()?await d(m):g.name.endsWith(".jsonl")&&u.push(m)}}await d(c);let f=await rr(u,nr,p=>mc(p,o,"codex"));for(let p of f)p&&i.add(p)}catch(u){Ce.warn({error:String(u)},"failed to search codex files")}}return e==="claude"?await a():e==="codex"?await l():await Promise.all([a(),l()]),zs.set(r,i),i}async function mc(t,e,n){let r=(0,Ys.createReadStream)(t,{encoding:"utf-8"}),s=(0,Js.createInterface)({input:r,crlfDelay:1/0}),i=n==="claude"?Bg:Dg,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 Bg(t){return t?.type==="user"&&t.message?.role==="user"?Qs(t):t?.type==="assistant"&&t.message?.role==="assistant"?Xs(t.message.content):""}function Dg(t){if(t?.type==="response_item"&&t.payload?.type==="message"){let n=t.payload.role;if(n==="user"||n==="assistant")return Ks(t.payload.content)}let e=wc(t);return e||""}async function yc(t,e){let n=(0,Ys.createReadStream)(t,{encoding:"utf-8"}),r=(0,Js.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,C.join)((0,me.homedir)(),".claude","projects");try{let i=n?[Vs(n)]:[],o=await(0,B.readdir)(s).catch(()=>[]),a=n?[...i,...o.filter(l=>l!==Vs(n))]:o;for(let l of a){let c=(0,C.join)(s,l,`${t}.jsonl`);try{if(await yc(c,u=>{if(u.type==="user"&&u.message?.role==="user"){let d=Qs(u);d&&r.push({role:"user",content:d})}else if(u.type==="assistant"&&u.message?.role==="assistant"){let d=Xs(u.message.content);d&&r.push({role:"assistant",content:d})}}),r.length>0)break}catch(u){u.code!=="ENOENT"&&Ce.warn({error:String(u)},"failed to read claude session file")}}}catch(i){Ce.warn({error:String(i)},"failed to read claude session history")}}else if(e==="codex"){let s=(0,C.join)((0,me.homedir)(),".codex","sessions");try{let i=await xc(s,t);i&&await yc(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=Ks(o.payload.content);l&&(a==="user"&&Ic(l)||r.push({role:a,content:l}))})}catch(i){Ce.warn({error:String(i)},"failed to read codex session history")}}return r}async function xc(t,e){try{let n=await(0,B.readdir)(t,{withFileTypes:!0});for(let r of n){let s=(0,C.join)(t,r.name);if(r.isDirectory()){let i=await xc(s,e);if(i)return i}else if(r.name.includes(e)&&r.name.endsWith(".jsonl"))return s}}catch(n){Ce.warn({error:String(n)},"failed to walk codex sessions dir")}return null}var yt=require("fs"),Ec=require("path");var Hg=500,Tc=200;function Fg(t){if(!Array.isArray(t))return[];let e=t.filter(n=>typeof n=="string"&&n.length>0);return e.length<=Tc?e:e.slice(-Tc)}function Ug(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 qg(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n=typeof e.requestId=="string"?e.requestId:"",r=typeof e.toolName=="string"?e.toolName:"",s=typeof e.description=="string"?e.description:"",i=e.input&&typeof e.input=="object"&&!Array.isArray(e.input)?e.input:{};if(!n||!r||!s)return;let o=e.approvalContext;return o&&typeof o=="object"&&!Array.isArray(o)&&o.provider==="codex"&&typeof o.kind=="string"&&typeof o.rpcId=="number"?{requestId:n,toolName:r,input:i,description:s,approvalContext:{provider:"codex",kind:o.kind,rpcId:o.rpcId,...typeof o.questionId=="string"?{questionId:o.questionId}:{},...typeof o.approveLabel=="string"?{approveLabel:o.approveLabel}:{},...typeof o.denyLabel=="string"?{denyLabel:o.denyLabel}:{}}}:{requestId:n,toolName:r,input:i,description:s}}function kc(t){return{...t,lastActivityAt:t.lastActivityAt??t.createdAt,acceptedClientMessageIds:Fg(t.acceptedClientMessageIds),pendingApproval:qg(t.pendingApproval)}}function jg(t){if(Array.isArray(t))return{records:t.map(kc),deletedSessionIds:[]};if(t&&typeof t=="object"){let e=t;return{records:Array.isArray(e.records)?e.records.map(kc):[],deletedSessionIds:Ug(e.deletedSessionIds)}}return{records:[],deletedSessionIds:[]}}var ir=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()},Hg)}loadFromDisk(){try{let e=(0,yt.readFileSync)(Un,"utf-8");return jg(JSON.parse(e))}catch{}return{records:[],deletedSessionIds:[]}}saveToDisk(){(0,yt.mkdirSync)((0,Ec.dirname)(Un),{recursive:!0}),(0,yt.writeFileSync)(Un,JSON.stringify({records:this.records,deletedSessionIds:[...this.deletedSessionIds]},null,2))}};var St=require("path"),Cc=require("os");function or(t){return t=t.replace(/^~/,"~"),t.startsWith("~/")||t==="~"?(0,St.join)((0,Cc.homedir)(),t.slice(2)):t}function Wg(t){let e=t.trim();if(!e)return"";let n=e.indexOf("#");n>0&&(e=e.slice(0,n));let r=e.match(/^(.*?)(:\d+(?::\d+)?)$/);return r&&(e=r[1]??e),e}function Pc(t,e){let n=or(Wg(t));if(!n||(0,St.isAbsolute)(n))return n;let r=or(e??"");return r?(0,St.resolve)(r,n):n}var Rc={approvalRequestV1:"vibelet.approvalRequest.v1"};var vt=require("fs"),Lc=require("path");function Gg(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 $g(t){try{let e=(0,vt.readFileSync)(t,"utf8"),n=JSON.parse(e);return Array.isArray(n)?n.filter(Gg):[]}catch{return[]}}function an(t,e){(0,vt.mkdirSync)((0,Lc.dirname)(t),{recursive:!0}),(0,vt.writeFileSync)(t,JSON.stringify(e,null,2)+`
97
+ `,"utf8")}var ar=class{constructor(e=Cl){this.pushSubscriptionsPath=e;this.records=$g(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)],an(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,an(this.pushSubscriptionsPath,this.records),!0)}unregisterToken(e){let n=this.records.filter(r=>r.pushToken!==e);return n.length===this.records.length?!1:(this.records=n,an(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&&an(this.pushSubscriptionsPath,this.records)}reset(){this.records=[],an(this.pushSubscriptionsPath,this.records)}};var z=P.child({module:"push"}),zg="https://exp.host/--/api/v2/push/send",Vg="https://exp.host/--/api/v2/push/getReceipts",Yg=[0,1e3,3e3],ln=new ar;function Jg(t){return!!(t&&typeof t=="object"&&typeof t.daemonId=="string"&&typeof t.canonicalHost=="string"&&typeof t.sessionId=="string"&&(t.agent==="claude"||t.agent==="codex")&&(t.eventType==="reply_ready"||t.eventType==="approval_request")&&(typeof t.requestId>"u"||typeof t.requestId=="string"))}function Kg(t){return new Promise(e=>{setTimeout(e,t)})}function Mc(t){return t==="DeviceNotRegistered"}function Xg(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 Qg(t,e){let n=new Map;if(!Array.isArray(t.data))return n;for(let[r,s]of t.data.entries()){let i=e[r];!i||!s||s.status!=="ok"||typeof s.id!="string"||s.id.length===0||n.set(s.id,i)}return n}function Zg(t,e){let n=[],r=[],s=t.data;for(let[i,o]of e.entries()){let a=s?.[i];if(!a||typeof a!="object"){n.push(i);continue}a.status==="error"&&r.push({token:o,receipt:a})}return{pendingTicketIds:n,receiptErrors:r}}async function em(t,e,n,r){let s=new Map(t);for(let i of Yg){if(s.size===0)return;i>0&&await n(i);let o;try{o=await e(Vg,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:[...s.keys()]})})}catch(u){z.error({error:String(u),count:s.size},"push receipt request failed");return}if(!o.ok){z.error({status:o.status,statusText:o.statusText,count:s.size},"push receipt request returned error status");return}let a=await o.json().catch(()=>null);if(!a){z.error({count:s.size},"push receipt response was unreadable");return}let{pendingTicketIds:l,receiptErrors:c}=Zg(a,s);for(let{token:u,receipt:d}of c){let f=d.details?.error;if(z.error({token:u,message:d.message,details:d.details,receiptStatus:d.status},"push receipt rejected"),Mc(f)){let p=r.unregisterToken(u);z.info({token:u,errorCode:f,removed:p},"push token removed after receipt rejection")}}s=new Map(l.map(u=>[u,s.get(u)]))}s.size>0&&z.warn({pendingReceipts:s.size},"push receipts still pending after polling")}function tm(t){let e=t?.pushStore??ln,n=t?.fetchImpl??globalThis.fetch,r=t?.sleepImpl??Kg;return async function(i,o,a){let l=e.listTokens();if(l.length===0)return;let c=l.map(u=>({to:u,sound:"default",title:i,body:o,data:a,...Jg(a)&&a.eventType==="approval_request"?{categoryId:Rc.approvalRequestV1}:{}}));try{let u=await n(zg,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});if(!u.ok){z.error({status:u.status,statusText:u.statusText},"push send failed");return}let d=await u.json().catch(()=>null);if(!d){z.error({count:c.length},"push send returned unreadable response");return}let{successfulTokens:f,ticketErrors:p}=Xg(d,l),h=Qg(d,l);for(let{token:g,ticket:m}of p){let S=m.details?.error;if(z.error({token:g,message:m.message,details:m.details,ticketStatus:m.status},"push ticket rejected"),Mc(S)){let U=e.unregisterToken(g);z.info({token:g,errorCode:S,removed:U},"push token removed after ticket rejection")}}f.length>0&&(z.debug({count:f.length},"push sent"),e.markSent(f)),h.size>0&&await em(h,n,r,e)}catch(u){z.error({error:String(u)},"push send error")}}}function Zs(t,e){ln.register(t,e),z.info({deviceId:t,token:e,total:ln.count()},"push token registered")}function ei(t,e){let n=ln.unregister(t,e);z.info({deviceId:t,token:e,total:ln.count(),removed:n},"push token unregistered")}var lr=tm();var b=P.child({module:"manager"}),nm="Done.",rm="Approval required",Nc=180,ur=200;function cr(...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>ur&&e.splice(0,e.length-ur));return e}function ce(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,approvalMode:t.approvalMode,acceptedClientMessageIds:cr(t.acceptedClientMessageIds),pendingApproval:t.agent==="codex"?t.pendingApproval:void 0,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,managed:t.managed,isResponding:t.isResponding||void 0}}function Oc(t){let e=t.pendingApproval?.requestId;return typeof e=="string"&&Jn(e)}function Bc(t,e,n){return{sessionId:t,agent:e,...n}}function sm(t){return t.startsWith(Ls)}function Dc(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 dr=class{constructor(e=lr){this.pushSender=e;this.startIdleSweep()}sessions=new Map;claudeHookSessions=new Map;store=new ir;idleSweepInterval=null;startIdleSweep(){v.idleTimeoutMs<=0&&v.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=v.idleTimeoutMs,r=v.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&&(b.info({sessionId:o.sessionId,inactiveMs:l},"removing inactive session from memory"),w.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;b.warn({sessionId:o.sessionId,agent:o.agent,inactiveMs:a,turnStallTimeoutMs:r},"stopping stalled driver"),w.increment("driver.stall_timeout",{agent:o.agent}),_.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}o.pendingApproval||n<=0||a<n||(b.info({sessionId:o.sessionId,agent:o.agent,idleMs:a,timeoutMs:n},"stopping idle driver"),w.increment("driver.idle_timeout",{agent:o.agent}),_.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(b.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"||!Oc(e))&&(e.pendingApproval=void 0)),i.type==="approval.request"){if(n==="codex"&&e.approvalMode==="autoApprove"){if(e.driver?.respondApproval(i.requestId,!0)??!1){_.emit("approval.response",{sessionId:e.sessionId,requestId:i.requestId,approved:!0}),e.pendingApproval=void 0,e.isResponding=!0,this.touchSession(e.sessionId);return}b.warn({sessionId:e.sessionId,requestId:i.requestId},"failed to auto-approve codex request; falling back to pending approval flow")}e.isResponding=!1,e.pendingApproval={requestId:i.requestId,toolName:i.toolName,input:i.input,description:i.description,...i.approvalContext?{approvalContext:i.approvalContext}:{}},this.pushSender(rm,this.buildPushBody(`${e.title||e.sessionId}: ${i.description||i.toolName}`),{sessionId:e.sessionId,agent:e.agent,requestId:i.requestId,eventType:"approval_request"})}n==="claude"&&i.type==="approval.request"&&Jn(i.requestId)&&(e.lastUserMessage?e.syntheticApprovalRetries[i.requestId]={message:e.lastUserMessage,toolName:i.toolName}:b.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=>{b.info({agent:n,context:r,exitCode:i,sessionId:e.sessionId},"driver exited"),_.emit("driver.exit",{sessionId:e.sessionId,agent:n,exitCode:i}),w.increment("driver.exit",{agent:n,abnormal:i&&i!==0?"true":"false"});let o=!!(e.pendingApproval&&(e.agent==="codex"||i===0&&Oc(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){b.warn({oldSessionId:e.sessionId,newSessionId:n},"skipping session ID remap because target already exists");return}let i=e.sessionId;b.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(ce(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=w.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){b.info({pendingSessionId:s,actualSessionId:a},"discarding stale codex startup result");return}e.startupInProgress=!1,b.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){b.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),b.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,ti.randomUUID)().replace(/-/g,"");return n.configureHookBridge(v.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&&sm(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):(b.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 b.warn({secretPresent:!!e},"received Claude permission hook for unknown or inactive session"),en;if(r.approvalMode==="autoApprove")return Dc(!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=`${Ls}${l.trim()||(0,ti.randomUUID)()}`,u=r.pendingClaudeHookApprovals.get(c);if(u)return u.promise;let d=`Claude requested permissions to use ${i}.`,f,p=new Promise(h=>{f=h});return r.pendingClaudeHookApprovals.set(c,{requestId:c,promise:p,resolve:h=>{r.pendingClaudeHookApprovals.delete(c),f(h)}}),r.pendingApproval={requestId:c,toolName:i,input:a,description:d},_.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}),p}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?.pendingApproval,c=r?.title??"",u=r?.createdAt??s,d=r?.lastActivityAt??s,f=cr(r?.acceptedClientMessageIds),p=r?"memory":"client",h=this.store.find(e);if(h)i=h.agent,o=h.cwd||o,a=h.approvalMode??a,l=h.pendingApproval??l,c=h.title||c,u=h.createdAt||u,d=h.lastActivityAt||d,f=cr(h.acceptedClientMessageIds,f),p="record";else if(!r){let m=(await sn(n??i)).find(S=>S.sessionId===e);m&&(i=m.agent,o=m.cwd||o,c=m.title??c,u=m.createdAt,d=m.lastActivityAt,p="scanner")}if(!i&&n&&(i=n,p=r?"memory":"client"),!!i)return{agent:i,cwd:o,approvalMode:a,pendingApproval:l,title:c,createdAt:u,lastActivityAt:d,acceptedClientMessageIds:f,source:p,managed:r?.managed??h?.managed,isResponding:r?.isResponding||h?.isResponding||void 0}}collectReconnectPendingApprovals(){let e=[],n=new Set;for(let r of this.sessions.values()){if(!r.pendingApproval)continue;let s=`${r.agent}:${r.sessionId}:${r.pendingApproval.requestId}`;n.has(s)||(n.add(s),e.push(Bc(r.sessionId,r.agent,r.pendingApproval)))}for(let r of this.store.getAll()){if(!r.pendingApproval)continue;let s=`${r.agent}:${r.sessionId}:${r.pendingApproval.requestId}`;n.has(s)||(n.add(s),e.push(Bc(r.sessionId,r.agent,r.pendingApproval)))}return e}restoreDriverPendingApproval(e,n){n&&e.restorePendingApproval?.(n)}async reviveSessionForApproval(e){if(e.driver)return!0;if(!e.pendingApproval||e.agent!=="codex")return!1;let n=this.createDriver(e.agent),r=this.configureDriverBeforeStart(e.agent,n,e.claudeHookSecret);return await n.start(e.cwd,e.sessionId,e.approvalMode),this.restoreDriverPendingApproval(n,e.pendingApproval),e.driver=n,e.active=!0,e.isResponding=!1,e.currentReplyText="",e.startupInProgress=!1,e.bufferedPrompts=e.bufferedPrompts??[],e.startupToken=e.startupToken??0,e.claudeHookSecret=r??e.claudeHookSecret,e.pendingClaudeHookApprovals=e.pendingClaudeHookApprovals??new Map,this.registerClaudeHookSession(e),this.bindDriverLifecycle(e,e.agent," (approval resumed)"),this.store.upsert(ce(e)),this.updateGauges(),this.touchSession(e.sessionId),!0}buildPushBody(e){let n=e.replace(/\s+/g," ").trim();return n?n.length<=Nc?n:`${n.slice(0,Math.max(1,Nc-3)).trimEnd()}...`:nm}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(ce(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++;w.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(b.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){b.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(){tr({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=or(s),b.info({agent:r,cwd:s,approvalMode:i,continueSession:o},"creating session");try{if(!(await(0,Hc.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 b.info({sessionId:l.sessionId,cwd:s},"continue mode: resuming last session"),this.resumeSession(e,n,l.sessionId,r,s,i);b.info("continue mode: no previous sessions found, creating new")}catch(a){b.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 p=`pending_${Date.now()}`;b.info({sessionId:p,agent:r,cwd:s},"session created (pending codex startup)"),w.increment("session.create",{agent:r}),_.emit("session.create",{sessionId:p,agent:r,cwd:s,approvalMode:i});let h={sessionId:p,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(p,h),this.registerClaudeHookSession(h),this.store.upsert(ce(h)),this.updateGauges(),sr(),Zn(),this.bindDriverLifecycle(h,r,"",e),this.reply(e,n,!0,{sessionId:p}),this.startPendingCodexSession(h,e);return}let c=w.startTimer("driver.spawn"),u=await a.start(s,void 0,i),d=c();b.info({sessionId:u,agent:r,spawnMs:d},"session created"),w.increment("session.create",{agent:r}),_.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(ce(f)),this.updateGauges(),sr(),Zn(),this.bindDriverLifecycle(f,r,"",e),this.reply(e,n,!0,{sessionId:u})}catch(a){b.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),p=this.currentPartialReplyText(a);if(f.length>0||p||a.approvalMode||a.pendingApproval){let h={type:"session.history",sessionId:r,messages:f,isResponding:a.isResponding||void 0,partialReplyText:p,approvalMode:a.approvalMode,pendingApproval:a.pendingApproval};e.readyState===1&&e.send(JSON.stringify(h))}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=w.startTimer("driver.spawn"),p=this.createDriver(s),h=this.configureDriverBeforeStart(s,p),g=await p.start(c,r,u),m=f();b.info({sessionId:g,agent:s,spawnMs:m},"session resumed"),w.increment("session.resume",{agent:s}),_.emit("session.resume",{sessionId:g,agent:s,cwd:c});let S={sessionId:g,agent:s,cwd:c,approvalMode:u,driver:p,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,pendingApproval:l?.pendingApproval,claudeHookSecret:h,pendingClaudeHookApprovals:new Map};this.sessions.set(g,S),this.registerClaudeHookSession(S),this.store.upsert(ce(S)),this.updateGauges(),this.bindDriverLifecycle(S,s," (resumed)",e),this.restoreDriverPendingApproval(p,S.pendingApproval);let U=await on(r,s,c);if(U.length>0||S.pendingApproval){b.info({sessionId:r,historyCount:U.length},"sending history messages");let se={type:"session.history",sessionId:g,messages:U,approvalMode:u,pendingApproval:S.pendingApproval};e.readyState===1&&e.send(JSON.stringify(se))}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>ur&&e.acceptedClientMessageIds.splice(0,e.acceptedClientMessageIds.length-ur))}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){b.warn({sessionId:r},"session not found in records or scanner"),this.reply(e,n,!1,void 0,"Session not found");return}b.info({sessionId:r,agent:l.agent,source:l.source},"auto-reconnecting session"),w.increment("session.reconnect",{agent:l.agent,source:l.source}),_.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),this.restoreDriverPendingApproval(c,l.pendingApproval),a?(a.approvalMode=l.approvalMode,a.pendingApproval=l.pendingApproval,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=cr(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,pendingApproval:l.pendingApproval,claudeHookSecret:u,pendingClaudeHookApprovals:new Map},this.sessions.set(r,a)),this.registerClaudeHookSession(a),this.bindDriverLifecycle(a,l.agent," (reconnected)"),this.store.upsert(ce(a)),this.updateGauges()}catch(c){this.reply(e,n,!1,void 0,`Failed to reconnect: ${c}`);return}}if(a.clients.add(e),a.pendingApproval){this.reply(e,n,!1,void 0,"Resolve the pending approval before sending another message.");return}if(o&&this.hasAcceptedClientMessage(a,o)){this.reply(e,n,!0,{sessionId:r,clientMessageId:o,duplicate:!0});return}if(b.info({sessionId:r,clients:a.clients.size,hasDriver:!!a.driver,active:a.active},"sending message"),_.emit("session.send",{sessionId:r,agent:a.agent,messagePreview:s.slice(0,100)}),pt(a.title)){let l=Hs(s,50);l&&l!==a.title&&(a.title=l),this.store.upsert(ce(a))}if(o&&this.rememberAcceptedClientMessage(a,o),this.touchSession(a.sessionId),a.startupInProgress){a.isResponding=!0,a.currentReplyText="",a.lastUserMessage=s,a.bufferedPrompts.push(s),this.reply(e,n,!0,o?{sessionId:r,clientMessageId:o}:void 0);return}if(a.isResponding){a.bufferedPrompts.push(s),this.reply(e,n,!0,o?{sessionId:r,clientMessageId:o}:void 0);return}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 tr({agent:r,cwd:s,search:i,limit:50,activeSessions:this.activeSessionSnapshots(),sessionRecords:this.store.getAll(),deletedSessionIds:l})}catch(f){b.warn({error:String(f)},"failed to build reconnect snapshot session list"),c={sessions:[],nextCursor:void 0}}let u;if(o&&!l.has(o)){let f=a??c.sessions.find(g=>g.sessionId===o)?.agent,p=this.sessions.get(o);p&&p.clients.add(e);let h=await this.resolveReconnectSession(o,f,p);if(h){let g=await on(o,h.agent,p?.cwd??h.cwd);u={sessionId:o,agent:h.agent,messages:g,isResponding:p?.isResponding||h.isResponding||void 0,partialReplyText:this.currentPartialReplyText(p),approvalMode:p?.approvalMode??h.approvalMode,...p?.pendingApproval?{pendingApproval:p.pendingApproval}:{}}}}let d=this.collectReconnectPendingApprovals();w.increment("reconnect.snapshot",{activeSession:u?"true":"false"}),this.reply(e,n,!0,{snapshot:{sessions:c.sessions,nextCursor:c.nextCursor,...u?{activeSession:u}:{},...d.length>0?{pendingApprovals:d}:{}}})}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?.pendingApproval,l=o?.pendingClaudeHookApprovals.get(s);if(o&&l){o.pendingApproval=void 0,_.emit("approval.response",{sessionId:r,requestId:s,approved:i}),this.touchSession(o.sessionId),l.resolve(Dc(i)),o.isResponding=!0,this.reply(e,n,!0);return}let c=o?.syntheticApprovalRetries[s];if(o&&c&&Jn(s)){delete o.syntheticApprovalRetries[s],o.pendingApproval=void 0,_.emit("approval.response",{sessionId:r,requestId:s,approved:i}),this.touchSession(o.sessionId),this.reply(e,n,!0),i&&await this.retrySyntheticClaudeApproval(o,c);return}if(o&&!o.driver&&a)try{await this.reviveSessionForApproval(o)}catch(d){this.reply(e,n,!1,void 0,`Failed to restore approval session: ${String(d)}`);return}if(!o?.driver){this.reply(e,n,!1,void 0,"Session not found or inactive");return}if(_.emit("approval.response",{sessionId:r,requestId:s,approved:i}),!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.pendingApproval=void 0,this.touchSession(o.sessionId),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(ce(e)),this.updateGauges(),this.touchSession(e.sessionId),b.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),b.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),b.info({sessionId:r,agent:a.agent,newMode:s},"approval mode changed (inactive session)")):b.info({sessionId:r,newMode:s},"approval mode changed (untracked session)"),this.reply(e,n,!0,{approvalMode:s});return}let o=i.approvalMode;i.approvalMode=s,this.store.upsert(ce(i)),b.info({sessionId:r,agent:i.agent,oldMode:o,newMode:s},"approval mode changed"),i.driver&&i.driver.setApprovalMode(s),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}_.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}b.info({sessionId:r,agent:s.agent},"stopping session"),_.emit("session.stop",{sessionId:r,agent:s.agent}),this.resolvePendingClaudeHookApprovals(s),s.driver?.stop(),s.active=!1,s.driver=null,s.pendingApproval=void 0,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&&(b.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)),_.emit("session.delete",{sessionId:r}),this.store.remove(r),this.updateGauges(),sr(),Zn(),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=this.store.find(r),l=await on(r,s,o);b.info({sessionId:r,historyCount:l.length,isResponding:i?.isResponding,approvalMode:i?.approvalMode},"sending history");let c={type:"session.history",sessionId:r,messages:l,isResponding:i?.isResponding||void 0,partialReplyText:this.currentPartialReplyText(i),approvalMode:i?.approvalMode??a?.approvalMode,pendingApproval:i?.pendingApproval??a?.pendingApproval};e.readyState===1&&e.send(JSON.stringify(c)),this.reply(e,n,!0)}async listSessions(e,n,r,s,i,o=50,a){try{let l=await tr({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 Kn;default:throw new Error(`Unknown agent: ${e}`)}}broadcast(e,n){let r=this.sessions.get(e);if(!r){b.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&&w.increment("broadcast.fail"),n.type!=="text.delta"&&b.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,eventType:"reply_ready"});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 ni(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 Fc=require("child_process");function im(t,e){return(0,Fc.execFileSync)(t,e,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}function om(t){let e=t.split(`
98
+ `).map(n=>Number(n.trim())).filter(n=>Number.isFinite(n)&&n>0);return[...new Set(e)]}function Uc(t,e=im){let n;try{n=om(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 _t=require("fs"),ri=require("os"),jc=require("crypto"),Wc=require("path");function Gc(t){return(0,jc.randomBytes)(t).toString("base64url")}function am(){return`d_${Gc(12)}`}function lm(){return(0,ri.hostname)()}function cm(){let t=(0,ri.hostname)().trim().toLowerCase();return t?t.endsWith(".local")?t:`${t}.local`:"localhost"}function um(t){return{daemonId:am(),daemonSecret:Gc(32),displayName:lm(),canonicalHost:cm(),port:t,createdAt:new Date().toISOString()}}function qc(t,e){(0,_t.mkdirSync)((0,Wc.dirname)(e),{recursive:!0}),(0,_t.writeFileSync)(e,JSON.stringify(t,null,2)+`
99
+ `,"utf8")}function $c(t,e=kl){try{let r=(0,_t.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,qc(i,e)),i}}catch{}let n=um(t);return qc(n,e),n}var bt=require("crypto"),wt=require("fs"),Vc=require("path");function si(t){return(0,bt.randomBytes)(t).toString("base64url")}function ii(t){return(0,bt.createHash)("sha256").update(t).digest("hex")}function zc(t,e){let n=Buffer.from(t),r=Buffer.from(e);return n.length!==r.length?!1:(0,bt.timingSafeEqual)(n,r)}function dm(t){try{let e=(0,wt.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 cn(t,e){(0,wt.mkdirSync)((0,Vc.dirname)(t),{recursive:!0}),(0,wt.writeFileSync)(t,JSON.stringify(e,null,2)+`
100
+ `,"utf8")}var fr=class{constructor(e=El){this.pairingsPath=e;this.records=dm(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_${si(8)}`,r=si(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=si(32),i={deviceId:e,deviceName:n,tokenHash:ii(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),cn(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=ii(n);return zc(s.tokenHash,i)?(r&&(s.lastSeenAt=new Date().toISOString(),cn(this.pairingsPath,this.records)),!0):!1}validateAnyPairToken(e,n=!0){let r=ii(e),s=this.records.find(i=>!i.revokedAt&&zc(i.tokenHash,r));return s?(n&&(s.lastSeenAt=new Date().toISOString(),cn(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(),cn(this.pairingsPath,this.records),!0):!1}reset(){this.records=[],this.windows.clear(),cn(this.pairingsPath,this.records)}};function It(t){return t?t==="127.0.0.1"||t==="::1"||t==="::ffff:127.0.0.1":!1}function fm(t){return t&&t.match(/^Bearer\s+(.+)$/i)?.[1]?.trim()||null}function Yc(t,e){return fm(t)??e}function oi(t,e){return!!(t&&e&&t===e)}function Jc(t,e,n,r=!0){return t?oi(t,e)?!0:!!n(t,r):!1}var Xc=require("child_process");function ai(t){let e=t.split(".");return e.length!==4?!1:e.every(n=>/^\d+$/.test(n)&&Number(n)>=0&&Number(n)<=255)}function Qc(t){if(!ai(t))return!1;let[e,n]=t.split(".").map(Number);return e===100&&n>=64&&n<=127}function pm(t){if(!ai(t))return!1;let[e,n]=t.split(".").map(Number);return e===169&&n===254}function hm(t){if(!ai(t))return!1;let[e,n]=t.split(".").map(Number);return e===198&&(n===18||n===19)}function li(t){return!!t&&!pm(t)&&!hm(t)}function At(t){if(!t)return;let e=t.trim().replace(/\.$/,"");return e?e.toLowerCase():void 0}function Zc(t){return t?t.split(",").map(e=>e.trim()).filter(Boolean):[]}function gm(t){let e=[],n=[];for(let r of Object.values(t))if(r)for(let s of r)s.internal||s.family!=="IPv4"||li(s.address)&&(Qc(s.address)?e.push(s.address):n.push(s.address));return[...e,...n]}function Kc(t){let e=JSON.parse(t),n=At(e.Self?.DNSName),r=(e.Self?.TailscaleIPs??[]).map(o=>At(o)).filter(o=>!!o).filter(o=>Qc(o)&&li(o)),s=r[0]??n,i=[...n&&n!==s?[n]:[],...r.filter(o=>o!==s)];return{canonicalHost:s,fallbackHosts:i}}function eu(t=Xc.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 Kc(r)}catch{}try{let n=t("tailscale",["status","--json"],{encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:1500});return Kc(n)}catch{return{fallbackHosts:[]}}}function tu(t){let e=At(t.canonicalHost),n=At(t.configuredCanonicalHost)||At(t.tailscaleCanonicalHost)||e||"localhost",r=[...e&&e!==n?[e]:[],...t.configuredFallbackHosts??[],...t.tailscaleFallbackHosts??[],...gm(t.interfaces)].map(s=>At(s)).filter(s=>!!s).filter(s=>li(s)).filter((s,i,o)=>s!==n&&o.indexOf(s)===i);return{canonicalHost:n,fallbackHosts:r}}function nu(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=P.child({module:"daemon"}),un=P.child({module:"ws"}),D=$c(v.port),ue=new dr((t,e,n)=>lr(t,e,{daemonId:D.daemonId,canonicalHost:D.canonicalHost,...n??{}})),Re=new fr,pr=new Set,Pe=new WeakMap,ru=!1,au=Date.now(),xt=null;function Tt(){let t=eu();return tu({canonicalHost:D.canonicalHost,configuredCanonicalHost:v.canonicalHost,configuredFallbackHosts:Zc(v.fallbackHosts),tailscaleCanonicalHost:t.canonicalHost,tailscaleFallbackHosts:t.fallbackHosts,interfaces:(0,iu.networkInterfaces)()})}async function ci(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 H(t,e,n){t.writeHead(e,{"Content-Type":"application/json"}),t.end(JSON.stringify(n,null,2))}function mm(t){let e=(0,hr.extname)(t).toLowerCase();return{".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".svg":"image/svg+xml",".webp":"image/webp",".pdf":"application/pdf",".md":"text/markdown; charset=utf-8",".markdown":"text/markdown; charset=utf-8",".txt":"text/plain; charset=utf-8",".log":"text/plain; charset=utf-8",".json":"application/json; charset=utf-8",".js":"text/plain; charset=utf-8",".jsx":"text/plain; charset=utf-8",".ts":"text/plain; charset=utf-8",".tsx":"text/plain; charset=utf-8",".mjs":"text/plain; charset=utf-8",".cjs":"text/plain; charset=utf-8",".css":"text/plain; charset=utf-8",".html":"text/plain; charset=utf-8",".yml":"text/plain; charset=utf-8",".yaml":"text/plain; charset=utf-8"}[e]||"application/octet-stream"}function lu(){let t=Re.openWindow(),e=Tt(),n=e.canonicalHost,r=D.port,s=e.fallbackHosts.length>0?e.fallbackHosts:void 0;if(v.relayUrl)try{let i=new URL(v.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:v.relayUrl},"invalid VIBELET_RELAY_URL, ignoring")}return{type:"vibelet-pair",daemonId:D.daemonId,displayName:D.displayName,canonicalHost:n,fallbackHosts:s,port:r,pairNonce:t.pairNonce,expiresAt:t.expiresAt}}async function ym(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,hr.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 dn=(0,su.createServer)(async(t,e)=>{let n=new URL(t.url??"/",`http://localhost:${v.port}`);if(n.pathname==="/health"){let s=Tt(),i={status:"ok",version:ft,daemonId:D.daemonId,displayName:D.displayName,canonicalHost:s.canonicalHost,uptimeSeconds:Math.round((Date.now()-au)/1e3),activeSessions:ue.getActiveSessionCount(),pairedDevices:Re.pairedCount(),wsClients:re.clients.size,drivers:ue.getDriverCounts(),metrics:w.snapshot()};v.relayUrl&&(i.relayUrl=v.relayUrl),H(e,200,i);return}if(t.method==="POST"&&n.pathname==="/pair/open"){if(!It(t.socket.remoteAddress)){H(e,403,{error:"forbidden"});return}H(e,200,lu());return}if(t.method==="POST"&&n.pathname==="/pair/reset"){if(!It(t.socket.remoteAddress)){H(e,403,{error:"forbidden"});return}Re.reset(),H(e,200,{ok:!0});return}if(t.method==="POST"&&n.pathname==="/shutdown"){if(!It(t.socket.remoteAddress)){H(e,403,{error:"forbidden"});return}H(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)){H(e,403,{error:"forbidden"});return}try{let s=await ci(t),i=t.headers[Zt],o=Array.isArray(i)?i[0]:i;ue.handleClaudeSessionStartHook(o,s),H(e,200,{ok:!0})}catch(s){H(e,400,{error:String(s)})}return}if(t.method==="POST"&&n.pathname==="/hook/claude/permission-request"){if(!It(t.socket.remoteAddress)){H(e,403,{error:"forbidden"});return}try{let s=await ci(t),i=t.headers[Zt],o=Array.isArray(i)?i[0]:i,a=await ue.handleClaudePermissionHook(o,s);H(e,200,a)}catch(s){H(e,400,{error:String(s)})}return}if(t.method==="POST"&&n.pathname==="/pair/create"){try{let s=await ci(t);if(s.daemonId!==D.daemonId||typeof s.pairNonce!="string"||typeof s.deviceId!="string"||typeof s.deviceName!="string"){H(e,400,{error:"invalid_pair_request"});return}if(!Re.consumeWindow(s.pairNonce)){H(e,401,{error:"pair_window_expired"});return}let o=Re.issuePairToken(s.deviceId,s.deviceName),a=Tt();H(e,200,{daemonId:D.daemonId,displayName:D.displayName,canonicalHost:a.canonicalHost,fallbackHosts:a.fallbackHosts,port:D.port,deviceId:s.deviceId,pairToken:o})}catch(s){H(e,400,{error:String(s)})}return}let r=Yc(t.headers.authorization,n.searchParams.get("token"));if(!Jc(r,v.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"),i=n.searchParams.get("cwd")||void 0;if(!s){e.writeHead(400),e.end("Missing path parameter");return}try{let o=Pc(s,i);if(!(await(0,Ge.stat)(o)).isFile()){e.writeHead(404),e.end("Not a file");return}let l=mm(o),c=await(0,Ge.readFile)(o);e.writeHead(200,{"Content-Type":l,"Content-Length":c.length}),e.end(c)}catch{e.writeHead(404),e.end("File not found")}return}e.writeHead(200),e.end(`Vibelet Daemon v${ft}`)}),re=new Dr.default({server:dn});dn.on("connection",t=>{pr.add(t),t.on("close",()=>{pr.delete(t)})});re.on("connection",(t,e)=>{let r=new URL(e.url??"/",`http://localhost:${v.port}`).searchParams.get("token");if(r&&oi(r,v.legacyToken))Pe.set(t,{authMode:"query_token"}),w.increment("ws.auth.success",{mode:"query_token"}),ue.prewarmCaches();else if(r){let s=Re.validateAnyPairToken(r);if(s)Pe.set(t,{authMode:"query_token",deviceId:s.deviceId}),w.increment("ws.auth.success",{mode:"query_token"}),ue.prewarmCaches();else{w.increment("ws.auth.failure",{mode:"query_token"}),t.close(4001,"Unauthorized");return}}un.info({clients:re.clients.size},"client connected"),w.increment("ws.connect"),w.gauge("ws.clients",re.clients.size),_.emit("ws.connect",{clients:re.clients.size,authMode:Pe.get(t)?.authMode??"pending",deviceId:Pe.get(t)?.deviceId}),t.on("message",async s=>{try{let i=JSON.parse(nu(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(!Pe.has(t)){if(o.action==="auth.hello"&&o.daemonId===D.daemonId&&Re.validatePairToken(o.deviceId,o.pairToken)){Pe.set(t,{authMode:"auth_hello",deviceId:o.deviceId}),w.increment("ws.auth.success",{mode:"auth_hello"}),ue.prewarmCaches(),t.send(JSON.stringify({type:"response",id:o.id,ok:!0,data:{daemonId:D.daemonId,displayName:D.displayName}}));return}if(o.action==="auth.hello"){w.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}w.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)_.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 ym(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=Pe.get(t);ni(i,{deviceId:a?.deviceId,registerToken:Zs,unregisterToken:ei,respond:l=>t.send(JSON.stringify(l))});return}if(i.action==="push.unregister"){let a=Pe.get(t);ni(i,{deviceId:a?.deviceId,registerToken:Zs,unregisterToken:ei,respond:l=>t.send(JSON.stringify(l))});return}await ue.handle(t,o)}catch(i){un.error({error:String(i)},"message handling error"),t.send(JSON.stringify({type:"error",sessionId:"",message:String(i)}))}}),t.on("close",s=>{un.info({clients:re.clients.size,code:s},"client disconnected"),w.increment("ws.disconnect"),w.increment("ws.disconnect.code",{code:String(s)}),w.gauge("ws.clients",re.clients.size),_.emit("ws.disconnect",{clients:re.clients.size,code:s}),ue.removeClient(t)}),t.on("error",s=>{un.error({error:s.message},"websocket error")})});function ui(){for(let t of pr)try{t.destroy()}catch{}pr.clear()}function cu(){let t=ql({auditPath:ct,stdoutLogPath:qn,stderrLogPath:jn,auditMaxBytes:v.auditMaxBytes,logMaxBytes:v.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 Sm(){xt||(xt=setInterval(cu,v.storageHousekeepingIntervalMs),xt.unref())}function vm(){xt&&(clearInterval(xt),xt=null)}function $e(t,e=0){if(!ru){ru=!0,W.info({reason:t,exitCode:e},"shutting down"),_.emit("daemon.shutdown",{reason:t,exitCode:e,uptimeSeconds:Math.round((Date.now()-au)/1e3)}),w.stopPeriodicLog(),vm(),ue.shutdown();for(let n of re.clients)try{n.close(1001,"Server shutting down"),n.terminate()}catch{}re.close(n=>{n&&W.error({error:String(n)},"websocket close error")}),dn.close(n=>{if(n){W.error({error:String(n)},"http close error"),ui(),process.exit(1);return}ui(),process.exit(e)}),setTimeout(()=>{W.error("force exiting after shutdown timeout"),ui(),process.exit(e||1)},3e3).unref()}}re.on("error",t=>{un.error({error:t.message},"wss error")});dn.on("error",t=>{if(t.code==="EADDRINUSE"){let e=Uc(v.port).filter(n=>n.pid!==process.pid);W.error({port:v.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"),_.emit("daemon.error",{type:"uncaughtException",error:String(t)})});process.on("unhandledRejection",t=>{W.error({reason:String(t)},"unhandledRejection"),_.emit("daemon.error",{type:"unhandledRejection",reason:String(t)})});dn.listen(v.port,async()=>{cu(),_.emit("daemon.start",{port:v.port}),w.startPeriodicLog(),Sm(),W.info({port:v.port,daemonId:D.daemonId,displayName:D.displayName,canonicalHost:Tt().canonicalHost,fallbackHosts:Tt().fallbackHosts,claudePath:v.claudePath,codexPath:v.codexPath,auditMaxBytes:v.auditMaxBytes,daemonLogMaxBytes:v.daemonLogMaxBytes,storageHousekeepingIntervalMs:v.storageHousekeepingIntervalMs,turnStallTimeoutMs:v.turnStallTimeoutMs},"daemon started");let t=Tt(),e=lu();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
104
104
  \u2551 Port: ${String(v.port).padEnd(28)}\u2551
105
- \u2551 ID: ${F.daemonId.slice(0,28).padEnd(28)}\u2551
105
+ \u2551 ID: ${D.daemonId.slice(0,28).padEnd(28)}\u2551
106
106
  \u2551 Host: ${t.canonicalHost.slice(0,28).padEnd(28)}\u2551
107
107
  \u255A\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\u255D
108
108
 
@@ -112,7 +112,7 @@ Fallbacks: ${t.fallbackHosts.join(", ")||"(none)"}
112
112
 
113
113
  Claude: ${v.claudePath}
114
114
  Codex: ${v.codexPath}
115
- `);try{let n=await nu.default.toString(JSON.stringify(e),{type:"terminal",small:!0});Vt(`
115
+ `);try{let n=await ou.default.toString(JSON.stringify(e),{type:"terminal",small:!0});Yt(`
116
116
  Scan this QR code with Vibelet app:
117
117
 
118
118
  ${n}