@vibelet/cli 1.0.25 → 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 df=Object.create;var _o=Object.defineProperty;var ff=Object.getOwnPropertyDescriptor;var pf=Object.getOwnPropertyNames;var hf=Object.getPrototypeOf,gf=Object.prototype.hasOwnProperty;var v=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var mf=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of pf(e))!gf.call(t,s)&&s!==n&&_o(t,s,{get:()=>e[s],enumerable:!(r=ff(e,s))||r.enumerable});return t};var ct=(t,e,n)=>(n=t!=null?df(hf(t)):{},mf(e||!t||!t.__esModule?_o(n,"default",{value:t,enumerable:!0}):n,t));var ve=v((a_,Io)=>{"use strict";var bo=["nodebuffer","arraybuffer","fragments"],wo=typeof Blob<"u";wo&&bo.push("blob");Io.exports={BINARY_TYPES:bo,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:wo,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var $t=v((l_,Dn)=>{"use strict";var{EMPTY_BUFFER:yf}=ve(),is=Buffer[Symbol.species];function vf(t,e){if(t.length===0)return yf;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 To(t,e,n,r,s){for(let i=0;i<s;i++)n[r+i]=t[i]^e[i&3]}function Ao(t,e){for(let n=0;n<t.length;n++)t[n]^=e[n&3]}function Sf(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:vf,mask:To,toArrayBuffer:Sf,toBuffer:os,unmask:Ao};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");Dn.exports.mask=function(e,n,r,s,i){i<48?To(e,n,r,s,i):t.mask(e,n,r,s,i)},Dn.exports.unmask=function(e,n){e.length<32?Ao(e,n):t.unmask(e,n)}}catch{}});var xo=v((c_,Co)=>{"use strict";var ko=Symbol("kDone"),as=Symbol("kRun"),ls=class{constructor(e){this[ko]=()=>{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[ko])}}};Co.exports=ls});var Vt=v((u_,Mo)=>{"use strict";var zt=require("zlib"),Ro=$t(),_f=xo(),{kStatusCode:Eo}=ve(),bf=Buffer[Symbol.species],wf=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 _f(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",Tf),this._inflate.on("data",Po)}this._inflate[ut]=r,this._inflate.write(e),n&&this._inflate.write(wf),this._inflate.flush(()=>{let i=this._inflate[dt];if(i){this._inflate.close(),this._inflate=null,r(i);return}let o=Ro.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",If)}this._deflate[ut]=r,this._deflate.write(e),this._deflate.flush(zt.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=Ro.concat(this._deflate[Ce],this._deflate[Se]);n&&(i=new bf(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)})}};Mo.exports=cs;function If(t){this[Ce].push(t),this[Se]+=t.length}function Po(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][Eo]=1009,this.removeListener("data",Po),this.reset()}function Tf(t){if(this[Hn]._inflate=null,this[dt]){this[ut](this[dt]);return}t[Eo]=1007,this[ut](t)}});var ft=v((d_,Un)=>{"use strict";var{isUtf8:Lo}=require("buffer"),{hasBlob:Af}=ve(),kf=[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 Cf(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 xf(t){return Af&&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:xf,isValidStatusCode:Cf,isValidUTF8:us,tokenChars:kf};if(Lo)Un.exports.isValidUTF8=function(t){return t.length<24?us(t):Lo(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_,Uo)=>{"use strict";var{Writable:Rf}=require("stream"),No=Vt(),{BINARY_TYPES:Ef,EMPTY_BUFFER:Oo,kStatusCode:Pf,kWebSocket:Mf}=ve(),{concat:ds,toArrayBuffer:Lf,unmask:Nf}=$t(),{isValidStatusCode:Of,isValidUTF8:Bo}=ft(),Wn=Buffer[Symbol.species],ee=0,Do=1,Fo=2,Ho=3,fs=4,ps=5,qn=6,hs=class extends Rf{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||Ef[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[Mf]=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 Do:this.getPayloadLength16(e);break;case Fo:this.getPayloadLength64(e);break;case Ho: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[No.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=Do:this._payloadLength===127?this._state=Fo: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=Ho:this._state=fs}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=fs}getData(e){let n=Oo;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&&Nf(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[No.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=Lf(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&&!Bo(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,Oo),this.end();else{let r=e.readUInt16BE(0);if(!Of(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&&!Bo(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[Pf]=s,o}};Uo.exports=hs});var vs=v((h_,Go)=>{"use strict";var{Duplex:p_}=require("stream"),{randomFillSync:Bf}=require("crypto"),Wo=Vt(),{EMPTY_BUFFER:Df,kWebSocket:Ff,NOOP:Hf}=ve(),{isBlob:pt,isValidStatusCode:Uf}=ft(),{mask:qo,toBuffer:Ue}=$t(),te=Symbol("kByteLength"),Wf=Buffer.alloc(4),Gn=8*1024,We,ht=Gn,ae=0,qf=1,Gf=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=Hf,this[Ff]=void 0}static frame(e,n){let r,s=!1,i=2,o=!1;n.mask&&(r=n.maskBuffer||Wf,n.generateMask?n.generateMask(r):(ht===Gn&&(We===void 0&&(We=Buffer.alloc(Gn)),Bf(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?(qo(e,r,u,i,a),[u]):(qo(e,r,e,0,a),[u,e])):[u,e]}close(e,n,r,s){let i;if(e===void 0)i=Df;else{if(typeof e!="number"||!Uf(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[Wo.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=Gf,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(jf,this,i,s)})}dispatch(e,n,r,s){if(!n){this.sendFrame(t.frame(e,r),s);return}let i=this._extensions[Wo.extensionName];this._bufferedBytes+=r[te],this._state=qf,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)}};Go.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 jf(t,e,n){ys(t,e,n),t.onerror(e)}});var Qo=v((g_,Xo)=>{"use strict";var{kForOnEventAttribute:Yt,kListener:Ss}=ve(),jo=Symbol("kCode"),$o=Symbol("kData"),zo=Symbol("kError"),Vo=Symbol("kMessage"),Yo=Symbol("kReason"),gt=Symbol("kTarget"),Jo=Symbol("kType"),Ko=Symbol("kWasClean"),_e=class{constructor(e){this[gt]=null,this[Jo]=e}get target(){return this[gt]}get type(){return this[Jo]}};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[jo]=n.code===void 0?0:n.code,this[Yo]=n.reason===void 0?"":n.reason,this[Ko]=n.wasClean===void 0?!1:n.wasClean}get code(){return this[jo]}get reason(){return this[Yo]}get wasClean(){return this[Ko]}};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[zo]=n.error===void 0?null:n.error,this[Vo]=n.message===void 0?"":n.message}get error(){return this[zo]}get message(){return this[Vo]}};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[$o]=n.data===void 0?null:n.data}get data(){return this[$o]}};Object.defineProperty(Jt.prototype,"data",{enumerable:!0});var $f={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}}};Xo.exports={CloseEvent:qe,ErrorEvent:mt,Event:_e,EventTarget:$f,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_,Zo)=>{"use strict";var{tokenChars:Kt}=ft();function he(t,e,n){t[e]===void 0?t[e]=[n]:t[e].push(n)}function zf(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 Vf(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(", ")}Zo.exports={format:Vf,parse:zf}});var Yn=v((S_,da)=>{"use strict";var Yf=require("events"),Jf=require("https"),Kf=require("http"),na=require("net"),Xf=require("tls"),{randomBytes:Qf,createHash:Zf}=require("crypto"),{Duplex:y_,Readable:v_}=require("stream"),{URL:bs}=require("url"),xe=Vt(),ep=gs(),tp=vs(),{isBlob:np}=ft(),{BINARY_TYPES:ea,CLOSE_TIMEOUT:rp,EMPTY_BUFFER:$n,GUID:sp,kForOnEventAttribute:ws,kListener:ip,kStatusCode:op,kWebSocket:W,NOOP:ra}=ve(),{EventTarget:{addEventListener:ap,removeEventListener:lp}}=Qo(),{format:cp,parse:up}=_s(),{toBuffer:dp}=$t(),sa=Symbol("kAborted"),Is=[8,13],be=["CONNECTING","OPEN","CLOSING","CLOSED"],fp=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,L=class t extends Yf{constructor(e,n,r){super(),this._binaryType=ea[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]),ia(this,e,n,r)):(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){ea.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 ep({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),i=new tp(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",gp),s.on("drain",mp),s.on("error",yp),s.on("message",vp),s.on("ping",Sp),s.on("pong",_p),i.onerror=bp,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),n.length>0&&e.unshift(n),e.on("close",la),e.on("data",Vn),e.on("end",ca),e.on("error",ua),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())}),aa(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[ip];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=ap;L.prototype.removeEventListener=lp;da.exports=L;function ia(t,e,n,r){let s={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:rp,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=Qf(16).toString("base64"),d=o?Jf.request:Kf.request,p=new Set,h;if(s.createConnection=s.createConnection||(o?hp:pp),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"]=cp({[xe.extensionName]:h.offer()})),n.length){for(let f of n){if(typeof f!="string"||!fp.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[sa]||(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}ia(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=Zf("sha1").update(c+sp).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 x=f.headers["sec-websocket-extensions"];if(x!==void 0){if(!h){Q(t,m,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let G;try{G=up(x)}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 pp(t){return t.path=t.socketPath,na.connect(t)}function hp(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=na.isIP(t.host)?"":t.host),Xf.connect(t)}function Q(t,e,n){t._readyState=L.CLOSING;let r=new Error(n);Error.captureStackTrace(r,Q),e.setHeader?(e[sa]=!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=np(e)?e.size:dp(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 gp(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(oa,n._socket),t===1005?n.close():n.close(t,e))}function mp(){let t=this[W];t.isPaused||t._socket.resume()}function yp(t){let e=this[W];e._socket[W]!==void 0&&(e._socket.removeListener("data",Vn),process.nextTick(oa,e._socket),e.close(t[op])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function ta(){this[W].emitClose()}function vp(t,e){this[W].emit("message",t,e)}function Sp(t){let e=this[W];e._autoPong&&e.pong(t,!this._isServer,ra),e.emit("ping",t)}function _p(t){this[W].emit("pong",t)}function oa(t){t.resume()}function bp(t){let e=this[W];e.readyState!==L.CLOSED&&(e.readyState===L.OPEN&&(e._readyState=L.CLOSING,aa(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function aa(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function la(){let t=this[W];if(this.removeListener("close",la),this.removeListener("data",Vn),this.removeListener("end",ca),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",ta),t._receiver.on("finish",ta))}function Vn(t){this[W]._receiver.write(t)||this.pause()}function ca(){let t=this[W];t._readyState=L.CLOSING,t._receiver.end(),this.end()}function ua(){let t=this[W];this.removeListener("error",ua),this.on("error",ra),t&&(t._readyState=L.CLOSING,this.destroy())}});var ga=v((b_,ha)=>{"use strict";var __=Yn(),{Duplex:wp}=require("stream");function fa(t){t.emit("close")}function Ip(){!this.destroyed&&this._writableState.finished&&this.destroy()}function pa(t){this.removeListener("error",pa),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function Tp(t,e){let n=!0,r=new wp({...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(fa,r);return}let o=!1;t.once("error",function(l){o=!0,i(l)}),t.once("close",function(){o||i(s),process.nextTick(fa,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",Ip),r.on("error",pa),r}ha.exports=Tp});var ya=v((w_,ma)=>{"use strict";var{tokenChars:Ap}=ft();function kp(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&&Ap[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}ma.exports={parse:kp}});var Ta=v((T_,Ia)=>{"use strict";var Cp=require("events"),Jn=require("http"),{Duplex:I_}=require("stream"),{createHash:xp}=require("crypto"),va=_s(),Ge=Vt(),Rp=ya(),Ep=Yn(),{CLOSE_TIMEOUT:Pp,GUID:Mp,kWebSocket:Lp}=ve(),Np=/^[+/0-9A-Za-z]{22}==$/,Sa=0,_a=1,wa=2,As=class extends Cp{constructor(e,n){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:Pp,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Ep,...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=Op(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=Sa}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===wa){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!==_a)if(this._state=_a,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",ba);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||!Np.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=Rp.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=va.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[Lp])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>Sa)return Qt(i,503);let u=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${xp("sha1").update(n+Mp).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=va.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",ba),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)}};Ia.exports=As;function Op(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=wa,t.emit("close")}function ba(){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_,Aa)=>{Aa.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var Re=v($e=>{var xs,Up=[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 Up[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 Wp(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 Wp(e)}catch{return n}}});var xa=v((R_,Ca)=>{function ka(){this.buffer=[],this.length=0}ka.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++}};Ca.exports=ka});var Ea=v((E_,Ra)=>{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]};Ra.exports=Zt});var Pa=v(Xn=>{var qp=Re().getSymbolSize;Xn.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=qp(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 Na=v(La=>{var Gp=Re().getSymbolSize,Ma=7;La.getPositions=function(e){let n=Gp(e);return[[0,0],[n-Ma,0],[0,n-Ma]]}});var Oa=v(R=>{R.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};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,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};R.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};R.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};R.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 jp(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 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,jp(e,i,s))};R.getBestMask=function(e,n){let r=Object.keys(R.Patterns).length,s=0,i=1/0;for(let o=0;o<r;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,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 Ba=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 Da=v(tn=>{var Ps=Ba();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 Ua=v((D_,Ha)=>{var Fa=Da();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=Fa.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=Fa.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};Ha.exports=Ms});var Ls=v(Wa=>{Wa.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var Ns=v(we=>{var qa="[0-9]+",$p="[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 zp="(?:(?![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(zp,"g");we.NUMERIC=new RegExp(qa,"g");we.ALPHANUMERIC=new RegExp($p,"g");var Vp=new RegExp("^"+nn+"$"),Yp=new RegExp("^"+qa+"$"),Jp=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");we.testKanji=function(e){return Vp.test(e)};we.testNumeric=function(e){return Yp.test(e)};we.testAlphanumeric=function(e){return Jp.test(e)}});var Pe=v(D=>{var Kp=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(!Kp.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 Xp(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 Xp(e)}catch{return n}}});var Va=v(Ve=>{var nr=Re(),Qp=Es(),Ga=Kn(),Me=Pe(),Bs=Ls(),$a=7973,ja=nr.getBCHDigit($a);function Zp(t,e,n){for(let r=1;r<=40;r++)if(e<=Ve.getCapacity(r,n,t))return r}function za(t,e){return Me.getCharCountIndicator(t,e)+4}function eh(t,e){let n=0;return t.forEach(function(r){let s=za(r.mode,e);n+=s+r.getBitsLength()}),n}function th(t,e){for(let n=1;n<=40;n++)if(eh(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=Qp.getTotalCodewordsCount(e,n),o=(s-i)*8;if(r===Me.MIXED)return o;let a=o-za(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=Ga.from(n,Ga.M);if(Array.isArray(e)){if(e.length>1)return th(e,s);if(e.length===0)return 1;r=e[0]}else r=e;return Zp(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)-ja>=0;)n^=$a<<nr.getBCHDigit(n)-ja;return e<<12|n}});var Xa=v(Ka=>{var Ds=Re(),Ja=1335,nh=21522,Ya=Ds.getBCHDigit(Ja);Ka.getEncodedBits=function(e,n){let r=e.bit<<3|n,s=r<<10;for(;Ds.getBCHDigit(s)-Ya>=0;)s^=Ja<<Ds.getBCHDigit(s)-Ya;return(r<<10|s)^nh}});var Za=v((G_,Qa)=>{var rh=Pe();function yt(t){this.mode=rh.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))};Qa.exports=yt});var tl=v((j_,el)=>{var sh=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=sh.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)};el.exports=vt});var rl=v(($_,nl)=>{var ih=Pe();function St(t){this.mode=ih.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)};nl.exports=St});var il=v((z_,sl)=>{var oh=Pe(),ah=Re();function _t(t){this.mode=oh.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=ah.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)}};sl.exports=_t});var ol=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 hl=v(bt=>{var k=Pe(),cl=Za(),ul=tl(),dl=rl(),fl=il(),sn=Ns(),rr=Re(),lh=ol();function al(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 pl(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 cl.getBitsLength(t);case k.ALPHANUMERIC:return ul.getBitsLength(t);case k.KANJI:return fl.getBitsLength(t);case k.BYTE:return dl.getBitsLength(t)}}function ch(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 uh(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:al(r.data)}]);break;case k.BYTE:e.push([{data:r.data,mode:k.BYTE,length:al(r.data)}])}}return e}function dh(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 ll(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 cl(t);case k.ALPHANUMERIC:return new ul(t);case k.KANJI:return new fl(t);case k.BYTE:return new dl(t)}}bt.fromArray=function(e){return e.reduce(function(n,r){return typeof r=="string"?n.push(ll(r,null)):r.data&&n.push(ll(r.data,r.mode)),n},[])};bt.fromString=function(e,n){let r=pl(e,rr.isKanjiModeEnabled()),s=uh(r),i=dh(s,n),o=lh.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(ch(a))};bt.rawSplit=function(e){return bt.fromArray(pl(e,rr.isKanjiModeEnabled()))}});var zs=v(gl=>{var ir=Re(),Ws=Kn(),fh=xa(),ph=Ea(),hh=Pa(),gh=Na(),js=Oa(),$s=Es(),mh=Ua(),sr=Va(),yh=Xa(),vh=Pe(),qs=hl();function Sh(t,e){let n=t.size,r=gh.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 _h(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 bh(t,e){let n=hh.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 wh(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=yh.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 Ih(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 Th(t,e,n){let r=new fh;n.forEach(function(l){r.put(l.mode.bit,4),r.put(l.getLength(),vh.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 Ah(r,t,e)}function Ah(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 mh(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,x;for(C=0;C<y;C++)for(x=0;x<o;x++)C<f[x].length&&(A[w++]=f[x][C]);for(C=0;C<p;C++)for(x=0;x<o;x++)A[w++]=m[x][C];return A}function kh(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=Th(e,n,s),a=ir.getSymbolSize(e),l=new ph(a);return Sh(l,e),_h(l),bh(l,e),Gs(l,n,0),e>=7&&wh(l,e),Ih(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}}gl.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)),kh(e,s,r,i)}});var Vs=v((K_,yl)=>{"use strict";var Ch=require("util"),ml=require("stream"),le=yl.exports=function(){ml.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};Ch.inherits(le,ml);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_,vl)=>{"use strict";vl.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_,_l)=>{"use strict";var xh=Js(),Rh=Ks();function Sl(t,e,n){let r=t*e;return n!==8&&(r=Math.ceil(r/(8/n))),r}var wt=_l.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=xh.getImagePasses(n,r);for(let l=0;l<a.length;l++)this._images.push({byteWidth:Sl(a[l].width,i,o),height:a[l].height,lineIndex:0})}else this._images.push({byteWidth:Sl(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=Rh(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 Il=v((eb,wl)=>{"use strict";var Eh=require("util"),bl=Vs(),Ph=Xs(),Mh=wl.exports=function(t){bl.call(this);let e=[],n=this;this._filter=new Ph(t,{read:this.read.bind(this),write:function(r){e.push(r)},complete:function(){n.emit("complete",Buffer.concat(e))}}),this._filter.start()};Eh.inherits(Mh,bl)});var It=v((tb,Tl)=>{"use strict";Tl.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,Al)=>{"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=Al.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,kl)=>{"use strict";var H=It(),Lh=ei(),q=kl.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 Lh,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(xl=>{"use strict";var Cl=Js(),Nh=[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]}],Oh=[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 Bh(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 Dh(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);Nh[r](e,s,d,i),i+=r}return i}function Fh(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);Oh[r](e,d,p,i)}s.resetAfterLine()}}xl.dataToBitMap=function(t,e){let n=e.width,r=e.height,s=e.depth,i=e.bpp,o=e.interlace,a;s!==8&&(a=Bh(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=Cl.getImagePasses(n,r),p=Cl.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=Dh(d[h],l,p,i,t,c):Fh(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,Rl)=>{"use strict";function Hh(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 Uh(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 Wh(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}}Rl.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?Hh(t,l,r,s,a):(o&&Uh(t,l,r,s,o),n!==8&&(n===16&&(l=Buffer.alloc(r*s*4)),Wh(t,l,r,s,n))),l}});var Ml=v((ob,Pl)=>{"use strict";var qh=require("util"),si=require("zlib"),El=Vs(),Gh=Il(),jh=ti(),$h=ni(),zh=ri(),ge=Pl.exports=function(t){El.call(this),this._parser=new jh(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()};qh.inherits(ge,El);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 Gh(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=$h.dataToBitMap(t,this._bitmapInfo);e=zh(n,this._bitmapInfo),n=null}catch(n){this._handleError(n);return}this.emit("parsed",e)}});var Nl=v((ab,Ll)=>{"use strict";var re=It();Ll.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 Dl=v((lb,Bl)=>{"use strict";var Ol=Ks();function Vh(t,e,n,r,s){for(let i=0;i<n;i++)r[s+i]=t[e+i]}function Yh(t,e,n){let r=0,s=e+n;for(let i=e;i<s;i++)r+=Math.abs(t[i]);return r}function Jh(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 Kh(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 Xh(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 Qh(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 Zh(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 eg(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 tg(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]-Ol(a,l,u);r[s+o]=c}}function ng(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]-Ol(o,a,l);s+=Math.abs(u)}return s}var rg={0:Vh,1:Jh,2:Xh,3:Zh,4:tg},sg={0:Yh,1:Kh,2:Qh,3:eg,4:ng};Bl.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=sg[i[h]](t,l,o,s);g<p&&(c=i[h],p=g)}}u[a]=c,a++,rg[c](t,l,o,u,a,s),a+=o,l+=o}return u}});var ii=v((cb,Fl)=>{"use strict";var z=It(),ig=ei(),og=Nl(),ag=Dl(),lg=require("zlib"),Ne=Fl.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||lg.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=og(t,e,n,this._options),s=z.COLORTYPE_TO_BPP_MAP[this._options.colorType];return ag(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(ig.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 ql=v((ub,Wl)=>{"use strict";var cg=require("util"),Hl=require("stream"),ug=It(),dg=ii(),Ul=Wl.exports=function(t){Hl.call(this);let e=t||{};this._packer=new dg(e),this._deflate=this._packer.createDeflate(),this.readable=!0};cg.inherits(Ul,Hl);Ul.prototype.pack=function(t,e,n,r){this.emit("data",Buffer.from(ug.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 Yl=v((an,Vl)=>{"use strict";var Gl=require("assert").ok,Tt=require("zlib"),fg=require("util"),jl=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 pg(t){return new Ye(t)}function $l(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(Gl(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}Gl(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>=jl)throw $l(this),new RangeError("Cannot create final Buffer. It would be larger than 0x"+jl.toString(16)+" bytes");let h=Buffer.concat(l,u);return $l(this),h};fg.inherits(Ye,Tt.Inflate);function hg(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 zl(t,e){return hg(new Ye(e),t)}Vl.exports=an=zl;an.Inflate=Ye;an.createInflate=pg;an.inflateSync=zl});var oi=v((db,Kl)=>{"use strict";var Jl=Kl.exports=function(t){this._buffer=t,this._reads=[]};Jl.prototype.read=function(t,e){this._reads.push({length:Math.abs(t),allowLess:t<0,func:e})};Jl.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 Ql=v(Xl=>{"use strict";var gg=oi(),mg=Xs();Xl.process=function(t,e){let n=[],r=new gg(t);return new mg(e,{read:r.read.bind(r),write:function(i){n.push(i)},complete:function(){}}).start(),r.process(),Buffer.concat(n)}});var nc=v((pb,tc)=>{"use strict";var Zl=!0,ec=require("zlib"),yg=Yl();ec.deflateSync||(Zl=!1);var vg=oi(),Sg=Ql(),_g=ti(),bg=ni(),wg=ri();tc.exports=function(t,e){if(!Zl)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 vg(t);if(new _g(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=ec.inflateSync(f);else{let C=((s.width*s.bpp*s.depth+7>>3)+1)*s.height;m=yg(f,{chunkSize:C,maxLength:C})}if(f=null,!m||!m.length)throw new Error("bad png - invalid inflate data response");let y=Sg.process(m,s);f=null;let T=bg.dataToBitMap(y,s);y=null;let A=wg(T,s);return s.data=A,s.gamma=u||0,s}});var oc=v((hb,ic)=>{"use strict";var rc=!0,sc=require("zlib");sc.deflateSync||(rc=!1);var Ig=It(),Tg=ii();ic.exports=function(t,e){if(!rc)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 Tg(n),s=[];s.push(Buffer.from(Ig.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=sc.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 ac=v(ai=>{"use strict";var Ag=nc(),kg=oc();ai.read=function(t,e){return Ag(t,e||{})};ai.write=function(t,e){return kg(t,e)}});var uc=v(cc=>{"use strict";var Cg=require("util"),lc=require("stream"),xg=Ml(),Rg=ql(),Eg=ac(),Y=cc.PNG=function(t){lc.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 xg(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 Rg(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"))};Cg.inherits(Y,lc);Y.sync=Eg;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 dc(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:dc(e.color.dark||"#000000ff"),light:dc(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 fc=v(me=>{var Pg=require("fs"),Mg=uc().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 Mg(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=Pg.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 pc=v(or=>{var Lg=ln(),Ng={WW:" ",WB:"\u2584",BB:"\u2588",BW:"\u2580"},Og={BB:" ",BW:"\u2584",WW:"\u2588",WB:"\u2580"};function Bg(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=Lg.getOptions(e),s=Ng;(r.color.dark.hex==="#ffffff"||r.color.light.hex==="#000000")&&(s=Og);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+=Bg(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 gc=v(hc=>{hc.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 Sc=v(vc=>{var Dg="\x1B[47m",Fg="\x1B[40m",ci="\x1B[37m",ui="\x1B[30m",Ke="\x1B[0m",Hg=Dg+ui,Ug=Fg+ci,Wg=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"}},mc=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"},yc=function(t,e,n,r){return mc(t,e,n,r)+mc(t,e,n,r+1)};vc.render=function(t,e,n){let r=t.modules.size,s=t.modules.data,i=!!(e&&e.inverse),o=e&&e.inverse?Ug:Hg,u=Wg(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[yc(s,r,h,p)];d+=u[yc(s,r,r,p)]+c}return d+=Ke,typeof n=="function"&&n(null,d),d}});var bc=v(_c=>{var qg=gc(),Gg=Sc();_c.render=function(t,e,n){return e&&e.small?Gg.render(t,e,n):qg.render(t,e,n)}});var fi=v(Ic=>{var jg=ln();function wc(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 $g(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}Ic.render=function(e,n,r){let s=jg.getOptions(n),i=e.modules.size,o=e.modules.data,a=i+s.margin*2,l=s.color.light.a?"<path "+wc(s.color.light,"fill")+' d="M0 0h'+a+"v"+a+'H0z"/>':"",u="<path "+wc(s.color.dark,"stroke")+' d="'+$g(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 Tc=v(ar=>{var zg=fi();ar.render=zg.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 Ac=v(lr=>{var pi=ln();function Vg(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 Yg(){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=Yg()),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),Vg(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 Cc=v(cn=>{var Jg=Cs(),hi=zs(),kc=Ac(),Kg=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&&!Jg())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,kc.render);cn.toDataURL=gi.bind(null,kc.renderToDataURL);cn.toString=gi.bind(null,function(t,e,n){return Kg.render(t,n)})});var Pc=v(Oe=>{var xc=Cs(),mi=zs(),Xg=fc(),Rc=pc(),Qg=bc(),Ec=Tc();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(xc())e=n||{},n=null;else throw new Error("Callback required as last argument");return{opts:e,cb:n}}function Zg(t){return t.slice((t.lastIndexOf(".")-1>>>0)+2).toLowerCase()}function cr(t){switch(t){case"svg":return Ec;case"txt":case"utf8":return Rc;case"png":case"image/png":default:return Xg}}function em(t){switch(t){case"svg":return Ec;case"terminal":return Qg;case"utf8":default:return Rc}}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=Cc().toCanvas;Oe.toString=function(e,n,r){let s=un(e,n,r),i=s.opts?s.opts.type:void 0,o=em(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&&!xc())throw new Error("Too few arguments provided");let i=un(n,r,s),o=i.opts.type||Zg(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 Lc=v((xb,Mc)=>{Mc.exports=Pc()});var rf=require("http");var Bp=ct(ga(),1),Dp=ct(gs(),1),Fp=ct(vs(),1),Hp=ct(Yn(),1),ks=ct(Ta(),1);var oe=require("fs/promises"),sf=require("crypto"),jt=require("path"),of=require("os"),So=ct(Lc(),1);var Xe=require("child_process"),Ct=require("fs"),E=require("path"),hn=require("os");var yr=require("fs");var Nc=require("os"),V=require("path"),Ie=(0,V.join)((0,Nc.homedir)(),".vibelet"),ur=(0,V.join)(Ie,"logs"),dr=(0,V.join)(Ie,"data"),tm=(0,V.join)(Ie,"runtime"),Rb=(0,V.join)(tm,"current"),Oc=(0,V.join)(Ie,"identity.json"),Bc=(0,V.join)(Ie,"pairings.json"),Dc=(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"),Fc=(0,V.join)(Ie,"update-check.json"),vi=(0,V.join)(Ie,"pairing-qr.png");var gr={stdout:!1,stderr:!1};function Hc(t){if(!t||typeof t!="object")return!1;let e=typeof t.code=="string"?t.code:"";return e==="EIO"||e==="EPIPE"}function nm(t){return!t.destroyed&&t.writable!==!1}function Uc(t,e){if(gr[t])return!1;let n=t==="stderr"?process.stderr:process.stdout;if(!nm(n))return gr[t]=!0,!1;try{return n.write(e,r=>{Hc(r)&&(gr[t]=!0)}),!0}catch(r){return Hc(r)&&(gr[t]=!0),!1}}function kt(t){return Uc("stdout",t)}function mr(t){return Uc("stderr",t)}var Wc={debug:10,info:20,warn:30,error:40},rm=process.env.VIBE_LOG_LEVEL||"info";function sm(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}function im(){try{let{fstatSync:t}=require("fs");return t(1).isFile()}catch{return!1}}var Gc=!sm()&&!im();if(Gc)try{(0,yr.mkdirSync)(ur,{recursive:!0})}catch{}function qc(t,e,n){if(Wc[t]<Wc[rm])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
- `),Gc){let i=t==="error"||t==="warn"?hr:pr;try{(0,yr.appendFileSync)(i,s+`
23
- `)}catch{}}}function jc(t={}){function e(n,r,s){typeof r=="string"?qc(n,t,r):qc(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=>jc({...t,...n})}}var O=jc({module:"daemon"});var om=["fnm_multishells"],am=6e4,Be=process.platform==="win32",lm=300*1e3,cm=900*1e3,um=O.child({module:"config"});function se(t){return om.some(e=>t.includes(e))}function dm(t){if(!t||!se(t))return t;try{let e=(0,E.join)((0,Ct.realpathSync)((0,E.dirname)(t)),(0,E.basename)(t));if((0,Ct.existsSync)(e)&&!se(e))return e}catch{}return t}function fm(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 Vc(){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 pm(t=Vc()){let e=(0,hn.homedir)(),n=t.PNPM_HOME||process.env.PNPM_HOME||(Be?(0,E.join)(e,"pnpm"):(0,E.join)(e,"Library","pnpm")),r=t.PATH||process.env.PATH||"",s=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=r.split(E.delimiter).filter(Boolean).map(fm),o=new Set(i);for(let a of s)o.has(a)||(i.push(a),o.add(a));return i.join(E.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=Vc(),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=pm(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 hm(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 gm(){let t=(0,hn.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 mm(){if(Be){let t=bi("claude");return t&&pn(t)?t:void 0}for(let t of gm())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 ym(){let t=(0,hn.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 vm(){if(Be){let s=bi("codex");return s&&pn(s)?s:void 0}let t=s=>{let i=dm(s);return pn(i)?i:void 0},e;for(let s of ym()){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=hm("codex"),r=n?t(n):void 0;if(r){if(!se(r))return r;e=e??r}return e}function Yc(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>am||!(0,Ct.existsSync)(n)||se(n)){let o=t();n=o??e,r=i,um.info({name:e,path:n,transient:se(n),isBare:o==null},"binary resolved")}return n}}var Sm=Yc(mm,"claude"),_m=Yc(vm,"codex");function bm(){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 $c=bm(),Sr=vr("VIBE_TURN_STALL_TIMEOUT_MS",lm),zc=vr("VIBE_TURN_STALL_HARD_TIMEOUT_MS",Math.max(cm,Sr*3)),wm=Sr<=0||zc===0?0:Math.max(zc,Sr);function Im(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:$c.host||process.env.VIBELET_CANONICAL_HOST||process.env.VIBELET_HOST||"",fallbackHosts:$c["fallback-hosts"]||process.env.VIBELET_FALLBACK_HOSTS||"",relayUrl:process.env.VIBELET_RELAY_URL||"",idleTimeoutMs:vr("VIBE_IDLE_TIMEOUT_MS",1800*1e3),turnStallTimeoutMs:Sr,turnStallHardTimeoutMs:wm,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 Sm()},get codexPath(){return _m()},isTransientPath:se,execViaLoginShell:Im,buildSanitizedEnv:Qe};var ao=require("crypto"),Od=require("fs/promises");var cu=require("child_process"),Tr=require("fs");var _r=require("fs"),Xc=require("path");var K=require("fs");function Tm(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=Tm(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 Jc(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 Kc=!1,Am=new Set(["ts","event","source","appEvent","level"]);function km(){return process.env.VIBE_TEST==="1"||process.argv.includes("--test")}function Cm(t={}){let e={};for(let[n,r]of Object.entries(t))Am.has(n)||(e[n]=r);return e}function xm(t,e,n={},r){return{ts:r??new Date().toISOString(),event:"app.log",source:"app",appEvent:t,level:e,...Cm(n)}}function Rm(){Kc||((0,_r.mkdirSync)((0,Xc.dirname)(At),{recursive:!0}),Kc=!0)}var wi=class{emit(e,n={}){this.write({ts:new Date().toISOString(),event:e,...n})}emitApp(e,n,r={},s){this.write(xm(e,n,r,s))}write(e){if(!km()){Rm();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"),Qc=require("os"),mn=require("path"),Zc=require("crypto"),Ii="claude-hook:",yn="x-vibelet-claude-hook-secret",vn={continue:!0,suppressOutput:!0,hookSpecificOutput:{hookEventName:"PreToolUse"}};function Em(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 Pm(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 eu(t,e){let n=(0,mn.join)((0,Qc.tmpdir)(),`vibelet-claude-hooks-${process.pid}-${(0,Zc.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,Em(t,e),"utf8"),(0,De.writeFileSync)(i,Pm(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 tu=require("os"),Ze=require("path"),nu=require("fs/promises"),Mm=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"]),Lm=5e3,ru="Generated file: ",su=`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,tu.homedir)(),n.slice(2)):(0,Ze.isAbsolute)(n)?n:e?(0,Ze.resolve)(e,n):n:""}function Nm(t){return Mm.has((0,Ze.extname)(Ti(t)).toLowerCase())}function Rt(t){let e=Ti(t);return e?!Nm(e):!1}function Te(t){let e=[...new Set(t.map(n=>et(n)).filter(Boolean))];return e.length===0?"":e.length===1?`${ru}${e[0]}`:`${su}${e.join(`
84
- `)}`}function iu(t){return typeof t!="string"?!1:t.startsWith(ru)||t.startsWith(su)}function Om(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 Bm(t){let e=xt(t);return e?e.toLowerCase():""}function Dm(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 Bm(t)!=="write"?null:Dm(e,n)}function Fm(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 Hm(t){return/^\d+\t/m.test(t)}function Ir(t,e){let n=typeof e=="string"?e.trim():"";if(n&&Fm(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")||Hm(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 Om(i,e?.cwd))r.add(o)}}return[...r]}async function ou(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,nu.stat)(s);if(Math.max(i.birthtimeMs||0,i.ctimeMs||0,i.mtimeMs||0)+Lm<e)continue;r.push(s)}catch{}return r}var ie=O.child({module:"claude"}),uu="claude-permission-denial:",Um=/\u001B\[[0-?]*[ -/]*[@-~]/g;function Wm(){return process.env.VIBE_TEST!=="1"&&!process.argv.includes("--test")}function ki(t){Wm()&&mr(`\x1B[33m\u26A1 [Vibelet] ${t}\x1B[0m
85
- `)}function qm(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 Gm(t){return Array.isArray(t)&&t.length>0&&t.every(e=>e&&typeof e=="object"&&e.type==="tool_reference")}function jm(t){if(typeof t=="string")return t;let e=qm(t);return e||(Gm(t)?"":JSON.stringify(t))}function $m(t){return/requested permissions|haven't granted/i.test(t)}function au(t){return t.replace(Um,"").replace(/\s+/g," ").trim()}function zm(t){let e=t.toLowerCase();return e==="error"||e==="failed"||e==="unknown error"}function Vm(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 Ym(t){return t.toLowerCase().startsWith("claude ")?t:`Claude usage limit reached. ${t}`}function lu(t){let e=au(t.resultText??""),n=(t.stderrLines??[]).map(au).filter(Boolean).slice(-3),r=[e,...n].find(i=>!!i&&Vm(i));if(r)return Ym(r);let s=[e,...n].find(i=>!!i&&!zm(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(uu)}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=eu(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,cu.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:lu({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=jm(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&&$m(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:lu({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:`${uu}${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 hu=require("child_process"),gu=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 du=require("node:fs"),xi=require("node:path"),Jm="@vibelet/cli";function Km(t){try{let e=JSON.parse((0,du.readFileSync)(t,"utf8"));if(e.name===Jm&&typeof e.version=="string"&&e.version.length>0)return e.version}catch{}return null}function Xm(){return"1.0.25"}var Et=Xm();var P=O.child({module:"codex"});function Qm(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 Zm(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 ey=new Set(["aborted","interrupted","cancelled","canceled"]);function ty(t){let e=M(t);return e?e.toLowerCase():null}function ny(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 Pi(t,e){let n={};for(let[r,s]of Object.entries(t))e.includes(r)||(n[r]=s);return n}function mu(t){return/\bapprove\b|\ballow\b|\baccept\b|\byes\b|\bcontinue\b|\bproceed\b|\brun\b|\bapply\b/i.test(t)}function yu(t){return/\bdeny\b|\breject\b|\bdecline\b|\bno\b|\bcancel\b|\babort\b|\bstop\b/i.test(t)}function ry(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=>mu(l))??i[0],a=i.find(l=>yu(l))??i[i.length-1];if(!(!o||!a||o===a))return{questionId:r,approveLabel:o,denyLabel:a}}return null}function sy(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=>mu(s)),r=e.some(s=>yu(s));return n&&r}function fu(t){let e=ny(t.type??t.itemType);if(e==="commandexecution")return{toolName:"Bash",input:Pi(t,["id","itemId","type","itemType","stdout","stderr","exitCode","exit_code","status","success","error"])};if(e==="filechange")return{toolName:"Patch",input:Pi(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 iy(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 oy(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 ay(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 pu(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,P.info({spawnCmd:i,argsPreview:o.slice(0,2)},"spawning via login shell")}else i=s,P.info({spawnCmd:i,args:o},"spawning");I.emit("driver.spawn",{agent:"codex",cwd:e,resumeSessionId:n}),this.lastStderr=[],this.proc=(0,hu.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,gu.existsSync)(e)&&(d=`Working directory does not exist: ${e}`),P.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{P.warn({linePreview:p.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=_.startTimer("rpc.duration");await this.rpc("initialize",{clientInfo:{name:"@vibelet/cli",version:Et},capabilities:{experimentalApi:!0}}),l(),this.rpcNotify("initialized",{});let u=pu(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"),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??"",P.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=pu(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:r.approvalPolicy,sandboxPolicy:r.sandboxPolicy,...n?{model:n}:{}}).then(s=>{P.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,P.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 P.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=Zm(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 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),P.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?fu(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?Pi(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){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:r,approvalContext:Qm(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(!sy(o)){P.warn({threadId:this.threadId,rpcId:n},"unsupported requestUserInput request"),this.writeServerRequestError(n,"Unsupported interactive request from Codex");return}let a=ry(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"])},oy(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"){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 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&&P.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||P.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?fu(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=iy(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 s=j(r?.tokenUsage),i=j(s?.last);if(!i)break;this.latestTurnUsage=ay({...i,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);P.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=ty(s?.status),o=this.latestTurnUsage;if(this.latestTurnUsage=void 0,i&&ey.has(i)){P.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}P.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&&P.debug({method:n},"unhandled notification");break}}};var N=require("fs/promises"),Ki=require("fs"),Xi=require("readline"),B=require("path"),ue=require("os");var ly=new Set(["New session","Resumed session","Untitled session"]),cy=["<environment_context>","<local-command-caveat>","<local-command-stdout>","<local-command-stderr>","<command-name>","<command-message>","<command-args>","# AGENTS.md instructions for "];function uy(t){return t.replace(/\s+/g," ").trim()}function kr(t){return typeof t!="string"?void 0:uy(t)||void 0}function vu(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||ly.has(e)||vu(e)}function dy(t){for(let e of t.replace(/\r/g,"").split(`
94
- `)){let n=kr(e);if(n&&!fy(n)&&!py(n))return n}}function fy(t){return cy.some(e=>t.startsWith(e))}function py(t){let e=t.replace(/^['"`]+/,"").replace(/['"`\\]+$/,"").trim();return!!(!e||/^(\/|~\/|\.\/|\.\.\/)/.test(e)||/^[A-Za-z]:\\/.test(e))}function hy(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 Mi(t,e=80){if(typeof t!="string")return;let n=dy(t);if(!n)return;let r=hy(n),i=(r>0?n.slice(0,r):n).replace(/[。!?;.!?;]+$/gu,"").trim();if(!(!i||vu(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 Mi(e)}var bu=require("child_process"),wu=require("util");var Iu=(0,wu.promisify)(bu.execFile),Tu=5e3,gy=2500,my=3e3,Au=8,Cr=new Map,Li=new Map,Su=null;function yy(t){let e=Cr.get(t);return e?Date.now()>e.expiresAt?(Cr.delete(t),null):e.value??void 0:null}function vy(t,e){if(e===void 0){Cr.delete(t);return}Cr.set(t,{value:e,expiresAt:Date.now()+Tu})}async function Sy(t){if(!t)return;if(Su)return Su(t);let e=[["branch","--show-current"],["rev-parse","--abbrev-ref","HEAD"]];for(let n of e)try{let{stdout:r}=await Iu("git",["-C",t,...n],{env:Qe(),timeout:gy,maxBuffer:65536}),s=r.trim();if(s&&s!=="HEAD")return s}catch{}}async function _y(t){let e=yy(t);if(e!==null)return e;let n=Li.get(t);if(n)return n;let r=Sy(t).then(s=>(vy(t,s),s)).finally(()=>{Li.delete(t)});return Li.set(t,r),r}async function ku(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 Cu(t){let e=[...new Set(t.filter(Boolean))],n=new Map;return await ku(e,Au,async r=>{n.set(r,await _y(r))}),n}var Oi=new Map,Ni=new Map,_u=null;function by(t,e){if(e===void 0){Oi.delete(t);return}Oi.set(t,{value:e,expiresAt:Date.now()+Tu})}async function wy(t){if(t){if(_u)return _u(t);for(let e=0;e<2;e+=1)try{let{stdout:n}=await Iu("git",["-C",t,"diff","HEAD","--shortstat"],{env:Qe(),timeout:my,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 Iy(t){let e=Oi.get(t);if(e&&Date.now()<=e.expiresAt)return e.value;let n=Ni.get(t);if(n)return n;let r=wy(t).then(s=>(by(t,s),s)).finally(()=>{Ni.delete(t)});return Ni.set(t,r),r}async function xu(t){let e=[...new Set(t.filter(Boolean))],n=new Map;return await ku(e,Au,async r=>{n.set(r,await Iy(r))}),n}var Eu=require("child_process"),Er=require("fs/promises"),nt=require("path"),Pu=require("os"),Mu=require("util");var Ty=(0,Mu.promisify)(Eu.execFile),Rr=O.child({module:"process-scanner"}),Lu=5e3,Ay=1500,ky=/(^|[^A-Za-z0-9_.-])(claude|codex)([^A-Za-z0-9_.-]|$)/,Cy=500,xy=15e3,In=null,wn=null;function Pr(){In=null}var Ry=new Set(["sh","bash","zsh","fish"]),Ey=new Set(["env","nohup","timeout","gtimeout"]),Py=new Set(["node","nodejs","bun","tsx"]),My=new Set(["-e","--eval","-p","--print"]),Ly=new Set(["-r","--require","--import","--loader","--experimental-loader","--env-file","--input-type"]);function Ny(t){return t.replace(/^['"]|['"]$/g,"")}function Nu(t){return(t.match(/"[^"]*"|'[^']*'|\S+/g)??[]).map(Ny)}function Ru(t){let e=(0,nt.basename)(t);return e==="claude"||e==="codex"?e:null}function Oy(t){for(let e of t.split(/&&|\|\||;|\n/)){let n=Ou(Nu(e.trim()),!0);if(n)return n}return null}function Ou(t,e=!1){let n=0;for(;n<t.length;){let r=t[n],s=(0,nt.basename)(r);if(Ey.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(Ry.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?Oy(l):null}}return null}if(Py.has(s)){let o=n+1;for(;o<t.length;){let l=t[o];if(My.has(l))return null;if(l==="--"){o+=1;break}if(!l.startsWith("-"))break;o+=1,Ly.has(l)&&o<t.length&&(o+=1)}if(o>=t.length)return null;let a=Ru(t[o]);return a?{agent:a,args:t.slice(o+1),viaWrapper:!0}:null}let i=Ru(r);return i?{agent:i,args:t.slice(n+1),viaWrapper:e}:null}return null}function Bi(t,e=!1){return Ou(Nu(t),e)}function Mr(t){let e=Bi(t);return e?{agent:e.agent,args:e.args}:null}function Bu(t){return ky.test(t)&&Bi(t)!==null}function By(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 Dy(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 Fy(t){if(t.includes("--dangerously-bypass-approvals-and-sandbox"))return"autoApprove"}function Hy(t,e){let n=Mr(e);if(!(!n||n.agent!==t))return t==="claude"?Dy(n.args):Fy(n.args)}function xr(t){switch(t){case"high":return 3;case"medium":return 2;default:return 1}}function Uy(t,e){return t==="claude"?e.includes("/.claude/projects/")&&!e.includes("/subagents/"):e.includes("/.codex/sessions/")}function Wy(t,e){let n=Bi(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 qy(t){let e=[...new Set(t.sessionFiles)].filter(i=>Uy(t.agent,i)),n=By(t.agent,t.command),r=Hy(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 Gy(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 Di(t){let e=new Map;for(let n of t){let r=`${n.agent}:${n.sessionId}`,s=e.get(r);e.set(r,s?Gy(s,n):n)}return[...e.values()]}function jy(t){try{return process.kill(t,0),!0}catch{return!1}}async function Lr(t,e,n=Ay){try{let{stdout:r}=await Ty(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 $y(t){if(!t.sessionFilePath)return t;let e=await rt(t.sessionFilePath,t.agent);if(!e)return null;let n=await Hi(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 zy(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 Vy(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 Yy(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(!Bu(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 Jy(){let t=await Lr("ps",["-axo","pid=,command="],Lu);return Yy(t)}async function Ky(){return(await Lr("wmic",["process","get","ProcessId,CommandLine","/FORMAT:CSV"],Lu)).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||!Bu(s))return null;let i=Mr(s);return i?{pid:r,command:s,agent:i.agent}:null}).filter(e=>!!e)}async function Xy(){return process.platform==="win32"?Ky():Jy()}async function Qy(t){let e=_.startTimer("process.scan.pgrep_ms"),n=await Xy();t&&(t.pgrepMs+=e()),t&&(t.matchedProcesses=n.length);let r=n.filter(o=>jy(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 zy(o.pid),sessionFiles:await Vy(o.pid)})));return t&&(t.lsofMs+=s()),t&&(t.snapshots=i.length),i}function Zy(t){return t.replace(/[^a-zA-Z0-9]/g,"-")}async function ev(t,e){if(!e)return null;try{if(t==="claude"){let n=(0,nt.join)((0,Pu.homedir)(),".claude","projects",Zy(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 Fu(e)}catch{return null}}async function tv(){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 Qy(t),r=[],s=[];for(let c of n){let d=qy(c);if(d){r.push(d);continue}Wy(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 ev(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=>$y(c)));t.hydrateMs=a(),t.hydratedCandidates=l.filter(c=>c!==null).length;let u=Di(l.filter(c=>c!==null));return t.totalMs=e(),(t.totalMs>=Cy||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()+xy},u}async function Fi(){return In&&Date.now()<In.expiresAt?In.value:wn||(wn=tv().finally(()=>{wn=null}),wn)}async function Du(t){try{return(await Fi()).some(n=>n.sessionId===t)}catch(e){return Rr.warn({sessionId:t,error:String(e)},"isSessionProcessAlive failed, treating as not alive"),!1}}var Wu=require("fs"),Fe=require("fs/promises"),Wi=require("os"),An=require("path");var Tn=O.child({module:"activity-watcher"}),nv=12e4,rv=5e3,sv=6e4,Hu=5;function iv(){return(0,An.join)((0,Wi.homedir)(),".claude","projects")}function ov(){return(0,An.join)((0,Wi.homedir)(),".codex","sessions")}async function Uu(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 Ui=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 Uu(e?.claudeDir??iv()),r=await Uu(e?.codexDir??ov());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")})},sv),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,Wu.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,Hu),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=nv){let n=Date.now(),r=n-e,s=n-rv,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,Hu);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 Ui;var st=O.child({module:"inventory"}),zu=6e3,av=1e4;function lv(t){return{agent:t.agent,cwd:t.cwd,sessionId:t.sessionId,confidence:"high",sessionFilePath:t.filePath,title:t.title,isResponding:t.isResponding}}async function cv(){return Lt.listActive().map(lv)}var Vu={listScannedSessions:Rn,listWatcherSessions:cv,scanRunningSessions:Fi,searchSessionContent:ed},ce=uv(),Cn=null,Or=0,Dr=0,Br=0,qi=0,Gi=new Set;function uv(){return{scannedSessions:[],runningSessions:[],scannedAt:"",refreshedAt:0}}function dv(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 fv(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(dv).sort(),runningSessions:t.runningSessions.map(fv).sort()})}function pv(){for(let t of Gi)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 Yu(t){return Gi.add(t),()=>{Gi.delete(t)}}function Ju(){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:qi?new Date(qi).toISOString():void 0}}kn();function Ku(){return Lt.onActivity(()=>{Zu(Vu,zu)})}var Nt={daemonActive:3,externalRunning:2,idle:1},Gu={high:3,medium:2,low:1};function Xu(t,e){return e.lastActivityAt.localeCompare(t.lastActivityAt)||t.sessionId.localeCompare(e.sessionId)}function hv(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]||Xu(t,e)}function gv(t,e){return Nt[e.state]>Nt[t.state]?e:Nt[e.state]<Nt[t.state]?t:Gu[e.confidence]>Gu[t.confidence]?e:t}function mv(t,e){return t?e?t.localeCompare(e)<=0?t:e:t:e}function yv(t,e){return t?e?t.localeCompare(e)>=0?t:e:t:e}function vv(t,e){return e?t?!(Pt(e)&&!Pt(t)):!0:!1}function ji(t="high",e="resumeSession"){return{state:"idle",confidence:t,resumeMode:e}}function Sv(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:{...ji(),...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 _v(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 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:["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 wv(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=vv(s.title,n.title)?n.title:s.title,o=n.cwd||s.cwd,a=n.branch??s.branch,l=gv(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:yv(s.lastActivityAt,n.lastActivityAt);t.set(r,{...s,cwd:o,model:n.model??s.model,branch:a,title:i,createdAt:mv(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 Iv(...t){let e=new Map;for(let n of t)wv(e,n);return[...e.values()]}function Tv(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 Av(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 ju(t,e,n,r,s,i,o,a){let l=i?1/0:Math.max(1,e||50),u=Iv(t.sessionRecords.map(Sv),t.scannedSessions,t.runningSessions.map(T=>_v(T,t.scannedAt)),t.activeSessions.map(bv)),c=t.deletedSessionIds?.size?u.filter(T=>!t.deletedSessionIds?.has(T.sessionId)):u,d=Tv(c,r,s,i,o,a),p=d.filter(T=>T.runtime.state!=="idle"||T.managed).sort(hv),h=d.filter(T=>T.runtime.state==="idle"&&!T.managed).sort(Xu),g=Av(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 $u(t){if(t.sessions.length===0)return t;let e=t.sessions.map(o=>o.cwd),[n,r]=await Promise.all([Cu(e),xu(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 kv(t=Date.now()){return ce.refreshedAt===0||t-ce.refreshedAt>=av}async function Qu(t,e){let[n,r]=await Promise.all([xn("watcher.running_sessions",()=>t.listWatcherSessions(),[],e),xn("process.running_sessions",()=>t.scanRunningSessions(),[],e)]);return Di([...n,...r])}async function Cv(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),Qu(t,e)]);return{scannedSessions:s,runningSessions:i,scannedAt:n,refreshedAt:Date.now()}}function Zu(t,e){if(Cn)return;let n=Or,r=_.startTimer("session.inventory.backfill_latency_ms");Cn=Cv(t,e).then(s=>{if(n!==Or)return;let i=qu(ce);ce=s;let o=qu(s),a=r();Br=a,Dr=Date.now(),kn(),i!==o&&(qi=Date.now(),_.increment("session.inventory.backfill_applied"),st.info({durationMs:a,scanned:s.scannedSessions.length,running:s.runningSessions.length},"session inventory external backfill applied"),pv())}).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={...Vu,...t.loaders??{}},n=Math.max(250,t.sourceTimeoutMs??zu);if(!t.search){let c=_.startTimer("session.inventory.fast_path_latency_ms");kv()&&Zu(e,n);let d=ce,p=ju({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 $u(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),Qu(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=ju({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:$u(u)}var Ae=O.child({module:"scanner"});function Qi(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 Zi=3e4,Yi=Qi(Zi),Ji=Qi(Zi),Ur=Qi(Zi),$i=new Map,zi=new Map,Hr=null,it=24;function Gr(){Yi.clear(),Ji.clear(),Ur.clear()}function ld(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 cd(){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 xv(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*ud(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 Vi=512*1024,td=256*1024;async function dd(t,e){if(e<=Vi)return(0,N.readFile)(t,"utf-8");let n=await(0,N.open)(t,"r");try{let r=Buffer.alloc(Vi),{bytesRead:s}=await n.read(r,0,Vi,0);return r.toString("utf-8",0,s)}finally{await n.close()}}async function fd(t,e){if(e<=td)return(0,N.readFile)(t,"utf-8");let n=await(0,N.open)(t,"r");try{let r=Math.max(0,e-td),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 nd(t){switch(t){case"plan":return"plan";case"acceptEdits":return"acceptEdits";case"bypassPermissions":return"autoApprove";case"default":return"normal";default:return}}function Rv(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 Ev(t){return t?.type==="permission-mode"?nd(t.permissionMode):nd(t?.permissionMode)}function Pv(t){if(t?.type==="turn_context")return Rv(t.payload)}function Mv(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 r=Number(n.input_tokens),s=Number(n.output_tokens);if(!Number.isFinite(r)||!Number.isFinite(s))return;let i=Number(e.model_context_window);return{inputTokens:r,outputTokens:s,...Number.isFinite(i)&&i>0?{contextWindowTokens:i}:{}}}async function Lv(t,e){let n,r,s=await fd(t,e);for(let i of s.split(`
100
- `)){if(!i.trim())continue;let o;try{o=JSON.parse(i)}catch{continue}let a=Pv(o);a&&(n=a);let l=Mv(o);l&&(r=l)}return{approvalMode:n,lastUsage:r}}function rd(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"?rd(t.message?.usage??t.usage):rd(t?.toolUseResult?.usage)}async function pd(t,e){let n,r,s=await fd(t,e);for(let i of s.split(`
101
- `)){if(!i.trim())continue;let o;try{o=JSON.parse(i)}catch{continue}let a=Ev(o);a&&(n=a);let l=Nv(o);l&&(r=l)}return{approvalMode:n,lastUsage:r}}function eo(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 hd(t){return t?.type==="response_item"&&t.payload?.type==="message"&&t.payload.role==="user"?eo(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 sd(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 gd(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:ji()}}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 dd(t,e),r=ud(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 pd(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 dd(t,e),r=ud(n,96),s="",i="",o,a,l;for(let c of r){let d;try{d=JSON.parse(c)}catch{continue}if(s||(s=d.payload?.cwd??d.cwd??""),i||(i=d.payload?.id??d.id??""),o||(o=tt([d.payload?.title,d.title])),!l){let p=hd(d),h=p&&!gd(p)?tt([],p):void 0;h&&(a=p,l=h)}if(s&&(o||l))break}if(!s)return null;let u=await Lv(t,e);return{sessionId:i||Mt("codex",t)||(0,B.basename)(t,".jsonl"),cwd:s,title:o??l??tt([],a),approvalMode:u.approvalMode,lastUsage:u.lastUsage}}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,lastUsage:s.lastUsage,createdAt:new Date(n.birthtimeMs).toISOString(),lastActivityAt:new Date(n.mtimeMs).toISOString(),filePath:t}:null}catch{return null}}async function id(t,e){let n=(0,B.join)((0,ue.homedir)(),".claude","projects");try{let r;t?r=[ld(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 od(t,e){try{let n=await cd(),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 xv(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 Fu(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 cd(),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=Yi.get(s);if(i)return i;let o=$i.get(s);if(o)return o;let a=(async()=>{let l;if(t==="claude")l=await id(e,n);else if(t==="codex")l=await od(e,n);else{let[u,c]=await Promise.all([id(e,n),od(e,n)]);l=[...u,...c].sort((d,p)=>p.lastActivityAt.localeCompare(d.lastActivityAt))}return Yi.set(s,l),l})();return $i.set(s,a),a.finally(()=>$i.delete(s)),a}async function ed(t,e){let r=`search:${(0,ue.homedir)()}:${t}:${e??"all"}`,s=Ji.get(r);if(s)return s;let i=zi.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=>ad(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=>ad(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()]),Ji.set(r,a),a})();return zi.set(r,o),o.finally(()=>zi.delete(r)),o}async function ad(t,e,n){let r=(0,Ki.createReadStream)(t,{encoding:"utf-8"}),s=(0,Xi.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 eo(t.payload.content)}let e=hd(t);return e||""}async function qr(t,e){let n=(0,Ki.createReadStream)(t,{encoding:"utf-8"}),r=(0,Xi.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 to(t,e){let n=(0,B.join)((0,ue.homedir)(),".claude","projects"),r=e?ld(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 md(t,e){let n=await to(t,e);if(!n)return;let r=await(0,N.stat)(n).catch(()=>null);return r?.isFile()?(await pd(n,r.size)).lastUsage:void 0}async function no(t,e,n){if(e==="claude")return to(t,n);let r=(0,B.join)((0,ue.homedir)(),".codex","sessions");return vd(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 Hi(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 ro(t,e,n){let r=await no(t,e,n);return r?Hi(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 yd(t,e,n,r){if(e!=="codex"||!r||r<=0)return[];let s=await no(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 ou(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"&&!iu(a.content)){r[r.length-1]=i;return}}r.push(i)};if(e==="claude")try{let i=await to(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=sd(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=sd(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 no(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=eo(o.payload.content);c&&(u==="user"&&gd(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 vd(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 vd(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"),wd=require("path");var Xv=500,Sd=200;function _d(t){if(!Array.isArray(t))return[];let e=t.filter(n=>typeof n=="string"&&n.length>0);return e.length<=Sd?e:e.slice(-Sd)}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 bd(t){return{...t,lastActivityAt:t.lastActivityAt??t.createdAt,acceptedClientMessageIds:_d(t.acceptedClientMessageIds),interruptedClientMessageIds:_d(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(bd),deletedSessionIds:[],sessionAliases:{}};if(t&&typeof t=="object"){let e=t;return{records:Array.isArray(e.records)?e.records.map(bd):[],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,wd.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"),Id=require("os");function Vr(t){return t=t.replace(/^~/,"~"),t.startsWith("~/")||t==="~"?(0,Bt.join)((0,Id.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 so(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 Td={approvalRequestV1:"vibelet.approvalRequest.v1"};var Dt=require("fs"),Ad=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,Ad.dirname)(t),{recursive:!0}),(0,Dt.writeFileSync)(t,JSON.stringify(e,null,2)+`
105
- `,"utf8")}var Yr=class{constructor(e=Dc){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 kd(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"),kd(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:Td.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"),kd(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 io(t,e){Mn.register(t,e),X.info({deviceId:t,token:e,total:Mn.count()},"push token registered")}function oo(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",Cd=180,Ft=200,_S=6e4,xd=9e4,bS="Agent \u5361\u4F4F",wS="Agent \u5D29\u6E83",Rd=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 Bd(t){if(!t)return;let e=t.trim();if(e)return e.length>Rd?`${e.slice(0,Rd-1)}\u2026`:e}function IS(t,e,n,r){let s=Ht(t),i=Ht(n),o=Ht(e),a=Bd(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=Bd(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 Ed(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 Pd(t){t.managed||(t.managed=!0)}function Md(t){let e=t.pendingApproval?.requestId;return typeof e=="string"&&Ar(e)}function Ld(t,e,n){return{sessionId:t,agent:e,...n}}function xS(t){return t.startsWith(Ii)}function Nd(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=Du){this.pushSender=e;this.externalProcessPresenceCheck=n;this.removeInventoryBackfillListener=Yu(()=>{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=Ed(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"||!Md(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&&Md(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 md(e.sessionId,e.cwd),s=Ed(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)&&yd(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,ao.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 Nd(!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,ao.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 x=(await Rn(n??i)).find(G=>G.sessionId===e);x&&(i=x.agent,o=x.cwd||o,c=x.title??c,d=x.createdAt,p=x.lastActivityAt,h=x.lastUsage??h,m=x.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(Ld(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(Ld(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<=Cd?n:`${n.slice(0,Math.max(1,Cd-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>xd?(n==="sweep"&&b.warn({elapsedWallMs:r,toleratedGapMs:xd},"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,Od.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),x=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:x,...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}),Pd(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=Mi(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 ro(o,m.agent,m.cwd),w=!f&&!!A.isResponding,C=w?await this.externalProcessPresenceCheck(o):!1,x=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??x.isResponding??(w&&!C?void 0:m.isResponding),...C?{externallyResponding:!0}:{},partialReplyText:f?this.currentPartialReplyText(f):x.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(Nd(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}),Pd(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 ro(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 lo(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 Dd=require("child_process");function RS(t,e){return(0,Dd.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 Fd(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"),co=require("os"),Ud=require("crypto"),Wd=require("path");function qd(t){return(0,Ud.randomBytes)(t).toString("base64url")}function PS(){return`d_${qd(12)}`}function MS(){return(0,co.hostname)()}function LS(){let t=(0,co.hostname)().trim().toLowerCase();return t?t.endsWith(".local")?t:`${t}.local`:"localhost"}function NS(t){return{daemonId:PS(),daemonSecret:qd(32),displayName:MS(),canonicalHost:LS(),port:t,createdAt:new Date().toISOString()}}function Hd(t,e){(0,Ut.mkdirSync)((0,Wd.dirname)(e),{recursive:!0}),(0,Ut.writeFileSync)(e,JSON.stringify(t,null,2)+`
112
- `,"utf8")}function Gd(t,e=Oc){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,Hd(i,e)),i}}catch{}let n=NS(t);return Hd(n,e),n}var Wt=require("crypto"),qt=require("fs"),$d=require("path");function uo(t){return(0,Wt.randomBytes)(t).toString("base64url")}function fo(t){return(0,Wt.createHash)("sha256").update(t).digest("hex")}function jd(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,$d.dirname)(t),{recursive:!0}),(0,qt.writeFileSync)(t,JSON.stringify(e,null,2)+`
113
- `,"utf8")}var Qr=class{constructor(e=Bc){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_${uo(8)}`,s=uo(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=uo(32),i={deviceId:e,deviceName:n,tokenHash:fo(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=fo(n);return jd(s.tokenHash,i)?(r&&(s.lastSeenAt=new Date().toISOString(),Ln(this.pairingsPath,this.records)),!0):!1}validateAnyPairToken(e,n=!0){let r=fo(e),s=this.records.find(i=>!i.revokedAt&&jd(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 po(t,e){return BS(t)??e}function Zr(t,e){return!!(t&&e&&t===e)}function ho(t,e,n,r=!0){return t?Zr(t,e)?!0:!!n(t,r):!1}var Yd=require("child_process"),Jd=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 go(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 mo(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=mo(t);return go(e)||e.endsWith(".ts.net")}function GS(t){let e=mo(t);return HS(e)||e.endsWith(".local")}function jS(t){return mo(t).endsWith(".trycloudflare.com")}function zd(t,e){return qS(t)?"tailscale":GS(t)?"local_network":e?"configured_host":"fallback"}function Kd(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 Kd([{kind:"direct",host:r,port:n,source:zd(r,!0),stability:"stable"},...s.map(i=>({kind:"direct",host:i,port:n,source:zd(i,!1),stability:"stable"}))])}function Xd(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)&&(go(i.address)?e.push(i.address):n.push(i.address));return[...e,...n]}function Vd(t){let e=JSON.parse(t),n=de(e.Self?.DNSName),r=(e.Self?.TailscaleIPs??[]).map(o=>de(o)).filter(o=>!!o).filter(o=>go(o)&&ts(o)),s=r[0]??n,i=[...n&&n!==s?[n]:[],...r.filter(o=>o!==s)];return{canonicalHost:s,fallbackHosts:i}}function Qd(t=Yd.execFileSync,e=Jd.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 Vd(s)}catch{}try{let r=t("tailscale",["status","--json"],{encoding:"utf8",stdio:["ignore","pipe","pipe"],timeout:1500});return Vd(r)}catch{return{fallbackHosts:[]}}}function Zd(t){let e=VS(t.canonicalHost,t.fallbackHosts,t.port),n=t.relayUrl?zS(t.relayUrl):null,r=Kd([...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 ef(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 tf(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(Fc,"utf8"));return typeof t.latestVersion=="string"?t.latestVersion:void 0}catch{return}}var U=Gd(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,nf=!1,af=Date.now(),Gt=null,ns=null,KS=1e3;function XS(){let t=Qd();return ef({canonicalHost:U.canonicalHost,configuredCanonicalHost:S.canonicalHost,configuredFallbackHosts:Xd(S.fallbackHosts),tailscaleCanonicalHost:t.canonicalHost,tailscaleFallbackHosts:t.fallbackHosts,interfaces:(0,of.networkInterfaces)()})}function On(){let t=Date.now();if(ns&&ns.expiresAt>t)return ns.value;let e=XS(),n=Zd({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 So.default.toFile(vi,e,{type:"png",errorCorrectionLevel:"M",margin:1,scale:8});let n=await So.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 yo(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 lf(){return S.pairWindowMs===0?10*365.25*24*36e5:S.pairWindowMs}function t_(t,e){if(at(t.socket.remoteAddress))return!0;let n=po(t.headers.authorization,e.searchParams.get("token"));return ho(n,S.legacyToken,(r,s)=>pe.validateAnyPairToken(r,s),!1)}function n_(){let t=pe.openWindow(lf(),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=so(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,rf.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()-af)/1e3),activeSessions:Z.getActiveSessionCount(),pairedDevices:pe.pairedCount(),wsClients:fe.clients.size,drivers:Z.getDriverCounts(),sessionInventory:Ju(),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 yo(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 yo(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 yo(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=po(t.headers.authorization,n.searchParams.get("token"));if(!ho(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,sf.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=so(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(tf(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);lo(i,{deviceId:a?.deviceId,registerToken:io,unregisterToken:oo,respond:l=>t.send(JSON.stringify(l))});return}if(i.action==="push.unregister"){let a=He.get(t);lo(i,{deviceId:a?.deviceId,registerToken:io,unregisterToken:oo,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 vo(){for(let t of rs)try{t.destroy()}catch{}rs.clear()}function cf(){let t=Jc({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(cf,S.storageHousekeepingIntervalMs),Gt.unref())}function i_(){Gt&&(clearInterval(Gt),Gt=null)}function lt(t,e=0){if(!nf){nf=!0,$.info({reason:t,exitCode:e},"shutting down"),I.emit("daemon.shutdown",{reason:t,exitCode:e,uptimeSeconds:Math.round((Date.now()-af)/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"),vo(),process.exit(1);return}vo(),process.exit(e)}),setTimeout(()=>{$.error("force exiting after shutdown timeout"),vo(),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=Fd(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()=>{cf(),I.emit("daemon.start",{port:S.port}),_.startPeriodicLog(),s_(),Ku(),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(lf(),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{}});