@linzumi/cli 1.0.223 → 1.0.224
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 +1 -1
- package/dist/impl-res/cloud-supervisor.mjs +11 -11
- package/dist/impl-res/index.js +372 -224
- package/dist/impl-ts/cloud-supervisor.mjs +11 -11
- package/dist/impl-ts/index.js +464 -464
- package/package.json +1 -1
- package/scripts/build-vm-sandbox-parity-oracle.mjs +2 -2
package/README.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { createRequire as __linzumiBundleCreateRequire } from 'node:module';
|
|
2
2
|
const require = __linzumiBundleCreateRequire(import.meta.url);
|
|
3
|
-
var Kr=Object.create;var Qn=Object.defineProperty;var Qr=Object.getOwnPropertyDescriptor;var Zr=Object.getOwnPropertyNames;var Xr=Object.getPrototypeOf,Yr=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 j=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var eo=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of Zr(n))!Yr.call(e,o)&&o!==t&&Qn(e,o,{get:()=>n[o],enumerable:!(r=Qr(n,o))||r.enumerable});return e};var be=(e,n,t)=>(t=e!=null?Kr(Xr(e)):{},eo(n||!e||!e.__esModule?Qn(t,"default",{value:e,enumerable:!0}):t,e));var G=j((Aa,Yn)=>{"use strict";var Zn=["nodebuffer","arraybuffer","fragments"],Xn=typeof Blob<"u";Xn&&Zn.push("blob");Yn.exports={BINARY_TYPES:Zn,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:Xn,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var ve=j((Ia,Je)=>{"use strict";var{EMPTY_BUFFER:no}=G(),cn=Buffer[Symbol.species];function to(e,n){if(e.length===0)return no;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 cn(t.buffer,t.byteOffset,r):t}function et(e,n,t,r,o){for(let i=0;i<o;i++)t[r+i]=e[i]^n[i&3]}function nt(e,n){for(let t=0;t<e.length;t++)e[t]^=n[t&3]}function ro(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function un(e){if(un.readOnly=!0,Buffer.isBuffer(e))return e;let n;return e instanceof ArrayBuffer?n=new cn(e):ArrayBuffer.isView(e)?n=new cn(e.buffer,e.byteOffset,e.byteLength):(n=Buffer.from(e),un.readOnly=!1),n}Je.exports={concat:to,mask:et,toArrayBuffer:ro,toBuffer:un,unmask:nt};if(!process.env.WS_NO_BUFFER_UTIL)try{let e=O("bufferutil");Je.exports.mask=function(n,t,r,o,i){i<48?et(n,t,r,o,i):e.mask(n,t,r,o,i)},Je.exports.unmask=function(n,t){n.length<32?nt(n,t):e.unmask(n,t)}}catch{}});var ot=j((Ra,rt)=>{"use strict";var tt=Symbol("kDone"),ln=Symbol("kRun"),fn=class{constructor(n){this[tt]=()=>{this.pending--,this[ln]()},this.concurrency=n||1/0,this.jobs=[],this.pending=0}add(n){this.jobs.push(n),this[ln]()}[ln](){if(this.pending!==this.concurrency&&this.jobs.length){let n=this.jobs.shift();this.pending++,n(this[tt])}}};rt.exports=fn});var we=j((Ma,dt)=>{"use strict";var Se=O("zlib"),it=ve(),oo=ot(),{kStatusCode:st}=G(),io=Buffer[Symbol.species],so=Buffer.from([0,0,255,255]),$e=Symbol("permessage-deflate"),V=Symbol("total-length"),ae=Symbol("callback"),H=Symbol("buffers"),de=Symbol("error"),Le,pn=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,!Le){let o=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;Le=new oo(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[ae];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){Le.add(o=>{this._decompress(n,t,(i,s)=>{o(),r(i,s)})})}compress(n,t,r){Le.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"?Se.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=Se.createInflateRaw({...this._options.zlibInflateOptions,windowBits:s}),this._inflate[$e]=this,this._inflate[V]=0,this._inflate[H]=[],this._inflate.on("error",co),this._inflate.on("data",at)}this._inflate[ae]=r,this._inflate.write(n),t&&this._inflate.write(so),this._inflate.flush(()=>{let i=this._inflate[de];if(i){this._inflate.close(),this._inflate=null,r(i);return}let s=it.concat(this._inflate[H],this._inflate[V]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[V]=0,this._inflate[H]=[],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"?Se.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=Se.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:s}),this._deflate[V]=0,this._deflate[H]=[],this._deflate.on("data",ao)}this._deflate[ae]=r,this._deflate.write(n),this._deflate.flush(Se.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=it.concat(this._deflate[H],this._deflate[V]);t&&(i=new io(i.buffer,i.byteOffset,i.length-4)),this._deflate[ae]=null,this._deflate[V]=0,this._deflate[H]=[],t&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),r(null,i)})}};dt.exports=pn;function ao(e){this[H].push(e),this[V]+=e.length}function at(e){if(this[V]+=e.length,this[$e]._maxPayload<1||this[V]<=this[$e]._maxPayload){this[H].push(e);return}this[de]=new RangeError("Max payload size exceeded"),this[de].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[de][st]=1009,this.removeListener("data",at),this.reset()}function co(e){if(this[$e]._inflate=null,this[de]){this[ae](this[de]);return}e[st]=1007,this[ae](e)}});var ce=j((ja,Ue)=>{"use strict";var{isUtf8:ct}=O("buffer"),{hasBlob:uo}=G(),lo=[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 fo(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function mn(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 po(e){return uo&&typeof e=="object"&&typeof e.arrayBuffer=="function"&&typeof e.type=="string"&&typeof e.stream=="function"&&(e[Symbol.toStringTag]==="Blob"||e[Symbol.toStringTag]==="File")}Ue.exports={isBlob:po,isValidStatusCode:fo,isValidUTF8:mn,tokenChars:lo};if(ct)Ue.exports.isValidUTF8=function(e){return e.length<24?mn(e):ct(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=O("utf-8-validate");Ue.exports.isValidUTF8=function(n){return n.length<32?mn(n):e(n)}}catch{}});var xn=j((Na,yt)=>{"use strict";var{Writable:mo}=O("stream"),ut=we(),{BINARY_TYPES:go,EMPTY_BUFFER:lt,kStatusCode:yo,kWebSocket:ho}=G(),{concat:gn,toArrayBuffer:_o,unmask:xo}=ve(),{isValidStatusCode:bo,isValidUTF8:ft}=ce(),De=Buffer[Symbol.species],L=0,pt=1,mt=2,gt=3,yn=4,hn=5,Fe=6,_n=class extends mo{constructor(n={}){super(),this._allowSynchronousEvents=n.allowSynchronousEvents!==void 0?n.allowSynchronousEvents:!0,this._binaryType=n.binaryType||go[0],this._extensions=n.extensions||{},this._isServer=!!n.isServer,this._maxPayload=n.maxPayload|0,this._skipUTF8Validation=!!n.skipUTF8Validation,this[ho]=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=L}_write(n,t,r){if(this._opcode===8&&this._state==L)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 De(r.buffer,r.byteOffset+n,r.length-n),new De(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 De(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 L:this.getInfo(n);break;case pt:this.getPayloadLength16(n);break;case mt:this.getPayloadLength64(n);break;case gt:this.getMask();break;case yn:this.getData(n);break;case hn:case Fe: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[ut.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=pt:this._payloadLength===127?this._state=mt: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=gt:this._state=yn}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=yn}getData(n){let t=lt;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&&xo(t,this._mask)}if(this._opcode>7){this.controlMessage(t,n);return}if(this._compressed){this._state=hn,this.decompress(t,n);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(n)}decompress(n,t){this._extensions[ut.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===L&&this.startLoop(t)})}dataMessage(n){if(!this._fin){this._state=L;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=gn(r,t):this._binaryType==="arraybuffer"?o=_o(gn(r,t)):this._binaryType==="blob"?o=new Blob(r):o=r,this._allowSynchronousEvents?(this.emit("message",o,!0),this._state=L):(this._state=Fe,setImmediate(()=>{this.emit("message",o,!0),this._state=L,this.startLoop(n)}))}else{let o=gn(r,t);if(!this._skipUTF8Validation&&!ft(o)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");n(i);return}this._state===hn||this._allowSynchronousEvents?(this.emit("message",o,!1),this._state=L):(this._state=Fe,setImmediate(()=>{this.emit("message",o,!1),this._state=L,this.startLoop(n)}))}}controlMessage(n,t){if(this._opcode===8){if(n.length===0)this._loop=!1,this.emit("conclude",1005,lt),this.end();else{let r=n.readUInt16BE(0);if(!bo(r)){let i=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");t(i);return}let o=new De(n.buffer,n.byteOffset+2,n.length-2);if(!this._skipUTF8Validation&&!ft(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=L;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",n),this._state=L):(this._state=Fe,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",n),this._state=L,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[yo]=o,s}};yt.exports=_n});var Sn=j((La,xt)=>{"use strict";var{Duplex:Ja}=O("stream"),{randomFillSync:vo}=O("crypto"),ht=we(),{EMPTY_BUFFER:So,kWebSocket:wo,NOOP:ko}=G(),{isBlob:ue,isValidStatusCode:Eo}=ce(),{mask:_t,toBuffer:Q}=ve(),$=Symbol("kByteLength"),Co=Buffer.alloc(4),ze=8*1024,Z,le=ze,F=0,Po=1,To=2,bn=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=F,this.onerror=ko,this[wo]=void 0}static frame(n,t){let r,o=!1,i=2,s=!1;t.mask&&(r=t.maskBuffer||Co,t.generateMask?t.generateMask(r):(le===ze&&(Z===void 0&&(Z=Buffer.alloc(ze)),vo(Z,0,ze),le=0),r[0]=Z[le++],r[1]=Z[le++],r[2]=Z[le++],r[3]=Z[le++]),s=(r[0]|r[1]|r[2]|r[3])===0,i=6);let a;typeof n=="string"?(!t.mask||s)&&t[$]!==void 0?a=t[$]:(n=Buffer.from(n),a=n.length):(a=n.length,o=t.mask&&t.readOnly&&!s);let d=a;a>=65536?(i+=8,d=127):a>125&&(i+=2,d=126);let c=Buffer.allocUnsafe(o?a+i:i);return c[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(c[0]|=64),c[1]=d,d===126?c.writeUInt16BE(a,2):d===127&&(c[2]=c[3]=0,c.writeUIntBE(a,4,6)),t.mask?(c[1]|=128,c[i-4]=r[0],c[i-3]=r[1],c[i-2]=r[2],c[i-1]=r[3],s?[c,n]:o?(_t(n,r,c,i,a),[c]):(_t(n,r,n,0,a),[c,n])):[c,n]}close(n,t,r,o){let i;if(n===void 0)i=So;else{if(typeof n!="number"||!Eo(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={[$]:i.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==F?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):ue(n)?(o=n.size,i=!1):(n=Q(n),o=n.length,i=Q.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let s={[$]:o,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};ue(n)?this._state!==F?this.enqueue([this.getBlobData,n,!1,s,r]):this.getBlobData(n,!1,s,r):this._state!==F?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):ue(n)?(o=n.size,i=!1):(n=Q(n),o=n.length,i=Q.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let s={[$]:o,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};ue(n)?this._state!==F?this.enqueue([this.getBlobData,n,!1,s,r]):this.getBlobData(n,!1,s,r):this._state!==F?this.enqueue([this.dispatch,n,!1,s,r]):this.sendFrame(e.frame(n,s),r)}send(n,t,r){let o=this._extensions[ht.extensionName],i=t.binary?2:1,s=t.compress,a,d;typeof n=="string"?(a=Buffer.byteLength(n),d=!1):ue(n)?(a=n.size,d=!1):(n=Q(n),a=n.length,d=Q.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 c={[$]:a,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:d,rsv1:s};ue(n)?this._state!==F?this.enqueue([this.getBlobData,n,this._compress,c,r]):this.getBlobData(n,this._compress,c,r):this._state!==F?this.enqueue([this.dispatch,n,this._compress,c,r]):this.dispatch(n,this._compress,c,r)}getBlobData(n,t,r,o){this._bufferedBytes+=r[$],this._state=To,n.arrayBuffer().then(i=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(vn,this,a,o);return}this._bufferedBytes-=r[$];let s=Q(i);t?this.dispatch(s,t,r,o):(this._state=F,this.sendFrame(e.frame(s,r),o),this.dequeue())}).catch(i=>{process.nextTick(Oo,this,i,o)})}dispatch(n,t,r,o){if(!t){this.sendFrame(e.frame(n,r),o);return}let i=this._extensions[ht.extensionName];this._bufferedBytes+=r[$],this._state=Po,i.compress(n,r.fin,(s,a)=>{if(this._socket.destroyed){let d=new Error("The socket was closed while data was being compressed");vn(this,d,o);return}this._bufferedBytes-=r[$],this._state=F,r.readOnly=!1,this.sendFrame(e.frame(a,r),o),this.dequeue()})}dequeue(){for(;this._state===F&&this._queue.length;){let n=this._queue.shift();this._bufferedBytes-=n[3][$],Reflect.apply(n[0],this,n.slice(1))}}enqueue(n){this._bufferedBytes+=n[3][$],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)}};xt.exports=bn;function vn(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 Oo(e,n,t){vn(e,n,t),e.onerror(n)}});var Tt=j(($a,Pt)=>{"use strict";var{kForOnEventAttribute:ke,kListener:wn}=G(),bt=Symbol("kCode"),vt=Symbol("kData"),St=Symbol("kError"),wt=Symbol("kMessage"),kt=Symbol("kReason"),fe=Symbol("kTarget"),Et=Symbol("kType"),Ct=Symbol("kWasClean"),B=class{constructor(n){this[fe]=null,this[Et]=n}get target(){return this[fe]}get type(){return this[Et]}};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[bt]=t.code===void 0?0:t.code,this[kt]=t.reason===void 0?"":t.reason,this[Ct]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[bt]}get reason(){return this[kt]}get wasClean(){return this[Ct]}};Object.defineProperty(X.prototype,"code",{enumerable:!0});Object.defineProperty(X.prototype,"reason",{enumerable:!0});Object.defineProperty(X.prototype,"wasClean",{enumerable:!0});var pe=class extends B{constructor(n,t={}){super(n),this[St]=t.error===void 0?null:t.error,this[wt]=t.message===void 0?"":t.message}get error(){return this[St]}get message(){return this[wt]}};Object.defineProperty(pe.prototype,"error",{enumerable:!0});Object.defineProperty(pe.prototype,"message",{enumerable:!0});var Ee=class extends B{constructor(n,t={}){super(n),this[vt]=t.data===void 0?null:t.data}get data(){return this[vt]}};Object.defineProperty(Ee.prototype,"data",{enumerable:!0});var Ao={addEventListener(e,n,t={}){for(let o of this.listeners(e))if(!t[ke]&&o[wn]===n&&!o[ke])return;let r;if(e==="message")r=function(i,s){let a=new Ee("message",{data:s?i:i.toString()});a[fe]=this,qe(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[fe]=this,qe(n,this,a)};else if(e==="error")r=function(i){let s=new pe("error",{error:i,message:i.message});s[fe]=this,qe(n,this,s)};else if(e==="open")r=function(){let i=new B("open");i[fe]=this,qe(n,this,i)};else return;r[ke]=!!t[ke],r[wn]=n,t.once?this.once(e,r):this.on(e,r)},removeEventListener(e,n){for(let t of this.listeners(e))if(t[wn]===n&&!t[ke]){this.removeListener(e,t);break}}};Pt.exports={CloseEvent:X,ErrorEvent:pe,Event:B,EventTarget:Ao,MessageEvent:Ee};function qe(e,n,t){typeof e=="object"&&e.handleEvent?e.handleEvent.call(e,t):e.call(n,t)}});var kn=j((Ua,Ot)=>{"use strict";var{tokenChars:Ce}=ce();function z(e,n,t){e[n]===void 0?e[n]=[t]:e[n].push(t)}function Io(e){let n=Object.create(null),t=Object.create(null),r=!1,o=!1,i=!1,s,a,d=-1,c=-1,l=-1,f=0;for(;f<e.length;f++)if(c=e.charCodeAt(f),s===void 0)if(l===-1&&Ce[c]===1)d===-1&&(d=f);else if(f!==0&&(c===32||c===9))l===-1&&d!==-1&&(l=f);else if(c===59||c===44){if(d===-1)throw new SyntaxError(`Unexpected character at index ${f}`);l===-1&&(l=f);let p=e.slice(d,l);c===44?(z(n,p,t),t=Object.create(null)):s=p,d=l=-1}else throw new SyntaxError(`Unexpected character at index ${f}`);else if(a===void 0)if(l===-1&&Ce[c]===1)d===-1&&(d=f);else if(c===32||c===9)l===-1&&d!==-1&&(l=f);else if(c===59||c===44){if(d===-1)throw new SyntaxError(`Unexpected character at index ${f}`);l===-1&&(l=f),z(t,e.slice(d,l),!0),c===44&&(z(n,s,t),t=Object.create(null),s=void 0),d=l=-1}else if(c===61&&d!==-1&&l===-1)a=e.slice(d,f),d=l=-1;else throw new SyntaxError(`Unexpected character at index ${f}`);else if(o){if(Ce[c]!==1)throw new SyntaxError(`Unexpected character at index ${f}`);d===-1?d=f:r||(r=!0),o=!1}else if(i)if(Ce[c]===1)d===-1&&(d=f);else if(c===34&&d!==-1)i=!1,l=f;else if(c===92)o=!0;else throw new SyntaxError(`Unexpected character at index ${f}`);else if(c===34&&e.charCodeAt(f-1)===61)i=!0;else if(l===-1&&Ce[c]===1)d===-1&&(d=f);else if(d!==-1&&(c===32||c===9))l===-1&&(l=f);else if(c===59||c===44){if(d===-1)throw new SyntaxError(`Unexpected character at index ${f}`);l===-1&&(l=f);let p=e.slice(d,l);r&&(p=p.replace(/\\/g,""),r=!1),z(t,a,p),c===44&&(z(n,s,t),t=Object.create(null),s=void 0),a=void 0,d=l=-1}else throw new SyntaxError(`Unexpected character at index ${f}`);if(d===-1||i||c===32||c===9)throw new SyntaxError("Unexpected end of input");l===-1&&(l=f);let y=e.slice(d,l);return s===void 0?z(n,y,t):(a===void 0?z(t,y,!0):r?z(t,a,y.replace(/\\/g,"")):z(t,a,y),z(n,s,t)),n}function Ro(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(", ")}Ot.exports={format:Ro,parse:Io}});var We=j((za,Ft)=>{"use strict";var Mo=O("events"),jo=O("https"),No=O("http"),Rt=O("net"),Jo=O("tls"),{randomBytes:Lo,createHash:$o}=O("crypto"),{Duplex:Da,Readable:Fa}=O("stream"),{URL:En}=O("url"),K=we(),Uo=xn(),Do=Sn(),{isBlob:Fo}=ce(),{BINARY_TYPES:At,EMPTY_BUFFER:Ge,GUID:zo,kForOnEventAttribute:Cn,kListener:qo,kStatusCode:Go,kWebSocket:A,NOOP:Mt}=G(),{EventTarget:{addEventListener:Vo,removeEventListener:Bo}}=Tt(),{format:Wo,parse:Ho}=kn(),{toBuffer:Ko}=ve(),Qo=30*1e3,jt=Symbol("kAborted"),Pn=[8,13],W=["CONNECTING","OPEN","CLOSING","CLOSED"],Zo=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,C=class e extends Mo{constructor(n,t,r){super(),this._binaryType=At[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Ge,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]),Nt(this,n,t,r)):(this._autoPong=r.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(n){At.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 Uo({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),i=new Do(n,this._extensions,r.generateMask);this._receiver=o,this._sender=i,this._socket=n,o[A]=this,i[A]=this,n[A]=this,o.on("conclude",ei),o.on("drain",ni),o.on("error",ti),o.on("message",ri),o.on("ping",oi),o.on("pong",ii),i.onerror=si,n.setTimeout&&n.setTimeout(0),n.setNoDelay&&n.setNoDelay(),t.length>0&&n.unshift(t),n.on("close",$t),n.on("data",Be),n.on("end",Ut),n.on("error",Dt),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[K.extensionName]&&this._extensions[K.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){N(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){Tn(this,n,r);return}t===void 0&&(t=!this._isServer),this._sender.ping(n||Ge,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){Tn(this,n,r);return}t===void 0&&(t=!this._isServer),this._sender.pong(n||Ge,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){Tn(this,n,r);return}let o={binary:typeof n!="string",mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[K.extensionName]||(o.compress=!1),this._sender.send(n||Ge,o,r)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){N(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:W.indexOf("CONNECTING")});Object.defineProperty(C.prototype,"CONNECTING",{enumerable:!0,value:W.indexOf("CONNECTING")});Object.defineProperty(C,"OPEN",{enumerable:!0,value:W.indexOf("OPEN")});Object.defineProperty(C.prototype,"OPEN",{enumerable:!0,value:W.indexOf("OPEN")});Object.defineProperty(C,"CLOSING",{enumerable:!0,value:W.indexOf("CLOSING")});Object.defineProperty(C.prototype,"CLOSING",{enumerable:!0,value:W.indexOf("CLOSING")});Object.defineProperty(C,"CLOSED",{enumerable:!0,value:W.indexOf("CLOSED")});Object.defineProperty(C.prototype,"CLOSED",{enumerable:!0,value:W.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[Cn])return n[qo];return null},set(n){for(let t of this.listeners(e))if(t[Cn]){this.removeListener(e,t);break}typeof n=="function"&&this.addEventListener(e,n,{[Cn]:!0})}})});C.prototype.addEventListener=Vo;C.prototype.removeEventListener=Bo;Ft.exports=C;function Nt(e,n,t,r){let o={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:Pn[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,!Pn.includes(o.protocolVersion))throw new RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${Pn.join(", ")})`);let i;if(n instanceof En)i=n;else try{i=new En(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:",d;if(i.protocol!=="ws:"&&!s&&!a?d=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!i.pathname?d="The URL's pathname is empty":i.hash&&(d="The URL contains a fragment identifier"),d){let u=new SyntaxError(d);if(e._redirects===0)throw u;Ve(e,u);return}let c=s?443:80,l=Lo(16).toString("base64"),f=s?jo.request:No.request,y=new Set,p;if(o.createConnection=o.createConnection||(s?Yo:Xo),o.defaultPort=o.defaultPort||c,o.port=i.port||c,o.host=i.hostname.startsWith("[")?i.hostname.slice(1,-1):i.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":l,Connection:"Upgrade",Upgrade:"websocket"},o.path=i.pathname+i.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(p=new K(o.perMessageDeflate!==!0?o.perMessageDeflate:{},!1,o.maxPayload),o.headers["Sec-WebSocket-Extensions"]=Wo({[K.extensionName]:p.offer()})),t.length){for(let u of t){if(typeof u!="string"||!Zo.test(u)||y.has(u))throw new SyntaxError("An invalid or duplicated subprotocol was specified");y.add(u)}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 u=o.path.split(":");o.socketPath=u[0],o.path=u[1]}let g;if(o.followRedirects){if(e._redirects===0){e._originalIpc=a,e._originalSecure=s,e._originalHostOrSocketPath=a?o.socketPath:i.host;let u=r&&r.headers;if(r={...r,headers:{}},u)for(let[v,T]of Object.entries(u))r.headers[v.toLowerCase()]=T}else if(e.listenerCount("redirect")===0){let u=a?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:i.host===e._originalHostOrSocketPath;(!u||e._originalSecure&&!s)&&(delete o.headers.authorization,delete o.headers.cookie,u||delete o.headers.host,o.auth=void 0)}o.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(o.auth).toString("base64")),g=e._req=f(o),e._redirects&&e.emit("redirect",e.url,g)}else g=e._req=f(o);o.timeout&&g.on("timeout",()=>{N(e,g,"Opening handshake has timed out")}),g.on("error",u=>{g===null||g[jt]||(g=e._req=null,Ve(e,u))}),g.on("response",u=>{let v=u.headers.location,T=u.statusCode;if(v&&o.followRedirects&&T>=300&&T<400){if(++e._redirects>o.maxRedirects){N(e,g,"Maximum redirects exceeded");return}g.abort();let I;try{I=new En(v,n)}catch{let _=new SyntaxError(`Invalid URL: ${v}`);Ve(e,_);return}Nt(e,I,t,r)}else e.emit("unexpected-response",g,u)||N(e,g,`Unexpected server response: ${u.statusCode}`)}),g.on("upgrade",(u,v,T)=>{if(e.emit("upgrade",u),e.readyState!==C.CONNECTING)return;g=e._req=null;let I=u.headers.upgrade;if(I===void 0||I.toLowerCase()!=="websocket"){N(e,v,"Invalid Upgrade header");return}let J=$o("sha1").update(l+zo).digest("base64");if(u.headers["sec-websocket-accept"]!==J){N(e,v,"Invalid Sec-WebSocket-Accept header");return}let _=u.headers["sec-websocket-protocol"],m;if(_!==void 0?y.size?y.has(_)||(m="Server sent an invalid subprotocol"):m="Server sent a subprotocol but none was requested":y.size&&(m="Server sent no subprotocol"),m){N(e,v,m);return}_&&(e._protocol=_);let b=u.headers["sec-websocket-extensions"];if(b!==void 0){if(!p){N(e,v,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let k;try{k=Ho(b)}catch{N(e,v,"Invalid Sec-WebSocket-Extensions header");return}let S=Object.keys(k);if(S.length!==1||S[0]!==K.extensionName){N(e,v,"Server indicated an extension that was not requested");return}try{p.accept(k[K.extensionName])}catch{N(e,v,"Invalid Sec-WebSocket-Extensions header");return}e._extensions[K.extensionName]=p}e.setSocket(v,T,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(g,e):g.end()}function Ve(e,n){e._readyState=C.CLOSING,e._errorEmitted=!0,e.emit("error",n),e.emitClose()}function Xo(e){return e.path=e.socketPath,Rt.connect(e)}function Yo(e){return e.path=void 0,!e.servername&&e.servername!==""&&(e.servername=Rt.isIP(e.host)?"":e.host),Jo.connect(e)}function N(e,n,t){e._readyState=C.CLOSING;let r=new Error(t);Error.captureStackTrace(r,N),n.setHeader?(n[jt]=!0,n.abort(),n.socket&&!n.socket.destroyed&&n.socket.destroy(),process.nextTick(Ve,e,r)):(n.destroy(r),n.once("error",e.emit.bind(e,"error")),n.once("close",e.emitClose.bind(e)))}function Tn(e,n,t){if(n){let r=Fo(n)?n.size:Ko(n).length;e._socket?e._sender._bufferedBytes+=r:e._bufferedAmount+=r}if(t){let r=new Error(`WebSocket is not open: readyState ${e.readyState} (${W[e.readyState]})`);process.nextTick(t,r)}}function ei(e,n){let t=this[A];t._closeFrameReceived=!0,t._closeMessage=n,t._closeCode=e,t._socket[A]!==void 0&&(t._socket.removeListener("data",Be),process.nextTick(Jt,t._socket),e===1005?t.close():t.close(e,n))}function ni(){let e=this[A];e.isPaused||e._socket.resume()}function ti(e){let n=this[A];n._socket[A]!==void 0&&(n._socket.removeListener("data",Be),process.nextTick(Jt,n._socket),n.close(e[Go])),n._errorEmitted||(n._errorEmitted=!0,n.emit("error",e))}function It(){this[A].emitClose()}function ri(e,n){this[A].emit("message",e,n)}function oi(e){let n=this[A];n._autoPong&&n.pong(e,!this._isServer,Mt),n.emit("ping",e)}function ii(e){this[A].emit("pong",e)}function Jt(e){e.resume()}function si(e){let n=this[A];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),Qo)}function $t(){let e=this[A];this.removeListener("close",$t),this.removeListener("data",Be),this.removeListener("end",Ut),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[A]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",It),e._receiver.on("finish",It))}function Be(e){this[A]._receiver.write(e)||this.pause()}function Ut(){let e=this[A];e._readyState=C.CLOSING,e._receiver.end(),this.end()}function Dt(){let e=this[A];this.removeListener("error",Dt),this.on("error",Mt),e&&(e._readyState=C.CLOSING,this.destroy())}});var Vt=j((Ga,Gt)=>{"use strict";var qa=We(),{Duplex:ai}=O("stream");function zt(e){e.emit("close")}function di(){!this.destroyed&&this._writableState.finished&&this.destroy()}function qt(e){this.removeListener("error",qt),this.destroy(),this.listenerCount("error")===0&&this.emit("error",e)}function ci(e,n){let t=!0,r=new ai({...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(zt,r);return}let s=!1;e.once("error",function(d){s=!0,i(d)}),e.once("close",function(){s||i(o),process.nextTick(zt,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",di),r.on("error",qt),r}Gt.exports=ci});var Wt=j((Va,Bt)=>{"use strict";var{tokenChars:ui}=ce();function li(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&&ui[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}Bt.exports={parse:li}});var er=j((Wa,Yt)=>{"use strict";var fi=O("events"),He=O("http"),{Duplex:Ba}=O("stream"),{createHash:pi}=O("crypto"),Ht=kn(),Y=we(),mi=Wt(),gi=We(),{GUID:yi,kWebSocket:hi}=G(),_i=/^[+/0-9A-Za-z]{22}==$/,Kt=0,Qt=1,Xt=2,On=class extends fi{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:gi,...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=He.createServer((r,o)=>{let i=He.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=xi(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=Kt}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===Xt){n&&this.once("close",()=>{n(new Error("The server is not running"))}),process.nextTick(Pe,this);return}if(n&&this.once("close",n),this._state!==Qt)if(this._state=Qt,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(Pe,this):process.nextTick(Pe,this);else{let t=this._server;this._removeListeners(),this._removeListeners=this._server=null,t.close(()=>{Pe(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",Zt);let i=n.headers["sec-websocket-key"],s=n.headers.upgrade,a=+n.headers["sec-websocket-version"];if(n.method!=="GET"){ee(this,n,t,405,"Invalid HTTP method");return}if(s===void 0||s.toLowerCase()!=="websocket"){ee(this,n,t,400,"Invalid Upgrade header");return}if(i===void 0||!_i.test(i)){ee(this,n,t,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){ee(this,n,t,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(n)){Te(t,400);return}let d=n.headers["sec-websocket-protocol"],c=new Set;if(d!==void 0)try{c=mi.parse(d)}catch{ee(this,n,t,400,"Invalid Sec-WebSocket-Protocol header");return}let l=n.headers["sec-websocket-extensions"],f={};if(this.options.perMessageDeflate&&l!==void 0){let y=new Y(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let p=Ht.parse(l);p[Y.extensionName]&&(y.accept(p[Y.extensionName]),f[Y.extensionName]=y)}catch{ee(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,(p,g,u,v)=>{if(!p)return Te(t,g||401,u,v);this.completeUpgrade(f,i,c,n,t,r,o)});return}if(!this.options.verifyClient(y))return Te(t,401)}this.completeUpgrade(f,i,c,n,t,r,o)}completeUpgrade(n,t,r,o,i,s,a){if(!i.readable||!i.writable)return i.destroy();if(i[hi])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>Kt)return Te(i,503);let c=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${pi("sha1").update(t+yi).digest("base64")}`],l=new this.options.WebSocket(null,void 0,this.options);if(r.size){let f=this.options.handleProtocols?this.options.handleProtocols(r,o):r.values().next().value;f&&(c.push(`Sec-WebSocket-Protocol: ${f}`),l._protocol=f)}if(n[Y.extensionName]){let f=n[Y.extensionName].params,y=Ht.format({[Y.extensionName]:[f]});c.push(`Sec-WebSocket-Extensions: ${y}`),l._extensions=n}this.emit("headers",c,o),i.write(c.concat(`\r
|
|
3
|
+
var Wr=Object.create;var Qn=Object.defineProperty;var Hr=Object.getOwnPropertyDescriptor;var Kr=Object.getOwnPropertyNames;var Qr=Object.getPrototypeOf,Zr=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 j=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Xr=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of Kr(n))!Zr.call(e,o)&&o!==t&&Qn(e,o,{get:()=>n[o],enumerable:!(r=Hr(n,o))||r.enumerable});return e};var be=(e,n,t)=>(t=e!=null?Wr(Qr(e)):{},Xr(n||!e||!e.__esModule?Qn(t,"default",{value:e,enumerable:!0}):t,e));var G=j((Aa,Yn)=>{"use strict";var Zn=["nodebuffer","arraybuffer","fragments"],Xn=typeof Blob<"u";Xn&&Zn.push("blob");Yn.exports={BINARY_TYPES:Zn,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:Xn,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var ve=j((Ia,Je)=>{"use strict";var{EMPTY_BUFFER:Yr}=G(),un=Buffer[Symbol.species];function eo(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 un(t.buffer,t.byteOffset,r):t}function et(e,n,t,r,o){for(let i=0;i<o;i++)t[r+i]=e[i]^n[i&3]}function nt(e,n){for(let t=0;t<e.length;t++)e[t]^=n[t&3]}function no(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function cn(e){if(cn.readOnly=!0,Buffer.isBuffer(e))return e;let n;return e instanceof ArrayBuffer?n=new un(e):ArrayBuffer.isView(e)?n=new un(e.buffer,e.byteOffset,e.byteLength):(n=Buffer.from(e),cn.readOnly=!1),n}Je.exports={concat:eo,mask:et,toArrayBuffer:no,toBuffer:cn,unmask:nt};if(!process.env.WS_NO_BUFFER_UTIL)try{let e=O("bufferutil");Je.exports.mask=function(n,t,r,o,i){i<48?et(n,t,r,o,i):e.mask(n,t,r,o,i)},Je.exports.unmask=function(n,t){n.length<32?nt(n,t):e.unmask(n,t)}}catch{}});var ot=j((Ra,rt)=>{"use strict";var tt=Symbol("kDone"),ln=Symbol("kRun"),fn=class{constructor(n){this[tt]=()=>{this.pending--,this[ln]()},this.concurrency=n||1/0,this.jobs=[],this.pending=0}add(n){this.jobs.push(n),this[ln]()}[ln](){if(this.pending!==this.concurrency&&this.jobs.length){let n=this.jobs.shift();this.pending++,n(this[tt])}}};rt.exports=fn});var we=j((Ma,dt)=>{"use strict";var Se=O("zlib"),it=ve(),to=ot(),{kStatusCode:st}=G(),ro=Buffer[Symbol.species],oo=Buffer.from([0,0,255,255]),$e=Symbol("permessage-deflate"),V=Symbol("total-length"),ae=Symbol("callback"),H=Symbol("buffers"),de=Symbol("error"),Le,pn=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,!Le){let o=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;Le=new to(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[ae];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){Le.add(o=>{this._decompress(n,t,(i,s)=>{o(),r(i,s)})})}compress(n,t,r){Le.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"?Se.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=Se.createInflateRaw({...this._options.zlibInflateOptions,windowBits:s}),this._inflate[$e]=this,this._inflate[V]=0,this._inflate[H]=[],this._inflate.on("error",so),this._inflate.on("data",at)}this._inflate[ae]=r,this._inflate.write(n),t&&this._inflate.write(oo),this._inflate.flush(()=>{let i=this._inflate[de];if(i){this._inflate.close(),this._inflate=null,r(i);return}let s=it.concat(this._inflate[H],this._inflate[V]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[V]=0,this._inflate[H]=[],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"?Se.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=Se.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:s}),this._deflate[V]=0,this._deflate[H]=[],this._deflate.on("data",io)}this._deflate[ae]=r,this._deflate.write(n),this._deflate.flush(Se.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=it.concat(this._deflate[H],this._deflate[V]);t&&(i=new ro(i.buffer,i.byteOffset,i.length-4)),this._deflate[ae]=null,this._deflate[V]=0,this._deflate[H]=[],t&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),r(null,i)})}};dt.exports=pn;function io(e){this[H].push(e),this[V]+=e.length}function at(e){if(this[V]+=e.length,this[$e]._maxPayload<1||this[V]<=this[$e]._maxPayload){this[H].push(e);return}this[de]=new RangeError("Max payload size exceeded"),this[de].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[de][st]=1009,this.removeListener("data",at),this.reset()}function so(e){if(this[$e]._inflate=null,this[de]){this[ae](this[de]);return}e[st]=1007,this[ae](e)}});var ue=j((ja,Ue)=>{"use strict";var{isUtf8:ut}=O("buffer"),{hasBlob:ao}=G(),uo=[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 co(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function mn(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 lo(e){return ao&&typeof e=="object"&&typeof e.arrayBuffer=="function"&&typeof e.type=="string"&&typeof e.stream=="function"&&(e[Symbol.toStringTag]==="Blob"||e[Symbol.toStringTag]==="File")}Ue.exports={isBlob:lo,isValidStatusCode:co,isValidUTF8:mn,tokenChars:uo};if(ut)Ue.exports.isValidUTF8=function(e){return e.length<24?mn(e):ut(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=O("utf-8-validate");Ue.exports.isValidUTF8=function(n){return n.length<32?mn(n):e(n)}}catch{}});var xn=j((Na,yt)=>{"use strict";var{Writable:fo}=O("stream"),ct=we(),{BINARY_TYPES:po,EMPTY_BUFFER:lt,kStatusCode:mo,kWebSocket:go}=G(),{concat:gn,toArrayBuffer:yo,unmask:ho}=ve(),{isValidStatusCode:_o,isValidUTF8:ft}=ue(),De=Buffer[Symbol.species],L=0,pt=1,mt=2,gt=3,yn=4,hn=5,Fe=6,_n=class extends fo{constructor(n={}){super(),this._allowSynchronousEvents=n.allowSynchronousEvents!==void 0?n.allowSynchronousEvents:!0,this._binaryType=n.binaryType||po[0],this._extensions=n.extensions||{},this._isServer=!!n.isServer,this._maxPayload=n.maxPayload|0,this._skipUTF8Validation=!!n.skipUTF8Validation,this[go]=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=L}_write(n,t,r){if(this._opcode===8&&this._state==L)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 De(r.buffer,r.byteOffset+n,r.length-n),new De(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 De(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 L:this.getInfo(n);break;case pt:this.getPayloadLength16(n);break;case mt:this.getPayloadLength64(n);break;case gt:this.getMask();break;case yn:this.getData(n);break;case hn:case Fe: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[ct.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=pt:this._payloadLength===127?this._state=mt: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=gt:this._state=yn}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=yn}getData(n){let t=lt;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&&ho(t,this._mask)}if(this._opcode>7){this.controlMessage(t,n);return}if(this._compressed){this._state=hn,this.decompress(t,n);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(n)}decompress(n,t){this._extensions[ct.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===L&&this.startLoop(t)})}dataMessage(n){if(!this._fin){this._state=L;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=gn(r,t):this._binaryType==="arraybuffer"?o=yo(gn(r,t)):this._binaryType==="blob"?o=new Blob(r):o=r,this._allowSynchronousEvents?(this.emit("message",o,!0),this._state=L):(this._state=Fe,setImmediate(()=>{this.emit("message",o,!0),this._state=L,this.startLoop(n)}))}else{let o=gn(r,t);if(!this._skipUTF8Validation&&!ft(o)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");n(i);return}this._state===hn||this._allowSynchronousEvents?(this.emit("message",o,!1),this._state=L):(this._state=Fe,setImmediate(()=>{this.emit("message",o,!1),this._state=L,this.startLoop(n)}))}}controlMessage(n,t){if(this._opcode===8){if(n.length===0)this._loop=!1,this.emit("conclude",1005,lt),this.end();else{let r=n.readUInt16BE(0);if(!_o(r)){let i=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");t(i);return}let o=new De(n.buffer,n.byteOffset+2,n.length-2);if(!this._skipUTF8Validation&&!ft(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=L;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",n),this._state=L):(this._state=Fe,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",n),this._state=L,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[mo]=o,s}};yt.exports=_n});var Sn=j((La,xt)=>{"use strict";var{Duplex:Ja}=O("stream"),{randomFillSync:xo}=O("crypto"),ht=we(),{EMPTY_BUFFER:bo,kWebSocket:vo,NOOP:So}=G(),{isBlob:ce,isValidStatusCode:wo}=ue(),{mask:_t,toBuffer:Q}=ve(),$=Symbol("kByteLength"),ko=Buffer.alloc(4),ze=8*1024,Z,le=ze,F=0,Co=1,Eo=2,bn=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=F,this.onerror=So,this[vo]=void 0}static frame(n,t){let r,o=!1,i=2,s=!1;t.mask&&(r=t.maskBuffer||ko,t.generateMask?t.generateMask(r):(le===ze&&(Z===void 0&&(Z=Buffer.alloc(ze)),xo(Z,0,ze),le=0),r[0]=Z[le++],r[1]=Z[le++],r[2]=Z[le++],r[3]=Z[le++]),s=(r[0]|r[1]|r[2]|r[3])===0,i=6);let a;typeof n=="string"?(!t.mask||s)&&t[$]!==void 0?a=t[$]:(n=Buffer.from(n),a=n.length):(a=n.length,o=t.mask&&t.readOnly&&!s);let d=a;a>=65536?(i+=8,d=127):a>125&&(i+=2,d=126);let u=Buffer.allocUnsafe(o?a+i:i);return u[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(u[0]|=64),u[1]=d,d===126?u.writeUInt16BE(a,2):d===127&&(u[2]=u[3]=0,u.writeUIntBE(a,4,6)),t.mask?(u[1]|=128,u[i-4]=r[0],u[i-3]=r[1],u[i-2]=r[2],u[i-1]=r[3],s?[u,n]:o?(_t(n,r,u,i,a),[u]):(_t(n,r,n,0,a),[u,n])):[u,n]}close(n,t,r,o){let i;if(n===void 0)i=bo;else{if(typeof n!="number"||!wo(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={[$]:i.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==F?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):ce(n)?(o=n.size,i=!1):(n=Q(n),o=n.length,i=Q.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let s={[$]:o,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};ce(n)?this._state!==F?this.enqueue([this.getBlobData,n,!1,s,r]):this.getBlobData(n,!1,s,r):this._state!==F?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):ce(n)?(o=n.size,i=!1):(n=Q(n),o=n.length,i=Q.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let s={[$]:o,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};ce(n)?this._state!==F?this.enqueue([this.getBlobData,n,!1,s,r]):this.getBlobData(n,!1,s,r):this._state!==F?this.enqueue([this.dispatch,n,!1,s,r]):this.sendFrame(e.frame(n,s),r)}send(n,t,r){let o=this._extensions[ht.extensionName],i=t.binary?2:1,s=t.compress,a,d;typeof n=="string"?(a=Buffer.byteLength(n),d=!1):ce(n)?(a=n.size,d=!1):(n=Q(n),a=n.length,d=Q.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 u={[$]:a,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:d,rsv1:s};ce(n)?this._state!==F?this.enqueue([this.getBlobData,n,this._compress,u,r]):this.getBlobData(n,this._compress,u,r):this._state!==F?this.enqueue([this.dispatch,n,this._compress,u,r]):this.dispatch(n,this._compress,u,r)}getBlobData(n,t,r,o){this._bufferedBytes+=r[$],this._state=Eo,n.arrayBuffer().then(i=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(vn,this,a,o);return}this._bufferedBytes-=r[$];let s=Q(i);t?this.dispatch(s,t,r,o):(this._state=F,this.sendFrame(e.frame(s,r),o),this.dequeue())}).catch(i=>{process.nextTick(Po,this,i,o)})}dispatch(n,t,r,o){if(!t){this.sendFrame(e.frame(n,r),o);return}let i=this._extensions[ht.extensionName];this._bufferedBytes+=r[$],this._state=Co,i.compress(n,r.fin,(s,a)=>{if(this._socket.destroyed){let d=new Error("The socket was closed while data was being compressed");vn(this,d,o);return}this._bufferedBytes-=r[$],this._state=F,r.readOnly=!1,this.sendFrame(e.frame(a,r),o),this.dequeue()})}dequeue(){for(;this._state===F&&this._queue.length;){let n=this._queue.shift();this._bufferedBytes-=n[3][$],Reflect.apply(n[0],this,n.slice(1))}}enqueue(n){this._bufferedBytes+=n[3][$],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)}};xt.exports=bn;function vn(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 Po(e,n,t){vn(e,n,t),e.onerror(n)}});var Tt=j(($a,Pt)=>{"use strict";var{kForOnEventAttribute:ke,kListener:wn}=G(),bt=Symbol("kCode"),vt=Symbol("kData"),St=Symbol("kError"),wt=Symbol("kMessage"),kt=Symbol("kReason"),fe=Symbol("kTarget"),Ct=Symbol("kType"),Et=Symbol("kWasClean"),B=class{constructor(n){this[fe]=null,this[Ct]=n}get target(){return this[fe]}get type(){return this[Ct]}};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[bt]=t.code===void 0?0:t.code,this[kt]=t.reason===void 0?"":t.reason,this[Et]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[bt]}get reason(){return this[kt]}get wasClean(){return this[Et]}};Object.defineProperty(X.prototype,"code",{enumerable:!0});Object.defineProperty(X.prototype,"reason",{enumerable:!0});Object.defineProperty(X.prototype,"wasClean",{enumerable:!0});var pe=class extends B{constructor(n,t={}){super(n),this[St]=t.error===void 0?null:t.error,this[wt]=t.message===void 0?"":t.message}get error(){return this[St]}get message(){return this[wt]}};Object.defineProperty(pe.prototype,"error",{enumerable:!0});Object.defineProperty(pe.prototype,"message",{enumerable:!0});var Ce=class extends B{constructor(n,t={}){super(n),this[vt]=t.data===void 0?null:t.data}get data(){return this[vt]}};Object.defineProperty(Ce.prototype,"data",{enumerable:!0});var To={addEventListener(e,n,t={}){for(let o of this.listeners(e))if(!t[ke]&&o[wn]===n&&!o[ke])return;let r;if(e==="message")r=function(i,s){let a=new Ce("message",{data:s?i:i.toString()});a[fe]=this,qe(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[fe]=this,qe(n,this,a)};else if(e==="error")r=function(i){let s=new pe("error",{error:i,message:i.message});s[fe]=this,qe(n,this,s)};else if(e==="open")r=function(){let i=new B("open");i[fe]=this,qe(n,this,i)};else return;r[ke]=!!t[ke],r[wn]=n,t.once?this.once(e,r):this.on(e,r)},removeEventListener(e,n){for(let t of this.listeners(e))if(t[wn]===n&&!t[ke]){this.removeListener(e,t);break}}};Pt.exports={CloseEvent:X,ErrorEvent:pe,Event:B,EventTarget:To,MessageEvent:Ce};function qe(e,n,t){typeof e=="object"&&e.handleEvent?e.handleEvent.call(e,t):e.call(n,t)}});var kn=j((Ua,Ot)=>{"use strict";var{tokenChars:Ee}=ue();function z(e,n,t){e[n]===void 0?e[n]=[t]:e[n].push(t)}function Oo(e){let n=Object.create(null),t=Object.create(null),r=!1,o=!1,i=!1,s,a,d=-1,u=-1,l=-1,f=0;for(;f<e.length;f++)if(u=e.charCodeAt(f),s===void 0)if(l===-1&&Ee[u]===1)d===-1&&(d=f);else if(f!==0&&(u===32||u===9))l===-1&&d!==-1&&(l=f);else if(u===59||u===44){if(d===-1)throw new SyntaxError(`Unexpected character at index ${f}`);l===-1&&(l=f);let p=e.slice(d,l);u===44?(z(n,p,t),t=Object.create(null)):s=p,d=l=-1}else throw new SyntaxError(`Unexpected character at index ${f}`);else if(a===void 0)if(l===-1&&Ee[u]===1)d===-1&&(d=f);else if(u===32||u===9)l===-1&&d!==-1&&(l=f);else if(u===59||u===44){if(d===-1)throw new SyntaxError(`Unexpected character at index ${f}`);l===-1&&(l=f),z(t,e.slice(d,l),!0),u===44&&(z(n,s,t),t=Object.create(null),s=void 0),d=l=-1}else if(u===61&&d!==-1&&l===-1)a=e.slice(d,f),d=l=-1;else throw new SyntaxError(`Unexpected character at index ${f}`);else if(o){if(Ee[u]!==1)throw new SyntaxError(`Unexpected character at index ${f}`);d===-1?d=f:r||(r=!0),o=!1}else if(i)if(Ee[u]===1)d===-1&&(d=f);else if(u===34&&d!==-1)i=!1,l=f;else if(u===92)o=!0;else throw new SyntaxError(`Unexpected character at index ${f}`);else if(u===34&&e.charCodeAt(f-1)===61)i=!0;else if(l===-1&&Ee[u]===1)d===-1&&(d=f);else if(d!==-1&&(u===32||u===9))l===-1&&(l=f);else if(u===59||u===44){if(d===-1)throw new SyntaxError(`Unexpected character at index ${f}`);l===-1&&(l=f);let p=e.slice(d,l);r&&(p=p.replace(/\\/g,""),r=!1),z(t,a,p),u===44&&(z(n,s,t),t=Object.create(null),s=void 0),a=void 0,d=l=-1}else throw new SyntaxError(`Unexpected character at index ${f}`);if(d===-1||i||u===32||u===9)throw new SyntaxError("Unexpected end of input");l===-1&&(l=f);let y=e.slice(d,l);return s===void 0?z(n,y,t):(a===void 0?z(t,y,!0):r?z(t,a,y.replace(/\\/g,"")):z(t,a,y),z(n,s,t)),n}function Ao(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(", ")}Ot.exports={format:Ao,parse:Oo}});var We=j((za,Ft)=>{"use strict";var Io=O("events"),Ro=O("https"),Mo=O("http"),Rt=O("net"),jo=O("tls"),{randomBytes:No,createHash:Jo}=O("crypto"),{Duplex:Da,Readable:Fa}=O("stream"),{URL:Cn}=O("url"),K=we(),Lo=xn(),$o=Sn(),{isBlob:Uo}=ue(),{BINARY_TYPES:At,EMPTY_BUFFER:Ge,GUID:Do,kForOnEventAttribute:En,kListener:Fo,kStatusCode:zo,kWebSocket:A,NOOP:Mt}=G(),{EventTarget:{addEventListener:qo,removeEventListener:Go}}=Tt(),{format:Vo,parse:Bo}=kn(),{toBuffer:Wo}=ve(),Ho=30*1e3,jt=Symbol("kAborted"),Pn=[8,13],W=["CONNECTING","OPEN","CLOSING","CLOSED"],Ko=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,E=class e extends Io{constructor(n,t,r){super(),this._binaryType=At[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Ge,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]),Nt(this,n,t,r)):(this._autoPong=r.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(n){At.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 Lo({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),i=new $o(n,this._extensions,r.generateMask);this._receiver=o,this._sender=i,this._socket=n,o[A]=this,i[A]=this,n[A]=this,o.on("conclude",Xo),o.on("drain",Yo),o.on("error",ei),o.on("message",ni),o.on("ping",ti),o.on("pong",ri),i.onerror=oi,n.setTimeout&&n.setTimeout(0),n.setNoDelay&&n.setNoDelay(),t.length>0&&n.unshift(t),n.on("close",$t),n.on("data",Be),n.on("end",Ut),n.on("error",Dt),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[K.extensionName]&&this._extensions[K.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){N(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){Tn(this,n,r);return}t===void 0&&(t=!this._isServer),this._sender.ping(n||Ge,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){Tn(this,n,r);return}t===void 0&&(t=!this._isServer),this._sender.pong(n||Ge,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){Tn(this,n,r);return}let o={binary:typeof n!="string",mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[K.extensionName]||(o.compress=!1),this._sender.send(n||Ge,o,r)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){N(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:W.indexOf("CONNECTING")});Object.defineProperty(E.prototype,"CONNECTING",{enumerable:!0,value:W.indexOf("CONNECTING")});Object.defineProperty(E,"OPEN",{enumerable:!0,value:W.indexOf("OPEN")});Object.defineProperty(E.prototype,"OPEN",{enumerable:!0,value:W.indexOf("OPEN")});Object.defineProperty(E,"CLOSING",{enumerable:!0,value:W.indexOf("CLOSING")});Object.defineProperty(E.prototype,"CLOSING",{enumerable:!0,value:W.indexOf("CLOSING")});Object.defineProperty(E,"CLOSED",{enumerable:!0,value:W.indexOf("CLOSED")});Object.defineProperty(E.prototype,"CLOSED",{enumerable:!0,value:W.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[En])return n[Fo];return null},set(n){for(let t of this.listeners(e))if(t[En]){this.removeListener(e,t);break}typeof n=="function"&&this.addEventListener(e,n,{[En]:!0})}})});E.prototype.addEventListener=qo;E.prototype.removeEventListener=Go;Ft.exports=E;function Nt(e,n,t,r){let o={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:Pn[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,!Pn.includes(o.protocolVersion))throw new RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${Pn.join(", ")})`);let i;if(n instanceof Cn)i=n;else try{i=new Cn(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:",d;if(i.protocol!=="ws:"&&!s&&!a?d=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!i.pathname?d="The URL's pathname is empty":i.hash&&(d="The URL contains a fragment identifier"),d){let c=new SyntaxError(d);if(e._redirects===0)throw c;Ve(e,c);return}let u=s?443:80,l=No(16).toString("base64"),f=s?Ro.request:Mo.request,y=new Set,p;if(o.createConnection=o.createConnection||(s?Zo:Qo),o.defaultPort=o.defaultPort||u,o.port=i.port||u,o.host=i.hostname.startsWith("[")?i.hostname.slice(1,-1):i.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":l,Connection:"Upgrade",Upgrade:"websocket"},o.path=i.pathname+i.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(p=new K(o.perMessageDeflate!==!0?o.perMessageDeflate:{},!1,o.maxPayload),o.headers["Sec-WebSocket-Extensions"]=Vo({[K.extensionName]:p.offer()})),t.length){for(let c of t){if(typeof c!="string"||!Ko.test(c)||y.has(c))throw new SyntaxError("An invalid or duplicated subprotocol was specified");y.add(c)}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 c=o.path.split(":");o.socketPath=c[0],o.path=c[1]}let g;if(o.followRedirects){if(e._redirects===0){e._originalIpc=a,e._originalSecure=s,e._originalHostOrSocketPath=a?o.socketPath:i.host;let c=r&&r.headers;if(r={...r,headers:{}},c)for(let[v,T]of Object.entries(c))r.headers[v.toLowerCase()]=T}else if(e.listenerCount("redirect")===0){let c=a?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:i.host===e._originalHostOrSocketPath;(!c||e._originalSecure&&!s)&&(delete o.headers.authorization,delete o.headers.cookie,c||delete o.headers.host,o.auth=void 0)}o.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(o.auth).toString("base64")),g=e._req=f(o),e._redirects&&e.emit("redirect",e.url,g)}else g=e._req=f(o);o.timeout&&g.on("timeout",()=>{N(e,g,"Opening handshake has timed out")}),g.on("error",c=>{g===null||g[jt]||(g=e._req=null,Ve(e,c))}),g.on("response",c=>{let v=c.headers.location,T=c.statusCode;if(v&&o.followRedirects&&T>=300&&T<400){if(++e._redirects>o.maxRedirects){N(e,g,"Maximum redirects exceeded");return}g.abort();let I;try{I=new Cn(v,n)}catch{let _=new SyntaxError(`Invalid URL: ${v}`);Ve(e,_);return}Nt(e,I,t,r)}else e.emit("unexpected-response",g,c)||N(e,g,`Unexpected server response: ${c.statusCode}`)}),g.on("upgrade",(c,v,T)=>{if(e.emit("upgrade",c),e.readyState!==E.CONNECTING)return;g=e._req=null;let I=c.headers.upgrade;if(I===void 0||I.toLowerCase()!=="websocket"){N(e,v,"Invalid Upgrade header");return}let J=Jo("sha1").update(l+Do).digest("base64");if(c.headers["sec-websocket-accept"]!==J){N(e,v,"Invalid Sec-WebSocket-Accept header");return}let _=c.headers["sec-websocket-protocol"],m;if(_!==void 0?y.size?y.has(_)||(m="Server sent an invalid subprotocol"):m="Server sent a subprotocol but none was requested":y.size&&(m="Server sent no subprotocol"),m){N(e,v,m);return}_&&(e._protocol=_);let b=c.headers["sec-websocket-extensions"];if(b!==void 0){if(!p){N(e,v,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let k;try{k=Bo(b)}catch{N(e,v,"Invalid Sec-WebSocket-Extensions header");return}let S=Object.keys(k);if(S.length!==1||S[0]!==K.extensionName){N(e,v,"Server indicated an extension that was not requested");return}try{p.accept(k[K.extensionName])}catch{N(e,v,"Invalid Sec-WebSocket-Extensions header");return}e._extensions[K.extensionName]=p}e.setSocket(v,T,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(g,e):g.end()}function Ve(e,n){e._readyState=E.CLOSING,e._errorEmitted=!0,e.emit("error",n),e.emitClose()}function Qo(e){return e.path=e.socketPath,Rt.connect(e)}function Zo(e){return e.path=void 0,!e.servername&&e.servername!==""&&(e.servername=Rt.isIP(e.host)?"":e.host),jo.connect(e)}function N(e,n,t){e._readyState=E.CLOSING;let r=new Error(t);Error.captureStackTrace(r,N),n.setHeader?(n[jt]=!0,n.abort(),n.socket&&!n.socket.destroyed&&n.socket.destroy(),process.nextTick(Ve,e,r)):(n.destroy(r),n.once("error",e.emit.bind(e,"error")),n.once("close",e.emitClose.bind(e)))}function Tn(e,n,t){if(n){let r=Uo(n)?n.size:Wo(n).length;e._socket?e._sender._bufferedBytes+=r:e._bufferedAmount+=r}if(t){let r=new Error(`WebSocket is not open: readyState ${e.readyState} (${W[e.readyState]})`);process.nextTick(t,r)}}function Xo(e,n){let t=this[A];t._closeFrameReceived=!0,t._closeMessage=n,t._closeCode=e,t._socket[A]!==void 0&&(t._socket.removeListener("data",Be),process.nextTick(Jt,t._socket),e===1005?t.close():t.close(e,n))}function Yo(){let e=this[A];e.isPaused||e._socket.resume()}function ei(e){let n=this[A];n._socket[A]!==void 0&&(n._socket.removeListener("data",Be),process.nextTick(Jt,n._socket),n.close(e[zo])),n._errorEmitted||(n._errorEmitted=!0,n.emit("error",e))}function It(){this[A].emitClose()}function ni(e,n){this[A].emit("message",e,n)}function ti(e){let n=this[A];n._autoPong&&n.pong(e,!this._isServer,Mt),n.emit("ping",e)}function ri(e){this[A].emit("pong",e)}function Jt(e){e.resume()}function oi(e){let n=this[A];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),Ho)}function $t(){let e=this[A];this.removeListener("close",$t),this.removeListener("data",Be),this.removeListener("end",Ut),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[A]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",It),e._receiver.on("finish",It))}function Be(e){this[A]._receiver.write(e)||this.pause()}function Ut(){let e=this[A];e._readyState=E.CLOSING,e._receiver.end(),this.end()}function Dt(){let e=this[A];this.removeListener("error",Dt),this.on("error",Mt),e&&(e._readyState=E.CLOSING,this.destroy())}});var Vt=j((Ga,Gt)=>{"use strict";var qa=We(),{Duplex:ii}=O("stream");function zt(e){e.emit("close")}function si(){!this.destroyed&&this._writableState.finished&&this.destroy()}function qt(e){this.removeListener("error",qt),this.destroy(),this.listenerCount("error")===0&&this.emit("error",e)}function ai(e,n){let t=!0,r=new ii({...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(zt,r);return}let s=!1;e.once("error",function(d){s=!0,i(d)}),e.once("close",function(){s||i(o),process.nextTick(zt,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",si),r.on("error",qt),r}Gt.exports=ai});var Wt=j((Va,Bt)=>{"use strict";var{tokenChars:di}=ue();function ui(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&&di[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}Bt.exports={parse:ui}});var er=j((Wa,Yt)=>{"use strict";var ci=O("events"),He=O("http"),{Duplex:Ba}=O("stream"),{createHash:li}=O("crypto"),Ht=kn(),Y=we(),fi=Wt(),pi=We(),{GUID:mi,kWebSocket:gi}=G(),yi=/^[+/0-9A-Za-z]{22}==$/,Kt=0,Qt=1,Xt=2,On=class extends ci{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:pi,...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=He.createServer((r,o)=>{let i=He.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=hi(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=Kt}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===Xt){n&&this.once("close",()=>{n(new Error("The server is not running"))}),process.nextTick(Pe,this);return}if(n&&this.once("close",n),this._state!==Qt)if(this._state=Qt,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(Pe,this):process.nextTick(Pe,this);else{let t=this._server;this._removeListeners(),this._removeListeners=this._server=null,t.close(()=>{Pe(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",Zt);let i=n.headers["sec-websocket-key"],s=n.headers.upgrade,a=+n.headers["sec-websocket-version"];if(n.method!=="GET"){ee(this,n,t,405,"Invalid HTTP method");return}if(s===void 0||s.toLowerCase()!=="websocket"){ee(this,n,t,400,"Invalid Upgrade header");return}if(i===void 0||!yi.test(i)){ee(this,n,t,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){ee(this,n,t,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(n)){Te(t,400);return}let d=n.headers["sec-websocket-protocol"],u=new Set;if(d!==void 0)try{u=fi.parse(d)}catch{ee(this,n,t,400,"Invalid Sec-WebSocket-Protocol header");return}let l=n.headers["sec-websocket-extensions"],f={};if(this.options.perMessageDeflate&&l!==void 0){let y=new Y(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let p=Ht.parse(l);p[Y.extensionName]&&(y.accept(p[Y.extensionName]),f[Y.extensionName]=y)}catch{ee(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,(p,g,c,v)=>{if(!p)return Te(t,g||401,c,v);this.completeUpgrade(f,i,u,n,t,r,o)});return}if(!this.options.verifyClient(y))return Te(t,401)}this.completeUpgrade(f,i,u,n,t,r,o)}completeUpgrade(n,t,r,o,i,s,a){if(!i.readable||!i.writable)return i.destroy();if(i[gi])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>Kt)return Te(i,503);let u=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${li("sha1").update(t+mi).digest("base64")}`],l=new this.options.WebSocket(null,void 0,this.options);if(r.size){let f=this.options.handleProtocols?this.options.handleProtocols(r,o):r.values().next().value;f&&(u.push(`Sec-WebSocket-Protocol: ${f}`),l._protocol=f)}if(n[Y.extensionName]){let f=n[Y.extensionName].params,y=Ht.format({[Y.extensionName]:[f]});u.push(`Sec-WebSocket-Extensions: ${y}`),l._extensions=n}this.emit("headers",u,o),i.write(u.concat(`\r
|
|
4
4
|
`).join(`\r
|
|
5
|
-
`)),i.removeListener("error",Zt),l.setSocket(i,s,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(l),l.on("close",()=>{this.clients.delete(l),this._shouldEmitClose&&!this.clients.size&&process.nextTick(Pe,this)})),a(l,o)}};Yt.exports=On;function
|
|
5
|
+
`)),i.removeListener("error",Zt),l.setSocket(i,s,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(l),l.on("close",()=>{this.clients.delete(l),this._shouldEmitClose&&!this.clients.size&&process.nextTick(Pe,this)})),a(l,o)}};Yt.exports=On;function hi(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 Pe(e){e._state=Xt,e.emit("close")}function Zt(){this.destroy()}function Te(e,n,t,r){t=t||He.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} ${He.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 ee(e,n,t,r,o,i){if(e.listenerCount("wsClientError")){let s=new Error(o);Error.captureStackTrace(s,ee),e.emit("wsClientError",s,t,n)}else Te(t,r,o,i)}});import{spawn as Ds}from"node:child_process";import{appendFileSync as Fs,rmSync as $r,writeFileSync as Re,mkdirSync as ye,chmodSync as Nr,readFileSync as zs,readdirSync as qs,statSync as Gs,unlinkSync as Vs}from"node:fs";import{dirname as Ur,join as nn}from"node:path";var bi=be(Vt(),1),vi=be(xn(),1),Si=be(Sn(),1),An=be(We(),1),wi=be(er(),1);function U(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nr(e){let n=[["threadId",e.threadId],["turnId",e.turnId],["itemId",e.itemId],["processId",e.processId],["requestId",e.requestId]].filter(t=>t[1]!==void 0);return Object.fromEntries(n)}function w(e){return e!==void 0&&U(e)?e:void 0}function Ke(e){return Array.isArray(e)?e:void 0}function h(e){return typeof e=="string"&&e.trim()!==""?e.trim():void 0}function me(e){return typeof e=="number"&&Number.isInteger(e)?e:void 0}import{appendFileSync as Oi,openSync as id}from"node:fs";import{homedir as sr}from"node:os";import{dirname as Ai,join as ar,resolve as Ii,sep as Ri}from"node:path";import{mkdirSync as Mi}from"node:fs";var q={_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_demoted_late_upstream_error","job.turn_demoted_late_upstream_error"],["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.child_thread_event_failed","linzumi.child_thread_event_failed"],["kandan.child_thread_event_skipped_missing_thread_binding","linzumi.child_thread_event_skipped_missing_thread_binding"],["kandan.child_thread_upsert_failed","linzumi.child_thread_upsert_failed"],["kandan.child_thread_upsert_skipped_missing_thread_binding","linzumi.child_thread_upsert_skipped_missing_thread_binding"],["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 Ei=new Map(q.events),Ci=new Map(q.events.map(([e,n])=>[n,e])),rr=new Map(q.keys),or=new Map(q.keyPrimaryLegacy),Pi=new Map(q.values),Ti=new Map(q.values.map(([e,n])=>[n,e])),ed={eventCanonicalByLegacy:Ei,eventLegacyByCanonical:Ci,keyCanonicalByLegacy:rr,keyPrimaryLegacyByCanonical:or,valueCanonicalByLegacy:Pi,valueLegacyByCanonical:Ti,originator:q.originator,topic:q.topic};function ir(e){let n=new Set(e);for(let t of e){let r=rr.get(t);r!==void 0&&n.add(r);let o=or.get(t);o!==void 0&&n.add(o)}return n}var tr=new Map;for(let[e,n]of q.keys){let t=tr.get(n)??[];t.push(e),tr.set(n,t)}var ne="<SENSITIVE_DATA>",dr=ir(new Set(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"])),ji=new Set(["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"]);function Ni(e){if(process.env.VITEST===void 0)return;let n=ar(sr(),".linzumi"),t=Ii(e);if(t===n||t.startsWith(`${n}${Ri}`))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 ge(e,n,t={}){let r=t.logFile??Ji();Ni(r);try{Mi(Ai(r),{recursive:!0}),Oi(r,`${JSON.stringify({ts:new Date().toISOString(),event:e,...t.sessionId===void 0?{}:{sessionId:t.sessionId},...Li(n)})}
|
|
10
|
-
`,"utf8")}catch{return}}function
|
|
11
|
-
`,"utf8")}function
|
|
12
|
-
`);function wr(){return["-c",'mcp_oauth_credentials_store="file"',"-c",'cli_auth_credentials_store="file"']}var ts=5*6e4;var os=(()=>{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 is(e){let n=e;if(typeof n.ping=="function"&&n.readyState===WebSocket.OPEN)try{n.ping()}catch{}}function Cr(e,n={}){return["app-server",..._s(n),"--listen",e]}var ss=["-c","features.apps=false"],as=["-c","features.default_mode_request_user_input=true"],ds="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_MS",cs="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_SOURCE",us=5e3,ls=6e5,fs=["flag","env","server_default"];function ps(e){return fs.find(n=>n===e)}function ms(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<us||t>ls?{state:"invalid",raw:e}:{state:"applied",timeoutMs:t}}function gs(e=process.env){let n=ms(e[ds]);if(n.state==="unset")return n;let t=ps(e[cs]?.trim())??"env";return{...n,source:t}}function ys(e=process.env){let n=gs(e);return n.state==="applied"?n.timeoutMs:void 0}var Pr="openai-linzumi";function Tr(){let e=Pr;return["-c",`model_providers.${e}.name="OpenAI"`,"-c",`model_providers.${e}.wire_api="responses"`,"-c",`model_providers.${e}.requires_openai_auth=true`,"-c",`model_providers.${e}.supports_websockets=true`]}function hs(e){let n=Pr;return[...Tr(),"-c",`model_providers.${n}.stream_idle_timeout_ms=${e}`,"-c",`model_provider="${n}"`]}function _s(e,n=process.env){let t=ys(n);return[...ss,...e.nativeQuestionBridge==="durable"?as:[],...wr(),...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=>Jn(r,{neverEquivalentGranularApprovalPolicy:e.neverEquivalentGranularApprovalPolicy===!0})),...e.modelProvider===void 0?t===void 0?Tr():hs(t):xs(e.modelProvider,t)]}function xs(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 Or(e,n=t=>new An.default(t)){let t=await ks(e,n),r=new Map,o=new Set,i=new Set,s=[],a=new Set,d={nextId:1,closeError:void 0},c=p=>{let g=new Error(p);r.forEach(u=>u.reject(g)),r.clear()},l=setInterval(()=>is(t),os);l.unref?.();let f=p=>{if(clearInterval(l),c(p),d.closeError===void 0){d.closeError=new Error(p);for(let g of a)Er(g,d.closeError);a.clear()}};return t.addEventListener("close",()=>f("codex app-server websocket closed")),t.addEventListener("error",()=>f("codex app-server websocket closed")),t.addEventListener("message",p=>{let g=String(p.data),u=ws(g);if(u===void 0){bs(g);return}if(Ie({direction:"codex_to_commander",captureKind:Ss(u),message:u,rawText:g}),"id"in u&&("result"in u||"error"in u)){let v=r.get(u.id);v!==void 0&&(r.delete(u.id),v.resolve(u));return}if("id"in u&&typeof u.method=="string"){Cs(t,u,i);return}if(!("id"in u)&&typeof u.method=="string"){let v=u;o.size===0?s.push(v):o.forEach(T=>kr(T,v))}}),await Ts(t,r),{request:(p,g)=>{let u=d.nextId;return d.nextId+=1,Ar(t,r,g===void 0?{jsonrpc:"2.0",id:u,method:p}:{jsonrpc:"2.0",id:u,method:p,params:g})},notify:(p,g)=>{let u=g===void 0?{jsonrpc:"2.0",method:p}:{jsonrpc:"2.0",method:p,params:g};Ie({direction:"commander_to_codex",captureKind:"outgoing",message:u,rawText:JSON.stringify(u)}),t.send(JSON.stringify(u))},onNotification:p=>{o.add(p),s.splice(0).forEach(g=>kr(p,g))},onRequest:p=>{i.add(p)},onClose:p=>{if(d.closeError!==void 0){Er(p,d.closeError);return}a.add(p)},isClosed:()=>d.closeError!==void 0,close:()=>{clearInterval(l),t.close()}}}function Ie(e){jn()&&Nn({provider:"codex-app-server",captureKind:e.captureKind,rawText:e.rawText,rawValue:{message:e.message},captureMetadata:{direction:e.direction,capturedAtMs:Date.now(),capturePid:process.pid,...vs(e.message),...e.extraMetadata??{}}})}function bs(e){jn()&&Nn({provider:"codex-app-server",captureKind:"incoming",rawText:e,captureMetadata:{direction:"codex_to_commander",capturedAtMs:Date.now(),capturePid:process.pid,malformed:!0}})}function vs(e){return!("params"in e)||!U(e.params)?{}:nr(e.params)}function Ss(e){return"id"in e&&("result"in e||"error"in e)?"response":"id"in e&&typeof e.method=="string"?"request":"notification"}function ws(e){let n=String(e);try{let t=JSON.parse(n);if(!U(t))throw new Error("codex app-server sent non-object JSON-RPC message");return t}catch(t){ge("codex.app_server_frame_malformed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t),payload:hr(n,512),payloadChars:n.length});return}}function kr(e,n){try{e(n)}catch(t){ge("codex.notification_callback_failed",{purpose:"codex.app_server",method:n.method,message:t instanceof Error?t.message:String(t)})}}function Er(e,n){try{e(n)}catch(t){ge("codex.close_callback_failed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t)})}}async function ks(e,n,t=2e3){let r=Date.now()+t,o;for(;Date.now()<=r;){let i=n(e);try{return await Os(i),i}catch(s){o=s instanceof Error?s:new Error(String(s)),Es(i)}}throw o??new Error("websocket open failed")}function Es(e){try{e.close()}catch{}}async function Cs(e,n,t){let r=o=>Ps(e,o,n.method);try{if(t.size===0){r({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}});return}for(let o of t){let i=await o(n);if(i!==void 0){r({jsonrpc:"2.0",id:n.id,result:i});return}}r({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}})}catch(o){r({jsonrpc:"2.0",id:n.id,error:{code:-32e3,message:o instanceof Error?o.message:String(o)}})}}function Ps(e,n,t){let r=JSON.stringify(n);Ie({direction:"commander_to_codex",captureKind:"response",message:n,rawText:r,extraMetadata:{requestMethod:t}}),e.send(r)}async function Ts(e,n){let t=await Ar(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"};Ie({direction:"commander_to_codex",captureKind:"outgoing",message:r,rawText:JSON.stringify(r)}),e.send(JSON.stringify(r))}function Ar(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}),Ie({direction:"commander_to_codex",captureKind:"request",message:t,rawText:JSON.stringify(t)}),e.send(JSON.stringify(t))})}function Os(e){return new Promise((n,t)=>{e.addEventListener("open",()=>n(),{once:!0}),e.addEventListener("error",()=>t(new Error("websocket open failed")),{once:!0})})}var lc=300*1e3;function Qe(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 Ln(e){let n=e.fetchImpl??fetch,t=Qe(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,d,c={})=>{let l=new URL(a,t),f={...d,operating_mode:o},y={method:s,headers:{authorization:`Bearer ${e.accessToken}`},...c.signal===void 0?{}:{signal:c.signal}};if(s==="GET")for(let[I,J]of Object.entries(f))J!=null&&l.searchParams.set(I,String(J));else y.headers={...y.headers,"content-type":"application/json"},y.body=JSON.stringify(f);let p=await n(l,y),g=await p.json(),u=U(g)?g:void 0;if(u===void 0)throw new Error(`Linzumi MCP API returned non-object JSON from ${a}`);if(p.ok&&u.ok===!0)return u;let v=typeof u.error=="string"?u.error:`HTTP ${p.status}`,T=typeof u.detail=="string"?u.detail:void 0;throw new Error(`Linzumi MCP API ${a} failed: ${v}${T===void 0?"":` detail=${T}`}`)};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),scheduleWake:s=>i("POST",`${r}/scheduled-wakes`,s),cancelWake:s=>i("POST",`${r}/scheduled-wakes/cancel`,s),declineDocumentAction:s=>i("POST",`${r}/agent/decline-document-action`,s),agentTurnProgress:s=>i("POST",`${r}/agent-turn-progress`,s),agentDocumentTool:s=>i("POST",`${r}/agent/document-tool`,s),agentTopicTool:s=>i("POST",`${r}/agent/topic-tool`,s),agentListCodingJobs:s=>i("GET",`${r}/agent/coding-jobs`,s),agentStartCodingJob:s=>i("POST",`${r}/agent/start-coding-job`,s),agentSpawnChildJob:s=>i("POST",`${r}/agent/spawn-child-job`,s),agentArchiveChildJob:s=>i("POST",`${r}/agent/archive-child-job`,s),agentUnarchiveChildJob:s=>i("POST",`${r}/agent/unarchive-child-job`,s),agentInterruptCodingJob:s=>i("POST",`${r}/agent/interrupt-coding-job`,s),agentSendCodingJobMessage:s=>i("POST",`${r}/agent/send-coding-job-message`,s),agentDiscoverCodingJobs:s=>i("GET",`${r}/agent/discover-coding-jobs`,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 As,mkdirSync as hc,readFileSync as Is,renameSync as _c,rmSync as xc,writeFileSync as bc}from"node:fs";import{homedir as Rs}from"node:os";import{dirname as wc,join as Ms}from"node:path";function js(){return Ms(Rs(),".linzumi","auth.json")}function $n(e,n=js()){if(!As(n))return;let t=Ns(Is(n,"utf8")),r=Qe(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 Ns(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:Ls(r),personal_agent_delegation:Js(o)}}function Js(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 Ls(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}]]}))}var Un={mcpAuthFileContents:"LINZUMI_CLOUD_MCP_AUTH_JSON",llmProxyToken:"LINZUMI_CLOUD_LLM_PROXY_TOKEN"};function Ir(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 te="/home/agent",$s=`${te}/.linzumi-provisioned`;var Dn="/dev/shm/linzumi",$c=`${Dn}/codex`,Uc=`${Dn}/mcp-auth.json`;var Dc=`${Dn}/codex.env`;var Vc=`${te}/cloud-supervisor.mjs`,Rr=`${te}/mcp-server.mjs`,Fn=`${te}/.secrets`,zn=`${Fn}/mcp-auth.json`,Ze=`${te}/.codex`,Mr=`${Ze}/linzumi-thread-map.json`;var qn=`${te}/.turn-heartbeats`,jr=5e3,Us=/^[A-Za-z0-9-]{8,64}$/;function Gn(e){if(!Us.test(e))throw new Error(`invalid cloud turn nonce: ${JSON.stringify(e.slice(0,80))}`)}var Bs=3e4,Ws=200,Hs=18e4,Jr="LINZUMI_GUEST_MODEL_CALL_LIVENESS_MS",Ks=15*6e4,Lr="LINZUMI_GUEST_ACTIVE_LOOP_BUDGET_MS",Ye=2147483647;function Qs(e){let n=e[Lr];if(n===void 0)return Ks;let t=Number(n);if(n.trim()===""||!Number.isSafeInteger(t)||t<=0||t>Ye)throw new Error(`${Lr} must be an integer number of milliseconds between 1 and ${Ye}, got ${JSON.stringify(n)}`);return t}var Bn=class extends Error{code="active_loop_budget_exceeded";budgetMs;constructor(n){super(`active_loop_budget_exceeded: guest turn exceeded the ${n}ms wall-clock budget; killed the guest turn`),this.name="GuestActiveLoopBudgetExceeded",this.budgetMs=n}};function Zs(e){let n=e[Jr];if(n===void 0)return Hs;let t=Number(n);if(n.trim()===""||!Number.isSafeInteger(t)||t<=0)throw new Error(`${Jr} must be a positive integer number of milliseconds, got ${JSON.stringify(n)}`);return t}var Wn=class extends Error{code="guest_turn_liveness_failure";windowMs;constructor(n){super(`guest_turn_liveness_failure: zero upstream model calls for ${n}ms; killed the guest turn`),this.name="GuestTurnLivenessFailure",this.windowMs=n}};function Xs(e,n,t){if(e.method!=="thread/tokenUsage/updated")return;let r=w(e.params)??{};if(h(r.threadId)!==n||h(r.turnId)!==t)return;let o=me(w(w(r.tokenUsage)?.total)?.totalTokens),i=me(w(w(r.tokenUsage)?.last)?.totalTokens);if(!(o===void 0||o<0))return{totalTokens:o,priorCallTotalTokens:i!==void 0&&i>=0&&i<=o?o-i:void 0}}function re(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 Vn=64*1024;function Ys(e,n){let t=n.now??Date.now,r=Buffer.alloc(0),o=null,i=null,s=a=>{let d=Buffer.isBuffer(a)?a:Buffer.from(a,"utf8");r=Buffer.concat([r,d]);let c=Vn*2;r.byteLength>c&&(r=r.subarray(r.byteLength-c))};return e.stdout?.on("data",s),e.stderr?.on("data",s),e.once("exit",(a,d)=>{o=a,i=d??null}),{evidence:a=>{let d=Buffer.from(re(r.toString("utf8")),"utf8"),c=d.byteLength<=Vn?d:d.subarray(d.byteLength-Vn);return{marker:"guest_turn_failure_evidence",empty_output:r.byteLength===0,output_tail:c.toString("utf8"),exit_code:o,signal:i,duration_ms:Math.max(0,t()-n.startedAtMs),model_call_count:a}}}}var en;function ea(e){en=e;try{ye(Ur(e),{recursive:!0}),Re(e,"")}catch{en=void 0}}function D(e){let n=`${JSON.stringify(e)}
|
|
13
|
-
`;if(process.stdout.write(n),en!==void 0)try{Fs(en,n)}catch{}}function Xe(e,n,t,r){D({phase:"exit",ok:e,reason:re(n),turnMs:t,...r===void 0?{}:{evidence:r}})}function na(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 ta(e){if(e.sandbox!=="
|
|
9
|
+
`+t)}function ee(e,n,t,r,o,i){if(e.listenerCount("wsClientError")){let s=new Error(o);Error.captureStackTrace(s,ee),e.emit("wsClientError",s,t,n)}else Te(t,r,o,i)}});import{spawn as Ds}from"node:child_process";import{appendFileSync as Fs,rmSync as Jr,writeFileSync as Re,mkdirSync as ye,chmodSync as Mr,readFileSync as zs,readdirSync as qs,statSync as Gs,unlinkSync as Vs}from"node:fs";import{dirname as Lr,join as nn}from"node:path";var _i=be(Vt(),1),xi=be(xn(),1),bi=be(Sn(),1),An=be(We(),1),vi=be(er(),1);function U(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nr(e){let n=[["threadId",e.threadId],["turnId",e.turnId],["itemId",e.itemId],["processId",e.processId],["requestId",e.requestId]].filter(t=>t[1]!==void 0);return Object.fromEntries(n)}function w(e){return e!==void 0&&U(e)?e:void 0}function Ke(e){return Array.isArray(e)?e:void 0}function h(e){return typeof e=="string"&&e.trim()!==""?e.trim():void 0}function me(e){return typeof e=="number"&&Number.isInteger(e)?e:void 0}import{appendFileSync as Pi,openSync as id}from"node:fs";import{homedir as sr}from"node:os";import{dirname as Ti,join as ar,resolve as Oi,sep as Ai}from"node:path";import{mkdirSync as Ii}from"node:fs";var q={_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_demoted_late_upstream_error","job.turn_demoted_late_upstream_error"],["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.child_thread_event_failed","linzumi.child_thread_event_failed"],["kandan.child_thread_event_skipped_missing_thread_binding","linzumi.child_thread_event_skipped_missing_thread_binding"],["kandan.child_thread_upsert_failed","linzumi.child_thread_upsert_failed"],["kandan.child_thread_upsert_skipped_missing_thread_binding","linzumi.child_thread_upsert_skipped_missing_thread_binding"],["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 wi=new Map(q.events),ki=new Map(q.events.map(([e,n])=>[n,e])),rr=new Map(q.keys),or=new Map(q.keyPrimaryLegacy),Ci=new Map(q.values),Ei=new Map(q.values.map(([e,n])=>[n,e])),ed={eventCanonicalByLegacy:wi,eventLegacyByCanonical:ki,keyCanonicalByLegacy:rr,keyPrimaryLegacyByCanonical:or,valueCanonicalByLegacy:Ci,valueLegacyByCanonical:Ei,originator:q.originator,topic:q.topic};function ir(e){let n=new Set(e);for(let t of e){let r=rr.get(t);r!==void 0&&n.add(r);let o=or.get(t);o!==void 0&&n.add(o)}return n}var tr=new Map;for(let[e,n]of q.keys){let t=tr.get(n)??[];t.push(e),tr.set(n,t)}var ne="<SENSITIVE_DATA>",dr=ir(new Set(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"])),Ri=new Set(["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"]);function Mi(e){if(process.env.VITEST===void 0)return;let n=ar(sr(),".linzumi"),t=Oi(e);if(t===n||t.startsWith(`${n}${Ai}`))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 ge(e,n,t={}){let r=t.logFile??ji();Mi(r);try{Ii(Ti(r),{recursive:!0}),Pi(r,`${JSON.stringify({ts:new Date().toISOString(),event:e,...t.sessionId===void 0?{}:{sessionId:t.sessionId},...Ni(n)})}
|
|
10
|
+
`,"utf8")}catch{return}}function ji(){let e=process.env.LINZUMI_CLI_AUDIT_LOG?.trim();return e===void 0||e===""?ar(sr(),".linzumi","logs","command-events.jsonl"):e}function Ni(e){return ur(e)}function In(e,n){return $i(n)?ne:typeof e=="string"?cr(e):Array.isArray(e)?n==="args"?Ji(e):e.map(t=>In(t,void 0)):e!==null&&typeof e=="object"?ur(e):e}function ur(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"?ne:In(o,r)]))}function Ji(e){let n=!1;return e.map(t=>{if(typeof t!="string")return n=!1,In(t,void 0);if(n)return n=!1,ne;let[r,o]=Li(t);return Ri.has(r)?o===void 0?(n=!0,t):`${r}=${ne}`:cr(t)})}function Li(e){let n=e.indexOf("=");return n===-1?[e,void 0]:[e.slice(0,n),e.slice(n+1)]}function $i(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 cr(e){return Ui(e).replace(/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,ne)}function Ui(e){let n;try{n=new URL(e)}catch{return Di(e)}for(let t of[...n.searchParams.keys()])dr.has(t.toLowerCase())&&n.searchParams.set(t,ne);return n.toString()}function Di(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 d of[...s.keys()])dr.has(d.toLowerCase())&&(s.set(d,ne),a=!0);switch(a){case!0:return`${r}?${s.toString()}${i}`;case!1:return e}}function Rn(e){let n=e.channelSession,t=n.linzumiAgentSession===!0,r=t?"read-only":n.sandbox,o=Fi(n);return{...n.model===void 0?{}:{model:n.model},...o===void 0?{}:{config:o},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:t?"never":fr(n.approvalPolicy,r,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...r===void 0?{}:{sandbox:r}}}function lr(e){let n=e.channelSession,t=n.linzumiAgentSession===!0,r=t?"read-only":n.sandbox;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:t?"never":fr(n.approvalPolicy,r,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...r===void 0?{}:{sandboxPolicy:Gi(r,e.cwd)}}}function Fi(e){let n=e.reasoningEffort===void 0?{}:{model_reasoning_effort:e.reasoningEffort};return e.linzumiAgentSession!==!0?e.reasoningEffort===void 0?void 0:n:{...n,web_search:"disabled",tools:{view_image:!1},features:{apps:!1,shell_tool:!1,unified_exec:!1,multi_agent:!1,code_mode:!1,image_generation:!1,browser_use:!1,browser_use_external:!1,computer_use:!1,remote_plugin:!1,tool_suggest:!1,workspace_dependencies:!1}}}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:return console.warn(`linzumi approval-policy clamp: unknown Codex approval policy ${e}; clamping to most-restrictive approval (on-request)`),"on-request"}}var qi={granular:{sandbox_approval:!1,rules:!1,skill_approval:!1,request_permissions:!1,mcp_elicitations:!0}};function fr(e,n,t){let r=zi(e,n,t);return r==="never"&&n==="danger-full-access"?qi:r==="on-failure"?"on-request":r}function Gi(e,n){switch(e){case"danger-full-access":return{type:"dangerFullAccess"};case"read-only":return{type:"readOnly",networkAccess:!1};case"workspace-write":return{type:"workspaceWrite",writableRoots:[n],networkAccess:!1,excludeTmpdirEnvVar:!1,excludeSlashTmp:!1};default:throw new Error(`unsupported Codex sandbox mode: ${e}`)}}function Mn(e){return e==="final_answer"?"final_answer":"commentary"}function pr(e){let n=Vi(e),t=w(e.item);if(!(n===void 0||n===""))return{itemKey:h(e.itemId)??h(e.item_id)??h(w(e.item)?.id)??"assistant-message",turnId:h(e.turnId)??h(e.turn_id)??h(w(e.turn)?.id),delta:n,phase:Mn(e.phase??t?.phase)}}function mr(e){let n=yr(e);if(!(n===void 0||n===""))return{itemKey:h(e.itemId)??h(e.item_id)??h(w(e.item)?.id)??"reasoning",turnId:h(e.turnId)??h(e.turn_id)??h(w(e.turn)?.id),delta:n}}function Vi(e){return yr(e)}function Bi(e){return e>=55296&&e<=56319}function Wi(e){return e>=56320&&e<=57343}function gr(e,n){let t=Math.min(Math.max(0,n),e.length),r=t>0&&t<e.length&&Bi(e.charCodeAt(t-1))&&Wi(e.charCodeAt(t))?t-1:t;return e.slice(0,r)}function yr(e){let n=e.delta;return typeof n=="string"?n:U(n)?h(n.text)??h(n.content)??h(n.delta)??h(n.message):h(e.text)??h(e.content)??h(e.message)}import{mkdirSync as Hi,appendFileSync as Ki}from"node:fs";import{dirname as Qi}from"node:path";function hr(e){return JSON.stringify(e)}var Oe,Zi=/(^|[_-])(token|secret|api[_-]?key|authorization|cookie|private[_-]?key|login[_-]?url)([_-]|$)/iu;function jn(){return _r()!==void 0}function Nn(e){let n=_r();if(n===void 0)return;let t=Xi(n),r=Yi(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:Ae(e.captureMetadata)},...r.transforms.length===0?e.transforms===void 0?{}:{transforms:e.transforms}:{transforms:[...e.transforms??[],...r.transforms]}};t.nextOrdinal+=1,Ki(n,`${hr(o)}
|
|
11
|
+
`,"utf8")}function _r(){let e=process.env.LINZUMI_AGENT_REPLAY_RECORD_FILE?.trim();return e===void 0||e===""?void 0:e}function Xi(e){return Oe!==void 0&&Oe.path===e||(Hi(Qi(e),{recursive:!0}),Oe={path:e,startedAtMs:Date.now(),nextOrdinal:0}),Oe}function Yi(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:Ae(e.rawValue,"$.rawValue",n);return{rawText:es(e.rawText,n),rawValue:t,transforms:n}}function es(e,n){if(e!==void 0)try{let t=JSON.parse(e);return JSON.stringify(Ae(t,"$.rawText",n))}catch{return e}}function Ae(e,n="$",t=[]){if(Array.isArray(e))return e.map((o,i)=>Ae(o,`${n}[${i}]`,t));if(!U(e))return e;let r=Object.entries(e).map(([o,i])=>{let s=`${n}.${o}`;return Zi.test(o)?(t.push({type:"credential_redaction",path:s}),[o,"[REDACTED]"]):[o,i===void 0?void 0:Ae(i,s,t)]});return Object.fromEntries(r)}function xr(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"]:[],...e.askUserQuestionTool===!0?["--ask-user-question-tool"]:[],...e.multiAgentJobs===!0?["--multi-agent-jobs"]:[]],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 Jn(e,n){return["-c",`mcp_servers.${e.name}.command=${JSON.stringify(e.command)}`,"-c",`mcp_servers.${e.name}.args=${ns(e.args)}`,...Object.entries(e.env).flatMap(([t,r])=>["-c",`mcp_servers.${e.name}.env.${t}=${JSON.stringify(r)}`]),...n.neverEquivalentGranularApprovalPolicy?["-c",`mcp_servers.${e.name}.default_tools_approval_mode="approve"`]:[],...e.args.includes("--ask-user-question-tool")?["-c",`mcp_servers.${e.name}.tool_timeout_sec=${br}`]:[]]}function ns(e){return`[${e.map(n=>JSON.stringify(n)).join(", ")}]`}var br=2147483,Ad=br*1e3-5*6e4;var Rd=["# 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 vr(){return["-c",'mcp_oauth_credentials_store="file"',"-c",'cli_auth_credentials_store="file"']}var ts=5*6e4;var os=(()=>{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 is(e){let n=e;if(typeof n.ping=="function"&&n.readyState===WebSocket.OPEN)try{n.ping()}catch{}}function kr(e,n={}){return["app-server",..._s(n),"--listen",e]}var ss=["-c","features.apps=false"],as=["-c","features.default_mode_request_user_input=true"],ds="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_MS",us="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_SOURCE",cs=5e3,ls=6e5,fs=["flag","env","server_default"];function ps(e){return fs.find(n=>n===e)}function ms(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<cs||t>ls?{state:"invalid",raw:e}:{state:"applied",timeoutMs:t}}function gs(e=process.env){let n=ms(e[ds]);if(n.state==="unset")return n;let t=ps(e[us]?.trim())??"env";return{...n,source:t}}function ys(e=process.env){let n=gs(e);return n.state==="applied"?n.timeoutMs:void 0}var Cr="openai-linzumi";function Er(){let e=Cr;return["-c",`model_providers.${e}.name="OpenAI"`,"-c",`model_providers.${e}.wire_api="responses"`,"-c",`model_providers.${e}.requires_openai_auth=true`,"-c",`model_providers.${e}.supports_websockets=true`]}function hs(e){let n=Cr;return[...Er(),"-c",`model_providers.${n}.stream_idle_timeout_ms=${e}`,"-c",`model_provider="${n}"`]}function _s(e,n=process.env){let t=ys(n);return[...ss,...e.nativeQuestionBridge==="durable"?as:[],...vr(),...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=>Jn(r,{neverEquivalentGranularApprovalPolicy:e.neverEquivalentGranularApprovalPolicy===!0})),...e.modelProvider===void 0?t===void 0?Er():hs(t):xs(e.modelProvider,t)]}function xs(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 Pr(e,n=t=>new An.default(t)){let t=await ks(e,n),r=new Map,o=new Set,i=new Set,s=[],a=new Set,d={nextId:1,closeError:void 0},u=p=>{let g=new Error(p);r.forEach(c=>c.reject(g)),r.clear()},l=setInterval(()=>is(t),os);l.unref?.();let f=p=>{if(clearInterval(l),u(p),d.closeError===void 0){d.closeError=new Error(p);for(let g of a)wr(g,d.closeError);a.clear()}};return t.addEventListener("close",()=>f("codex app-server websocket closed")),t.addEventListener("error",()=>f("codex app-server websocket closed")),t.addEventListener("message",p=>{let g=String(p.data),c=ws(g);if(c===void 0){bs(g);return}if(Ie({direction:"codex_to_commander",captureKind:Ss(c),message:c,rawText:g}),"id"in c&&("result"in c||"error"in c)){let v=r.get(c.id);v!==void 0&&(r.delete(c.id),v.resolve(c));return}if("id"in c&&typeof c.method=="string"){Es(t,c,i);return}if(!("id"in c)&&typeof c.method=="string"){let v=c;o.size===0?s.push(v):o.forEach(T=>Sr(T,v))}}),await Ts(t,r),{request:(p,g)=>{let c=d.nextId;return d.nextId+=1,Tr(t,r,g===void 0?{jsonrpc:"2.0",id:c,method:p}:{jsonrpc:"2.0",id:c,method:p,params:g})},notify:(p,g)=>{let c=g===void 0?{jsonrpc:"2.0",method:p}:{jsonrpc:"2.0",method:p,params:g};Ie({direction:"commander_to_codex",captureKind:"outgoing",message:c,rawText:JSON.stringify(c)}),t.send(JSON.stringify(c))},onNotification:p=>{o.add(p),s.splice(0).forEach(g=>Sr(p,g))},onRequest:p=>{i.add(p)},onClose:p=>{if(d.closeError!==void 0){wr(p,d.closeError);return}a.add(p)},isClosed:()=>d.closeError!==void 0,close:()=>{clearInterval(l),t.close()}}}function Ie(e){jn()&&Nn({provider:"codex-app-server",captureKind:e.captureKind,rawText:e.rawText,rawValue:{message:e.message},captureMetadata:{direction:e.direction,capturedAtMs:Date.now(),capturePid:process.pid,...vs(e.message),...e.extraMetadata??{}}})}function bs(e){jn()&&Nn({provider:"codex-app-server",captureKind:"incoming",rawText:e,captureMetadata:{direction:"codex_to_commander",capturedAtMs:Date.now(),capturePid:process.pid,malformed:!0}})}function vs(e){return!("params"in e)||!U(e.params)?{}:nr(e.params)}function Ss(e){return"id"in e&&("result"in e||"error"in e)?"response":"id"in e&&typeof e.method=="string"?"request":"notification"}function ws(e){let n=String(e);try{let t=JSON.parse(n);if(!U(t))throw new Error("codex app-server sent non-object JSON-RPC message");return t}catch(t){ge("codex.app_server_frame_malformed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t),payload:gr(n,512),payloadChars:n.length});return}}function Sr(e,n){try{e(n)}catch(t){ge("codex.notification_callback_failed",{purpose:"codex.app_server",method:n.method,message:t instanceof Error?t.message:String(t)})}}function wr(e,n){try{e(n)}catch(t){ge("codex.close_callback_failed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t)})}}async function ks(e,n,t=2e3){let r=Date.now()+t,o;for(;Date.now()<=r;){let i=n(e);try{return await Os(i),i}catch(s){o=s instanceof Error?s:new Error(String(s)),Cs(i)}}throw o??new Error("websocket open failed")}function Cs(e){try{e.close()}catch{}}async function Es(e,n,t){let r=o=>Ps(e,o,n.method);try{if(t.size===0){r({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}});return}for(let o of t){let i=await o(n);if(i!==void 0){r({jsonrpc:"2.0",id:n.id,result:i});return}}r({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}})}catch(o){r({jsonrpc:"2.0",id:n.id,error:{code:-32e3,message:o instanceof Error?o.message:String(o)}})}}function Ps(e,n,t){let r=JSON.stringify(n);Ie({direction:"commander_to_codex",captureKind:"response",message:n,rawText:r,extraMetadata:{requestMethod:t}}),e.send(r)}async function Ts(e,n){let t=await Tr(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"};Ie({direction:"commander_to_codex",captureKind:"outgoing",message:r,rawText:JSON.stringify(r)}),e.send(JSON.stringify(r))}function Tr(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}),Ie({direction:"commander_to_codex",captureKind:"request",message:t,rawText:JSON.stringify(t)}),e.send(JSON.stringify(t))})}function Os(e){return new Promise((n,t)=>{e.addEventListener("open",()=>n(),{once:!0}),e.addEventListener("error",()=>t(new Error("websocket open failed")),{once:!0})})}var lu=300*1e3;function Qe(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 Ln(e){let n=e.fetchImpl??fetch,t=Qe(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,d,u={})=>{let l=new URL(a,t),f={...d,operating_mode:o},y={method:s,headers:{authorization:`Bearer ${e.accessToken}`},...u.signal===void 0?{}:{signal:u.signal}};if(s==="GET")for(let[I,J]of Object.entries(f))J!=null&&l.searchParams.set(I,String(J));else y.headers={...y.headers,"content-type":"application/json"},y.body=JSON.stringify(f);let p=await n(l,y),g=await p.json(),c=U(g)?g:void 0;if(c===void 0)throw new Error(`Linzumi MCP API returned non-object JSON from ${a}`);if(p.ok&&c.ok===!0)return c;let v=typeof c.error=="string"?c.error:`HTTP ${p.status}`,T=typeof c.detail=="string"?c.detail:void 0;throw new Error(`Linzumi MCP API ${a} failed: ${v}${T===void 0?"":` detail=${T}`}`)};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),scheduleWake:s=>i("POST",`${r}/scheduled-wakes`,s),cancelWake:s=>i("POST",`${r}/scheduled-wakes/cancel`,s),declineDocumentAction:s=>i("POST",`${r}/agent/decline-document-action`,s),agentTurnProgress:s=>i("POST",`${r}/agent-turn-progress`,s),agentDocumentTool:s=>i("POST",`${r}/agent/document-tool`,s),agentTopicTool:s=>i("POST",`${r}/agent/topic-tool`,s),agentListCodingJobs:s=>i("GET",`${r}/agent/coding-jobs`,s),agentStartCodingJob:s=>i("POST",`${r}/agent/start-coding-job`,s),agentSpawnChildJob:s=>i("POST",`${r}/agent/spawn-child-job`,s),agentArchiveChildJob:s=>i("POST",`${r}/agent/archive-child-job`,s),agentUnarchiveChildJob:s=>i("POST",`${r}/agent/unarchive-child-job`,s),agentInterruptCodingJob:s=>i("POST",`${r}/agent/interrupt-coding-job`,s),agentSendCodingJobMessage:s=>i("POST",`${r}/agent/send-coding-job-message`,s),agentDiscoverCodingJobs:s=>i("GET",`${r}/agent/discover-coding-jobs`,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 As,mkdirSync as hu,readFileSync as Is,renameSync as _u,rmSync as xu,writeFileSync as bu}from"node:fs";import{homedir as Rs}from"node:os";import{dirname as wu,join as Ms}from"node:path";function js(){return Ms(Rs(),".linzumi","auth.json")}function $n(e,n=js()){if(!As(n))return;let t=Ns(Is(n,"utf8")),r=Qe(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 Ns(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:Ls(r),personal_agent_delegation:Js(o)}}function Js(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 Ls(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}]]}))}var Un={mcpAuthFileContents:"LINZUMI_CLOUD_MCP_AUTH_JSON",llmProxyToken:"LINZUMI_CLOUD_LLM_PROXY_TOKEN"};function Or(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 te="/home/agent",$s=`${te}/.linzumi-provisioned`;var Dn="/dev/shm/linzumi",$u=`${Dn}/codex`,Uu=`${Dn}/mcp-auth.json`;var Du=`${Dn}/codex.env`;var Vu=`${te}/cloud-supervisor.mjs`,Ar=`${te}/mcp-server.mjs`,Fn=`${te}/.secrets`,zn=`${Fn}/mcp-auth.json`,Ze=`${te}/.codex`,Ir=`${Ze}/linzumi-thread-map.json`;var qn=`${te}/.turn-heartbeats`,Rr=5e3,Us=/^[A-Za-z0-9-]{8,64}$/;function Gn(e){if(!Us.test(e))throw new Error(`invalid cloud turn nonce: ${JSON.stringify(e.slice(0,80))}`)}var Bs=3e4,Ws=200,Hs=18e4,jr="LINZUMI_GUEST_MODEL_CALL_LIVENESS_MS",Ks=15*6e4,Nr="LINZUMI_GUEST_ACTIVE_LOOP_BUDGET_MS",Ye=2147483647;function Qs(e){let n=e[Nr];if(n===void 0)return Ks;let t=Number(n);if(n.trim()===""||!Number.isSafeInteger(t)||t<=0||t>Ye)throw new Error(`${Nr} must be an integer number of milliseconds between 1 and ${Ye}, got ${JSON.stringify(n)}`);return t}var Bn=class extends Error{code="active_loop_budget_exceeded";budgetMs;constructor(n){super(`active_loop_budget_exceeded: guest turn exceeded the ${n}ms wall-clock budget; killed the guest turn`),this.name="GuestActiveLoopBudgetExceeded",this.budgetMs=n}};function Zs(e){let n=e[jr];if(n===void 0)return Hs;let t=Number(n);if(n.trim()===""||!Number.isSafeInteger(t)||t<=0)throw new Error(`${jr} must be a positive integer number of milliseconds, got ${JSON.stringify(n)}`);return t}var Wn=class extends Error{code="guest_turn_liveness_failure";windowMs;constructor(n){super(`guest_turn_liveness_failure: zero upstream model calls for ${n}ms; killed the guest turn`),this.name="GuestTurnLivenessFailure",this.windowMs=n}};function Xs(e,n,t){if(e.method!=="thread/tokenUsage/updated")return;let r=w(e.params)??{};if(h(r.threadId)!==n||h(r.turnId)!==t)return;let o=me(w(w(r.tokenUsage)?.total)?.totalTokens),i=me(w(w(r.tokenUsage)?.last)?.totalTokens);if(!(o===void 0||o<0))return{totalTokens:o,priorCallTotalTokens:i!==void 0&&i>=0&&i<=o?o-i:void 0}}function re(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 Vn=64*1024;function Ys(e,n){let t=n.now??Date.now,r=Buffer.alloc(0),o=null,i=null,s=a=>{let d=Buffer.isBuffer(a)?a:Buffer.from(a,"utf8");r=Buffer.concat([r,d]);let u=Vn*2;r.byteLength>u&&(r=r.subarray(r.byteLength-u))};return e.stdout?.on("data",s),e.stderr?.on("data",s),e.once("exit",(a,d)=>{o=a,i=d??null}),{evidence:a=>{let d=Buffer.from(re(r.toString("utf8")),"utf8"),u=d.byteLength<=Vn?d:d.subarray(d.byteLength-Vn);return{marker:"guest_turn_failure_evidence",empty_output:r.byteLength===0,output_tail:u.toString("utf8"),exit_code:o,signal:i,duration_ms:Math.max(0,t()-n.startedAtMs),model_call_count:a}}}}var en;function ea(e){en=e;try{ye(Lr(e),{recursive:!0}),Re(e,"")}catch{en=void 0}}function D(e){let n=`${JSON.stringify(e)}
|
|
13
|
+
`;if(process.stdout.write(n),en!==void 0)try{Fs(en,n)}catch{}}function Xe(e,n,t,r){D({phase:"exit",ok:e,reason:re(n),turnMs:t,...r===void 0?{}:{evidence:r}})}function na(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 ta(e){if(e.sandbox!=="read-only")throw new Error(`guest cloud turn requires sandbox "read-only", got ${JSON.stringify(e.sandbox)}`);if(e.approvalPolicy!=="never")throw new Error(`guest cloud turn requires approvalPolicy "never", got ${JSON.stringify(e.approvalPolicy)}`)}function ra(e,n=Ze){let t=xr({command:"node",argsPrefix:[Ar],kandanUrl:e.kandanUrl,authFilePath:zn,ownerUsername:e.ownerUsername,operatingMode:"text",cwd:e.cwd,threadId:e.threadId,agentSession:!0});return kr(`ws://127.0.0.1:${e.appServerPort}`,{model:e.model,reasoningEffort:e.reasoningEffort,mcpServers:[t],neverEquivalentGranularApprovalPolicy:!0,...e.modelProvider===void 0?{}:{modelProvider:na(e.modelProvider)},env:{CODEX_HOME:n,...$r(e)}})}function $r(e){let n=process.env[Un.llmProxyToken];return e.modelProvider===void 0||n===void 0||n===""?{}:{[e.modelProvider.envKey]:n}}function oa(e,n){let t=process.env[Un.mcpAuthFileContents];if(t===void 0||t==="")throw new Error("guest cloud turn missing MCP auth-cache (LINZUMI_CLOUD_MCP_AUTH_JSON)");ye(e,{recursive:!0,mode:448}),Mr(e,448),Re(n,t,{mode:384}),Mr(n,384)}function ia(e){try{Jr(e,{recursive:!0,force:!0})}catch{}}var sa=64;function Ur(e){try{let n=JSON.parse(zs(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 aa(e,n,t){try{let r=Ur(e);delete r[n];let o=Object.entries(r),i=o.slice(Math.max(0,o.length-(sa-1)));i.push([n,t]),ye(Lr(e),{recursive:!0}),Re(e,JSON.stringify(Object.fromEntries(i)))}catch{}}var da=new Set(["turn/completed","turn/failed","turn/aborted"]),ua=2e3;function Dr(e){let n=w(w(e)?.item);if(n===void 0||h(n.type)!=="agentMessage")return"";let t=h(n.text);return t!==void 0&&t!==""?t:(Ke(n.content)??[]).map(i=>{let s=w(i);if(s===void 0)return;let a=h(s.type);if(!(a!=="text"&&a!=="output_text"&&a!=="input_text"))return h(s.text)??h(s.content)}).filter(i=>i!==void 0&&i!=="").join(`
|
|
14
14
|
|
|
15
|
-
`)}function
|
|
16
|
-
`)}catch{}};try{ye(e,{recursive:!0})}catch{}ka(e,Date.now()),o();let i=setInterval(o,t);return i.unref?.(),()=>{clearInterval(i);try{
|
|
17
|
-
`)}catch{}}var
|
|
18
|
-
`),
|
|
15
|
+
`)}function ca(e){let n=w(w(e)?.item);if(n===void 0)return!1;let t=h(n.type);if(t!=="mcpToolCall"&&t!=="dynamicToolCall"&&t!=="collabAgentToolCall"||h(n.status)!=="completed"||n.error!==void 0&&n.error!==null||n.success===!1)return!1;let r=h(n.tool)??"",o=r.split("__").pop()??r;return o==="linzumi_agent_reply"||o==="linzumi_decline_document_action"}var la=15e3;function fa(e){return/already_replied|no_active_asker_binding/i.test(e)}async function pa(e){let n=e.body.trim();if(n==="")return"skipped";let t=$n(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,d=setTimeout(()=>a.abort(),la);try{return await fetch(i,{...s,signal:a.signal})}finally{clearTimeout(d)}},o=Ln({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(fa(s))return"already";throw new Error(`reply relay failed: ${s}`)}}var ma=900,ga=1e4,ya=3,ha=8e3;function _a(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 xa(e){return async n=>{let t=$n(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,d=setTimeout(()=>a.abort(),ga);try{return await fetch(i,{...s,signal:a.signal})}finally{clearTimeout(d)}};return Ln({kandanUrl:e.kandanUrl,accessToken:t.accessToken,operatingMode:"text",fetchImpl:r}).agentTurnProgress(n)}}function ba(e){let n=Date.now,t=e.flushIntervalMs??ma,r=e.log??D,o=e.post??xa({kandanUrl:e.kandanUrl,mcpAuthPath:e.mcpAuthPath}),i=new Map,s=!1,a=0,d=0,u,l,f=!1,y=!1,p=(_,m)=>{let b=i.get(_);if(b!==void 0)return b;let k={kind:m,phase:"commentary",text:"",snapshotIndex:0,state:"streaming",dirty:!1,lastFlushMs:0,ackedState:void 0};return i.set(_,k),k},g=_=>_.state==="streaming"?_.lastFlushMs+t:0,c=async(_,m)=>{let b=m.text,k=m.state;m.dirty=!1,m.snapshotIndex+=1,m.lastFlushMs=n();try{return await o({stream_key:`${e.streamKeyPrefix}:${_}`,item_id:_,kind:m.kind,...m.kind==="codex_assistant_message"?{phase:m.phase}:{},body:b,stream_state:k,snapshot_index:m.snapshotIndex,...e.sourceSeq===void 0?{}:{source_seq:e.sourceSeq}}),d+=1,a=0,m.ackedState=k,!0}catch(S){a+=1;let C=S instanceof Error?S.message:String(S);return _a(C)?(y=!0,s=!0,r({phase:"progress",outcome:"permanent_reject",message:re(C)}),!1):(r({phase:"progress",outcome:"post_failed",consecutive_failures:a,message:re(C)}),a>=ya&&(s=!0,r({phase:"progress",outcome:"disabled"})),!1)}},v=async()=>{for(;;){if(s)return;let _=n(),m,b=!1;for(let[k,S]of i){if(!S.dirty||S.text===""||S.state!=="streaming"&&!f)continue;let C=g(S);C<=_?(await c(k,S),b=!0):m=m===void 0?C:Math.min(m,C)}if(!b){m!==void 0&&(clearTimeout(l),l=setTimeout(T,Math.max(10,m-n())),l.unref?.());return}}};function T(){s||f||u!==void 0||(u=v().catch(()=>{}).finally(()=>{u=void 0}))}return{onNotification:_=>{try{let m=w(_.params)??{};if(_.method==="item/agentMessage/delta"){let b=pr(m);if(b!==void 0){let k=p(b.itemKey,"codex_assistant_message");k.phase=b.phase,k.text+=b.delta,k.dirty=!0,T()}return}if(_.method==="item/reasoning/textDelta"){let b=mr(m);if(b!==void 0){let k=p(b.itemKey,"codex_reasoning");k.text+=b.delta,k.dirty=!0,T()}return}if(_.method==="item/completed"){let b=w(m.item),k=h(b?.type),S=h(b?.id);if(S===void 0)return;if(k==="agentMessage"){let C=Dr(_.params),P=p(S,"codex_assistant_message");P.phase=Mn(b?.phase),C!==""&&(P.text=C),P.state="completed",P.dirty=!0,T()}else if(k==="reasoning"){let C=i.get(S);C!==void 0&&(C.state="completed",C.dirty=!0,T())}}}catch(m){r({phase:"progress",outcome:"notification_error",message:re(m instanceof Error?m.message:String(m))})}},finish:async _=>{try{let m=n()+(e.finishDeadlineMs??ha),b=()=>new Promise(S=>setTimeout(S,Math.max(0,m-n())).unref?.());f=!0,clearTimeout(l),u!==void 0&&await Promise.race([u,b()]);for(let S of i.values())S.state==="streaming"&&S.text!==""&&(S.state=_);let k=250;for(;;){let S=[...i.entries()].filter(([,P])=>P.text!==""&&P.state!==P.ackedState);if(S.length===0||y||n()>=m)break;let C=!1;for(let[P,Me]of S){if(y||n()>=m)break;await c(P,Me)||(C=!0)}C&&!y&&n()<m&&await new Promise(P=>setTimeout(P,k))}r({phase:"progress",outcome:"finished",frames_posted:d,disabled:s})}catch(m){r({phase:"progress",outcome:"finish_error",message:re(m instanceof Error?m.message:String(m))})}}}}function va(e){if(e==="item/commandExecution/requestApproval"||e==="item/fileChange/requestApproval")return{decision:"decline"}}async function Sa(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 Pr(e)}catch(r){if(Date.now()>=n)throw r;await new Promise(o=>setTimeout(o,Ws))}}}var wa=360*60*1e3;function ka(e,n){try{for(let t of qs(e))try{let r=nn(e,t);n-Gs(r).mtimeMs>wa&&Vs(r)}catch{}}catch{}}function Ca(e,n,t=Rr){Gn(n);let r=nn(e,`${n}.beat`),o=()=>{try{Re(r,`${Date.now()}
|
|
16
|
+
`)}catch{}};try{ye(e,{recursive:!0})}catch{}ka(e,Date.now()),o();let i=setInterval(o,t);return i.unref?.(),()=>{clearInterval(i);try{Jr(r,{force:!0})}catch{}}}function Ea(e,n,t){try{Gn(n),ye(e,{recursive:!0}),Re(nn(e,`${n}.exit`),`${JSON.stringify({phase:"exit",ok:t.ok,reason:re(t.reason),turnMs:t.turnMs,...t.evidence===void 0?{}:{evidence:t.evidence}})}
|
|
17
|
+
`)}catch{}}var Fr="guestTurnFailureEvidence";function Pa(e){if(!(typeof e!="object"||e===null))return e[Fr]}async function Ta(e,n={}){let t=n.now??Date.now,r=n.secretsDir??Fn,o=n.mcpAuthPath??zn,i=n.codexHome??Ze,s=n.threadMapPath??Ir,a=n.modelCallLivenessWindowMs??Zs(process.env),d=n.activeLoopBudgetMs??Qs(process.env),u=n.activeLoopEvidenceLimit??20;if(!Number.isSafeInteger(a)||a<=0)throw new Error(`guest model-call liveness window must be a positive integer number of milliseconds, got ${JSON.stringify(a)}`);if(!Number.isSafeInteger(d)||d<=0||d>Ye)throw new Error(`guest active-loop budget must be an integer number of milliseconds between 1 and ${Ye}, got ${JSON.stringify(d)}`);if(!Number.isSafeInteger(u)||u<=0)throw new Error(`guest active-loop evidence limit must be a positive integer, got ${JSON.stringify(u)}`);let l=t();ta(e);let f=e.turnNonce!==void 0&&e.turnNonce!==""?Ca(n.heartbeatDir??qn,e.turnNonce,n.heartbeatIntervalMs):void 0,y,p,g=0,c,v=()=>{if(c!==void 0)return c;if(p!==void 0)return c=p.evidence(g),D({phase:"guest_turn_failure_evidence",...c}),c},T=()=>{try{y?.pid!==void 0&&y.kill("SIGINT")}catch{}};try{oa(r,o);let I=ra(e,i),J=`ws://127.0.0.1:${e.appServerPort}`;n.spawnCodex===void 0&&ye(i,{recursive:!0,mode:448}),y=n.spawnCodex?n.spawnCodex(I):Ds("codex",I,{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,...$r(e)},stdio:["ignore","pipe","pipe"],detached:!1}),p=Ys(y,{startedAtMs:l,now:t});let _=await Sa(J,l+Bs,y);try{_.onRequest?.(x=>va(x.method));let m=e.codexThreadId,b;if(m!==void 0&&m!==""){let x=Ur(s)[m];x!==void 0&&("error"in await _.request("thread/resume",{threadId:x,...Rn({cwd:e.cwd,channelSession:{model:e.model,reasoningEffort:e.reasoningEffort,approvalPolicy:e.approvalPolicy,sandbox:e.sandbox,linzumiAgentSession:!0}})})||(b=x))}if(b===void 0){let x=await _.request("thread/start",{cwd:e.cwd,serviceName:"kandan-cloud-agent",personality:"pragmatic",...Rn({cwd:e.cwd,channelSession:{model:e.model,reasoningEffort:e.reasoningEffort,approvalPolicy:e.approvalPolicy,sandbox:e.sandbox,linzumiAgentSession:!0}})});if("error"in x)throw new Error(`thread/start failed: ${x.error.message}`);let R=h(w(w(x.result)?.thread)?.id);if(R===void 0)throw new Error("thread/start response did not include thread.id");b=R,m!==void 0&&m!==""&&aa(s,m,b),D({phase:"thread",mode:"started"})}else D({phase:"thread",mode:"resumed"});let k="",S=!1,C=!1,P,Me=-1,tn=new Set,oe,ie,je=[],rn=ba({kandanUrl:e.kandanUrl,mcpAuthPath:o,streamKeyPrefix:e.turnNonce!==void 0&&e.turnNonce!==""?`cloud:${e.turnNonce}`:`cloud:${l}`,...e.sourceSeq===void 0?{}:{sourceSeq:e.sourceSeq},post:n.progressPost,flushIntervalMs:n.progressFlushIntervalMs,now:t}),he,Gr=new Promise((x,R)=>{he={resolve:x,reject:R}}),Ne=()=>{oe!==void 0&&(clearTimeout(oe),oe=void 0)},on=()=>{ie!==void 0&&(clearTimeout(ie),ie=void 0)},Hn=()=>{Ne(),oe=setTimeout(()=>{oe=void 0,C||he?.reject(new Wn(a))},a),oe.unref?.()},Kn=x=>{if(C){D({phase:"codex-exit",benign:!0});return}setTimeout(()=>{C||he?.reject(x())},n.postTerminalGraceMs??ua).unref?.()};_.onNotification(x=>{if(D({phase:"notification",method:x.method}),rn.onNotification(x),P!==void 0){let M=Xs(x,b,P);M!==void 0&&M.totalTokens>Me&&(Me=M.totalTokens,M.priorCallTotalTokens!==void 0&&!tn.has(M.priorCallTotalTokens)&&(tn.add(M.priorCallTotalTokens),g+=1),Hn())}if(x.method==="item/completed"){let M=Dr(x.params);M!==""&&(k=M),ca(x.params)&&(S=!0);let an=w(x.params),Vr=P!==void 0&&h(an?.threadId)===b&&h(an?.turnId)===P,Br=w(an?.item),dn=h(Br?.type),xe;switch(Vr?dn:void 0){case"agentMessage":M!==""&&(xe={kind:"narration"});break;case"mcpToolCall":case"dynamicToolCall":case"collabAgentToolCall":{xe={kind:"tool_call",tool_type:dn};break}case"commandExecution":{xe={kind:"tool_call",tool_type:dn};break}}xe!==void 0&&(je.push(xe),je.length>u&&je.shift())}if(!da.has(x.method))return;C=!0,Ne(),on();let R=x.method==="turn/completed";he?.resolve({ok:R,reason:x.method==="turn/completed"?"turn completed":`turn terminal: ${x.method}`,turnMs:t()-l})}),_.onClose?.(x=>Kn(()=>new Error(`codex connection closed before a turn terminal: ${x?.message??"connection closed"}`))),y?.once("exit",x=>Kn(()=>new Error(`codex app-server process exited mid-turn (code ${x})`)));let sn=await _.request("turn/start",{threadId:b,input:e.input,...lr({cwd:e.cwd,channelSession:{model:e.model,reasoningEffort:e.reasoningEffort,approvalPolicy:e.approvalPolicy,sandbox:e.sandbox,linzumiAgentSession:!0}})});if("error"in sn)throw new Error(`turn/start failed: ${sn.error.message}`);if(P=h(w(w(sn.result)?.turn)?.id),P===void 0)throw new Error("turn/start response did not include turn.id");Hn(),ie=setTimeout(()=>{ie=void 0,C||(D({phase:"active-loop-budget-exceeded",code:"active_loop_budget_exceeded",budget_ms:d,evidence_limit:u,evidence:je}),T(),he?.reject(new Bn(d)))},d),ie.unref?.();let _e;try{_e=await Gr}catch(x){throw Ne(),on(),await rn.finish("failed"),x}let se=_e;if(_e.ok){let x=n.relayReply??pa;try{let R=await x({kandanUrl:e.kandanUrl,mcpAuthPath:o,body:k});D({phase:"reply",relay:R,reply_tool_call_seen:S,captured_chars:k.length}),R==="skipped"&&!S&&(se={ok:!1,reason:"turn completed but no reply was posted: codex produced no visible output to relay and never called linzumi_agent_reply",turnMs:_e.turnMs})}catch(R){let M=R instanceof Error?R.message:String(R);D({phase:"reply",relay:"failed",reason:M}),se={ok:!1,reason:M,turnMs:_e.turnMs}}}if(await rn.finish(se.ok?"completed":"failed"),Ne(),on(),!se.ok){let x=v();return{...se,...x===void 0?{}:{evidence:x}}}return se}finally{_.close()}}catch(I){let J=I instanceof Error?I:new Error(String(I)),_=v();throw _!==void 0&&Object.defineProperty(J,Fr,{value:_,enumerable:!1}),J}finally{f?.(),T(),ia(r)}}async function zr(e=process.argv,n={}){let t=e[2];if(t==="--selftest")return D({phase:"selftest",ok:!0,node:process.version}),0;if(t===void 0||t==="")return Xe(!1,"missing turn config argv[2]",0),1;let r;try{r=Or(t)}catch(a){return Xe(!1,`config decode failed: ${a instanceof Error?a.message:String(a)}`,0),1}let o=n.heartbeatDir??qn;ea(nn(o,"last-turn.debug.jsonl")),D({phase:"boot",turn_nonce:r.turnNonce??null,node:process.version});let i=n.runTurn??Ta,s=a=>{r.turnNonce!==void 0&&r.turnNonce!==""&&Ea(o,r.turnNonce,a)};try{let a=await i(r);return s(a),Xe(a.ok,a.reason,a.turnMs,a.evidence),a.ok?0:1}catch(a){let d=a instanceof Error?a.message:String(a),u=Pa(a);return s({ok:!1,reason:d,turnMs:0,evidence:u}),Xe(!1,d,0,u),1}}function qr(e){let n=!1,t=()=>{n||(n=!0,process.exit(e))};try{process.stdout.write("",t)}catch{t()}setTimeout(t,1e3).unref?.()}zr(process.argv).then(e=>{qr(e)}).catch(e=>{process.stdout.write(`${JSON.stringify({phase:"exit",ok:!1,reason:e instanceof Error?e.message:String(e),turnMs:0})}
|
|
18
|
+
`),qr(1)});
|