@linzumi/cli 1.0.232 → 1.0.234
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 +30 -11
- package/dist/impl-res/crossHarnessFailover.mjs +6 -6
- package/dist/impl-res/index.js +255 -252
- package/dist/impl-ts/cloud-supervisor.mjs +30 -11
- package/dist/impl-ts/crossHarnessFailover.mjs +6 -6
- package/dist/impl-ts/index.js +465 -465
- package/package.json +1 -1
- package/scripts/build-core-reconnect-resume-parity-oracle.mjs +62 -1
- package/scripts/build.mjs +6 -0
|
@@ -1,18 +1,37 @@
|
|
|
1
1
|
import { createRequire as __linzumiBundleCreateRequire } from 'node:module';
|
|
2
2
|
const require = __linzumiBundleCreateRequire(import.meta.url);
|
|
3
|
-
var Wr=Object.create;var Qn=Object.defineProperty;var Hr=Object.getOwnPropertyDescriptor;var Kr=Object.getOwnPropertyNames;var Qr=Object.getPrototypeOf,Zr=Object.prototype.hasOwnProperty;var O=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(n,t)=>(typeof require<"u"?require:n)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var j=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Xr=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of Kr(n))!Zr.call(e,o)&&o!==t&&Qn(e,o,{get:()=>n[o],enumerable:!(r=Hr(n,o))||r.enumerable});return e};var be=(e,n,t)=>(t=e!=null?Wr(Qr(e)):{},Xr(n||!e||!e.__esModule?Qn(t,"default",{value:e,enumerable:!0}):t,e));var G=j((Aa,Yn)=>{"use strict";var Zn=["nodebuffer","arraybuffer","fragments"],Xn=typeof Blob<"u";Xn&&Zn.push("blob");Yn.exports={BINARY_TYPES:Zn,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:Xn,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var ve=j((Ia,Je)=>{"use strict";var{EMPTY_BUFFER:Yr}=G(),un=Buffer[Symbol.species];function eo(e,n){if(e.length===0)return Yr;if(e.length===1)return e[0];let t=Buffer.allocUnsafe(n),r=0;for(let o=0;o<e.length;o++){let i=e[o];t.set(i,r),r+=i.length}return r<n?new un(t.buffer,t.byteOffset,r):t}function et(e,n,t,r,o){for(let i=0;i<o;i++)t[r+i]=e[i]^n[i&3]}function nt(e,n){for(let t=0;t<e.length;t++)e[t]^=n[t&3]}function no(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function cn(e){if(cn.readOnly=!0,Buffer.isBuffer(e))return e;let n;return e instanceof ArrayBuffer?n=new un(e):ArrayBuffer.isView(e)?n=new un(e.buffer,e.byteOffset,e.byteLength):(n=Buffer.from(e),cn.readOnly=!1),n}Je.exports={concat:eo,mask:et,toArrayBuffer:no,toBuffer:cn,unmask:nt};if(!process.env.WS_NO_BUFFER_UTIL)try{let e=O("bufferutil");Je.exports.mask=function(n,t,r,o,i){i<48?et(n,t,r,o,i):e.mask(n,t,r,o,i)},Je.exports.unmask=function(n,t){n.length<32?nt(n,t):e.unmask(n,t)}}catch{}});var ot=j((Ra,rt)=>{"use strict";var tt=Symbol("kDone"),ln=Symbol("kRun"),fn=class{constructor(n){this[tt]=()=>{this.pending--,this[ln]()},this.concurrency=n||1/0,this.jobs=[],this.pending=0}add(n){this.jobs.push(n),this[ln]()}[ln](){if(this.pending!==this.concurrency&&this.jobs.length){let n=this.jobs.shift();this.pending++,n(this[tt])}}};rt.exports=fn});var we=j((Ma,dt)=>{"use strict";var Se=O("zlib"),it=ve(),to=ot(),{kStatusCode:st}=G(),ro=Buffer[Symbol.species],oo=Buffer.from([0,0,255,255]),$e=Symbol("permessage-deflate"),V=Symbol("total-length"),ae=Symbol("callback"),H=Symbol("buffers"),de=Symbol("error"),Le,pn=class{constructor(n,t,r){if(this._maxPayload=r|0,this._options=n||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,!Le){let o=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;Le=new to(o)}}static get extensionName(){return"permessage-deflate"}offer(){let n={};return this._options.serverNoContextTakeover&&(n.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(n.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(n.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?n.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(n.client_max_window_bits=!0),n}accept(n){return n=this.normalizeParams(n),this.params=this._isServer?this.acceptAsServer(n):this.acceptAsClient(n),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let n=this._deflate[ae];this._deflate.close(),this._deflate=null,n&&n(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(n){let t=this._options,r=n.find(o=>!(t.serverNoContextTakeover===!1&&o.server_no_context_takeover||o.server_max_window_bits&&(t.serverMaxWindowBits===!1||typeof t.serverMaxWindowBits=="number"&&t.serverMaxWindowBits>o.server_max_window_bits)||typeof t.clientMaxWindowBits=="number"&&!o.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(r.server_no_context_takeover=!0),t.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof t.serverMaxWindowBits=="number"&&(r.server_max_window_bits=t.serverMaxWindowBits),typeof t.clientMaxWindowBits=="number"?r.client_max_window_bits=t.clientMaxWindowBits:(r.client_max_window_bits===!0||t.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(n){let t=n[0];if(this._options.clientNoContextTakeover===!1&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!t.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(t.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return t}normalizeParams(n){return n.forEach(t=>{Object.keys(t).forEach(r=>{let o=t[r];if(o.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(o=o[0],r==="client_max_window_bits"){if(o!==!0){let i=+o;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${r}": ${o}`);o=i}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${o}`)}else if(r==="server_max_window_bits"){let i=+o;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${r}": ${o}`);o=i}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(o!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${o}`)}else throw new Error(`Unknown parameter "${r}"`);t[r]=o})}),n}decompress(n,t,r){Le.add(o=>{this._decompress(n,t,(i,s)=>{o(),r(i,s)})})}compress(n,t,r){Le.add(o=>{this._compress(n,t,(i,s)=>{o(),r(i,s)})})}_decompress(n,t,r){let o=this._isServer?"client":"server";if(!this._inflate){let i=`${o}_max_window_bits`,s=typeof this.params[i]!="number"?Se.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=Se.createInflateRaw({...this._options.zlibInflateOptions,windowBits:s}),this._inflate[$e]=this,this._inflate[V]=0,this._inflate[H]=[],this._inflate.on("error",so),this._inflate.on("data",at)}this._inflate[ae]=r,this._inflate.write(n),t&&this._inflate.write(oo),this._inflate.flush(()=>{let i=this._inflate[de];if(i){this._inflate.close(),this._inflate=null,r(i);return}let s=it.concat(this._inflate[H],this._inflate[V]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[V]=0,this._inflate[H]=[],t&&this.params[`${o}_no_context_takeover`]&&this._inflate.reset()),r(null,s)})}_compress(n,t,r){let o=this._isServer?"server":"client";if(!this._deflate){let i=`${o}_max_window_bits`,s=typeof this.params[i]!="number"?Se.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=Se.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:s}),this._deflate[V]=0,this._deflate[H]=[],this._deflate.on("data",io)}this._deflate[ae]=r,this._deflate.write(n),this._deflate.flush(Se.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=it.concat(this._deflate[H],this._deflate[V]);t&&(i=new ro(i.buffer,i.byteOffset,i.length-4)),this._deflate[ae]=null,this._deflate[V]=0,this._deflate[H]=[],t&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),r(null,i)})}};dt.exports=pn;function io(e){this[H].push(e),this[V]+=e.length}function at(e){if(this[V]+=e.length,this[$e]._maxPayload<1||this[V]<=this[$e]._maxPayload){this[H].push(e);return}this[de]=new RangeError("Max payload size exceeded"),this[de].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[de][st]=1009,this.removeListener("data",at),this.reset()}function so(e){if(this[$e]._inflate=null,this[de]){this[ae](this[de]);return}e[st]=1007,this[ae](e)}});var ue=j((ja,Ue)=>{"use strict";var{isUtf8:ut}=O("buffer"),{hasBlob:ao}=G(),uo=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function co(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function mn(e){let n=e.length,t=0;for(;t<n;)if((e[t]&128)===0)t++;else if((e[t]&224)===192){if(t+1===n||(e[t+1]&192)!==128||(e[t]&254)===192)return!1;t+=2}else if((e[t]&240)===224){if(t+2>=n||(e[t+1]&192)!==128||(e[t+2]&192)!==128||e[t]===224&&(e[t+1]&224)===128||e[t]===237&&(e[t+1]&224)===160)return!1;t+=3}else if((e[t]&248)===240){if(t+3>=n||(e[t+1]&192)!==128||(e[t+2]&192)!==128||(e[t+3]&192)!==128||e[t]===240&&(e[t+1]&240)===128||e[t]===244&&e[t+1]>143||e[t]>244)return!1;t+=4}else return!1;return!0}function lo(e){return ao&&typeof e=="object"&&typeof e.arrayBuffer=="function"&&typeof e.type=="string"&&typeof e.stream=="function"&&(e[Symbol.toStringTag]==="Blob"||e[Symbol.toStringTag]==="File")}Ue.exports={isBlob:lo,isValidStatusCode:co,isValidUTF8:mn,tokenChars:uo};if(ut)Ue.exports.isValidUTF8=function(e){return e.length<24?mn(e):ut(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=O("utf-8-validate");Ue.exports.isValidUTF8=function(n){return n.length<32?mn(n):e(n)}}catch{}});var xn=j((Na,yt)=>{"use strict";var{Writable:fo}=O("stream"),ct=we(),{BINARY_TYPES:po,EMPTY_BUFFER:lt,kStatusCode:mo,kWebSocket:go}=G(),{concat:gn,toArrayBuffer:yo,unmask:ho}=ve(),{isValidStatusCode:_o,isValidUTF8:ft}=ue(),De=Buffer[Symbol.species],L=0,pt=1,mt=2,gt=3,yn=4,hn=5,Fe=6,_n=class extends fo{constructor(n={}){super(),this._allowSynchronousEvents=n.allowSynchronousEvents!==void 0?n.allowSynchronousEvents:!0,this._binaryType=n.binaryType||po[0],this._extensions=n.extensions||{},this._isServer=!!n.isServer,this._maxPayload=n.maxPayload|0,this._skipUTF8Validation=!!n.skipUTF8Validation,this[go]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=L}_write(n,t,r){if(this._opcode===8&&this._state==L)return r();this._bufferedBytes+=n.length,this._buffers.push(n),this.startLoop(r)}consume(n){if(this._bufferedBytes-=n,n===this._buffers[0].length)return this._buffers.shift();if(n<this._buffers[0].length){let r=this._buffers[0];return this._buffers[0]=new De(r.buffer,r.byteOffset+n,r.length-n),new De(r.buffer,r.byteOffset,n)}let t=Buffer.allocUnsafe(n);do{let r=this._buffers[0],o=t.length-n;n>=r.length?t.set(this._buffers.shift(),o):(t.set(new Uint8Array(r.buffer,r.byteOffset,n),o),this._buffers[0]=new De(r.buffer,r.byteOffset+n,r.length-n)),n-=r.length}while(n>0);return t}startLoop(n){this._loop=!0;do switch(this._state){case L:this.getInfo(n);break;case pt:this.getPayloadLength16(n);break;case mt:this.getPayloadLength64(n);break;case gt:this.getMask();break;case yn:this.getData(n);break;case hn:case Fe:this._loop=!1;return}while(this._loop);this._errored||n()}getInfo(n){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if((t[0]&48)!==0){let o=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");n(o);return}let r=(t[0]&64)===64;if(r&&!this._extensions[ct.extensionName]){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");n(o);return}if(this._fin=(t[0]&128)===128,this._opcode=t[0]&15,this._payloadLength=t[1]&127,this._opcode===0){if(r){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");n(o);return}if(!this._fragmented){let o=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");n(o);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");n(o);return}this._compressed=r}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let o=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");n(o);return}if(r){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");n(o);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let o=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");n(o);return}}else{let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");n(o);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(t[1]&128)===128,this._isServer){if(!this._masked){let o=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");n(o);return}}else if(this._masked){let o=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");n(o);return}this._payloadLength===126?this._state=pt:this._payloadLength===127?this._state=mt:this.haveLength(n)}getPayloadLength16(n){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(n)}getPayloadLength64(n){if(this._bufferedBytes<8){this._loop=!1;return}let t=this.consume(8),r=t.readUInt32BE(0);if(r>Math.pow(2,21)-1){let o=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");n(o);return}this._payloadLength=r*Math.pow(2,32)+t.readUInt32BE(4),this.haveLength(n)}haveLength(n){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let t=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");n(t);return}this._masked?this._state=gt:this._state=yn}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=yn}getData(n){let t=lt;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&ho(t,this._mask)}if(this._opcode>7){this.controlMessage(t,n);return}if(this._compressed){this._state=hn,this.decompress(t,n);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(n)}decompress(n,t){this._extensions[ct.extensionName].decompress(n,this._fin,(o,i)=>{if(o)return t(o);if(i.length){if(this._messageLength+=i.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let s=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");t(s);return}this._fragments.push(i)}this.dataMessage(t),this._state===L&&this.startLoop(t)})}dataMessage(n){if(!this._fin){this._state=L;return}let t=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let o;this._binaryType==="nodebuffer"?o=gn(r,t):this._binaryType==="arraybuffer"?o=yo(gn(r,t)):this._binaryType==="blob"?o=new Blob(r):o=r,this._allowSynchronousEvents?(this.emit("message",o,!0),this._state=L):(this._state=Fe,setImmediate(()=>{this.emit("message",o,!0),this._state=L,this.startLoop(n)}))}else{let o=gn(r,t);if(!this._skipUTF8Validation&&!ft(o)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");n(i);return}this._state===hn||this._allowSynchronousEvents?(this.emit("message",o,!1),this._state=L):(this._state=Fe,setImmediate(()=>{this.emit("message",o,!1),this._state=L,this.startLoop(n)}))}}controlMessage(n,t){if(this._opcode===8){if(n.length===0)this._loop=!1,this.emit("conclude",1005,lt),this.end();else{let r=n.readUInt16BE(0);if(!_o(r)){let i=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");t(i);return}let o=new De(n.buffer,n.byteOffset+2,n.length-2);if(!this._skipUTF8Validation&&!ft(o)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");t(i);return}this._loop=!1,this.emit("conclude",r,o),this.end()}this._state=L;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",n),this._state=L):(this._state=Fe,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",n),this._state=L,this.startLoop(t)}))}createError(n,t,r,o,i){this._loop=!1,this._errored=!0;let s=new n(r?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(s,this.createError),s.code=i,s[mo]=o,s}};yt.exports=_n});var Sn=j((La,xt)=>{"use strict";var{Duplex:Ja}=O("stream"),{randomFillSync:xo}=O("crypto"),ht=we(),{EMPTY_BUFFER:bo,kWebSocket:vo,NOOP:So}=G(),{isBlob:ce,isValidStatusCode:wo}=ue(),{mask:_t,toBuffer:Q}=ve(),$=Symbol("kByteLength"),ko=Buffer.alloc(4),ze=8*1024,Z,le=ze,F=0,Co=1,Eo=2,bn=class e{constructor(n,t,r){this._extensions=t||{},r&&(this._generateMask=r,this._maskBuffer=Buffer.alloc(4)),this._socket=n,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=F,this.onerror=So,this[vo]=void 0}static frame(n,t){let r,o=!1,i=2,s=!1;t.mask&&(r=t.maskBuffer||ko,t.generateMask?t.generateMask(r):(le===ze&&(Z===void 0&&(Z=Buffer.alloc(ze)),xo(Z,0,ze),le=0),r[0]=Z[le++],r[1]=Z[le++],r[2]=Z[le++],r[3]=Z[le++]),s=(r[0]|r[1]|r[2]|r[3])===0,i=6);let a;typeof n=="string"?(!t.mask||s)&&t[$]!==void 0?a=t[$]:(n=Buffer.from(n),a=n.length):(a=n.length,o=t.mask&&t.readOnly&&!s);let d=a;a>=65536?(i+=8,d=127):a>125&&(i+=2,d=126);let u=Buffer.allocUnsafe(o?a+i:i);return u[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(u[0]|=64),u[1]=d,d===126?u.writeUInt16BE(a,2):d===127&&(u[2]=u[3]=0,u.writeUIntBE(a,4,6)),t.mask?(u[1]|=128,u[i-4]=r[0],u[i-3]=r[1],u[i-2]=r[2],u[i-1]=r[3],s?[u,n]:o?(_t(n,r,u,i,a),[u]):(_t(n,r,n,0,a),[u,n])):[u,n]}close(n,t,r,o){let i;if(n===void 0)i=bo;else{if(typeof n!="number"||!wo(n))throw new TypeError("First argument must be a valid error code number");if(t===void 0||!t.length)i=Buffer.allocUnsafe(2),i.writeUInt16BE(n,0);else{let a=Buffer.byteLength(t);if(a>123)throw new RangeError("The message must not be greater than 123 bytes");i=Buffer.allocUnsafe(2+a),i.writeUInt16BE(n,0),typeof t=="string"?i.write(t,2):i.set(t,2)}}let s={[$]:i.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==F?this.enqueue([this.dispatch,i,!1,s,o]):this.sendFrame(e.frame(i,s),o)}ping(n,t,r){let o,i;if(typeof n=="string"?(o=Buffer.byteLength(n),i=!1):ce(n)?(o=n.size,i=!1):(n=Q(n),o=n.length,i=Q.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let s={[$]:o,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};ce(n)?this._state!==F?this.enqueue([this.getBlobData,n,!1,s,r]):this.getBlobData(n,!1,s,r):this._state!==F?this.enqueue([this.dispatch,n,!1,s,r]):this.sendFrame(e.frame(n,s),r)}pong(n,t,r){let o,i;if(typeof n=="string"?(o=Buffer.byteLength(n),i=!1):ce(n)?(o=n.size,i=!1):(n=Q(n),o=n.length,i=Q.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let s={[$]:o,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};ce(n)?this._state!==F?this.enqueue([this.getBlobData,n,!1,s,r]):this.getBlobData(n,!1,s,r):this._state!==F?this.enqueue([this.dispatch,n,!1,s,r]):this.sendFrame(e.frame(n,s),r)}send(n,t,r){let o=this._extensions[ht.extensionName],i=t.binary?2:1,s=t.compress,a,d;typeof n=="string"?(a=Buffer.byteLength(n),d=!1):ce(n)?(a=n.size,d=!1):(n=Q(n),a=n.length,d=Q.readOnly),this._firstFragment?(this._firstFragment=!1,s&&o&&o.params[o._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(s=a>=o._threshold),this._compress=s):(s=!1,i=0),t.fin&&(this._firstFragment=!0);let u={[$]:a,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:d,rsv1:s};ce(n)?this._state!==F?this.enqueue([this.getBlobData,n,this._compress,u,r]):this.getBlobData(n,this._compress,u,r):this._state!==F?this.enqueue([this.dispatch,n,this._compress,u,r]):this.dispatch(n,this._compress,u,r)}getBlobData(n,t,r,o){this._bufferedBytes+=r[$],this._state=Eo,n.arrayBuffer().then(i=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(vn,this,a,o);return}this._bufferedBytes-=r[$];let s=Q(i);t?this.dispatch(s,t,r,o):(this._state=F,this.sendFrame(e.frame(s,r),o),this.dequeue())}).catch(i=>{process.nextTick(Po,this,i,o)})}dispatch(n,t,r,o){if(!t){this.sendFrame(e.frame(n,r),o);return}let i=this._extensions[ht.extensionName];this._bufferedBytes+=r[$],this._state=Co,i.compress(n,r.fin,(s,a)=>{if(this._socket.destroyed){let d=new Error("The socket was closed while data was being compressed");vn(this,d,o);return}this._bufferedBytes-=r[$],this._state=F,r.readOnly=!1,this.sendFrame(e.frame(a,r),o),this.dequeue()})}dequeue(){for(;this._state===F&&this._queue.length;){let n=this._queue.shift();this._bufferedBytes-=n[3][$],Reflect.apply(n[0],this,n.slice(1))}}enqueue(n){this._bufferedBytes+=n[3][$],this._queue.push(n)}sendFrame(n,t){n.length===2?(this._socket.cork(),this._socket.write(n[0]),this._socket.write(n[1],t),this._socket.uncork()):this._socket.write(n[0],t)}};xt.exports=bn;function vn(e,n,t){typeof t=="function"&&t(n);for(let r=0;r<e._queue.length;r++){let o=e._queue[r],i=o[o.length-1];typeof i=="function"&&i(n)}}function Po(e,n,t){vn(e,n,t),e.onerror(n)}});var Tt=j(($a,Pt)=>{"use strict";var{kForOnEventAttribute:ke,kListener:wn}=G(),bt=Symbol("kCode"),vt=Symbol("kData"),St=Symbol("kError"),wt=Symbol("kMessage"),kt=Symbol("kReason"),fe=Symbol("kTarget"),Ct=Symbol("kType"),Et=Symbol("kWasClean"),B=class{constructor(n){this[fe]=null,this[Ct]=n}get target(){return this[fe]}get type(){return this[Ct]}};Object.defineProperty(B.prototype,"target",{enumerable:!0});Object.defineProperty(B.prototype,"type",{enumerable:!0});var X=class extends B{constructor(n,t={}){super(n),this[bt]=t.code===void 0?0:t.code,this[kt]=t.reason===void 0?"":t.reason,this[Et]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[bt]}get reason(){return this[kt]}get wasClean(){return this[Et]}};Object.defineProperty(X.prototype,"code",{enumerable:!0});Object.defineProperty(X.prototype,"reason",{enumerable:!0});Object.defineProperty(X.prototype,"wasClean",{enumerable:!0});var pe=class extends B{constructor(n,t={}){super(n),this[St]=t.error===void 0?null:t.error,this[wt]=t.message===void 0?"":t.message}get error(){return this[St]}get message(){return this[wt]}};Object.defineProperty(pe.prototype,"error",{enumerable:!0});Object.defineProperty(pe.prototype,"message",{enumerable:!0});var Ce=class extends B{constructor(n,t={}){super(n),this[vt]=t.data===void 0?null:t.data}get data(){return this[vt]}};Object.defineProperty(Ce.prototype,"data",{enumerable:!0});var To={addEventListener(e,n,t={}){for(let o of this.listeners(e))if(!t[ke]&&o[wn]===n&&!o[ke])return;let r;if(e==="message")r=function(i,s){let a=new Ce("message",{data:s?i:i.toString()});a[fe]=this,qe(n,this,a)};else if(e==="close")r=function(i,s){let a=new X("close",{code:i,reason:s.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[fe]=this,qe(n,this,a)};else if(e==="error")r=function(i){let s=new pe("error",{error:i,message:i.message});s[fe]=this,qe(n,this,s)};else if(e==="open")r=function(){let i=new B("open");i[fe]=this,qe(n,this,i)};else return;r[ke]=!!t[ke],r[wn]=n,t.once?this.once(e,r):this.on(e,r)},removeEventListener(e,n){for(let t of this.listeners(e))if(t[wn]===n&&!t[ke]){this.removeListener(e,t);break}}};Pt.exports={CloseEvent:X,ErrorEvent:pe,Event:B,EventTarget:To,MessageEvent:Ce};function qe(e,n,t){typeof e=="object"&&e.handleEvent?e.handleEvent.call(e,t):e.call(n,t)}});var kn=j((Ua,Ot)=>{"use strict";var{tokenChars:Ee}=ue();function z(e,n,t){e[n]===void 0?e[n]=[t]:e[n].push(t)}function Oo(e){let n=Object.create(null),t=Object.create(null),r=!1,o=!1,i=!1,s,a,d=-1,u=-1,l=-1,f=0;for(;f<e.length;f++)if(u=e.charCodeAt(f),s===void 0)if(l===-1&&Ee[u]===1)d===-1&&(d=f);else if(f!==0&&(u===32||u===9))l===-1&&d!==-1&&(l=f);else if(u===59||u===44){if(d===-1)throw new SyntaxError(`Unexpected character at index ${f}`);l===-1&&(l=f);let p=e.slice(d,l);u===44?(z(n,p,t),t=Object.create(null)):s=p,d=l=-1}else throw new SyntaxError(`Unexpected character at index ${f}`);else if(a===void 0)if(l===-1&&Ee[u]===1)d===-1&&(d=f);else if(u===32||u===9)l===-1&&d!==-1&&(l=f);else if(u===59||u===44){if(d===-1)throw new SyntaxError(`Unexpected character at index ${f}`);l===-1&&(l=f),z(t,e.slice(d,l),!0),u===44&&(z(n,s,t),t=Object.create(null),s=void 0),d=l=-1}else if(u===61&&d!==-1&&l===-1)a=e.slice(d,f),d=l=-1;else throw new SyntaxError(`Unexpected character at index ${f}`);else if(o){if(Ee[u]!==1)throw new SyntaxError(`Unexpected character at index ${f}`);d===-1?d=f:r||(r=!0),o=!1}else if(i)if(Ee[u]===1)d===-1&&(d=f);else if(u===34&&d!==-1)i=!1,l=f;else if(u===92)o=!0;else throw new SyntaxError(`Unexpected character at index ${f}`);else if(u===34&&e.charCodeAt(f-1)===61)i=!0;else if(l===-1&&Ee[u]===1)d===-1&&(d=f);else if(d!==-1&&(u===32||u===9))l===-1&&(l=f);else if(u===59||u===44){if(d===-1)throw new SyntaxError(`Unexpected character at index ${f}`);l===-1&&(l=f);let p=e.slice(d,l);r&&(p=p.replace(/\\/g,""),r=!1),z(t,a,p),u===44&&(z(n,s,t),t=Object.create(null),s=void 0),a=void 0,d=l=-1}else throw new SyntaxError(`Unexpected character at index ${f}`);if(d===-1||i||u===32||u===9)throw new SyntaxError("Unexpected end of input");l===-1&&(l=f);let y=e.slice(d,l);return s===void 0?z(n,y,t):(a===void 0?z(t,y,!0):r?z(t,a,y.replace(/\\/g,"")):z(t,a,y),z(n,s,t)),n}function Ao(e){return Object.keys(e).map(n=>{let t=e[n];return Array.isArray(t)||(t=[t]),t.map(r=>[n].concat(Object.keys(r).map(o=>{let i=r[o];return Array.isArray(i)||(i=[i]),i.map(s=>s===!0?o:`${o}=${s}`).join("; ")})).join("; ")).join(", ")}).join(", ")}Ot.exports={format:Ao,parse:Oo}});var We=j((za,Ft)=>{"use strict";var Io=O("events"),Ro=O("https"),Mo=O("http"),Rt=O("net"),jo=O("tls"),{randomBytes:No,createHash:Jo}=O("crypto"),{Duplex:Da,Readable:Fa}=O("stream"),{URL:Cn}=O("url"),K=we(),Lo=xn(),$o=Sn(),{isBlob:Uo}=ue(),{BINARY_TYPES:At,EMPTY_BUFFER:Ge,GUID:Do,kForOnEventAttribute:En,kListener:Fo,kStatusCode:zo,kWebSocket:A,NOOP:Mt}=G(),{EventTarget:{addEventListener:qo,removeEventListener:Go}}=Tt(),{format:Vo,parse:Bo}=kn(),{toBuffer:Wo}=ve(),Ho=30*1e3,jt=Symbol("kAborted"),Pn=[8,13],W=["CONNECTING","OPEN","CLOSING","CLOSED"],Ko=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,E=class e extends Io{constructor(n,t,r){super(),this._binaryType=At[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Ge,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=e.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,n!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,t===void 0?t=[]:Array.isArray(t)||(typeof t=="object"&&t!==null?(r=t,t=[]):t=[t]),Nt(this,n,t,r)):(this._autoPong=r.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(n){At.includes(n)&&(this._binaryType=n,this._receiver&&(this._receiver._binaryType=n))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(n,t,r){let o=new Lo({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),i=new $o(n,this._extensions,r.generateMask);this._receiver=o,this._sender=i,this._socket=n,o[A]=this,i[A]=this,n[A]=this,o.on("conclude",Xo),o.on("drain",Yo),o.on("error",ei),o.on("message",ni),o.on("ping",ti),o.on("pong",ri),i.onerror=oi,n.setTimeout&&n.setTimeout(0),n.setNoDelay&&n.setNoDelay(),t.length>0&&n.unshift(t),n.on("close",$t),n.on("data",Be),n.on("end",Ut),n.on("error",Dt),this._readyState=e.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[K.extensionName]&&this._extensions[K.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(n,t){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){N(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(n,t,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Lt(this)}}pause(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!0,this._socket.pause())}ping(n,t,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof n=="function"?(r=n,n=t=void 0):typeof t=="function"&&(r=t,t=void 0),typeof n=="number"&&(n=n.toString()),this.readyState!==e.OPEN){Tn(this,n,r);return}t===void 0&&(t=!this._isServer),this._sender.ping(n||Ge,t,r)}pong(n,t,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof n=="function"?(r=n,n=t=void 0):typeof t=="function"&&(r=t,t=void 0),typeof n=="number"&&(n=n.toString()),this.readyState!==e.OPEN){Tn(this,n,r);return}t===void 0&&(t=!this._isServer),this._sender.pong(n||Ge,t,r)}resume(){this.readyState===e.CONNECTING||this.readyState===e.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(n,t,r){if(this.readyState===e.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"&&(r=t,t={}),typeof n=="number"&&(n=n.toString()),this.readyState!==e.OPEN){Tn(this,n,r);return}let o={binary:typeof n!="string",mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[K.extensionName]||(o.compress=!1),this._sender.send(n||Ge,o,r)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){N(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(E,"CONNECTING",{enumerable:!0,value:W.indexOf("CONNECTING")});Object.defineProperty(E.prototype,"CONNECTING",{enumerable:!0,value:W.indexOf("CONNECTING")});Object.defineProperty(E,"OPEN",{enumerable:!0,value:W.indexOf("OPEN")});Object.defineProperty(E.prototype,"OPEN",{enumerable:!0,value:W.indexOf("OPEN")});Object.defineProperty(E,"CLOSING",{enumerable:!0,value:W.indexOf("CLOSING")});Object.defineProperty(E.prototype,"CLOSING",{enumerable:!0,value:W.indexOf("CLOSING")});Object.defineProperty(E,"CLOSED",{enumerable:!0,value:W.indexOf("CLOSED")});Object.defineProperty(E.prototype,"CLOSED",{enumerable:!0,value:W.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(e=>{Object.defineProperty(E.prototype,e,{enumerable:!0})});["open","error","close","message"].forEach(e=>{Object.defineProperty(E.prototype,`on${e}`,{enumerable:!0,get(){for(let n of this.listeners(e))if(n[En])return n[Fo];return null},set(n){for(let t of this.listeners(e))if(t[En]){this.removeListener(e,t);break}typeof n=="function"&&this.addEventListener(e,n,{[En]:!0})}})});E.prototype.addEventListener=qo;E.prototype.removeEventListener=Go;Ft.exports=E;function Nt(e,n,t,r){let o={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:Pn[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(e._autoPong=o.autoPong,!Pn.includes(o.protocolVersion))throw new RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${Pn.join(", ")})`);let i;if(n instanceof Cn)i=n;else try{i=new Cn(n)}catch{throw new SyntaxError(`Invalid URL: ${n}`)}i.protocol==="http:"?i.protocol="ws:":i.protocol==="https:"&&(i.protocol="wss:"),e._url=i.href;let s=i.protocol==="wss:",a=i.protocol==="ws+unix:",d;if(i.protocol!=="ws:"&&!s&&!a?d=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!i.pathname?d="The URL's pathname is empty":i.hash&&(d="The URL contains a fragment identifier"),d){let c=new SyntaxError(d);if(e._redirects===0)throw c;Ve(e,c);return}let u=s?443:80,l=No(16).toString("base64"),f=s?Ro.request:Mo.request,y=new Set,p;if(o.createConnection=o.createConnection||(s?Zo:Qo),o.defaultPort=o.defaultPort||u,o.port=i.port||u,o.host=i.hostname.startsWith("[")?i.hostname.slice(1,-1):i.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":l,Connection:"Upgrade",Upgrade:"websocket"},o.path=i.pathname+i.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(p=new K(o.perMessageDeflate!==!0?o.perMessageDeflate:{},!1,o.maxPayload),o.headers["Sec-WebSocket-Extensions"]=Vo({[K.extensionName]:p.offer()})),t.length){for(let c of t){if(typeof c!="string"||!Ko.test(c)||y.has(c))throw new SyntaxError("An invalid or duplicated subprotocol was specified");y.add(c)}o.headers["Sec-WebSocket-Protocol"]=t.join(",")}if(o.origin&&(o.protocolVersion<13?o.headers["Sec-WebSocket-Origin"]=o.origin:o.headers.Origin=o.origin),(i.username||i.password)&&(o.auth=`${i.username}:${i.password}`),a){let c=o.path.split(":");o.socketPath=c[0],o.path=c[1]}let g;if(o.followRedirects){if(e._redirects===0){e._originalIpc=a,e._originalSecure=s,e._originalHostOrSocketPath=a?o.socketPath:i.host;let c=r&&r.headers;if(r={...r,headers:{}},c)for(let[v,T]of Object.entries(c))r.headers[v.toLowerCase()]=T}else if(e.listenerCount("redirect")===0){let c=a?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:i.host===e._originalHostOrSocketPath;(!c||e._originalSecure&&!s)&&(delete o.headers.authorization,delete o.headers.cookie,c||delete o.headers.host,o.auth=void 0)}o.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(o.auth).toString("base64")),g=e._req=f(o),e._redirects&&e.emit("redirect",e.url,g)}else g=e._req=f(o);o.timeout&&g.on("timeout",()=>{N(e,g,"Opening handshake has timed out")}),g.on("error",c=>{g===null||g[jt]||(g=e._req=null,Ve(e,c))}),g.on("response",c=>{let v=c.headers.location,T=c.statusCode;if(v&&o.followRedirects&&T>=300&&T<400){if(++e._redirects>o.maxRedirects){N(e,g,"Maximum redirects exceeded");return}g.abort();let I;try{I=new Cn(v,n)}catch{let _=new SyntaxError(`Invalid URL: ${v}`);Ve(e,_);return}Nt(e,I,t,r)}else e.emit("unexpected-response",g,c)||N(e,g,`Unexpected server response: ${c.statusCode}`)}),g.on("upgrade",(c,v,T)=>{if(e.emit("upgrade",c),e.readyState!==E.CONNECTING)return;g=e._req=null;let I=c.headers.upgrade;if(I===void 0||I.toLowerCase()!=="websocket"){N(e,v,"Invalid Upgrade header");return}let J=Jo("sha1").update(l+Do).digest("base64");if(c.headers["sec-websocket-accept"]!==J){N(e,v,"Invalid Sec-WebSocket-Accept header");return}let _=c.headers["sec-websocket-protocol"],m;if(_!==void 0?y.size?y.has(_)||(m="Server sent an invalid subprotocol"):m="Server sent a subprotocol but none was requested":y.size&&(m="Server sent no subprotocol"),m){N(e,v,m);return}_&&(e._protocol=_);let b=c.headers["sec-websocket-extensions"];if(b!==void 0){if(!p){N(e,v,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let k;try{k=Bo(b)}catch{N(e,v,"Invalid Sec-WebSocket-Extensions header");return}let S=Object.keys(k);if(S.length!==1||S[0]!==K.extensionName){N(e,v,"Server indicated an extension that was not requested");return}try{p.accept(k[K.extensionName])}catch{N(e,v,"Invalid Sec-WebSocket-Extensions header");return}e._extensions[K.extensionName]=p}e.setSocket(v,T,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(g,e):g.end()}function Ve(e,n){e._readyState=E.CLOSING,e._errorEmitted=!0,e.emit("error",n),e.emitClose()}function Qo(e){return e.path=e.socketPath,Rt.connect(e)}function Zo(e){return e.path=void 0,!e.servername&&e.servername!==""&&(e.servername=Rt.isIP(e.host)?"":e.host),jo.connect(e)}function N(e,n,t){e._readyState=E.CLOSING;let r=new Error(t);Error.captureStackTrace(r,N),n.setHeader?(n[jt]=!0,n.abort(),n.socket&&!n.socket.destroyed&&n.socket.destroy(),process.nextTick(Ve,e,r)):(n.destroy(r),n.once("error",e.emit.bind(e,"error")),n.once("close",e.emitClose.bind(e)))}function Tn(e,n,t){if(n){let r=Uo(n)?n.size:Wo(n).length;e._socket?e._sender._bufferedBytes+=r:e._bufferedAmount+=r}if(t){let r=new Error(`WebSocket is not open: readyState ${e.readyState} (${W[e.readyState]})`);process.nextTick(t,r)}}function Xo(e,n){let t=this[A];t._closeFrameReceived=!0,t._closeMessage=n,t._closeCode=e,t._socket[A]!==void 0&&(t._socket.removeListener("data",Be),process.nextTick(Jt,t._socket),e===1005?t.close():t.close(e,n))}function Yo(){let e=this[A];e.isPaused||e._socket.resume()}function ei(e){let n=this[A];n._socket[A]!==void 0&&(n._socket.removeListener("data",Be),process.nextTick(Jt,n._socket),n.close(e[zo])),n._errorEmitted||(n._errorEmitted=!0,n.emit("error",e))}function It(){this[A].emitClose()}function ni(e,n){this[A].emit("message",e,n)}function ti(e){let n=this[A];n._autoPong&&n.pong(e,!this._isServer,Mt),n.emit("ping",e)}function ri(e){this[A].emit("pong",e)}function Jt(e){e.resume()}function oi(e){let n=this[A];n.readyState!==E.CLOSED&&(n.readyState===E.OPEN&&(n._readyState=E.CLOSING,Lt(n)),this._socket.end(),n._errorEmitted||(n._errorEmitted=!0,n.emit("error",e)))}function Lt(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),Ho)}function $t(){let e=this[A];this.removeListener("close",$t),this.removeListener("data",Be),this.removeListener("end",Ut),e._readyState=E.CLOSING;let n;!this._readableState.endEmitted&&!e._closeFrameReceived&&!e._receiver._writableState.errorEmitted&&(n=e._socket.read())!==null&&e._receiver.write(n),e._receiver.end(),this[A]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",It),e._receiver.on("finish",It))}function Be(e){this[A]._receiver.write(e)||this.pause()}function Ut(){let e=this[A];e._readyState=E.CLOSING,e._receiver.end(),this.end()}function Dt(){let e=this[A];this.removeListener("error",Dt),this.on("error",Mt),e&&(e._readyState=E.CLOSING,this.destroy())}});var Vt=j((Ga,Gt)=>{"use strict";var qa=We(),{Duplex:ii}=O("stream");function zt(e){e.emit("close")}function si(){!this.destroyed&&this._writableState.finished&&this.destroy()}function qt(e){this.removeListener("error",qt),this.destroy(),this.listenerCount("error")===0&&this.emit("error",e)}function ai(e,n){let t=!0,r=new ii({...n,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",function(i,s){let a=!s&&r._readableState.objectMode?i.toString():i;r.push(a)||e.pause()}),e.once("error",function(i){r.destroyed||(t=!1,r.destroy(i))}),e.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(o,i){if(e.readyState===e.CLOSED){i(o),process.nextTick(zt,r);return}let s=!1;e.once("error",function(d){s=!0,i(d)}),e.once("close",function(){s||i(o),process.nextTick(zt,r)}),t&&e.terminate()},r._final=function(o){if(e.readyState===e.CONNECTING){e.once("open",function(){r._final(o)});return}e._socket!==null&&(e._socket._writableState.finished?(o(),r._readableState.endEmitted&&r.destroy()):(e._socket.once("finish",function(){o()}),e.close()))},r._read=function(){e.isPaused&&e.resume()},r._write=function(o,i,s){if(e.readyState===e.CONNECTING){e.once("open",function(){r._write(o,i,s)});return}e.send(o,s)},r.on("end",si),r.on("error",qt),r}Gt.exports=ai});var Wt=j((Va,Bt)=>{"use strict";var{tokenChars:di}=ue();function ui(e){let n=new Set,t=-1,r=-1,o=0;for(o;o<e.length;o++){let s=e.charCodeAt(o);if(r===-1&&di[s]===1)t===-1&&(t=o);else if(o!==0&&(s===32||s===9))r===-1&&t!==-1&&(r=o);else if(s===44){if(t===-1)throw new SyntaxError(`Unexpected character at index ${o}`);r===-1&&(r=o);let a=e.slice(t,r);if(n.has(a))throw new SyntaxError(`The "${a}" subprotocol is duplicated`);n.add(a),t=r=-1}else throw new SyntaxError(`Unexpected character at index ${o}`)}if(t===-1||r!==-1)throw new SyntaxError("Unexpected end of input");let i=e.slice(t,o);if(n.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);return n.add(i),n}Bt.exports={parse:ui}});var er=j((Wa,Yt)=>{"use strict";var ci=O("events"),He=O("http"),{Duplex:Ba}=O("stream"),{createHash:li}=O("crypto"),Ht=kn(),Y=we(),fi=Wt(),pi=We(),{GUID:mi,kWebSocket:gi}=G(),yi=/^[+/0-9A-Za-z]{22}==$/,Kt=0,Qt=1,Xt=2,On=class extends ci{constructor(n,t){if(super(),n={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:pi,...n},n.port==null&&!n.server&&!n.noServer||n.port!=null&&(n.server||n.noServer)||n.server&&n.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(n.port!=null?(this._server=He.createServer((r,o)=>{let i=He.STATUS_CODES[426];o.writeHead(426,{"Content-Length":i.length,"Content-Type":"text/plain"}),o.end(i)}),this._server.listen(n.port,n.host,n.backlog,t)):n.server&&(this._server=n.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=hi(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(o,i,s)=>{this.handleUpgrade(o,i,s,r)}})}n.perMessageDeflate===!0&&(n.perMessageDeflate={}),n.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=n,this._state=Kt}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(n){if(this._state===Xt){n&&this.once("close",()=>{n(new Error("The server is not running"))}),process.nextTick(Pe,this);return}if(n&&this.once("close",n),this._state!==Qt)if(this._state=Qt,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(Pe,this):process.nextTick(Pe,this);else{let t=this._server;this._removeListeners(),this._removeListeners=this._server=null,t.close(()=>{Pe(this)})}}shouldHandle(n){if(this.options.path){let t=n.url.indexOf("?");if((t!==-1?n.url.slice(0,t):n.url)!==this.options.path)return!1}return!0}handleUpgrade(n,t,r,o){t.on("error",Zt);let i=n.headers["sec-websocket-key"],s=n.headers.upgrade,a=+n.headers["sec-websocket-version"];if(n.method!=="GET"){ee(this,n,t,405,"Invalid HTTP method");return}if(s===void 0||s.toLowerCase()!=="websocket"){ee(this,n,t,400,"Invalid Upgrade header");return}if(i===void 0||!yi.test(i)){ee(this,n,t,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){ee(this,n,t,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(n)){Te(t,400);return}let d=n.headers["sec-websocket-protocol"],u=new Set;if(d!==void 0)try{u=fi.parse(d)}catch{ee(this,n,t,400,"Invalid Sec-WebSocket-Protocol header");return}let l=n.headers["sec-websocket-extensions"],f={};if(this.options.perMessageDeflate&&l!==void 0){let y=new Y(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let p=Ht.parse(l);p[Y.extensionName]&&(y.accept(p[Y.extensionName]),f[Y.extensionName]=y)}catch{ee(this,n,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let y={origin:n.headers[`${a===8?"sec-websocket-origin":"origin"}`],secure:!!(n.socket.authorized||n.socket.encrypted),req:n};if(this.options.verifyClient.length===2){this.options.verifyClient(y,(p,g,c,v)=>{if(!p)return Te(t,g||401,c,v);this.completeUpgrade(f,i,u,n,t,r,o)});return}if(!this.options.verifyClient(y))return Te(t,401)}this.completeUpgrade(f,i,u,n,t,r,o)}completeUpgrade(n,t,r,o,i,s,a){if(!i.readable||!i.writable)return i.destroy();if(i[gi])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>Kt)return Te(i,503);let u=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${li("sha1").update(t+mi).digest("base64")}`],l=new this.options.WebSocket(null,void 0,this.options);if(r.size){let f=this.options.handleProtocols?this.options.handleProtocols(r,o):r.values().next().value;f&&(u.push(`Sec-WebSocket-Protocol: ${f}`),l._protocol=f)}if(n[Y.extensionName]){let f=n[Y.extensionName].params,y=Ht.format({[Y.extensionName]:[f]});u.push(`Sec-WebSocket-Extensions: ${y}`),l._extensions=n}this.emit("headers",u,o),i.write(u.concat(`\r
|
|
3
|
+
var yo=Object.create;var lt=Object.defineProperty;var _o=Object.getOwnPropertyDescriptor;var So=Object.getOwnPropertyNames;var bo=Object.getPrototypeOf,vo=Object.prototype.hasOwnProperty;var M=(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 D=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var xo=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of So(n))!vo.call(e,o)&&o!==t&<(e,o,{get:()=>n[o],enumerable:!(r=_o(n,o))||r.enumerable});return e};var ke=(e,n,t)=>(t=e!=null?yo(bo(e)):{},xo(n||!e||!e.__esModule?lt(t,"default",{value:e,enumerable:!0}):t,e));var V=D((Yd,mt)=>{"use strict";var pt=["nodebuffer","arraybuffer","fragments"],ft=typeof Blob<"u";ft&&pt.push("blob");mt.exports={BINARY_TYPES:pt,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:ft,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var Te=D((Xd,ze)=>{"use strict";var{EMPTY_BUFFER:wo}=V(),bn=Buffer[Symbol.species];function ko(e,n){if(e.length===0)return wo;if(e.length===1)return e[0];let t=Buffer.allocUnsafe(n),r=0;for(let o=0;o<e.length;o++){let i=e[o];t.set(i,r),r+=i.length}return r<n?new bn(t.buffer,t.byteOffset,r):t}function ht(e,n,t,r,o){for(let i=0;i<o;i++)t[r+i]=e[i]^n[i&3]}function gt(e,n){for(let t=0;t<e.length;t++)e[t]^=n[t&3]}function To(e){return e.length===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.length)}function vn(e){if(vn.readOnly=!0,Buffer.isBuffer(e))return e;let n;return e instanceof ArrayBuffer?n=new bn(e):ArrayBuffer.isView(e)?n=new bn(e.buffer,e.byteOffset,e.byteLength):(n=Buffer.from(e),vn.readOnly=!1),n}ze.exports={concat:ko,mask:ht,toArrayBuffer:To,toBuffer:vn,unmask:gt};if(!process.env.WS_NO_BUFFER_UTIL)try{let e=M("bufferutil");ze.exports.mask=function(n,t,r,o,i){i<48?ht(n,t,r,o,i):e.mask(n,t,r,o,i)},ze.exports.unmask=function(n,t){n.length<32?gt(n,t):e.unmask(n,t)}}catch{}});var St=D((eu,_t)=>{"use strict";var yt=Symbol("kDone"),xn=Symbol("kRun"),wn=class{constructor(n){this[yt]=()=>{this.pending--,this[xn]()},this.concurrency=n||1/0,this.jobs=[],this.pending=0}add(n){this.jobs.push(n),this[xn]()}[xn](){if(this.pending!==this.concurrency&&this.jobs.length){let n=this.jobs.shift();this.pending++,n(this[yt])}}};_t.exports=wn});var Re=D((nu,wt)=>{"use strict";var Ce=M("zlib"),bt=Te(),Co=St(),{kStatusCode:vt}=V(),Ro=Buffer[Symbol.species],Io=Buffer.from([0,0,255,255]),We=Symbol("permessage-deflate"),H=Symbol("total-length"),fe=Symbol("callback"),X=Symbol("buffers"),me=Symbol("error"),Be,kn=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,!Be){let o=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;Be=new Co(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[fe];this._deflate.close(),this._deflate=null,n&&n(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(n){let t=this._options,r=n.find(o=>!(t.serverNoContextTakeover===!1&&o.server_no_context_takeover||o.server_max_window_bits&&(t.serverMaxWindowBits===!1||typeof t.serverMaxWindowBits=="number"&&t.serverMaxWindowBits>o.server_max_window_bits)||typeof t.clientMaxWindowBits=="number"&&!o.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(r.server_no_context_takeover=!0),t.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof t.serverMaxWindowBits=="number"&&(r.server_max_window_bits=t.serverMaxWindowBits),typeof t.clientMaxWindowBits=="number"?r.client_max_window_bits=t.clientMaxWindowBits:(r.client_max_window_bits===!0||t.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(n){let t=n[0];if(this._options.clientNoContextTakeover===!1&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!t.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(t.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return t}normalizeParams(n){return n.forEach(t=>{Object.keys(t).forEach(r=>{let o=t[r];if(o.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(o=o[0],r==="client_max_window_bits"){if(o!==!0){let i=+o;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${r}": ${o}`);o=i}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${o}`)}else if(r==="server_max_window_bits"){let i=+o;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${r}": ${o}`);o=i}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(o!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${o}`)}else throw new Error(`Unknown parameter "${r}"`);t[r]=o})}),n}decompress(n,t,r){Be.add(o=>{this._decompress(n,t,(i,s)=>{o(),r(i,s)})})}compress(n,t,r){Be.add(o=>{this._compress(n,t,(i,s)=>{o(),r(i,s)})})}_decompress(n,t,r){let o=this._isServer?"client":"server";if(!this._inflate){let i=`${o}_max_window_bits`,s=typeof this.params[i]!="number"?Ce.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=Ce.createInflateRaw({...this._options.zlibInflateOptions,windowBits:s}),this._inflate[We]=this,this._inflate[H]=0,this._inflate[X]=[],this._inflate.on("error",Eo),this._inflate.on("data",xt)}this._inflate[fe]=r,this._inflate.write(n),t&&this._inflate.write(Io),this._inflate.flush(()=>{let i=this._inflate[me];if(i){this._inflate.close(),this._inflate=null,r(i);return}let s=bt.concat(this._inflate[X],this._inflate[H]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[H]=0,this._inflate[X]=[],t&&this.params[`${o}_no_context_takeover`]&&this._inflate.reset()),r(null,s)})}_compress(n,t,r){let o=this._isServer?"server":"client";if(!this._deflate){let i=`${o}_max_window_bits`,s=typeof this.params[i]!="number"?Ce.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=Ce.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:s}),this._deflate[H]=0,this._deflate[X]=[],this._deflate.on("data",Po)}this._deflate[fe]=r,this._deflate.write(n),this._deflate.flush(Ce.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=bt.concat(this._deflate[X],this._deflate[H]);t&&(i=new Ro(i.buffer,i.byteOffset,i.length-4)),this._deflate[fe]=null,this._deflate[H]=0,this._deflate[X]=[],t&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),r(null,i)})}};wt.exports=kn;function Po(e){this[X].push(e),this[H]+=e.length}function xt(e){if(this[H]+=e.length,this[We]._maxPayload<1||this[H]<=this[We]._maxPayload){this[X].push(e);return}this[me]=new RangeError("Max payload size exceeded"),this[me].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[me][vt]=1009,this.removeListener("data",xt),this.reset()}function Eo(e){if(this[We]._inflate=null,this[me]){this[fe](this[me]);return}e[vt]=1007,this[fe](e)}});var he=D((tu,Ge)=>{"use strict";var{isUtf8:kt}=M("buffer"),{hasBlob:Mo}=V(),Ao=[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 qo(e){return e>=1e3&&e<=1014&&e!==1004&&e!==1005&&e!==1006||e>=3e3&&e<=4999}function Tn(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 Oo(e){return Mo&&typeof e=="object"&&typeof e.arrayBuffer=="function"&&typeof e.type=="string"&&typeof e.stream=="function"&&(e[Symbol.toStringTag]==="Blob"||e[Symbol.toStringTag]==="File")}Ge.exports={isBlob:Oo,isValidStatusCode:qo,isValidUTF8:Tn,tokenChars:Ao};if(kt)Ge.exports.isValidUTF8=function(e){return e.length<24?Tn(e):kt(e)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let e=M("utf-8-validate");Ge.exports.isValidUTF8=function(n){return n.length<32?Tn(n):e(n)}}catch{}});var En=D((ru,Mt)=>{"use strict";var{Writable:Fo}=M("stream"),Tt=Re(),{BINARY_TYPES:jo,EMPTY_BUFFER:Ct,kStatusCode:Lo,kWebSocket:Do}=V(),{concat:Cn,toArrayBuffer:No,unmask:$o}=Te(),{isValidStatusCode:Jo,isValidUTF8:Rt}=he(),Ve=Buffer[Symbol.species],J=0,It=1,Pt=2,Et=3,Rn=4,In=5,He=6,Pn=class extends Fo{constructor(n={}){super(),this._allowSynchronousEvents=n.allowSynchronousEvents!==void 0?n.allowSynchronousEvents:!0,this._binaryType=n.binaryType||jo[0],this._extensions=n.extensions||{},this._isServer=!!n.isServer,this._maxPayload=n.maxPayload|0,this._skipUTF8Validation=!!n.skipUTF8Validation,this[Do]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=J}_write(n,t,r){if(this._opcode===8&&this._state==J)return r();this._bufferedBytes+=n.length,this._buffers.push(n),this.startLoop(r)}consume(n){if(this._bufferedBytes-=n,n===this._buffers[0].length)return this._buffers.shift();if(n<this._buffers[0].length){let r=this._buffers[0];return this._buffers[0]=new Ve(r.buffer,r.byteOffset+n,r.length-n),new Ve(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 Ve(r.buffer,r.byteOffset+n,r.length-n)),n-=r.length}while(n>0);return t}startLoop(n){this._loop=!0;do switch(this._state){case J:this.getInfo(n);break;case It:this.getPayloadLength16(n);break;case Pt:this.getPayloadLength64(n);break;case Et:this.getMask();break;case Rn:this.getData(n);break;case In:case He: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[Tt.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=It:this._payloadLength===127?this._state=Pt: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=Et:this._state=Rn}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Rn}getData(n){let t=Ct;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&&$o(t,this._mask)}if(this._opcode>7){this.controlMessage(t,n);return}if(this._compressed){this._state=In,this.decompress(t,n);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(n)}decompress(n,t){this._extensions[Tt.extensionName].decompress(n,this._fin,(o,i)=>{if(o)return t(o);if(i.length){if(this._messageLength+=i.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let s=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");t(s);return}this._fragments.push(i)}this.dataMessage(t),this._state===J&&this.startLoop(t)})}dataMessage(n){if(!this._fin){this._state=J;return}let t=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let o;this._binaryType==="nodebuffer"?o=Cn(r,t):this._binaryType==="arraybuffer"?o=No(Cn(r,t)):this._binaryType==="blob"?o=new Blob(r):o=r,this._allowSynchronousEvents?(this.emit("message",o,!0),this._state=J):(this._state=He,setImmediate(()=>{this.emit("message",o,!0),this._state=J,this.startLoop(n)}))}else{let o=Cn(r,t);if(!this._skipUTF8Validation&&!Rt(o)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");n(i);return}this._state===In||this._allowSynchronousEvents?(this.emit("message",o,!1),this._state=J):(this._state=He,setImmediate(()=>{this.emit("message",o,!1),this._state=J,this.startLoop(n)}))}}controlMessage(n,t){if(this._opcode===8){if(n.length===0)this._loop=!1,this.emit("conclude",1005,Ct),this.end();else{let r=n.readUInt16BE(0);if(!Jo(r)){let i=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");t(i);return}let o=new Ve(n.buffer,n.byteOffset+2,n.length-2);if(!this._skipUTF8Validation&&!Rt(o)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");t(i);return}this._loop=!1,this.emit("conclude",r,o),this.end()}this._state=J;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",n),this._state=J):(this._state=He,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",n),this._state=J,this.startLoop(t)}))}createError(n,t,r,o,i){this._loop=!1,this._errored=!0;let s=new n(r?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(s,this.createError),s.code=i,s[Lo]=o,s}};Mt.exports=Pn});var qn=D((iu,Ot)=>{"use strict";var{Duplex:ou}=M("stream"),{randomFillSync:Uo}=M("crypto"),At=Re(),{EMPTY_BUFFER:Ko,kWebSocket:zo,NOOP:Bo}=V(),{isBlob:ge,isValidStatusCode:Wo}=he(),{mask:qt,toBuffer:ne}=Te(),U=Symbol("kByteLength"),Go=Buffer.alloc(4),Qe=8*1024,te,ye=Qe,K=0,Vo=1,Ho=2,Mn=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=K,this.onerror=Bo,this[zo]=void 0}static frame(n,t){let r,o=!1,i=2,s=!1;t.mask&&(r=t.maskBuffer||Go,t.generateMask?t.generateMask(r):(ye===Qe&&(te===void 0&&(te=Buffer.alloc(Qe)),Uo(te,0,Qe),ye=0),r[0]=te[ye++],r[1]=te[ye++],r[2]=te[ye++],r[3]=te[ye++]),s=(r[0]|r[1]|r[2]|r[3])===0,i=6);let a;typeof n=="string"?(!t.mask||s)&&t[U]!==void 0?a=t[U]:(n=Buffer.from(n),a=n.length):(a=n.length,o=t.mask&&t.readOnly&&!s);let d=a;a>=65536?(i+=8,d=127):a>125&&(i+=2,d=126);let u=Buffer.allocUnsafe(o?a+i:i);return u[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(u[0]|=64),u[1]=d,d===126?u.writeUInt16BE(a,2):d===127&&(u[2]=u[3]=0,u.writeUIntBE(a,4,6)),t.mask?(u[1]|=128,u[i-4]=r[0],u[i-3]=r[1],u[i-2]=r[2],u[i-1]=r[3],s?[u,n]:o?(qt(n,r,u,i,a),[u]):(qt(n,r,n,0,a),[u,n])):[u,n]}close(n,t,r,o){let i;if(n===void 0)i=Ko;else{if(typeof n!="number"||!Wo(n))throw new TypeError("First argument must be a valid error code number");if(t===void 0||!t.length)i=Buffer.allocUnsafe(2),i.writeUInt16BE(n,0);else{let a=Buffer.byteLength(t);if(a>123)throw new RangeError("The message must not be greater than 123 bytes");i=Buffer.allocUnsafe(2+a),i.writeUInt16BE(n,0),typeof t=="string"?i.write(t,2):i.set(t,2)}}let s={[U]:i.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==K?this.enqueue([this.dispatch,i,!1,s,o]):this.sendFrame(e.frame(i,s),o)}ping(n,t,r){let o,i;if(typeof n=="string"?(o=Buffer.byteLength(n),i=!1):ge(n)?(o=n.size,i=!1):(n=ne(n),o=n.length,i=ne.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let s={[U]:o,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};ge(n)?this._state!==K?this.enqueue([this.getBlobData,n,!1,s,r]):this.getBlobData(n,!1,s,r):this._state!==K?this.enqueue([this.dispatch,n,!1,s,r]):this.sendFrame(e.frame(n,s),r)}pong(n,t,r){let o,i;if(typeof n=="string"?(o=Buffer.byteLength(n),i=!1):ge(n)?(o=n.size,i=!1):(n=ne(n),o=n.length,i=ne.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let s={[U]:o,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};ge(n)?this._state!==K?this.enqueue([this.getBlobData,n,!1,s,r]):this.getBlobData(n,!1,s,r):this._state!==K?this.enqueue([this.dispatch,n,!1,s,r]):this.sendFrame(e.frame(n,s),r)}send(n,t,r){let o=this._extensions[At.extensionName],i=t.binary?2:1,s=t.compress,a,d;typeof n=="string"?(a=Buffer.byteLength(n),d=!1):ge(n)?(a=n.size,d=!1):(n=ne(n),a=n.length,d=ne.readOnly),this._firstFragment?(this._firstFragment=!1,s&&o&&o.params[o._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(s=a>=o._threshold),this._compress=s):(s=!1,i=0),t.fin&&(this._firstFragment=!0);let u={[U]:a,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:d,rsv1:s};ge(n)?this._state!==K?this.enqueue([this.getBlobData,n,this._compress,u,r]):this.getBlobData(n,this._compress,u,r):this._state!==K?this.enqueue([this.dispatch,n,this._compress,u,r]):this.dispatch(n,this._compress,u,r)}getBlobData(n,t,r,o){this._bufferedBytes+=r[U],this._state=Ho,n.arrayBuffer().then(i=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(An,this,a,o);return}this._bufferedBytes-=r[U];let s=ne(i);t?this.dispatch(s,t,r,o):(this._state=K,this.sendFrame(e.frame(s,r),o),this.dequeue())}).catch(i=>{process.nextTick(Qo,this,i,o)})}dispatch(n,t,r,o){if(!t){this.sendFrame(e.frame(n,r),o);return}let i=this._extensions[At.extensionName];this._bufferedBytes+=r[U],this._state=Vo,i.compress(n,r.fin,(s,a)=>{if(this._socket.destroyed){let d=new Error("The socket was closed while data was being compressed");An(this,d,o);return}this._bufferedBytes-=r[U],this._state=K,r.readOnly=!1,this.sendFrame(e.frame(a,r),o),this.dequeue()})}dequeue(){for(;this._state===K&&this._queue.length;){let n=this._queue.shift();this._bufferedBytes-=n[3][U],Reflect.apply(n[0],this,n.slice(1))}}enqueue(n){this._bufferedBytes+=n[3][U],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)}};Ot.exports=Mn;function An(e,n,t){typeof t=="function"&&t(n);for(let r=0;r<e._queue.length;r++){let o=e._queue[r],i=o[o.length-1];typeof i=="function"&&i(n)}}function Qo(e,n,t){An(e,n,t),e.onerror(n)}});var Kt=D((su,Ut)=>{"use strict";var{kForOnEventAttribute:Ie,kListener:On}=V(),Ft=Symbol("kCode"),jt=Symbol("kData"),Lt=Symbol("kError"),Dt=Symbol("kMessage"),Nt=Symbol("kReason"),_e=Symbol("kTarget"),$t=Symbol("kType"),Jt=Symbol("kWasClean"),Q=class{constructor(n){this[_e]=null,this[$t]=n}get target(){return this[_e]}get type(){return this[$t]}};Object.defineProperty(Q.prototype,"target",{enumerable:!0});Object.defineProperty(Q.prototype,"type",{enumerable:!0});var re=class extends Q{constructor(n,t={}){super(n),this[Ft]=t.code===void 0?0:t.code,this[Nt]=t.reason===void 0?"":t.reason,this[Jt]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[Ft]}get reason(){return this[Nt]}get wasClean(){return this[Jt]}};Object.defineProperty(re.prototype,"code",{enumerable:!0});Object.defineProperty(re.prototype,"reason",{enumerable:!0});Object.defineProperty(re.prototype,"wasClean",{enumerable:!0});var Se=class extends Q{constructor(n,t={}){super(n),this[Lt]=t.error===void 0?null:t.error,this[Dt]=t.message===void 0?"":t.message}get error(){return this[Lt]}get message(){return this[Dt]}};Object.defineProperty(Se.prototype,"error",{enumerable:!0});Object.defineProperty(Se.prototype,"message",{enumerable:!0});var Pe=class extends Q{constructor(n,t={}){super(n),this[jt]=t.data===void 0?null:t.data}get data(){return this[jt]}};Object.defineProperty(Pe.prototype,"data",{enumerable:!0});var Zo={addEventListener(e,n,t={}){for(let o of this.listeners(e))if(!t[Ie]&&o[On]===n&&!o[Ie])return;let r;if(e==="message")r=function(i,s){let a=new Pe("message",{data:s?i:i.toString()});a[_e]=this,Ze(n,this,a)};else if(e==="close")r=function(i,s){let a=new re("close",{code:i,reason:s.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[_e]=this,Ze(n,this,a)};else if(e==="error")r=function(i){let s=new Se("error",{error:i,message:i.message});s[_e]=this,Ze(n,this,s)};else if(e==="open")r=function(){let i=new Q("open");i[_e]=this,Ze(n,this,i)};else return;r[Ie]=!!t[Ie],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[Ie]){this.removeListener(e,t);break}}};Ut.exports={CloseEvent:re,ErrorEvent:Se,Event:Q,EventTarget:Zo,MessageEvent:Pe};function Ze(e,n,t){typeof e=="object"&&e.handleEvent?e.handleEvent.call(e,t):e.call(n,t)}});var Fn=D((au,zt)=>{"use strict";var{tokenChars:Ee}=he();function B(e,n,t){e[n]===void 0?e[n]=[t]:e[n].push(t)}function Yo(e){let n=Object.create(null),t=Object.create(null),r=!1,o=!1,i=!1,s,a,d=-1,u=-1,l=-1,f=0;for(;f<e.length;f++)if(u=e.charCodeAt(f),s===void 0)if(l===-1&&Ee[u]===1)d===-1&&(d=f);else if(f!==0&&(u===32||u===9))l===-1&&d!==-1&&(l=f);else if(u===59||u===44){if(d===-1)throw new SyntaxError(`Unexpected character at index ${f}`);l===-1&&(l=f);let m=e.slice(d,l);u===44?(B(n,m,t),t=Object.create(null)):s=m,d=l=-1}else throw new SyntaxError(`Unexpected character at index ${f}`);else if(a===void 0)if(l===-1&&Ee[u]===1)d===-1&&(d=f);else if(u===32||u===9)l===-1&&d!==-1&&(l=f);else if(u===59||u===44){if(d===-1)throw new SyntaxError(`Unexpected character at index ${f}`);l===-1&&(l=f),B(t,e.slice(d,l),!0),u===44&&(B(n,s,t),t=Object.create(null),s=void 0),d=l=-1}else if(u===61&&d!==-1&&l===-1)a=e.slice(d,f),d=l=-1;else throw new SyntaxError(`Unexpected character at index ${f}`);else if(o){if(Ee[u]!==1)throw new SyntaxError(`Unexpected character at index ${f}`);d===-1?d=f:r||(r=!0),o=!1}else if(i)if(Ee[u]===1)d===-1&&(d=f);else if(u===34&&d!==-1)i=!1,l=f;else if(u===92)o=!0;else throw new SyntaxError(`Unexpected character at index ${f}`);else if(u===34&&e.charCodeAt(f-1)===61)i=!0;else if(l===-1&&Ee[u]===1)d===-1&&(d=f);else if(d!==-1&&(u===32||u===9))l===-1&&(l=f);else if(u===59||u===44){if(d===-1)throw new SyntaxError(`Unexpected character at index ${f}`);l===-1&&(l=f);let m=e.slice(d,l);r&&(m=m.replace(/\\/g,""),r=!1),B(t,a,m),u===44&&(B(n,s,t),t=Object.create(null),s=void 0),a=void 0,d=l=-1}else throw new SyntaxError(`Unexpected character at index ${f}`);if(d===-1||i||u===32||u===9)throw new SyntaxError("Unexpected end of input");l===-1&&(l=f);let _=e.slice(d,l);return s===void 0?B(n,_,t):(a===void 0?B(t,_,!0):r?B(t,a,_.replace(/\\/g,"")):B(t,a,_),B(n,s,t)),n}function Xo(e){return Object.keys(e).map(n=>{let t=e[n];return Array.isArray(t)||(t=[t]),t.map(r=>[n].concat(Object.keys(r).map(o=>{let i=r[o];return Array.isArray(i)||(i=[i]),i.map(s=>s===!0?o:`${o}=${s}`).join("; ")})).join("; ")).join(", ")}).join(", ")}zt.exports={format:Xo,parse:Yo}});var nn=D((cu,tr)=>{"use strict";var ei=M("events"),ni=M("https"),ti=M("http"),Gt=M("net"),ri=M("tls"),{randomBytes:oi,createHash:ii}=M("crypto"),{Duplex:du,Readable:uu}=M("stream"),{URL:jn}=M("url"),ee=Re(),si=En(),ai=qn(),{isBlob:di}=he(),{BINARY_TYPES:Bt,EMPTY_BUFFER:Ye,GUID:ui,kForOnEventAttribute:Ln,kListener:ci,kStatusCode:li,kWebSocket:q,NOOP:Vt}=V(),{EventTarget:{addEventListener:pi,removeEventListener:fi}}=Kt(),{format:mi,parse:hi}=Fn(),{toBuffer:gi}=Te(),yi=30*1e3,Ht=Symbol("kAborted"),Dn=[8,13],Z=["CONNECTING","OPEN","CLOSING","CLOSED"],_i=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,R=class e extends ei{constructor(n,t,r){super(),this._binaryType=Bt[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Ye,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]),Qt(this,n,t,r)):(this._autoPong=r.autoPong,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(n){Bt.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 si({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),i=new ai(n,this._extensions,r.generateMask);this._receiver=o,this._sender=i,this._socket=n,o[q]=this,i[q]=this,n[q]=this,o.on("conclude",vi),o.on("drain",xi),o.on("error",wi),o.on("message",ki),o.on("ping",Ti),o.on("pong",Ci),i.onerror=Ri,n.setTimeout&&n.setTimeout(0),n.setNoDelay&&n.setNoDelay(),t.length>0&&n.unshift(t),n.on("close",Xt),n.on("data",en),n.on("end",er),n.on("error",nr),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[ee.extensionName]&&this._extensions[ee.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=e.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(n,t){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){N(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===e.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=e.CLOSING,this._sender.close(n,t,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Yt(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){Nn(this,n,r);return}t===void 0&&(t=!this._isServer),this._sender.ping(n||Ye,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){Nn(this,n,r);return}t===void 0&&(t=!this._isServer),this._sender.pong(n||Ye,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){Nn(this,n,r);return}let o={binary:typeof n!="string",mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[ee.extensionName]||(o.compress=!1),this._sender.send(n||Ye,o,r)}terminate(){if(this.readyState!==e.CLOSED){if(this.readyState===e.CONNECTING){N(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=e.CLOSING,this._socket.destroy())}}};Object.defineProperty(R,"CONNECTING",{enumerable:!0,value:Z.indexOf("CONNECTING")});Object.defineProperty(R.prototype,"CONNECTING",{enumerable:!0,value:Z.indexOf("CONNECTING")});Object.defineProperty(R,"OPEN",{enumerable:!0,value:Z.indexOf("OPEN")});Object.defineProperty(R.prototype,"OPEN",{enumerable:!0,value:Z.indexOf("OPEN")});Object.defineProperty(R,"CLOSING",{enumerable:!0,value:Z.indexOf("CLOSING")});Object.defineProperty(R.prototype,"CLOSING",{enumerable:!0,value:Z.indexOf("CLOSING")});Object.defineProperty(R,"CLOSED",{enumerable:!0,value:Z.indexOf("CLOSED")});Object.defineProperty(R.prototype,"CLOSED",{enumerable:!0,value:Z.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(e=>{Object.defineProperty(R.prototype,e,{enumerable:!0})});["open","error","close","message"].forEach(e=>{Object.defineProperty(R.prototype,`on${e}`,{enumerable:!0,get(){for(let n of this.listeners(e))if(n[Ln])return n[ci];return null},set(n){for(let t of this.listeners(e))if(t[Ln]){this.removeListener(e,t);break}typeof n=="function"&&this.addEventListener(e,n,{[Ln]:!0})}})});R.prototype.addEventListener=pi;R.prototype.removeEventListener=fi;tr.exports=R;function Qt(e,n,t,r){let o={allowSynchronousEvents:!0,autoPong:!0,protocolVersion:Dn[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(e._autoPong=o.autoPong,!Dn.includes(o.protocolVersion))throw new RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${Dn.join(", ")})`);let i;if(n instanceof jn)i=n;else try{i=new jn(n)}catch{throw new SyntaxError(`Invalid URL: ${n}`)}i.protocol==="http:"?i.protocol="ws:":i.protocol==="https:"&&(i.protocol="wss:"),e._url=i.href;let s=i.protocol==="wss:",a=i.protocol==="ws+unix:",d;if(i.protocol!=="ws:"&&!s&&!a?d=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!i.pathname?d="The URL's pathname is empty":i.hash&&(d="The URL contains a fragment identifier"),d){let c=new SyntaxError(d);if(e._redirects===0)throw c;Xe(e,c);return}let u=s?443:80,l=oi(16).toString("base64"),f=s?ni.request:ti.request,_=new Set,m;if(o.createConnection=o.createConnection||(s?bi:Si),o.defaultPort=o.defaultPort||u,o.port=i.port||u,o.host=i.hostname.startsWith("[")?i.hostname.slice(1,-1):i.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":l,Connection:"Upgrade",Upgrade:"websocket"},o.path=i.pathname+i.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(m=new ee(o.perMessageDeflate!==!0?o.perMessageDeflate:{},!1,o.maxPayload),o.headers["Sec-WebSocket-Extensions"]=mi({[ee.extensionName]:m.offer()})),t.length){for(let c of t){if(typeof c!="string"||!_i.test(c)||_.has(c))throw new SyntaxError("An invalid or duplicated subprotocol was specified");_.add(c)}o.headers["Sec-WebSocket-Protocol"]=t.join(",")}if(o.origin&&(o.protocolVersion<13?o.headers["Sec-WebSocket-Origin"]=o.origin:o.headers.Origin=o.origin),(i.username||i.password)&&(o.auth=`${i.username}:${i.password}`),a){let c=o.path.split(":");o.socketPath=c[0],o.path=c[1]}let g;if(o.followRedirects){if(e._redirects===0){e._originalIpc=a,e._originalSecure=s,e._originalHostOrSocketPath=a?o.socketPath:i.host;let c=r&&r.headers;if(r={...r,headers:{}},c)for(let[x,E]of Object.entries(c))r.headers[x.toLowerCase()]=E}else if(e.listenerCount("redirect")===0){let c=a?e._originalIpc?o.socketPath===e._originalHostOrSocketPath:!1:e._originalIpc?!1:i.host===e._originalHostOrSocketPath;(!c||e._originalSecure&&!s)&&(delete o.headers.authorization,delete o.headers.cookie,c||delete o.headers.host,o.auth=void 0)}o.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(o.auth).toString("base64")),g=e._req=f(o),e._redirects&&e.emit("redirect",e.url,g)}else g=e._req=f(o);o.timeout&&g.on("timeout",()=>{N(e,g,"Opening handshake has timed out")}),g.on("error",c=>{g===null||g[Ht]||(g=e._req=null,Xe(e,c))}),g.on("response",c=>{let x=c.headers.location,E=c.statusCode;if(x&&o.followRedirects&&E>=300&&E<400){if(++e._redirects>o.maxRedirects){N(e,g,"Maximum redirects exceeded");return}g.abort();let F;try{F=new jn(x,n)}catch{let b=new SyntaxError(`Invalid URL: ${x}`);Xe(e,b);return}Qt(e,F,t,r)}else e.emit("unexpected-response",g,c)||N(e,g,`Unexpected server response: ${c.statusCode}`)}),g.on("upgrade",(c,x,E)=>{if(e.emit("upgrade",c),e.readyState!==R.CONNECTING)return;g=e._req=null;let F=c.headers.upgrade;if(F===void 0||F.toLowerCase()!=="websocket"){N(e,x,"Invalid Upgrade header");return}let $=ii("sha1").update(l+ui).digest("base64");if(c.headers["sec-websocket-accept"]!==$){N(e,x,"Invalid Sec-WebSocket-Accept header");return}let b=c.headers["sec-websocket-protocol"],h;if(b!==void 0?_.size?_.has(b)||(h="Server sent an invalid subprotocol"):h="Server sent a subprotocol but none was requested":_.size&&(h="Server sent no subprotocol"),h){N(e,x,h);return}b&&(e._protocol=b);let v=c.headers["sec-websocket-extensions"];if(v!==void 0){if(!m){N(e,x,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let T;try{T=hi(v)}catch{N(e,x,"Invalid Sec-WebSocket-Extensions header");return}let w=Object.keys(T);if(w.length!==1||w[0]!==ee.extensionName){N(e,x,"Server indicated an extension that was not requested");return}try{m.accept(T[ee.extensionName])}catch{N(e,x,"Invalid Sec-WebSocket-Extensions header");return}e._extensions[ee.extensionName]=m}e.setSocket(x,E,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(g,e):g.end()}function Xe(e,n){e._readyState=R.CLOSING,e._errorEmitted=!0,e.emit("error",n),e.emitClose()}function Si(e){return e.path=e.socketPath,Gt.connect(e)}function bi(e){return e.path=void 0,!e.servername&&e.servername!==""&&(e.servername=Gt.isIP(e.host)?"":e.host),ri.connect(e)}function N(e,n,t){e._readyState=R.CLOSING;let r=new Error(t);Error.captureStackTrace(r,N),n.setHeader?(n[Ht]=!0,n.abort(),n.socket&&!n.socket.destroyed&&n.socket.destroy(),process.nextTick(Xe,e,r)):(n.destroy(r),n.once("error",e.emit.bind(e,"error")),n.once("close",e.emitClose.bind(e)))}function Nn(e,n,t){if(n){let r=di(n)?n.size:gi(n).length;e._socket?e._sender._bufferedBytes+=r:e._bufferedAmount+=r}if(t){let r=new Error(`WebSocket is not open: readyState ${e.readyState} (${Z[e.readyState]})`);process.nextTick(t,r)}}function vi(e,n){let t=this[q];t._closeFrameReceived=!0,t._closeMessage=n,t._closeCode=e,t._socket[q]!==void 0&&(t._socket.removeListener("data",en),process.nextTick(Zt,t._socket),e===1005?t.close():t.close(e,n))}function xi(){let e=this[q];e.isPaused||e._socket.resume()}function wi(e){let n=this[q];n._socket[q]!==void 0&&(n._socket.removeListener("data",en),process.nextTick(Zt,n._socket),n.close(e[li])),n._errorEmitted||(n._errorEmitted=!0,n.emit("error",e))}function Wt(){this[q].emitClose()}function ki(e,n){this[q].emit("message",e,n)}function Ti(e){let n=this[q];n._autoPong&&n.pong(e,!this._isServer,Vt),n.emit("ping",e)}function Ci(e){this[q].emit("pong",e)}function Zt(e){e.resume()}function Ri(e){let n=this[q];n.readyState!==R.CLOSED&&(n.readyState===R.OPEN&&(n._readyState=R.CLOSING,Yt(n)),this._socket.end(),n._errorEmitted||(n._errorEmitted=!0,n.emit("error",e)))}function Yt(e){e._closeTimer=setTimeout(e._socket.destroy.bind(e._socket),yi)}function Xt(){let e=this[q];this.removeListener("close",Xt),this.removeListener("data",en),this.removeListener("end",er),e._readyState=R.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[q]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",Wt),e._receiver.on("finish",Wt))}function en(e){this[q]._receiver.write(e)||this.pause()}function er(){let e=this[q];e._readyState=R.CLOSING,e._receiver.end(),this.end()}function nr(){let e=this[q];this.removeListener("error",nr),this.on("error",Vt),e&&(e._readyState=R.CLOSING,this.destroy())}});var sr=D((pu,ir)=>{"use strict";var lu=nn(),{Duplex:Ii}=M("stream");function rr(e){e.emit("close")}function Pi(){!this.destroyed&&this._writableState.finished&&this.destroy()}function or(e){this.removeListener("error",or),this.destroy(),this.listenerCount("error")===0&&this.emit("error",e)}function Ei(e,n){let t=!0,r=new Ii({...n,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",function(i,s){let a=!s&&r._readableState.objectMode?i.toString():i;r.push(a)||e.pause()}),e.once("error",function(i){r.destroyed||(t=!1,r.destroy(i))}),e.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(o,i){if(e.readyState===e.CLOSED){i(o),process.nextTick(rr,r);return}let s=!1;e.once("error",function(d){s=!0,i(d)}),e.once("close",function(){s||i(o),process.nextTick(rr,r)}),t&&e.terminate()},r._final=function(o){if(e.readyState===e.CONNECTING){e.once("open",function(){r._final(o)});return}e._socket!==null&&(e._socket._writableState.finished?(o(),r._readableState.endEmitted&&r.destroy()):(e._socket.once("finish",function(){o()}),e.close()))},r._read=function(){e.isPaused&&e.resume()},r._write=function(o,i,s){if(e.readyState===e.CONNECTING){e.once("open",function(){r._write(o,i,s)});return}e.send(o,s)},r.on("end",Pi),r.on("error",or),r}ir.exports=Ei});var dr=D((fu,ar)=>{"use strict";var{tokenChars:Mi}=he();function Ai(e){let n=new Set,t=-1,r=-1,o=0;for(o;o<e.length;o++){let s=e.charCodeAt(o);if(r===-1&&Mi[s]===1)t===-1&&(t=o);else if(o!==0&&(s===32||s===9))r===-1&&t!==-1&&(r=o);else if(s===44){if(t===-1)throw new SyntaxError(`Unexpected character at index ${o}`);r===-1&&(r=o);let a=e.slice(t,r);if(n.has(a))throw new SyntaxError(`The "${a}" subprotocol is duplicated`);n.add(a),t=r=-1}else throw new SyntaxError(`Unexpected character at index ${o}`)}if(t===-1||r!==-1)throw new SyntaxError("Unexpected end of input");let i=e.slice(t,o);if(n.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);return n.add(i),n}ar.exports={parse:Ai}});var hr=D((hu,mr)=>{"use strict";var qi=M("events"),tn=M("http"),{Duplex:mu}=M("stream"),{createHash:Oi}=M("crypto"),ur=Fn(),oe=Re(),Fi=dr(),ji=nn(),{GUID:Li,kWebSocket:Di}=V(),Ni=/^[+/0-9A-Za-z]{22}==$/,cr=0,lr=1,fr=2,$n=class extends qi{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:ji,...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=tn.createServer((r,o)=>{let i=tn.STATUS_CODES[426];o.writeHead(426,{"Content-Length":i.length,"Content-Type":"text/plain"}),o.end(i)}),this._server.listen(n.port,n.host,n.backlog,t)):n.server&&(this._server=n.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=$i(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(o,i,s)=>{this.handleUpgrade(o,i,s,r)}})}n.perMessageDeflate===!0&&(n.perMessageDeflate={}),n.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=n,this._state=cr}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===fr){n&&this.once("close",()=>{n(new Error("The server is not running"))}),process.nextTick(Me,this);return}if(n&&this.once("close",n),this._state!==lr)if(this._state=lr,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(Me,this):process.nextTick(Me,this);else{let t=this._server;this._removeListeners(),this._removeListeners=this._server=null,t.close(()=>{Me(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",pr);let i=n.headers["sec-websocket-key"],s=n.headers.upgrade,a=+n.headers["sec-websocket-version"];if(n.method!=="GET"){ie(this,n,t,405,"Invalid HTTP method");return}if(s===void 0||s.toLowerCase()!=="websocket"){ie(this,n,t,400,"Invalid Upgrade header");return}if(i===void 0||!Ni.test(i)){ie(this,n,t,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){ie(this,n,t,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(n)){Ae(t,400);return}let d=n.headers["sec-websocket-protocol"],u=new Set;if(d!==void 0)try{u=Fi.parse(d)}catch{ie(this,n,t,400,"Invalid Sec-WebSocket-Protocol header");return}let l=n.headers["sec-websocket-extensions"],f={};if(this.options.perMessageDeflate&&l!==void 0){let _=new oe(this.options.perMessageDeflate,!0,this.options.maxPayload);try{let m=ur.parse(l);m[oe.extensionName]&&(_.accept(m[oe.extensionName]),f[oe.extensionName]=_)}catch{ie(this,n,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let _={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(_,(m,g,c,x)=>{if(!m)return Ae(t,g||401,c,x);this.completeUpgrade(f,i,u,n,t,r,o)});return}if(!this.options.verifyClient(_))return Ae(t,401)}this.completeUpgrade(f,i,u,n,t,r,o)}completeUpgrade(n,t,r,o,i,s,a){if(!i.readable||!i.writable)return i.destroy();if(i[Di])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>cr)return Ae(i,503);let u=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Oi("sha1").update(t+Li).digest("base64")}`],l=new this.options.WebSocket(null,void 0,this.options);if(r.size){let f=this.options.handleProtocols?this.options.handleProtocols(r,o):r.values().next().value;f&&(u.push(`Sec-WebSocket-Protocol: ${f}`),l._protocol=f)}if(n[oe.extensionName]){let f=n[oe.extensionName].params,_=ur.format({[oe.extensionName]:[f]});u.push(`Sec-WebSocket-Extensions: ${_}`),l._extensions=n}this.emit("headers",u,o),i.write(u.concat(`\r
|
|
4
4
|
`).join(`\r
|
|
5
|
-
`)),i.removeListener("error",
|
|
5
|
+
`)),i.removeListener("error",pr),l.setSocket(i,s,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(l),l.on("close",()=>{this.clients.delete(l),this._shouldEmitClose&&!this.clients.size&&process.nextTick(Me,this)})),a(l,o)}};mr.exports=$n;function $i(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 Me(e){e._state=fr,e.emit("close")}function pr(){this.destroy()}function Ae(e,n,t,r){t=t||tn.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} ${tn.STATUS_CODES[n]}\r
|
|
6
6
|
`+Object.keys(r).map(o=>`${o}: ${r[o]}`).join(`\r
|
|
7
7
|
`)+`\r
|
|
8
8
|
\r
|
|
9
|
-
`+t)}function ee(e,n,t,r,o,i){if(e.listenerCount("wsClientError")){let s=new Error(o);Error.captureStackTrace(s,ee),e.emit("wsClientError",s,t,n)}else Te(t,r,o,i)}});import{spawn as Ds}from"node:child_process";import{appendFileSync as Fs,rmSync as Jr,writeFileSync as Re,mkdirSync as ye,chmodSync as Mr,readFileSync as zs,readdirSync as qs,statSync as Gs,unlinkSync as Vs}from"node:fs";import{dirname as Lr,join as nn}from"node:path";var _i=be(Vt(),1),xi=be(xn(),1),bi=be(Sn(),1),An=be(We(),1),vi=be(er(),1);function U(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nr(e){let n=[["threadId",e.threadId],["turnId",e.turnId],["itemId",e.itemId],["processId",e.processId],["requestId",e.requestId]].filter(t=>t[1]!==void 0);return Object.fromEntries(n)}function w(e){return e!==void 0&&U(e)?e:void 0}function Ke(e){return Array.isArray(e)?e:void 0}function h(e){return typeof e=="string"&&e.trim()!==""?e.trim():void 0}function me(e){return typeof e=="number"&&Number.isInteger(e)?e:void 0}import{appendFileSync as Pi,openSync as id}from"node:fs";import{homedir as sr}from"node:os";import{dirname as Ti,join as ar,resolve as Oi,sep as Ai}from"node:path";import{mkdirSync as Ii}from"node:fs";var q={_generated:"GENERATED by scripts/naming_dual_emit_codegen.mjs from scripts/naming_canonical_key_map.json (N2.2 dual-emit, D46) - DO NOT EDIT; run: node scripts/naming_dual_emit_codegen.mjs --write",events:[["codex.agent_turn_narration_only_no_reply","harness.agent_turn_narration_only_no_reply"],["codex.cost_cap_402_seen","harness.cost_cap_402_seen"],["codex.edge_blocked_captured","harness.edge_blocked_captured"],["codex.empty_turn_auto_retry_suppressed_cost_cap","harness.empty_turn_auto_retry_suppressed_cost_cap"],["codex.empty_turn_loop_guard_tripped","harness.empty_turn_loop_guard_tripped"],["codex.error_without_http_status_captured","harness.error_without_http_status_captured"],["codex.mid_stream_stall_auto_resume_flagged","harness.mid_stream_stall_auto_resume_flagged"],["codex.mid_stream_stall_fresh_session_resume","harness.mid_stream_stall_fresh_session_resume"],["codex.mid_stream_stall_fresh_session_resume_failed","harness.mid_stream_stall_fresh_session_resume_failed"],["codex.mid_stream_stall_fresh_session_resume_flagged","harness.mid_stream_stall_fresh_session_resume_flagged"],["codex.mid_stream_stall_resume_suppressed_rate_limit","harness.mid_stream_stall_resume_suppressed_rate_limit"],["codex.mid_stream_stall_second_stall_after_resume","harness.mid_stream_stall_second_stall_after_resume"],["codex.pre_first_byte_stall_auto_retry_flagged","harness.pre_first_byte_stall_auto_retry_flagged"],["codex.pre_first_byte_stall_retry_suppressed_cost_cap","harness.pre_first_byte_stall_retry_suppressed_cost_cap"],["codex.provider_outage_flagged_captured","harness.provider_outage_flagged_captured"],["codex.reasoning_loop_breaker_tripped","harness.reasoning_loop_breaker_tripped"],["codex.tool_fatal_captured","harness.tool_fatal_captured"],["codex.turn_completed","job.turn_completed"],["codex.turn_completed_with_protocol_failure","job.turn_completed_with_protocol_failure"],["codex.turn_completed_with_unsupported_tool_call_ignored","job.turn_completed_with_unsupported_tool_call_ignored"],["codex.turn_completed_without_assistant_output","job.turn_completed_without_assistant_output"],["codex.turn_demoted_late_upstream_error","job.turn_demoted_late_upstream_error"],["codex.turn_forward_failed","job.turn_forward_failed"],["codex.upstream_error_captured","harness.upstream_error_captured"],["codex.upstream_rejection_captured","harness.upstream_rejection_captured"],["codex.upstream_turn_error_captured","harness.upstream_turn_error_captured"],["kandan.chat_event","linzumi.chat_event"],["kandan.chat_event_abandoned","linzumi.chat_event_abandoned"],["kandan.chat_event_failed","linzumi.chat_event_failed"],["kandan.chat_event_failure_cleared","linzumi.chat_event_failure_cleared"],["kandan.child_thread_event_failed","linzumi.child_thread_event_failed"],["kandan.child_thread_event_skipped_missing_thread_binding","linzumi.child_thread_event_skipped_missing_thread_binding"],["kandan.child_thread_upsert_failed","linzumi.child_thread_upsert_failed"],["kandan.child_thread_upsert_skipped_missing_thread_binding","linzumi.child_thread_upsert_skipped_missing_thread_binding"],["kandan.claude_code_interrupt_state_push_failed","linzumi.claude_code_interrupt_state_push_failed"],["kandan.claude_code_stop_state_push_failed","linzumi.claude_code_stop_state_push_failed"],["kandan.claude_code_typing_heartbeat_failed","linzumi.claude_code_typing_heartbeat_failed"],["kandan.claude_code_typing_start_wait_timeout","linzumi.claude_code_typing_start_wait_timeout"],["kandan.claude_code_typing_stop_failed","linzumi.claude_code_typing_stop_failed"],["kandan.claude_code_user_input_abort_publish_failed","linzumi.claude_code_user_input_abort_publish_failed"],["kandan.claude_code_user_question_completed_publish_failed","linzumi.claude_code_user_question_completed_publish_failed"],["kandan.codex_command_output_forwarded","linzumi.codex_command_output_forwarded"],["kandan.codex_delta_forwarded","linzumi.codex_delta_forwarded"],["kandan.codex_file_change_forwarded","linzumi.codex_file_change_forwarded"],["kandan.codex_notification_push_failed","linzumi.codex_notification_push_failed"],["kandan.codex_output_forwarded","linzumi.codex_output_forwarded"],["kandan.codex_reasoning_delta_forwarded","linzumi.codex_reasoning_delta_forwarded"],["kandan.codex_web_search_progress_forwarded","linzumi.codex_web_search_progress_forwarded"],["kandan.connection_force_reconnect","linzumi.connection_force_reconnect"],["kandan.connection_force_reconnect_dispatched","linzumi.connection_force_reconnect_dispatched"],["kandan.connection_hard_reset","linzumi.connection_hard_reset"],["kandan.connection_hard_reset_exhausted","linzumi.connection_hard_reset_exhausted"],["kandan.connection_recovered","linzumi.connection_recovered"],["kandan.connection_stale","linzumi.connection_stale"],["kandan.connection_unrecoverable","linzumi.connection_unrecoverable"],["kandan.control","linzumi.control"],["kandan.control_ack_withheld_on_failure","linzumi.control_ack_withheld_on_failure"],["kandan.control_epoch_changed","linzumi.control_epoch_changed"],["kandan.control_handler_threw","linzumi.control_handler_threw"],["kandan.control_ignored","linzumi.control_ignored"],["kandan.control_response_push_failed","linzumi.control_response_push_failed"],["kandan.failed_seq_overflow","linzumi.failed_seq_overflow"],["kandan.forward_port_revoked_push_failed","linzumi.forward_port_revoked_push_failed"],["kandan.forward_response","linzumi.forward_response"],["kandan.forward_response_push_failed","linzumi.forward_response_push_failed"],["kandan.forward_tunnel_error","linzumi.forward_tunnel_error"],["kandan.forward_tunnel_open_failed","linzumi.forward_tunnel_open_failed"],["kandan.heartbeat_push_failed","linzumi.heartbeat_push_failed"],["kandan.local_editor_initial_status_failed","linzumi.local_editor_initial_status_failed"],["kandan.local_editor_status_push_failed","linzumi.local_editor_status_push_failed"],["kandan.message_duplicate_ignored","linzumi.message_duplicate_ignored"],["kandan.message_ignored","linzumi.message_ignored"],["kandan.message_queued","linzumi.message_queued"],["kandan.message_spawn_on_miss","linzumi.message_spawn_on_miss"],["kandan.message_spawn_on_miss_failed","linzumi.message_spawn_on_miss_failed"],["kandan.message_state_refresh_failed","linzumi.message_state_refresh_failed"],["kandan.optional_push_failed","linzumi.optional_push_failed"],["kandan.post_stop_queue_drain_failed","linzumi.post_stop_queue_drain_failed"],["kandan.queue_drain_blocked","linzumi.queue_drain_blocked"],["kandan.queue_drain_dead_worker_fail_publish_failed","linzumi.queue_drain_dead_worker_fail_publish_failed"],["kandan.queue_drain_dead_worker_rebuild","linzumi.queue_drain_dead_worker_rebuild"],["kandan.queue_drain_dead_worker_rebuild_exhausted","linzumi.queue_drain_dead_worker_rebuild_exhausted"],["kandan.queue_drain_dead_worker_rebuild_failed","linzumi.queue_drain_dead_worker_rebuild_failed"],["kandan.reconnect_handling_failed","linzumi.reconnect_handling_failed"],["kandan.reconnect_thread_context_fetch_failed","linzumi.reconnect_thread_context_fetch_failed"],["kandan.reconnect_thread_cwd_failed_state_push_failed","linzumi.reconnect_thread_cwd_failed_state_push_failed"],["kandan.reconnect_thread_failed","linzumi.reconnect_thread_failed"],["kandan.reconnect_thread_processing_state_push_failed","linzumi.reconnect_thread_processing_state_push_failed"],["kandan.reconnect_thread_queue_closed_state_push_failed","linzumi.reconnect_thread_queue_closed_state_push_failed"],["kandan.reconnect_thread_queue_failed_state_push_failed","linzumi.reconnect_thread_queue_failed_state_push_failed"],["kandan.reconnect_thread_queue_state_push_failed","linzumi.reconnect_thread_queue_state_push_failed"],["kandan.reconnect_thread_rehydrate_forced","linzumi.reconnect_thread_rehydrate_forced"],["kandan.reconnect_thread_rehydrated","linzumi.reconnect_thread_rehydrated"],["kandan.reconnect_thread_rehydrated_state_push_failed","linzumi.reconnect_thread_rehydrated_state_push_failed"],["kandan.reconnect_thread_rehydration_failed","linzumi.reconnect_thread_rehydration_failed"],["kandan.reconnect_thread_rehydration_ir_emitted","linzumi.reconnect_thread_rehydration_ir_emitted"],["kandan.reconnect_thread_rehydration_items_failed","linzumi.reconnect_thread_rehydration_items_failed"],["kandan.reconnect_thread_resume_failed","linzumi.reconnect_thread_resume_failed"],["kandan.reconnect_thread_seq_already_applied","linzumi.reconnect_thread_seq_already_applied"],["kandan.reconnect_thread_transcript_fetch_failed","linzumi.reconnect_thread_transcript_fetch_failed"],["kandan.reconnect_thread_unarchive_failed","linzumi.reconnect_thread_unarchive_failed"],["kandan.reconnect_thread_unarchive_resumed","linzumi.reconnect_thread_unarchive_resumed"],["kandan.reconnect_thread_unarchive_started","linzumi.reconnect_thread_unarchive_started"],["kandan.reconnect_thread_unavailable_state_push_failed","linzumi.reconnect_thread_unavailable_state_push_failed"],["kandan.reconnected","linzumi.reconnected"],["kandan.roster_seeded","linzumi.roster_seeded"],["kandan.session_app_server_lost_push_failed","linzumi.session_app_server_lost_push_failed"],["kandan.session_settings_publish_failed","linzumi.session_settings_publish_failed"],["kandan.start_instance_claude_code_attachment_failed_state_push_failed","linzumi.start_instance_claude_code_attachment_failed_state_push_failed"],["kandan.start_instance_codex_app_server_unavailable","linzumi.start_instance_codex_app_server_unavailable"],["kandan.start_instance_cwd_failed_state_push_failed","linzumi.start_instance_cwd_failed_state_push_failed"],["kandan.start_instance_cwd_rejected","linzumi.start_instance_cwd_rejected"],["kandan.start_instance_failed","linzumi.start_instance_failed"],["kandan.start_instance_processing_state_push_failed","linzumi.start_instance_processing_state_push_failed"],["kandan.start_instance_skipped_known_session","linzumi.start_instance_skipped_known_session"],["kandan.start_instance_stale_skipped","linzumi.start_instance_stale_skipped"],["kandan.start_instance_unavailable_state_push_failed","linzumi.start_instance_unavailable_state_push_failed"],["kandan.start_instance_wafer_state_push_failed","linzumi.start_instance_wafer_state_push_failed"],["kandan.start_turn_replay_skipped","linzumi.start_turn_replay_skipped"],["kandan.steer_duplicate_ignored","linzumi.steer_duplicate_ignored"],["kandan.steer_parked_as_own_turn","linzumi.steer_parked_as_own_turn"],["kandan.thread_bind_from_historical_reply_failed","linzumi.thread_bind_from_historical_reply_failed"],["kandan.thread_bound_from_historical_reply","linzumi.thread_bound_from_historical_reply"],["kandan.thread_sessions_reannounce_failed","linzumi.thread_sessions_reannounce_failed"],["kandan.thread_sessions_reannounced","linzumi.thread_sessions_reannounced"],["kandan.tui_input_mirrored","linzumi.tui_input_mirrored"],["kandan.typing_heartbeat_failed","linzumi.typing_heartbeat_failed"],["kandan.typing_stop_after_completion_failed","linzumi.typing_stop_after_completion_failed"]],keys:[["codexThreadId","harness_session_id"],["codex_thread_id","harness_session_id"],["kandanThreadId","thread_id"],["kandan_preview_ticket","linzumi_preview_ticket"],["kandan_thread_id","thread_id"],["linzumiThreadId","thread_id"],["linzumi_thread_id","thread_id"],["local_codex_runner","commander"],["runnerId","commander_id"],["runner_config","commander_config"],["runner_id","commander_id"]],keyPrimaryLegacy:[["commander","local_codex_runner"],["commander_config","runner_config"],["commander_id","runner_id"],["harness_session_id","codex_thread_id"],["linzumi_preview_ticket","kandan_preview_ticket"],["thread_id","kandan_thread_id"]],values:[["engine_boot_reconnect","harness_boot_reconnect"],["engine_for_runner_event_type","harness_for_commander_event_type"],["engine_rejected_steer","harness_rejected_steer"],["engine_unavailable","harness_unavailable"],["join_engine","join_harness"],["kandan-local-codex-runner","linzumi-commander"],["local_codex_runner","commander"],["original_engine","original_harness"],["resume_engine","resume_harness"]],topic:{legacyPrefix:"local_codex_runner:",canonicalPrefix:"commander:"},originator:{legacy:"kandan-local-codex-runner",canonical:"linzumi-commander"}};var wi=new Map(q.events),ki=new Map(q.events.map(([e,n])=>[n,e])),rr=new Map(q.keys),or=new Map(q.keyPrimaryLegacy),Ci=new Map(q.values),Ei=new Map(q.values.map(([e,n])=>[n,e])),ed={eventCanonicalByLegacy:wi,eventLegacyByCanonical:ki,keyCanonicalByLegacy:rr,keyPrimaryLegacyByCanonical:or,valueCanonicalByLegacy:Ci,valueLegacyByCanonical:Ei,originator:q.originator,topic:q.topic};function ir(e){let n=new Set(e);for(let t of e){let r=rr.get(t);r!==void 0&&n.add(r);let o=or.get(t);o!==void 0&&n.add(o)}return n}var tr=new Map;for(let[e,n]of q.keys){let t=tr.get(n)??[];t.push(e),tr.set(n,t)}var ne="<SENSITIVE_DATA>",dr=ir(new Set(["access_token","authorization","code","cookie","kandan_preview_ticket","refresh_token","token"])),Ri=new Set(["--access-token","--api-key","--authorization","--cookie","--oauth-code","--password","--refresh-token","--secret","--token"]);function Mi(e){if(process.env.VITEST===void 0)return;let n=ar(sr(),".linzumi"),t=Oi(e);if(t===n||t.startsWith(`${n}${Ai}`))throw new Error(`test-mode log isolation violated: refusing to open ${e} inside the real ~/.linzumi (point the logger at a temp path; the harness defaults LINZUMI_RUNNER_LOG_FILE / LINZUMI_CLI_AUDIT_LOG for exactly this - see plans/2026-07-10-cli-test-hygiene-spec.md item 2)`)}function ge(e,n,t={}){let r=t.logFile??ji();Mi(r);try{Ii(Ti(r),{recursive:!0}),Pi(r,`${JSON.stringify({ts:new Date().toISOString(),event:e,...t.sessionId===void 0?{}:{sessionId:t.sessionId},...Ni(n)})}
|
|
10
|
-
`,"utf8")}catch{return}}function
|
|
11
|
-
`,"utf8")}function
|
|
12
|
-
`);function vr(){return["-c",'mcp_oauth_credentials_store="file"',"-c",'cli_auth_credentials_store="file"']}var ts=5*6e4;var os=(()=>{let e=process.env.LINZUMI_CODEX_WS_KEEPALIVE_MS;if(e===void 0)return 2e4;let n=Number.parseInt(e,10);return Number.isInteger(n)&&n>0?n:2e4})();function is(e){let n=e;if(typeof n.ping=="function"&&n.readyState===WebSocket.OPEN)try{n.ping()}catch{}}function kr(e,n={}){return["app-server",..._s(n),"--listen",e]}var ss=["-c","features.apps=false"],as=["-c","features.default_mode_request_user_input=true"],ds="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_MS",us="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_SOURCE",cs=5e3,ls=6e5,fs=["flag","env","server_default"];function ps(e){return fs.find(n=>n===e)}function ms(e){let n=e?.trim();if(e===void 0||n===void 0||n==="")return{state:"unset"};if(!/^[0-9]+$/.test(n))return{state:"invalid",raw:e};let t=Number(n);return!Number.isSafeInteger(t)||t<cs||t>ls?{state:"invalid",raw:e}:{state:"applied",timeoutMs:t}}function gs(e=process.env){let n=ms(e[ds]);if(n.state==="unset")return n;let t=ps(e[us]?.trim())??"env";return{...n,source:t}}function ys(e=process.env){let n=gs(e);return n.state==="applied"?n.timeoutMs:void 0}var Cr="openai-linzumi";function Er(){let e=Cr;return["-c",`model_providers.${e}.name="OpenAI"`,"-c",`model_providers.${e}.wire_api="responses"`,"-c",`model_providers.${e}.requires_openai_auth=true`,"-c",`model_providers.${e}.supports_websockets=true`]}function hs(e){let n=Cr;return[...Er(),"-c",`model_providers.${n}.stream_idle_timeout_ms=${e}`,"-c",`model_provider="${n}"`]}function _s(e,n=process.env){let t=ys(n);return[...ss,...e.nativeQuestionBridge==="durable"?as:[],...vr(),...e.model===void 0?[]:["-c",`model=${JSON.stringify(e.model)}`],...e.reasoningEffort===void 0?[]:["-c",`model_reasoning_effort=${JSON.stringify(e.reasoningEffort)}`],...e.fast===!0?["-c",`service_tier=${JSON.stringify("fast")}`]:[],...(e.mcpServers??[]).flatMap(r=>Jn(r,{neverEquivalentGranularApprovalPolicy:e.neverEquivalentGranularApprovalPolicy===!0})),...e.modelProvider===void 0?t===void 0?Er():hs(t):xs(e.modelProvider,t)]}function xs(e,n){return["-c",`model_providers.${e.id}.name=${JSON.stringify(e.name)}`,"-c",`model_providers.${e.id}.base_url=${JSON.stringify(e.baseUrl)}`,"-c",`model_providers.${e.id}.env_key=${JSON.stringify(e.envKey)}`,"-c",`model_providers.${e.id}.wire_api=${JSON.stringify(e.wireApi)}`,...Object.entries(e.httpHeaders??{}).flatMap(([t,r])=>["-c",`model_providers.${e.id}.http_headers.${t}=${JSON.stringify(r)}`]),...Object.entries(e.envHttpHeaders??{}).flatMap(([t,r])=>["-c",`model_providers.${e.id}.env_http_headers.${t}=${JSON.stringify(r)}`]),...n===void 0?[]:["-c",`model_providers.${e.id}.stream_idle_timeout_ms=${n}`],"-c",`model_provider=${JSON.stringify(e.id)}`]}async function Pr(e,n=t=>new An.default(t)){let t=await ks(e,n),r=new Map,o=new Set,i=new Set,s=[],a=new Set,d={nextId:1,closeError:void 0},u=p=>{let g=new Error(p);r.forEach(c=>c.reject(g)),r.clear()},l=setInterval(()=>is(t),os);l.unref?.();let f=p=>{if(clearInterval(l),u(p),d.closeError===void 0){d.closeError=new Error(p);for(let g of a)wr(g,d.closeError);a.clear()}};return t.addEventListener("close",()=>f("codex app-server websocket closed")),t.addEventListener("error",()=>f("codex app-server websocket closed")),t.addEventListener("message",p=>{let g=String(p.data),c=ws(g);if(c===void 0){bs(g);return}if(Ie({direction:"codex_to_commander",captureKind:Ss(c),message:c,rawText:g}),"id"in c&&("result"in c||"error"in c)){let v=r.get(c.id);v!==void 0&&(r.delete(c.id),v.resolve(c));return}if("id"in c&&typeof c.method=="string"){Es(t,c,i);return}if(!("id"in c)&&typeof c.method=="string"){let v=c;o.size===0?s.push(v):o.forEach(T=>Sr(T,v))}}),await Ts(t,r),{request:(p,g)=>{let c=d.nextId;return d.nextId+=1,Tr(t,r,g===void 0?{jsonrpc:"2.0",id:c,method:p}:{jsonrpc:"2.0",id:c,method:p,params:g})},notify:(p,g)=>{let c=g===void 0?{jsonrpc:"2.0",method:p}:{jsonrpc:"2.0",method:p,params:g};Ie({direction:"commander_to_codex",captureKind:"outgoing",message:c,rawText:JSON.stringify(c)}),t.send(JSON.stringify(c))},onNotification:p=>{o.add(p),s.splice(0).forEach(g=>Sr(p,g))},onRequest:p=>{i.add(p)},onClose:p=>{if(d.closeError!==void 0){wr(p,d.closeError);return}a.add(p)},isClosed:()=>d.closeError!==void 0,close:()=>{clearInterval(l),t.close()}}}function Ie(e){jn()&&Nn({provider:"codex-app-server",captureKind:e.captureKind,rawText:e.rawText,rawValue:{message:e.message},captureMetadata:{direction:e.direction,capturedAtMs:Date.now(),capturePid:process.pid,...vs(e.message),...e.extraMetadata??{}}})}function bs(e){jn()&&Nn({provider:"codex-app-server",captureKind:"incoming",rawText:e,captureMetadata:{direction:"codex_to_commander",capturedAtMs:Date.now(),capturePid:process.pid,malformed:!0}})}function vs(e){return!("params"in e)||!U(e.params)?{}:nr(e.params)}function Ss(e){return"id"in e&&("result"in e||"error"in e)?"response":"id"in e&&typeof e.method=="string"?"request":"notification"}function ws(e){let n=String(e);try{let t=JSON.parse(n);if(!U(t))throw new Error("codex app-server sent non-object JSON-RPC message");return t}catch(t){ge("codex.app_server_frame_malformed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t),payload:gr(n,512),payloadChars:n.length});return}}function Sr(e,n){try{e(n)}catch(t){ge("codex.notification_callback_failed",{purpose:"codex.app_server",method:n.method,message:t instanceof Error?t.message:String(t)})}}function wr(e,n){try{e(n)}catch(t){ge("codex.close_callback_failed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t)})}}async function ks(e,n,t=2e3){let r=Date.now()+t,o;for(;Date.now()<=r;){let i=n(e);try{return await Os(i),i}catch(s){o=s instanceof Error?s:new Error(String(s)),Cs(i)}}throw o??new Error("websocket open failed")}function Cs(e){try{e.close()}catch{}}async function Es(e,n,t){let r=o=>Ps(e,o,n.method);try{if(t.size===0){r({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}});return}for(let o of t){let i=await o(n);if(i!==void 0){r({jsonrpc:"2.0",id:n.id,result:i});return}}r({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}})}catch(o){r({jsonrpc:"2.0",id:n.id,error:{code:-32e3,message:o instanceof Error?o.message:String(o)}})}}function Ps(e,n,t){let r=JSON.stringify(n);Ie({direction:"commander_to_codex",captureKind:"response",message:n,rawText:r,extraMetadata:{requestMethod:t}}),e.send(r)}async function Ts(e,n){let t=await Tr(e,n,{jsonrpc:"2.0",id:"initialize",method:"initialize",params:{clientInfo:{name:"kandan-local-codex-runner",version:"0.0.1"},capabilities:{experimentalApi:!0}}});if("error"in t)throw new Error(`codex initialize failed: ${t.error.message}`);let r={jsonrpc:"2.0",method:"initialized"};Ie({direction:"commander_to_codex",captureKind:"outgoing",message:r,rawText:JSON.stringify(r)}),e.send(JSON.stringify(r))}function Tr(e,n,t){return e.readyState!==WebSocket.OPEN?Promise.reject(new Error("codex app-server websocket is not open")):new Promise((r,o)=>{n.set(t.id,{resolve:r,reject:o}),Ie({direction:"commander_to_codex",captureKind:"request",message:t,rawText:JSON.stringify(t)}),e.send(JSON.stringify(t))})}function Os(e){return new Promise((n,t)=>{e.addEventListener("open",()=>n(),{once:!0}),e.addEventListener("error",()=>t(new Error("websocket open failed")),{once:!0})})}var lu=300*1e3;function Qe(e){let n=new URL(e);switch(n.protocol){case"ws:":n.protocol="http:";break;case"wss:":n.protocol="https:";break;case"http:":case"https:":break;default:throw new Error("--api-url must be ws://, wss://, http://, or https://")}return n.pathname="",n.search="",n.hash="",n.toString().replace(/\/$/,"")}function Ln(e){let n=e.fetchImpl??fetch,t=Qe(e.kandanUrl),r=e.authMode==="personal-agent-delegation"?"/api/v2/personal-agent-mcp":"/api/v2/local-runner-mcp",o=e.operatingMode??"text",i=async(s,a,d,u={})=>{let l=new URL(a,t),f={...d,operating_mode:o},y={method:s,headers:{authorization:`Bearer ${e.accessToken}`},...u.signal===void 0?{}:{signal:u.signal}};if(s==="GET")for(let[I,J]of Object.entries(f))J!=null&&l.searchParams.set(I,String(J));else y.headers={...y.headers,"content-type":"application/json"},y.body=JSON.stringify(f);let p=await n(l,y),g=await p.json(),c=U(g)?g:void 0;if(c===void 0)throw new Error(`Linzumi MCP API returned non-object JSON from ${a}`);if(p.ok&&c.ok===!0)return c;let v=typeof c.error=="string"?c.error:`HTTP ${p.status}`,T=typeof c.detail=="string"?c.detail:void 0;throw new Error(`Linzumi MCP API ${a} failed: ${v}${T===void 0?"":` detail=${T}`}`)};return{validateAuth:()=>i("GET",`${r}/validate`,{}),issueOnboardingDiscoveryToken:s=>i("POST",`${r}/onboarding-discovery-token`,s),getMessage:s=>i("GET",`${r}/message`,s),getThread:s=>i("GET",`${r}/thread`,s),getThreadTranscript:s=>i("GET",`${r}/thread-transcript`,s),getChannel:s=>i("GET",`${r}/channel`,s),searchWorkspace:s=>i("GET",`${r}/search`,s),askWorkspace:s=>i("POST",`${r}/ask`,s),aboutMe:s=>i("GET",`${r}/about-me`,s),webSearch:s=>i("GET",`${r}/web-search`,s),fetchUrl:s=>i("GET",`${r}/fetch-url`,s),listUiTargets:s=>i("GET",`${r}/ui-targets`,s),openUi:s=>i("POST",`${r}/open-ui`,s),getCodingJobMetadata:s=>i("GET",`${r}/coding-job-metadata`,s),listProjects:s=>i("GET",`${r}/projects`,s),getProjectTasks:s=>i("GET",`${r}/project-tasks`,s),createProjectTask:s=>i("POST",`${r}/project-tasks/create`,s),updateProjectTask:s=>i("POST",`${r}/project-tasks/update`,s),deleteProjectTask:s=>i("POST",`${r}/project-tasks/delete`,s),addProjectTaskDependency:s=>i("POST",`${r}/project-tasks/add-dependency`,s),removeProjectTaskDependency:s=>i("POST",`${r}/project-tasks/remove-dependency`,s),getCallTranscript:s=>i("GET",`${r}/call-transcript`,s),renameCodingJob:s=>i("POST",`${r}/coding-job-title`,s),upsertCodingJobPlan:(s,a)=>i("POST",`${r}/coding-job-plan`,s,a),replaceCodingJobPlanSteps:s=>i("POST",`${r}/coding-job-plan/steps`,s),updateCodingJobPlanStep:s=>i("POST",`${r}/coding-job-plan/step`,s),linkCodingJobPullRequest:s=>i("POST",`${r}/coding-job-primary-pr`,s),listVaultSecrets:s=>i("GET",`${r}/vault-secrets`,s),noteProjectDirectory:s=>i("POST",`${r}/discovered-project`,s),noteAgentConversation:s=>i("POST",`${r}/discovered-conversation`,s),noteOnboardingDiscoveryStatus:s=>i("POST",`${r}/discovery-status`,s),sendChannelMessage:s=>i("POST",`${r}/channel-message`,s),editMessage:s=>i("POST",`${r}/message/edit`,s),agentReply:s=>i("POST",`${r}/agent-reply`,s),scheduleWake:s=>i("POST",`${r}/scheduled-wakes`,s),cancelWake:s=>i("POST",`${r}/scheduled-wakes/cancel`,s),declineDocumentAction:s=>i("POST",`${r}/agent/decline-document-action`,s),agentTurnProgress:s=>i("POST",`${r}/agent-turn-progress`,s),agentDocumentTool:s=>i("POST",`${r}/agent/document-tool`,s),agentTopicTool:s=>i("POST",`${r}/agent/topic-tool`,s),agentListCodingJobs:s=>i("GET",`${r}/agent/coding-jobs`,s),agentStartCodingJob:s=>i("POST",`${r}/agent/start-coding-job`,s),agentSpawnChildJob:s=>i("POST",`${r}/agent/spawn-child-job`,s),agentArchiveChildJob:s=>i("POST",`${r}/agent/archive-child-job`,s),agentUnarchiveChildJob:s=>i("POST",`${r}/agent/unarchive-child-job`,s),agentInterruptCodingJob:s=>i("POST",`${r}/agent/interrupt-coding-job`,s),agentSendCodingJobMessage:s=>i("POST",`${r}/agent/send-coding-job-message`,s),agentDiscoverCodingJobs:s=>i("GET",`${r}/agent/discover-coding-jobs`,s),agentReadCodingJobThread:s=>i("GET",`${r}/agent/coding-job-thread`,s),agentResolveJobApproval:s=>i("POST",`${r}/agent/resolve-job-approval`,s),agentArchiveCodingJob:s=>i("POST",`${r}/agent/archive-coding-job`,s),agentUnarchiveCodingJob:s=>i("POST",`${r}/agent/unarchive-coding-job`,s),agentSetThreadStatus:s=>i("POST",`${r}/agent/set-thread-status`,s),agentCreateChannel:s=>i("POST",`${r}/agent/create-channel`,s),agentRenameChannel:s=>i("POST",`${r}/agent/rename-channel`,s),agentArchiveChannel:s=>i("POST",`${r}/agent/archive-channel`,s),agentUnarchiveChannel:s=>i("POST",`${r}/agent/unarchive-channel`,s),agentAddReaction:s=>i("POST",`${r}/agent/add-reaction`,s),agentRemoveReaction:s=>i("POST",`${r}/agent/remove-reaction`,s),agentPinMessage:s=>i("POST",`${r}/agent/pin-message`,s),agentUnpinMessage:s=>i("POST",`${r}/agent/unpin-message`,s),prepareMessageUploads:s=>i("POST",`${r}/message-uploads/prepare`,s),attachMessageFiles:s=>i("POST",`${r}/message-files/attach`,s),prepareCustomEmoji:s=>i("POST",`${r}/custom-emoji/prepare`,s),renameCustomEmoji:s=>i("POST",`${r}/custom-emoji/rename`,s),sendThreadReply:s=>i("POST",`${r}/thread-reply`,s),sendDm:s=>i("POST",`${r}/dm`,s),dmOwner:s=>i("POST",`${r}/dm-owner`,s),getVaultValues:s=>i("POST",`${r}/vault-values`,s)}}import{existsSync as As,mkdirSync as hu,readFileSync as Is,renameSync as _u,rmSync as xu,writeFileSync as bu}from"node:fs";import{homedir as Rs}from"node:os";import{dirname as wu,join as Ms}from"node:path";function js(){return Ms(Rs(),".linzumi","auth.json")}function $n(e,n=js()){if(!As(n))return;let t=Ns(Is(n,"utf8")),r=Qe(e),o=t.local_codex_runner?.[r];if(!(o===void 0||o.access_token.trim()==="")&&!(o.expires_at!==void 0&&Date.parse(o.expires_at)<=Date.now()))return{accessToken:o.access_token,kandanBaseUrl:r,issuedAt:o.issued_at,expiresAt:o.expires_at}}function Ns(e){let n=JSON.parse(e);if(typeof n!="object"||n===null||Array.isArray(n))throw new Error("Kandan auth cache must contain a JSON object");let t=n,r=t.local_codex_runner,o=t.personal_agent_delegation;if(r!==void 0&&(typeof r!="object"||r===null||Array.isArray(r)))throw new Error("Kandan auth cache local_codex_runner must be an object");if(o!==void 0&&(typeof o!="object"||o===null||Array.isArray(o)))throw new Error("Kandan auth cache personal_agent_delegation must be an object");return{version:1,local_codex_runner:Ls(r),personal_agent_delegation:Js(o)}}function Js(e){if(typeof e!="object"||e===null||Array.isArray(e))return;let n=e.access_token,t=e.issued_at,r=e.expires_at;if(!(typeof n!="string"||typeof t!="string"))return{access_token:n,issued_at:t,expires_at:typeof r=="string"?r:void 0}}function Ls(e){if(!(typeof e!="object"||e===null||Array.isArray(e)))return Object.fromEntries(Object.entries(e).flatMap(([n,t])=>{if(typeof t!="object"||t===null||Array.isArray(t))return[];let r=t.access_token,o=t.issued_at,i=t.expires_at;return typeof r!="string"||typeof o!="string"?[]:[[n,{access_token:r,issued_at:o,expires_at:typeof i=="string"?i:void 0}]]}))}var Un={mcpAuthFileContents:"LINZUMI_CLOUD_MCP_AUTH_JSON",llmProxyToken:"LINZUMI_CLOUD_LLM_PROXY_TOKEN"};function Or(e){let n;try{n=JSON.parse(Buffer.from(e,"base64").toString("utf8"))}catch{throw new Error("invalid guest cloud turn config payload (not base64 JSON)")}if(typeof n!="object"||n===null||Array.isArray(n))throw new Error("invalid guest cloud turn config payload");let t=n;for(let[r,o]of[["codexVersion",t.codexVersion],["sandbox",t.sandbox],["approvalPolicy",t.approvalPolicy],["kandanUrl",t.kandanUrl],["cwd",t.cwd]])if(typeof o!="string"||o==="")throw new Error(`invalid guest cloud turn config payload (${r} missing)`);if(!Array.isArray(t.input))throw new Error("invalid guest cloud turn config payload (input)");if(typeof t.appServerPort!="number"||!Number.isInteger(t.appServerPort))throw new Error("invalid guest cloud turn config payload (appServerPort)");return t}var te="/home/agent",$s=`${te}/.linzumi-provisioned`;var Dn="/dev/shm/linzumi",$u=`${Dn}/codex`,Uu=`${Dn}/mcp-auth.json`;var Du=`${Dn}/codex.env`;var Vu=`${te}/cloud-supervisor.mjs`,Ar=`${te}/mcp-server.mjs`,Fn=`${te}/.secrets`,zn=`${Fn}/mcp-auth.json`,Ze=`${te}/.codex`,Ir=`${Ze}/linzumi-thread-map.json`;var qn=`${te}/.turn-heartbeats`,Rr=5e3,Us=/^[A-Za-z0-9-]{8,64}$/;function Gn(e){if(!Us.test(e))throw new Error(`invalid cloud turn nonce: ${JSON.stringify(e.slice(0,80))}`)}var Bs=3e4,Ws=200,Hs=18e4,jr="LINZUMI_GUEST_MODEL_CALL_LIVENESS_MS",Ks=15*6e4,Nr="LINZUMI_GUEST_ACTIVE_LOOP_BUDGET_MS",Ye=2147483647;function Qs(e){let n=e[Nr];if(n===void 0)return Ks;let t=Number(n);if(n.trim()===""||!Number.isSafeInteger(t)||t<=0||t>Ye)throw new Error(`${Nr} must be an integer number of milliseconds between 1 and ${Ye}, got ${JSON.stringify(n)}`);return t}var Bn=class extends Error{code="active_loop_budget_exceeded";budgetMs;constructor(n){super(`active_loop_budget_exceeded: guest turn exceeded the ${n}ms wall-clock budget; killed the guest turn`),this.name="GuestActiveLoopBudgetExceeded",this.budgetMs=n}};function Zs(e){let n=e[jr];if(n===void 0)return Hs;let t=Number(n);if(n.trim()===""||!Number.isSafeInteger(t)||t<=0)throw new Error(`${jr} must be a positive integer number of milliseconds, got ${JSON.stringify(n)}`);return t}var Wn=class extends Error{code="guest_turn_liveness_failure";windowMs;constructor(n){super(`guest_turn_liveness_failure: zero upstream model calls for ${n}ms; killed the guest turn`),this.name="GuestTurnLivenessFailure",this.windowMs=n}};function Xs(e,n,t){if(e.method!=="thread/tokenUsage/updated")return;let r=w(e.params)??{};if(h(r.threadId)!==n||h(r.turnId)!==t)return;let o=me(w(w(r.tokenUsage)?.total)?.totalTokens),i=me(w(w(r.tokenUsage)?.last)?.totalTokens);if(!(o===void 0||o<0))return{totalTokens:o,priorCallTotalTokens:i!==void 0&&i>=0&&i<=o?o-i:void 0}}function re(e){return e.replace(/\bsmk_[A-Za-z0-9._-]+/g,"smk_[REDACTED]").replace(/\b(sk|lz|tok|bearer)[-_][A-Za-z0-9._-]{8,}/gi,"$1_[REDACTED]")}var Vn=64*1024;function Ys(e,n){let t=n.now??Date.now,r=Buffer.alloc(0),o=null,i=null,s=a=>{let d=Buffer.isBuffer(a)?a:Buffer.from(a,"utf8");r=Buffer.concat([r,d]);let u=Vn*2;r.byteLength>u&&(r=r.subarray(r.byteLength-u))};return e.stdout?.on("data",s),e.stderr?.on("data",s),e.once("exit",(a,d)=>{o=a,i=d??null}),{evidence:a=>{let d=Buffer.from(re(r.toString("utf8")),"utf8"),u=d.byteLength<=Vn?d:d.subarray(d.byteLength-Vn);return{marker:"guest_turn_failure_evidence",empty_output:r.byteLength===0,output_tail:u.toString("utf8"),exit_code:o,signal:i,duration_ms:Math.max(0,t()-n.startedAtMs),model_call_count:a}}}}var en;function ea(e){en=e;try{ye(Lr(e),{recursive:!0}),Re(e,"")}catch{en=void 0}}function D(e){let n=`${JSON.stringify(e)}
|
|
13
|
-
|
|
9
|
+
`+t)}function ie(e,n,t,r,o,i){if(e.listenerCount("wsClientError")){let s=new Error(o);Error.captureStackTrace(s,ie),e.emit("wsClientError",s,t,n)}else Ae(t,r,o,i)}});import{spawn as od}from"node:child_process";import{randomUUID as id}from"node:crypto";import{appendFileSync as sd,rmSync as so,writeFileSync as $e,mkdirSync as be,chmodSync as to,readFileSync as ad,readdirSync as dd,statSync as ud,unlinkSync as cd}from"node:fs";import{dirname as ao,join as mn}from"node:path";var Ji=ke(sr(),1),Ui=ke(En(),1),Ki=ke(qn(),1),Jn=ke(nn(),1),zi=ke(hr(),1);function k(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function gr(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 y(e){return e!==void 0&&k(e)?e:void 0}function j(e){return Array.isArray(e)?e:void 0}function p(e){return typeof e=="string"&&e.trim()!==""?e.trim():void 0}function I(e){return typeof e=="number"&&Number.isInteger(e)?e:void 0}import{appendFileSync as Zi,openSync as Cu}from"node:fs";import{homedir as vr}from"node:os";import{dirname as Yi,join as xr,resolve as Xi,sep as es}from"node:path";import{mkdirSync as ns}from"node:fs";var W={_generated:"GENERATED by scripts/naming_dual_emit_codegen.mjs from scripts/naming_canonical_key_map.json (N2.2 dual-emit, D46) - DO NOT EDIT; run: node scripts/naming_dual_emit_codegen.mjs --write",events:[["codex.agent_turn_narration_only_no_reply","harness.agent_turn_narration_only_no_reply"],["codex.cost_cap_402_seen","harness.cost_cap_402_seen"],["codex.edge_blocked_captured","harness.edge_blocked_captured"],["codex.empty_turn_auto_retry_suppressed_cost_cap","harness.empty_turn_auto_retry_suppressed_cost_cap"],["codex.empty_turn_loop_guard_tripped","harness.empty_turn_loop_guard_tripped"],["codex.error_without_http_status_captured","harness.error_without_http_status_captured"],["codex.mid_stream_stall_auto_resume_flagged","harness.mid_stream_stall_auto_resume_flagged"],["codex.mid_stream_stall_fresh_session_resume","harness.mid_stream_stall_fresh_session_resume"],["codex.mid_stream_stall_fresh_session_resume_failed","harness.mid_stream_stall_fresh_session_resume_failed"],["codex.mid_stream_stall_fresh_session_resume_flagged","harness.mid_stream_stall_fresh_session_resume_flagged"],["codex.mid_stream_stall_resume_suppressed_rate_limit","harness.mid_stream_stall_resume_suppressed_rate_limit"],["codex.mid_stream_stall_second_stall_after_resume","harness.mid_stream_stall_second_stall_after_resume"],["codex.pre_first_byte_stall_auto_retry_flagged","harness.pre_first_byte_stall_auto_retry_flagged"],["codex.pre_first_byte_stall_retry_suppressed_cost_cap","harness.pre_first_byte_stall_retry_suppressed_cost_cap"],["codex.provider_outage_flagged_captured","harness.provider_outage_flagged_captured"],["codex.reasoning_loop_breaker_tripped","harness.reasoning_loop_breaker_tripped"],["codex.tool_fatal_captured","harness.tool_fatal_captured"],["codex.turn_completed","job.turn_completed"],["codex.turn_completed_with_protocol_failure","job.turn_completed_with_protocol_failure"],["codex.turn_completed_with_unsupported_tool_call_ignored","job.turn_completed_with_unsupported_tool_call_ignored"],["codex.turn_completed_without_assistant_output","job.turn_completed_without_assistant_output"],["codex.turn_demoted_late_upstream_error","job.turn_demoted_late_upstream_error"],["codex.turn_forward_failed","job.turn_forward_failed"],["codex.upstream_error_captured","harness.upstream_error_captured"],["codex.upstream_rejection_captured","harness.upstream_rejection_captured"],["codex.upstream_turn_error_captured","harness.upstream_turn_error_captured"],["kandan.chat_event","linzumi.chat_event"],["kandan.chat_event_abandoned","linzumi.chat_event_abandoned"],["kandan.chat_event_failed","linzumi.chat_event_failed"],["kandan.chat_event_failure_cleared","linzumi.chat_event_failure_cleared"],["kandan.child_thread_event_failed","linzumi.child_thread_event_failed"],["kandan.child_thread_event_skipped_missing_thread_binding","linzumi.child_thread_event_skipped_missing_thread_binding"],["kandan.child_thread_upsert_failed","linzumi.child_thread_upsert_failed"],["kandan.child_thread_upsert_skipped_missing_thread_binding","linzumi.child_thread_upsert_skipped_missing_thread_binding"],["kandan.claude_code_interrupt_state_push_failed","linzumi.claude_code_interrupt_state_push_failed"],["kandan.claude_code_stop_state_push_failed","linzumi.claude_code_stop_state_push_failed"],["kandan.claude_code_typing_heartbeat_failed","linzumi.claude_code_typing_heartbeat_failed"],["kandan.claude_code_typing_start_wait_timeout","linzumi.claude_code_typing_start_wait_timeout"],["kandan.claude_code_typing_stop_failed","linzumi.claude_code_typing_stop_failed"],["kandan.claude_code_user_input_abort_publish_failed","linzumi.claude_code_user_input_abort_publish_failed"],["kandan.claude_code_user_question_completed_publish_failed","linzumi.claude_code_user_question_completed_publish_failed"],["kandan.codex_command_output_forwarded","linzumi.codex_command_output_forwarded"],["kandan.codex_delta_forwarded","linzumi.codex_delta_forwarded"],["kandan.codex_file_change_forwarded","linzumi.codex_file_change_forwarded"],["kandan.codex_notification_push_failed","linzumi.codex_notification_push_failed"],["kandan.codex_output_forwarded","linzumi.codex_output_forwarded"],["kandan.codex_reasoning_delta_forwarded","linzumi.codex_reasoning_delta_forwarded"],["kandan.codex_web_search_progress_forwarded","linzumi.codex_web_search_progress_forwarded"],["kandan.connection_force_reconnect","linzumi.connection_force_reconnect"],["kandan.connection_force_reconnect_dispatched","linzumi.connection_force_reconnect_dispatched"],["kandan.connection_hard_reset","linzumi.connection_hard_reset"],["kandan.connection_hard_reset_exhausted","linzumi.connection_hard_reset_exhausted"],["kandan.connection_recovered","linzumi.connection_recovered"],["kandan.connection_stale","linzumi.connection_stale"],["kandan.connection_unrecoverable","linzumi.connection_unrecoverable"],["kandan.control","linzumi.control"],["kandan.control_ack_withheld_on_failure","linzumi.control_ack_withheld_on_failure"],["kandan.control_epoch_changed","linzumi.control_epoch_changed"],["kandan.control_handler_threw","linzumi.control_handler_threw"],["kandan.control_ignored","linzumi.control_ignored"],["kandan.control_response_push_failed","linzumi.control_response_push_failed"],["kandan.failed_seq_overflow","linzumi.failed_seq_overflow"],["kandan.forward_port_revoked_push_failed","linzumi.forward_port_revoked_push_failed"],["kandan.forward_response","linzumi.forward_response"],["kandan.forward_response_push_failed","linzumi.forward_response_push_failed"],["kandan.forward_tunnel_error","linzumi.forward_tunnel_error"],["kandan.forward_tunnel_open_failed","linzumi.forward_tunnel_open_failed"],["kandan.heartbeat_push_failed","linzumi.heartbeat_push_failed"],["kandan.local_editor_initial_status_failed","linzumi.local_editor_initial_status_failed"],["kandan.local_editor_status_push_failed","linzumi.local_editor_status_push_failed"],["kandan.message_duplicate_ignored","linzumi.message_duplicate_ignored"],["kandan.message_ignored","linzumi.message_ignored"],["kandan.message_queued","linzumi.message_queued"],["kandan.message_spawn_on_miss","linzumi.message_spawn_on_miss"],["kandan.message_spawn_on_miss_failed","linzumi.message_spawn_on_miss_failed"],["kandan.message_state_refresh_failed","linzumi.message_state_refresh_failed"],["kandan.optional_push_failed","linzumi.optional_push_failed"],["kandan.post_stop_queue_drain_failed","linzumi.post_stop_queue_drain_failed"],["kandan.queue_drain_blocked","linzumi.queue_drain_blocked"],["kandan.queue_drain_dead_worker_fail_publish_failed","linzumi.queue_drain_dead_worker_fail_publish_failed"],["kandan.queue_drain_dead_worker_rebuild","linzumi.queue_drain_dead_worker_rebuild"],["kandan.queue_drain_dead_worker_rebuild_exhausted","linzumi.queue_drain_dead_worker_rebuild_exhausted"],["kandan.queue_drain_dead_worker_rebuild_failed","linzumi.queue_drain_dead_worker_rebuild_failed"],["kandan.reconnect_handling_failed","linzumi.reconnect_handling_failed"],["kandan.reconnect_thread_context_fetch_failed","linzumi.reconnect_thread_context_fetch_failed"],["kandan.reconnect_thread_cwd_failed_state_push_failed","linzumi.reconnect_thread_cwd_failed_state_push_failed"],["kandan.reconnect_thread_failed","linzumi.reconnect_thread_failed"],["kandan.reconnect_thread_processing_state_push_failed","linzumi.reconnect_thread_processing_state_push_failed"],["kandan.reconnect_thread_queue_closed_state_push_failed","linzumi.reconnect_thread_queue_closed_state_push_failed"],["kandan.reconnect_thread_queue_failed_state_push_failed","linzumi.reconnect_thread_queue_failed_state_push_failed"],["kandan.reconnect_thread_queue_state_push_failed","linzumi.reconnect_thread_queue_state_push_failed"],["kandan.reconnect_thread_rehydrate_forced","linzumi.reconnect_thread_rehydrate_forced"],["kandan.reconnect_thread_rehydrated","linzumi.reconnect_thread_rehydrated"],["kandan.reconnect_thread_rehydrated_state_push_failed","linzumi.reconnect_thread_rehydrated_state_push_failed"],["kandan.reconnect_thread_rehydration_failed","linzumi.reconnect_thread_rehydration_failed"],["kandan.reconnect_thread_rehydration_ir_emitted","linzumi.reconnect_thread_rehydration_ir_emitted"],["kandan.reconnect_thread_rehydration_items_failed","linzumi.reconnect_thread_rehydration_items_failed"],["kandan.reconnect_thread_resume_failed","linzumi.reconnect_thread_resume_failed"],["kandan.reconnect_thread_seq_already_applied","linzumi.reconnect_thread_seq_already_applied"],["kandan.reconnect_thread_transcript_fetch_failed","linzumi.reconnect_thread_transcript_fetch_failed"],["kandan.reconnect_thread_unarchive_failed","linzumi.reconnect_thread_unarchive_failed"],["kandan.reconnect_thread_unarchive_resumed","linzumi.reconnect_thread_unarchive_resumed"],["kandan.reconnect_thread_unarchive_started","linzumi.reconnect_thread_unarchive_started"],["kandan.reconnect_thread_unavailable_state_push_failed","linzumi.reconnect_thread_unavailable_state_push_failed"],["kandan.reconnected","linzumi.reconnected"],["kandan.roster_seeded","linzumi.roster_seeded"],["kandan.session_app_server_lost_push_failed","linzumi.session_app_server_lost_push_failed"],["kandan.session_settings_publish_failed","linzumi.session_settings_publish_failed"],["kandan.start_instance_claude_code_attachment_failed_state_push_failed","linzumi.start_instance_claude_code_attachment_failed_state_push_failed"],["kandan.start_instance_codex_app_server_unavailable","linzumi.start_instance_codex_app_server_unavailable"],["kandan.start_instance_cwd_failed_state_push_failed","linzumi.start_instance_cwd_failed_state_push_failed"],["kandan.start_instance_cwd_rejected","linzumi.start_instance_cwd_rejected"],["kandan.start_instance_failed","linzumi.start_instance_failed"],["kandan.start_instance_processing_state_push_failed","linzumi.start_instance_processing_state_push_failed"],["kandan.start_instance_skipped_known_session","linzumi.start_instance_skipped_known_session"],["kandan.start_instance_stale_skipped","linzumi.start_instance_stale_skipped"],["kandan.start_instance_unavailable_state_push_failed","linzumi.start_instance_unavailable_state_push_failed"],["kandan.start_instance_wafer_state_push_failed","linzumi.start_instance_wafer_state_push_failed"],["kandan.start_turn_replay_skipped","linzumi.start_turn_replay_skipped"],["kandan.steer_duplicate_ignored","linzumi.steer_duplicate_ignored"],["kandan.steer_parked_as_own_turn","linzumi.steer_parked_as_own_turn"],["kandan.thread_bind_from_historical_reply_failed","linzumi.thread_bind_from_historical_reply_failed"],["kandan.thread_bound_from_historical_reply","linzumi.thread_bound_from_historical_reply"],["kandan.thread_sessions_reannounce_failed","linzumi.thread_sessions_reannounce_failed"],["kandan.thread_sessions_reannounced","linzumi.thread_sessions_reannounced"],["kandan.tui_input_mirrored","linzumi.tui_input_mirrored"],["kandan.typing_heartbeat_failed","linzumi.typing_heartbeat_failed"],["kandan.typing_stop_after_completion_failed","linzumi.typing_stop_after_completion_failed"]],keys:[["codexThreadId","harness_session_id"],["codex_thread_id","harness_session_id"],["kandanThreadId","thread_id"],["kandan_preview_ticket","linzumi_preview_ticket"],["kandan_thread_id","thread_id"],["linzumiThreadId","thread_id"],["linzumi_thread_id","thread_id"],["local_codex_runner","commander"],["runnerId","commander_id"],["runner_config","commander_config"],["runner_id","commander_id"]],keyPrimaryLegacy:[["commander","local_codex_runner"],["commander_config","runner_config"],["commander_id","runner_id"],["harness_session_id","codex_thread_id"],["linzumi_preview_ticket","kandan_preview_ticket"],["thread_id","kandan_thread_id"]],values:[["engine_boot_reconnect","harness_boot_reconnect"],["engine_for_runner_event_type","harness_for_commander_event_type"],["engine_rejected_steer","harness_rejected_steer"],["engine_unavailable","harness_unavailable"],["join_engine","join_harness"],["kandan-local-codex-runner","linzumi-commander"],["local_codex_runner","commander"],["original_engine","original_harness"],["resume_engine","resume_harness"]],topic:{legacyPrefix:"local_codex_runner:",canonicalPrefix:"commander:"},originator:{legacy:"kandan-local-codex-runner",canonical:"linzumi-commander"}};var Wi=new Map(W.events),Gi=new Map(W.events.map(([e,n])=>[n,e])),_r=new Map(W.keys),Sr=new Map(W.keyPrimaryLegacy),Vi=new Map(W.values),Hi=new Map(W.values.map(([e,n])=>[n,e])),xu={eventCanonicalByLegacy:Wi,eventLegacyByCanonical:Gi,keyCanonicalByLegacy:_r,keyPrimaryLegacyByCanonical:Sr,valueCanonicalByLegacy:Vi,valueLegacyByCanonical:Hi,originator:W.originator,topic:W.topic};function br(e){let n=new Set(e);for(let t of e){let r=_r.get(t);r!==void 0&&n.add(r);let o=Sr.get(t);o!==void 0&&n.add(o)}return n}var yr=new Map;for(let[e,n]of W.keys){let t=yr.get(n)??[];t.push(e),yr.set(n,t)}var se="<SENSITIVE_DATA>",wr=br(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=xr(vr(),".linzumi"),t=Xi(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 Y(e,n,t={}){let r=t.logFile??os();rs(r);try{ns(Yi(r),{recursive:!0}),Zi(r,`${JSON.stringify({ts:new Date().toISOString(),event:e,...t.sessionId===void 0?{}:{sessionId:t.sessionId},...kr(n)})}
|
|
10
|
+
`,"utf8")}catch{return}}function os(){let e=process.env.LINZUMI_CLI_AUDIT_LOG?.trim();return e===void 0||e===""?xr(vr(),".linzumi","logs","command-events.jsonl"):e}function kr(e){return Tr(e)}function Un(e,n){return as(n)?se:typeof e=="string"?Cr(e):Array.isArray(e)?n==="args"?is(e):e.map(t=>Un(t,void 0)):e!==null&&typeof e=="object"?Tr(e):e}function Tr(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"?se:Un(o,r)]))}function is(e){let n=!1;return e.map(t=>{if(typeof t!="string")return n=!1,Un(t,void 0);if(n)return n=!1,se;let[r,o]=ss(t);return ts.has(r)?o===void 0?(n=!0,t):`${r}=${se}`:Cr(t)})}function ss(e){let n=e.indexOf("=");return n===-1?[e,void 0]:[e.slice(0,n),e.slice(n+1)]}function as(e){return e===void 0?!1:/^(authorization|cookie|set-cookie|password)$/i.test(e)||/(^|[_-])(access[_-]?token|api[_-]?key|auth[_-]?token|oauth[_-]?code|refresh[_-]?token|secret|token)$/i.test(e)}function Cr(e){return ds(e).replace(/\beyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,se)}function ds(e){let n;try{n=new URL(e)}catch{return us(e)}for(let t of[...n.searchParams.keys()])wr.has(t.toLowerCase())&&n.searchParams.set(t,se);return n.toString()}function us(e){let n=e.indexOf("?"),t=e.indexOf("#");if(n===-1||t!==-1&&t<n)return e;let r=e.slice(0,n),o=t===-1?e.slice(n+1):e.slice(n+1,t),i=t===-1?"":e.slice(t),s=new URLSearchParams(o),a=!1;for(let d of[...s.keys()])wr.has(d.toLowerCase())&&(s.set(d,se),a=!0);switch(a){case!0:return`${r}?${s.toString()}${i}`;case!1:return e}}function rn(e){let n=e.channelSession,t=n.linzumiAgentSession===!0,r=t?"read-only":n.sandbox,o=cs(n);return{cwd:e.cwd,...n.model===void 0?{}:{model:n.model},...o===void 0?{}:{config:o},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:t?"never":Rr(n.approvalPolicy,r,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...r===void 0?{}:{sandbox:r}}}function Kn(e){let n=e.channelSession,t=n.linzumiAgentSession===!0,r=t?"read-only":n.sandbox;return{cwd:e.cwd,...n.model===void 0?{}:{model:n.model},...n.reasoningEffort===void 0?{}:{effort:n.reasoningEffort},...e.fast===!0?{serviceTier:"fast"}:{},...n.codexEnvironmentId===void 0?{}:{environmentId:n.codexEnvironmentId},approvalPolicy:t?"never":Rr(n.approvalPolicy,r,{sandboxedNeverDefault:n.sandboxedApprovalNeverDefault}),...r===void 0?{}:{sandboxPolicy:fs(r,e.cwd)}}}function cs(e){let n=e.reasoningEffort===void 0?{}:{model_reasoning_effort:e.reasoningEffort};return e.linzumiAgentSession!==!0?e.reasoningEffort===void 0?void 0:n:{...n,web_search:"disabled",tools:{view_image:!1},features:{apps:!1,shell_tool:!1,unified_exec:!1,multi_agent:!1,code_mode:!1,image_generation:!1,browser_use:!1,browser_use_external:!1,computer_use:!1,remote_plugin:!1,tool_suggest:!1,workspace_dependencies:!1}}}function ls(e,n,t){let r=t?.sandboxedNeverDefault===!0&&n==="workspace-write";switch(e){case void 0:case"default":return r?"never":"on-request";case"never":return n==="danger-full-access"||r?"never":"on-request";case"on-request":case"on-failure":return e;default:return console.warn(`linzumi approval-policy clamp: unknown Codex approval policy ${e}; clamping to most-restrictive approval (on-request)`),"on-request"}}var ps={granular:{sandbox_approval:!1,rules:!1,skill_approval:!1,request_permissions:!1,mcp_elicitations:!0}};function Rr(e,n,t){let r=ls(e,n,t);return r==="never"&&n==="danger-full-access"?ps:r==="on-failure"?"on-request":r}function fs(e,n){switch(e){case"danger-full-access":return{type:"dangerFullAccess"};case"read-only":return{type:"readOnly",networkAccess:!1};case"workspace-write":return{type:"workspaceWrite",writableRoots:[n],networkAccess:!1,excludeTmpdirEnvVar:!1,excludeSlashTmp:!1};default:throw new Error(`unsupported Codex sandbox mode: ${e}`)}}function zn(e){return e==="final_answer"?"final_answer":"commentary"}function Bn(e){let n=ys(e),t=y(e.item);if(!(n===void 0||n===""))return{itemKey:p(e.itemId)??p(e.item_id)??p(y(e.item)?.id)??"assistant-message",turnId:p(e.turnId)??p(e.turn_id)??p(y(e.turn)?.id),delta:n,phase:zn(e.phase??t?.phase)}}function Wn(e){let n=Ir(e);if(!(n===void 0||n===""))return{itemKey:p(e.itemId)??p(e.item_id)??p(y(e.item)?.id)??"reasoning",turnId:p(e.turnId)??p(e.turn_id)??p(y(e.turn)?.id),delta:n}}function ys(e){return Ir(e)}function _s(e){return e>=55296&&e<=56319}function Ss(e){return e>=56320&&e<=57343}function Gn(e,n){let t=Math.min(Math.max(0,n),e.length),r=t>0&&t<e.length&&_s(e.charCodeAt(t-1))&&Ss(e.charCodeAt(t))?t-1:t;return e.slice(0,r)}function Ir(e){let n=e.delta;return typeof n=="string"?n:k(n)?p(n.text)??p(n.content)??p(n.delta)??p(n.message):p(e.text)??p(e.content)??p(e.message)}import{mkdirSync as bs,appendFileSync as vs}from"node:fs";import{dirname as xs}from"node:path";function Pr(e){return JSON.stringify(e)}var qe,ws=/(^|[_-])(token|secret|api[_-]?key|authorization|cookie|private[_-]?key|login[_-]?url)([_-]|$)/iu;function Vn(){return Er()!==void 0}function on(e){let n=Er();if(n===void 0)return;let t=ks(n),r=Ts(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:Oe(e.captureMetadata)},...r.transforms.length===0?e.transforms===void 0?{}:{transforms:e.transforms}:{transforms:[...e.transforms??[],...r.transforms]}};t.nextOrdinal+=1,vs(n,`${Pr(o)}
|
|
11
|
+
`,"utf8")}function Er(){let e=process.env.LINZUMI_AGENT_REPLAY_RECORD_FILE?.trim();return e===void 0||e===""?void 0:e}function ks(e){return qe!==void 0&&qe.path===e||(bs(xs(e),{recursive:!0}),qe={path:e,startedAtMs:Date.now(),nextOrdinal:0}),qe}function Ts(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:Oe(e.rawValue,"$.rawValue",n);return{rawText:Cs(e.rawText,n),rawValue:t,transforms:n}}function Cs(e,n){if(e!==void 0)try{let t=JSON.parse(e);return JSON.stringify(Oe(t,"$.rawText",n))}catch{return e}}function Oe(e,n="$",t=[]){if(Array.isArray(e))return e.map((o,i)=>Oe(o,`${n}[${i}]`,t));if(!k(e))return e;let r=Object.entries(e).map(([o,i])=>{let s=`${n}.${o}`;return ws.test(o)?(t.push({type:"credential_redaction",path:s}),[o,"[REDACTED]"]):[o,i===void 0?void 0:Oe(i,s,t)]});return Object.fromEntries(r)}function Mr(e){return{name:"linzumi",command:e.command??"linzumi",args:[...e.argsPrefix??[],"mcp","server","--api-url",e.kandanUrl,...e.authFilePath===void 0?[]:["--auth-file",e.authFilePath],...e.delegationAuthFilePath===void 0?[]:["--delegation-auth-file",e.delegationAuthFilePath],...e.ownerUsername===void 0?[]:["--owner-username",e.ownerUsername],...e.cwd===void 0?[]:["--cwd",e.cwd],...e.threadId===void 0?[]:["--thread-id",e.threadId],"--mode",e.operatingMode??"text",...e.toolScope===void 0||e.toolScope==="all"?[]:["--tool-scope",e.toolScope],...e.agentSession===!0?["--agent-session"]:[],...e.askUserQuestionTool===!0?["--ask-user-question-tool"]:[],...e.multiAgentJobs===!0?["--multi-agent-jobs"]:[]],env:{...e.accessToken===void 0?{}:{LINZUMI_MCP_ACCESS_TOKEN:e.accessToken},...e.devServices===void 0?{}:{LINZUMI_DEV_SERVICES_SCOPE:e.devServices.scope,LINZUMI_DEV_SERVICES_OWNER_PID:String(e.devServices.ownerPid)},ELECTRON_RUN_AS_NODE:"1"}}}function Hn(e,n){return["-c",`mcp_servers.${e.name}.command=${JSON.stringify(e.command)}`,"-c",`mcp_servers.${e.name}.args=${Rs(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=${Ar}`]:[]]}function Rs(e){return`[${e.map(n=>JSON.stringify(n)).join(", ")}]`}var Ar=2147483,Is=Ar*1e3-5*6e4;var Hu=["# 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 qr(){return["-c",'mcp_oauth_credentials_store="file"',"-c",'cli_auth_credentials_store="file"']}var Ps=5*6e4;var Ms=(()=>{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 jr(e,n={}){return["app-server",...Bs(n),"--listen",e]}var qs=["-c","features.apps=false"],Os=["-c","features.default_mode_request_user_input=true"],Fs="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_MS",js="LINZUMI_CODEX_STREAM_IDLE_TIMEOUT_SOURCE",Ls=5e3,Ds=6e5,Ns=["flag","env","server_default"];function $s(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<Ls||t>Ds?{state:"invalid",raw:e}:{state:"applied",timeoutMs:t}}function Us(e=process.env){let n=Js(e[Fs]);if(n.state==="unset")return n;let t=$s(e[js]?.trim())??"env";return{...n,source:t}}function Ks(e=process.env){let n=Us(e);return n.state==="applied"?n.timeoutMs:void 0}var Lr="openai-linzumi";function Dr(){let e=Lr;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=Lr;return[...Dr(),"-c",`model_providers.${n}.stream_idle_timeout_ms=${e}`,"-c",`model_provider="${n}"`]}function Bs(e,n=process.env){let t=Ks(n);return[...qs,...e.nativeQuestionBridge==="durable"?Os:[],...qr(),...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,{neverEquivalentGranularApprovalPolicy:e.neverEquivalentGranularApprovalPolicy===!0})),...e.modelProvider===void 0?t===void 0?Dr():zs(t):Ws(e.modelProvider,t)]}function Ws(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 Nr(e,n=t=>new Jn.default(t)){let t=await Zs(e,n),r=new Map,o=new Set,i=new Set,s=[],a=new Set,d={nextId:1,closeError:void 0},u=m=>{let g=new Error(m);r.forEach(c=>c.reject(g)),r.clear()},l=setInterval(()=>As(t),Ms);l.unref?.();let f=m=>{if(clearInterval(l),u(m),d.closeError===void 0){d.closeError=new Error(m);for(let g of a)Fr(g,d.closeError);a.clear()}};return t.addEventListener("close",()=>f("codex app-server websocket closed")),t.addEventListener("error",()=>f("codex app-server websocket closed")),t.addEventListener("message",m=>{let g=String(m.data),c=Qs(g);if(c===void 0){Gs(g);return}if(Fe({direction:"codex_to_commander",captureKind:Hs(c),message:c,rawText:g}),"id"in c&&("result"in c||"error"in c)){let x=r.get(c.id);x!==void 0&&(r.delete(c.id),x.resolve(c));return}if("id"in c&&typeof c.method=="string"){Xs(t,c,i);return}if(!("id"in c)&&typeof c.method=="string"){let x=c;o.size===0?s.push(x):o.forEach(E=>Or(E,x))}}),await na(t,r),{request:(m,g)=>{let c=d.nextId;return d.nextId+=1,$r(t,r,g===void 0?{jsonrpc:"2.0",id:c,method:m}:{jsonrpc:"2.0",id:c,method:m,params:g})},notify:(m,g)=>{let c=g===void 0?{jsonrpc:"2.0",method:m}:{jsonrpc:"2.0",method:m,params:g};Fe({direction:"commander_to_codex",captureKind:"outgoing",message:c,rawText:JSON.stringify(c)}),t.send(JSON.stringify(c))},onNotification:m=>{o.add(m),s.splice(0).forEach(g=>Or(m,g))},onRequest:m=>{i.add(m)},onClose:m=>{if(d.closeError!==void 0){Fr(m,d.closeError);return}a.add(m)},isClosed:()=>d.closeError!==void 0,close:()=>{clearInterval(l),t.close()}}}function Fe(e){Vn()&&on({provider:"codex-app-server",captureKind:e.captureKind,rawText:e.rawText,rawValue:{message:e.message},captureMetadata:{direction:e.direction,capturedAtMs:Date.now(),capturePid:process.pid,...Vs(e.message),...e.extraMetadata??{}}})}function Gs(e){Vn()&&on({provider:"codex-app-server",captureKind:"incoming",rawText:e,captureMetadata:{direction:"codex_to_commander",capturedAtMs:Date.now(),capturePid:process.pid,malformed:!0}})}function Vs(e){return!("params"in e)||!k(e.params)?{}:gr(e.params)}function Hs(e){return"id"in e&&("result"in e||"error"in e)?"response":"id"in e&&typeof e.method=="string"?"request":"notification"}function Qs(e){let n=String(e);try{let t=JSON.parse(n);if(!k(t))throw new Error("codex app-server sent non-object JSON-RPC message");return t}catch(t){Y("codex.app_server_frame_malformed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t),payload:Gn(n,512),payloadChars:n.length});return}}function Or(e,n){try{e(n)}catch(t){Y("codex.notification_callback_failed",{purpose:"codex.app_server",method:n.method,message:t instanceof Error?t.message:String(t)})}}function Fr(e,n){try{e(n)}catch(t){Y("codex.close_callback_failed",{purpose:"codex.app_server",message:t instanceof Error?t.message:String(t)})}}async function Zs(e,n,t=2e3){let r=Date.now()+t,o;for(;Date.now()<=r;){let i=n(e);try{return await ta(i),i}catch(s){o=s instanceof Error?s:new Error(String(s)),Ys(i)}}throw o??new Error("websocket open failed")}function Ys(e){try{e.close()}catch{}}async function Xs(e,n,t){let r=o=>ea(e,o,n.method);try{if(t.size===0){r({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}});return}for(let o of t){let i=await o(n);if(i!==void 0){r({jsonrpc:"2.0",id:n.id,result:i});return}}r({jsonrpc:"2.0",id:n.id,error:{code:-32601,message:`unhandled Codex app-server request: ${n.method}`}})}catch(o){r({jsonrpc:"2.0",id:n.id,error:{code:-32e3,message:o instanceof Error?o.message:String(o)}})}}function ea(e,n,t){let r=JSON.stringify(n);Fe({direction:"commander_to_codex",captureKind:"response",message:n,rawText:r,extraMetadata:{requestMethod:t}}),e.send(r)}async function na(e,n){let t=await $r(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"};Fe({direction:"commander_to_codex",captureKind:"outgoing",message:r,rawText:JSON.stringify(r)}),e.send(JSON.stringify(r))}function $r(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}),Fe({direction:"commander_to_codex",captureKind:"request",message:t,rawText:JSON.stringify(t)}),e.send(JSON.stringify(t))})}function ta(e){return new Promise((n,t)=>{e.addEventListener("open",()=>n(),{once:!0}),e.addEventListener("error",()=>t(new Error("websocket open failed")),{once:!0})})}var Ic=300*1e3;function sn(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 je(e){let n=e.fetchImpl??fetch,t=sn(e.kandanUrl),r=e.authMode==="personal-agent-delegation"?"/api/v2/personal-agent-mcp":"/api/v2/local-runner-mcp",o=e.operatingMode??"text",i=async(s,a,d,u={})=>{let l=new URL(a,t),f={...d,operating_mode:o},_={method:s,headers:{authorization:`Bearer ${e.accessToken}`},...u.signal===void 0?{}:{signal:u.signal}};if(s==="GET")for(let[F,$]of Object.entries(f))$!=null&&l.searchParams.set(F,String($));else _.headers={..._.headers,"content-type":"application/json"},_.body=JSON.stringify(f);let m=await n(l,_),g=await m.json(),c=k(g)?g:void 0;if(c===void 0)throw new Error(`Linzumi MCP API returned non-object JSON from ${a}`);if(m.ok&&c.ok===!0)return c;let x=typeof c.error=="string"?c.error:`HTTP ${m.status}`,E=typeof c.detail=="string"?c.detail:void 0;throw new Error(`Linzumi MCP API ${a} failed: ${x}${E===void 0?"":` detail=${E}`}`)};return{validateAuth:()=>i("GET",`${r}/validate`,{}),issueOnboardingDiscoveryToken:s=>i("POST",`${r}/onboarding-discovery-token`,s),getMessage:s=>i("GET",`${r}/message`,s),getThread:s=>i("GET",`${r}/thread`,s),getThreadTranscript:s=>i("GET",`${r}/thread-transcript`,s),getChannel:s=>i("GET",`${r}/channel`,s),searchWorkspace:s=>i("GET",`${r}/search`,s),askWorkspace:s=>i("POST",`${r}/ask`,s),aboutMe:s=>i("GET",`${r}/about-me`,s),webSearch:s=>i("GET",`${r}/web-search`,s),fetchUrl:s=>i("GET",`${r}/fetch-url`,s),listUiTargets:s=>i("GET",`${r}/ui-targets`,s),openUi:s=>i("POST",`${r}/open-ui`,s),getCodingJobMetadata:s=>i("GET",`${r}/coding-job-metadata`,s),listProjects:s=>i("GET",`${r}/projects`,s),getProjectTasks:s=>i("GET",`${r}/project-tasks`,s),createProjectTask:s=>i("POST",`${r}/project-tasks/create`,s),updateProjectTask:s=>i("POST",`${r}/project-tasks/update`,s),deleteProjectTask:s=>i("POST",`${r}/project-tasks/delete`,s),addProjectTaskDependency:s=>i("POST",`${r}/project-tasks/add-dependency`,s),removeProjectTaskDependency:s=>i("POST",`${r}/project-tasks/remove-dependency`,s),getCallTranscript:s=>i("GET",`${r}/call-transcript`,s),renameCodingJob:s=>i("POST",`${r}/coding-job-title`,s),upsertCodingJobPlan:(s,a)=>i("POST",`${r}/coding-job-plan`,s,a),replaceCodingJobPlanSteps:s=>i("POST",`${r}/coding-job-plan/steps`,s),updateCodingJobPlanStep:s=>i("POST",`${r}/coding-job-plan/step`,s),linkCodingJobPullRequest:s=>i("POST",`${r}/coding-job-primary-pr`,s),listVaultSecrets:s=>i("GET",`${r}/vault-secrets`,s),noteProjectDirectory:s=>i("POST",`${r}/discovered-project`,s),noteAgentConversation:s=>i("POST",`${r}/discovered-conversation`,s),noteOnboardingDiscoveryStatus:s=>i("POST",`${r}/discovery-status`,s),sendChannelMessage:s=>i("POST",`${r}/channel-message`,s),editMessage:s=>i("POST",`${r}/message/edit`,s),agentReply:s=>i("POST",`${r}/agent-reply`,s),scheduleWake:s=>i("POST",`${r}/scheduled-wakes`,s),cancelWake:s=>i("POST",`${r}/scheduled-wakes/cancel`,s),declineDocumentAction:s=>i("POST",`${r}/agent/decline-document-action`,s),agentTurnProgress:s=>i("POST",`${r}/agent-turn-progress`,s),agentDocumentTool:s=>i("POST",`${r}/agent/document-tool`,s),agentTopicTool:s=>i("POST",`${r}/agent/topic-tool`,s),agentListCodingJobs:s=>i("GET",`${r}/agent/coding-jobs`,s),agentStartCodingJob:s=>i("POST",`${r}/agent/start-coding-job`,s),agentSpawnChildJob:s=>i("POST",`${r}/agent/spawn-child-job`,s),agentArchiveChildJob:s=>i("POST",`${r}/agent/archive-child-job`,s),agentUnarchiveChildJob:s=>i("POST",`${r}/agent/unarchive-child-job`,s),agentInterruptCodingJob:s=>i("POST",`${r}/agent/interrupt-coding-job`,s),agentSendCodingJobMessage:s=>i("POST",`${r}/agent/send-coding-job-message`,s),agentDiscoverCodingJobs:s=>i("GET",`${r}/agent/discover-coding-jobs`,s),agentReadCodingJobThread:s=>i("GET",`${r}/agent/coding-job-thread`,s),agentResolveJobApproval:s=>i("POST",`${r}/agent/resolve-job-approval`,s),agentArchiveCodingJob:s=>i("POST",`${r}/agent/archive-coding-job`,s),agentUnarchiveCodingJob:s=>i("POST",`${r}/agent/unarchive-coding-job`,s),agentSetThreadStatus:s=>i("POST",`${r}/agent/set-thread-status`,s),agentCreateChannel:s=>i("POST",`${r}/agent/create-channel`,s),agentRenameChannel:s=>i("POST",`${r}/agent/rename-channel`,s),agentArchiveChannel:s=>i("POST",`${r}/agent/archive-channel`,s),agentUnarchiveChannel:s=>i("POST",`${r}/agent/unarchive-channel`,s),agentAddReaction:s=>i("POST",`${r}/agent/add-reaction`,s),agentRemoveReaction:s=>i("POST",`${r}/agent/remove-reaction`,s),agentPinMessage:s=>i("POST",`${r}/agent/pin-message`,s),agentUnpinMessage:s=>i("POST",`${r}/agent/unpin-message`,s),prepareMessageUploads:s=>i("POST",`${r}/message-uploads/prepare`,s),attachMessageFiles:s=>i("POST",`${r}/message-files/attach`,s),prepareCustomEmoji:s=>i("POST",`${r}/custom-emoji/prepare`,s),renameCustomEmoji:s=>i("POST",`${r}/custom-emoji/rename`,s),sendThreadReply:s=>i("POST",`${r}/thread-reply`,s),sendDm:s=>i("POST",`${r}/dm`,s),dmOwner:s=>i("POST",`${r}/dm-owner`,s),getVaultValues:s=>i("POST",`${r}/vault-values`,s)}}import{existsSync as ra,mkdirSync as Oc,readFileSync as oa,renameSync as Fc,rmSync as jc,writeFileSync as Lc}from"node:fs";import{homedir as ia}from"node:os";import{dirname as $c,join as sa}from"node:path";function aa(){return sa(ia(),".linzumi","auth.json")}function Le(e,n=aa()){if(!ra(n))return;let t=da(oa(n,"utf8")),r=sn(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 da(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:ca(r),personal_agent_delegation:ua(o)}}function ua(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 ca(e){if(!(typeof e!="object"||e===null||Array.isArray(e)))return Object.fromEntries(Object.entries(e).flatMap(([n,t])=>{if(typeof t!="object"||t===null||Array.isArray(t))return[];let r=t.access_token,o=t.issued_at,i=t.expires_at;return typeof r!="string"||typeof o!="string"?[]:[[n,{access_token:r,issued_at:o,expires_at:typeof i=="string"?i:void 0}]]}))}var la=50,Jr="runner.notice";function pa(e){let n=new Map;return{report:r=>{let o=r.key??r.message,i=r.audience??"user",s=e.nowMs(),a=n.get(o),d=a===void 0?{key:o,severity:r.severity,message:r.message,audience:i,count:1,firstAtMs:s,lastAtMs:s}:{...a,severity:r.severity,message:r.message,audience:i,count:a.count+1,lastAtMs:s};n.delete(o),n.set(o,d);for(let u of n.keys()){if(n.size<=la)break;n.delete(u)}return e.writeAuditEvent(Jr,{severity:d.severity,audience:d.audience,key:d.key,message:d.message,count:d.count}),e.tuiActive()?(d.audience==="user"&&e.reportConsoleEvent(Jr,{severity:d.severity,key:d.key,message:d.message,count:d.count}),d):(d.count===1&&e.writeStderr(`${fa(d.severity)}${d.message}
|
|
13
|
+
`),d)},notices:()=>Array.from(n.values()),reset:()=>n.clear()}}function fa(e){switch(e){case"warning":return"WARNING: ";case"error":return"ERROR: ";case"info":return""}}var Ur={tuiActive:()=>!1,reportConsoleEvent:()=>{}};var Vc=pa({tuiActive:()=>Ur.tuiActive(),writeAuditEvent:(e,n)=>Y(e,n),reportConsoleEvent:(e,n)=>Ur.reportConsoleEvent(e,n),writeStderr:e=>{process.stderr.write(e)},nowMs:Date.now});function dn(e){return`<linzumi_context>
|
|
14
|
+
<linzumi_thread_id>${an(e.threadId)}</linzumi_thread_id>
|
|
15
|
+
<linzumi_creator_user_id>${an(e.creatorUserId)}</linzumi_creator_user_id>
|
|
16
|
+
<linzumi_creator_username>${an(e.creatorUsername)}</linzumi_creator_username>
|
|
17
|
+
<linzumi_conversation_url>${an(e.conversationUrl)}</linzumi_conversation_url>
|
|
18
|
+
</linzumi_context>
|
|
14
19
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
<linzumi_pr_footer_instruction>
|
|
21
|
+
For any GitHub pull request you open from this session, include this Markdown footer link in the PR description: [Continue this on Linzumi](${e.conversationUrl})
|
|
22
|
+
</linzumi_pr_footer_instruction>`}function an(e){return e.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">")}var ma=["deterministic","transient_upstream","transient_local","rate_limited","needs_approval","needs_decision","route_outage"],ml=new Set(ma);var ha={runner_updating:"transient_local",stillborn_worker:"transient_local",infra_turn_kill:"transient_local",resume_transient:"transient_local",start_stage_transient:"transient_local",resume_torn_tail:"transient_local",resurrection_interrupted:"transient_local",dead_letter_exhausted:"transient_local",dead_letter_withheld:"needs_decision",dead_letter_permanent:"deterministic",resume_cwd_not_allowed:"deterministic",cwd_stillbirth_circuit_open:"deterministic",engine_unavailable:"deterministic",provider_binding_rejected:"deterministic",project_untrusted:"deterministic",attachment_download_failed:"transient_local",claude_input_queue_closed:"transient_local",claude_dispatch_wedged:"transient_local"};var hl=Object.keys(ha);var ga=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/,vl=new RegExp(ga.source,"g");var Ml=1440*60*1e3;var ql=10*6e4;var Ep=10*6e4;var Kr=new Map([["function_call","function_call_output"],["custom_tool_call","custom_tool_call_output"]]),of=new Set([...Kr.keys(),...Kr.values()]);import{execFile as Ia}from"node:child_process";import{promisify as Pa}from"node:util";var uf=Pa(Ia);var cf=200*1024*1024,lf=4320*60*1e3;var De=String.raw`\bgit\s+(?:-[Cc]\s+\S+\s+|-\S+\s+)*`,pf=[new RegExp(`${De}restore\\b`),new RegExp(`${De}checkout\\b[^\\n;|&]*(\\s--(\\s|$)|\\s-f\\b|\\s\\.(\\s|$))`),new RegExp(`${De}reset\\b[^\\n;|&]*--(hard|merge|keep)\\b`),new RegExp(`${De}clean\\b`),new RegExp(`${De}stash\\s+(drop|clear|pop)\\b`),/\brm\s+(-[A-Za-z]*f[A-Za-z]*)\b/];var zr=76800;function Br(e){return Math.ceil(e.length/4)}function Zn(e){if(!k(e))return;let n=I(e.ir_version),t=j(e.nodes);if(!(n===void 0||t===void 0))return{irVersion:n,threadTitle:p(e.thread_title),nodes:t.flatMap(Ea),hasMore:e.has_more===!0,cursor:I(e.cursor),budget:Ma(e.budget)}}function Ea(e){if(!k(e))return[];let n=p(e.kind),t=I(e.seq),r=p(e.body)??"";return n===void 0||t===void 0?[]:[{kind:n,seq:t,at:p(e.at),engine:p(e.engine)??"none",body:r,structured:y(e.structured),actor:y(e.actor),attachments:j(e.attachments)??[],sourceSeq:I(e.source_seq),streamKey:p(e.stream_key)}]}function Ma(e){if(!k(e))return;let n=I(e.context_window),t=I(e.max_emission_tokens);if(!(n===void 0||t===void 0||t<=0))return{model:p(e.model),contextWindow:n,maxEmissionTokens:t}}function Aa(e,n){let t=n>0?n:zr,r=e.filter(a=>a.kind!=="reasoning"),o=e.length-r.length,i=[],s=0;for(let a=r.length-1;a>=0;a-=1){let d=r[a];if(d===void 0)continue;let u=Br(Wr(d,t));if(i.length>0&&s+u>t)break;s+=u,i.unshift(d)}return{tail:i,omittedNodeCount:r.length-i.length,redactedReasoningCount:o,artifacts:qa(e)}}function qa(e){let n=new Set,t=new Set,r=0;for(let o of e){if(o.kind==="error"&&(r+=1),o.kind==="file_change")for(let i of Oa(o.structured))n.add(i);if(o.kind==="command_execution"){let i=p(o.structured?.command)?.trim();i!==void 0&&i!==""&&t.add(i.split(`
|
|
23
|
+
`,1)[0]??i)}}return{filesTouched:[...n].slice(0,100),commandsRun:[...t].slice(0,100),errorCount:r}}function Oa(e){if(e===void 0)return[];let n=p(e.path),r=(j(e.paths)??j(e.files)??[]).flatMap(o=>{let i=p(o);if(i!==void 0)return[i];let s=k(o)?p(o.path):void 0;return s===void 0?[]:[s]});return n===void 0?r:[n,...r]}function Yn(e){let n=e.budget?.maxEmissionTokens??zr,t=Aa(e.nodes,n),r=$a({resumeFailure:e.resumeFailure,threadTitle:e.threadTitle,linzumiContext:e.linzumiContext,budgeted:t,transcriptEmpty:t.tail.length===0}),o=[G(r,"commentary")],i=0;for(let a of t.tail)i+=1,o.push(...Fa(a,n,i));let s=o.reduce((a,d)=>a+Br(JSON.stringify(d)),0);return{items:o,emittedNodeCount:t.tail.length,omittedNodeCount:t.omittedNodeCount,redactedReasoningCount:t.redactedReasoningCount,emittedTokenEstimate:s,maxEmissionTokens:n}}function Fa(e,n,t){let r=Wr(e,n);switch(e.kind){case"user_message":return[{type:"message",role:"user",content:[{type:"input_text",text:Na(e,r)}]}];case"assistant_message":return[G(r,Da(e))];case"command_execution":return ja(e,r,t);case"tool_call":return La(e,r,t);case"reasoning":return[];case"file_change":return[G(`[file change]
|
|
24
|
+
${r}`,"commentary")];case"terminal_input":return[G(`[terminal input]
|
|
25
|
+
${r}`,"commentary")];case"tool_result":return[G(`[tool result]
|
|
26
|
+
${r}`,"commentary")];case"approval_request":return[G(`[approval] ${r}`,"commentary")];case"agent_status":return[G(`[status] ${r}`,"commentary")];case"system_notice":return[G(`[notice] ${r}`,"commentary")];case"error":return[G(`[error] ${r}`,"commentary")];default:return[G(`[${e.kind}] ${r}`,"commentary")]}}function ja(e,n,t){let r=Gr(e,t),o=p(e.structured?.command),i=p(e.structured?.cwd),s=I(e.structured?.exit_code),a=p(e.structured?.output)??n;return[{type:"function_call",name:"shell",call_id:r,arguments:JSON.stringify({command:o??Ua(n),...i===void 0||i===""?{}:{cwd:i}})},{type:"function_call_output",call_id:r,output:s===void 0?a:`exit_code=${s}
|
|
27
|
+
${a}`}]}function La(e,n,t){let r=Gr(e,t);return[{type:"function_call",name:Ja(p(e.structured?.title)??"linzumi_replayed_tool"),call_id:r,arguments:JSON.stringify({replayed:!0})},{type:"function_call_output",call_id:r,output:n===""?"[result not recorded]":n}]}function G(e,n){return{type:"message",role:"assistant",content:[{type:"output_text",text:e}],phase:n}}function Da(e){return p(e.structured?.phase)==="commentary"?"commentary":"final_answer"}function Na(e,n){return e.attachments.length===0?n:`${n}
|
|
28
|
+
[${e.attachments.length} attachment(s) in the original message]`}function Wr(e,n){let t=Math.max(1e3,n*4),r=e.body;return r.length<=t?r:`[...truncated...]
|
|
29
|
+
${r.slice(r.length-t)}`}function $a(e){let n=e.resumeFailure.trim(),{artifacts:t}=e.budgeted,r=["Rebuilt Linzumi coding session","","This session was rebuilt after an interrupted durable engine session: the previous engine session for this Linzumi thread could not be resumed"+(n===""?".":` (${Ka(n,400)}).`),e.transcriptEmpty?"The durable server-side transcript could not be fetched or is empty - ask the user for any missing context instead of guessing.":"You are continuing the SAME task in the SAME Linzumi thread. The transcript below is replayed from the durable server-side record. Re-derive any local state (files, branches, running processes) from the workspace itself; do not assume in-memory state survived.",...e.threadTitle===void 0||e.threadTitle.trim()===""?[]:["",`Thread: ${e.threadTitle.trim()}`],...e.linzumiContext===void 0?[]:["",dn(e.linzumiContext)]],o=[...e.budgeted.omittedNodeCount>0?[`${e.budgeted.omittedNodeCount} older transcript entries were omitted to fit the emission budget.`]:[],...e.budgeted.redactedReasoningCount>0?[`${e.budgeted.redactedReasoningCount} reasoning entries were redacted (provider-private; never replayed).`]:[],...t.filesTouched.length>0?[`Files touched: ${t.filesTouched.join(", ")}`]:[],...t.commandsRun.length>0?[`Commands run: ${t.commandsRun.join("; ")}`]:[],...t.errorCount>0?[`${t.errorCount} error entries in the full history.`]:[]];return[...r,...o.length===0?[]:["",...o]].join(`
|
|
30
|
+
`)}function Gr(e,n){return`linzumi_replay_${e.seq}_${n}`}function Ja(e){let n=e.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,64);return n===""?"linzumi_replayed_tool":n}function Ua(e){return e.split(`
|
|
31
|
+
`,1)[0]??e}function Ka(e,n){return e.length<=n?e:`[...truncated...]${e.slice(e.length-n)}`}var un={default:{maxLadderMs:9e5},wafer:{maxLadderMs:36e5}};var Of={maxRecoveryRungs:4,maxLadderMs:un.default.maxLadderMs,maxRateLimitHoldMs:30*6e4},Ff={default:un.default,wafer:un.wafer};var Nf=10*6e4;var Ga=[{appName:"Bun",iconKey:"bun",names:["bun","bunx"]},{appName:"Node.js",iconKey:"nodejs",names:["node","nodejs","node.exe"]},{appName:"npm",iconKey:"npm",names:["npm","npm-cli.js","npx"]},{appName:"pnpm",iconKey:"pnpm",names:["pnpm","pnpx"]},{appName:"Yarn",iconKey:"yarn",names:["yarn","yarnpkg","yarn.js"]},{appName:"Corepack",iconKey:"corepack",names:["corepack"]},{appName:"Deno",iconKey:"deno",names:["deno"]},{appName:"Vite",iconKey:"vite",names:["vite","vite-node"]},{appName:"Vitest",iconKey:"vitest",names:["vitest"]},{appName:"Next.js",iconKey:"nextjs",names:["next","next-server"]},{appName:"Nuxt",iconKey:"nuxt",names:["nuxt","nuxi"]},{appName:"Astro",iconKey:"astro",names:["astro"]},{appName:"SvelteKit",iconKey:"svelte",names:["svelte-kit","sveltekit"]},{appName:"Remix",iconKey:"remix",names:["remix"]},{appName:"Expo",iconKey:"expo",names:["expo","expo-cli"]},{appName:"React Native",iconKey:"react",names:["react-native"]},{appName:"Metro",iconKey:"metro",names:["metro","metro-inspector-proxy"]},{appName:"Webpack",iconKey:"webpack",names:["webpack","webpack-dev-server","webpack-cli"]},{appName:"Parcel",iconKey:"parcel",names:["parcel"]},{appName:"Rollup",iconKey:"rollup",names:["rollup"]},{appName:"esbuild",iconKey:"esbuild",names:["esbuild"]},{appName:"SWC",iconKey:"swc",names:["swc"]},{appName:"TypeScript",iconKey:"typescript",names:["tsc","tsserver","tsx","ts-node","typescript-language-server"]},{appName:"ESLint",iconKey:"eslint",names:["eslint","eslint_d"]},{appName:"Prettier",iconKey:"prettier",names:["prettier"]},{appName:"Biome",iconKey:"biome",names:["biome"]},{appName:"Storybook",iconKey:"storybook",names:["storybook","start-storybook"]},{appName:"Playwright",iconKey:"playwright",names:["playwright"]},{appName:"Cypress",iconKey:"cypress",names:["cypress"]},{appName:"Jest",iconKey:"jest",names:["jest"]},{appName:"Python",iconKey:"python",names:["python","python2","python3","python3.9","python3.10","python3.11","python3.12","python3.13","pypy","pypy3"]},{appName:"pip",iconKey:"python",names:["pip","pip2","pip3"]},{appName:"pipx",iconKey:"python",names:["pipx"]},{appName:"uv",iconKey:"python",names:["uv","uvx"]},{appName:"Poetry",iconKey:"poetry",names:["poetry"]},{appName:"Pipenv",iconKey:"python",names:["pipenv"]},{appName:"Conda",iconKey:"conda",names:["conda","mamba","micromamba"]},{appName:"Django",iconKey:"django",names:["django-admin","django-admin.py","manage.py"]},{appName:"Flask",iconKey:"flask",names:["flask"]},{appName:"Uvicorn",iconKey:"uvicorn",names:["uvicorn"]},{appName:"Gunicorn",iconKey:"gunicorn",names:["gunicorn"]},{appName:"Hypercorn",iconKey:"python",names:["hypercorn"]},{appName:"Celery",iconKey:"celery",names:["celery"]},{appName:"Jupyter",iconKey:"jupyter",names:["jupyter","jupyter-lab","jupyter-notebook","ipython"]},{appName:"Ruby",iconKey:"ruby",names:["ruby","erb","irb"]},{appName:"Bundler",iconKey:"ruby",names:["bundle","bundler"]},{appName:"Rails",iconKey:"rails",names:["rails","bin/rails"]},{appName:"Rack",iconKey:"ruby",names:["rackup"]},{appName:"Puma",iconKey:"puma",names:["puma"]},{appName:"Sidekiq",iconKey:"sidekiq",names:["sidekiq"]},{appName:"RSpec",iconKey:"ruby",names:["rspec"]},{appName:"Go",iconKey:"go",names:["go","gofmt","gopls","air"]},{appName:"Delve",iconKey:"go",names:["dlv"]},{appName:"Rust",iconKey:"rust",names:["rustc","rustup","cargo","rust-analyzer"]},{appName:"Java",iconKey:"java",names:["java","javac","jar","jshell","jwebserver"]},{appName:"Gradle",iconKey:"gradle",names:["gradle","gradlew"]},{appName:"Maven",iconKey:"maven",names:["mvn","mvnw"]},{appName:"Spring Boot",iconKey:"spring",names:["spring","spring-boot"]},{appName:"Kotlin",iconKey:"kotlin",names:["kotlin","kotlinc","kotlin-language-server"]},{appName:"Scala",iconKey:"scala",names:["scala","scalac","sbt","metals"]},{appName:"Clojure",iconKey:"clojure",names:["clojure","clj","lein","boot"]},{appName:"PHP",iconKey:"php",names:["php","php-fpm","php-cgi","composer"]},{appName:"Laravel",iconKey:"laravel",names:["artisan","laravel"]},{appName:"Symfony",iconKey:"symfony",names:["symfony"]},{appName:"Elixir",iconKey:"elixir",names:["elixir","iex","mix"]},{appName:"Erlang",iconKey:"erlang",names:["erl","beam.smp","beam","epmd","rebar3"]},{appName:"Phoenix",iconKey:"phoenix",names:["phx.server","phoenix"]},{appName:"PostgreSQL",iconKey:"postgresql",names:["postgres","postmaster","pg_ctl","psql","pg_isready"]},{appName:"Redis",iconKey:"redis",names:["redis-server","redis-cli","redis-sentinel"]},{appName:"MySQL",iconKey:"mysql",names:["mysql","mysqld","mysqladmin"]},{appName:"MariaDB",iconKey:"mariadb",names:["mariadb","mariadbd","mariadb-admin"]},{appName:"SQLite",iconKey:"sqlite",names:["sqlite3","sqlite"]},{appName:"MongoDB",iconKey:"mongodb",names:["mongod","mongosh","mongo"]},{appName:"Elasticsearch",iconKey:"elasticsearch",names:["elasticsearch"]},{appName:"OpenSearch",iconKey:"opensearch",names:["opensearch"]},{appName:"Solr",iconKey:"solr",names:["solr"]},{appName:"Kafka",iconKey:"kafka",names:["kafka-server-start","kafka-console-consumer","kafka-console-producer"]},{appName:"ZooKeeper",iconKey:"zookeeper",names:["zookeeper-server-start","zkserver"]},{appName:"RabbitMQ",iconKey:"rabbitmq",names:["rabbitmq-server","rabbitmqctl"]},{appName:"NATS",iconKey:"nats",names:["nats-server","nats"]},{appName:"Docker",iconKey:"docker",names:["docker","dockerd","docker-compose","docker-proxy","com.docker.backend"]},{appName:"Podman",iconKey:"podman",names:["podman","podman-compose"]},{appName:"Kubernetes",iconKey:"kubernetes",names:["kubectl","kube-apiserver","kubelet","minikube","kind"]},{appName:"Helm",iconKey:"helm",names:["helm"]},{appName:"Tilt",iconKey:"tilt",names:["tilt"]},{appName:"nginx",iconKey:"nginx",names:["nginx"]},{appName:"Caddy",iconKey:"caddy",names:["caddy"]},{appName:"Apache HTTP Server",iconKey:"apache",names:["httpd","apache2","apachectl"]},{appName:"HAProxy",iconKey:"haproxy",names:["haproxy"]},{appName:"Traefik",iconKey:"traefik",names:["traefik"]},{appName:"Envoy",iconKey:"envoy",names:["envoy"]},{appName:"Tailscale",iconKey:"tailscale",names:["tailscale","tailscaled"]},{appName:"Cloudflare Tunnel",iconKey:"cloudflare",names:["cloudflared"]},{appName:"ngrok",iconKey:"ngrok",names:["ngrok"]},{appName:"localtunnel",iconKey:"terminal",names:["lt","localtunnel"]},{appName:"SSH",iconKey:"ssh",names:["ssh","sshd","scp","sftp"]},{appName:"Git",iconKey:"git",names:["git","git-lfs","git-upload-pack","git-receive-pack"]},{appName:"GitHub CLI",iconKey:"github",names:["gh"]},{appName:"GitLab CLI",iconKey:"gitlab",names:["glab"]},{appName:"Subversion",iconKey:"subversion",names:["svn"]},{appName:"Mercurial",iconKey:"mercurial",names:["hg"]},{appName:"AWS CLI",iconKey:"aws",names:["aws","aws-vault","sam"]},{appName:"Azure CLI",iconKey:"azure",names:["az"]},{appName:"Google Cloud CLI",iconKey:"google-cloud",names:["gcloud","gsutil","bq"]},{appName:"Terraform",iconKey:"terraform",names:["terraform"]},{appName:"OpenTofu",iconKey:"opentofu",names:["tofu"]},{appName:"Ansible",iconKey:"ansible",names:["ansible","ansible-playbook"]},{appName:"Pulumi",iconKey:"pulumi",names:["pulumi"]},{appName:"Nomad",iconKey:"nomad",names:["nomad"]},{appName:"Vault",iconKey:"vault",names:["vault"]},{appName:"Consul",iconKey:"consul",names:["consul"]},{appName:"Make",iconKey:"make",names:["make","gmake"]},{appName:"CMake",iconKey:"cmake",names:["cmake","ctest","cpack"]},{appName:"Ninja",iconKey:"ninja",names:["ninja"]},{appName:"Bazel",iconKey:"bazel",names:["bazel","bazelisk"]},{appName:"Buck",iconKey:"buck",names:["buck","buck2"]},{appName:"Clang",iconKey:"clang",names:["clang","clang++","clangd"]},{appName:"GCC",iconKey:"gcc",names:["gcc","g++","cc","c++"]},{appName:"LLDB",iconKey:"terminal",names:["lldb"]},{appName:"GDB",iconKey:"terminal",names:["gdb"]},{appName:"Swift",iconKey:"swift",names:["swift","swiftc","sourcekit-lsp"]},{appName:"Xcode",iconKey:"xcode",names:["xcodebuild","xcrun","simctl"]},{appName:"Zig",iconKey:"zig",names:["zig"]},{appName:"Lua",iconKey:"lua",names:["lua","luajit","lua-language-server"]},{appName:"Perl",iconKey:"perl",names:["perl"]},{appName:"R",iconKey:"r",names:["r","rscript","rserver","rsession"]},{appName:"Julia",iconKey:"julia",names:["julia"]},{appName:"Haskell",iconKey:"haskell",names:["ghc","ghci","cabal","stack","haskell-language-server-wrapper"]},{appName:"OCaml",iconKey:"ocaml",names:["ocaml","ocamlc","dune","opam"]},{appName:"F#",iconKey:"fsharp",names:["fsharpi","fsautocomplete"]},{appName:".NET",iconKey:"dotnet",names:["dotnet","csharp-ls","omnisharp"]},{appName:"PowerShell",iconKey:"powershell",names:["pwsh","powershell"]},{appName:"Bash",iconKey:"terminal",names:["bash"]},{appName:"Zsh",iconKey:"terminal",names:["zsh"]},{appName:"fish",iconKey:"terminal",names:["fish"]},{appName:"tmux",iconKey:"terminal",names:["tmux"]},{appName:"GNU Screen",iconKey:"terminal",names:["screen"]},{appName:"direnv",iconKey:"terminal",names:["direnv"]},{appName:"Nix",iconKey:"nix",names:["nix","nix-shell","nix-daemon","nix-build","nix develop"]},{appName:"Homebrew",iconKey:"homebrew",names:["brew"]},{appName:"mise",iconKey:"terminal",names:["mise"]},{appName:"asdf",iconKey:"terminal",names:["asdf"]},{appName:"Volta",iconKey:"volta",names:["volta"]},{appName:"fnm",iconKey:"nodejs",names:["fnm"]},{appName:"nvm",iconKey:"nodejs",names:["nvm"]},{appName:"curl",iconKey:"terminal",names:["curl"]},{appName:"HTTPie",iconKey:"httpie",names:["http","https","httpie"]},{appName:"wget",iconKey:"terminal",names:["wget"]},{appName:"jq",iconKey:"terminal",names:["jq"]},{appName:"ripgrep",iconKey:"terminal",names:["rg","ripgrep"]},{appName:"fd",iconKey:"terminal",names:["fd"]},{appName:"fzf",iconKey:"terminal",names:["fzf"]},{appName:"bat",iconKey:"terminal",names:["bat"]},{appName:"eza",iconKey:"terminal",names:["eza","exa"]},{appName:"htop",iconKey:"terminal",names:["htop","top","btop"]},{appName:"Vim",iconKey:"vim",names:["vim","view","vimdiff"]},{appName:"Neovim",iconKey:"neovim",names:["nvim","nvim-qt"]},{appName:"Emacs",iconKey:"emacs",names:["emacs","emacsclient"]},{appName:"Visual Studio Code",iconKey:"vscode",names:["code","code-insiders","vscode","visual studio code","visual studio code - insiders"]},{appName:"code-server",iconKey:"vscode",names:["code-server"]},{appName:"Cursor",iconKey:"cursor",names:["cursor"]},{appName:"Zed",iconKey:"zed",names:["zed"]},{appName:"Sublime Text",iconKey:"sublime-text",names:["subl","sublime_text","sublime text"]},{appName:"Atom",iconKey:"atom",names:["atom"]},{appName:"IntelliJ IDEA",iconKey:"intellij-idea",names:["idea","idea.sh","intellij idea","idea64.exe"]},{appName:"WebStorm",iconKey:"webstorm",names:["webstorm","webstorm.sh"]},{appName:"PyCharm",iconKey:"pycharm",names:["pycharm","pycharm.sh"]},{appName:"RubyMine",iconKey:"rubymine",names:["rubymine","rubymine.sh"]},{appName:"GoLand",iconKey:"goland",names:["goland","goland.sh"]},{appName:"CLion",iconKey:"clion",names:["clion","clion.sh"]},{appName:"DataGrip",iconKey:"datagrip",names:["datagrip","datagrip.sh"]},{appName:"Rider",iconKey:"rider",names:["rider","rider.sh"]},{appName:"Android Studio",iconKey:"android-studio",names:["studio","studio.sh","android studio"]},{appName:"Xcode",iconKey:"xcode",names:["xcode","xcode.app"]},{appName:"Postman",iconKey:"postman",names:["postman"]},{appName:"Insomnia",iconKey:"insomnia",names:["insomnia"]},{appName:"Hoppscotch",iconKey:"hoppscotch",names:["hoppscotch"]},{appName:"TablePlus",iconKey:"tableplus",names:["tableplus"]},{appName:"DBeaver",iconKey:"dbeaver",names:["dbeaver"]},{appName:"RedisInsight",iconKey:"redis",names:["redisinsight"]},{appName:"Prisma",iconKey:"prisma",names:["prisma"]},{appName:"Drizzle Kit",iconKey:"drizzle",names:["drizzle-kit"]},{appName:"Supabase",iconKey:"supabase",names:["supabase"]},{appName:"Firebase",iconKey:"firebase",names:["firebase"]},{appName:"Vercel",iconKey:"vercel",names:["vercel"]},{appName:"Netlify",iconKey:"netlify",names:["netlify","ntl"]},{appName:"Fly.io",iconKey:"fly",names:["fly","flyctl"]},{appName:"Heroku",iconKey:"heroku",names:["heroku"]},{appName:"Stripe CLI",iconKey:"stripe",names:["stripe"]},{appName:"Twilio CLI",iconKey:"twilio",names:["twilio"]},{appName:"Mailpit",iconKey:"mail",names:["mailpit"]},{appName:"MailHog",iconKey:"mail",names:["mailhog"]},{appName:"OpenSSL",iconKey:"openssl",names:["openssl"]},{appName:"mkcert",iconKey:"certificate",names:["mkcert"]},{appName:"mkdocs",iconKey:"markdown",names:["mkdocs"]},{appName:"Hugo",iconKey:"hugo",names:["hugo"]},{appName:"Jekyll",iconKey:"jekyll",names:["jekyll"]},{appName:"Eleventy",iconKey:"eleventy",names:["eleventy","11ty"]},{appName:"Docusaurus",iconKey:"docusaurus",names:["docusaurus"]},{appName:"Trunk",iconKey:"rust",names:["trunk"]},{appName:"wasm-pack",iconKey:"webassembly",names:["wasm-pack"]},{appName:"wasmtime",iconKey:"webassembly",names:["wasmtime"]},{appName:"Language Server",iconKey:"language-server",names:["lua-language-server","yaml-language-server","vscode-json-language-server","docker-langserver","bash-language-server","marksman","taplo"]}],Vr=new Map;for(let e of Ga)for(let n of e.names)Vr.set(Ha(n),{appName:e.appName,iconKey:e.iconKey});var Xf=Vr.size;function Va(e){let n=e.toLowerCase();switch(!0){case n.endsWith(".app"):return e.slice(0,-4);case n.endsWith(".exe"):return e.slice(0,-4);case n.endsWith(".cmd"):case n.endsWith(".bat"):return e.slice(0,-4);default:return e}}function Ha(e){return Va(e.trim().replaceAll("\\","/").toLowerCase())}var Hr=12e4;function Qa(){let e=process.env.LINZUMI_CODEX_START_REQUEST_TIMEOUT_MS?.trim();if(e===void 0||e==="")return Hr;let n=Number.parseInt(e,10);return Number.isFinite(n)&&n>0?n:Hr}var Xn=class extends Error{constructor(n,t){super(`Codex ${n} did not reply within ${t}ms (start request timed out)`),this.name="CodexStartRequestTimeoutError"}};function Za(e,n,t=Qa()){return Ya(e,n,t,(r,o)=>new Xn(r,o))}function Ya(e,n,t,r){return t>0?new Promise((o,i)=>{let s=setTimeout(()=>{i(r(e,t))},t);s.unref?.(),n.then(a=>{clearTimeout(s),o(a)},a=>{clearTimeout(s),i(a)})}):n}function Ne(e,n,t){return Za(n,e.request(n,t))}var Xa=e=>/\bsession\b.+\bis archived\b/i.test(e),ed=e=>/^thread not found(?:\s*:|\b)/i.test(e.trim()),nd=e=>/\bno rollout found\b/i.test(e)||/\bsession not found\b[\s\S]*\brollout\b/i.test(e);async function Qr(e,n,t,r,o,i){i("kandan.reconnect_thread_unarchive_started",{codex_thread_id:n,discovered_by:r,message:o});try{let s=await Ne(e,"thread/unarchive",{threadId:n});if("error"in s)throw new Error(`thread/unarchive failed: ${s.error.message}`);let a=await Ne(e,"thread/resume",t);if("error"in a)throw new Error(`thread/resume after unarchive failed: ${a.error.message}`);return i("kandan.reconnect_thread_unarchive_resumed",{codex_thread_id:n,discovered_by:r}),{mode:"resumed"}}catch(s){let a=s instanceof Error?s.message:String(s);throw i("kandan.reconnect_thread_unarchive_failed",{codex_thread_id:n,discovered_by:r,archive_error:o,message:a}),new Error(r==="forced_inject_not_found"?`thread/inject_items failed: ${o}; archive recovery failed: ${a}`:a)}}async function Zr(e){let{codex:n,codexThreadId:t,rehydration:r}=e,o={threadId:t,...e.resumeOverrides},i;if(r.forceRehydrate===!0)i="the server marked the durable engine session dead after an acknowledged-but-unexecuted turn";else{let a=await Ne(n,"thread/resume",o);if(!("error"in a))return{mode:"resumed"};if(Xa(a.error.message))return await Qr(n,t,o,"resume_archived",a.error.message,r.log);if(e.rebuildWhen==="missing-rollout-only"&&!nd(a.error.message))throw r.log("linzumi.agent_thread_resume_failed_unrecoverable",{codex_thread_id:t,message:a.error.message,rehydrating:!1}),new Error(a.error.message);i=a.error.message}r.log(r.forceRehydrate===!0?"kandan.reconnect_thread_rehydrate_forced":"kandan.reconnect_thread_resume_failed",{codex_thread_id:t,message:i,forced:r.forceRehydrate===!0,rehydrating:!0});let s;try{let a;try{a=await r.buildRehydrationItems?.(i)}catch(l){r.log("kandan.reconnect_thread_rehydration_items_failed",{codex_thread_id:t,message:l instanceof Error?l.message:String(l)}),a=void 0}let d=a!==void 0&&a.length>0?[...a]:[{type:"agentMessage",text:await r.buildRehydrationText(i)}],u=await Ne(n,"thread/inject_items",{threadId:t,items:d});if("error"in u){if(r.forceRehydrate===!0&&ed(u.error.message))return await Qr(n,t,o,"forced_inject_not_found",u.error.message,r.log);s=`thread/inject_items failed: ${u.error.message}`}else{let l=await Ne(n,"thread/resume",o);"error"in l&&(s=`rehydrated thread/resume failed: ${l.error.message}`)}}catch(a){s=a instanceof Error?a.message:String(a)}if(s!==void 0)throw r.log("kandan.reconnect_thread_rehydration_failed",{codex_thread_id:t,resume_failure:i,rehydration_failure:s}),new Error(`could not resume this thread's engine session (${i}) and rebuilding a fresh session from the thread transcript also failed (${s})`);return r.log("kandan.reconnect_thread_rehydrated",{codex_thread_id:t,resume_failure:i}),{mode:"rehydrated",resumeFailure:i}}var et={mcpAuthFileContents:"LINZUMI_CLOUD_MCP_AUTH_JSON",llmProxyToken:"LINZUMI_CLOUD_LLM_PROXY_TOKEN"};function Yr(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 ae="/home/agent",td=`${ae}/.linzumi-provisioned`;var nt="/dev/shm/linzumi",ry=`${nt}/codex`,oy=`${nt}/mcp-auth.json`;var iy=`${nt}/codex.env`;var cy=`${ae}/cloud-supervisor.mjs`,Xr=`${ae}/mcp-server.mjs`,tt=`${ae}/.secrets`,rt=`${tt}/mcp-auth.json`,cn=`${ae}/.codex`,eo=`${cn}/linzumi-thread-map.json`;var ot=`${ae}/.turn-heartbeats`,no=5e3,rd=/^[A-Za-z0-9-]{8,64}$/;function it(e){if(!rd.test(e))throw new Error(`invalid cloud turn nonce: ${JSON.stringify(e.slice(0,80))}`)}var ld=3e4,pd=200,fd=18e4,ro="LINZUMI_GUEST_MODEL_CALL_LIVENESS_MS",md=15*6e4,oo="LINZUMI_GUEST_ACTIVE_LOOP_BUDGET_MS",pn=2147483647;function hd(e){let n=e[oo];if(n===void 0)return md;let t=Number(n);if(n.trim()===""||!Number.isSafeInteger(t)||t<=0||t>pn)throw new Error(`${oo} must be an integer number of milliseconds between 1 and ${pn}, got ${JSON.stringify(n)}`);return t}var at=class extends Error{code="active_loop_budget_exceeded";budgetMs;constructor(n){super(`active_loop_budget_exceeded: guest turn exceeded the ${n}ms wall-clock budget; killed the guest turn`),this.name="GuestActiveLoopBudgetExceeded",this.budgetMs=n}};function gd(e){let n=e[ro];if(n===void 0)return fd;let t=Number(n);if(n.trim()===""||!Number.isSafeInteger(t)||t<=0)throw new Error(`${ro} must be a positive integer number of milliseconds, got ${JSON.stringify(n)}`);return t}var dt=class extends Error{code="guest_turn_liveness_failure";windowMs;constructor(n){super(`guest_turn_liveness_failure: zero upstream model calls for ${n}ms; killed the guest turn`),this.name="GuestTurnLivenessFailure",this.windowMs=n}};function yd(e,n,t){if(e.method!=="thread/tokenUsage/updated")return;let r=y(e.params)??{};if(p(r.threadId)!==n||p(r.turnId)!==t)return;let o=I(y(y(r.tokenUsage)?.total)?.totalTokens),i=I(y(y(r.tokenUsage)?.last)?.totalTokens);if(!(o===void 0||o<0))return{totalTokens:o,priorCallTotalTokens:i!==void 0&&i>=0&&i<=o?o-i:void 0}}function de(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 st=64*1024;function _d(e,n){let t=n.now??Date.now,r=Buffer.alloc(0),o=null,i=null,s=a=>{let d=Buffer.isBuffer(a)?a:Buffer.from(a,"utf8");r=Buffer.concat([r,d]);let u=st*2;r.byteLength>u&&(r=r.subarray(r.byteLength-u))};return e.stdout?.on("data",s),e.stderr?.on("data",s),e.once("exit",(a,d)=>{o=a,i=d??null}),{evidence:a=>{let d=Buffer.from(de(r.toString("utf8")),"utf8"),u=d.byteLength<=st?d:d.subarray(d.byteLength-st);return{marker:"guest_turn_failure_evidence",empty_output:r.byteLength===0,output_tail:u.toString("utf8"),exit_code:o,signal:i,duration_ms:Math.max(0,t()-n.startedAtMs),model_call_count:a}}}}var fn;function Sd(e){fn=e;try{be(ao(e),{recursive:!0}),$e(e,"")}catch{fn=void 0}}function L(e){let n=`${JSON.stringify(e)}
|
|
32
|
+
`;if(process.stdout.write(n),fn!==void 0)try{sd(fn,n)}catch{}}function ln(e,n,t,r){L({phase:"exit",ok:e,reason:de(n),turnMs:t,...r===void 0?{}:{evidence:r}})}function bd(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 vd(e){if(e.sandbox!=="read-only")throw new Error(`guest cloud turn requires sandbox "read-only", got ${JSON.stringify(e.sandbox)}`);if(e.approvalPolicy!=="never")throw new Error(`guest cloud turn requires approvalPolicy "never", got ${JSON.stringify(e.approvalPolicy)}`)}function xd(e,n=cn){let t=Mr({command:"node",argsPrefix:[Xr],kandanUrl:e.kandanUrl,authFilePath:rt,ownerUsername:e.ownerUsername,operatingMode:"text",cwd:e.cwd,threadId:e.threadId,agentSession:!0});return jr(`ws://127.0.0.1:${e.appServerPort}`,{model:e.model,reasoningEffort:e.reasoningEffort,mcpServers:[t],neverEquivalentGranularApprovalPolicy:!0,...e.modelProvider===void 0?{}:{modelProvider:bd(e.modelProvider)},env:{CODEX_HOME:n,...uo(e)}})}function uo(e){let n=process.env[et.llmProxyToken];return e.modelProvider===void 0||n===void 0||n===""?{}:{[e.modelProvider.envKey]:n}}function wd(e,n){let t=process.env[et.mcpAuthFileContents];if(t===void 0||t==="")throw new Error("guest cloud turn missing MCP auth-cache (LINZUMI_CLOUD_MCP_AUTH_JSON)");be(e,{recursive:!0,mode:448}),to(e,448),$e(n,t,{mode:384}),to(n,384)}function kd(e){try{so(e,{recursive:!0,force:!0})}catch{}}var Td=64,Cd=20,io="My engine session for this thread was lost, so I rebuilt it from this thread's saved history at reduced fidelity. Tell me if I lost something important.";async function Rd(e){if(e.config.threadId===void 0||e.config.threadId==="")throw new Error("guest thread rehydration requires the durable Linzumi thread id");let n=Le(e.config.kandanUrl,e.mcpAuthPath);if(n===void 0)throw new Error("guest thread rehydration requires an agent token in the MCP auth file");let t=je({kandanUrl:e.config.kandanUrl,accessToken:n.accessToken,operatingMode:"text"}),r=[],o,i,s;for(let d=0;d<Cd;d+=1){let u=await t.getThreadTranscript({thread_id:e.config.threadId,...s===void 0?{}:{cursor:s}}),l=Zn(u);if(l===void 0)throw new Error(`guest thread rehydration received a malformed durable transcript page ${d}`);if(r=[...l.nodes,...r],o=o??l.budget,i=i??l.threadTitle,!l.hasMore||l.cursor===void 0)break;s=l.cursor}if(r.length===0)throw new Error("guest thread rehydration durable transcript was empty");let a=Yn({nodes:r,budget:o,resumeFailure:e.resumeFailure,threadTitle:i,linzumiContext:void 0});if(a.items.length===0)throw new Error("guest thread rehydration compiled zero injection items");return a.items}async function Id(e){if(e.config.threadId===void 0||e.config.threadId==="")throw new Error("guest session rebuild notice requires a Linzumi thread id");let n=Le(e.config.kandanUrl,e.mcpAuthPath);if(n===void 0)throw new Error("guest session rebuild notice requires an agent token in the MCP auth file");await je({kandanUrl:e.config.kandanUrl,accessToken:n.accessToken,operatingMode:"voice"}).sendThreadReply({thread_id:e.config.threadId,body:io,client_message_id:e.notice.noticeId,payload:{structured:{kind:"agent_status_event",item_id:e.notice.noticeId,transcript_unit_id:`agent_status_event:${e.notice.noticeId}`,stream_state:"completed",event_kind:"status",title:"Rebuilt the agent session",body:io,severity:"info",agent_provider:"codex",raw_provider_metadata:{provider_session_key:e.notice.threadId,resume_failure:e.notice.resumeFailure}}}})}function co(e){try{let n=JSON.parse(ad(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 Pd(e,n,t){try{let r=co(e);delete r[n];let o=Object.entries(r),i=o.slice(Math.max(0,o.length-(Td-1)));i.push([n,t]),be(ao(e),{recursive:!0}),$e(e,JSON.stringify(Object.fromEntries(i)))}catch{}}var Ed=new Set(["turn/completed","turn/failed","turn/aborted"]),Md=2e3;function lo(e){let n=y(y(e)?.item);if(n===void 0||p(n.type)!=="agentMessage")return"";let t=p(n.text);return t!==void 0&&t!==""?t:(j(n.content)??[]).map(i=>{let s=y(i);if(s===void 0)return;let a=p(s.type);if(!(a!=="text"&&a!=="output_text"&&a!=="input_text"))return p(s.text)??p(s.content)}).filter(i=>i!==void 0&&i!=="").join(`
|
|
33
|
+
|
|
34
|
+
`)}function Ad(e){let n=y(y(e)?.item);if(n===void 0)return!1;let t=p(n.type);if(t!=="mcpToolCall"&&t!=="dynamicToolCall"&&t!=="collabAgentToolCall"||p(n.status)!=="completed"||n.error!==void 0&&n.error!==null||n.success===!1)return!1;let r=p(n.tool)??"",o=r.split("__").pop()??r;return o==="linzumi_agent_reply"||o==="linzumi_decline_document_action"}var qd=15e3;function Od(e){return/already_replied|no_active_asker_binding/i.test(e)}async function Fd(e){let n=e.body.trim();if(n==="")return"skipped";let t=Le(e.kandanUrl,e.mcpAuthPath);if(t===void 0)throw new Error("reply relay: no agent token in the guest MCP auth file");let r=async(i,s)=>{let a=new AbortController,d=setTimeout(()=>a.abort(),qd);try{return await fetch(i,{...s,signal:a.signal})}finally{clearTimeout(d)}},o=je({kandanUrl:e.kandanUrl,accessToken:t.accessToken,operatingMode:"text",fetchImpl:r});try{return await o.agentReply({body:n}),"posted"}catch(i){let s=i instanceof Error?i.message:String(i);if(Od(s))return"already";throw new Error(`reply relay failed: ${s}`)}}var jd=900,Ld=1e4,Dd=3,Nd=8e3;function $d(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 Jd(e){return async n=>{let t=Le(e.kandanUrl,e.mcpAuthPath);if(t===void 0)throw new Error("turn progress: no agent token in the guest MCP auth file");let r=async(i,s)=>{let a=new AbortController,d=setTimeout(()=>a.abort(),Ld);try{return await fetch(i,{...s,signal:a.signal})}finally{clearTimeout(d)}};return je({kandanUrl:e.kandanUrl,accessToken:t.accessToken,operatingMode:"text",fetchImpl:r}).agentTurnProgress(n)}}function Ud(e){let n=Date.now,t=e.flushIntervalMs??jd,r=e.log??L,o=e.post??Jd({kandanUrl:e.kandanUrl,mcpAuthPath:e.mcpAuthPath}),i=new Map,s=!1,a=0,d=0,u,l,f=!1,_=!1,m=(b,h)=>{let v=i.get(b);if(v!==void 0)return v;let T={kind:h,phase:"commentary",text:"",snapshotIndex:0,state:"streaming",dirty:!1,lastFlushMs:0,ackedState:void 0};return i.set(b,T),T},g=b=>b.state==="streaming"?b.lastFlushMs+t:0,c=async(b,h)=>{let v=h.text,T=h.state;h.dirty=!1,h.snapshotIndex+=1,h.lastFlushMs=n();try{return await o({stream_key:`${e.streamKeyPrefix}:${b}`,item_id:b,kind:h.kind,...h.kind==="codex_assistant_message"?{phase:h.phase}:{},body:v,stream_state:T,snapshot_index:h.snapshotIndex,...e.sourceSeq===void 0?{}:{source_seq:e.sourceSeq}}),d+=1,a=0,h.ackedState=T,!0}catch(w){a+=1;let C=w instanceof Error?w.message:String(w);return $d(C)?(_=!0,s=!0,r({phase:"progress",outcome:"permanent_reject",message:de(C)}),!1):(r({phase:"progress",outcome:"post_failed",consecutive_failures:a,message:de(C)}),a>=Dd&&(s=!0,r({phase:"progress",outcome:"disabled"})),!1)}},x=async()=>{for(;;){if(s)return;let b=n(),h,v=!1;for(let[T,w]of i){if(!w.dirty||w.text===""||w.state!=="streaming"&&!f)continue;let C=g(w);C<=b?(await c(T,w),v=!0):h=h===void 0?C:Math.min(h,C)}if(!v){h!==void 0&&(clearTimeout(l),l=setTimeout(E,Math.max(10,h-n())),l.unref?.());return}}};function E(){s||f||u!==void 0||(u=x().catch(()=>{}).finally(()=>{u=void 0}))}return{onNotification:b=>{try{let h=y(b.params)??{};if(b.method==="item/agentMessage/delta"){let v=Bn(h);if(v!==void 0){let T=m(v.itemKey,"codex_assistant_message");T.phase=v.phase,T.text+=v.delta,T.dirty=!0,E()}return}if(b.method==="item/reasoning/textDelta"){let v=Wn(h);if(v!==void 0){let T=m(v.itemKey,"codex_reasoning");T.text+=v.delta,T.dirty=!0,E()}return}if(b.method==="item/completed"){let v=y(h.item),T=p(v?.type),w=p(v?.id);if(w===void 0)return;if(T==="agentMessage"){let C=lo(b.params),P=m(w,"codex_assistant_message");P.phase=zn(v?.phase),C!==""&&(P.text=C),P.state="completed",P.dirty=!0,E()}else if(T==="reasoning"){let C=i.get(w);C!==void 0&&(C.state="completed",C.dirty=!0,E())}}}catch(h){r({phase:"progress",outcome:"notification_error",message:de(h instanceof Error?h.message:String(h))})}},finish:async b=>{try{let h=n()+(e.finishDeadlineMs??Nd),v=()=>new Promise(w=>setTimeout(w,Math.max(0,h-n())).unref?.());f=!0,clearTimeout(l),u!==void 0&&await Promise.race([u,v()]);for(let w of i.values())w.state==="streaming"&&w.text!==""&&(w.state=b);let T=250;for(;;){let w=[...i.entries()].filter(([,P])=>P.text!==""&&P.state!==P.ackedState);if(w.length===0||_||n()>=h)break;let C=!1;for(let[P,Je]of w){if(_||n()>=h)break;await c(P,Je)||(C=!0)}C&&!_&&n()<h&&await new Promise(P=>setTimeout(P,T))}r({phase:"progress",outcome:"finished",frames_posted:d,disabled:s})}catch(h){r({phase:"progress",outcome:"finish_error",message:de(h instanceof Error?h.message:String(h))})}}}}function Kd(e){if(e==="item/commandExecution/requestApproval"||e==="item/fileChange/requestApproval")return{decision:"decline"}}async function zd(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 Nr(e)}catch(r){if(Date.now()>=n)throw r;await new Promise(o=>setTimeout(o,pd))}}}var Bd=360*60*1e3;function Wd(e,n){try{for(let t of dd(e))try{let r=mn(e,t);n-ud(r).mtimeMs>Bd&&cd(r)}catch{}}catch{}}function Gd(e,n,t=no){it(n);let r=mn(e,`${n}.beat`),o=()=>{try{$e(r,`${Date.now()}
|
|
35
|
+
`)}catch{}};try{be(e,{recursive:!0})}catch{}Wd(e,Date.now()),o();let i=setInterval(o,t);return i.unref?.(),()=>{clearInterval(i);try{so(r,{force:!0})}catch{}}}function Vd(e,n,t){try{it(n),be(e,{recursive:!0}),$e(mn(e,`${n}.exit`),`${JSON.stringify({phase:"exit",ok:t.ok,reason:de(t.reason),turnMs:t.turnMs,...t.evidence===void 0?{}:{evidence:t.evidence}})}
|
|
36
|
+
`)}catch{}}var po="guestTurnFailureEvidence";function Hd(e){if(!(typeof e!="object"||e===null))return e[po]}async function Qd(e,n={}){let t=n.now??Date.now,r=n.secretsDir??tt,o=n.mcpAuthPath??rt,i=n.codexHome??cn,s=n.threadMapPath??eo,a=n.modelCallLivenessWindowMs??gd(process.env),d=n.activeLoopBudgetMs??hd(process.env),u=n.activeLoopEvidenceLimit??20;if(!Number.isSafeInteger(a)||a<=0)throw new Error(`guest model-call liveness window must be a positive integer number of milliseconds, got ${JSON.stringify(a)}`);if(!Number.isSafeInteger(d)||d<=0||d>pn)throw new Error(`guest active-loop budget must be an integer number of milliseconds between 1 and ${pn}, got ${JSON.stringify(d)}`);if(!Number.isSafeInteger(u)||u<=0)throw new Error(`guest active-loop evidence limit must be a positive integer, got ${JSON.stringify(u)}`);let l=t();vd(e);let f=e.turnNonce!==void 0&&e.turnNonce!==""?Gd(n.heartbeatDir??ot,e.turnNonce,n.heartbeatIntervalMs):void 0,_,m,g=0,c,x=()=>{if(c!==void 0)return c;if(m!==void 0)return c=m.evidence(g),L({phase:"guest_turn_failure_evidence",...c}),c},E=()=>{try{_?.pid!==void 0&&_.kill("SIGINT")}catch{}};try{wd(r,o);let F=xd(e,i),$=`ws://127.0.0.1:${e.appServerPort}`;n.spawnCodex===void 0&&be(i,{recursive:!0,mode:448}),_=n.spawnCodex?n.spawnCodex(F):od("codex",F,{cwd:e.cwd,env:{PATH:process.env.PATH??"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",...process.env.HOME===void 0?{}:{HOME:process.env.HOME},CODEX_HOME:i,...uo(e)},stdio:["ignore","pipe","pipe"],detached:!1}),m=_d(_,{startedAtMs:l,now:t});let b=await zd($,l+ld,_);try{b.onRequest?.(S=>Kd(S.method));let h=e.codexThreadId,v;if(h!==void 0&&h!==""){let S=co(s)[h];if(S!==void 0){let O=rn({cwd:e.cwd,channelSession:{model:e.model,reasoningEffort:e.reasoningEffort,approvalPolicy:e.approvalPolicy,sandbox:e.sandbox,linzumiAgentSession:!0}}),A=await Zr({codex:b,codexThreadId:S,resumeOverrides:O,rebuildWhen:"missing-rollout-only",rehydration:{log:(z,pe)=>L({phase:z,...pe}),buildRehydrationItems:async z=>{let pe=n.buildRehydrationItems===void 0?await Rd({config:e,mcpAuthPath:o,resumeFailure:z}):await n.buildRehydrationItems();if(pe.length===0)throw new Error("guest thread rehydration requires non-empty durable transcript items");return pe},buildRehydrationText:async()=>{throw new Error("guest thread rehydration may not fall back to a non-transcript seed")}}});if(v=S,A.mode==="rehydrated"){let z={noticeId:`guest-codex-rebuilt-${id()}`,threadId:S,resumeFailure:A.resumeFailure};await(n.onSessionRebuilt===void 0?Id({config:e,mcpAuthPath:o,notice:z}):n.onSessionRebuilt(z))}if(A.mode==="resumed"?L({phase:"thread",mode:"resumed"}):L({phase:"thread",mode:"rehydrated",threadId:S}),v!==S)throw new Error("guest continuity invariant lost mapped thread id")}}if(v===void 0){let S=await b.request("thread/start",{cwd:e.cwd,serviceName:"kandan-cloud-agent",personality:"pragmatic",...rn({cwd:e.cwd,channelSession:{model:e.model,reasoningEffort:e.reasoningEffort,approvalPolicy:e.approvalPolicy,sandbox:e.sandbox,linzumiAgentSession:!0}})});if("error"in S)throw new Error(`thread/start failed: ${S.error.message}`);let O=p(y(y(S.result)?.thread)?.id);if(O===void 0)throw new Error("thread/start response did not include thread.id");v=O,h!==void 0&&h!==""&&Pd(s,h,v),L({phase:"thread",mode:"started"})}let T="",w=!1,C=!1,P,Je=-1,hn=new Set,ue,ce,Ue=[],gn=Ud({kandanUrl:e.kandanUrl,mcpAuthPath:o,streamKeyPrefix:e.turnNonce!==void 0&&e.turnNonce!==""?`cloud:${e.turnNonce}`:`cloud:${l}`,...e.sourceSeq===void 0?{}:{sourceSeq:e.sourceSeq},post:n.progressPost,flushIntervalMs:n.progressFlushIntervalMs,now:t}),ve,ho=new Promise((S,O)=>{ve={resolve:S,reject:O}}),Ke=()=>{ue!==void 0&&(clearTimeout(ue),ue=void 0)},yn=()=>{ce!==void 0&&(clearTimeout(ce),ce=void 0)},ut=()=>{Ke(),ue=setTimeout(()=>{ue=void 0,C||ve?.reject(new dt(a))},a),ue.unref?.()},ct=S=>{if(C){L({phase:"codex-exit",benign:!0});return}setTimeout(()=>{C||ve?.reject(S())},n.postTerminalGraceMs??Md).unref?.()};b.onNotification(S=>{if(L({phase:"notification",method:S.method}),gn.onNotification(S),P!==void 0){let A=yd(S,v,P);A!==void 0&&A.totalTokens>Je&&(Je=A.totalTokens,A.priorCallTotalTokens!==void 0&&!hn.has(A.priorCallTotalTokens)&&(hn.add(A.priorCallTotalTokens),g+=1),ut())}if(S.method==="item/completed"){let A=lo(S.params);A!==""&&(T=A),Ad(S.params)&&(w=!0);let z=y(S.params),pe=P!==void 0&&p(z?.threadId)===v&&p(z?.turnId)===P,go=y(z?.item),Sn=p(go?.type),we;switch(pe?Sn:void 0){case"agentMessage":A!==""&&(we={kind:"narration"});break;case"mcpToolCall":case"dynamicToolCall":case"collabAgentToolCall":{we={kind:"tool_call",tool_type:Sn};break}case"commandExecution":{we={kind:"tool_call",tool_type:Sn};break}}we!==void 0&&(Ue.push(we),Ue.length>u&&Ue.shift())}if(!Ed.has(S.method))return;C=!0,Ke(),yn();let O=S.method==="turn/completed";ve?.resolve({ok:O,reason:S.method==="turn/completed"?"turn completed":`turn terminal: ${S.method}`,turnMs:t()-l})}),b.onClose?.(S=>ct(()=>new Error(`codex connection closed before a turn terminal: ${S?.message??"connection closed"}`))),_?.once("exit",S=>ct(()=>new Error(`codex app-server process exited mid-turn (code ${S})`)));let _n=await b.request("turn/start",{threadId:v,input:e.input,...Kn({cwd:e.cwd,channelSession:{model:e.model,reasoningEffort:e.reasoningEffort,approvalPolicy:e.approvalPolicy,sandbox:e.sandbox,linzumiAgentSession:!0}})});if("error"in _n)throw new Error(`turn/start failed: ${_n.error.message}`);if(P=p(y(y(_n.result)?.turn)?.id),P===void 0)throw new Error("turn/start response did not include turn.id");ut(),ce=setTimeout(()=>{ce=void 0,C||(L({phase:"active-loop-budget-exceeded",code:"active_loop_budget_exceeded",budget_ms:d,evidence_limit:u,evidence:Ue}),E(),ve?.reject(new at(d)))},d),ce.unref?.();let xe;try{xe=await ho}catch(S){throw Ke(),yn(),await gn.finish("failed"),S}let le=xe;if(xe.ok){let S=n.relayReply??Fd;try{let O=await S({kandanUrl:e.kandanUrl,mcpAuthPath:o,body:T});L({phase:"reply",relay:O,reply_tool_call_seen:w,captured_chars:T.length}),O==="skipped"&&!w&&(le={ok:!1,reason:"turn completed but no reply was posted: codex produced no visible output to relay and never called linzumi_agent_reply",turnMs:xe.turnMs})}catch(O){let A=O instanceof Error?O.message:String(O);L({phase:"reply",relay:"failed",reason:A}),le={ok:!1,reason:A,turnMs:xe.turnMs}}}if(await gn.finish(le.ok?"completed":"failed"),Ke(),yn(),!le.ok){let S=x();return{...le,...S===void 0?{}:{evidence:S}}}return le}finally{b.close()}}catch(F){let $=F instanceof Error?F:new Error(String(F)),b=x();throw b!==void 0&&Object.defineProperty($,po,{value:b,enumerable:!1}),$}finally{f?.(),E(),kd(r)}}async function fo(e=process.argv,n={}){let t=e[2];if(t==="--selftest")return L({phase:"selftest",ok:!0,node:process.version}),0;if(t===void 0||t==="")return ln(!1,"missing turn config argv[2]",0),1;let r;try{r=Yr(t)}catch(a){return ln(!1,`config decode failed: ${a instanceof Error?a.message:String(a)}`,0),1}let o=n.heartbeatDir??ot;Sd(mn(o,"last-turn.debug.jsonl")),L({phase:"boot",turn_nonce:r.turnNonce??null,node:process.version});let i=n.runTurn??Qd,s=a=>{r.turnNonce!==void 0&&r.turnNonce!==""&&Vd(o,r.turnNonce,a)};try{let a=await i(r);return s(a),ln(a.ok,a.reason,a.turnMs,a.evidence),a.ok?0:1}catch(a){let d=a instanceof Error?a.message:String(a),u=Hd(a);return s({ok:!1,reason:d,turnMs:0,evidence:u}),ln(!1,d,0,u),1}}function mo(e){let n=!1,t=()=>{n||(n=!0,process.exit(e))};try{process.stdout.write("",t)}catch{t()}setTimeout(t,1e3).unref?.()}fo(process.argv).then(e=>{mo(e)}).catch(e=>{process.stdout.write(`${JSON.stringify({phase:"exit",ok:!1,reason:e instanceof Error?e.message:String(e),turnMs:0})}
|
|
37
|
+
`),mo(1)});
|