@vibelet/cli 1.0.24 → 1.0.26

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 CHANGED
@@ -1,28 +1,28 @@
1
- "use strict";var hf=Object.create;var bo=Object.defineProperty;var gf=Object.getOwnPropertyDescriptor;var mf=Object.getOwnPropertyNames;var yf=Object.getPrototypeOf,vf=Object.prototype.hasOwnProperty;var v=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Sf=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of mf(e))!vf.call(t,s)&&s!==n&&bo(t,s,{get:()=>e[s],enumerable:!(r=gf(e,s))||r.enumerable});return t};var ct=(t,e,n)=>(n=t!=null?hf(yf(t)):{},Sf(e||!t||!t.__esModule?bo(n,"default",{value:t,enumerable:!0}):n,t));var ve=v((a_,To)=>{"use strict";var wo=["nodebuffer","arraybuffer","fragments"],Io=typeof Blob<"u";Io&&wo.push("blob");To.exports={BINARY_TYPES:wo,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:Io,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var $t=v((l_,Dn)=>{"use strict";var{EMPTY_BUFFER:_f}=ve(),is=Buffer[Symbol.species];function bf(t,e){if(t.length===0)return _f;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 is(n.buffer,n.byteOffset,r):n}function Ao(t,e,n,r,s){for(let i=0;i<s;i++)n[r+i]=t[i]^e[i&3]}function ko(t,e){for(let n=0;n<t.length;n++)t[n]^=e[n&3]}function wf(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function os(t){if(os.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new is(t):ArrayBuffer.isView(t)?e=new is(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),os.readOnly=!1),e}Dn.exports={concat:bf,mask:Ao,toArrayBuffer:wf,toBuffer:os,unmask:ko};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");Dn.exports.mask=function(e,n,r,s,i){i<48?Ao(e,n,r,s,i):t.mask(e,n,r,s,i)},Dn.exports.unmask=function(e,n){e.length<32?ko(e,n):t.unmask(e,n)}}catch{}});var Ro=v((c_,xo)=>{"use strict";var Co=Symbol("kDone"),as=Symbol("kRun"),ls=class{constructor(e){this[Co]=()=>{this.pending--,this[as]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[as]()}[as](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[Co])}}};xo.exports=ls});var Vt=v((u_,Lo)=>{"use strict";var zt=require("zlib"),Eo=$t(),If=Ro(),{kStatusCode:Po}=ve(),Tf=Buffer[Symbol.species],Af=Buffer.from([0,0,255,255]),Hn=Symbol("permessage-deflate"),Se=Symbol("total-length"),ut=Symbol("callback"),Ce=Symbol("buffers"),dt=Symbol("error"),Fn,cs=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 If(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[ut];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"?zt.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=zt.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[Hn]=this,this._inflate[Se]=0,this._inflate[Ce]=[],this._inflate.on("error",Cf),this._inflate.on("data",Mo)}this._inflate[ut]=r,this._inflate.write(e),n&&this._inflate.write(Af),this._inflate.flush(()=>{let i=this._inflate[dt];if(i){this._inflate.close(),this._inflate=null,r(i);return}let o=Eo.concat(this._inflate[Ce],this._inflate[Se]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Se]=0,this._inflate[Ce]=[],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"?zt.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=zt.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[Se]=0,this._deflate[Ce]=[],this._deflate.on("data",kf)}this._deflate[ut]=r,this._deflate.write(e),this._deflate.flush(zt.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=Eo.concat(this._deflate[Ce],this._deflate[Se]);n&&(i=new Tf(i.buffer,i.byteOffset,i.length-4)),this._deflate[ut]=null,this._deflate[Se]=0,this._deflate[Ce]=[],n&&this.params[`${s}_no_context_takeover`]&&this._deflate.reset(),r(null,i)})}};Lo.exports=cs;function kf(t){this[Ce].push(t),this[Se]+=t.length}function Mo(t){if(this[Se]+=t.length,this[Hn]._maxPayload<1||this[Se]<=this[Hn]._maxPayload){this[Ce].push(t);return}this[dt]=new RangeError("Max payload size exceeded"),this[dt].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[dt][Po]=1009,this.removeListener("data",Mo),this.reset()}function Cf(t){if(this[Hn]._inflate=null,this[dt]){this[ut](this[dt]);return}t[Po]=1007,this[ut](t)}});var ft=v((d_,Un)=>{"use strict";var{isUtf8:No}=require("buffer"),{hasBlob:xf}=ve(),Rf=[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 Ef(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function us(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 Pf(t){return xf&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}Un.exports={isBlob:Pf,isValidStatusCode:Ef,isValidUTF8:us,tokenChars:Rf};if(No)Un.exports.isValidUTF8=function(t){return t.length<24?us(t):No(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");Un.exports.isValidUTF8=function(e){return e.length<32?us(e):t(e)}}catch{}});var gs=v((f_,Wo)=>{"use strict";var{Writable:Mf}=require("stream"),Oo=Vt(),{BINARY_TYPES:Lf,EMPTY_BUFFER:Bo,kStatusCode:Nf,kWebSocket:Of}=ve(),{concat:ds,toArrayBuffer:Bf,unmask:Df}=$t(),{isValidStatusCode:Ff,isValidUTF8:Do}=ft(),Wn=Buffer[Symbol.species],ee=0,Fo=1,Ho=2,Uo=3,fs=4,ps=5,qn=6,hs=class extends Mf{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||Lf[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[Of]=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=ee}_write(e,n,r){if(this._opcode===8&&this._state==ee)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 Wn(r.buffer,r.byteOffset+e,r.length-e),new Wn(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 Wn(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 ee:this.getInfo(e);break;case Fo:this.getPayloadLength16(e);break;case Ho:this.getPayloadLength64(e);break;case Uo:this.getMask();break;case fs:this.getData(e);break;case ps:case qn: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[Oo.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=Fo:this._payloadLength===127?this._state=Ho: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=Uo:this._state=fs}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=fs}getData(e){let n=Bo;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&&Df(n,this._mask)}if(this._opcode>7){this.controlMessage(n,e);return}if(this._compressed){this._state=ps,this.decompress(n,e);return}n.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(n)),this.dataMessage(e)}decompress(e,n){this._extensions[Oo.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===ee&&this.startLoop(n)})}dataMessage(e){if(!this._fin){this._state=ee;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=ds(r,n):this._binaryType==="arraybuffer"?s=Bf(ds(r,n)):this._binaryType==="blob"?s=new Blob(r):s=r,this._allowSynchronousEvents?(this.emit("message",s,!0),this._state=ee):(this._state=qn,setImmediate(()=>{this.emit("message",s,!0),this._state=ee,this.startLoop(e)}))}else{let s=ds(r,n);if(!this._skipUTF8Validation&&!Do(s)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(i);return}this._state===ps||this._allowSynchronousEvents?(this.emit("message",s,!1),this._state=ee):(this._state=qn,setImmediate(()=>{this.emit("message",s,!1),this._state=ee,this.startLoop(e)}))}}controlMessage(e,n){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,Bo),this.end();else{let r=e.readUInt16BE(0);if(!Ff(r)){let i=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");n(i);return}let s=new Wn(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Do(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=ee;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=ee):(this._state=qn,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=ee,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[Nf]=s,o}};Wo.exports=hs});var vs=v((h_,jo)=>{"use strict";var{Duplex:p_}=require("stream"),{randomFillSync:Hf}=require("crypto"),qo=Vt(),{EMPTY_BUFFER:Uf,kWebSocket:Wf,NOOP:qf}=ve(),{isBlob:pt,isValidStatusCode:Gf}=ft(),{mask:Go,toBuffer:Ue}=$t(),te=Symbol("kByteLength"),jf=Buffer.alloc(4),Gn=8*1024,We,ht=Gn,ae=0,$f=1,zf=2,ms=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=ae,this.onerror=qf,this[Wf]=void 0}static frame(e,n){let r,s=!1,i=2,o=!1;n.mask&&(r=n.maskBuffer||jf,n.generateMask?n.generateMask(r):(ht===Gn&&(We===void 0&&(We=Buffer.alloc(Gn)),Hf(We,0,Gn),ht=0),r[0]=We[ht++],r[1]=We[ht++],r[2]=We[ht++],r[3]=We[ht++]),o=(r[0]|r[1]|r[2]|r[3])===0,i=6);let a;typeof e=="string"?(!n.mask||o)&&n[te]!==void 0?a=n[te]:(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 u=Buffer.allocUnsafe(s?a+i:i);return u[0]=n.fin?n.opcode|128:n.opcode,n.rsv1&&(u[0]|=64),u[1]=l,l===126?u.writeUInt16BE(a,2):l===127&&(u[2]=u[3]=0,u.writeUIntBE(a,4,6)),n.mask?(u[1]|=128,u[i-4]=r[0],u[i-3]=r[1],u[i-2]=r[2],u[i-1]=r[3],o?[u,e]:s?(Go(e,r,u,i,a),[u]):(Go(e,r,e,0,a),[u,e])):[u,e]}close(e,n,r,s){let i;if(e===void 0)i=Uf;else{if(typeof e!="number"||!Gf(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={[te]:i.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==ae?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):pt(e)?(s=e.size,i=!1):(e=Ue(e),s=e.length,i=Ue.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[te]:s,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};pt(e)?this._state!==ae?this.enqueue([this.getBlobData,e,!1,o,r]):this.getBlobData(e,!1,o,r):this._state!==ae?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):pt(e)?(s=e.size,i=!1):(e=Ue(e),s=e.length,i=Ue.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[te]:s,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};pt(e)?this._state!==ae?this.enqueue([this.getBlobData,e,!1,o,r]):this.getBlobData(e,!1,o,r):this._state!==ae?this.enqueue([this.dispatch,e,!1,o,r]):this.sendFrame(t.frame(e,o),r)}send(e,n,r){let s=this._extensions[qo.extensionName],i=n.binary?2:1,o=n.compress,a,l;typeof e=="string"?(a=Buffer.byteLength(e),l=!1):pt(e)?(a=e.size,l=!1):(e=Ue(e),a=e.length,l=Ue.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 u={[te]:a,fin:n.fin,generateMask:this._generateMask,mask:n.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:l,rsv1:o};pt(e)?this._state!==ae?this.enqueue([this.getBlobData,e,this._compress,u,r]):this.getBlobData(e,this._compress,u,r):this._state!==ae?this.enqueue([this.dispatch,e,this._compress,u,r]):this.dispatch(e,this._compress,u,r)}getBlobData(e,n,r,s){this._bufferedBytes+=r[te],this._state=zf,e.arrayBuffer().then(i=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(ys,this,a,s);return}this._bufferedBytes-=r[te];let o=Ue(i);n?this.dispatch(o,n,r,s):(this._state=ae,this.sendFrame(t.frame(o,r),s),this.dequeue())}).catch(i=>{process.nextTick(Vf,this,i,s)})}dispatch(e,n,r,s){if(!n){this.sendFrame(t.frame(e,r),s);return}let i=this._extensions[qo.extensionName];this._bufferedBytes+=r[te],this._state=$f,i.compress(e,r.fin,(o,a)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");ys(this,l,s);return}this._bufferedBytes-=r[te],this._state=ae,r.readOnly=!1,this.sendFrame(t.frame(a,r),s),this.dequeue()})}dequeue(){for(;this._state===ae&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][te],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][te],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)}};jo.exports=ms;function ys(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 Vf(t,e,n){ys(t,e,n),t.onerror(e)}});var Zo=v((g_,Qo)=>{"use strict";var{kForOnEventAttribute:Yt,kListener:Ss}=ve(),$o=Symbol("kCode"),zo=Symbol("kData"),Vo=Symbol("kError"),Yo=Symbol("kMessage"),Jo=Symbol("kReason"),gt=Symbol("kTarget"),Ko=Symbol("kType"),Xo=Symbol("kWasClean"),_e=class{constructor(e){this[gt]=null,this[Ko]=e}get target(){return this[gt]}get type(){return this[Ko]}};Object.defineProperty(_e.prototype,"target",{enumerable:!0});Object.defineProperty(_e.prototype,"type",{enumerable:!0});var qe=class extends _e{constructor(e,n={}){super(e),this[$o]=n.code===void 0?0:n.code,this[Jo]=n.reason===void 0?"":n.reason,this[Xo]=n.wasClean===void 0?!1:n.wasClean}get code(){return this[$o]}get reason(){return this[Jo]}get wasClean(){return this[Xo]}};Object.defineProperty(qe.prototype,"code",{enumerable:!0});Object.defineProperty(qe.prototype,"reason",{enumerable:!0});Object.defineProperty(qe.prototype,"wasClean",{enumerable:!0});var mt=class extends _e{constructor(e,n={}){super(e),this[Vo]=n.error===void 0?null:n.error,this[Yo]=n.message===void 0?"":n.message}get error(){return this[Vo]}get message(){return this[Yo]}};Object.defineProperty(mt.prototype,"error",{enumerable:!0});Object.defineProperty(mt.prototype,"message",{enumerable:!0});var Jt=class extends _e{constructor(e,n={}){super(e),this[zo]=n.data===void 0?null:n.data}get data(){return this[zo]}};Object.defineProperty(Jt.prototype,"data",{enumerable:!0});var Yf={addEventListener(t,e,n={}){for(let s of this.listeners(t))if(!n[Yt]&&s[Ss]===e&&!s[Yt])return;let r;if(t==="message")r=function(i,o){let a=new Jt("message",{data:o?i:i.toString()});a[gt]=this,jn(e,this,a)};else if(t==="close")r=function(i,o){let a=new qe("close",{code:i,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[gt]=this,jn(e,this,a)};else if(t==="error")r=function(i){let o=new mt("error",{error:i,message:i.message});o[gt]=this,jn(e,this,o)};else if(t==="open")r=function(){let i=new _e("open");i[gt]=this,jn(e,this,i)};else return;r[Yt]=!!n[Yt],r[Ss]=e,n.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let n of this.listeners(t))if(n[Ss]===e&&!n[Yt]){this.removeListener(t,n);break}}};Qo.exports={CloseEvent:qe,ErrorEvent:mt,Event:_e,EventTarget:Yf,MessageEvent:Jt};function jn(t,e,n){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,n):t.call(e,n)}});var _s=v((m_,ea)=>{"use strict";var{tokenChars:Kt}=ft();function he(t,e,n){t[e]===void 0?t[e]=[n]:t[e].push(n)}function Jf(t){let e=Object.create(null),n=Object.create(null),r=!1,s=!1,i=!1,o,a,l=-1,u=-1,c=-1,d=0;for(;d<t.length;d++)if(u=t.charCodeAt(d),o===void 0)if(c===-1&&Kt[u]===1)l===-1&&(l=d);else if(d!==0&&(u===32||u===9))c===-1&&l!==-1&&(c=d);else if(u===59||u===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);c===-1&&(c=d);let h=t.slice(l,c);u===44?(he(e,h,n),n=Object.create(null)):o=h,l=c=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);else if(a===void 0)if(c===-1&&Kt[u]===1)l===-1&&(l=d);else if(u===32||u===9)c===-1&&l!==-1&&(c=d);else if(u===59||u===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);c===-1&&(c=d),he(n,t.slice(l,c),!0),u===44&&(he(e,o,n),n=Object.create(null),o=void 0),l=c=-1}else if(u===61&&l!==-1&&c===-1)a=t.slice(l,d),l=c=-1;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(s){if(Kt[u]!==1)throw new SyntaxError(`Unexpected character at index ${d}`);l===-1?l=d:r||(r=!0),s=!1}else if(i)if(Kt[u]===1)l===-1&&(l=d);else if(u===34&&l!==-1)i=!1,c=d;else if(u===92)s=!0;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(u===34&&t.charCodeAt(d-1)===61)i=!0;else if(c===-1&&Kt[u]===1)l===-1&&(l=d);else if(l!==-1&&(u===32||u===9))c===-1&&(c=d);else if(u===59||u===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);c===-1&&(c=d);let h=t.slice(l,c);r&&(h=h.replace(/\\/g,""),r=!1),he(n,a,h),u===44&&(he(e,o,n),n=Object.create(null),o=void 0),a=void 0,l=c=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);if(l===-1||i||u===32||u===9)throw new SyntaxError("Unexpected end of input");c===-1&&(c=d);let p=t.slice(l,c);return o===void 0?he(e,p,n):(a===void 0?he(n,p,!0):r?he(n,a,p.replace(/\\/g,"")):he(n,a,p),he(e,o,n)),e}function Kf(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(", ")}ea.exports={format:Kf,parse:Jf}});var Yn=v((S_,fa)=>{"use strict";var Xf=require("events"),Qf=require("https"),Zf=require("http"),ra=require("net"),ep=require("tls"),{randomBytes:tp,createHash:np}=require("crypto"),{Duplex:y_,Readable:v_}=require("stream"),{URL:bs}=require("url"),xe=Vt(),rp=gs(),sp=vs(),{isBlob:ip}=ft(),{BINARY_TYPES:ta,CLOSE_TIMEOUT:op,EMPTY_BUFFER:$n,GUID:ap,kForOnEventAttribute:ws,kListener:lp,kStatusCode:cp,kWebSocket:W,NOOP:sa}=ve(),{EventTarget:{addEventListener:up,removeEventListener:dp}}=Zo(),{format:fp,parse:pp}=_s(),{toBuffer:hp}=$t(),ia=Symbol("kAborted"),Is=[8,13],be=["CONNECTING","OPEN","CLOSING","CLOSED"],gp=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,L=class t extends Xf{constructor(e,n,r){super(),this._binaryType=ta[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=$n,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=t.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,n===void 0?n=[]:Array.isArray(n)||(typeof n=="object"&&n!==null?(r=n,n=[]):n=[n]),oa(this,e,n,r)):(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){ta.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 rp({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),i=new sp(e,this._extensions,r.generateMask);this._receiver=s,this._sender=i,this._socket=e,s[W]=this,i[W]=this,e[W]=this,s.on("conclude",vp),s.on("drain",Sp),s.on("error",_p),s.on("message",bp),s.on("ping",wp),s.on("pong",Ip),i.onerror=Tp,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),n.length>0&&e.unshift(n),e.on("close",ca),e.on("data",Vn),e.on("end",ua),e.on("error",da),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[xe.extensionName]&&this._extensions[xe.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){Q(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())}),la(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){Ts(this,e,r);return}n===void 0&&(n=!this._isServer),this._sender.ping(e||$n,n,r)}pong(e,n,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=n=void 0):typeof n=="function"&&(r=n,n=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ts(this,e,r);return}n===void 0&&(n=!this._isServer),this._sender.pong(e||$n,n,r)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,n,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof n=="function"&&(r=n,n={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Ts(this,e,r);return}let s={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[xe.extensionName]||(s.compress=!1),this._sender.send(e||$n,s,r)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){Q(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(L,"CONNECTING",{enumerable:!0,value:be.indexOf("CONNECTING")});Object.defineProperty(L.prototype,"CONNECTING",{enumerable:!0,value:be.indexOf("CONNECTING")});Object.defineProperty(L,"OPEN",{enumerable:!0,value:be.indexOf("OPEN")});Object.defineProperty(L.prototype,"OPEN",{enumerable:!0,value:be.indexOf("OPEN")});Object.defineProperty(L,"CLOSING",{enumerable:!0,value:be.indexOf("CLOSING")});Object.defineProperty(L.prototype,"CLOSING",{enumerable:!0,value:be.indexOf("CLOSING")});Object.defineProperty(L,"CLOSED",{enumerable:!0,value:be.indexOf("CLOSED")});Object.defineProperty(L.prototype,"CLOSED",{enumerable:!0,value:be.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(L.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(L.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[ws])return e[lp];return null},set(e){for(let n of this.listeners(t))if(n[ws]){this.removeListener(t,n);break}typeof e=="function"&&this.addEventListener(t,e,{[ws]:!0})}})});L.prototype.addEventListener=up;L.prototype.removeEventListener=dp;fa.exports=L;function oa(t,e,n,r){let s={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:op,protocolVersion:Is[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,!Is.includes(s.protocolVersion))throw new RangeError(`Unsupported protocol version: ${s.protocolVersion} (supported versions: ${Is.join(", ")})`);let i;if(e instanceof bs)i=e;else try{i=new bs(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 f=new SyntaxError(l);if(t._redirects===0)throw f;zn(t,f);return}let u=o?443:80,c=tp(16).toString("base64"),d=o?Qf.request:Zf.request,p=new Set,h;if(s.createConnection=s.createConnection||(o?yp:mp),s.defaultPort=s.defaultPort||u,s.port=i.port||u,s.host=i.hostname.startsWith("[")?i.hostname.slice(1,-1):i.hostname,s.headers={...s.headers,"Sec-WebSocket-Version":s.protocolVersion,"Sec-WebSocket-Key":c,Connection:"Upgrade",Upgrade:"websocket"},s.path=i.pathname+i.search,s.timeout=s.handshakeTimeout,s.perMessageDeflate&&(h=new xe(s.perMessageDeflate!==!0?s.perMessageDeflate:{},!1,s.maxPayload),s.headers["Sec-WebSocket-Extensions"]=fp({[xe.extensionName]:h.offer()})),n.length){for(let f of n){if(typeof f!="string"||!gp.test(f)||p.has(f))throw new SyntaxError("An invalid or duplicated subprotocol was specified");p.add(f)}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 f=s.path.split(":");s.socketPath=f[0],s.path=f[1]}let g;if(s.followRedirects){if(t._redirects===0){t._originalIpc=a,t._originalSecure=o,t._originalHostOrSocketPath=a?s.socketPath:i.host;let f=r&&r.headers;if(r={...r,headers:{}},f)for(let[m,y]of Object.entries(f))r.headers[m.toLowerCase()]=y}else if(t.listenerCount("redirect")===0){let f=a?t._originalIpc?s.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:i.host===t._originalHostOrSocketPath;(!f||t._originalSecure&&!o)&&(delete s.headers.authorization,delete s.headers.cookie,f||delete s.headers.host,s.auth=void 0)}s.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(s.auth).toString("base64")),g=t._req=d(s),t._redirects&&t.emit("redirect",t.url,g)}else g=t._req=d(s);s.timeout&&g.on("timeout",()=>{Q(t,g,"Opening handshake has timed out")}),g.on("error",f=>{g===null||g[ia]||(g=t._req=null,zn(t,f))}),g.on("response",f=>{let m=f.headers.location,y=f.statusCode;if(m&&s.followRedirects&&y>=300&&y<400){if(++t._redirects>s.maxRedirects){Q(t,g,"Maximum redirects exceeded");return}g.abort();let T;try{T=new bs(m,e)}catch{let w=new SyntaxError(`Invalid URL: ${m}`);zn(t,w);return}oa(t,T,n,r)}else t.emit("unexpected-response",g,f)||Q(t,g,`Unexpected server response: ${f.statusCode}`)}),g.on("upgrade",(f,m,y)=>{if(t.emit("upgrade",f),t.readyState!==L.CONNECTING)return;g=t._req=null;let T=f.headers.upgrade;if(T===void 0||T.toLowerCase()!=="websocket"){Q(t,m,"Invalid Upgrade header");return}let A=np("sha1").update(c+ap).digest("base64");if(f.headers["sec-websocket-accept"]!==A){Q(t,m,"Invalid Sec-WebSocket-Accept header");return}let w=f.headers["sec-websocket-protocol"],C;if(w!==void 0?p.size?p.has(w)||(C="Server sent an invalid subprotocol"):C="Server sent a subprotocol but none was requested":p.size&&(C="Server sent no subprotocol"),C){Q(t,m,C);return}w&&(t._protocol=w);let P=f.headers["sec-websocket-extensions"];if(P!==void 0){if(!h){Q(t,m,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let G;try{G=pp(P)}catch{Q(t,m,"Invalid Sec-WebSocket-Extensions header");return}let ye=Object.keys(G);if(ye.length!==1||ye[0]!==xe.extensionName){Q(t,m,"Server indicated an extension that was not requested");return}try{h.accept(G[xe.extensionName])}catch{Q(t,m,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[xe.extensionName]=h}t.setSocket(m,y,{allowSynchronousEvents:s.allowSynchronousEvents,generateMask:s.generateMask,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation})}),s.finishRequest?s.finishRequest(g,t):g.end()}function zn(t,e){t._readyState=L.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function mp(t){return t.path=t.socketPath,ra.connect(t)}function yp(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=ra.isIP(t.host)?"":t.host),ep.connect(t)}function Q(t,e,n){t._readyState=L.CLOSING;let r=new Error(n);Error.captureStackTrace(r,Q),e.setHeader?(e[ia]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(zn,t,r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Ts(t,e,n){if(e){let r=ip(e)?e.size:hp(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(n){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${be[t.readyState]})`);process.nextTick(n,r)}}function vp(t,e){let n=this[W];n._closeFrameReceived=!0,n._closeMessage=e,n._closeCode=t,n._socket[W]!==void 0&&(n._socket.removeListener("data",Vn),process.nextTick(aa,n._socket),t===1005?n.close():n.close(t,e))}function Sp(){let t=this[W];t.isPaused||t._socket.resume()}function _p(t){let e=this[W];e._socket[W]!==void 0&&(e._socket.removeListener("data",Vn),process.nextTick(aa,e._socket),e.close(t[cp])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function na(){this[W].emitClose()}function bp(t,e){this[W].emit("message",t,e)}function wp(t){let e=this[W];e._autoPong&&e.pong(t,!this._isServer,sa),e.emit("ping",t)}function Ip(t){this[W].emit("pong",t)}function aa(t){t.resume()}function Tp(t){let e=this[W];e.readyState!==L.CLOSED&&(e.readyState===L.OPEN&&(e._readyState=L.CLOSING,la(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function la(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function ca(){let t=this[W];if(this.removeListener("close",ca),this.removeListener("data",Vn),this.removeListener("end",ua),t._readyState=L.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[W]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",na),t._receiver.on("finish",na))}function Vn(t){this[W]._receiver.write(t)||this.pause()}function ua(){let t=this[W];t._readyState=L.CLOSING,t._receiver.end(),this.end()}function da(){let t=this[W];this.removeListener("error",da),this.on("error",sa),t&&(t._readyState=L.CLOSING,this.destroy())}});var ma=v((b_,ga)=>{"use strict";var __=Yn(),{Duplex:Ap}=require("stream");function pa(t){t.emit("close")}function kp(){!this.destroyed&&this._writableState.finished&&this.destroy()}function ha(t){this.removeListener("error",ha),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function Cp(t,e){let n=!0,r=new Ap({...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(pa,r);return}let o=!1;t.once("error",function(l){o=!0,i(l)}),t.once("close",function(){o||i(s),process.nextTick(pa,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",kp),r.on("error",ha),r}ga.exports=Cp});var va=v((w_,ya)=>{"use strict";var{tokenChars:xp}=ft();function Rp(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&&xp[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}ya.exports={parse:Rp}});var Aa=v((T_,Ta)=>{"use strict";var Ep=require("events"),Jn=require("http"),{Duplex:I_}=require("stream"),{createHash:Pp}=require("crypto"),Sa=_s(),Ge=Vt(),Mp=va(),Lp=Yn(),{CLOSE_TIMEOUT:Np,GUID:Op,kWebSocket:Bp}=ve(),Dp=/^[+/0-9A-Za-z]{22}==$/,_a=0,ba=1,Ia=2,As=class extends Ep{constructor(e,n){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:Np,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Lp,...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=Jn.createServer((r,s)=>{let i=Jn.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=Fp(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=_a}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===Ia){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Xt,this);return}if(e&&this.once("close",e),this._state!==ba)if(this._state=ba,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(Xt,this):process.nextTick(Xt,this);else{let n=this._server;this._removeListeners(),this._removeListeners=this._server=null,n.close(()=>{Xt(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",wa);let i=e.headers["sec-websocket-key"],o=e.headers.upgrade,a=+e.headers["sec-websocket-version"];if(e.method!=="GET"){je(this,e,n,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){je(this,e,n,400,"Invalid Upgrade header");return}if(i===void 0||!Dp.test(i)){je(this,e,n,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){je(this,e,n,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){Qt(n,400);return}let l=e.headers["sec-websocket-protocol"],u=new Set;if(l!==void 0)try{u=Mp.parse(l)}catch{je(this,e,n,400,"Invalid Sec-WebSocket-Protocol header");return}let c=e.headers["sec-websocket-extensions"],d={};if(this.options.perMessageDeflate&&c!==void 0){let p=new Ge(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let h=Sa.parse(c);h[Ge.extensionName]&&(p.accept(h[Ge.extensionName]),d[Ge.extensionName]=p)}catch{je(this,e,n,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let p={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(p,(h,g,f,m)=>{if(!h)return Qt(n,g||401,f,m);this.completeUpgrade(d,i,u,e,n,r,s)});return}if(!this.options.verifyClient(p))return Qt(n,401)}this.completeUpgrade(d,i,u,e,n,r,s)}completeUpgrade(e,n,r,s,i,o,a){if(!i.readable||!i.writable)return i.destroy();if(i[Bp])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>_a)return Qt(i,503);let u=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Pp("sha1").update(n+Op).digest("base64")}`],c=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&&(u.push(`Sec-WebSocket-Protocol: ${d}`),c._protocol=d)}if(e[Ge.extensionName]){let d=e[Ge.extensionName].params,p=Sa.format({[Ge.extensionName]:[d]});u.push(`Sec-WebSocket-Extensions: ${p}`),c._extensions=e}this.emit("headers",u,s),i.write(u.concat(`\r
1
+ "use strict";var _f=Object.create;var To=Object.defineProperty;var bf=Object.getOwnPropertyDescriptor;var wf=Object.getOwnPropertyNames;var If=Object.getPrototypeOf,Tf=Object.prototype.hasOwnProperty;var v=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Af=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of wf(e))!Tf.call(t,r)&&r!==n&&To(t,r,{get:()=>e[r],enumerable:!(s=bf(e,r))||s.enumerable});return t};var ut=(t,e,n)=>(n=t!=null?_f(If(t)):{},Af(e||!t||!t.__esModule?To(n,"default",{value:t,enumerable:!0}):n,t));var ve=v((A_,Co)=>{"use strict";var Ao=["nodebuffer","arraybuffer","fragments"],ko=typeof Blob<"u";ko&&Ao.push("blob");Co.exports={BINARY_TYPES:Ao,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:ko,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var Vt=v((k_,Un)=>{"use strict";var{EMPTY_BUFFER:kf}=ve(),lr=Buffer[Symbol.species];function Cf(t,e){if(t.length===0)return kf;if(t.length===1)return t[0];let n=Buffer.allocUnsafe(e),s=0;for(let r=0;r<t.length;r++){let i=t[r];n.set(i,s),s+=i.length}return s<e?new lr(n.buffer,n.byteOffset,s):n}function xo(t,e,n,s,r){for(let i=0;i<r;i++)n[s+i]=t[i]^e[i&3]}function Ro(t,e){for(let n=0;n<t.length;n++)t[n]^=e[n&3]}function xf(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function cr(t){if(cr.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new lr(t):ArrayBuffer.isView(t)?e=new lr(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),cr.readOnly=!1),e}Un.exports={concat:Cf,mask:xo,toArrayBuffer:xf,toBuffer:cr,unmask:Ro};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");Un.exports.mask=function(e,n,s,r,i){i<48?xo(e,n,s,r,i):t.mask(e,n,s,r,i)},Un.exports.unmask=function(e,n){e.length<32?Ro(e,n):t.unmask(e,n)}}catch{}});var Mo=v((C_,Po)=>{"use strict";var Eo=Symbol("kDone"),ur=Symbol("kRun"),dr=class{constructor(e){this[Eo]=()=>{this.pending--,this[ur]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[ur]()}[ur](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[Eo])}}};Po.exports=dr});var Yt=v((x_,Bo)=>{"use strict";var Qt=require("zlib"),Lo=Vt(),Rf=Mo(),{kStatusCode:No}=ve(),Ef=Buffer[Symbol.species],Pf=Buffer.from([0,0,255,255]),qn=Symbol("permessage-deflate"),Se=Symbol("total-length"),dt=Symbol("callback"),Ce=Symbol("buffers"),ft=Symbol("error"),Wn,fr=class{constructor(e,n,s){if(this._maxPayload=s|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,!Wn){let r=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;Wn=new Rf(r)}}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[dt];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,s=e.find(r=>!(n.serverNoContextTakeover===!1&&r.server_no_context_takeover||r.server_max_window_bits&&(n.serverMaxWindowBits===!1||typeof n.serverMaxWindowBits=="number"&&n.serverMaxWindowBits>r.server_max_window_bits)||typeof n.clientMaxWindowBits=="number"&&!r.client_max_window_bits));if(!s)throw new Error("None of the extension offers can be accepted");return n.serverNoContextTakeover&&(s.server_no_context_takeover=!0),n.clientNoContextTakeover&&(s.client_no_context_takeover=!0),typeof n.serverMaxWindowBits=="number"&&(s.server_max_window_bits=n.serverMaxWindowBits),typeof n.clientMaxWindowBits=="number"?s.client_max_window_bits=n.clientMaxWindowBits:(s.client_max_window_bits===!0||n.clientMaxWindowBits===!1)&&delete s.client_max_window_bits,s}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(s=>{let r=n[s];if(r.length>1)throw new Error(`Parameter "${s}" must have only a single value`);if(r=r[0],s==="client_max_window_bits"){if(r!==!0){let i=+r;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${s}": ${r}`);r=i}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${s}": ${r}`)}else if(s==="server_max_window_bits"){let i=+r;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${s}": ${r}`);r=i}else if(s==="client_no_context_takeover"||s==="server_no_context_takeover"){if(r!==!0)throw new TypeError(`Invalid value for parameter "${s}": ${r}`)}else throw new Error(`Unknown parameter "${s}"`);n[s]=r})}),e}decompress(e,n,s){Wn.add(r=>{this._decompress(e,n,(i,o)=>{r(),s(i,o)})})}compress(e,n,s){Wn.add(r=>{this._compress(e,n,(i,o)=>{r(),s(i,o)})})}_decompress(e,n,s){let r=this._isServer?"client":"server";if(!this._inflate){let i=`${r}_max_window_bits`,o=typeof this.params[i]!="number"?Qt.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=Qt.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[qn]=this,this._inflate[Se]=0,this._inflate[Ce]=[],this._inflate.on("error",Lf),this._inflate.on("data",Oo)}this._inflate[dt]=s,this._inflate.write(e),n&&this._inflate.write(Pf),this._inflate.flush(()=>{let i=this._inflate[ft];if(i){this._inflate.close(),this._inflate=null,s(i);return}let o=Lo.concat(this._inflate[Ce],this._inflate[Se]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Se]=0,this._inflate[Ce]=[],n&&this.params[`${r}_no_context_takeover`]&&this._inflate.reset()),s(null,o)})}_compress(e,n,s){let r=this._isServer?"server":"client";if(!this._deflate){let i=`${r}_max_window_bits`,o=typeof this.params[i]!="number"?Qt.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=Qt.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[Se]=0,this._deflate[Ce]=[],this._deflate.on("data",Mf)}this._deflate[dt]=s,this._deflate.write(e),this._deflate.flush(Qt.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=Lo.concat(this._deflate[Ce],this._deflate[Se]);n&&(i=new Ef(i.buffer,i.byteOffset,i.length-4)),this._deflate[dt]=null,this._deflate[Se]=0,this._deflate[Ce]=[],n&&this.params[`${r}_no_context_takeover`]&&this._deflate.reset(),s(null,i)})}};Bo.exports=fr;function Mf(t){this[Ce].push(t),this[Se]+=t.length}function Oo(t){if(this[Se]+=t.length,this[qn]._maxPayload<1||this[Se]<=this[qn]._maxPayload){this[Ce].push(t);return}this[ft]=new RangeError("Max payload size exceeded"),this[ft].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[ft][No]=1009,this.removeListener("data",Oo),this.reset()}function Lf(t){if(this[qn]._inflate=null,this[ft]){this[dt](this[ft]);return}t[No]=1007,this[dt](t)}});var pt=v((R_,Gn)=>{"use strict";var{isUtf8:Do}=require("buffer"),{hasBlob:Nf}=ve(),Of=[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 Bf(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function pr(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 Df(t){return Nf&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}Gn.exports={isBlob:Df,isValidStatusCode:Bf,isValidUTF8:pr,tokenChars:Of};if(Do)Gn.exports.isValidUTF8=function(t){return t.length<24?pr(t):Do(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");Gn.exports.isValidUTF8=function(e){return e.length<32?pr(e):t(e)}}catch{}});var vr=v((E_,jo)=>{"use strict";var{Writable:Ff}=require("stream"),Fo=Yt(),{BINARY_TYPES:Hf,EMPTY_BUFFER:Ho,kStatusCode:Uf,kWebSocket:Wf}=ve(),{concat:hr,toArrayBuffer:qf,unmask:Gf}=Vt(),{isValidStatusCode:jf,isValidUTF8:Uo}=pt(),jn=Buffer[Symbol.species],te=0,Wo=1,qo=2,Go=3,gr=4,mr=5,$n=6,yr=class extends Ff{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||Hf[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[Wf]=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=te}_write(e,n,s){if(this._opcode===8&&this._state==te)return s();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(s)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let s=this._buffers[0];return this._buffers[0]=new jn(s.buffer,s.byteOffset+e,s.length-e),new jn(s.buffer,s.byteOffset,e)}let n=Buffer.allocUnsafe(e);do{let s=this._buffers[0],r=n.length-e;e>=s.length?n.set(this._buffers.shift(),r):(n.set(new Uint8Array(s.buffer,s.byteOffset,e),r),this._buffers[0]=new jn(s.buffer,s.byteOffset+e,s.length-e)),e-=s.length}while(e>0);return n}startLoop(e){this._loop=!0;do switch(this._state){case te:this.getInfo(e);break;case Wo:this.getPayloadLength16(e);break;case qo:this.getPayloadLength64(e);break;case Go:this.getMask();break;case gr:this.getData(e);break;case mr:case $n: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 r=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(r);return}let s=(n[0]&64)===64;if(s&&!this._extensions[Fo.extensionName]){let r=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(r);return}if(this._fin=(n[0]&128)===128,this._opcode=n[0]&15,this._payloadLength=n[1]&127,this._opcode===0){if(s){let r=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(r);return}if(!this._fragmented){let r=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(r);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let r=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(r);return}this._compressed=s}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let r=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(r);return}if(s){let r=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(r);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let r=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(r);return}}else{let r=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(r);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(n[1]&128)===128,this._isServer){if(!this._masked){let r=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(r);return}}else if(this._masked){let r=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(r);return}this._payloadLength===126?this._state=Wo:this._payloadLength===127?this._state=qo: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),s=n.readUInt32BE(0);if(s>Math.pow(2,21)-1){let r=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(r);return}this._payloadLength=s*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=Go:this._state=gr}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=gr}getData(e){let n=Ho;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&&Gf(n,this._mask)}if(this._opcode>7){this.controlMessage(n,e);return}if(this._compressed){this._state=mr,this.decompress(n,e);return}n.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(n)),this.dataMessage(e)}decompress(e,n){this._extensions[Fo.extensionName].decompress(e,this._fin,(r,i)=>{if(r)return n(r);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===te&&this.startLoop(n)})}dataMessage(e){if(!this._fin){this._state=te;return}let n=this._messageLength,s=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let r;this._binaryType==="nodebuffer"?r=hr(s,n):this._binaryType==="arraybuffer"?r=qf(hr(s,n)):this._binaryType==="blob"?r=new Blob(s):r=s,this._allowSynchronousEvents?(this.emit("message",r,!0),this._state=te):(this._state=$n,setImmediate(()=>{this.emit("message",r,!0),this._state=te,this.startLoop(e)}))}else{let r=hr(s,n);if(!this._skipUTF8Validation&&!Uo(r)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(i);return}this._state===mr||this._allowSynchronousEvents?(this.emit("message",r,!1),this._state=te):(this._state=$n,setImmediate(()=>{this.emit("message",r,!1),this._state=te,this.startLoop(e)}))}}controlMessage(e,n){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,Ho),this.end();else{let s=e.readUInt16BE(0);if(!jf(s)){let i=this.createError(RangeError,`invalid status code ${s}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");n(i);return}let r=new jn(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Uo(r)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");n(i);return}this._loop=!1,this.emit("conclude",s,r),this.end()}this._state=te;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=te):(this._state=$n,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=te,this.startLoop(n)}))}createError(e,n,s,r,i){this._loop=!1,this._errored=!0;let o=new e(s?`Invalid WebSocket frame: ${n}`:n);return Error.captureStackTrace(o,this.createError),o.code=i,o[Uf]=r,o}};jo.exports=yr});var br=v((M_,Vo)=>{"use strict";var{Duplex:P_}=require("stream"),{randomFillSync:$f}=require("crypto"),$o=Yt(),{EMPTY_BUFFER:zf,kWebSocket:Vf,NOOP:Qf}=ve(),{isBlob:ht,isValidStatusCode:Yf}=pt(),{mask:zo,toBuffer:We}=Vt(),ne=Symbol("kByteLength"),Jf=Buffer.alloc(4),zn=8*1024,qe,gt=zn,le=0,Kf=1,Xf=2,Sr=class t{constructor(e,n,s){this._extensions=n||{},s&&(this._generateMask=s,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=le,this.onerror=Qf,this[Vf]=void 0}static frame(e,n){let s,r=!1,i=2,o=!1;n.mask&&(s=n.maskBuffer||Jf,n.generateMask?n.generateMask(s):(gt===zn&&(qe===void 0&&(qe=Buffer.alloc(zn)),$f(qe,0,zn),gt=0),s[0]=qe[gt++],s[1]=qe[gt++],s[2]=qe[gt++],s[3]=qe[gt++]),o=(s[0]|s[1]|s[2]|s[3])===0,i=6);let a;typeof e=="string"?(!n.mask||o)&&n[ne]!==void 0?a=n[ne]:(e=Buffer.from(e),a=e.length):(a=e.length,r=n.mask&&n.readOnly&&!o);let l=a;a>=65536?(i+=8,l=127):a>125&&(i+=2,l=126);let u=Buffer.allocUnsafe(r?a+i:i);return u[0]=n.fin?n.opcode|128:n.opcode,n.rsv1&&(u[0]|=64),u[1]=l,l===126?u.writeUInt16BE(a,2):l===127&&(u[2]=u[3]=0,u.writeUIntBE(a,4,6)),n.mask?(u[1]|=128,u[i-4]=s[0],u[i-3]=s[1],u[i-2]=s[2],u[i-1]=s[3],o?[u,e]:r?(zo(e,s,u,i,a),[u]):(zo(e,s,e,0,a),[u,e])):[u,e]}close(e,n,s,r){let i;if(e===void 0)i=zf;else{if(typeof e!="number"||!Yf(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={[ne]:i.length,fin:!0,generateMask:this._generateMask,mask:s,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==le?this.enqueue([this.dispatch,i,!1,o,r]):this.sendFrame(t.frame(i,o),r)}ping(e,n,s){let r,i;if(typeof e=="string"?(r=Buffer.byteLength(e),i=!1):ht(e)?(r=e.size,i=!1):(e=We(e),r=e.length,i=We.readOnly),r>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[ne]:r,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};ht(e)?this._state!==le?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==le?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}pong(e,n,s){let r,i;if(typeof e=="string"?(r=Buffer.byteLength(e),i=!1):ht(e)?(r=e.size,i=!1):(e=We(e),r=e.length,i=We.readOnly),r>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[ne]:r,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};ht(e)?this._state!==le?this.enqueue([this.getBlobData,e,!1,o,s]):this.getBlobData(e,!1,o,s):this._state!==le?this.enqueue([this.dispatch,e,!1,o,s]):this.sendFrame(t.frame(e,o),s)}send(e,n,s){let r=this._extensions[$o.extensionName],i=n.binary?2:1,o=n.compress,a,l;typeof e=="string"?(a=Buffer.byteLength(e),l=!1):ht(e)?(a=e.size,l=!1):(e=We(e),a=e.length,l=We.readOnly),this._firstFragment?(this._firstFragment=!1,o&&r&&r.params[r._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(o=a>=r._threshold),this._compress=o):(o=!1,i=0),n.fin&&(this._firstFragment=!0);let u={[ne]:a,fin:n.fin,generateMask:this._generateMask,mask:n.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:l,rsv1:o};ht(e)?this._state!==le?this.enqueue([this.getBlobData,e,this._compress,u,s]):this.getBlobData(e,this._compress,u,s):this._state!==le?this.enqueue([this.dispatch,e,this._compress,u,s]):this.dispatch(e,this._compress,u,s)}getBlobData(e,n,s,r){this._bufferedBytes+=s[ne],this._state=Xf,e.arrayBuffer().then(i=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(_r,this,a,r);return}this._bufferedBytes-=s[ne];let o=We(i);n?this.dispatch(o,n,s,r):(this._state=le,this.sendFrame(t.frame(o,s),r),this.dequeue())}).catch(i=>{process.nextTick(Zf,this,i,r)})}dispatch(e,n,s,r){if(!n){this.sendFrame(t.frame(e,s),r);return}let i=this._extensions[$o.extensionName];this._bufferedBytes+=s[ne],this._state=Kf,i.compress(e,s.fin,(o,a)=>{if(this._socket.destroyed){let l=new Error("The socket was closed while data was being compressed");_r(this,l,r);return}this._bufferedBytes-=s[ne],this._state=le,s.readOnly=!1,this.sendFrame(t.frame(a,s),r),this.dequeue()})}dequeue(){for(;this._state===le&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][ne],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][ne],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)}};Vo.exports=Sr;function _r(t,e,n){typeof n=="function"&&n(e);for(let s=0;s<t._queue.length;s++){let r=t._queue[s],i=r[r.length-1];typeof i=="function"&&i(e)}}function Zf(t,e,n){_r(t,e,n),t.onerror(e)}});var na=v((L_,ta)=>{"use strict";var{kForOnEventAttribute:Jt,kListener:wr}=ve(),Qo=Symbol("kCode"),Yo=Symbol("kData"),Jo=Symbol("kError"),Ko=Symbol("kMessage"),Xo=Symbol("kReason"),mt=Symbol("kTarget"),Zo=Symbol("kType"),ea=Symbol("kWasClean"),_e=class{constructor(e){this[mt]=null,this[Zo]=e}get target(){return this[mt]}get type(){return this[Zo]}};Object.defineProperty(_e.prototype,"target",{enumerable:!0});Object.defineProperty(_e.prototype,"type",{enumerable:!0});var Ge=class extends _e{constructor(e,n={}){super(e),this[Qo]=n.code===void 0?0:n.code,this[Xo]=n.reason===void 0?"":n.reason,this[ea]=n.wasClean===void 0?!1:n.wasClean}get code(){return this[Qo]}get reason(){return this[Xo]}get wasClean(){return this[ea]}};Object.defineProperty(Ge.prototype,"code",{enumerable:!0});Object.defineProperty(Ge.prototype,"reason",{enumerable:!0});Object.defineProperty(Ge.prototype,"wasClean",{enumerable:!0});var yt=class extends _e{constructor(e,n={}){super(e),this[Jo]=n.error===void 0?null:n.error,this[Ko]=n.message===void 0?"":n.message}get error(){return this[Jo]}get message(){return this[Ko]}};Object.defineProperty(yt.prototype,"error",{enumerable:!0});Object.defineProperty(yt.prototype,"message",{enumerable:!0});var Kt=class extends _e{constructor(e,n={}){super(e),this[Yo]=n.data===void 0?null:n.data}get data(){return this[Yo]}};Object.defineProperty(Kt.prototype,"data",{enumerable:!0});var ep={addEventListener(t,e,n={}){for(let r of this.listeners(t))if(!n[Jt]&&r[wr]===e&&!r[Jt])return;let s;if(t==="message")s=function(i,o){let a=new Kt("message",{data:o?i:i.toString()});a[mt]=this,Vn(e,this,a)};else if(t==="close")s=function(i,o){let a=new Ge("close",{code:i,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[mt]=this,Vn(e,this,a)};else if(t==="error")s=function(i){let o=new yt("error",{error:i,message:i.message});o[mt]=this,Vn(e,this,o)};else if(t==="open")s=function(){let i=new _e("open");i[mt]=this,Vn(e,this,i)};else return;s[Jt]=!!n[Jt],s[wr]=e,n.once?this.once(t,s):this.on(t,s)},removeEventListener(t,e){for(let n of this.listeners(t))if(n[wr]===e&&!n[Jt]){this.removeListener(t,n);break}}};ta.exports={CloseEvent:Ge,ErrorEvent:yt,Event:_e,EventTarget:ep,MessageEvent:Kt};function Vn(t,e,n){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,n):t.call(e,n)}});var Ir=v((N_,sa)=>{"use strict";var{tokenChars:Xt}=pt();function he(t,e,n){t[e]===void 0?t[e]=[n]:t[e].push(n)}function tp(t){let e=Object.create(null),n=Object.create(null),s=!1,r=!1,i=!1,o,a,l=-1,u=-1,c=-1,d=0;for(;d<t.length;d++)if(u=t.charCodeAt(d),o===void 0)if(c===-1&&Xt[u]===1)l===-1&&(l=d);else if(d!==0&&(u===32||u===9))c===-1&&l!==-1&&(c=d);else if(u===59||u===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);c===-1&&(c=d);let h=t.slice(l,c);u===44?(he(e,h,n),n=Object.create(null)):o=h,l=c=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);else if(a===void 0)if(c===-1&&Xt[u]===1)l===-1&&(l=d);else if(u===32||u===9)c===-1&&l!==-1&&(c=d);else if(u===59||u===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);c===-1&&(c=d),he(n,t.slice(l,c),!0),u===44&&(he(e,o,n),n=Object.create(null),o=void 0),l=c=-1}else if(u===61&&l!==-1&&c===-1)a=t.slice(l,d),l=c=-1;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(r){if(Xt[u]!==1)throw new SyntaxError(`Unexpected character at index ${d}`);l===-1?l=d:s||(s=!0),r=!1}else if(i)if(Xt[u]===1)l===-1&&(l=d);else if(u===34&&l!==-1)i=!1,c=d;else if(u===92)r=!0;else throw new SyntaxError(`Unexpected character at index ${d}`);else if(u===34&&t.charCodeAt(d-1)===61)i=!0;else if(c===-1&&Xt[u]===1)l===-1&&(l=d);else if(l!==-1&&(u===32||u===9))c===-1&&(c=d);else if(u===59||u===44){if(l===-1)throw new SyntaxError(`Unexpected character at index ${d}`);c===-1&&(c=d);let h=t.slice(l,c);s&&(h=h.replace(/\\/g,""),s=!1),he(n,a,h),u===44&&(he(e,o,n),n=Object.create(null),o=void 0),a=void 0,l=c=-1}else throw new SyntaxError(`Unexpected character at index ${d}`);if(l===-1||i||u===32||u===9)throw new SyntaxError("Unexpected end of input");c===-1&&(c=d);let f=t.slice(l,c);return o===void 0?he(e,f,n):(a===void 0?he(n,f,!0):s?he(n,a,f.replace(/\\/g,"")):he(n,a,f),he(e,o,n)),e}function np(t){return Object.keys(t).map(e=>{let n=t[e];return Array.isArray(n)||(n=[n]),n.map(s=>[e].concat(Object.keys(s).map(r=>{let i=s[r];return Array.isArray(i)||(i=[i]),i.map(o=>o===!0?r:`${r}=${o}`).join("; ")})).join("; ")).join(", ")}).join(", ")}sa.exports={format:np,parse:tp}});var Kn=v((D_,ga)=>{"use strict";var sp=require("events"),rp=require("https"),ip=require("http"),oa=require("net"),op=require("tls"),{randomBytes:ap,createHash:lp}=require("crypto"),{Duplex:O_,Readable:B_}=require("stream"),{URL:Tr}=require("url"),xe=Yt(),cp=vr(),up=br(),{isBlob:dp}=pt(),{BINARY_TYPES:ra,CLOSE_TIMEOUT:fp,EMPTY_BUFFER:Qn,GUID:pp,kForOnEventAttribute:Ar,kListener:hp,kStatusCode:gp,kWebSocket:q,NOOP:aa}=ve(),{EventTarget:{addEventListener:mp,removeEventListener:yp}}=na(),{format:vp,parse:Sp}=Ir(),{toBuffer:_p}=Vt(),la=Symbol("kAborted"),kr=[8,13],be=["CONNECTING","OPEN","CLOSING","CLOSED"],bp=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,L=class t extends sp{constructor(e,n,s){super(),this._binaryType=ra[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Qn,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?(s=n,n=[]):n=[n]),ca(this,e,n,s)):(this._autoPong=s.autoPong,this._closeTimeout=s.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){ra.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,s){let r=new cp({allowSynchronousEvents:s.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation}),i=new up(e,this._extensions,s.generateMask);this._receiver=r,this._sender=i,this._socket=e,r[q]=this,i[q]=this,e[q]=this,r.on("conclude",Tp),r.on("drain",Ap),r.on("error",kp),r.on("message",Cp),r.on("ping",xp),r.on("pong",Rp),i.onerror=Ep,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),n.length>0&&e.unshift(n),e.on("close",fa),e.on("data",Jn),e.on("end",pa),e.on("error",ha),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[xe.extensionName]&&this._extensions[xe.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,s=>{s||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),da(this)}}pause(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,n,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(s=e,e=n=void 0):typeof n=="function"&&(s=n,n=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Cr(this,e,s);return}n===void 0&&(n=!this._isServer),this._sender.ping(e||Qn,n,s)}pong(e,n,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(s=e,e=n=void 0):typeof n=="function"&&(s=n,n=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Cr(this,e,s);return}n===void 0&&(n=!this._isServer),this._sender.pong(e||Qn,n,s)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,n,s){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof n=="function"&&(s=n,n={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){Cr(this,e,s);return}let r={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[xe.extensionName]||(r.compress=!1),this._sender.send(e||Qn,r,s)}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(L,"CONNECTING",{enumerable:!0,value:be.indexOf("CONNECTING")});Object.defineProperty(L.prototype,"CONNECTING",{enumerable:!0,value:be.indexOf("CONNECTING")});Object.defineProperty(L,"OPEN",{enumerable:!0,value:be.indexOf("OPEN")});Object.defineProperty(L.prototype,"OPEN",{enumerable:!0,value:be.indexOf("OPEN")});Object.defineProperty(L,"CLOSING",{enumerable:!0,value:be.indexOf("CLOSING")});Object.defineProperty(L.prototype,"CLOSING",{enumerable:!0,value:be.indexOf("CLOSING")});Object.defineProperty(L,"CLOSED",{enumerable:!0,value:be.indexOf("CLOSED")});Object.defineProperty(L.prototype,"CLOSED",{enumerable:!0,value:be.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(L.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(L.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[Ar])return e[hp];return null},set(e){for(let n of this.listeners(t))if(n[Ar]){this.removeListener(t,n);break}typeof e=="function"&&this.addEventListener(t,e,{[Ar]:!0})}})});L.prototype.addEventListener=mp;L.prototype.removeEventListener=yp;ga.exports=L;function ca(t,e,n,s){let r={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:fp,protocolVersion:kr[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...s,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=r.autoPong,t._closeTimeout=r.closeTimeout,!kr.includes(r.protocolVersion))throw new RangeError(`Unsupported protocol version: ${r.protocolVersion} (supported versions: ${kr.join(", ")})`);let i;if(e instanceof Tr)i=e;else try{i=new Tr(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}i.protocol==="http:"?i.protocol="ws:":i.protocol==="https:"&&(i.protocol="wss:"),t._url=i.href;let o=i.protocol==="wss:",a=i.protocol==="ws+unix:",l;if(i.protocol!=="ws:"&&!o&&!a?l=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!i.pathname?l="The URL's pathname is empty":i.hash&&(l="The URL contains a fragment identifier"),l){let p=new SyntaxError(l);if(t._redirects===0)throw p;Yn(t,p);return}let u=o?443:80,c=ap(16).toString("base64"),d=o?rp.request:ip.request,f=new Set,h;if(r.createConnection=r.createConnection||(o?Ip:wp),r.defaultPort=r.defaultPort||u,r.port=i.port||u,r.host=i.hostname.startsWith("[")?i.hostname.slice(1,-1):i.hostname,r.headers={...r.headers,"Sec-WebSocket-Version":r.protocolVersion,"Sec-WebSocket-Key":c,Connection:"Upgrade",Upgrade:"websocket"},r.path=i.pathname+i.search,r.timeout=r.handshakeTimeout,r.perMessageDeflate&&(h=new xe(r.perMessageDeflate!==!0?r.perMessageDeflate:{},!1,r.maxPayload),r.headers["Sec-WebSocket-Extensions"]=vp({[xe.extensionName]:h.offer()})),n.length){for(let p of n){if(typeof p!="string"||!bp.test(p)||f.has(p))throw new SyntaxError("An invalid or duplicated subprotocol was specified");f.add(p)}r.headers["Sec-WebSocket-Protocol"]=n.join(",")}if(r.origin&&(r.protocolVersion<13?r.headers["Sec-WebSocket-Origin"]=r.origin:r.headers.Origin=r.origin),(i.username||i.password)&&(r.auth=`${i.username}:${i.password}`),a){let p=r.path.split(":");r.socketPath=p[0],r.path=p[1]}let g;if(r.followRedirects){if(t._redirects===0){t._originalIpc=a,t._originalSecure=o,t._originalHostOrSocketPath=a?r.socketPath:i.host;let p=s&&s.headers;if(s={...s,headers:{}},p)for(let[m,y]of Object.entries(p))s.headers[m.toLowerCase()]=y}else if(t.listenerCount("redirect")===0){let p=a?t._originalIpc?r.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:i.host===t._originalHostOrSocketPath;(!p||t._originalSecure&&!o)&&(delete r.headers.authorization,delete r.headers.cookie,p||delete r.headers.host,r.auth=void 0)}r.auth&&!s.headers.authorization&&(s.headers.authorization="Basic "+Buffer.from(r.auth).toString("base64")),g=t._req=d(r),t._redirects&&t.emit("redirect",t.url,g)}else g=t._req=d(r);r.timeout&&g.on("timeout",()=>{Z(t,g,"Opening handshake has timed out")}),g.on("error",p=>{g===null||g[la]||(g=t._req=null,Yn(t,p))}),g.on("response",p=>{let m=p.headers.location,y=p.statusCode;if(m&&r.followRedirects&&y>=300&&y<400){if(++t._redirects>r.maxRedirects){Z(t,g,"Maximum redirects exceeded");return}g.abort();let C;try{C=new Tr(m,e)}catch{let A=new SyntaxError(`Invalid URL: ${m}`);Yn(t,A);return}ca(t,C,n,s)}else t.emit("unexpected-response",g,p)||Z(t,g,`Unexpected server response: ${p.statusCode}`)}),g.on("upgrade",(p,m,y)=>{if(t.emit("upgrade",p),t.readyState!==L.CONNECTING)return;g=t._req=null;let C=p.headers.upgrade;if(C===void 0||C.toLowerCase()!=="websocket"){Z(t,m,"Invalid Upgrade header");return}let _=lp("sha1").update(c+pp).digest("base64");if(p.headers["sec-websocket-accept"]!==_){Z(t,m,"Invalid Sec-WebSocket-Accept header");return}let A=p.headers["sec-websocket-protocol"],I;if(A!==void 0?f.size?f.has(A)||(I="Server sent an invalid subprotocol"):I="Server sent a subprotocol but none was requested":f.size&&(I="Server sent no subprotocol"),I){Z(t,m,I);return}A&&(t._protocol=A);let B=p.headers["sec-websocket-extensions"];if(B!==void 0){if(!h){Z(t,m,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let x;try{x=Sp(B)}catch{Z(t,m,"Invalid Sec-WebSocket-Extensions header");return}let X=Object.keys(x);if(X.length!==1||X[0]!==xe.extensionName){Z(t,m,"Server indicated an extension that was not requested");return}try{h.accept(x[xe.extensionName])}catch{Z(t,m,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[xe.extensionName]=h}t.setSocket(m,y,{allowSynchronousEvents:r.allowSynchronousEvents,generateMask:r.generateMask,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation})}),r.finishRequest?r.finishRequest(g,t):g.end()}function Yn(t,e){t._readyState=L.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function wp(t){return t.path=t.socketPath,oa.connect(t)}function Ip(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=oa.isIP(t.host)?"":t.host),op.connect(t)}function Z(t,e,n){t._readyState=L.CLOSING;let s=new Error(n);Error.captureStackTrace(s,Z),e.setHeader?(e[la]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(Yn,t,s)):(e.destroy(s),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function Cr(t,e,n){if(e){let s=dp(e)?e.size:_p(e).length;t._socket?t._sender._bufferedBytes+=s:t._bufferedAmount+=s}if(n){let s=new Error(`WebSocket is not open: readyState ${t.readyState} (${be[t.readyState]})`);process.nextTick(n,s)}}function Tp(t,e){let n=this[q];n._closeFrameReceived=!0,n._closeMessage=e,n._closeCode=t,n._socket[q]!==void 0&&(n._socket.removeListener("data",Jn),process.nextTick(ua,n._socket),t===1005?n.close():n.close(t,e))}function Ap(){let t=this[q];t.isPaused||t._socket.resume()}function kp(t){let e=this[q];e._socket[q]!==void 0&&(e._socket.removeListener("data",Jn),process.nextTick(ua,e._socket),e.close(t[gp])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function ia(){this[q].emitClose()}function Cp(t,e){this[q].emit("message",t,e)}function xp(t){let e=this[q];e._autoPong&&e.pong(t,!this._isServer,aa),e.emit("ping",t)}function Rp(t){this[q].emit("pong",t)}function ua(t){t.resume()}function Ep(t){let e=this[q];e.readyState!==L.CLOSED&&(e.readyState===L.OPEN&&(e._readyState=L.CLOSING,da(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function da(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function fa(){let t=this[q];if(this.removeListener("close",fa),this.removeListener("data",Jn),this.removeListener("end",pa),t._readyState=L.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[q]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",ia),t._receiver.on("finish",ia))}function Jn(t){this[q]._receiver.write(t)||this.pause()}function pa(){let t=this[q];t._readyState=L.CLOSING,t._receiver.end(),this.end()}function ha(){let t=this[q];this.removeListener("error",ha),this.on("error",aa),t&&(t._readyState=L.CLOSING,this.destroy())}});var Sa=v((H_,va)=>{"use strict";var F_=Kn(),{Duplex:Pp}=require("stream");function ma(t){t.emit("close")}function Mp(){!this.destroyed&&this._writableState.finished&&this.destroy()}function ya(t){this.removeListener("error",ya),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function Lp(t,e){let n=!0,s=new Pp({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(i,o){let a=!o&&s._readableState.objectMode?i.toString():i;s.push(a)||t.pause()}),t.once("error",function(i){s.destroyed||(n=!1,s.destroy(i))}),t.once("close",function(){s.destroyed||s.push(null)}),s._destroy=function(r,i){if(t.readyState===t.CLOSED){i(r),process.nextTick(ma,s);return}let o=!1;t.once("error",function(l){o=!0,i(l)}),t.once("close",function(){o||i(r),process.nextTick(ma,s)}),n&&t.terminate()},s._final=function(r){if(t.readyState===t.CONNECTING){t.once("open",function(){s._final(r)});return}t._socket!==null&&(t._socket._writableState.finished?(r(),s._readableState.endEmitted&&s.destroy()):(t._socket.once("finish",function(){r()}),t.close()))},s._read=function(){t.isPaused&&t.resume()},s._write=function(r,i,o){if(t.readyState===t.CONNECTING){t.once("open",function(){s._write(r,i,o)});return}t.send(r,o)},s.on("end",Mp),s.on("error",ya),s}va.exports=Lp});var ba=v((U_,_a)=>{"use strict";var{tokenChars:Np}=pt();function Op(t){let e=new Set,n=-1,s=-1,r=0;for(r;r<t.length;r++){let o=t.charCodeAt(r);if(s===-1&&Np[o]===1)n===-1&&(n=r);else if(r!==0&&(o===32||o===9))s===-1&&n!==-1&&(s=r);else if(o===44){if(n===-1)throw new SyntaxError(`Unexpected character at index ${r}`);s===-1&&(s=r);let a=t.slice(n,s);if(e.has(a))throw new SyntaxError(`The "${a}" subprotocol is duplicated`);e.add(a),n=s=-1}else throw new SyntaxError(`Unexpected character at index ${r}`)}if(n===-1||s!==-1)throw new SyntaxError("Unexpected end of input");let i=t.slice(n,r);if(e.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);return e.add(i),e}_a.exports={parse:Op}});var xa=v((q_,Ca)=>{"use strict";var Bp=require("events"),Xn=require("http"),{Duplex:W_}=require("stream"),{createHash:Dp}=require("crypto"),wa=Ir(),je=Yt(),Fp=ba(),Hp=Kn(),{CLOSE_TIMEOUT:Up,GUID:Wp,kWebSocket:qp}=ve(),Gp=/^[+/0-9A-Za-z]{22}==$/,Ia=0,Ta=1,ka=2,xr=class extends Bp{constructor(e,n){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:Up,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Hp,...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((s,r)=>{let i=Xn.STATUS_CODES[426];r.writeHead(426,{"Content-Length":i.length,"Content-Type":"text/plain"}),r.end(i)}),this._server.listen(e.port,e.host,e.backlog,n)):e.server&&(this._server=e.server),this._server){let s=this.emit.bind(this,"connection");this._removeListeners=jp(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(r,i,o)=>{this.handleUpgrade(r,i,o,s)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=Ia}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===ka){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Zt,this);return}if(e&&this.once("close",e),this._state!==Ta)if(this._state=Ta,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(Zt,this):process.nextTick(Zt,this);else{let n=this._server;this._removeListeners(),this._removeListeners=this._server=null,n.close(()=>{Zt(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,s,r){n.on("error",Aa);let i=e.headers["sec-websocket-key"],o=e.headers.upgrade,a=+e.headers["sec-websocket-version"];if(e.method!=="GET"){$e(this,e,n,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){$e(this,e,n,400,"Invalid Upgrade header");return}if(i===void 0||!Gp.test(i)){$e(this,e,n,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){$e(this,e,n,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){en(n,400);return}let l=e.headers["sec-websocket-protocol"],u=new Set;if(l!==void 0)try{u=Fp.parse(l)}catch{$e(this,e,n,400,"Invalid Sec-WebSocket-Protocol header");return}let c=e.headers["sec-websocket-extensions"],d={};if(this.options.perMessageDeflate&&c!==void 0){let f=new je(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let h=wa.parse(c);h[je.extensionName]&&(f.accept(h[je.extensionName]),d[je.extensionName]=f)}catch{$e(this,e,n,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let f={origin:e.headers[`${a===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(f,(h,g,p,m)=>{if(!h)return en(n,g||401,p,m);this.completeUpgrade(d,i,u,e,n,s,r)});return}if(!this.options.verifyClient(f))return en(n,401)}this.completeUpgrade(d,i,u,e,n,s,r)}completeUpgrade(e,n,s,r,i,o,a){if(!i.readable||!i.writable)return i.destroy();if(i[qp])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>Ia)return en(i,503);let u=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Dp("sha1").update(n+Wp).digest("base64")}`],c=new this.options.WebSocket(null,void 0,this.options);if(s.size){let d=this.options.handleProtocols?this.options.handleProtocols(s,r):s.values().next().value;d&&(u.push(`Sec-WebSocket-Protocol: ${d}`),c._protocol=d)}if(e[je.extensionName]){let d=e[je.extensionName].params,f=wa.format({[je.extensionName]:[d]});u.push(`Sec-WebSocket-Extensions: ${f}`),c._extensions=e}this.emit("headers",u,r),i.write(u.concat(`\r
2
2
  `).join(`\r
3
- `)),i.removeListener("error",wa),c.setSocket(i,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(c),c.on("close",()=>{this.clients.delete(c),this._shouldEmitClose&&!this.clients.size&&process.nextTick(Xt,this)})),a(c,s)}};Ta.exports=As;function Fp(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 Xt(t){t._state=Ia,t.emit("close")}function wa(){this.destroy()}function Qt(t,e,n,r){n=n||Jn.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} ${Jn.STATUS_CODES[e]}\r
4
- `+Object.keys(r).map(s=>`${s}: ${r[s]}`).join(`\r
3
+ `)),i.removeListener("error",Aa),c.setSocket(i,o,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(c),c.on("close",()=>{this.clients.delete(c),this._shouldEmitClose&&!this.clients.size&&process.nextTick(Zt,this)})),a(c,r)}};Ca.exports=xr;function jp(t,e){for(let n of Object.keys(e))t.on(n,e[n]);return function(){for(let s of Object.keys(e))t.removeListener(s,e[s])}}function Zt(t){t._state=ka,t.emit("close")}function Aa(){this.destroy()}function en(t,e,n,s){n=n||Xn.STATUS_CODES[e],s={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(n),...s},t.once("finish",t.destroy),t.end(`HTTP/1.1 ${e} ${Xn.STATUS_CODES[e]}\r
4
+ `+Object.keys(s).map(r=>`${r}: ${s[r]}`).join(`\r
5
5
  `)+`\r
6
6
  \r
7
- `+n)}function je(t,e,n,r,s,i){if(t.listenerCount("wsClientError")){let o=new Error(s);Error.captureStackTrace(o,je),t.emit("wsClientError",o,n,e)}else Qt(n,r,s,i)}});var Cs=v((k_,ka)=>{ka.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var Re=v($e=>{var xs,Gp=[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];$e.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};$e.getSymbolTotalCodewords=function(e){return Gp[e]};$e.getBCHDigit=function(t){let e=0;for(;t!==0;)e++,t>>>=1;return e};$e.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');xs=e};$e.isKanjiModeEnabled=function(){return typeof xs<"u"};$e.toSJIS=function(e){return xs(e)}});var Kn=v(ne=>{ne.L={bit:1};ne.M={bit:0};ne.Q={bit:3};ne.H={bit:2};function jp(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"l":case"low":return ne.L;case"m":case"medium":return ne.M;case"q":case"quartile":return ne.Q;case"h":case"high":return ne.H;default:throw new Error("Unknown EC Level: "+t)}}ne.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};ne.from=function(e,n){if(ne.isValid(e))return e;try{return jp(e)}catch{return n}}});var Ra=v((R_,xa)=>{function Ca(){this.buffer=[],this.length=0}Ca.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++}};xa.exports=Ca});var Pa=v((E_,Ea)=>{function Zt(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)}Zt.prototype.set=function(t,e,n,r){let s=t*this.size+e;this.data[s]=n,r&&(this.reservedBit[s]=!0)};Zt.prototype.get=function(t,e){return this.data[t*this.size+e]};Zt.prototype.xor=function(t,e,n){this.data[t*this.size+e]^=n};Zt.prototype.isReserved=function(t,e){return this.reservedBit[t*this.size+e]};Ea.exports=Zt});var Ma=v(Xn=>{var $p=Re().getSymbolSize;Xn.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=$p(e),s=r===145?26:Math.ceil((r-13)/(2*n-2))*2,i=[r-7];for(let o=1;o<n-1;o++)i[o]=i[o-1]-s;return i.push(6),i.reverse()};Xn.getPositions=function(e){let n=[],r=Xn.getRowColCoords(e),s=r.length;for(let i=0;i<s;i++)for(let o=0;o<s;o++)i===0&&o===0||i===0&&o===s-1||i===s-1&&o===0||n.push([r[i],r[o]]);return n}});var Oa=v(Na=>{var zp=Re().getSymbolSize,La=7;Na.getPositions=function(e){let n=zp(e);return[[0,0],[n-La,0],[0,n-La]]}});var Ba=v(x=>{x.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var ze={N1:3,N2:3,N3:40,N4:10};x.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};x.from=function(e){return x.isValid(e)?parseInt(e,10):void 0};x.getPenaltyN1=function(e){let n=e.size,r=0,s=0,i=0,o=null,a=null;for(let l=0;l<n;l++){s=i=0,o=a=null;for(let u=0;u<n;u++){let c=e.get(l,u);c===o?s++:(s>=5&&(r+=ze.N1+(s-5)),o=c,s=1),c=e.get(u,l),c===a?i++:(i>=5&&(r+=ze.N1+(i-5)),a=c,i=1)}s>=5&&(r+=ze.N1+(s-5)),i>=5&&(r+=ze.N1+(i-5))}return r};x.getPenaltyN2=function(e){let n=e.size,r=0;for(let s=0;s<n-1;s++)for(let i=0;i<n-1;i++){let o=e.get(s,i)+e.get(s,i+1)+e.get(s+1,i)+e.get(s+1,i+1);(o===4||o===0)&&r++}return r*ze.N2};x.getPenaltyN3=function(e){let n=e.size,r=0,s=0,i=0;for(let o=0;o<n;o++){s=i=0;for(let a=0;a<n;a++)s=s<<1&2047|e.get(o,a),a>=10&&(s===1488||s===93)&&r++,i=i<<1&2047|e.get(a,o),a>=10&&(i===1488||i===93)&&r++}return r*ze.N3};x.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let i=0;i<r;i++)n+=e.data[i];return Math.abs(Math.ceil(n*100/r/5)-10)*ze.N4};function Vp(t,e,n){switch(t){case x.Patterns.PATTERN000:return(e+n)%2===0;case x.Patterns.PATTERN001:return e%2===0;case x.Patterns.PATTERN010:return n%3===0;case x.Patterns.PATTERN011:return(e+n)%3===0;case x.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(n/3))%2===0;case x.Patterns.PATTERN101:return e*n%2+e*n%3===0;case x.Patterns.PATTERN110:return(e*n%2+e*n%3)%2===0;case x.Patterns.PATTERN111:return(e*n%3+(e+n)%2)%2===0;default:throw new Error("bad maskPattern:"+t)}}x.applyMask=function(e,n){let r=n.size;for(let s=0;s<r;s++)for(let i=0;i<r;i++)n.isReserved(i,s)||n.xor(i,s,Vp(e,i,s))};x.getBestMask=function(e,n){let r=Object.keys(x.Patterns).length,s=0,i=1/0;for(let o=0;o<r;o++){n(o),x.applyMask(o,e);let a=x.getPenaltyN1(e)+x.getPenaltyN2(e)+x.getPenaltyN3(e)+x.getPenaltyN4(e);x.applyMask(o,e),a<i&&(i=a,s=o)}return s}});var Es=v(Rs=>{var Ee=Kn(),Qn=[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],Zn=[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];Rs.getBlocksCount=function(e,n){switch(n){case Ee.L:return Qn[(e-1)*4+0];case Ee.M:return Qn[(e-1)*4+1];case Ee.Q:return Qn[(e-1)*4+2];case Ee.H:return Qn[(e-1)*4+3];default:return}};Rs.getTotalCodewordsCount=function(e,n){switch(n){case Ee.L:return Zn[(e-1)*4+0];case Ee.M:return Zn[(e-1)*4+1];case Ee.Q:return Zn[(e-1)*4+2];case Ee.H:return Zn[(e-1)*4+3];default:return}}});var Da=v(tr=>{var en=new Uint8Array(512),er=new Uint8Array(256);(function(){let e=1;for(let n=0;n<255;n++)en[n]=e,er[e]=n,e<<=1,e&256&&(e^=285);for(let n=255;n<512;n++)en[n]=en[n-255]})();tr.log=function(e){if(e<1)throw new Error("log("+e+")");return er[e]};tr.exp=function(e){return en[e]};tr.mul=function(e,n){return e===0||n===0?0:en[er[e]+er[n]]}});var Fa=v(tn=>{var Ps=Da();tn.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]^=Ps.mul(e[s],n[i]);return r};tn.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]^=Ps.mul(n[o],s);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r};tn.generateECPolynomial=function(e){let n=new Uint8Array([1]);for(let r=0;r<e;r++)n=tn.mul(n,new Uint8Array([1,Ps.exp(r)]));return n}});var Wa=v((D_,Ua)=>{var Ha=Fa();function Ms(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}Ms.prototype.initialize=function(e){this.degree=e,this.genPoly=Ha.generateECPolynomial(this.degree)};Ms.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=Ha.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};Ua.exports=Ms});var Ls=v(qa=>{qa.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var Ns=v(we=>{var Ga="[0-9]+",Yp="[A-Z $%*+\\-./:]+",nn="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";nn=nn.replace(/u/g,"\\u");var Jp="(?:(?![A-Z0-9 $%*+\\-./:]|"+nn+`)(?:.|[\r
8
- ]))+`;we.KANJI=new RegExp(nn,"g");we.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");we.BYTE=new RegExp(Jp,"g");we.NUMERIC=new RegExp(Ga,"g");we.ALPHANUMERIC=new RegExp(Yp,"g");var Kp=new RegExp("^"+nn+"$"),Xp=new RegExp("^"+Ga+"$"),Qp=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");we.testKanji=function(e){return Kp.test(e)};we.testNumeric=function(e){return Xp.test(e)};we.testAlphanumeric=function(e){return Qp.test(e)}});var Pe=v(D=>{var Zp=Ls(),Os=Ns();D.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};D.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};D.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};D.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};D.MIXED={bit:-1};D.getCharCountIndicator=function(e,n){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!Zp.isValid(n))throw new Error("Invalid version: "+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]};D.getBestModeForData=function(e){return Os.testNumeric(e)?D.NUMERIC:Os.testAlphanumeric(e)?D.ALPHANUMERIC:Os.testKanji(e)?D.KANJI:D.BYTE};D.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};D.isValid=function(e){return e&&e.bit&&e.ccBits};function eh(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"numeric":return D.NUMERIC;case"alphanumeric":return D.ALPHANUMERIC;case"kanji":return D.KANJI;case"byte":return D.BYTE;default:throw new Error("Unknown mode: "+t)}}D.from=function(e,n){if(D.isValid(e))return e;try{return eh(e)}catch{return n}}});var Ya=v(Ve=>{var nr=Re(),th=Es(),ja=Kn(),Me=Pe(),Bs=Ls(),za=7973,$a=nr.getBCHDigit(za);function nh(t,e,n){for(let r=1;r<=40;r++)if(e<=Ve.getCapacity(r,n,t))return r}function Va(t,e){return Me.getCharCountIndicator(t,e)+4}function rh(t,e){let n=0;return t.forEach(function(r){let s=Va(r.mode,e);n+=s+r.getBitsLength()}),n}function sh(t,e){for(let n=1;n<=40;n++)if(rh(t,n)<=Ve.getCapacity(n,e,Me.MIXED))return n}Ve.from=function(e,n){return Bs.isValid(e)?parseInt(e,10):n};Ve.getCapacity=function(e,n,r){if(!Bs.isValid(e))throw new Error("Invalid QR Code version");typeof r>"u"&&(r=Me.BYTE);let s=nr.getSymbolTotalCodewords(e),i=th.getTotalCodewordsCount(e,n),o=(s-i)*8;if(r===Me.MIXED)return o;let a=o-Va(r,e);switch(r){case Me.NUMERIC:return Math.floor(a/10*3);case Me.ALPHANUMERIC:return Math.floor(a/11*2);case Me.KANJI:return Math.floor(a/13);case Me.BYTE:default:return Math.floor(a/8)}};Ve.getBestVersionForData=function(e,n){let r,s=ja.from(n,ja.M);if(Array.isArray(e)){if(e.length>1)return sh(e,s);if(e.length===0)return 1;r=e[0]}else r=e;return nh(r.mode,r.getLength(),s)};Ve.getEncodedBits=function(e){if(!Bs.isValid(e)||e<7)throw new Error("Invalid QR Code version");let n=e<<12;for(;nr.getBCHDigit(n)-$a>=0;)n^=za<<nr.getBCHDigit(n)-$a;return e<<12|n}});var Qa=v(Xa=>{var Ds=Re(),Ka=1335,ih=21522,Ja=Ds.getBCHDigit(Ka);Xa.getEncodedBits=function(e,n){let r=e.bit<<3|n,s=r<<10;for(;Ds.getBCHDigit(s)-Ja>=0;)s^=Ka<<Ds.getBCHDigit(s)-Ja;return(r<<10|s)^ih}});var el=v((G_,Za)=>{var oh=Pe();function yt(t){this.mode=oh.NUMERIC,this.data=t.toString()}yt.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};yt.prototype.getLength=function(){return this.data.length};yt.prototype.getBitsLength=function(){return yt.getBitsLength(this.data.length)};yt.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))};Za.exports=yt});var nl=v((j_,tl)=>{var ah=Pe(),Fs=["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 vt(t){this.mode=ah.ALPHANUMERIC,this.data=t}vt.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};vt.prototype.getLength=function(){return this.data.length};vt.prototype.getBitsLength=function(){return vt.getBitsLength(this.data.length)};vt.prototype.write=function(e){let n;for(n=0;n+2<=this.data.length;n+=2){let r=Fs.indexOf(this.data[n])*45;r+=Fs.indexOf(this.data[n+1]),e.put(r,11)}this.data.length%2&&e.put(Fs.indexOf(this.data[n]),6)};tl.exports=vt});var sl=v(($_,rl)=>{var lh=Pe();function St(t){this.mode=lh.BYTE,typeof t=="string"?this.data=new TextEncoder().encode(t):this.data=new Uint8Array(t)}St.getBitsLength=function(e){return e*8};St.prototype.getLength=function(){return this.data.length};St.prototype.getBitsLength=function(){return St.getBitsLength(this.data.length)};St.prototype.write=function(t){for(let e=0,n=this.data.length;e<n;e++)t.put(this.data[e],8)};rl.exports=St});var ol=v((z_,il)=>{var ch=Pe(),uh=Re();function _t(t){this.mode=ch.KANJI,this.data=t}_t.getBitsLength=function(e){return e*13};_t.prototype.getLength=function(){return this.data.length};_t.prototype.getBitsLength=function(){return _t.getBitsLength(this.data.length)};_t.prototype.write=function(t){let e;for(e=0;e<this.data.length;e++){let n=uh.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)}};il.exports=_t});var al=v((V_,Hs)=>{"use strict";var rn={single_source_shortest_paths:function(t,e,n){var r={},s={};s[e]=0;var i=rn.PriorityQueue.make();i.push(e,0);for(var o,a,l,u,c,d,p,h,g;!i.empty();){o=i.pop(),a=o.value,u=o.cost,c=t[a]||{};for(l in c)c.hasOwnProperty(l)&&(d=c[l],p=u+d,h=s[l],g=typeof s[l]>"u",(g||h>p)&&(s[l]=p,i.push(l,p),r[l]=a))}if(typeof n<"u"&&typeof s[n]>"u"){var f=["Could not find a path from ",e," to ",n,"."].join("");throw new Error(f)}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=rn.single_source_shortest_paths(t,e,n);return rn.extract_shortest_path_from_predecessor_list(r,n)},PriorityQueue:{make:function(t){var e=rn.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 Hs<"u"&&(Hs.exports=rn)});var gl=v(bt=>{var k=Pe(),ul=el(),dl=nl(),fl=sl(),pl=ol(),sn=Ns(),rr=Re(),dh=al();function ll(t){return unescape(encodeURIComponent(t)).length}function on(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 hl(t){let e=on(sn.NUMERIC,k.NUMERIC,t),n=on(sn.ALPHANUMERIC,k.ALPHANUMERIC,t),r,s;return rr.isKanjiModeEnabled()?(r=on(sn.BYTE,k.BYTE,t),s=on(sn.KANJI,k.KANJI,t)):(r=on(sn.BYTE_KANJI,k.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 Us(t,e){switch(e){case k.NUMERIC:return ul.getBitsLength(t);case k.ALPHANUMERIC:return dl.getBitsLength(t);case k.KANJI:return pl.getBitsLength(t);case k.BYTE:return fl.getBitsLength(t)}}function fh(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 ph(t){let e=[];for(let n=0;n<t.length;n++){let r=t[n];switch(r.mode){case k.NUMERIC:e.push([r,{data:r.data,mode:k.ALPHANUMERIC,length:r.length},{data:r.data,mode:k.BYTE,length:r.length}]);break;case k.ALPHANUMERIC:e.push([r,{data:r.data,mode:k.BYTE,length:r.length}]);break;case k.KANJI:e.push([r,{data:r.data,mode:k.BYTE,length:ll(r.data)}]);break;case k.BYTE:e.push([{data:r.data,mode:k.BYTE,length:ll(r.data)}])}}return e}function hh(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 u=o[l],c=""+i+l;a.push(c),n[c]={node:u,lastCount:0},r[c]={};for(let d=0;d<s.length;d++){let p=s[d];n[p]&&n[p].node.mode===u.mode?(r[p][c]=Us(n[p].lastCount+u.length,u.mode)-Us(n[p].lastCount,u.mode),n[p].lastCount+=u.length):(n[p]&&(n[p].lastCount=u.length),r[p][c]=Us(u.length,u.mode)+4+k.getCharCountIndicator(u.mode,e))}}s=a}for(let i=0;i<s.length;i++)r[s[i]].end=0;return{map:r,table:n}}function cl(t,e){let n,r=k.getBestModeForData(t);if(n=k.from(e,r),n!==k.BYTE&&n.bit<r.bit)throw new Error('"'+t+'" cannot be encoded with mode '+k.toString(n)+`.
10
- Suggested mode is: `+k.toString(r));switch(n===k.KANJI&&!rr.isKanjiModeEnabled()&&(n=k.BYTE),n){case k.NUMERIC:return new ul(t);case k.ALPHANUMERIC:return new dl(t);case k.KANJI:return new pl(t);case k.BYTE:return new fl(t)}}bt.fromArray=function(e){return e.reduce(function(n,r){return typeof r=="string"?n.push(cl(r,null)):r.data&&n.push(cl(r.data,r.mode)),n},[])};bt.fromString=function(e,n){let r=hl(e,rr.isKanjiModeEnabled()),s=ph(r),i=hh(s,n),o=dh.find_path(i.map,"start","end"),a=[];for(let l=1;l<o.length-1;l++)a.push(i.table[o[l]].node);return bt.fromArray(fh(a))};bt.rawSplit=function(e){return bt.fromArray(hl(e,rr.isKanjiModeEnabled()))}});var zs=v(ml=>{var ir=Re(),Ws=Kn(),gh=Ra(),mh=Pa(),yh=Ma(),vh=Oa(),js=Ba(),$s=Es(),Sh=Wa(),sr=Ya(),_h=Qa(),bh=Pe(),qs=gl();function wh(t,e){let n=t.size,r=vh.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 Ih(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 Th(t,e){let n=yh.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 Ah(t,e){let n=t.size,r=sr.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 Gs(t,e,n){let r=t.size,s=_h.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 kh(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 u=!1;o<e.length&&(u=(e[o]>>>i&1)===1),t.set(s,a-l,u),i--,i===-1&&(o++,i=7)}if(s+=r,s<0||n<=s){s-=r,r=-r;break}}}function Ch(t,e,n){let r=new gh;n.forEach(function(l){r.put(l.mode.bit,4),r.put(l.getLength(),bh.getCharCountIndicator(l.mode,t)),l.write(r)});let s=ir.getSymbolTotalCodewords(t),i=$s.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 xh(r,t,e)}function xh(t,e,n){let r=ir.getSymbolTotalCodewords(e),s=$s.getTotalCodewordsCount(e,n),i=r-s,o=$s.getBlocksCount(e,n),a=r%o,l=o-a,u=Math.floor(r/o),c=Math.floor(i/o),d=c+1,p=u-c,h=new Sh(p),g=0,f=new Array(o),m=new Array(o),y=0,T=new Uint8Array(t.buffer);for(let G=0;G<o;G++){let ye=G<l?c:d;f[G]=T.slice(g,g+ye),m[G]=h.encode(f[G]),g+=ye,y=Math.max(y,ye)}let A=new Uint8Array(r),w=0,C,P;for(C=0;C<y;C++)for(P=0;P<o;P++)C<f[P].length&&(A[w++]=f[P][C]);for(C=0;C<p;C++)for(P=0;P<o;P++)A[w++]=m[P][C];return A}function Rh(t,e,n,r){let s;if(Array.isArray(t))s=qs.fromArray(t);else if(typeof t=="string"){let u=e;if(!u){let c=qs.rawSplit(t);u=sr.getBestVersionForData(c,n)}s=qs.fromString(t,u||40)}else throw new Error("Invalid data");let i=sr.getBestVersionForData(s,n);if(!i)throw new Error("The amount of data is too big to be stored in a QR Code");if(!e)e=i;else if(e<i)throw new Error(`
7
+ `+n)}function $e(t,e,n,s,r,i){if(t.listenerCount("wsClientError")){let o=new Error(r);Error.captureStackTrace(o,$e),t.emit("wsClientError",o,n,e)}else en(n,s,r,i)}});var Er=v((j_,Ra)=>{Ra.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var Re=v(ze=>{var Pr,Yp=[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];ze.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};ze.getSymbolTotalCodewords=function(e){return Yp[e]};ze.getBCHDigit=function(t){let e=0;for(;t!==0;)e++,t>>>=1;return e};ze.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');Pr=e};ze.isKanjiModeEnabled=function(){return typeof Pr<"u"};ze.toSJIS=function(e){return Pr(e)}});var Zn=v(se=>{se.L={bit:1};se.M={bit:0};se.Q={bit:3};se.H={bit:2};function Jp(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"l":case"low":return se.L;case"m":case"medium":return se.M;case"q":case"quartile":return se.Q;case"h":case"high":return se.H;default:throw new Error("Unknown EC Level: "+t)}}se.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};se.from=function(e,n){if(se.isValid(e))return e;try{return Jp(e)}catch{return n}}});var Ma=v((V_,Pa)=>{function Ea(){this.buffer=[],this.length=0}Ea.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++}};Pa.exports=Ea});var Na=v((Q_,La)=>{function tn(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)}tn.prototype.set=function(t,e,n,s){let r=t*this.size+e;this.data[r]=n,s&&(this.reservedBit[r]=!0)};tn.prototype.get=function(t,e){return this.data[t*this.size+e]};tn.prototype.xor=function(t,e,n){this.data[t*this.size+e]^=n};tn.prototype.isReserved=function(t,e){return this.reservedBit[t*this.size+e]};La.exports=tn});var Oa=v(es=>{var Kp=Re().getSymbolSize;es.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,s=Kp(e),r=s===145?26:Math.ceil((s-13)/(2*n-2))*2,i=[s-7];for(let o=1;o<n-1;o++)i[o]=i[o-1]-r;return i.push(6),i.reverse()};es.getPositions=function(e){let n=[],s=es.getRowColCoords(e),r=s.length;for(let i=0;i<r;i++)for(let o=0;o<r;o++)i===0&&o===0||i===0&&o===r-1||i===r-1&&o===0||n.push([s[i],s[o]]);return n}});var Fa=v(Da=>{var Xp=Re().getSymbolSize,Ba=7;Da.getPositions=function(e){let n=Xp(e);return[[0,0],[n-Ba,0],[0,n-Ba]]}});var Ha=v(R=>{R.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var Ve={N1:3,N2:3,N3:40,N4:10};R.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};R.from=function(e){return R.isValid(e)?parseInt(e,10):void 0};R.getPenaltyN1=function(e){let n=e.size,s=0,r=0,i=0,o=null,a=null;for(let l=0;l<n;l++){r=i=0,o=a=null;for(let u=0;u<n;u++){let c=e.get(l,u);c===o?r++:(r>=5&&(s+=Ve.N1+(r-5)),o=c,r=1),c=e.get(u,l),c===a?i++:(i>=5&&(s+=Ve.N1+(i-5)),a=c,i=1)}r>=5&&(s+=Ve.N1+(r-5)),i>=5&&(s+=Ve.N1+(i-5))}return s};R.getPenaltyN2=function(e){let n=e.size,s=0;for(let r=0;r<n-1;r++)for(let i=0;i<n-1;i++){let o=e.get(r,i)+e.get(r,i+1)+e.get(r+1,i)+e.get(r+1,i+1);(o===4||o===0)&&s++}return s*Ve.N2};R.getPenaltyN3=function(e){let n=e.size,s=0,r=0,i=0;for(let o=0;o<n;o++){r=i=0;for(let a=0;a<n;a++)r=r<<1&2047|e.get(o,a),a>=10&&(r===1488||r===93)&&s++,i=i<<1&2047|e.get(a,o),a>=10&&(i===1488||i===93)&&s++}return s*Ve.N3};R.getPenaltyN4=function(e){let n=0,s=e.data.length;for(let i=0;i<s;i++)n+=e.data[i];return Math.abs(Math.ceil(n*100/s/5)-10)*Ve.N4};function Zp(t,e,n){switch(t){case R.Patterns.PATTERN000:return(e+n)%2===0;case R.Patterns.PATTERN001:return e%2===0;case R.Patterns.PATTERN010:return n%3===0;case R.Patterns.PATTERN011:return(e+n)%3===0;case R.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(n/3))%2===0;case R.Patterns.PATTERN101:return e*n%2+e*n%3===0;case R.Patterns.PATTERN110:return(e*n%2+e*n%3)%2===0;case R.Patterns.PATTERN111:return(e*n%3+(e+n)%2)%2===0;default:throw new Error("bad maskPattern:"+t)}}R.applyMask=function(e,n){let s=n.size;for(let r=0;r<s;r++)for(let i=0;i<s;i++)n.isReserved(i,r)||n.xor(i,r,Zp(e,i,r))};R.getBestMask=function(e,n){let s=Object.keys(R.Patterns).length,r=0,i=1/0;for(let o=0;o<s;o++){n(o),R.applyMask(o,e);let a=R.getPenaltyN1(e)+R.getPenaltyN2(e)+R.getPenaltyN3(e)+R.getPenaltyN4(e);R.applyMask(o,e),a<i&&(i=a,r=o)}return r}});var Lr=v(Mr=>{var Ee=Zn(),ts=[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],ns=[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];Mr.getBlocksCount=function(e,n){switch(n){case Ee.L:return ts[(e-1)*4+0];case Ee.M:return ts[(e-1)*4+1];case Ee.Q:return ts[(e-1)*4+2];case Ee.H:return ts[(e-1)*4+3];default:return}};Mr.getTotalCodewordsCount=function(e,n){switch(n){case Ee.L:return ns[(e-1)*4+0];case Ee.M:return ns[(e-1)*4+1];case Ee.Q:return ns[(e-1)*4+2];case Ee.H:return ns[(e-1)*4+3];default:return}}});var Ua=v(rs=>{var nn=new Uint8Array(512),ss=new Uint8Array(256);(function(){let e=1;for(let n=0;n<255;n++)nn[n]=e,ss[e]=n,e<<=1,e&256&&(e^=285);for(let n=255;n<512;n++)nn[n]=nn[n-255]})();rs.log=function(e){if(e<1)throw new Error("log("+e+")");return ss[e]};rs.exp=function(e){return nn[e]};rs.mul=function(e,n){return e===0||n===0?0:nn[ss[e]+ss[n]]}});var Wa=v(sn=>{var Nr=Ua();sn.mul=function(e,n){let s=new Uint8Array(e.length+n.length-1);for(let r=0;r<e.length;r++)for(let i=0;i<n.length;i++)s[r+i]^=Nr.mul(e[r],n[i]);return s};sn.mod=function(e,n){let s=new Uint8Array(e);for(;s.length-n.length>=0;){let r=s[0];for(let o=0;o<n.length;o++)s[o]^=Nr.mul(n[o],r);let i=0;for(;i<s.length&&s[i]===0;)i++;s=s.slice(i)}return s};sn.generateECPolynomial=function(e){let n=new Uint8Array([1]);for(let s=0;s<e;s++)n=sn.mul(n,new Uint8Array([1,Nr.exp(s)]));return n}});var ja=v((tb,Ga)=>{var qa=Wa();function Or(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}Or.prototype.initialize=function(e){this.degree=e,this.genPoly=qa.generateECPolynomial(this.degree)};Or.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 s=qa.mod(n,this.genPoly),r=this.degree-s.length;if(r>0){let i=new Uint8Array(this.degree);return i.set(s,r),i}return s};Ga.exports=Or});var Br=v($a=>{$a.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var Dr=v(we=>{var za="[0-9]+",eh="[A-Z $%*+\\-./:]+",rn="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";rn=rn.replace(/u/g,"\\u");var th="(?:(?![A-Z0-9 $%*+\\-./:]|"+rn+`)(?:.|[\r
8
+ ]))+`;we.KANJI=new RegExp(rn,"g");we.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");we.BYTE=new RegExp(th,"g");we.NUMERIC=new RegExp(za,"g");we.ALPHANUMERIC=new RegExp(eh,"g");var nh=new RegExp("^"+rn+"$"),sh=new RegExp("^"+za+"$"),rh=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");we.testKanji=function(e){return nh.test(e)};we.testNumeric=function(e){return sh.test(e)};we.testAlphanumeric=function(e){return rh.test(e)}});var Pe=v(D=>{var ih=Br(),Fr=Dr();D.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};D.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};D.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};D.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};D.MIXED={bit:-1};D.getCharCountIndicator=function(e,n){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!ih.isValid(n))throw new Error("Invalid version: "+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]};D.getBestModeForData=function(e){return Fr.testNumeric(e)?D.NUMERIC:Fr.testAlphanumeric(e)?D.ALPHANUMERIC:Fr.testKanji(e)?D.KANJI:D.BYTE};D.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};D.isValid=function(e){return e&&e.bit&&e.ccBits};function oh(t){if(typeof t!="string")throw new Error("Param is not a string");switch(t.toLowerCase()){case"numeric":return D.NUMERIC;case"alphanumeric":return D.ALPHANUMERIC;case"kanji":return D.KANJI;case"byte":return D.BYTE;default:throw new Error("Unknown mode: "+t)}}D.from=function(e,n){if(D.isValid(e))return e;try{return oh(e)}catch{return n}}});var Ka=v(Qe=>{var is=Re(),ah=Lr(),Va=Zn(),Me=Pe(),Hr=Br(),Ya=7973,Qa=is.getBCHDigit(Ya);function lh(t,e,n){for(let s=1;s<=40;s++)if(e<=Qe.getCapacity(s,n,t))return s}function Ja(t,e){return Me.getCharCountIndicator(t,e)+4}function ch(t,e){let n=0;return t.forEach(function(s){let r=Ja(s.mode,e);n+=r+s.getBitsLength()}),n}function uh(t,e){for(let n=1;n<=40;n++)if(ch(t,n)<=Qe.getCapacity(n,e,Me.MIXED))return n}Qe.from=function(e,n){return Hr.isValid(e)?parseInt(e,10):n};Qe.getCapacity=function(e,n,s){if(!Hr.isValid(e))throw new Error("Invalid QR Code version");typeof s>"u"&&(s=Me.BYTE);let r=is.getSymbolTotalCodewords(e),i=ah.getTotalCodewordsCount(e,n),o=(r-i)*8;if(s===Me.MIXED)return o;let a=o-Ja(s,e);switch(s){case Me.NUMERIC:return Math.floor(a/10*3);case Me.ALPHANUMERIC:return Math.floor(a/11*2);case Me.KANJI:return Math.floor(a/13);case Me.BYTE:default:return Math.floor(a/8)}};Qe.getBestVersionForData=function(e,n){let s,r=Va.from(n,Va.M);if(Array.isArray(e)){if(e.length>1)return uh(e,r);if(e.length===0)return 1;s=e[0]}else s=e;return lh(s.mode,s.getLength(),r)};Qe.getEncodedBits=function(e){if(!Hr.isValid(e)||e<7)throw new Error("Invalid QR Code version");let n=e<<12;for(;is.getBCHDigit(n)-Qa>=0;)n^=Ya<<is.getBCHDigit(n)-Qa;return e<<12|n}});var tl=v(el=>{var Ur=Re(),Za=1335,dh=21522,Xa=Ur.getBCHDigit(Za);el.getEncodedBits=function(e,n){let s=e.bit<<3|n,r=s<<10;for(;Ur.getBCHDigit(r)-Xa>=0;)r^=Za<<Ur.getBCHDigit(r)-Xa;return(s<<10|r)^dh}});var sl=v((ab,nl)=>{var fh=Pe();function vt(t){this.mode=fh.NUMERIC,this.data=t.toString()}vt.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};vt.prototype.getLength=function(){return this.data.length};vt.prototype.getBitsLength=function(){return vt.getBitsLength(this.data.length)};vt.prototype.write=function(e){let n,s,r;for(n=0;n+3<=this.data.length;n+=3)s=this.data.substr(n,3),r=parseInt(s,10),e.put(r,10);let i=this.data.length-n;i>0&&(s=this.data.substr(n),r=parseInt(s,10),e.put(r,i*3+1))};nl.exports=vt});var il=v((lb,rl)=>{var ph=Pe(),Wr=["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 St(t){this.mode=ph.ALPHANUMERIC,this.data=t}St.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};St.prototype.getLength=function(){return this.data.length};St.prototype.getBitsLength=function(){return St.getBitsLength(this.data.length)};St.prototype.write=function(e){let n;for(n=0;n+2<=this.data.length;n+=2){let s=Wr.indexOf(this.data[n])*45;s+=Wr.indexOf(this.data[n+1]),e.put(s,11)}this.data.length%2&&e.put(Wr.indexOf(this.data[n]),6)};rl.exports=St});var al=v((cb,ol)=>{var hh=Pe();function _t(t){this.mode=hh.BYTE,typeof t=="string"?this.data=new TextEncoder().encode(t):this.data=new Uint8Array(t)}_t.getBitsLength=function(e){return e*8};_t.prototype.getLength=function(){return this.data.length};_t.prototype.getBitsLength=function(){return _t.getBitsLength(this.data.length)};_t.prototype.write=function(t){for(let e=0,n=this.data.length;e<n;e++)t.put(this.data[e],8)};ol.exports=_t});var cl=v((ub,ll)=>{var gh=Pe(),mh=Re();function bt(t){this.mode=gh.KANJI,this.data=t}bt.getBitsLength=function(e){return e*13};bt.prototype.getLength=function(){return this.data.length};bt.prototype.getBitsLength=function(){return bt.getBitsLength(this.data.length)};bt.prototype.write=function(t){let e;for(e=0;e<this.data.length;e++){let n=mh.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)}};ll.exports=bt});var ul=v((db,qr)=>{"use strict";var on={single_source_shortest_paths:function(t,e,n){var s={},r={};r[e]=0;var i=on.PriorityQueue.make();i.push(e,0);for(var o,a,l,u,c,d,f,h,g;!i.empty();){o=i.pop(),a=o.value,u=o.cost,c=t[a]||{};for(l in c)c.hasOwnProperty(l)&&(d=c[l],f=u+d,h=r[l],g=typeof r[l]>"u",(g||h>f)&&(r[l]=f,i.push(l,f),s[l]=a))}if(typeof n<"u"&&typeof r[n]>"u"){var p=["Could not find a path from ",e," to ",n,"."].join("");throw new Error(p)}return s},extract_shortest_path_from_predecessor_list:function(t,e){for(var n=[],s=e,r;s;)n.push(s),r=t[s],s=t[s];return n.reverse(),n},find_path:function(t,e,n){var s=on.single_source_shortest_paths(t,e,n);return on.extract_shortest_path_from_predecessor_list(s,n)},PriorityQueue:{make:function(t){var e=on.PriorityQueue,n={},s;t=t||{};for(s in e)e.hasOwnProperty(s)&&(n[s]=e[s]);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 qr<"u"&&(qr.exports=on)});var vl=v(wt=>{var k=Pe(),pl=sl(),hl=il(),gl=al(),ml=cl(),an=Dr(),os=Re(),yh=ul();function dl(t){return unescape(encodeURIComponent(t)).length}function ln(t,e,n){let s=[],r;for(;(r=t.exec(n))!==null;)s.push({data:r[0],index:r.index,mode:e,length:r[0].length});return s}function yl(t){let e=ln(an.NUMERIC,k.NUMERIC,t),n=ln(an.ALPHANUMERIC,k.ALPHANUMERIC,t),s,r;return os.isKanjiModeEnabled()?(s=ln(an.BYTE,k.BYTE,t),r=ln(an.KANJI,k.KANJI,t)):(s=ln(an.BYTE_KANJI,k.BYTE,t),r=[]),e.concat(n,s,r).sort(function(o,a){return o.index-a.index}).map(function(o){return{data:o.data,mode:o.mode,length:o.length}})}function Gr(t,e){switch(e){case k.NUMERIC:return pl.getBitsLength(t);case k.ALPHANUMERIC:return hl.getBitsLength(t);case k.KANJI:return ml.getBitsLength(t);case k.BYTE:return gl.getBitsLength(t)}}function vh(t){return t.reduce(function(e,n){let s=e.length-1>=0?e[e.length-1]:null;return s&&s.mode===n.mode?(e[e.length-1].data+=n.data,e):(e.push(n),e)},[])}function Sh(t){let e=[];for(let n=0;n<t.length;n++){let s=t[n];switch(s.mode){case k.NUMERIC:e.push([s,{data:s.data,mode:k.ALPHANUMERIC,length:s.length},{data:s.data,mode:k.BYTE,length:s.length}]);break;case k.ALPHANUMERIC:e.push([s,{data:s.data,mode:k.BYTE,length:s.length}]);break;case k.KANJI:e.push([s,{data:s.data,mode:k.BYTE,length:dl(s.data)}]);break;case k.BYTE:e.push([{data:s.data,mode:k.BYTE,length:dl(s.data)}])}}return e}function _h(t,e){let n={},s={start:{}},r=["start"];for(let i=0;i<t.length;i++){let o=t[i],a=[];for(let l=0;l<o.length;l++){let u=o[l],c=""+i+l;a.push(c),n[c]={node:u,lastCount:0},s[c]={};for(let d=0;d<r.length;d++){let f=r[d];n[f]&&n[f].node.mode===u.mode?(s[f][c]=Gr(n[f].lastCount+u.length,u.mode)-Gr(n[f].lastCount,u.mode),n[f].lastCount+=u.length):(n[f]&&(n[f].lastCount=u.length),s[f][c]=Gr(u.length,u.mode)+4+k.getCharCountIndicator(u.mode,e))}}r=a}for(let i=0;i<r.length;i++)s[r[i]].end=0;return{map:s,table:n}}function fl(t,e){let n,s=k.getBestModeForData(t);if(n=k.from(e,s),n!==k.BYTE&&n.bit<s.bit)throw new Error('"'+t+'" cannot be encoded with mode '+k.toString(n)+`.
10
+ Suggested mode is: `+k.toString(s));switch(n===k.KANJI&&!os.isKanjiModeEnabled()&&(n=k.BYTE),n){case k.NUMERIC:return new pl(t);case k.ALPHANUMERIC:return new hl(t);case k.KANJI:return new ml(t);case k.BYTE:return new gl(t)}}wt.fromArray=function(e){return e.reduce(function(n,s){return typeof s=="string"?n.push(fl(s,null)):s.data&&n.push(fl(s.data,s.mode)),n},[])};wt.fromString=function(e,n){let s=yl(e,os.isKanjiModeEnabled()),r=Sh(s),i=_h(r,n),o=yh.find_path(i.map,"start","end"),a=[];for(let l=1;l<o.length-1;l++)a.push(i.table[o[l]].node);return wt.fromArray(vh(a))};wt.rawSplit=function(e){return wt.fromArray(yl(e,os.isKanjiModeEnabled()))}});var Yr=v(Sl=>{var ls=Re(),jr=Zn(),bh=Ma(),wh=Na(),Ih=Oa(),Th=Fa(),Vr=Ha(),Qr=Lr(),Ah=ja(),as=Ka(),kh=tl(),Ch=Pe(),$r=vl();function xh(t,e){let n=t.size,s=Th.getPositions(e);for(let r=0;r<s.length;r++){let i=s[r][0],o=s[r][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 Rh(t){let e=t.size;for(let n=8;n<e-8;n++){let s=n%2===0;t.set(n,6,s,!0),t.set(6,n,s,!0)}}function Eh(t,e){let n=Ih.getPositions(e);for(let s=0;s<n.length;s++){let r=n[s][0],i=n[s][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(r+o,i+a,!0,!0):t.set(r+o,i+a,!1,!0)}}function Ph(t,e){let n=t.size,s=as.getEncodedBits(e),r,i,o;for(let a=0;a<18;a++)r=Math.floor(a/3),i=a%3+n-8-3,o=(s>>a&1)===1,t.set(r,i,o,!0),t.set(i,r,o,!0)}function zr(t,e,n){let s=t.size,r=kh.getEncodedBits(e,n),i,o;for(i=0;i<15;i++)o=(r>>i&1)===1,i<6?t.set(i,8,o,!0):i<8?t.set(i+1,8,o,!0):t.set(s-15+i,8,o,!0),i<8?t.set(8,s-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(s-8,8,1,!0)}function Mh(t,e){let n=t.size,s=-1,r=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(r,a-l)){let u=!1;o<e.length&&(u=(e[o]>>>i&1)===1),t.set(r,a-l,u),i--,i===-1&&(o++,i=7)}if(r+=s,r<0||n<=r){r-=s,s=-s;break}}}function Lh(t,e,n){let s=new bh;n.forEach(function(l){s.put(l.mode.bit,4),s.put(l.getLength(),Ch.getCharCountIndicator(l.mode,t)),l.write(s)});let r=ls.getSymbolTotalCodewords(t),i=Qr.getTotalCodewordsCount(t,e),o=(r-i)*8;for(s.getLengthInBits()+4<=o&&s.put(0,4);s.getLengthInBits()%8!==0;)s.putBit(0);let a=(o-s.getLengthInBits())/8;for(let l=0;l<a;l++)s.put(l%2?17:236,8);return Nh(s,t,e)}function Nh(t,e,n){let s=ls.getSymbolTotalCodewords(e),r=Qr.getTotalCodewordsCount(e,n),i=s-r,o=Qr.getBlocksCount(e,n),a=s%o,l=o-a,u=Math.floor(s/o),c=Math.floor(i/o),d=c+1,f=u-c,h=new Ah(f),g=0,p=new Array(o),m=new Array(o),y=0,C=new Uint8Array(t.buffer);for(let x=0;x<o;x++){let X=x<l?c:d;p[x]=C.slice(g,g+X),m[x]=h.encode(p[x]),g+=X,y=Math.max(y,X)}let _=new Uint8Array(s),A=0,I,B;for(I=0;I<y;I++)for(B=0;B<o;B++)I<p[B].length&&(_[A++]=p[B][I]);for(I=0;I<f;I++)for(B=0;B<o;B++)_[A++]=m[B][I];return _}function Oh(t,e,n,s){let r;if(Array.isArray(t))r=$r.fromArray(t);else if(typeof t=="string"){let u=e;if(!u){let c=$r.rawSplit(t);u=as.getBestVersionForData(c,n)}r=$r.fromString(t,u||40)}else throw new Error("Invalid data");let i=as.getBestVersionForData(r,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=Ch(e,n,s),a=ir.getSymbolSize(e),l=new mh(a);return wh(l,e),Ih(l),Th(l,e),Gs(l,n,0),e>=7&&Ah(l,e),kh(l,o),isNaN(r)&&(r=js.getBestMask(l,Gs.bind(null,l,n))),js.applyMask(r,l),Gs(l,n,r),{modules:l,version:e,errorCorrectionLevel:n,maskPattern:r,segments:s}}ml.create=function(e,n){if(typeof e>"u"||e==="")throw new Error("No input text");let r=Ws.M,s,i;return typeof n<"u"&&(r=Ws.from(n.errorCorrectionLevel,Ws.M),s=sr.from(n.version),i=js.from(n.maskPattern),n.toSJISFunc&&ir.setToSJISFunction(n.toSJISFunc)),Rh(e,s,r,i)}});var Vs=v((K_,vl)=>{"use strict";var Eh=require("util"),yl=require("stream"),le=vl.exports=function(){yl.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};Eh.inherits(le,yl);le.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))};le.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};le.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()))};le.prototype.destroySoon=le.prototype.end;le.prototype._end=function(){this._reads.length>0&&this.emit("error",new Error("Unexpected end of input")),this.destroy()};le.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit("close"))};le.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))};le.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)};le.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 Js=v(Ys=>{"use strict";var Le=[{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]}];Ys.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<Le.length;a++){let l=Le[a],u=i*l.x.length,c=o*l.y.length;for(let d=0;d<l.x.length&&l.x[d]<r;d++)u++;for(let d=0;d<l.y.length&&l.y[d]<s;d++)c++;u>0&&c>0&&n.push({width:u,height:c,index:a})}return n};Ys.getInterlaceIterator=function(t){return function(e,n,r){let s=e%Le[r].x.length,i=(e-s)/Le[r].x.length*8+Le[r].x[s],o=n%Le[r].y.length,a=(n-o)/Le[r].y.length*8+Le[r].y[o];return i*4+a*t*4}}});var Ks=v((Q_,Sl)=>{"use strict";Sl.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 Xs=v((Z_,bl)=>{"use strict";var Ph=Js(),Mh=Ks();function _l(t,e,n){let r=t*e;return n!==8&&(r=Math.ceil(r/(8/n))),r}var wt=bl.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=Ph.getImagePasses(n,r);for(let l=0;l<a.length;l++)this._images.push({byteWidth:_l(a[l].width,i,o),height:a[l].height,lineIndex:0})}else this._images.push({byteWidth:_l(n,i,o),height:r,lineIndex:0});o===8?this._xComparison=i:o===16?this._xComparison=i*2:this._xComparison=1};wt.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};wt.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}};wt.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}};wt.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,u=o>s?e[o-r]:0,c=Math.floor((u+l)/2);e[o]=a+c}};wt.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,u=o>s?e[o-r]:0,c=o>s&&i?i[o-r]:0,d=Mh(u,l,c);e[o]=a+d}};wt.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 Tl=v((eb,Il)=>{"use strict";var Lh=require("util"),wl=Vs(),Nh=Xs(),Oh=Il.exports=function(t){wl.call(this);let e=[],n=this;this._filter=new Nh(t,{read:this.read.bind(this),write:function(r){e.push(r)},complete:function(){n.emit("complete",Buffer.concat(e))}}),this._filter.start()};Lh.inherits(Oh,wl)});var It=v((tb,Al)=>{"use strict";Al.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 ei=v((nb,kl)=>{"use strict";var Qs=[];(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;Qs[t]=e}})();var Zs=kl.exports=function(){this._crc=-1};Zs.prototype.write=function(t){for(let e=0;e<t.length;e++)this._crc=Qs[(this._crc^t[e])&255]^this._crc>>>8;return!0};Zs.prototype.crc32=function(){return this._crc^-1};Zs.crc32=function(t){let e=-1;for(let n=0;n<t.length;n++)e=Qs[(e^t[n])&255]^e>>>8;return e^-1}});var ti=v((rb,Cl)=>{"use strict";var H=It(),Bh=ei(),q=Cl.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[H.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[H.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[H.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[H.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[H.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[H.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(){}};q.prototype.start=function(){this.read(H.PNG_SIGNATURE.length,this._parseSignature.bind(this))};q.prototype._parseSignature=function(t){let e=H.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))};q.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!==H.TYPE_IHDR){this.error(new Error("Expected IHDR on beggining"));return}if(this._crc=new Bh,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))};q.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};q.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};q.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))};q.prototype._handleIHDR=function(t){this.read(t,this._parseIHDR.bind(this))};q.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 H.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=H.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:n,depth:r,interlace:!!a,palette:!!(s&H.COLORTYPE_PALETTE),color:!!(s&H.COLORTYPE_COLOR),alpha:!!(s&H.COLORTYPE_ALPHA),bpp:l,colorType:s}),this._handleChunkEnd()};q.prototype._handlePLTE=function(t){this.read(t,this._parsePLTE.bind(this))};q.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()};q.prototype._handleTRNS=function(t){this.simpleTransparency(),this.read(t,this._parseTRNS.bind(this))};q.prototype._parseTRNS=function(t){if(this._crc.write(t),this._colorType===H.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===H.COLORTYPE_GRAYSCALE&&this.transColor([t.readUInt16BE(0)]),this._colorType===H.COLORTYPE_COLOR&&this.transColor([t.readUInt16BE(0),t.readUInt16BE(2),t.readUInt16BE(4)]),this._handleChunkEnd()};q.prototype._handleGAMA=function(t){this.read(t,this._parseGAMA.bind(this))};q.prototype._parseGAMA=function(t){this._crc.write(t),this.gamma(t.readUInt32BE(0)/H.GAMMA_DIVISION),this._handleChunkEnd()};q.prototype._handleIDAT=function(t){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-t,this._parseIDAT.bind(this,t))};q.prototype._parseIDAT=function(t,e){if(this._crc.write(e),this._colorType===H.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()};q.prototype._handleIEND=function(t){this.read(t,this._parseIEND.bind(this))};q.prototype._parseIEND=function(t){this._crc.write(t),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}});var ni=v(Rl=>{"use strict";var xl=Js(),Dh=[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]}],Fh=[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 Hh(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,u,c,d,p,h;switch(e){default:throw new Error("unrecognised depth");case 16:p=t[r],r++,n.push((i<<8)+p);break;case 4:p=i&15,h=i>>4,n.push(h,p);break;case 2:c=i&3,d=i>>2&3,p=i>>4&3,h=i>>6&3,n.push(h,p,d,c);break;case 1:o=i&1,a=i>>1&1,l=i>>2&1,u=i>>3&1,c=i>>4&1,d=i>>5&1,p=i>>6&1,h=i>>7&1,n.push(h,p,d,c,u,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 Uh(t,e,n,r,s,i){let o=t.width,a=t.height,l=t.index;for(let u=0;u<a;u++)for(let c=0;c<o;c++){let d=n(c,u,l);Dh[r](e,s,d,i),i+=r}return i}function Wh(t,e,n,r,s,i){let o=t.width,a=t.height,l=t.index;for(let u=0;u<a;u++){for(let c=0;c<o;c++){let d=s.get(r),p=n(c,u,l);Fh[r](e,d,p,i)}s.resetAfterLine()}}Rl.dataToBitMap=function(t,e){let n=e.width,r=e.height,s=e.depth,i=e.bpp,o=e.interlace,a;s!==8&&(a=Hh(t,s));let l;s<=8?l=Buffer.alloc(n*r*4):l=new Uint16Array(n*r*4);let u=Math.pow(2,s)-1,c=0,d,p;if(o)d=xl.getImagePasses(n,r),p=xl.getInterlaceIterator(n,r);else{let h=0;p=function(){let g=h;return h+=4,g},d=[{width:n,height:r}]}for(let h=0;h<d.length;h++)s===8?c=Uh(d[h],l,p,i,t,c):Wh(d[h],l,p,i,a,u);if(s===8){if(c!==t.length)throw new Error("extra data found")}else a.end();return l}});var ri=v((ib,El)=>{"use strict";function qh(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 u=0;u<4;u++)e[i+u]=l[u];i+=4}}function Gh(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 u=0;u<4;u++)e[i+u]=0;i+=4}}function jh(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 u=0;u<n;u++){for(let c=0;c<4;c++)e[a+c]=Math.floor(t[a+c]*i/o+.5);a+=4}}El.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?qh(t,l,r,s,a):(o&&Gh(t,l,r,s,o),n!==8&&(n===16&&(l=Buffer.alloc(r*s*4)),jh(t,l,r,s,n))),l}});var Ll=v((ob,Ml)=>{"use strict";var $h=require("util"),si=require("zlib"),Pl=Vs(),zh=Tl(),Vh=ti(),Yh=ni(),Jh=ri(),ge=Ml.exports=function(t){Pl.call(this),this._parser=new Vh(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()};$h.inherits(ge,Pl);ge.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};ge.prototype._inflateData=function(t){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=si.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,si.Z_MIN_CHUNK);this._inflate=si.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)};ge.prototype._handleMetaData=function(t){this._metaData=t,this._bitmapInfo=Object.create(t),this._filter=new zh(this._bitmapInfo)};ge.prototype._handleTransColor=function(t){this._bitmapInfo.transColor=t};ge.prototype._handlePalette=function(t){this._bitmapInfo.palette=t};ge.prototype._simpleTransparency=function(){this._metaData.alpha=!0};ge.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};ge.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit("error","No Inflate block"))};ge.prototype._complete=function(t){if(this.errord)return;let e;try{let n=Yh.dataToBitMap(t,this._bitmapInfo);e=Jh(n,this._bitmapInfo),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var Ol=v((ab,Nl)=>{"use strict";var re=It();Nl.exports=function(t,e,n,r){let s=[re.COLORTYPE_COLOR_ALPHA,re.COLORTYPE_ALPHA].indexOf(r.colorType)!==-1;if(r.colorType===r.inputColorType){let g=(function(){let f=new ArrayBuffer(2);return new DataView(f).setInt16(0,256,!0),new Int16Array(f)[0]!==256})();if(r.bitDepth===8||r.bitDepth===16&&g)return t}let i=r.bitDepth!==16?t:new Uint16Array(t.buffer),o=255,a=re.COLORTYPE_TO_BPP_MAP[r.inputColorType];a===4&&!r.inputHasAlpha&&(a=3);let l=re.COLORTYPE_TO_BPP_MAP[r.colorType];r.bitDepth===16&&(o=65535,l*=2);let u=Buffer.alloc(e*n*l),c=0,d=0,p=r.bgColor||{};p.red===void 0&&(p.red=o),p.green===void 0&&(p.green=o),p.blue===void 0&&(p.blue=o);function h(){let g,f,m,y=o;switch(r.inputColorType){case re.COLORTYPE_COLOR_ALPHA:y=i[c+3],g=i[c],f=i[c+1],m=i[c+2];break;case re.COLORTYPE_COLOR:g=i[c],f=i[c+1],m=i[c+2];break;case re.COLORTYPE_ALPHA:y=i[c+1],g=i[c],f=g,m=g;break;case re.COLORTYPE_GRAYSCALE:g=i[c],f=g,m=g;break;default:throw new Error("input color type:"+r.inputColorType+" is not supported at present")}return r.inputHasAlpha&&(s||(y/=o,g=Math.min(Math.max(Math.round((1-y)*p.red+y*g),0),o),f=Math.min(Math.max(Math.round((1-y)*p.green+y*f),0),o),m=Math.min(Math.max(Math.round((1-y)*p.blue+y*m),0),o))),{red:g,green:f,blue:m,alpha:y}}for(let g=0;g<n;g++)for(let f=0;f<e;f++){let m=h(i,c);switch(r.colorType){case re.COLORTYPE_COLOR_ALPHA:case re.COLORTYPE_COLOR:r.bitDepth===8?(u[d]=m.red,u[d+1]=m.green,u[d+2]=m.blue,s&&(u[d+3]=m.alpha)):(u.writeUInt16BE(m.red,d),u.writeUInt16BE(m.green,d+2),u.writeUInt16BE(m.blue,d+4),s&&u.writeUInt16BE(m.alpha,d+6));break;case re.COLORTYPE_ALPHA:case re.COLORTYPE_GRAYSCALE:{let y=(m.red+m.green+m.blue)/3;r.bitDepth===8?(u[d]=y,s&&(u[d+1]=m.alpha)):(u.writeUInt16BE(y,d),s&&u.writeUInt16BE(m.alpha,d+2));break}default:throw new Error("unrecognised color Type "+r.colorType)}c+=a,d+=l}return u}});var Fl=v((lb,Dl)=>{"use strict";var Bl=Ks();function Kh(t,e,n,r,s){for(let i=0;i<n;i++)r[s+i]=t[e+i]}function Xh(t,e,n){let r=0,s=e+n;for(let i=e;i<s;i++)r+=Math.abs(t[i]);return r}function Qh(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 Zh(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 eg(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 tg(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 ng(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,u=t[e+o]-(a+l>>1);r[s+o]=u}}function rg(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 sg(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,u=e>0&&o>=i?t[e+o-(n+i)]:0,c=t[e+o]-Bl(a,l,u);r[s+o]=c}}function ig(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,u=t[e+i]-Bl(o,a,l);s+=Math.abs(u)}return s}var og={0:Kh,1:Qh,2:eg,3:ng,4:sg},ag={0:Xh,1:Zh,2:tg,3:rg,4:ig};Dl.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,u=Buffer.alloc((o+1)*n),c=i[0];for(let d=0;d<n;d++){if(i.length>1){let p=1/0;for(let h=0;h<i.length;h++){let g=ag[i[h]](t,l,o,s);g<p&&(c=i[h],p=g)}}u[a]=c,a++,og[c](t,l,o,u,a,s),a+=o,l+=o}return u}});var ii=v((cb,Hl)=>{"use strict";var z=It(),lg=ei(),cg=Ol(),ug=Fl(),dg=require("zlib"),Ne=Hl.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||dg.createDeflate,t.bitDepth=t.bitDepth||8,t.colorType=typeof t.colorType=="number"?t.colorType:z.COLORTYPE_COLOR_ALPHA,t.inputColorType=typeof t.inputColorType=="number"?t.inputColorType:z.COLORTYPE_COLOR_ALPHA,[z.COLORTYPE_GRAYSCALE,z.COLORTYPE_COLOR,z.COLORTYPE_COLOR_ALPHA,z.COLORTYPE_ALPHA].indexOf(t.colorType)===-1)throw new Error("option color type:"+t.colorType+" is not supported at present");if([z.COLORTYPE_GRAYSCALE,z.COLORTYPE_COLOR,z.COLORTYPE_COLOR_ALPHA,z.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")};Ne.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Ne.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Ne.prototype.filterData=function(t,e,n){let r=cg(t,e,n,this._options),s=z.COLORTYPE_TO_BPP_MAP[this._options.colorType];return ug(r,e,n,this._options,s)};Ne.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(lg.crc32(r.slice(4,r.length-4)),r.length-4),r};Ne.prototype.packGAMA=function(t){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(t*z.GAMMA_DIVISION),0),this._packChunk(z.TYPE_gAMA,e)};Ne.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(z.TYPE_IHDR,n)};Ne.prototype.packIDAT=function(t){return this._packChunk(z.TYPE_IDAT,t)};Ne.prototype.packIEND=function(){return this._packChunk(z.TYPE_IEND,null)}});var Gl=v((ub,ql)=>{"use strict";var fg=require("util"),Ul=require("stream"),pg=It(),hg=ii(),Wl=ql.exports=function(t){Ul.call(this);let e=t||{};this._packer=new hg(e),this._deflate=this._packer.createDeflate(),this.readable=!0};fg.inherits(Wl,Ul);Wl.prototype.pack=function(t,e,n,r){this.emit("data",Buffer.from(pg.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 Jl=v((an,Yl)=>{"use strict";var jl=require("assert").ok,Tt=require("zlib"),gg=require("util"),$l=require("buffer").kMaxLength;function Ye(t){if(!(this instanceof Ye))return new Ye(t);t&&t.chunkSize<Tt.Z_MIN_CHUNK&&(t.chunkSize=Tt.Z_MIN_CHUNK),Tt.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 mg(t){return new Ye(t)}function zl(t,e){e&&process.nextTick(e),t._handle&&(t._handle.close(),t._handle=null)}Ye.prototype._processChunk=function(t,e,n){if(typeof n=="function")return Tt.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=[],u=0,c;this.on("error",function(g){c=g});function d(g,f){if(r._hadError)return;let m=i-f;if(jl(m>=0,"have should not go down"),m>0){let y=r._buffer.slice(r._offset,r._offset+m);if(r._offset+=m,y.length>o&&(y=y.slice(0,o)),l.push(y),u+=y.length,o-=y.length,o===0)return!1}return(f===0||r._offset>=r._chunkSize)&&(i=r._chunkSize,r._offset=0,r._buffer=Buffer.allocUnsafe(r._chunkSize)),f===0?(a+=s-g,s=g,!0):!1}jl(this._handle,"zlib binding closed");let p;do p=this._handle.writeSync(e,t,a,s,this._buffer,this._offset,i),p=p||this._writeState;while(!this._hadError&&d(p[0],p[1]));if(this._hadError)throw c;if(u>=$l)throw zl(this),new RangeError("Cannot create final Buffer. It would be larger than 0x"+$l.toString(16)+" bytes");let h=Buffer.concat(l,u);return zl(this),h};gg.inherits(Ye,Tt.Inflate);function yg(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=Tt.Z_FINISH),t._processChunk(e,n)}function Vl(t,e){return yg(new Ye(e),t)}Yl.exports=an=Vl;an.Inflate=Ye;an.createInflate=mg;an.inflateSync=Vl});var oi=v((db,Xl)=>{"use strict";var Kl=Xl.exports=function(t){this._buffer=t,this._reads=[]};Kl.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})};Kl.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 Zl=v(Ql=>{"use strict";var vg=oi(),Sg=Xs();Ql.process=function(t,e){let n=[],r=new vg(t);return new Sg(e,{read:r.read.bind(r),write:function(i){n.push(i)},complete:function(){}}).start(),r.process(),Buffer.concat(n)}});var rc=v((pb,nc)=>{"use strict";var ec=!0,tc=require("zlib"),_g=Jl();tc.deflateSync||(ec=!1);var bg=oi(),wg=Zl(),Ig=ti(),Tg=ni(),Ag=ri();nc.exports=function(t,e){if(!ec)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(w){n=w}let s;function i(w){s=w}function o(w){s.transColor=w}function a(w){s.palette=w}function l(){s.alpha=!0}let u;function c(w){u=w}let d=[];function p(w){d.push(w)}let h=new bg(t);if(new Ig(e,{read:h.read.bind(h),error:r,metadata:i,gamma:c,palette:a,transColor:o,inflateData:p,simpleTransparency:l}).start(),h.process(),n)throw n;let f=Buffer.concat(d);d.length=0;let m;if(s.interlace)m=tc.inflateSync(f);else{let C=((s.width*s.bpp*s.depth+7>>3)+1)*s.height;m=_g(f,{chunkSize:C,maxLength:C})}if(f=null,!m||!m.length)throw new Error("bad png - invalid inflate data response");let y=wg.process(m,s);f=null;let T=Tg.dataToBitMap(y,s);y=null;let A=Ag(T,s);return s.data=A,s.gamma=u||0,s}});var ac=v((hb,oc)=>{"use strict";var sc=!0,ic=require("zlib");ic.deflateSync||(sc=!1);var kg=It(),Cg=ii();oc.exports=function(t,e){if(!sc)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 Cg(n),s=[];s.push(Buffer.from(kg.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=ic.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 lc=v(ai=>{"use strict";var xg=rc(),Rg=ac();ai.read=function(t,e){return xg(t,e||{})};ai.write=function(t,e){return Rg(t,e)}});var dc=v(uc=>{"use strict";var Eg=require("util"),cc=require("stream"),Pg=Ll(),Mg=Gl(),Lg=lc(),Y=uc.PNG=function(t){cc.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 Pg(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 Mg(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"))};Eg.inherits(Y,cc);Y.sync=Lg;Y.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)};Y.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};Y.prototype.write=function(t){return this._parser.write(t),!0};Y.prototype.end=function(t){this._parser.end(t)};Y.prototype._metadata=function(t){this.width=t.width,this.height=t.height,this.emit("metadata",t)};Y.prototype._gamma=function(t){this.gamma=t};Y.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit("close")};Y.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)};Y.prototype.bitblt=function(t,e,n,r,s,i,o){return Y.bitblt(this,t,e,n,r,s,i,o),this};Y.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}};Y.prototype.adjustGamma=function(){Y.adjustGamma(this)}});var ln=v(Je=>{function fc(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("")}}Je.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:fc(e.color.dark||"#000000ff"),light:fc(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};Je.getScale=function(e,n){return n.width&&n.width>=e+n.margin*2?n.width/(e+n.margin*2):n.scale};Je.getImageWidth=function(e,n){let r=Je.getScale(e,n);return Math.floor((e+n.margin*2)*r)};Je.qrToImageData=function(e,n,r){let s=n.modules.size,i=n.modules.data,o=Je.getScale(s,r),a=Math.floor((s+r.margin*2)*o),l=r.margin*o,u=[r.color.light,r.color.dark];for(let c=0;c<a;c++)for(let d=0;d<a;d++){let p=(c*a+d)*4,h=r.color.light;if(c>=l&&d>=l&&c<a-l&&d<a-l){let g=Math.floor((c-l)/o),f=Math.floor((d-l)/o);h=u[i[g*s+f]?1:0]}e[p++]=h.r,e[p++]=h.g,e[p++]=h.b,e[p]=h.a}}});var pc=v(me=>{var Ng=require("fs"),Og=dc().PNG,li=ln();me.render=function(e,n){let r=li.getOptions(n),s=r.rendererOpts,i=li.getImageWidth(e.modules.size,r);s.width=i,s.height=i;let o=new Og(s);return li.qrToImageData(o.data,e,r),o};me.renderToDataURL=function(e,n,r){typeof r>"u"&&(r=n,n=void 0),me.renderToBuffer(e,n,function(s,i){s&&r(s);let o="data:image/png;base64,";o+=i.toString("base64"),r(null,o)})};me.renderToBuffer=function(e,n,r){typeof r>"u"&&(r=n,n=void 0);let s=me.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()};me.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=Ng.createWriteStream(e);a.on("error",o),a.on("close",o),me.renderToFileStream(a,n,r)};me.renderToFileStream=function(e,n,r){me.render(n,r).pack().pipe(e)}});var hc=v(or=>{var Bg=ln(),Dg={WW:" ",WB:"\u2584",BB:"\u2588",BW:"\u2580"},Fg={BB:" ",BW:"\u2584",WW:"\u2588",WB:"\u2580"};function Hg(t,e,n){return t&&e?n.BB:t&&!e?n.BW:!t&&e?n.WB:n.WW}or.render=function(t,e,n){let r=Bg.getOptions(e),s=Dg;(r.color.dark.hex==="#ffffff"||r.color.light.hex==="#000000")&&(s=Fg);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 u=Array(r.margin+1).join(s.WW);a+=l;for(let c=0;c<i;c+=2){a+=u;for(let d=0;d<i;d++){let p=o[c*i+d],h=o[(c+1)*i+d];a+=Hg(p,h,s)}a+=u+`
15
- `}return a+=l.slice(0,-1),typeof n=="function"&&n(null,a),a};or.renderToFile=function(e,n,r,s){typeof s>"u"&&(s=r,r=void 0);let i=require("fs"),o=or.render(n,r);i.writeFile(e,o,s)}});var mc=v(gc=>{gc.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),u=Array(2).join(o);a+=l+`
16
- `;for(let c=0;c<r;++c){a+=o;for(let d=0;d<r;d++)a+=s[c*r+d]?i:o;a+=u+`
13
+ `);let o=Lh(e,n,r),a=ls.getSymbolSize(e),l=new wh(a);return xh(l,e),Rh(l),Eh(l,e),zr(l,n,0),e>=7&&Ph(l,e),Mh(l,o),isNaN(s)&&(s=Vr.getBestMask(l,zr.bind(null,l,n))),Vr.applyMask(s,l),zr(l,n,s),{modules:l,version:e,errorCorrectionLevel:n,maskPattern:s,segments:r}}Sl.create=function(e,n){if(typeof e>"u"||e==="")throw new Error("No input text");let s=jr.M,r,i;return typeof n<"u"&&(s=jr.from(n.errorCorrectionLevel,jr.M),r=as.from(n.version),i=Vr.from(n.maskPattern),n.toSJISFunc&&ls.setToSJISFunction(n.toSJISFunc)),Oh(e,r,s,i)}});var Jr=v((hb,bl)=>{"use strict";var Bh=require("util"),_l=require("stream"),ce=bl.exports=function(){_l.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};Bh.inherits(ce,_l);ce.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))};ce.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};ce.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()))};ce.prototype.destroySoon=ce.prototype.end;ce.prototype._end=function(){this._reads.length>0&&this.emit("error",new Error("Unexpected end of input")),this.destroy()};ce.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit("close"))};ce.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))};ce.prototype._processRead=function(t){this._reads.shift();let e=0,n=0,s=Buffer.alloc(t.length);for(;e<t.length;){let r=this._buffers[n++],i=Math.min(r.length,t.length-e);r.copy(s,e,0,i),e+=i,i!==r.length&&(this._buffers[--n]=r.slice(i))}n>0&&this._buffers.splice(0,n),this._buffered-=t.length,t.func.call(this,s)};ce.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 Xr=v(Kr=>{"use strict";var Le=[{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]}];Kr.getImagePasses=function(t,e){let n=[],s=t%8,r=e%8,i=(t-s)/8,o=(e-r)/8;for(let a=0;a<Le.length;a++){let l=Le[a],u=i*l.x.length,c=o*l.y.length;for(let d=0;d<l.x.length&&l.x[d]<s;d++)u++;for(let d=0;d<l.y.length&&l.y[d]<r;d++)c++;u>0&&c>0&&n.push({width:u,height:c,index:a})}return n};Kr.getInterlaceIterator=function(t){return function(e,n,s){let r=e%Le[s].x.length,i=(e-r)/Le[s].x.length*8+Le[s].x[r],o=n%Le[s].y.length,a=(n-o)/Le[s].y.length*8+Le[s].y[o];return i*4+a*t*4}}});var Zr=v((mb,wl)=>{"use strict";wl.exports=function(e,n,s){let r=e+n-s,i=Math.abs(r-e),o=Math.abs(r-n),a=Math.abs(r-s);return i<=o&&i<=a?e:o<=a?n:s}});var ei=v((yb,Tl)=>{"use strict";var Dh=Xr(),Fh=Zr();function Il(t,e,n){let s=t*e;return n!==8&&(s=Math.ceil(s/(8/n))),s}var It=Tl.exports=function(t,e){let n=t.width,s=t.height,r=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=[],r){let a=Dh.getImagePasses(n,s);for(let l=0;l<a.length;l++)this._images.push({byteWidth:Il(a[l].width,i,o),height:a[l].height,lineIndex:0})}else this._images.push({byteWidth:Il(n,i,o),height:s,lineIndex:0});o===8?this._xComparison=i:o===16?this._xComparison=i*2:this._xComparison=1};It.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};It.prototype._unFilterType1=function(t,e,n){let s=this._xComparison,r=s-1;for(let i=0;i<n;i++){let o=t[1+i],a=i>r?e[i-s]:0;e[i]=o+a}};It.prototype._unFilterType2=function(t,e,n){let s=this._lastLine;for(let r=0;r<n;r++){let i=t[1+r],o=s?s[r]:0;e[r]=i+o}};It.prototype._unFilterType3=function(t,e,n){let s=this._xComparison,r=s-1,i=this._lastLine;for(let o=0;o<n;o++){let a=t[1+o],l=i?i[o]:0,u=o>r?e[o-s]:0,c=Math.floor((u+l)/2);e[o]=a+c}};It.prototype._unFilterType4=function(t,e,n){let s=this._xComparison,r=s-1,i=this._lastLine;for(let o=0;o<n;o++){let a=t[1+o],l=i?i[o]:0,u=o>r?e[o-s]:0,c=o>r&&i?i[o-s]:0,d=Fh(u,l,c);e[o]=a+d}};It.prototype._reverseFilterLine=function(t){let e=t[0],n,s=this._images[this._imageIndex],r=s.byteWidth;if(e===0)n=t.slice(1,r+1);else switch(n=Buffer.alloc(r),e){case 1:this._unFilterType1(t,n,r);break;case 2:this._unFilterType2(t,n,r);break;case 3:this._unFilterType3(t,n,r);break;case 4:this._unFilterType4(t,n,r);break;default:throw new Error("Unrecognised filter type - "+e)}this.write(n),s.lineIndex++,s.lineIndex>=s.height?(this._lastLine=null,this._imageIndex++,s=this._images[this._imageIndex]):this._lastLine=n,s?this.read(s.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}});var Cl=v((vb,kl)=>{"use strict";var Hh=require("util"),Al=Jr(),Uh=ei(),Wh=kl.exports=function(t){Al.call(this);let e=[],n=this;this._filter=new Uh(t,{read:this.read.bind(this),write:function(s){e.push(s)},complete:function(){n.emit("complete",Buffer.concat(e))}}),this._filter.start()};Hh.inherits(Wh,Al)});var Tt=v((Sb,xl)=>{"use strict";xl.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 si=v((_b,Rl)=>{"use strict";var ti=[];(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;ti[t]=e}})();var ni=Rl.exports=function(){this._crc=-1};ni.prototype.write=function(t){for(let e=0;e<t.length;e++)this._crc=ti[(this._crc^t[e])&255]^this._crc>>>8;return!0};ni.prototype.crc32=function(){return this._crc^-1};ni.crc32=function(t){let e=-1;for(let n=0;n<t.length;n++)e=ti[(e^t[n])&255]^e>>>8;return e^-1}});var ri=v((bb,El)=>{"use strict";var U=Tt(),qh=si(),G=El.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[U.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[U.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[U.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[U.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[U.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[U.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(){}};G.prototype.start=function(){this.read(U.PNG_SIGNATURE.length,this._parseSignature.bind(this))};G.prototype._parseSignature=function(t){let e=U.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))};G.prototype._parseChunkBegin=function(t){let e=t.readUInt32BE(0),n=t.readUInt32BE(4),s="";for(let i=4;i<8;i++)s+=String.fromCharCode(t[i]);let r=!!(t[4]&32);if(!this._hasIHDR&&n!==U.TYPE_IHDR){this.error(new Error("Expected IHDR on beggining"));return}if(this._crc=new qh,this._crc.write(Buffer.from(s)),this._chunks[n])return this._chunks[n](e);if(!r){this.error(new Error("Unsupported critical chunk type "+s));return}this.read(e+4,this._skipChunk.bind(this))};G.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};G.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};G.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))};G.prototype._handleIHDR=function(t){this.read(t,this._parseIHDR.bind(this))};G.prototype._parseIHDR=function(t){this._crc.write(t);let e=t.readUInt32BE(0),n=t.readUInt32BE(4),s=t[8],r=t[9],i=t[10],o=t[11],a=t[12];if(s!==8&&s!==4&&s!==2&&s!==1&&s!==16){this.error(new Error("Unsupported bit depth "+s));return}if(!(r in U.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=r;let l=U.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:n,depth:s,interlace:!!a,palette:!!(r&U.COLORTYPE_PALETTE),color:!!(r&U.COLORTYPE_COLOR),alpha:!!(r&U.COLORTYPE_ALPHA),bpp:l,colorType:r}),this._handleChunkEnd()};G.prototype._handlePLTE=function(t){this.read(t,this._parsePLTE.bind(this))};G.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()};G.prototype._handleTRNS=function(t){this.simpleTransparency(),this.read(t,this._parseTRNS.bind(this))};G.prototype._parseTRNS=function(t){if(this._crc.write(t),this._colorType===U.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===U.COLORTYPE_GRAYSCALE&&this.transColor([t.readUInt16BE(0)]),this._colorType===U.COLORTYPE_COLOR&&this.transColor([t.readUInt16BE(0),t.readUInt16BE(2),t.readUInt16BE(4)]),this._handleChunkEnd()};G.prototype._handleGAMA=function(t){this.read(t,this._parseGAMA.bind(this))};G.prototype._parseGAMA=function(t){this._crc.write(t),this.gamma(t.readUInt32BE(0)/U.GAMMA_DIVISION),this._handleChunkEnd()};G.prototype._handleIDAT=function(t){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-t,this._parseIDAT.bind(this,t))};G.prototype._parseIDAT=function(t,e){if(this._crc.write(e),this._colorType===U.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()};G.prototype._handleIEND=function(t){this.read(t,this._parseIEND.bind(this))};G.prototype._parseIEND=function(t){this._crc.write(t),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}});var ii=v(Ml=>{"use strict";var Pl=Xr(),Gh=[function(){},function(t,e,n,s){if(s===e.length)throw new Error("Ran out of data");let r=e[s];t[n]=r,t[n+1]=r,t[n+2]=r,t[n+3]=255},function(t,e,n,s){if(s+1>=e.length)throw new Error("Ran out of data");let r=e[s];t[n]=r,t[n+1]=r,t[n+2]=r,t[n+3]=e[s+1]},function(t,e,n,s){if(s+2>=e.length)throw new Error("Ran out of data");t[n]=e[s],t[n+1]=e[s+1],t[n+2]=e[s+2],t[n+3]=255},function(t,e,n,s){if(s+3>=e.length)throw new Error("Ran out of data");t[n]=e[s],t[n+1]=e[s+1],t[n+2]=e[s+2],t[n+3]=e[s+3]}],jh=[function(){},function(t,e,n,s){let r=e[0];t[n]=r,t[n+1]=r,t[n+2]=r,t[n+3]=s},function(t,e,n){let s=e[0];t[n]=s,t[n+1]=s,t[n+2]=s,t[n+3]=e[1]},function(t,e,n,s){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=s},function(t,e,n){t[n]=e[0],t[n+1]=e[1],t[n+2]=e[2],t[n+3]=e[3]}];function $h(t,e){let n=[],s=0;function r(){if(s===t.length)throw new Error("Ran out of data");let i=t[s];s++;let o,a,l,u,c,d,f,h;switch(e){default:throw new Error("unrecognised depth");case 16:f=t[s],s++,n.push((i<<8)+f);break;case 4:f=i&15,h=i>>4,n.push(h,f);break;case 2:c=i&3,d=i>>2&3,f=i>>4&3,h=i>>6&3,n.push(h,f,d,c);break;case 1:o=i&1,a=i>>1&1,l=i>>2&1,u=i>>3&1,c=i>>4&1,d=i>>5&1,f=i>>6&1,h=i>>7&1,n.push(h,f,d,c,u,l,a,o);break}}return{get:function(i){for(;n.length<i;)r();let o=n.slice(0,i);return n=n.slice(i),o},resetAfterLine:function(){n.length=0},end:function(){if(s!==t.length)throw new Error("extra data found")}}}function zh(t,e,n,s,r,i){let o=t.width,a=t.height,l=t.index;for(let u=0;u<a;u++)for(let c=0;c<o;c++){let d=n(c,u,l);Gh[s](e,r,d,i),i+=s}return i}function Vh(t,e,n,s,r,i){let o=t.width,a=t.height,l=t.index;for(let u=0;u<a;u++){for(let c=0;c<o;c++){let d=r.get(s),f=n(c,u,l);jh[s](e,d,f,i)}r.resetAfterLine()}}Ml.dataToBitMap=function(t,e){let n=e.width,s=e.height,r=e.depth,i=e.bpp,o=e.interlace,a;r!==8&&(a=$h(t,r));let l;r<=8?l=Buffer.alloc(n*s*4):l=new Uint16Array(n*s*4);let u=Math.pow(2,r)-1,c=0,d,f;if(o)d=Pl.getImagePasses(n,s),f=Pl.getInterlaceIterator(n,s);else{let h=0;f=function(){let g=h;return h+=4,g},d=[{width:n,height:s}]}for(let h=0;h<d.length;h++)r===8?c=zh(d[h],l,f,i,t,c):Vh(d[h],l,f,i,a,u);if(r===8){if(c!==t.length)throw new Error("extra data found")}else a.end();return l}});var oi=v((Ib,Ll)=>{"use strict";function Qh(t,e,n,s,r){let i=0;for(let o=0;o<s;o++)for(let a=0;a<n;a++){let l=r[t[i]];if(!l)throw new Error("index "+t[i]+" not in palette");for(let u=0;u<4;u++)e[i+u]=l[u];i+=4}}function Yh(t,e,n,s,r){let i=0;for(let o=0;o<s;o++)for(let a=0;a<n;a++){let l=!1;if(r.length===1?r[0]===t[i]&&(l=!0):r[0]===t[i]&&r[1]===t[i+1]&&r[2]===t[i+2]&&(l=!0),l)for(let u=0;u<4;u++)e[i+u]=0;i+=4}}function Jh(t,e,n,s,r){let i=255,o=Math.pow(2,r)-1,a=0;for(let l=0;l<s;l++)for(let u=0;u<n;u++){for(let c=0;c<4;c++)e[a+c]=Math.floor(t[a+c]*i/o+.5);a+=4}}Ll.exports=function(t,e){let n=e.depth,s=e.width,r=e.height,i=e.colorType,o=e.transColor,a=e.palette,l=t;return i===3?Qh(t,l,s,r,a):(o&&Yh(t,l,s,r,o),n!==8&&(n===16&&(l=Buffer.alloc(s*r*4)),Jh(t,l,s,r,n))),l}});var Bl=v((Tb,Ol)=>{"use strict";var Kh=require("util"),ai=require("zlib"),Nl=Jr(),Xh=Cl(),Zh=ri(),eg=ii(),tg=oi(),ge=Ol.exports=function(t){Nl.call(this),this._parser=new Zh(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()};Kh.inherits(ge,Nl);ge.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};ge.prototype._inflateData=function(t){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=ai.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,s=Math.max(n,ai.Z_MIN_CHUNK);this._inflate=ai.createInflate({chunkSize:s});let r=n,i=this.emit.bind(this,"error");this._inflate.on("error",function(a){r&&i(a)}),this._filter.on("complete",this._complete.bind(this));let o=this._filter.write.bind(this._filter);this._inflate.on("data",function(a){r&&(a.length>r&&(a=a.slice(0,r)),r-=a.length,o(a))}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(t)};ge.prototype._handleMetaData=function(t){this._metaData=t,this._bitmapInfo=Object.create(t),this._filter=new Xh(this._bitmapInfo)};ge.prototype._handleTransColor=function(t){this._bitmapInfo.transColor=t};ge.prototype._handlePalette=function(t){this._bitmapInfo.palette=t};ge.prototype._simpleTransparency=function(){this._metaData.alpha=!0};ge.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};ge.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit("error","No Inflate block"))};ge.prototype._complete=function(t){if(this.errord)return;let e;try{let n=eg.dataToBitMap(t,this._bitmapInfo);e=tg(n,this._bitmapInfo),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var Fl=v((Ab,Dl)=>{"use strict";var re=Tt();Dl.exports=function(t,e,n,s){let r=[re.COLORTYPE_COLOR_ALPHA,re.COLORTYPE_ALPHA].indexOf(s.colorType)!==-1;if(s.colorType===s.inputColorType){let g=(function(){let p=new ArrayBuffer(2);return new DataView(p).setInt16(0,256,!0),new Int16Array(p)[0]!==256})();if(s.bitDepth===8||s.bitDepth===16&&g)return t}let i=s.bitDepth!==16?t:new Uint16Array(t.buffer),o=255,a=re.COLORTYPE_TO_BPP_MAP[s.inputColorType];a===4&&!s.inputHasAlpha&&(a=3);let l=re.COLORTYPE_TO_BPP_MAP[s.colorType];s.bitDepth===16&&(o=65535,l*=2);let u=Buffer.alloc(e*n*l),c=0,d=0,f=s.bgColor||{};f.red===void 0&&(f.red=o),f.green===void 0&&(f.green=o),f.blue===void 0&&(f.blue=o);function h(){let g,p,m,y=o;switch(s.inputColorType){case re.COLORTYPE_COLOR_ALPHA:y=i[c+3],g=i[c],p=i[c+1],m=i[c+2];break;case re.COLORTYPE_COLOR:g=i[c],p=i[c+1],m=i[c+2];break;case re.COLORTYPE_ALPHA:y=i[c+1],g=i[c],p=g,m=g;break;case re.COLORTYPE_GRAYSCALE:g=i[c],p=g,m=g;break;default:throw new Error("input color type:"+s.inputColorType+" is not supported at present")}return s.inputHasAlpha&&(r||(y/=o,g=Math.min(Math.max(Math.round((1-y)*f.red+y*g),0),o),p=Math.min(Math.max(Math.round((1-y)*f.green+y*p),0),o),m=Math.min(Math.max(Math.round((1-y)*f.blue+y*m),0),o))),{red:g,green:p,blue:m,alpha:y}}for(let g=0;g<n;g++)for(let p=0;p<e;p++){let m=h(i,c);switch(s.colorType){case re.COLORTYPE_COLOR_ALPHA:case re.COLORTYPE_COLOR:s.bitDepth===8?(u[d]=m.red,u[d+1]=m.green,u[d+2]=m.blue,r&&(u[d+3]=m.alpha)):(u.writeUInt16BE(m.red,d),u.writeUInt16BE(m.green,d+2),u.writeUInt16BE(m.blue,d+4),r&&u.writeUInt16BE(m.alpha,d+6));break;case re.COLORTYPE_ALPHA:case re.COLORTYPE_GRAYSCALE:{let y=(m.red+m.green+m.blue)/3;s.bitDepth===8?(u[d]=y,r&&(u[d+1]=m.alpha)):(u.writeUInt16BE(y,d),r&&u.writeUInt16BE(m.alpha,d+2));break}default:throw new Error("unrecognised color Type "+s.colorType)}c+=a,d+=l}return u}});var Wl=v((kb,Ul)=>{"use strict";var Hl=Zr();function ng(t,e,n,s,r){for(let i=0;i<n;i++)s[r+i]=t[e+i]}function sg(t,e,n){let s=0,r=e+n;for(let i=e;i<r;i++)s+=Math.abs(t[i]);return s}function rg(t,e,n,s,r,i){for(let o=0;o<n;o++){let a=o>=i?t[e+o-i]:0,l=t[e+o]-a;s[r+o]=l}}function ig(t,e,n,s){let r=0;for(let i=0;i<n;i++){let o=i>=s?t[e+i-s]:0,a=t[e+i]-o;r+=Math.abs(a)}return r}function og(t,e,n,s,r){for(let i=0;i<n;i++){let o=e>0?t[e+i-n]:0,a=t[e+i]-o;s[r+i]=a}}function ag(t,e,n){let s=0,r=e+n;for(let i=e;i<r;i++){let o=e>0?t[i-n]:0,a=t[i]-o;s+=Math.abs(a)}return s}function lg(t,e,n,s,r,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,u=t[e+o]-(a+l>>1);s[r+o]=u}}function cg(t,e,n,s){let r=0;for(let i=0;i<n;i++){let o=i>=s?t[e+i-s]:0,a=e>0?t[e+i-n]:0,l=t[e+i]-(o+a>>1);r+=Math.abs(l)}return r}function ug(t,e,n,s,r,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,u=e>0&&o>=i?t[e+o-(n+i)]:0,c=t[e+o]-Hl(a,l,u);s[r+o]=c}}function dg(t,e,n,s){let r=0;for(let i=0;i<n;i++){let o=i>=s?t[e+i-s]:0,a=e>0?t[e+i-n]:0,l=e>0&&i>=s?t[e+i-(n+s)]:0,u=t[e+i]-Hl(o,a,l);r+=Math.abs(u)}return r}var fg={0:ng,1:rg,2:og,3:lg,4:ug},pg={0:sg,1:ig,2:ag,3:cg,4:dg};Ul.exports=function(t,e,n,s,r){let i;if(!("filterType"in s)||s.filterType===-1)i=[0,1,2,3,4];else if(typeof s.filterType=="number")i=[s.filterType];else throw new Error("unrecognised filter types");s.bitDepth===16&&(r*=2);let o=e*r,a=0,l=0,u=Buffer.alloc((o+1)*n),c=i[0];for(let d=0;d<n;d++){if(i.length>1){let f=1/0;for(let h=0;h<i.length;h++){let g=pg[i[h]](t,l,o,r);g<f&&(c=i[h],f=g)}}u[a]=c,a++,fg[c](t,l,o,u,a,r),a+=o,l+=o}return u}});var li=v((Cb,ql)=>{"use strict";var V=Tt(),hg=si(),gg=Fl(),mg=Wl(),yg=require("zlib"),Ne=ql.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||yg.createDeflate,t.bitDepth=t.bitDepth||8,t.colorType=typeof t.colorType=="number"?t.colorType:V.COLORTYPE_COLOR_ALPHA,t.inputColorType=typeof t.inputColorType=="number"?t.inputColorType:V.COLORTYPE_COLOR_ALPHA,[V.COLORTYPE_GRAYSCALE,V.COLORTYPE_COLOR,V.COLORTYPE_COLOR_ALPHA,V.COLORTYPE_ALPHA].indexOf(t.colorType)===-1)throw new Error("option color type:"+t.colorType+" is not supported at present");if([V.COLORTYPE_GRAYSCALE,V.COLORTYPE_COLOR,V.COLORTYPE_COLOR_ALPHA,V.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")};Ne.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Ne.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Ne.prototype.filterData=function(t,e,n){let s=gg(t,e,n,this._options),r=V.COLORTYPE_TO_BPP_MAP[this._options.colorType];return mg(s,e,n,this._options,r)};Ne.prototype._packChunk=function(t,e){let n=e?e.length:0,s=Buffer.alloc(n+12);return s.writeUInt32BE(n,0),s.writeUInt32BE(t,4),e&&e.copy(s,8),s.writeInt32BE(hg.crc32(s.slice(4,s.length-4)),s.length-4),s};Ne.prototype.packGAMA=function(t){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(t*V.GAMMA_DIVISION),0),this._packChunk(V.TYPE_gAMA,e)};Ne.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(V.TYPE_IHDR,n)};Ne.prototype.packIDAT=function(t){return this._packChunk(V.TYPE_IDAT,t)};Ne.prototype.packIEND=function(){return this._packChunk(V.TYPE_IEND,null)}});var zl=v((xb,$l)=>{"use strict";var vg=require("util"),Gl=require("stream"),Sg=Tt(),_g=li(),jl=$l.exports=function(t){Gl.call(this);let e=t||{};this._packer=new _g(e),this._deflate=this._packer.createDeflate(),this.readable=!0};vg.inherits(jl,Gl);jl.prototype.pack=function(t,e,n,s){this.emit("data",Buffer.from(Sg.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,n)),s&&this.emit("data",this._packer.packGAMA(s));let r=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(r)}});var Xl=v((cn,Kl)=>{"use strict";var Vl=require("assert").ok,At=require("zlib"),bg=require("util"),Ql=require("buffer").kMaxLength;function Ye(t){if(!(this instanceof Ye))return new Ye(t);t&&t.chunkSize<At.Z_MIN_CHUNK&&(t.chunkSize=At.Z_MIN_CHUNK),At.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 wg(t){return new Ye(t)}function Yl(t,e){e&&process.nextTick(e),t._handle&&(t._handle.close(),t._handle=null)}Ye.prototype._processChunk=function(t,e,n){if(typeof n=="function")return At.Inflate._processChunk.call(this,t,e,n);let s=this,r=t&&t.length,i=this._chunkSize-this._offset,o=this._maxLength,a=0,l=[],u=0,c;this.on("error",function(g){c=g});function d(g,p){if(s._hadError)return;let m=i-p;if(Vl(m>=0,"have should not go down"),m>0){let y=s._buffer.slice(s._offset,s._offset+m);if(s._offset+=m,y.length>o&&(y=y.slice(0,o)),l.push(y),u+=y.length,o-=y.length,o===0)return!1}return(p===0||s._offset>=s._chunkSize)&&(i=s._chunkSize,s._offset=0,s._buffer=Buffer.allocUnsafe(s._chunkSize)),p===0?(a+=r-g,r=g,!0):!1}Vl(this._handle,"zlib binding closed");let f;do f=this._handle.writeSync(e,t,a,r,this._buffer,this._offset,i),f=f||this._writeState;while(!this._hadError&&d(f[0],f[1]));if(this._hadError)throw c;if(u>=Ql)throw Yl(this),new RangeError("Cannot create final Buffer. It would be larger than 0x"+Ql.toString(16)+" bytes");let h=Buffer.concat(l,u);return Yl(this),h};bg.inherits(Ye,At.Inflate);function Ig(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=At.Z_FINISH),t._processChunk(e,n)}function Jl(t,e){return Ig(new Ye(e),t)}Kl.exports=cn=Jl;cn.Inflate=Ye;cn.createInflate=wg;cn.inflateSync=Jl});var ci=v((Rb,ec)=>{"use strict";var Zl=ec.exports=function(t){this._buffer=t,this._reads=[]};Zl.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})};Zl.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 nc=v(tc=>{"use strict";var Tg=ci(),Ag=ei();tc.process=function(t,e){let n=[],s=new Tg(t);return new Ag(e,{read:s.read.bind(s),write:function(i){n.push(i)},complete:function(){}}).start(),s.process(),Buffer.concat(n)}});var oc=v((Pb,ic)=>{"use strict";var sc=!0,rc=require("zlib"),kg=Xl();rc.deflateSync||(sc=!1);var Cg=ci(),xg=nc(),Rg=ri(),Eg=ii(),Pg=oi();ic.exports=function(t,e){if(!sc)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 s(A){n=A}let r;function i(A){r=A}function o(A){r.transColor=A}function a(A){r.palette=A}function l(){r.alpha=!0}let u;function c(A){u=A}let d=[];function f(A){d.push(A)}let h=new Cg(t);if(new Rg(e,{read:h.read.bind(h),error:s,metadata:i,gamma:c,palette:a,transColor:o,inflateData:f,simpleTransparency:l}).start(),h.process(),n)throw n;let p=Buffer.concat(d);d.length=0;let m;if(r.interlace)m=rc.inflateSync(p);else{let I=((r.width*r.bpp*r.depth+7>>3)+1)*r.height;m=kg(p,{chunkSize:I,maxLength:I})}if(p=null,!m||!m.length)throw new Error("bad png - invalid inflate data response");let y=xg.process(m,r);p=null;let C=Eg.dataToBitMap(y,r);y=null;let _=Pg(C,r);return r.data=_,r.gamma=u||0,r}});var uc=v((Mb,cc)=>{"use strict";var ac=!0,lc=require("zlib");lc.deflateSync||(ac=!1);var Mg=Tt(),Lg=li();cc.exports=function(t,e){if(!ac)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||{},s=new Lg(n),r=[];r.push(Buffer.from(Mg.PNG_SIGNATURE)),r.push(s.packIHDR(t.width,t.height)),t.gamma&&r.push(s.packGAMA(t.gamma));let i=s.filterData(t.data,t.width,t.height),o=lc.deflateSync(i,s.getDeflateOptions());if(i=null,!o||!o.length)throw new Error("bad png - invalid compressed data response");return r.push(s.packIDAT(o)),r.push(s.packIEND()),Buffer.concat(r)}});var dc=v(ui=>{"use strict";var Ng=oc(),Og=uc();ui.read=function(t,e){return Ng(t,e||{})};ui.write=function(t,e){return Og(t,e)}});var hc=v(pc=>{"use strict";var Bg=require("util"),fc=require("stream"),Dg=Bl(),Fg=zl(),Hg=dc(),Y=pc.PNG=function(t){fc.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 Dg(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 Fg(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"))};Bg.inherits(Y,fc);Y.sync=Hg;Y.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)};Y.prototype.parse=function(t,e){if(e){let n,s;n=function(r){this.removeListener("error",s),this.data=r,e(null,this)}.bind(this),s=function(r){this.removeListener("parsed",n),e(r,null)}.bind(this),this.once("parsed",n),this.once("error",s)}return this.end(t),this};Y.prototype.write=function(t){return this._parser.write(t),!0};Y.prototype.end=function(t){this._parser.end(t)};Y.prototype._metadata=function(t){this.width=t.width,this.height=t.height,this.emit("metadata",t)};Y.prototype._gamma=function(t){this.gamma=t};Y.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit("close")};Y.bitblt=function(t,e,n,s,r,i,o,a){if(n|=0,s|=0,r|=0,i|=0,o|=0,a|=0,n>t.width||s>t.height||n+r>t.width||s+i>t.height)throw new Error("bitblt reading outside image");if(o>e.width||a>e.height||o+r>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,(s+l)*t.width+n<<2,(s+l)*t.width+n+r<<2)};Y.prototype.bitblt=function(t,e,n,s,r,i,o){return Y.bitblt(this,t,e,n,s,r,i,o),this};Y.adjustGamma=function(t){if(t.gamma){for(let e=0;e<t.height;e++)for(let n=0;n<t.width;n++){let s=t.width*e+n<<2;for(let r=0;r<3;r++){let i=t.data[s+r]/255;i=Math.pow(i,1/2.2/t.gamma),t.data[s+r]=Math.round(i*255)}}t.gamma=0}};Y.prototype.adjustGamma=function(){Y.adjustGamma(this)}});var un=v(Je=>{function gc(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(s){return[s,s]}))),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("")}}Je.getOptions=function(e){e||(e={}),e.color||(e.color={});let n=typeof e.margin>"u"||e.margin===null||e.margin<0?4:e.margin,s=e.width&&e.width>=21?e.width:void 0,r=e.scale||4;return{width:s,scale:s?4:r,margin:n,color:{dark:gc(e.color.dark||"#000000ff"),light:gc(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};Je.getScale=function(e,n){return n.width&&n.width>=e+n.margin*2?n.width/(e+n.margin*2):n.scale};Je.getImageWidth=function(e,n){let s=Je.getScale(e,n);return Math.floor((e+n.margin*2)*s)};Je.qrToImageData=function(e,n,s){let r=n.modules.size,i=n.modules.data,o=Je.getScale(r,s),a=Math.floor((r+s.margin*2)*o),l=s.margin*o,u=[s.color.light,s.color.dark];for(let c=0;c<a;c++)for(let d=0;d<a;d++){let f=(c*a+d)*4,h=s.color.light;if(c>=l&&d>=l&&c<a-l&&d<a-l){let g=Math.floor((c-l)/o),p=Math.floor((d-l)/o);h=u[i[g*r+p]?1:0]}e[f++]=h.r,e[f++]=h.g,e[f++]=h.b,e[f]=h.a}}});var mc=v(me=>{var Ug=require("fs"),Wg=hc().PNG,di=un();me.render=function(e,n){let s=di.getOptions(n),r=s.rendererOpts,i=di.getImageWidth(e.modules.size,s);r.width=i,r.height=i;let o=new Wg(r);return di.qrToImageData(o.data,e,s),o};me.renderToDataURL=function(e,n,s){typeof s>"u"&&(s=n,n=void 0),me.renderToBuffer(e,n,function(r,i){r&&s(r);let o="data:image/png;base64,";o+=i.toString("base64"),s(null,o)})};me.renderToBuffer=function(e,n,s){typeof s>"u"&&(s=n,n=void 0);let r=me.render(e,n),i=[];r.on("error",s),r.on("data",function(o){i.push(o)}),r.on("end",function(){s(null,Buffer.concat(i))}),r.pack()};me.renderToFile=function(e,n,s,r){typeof r>"u"&&(r=s,s=void 0);let i=!1,o=(...l)=>{i||(i=!0,r.apply(null,l))},a=Ug.createWriteStream(e);a.on("error",o),a.on("close",o),me.renderToFileStream(a,n,s)};me.renderToFileStream=function(e,n,s){me.render(n,s).pack().pipe(e)}});var yc=v(cs=>{var qg=un(),Gg={WW:" ",WB:"\u2584",BB:"\u2588",BW:"\u2580"},jg={BB:" ",BW:"\u2584",WW:"\u2588",WB:"\u2580"};function $g(t,e,n){return t&&e?n.BB:t&&!e?n.BW:!t&&e?n.WB:n.WW}cs.render=function(t,e,n){let s=qg.getOptions(e),r=Gg;(s.color.dark.hex==="#ffffff"||s.color.light.hex==="#000000")&&(r=jg);let i=t.modules.size,o=t.modules.data,a="",l=Array(i+s.margin*2+1).join(r.WW);l=Array(s.margin/2+1).join(l+`
14
+ `);let u=Array(s.margin+1).join(r.WW);a+=l;for(let c=0;c<i;c+=2){a+=u;for(let d=0;d<i;d++){let f=o[c*i+d],h=o[(c+1)*i+d];a+=$g(f,h,r)}a+=u+`
15
+ `}return a+=l.slice(0,-1),typeof n=="function"&&n(null,a),a};cs.renderToFile=function(e,n,s,r){typeof r>"u"&&(r=s,s=void 0);let i=require("fs"),o=cs.render(n,s);i.writeFile(e,o,r)}});var Sc=v(vc=>{vc.render=function(t,e,n){let s=t.modules.size,r=t.modules.data,i="\x1B[40m \x1B[0m",o="\x1B[47m \x1B[0m",a="",l=Array(s+3).join(o),u=Array(2).join(o);a+=l+`
16
+ `;for(let c=0;c<s;++c){a+=o;for(let d=0;d<s;d++)a+=r[c*s+d]?i:o;a+=u+`
17
17
  `}return a+=l+`
18
- `,typeof n=="function"&&n(null,a),a}});var _c=v(Sc=>{var Ug="\x1B[47m",Wg="\x1B[40m",ci="\x1B[37m",ui="\x1B[30m",Ke="\x1B[0m",qg=Ug+ui,Gg=Wg+ci,jg=function(t,e,n){return{"00":Ke+" "+t,"01":Ke+e+"\u2584"+t,"02":Ke+n+"\u2584"+t,10:Ke+e+"\u2580"+t,11:" ",12:"\u2584",20:Ke+n+"\u2580"+t,21:"\u2580",22:"\u2588"}},yc=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"},vc=function(t,e,n,r){return yc(t,e,n,r)+yc(t,e,n,r+1)};Sc.render=function(t,e,n){let r=t.modules.size,s=t.modules.data,i=!!(e&&e.inverse),o=e&&e.inverse?Gg:qg,u=jg(o,i?ui:ci,i?ci:ui),c=Ke+`
19
- `+o,d=o;for(let p=-1;p<r+1;p+=2){for(let h=-1;h<r;h++)d+=u[vc(s,r,h,p)];d+=u[vc(s,r,r,p)]+c}return d+=Ke,typeof n=="function"&&n(null,d),d}});var wc=v(bc=>{var $g=mc(),zg=_c();bc.render=function(t,e,n){return e&&e.small?zg.render(t,e,n):$g.render(t,e,n)}});var fi=v(Tc=>{var Vg=ln();function Ic(t,e){let n=t.a/255,r=e+'="'+t.hex+'"';return n<1?r+" "+e+'-opacity="'+n.toFixed(2).slice(1)+'"':r}function di(t,e,n){let r=t+e;return typeof n<"u"&&(r+=" "+n),r}function Yg(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),u=Math.floor(a/e);!l&&!i&&(i=!0),t[a]?(o++,a>0&&l>0&&t[a-1]||(r+=i?di("M",l+n,.5+u+n):di("m",s,0),s=0,i=!1),l+1<e&&t[a+1]||(r+=di("h",o),o=0)):s++}return r}Tc.render=function(e,n,r){let s=Vg.getOptions(n),i=e.modules.size,o=e.modules.data,a=i+s.margin*2,l=s.color.light.a?"<path "+Ic(s.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",u="<path "+Ic(s.color.dark,"stroke")+' d="'+Yg(o,i,s.margin)+'"/>',c='viewBox="0 0 '+a+" "+a+'"',p='<svg xmlns="http://www.w3.org/2000/svg" '+(s.width?'width="'+s.width+'" height="'+s.width+'" ':"")+c+' shape-rendering="crispEdges">'+l+u+`</svg>
20
- `;return typeof r=="function"&&r(null,p),p}});var Ac=v(ar=>{var Jg=fi();ar.render=Jg.render;ar.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">'+ar.render(n,r);i.writeFile(e,a,s)}});var kc=v(lr=>{var pi=ln();function Kg(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 Xg(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}lr.render=function(e,n,r){let s=r,i=n;typeof s>"u"&&(!n||!n.getContext)&&(s=n,n=void 0),n||(i=Xg()),s=pi.getOptions(s);let o=pi.getImageWidth(e.modules.size,s),a=i.getContext("2d"),l=a.createImageData(o,o);return pi.qrToImageData(l.data,e,s),Kg(a,i,o),a.putImageData(l,0,0),i};lr.renderToDataURL=function(e,n,r){let s=r;typeof s>"u"&&(!n||!n.getContext)&&(s=n,n=void 0),s||(s={});let i=lr.render(e,n,s),o=s.type||"image/png",a=s.rendererOpts||{};return i.toDataURL(o,a.quality)}});var xc=v(cn=>{var Qg=Cs(),hi=zs(),Cc=kc(),Zg=fi();function gi(t,e,n,r,s){let i=[].slice.call(arguments,1),o=i.length,a=typeof i[o-1]=="function";if(!a&&!Qg())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,u){try{let c=hi.create(n,r);l(t(c,e,r))}catch(c){u(c)}})}try{let l=hi.create(n,r);s(null,t(l,e,r))}catch(l){s(l)}}cn.create=hi.create;cn.toCanvas=gi.bind(null,Cc.render);cn.toDataURL=gi.bind(null,Cc.renderToDataURL);cn.toString=gi.bind(null,function(t,e,n){return Zg.render(t,n)})});var Mc=v(Oe=>{var Rc=Cs(),mi=zs(),em=pc(),Ec=hc(),tm=wc(),Pc=Ac();function un(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(Rc())e=n||{},n=null;else throw new Error("Callback required as last argument");return{opts:e,cb:n}}function nm(t){return t.slice((t.lastIndexOf(".")-1>>>0)+2).toLowerCase()}function cr(t){switch(t){case"svg":return Pc;case"txt":case"utf8":return Ec;case"png":case"image/png":default:return em}}function rm(t){switch(t){case"svg":return Pc;case"terminal":return tm;case"utf8":default:return Ec}}function dn(t,e,n){if(!n.cb)return new Promise(function(r,s){try{let i=mi.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=mi.create(e,n.opts);return t(r,n.opts,n.cb)}catch(r){n.cb(r)}}Oe.create=mi.create;Oe.toCanvas=xc().toCanvas;Oe.toString=function(e,n,r){let s=un(e,n,r),i=s.opts?s.opts.type:void 0,o=rm(i);return dn(o.render,e,s)};Oe.toDataURL=function(e,n,r){let s=un(e,n,r),i=cr(s.opts.type);return dn(i.renderToDataURL,e,s)};Oe.toBuffer=function(e,n,r){let s=un(e,n,r),i=cr(s.opts.type);return dn(i.renderToBuffer,e,s)};Oe.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&&!Rc())throw new Error("Too few arguments provided");let i=un(n,r,s),o=i.opts.type||nm(e),l=cr(o).renderToFile.bind(null,e);return dn(l,n,i)};Oe.toFileStream=function(e,n,r){if(arguments.length<2)throw new Error("Too few arguments provided");let s=un(n,r,e.emit.bind(e,"error")),o=cr("png").renderToFileStream.bind(null,e);dn(o,n,s)}});var Nc=v((xb,Lc)=>{Lc.exports=Mc()});var af=require("http");var Hp=ct(ma(),1),Up=ct(gs(),1),Wp=ct(vs(),1),qp=ct(Yn(),1),ks=ct(Aa(),1);var oe=require("fs/promises"),lf=require("crypto"),jt=require("path"),cf=require("os"),_o=ct(Nc(),1);var Xe=require("child_process"),Ct=require("fs"),R=require("path"),hn=require("os");var yr=require("fs");var Oc=require("os"),V=require("path"),Ie=(0,V.join)((0,Oc.homedir)(),".vibelet"),ur=(0,V.join)(Ie,"logs"),dr=(0,V.join)(Ie,"data"),sm=(0,V.join)(Ie,"runtime"),Rb=(0,V.join)(sm,"current"),Bc=(0,V.join)(Ie,"identity.json"),Dc=(0,V.join)(Ie,"pairings.json"),Fc=(0,V.join)(dr,"push-subscriptions.json"),fr=(0,V.join)(dr,"sessions.json"),At=(0,V.join)(dr,"audit.jsonl"),yi=(0,V.join)(dr,"uploads"),pr=(0,V.join)(ur,"daemon.stdout.log"),hr=(0,V.join)(ur,"daemon.stderr.log"),Hc=(0,V.join)(Ie,"update-check.json"),vi=(0,V.join)(Ie,"pairing-qr.png");var gr={stdout:!1,stderr:!1};function Uc(t){if(!t||typeof t!="object")return!1;let e=typeof t.code=="string"?t.code:"";return e==="EIO"||e==="EPIPE"}function im(t){return!t.destroyed&&t.writable!==!1}function Wc(t,e){if(gr[t])return!1;let n=t==="stderr"?process.stderr:process.stdout;if(!im(n))return gr[t]=!0,!1;try{return n.write(e,r=>{Uc(r)&&(gr[t]=!0)}),!0}catch(r){return Uc(r)&&(gr[t]=!0),!1}}function kt(t){return Wc("stdout",t)}function mr(t){return Wc("stderr",t)}var qc={debug:10,info:20,warn:30,error:40},om=process.env.VIBE_LOG_LEVEL||"info";function am(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}function lm(){try{let{fstatSync:t}=require("fs");return t(1).isFile()}catch{return!1}}var jc=!am()&&!lm();if(jc)try{(0,yr.mkdirSync)(ur,{recursive:!0})}catch{}function Gc(t,e,n){if(qc[t]<qc[om])return;let r={level:t,ts:new Date().toISOString(),msg:n,...e},s=JSON.stringify(r);if(t==="error"||t==="warn"?mr(s+`
21
- `):kt(s+`
22
- `),jc){let i=t==="error"||t==="warn"?hr:pr;try{(0,yr.appendFileSync)(i,s+`
23
- `)}catch{}}}function $c(t={}){function e(n,r,s){typeof r=="string"?Gc(n,t,r):Gc(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=>$c({...t,...n})}}var O=$c({module:"daemon"});var cm=["fnm_multishells"],um=6e4,Be=process.platform==="win32",dm=300*1e3,fm=900*1e3,pm=O.child({module:"config"});function se(t){return cm.some(e=>t.includes(e))}function hm(t){if(!t||!se(t))return t;try{let e=(0,R.join)((0,Ct.realpathSync)((0,R.dirname)(t)),(0,R.basename)(t));if((0,Ct.existsSync)(e)&&!se(e))return e}catch{}return t}function gm(t){if(!t||!se(t))return t;try{let e=(0,Ct.realpathSync)(t);if(e&&!se(e))return e}catch{}return t}function _i(){return Be?[]:[process.env.SHELL,"/bin/zsh","/bin/bash","/bin/sh"].filter(t=>!!t).filter((t,e,n)=>n.indexOf(t)===e)}var fn=null;function Yc(){if(fn&&fn.PATH&&!se(fn.PATH))return fn;for(let t of _i())try{let e=(0,Xe.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 n.PATH&&!se(n.PATH)&&(fn=n),n}catch{}return{}}function mm(t=Yc()){let e=(0,hn.homedir)(),n=t.PNPM_HOME||process.env.PNPM_HOME||(Be?(0,R.join)(e,"pnpm"):(0,R.join)(e,"Library","pnpm")),r=t.PATH||process.env.PATH||"",s=Be?[(0,R.join)(e,".npm-global","bin"),(0,R.join)(e,".local","bin"),(0,R.join)(e,".claude","bin"),n,(0,R.join)(e,"AppData","Roaming","npm"),(0,R.join)(e,"AppData","Local","Programs","node")]:["/usr/local/bin","/opt/homebrew/bin","/usr/bin","/bin",(0,R.join)(e,".npm-global","bin"),(0,R.join)(e,".local","bin"),(0,R.join)(e,".claude","bin"),n],i=r.split(R.delimiter).filter(Boolean).map(gm),o=new Set(i);for(let a of s)o.has(a)||(i.push(a),o.add(a));return i.join(R.delimiter)}function Si(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 vr(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 Qe(){let t=Yc(),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=mm(t),e.HOME||(e.HOME=(0,hn.homedir)()),delete e.CLAUDE_CODE_ENTRYPOINT,delete e.CLAUDECODE,e}function bi(t){if(Be)try{let n=(0,Xe.execFileSync)("where.exe",[t],{timeout:3e3,stdio:"pipe",encoding:"utf-8"}).trim().split(/\r?\n/).filter(Boolean);return n.find(s=>s.endsWith(".exe"))??n[0]}catch{return}}function pn(t,e=3e3){try{return(0,Xe.execFileSync)(t,["--version"],{timeout:e,stdio:"pipe",encoding:"utf-8",env:Qe(),...Be?{shell:!0}:{}}).trim()||null}catch{return null}}function ym(t){for(let e of _i())try{let n=(0,Xe.execFileSync)(e,["-ilc",`command -v ${t}`],{timeout:5e3,stdio:["pipe","pipe","pipe"],encoding:"utf-8"}).trim();if(n)return n}catch{}}function vm(){let t=(0,hn.homedir)();return[(0,R.join)(t,".local","bin","claude"),(0,R.join)(t,".claude","bin","claude"),"/usr/local/bin/claude","/opt/homebrew/bin/claude",(0,R.join)(t,".npm-global","bin","claude")]}function Sm(){if(Be){let t=bi("claude");return t&&pn(t)?t:void 0}for(let t of vm())if(pn(t))return t;try{let t=(0,Xe.execFileSync)("/usr/bin/which",["claude"],{timeout:3e3,stdio:"pipe",encoding:"utf-8",env:Qe()}).trim();if(t&&!t.includes("cmux")&&pn(t))return t}catch{}}function _m(){let t=(0,hn.homedir)(),e=[process.env.PNPM_HOME,(0,R.join)(t,"Library","pnpm")].filter(n=>!!n);return["/usr/local/bin/codex","/opt/homebrew/bin/codex",(0,R.join)(t,".npm-global","bin","codex"),(0,R.join)(t,".local","bin","codex"),...e.map(n=>(0,R.join)(n,"codex"))]}function bm(){if(Be){let s=bi("codex");return s&&pn(s)?s:void 0}let t=s=>{let i=hm(s);return pn(i)?i:void 0},e;for(let s of _m()){let i=t(s);if(i){if(!se(i))return i;e=i}}try{let s=(0,Xe.execFileSync)("/usr/bin/which",["codex"],{timeout:3e3,stdio:"pipe",encoding:"utf-8",env:Qe()}).trim(),i=s?t(s):void 0;if(i){if(!se(i))return i;e=e??i}}catch{}let n=ym("codex"),r=n?t(n):void 0;if(r){if(!se(r))return r;e=e??r}return e}function Jc(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();if(!n||i-r>um||!(0,Ct.existsSync)(n)||se(n)){let o=t();n=o??e,r=i,pm.info({name:e,path:n,transient:se(n),isBare:o==null},"binary resolved")}return n}}var wm=Jc(Sm,"claude"),Im=Jc(bm,"codex");function Tm(){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 zc=Tm(),Sr=vr("VIBE_TURN_STALL_TIMEOUT_MS",dm),Vc=vr("VIBE_TURN_STALL_HARD_TIMEOUT_MS",Math.max(fm,Sr*3)),Am=Sr<=0||Vc===0?0:Math.max(Vc,Sr);function km(t,e){if(Be)return{command:bi(t)??t,args:e};let n=_i()[0]??"/bin/zsh",r=`if ! command -v ${t} >/dev/null 2>&1; then echo "${t}: not found in login shell PATH=$PATH" >&2; exit 127; fi; exec ${t} "$@"`;return{command:n,args:["-lc",r,"--",...e]}}var S={port:Number(process.env.VIBE_PORT)||9876,legacyToken:process.env.VIBE_TOKEN||"",canonicalHost:zc.host||process.env.VIBELET_CANONICAL_HOST||process.env.VIBELET_HOST||"",fallbackHosts:zc["fallback-hosts"]||process.env.VIBELET_FALLBACK_HOSTS||"",relayUrl:process.env.VIBELET_RELAY_URL||"",idleTimeoutMs:vr("VIBE_IDLE_TIMEOUT_MS",1800*1e3),turnStallTimeoutMs:Sr,turnStallHardTimeoutMs:Am,auditMaxBytes:Si("VIBE_AUDIT_MAX_BYTES",8*1024*1024),daemonLogMaxBytes:Si("VIBE_DAEMON_LOG_MAX_BYTES",16*1024*1024),storageHousekeepingIntervalMs:Si("VIBE_STORAGE_HOUSEKEEPING_INTERVAL_MS",300*1e3),pairWindowMs:vr("VIBE_PAIR_WINDOW_MS",300*1e3),pairReusable:process.env.VIBE_PAIR_REUSABLE==="1",get claudePath(){return wm()},get codexPath(){return Im()},isTransientPath:se,execViaLoginShell:km,buildSanitizedEnv:Qe};var lo=require("crypto"),Fd=require("fs/promises");var uu=require("child_process"),Tr=require("fs");var _r=require("fs"),Qc=require("path");var K=require("fs");function Cm(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 gn(t,e){if(!(0,K.existsSync)(t))return{path:t,existed:!1,trimmed:!1,beforeBytes:0,afterBytes:0,reclaimedBytes:0};let r=(0,K.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=Cm(r,e.maxBytes,s,e.retainBytes),o=(0,K.openSync)(t,"r+");try{let a=Buffer.alloc(0);if(i>0){let l=Buffer.alloc(i);(0,K.readSync)(o,l,0,i,r-i);let u=0;if(r>i){let c=l.indexOf(10);c>=0&&c+1<l.length&&(u=c+1)}a=l.subarray(u)}return(0,K.ftruncateSync)(o,0),a.length>0&&(0,K.writeSync)(o,a,0,a.length,0),{path:t,existed:!0,trimmed:!0,beforeBytes:r,afterBytes:a.length,reclaimedBytes:r-a.length}}finally{(0,K.closeSync)(o)}}function Kc(t){let e=[gn(t.auditPath,{maxBytes:t.auditMaxBytes}),gn(t.stdoutLogPath,{maxBytes:t.logMaxBytes}),gn(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 Xc=!1,xm=new Set(["ts","event","source","appEvent","level"]);function Rm(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}function Em(t={}){let e={};for(let[n,r]of Object.entries(t))xm.has(n)||(e[n]=r);return e}function Pm(t,e,n={},r){return{ts:r??new Date().toISOString(),event:"app.log",source:"app",appEvent:t,level:e,...Em(n)}}function Mm(){Xc||((0,_r.mkdirSync)((0,Qc.dirname)(At),{recursive:!0}),Xc=!0)}var wi=class{emit(e,n={}){this.write({ts:new Date().toISOString(),event:e,...n})}emitApp(e,n,r={},s){this.write(Pm(e,n,r,s))}write(e){if(!Rm()){Mm();try{let n=JSON.stringify(e)+`
25
- `;gn(At,{maxBytes:S.auditMaxBytes,incomingBytes:Buffer.byteLength(n)}),(0,_r.appendFileSync)(At,n)}catch{}}}},I=new wi;var De=require("fs"),Zc=require("os"),mn=require("path"),eu=require("crypto"),Ii="claude-hook:",yn="x-vibelet-claude-hook-secret",vn={continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"PreToolUse"}};function Lm(t,e){return`#!/usr/bin/env node
18
+ `,typeof n=="function"&&n(null,a),a}});var Ic=v(wc=>{var zg="\x1B[47m",Vg="\x1B[40m",fi="\x1B[37m",pi="\x1B[30m",Ke="\x1B[0m",Qg=zg+pi,Yg=Vg+fi,Jg=function(t,e,n){return{"00":Ke+" "+t,"01":Ke+e+"\u2584"+t,"02":Ke+n+"\u2584"+t,10:Ke+e+"\u2580"+t,11:" ",12:"\u2584",20:Ke+n+"\u2580"+t,21:"\u2580",22:"\u2588"}},_c=function(t,e,n,s){let r=e+1;if(n>=r||s>=r||s<-1||n<-1)return"0";if(n>=e||s>=e||s<0||n<0)return"1";let i=s*e+n;return t[i]?"2":"1"},bc=function(t,e,n,s){return _c(t,e,n,s)+_c(t,e,n,s+1)};wc.render=function(t,e,n){let s=t.modules.size,r=t.modules.data,i=!!(e&&e.inverse),o=e&&e.inverse?Yg:Qg,u=Jg(o,i?pi:fi,i?fi:pi),c=Ke+`
19
+ `+o,d=o;for(let f=-1;f<s+1;f+=2){for(let h=-1;h<s;h++)d+=u[bc(r,s,h,f)];d+=u[bc(r,s,s,f)]+c}return d+=Ke,typeof n=="function"&&n(null,d),d}});var Ac=v(Tc=>{var Kg=Sc(),Xg=Ic();Tc.render=function(t,e,n){return e&&e.small?Xg.render(t,e,n):Kg.render(t,e,n)}});var gi=v(Cc=>{var Zg=un();function kc(t,e){let n=t.a/255,s=e+'="'+t.hex+'"';return n<1?s+" "+e+'-opacity="'+n.toFixed(2).slice(1)+'"':s}function hi(t,e,n){let s=t+e;return typeof n<"u"&&(s+=" "+n),s}function em(t,e,n){let s="",r=0,i=!1,o=0;for(let a=0;a<t.length;a++){let l=Math.floor(a%e),u=Math.floor(a/e);!l&&!i&&(i=!0),t[a]?(o++,a>0&&l>0&&t[a-1]||(s+=i?hi("M",l+n,.5+u+n):hi("m",r,0),r=0,i=!1),l+1<e&&t[a+1]||(s+=hi("h",o),o=0)):r++}return s}Cc.render=function(e,n,s){let r=Zg.getOptions(n),i=e.modules.size,o=e.modules.data,a=i+r.margin*2,l=r.color.light.a?"<path "+kc(r.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",u="<path "+kc(r.color.dark,"stroke")+' d="'+em(o,i,r.margin)+'"/>',c='viewBox="0 0 '+a+" "+a+'"',f='<svg xmlns="http://www.w3.org/2000/svg" '+(r.width?'width="'+r.width+'" height="'+r.width+'" ':"")+c+' shape-rendering="crispEdges">'+l+u+`</svg>
20
+ `;return typeof s=="function"&&s(null,f),f}});var xc=v(us=>{var tm=gi();us.render=tm.render;us.renderToFile=function(e,n,s,r){typeof r>"u"&&(r=s,s=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">'+us.render(n,s);i.writeFile(e,a,r)}});var Rc=v(ds=>{var mi=un();function nm(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 sm(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}ds.render=function(e,n,s){let r=s,i=n;typeof r>"u"&&(!n||!n.getContext)&&(r=n,n=void 0),n||(i=sm()),r=mi.getOptions(r);let o=mi.getImageWidth(e.modules.size,r),a=i.getContext("2d"),l=a.createImageData(o,o);return mi.qrToImageData(l.data,e,r),nm(a,i,o),a.putImageData(l,0,0),i};ds.renderToDataURL=function(e,n,s){let r=s;typeof r>"u"&&(!n||!n.getContext)&&(r=n,n=void 0),r||(r={});let i=ds.render(e,n,r),o=r.type||"image/png",a=r.rendererOpts||{};return i.toDataURL(o,a.quality)}});var Pc=v(dn=>{var rm=Er(),yi=Yr(),Ec=Rc(),im=gi();function vi(t,e,n,s,r){let i=[].slice.call(arguments,1),o=i.length,a=typeof i[o-1]=="function";if(!a&&!rm())throw new Error("Callback required as last argument");if(a){if(o<2)throw new Error("Too few arguments provided");o===2?(r=n,n=e,e=s=void 0):o===3&&(e.getContext&&typeof r>"u"?(r=s,s=void 0):(r=s,s=n,n=e,e=void 0))}else{if(o<1)throw new Error("Too few arguments provided");return o===1?(n=e,e=s=void 0):o===2&&!e.getContext&&(s=n,n=e,e=void 0),new Promise(function(l,u){try{let c=yi.create(n,s);l(t(c,e,s))}catch(c){u(c)}})}try{let l=yi.create(n,s);r(null,t(l,e,s))}catch(l){r(l)}}dn.create=yi.create;dn.toCanvas=vi.bind(null,Ec.render);dn.toDataURL=vi.bind(null,Ec.renderToDataURL);dn.toString=vi.bind(null,function(t,e,n){return im.render(t,n)})});var Oc=v(Oe=>{var Mc=Er(),Si=Yr(),om=mc(),Lc=yc(),am=Ac(),Nc=xc();function fn(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(Mc())e=n||{},n=null;else throw new Error("Callback required as last argument");return{opts:e,cb:n}}function lm(t){return t.slice((t.lastIndexOf(".")-1>>>0)+2).toLowerCase()}function fs(t){switch(t){case"svg":return Nc;case"txt":case"utf8":return Lc;case"png":case"image/png":default:return om}}function cm(t){switch(t){case"svg":return Nc;case"terminal":return am;case"utf8":default:return Lc}}function pn(t,e,n){if(!n.cb)return new Promise(function(s,r){try{let i=Si.create(e,n.opts);return t(i,n.opts,function(o,a){return o?r(o):s(a)})}catch(i){r(i)}});try{let s=Si.create(e,n.opts);return t(s,n.opts,n.cb)}catch(s){n.cb(s)}}Oe.create=Si.create;Oe.toCanvas=Pc().toCanvas;Oe.toString=function(e,n,s){let r=fn(e,n,s),i=r.opts?r.opts.type:void 0,o=cm(i);return pn(o.render,e,r)};Oe.toDataURL=function(e,n,s){let r=fn(e,n,s),i=fs(r.opts.type);return pn(i.renderToDataURL,e,r)};Oe.toBuffer=function(e,n,s){let r=fn(e,n,s),i=fs(r.opts.type);return pn(i.renderToBuffer,e,r)};Oe.toFile=function(e,n,s,r){if(typeof e!="string"||!(typeof n=="string"||typeof n=="object"))throw new Error("Invalid argument");if(arguments.length<3&&!Mc())throw new Error("Too few arguments provided");let i=fn(n,s,r),o=i.opts.type||lm(e),l=fs(o).renderToFile.bind(null,e);return pn(l,n,i)};Oe.toFileStream=function(e,n,s){if(arguments.length<2)throw new Error("Too few arguments provided");let r=fn(n,s,e.emit.bind(e,"error")),o=fs("png").renderToFileStream.bind(null,e);pn(o,n,r)}});var Dc=v((zb,Bc)=>{Bc.exports=Oc()});var hf=require("http");var $p=ut(Sa(),1),zp=ut(vr(),1),Vp=ut(br(),1),Qp=ut(Kn(),1),Rr=ut(xa(),1);var ae=require("fs/promises"),gf=require("crypto"),zt=require("path"),mf=require("os"),Io=ut(Dc(),1);var Xe=require("child_process"),xt=require("fs"),E=require("path"),mn=require("os");var _s=require("fs");var Fc=require("os"),Q=require("path"),Ie=(0,Q.join)((0,Fc.homedir)(),".vibelet"),ps=(0,Q.join)(Ie,"logs"),hs=(0,Q.join)(Ie,"data"),um=(0,Q.join)(Ie,"runtime"),Vb=(0,Q.join)(um,"current"),Hc=(0,Q.join)(Ie,"identity.json"),Uc=(0,Q.join)(Ie,"pairings.json"),Wc=(0,Q.join)(hs,"push-subscriptions.json"),gs=(0,Q.join)(hs,"sessions.json"),kt=(0,Q.join)(hs,"audit.jsonl"),_i=(0,Q.join)(hs,"uploads"),ms=(0,Q.join)(ps,"daemon.stdout.log"),ys=(0,Q.join)(ps,"daemon.stderr.log"),qc=(0,Q.join)(Ie,"update-check.json"),bi=(0,Q.join)(Ie,"pairing-qr.png");var vs={stdout:!1,stderr:!1};function Gc(t){if(!t||typeof t!="object")return!1;let e=typeof t.code=="string"?t.code:"";return e==="EIO"||e==="EPIPE"}function dm(t){return!t.destroyed&&t.writable!==!1}function jc(t,e){if(vs[t])return!1;let n=t==="stderr"?process.stderr:process.stdout;if(!dm(n))return vs[t]=!0,!1;try{return n.write(e,s=>{Gc(s)&&(vs[t]=!0)}),!0}catch(s){return Gc(s)&&(vs[t]=!0),!1}}function Ct(t){return jc("stdout",t)}function Ss(t){return jc("stderr",t)}var $c={debug:10,info:20,warn:30,error:40},fm=process.env.VIBE_LOG_LEVEL||"info";function pm(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}function hm(){try{let{fstatSync:t}=require("fs");return t(1).isFile()}catch{return!1}}var Vc=!pm()&&!hm();if(Vc)try{(0,_s.mkdirSync)(ps,{recursive:!0})}catch{}function zc(t,e,n){if($c[t]<$c[fm])return;let s={level:t,ts:new Date().toISOString(),msg:n,...e},r=JSON.stringify(s);if(t==="error"||t==="warn"?Ss(r+`
21
+ `):Ct(r+`
22
+ `),Vc){let i=t==="error"||t==="warn"?ys:ms;try{(0,_s.appendFileSync)(i,r+`
23
+ `)}catch{}}}function Qc(t={}){function e(n,s,r){typeof s=="string"?zc(n,t,s):zc(n,{...t,...s},r)}return{debug:(n,s)=>e("debug",n,s),info:(n,s)=>e("info",n,s),warn:(n,s)=>e("warn",n,s),error:(n,s)=>e("error",n,s),child:n=>Qc({...t,...n})}}var N=Qc({module:"daemon"});var gm=["fnm_multishells"],mm=6e4,Be=process.platform==="win32",ym=300*1e3,vm=900*1e3,Sm=N.child({module:"config"});function ie(t){return gm.some(e=>t.includes(e))}function _m(t){if(!t||!ie(t))return t;try{let e=(0,E.join)((0,xt.realpathSync)((0,E.dirname)(t)),(0,E.basename)(t));if((0,xt.existsSync)(e)&&!ie(e))return e}catch{}return t}function bm(t){if(!t||!ie(t))return t;try{let e=(0,xt.realpathSync)(t);if(e&&!ie(e))return e}catch{}return t}function Ii(){return Be?[]:[process.env.SHELL,"/bin/zsh","/bin/bash","/bin/sh"].filter(t=>!!t).filter((t,e,n)=>n.indexOf(t)===e)}var hn=null;function Kc(){if(hn&&hn.PATH&&!ie(hn.PATH))return hn;for(let t of Ii())try{let e=(0,Xe.execFileSync)(t,["-ilc","env"],{timeout:5e3,encoding:"utf-8",stdio:["pipe","pipe","pipe"]}),n={};for(let s of e.split(`
24
+ `)){let r=s.indexOf("=");r>0&&(n[s.slice(0,r)]=s.slice(r+1))}return n.PATH&&!ie(n.PATH)&&(hn=n),n}catch{}return{}}function wm(t=Kc()){let e=(0,mn.homedir)(),n=t.PNPM_HOME||process.env.PNPM_HOME||(Be?(0,E.join)(e,"pnpm"):(0,E.join)(e,"Library","pnpm")),s=t.PATH||process.env.PATH||"",r=Be?[(0,E.join)(e,".npm-global","bin"),(0,E.join)(e,".local","bin"),(0,E.join)(e,".claude","bin"),n,(0,E.join)(e,"AppData","Roaming","npm"),(0,E.join)(e,"AppData","Local","Programs","node")]:["/usr/local/bin","/opt/homebrew/bin","/usr/bin","/bin",(0,E.join)(e,".npm-global","bin"),(0,E.join)(e,".local","bin"),(0,E.join)(e,".claude","bin"),n],i=s.split(E.delimiter).filter(Boolean).map(bm),o=new Set(i);for(let a of r)o.has(a)||(i.push(a),o.add(a));return i.join(E.delimiter)}function wi(t,e){let n=process.env[t];if(!n)return e;let s=Number(n);return Number.isFinite(s)&&s>0?Math.floor(s):e}function bs(t,e){let n=process.env[t];if(n==null||n==="")return e;let s=Number(n);return Number.isFinite(s)&&s>=0?Math.floor(s):e}function Ze(){let t=Kc(),e={};for(let[n,s]of Object.entries(process.env))typeof s=="string"&&(e[n]=s);for(let[n,s]of Object.entries(t))typeof s=="string"&&(e[n]=s);return e.PATH=wm(t),e.HOME||(e.HOME=(0,mn.homedir)()),delete e.CLAUDE_CODE_ENTRYPOINT,delete e.CLAUDECODE,e}function Ti(t){if(Be)try{let n=(0,Xe.execFileSync)("where.exe",[t],{timeout:3e3,stdio:"pipe",encoding:"utf-8"}).trim().split(/\r?\n/).filter(Boolean);return n.find(r=>r.endsWith(".exe"))??n[0]}catch{return}}function gn(t,e=3e3){try{return(0,Xe.execFileSync)(t,["--version"],{timeout:e,stdio:"pipe",encoding:"utf-8",env:Ze(),...Be?{shell:!0}:{}}).trim()||null}catch{return null}}function Im(t){for(let e of Ii())try{let n=(0,Xe.execFileSync)(e,["-ilc",`command -v ${t}`],{timeout:5e3,stdio:["pipe","pipe","pipe"],encoding:"utf-8"}).trim();if(n)return n}catch{}}function Tm(){let t=(0,mn.homedir)();return[(0,E.join)(t,".local","bin","claude"),(0,E.join)(t,".claude","bin","claude"),"/usr/local/bin/claude","/opt/homebrew/bin/claude",(0,E.join)(t,".npm-global","bin","claude")]}function Am(){if(Be){let t=Ti("claude");return t&&gn(t)?t:void 0}for(let t of Tm())if(gn(t))return t;try{let t=(0,Xe.execFileSync)("/usr/bin/which",["claude"],{timeout:3e3,stdio:"pipe",encoding:"utf-8",env:Ze()}).trim();if(t&&!t.includes("cmux")&&gn(t))return t}catch{}}function km(){let t=(0,mn.homedir)(),e=[process.env.PNPM_HOME,(0,E.join)(t,"Library","pnpm")].filter(n=>!!n);return["/usr/local/bin/codex","/opt/homebrew/bin/codex",(0,E.join)(t,".npm-global","bin","codex"),(0,E.join)(t,".local","bin","codex"),...e.map(n=>(0,E.join)(n,"codex"))]}function Cm(){if(Be){let r=Ti("codex");return r&&gn(r)?r:void 0}let t=r=>{let i=_m(r);return gn(i)?i:void 0},e;for(let r of km()){let i=t(r);if(i){if(!ie(i))return i;e=i}}try{let r=(0,Xe.execFileSync)("/usr/bin/which",["codex"],{timeout:3e3,stdio:"pipe",encoding:"utf-8",env:Ze()}).trim(),i=r?t(r):void 0;if(i){if(!ie(i))return i;e=e??i}}catch{}let n=Im("codex"),s=n?t(n):void 0;if(s){if(!ie(s))return s;e=e??s}return e}function Xc(t,e){let n=null,s=0;return()=>{let r=e==="claude"?"CLAUDE_PATH":"CODEX_PATH";if(process.env[r])return process.env[r];let i=Date.now();if(!n||i-s>mm||!(0,xt.existsSync)(n)||ie(n)){let o=t();n=o??e,s=i,Sm.info({name:e,path:n,transient:ie(n),isBare:o==null},"binary resolved")}return n}}var xm=Xc(Am,"claude"),Rm=Xc(Cm,"codex");function Em(){let t={},e=process.argv.slice(2);for(let n=0;n<e.length;n++){let s=e[n];if(s.startsWith("--")&&n+1<e.length){let r=s.slice(2);t[r]=e[++n]}}return t}var Yc=Em(),ws=bs("VIBE_TURN_STALL_TIMEOUT_MS",ym),Jc=bs("VIBE_TURN_STALL_HARD_TIMEOUT_MS",Math.max(vm,ws*3)),Pm=ws<=0||Jc===0?0:Math.max(Jc,ws);function Mm(t,e){if(Be)return{command:Ti(t)??t,args:e};let n=Ii()[0]??"/bin/zsh",s=`if ! command -v ${t} >/dev/null 2>&1; then echo "${t}: not found in login shell PATH=$PATH" >&2; exit 127; fi; exec ${t} "$@"`;return{command:n,args:["-lc",s,"--",...e]}}var S={port:Number(process.env.VIBE_PORT)||9876,legacyToken:process.env.VIBE_TOKEN||"",canonicalHost:Yc.host||process.env.VIBELET_CANONICAL_HOST||process.env.VIBELET_HOST||"",fallbackHosts:Yc["fallback-hosts"]||process.env.VIBELET_FALLBACK_HOSTS||"",relayUrl:process.env.VIBELET_RELAY_URL||"",idleTimeoutMs:bs("VIBE_IDLE_TIMEOUT_MS",1800*1e3),turnStallTimeoutMs:ws,turnStallHardTimeoutMs:Pm,auditMaxBytes:wi("VIBE_AUDIT_MAX_BYTES",8*1024*1024),daemonLogMaxBytes:wi("VIBE_DAEMON_LOG_MAX_BYTES",16*1024*1024),storageHousekeepingIntervalMs:wi("VIBE_STORAGE_HOUSEKEEPING_INTERVAL_MS",300*1e3),pairWindowMs:bs("VIBE_PAIR_WINDOW_MS",300*1e3),pairReusable:process.env.VIBE_PAIR_REUSABLE==="1",reviewMock:process.env.VIBE_REVIEW_MOCK==="1",get claudePath(){return xm()},get codexPath(){return Rm()},isTransientPath:ie,execViaLoginShell:Mm,buildSanitizedEnv:Ze};var fo=require("crypto"),jd=require("fs/promises");var pu=require("child_process"),Cs=require("fs");var Is=require("fs"),tu=require("path");var J=require("fs");function Lm(t,e,n,s){let r=Math.max(0,e-n),i=Math.floor(e*.75);return Math.max(0,Math.min(t,r,s??i))}function yn(t,e){if(!(0,J.existsSync)(t))return{path:t,existed:!1,trimmed:!1,beforeBytes:0,afterBytes:0,reclaimedBytes:0};let s=(0,J.statSync)(t).size,r=Math.max(0,e.incomingBytes??0);if(e.maxBytes<=0||s+r<=e.maxBytes)return{path:t,existed:!0,trimmed:!1,beforeBytes:s,afterBytes:s,reclaimedBytes:0};let i=Lm(s,e.maxBytes,r,e.retainBytes),o=(0,J.openSync)(t,"r+");try{let a=Buffer.alloc(0);if(i>0){let l=Buffer.alloc(i);(0,J.readSync)(o,l,0,i,s-i);let u=0;if(s>i){let c=l.indexOf(10);c>=0&&c+1<l.length&&(u=c+1)}a=l.subarray(u)}return(0,J.ftruncateSync)(o,0),a.length>0&&(0,J.writeSync)(o,a,0,a.length,0),{path:t,existed:!0,trimmed:!0,beforeBytes:s,afterBytes:a.length,reclaimedBytes:s-a.length}}finally{(0,J.closeSync)(o)}}function Zc(t){let e=[yn(t.auditPath,{maxBytes:t.auditMaxBytes}),yn(t.stdoutLogPath,{maxBytes:t.logMaxBytes}),yn(t.stderrLogPath,{maxBytes:t.logMaxBytes})];return{files:e,trimmedFiles:e.filter(n=>n.trimmed).length,reclaimedBytes:e.reduce((n,s)=>n+s.reclaimedBytes,0)}}var eu=!1,Nm=new Set(["ts","event","source","appEvent","level"]);function Om(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}function Bm(t={}){let e={};for(let[n,s]of Object.entries(t))Nm.has(n)||(e[n]=s);return e}function Dm(t,e,n={},s){return{ts:s??new Date().toISOString(),event:"app.log",source:"app",appEvent:t,level:e,...Bm(n)}}function Fm(){eu||((0,Is.mkdirSync)((0,tu.dirname)(kt),{recursive:!0}),eu=!0)}var Ai=class{emit(e,n={}){this.write({ts:new Date().toISOString(),event:e,...n})}emitApp(e,n,s={},r){this.write(Dm(e,n,s,r))}write(e){if(!Om()){Fm();try{let n=JSON.stringify(e)+`
25
+ `;yn(kt,{maxBytes:S.auditMaxBytes,incomingBytes:Buffer.byteLength(n)}),(0,Is.appendFileSync)(kt,n)}catch{}}}},T=new Ai;var De=require("fs"),nu=require("os"),vn=require("path"),su=require("crypto"),ki="claude-hook:",Sn="x-vibelet-claude-hook-secret",_n={continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"PreToolUse"}};function Hm(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));
@@ -36,16 +36,16 @@ process.stdin.on('end', () => {
36
36
  headers: {
37
37
  'Content-Type': 'application/json',
38
38
  'Content-Length': body.length,
39
- '${yn}': ${JSON.stringify(e)}
39
+ '${Sn}': ${JSON.stringify(e)}
40
40
  }
41
41
  }, (res) => { res.resume(); });
42
42
  req.on('error', () => {});
43
43
  req.end(body);
44
44
  });
45
45
  process.stdin.resume();
46
- `}function Nm(t,e){return`#!/usr/bin/env node
46
+ `}function Um(t,e){return`#!/usr/bin/env node
47
47
  const http = require('http');
48
- const fallback = ${JSON.stringify(JSON.stringify(vn))};
48
+ const fallback = ${JSON.stringify(JSON.stringify(_n))};
49
49
  const chunks = [];
50
50
  process.stdin.on('data', (chunk) => chunks.push(chunk));
51
51
  process.stdin.on('end', () => {
@@ -58,7 +58,7 @@ process.stdin.on('end', () => {
58
58
  headers: {
59
59
  'Content-Type': 'application/json',
60
60
  'Content-Length': body.length,
61
- '${yn}': ${JSON.stringify(e)}
61
+ '${Sn}': ${JSON.stringify(e)}
62
62
  }
63
63
  }, (res) => {
64
64
  const responseChunks = [];
@@ -79,49 +79,51 @@ process.stdin.on('end', () => {
79
79
  req.end(body);
80
80
  });
81
81
  process.stdin.resume();
82
- `}function tu(t,e){let n=(0,mn.join)((0,Zc.tmpdir)(),`vibelet-claude-hooks-${process.pid}-${(0,eu.randomUUID)()}`);(0,De.mkdirSync)(n,{recursive:!0});let r=(0,mn.join)(n,"settings.json"),s=(0,mn.join)(n,"session_hook_forwarder.cjs"),i=(0,mn.join)(n,"permission_hook_forwarder.cjs");return(0,De.writeFileSync)(s,Lm(t,e),"utf8"),(0,De.writeFileSync)(i,Nm(t,e),"utf8"),(0,De.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 br(t){if(t)try{(0,De.rmSync)(t.dirPath,{recursive:!0,force:!0})}catch{}}var nu=require("os"),Ze=require("path"),ru=require("fs/promises"),Om=new Set([".c",".cc",".cpp",".cs",".css",".dart",".elm",".ex",".exs",".fish",".go",".h",".hpp",".hrl",".java",".js",".jsx",".kt",".kts",".less",".lua",".m",".mm",".mjs",".php",".pl",".ps1",".py",".r",".rb",".rs",".sass",".scala",".scss",".sh",".sql",".swift",".ts",".tsx",".vue",".xml",".yaml",".yml",".zsh"]),Bm=5e3,su="Generated file: ",iu=`Generated files:
83
- `;function xt(t){return typeof t=="string"&&t.trim().length>0?t.trim():null}function Sn(t){return!t||typeof t!="object"||Array.isArray(t)?null:t}function Ti(t){let e=t.trim().replace(/[.,!?;:,。!?;:、]+$/u,""),n=e.indexOf("#");n>0&&(e=e.slice(0,n));let r=e.match(/^(.*?)(:\d+(?::\d+)?)$/);return r?.[1]&&(e=r[1]),e}function et(t,e){let n=Ti(t);return n?n.startsWith("~/")?(0,Ze.resolve)((0,nu.homedir)(),n.slice(2)):(0,Ze.isAbsolute)(n)?n:e?(0,Ze.resolve)(e,n):n:""}function Dm(t){return Om.has((0,Ze.extname)(Ti(t)).toLowerCase())}function Rt(t){let e=Ti(t);return e?!Dm(e):!1}function Te(t){let e=[...new Set(t.map(n=>et(n)).filter(Boolean))];return e.length===0?"":e.length===1?`${su}${e[0]}`:`${iu}${e.join(`
84
- `)}`}function ou(t){return typeof t!="string"?!1:t.startsWith(su)||t.startsWith(iu)}function Fm(t,e){let n=t.matchAll(/^\*\*\* Add File: (.+)$/gm),r=new Set;for(let s of n){let i=xt(s[1]);if(!i)continue;let o=et(i,e);!o||!Rt(o)||r.add(o)}return[...r]}function Hm(t){let e=xt(t);return e?e.toLowerCase():""}function Um(t,e){let n=xt(t?.file_path)??xt(t?.path);if(!n)return null;let r=et(n,e);return r&&Rt(r)?r:null}function wr(t,e,n){return Hm(t)!=="write"?null:Um(e,n)}function Wm(t){let e=t.toLowerCase();return e.includes("updated successfully")||e.includes("updated. all occurrences were successfully replaced")||e.includes("all occurrences were successfully replaced")||e.includes("successfully replaced")}function qm(t){return/^\d+\t/m.test(t)}function Ir(t,e){let n=typeof e=="string"?e.trim():"";if(n&&Wm(n))return!1;let r=Sn(t);if(r?.type==="update"||r?.type==="replace"||r&&(Object.hasOwn(r,"oldString")||Object.hasOwn(r,"structuredPatch")||Object.hasOwn(r,"originalFile")||Object.hasOwn(r,"replaceAll")))return!1;if(typeof Sn(r?.file)?.filePath=="string"||typeof r?.filePath=="string")return!0;if(n){let i=n.toLowerCase();if(i.includes("created successfully")||i.includes("has been created")||qm(n))return!0}return!1}function Ai(t,e){let n=Sn(t);if(!n)return[];let r=new Set;if(n.type==="event_msg"){let s=Sn(n.payload);if(s?.type==="image_generation_end"){let i=xt(s.saved_path);if(i){let o=et(i,e?.cwd);o&&Rt(o)&&r.add(o)}}}if(e?.includePatchCalls&&n.type==="response_item"){let s=Sn(n.payload);if(s?.type==="function_call"&&s.name==="apply_patch"){let i=xt(s.arguments);if(i)for(let o of Fm(i,e?.cwd))r.add(o)}}return[...r]}async function au(t,e){let n=[...new Set(t.map(s=>et(s)).filter(Boolean))],r=[];for(let s of n)if(Rt(s))try{let i=await(0,ru.stat)(s);if(Math.max(i.birthtimeMs||0,i.ctimeMs||0,i.mtimeMs||0)+Bm<e)continue;r.push(s)}catch{}return r}var ie=O.child({module:"claude"}),du="claude-permission-denial:",Gm=/\u001B\[[0-?]*[ -/]*[@-~]/g;function jm(){return process.env.VIBE_TEST!=="1"&&!process.argv.includes("--test")}function ki(t){jm()&&mr(`\x1B[33m\u26A1 [Vibelet] ${t}\x1B[0m
85
- `)}function $m(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(`
86
- `):""}function zm(t){return Array.isArray(t)&&t.length>0&&t.every(e=>e&&typeof e=="object"&&e.type==="tool_reference")}function Vm(t){if(typeof t=="string")return t;let e=$m(t);return e||(zm(t)?"":JSON.stringify(t))}function Ym(t){return/requested permissions|haven't granted/i.test(t)}function lu(t){return t.replace(Gm,"").replace(/\s+/g," ").trim()}function Jm(t){let e=t.toLowerCase();return e==="error"||e==="failed"||e==="unknown error"}function Km(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 Xm(t){return t.toLowerCase().startsWith("claude ")?t:`Claude usage limit reached. ${t}`}function cu(t){let e=lu(t.resultText??""),n=(t.stderrLines??[]).map(lu).filter(Boolean).slice(-3),r=[e,...n].find(i=>!!i&&Km(i));if(r)return Xm(r);let s=[e,...n].find(i=>!!i&&!Jm(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 Ar(t){return t.startsWith(du)}var _n=class{proc=null;handler=null;sessionId="";buffer="";cwd="";approvalMode;sawFinalResult=!1;interrupted=!1;exitHandler=null;lastStderr=[];pendingPermissionDescriptions=new Map;emittedToolCallIds=new Set;toolCallContext=new Map;replayPhase=!1;hookPort=null;hookSecret=null;hookFiles=null;buildClaudeEnv(){let e=S.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()}`),ie.info({sessionId:this.sessionId,cwd:e},"session initialized"),I.emit("driver.spawn",{agent:"claude",sessionId:this.sessionId,cwd:e}),this.sessionId}configureHookBridge(e,n){this.hookPort=e,this.hookSecret=n}sendPrompt(e,n){let r=["-p",e,"--output-format","stream-json","--verbose","--include-partial-messages"];n&&r.push("--model",n),this.sessionId&&!this.sessionId.startsWith("pending_")&&r.push("--resume",this.sessionId),br(this.hookFiles),this.hookFiles=null,this.approvalMode!=="plan"&&this.approvalMode!=="acceptEdits"&&this.approvalMode!=="autoApprove"&&this.hookPort&&this.hookSecret&&(this.hookFiles=tu(this.hookPort,this.hookSecret),r.push("--settings",this.hookFiles.settingsPath)),this.approvalMode==="plan"&&r.push("--permission-mode","plan"),this.approvalMode==="acceptEdits"&&r.push("--permission-mode","acceptEdits"),this.approvalMode==="autoApprove"&&r.push("--dangerously-skip-permissions");let s=this.sessionId.startsWith("pending_")?"(new)":`(resume ${this.sessionId.slice(0,8)})`;ie.info({sessionId:this.sessionId,label:s,promptPreview:e.slice(0,50)},"running claude"),ki(`New message: ${e.slice(0,60)}`),this.sawFinalResult=!1,this.interrupted=!1,this.lastStderr=[],this.pendingPermissionDescriptions.clear(),this.emittedToolCallIds.clear(),this.toolCallContext.clear(),this.replayPhase=!0;let i=S.claudePath,o,a=r;if(S.isTransientPath(i)||i==="claude"){let u=S.execViaLoginShell("claude",r);o=u.command,a=u.args}else o=i;this.proc=(0,uu.spawn)(o,a,{cwd:this.cwd||void 0,stdio:["ignore","pipe","pipe"],env:this.buildClaudeEnv(),...process.platform==="win32"?{shell:!0}:{}}),this.proc.on("error",u=>{let c=u.message;u.code==="ENOENT"&&this.cwd&&!(0,Tr.existsSync)(this.cwd)&&(c=`Working directory does not exist: ${this.cwd}`),ie.error({sessionId:this.sessionId,error:c,cwd:this.cwd},"spawn error"),I.emit("driver.error",{agent:"claude",sessionId:this.sessionId,error:c}),this.handler?.({type:"error",sessionId:this.sessionId,message:c})}),this.buffer="",this.proc.stdout.on("data",u=>{this.buffer+=u.toString();let c=this.buffer.split(`
87
- `);this.buffer=c.pop();for(let d of c)if(d.trim())try{this.handleRaw(JSON.parse(d))}catch{ie.warn({sessionId:this.sessionId,linePreview:d.slice(0,100)},"failed to parse stdout line")}}),this.proc.stderr.on("data",u=>{let c=u.toString().trim();c&&(ie.debug({sessionId:this.sessionId,stderr:c},"stderr"),this.lastStderr.push(c),this.lastStderr.length>10&&this.lastStderr.shift())}),this.proc.on("exit",(u,c)=>{ie.info({sessionId:this.sessionId,exitCode:u,signal:c},"process exited");let d=this.interrupted;this.proc=null,br(this.hookFiles),this.hookFiles=null,this.interrupted=!1,this.toolCallContext.clear(),d&&!this.sawFinalResult?this.handler?.({type:"session.interrupted",sessionId:this.sessionId}):u&&u!==0&&!this.sawFinalResult&&(ie.error({sessionId:this.sessionId,exitCode:u,lastStderr:this.lastStderr.slice(-3)},"abnormal exit"),this.handler?.({type:"error",sessionId:this.sessionId,message:cu({stderrLines:this.lastStderr,exitCode:u})})),this.exitHandler?.(u)})}respondApproval(e,n){if(ie.info({sessionId:this.sessionId,requestId:e,approved:n},"approval response"),!this.proc?.stdin?.writable)return ie.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+`
88
- `),!0}getRespondingLivenessHint(){return!this.proc||this.proc.exitCode!==null||this.proc.signalCode!==null||this.proc.killed?"dead":"alive"}setApprovalMode(e){this.approvalMode=e,ie.info({sessionId:this.sessionId,approvalMode:e},"approval mode updated")}interrupt(){this.proc&&!this.proc.killed&&(this.interrupted=!0,this.proc.kill("SIGTERM"),ie.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,br(this.hookFiles),this.hookFiles=null,this.toolCallContext.clear()}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&&(ie.info({oldSessionId:this.sessionId,newSessionId:r},"session ID resolved"),I.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)if(s.type==="tool_use"&&!this.emittedToolCallIds.has(s.id)){this.emittedToolCallIds.add(s.id);let i=s.input??{},o=wr(s.name,i,this.cwd);this.toolCallContext.set(s.id,{toolName:s.name,...o?{generatedFilePath:o,fileExistedAtStart:(0,Tr.existsSync)(o)}:{}}),this.handler({type:"tool.call",sessionId:this.sessionId,toolName:s.name,input:i,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=typeof s.tool_use_id=="string"?s.tool_use_id:"",o=i?this.toolCallContext.get(i):void 0,a=Vm(s.content);if(!s.is_error&&o?.generatedFilePath&&o.fileExistedAtStart===!1&&(0,Tr.existsSync)(o.generatedFilePath)){let l=Te([o.generatedFilePath]);l&&this.handler({type:"tool.result",sessionId:this.sessionId,toolCallId:i,output:l})}else if(!s.is_error&&o?.generatedFilePath&&o.fileExistedAtStart==null&&Ir(e.toolUseResult,a)){let l=Te([o.generatedFilePath]);l&&this.handler({type:"tool.result",sessionId:this.sessionId,toolCallId:i,output:l})}if(!a){i&&this.toolCallContext.delete(i);continue}if(s.is_error===!0&&i&&Ym(a)){this.pendingPermissionDescriptions.set(i,a);continue}this.handler({type:"tool.result",sessionId:this.sessionId,toolCallId:i,output:a}),i&&this.toolCallContext.delete(i)}break}case"control_request":{this.replayPhase=!1;let r=e.request;r?.subtype==="can_use_tool"&&(I.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){ki("Claude failed."),this.handler({type:"error",sessionId:this.sessionId,message:cu({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()}`,u=typeof a.tool_name=="string"?a.tool_name:"unknown",c=a.tool_input&&typeof a.tool_input=="object"?a.tool_input:{},d=this.pendingPermissionDescriptions.get(l)??`Claude requested permissions to use ${u}.`;I.emit("approval.request",{agent:"claude",sessionId:this.sessionId,toolName:u}),this.handler({type:"approval.request",sessionId:this.sessionId,requestId:`${du}${l}`,toolName:u,input:c,description:d})}this.pendingPermissionDescriptions.clear();let i=e.total_cost_usd,o=e.usage?{inputTokens:e.usage.input_tokens,outputTokens:e.usage.output_tokens,...Number.isFinite(e.usage.cache_creation_input_tokens)?{cacheCreationInputTokens:e.usage.cache_creation_input_tokens}:{},...Number.isFinite(e.usage.cache_read_input_tokens)?{cacheReadInputTokens:e.usage.cache_read_input_tokens}:{}}:void 0;ki("Claude finished. Run `claude --continue` to continue on desktop."),I.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 mu=require("child_process"),yu=require("fs");var Ci=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();O.info({metrics:n},"periodic metrics snapshot")},e),this.logInterval.unref())}stopPeriodicLog(){this.logInterval&&(clearInterval(this.logInterval),this.logInterval=null)}},_=new Ci;var fu=require("node:fs"),xi=require("node:path"),Qm="@vibelet/cli";function Zm(t){try{let e=JSON.parse((0,fu.readFileSync)(t,"utf8"));if(e.name===Qm&&typeof e.version=="string"&&e.version.length>0)return e.version}catch{}return null}function ey(){return"1.0.24"}var Et=ey();var E=O.child({module:"codex"});function ty(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 ny(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 j(t){return!t||typeof t!="object"||Array.isArray(t)?null:t}function M(t){return typeof t=="string"&&t.trim().length>0?t.trim():null}function Ri(t){let e=Number(t);return!Number.isFinite(e)||e<=0?null:Math.trunc(e)}var ry=new Set(["aborted","interrupted","cancelled","canceled"]);function sy(t){let e=M(t);return e?e.toLowerCase():null}function iy(t){let e=M(t);return e?e.replace(/[^a-z0-9]/gi,"").toLowerCase():null}function Ei(t){return t?M(t.itemId)??M(t.id)??M(t.callId)??M(t.call_id):null}function Mi(t,e){let n={};for(let[r,s]of Object.entries(t))e.includes(r)||(n[r]=s);return n}function vu(t){return/\bapprove\b|\ballow\b|\baccept\b|\byes\b|\bcontinue\b|\bproceed\b|\brun\b|\bapply\b/i.test(t)}function Su(t){return/\bdeny\b|\breject\b|\bdecline\b|\bno\b|\bcancel\b|\babort\b|\bstop\b/i.test(t)}function oy(t){if(!Array.isArray(t))return null;for(let e of t){let n=j(e);if(!n)continue;let r=M(n.id),s=Array.isArray(n.options)?n.options.map(l=>j(l)).filter(l=>!!l):[];if(!r||s.length===0)continue;let i=s.map(l=>M(l.label)).filter(l=>!!l);if(i.length<2)continue;let o=i.find(l=>vu(l))??i[0],a=i.find(l=>Su(l))??i[i.length-1];if(!(!o||!a||o===a))return{questionId:r,approveLabel:o,denyLabel:a}}return null}function ay(t){if(!Array.isArray(t)||t.length===0)return!1;let e=t.map(s=>j(s)).filter(s=>!!s).flatMap(s=>(Array.isArray(s.options)?s.options:[]).map(o=>j(o)).filter(o=>!!o).map(o=>M(o.label)).filter(o=>!!o)),n=e.some(s=>vu(s)),r=e.some(s=>Su(s));return n&&r}function pu(t){let e=iy(t.type??t.itemType);if(e==="commandexecution")return{toolName:"Bash",input:Mi(t,["id","itemId","type","itemType","stdout","stderr","exitCode","exit_code","status","success","error"])};if(e==="filechange")return{toolName:"Patch",input:Mi(t,["id","itemId","type","itemType","stdout","stderr","exitCode","exit_code","status","success","error"])};if(e==="mcptoolcall"){let n=M(t.server),r=M(t.tool)??M(t.name);return r?{toolName:n?`mcp__${n}__${r}`:r,input:j(t.arguments)??j(t.input)??{}}:null}return null}function ly(t,e){let n=M(t.path);if(!n||!(Array.isArray(t.changes)?t.changes:[]).some(o=>j(o)?.kind==="create"))return null;let i=et(n,e);return Rt(i)?i:null}function cy(t){if(!Array.isArray(t))return"";for(let e of t){let n=j(e);if(!n)continue;let r=M(n.question)??M(n.header);if(r)return r}return""}function Pi(t){let e=j(t);if(!e)return;let n=Ri(e.input_tokens??e.inputTokens)??0,r=Ri(e.output_tokens??e.outputTokens)??0,s=Ri(e.modelContextWindow??e.model_context_window??e.contextWindowTokens);if(!(n<=0&&r<=0&&!s))return{inputTokens:n,outputTokens:r,...s?{contextWindowTokens:s}:{}}}function hu(t,e){return e?{inputTokens:e.inputTokens,outputTokens:e.outputTokens,...Number.isFinite(e.contextWindowTokens)?{contextWindowTokens:e.contextWindowTokens}:Number.isFinite(t?.contextWindowTokens)?{contextWindowTokens:t?.contextWindowTokens}:{}}:t}function gu(t,e){return t==="autoApprove"?{approvalPolicy:"never",sandbox:"danger-full-access",sandboxPolicy:{type:"dangerFullAccess"}}:t==="plan"?{approvalPolicy:"on-request",sandbox:"workspace-write",sandboxPolicy:{type:"workspaceWrite",writableRoots:[],readOnlyAccess:{type:"fullAccess"},networkAccess:!0,excludeTmpdirEnvVar:!1,excludeSlashTmp:!1}}:{approvalPolicy:"on-request",sandbox:"workspace-write",sandboxPolicy:{type:"workspaceWrite",writableRoots:[e],readOnlyAccess:{type:"fullAccess"},networkAccess:!0,excludeTmpdirEnvVar:!1,excludeSlashTmp:!1}}}var bn=class{proc=null;handler=null;exitHandler=null;buffer="";rpcId=0;pending=new Map;threadId="";lastStderr=[];approvalRequests=new Map;toolContextByCallId=new Map;turnStartInFlight=!1;interruptRequestedDuringTurnStart=!1;latestTurnUsage;approvalMode;cwd="";model;async start(e,n,r){this.approvalMode=r,this.cwd=e,this.approvalRequests.clear(),this.toolContextByCallId.clear(),this.turnStartInFlight=!1,this.interruptRequestedDuringTurnStart=!1,this.latestTurnUsage=void 0;let s=S.codexPath,i,o=this.buildSpawnArgs();if(S.isTransientPath(s)||s==="codex"){let c=S.execViaLoginShell("codex",o);i=c.command,o=c.args,E.info({spawnCmd:i,argsPreview:o.slice(0,2)},"spawning via login shell")}else i=s,E.info({spawnCmd:i,args:o},"spawning");I.emit("driver.spawn",{agent:"codex",cwd:e,resumeSessionId:n}),this.lastStderr=[],this.proc=(0,mu.spawn)(i,o,{cwd:e||void 0,stdio:["pipe","pipe","pipe"],env:S.buildSanitizedEnv(),...process.platform==="win32"?{shell:!0}:{}}),this.proc.on("error",c=>{let d=c.message;c.code==="ENOENT"&&e&&!(0,yu.existsSync)(e)&&(d=`Working directory does not exist: ${e}`),E.error({error:d,cwd:e},"spawn error"),I.emit("driver.error",{agent:"codex",error:d})}),this.proc.stdout.on("data",c=>{this.buffer+=c.toString();let d=this.buffer.split(`
89
- `);this.buffer=d.pop();for(let p of d)if(p.trim())try{this.handleRaw(JSON.parse(p))}catch{E.warn({linePreview:p.slice(0,200)},"failed to parse stdout line")}}),this.proc.stderr.on("data",c=>{let d=c.toString().trim();d&&(E.debug({stderr:d},"stderr"),this.lastStderr.push(d),this.lastStderr.length>10&&this.lastStderr.shift())}),this.proc.on("exit",c=>{E.info({threadId:this.threadId,exitCode:c},"process exited"),c&&c!==0&&E.error({threadId:this.threadId,exitCode:c,lastStderr:this.lastStderr.slice(-3)},"abnormal exit"),this.proc=null,this.approvalRequests.clear(),this.toolContextByCallId.clear(),this.turnStartInFlight=!1,this.interruptRequestedDuringTurnStart=!1;for(let[,{reject:d}]of this.pending)d(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 l=_.startTimer("rpc.duration");await this.rpc("initialize",{clientInfo:{name:"@vibelet/cli",version:Et},capabilities:{experimentalApi:!0}}),l(),this.rpcNotify("initialized",{});let u=gu(this.approvalMode,e);if(n){let c=await this.rpc("thread/resume",{threadId:n,approvalPolicy:u.approvalPolicy,sandbox:u.sandbox,persistExtendedHistory:!0});this.threadId=c?.thread?.id??n,E.info({threadId:this.threadId},"thread resumed"),I.emit("driver.init",{agent:"codex",sessionId:this.threadId})}else{let c=await this.rpc("thread/start",{cwd:e,approvalPolicy:u.approvalPolicy,sandbox:u.sandbox,experimentalRawEvents:!0,persistExtendedHistory:!0});this.threadId=c?.thread?.id??c?.threadId??"",E.info({threadId:this.threadId},"thread created"),I.emit("driver.init",{agent:"codex",sessionId:this.threadId})}return this.threadId}setModel(e){this.model=e}buildSpawnArgs(){let e=["app-server","--listen","stdio://"];return this.model&&e.push("-m",this.model),e}sendPrompt(e,n){let r=gu(this.approvalMode,this.cwd||process.cwd());this.latestTurnUsage=void 0,this.turnStartInFlight=!0,this.interruptRequestedDuringTurnStart=!1,E.info({threadId:this.threadId,promptPreview:e.slice(0,50)},"turn/start"),this.rpc("turn/start",{threadId:this.threadId,input:[{type:"text",text:e}],approvalPolicy:r.approvalPolicy,sandboxPolicy:r.sandboxPolicy,...n?{model:n}:{}}).then(s=>{E.debug({resultPreview:JSON.stringify(s).slice(0,200)},"turn/start result"),this.turnStartInFlight=!1,this.interruptRequestedDuringTurnStart&&(this.interruptRequestedDuringTurnStart=!1,this.requestTurnInterrupt())}).catch(s=>{this.turnStartInFlight=!1,this.interruptRequestedDuringTurnStart=!1,E.error({threadId:this.threadId,error:s.message},"sendPrompt error"),this.handler?.({type:"error",sessionId:this.threadId,message:s.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 E.info({threadId:this.threadId,rpcId:s,approved:n},"approval response"),this.proc.stdin.write(JSON.stringify({jsonrpc:"2.0",id:s,result:i})+`
90
- `),!0}restorePendingApproval(e){let n=ny(e);n&&this.approvalRequests.set(e.requestId,n)}getRespondingLivenessHint(){return!this.proc||this.proc.exitCode!==null||this.proc.signalCode!==null||this.proc.killed?"dead":"alive"}interrupt(){this.turnStartInFlight&&(this.interruptRequestedDuringTurnStart=!0),this.requestTurnInterrupt()}setApprovalMode(e){this.approvalMode=e,E.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(),this.turnStartInFlight=!1,this.interruptRequestedDuringTurnStart=!1,this.latestTurnUsage=void 0;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=_.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})+`
91
- `),setTimeout(()=>{this.pending.has(r)&&(this.pending.delete(r),E.error({method:e,rpcId:r,threadId:this.threadId},"RPC timeout"),s(),o(new Error(`RPC timeout: ${e}`)))},3e4).unref()})}requestTurnInterrupt(){this.rpc("turn/interrupt",{threadId:this.threadId}).catch(()=>{})}rpcNotify(e,n){this.proc?.stdin?.writable&&this.proc.stdin.write(JSON.stringify({jsonrpc:"2.0",method:e,params:n})+`
82
+ `}function ru(t,e){let n=(0,vn.join)((0,nu.tmpdir)(),`vibelet-claude-hooks-${process.pid}-${(0,su.randomUUID)()}`);(0,De.mkdirSync)(n,{recursive:!0});let s=(0,vn.join)(n,"settings.json"),r=(0,vn.join)(n,"session_hook_forwarder.cjs"),i=(0,vn.join)(n,"permission_hook_forwarder.cjs");return(0,De.writeFileSync)(r,Hm(t,e),"utf8"),(0,De.writeFileSync)(i,Um(t,e),"utf8"),(0,De.writeFileSync)(s,JSON.stringify({hooks:{SessionStart:[{matcher:"*",hooks:[{type:"command",command:`${JSON.stringify(process.execPath)} ${JSON.stringify(r)}`}]}],PreToolUse:[{matcher:"*",hooks:[{type:"command",command:`${JSON.stringify(process.execPath)} ${JSON.stringify(i)}`}]}]}},null,2),"utf8"),{secret:e,dirPath:n,settingsPath:s,sessionScriptPath:r,permissionScriptPath:i}}function Ts(t){if(t)try{(0,De.rmSync)(t.dirPath,{recursive:!0,force:!0})}catch{}}var iu=require("os"),et=require("path"),ou=require("fs/promises"),Wm=new Set([".c",".cc",".cpp",".cs",".css",".dart",".elm",".ex",".exs",".fish",".go",".h",".hpp",".hrl",".java",".js",".jsx",".kt",".kts",".less",".lua",".m",".mm",".mjs",".php",".pl",".ps1",".py",".r",".rb",".rs",".sass",".scala",".scss",".sh",".sql",".swift",".ts",".tsx",".vue",".xml",".yaml",".yml",".zsh"]),qm=5e3,au="Generated file: ",lu=`Generated files:
83
+ `;function Rt(t){return typeof t=="string"&&t.trim().length>0?t.trim():null}function bn(t){return!t||typeof t!="object"||Array.isArray(t)?null:t}function Ci(t){let e=t.trim().replace(/[.,!?;:,。!?;:、]+$/u,""),n=e.indexOf("#");n>0&&(e=e.slice(0,n));let s=e.match(/^(.*?)(:\d+(?::\d+)?)$/);return s?.[1]&&(e=s[1]),e}function tt(t,e){let n=Ci(t);return n?n.startsWith("~/")?(0,et.resolve)((0,iu.homedir)(),n.slice(2)):(0,et.isAbsolute)(n)?n:e?(0,et.resolve)(e,n):n:""}function Gm(t){return Wm.has((0,et.extname)(Ci(t)).toLowerCase())}function Et(t){let e=Ci(t);return e?!Gm(e):!1}function Te(t){let e=[...new Set(t.map(n=>tt(n)).filter(Boolean))];return e.length===0?"":e.length===1?`${au}${e[0]}`:`${lu}${e.join(`
84
+ `)}`}function cu(t){return typeof t!="string"?!1:t.startsWith(au)||t.startsWith(lu)}function jm(t,e){let n=t.matchAll(/^\*\*\* Add File: (.+)$/gm),s=new Set;for(let r of n){let i=Rt(r[1]);if(!i)continue;let o=tt(i,e);!o||!Et(o)||s.add(o)}return[...s]}function $m(t){let e=Rt(t);return e?e.toLowerCase():""}function zm(t,e){let n=Rt(t?.file_path)??Rt(t?.path);if(!n)return null;let s=tt(n,e);return s&&Et(s)?s:null}function As(t,e,n){return $m(t)!=="write"?null:zm(e,n)}function Vm(t){let e=t.toLowerCase();return e.includes("updated successfully")||e.includes("updated. all occurrences were successfully replaced")||e.includes("all occurrences were successfully replaced")||e.includes("successfully replaced")}function Qm(t){return/^\d+\t/m.test(t)}function ks(t,e){let n=typeof e=="string"?e.trim():"";if(n&&Vm(n))return!1;let s=bn(t);if(s?.type==="update"||s?.type==="replace"||s&&(Object.hasOwn(s,"oldString")||Object.hasOwn(s,"structuredPatch")||Object.hasOwn(s,"originalFile")||Object.hasOwn(s,"replaceAll")))return!1;if(typeof bn(s?.file)?.filePath=="string"||typeof s?.filePath=="string")return!0;if(n){let i=n.toLowerCase();if(i.includes("created successfully")||i.includes("has been created")||Qm(n))return!0}return!1}function xi(t,e){let n=bn(t);if(!n)return[];let s=new Set;if(n.type==="event_msg"){let r=bn(n.payload);if(r?.type==="image_generation_end"){let i=Rt(r.saved_path);if(i){let o=tt(i,e?.cwd);o&&Et(o)&&s.add(o)}}}if(e?.includePatchCalls&&n.type==="response_item"){let r=bn(n.payload);if(r?.type==="function_call"&&r.name==="apply_patch"){let i=Rt(r.arguments);if(i)for(let o of jm(i,e?.cwd))s.add(o)}}return[...s]}async function uu(t,e){let n=[...new Set(t.map(r=>tt(r)).filter(Boolean))],s=[];for(let r of n)if(Et(r))try{let i=await(0,ou.stat)(r);if(Math.max(i.birthtimeMs||0,i.ctimeMs||0,i.mtimeMs||0)+qm<e)continue;s.push(r)}catch{}return s}var oe=N.child({module:"claude"}),hu="claude-permission-denial:",Ym=/\u001B\[[0-?]*[ -/]*[@-~]/g;function Jm(){return process.env.VIBE_TEST!=="1"&&!process.argv.includes("--test")}function Ri(t){Jm()&&Ss(`\x1B[33m\u26A1 [Vibelet] ${t}\x1B[0m
85
+ `)}function Km(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(`
86
+ `):""}function Xm(t){return Array.isArray(t)&&t.length>0&&t.every(e=>e&&typeof e=="object"&&e.type==="tool_reference")}function Zm(t){if(typeof t=="string")return t;let e=Km(t);return e||(Xm(t)?"":JSON.stringify(t))}function ey(t){return/requested permissions|haven't granted/i.test(t)}function du(t){return t.replace(Ym,"").replace(/\s+/g," ").trim()}function ty(t){let e=t.toLowerCase();return e==="error"||e==="failed"||e==="unknown error"}function ny(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 sy(t){return t.toLowerCase().startsWith("claude ")?t:`Claude usage limit reached. ${t}`}function fu(t){let e=du(t.resultText??""),n=(t.stderrLines??[]).map(du).filter(Boolean).slice(-3),s=[e,...n].find(i=>!!i&&ny(i));if(s)return sy(s);let r=[e,...n].find(i=>!!i&&!ty(i));return r?t.exitCode!=null&&r!==e?`Claude exited with code ${t.exitCode}: ${r}`:r:t.exitCode!=null?`Claude exited with code ${t.exitCode}`:"Claude returned an error result."}function xs(t){return t.startsWith(hu)}var wn=class{proc=null;handler=null;sessionId="";buffer="";cwd="";approvalMode;sawFinalResult=!1;interrupted=!1;exitHandler=null;lastStderr=[];pendingPermissionDescriptions=new Map;emittedToolCallIds=new Set;toolCallContext=new Map;replayPhase=!1;hookPort=null;hookSecret=null;hookFiles=null;buildClaudeEnv(){let e=S.buildSanitizedEnv();for(let n of Object.keys(e))n.startsWith("CMUX_")&&delete e[n];return e}async start(e,n,s){return this.cwd=e,this.approvalMode=s,n&&(this.sessionId=n),this.sessionId||(this.sessionId=`pending_${Date.now()}`),oe.info({sessionId:this.sessionId,cwd:e},"session initialized"),T.emit("driver.spawn",{agent:"claude",sessionId:this.sessionId,cwd:e}),this.sessionId}configureHookBridge(e,n){this.hookPort=e,this.hookSecret=n}sendPrompt(e,n){let s=["-p",e,"--output-format","stream-json","--verbose","--include-partial-messages"];n&&s.push("--model",n),this.sessionId&&!this.sessionId.startsWith("pending_")&&s.push("--resume",this.sessionId),Ts(this.hookFiles),this.hookFiles=null,this.approvalMode!=="plan"&&this.approvalMode!=="acceptEdits"&&this.approvalMode!=="autoApprove"&&this.hookPort&&this.hookSecret&&(this.hookFiles=ru(this.hookPort,this.hookSecret),s.push("--settings",this.hookFiles.settingsPath)),this.approvalMode==="plan"&&s.push("--permission-mode","plan"),this.approvalMode==="acceptEdits"&&s.push("--permission-mode","acceptEdits"),this.approvalMode==="autoApprove"&&s.push("--dangerously-skip-permissions");let r=this.sessionId.startsWith("pending_")?"(new)":`(resume ${this.sessionId.slice(0,8)})`;oe.info({sessionId:this.sessionId,label:r,promptPreview:e.slice(0,50)},"running claude"),Ri(`New message: ${e.slice(0,60)}`),this.sawFinalResult=!1,this.interrupted=!1,this.lastStderr=[],this.pendingPermissionDescriptions.clear(),this.emittedToolCallIds.clear(),this.toolCallContext.clear(),this.replayPhase=!0;let i=S.claudePath,o,a=s;if(S.isTransientPath(i)||i==="claude"){let u=S.execViaLoginShell("claude",s);o=u.command,a=u.args}else o=i;this.proc=(0,pu.spawn)(o,a,{cwd:this.cwd||void 0,stdio:["ignore","pipe","pipe"],env:this.buildClaudeEnv(),...process.platform==="win32"?{shell:!0,windowsHide:!0}:{}}),this.proc.on("error",u=>{let c=u.message;u.code==="ENOENT"&&this.cwd&&!(0,Cs.existsSync)(this.cwd)&&(c=`Working directory does not exist: ${this.cwd}`),oe.error({sessionId:this.sessionId,error:c,cwd:this.cwd},"spawn error"),T.emit("driver.error",{agent:"claude",sessionId:this.sessionId,error:c}),this.handler?.({type:"error",sessionId:this.sessionId,message:c})}),this.buffer="",this.proc.stdout.on("data",u=>{this.buffer+=u.toString();let c=this.buffer.split(`
87
+ `);this.buffer=c.pop();for(let d of c)if(d.trim())try{this.handleRaw(JSON.parse(d))}catch{oe.warn({sessionId:this.sessionId,linePreview:d.slice(0,100)},"failed to parse stdout line")}}),this.proc.stderr.on("data",u=>{let c=u.toString().trim();c&&(oe.debug({sessionId:this.sessionId,stderr:c},"stderr"),this.lastStderr.push(c),this.lastStderr.length>10&&this.lastStderr.shift())}),this.proc.on("exit",(u,c)=>{oe.info({sessionId:this.sessionId,exitCode:u,signal:c},"process exited");let d=this.interrupted;this.proc=null,Ts(this.hookFiles),this.hookFiles=null,this.interrupted=!1,this.toolCallContext.clear(),d&&!this.sawFinalResult?this.handler?.({type:"session.interrupted",sessionId:this.sessionId}):u&&u!==0&&!this.sawFinalResult&&(oe.error({sessionId:this.sessionId,exitCode:u,lastStderr:this.lastStderr.slice(-3)},"abnormal exit"),this.handler?.({type:"error",sessionId:this.sessionId,message:fu({stderrLines:this.lastStderr,exitCode:u})})),this.exitHandler?.(u)})}respondApproval(e,n){if(oe.info({sessionId:this.sessionId,requestId:e,approved:n},"approval response"),!this.proc?.stdin?.writable)return oe.error({sessionId:this.sessionId},"cannot send approval: stdin not writable"),!1;let s=JSON.stringify({type:"control_response",request_id:e,permission_granted:n});return this.proc.stdin.write(s+`
88
+ `),!0}getRespondingLivenessHint(){return!this.proc||this.proc.exitCode!==null||this.proc.signalCode!==null||this.proc.killed?"dead":"alive"}setApprovalMode(e){this.approvalMode=e,oe.info({sessionId:this.sessionId,approvalMode:e},"approval mode updated")}interrupt(){this.proc&&!this.proc.killed&&(this.interrupted=!0,this.proc.kill("SIGTERM"),oe.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,Ts(this.hookFiles),this.hookFiles=null,this.toolCallContext.clear()}onMessage(e){this.handler=e}onExit(e){this.exitHandler=e}handleRaw(e){let n=e.type;if(n==="system"&&e.subtype==="init"){let s=e.session_id??"";s&&s!==this.sessionId&&(oe.info({oldSessionId:this.sessionId,newSessionId:s},"session ID resolved"),T.emit("driver.init",{agent:"claude",sessionId:s}),this.sessionId=s);return}if(this.handler)switch(n){case"assistant":{if(this.replayPhase)break;let s=e.message?.content;if(!Array.isArray(s))break;for(let r of s)if(r.type==="tool_use"&&!this.emittedToolCallIds.has(r.id)){this.emittedToolCallIds.add(r.id);let i=r.input??{},o=As(r.name,i,this.cwd);this.toolCallContext.set(r.id,{toolName:r.name,...o?{generatedFilePath:o,fileExistedAtStart:(0,Cs.existsSync)(o)}:{}}),this.handler({type:"tool.call",sessionId:this.sessionId,toolName:r.name,input:i,toolCallId:r.id})}break}case"user":{if(this.replayPhase)break;let s=e.message?.content;if(!Array.isArray(s))break;for(let r of s)if(r.type==="tool_result"){let i=typeof r.tool_use_id=="string"?r.tool_use_id:"",o=i?this.toolCallContext.get(i):void 0,a=Zm(r.content);if(!r.is_error&&o?.generatedFilePath&&o.fileExistedAtStart===!1&&(0,Cs.existsSync)(o.generatedFilePath)){let l=Te([o.generatedFilePath]);l&&this.handler({type:"tool.result",sessionId:this.sessionId,toolCallId:i,output:l})}else if(!r.is_error&&o?.generatedFilePath&&o.fileExistedAtStart==null&&ks(e.toolUseResult,a)){let l=Te([o.generatedFilePath]);l&&this.handler({type:"tool.result",sessionId:this.sessionId,toolCallId:i,output:l})}if(!a){i&&this.toolCallContext.delete(i);continue}if(r.is_error===!0&&i&&ey(a)){this.pendingPermissionDescriptions.set(i,a);continue}this.handler({type:"tool.result",sessionId:this.sessionId,toolCallId:i,output:a}),i&&this.toolCallContext.delete(i)}break}case"control_request":{this.replayPhase=!1;let s=e.request;s?.subtype==="can_use_tool"&&(T.emit("approval.request",{agent:"claude",sessionId:this.sessionId,toolName:s.tool_name}),this.handler({type:"approval.request",sessionId:this.sessionId,requestId:e.request_id,toolName:s.tool_name??"unknown",input:s.input??{},description:s.description??s.title??""}));break}case"stream_event":{this.replayPhase=!1;let s=e.event;s?.type==="content_block_delta"&&s?.delta?.type==="text_delta"&&s?.delta?.text&&this.handler({type:"text.delta",sessionId:this.sessionId,content:s.delta.text});break}case"result":{this.replayPhase=!1,this.sawFinalResult=!0;let s=typeof e.result=="string"?e.result:"";if(e.is_error){Ri("Claude failed."),this.handler({type:"error",sessionId:this.sessionId,message:fu({resultText:s,stderrLines:this.lastStderr})});break}let r=Array.isArray(e.permission_denials)?e.permission_denials:[];if(r.length>0){let a=r[0]??{},l=typeof a.tool_use_id=="string"?a.tool_use_id:`missing_${Date.now()}`,u=typeof a.tool_name=="string"?a.tool_name:"unknown",c=a.tool_input&&typeof a.tool_input=="object"?a.tool_input:{},d=this.pendingPermissionDescriptions.get(l)??`Claude requested permissions to use ${u}.`;T.emit("approval.request",{agent:"claude",sessionId:this.sessionId,toolName:u}),this.handler({type:"approval.request",sessionId:this.sessionId,requestId:`${hu}${l}`,toolName:u,input:c,description:d})}this.pendingPermissionDescriptions.clear();let i=e.total_cost_usd,o=e.usage?{inputTokens:e.usage.input_tokens,outputTokens:e.usage.output_tokens,...Number.isFinite(e.usage.cache_creation_input_tokens)?{cacheCreationInputTokens:e.usage.cache_creation_input_tokens}:{},...Number.isFinite(e.usage.cache_read_input_tokens)?{cacheReadInputTokens:e.usage.cache_read_input_tokens}:{}}:void 0;Ri("Claude finished. Run `claude --continue` to continue on desktop."),T.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 vu=require("child_process"),Su=require("fs");var Ei=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 s=this.counters.get(e),r=JSON.stringify(n),i=s.find(o=>JSON.stringify(o.labels)===r);i?i.value++:s.push({value:1,labels:n})}gauge(e,n){this.gauges.set(e,n)}startTimer(e){let n=performance.now();return()=>{let s=Math.round(performance.now()-n),r=this.timers.get(e)??{count:0,totalMs:0,minMs:1/0,maxMs:0,lastMs:0};return r.count++,r.totalMs+=s,r.minMs=Math.min(r.minMs,s),r.maxMs=Math.max(r.maxMs,s),r.lastMs=s,this.timers.set(e,r),s}}snapshot(){let e={};for(let[r,i]of this.counters)e[r]=i.map(o=>({...o}));let n={};for(let[r,i]of this.timers)n[r]={...i,minMs:i.minMs===1/0?0:i.minMs};let s={};for(let[r,i]of this.gauges)s[r]=i;return{uptimeMs:Date.now()-this.startTime,counters:e,timers:n,gauges:s}}startPeriodicLog(e=6e4){this.logInterval||(this.logInterval=setInterval(()=>{let n=this.snapshot();N.info({metrics:n},"periodic metrics snapshot")},e),this.logInterval.unref())}stopPeriodicLog(){this.logInterval&&(clearInterval(this.logInterval),this.logInterval=null)}},b=new Ei;var gu=require("node:fs"),Pi=require("node:path"),ry="@vibelet/cli";function iy(t){try{let e=JSON.parse((0,gu.readFileSync)(t,"utf8"));if(e.name===ry&&typeof e.version=="string"&&e.version.length>0)return e.version}catch{}return null}function oy(){return"1.0.26"}var Pt=oy();var P=N.child({module:"codex"});function ay(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 ly(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 M(t){return typeof t=="string"&&t.trim().length>0?t.trim():null}function Mi(t){let e=Number(t);return!Number.isFinite(e)||e<=0?null:Math.trunc(e)}var cy=new Set(["aborted","interrupted","cancelled","canceled"]);function uy(t){let e=M(t);return e?e.toLowerCase():null}function dy(t){let e=M(t);return e?e.replace(/[^a-z0-9]/gi,"").toLowerCase():null}function Li(t){return t?M(t.itemId)??M(t.id)??M(t.callId)??M(t.call_id):null}function Ni(t,e){let n={};for(let[s,r]of Object.entries(t))e.includes(s)||(n[s]=r);return n}function _u(t){return/\bapprove\b|\ballow\b|\baccept\b|\byes\b|\bcontinue\b|\bproceed\b|\brun\b|\bapply\b/i.test(t)}function bu(t){return/\bdeny\b|\breject\b|\bdecline\b|\bno\b|\bcancel\b|\babort\b|\bstop\b/i.test(t)}function fy(t){if(!Array.isArray(t))return null;for(let e of t){let n=$(e);if(!n)continue;let s=M(n.id),r=Array.isArray(n.options)?n.options.map(l=>$(l)).filter(l=>!!l):[];if(!s||r.length===0)continue;let i=r.map(l=>M(l.label)).filter(l=>!!l);if(i.length<2)continue;let o=i.find(l=>_u(l))??i[0],a=i.find(l=>bu(l))??i[i.length-1];if(!(!o||!a||o===a))return{questionId:s,approveLabel:o,denyLabel:a}}return null}function py(t){if(!Array.isArray(t)||t.length===0)return!1;let e=t.map(r=>$(r)).filter(r=>!!r).flatMap(r=>(Array.isArray(r.options)?r.options:[]).map(o=>$(o)).filter(o=>!!o).map(o=>M(o.label)).filter(o=>!!o)),n=e.some(r=>_u(r)),s=e.some(r=>bu(r));return n&&s}function mu(t){let e=dy(t.type??t.itemType);if(e==="commandexecution")return{toolName:"Bash",input:Ni(t,["id","itemId","type","itemType","stdout","stderr","exitCode","exit_code","status","success","error"])};if(e==="filechange")return{toolName:"Patch",input:Ni(t,["id","itemId","type","itemType","stdout","stderr","exitCode","exit_code","status","success","error"])};if(e==="mcptoolcall"){let n=M(t.server),s=M(t.tool)??M(t.name);return s?{toolName:n?`mcp__${n}__${s}`:s,input:$(t.arguments)??$(t.input)??{}}:null}return null}function hy(t,e){let n=M(t.path);if(!n||!(Array.isArray(t.changes)?t.changes:[]).some(o=>$(o)?.kind==="create"))return null;let i=tt(n,e);return Et(i)?i:null}function gy(t){if(!Array.isArray(t))return"";for(let e of t){let n=$(e);if(!n)continue;let s=M(n.question)??M(n.header);if(s)return s}return""}function my(t){let e=$(t);if(!e)return;let n=Mi(e.input_tokens??e.inputTokens)??0,s=Mi(e.output_tokens??e.outputTokens)??0,r=Mi(e.modelContextWindow??e.model_context_window??e.contextWindowTokens);if(!(n<=0&&s<=0&&!r))return{inputTokens:n,outputTokens:s,...r?{contextWindowTokens:r}:{}}}function yu(t,e){return t==="autoApprove"?{approvalPolicy:"never",sandbox:"danger-full-access",sandboxPolicy:{type:"dangerFullAccess"}}:t==="plan"?{approvalPolicy:"on-request",sandbox:"workspace-write",sandboxPolicy:{type:"workspaceWrite",writableRoots:[],readOnlyAccess:{type:"fullAccess"},networkAccess:!0,excludeTmpdirEnvVar:!1,excludeSlashTmp:!1}}:{approvalPolicy:"on-request",sandbox:"workspace-write",sandboxPolicy:{type:"workspaceWrite",writableRoots:[e],readOnlyAccess:{type:"fullAccess"},networkAccess:!0,excludeTmpdirEnvVar:!1,excludeSlashTmp:!1}}}var In=class{proc=null;handler=null;exitHandler=null;buffer="";rpcId=0;pending=new Map;threadId="";lastStderr=[];approvalRequests=new Map;toolContextByCallId=new Map;turnStartInFlight=!1;interruptRequestedDuringTurnStart=!1;latestTurnUsage;approvalMode;cwd="";model;async start(e,n,s){this.approvalMode=s,this.cwd=e,this.approvalRequests.clear(),this.toolContextByCallId.clear(),this.turnStartInFlight=!1,this.interruptRequestedDuringTurnStart=!1,this.latestTurnUsage=void 0;let r=S.codexPath,i,o=this.buildSpawnArgs();if(S.isTransientPath(r)||r==="codex"){let c=S.execViaLoginShell("codex",o);i=c.command,o=c.args,P.info({spawnCmd:i,argsPreview:o.slice(0,2)},"spawning via login shell")}else i=r,P.info({spawnCmd:i,args:o},"spawning");T.emit("driver.spawn",{agent:"codex",cwd:e,resumeSessionId:n}),this.lastStderr=[],this.proc=(0,vu.spawn)(i,o,{cwd:e||void 0,stdio:["pipe","pipe","pipe"],env:S.buildSanitizedEnv(),...process.platform==="win32"?{shell:!0,windowsHide:!0}:{}}),this.proc.on("error",c=>{let d=c.message;c.code==="ENOENT"&&e&&!(0,Su.existsSync)(e)&&(d=`Working directory does not exist: ${e}`),P.error({error:d,cwd:e},"spawn error"),T.emit("driver.error",{agent:"codex",error:d})}),this.proc.stdout.on("data",c=>{this.buffer+=c.toString();let d=this.buffer.split(`
89
+ `);this.buffer=d.pop();for(let f of d)if(f.trim())try{this.handleRaw(JSON.parse(f))}catch{P.warn({linePreview:f.slice(0,200)},"failed to parse stdout line")}}),this.proc.stderr.on("data",c=>{let d=c.toString().trim();d&&(P.debug({stderr:d},"stderr"),this.lastStderr.push(d),this.lastStderr.length>10&&this.lastStderr.shift())}),this.proc.on("exit",c=>{P.info({threadId:this.threadId,exitCode:c},"process exited"),c&&c!==0&&P.error({threadId:this.threadId,exitCode:c,lastStderr:this.lastStderr.slice(-3)},"abnormal exit"),this.proc=null,this.approvalRequests.clear(),this.toolContextByCallId.clear(),this.turnStartInFlight=!1,this.interruptRequestedDuringTurnStart=!1;for(let[,{reject:d}]of this.pending)d(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 l=b.startTimer("rpc.duration");await this.rpc("initialize",{clientInfo:{name:"@vibelet/cli",version:Pt},capabilities:{experimentalApi:!0}}),l(),this.rpcNotify("initialized",{});let u=yu(this.approvalMode,e);if(n){let c=await this.rpc("thread/resume",{threadId:n,approvalPolicy:u.approvalPolicy,sandbox:u.sandbox,persistExtendedHistory:!0});this.threadId=c?.thread?.id??n,P.info({threadId:this.threadId},"thread resumed"),T.emit("driver.init",{agent:"codex",sessionId:this.threadId})}else{let c=await this.rpc("thread/start",{cwd:e,approvalPolicy:u.approvalPolicy,sandbox:u.sandbox,experimentalRawEvents:!0,persistExtendedHistory:!0});this.threadId=c?.thread?.id??c?.threadId??"",P.info({threadId:this.threadId},"thread created"),T.emit("driver.init",{agent:"codex",sessionId:this.threadId})}return this.threadId}setModel(e){this.model=e}buildSpawnArgs(){let e=["app-server","--listen","stdio://"];return this.model&&e.push("-m",this.model),e}sendPrompt(e,n){let s=yu(this.approvalMode,this.cwd||process.cwd());this.latestTurnUsage=void 0,this.turnStartInFlight=!0,this.interruptRequestedDuringTurnStart=!1,P.info({threadId:this.threadId,promptPreview:e.slice(0,50)},"turn/start"),this.rpc("turn/start",{threadId:this.threadId,input:[{type:"text",text:e}],approvalPolicy:s.approvalPolicy,sandboxPolicy:s.sandboxPolicy,...n?{model:n}:{}}).then(r=>{P.debug({resultPreview:JSON.stringify(r).slice(0,200)},"turn/start result"),this.turnStartInFlight=!1,this.interruptRequestedDuringTurnStart&&(this.interruptRequestedDuringTurnStart=!1,this.requestTurnInterrupt())}).catch(r=>{this.turnStartInFlight=!1,this.interruptRequestedDuringTurnStart=!1,P.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 s=this.approvalRequests.get(e),r=s?.rpcId??Number(e);if(!Number.isFinite(r))return!1;let i;if(!s)i=n?{decision:"approve"}:{decision:"deny",reason:"User denied from Vibelet"};else{switch(s.kind){case"command-execution":case"file-change":i={decision:n?"accept":"decline"};break;case"request-user-input-approval":i={answers:{[s.questionId]:{answers:[n?s.approveLabel:s.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 P.info({threadId:this.threadId,rpcId:r,approved:n},"approval response"),this.proc.stdin.write(JSON.stringify({jsonrpc:"2.0",id:r,result:i})+`
90
+ `),!0}restorePendingApproval(e){let n=ly(e);n&&this.approvalRequests.set(e.requestId,n)}getRespondingLivenessHint(){return!this.proc||this.proc.exitCode!==null||this.proc.signalCode!==null||this.proc.killed?"dead":"alive"}interrupt(){this.turnStartInFlight&&(this.interruptRequestedDuringTurnStart=!0),this.requestTurnInterrupt()}setApprovalMode(e){this.approvalMode=e,P.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(),this.turnStartInFlight=!1,this.interruptRequestedDuringTurnStart=!1,this.latestTurnUsage=void 0;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 s=++this.rpcId,r=b.startTimer("rpc.duration");return new Promise((i,o)=>{if(this.pending.set(s,{resolve:a=>{r(),i(a)},reject:a=>{r(),o(a)}}),!this.proc?.stdin?.writable){this.pending.delete(s),r(),o(new Error("Process not available"));return}this.proc.stdin.write(JSON.stringify({jsonrpc:"2.0",method:e,id:s,params:n})+`
91
+ `),setTimeout(()=>{this.pending.has(s)&&(this.pending.delete(s),P.error({method:e,rpcId:s,threadId:this.threadId},"RPC timeout"),r(),o(new Error(`RPC timeout: ${e}`)))},3e4).unref()})}requestTurnInterrupt(){this.rpc("turn/interrupt",{threadId:this.threadId}).catch(()=>{})}rpcNotify(e,n){this.proc?.stdin?.writable&&this.proc.stdin.write(JSON.stringify({jsonrpc:"2.0",method:e,params:n})+`
92
92
  `)}writeServerRequestError(e,n){this.proc?.stdin?.writable&&this.proc.stdin.write(JSON.stringify({jsonrpc:"2.0",id:e,error:{code:-32601,message:n}})+`
93
- `)}resolveToolContext(e){let n=j(e?.item)??e??null,r=Ei(n);if(!r)return null;let s=n?pu(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?Mi(e,["threadId","turnId",...n]):{}}queueApprovalRequest(e,n,r){if(this.approvalRequests.set(e,n),I.emit("approval.request",{agent:"codex",sessionId:this.threadId,toolName:n.toolName}),!this.handler){E.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:ty(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"])},M(r?.reason)??M(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"])},M(r?.reason)??M(r?.description)??"");return}if(e==="item/tool/requestUserInput"){let o=r?.questions;if(!ay(o)){E.warn({threadId:this.threadId,rpcId:n},"unsupported requestUserInput request"),this.writeServerRequestError(n,"Unsupported interactive request from Codex");return}let a=oy(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"])},cy(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,[])},M(r?.reason)??M(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,[])},M(r?.reason)??M(r?.description)??"");return}if(e==="item/permissions/requestApproval"){E.warn({threadId:this.threadId,rpcId:n},"unsupported permissions approval request"),this.writeServerRequestError(n,"Unsupported permissions approval request");return}E.warn({threadId:this.threadId,rpcId:n,method:e},"unsupported server request"),this.writeServerRequestError(n,`Unsupported server request: ${e}`)}handleRaw(e){if(E.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=j(e.params);if(n&&e.id!=null){this.handleServerRequest(n,e.id,r??void 0);return}switch(n&&E.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||E.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=j(r?.item),i=Ei(s),o=s?pu(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=j(r?.item)??r,i=Ei(s),o=i?this.toolContextByCallId.get(i):null;if(i&&o?.toolName==="Patch"&&this.handler){let a=ly(o.input,this.cwd);if(a){let l=Te([a]);l&&this.handler({type:"tool.result",sessionId:this.threadId,toolCallId:i,output:l})}}i&&this.toolContextByCallId.delete(i);break}case"thread/tokenUsageUpdated":{let s=j(r?.tokenUsage);this.latestTurnUsage=hu(Pi(s?.last),Pi({...j(s?.last)??{},modelContextWindow:s?.modelContextWindow}));break}case"turn/aborted":{this.turnStartInFlight=!1,this.interruptRequestedDuringTurnStart=!1,this.latestTurnUsage=void 0;let s=M(r?.reason)??M(j(r?.turn)?.reason);E.info({threadId:this.threadId,reason:s},"turn interrupted"),I.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":{this.turnStartInFlight=!1,this.interruptRequestedDuringTurnStart=!1;let s=j(r?.turn),i=sy(s?.status),o=hu(this.latestTurnUsage,Pi(r?.usage));if(this.latestTurnUsage=void 0,i&&ry.has(i)){E.info({threadId:this.threadId,status:i},"turn interrupted"),I.emit("session.interrupted",{agent:"codex",sessionId:this.threadId,status:i,...o?{usage:o}:{}}),this.handler&&this.handler({type:"session.interrupted",sessionId:this.threadId});break}E.info({threadId:this.threadId,status:i??"completed"},"turn completed"),I.emit("session.done",{agent:"codex",sessionId:this.threadId,usage:o}),this.handler&&this.handler({type:"session.done",sessionId:this.threadId,usage:o});break}default:n&&E.debug({method:n},"unhandled notification");break}}};var N=require("fs/promises"),Xi=require("fs"),Qi=require("readline"),B=require("path"),ue=require("os");var uy=new Set(["New session","Resumed session","Untitled session"]),dy=["<environment_context>","<local-command-caveat>","<local-command-stdout>","<local-command-stderr>","<command-name>","<command-message>","<command-args>","# AGENTS.md instructions for "];function fy(t){return t.replace(/\s+/g," ").trim()}function kr(t){return typeof t!="string"?void 0:fy(t)||void 0}function _u(t){let e=kr(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=kr(t);return!e||uy.has(e)||_u(e)}function py(t){for(let e of t.replace(/\r/g,"").split(`
94
- `)){let n=kr(e);if(n&&!hy(n)&&!gy(n))return n}}function hy(t){return dy.some(e=>t.startsWith(e))}function gy(t){let e=t.replace(/^['"`]+/,"").replace(/['"`\\]+$/,"").trim();return!!(!e||/^(\/|~\/|\.\/|\.\.\/)/.test(e)||/^[A-Za-z]:\\/.test(e))}function my(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 Li(t,e=80){if(typeof t!="string")return;let n=py(t);if(!n)return;let r=my(n),i=(r>0?n.slice(0,r):n).replace(/[。!?;.!?;]+$/gu,"").trim();if(!(!i||_u(i)))return i.length<=e?i:`${i.slice(0,Math.max(1,e-3)).trimEnd()}...`}function tt(t,e){for(let n of t){let r=kr(n);if(!(!r||Pt(r)))return r}return Li(e)}var Iu=require("child_process"),Tu=require("util");var Au=(0,Tu.promisify)(Iu.execFile),ku=5e3,yy=2500,vy=3e3,Cu=8,Cr=new Map,Ni=new Map,bu=null;function Sy(t){let e=Cr.get(t);return e?Date.now()>e.expiresAt?(Cr.delete(t),null):e.value??void 0:null}function _y(t,e){if(e===void 0){Cr.delete(t);return}Cr.set(t,{value:e,expiresAt:Date.now()+ku})}async function by(t){if(!t)return;if(bu)return bu(t);let e=[["branch","--show-current"],["rev-parse","--abbrev-ref","HEAD"]];for(let n of e)try{let{stdout:r}=await Au("git",["-C",t,...n],{env:Qe(),timeout:yy,maxBuffer:65536}),s=r.trim();if(s&&s!=="HEAD")return s}catch{}}async function wy(t){let e=Sy(t);if(e!==null)return e;let n=Ni.get(t);if(n)return n;let r=by(t).then(s=>(_y(t,s),s)).finally(()=>{Ni.delete(t)});return Ni.set(t,r),r}async function xu(t,e,n){if(t.length===0)return;let r=Math.max(1,Math.min(e,t.length)),s=0;await Promise.all(Array.from({length:r},async()=>{for(;;){let i=s;if(s+=1,i>=t.length)return;await n(t[i])}}))}async function Ru(t){let e=[...new Set(t.filter(Boolean))],n=new Map;return await xu(e,Cu,async r=>{n.set(r,await wy(r))}),n}var Bi=new Map,Oi=new Map,wu=null;function Iy(t,e){if(e===void 0){Bi.delete(t);return}Bi.set(t,{value:e,expiresAt:Date.now()+ku})}async function Ty(t){if(t){if(wu)return wu(t);for(let e=0;e<2;e+=1)try{let{stdout:n}=await Au("git",["-C",t,"diff","HEAD","--shortstat"],{env:Qe(),timeout:vy,maxBuffer:65536}),r=n.trim();if(!r)return;let s=r.match(/(\d+) insertion/),i=r.match(/(\d+) deletion/),o=s?Number(s[1]):0,a=i?Number(i[1]):0;return o===0&&a===0?void 0:{additions:o,deletions:a}}catch{if(e===1)return}}}async function Ay(t){let e=Bi.get(t);if(e&&Date.now()<=e.expiresAt)return e.value;let n=Oi.get(t);if(n)return n;let r=Ty(t).then(s=>(Iy(t,s),s)).finally(()=>{Oi.delete(t)});return Oi.set(t,r),r}async function Eu(t){let e=[...new Set(t.filter(Boolean))],n=new Map;return await xu(e,Cu,async r=>{n.set(r,await Ay(r))}),n}var Mu=require("child_process"),Er=require("fs/promises"),nt=require("path"),Lu=require("os"),Nu=require("util");var ky=(0,Nu.promisify)(Mu.execFile),Rr=O.child({module:"process-scanner"}),Ou=5e3,Cy=1500,xy=/(^|[^A-Za-z0-9_.-])(claude|codex)([^A-Za-z0-9_.-]|$)/,Ry=500,Ey=15e3,In=null,wn=null;function Pr(){In=null}var Py=new Set(["sh","bash","zsh","fish"]),My=new Set(["env","nohup","timeout","gtimeout"]),Ly=new Set(["node","nodejs","bun","tsx"]),Ny=new Set(["-e","--eval","-p","--print"]),Oy=new Set(["-r","--require","--import","--loader","--experimental-loader","--env-file","--input-type"]);function By(t){return t.replace(/^['"]|['"]$/g,"")}function Bu(t){return(t.match(/"[^"]*"|'[^']*'|\S+/g)??[]).map(By)}function Pu(t){let e=(0,nt.basename)(t);return e==="claude"||e==="codex"?e:null}function Dy(t){for(let e of t.split(/&&|\|\||;|\n/)){let n=Du(Bu(e.trim()),!0);if(n)return n}return null}function Du(t,e=!1){let n=0;for(;n<t.length;){let r=t[n],s=(0,nt.basename)(r);if(My.has(s)){if(n+=1,s==="env")for(;n<t.length&&/^[A-Za-z_][A-Za-z0-9_]*=/.test(t[n]);)n+=1;else if(s==="timeout"||s==="gtimeout"){for(;n<t.length&&t[n].startsWith("-");){let o=t[n];n+=1,o==="-k"&&n<t.length&&(n+=1)}n<t.length&&(n+=1)}continue}if(Py.has(s)){for(let o=n+1;o<t.length;o+=1){let a=t[o];if(a==="-c"||a==="-lc"||a==="-ic"||a==="-xc"||a==="-ec"||a==="-xec"){let l=t[o+1];return l?Dy(l):null}}return null}if(Ly.has(s)){let o=n+1;for(;o<t.length;){let l=t[o];if(Ny.has(l))return null;if(l==="--"){o+=1;break}if(!l.startsWith("-"))break;o+=1,Oy.has(l)&&o<t.length&&(o+=1)}if(o>=t.length)return null;let a=Pu(t[o]);return a?{agent:a,args:t.slice(o+1),viaWrapper:!0}:null}let i=Pu(r);return i?{agent:i,args:t.slice(n+1),viaWrapper:e}:null}return null}function Di(t,e=!1){return Du(Bu(t),e)}function Mr(t){let e=Di(t);return e?{agent:e.agent,args:e.args}:null}function Fu(t){return xy.test(t)&&Di(t)!==null}function Fy(t,e){let n=Mr(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 Hy(t){if(t.includes("--dangerously-skip-permissions"))return"autoApprove";for(let e=0;e<t.length;e+=1){let n=t[e],r=t[e+1],s=n==="--permission-mode"?r:n.startsWith("--permission-mode=")?n.slice(18):void 0;if(s==="plan")return"plan";if(s==="acceptEdits")return"acceptEdits";if(s==="default")return"normal"}}function Uy(t){if(t.includes("--dangerously-bypass-approvals-and-sandbox"))return"autoApprove"}function Wy(t,e){let n=Mr(e);if(!(!n||n.agent!==t))return t==="claude"?Hy(n.args):Uy(n.args)}function xr(t){switch(t){case"high":return 3;case"medium":return 2;default:return 1}}function qy(t,e){return t==="claude"?e.includes("/.claude/projects/")&&!e.includes("/subagents/"):e.includes("/.codex/sessions/")}function Gy(t,e){let n=Di(e);return!n||n.agent!==t||n.viaWrapper?!1:t==="claude"?!n.args.includes("--continue")&&!n.args.includes("-c"):!(n.args[0]==="app-server"&&!n.args.includes("--listen")&&!n.args.some(r=>r.startsWith("--listen=")))}function jy(t){let e=[...new Set(t.sessionFiles)].filter(i=>qy(t.agent,i)),n=Fy(t.agent,t.command),r=Wy(t.agent,t.command);if(n)return{agent:t.agent,pid:t.pid,cwd:t.cwd,command:t.command,sessionId:n,confidence:"high",...r?{approvalMode:r}:{},...e.length===1?{sessionFilePath:e[0]}:{}};if(e.length!==1)return null;let s=Mt(t.agent,e[0]);return s?{agent:t.agent,pid:t.pid,cwd:t.cwd,command:t.command,sessionId:s,confidence:"medium",...r?{approvalMode:r}:{},sessionFilePath:e[0]}:null}function $y(t,e){let n=t,r=e;(xr(e.confidence)>xr(t.confidence)||xr(e.confidence)===xr(t.confidence)&&e.pid!==void 0&&t.pid!==void 0&&e.pid<t.pid)&&(n=e,r=t);let s=n.approvalMode??r.approvalMode;return{...n,cwd:n.cwd||r.cwd,...s?{approvalMode:s}:{},title:n.title??r.title,sessionFilePath:n.sessionFilePath??r.sessionFilePath,isResponding:n.isResponding??r.isResponding}}function Fi(t){let e=new Map;for(let n of t){let r=`${n.agent}:${n.sessionId}`,s=e.get(r);e.set(r,s?$y(s,n):n)}return[...e.values()]}function zy(t){try{return process.kill(t,0),!0}catch{return!1}}async function Lr(t,e,n=Cy){try{let{stdout:r}=await ky(t,e,{maxBuffer:8388608,timeout:n});return r}catch(r){let s=typeof r=="object"&&r!==null?{code:"code"in r?r.code:void 0,signal:"signal"in r?r.signal:void 0,killed:"killed"in r?r.killed:void 0}:{},i=String(r);return i.includes("ESRCH")||i.includes("No such process")?Rr.debug({file:t,args:e,timeoutMs:n,error:i,...s},"process scan command skipped \u2014 process exited"):Rr.warn({file:t,args:e,timeoutMs:n,error:i,...s},"process scan command failed"),""}}async function Vy(t){if(!t.sessionFilePath)return t;let e=await rt(t.sessionFilePath,t.agent);if(!e)return null;let n=await Ui(t.sessionFilePath,t.agent),r=e.approvalMode??t.approvalMode;return{...t,cwd:t.cwd||e.cwd,...r?{approvalMode:r}:{},title:t.title??e.title,isResponding:n.isResponding}}async function Yy(t){return process.platform==="win32"?"":(await Lr("lsof",["-a","-p",String(t),"-d","cwd","-Fn"])).split(`
95
- `).find(r=>r.startsWith("n"))?.slice(1).trim()??""}async function Jy(t){if(process.platform==="win32")return[];let n=(await Lr("lsof",["-p",String(t),"-Fn"])).split(`
96
- `).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)]}function Ky(t){return t.split(`
97
- `).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];if(!Fu(s))return null;let i=Mr(s);return!Number.isFinite(r)||!i?null:{pid:r,command:s,agent:i.agent}}).filter(e=>!!e)}async function Xy(){let t=await Lr("ps",["-axo","pid=,command="],Ou);return Ky(t)}async function Qy(){return(await Lr("wmic",["process","get","ProcessId,CommandLine","/FORMAT:CSV"],Ou)).split(`
98
- `).map(e=>e.trim()).filter(Boolean).map(e=>{let n=e.split(",");if(n.length<3)return null;let r=Number(n[n.length-1]),s=n.slice(1,n.length-1).join(",");if(!Number.isFinite(r)||r===0||!Fu(s))return null;let i=Mr(s);return i?{pid:r,command:s,agent:i.agent}:null}).filter(e=>!!e)}async function Zy(){return process.platform==="win32"?Qy():Xy()}async function ev(t){let e=_.startTimer("process.scan.pgrep_ms"),n=await Zy();t&&(t.pgrepMs+=e()),t&&(t.matchedProcesses=n.length);let r=n.filter(o=>zy(o.pid));t&&(t.aliveProcesses=r.length);let s=_.startTimer("process.scan.lsof_ms"),i=await Promise.all(r.map(async o=>({pid:o.pid,agent:o.agent,command:o.command,cwd:await Yy(o.pid),sessionFiles:await Jy(o.pid)})));return t&&(t.lsofMs+=s()),t&&(t.snapshots=i.length),i}function tv(t){return t.replace(/[^a-zA-Z0-9]/g,"-")}async function nv(t,e){if(!e)return null;try{if(t==="claude"){let n=(0,nt.join)((0,Lu.homedir)(),".claude","projects",tv(e)),s=(await(0,Er.readdir)(n).catch(()=>[])).filter(l=>l.endsWith(".jsonl"));if(s.length===0)return null;let i=null;if(await Promise.all(s.map(async l=>{let u=await(0,Er.stat)((0,nt.join)(n,l)).catch(()=>null);u&&(!i||u.mtimeMs>i.mtimeMs)&&(i={name:l,mtimeMs:u.mtimeMs})})),!i)return null;let o=(0,nt.join)(n,i.name),a=Mt(t,o);return a?{sessionId:a,filePath:o}:null}return Uu(e)}catch{return null}}async function rv(){let t={pgrepMs:0,lsofMs:0,fallbackMs:0,hydrateMs:0,totalMs:0,matchedProcesses:0,aliveProcesses:0,snapshots:0,directCandidates:0,fallbackLookups:0,fallbackHits:0,hydratedCandidates:0},e=_.startTimer("process.scan.total_ms"),n=await ev(t),r=[],s=[];for(let c of n){let d=jy(c);if(d){r.push(d);continue}Gy(c.agent,c.command)&&s.push(c)}t.directCandidates=r.length,t.fallbackLookups=s.length;let i=_.startTimer("process.scan.fallback_ms"),o=await Promise.all(s.map(async c=>{let d=await nv(c.agent,c.cwd);return d?{agent:c.agent,pid:c.pid,cwd:c.cwd,command:c.command,sessionId:d.sessionId,confidence:"low",sessionFilePath:d.filePath}:null}));t.fallbackMs=i(),t.fallbackHits=o.filter(c=>c!==null).length;let a=_.startTimer("process.scan.hydrate_ms"),l=await Promise.all([...r,...o.filter(c=>c!==null)].map(c=>Vy(c)));t.hydrateMs=a(),t.hydratedCandidates=l.filter(c=>c!==null).length;let u=Fi(l.filter(c=>c!==null));return t.totalMs=e(),(t.totalMs>=Ry||t.fallbackLookups>0)&&Rr.info({durationMs:t.totalMs,pgrepMs:t.pgrepMs,lsofMs:t.lsofMs,fallbackMs:t.fallbackMs,hydrateMs:t.hydrateMs,matchedProcesses:t.matchedProcesses,aliveProcesses:t.aliveProcesses,snapshots:t.snapshots,directCandidates:t.directCandidates,fallbackLookups:t.fallbackLookups,fallbackHits:t.fallbackHits,hydratedCandidates:t.hydratedCandidates,sessions:u.length},"process running sessions scanned"),In={value:u,expiresAt:Date.now()+Ey},u}async function Hi(){return In&&Date.now()<In.expiresAt?In.value:wn||(wn=rv().finally(()=>{wn=null}),wn)}async function Hu(t){try{return(await Hi()).some(n=>n.sessionId===t)}catch(e){return Rr.warn({sessionId:t,error:String(e)},"isSessionProcessAlive failed, treating as not alive"),!1}}var Gu=require("fs"),Fe=require("fs/promises"),qi=require("os"),An=require("path");var Tn=O.child({module:"activity-watcher"}),sv=12e4,iv=5e3,ov=6e4,Wu=5;function av(){return(0,An.join)((0,qi.homedir)(),".claude","projects")}function lv(){return(0,An.join)((0,qi.homedir)(),".codex","sessions")}async function qu(t){try{return await(0,Fe.realpath)(t)}catch{return t}}function Nr(t,e){return!(!t.endsWith(".jsonl")||e==="claude"&&t.includes("/subagents/"))}var Wi=class{entries=new Map;filePathIndex=new Map;metaInFlight=new Map;roots=new Map;watchers=[];pollTimers=[];rescanTimer=null;listeners=new Set;started=!1;async start(e){if(this.started)return;this.started=!0;let n=await qu(e?.claudeDir??av()),r=await qu(e?.codexDir??lv());if(this.roots.set(n,"claude"),this.roots.set(r,"codex"),await Promise.all([this.bootstrap("claude",n),this.bootstrap("codex",r)]),this.updateGauges(),e?.usePolling){let s=e.pollingIntervalMs??100;for(let[i,o]of this.roots){let a=setInterval(()=>{this.pollScan(o,i)},s);a.unref?.(),this.pollTimers.push(a)}}else for(let[s,i]of this.roots)this.startNativeWatch(s,i);this.rescanTimer=setInterval(()=>{this.safetyRescan().catch(s=>{Tn.warn({error:String(s)},"activity watcher rescan failed")})},ov),this.rescanTimer.unref?.(),Tn.info({seeded:this.entries.size},"activity watcher started")}async stop(){if(this.started){this.started=!1,this.rescanTimer&&(clearInterval(this.rescanTimer),this.rescanTimer=null);for(let e of this.pollTimers)clearInterval(e);this.pollTimers=[];for(let e of this.watchers)try{e.close()}catch{}this.watchers=[],this.entries.clear(),this.filePathIndex.clear(),this.metaInFlight.clear(),this.roots.clear(),this.listeners.clear(),this.updateGauges()}}startNativeWatch(e,n){try{let r=(0,Gu.watch)(e,{recursive:!0,persistent:!0},(s,i)=>{if(!i)return;let o=(0,An.join)(e,i.toString());Nr(o,n)&&this.resolveFsEvent(n,o)});r.on("error",s=>{Tn.warn({error:String(s),root:e},"activity watcher error")}),this.watchers.push(r)}catch(r){Tn.warn({error:String(r),root:e},"failed to start native recursive watch")}}async resolveFsEvent(e,n){let r=await(0,Fe.stat)(n).catch(()=>null);if(!r){this.handleUnlink(n);return}r.isFile()&&await this.handleFsChange(n,r.mtimeMs)}async pollScan(e,n){let r=await this.walkSessionFiles(n,Wu),s=new Set,i=!1;for(let{filePath:o,mtimeMs:a}of r){if(!Nr(o,e))continue;s.add(o);let l=this.filePathIndex.get(o);if(l){let c=this.entries.get(l);if(!c||a<=c.mtimeMs)continue}await this.ingestPath(e,o,Date.now(),a)&&(i=!0)}for(let[o]of this.filePathIndex)this.identifyAgent(o)===e&&(s.has(o)||(this.handleUnlink(o),i=!0));i&&(this.updateGauges(),this.notify())}identifyAgent(e){for(let[n,r]of this.roots)if(e===n||e.startsWith(`${n}/`))return r;return null}listActive(e=sv){let n=Date.now(),r=n-e,s=n-iv,i=[];for(let o of this.entries.values())o.lastActivityMs<r||i.push({...o,isResponding:o.lastActivityMs>=s});return i}onActivity(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async bootstrap(e,n){let r=await this.walkSessionFiles(n,Wu);await Promise.all(r.map(async({filePath:s,mtimeMs:i})=>{Nr(s,e)&&await this.ingestPath(e,s,i,i)}))}async walkSessionFiles(e,n){let r=[],s=async(i,o)=>{if(o>n)return;let a=await(0,Fe.readdir)(i,{withFileTypes:!0}).catch(()=>[]);await Promise.all(a.map(async l=>{let u=(0,An.join)(i,l.name);if(l.isDirectory()){await s(u,o+1);return}if(!l.isFile()||!l.name.endsWith(".jsonl"))return;let c=await(0,Fe.stat)(u).catch(()=>null);c&&r.push({filePath:u,mtimeMs:c.mtimeMs})}))};return await s(e,0),r}async handleFsChange(e,n){let r=this.identifyAgent(e);if(!r||!Nr(e,r))return;let s=Date.now(),i=n??s;await this.ingestPath(r,e,s,i)&&(this.updateGauges(),this.notify())}handleUnlink(e){let n=this.filePathIndex.get(e);n&&(this.filePathIndex.delete(e),this.entries.delete(n),this.updateGauges(),this.notify())}async ingestPath(e,n,r,s){let i=this.filePathIndex.get(n);if(i)return this.touchEntry(i,r,s);let o=`${e}:${n}`,a=this.metaInFlight.get(o);return a||(a=(async()=>{try{let l=await rt(n,e);if(!l)return;let u=`${e}:${l.sessionId}`,c=this.entries.get(u);if(c){c.lastActivityMs=Math.max(c.lastActivityMs,r),c.mtimeMs=Math.max(c.mtimeMs,s),c.filePath!==n&&(this.filePathIndex.delete(c.filePath),c.filePath=n),this.filePathIndex.set(n,u);return}this.entries.set(u,{agent:e,sessionId:l.sessionId,cwd:l.cwd,title:l.title,filePath:n,lastActivityMs:r,mtimeMs:s}),this.filePathIndex.set(n,u)}finally{this.metaInFlight.delete(o)}})(),this.metaInFlight.set(o,a)),await a,this.filePathIndex.has(n)}touchEntry(e,n,r){let s=this.entries.get(e);if(!s)return!1;let i=Math.max(s.lastActivityMs,n),o=Math.max(s.mtimeMs,r);return i===s.lastActivityMs&&o===s.mtimeMs?!1:(s.lastActivityMs=i,s.mtimeMs=o,!0)}async safetyRescan(){if(this.entries.size===0)return;let e=[];for(let[r,s]of this.entries)e.push((async()=>{let i=await(0,Fe.stat)(s.filePath).catch(()=>null);return i?i.mtimeMs>s.mtimeMs?this.touchEntry(r,i.mtimeMs,i.mtimeMs):!1:(this.filePathIndex.delete(s.filePath),this.entries.delete(r),!0)})());(await Promise.all(e)).some(Boolean)&&(this.updateGauges(),this.notify())}notify(){for(let e of this.listeners)try{e()}catch(n){Tn.warn({error:String(n)},"activity listener failed")}}updateGauges(){_.gauge("session.activity_watcher.entries",this.entries.size)}__injectEntryForTests(e){let n=`${e.agent}:${e.sessionId}`;this.entries.set(n,{...e}),this.filePathIndex.set(e.filePath,n),this.updateGauges(),this.notify()}__resetForTests(){this.started=!1,this.rescanTimer&&(clearInterval(this.rescanTimer),this.rescanTimer=null);for(let e of this.pollTimers)clearInterval(e);this.pollTimers=[],this.watchers=[],this.entries.clear(),this.filePathIndex.clear(),this.metaInFlight.clear(),this.roots.clear(),this.listeners.clear(),this.updateGauges()}},Lt=new Wi;var st=O.child({module:"inventory"}),Yu=6e3,cv=1e4;function uv(t){return{agent:t.agent,cwd:t.cwd,sessionId:t.sessionId,confidence:"high",sessionFilePath:t.filePath,title:t.title,isResponding:t.isResponding}}async function dv(){return Lt.listActive().map(uv)}var Ju={listScannedSessions:Rn,listWatcherSessions:dv,scanRunningSessions:Hi,searchSessionContent:nd},ce=fv(),Cn=null,Or=0,Dr=0,Br=0,Gi=0,ji=new Set;function fv(){return{scannedSessions:[],runningSessions:[],scannedAt:"",refreshedAt:0}}function pv(t){return JSON.stringify({sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,model:t.model,branch:t.branch,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:[...t.sources].sort(),runtime:{state:t.runtime.state,confidence:t.runtime.confidence,resumeMode:t.runtime.resumeMode,pid:t.runtime.pid,command:t.runtime.command,isResponding:t.runtime.isResponding,needsAttention:t.runtime.needsAttention},managed:t.managed,approvalMode:t.approvalMode,observedApprovalMode:t.observedApprovalMode,lastUsage:t.lastUsage,interruptReason:t.interruptReason,stallWarning:t.stallWarning})}function hv(t){return JSON.stringify({sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,title:t.title,pid:t.pid,command:t.command,confidence:t.confidence,isResponding:t.isResponding,approvalMode:t.approvalMode})}function ju(t){return JSON.stringify({scannedSessions:t.scannedSessions.map(pv).sort(),runningSessions:t.runningSessions.map(hv).sort()})}function gv(){for(let t of ji)try{t()}catch(e){st.warn({error:String(e)},"session inventory backfill listener failed")}}function kn(){_.gauge("session.inventory.external_cached_sessions",ce.scannedSessions.length),_.gauge("session.inventory.external_running_sessions",ce.runningSessions.length),_.gauge("session.inventory.backfill_inflight",Cn?1:0)}function Ku(t){return ji.add(t),()=>{ji.delete(t)}}function Xu(){return{cachedSessions:ce.scannedSessions.length,runningSessions:ce.runningSessions.length,cacheAgeMs:ce.refreshedAt?Math.max(0,Date.now()-ce.refreshedAt):void 0,backfillInFlight:!!Cn,lastBackfillDurationMs:Br||void 0,lastBackfillCompletedAt:Dr?new Date(Dr).toISOString():void 0,lastBackfillAppliedAt:Gi?new Date(Gi).toISOString():void 0}}kn();function Qu(){return Lt.onActivity(()=>{td(Ju,Yu)})}var Nt={daemonActive:3,externalRunning:2,idle:1},$u={high:3,medium:2,low:1};function Zu(t,e){return e.lastActivityAt.localeCompare(t.lastActivityAt)||t.sessionId.localeCompare(e.sessionId)}function mv(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||Nt[e.runtime.state]-Nt[t.runtime.state]||Zu(t,e)}function yv(t,e){return Nt[e.state]>Nt[t.state]?e:Nt[e.state]<Nt[t.state]?t:$u[e.confidence]>$u[t.confidence]?e:t}function vv(t,e){return t?e?t.localeCompare(e)<=0?t:e:t:e}function Sv(t,e){return t?e?t.localeCompare(e)>=0?t:e:t:e}function _v(t,e){return e?t?!(Pt(e)&&!Pt(t)):!0:!1}function $i(t="high",e="resumeSession"){return{state:"idle",confidence:t,resumeMode:e}}function bv(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,model:t.model,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:["record"],runtime:{...$i(),...t.interruptReason||t.stallWarning?{needsAttention:!0}:{}},managed:t.managed,approvalMode:t.approvalMode,lastUsage:t.lastUsage,...t.interruptReason?{interruptReason:t.interruptReason}:{},...t.stallWarning?{stallWarning:t.stallWarning}:{}}}function wv(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",...t.pid!==void 0?{pid:t.pid}:{},...t.command!==void 0?{command:t.command}:{},isResponding:t.isResponding},observedApprovalMode:t.approvalMode}}function Iv(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,model:t.model,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:["daemon"],runtime:{state:"daemonActive",confidence:"high",resumeMode:"reuseDriver",needsAttention:t.needsAttention||!!t.interruptReason||!!t.stallWarning||void 0,isResponding:t.isResponding||void 0},managed:t.managed,approvalMode:t.approvalMode,lastUsage:t.lastUsage,...t.interruptReason?{interruptReason:t.interruptReason}:{},...t.stallWarning?{stallWarning:t.stallWarning}:{}}}function Tv(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=_v(s.title,n.title)?n.title:s.title,o=n.cwd||s.cwd,a=n.branch??s.branch,l=yv(s.runtime,n.runtime),u=s.sources.slice();for(let h of n.sources)u.includes(h)||u.push(h);let c=n.sources.includes("process"),d=s.sources.includes("process")&&!s.sources.includes("daemon"),p=c?s.lastActivityAt:d?n.lastActivityAt:Sv(s.lastActivityAt,n.lastActivityAt);t.set(r,{...s,cwd:o,model:n.model??s.model,branch:a,title:i,createdAt:vv(s.createdAt,n.createdAt),lastActivityAt:p,sources:u,runtime:l,managed:s.managed||n.managed,approvalMode:n.approvalMode??s.approvalMode,observedApprovalMode:n.observedApprovalMode??s.observedApprovalMode,lastUsage:n.lastUsage??s.lastUsage,interruptReason:n.interruptReason??s.interruptReason,stallWarning:n.stallWarning??s.stallWarning})}}function Av(...t){let e=new Map;for(let n of t)Tv(e,n);return[...e.values()]}function kv(t,e,n,r,s,i){let o=r?.toLowerCase(),a=t.filter(l=>{if(e&&l.agent!==e||n&&l.cwd!==n)return!1;if(o){let u=(l.title??"").toLowerCase(),c=(l.cwd??"").toLowerCase(),d=i?.[l.sessionId]?.toLowerCase()??"",p=u.includes(o)||c.includes(o)||(d?d.includes(o):!1),h=s?.has(l.sessionId)??!1;if(!p&&!h)return!1}return!0});return r&&st.info({total:t.length,filtered:a.length,search:r,contentMatchIds:s?.size??0},"filter applied"),a}function Cv(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 zu(t,e,n,r,s,i,o,a){let l=i?1/0:Math.max(1,e||50),u=Av(t.sessionRecords.map(bv),t.scannedSessions,t.runningSessions.map(T=>wv(T,t.scannedAt)),t.activeSessions.map(Iv)),c=t.deletedSessionIds?.size?u.filter(T=>!t.deletedSessionIds?.has(T.sessionId)):u,d=kv(c,r,s,i,o,a),p=d.filter(T=>T.runtime.state!=="idle"||T.managed).sort(mv),h=d.filter(T=>T.runtime.state==="idle"&&!T.managed).sort(Zu),g=Cv(h,n),f=h.slice(g,g+l),y=g+f.length<h.length&&f.length>0?{lastActivityAt:f[f.length-1].lastActivityAt,sessionId:f[f.length-1].sessionId}:void 0;return{sessions:n?f:[...p,...f],nextCursor:y}}async function Vu(t){if(t.sessions.length===0)return t;let e=t.sessions.map(o=>o.cwd),[n,r]=await Promise.all([Ru(e),Eu(e)]),s=!1,i=t.sessions.map(o=>{let a=n.get(o.cwd),l=r.get(o.cwd);return o.branch===a&&o.diffStat===l?o:(s=!0,{...o,branch:a,diffStat:l})});return s?{...t,sessions:i}:t}function xn(t,e,n,r,s){return new Promise(i=>{let o=Date.now(),a=!1,l=null,u=c=>{a||(a=!0,l&&(clearTimeout(l),l=null),i(c))};l=setTimeout(()=>{if(a)return;let c=Array.isArray(s)&&s.length>0;st.warn({source:t,timeoutMs:r,durationMs:Date.now()-o,partial:c?s.length:0},c?"session inventory source timed out, using partial results":"session inventory source timed out, using fallback"),u(c?s:n)},r),typeof l=="object"&&"unref"in l&&l.unref(),e().then(c=>{u(c)}).catch(c=>{a||st.warn({source:t,error:String(c)},"session inventory source failed, using fallback"),u(n)})})}function xv(t=Date.now()){return ce.refreshedAt===0||t-ce.refreshedAt>=cv}async function ed(t,e){let[n,r]=await Promise.all([xn("watcher.running_sessions",()=>t.listWatcherSessions(),[],e),xn("process.running_sessions",()=>t.scanRunningSessions(),[],e)]);return Fi([...n,...r])}async function Rv(t,e){let n=new Date().toISOString(),r=[],[s,i]=await Promise.all([xn("scanner.sessions",()=>t.listScannedSessions(void 0,void 0,r),[],e,r),ed(t,e)]);return{scannedSessions:s,runningSessions:i,scannedAt:n,refreshedAt:Date.now()}}function td(t,e){if(Cn)return;let n=Or,r=_.startTimer("session.inventory.backfill_latency_ms");Cn=Rv(t,e).then(s=>{if(n!==Or)return;let i=ju(ce);ce=s;let o=ju(s),a=r();Br=a,Dr=Date.now(),kn(),i!==o&&(Gi=Date.now(),_.increment("session.inventory.backfill_applied"),st.info({durationMs:a,scanned:s.scannedSessions.length,running:s.runningSessions.length},"session inventory external backfill applied"),gv())}).catch(s=>{n===Or&&(Br=r(),Dr=Date.now(),kn(),st.warn({error:String(s),durationMs:Br},"session inventory external backfill failed"))}).finally(()=>{n===Or&&(Cn=null,kn())}),kn()}async function Fr(t){let e={...Ju,...t.loaders??{}},n=Math.max(250,t.sourceTimeoutMs??Yu);if(!t.search){let c=_.startTimer("session.inventory.fast_path_latency_ms");xv()&&td(e,n);let d=ce,p=zu({activeSessions:t.activeSessions,sessionRecords:t.sessionRecords,scannedSessions:d.scannedSessions,runningSessions:d.runningSessions,scannedAt:d.scannedAt||new Date().toISOString(),deletedSessionIds:t.deletedSessionIds},t.limit,t.cursor,t.agent,t.cwd,void 0,void 0,t.customTitles);if(t.skipGitMetadata)return c(),p;let h=await Vu(p);return c(),h}let r=[],s=new Date().toISOString(),i=t.search,[o,a,l]=await Promise.all([xn("scanner.sessions",()=>e.listScannedSessions(t.agent,t.cwd,r),[],n,r),ed(e,n),xn("scanner.search_content",()=>e.searchSessionContent(i,t.agent),void 0,n)]);st.info({search:t.search,contentMatches:l?.size??0,scanned:o.length,records:t.sessionRecords.length,active:t.activeSessions.length},"search results");let u=zu({activeSessions:t.activeSessions,sessionRecords:t.sessionRecords,scannedSessions:o,runningSessions:a,scannedAt:s,deletedSessionIds:t.deletedSessionIds},t.limit,t.cursor,t.agent,t.cwd,i,l,t.customTitles);return t.skipGitMetadata?u:Vu(u)}var Ae=O.child({module:"scanner"});function Zi(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 eo=3e4,Ji=Zi(eo),Ki=Zi(eo),Ur=Zi(eo),zi=new Map,Vi=new Map,Hr=null,it=24;function Gr(){Ji.clear(),Ki.clear(),Ur.clear()}function ud(t){return t.replace(/[^a-zA-Z0-9]/g,"-")}async function ot(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}async function dd(){let t=(0,B.join)((0,ue.homedir)(),".codex","sessions"),e=await(0,N.readdir)(t).catch(()=>[]),n=[];for(let s of e){let i=(0,B.join)(t,s),o=await(0,N.readdir)(i).catch(()=>[]);for(let a of o){let l=(0,B.join)(i,a),u=await(0,N.readdir)(l).catch(()=>[]);for(let c of u){let d=(0,B.join)(l,c),p=await(0,N.readdir)(d).catch(()=>[]);for(let h of p)h.endsWith(".jsonl")&&n.push((0,B.join)(d,h))}}}let r=await ot(n,it,async s=>{let i=await(0,N.stat)(s).catch(()=>null);return{path:s,mtimeMs:i?.mtimeMs??0}});return r.sort((s,i)=>i.mtimeMs-s.mtimeMs),r}function Ev(t){let e=`codex-latest:${(0,ue.homedir)()}`,n=new Map;for(let r of t)n.has(r.cwd)||n.set(r.cwd,r.match);Ur.set(e,n)}function*fd(t,e){let n=0,r=0;for(;n<t.length&&r<e;){let s=t.indexOf(`
99
- `,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 Yi=512*1024,rd=256*1024;async function pd(t,e){if(e<=Yi)return(0,N.readFile)(t,"utf-8");let n=await(0,N.open)(t,"r");try{let r=Buffer.alloc(Yi),{bytesRead:s}=await n.read(r,0,Yi,0);return r.toString("utf-8",0,s)}finally{await n.close()}}async function hd(t,e){if(e<=rd)return(0,N.readFile)(t,"utf-8");let n=await(0,N.open)(t,"r");try{let r=Math.max(0,e-rd),s=Buffer.alloc(e-r),{bytesRead:i}=await n.read(s,0,s.length,r);return s.toString("utf-8",0,i)}finally{await n.close()}}function sd(t){switch(t){case"plan":return"plan";case"acceptEdits":return"acceptEdits";case"bypassPermissions":return"autoApprove";case"default":return"normal";default:return}}function Pv(t){let e=typeof t?.approval_policy=="string"?t.approval_policy:"",n=t?.sandbox_policy,r=typeof n?.type=="string"?n.type:"",s=Array.isArray(n?.writable_roots)?n.writable_roots:null;if(e==="never"&&r==="danger-full-access")return"autoApprove";if(e==="on-request"&&r==="workspace-write")return s?.length?"normal":"plan"}function gd(t){return t?.type==="permission-mode"?sd(t.permissionMode):sd(t?.permissionMode)}function Mv(t){if(t?.type==="turn_context")return Pv(t.payload)}async function Lv(t,e,n){let r,s=await hd(t,n);for(let i of s.split(`
100
- `)){if(!i.trim())continue;let o;try{o=JSON.parse(i)}catch{continue}let a=e==="claude"?gd(o):Mv(o);a&&(r=a)}return r}function id(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n=Number(e.input_tokens??e.inputTokens),r=Number(e.output_tokens??e.outputTokens);if(!Number.isFinite(n)||!Number.isFinite(r))return;let s=Number(e.cache_creation_input_tokens??e.cacheCreationInputTokens),i=Number(e.cache_read_input_tokens??e.cacheReadInputTokens);return{inputTokens:n,outputTokens:r,...Number.isFinite(s)?{cacheCreationInputTokens:s}:{},...Number.isFinite(i)?{cacheReadInputTokens:i}:{}}}function Nv(t){return t?.type==="assistant"?id(t.message?.usage??t.usage):id(t?.toolUseResult?.usage)}async function md(t,e){let n,r,s=await hd(t,e);for(let i of s.split(`
101
- `)){if(!i.trim())continue;let o;try{o=JSON.parse(i)}catch{continue}let a=gd(o);a&&(n=a);let l=Nv(o);l&&(r=l)}return{approvalMode:n,lastUsage:r}}function to(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 yd(t){return t?.type==="response_item"&&t.payload?.type==="message"&&t.payload.role==="user"?to(t.payload.content):t?.type==="event_msg"&&t.payload?.type==="user_message"&&typeof t.payload.message=="string"?t.payload.message:""}function jr(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 Ov=["<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 Bv(t,e){if(t?.isMeta===!0)return!0;let n=e.trim();return n?Ov.some(r=>n.startsWith(r)):!1}function $r(t){if(t?.type!=="user"||t.message?.role!=="user")return"";let e=jr(t.message.content);return Bv(t,e)?"":e}function Dv(t){return Array.isArray(t)&&t.some(e=>e&&typeof e=="object"&&e.type==="tool_result")}function Fv(t){return Array.isArray(t)?t.map(e=>{if(!e||typeof e!="object"||e.type!=="tool_result")return"";let n=e.content;return typeof n=="string"?n:Array.isArray(n)?n.map(r=>!r||typeof r!="object"?"":typeof r.text=="string"?r.text:typeof r.content=="string"?r.content:"").filter(Boolean).join(`
93
+ `)}resolveToolContext(e){let n=$(e?.item)??e??null,s=Li(n);if(!s)return null;let r=n?mu(n):null;if(r)return this.toolContextByCallId.set(s,r),{callId:s,toolContext:r};let i=this.toolContextByCallId.get(s);return i?{callId:s,toolContext:i}:null}createFallbackInput(e,n){return e?Ni(e,["threadId","turnId",...n]):{}}queueApprovalRequest(e,n,s){if(this.approvalRequests.set(e,n),T.emit("approval.request",{agent:"codex",sessionId:this.threadId,toolName:n.toolName}),!this.handler){P.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:s,approvalContext:ay(n)})}handleServerRequest(e,n,s){let r=String(n),i=this.resolveToolContext(s);if(e==="item/commandExecution/requestApproval"){this.queueApprovalRequest(r,{kind:"command-execution",responseKind:"v2",rpcId:n,toolName:i?.toolContext.toolName??"Bash",input:i?.toolContext.input??this.createFallbackInput(s,["itemId","reason","description"])},M(s?.reason)??M(s?.description)??"");return}if(e==="item/fileChange/requestApproval"){this.queueApprovalRequest(r,{kind:"file-change",responseKind:"v2",rpcId:n,toolName:i?.toolContext.toolName??"Patch",input:i?.toolContext.input??this.createFallbackInput(s,["itemId","reason","description"])},M(s?.reason)??M(s?.description)??"");return}if(e==="item/tool/requestUserInput"){let o=s?.questions;if(!py(o)){P.warn({threadId:this.threadId,rpcId:n},"unsupported requestUserInput request"),this.writeServerRequestError(n,"Unsupported interactive request from Codex");return}let a=fy(o);if(!a){this.writeServerRequestError(n,"Malformed requestUserInput approval request");return}this.queueApprovalRequest(r,{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(s,["itemId","questions"])},gy(o));return}if(e==="execCommandApproval"){this.queueApprovalRequest(r,{kind:"exec-command-legacy",rpcId:n,toolName:i?.toolContext.toolName??"Bash",input:i?.toolContext.input??this.createFallbackInput(s,[])},M(s?.reason)??M(s?.description)??"");return}if(e==="applyPatchApproval"){this.queueApprovalRequest(r,{kind:"apply-patch-legacy",rpcId:n,toolName:i?.toolContext.toolName??"Patch",input:i?.toolContext.input??this.createFallbackInput(s,[])},M(s?.reason)??M(s?.description)??"");return}if(e==="item/permissions/requestApproval"){P.warn({threadId:this.threadId,rpcId:n},"unsupported permissions approval request"),this.writeServerRequestError(n,"Unsupported permissions approval request");return}P.warn({threadId:this.threadId,rpcId:n,method:e},"unsupported server request"),this.writeServerRequestError(n,`Unsupported server request: ${e}`)}handleRaw(e){if(P.debug({method:e.method??"(response)",rpcId:e.id??"-"},"handleRaw"),e.id!=null&&!e.method&&this.pending.has(e.id)){let r=this.pending.get(e.id);this.pending.delete(e.id),e.error?r.reject(new Error(e.error.message??"RPC error")):r.resolve(e.result);return}let n=typeof e.method=="string"?e.method:void 0,s=$(e.params);if(n&&e.id!=null){this.handleServerRequest(n,e.id,s??void 0);return}switch(n&&P.debug({method:n,paramsPreview:JSON.stringify(s??{}).slice(0,300)},"notification"),n){case"item/agentMessage/delta":{let r=s?.text??s?.delta??s?.content??"";r&&this.handler?this.handler({type:"text.delta",sessionId:this.threadId,content:r}):r||P.debug({paramsKeys:Object.keys(s??{})},"agentMessage/delta with empty text");break}case"item/commandExecution/outputDelta":s?.output&&this.handler&&this.handler({type:"tool.result",sessionId:this.threadId,toolCallId:s.itemId??"",output:String(s.output)});break;case"item/started":{let r=$(s?.item),i=Li(r),o=r?mu(r):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 r=$(s?.item)??s,i=Li(r),o=i?this.toolContextByCallId.get(i):null;if(i&&o?.toolName==="Patch"&&this.handler){let a=hy(o.input,this.cwd);if(a){let l=Te([a]);l&&this.handler({type:"tool.result",sessionId:this.threadId,toolCallId:i,output:l})}}i&&this.toolContextByCallId.delete(i);break}case"thread/tokenUsage/updated":{let r=$(s?.tokenUsage),i=$(r?.last);if(!i)break;this.latestTurnUsage=my({...i,modelContextWindow:r?.modelContextWindow});break}case"turn/aborted":{this.turnStartInFlight=!1,this.interruptRequestedDuringTurnStart=!1,this.latestTurnUsage=void 0;let r=M(s?.reason)??M($(s?.turn)?.reason);P.info({threadId:this.threadId,reason:r},"turn interrupted"),T.emit("session.interrupted",{agent:"codex",sessionId:this.threadId,...r?{reason:r}:{}}),this.handler&&this.handler({type:"session.interrupted",sessionId:this.threadId});break}case"turn/completed":{this.turnStartInFlight=!1,this.interruptRequestedDuringTurnStart=!1;let r=$(s?.turn),i=uy(r?.status),o=this.latestTurnUsage;if(this.latestTurnUsage=void 0,i&&cy.has(i)){P.info({threadId:this.threadId,status:i},"turn interrupted"),T.emit("session.interrupted",{agent:"codex",sessionId:this.threadId,status:i,...o?{usage:o}:{}}),this.handler&&this.handler({type:"session.interrupted",sessionId:this.threadId});break}P.info({threadId:this.threadId,status:i??"completed"},"turn completed"),T.emit("session.done",{agent:"codex",sessionId:this.threadId,usage:o}),this.handler&&this.handler({type:"session.done",sessionId:this.threadId,usage:o});break}default:n&&P.debug({method:n},"unhandled notification");break}}};var Iu=require("crypto"),wu=["Received. This is the hosted Vibelet review demo environment.","The app is connected to a public review backend and can send and receive assistant messages.","For review purposes, this backend returns deterministic demo responses without requiring a local computer on the same Wi-Fi network."].join(" ");function yy(t){let e=t.replace(/\s+/g," ").trim();return e?e.length>120?`${e.slice(0,117)}...`:e:""}var Rs=class{sessionId="";messageHandler=null;exitHandler=null;pendingTimer=null;responding=!1;stopped=!1;async start(e,n){return this.stopped=!1,this.sessionId=n||`review-${(0,Iu.randomUUID)()}`,this.sessionId}sendPrompt(e){if(this.stopped||!this.sessionId)return;this.clearPendingTimer(),this.responding=!0;let n=yy(e),s=n?`${wu}
94
+
95
+ Your message was received: "${n}"`:wu;this.pendingTimer=setTimeout(()=>{this.pendingTimer=null,!(this.stopped||!this.sessionId)&&(this.emit({type:"text.delta",sessionId:this.sessionId,content:s}),this.responding=!1,this.emit({type:"session.done",sessionId:this.sessionId,usage:{inputTokens:Math.max(1,Math.ceil(e.length/4)),outputTokens:Math.max(1,Math.ceil(s.length/4))}}))},25)}respondApproval(){return!1}getRespondingLivenessHint(){return this.responding?"alive":"unknown"}interrupt(){!this.responding||!this.sessionId||(this.clearPendingTimer(),this.responding=!1,this.emit({type:"session.interrupted",sessionId:this.sessionId}))}stop(){this.clearPendingTimer(),this.responding=!1,this.stopped=!0,this.exitHandler?.(0)}setApprovalMode(){}onMessage(e){this.messageHandler=e}onExit(e){this.exitHandler=e}emit(e){this.messageHandler?.(e)}clearPendingTimer(){this.pendingTimer&&(clearTimeout(this.pendingTimer),this.pendingTimer=null)}};var O=require("fs/promises"),Zi=require("fs"),eo=require("readline"),F=require("path"),ye=require("os");var vy=new Set(["New session","Resumed session","Untitled session"]),Sy=["<environment_context>","<local-command-caveat>","<local-command-stdout>","<local-command-stderr>","<command-name>","<command-message>","<command-args>","# AGENTS.md instructions for "];function _y(t){return t.replace(/\s+/g," ").trim()}function Es(t){return typeof t!="string"?void 0:_y(t)||void 0}function Tu(t){let e=Es(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 Mt(t){let e=Es(t);return!e||vy.has(e)||Tu(e)}function by(t){for(let e of t.replace(/\r/g,"").split(`
96
+ `)){let n=Es(e);if(n&&!wy(n)&&!Iy(n))return n}}function wy(t){return Sy.some(e=>t.startsWith(e))}function Iy(t){let e=t.replace(/^['"`]+/,"").replace(/['"`\\]+$/,"").trim();return!!(!e||/^(\/|~\/|\.\/|\.\.\/)/.test(e)||/^[A-Za-z]:\\/.test(e))}function Ty(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 s=t[e+1];if(!s||/\s/.test(s))return e+1}}return-1}function Oi(t,e=80){if(typeof t!="string")return;let n=by(t);if(!n)return;let s=Ty(n),i=(s>0?n.slice(0,s):n).replace(/[。!?;.!?;]+$/gu,"").trim();if(!(!i||Tu(i)))return i.length<=e?i:`${i.slice(0,Math.max(1,e-3)).trimEnd()}...`}function nt(t,e){for(let n of t){let s=Es(n);if(!(!s||Mt(s)))return s}return Oi(e)}var Cu=require("child_process"),xu=require("util");var Ru=(0,xu.promisify)(Cu.execFile),Eu=5e3,Ay=2500,ky=3e3,Pu=8,Ps=new Map,Bi=new Map,Au=null;function Cy(t){let e=Ps.get(t);return e?Date.now()>e.expiresAt?(Ps.delete(t),null):e.value??void 0:null}function xy(t,e){if(e===void 0){Ps.delete(t);return}Ps.set(t,{value:e,expiresAt:Date.now()+Eu})}async function Ry(t){if(!t)return;if(Au)return Au(t);let e=[["branch","--show-current"],["rev-parse","--abbrev-ref","HEAD"]];for(let n of e)try{let{stdout:s}=await Ru("git",["-C",t,...n],{env:Ze(),timeout:Ay,maxBuffer:65536}),r=s.trim();if(r&&r!=="HEAD")return r}catch{}}async function Ey(t){let e=Cy(t);if(e!==null)return e;let n=Bi.get(t);if(n)return n;let s=Ry(t).then(r=>(xy(t,r),r)).finally(()=>{Bi.delete(t)});return Bi.set(t,s),s}async function Mu(t,e,n){if(t.length===0)return;let s=Math.max(1,Math.min(e,t.length)),r=0;await Promise.all(Array.from({length:s},async()=>{for(;;){let i=r;if(r+=1,i>=t.length)return;await n(t[i])}}))}async function Lu(t){let e=[...new Set(t.filter(Boolean))],n=new Map;return await Mu(e,Pu,async s=>{n.set(s,await Ey(s))}),n}var Fi=new Map,Di=new Map,ku=null;function Py(t,e){if(e===void 0){Fi.delete(t);return}Fi.set(t,{value:e,expiresAt:Date.now()+Eu})}async function My(t){if(t){if(ku)return ku(t);for(let e=0;e<2;e+=1)try{let{stdout:n}=await Ru("git",["-C",t,"diff","HEAD","--shortstat"],{env:Ze(),timeout:ky,maxBuffer:65536}),s=n.trim();if(!s)return;let r=s.match(/(\d+) insertion/),i=s.match(/(\d+) deletion/),o=r?Number(r[1]):0,a=i?Number(i[1]):0;return o===0&&a===0?void 0:{additions:o,deletions:a}}catch{if(e===1)return}}}async function Ly(t){let e=Fi.get(t);if(e&&Date.now()<=e.expiresAt)return e.value;let n=Di.get(t);if(n)return n;let s=My(t).then(r=>(Py(t,r),r)).finally(()=>{Di.delete(t)});return Di.set(t,s),s}async function Nu(t){let e=[...new Set(t.filter(Boolean))],n=new Map;return await Mu(e,Pu,async s=>{n.set(s,await Ly(s))}),n}var Bu=require("child_process"),Ns=require("fs/promises"),st=require("path"),Du=require("os"),Fu=require("util");var Ny=(0,Fu.promisify)(Bu.execFile),Ls=N.child({module:"process-scanner"}),Hu=5e3,Oy=1500,By=/(^|[^A-Za-z0-9_.-])(claude|codex)([^A-Za-z0-9_.-]|$)/,Dy=500,Fy=15e3,An=null,Tn=null;function Os(){An=null}var Hy=new Set(["sh","bash","zsh","fish"]),Uy=new Set(["env","nohup","timeout","gtimeout"]),Wy=new Set(["node","nodejs","bun","tsx"]),qy=new Set(["-e","--eval","-p","--print"]),Gy=new Set(["-r","--require","--import","--loader","--experimental-loader","--env-file","--input-type"]);function jy(t){return t.replace(/^['"]|['"]$/g,"")}function Uu(t){return(t.match(/"[^"]*"|'[^']*'|\S+/g)??[]).map(jy)}function Ou(t){let e=(0,st.basename)(t);return e==="claude"||e==="codex"?e:null}function $y(t){for(let e of t.split(/&&|\|\||;|\n/)){let n=Wu(Uu(e.trim()),!0);if(n)return n}return null}function Wu(t,e=!1){let n=0;for(;n<t.length;){let s=t[n],r=(0,st.basename)(s);if(Uy.has(r)){if(n+=1,r==="env")for(;n<t.length&&/^[A-Za-z_][A-Za-z0-9_]*=/.test(t[n]);)n+=1;else if(r==="timeout"||r==="gtimeout"){for(;n<t.length&&t[n].startsWith("-");){let o=t[n];n+=1,o==="-k"&&n<t.length&&(n+=1)}n<t.length&&(n+=1)}continue}if(Hy.has(r)){for(let o=n+1;o<t.length;o+=1){let a=t[o];if(a==="-c"||a==="-lc"||a==="-ic"||a==="-xc"||a==="-ec"||a==="-xec"){let l=t[o+1];return l?$y(l):null}}return null}if(Wy.has(r)){let o=n+1;for(;o<t.length;){let l=t[o];if(qy.has(l))return null;if(l==="--"){o+=1;break}if(!l.startsWith("-"))break;o+=1,Gy.has(l)&&o<t.length&&(o+=1)}if(o>=t.length)return null;let a=Ou(t[o]);return a?{agent:a,args:t.slice(o+1),viaWrapper:!0}:null}let i=Ou(s);return i?{agent:i,args:t.slice(n+1),viaWrapper:e}:null}return null}function Hi(t,e=!1){return Wu(Uu(t),e)}function Bs(t){let e=Hi(t);return e?{agent:e.agent,args:e.args}:null}function qu(t){return By.test(t)&&Hi(t)!==null}function zy(t,e){let n=Bs(e);if(!n||n.agent!==t)return null;let{args:s}=n;if(t==="claude"){for(let r=0;r<s.length;r+=1){let i=s[r];if((i==="--resume"||i==="--session-id")&&s[r+1]&&!s[r+1].startsWith("-"))return s[r+1];if(i.startsWith("--resume="))return i.slice(9);if(i.startsWith("--session-id="))return i.slice(13)}return null}if(s[0]!=="resume")return null;for(let r=1;r<s.length;r+=1){let i=s[r];if(!i.startsWith("-"))return i}return null}function Vy(t){if(t.includes("--dangerously-skip-permissions"))return"autoApprove";for(let e=0;e<t.length;e+=1){let n=t[e],s=t[e+1],r=n==="--permission-mode"?s:n.startsWith("--permission-mode=")?n.slice(18):void 0;if(r==="plan")return"plan";if(r==="acceptEdits")return"acceptEdits";if(r==="default")return"normal"}}function Qy(t){if(t.includes("--dangerously-bypass-approvals-and-sandbox"))return"autoApprove"}function Yy(t,e){let n=Bs(e);if(!(!n||n.agent!==t))return t==="claude"?Vy(n.args):Qy(n.args)}function Ms(t){switch(t){case"high":return 3;case"medium":return 2;default:return 1}}function Jy(t,e){return t==="claude"?e.includes("/.claude/projects/")&&!e.includes("/subagents/"):e.includes("/.codex/sessions/")}function Ky(t,e){let n=Hi(e);return!n||n.agent!==t||n.viaWrapper?!1:t==="claude"?!n.args.includes("--continue")&&!n.args.includes("-c"):!(n.args[0]==="app-server"&&!n.args.includes("--listen")&&!n.args.some(s=>s.startsWith("--listen=")))}function Xy(t){let e=[...new Set(t.sessionFiles)].filter(i=>Jy(t.agent,i)),n=zy(t.agent,t.command),s=Yy(t.agent,t.command);if(n)return{agent:t.agent,pid:t.pid,cwd:t.cwd,command:t.command,sessionId:n,confidence:"high",...s?{approvalMode:s}:{},...e.length===1?{sessionFilePath:e[0]}:{}};if(e.length!==1)return null;let r=Lt(t.agent,e[0]);return r?{agent:t.agent,pid:t.pid,cwd:t.cwd,command:t.command,sessionId:r,confidence:"medium",...s?{approvalMode:s}:{},sessionFilePath:e[0]}:null}function Zy(t,e){let n=t,s=e;(Ms(e.confidence)>Ms(t.confidence)||Ms(e.confidence)===Ms(t.confidence)&&e.pid!==void 0&&t.pid!==void 0&&e.pid<t.pid)&&(n=e,s=t);let r=n.approvalMode??s.approvalMode;return{...n,cwd:n.cwd||s.cwd,...r?{approvalMode:r}:{},title:n.title??s.title,sessionFilePath:n.sessionFilePath??s.sessionFilePath,isResponding:n.isResponding??s.isResponding}}function Ui(t){let e=new Map;for(let n of t){let s=`${n.agent}:${n.sessionId}`,r=e.get(s);e.set(s,r?Zy(r,n):n)}return[...e.values()]}function ev(t){try{return process.kill(t,0),!0}catch{return!1}}async function Ds(t,e,n=Oy){try{let{stdout:s}=await Ny(t,e,{maxBuffer:8388608,timeout:n});return s}catch(s){let r=typeof s=="object"&&s!==null?{code:"code"in s?s.code:void 0,signal:"signal"in s?s.signal:void 0,killed:"killed"in s?s.killed:void 0}:{},i=String(s);return i.includes("ESRCH")||i.includes("No such process")?Ls.debug({file:t,args:e,timeoutMs:n,error:i,...r},"process scan command skipped \u2014 process exited"):Ls.warn({file:t,args:e,timeoutMs:n,error:i,...r},"process scan command failed"),""}}async function tv(t){if(!t.sessionFilePath)return t;let e=await rt(t.sessionFilePath,t.agent);if(!e)return null;let n=await qi(t.sessionFilePath,t.agent),s=e.approvalMode??t.approvalMode;return{...t,cwd:t.cwd||e.cwd,...s?{approvalMode:s}:{},title:t.title??e.title,isResponding:n.isResponding}}async function nv(t){return process.platform==="win32"?"":(await Ds("lsof",["-a","-p",String(t),"-d","cwd","-Fn"])).split(`
97
+ `).find(s=>s.startsWith("n"))?.slice(1).trim()??""}async function sv(t){if(process.platform==="win32")return[];let n=(await Ds("lsof",["-p",String(t),"-Fn"])).split(`
98
+ `).filter(s=>s.startsWith("n")).map(s=>s.slice(1).trim()).filter(s=>s.endsWith(".jsonl")?s.includes("/.claude/projects/")||s.includes("/.codex/sessions/"):!1);return[...new Set(n)]}function rv(t){return t.split(`
99
+ `).map(e=>e.trim()).filter(Boolean).map(e=>{let n=e.match(/^(\d+)\s+(.*)$/);if(!n)return null;let s=Number(n[1]),r=n[2];if(!qu(r))return null;let i=Bs(r);return!Number.isFinite(s)||!i?null:{pid:s,command:r,agent:i.agent}}).filter(e=>!!e)}async function iv(){let t=await Ds("ps",["-axo","pid=,command="],Hu);return rv(t)}async function ov(){return(await Ds("wmic",["process","get","ProcessId,CommandLine","/FORMAT:CSV"],Hu)).split(`
100
+ `).map(e=>e.trim()).filter(Boolean).map(e=>{let n=e.split(",");if(n.length<3)return null;let s=Number(n[n.length-1]),r=n.slice(1,n.length-1).join(",");if(!Number.isFinite(s)||s===0||!qu(r))return null;let i=Bs(r);return i?{pid:s,command:r,agent:i.agent}:null}).filter(e=>!!e)}async function av(){return process.platform==="win32"?ov():iv()}async function lv(t){let e=b.startTimer("process.scan.pgrep_ms"),n=await av();t&&(t.pgrepMs+=e()),t&&(t.matchedProcesses=n.length);let s=n.filter(o=>ev(o.pid));t&&(t.aliveProcesses=s.length);let r=b.startTimer("process.scan.lsof_ms"),i=await Promise.all(s.map(async o=>({pid:o.pid,agent:o.agent,command:o.command,cwd:await nv(o.pid),sessionFiles:await sv(o.pid)})));return t&&(t.lsofMs+=r()),t&&(t.snapshots=i.length),i}function cv(t){return t.replace(/[^a-zA-Z0-9]/g,"-")}async function uv(t,e){if(!e)return null;try{if(t==="claude"){let n=(0,st.join)((0,Du.homedir)(),".claude","projects",cv(e)),r=(await(0,Ns.readdir)(n).catch(()=>[])).filter(l=>l.endsWith(".jsonl"));if(r.length===0)return null;let i=null;if(await Promise.all(r.map(async l=>{let u=await(0,Ns.stat)((0,st.join)(n,l)).catch(()=>null);u&&(!i||u.mtimeMs>i.mtimeMs)&&(i={name:l,mtimeMs:u.mtimeMs})})),!i)return null;let o=(0,st.join)(n,i.name),a=Lt(t,o);return a?{sessionId:a,filePath:o}:null}return ju(e)}catch{return null}}async function dv(){let t={pgrepMs:0,lsofMs:0,fallbackMs:0,hydrateMs:0,totalMs:0,matchedProcesses:0,aliveProcesses:0,snapshots:0,directCandidates:0,fallbackLookups:0,fallbackHits:0,hydratedCandidates:0},e=b.startTimer("process.scan.total_ms"),n=await lv(t),s=[],r=[];for(let c of n){let d=Xy(c);if(d){s.push(d);continue}Ky(c.agent,c.command)&&r.push(c)}t.directCandidates=s.length,t.fallbackLookups=r.length;let i=b.startTimer("process.scan.fallback_ms"),o=await Promise.all(r.map(async c=>{let d=await uv(c.agent,c.cwd);return d?{agent:c.agent,pid:c.pid,cwd:c.cwd,command:c.command,sessionId:d.sessionId,confidence:"low",sessionFilePath:d.filePath}:null}));t.fallbackMs=i(),t.fallbackHits=o.filter(c=>c!==null).length;let a=b.startTimer("process.scan.hydrate_ms"),l=await Promise.all([...s,...o.filter(c=>c!==null)].map(c=>tv(c)));t.hydrateMs=a(),t.hydratedCandidates=l.filter(c=>c!==null).length;let u=Ui(l.filter(c=>c!==null));return t.totalMs=e(),(t.totalMs>=Dy||t.fallbackLookups>0)&&Ls.info({durationMs:t.totalMs,pgrepMs:t.pgrepMs,lsofMs:t.lsofMs,fallbackMs:t.fallbackMs,hydrateMs:t.hydrateMs,matchedProcesses:t.matchedProcesses,aliveProcesses:t.aliveProcesses,snapshots:t.snapshots,directCandidates:t.directCandidates,fallbackLookups:t.fallbackLookups,fallbackHits:t.fallbackHits,hydratedCandidates:t.hydratedCandidates,sessions:u.length},"process running sessions scanned"),An={value:u,expiresAt:Date.now()+Fy},u}async function Wi(){return An&&Date.now()<An.expiresAt?An.value:Tn||(Tn=dv().finally(()=>{Tn=null}),Tn)}async function Gu(t){try{return(await Wi()).some(n=>n.sessionId===t)}catch(e){return Ls.warn({sessionId:t,error:String(e)},"isSessionProcessAlive failed, treating as not alive"),!1}}var Vu=require("fs"),Fe=require("fs/promises"),ji=require("os"),Cn=require("path");var kn=N.child({module:"activity-watcher"}),fv=12e4,pv=5e3,hv=6e4,$u=5;function gv(){return(0,Cn.join)((0,ji.homedir)(),".claude","projects")}function mv(){return(0,Cn.join)((0,ji.homedir)(),".codex","sessions")}async function zu(t){try{return await(0,Fe.realpath)(t)}catch{return t}}function Fs(t,e){return!(!t.endsWith(".jsonl")||e==="claude"&&t.includes("/subagents/"))}var Gi=class{entries=new Map;filePathIndex=new Map;metaInFlight=new Map;roots=new Map;watchers=[];pollTimers=[];rescanTimer=null;listeners=new Set;started=!1;async start(e){if(this.started)return;this.started=!0;let n=await zu(e?.claudeDir??gv()),s=await zu(e?.codexDir??mv());if(this.roots.set(n,"claude"),this.roots.set(s,"codex"),await Promise.all([this.bootstrap("claude",n),this.bootstrap("codex",s)]),this.updateGauges(),e?.usePolling){let r=e.pollingIntervalMs??100;for(let[i,o]of this.roots){let a=setInterval(()=>{this.pollScan(o,i)},r);a.unref?.(),this.pollTimers.push(a)}}else for(let[r,i]of this.roots)this.startNativeWatch(r,i);this.rescanTimer=setInterval(()=>{this.safetyRescan().catch(r=>{kn.warn({error:String(r)},"activity watcher rescan failed")})},hv),this.rescanTimer.unref?.(),kn.info({seeded:this.entries.size},"activity watcher started")}async stop(){if(this.started){this.started=!1,this.rescanTimer&&(clearInterval(this.rescanTimer),this.rescanTimer=null);for(let e of this.pollTimers)clearInterval(e);this.pollTimers=[];for(let e of this.watchers)try{e.close()}catch{}this.watchers=[],this.entries.clear(),this.filePathIndex.clear(),this.metaInFlight.clear(),this.roots.clear(),this.listeners.clear(),this.updateGauges()}}startNativeWatch(e,n){try{let s=(0,Vu.watch)(e,{recursive:!0,persistent:!0},(r,i)=>{if(!i)return;let o=(0,Cn.join)(e,i.toString());Fs(o,n)&&this.resolveFsEvent(n,o)});s.on("error",r=>{kn.warn({error:String(r),root:e},"activity watcher error")}),this.watchers.push(s)}catch(s){kn.warn({error:String(s),root:e},"failed to start native recursive watch")}}async resolveFsEvent(e,n){let s=await(0,Fe.stat)(n).catch(()=>null);if(!s){this.handleUnlink(n);return}s.isFile()&&await this.handleFsChange(n,s.mtimeMs)}async pollScan(e,n){let s=await this.walkSessionFiles(n,$u),r=new Set,i=!1;for(let{filePath:o,mtimeMs:a}of s){if(!Fs(o,e))continue;r.add(o);let l=this.filePathIndex.get(o);if(l){let c=this.entries.get(l);if(!c||a<=c.mtimeMs)continue}await this.ingestPath(e,o,Date.now(),a)&&(i=!0)}for(let[o]of this.filePathIndex)this.identifyAgent(o)===e&&(r.has(o)||(this.handleUnlink(o),i=!0));i&&(this.updateGauges(),this.notify())}identifyAgent(e){for(let[n,s]of this.roots)if(e===n||e.startsWith(`${n}/`))return s;return null}listActive(e=fv){let n=Date.now(),s=n-e,r=n-pv,i=[];for(let o of this.entries.values())o.lastActivityMs<s||i.push({...o,isResponding:o.lastActivityMs>=r});return i}onActivity(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async bootstrap(e,n){let s=await this.walkSessionFiles(n,$u);await Promise.all(s.map(async({filePath:r,mtimeMs:i})=>{Fs(r,e)&&await this.ingestPath(e,r,i,i)}))}async walkSessionFiles(e,n){let s=[],r=async(i,o)=>{if(o>n)return;let a=await(0,Fe.readdir)(i,{withFileTypes:!0}).catch(()=>[]);await Promise.all(a.map(async l=>{let u=(0,Cn.join)(i,l.name);if(l.isDirectory()){await r(u,o+1);return}if(!l.isFile()||!l.name.endsWith(".jsonl"))return;let c=await(0,Fe.stat)(u).catch(()=>null);c&&s.push({filePath:u,mtimeMs:c.mtimeMs})}))};return await r(e,0),s}async handleFsChange(e,n){let s=this.identifyAgent(e);if(!s||!Fs(e,s))return;let r=Date.now(),i=n??r;await this.ingestPath(s,e,r,i)&&(this.updateGauges(),this.notify())}handleUnlink(e){let n=this.filePathIndex.get(e);n&&(this.filePathIndex.delete(e),this.entries.delete(n),this.updateGauges(),this.notify())}async ingestPath(e,n,s,r){let i=this.filePathIndex.get(n);if(i)return this.touchEntry(i,s,r);let o=`${e}:${n}`,a=this.metaInFlight.get(o);return a||(a=(async()=>{try{let l=await rt(n,e);if(!l)return;let u=`${e}:${l.sessionId}`,c=this.entries.get(u);if(c){c.lastActivityMs=Math.max(c.lastActivityMs,s),c.mtimeMs=Math.max(c.mtimeMs,r),c.filePath!==n&&(this.filePathIndex.delete(c.filePath),c.filePath=n),this.filePathIndex.set(n,u);return}this.entries.set(u,{agent:e,sessionId:l.sessionId,cwd:l.cwd,title:l.title,filePath:n,lastActivityMs:s,mtimeMs:r}),this.filePathIndex.set(n,u)}finally{this.metaInFlight.delete(o)}})(),this.metaInFlight.set(o,a)),await a,this.filePathIndex.has(n)}touchEntry(e,n,s){let r=this.entries.get(e);if(!r)return!1;let i=Math.max(r.lastActivityMs,n),o=Math.max(r.mtimeMs,s);return i===r.lastActivityMs&&o===r.mtimeMs?!1:(r.lastActivityMs=i,r.mtimeMs=o,!0)}async safetyRescan(){if(this.entries.size===0)return;let e=[];for(let[s,r]of this.entries)e.push((async()=>{let i=await(0,Fe.stat)(r.filePath).catch(()=>null);return i?i.mtimeMs>r.mtimeMs?this.touchEntry(s,i.mtimeMs,i.mtimeMs):!1:(this.filePathIndex.delete(r.filePath),this.entries.delete(s),!0)})());(await Promise.all(e)).some(Boolean)&&(this.updateGauges(),this.notify())}notify(){for(let e of this.listeners)try{e()}catch(n){kn.warn({error:String(n)},"activity listener failed")}}updateGauges(){b.gauge("session.activity_watcher.entries",this.entries.size)}__injectEntryForTests(e){let n=`${e.agent}:${e.sessionId}`;this.entries.set(n,{...e}),this.filePathIndex.set(e.filePath,n),this.updateGauges(),this.notify()}__resetForTests(){this.started=!1,this.rescanTimer&&(clearInterval(this.rescanTimer),this.rescanTimer=null);for(let e of this.pollTimers)clearInterval(e);this.pollTimers=[],this.watchers=[],this.entries.clear(),this.filePathIndex.clear(),this.metaInFlight.clear(),this.roots.clear(),this.listeners.clear(),this.updateGauges()}},Nt=new Gi;var He=N.child({module:"inventory"}),Xu=6e3,yv=3e4,vv=1e4;function Sv(t){return{agent:t.agent,cwd:t.cwd,sessionId:t.sessionId,confidence:"high",sessionFilePath:t.filePath,title:t.title,isResponding:t.isResponding}}async function _v(){return Nt.listActive().map(Sv)}var Zu={listScannedSessions:Pn,listWatcherSessions:_v,scanRunningSessions:Wi,searchSessionContent:ad},ue=bv(),Rn=null,Hs=0,Ws=0,Us=0,$i=0,zi=new Set;function bv(){return{scannedSessions:[],runningSessions:[],scannedAt:"",refreshedAt:0}}function wv(t){return JSON.stringify({sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,model:t.model,branch:t.branch,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:[...t.sources].sort(),runtime:{state:t.runtime.state,confidence:t.runtime.confidence,resumeMode:t.runtime.resumeMode,pid:t.runtime.pid,command:t.runtime.command,isResponding:t.runtime.isResponding,needsAttention:t.runtime.needsAttention},managed:t.managed,approvalMode:t.approvalMode,observedApprovalMode:t.observedApprovalMode,lastUsage:t.lastUsage,interruptReason:t.interruptReason,stallWarning:t.stallWarning})}function Iv(t){return JSON.stringify({sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,title:t.title,pid:t.pid,command:t.command,confidence:t.confidence,isResponding:t.isResponding,approvalMode:t.approvalMode})}function Qu(t){return JSON.stringify({scannedSessions:t.scannedSessions.map(wv).sort(),runningSessions:t.runningSessions.map(Iv).sort()})}function ed(){for(let t of zi)try{t()}catch(e){He.warn({error:String(e)},"session inventory backfill listener failed")}}function xn(){b.gauge("session.inventory.external_cached_sessions",ue.scannedSessions.length),b.gauge("session.inventory.external_running_sessions",ue.runningSessions.length),b.gauge("session.inventory.backfill_inflight",Rn?1:0)}function td(t){return zi.add(t),()=>{zi.delete(t)}}function nd(){return{cachedSessions:ue.scannedSessions.length,runningSessions:ue.runningSessions.length,cacheAgeMs:ue.refreshedAt?Math.max(0,Date.now()-ue.refreshedAt):void 0,backfillInFlight:!!Rn,lastBackfillDurationMs:Us||void 0,lastBackfillCompletedAt:Ws?new Date(Ws).toISOString():void 0,lastBackfillAppliedAt:$i?new Date($i).toISOString():void 0}}xn();function sd(){return Nt.onActivity(()=>{od(Zu,Xu)})}var Ot={daemonActive:3,externalRunning:2,idle:1},Yu={high:3,medium:2,low:1};function rd(t,e){return e.lastActivityAt.localeCompare(t.lastActivityAt)||t.sessionId.localeCompare(e.sessionId)}function Tv(t,e){let n=t.runtime.needsAttention?1:0,s=e.runtime.needsAttention?1:0,r=t.runtime.isResponding?1:0,i=e.runtime.isResponding?1:0;return s-n||i-r||Ot[e.runtime.state]-Ot[t.runtime.state]||rd(t,e)}function Av(t,e){return Ot[e.state]>Ot[t.state]?e:Ot[e.state]<Ot[t.state]?t:Yu[e.confidence]>Yu[t.confidence]?e:t}function kv(t,e){return t?e?t.localeCompare(e)<=0?t:e:t:e}function Cv(t,e){return t?e?t.localeCompare(e)>=0?t:e:t:e}function xv(t,e){return e?t?!(Mt(e)&&!Mt(t)):!0:!1}function Vi(t="high",e="resumeSession"){return{state:"idle",confidence:t,resumeMode:e}}function Rv(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,model:t.model,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:["record"],runtime:{...Vi(),...t.interruptReason||t.stallWarning?{needsAttention:!0}:{}},managed:t.managed,approvalMode:t.approvalMode,lastUsage:t.lastUsage,...t.interruptReason?{interruptReason:t.interruptReason}:{},...t.stallWarning?{stallWarning:t.stallWarning}:{}}}function Ev(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",...t.pid!==void 0?{pid:t.pid}:{},...t.command!==void 0?{command:t.command}:{},isResponding:t.isResponding},observedApprovalMode:t.approvalMode}}function Pv(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,model:t.model,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:["daemon"],runtime:{state:"daemonActive",confidence:"high",resumeMode:"reuseDriver",needsAttention:t.needsAttention||!!t.interruptReason||!!t.stallWarning||void 0,isResponding:t.isResponding||void 0},managed:t.managed,approvalMode:t.approvalMode,lastUsage:t.lastUsage,...t.interruptReason?{interruptReason:t.interruptReason}:{},...t.stallWarning?{stallWarning:t.stallWarning}:{}}}function Mv(t,e){for(let n of e){let s=`${n.agent}:${n.sessionId}`,r=t.get(s);if(!r){t.set(s,{...n,sources:[...n.sources],runtime:{...n.runtime}});continue}let i=xv(r.title,n.title)?n.title:r.title,o=n.cwd||r.cwd,a=n.branch??r.branch,l=Av(r.runtime,n.runtime),u=r.sources.slice();for(let h of n.sources)u.includes(h)||u.push(h);let c=n.sources.includes("process"),d=r.sources.includes("process")&&!r.sources.includes("daemon"),f=c?r.lastActivityAt:d?n.lastActivityAt:Cv(r.lastActivityAt,n.lastActivityAt);t.set(s,{...r,cwd:o,model:n.model??r.model,branch:a,title:i,createdAt:kv(r.createdAt,n.createdAt),lastActivityAt:f,sources:u,runtime:l,managed:r.managed||n.managed,approvalMode:n.approvalMode??r.approvalMode,observedApprovalMode:n.observedApprovalMode??r.observedApprovalMode,lastUsage:n.lastUsage??r.lastUsage,interruptReason:n.interruptReason??r.interruptReason,stallWarning:n.stallWarning??r.stallWarning})}}function Lv(...t){let e=new Map;for(let n of t)Mv(e,n);return[...e.values()]}function Nv(t,e,n,s,r,i,o){let a=s?.toLowerCase(),l=o&&o>0?o:0,u=t.filter(c=>{if(e&&c.agent!==e||n&&c.cwd!==n)return!1;if(l>0&&c.runtime.state==="idle"){let d=Date.parse(c.lastActivityAt);if(Number.isFinite(d)&&d<l)return!1}if(a){let d=(c.title??"").toLowerCase(),f=i?.[c.sessionId]?.toLowerCase()??"",h=d.includes(a)||(f?f.includes(a):!1),g=r?.has(c.sessionId)??!1;if(!h&&!g)return!1}return!0});return(s||l>0)&&He.info({total:t.length,filtered:u.length,search:s,contentMatchIds:r?.size??0,sinceMs:l||void 0},"filter applied"),u}function Ov(t,e){if(!e)return 0;let n=0,s=t.length;for(;n<s;){let r=n+s>>1,i=t[r];(e.lastActivityAt.localeCompare(i.lastActivityAt)||i.sessionId.localeCompare(e.sessionId))>0?s=r:n=r+1}if(n>0){let r=t[n-1];if(r.lastActivityAt===e.lastActivityAt&&r.sessionId===e.sessionId)return n}return 0}function Ju(t,e,n,s,r,i,o,a,l){let u=i?1/0:Math.max(1,e||50),c=Lv(t.sessionRecords.map(Rv),t.scannedSessions,t.runningSessions.map(_=>Ev(_,t.scannedAt)),t.activeSessions.map(Pv)),d=t.deletedSessionIds?.size?c.filter(_=>!t.deletedSessionIds?.has(_.sessionId)):c,f=Nv(d,s,r,i,o,a,l),h=f.filter(_=>_.runtime.state!=="idle"||_.managed).sort(Tv),g=f.filter(_=>_.runtime.state==="idle"&&!_.managed).sort(rd),p=Ov(g,n),m=g.slice(p,p+u),C=p+m.length<g.length&&m.length>0?{lastActivityAt:m[m.length-1].lastActivityAt,sessionId:m[m.length-1].sessionId}:void 0;return{sessions:n?m:[...h,...m],nextCursor:C}}async function Ku(t){if(t.sessions.length===0)return t;let e=t.sessions.map(o=>o.cwd),[n,s]=await Promise.all([Lu(e),Nu(e)]),r=!1,i=t.sessions.map(o=>{let a=n.get(o.cwd),l=s.get(o.cwd);return o.branch===a&&o.diffStat===l?o:(r=!0,{...o,branch:a,diffStat:l})});return r?{...t,sessions:i}:t}function En(t,e,n,s,r,i){return new Promise(o=>{let a=Date.now(),l=!1,u=!1,c=null,d=f=>{l||(l=!0,c&&(clearTimeout(c),c=null),o(f))};c=setTimeout(()=>{if(l)return;let f=Array.isArray(r)&&r.length>0;He.warn({source:t,timeoutMs:s,durationMs:Date.now()-a,partial:f?r.length:0},f?"session inventory source timed out, using partial results":"session inventory source timed out, using fallback"),u=!0,d(f?r:n)},s),typeof c=="object"&&"unref"in c&&c.unref(),e().then(f=>{let h=u;if(d(f),h&&i)try{i(f)}catch(g){He.warn({source:t,error:String(g)},"inventory source late-result handler failed")}}).catch(f=>{l||He.warn({source:t,error:String(f)},"session inventory source failed, using fallback"),d(n)})})}function Bv(t=Date.now()){return ue.refreshedAt===0||t-ue.refreshedAt>=vv}async function id(t,e){let[n,s]=await Promise.all([En("watcher.running_sessions",()=>t.listWatcherSessions(),[],e),En("process.running_sessions",()=>t.scanRunningSessions(),[],e)]);return Ui([...n,...s])}async function Dv(t,e){let n=new Date().toISOString(),s=[],[r,i]=await Promise.all([En("scanner.sessions",()=>t.listScannedSessions(void 0,void 0,s),[],e,s),id(t,e)]);return{scannedSessions:r,runningSessions:i,scannedAt:n,refreshedAt:Date.now()}}function od(t,e){if(Rn)return;let n=Hs,s=b.startTimer("session.inventory.backfill_latency_ms");Rn=Dv(t,e).then(r=>{if(n!==Hs)return;let i=Qu(ue);ue=r;let o=Qu(r),a=s();Us=a,Ws=Date.now(),xn(),i!==o&&($i=Date.now(),b.increment("session.inventory.backfill_applied"),He.info({durationMs:a,scanned:r.scannedSessions.length,running:r.runningSessions.length},"session inventory external backfill applied"),ed())}).catch(r=>{n===Hs&&(Us=s(),Ws=Date.now(),xn(),He.warn({error:String(r),durationMs:Us},"session inventory external backfill failed"))}).finally(()=>{n===Hs&&(Rn=null,xn())}),xn()}async function qs(t){let e={...Zu,...t.loaders??{}},n=Math.max(250,t.sourceTimeoutMs??Xu),s=t.sourceTimeoutMs!==void 0?n:yv;if(!t.search){let f=b.startTimer("session.inventory.fast_path_latency_ms");Bv()&&od(e,n);let h=ue,g=Ju({activeSessions:t.activeSessions,sessionRecords:t.sessionRecords,scannedSessions:h.scannedSessions,runningSessions:h.runningSessions,scannedAt:h.scannedAt||new Date().toISOString(),deletedSessionIds:t.deletedSessionIds},t.limit,t.cursor,t.agent,t.cwd,void 0,void 0,t.customTitles,t.sinceMs);if(t.skipGitMetadata)return f(),g;let p=await Ku(g);return f(),p}let r=[],i=new Date().toISOString(),o=t.search,a=t.sinceMs,[l,u,c]=await Promise.all([En("scanner.sessions",()=>e.listScannedSessions(t.agent,t.cwd,r),[],n,r),id(e,n),En("scanner.search_content",()=>e.searchSessionContent(o,t.agent,a),void 0,s,void 0,f=>{f&&f.size>0&&ed()})]);He.info({search:t.search,sinceMs:a&&a>0?a:void 0,contentMatches:c?.size??0,scanned:l.length,records:t.sessionRecords.length,active:t.activeSessions.length},"search results");let d=Ju({activeSessions:t.activeSessions,sessionRecords:t.sessionRecords,scannedSessions:l,runningSessions:u,scannedAt:i,deletedSessionIds:t.deletedSessionIds},t.limit,t.cursor,t.agent,t.cwd,o,c,t.customTitles,a);return t.skipGitMetadata?d:Ku(d)}var Ae=N.child({module:"scanner"});function to(t){let e=new Map;return{get(n){let s=e.get(n);if(s){if(Date.now()>s.expiresAt){e.delete(n);return}return s.value}},set(n,s){e.set(n,{value:s,expiresAt:Date.now()+t})},clear(){e.clear()}}}var no=3e4,Ki=to(no),Xi=to(no),js=to(no),Qi=new Map,Yi=new Map,Gs=null,it=24;function Vs(){Ki.clear(),Xi.clear(),js.clear()}function gd(t){return t.replace(/[^a-zA-Z0-9]/g,"-")}async function ot(t,e,n){if(t.length===0)return[];let s=Math.max(1,Math.min(e,t.length)),r=new Array(t.length),i=0;return await Promise.all(Array.from({length:s},async()=>{for(;;){let o=i;if(i+=1,o>=t.length)return;r[o]=await n(t[o],o)}})),r}async function md(t){let e=await ot(t,it,async n=>{let s=await(0,O.stat)(n).catch(()=>null);return{path:n,mtimeMs:s?.mtimeMs??0}});return e.sort((n,s)=>s.mtimeMs-n.mtimeMs),e}async function Fv(){let t=(0,F.join)((0,ye.homedir)(),".claude","projects"),e=[],n=await(0,O.readdir)(t,{withFileTypes:!0}).catch(()=>[]);for(let s of n){if(!s.isDirectory())continue;let r=(0,F.join)(t,s.name),i=await(0,O.readdir)(r).catch(()=>[]);for(let o of i)o.endsWith(".jsonl")&&e.push((0,F.join)(r,o))}return e}async function Hv(){let t=(0,F.join)((0,ye.homedir)(),".codex","sessions"),e=[],n=await(0,O.readdir)(t).catch(()=>[]);for(let s of n){let r=(0,F.join)(t,s),i=await(0,O.readdir)(r).catch(()=>[]);for(let o of i){let a=(0,F.join)(r,o),l=await(0,O.readdir)(a).catch(()=>[]);for(let u of l){let c=(0,F.join)(a,u),d=await(0,O.readdir)(c).catch(()=>[]);for(let f of d)f.endsWith(".jsonl")&&e.push((0,F.join)(c,f))}}}return e}async function so(){let t=await Hv();return md(t)}function Uv(t){let e=`codex-latest:${(0,ye.homedir)()}`,n=new Map;for(let s of t)n.has(s.cwd)||n.set(s.cwd,s.match);js.set(e,n)}function*yd(t,e){let n=0,s=0;for(;n<t.length&&s<e;){let r=t.indexOf(`
101
+ `,n);r===-1&&(r=t.length);let i=t.substring(n,r);n=r+1,!(i.length===0||i.trim().length===0)&&(yield i,s+=1)}}var Ji=512*1024,ld=256*1024;async function vd(t,e){if(e<=Ji)return(0,O.readFile)(t,"utf-8");let n=await(0,O.open)(t,"r");try{let s=Buffer.alloc(Ji),{bytesRead:r}=await n.read(s,0,Ji,0);return s.toString("utf-8",0,r)}finally{await n.close()}}async function Sd(t,e){if(e<=ld)return(0,O.readFile)(t,"utf-8");let n=await(0,O.open)(t,"r");try{let s=Math.max(0,e-ld),r=Buffer.alloc(e-s),{bytesRead:i}=await n.read(r,0,r.length,s);return r.toString("utf-8",0,i)}finally{await n.close()}}function cd(t){switch(t){case"plan":return"plan";case"acceptEdits":return"acceptEdits";case"bypassPermissions":return"autoApprove";case"default":return"normal";default:return}}function Wv(t){let e=typeof t?.approval_policy=="string"?t.approval_policy:"",n=t?.sandbox_policy,s=typeof n?.type=="string"?n.type:"",r=Array.isArray(n?.writable_roots)?n.writable_roots:null;if(e==="never"&&s==="danger-full-access")return"autoApprove";if(e==="on-request"&&s==="workspace-write")return r?.length?"normal":"plan"}function qv(t){return t?.type==="permission-mode"?cd(t.permissionMode):cd(t?.permissionMode)}function Gv(t){if(t?.type==="turn_context")return Wv(t.payload)}function jv(t){if(t?.type!=="event_msg"||t.payload?.type!=="token_count")return;let e=t.payload.info;if(!e||typeof e!="object")return;let n=e.last_token_usage;if(!n||typeof n!="object")return;let s=Number(n.input_tokens),r=Number(n.output_tokens);if(!Number.isFinite(s)||!Number.isFinite(r))return;let i=Number(e.model_context_window);return{inputTokens:s,outputTokens:r,...Number.isFinite(i)&&i>0?{contextWindowTokens:i}:{}}}async function $v(t,e){let n,s,r=await Sd(t,e);for(let i of r.split(`
102
+ `)){if(!i.trim())continue;let o;try{o=JSON.parse(i)}catch{continue}let a=Gv(o);a&&(n=a);let l=jv(o);l&&(s=l)}return{approvalMode:n,lastUsage:s}}function ud(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n=Number(e.input_tokens??e.inputTokens),s=Number(e.output_tokens??e.outputTokens);if(!Number.isFinite(n)||!Number.isFinite(s))return;let r=Number(e.cache_creation_input_tokens??e.cacheCreationInputTokens),i=Number(e.cache_read_input_tokens??e.cacheReadInputTokens);return{inputTokens:n,outputTokens:s,...Number.isFinite(r)?{cacheCreationInputTokens:r}:{},...Number.isFinite(i)?{cacheReadInputTokens:i}:{}}}function zv(t){return t?.type==="assistant"?ud(t.message?.usage??t.usage):ud(t?.toolUseResult?.usage)}async function _d(t,e){let n,s,r=await Sd(t,e);for(let i of r.split(`
103
+ `)){if(!i.trim())continue;let o;try{o=JSON.parse(i)}catch{continue}let a=qv(o);a&&(n=a);let l=zv(o);l&&(s=l)}return{approvalMode:n,lastUsage:s}}function ro(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 bd(t){return t?.type==="response_item"&&t.payload?.type==="message"&&t.payload.role==="user"?ro(t.payload.content):t?.type==="event_msg"&&t.payload?.type==="user_message"&&typeof t.payload.message=="string"?t.payload.message:""}function Qs(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 Vv=/^\[Attached image: ([^\n]+)\]$/gm;function Qv(t){let e=[],n=new Set;for(let s of t.matchAll(Vv)){let r=s[1]?.trim();!r||n.has(r)||(n.add(r),e.push(r))}return e}function Yv(t){if(t.role!=="user")return t;let e=[...t.images??[],...Qv(t.content)].filter((n,s,r)=>n&&r.indexOf(n)===s);return e.length?{...t,images:e}:t}var Jv=["<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 Kv(t,e){if(t?.isMeta===!0)return!0;let n=e.trim();return n?Jv.some(s=>n.startsWith(s)):!1}function Ys(t){if(t?.type!=="user"||t.message?.role!=="user")return"";let e=Qs(t.message.content);return Kv(t,e)?"":e}function Xv(t){return Array.isArray(t)&&t.some(e=>e&&typeof e=="object"&&e.type==="tool_result")}function Zv(t){return Array.isArray(t)?t.map(e=>{if(!e||typeof e!="object"||e.type!=="tool_result")return"";let n=e.content;return typeof n=="string"?n:Array.isArray(n)?n.map(s=>!s||typeof s!="object"?"":typeof s.text=="string"?s.text:typeof s.content=="string"?s.content:"").filter(Boolean).join(`
102
104
  `):""}).filter(Boolean).join(`
103
- `):""}function Hv(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(`
104
- `):""}function od(t){if(typeof t=="string")return t;let e=Hv(t);return e||(Array.isArray(t)&&t.length>0&&t.every(r=>r&&typeof r=="object"&&r.type==="tool_reference")?"":JSON.stringify(t))}var Uv=/Claude requested permissions to (?:edit|write to) (.+?) which is a sensitive file\.?$/i;function Wv(t){let n=t.match(Uv)?.[1]?.trim();return n||null}function qv(t){return{role:"assistant",type:"info",historyKey:`claude-sensitive-file:${t}`,content:`Vibelet \u63D0\u793A\uFF1AClaude \u628A ${t} \u89C6\u4E3A\u654F\u611F\u8DEF\u5F84\u3002\u8FD9\u7C7B\u6279\u51C6\u65E0\u6CD5\u4ECE\u5DF2\u6709\u4F1A\u8BDD\u8BB0\u5F55\u91CC\u8865\u56DE\u5230 Vibelet\u3002\u8BF7\u91CD\u65B0\u6267\u884C\u8FD9\u6B21\u4FEE\u6539\u5E76\u5728 Claude \u4E2D\u660E\u786E\u6279\u51C6\uFF1B\u5982\u679C\u5E0C\u671B\u5728 Vibelet \u91CC\u770B\u5230\u5BA1\u6279\u5F39\u7A97\uFF0C\u8BF7\u4ECE Vibelet \u542F\u52A8\u6216\u7EE7\u7EED\u8FD9\u4E2A\u4F1A\u8BDD\u3002`}}function Gv(t){let e=Fv(t?.message?.content);if(/\[Request interrupted by user(?: for tool use)?\]/i.test(e))return!0;let n=t?.toolUseResult;return!!(n&&typeof n=="object"&&n.interrupted===!0||typeof n=="string"&&/\[Request interrupted by user(?: for tool use)?\]/i.test(n))}function vd(t){let e=t.trim();return e.startsWith("# AGENTS.md instructions for ")||e.startsWith("<environment_context>")}function Wr(t,e="scanner"){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,title:t.title,observedApprovalMode:t.approvalMode,lastUsage:t.lastUsage,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:[e],runtime:$i()}}function Mt(t,e){let n=(0,B.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 jv(t,e){let n=await pd(t,e),r=fd(n,64),s="",i="",o,a,l;for(let c of r){let d;try{d=JSON.parse(c)}catch{continue}if(!s&&typeof d.cwd=="string"&&(s=d.cwd),!i&&typeof d.sessionId=="string"&&(i=d.sessionId),o||(o=tt([d.customTitle,d.summary])),!l){let p=$r(d),h=tt([],p);h&&(a=p,l=h)}if(s&&(o||l))break}if(!s)return null;let u=await md(t,e);return{sessionId:i||Mt("claude",t)||(0,B.basename)(t,".jsonl"),cwd:s,title:o??l??tt([],a),approvalMode:u.approvalMode,lastUsage:u.lastUsage}}async function $v(t,e){let n=await pd(t,e),r=fd(n,96),s="",i="",o,a,l;for(let u of r){let c;try{c=JSON.parse(u)}catch{continue}if(s||(s=c.payload?.cwd??c.cwd??""),i||(i=c.payload?.id??c.id??""),o||(o=tt([c.payload?.title,c.title])),!l){let d=yd(c),p=d&&!vd(d)?tt([],d):void 0;p&&(a=d,l=p)}if(s&&(o||l))break}return s?{sessionId:i||Mt("codex",t)||(0,B.basename)(t,".jsonl"),cwd:s,title:o??l??tt([],a),approvalMode:await Lv(t,"codex",e)}:null}async function rt(t,e){let n=await(0,N.stat)(t).catch(()=>null);if(!n)return null;try{let r=n.size;if(e==="claude"){let i=await jv(t,r);return i?{sessionId:i.sessionId,agent:e,cwd:i.cwd,title:i.title,approvalMode:i.approvalMode,lastUsage:i.lastUsage,createdAt:new Date(n.birthtimeMs).toISOString(),lastActivityAt:new Date(n.mtimeMs).toISOString(),filePath:t}:null}let s=await $v(t,r);return s?{sessionId:s.sessionId,agent:e,cwd:s.cwd,title:s.title,approvalMode:s.approvalMode,createdAt:new Date(n.birthtimeMs).toISOString(),lastActivityAt:new Date(n.mtimeMs).toISOString(),filePath:t}:null}catch{return null}}async function ad(t,e){let n=(0,B.join)((0,ue.homedir)(),".claude","projects");try{let r;t?r=[ud(t)]:r=(await(0,N.readdir)(n,{withFileTypes:!0})).filter(u=>u.isDirectory()).map(u=>u.name);let s=[];for(let l of r){let u=(0,B.join)(n,l),c=await(0,N.readdir)(u).catch(()=>[]);for(let d of c)d.endsWith(".jsonl")&&s.push((0,B.join)(u,d))}let i=await ot(s,it,async l=>{let u=await(0,N.stat)(l).catch(()=>null);return{path:l,mtimeMs:u?.mtimeMs??0}});return i.sort((l,u)=>u.mtimeMs-l.mtimeMs),(await ot(i,it,async l=>{let u=await rt(l.path,"claude");return u&&e&&e.push(Wr(u)),u})).filter(l=>l!==null).map(l=>Wr(l)).sort((l,u)=>u.lastActivityAt.localeCompare(l.lastActivityAt))}catch(r){return Ae.warn({error:String(r)},"failed to list claude sessions"),[]}}async function ld(t,e){try{let n=await dd(),r=await ot(n,it,async i=>{let o=await rt(i.path,"codex");return o&&e&&(!t||o.cwd===t)&&e.push(Wr(o)),o});return Ev(r.map((i,o)=>i?{cwd:i.cwd,match:{path:n[o].path,mtimeMs:n[o].mtimeMs,sessionId:i.sessionId}}:null).filter(i=>i!==null)),r.filter(i=>i!==null).filter(i=>!t||i.cwd===t).map(i=>Wr(i)).sort((i,o)=>o.lastActivityAt.localeCompare(i.lastActivityAt))}catch(n){return Ae.warn({error:String(n)},"failed to list codex sessions"),[]}}async function Uu(t){if(!t)return null;let e=`codex-latest:${(0,ue.homedir)()}`,n=Ur.get(e);if(n){let i=n.get(t);return i?{sessionId:i.sessionId,filePath:i.path}:null}Hr||(Hr=(async()=>{let i=await dd(),o=await ot(i,it,async l=>{let u=await rt(l.path,"codex");return u?{cwd:u.cwd,match:{path:l.path,mtimeMs:l.mtimeMs,sessionId:u.sessionId}}:null}),a=new Map;for(let l of o)!l||a.has(l.cwd)||a.set(l.cwd,l.match);return Ur.set(e,a),a})().finally(()=>{Hr=null}));let s=(await Hr).get(t);return s?{sessionId:s.sessionId,filePath:s.path}:null}async function Rn(t,e,n){let s=`list:${(0,ue.homedir)()}:${t??"all"}:${e??""}`,i=Ji.get(s);if(i)return i;let o=zi.get(s);if(o)return o;let a=(async()=>{let l;if(t==="claude")l=await ad(e,n);else if(t==="codex")l=await ld(e,n);else{let[u,c]=await Promise.all([ad(e,n),ld(e,n)]);l=[...u,...c].sort((d,p)=>p.lastActivityAt.localeCompare(d.lastActivityAt))}return Ji.set(s,l),l})();return zi.set(s,a),a.finally(()=>zi.delete(s)),a}async function nd(t,e){let r=`search:${(0,ue.homedir)()}:${t}:${e??"all"}`,s=Ki.get(r);if(s)return s;let i=Vi.get(r);if(i)return i;let o=(async()=>{let a=new Set,l=t.toLowerCase();async function u(){let d=(0,B.join)((0,ue.homedir)(),".claude","projects");try{let p=await(0,N.readdir)(d,{withFileTypes:!0}),h=[];for(let f of p){if(!f.isDirectory())continue;let m=(0,B.join)(d,f.name),y=await(0,N.readdir)(m).catch(()=>[]);for(let T of y)T.endsWith(".jsonl")&&h.push((0,B.join)(m,T))}let g=await ot(h,it,f=>cd(f,l,"claude"));for(let f of g)f&&a.add(f)}catch(p){Ae.warn({error:String(p)},"failed to search claude files")}}async function c(){let d=(0,B.join)((0,ue.homedir)(),".codex","sessions");try{let p=[];async function h(f){let m=await(0,N.readdir)(f,{withFileTypes:!0}).catch(()=>[]);for(let y of m){let T=(0,B.join)(f,y.name);y.isDirectory()?await h(T):y.name.endsWith(".jsonl")&&p.push(T)}}await h(d);let g=await ot(p,it,f=>cd(f,l,"codex"));for(let f of g)f&&a.add(f)}catch(p){Ae.warn({error:String(p)},"failed to search codex files")}}return e==="claude"?await u():e==="codex"?await c():await Promise.all([u(),c()]),Ki.set(r,a),a})();return Vi.set(r,o),o.finally(()=>Vi.delete(r)),o}async function cd(t,e,n){let r=(0,Xi.createReadStream)(t,{encoding:"utf-8"}),s=(0,Qi.createInterface)({input:r,crlfDelay:1/0}),i=n==="claude"?zv:Vv,o="",a=!1;try{for await(let l of s){if(!l.trim())continue;let u;try{u=JSON.parse(l)}catch{continue}if(o||(n==="claude"?typeof u.sessionId=="string"&&(o=u.sessionId):o=u.payload?.id??u.id??""),!a){let c=i(u);c&&c.toLowerCase().includes(e)&&(a=!0)}if(o&&a)break}}finally{s.close(),r.destroy()}return a?o||Mt(n,t):null}function zv(t){return t?.type==="user"&&t.message?.role==="user"?$r(t):t?.type==="assistant"&&t.message?.role==="assistant"?jr(t.message.content):""}function Vv(t){if(t?.type==="response_item"&&t.payload?.type==="message"){let n=t.payload.role;if(n==="user"||n==="assistant")return to(t.payload.content)}let e=yd(t);return e||""}async function qr(t,e){let n=(0,Xi.createReadStream)(t,{encoding:"utf-8"}),r=(0,Qi.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 no(t,e){let n=(0,B.join)((0,ue.homedir)(),".claude","projects"),r=e?ud(e):null,s=await(0,N.readdir)(n).catch(()=>[]),i=r?[r,...s.filter(o=>o!==r)]:s;for(let o of i){let a=(0,B.join)(n,o,`${t}.jsonl`);if((await(0,N.stat)(a).catch(()=>null))?.isFile())return a}return null}async function Sd(t,e){let n=await no(t,e);if(!n)return;let r=await(0,N.stat)(n).catch(()=>null);return r?.isFile()?(await md(n,r.size)).lastUsage:void 0}async function ro(t,e,n){if(e==="claude")return no(t,n);let r=(0,B.join)((0,ue.homedir)(),".codex","sessions");return bd(r,t)}function Yv(t){if(t?.type==="user"&&t.message?.role==="user")return Dv(t.message.content)?{kind:"toolResult",...Gv(t)?{interrupted:!0}:{}}:$r(t)?{kind:"userPrompt"}:null;if(t?.type==="assistant"&&t.message?.role==="assistant"){let e=jr(t.message.content),n=t.message?.stop_reason;return{kind:"assistant",stopReason:typeof n=="string"?n:n??null,...e?{text:e}:{}}}return t?.type==="system"&&t.subtype==="stop_hook_summary"?{kind:"stopHook"}:null}function Jv(t){if(!t)return{};if(t.kind==="stopHook")return{};if(t.kind==="assistant"){let e=t.stopReason==null||t.stopReason==="tool_use";return{...e?{isResponding:!0}:{},...e&&t.text?{partialReplyText:t.text}:{}}}return t.kind==="toolResult"&&t.interrupted?{}:{isResponding:!0}}async function Ui(t,e){if(e!=="claude")return{};let n=null;try{await qr(t,r=>{let s=Yv(r);s&&(n=s)})}catch(r){return r.code!=="ENOENT"&&Ae.warn({filePath:t,error:String(r)},"failed to read session runtime hints"),{}}return Jv(n)}async function so(t,e,n){let r=await ro(t,e,n);return r?Ui(r,e):{}}function Kv(t){if(typeof t?.timestamp!="string")return null;let e=Date.parse(t.timestamp);return Number.isFinite(e)?e:null}async function _d(t,e,n,r){if(e!=="codex"||!r||r<=0)return[];let s=await ro(t,e,n);if(!s)return[];let i=[];try{await qr(s,l=>{let u=Kv(l);u!=null&&u<r||i.push(...Ai(l,{cwd:n,includePatchCalls:!1}))})}catch(l){return l.code!=="ENOENT"&&Ae.warn({filePath:s,error:String(l)},"failed to read generated file notices"),[]}let o=await au(i,r),a=Te(o);return a?[a]:[]}async function En(t,e,n){let r=[],s=(i,o)=>{if(o?.coalesceConsecutiveAssistant&&i.role==="assistant"){let a=r[r.length-1];if(a?.role==="assistant"&&a.type!=="info"&&i.type!=="info"&&!ou(a.content)){r[r.length-1]=i;return}}r.push(i)};if(e==="claude")try{let i=await no(t,n);if(i){let o=new Map;await qr(i,a=>{if(a.type==="assistant"&&a.message?.role==="assistant"&&Array.isArray(a.message.content))for(let l of a.message.content){if(!l||typeof l!="object"||l.type!=="tool_use"||typeof l.id!="string")continue;let u=wr(typeof l.name=="string"?l.name:null,l.input&&typeof l.input=="object"?l.input:null,n);u&&o.set(l.id,u)}if(a.type==="user"&&a.message?.role==="user"){if(Array.isArray(a.message.content))for(let u of a.message.content){if(!u||typeof u!="object"||u.type!=="tool_result")continue;if(u.is_error===!0){let g=od(u.content),f=Wv(g);f&&s(qv(f));continue}let c=typeof u.tool_use_id=="string"?u.tool_use_id:"",d=c?o.get(c):void 0;if(!d)continue;let p=od(u.content);if(!Ir(a.toolUseResult,p))continue;let h=Te([d]);h&&s({role:"assistant",content:h})}let l=$r(a);l&&s({role:"user",content:l})}else if(a.type==="assistant"&&a.message?.role==="assistant"){let l=jr(a.message.content);l&&s({role:"assistant",content:l})}})}}catch(i){Ae.warn({error:String(i)},"failed to read claude session history")}else if(e==="codex")try{let i=await ro(t,e,n);i&&await qr(i,o=>{let a=Ai(o,{cwd:n,includePatchCalls:!0}),l=Te(a);if(l&&s({role:"assistant",content:l}),o.type!=="response_item"||o.payload?.type!=="message")return;let u=o.payload.role;if(u!=="user"&&u!=="assistant")return;let c=to(o.payload.content);c&&(u==="user"&&vd(c)||s({role:u,content:c},{coalesceConsecutiveAssistant:!0}))})}catch(i){Ae.warn({error:String(i)},"failed to read codex session history")}return r}async function bd(t,e){try{let n=await(0,N.readdir)(t,{withFileTypes:!0});for(let r of n){let s=(0,B.join)(t,r.name);if(r.isDirectory()){let i=await bd(s,e);if(i)return i}else if(r.name.includes(e)&&r.name.endsWith(".jsonl"))return s}}catch(n){Ae.warn({error:String(n)},"failed to walk codex sessions dir")}return null}var Ot=require("fs"),Ad=require("path");var Xv=500,wd=200;function Id(t){if(!Array.isArray(t))return[];let e=t.filter(n=>typeof n=="string"&&n.length>0);return e.length<=wd?e:e.slice(-wd)}function Qv(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 Zv(t){if(!t||typeof t!="object"||Array.isArray(t))return{};let e={};for(let[n,r]of Object.entries(t))typeof n!="string"||n.length===0||typeof r!="string"||r.length===0||n===r||(e[n]=r);return e}function eS(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 tS(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t;if(e.kind!=="stall_timeout"&&e.kind!=="driver_crash"||typeof e.at!="string"||!e.at||typeof e.humanText!="string"||!e.humanText)return;let n={kind:e.kind,at:e.at,humanText:e.humanText};return typeof e.lastPrompt=="string"&&e.lastPrompt&&(n.lastPrompt=e.lastPrompt),typeof e.idleMs=="number"&&Number.isFinite(e.idleMs)&&(n.idleMs=e.idleMs),typeof e.exitCode=="number"&&Number.isFinite(e.exitCode)&&(n.exitCode=e.exitCode),n}function nS(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t;if(typeof e.at!="string"||!e.at||typeof e.humanText!="string"||!e.humanText)return;let n={at:e.at,humanText:e.humanText};return typeof e.idleMs=="number"&&Number.isFinite(e.idleMs)&&(n.idleMs=e.idleMs),typeof e.hardTimeoutMs=="number"&&Number.isFinite(e.hardTimeoutMs)&&(n.hardTimeoutMs=e.hardTimeoutMs),n}function rS(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n=Number(e.inputTokens),r=Number(e.outputTokens);if(!Number.isFinite(n)||!Number.isFinite(r))return;let s=Number(e.contextWindowTokens),i=Number(e.cacheCreationInputTokens),o=Number(e.cacheReadInputTokens);return{inputTokens:n,outputTokens:r,...Number.isFinite(i)&&i>=0?{cacheCreationInputTokens:i}:{},...Number.isFinite(o)&&o>=0?{cacheReadInputTokens:o}:{},...Number.isFinite(s)&&s>0?{contextWindowTokens:s}:{}}}function Td(t){return{...t,lastActivityAt:t.lastActivityAt??t.createdAt,acceptedClientMessageIds:Id(t.acceptedClientMessageIds),interruptedClientMessageIds:Id(t.interruptedClientMessageIds),pendingApproval:eS(t.pendingApproval),lastUsage:rS(t.lastUsage),interruptReason:tS(t.interruptReason),stallWarning:nS(t.stallWarning)}}function sS(t){if(Array.isArray(t))return{records:t.map(Td),deletedSessionIds:[],sessionAliases:{}};if(t&&typeof t=="object"){let e=t;return{records:Array.isArray(e.records)?e.records.map(Td):[],deletedSessionIds:Qv(e.deletedSessionIds),sessionAliases:Zv(e.sessionAliases)}}return{records:[],deletedSessionIds:[],sessionAliases:{}}}var zr=class{records;deletedSessionIds;sessionAliases;debounceTimer=null;constructor(){let e=this.loadFromDisk();this.records=e.records,this.deletedSessionIds=new Set(e.deletedSessionIds),this.sessionAliases=new Map(Object.entries(e.sessionAliases))}getAll(){return this.records}getDeletedSessionIds(){return[...this.deletedSessionIds]}resolveSessionId(e){let n=e,r=new Set;for(;!r.has(n);){r.add(n);let s=this.sessionAliases.get(n);if(!s||s===n)break;n=s}return n}find(e){let n=this.resolveSessionId(e);return this.records.find(r=>r.sessionId===n)}isDeleted(e){let n=this.resolveSessionId(e);return this.deletedSessionIds.has(e)||this.deletedSessionIds.has(n)}upsert(e){this.deletedSessionIds.delete(e.sessionId),this.sessionAliases.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()}addAlias(e,n){if(!e||!n)return;let r=this.resolveSessionId(n);if(!r||e===r){this.sessionAliases.delete(e),this.deletedSessionIds.delete(e),this.scheduleSave();return}this.deletedSessionIds.delete(e),this.sessionAliases.set(e,r),this.scheduleSave()}forget(e){this.records=this.records.filter(n=>n.sessionId!==e),this.deletedSessionIds.delete(e),this.scheduleSave()}remove(e){let n=this.resolveSessionId(e);this.records=this.records.filter(s=>s.sessionId!==e&&s.sessionId!==n);let r=[];for(let[s,i]of this.sessionAliases)(s===e||s===n||i===n)&&(this.sessionAliases.delete(s),r.push(s));this.deletedSessionIds.add(n),e!==n&&this.deletedSessionIds.add(e);for(let s of r)this.deletedSessionIds.add(s);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()},Xv)}loadFromDisk(){try{let e=(0,Ot.readFileSync)(fr,"utf-8");return sS(JSON.parse(e))}catch{}return{records:[],deletedSessionIds:[],sessionAliases:{}}}saveToDisk(){(0,Ot.mkdirSync)((0,Ad.dirname)(fr),{recursive:!0}),(0,Ot.writeFileSync)(fr,JSON.stringify({records:this.records,deletedSessionIds:[...this.deletedSessionIds],sessionAliases:Object.fromEntries(this.sessionAliases)},null,2))}};var Bt=require("path"),kd=require("os");function Vr(t){return t=t.replace(/^~/,"~"),t.startsWith("~/")||t==="~"?(0,Bt.join)((0,kd.homedir)(),t.slice(2)):t}function iS(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 io(t,e){let n=Vr(iS(t));if(!n||(0,Bt.isAbsolute)(n))return n;let r=Vr(e??"");return r?(0,Bt.resolve)(r,n):n}var Cd={approvalRequestV1:"vibelet.approvalRequest.v1"};var Dt=require("fs"),xd=require("path");function oS(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 aS(t){try{let e=(0,Dt.readFileSync)(t,"utf8"),n=JSON.parse(e);return Array.isArray(n)?n.filter(oS):[]}catch{return[]}}function Pn(t,e){(0,Dt.mkdirSync)((0,xd.dirname)(t),{recursive:!0}),(0,Dt.writeFileSync)(t,JSON.stringify(e,null,2)+`
105
- `,"utf8")}var Yr=class{constructor(e=Fc){this.pushSubscriptionsPath=e;this.records=aS(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)],Pn(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,Pn(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,Pn(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&&Pn(this.pushSubscriptionsPath,this.records)}reset(){this.records=[],Pn(this.pushSubscriptionsPath,this.records)}};var X=O.child({module:"push"}),lS="https://exp.host/--/api/v2/push/send",cS="https://exp.host/--/api/v2/push/getReceipts",uS=[0,1e3,3e3],Mn=new Yr;function dS(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 fS(t){return new Promise(e=>{setTimeout(e,t)})}function Rd(t){return t==="DeviceNotRegistered"}function pS(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 hS(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 gS(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 mS(t,e,n,r){let s=new Map(t);for(let i of uS){if(s.size===0)return;i>0&&await n(i);let o;try{o=await e(cS,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:[...s.keys()]})})}catch(c){X.error({error:String(c),count:s.size},"push receipt request failed");return}if(!o.ok){X.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){X.error({count:s.size},"push receipt response was unreadable");return}let{pendingTicketIds:l,receiptErrors:u}=gS(a,s);for(let{token:c,receipt:d}of u){let p=d.details?.error;if(X.error({token:c,message:d.message,details:d.details,receiptStatus:d.status},"push receipt rejected"),Rd(p)){let h=r.unregisterToken(c);X.info({token:c,errorCode:p,removed:h},"push token removed after receipt rejection")}}s=new Map(l.map(c=>[c,s.get(c)]))}s.size>0&&X.warn({pendingReceipts:s.size},"push receipts still pending after polling")}function yS(t){let e=t?.pushStore??Mn,n=t?.fetchImpl??globalThis.fetch,r=t?.sleepImpl??fS;return async function(i,o,a){let l=e.listTokens();if(l.length===0)return;let u=l.map(c=>({to:c,sound:"default",title:i,body:o,data:a,badge:1,priority:"high",_contentAvailable:!0,...dS(a)&&a.eventType==="approval_request"?{categoryId:Cd.approvalRequestV1}:{}}));try{let c=await n(lS,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(u)});if(!c.ok){X.error({status:c.status,statusText:c.statusText},"push send failed");return}let d=await c.json().catch(()=>null);if(!d){X.error({count:u.length},"push send returned unreadable response");return}let{successfulTokens:p,ticketErrors:h}=pS(d,l),g=hS(d,l);for(let{token:f,ticket:m}of h){let y=m.details?.error;if(X.error({token:f,message:m.message,details:m.details,ticketStatus:m.status},"push ticket rejected"),Rd(y)){let T=e.unregisterToken(f);X.info({token:f,errorCode:y,removed:T},"push token removed after ticket rejection")}}p.length>0&&(X.debug({count:p.length},"push sent"),e.markSent(p)),g.size>0&&await mS(g,n,r,e)}catch(c){X.error({error:String(c)},"push send error")}}}function oo(t,e){Mn.register(t,e),X.info({deviceId:t,token:e,total:Mn.count()},"push token registered")}function ao(t,e){let n=Mn.unregister(t,e);X.info({deviceId:t,token:e,total:Mn.count(),removed:n},"push token unregistered")}var Jr=yS();var b=O.child({module:"manager"}),vS="Done.",SS="Approval required",Ed=180,Ft=200,_S=6e4,Pd=9e4,bS="Agent \u5361\u4F4F",wS="Agent \u5D29\u6E83",Md=200;function Ht(t){let e=Math.round(t/1e3);if(e<60)return`${e} \u79D2`;let n=Math.floor(e/60),r=e%60;return r===0?`${n} \u5206\u949F`:`${n} \u5206 ${r} \u79D2`}function Hd(t){if(!t)return;let e=t.trim();if(e)return e.length>Md?`${e.slice(0,Md-1)}\u2026`:e}function IS(t,e,n,r){let s=Ht(t),i=Ht(n),o=Ht(e),a=Hd(r),l=a?`
106
- \u6700\u540E\u7684\u8BF7\u6C42\u662F\uFF1A"${a}"\u3002`:"",u=n>e?`Agent \u957F\u65F6\u95F4\u6CA1\u6709\u8F93\u51FA\u3002\u5DF2 ${s} \u6CA1\u6709\u8F93\u51FA\uFF0C\u8D85\u8FC7 ${i} \u4ECD\u672A\u6062\u590D\u540E\u88AB\u81EA\u52A8\u505C\u6B62\uFF08${o} \u65F6\u5DF2\u6807\u8BB0\u7591\u4F3C\u5361\u4F4F\uFF09\u3002`:`Agent \u5361\u4F4F\u4E86\u3002\u5DF2 ${s} \u6CA1\u6709\u8F93\u51FA\uFF0C\u8D85\u8FC7 ${i} \u9608\u503C\u540E\u88AB\u81EA\u52A8\u505C\u6B62\u3002`;return{kind:"stall_timeout",at:new Date().toISOString(),humanText:`${u}${l}`,...a?{lastPrompt:a}:{},idleMs:t}}function TS(t,e,n){let r=Ht(t),s=Ht(e),i=n>0?Ht(n):void 0;return{at:new Date().toISOString(),humanText:i?`Agent \u53EF\u80FD\u5361\u4F4F\u4E86\u3002\u5DF2 ${r} \u6CA1\u6709\u8F93\u51FA\uFF0C\u8D85\u8FC7 ${s} \u540E\u88AB\u6807\u8BB0\u4E3A\u7591\u4F3C\u5361\u4F4F\uFF1B\u5982\u679C\u8D85\u8FC7 ${i} \u4ECD\u672A\u6062\u590D\uFF0C\u5C06\u81EA\u52A8\u505C\u6B62\u3002`:`Agent \u53EF\u80FD\u5361\u4F4F\u4E86\u3002\u5DF2 ${r} \u6CA1\u6709\u8F93\u51FA\uFF0C\u8D85\u8FC7 ${s} \u540E\u88AB\u6807\u8BB0\u4E3A\u7591\u4F3C\u5361\u4F4F\uFF1B\u5F53\u524D\u4E0D\u4F1A\u81EA\u52A8\u505C\u6B62\uFF0C\u4F60\u53EF\u4EE5\u7EE7\u7EED\u7B49\u5F85\u6216\u624B\u52A8\u505C\u6B62\u3002`,idleMs:t,...n>0?{hardTimeoutMs:n}:{}}}function AS(t,e){let n=Hd(e),r=n?`
107
- \u6700\u540E\u7684\u8BF7\u6C42\u662F\uFF1A"${n}"\u3002`:"";return{kind:"driver_crash",at:new Date().toISOString(),humanText:`Agent \u8FDB\u7A0B\u5F02\u5E38\u9000\u51FA\uFF08\u9000\u51FA\u7801 ${t}\uFF09\u3002${r}`,...n?{lastPrompt:n}:{},exitCode:t}}function kS(t,e){return e?{inputTokens:e.inputTokens,outputTokens:e.outputTokens,...Number.isFinite(e.cacheCreationInputTokens)?{cacheCreationInputTokens:e.cacheCreationInputTokens}:Number.isFinite(t?.cacheCreationInputTokens)?{cacheCreationInputTokens:t?.cacheCreationInputTokens}:{},...Number.isFinite(e.cacheReadInputTokens)?{cacheReadInputTokens:e.cacheReadInputTokens}:Number.isFinite(t?.cacheReadInputTokens)?{cacheReadInputTokens:t?.cacheReadInputTokens}:{},...Number.isFinite(e.contextWindowTokens)?{contextWindowTokens:e.contextWindowTokens}:Number.isFinite(t?.contextWindowTokens)?{contextWindowTokens:t?.contextWindowTokens}:{}}:t}function Ld(t){if(t)return{inputTokens:t.inputTokens,outputTokens:t.outputTokens,...Number.isFinite(t.cacheCreationInputTokens)?{cacheCreationInputTokens:t.cacheCreationInputTokens}:{},...Number.isFinite(t.cacheReadInputTokens)?{cacheReadInputTokens:t.cacheReadInputTokens}:{},...Number.isFinite(t.contextWindowTokens)?{contextWindowTokens:t.contextWindowTokens}:{}}}function CS(t,e){return t?.inputTokens===e?.inputTokens&&t?.outputTokens===e?.outputTokens&&t?.cacheCreationInputTokens===e?.cacheCreationInputTokens&&t?.cacheReadInputTokens===e?.cacheReadInputTokens&&t?.contextWindowTokens===e?.contextWindowTokens}function ke(...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>Ft&&e.splice(0,e.length-Ft));return e}function Kr(t){return t?.length?{acceptedClientMessageIds:ke(t)}:{}}function J(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,approvalMode:t.approvalMode,model:t.model,acceptedClientMessageIds:ke(t.acceptedClientMessageIds),interruptedClientMessageIds:ke(t.interruptedClientMessageIds),pendingApproval:t.agent==="codex"?t.pendingApproval:void 0,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,lastUsage:t.lastUsage,managed:t.managed,isResponding:t.isResponding||void 0,interruptReason:t.interruptReason,stallWarning:t.stallWarning}}function Nd(t){t.managed||(t.managed=!0)}function Od(t){let e=t.pendingApproval?.requestId;return typeof e=="string"&&Ar(e)}function Bd(t,e,n){return{sessionId:t,agent:e,...n}}function xS(t){return t.startsWith(Ii)}function Dd(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 Xr=class{constructor(e=Jr,n=Hu){this.pushSender=e;this.externalProcessPresenceCheck=n;this.removeInventoryBackfillListener=Ku(()=>{this.noteInventoryChanged("inventory_backfilled")}),this.updateGauges(),this.startIdleSweep()}sessions=new Map;claudeHookSessions=new Map;store=new zr;idleSweepInterval=null;watchdogNowMs=Date.now();lastWatchdogWallClockMs=this.watchdogNowMs;globalClients=new Set;inventoryVersion=0;removeInventoryBackfillListener;startIdleSweep(){S.idleTimeoutMs<=0&&S.turnStallTimeoutMs<=0||(this.idleSweepInterval=setInterval(()=>this.sweepIdleSessions(),_S),this.idleSweepInterval.unref())}stopIdleSweep(){this.idleSweepInterval&&(clearInterval(this.idleSweepInterval),this.idleSweepInterval=null)}sweepIdleSessions(){let e=this.advanceWatchdogClock(Date.now(),"sweep"),n=S.idleTimeoutMs,r=S.turnStallTimeoutMs,s=S.turnStallHardTimeoutMs;if(n<=0&&r<=0)return;let i=3600*1e3;for(let[o,a]of this.sessions){if(!a.active&&!a.driver){if(a.clients.size===0){let u=e-a.lastActivityTs;u>=i&&(b.info({sessionId:a.sessionId,inactiveMs:u},"removing inactive session from memory"),_.increment("session.cleanup",{reason:"inactive"}),this.unregisterClaudeHookSession(a),this.sessions.delete(o))}continue}if(!a.active||!a.driver)continue;let l=e-a.lastActivityTs;if(a.isResponding){if(r<=0||a.pendingApproval||l<r)continue;let u=this.getRespondingLivenessHint(a),c=s>0&&l>=s,d=u==="dead";if(!d&&!c){if(!a.stallWarningAt){let g=TS(l,r,s);a.stallWarningAt=e,a.stallWarning=g,this.updateGauges(),b.warn({sessionId:a.sessionId,agent:a.agent,inactiveMs:l,turnStallTimeoutMs:r,turnStallHardTimeoutMs:s,livenessHint:u},"responding session exceeded soft stall threshold; waiting before forced stop"),_.increment("driver.stall_warning",{agent:a.agent}),I.emit("driver.stall_warning",{sessionId:a.sessionId,agent:a.agent,idleMs:l,hardTimeoutMs:s||void 0}),this.broadcast(a.sessionId,{type:"session.stall_warning",sessionId:a.sessionId,warning:g}),this.store.upsert(J(a)),this.noteInventoryChanged("session_updated")}continue}let p=d||s<=0?r:s;b.warn({sessionId:a.sessionId,agent:a.agent,inactiveMs:l,turnStallTimeoutMs:r,turnStallHardTimeoutMs:s,livenessHint:u},"stopping stalled driver"),_.increment("driver.stall_timeout",{agent:a.agent}),I.emit("driver.stall_timeout",{sessionId:a.sessionId,agent:a.agent,idleMs:l});let h=IS(l,r,p,a.lastUserMessage);a.interruptReason=h,this.clearStallWarning(a),this.resolvePendingClaudeHookApprovals(a),a.driver.stop(),a.active=!1,a.driver=null,a.isResponding=!1,a.currentReplyText="",this.updateGauges(),this.broadcast(a.sessionId,{type:"session.interrupted_notice",sessionId:a.sessionId,reason:h}),this.pushSender(bS,this.buildPushBody(`${a.title||a.sessionId}: ${h.lastPrompt??""}`.trim()),{sessionId:a.sessionId,agent:a.agent,eventType:"agent_stalled"}),this.touchSession(a.sessionId),this.store.upsert(J(a)),this.noteInventoryChanged("session_updated");continue}a.pendingApproval||n<=0||l<n||(b.info({sessionId:a.sessionId,agent:a.agent,idleMs:l,timeoutMs:n},"stopping idle driver"),_.increment("driver.idle_timeout",{agent:a.agent}),I.emit("driver.idle_timeout",{sessionId:a.sessionId,agent:a.agent,idleMs:l}),a.driver.stop(),a.active=!1,a.driver=null,this.updateGauges(),this.touchSession(a.sessionId),this.noteInventoryChanged("session_updated"))}}bindDriverLifecycle(e,n,r,s){let i=e.driver;i?.onMessage(o=>{if(e.driver!==i){b.info({agent:n,context:r,msgType:o.type,sessionId:e.sessionId},"ignoring stale driver message");return}if(b.debug({agent:n,context:r,msgType:o.type,sessionId:e.sessionId},"driver message received"),o.type!=="response"&&"sessionId"in o&&o.sessionId&&o.sessionId!==e.sessionId&&!this.sessions.has(o.sessionId)&&this.remapSessionId(e,o.sessionId,s),(o.type==="session.done"||o.type==="session.interrupted")&&(e.isResponding=!1,o.type==="session.done"&&(n==="claude"?(e.lastUsage=Ld(o.usage),this.reconcileClaudeSessionUsage(e,o.usage)):o.usage&&(e.lastUsage=kS(e.lastUsage,o.usage))),o.type==="session.interrupted"&&this.markLatestAcceptedClientMessageInterrupted(e),(o.type==="session.interrupted"||!Od(e))&&(e.pendingApproval=void 0)),o.type==="approval.request"){if(n==="codex"&&e.approvalMode==="autoApprove"){if(e.driver?.respondApproval(o.requestId,!0)??!1){I.emit("approval.response",{sessionId:e.sessionId,requestId:o.requestId,approved:!0}),e.pendingApproval=void 0,e.isResponding=!0,this.touchSession(e.sessionId),this.noteInventoryChanged("session_updated");return}b.warn({sessionId:e.sessionId,requestId:o.requestId},"failed to auto-approve codex request; falling back to pending approval flow")}e.isResponding=!1,e.pendingApproval={requestId:o.requestId,toolName:o.toolName,input:o.input,description:o.description,...o.approvalContext?{approvalContext:o.approvalContext}:{}},this.pushSender(SS,this.buildPushBody(`${e.title||e.sessionId}: ${o.description||o.toolName}`),{sessionId:e.sessionId,agent:e.agent,requestId:o.requestId,eventType:"approval_request"})}n==="claude"&&o.type==="approval.request"&&Ar(o.requestId)&&(e.lastUserMessage?e.syntheticApprovalRetries[o.requestId]={message:e.lastUserMessage,toolName:o.toolName}:b.warn({sessionId:e.sessionId,requestId:o.requestId},"missing lastUserMessage for synthetic approval retry"));let a=this.clearStallWarning(e);this.touchSession(e.sessionId,o.type!=="text.delta"||a),(a||o.type==="approval.request"||o.type==="session.done"||o.type==="session.interrupted")&&this.noteInventoryChanged("session_updated"),this.broadcast(e.sessionId,o),o.type==="session.done"&&this.emitGeneratedFileNoticesForCompletedTurn(e),(o.type==="session.done"||o.type==="session.interrupted")&&e.bufferedPrompts.length>0&&this.flushBufferedPrompt(e)}),i?.onExit?.(o=>{if(e.driver!==i){b.info({agent:n,context:r,exitCode:o,sessionId:e.sessionId},"ignoring stale driver exit");return}b.info({agent:n,context:r,exitCode:o,sessionId:e.sessionId},"driver exited"),I.emit("driver.exit",{sessionId:e.sessionId,agent:n,exitCode:o});let a=o!==0&&o!==null;_.increment("driver.exit",{agent:n,abnormal:a?"true":"false"});let l=!!(e.pendingApproval&&(e.agent==="codex"||o===0&&Od(e)));if(this.resolvePendingClaudeHookApprovals(e),e.active=!1,e.driver=null,e.isResponding=!1,e.currentReplyText="",this.clearStallWarning(e),l||(e.pendingApproval=void 0),a){let u=AS(o,e.lastUserMessage);e.interruptReason=u,this.broadcast(e.sessionId,{type:"session.interrupted_notice",sessionId:e.sessionId,reason:u}),this.pushSender(wS,this.buildPushBody(`${e.title||e.sessionId}: ${u.lastPrompt??""}`.trim()),{sessionId:e.sessionId,agent:e.agent,eventType:"agent_crashed"})}this.updateGauges(),this.touchSession(e.sessionId),this.store.upsert(J(e)),this.noteInventoryChanged("session_updated")})}async reconcileClaudeSessionUsage(e,n){let r=await Sd(e.sessionId,e.cwd),s=Ld(r??n);!s||CS(e.lastUsage,s)||(e.lastUsage=s,this.touchSession(e.sessionId),this.noteInventoryChanged("session_updated"))}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.forget(i),this.store.addAlias(i,n),this.sessions.delete(i),e.sessionId=n,this.sessions.set(n,e),this.store.upsert(J(e)),this.noteInventoryChanged("session_remapped"),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,e.lastTurnStartedAt=Date.now(),this.touchSession(e.sessionId),this.noteInventoryChanged("session_updated"),e.driver.sendPrompt(r,e.model),!0):!1}emitGeneratedFileNoticesForCompletedTurn(e){let n=e.lastTurnStartedAt;e.lastTurnStartedAt=void 0,!(e.agent!=="codex"||!n)&&_d(e.sessionId,e.agent,e.cwd,n).then(r=>{for(let s of r)this.broadcast(e.sessionId,{type:"tool.result",sessionId:e.sessionId,toolCallId:`generated-file-${Date.now()}`,output:s})}).catch(r=>{b.warn({sessionId:e.sessionId,error:String(r)},"failed to read generated-file notices")})}startPendingCodexSession(e,n){if(e.agent!=="codex"||!e.driver)return;let r=e.driver,s=e.sessionId,i=e.startupToken,o=_.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),this.noteInventoryChanged("session_updated"),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,s){if(e==="codex"&&n instanceof bn&&s&&n.setModel(s),e!=="claude"||!(n instanceof _n))return;let i=r??(0,lo.randomUUID)().replace(/-/g,"");return n.configureHookBridge(S.port,i),i}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=vn){for(let r of e.pendingClaudeHookApprovals.values())r.resolve(n);e.pendingClaudeHookApprovals.clear(),e.pendingApproval&&xS(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"),vn;if(r.approvalMode==="autoApprove")return Dd(!0);let i=(typeof n.tool_name=="string"?n.tool_name:typeof n.toolName=="string"?n.toolName:"").trim();if(!i)return vn;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:"",u=`${Ii}${l.trim()||(0,lo.randomUUID)()}`,c=r.pendingClaudeHookApprovals.get(u);if(c)return c.promise;let d=`Claude requested permissions to use ${i}.`,p,h=new Promise(g=>{p=g});return r.pendingClaudeHookApprovals.set(u,{requestId:u,promise:h,resolve:g=>{r.pendingClaudeHookApprovals.delete(u),p(g)}}),r.pendingApproval={requestId:u,toolName:i,input:a,description:d},I.emit("approval.request",{agent:"claude",sessionId:r.sessionId,toolName:i}),this.touchSession(r.sessionId),this.noteInventoryChanged("session_updated"),this.broadcast(r.sessionId,{type:"approval.request",sessionId:r.sessionId,requestId:u,toolName:i,input:a,description:d}),h}async resolveReconnectSession(e,n,r){if(e=this.resolveSessionRef(e).resolvedSessionId,this.isDeletedSession(e))return;let s=new Date().toISOString(),i=r?.agent,o=r?.cwd??"",a=r?.approvalMode,l=r?.model,u=r?.pendingApproval,c=r?.title??"",d=r?.createdAt??s,p=r?.lastActivityAt??s,h=r?.lastUsage,g=ke(r?.acceptedClientMessageIds),f=ke(r?.interruptedClientMessageIds),m=r?.isResponding,y=r?.interruptReason,T=r?.stallWarning,A=r?"memory":"client",w=this.store.find(e);if(w)i=w.agent,o=w.cwd||o,a=w.approvalMode??a,l=w.model??l,u=w.pendingApproval??u,c=w.title||c,d=w.createdAt||d,p=w.lastActivityAt||p,h=w.lastUsage??h,g=ke(w.acceptedClientMessageIds,g),f=ke(w.interruptedClientMessageIds,f),y=y??w.interruptReason,T=T??w.stallWarning,A="record";else if(!r){let P=(await Rn(n??i)).find(G=>G.sessionId===e);P&&(i=P.agent,o=P.cwd||o,c=P.title??c,d=P.createdAt,p=P.lastActivityAt,m=P.runtime.isResponding??m,A="scanner")}if(!i&&n&&(i=n,A=r?"memory":"client"),!!i)return{agent:i,cwd:o,approvalMode:a,model:l,pendingApproval:u,title:c,createdAt:d,lastActivityAt:p,lastUsage:h,acceptedClientMessageIds:g,interruptedClientMessageIds:f,source:A,managed:r?.managed??w?.managed,isResponding:m||void 0,...y?{interruptReason:y}:{},...T?{stallWarning:T}:{}}}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(Bd(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(Bd(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(J(e)),this.updateGauges(),this.touchSession(e.sessionId),this.noteInventoryChanged("session_updated"),!0}buildPushBody(e){let n=e.replace(/\s+/g," ").trim();return n?n.length<=Ed?n:`${n.slice(0,Math.max(1,Ed-3)).trimEnd()}...`:vS}currentPartialReplyText(e){return e?.isResponding&&e.currentReplyText.trim()?e.currentReplyText:void 0}currentWatchdogTime(){return this.advanceWatchdogClock(Date.now(),"activity")}getRespondingLivenessHint(e){return e.driver?.getRespondingLivenessHint?.()??"unknown"}clearStallWarning(e){return!e.stallWarning&&!e.stallWarningAt?!1:(e.stallWarning=void 0,e.stallWarningAt=void 0,this.updateGauges(),!0)}advanceWatchdogClock(e,n){let r=Math.max(0,e-this.lastWatchdogWallClockMs);return this.lastWatchdogWallClockMs=e,r<=0?this.watchdogNowMs:r>Pd?(n==="sweep"&&b.warn({elapsedWallMs:r,toleratedGapMs:Pd},"watchdog gap detected; discounting paused wall-clock time"),this.watchdogNowMs):(this.watchdogNowMs+=r,this.watchdogNowMs)}touchSession(e,n=!0){let r=Date.now(),s=new Date(r).toISOString(),i=this.advanceWatchdogClock(r,"activity"),o=this.sessions.get(e);if(o){o.lastActivityAt=s,o.lastActivityTs=i,n&&this.store.upsert(J(o));return}let a=this.store.find(e);a&&this.store.upsert({...a,lastActivityAt:s})}updateGauges(){let e=0,n=0;for(let r of this.sessions.values())r.active&&e++,r.stallWarning&&n++;_.gauge("session.active",e),_.gauge("session.stall_warning_active",n)}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,model:n.model,title:n.title,createdAt:n.createdAt,lastActivityAt:n.lastActivityAt,lastUsage:n.lastUsage,...n.pendingApproval||n.stallWarning?{needsAttention:!0}:{},...n.isResponding?{isResponding:!0}:{},managed:n.managed,...n.interruptReason?{interruptReason:n.interruptReason}:{},...n.stallWarning?{stallWarning:n.stallWarning}:{}});return e}getDeletedSessionIds(){return new Set(this.store.getDeletedSessionIds())}resolveSessionRef(e){let n=this.store.resolveSessionId(e);return{requestedSessionId:e,resolvedSessionId:n,remapped:n!==e}}buildResolvedSessionResponseData(e,n){let r=n?{...n}:{};return e.remapped&&(r.sessionId=e.resolvedSessionId,r.oldSessionId=e.requestedSessionId),Object.keys(r).length>0?r:void 0}buildSessionResponseData(e,n,r){let s=r?{...r}:{};return n&&n!==e.requestedSessionId&&(s.sessionId=n,s.oldSessionId=e.requestedSessionId),Object.keys(s).length>0?s:void 0}canResumeDriverSession(e,n){return!(e==="codex"&&n.startsWith("pending_"))}rememberSessionAlias(e,n){!e||!n||e===n||(this.store.forget(e),this.store.addAlias(e,n),this.noteInventoryChanged("session_remapped"))}isDeletedSession(e){return this.store.isDeleted(e)}async listRecentSessionsForContinue(e,n){return Rn(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,n.model);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,n.images,n.model);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.clearInterrupt":this.clearInterrupt(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,n.customTitles);break;case"sessions.list":await this.listSessions(e,n.id,n.agent,n.cwd,n.search,n.limit,n.cursor,n.customTitles);break}}addGlobalClient(e){this.globalClients.add(e)}removeClient(e){this.globalClients.delete(e);for(let n of this.sessions.values())n.clients.delete(e)}shutdown(){this.stopIdleSweep(),this.removeInventoryBackfillListener(),this.globalClients.clear();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(){Fr({limit:50,activeSessions:this.activeSessionSnapshots(),sessionRecords:this.store.getAll(),deletedSessionIds:this.getDeletedSessionIds(),skipGitMetadata:!0}).catch(()=>{})}getDriverCounts(){let e={};for(let n of this.sessions.values())n.active&&(e[n.agent]=(e[n.agent]??0)+1);return e}noteInventoryChanged(e){if(this.inventoryVersion+=1,this.globalClients.size===0)return;let n={type:"sessions.changed",version:this.inventoryVersion,reason:e},r=JSON.stringify(n);for(let s of this.globalClients)s.readyState===1&&s.send(r)}async createSession(e,n,r,s,i,o,a){s=Vr(s),b.info({agent:r,cwd:s,approvalMode:i,continueSession:o},"creating session");try{if(!(await(0,Fd.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 u=(await this.listRecentSessionsForContinue(r,s)).find(c=>!this.isDeletedSession(c.sessionId));if(u)return b.info({sessionId:u.sessionId,cwd:s},"continue mode: resuming last session"),this.resumeSession(e,n,u.sessionId,r,s,i);b.info("continue mode: no previous sessions found, creating new")}catch(l){b.warn({error:String(l)},"continue mode: error finding sessions, creating new")}try{let l=this.createDriver(r),u=this.configureDriverBeforeStart(r,l,void 0,a);if(r==="codex"){let g=`pending_${Date.now()}`;b.info({sessionId:g,agent:r,cwd:s},"session created (pending codex startup)"),_.increment("session.create",{agent:r}),I.emit("session.create",{sessionId:g,agent:r,cwd:s,approvalMode:i});let f={sessionId:g,agent:r,cwd:s,approvalMode:i,model:a,driver:l,clients:new Set([e]),title:"New session",createdAt:new Date().toISOString(),lastActivityAt:new Date().toISOString(),active:!0,lastActivityTs:this.currentWatchdogTime(),isResponding:!1,currentReplyText:"",acceptedClientMessageIds:[],interruptedClientMessageIds:[],syntheticApprovalRetries:{},startupInProgress:!0,bufferedPrompts:[],startupToken:1,managed:!0,claudeHookSecret:u,pendingClaudeHookApprovals:new Map};this.sessions.set(g,f),this.registerClaudeHookSession(f),this.store.upsert(J(f)),this.updateGauges(),Gr(),Pr(),this.noteInventoryChanged("session_created"),this.bindDriverLifecycle(f,r,"",e),this.reply(e,n,!0,{sessionId:g}),this.startPendingCodexSession(f,e);return}let c=_.startTimer("driver.spawn"),d=await l.start(s,void 0,i),p=c();b.info({sessionId:d,agent:r,spawnMs:p},"session created"),_.increment("session.create",{agent:r}),I.emit("session.create",{sessionId:d,agent:r,cwd:s,approvalMode:i});let h={sessionId:d,agent:r,cwd:s,approvalMode:i,model:a,driver:l,clients:new Set([e]),title:"New session",createdAt:new Date().toISOString(),lastActivityAt:new Date().toISOString(),active:!0,lastActivityTs:this.currentWatchdogTime(),isResponding:!1,currentReplyText:"",acceptedClientMessageIds:[],interruptedClientMessageIds:[],syntheticApprovalRetries:{},startupInProgress:!1,bufferedPrompts:[],startupToken:0,managed:!0,claudeHookSecret:u,pendingClaudeHookApprovals:new Map};this.sessions.set(d,h),this.registerClaudeHookSession(h),this.store.upsert(J(h)),this.updateGauges(),Gr(),Pr(),this.noteInventoryChanged("session_created"),this.bindDriverLifecycle(h,r,"",e),this.reply(e,n,!0,{sessionId:d})}catch(l){b.error({agent:r,cwd:s,error:String(l)},"createSession error"),this.reply(e,n,!1,void 0,String(l))}}async resumeSession(e,n,r,s,i,o){let a=this.resolveSessionRef(r);if(r=a.resolvedSessionId,this.isDeletedSession(r)){this.reply(e,n,!1,void 0,"Session not found");return}let l=this.sessions.get(r);if(l&&l.active){l.clients.add(e),this.touchSession(l.sessionId),this.noteInventoryChanged("session_updated");let h=await En(r,s,l.cwd),g=this.annotateHistoryMessages(h,l.acceptedClientMessageIds,l.interruptedClientMessageIds),f=this.currentPartialReplyText(l);if(h.length>0||f||l.approvalMode||l.pendingApproval||l.stallWarning){let m={type:"session.history",sessionId:r,messages:g,...Kr(l.acceptedClientMessageIds),isResponding:l.isResponding||void 0,partialReplyText:f,approvalMode:l.approvalMode,pendingApproval:l.pendingApproval,stallWarning:l.stallWarning};e.readyState===1&&e.send(JSON.stringify(m))}this.reply(e,n,!0,this.buildResolvedSessionResponseData(a,{sessionId:r}));return}let u=this.store.find(r),c=i||u?.cwd||"",d=o??u?.approvalMode,p=u?.title??"Resumed session";try{let h=_.startTimer("driver.spawn"),g=this.createDriver(s),f=this.configureDriverBeforeStart(s,g),m=this.canResumeDriverSession(s,r),y=await g.start(c,m?r:void 0,d),T=h();b.info({sessionId:y,agent:s,spawnMs:T},"session resumed"),_.increment("session.resume",{agent:s}),I.emit("session.resume",{sessionId:y,agent:s,cwd:c});let A={sessionId:y,agent:s,cwd:c,approvalMode:d,model:u?.model,driver:g,clients:new Set([e]),title:p,createdAt:u?.createdAt??new Date().toISOString(),lastActivityAt:new Date().toISOString(),lastUsage:u?.lastUsage,active:!0,lastActivityTs:this.currentWatchdogTime(),isResponding:!1,currentReplyText:"",acceptedClientMessageIds:u?.acceptedClientMessageIds??[],interruptedClientMessageIds:u?.interruptedClientMessageIds??[],syntheticApprovalRetries:{},startupInProgress:!1,bufferedPrompts:[],startupToken:0,managed:u?.managed,pendingApproval:u?.pendingApproval,stallWarning:u?.stallWarning,claudeHookSecret:f,pendingClaudeHookApprovals:new Map};this.sessions.set(y,A),this.rememberSessionAlias(r,y),this.registerClaudeHookSession(A),this.store.upsert(J(A)),this.updateGauges(),this.noteInventoryChanged("session_updated"),this.bindDriverLifecycle(A,s," (resumed)",e),this.restoreDriverPendingApproval(g,A.pendingApproval);let C=await En(m?r:y,s,c),P=this.annotateHistoryMessages(C,A.acceptedClientMessageIds,A.interruptedClientMessageIds);if(C.length>0||A.pendingApproval||A.stallWarning){b.info({sessionId:r,historyCount:C.length},"sending history messages");let G={type:"session.history",sessionId:y,messages:P,...Kr(A.acceptedClientMessageIds),approvalMode:d,pendingApproval:A.pendingApproval,stallWarning:A.stallWarning};e.readyState===1&&e.send(JSON.stringify(G))}this.reply(e,n,!0,this.buildSessionResponseData(a,y,{sessionId:y}))}catch(h){this.reply(e,n,!1,void 0,String(h))}}hasAcceptedClientMessage(e,n){return e.acceptedClientMessageIds.includes(n)}rememberAcceptedClientMessage(e,n){this.hasAcceptedClientMessage(e,n)||(e.acceptedClientMessageIds.push(n),e.acceptedClientMessageIds.length>Ft&&e.acceptedClientMessageIds.splice(0,e.acceptedClientMessageIds.length-Ft))}rememberInterruptedClientMessage(e,n){e.interruptedClientMessageIds.includes(n)||(e.interruptedClientMessageIds.push(n),e.interruptedClientMessageIds.length>Ft&&e.interruptedClientMessageIds.splice(0,e.interruptedClientMessageIds.length-Ft))}markLatestAcceptedClientMessageInterrupted(e){let n=e.acceptedClientMessageIds[e.acceptedClientMessageIds.length-1];n&&this.rememberInterruptedClientMessage(e,n)}annotateHistoryMessages(e,n,r){if(!e.length||!n?.length||!r?.length)return e;let s=new Set(r),i=[];for(let c=0;c<e.length;c+=1)e[c]?.role==="user"&&i.push(c);if(i.length===0)return e;let o=Math.min(i.length,n.length);if(o===0)return e;let a=new Map,l=n.length-o,u=i.length-o;for(let c=0;c<o;c+=1){let d=n[l+c];s.has(d)&&a.set(i[u+c],"interrupted")}return a.size===0?e:e.map((c,d)=>c.role==="user"&&a.has(d)?{...c,delivery:"interrupted"}:c)}async sendMessage(e,n,r,s,i,o,a,l){let u=this.resolveSessionRef(r);if(r=u.resolvedSessionId,this.isDeletedSession(r)){this.reply(e,n,!1,void 0,"Session not found");return}let c=this.sessions.get(r);if(!c||!c.driver){let f=await this.resolveReconnectSession(r,i,c);if(!f){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:f.agent,source:f.source},"auto-reconnecting session"),_.increment("session.reconnect",{agent:f.agent,source:f.source}),I.emit("session.reconnect",{sessionId:r,agent:f.agent,source:f.source});try{let m=this.createDriver(f.agent),y=this.configureDriverBeforeStart(f.agent,m,c?.claudeHookSecret),T=this.canResumeDriverSession(f.agent,r),A=await m.start(f.cwd,T?r:void 0,f.approvalMode);this.restoreDriverPendingApproval(m,f.pendingApproval),c?(c.approvalMode=f.approvalMode,c.model=f.model,c.pendingApproval=f.pendingApproval,c.driver=m,c.active=!0,c.clients.add(e),c.lastActivityAt=f.lastActivityAt,c.lastUsage=f.lastUsage,c.lastActivityTs=this.currentWatchdogTime(),c.isResponding=!1,c.currentReplyText="",c.acceptedClientMessageIds=ke(c.acceptedClientMessageIds,f.acceptedClientMessageIds),c.interruptedClientMessageIds=ke(c.interruptedClientMessageIds,f.interruptedClientMessageIds),c.syntheticApprovalRetries=c.syntheticApprovalRetries??{},c.startupInProgress=!1,c.bufferedPrompts=c.bufferedPrompts??[],c.startupToken=c.startupToken??0,c.claudeHookSecret=y??c.claudeHookSecret,c.pendingClaudeHookApprovals=c.pendingClaudeHookApprovals??new Map,A&&A!==c.sessionId&&this.remapSessionId(c,A)):(c={sessionId:A,agent:f.agent,cwd:f.cwd,approvalMode:f.approvalMode,model:f.model,driver:m,clients:new Set([e]),title:f.title,createdAt:f.createdAt,lastActivityAt:f.lastActivityAt,lastUsage:f.lastUsage,active:!0,lastActivityTs:this.currentWatchdogTime(),isResponding:!1,currentReplyText:"",acceptedClientMessageIds:f.acceptedClientMessageIds,interruptedClientMessageIds:f.interruptedClientMessageIds,syntheticApprovalRetries:{},startupInProgress:!1,bufferedPrompts:[],startupToken:0,managed:f.managed,pendingApproval:f.pendingApproval,claudeHookSecret:y,pendingClaudeHookApprovals:new Map,interruptReason:f.interruptReason},this.sessions.set(A,c),this.rememberSessionAlias(r,A)),this.registerClaudeHookSession(c),this.bindDriverLifecycle(c,f.agent," (reconnected)"),this.store.upsert(J(c)),this.updateGauges(),this.noteInventoryChanged("session_updated"),r=c.sessionId}catch(m){this.reply(e,n,!1,void 0,`Failed to reconnect: ${m}`);return}}if(c.clients.add(e),c.pendingApproval){this.reply(e,n,!1,void 0,"Resolve the pending approval before sending another message.");return}if(o&&this.hasAcceptedClientMessage(c,o)){this.reply(e,n,!0,this.buildResolvedSessionResponseData(u,{sessionId:r,clientMessageId:o,duplicate:!0}));return}b.info({sessionId:r,clients:c.clients.size,hasDriver:!!c.driver,active:c.active,imageCount:a?.length??0},"sending message"),I.emit("session.send",{sessionId:r,agent:c.agent,messagePreview:s.slice(0,100),imageCount:a?.length??0}),Nd(c),c.interruptReason&&(c.interruptReason=void 0,this.store.upsert(J(c)),this.noteInventoryChanged("session_updated"));let d=this.clearStallWarning(c);if(Pt(c.title)){let f=Li(s,50);f&&f!==c.title&&(c.title=f),this.store.upsert(J(c))}o&&this.rememberAcceptedClientMessage(c,o),this.touchSession(c.sessionId),d&&this.noteInventoryChanged("session_updated");let p=new Set([".png",".jpg",".jpeg",".gif",".webp",".heic",".heif",".bmp",".svg"]),h=a?.length?a.map(f=>{let m=f.lastIndexOf("."),y=m>=0?f.slice(m).toLowerCase():"";return`[Attached ${p.has(y)?"image":"file"}: ${f}]`}).join(`
108
- `):"",g=h?s?`${s}
105
+ `):""}function eS(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(`
106
+ `):""}function dd(t){if(typeof t=="string")return t;let e=eS(t);return e||(Array.isArray(t)&&t.length>0&&t.every(s=>s&&typeof s=="object"&&s.type==="tool_reference")?"":JSON.stringify(t))}var tS=/Claude requested permissions to (?:edit|write to) (.+?) which is a sensitive file\.?$/i;function nS(t){let n=t.match(tS)?.[1]?.trim();return n||null}function sS(t){return{role:"assistant",type:"info",historyKey:`claude-sensitive-file:${t}`,content:`Vibelet \u63D0\u793A\uFF1AClaude \u628A ${t} \u89C6\u4E3A\u654F\u611F\u8DEF\u5F84\u3002\u8FD9\u7C7B\u6279\u51C6\u65E0\u6CD5\u4ECE\u5DF2\u6709\u4F1A\u8BDD\u8BB0\u5F55\u91CC\u8865\u56DE\u5230 Vibelet\u3002\u8BF7\u91CD\u65B0\u6267\u884C\u8FD9\u6B21\u4FEE\u6539\u5E76\u5728 Claude \u4E2D\u660E\u786E\u6279\u51C6\uFF1B\u5982\u679C\u5E0C\u671B\u5728 Vibelet \u91CC\u770B\u5230\u5BA1\u6279\u5F39\u7A97\uFF0C\u8BF7\u4ECE Vibelet \u542F\u52A8\u6216\u7EE7\u7EED\u8FD9\u4E2A\u4F1A\u8BDD\u3002`}}function rS(t){let e=Zv(t?.message?.content);if(/\[Request interrupted by user(?: for tool use)?\]/i.test(e))return!0;let n=t?.toolUseResult;return!!(n&&typeof n=="object"&&n.interrupted===!0||typeof n=="string"&&/\[Request interrupted by user(?: for tool use)?\]/i.test(n))}function wd(t){let e=t.trim();return e.startsWith("# AGENTS.md instructions for ")||e.startsWith("<environment_context>")}function $s(t,e="scanner"){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,title:t.title,observedApprovalMode:t.approvalMode,lastUsage:t.lastUsage,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,sources:[e],runtime:Vi()}}function Lt(t,e){let n=(0,F.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 iS(t,e){let n=await vd(t,e),s=yd(n,64),r="",i="",o,a,l;for(let c of s){let d;try{d=JSON.parse(c)}catch{continue}if(!r&&typeof d.cwd=="string"&&(r=d.cwd),!i&&typeof d.sessionId=="string"&&(i=d.sessionId),o||(o=nt([d.customTitle,d.summary])),!l){let f=Ys(d),h=nt([],f);h&&(a=f,l=h)}if(r&&(o||l))break}if(!r)return null;let u=await _d(t,e);return{sessionId:i||Lt("claude",t)||(0,F.basename)(t,".jsonl"),cwd:r,title:o??l??nt([],a),approvalMode:u.approvalMode,lastUsage:u.lastUsage}}async function oS(t,e){let n=await vd(t,e),s=yd(n,96),r="",i="",o,a,l;for(let c of s){let d;try{d=JSON.parse(c)}catch{continue}if(r||(r=d.payload?.cwd??d.cwd??""),i||(i=d.payload?.id??d.id??""),o||(o=nt([d.payload?.title,d.title])),!l){let f=bd(d),h=f&&!wd(f)?nt([],f):void 0;h&&(a=f,l=h)}if(r&&(o||l))break}if(!r)return null;let u=await $v(t,e);return{sessionId:i||Lt("codex",t)||(0,F.basename)(t,".jsonl"),cwd:r,title:o??l??nt([],a),approvalMode:u.approvalMode,lastUsage:u.lastUsage}}async function rt(t,e){let n=await(0,O.stat)(t).catch(()=>null);if(!n)return null;try{let s=n.size;if(e==="claude"){let i=await iS(t,s);return i?{sessionId:i.sessionId,agent:e,cwd:i.cwd,title:i.title,approvalMode:i.approvalMode,lastUsage:i.lastUsage,createdAt:new Date(n.birthtimeMs).toISOString(),lastActivityAt:new Date(n.mtimeMs).toISOString(),filePath:t}:null}let r=await oS(t,s);return r?{sessionId:r.sessionId,agent:e,cwd:r.cwd,title:r.title,approvalMode:r.approvalMode,lastUsage:r.lastUsage,createdAt:new Date(n.birthtimeMs).toISOString(),lastActivityAt:new Date(n.mtimeMs).toISOString(),filePath:t}:null}catch{return null}}async function fd(t,e){let n=(0,F.join)((0,ye.homedir)(),".claude","projects");try{let s;t?s=[gd(t)]:s=(await(0,O.readdir)(n,{withFileTypes:!0})).filter(u=>u.isDirectory()).map(u=>u.name);let r=[];for(let l of s){let u=(0,F.join)(n,l),c=await(0,O.readdir)(u).catch(()=>[]);for(let d of c)d.endsWith(".jsonl")&&r.push((0,F.join)(u,d))}let i=await ot(r,it,async l=>{let u=await(0,O.stat)(l).catch(()=>null);return{path:l,mtimeMs:u?.mtimeMs??0}});return i.sort((l,u)=>u.mtimeMs-l.mtimeMs),(await ot(i,it,async l=>{let u=await rt(l.path,"claude");return u&&e&&e.push($s(u)),u})).filter(l=>l!==null).map(l=>$s(l)).sort((l,u)=>u.lastActivityAt.localeCompare(l.lastActivityAt))}catch(s){return Ae.warn({error:String(s)},"failed to list claude sessions"),[]}}async function pd(t,e){try{let n=await so(),s=await ot(n,it,async i=>{let o=await rt(i.path,"codex");return o&&e&&(!t||o.cwd===t)&&e.push($s(o)),o});return Uv(s.map((i,o)=>i?{cwd:i.cwd,match:{path:n[o].path,mtimeMs:n[o].mtimeMs,sessionId:i.sessionId}}:null).filter(i=>i!==null)),s.filter(i=>i!==null).filter(i=>!t||i.cwd===t).map(i=>$s(i)).sort((i,o)=>o.lastActivityAt.localeCompare(i.lastActivityAt))}catch(n){return Ae.warn({error:String(n)},"failed to list codex sessions"),[]}}async function ju(t){if(!t)return null;let e=`codex-latest:${(0,ye.homedir)()}`,n=js.get(e);if(n){let i=n.get(t);return i?{sessionId:i.sessionId,filePath:i.path}:null}Gs||(Gs=(async()=>{let i=await so(),o=await ot(i,it,async l=>{let u=await rt(l.path,"codex");return u?{cwd:u.cwd,match:{path:l.path,mtimeMs:l.mtimeMs,sessionId:u.sessionId}}:null}),a=new Map;for(let l of o)!l||a.has(l.cwd)||a.set(l.cwd,l.match);return js.set(e,a),a})().finally(()=>{Gs=null}));let r=(await Gs).get(t);return r?{sessionId:r.sessionId,filePath:r.path}:null}async function Pn(t,e,n){let r=`list:${(0,ye.homedir)()}:${t??"all"}:${e??""}`,i=Ki.get(r);if(i)return i;let o=Qi.get(r);if(o)return o;let a=(async()=>{let l;if(t==="claude")l=await fd(e,n);else if(t==="codex")l=await pd(e,n);else{let[u,c]=await Promise.all([fd(e,n),pd(e,n)]);l=[...u,...c].sort((d,f)=>f.lastActivityAt.localeCompare(d.lastActivityAt))}return Ki.set(r,l),l})();return Qi.set(r,a),a.finally(()=>Qi.delete(r)),a}async function ad(t,e,n){let r=`search:${(0,ye.homedir)()}:${t}:${e??"all"}:${n??"all"}`,i=Xi.get(r);if(i)return i;let o=Yi.get(r);if(o)return o;let a=(async()=>{let l=new Set,u=t.toLowerCase(),c=n??0;function d(g){if(c<=0)return g;let p=g.findIndex(m=>m.mtimeMs<c);return p===-1?g:g.slice(0,p)}async function f(){try{let g=await Fv(),p=d(await md(g)),m=await ot(p,it,y=>hd(y.path,u,"claude"));for(let y of m)y&&l.add(y)}catch(g){Ae.warn({error:String(g)},"failed to search claude files")}}async function h(){try{let g=d(await so()),p=await ot(g,it,m=>hd(m.path,u,"codex"));for(let m of p)m&&l.add(m)}catch(g){Ae.warn({error:String(g)},"failed to search codex files")}}return e==="claude"?await f():e==="codex"?await h():await Promise.all([f(),h()]),Xi.set(r,l),l})();return Yi.set(r,a),a.finally(()=>Yi.delete(r)),a}async function hd(t,e,n){let s=(0,Zi.createReadStream)(t,{encoding:"utf-8"}),r=(0,eo.createInterface)({input:s,crlfDelay:1/0}),i=n==="claude"?aS:lS,o="",a=!1;try{for await(let l of r){if(!l.trim())continue;let u;try{u=JSON.parse(l)}catch{continue}if(o||(n==="claude"?typeof u.sessionId=="string"&&(o=u.sessionId):o=u.payload?.id??u.id??""),!a){let c=i(u);c&&c.toLowerCase().includes(e)&&(a=!0)}if(o&&a)break}}finally{r.close(),s.destroy()}return a?o||Lt(n,t):null}function aS(t){return t?.type==="user"&&t.message?.role==="user"?Ys(t):t?.type==="assistant"&&t.message?.role==="assistant"?Qs(t.message.content):""}function lS(t){if(t?.type==="response_item"&&t.payload?.type==="message"){let n=t.payload.role;if(n==="user"||n==="assistant")return ro(t.payload.content)}let e=bd(t);return e||""}async function zs(t,e){let n=(0,Zi.createReadStream)(t,{encoding:"utf-8"}),s=(0,eo.createInterface)({input:n,crlfDelay:1/0});try{for await(let r of s){if(!r.trim())continue;let i;try{i=JSON.parse(r)}catch{continue}if(e(i))break}}finally{s.close(),n.destroy()}}async function io(t,e){let n=(0,F.join)((0,ye.homedir)(),".claude","projects"),s=e?gd(e):null,r=await(0,O.readdir)(n).catch(()=>[]),i=s?[s,...r.filter(o=>o!==s)]:r;for(let o of i){let a=(0,F.join)(n,o,`${t}.jsonl`);if((await(0,O.stat)(a).catch(()=>null))?.isFile())return a}return null}async function Id(t,e){let n=await io(t,e);if(!n)return;let s=await(0,O.stat)(n).catch(()=>null);return s?.isFile()?(await _d(n,s.size)).lastUsage:void 0}async function oo(t,e,n){if(e==="claude")return io(t,n);let s=(0,F.join)((0,ye.homedir)(),".codex","sessions");return Ad(s,t)}function cS(t){if(t?.type==="user"&&t.message?.role==="user")return Xv(t.message.content)?{kind:"toolResult",...rS(t)?{interrupted:!0}:{}}:Ys(t)?{kind:"userPrompt"}:null;if(t?.type==="assistant"&&t.message?.role==="assistant"){let e=Qs(t.message.content),n=t.message?.stop_reason;return{kind:"assistant",stopReason:typeof n=="string"?n:n??null,...e?{text:e}:{}}}return t?.type==="system"&&t.subtype==="stop_hook_summary"?{kind:"stopHook"}:null}function uS(t){if(!t)return{};if(t.kind==="stopHook")return{};if(t.kind==="assistant"){let e=t.stopReason==null||t.stopReason==="tool_use";return{...e?{isResponding:!0}:{},...e&&t.text?{partialReplyText:t.text}:{}}}return t.kind==="toolResult"&&t.interrupted?{}:{isResponding:!0}}async function qi(t,e){if(e!=="claude")return{};let n=null;try{await zs(t,s=>{let r=cS(s);r&&(n=r)})}catch(s){return s.code!=="ENOENT"&&Ae.warn({filePath:t,error:String(s)},"failed to read session runtime hints"),{}}return uS(n)}async function ao(t,e,n){let s=await oo(t,e,n);return s?qi(s,e):{}}function dS(t){if(typeof t?.timestamp!="string")return null;let e=Date.parse(t.timestamp);return Number.isFinite(e)?e:null}async function Td(t,e,n,s){if(e!=="codex"||!s||s<=0)return[];let r=await oo(t,e,n);if(!r)return[];let i=[];try{await zs(r,l=>{let u=dS(l);u!=null&&u<s||i.push(...xi(l,{cwd:n,includePatchCalls:!1}))})}catch(l){return l.code!=="ENOENT"&&Ae.warn({filePath:r,error:String(l)},"failed to read generated file notices"),[]}let o=await uu(i,s),a=Te(o);return a?[a]:[]}async function Mn(t,e,n){let s=[],r=(i,o)=>{let a=Yv(i);if(o?.coalesceConsecutiveAssistant&&a.role==="assistant"){let l=s[s.length-1];if(l?.role==="assistant"&&l.type!=="info"&&a.type!=="info"&&!cu(l.content)){s[s.length-1]=a;return}}s.push(a)};if(e==="claude")try{let i=await io(t,n);if(i){let o=new Map;await zs(i,a=>{if(a.type==="assistant"&&a.message?.role==="assistant"&&Array.isArray(a.message.content))for(let l of a.message.content){if(!l||typeof l!="object"||l.type!=="tool_use"||typeof l.id!="string")continue;let u=As(typeof l.name=="string"?l.name:null,l.input&&typeof l.input=="object"?l.input:null,n);u&&o.set(l.id,u)}if(a.type==="user"&&a.message?.role==="user"){if(Array.isArray(a.message.content))for(let u of a.message.content){if(!u||typeof u!="object"||u.type!=="tool_result")continue;if(u.is_error===!0){let g=dd(u.content),p=nS(g);p&&r(sS(p));continue}let c=typeof u.tool_use_id=="string"?u.tool_use_id:"",d=c?o.get(c):void 0;if(!d)continue;let f=dd(u.content);if(!ks(a.toolUseResult,f))continue;let h=Te([d]);h&&r({role:"assistant",content:h})}let l=Ys(a);l&&r({role:"user",content:l})}else if(a.type==="assistant"&&a.message?.role==="assistant"){let l=Qs(a.message.content);l&&r({role:"assistant",content:l})}})}}catch(i){Ae.warn({error:String(i)},"failed to read claude session history")}else if(e==="codex")try{let i=await oo(t,e,n);i&&await zs(i,o=>{let a=xi(o,{cwd:n,includePatchCalls:!0}),l=Te(a);if(l&&r({role:"assistant",content:l}),o.type!=="response_item"||o.payload?.type!=="message")return;let u=o.payload.role;if(u!=="user"&&u!=="assistant")return;let c=ro(o.payload.content);c&&(u==="user"&&wd(c)||r({role:u,content:c},{coalesceConsecutiveAssistant:!0}))})}catch(i){Ae.warn({error:String(i)},"failed to read codex session history")}return s}async function Ad(t,e){try{let n=await(0,O.readdir)(t,{withFileTypes:!0});for(let s of n){let r=(0,F.join)(t,s.name);if(s.isDirectory()){let i=await Ad(r,e);if(i)return i}else if(s.name.includes(e)&&s.name.endsWith(".jsonl"))return r}}catch(n){Ae.warn({error:String(n)},"failed to walk codex sessions dir")}return null}var Bt=require("fs"),Rd=require("path");var fS=500,kd=200;function Cd(t){if(!Array.isArray(t))return[];let e=t.filter(n=>typeof n=="string"&&n.length>0);return e.length<=kd?e:e.slice(-kd)}function pS(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 hS(t){if(!t||typeof t!="object"||Array.isArray(t))return{};let e={};for(let[n,s]of Object.entries(t))typeof n!="string"||n.length===0||typeof s!="string"||s.length===0||n===s||(e[n]=s);return e}function gS(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n=typeof e.requestId=="string"?e.requestId:"",s=typeof e.toolName=="string"?e.toolName:"",r=typeof e.description=="string"?e.description:"",i=e.input&&typeof e.input=="object"&&!Array.isArray(e.input)?e.input:{};if(!n||!s||!r)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:s,input:i,description:r,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:s,input:i,description:r}}function mS(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t;if(e.kind!=="stall_timeout"&&e.kind!=="driver_crash"||typeof e.at!="string"||!e.at||typeof e.humanText!="string"||!e.humanText)return;let n={kind:e.kind,at:e.at,humanText:e.humanText};return typeof e.lastPrompt=="string"&&e.lastPrompt&&(n.lastPrompt=e.lastPrompt),typeof e.idleMs=="number"&&Number.isFinite(e.idleMs)&&(n.idleMs=e.idleMs),typeof e.exitCode=="number"&&Number.isFinite(e.exitCode)&&(n.exitCode=e.exitCode),n}function yS(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t;if(typeof e.content!="string"||typeof e.enqueuedAt!="string"||!e.enqueuedAt)return;let n={content:e.content,enqueuedAt:e.enqueuedAt};if(typeof e.clientMessageId=="string"&&e.clientMessageId&&(n.clientMessageId=e.clientMessageId),typeof e.model=="string"&&e.model&&(n.model=e.model),Array.isArray(e.images)){let s=e.images.filter(r=>typeof r=="string"&&r.length>0);s.length>0&&(n.images=s)}return n}function vS(t){if(!Array.isArray(t))return;let e=[];for(let n of t){let s=yS(n);s&&e.push(s)}return e.length>0?e:void 0}function SS(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t;if(typeof e.at!="string"||!e.at||typeof e.humanText!="string"||!e.humanText)return;let n={at:e.at,humanText:e.humanText};return typeof e.idleMs=="number"&&Number.isFinite(e.idleMs)&&(n.idleMs=e.idleMs),typeof e.hardTimeoutMs=="number"&&Number.isFinite(e.hardTimeoutMs)&&(n.hardTimeoutMs=e.hardTimeoutMs),n}function _S(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n=Number(e.inputTokens),s=Number(e.outputTokens);if(!Number.isFinite(n)||!Number.isFinite(s))return;let r=Number(e.contextWindowTokens),i=Number(e.cacheCreationInputTokens),o=Number(e.cacheReadInputTokens);return{inputTokens:n,outputTokens:s,...Number.isFinite(i)&&i>=0?{cacheCreationInputTokens:i}:{},...Number.isFinite(o)&&o>=0?{cacheReadInputTokens:o}:{},...Number.isFinite(r)&&r>0?{contextWindowTokens:r}:{}}}function xd(t){return{...t,lastActivityAt:t.lastActivityAt??t.createdAt,acceptedClientMessageIds:Cd(t.acceptedClientMessageIds),interruptedClientMessageIds:Cd(t.interruptedClientMessageIds),pendingApproval:gS(t.pendingApproval),lastUsage:_S(t.lastUsage),interruptReason:mS(t.interruptReason),stallWarning:SS(t.stallWarning),pendingQueue:vS(t.pendingQueue)}}function bS(t){if(Array.isArray(t))return{records:t.map(xd),deletedSessionIds:[],sessionAliases:{}};if(t&&typeof t=="object"){let e=t;return{records:Array.isArray(e.records)?e.records.map(xd):[],deletedSessionIds:pS(e.deletedSessionIds),sessionAliases:hS(e.sessionAliases)}}return{records:[],deletedSessionIds:[],sessionAliases:{}}}var Js=class{records;deletedSessionIds;sessionAliases;debounceTimer=null;constructor(){let e=this.loadFromDisk();this.records=e.records,this.deletedSessionIds=new Set(e.deletedSessionIds),this.sessionAliases=new Map(Object.entries(e.sessionAliases))}getAll(){return this.records}getDeletedSessionIds(){return[...this.deletedSessionIds]}resolveSessionId(e){let n=e,s=new Set;for(;!s.has(n);){s.add(n);let r=this.sessionAliases.get(n);if(!r||r===n)break;n=r}return n}find(e){let n=this.resolveSessionId(e);return this.records.find(s=>s.sessionId===n)}isDeleted(e){let n=this.resolveSessionId(e);return this.deletedSessionIds.has(e)||this.deletedSessionIds.has(n)}upsert(e){this.deletedSessionIds.delete(e.sessionId),this.sessionAliases.delete(e.sessionId);let n=this.records.findIndex(s=>s.sessionId===e.sessionId);n>=0?this.records[n]=e:this.records.unshift(e),this.scheduleSave()}addAlias(e,n){if(!e||!n)return;let s=this.resolveSessionId(n);if(!s||e===s){this.sessionAliases.delete(e),this.deletedSessionIds.delete(e),this.scheduleSave();return}this.deletedSessionIds.delete(e),this.sessionAliases.set(e,s),this.scheduleSave()}forget(e){this.records=this.records.filter(n=>n.sessionId!==e),this.deletedSessionIds.delete(e),this.scheduleSave()}remove(e){let n=this.resolveSessionId(e);this.records=this.records.filter(r=>r.sessionId!==e&&r.sessionId!==n);let s=[];for(let[r,i]of this.sessionAliases)(r===e||r===n||i===n)&&(this.sessionAliases.delete(r),s.push(r));this.deletedSessionIds.add(n),e!==n&&this.deletedSessionIds.add(e);for(let r of s)this.deletedSessionIds.add(r);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()},fS)}loadFromDisk(){try{let e=(0,Bt.readFileSync)(gs,"utf-8");return bS(JSON.parse(e))}catch{}return{records:[],deletedSessionIds:[],sessionAliases:{}}}saveToDisk(){(0,Bt.mkdirSync)((0,Rd.dirname)(gs),{recursive:!0}),(0,Bt.writeFileSync)(gs,JSON.stringify({records:this.records,deletedSessionIds:[...this.deletedSessionIds],sessionAliases:Object.fromEntries(this.sessionAliases)},null,2))}};var Dt=require("path"),Ed=require("os");function Ks(t){return t=t.replace(/^~/,"~"),t.startsWith("~/")||t==="~"?(0,Dt.join)((0,Ed.homedir)(),t.slice(2)):t}function wS(t){let e=t.trim();if(!e)return"";let n=e.indexOf("#");n>0&&(e=e.slice(0,n));let s=e.match(/^(.*?)(:\d+(?::\d+)?)$/);return s&&(e=s[1]??e),e}function lo(t,e){let n=Ks(wS(t));if(!n||(0,Dt.isAbsolute)(n))return n;let s=Ks(e??"");return s?(0,Dt.resolve)(s,n):n}var Pd={approvalRequestV1:"vibelet.approvalRequest.v1"};var Ft=require("fs"),Md=require("path");function IS(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")&&(typeof t.locale=="string"||typeof t.locale>"u"))}function TS(t){try{let e=(0,Ft.readFileSync)(t,"utf8"),n=JSON.parse(e);return Array.isArray(n)?n.filter(IS):[]}catch{return[]}}function Ln(t,e){(0,Ft.mkdirSync)((0,Md.dirname)(t),{recursive:!0}),(0,Ft.writeFileSync)(t,JSON.stringify(e,null,2)+`
107
+ `,"utf8")}var Xs=class{constructor(e=Wc){this.pushSubscriptionsPath=e;this.records=TS(e)}records;list(){return this.records.map(e=>({...e}))}listTokens(){return this.records.map(e=>e.pushToken)}listRecipients(){return this.records.map(e=>({pushToken:e.pushToken,...e.locale?{locale:e.locale}:{}}))}count(){return this.records.length}register(e,n,s){let r=new Date().toISOString(),i=this.records.find(l=>l.deviceId===e),o=s??i?.locale,a={deviceId:e,pushToken:n,platform:"expo",createdAt:i?.createdAt??r,updatedAt:r,...i?.lastSentAt?{lastSentAt:i.lastSentAt}:{},...o?{locale:o}:{}};this.records=[a,...this.records.filter(l=>l.deviceId!==e&&l.pushToken!==n)],Ln(this.pushSubscriptionsPath,this.records)}unregister(e,n){let s=this.records.filter(r=>!(r.deviceId===e&&r.pushToken===n));return s.length===this.records.length?!1:(this.records=s,Ln(this.pushSubscriptionsPath,this.records),!0)}unregisterToken(e){let n=this.records.filter(s=>s.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),s=new Date().toISOString(),r=!1;for(let i of this.records)n.has(i.pushToken)&&(i.lastSentAt=s,r=!0);r&&Ln(this.pushSubscriptionsPath,this.records)}reset(){this.records=[],Ln(this.pushSubscriptionsPath,this.records)}};var K=N.child({module:"push"}),AS="https://exp.host/--/api/v2/push/send",kS="https://exp.host/--/api/v2/push/getReceipts",CS=[0,1e3,3e3],Nn=new Xs;function xS(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 RS(t){return new Promise(e=>{setTimeout(e,t)})}function Ld(t){return t==="DeviceNotRegistered"}function ES(t,e){if(!Array.isArray(t.data))return{successfulTokens:[],ticketErrors:[]};let n=[],s=[];for(let[r,i]of t.data.entries()){let o=e[r];if(!(!o||!i||typeof i!="object")){if(i.status==="ok"){n.push(o);continue}s.push({token:o,ticket:i})}}return{successfulTokens:n,ticketErrors:s}}function PS(t,e){let n=new Map;if(!Array.isArray(t.data))return n;for(let[s,r]of t.data.entries()){let i=e[s];!i||!r||r.status!=="ok"||typeof r.id!="string"||r.id.length===0||n.set(r.id,i)}return n}function MS(t,e){let n=[],s=[],r=t.data;for(let[i,o]of e.entries()){let a=r?.[i];if(!a||typeof a!="object"){n.push(i);continue}a.status==="error"&&s.push({token:o,receipt:a})}return{pendingTicketIds:n,receiptErrors:s}}async function LS(t,e,n,s){let r=new Map(t);for(let i of CS){if(r.size===0)return;i>0&&await n(i);let o;try{o=await e(kS,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:[...r.keys()]})})}catch(c){K.error({error:String(c),count:r.size},"push receipt request failed");return}if(!o.ok){K.error({status:o.status,statusText:o.statusText,count:r.size},"push receipt request returned error status");return}let a=await o.json().catch(()=>null);if(!a){K.error({count:r.size},"push receipt response was unreadable");return}let{pendingTicketIds:l,receiptErrors:u}=MS(a,r);for(let{token:c,receipt:d}of u){let f=d.details?.error;if(K.error({token:c,message:d.message,details:d.details,receiptStatus:d.status},"push receipt rejected"),Ld(f)){let h=s.unregisterToken(c);K.info({token:c,errorCode:f,removed:h},"push token removed after receipt rejection")}}r=new Map(l.map(c=>[c,r.get(c)]))}r.size>0&&K.warn({pendingReceipts:r.size},"push receipts still pending after polling")}function NS(t){let e=t?.pushStore??Nn,n=t?.fetchImpl??globalThis.fetch,s=t?.sleepImpl??RS;return async function(i,o){let a=e.listRecipients();if(a.length===0)return;let l=typeof i=="function"?i:()=>i,u=a.map(d=>d.pushToken),c=a.map(({pushToken:d,locale:f})=>{let{title:h,body:g}=l(f);return{to:d,sound:"default",title:h,body:g,data:o,badge:1,priority:"high",_contentAvailable:!0,...xS(o)&&o.eventType==="approval_request"?{categoryId:Pd.approvalRequestV1}:{}}});try{let d=await n(AS,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});if(!d.ok){K.error({status:d.status,statusText:d.statusText},"push send failed");return}let f=await d.json().catch(()=>null);if(!f){K.error({count:c.length},"push send returned unreadable response");return}let{successfulTokens:h,ticketErrors:g}=ES(f,u),p=PS(f,u);for(let{token:m,ticket:y}of g){let C=y.details?.error;if(K.error({token:m,message:y.message,details:y.details,ticketStatus:y.status},"push ticket rejected"),Ld(C)){let _=e.unregisterToken(m);K.info({token:m,errorCode:C,removed:_},"push token removed after ticket rejection")}}h.length>0&&(K.debug({count:h.length},"push sent"),e.markSent(h)),p.size>0&&await LS(p,n,s,e)}catch(d){K.error({error:String(d)},"push send error")}}}function co(t,e,n){Nn.register(t,e,n),K.info({deviceId:t,token:e,locale:n,total:Nn.count()},"push token registered")}function uo(t,e){let n=Nn.unregister(t,e);K.info({deviceId:t,token:e,total:Nn.count(),removed:n},"push token unregistered")}var Zs=NS();var w=N.child({module:"manager"}),OS="Done.",BS="Approval required",Nd=180,Ut=200,DS=6e4,Od=9e4,FS=new Set([".png",".jpg",".jpeg",".gif",".webp",".heic",".heif",".bmp",".svg"]);function $d(t,e){let n=e?.length?e.map(s=>{let r=s.lastIndexOf("."),i=r>=0?s.slice(r).toLowerCase():"";return`[Attached ${FS.has(i)?"image":"file"}: ${s}]`}).join(`
108
+ `):"";return n?t?`${t}
109
109
 
110
- ${h}`:h:s;if(l!==void 0&&(c.model=l||void 0),c.startupInProgress){c.isResponding=!0,c.currentReplyText="",c.lastUserMessage=s,c.bufferedPrompts.push(g),this.noteInventoryChanged("session_updated"),this.reply(e,n,!0,this.buildSessionResponseData(u,r,o?{sessionId:r,clientMessageId:o}:{sessionId:r}));return}if(c.isResponding){c.bufferedPrompts.push(g),this.reply(e,n,!0,this.buildSessionResponseData(u,r,o?{sessionId:r,clientMessageId:o}:{sessionId:r}));return}c.isResponding=!0,c.currentReplyText="",c.lastUserMessage=s,c.lastTurnStartedAt=Date.now(),this.noteInventoryChanged("session_updated"),c.driver.sendPrompt(g,c.model),this.reply(e,n,!0,this.buildSessionResponseData(u,r,o?{sessionId:r,clientMessageId:o}:{sessionId:r}))}async sendReconnectSnapshot(e,n,r,s,i,o,a,l){try{let u=this.getDeletedSessionIds(),c;try{c=await Fr({agent:r,cwd:s,search:i,customTitles:l,limit:50,activeSessions:this.activeSessionSnapshots(),sessionRecords:this.store.getAll(),deletedSessionIds:u})}catch(h){b.warn({error:String(h)},"failed to build reconnect snapshot session list"),c={sessions:[],nextCursor:void 0}}c={...c,inventoryVersion:this.inventoryVersion};let d;if(o&&!u.has(o)){let h=o;o=this.resolveSessionRef(o).resolvedSessionId;let g=a??c.sessions.find(y=>y.sessionId===o)?.agent,f=this.sessions.get(o);f&&f.clients.add(e);let m=await this.resolveReconnectSession(o,g,f);if(m){let y=await En(o,m.agent,f?.cwd??m.cwd),T=this.annotateHistoryMessages(y,f?.acceptedClientMessageIds??m.acceptedClientMessageIds,f?.interruptedClientMessageIds??m.interruptedClientMessageIds),A=f?{}:await so(o,m.agent,m.cwd),w=!f&&!!A.isResponding,C=w?await this.externalProcessPresenceCheck(o):!1,P=w&&!C?{}:A,G=f?.interruptReason??m.interruptReason,ye=f?.stallWarning??m.stallWarning;d={sessionId:o,agent:m.agent,messages:T,...Kr(f?.acceptedClientMessageIds??m.acceptedClientMessageIds),isResponding:f?.isResponding??P.isResponding??(w&&!C?void 0:m.isResponding),...C?{externallyResponding:!0}:{},partialReplyText:f?this.currentPartialReplyText(f):P.partialReplyText,approvalMode:f?.approvalMode??m.approvalMode,...f?.pendingApproval?{pendingApproval:f.pendingApproval}:{},...G?{interruptReason:G}:{},...ye?{stallWarning:ye}:{}},h!==o&&this.reply(e,`id_update_${Date.now()}`,!0,{sessionId:o,oldSessionId:h})}}let p=this.collectReconnectPendingApprovals();_.increment("reconnect.snapshot",{activeSession:d?"true":"false"}),this.reply(e,n,!0,{snapshot:{sessions:c.sessions,nextCursor:c.nextCursor,inventoryVersion:c.inventoryVersion,...d?{activeSession:d}:{},...p.length>0?{pendingApprovals:p}:{}}})}catch(u){this.reply(e,n,!1,void 0,`Failed to build reconnect snapshot: ${String(u)}`)}}async approve(e,n,r,s,i){let o=this.resolveSessionRef(r);r=o.resolvedSessionId;let a=this.sessions.get(r),l=a?.pendingApproval,u=a?.pendingClaudeHookApprovals.get(s);if(a&&u){a.pendingApproval=void 0,I.emit("approval.response",{sessionId:r,requestId:s,approved:i}),this.touchSession(a.sessionId),this.noteInventoryChanged("session_updated"),u.resolve(Dd(i)),a.isResponding=!0,this.reply(e,n,!0,this.buildResolvedSessionResponseData(o,{sessionId:r}));return}let c=a?.syntheticApprovalRetries[s];if(a&&c&&Ar(s)){delete a.syntheticApprovalRetries[s],a.pendingApproval=void 0,I.emit("approval.response",{sessionId:r,requestId:s,approved:i}),this.touchSession(a.sessionId),this.noteInventoryChanged("session_updated"),this.reply(e,n,!0,this.buildResolvedSessionResponseData(o,{sessionId:r})),i&&await this.retrySyntheticClaudeApproval(a,c);return}if(a&&!a.driver&&l)try{await this.reviveSessionForApproval(a)}catch(p){this.reply(e,n,!1,void 0,`Failed to restore approval session: ${String(p)}`);return}if(!a?.driver){this.reply(e,n,!1,void 0,"Session not found or inactive");return}if(I.emit("approval.response",{sessionId:r,requestId:s,approved:i}),!a.driver.respondApproval(s,i)){this.reply(e,n,!1,void 0,"Agent process is not running. Send a new message to continue.");return}a.pendingApproval=void 0,this.touchSession(a.sessionId),a.isResponding=!0,this.noteInventoryChanged("session_updated"),this.reply(e,n,!0,this.buildResolvedSessionResponseData(o,{sessionId:r}))}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.lastTurnStartedAt=Date.now(),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(J(e)),this.updateGauges(),this.touchSession(e.sessionId),this.noteInventoryChanged("session_updated"),b.info({sessionId:e.sessionId,toolName:n.toolName,retryApprovalMode:r},"retrying Claude turn after synthetic approval"),s.sendPrompt(n.message,e.model)}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),this.noteInventoryChanged("session_updated"),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.resolveSessionRef(r);r=i.resolvedSessionId;let o=this.sessions.get(r);if(!o){let l=this.store.find(r);l?(s===null?delete l.approvalMode:l.approvalMode=s,this.store.upsert(l),this.noteInventoryChanged("session_updated"),b.info({sessionId:r,agent:l.agent,newMode:s},"approval mode changed (inactive session)")):b.info({sessionId:r,newMode:s},"approval mode changed (untracked session)"),this.reply(e,n,!0,this.buildResolvedSessionResponseData(i,{approvalMode:s,sessionId:r}));return}if(s===null){this.reply(e,n,!1,void 0,"Follow Remote is only available for external sessions");return}let a=o.approvalMode;o.approvalMode=s,this.store.upsert(J(o)),this.noteInventoryChanged("session_updated"),b.info({sessionId:r,agent:o.agent,oldMode:a,newMode:s},"approval mode changed"),o.driver&&o.driver.setApprovalMode(s),this.reply(e,n,!0,this.buildResolvedSessionResponseData(i,{approvalMode:s,sessionId:r}))}interrupt(e,n,r){let s=this.resolveSessionRef(r);r=s.resolvedSessionId;let i=this.sessions.get(r);if(!i){this.reply(e,n,!1,void 0,"Session not found or inactive");return}if(I.emit("session.interrupt",{sessionId:r,agent:i.agent}),!i.driver){(i.isResponding||i.bufferedPrompts.length>0)&&(b.info({sessionId:r,agent:i.agent},"interrupting driverless session with stale responding state"),i.bufferedPrompts=[],i.isResponding=!1,i.currentReplyText="",i.lastUserMessage=void 0,i.pendingApproval=void 0,this.clearStallWarning(i),this.markLatestAcceptedClientMessageInterrupted(i),this.touchSession(i.sessionId),this.noteInventoryChanged("session_updated"),this.broadcast(i.sessionId,{type:"session.interrupted",sessionId:i.sessionId})),this.reply(e,n,!0,this.buildResolvedSessionResponseData(s,{sessionId:r}));return}if(i.startupInProgress){let o=i.isResponding||i.bufferedPrompts.length>0;b.info({sessionId:r,agent:i.agent,hadBufferedTurn:o},"interrupting pending startup session"),i.bufferedPrompts=[],i.isResponding=!1,i.currentReplyText="",i.lastUserMessage=void 0,i.pendingApproval=void 0,this.clearStallWarning(i),o&&this.markLatestAcceptedClientMessageInterrupted(i),this.touchSession(i.sessionId),this.noteInventoryChanged("session_updated"),this.reply(e,n,!0,this.buildResolvedSessionResponseData(s,{sessionId:r})),o&&this.broadcast(i.sessionId,{type:"session.interrupted",sessionId:i.sessionId});return}i.driver.interrupt(),this.reply(e,n,!0,this.buildResolvedSessionResponseData(s,{sessionId:r}))}clearInterrupt(e,n,r){let s=this.resolveSessionRef(r);r=s.resolvedSessionId;let i=this.sessions.get(r),o=this.store.find(r);if(!i&&!o?.interruptReason){this.reply(e,n,!0,this.buildResolvedSessionResponseData(s,{sessionId:r}));return}let a=!1;i?.interruptReason&&(i.interruptReason=void 0,a=!0),i?this.store.upsert(J(i)):o?.interruptReason&&(this.store.upsert({...o,interruptReason:void 0}),a=!0),a&&this.noteInventoryChanged("session_updated"),this.reply(e,n,!0,this.buildResolvedSessionResponseData(s,{sessionId:r}))}stopSession(e,n,r){let s=this.resolveSessionRef(r);r=s.resolvedSessionId;let i=this.sessions.get(r);if(!i){this.reply(e,n,!1,void 0,"Session not found");return}b.info({sessionId:r,agent:i.agent},"stopping session"),I.emit("session.stop",{sessionId:r,agent:i.agent}),Nd(i);let o=i.isResponding||i.bufferedPrompts.length>0||i.startupInProgress;this.resolvePendingClaudeHookApprovals(i),i.driver?.stop(),i.active=!1,i.driver=null,i.isResponding=!1,i.currentReplyText="",i.pendingApproval=void 0,i.startupInProgress=!1,i.bufferedPrompts=[],i.startupToken+=1,this.clearStallWarning(i),o&&this.markLatestAcceptedClientMessageInterrupted(i),this.updateGauges(),this.touchSession(i.sessionId),this.noteInventoryChanged("session_updated"),this.reply(e,n,!0,this.buildResolvedSessionResponseData(s,{sessionId:r}))}deleteSession(e,n,r){let s=this.resolveSessionRef(r);r=s.resolvedSessionId;let i=this.sessions.get(r);i&&(b.info({sessionId:r,agent:i.agent},"deleting session"),this.resolvePendingClaudeHookApprovals(i),i.driver?.stop(),i.startupInProgress=!1,i.bufferedPrompts=[],i.startupToken+=1,this.unregisterClaudeHookSession(i),this.sessions.delete(r)),I.emit("session.delete",{sessionId:r}),this.store.remove(r),this.updateGauges(),Gr(),Pr(),this.noteInventoryChanged("session_deleted"),this.reply(e,n,!0,this.buildResolvedSessionResponseData(s,{sessionId:r}))}async sendHistory(e,n,r,s){let i=this.resolveSessionRef(r);r=i.resolvedSessionId;let o=this.sessions.get(r),a=o?.active?o:void 0;if(!o&&this.isDeletedSession(r)){this.reply(e,n,!1,void 0,"Session not found");return}o&&o.clients.add(e);let l=a?.cwd??o?.cwd??this.store.find(r)?.cwd??"",u=this.store.find(r),c=await En(r,s,l),d=this.annotateHistoryMessages(c,o?.acceptedClientMessageIds??u?.acceptedClientMessageIds,o?.interruptedClientMessageIds??u?.interruptedClientMessageIds),p=a||o?{}:await so(r,s,l),h=!a&&!!p.isResponding,g=h?await this.externalProcessPresenceCheck(r):!1,f=g?!0:void 0,m=h&&!g?{}:p,y=a?.isResponding??m.isResponding,T=a?this.currentPartialReplyText(a):m.partialReplyText;b.info({sessionId:r,historyCount:c.length,isResponding:y,externallyResponding:f,approvalMode:o?.approvalMode??u?.approvalMode},"sending history");let A={type:"session.history",sessionId:r,messages:d,...Kr(o?.acceptedClientMessageIds??u?.acceptedClientMessageIds),isResponding:y,externallyResponding:f,partialReplyText:T,approvalMode:o?.approvalMode??u?.approvalMode,pendingApproval:o?.pendingApproval??u?.pendingApproval,stallWarning:o?.stallWarning??u?.stallWarning};e.readyState===1&&e.send(JSON.stringify(A));let w=o?.interruptReason??u?.interruptReason;if(w&&e.readyState===1){let C={type:"session.interrupted_notice",sessionId:r,reason:w};e.send(JSON.stringify(C))}this.reply(e,n,!0,this.buildResolvedSessionResponseData(i,{sessionId:r}))}async listSessions(e,n,r,s,i,o=50,a,l){try{let u=await Fr({agent:r,cwd:s,search:i,customTitles:l,limit:o,cursor:a,activeSessions:this.activeSessionSnapshots(),sessionRecords:this.store.getAll(),deletedSessionIds:this.getDeletedSessionIds()});this.reply(e,n,!0,{...u,inventoryVersion:this.inventoryVersion})}catch(u){this.reply(e,n,!1,void 0,String(u))}}createDriver(e){switch(e){case"claude":return new _n;case"codex":return new bn;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=n.type==="approval.request"?this.globalClients:r.clients,o=i.size,a=0,l=0;for(let u of i)u.readyState===1?(u.send(s),a++):l++;if(l>0&&_.increment("broadcast.fail"),n.type!=="text.delta"&&b.debug({sessionId:e,msgType:n.type,sent:a,total:o},"broadcast"),n.type==="text.delta"){r.currentReplyText+=n.content;return}if(n.type==="session.done"){let u=r.title||e,c=this.buildPushBody(r.currentReplyText);r.currentReplyText="",this.pushSender(u,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 co(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 Ud=require("child_process");function RS(t,e){return(0,Ud.execFileSync)(t,e,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}function ES(t){let e=t.split(`
111
- `).map(n=>Number(n.trim())).filter(n=>Number.isFinite(n)&&n>0);return[...new Set(e)]}function Wd(t,e=RS){let n;try{n=ES(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 Ut=require("fs"),uo=require("os"),Gd=require("crypto"),jd=require("path");function $d(t){return(0,Gd.randomBytes)(t).toString("base64url")}function PS(){return`d_${$d(12)}`}function MS(){return(0,uo.hostname)()}function LS(){let t=(0,uo.hostname)().trim().toLowerCase();return t?t.endsWith(".local")?t:`${t}.local`:"localhost"}function NS(t){return{daemonId:PS(),daemonSecret:$d(32),displayName:MS(),canonicalHost:LS(),port:t,createdAt:new Date().toISOString()}}function qd(t,e){(0,Ut.mkdirSync)((0,jd.dirname)(e),{recursive:!0}),(0,Ut.writeFileSync)(e,JSON.stringify(t,null,2)+`
112
- `,"utf8")}function zd(t,e=Bc){try{let r=(0,Ut.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,qd(i,e)),i}}catch{}let n=NS(t);return qd(n,e),n}var Wt=require("crypto"),qt=require("fs"),Yd=require("path");function fo(t){return(0,Wt.randomBytes)(t).toString("base64url")}function po(t){return(0,Wt.createHash)("sha256").update(t).digest("hex")}function Vd(t,e){let n=Buffer.from(t),r=Buffer.from(e);return n.length!==r.length?!1:(0,Wt.timingSafeEqual)(n,r)}function OS(t){try{let e=(0,qt.readFileSync)(t,"utf8"),n=JSON.parse(e);return Array.isArray(n)?n.filter(r=>r&&typeof r.deviceId=="string"&&typeof r.deviceName=="string"&&typeof r.tokenHash=="string"&&typeof r.createdAt=="string"&&typeof r.lastSeenAt=="string"&&(typeof r.revokedAt=="string"||r.revokedAt===null)):[]}catch{return[]}}function Ln(t,e){(0,qt.mkdirSync)((0,Yd.dirname)(t),{recursive:!0}),(0,qt.writeFileSync)(t,JSON.stringify(e,null,2)+`
113
- `,"utf8")}var Qr=class{constructor(e=Dc){this.pairingsPath=e;this.records=OS(e)}records;windows=new Map;list(){return this.records.slice()}pairedCount(){return this.records.filter(e=>!e.revokedAt).length}openWindow(e=5*6e4,n=!1){let r=`pair_${fo(8)}`,s=fo(24),i=new Date(Date.now()+e).toISOString(),o={pairingId:r,pairNonce:s,expiresAt:i,reusable:n};return this.windows.set(s,o),o}consumeWindow(e){let n=this.windows.get(e);return!n||(n.reusable||this.windows.delete(e),new Date(n.expiresAt).getTime()<Date.now())?null:n}issuePairToken(e,n){let r=new Date().toISOString(),s=fo(32),i={deviceId:e,deviceName:n,tokenHash:po(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=po(n);return Vd(s.tokenHash,i)?(r&&(s.lastSeenAt=new Date().toISOString(),Ln(this.pairingsPath,this.records)),!0):!1}validateAnyPairToken(e,n=!0){let r=po(e),s=this.records.find(i=>!i.revokedAt&&Vd(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 at(t){return t?t==="127.0.0.1"||t==="::1"||t==="::ffff:127.0.0.1":!1}function BS(t){return t&&t.match(/^Bearer\s+(.+)$/i)?.[1]?.trim()||null}function ho(t,e){return BS(t)??e}function Zr(t,e){return!!(t&&e&&t===e)}function go(t,e,n,r=!0){return t?Zr(t,e)?!0:!!n(t,r):!1}var Xd=require("child_process"),Qd=require("fs");function es(t){let e=t.split(".");return e.length!==4?!1:e.every(n=>/^\d+$/.test(n)&&Number(n)>=0&&Number(n)<=255)}function mo(t){if(!es(t))return!1;let[e,n]=t.split(".").map(Number);return e===100&&n>=64&&n<=127}function DS(t){if(!es(t))return!1;let[e,n]=t.split(".").map(Number);return e===169&&n===254}function FS(t){if(!es(t))return!1;let[e,n]=t.split(".").map(Number);return e===198&&(n===18||n===19)}function HS(t){if(!es(t))return!1;let[e,n]=t.split(".").map(Number);return e===10||e===172&&n>=16&&n<=31||e===192&&n===168}function ts(t){return!!t&&!DS(t)&&!FS(t)}function de(t){if(!t)return;let e=t.trim().replace(/\.$/,"");return e?e.toLowerCase():void 0}function yo(t){return de(t.replace(/^https?:\/\//,""))??t}function US(t,e){return(t??[]).map(n=>de(n)).filter(n=>!!n).filter(n=>ts(n)).filter((n,r,s)=>n!==e&&s.indexOf(n)===r)}function WS(t){let e=t.trim().toLowerCase();return e?!(e==="lo"||e==="lo0"||e.startsWith("loopback")||e.startsWith("awdl")||e.startsWith("llw")||e.startsWith("utun")||e.startsWith("tun")||e.startsWith("tap")||e.startsWith("ipsec")||e.startsWith("bridge")||e.startsWith("docker")||e.startsWith("br-")||e.startsWith("veth")||e.startsWith("vmnet")||e.startsWith("vboxnet")||e.startsWith("tailscale")||e.startsWith("wg")||e.startsWith("zt")||e.startsWith("ham")):!1}function qS(t){let e=yo(t);return mo(e)||e.endsWith(".ts.net")}function GS(t){let e=yo(t);return HS(e)||e.endsWith(".local")}function jS(t){return yo(t).endsWith(".trycloudflare.com")}function Jd(t,e){return qS(t)?"tailscale":GS(t)?"local_network":e?"configured_host":"fallback"}function Zd(t){let e=new Set,n=[];for(let r of t){let s=`${r.host}:${r.port}:${r.secure===!0?"secure":"plain"}`;e.has(s)||(e.add(s),n.push(r))}return n}function $S(t){let e=t[0];return e?t.slice(1).filter(n=>n.port===e.port).map(n=>n.host).filter((n,r,s)=>n!==e.host&&s.indexOf(n)===r):[]}function zS(t){try{let e=new URL(t),n=de(e.hostname);if(!n)throw new Error("invalid relay hostname");let r=e.port?Number(e.port):e.protocol==="https:"?443:80,s=Number.isFinite(r)&&r>0?Math.floor(r):443,i=jS(n);return{kind:"relay",host:n,port:s,...e.protocol==="https:"?{secure:!0}:{},source:i?"quick_tunnel":"configured_relay",stability:i?"ephemeral":"stable"}}catch{return null}}function VS(t,e,n){let r=de(t)||"localhost",s=US(e,r);return Zd([{kind:"direct",host:r,port:n,source:Jd(r,!0),stability:"stable"},...s.map(i=>({kind:"direct",host:i,port:n,source:Jd(i,!1),stability:"stable"}))])}function ef(t){return t?t.split(",").map(e=>e.trim()).filter(Boolean):[]}function YS(t){let e=[],n=[];for(let[r,s]of Object.entries(t))if(s&&WS(r))for(let i of s)i.internal||i.family!=="IPv4"||ts(i.address)&&(mo(i.address)?e.push(i.address):n.push(i.address));return[...e,...n]}function Kd(t){let e=JSON.parse(t),n=de(e.Self?.DNSName),r=(e.Self?.TailscaleIPs??[]).map(o=>de(o)).filter(o=>!!o).filter(o=>mo(o)&&ts(o)),s=r[0]??n,i=[...n&&n!==s?[n]:[],...r.filter(o=>o!==s)];return{canonicalHost:s,fallbackHosts:i}}function tf(t=Xd.execFileSync,e=Qd.existsSync){let n=[process.env.TAILSCALE_SOCKET,"/tmp/tailscale.sock"].filter(r=>typeof r=="string"&&r.length>0).filter(r=>e(r));for(let r of n)try{let s=t("tailscale",["--socket",r,"status","--json"],{encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:1500});return Kd(s)}catch{}try{let r=t("tailscale",["status","--json"],{encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:1500});return Kd(r)}catch{return{fallbackHosts:[]}}}function nf(t){let e=VS(t.canonicalHost,t.fallbackHosts,t.port),n=t.relayUrl?zS(t.relayUrl):null,r=Zd([...n?[n]:[],...e]),s=r[0]??{kind:"direct",host:de(t.canonicalHost)||"localhost",port:t.port,source:"configured_host",stability:"stable"};return{canonicalHost:s.host,fallbackHosts:$S(r),port:s.port,connections:r}}function rf(t){let e=de(t.canonicalHost),n=de(t.configuredCanonicalHost)||de(t.tailscaleCanonicalHost)||e||"localhost",r=[...e&&e!==n?[e]:[],...t.configuredFallbackHosts??[],...t.tailscaleFallbackHosts??[],...YS(t.interfaces)].map(s=>de(s)).filter(s=>!!s).filter(s=>ts(s)).filter((s,i,o)=>s!==n&&o.indexOf(s)===i);return{canonicalHost:n,fallbackHosts:r}}function sf(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 $=O.child({module:"daemon"}),Nn=O.child({module:"ws"});function JS(){try{let t=JSON.parse(require("fs").readFileSync(Hc,"utf8"));return typeof t.latestVersion=="string"?t.latestVersion:void 0}catch{return}}var U=zd(S.port),Z=new Xr((t,e,n)=>Jr(t,e,{daemonId:U.daemonId,canonicalHost:On().canonicalHost,...n??{}})),pe=new Qr,rs=new Set,He=new WeakMap,of=!1,uf=Date.now(),Gt=null,ns=null,KS=1e3;function XS(){let t=tf();return rf({canonicalHost:U.canonicalHost,configuredCanonicalHost:S.canonicalHost,configuredFallbackHosts:ef(S.fallbackHosts),tailscaleCanonicalHost:t.canonicalHost,tailscaleFallbackHosts:t.fallbackHosts,interfaces:(0,cf.networkInterfaces)()})}function On(){let t=Date.now();if(ns&&ns.expiresAt>t)return ns.value;let e=XS(),n=nf({canonicalHost:e.canonicalHost,fallbackHosts:e.fallbackHosts,port:U.port,relayUrl:S.relayUrl});return ns={value:n,expiresAt:t+KS},n}function QS(t){let e={t:"vp",d:t.daemonId,n:t.displayName,h:t.canonicalHost,p:t.port,c:t.pairNonce,e:t.expiresAt};return t.fallbackHosts&&(e.f=t.fallbackHosts),t.connections?.length&&(e.o=t.connections.map(n=>[n.kind,n.host,n.port,n.source,n.stability,n.secure===!0])),e}async function ZS(t){let e=JSON.stringify(QS(t));await(0,oe.mkdir)(Ie,{recursive:!0}),await _o.default.toFile(vi,e,{type:"png",errorCorrectionLevel:"M",margin:1,scale:8});let n=await _o.default.toString(e,{type:"terminal",small:!0,errorCorrectionLevel:"M"});kt(`
110
+ ${n}`:n:t}function Ht(t){return t.map(e=>({...e.clientMessageId?{clientMessageId:e.clientMessageId}:{},content:e.content,...e.images?.length?{images:e.images}:{},...e.model?{model:e.model}:{},enqueuedAt:e.enqueuedAt}))}function Bd(t){return t?.length?t.map(e=>({...e.clientMessageId?{clientMessageId:e.clientMessageId}:{},content:e.content,...e.images?.length?{images:e.images}:{},...e.model?{model:e.model}:{},prompt:$d(e.content,e.images),enqueuedAt:e.enqueuedAt})):[]}var Dd=200;function Fd(t){return t?.replace(/_/g,"-").toLowerCase()?.startsWith("zh")?"zh":"en"}var HS={zh:"Agent \u5361\u4F4F",en:"Agent stalled"},US={zh:"Agent \u5D29\u6E83",en:"Agent crashed"};function Wt(t){let e=Math.round(t/1e3);if(e<60)return`${e} \u79D2`;let n=Math.floor(e/60),s=e%60;return s===0?`${n} \u5206\u949F`:`${n} \u5206 ${s} \u79D2`}function zd(t){if(!t)return;let e=t.trim();if(e)return e.length>Dd?`${e.slice(0,Dd-1)}\u2026`:e}function WS(t,e,n,s){let r=Wt(t),i=Wt(n),o=Wt(e),a=zd(s),l=a?`
111
+ \u6700\u540E\u7684\u8BF7\u6C42\u662F\uFF1A"${a}"\u3002`:"",u=n>e?`Agent \u957F\u65F6\u95F4\u6CA1\u6709\u8F93\u51FA\u3002\u5DF2 ${r} \u6CA1\u6709\u8F93\u51FA\uFF0C\u8D85\u8FC7 ${i} \u4ECD\u672A\u6062\u590D\u540E\u88AB\u81EA\u52A8\u505C\u6B62\uFF08${o} \u65F6\u5DF2\u6807\u8BB0\u7591\u4F3C\u5361\u4F4F\uFF09\u3002`:`Agent \u5361\u4F4F\u4E86\u3002\u5DF2 ${r} \u6CA1\u6709\u8F93\u51FA\uFF0C\u8D85\u8FC7 ${i} \u9608\u503C\u540E\u88AB\u81EA\u52A8\u505C\u6B62\u3002`;return{kind:"stall_timeout",at:new Date().toISOString(),humanText:`${u}${l}`,...a?{lastPrompt:a}:{},idleMs:t,softThresholdMs:e,stopThresholdMs:n}}function qS(t,e,n){let s=Wt(t),r=Wt(e),i=n>0?Wt(n):void 0;return{at:new Date().toISOString(),humanText:i?`Agent \u53EF\u80FD\u5361\u4F4F\u4E86\u3002\u5DF2 ${s} \u6CA1\u6709\u8F93\u51FA\uFF0C\u8D85\u8FC7 ${r} \u540E\u88AB\u6807\u8BB0\u4E3A\u7591\u4F3C\u5361\u4F4F\uFF1B\u5982\u679C\u8D85\u8FC7 ${i} \u4ECD\u672A\u6062\u590D\uFF0C\u5C06\u81EA\u52A8\u505C\u6B62\u3002`:`Agent \u53EF\u80FD\u5361\u4F4F\u4E86\u3002\u5DF2 ${s} \u6CA1\u6709\u8F93\u51FA\uFF0C\u8D85\u8FC7 ${r} \u540E\u88AB\u6807\u8BB0\u4E3A\u7591\u4F3C\u5361\u4F4F\uFF1B\u5F53\u524D\u4E0D\u4F1A\u81EA\u52A8\u505C\u6B62\uFF0C\u4F60\u53EF\u4EE5\u7EE7\u7EED\u7B49\u5F85\u6216\u624B\u52A8\u505C\u6B62\u3002`,idleMs:t,softThresholdMs:e,...n>0?{hardTimeoutMs:n}:{}}}function GS(t,e){let n=zd(e),s=n?`
112
+ \u6700\u540E\u7684\u8BF7\u6C42\u662F\uFF1A"${n}"\u3002`:"";return{kind:"driver_crash",at:new Date().toISOString(),humanText:`Agent \u8FDB\u7A0B\u5F02\u5E38\u9000\u51FA\uFF08\u9000\u51FA\u7801 ${t}\uFF09\u3002${s}`,...n?{lastPrompt:n}:{},exitCode:t}}function jS(t,e){return e?{inputTokens:e.inputTokens,outputTokens:e.outputTokens,...Number.isFinite(e.cacheCreationInputTokens)?{cacheCreationInputTokens:e.cacheCreationInputTokens}:Number.isFinite(t?.cacheCreationInputTokens)?{cacheCreationInputTokens:t?.cacheCreationInputTokens}:{},...Number.isFinite(e.cacheReadInputTokens)?{cacheReadInputTokens:e.cacheReadInputTokens}:Number.isFinite(t?.cacheReadInputTokens)?{cacheReadInputTokens:t?.cacheReadInputTokens}:{},...Number.isFinite(e.contextWindowTokens)?{contextWindowTokens:e.contextWindowTokens}:Number.isFinite(t?.contextWindowTokens)?{contextWindowTokens:t?.contextWindowTokens}:{}}:t}function Hd(t){if(t)return{inputTokens:t.inputTokens,outputTokens:t.outputTokens,...Number.isFinite(t.cacheCreationInputTokens)?{cacheCreationInputTokens:t.cacheCreationInputTokens}:{},...Number.isFinite(t.cacheReadInputTokens)?{cacheReadInputTokens:t.cacheReadInputTokens}:{},...Number.isFinite(t.contextWindowTokens)?{contextWindowTokens:t.contextWindowTokens}:{}}}function $S(t,e){return t?.inputTokens===e?.inputTokens&&t?.outputTokens===e?.outputTokens&&t?.cacheCreationInputTokens===e?.cacheCreationInputTokens&&t?.cacheReadInputTokens===e?.cacheReadInputTokens&&t?.contextWindowTokens===e?.contextWindowTokens}function ke(...t){let e=[];for(let n of t)if(n?.length)for(let s of n)!s||e.includes(s)||(e.push(s),e.length>Ut&&e.splice(0,e.length-Ut));return e}function er(t){return t?.length?{acceptedClientMessageIds:ke(t)}:{}}function j(t){return{sessionId:t.sessionId,agent:t.agent,cwd:t.cwd,approvalMode:t.approvalMode,model:t.model,acceptedClientMessageIds:ke(t.acceptedClientMessageIds),interruptedClientMessageIds:ke(t.interruptedClientMessageIds),pendingApproval:t.agent==="codex"?t.pendingApproval:void 0,title:t.title,createdAt:t.createdAt,lastActivityAt:t.lastActivityAt,lastUsage:t.lastUsage,managed:t.managed,isResponding:t.isResponding||void 0,interruptReason:t.interruptReason,stallWarning:t.stallWarning,pendingQueue:t.pendingQueue.length>0?Ht(t.pendingQueue):void 0}}function Ud(t){t.managed||(t.managed=!0)}function Wd(t){let e=t.pendingApproval?.requestId;return typeof e=="string"&&xs(e)}function qd(t,e,n){return{sessionId:t,agent:e,...n}}function zS(t){return t.startsWith(ki)}function Gd(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 tr=class{constructor(e=Zs,n=Gu){this.pushSender=e;this.externalProcessPresenceCheck=n;this.removeInventoryBackfillListener=td(()=>{this.noteInventoryChanged("inventory_backfilled")}),this.updateGauges(),this.startIdleSweep()}sessions=new Map;claudeHookSessions=new Map;store=new Js;idleSweepInterval=null;watchdogNowMs=Date.now();lastWatchdogWallClockMs=this.watchdogNowMs;globalClients=new Set;inventoryVersion=0;removeInventoryBackfillListener;startIdleSweep(){S.idleTimeoutMs<=0&&S.turnStallTimeoutMs<=0||(this.idleSweepInterval=setInterval(()=>this.sweepIdleSessions(),DS),this.idleSweepInterval.unref())}stopIdleSweep(){this.idleSweepInterval&&(clearInterval(this.idleSweepInterval),this.idleSweepInterval=null)}sweepIdleSessions(){let e=this.advanceWatchdogClock(Date.now(),"sweep"),n=S.idleTimeoutMs,s=S.turnStallTimeoutMs,r=S.turnStallHardTimeoutMs;if(n<=0&&s<=0)return;let i=3600*1e3;for(let[o,a]of this.sessions){if(!a.active&&!a.driver){if(a.clients.size===0){let u=e-a.lastActivityTs;u>=i&&(w.info({sessionId:a.sessionId,inactiveMs:u},"removing inactive session from memory"),b.increment("session.cleanup",{reason:"inactive"}),this.unregisterClaudeHookSession(a),this.sessions.delete(o))}continue}if(!a.active||!a.driver)continue;let l=e-a.lastActivityTs;if(a.isResponding){if(s<=0||a.pendingApproval||l<s)continue;let u=this.getRespondingLivenessHint(a),c=r>0&&l>=r,d=u==="dead";if(!d&&!c){if(!a.stallWarningAt){let p=qS(l,s,r);a.stallWarningAt=e,a.stallWarning=p,this.updateGauges(),w.warn({sessionId:a.sessionId,agent:a.agent,inactiveMs:l,turnStallTimeoutMs:s,turnStallHardTimeoutMs:r,livenessHint:u},"responding session exceeded soft stall threshold; waiting before forced stop"),b.increment("driver.stall_warning",{agent:a.agent}),T.emit("driver.stall_warning",{sessionId:a.sessionId,agent:a.agent,idleMs:l,hardTimeoutMs:r||void 0}),this.broadcast(a.sessionId,{type:"session.stall_warning",sessionId:a.sessionId,warning:p}),this.store.upsert(j(a)),this.noteInventoryChanged("session_updated")}continue}let f=d||r<=0?s:r;w.warn({sessionId:a.sessionId,agent:a.agent,inactiveMs:l,turnStallTimeoutMs:s,turnStallHardTimeoutMs:r,livenessHint:u},"stopping stalled driver"),b.increment("driver.stall_timeout",{agent:a.agent}),T.emit("driver.stall_timeout",{sessionId:a.sessionId,agent:a.agent,idleMs:l});let h=WS(l,s,f,a.lastUserMessage);a.interruptReason=h,this.clearStallWarning(a),this.resolvePendingClaudeHookApprovals(a),a.driver.stop(),a.active=!1,a.driver=null,a.isResponding=!1,a.currentReplyText="",this.updateGauges(),this.broadcast(a.sessionId,{type:"session.interrupted_notice",sessionId:a.sessionId,reason:h});let g=this.buildPushBody(`${a.title||a.sessionId}: ${h.lastPrompt??""}`.trim());this.pushSender(p=>({title:HS[Fd(p)],body:g}),{sessionId:a.sessionId,agent:a.agent,eventType:"agent_stalled"}),this.touchSession(a.sessionId),this.store.upsert(j(a)),this.noteInventoryChanged("session_updated");continue}a.pendingApproval||n<=0||l<n||(w.info({sessionId:a.sessionId,agent:a.agent,idleMs:l,timeoutMs:n},"stopping idle driver"),b.increment("driver.idle_timeout",{agent:a.agent}),T.emit("driver.idle_timeout",{sessionId:a.sessionId,agent:a.agent,idleMs:l}),a.driver.stop(),a.active=!1,a.driver=null,this.updateGauges(),this.touchSession(a.sessionId),this.noteInventoryChanged("session_updated"))}}bindDriverLifecycle(e,n,s,r){let i=e.driver;i?.onMessage(o=>{if(e.driver!==i){w.info({agent:n,context:s,msgType:o.type,sessionId:e.sessionId},"ignoring stale driver message");return}if(w.debug({agent:n,context:s,msgType:o.type,sessionId:e.sessionId},"driver message received"),o.type!=="response"&&"sessionId"in o&&o.sessionId&&o.sessionId!==e.sessionId&&!this.sessions.has(o.sessionId)&&this.remapSessionId(e,o.sessionId,r),(o.type==="session.done"||o.type==="session.interrupted")&&(e.isResponding=!1,o.type==="session.done"&&(n==="claude"?(e.lastUsage=Hd(o.usage),this.reconcileClaudeSessionUsage(e,o.usage)):o.usage&&(e.lastUsage=jS(e.lastUsage,o.usage))),o.type==="session.interrupted"&&this.markLatestAcceptedClientMessageInterrupted(e),(o.type==="session.interrupted"||!Wd(e))&&(e.pendingApproval=void 0)),o.type==="approval.request"){if(n==="codex"&&e.approvalMode==="autoApprove"){if(e.driver?.respondApproval(o.requestId,!0)??!1){T.emit("approval.response",{sessionId:e.sessionId,requestId:o.requestId,approved:!0}),e.pendingApproval=void 0,e.isResponding=!0,this.touchSession(e.sessionId),this.noteInventoryChanged("session_updated");return}w.warn({sessionId:e.sessionId,requestId:o.requestId},"failed to auto-approve codex request; falling back to pending approval flow")}e.isResponding=!1,e.pendingApproval={requestId:o.requestId,toolName:o.toolName,input:o.input,description:o.description,...o.approvalContext?{approvalContext:o.approvalContext}:{}},this.pushSender({title:BS,body:this.buildPushBody(`${e.title||e.sessionId}: ${o.description||o.toolName}`)},{sessionId:e.sessionId,agent:e.agent,requestId:o.requestId,eventType:"approval_request"})}n==="claude"&&o.type==="approval.request"&&xs(o.requestId)&&(e.lastUserMessage?e.syntheticApprovalRetries[o.requestId]={message:e.lastUserMessage,toolName:o.toolName}:w.warn({sessionId:e.sessionId,requestId:o.requestId},"missing lastUserMessage for synthetic approval retry"));let a=this.clearStallWarning(e);this.touchSession(e.sessionId,o.type!=="text.delta"||a),(a||o.type==="approval.request"||o.type==="session.done"||o.type==="session.interrupted")&&this.noteInventoryChanged("session_updated"),this.broadcast(e.sessionId,o),o.type==="session.done"&&this.emitGeneratedFileNoticesForCompletedTurn(e),(o.type==="session.done"||o.type==="session.interrupted")&&e.pendingQueue.length>0&&this.flushBufferedPrompt(e)}),i?.onExit?.(o=>{if(e.driver!==i){w.info({agent:n,context:s,exitCode:o,sessionId:e.sessionId},"ignoring stale driver exit");return}w.info({agent:n,context:s,exitCode:o,sessionId:e.sessionId},"driver exited"),T.emit("driver.exit",{sessionId:e.sessionId,agent:n,exitCode:o});let a=o!==0&&o!==null;b.increment("driver.exit",{agent:n,abnormal:a?"true":"false"});let l=!!(e.pendingApproval&&(e.agent==="codex"||o===0&&Wd(e)));if(this.resolvePendingClaudeHookApprovals(e),e.active=!1,e.driver=null,e.isResponding=!1,e.currentReplyText="",this.clearStallWarning(e),l||(e.pendingApproval=void 0),a){let u=GS(o,e.lastUserMessage);e.interruptReason=u,this.broadcast(e.sessionId,{type:"session.interrupted_notice",sessionId:e.sessionId,reason:u});let c=this.buildPushBody(`${e.title||e.sessionId}: ${u.lastPrompt??""}`.trim());this.pushSender(d=>({title:US[Fd(d)],body:c}),{sessionId:e.sessionId,agent:e.agent,eventType:"agent_crashed"})}this.updateGauges(),this.touchSession(e.sessionId),this.store.upsert(j(e)),this.noteInventoryChanged("session_updated")})}async reconcileClaudeSessionUsage(e,n){let s=await Id(e.sessionId,e.cwd),r=Hd(s??n);!r||$S(e.lastUsage,r)||(e.lastUsage=r,this.touchSession(e.sessionId),this.noteInventoryChanged("session_updated"))}remapSessionId(e,n,s){if(!n||n===e.sessionId)return;let r=this.sessions.get(n);if(r&&r!==e){w.warn({oldSessionId:e.sessionId,newSessionId:n},"skipping session ID remap because target already exists");return}let i=e.sessionId;w.info({oldSessionId:i,newSessionId:n},"session ID updated"),this.store.forget(i),this.store.addAlias(i,n),this.sessions.delete(i),e.sessionId=n,this.sessions.set(n,e),this.store.upsert(j(e)),this.noteInventoryChanged("session_remapped"),s&&this.reply(s,`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 s=e.pendingQueue.shift();return s?(s.clientMessageId&&this.rememberAcceptedClientMessage(e,s.clientMessageId),s.model!==void 0&&(e.model=s.model||void 0),e.isResponding=!0,e.currentReplyText="",e.lastUserMessage=s.content,e.lastTurnStartedAt=Date.now(),this.touchSession(e.sessionId),this.noteInventoryChanged("session_updated"),this.store.upsert(j(e)),this.broadcastPendingQueue(e),e.driver.sendPrompt(s.prompt,e.model),!0):!1}broadcastPendingQueue(e){this.broadcast(e.sessionId,{type:"session.queue",sessionId:e.sessionId,pending:Ht(e.pendingQueue)})}cancelQueuedTurn(e,n,s,r){let i=this.resolveSessionRef(s);s=i.resolvedSessionId;let o=this.sessions.get(s);if(!o){this.reply(e,n,!1,void 0,"Session not found");return}if(!r){this.reply(e,n,!1,void 0,"clientMessageId required");return}let a=o.pendingQueue.length;o.pendingQueue=o.pendingQueue.filter(u=>u.clientMessageId!==r);let l=a-o.pendingQueue.length;l>0&&(T.emit("session.queue.cancel",{sessionId:s,agent:o.agent,clientMessageId:r,removed:l}),this.store.upsert(j(o)),this.touchSession(o.sessionId),this.noteInventoryChanged("session_updated"),this.broadcastPendingQueue(o)),this.reply(e,n,!0,this.buildResolvedSessionResponseData(i,{sessionId:s,removed:l}))}emitGeneratedFileNoticesForCompletedTurn(e){let n=e.lastTurnStartedAt;e.lastTurnStartedAt=void 0,!(e.agent!=="codex"||!n)&&Td(e.sessionId,e.agent,e.cwd,n).then(s=>{for(let r of s)this.broadcast(e.sessionId,{type:"tool.result",sessionId:e.sessionId,toolCallId:`generated-file-${Date.now()}`,output:r})}).catch(s=>{w.warn({sessionId:e.sessionId,error:String(s)},"failed to read generated-file notices")})}startPendingCodexSession(e,n){if(e.agent!=="codex"||!e.driver)return;let s=e.driver,r=e.sessionId,i=e.startupToken,o=b.startTimer("driver.spawn");(async()=>{try{let a=await s.start(e.cwd,void 0,e.approvalMode),l=o();if(this.sessions.get(r)!==e||e.startupToken!==i||e.driver!==s){w.info({pendingSessionId:r,actualSessionId:a},"discarding stale codex startup result");return}e.startupInProgress=!1,w.info({pendingSessionId:r,sessionId:a,spawnMs:l},"codex session ready"),a&&a!==r&&this.remapSessionId(e,a,n),this.flushBufferedPrompt(e,!0)}catch(a){if(o(),this.sessions.get(r)!==e||e.startupToken!==i){w.info({pendingSessionId:r,error:String(a)},"ignoring stale codex startup failure");return}e.startupInProgress=!1;let u=e.pendingQueue.length>0;e.pendingQueue=[],e.active=!1,e.driver=null,e.isResponding=!1,e.currentReplyText="",this.updateGauges(),this.touchSession(e.sessionId),this.noteInventoryChanged("session_updated"),u&&this.broadcastPendingQueue(e),w.error({sessionId:r,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,s,r){if(e==="codex"&&n instanceof In&&r&&n.setModel(r),e!=="claude"||!(n instanceof wn))return;let i=s??(0,fo.randomUUID)().replace(/-/g,"");return n.configureHookBridge(S.port,i),i}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=_n){for(let s of e.pendingClaudeHookApprovals.values())s.resolve(n);e.pendingClaudeHookApprovals.clear(),e.pendingApproval&&zS(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 s=this.resolveClaudeHookSession(e);return s?(this.touchSession(s.sessionId),!0):(w.warn({secretPresent:!!e},"received Claude session-start hook for unknown session"),!1)}async handleClaudePermissionHook(e,n){let s=this.resolveClaudeHookSession(e);if(!s||s.agent!=="claude"||!s.active)return w.warn({secretPresent:!!e},"received Claude permission hook for unknown or inactive session"),_n;if(s.approvalMode==="autoApprove")return Gd(!0);let i=(typeof n.tool_name=="string"?n.tool_name:typeof n.toolName=="string"?n.toolName:"").trim();if(!i)return _n;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:"",u=`${ki}${l.trim()||(0,fo.randomUUID)()}`,c=s.pendingClaudeHookApprovals.get(u);if(c)return c.promise;let d=`Claude requested permissions to use ${i}.`,f,h=new Promise(g=>{f=g});return s.pendingClaudeHookApprovals.set(u,{requestId:u,promise:h,resolve:g=>{s.pendingClaudeHookApprovals.delete(u),f(g)}}),s.pendingApproval={requestId:u,toolName:i,input:a,description:d},T.emit("approval.request",{agent:"claude",sessionId:s.sessionId,toolName:i}),this.touchSession(s.sessionId),this.noteInventoryChanged("session_updated"),this.broadcast(s.sessionId,{type:"approval.request",sessionId:s.sessionId,requestId:u,toolName:i,input:a,description:d}),h}async resolveReconnectSession(e,n,s){if(e=this.resolveSessionRef(e).resolvedSessionId,this.isDeletedSession(e))return;let r=new Date().toISOString(),i=s?.agent,o=s?.cwd??"",a=s?.approvalMode,l=s?.model,u=s?.pendingApproval,c=s?.title??"",d=s?.createdAt??r,f=s?.lastActivityAt??r,h=s?.lastUsage,g=ke(s?.acceptedClientMessageIds),p=ke(s?.interruptedClientMessageIds),m=s?.isResponding,y=s?.interruptReason,C=s?.stallWarning,_=s?[...s.pendingQueue]:[],A=s?"memory":"client",I=this.store.find(e);if(I)i=I.agent,o=I.cwd||o,a=I.approvalMode??a,l=I.model??l,u=I.pendingApproval??u,c=I.title||c,d=I.createdAt||d,f=I.lastActivityAt||f,h=I.lastUsage??h,g=ke(I.acceptedClientMessageIds,g),p=ke(I.interruptedClientMessageIds,p),y=y??I.interruptReason,C=C??I.stallWarning,s||(_=Bd(I.pendingQueue)),A="record";else if(!s){let x=(await Pn(n??i)).find(X=>X.sessionId===e);x&&(i=x.agent,o=x.cwd||o,c=x.title??c,d=x.createdAt,f=x.lastActivityAt,h=x.lastUsage??h,m=x.runtime.isResponding??m,A="scanner")}if(!i&&n&&(i=n,A=s?"memory":"client"),!!i)return{agent:i,cwd:o,approvalMode:a,model:l,pendingApproval:u,title:c,createdAt:d,lastActivityAt:f,lastUsage:h,acceptedClientMessageIds:g,interruptedClientMessageIds:p,source:A,managed:s?.managed??I?.managed,isResponding:m||void 0,...y?{interruptReason:y}:{},...C?{stallWarning:C}:{},pendingQueue:_}}collectReconnectPendingApprovals(){let e=[],n=new Set;for(let s of this.sessions.values()){if(!s.pendingApproval)continue;let r=`${s.agent}:${s.sessionId}:${s.pendingApproval.requestId}`;n.has(r)||(n.add(r),e.push(qd(s.sessionId,s.agent,s.pendingApproval)))}for(let s of this.store.getAll()){if(!s.pendingApproval)continue;let r=`${s.agent}:${s.sessionId}:${s.pendingApproval.requestId}`;n.has(r)||(n.add(r),e.push(qd(s.sessionId,s.agent,s.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),s=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.pendingQueue=e.pendingQueue??[],e.startupToken=e.startupToken??0,e.claudeHookSecret=s??e.claudeHookSecret,e.pendingClaudeHookApprovals=e.pendingClaudeHookApprovals??new Map,this.registerClaudeHookSession(e),this.bindDriverLifecycle(e,e.agent," (approval resumed)"),this.store.upsert(j(e)),this.updateGauges(),this.touchSession(e.sessionId),this.noteInventoryChanged("session_updated"),!0}buildPushBody(e){let n=e.replace(/\s+/g," ").trim();return n?n.length<=Nd?n:`${n.slice(0,Math.max(1,Nd-3)).trimEnd()}...`:OS}currentPartialReplyText(e){return e?.isResponding&&e.currentReplyText.trim()?e.currentReplyText:void 0}currentWatchdogTime(){return this.advanceWatchdogClock(Date.now(),"activity")}getRespondingLivenessHint(e){return e.driver?.getRespondingLivenessHint?.()??"unknown"}clearStallWarning(e){return!e.stallWarning&&!e.stallWarningAt?!1:(e.stallWarning=void 0,e.stallWarningAt=void 0,this.updateGauges(),!0)}advanceWatchdogClock(e,n){let s=Math.max(0,e-this.lastWatchdogWallClockMs);return this.lastWatchdogWallClockMs=e,s<=0?this.watchdogNowMs:s>Od?(n==="sweep"&&w.warn({elapsedWallMs:s,toleratedGapMs:Od},"watchdog gap detected; discounting paused wall-clock time"),this.watchdogNowMs):(this.watchdogNowMs+=s,this.watchdogNowMs)}touchSession(e,n=!0){let s=Date.now(),r=new Date(s).toISOString(),i=this.advanceWatchdogClock(s,"activity"),o=this.sessions.get(e);if(o){o.lastActivityAt=r,o.lastActivityTs=i,n&&this.store.upsert(j(o));return}let a=this.store.find(e);a&&this.store.upsert({...a,lastActivityAt:r})}updateGauges(){let e=0,n=0;for(let s of this.sessions.values())s.active&&e++,s.stallWarning&&n++;b.gauge("session.active",e),b.gauge("session.stall_warning_active",n)}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,model:n.model,title:n.title,createdAt:n.createdAt,lastActivityAt:n.lastActivityAt,lastUsage:n.lastUsage,...n.pendingApproval||n.stallWarning?{needsAttention:!0}:{},...n.isResponding?{isResponding:!0}:{},managed:n.managed,...n.interruptReason?{interruptReason:n.interruptReason}:{},...n.stallWarning?{stallWarning:n.stallWarning}:{}});return e}getDeletedSessionIds(){return new Set(this.store.getDeletedSessionIds())}resolveSessionRef(e){let n=this.store.resolveSessionId(e);return{requestedSessionId:e,resolvedSessionId:n,remapped:n!==e}}buildResolvedSessionResponseData(e,n){let s=n?{...n}:{};return e.remapped&&(s.sessionId=e.resolvedSessionId,s.oldSessionId=e.requestedSessionId),Object.keys(s).length>0?s:void 0}buildSessionResponseData(e,n,s){let r=s?{...s}:{};return n&&n!==e.requestedSessionId&&(r.sessionId=n,r.oldSessionId=e.requestedSessionId),Object.keys(r).length>0?r:void 0}canResumeDriverSession(e,n){return!(e==="codex"&&n.startsWith("pending_"))}rememberSessionAlias(e,n){!e||!n||e===n||(this.store.forget(e),this.store.addAlias(e,n),this.noteInventoryChanged("session_remapped"))}isDeletedSession(e){return this.store.isDeleted(e)}async listRecentSessionsForContinue(e,n){return Pn(e,n)}async handle(e,n){switch(w.debug({action:n.action},"handling client message"),n.action){case"session.create":await this.createSession(e,n.id,n.agent,n.cwd,n.approvalMode,n.continueSession,n.model);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,n.images,n.model);break;case"session.queue.cancel":this.cancelQueuedTurn(e,n.id,n.sessionId,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.clearInterrupt":this.clearInterrupt(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,n.customTitles,n.sinceMs);break;case"sessions.list":{let s=typeof n.skipGitMetadata=="boolean"?n.skipGitMetadata:void 0;await this.listSessions(e,n.id,n.agent,n.cwd,n.search,n.limit,n.cursor,n.customTitles,n.sinceMs,s);break}case"sessions.archiveableManaged":this.listArchiveableManagedSessions(e,n.id);break}}addGlobalClient(e){this.globalClients.add(e)}removeClient(e){this.globalClients.delete(e);for(let n of this.sessions.values())n.clients.delete(e)}shutdown(){this.stopIdleSweep(),this.removeInventoryBackfillListener(),this.globalClients.clear();for(let e of this.sessions.values()){try{this.resolvePendingClaudeHookApprovals(e),e.driver?.stop()}catch(n){w.error({sessionId:e.sessionId,agent:e.agent,error:String(n)},"failed to stop session on shutdown")}e.active=!1,e.driver=null,e.clients.clear(),this.unregisterClaudeHookSession(e)}this.claudeHookSessions.clear(),this.store.flushSync()}getActiveSessionCount(){let e=0;for(let n of this.sessions.values())n.active&&e++;return e}prewarmCaches(){qs({limit:50,activeSessions:this.activeSessionSnapshots(),sessionRecords:this.store.getAll(),deletedSessionIds:this.getDeletedSessionIds(),skipGitMetadata:!0}).catch(()=>{})}getDriverCounts(){let e={};for(let n of this.sessions.values())n.active&&(e[n.agent]=(e[n.agent]??0)+1);return e}noteInventoryChanged(e){if(this.inventoryVersion+=1,this.globalClients.size===0)return;let n={type:"sessions.changed",version:this.inventoryVersion,reason:e},s=JSON.stringify(n);for(let r of this.globalClients)r.readyState===1&&r.send(s)}async createSession(e,n,s,r,i,o,a){r=Ks(r),w.info({agent:s,cwd:r,approvalMode:i,continueSession:o},"creating session");try{if(!(await(0,jd.stat)(r)).isDirectory()){this.reply(e,n,!1,void 0,`Path is not a directory: ${r}`);return}}catch{this.reply(e,n,!1,void 0,`Directory does not exist: ${r}`);return}if(o)try{let u=(await this.listRecentSessionsForContinue(s,r)).find(c=>!this.isDeletedSession(c.sessionId));if(u)return w.info({sessionId:u.sessionId,cwd:r},"continue mode: resuming last session"),this.resumeSession(e,n,u.sessionId,s,r,i);w.info("continue mode: no previous sessions found, creating new")}catch(l){w.warn({error:String(l)},"continue mode: error finding sessions, creating new")}try{let l=this.createDriver(s),u=this.configureDriverBeforeStart(s,l,void 0,a);if(s==="codex"){let g=`pending_${Date.now()}`;w.info({sessionId:g,agent:s,cwd:r},"session created (pending codex startup)"),b.increment("session.create",{agent:s}),T.emit("session.create",{sessionId:g,agent:s,cwd:r,approvalMode:i});let p={sessionId:g,agent:s,cwd:r,approvalMode:i,model:a,driver:l,clients:new Set([e]),title:"New session",createdAt:new Date().toISOString(),lastActivityAt:new Date().toISOString(),active:!0,lastActivityTs:this.currentWatchdogTime(),isResponding:!1,currentReplyText:"",acceptedClientMessageIds:[],interruptedClientMessageIds:[],syntheticApprovalRetries:{},startupInProgress:!0,pendingQueue:[],startupToken:1,managed:!0,claudeHookSecret:u,pendingClaudeHookApprovals:new Map};this.sessions.set(g,p),this.registerClaudeHookSession(p),this.store.upsert(j(p)),this.updateGauges(),Vs(),Os(),this.noteInventoryChanged("session_created"),this.bindDriverLifecycle(p,s,"",e),this.reply(e,n,!0,{sessionId:g}),this.startPendingCodexSession(p,e);return}let c=b.startTimer("driver.spawn"),d=await l.start(r,void 0,i),f=c();w.info({sessionId:d,agent:s,spawnMs:f},"session created"),b.increment("session.create",{agent:s}),T.emit("session.create",{sessionId:d,agent:s,cwd:r,approvalMode:i});let h={sessionId:d,agent:s,cwd:r,approvalMode:i,model:a,driver:l,clients:new Set([e]),title:"New session",createdAt:new Date().toISOString(),lastActivityAt:new Date().toISOString(),active:!0,lastActivityTs:this.currentWatchdogTime(),isResponding:!1,currentReplyText:"",acceptedClientMessageIds:[],interruptedClientMessageIds:[],syntheticApprovalRetries:{},startupInProgress:!1,pendingQueue:[],startupToken:0,managed:!0,claudeHookSecret:u,pendingClaudeHookApprovals:new Map};this.sessions.set(d,h),this.registerClaudeHookSession(h),this.store.upsert(j(h)),this.updateGauges(),Vs(),Os(),this.noteInventoryChanged("session_created"),this.bindDriverLifecycle(h,s,"",e),this.reply(e,n,!0,{sessionId:d})}catch(l){w.error({agent:s,cwd:r,error:String(l)},"createSession error"),this.reply(e,n,!1,void 0,String(l))}}async resumeSession(e,n,s,r,i,o){let a=this.resolveSessionRef(s);if(s=a.resolvedSessionId,this.isDeletedSession(s)){this.reply(e,n,!1,void 0,"Session not found");return}let l=this.sessions.get(s);if(l&&l.active){l.clients.add(e),this.touchSession(l.sessionId),this.noteInventoryChanged("session_updated");let h=await Mn(s,r,l.cwd),g=this.annotateHistoryMessages(h,l.acceptedClientMessageIds,l.interruptedClientMessageIds),p=this.currentPartialReplyText(l),m=l.pendingQueue.length>0?Ht(l.pendingQueue):void 0;if(h.length>0||p||l.approvalMode||l.pendingApproval||l.stallWarning||m){let y={type:"session.history",sessionId:s,messages:g,...er(l.acceptedClientMessageIds),isResponding:l.isResponding||void 0,partialReplyText:p,approvalMode:l.approvalMode,pendingApproval:l.pendingApproval,stallWarning:l.stallWarning,...m?{pendingQueue:m}:{}};e.readyState===1&&e.send(JSON.stringify(y))}this.reply(e,n,!0,this.buildResolvedSessionResponseData(a,{sessionId:s}));return}let u=this.store.find(s),c=i||u?.cwd||"",d=o??u?.approvalMode,f=u?.title??"Resumed session";try{let h=b.startTimer("driver.spawn"),g=this.createDriver(r),p=this.configureDriverBeforeStart(r,g),m=this.canResumeDriverSession(r,s),y=await g.start(c,m?s:void 0,d),C=h();w.info({sessionId:y,agent:r,spawnMs:C},"session resumed"),b.increment("session.resume",{agent:r}),T.emit("session.resume",{sessionId:y,agent:r,cwd:c});let _={sessionId:y,agent:r,cwd:c,approvalMode:d,model:u?.model,driver:g,clients:new Set([e]),title:f,createdAt:u?.createdAt??new Date().toISOString(),lastActivityAt:new Date().toISOString(),lastUsage:u?.lastUsage,active:!0,lastActivityTs:this.currentWatchdogTime(),isResponding:!1,currentReplyText:"",acceptedClientMessageIds:u?.acceptedClientMessageIds??[],interruptedClientMessageIds:u?.interruptedClientMessageIds??[],syntheticApprovalRetries:{},startupInProgress:!1,pendingQueue:Bd(u?.pendingQueue),startupToken:0,managed:u?.managed,pendingApproval:u?.pendingApproval,stallWarning:u?.stallWarning,claudeHookSecret:p,pendingClaudeHookApprovals:new Map};this.sessions.set(y,_),this.rememberSessionAlias(s,y),this.registerClaudeHookSession(_),this.store.upsert(j(_)),this.updateGauges(),this.noteInventoryChanged("session_updated"),this.bindDriverLifecycle(_,r," (resumed)",e),this.restoreDriverPendingApproval(g,_.pendingApproval);let I=await Mn(m?s:y,r,c),B=this.annotateHistoryMessages(I,_.acceptedClientMessageIds,_.interruptedClientMessageIds),x=_.pendingQueue.length>0?Ht(_.pendingQueue):void 0;if(I.length>0||_.pendingApproval||_.stallWarning||x){w.info({sessionId:s,historyCount:I.length},"sending history messages");let X={type:"session.history",sessionId:y,messages:B,...er(_.acceptedClientMessageIds),approvalMode:d,pendingApproval:_.pendingApproval,stallWarning:_.stallWarning,...x?{pendingQueue:x}:{}};e.readyState===1&&e.send(JSON.stringify(X))}this.reply(e,n,!0,this.buildSessionResponseData(a,y,{sessionId:y}))}catch(h){this.reply(e,n,!1,void 0,String(h))}}hasAcceptedClientMessage(e,n){return e.acceptedClientMessageIds.includes(n)}rememberAcceptedClientMessage(e,n){this.hasAcceptedClientMessage(e,n)||(e.acceptedClientMessageIds.push(n),e.acceptedClientMessageIds.length>Ut&&e.acceptedClientMessageIds.splice(0,e.acceptedClientMessageIds.length-Ut))}rememberInterruptedClientMessage(e,n){e.interruptedClientMessageIds.includes(n)||(e.interruptedClientMessageIds.push(n),e.interruptedClientMessageIds.length>Ut&&e.interruptedClientMessageIds.splice(0,e.interruptedClientMessageIds.length-Ut))}markLatestAcceptedClientMessageInterrupted(e){let n=e.acceptedClientMessageIds[e.acceptedClientMessageIds.length-1];n&&this.rememberInterruptedClientMessage(e,n)}annotateHistoryMessages(e,n,s){if(!e.length||!n?.length||!s?.length)return e;let r=new Set(s),i=[];for(let c=0;c<e.length;c+=1)e[c]?.role==="user"&&i.push(c);if(i.length===0)return e;let o=Math.min(i.length,n.length);if(o===0)return e;let a=new Map,l=n.length-o,u=i.length-o;for(let c=0;c<o;c+=1){let d=n[l+c];r.has(d)&&a.set(i[u+c],"interrupted")}return a.size===0?e:e.map((c,d)=>c.role==="user"&&a.has(d)?{...c,delivery:"interrupted"}:c)}async sendMessage(e,n,s,r,i,o,a,l){let u=this.resolveSessionRef(s);if(s=u.resolvedSessionId,this.isDeletedSession(s)){this.reply(e,n,!1,void 0,"Session not found");return}let c=this.sessions.get(s);if(!c||!c.driver){let p=await this.resolveReconnectSession(s,i,c);if(!p){w.warn({sessionId:s},"session not found in records or scanner"),this.reply(e,n,!1,void 0,"Session not found");return}w.info({sessionId:s,agent:p.agent,source:p.source},"auto-reconnecting session"),b.increment("session.reconnect",{agent:p.agent,source:p.source}),T.emit("session.reconnect",{sessionId:s,agent:p.agent,source:p.source});try{let m=this.createDriver(p.agent),y=this.configureDriverBeforeStart(p.agent,m,c?.claudeHookSecret),C=this.canResumeDriverSession(p.agent,s),_=await m.start(p.cwd,C?s:void 0,p.approvalMode);this.restoreDriverPendingApproval(m,p.pendingApproval),c?(c.approvalMode=p.approvalMode,c.model=p.model,c.pendingApproval=p.pendingApproval,c.driver=m,c.active=!0,c.clients.add(e),c.lastActivityAt=p.lastActivityAt,c.lastUsage=p.lastUsage,c.lastActivityTs=this.currentWatchdogTime(),c.isResponding=!1,c.currentReplyText="",c.acceptedClientMessageIds=ke(c.acceptedClientMessageIds,p.acceptedClientMessageIds),c.interruptedClientMessageIds=ke(c.interruptedClientMessageIds,p.interruptedClientMessageIds),c.syntheticApprovalRetries=c.syntheticApprovalRetries??{},c.startupInProgress=!1,(!c.pendingQueue||c.pendingQueue.length===0)&&(c.pendingQueue=p.pendingQueue),c.startupToken=c.startupToken??0,c.claudeHookSecret=y??c.claudeHookSecret,c.pendingClaudeHookApprovals=c.pendingClaudeHookApprovals??new Map,_&&_!==c.sessionId&&this.remapSessionId(c,_)):(c={sessionId:_,agent:p.agent,cwd:p.cwd,approvalMode:p.approvalMode,model:p.model,driver:m,clients:new Set([e]),title:p.title,createdAt:p.createdAt,lastActivityAt:p.lastActivityAt,lastUsage:p.lastUsage,active:!0,lastActivityTs:this.currentWatchdogTime(),isResponding:!1,currentReplyText:"",acceptedClientMessageIds:p.acceptedClientMessageIds,interruptedClientMessageIds:p.interruptedClientMessageIds,syntheticApprovalRetries:{},startupInProgress:!1,pendingQueue:p.pendingQueue,startupToken:0,managed:p.managed,pendingApproval:p.pendingApproval,claudeHookSecret:y,pendingClaudeHookApprovals:new Map,interruptReason:p.interruptReason},this.sessions.set(_,c),this.rememberSessionAlias(s,_)),this.registerClaudeHookSession(c),this.bindDriverLifecycle(c,p.agent," (reconnected)"),this.store.upsert(j(c)),this.updateGauges(),this.noteInventoryChanged("session_updated"),s=c.sessionId}catch(m){this.reply(e,n,!1,void 0,`Failed to reconnect: ${m}`);return}}if(c.clients.add(e),o&&this.hasAcceptedClientMessage(c,o)){this.reply(e,n,!0,this.buildResolvedSessionResponseData(u,{sessionId:s,clientMessageId:o,duplicate:!0}));return}w.info({sessionId:s,clients:c.clients.size,hasDriver:!!c.driver,active:c.active,imageCount:a?.length??0},"sending message"),T.emit("session.send",{sessionId:s,agent:c.agent,messagePreview:r.slice(0,100),imageCount:a?.length??0}),Ud(c),c.interruptReason&&(c.interruptReason=void 0,this.store.upsert(j(c)),this.noteInventoryChanged("session_updated"));let d=this.clearStallWarning(c);if(Mt(c.title)){let p=Oi(r,50);p&&p!==c.title&&(c.title=p),this.store.upsert(j(c))}o&&this.rememberAcceptedClientMessage(c,o),this.touchSession(c.sessionId),d&&this.noteInventoryChanged("session_updated");let f=$d(r,a),h=l!==void 0&&l||void 0,g=p=>{let m={...o?{clientMessageId:o}:{},content:r,...a?.length?{images:a}:{},...h!==void 0?{model:h}:{},prompt:f,enqueuedAt:new Date().toISOString()};c.pendingQueue.push(m),this.store.upsert(j(c)),this.broadcastPendingQueue(c);let y=o?{sessionId:s,clientMessageId:o,queued:!0}:{sessionId:s,queued:!0};this.reply(e,n,!0,this.buildSessionResponseData(u,s,y)),w.debug({sessionId:s,reason:p,queueLength:c.pendingQueue.length},"message enqueued on daemon")};if(l!==void 0&&(c.model=l||void 0),c.pendingApproval){g("pending_approval");return}if(c.startupInProgress){c.isResponding=!0,c.currentReplyText="",c.lastUserMessage=r,this.noteInventoryChanged("session_updated"),g("startup");return}if(c.isResponding){g("busy");return}c.isResponding=!0,c.currentReplyText="",c.lastUserMessage=r,c.lastTurnStartedAt=Date.now(),this.noteInventoryChanged("session_updated"),c.driver.sendPrompt(f,c.model),this.reply(e,n,!0,this.buildSessionResponseData(u,s,o?{sessionId:s,clientMessageId:o}:{sessionId:s}))}async sendReconnectSnapshot(e,n,s,r,i,o,a,l,u){try{let c=this.getDeletedSessionIds(),d;try{d=await qs({agent:s,cwd:r,search:i,sinceMs:u,customTitles:l,limit:50,activeSessions:this.activeSessionSnapshots(),sessionRecords:this.store.getAll(),deletedSessionIds:c})}catch(g){w.warn({error:String(g)},"failed to build reconnect snapshot session list"),d={sessions:[],nextCursor:void 0}}d={...d,inventoryVersion:this.inventoryVersion};let f;if(o&&!c.has(o)){let g=o;o=this.resolveSessionRef(o).resolvedSessionId;let p=a??d.sessions.find(C=>C.sessionId===o)?.agent,m=this.sessions.get(o);m&&m.clients.add(e);let y=await this.resolveReconnectSession(o,p,m);if(y){let C=await Mn(o,y.agent,m?.cwd??y.cwd),_=this.annotateHistoryMessages(C,m?.acceptedClientMessageIds??y.acceptedClientMessageIds,m?.interruptedClientMessageIds??y.interruptedClientMessageIds),A=m?{}:await ao(o,y.agent,y.cwd),I=!m&&!!A.isResponding,B=I?await this.externalProcessPresenceCheck(o):!1,x=I&&!B?{}:A,X=m?.interruptReason??y.interruptReason,ct=m?.stallWarning??y.stallWarning,Hn=m?.pendingQueue??y.pendingQueue;f={sessionId:o,agent:y.agent,messages:_,...er(m?.acceptedClientMessageIds??y.acceptedClientMessageIds),isResponding:m?.isResponding??x.isResponding??(I&&!B?void 0:y.isResponding),...B?{externallyResponding:!0}:{},partialReplyText:m?this.currentPartialReplyText(m):x.partialReplyText,approvalMode:m?.approvalMode??y.approvalMode,...m?.pendingApproval?{pendingApproval:m.pendingApproval}:{},...X?{interruptReason:X}:{},...ct?{stallWarning:ct}:{},...Hn.length>0?{pendingQueue:Ht(Hn)}:{}},g!==o&&this.reply(e,`id_update_${Date.now()}`,!0,{sessionId:o,oldSessionId:g})}}let h=this.collectReconnectPendingApprovals();b.increment("reconnect.snapshot",{activeSession:f?"true":"false"}),this.reply(e,n,!0,{snapshot:{sessions:d.sessions,nextCursor:d.nextCursor,inventoryVersion:d.inventoryVersion,...f?{activeSession:f}:{},...h.length>0?{pendingApprovals:h}:{}}})}catch(c){this.reply(e,n,!1,void 0,`Failed to build reconnect snapshot: ${String(c)}`)}}async approve(e,n,s,r,i){let o=this.resolveSessionRef(s);s=o.resolvedSessionId;let a=this.sessions.get(s),l=a?.pendingApproval,u=a?.pendingClaudeHookApprovals.get(r);if(a&&u){a.pendingApproval=void 0,T.emit("approval.response",{sessionId:s,requestId:r,approved:i}),this.touchSession(a.sessionId),this.noteInventoryChanged("session_updated"),u.resolve(Gd(i)),a.isResponding=!0,this.reply(e,n,!0,this.buildResolvedSessionResponseData(o,{sessionId:s}));return}let c=a?.syntheticApprovalRetries[r];if(a&&c&&xs(r)){delete a.syntheticApprovalRetries[r],a.pendingApproval=void 0,T.emit("approval.response",{sessionId:s,requestId:r,approved:i}),this.touchSession(a.sessionId),this.noteInventoryChanged("session_updated"),this.reply(e,n,!0,this.buildResolvedSessionResponseData(o,{sessionId:s})),i&&await this.retrySyntheticClaudeApproval(a,c);return}if(a&&!a.driver&&l)try{await this.reviveSessionForApproval(a)}catch(f){this.reply(e,n,!1,void 0,`Failed to restore approval session: ${String(f)}`);return}if(!a?.driver){this.reply(e,n,!1,void 0,"Session not found or inactive");return}if(T.emit("approval.response",{sessionId:s,requestId:r,approved:i}),!a.driver.respondApproval(r,i)){this.reply(e,n,!1,void 0,"Agent process is not running. Send a new message to continue.");return}a.pendingApproval=void 0,this.touchSession(a.sessionId),a.isResponding=!0,this.noteInventoryChanged("session_updated"),this.reply(e,n,!0,this.buildResolvedSessionResponseData(o,{sessionId:s}))}async retrySyntheticClaudeApproval(e,n){if(e.agent==="claude")try{e.driver&&e.driver.stop();let s=["Write","Edit","NotebookEdit"].includes(n.toolName)?"acceptEdits":"autoApprove",r=this.createDriver(e.agent),i=this.configureDriverBeforeStart(e.agent,r,e.claudeHookSecret);await r.start(e.cwd,e.sessionId,s),e.driver=r,e.active=!0,e.isResponding=!0,e.currentReplyText="",e.lastUserMessage=n.message,e.lastTurnStartedAt=Date.now(),e.startupInProgress=!1,e.pendingQueue=e.pendingQueue??[],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(j(e)),this.updateGauges(),this.touchSession(e.sessionId),this.noteInventoryChanged("session_updated"),w.info({sessionId:e.sessionId,toolName:n.toolName,retryApprovalMode:s},"retrying Claude turn after synthetic approval"),r.sendPrompt(n.message,e.model)}catch(s){e.driver=null,e.active=!1,e.isResponding=!1,e.startupInProgress=!1;let r=e.pendingQueue.length>0;e.pendingQueue=[],e.startupToken+=1,r&&this.broadcastPendingQueue(e),this.updateGauges(),this.touchSession(e.sessionId),this.noteInventoryChanged("session_updated"),w.error({sessionId:e.sessionId,error:String(s)},"failed to retry Claude turn after approval"),this.broadcast(e.sessionId,{type:"error",sessionId:e.sessionId,message:`Failed to continue after approval: ${String(s)}`})}}async setApprovalMode(e,n,s,r){let i=this.resolveSessionRef(s);s=i.resolvedSessionId;let o=this.sessions.get(s);if(!o){let l=this.store.find(s);l?(r===null?delete l.approvalMode:l.approvalMode=r,this.store.upsert(l),this.noteInventoryChanged("session_updated"),w.info({sessionId:s,agent:l.agent,newMode:r},"approval mode changed (inactive session)")):w.info({sessionId:s,newMode:r},"approval mode changed (untracked session)"),this.reply(e,n,!0,this.buildResolvedSessionResponseData(i,{approvalMode:r,sessionId:s}));return}if(r===null){this.reply(e,n,!1,void 0,"Follow Remote is only available for external sessions");return}let a=o.approvalMode;o.approvalMode=r,this.store.upsert(j(o)),this.noteInventoryChanged("session_updated"),w.info({sessionId:s,agent:o.agent,oldMode:a,newMode:r},"approval mode changed"),o.driver&&o.driver.setApprovalMode(r),this.reply(e,n,!0,this.buildResolvedSessionResponseData(i,{approvalMode:r,sessionId:s}))}interrupt(e,n,s){let r=this.resolveSessionRef(s);s=r.resolvedSessionId;let i=this.sessions.get(s);if(!i){this.reply(e,n,!1,void 0,"Session not found or inactive");return}if(T.emit("session.interrupt",{sessionId:s,agent:i.agent}),!i.driver){if(i.isResponding||i.pendingQueue.length>0){w.info({sessionId:s,agent:i.agent},"interrupting driverless session with stale responding state");let o=i.pendingQueue.length>0;i.pendingQueue=[],i.isResponding=!1,i.currentReplyText="",i.lastUserMessage=void 0,i.pendingApproval=void 0,this.clearStallWarning(i),this.markLatestAcceptedClientMessageInterrupted(i),this.touchSession(i.sessionId),this.noteInventoryChanged("session_updated"),o&&this.broadcastPendingQueue(i),this.broadcast(i.sessionId,{type:"session.interrupted",sessionId:i.sessionId})}this.reply(e,n,!0,this.buildResolvedSessionResponseData(r,{sessionId:s}));return}if(i.startupInProgress){let o=i.isResponding||i.pendingQueue.length>0;w.info({sessionId:s,agent:i.agent,hadBufferedTurn:o},"interrupting pending startup session");let a=i.pendingQueue.length>0;i.pendingQueue=[],i.isResponding=!1,i.currentReplyText="",i.lastUserMessage=void 0,i.pendingApproval=void 0,this.clearStallWarning(i),o&&this.markLatestAcceptedClientMessageInterrupted(i),a&&this.broadcastPendingQueue(i),this.touchSession(i.sessionId),this.noteInventoryChanged("session_updated"),this.reply(e,n,!0,this.buildResolvedSessionResponseData(r,{sessionId:s})),o&&this.broadcast(i.sessionId,{type:"session.interrupted",sessionId:i.sessionId});return}i.driver.interrupt(),this.reply(e,n,!0,this.buildResolvedSessionResponseData(r,{sessionId:s}))}clearInterrupt(e,n,s){let r=this.resolveSessionRef(s);s=r.resolvedSessionId;let i=this.sessions.get(s),o=this.store.find(s);if(!i&&!o?.interruptReason){this.reply(e,n,!0,this.buildResolvedSessionResponseData(r,{sessionId:s}));return}let a=!1;i?.interruptReason&&(i.interruptReason=void 0,a=!0),i?this.store.upsert(j(i)):o?.interruptReason&&(this.store.upsert({...o,interruptReason:void 0}),a=!0),a&&this.noteInventoryChanged("session_updated"),this.reply(e,n,!0,this.buildResolvedSessionResponseData(r,{sessionId:s}))}stopSession(e,n,s){let r=this.resolveSessionRef(s);s=r.resolvedSessionId;let i=this.sessions.get(s);if(!i){this.reply(e,n,!1,void 0,"Session not found");return}w.info({sessionId:s,agent:i.agent},"stopping session"),T.emit("session.stop",{sessionId:s,agent:i.agent}),Ud(i);let o=i.isResponding||i.pendingQueue.length>0||i.startupInProgress,a=i.pendingQueue.length>0;this.resolvePendingClaudeHookApprovals(i),i.driver?.stop(),i.active=!1,i.driver=null,i.isResponding=!1,i.currentReplyText="",i.pendingApproval=void 0,i.startupInProgress=!1,i.pendingQueue=[],i.startupToken+=1,this.clearStallWarning(i),o&&this.markLatestAcceptedClientMessageInterrupted(i),this.updateGauges(),this.touchSession(i.sessionId),this.noteInventoryChanged("session_updated"),a&&this.broadcastPendingQueue(i),this.reply(e,n,!0,this.buildResolvedSessionResponseData(r,{sessionId:s}))}deleteSession(e,n,s){let r=this.resolveSessionRef(s);s=r.resolvedSessionId;let i=this.sessions.get(s);i&&(w.info({sessionId:s,agent:i.agent},"deleting session"),this.resolvePendingClaudeHookApprovals(i),i.driver?.stop(),i.startupInProgress=!1,i.pendingQueue=[],i.startupToken+=1,this.unregisterClaudeHookSession(i),this.sessions.delete(s)),T.emit("session.delete",{sessionId:s}),this.store.remove(s),this.updateGauges(),Vs(),Os(),this.noteInventoryChanged("session_deleted"),this.reply(e,n,!0,this.buildResolvedSessionResponseData(r,{sessionId:s}))}async sendHistory(e,n,s,r){let i=this.resolveSessionRef(s);s=i.resolvedSessionId;let o=this.sessions.get(s),a=o?.active?o:void 0;if(!o&&this.isDeletedSession(s)){this.reply(e,n,!1,void 0,"Session not found");return}o&&o.clients.add(e);let l=a?.cwd??o?.cwd??this.store.find(s)?.cwd??"",u=this.store.find(s),c=await Mn(s,r,l),d=this.annotateHistoryMessages(c,o?.acceptedClientMessageIds??u?.acceptedClientMessageIds,o?.interruptedClientMessageIds??u?.interruptedClientMessageIds),f=a||o?{}:await ao(s,r,l),h=!a&&!!f.isResponding,g=h?await this.externalProcessPresenceCheck(s):!1,p=g?!0:void 0,m=h&&!g?{}:f,y=a?.isResponding??m.isResponding,C=a?this.currentPartialReplyText(a):m.partialReplyText;w.info({sessionId:s,historyCount:c.length,isResponding:y,externallyResponding:p,approvalMode:o?.approvalMode??u?.approvalMode},"sending history");let _=o&&o.pendingQueue.length>0?Ht(o.pendingQueue):u?.pendingQueue&&u.pendingQueue.length>0?u.pendingQueue:void 0,A={type:"session.history",sessionId:s,messages:d,...er(o?.acceptedClientMessageIds??u?.acceptedClientMessageIds),isResponding:y,externallyResponding:p,partialReplyText:C,approvalMode:o?.approvalMode??u?.approvalMode,pendingApproval:o?.pendingApproval??u?.pendingApproval,stallWarning:o?.stallWarning??u?.stallWarning,..._?{pendingQueue:_}:{}};e.readyState===1&&e.send(JSON.stringify(A));let I=o?.interruptReason??u?.interruptReason;if(I&&e.readyState===1){let B={type:"session.interrupted_notice",sessionId:s,reason:I};e.send(JSON.stringify(B))}this.reply(e,n,!0,this.buildResolvedSessionResponseData(i,{sessionId:s}))}async listSessions(e,n,s,r,i,o=50,a,l,u,c){try{let d=await qs({agent:s,cwd:r,search:i,sinceMs:u,customTitles:l,limit:o,cursor:a,activeSessions:this.activeSessionSnapshots(),sessionRecords:this.store.getAll(),deletedSessionIds:this.getDeletedSessionIds(),skipGitMetadata:c});this.reply(e,n,!0,{...d,inventoryVersion:this.inventoryVersion})}catch(d){this.reply(e,n,!1,void 0,String(d))}}listArchiveableManagedSessions(e,n){let s=this.getDeletedSessionIds(),r=new Set;for(let o of this.sessions.values())o.managed&&(o.sessionId.startsWith("pending_")||s.has(o.sessionId)||r.add(o.sessionId));for(let o of this.store.getAll())o.managed&&(s.has(o.sessionId)||r.add(o.sessionId));let i={count:r.size,ids:[...r]};this.reply(e,n,!0,i)}createDriver(e){if(S.reviewMock)return new Rs;switch(e){case"claude":return new wn;case"codex":return new In;default:throw new Error(`Unknown agent: ${e}`)}}broadcast(e,n){let s=this.sessions.get(e);if(!s){w.warn({sessionId:e,msgType:n.type},"broadcast target session not found");return}let r=JSON.stringify(n),i=n.type==="approval.request"?this.globalClients:s.clients,o=i.size,a=0,l=0;for(let u of i)u.readyState===1?(u.send(r),a++):l++;if(l>0&&b.increment("broadcast.fail"),n.type!=="text.delta"&&w.debug({sessionId:e,msgType:n.type,sent:a,total:o},"broadcast"),n.type==="text.delta"){s.currentReplyText+=n.content;return}if(n.type==="session.done"){let u=s.title||e,c=this.buildPushBody(s.currentReplyText);s.currentReplyText="",this.pushSender({title:u,body:c},{sessionId:e,agent:s.agent,eventType:"reply_ready"});return}n.type==="session.interrupted"&&(s.currentReplyText="")}reply(e,n,s,r,i){if(e.readyState!==1)return;let o={type:"response",id:n,ok:s,data:r,error:i};e.send(JSON.stringify(o))}};function po(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,t.locale):e.unregisterToken(e.deviceId,t.pushToken),e.respond({type:"response",id:t.id,ok:!0})}var Vd=require("child_process");function VS(t,e){return(0,Vd.execFileSync)(t,e,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}function QS(t){let e=t.split(`
113
+ `).map(n=>Number(n.trim())).filter(n=>Number.isFinite(n)&&n>0);return[...new Set(e)]}function Qd(t,e=VS){let n;try{n=QS(e("lsof",["-ti",`tcp:${t}`]))}catch{return[]}return n.map(s=>{try{let r=e("ps",["-p",String(s),"-o","command="]);return r?{pid:s,command:r}:{pid:s}}catch{return{pid:s}}})}var qt=require("fs"),ho=require("os"),Jd=require("crypto"),Kd=require("path");function Xd(t){return(0,Jd.randomBytes)(t).toString("base64url")}function YS(){return`d_${Xd(12)}`}function JS(){return(0,ho.hostname)()}function KS(){let t=(0,ho.hostname)().trim().toLowerCase();return t?t.endsWith(".local")?t:`${t}.local`:"localhost"}function XS(t){return{daemonId:YS(),daemonSecret:Xd(32),displayName:JS(),canonicalHost:KS(),port:t,createdAt:new Date().toISOString()}}function Yd(t,e){(0,qt.mkdirSync)((0,Kd.dirname)(e),{recursive:!0}),(0,qt.writeFileSync)(e,JSON.stringify(t,null,2)+`
114
+ `,"utf8")}function Zd(t,e=Hc){try{let s=(0,qt.readFileSync)(e,"utf8"),r=JSON.parse(s);if(typeof r.daemonId=="string"&&typeof r.daemonSecret=="string"&&typeof r.displayName=="string"&&typeof r.canonicalHost=="string"&&typeof r.createdAt=="string"){let i={daemonId:r.daemonId,daemonSecret:r.daemonSecret,displayName:r.displayName,canonicalHost:r.canonicalHost,port:typeof r.port=="number"&&Number.isFinite(r.port)?r.port:t,createdAt:r.createdAt};return i.port!==t&&(i.port=t,Yd(i,e)),i}}catch{}let n=XS(t);return Yd(n,e),n}var Gt=require("crypto"),jt=require("fs"),tf=require("path");function go(t){return(0,Gt.randomBytes)(t).toString("base64url")}function mo(t){return(0,Gt.createHash)("sha256").update(t).digest("hex")}function ef(t,e){let n=Buffer.from(t),s=Buffer.from(e);return n.length!==s.length?!1:(0,Gt.timingSafeEqual)(n,s)}function ZS(t){try{let e=(0,jt.readFileSync)(t,"utf8"),n=JSON.parse(e);return Array.isArray(n)?n.filter(s=>s&&typeof s.deviceId=="string"&&typeof s.deviceName=="string"&&typeof s.tokenHash=="string"&&typeof s.createdAt=="string"&&typeof s.lastSeenAt=="string"&&(typeof s.revokedAt=="string"||s.revokedAt===null)):[]}catch{return[]}}function On(t,e){(0,jt.mkdirSync)((0,tf.dirname)(t),{recursive:!0}),(0,jt.writeFileSync)(t,JSON.stringify(e,null,2)+`
115
+ `,"utf8")}var nr=class{constructor(e=Uc){this.pairingsPath=e;this.records=ZS(e)}records;windows=new Map;list(){return this.records.slice()}pairedCount(){return this.records.filter(e=>!e.revokedAt).length}openWindow(e=5*6e4,n=!1){let s=`pair_${go(8)}`,r=go(24),i=new Date(Date.now()+e).toISOString(),o={pairingId:s,pairNonce:r,expiresAt:i,reusable:n};return this.windows.set(r,o),o}consumeWindow(e){let n=this.windows.get(e);return!n||(n.reusable||this.windows.delete(e),new Date(n.expiresAt).getTime()<Date.now())?null:n}issuePairToken(e,n){let s=new Date().toISOString(),r=go(32),i={deviceId:e,deviceName:n,tokenHash:mo(r),createdAt:s,lastSeenAt:s,revokedAt:null},o=this.records.findIndex(a=>a.deviceId===e);return o>=0?this.records[o]=i:this.records.unshift(i),On(this.pairingsPath,this.records),r}validatePairToken(e,n,s=!0){let r=this.records.find(o=>o.deviceId===e&&!o.revokedAt);if(!r)return!1;let i=mo(n);return ef(r.tokenHash,i)?(s&&(r.lastSeenAt=new Date().toISOString(),On(this.pairingsPath,this.records)),!0):!1}validateAnyPairToken(e,n=!0){let s=mo(e),r=this.records.find(i=>!i.revokedAt&&ef(i.tokenHash,s));return r?(n&&(r.lastSeenAt=new Date().toISOString(),On(this.pairingsPath,this.records)),r):null}revoke(e){let n=this.records.find(s=>s.deviceId===e&&!s.revokedAt);return n?(n.revokedAt=new Date().toISOString(),On(this.pairingsPath,this.records),!0):!1}reset(){this.records=[],this.windows.clear(),On(this.pairingsPath,this.records)}};function at(t){return t?t==="127.0.0.1"||t==="::1"||t==="::ffff:127.0.0.1":!1}function e_(t){return t&&t.match(/^Bearer\s+(.+)$/i)?.[1]?.trim()||null}function yo(t,e){return e_(t)??e}function sr(t,e){return!!(t&&e&&t===e)}function vo(t,e,n,s=!0){return t?sr(t,e)?!0:!!n(t,s):!1}var rf=require("child_process"),of=require("fs");function rr(t){let e=t.split(".");return e.length!==4?!1:e.every(n=>/^\d+$/.test(n)&&Number(n)>=0&&Number(n)<=255)}function So(t){if(!rr(t))return!1;let[e,n]=t.split(".").map(Number);return e===100&&n>=64&&n<=127}function t_(t){if(!rr(t))return!1;let[e,n]=t.split(".").map(Number);return e===169&&n===254}function n_(t){if(!rr(t))return!1;let[e,n]=t.split(".").map(Number);return e===198&&(n===18||n===19)}function s_(t){if(!rr(t))return!1;let[e,n]=t.split(".").map(Number);return e===10||e===172&&n>=16&&n<=31||e===192&&n===168}function ir(t){return!!t&&!t_(t)&&!n_(t)}function de(t){if(!t)return;let e=t.trim().replace(/\.$/,"");return e?e.toLowerCase():void 0}function _o(t){return de(t.replace(/^https?:\/\//,""))??t}function r_(t,e){return(t??[]).map(n=>de(n)).filter(n=>!!n).filter(n=>ir(n)).filter((n,s,r)=>n!==e&&r.indexOf(n)===s)}function i_(t){let e=t.trim().toLowerCase();return e?!(e==="lo"||e==="lo0"||e.startsWith("loopback")||e.startsWith("awdl")||e.startsWith("llw")||e.startsWith("utun")||e.startsWith("tun")||e.startsWith("tap")||e.startsWith("ipsec")||e.startsWith("bridge")||e.startsWith("docker")||e.startsWith("br-")||e.startsWith("veth")||e.startsWith("vmnet")||e.startsWith("vboxnet")||e.startsWith("tailscale")||e.startsWith("wg")||e.startsWith("zt")||e.startsWith("ham")):!1}function o_(t){let e=_o(t);return So(e)||e.endsWith(".ts.net")}function a_(t){let e=_o(t);return s_(e)||e.endsWith(".local")}function l_(t){return _o(t).endsWith(".trycloudflare.com")}function nf(t,e){return o_(t)?"tailscale":a_(t)?"local_network":e?"configured_host":"fallback"}function af(t){let e=new Set,n=[];for(let s of t){let r=`${s.host}:${s.port}:${s.secure===!0?"secure":"plain"}`;e.has(r)||(e.add(r),n.push(s))}return n}function c_(t){let e=t[0];return e?t.slice(1).filter(n=>n.port===e.port).map(n=>n.host).filter((n,s,r)=>n!==e.host&&r.indexOf(n)===s):[]}function u_(t){try{let e=new URL(t),n=de(e.hostname);if(!n)throw new Error("invalid relay hostname");let s=e.port?Number(e.port):e.protocol==="https:"?443:80,r=Number.isFinite(s)&&s>0?Math.floor(s):443,i=l_(n);return{kind:"relay",host:n,port:r,...e.protocol==="https:"?{secure:!0}:{},source:i?"quick_tunnel":"configured_relay",stability:i?"ephemeral":"stable"}}catch{return null}}function d_(t,e,n){let s=de(t)||"localhost",r=r_(e,s);return af([{kind:"direct",host:s,port:n,source:nf(s,!0),stability:"stable"},...r.map(i=>({kind:"direct",host:i,port:n,source:nf(i,!1),stability:"stable"}))])}function lf(t){return t?t.split(",").map(e=>e.trim()).filter(Boolean):[]}function f_(t){let e=[],n=[];for(let[s,r]of Object.entries(t))if(r&&i_(s))for(let i of r)i.internal||i.family!=="IPv4"||ir(i.address)&&(So(i.address)?e.push(i.address):n.push(i.address));return[...e,...n]}function sf(t){let e=JSON.parse(t),n=de(e.Self?.DNSName),s=(e.Self?.TailscaleIPs??[]).map(o=>de(o)).filter(o=>!!o).filter(o=>So(o)&&ir(o)),r=s[0]??n,i=[...n&&n!==r?[n]:[],...s.filter(o=>o!==r)];return{canonicalHost:r,fallbackHosts:i}}function cf(t=rf.execFileSync,e=of.existsSync){let n=[process.env.TAILSCALE_SOCKET,"/tmp/tailscale.sock"].filter(s=>typeof s=="string"&&s.length>0).filter(s=>e(s));for(let s of n)try{let r=t("tailscale",["--socket",s,"status","--json"],{encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:1500});return sf(r)}catch{}try{let s=t("tailscale",["status","--json"],{encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:1500});return sf(s)}catch{return{fallbackHosts:[]}}}function uf(t){let e=d_(t.canonicalHost,t.fallbackHosts,t.port),n=t.relayUrl?u_(t.relayUrl):null,s=af([...n?[n]:[],...e]),r=s[0]??{kind:"direct",host:de(t.canonicalHost)||"localhost",port:t.port,source:"configured_host",stability:"stable"};return{canonicalHost:r.host,fallbackHosts:c_(s),port:r.port,connections:s}}function df(t){let e=de(t.canonicalHost),n=de(t.configuredCanonicalHost)||de(t.tailscaleCanonicalHost)||e||"localhost",s=[...e&&e!==n?[e]:[],...t.configuredFallbackHosts??[],...t.tailscaleFallbackHosts??[],...f_(t.interfaces)].map(r=>de(r)).filter(r=>!!r).filter(r=>ir(r)).filter((r,i,o)=>r!==n&&o.indexOf(r)===i);return{canonicalHost:n,fallbackHosts:s}}function ff(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 z=N.child({module:"daemon"}),Bn=N.child({module:"ws"});function p_(){try{let t=JSON.parse(require("fs").readFileSync(qc,"utf8"));return typeof t.latestVersion=="string"?t.latestVersion:void 0}catch{return}}var W=Zd(S.port),ee=new tr((t,e)=>Zs(t,{daemonId:W.daemonId,canonicalHost:Dn().canonicalHost,...e??{}})),pe=new nr,ar=new Set,Ue=new WeakMap,pf=!1,yf=Date.now(),$t=null,or=null,h_=1e3;function g_(){let t=cf();return df({canonicalHost:W.canonicalHost,configuredCanonicalHost:S.canonicalHost,configuredFallbackHosts:lf(S.fallbackHosts),tailscaleCanonicalHost:t.canonicalHost,tailscaleFallbackHosts:t.fallbackHosts,interfaces:(0,mf.networkInterfaces)()})}function Dn(){let t=Date.now();if(or&&or.expiresAt>t)return or.value;let e=g_(),n=uf({canonicalHost:e.canonicalHost,fallbackHosts:e.fallbackHosts,port:W.port,relayUrl:S.relayUrl});return or={value:n,expiresAt:t+h_},n}function m_(t){let e={t:"vp",d:t.daemonId,n:t.displayName,h:t.canonicalHost,p:t.port,c:t.pairNonce,e:t.expiresAt};return t.fallbackHosts&&(e.f=t.fallbackHosts),t.connections?.length&&(e.o=t.connections.map(n=>[n.kind,n.host,n.port,n.source,n.stability,n.secure===!0])),e}async function y_(t){let e=JSON.stringify(m_(t));await(0,ae.mkdir)(Ie,{recursive:!0}),await Io.default.toFile(bi,e,{type:"png",errorCorrectionLevel:"M",margin:1,scale:8});let n=await Io.default.toString(e,{type:"terminal",small:!0,errorCorrectionLevel:"M"});Ct(`
114
116
  Scan this QR code with Vibelet app:
115
117
 
116
118
  ${n}
117
- `),kt(`If Vibelet app can't scan the terminal QR, open this PNG instead:
118
- ${vi}
119
- `)}async function vo(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 e_(t){let e=(0,jt.extname)(t).toLowerCase();return{".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".svg":"image/svg+xml",".webp":"image/webp",".heic":"image/heic",".heif":"image/heif",".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 df(){return S.pairWindowMs===0?10*365.25*24*36e5:S.pairWindowMs}function t_(t,e){if(at(t.socket.remoteAddress))return!0;let n=ho(t.headers.authorization,e.searchParams.get("token"));return go(n,S.legacyToken,(r,s)=>pe.validateAnyPairToken(r,s),!1)}function n_(){let t=pe.openWindow(df(),S.pairReusable),e=On();return{type:"vibelet-pair",daemonId:U.daemonId,displayName:U.displayName,canonicalHost:e.canonicalHost,fallbackHosts:e.fallbackHosts.length>0?e.fallbackHosts:void 0,port:e.port,connections:e.connections,pairNonce:t.pairNonce,expiresAt:t.expiresAt}}async function r_(t,e){let n=io(t,e),r=await(0,oe.readdir)(n),s=[];for(let i of r){if(i.startsWith("."))continue;let o=await(0,oe.stat)((0,jt.join)(n,i)).catch(()=>null);o&&s.push({name:i,isDirectory:o.isDirectory()})}return s.sort((i,o)=>i.isDirectory!==o.isDirectory?i.isDirectory?-1:1:i.name.localeCompare(o.name)),{entries:s}}var Bn=(0,af.createServer)(async(t,e)=>{let n=new URL(t.url??"/",`http://localhost:${S.port}`);if(n.pathname==="/health"){let s=On(),i=JS(),o={status:"ok",version:Et,...i?{latestVersion:i}:{}};if(!t_(t,n)){F(e,200,o);return}let a={...o,status:"ok",daemonId:U.daemonId,displayName:U.displayName,canonicalHost:s.canonicalHost,uptimeSeconds:Math.round((Date.now()-uf)/1e3),activeSessions:Z.getActiveSessionCount(),pairedDevices:pe.pairedCount(),wsClients:fe.clients.size,drivers:Z.getDriverCounts(),sessionInventory:Xu(),metrics:_.snapshot()};S.relayUrl&&(a.relayUrl=S.relayUrl),F(e,200,a);return}if(t.method==="POST"&&n.pathname==="/pair/open"){if(!at(t.socket.remoteAddress)){F(e,403,{error:"forbidden"});return}F(e,200,n_());return}if(t.method==="POST"&&n.pathname==="/pair/reset"){if(!at(t.socket.remoteAddress)){F(e,403,{error:"forbidden"});return}pe.reset(),F(e,200,{ok:!0});return}if(t.method==="POST"&&n.pathname==="/shutdown"){if(!at(t.socket.remoteAddress)){F(e,403,{error:"forbidden"});return}F(e,200,{status:"stopping"}),setTimeout(()=>lt("HTTP /shutdown request"),50);return}if(t.method==="POST"&&n.pathname==="/hook/claude/session-start"){if(!at(t.socket.remoteAddress)){F(e,403,{error:"forbidden"});return}try{let s=await vo(t),i=t.headers[yn],o=Array.isArray(i)?i[0]:i;Z.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(!at(t.socket.remoteAddress)){F(e,403,{error:"forbidden"});return}try{let s=await vo(t),i=t.headers[yn],o=Array.isArray(i)?i[0]:i,a=await Z.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 vo(t);if(s.daemonId!==U.daemonId||typeof s.pairNonce!="string"||typeof s.deviceId!="string"||typeof s.deviceName!="string"){F(e,400,{error:"invalid_pair_request"});return}if(!pe.consumeWindow(s.pairNonce)){F(e,401,{error:"pair_window_expired"});return}let o=pe.issuePairToken(s.deviceId,s.deviceName),a=On();F(e,200,{daemonId:U.daemonId,displayName:U.displayName,canonicalHost:a.canonicalHost,fallbackHosts:a.fallbackHosts,port:a.port,connections:a.connections,deviceId:s.deviceId,pairToken:o})}catch(s){F(e,400,{error:String(s)})}return}let r=ho(t.headers.authorization,n.searchParams.get("token"));if(!go(r,S.legacyToken,(s,i)=>pe.validateAnyPairToken(s,i),!1)){e.writeHead(401),e.end("Unauthorized");return}if(t.method==="POST"&&n.pathname==="/upload"){let s={"image/png":".png","image/jpeg":".jpg","image/gif":".gif","image/webp":".webp","image/heic":".heic","image/heif":".heif","application/pdf":".pdf","text/plain":".txt","text/markdown":".md","application/json":".json","application/zip":".zip"},i=(t.headers["content-type"]??"").split(";")[0].trim(),o=n.searchParams.get("name")??"",l=(0,jt.extname)(o).toLowerCase()||s[i]||".bin",u=50*1024*1024,c=[],d=0;for await(let p of t){let h=Buffer.isBuffer(p)?p:Buffer.from(p);if(d+=h.length,d>u){e.writeHead(413),e.end("File too large");return}c.push(h)}try{await(0,oe.mkdir)(yi,{recursive:!0});let p=`${Date.now()}_${(0,lf.randomBytes)(8).toString("hex")}${l}`,h=(0,jt.join)(yi,p);await(0,oe.writeFile)(h,Buffer.concat(c)),$.info({filePath:h,size:d,contentType:i,providedName:o||void 0},"file uploaded"),F(e,200,{path:h})}catch(p){$.error({error:String(p)},"upload failed"),F(e,500,{error:"Upload failed"})}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=io(s,i);if(!(await(0,oe.stat)(o)).isFile()){e.writeHead(404),e.end("Not a file");return}let l=e_(o),u=await(0,oe.readFile)(o);e.writeHead(200,{"Content-Type":l,"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${Et}`)}),fe=new ks.default({server:Bn});Bn.on("connection",t=>{rs.add(t),t.on("close",()=>{rs.delete(t)})});fe.on("connection",(t,e)=>{let r=new URL(e.url??"/",`http://localhost:${S.port}`).searchParams.get("token");if(r&&Zr(r,S.legacyToken))He.set(t,{authMode:"query_token"}),_.increment("ws.auth.success",{mode:"query_token"}),Z.addGlobalClient(t),Z.prewarmCaches();else if(r){let s=pe.validateAnyPairToken(r);if(s)He.set(t,{authMode:"query_token",deviceId:s.deviceId}),_.increment("ws.auth.success",{mode:"query_token"}),Z.addGlobalClient(t),Z.prewarmCaches();else{_.increment("ws.auth.failure",{mode:"query_token"}),t.close(4001,"Unauthorized");return}}Nn.info({clients:fe.clients.size},"client connected"),_.increment("ws.connect"),_.gauge("ws.clients",fe.clients.size),I.emit("ws.connect",{clients:fe.clients.size,authMode:He.get(t)?.authMode??"pending",deviceId:He.get(t)?.deviceId}),t.on("message",async s=>{try{let i=JSON.parse(sf(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(!He.has(t)){if(o.action==="auth.hello"){let a=(()=>{if(Zr(o.pairToken,S.legacyToken))return{deviceId:o.deviceId};if(o.deviceId&&o.daemonId===U.daemonId&&pe.validatePairToken(o.deviceId,o.pairToken))return{deviceId:o.deviceId};if(!o.daemonId||o.daemonId===U.daemonId){let l=pe.validateAnyPairToken(o.pairToken);if(l)return{deviceId:l.deviceId}}return null})();if(a){He.set(t,{authMode:"auth_hello",deviceId:a.deviceId}),_.increment("ws.auth.success",{mode:"auth_hello"}),Z.addGlobalClient(t),Z.prewarmCaches(),t.send(JSON.stringify({type:"response",id:o.id,ok:!0,data:{daemonId:U.daemonId,displayName:U.displayName}}));return}_.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}_.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)I.emitApp(a.event,a.level,a.data??{},a.ts),(a.level==="error"?$.error:a.level==="warn"?$.warn:$.info).call($,{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 r_(o.path,o.cwd);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=He.get(t);co(i,{deviceId:a?.deviceId,registerToken:oo,unregisterToken:ao,respond:l=>t.send(JSON.stringify(l))});return}if(i.action==="push.unregister"){let a=He.get(t);co(i,{deviceId:a?.deviceId,registerToken:oo,unregisterToken:ao,respond:l=>t.send(JSON.stringify(l))});return}await Z.handle(t,o)}catch(i){Nn.error({error:String(i)},"message handling error"),t.send(JSON.stringify({type:"error",sessionId:"",message:String(i)}))}}),t.on("close",s=>{Nn.info({clients:fe.clients.size,code:s},"client disconnected"),_.increment("ws.disconnect"),_.increment("ws.disconnect.code",{code:String(s)}),_.gauge("ws.clients",fe.clients.size),I.emit("ws.disconnect",{clients:fe.clients.size,code:s}),Z.removeClient(t)}),t.on("error",s=>{Nn.error({error:s.message},"websocket error")})});function So(){for(let t of rs)try{t.destroy()}catch{}rs.clear()}function ff(){let t=Kc({auditPath:At,stdoutLogPath:pr,stderrLogPath:hr,auditMaxBytes:S.auditMaxBytes,logMaxBytes:S.daemonLogMaxBytes});t.trimmedFiles>0&&$.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 s_(){Gt||(Gt=setInterval(ff,S.storageHousekeepingIntervalMs),Gt.unref())}function i_(){Gt&&(clearInterval(Gt),Gt=null)}function lt(t,e=0){if(!of){of=!0,$.info({reason:t,exitCode:e},"shutting down"),I.emit("daemon.shutdown",{reason:t,exitCode:e,uptimeSeconds:Math.round((Date.now()-uf)/1e3)}),_.stopPeriodicLog(),i_(),Lt.stop().catch(()=>{}),Z.shutdown();for(let n of fe.clients)try{n.close(1001,"Server shutting down"),n.terminate()}catch{}fe.close(n=>{n&&$.error({error:String(n)},"websocket close error")}),Bn.close(n=>{if(n){$.error({error:String(n)},"http close error"),So(),process.exit(1);return}So(),process.exit(e)}),setTimeout(()=>{$.error("force exiting after shutdown timeout"),So(),process.exit(e||1)},3e3).unref()}}fe.on("error",t=>{Nn.error({error:t.message},"wss error")});Bn.on("error",t=>{if(t.code==="EADDRINUSE"){let e=Wd(S.port).filter(n=>n.pid!==process.pid);$.error({port:S.port,occupants:e},"port is already in use. Stop the existing process or start Vibelet with --port <port> (or VIBE_PORT=<port>)")}else $.error({error:String(t)},"server error");lt(`httpServer error: ${t.code??t.message}`,1)});process.once("SIGINT",()=>lt("SIGINT"));process.once("SIGTERM",()=>lt("SIGTERM"));process.once("SIGHUP",()=>lt("SIGHUP"));process.once("SIGTTIN",()=>lt("SIGTTIN"));process.once("SIGTSTP",()=>lt("SIGTSTP"));process.on("uncaughtException",t=>{$.error({error:String(t),stack:t.stack},"uncaughtException"),I.emit("daemon.error",{type:"uncaughtException",error:String(t)})});process.on("unhandledRejection",t=>{$.error({reason:String(t)},"unhandledRejection"),I.emit("daemon.error",{type:"unhandledRejection",reason:String(t)})});Bn.listen(S.port,async()=>{ff(),I.emit("daemon.start",{port:S.port}),_.startPeriodicLog(),s_(),Qu(),Lt.start().catch(r=>{$.warn({error:String(r)},"session activity watcher failed to start")});let t=On();$.info({port:S.port,pairingPort:t.port,daemonId:U.daemonId,displayName:U.displayName,canonicalHost:t.canonicalHost,fallbackHosts:t.fallbackHosts,claudePath:S.claudePath,codexPath:S.codexPath,auditMaxBytes:S.auditMaxBytes,daemonLogMaxBytes:S.daemonLogMaxBytes,storageHousekeepingIntervalMs:S.storageHousekeepingIntervalMs,turnStallTimeoutMs:S.turnStallTimeoutMs,turnStallHardTimeoutMs:S.turnStallHardTimeoutMs},"daemon started");let e=pe.openWindow(df(),S.pairReusable),n={type:"vibelet-pair",daemonId:U.daemonId,displayName:U.displayName,canonicalHost:t.canonicalHost,fallbackHosts:t.fallbackHosts.length>0?t.fallbackHosts:void 0,port:t.port,connections:t.connections,pairNonce:e.pairNonce,expiresAt:e.expiresAt};kt(`
119
+ `),Ct(`If Vibelet app can't scan the terminal QR, open this PNG instead:
120
+ ${bi}
121
+ `)}async function bo(t){let e=[];for await(let s of t)e.push(Buffer.isBuffer(s)?s:Buffer.from(s));let n=Buffer.concat(e).toString("utf8");return n?JSON.parse(n):{}}function H(t,e,n){t.writeHead(e,{"Content-Type":"application/json"}),t.end(JSON.stringify(n,null,2))}function v_(t){let e=(0,zt.extname)(t).toLowerCase();return{".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".svg":"image/svg+xml",".webp":"image/webp",".heic":"image/heic",".heif":"image/heif",".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 vf(){return S.pairWindowMs===0?10*365.25*24*36e5:S.pairWindowMs}function S_(t,e){if(at(t.socket.remoteAddress))return!0;let n=yo(t.headers.authorization,e.searchParams.get("token"));return vo(n,S.legacyToken,(s,r)=>pe.validateAnyPairToken(s,r),!1)}function __(){let t=pe.openWindow(vf(),S.pairReusable),e=Dn();return{type:"vibelet-pair",daemonId:W.daemonId,displayName:W.displayName,canonicalHost:e.canonicalHost,fallbackHosts:e.fallbackHosts.length>0?e.fallbackHosts:void 0,port:e.port,connections:e.connections,pairNonce:t.pairNonce,expiresAt:t.expiresAt}}async function b_(t,e){let n=lo(t,e),s=await(0,ae.readdir)(n),r=[];for(let i of s){if(i.startsWith("."))continue;let o=await(0,ae.stat)((0,zt.join)(n,i)).catch(()=>null);o&&r.push({name:i,isDirectory:o.isDirectory()})}return r.sort((i,o)=>i.isDirectory!==o.isDirectory?i.isDirectory?-1:1:i.name.localeCompare(o.name)),{entries:r}}var Fn=(0,hf.createServer)(async(t,e)=>{let n=new URL(t.url??"/",`http://localhost:${S.port}`);if(n.pathname==="/health"){let r=Dn(),i=p_(),o={status:"ok",version:Pt,...i?{latestVersion:i}:{}};if(!S_(t,n)){H(e,200,o);return}let a={...o,status:"ok",daemonId:W.daemonId,displayName:W.displayName,canonicalHost:r.canonicalHost,uptimeSeconds:Math.round((Date.now()-yf)/1e3),activeSessions:ee.getActiveSessionCount(),pairedDevices:pe.pairedCount(),wsClients:fe.clients.size,drivers:ee.getDriverCounts(),sessionInventory:nd(),metrics:b.snapshot()};S.relayUrl&&(a.relayUrl=S.relayUrl),H(e,200,a);return}if(t.method==="POST"&&n.pathname==="/pair/open"){if(!at(t.socket.remoteAddress)){H(e,403,{error:"forbidden"});return}H(e,200,__());return}if(t.method==="POST"&&n.pathname==="/pair/reset"){if(!at(t.socket.remoteAddress)){H(e,403,{error:"forbidden"});return}pe.reset(),H(e,200,{ok:!0});return}if(t.method==="POST"&&n.pathname==="/shutdown"){if(!at(t.socket.remoteAddress)){H(e,403,{error:"forbidden"});return}H(e,200,{status:"stopping"}),setTimeout(()=>lt("HTTP /shutdown request"),50);return}if(t.method==="POST"&&n.pathname==="/hook/claude/session-start"){if(!at(t.socket.remoteAddress)){H(e,403,{error:"forbidden"});return}try{let r=await bo(t),i=t.headers[Sn],o=Array.isArray(i)?i[0]:i;ee.handleClaudeSessionStartHook(o,r),H(e,200,{ok:!0})}catch(r){H(e,400,{error:String(r)})}return}if(t.method==="POST"&&n.pathname==="/hook/claude/permission-request"){if(!at(t.socket.remoteAddress)){H(e,403,{error:"forbidden"});return}try{let r=await bo(t),i=t.headers[Sn],o=Array.isArray(i)?i[0]:i,a=await ee.handleClaudePermissionHook(o,r);H(e,200,a)}catch(r){H(e,400,{error:String(r)})}return}if(t.method==="POST"&&n.pathname==="/pair/create"){try{let r=await bo(t);if(r.daemonId!==W.daemonId||typeof r.pairNonce!="string"||typeof r.deviceId!="string"||typeof r.deviceName!="string"){H(e,400,{error:"invalid_pair_request"});return}if(!pe.consumeWindow(r.pairNonce)){H(e,401,{error:"pair_window_expired"});return}let o=pe.issuePairToken(r.deviceId,r.deviceName),a=Dn();H(e,200,{daemonId:W.daemonId,displayName:W.displayName,canonicalHost:a.canonicalHost,fallbackHosts:a.fallbackHosts,port:a.port,connections:a.connections,deviceId:r.deviceId,pairToken:o})}catch(r){H(e,400,{error:String(r)})}return}let s=yo(t.headers.authorization,n.searchParams.get("token"));if(!vo(s,S.legacyToken,(r,i)=>pe.validateAnyPairToken(r,i),!1)){e.writeHead(401),e.end("Unauthorized");return}if(t.method==="POST"&&n.pathname==="/upload"){let r={"image/png":".png","image/jpeg":".jpg","image/gif":".gif","image/webp":".webp","image/heic":".heic","image/heif":".heif","application/pdf":".pdf","text/plain":".txt","text/markdown":".md","application/json":".json","application/zip":".zip"},i=(t.headers["content-type"]??"").split(";")[0].trim(),o=n.searchParams.get("name")??"",l=(0,zt.extname)(o).toLowerCase()||r[i]||".bin",u=50*1024*1024,c=[],d=0;for await(let f of t){let h=Buffer.isBuffer(f)?f:Buffer.from(f);if(d+=h.length,d>u){e.writeHead(413),e.end("File too large");return}c.push(h)}try{await(0,ae.mkdir)(_i,{recursive:!0});let f=`${Date.now()}_${(0,gf.randomBytes)(8).toString("hex")}${l}`,h=(0,zt.join)(_i,f);await(0,ae.writeFile)(h,Buffer.concat(c)),z.info({filePath:h,size:d,contentType:i,providedName:o||void 0},"file uploaded"),H(e,200,{path:h})}catch(f){z.error({error:String(f)},"upload failed"),H(e,500,{error:"Upload failed"})}return}if(n.pathname==="/file"){let r=n.searchParams.get("path"),i=n.searchParams.get("cwd")||void 0;if(!r){e.writeHead(400),e.end("Missing path parameter");return}try{let o=lo(r,i);if(!(await(0,ae.stat)(o)).isFile()){e.writeHead(404),e.end("Not a file");return}let l=v_(o),u=await(0,ae.readFile)(o);e.writeHead(200,{"Content-Type":l,"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${Pt}`)}),fe=new Rr.default({server:Fn});Fn.on("connection",t=>{ar.add(t),t.on("close",()=>{ar.delete(t)})});fe.on("connection",(t,e)=>{let s=new URL(e.url??"/",`http://localhost:${S.port}`).searchParams.get("token");if(s&&sr(s,S.legacyToken))Ue.set(t,{authMode:"query_token"}),b.increment("ws.auth.success",{mode:"query_token"}),ee.addGlobalClient(t),ee.prewarmCaches();else if(s){let r=pe.validateAnyPairToken(s);if(r)Ue.set(t,{authMode:"query_token",deviceId:r.deviceId}),b.increment("ws.auth.success",{mode:"query_token"}),ee.addGlobalClient(t),ee.prewarmCaches();else{b.increment("ws.auth.failure",{mode:"query_token"}),t.close(4001,"Unauthorized");return}}Bn.info({clients:fe.clients.size},"client connected"),b.increment("ws.connect"),b.gauge("ws.clients",fe.clients.size),T.emit("ws.connect",{clients:fe.clients.size,authMode:Ue.get(t)?.authMode??"pending",deviceId:Ue.get(t)?.deviceId}),t.on("message",async r=>{try{let i=JSON.parse(ff(r));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(!Ue.has(t)){if(o.action==="auth.hello"){let a=(()=>{if(sr(o.pairToken,S.legacyToken))return{deviceId:o.deviceId};if(o.deviceId&&o.daemonId===W.daemonId&&pe.validatePairToken(o.deviceId,o.pairToken))return{deviceId:o.deviceId};if(!o.daemonId||o.daemonId===W.daemonId){let l=pe.validateAnyPairToken(o.pairToken);if(l)return{deviceId:l.deviceId}}return null})();if(a){Ue.set(t,{authMode:"auth_hello",deviceId:a.deviceId,...o.locale?{locale:o.locale}:{}}),b.increment("ws.auth.success",{mode:"auth_hello"}),ee.addGlobalClient(t),ee.prewarmCaches(),t.send(JSON.stringify({type:"response",id:o.id,ok:!0,data:{daemonId:W.daemonId,...a.deviceId?{deviceId:a.deviceId}:{},displayName:W.displayName}}));return}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)T.emitApp(a.event,a.level,a.data??{},a.ts),(a.level==="error"?z.error:a.level==="warn"?z.warn:z.info).call(z,{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 b_(o.path,o.cwd);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=Ue.get(t),l=i.locale?i:{...i,locale:a?.locale};po(l,{deviceId:a?.deviceId,registerToken:co,unregisterToken:uo,respond:u=>t.send(JSON.stringify(u))});return}if(i.action==="push.unregister"){let a=Ue.get(t);po(i,{deviceId:a?.deviceId,registerToken:co,unregisterToken:uo,respond:l=>t.send(JSON.stringify(l))});return}await ee.handle(t,o)}catch(i){Bn.error({error:String(i)},"message handling error"),t.send(JSON.stringify({type:"error",sessionId:"",message:String(i)}))}}),t.on("close",r=>{Bn.info({clients:fe.clients.size,code:r},"client disconnected"),b.increment("ws.disconnect"),b.increment("ws.disconnect.code",{code:String(r)}),b.gauge("ws.clients",fe.clients.size),T.emit("ws.disconnect",{clients:fe.clients.size,code:r}),ee.removeClient(t)}),t.on("error",r=>{Bn.error({error:r.message},"websocket error")})});function wo(){for(let t of ar)try{t.destroy()}catch{}ar.clear()}function Sf(){let t=Zc({auditPath:kt,stdoutLogPath:ms,stderrLogPath:ys,auditMaxBytes:S.auditMaxBytes,logMaxBytes:S.daemonLogMaxBytes});t.trimmedFiles>0&&z.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 w_(){$t||($t=setInterval(Sf,S.storageHousekeepingIntervalMs),$t.unref())}function I_(){$t&&(clearInterval($t),$t=null)}function lt(t,e=0){if(!pf){pf=!0,z.info({reason:t,exitCode:e},"shutting down"),T.emit("daemon.shutdown",{reason:t,exitCode:e,uptimeSeconds:Math.round((Date.now()-yf)/1e3)}),b.stopPeriodicLog(),I_(),Nt.stop().catch(()=>{}),ee.shutdown();for(let n of fe.clients)try{n.close(1001,"Server shutting down"),n.terminate()}catch{}fe.close(n=>{n&&z.error({error:String(n)},"websocket close error")}),Fn.close(n=>{if(n){z.error({error:String(n)},"http close error"),wo(),process.exit(1);return}wo(),process.exit(e)}),setTimeout(()=>{z.error("force exiting after shutdown timeout"),wo(),process.exit(e||1)},3e3).unref()}}fe.on("error",t=>{Bn.error({error:t.message},"wss error")});Fn.on("error",t=>{if(t.code==="EADDRINUSE"){let e=Qd(S.port).filter(n=>n.pid!==process.pid);z.error({port:S.port,occupants:e},"port is already in use. Stop the existing process or start Vibelet with --port <port> (or VIBE_PORT=<port>)")}else z.error({error:String(t)},"server error");lt(`httpServer error: ${t.code??t.message}`,1)});process.once("SIGINT",()=>lt("SIGINT"));process.once("SIGTERM",()=>lt("SIGTERM"));process.once("SIGHUP",()=>lt("SIGHUP"));process.once("SIGTTIN",()=>lt("SIGTTIN"));process.once("SIGTSTP",()=>lt("SIGTSTP"));process.on("uncaughtException",t=>{z.error({error:String(t),stack:t.stack},"uncaughtException"),T.emit("daemon.error",{type:"uncaughtException",error:String(t)})});process.on("unhandledRejection",t=>{z.error({reason:String(t)},"unhandledRejection"),T.emit("daemon.error",{type:"unhandledRejection",reason:String(t)})});Fn.listen(S.port,async()=>{Sf(),T.emit("daemon.start",{port:S.port}),b.startPeriodicLog(),w_(),sd(),Nt.start().catch(s=>{z.warn({error:String(s)},"session activity watcher failed to start")});let t=Dn();z.info({port:S.port,pairingPort:t.port,daemonId:W.daemonId,displayName:W.displayName,canonicalHost:t.canonicalHost,fallbackHosts:t.fallbackHosts,claudePath:S.claudePath,codexPath:S.codexPath,auditMaxBytes:S.auditMaxBytes,daemonLogMaxBytes:S.daemonLogMaxBytes,storageHousekeepingIntervalMs:S.storageHousekeepingIntervalMs,turnStallTimeoutMs:S.turnStallTimeoutMs,turnStallHardTimeoutMs:S.turnStallHardTimeoutMs},"daemon started");let e=pe.openWindow(vf(),S.pairReusable),n={type:"vibelet-pair",daemonId:W.daemonId,displayName:W.displayName,canonicalHost:t.canonicalHost,fallbackHosts:t.fallbackHosts.length>0?t.fallbackHosts:void 0,port:t.port,connections:t.connections,pairNonce:e.pairNonce,expiresAt:e.expiresAt};Ct(`
120
122
  \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
121
- \u2551 Vibelet Daemon v${Et} \u2551
123
+ \u2551 Vibelet Daemon v${Pt} \u2551
122
124
  \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
123
125
  \u2551 Port: ${String(n.port).padEnd(28)}\u2551
124
- \u2551 ID: ${U.daemonId.slice(0,28).padEnd(28)}\u2551
126
+ \u2551 ID: ${W.daemonId.slice(0,28).padEnd(28)}\u2551
125
127
  \u2551 Host: ${n.canonicalHost.slice(0,28).padEnd(28)}\u2551
126
128
  \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
127
129
 
@@ -131,4 +133,4 @@ Fallbacks: ${n.fallbackHosts?.join(", ")||"(none)"}
131
133
 
132
134
  Claude: ${S.claudePath}
133
135
  Codex: ${S.codexPath}
134
- `);try{await ZS(n)}catch{}});
136
+ `);try{await y_(n)}catch{}});