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