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