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