vibelet 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +38 -38
- 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 hu=Object.create;var hi=Object.defineProperty;var gu=Object.getOwnPropertyDescriptor;var mu=Object.getOwnPropertyNames;var yu=Object.getPrototypeOf,Su=Object.prototype.hasOwnProperty;var y=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var vu=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of mu(e))!Su.call(t,s)&&s!==n&&hi(t,s,{get:()=>e[s],enumerable:!(r=gu(e,s))||r.enumerable});return t};var Ve=(t,e,n)=>(n=t!=null?hu(yu(t)):{},vu(e||!t||!t.__esModule?hi(n,"default",{value:t,enumerable:!0}):n,t));var de=y((xm,yi)=>{"use strict";var gi=["nodebuffer","arraybuffer","fragments"],mi=typeof Blob<"u";mi&&gi.push("blob");yi.exports={BINARY_TYPES:gi,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:mi,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var kt=y((Tm,pn)=>{"use strict";var{EMPTY_BUFFER:_u}=de(),yr=Buffer[Symbol.species];function bu(t,e){if(t.length===0)return _u;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 yr(n.buffer,n.byteOffset,r):n}function Si(t,e,n,r,s){for(let i=0;i<s;i++)n[r+i]=t[i]^e[i&3]}function vi(t,e){for(let n=0;n<t.length;n++)t[n]^=e[n&3]}function wu(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function Sr(t){if(Sr.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new yr(t):ArrayBuffer.isView(t)?e=new yr(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),Sr.readOnly=!1),e}pn.exports={concat:bu,mask:Si,toArrayBuffer:wu,toBuffer:Sr,unmask:vi};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");pn.exports.mask=function(e,n,r,s,i){i<48?Si(e,n,r,s,i):t.mask(e,n,r,s,i)},pn.exports.unmask=function(e,n){e.length<32?vi(e,n):t.unmask(e,n)}}catch{}});var wi=y((km,bi)=>{"use strict";var _i=Symbol("kDone"),vr=Symbol("kRun"),_r=class{constructor(e){this[_i]=()=>{this.pending--,this[vr]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[vr]()}[vr](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[_i])}}};bi.exports=_r});var Ct=y((Em,Ti)=>{"use strict";var Et=require("zlib"),Ii=kt(),Iu=wi(),{kStatusCode:Ai}=de(),Au=Buffer[Symbol.species],xu=Buffer.from([0,0,255,255]),gn=Symbol("permessage-deflate"),fe=Symbol("total-length"),Ye=Symbol("callback"),ye=Symbol("buffers"),Je=Symbol("error"),hn,br=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,!hn){let s=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;hn=new Iu(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){hn.add(s=>{this._decompress(e,n,(i,o)=>{s(),r(i,o)})})}compress(e,n,r){hn.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[gn]=this,this._inflate[fe]=0,this._inflate[ye]=[],this._inflate.on("error",ku),this._inflate.on("data",xi)}this._inflate[Ye]=r,this._inflate.write(e),n&&this._inflate.write(xu),this._inflate.flush(()=>{let i=this._inflate[Je];if(i){this._inflate.close(),this._inflate=null,r(i);return}let o=Ii.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",Tu)}this._deflate[Ye]=r,this._deflate.write(e),this._deflate.flush(Et.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=Ii.concat(this._deflate[ye],this._deflate[fe]);n&&(i=new Au(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)})}};Ti.exports=br;function Tu(t){this[ye].push(t),this[fe]+=t.length}function xi(t){if(this[fe]+=t.length,this[gn]._maxPayload<1||this[fe]<=this[gn]._maxPayload){this[ye].push(t);return}this[Je]=new RangeError("Max payload size exceeded"),this[Je].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[Je][Ai]=1009,this.removeListener("data",xi),this.reset()}function ku(t){if(this[gn]._inflate=null,this[Je]){this[Ye](this[Je]);return}t[Ai]=1007,this[Ye](t)}});var Ke=y((Cm,mn)=>{"use strict";var{isUtf8:ki}=require("buffer"),{hasBlob:Eu}=de(),Cu=[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 Pu(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function wr(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 Ru(t){return Eu&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}mn.exports={isBlob:Ru,isValidStatusCode:Pu,isValidUTF8:wr,tokenChars:Cu};if(ki)mn.exports.isValidUTF8=function(t){return t.length<24?wr(t):ki(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");mn.exports.isValidUTF8=function(e){return e.length<32?wr(e):t(e)}}catch{}});var kr=y((Pm,Ni)=>{"use strict";var{Writable:Lu}=require("stream"),Ei=Ct(),{BINARY_TYPES:Mu,EMPTY_BUFFER:Ci,kStatusCode:Nu,kWebSocket:Ou}=de(),{concat:Ir,toArrayBuffer:Bu,unmask:Du}=kt(),{isValidStatusCode:Hu,isValidUTF8:Pi}=Ke(),yn=Buffer[Symbol.species],K=0,Ri=1,Li=2,Mi=3,Ar=4,xr=5,Sn=6,Tr=class extends Lu{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||Mu[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[Ou]=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 yn(r.buffer,r.byteOffset+e,r.length-e),new yn(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 yn(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 Ri:this.getPayloadLength16(e);break;case Li:this.getPayloadLength64(e);break;case Mi:this.getMask();break;case Ar:this.getData(e);break;case xr:case Sn: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[Ei.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=Ri:this._payloadLength===127?this._state=Li: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=Mi:this._state=Ar}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Ar}getData(e){let n=Ci;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&&Du(n,this._mask)}if(this._opcode>7){this.controlMessage(n,e);return}if(this._compressed){this._state=xr,this.decompress(n,e);return}n.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(n)),this.dataMessage(e)}decompress(e,n){this._extensions[Ei.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=Ir(r,n):this._binaryType==="arraybuffer"?s=Bu(Ir(r,n)):this._binaryType==="blob"?s=new Blob(r):s=r,this._allowSynchronousEvents?(this.emit("message",s,!0),this._state=K):(this._state=Sn,setImmediate(()=>{this.emit("message",s,!0),this._state=K,this.startLoop(e)}))}else{let s=Ir(r,n);if(!this._skipUTF8Validation&&!Pi(s)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(i);return}this._state===xr||this._allowSynchronousEvents?(this.emit("message",s,!1),this._state=K):(this._state=Sn,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,Ci),this.end();else{let r=e.readUInt16BE(0);if(!Hu(r)){let i=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");n(i);return}let s=new yn(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Pi(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=Sn,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[Nu]=s,o}};Ni.exports=Tr});var Pr=y((Lm,Di)=>{"use strict";var{Duplex:Rm}=require("stream"),{randomFillSync:Fu}=require("crypto"),Oi=Ct(),{EMPTY_BUFFER:Uu,kWebSocket:qu,NOOP:ju}=de(),{isBlob:Xe,isValidStatusCode:Wu}=Ke(),{mask:Bi,toBuffer:Le}=kt(),X=Symbol("kByteLength"),Gu=Buffer.alloc(4),vn=8*1024,Me,Qe=vn,te=0,$u=1,zu=2,Er=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=ju,this[qu]=void 0}static frame(e,n){let r,s=!1,i=2,o=!1;n.mask&&(r=n.maskBuffer||Gu,n.generateMask?n.generateMask(r):(Qe===vn&&(Me===void 0&&(Me=Buffer.alloc(vn)),Fu(Me,0,vn),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?(Bi(e,r,c,i,a),[c]):(Bi(e,r,e,0,a),[c,e])):[c,e]}close(e,n,r,s){let i;if(e===void 0)i=Uu;else{if(typeof e!="number"||!Wu(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[Oi.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=zu,e.arrayBuffer().then(i=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(Cr,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(Vu,this,i,s)})}dispatch(e,n,r,s){if(!n){this.sendFrame(t.frame(e,r),s);return}let i=this._extensions[Oi.extensionName];this._bufferedBytes+=r[X],this._state=$u,i.compress(e,r.fin,(o,a)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");Cr(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)}};Di.exports=Er;function Cr(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 Vu(t,e,n){Cr(t,e,n),t.onerror(e)}});var zi=y((Mm,$i)=>{"use strict";var{kForOnEventAttribute:Pt,kListener:Rr}=de(),Hi=Symbol("kCode"),Fi=Symbol("kData"),Ui=Symbol("kError"),qi=Symbol("kMessage"),ji=Symbol("kReason"),Ze=Symbol("kTarget"),Wi=Symbol("kType"),Gi=Symbol("kWasClean"),pe=class{constructor(e){this[Ze]=null,this[Wi]=e}get target(){return this[Ze]}get type(){return this[Wi]}};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[Hi]=n.code===void 0?0:n.code,this[ji]=n.reason===void 0?"":n.reason,this[Gi]=n.wasClean===void 0?!1:n.wasClean}get code(){return this[Hi]}get reason(){return this[ji]}get wasClean(){return this[Gi]}};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[Ui]=n.error===void 0?null:n.error,this[qi]=n.message===void 0?"":n.message}get error(){return this[Ui]}get message(){return this[qi]}};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[Fi]=n.data===void 0?null:n.data}get data(){return this[Fi]}};Object.defineProperty(Rt.prototype,"data",{enumerable:!0});var Yu={addEventListener(t,e,n={}){for(let s of this.listeners(t))if(!n[Pt]&&s[Rr]===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,_n(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,_n(e,this,a)};else if(t==="error")r=function(i){let o=new et("error",{error:i,message:i.message});o[Ze]=this,_n(e,this,o)};else if(t==="open")r=function(){let i=new pe("open");i[Ze]=this,_n(e,this,i)};else return;r[Pt]=!!n[Pt],r[Rr]=e,n.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let n of this.listeners(t))if(n[Rr]===e&&!n[Pt]){this.removeListener(t,n);break}}};$i.exports={CloseEvent:Ne,ErrorEvent:et,Event:pe,EventTarget:Yu,MessageEvent:Rt};function _n(t,e,n){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,n):t.call(e,n)}});var Lr=y((Nm,Vi)=>{"use strict";var{tokenChars:Lt}=Ke();function oe(t,e,n){t[e]===void 0?t[e]=[n]:t[e].push(n)}function Ju(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 Ku(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(", ")}Vi.exports={format:Ku,parse:Ju}});var An=y((Dm,io)=>{"use strict";var Xu=require("events"),Qu=require("https"),Zu=require("http"),Ki=require("net"),ed=require("tls"),{randomBytes:td,createHash:nd}=require("crypto"),{Duplex:Om,Readable:Bm}=require("stream"),{URL:Mr}=require("url"),Se=Ct(),rd=kr(),sd=Pr(),{isBlob:id}=Ke(),{BINARY_TYPES:Yi,CLOSE_TIMEOUT:od,EMPTY_BUFFER:bn,GUID:ad,kForOnEventAttribute:Nr,kListener:ld,kStatusCode:cd,kWebSocket:O,NOOP:Xi}=de(),{EventTarget:{addEventListener:ud,removeEventListener:dd}}=zi(),{format:fd,parse:pd}=Lr(),{toBuffer:hd}=kt(),Qi=Symbol("kAborted"),Or=[8,13],he=["CONNECTING","OPEN","CLOSING","CLOSED"],gd=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,T=class t extends Xu{constructor(e,n,r){super(),this._binaryType=Yi[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=bn,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){Yi.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 rd({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),i=new sd(e,this._extensions,r.generateMask);this._receiver=s,this._sender=i,this._socket=e,s[O]=this,i[O]=this,e[O]=this,s.on("conclude",Sd),s.on("drain",vd),s.on("error",_d),s.on("message",bd),s.on("ping",wd),s.on("pong",Id),i.onerror=Ad,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),n.length>0&&e.unshift(n),e.on("close",no),e.on("data",In),e.on("end",ro),e.on("error",so),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())}),to(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){Br(this,e,r);return}n===void 0&&(n=!this._isServer),this._sender.ping(e||bn,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){Br(this,e,r);return}n===void 0&&(n=!this._isServer),this._sender.pong(e||bn,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){Br(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||bn,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[Nr])return e[ld];return null},set(e){for(let n of this.listeners(t))if(n[Nr]){this.removeListener(t,n);break}typeof e=="function"&&this.addEventListener(t,e,{[Nr]:!0})}})});T.prototype.addEventListener=ud;T.prototype.removeEventListener=dd;io.exports=T;function Zi(t,e,n,r){let s={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:od,protocolVersion:Or[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,!Or.includes(s.protocolVersion))throw new RangeError(`Unsupported protocol version: ${s.protocolVersion} (supported versions: ${Or.join(", ")})`);let i;if(e instanceof Mr)i=e;else try{i=new Mr(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;wn(t,g);return}let c=o?443:80,u=td(16).toString("base64"),d=o?Qu.request:Zu.request,f=new Set,p;if(s.createConnection=s.createConnection||(o?yd:md),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"]=fd({[Se.extensionName]:p.offer()})),n.length){for(let g of n){if(typeof g!="string"||!gd.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[Qi]||(h=t._req=null,wn(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 P;try{P=new Mr(m,e)}catch{let E=new SyntaxError(`Invalid URL: ${m}`);wn(t,E);return}Zi(t,P,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 P=g.headers.upgrade;if(P===void 0||P.toLowerCase()!=="websocket"){V(t,m,"Invalid Upgrade header");return}let se=nd("sha1").update(u+ad).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"],N;if(E!==void 0?f.size?f.has(E)||(N="Server sent an invalid subprotocol"):N="Server sent a subprotocol but none was requested":f.size&&(N="Server sent no subprotocol"),N){V(t,m,N);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=pd(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 wn(t,e){t._readyState=T.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function md(t){return t.path=t.socketPath,Ki.connect(t)}function yd(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=Ki.isIP(t.host)?"":t.host),ed.connect(t)}function V(t,e,n){t._readyState=T.CLOSING;let r=new Error(n);Error.captureStackTrace(r,V),e.setHeader?(e[Qi]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(wn,t,r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Br(t,e,n){if(e){let r=id(e)?e.size:hd(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 Sd(t,e){let n=this[O];n._closeFrameReceived=!0,n._closeMessage=e,n._closeCode=t,n._socket[O]!==void 0&&(n._socket.removeListener("data",In),process.nextTick(eo,n._socket),t===1005?n.close():n.close(t,e))}function vd(){let t=this[O];t.isPaused||t._socket.resume()}function _d(t){let e=this[O];e._socket[O]!==void 0&&(e._socket.removeListener("data",In),process.nextTick(eo,e._socket),e.close(t[cd])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function Ji(){this[O].emitClose()}function bd(t,e){this[O].emit("message",t,e)}function wd(t){let e=this[O];e._autoPong&&e.pong(t,!this._isServer,Xi),e.emit("ping",t)}function Id(t){this[O].emit("pong",t)}function eo(t){t.resume()}function Ad(t){let e=this[O];e.readyState!==T.CLOSED&&(e.readyState===T.OPEN&&(e._readyState=T.CLOSING,to(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function to(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function no(){let t=this[O];if(this.removeListener("close",no),this.removeListener("data",In),this.removeListener("end",ro),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[O]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",Ji),t._receiver.on("finish",Ji))}function In(t){this[O]._receiver.write(t)||this.pause()}function ro(){let t=this[O];t._readyState=T.CLOSING,t._receiver.end(),this.end()}function so(){let t=this[O];this.removeListener("error",so),this.on("error",Xi),t&&(t._readyState=T.CLOSING,this.destroy())}});var co=y((Fm,lo)=>{"use strict";var Hm=An(),{Duplex:xd}=require("stream");function oo(t){t.emit("close")}function Td(){!this.destroyed&&this._writableState.finished&&this.destroy()}function ao(t){this.removeListener("error",ao),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function kd(t,e){let n=!0,r=new xd({...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(oo,r);return}let o=!1;t.once("error",function(l){o=!0,i(l)}),t.once("close",function(){o||i(s),process.nextTick(oo,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",Td),r.on("error",ao),r}lo.exports=kd});var fo=y((Um,uo)=>{"use strict";var{tokenChars:Ed}=Ke();function Cd(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&&Ed[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}uo.exports={parse:Cd}});var vo=y((jm,So)=>{"use strict";var Pd=require("events"),xn=require("http"),{Duplex:qm}=require("stream"),{createHash:Rd}=require("crypto"),po=Lr(),Oe=Ct(),Ld=fo(),Md=An(),{CLOSE_TIMEOUT:Nd,GUID:Od,kWebSocket:Bd}=de(),Dd=/^[+/0-9A-Za-z]{22}==$/,ho=0,go=1,yo=2,Dr=class extends Pd{constructor(e,n){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:Nd,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Md,...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=xn.createServer((r,s)=>{let i=xn.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=Hd(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=ho}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===yo){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!==go)if(this._state=go,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",mo);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||!Dd.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=Ld.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=po.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[Bd])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>ho)return Nt(i,503);let c=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Rd("sha1").update(n+Od).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=po.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",
|
|
3
|
+
`)),i.removeListener("error",mo),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)}};So.exports=Dr;function Hd(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=yo,t.emit("close")}function mo(){this.destroy()}function Nt(t,e,n,r){n=n||xn.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} ${xn.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
|
|
8
|
-
]))+`;ge.KANJI=new RegExp(
|
|
9
|
-
Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),t.put(n,13)}};
|
|
10
|
-
Suggested mode is: `+I.toString(r));switch(n===I.KANJI&&!
|
|
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 Fr=y((Gm,_o)=>{_o.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var ve=y(De=>{var Ur,Wd=[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 Wd[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.');Ur=e};De.isKanjiModeEnabled=function(){return typeof Ur<"u"};De.toSJIS=function(e){return Ur(e)}});var Tn=y(Q=>{Q.L={bit:1};Q.M={bit:0};Q.Q={bit:3};Q.H={bit:2};function Gd(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 Gd(e)}catch{return n}}});var Io=y((Vm,wo)=>{function bo(){this.buffer=[],this.length=0}bo.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++}};wo.exports=bo});var xo=y((Ym,Ao)=>{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]};Ao.exports=Ot});var To=y(kn=>{var $d=ve().getSymbolSize;kn.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=$d(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 Co=y(Eo=>{var zd=ve().getSymbolSize,ko=7;Eo.getPositions=function(e){let n=zd(e);return[[0,0],[n-ko,0],[0,n-ko]]}});var Po=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 Vd(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,Vd(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 jr=y(qr=>{var _e=Tn(),En=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],Cn=[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];qr.getBlocksCount=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}};qr.getTotalCodewordsCount=function(e,n){switch(n){case _e.L:return Cn[(e-1)*4+0];case _e.M:return Cn[(e-1)*4+1];case _e.Q:return Cn[(e-1)*4+2];case _e.H:return Cn[(e-1)*4+3];default:return}}});var Ro=y(Rn=>{var Bt=new Uint8Array(512),Pn=new Uint8Array(256);(function(){let e=1;for(let n=0;n<255;n++)Bt[n]=e,Pn[e]=n,e<<=1,e&256&&(e^=285);for(let n=255;n<512;n++)Bt[n]=Bt[n-255]})();Rn.log=function(e){if(e<1)throw new Error("log("+e+")");return Pn[e]};Rn.exp=function(e){return Bt[e]};Rn.mul=function(e,n){return e===0||n===0?0:Bt[Pn[e]+Pn[n]]}});var Lo=y(Dt=>{var Wr=Ro();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]^=Wr.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]^=Wr.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,Wr.exp(r)]));return n}});var Oo=y((ty,No)=>{var Mo=Lo();function Gr(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}Gr.prototype.initialize=function(e){this.degree=e,this.genPoly=Mo.generateECPolynomial(this.degree)};Gr.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=Mo.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};No.exports=Gr});var $r=y(Bo=>{Bo.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var zr=y(ge=>{var Do="[0-9]+",Yd="[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 Jd="(?:(?![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(Jd,"g");ge.NUMERIC=new RegExp(Do,"g");ge.ALPHANUMERIC=new RegExp(Yd,"g");var Kd=new RegExp("^"+Ht+"$"),Xd=new RegExp("^"+Do+"$"),Qd=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");ge.testKanji=function(e){return Kd.test(e)};ge.testNumeric=function(e){return Xd.test(e)};ge.testAlphanumeric=function(e){return Qd.test(e)}});var be=y(L=>{var Zd=$r(),Vr=zr();L.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};L.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};L.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};L.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};L.MIXED={bit:-1};L.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]};L.getBestModeForData=function(e){return Vr.testNumeric(e)?L.NUMERIC:Vr.testAlphanumeric(e)?L.ALPHANUMERIC:Vr.testKanji(e)?L.KANJI:L.BYTE};L.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};L.isValid=function(e){return e&&e.bit&&e.ccBits};function ef(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"numeric":return L.NUMERIC;case"alphanumeric":return L.ALPHANUMERIC;case"kanji":return L.KANJI;case"byte":return L.BYTE;default:throw new Error("Unknown mode: "+t)}}L.from=function(e,n){if(L.isValid(e))return e;try{return ef(e)}catch{return n}}});var jo=y(Fe=>{var Ln=ve(),tf=jr(),Ho=Tn(),we=be(),Yr=$r(),Uo=7973,Fo=Ln.getBCHDigit(Uo);function nf(t,e,n){for(let r=1;r<=40;r++)if(e<=Fe.getCapacity(r,n,t))return r}function qo(t,e){return we.getCharCountIndicator(t,e)+4}function rf(t,e){let n=0;return t.forEach(function(r){let s=qo(r.mode,e);n+=s+r.getBitsLength()}),n}function sf(t,e){for(let n=1;n<=40;n++)if(rf(t,n)<=Fe.getCapacity(n,e,we.MIXED))return n}Fe.from=function(e,n){return Yr.isValid(e)?parseInt(e,10):n};Fe.getCapacity=function(e,n,r){if(!Yr.isValid(e))throw new Error("Invalid QR Code version");typeof r>"u"&&(r=we.BYTE);let s=Ln.getSymbolTotalCodewords(e),i=tf.getTotalCodewordsCount(e,n),o=(s-i)*8;if(r===we.MIXED)return o;let a=o-qo(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=Ho.from(n,Ho.M);if(Array.isArray(e)){if(e.length>1)return sf(e,s);if(e.length===0)return 1;r=e[0]}else r=e;return nf(r.mode,r.getLength(),s)};Fe.getEncodedBits=function(e){if(!Yr.isValid(e)||e<7)throw new Error("Invalid QR Code version");let n=e<<12;for(;Ln.getBCHDigit(n)-Fo>=0;)n^=Uo<<Ln.getBCHDigit(n)-Fo;return e<<12|n}});var zo=y($o=>{var Jr=ve(),Go=1335,of=21522,Wo=Jr.getBCHDigit(Go);$o.getEncodedBits=function(e,n){let r=e.bit<<3|n,s=r<<10;for(;Jr.getBCHDigit(s)-Wo>=0;)s^=Go<<Jr.getBCHDigit(s)-Wo;return(r<<10|s)^of}});var Yo=y((ay,Vo)=>{var af=be();function tt(t){this.mode=af.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))};Vo.exports=tt});var Ko=y((ly,Jo)=>{var lf=be(),Kr=["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=lf.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=Kr.indexOf(this.data[n])*45;r+=Kr.indexOf(this.data[n+1]),e.put(r,11)}this.data.length%2&&e.put(Kr.indexOf(this.data[n]),6)};Jo.exports=nt});var Qo=y((cy,Xo)=>{var cf=be();function rt(t){this.mode=cf.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)};Xo.exports=rt});var ea=y((uy,Zo)=>{var uf=be(),df=ve();function st(t){this.mode=uf.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=df.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 ta=y((dy,Xr)=>{"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 Xr<"u"&&(Xr.exports=Ft)});var ca=y(it=>{var I=be(),sa=Yo(),ia=Ko(),oa=Qo(),aa=ea(),Ut=zr(),Mn=ve(),ff=ta();function na(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 la(t){let e=qt(Ut.NUMERIC,I.NUMERIC,t),n=qt(Ut.ALPHANUMERIC,I.ALPHANUMERIC,t),r,s;return Mn.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 Qr(t,e){switch(e){case I.NUMERIC:return sa.getBitsLength(t);case I.ALPHANUMERIC:return ia.getBitsLength(t);case I.KANJI:return aa.getBitsLength(t);case I.BYTE:return oa.getBitsLength(t)}}function pf(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 hf(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:na(r.data)}]);break;case I.BYTE:e.push([{data:r.data,mode:I.BYTE,length:na(r.data)}])}}return e}function gf(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]=Qr(n[f].lastCount+c.length,c.mode)-Qr(n[f].lastCount,c.mode),n[f].lastCount+=c.length):(n[f]&&(n[f].lastCount=c.length),r[f][u]=Qr(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 ra(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&&!Mn.isKanjiModeEnabled()&&(n=I.BYTE),n){case I.NUMERIC:return new sa(t);case I.ALPHANUMERIC:return new ia(t);case I.KANJI:return new aa(t);case I.BYTE:return new oa(t)}}it.fromArray=function(e){return e.reduce(function(n,r){return typeof r=="string"?n.push(ra(r,null)):r.data&&n.push(ra(r.data,r.mode)),n},[])};it.fromString=function(e,n){let r=la(e,Mn.isKanjiModeEnabled()),s=hf(r),i=gf(s,n),o=ff.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(pf(a))};it.rawSplit=function(e){return it.fromArray(la(e,Mn.isKanjiModeEnabled()))}});var ss=y(ua=>{var On=ve(),Zr=Tn(),mf=Io(),yf=xo(),Sf=To(),vf=Co(),ns=Po(),rs=jr(),_f=Oo(),Nn=jo(),bf=zo(),wf=be(),es=ca();function If(t,e){let n=t.size,r=vf.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 Af(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 xf(t,e){let n=Sf.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 Tf(t,e){let n=t.size,r=Nn.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 ts(t,e,n){let r=t.size,s=bf.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 kf(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 Ef(t,e,n){let r=new mf;n.forEach(function(l){r.put(l.mode.bit,4),r.put(l.getLength(),wf.getCharCountIndicator(l.mode,t)),l.write(r)});let s=On.getSymbolTotalCodewords(t),i=rs.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 Cf(r,t,e)}function Cf(t,e,n){let r=On.getSymbolTotalCodewords(e),s=rs.getTotalCodewordsCount(e,n),i=r-s,o=rs.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 _f(f),h=0,g=new Array(o),m=new Array(o),S=0,P=new Uint8Array(t.buffer);for(let ie=0;ie<o;ie++){let ze=ie<l?u:d;g[ie]=P.slice(h,h+ze),m[ie]=p.encode(g[ie]),h+=ze,S=Math.max(S,ze)}let se=new Uint8Array(r),E=0,N,J;for(N=0;N<S;N++)for(J=0;J<o;J++)N<g[J].length&&(se[E++]=g[J][N]);for(N=0;N<f;N++)for(J=0;J<o;J++)se[E++]=m[J][N];return se}function Pf(t,e,n,r){let s;if(Array.isArray(t))s=es.fromArray(t);else if(typeof t=="string"){let c=e;if(!c){let u=es.rawSplit(t);c=Nn.getBestVersionForData(u,n)}s=es.fromString(t,c||40)}else throw new Error("Invalid data");let i=Nn.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+=
|
|
15
|
-
`}return a+=l.slice(0,-1),typeof n=="function"&&n(null,a),a};
|
|
13
|
+
`);let o=Ef(e,n,s),a=On.getSymbolSize(e),l=new yf(a);return If(l,e),Af(l),xf(l,e),ts(l,n,0),e>=7&&Tf(l,e),kf(l,o),isNaN(r)&&(r=ns.getBestMask(l,ts.bind(null,l,n))),ns.applyMask(r,l),ts(l,n,r),{modules:l,version:e,errorCorrectionLevel:n,maskPattern:r,segments:s}}ua.create=function(e,n){if(typeof e>"u"||e==="")throw new Error("No input text");let r=Zr.M,s,i;return typeof n<"u"&&(r=Zr.from(n.errorCorrectionLevel,Zr.M),s=Nn.from(n.version),i=ns.from(n.maskPattern),n.toSJISFunc&&On.setToSJISFunction(n.toSJISFunc)),Pf(e,s,r,i)}});var is=y((hy,fa)=>{"use strict";var Rf=require("util"),da=require("stream"),ne=fa.exports=function(){da.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};Rf.inherits(ne,da);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 as=y(os=>{"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]}];os.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};os.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 ls=y((my,pa)=>{"use strict";pa.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 cs=y((yy,ga)=>{"use strict";var Lf=as(),Mf=ls();function ha(t,e,n){let r=t*e;return n!==8&&(r=Math.ceil(r/(8/n))),r}var ot=ga.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=Lf.getImagePasses(n,r);for(let l=0;l<a.length;l++)this._images.push({byteWidth:ha(a[l].width,i,o),height:a[l].height,lineIndex:0})}else this._images.push({byteWidth:ha(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=Mf(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 Sa=y((Sy,ya)=>{"use strict";var Nf=require("util"),ma=is(),Of=cs(),Bf=ya.exports=function(t){ma.call(this);let e=[],n=this;this._filter=new Of(t,{read:this.read.bind(this),write:function(r){e.push(r)},complete:function(){n.emit("complete",Buffer.concat(e))}}),this._filter.start()};Nf.inherits(Bf,ma)});var at=y((vy,va)=>{"use strict";va.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 fs=y((_y,_a)=>{"use strict";var us=[];(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;us[t]=e}})();var ds=_a.exports=function(){this._crc=-1};ds.prototype.write=function(t){for(let e=0;e<t.length;e++)this._crc=us[(this._crc^t[e])&255]^this._crc>>>8;return!0};ds.prototype.crc32=function(){return this._crc^-1};ds.crc32=function(t){let e=-1;for(let n=0;n<t.length;n++)e=us[(e^t[n])&255]^e>>>8;return e^-1}});var ps=y((by,ba)=>{"use strict";var M=at(),Df=fs(),B=ba.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[M.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[M.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[M.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[M.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[M.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[M.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(){}};B.prototype.start=function(){this.read(M.PNG_SIGNATURE.length,this._parseSignature.bind(this))};B.prototype._parseSignature=function(t){let e=M.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))};B.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!==M.TYPE_IHDR){this.error(new Error("Expected IHDR on beggining"));return}if(this._crc=new Df,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))};B.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};B.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};B.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))};B.prototype._handleIHDR=function(t){this.read(t,this._parseIHDR.bind(this))};B.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 M.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=M.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:n,depth:r,interlace:!!a,palette:!!(s&M.COLORTYPE_PALETTE),color:!!(s&M.COLORTYPE_COLOR),alpha:!!(s&M.COLORTYPE_ALPHA),bpp:l,colorType:s}),this._handleChunkEnd()};B.prototype._handlePLTE=function(t){this.read(t,this._parsePLTE.bind(this))};B.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()};B.prototype._handleTRNS=function(t){this.simpleTransparency(),this.read(t,this._parseTRNS.bind(this))};B.prototype._parseTRNS=function(t){if(this._crc.write(t),this._colorType===M.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===M.COLORTYPE_GRAYSCALE&&this.transColor([t.readUInt16BE(0)]),this._colorType===M.COLORTYPE_COLOR&&this.transColor([t.readUInt16BE(0),t.readUInt16BE(2),t.readUInt16BE(4)]),this._handleChunkEnd()};B.prototype._handleGAMA=function(t){this.read(t,this._parseGAMA.bind(this))};B.prototype._parseGAMA=function(t){this._crc.write(t),this.gamma(t.readUInt32BE(0)/M.GAMMA_DIVISION),this._handleChunkEnd()};B.prototype._handleIDAT=function(t){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-t,this._parseIDAT.bind(this,t))};B.prototype._parseIDAT=function(t,e){if(this._crc.write(e),this._colorType===M.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()};B.prototype._handleIEND=function(t){this.read(t,this._parseIEND.bind(this))};B.prototype._parseIEND=function(t){this._crc.write(t),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}});var hs=y(Ia=>{"use strict";var wa=as(),Hf=[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]}],Ff=[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 Uf(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 qf(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);Hf[r](e,s,d,i),i+=r}return i}function jf(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);Ff[r](e,d,f,i)}s.resetAfterLine()}}Ia.dataToBitMap=function(t,e){let n=e.width,r=e.height,s=e.depth,i=e.bpp,o=e.interlace,a;s!==8&&(a=Uf(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=wa.getImagePasses(n,r),f=wa.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=qf(d[p],l,f,i,t,u):jf(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 gs=y((Iy,Aa)=>{"use strict";function Wf(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 Gf(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 $f(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}}Aa.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?Wf(t,l,r,s,a):(o&&Gf(t,l,r,s,o),n!==8&&(n===16&&(l=Buffer.alloc(r*s*4)),$f(t,l,r,s,n))),l}});var ka=y((Ay,Ta)=>{"use strict";var zf=require("util"),ms=require("zlib"),xa=is(),Vf=Sa(),Yf=ps(),Jf=hs(),Kf=gs(),ae=Ta.exports=function(t){xa.call(this),this._parser=new Yf(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()};zf.inherits(ae,xa);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=ms.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,ms.Z_MIN_CHUNK);this._inflate=ms.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 Vf(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=Jf.dataToBitMap(t,this._bitmapInfo);e=Kf(n,this._bitmapInfo),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var Ca=y((xy,Ea)=>{"use strict";var Z=at();Ea.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 La=y((Ty,Ra)=>{"use strict";var Pa=ls();function Xf(t,e,n,r,s){for(let i=0;i<n;i++)r[s+i]=t[e+i]}function Qf(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 ep(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 tp(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 np(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 rp(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 sp(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 ip(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]-Pa(a,l,c);r[s+o]=u}}function op(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]-Pa(o,a,l);s+=Math.abs(c)}return s}var ap={0:Xf,1:Zf,2:tp,3:rp,4:ip},lp={0:Qf,1:ep,2:np,3:sp,4:op};Ra.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=lp[i[p]](t,l,o,s);h<f&&(u=i[p],f=h)}}c[a]=u,a++,ap[u](t,l,o,c,a,s),a+=o,l+=o}return c}});var ys=y((ky,Ma)=>{"use strict";var U=at(),cp=fs(),up=Ca(),dp=La(),fp=require("zlib"),Ae=Ma.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||fp.createDeflate,t.bitDepth=t.bitDepth||8,t.colorType=typeof t.colorType=="number"?t.colorType:U.COLORTYPE_COLOR_ALPHA,t.inputColorType=typeof t.inputColorType=="number"?t.inputColorType:U.COLORTYPE_COLOR_ALPHA,[U.COLORTYPE_GRAYSCALE,U.COLORTYPE_COLOR,U.COLORTYPE_COLOR_ALPHA,U.COLORTYPE_ALPHA].indexOf(t.colorType)===-1)throw new Error("option color type:"+t.colorType+" is not supported at present");if([U.COLORTYPE_GRAYSCALE,U.COLORTYPE_COLOR,U.COLORTYPE_COLOR_ALPHA,U.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=up(t,e,n,this._options),s=U.COLORTYPE_TO_BPP_MAP[this._options.colorType];return dp(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(cp.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*U.GAMMA_DIVISION),0),this._packChunk(U.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(U.TYPE_IHDR,n)};Ae.prototype.packIDAT=function(t){return this._packChunk(U.TYPE_IDAT,t)};Ae.prototype.packIEND=function(){return this._packChunk(U.TYPE_IEND,null)}});var Da=y((Ey,Ba)=>{"use strict";var pp=require("util"),Na=require("stream"),hp=at(),gp=ys(),Oa=Ba.exports=function(t){Na.call(this);let e=t||{};this._packer=new gp(e),this._deflate=this._packer.createDeflate(),this.readable=!0};pp.inherits(Oa,Na);Oa.prototype.pack=function(t,e,n,r){this.emit("data",Buffer.from(hp.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 Wa=y((jt,ja)=>{"use strict";var Ha=require("assert").ok,lt=require("zlib"),mp=require("util"),Fa=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 yp(t){return new Ue(t)}function Ua(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(Ha(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}Ha(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>=Fa)throw Ua(this),new RangeError("Cannot create final Buffer. It would be larger than 0x"+Fa.toString(16)+" bytes");let p=Buffer.concat(l,c);return Ua(this),p};mp.inherits(Ue,lt.Inflate);function Sp(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 qa(t,e){return Sp(new Ue(e),t)}ja.exports=jt=qa;jt.Inflate=Ue;jt.createInflate=yp;jt.inflateSync=qa});var Ss=y((Cy,$a)=>{"use strict";var Ga=$a.exports=function(t){this._buffer=t,this._reads=[]};Ga.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})};Ga.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 Va=y(za=>{"use strict";var vp=Ss(),_p=cs();za.process=function(t,e){let n=[],r=new vp(t);return new _p(e,{read:r.read.bind(r),write:function(i){n.push(i)},complete:function(){}}).start(),r.process(),Buffer.concat(n)}});var Xa=y((Ry,Ka)=>{"use strict";var Ya=!0,Ja=require("zlib"),bp=Wa();Ja.deflateSync||(Ya=!1);var wp=Ss(),Ip=Va(),Ap=ps(),xp=hs(),Tp=gs();Ka.exports=function(t,e){if(!Ya)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 wp(t);if(new Ap(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=Ja.inflateSync(g);else{let N=((s.width*s.bpp*s.depth+7>>3)+1)*s.height;m=bp(g,{chunkSize:N,maxLength:N})}if(g=null,!m||!m.length)throw new Error("bad png - invalid inflate data response");let S=Ip.process(m,s);g=null;let P=xp.dataToBitMap(S,s);S=null;let se=Tp(P,s);return s.data=se,s.gamma=c||0,s}});var tl=y((Ly,el)=>{"use strict";var Qa=!0,Za=require("zlib");Za.deflateSync||(Qa=!1);var kp=at(),Ep=ys();el.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=e||{},r=new Ep(n),s=[];s.push(Buffer.from(kp.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 nl=y(vs=>{"use strict";var Cp=Xa(),Pp=tl();vs.read=function(t,e){return Cp(t,e||{})};vs.write=function(t,e){return Pp(t,e)}});var il=y(sl=>{"use strict";var Rp=require("util"),rl=require("stream"),Lp=ka(),Mp=Da(),Np=nl(),q=sl.PNG=function(t){rl.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 Lp(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 Mp(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"))};Rp.inherits(q,rl);q.sync=Np;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 ol(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:ol(e.color.dark||"#000000ff"),light:ol(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 al=y(le=>{var Op=require("fs"),Bp=il().PNG,_s=Wt();le.render=function(e,n){let r=_s.getOptions(n),s=r.rendererOpts,i=_s.getImageWidth(e.modules.size,r);s.width=i,s.height=i;let o=new Bp(s);return _s.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=Op.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 ll=y(Bn=>{var Dp=Wt(),Hp={WW:" ",WB:"\u2584",BB:"\u2588",BW:"\u2580"},Fp={BB:" ",BW:"\u2584",WW:"\u2588",WB:"\u2580"};function Up(t,e,n){return t&&e?n.BB:t&&!e?n.BW:!t&&e?n.WB:n.WW}Bn.render=function(t,e,n){let r=Dp.getOptions(e),s=Hp;(r.color.dark.hex==="#ffffff"||r.color.light.hex==="#000000")&&(s=Fp);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+=Up(f,p,s)}a+=c+`
|
|
15
|
+
`}return a+=l.slice(0,-1),typeof n=="function"&&n(null,a),a};Bn.renderToFile=function(e,n,r,s){typeof s>"u"&&(s=r,r=void 0);let i=require("fs"),o=Bn.render(n,r);i.writeFile(e,o,s)}});var ul=y(cl=>{cl.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
|
|
19
|
-
`+o,d=o;for(let f=-1;f<r+1;f+=2){for(let p=-1;p<r;p++)d+=c[
|
|
20
|
-
`;return typeof r=="function"&&r(null,f),f}});var
|
|
21
|
-
`):
|
|
22
|
-
`),
|
|
23
|
-
`)}catch{}}}function
|
|
24
|
-
`)){let s=r.indexOf("=");s>0&&(n[r.slice(0,s)]=r.slice(s+1))}return
|
|
25
|
-
`;
|
|
18
|
+
`,typeof n=="function"&&n(null,a),a}});var hl=y(pl=>{var qp="\x1B[47m",jp="\x1B[40m",bs="\x1B[37m",ws="\x1B[30m",je="\x1B[0m",Wp=qp+ws,Gp=jp+bs,$p=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"}},dl=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"},fl=function(t,e,n,r){return dl(t,e,n,r)+dl(t,e,n,r+1)};pl.render=function(t,e,n){let r=t.modules.size,s=t.modules.data,i=!!(e&&e.inverse),o=e&&e.inverse?Gp:Wp,c=$p(o,i?ws:bs,i?bs:ws),u=je+`
|
|
19
|
+
`+o,d=o;for(let f=-1;f<r+1;f+=2){for(let p=-1;p<r;p++)d+=c[fl(s,r,p,f)];d+=c[fl(s,r,r,f)]+u}return d+=je,typeof n=="function"&&n(null,d),d}});var ml=y(gl=>{var zp=ul(),Vp=hl();gl.render=function(t,e,n){return e&&e.small?Vp.render(t,e,n):zp.render(t,e,n)}});var As=y(Sl=>{var Yp=Wt();function yl(t,e){let n=t.a/255,r=e+'="'+t.hex+'"';return n<1?r+" "+e+'-opacity="'+n.toFixed(2).slice(1)+'"':r}function Is(t,e,n){let r=t+e;return typeof n<"u"&&(r+=" "+n),r}function Jp(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?Is("M",l+n,.5+c+n):Is("m",s,0),s=0,i=!1),l+1<e&&t[a+1]||(r+=Is("h",o),o=0)):s++}return r}Sl.render=function(e,n,r){let s=Yp.getOptions(n),i=e.modules.size,o=e.modules.data,a=i+s.margin*2,l=s.color.light.a?"<path "+yl(s.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",c="<path "+yl(s.color.dark,"stroke")+' d="'+Jp(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 vl=y(Dn=>{var Kp=As();Dn.render=Kp.render;Dn.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">'+Dn.render(n,r);i.writeFile(e,a,s)}});var _l=y(Hn=>{var xs=Wt();function Xp(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 Qp(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}Hn.render=function(e,n,r){let s=r,i=n;typeof s>"u"&&(!n||!n.getContext)&&(s=n,n=void 0),n||(i=Qp()),s=xs.getOptions(s);let o=xs.getImageWidth(e.modules.size,s),a=i.getContext("2d"),l=a.createImageData(o,o);return xs.qrToImageData(l.data,e,s),Xp(a,i,o),a.putImageData(l,0,0),i};Hn.renderToDataURL=function(e,n,r){let s=r;typeof s>"u"&&(!n||!n.getContext)&&(s=n,n=void 0),s||(s={});let i=Hn.render(e,n,s),o=s.type||"image/png",a=s.rendererOpts||{};return i.toDataURL(o,a.quality)}});var wl=y(Gt=>{var Zp=Fr(),Ts=ss(),bl=_l(),eh=As();function ks(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=Ts.create(n,r);l(t(u,e,r))}catch(u){c(u)}})}try{let l=Ts.create(n,r);s(null,t(l,e,r))}catch(l){s(l)}}Gt.create=Ts.create;Gt.toCanvas=ks.bind(null,bl.render);Gt.toDataURL=ks.bind(null,bl.renderToDataURL);Gt.toString=ks.bind(null,function(t,e,n){return eh.render(t,n)})});var Tl=y(xe=>{var Il=Fr(),Es=ss(),th=al(),Al=ll(),nh=ml(),xl=vl();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(Il())e=n||{},n=null;else throw new Error("Callback required as last argument");return{opts:e,cb:n}}function rh(t){return t.slice((t.lastIndexOf(".")-1>>>0)+2).toLowerCase()}function Fn(t){switch(t){case"svg":return xl;case"txt":case"utf8":return Al;case"png":case"image/png":default:return th}}function sh(t){switch(t){case"svg":return xl;case"terminal":return nh;case"utf8":default:return Al}}function zt(t,e,n){if(!n.cb)return new Promise(function(r,s){try{let i=Es.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=Es.create(e,n.opts);return t(r,n.opts,n.cb)}catch(r){n.cb(r)}}xe.create=Es.create;xe.toCanvas=wl().toCanvas;xe.toString=function(e,n,r){let s=$t(e,n,r),i=s.opts?s.opts.type:void 0,o=sh(i);return zt(o.render,e,s)};xe.toDataURL=function(e,n,r){let s=$t(e,n,r),i=Fn(s.opts.type);return zt(i.renderToDataURL,e,s)};xe.toBuffer=function(e,n,r){let s=$t(e,n,r),i=Fn(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&&!Il())throw new Error("Too few arguments provided");let i=$t(n,r,s),o=i.opts.type||rh(e),l=Fn(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=Fn("png").renderToFileStream.bind(null,e);zt(o,n,s)}});var El=y((zy,kl)=>{kl.exports=Tl()});var au=require("http");var Fd=Ve(co(),1),Ud=Ve(kr(),1),qd=Ve(Pr(),1),jd=Ve(An(),1),Hr=Ve(vo(),1);var Ge=require("fs/promises"),gr=require("path"),lu=require("os"),cu=Ve(El(),1);var dt=require("child_process"),ql=require("fs"),j=require("path"),Kt=require("os");var zn=require("fs");var Cl=require("os"),Y=require("path"),Vt=(0,Y.join)((0,Cl.homedir)(),".vibelet"),Un=(0,Y.join)(Vt,"logs"),Cs=(0,Y.join)(Vt,"data"),ih=(0,Y.join)(Vt,"runtime"),Vy=(0,Y.join)(ih,"current"),Pl=(0,Y.join)(Vt,"identity.json"),Rl=(0,Y.join)(Vt,"pairings.json"),Ll=(0,Y.join)(Cs,"push-subscriptions.json"),qn=(0,Y.join)(Cs,"sessions.json"),ct=(0,Y.join)(Cs,"audit.jsonl"),jn=(0,Y.join)(Un,"daemon.stdout.log"),Wn=(0,Y.join)(Un,"daemon.stderr.log");var Gn={stdout:!1,stderr:!1};function Ml(t){if(!t||typeof t!="object")return!1;let e=typeof t.code=="string"?t.code:"";return e==="EIO"||e==="EPIPE"}function oh(t){return!t.destroyed&&t.writable!==!1}function Nl(t,e){if(Gn[t])return!1;let n=t==="stderr"?process.stderr:process.stdout;if(!oh(n))return Gn[t]=!0,!1;try{return n.write(e,r=>{Ml(r)&&(Gn[t]=!0)}),!0}catch(r){return Ml(r)&&(Gn[t]=!0),!1}}function Yt(t){return Nl("stdout",t)}function $n(t){return Nl("stderr",t)}var Ol={debug:10,info:20,warn:30,error:40},ah=process.env.VIBE_LOG_LEVEL||"info";function lh(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}var Dl=!lh();if(Dl)try{(0,zn.mkdirSync)(Un,{recursive:!0})}catch{}function Bl(t,e,n){if(Ol[t]<Ol[ah])return;let r={level:t,ts:new Date().toISOString(),msg:n,...e},s=JSON.stringify(r);if(t==="error"||t==="warn"?$n(s+`
|
|
21
|
+
`):Yt(s+`
|
|
22
|
+
`),Dl){let i=t==="error"||t==="warn"?Wn:jn;try{(0,zn.appendFileSync)(i,s+`
|
|
23
|
+
`)}catch{}}}function Hl(t={}){function e(n,r,s){typeof r=="string"?Bl(n,t,r):Bl(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=>Hl({...t,...n})}}var R=Hl({module:"daemon"});var ch=["fnm_multishells"],uh=6e4,dh=R.child({module:"config"});function Te(t){return ch.some(e=>t.includes(e))}function Rs(){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 jl(){if(ut&&!Te(ut.PATH??""))return ut;for(let t of Rs())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 fh(t=jl()){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 Ps(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 Fl(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 Vn(){let t=jl(),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=fh(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:Vn()}).trim()||null}catch{return null}}function ph(t){for(let e of Rs())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 hh(){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 gh(){for(let t of hh())if(Jt(t))return t;try{let t=(0,dt.execFileSync)("/usr/bin/which",["claude"],{timeout:3e3,stdio:"pipe",encoding:"utf-8",env:Vn()}).trim();if(t&&!t.includes("cmux")&&Jt(t))return t}catch{}}function mh(){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 yh(){let t;for(let n of mh())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:Vn()}).trim();if(n&&Jt(n)){if(!Te(n))return n;t=t??n}}catch{}let e=ph("codex");if(e&&Jt(e)){if(!Te(e))return e;t=t??e}return t}function Wl(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>uh||!(0,ql.existsSync)(n)||Te(n))&&(n=t()??e,r=i,dh.info({name:e,path:n,transient:Te(n)},"binary resolved")),n}}var Sh=Wl(gh,"claude"),vh=Wl(yh,"codex");function _h(){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 Ul=_h();function bh(t,e){return{command:Rs()[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:Ul.host||process.env.VIBELET_CANONICAL_HOST||process.env.VIBELET_HOST||"",fallbackHosts:Ul["fallback-hosts"]||process.env.VIBELET_FALLBACK_HOSTS||"",relayUrl:process.env.VIBELET_RELAY_URL||"",idleTimeoutMs:Fl("VIBE_IDLE_TIMEOUT_MS",1800*1e3),turnStallTimeoutMs:Fl("VIBE_TURN_STALL_TIMEOUT_MS",300*1e3),auditMaxBytes:Ps("VIBE_AUDIT_MAX_BYTES",8*1024*1024),daemonLogMaxBytes:Ps("VIBE_DAEMON_LOG_MAX_BYTES",16*1024*1024),storageHousekeepingIntervalMs:Ps("VIBE_STORAGE_HOUSEKEEPING_INTERVAL_MS",300*1e3),get claudePath(){return Sh()},get codexPath(){return vh()},isTransientPath:Te,execViaLoginShell:bh,buildSanitizedEnv:Vn};var si=require("crypto"),qc=require("fs/promises");var Ql=require("child_process"),Zl=require("fs");var Yn=require("fs"),zl=require("path");var G=require("fs");function wh(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=wh(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 Gl(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 $l=!1,Ih=new Set(["ts","event","source","appEvent","level"]);function Ah(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}function xh(t={}){let e={};for(let[n,r]of Object.entries(t))Ih.has(n)||(e[n]=r);return e}function Th(t,e,n={},r){return{ts:r??new Date().toISOString(),event:"app.log",source:"app",appEvent:t,level:e,...xh(n)}}function kh(){$l||((0,Yn.mkdirSync)((0,zl.dirname)(ct),{recursive:!0}),$l=!0)}var Ls=class{emit(e,n={}){this.write({ts:new Date().toISOString(),event:e,...n})}emitApp(e,n,r={},s){this.write(Th(e,n,r,s))}write(e){if(!Ah()){kh();try{let n=JSON.stringify(e)+`
|
|
25
|
+
`;Xt(ct,{maxBytes:v.auditMaxBytes,incomingBytes:Buffer.byteLength(n)}),(0,Yn.appendFileSync)(ct,n)}catch{}}}},_=new Ls;var ke=require("fs"),Vl=require("os"),Qt=require("path"),Yl=require("crypto"),Ms="claude-hook:",Zt="x-vibelet-claude-hook-secret",en={continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"PreToolUse"}};function Eh(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
|
|
46
|
+
`}function Ch(t,e){return`#!/usr/bin/env node
|
|
47
47
|
const http = require('http');
|
|
48
|
-
const fallback = ${JSON.stringify(JSON.stringify(
|
|
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
|
|
83
|
-
`)}function
|
|
84
|
-
`):""}function
|
|
85
|
-
`);this.buffer=i.pop();for(let o of i)if(o.trim())try{this.handleRaw(JSON.parse(o))}catch{
|
|
86
|
-
`),!0}setApprovalMode(e){this.approvalMode=e,
|
|
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=
|
|
88
|
-
`),!0}restorePendingApproval(e){let n=
|
|
82
|
+
`}function Jl(t,e){let n=(0,Qt.join)((0,Vl.tmpdir)(),`vibelet-claude-hooks-${process.pid}-${(0,Yl.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,Eh(t,e),"utf8"),(0,ke.writeFileSync)(i,Ch(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 Jn(t){if(t)try{(0,ke.rmSync)(t.dirPath,{recursive:!0,force:!0})}catch{}}var ee=R.child({module:"claude"}),ec="claude-permission-denial:",Ph=/\u001B\[[0-?]*[ -/]*[@-~]/g;function Rh(){return process.env.VIBE_TEST!=="1"&&!process.argv.includes("--test")}function Ns(t){Rh()&&$n(`\x1B[33m\u26A1 [Vibelet] ${t}\x1B[0m
|
|
83
|
+
`)}function Lh(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 Mh(t){return Array.isArray(t)&&t.length>0&&t.every(e=>e&&typeof e=="object"&&e.type==="tool_reference")}function Nh(t){if(typeof t=="string")return t;let e=Lh(t);return e||(Mh(t)?"":JSON.stringify(t))}function Oh(t){return/requested permissions|haven't granted/i.test(t)}function Kl(t){return t.replace(Ph,"").replace(/\s+/g," ").trim()}function Bh(t){let e=t.toLowerCase();return e==="error"||e==="failed"||e==="unknown error"}function Dh(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 Hh(t){return t.toLowerCase().startsWith("claude ")?t:`Claude usage limit reached. ${t}`}function Xl(t){let e=Kl(t.resultText??""),n=(t.stderrLines??[]).map(Kl).filter(Boolean).slice(-3),r=[e,...n].find(i=>!!i&&Dh(i));if(r)return Hh(r);let s=[e,...n].find(i=>!!i&&!Bh(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 Kn(t){return t.startsWith(ec)}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),Jn(this.hookFiles),this.hookFiles=null,this.approvalMode!=="acceptEdits"&&this.approvalMode!=="autoApprove"&&this.hookPort&&this.hookSecret&&(this.hookFiles=Jl(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"),Ns(`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,Ql.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}`),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,Jn(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:Xl({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,Jn(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=Nh(s.content);if(!i)continue;if(s.is_error===!0&&typeof s.tool_use_id=="string"&&Oh(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){Ns("Claude failed."),this.handler({type:"error",sessionId:this.sessionId,message:Xl({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:`${ec}${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;Ns("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 sc=require("child_process"),ic=require("fs");var Os=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();R.info({metrics:n},"periodic metrics snapshot")},e),this.logInterval.unref())}stopPeriodicLog(){this.logInterval&&(clearInterval(this.logInterval),this.logInterval=null)}},w=new Os;var tc=require("node:fs"),Bs=require("node:path"),Fh="@vibelet/cli";function Uh(t){try{let e=JSON.parse((0,tc.readFileSync)(t,"utf8"));if(e.name===Fh&&typeof e.version=="string"&&e.version.length>0)return e.version}catch{}return null}function qh(){return"0.1.10"}var ft=qh();var x=R.child({module:"codex"});function jh(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 Wh(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 Gh=new Set(["aborted","interrupted","cancelled","canceled"]);function $h(t){let e=k(t);return e?e.toLowerCase():null}function zh(t){let e=k(t);return e?e.replace(/[^a-z0-9]/gi,"").toLowerCase():null}function Ds(t){return t?k(t.itemId)??k(t.id)??k(t.callId)??k(t.call_id):null}function Hs(t,e){let n={};for(let[r,s]of Object.entries(t))e.includes(r)||(n[r]=s);return n}function oc(t){return/\bapprove\b|\ballow\b|\baccept\b|\byes\b|\bcontinue\b|\bproceed\b|\brun\b|\bapply\b/i.test(t)}function ac(t){return/\bdeny\b|\breject\b|\bdecline\b|\bno\b|\bcancel\b|\babort\b|\bstop\b/i.test(t)}function Vh(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=>oc(l))??i[0],a=i.find(l=>ac(l))??i[i.length-1];if(!(!o||!a||o===a))return{questionId:r,approveLabel:o,denyLabel:a}}return null}function Yh(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=>oc(s)),r=e.some(s=>ac(s));return n&&r}function nc(t){let e=zh(t.type??t.itemType);if(e==="commandexecution")return{toolName:"Bash",input:Hs(t,["id","itemId","type","itemType","stdout","stderr","exitCode","exit_code","status","success","error"])};if(e==="filechange")return{toolName:"Patch",input:Hs(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 Jh(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 rc(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 Xn=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,sc.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,ic.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=rc(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=rc(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=Wh(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
|
|
92
|
-
`)){let n=
|
|
93
|
-
`).find(r=>r.startsWith("n"))?.slice(1).trim()??""}async function
|
|
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
|
|
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=
|
|
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
|
|
99
|
-
`,"utf8")}function
|
|
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=Ds(n);if(!r)return null;let s=n?nc(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?Hs(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:jh(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(!Yh(o)){x.warn({threadId:this.threadId,rpcId:n},"unsupported requestUserInput request"),this.writeServerRequestError(n,"Unsupported interactive request from Codex");return}let a=Vh(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"])},Jh(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=Ds(s),o=s?nc(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=Ds(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=$h(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&&Gh.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 D=require("fs/promises"),Xs=require("fs"),Qs=require("readline"),C=require("path"),me=require("os");var Kh=new Set(["New session","Resumed session","Untitled session"]),Xh=["<environment_context>","<local-command-caveat>","<local-command-stdout>","<local-command-stderr>","<command-name>","<command-message>","<command-args>","# AGENTS.md instructions for "];function Qh(t){return t.replace(/\s+/g," ").trim()}function Qn(t){return typeof t!="string"?void 0:Qh(t)||void 0}function lc(t){let e=Qn(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=Qn(t);return!e||Kh.has(e)||lc(e)}function Zh(t){for(let e of t.replace(/\r/g,"").split(`
|
|
92
|
+
`)){let n=Qn(e);if(n&&!eg(n)&&!tg(n))return n}}function eg(t){return Xh.some(e=>t.startsWith(e))}function tg(t){let e=t.replace(/^['"`]+/,"").replace(/['"`\\]+$/,"").trim();return!!(!e||/^(\/|~\/|\.\/|\.\.\/)/.test(e)||/^[A-Za-z]:\\/.test(e))}function ng(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 Fs(t,e=80){if(typeof t!="string")return;let n=Zh(t);if(!n)return;let r=ng(n),i=(r>0?n.slice(0,r):n).replace(/[。!?;.!?;]+$/gu,"").trim();if(!(!i||lc(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=Qn(n);if(!(!r||pt(r)))return r}return Fs(e)}var dc=require("child_process"),ht=require("fs/promises"),Ee=require("path"),Us=require("os"),fc=require("util");var rg=(0,fc.promisify)(dc.execFile),sg=R.child({module:"process-scanner"}),cc=1500,ig=15e3,rn=null,nn=null;function er(){rn=null}function og(t){return t.replace(/^['"]|['"]$/g,"")}function ag(t){return(t.match(/"[^"]*"|'[^']*'|\S+/g)??[]).map(og)}function qs(t){let e=ag(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 lg(t,e){let n=qs(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 Zn(t){switch(t){case"high":return 3;case"medium":return 2;default:return 1}}function cg(t,e){return t==="claude"?e.includes("/.claude/projects/")&&!e.includes("/subagents/"):e.includes("/.codex/sessions/")}function ug(t,e){let n=qs(e);return!n||n.agent!==t?!1:n.args.includes("--continue")||n.args.includes("-c")}function dg(t){let e=lg(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=>cg(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 fg(t,e){let n=t,r=e;return(Zn(e.confidence)>Zn(t.confidence)||Zn(e.confidence)===Zn(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 pg(t){let e=new Map;for(let n of t){let r=`${n.agent}:${n.sessionId}`,s=e.get(r);e.set(r,s?fg(s,n):n)}return[...e.values()]}async function js(t,e){try{let{stdout:n}=await rg(t,e,{maxBuffer:8388608,timeout:cc});return n}catch(n){return sg.warn({file:t,args:e,timeoutMs:cc,error:String(n)},"process scan command failed"),""}}async function uc(t){if(!t.sessionFilePath)return t;let e=await sn(t.sessionFilePath,t.agent);return e?{...t,cwd:t.cwd||e.cwd,title:t.title??e.title}:null}async function hg(t){return(await js("lsof",["-a","-p",String(t),"-d","cwd","-Fn"])).split(`
|
|
93
|
+
`).find(r=>r.startsWith("n"))?.slice(1).trim()??""}async function gg(t){let n=(await js("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 mg(){return(await js("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=qs(s);return!Number.isFinite(r)||!i?null:{pid:r,command:s,agent:i.agent}}).filter(e=>!!e)}async function yg(){let t=await mg();return Promise.all(t.map(async e=>({pid:e.pid,agent:e.agent,command:e.command,cwd:await hg(e.pid),sessionFiles:await gg(e.pid)})))}function Sg(t){return t.replace(/[^a-zA-Z0-9]/g,"-")}async function vg(t,e){if(!e)return null;try{if(t==="claude"){let o=(0,Ee.join)((0,Us.homedir)(),".claude","projects",Sg(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,Us.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 sn(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 _g(){let t=await yg(),e=await Promise.all(t.map(async r=>{let s=dg(r);if(s)return uc(s);if(ug(r.agent,r.command))return null;let i=await vg(r.agent,r.cwd);return i?uc({agent:r.agent,pid:r.pid,cwd:r.cwd,command:r.command,sessionId:i.sessionId,confidence:"low",sessionFilePath:i.filePath}):null})),n=pg(e.filter(r=>r!==null));return rn={value:n,expiresAt:Date.now()+ig},n}async function pc(){return rn&&Date.now()<rn.expiresAt?rn.value:nn||(nn=_g().finally(()=>{nn=null}),nn)}var tr=R.child({module:"inventory"}),bg=2e3,wg={listScannedSessions:on,scanRunningSessions:pc,searchSessionContent:mc},mt={daemonActive:3,externalRunning:2,idle:1},hc={high:3,medium:2,low:1};function gc(t,e){return e.lastActivityAt.localeCompare(t.lastActivityAt)||t.sessionId.localeCompare(e.sessionId)}function Ig(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]||gc(t,e)}function Ag(t,e){return mt[e.state]>mt[t.state]?e:mt[e.state]<mt[t.state]?t:hc[e.confidence]>hc[t.confidence]?e:t}function xg(t,e){return t?e?t.localeCompare(e)<=0?t:e:t:e}function Tg(t,e){return t?e?t.localeCompare(e)>=0?t:e:t:e}function kg(t,e){return e?t?!(pt(e)&&!pt(t)):!0:!1}function Gs(t="high",e="resumeSession"){return{state:"idle",confidence:t,resumeMode:e}}function Eg(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:["record"],runtime:{...Gs(),...t.isResponding?{isResponding:!0}:{}},managed:t.managed,approvalMode:t.approvalMode}}function Cg(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 Pg(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 Rg(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=kg(s.title,n.title)?n.title:s.title,o=n.cwd||s.cwd,a=Ag(s.runtime,n.runtime),l=s.sources.slice();for(let f of n.sources)l.includes(f)||l.push(f);let c=n.sources.includes("process"),u=s.sources.includes("process")&&!s.sources.includes("daemon"),d=c?s.lastActivityAt:u?n.lastActivityAt:Tg(s.lastActivityAt,n.lastActivityAt);t.set(r,{...s,cwd:o,title:i,createdAt:xg(s.createdAt,n.createdAt),lastActivityAt:d,sources:l,runtime:a,managed:s.managed||n.managed,approvalMode:n.approvalMode??s.approvalMode})}}function Lg(...t){let e=new Map;for(let n of t)Rg(e,n);return[...e.values()]}function Mg(t,e,n,r,s){let i=r?.toLowerCase(),o=t.filter(a=>{if(e&&a.agent!==e||n&&a.cwd!==n)return!1;if(i){let l=(a.title??"").toLowerCase(),c=(a.cwd??"").toLowerCase(),u=l.includes(i)||c.includes(i),d=s?.has(a.sessionId)??!1;if(!u&&!d)return!1}return!0});return r&&tr.info({total:t.length,filtered:o.length,search:r,contentMatchIds:s?.size??0},"filter applied"),o}function Ng(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 Og(t,e,n,r,s,i,o){let a=i?1/0:Math.max(1,e||50),l=Lg(t.sessionRecords.map(Eg),t.scannedSessions,t.runningSessions.map(S=>Cg(S,t.scannedAt)),t.activeSessions.map(Pg)),c=t.deletedSessionIds?.size?l.filter(S=>!t.deletedSessionIds?.has(S.sessionId)):l,u=Mg(c,r,s,i,o),d=u.filter(S=>S.runtime.state!=="idle"||S.managed).sort(Ig),f=u.filter(S=>S.runtime.state==="idle"&&!S.managed).sort(gc),p=Ng(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 Ws(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||(tr.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||tr.warn({source:t,error:String(c)},"session inventory source failed, using fallback"),l(n)})})}async function nr(t){let e=new Date().toISOString(),n={...wg,...t.loaders??{}},r=Math.max(250,t.sourceTimeoutMs??bg),[s,i,o]=await Promise.all([Ws("scanner.sessions",()=>n.listScannedSessions(t.agent,t.cwd),[],r),Ws("process.running_sessions",()=>n.scanRunningSessions(),[],r),t.search?Ws("scanner.search_content",()=>n.searchSessionContent(t.search,t.agent),void 0,r):Promise.resolve(void 0)]);return t.search&&tr.info({search:t.search,contentMatches:o?.size??0,scanned:s.length,records:t.sessionRecords.length,active:t.activeSessions.length},"search results"),Og({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=R.child({module:"scanner"});function bc(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 wc=3e4,Ys=bc(wc),Js=bc(wc),$s=new Map,zs=new Map,rr=8;function ir(){Ys.clear(),Js.clear()}function Ks(t){return t.replace(/[^a-zA-Z0-9]/g,"-")}async function sr(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*Ic(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 Vs=512*1024;async function Ac(t,e){if(e<=Vs)return(0,D.readFile)(t,"utf-8");let n=await(0,D.open)(t,"r");try{let r=Buffer.alloc(Vs),{bytesRead:s}=await n.read(r,0,Vs,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 xc(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 ei(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 Bg=["<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 Dg(t,e){if(t?.isMeta===!0)return!0;let n=e.trim();return n?Bg.some(r=>n.startsWith(r)):!1}function ti(t){if(t?.type!=="user"||t.message?.role!=="user")return"";let e=ei(t.message.content);return Dg(t,e)?"":e}function Tc(t){let e=t.trim();return e.startsWith("# AGENTS.md instructions for ")||e.startsWith("<environment_context>")}function kc(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:Gs()}}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 Hg(t,e){let n=await Ac(t,e),r=Ic(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=ti(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 Fg(t,e){let n=await Ac(t,e),r=Ic(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=xc(u),f=d&&!Tc(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 sn(t,e){let n=await(0,D.stat)(t).catch(()=>null);if(!n)return null;try{let r=n.size;if(e==="claude"){let i=await Hg(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 Fg(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 yc(t){let e=(0,C.join)((0,me.homedir)(),".claude","projects");try{let n;t?n=[Ks(t)]:n=(await(0,D.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,D.readdir)(a).catch(()=>[]);for(let c of l)c.endsWith(".jsonl")&&r.push((0,C.join)(a,c))}return(await sr(r,rr,o=>sn(o,"claude"))).filter(o=>o!==null).map(o=>kc(o)).sort((o,a)=>a.lastActivityAt.localeCompare(o.lastActivityAt))}catch(n){return Ce.warn({error:String(n)},"failed to list claude sessions"),[]}}async function Sc(t){let e=(0,C.join)((0,me.homedir)(),".codex","sessions");try{let n=await(0,D.readdir)(e).catch(()=>[]),r=[];for(let o of n){let a=(0,C.join)(e,o),l=await(0,D.readdir)(a).catch(()=>[]);for(let c of l){let u=(0,C.join)(a,c),d=await(0,D.readdir)(u).catch(()=>[]);for(let f of d){let p=(0,C.join)(u,f),h=await(0,D.readdir)(p).catch(()=>[]);for(let g of h)g.endsWith(".jsonl")&&r.push((0,C.join)(p,g))}}}return(await sr(r,rr,o=>sn(o,"codex"))).filter(o=>o!==null).filter(o=>!t||o.cwd===t).map(o=>kc(o)).sort((o,a)=>a.lastActivityAt.localeCompare(o.lastActivityAt))}catch(n){return Ce.warn({error:String(n)},"failed to list codex sessions"),[]}}async function on(t,e){let r=`list:${(0,me.homedir)()}:${t??"all"}:${e??""}`,s=Ys.get(r);if(s)return s;let i=$s.get(r);if(i)return i;let o=(async()=>{let a;if(t==="claude")a=await yc(e);else if(t==="codex")a=await Sc(e);else{let[l,c]=await Promise.all([yc(e),Sc(e)]);a=[...l,...c].sort((u,d)=>d.lastActivityAt.localeCompare(u.lastActivityAt))}return Ys.set(r,a),a})();return $s.set(r,o),o.finally(()=>$s.delete(r)),o}async function mc(t,e){let r=`search:${(0,me.homedir)()}:${t}:${e??"all"}`,s=Js.get(r);if(s)return s;let i=zs.get(r);if(i)return i;let o=(async()=>{let a=new Set,l=t.toLowerCase();async function c(){let d=(0,C.join)((0,me.homedir)(),".claude","projects");try{let f=await(0,D.readdir)(d,{withFileTypes:!0}),p=[];for(let g of f){if(!g.isDirectory())continue;let m=(0,C.join)(d,g.name),S=await(0,D.readdir)(m).catch(()=>[]);for(let P of S)P.endsWith(".jsonl")&&p.push((0,C.join)(m,P))}let h=await sr(p,rr,g=>vc(g,l,"claude"));for(let g of h)g&&a.add(g)}catch(f){Ce.warn({error:String(f)},"failed to search claude files")}}async function u(){let d=(0,C.join)((0,me.homedir)(),".codex","sessions");try{let f=[];async function p(g){let m=await(0,D.readdir)(g,{withFileTypes:!0}).catch(()=>[]);for(let S of m){let P=(0,C.join)(g,S.name);S.isDirectory()?await p(P):S.name.endsWith(".jsonl")&&f.push(P)}}await p(d);let h=await sr(f,rr,g=>vc(g,l,"codex"));for(let g of h)g&&a.add(g)}catch(f){Ce.warn({error:String(f)},"failed to search codex files")}}return e==="claude"?await c():e==="codex"?await u():await Promise.all([c(),u()]),Js.set(r,a),a})();return zs.set(r,o),o.finally(()=>zs.delete(r)),o}async function vc(t,e,n){let r=(0,Xs.createReadStream)(t,{encoding:"utf-8"}),s=(0,Qs.createInterface)({input:r,crlfDelay:1/0}),i=n==="claude"?Ug:qg,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 Ug(t){return t?.type==="user"&&t.message?.role==="user"?ti(t):t?.type==="assistant"&&t.message?.role==="assistant"?ei(t.message.content):""}function qg(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=xc(t);return e||""}async function _c(t,e){let n=(0,Xs.createReadStream)(t,{encoding:"utf-8"}),r=(0,Qs.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 an(t,e,n){let r=[];if(e==="claude"){let s=(0,C.join)((0,me.homedir)(),".claude","projects");try{let i=n?[Ks(n)]:[],o=await(0,D.readdir)(s).catch(()=>[]),a=n?[...i,...o.filter(l=>l!==Ks(n))]:o;for(let l of a){let c=(0,C.join)(s,l,`${t}.jsonl`);try{if(await _c(c,u=>{if(u.type==="user"&&u.message?.role==="user"){let d=ti(u);d&&r.push({role:"user",content:d})}else if(u.type==="assistant"&&u.message?.role==="assistant"){let d=ei(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 Ec(s,t);i&&await _c(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"&&Tc(l)||r.push({role:a,content:l}))})}catch(i){Ce.warn({error:String(i)},"failed to read codex session history")}}return r}async function Ec(t,e){try{let n=await(0,D.readdir)(t,{withFileTypes:!0});for(let r of n){let s=(0,C.join)(t,r.name);if(r.isDirectory()){let i=await Ec(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"),Rc=require("path");var jg=500,Cc=200;function Wg(t){if(!Array.isArray(t))return[];let e=t.filter(n=>typeof n=="string"&&n.length>0);return e.length<=Cc?e:e.slice(-Cc)}function Gg(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 $g(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 Pc(t){return{...t,lastActivityAt:t.lastActivityAt??t.createdAt,acceptedClientMessageIds:Wg(t.acceptedClientMessageIds),pendingApproval:$g(t.pendingApproval)}}function zg(t){if(Array.isArray(t))return{records:t.map(Pc),deletedSessionIds:[]};if(t&&typeof t=="object"){let e=t;return{records:Array.isArray(e.records)?e.records.map(Pc):[],deletedSessionIds:Gg(e.deletedSessionIds)}}return{records:[],deletedSessionIds:[]}}var or=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()},jg)}loadFromDisk(){try{let e=(0,yt.readFileSync)(qn,"utf-8");return zg(JSON.parse(e))}catch{}return{records:[],deletedSessionIds:[]}}saveToDisk(){(0,yt.mkdirSync)((0,Rc.dirname)(qn),{recursive:!0}),(0,yt.writeFileSync)(qn,JSON.stringify({records:this.records,deletedSessionIds:[...this.deletedSessionIds]},null,2))}};var St=require("path"),Lc=require("os");function ar(t){return t=t.replace(/^~/,"~"),t.startsWith("~/")||t==="~"?(0,St.join)((0,Lc.homedir)(),t.slice(2)):t}function Vg(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 Mc(t,e){let n=ar(Vg(t));if(!n||(0,St.isAbsolute)(n))return n;let r=ar(e??"");return r?(0,St.resolve)(r,n):n}var Nc={approvalRequestV1:"vibelet.approvalRequest.v1"};var vt=require("fs"),Oc=require("path");function Yg(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 Jg(t){try{let e=(0,vt.readFileSync)(t,"utf8"),n=JSON.parse(e);return Array.isArray(n)?n.filter(Yg):[]}catch{return[]}}function ln(t,e){(0,vt.mkdirSync)((0,Oc.dirname)(t),{recursive:!0}),(0,vt.writeFileSync)(t,JSON.stringify(e,null,2)+`
|
|
97
|
+
`,"utf8")}var lr=class{constructor(e=Ll){this.pushSubscriptionsPath=e;this.records=Jg(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)],ln(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,ln(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,ln(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&&ln(this.pushSubscriptionsPath,this.records)}reset(){this.records=[],ln(this.pushSubscriptionsPath,this.records)}};var z=R.child({module:"push"}),Kg="https://exp.host/--/api/v2/push/send",Xg="https://exp.host/--/api/v2/push/getReceipts",Qg=[0,1e3,3e3],cn=new lr;function Zg(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 em(t){return new Promise(e=>{setTimeout(e,t)})}function Bc(t){return t==="DeviceNotRegistered"}function tm(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 nm(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 rm(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 sm(t,e,n,r){let s=new Map(t);for(let i of Qg){if(s.size===0)return;i>0&&await n(i);let o;try{o=await e(Xg,{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}=rm(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"),Bc(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 im(t){let e=t?.pushStore??cn,n=t?.fetchImpl??globalThis.fetch,r=t?.sleepImpl??em;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,...Zg(a)&&a.eventType==="approval_request"?{categoryId:Nc.approvalRequestV1}:{}}));try{let u=await n(Kg,{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}=tm(d,l),h=nm(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"),Bc(S)){let P=e.unregisterToken(g);z.info({token:g,errorCode:S,removed:P},"push token removed after ticket rejection")}}f.length>0&&(z.debug({count:f.length},"push sent"),e.markSent(f)),h.size>0&&await sm(h,n,r,e)}catch(u){z.error({error:String(u)},"push send error")}}}function ni(t,e){cn.register(t,e),z.info({deviceId:t,token:e,total:cn.count()},"push token registered")}function ri(t,e){let n=cn.unregister(t,e);z.info({deviceId:t,token:e,total:cn.count(),removed:n},"push token unregistered")}var cr=im();var b=R.child({module:"manager"}),om="Done.",am="Approval required",Dc=180,dr=200;function ur(...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>dr&&e.splice(0,e.length-dr));return e}function ce(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,approvalMode:t.approvalMode,acceptedClientMessageIds:ur(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 Hc(t){let e=t.pendingApproval?.requestId;return typeof e=="string"&&Kn(e)}function Fc(t,e,n){return{sessionId:t,agent:e,...n}}function lm(t){return t.startsWith(Ms)}function Uc(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 fr=class{constructor(e=cr){this.pushSender=e;this.startIdleSweep()}sessions=new Map;claudeHookSessions=new Map;store=new or;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"||!Hc(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(am,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"&&Kn(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&&Hc(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,si.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&&lm(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 Uc(!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=`${Ms}${l.trim()||(0,si.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=ur(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=ur(h.acceptedClientMessageIds,f),p="record";else if(!r){let m=(await on(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(Fc(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(Fc(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<=Dc?n:`${n.slice(0,Math.max(1,Dc-3)).trimEnd()}...`:om}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 on(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(){nr({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=ar(s),b.info({agent:r,cwd:s,approvalMode:i,continueSession:o},"creating session");try{if(!(await(0,qc.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(),ir(),er(),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(),ir(),er(),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 an(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 P=await an(r,s,c);if(P.length>0||S.pendingApproval){b.info({sessionId:r,historyCount:P.length},"sending history messages");let se={type:"session.history",sessionId:g,messages:P,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>dr&&e.acceptedClientMessageIds.splice(0,e.acceptedClientMessageIds.length-dr))}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=ur(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=Fs(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 nr({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 an(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(Uc(i)),o.isResponding=!0,this.reply(e,n,!0);return}let c=o?.syntheticApprovalRetries[s];if(o&&c&&Kn(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(),ir(),er(),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 an(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 nr({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 Xn;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 ii(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 jc=require("child_process");function cm(t,e){return(0,jc.execFileSync)(t,e,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}function um(t){let e=t.split(`
|
|
98
|
+
`).map(n=>Number(n.trim())).filter(n=>Number.isFinite(n)&&n>0);return[...new Set(e)]}function Wc(t,e=cm){let n;try{n=um(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"),oi=require("os"),$c=require("crypto"),zc=require("path");function Vc(t){return(0,$c.randomBytes)(t).toString("base64url")}function dm(){return`d_${Vc(12)}`}function fm(){return(0,oi.hostname)()}function pm(){let t=(0,oi.hostname)().trim().toLowerCase();return t?t.endsWith(".local")?t:`${t}.local`:"localhost"}function hm(t){return{daemonId:dm(),daemonSecret:Vc(32),displayName:fm(),canonicalHost:pm(),port:t,createdAt:new Date().toISOString()}}function Gc(t,e){(0,_t.mkdirSync)((0,zc.dirname)(e),{recursive:!0}),(0,_t.writeFileSync)(e,JSON.stringify(t,null,2)+`
|
|
99
|
+
`,"utf8")}function Yc(t,e=Pl){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,Gc(i,e)),i}}catch{}let n=hm(t);return Gc(n,e),n}var bt=require("crypto"),wt=require("fs"),Kc=require("path");function ai(t){return(0,bt.randomBytes)(t).toString("base64url")}function li(t){return(0,bt.createHash)("sha256").update(t).digest("hex")}function Jc(t,e){let n=Buffer.from(t),r=Buffer.from(e);return n.length!==r.length?!1:(0,bt.timingSafeEqual)(n,r)}function gm(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 un(t,e){(0,wt.mkdirSync)((0,Kc.dirname)(t),{recursive:!0}),(0,wt.writeFileSync)(t,JSON.stringify(e,null,2)+`
|
|
100
|
+
`,"utf8")}var pr=class{constructor(e=Rl){this.pairingsPath=e;this.records=gm(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_${ai(8)}`,r=ai(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=ai(32),i={deviceId:e,deviceName:n,tokenHash:li(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),un(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=li(n);return Jc(s.tokenHash,i)?(r&&(s.lastSeenAt=new Date().toISOString(),un(this.pairingsPath,this.records)),!0):!1}validateAnyPairToken(e,n=!0){let r=li(e),s=this.records.find(i=>!i.revokedAt&&Jc(i.tokenHash,r));return s?(n&&(s.lastSeenAt=new Date().toISOString(),un(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(),un(this.pairingsPath,this.records),!0):!1}reset(){this.records=[],this.windows.clear(),un(this.pairingsPath,this.records)}};function It(t){return t?t==="127.0.0.1"||t==="::1"||t==="::ffff:127.0.0.1":!1}function mm(t){return t&&t.match(/^Bearer\s+(.+)$/i)?.[1]?.trim()||null}function Xc(t,e){return mm(t)??e}function ci(t,e){return!!(t&&e&&t===e)}function Qc(t,e,n,r=!0){return t?ci(t,e)?!0:!!n(t,r):!1}var eu=require("child_process");function ui(t){let e=t.split(".");return e.length!==4?!1:e.every(n=>/^\d+$/.test(n)&&Number(n)>=0&&Number(n)<=255)}function tu(t){if(!ui(t))return!1;let[e,n]=t.split(".").map(Number);return e===100&&n>=64&&n<=127}function ym(t){if(!ui(t))return!1;let[e,n]=t.split(".").map(Number);return e===169&&n===254}function Sm(t){if(!ui(t))return!1;let[e,n]=t.split(".").map(Number);return e===198&&(n===18||n===19)}function di(t){return!!t&&!ym(t)&&!Sm(t)}function At(t){if(!t)return;let e=t.trim().replace(/\.$/,"");return e?e.toLowerCase():void 0}function nu(t){return t?t.split(",").map(e=>e.trim()).filter(Boolean):[]}function vm(t){let e=[],n=[];for(let r of Object.values(t))if(r)for(let s of r)s.internal||s.family!=="IPv4"||di(s.address)&&(tu(s.address)?e.push(s.address):n.push(s.address));return[...e,...n]}function Zc(t){let e=JSON.parse(t),n=At(e.Self?.DNSName),r=(e.Self?.TailscaleIPs??[]).map(o=>At(o)).filter(o=>!!o).filter(o=>tu(o)&&di(o)),s=r[0]??n,i=[...n&&n!==s?[n]:[],...r.filter(o=>o!==s)];return{canonicalHost:s,fallbackHosts:i}}function ru(t=eu.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 su(t){let e=At(t.canonicalHost),n=At(t.configuredCanonicalHost)||At(t.tailscaleCanonicalHost)||e||"localhost",r=[...e&&e!==n?[e]:[],...t.configuredFallbackHosts??[],...t.tailscaleFallbackHosts??[],...vm(t.interfaces)].map(s=>At(s)).filter(s=>!!s).filter(s=>di(s)).filter((s,i,o)=>s!==n&&o.indexOf(s)===i);return{canonicalHost:n,fallbackHosts:r}}function iu(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=R.child({module:"daemon"}),dn=R.child({module:"ws"}),H=Yc(v.port),ue=new fr((t,e,n)=>cr(t,e,{daemonId:H.daemonId,canonicalHost:H.canonicalHost,...n??{}})),Re=new pr,hr=new Set,Pe=new WeakMap,ou=!1,uu=Date.now(),xt=null;function Tt(){let t=ru();return su({canonicalHost:H.canonicalHost,configuredCanonicalHost:v.canonicalHost,configuredFallbackHosts:nu(v.fallbackHosts),tailscaleCanonicalHost:t.canonicalHost,tailscaleFallbackHosts:t.fallbackHosts,interfaces:(0,lu.networkInterfaces)()})}async function fi(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 F(t,e,n){t.writeHead(e,{"Content-Type":"application/json"}),t.end(JSON.stringify(n,null,2))}function _m(t){let e=(0,gr.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 du(){let t=Re.openWindow(),e=Tt(),n=e.canonicalHost,r=H.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:H.daemonId,displayName:H.displayName,canonicalHost:n,fallbackHosts:s,port:r,pairNonce:t.pairNonce,expiresAt:t.expiresAt}}async function bm(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,gr.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 fn=(0,au.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:H.daemonId,displayName:H.displayName,canonicalHost:s.canonicalHost,uptimeSeconds:Math.round((Date.now()-uu)/1e3),activeSessions:ue.getActiveSessionCount(),pairedDevices:Re.pairedCount(),wsClients:re.clients.size,drivers:ue.getDriverCounts(),metrics:w.snapshot()};v.relayUrl&&(i.relayUrl=v.relayUrl),F(e,200,i);return}if(t.method==="POST"&&n.pathname==="/pair/open"){if(!It(t.socket.remoteAddress)){F(e,403,{error:"forbidden"});return}F(e,200,du());return}if(t.method==="POST"&&n.pathname==="/pair/reset"){if(!It(t.socket.remoteAddress)){F(e,403,{error:"forbidden"});return}Re.reset(),F(e,200,{ok:!0});return}if(t.method==="POST"&&n.pathname==="/shutdown"){if(!It(t.socket.remoteAddress)){F(e,403,{error:"forbidden"});return}F(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)){F(e,403,{error:"forbidden"});return}try{let s=await fi(t),i=t.headers[Zt],o=Array.isArray(i)?i[0]:i;ue.handleClaudeSessionStartHook(o,s),F(e,200,{ok:!0})}catch(s){F(e,400,{error:String(s)})}return}if(t.method==="POST"&&n.pathname==="/hook/claude/permission-request"){if(!It(t.socket.remoteAddress)){F(e,403,{error:"forbidden"});return}try{let s=await fi(t),i=t.headers[Zt],o=Array.isArray(i)?i[0]:i,a=await ue.handleClaudePermissionHook(o,s);F(e,200,a)}catch(s){F(e,400,{error:String(s)})}return}if(t.method==="POST"&&n.pathname==="/pair/create"){try{let s=await fi(t);if(s.daemonId!==H.daemonId||typeof s.pairNonce!="string"||typeof s.deviceId!="string"||typeof s.deviceName!="string"){F(e,400,{error:"invalid_pair_request"});return}if(!Re.consumeWindow(s.pairNonce)){F(e,401,{error:"pair_window_expired"});return}let o=Re.issuePairToken(s.deviceId,s.deviceName),a=Tt();F(e,200,{daemonId:H.daemonId,displayName:H.displayName,canonicalHost:a.canonicalHost,fallbackHosts:a.fallbackHosts,port:H.port,deviceId:s.deviceId,pairToken:o})}catch(s){F(e,400,{error:String(s)})}return}let r=Xc(t.headers.authorization,n.searchParams.get("token"));if(!Qc(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=Mc(s,i);if(!(await(0,Ge.stat)(o)).isFile()){e.writeHead(404),e.end("Not a file");return}let l=_m(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 Hr.default({server:fn});fn.on("connection",t=>{hr.add(t),t.on("close",()=>{hr.delete(t)})});re.on("connection",(t,e)=>{let r=new URL(e.url??"/",`http://localhost:${v.port}`).searchParams.get("token");if(r&&ci(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}}dn.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(iu(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===H.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:H.daemonId,displayName:H.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 bm(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);ii(i,{deviceId:a?.deviceId,registerToken:ni,unregisterToken:ri,respond:l=>t.send(JSON.stringify(l))});return}if(i.action==="push.unregister"){let a=Pe.get(t);ii(i,{deviceId:a?.deviceId,registerToken:ni,unregisterToken:ri,respond:l=>t.send(JSON.stringify(l))});return}await ue.handle(t,o)}catch(i){dn.error({error:String(i)},"message handling error"),t.send(JSON.stringify({type:"error",sessionId:"",message:String(i)}))}}),t.on("close",s=>{dn.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=>{dn.error({error:s.message},"websocket error")})});function pi(){for(let t of hr)try{t.destroy()}catch{}hr.clear()}function fu(){let t=Gl({auditPath:ct,stdoutLogPath:jn,stderrLogPath:Wn,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 wm(){xt||(xt=setInterval(fu,v.storageHousekeepingIntervalMs),xt.unref())}function Im(){xt&&(clearInterval(xt),xt=null)}function $e(t,e=0){if(!ou){ou=!0,W.info({reason:t,exitCode:e},"shutting down"),_.emit("daemon.shutdown",{reason:t,exitCode:e,uptimeSeconds:Math.round((Date.now()-uu)/1e3)}),w.stopPeriodicLog(),Im(),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")}),fn.close(n=>{if(n){W.error({error:String(n)},"http close error"),pi(),process.exit(1);return}pi(),process.exit(e)}),setTimeout(()=>{W.error("force exiting after shutdown timeout"),pi(),process.exit(e||1)},3e3).unref()}}re.on("error",t=>{dn.error({error:t.message},"wss error")});fn.on("error",t=>{if(t.code==="EADDRINUSE"){let e=Wc(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)})});fn.listen(v.port,async()=>{fu(),_.emit("daemon.start",{port:v.port}),w.startPeriodicLog(),wm(),W.info({port:v.port,daemonId:H.daemonId,displayName:H.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=du();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: ${
|
|
105
|
+
\u2551 ID: ${H.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
|
|
115
|
+
`);try{let n=await cu.default.toString(JSON.stringify(e),{type:"terminal",small:!0});Yt(`
|
|
116
116
|
Scan this QR code with Vibelet app:
|
|
117
117
|
|
|
118
118
|
${n}
|