@linzumi/cli 1.0.158 → 1.0.160

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/README.md CHANGED
@@ -58,7 +58,7 @@ Install the CLI or run it with `npx`:
58
58
  ```bash
59
59
  npm install -g @linzumi/cli@latest
60
60
  npx -y @linzumi/cli@latest signup
61
- npx -y @linzumi/cli@1.0.158 --version
61
+ npx -y @linzumi/cli@1.0.160 --version
62
62
  linzumi --version
63
63
  ```
64
64
 
@@ -1,18 +1,18 @@
1
1
  import { createRequire as __linzumiBundleCreateRequire } from 'node:module';
2
2
  const require = __linzumiBundleCreateRequire(import.meta.url);
3
- var ur=Object.create;var wn=Object.defineProperty;var fr=Object.getOwnPropertyDescriptor;var pr=Object.getOwnPropertyNames;var mr=Object.getPrototypeOf,gr=Object.prototype.hasOwnProperty;var O=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(n,t)=>(typeof require<"u"?require:n)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var R=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var hr=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of pr(n))!gr.call(e,o)&&o!==t&&wn(e,o,{get:()=>n[o],enumerable:!(r=fr(n,o))||r.enumerable});return e};var fe=(e,n,t)=>(t=e!=null?ur(mr(e)):{},hr(n||!e||!e.__esModule?wn(t,"default",{value:e,enumerable:!0}):t,e));var F=R((Ji,En)=>{"use strict";var kn=["nodebuffer","arraybuffer","fragments"],Cn=typeof Blob<"u";Cn&&kn.push("blob");En.exports={BINARY_TYPES:kn,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:Cn,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var pe=R(($i,Ce)=>{"use strict";var{EMPTY_BUFFER:yr}=F(),Ve=Buffer[Symbol.species];function _r(e,n){if(e.length===0)return yr;if(e.length===1)return e[0];let t=Buffer.allocUnsafe(n),r=0;for(let o=0;o<e.length;o++){let s=e[o];t.set(s,r),r+=s.length}return r<n?new Ve(t.buffer,t.byteOffset,r):t}function On(e,n,t,r,o){for(let s=0;s<o;s++)t[r+s]=e[s]^n[s&3]}function Pn(e,n){for(let t=0;t<e.length;t++)e[t]^=n[t&3]}function xr(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function Ge(e){if(Ge.readOnly=!0,Buffer.isBuffer(e))return e;let n;return e instanceof ArrayBuffer?n=new Ve(e):ArrayBuffer.isView(e)?n=new Ve(e.buffer,e.byteOffset,e.byteLength):(n=Buffer.from(e),Ge.readOnly=!1),n}Ce.exports={concat:_r,mask:On,toArrayBuffer:xr,toBuffer:Ge,unmask:Pn};if(!process.env.WS_NO_BUFFER_UTIL)try{let e=O("bufferutil");Ce.exports.mask=function(n,t,r,o,s){s<48?On(n,t,r,o,s):e.mask(n,t,r,o,s)},Ce.exports.unmask=function(n,t){n.length<32?Pn(n,t):e.unmask(n,t)}}catch{}});var Rn=R((Ui,In)=>{"use strict";var Tn=Symbol("kDone"),qe=Symbol("kRun"),Be=class{constructor(n){this[Tn]=()=>{this.pending--,this[qe]()},this.concurrency=n||1/0,this.jobs=[],this.pending=0}add(n){this.jobs.push(n),this[qe]()}[qe](){if(this.pending!==this.concurrency&&this.jobs.length){let n=this.jobs.shift();this.pending++,n(this[Tn])}}};In.exports=Be});var ge=R((Di,Nn)=>{"use strict";var me=O("zlib"),An=pe(),br=Rn(),{kStatusCode:Mn}=F(),vr=Buffer[Symbol.species],Sr=Buffer.from([0,0,255,255]),Oe=Symbol("permessage-deflate"),V=Symbol("total-length"),te=Symbol("callback"),B=Symbol("buffers"),re=Symbol("error"),Ee,We=class{constructor(n,t,r){if(this._maxPayload=r|0,this._options=n||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,!Ee){let o=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;Ee=new br(o)}}static get extensionName(){return"permessage-deflate"}offer(){let n={};return this._options.serverNoContextTakeover&&(n.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(n.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(n.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?n.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(n.client_max_window_bits=!0),n}accept(n){return n=this.normalizeParams(n),this.params=this._isServer?this.acceptAsServer(n):this.acceptAsClient(n),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let n=this._deflate[te];this._deflate.close(),this._deflate=null,n&&n(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(n){let t=this._options,r=n.find(o=>!(t.serverNoContextTakeover===!1&&o.server_no_context_takeover||o.server_max_window_bits&&(t.serverMaxWindowBits===!1||typeof t.serverMaxWindowBits=="number"&&t.serverMaxWindowBits>o.server_max_window_bits)||typeof t.clientMaxWindowBits=="number"&&!o.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(r.server_no_context_takeover=!0),t.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof t.serverMaxWindowBits=="number"&&(r.server_max_window_bits=t.serverMaxWindowBits),typeof t.clientMaxWindowBits=="number"?r.client_max_window_bits=t.clientMaxWindowBits:(r.client_max_window_bits===!0||t.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(n){let t=n[0];if(this._options.clientNoContextTakeover===!1&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!t.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(t.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return t}normalizeParams(n){return n.forEach(t=>{Object.keys(t).forEach(r=>{let o=t[r];if(o.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(o=o[0],r==="client_max_window_bits"){if(o!==!0){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${r}": ${o}`);o=s}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${o}`)}else if(r==="server_max_window_bits"){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${r}": ${o}`);o=s}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(o!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${o}`)}else throw new Error(`Unknown parameter "${r}"`);t[r]=o})}),n}decompress(n,t,r){Ee.add(o=>{this._decompress(n,t,(s,i)=>{o(),r(s,i)})})}compress(n,t,r){Ee.add(o=>{this._compress(n,t,(s,i)=>{o(),r(s,i)})})}_decompress(n,t,r){let o=this._isServer?"client":"server";if(!this._inflate){let s=`${o}_max_window_bits`,i=typeof this.params[s]!="number"?me.Z_DEFAULT_WINDOWBITS:this.params[s];this._inflate=me.createInflateRaw({...this._options.zlibInflateOptions,windowBits:i}),this._inflate[Oe]=this,this._inflate[V]=0,this._inflate[B]=[],this._inflate.on("error",kr),this._inflate.on("data",jn)}this._inflate[te]=r,this._inflate.write(n),t&&this._inflate.write(Sr),this._inflate.flush(()=>{let s=this._inflate[re];if(s){this._inflate.close(),this._inflate=null,r(s);return}let i=An.concat(this._inflate[B],this._inflate[V]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[V]=0,this._inflate[B]=[],t&&this.params[`${o}_no_context_takeover`]&&this._inflate.reset()),r(null,i)})}_compress(n,t,r){let o=this._isServer?"server":"client";if(!this._deflate){let s=`${o}_max_window_bits`,i=typeof this.params[s]!="number"?me.Z_DEFAULT_WINDOWBITS:this.params[s];this._deflate=me.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:i}),this._deflate[V]=0,this._deflate[B]=[],this._deflate.on("data",wr)}this._deflate[te]=r,this._deflate.write(n),this._deflate.flush(me.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let s=An.concat(this._deflate[B],this._deflate[V]);t&&(s=new vr(s.buffer,s.byteOffset,s.length-4)),this._deflate[te]=null,this._deflate[V]=0,this._deflate[B]=[],t&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),r(null,s)})}};Nn.exports=We;function wr(e){this[B].push(e),this[V]+=e.length}function jn(e){if(this[V]+=e.length,this[Oe]._maxPayload<1||this[V]<=this[Oe]._maxPayload){this[B].push(e);return}this[re]=new RangeError("Max payload size exceeded"),this[re].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[re][Mn]=1009,this.removeListener("data",jn),this.reset()}function kr(e){if(this[Oe]._inflate=null,this[re]){this[te](this[re]);return}e[Mn]=1007,this[te](e)}});var oe=R((zi,Pe)=>{"use strict";var{isUtf8:Ln}=O("buffer"),{hasBlob:Cr}=F(),Er=[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 Or(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function Ke(e){let n=e.length,t=0;for(;t<n;)if((e[t]&128)===0)t++;else if((e[t]&224)===192){if(t+1===n||(e[t+1]&192)!==128||(e[t]&254)===192)return!1;t+=2}else if((e[t]&240)===224){if(t+2>=n||(e[t+1]&192)!==128||(e[t+2]&192)!==128||e[t]===224&&(e[t+1]&224)===128||e[t]===237&&(e[t+1]&224)===160)return!1;t+=3}else if((e[t]&248)===240){if(t+3>=n||(e[t+1]&192)!==128||(e[t+2]&192)!==128||(e[t+3]&192)!==128||e[t]===240&&(e[t+1]&240)===128||e[t]===244&&e[t+1]>143||e[t]>244)return!1;t+=4}else return!1;return!0}function Pr(e){return Cr&&typeof e=="object"&&typeof e.arrayBuffer=="function"&&typeof e.type=="string"&&typeof e.stream=="function"&&(e[Symbol.toStringTag]==="Blob"||e[Symbol.toStringTag]==="File")}Pe.exports={isBlob:Pr,isValidStatusCode:Or,isValidUTF8:Ke,tokenChars:Er};if(Ln)Pe.exports.isValidUTF8=function(e){return e.length<24?Ke(e):Ln(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=O("utf-8-validate");Pe.exports.isValidUTF8=function(n){return n.length<32?Ke(n):e(n)}}catch{}});var Qe=R((Fi,Vn)=>{"use strict";var{Writable:Tr}=O("stream"),Jn=ge(),{BINARY_TYPES:Ir,EMPTY_BUFFER:$n,kStatusCode:Rr,kWebSocket:Ar}=F(),{concat:He,toArrayBuffer:Mr,unmask:jr}=pe(),{isValidStatusCode:Nr,isValidUTF8:Un}=oe(),Te=Buffer[Symbol.species],j=0,Dn=1,zn=2,Fn=3,Ze=4,Xe=5,Ie=6,Ye=class extends Tr{constructor(n={}){super(),this._allowSynchronousEvents=n.allowSynchronousEvents!==void 0?n.allowSynchronousEvents:!0,this._binaryType=n.binaryType||Ir[0],this._extensions=n.extensions||{},this._isServer=!!n.isServer,this._maxPayload=n.maxPayload|0,this._skipUTF8Validation=!!n.skipUTF8Validation,this[Ar]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=j}_write(n,t,r){if(this._opcode===8&&this._state==j)return r();this._bufferedBytes+=n.length,this._buffers.push(n),this.startLoop(r)}consume(n){if(this._bufferedBytes-=n,n===this._buffers[0].length)return this._buffers.shift();if(n<this._buffers[0].length){let r=this._buffers[0];return this._buffers[0]=new Te(r.buffer,r.byteOffset+n,r.length-n),new Te(r.buffer,r.byteOffset,n)}let t=Buffer.allocUnsafe(n);do{let r=this._buffers[0],o=t.length-n;n>=r.length?t.set(this._buffers.shift(),o):(t.set(new Uint8Array(r.buffer,r.byteOffset,n),o),this._buffers[0]=new Te(r.buffer,r.byteOffset+n,r.length-n)),n-=r.length}while(n>0);return t}startLoop(n){this._loop=!0;do switch(this._state){case j:this.getInfo(n);break;case Dn:this.getPayloadLength16(n);break;case zn:this.getPayloadLength64(n);break;case Fn:this.getMask();break;case Ze:this.getData(n);break;case Xe:case Ie:this._loop=!1;return}while(this._loop);this._errored||n()}getInfo(n){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if((t[0]&48)!==0){let o=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");n(o);return}let r=(t[0]&64)===64;if(r&&!this._extensions[Jn.extensionName]){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");n(o);return}if(this._fin=(t[0]&128)===128,this._opcode=t[0]&15,this._payloadLength=t[1]&127,this._opcode===0){if(r){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");n(o);return}if(!this._fragmented){let o=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");n(o);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");n(o);return}this._compressed=r}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let o=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");n(o);return}if(r){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");n(o);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let o=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");n(o);return}}else{let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");n(o);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(t[1]&128)===128,this._isServer){if(!this._masked){let o=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");n(o);return}}else if(this._masked){let o=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");n(o);return}this._payloadLength===126?this._state=Dn:this._payloadLength===127?this._state=zn:this.haveLength(n)}getPayloadLength16(n){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(n)}getPayloadLength64(n){if(this._bufferedBytes<8){this._loop=!1;return}let t=this.consume(8),r=t.readUInt32BE(0);if(r>Math.pow(2,21)-1){let o=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");n(o);return}this._payloadLength=r*Math.pow(2,32)+t.readUInt32BE(4),this.haveLength(n)}haveLength(n){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let t=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");n(t);return}this._masked?this._state=Fn:this._state=Ze}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Ze}getData(n){let t=$n;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&jr(t,this._mask)}if(this._opcode>7){this.controlMessage(t,n);return}if(this._compressed){this._state=Xe,this.decompress(t,n);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(n)}decompress(n,t){this._extensions[Jn.extensionName].decompress(n,this._fin,(o,s)=>{if(o)return t(o);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let i=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");t(i);return}this._fragments.push(s)}this.dataMessage(t),this._state===j&&this.startLoop(t)})}dataMessage(n){if(!this._fin){this._state=j;return}let t=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let o;this._binaryType==="nodebuffer"?o=He(r,t):this._binaryType==="arraybuffer"?o=Mr(He(r,t)):this._binaryType==="blob"?o=new Blob(r):o=r,this._allowSynchronousEvents?(this.emit("message",o,!0),this._state=j):(this._state=Ie,setImmediate(()=>{this.emit("message",o,!0),this._state=j,this.startLoop(n)}))}else{let o=He(r,t);if(!this._skipUTF8Validation&&!Un(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");n(s);return}this._state===Xe||this._allowSynchronousEvents?(this.emit("message",o,!1),this._state=j):(this._state=Ie,setImmediate(()=>{this.emit("message",o,!1),this._state=j,this.startLoop(n)}))}}controlMessage(n,t){if(this._opcode===8){if(n.length===0)this._loop=!1,this.emit("conclude",1005,$n),this.end();else{let r=n.readUInt16BE(0);if(!Nr(r)){let s=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");t(s);return}let o=new Te(n.buffer,n.byteOffset+2,n.length-2);if(!this._skipUTF8Validation&&!Un(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");t(s);return}this._loop=!1,this.emit("conclude",r,o),this.end()}this._state=j;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",n),this._state=j):(this._state=Ie,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",n),this._state=j,this.startLoop(t)}))}createError(n,t,r,o,s){this._loop=!1,this._errored=!0;let i=new n(r?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(i,this.createError),i.code=s,i[Rr]=o,i}};Vn.exports=Ye});var tn=R((Gi,Bn)=>{"use strict";var{Duplex:Vi}=O("stream"),{randomFillSync:Lr}=O("crypto"),Gn=ge(),{EMPTY_BUFFER:Jr,kWebSocket:$r,NOOP:Ur}=F(),{isBlob:se,isValidStatusCode:Dr}=oe(),{mask:qn,toBuffer:H}=pe(),N=Symbol("kByteLength"),zr=Buffer.alloc(4),Re=8*1024,Z,ie=Re,J=0,Fr=1,Vr=2,en=class e{constructor(n,t,r){this._extensions=t||{},r&&(this._generateMask=r,this._maskBuffer=Buffer.alloc(4)),this._socket=n,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=J,this.onerror=Ur,this[$r]=void 0}static frame(n,t){let r,o=!1,s=2,i=!1;t.mask&&(r=t.maskBuffer||zr,t.generateMask?t.generateMask(r):(ie===Re&&(Z===void 0&&(Z=Buffer.alloc(Re)),Lr(Z,0,Re),ie=0),r[0]=Z[ie++],r[1]=Z[ie++],r[2]=Z[ie++],r[3]=Z[ie++]),i=(r[0]|r[1]|r[2]|r[3])===0,s=6);let a;typeof n=="string"?(!t.mask||i)&&t[N]!==void 0?a=t[N]:(n=Buffer.from(n),a=n.length):(a=n.length,o=t.mask&&t.readOnly&&!i);let c=a;a>=65536?(s+=8,c=127):a>125&&(s+=2,c=126);let d=Buffer.allocUnsafe(o?a+s:s);return d[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(d[0]|=64),d[1]=c,c===126?d.writeUInt16BE(a,2):c===127&&(d[2]=d[3]=0,d.writeUIntBE(a,4,6)),t.mask?(d[1]|=128,d[s-4]=r[0],d[s-3]=r[1],d[s-2]=r[2],d[s-1]=r[3],i?[d,n]:o?(qn(n,r,d,s,a),[d]):(qn(n,r,n,0,a),[d,n])):[d,n]}close(n,t,r,o){let s;if(n===void 0)s=Jr;else{if(typeof n!="number"||!Dr(n))throw new TypeError("First argument must be a valid error code number");if(t===void 0||!t.length)s=Buffer.allocUnsafe(2),s.writeUInt16BE(n,0);else{let a=Buffer.byteLength(t);if(a>123)throw new RangeError("The message must not be greater than 123 bytes");s=Buffer.allocUnsafe(2+a),s.writeUInt16BE(n,0),typeof t=="string"?s.write(t,2):s.set(t,2)}}let i={[N]:s.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==J?this.enqueue([this.dispatch,s,!1,i,o]):this.sendFrame(e.frame(s,i),o)}ping(n,t,r){let o,s;if(typeof n=="string"?(o=Buffer.byteLength(n),s=!1):se(n)?(o=n.size,s=!1):(n=H(n),o=n.length,s=H.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[N]:o,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:s,rsv1:!1};se(n)?this._state!==J?this.enqueue([this.getBlobData,n,!1,i,r]):this.getBlobData(n,!1,i,r):this._state!==J?this.enqueue([this.dispatch,n,!1,i,r]):this.sendFrame(e.frame(n,i),r)}pong(n,t,r){let o,s;if(typeof n=="string"?(o=Buffer.byteLength(n),s=!1):se(n)?(o=n.size,s=!1):(n=H(n),o=n.length,s=H.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[N]:o,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:s,rsv1:!1};se(n)?this._state!==J?this.enqueue([this.getBlobData,n,!1,i,r]):this.getBlobData(n,!1,i,r):this._state!==J?this.enqueue([this.dispatch,n,!1,i,r]):this.sendFrame(e.frame(n,i),r)}send(n,t,r){let o=this._extensions[Gn.extensionName],s=t.binary?2:1,i=t.compress,a,c;typeof n=="string"?(a=Buffer.byteLength(n),c=!1):se(n)?(a=n.size,c=!1):(n=H(n),a=n.length,c=H.readOnly),this._firstFragment?(this._firstFragment=!1,i&&o&&o.params[o._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(i=a>=o._threshold),this._compress=i):(i=!1,s=0),t.fin&&(this._firstFragment=!0);let d={[N]:a,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:s,readOnly:c,rsv1:i};se(n)?this._state!==J?this.enqueue([this.getBlobData,n,this._compress,d,r]):this.getBlobData(n,this._compress,d,r):this._state!==J?this.enqueue([this.dispatch,n,this._compress,d,r]):this.dispatch(n,this._compress,d,r)}getBlobData(n,t,r,o){this._bufferedBytes+=r[N],this._state=Vr,n.arrayBuffer().then(s=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(nn,this,a,o);return}this._bufferedBytes-=r[N];let i=H(s);t?this.dispatch(i,t,r,o):(this._state=J,this.sendFrame(e.frame(i,r),o),this.dequeue())}).catch(s=>{process.nextTick(Gr,this,s,o)})}dispatch(n,t,r,o){if(!t){this.sendFrame(e.frame(n,r),o);return}let s=this._extensions[Gn.extensionName];this._bufferedBytes+=r[N],this._state=Fr,s.compress(n,r.fin,(i,a)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");nn(this,c,o);return}this._bufferedBytes-=r[N],this._state=J,r.readOnly=!1,this.sendFrame(e.frame(a,r),o),this.dequeue()})}dequeue(){for(;this._state===J&&this._queue.length;){let n=this._queue.shift();this._bufferedBytes-=n[3][N],Reflect.apply(n[0],this,n.slice(1))}}enqueue(n){this._bufferedBytes+=n[3][N],this._queue.push(n)}sendFrame(n,t){n.length===2?(this._socket.cork(),this._socket.write(n[0]),this._socket.write(n[1],t),this._socket.uncork()):this._socket.write(n[0],t)}};Bn.exports=en;function nn(e,n,t){typeof t=="function"&&t(n);for(let r=0;r<e._queue.length;r++){let o=e._queue[r],s=o[o.length-1];typeof s=="function"&&s(n)}}function Gr(e,n,t){nn(e,n,t),e.onerror(n)}});var nt=R((qi,et)=>{"use strict";var{kForOnEventAttribute:he,kListener:rn}=F(),Wn=Symbol("kCode"),Kn=Symbol("kData"),Hn=Symbol("kError"),Zn=Symbol("kMessage"),Xn=Symbol("kReason"),ae=Symbol("kTarget"),Yn=Symbol("kType"),Qn=Symbol("kWasClean"),G=class{constructor(n){this[ae]=null,this[Yn]=n}get target(){return this[ae]}get type(){return this[Yn]}};Object.defineProperty(G.prototype,"target",{enumerable:!0});Object.defineProperty(G.prototype,"type",{enumerable:!0});var X=class extends G{constructor(n,t={}){super(n),this[Wn]=t.code===void 0?0:t.code,this[Xn]=t.reason===void 0?"":t.reason,this[Qn]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[Wn]}get reason(){return this[Xn]}get wasClean(){return this[Qn]}};Object.defineProperty(X.prototype,"code",{enumerable:!0});Object.defineProperty(X.prototype,"reason",{enumerable:!0});Object.defineProperty(X.prototype,"wasClean",{enumerable:!0});var de=class extends G{constructor(n,t={}){super(n),this[Hn]=t.error===void 0?null:t.error,this[Zn]=t.message===void 0?"":t.message}get error(){return this[Hn]}get message(){return this[Zn]}};Object.defineProperty(de.prototype,"error",{enumerable:!0});Object.defineProperty(de.prototype,"message",{enumerable:!0});var ye=class extends G{constructor(n,t={}){super(n),this[Kn]=t.data===void 0?null:t.data}get data(){return this[Kn]}};Object.defineProperty(ye.prototype,"data",{enumerable:!0});var qr={addEventListener(e,n,t={}){for(let o of this.listeners(e))if(!t[he]&&o[rn]===n&&!o[he])return;let r;if(e==="message")r=function(s,i){let a=new ye("message",{data:i?s:s.toString()});a[ae]=this,Ae(n,this,a)};else if(e==="close")r=function(s,i){let a=new X("close",{code:s,reason:i.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[ae]=this,Ae(n,this,a)};else if(e==="error")r=function(s){let i=new de("error",{error:s,message:s.message});i[ae]=this,Ae(n,this,i)};else if(e==="open")r=function(){let s=new G("open");s[ae]=this,Ae(n,this,s)};else return;r[he]=!!t[he],r[rn]=n,t.once?this.once(e,r):this.on(e,r)},removeEventListener(e,n){for(let t of this.listeners(e))if(t[rn]===n&&!t[he]){this.removeListener(e,t);break}}};et.exports={CloseEvent:X,ErrorEvent:de,Event:G,EventTarget:qr,MessageEvent:ye};function Ae(e,n,t){typeof e=="object"&&e.handleEvent?e.handleEvent.call(e,t):e.call(n,t)}});var on=R((Bi,tt)=>{"use strict";var{tokenChars:_e}=oe();function U(e,n,t){e[n]===void 0?e[n]=[t]:e[n].push(t)}function Br(e){let n=Object.create(null),t=Object.create(null),r=!1,o=!1,s=!1,i,a,c=-1,d=-1,f=-1,p=0;for(;p<e.length;p++)if(d=e.charCodeAt(p),i===void 0)if(f===-1&&_e[d]===1)c===-1&&(c=p);else if(p!==0&&(d===32||d===9))f===-1&&c!==-1&&(f=p);else if(d===59||d===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let u=e.slice(c,f);d===44?(U(n,u,t),t=Object.create(null)):i=u,c=f=-1}else throw new SyntaxError(`Unexpected character at index ${p}`);else if(a===void 0)if(f===-1&&_e[d]===1)c===-1&&(c=p);else if(d===32||d===9)f===-1&&c!==-1&&(f=p);else if(d===59||d===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p),U(t,e.slice(c,f),!0),d===44&&(U(n,i,t),t=Object.create(null),i=void 0),c=f=-1}else if(d===61&&c!==-1&&f===-1)a=e.slice(c,p),c=f=-1;else throw new SyntaxError(`Unexpected character at index ${p}`);else if(o){if(_e[d]!==1)throw new SyntaxError(`Unexpected character at index ${p}`);c===-1?c=p:r||(r=!0),o=!1}else if(s)if(_e[d]===1)c===-1&&(c=p);else if(d===34&&c!==-1)s=!1,f=p;else if(d===92)o=!0;else throw new SyntaxError(`Unexpected character at index ${p}`);else if(d===34&&e.charCodeAt(p-1)===61)s=!0;else if(f===-1&&_e[d]===1)c===-1&&(c=p);else if(c!==-1&&(d===32||d===9))f===-1&&(f=p);else if(d===59||d===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let u=e.slice(c,f);r&&(u=u.replace(/\\/g,""),r=!1),U(t,a,u),d===44&&(U(n,i,t),t=Object.create(null),i=void 0),a=void 0,c=f=-1}else throw new SyntaxError(`Unexpected character at index ${p}`);if(c===-1||s||d===32||d===9)throw new SyntaxError("Unexpected end of input");f===-1&&(f=p);let y=e.slice(c,f);return i===void 0?U(n,y,t):(a===void 0?U(t,y,!0):r?U(t,a,y.replace(/\\/g,"")):U(t,a,y),U(n,i,t)),n}function Wr(e){return Object.keys(e).map(n=>{let t=e[n];return Array.isArray(t)||(t=[t]),t.map(r=>[n].concat(Object.keys(r).map(o=>{let s=r[o];return Array.isArray(s)||(s=[s]),s.map(i=>i===!0?o:`${o}=${i}`).join("; ")})).join("; ")).join(", ")}).join(", ")}tt.exports={format:Wr,parse:Br}});var Le=R((Hi,mt)=>{"use strict";var Kr=O("events"),Hr=O("https"),Zr=O("http"),st=O("net"),Xr=O("tls"),{randomBytes:Yr,createHash:Qr}=O("crypto"),{Duplex:Wi,Readable:Ki}=O("stream"),{URL:sn}=O("url"),W=ge(),eo=Qe(),no=tn(),{isBlob:to}=oe(),{BINARY_TYPES:rt,EMPTY_BUFFER:Me,GUID:ro,kForOnEventAttribute:an,kListener:oo,kStatusCode:so,kWebSocket:P,NOOP:it}=F(),{EventTarget:{addEventListener:io,removeEventListener:ao}}=nt(),{format:co,parse:lo}=on(),{toBuffer:uo}=pe(),fo=30*1e3,at=Symbol("kAborted"),dn=[8,13],q=["CONNECTING","OPEN","CLOSING","CLOSED"],po=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,C=class e extends Kr{constructor(n,t,r){super(),this._binaryType=rt[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Me,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,n!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,t===void 0?t=[]:Array.isArray(t)||(typeof t=="object"&&t!==null?(r=t,t=[]):t=[t]),dt(this,n,t,r)):(this._autoPong=r.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(n){rt.includes(n)&&(this._binaryType=n,this._receiver&&(this._receiver._binaryType=n))}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(n,t,r){let o=new eo({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),s=new no(n,this._extensions,r.generateMask);this._receiver=o,this._sender=s,this._socket=n,o[P]=this,s[P]=this,n[P]=this,o.on("conclude",ho),o.on("drain",yo),o.on("error",_o),o.on("message",xo),o.on("ping",bo),o.on("pong",vo),s.onerror=So,n.setTimeout&&n.setTimeout(0),n.setNoDelay&&n.setNoDelay(),t.length>0&&n.unshift(t),n.on("close",ut),n.on("data",Ne),n.on("end",ft),n.on("error",pt),this._readyState=e.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[W.extensionName]&&this._extensions[W.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(n,t){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){A(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(n,t,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),lt(this)}}pause(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!0,this._socket.pause())}ping(n,t,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof n=="function"?(r=n,n=t=void 0):typeof t=="function"&&(r=t,t=void 0),typeof n=="number"&&(n=n.toString()),this.readyState!==e.OPEN){cn(this,n,r);return}t===void 0&&(t=!this._isServer),this._sender.ping(n||Me,t,r)}pong(n,t,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof n=="function"?(r=n,n=t=void 0):typeof t=="function"&&(r=t,t=void 0),typeof n=="number"&&(n=n.toString()),this.readyState!==e.OPEN){cn(this,n,r);return}t===void 0&&(t=!this._isServer),this._sender.pong(n||Me,t,r)}resume(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(n,t,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"&&(r=t,t={}),typeof n=="number"&&(n=n.toString()),this.readyState!==e.OPEN){cn(this,n,r);return}let o={binary:typeof n!="string",mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[W.extensionName]||(o.compress=!1),this._sender.send(n||Me,o,r)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){A(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(C,"CONNECTING",{enumerable:!0,value:q.indexOf("CONNECTING")});Object.defineProperty(C.prototype,"CONNECTING",{enumerable:!0,value:q.indexOf("CONNECTING")});Object.defineProperty(C,"OPEN",{enumerable:!0,value:q.indexOf("OPEN")});Object.defineProperty(C.prototype,"OPEN",{enumerable:!0,value:q.indexOf("OPEN")});Object.defineProperty(C,"CLOSING",{enumerable:!0,value:q.indexOf("CLOSING")});Object.defineProperty(C.prototype,"CLOSING",{enumerable:!0,value:q.indexOf("CLOSING")});Object.defineProperty(C,"CLOSED",{enumerable:!0,value:q.indexOf("CLOSED")});Object.defineProperty(C.prototype,"CLOSED",{enumerable:!0,value:q.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(e=>{Object.defineProperty(C.prototype,e,{enumerable:!0})});["open","error","close","message"].forEach(e=>{Object.defineProperty(C.prototype,`on${e}`,{enumerable:!0,get(){for(let n of this.listeners(e))if(n[an])return n[oo];return null},set(n){for(let t of this.listeners(e))if(t[an]){this.removeListener(e,t);break}typeof n=="function"&&this.addEventListener(e,n,{[an]:!0})}})});C.prototype.addEventListener=io;C.prototype.removeEventListener=ao;mt.exports=C;function dt(e,n,t,r){let o={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:dn[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(e._autoPong=o.autoPong,!dn.includes(o.protocolVersion))throw new RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${dn.join(", ")})`);let s;if(n instanceof sn)s=n;else try{s=new sn(n)}catch{throw new SyntaxError(`Invalid URL: ${n}`)}s.protocol==="http:"?s.protocol="ws:":s.protocol==="https:"&&(s.protocol="wss:"),e._url=s.href;let i=s.protocol==="wss:",a=s.protocol==="ws+unix:",c;if(s.protocol!=="ws:"&&!i&&!a?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!s.pathname?c="The URL's pathname is empty":s.hash&&(c="The URL contains a fragment identifier"),c){let l=new SyntaxError(c);if(e._redirects===0)throw l;je(e,l);return}let d=i?443:80,f=Yr(16).toString("base64"),p=i?Hr.request:Zr.request,y=new Set,u;if(o.createConnection=o.createConnection||(i?go:mo),o.defaultPort=o.defaultPort||d,o.port=s.port||d,o.host=s.hostname.startsWith("[")?s.hostname.slice(1,-1):s.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":f,Connection:"Upgrade",Upgrade:"websocket"},o.path=s.pathname+s.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(u=new W(o.perMessageDeflate!==!0?o.perMessageDeflate:{},!1,o.maxPayload),o.headers["Sec-WebSocket-Extensions"]=co({[W.extensionName]:u.offer()})),t.length){for(let l of t){if(typeof l!="string"||!po.test(l)||y.has(l))throw new SyntaxError("An invalid or duplicated subprotocol was specified");y.add(l)}o.headers["Sec-WebSocket-Protocol"]=t.join(",")}if(o.origin&&(o.protocolVersion<13?o.headers["Sec-WebSocket-Origin"]=o.origin:o.headers.Origin=o.origin),(s.username||s.password)&&(o.auth=`${s.username}:${s.password}`),a){let l=o.path.split(":");o.socketPath=l[0],o.path=l[1]}let m;if(o.followRedirects){if(e._redirects===0){e._originalIpc=a,e._originalSecure=i,e._originalHostOrSocketPath=a?o.socketPath:s.host;let l=r&&r.headers;if(r={...r,headers:{}},l)for(let[x,E]of Object.entries(l))r.headers[x.toLowerCase()]=E}else if(e.listenerCount("redirect")===0){let l=a?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:s.host===e._originalHostOrSocketPath;(!l||e._originalSecure&&!i)&&(delete o.headers.authorization,delete o.headers.cookie,l||delete o.headers.host,o.auth=void 0)}o.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(o.auth).toString("base64")),m=e._req=p(o),e._redirects&&e.emit("redirect",e.url,m)}else m=e._req=p(o);o.timeout&&m.on("timeout",()=>{A(e,m,"Opening handshake has timed out")}),m.on("error",l=>{m===null||m[at]||(m=e._req=null,je(e,l))}),m.on("response",l=>{let x=l.headers.location,E=l.statusCode;if(x&&o.followRedirects&&E>=300&&E<400){if(++e._redirects>o.maxRedirects){A(e,m,"Maximum redirects exceeded");return}m.abort();let M;try{M=new sn(x,n)}catch{let v=new SyntaxError(`Invalid URL: ${x}`);je(e,v);return}dt(e,M,t,r)}else e.emit("unexpected-response",m,l)||A(e,m,`Unexpected server response: ${l.statusCode}`)}),m.on("upgrade",(l,x,E)=>{if(e.emit("upgrade",l),e.readyState!==C.CONNECTING)return;m=e._req=null;let M=l.headers.upgrade;if(M===void 0||M.toLowerCase()!=="websocket"){A(e,x,"Invalid Upgrade header");return}let L=Qr("sha1").update(f+ro).digest("base64");if(l.headers["sec-websocket-accept"]!==L){A(e,x,"Invalid Sec-WebSocket-Accept header");return}let v=l.headers["sec-websocket-protocol"],h;if(v!==void 0?y.size?y.has(v)||(h="Server sent an invalid subprotocol"):h="Server sent a subprotocol but none was requested":y.size&&(h="Server sent no subprotocol"),h){A(e,x,h);return}v&&(e._protocol=v);let S=l.headers["sec-websocket-extensions"];if(S!==void 0){if(!u){A(e,x,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let k;try{k=lo(S)}catch{A(e,x,"Invalid Sec-WebSocket-Extensions header");return}let b=Object.keys(k);if(b.length!==1||b[0]!==W.extensionName){A(e,x,"Server indicated an extension that was not requested");return}try{u.accept(k[W.extensionName])}catch{A(e,x,"Invalid Sec-WebSocket-Extensions header");return}e._extensions[W.extensionName]=u}e.setSocket(x,E,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(m,e):m.end()}function je(e,n){e._readyState=C.CLOSING,e._errorEmitted=!0,e.emit("error",n),e.emitClose()}function mo(e){return e.path=e.socketPath,st.connect(e)}function go(e){return e.path=void 0,!e.servername&&e.servername!==""&&(e.servername=st.isIP(e.host)?"":e.host),Xr.connect(e)}function A(e,n,t){e._readyState=C.CLOSING;let r=new Error(t);Error.captureStackTrace(r,A),n.setHeader?(n[at]=!0,n.abort(),n.socket&&!n.socket.destroyed&&n.socket.destroy(),process.nextTick(je,e,r)):(n.destroy(r),n.once("error",e.emit.bind(e,"error")),n.once("close",e.emitClose.bind(e)))}function cn(e,n,t){if(n){let r=to(n)?n.size:uo(n).length;e._socket?e._sender._bufferedBytes+=r:e._bufferedAmount+=r}if(t){let r=new Error(`WebSocket is not open: readyState ${e.readyState} (${q[e.readyState]})`);process.nextTick(t,r)}}function ho(e,n){let t=this[P];t._closeFrameReceived=!0,t._closeMessage=n,t._closeCode=e,t._socket[P]!==void 0&&(t._socket.removeListener("data",Ne),process.nextTick(ct,t._socket),e===1005?t.close():t.close(e,n))}function yo(){let e=this[P];e.isPaused||e._socket.resume()}function _o(e){let n=this[P];n._socket[P]!==void 0&&(n._socket.removeListener("data",Ne),process.nextTick(ct,n._socket),n.close(e[so])),n._errorEmitted||(n._errorEmitted=!0,n.emit("error",e))}function ot(){this[P].emitClose()}function xo(e,n){this[P].emit("message",e,n)}function bo(e){let n=this[P];n._autoPong&&n.pong(e,!this._isServer,it),n.emit("ping",e)}function vo(e){this[P].emit("pong",e)}function ct(e){e.resume()}function So(e){let n=this[P];n.readyState!==C.CLOSED&&(n.readyState===C.OPEN&&(n._readyState=C.CLOSING,lt(n)),this._socket.end(),n._errorEmitted||(n._errorEmitted=!0,n.emit("error",e)))}function lt(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),fo)}function ut(){let e=this[P];this.removeListener("close",ut),this.removeListener("data",Ne),this.removeListener("end",ft),e._readyState=C.CLOSING;let n;!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&(n=e._socket.read())!==null&&e._receiver.write(n),e._receiver.end(),this[P]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",ot),e._receiver.on("finish",ot))}function Ne(e){this[P]._receiver.write(e)||this.pause()}function ft(){let e=this[P];e._readyState=C.CLOSING,e._receiver.end(),this.end()}function pt(){let e=this[P];this.removeListener("error",pt),this.on("error",it),e&&(e._readyState=C.CLOSING,this.destroy())}});var _t=R((Xi,yt)=>{"use strict";var Zi=Le(),{Duplex:wo}=O("stream");function gt(e){e.emit("close")}function ko(){!this.destroyed&&this._writableState.finished&&this.destroy()}function ht(e){this.removeListener("error",ht),this.destroy(),this.listenerCount("error")===0&&this.emit("error",e)}function Co(e,n){let t=!0,r=new wo({...n,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",function(s,i){let a=!i&&r._readableState.objectMode?s.toString():s;r.push(a)||e.pause()}),e.once("error",function(s){r.destroyed||(t=!1,r.destroy(s))}),e.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(o,s){if(e.readyState===e.CLOSED){s(o),process.nextTick(gt,r);return}let i=!1;e.once("error",function(c){i=!0,s(c)}),e.once("close",function(){i||s(o),process.nextTick(gt,r)}),t&&e.terminate()},r._final=function(o){if(e.readyState===e.CONNECTING){e.once("open",function(){r._final(o)});return}e._socket!==null&&(e._socket._writableState.finished?(o(),r._readableState.endEmitted&&r.destroy()):(e._socket.once("finish",function(){o()}),e.close()))},r._read=function(){e.isPaused&&e.resume()},r._write=function(o,s,i){if(e.readyState===e.CONNECTING){e.once("open",function(){r._write(o,s,i)});return}e.send(o,i)},r.on("end",ko),r.on("error",ht),r}yt.exports=Co});var bt=R((Yi,xt)=>{"use strict";var{tokenChars:Eo}=oe();function Oo(e){let n=new Set,t=-1,r=-1,o=0;for(o;o<e.length;o++){let i=e.charCodeAt(o);if(r===-1&&Eo[i]===1)t===-1&&(t=o);else if(o!==0&&(i===32||i===9))r===-1&&t!==-1&&(r=o);else if(i===44){if(t===-1)throw new SyntaxError(`Unexpected character at index ${o}`);r===-1&&(r=o);let a=e.slice(t,r);if(n.has(a))throw new SyntaxError(`The "${a}" subprotocol is duplicated`);n.add(a),t=r=-1}else throw new SyntaxError(`Unexpected character at index ${o}`)}if(t===-1||r!==-1)throw new SyntaxError("Unexpected end of input");let s=e.slice(t,o);if(n.has(s))throw new SyntaxError(`The "${s}" subprotocol is duplicated`);return n.add(s),n}xt.exports={parse:Oo}});var Ot=R((ea,Et)=>{"use strict";var Po=O("events"),Je=O("http"),{Duplex:Qi}=O("stream"),{createHash:To}=O("crypto"),vt=on(),Y=ge(),Io=bt(),Ro=Le(),{GUID:Ao,kWebSocket:Mo}=F(),jo=/^[+/0-9A-Za-z]{22}==$/,St=0,wt=1,Ct=2,ln=class extends Po{constructor(n,t){if(super(),n={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Ro,...n},n.port==null&&!n.server&&!n.noServer||n.port!=null&&(n.server||n.noServer)||n.server&&n.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(n.port!=null?(this._server=Je.createServer((r,o)=>{let s=Je.STATUS_CODES[426];o.writeHead(426,{"Content-Length":s.length,"Content-Type":"text/plain"}),o.end(s)}),this._server.listen(n.port,n.host,n.backlog,t)):n.server&&(this._server=n.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=No(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(o,s,i)=>{this.handleUpgrade(o,s,i,r)}})}n.perMessageDeflate===!0&&(n.perMessageDeflate={}),n.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=n,this._state=St}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(n){if(this._state===Ct){n&&this.once("close",()=>{n(new Error("The server is not running"))}),process.nextTick(xe,this);return}if(n&&this.once("close",n),this._state!==wt)if(this._state=wt,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(xe,this):process.nextTick(xe,this);else{let t=this._server;this._removeListeners(),this._removeListeners=this._server=null,t.close(()=>{xe(this)})}}shouldHandle(n){if(this.options.path){let t=n.url.indexOf("?");if((t!==-1?n.url.slice(0,t):n.url)!==this.options.path)return!1}return!0}handleUpgrade(n,t,r,o){t.on("error",kt);let s=n.headers["sec-websocket-key"],i=n.headers.upgrade,a=+n.headers["sec-websocket-version"];if(n.method!=="GET"){Q(this,n,t,405,"Invalid HTTP method");return}if(i===void 0||i.toLowerCase()!=="websocket"){Q(this,n,t,400,"Invalid Upgrade header");return}if(s===void 0||!jo.test(s)){Q(this,n,t,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){Q(this,n,t,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(n)){be(t,400);return}let c=n.headers["sec-websocket-protocol"],d=new Set;if(c!==void 0)try{d=Io.parse(c)}catch{Q(this,n,t,400,"Invalid Sec-WebSocket-Protocol header");return}let f=n.headers["sec-websocket-extensions"],p={};if(this.options.perMessageDeflate&&f!==void 0){let y=new Y(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let u=vt.parse(f);u[Y.extensionName]&&(y.accept(u[Y.extensionName]),p[Y.extensionName]=y)}catch{Q(this,n,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let y={origin:n.headers[`${a===8?"sec-websocket-origin":"origin"}`],secure:!!(n.socket.authorized||n.socket.encrypted),req:n};if(this.options.verifyClient.length===2){this.options.verifyClient(y,(u,m,l,x)=>{if(!u)return be(t,m||401,l,x);this.completeUpgrade(p,s,d,n,t,r,o)});return}if(!this.options.verifyClient(y))return be(t,401)}this.completeUpgrade(p,s,d,n,t,r,o)}completeUpgrade(n,t,r,o,s,i,a){if(!s.readable||!s.writable)return s.destroy();if(s[Mo])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>St)return be(s,503);let d=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${To("sha1").update(t+Ao).digest("base64")}`],f=new this.options.WebSocket(null,void 0,this.options);if(r.size){let p=this.options.handleProtocols?this.options.handleProtocols(r,o):r.values().next().value;p&&(d.push(`Sec-WebSocket-Protocol: ${p}`),f._protocol=p)}if(n[Y.extensionName]){let p=n[Y.extensionName].params,y=vt.format({[Y.extensionName]:[p]});d.push(`Sec-WebSocket-Extensions: ${y}`),f._extensions=n}this.emit("headers",d,o),s.write(d.concat(`\r
3
+ var ur=Object.create;var wn=Object.defineProperty;var fr=Object.getOwnPropertyDescriptor;var pr=Object.getOwnPropertyNames;var mr=Object.getPrototypeOf,gr=Object.prototype.hasOwnProperty;var O=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(n,t)=>(typeof require<"u"?require:n)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var A=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var hr=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of pr(n))!gr.call(e,o)&&o!==t&&wn(e,o,{get:()=>n[o],enumerable:!(r=fr(n,o))||r.enumerable});return e};var fe=(e,n,t)=>(t=e!=null?ur(mr(e)):{},hr(n||!e||!e.__esModule?wn(t,"default",{value:e,enumerable:!0}):t,e));var F=A((Js,Pn)=>{"use strict";var kn=["nodebuffer","arraybuffer","fragments"],En=typeof Blob<"u";En&&kn.push("blob");Pn.exports={BINARY_TYPES:kn,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:En,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var pe=A(($s,Ee)=>{"use strict";var{EMPTY_BUFFER:yr}=F(),Ve=Buffer[Symbol.species];function _r(e,n){if(e.length===0)return yr;if(e.length===1)return e[0];let t=Buffer.allocUnsafe(n),r=0;for(let o=0;o<e.length;o++){let i=e[o];t.set(i,r),r+=i.length}return r<n?new Ve(t.buffer,t.byteOffset,r):t}function On(e,n,t,r,o){for(let i=0;i<o;i++)t[r+i]=e[i]^n[i&3]}function Cn(e,n){for(let t=0;t<e.length;t++)e[t]^=n[t&3]}function xr(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function Be(e){if(Be.readOnly=!0,Buffer.isBuffer(e))return e;let n;return e instanceof ArrayBuffer?n=new Ve(e):ArrayBuffer.isView(e)?n=new Ve(e.buffer,e.byteOffset,e.byteLength):(n=Buffer.from(e),Be.readOnly=!1),n}Ee.exports={concat:_r,mask:On,toArrayBuffer:xr,toBuffer:Be,unmask:Cn};if(!process.env.WS_NO_BUFFER_UTIL)try{let e=O("bufferutil");Ee.exports.mask=function(n,t,r,o,i){i<48?On(n,t,r,o,i):e.mask(n,t,r,o,i)},Ee.exports.unmask=function(n,t){n.length<32?Cn(n,t):e.unmask(n,t)}}catch{}});var An=A((Ds,In)=>{"use strict";var Tn=Symbol("kDone"),Ge=Symbol("kRun"),qe=class{constructor(n){this[Tn]=()=>{this.pending--,this[Ge]()},this.concurrency=n||1/0,this.jobs=[],this.pending=0}add(n){this.jobs.push(n),this[Ge]()}[Ge](){if(this.pending!==this.concurrency&&this.jobs.length){let n=this.jobs.shift();this.pending++,n(this[Tn])}}};In.exports=qe});var ge=A((Us,Nn)=>{"use strict";var me=O("zlib"),Rn=pe(),br=An(),{kStatusCode:Mn}=F(),vr=Buffer[Symbol.species],Sr=Buffer.from([0,0,255,255]),Oe=Symbol("permessage-deflate"),V=Symbol("total-length"),te=Symbol("callback"),q=Symbol("buffers"),re=Symbol("error"),Pe,We=class{constructor(n,t,r){if(this._maxPayload=r|0,this._options=n||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,!Pe){let o=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;Pe=new br(o)}}static get extensionName(){return"permessage-deflate"}offer(){let n={};return this._options.serverNoContextTakeover&&(n.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(n.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(n.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?n.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(n.client_max_window_bits=!0),n}accept(n){return n=this.normalizeParams(n),this.params=this._isServer?this.acceptAsServer(n):this.acceptAsClient(n),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let n=this._deflate[te];this._deflate.close(),this._deflate=null,n&&n(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(n){let t=this._options,r=n.find(o=>!(t.serverNoContextTakeover===!1&&o.server_no_context_takeover||o.server_max_window_bits&&(t.serverMaxWindowBits===!1||typeof t.serverMaxWindowBits=="number"&&t.serverMaxWindowBits>o.server_max_window_bits)||typeof t.clientMaxWindowBits=="number"&&!o.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(r.server_no_context_takeover=!0),t.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof t.serverMaxWindowBits=="number"&&(r.server_max_window_bits=t.serverMaxWindowBits),typeof t.clientMaxWindowBits=="number"?r.client_max_window_bits=t.clientMaxWindowBits:(r.client_max_window_bits===!0||t.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(n){let t=n[0];if(this._options.clientNoContextTakeover===!1&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!t.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(t.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return t}normalizeParams(n){return n.forEach(t=>{Object.keys(t).forEach(r=>{let o=t[r];if(o.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(o=o[0],r==="client_max_window_bits"){if(o!==!0){let i=+o;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${r}": ${o}`);o=i}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${o}`)}else if(r==="server_max_window_bits"){let i=+o;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${r}": ${o}`);o=i}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(o!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${o}`)}else throw new Error(`Unknown parameter "${r}"`);t[r]=o})}),n}decompress(n,t,r){Pe.add(o=>{this._decompress(n,t,(i,s)=>{o(),r(i,s)})})}compress(n,t,r){Pe.add(o=>{this._compress(n,t,(i,s)=>{o(),r(i,s)})})}_decompress(n,t,r){let o=this._isServer?"client":"server";if(!this._inflate){let i=`${o}_max_window_bits`,s=typeof this.params[i]!="number"?me.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=me.createInflateRaw({...this._options.zlibInflateOptions,windowBits:s}),this._inflate[Oe]=this,this._inflate[V]=0,this._inflate[q]=[],this._inflate.on("error",kr),this._inflate.on("data",jn)}this._inflate[te]=r,this._inflate.write(n),t&&this._inflate.write(Sr),this._inflate.flush(()=>{let i=this._inflate[re];if(i){this._inflate.close(),this._inflate=null,r(i);return}let s=Rn.concat(this._inflate[q],this._inflate[V]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[V]=0,this._inflate[q]=[],t&&this.params[`${o}_no_context_takeover`]&&this._inflate.reset()),r(null,s)})}_compress(n,t,r){let o=this._isServer?"server":"client";if(!this._deflate){let i=`${o}_max_window_bits`,s=typeof this.params[i]!="number"?me.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=me.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:s}),this._deflate[V]=0,this._deflate[q]=[],this._deflate.on("data",wr)}this._deflate[te]=r,this._deflate.write(n),this._deflate.flush(me.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=Rn.concat(this._deflate[q],this._deflate[V]);t&&(i=new vr(i.buffer,i.byteOffset,i.length-4)),this._deflate[te]=null,this._deflate[V]=0,this._deflate[q]=[],t&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),r(null,i)})}};Nn.exports=We;function wr(e){this[q].push(e),this[V]+=e.length}function jn(e){if(this[V]+=e.length,this[Oe]._maxPayload<1||this[V]<=this[Oe]._maxPayload){this[q].push(e);return}this[re]=new RangeError("Max payload size exceeded"),this[re].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[re][Mn]=1009,this.removeListener("data",jn),this.reset()}function kr(e){if(this[Oe]._inflate=null,this[re]){this[te](this[re]);return}e[Mn]=1007,this[te](e)}});var oe=A((zs,Ce)=>{"use strict";var{isUtf8:Ln}=O("buffer"),{hasBlob:Er}=F(),Pr=[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 Or(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function He(e){let n=e.length,t=0;for(;t<n;)if((e[t]&128)===0)t++;else if((e[t]&224)===192){if(t+1===n||(e[t+1]&192)!==128||(e[t]&254)===192)return!1;t+=2}else if((e[t]&240)===224){if(t+2>=n||(e[t+1]&192)!==128||(e[t+2]&192)!==128||e[t]===224&&(e[t+1]&224)===128||e[t]===237&&(e[t+1]&224)===160)return!1;t+=3}else if((e[t]&248)===240){if(t+3>=n||(e[t+1]&192)!==128||(e[t+2]&192)!==128||(e[t+3]&192)!==128||e[t]===240&&(e[t+1]&240)===128||e[t]===244&&e[t+1]>143||e[t]>244)return!1;t+=4}else return!1;return!0}function Cr(e){return Er&&typeof e=="object"&&typeof e.arrayBuffer=="function"&&typeof e.type=="string"&&typeof e.stream=="function"&&(e[Symbol.toStringTag]==="Blob"||e[Symbol.toStringTag]==="File")}Ce.exports={isBlob:Cr,isValidStatusCode:Or,isValidUTF8:He,tokenChars:Pr};if(Ln)Ce.exports.isValidUTF8=function(e){return e.length<24?He(e):Ln(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=O("utf-8-validate");Ce.exports.isValidUTF8=function(n){return n.length<32?He(n):e(n)}}catch{}});var Qe=A((Fs,Vn)=>{"use strict";var{Writable:Tr}=O("stream"),Jn=ge(),{BINARY_TYPES:Ir,EMPTY_BUFFER:$n,kStatusCode:Ar,kWebSocket:Rr}=F(),{concat:Ke,toArrayBuffer:Mr,unmask:jr}=pe(),{isValidStatusCode:Nr,isValidUTF8:Dn}=oe(),Te=Buffer[Symbol.species],j=0,Un=1,zn=2,Fn=3,Ze=4,Xe=5,Ie=6,Ye=class extends Tr{constructor(n={}){super(),this._allowSynchronousEvents=n.allowSynchronousEvents!==void 0?n.allowSynchronousEvents:!0,this._binaryType=n.binaryType||Ir[0],this._extensions=n.extensions||{},this._isServer=!!n.isServer,this._maxPayload=n.maxPayload|0,this._skipUTF8Validation=!!n.skipUTF8Validation,this[Rr]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=j}_write(n,t,r){if(this._opcode===8&&this._state==j)return r();this._bufferedBytes+=n.length,this._buffers.push(n),this.startLoop(r)}consume(n){if(this._bufferedBytes-=n,n===this._buffers[0].length)return this._buffers.shift();if(n<this._buffers[0].length){let r=this._buffers[0];return this._buffers[0]=new Te(r.buffer,r.byteOffset+n,r.length-n),new Te(r.buffer,r.byteOffset,n)}let t=Buffer.allocUnsafe(n);do{let r=this._buffers[0],o=t.length-n;n>=r.length?t.set(this._buffers.shift(),o):(t.set(new Uint8Array(r.buffer,r.byteOffset,n),o),this._buffers[0]=new Te(r.buffer,r.byteOffset+n,r.length-n)),n-=r.length}while(n>0);return t}startLoop(n){this._loop=!0;do switch(this._state){case j:this.getInfo(n);break;case Un:this.getPayloadLength16(n);break;case zn:this.getPayloadLength64(n);break;case Fn:this.getMask();break;case Ze:this.getData(n);break;case Xe:case Ie:this._loop=!1;return}while(this._loop);this._errored||n()}getInfo(n){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if((t[0]&48)!==0){let o=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");n(o);return}let r=(t[0]&64)===64;if(r&&!this._extensions[Jn.extensionName]){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");n(o);return}if(this._fin=(t[0]&128)===128,this._opcode=t[0]&15,this._payloadLength=t[1]&127,this._opcode===0){if(r){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");n(o);return}if(!this._fragmented){let o=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");n(o);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");n(o);return}this._compressed=r}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let o=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");n(o);return}if(r){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");n(o);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let o=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");n(o);return}}else{let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");n(o);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(t[1]&128)===128,this._isServer){if(!this._masked){let o=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");n(o);return}}else if(this._masked){let o=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");n(o);return}this._payloadLength===126?this._state=Un:this._payloadLength===127?this._state=zn:this.haveLength(n)}getPayloadLength16(n){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(n)}getPayloadLength64(n){if(this._bufferedBytes<8){this._loop=!1;return}let t=this.consume(8),r=t.readUInt32BE(0);if(r>Math.pow(2,21)-1){let o=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");n(o);return}this._payloadLength=r*Math.pow(2,32)+t.readUInt32BE(4),this.haveLength(n)}haveLength(n){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let t=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");n(t);return}this._masked?this._state=Fn:this._state=Ze}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Ze}getData(n){let t=$n;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&jr(t,this._mask)}if(this._opcode>7){this.controlMessage(t,n);return}if(this._compressed){this._state=Xe,this.decompress(t,n);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(n)}decompress(n,t){this._extensions[Jn.extensionName].decompress(n,this._fin,(o,i)=>{if(o)return t(o);if(i.length){if(this._messageLength+=i.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let s=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");t(s);return}this._fragments.push(i)}this.dataMessage(t),this._state===j&&this.startLoop(t)})}dataMessage(n){if(!this._fin){this._state=j;return}let t=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let o;this._binaryType==="nodebuffer"?o=Ke(r,t):this._binaryType==="arraybuffer"?o=Mr(Ke(r,t)):this._binaryType==="blob"?o=new Blob(r):o=r,this._allowSynchronousEvents?(this.emit("message",o,!0),this._state=j):(this._state=Ie,setImmediate(()=>{this.emit("message",o,!0),this._state=j,this.startLoop(n)}))}else{let o=Ke(r,t);if(!this._skipUTF8Validation&&!Dn(o)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");n(i);return}this._state===Xe||this._allowSynchronousEvents?(this.emit("message",o,!1),this._state=j):(this._state=Ie,setImmediate(()=>{this.emit("message",o,!1),this._state=j,this.startLoop(n)}))}}controlMessage(n,t){if(this._opcode===8){if(n.length===0)this._loop=!1,this.emit("conclude",1005,$n),this.end();else{let r=n.readUInt16BE(0);if(!Nr(r)){let i=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");t(i);return}let o=new Te(n.buffer,n.byteOffset+2,n.length-2);if(!this._skipUTF8Validation&&!Dn(o)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");t(i);return}this._loop=!1,this.emit("conclude",r,o),this.end()}this._state=j;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",n),this._state=j):(this._state=Ie,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",n),this._state=j,this.startLoop(t)}))}createError(n,t,r,o,i){this._loop=!1,this._errored=!0;let s=new n(r?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(s,this.createError),s.code=i,s[Ar]=o,s}};Vn.exports=Ye});var tn=A((Bs,qn)=>{"use strict";var{Duplex:Vs}=O("stream"),{randomFillSync:Lr}=O("crypto"),Bn=ge(),{EMPTY_BUFFER:Jr,kWebSocket:$r,NOOP:Dr}=F(),{isBlob:ie,isValidStatusCode:Ur}=oe(),{mask:Gn,toBuffer:K}=pe(),N=Symbol("kByteLength"),zr=Buffer.alloc(4),Ae=8*1024,Z,se=Ae,J=0,Fr=1,Vr=2,en=class e{constructor(n,t,r){this._extensions=t||{},r&&(this._generateMask=r,this._maskBuffer=Buffer.alloc(4)),this._socket=n,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=J,this.onerror=Dr,this[$r]=void 0}static frame(n,t){let r,o=!1,i=2,s=!1;t.mask&&(r=t.maskBuffer||zr,t.generateMask?t.generateMask(r):(se===Ae&&(Z===void 0&&(Z=Buffer.alloc(Ae)),Lr(Z,0,Ae),se=0),r[0]=Z[se++],r[1]=Z[se++],r[2]=Z[se++],r[3]=Z[se++]),s=(r[0]|r[1]|r[2]|r[3])===0,i=6);let a;typeof n=="string"?(!t.mask||s)&&t[N]!==void 0?a=t[N]:(n=Buffer.from(n),a=n.length):(a=n.length,o=t.mask&&t.readOnly&&!s);let c=a;a>=65536?(i+=8,c=127):a>125&&(i+=2,c=126);let d=Buffer.allocUnsafe(o?a+i:i);return d[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(d[0]|=64),d[1]=c,c===126?d.writeUInt16BE(a,2):c===127&&(d[2]=d[3]=0,d.writeUIntBE(a,4,6)),t.mask?(d[1]|=128,d[i-4]=r[0],d[i-3]=r[1],d[i-2]=r[2],d[i-1]=r[3],s?[d,n]:o?(Gn(n,r,d,i,a),[d]):(Gn(n,r,n,0,a),[d,n])):[d,n]}close(n,t,r,o){let i;if(n===void 0)i=Jr;else{if(typeof n!="number"||!Ur(n))throw new TypeError("First argument must be a valid error code number");if(t===void 0||!t.length)i=Buffer.allocUnsafe(2),i.writeUInt16BE(n,0);else{let a=Buffer.byteLength(t);if(a>123)throw new RangeError("The message must not be greater than 123 bytes");i=Buffer.allocUnsafe(2+a),i.writeUInt16BE(n,0),typeof t=="string"?i.write(t,2):i.set(t,2)}}let s={[N]:i.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==J?this.enqueue([this.dispatch,i,!1,s,o]):this.sendFrame(e.frame(i,s),o)}ping(n,t,r){let o,i;if(typeof n=="string"?(o=Buffer.byteLength(n),i=!1):ie(n)?(o=n.size,i=!1):(n=K(n),o=n.length,i=K.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let s={[N]:o,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};ie(n)?this._state!==J?this.enqueue([this.getBlobData,n,!1,s,r]):this.getBlobData(n,!1,s,r):this._state!==J?this.enqueue([this.dispatch,n,!1,s,r]):this.sendFrame(e.frame(n,s),r)}pong(n,t,r){let o,i;if(typeof n=="string"?(o=Buffer.byteLength(n),i=!1):ie(n)?(o=n.size,i=!1):(n=K(n),o=n.length,i=K.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let s={[N]:o,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};ie(n)?this._state!==J?this.enqueue([this.getBlobData,n,!1,s,r]):this.getBlobData(n,!1,s,r):this._state!==J?this.enqueue([this.dispatch,n,!1,s,r]):this.sendFrame(e.frame(n,s),r)}send(n,t,r){let o=this._extensions[Bn.extensionName],i=t.binary?2:1,s=t.compress,a,c;typeof n=="string"?(a=Buffer.byteLength(n),c=!1):ie(n)?(a=n.size,c=!1):(n=K(n),a=n.length,c=K.readOnly),this._firstFragment?(this._firstFragment=!1,s&&o&&o.params[o._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(s=a>=o._threshold),this._compress=s):(s=!1,i=0),t.fin&&(this._firstFragment=!0);let d={[N]:a,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:c,rsv1:s};ie(n)?this._state!==J?this.enqueue([this.getBlobData,n,this._compress,d,r]):this.getBlobData(n,this._compress,d,r):this._state!==J?this.enqueue([this.dispatch,n,this._compress,d,r]):this.dispatch(n,this._compress,d,r)}getBlobData(n,t,r,o){this._bufferedBytes+=r[N],this._state=Vr,n.arrayBuffer().then(i=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(nn,this,a,o);return}this._bufferedBytes-=r[N];let s=K(i);t?this.dispatch(s,t,r,o):(this._state=J,this.sendFrame(e.frame(s,r),o),this.dequeue())}).catch(i=>{process.nextTick(Br,this,i,o)})}dispatch(n,t,r,o){if(!t){this.sendFrame(e.frame(n,r),o);return}let i=this._extensions[Bn.extensionName];this._bufferedBytes+=r[N],this._state=Fr,i.compress(n,r.fin,(s,a)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");nn(this,c,o);return}this._bufferedBytes-=r[N],this._state=J,r.readOnly=!1,this.sendFrame(e.frame(a,r),o),this.dequeue()})}dequeue(){for(;this._state===J&&this._queue.length;){let n=this._queue.shift();this._bufferedBytes-=n[3][N],Reflect.apply(n[0],this,n.slice(1))}}enqueue(n){this._bufferedBytes+=n[3][N],this._queue.push(n)}sendFrame(n,t){n.length===2?(this._socket.cork(),this._socket.write(n[0]),this._socket.write(n[1],t),this._socket.uncork()):this._socket.write(n[0],t)}};qn.exports=en;function nn(e,n,t){typeof t=="function"&&t(n);for(let r=0;r<e._queue.length;r++){let o=e._queue[r],i=o[o.length-1];typeof i=="function"&&i(n)}}function Br(e,n,t){nn(e,n,t),e.onerror(n)}});var nt=A((Gs,et)=>{"use strict";var{kForOnEventAttribute:he,kListener:rn}=F(),Wn=Symbol("kCode"),Hn=Symbol("kData"),Kn=Symbol("kError"),Zn=Symbol("kMessage"),Xn=Symbol("kReason"),ae=Symbol("kTarget"),Yn=Symbol("kType"),Qn=Symbol("kWasClean"),B=class{constructor(n){this[ae]=null,this[Yn]=n}get target(){return this[ae]}get type(){return this[Yn]}};Object.defineProperty(B.prototype,"target",{enumerable:!0});Object.defineProperty(B.prototype,"type",{enumerable:!0});var X=class extends B{constructor(n,t={}){super(n),this[Wn]=t.code===void 0?0:t.code,this[Xn]=t.reason===void 0?"":t.reason,this[Qn]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[Wn]}get reason(){return this[Xn]}get wasClean(){return this[Qn]}};Object.defineProperty(X.prototype,"code",{enumerable:!0});Object.defineProperty(X.prototype,"reason",{enumerable:!0});Object.defineProperty(X.prototype,"wasClean",{enumerable:!0});var de=class extends B{constructor(n,t={}){super(n),this[Kn]=t.error===void 0?null:t.error,this[Zn]=t.message===void 0?"":t.message}get error(){return this[Kn]}get message(){return this[Zn]}};Object.defineProperty(de.prototype,"error",{enumerable:!0});Object.defineProperty(de.prototype,"message",{enumerable:!0});var ye=class extends B{constructor(n,t={}){super(n),this[Hn]=t.data===void 0?null:t.data}get data(){return this[Hn]}};Object.defineProperty(ye.prototype,"data",{enumerable:!0});var Gr={addEventListener(e,n,t={}){for(let o of this.listeners(e))if(!t[he]&&o[rn]===n&&!o[he])return;let r;if(e==="message")r=function(i,s){let a=new ye("message",{data:s?i:i.toString()});a[ae]=this,Re(n,this,a)};else if(e==="close")r=function(i,s){let a=new X("close",{code:i,reason:s.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[ae]=this,Re(n,this,a)};else if(e==="error")r=function(i){let s=new de("error",{error:i,message:i.message});s[ae]=this,Re(n,this,s)};else if(e==="open")r=function(){let i=new B("open");i[ae]=this,Re(n,this,i)};else return;r[he]=!!t[he],r[rn]=n,t.once?this.once(e,r):this.on(e,r)},removeEventListener(e,n){for(let t of this.listeners(e))if(t[rn]===n&&!t[he]){this.removeListener(e,t);break}}};et.exports={CloseEvent:X,ErrorEvent:de,Event:B,EventTarget:Gr,MessageEvent:ye};function Re(e,n,t){typeof e=="object"&&e.handleEvent?e.handleEvent.call(e,t):e.call(n,t)}});var on=A((qs,tt)=>{"use strict";var{tokenChars:_e}=oe();function D(e,n,t){e[n]===void 0?e[n]=[t]:e[n].push(t)}function qr(e){let n=Object.create(null),t=Object.create(null),r=!1,o=!1,i=!1,s,a,c=-1,d=-1,f=-1,p=0;for(;p<e.length;p++)if(d=e.charCodeAt(p),s===void 0)if(f===-1&&_e[d]===1)c===-1&&(c=p);else if(p!==0&&(d===32||d===9))f===-1&&c!==-1&&(f=p);else if(d===59||d===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let u=e.slice(c,f);d===44?(D(n,u,t),t=Object.create(null)):s=u,c=f=-1}else throw new SyntaxError(`Unexpected character at index ${p}`);else if(a===void 0)if(f===-1&&_e[d]===1)c===-1&&(c=p);else if(d===32||d===9)f===-1&&c!==-1&&(f=p);else if(d===59||d===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p),D(t,e.slice(c,f),!0),d===44&&(D(n,s,t),t=Object.create(null),s=void 0),c=f=-1}else if(d===61&&c!==-1&&f===-1)a=e.slice(c,p),c=f=-1;else throw new SyntaxError(`Unexpected character at index ${p}`);else if(o){if(_e[d]!==1)throw new SyntaxError(`Unexpected character at index ${p}`);c===-1?c=p:r||(r=!0),o=!1}else if(i)if(_e[d]===1)c===-1&&(c=p);else if(d===34&&c!==-1)i=!1,f=p;else if(d===92)o=!0;else throw new SyntaxError(`Unexpected character at index ${p}`);else if(d===34&&e.charCodeAt(p-1)===61)i=!0;else if(f===-1&&_e[d]===1)c===-1&&(c=p);else if(c!==-1&&(d===32||d===9))f===-1&&(f=p);else if(d===59||d===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${p}`);f===-1&&(f=p);let u=e.slice(c,f);r&&(u=u.replace(/\\/g,""),r=!1),D(t,a,u),d===44&&(D(n,s,t),t=Object.create(null),s=void 0),a=void 0,c=f=-1}else throw new SyntaxError(`Unexpected character at index ${p}`);if(c===-1||i||d===32||d===9)throw new SyntaxError("Unexpected end of input");f===-1&&(f=p);let y=e.slice(c,f);return s===void 0?D(n,y,t):(a===void 0?D(t,y,!0):r?D(t,a,y.replace(/\\/g,"")):D(t,a,y),D(n,s,t)),n}function Wr(e){return Object.keys(e).map(n=>{let t=e[n];return Array.isArray(t)||(t=[t]),t.map(r=>[n].concat(Object.keys(r).map(o=>{let i=r[o];return Array.isArray(i)||(i=[i]),i.map(s=>s===!0?o:`${o}=${s}`).join("; ")})).join("; ")).join(", ")}).join(", ")}tt.exports={format:Wr,parse:qr}});var Le=A((Ks,mt)=>{"use strict";var Hr=O("events"),Kr=O("https"),Zr=O("http"),it=O("net"),Xr=O("tls"),{randomBytes:Yr,createHash:Qr}=O("crypto"),{Duplex:Ws,Readable:Hs}=O("stream"),{URL:sn}=O("url"),W=ge(),eo=Qe(),no=tn(),{isBlob:to}=oe(),{BINARY_TYPES:rt,EMPTY_BUFFER:Me,GUID:ro,kForOnEventAttribute:an,kListener:oo,kStatusCode:io,kWebSocket:C,NOOP:st}=F(),{EventTarget:{addEventListener:so,removeEventListener:ao}}=nt(),{format:co,parse:lo}=on(),{toBuffer:uo}=pe(),fo=30*1e3,at=Symbol("kAborted"),dn=[8,13],G=["CONNECTING","OPEN","CLOSING","CLOSED"],po=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,E=class e extends Hr{constructor(n,t,r){super(),this._binaryType=rt[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Me,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,n!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,t===void 0?t=[]:Array.isArray(t)||(typeof t=="object"&&t!==null?(r=t,t=[]):t=[t]),dt(this,n,t,r)):(this._autoPong=r.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(n){rt.includes(n)&&(this._binaryType=n,this._receiver&&(this._receiver._binaryType=n))}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(n,t,r){let o=new eo({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),i=new no(n,this._extensions,r.generateMask);this._receiver=o,this._sender=i,this._socket=n,o[C]=this,i[C]=this,n[C]=this,o.on("conclude",ho),o.on("drain",yo),o.on("error",_o),o.on("message",xo),o.on("ping",bo),o.on("pong",vo),i.onerror=So,n.setTimeout&&n.setTimeout(0),n.setNoDelay&&n.setNoDelay(),t.length>0&&n.unshift(t),n.on("close",ut),n.on("data",Ne),n.on("end",ft),n.on("error",pt),this._readyState=e.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[W.extensionName]&&this._extensions[W.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(n,t){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){R(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(n,t,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),lt(this)}}pause(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!0,this._socket.pause())}ping(n,t,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof n=="function"?(r=n,n=t=void 0):typeof t=="function"&&(r=t,t=void 0),typeof n=="number"&&(n=n.toString()),this.readyState!==e.OPEN){cn(this,n,r);return}t===void 0&&(t=!this._isServer),this._sender.ping(n||Me,t,r)}pong(n,t,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof n=="function"?(r=n,n=t=void 0):typeof t=="function"&&(r=t,t=void 0),typeof n=="number"&&(n=n.toString()),this.readyState!==e.OPEN){cn(this,n,r);return}t===void 0&&(t=!this._isServer),this._sender.pong(n||Me,t,r)}resume(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(n,t,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"&&(r=t,t={}),typeof n=="number"&&(n=n.toString()),this.readyState!==e.OPEN){cn(this,n,r);return}let o={binary:typeof n!="string",mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[W.extensionName]||(o.compress=!1),this._sender.send(n||Me,o,r)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){R(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(E,"CONNECTING",{enumerable:!0,value:G.indexOf("CONNECTING")});Object.defineProperty(E.prototype,"CONNECTING",{enumerable:!0,value:G.indexOf("CONNECTING")});Object.defineProperty(E,"OPEN",{enumerable:!0,value:G.indexOf("OPEN")});Object.defineProperty(E.prototype,"OPEN",{enumerable:!0,value:G.indexOf("OPEN")});Object.defineProperty(E,"CLOSING",{enumerable:!0,value:G.indexOf("CLOSING")});Object.defineProperty(E.prototype,"CLOSING",{enumerable:!0,value:G.indexOf("CLOSING")});Object.defineProperty(E,"CLOSED",{enumerable:!0,value:G.indexOf("CLOSED")});Object.defineProperty(E.prototype,"CLOSED",{enumerable:!0,value:G.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(e=>{Object.defineProperty(E.prototype,e,{enumerable:!0})});["open","error","close","message"].forEach(e=>{Object.defineProperty(E.prototype,`on${e}`,{enumerable:!0,get(){for(let n of this.listeners(e))if(n[an])return n[oo];return null},set(n){for(let t of this.listeners(e))if(t[an]){this.removeListener(e,t);break}typeof n=="function"&&this.addEventListener(e,n,{[an]:!0})}})});E.prototype.addEventListener=so;E.prototype.removeEventListener=ao;mt.exports=E;function dt(e,n,t,r){let o={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:dn[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(e._autoPong=o.autoPong,!dn.includes(o.protocolVersion))throw new RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${dn.join(", ")})`);let i;if(n instanceof sn)i=n;else try{i=new sn(n)}catch{throw new SyntaxError(`Invalid URL: ${n}`)}i.protocol==="http:"?i.protocol="ws:":i.protocol==="https:"&&(i.protocol="wss:"),e._url=i.href;let s=i.protocol==="wss:",a=i.protocol==="ws+unix:",c;if(i.protocol!=="ws:"&&!s&&!a?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!i.pathname?c="The URL's pathname is empty":i.hash&&(c="The URL contains a fragment identifier"),c){let l=new SyntaxError(c);if(e._redirects===0)throw l;je(e,l);return}let d=s?443:80,f=Yr(16).toString("base64"),p=s?Kr.request:Zr.request,y=new Set,u;if(o.createConnection=o.createConnection||(s?go:mo),o.defaultPort=o.defaultPort||d,o.port=i.port||d,o.host=i.hostname.startsWith("[")?i.hostname.slice(1,-1):i.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":f,Connection:"Upgrade",Upgrade:"websocket"},o.path=i.pathname+i.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(u=new W(o.perMessageDeflate!==!0?o.perMessageDeflate:{},!1,o.maxPayload),o.headers["Sec-WebSocket-Extensions"]=co({[W.extensionName]:u.offer()})),t.length){for(let l of t){if(typeof l!="string"||!po.test(l)||y.has(l))throw new SyntaxError("An invalid or duplicated subprotocol was specified");y.add(l)}o.headers["Sec-WebSocket-Protocol"]=t.join(",")}if(o.origin&&(o.protocolVersion<13?o.headers["Sec-WebSocket-Origin"]=o.origin:o.headers.Origin=o.origin),(i.username||i.password)&&(o.auth=`${i.username}:${i.password}`),a){let l=o.path.split(":");o.socketPath=l[0],o.path=l[1]}let m;if(o.followRedirects){if(e._redirects===0){e._originalIpc=a,e._originalSecure=s,e._originalHostOrSocketPath=a?o.socketPath:i.host;let l=r&&r.headers;if(r={...r,headers:{}},l)for(let[x,P]of Object.entries(l))r.headers[x.toLowerCase()]=P}else if(e.listenerCount("redirect")===0){let l=a?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:i.host===e._originalHostOrSocketPath;(!l||e._originalSecure&&!s)&&(delete o.headers.authorization,delete o.headers.cookie,l||delete o.headers.host,o.auth=void 0)}o.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(o.auth).toString("base64")),m=e._req=p(o),e._redirects&&e.emit("redirect",e.url,m)}else m=e._req=p(o);o.timeout&&m.on("timeout",()=>{R(e,m,"Opening handshake has timed out")}),m.on("error",l=>{m===null||m[at]||(m=e._req=null,je(e,l))}),m.on("response",l=>{let x=l.headers.location,P=l.statusCode;if(x&&o.followRedirects&&P>=300&&P<400){if(++e._redirects>o.maxRedirects){R(e,m,"Maximum redirects exceeded");return}m.abort();let M;try{M=new sn(x,n)}catch{let v=new SyntaxError(`Invalid URL: ${x}`);je(e,v);return}dt(e,M,t,r)}else e.emit("unexpected-response",m,l)||R(e,m,`Unexpected server response: ${l.statusCode}`)}),m.on("upgrade",(l,x,P)=>{if(e.emit("upgrade",l),e.readyState!==E.CONNECTING)return;m=e._req=null;let M=l.headers.upgrade;if(M===void 0||M.toLowerCase()!=="websocket"){R(e,x,"Invalid Upgrade header");return}let L=Qr("sha1").update(f+ro).digest("base64");if(l.headers["sec-websocket-accept"]!==L){R(e,x,"Invalid Sec-WebSocket-Accept header");return}let v=l.headers["sec-websocket-protocol"],h;if(v!==void 0?y.size?y.has(v)||(h="Server sent an invalid subprotocol"):h="Server sent a subprotocol but none was requested":y.size&&(h="Server sent no subprotocol"),h){R(e,x,h);return}v&&(e._protocol=v);let S=l.headers["sec-websocket-extensions"];if(S!==void 0){if(!u){R(e,x,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let k;try{k=lo(S)}catch{R(e,x,"Invalid Sec-WebSocket-Extensions header");return}let b=Object.keys(k);if(b.length!==1||b[0]!==W.extensionName){R(e,x,"Server indicated an extension that was not requested");return}try{u.accept(k[W.extensionName])}catch{R(e,x,"Invalid Sec-WebSocket-Extensions header");return}e._extensions[W.extensionName]=u}e.setSocket(x,P,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(m,e):m.end()}function je(e,n){e._readyState=E.CLOSING,e._errorEmitted=!0,e.emit("error",n),e.emitClose()}function mo(e){return e.path=e.socketPath,it.connect(e)}function go(e){return e.path=void 0,!e.servername&&e.servername!==""&&(e.servername=it.isIP(e.host)?"":e.host),Xr.connect(e)}function R(e,n,t){e._readyState=E.CLOSING;let r=new Error(t);Error.captureStackTrace(r,R),n.setHeader?(n[at]=!0,n.abort(),n.socket&&!n.socket.destroyed&&n.socket.destroy(),process.nextTick(je,e,r)):(n.destroy(r),n.once("error",e.emit.bind(e,"error")),n.once("close",e.emitClose.bind(e)))}function cn(e,n,t){if(n){let r=to(n)?n.size:uo(n).length;e._socket?e._sender._bufferedBytes+=r:e._bufferedAmount+=r}if(t){let r=new Error(`WebSocket is not open: readyState ${e.readyState} (${G[e.readyState]})`);process.nextTick(t,r)}}function ho(e,n){let t=this[C];t._closeFrameReceived=!0,t._closeMessage=n,t._closeCode=e,t._socket[C]!==void 0&&(t._socket.removeListener("data",Ne),process.nextTick(ct,t._socket),e===1005?t.close():t.close(e,n))}function yo(){let e=this[C];e.isPaused||e._socket.resume()}function _o(e){let n=this[C];n._socket[C]!==void 0&&(n._socket.removeListener("data",Ne),process.nextTick(ct,n._socket),n.close(e[io])),n._errorEmitted||(n._errorEmitted=!0,n.emit("error",e))}function ot(){this[C].emitClose()}function xo(e,n){this[C].emit("message",e,n)}function bo(e){let n=this[C];n._autoPong&&n.pong(e,!this._isServer,st),n.emit("ping",e)}function vo(e){this[C].emit("pong",e)}function ct(e){e.resume()}function So(e){let n=this[C];n.readyState!==E.CLOSED&&(n.readyState===E.OPEN&&(n._readyState=E.CLOSING,lt(n)),this._socket.end(),n._errorEmitted||(n._errorEmitted=!0,n.emit("error",e)))}function lt(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),fo)}function ut(){let e=this[C];this.removeListener("close",ut),this.removeListener("data",Ne),this.removeListener("end",ft),e._readyState=E.CLOSING;let n;!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&(n=e._socket.read())!==null&&e._receiver.write(n),e._receiver.end(),this[C]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",ot),e._receiver.on("finish",ot))}function Ne(e){this[C]._receiver.write(e)||this.pause()}function ft(){let e=this[C];e._readyState=E.CLOSING,e._receiver.end(),this.end()}function pt(){let e=this[C];this.removeListener("error",pt),this.on("error",st),e&&(e._readyState=E.CLOSING,this.destroy())}});var _t=A((Xs,yt)=>{"use strict";var Zs=Le(),{Duplex:wo}=O("stream");function gt(e){e.emit("close")}function ko(){!this.destroyed&&this._writableState.finished&&this.destroy()}function ht(e){this.removeListener("error",ht),this.destroy(),this.listenerCount("error")===0&&this.emit("error",e)}function Eo(e,n){let t=!0,r=new wo({...n,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",function(i,s){let a=!s&&r._readableState.objectMode?i.toString():i;r.push(a)||e.pause()}),e.once("error",function(i){r.destroyed||(t=!1,r.destroy(i))}),e.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(o,i){if(e.readyState===e.CLOSED){i(o),process.nextTick(gt,r);return}let s=!1;e.once("error",function(c){s=!0,i(c)}),e.once("close",function(){s||i(o),process.nextTick(gt,r)}),t&&e.terminate()},r._final=function(o){if(e.readyState===e.CONNECTING){e.once("open",function(){r._final(o)});return}e._socket!==null&&(e._socket._writableState.finished?(o(),r._readableState.endEmitted&&r.destroy()):(e._socket.once("finish",function(){o()}),e.close()))},r._read=function(){e.isPaused&&e.resume()},r._write=function(o,i,s){if(e.readyState===e.CONNECTING){e.once("open",function(){r._write(o,i,s)});return}e.send(o,s)},r.on("end",ko),r.on("error",ht),r}yt.exports=Eo});var bt=A((Ys,xt)=>{"use strict";var{tokenChars:Po}=oe();function Oo(e){let n=new Set,t=-1,r=-1,o=0;for(o;o<e.length;o++){let s=e.charCodeAt(o);if(r===-1&&Po[s]===1)t===-1&&(t=o);else if(o!==0&&(s===32||s===9))r===-1&&t!==-1&&(r=o);else if(s===44){if(t===-1)throw new SyntaxError(`Unexpected character at index ${o}`);r===-1&&(r=o);let a=e.slice(t,r);if(n.has(a))throw new SyntaxError(`The "${a}" subprotocol is duplicated`);n.add(a),t=r=-1}else throw new SyntaxError(`Unexpected character at index ${o}`)}if(t===-1||r!==-1)throw new SyntaxError("Unexpected end of input");let i=e.slice(t,o);if(n.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);return n.add(i),n}xt.exports={parse:Oo}});var Ot=A((ea,Pt)=>{"use strict";var Co=O("events"),Je=O("http"),{Duplex:Qs}=O("stream"),{createHash:To}=O("crypto"),vt=on(),Y=ge(),Io=bt(),Ao=Le(),{GUID:Ro,kWebSocket:Mo}=F(),jo=/^[+/0-9A-Za-z]{22}==$/,St=0,wt=1,Et=2,ln=class extends Co{constructor(n,t){if(super(),n={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Ao,...n},n.port==null&&!n.server&&!n.noServer||n.port!=null&&(n.server||n.noServer)||n.server&&n.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(n.port!=null?(this._server=Je.createServer((r,o)=>{let i=Je.STATUS_CODES[426];o.writeHead(426,{"Content-Length":i.length,"Content-Type":"text/plain"}),o.end(i)}),this._server.listen(n.port,n.host,n.backlog,t)):n.server&&(this._server=n.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=No(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(o,i,s)=>{this.handleUpgrade(o,i,s,r)}})}n.perMessageDeflate===!0&&(n.perMessageDeflate={}),n.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=n,this._state=St}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(n){if(this._state===Et){n&&this.once("close",()=>{n(new Error("The server is not running"))}),process.nextTick(xe,this);return}if(n&&this.once("close",n),this._state!==wt)if(this._state=wt,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(xe,this):process.nextTick(xe,this);else{let t=this._server;this._removeListeners(),this._removeListeners=this._server=null,t.close(()=>{xe(this)})}}shouldHandle(n){if(this.options.path){let t=n.url.indexOf("?");if((t!==-1?n.url.slice(0,t):n.url)!==this.options.path)return!1}return!0}handleUpgrade(n,t,r,o){t.on("error",kt);let i=n.headers["sec-websocket-key"],s=n.headers.upgrade,a=+n.headers["sec-websocket-version"];if(n.method!=="GET"){Q(this,n,t,405,"Invalid HTTP method");return}if(s===void 0||s.toLowerCase()!=="websocket"){Q(this,n,t,400,"Invalid Upgrade header");return}if(i===void 0||!jo.test(i)){Q(this,n,t,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){Q(this,n,t,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(n)){be(t,400);return}let c=n.headers["sec-websocket-protocol"],d=new Set;if(c!==void 0)try{d=Io.parse(c)}catch{Q(this,n,t,400,"Invalid Sec-WebSocket-Protocol header");return}let f=n.headers["sec-websocket-extensions"],p={};if(this.options.perMessageDeflate&&f!==void 0){let y=new Y(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let u=vt.parse(f);u[Y.extensionName]&&(y.accept(u[Y.extensionName]),p[Y.extensionName]=y)}catch{Q(this,n,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let y={origin:n.headers[`${a===8?"sec-websocket-origin":"origin"}`],secure:!!(n.socket.authorized||n.socket.encrypted),req:n};if(this.options.verifyClient.length===2){this.options.verifyClient(y,(u,m,l,x)=>{if(!u)return be(t,m||401,l,x);this.completeUpgrade(p,i,d,n,t,r,o)});return}if(!this.options.verifyClient(y))return be(t,401)}this.completeUpgrade(p,i,d,n,t,r,o)}completeUpgrade(n,t,r,o,i,s,a){if(!i.readable||!i.writable)return i.destroy();if(i[Mo])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>St)return be(i,503);let d=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${To("sha1").update(t+Ro).digest("base64")}`],f=new this.options.WebSocket(null,void 0,this.options);if(r.size){let p=this.options.handleProtocols?this.options.handleProtocols(r,o):r.values().next().value;p&&(d.push(`Sec-WebSocket-Protocol: ${p}`),f._protocol=p)}if(n[Y.extensionName]){let p=n[Y.extensionName].params,y=vt.format({[Y.extensionName]:[p]});d.push(`Sec-WebSocket-Extensions: ${y}`),f._extensions=n}this.emit("headers",d,o),i.write(d.concat(`\r
4
4
  `).join(`\r
5
- `)),s.removeListener("error",kt),f.setSocket(s,i,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(f),f.on("close",()=>{this.clients.delete(f),this._shouldEmitClose&&!this.clients.size&&process.nextTick(xe,this)})),a(f,o)}};Et.exports=ln;function No(e,n){for(let t of Object.keys(n))e.on(t,n[t]);return function(){for(let r of Object.keys(n))e.removeListener(r,n[r])}}function xe(e){e._state=Ct,e.emit("close")}function kt(){this.destroy()}function be(e,n,t,r){t=t||Je.STATUS_CODES[n],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(t),...r},e.once("finish",e.destroy),e.end(`HTTP/1.1 ${n} ${Je.STATUS_CODES[n]}\r
5
+ `)),i.removeListener("error",kt),f.setSocket(i,s,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(f),f.on("close",()=>{this.clients.delete(f),this._shouldEmitClose&&!this.clients.size&&process.nextTick(xe,this)})),a(f,o)}};Pt.exports=ln;function No(e,n){for(let t of Object.keys(n))e.on(t,n[t]);return function(){for(let r of Object.keys(n))e.removeListener(r,n[r])}}function xe(e){e._state=Et,e.emit("close")}function kt(){this.destroy()}function be(e,n,t,r){t=t||Je.STATUS_CODES[n],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(t),...r},e.once("finish",e.destroy),e.end(`HTTP/1.1 ${n} ${Je.STATUS_CODES[n]}\r
6
6
  `+Object.keys(r).map(o=>`${o}: ${r[o]}`).join(`\r
7
7
  `)+`\r
8
8
  \r
9
- `+t)}function Q(e,n,t,r,o,s){if(e.listenerCount("wsClientError")){let i=new Error(o);Error.captureStackTrace(i,Q),e.emit("wsClientError",i,t,n)}else be(t,r,o,s)}});import{spawn as ei}from"node:child_process";import{appendFileSync as ni,rmSync as or,writeFileSync as ke,mkdirSync as ue,chmodSync as rr,readFileSync as ti,readdirSync as ri,statSync as oi,unlinkSync as si}from"node:fs";import{dirname as sr,join as Fe}from"node:path";var Lo=fe(_t(),1),Jo=fe(Qe(),1),$o=fe(tn(),1),un=fe(Le(),1),Uo=fe(Ot(),1);function $(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function I(e){return e!==void 0&&$(e)?e:void 0}function fn(e){return Array.isArray(e)?e:void 0}function _(e){return typeof e=="string"&&e.trim()!==""?e.trim():void 0}import{appendFileSync as qo,openSync as fa}from"node:fs";import{homedir as At}from"node:os";import{dirname as Bo,join as Mt,resolve as Wo,sep as Ko}from"node:path";import{mkdirSync as Ho}from"node:fs";var D={_generated:"GENERATED by scripts/naming_dual_emit_codegen.mjs from scripts/naming_canonical_key_map.json (N2.2 dual-emit, D46) - DO NOT EDIT; run: node scripts/naming_dual_emit_codegen.mjs --write",events:[["codex.agent_turn_narration_only_no_reply","harness.agent_turn_narration_only_no_reply"],["codex.cost_cap_402_seen","harness.cost_cap_402_seen"],["codex.edge_blocked_captured","harness.edge_blocked_captured"],["codex.empty_turn_auto_retry_suppressed_cost_cap","harness.empty_turn_auto_retry_suppressed_cost_cap"],["codex.empty_turn_loop_guard_tripped","harness.empty_turn_loop_guard_tripped"],["codex.error_without_http_status_captured","harness.error_without_http_status_captured"],["codex.mid_stream_stall_auto_resume_flagged","harness.mid_stream_stall_auto_resume_flagged"],["codex.mid_stream_stall_fresh_session_resume","harness.mid_stream_stall_fresh_session_resume"],["codex.mid_stream_stall_fresh_session_resume_failed","harness.mid_stream_stall_fresh_session_resume_failed"],["codex.mid_stream_stall_fresh_session_resume_flagged","harness.mid_stream_stall_fresh_session_resume_flagged"],["codex.mid_stream_stall_resume_suppressed_rate_limit","harness.mid_stream_stall_resume_suppressed_rate_limit"],["codex.mid_stream_stall_second_stall_after_resume","harness.mid_stream_stall_second_stall_after_resume"],["codex.pre_first_byte_stall_auto_retry_flagged","harness.pre_first_byte_stall_auto_retry_flagged"],["codex.pre_first_byte_stall_retry_suppressed_cost_cap","harness.pre_first_byte_stall_retry_suppressed_cost_cap"],["codex.provider_outage_flagged_captured","harness.provider_outage_flagged_captured"],["codex.reasoning_loop_breaker_tripped","harness.reasoning_loop_breaker_tripped"],["codex.tool_fatal_captured","harness.tool_fatal_captured"],["codex.turn_completed","job.turn_completed"],["codex.turn_completed_with_protocol_failure","job.turn_completed_with_protocol_failure"],["codex.turn_completed_with_unsupported_tool_call_ignored","job.turn_completed_with_unsupported_tool_call_ignored"],["codex.turn_completed_without_assistant_output","job.turn_completed_without_assistant_output"],["codex.turn_forward_failed","job.turn_forward_failed"],["codex.upstream_error_captured","harness.upstream_error_captured"],["codex.upstream_rejection_captured","harness.upstream_rejection_captured"],["codex.upstream_turn_error_captured","harness.upstream_turn_error_captured"],["kandan.chat_event","linzumi.chat_event"],["kandan.chat_event_abandoned","linzumi.chat_event_abandoned"],["kandan.chat_event_failed","linzumi.chat_event_failed"],["kandan.chat_event_failure_cleared","linzumi.chat_event_failure_cleared"],["kandan.claude_code_interrupt_state_push_failed","linzumi.claude_code_interrupt_state_push_failed"],["kandan.claude_code_stop_state_push_failed","linzumi.claude_code_stop_state_push_failed"],["kandan.claude_code_typing_heartbeat_failed","linzumi.claude_code_typing_heartbeat_failed"],["kandan.claude_code_typing_start_wait_timeout","linzumi.claude_code_typing_start_wait_timeout"],["kandan.claude_code_typing_stop_failed","linzumi.claude_code_typing_stop_failed"],["kandan.claude_code_user_input_abort_publish_failed","linzumi.claude_code_user_input_abort_publish_failed"],["kandan.claude_code_user_question_completed_publish_failed","linzumi.claude_code_user_question_completed_publish_failed"],["kandan.codex_command_output_forwarded","linzumi.codex_command_output_forwarded"],["kandan.codex_delta_forwarded","linzumi.codex_delta_forwarded"],["kandan.codex_file_change_forwarded","linzumi.codex_file_change_forwarded"],["kandan.codex_notification_push_failed","linzumi.codex_notification_push_failed"],["kandan.codex_output_forwarded","linzumi.codex_output_forwarded"],["kandan.codex_reasoning_delta_forwarded","linzumi.codex_reasoning_delta_forwarded"],["kandan.codex_web_search_progress_forwarded","linzumi.codex_web_search_progress_forwarded"],["kandan.connection_force_reconnect","linzumi.connection_force_reconnect"],["kandan.connection_force_reconnect_dispatched","linzumi.connection_force_reconnect_dispatched"],["kandan.connection_hard_reset","linzumi.connection_hard_reset"],["kandan.connection_hard_reset_exhausted","linzumi.connection_hard_reset_exhausted"],["kandan.connection_recovered","linzumi.connection_recovered"],["kandan.connection_stale","linzumi.connection_stale"],["kandan.connection_unrecoverable","linzumi.connection_unrecoverable"],["kandan.control","linzumi.control"],["kandan.control_ack_withheld_on_failure","linzumi.control_ack_withheld_on_failure"],["kandan.control_epoch_changed","linzumi.control_epoch_changed"],["kandan.control_handler_threw","linzumi.control_handler_threw"],["kandan.control_ignored","linzumi.control_ignored"],["kandan.control_response_push_failed","linzumi.control_response_push_failed"],["kandan.failed_seq_overflow","linzumi.failed_seq_overflow"],["kandan.forward_port_revoked_push_failed","linzumi.forward_port_revoked_push_failed"],["kandan.forward_response","linzumi.forward_response"],["kandan.forward_response_push_failed","linzumi.forward_response_push_failed"],["kandan.forward_tunnel_error","linzumi.forward_tunnel_error"],["kandan.forward_tunnel_open_failed","linzumi.forward_tunnel_open_failed"],["kandan.heartbeat_push_failed","linzumi.heartbeat_push_failed"],["kandan.local_editor_initial_status_failed","linzumi.local_editor_initial_status_failed"],["kandan.local_editor_status_push_failed","linzumi.local_editor_status_push_failed"],["kandan.message_duplicate_ignored","linzumi.message_duplicate_ignored"],["kandan.message_ignored","linzumi.message_ignored"],["kandan.message_queued","linzumi.message_queued"],["kandan.message_spawn_on_miss","linzumi.message_spawn_on_miss"],["kandan.message_spawn_on_miss_failed","linzumi.message_spawn_on_miss_failed"],["kandan.message_state_refresh_failed","linzumi.message_state_refresh_failed"],["kandan.optional_push_failed","linzumi.optional_push_failed"],["kandan.post_stop_queue_drain_failed","linzumi.post_stop_queue_drain_failed"],["kandan.queue_drain_blocked","linzumi.queue_drain_blocked"],["kandan.queue_drain_dead_worker_fail_publish_failed","linzumi.queue_drain_dead_worker_fail_publish_failed"],["kandan.queue_drain_dead_worker_rebuild","linzumi.queue_drain_dead_worker_rebuild"],["kandan.queue_drain_dead_worker_rebuild_exhausted","linzumi.queue_drain_dead_worker_rebuild_exhausted"],["kandan.queue_drain_dead_worker_rebuild_failed","linzumi.queue_drain_dead_worker_rebuild_failed"],["kandan.reconnect_handling_failed","linzumi.reconnect_handling_failed"],["kandan.reconnect_thread_context_fetch_failed","linzumi.reconnect_thread_context_fetch_failed"],["kandan.reconnect_thread_cwd_failed_state_push_failed","linzumi.reconnect_thread_cwd_failed_state_push_failed"],["kandan.reconnect_thread_failed","linzumi.reconnect_thread_failed"],["kandan.reconnect_thread_processing_state_push_failed","linzumi.reconnect_thread_processing_state_push_failed"],["kandan.reconnect_thread_queue_closed_state_push_failed","linzumi.reconnect_thread_queue_closed_state_push_failed"],["kandan.reconnect_thread_queue_failed_state_push_failed","linzumi.reconnect_thread_queue_failed_state_push_failed"],["kandan.reconnect_thread_queue_state_push_failed","linzumi.reconnect_thread_queue_state_push_failed"],["kandan.reconnect_thread_rehydrate_forced","linzumi.reconnect_thread_rehydrate_forced"],["kandan.reconnect_thread_rehydrated","linzumi.reconnect_thread_rehydrated"],["kandan.reconnect_thread_rehydrated_state_push_failed","linzumi.reconnect_thread_rehydrated_state_push_failed"],["kandan.reconnect_thread_rehydration_failed","linzumi.reconnect_thread_rehydration_failed"],["kandan.reconnect_thread_rehydration_ir_emitted","linzumi.reconnect_thread_rehydration_ir_emitted"],["kandan.reconnect_thread_rehydration_items_failed","linzumi.reconnect_thread_rehydration_items_failed"],["kandan.reconnect_thread_resume_failed","linzumi.reconnect_thread_resume_failed"],["kandan.reconnect_thread_seq_already_applied","linzumi.reconnect_thread_seq_already_applied"],["kandan.reconnect_thread_transcript_fetch_failed","linzumi.reconnect_thread_transcript_fetch_failed"],["kandan.reconnect_thread_unarchive_failed","linzumi.reconnect_thread_unarchive_failed"],["kandan.reconnect_thread_unarchive_resumed","linzumi.reconnect_thread_unarchive_resumed"],["kandan.reconnect_thread_unarchive_started","linzumi.reconnect_thread_unarchive_started"],["kandan.reconnect_thread_unavailable_state_push_failed","linzumi.reconnect_thread_unavailable_state_push_failed"],["kandan.reconnected","linzumi.reconnected"],["kandan.roster_seeded","linzumi.roster_seeded"],["kandan.session_app_server_lost_push_failed","linzumi.session_app_server_lost_push_failed"],["kandan.session_settings_publish_failed","linzumi.session_settings_publish_failed"],["kandan.start_instance_claude_code_attachment_failed_state_push_failed","linzumi.start_instance_claude_code_attachment_failed_state_push_failed"],["kandan.start_instance_codex_app_server_unavailable","linzumi.start_instance_codex_app_server_unavailable"],["kandan.start_instance_cwd_failed_state_push_failed","linzumi.start_instance_cwd_failed_state_push_failed"],["kandan.start_instance_cwd_rejected","linzumi.start_instance_cwd_rejected"],["kandan.start_instance_failed","linzumi.start_instance_failed"],["kandan.start_instance_processing_state_push_failed","linzumi.start_instance_processing_state_push_failed"],["kandan.start_instance_skipped_known_session","linzumi.start_instance_skipped_known_session"],["kandan.start_instance_stale_skipped","linzumi.start_instance_stale_skipped"],["kandan.start_instance_unavailable_state_push_failed","linzumi.start_instance_unavailable_state_push_failed"],["kandan.start_instance_wafer_state_push_failed","linzumi.start_instance_wafer_state_push_failed"],["kandan.start_turn_replay_skipped","linzumi.start_turn_replay_skipped"],["kandan.steer_duplicate_ignored","linzumi.steer_duplicate_ignored"],["kandan.steer_parked_as_own_turn","linzumi.steer_parked_as_own_turn"],["kandan.thread_bind_from_historical_reply_failed","linzumi.thread_bind_from_historical_reply_failed"],["kandan.thread_bound_from_historical_reply","linzumi.thread_bound_from_historical_reply"],["kandan.thread_sessions_reannounce_failed","linzumi.thread_sessions_reannounce_failed"],["kandan.thread_sessions_reannounced","linzumi.thread_sessions_reannounced"],["kandan.tui_input_mirrored","linzumi.tui_input_mirrored"],["kandan.typing_heartbeat_failed","linzumi.typing_heartbeat_failed"],["kandan.typing_stop_after_completion_failed","linzumi.typing_stop_after_completion_failed"]],keys:[["codexThreadId","harness_session_id"],["codex_thread_id","harness_session_id"],["kandanThreadId","thread_id"],["kandan_preview_ticket","linzumi_preview_ticket"],["kandan_thread_id","thread_id"],["linzumiThreadId","thread_id"],["linzumi_thread_id","thread_id"],["local_codex_runner","commander"],["runnerId","commander_id"],["runner_config","commander_config"],["runner_id","commander_id"]],keyPrimaryLegacy:[["commander","local_codex_runner"],["commander_config","runner_config"],["commander_id","runner_id"],["harness_session_id","codex_thread_id"],["linzumi_preview_ticket","kandan_preview_ticket"],["thread_id","kandan_thread_id"]],values:[["engine_boot_reconnect","harness_boot_reconnect"],["engine_for_runner_event_type","harness_for_commander_event_type"],["engine_rejected_steer","harness_rejected_steer"],["engine_unavailable","harness_unavailable"],["join_engine","join_harness"],["kandan-local-codex-runner","linzumi-commander"],["local_codex_runner","commander"],["original_engine","original_harness"],["resume_engine","resume_harness"]],topic:{legacyPrefix:"local_codex_runner:",canonicalPrefix:"commander:"},originator:{legacy:"kandan-local-codex-runner",canonical:"linzumi-commander"}};var zo=new Map(D.events),Fo=new Map(D.events.map(([e,n])=>[n,e])),Tt=new Map(D.keys),It=new Map(D.keyPrimaryLegacy),Vo=new Map(D.values),Go=new Map(D.values.map(([e,n])=>[n,e])),aa={eventCanonicalByLegacy:zo,eventLegacyByCanonical:Fo,keyCanonicalByLegacy:Tt,keyPrimaryLegacyByCanonical:It,valueCanonicalByLegacy:Vo,valueLegacyByCanonical:Go,originator:D.originator,topic:D.topic};function Rt(e){let n=new Set(e);for(let t of e){let r=Tt.get(t);r!==void 0&&n.add(r);let o=It.get(t);o!==void 0&&n.add(o)}return n}var Pt=new Map;for(let[e,n]of D.keys){let t=Pt.get(n)??[];t.push(e),Pt.set(n,t)}var ee="<SENSITIVE_DATA>",jt=Rt(new Set(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"])),Zo=new Set(["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"]);function Xo(e){if(process.env.VITEST===void 0)return;let n=Mt(At(),".linzumi"),t=Wo(e);if(t===n||t.startsWith(`${n}${Ko}`))throw new Error(`test-mode log isolation violated: refusing to open ${e} inside the real ~/.linzumi (point the logger at a temp path; the harness defaults LINZUMI_RUNNER_LOG_FILE / LINZUMI_CLI_AUDIT_LOG for exactly this - see plans/2026-07-10-cli-test-hygiene-spec.md item 2)`)}function ce(e,n,t={}){let r=t.logFile??Yo();Xo(r);try{Ho(Bo(r),{recursive:!0}),qo(r,`${JSON.stringify({ts:new Date().toISOString(),event:e,...t.sessionId===void 0?{}:{sessionId:t.sessionId},...Qo(n)})}
10
- `,"utf8")}catch{return}}function Yo(){let e=process.env.LINZUMI_CLI_AUDIT_LOG?.trim();return e===void 0||e===""?Mt(At(),".linzumi","logs","command-events.jsonl"):e}function Qo(e){return Nt(e)}function pn(e,n){return ts(n)?ee:typeof e=="string"?Lt(e):Array.isArray(e)?n==="args"?es(e):e.map(t=>pn(t,void 0)):e!==null&&typeof e=="object"?Nt(e):e}function Nt(e){let n=typeof e.name=="string"?e.name.toLowerCase():void 0,t=n==="authorization"||n==="cookie"||n==="set-cookie";return Object.fromEntries(Object.entries(e).filter(([r])=>r!=="runner_console").map(([r,o])=>[r,t&&r==="value"?ee:pn(o,r)]))}function es(e){let n=!1;return e.map(t=>{if(typeof t!="string")return n=!1,pn(t,void 0);if(n)return n=!1,ee;let[r,o]=ns(t);return Zo.has(r)?o===void 0?(n=!0,t):`${r}=${ee}`:Lt(t)})}function ns(e){let n=e.indexOf("=");return n===-1?[e,void 0]:[e.slice(0,n),e.slice(n+1)]}function ts(e){return e===void 0?!1:/^(authorization|cookie|set-cookie|password)$/i.test(e)||/(^|[_-])(access[_-]?token|api[_-]?key|auth[_-]?token|oauth[_-]?code|refresh[_-]?token|secret|token)$/i.test(e)}function Lt(e){return rs(e).replace(/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,ee)}function rs(e){let n;try{n=new URL(e)}catch{return os(e)}for(let t of[...n.searchParams.keys()])jt.has(t.toLowerCase())&&n.searchParams.set(t,ee);return n.toString()}function os(e){let n=e.indexOf("?"),t=e.indexOf("#");if(n===-1||t!==-1&&t<n)return e;let r=e.slice(0,n),o=t===-1?e.slice(n+1):e.slice(n+1,t),s=t===-1?"":e.slice(t),i=new URLSearchParams(o),a=!1;for(let c of[...i.keys()])jt.has(c.toLowerCase())&&(i.set(c,ee),a=!0);switch(a){case!0:return`${r}?${i.toString()}${s}`;case!1:return e}}function $t(e){let n=ss(e);if(!(n===void 0||n===""))return{itemKey:_(e.itemId)??_(e.item_id)??_(I(e.item)?.id)??"assistant-message",turnId:_(e.turnId)??_(e.turn_id)??_(I(e.turn)?.id),delta:n}}function Ut(e){let n=zt(e);if(!(n===void 0||n===""))return{itemKey:_(e.itemId)??_(e.item_id)??_(I(e.item)?.id)??"reasoning",turnId:_(e.turnId)??_(e.turn_id)??_(I(e.turn)?.id),delta:n}}function ss(e){return zt(e)}function is(e){return e>=55296&&e<=56319}function as(e){return e>=56320&&e<=57343}function Dt(e,n){let t=Math.min(Math.max(0,n),e.length),r=t>0&&t<e.length&&is(e.charCodeAt(t-1))&&as(e.charCodeAt(t))?t-1:t;return e.slice(0,r)}function zt(e){let n=e.delta;return typeof n=="string"?n:$(n)?_(n.text)??_(n.content)??_(n.delta)??_(n.message):_(e.text)??_(e.content)??_(e.message)}import{mkdirSync as ds,appendFileSync as cs}from"node:fs";import{dirname as ls}from"node:path";function Ft(e){return JSON.stringify(e)}var ve,us=/(^|[_-])(token|secret|api[_-]?key|authorization|cookie|private[_-]?key|login[_-]?url)([_-]|$)/iu;function we(e){let n=fs();if(n===void 0)return;let t=ps(n),r=ms(e),o={schemaVersion:1,provider:e.provider,captureKind:e.captureKind,ordinal:t.nextOrdinal,offsetMs:Math.max(0,Date.now()-t.startedAtMs),...r.rawText===void 0?{}:{rawText:r.rawText},...r.rawValue===void 0?{}:{rawValue:r.rawValue},...e.captureMetadata===void 0?{}:{captureMetadata:Se(e.captureMetadata)},...r.transforms.length===0?e.transforms===void 0?{}:{transforms:e.transforms}:{transforms:[...e.transforms??[],...r.transforms]}};t.nextOrdinal+=1,cs(n,`${Ft(o)}
11
- `,"utf8")}function fs(){let e=process.env.LINZUMI_AGENT_REPLAY_RECORD_FILE?.trim();return e===void 0||e===""?void 0:e}function ps(e){return ve!==void 0&&ve.path===e||(ds(ls(e),{recursive:!0}),ve={path:e,startedAtMs:Date.now(),nextOrdinal:0}),ve}function ms(e){if(process.env.LINZUMI_AGENT_REPLAY_EXACT_RAW==="1")return{rawText:e.rawText,rawValue:e.rawValue,transforms:[]};let n=[],t=e.rawValue===void 0?void 0:Se(e.rawValue,"$.rawValue",n);return{rawText:gs(e.rawText,n),rawValue:t,transforms:n}}function gs(e,n){if(e!==void 0)try{let t=JSON.parse(e);return JSON.stringify(Se(t,"$.rawText",n))}catch{return e}}function Se(e,n="$",t=[]){if(Array.isArray(e))return e.map((o,s)=>Se(o,`${n}[${s}]`,t));if(!$(e))return e;let r=Object.entries(e).map(([o,s])=>{let i=`${n}.${o}`;return us.test(o)?(t.push({type:"credential_redaction",path:i}),[o,"[REDACTED]"]):[o,s===void 0?void 0:Se(s,i,t)]});return Object.fromEntries(r)}function Vt(e){return{name:"linzumi",command:e.command??"linzumi",args:[...e.argsPrefix??[],"mcp","server","--api-url",e.kandanUrl,...e.authFilePath===void 0?[]:["--auth-file",e.authFilePath],...e.delegationAuthFilePath===void 0?[]:["--delegation-auth-file",e.delegationAuthFilePath],...e.ownerUsername===void 0?[]:["--owner-username",e.ownerUsername],...e.cwd===void 0?[]:["--cwd",e.cwd],...e.threadId===void 0?[]:["--thread-id",e.threadId],"--mode",e.operatingMode??"text",...e.toolScope===void 0||e.toolScope==="all"?[]:["--tool-scope",e.toolScope],...e.agentSession===!0?["--agent-session"]:[]],env:{...e.accessToken===void 0?{}:{LINZUMI_MCP_ACCESS_TOKEN:e.accessToken},...e.devServices===void 0?{}:{LINZUMI_DEV_SERVICES_SCOPE:e.devServices.scope,LINZUMI_DEV_SERVICES_OWNER_PID:String(e.devServices.ownerPid)},ELECTRON_RUN_AS_NODE:"1"}}}function mn(e){return["-c",`mcp_servers.${e.name}.command=${JSON.stringify(e.command)}`,"-c",`mcp_servers.${e.name}.args=${hs(e.args)}`,...Object.entries(e.env).flatMap(([n,t])=>["-c",`mcp_servers.${e.name}.env.${n}=${JSON.stringify(t)}`])]}function hs(e){return`[${e.map(n=>JSON.stringify(n)).join(", ")}]`}var Aa=["# Managed by Linzumi - do not edit by hand.","# This isolated CODEX_HOME keeps Linzumi-spawned codex processes off the","# user's ~/.codex config and the macOS Keychain. See codexHome.ts.",'mcp_oauth_credentials_store = "file"','cli_auth_credentials_store = "file"',""].join(`
12
- `);function Gt(){return["-c",'mcp_oauth_credentials_store="file"',"-c",'cli_auth_credentials_store="file"']}var ys=5*6e4;var xs=(()=>{let e=process.env.LINZUMI_CODEX_WS_KEEPALIVE_MS;if(e===void 0)return 2e4;let n=Number.parseInt(e,10);return Number.isInteger(n)&&n>0?n:2e4})();function bs(e){let n=e;if(typeof n.ping=="function"&&n.readyState===WebSocket.OPEN)try{n.ping()}catch{}}function Wt(e,n={}){return["app-server",...Ms(n),"--listen",e]}var vs=["-c","features.apps=false"],Ss="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_MS",ws="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_SOURCE",ks=5e3,Cs=6e5,Es=["flag","env","server_default"];function Os(e){return Es.find(n=>n===e)}function Ps(e){let n=e?.trim();if(e===void 0||n===void 0||n==="")return{state:"unset"};if(!/^[0-9]+$/.test(n))return{state:"invalid",raw:e};let t=Number(n);return!Number.isSafeInteger(t)||t<ks||t>Cs?{state:"invalid",raw:e}:{state:"applied",timeoutMs:t}}function Ts(e=process.env){let n=Ps(e[Ss]);if(n.state==="unset")return n;let t=Os(e[ws]?.trim())??"env";return{...n,source:t}}function Is(e=process.env){let n=Ts(e);return n.state==="applied"?n.timeoutMs:void 0}var Rs="openai-linzumi";function As(e){let n=Rs;return["-c",`model_providers.${n}.name="OpenAI"`,"-c",`model_providers.${n}.wire_api="responses"`,"-c",`model_providers.${n}.requires_openai_auth=true`,"-c",`model_providers.${n}.supports_websockets=true`,"-c",`model_providers.${n}.stream_idle_timeout_ms=${e}`,"-c",`model_provider="${n}"`]}function Ms(e,n=process.env){let t=Is(n);return[...vs,...Gt(),...e.model===void 0?[]:["-c",`model=${JSON.stringify(e.model)}`],...e.reasoningEffort===void 0?[]:["-c",`model_reasoning_effort=${JSON.stringify(e.reasoningEffort)}`],...e.fast===!0?["-c",`service_tier=${JSON.stringify("fast")}`]:[],...(e.mcpServers??[]).flatMap(r=>mn(r)),...e.modelProvider===void 0?t===void 0?[]:As(t):js(e.modelProvider,t)]}function js(e,n){return["-c",`model_providers.${e.id}.name=${JSON.stringify(e.name)}`,"-c",`model_providers.${e.id}.base_url=${JSON.stringify(e.baseUrl)}`,"-c",`model_providers.${e.id}.env_key=${JSON.stringify(e.envKey)}`,"-c",`model_providers.${e.id}.wire_api=${JSON.stringify(e.wireApi)}`,...Object.entries(e.httpHeaders??{}).flatMap(([t,r])=>["-c",`model_providers.${e.id}.http_headers.${t}=${JSON.stringify(r)}`]),...Object.entries(e.envHttpHeaders??{}).flatMap(([t,r])=>["-c",`model_providers.${e.id}.env_http_headers.${t}=${JSON.stringify(r)}`]),...n===void 0?[]:["-c",`model_providers.${e.id}.stream_idle_timeout_ms=${n}`],"-c",`model_provider=${JSON.stringify(e.id)}`]}async function Kt(e,n=t=>new un.default(t)){let t=await Js(e,n),r=new Map,o=new Set,s=new Set,i=[],a=new Set,c={nextId:1,closeError:void 0},d=u=>{let m=new Error(u);r.forEach(l=>l.reject(m)),r.clear()},f=setInterval(()=>bs(t),xs);f.unref?.();let p=u=>{if(clearInterval(f),d(u),c.closeError===void 0){c.closeError=new Error(u);for(let m of a)Bt(m,c.closeError);a.clear()}};return t.addEventListener("close",()=>p("codex app-server websocket closed")),t.addEventListener("error",()=>p("codex app-server websocket closed")),t.addEventListener("message",u=>{let m=String(u.data),l=Ls(m);if(l!==void 0){if(we({provider:"codex-app-server",captureKind:Ns(l),rawText:m,rawValue:{message:l}}),"id"in l&&("result"in l||"error"in l)){let x=r.get(l.id);x!==void 0&&(r.delete(l.id),x.resolve(l));return}if("id"in l&&typeof l.method=="string"){Us(t,l,s);return}if(!("id"in l)&&typeof l.method=="string"){let x=l;o.size===0?i.push(x):o.forEach(E=>qt(E,x))}}}),await Ds(t,r),{request:(u,m)=>{let l=c.nextId;return c.nextId+=1,Ht(t,r,m===void 0?{jsonrpc:"2.0",id:l,method:u}:{jsonrpc:"2.0",id:l,method:u,params:m})},notify:(u,m)=>{let l=m===void 0?{jsonrpc:"2.0",method:u}:{jsonrpc:"2.0",method:u,params:m};we({provider:"codex-app-server",captureKind:"outgoing",rawText:JSON.stringify(l),rawValue:{message:l}}),t.send(JSON.stringify(l))},onNotification:u=>{o.add(u),i.splice(0).forEach(m=>qt(u,m))},onRequest:u=>{s.add(u)},onClose:u=>{if(c.closeError!==void 0){Bt(u,c.closeError);return}a.add(u)},close:()=>{clearInterval(f),t.close()}}}function Ns(e){return"id"in e&&("result"in e||"error"in e)?"response":"id"in e&&typeof e.method=="string"?"request":"notification"}function Ls(e){let n=String(e);try{let t=JSON.parse(n);if(!$(t))throw new Error("codex app-server sent non-object JSON-RPC message");return t}catch(t){ce("codex.app_server_frame_malformed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t),payload:Dt(n,512),payloadChars:n.length});return}}function qt(e,n){try{e(n)}catch(t){ce("codex.notification_callback_failed",{purpose:"codex.app_server",method:n.method,message:t instanceof Error?t.message:String(t)})}}function Bt(e,n){try{e(n)}catch(t){ce("codex.close_callback_failed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t)})}}async function Js(e,n,t=2e3){let r=Date.now()+t,o;for(;Date.now()<=r;){let s=n(e);try{return await zs(s),s}catch(i){o=i instanceof Error?i:new Error(String(i)),$s(s)}}throw o??new Error("websocket open failed")}function $s(e){try{e.close()}catch{}}async function Us(e,n,t){try{if(t.size===0){e.send(JSON.stringify({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}}));return}for(let r of t){let o=await r(n);if(o!==void 0){e.send(JSON.stringify({jsonrpc:"2.0",id:n.id,result:o}));return}}e.send(JSON.stringify({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}}))}catch(r){e.send(JSON.stringify({jsonrpc:"2.0",id:n.id,error:{code:-32e3,message:r instanceof Error?r.message:String(r)}}))}}async function Ds(e,n){let t=await Ht(e,n,{jsonrpc:"2.0",id:"initialize",method:"initialize",params:{clientInfo:{name:"kandan-local-codex-runner",version:"0.0.1"},capabilities:{experimentalApi:!0}}});if("error"in t)throw new Error(`codex initialize failed: ${t.error.message}`);let r={jsonrpc:"2.0",method:"initialized"};we({provider:"codex-app-server",captureKind:"outgoing",rawText:JSON.stringify(r),rawValue:{message:r}}),e.send(JSON.stringify(r))}function Ht(e,n,t){return e.readyState!==WebSocket.OPEN?Promise.reject(new Error("codex app-server websocket is not open")):new Promise((r,o)=>{n.set(t.id,{resolve:r,reject:o}),we({provider:"codex-app-server",captureKind:"request",rawText:JSON.stringify(t),rawValue:{message:t}}),e.send(JSON.stringify(t))})}function zs(e){return new Promise((n,t)=>{e.addEventListener("open",()=>n(),{once:!0}),e.addEventListener("error",()=>t(new Error("websocket open failed")),{once:!0})})}var td=300*1e3;function $e(e){let n=new URL(e);switch(n.protocol){case"ws:":n.protocol="http:";break;case"wss:":n.protocol="https:";break;case"http:":case"https:":break;default:throw new Error("--api-url must be ws://, wss://, http://, or https://")}return n.pathname="",n.search="",n.hash="",n.toString().replace(/\/$/,"")}function gn(e){let n=e.fetchImpl??fetch,t=$e(e.kandanUrl),r=e.authMode==="personal-agent-delegation"?"/api/v2/personal-agent-mcp":"/api/v2/local-runner-mcp",o=e.operatingMode??"text",s=async(i,a,c,d={})=>{let f=new URL(a,t),p={...c,operating_mode:o},y={method:i,headers:{authorization:`Bearer ${e.accessToken}`},...d.signal===void 0?{}:{signal:d.signal}};if(i==="GET")for(let[M,L]of Object.entries(p))L!=null&&f.searchParams.set(M,String(L));else y.headers={...y.headers,"content-type":"application/json"},y.body=JSON.stringify(p);let u=await n(f,y),m=await u.json(),l=$(m)?m:void 0;if(l===void 0)throw new Error(`Linzumi MCP API returned non-object JSON from ${a}`);if(u.ok&&l.ok===!0)return l;let x=typeof l.error=="string"?l.error:`HTTP ${u.status}`,E=typeof l.detail=="string"?l.detail:void 0;throw new Error(`Linzumi MCP API ${a} failed: ${x}${E===void 0?"":` detail=${E}`}`)};return{validateAuth:()=>s("GET",`${r}/validate`,{}),issueOnboardingDiscoveryToken:i=>s("POST",`${r}/onboarding-discovery-token`,i),getMessage:i=>s("GET",`${r}/message`,i),getThread:i=>s("GET",`${r}/thread`,i),getThreadTranscript:i=>s("GET",`${r}/thread-transcript`,i),getChannel:i=>s("GET",`${r}/channel`,i),searchWorkspace:i=>s("GET",`${r}/search`,i),askWorkspace:i=>s("POST",`${r}/ask`,i),aboutMe:i=>s("GET",`${r}/about-me`,i),webSearch:i=>s("GET",`${r}/web-search`,i),fetchUrl:i=>s("GET",`${r}/fetch-url`,i),listUiTargets:i=>s("GET",`${r}/ui-targets`,i),openUi:i=>s("POST",`${r}/open-ui`,i),getCodingJobMetadata:i=>s("GET",`${r}/coding-job-metadata`,i),listProjects:i=>s("GET",`${r}/projects`,i),getProjectTasks:i=>s("GET",`${r}/project-tasks`,i),createProjectTask:i=>s("POST",`${r}/project-tasks/create`,i),updateProjectTask:i=>s("POST",`${r}/project-tasks/update`,i),deleteProjectTask:i=>s("POST",`${r}/project-tasks/delete`,i),addProjectTaskDependency:i=>s("POST",`${r}/project-tasks/add-dependency`,i),removeProjectTaskDependency:i=>s("POST",`${r}/project-tasks/remove-dependency`,i),getCallTranscript:i=>s("GET",`${r}/call-transcript`,i),renameCodingJob:i=>s("POST",`${r}/coding-job-title`,i),upsertCodingJobPlan:(i,a)=>s("POST",`${r}/coding-job-plan`,i,a),replaceCodingJobPlanSteps:i=>s("POST",`${r}/coding-job-plan/steps`,i),updateCodingJobPlanStep:i=>s("POST",`${r}/coding-job-plan/step`,i),linkCodingJobPullRequest:i=>s("POST",`${r}/coding-job-primary-pr`,i),listVaultSecrets:i=>s("GET",`${r}/vault-secrets`,i),noteProjectDirectory:i=>s("POST",`${r}/discovered-project`,i),noteAgentConversation:i=>s("POST",`${r}/discovered-conversation`,i),noteOnboardingDiscoveryStatus:i=>s("POST",`${r}/discovery-status`,i),sendChannelMessage:i=>s("POST",`${r}/channel-message`,i),editMessage:i=>s("POST",`${r}/message/edit`,i),agentReply:i=>s("POST",`${r}/agent-reply`,i),agentTurnProgress:i=>s("POST",`${r}/agent-turn-progress`,i),agentListCodingJobs:i=>s("GET",`${r}/agent/coding-jobs`,i),agentStartCodingJob:i=>s("POST",`${r}/agent/start-coding-job`,i),agentInterruptCodingJob:i=>s("POST",`${r}/agent/interrupt-coding-job`,i),agentSendCodingJobMessage:i=>s("POST",`${r}/agent/send-coding-job-message`,i),agentReadCodingJobThread:i=>s("GET",`${r}/agent/coding-job-thread`,i),agentResolveJobApproval:i=>s("POST",`${r}/agent/resolve-job-approval`,i),agentArchiveCodingJob:i=>s("POST",`${r}/agent/archive-coding-job`,i),agentUnarchiveCodingJob:i=>s("POST",`${r}/agent/unarchive-coding-job`,i),agentSetThreadStatus:i=>s("POST",`${r}/agent/set-thread-status`,i),agentCreateChannel:i=>s("POST",`${r}/agent/create-channel`,i),agentRenameChannel:i=>s("POST",`${r}/agent/rename-channel`,i),agentArchiveChannel:i=>s("POST",`${r}/agent/archive-channel`,i),agentUnarchiveChannel:i=>s("POST",`${r}/agent/unarchive-channel`,i),agentAddReaction:i=>s("POST",`${r}/agent/add-reaction`,i),agentRemoveReaction:i=>s("POST",`${r}/agent/remove-reaction`,i),agentPinMessage:i=>s("POST",`${r}/agent/pin-message`,i),agentUnpinMessage:i=>s("POST",`${r}/agent/unpin-message`,i),prepareMessageUploads:i=>s("POST",`${r}/message-uploads/prepare`,i),attachMessageFiles:i=>s("POST",`${r}/message-files/attach`,i),prepareCustomEmoji:i=>s("POST",`${r}/custom-emoji/prepare`,i),renameCustomEmoji:i=>s("POST",`${r}/custom-emoji/rename`,i),sendThreadReply:i=>s("POST",`${r}/thread-reply`,i),sendDm:i=>s("POST",`${r}/dm`,i),dmOwner:i=>s("POST",`${r}/dm-owner`,i),getVaultValues:i=>s("POST",`${r}/vault-values`,i)}}import{existsSync as Fs,mkdirSync as dd,readFileSync as Vs,renameSync as cd,rmSync as ld,writeFileSync as ud}from"node:fs";import{homedir as Gs}from"node:os";import{dirname as md,join as qs}from"node:path";function Bs(){return qs(Gs(),".linzumi","auth.json")}function hn(e,n=Bs()){if(!Fs(n))return;let t=Ws(Vs(n,"utf8")),r=$e(e),o=t.local_codex_runner?.[r];if(!(o===void 0||o.access_token.trim()==="")&&!(o.expires_at!==void 0&&Date.parse(o.expires_at)<=Date.now()))return{accessToken:o.access_token,kandanBaseUrl:r,issuedAt:o.issued_at,expiresAt:o.expires_at}}function Ws(e){let n=JSON.parse(e);if(typeof n!="object"||n===null||Array.isArray(n))throw new Error("Kandan auth cache must contain a JSON object");let t=n,r=t.local_codex_runner,o=t.personal_agent_delegation;if(r!==void 0&&(typeof r!="object"||r===null||Array.isArray(r)))throw new Error("Kandan auth cache local_codex_runner must be an object");if(o!==void 0&&(typeof o!="object"||o===null||Array.isArray(o)))throw new Error("Kandan auth cache personal_agent_delegation must be an object");return{version:1,local_codex_runner:Hs(r),personal_agent_delegation:Ks(o)}}function Ks(e){if(typeof e!="object"||e===null||Array.isArray(e))return;let n=e.access_token,t=e.issued_at,r=e.expires_at;if(!(typeof n!="string"||typeof t!="string"))return{access_token:n,issued_at:t,expires_at:typeof r=="string"?r:void 0}}function Hs(e){if(!(typeof e!="object"||e===null||Array.isArray(e)))return Object.fromEntries(Object.entries(e).flatMap(([n,t])=>{if(typeof t!="object"||t===null||Array.isArray(t))return[];let r=t.access_token,o=t.issued_at,s=t.expires_at;return typeof r!="string"||typeof o!="string"?[]:[[n,{access_token:r,issued_at:o,expires_at:typeof s=="string"?s:void 0}]]}))}function Zt(e){let n=e.channelSession;return{...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{reasoningEffort:n.reasoningEffort},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:Yt(n.approvalPolicy,n.sandbox,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...n.sandbox===void 0?{}:{sandbox:n.sandbox}}}function Xt(e){let n=e.channelSession;return{cwd:e.cwd,...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{effort:n.reasoningEffort},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:Yt(n.approvalPolicy,n.sandbox,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...n.sandbox===void 0?{}:{sandboxPolicy:Xs(n.sandbox,e.cwd)}}}function Zs(e,n,t){let r=t?.sandboxedNeverDefault===!0&&n==="workspace-write";switch(e){case void 0:case"default":return r?"never":"on-request";case"never":return n==="danger-full-access"||r?"never":"on-request";case"on-request":case"on-failure":return e;default:throw new Error(`unsupported Codex approval policy: ${e}`)}}function Yt(e,n,t){let r=Zs(e,n,t);return r==="on-failure"?"on-request":r}function Xs(e,n){switch(e){case"danger-full-access":return{type:"dangerFullAccess"};case"read-only":return{type:"readOnly",access:{type:"fullAccess"},networkAccess:!1};case"workspace-write":return{type:"workspaceWrite",writableRoots:[n],readOnlyAccess:{type:"fullAccess"},networkAccess:!1,excludeTmpdirEnvVar:!1,excludeSlashTmp:!1};default:throw new Error(`unsupported Codex sandbox mode: ${e}`)}}var yn={mcpAuthFileContents:"LINZUMI_CLOUD_MCP_AUTH_JSON",llmProxyToken:"LINZUMI_CLOUD_LLM_PROXY_TOKEN"};function Qt(e){let n;try{n=JSON.parse(Buffer.from(e,"base64").toString("utf8"))}catch{throw new Error("invalid guest cloud turn config payload (not base64 JSON)")}if(typeof n!="object"||n===null||Array.isArray(n))throw new Error("invalid guest cloud turn config payload");let t=n;for(let[r,o]of[["codexVersion",t.codexVersion],["sandbox",t.sandbox],["approvalPolicy",t.approvalPolicy],["kandanUrl",t.kandanUrl],["cwd",t.cwd]])if(typeof o!="string"||o==="")throw new Error(`invalid guest cloud turn config payload (${r} missing)`);if(!Array.isArray(t.input))throw new Error("invalid guest cloud turn config payload (input)");if(typeof t.appServerPort!="number"||!Number.isInteger(t.appServerPort))throw new Error("invalid guest cloud turn config payload (appServerPort)");return t}var ne="/home/agent",Ys=`${ne}/.linzumi-provisioned`;var _n="/dev/shm/linzumi",Id=`${_n}/codex`,Rd=`${_n}/mcp-auth.json`;var Ad=`${_n}/codex.env`;var Jd=`${ne}/cloud-supervisor.mjs`,er=`${ne}/mcp-server.mjs`,xn=`${ne}/.secrets`,bn=`${xn}/mcp-auth.json`,Ue=`${ne}/.codex`,nr=`${Ue}/linzumi-thread-map.json`;var vn=`${ne}/.turn-heartbeats`,tr=5e3,Qs=/^[A-Za-z0-9-]{8,64}$/;function Sn(e){if(!Qs.test(e))throw new Error(`invalid cloud turn nonce: ${JSON.stringify(e.slice(0,80))}`)}var ii=3e4,ai=200;function le(e){return e.replace(/\bsmk_[A-Za-z0-9._-]+/g,"smk_[REDACTED]").replace(/\b(sk|lz|tok|bearer)[-_][A-Za-z0-9._-]{8,}/gi,"$1_[REDACTED]")}var ze;function di(e){ze=e;try{ue(sr(e),{recursive:!0}),ke(e,"")}catch{ze=void 0}}function z(e){let n=`${JSON.stringify(e)}
13
- `;if(process.stdout.write(n),ze!==void 0)try{ni(ze,n)}catch{}}function De(e,n,t){z({phase:"exit",ok:e,reason:le(n),turnMs:t})}function ci(e){return{id:e.id,name:e.name,baseUrl:e.baseUrl,envKey:e.envKey,wireApi:e.wireApi,...e.httpHeaders===void 0?{}:{httpHeaders:{...e.httpHeaders}},...e.envHttpHeaders===void 0?{}:{envHttpHeaders:{...e.envHttpHeaders}}}}function li(e){if(e.sandbox!=="danger-full-access")throw new Error(`guest cloud turn requires sandbox "danger-full-access", got ${JSON.stringify(e.sandbox)}`);if(e.approvalPolicy!=="never")throw new Error(`guest cloud turn requires approvalPolicy "never", got ${JSON.stringify(e.approvalPolicy)}`)}function ui(e,n=Ue){let t=Vt({command:"node",argsPrefix:[er],kandanUrl:e.kandanUrl,authFilePath:bn,ownerUsername:e.ownerUsername,operatingMode:"text",cwd:e.cwd,threadId:e.threadId,agentSession:!0});return Wt(`ws://127.0.0.1:${e.appServerPort}`,{model:e.model,reasoningEffort:e.reasoningEffort,mcpServers:[t],...e.modelProvider===void 0?{}:{modelProvider:ci(e.modelProvider)},env:{CODEX_HOME:n,...ir(e)}})}function ir(e){let n=process.env[yn.llmProxyToken];return e.modelProvider===void 0||n===void 0||n===""?{}:{[e.modelProvider.envKey]:n}}function fi(e,n){let t=process.env[yn.mcpAuthFileContents];if(t===void 0||t==="")throw new Error("guest cloud turn missing MCP auth-cache (LINZUMI_CLOUD_MCP_AUTH_JSON)");ue(e,{recursive:!0,mode:448}),rr(e,448),ke(n,t,{mode:384}),rr(n,384)}function pi(e){try{or(e,{recursive:!0,force:!0})}catch{}}var mi=64;function ar(e){try{let n=JSON.parse(ti(e,"utf8"));if(typeof n!="object"||n===null||Array.isArray(n))return{};let t={};for(let[r,o]of Object.entries(n))typeof o=="string"&&o!==""&&(t[r]=o);return t}catch{return{}}}function gi(e,n,t){try{let r=ar(e);delete r[n];let o=Object.entries(r),s=o.slice(Math.max(0,o.length-(mi-1)));s.push([n,t]),ue(sr(e),{recursive:!0}),ke(e,JSON.stringify(Object.fromEntries(s)))}catch{}}var hi=new Set(["turn/completed","turn/failed","turn/aborted"]),yi=2e3;function dr(e){let n=I(I(e)?.item);if(n===void 0||_(n.type)!=="agentMessage")return"";let t=_(n.text);return t!==void 0&&t!==""?t:(fn(n.content)??[]).map(s=>{let i=I(s);if(i===void 0)return;let a=_(i.type);if(!(a!=="text"&&a!=="output_text"&&a!=="input_text"))return _(i.text)??_(i.content)}).filter(s=>s!==void 0&&s!=="").join(`
9
+ `+t)}function Q(e,n,t,r,o,i){if(e.listenerCount("wsClientError")){let s=new Error(o);Error.captureStackTrace(s,Q),e.emit("wsClientError",s,t,n)}else be(t,r,o,i)}});import{spawn as es}from"node:child_process";import{appendFileSync as ns,rmSync as or,writeFileSync as ke,mkdirSync as ue,chmodSync as rr,readFileSync as ts,readdirSync as rs,statSync as os,unlinkSync as is}from"node:fs";import{dirname as ir,join as Fe}from"node:path";var Lo=fe(_t(),1),Jo=fe(Qe(),1),$o=fe(tn(),1),un=fe(Le(),1),Do=fe(Ot(),1);function $(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function I(e){return e!==void 0&&$(e)?e:void 0}function fn(e){return Array.isArray(e)?e:void 0}function _(e){return typeof e=="string"&&e.trim()!==""?e.trim():void 0}import{appendFileSync as Go,openSync as fa}from"node:fs";import{homedir as Rt}from"node:os";import{dirname as qo,join as Mt,resolve as Wo,sep as Ho}from"node:path";import{mkdirSync as Ko}from"node:fs";var U={_generated:"GENERATED by scripts/naming_dual_emit_codegen.mjs from scripts/naming_canonical_key_map.json (N2.2 dual-emit, D46) - DO NOT EDIT; run: node scripts/naming_dual_emit_codegen.mjs --write",events:[["codex.agent_turn_narration_only_no_reply","harness.agent_turn_narration_only_no_reply"],["codex.cost_cap_402_seen","harness.cost_cap_402_seen"],["codex.edge_blocked_captured","harness.edge_blocked_captured"],["codex.empty_turn_auto_retry_suppressed_cost_cap","harness.empty_turn_auto_retry_suppressed_cost_cap"],["codex.empty_turn_loop_guard_tripped","harness.empty_turn_loop_guard_tripped"],["codex.error_without_http_status_captured","harness.error_without_http_status_captured"],["codex.mid_stream_stall_auto_resume_flagged","harness.mid_stream_stall_auto_resume_flagged"],["codex.mid_stream_stall_fresh_session_resume","harness.mid_stream_stall_fresh_session_resume"],["codex.mid_stream_stall_fresh_session_resume_failed","harness.mid_stream_stall_fresh_session_resume_failed"],["codex.mid_stream_stall_fresh_session_resume_flagged","harness.mid_stream_stall_fresh_session_resume_flagged"],["codex.mid_stream_stall_resume_suppressed_rate_limit","harness.mid_stream_stall_resume_suppressed_rate_limit"],["codex.mid_stream_stall_second_stall_after_resume","harness.mid_stream_stall_second_stall_after_resume"],["codex.pre_first_byte_stall_auto_retry_flagged","harness.pre_first_byte_stall_auto_retry_flagged"],["codex.pre_first_byte_stall_retry_suppressed_cost_cap","harness.pre_first_byte_stall_retry_suppressed_cost_cap"],["codex.provider_outage_flagged_captured","harness.provider_outage_flagged_captured"],["codex.reasoning_loop_breaker_tripped","harness.reasoning_loop_breaker_tripped"],["codex.tool_fatal_captured","harness.tool_fatal_captured"],["codex.turn_completed","job.turn_completed"],["codex.turn_completed_with_protocol_failure","job.turn_completed_with_protocol_failure"],["codex.turn_completed_with_unsupported_tool_call_ignored","job.turn_completed_with_unsupported_tool_call_ignored"],["codex.turn_completed_without_assistant_output","job.turn_completed_without_assistant_output"],["codex.turn_forward_failed","job.turn_forward_failed"],["codex.upstream_error_captured","harness.upstream_error_captured"],["codex.upstream_rejection_captured","harness.upstream_rejection_captured"],["codex.upstream_turn_error_captured","harness.upstream_turn_error_captured"],["kandan.chat_event","linzumi.chat_event"],["kandan.chat_event_abandoned","linzumi.chat_event_abandoned"],["kandan.chat_event_failed","linzumi.chat_event_failed"],["kandan.chat_event_failure_cleared","linzumi.chat_event_failure_cleared"],["kandan.claude_code_interrupt_state_push_failed","linzumi.claude_code_interrupt_state_push_failed"],["kandan.claude_code_stop_state_push_failed","linzumi.claude_code_stop_state_push_failed"],["kandan.claude_code_typing_heartbeat_failed","linzumi.claude_code_typing_heartbeat_failed"],["kandan.claude_code_typing_start_wait_timeout","linzumi.claude_code_typing_start_wait_timeout"],["kandan.claude_code_typing_stop_failed","linzumi.claude_code_typing_stop_failed"],["kandan.claude_code_user_input_abort_publish_failed","linzumi.claude_code_user_input_abort_publish_failed"],["kandan.claude_code_user_question_completed_publish_failed","linzumi.claude_code_user_question_completed_publish_failed"],["kandan.codex_command_output_forwarded","linzumi.codex_command_output_forwarded"],["kandan.codex_delta_forwarded","linzumi.codex_delta_forwarded"],["kandan.codex_file_change_forwarded","linzumi.codex_file_change_forwarded"],["kandan.codex_notification_push_failed","linzumi.codex_notification_push_failed"],["kandan.codex_output_forwarded","linzumi.codex_output_forwarded"],["kandan.codex_reasoning_delta_forwarded","linzumi.codex_reasoning_delta_forwarded"],["kandan.codex_web_search_progress_forwarded","linzumi.codex_web_search_progress_forwarded"],["kandan.connection_force_reconnect","linzumi.connection_force_reconnect"],["kandan.connection_force_reconnect_dispatched","linzumi.connection_force_reconnect_dispatched"],["kandan.connection_hard_reset","linzumi.connection_hard_reset"],["kandan.connection_hard_reset_exhausted","linzumi.connection_hard_reset_exhausted"],["kandan.connection_recovered","linzumi.connection_recovered"],["kandan.connection_stale","linzumi.connection_stale"],["kandan.connection_unrecoverable","linzumi.connection_unrecoverable"],["kandan.control","linzumi.control"],["kandan.control_ack_withheld_on_failure","linzumi.control_ack_withheld_on_failure"],["kandan.control_epoch_changed","linzumi.control_epoch_changed"],["kandan.control_handler_threw","linzumi.control_handler_threw"],["kandan.control_ignored","linzumi.control_ignored"],["kandan.control_response_push_failed","linzumi.control_response_push_failed"],["kandan.failed_seq_overflow","linzumi.failed_seq_overflow"],["kandan.forward_port_revoked_push_failed","linzumi.forward_port_revoked_push_failed"],["kandan.forward_response","linzumi.forward_response"],["kandan.forward_response_push_failed","linzumi.forward_response_push_failed"],["kandan.forward_tunnel_error","linzumi.forward_tunnel_error"],["kandan.forward_tunnel_open_failed","linzumi.forward_tunnel_open_failed"],["kandan.heartbeat_push_failed","linzumi.heartbeat_push_failed"],["kandan.local_editor_initial_status_failed","linzumi.local_editor_initial_status_failed"],["kandan.local_editor_status_push_failed","linzumi.local_editor_status_push_failed"],["kandan.message_duplicate_ignored","linzumi.message_duplicate_ignored"],["kandan.message_ignored","linzumi.message_ignored"],["kandan.message_queued","linzumi.message_queued"],["kandan.message_spawn_on_miss","linzumi.message_spawn_on_miss"],["kandan.message_spawn_on_miss_failed","linzumi.message_spawn_on_miss_failed"],["kandan.message_state_refresh_failed","linzumi.message_state_refresh_failed"],["kandan.optional_push_failed","linzumi.optional_push_failed"],["kandan.post_stop_queue_drain_failed","linzumi.post_stop_queue_drain_failed"],["kandan.queue_drain_blocked","linzumi.queue_drain_blocked"],["kandan.queue_drain_dead_worker_fail_publish_failed","linzumi.queue_drain_dead_worker_fail_publish_failed"],["kandan.queue_drain_dead_worker_rebuild","linzumi.queue_drain_dead_worker_rebuild"],["kandan.queue_drain_dead_worker_rebuild_exhausted","linzumi.queue_drain_dead_worker_rebuild_exhausted"],["kandan.queue_drain_dead_worker_rebuild_failed","linzumi.queue_drain_dead_worker_rebuild_failed"],["kandan.reconnect_handling_failed","linzumi.reconnect_handling_failed"],["kandan.reconnect_thread_context_fetch_failed","linzumi.reconnect_thread_context_fetch_failed"],["kandan.reconnect_thread_cwd_failed_state_push_failed","linzumi.reconnect_thread_cwd_failed_state_push_failed"],["kandan.reconnect_thread_failed","linzumi.reconnect_thread_failed"],["kandan.reconnect_thread_processing_state_push_failed","linzumi.reconnect_thread_processing_state_push_failed"],["kandan.reconnect_thread_queue_closed_state_push_failed","linzumi.reconnect_thread_queue_closed_state_push_failed"],["kandan.reconnect_thread_queue_failed_state_push_failed","linzumi.reconnect_thread_queue_failed_state_push_failed"],["kandan.reconnect_thread_queue_state_push_failed","linzumi.reconnect_thread_queue_state_push_failed"],["kandan.reconnect_thread_rehydrate_forced","linzumi.reconnect_thread_rehydrate_forced"],["kandan.reconnect_thread_rehydrated","linzumi.reconnect_thread_rehydrated"],["kandan.reconnect_thread_rehydrated_state_push_failed","linzumi.reconnect_thread_rehydrated_state_push_failed"],["kandan.reconnect_thread_rehydration_failed","linzumi.reconnect_thread_rehydration_failed"],["kandan.reconnect_thread_rehydration_ir_emitted","linzumi.reconnect_thread_rehydration_ir_emitted"],["kandan.reconnect_thread_rehydration_items_failed","linzumi.reconnect_thread_rehydration_items_failed"],["kandan.reconnect_thread_resume_failed","linzumi.reconnect_thread_resume_failed"],["kandan.reconnect_thread_seq_already_applied","linzumi.reconnect_thread_seq_already_applied"],["kandan.reconnect_thread_transcript_fetch_failed","linzumi.reconnect_thread_transcript_fetch_failed"],["kandan.reconnect_thread_unarchive_failed","linzumi.reconnect_thread_unarchive_failed"],["kandan.reconnect_thread_unarchive_resumed","linzumi.reconnect_thread_unarchive_resumed"],["kandan.reconnect_thread_unarchive_started","linzumi.reconnect_thread_unarchive_started"],["kandan.reconnect_thread_unavailable_state_push_failed","linzumi.reconnect_thread_unavailable_state_push_failed"],["kandan.reconnected","linzumi.reconnected"],["kandan.roster_seeded","linzumi.roster_seeded"],["kandan.session_app_server_lost_push_failed","linzumi.session_app_server_lost_push_failed"],["kandan.session_settings_publish_failed","linzumi.session_settings_publish_failed"],["kandan.start_instance_claude_code_attachment_failed_state_push_failed","linzumi.start_instance_claude_code_attachment_failed_state_push_failed"],["kandan.start_instance_codex_app_server_unavailable","linzumi.start_instance_codex_app_server_unavailable"],["kandan.start_instance_cwd_failed_state_push_failed","linzumi.start_instance_cwd_failed_state_push_failed"],["kandan.start_instance_cwd_rejected","linzumi.start_instance_cwd_rejected"],["kandan.start_instance_failed","linzumi.start_instance_failed"],["kandan.start_instance_processing_state_push_failed","linzumi.start_instance_processing_state_push_failed"],["kandan.start_instance_skipped_known_session","linzumi.start_instance_skipped_known_session"],["kandan.start_instance_stale_skipped","linzumi.start_instance_stale_skipped"],["kandan.start_instance_unavailable_state_push_failed","linzumi.start_instance_unavailable_state_push_failed"],["kandan.start_instance_wafer_state_push_failed","linzumi.start_instance_wafer_state_push_failed"],["kandan.start_turn_replay_skipped","linzumi.start_turn_replay_skipped"],["kandan.steer_duplicate_ignored","linzumi.steer_duplicate_ignored"],["kandan.steer_parked_as_own_turn","linzumi.steer_parked_as_own_turn"],["kandan.thread_bind_from_historical_reply_failed","linzumi.thread_bind_from_historical_reply_failed"],["kandan.thread_bound_from_historical_reply","linzumi.thread_bound_from_historical_reply"],["kandan.thread_sessions_reannounce_failed","linzumi.thread_sessions_reannounce_failed"],["kandan.thread_sessions_reannounced","linzumi.thread_sessions_reannounced"],["kandan.tui_input_mirrored","linzumi.tui_input_mirrored"],["kandan.typing_heartbeat_failed","linzumi.typing_heartbeat_failed"],["kandan.typing_stop_after_completion_failed","linzumi.typing_stop_after_completion_failed"]],keys:[["codexThreadId","harness_session_id"],["codex_thread_id","harness_session_id"],["kandanThreadId","thread_id"],["kandan_preview_ticket","linzumi_preview_ticket"],["kandan_thread_id","thread_id"],["linzumiThreadId","thread_id"],["linzumi_thread_id","thread_id"],["local_codex_runner","commander"],["runnerId","commander_id"],["runner_config","commander_config"],["runner_id","commander_id"]],keyPrimaryLegacy:[["commander","local_codex_runner"],["commander_config","runner_config"],["commander_id","runner_id"],["harness_session_id","codex_thread_id"],["linzumi_preview_ticket","kandan_preview_ticket"],["thread_id","kandan_thread_id"]],values:[["engine_boot_reconnect","harness_boot_reconnect"],["engine_for_runner_event_type","harness_for_commander_event_type"],["engine_rejected_steer","harness_rejected_steer"],["engine_unavailable","harness_unavailable"],["join_engine","join_harness"],["kandan-local-codex-runner","linzumi-commander"],["local_codex_runner","commander"],["original_engine","original_harness"],["resume_engine","resume_harness"]],topic:{legacyPrefix:"local_codex_runner:",canonicalPrefix:"commander:"},originator:{legacy:"kandan-local-codex-runner",canonical:"linzumi-commander"}};var zo=new Map(U.events),Fo=new Map(U.events.map(([e,n])=>[n,e])),Tt=new Map(U.keys),It=new Map(U.keyPrimaryLegacy),Vo=new Map(U.values),Bo=new Map(U.values.map(([e,n])=>[n,e])),aa={eventCanonicalByLegacy:zo,eventLegacyByCanonical:Fo,keyCanonicalByLegacy:Tt,keyPrimaryLegacyByCanonical:It,valueCanonicalByLegacy:Vo,valueLegacyByCanonical:Bo,originator:U.originator,topic:U.topic};function At(e){let n=new Set(e);for(let t of e){let r=Tt.get(t);r!==void 0&&n.add(r);let o=It.get(t);o!==void 0&&n.add(o)}return n}var Ct=new Map;for(let[e,n]of U.keys){let t=Ct.get(n)??[];t.push(e),Ct.set(n,t)}var ee="<SENSITIVE_DATA>",jt=At(new Set(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"])),Zo=new Set(["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"]);function Xo(e){if(process.env.VITEST===void 0)return;let n=Mt(Rt(),".linzumi"),t=Wo(e);if(t===n||t.startsWith(`${n}${Ho}`))throw new Error(`test-mode log isolation violated: refusing to open ${e} inside the real ~/.linzumi (point the logger at a temp path; the harness defaults LINZUMI_RUNNER_LOG_FILE / LINZUMI_CLI_AUDIT_LOG for exactly this - see plans/2026-07-10-cli-test-hygiene-spec.md item 2)`)}function ce(e,n,t={}){let r=t.logFile??Yo();Xo(r);try{Ko(qo(r),{recursive:!0}),Go(r,`${JSON.stringify({ts:new Date().toISOString(),event:e,...t.sessionId===void 0?{}:{sessionId:t.sessionId},...Qo(n)})}
10
+ `,"utf8")}catch{return}}function Yo(){let e=process.env.LINZUMI_CLI_AUDIT_LOG?.trim();return e===void 0||e===""?Mt(Rt(),".linzumi","logs","command-events.jsonl"):e}function Qo(e){return Nt(e)}function pn(e,n){return ti(n)?ee:typeof e=="string"?Lt(e):Array.isArray(e)?n==="args"?ei(e):e.map(t=>pn(t,void 0)):e!==null&&typeof e=="object"?Nt(e):e}function Nt(e){let n=typeof e.name=="string"?e.name.toLowerCase():void 0,t=n==="authorization"||n==="cookie"||n==="set-cookie";return Object.fromEntries(Object.entries(e).filter(([r])=>r!=="runner_console").map(([r,o])=>[r,t&&r==="value"?ee:pn(o,r)]))}function ei(e){let n=!1;return e.map(t=>{if(typeof t!="string")return n=!1,pn(t,void 0);if(n)return n=!1,ee;let[r,o]=ni(t);return Zo.has(r)?o===void 0?(n=!0,t):`${r}=${ee}`:Lt(t)})}function ni(e){let n=e.indexOf("=");return n===-1?[e,void 0]:[e.slice(0,n),e.slice(n+1)]}function ti(e){return e===void 0?!1:/^(authorization|cookie|set-cookie|password)$/i.test(e)||/(^|[_-])(access[_-]?token|api[_-]?key|auth[_-]?token|oauth[_-]?code|refresh[_-]?token|secret|token)$/i.test(e)}function Lt(e){return ri(e).replace(/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,ee)}function ri(e){let n;try{n=new URL(e)}catch{return oi(e)}for(let t of[...n.searchParams.keys()])jt.has(t.toLowerCase())&&n.searchParams.set(t,ee);return n.toString()}function oi(e){let n=e.indexOf("?"),t=e.indexOf("#");if(n===-1||t!==-1&&t<n)return e;let r=e.slice(0,n),o=t===-1?e.slice(n+1):e.slice(n+1,t),i=t===-1?"":e.slice(t),s=new URLSearchParams(o),a=!1;for(let c of[...s.keys()])jt.has(c.toLowerCase())&&(s.set(c,ee),a=!0);switch(a){case!0:return`${r}?${s.toString()}${i}`;case!1:return e}}function $t(e){let n=ii(e);if(!(n===void 0||n===""))return{itemKey:_(e.itemId)??_(e.item_id)??_(I(e.item)?.id)??"assistant-message",turnId:_(e.turnId)??_(e.turn_id)??_(I(e.turn)?.id),delta:n}}function Dt(e){let n=zt(e);if(!(n===void 0||n===""))return{itemKey:_(e.itemId)??_(e.item_id)??_(I(e.item)?.id)??"reasoning",turnId:_(e.turnId)??_(e.turn_id)??_(I(e.turn)?.id),delta:n}}function ii(e){return zt(e)}function si(e){return e>=55296&&e<=56319}function ai(e){return e>=56320&&e<=57343}function Ut(e,n){let t=Math.min(Math.max(0,n),e.length),r=t>0&&t<e.length&&si(e.charCodeAt(t-1))&&ai(e.charCodeAt(t))?t-1:t;return e.slice(0,r)}function zt(e){let n=e.delta;return typeof n=="string"?n:$(n)?_(n.text)??_(n.content)??_(n.delta)??_(n.message):_(e.text)??_(e.content)??_(e.message)}import{mkdirSync as di,appendFileSync as ci}from"node:fs";import{dirname as li}from"node:path";function Ft(e){return JSON.stringify(e)}var ve,ui=/(^|[_-])(token|secret|api[_-]?key|authorization|cookie|private[_-]?key|login[_-]?url)([_-]|$)/iu;function we(e){let n=fi();if(n===void 0)return;let t=pi(n),r=mi(e),o={schemaVersion:1,provider:e.provider,captureKind:e.captureKind,ordinal:t.nextOrdinal,offsetMs:Math.max(0,Date.now()-t.startedAtMs),...r.rawText===void 0?{}:{rawText:r.rawText},...r.rawValue===void 0?{}:{rawValue:r.rawValue},...e.captureMetadata===void 0?{}:{captureMetadata:Se(e.captureMetadata)},...r.transforms.length===0?e.transforms===void 0?{}:{transforms:e.transforms}:{transforms:[...e.transforms??[],...r.transforms]}};t.nextOrdinal+=1,ci(n,`${Ft(o)}
11
+ `,"utf8")}function fi(){let e=process.env.LINZUMI_AGENT_REPLAY_RECORD_FILE?.trim();return e===void 0||e===""?void 0:e}function pi(e){return ve!==void 0&&ve.path===e||(di(li(e),{recursive:!0}),ve={path:e,startedAtMs:Date.now(),nextOrdinal:0}),ve}function mi(e){if(process.env.LINZUMI_AGENT_REPLAY_EXACT_RAW==="1")return{rawText:e.rawText,rawValue:e.rawValue,transforms:[]};let n=[],t=e.rawValue===void 0?void 0:Se(e.rawValue,"$.rawValue",n);return{rawText:gi(e.rawText,n),rawValue:t,transforms:n}}function gi(e,n){if(e!==void 0)try{let t=JSON.parse(e);return JSON.stringify(Se(t,"$.rawText",n))}catch{return e}}function Se(e,n="$",t=[]){if(Array.isArray(e))return e.map((o,i)=>Se(o,`${n}[${i}]`,t));if(!$(e))return e;let r=Object.entries(e).map(([o,i])=>{let s=`${n}.${o}`;return ui.test(o)?(t.push({type:"credential_redaction",path:s}),[o,"[REDACTED]"]):[o,i===void 0?void 0:Se(i,s,t)]});return Object.fromEntries(r)}function Vt(e){return{name:"linzumi",command:e.command??"linzumi",args:[...e.argsPrefix??[],"mcp","server","--api-url",e.kandanUrl,...e.authFilePath===void 0?[]:["--auth-file",e.authFilePath],...e.delegationAuthFilePath===void 0?[]:["--delegation-auth-file",e.delegationAuthFilePath],...e.ownerUsername===void 0?[]:["--owner-username",e.ownerUsername],...e.cwd===void 0?[]:["--cwd",e.cwd],...e.threadId===void 0?[]:["--thread-id",e.threadId],"--mode",e.operatingMode??"text",...e.toolScope===void 0||e.toolScope==="all"?[]:["--tool-scope",e.toolScope],...e.agentSession===!0?["--agent-session"]:[]],env:{...e.accessToken===void 0?{}:{LINZUMI_MCP_ACCESS_TOKEN:e.accessToken},...e.devServices===void 0?{}:{LINZUMI_DEV_SERVICES_SCOPE:e.devServices.scope,LINZUMI_DEV_SERVICES_OWNER_PID:String(e.devServices.ownerPid)},ELECTRON_RUN_AS_NODE:"1"}}}function mn(e){return["-c",`mcp_servers.${e.name}.command=${JSON.stringify(e.command)}`,"-c",`mcp_servers.${e.name}.args=${hi(e.args)}`,...Object.entries(e.env).flatMap(([n,t])=>["-c",`mcp_servers.${e.name}.env.${n}=${JSON.stringify(t)}`])]}function hi(e){return`[${e.map(n=>JSON.stringify(n)).join(", ")}]`}var Ma=["# Managed by Linzumi - do not edit by hand.","# This isolated CODEX_HOME keeps Linzumi-spawned codex processes off the","# user's ~/.codex config and the macOS Keychain. See codexHome.ts.",'mcp_oauth_credentials_store = "file"','cli_auth_credentials_store = "file"',""].join(`
12
+ `);function Bt(){return["-c",'mcp_oauth_credentials_store="file"',"-c",'cli_auth_credentials_store="file"']}var yi=5*6e4;var xi=(()=>{let e=process.env.LINZUMI_CODEX_WS_KEEPALIVE_MS;if(e===void 0)return 2e4;let n=Number.parseInt(e,10);return Number.isInteger(n)&&n>0?n:2e4})();function bi(e){let n=e;if(typeof n.ping=="function"&&n.readyState===WebSocket.OPEN)try{n.ping()}catch{}}function Wt(e,n={}){return["app-server",...Mi(n),"--listen",e]}var vi=["-c","features.apps=false"],Si="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_MS",wi="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_SOURCE",ki=5e3,Ei=6e5,Pi=["flag","env","server_default"];function Oi(e){return Pi.find(n=>n===e)}function Ci(e){let n=e?.trim();if(e===void 0||n===void 0||n==="")return{state:"unset"};if(!/^[0-9]+$/.test(n))return{state:"invalid",raw:e};let t=Number(n);return!Number.isSafeInteger(t)||t<ki||t>Ei?{state:"invalid",raw:e}:{state:"applied",timeoutMs:t}}function Ti(e=process.env){let n=Ci(e[Si]);if(n.state==="unset")return n;let t=Oi(e[wi]?.trim())??"env";return{...n,source:t}}function Ii(e=process.env){let n=Ti(e);return n.state==="applied"?n.timeoutMs:void 0}var Ai="openai-linzumi";function Ri(e){let n=Ai;return["-c",`model_providers.${n}.name="OpenAI"`,"-c",`model_providers.${n}.wire_api="responses"`,"-c",`model_providers.${n}.requires_openai_auth=true`,"-c",`model_providers.${n}.supports_websockets=true`,"-c",`model_providers.${n}.stream_idle_timeout_ms=${e}`,"-c",`model_provider="${n}"`]}function Mi(e,n=process.env){let t=Ii(n);return[...vi,...Bt(),...e.model===void 0?[]:["-c",`model=${JSON.stringify(e.model)}`],...e.reasoningEffort===void 0?[]:["-c",`model_reasoning_effort=${JSON.stringify(e.reasoningEffort)}`],...e.fast===!0?["-c",`service_tier=${JSON.stringify("fast")}`]:[],...(e.mcpServers??[]).flatMap(r=>mn(r)),...e.modelProvider===void 0?t===void 0?[]:Ri(t):ji(e.modelProvider,t)]}function ji(e,n){return["-c",`model_providers.${e.id}.name=${JSON.stringify(e.name)}`,"-c",`model_providers.${e.id}.base_url=${JSON.stringify(e.baseUrl)}`,"-c",`model_providers.${e.id}.env_key=${JSON.stringify(e.envKey)}`,"-c",`model_providers.${e.id}.wire_api=${JSON.stringify(e.wireApi)}`,...Object.entries(e.httpHeaders??{}).flatMap(([t,r])=>["-c",`model_providers.${e.id}.http_headers.${t}=${JSON.stringify(r)}`]),...Object.entries(e.envHttpHeaders??{}).flatMap(([t,r])=>["-c",`model_providers.${e.id}.env_http_headers.${t}=${JSON.stringify(r)}`]),...n===void 0?[]:["-c",`model_providers.${e.id}.stream_idle_timeout_ms=${n}`],"-c",`model_provider=${JSON.stringify(e.id)}`]}async function Ht(e,n=t=>new un.default(t)){let t=await Ji(e,n),r=new Map,o=new Set,i=new Set,s=[],a=new Set,c={nextId:1,closeError:void 0},d=u=>{let m=new Error(u);r.forEach(l=>l.reject(m)),r.clear()},f=setInterval(()=>bi(t),xi);f.unref?.();let p=u=>{if(clearInterval(f),d(u),c.closeError===void 0){c.closeError=new Error(u);for(let m of a)qt(m,c.closeError);a.clear()}};return t.addEventListener("close",()=>p("codex app-server websocket closed")),t.addEventListener("error",()=>p("codex app-server websocket closed")),t.addEventListener("message",u=>{let m=String(u.data),l=Li(m);if(l!==void 0){if(we({provider:"codex-app-server",captureKind:Ni(l),rawText:m,rawValue:{message:l}}),"id"in l&&("result"in l||"error"in l)){let x=r.get(l.id);x!==void 0&&(r.delete(l.id),x.resolve(l));return}if("id"in l&&typeof l.method=="string"){Di(t,l,i);return}if(!("id"in l)&&typeof l.method=="string"){let x=l;o.size===0?s.push(x):o.forEach(P=>Gt(P,x))}}}),await Ui(t,r),{request:(u,m)=>{let l=c.nextId;return c.nextId+=1,Kt(t,r,m===void 0?{jsonrpc:"2.0",id:l,method:u}:{jsonrpc:"2.0",id:l,method:u,params:m})},notify:(u,m)=>{let l=m===void 0?{jsonrpc:"2.0",method:u}:{jsonrpc:"2.0",method:u,params:m};we({provider:"codex-app-server",captureKind:"outgoing",rawText:JSON.stringify(l),rawValue:{message:l}}),t.send(JSON.stringify(l))},onNotification:u=>{o.add(u),s.splice(0).forEach(m=>Gt(u,m))},onRequest:u=>{i.add(u)},onClose:u=>{if(c.closeError!==void 0){qt(u,c.closeError);return}a.add(u)},close:()=>{clearInterval(f),t.close()}}}function Ni(e){return"id"in e&&("result"in e||"error"in e)?"response":"id"in e&&typeof e.method=="string"?"request":"notification"}function Li(e){let n=String(e);try{let t=JSON.parse(n);if(!$(t))throw new Error("codex app-server sent non-object JSON-RPC message");return t}catch(t){ce("codex.app_server_frame_malformed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t),payload:Ut(n,512),payloadChars:n.length});return}}function Gt(e,n){try{e(n)}catch(t){ce("codex.notification_callback_failed",{purpose:"codex.app_server",method:n.method,message:t instanceof Error?t.message:String(t)})}}function qt(e,n){try{e(n)}catch(t){ce("codex.close_callback_failed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t)})}}async function Ji(e,n,t=2e3){let r=Date.now()+t,o;for(;Date.now()<=r;){let i=n(e);try{return await zi(i),i}catch(s){o=s instanceof Error?s:new Error(String(s)),$i(i)}}throw o??new Error("websocket open failed")}function $i(e){try{e.close()}catch{}}async function Di(e,n,t){try{if(t.size===0){e.send(JSON.stringify({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}}));return}for(let r of t){let o=await r(n);if(o!==void 0){e.send(JSON.stringify({jsonrpc:"2.0",id:n.id,result:o}));return}}e.send(JSON.stringify({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}}))}catch(r){e.send(JSON.stringify({jsonrpc:"2.0",id:n.id,error:{code:-32e3,message:r instanceof Error?r.message:String(r)}}))}}async function Ui(e,n){let t=await Kt(e,n,{jsonrpc:"2.0",id:"initialize",method:"initialize",params:{clientInfo:{name:"kandan-local-codex-runner",version:"0.0.1"},capabilities:{experimentalApi:!0}}});if("error"in t)throw new Error(`codex initialize failed: ${t.error.message}`);let r={jsonrpc:"2.0",method:"initialized"};we({provider:"codex-app-server",captureKind:"outgoing",rawText:JSON.stringify(r),rawValue:{message:r}}),e.send(JSON.stringify(r))}function Kt(e,n,t){return e.readyState!==WebSocket.OPEN?Promise.reject(new Error("codex app-server websocket is not open")):new Promise((r,o)=>{n.set(t.id,{resolve:r,reject:o}),we({provider:"codex-app-server",captureKind:"request",rawText:JSON.stringify(t),rawValue:{message:t}}),e.send(JSON.stringify(t))})}function zi(e){return new Promise((n,t)=>{e.addEventListener("open",()=>n(),{once:!0}),e.addEventListener("error",()=>t(new Error("websocket open failed")),{once:!0})})}var sd=300*1e3;function $e(e){let n=new URL(e);switch(n.protocol){case"ws:":n.protocol="http:";break;case"wss:":n.protocol="https:";break;case"http:":case"https:":break;default:throw new Error("--api-url must be ws://, wss://, http://, or https://")}return n.pathname="",n.search="",n.hash="",n.toString().replace(/\/$/,"")}function gn(e){let n=e.fetchImpl??fetch,t=$e(e.kandanUrl),r=e.authMode==="personal-agent-delegation"?"/api/v2/personal-agent-mcp":"/api/v2/local-runner-mcp",o=e.operatingMode??"text",i=async(s,a,c,d={})=>{let f=new URL(a,t),p={...c,operating_mode:o},y={method:s,headers:{authorization:`Bearer ${e.accessToken}`},...d.signal===void 0?{}:{signal:d.signal}};if(s==="GET")for(let[M,L]of Object.entries(p))L!=null&&f.searchParams.set(M,String(L));else y.headers={...y.headers,"content-type":"application/json"},y.body=JSON.stringify(p);let u=await n(f,y),m=await u.json(),l=$(m)?m:void 0;if(l===void 0)throw new Error(`Linzumi MCP API returned non-object JSON from ${a}`);if(u.ok&&l.ok===!0)return l;let x=typeof l.error=="string"?l.error:`HTTP ${u.status}`,P=typeof l.detail=="string"?l.detail:void 0;throw new Error(`Linzumi MCP API ${a} failed: ${x}${P===void 0?"":` detail=${P}`}`)};return{validateAuth:()=>i("GET",`${r}/validate`,{}),issueOnboardingDiscoveryToken:s=>i("POST",`${r}/onboarding-discovery-token`,s),getMessage:s=>i("GET",`${r}/message`,s),getThread:s=>i("GET",`${r}/thread`,s),getThreadTranscript:s=>i("GET",`${r}/thread-transcript`,s),getChannel:s=>i("GET",`${r}/channel`,s),searchWorkspace:s=>i("GET",`${r}/search`,s),askWorkspace:s=>i("POST",`${r}/ask`,s),aboutMe:s=>i("GET",`${r}/about-me`,s),webSearch:s=>i("GET",`${r}/web-search`,s),fetchUrl:s=>i("GET",`${r}/fetch-url`,s),listUiTargets:s=>i("GET",`${r}/ui-targets`,s),openUi:s=>i("POST",`${r}/open-ui`,s),getCodingJobMetadata:s=>i("GET",`${r}/coding-job-metadata`,s),listProjects:s=>i("GET",`${r}/projects`,s),getProjectTasks:s=>i("GET",`${r}/project-tasks`,s),createProjectTask:s=>i("POST",`${r}/project-tasks/create`,s),updateProjectTask:s=>i("POST",`${r}/project-tasks/update`,s),deleteProjectTask:s=>i("POST",`${r}/project-tasks/delete`,s),addProjectTaskDependency:s=>i("POST",`${r}/project-tasks/add-dependency`,s),removeProjectTaskDependency:s=>i("POST",`${r}/project-tasks/remove-dependency`,s),getCallTranscript:s=>i("GET",`${r}/call-transcript`,s),renameCodingJob:s=>i("POST",`${r}/coding-job-title`,s),upsertCodingJobPlan:(s,a)=>i("POST",`${r}/coding-job-plan`,s,a),replaceCodingJobPlanSteps:s=>i("POST",`${r}/coding-job-plan/steps`,s),updateCodingJobPlanStep:s=>i("POST",`${r}/coding-job-plan/step`,s),linkCodingJobPullRequest:s=>i("POST",`${r}/coding-job-primary-pr`,s),listVaultSecrets:s=>i("GET",`${r}/vault-secrets`,s),noteProjectDirectory:s=>i("POST",`${r}/discovered-project`,s),noteAgentConversation:s=>i("POST",`${r}/discovered-conversation`,s),noteOnboardingDiscoveryStatus:s=>i("POST",`${r}/discovery-status`,s),sendChannelMessage:s=>i("POST",`${r}/channel-message`,s),editMessage:s=>i("POST",`${r}/message/edit`,s),agentReply:s=>i("POST",`${r}/agent-reply`,s),agentTurnProgress:s=>i("POST",`${r}/agent-turn-progress`,s),agentListCodingJobs:s=>i("GET",`${r}/agent/coding-jobs`,s),agentStartCodingJob:s=>i("POST",`${r}/agent/start-coding-job`,s),agentInterruptCodingJob:s=>i("POST",`${r}/agent/interrupt-coding-job`,s),agentSendCodingJobMessage:s=>i("POST",`${r}/agent/send-coding-job-message`,s),agentReadCodingJobThread:s=>i("GET",`${r}/agent/coding-job-thread`,s),agentResolveJobApproval:s=>i("POST",`${r}/agent/resolve-job-approval`,s),agentArchiveCodingJob:s=>i("POST",`${r}/agent/archive-coding-job`,s),agentUnarchiveCodingJob:s=>i("POST",`${r}/agent/unarchive-coding-job`,s),agentSetThreadStatus:s=>i("POST",`${r}/agent/set-thread-status`,s),agentCreateChannel:s=>i("POST",`${r}/agent/create-channel`,s),agentRenameChannel:s=>i("POST",`${r}/agent/rename-channel`,s),agentArchiveChannel:s=>i("POST",`${r}/agent/archive-channel`,s),agentUnarchiveChannel:s=>i("POST",`${r}/agent/unarchive-channel`,s),agentAddReaction:s=>i("POST",`${r}/agent/add-reaction`,s),agentRemoveReaction:s=>i("POST",`${r}/agent/remove-reaction`,s),agentPinMessage:s=>i("POST",`${r}/agent/pin-message`,s),agentUnpinMessage:s=>i("POST",`${r}/agent/unpin-message`,s),prepareMessageUploads:s=>i("POST",`${r}/message-uploads/prepare`,s),attachMessageFiles:s=>i("POST",`${r}/message-files/attach`,s),prepareCustomEmoji:s=>i("POST",`${r}/custom-emoji/prepare`,s),renameCustomEmoji:s=>i("POST",`${r}/custom-emoji/rename`,s),sendThreadReply:s=>i("POST",`${r}/thread-reply`,s),sendDm:s=>i("POST",`${r}/dm`,s),dmOwner:s=>i("POST",`${r}/dm-owner`,s),getVaultValues:s=>i("POST",`${r}/vault-values`,s)}}import{existsSync as Fi,mkdirSync as fd,readFileSync as Vi,renameSync as pd,rmSync as md,writeFileSync as gd}from"node:fs";import{homedir as Bi}from"node:os";import{dirname as _d,join as Gi}from"node:path";function qi(){return Gi(Bi(),".linzumi","auth.json")}function hn(e,n=qi()){if(!Fi(n))return;let t=Wi(Vi(n,"utf8")),r=$e(e),o=t.local_codex_runner?.[r];if(!(o===void 0||o.access_token.trim()==="")&&!(o.expires_at!==void 0&&Date.parse(o.expires_at)<=Date.now()))return{accessToken:o.access_token,kandanBaseUrl:r,issuedAt:o.issued_at,expiresAt:o.expires_at}}function Wi(e){let n=JSON.parse(e);if(typeof n!="object"||n===null||Array.isArray(n))throw new Error("Kandan auth cache must contain a JSON object");let t=n,r=t.local_codex_runner,o=t.personal_agent_delegation;if(r!==void 0&&(typeof r!="object"||r===null||Array.isArray(r)))throw new Error("Kandan auth cache local_codex_runner must be an object");if(o!==void 0&&(typeof o!="object"||o===null||Array.isArray(o)))throw new Error("Kandan auth cache personal_agent_delegation must be an object");return{version:1,local_codex_runner:Ki(r),personal_agent_delegation:Hi(o)}}function Hi(e){if(typeof e!="object"||e===null||Array.isArray(e))return;let n=e.access_token,t=e.issued_at,r=e.expires_at;if(!(typeof n!="string"||typeof t!="string"))return{access_token:n,issued_at:t,expires_at:typeof r=="string"?r:void 0}}function Ki(e){if(!(typeof e!="object"||e===null||Array.isArray(e)))return Object.fromEntries(Object.entries(e).flatMap(([n,t])=>{if(typeof t!="object"||t===null||Array.isArray(t))return[];let r=t.access_token,o=t.issued_at,i=t.expires_at;return typeof r!="string"||typeof o!="string"?[]:[[n,{access_token:r,issued_at:o,expires_at:typeof i=="string"?i:void 0}]]}))}function Zt(e){let n=e.channelSession;return{...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{reasoningEffort:n.reasoningEffort},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:Yt(n.approvalPolicy,n.sandbox,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...n.sandbox===void 0?{}:{sandbox:n.sandbox}}}function Xt(e){let n=e.channelSession;return{cwd:e.cwd,...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{effort:n.reasoningEffort},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:Yt(n.approvalPolicy,n.sandbox,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...n.sandbox===void 0?{}:{sandboxPolicy:Xi(n.sandbox,e.cwd)}}}function Zi(e,n,t){let r=t?.sandboxedNeverDefault===!0&&n==="workspace-write";switch(e){case void 0:case"default":return r?"never":"on-request";case"never":return n==="danger-full-access"||r?"never":"on-request";case"on-request":case"on-failure":return e;default:throw new Error(`unsupported Codex approval policy: ${e}`)}}function Yt(e,n,t){let r=Zi(e,n,t);return r==="on-failure"?"on-request":r}function Xi(e,n){switch(e){case"danger-full-access":return{type:"dangerFullAccess"};case"read-only":return{type:"readOnly",access:{type:"fullAccess"},networkAccess:!1};case"workspace-write":return{type:"workspaceWrite",writableRoots:[n],readOnlyAccess:{type:"fullAccess"},networkAccess:!1,excludeTmpdirEnvVar:!1,excludeSlashTmp:!1};default:throw new Error(`unsupported Codex sandbox mode: ${e}`)}}var yn={mcpAuthFileContents:"LINZUMI_CLOUD_MCP_AUTH_JSON",llmProxyToken:"LINZUMI_CLOUD_LLM_PROXY_TOKEN"};function Qt(e){let n;try{n=JSON.parse(Buffer.from(e,"base64").toString("utf8"))}catch{throw new Error("invalid guest cloud turn config payload (not base64 JSON)")}if(typeof n!="object"||n===null||Array.isArray(n))throw new Error("invalid guest cloud turn config payload");let t=n;for(let[r,o]of[["codexVersion",t.codexVersion],["sandbox",t.sandbox],["approvalPolicy",t.approvalPolicy],["kandanUrl",t.kandanUrl],["cwd",t.cwd]])if(typeof o!="string"||o==="")throw new Error(`invalid guest cloud turn config payload (${r} missing)`);if(!Array.isArray(t.input))throw new Error("invalid guest cloud turn config payload (input)");if(typeof t.appServerPort!="number"||!Number.isInteger(t.appServerPort))throw new Error("invalid guest cloud turn config payload (appServerPort)");return t}var ne="/home/agent",Yi=`${ne}/.linzumi-provisioned`;var _n="/dev/shm/linzumi",jd=`${_n}/codex`,Nd=`${_n}/mcp-auth.json`;var Ld=`${_n}/codex.env`;var zd=`${ne}/cloud-supervisor.mjs`,er=`${ne}/mcp-server.mjs`,xn=`${ne}/.secrets`,bn=`${xn}/mcp-auth.json`,De=`${ne}/.codex`,nr=`${De}/linzumi-thread-map.json`;var vn=`${ne}/.turn-heartbeats`,tr=5e3,Qi=/^[A-Za-z0-9-]{8,64}$/;function Sn(e){if(!Qi.test(e))throw new Error(`invalid cloud turn nonce: ${JSON.stringify(e.slice(0,80))}`)}var ss=3e4,as=200;function le(e){return e.replace(/\bsmk_[A-Za-z0-9._-]+/g,"smk_[REDACTED]").replace(/\b(sk|lz|tok|bearer)[-_][A-Za-z0-9._-]{8,}/gi,"$1_[REDACTED]")}var ze;function ds(e){ze=e;try{ue(ir(e),{recursive:!0}),ke(e,"")}catch{ze=void 0}}function z(e){let n=`${JSON.stringify(e)}
13
+ `;if(process.stdout.write(n),ze!==void 0)try{ns(ze,n)}catch{}}function Ue(e,n,t){z({phase:"exit",ok:e,reason:le(n),turnMs:t})}function cs(e){return{id:e.id,name:e.name,baseUrl:e.baseUrl,envKey:e.envKey,wireApi:e.wireApi,...e.httpHeaders===void 0?{}:{httpHeaders:{...e.httpHeaders}},...e.envHttpHeaders===void 0?{}:{envHttpHeaders:{...e.envHttpHeaders}}}}function ls(e){if(e.sandbox!=="danger-full-access")throw new Error(`guest cloud turn requires sandbox "danger-full-access", got ${JSON.stringify(e.sandbox)}`);if(e.approvalPolicy!=="never")throw new Error(`guest cloud turn requires approvalPolicy "never", got ${JSON.stringify(e.approvalPolicy)}`)}function us(e,n=De){let t=Vt({command:"node",argsPrefix:[er],kandanUrl:e.kandanUrl,authFilePath:bn,ownerUsername:e.ownerUsername,operatingMode:"text",cwd:e.cwd,threadId:e.threadId,agentSession:!0});return Wt(`ws://127.0.0.1:${e.appServerPort}`,{model:e.model,reasoningEffort:e.reasoningEffort,mcpServers:[t],...e.modelProvider===void 0?{}:{modelProvider:cs(e.modelProvider)},env:{CODEX_HOME:n,...sr(e)}})}function sr(e){let n=process.env[yn.llmProxyToken];return e.modelProvider===void 0||n===void 0||n===""?{}:{[e.modelProvider.envKey]:n}}function fs(e,n){let t=process.env[yn.mcpAuthFileContents];if(t===void 0||t==="")throw new Error("guest cloud turn missing MCP auth-cache (LINZUMI_CLOUD_MCP_AUTH_JSON)");ue(e,{recursive:!0,mode:448}),rr(e,448),ke(n,t,{mode:384}),rr(n,384)}function ps(e){try{or(e,{recursive:!0,force:!0})}catch{}}var ms=64;function ar(e){try{let n=JSON.parse(ts(e,"utf8"));if(typeof n!="object"||n===null||Array.isArray(n))return{};let t={};for(let[r,o]of Object.entries(n))typeof o=="string"&&o!==""&&(t[r]=o);return t}catch{return{}}}function gs(e,n,t){try{let r=ar(e);delete r[n];let o=Object.entries(r),i=o.slice(Math.max(0,o.length-(ms-1)));i.push([n,t]),ue(ir(e),{recursive:!0}),ke(e,JSON.stringify(Object.fromEntries(i)))}catch{}}var hs=new Set(["turn/completed","turn/failed","turn/aborted"]),ys=2e3;function dr(e){let n=I(I(e)?.item);if(n===void 0||_(n.type)!=="agentMessage")return"";let t=_(n.text);return t!==void 0&&t!==""?t:(fn(n.content)??[]).map(i=>{let s=I(i);if(s===void 0)return;let a=_(s.type);if(!(a!=="text"&&a!=="output_text"&&a!=="input_text"))return _(s.text)??_(s.content)}).filter(i=>i!==void 0&&i!=="").join(`
14
14
 
15
- `)}function _i(e){let n=I(I(e)?.item);if(n===void 0)return!1;let t=_(n.type);if(t!=="mcpToolCall"&&t!=="dynamicToolCall"&&t!=="collabAgentToolCall"||_(n.status)!=="completed"||n.error!==void 0&&n.error!==null||n.success===!1)return!1;let r=_(n.tool)??"";return(r.split("__").pop()??r)==="linzumi_agent_reply"}var xi=15e3;function bi(e){return/already_replied|no_active_asker_binding/i.test(e)}async function vi(e){let n=e.body.trim();if(n==="")return"skipped";let t=hn(e.kandanUrl,e.mcpAuthPath);if(t===void 0)throw new Error("reply relay: no agent token in the guest MCP auth file");let r=async(s,i)=>{let a=new AbortController,c=setTimeout(()=>a.abort(),xi);try{return await fetch(s,{...i,signal:a.signal})}finally{clearTimeout(c)}},o=gn({kandanUrl:e.kandanUrl,accessToken:t.accessToken,operatingMode:"text",fetchImpl:r});try{return await o.agentReply({body:n}),"posted"}catch(s){let i=s instanceof Error?s.message:String(s);if(bi(i))return"already";throw new Error(`reply relay failed: ${i}`)}}var Si=900,wi=1e4,ki=3,Ci=8e3;function Ei(e){return/\bHTTP 4\d\d\b/.test(e)||/\b(forbidden|not_agent_session|no_active_asker_binding|invalid_agent_turn_progress_request|body_required|already_replied)\b/i.test(e)}function Oi(e){return async n=>{let t=hn(e.kandanUrl,e.mcpAuthPath);if(t===void 0)throw new Error("turn progress: no agent token in the guest MCP auth file");let r=async(s,i)=>{let a=new AbortController,c=setTimeout(()=>a.abort(),wi);try{return await fetch(s,{...i,signal:a.signal})}finally{clearTimeout(c)}};return gn({kandanUrl:e.kandanUrl,accessToken:t.accessToken,operatingMode:"text",fetchImpl:r}).agentTurnProgress(n)}}function Pi(e){let n=Date.now,t=e.flushIntervalMs??Si,r=e.log??z,o=e.post??Oi({kandanUrl:e.kandanUrl,mcpAuthPath:e.mcpAuthPath}),s=new Map,i=!1,a=0,c=0,d,f,p=!1,y=!1,u=(v,h)=>{let S=s.get(v);if(S!==void 0)return S;let k={kind:h,text:"",snapshotIndex:0,state:"streaming",dirty:!1,lastFlushMs:0,ackedState:void 0};return s.set(v,k),k},m=v=>v.state==="streaming"?v.lastFlushMs+t:0,l=async(v,h)=>{let S=h.text,k=h.state;h.dirty=!1,h.snapshotIndex+=1,h.lastFlushMs=n();try{return await o({stream_key:`${e.streamKeyPrefix}:${v}`,item_id:v,kind:h.kind,body:S,stream_state:k,snapshot_index:h.snapshotIndex,...e.sourceSeq===void 0?{}:{source_seq:e.sourceSeq}}),c+=1,a=0,h.ackedState=k,!0}catch(b){a+=1;let w=b instanceof Error?b.message:String(b);return Ei(w)?(y=!0,i=!0,r({phase:"progress",outcome:"permanent_reject",message:le(w)}),!1):(r({phase:"progress",outcome:"post_failed",consecutive_failures:a,message:le(w)}),a>=ki&&(i=!0,r({phase:"progress",outcome:"disabled"})),!1)}},x=async()=>{for(;;){if(i)return;let v=n(),h,S=!1;for(let[k,b]of s){if(!b.dirty||b.text==="")continue;let w=m(b);w<=v?(await l(k,b),S=!0):h=h===void 0?w:Math.min(h,w)}if(!S){h!==void 0&&(clearTimeout(f),f=setTimeout(E,Math.max(10,h-n())),f.unref?.());return}}};function E(){i||p||d!==void 0||(d=x().catch(()=>{}).finally(()=>{d=void 0}))}return{onNotification:v=>{try{let h=I(v.params)??{};if(v.method==="item/agentMessage/delta"){let S=$t(h);if(S!==void 0){let k=u(S.itemKey,"codex_assistant_message");k.text+=S.delta,k.dirty=!0,E()}return}if(v.method==="item/reasoning/textDelta"){let S=Ut(h);if(S!==void 0){let k=u(S.itemKey,"codex_reasoning");k.text+=S.delta,k.dirty=!0,E()}return}if(v.method==="item/completed"){let S=I(h.item),k=_(S?.type),b=_(S?.id);if(b===void 0)return;if(k==="agentMessage"){let w=dr(v.params),g=u(b,"codex_assistant_message");w!==""&&(g.text=w),g.state="completed",g.dirty=!0,E()}else if(k==="reasoning"){let w=s.get(b);w!==void 0&&(w.state="completed",w.dirty=!0,E())}}}catch(h){r({phase:"progress",outcome:"notification_error",message:le(h instanceof Error?h.message:String(h))})}},finish:async v=>{try{let h=n()+(e.finishDeadlineMs??Ci),S=()=>new Promise(b=>setTimeout(b,Math.max(0,h-n())).unref?.());p=!0,clearTimeout(f),d!==void 0&&await Promise.race([d,S()]);for(let b of s.values())b.state==="streaming"&&b.text!==""&&(b.state=v);let k=250;for(;;){let b=[...s.entries()].filter(([,g])=>g.text!==""&&g.state!==g.ackedState);if(b.length===0||y||n()>=h)break;let w=!1;for(let[g,T]of b){if(y||n()>=h)break;await l(g,T)||(w=!0)}w&&!y&&n()<h&&await new Promise(g=>setTimeout(g,k))}r({phase:"progress",outcome:"finished",frames_posted:c,disabled:i})}catch(h){r({phase:"progress",outcome:"finish_error",message:le(h instanceof Error?h.message:String(h))})}}}}function Ti(e){if(e==="item/commandExecution/requestApproval"||e==="item/fileChange/requestApproval")return{decision:"approved"}}async function Ii(e,n,t){for(;;){if(t.exitCode!==null&&t.exitCode!==void 0)throw new Error(`codex app-server exited before it accepted a connection (code ${t.exitCode})`);try{return await Kt(e)}catch(r){if(Date.now()>=n)throw r;await new Promise(o=>setTimeout(o,ai))}}}var Ri=360*60*1e3;function Ai(e,n){try{for(let t of ri(e))try{let r=Fe(e,t);n-oi(r).mtimeMs>Ri&&si(r)}catch{}}catch{}}function Mi(e,n,t=tr){Sn(n);let r=Fe(e,`${n}.beat`),o=()=>{try{ke(r,`${Date.now()}
16
- `)}catch{}};try{ue(e,{recursive:!0})}catch{}Ai(e,Date.now()),o();let s=setInterval(o,t);return s.unref?.(),()=>{clearInterval(s);try{or(r,{force:!0})}catch{}}}function ji(e,n,t){try{Sn(n),ue(e,{recursive:!0}),ke(Fe(e,`${n}.exit`),`${JSON.stringify({phase:"exit",ok:t.ok,reason:le(t.reason),turnMs:t.turnMs})}
17
- `)}catch{}}async function Ni(e,n={}){let t=n.now??Date.now,r=n.secretsDir??xn,o=n.mcpAuthPath??bn,s=n.codexHome??Ue,i=n.threadMapPath??nr,a=t();li(e);let c=e.turnNonce!==void 0&&e.turnNonce!==""?Mi(n.heartbeatDir??vn,e.turnNonce,n.heartbeatIntervalMs):void 0,d,f=()=>{try{d?.pid!==void 0&&d.kill("SIGINT")}catch{}};try{fi(r,o);let p=ui(e,s),y=`ws://127.0.0.1:${e.appServerPort}`;n.spawnCodex===void 0&&ue(s,{recursive:!0,mode:448}),d=n.spawnCodex?n.spawnCodex(p):ei("codex",p,{cwd:e.cwd,env:{PATH:process.env.PATH??"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",...process.env.HOME===void 0?{}:{HOME:process.env.HOME},CODEX_HOME:s,...ir(e)},stdio:["ignore","ignore","inherit"],detached:!1});let u=await Ii(y,a+ii,d);try{u.onRequest?.(g=>Ti(g.method));let m=e.codexThreadId,l;if(m!==void 0&&m!==""){let g=ar(i)[m];g!==void 0&&("error"in await u.request("thread/resume",{threadId:g,...Zt({cwd:e.cwd,channelSession:{model:e.model,reasoningEffort:e.reasoningEffort,approvalPolicy:e.approvalPolicy,sandbox:e.sandbox}})})||(l=g))}if(l===void 0){let g=await u.request("thread/start",{cwd:e.cwd,serviceName:"kandan-cloud-agent",personality:"pragmatic",approvalPolicy:e.approvalPolicy,...e.model===void 0?{}:{model:e.model},...e.sandbox===void 0?{}:{sandbox:e.sandbox}});if("error"in g)throw new Error(`thread/start failed: ${g.error.message}`);let T=_(I(I(g.result)?.thread)?.id);if(T===void 0)throw new Error("thread/start response did not include thread.id");l=T,m!==void 0&&m!==""&&gi(i,m,l),z({phase:"thread",mode:"started"})}else z({phase:"thread",mode:"resumed"});let x="",E=!1,M=!1,L=Pi({kandanUrl:e.kandanUrl,mcpAuthPath:o,streamKeyPrefix:e.turnNonce!==void 0&&e.turnNonce!==""?`cloud:${e.turnNonce}`:`cloud:${a}`,...e.sourceSeq===void 0?{}:{sourceSeq:e.sourceSeq},post:n.progressPost,flushIntervalMs:n.progressFlushIntervalMs,now:t}),v,h=new Promise((g,T)=>{v={resolve:g,reject:T}}),S=g=>{if(M){z({phase:"codex-exit",benign:!0});return}setTimeout(()=>{M||v?.reject(g())},n.postTerminalGraceMs??yi).unref?.()};u.onNotification(g=>{if(z({phase:"notification",method:g.method}),L.onNotification(g),g.method==="item/completed"){let K=dr(g.params);K!==""&&(x=K),_i(g.params)&&(E=!0)}if(!hi.has(g.method))return;M=!0;let T=g.method==="turn/completed";v?.resolve({ok:T,reason:g.method==="turn/completed"?"turn completed":`turn terminal: ${g.method}`,turnMs:t()-a})}),u.onClose?.(g=>S(()=>new Error(`codex connection closed before a turn terminal: ${g?.message??"connection closed"}`))),d?.once("exit",g=>S(()=>new Error(`codex app-server process exited mid-turn (code ${g})`)));let k=await u.request("turn/start",{threadId:l,input:e.input,...Xt({cwd:e.cwd,channelSession:{model:e.model,reasoningEffort:e.reasoningEffort,approvalPolicy:e.approvalPolicy,sandbox:e.sandbox}})});if("error"in k)throw new Error(`turn/start failed: ${k.error.message}`);let b;try{b=await h}catch(g){throw await L.finish("failed"),g}let w=b;if(b.ok){let g=n.relayReply??vi;try{let T=await g({kandanUrl:e.kandanUrl,mcpAuthPath:o,body:x});z({phase:"reply",relay:T,reply_tool_call_seen:E,captured_chars:x.length}),T==="skipped"&&!E&&(w={ok:!1,reason:"turn completed but no reply was posted: codex produced no visible output to relay and never called linzumi_agent_reply",turnMs:b.turnMs})}catch(T){let K=T instanceof Error?T.message:String(T);z({phase:"reply",relay:"failed",reason:K}),w={ok:!1,reason:K,turnMs:b.turnMs}}}return await L.finish(w.ok?"completed":"failed"),w}finally{u.close()}}finally{c?.(),f(),pi(r)}}async function cr(e=process.argv,n={}){let t=e[2];if(t==="--selftest")return z({phase:"selftest",ok:!0,node:process.version}),0;if(t===void 0||t==="")return De(!1,"missing turn config argv[2]",0),1;let r;try{r=Qt(t)}catch(a){return De(!1,`config decode failed: ${a instanceof Error?a.message:String(a)}`,0),1}let o=n.heartbeatDir??vn;di(Fe(o,"last-turn.debug.jsonl")),z({phase:"boot",turn_nonce:r.turnNonce??null,node:process.version});let s=n.runTurn??Ni,i=a=>{r.turnNonce!==void 0&&r.turnNonce!==""&&ji(o,r.turnNonce,a)};try{let a=await s(r);return i(a),De(a.ok,a.reason,a.turnMs),a.ok?0:1}catch(a){let c=a instanceof Error?a.message:String(a);return i({ok:!1,reason:c,turnMs:0}),De(!1,c,0),1}}function lr(e){let n=!1,t=()=>{n||(n=!0,process.exit(e))};try{process.stdout.write("",t)}catch{t()}setTimeout(t,1e3).unref?.()}cr(process.argv).then(e=>{lr(e)}).catch(e=>{process.stdout.write(`${JSON.stringify({phase:"exit",ok:!1,reason:e instanceof Error?e.message:String(e),turnMs:0})}
15
+ `)}function _s(e){let n=I(I(e)?.item);if(n===void 0)return!1;let t=_(n.type);if(t!=="mcpToolCall"&&t!=="dynamicToolCall"&&t!=="collabAgentToolCall"||_(n.status)!=="completed"||n.error!==void 0&&n.error!==null||n.success===!1)return!1;let r=_(n.tool)??"";return(r.split("__").pop()??r)==="linzumi_agent_reply"}var xs=15e3;function bs(e){return/already_replied|no_active_asker_binding/i.test(e)}async function vs(e){let n=e.body.trim();if(n==="")return"skipped";let t=hn(e.kandanUrl,e.mcpAuthPath);if(t===void 0)throw new Error("reply relay: no agent token in the guest MCP auth file");let r=async(i,s)=>{let a=new AbortController,c=setTimeout(()=>a.abort(),xs);try{return await fetch(i,{...s,signal:a.signal})}finally{clearTimeout(c)}},o=gn({kandanUrl:e.kandanUrl,accessToken:t.accessToken,operatingMode:"text",fetchImpl:r});try{return await o.agentReply({body:n}),"posted"}catch(i){let s=i instanceof Error?i.message:String(i);if(bs(s))return"already";throw new Error(`reply relay failed: ${s}`)}}var Ss=900,ws=1e4,ks=3,Es=8e3;function Ps(e){return/\bHTTP 4\d\d\b/.test(e)||/\b(forbidden|not_agent_session|no_active_asker_binding|invalid_agent_turn_progress_request|body_required|already_replied)\b/i.test(e)}function Os(e){return async n=>{let t=hn(e.kandanUrl,e.mcpAuthPath);if(t===void 0)throw new Error("turn progress: no agent token in the guest MCP auth file");let r=async(i,s)=>{let a=new AbortController,c=setTimeout(()=>a.abort(),ws);try{return await fetch(i,{...s,signal:a.signal})}finally{clearTimeout(c)}};return gn({kandanUrl:e.kandanUrl,accessToken:t.accessToken,operatingMode:"text",fetchImpl:r}).agentTurnProgress(n)}}function Cs(e){let n=Date.now,t=e.flushIntervalMs??Ss,r=e.log??z,o=e.post??Os({kandanUrl:e.kandanUrl,mcpAuthPath:e.mcpAuthPath}),i=new Map,s=!1,a=0,c=0,d,f,p=!1,y=!1,u=(v,h)=>{let S=i.get(v);if(S!==void 0)return S;let k={kind:h,text:"",snapshotIndex:0,state:"streaming",dirty:!1,lastFlushMs:0,ackedState:void 0};return i.set(v,k),k},m=v=>v.state==="streaming"?v.lastFlushMs+t:0,l=async(v,h)=>{let S=h.text,k=h.state;h.dirty=!1,h.snapshotIndex+=1,h.lastFlushMs=n();try{return await o({stream_key:`${e.streamKeyPrefix}:${v}`,item_id:v,kind:h.kind,body:S,stream_state:k,snapshot_index:h.snapshotIndex,...e.sourceSeq===void 0?{}:{source_seq:e.sourceSeq}}),c+=1,a=0,h.ackedState=k,!0}catch(b){a+=1;let w=b instanceof Error?b.message:String(b);return Ps(w)?(y=!0,s=!0,r({phase:"progress",outcome:"permanent_reject",message:le(w)}),!1):(r({phase:"progress",outcome:"post_failed",consecutive_failures:a,message:le(w)}),a>=ks&&(s=!0,r({phase:"progress",outcome:"disabled"})),!1)}},x=async()=>{for(;;){if(s)return;let v=n(),h,S=!1;for(let[k,b]of i){if(!b.dirty||b.text==="")continue;let w=m(b);w<=v?(await l(k,b),S=!0):h=h===void 0?w:Math.min(h,w)}if(!S){h!==void 0&&(clearTimeout(f),f=setTimeout(P,Math.max(10,h-n())),f.unref?.());return}}};function P(){s||p||d!==void 0||(d=x().catch(()=>{}).finally(()=>{d=void 0}))}return{onNotification:v=>{try{let h=I(v.params)??{};if(v.method==="item/agentMessage/delta"){let S=$t(h);if(S!==void 0){let k=u(S.itemKey,"codex_assistant_message");k.text+=S.delta,k.dirty=!0,P()}return}if(v.method==="item/reasoning/textDelta"){let S=Dt(h);if(S!==void 0){let k=u(S.itemKey,"codex_reasoning");k.text+=S.delta,k.dirty=!0,P()}return}if(v.method==="item/completed"){let S=I(h.item),k=_(S?.type),b=_(S?.id);if(b===void 0)return;if(k==="agentMessage"){let w=dr(v.params),g=u(b,"codex_assistant_message");w!==""&&(g.text=w),g.state="completed",g.dirty=!0,P()}else if(k==="reasoning"){let w=i.get(b);w!==void 0&&(w.state="completed",w.dirty=!0,P())}}}catch(h){r({phase:"progress",outcome:"notification_error",message:le(h instanceof Error?h.message:String(h))})}},finish:async v=>{try{let h=n()+(e.finishDeadlineMs??Es),S=()=>new Promise(b=>setTimeout(b,Math.max(0,h-n())).unref?.());p=!0,clearTimeout(f),d!==void 0&&await Promise.race([d,S()]);for(let b of i.values())b.state==="streaming"&&b.text!==""&&(b.state=v);let k=250;for(;;){let b=[...i.entries()].filter(([,g])=>g.text!==""&&g.state!==g.ackedState);if(b.length===0||y||n()>=h)break;let w=!1;for(let[g,T]of b){if(y||n()>=h)break;await l(g,T)||(w=!0)}w&&!y&&n()<h&&await new Promise(g=>setTimeout(g,k))}r({phase:"progress",outcome:"finished",frames_posted:c,disabled:s})}catch(h){r({phase:"progress",outcome:"finish_error",message:le(h instanceof Error?h.message:String(h))})}}}}function Ts(e){if(e==="item/commandExecution/requestApproval"||e==="item/fileChange/requestApproval")return{decision:"approved"}}async function Is(e,n,t){for(;;){if(t.exitCode!==null&&t.exitCode!==void 0)throw new Error(`codex app-server exited before it accepted a connection (code ${t.exitCode})`);try{return await Ht(e)}catch(r){if(Date.now()>=n)throw r;await new Promise(o=>setTimeout(o,as))}}}var As=360*60*1e3;function Rs(e,n){try{for(let t of rs(e))try{let r=Fe(e,t);n-os(r).mtimeMs>As&&is(r)}catch{}}catch{}}function Ms(e,n,t=tr){Sn(n);let r=Fe(e,`${n}.beat`),o=()=>{try{ke(r,`${Date.now()}
16
+ `)}catch{}};try{ue(e,{recursive:!0})}catch{}Rs(e,Date.now()),o();let i=setInterval(o,t);return i.unref?.(),()=>{clearInterval(i);try{or(r,{force:!0})}catch{}}}function js(e,n,t){try{Sn(n),ue(e,{recursive:!0}),ke(Fe(e,`${n}.exit`),`${JSON.stringify({phase:"exit",ok:t.ok,reason:le(t.reason),turnMs:t.turnMs})}
17
+ `)}catch{}}async function Ns(e,n={}){let t=n.now??Date.now,r=n.secretsDir??xn,o=n.mcpAuthPath??bn,i=n.codexHome??De,s=n.threadMapPath??nr,a=t();ls(e);let c=e.turnNonce!==void 0&&e.turnNonce!==""?Ms(n.heartbeatDir??vn,e.turnNonce,n.heartbeatIntervalMs):void 0,d,f=()=>{try{d?.pid!==void 0&&d.kill("SIGINT")}catch{}};try{fs(r,o);let p=us(e,i),y=`ws://127.0.0.1:${e.appServerPort}`;n.spawnCodex===void 0&&ue(i,{recursive:!0,mode:448}),d=n.spawnCodex?n.spawnCodex(p):es("codex",p,{cwd:e.cwd,env:{PATH:process.env.PATH??"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",...process.env.HOME===void 0?{}:{HOME:process.env.HOME},CODEX_HOME:i,...sr(e)},stdio:["ignore","ignore","inherit"],detached:!1});let u=await Is(y,a+ss,d);try{u.onRequest?.(g=>Ts(g.method));let m=e.codexThreadId,l;if(m!==void 0&&m!==""){let g=ar(s)[m];g!==void 0&&("error"in await u.request("thread/resume",{threadId:g,...Zt({cwd:e.cwd,channelSession:{model:e.model,reasoningEffort:e.reasoningEffort,approvalPolicy:e.approvalPolicy,sandbox:e.sandbox}})})||(l=g))}if(l===void 0){let g=await u.request("thread/start",{cwd:e.cwd,serviceName:"kandan-cloud-agent",personality:"pragmatic",approvalPolicy:e.approvalPolicy,...e.model===void 0?{}:{model:e.model},...e.sandbox===void 0?{}:{sandbox:e.sandbox}});if("error"in g)throw new Error(`thread/start failed: ${g.error.message}`);let T=_(I(I(g.result)?.thread)?.id);if(T===void 0)throw new Error("thread/start response did not include thread.id");l=T,m!==void 0&&m!==""&&gs(s,m,l),z({phase:"thread",mode:"started"})}else z({phase:"thread",mode:"resumed"});let x="",P=!1,M=!1,L=Cs({kandanUrl:e.kandanUrl,mcpAuthPath:o,streamKeyPrefix:e.turnNonce!==void 0&&e.turnNonce!==""?`cloud:${e.turnNonce}`:`cloud:${a}`,...e.sourceSeq===void 0?{}:{sourceSeq:e.sourceSeq},post:n.progressPost,flushIntervalMs:n.progressFlushIntervalMs,now:t}),v,h=new Promise((g,T)=>{v={resolve:g,reject:T}}),S=g=>{if(M){z({phase:"codex-exit",benign:!0});return}setTimeout(()=>{M||v?.reject(g())},n.postTerminalGraceMs??ys).unref?.()};u.onNotification(g=>{if(z({phase:"notification",method:g.method}),L.onNotification(g),g.method==="item/completed"){let H=dr(g.params);H!==""&&(x=H),_s(g.params)&&(P=!0)}if(!hs.has(g.method))return;M=!0;let T=g.method==="turn/completed";v?.resolve({ok:T,reason:g.method==="turn/completed"?"turn completed":`turn terminal: ${g.method}`,turnMs:t()-a})}),u.onClose?.(g=>S(()=>new Error(`codex connection closed before a turn terminal: ${g?.message??"connection closed"}`))),d?.once("exit",g=>S(()=>new Error(`codex app-server process exited mid-turn (code ${g})`)));let k=await u.request("turn/start",{threadId:l,input:e.input,...Xt({cwd:e.cwd,channelSession:{model:e.model,reasoningEffort:e.reasoningEffort,approvalPolicy:e.approvalPolicy,sandbox:e.sandbox}})});if("error"in k)throw new Error(`turn/start failed: ${k.error.message}`);let b;try{b=await h}catch(g){throw await L.finish("failed"),g}let w=b;if(b.ok){let g=n.relayReply??vs;try{let T=await g({kandanUrl:e.kandanUrl,mcpAuthPath:o,body:x});z({phase:"reply",relay:T,reply_tool_call_seen:P,captured_chars:x.length}),T==="skipped"&&!P&&(w={ok:!1,reason:"turn completed but no reply was posted: codex produced no visible output to relay and never called linzumi_agent_reply",turnMs:b.turnMs})}catch(T){let H=T instanceof Error?T.message:String(T);z({phase:"reply",relay:"failed",reason:H}),w={ok:!1,reason:H,turnMs:b.turnMs}}}return await L.finish(w.ok?"completed":"failed"),w}finally{u.close()}}finally{c?.(),f(),ps(r)}}async function cr(e=process.argv,n={}){let t=e[2];if(t==="--selftest")return z({phase:"selftest",ok:!0,node:process.version}),0;if(t===void 0||t==="")return Ue(!1,"missing turn config argv[2]",0),1;let r;try{r=Qt(t)}catch(a){return Ue(!1,`config decode failed: ${a instanceof Error?a.message:String(a)}`,0),1}let o=n.heartbeatDir??vn;ds(Fe(o,"last-turn.debug.jsonl")),z({phase:"boot",turn_nonce:r.turnNonce??null,node:process.version});let i=n.runTurn??Ns,s=a=>{r.turnNonce!==void 0&&r.turnNonce!==""&&js(o,r.turnNonce,a)};try{let a=await i(r);return s(a),Ue(a.ok,a.reason,a.turnMs),a.ok?0:1}catch(a){let c=a instanceof Error?a.message:String(a);return s({ok:!1,reason:c,turnMs:0}),Ue(!1,c,0),1}}function lr(e){let n=!1,t=()=>{n||(n=!0,process.exit(e))};try{process.stdout.write("",t)}catch{t()}setTimeout(t,1e3).unref?.()}cr(process.argv).then(e=>{lr(e)}).catch(e=>{process.stdout.write(`${JSON.stringify({phase:"exit",ok:!1,reason:e instanceof Error?e.message:String(e),turnMs:0})}
18
18
  `),lr(1)});