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